summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AconfigFlags.bp8
-rw-r--r--apct-tests/perftests/autofill/src/android/view/autofill/AutofillTestWatcher.java4
-rw-r--r--apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java14
-rw-r--r--boot/boot-image-profile-extra.txt21
-rw-r--r--boot/boot-image-profile.txt1613
-rw-r--r--boot/preloaded-classes437
-rw-r--r--cmds/screencap/Android.bp65
-rw-r--r--cmds/screencap/TEST_MAPPING12
-rw-r--r--cmds/screencap/screencap.cpp136
-rw-r--r--cmds/screencap/screencap_utils.cpp43
-rw-r--r--cmds/screencap/screencap_utils.h28
-rw-r--r--cmds/screencap/tests/screencap_test.cpp68
-rw-r--r--config/preloaded-classes498
-rw-r--r--core/api/current.txt6
-rw-r--r--core/api/system-current.txt5
-rw-r--r--core/api/test-current.txt21
-rw-r--r--core/java/android/app/Activity.java46
-rw-r--r--core/java/android/app/AppOpsManager.java2
-rw-r--r--core/java/android/app/AutomaticZenRule.java2
-rw-r--r--core/java/android/app/INotificationManager.aidl2
-rw-r--r--core/java/android/app/IUiModeManager.aidl54
-rw-r--r--core/java/android/app/IUiModeManagerCallback.aidl1
-rw-r--r--core/java/android/app/KeyguardManager.java9
-rw-r--r--core/java/android/app/Notification.java38
-rw-r--r--core/java/android/app/NotificationChannel.java67
-rw-r--r--core/java/android/app/NotificationManager.java121
-rw-r--r--core/java/android/app/PropertyInvalidatedCache.java11
-rw-r--r--core/java/android/app/UiAutomation.java44
-rw-r--r--core/java/android/app/UiModeManager.java137
-rw-r--r--core/java/android/app/WallpaperManager.java10
-rw-r--r--core/java/android/app/appfunctions/AppFunctionManager.java36
-rw-r--r--core/java/android/app/appfunctions/AppFunctionManagerHelper.java5
-rw-r--r--core/java/android/app/appfunctions/AppFunctionRuntimeMetadata.java8
-rw-r--r--core/java/android/app/appfunctions/IAppFunctionManager.aidl2
-rw-r--r--core/java/android/app/contextualsearch/flags.aconfig7
-rw-r--r--core/java/android/app/notification.aconfig10
-rw-r--r--core/java/android/app/supervision/SupervisionManager.java36
-rw-r--r--core/java/android/companion/AssociationRequest.java73
-rw-r--r--core/java/android/content/Intent.java2
-rw-r--r--core/java/android/content/pm/LauncherActivityInfo.java8
-rw-r--r--core/java/android/content/pm/LauncherActivityInfoInternal.java13
-rw-r--r--core/java/android/content/pm/LauncherApps.java16
-rw-r--r--core/java/android/content/pm/PackageManager.java22
-rw-r--r--core/java/android/content/pm/multiuser.aconfig7
-rw-r--r--core/java/android/content/pm/parsing/ApkLite.java23
-rw-r--r--core/java/android/content/pm/parsing/ApkLiteParseUtils.java8
-rw-r--r--core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java30
-rw-r--r--core/java/android/content/pm/parsing/PackageLite.java18
-rw-r--r--core/java/android/content/res/flags.aconfig8
-rw-r--r--core/java/android/hardware/biometrics/BiometricConstants.java20
-rw-r--r--core/java/android/hardware/camera2/impl/CameraDeviceImpl.java8
-rw-r--r--core/java/android/hardware/display/DisplayManager.java56
-rw-r--r--core/java/android/hardware/display/DisplayManagerGlobal.java18
-rw-r--r--core/java/android/hardware/display/DisplayTopology.java39
-rw-r--r--core/java/android/hardware/display/VirtualDisplayConfig.java4
-rw-r--r--core/java/android/hardware/input/input_framework.aconfig8
-rw-r--r--core/java/android/inputmethodservice/InputMethodService.java14
-rw-r--r--core/java/android/os/BaseBundle.java17
-rw-r--r--core/java/android/os/Binder.java16
-rw-r--r--core/java/android/os/Bundle.java6
-rw-r--r--core/java/android/os/ChildZygoteProcess.java3
-rw-r--r--core/java/android/os/CombinedMessageQueue/MessageQueue.java62
-rw-r--r--core/java/android/os/ITradeInMode.aidl33
-rw-r--r--core/java/android/os/IUserManager.aidl2
-rw-r--r--core/java/android/os/Looper.java8
-rw-r--r--core/java/android/os/Message.java16
-rw-r--r--core/java/android/os/PerfettoTrace.java41
-rw-r--r--core/java/android/os/PerfettoTrackEventExtra.java165
-rw-r--r--core/java/android/os/PowerManager.java11
-rw-r--r--core/java/android/os/SharedMemory.java18
-rw-r--r--core/java/android/os/TestLooperManager.java31
-rw-r--r--core/java/android/os/Trace.java1
-rw-r--r--core/java/android/os/UserManager.java114
-rw-r--r--core/java/android/provider/Settings.java5
-rw-r--r--core/java/android/security/responsible_apis_flags.aconfig7
-rw-r--r--core/java/android/service/chooser/flags.aconfig10
-rw-r--r--core/java/android/service/dreams/DreamManagerInternal.java6
-rw-r--r--core/java/android/view/DisplayInfo.java4
-rw-r--r--core/java/android/view/NotificationHeaderView.java19
-rw-r--r--core/java/android/view/SurfaceControl.java35
-rw-r--r--core/java/android/view/ViewRootImpl.java116
-rw-r--r--core/java/android/view/flags/refresh_rate_flags.aconfig7
-rw-r--r--core/java/android/view/inputmethod/ImeTracker.java1
-rw-r--r--core/java/android/widget/Button.java2
-rw-r--r--core/java/android/widget/CheckedTextView.java13
-rw-r--r--core/java/android/widget/RemoteViews.java10
-rw-r--r--core/java/android/window/DesktopExperienceFlags.java12
-rw-r--r--core/java/android/window/DesktopModeFlags.java103
-rw-r--r--core/java/android/window/TaskFragmentOrganizer.java4
-rw-r--r--core/java/android/window/WindowContainerTransaction.java58
-rw-r--r--core/java/android/window/flags/lse_desktop_experience.aconfig68
-rw-r--r--core/java/android/window/flags/window_surfaces.aconfig12
-rw-r--r--core/java/android/window/flags/windowing_frontend.aconfig11
-rw-r--r--core/java/android/window/flags/windowing_sdk.aconfig19
-rw-r--r--core/java/com/android/internal/app/AlertController.java2
-rw-r--r--core/java/com/android/internal/app/ChooserGridLayoutManager.java128
-rw-r--r--core/java/com/android/internal/content/NativeLibraryHelper.java25
-rw-r--r--core/java/com/android/internal/jank/Cuj.java19
-rw-r--r--core/java/com/android/internal/notification/NotificationChannelGroupsHelper.java186
-rw-r--r--core/java/com/android/internal/os/BatteryStatsHistory.java877
-rw-r--r--core/java/com/android/internal/os/BatteryStatsHistoryIterator.java56
-rw-r--r--core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java16
-rw-r--r--core/java/com/android/internal/policy/PhoneWindow.java5
-rw-r--r--core/java/com/android/internal/protolog/IProtoLogConfigurationService.aidl2
-rw-r--r--core/java/com/android/internal/statusbar/IStatusBar.aidl7
-rw-r--r--core/java/com/android/internal/util/RateLimitingCache.java76
-rw-r--r--core/java/com/android/internal/widget/ConversationLayout.java23
-rw-r--r--core/java/com/android/internal/widget/MessagingData.java4
-rw-r--r--core/java/com/android/internal/widget/MessagingLayout.java68
-rw-r--r--core/java/com/android/internal/widget/remotecompose/accessibility/AndroidPlatformSemanticNodeApplier.java81
-rw-r--r--core/java/com/android/internal/widget/remotecompose/accessibility/BaseSemanticNodeApplier.java35
-rw-r--r--core/java/com/android/internal/widget/remotecompose/accessibility/CoreDocumentAccessibility.java90
-rw-r--r--core/java/com/android/internal/widget/remotecompose/accessibility/PlatformRemoteComposeAccessibilityRegistrar.java2
-rw-r--r--core/java/com/android/internal/widget/remotecompose/accessibility/PlatformRemoteComposeTouchHelper.java56
-rw-r--r--core/java/com/android/internal/widget/remotecompose/accessibility/SemanticNodeApplier.java8
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/CoreDocument.java35
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/Operations.java10
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/PaintContext.java53
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/Platform.java21
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/RemoteComposeBuffer.java47
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/BitmapData.java44
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/BitmapFontData.java9
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/ClickArea.java17
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/ClipPath.java26
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/ClipRect.java6
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/ColorConstant.java12
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/ColorExpression.java17
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/ComponentValue.java19
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/DrawArc.java7
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/DrawBase2.java8
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/DrawBase3.java12
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/DrawBase4.java13
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/DrawBase6.java21
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/DrawCircle.java6
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/DrawLine.java6
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/DrawOval.java6
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/DrawPath.java9
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/DrawRect.java6
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/DrawRoundRect.java7
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/DrawSector.java7
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/ImageAttribute.java165
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/MatrixRestore.java9
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/MatrixRotate.java6
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/MatrixSave.java9
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/MatrixScale.java6
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/MatrixSkew.java6
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/MatrixTranslate.java6
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/PathData.java12
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/RootContentBehavior.java31
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/ShaderData.java6
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/TextAttribute.java170
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/TimeAttribute.java295
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/ActionOperation.java3
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/AnimatableValue.java9
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/ClickModifierOperation.java7
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/Component.java24
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/LayoutComponent.java27
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/ListActionsOperation.java8
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/RootLayoutComponent.java9
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/TouchCancelModifierOperation.java7
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/TouchDownModifierOperation.java7
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/TouchUpModifierOperation.java7
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/animation/AnimationSpec.java14
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/managers/CanvasLayout.java3
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/managers/TextLayout.java121
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/BackgroundModifierOperation.java15
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/BorderModifierOperation.java17
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ClipRectModifierOperation.java11
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ComponentModifiers.java17
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ComponentVisibilityOperation.java11
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/DecoratorModifierOperation.java3
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/DimensionInModifierOperation.java2
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/GraphicsLayerModifierOperation.java24
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/HeightInModifierOperation.java11
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/HeightModifierOperation.java11
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/HostActionOperation.java13
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/HostNamedActionOperation.java32
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/MarqueeModifierOperation.java15
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ModifierOperation.java3
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/OffsetModifierOperation.java11
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/PaddingModifierOperation.java13
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/RippleModifierOperation.java15
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/RoundedClipRectModifierOperation.java11
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ScrollModifierOperation.java64
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ShapeType.java25
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueFloatChangeActionOperation.java11
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueFloatExpressionChangeActionOperation.java11
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueIntegerChangeActionOperation.java11
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueIntegerExpressionChangeActionOperation.java11
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueStringChangeActionOperation.java11
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/WidthInModifierOperation.java11
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/WidthModifierOperation.java11
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ZIndexModifierOperation.java10
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/utilities/easing/Easing.java33
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/semantics/CoreSemantics.java16
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/semantics/ScrollableComponent.java111
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/serialize/MapSerializer.java51
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/serialize/SerializeTags.java (renamed from libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIShellTestCase.java)18
-rw-r--r--core/java/com/android/internal/widget/remotecompose/player/platform/AndroidComputedTextLayout.java60
-rw-r--r--core/java/com/android/internal/widget/remotecompose/player/platform/AndroidPaintContext.java94
-rw-r--r--core/jni/Android.bp3
-rw-r--r--core/jni/AndroidRuntime.cpp11
-rw-r--r--core/jni/android_content_res_ObbScanner.cpp1
-rw-r--r--core/jni/android_graphics_BLASTBufferQueue.cpp1
-rw-r--r--core/jni/android_graphics_GraphicBuffer.cpp1
-rw-r--r--core/jni/android_graphics_SurfaceTexture.cpp1
-rw-r--r--core/jni/android_hardware_Camera.cpp1
-rw-r--r--core/jni/android_hardware_HardwareBuffer.cpp1
-rw-r--r--core/jni/android_hardware_SensorManager.cpp1
-rw-r--r--core/jni/android_hardware_camera2_CameraMetadata.cpp1
-rw-r--r--core/jni/android_hardware_camera2_DngCreator.cpp1
-rw-r--r--core/jni/android_hardware_display_DisplayTopology.cpp4
-rw-r--r--core/jni/android_hardware_input_InputWindowHandle.cpp1
-rw-r--r--core/jni/android_media_AudioRecord.cpp1
-rw-r--r--core/jni/android_media_AudioSystem.cpp1
-rw-r--r--core/jni/android_media_AudioTrack.cpp1
-rw-r--r--core/jni/android_media_AudioVolumeGroupCallback.cpp1
-rw-r--r--core/jni/android_media_RemoteDisplay.cpp1
-rw-r--r--core/jni/android_media_ToneGenerator.cpp1
-rw-r--r--core/jni/android_opengl_EGL14.cpp2
-rw-r--r--core/jni/android_os_HwBinder.cpp1
-rw-r--r--core/jni/android_os_HwBlob.cpp1
-rw-r--r--core/jni/android_os_HwParcel.cpp1
-rw-r--r--core/jni/android_os_HwRemoteBinder.cpp1
-rw-r--r--core/jni/android_os_MessageQueue.cpp1
-rw-r--r--core/jni/android_tracing_PerfettoDataSource.cpp3
-rw-r--r--core/jni/android_util_Binder.cpp35
-rw-r--r--core/jni/android_view_CompositionSamplingListener.cpp1
-rw-r--r--core/jni/android_view_DisplayEventReceiver.cpp1
-rw-r--r--core/jni/android_view_InputEventReceiver.cpp1
-rw-r--r--core/jni/android_view_InputEventSender.cpp1
-rw-r--r--core/jni/android_view_InputQueue.cpp1
-rw-r--r--core/jni/android_view_Surface.cpp1
-rw-r--r--core/jni/android_view_SurfaceControl.cpp11
-rw-r--r--core/jni/android_view_SurfaceControlActivePictureListener.cpp6
-rw-r--r--core/jni/android_view_SurfaceControlHdrLayerInfoListener.cpp1
-rw-r--r--core/jni/android_view_SurfaceSession.cpp1
-rw-r--r--core/jni/android_view_TextureView.cpp1
-rw-r--r--core/jni/android_view_TunnelModeEnabledListener.cpp1
-rw-r--r--core/jni/android_window_InputTransferToken.cpp3
-rw-r--r--core/jni/android_window_ScreenCapture.cpp1
-rw-r--r--core/jni/android_window_WindowInfosListener.cpp1
-rw-r--r--core/jni/com_android_internal_content_NativeLibraryHelper.cpp24
-rw-r--r--core/jni/com_google_android_gles_jni_EGLImpl.cpp1
-rw-r--r--core/proto/android/server/windowmanagerservice.proto1
-rw-r--r--core/proto/android/widget/remoteviews.proto1
-rw-r--r--core/res/AndroidManifest.xml27
-rw-r--r--core/res/res/drawable-watch/toast_frame.xml4
-rw-r--r--core/res/res/drawable/accessibility_autoclick_button_group_rounded_background.xml20
-rw-r--r--core/res/res/drawable/accessibility_autoclick_button_rounded_background.xml20
-rw-r--r--core/res/res/drawable/accessibility_autoclick_double_click.xml25
-rw-r--r--core/res/res/drawable/accessibility_autoclick_drag.xml25
-rw-r--r--core/res/res/drawable/accessibility_autoclick_left_click.xml25
-rw-r--r--core/res/res/drawable/accessibility_autoclick_pause.xml26
-rw-r--r--core/res/res/drawable/accessibility_autoclick_position.xml26
-rw-r--r--core/res/res/drawable/accessibility_autoclick_right_click.xml25
-rw-r--r--core/res/res/drawable/accessibility_autoclick_scroll.xml25
-rw-r--r--core/res/res/drawable/accessibility_autoclick_type_panel_rounded_background.xml20
-rw-r--r--core/res/res/drawable/ic_notification_summarization.xml23
-rw-r--r--core/res/res/layout/accessibility_autoclick_type_panel.xml133
-rw-r--r--core/res/res/layout/alert_dialog_watch.xml6
-rw-r--r--core/res/res/layout/chooser_row.xml1
-rw-r--r--core/res/res/layout/chooser_row_direct_share.xml1
-rw-r--r--core/res/res/layout/notification_2025_conversation_header.xml2
-rw-r--r--core/res/res/layout/notification_2025_reply_history_container.xml (renamed from core/res/res/layout/notification_2025_reply_container.xml)0
-rw-r--r--core/res/res/layout/notification_2025_template_collapsed_base.xml1
-rw-r--r--core/res/res/layout/notification_2025_template_collapsed_media.xml1
-rw-r--r--core/res/res/layout/notification_2025_template_collapsed_messaging.xml1
-rw-r--r--core/res/res/layout/notification_2025_template_compact_heads_up_base.xml89
-rw-r--r--core/res/res/layout/notification_2025_template_compact_heads_up_messaging.xml116
-rw-r--r--core/res/res/layout/notification_2025_template_expanded_base.xml2
-rw-r--r--core/res/res/layout/notification_2025_template_expanded_big_picture.xml4
-rw-r--r--core/res/res/layout/notification_2025_template_expanded_big_text.xml4
-rw-r--r--core/res/res/layout/notification_2025_template_expanded_inbox.xml10
-rw-r--r--core/res/res/layout/notification_2025_template_expanded_messaging.xml3
-rw-r--r--core/res/res/layout/notification_2025_template_expanded_progress.xml4
-rw-r--r--core/res/res/values-af/strings.xml22
-rw-r--r--core/res/res/values-am/strings.xml22
-rw-r--r--core/res/res/values-ar/strings.xml20
-rw-r--r--core/res/res/values-as/strings.xml22
-rw-r--r--core/res/res/values-az/strings.xml22
-rw-r--r--core/res/res/values-b+sr+Latn/strings.xml18
-rw-r--r--core/res/res/values-be/strings.xml22
-rw-r--r--core/res/res/values-bg/strings.xml22
-rw-r--r--core/res/res/values-bn/strings.xml22
-rw-r--r--core/res/res/values-bs/strings.xml18
-rw-r--r--core/res/res/values-ca/strings.xml22
-rw-r--r--core/res/res/values-cs/strings.xml18
-rw-r--r--core/res/res/values-da/strings.xml22
-rw-r--r--core/res/res/values-de/strings.xml24
-rw-r--r--core/res/res/values-el/strings.xml22
-rw-r--r--core/res/res/values-en-rAU/strings.xml22
-rw-r--r--core/res/res/values-en-rCA/strings.xml18
-rw-r--r--core/res/res/values-en-rGB/strings.xml22
-rw-r--r--core/res/res/values-en-rIN/strings.xml22
-rw-r--r--core/res/res/values-es-rUS/strings.xml18
-rw-r--r--core/res/res/values-es/strings.xml22
-rw-r--r--core/res/res/values-et/strings.xml22
-rw-r--r--core/res/res/values-eu/strings.xml26
-rw-r--r--core/res/res/values-fa/strings.xml22
-rw-r--r--core/res/res/values-fi/strings.xml22
-rw-r--r--core/res/res/values-fr-rCA/strings.xml22
-rw-r--r--core/res/res/values-fr/strings.xml22
-rw-r--r--core/res/res/values-gl/strings.xml22
-rw-r--r--core/res/res/values-gu/strings.xml50
-rw-r--r--core/res/res/values-hi/strings.xml22
-rw-r--r--core/res/res/values-hr/strings.xml22
-rw-r--r--core/res/res/values-hu/strings.xml22
-rw-r--r--core/res/res/values-hy/strings.xml22
-rw-r--r--core/res/res/values-in/strings.xml22
-rw-r--r--core/res/res/values-is/strings.xml22
-rw-r--r--core/res/res/values-it/strings.xml24
-rw-r--r--core/res/res/values-iw/strings.xml22
-rw-r--r--core/res/res/values-ja/strings.xml18
-rw-r--r--core/res/res/values-ka/strings.xml18
-rw-r--r--core/res/res/values-kk/strings.xml22
-rw-r--r--core/res/res/values-km/strings.xml18
-rw-r--r--core/res/res/values-kn/strings.xml22
-rw-r--r--core/res/res/values-ko/strings.xml22
-rw-r--r--core/res/res/values-ky/strings.xml22
-rw-r--r--core/res/res/values-lo/strings.xml18
-rw-r--r--core/res/res/values-lt/strings.xml26
-rw-r--r--core/res/res/values-lv/strings.xml22
-rw-r--r--core/res/res/values-mk/strings.xml22
-rw-r--r--core/res/res/values-ml/strings.xml18
-rw-r--r--core/res/res/values-mn/strings.xml22
-rw-r--r--core/res/res/values-mr/strings.xml26
-rw-r--r--core/res/res/values-ms/strings.xml18
-rw-r--r--core/res/res/values-my/strings.xml24
-rw-r--r--core/res/res/values-nb/strings.xml22
-rw-r--r--core/res/res/values-ne/strings.xml22
-rw-r--r--core/res/res/values-nl/strings.xml18
-rw-r--r--core/res/res/values-or/strings.xml22
-rw-r--r--core/res/res/values-pa/strings.xml18
-rw-r--r--core/res/res/values-pl/strings.xml22
-rw-r--r--core/res/res/values-pt-rBR/strings.xml26
-rw-r--r--core/res/res/values-pt-rPT/strings.xml18
-rw-r--r--core/res/res/values-pt/strings.xml26
-rw-r--r--core/res/res/values-ro/strings.xml24
-rw-r--r--core/res/res/values-ru/strings.xml18
-rw-r--r--core/res/res/values-si/strings.xml22
-rw-r--r--core/res/res/values-sk/strings.xml20
-rw-r--r--core/res/res/values-sl/strings.xml20
-rw-r--r--core/res/res/values-sq/strings.xml22
-rw-r--r--core/res/res/values-sr/strings.xml18
-rw-r--r--core/res/res/values-sv/strings.xml22
-rw-r--r--core/res/res/values-sw/strings.xml22
-rw-r--r--core/res/res/values-ta/strings.xml22
-rw-r--r--core/res/res/values-te/strings.xml22
-rw-r--r--core/res/res/values-th/strings.xml18
-rw-r--r--core/res/res/values-tl/strings.xml18
-rw-r--r--core/res/res/values-tr/strings.xml22
-rw-r--r--core/res/res/values-uk/strings.xml22
-rw-r--r--core/res/res/values-ur/strings.xml22
-rw-r--r--core/res/res/values-uz/strings.xml18
-rw-r--r--core/res/res/values-vi/strings.xml22
-rw-r--r--core/res/res/values-watch/styles_device_defaults.xml49
-rw-r--r--core/res/res/values-watch/styles_material3.xml61
-rw-r--r--core/res/res/values-zh-rCN/strings.xml22
-rw-r--r--core/res/res/values-zh-rHK/strings.xml22
-rw-r--r--core/res/res/values-zh-rTW/strings.xml22
-rw-r--r--core/res/res/values-zu/strings.xml22
-rw-r--r--core/res/res/values/attrs_manifest.xml99
-rw-r--r--core/res/res/values/config.xml6
-rw-r--r--core/res/res/values/dimens.xml15
-rw-r--r--core/res/res/values/public-final.xml5
-rw-r--r--core/res/res/values/strings.xml34
-rw-r--r--core/res/res/values/styles.xml16
-rw-r--r--core/res/res/values/styles_device_defaults.xml7
-rw-r--r--core/res/res/values/styles_watch.xml6
-rw-r--r--core/res/res/values/symbols.xml59
-rw-r--r--core/tests/coretests/src/android/app/NotificationChannelTest.java62
-rw-r--r--core/tests/coretests/src/android/app/NotificationManagerTest.java87
-rw-r--r--core/tests/coretests/src/android/hardware/display/DisplayManagerGlobalTest.java6
-rw-r--r--core/tests/coretests/src/android/os/BundleTest.java46
-rw-r--r--core/tests/coretests/src/android/os/PerfettoTraceTest.java99
-rw-r--r--core/tests/coretests/src/android/view/ViewFrameRateTest.java71
-rw-r--r--core/tests/coretests/src/android/view/ViewRootImplTest.java115
-rw-r--r--core/tests/coretests/src/com/android/internal/notification/NotificationChannelGroupsHelperTest.java268
-rw-r--r--core/tests/coretests/src/com/android/internal/notification/OWNERS1
-rw-r--r--core/tests/coretests/src/com/android/internal/util/RateLimitingCacheTest.java187
-rw-r--r--core/tests/overlaytests/host/src/com/android/server/om/hosttest/InstallOverlayTests.java11
-rw-r--r--data/etc/OWNERS1
-rw-r--r--data/etc/privapp-permissions-platform.xml4
-rw-r--r--libs/WindowManager/Jetpack/src/androidx/window/extensions/WindowExtensionsImpl.java5
-rw-r--r--libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java6
-rw-r--r--libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java8
-rw-r--r--libs/WindowManager/Shell/OWNERS2
-rw-r--r--libs/WindowManager/Shell/multivalentTests/AndroidManifest.xml9
-rw-r--r--libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleControllerBubbleBarTest.kt4
-rw-r--r--libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleControllerTest.kt401
-rw-r--r--libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubblePositionerTest.kt9
-rw-r--r--libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleStackViewTest.kt1
-rw-r--r--libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleViewInfoTaskTest.kt4
-rw-r--r--libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/FakeBubbleExpandedViewManager.kt2
-rw-r--r--libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/FakeBubbleFactory.kt2
-rw-r--r--libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/TestActivity.kt27
-rw-r--r--libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarAnimationHelperTest.kt4
-rw-r--r--libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedViewTest.kt6
-rw-r--r--libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerViewTest.kt4
-rw-r--r--libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleExpandedViewPinControllerTest.kt2
-rw-r--r--libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/common/TestSyncExecutor.kt34
-rw-r--r--libs/WindowManager/Shell/res/drawable/ic_baseline_expand_more_16.xml28
-rw-r--r--libs/WindowManager/Shell/res/layout/desktop_mode_app_header.xml4
-rw-r--r--libs/WindowManager/Shell/res/layout/desktop_mode_window_decor_handle_menu.xml1
-rw-r--r--libs/WindowManager/Shell/res/values-af/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-am/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-ar/strings.xml24
-rw-r--r--libs/WindowManager/Shell/res/values-as/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-az/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-be/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-bg/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-bn/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-bs/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-ca/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-cs/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-da/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-de/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-el/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-en-rAU/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-en-rCA/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-en-rGB/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-en-rIN/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-es-rUS/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-es/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-et/strings.xml13
-rw-r--r--libs/WindowManager/Shell/res/values-eu/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-fa/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-fi/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-fr-rCA/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-fr/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-gl/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-gu/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-hi/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-hr/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-hu/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-hy/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-in/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-is/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-it/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-iw/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-ja/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-ka/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-kk/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-km/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-kn/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-ko/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-ky/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-lo/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-lt/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-lv/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-mk/strings.xml24
-rw-r--r--libs/WindowManager/Shell/res/values-ml/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-mn/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-mr/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-ms/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-my/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-nb/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-ne/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-nl/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-or/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-pa/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-pl/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-pt-rBR/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-pt-rPT/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-pt/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-ro/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-ru/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-si/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-sk/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-sl/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-sq/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-sr/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-sv/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-sw/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-ta/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-te/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-th/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-tl/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-tr/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-uk/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-ur/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-uz/strings.xml11
-rw-r--r--libs/WindowManager/Shell/res/values-vi/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-zh-rCN/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-zh-rHK/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-zh-rTW/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values-zu/strings.xml22
-rw-r--r--libs/WindowManager/Shell/res/values/dimen.xml6
-rw-r--r--libs/WindowManager/Shell/res/values/ids.xml1
-rw-r--r--libs/WindowManager/Shell/res/values/strings.xml2
-rw-r--r--libs/WindowManager/Shell/res/values/strings_tv.xml2
-rw-r--r--libs/WindowManager/Shell/res/values/styles.xml9
-rw-r--r--libs/WindowManager/Shell/res/values/styles_tv.xml29
-rw-r--r--libs/WindowManager/Shell/shared/Android.bp1
-rw-r--r--libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/annotations/ShellDesktopThread.java32
-rw-r--r--libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/BaseBubblePinController.kt8
-rw-r--r--libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/BubbleBarLocation.kt4
-rw-r--r--libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/BubbleDropTargetBoundsProvider.kt29
-rw-r--r--libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DeviceConfig.kt (renamed from libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/DeviceConfig.kt)2
-rw-r--r--libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DragZone.kt59
-rw-r--r--libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DragZoneFactory.kt470
-rw-r--r--libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DraggedObject.kt27
-rw-r--r--libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeCompatPolicy.kt44
-rw-r--r--libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatus.java12
-rw-r--r--libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/pip/PipContentOverlay.java18
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java3
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java8
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BadgedImageView.java6
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java200
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java241
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleEducationController.kt2
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java18
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedViewManager.kt6
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleLogger.java11
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleOverflow.kt2
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java26
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleResizabilityChecker.kt58
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java28
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTaskViewHelper.java17
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTransitions.java18
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleViewInfoTask.java5
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleViewInfoTaskLegacy.java11
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java24
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/ResizabilityChecker.kt35
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarDragListener.kt45
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedView.java16
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java12
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarMenuViewController.java2
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/properties/BubbleProperties.kt35
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayController.java4
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/common/InputChannelSupplier.kt34
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/common/UserProfileContexts.kt18
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/common/WindowSessionSupplier.kt35
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipDesktopState.java159
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerView.java9
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/common/transition/SurfaceBuilderSupplier.kt34
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/common/transition/TransactionSupplier.kt34
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/LetterboxGestureListener.kt65
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/LetterboxInputController.kt113
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/LetterboxInputDetector.kt230
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/LetterboxInputSurfaceBuilder.kt58
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/dagger/OWNERS3
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMComponent.java8
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java7
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellConcurrencyModule.java16
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java36
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip2Module.java29
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopImmersiveController.kt11
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandler.kt (renamed from libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopBackNavigationTransitionHandler.kt)9
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMixedTransitionHandler.kt9
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt13
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeUtils.kt41
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeVisualIndicator.java124
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt156
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt461
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserver.kt3
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DisplayDeskState.aidl31
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandler.kt24
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/IDesktopTaskListener.aidl41
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/OWNERS1
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/desktopwallpaperactivity/DesktopWallpaperActivityTokenProvider.kt22
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/education/data/AppHandleEducationDatastoreRepository.kt5
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/education/data/AppToWebEducationDatastoreRepository.kt5
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/DeskTransition.kt45
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/DesksOrganizer.kt3
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/DesksTransitionObserver.kt93
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/RootTaskDesksOrganizer.kt7
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/persistence/DesktopPersistentRepository.kt10
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/docs/changes.md1
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/docs/dagger.md1
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/docs/debugging.md49
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/docs/extending.md1
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/docs/overview.md1
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/docs/sysui.md1
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/docs/testing.md1
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/docs/threading.md1
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropController.java9
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragLayout.java117
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionHandler.java4
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionObserver.java10
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/freeform/OWNERS1
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/fullscreen/FullscreenTaskListener.java19
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitionHandler.java3
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java4
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java5
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuController.java15
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipTransition.java4
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/pip2/PipSurfaceTransactionHelper.java110
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java78
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTaskListener.java3
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTouchHandler.java1
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java61
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java6
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitMultiDisplayProvider.java (renamed from packages/CrashRecovery/framework/java/android/service/watchdog/IExplicitHealthCheckService.aidl)25
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java4
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java6
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java34
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTransitions.java55
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java10
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedTransition.java17
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java20
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/transition/OneShotRemoteHandler.java10
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/transition/RecentsMixedTransition.java16
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/transition/RemoteTransitionHandler.java10
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java39
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/unfold/UnfoldTransitionHandler.java6
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopHeaderManageWindowsMenu.kt4
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java55
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java98
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/FixedAspectRatioTaskPositionerDecorator.kt6
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.kt1
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MaximizeButtonView.kt10
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MaximizeMenu.kt19
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MultiDisplayVeiledResizeTaskPositioner.kt2
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java36
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/common/WindowDecorTaskResourceLoader.kt4
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHandleViewHolder.kt2
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt4
-rw-r--r--libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/Android.bp1
-rw-r--r--libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/AndroidManifest.xml2
-rw-r--r--libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/src/com/android/wm/shell/flicker/DesktopModeFlickerScenarios.kt44
-rw-r--r--libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/src/com/android/wm/shell/flicker/OpenAppWithExternalDisplayConnected.kt49
-rw-r--r--libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/functional/OpenAppWithExternalDisplayConnectedTest.kt27
-rw-r--r--libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/EnterDesktopWithDrag.kt2
-rw-r--r--libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/EnterDesktopWithDragExistingWindows.kt2
-rw-r--r--libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/MinimizeAutoPipAppWindow.kt1
-rw-r--r--libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/OpenAppWithExternalDisplayConnected.kt103
-rw-r--r--libs/WindowManager/Shell/tests/e2e/utils/src/com/android/wm/shell/ExtendedDisplaySettingsSession.kt34
-rw-r--r--libs/WindowManager/Shell/tests/unittest/Android.bp1
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingControllerTests.java4
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java8
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleOverflowTest.java5
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleTest.java151
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleTransitionsTest.java4
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleViewInfoTest.kt3
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/InputChannelSupplierTest.kt42
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/SuppliersUtilsTest.kt34
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/UserProfileContextsTest.kt21
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/WindowSessionSupplierTest.kt42
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/pip/PipDesktopStateTest.java204
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/split/DividerViewTest.java13
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/transition/SurfaceBuilderSupplierTest.kt43
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/transition/TransactionSupplierTest.kt43
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIControllerTest.java3
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUILayoutTest.java3
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIStatusManagerTest.java4
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIWindowManagerTest.java3
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/LetterboxEduDialogLayoutTest.java3
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/LetterboxEduWindowManagerTest.java3
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/ReachabilityEduLayoutTest.java3
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/ReachabilityEduWindowManagerTest.java3
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/RestartDialogLayoutTest.java3
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/RestartDialogWindowManagerTest.java3
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/UserAspectRatioSettingsLayoutTest.java3
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/UserAspectRatioSettingsWindowManagerTest.java3
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxControllerRobotTest.kt4
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxGestureDelegateTest.kt75
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxInputControllerTest.kt203
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxTestUtils.kt19
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopActivityOrientationChangeHandlerTest.kt2
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandlerTest.kt (renamed from libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopBackNavigationTransitionHandlerTest.kt)6
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopMixedTransitionHandlerTest.kt13
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeKeyGestureHandlerTest.kt2
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeVisualIndicatorTest.kt142
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopRepositoryTest.kt116
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt869
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserverTest.kt19
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandlerTest.kt84
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/multidesks/DesksTransitionObserverTest.kt180
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/multidesks/RootTaskDesksOrganizerTest.kt29
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/draganddrop/DragAndDropControllerTest.java8
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/PipSurfaceTransactionHelperTest.java107
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipSchedulerTest.java21
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipTaskListenerTest.java19
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/bubbles/DragZoneFactoryTest.kt249
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeCompatPolicyTest.kt90
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatusTest.kt66
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java164
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/DefaultTransitionHandlerTest.java1
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java4
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/unfold/UnfoldTransitionHandlerTest.java5
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelAppHandleOnlyTest.kt18
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt49
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTestsBase.kt4
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorationTests.java108
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/MultiDisplayVeiledResizeTaskPositionerTest.kt10
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java48
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/common/WindowDecorTaskResourceLoaderTest.kt1
-rw-r--r--libs/androidfw/Android.bp1
-rw-r--r--libs/androidfw/LocaleDataLookup.cpp7
-rw-r--r--libs/androidfw/TypeWrappers.cpp17
-rw-r--r--libs/androidfw/include/androidfw/TypeWrappers.h13
-rw-r--r--libs/androidfw/tests/LocaleDataLookup_bench.cpp57
-rw-r--r--libs/androidfw/tests/TypeWrappers_test.cpp12
-rw-r--r--libs/appfunctions/api/current.txt4
-rw-r--r--libs/appfunctions/java/com/android/extensions/appfunctions/AppFunctionManager.java14
-rw-r--r--libs/hwui/Android.bp1
-rw-r--r--libs/hwui/hwui/DrawTextFunctor.h54
-rw-r--r--libs/hwui/tests/unit/DrawTextFunctorTest.cpp88
-rw-r--r--media/java/android/media/AudioManager.java17
-rw-r--r--media/java/android/media/IAudioService.aidl4
-rw-r--r--media/java/android/media/MediaCodec.java19
-rw-r--r--media/java/android/media/RoutingSessionInfo.java67
-rw-r--r--media/java/android/media/flags/media_better_together.aconfig20
-rw-r--r--media/java/android/media/quality/MediaQualityContract.java28
-rw-r--r--media/java/android/media/session/MediaSessionManager.java65
-rw-r--r--media/jni/android_media_MediaCodec.cpp116
-rw-r--r--media/tests/aidltests/src/com/android/media/AidlConversionUnitTests.java13
-rw-r--r--nfc-non-updatable/flags/flags.aconfig10
-rw-r--r--nfc-non-updatable/java/android/nfc/cardemulation/ApduServiceInfo.java6
-rw-r--r--packages/CompanionDeviceManager/res/layout/activity_confirmation.xml6
-rw-r--r--packages/CompanionDeviceManager/res/values-ne/strings.xml2
-rw-r--r--packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceResources.java2
-rw-r--r--packages/CrashRecovery/framework/java/android/service/watchdog/ExplicitHealthCheckService.java359
-rw-r--r--packages/CrashRecovery/framework/java/android/service/watchdog/OWNERS3
-rw-r--r--packages/CrashRecovery/services/module/java/com/android/server/ExplicitHealthCheckController.java447
-rw-r--r--packages/CrashRecovery/services/module/java/com/android/server/PackageWatchdog.java2253
-rw-r--r--packages/CrashRecovery/services/module/java/com/android/server/RescueParty.java861
-rw-r--r--packages/CrashRecovery/services/module/java/com/android/server/crashrecovery/CrashRecoveryModule.java58
-rw-r--r--packages/CrashRecovery/services/module/java/com/android/server/crashrecovery/CrashRecoveryUtils.java85
-rw-r--r--packages/CrashRecovery/services/module/java/com/android/server/rollback/RollbackPackageHealthObserver.java785
-rw-r--r--packages/CrashRecovery/services/module/java/com/android/server/rollback/WatchdogRollbackLogger.java255
-rw-r--r--packages/CrashRecovery/services/module/java/com/android/util/ArrayUtils.java42
-rw-r--r--packages/CrashRecovery/services/module/java/com/android/util/FileUtils.java117
-rw-r--r--packages/CrashRecovery/services/module/java/com/android/util/LongArrayQueue.java188
-rw-r--r--packages/CrashRecovery/services/module/java/com/android/util/XmlUtils.java66
-rw-r--r--packages/NeuralNetworks/framework/module/java/android/app/ondeviceintelligence/InferenceInfo.java21
-rw-r--r--packages/NeuralNetworks/framework/platform/java/android/app/ondeviceintelligence/InferenceInfo.java23
-rw-r--r--packages/PackageInstaller/res/values-sk/strings.xml2
-rw-r--r--packages/PrintSpooler/res/values-es-rUS/strings.xml2
-rw-r--r--packages/SettingsLib/BannerMessagePreference/src/com/android/settingslib/widget/BannerMessagePreference.java14
-rw-r--r--packages/SettingsLib/BannerMessagePreference/src/com/android/settingslib/widget/BannerMessagePreferenceGroup.kt49
-rw-r--r--packages/SettingsLib/Graph/graph.proto2
-rw-r--r--packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt1
-rw-r--r--packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/IllustrationPreference.java11
-rw-r--r--packages/SettingsLib/Ipc/src/com/android/settingslib/ipc/ApiHandler.kt13
-rw-r--r--packages/SettingsLib/Ipc/src/com/android/settingslib/ipc/AppOpApiPermissionChecker.kt46
-rw-r--r--packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceMetadata.kt16
-rw-r--r--packages/SettingsLib/SettingsSpinner/res/layout/settings_spinner_preference.xml4
-rw-r--r--packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/enterprise/RestrictedMode.kt6
-rw-r--r--packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/preference/RestrictedSwitchPreferenceModel.kt6
-rw-r--r--packages/SettingsLib/res/values-af/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-am/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-ar/strings.xml1
-rw-r--r--packages/SettingsLib/res/values-as/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-az/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-b+sr+Latn/strings.xml1
-rw-r--r--packages/SettingsLib/res/values-be/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-bg/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-bn/arrays.xml2
-rw-r--r--packages/SettingsLib/res/values-bn/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-bs/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-ca/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-cs/strings.xml1
-rw-r--r--packages/SettingsLib/res/values-da/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-de/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-el/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-en-rAU/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-en-rCA/strings.xml1
-rw-r--r--packages/SettingsLib/res/values-en-rGB/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-en-rIN/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-es-rUS/strings.xml13
-rw-r--r--packages/SettingsLib/res/values-es/strings.xml4
-rw-r--r--packages/SettingsLib/res/values-et/strings.xml1
-rw-r--r--packages/SettingsLib/res/values-eu/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-fa/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-fi/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-fr-rCA/strings.xml4
-rw-r--r--packages/SettingsLib/res/values-fr/arrays.xml2
-rw-r--r--packages/SettingsLib/res/values-fr/strings.xml4
-rw-r--r--packages/SettingsLib/res/values-gl/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-gu/strings.xml6
-rw-r--r--packages/SettingsLib/res/values-hi/strings.xml4
-rw-r--r--packages/SettingsLib/res/values-hr/strings.xml1
-rw-r--r--packages/SettingsLib/res/values-hu/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-hy/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-in/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-is/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-it/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-iw/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-ja/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-ka/strings.xml1
-rw-r--r--packages/SettingsLib/res/values-kk/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-km/strings.xml1
-rw-r--r--packages/SettingsLib/res/values-kn/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-ko/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-ky/strings.xml4
-rw-r--r--packages/SettingsLib/res/values-lo/strings.xml1
-rw-r--r--packages/SettingsLib/res/values-lt/arrays.xml2
-rw-r--r--packages/SettingsLib/res/values-lt/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-lv/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-mk/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-ml/strings.xml1
-rw-r--r--packages/SettingsLib/res/values-mn/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-mr/arrays.xml2
-rw-r--r--packages/SettingsLib/res/values-mr/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-ms/strings.xml1
-rw-r--r--packages/SettingsLib/res/values-my/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-nb/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-ne/strings.xml6
-rw-r--r--packages/SettingsLib/res/values-nl/strings.xml1
-rw-r--r--packages/SettingsLib/res/values-or/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-pa/strings.xml1
-rw-r--r--packages/SettingsLib/res/values-pl/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-pt-rBR/strings.xml14
-rw-r--r--packages/SettingsLib/res/values-pt-rPT/strings.xml1
-rw-r--r--packages/SettingsLib/res/values-pt/strings.xml14
-rw-r--r--packages/SettingsLib/res/values-ro/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-ru/strings.xml1
-rw-r--r--packages/SettingsLib/res/values-si/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-sk/strings.xml7
-rw-r--r--packages/SettingsLib/res/values-sl/strings.xml1
-rw-r--r--packages/SettingsLib/res/values-sq/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-sr/strings.xml1
-rw-r--r--packages/SettingsLib/res/values-sv/arrays.xml16
-rw-r--r--packages/SettingsLib/res/values-sv/strings.xml7
-rw-r--r--packages/SettingsLib/res/values-sw/strings.xml4
-rw-r--r--packages/SettingsLib/res/values-ta/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-te/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-th/strings.xml1
-rw-r--r--packages/SettingsLib/res/values-tl/strings.xml5
-rw-r--r--packages/SettingsLib/res/values-tr/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-uk/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-ur/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-uz/strings.xml5
-rw-r--r--packages/SettingsLib/res/values-vi/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-zh-rCN/strings.xml4
-rw-r--r--packages/SettingsLib/res/values-zh-rHK/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-zh-rTW/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-zu/strings.xml2
-rw-r--r--packages/SettingsLib/res/values/arrays.xml7
-rw-r--r--packages/SettingsLib/res/values/strings.xml2
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java15
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/bluetooth/AmbientVolumeUiController.java2
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/drawer/CategoryKey.java2
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java79
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java12
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/media/ManagerInfoMediaManager.java6
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java11
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/media/NoOpInfoMediaManager.java6
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/media/OWNERS3
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/media/RouterInfoMediaManager.java38
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/notification/modes/TestModeBuilder.java6
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/supervision/OWNERS1
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/supervision/SupervisionIntentProvider.kt44
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/volume/MediaSessions.java402
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/volume/MediaSessions.kt364
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioSharingRepository.kt37
-rw-r--r--packages/SettingsLib/tests/robotests/Android.bp15
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/CategoryKeyTest.java3
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java124
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/supervision/SupervisionIntentProviderTest.kt105
-rw-r--r--packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java2
-rw-r--r--packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java6
-rw-r--r--packages/SettingsProvider/src/android/provider/settings/validators/SettingsValidators.java32
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/WritableNamespaces.java2
-rw-r--r--packages/SettingsProvider/test/src/android/provider/settings/validators/SettingsValidatorsTest.java13
-rw-r--r--packages/Shell/AndroidManifest.xml10
-rw-r--r--packages/SoundPicker/res/values-gu/strings.xml2
-rw-r--r--packages/SystemUI/Android.bp2
-rw-r--r--packages/SystemUI/OWNERS2
-rw-r--r--packages/SystemUI/aconfig/accessibility.aconfig10
-rw-r--r--packages/SystemUI/aconfig/biometrics_framework.aconfig7
-rw-r--r--packages/SystemUI/aconfig/systemui.aconfig28
-rw-r--r--packages/SystemUI/animation/res/values/ids.xml5
-rw-r--r--packages/SystemUI/animation/src/com/android/systemui/animation/ActivityTransitionAnimator.kt118
-rw-r--r--packages/SystemUI/animation/src/com/android/systemui/animation/FontInterpolator.kt6
-rw-r--r--packages/SystemUI/animation/src/com/android/systemui/animation/TextAnimator.kt142
-rw-r--r--packages/SystemUI/animation/src/com/android/systemui/animation/TextInterpolator.kt12
-rw-r--r--packages/SystemUI/animation/src/com/android/systemui/animation/ViewTransitionRegistry.kt99
-rw-r--r--packages/SystemUI/animation/src/com/android/systemui/animation/ViewTransitionToken.kt (renamed from libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/properties/ProdBubbleProperties.kt)33
-rw-r--r--packages/SystemUI/compose/core/src/com/android/compose/animation/ExpandableController.kt2
-rw-r--r--packages/SystemUI/compose/core/src/com/android/compose/gesture/NestedDraggable.kt63
-rw-r--r--packages/SystemUI/compose/core/src/com/android/compose/gesture/effect/ContentOverscrollEffect.kt24
-rw-r--r--packages/SystemUI/compose/core/src/com/android/compose/modifiers/MeasureTracing.kt32
-rw-r--r--packages/SystemUI/compose/core/tests/src/com/android/compose/gesture/NestedDraggableTest.kt21
-rw-r--r--packages/SystemUI/compose/facade/enabled/src/com/android/systemui/scene/LockscreenSceneModule.kt3
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/common/ui/compose/ContentDescription.kt2
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/common/ui/compose/Icon.kt5
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/common/ui/compose/TextExt.kt2
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContainer.kt3
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContent.kt14
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/ResponsiveLazyHorizontalGrid.kt9
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/section/CommunalLockSection.kt150
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/section/CommunalToDreamButtonSection.kt4
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/section/HubOnboardingSection.kt20
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/AlternateBouncer.kt4
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/LockscreenContent.kt43
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/DefaultBlueprint.kt50
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/DefaultClockSection.kt65
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/LockSection.kt4
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/WeatherClockSection.kt22
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt2
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationsShadeOverlay.kt30
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt66
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsShadeOverlay.kt71
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/ribbon/ui/composable/Ribbon.kt26
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainer.kt13
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt346
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitionsBuilder.kt41
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/ToNotificationsShadeTransition.kt32
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/ToQuickSettingsShadeTransition.kt16
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/OverlayShade.kt59
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeHeader.kt213
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeScene.kt47
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/VariableDayDate.kt20
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/mediaoutput/MediaOutputModule.kt4
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/volume/ui/composable/VolumeSlider.kt23
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/ui/composable/VerticalVolumePanelContent.kt13
-rw-r--r--packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt4
-rw-r--r--packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Element.kt109
-rw-r--r--packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SwipeToScene.kt11
-rw-r--r--packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/Content.kt2
-rw-r--r--packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ContentTest.kt46
-rw-r--r--packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ClockRegistry.kt20
-rw-r--r--packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ComposedDigitalLayerController.kt27
-rw-r--r--packages/SystemUI/customization/src/com/android/systemui/shared/clocks/DefaultClockController.kt2
-rw-r--r--packages/SystemUI/customization/src/com/android/systemui/shared/clocks/DefaultClockProvider.kt43
-rw-r--r--packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockController.kt22
-rw-r--r--packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockFaceController.kt28
-rw-r--r--packages/SystemUI/customization/src/com/android/systemui/shared/clocks/SimpleDigitalHandLayerController.kt32
-rw-r--r--packages/SystemUI/customization/src/com/android/systemui/shared/clocks/TimespecHandler.kt13
-rw-r--r--packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/FlexClockView.kt63
-rw-r--r--packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt75
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardDisplayManagerTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/AccessibilityRepositoryTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/CaptioningRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/ColorCorrectionRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/ColorInversionRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/NightDisplayRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/OneHandedModeRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/extradim/ExtraDimDialogDelegateTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/animation/ViewTransitionRegistryTest.kt79
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/assist/data/repository/AssistRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/assist/domain/interactor/AssistInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/authentication/data/repository/AuthenticationRepositoryTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/authentication/domain/interactor/AuthenticationInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/back/domain/interactor/BackActionInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt17
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/BiometricTestExtensions.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/BiometricStatusRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/DisplayStateRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/FacePropertyRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/FaceSettingsRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/FingerprintRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/PromptRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/BiometricStatusInteractorImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/CredentialInteractorImplTest.kt12
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/DisplayStateInteractorImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/FingerprintPropertyInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/LogContextInteractorImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/PromptCredentialInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractorImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/SideFpsSensorInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/UdfpsOverlayInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/CredentialViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/DefaultUdfpsTouchOverlayViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/DeviceEntryUdfpsTouchOverlayViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModelTest.kt47
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingDialogDelegateTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingDialogViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/BluetoothDeviceMetadataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/DeviceItemActionInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/data/repository/EmergencyServicesRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/data/repository/SimBouncerRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/BouncerActionButtonInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/BouncerInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/BouncerMessageInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/SimBouncerInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/composable/BouncerPredictiveBackTest.kt8
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/AuthMethodBouncerViewModelTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerMessageViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerSceneContentViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerUserActionsViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/KeyguardBouncerViewModelTest.kt1
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PasswordBouncerViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PatternBouncerViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PinBouncerViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/brightness/data/repository/ScreenBrightnessDisplayManagerRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/brightness/domain/interactor/ScreenBrightnessInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/brightness/ui/viewmodel/BrightnessSliderViewModelTest.kt34
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/camera/data/repository/CameraAutoRotateRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/camera/data/repository/CameraSensorPrivacyRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/camera/data/repository/FakeCameraAutoRotateRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/camera/data/repository/FakeCameraSensorPrivacyRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/common/coroutine/CoroutineResultTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/common/data/repository/PackageInstallerMonitorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/common/data/repository/PackageUpdateMonitorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/common/domain/interactor/PackageChangeInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/data/repository/ConfigurationRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/view/TouchHandlingViewInteractionHandlerTest.kt (renamed from packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/view/LongPressHandlingViewInteractionHandlerTest.kt)69
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalDreamStartableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalOngoingContentStartableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalSceneStartableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/db/DefaultWidgetPopulationTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalMediaRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalPrefsRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSceneRepositoryImplTest.kt (renamed from packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalRepositoryImplTest.kt)60
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSettingsRepositoryImplTest.kt63
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSmartspaceRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalBackActionInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalInteractorCommunalDisabledTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalInteractorTest.kt35
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalSceneInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalSceneTransitionInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalTutorialInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/WidgetTrampolineInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/log/CommunalLoggerStartableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModelTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/ResizeableItemFrameViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/widgets/CommunalAppWidgetHostTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalLockIconViewModelTest.kt138
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt13
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/CommunalAppWidgetHostStartableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/CommunalTransitionAnimatorControllerTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/EditWidgetsActivityControllerTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/EditWidgetsActivityStarterTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/GlanceableHubWidgetManagerServiceTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/WidgetConfigurationControllerTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/WidgetInteractionHandlerTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/complication/ComplicationHostViewControllerTest.java41
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/complication/ComplicationLayoutEngineTest.java87
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/complication/DreamClockTimeComplicationTest.java7
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/controls/panels/SelectedComponentRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/controls/settings/ControlsSettingsRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/controls/start/ControlsStartableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/coroutines/FlowTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/demomode/DemoModeControllerTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/deviceconfig/data/repository/DeviceConfigRepositoryTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/data/repository/DeviceEntryRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/AuthRippleInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryBiometricSettingsInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryBiometricsAllowedInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthStatusInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryHapticsInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntrySourceInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryUdfpsInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractorTest.kt60
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/OccludingAppDeviceEntryInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/ui/binder/LiftToRunFaceAuthBinderTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/ui/viewmodel/UdfpsAccessibilityOverlayViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DeviceStateRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DisplayMetricsRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DisplayRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/display/domain/interactor/ConnectedDisplayInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/DreamOverlayServiceTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsComponentInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamServiceTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamStartableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/service/HomeControlsRemoteProxyTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/service/RemoteHomeControlsDataSourceDelegatorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/system/HomeControlsRemoteServiceBinderTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/dump/DumpHandlerTest.kt4
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadEduInteractorParameterizedTest.kt1
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadEduInteractorTest.kt1
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/education/domain/ui/view/ContextualEduUiCoordinatorTest.kt1
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/flags/NotOccludedConditionTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/globalactions/data/repository/GlobalActionsRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/globalactions/domain/interactor/GlobalActionsInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/msdl/qs/TileHapticsViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/slider/HapticSliderPluginTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/slider/SliderStateTrackerTest.kt4
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/slider/compose/ui/SliderHapticsViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/data/repository/UserInputDeviceRepositoryTest.kt1
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/tutorial/domain/interactor/TutorialNotificationCoordinatorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/tutorial/domain/interactor/TutorialSchedulerInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/tutorial/ui/viewmodel/KeyboardTouchpadTutorialViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/backlight/domain/interactor/KeyboardBacklightInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/backlight/ui/KeyboardBacklightDialogCoordinatorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/data/repository/KeyboardRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/ShortcutHelperCoreStartableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/data/repository/DefaultShortcutCategoriesRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/domain/interactor/ShortcutHelperCategoriesInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/ui/ShortcutHelperDialogStarterTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/ui/viewmodel/ShortcutHelperViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/stickykeys/ui/StickyKeysIndicatorCoordinatorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/stickykeys/ui/viewmodel/StickyKeysIndicatorViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ResourceTrimmerTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/CameraQuickAffordanceConfigTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/DoNotDisturbQuickAffordanceConfigTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/FlashlightQuickAffordanceConfigTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceHapticViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceLegacySettingSyncerTest.kt4
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceLocalUserSelectionManagerTest.kt29
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceRemoteUserSelectionManagerTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/MuteQuickAffordanceConfigTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/MuteQuickAffordanceCoreStartableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/VideoCameraQuickAffordanceConfigTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/BiometricSettingsRepositoryTest.kt48
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/DeviceEntryFingerprintAuthRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/DevicePostureRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyEventRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardQuickAffordanceRepositoryTest.kt4
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardSurfaceBehindRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/LightRevealScrimRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/TrustRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/BurnInInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromAlternateBouncerTransitionInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractorTest.kt159
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractorTest.kt82
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromOccludedTransitionInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/InWindowLauncherUnlockAnimationInteractorTest.kt1
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardBlueprintInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissActionInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardKeyEventInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardOcclusionInteractorTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorTest.kt5
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardShowWhileAwakeInteractorTest.kt (renamed from packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardLockWhileAwakeInteractorTest.kt)34
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractorTest.kt1
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTouchHandlingInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorTest.kt1
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardWakeDirectlyToGoneInteractorTest.kt6
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/LightRevealScrimInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/SwipeToDismissInteractorTest.kt1
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/UdfpsKeyguardInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractorTest.kt1
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/shared/transition/FakeKeyguardTransitionAnimationCallbackTest.kt97
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/binder/InWindowLauncherUnlockAnimationManagerTest.kt1
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/binder/KeyguardClockViewBinderTest.kt1
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/binder/KeyguardSurfaceBehindParamsApplierTest.kt1
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/binder/WindowManagerLockscreenVisibilityManagerTest.kt1
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprintTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSectionTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AccessibilityActionsViewModelTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerMessageAreaViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToAodTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToDozingTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToGoneTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToLockscreenTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToOccludedTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerWindowViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModelTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodToGoneTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodToLockscreenTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodToOccludedTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodToPrimaryBouncerTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryBackgroundViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryForegroundViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DozingToGoneTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DozingToLockscreenTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DozingToPrimaryBouncerTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToLockscreenTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToLockscreenTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToPrimaryBouncerTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GoneToAodTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GoneToDozingTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelTest.kt265
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToAodTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToDozingTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToDreamingTransitionViewModelTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGlanceableHubTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGoneTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModelTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModelTest.kt12
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToAodTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OffToLockscreenTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToAodTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToDozingTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGlanceableHubTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGoneTransitionViewModelTest.kt23
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/SideFpsProgressBarViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/lifecycle/ExclusiveActivatableTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/log/echo/LogcatEchoTrackerDebugTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/log/table/LogDiffsForTableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/pipeline/Media3ActionFactoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataLoaderTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/media/dialog/MediaOutputAdapterTest.java307
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/mediaprojection/appselector/data/ActivityTaskManagerThumbnailLoaderTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionManagerRepositoryTest.kt44
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/mediarouter/data/repository/MediaRouterRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/notetask/FakeNoteTaskBubbleController.kt6
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/notetask/NoteTaskBubblesServiceTest.kt18
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModelTest.kt14
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerBaseSceneContainerTest.kt12
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java20
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QuickQSPanelControllerTest.kt5
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/UserSettingObserverTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/composefragment/viewmodel/AbstractQSFragmentComposeViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModelForceQSTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/data/repository/PaginatedGridRepositoryTest.kt62
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/data/repository/QSPreferencesRepositoryTest.kt118
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/DynamicIconTilesInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/IconTilesInteractorTest.kt4
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/SizedTilesResetInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/DetailsViewModelTest.kt6
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/EditModeViewModelTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/MediaInRowInLandscapeViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/QuickQuickSettingsViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/AutoAddSettingsRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/InstalledTilesComponentRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/QSSettingsRestoredBroadcastRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/TileSpecSettingsRepositoryTest.kt39
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/UserAutoAddRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/UserTileSpecRepositoryTest.kt54
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/restoreprocessors/WorkTileRestoreProcessorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/AutoAddableSettingTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/CallbackControllerAutoAddableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/CastAutoAddableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/DataSaverAutoAddableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/DeviceControlsAutoAddableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/HotspotAutoAddableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/NightDisplayAutoAddableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/SafetyCenterAutoAddableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/WalletAutoAddableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/WorkTileAutoAddableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/AccessibilityTilesInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/AutoAddInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/CurrentTilesInteractorImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/NoLowNumberOfTilesTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/WorkProfileAutoAddedAfterRestoreTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/shared/QSSettingsPackageRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/InternetTileNewImplTest.kt50
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/ModesTileTest.kt4
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/base/viewmodel/QSTileViewModelImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/airplane/domain/interactor/AirplaneModeTileDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/alarm/domain/interactor/AlarmTileDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/battery/doman/interactor/BatterySaverTileDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/colorcorrection/domain/interactor/ColorCorrectionTileDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/CustomTileDefaultsRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/CustomTilePackageUpdatesRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/data/repository/CustomTileRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/domain/interactor/CustomTileDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/domain/interactor/CustomTileInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/flashlight/domain/interactor/FlashlightTileDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/fontscaling/domain/interactor/FontScalingTileDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/hearingdevices/domain/interactor/HearingDevicesTileDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/internet/domain/interactor/InternetTileDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionTileDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/irecording/IssueRecordingDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/location/interactor/LocationTileDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractorTest.kt5
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/notes/domain/interactor/NotesTileDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/onehanded/domain/interactor/OneHandedModeTileDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/rotation/domain/interactor/RotationLockTileDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/saver/domain/interactor/DataSaverTileDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/screenrecord/domain/interactor/ScreenRecordTileDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/sensorprivacy/domain/interactor/SensorPrivacyToggleTileDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/UiModeNightTileDataInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelUserInputTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt10
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModelTest.kt82
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneContentViewModelTest.kt11
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModelTest.kt20
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/recordissue/IssueRecordingServiceSessionTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/retail/data/repository/RetailModeSettingsRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt4
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/scene/data/repository/SceneContainerRepositoryTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneBackInteractorTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneContainerOcclusionInteractorTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/KeyguardStateCallbackStartableTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/SceneContainerStartableTest.kt31
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/ScrimStartableTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/StatusBarStartableTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModelTest.kt6
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerHapticsViewModelTest.kt26
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModelTest.kt14
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/UserActionsViewModelTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/screenrecord/data/repository/ScreenRecordRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/MessageContainerControllerTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/ScreenshotSoundControllerTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/appclips/AppClipsServiceTest.java8
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java13
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.kt11
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/QuickSettingsControllerImplWithCoroutinesTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ShadeControllerSceneImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ShadeDisplayChangeLatencyTrackerTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/data/repository/PrivacyChipRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/data/repository/ShadeDisplaysRepositoryTest.kt12
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/PanelExpansionInteractorImplTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/PrivacyChipInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeAnimationInteractorSceneContainerImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractorTest.kt7
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorLegacyImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorSceneContainerImplTest.kt26
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/startable/ShadeStartableTest.kt9
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/NotificationShadeWindowModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelTest.kt115
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shared/condition/ConditionExtensionsTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/CommandQueueTest.java12
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerTest.java78
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt90
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/OperatorNameViewControllerTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt5
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModelTest.kt114
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/domian/interactor/MediaRouterChipInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndCastScreenToOtherDeviceDialogDelegateTest.kt41
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndGenericCastToOtherDeviceDialogDelegateTest.kt41
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModelTest.kt84
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/mediaprojection/domain/interactor/MediaProjectionChipInteractorTest.kt30
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/notification/domain/interactor/SingleNotificationChipInteractorTest.kt5
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModelTest.kt91
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/screenrecord/domain/interactor/ScreenRecordChipInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/screenrecord/ui/view/EndScreenRecordingDialogDelegateTest.kt39
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModelTest.kt74
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndGenericShareToAppDialogDelegateTest.kt58
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndShareScreenToAppDialogDelegateTest.kt44
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModelTest.kt290
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/ChipTransitionHelperTest.kt50
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModelTest.kt57
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsWithNotifsViewModelTest.kt294
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarStarterTest.kt191
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/RemoteInputRepositoryImplTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/disableflags/data/repository/DisableFlagsRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/domain/interactor/RemoteInputInteractorTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/events/SystemEventCoordinatorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationStackAppearanceIntegrationTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinatorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/LockScreenMinimalismCoordinatorTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinatorTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinatorTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/ActiveNotificationsInteractorTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/HeadsUpNotificationInteractorTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/NotificationsSoundPolicyInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationsListInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/emptyshade/ui/viewmodel/EmptyShadeViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/footer/ui/viewmodel/FooterViewModelTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/headsup/AvalancheControllerTest.kt26
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerImplTest.kt34
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/icon/domain/interactor/NotificationIconsInteractorTest.kt41
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerAlwaysOnDisplayViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorImplTest.kt58
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/BigPictureIconManagerTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/BundleNotificationInfoTest.java308
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.kt44
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationInfoTest.java546
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImplTest.kt1
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/PromotedNotificationInfoTest.java1
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/RowImageInflaterTest.kt120
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/ActivatableNotificationViewModelTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/NotificationViewFlipperViewModelTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/shelf/domain/interactor/NotificationShelfInteractorTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/DisplaySwitchNotificationsHiderTrackerTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImplTest.kt155
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt8
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationStackInteractorTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/SharedNotificationContainerInteractorTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/view/NotificationStatsLoggerTest.kt84
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ActivityStarterImplTest.kt35
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacksTest.java23
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/DozeServiceHostCoroutinesTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardBypassControllerTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImplTest.kt38
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicyTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ShadeTouchableRegionManagerTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/SystemUIBottomSheetDialogTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/data/repository/KeyguardBypassRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/domain/interactor/KeyguardBypassInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractorTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/airplane/data/repository/AirplaneModeRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/airplane/domain/interactor/AirplaneModeInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/demo/DemoMobileConnectionParameterizedTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/demo/DemoMobileConnectionsRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/CarrierMergedConnectionRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/LocationBasedMobileIconViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/satellite/data/DeviceBasedSatelliteRepositorySwitcherTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/satellite/ui/viewmodel/DeviceBasedSatelliteViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/FakeHomeStatusBarViewBinder.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/FakeHomeStatusBarViewModel.kt8
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModelImplTest.kt181
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/WifiRepositorySwitcherTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractorImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/KeyguardQsUserSwitchControllerTest.kt138
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ZenModeControllerImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ZenModesCleanupStartableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/bluetooth/BluetoothRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/bluetooth/FakeBluetoothRepository.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/data/repository/DeviceProvisioningRepositoryImplTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/data/repository/UserSetupRepositoryTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ui/dialog/ModesDialogDelegateTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ui/dialog/viewmodel/ModesDialogViewModelTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt36
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/window/data/repository/StatusBarWindowStatePerDisplayRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/window/data/repository/StatusBarWindowStateRepositoryStoreTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/DisplaySwitchLatencyTrackerTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/FoldLightRevealOverlayAnimationTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/domain/interactor/UnfoldTransitionInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/user/data/repository/UserRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/user/domain/interactor/UserLogoutInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/user/domain/interactor/UserSwitcherInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/user/ui/viewmodel/StatusBarUserChipViewModelTest.kt4
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/user/ui/viewmodel/UserSwitcherViewModelTest.kt4
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/util/WallpaperControllerTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/util/kotlin/FlowUtilTests.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/SettingsProxyExtTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/SettingsProxyTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/UserSettingsProxyTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/repository/UserAwareSettingsRepositoryTestBase.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/util/ui/AnimatedValueTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/CsdWarningDialogTest.java18
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/VolumeControllerAdapterTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/VolumeDialogControllerImplTestKt.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/data/repository/VolumeDialogRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogVisibilityInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/ringer/domain/VolumeDialogRingerInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSliderInputEventsInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSlidersInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioModeInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioOutputInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioVolumeInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/VolumeDialogInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/startable/AudioModeLoggerStartableTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/data/repository/AncSliceRepositoryTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/domain/AncAvailabilityCriteriaTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/domain/interactor/AncSliceInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/bottombar/ui/viewmodel/BottomBarViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/captioning/ui/viewmodel/CaptioningViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteriaTest.kt76
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaDeviceSessionInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputComponentInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/MediaOutputViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/spatial/domain/SpatialAudioAvailabilityCriteriaTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/spatial/domain/interactor/SpatialAudioComponentInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/volume/domain/interactor/AudioSlidersInteractorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/ui/viewmodel/VolumePanelViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/ui/navigation/VolumeNavigatorTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/wallet/controller/WalletContextualLocationsServiceTest.kt5
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/wallet/controller/WalletContextualSuggestionsControllerTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/wallpapers/data/repository/WallpaperRepositoryImplTest.kt53
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/wallpapers/domain/interactor/WallpaperFocalAreaInteractorTest.kt312
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/window/domain/interactor/WindowRootViewBlurInteractorTest.kt15
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/window/ui/viewmodel/WindowRootViewModelTest.kt8
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/wmshell/TestableBubbleController.java6
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/wmshell/WMShellTest.kt2
-rw-r--r--packages/SystemUI/plugin/src/com/android/systemui/plugins/ActivityStarter.java7
-rw-r--r--packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockAnimations.kt3
-rw-r--r--packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockLogger.kt7
-rw-r--r--packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockPickerConfig.kt7
-rw-r--r--packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockSettings.kt11
-rw-r--r--packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/TileDetailsViewModel.kt7
-rw-r--r--packages/SystemUI/pods/com/android/systemui/util/settings/SettingsProxy.kt29
-rw-r--r--packages/SystemUI/pods/com/android/systemui/util/settings/UserSettingsProxy.kt63
-rw-r--r--packages/SystemUI/res-keyguard/values-ar/strings.xml2
-rw-r--r--packages/SystemUI/res-keyguard/values-es/strings.xml2
-rw-r--r--packages/SystemUI/res-keyguard/values-mk/strings.xml2
-rw-r--r--packages/SystemUI/res-keyguard/values-sl/strings.xml2
-rw-r--r--packages/SystemUI/res-keyguard/values/arrays.xml9
-rw-r--r--packages/SystemUI/res/drawable/bouncer_shape_1.xml81
-rw-r--r--packages/SystemUI/res/drawable/bouncer_shape_2.xml81
-rw-r--r--packages/SystemUI/res/drawable/bouncer_shape_3.xml81
-rw-r--r--packages/SystemUI/res/drawable/bouncer_shape_4.xml81
-rw-r--r--packages/SystemUI/res/drawable/bouncer_shape_5.xml81
-rw-r--r--packages/SystemUI/res/drawable/bouncer_shape_6.xml81
-rw-r--r--packages/SystemUI/res/drawable/bouncer_shape_delete.xml126
-rw-r--r--packages/SystemUI/res/drawable/bouncer_shape_outline.xml27
-rw-r--r--packages/SystemUI/res/drawable/ic_rear_display_slider.xml29
-rw-r--r--packages/SystemUI/res/drawable/magic_action_button_background.xml21
-rw-r--r--packages/SystemUI/res/drawable/media_output_item_background.xml2
-rw-r--r--packages/SystemUI/res/drawable/media_output_item_expand_group.xml26
-rw-r--r--packages/SystemUI/res/drawable/notif_footer_btn_settings.xml2
-rw-r--r--packages/SystemUI/res/drawable/rear_display_dialog_seekbar.xml32
-rw-r--r--packages/SystemUI/res/drawable/rear_display_dialog_seekbar_progress.xml40
-rw-r--r--packages/SystemUI/res/layout/activity_rear_display_enabled.xml (renamed from packages/SystemUI/res/layout/activity_rear_display_front_screen_on.xml)36
-rw-r--r--packages/SystemUI/res/layout/bundle_notification_info.xml366
-rw-r--r--packages/SystemUI/res/layout/magic_action_button.xml16
-rw-r--r--packages/SystemUI/res/layout/media_output_list_group_divider.xml2
-rw-r--r--packages/SystemUI/res/layout/media_output_list_item_advanced.xml27
-rw-r--r--packages/SystemUI/res/layout/notification_2025_hybrid.xml1
-rw-r--r--packages/SystemUI/res/layout/notification_2025_hybrid_conversation.xml1
-rw-r--r--packages/SystemUI/res/layout/notification_conversation_info.xml11
-rw-r--r--packages/SystemUI/res/layout/notification_info.xml14
-rw-r--r--packages/SystemUI/res/layout/status_bar_expanded.xml2
-rw-r--r--packages/SystemUI/res/layout/window_magnification_settings_view.xml1
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_error_to_fingerprint.json2
-rwxr-xr-xpackages/SystemUI/res/raw/biometricprompt_sfps_error_to_fingerprint_180.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_error_to_fingerprint_270.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_error_to_fingerprint_90.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_error_to_success.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_error_to_unlock.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_authenticating.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_error.json2
-rwxr-xr-xpackages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_error_180.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_error_270.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_error_90.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_success.json2
-rwxr-xr-xpackages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_success_180.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_success_270.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_success_90.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_unlock.json2
-rwxr-xr-xpackages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_unlock_180.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_unlock_270.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_unlock_90.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_error_to_fingerprint.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_error_to_fingerprint_180.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_error_to_fingerprint_270.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_error_to_fingerprint_90.json2
-rwxr-xr-xpackages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_authenticating.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_error.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_error_180.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_error_270.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_error_90.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_success.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_success_180.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_success_270.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_success_90.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_unlock.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_unlock_180.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_unlock_270.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_unlock_90.json2
-rw-r--r--packages/SystemUI/res/raw/biometricprompt_sfps_unlock_to_success.json2
-rw-r--r--packages/SystemUI/res/raw/face_dialog_authenticating.json2
-rw-r--r--packages/SystemUI/res/raw/face_dialog_dark_to_checkmark.json2
-rw-r--r--packages/SystemUI/res/raw/face_dialog_dark_to_error.json2
-rw-r--r--packages/SystemUI/res/raw/face_dialog_error_to_idle.json2
-rw-r--r--packages/SystemUI/res/raw/face_dialog_idle_static.json2
-rw-r--r--packages/SystemUI/res/raw/face_dialog_wink_from_dark.json2
-rw-r--r--packages/SystemUI/res/raw/fingerprint_dialogue_error_to_fingerprint_lottie.json2
-rw-r--r--packages/SystemUI/res/raw/fingerprint_dialogue_error_to_unlock_lottie.json2
-rw-r--r--packages/SystemUI/res/raw/fingerprint_dialogue_fingerprint_to_error_lottie.json2
-rw-r--r--packages/SystemUI/res/raw/fingerprint_dialogue_fingerprint_to_success_lottie.json2
-rw-r--r--packages/SystemUI/res/raw/fingerprint_dialogue_fingerprint_to_unlock_lottie.json2
-rw-r--r--packages/SystemUI/res/values-af/strings.xml45
-rw-r--r--packages/SystemUI/res/values-am/strings.xml47
-rw-r--r--packages/SystemUI/res/values-ar/strings.xml61
-rw-r--r--packages/SystemUI/res/values-as/strings.xml43
-rw-r--r--packages/SystemUI/res/values-az/strings.xml45
-rw-r--r--packages/SystemUI/res/values-b+sr+Latn/strings.xml28
-rw-r--r--packages/SystemUI/res/values-be/strings.xml46
-rw-r--r--packages/SystemUI/res/values-bg/strings.xml53
-rw-r--r--packages/SystemUI/res/values-bn/strings.xml45
-rw-r--r--packages/SystemUI/res/values-bs/strings.xml38
-rw-r--r--packages/SystemUI/res/values-ca/strings.xml45
-rw-r--r--packages/SystemUI/res/values-cs/strings.xml38
-rw-r--r--packages/SystemUI/res/values-da/strings.xml43
-rw-r--r--packages/SystemUI/res/values-de/strings.xml49
-rw-r--r--packages/SystemUI/res/values-el/strings.xml32
-rw-r--r--packages/SystemUI/res/values-en-rAU/strings.xml45
-rw-r--r--packages/SystemUI/res/values-en-rCA/strings.xml24
-rw-r--r--packages/SystemUI/res/values-en-rGB/strings.xml45
-rw-r--r--packages/SystemUI/res/values-en-rIN/strings.xml45
-rw-r--r--packages/SystemUI/res/values-es-rUS/strings.xml43
-rw-r--r--packages/SystemUI/res/values-es/strings.xml55
-rw-r--r--packages/SystemUI/res/values-et/strings.xml43
-rw-r--r--packages/SystemUI/res/values-eu/strings.xml45
-rw-r--r--packages/SystemUI/res/values-fa/strings.xml32
-rw-r--r--packages/SystemUI/res/values-fi/strings.xml45
-rw-r--r--packages/SystemUI/res/values-fr-rCA/strings.xml34
-rw-r--r--packages/SystemUI/res/values-fr/strings.xml32
-rw-r--r--packages/SystemUI/res/values-gl/strings.xml43
-rw-r--r--packages/SystemUI/res/values-gu/strings.xml49
-rw-r--r--packages/SystemUI/res/values-hi/strings.xml51
-rw-r--r--packages/SystemUI/res/values-hr/strings.xml28
-rw-r--r--packages/SystemUI/res/values-hu/strings.xml32
-rw-r--r--packages/SystemUI/res/values-hy/strings.xml48
-rw-r--r--packages/SystemUI/res/values-in/strings.xml47
-rw-r--r--packages/SystemUI/res/values-is/strings.xml43
-rw-r--r--packages/SystemUI/res/values-it/strings.xml45
-rw-r--r--packages/SystemUI/res/values-iw/strings.xml51
-rw-r--r--packages/SystemUI/res/values-ja/strings.xml30
-rw-r--r--packages/SystemUI/res/values-ka/strings.xml32
-rw-r--r--packages/SystemUI/res/values-kk/strings.xml49
-rw-r--r--packages/SystemUI/res/values-km/strings.xml43
-rw-r--r--packages/SystemUI/res/values-kn/strings.xml28
-rw-r--r--packages/SystemUI/res/values-ko/strings.xml45
-rw-r--r--packages/SystemUI/res/values-ky/strings.xml49
-rw-r--r--packages/SystemUI/res/values-ldrtl/dimens.xml2
-rw-r--r--packages/SystemUI/res/values-lo/strings.xml32
-rw-r--r--packages/SystemUI/res/values-lt/strings.xml24
-rw-r--r--packages/SystemUI/res/values-lv/strings.xml45
-rw-r--r--packages/SystemUI/res/values-mk/strings.xml51
-rw-r--r--packages/SystemUI/res/values-ml/strings.xml28
-rw-r--r--packages/SystemUI/res/values-mn/strings.xml45
-rw-r--r--packages/SystemUI/res/values-mr/strings.xml32
-rw-r--r--packages/SystemUI/res/values-ms/strings.xml28
-rw-r--r--packages/SystemUI/res/values-my/strings.xml48
-rw-r--r--packages/SystemUI/res/values-nb/strings.xml45
-rw-r--r--packages/SystemUI/res/values-ne/strings.xml49
-rw-r--r--packages/SystemUI/res/values-nl/strings.xml28
-rw-r--r--packages/SystemUI/res/values-or/strings.xml45
-rw-r--r--packages/SystemUI/res/values-pa/strings.xml28
-rw-r--r--packages/SystemUI/res/values-pl/strings.xml45
-rw-r--r--packages/SystemUI/res/values-pt-rBR/strings.xml43
-rw-r--r--packages/SystemUI/res/values-pt-rPT/strings.xml28
-rw-r--r--packages/SystemUI/res/values-pt/strings.xml43
-rw-r--r--packages/SystemUI/res/values-ro/strings.xml45
-rw-r--r--packages/SystemUI/res/values-ru/strings.xml47
-rw-r--r--packages/SystemUI/res/values-si/strings.xml45
-rw-r--r--packages/SystemUI/res/values-sk/strings.xml69
-rw-r--r--packages/SystemUI/res/values-sl/strings.xml26
-rw-r--r--packages/SystemUI/res/values-sq/strings.xml48
-rw-r--r--packages/SystemUI/res/values-sr/strings.xml28
-rw-r--r--packages/SystemUI/res/values-sv/strings.xml47
-rw-r--r--packages/SystemUI/res/values-sw/strings.xml47
-rw-r--r--packages/SystemUI/res/values-sw600dp/config.xml6
-rw-r--r--packages/SystemUI/res/values-sw600dp/dimens.xml2
-rw-r--r--packages/SystemUI/res/values-ta/strings.xml45
-rw-r--r--packages/SystemUI/res/values-te/strings.xml28
-rw-r--r--packages/SystemUI/res/values-th/strings.xml24
-rw-r--r--packages/SystemUI/res/values-tl/strings.xml32
-rw-r--r--packages/SystemUI/res/values-tr/strings.xml50
-rw-r--r--packages/SystemUI/res/values-uk/strings.xml53
-rw-r--r--packages/SystemUI/res/values-ur/strings.xml32
-rw-r--r--packages/SystemUI/res/values-uz/strings.xml32
-rw-r--r--packages/SystemUI/res/values-vi/strings.xml45
-rw-r--r--packages/SystemUI/res/values-xlarge-land/config.xml2
-rw-r--r--packages/SystemUI/res/values-zh-rCN/strings.xml32
-rw-r--r--packages/SystemUI/res/values-zh-rHK/strings.xml51
-rw-r--r--packages/SystemUI/res/values-zh-rTW/strings.xml47
-rw-r--r--packages/SystemUI/res/values-zu/strings.xml45
-rw-r--r--packages/SystemUI/res/values/colors.xml3
-rw-r--r--packages/SystemUI/res/values/config.xml6
-rw-r--r--packages/SystemUI/res/values/dimens.xml42
-rw-r--r--packages/SystemUI/res/values/ids.xml1
-rw-r--r--packages/SystemUI/res/values/strings.xml13
-rw-r--r--packages/SystemUI/res/values/styles.xml5
-rw-r--r--packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/Utils.kt26
-rw-r--r--packages/SystemUI/shared/src/com/android/systemui/shared/recents/ILauncherProxy.aidl4
-rw-r--r--packages/SystemUI/src/com/android/keyguard/ClockEventController.kt11
-rw-r--r--packages/SystemUI/src/com/android/keyguard/EmergencyButton.java20
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java8
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java31
-rw-r--r--packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java67
-rw-r--r--packages/SystemUI/src/com/android/keyguard/NumPadButton.java13
-rw-r--r--packages/SystemUI/src/com/android/keyguard/NumPadKey.java15
-rw-r--r--packages/SystemUI/src/com/android/keyguard/PinShapeAdapter.kt4
-rw-r--r--packages/SystemUI/src/com/android/keyguard/PinShapeHintingView.java37
-rw-r--r--packages/SystemUI/src/com/android/keyguard/PinShapeNonHintingView.java13
-rw-r--r--packages/SystemUI/src/com/android/systemui/BootCompleteCacheImpl.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/FontStyles.kt42
-rw-r--r--packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationAnimationController.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java50
-rw-r--r--packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationSettings.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java7
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/CredentialInteractor.kt5
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractor.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/CredentialPasswordViewBinder.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/PromptIconViewBinder.kt21
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModel.kt48
-rw-r--r--packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/AudioSharingDeviceItemActionInteractorImpl.kt23
-rw-r--r--packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsContent.kt40
-rw-r--r--packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsContentManager.kt442
-rw-r--r--packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsViewModel.kt28
-rw-r--r--packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogDelegate.kt442
-rw-r--r--packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogViewModel.kt147
-rw-r--r--packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/DeviceItemActionInteractor.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/bouncer/dagger/BouncerLoggerModule.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/BouncerMessageAuditLogger.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/bouncer/shared/constants/KeyguardBouncerConstants.kt83
-rw-r--r--packages/SystemUI/src/com/android/systemui/bouncer/ui/BouncerMessageView.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/brightness/ui/compose/BrightnessSlider.kt275
-rw-r--r--packages/SystemUI/src/com/android/systemui/brightness/ui/viewmodel/BrightnessSliderViewModel.kt61
-rw-r--r--packages/SystemUI/src/com/android/systemui/common/ui/view/TouchHandlingView.kt (renamed from packages/SystemUI/src/com/android/systemui/common/ui/view/LongPressHandlingView.kt)68
-rw-r--r--packages/SystemUI/src/com/android/systemui/common/ui/view/TouchHandlingViewInteractionHandler.kt (renamed from packages/SystemUI/src/com/android/systemui/common/ui/view/LongPressHandlingViewInteractionHandler.kt)52
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/dagger/CommunalModule.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/data/model/CommunalWidgetCategories.kt29
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalSceneRepository.kt44
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalSettingsRepository.kt30
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalInteractor.kt56
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalSceneInteractor.kt23
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/ui/binder/CommunalLockIconViewBinder.kt162
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/BaseCommunalViewModel.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalLockIconViewModel.kt148
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModel.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/util/WindowSizeUtils.kt45
-rw-r--r--packages/SystemUI/src/com/android/systemui/complication/ComplicationHostViewController.java16
-rw-r--r--packages/SystemUI/src/com/android/systemui/complication/ComplicationLayoutEngine.java85
-rw-r--r--packages/SystemUI/src/com/android/systemui/complication/DreamClockTimeComplication.java15
-rw-r--r--packages/SystemUI/src/com/android/systemui/complication/dagger/ComplicationHostViewModule.java58
-rw-r--r--packages/SystemUI/src/com/android/systemui/complication/dagger/DreamClockTimeComplicationComponent.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/controls/management/ControlsListingControllerImpl.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractor.kt32
-rw-r--r--packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractor.kt105
-rw-r--r--packages/SystemUI/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModel.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/dreams/ui/viewmodel/DreamViewModel.kt16
-rw-r--r--packages/SystemUI/src/com/android/systemui/flags/FlagDependencies.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/haptics/slider/SliderHapticFeedbackConfig.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/haptics/slider/SliderHapticFeedbackFilter.kt29
-rw-r--r--packages/SystemUI/src/com/android/systemui/haptics/slider/SliderHapticFeedbackProvider.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/data/repository/TutorialSchedulerRepository.kt9
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyboard/shortcut/ui/composable/ShortcutHelper.kt1112
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java19
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt30
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java266
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceLocalUserSelectionManager.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/data/repository/BiometricSettingsRepository.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardClockRepository.kt13
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardQuickAffordanceRepository.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt50
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepositoryModule.kt29
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt9
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractor.kt15
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardClockInteractor.kt12
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt13
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractor.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardServiceShowLockscreenInteractor.kt (renamed from packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardServiceLockNowInteractor.kt)50
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardShowWhileAwakeInteractor.kt (renamed from packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardLockWhileAwakeInteractor.kt)44
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardWakeDirectlyToGoneInteractor.kt13
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/LightRevealScrimInteractor.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/StatusBarDisableFlagsInteractor.kt36
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/shared/transition/KeyguardTransitionAnimationCallback.kt34
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/shared/transition/KeyguardTransitionAnimationCallbackDelegator.kt39
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/AlternateBouncerViewBinder.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/DeviceEntryIconViewBinder.kt15
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardJankBinder.kt96
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt54
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardTouchViewBinder.kt (renamed from packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardLongPressViewBinder.kt)18
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/view/DeviceEntryIconView.kt26
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/SplitShadeKeyguardBlueprint.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodNotificationIconsSection.kt34
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodPromotedNotificationSection.kt46
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultDeviceEntrySection.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSection.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerDependencies.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModel.kt20
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DozingToDreamingTransitionViewModel.kt42
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardJankViewModel.kt56
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt10
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModel.kt60
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModel.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGoneTransitionViewModel.kt10
-rw-r--r--packages/SystemUI/src/com/android/systemui/log/SessionTracker.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/log/TouchHandlingViewLogger.kt (renamed from packages/SystemUI/src/com/android/systemui/log/LongPressHandlingViewLogger.kt)10
-rw-r--r--packages/SystemUI/src/com/android/systemui/lowlightclock/AmbientLightModeMonitor.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/lowlightclock/dagger/LowLightModule.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImpl.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/domain/resume/MediaResumeListener.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/ui/animation/ColorSchemeTransition.kt92
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaController.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt15
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt56
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/ui/view/MediaViewHolder.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/dialog/MediaItem.java35
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java436
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java398
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/dialog/MediaSwitchingController.java51
-rw-r--r--packages/SystemUI/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionManagerRepository.kt110
-rw-r--r--packages/SystemUI/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionRepository.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerImpl.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/notetask/INoteTaskBubblesService.aidl2
-rw-r--r--packages/SystemUI/src/com/android/systemui/notetask/NoteTaskBubblesController.kt12
-rw-r--r--packages/SystemUI/src/com/android/systemui/notetask/NoteTaskController.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/notetask/OWNERS3
-rw-r--r--packages/SystemUI/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModel.kt17
-rw-r--r--packages/SystemUI/src/com/android/systemui/power/domain/interactor/PowerInteractor.kt28
-rw-r--r--packages/SystemUI/src/com/android/systemui/privacy/PrivacyConfig.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/process/ProcessWrapper.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSFooterViewController.java7
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java7
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java87
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java7
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt9
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModel.kt9
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/flags/QsDetailedView.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/flags/QsInCompose.kt9
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/panels/dagger/PanelsModule.kt9
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/panels/data/repository/PaginatedGridRepository.kt43
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/panels/data/repository/QSPreferencesRepository.kt24
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/panels/domain/interactor/IconTilesInteractor.kt1
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/panels/domain/interactor/QSColumnsInteractor.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/panels/domain/interactor/QSPreferencesInteractor.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/panels/domain/startable/QSPanelsCoreStartable.kt42
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/PaginatedGridLayout.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/TileDetails.kt22
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/TileGrid.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/infinitegrid/EditTile.kt59
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/infinitegrid/InfiniteGridLayout.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/selection/MutableSelectionState.kt13
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/MediaInRowInLandscapeViewModel.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/PaginatedGridViewModel.kt9
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/TileGridViewModel.kt52
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/TileViewModel.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/pipeline/dagger/BaseAutoAddableModule.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/pipeline/data/repository/TileSpecRepository.kt16
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/pipeline/data/repository/UserTileSpecRepository.kt13
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt12
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/DreamTile.java13
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTileNewImpl.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDetailsContent.kt56
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDetailsViewModel.kt62
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacy.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogManager.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/ModesDetailsContent.kt26
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/ModesDetailsViewModel.kt10
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/ScreenRecordDetailsContent.kt56
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/ScreenRecordDetailsViewModel.kt38
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractor.kt14
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt12
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModel.kt24
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneContentViewModel.kt10
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModel.kt35
-rw-r--r--packages/SystemUI/src/com/android/systemui/reardisplay/RearDisplayInnerDialogDelegate.kt111
-rw-r--r--packages/SystemUI/src/com/android/systemui/scene/KeyguardlessSceneContainerFrameworkModule.kt28
-rw-r--r--packages/SystemUI/src/com/android/systemui/scene/SceneContainerFrameworkModule.kt30
-rw-r--r--packages/SystemUI/src/com/android/systemui/scene/ShadelessSceneContainerFrameworkModule.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt15
-rw-r--r--packages/SystemUI/src/com/android/systemui/scene/shared/model/SceneContainerConfig.kt11
-rw-r--r--packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootViewBinder.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModel.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerHapticsViewModel.kt39
-rw-r--r--packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt18
-rw-r--r--packages/SystemUI/src/com/android/systemui/screenshot/ActionIntentExecutor.kt1
-rw-r--r--packages/SystemUI/src/com/android/systemui/screenshot/appclips/AppClipsService.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/settings/UserTrackerImpl.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessDialog.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java47
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/ShadeStateTraceLogger.kt15
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/ShadeTraceLogger.kt5
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImpl.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractor.kt17
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeExpandedStateInteractor.kt32
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractor.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorEmptyImpl.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImpl.kt35
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorSceneContainerImpl.kt62
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeModeInteractor.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/shared/flag/DualShade.kt56
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/transition/ScrimShadeTransitionController.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModel.kt57
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModel.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModel.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java34
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeKeyguardTransitionController.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeQsTransitionController.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeScrimTransitionController.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java57
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/RemoteInputNotificationRebuilder.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/SplitShadeLockScreenOverScroller.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java63
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModel.kt32
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndCastScreenToOtherDeviceDialogDelegate.kt10
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndGenericCastToOtherDeviceDialogDelegate.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModel.kt36
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/mediaprojection/domain/interactor/MediaProjectionChipInteractor.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/mediaprojection/domain/model/MediaProjectionStopDialogModel.kt49
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/notification/domain/interactor/SingleNotificationChipInteractor.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/notification/domain/model/NotificationChipModel.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModel.kt54
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/screenrecord/ui/view/EndScreenRecordingDialogDelegate.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModel.kt20
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndGenericShareToAppDialogDelegate.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndShareScreenToAppDialogDelegate.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModel.kt123
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/binder/OngoingActivityChipBinder.kt80
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/ChipContent.kt171
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/ChipText.kt114
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/OngoingActivityChip.kt69
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/OngoingActivityChips.kt11
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/MultipleOngoingActivityChipsModel.kt10
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/OngoingActivityChipModel.kt51
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/ChipTransitionHelper.kt13
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModel.kt210
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarStarter.kt10
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/dagger/CentralSurfacesDependenciesModule.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarModule.kt15
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/layout/StatusBarContentInsetsProvider.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/ConversationNotifications.kt41
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/OWNERS1
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationListInteractor.kt17
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/domain/interactor/SeenNotificationsInteractor.kt22
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/emptyshade/ui/view/EmptyShadeView.java15
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/emptyshade/ui/viewmodel/EmptyShadeViewModel.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/AvalancheController.kt33
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerLogger.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/AvalancheProvider.kt1
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/CommonVisualInterruptionSuppressors.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionLogger.kt9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionProviderImpl.kt1
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/AODPromotedNotification.kt310
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractor.kt204
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationLogger.kt42
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/shared/model/PromotedNotificationContentModel.kt32
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/ui/viewmodel/AODPromotedNotificationViewModel.kt82
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/ui/viewmodel/PromotedNotificationViewModel.kt58
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/BundleNotificationInfo.java124
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java68
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java53
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/HybridConversationNotificationView.java7
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/HybridNotificationView.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java16
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java25
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java78
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java90
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationMenuRow.java17
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImpl.kt33
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowLogger.kt15
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/PromotedNotificationInfo.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/RowImageInflater.kt216
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/SingleLineViewInflater.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/IconData.kt145
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/ImageModel.kt42
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/ImageModelProvider.kt76
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/SkeletonImageTransform.kt45
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/SingleLineViewModel.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/shared/ActiveNotificationModel.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImpl.kt68
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticRowListener.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationTargetsHelper.kt18
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationStackAppearanceInteractor.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/view/NotificationStatsLoggerImpl.kt104
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/SharedNotificationContainerBinder.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationLockscreenScrimViewModel.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationScrollViewModel.kt9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModel.kt10
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt12
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarterImpl.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarterInternal.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarterInternalImpl.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java25
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImpl.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractor.kt1
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/shared/model/OngoingCallModel.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/binder/HomeStatusBarViewBinder.kt97
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/composable/StatusBarRoot.kt61
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModel.kt63
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/InternetTileViewModel.kt30
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputQuickSettingsDisabler.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyStateInflater.kt28
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/ui/dialog/ModesDialogDelegate.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModel.kt10
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/CsdWarningDialog.java13
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java18
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dagger/VolumeModule.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/VolumeDialogPlugin.kt36
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/dagger/VolumeDialogPluginComponent.kt5
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/dagger/factory/VolumeDialogPluginComponentFactory.kt26
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/dagger/module/VolumeDialogPluginModule.kt9
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogCsdWarningInteractor.kt55
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogStateInteractor.kt14
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/settings/ui/binder/VolumeDialogSettingsButtonViewBinder.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/shared/model/CsdWarningConfigModel.kt (renamed from packages/CrashRecovery/framework/java/android/service/watchdog/PackageConfig.aidl)11
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/shared/model/VolumeDialogCsdWarningModel.kt (renamed from packages/SystemUI/src/com/android/systemui/qs/panels/domain/interactor/PaginatedGridInteractor.kt)19
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/shared/model/VolumeDialogStateModel.kt1
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt136
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSlidersViewBinder.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/ui/binder/VolumeDialogViewBinder.kt25
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogPluginViewModel.kt9
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogViewModel.kt22
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/haptics/ui/VolumeHapticsConfigsProvider.kt5
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteria.kt43
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModel.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModel.kt15
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/CastVolumeSliderViewModel.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/SliderState.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/wallpapers/data/repository/WallpaperFocalAreaRepository.kt92
-rw-r--r--packages/SystemUI/src/com/android/systemui/wallpapers/data/repository/WallpaperRepository.kt109
-rw-r--r--packages/SystemUI/src/com/android/systemui/wallpapers/domain/interactor/WallpaperFocalAreaInteractor.kt (renamed from packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/WallpaperFocalAreaInteractor.kt)98
-rw-r--r--packages/SystemUI/src/com/android/systemui/wallpapers/ui/viewmodel/WallpaperFocalAreaViewModel.kt37
-rw-r--r--packages/SystemUI/src/com/android/systemui/window/domain/interactor/WindowRootViewBlurInteractor.kt56
-rw-r--r--packages/SystemUI/src/com/android/systemui/window/ui/WindowRootViewBinder.kt63
-rw-r--r--packages/SystemUI/src/com/android/systemui/window/ui/viewmodel/WindowRootViewModel.kt84
-rw-r--r--packages/SystemUI/tests/goldens/brightnessSlider_iconAlphaChanges.json168
-rw-r--r--packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt1
-rw-r--r--packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java30
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationAnimationControllerTest.java32
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java79
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/accessibility/data/repository/AccessibilityQsShortcutsRepositoryImplForDeviceTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/animation/ActivityTransitionAnimatorTest.kt269
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/animation/FontInterpolatorTest.kt25
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerOverlayTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingButtonViewModelTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingDeviceItemActionInteractorTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsContentManagerTest.kt461
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogDelegateTest.kt353
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogViewModelTest.kt88
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/brightness/ui/compose/BrightnessSliderMotionTest.kt136
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/graphics/ImageLoaderContentProviderTest.kt1
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/graphics/ImageLoaderTest.kt1
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/keyguard/CustomizationProviderTest.kt5
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java167
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTestKt.kt177
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepositoryTest.kt19
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorParameterizedTest.kt5
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorSceneContainerTest.kt5
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultDeviceEntrySectionTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardQuickAffordancesCombinedViewModelTest.kt5
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/lifecycle/RepeatWhenAttachedTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/lowlightclock/AmbientLightModeMonitorTest.kt7
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImplTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataFilterImplTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessorTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaCarouselControllerTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaSwitchingControllerTest.java61
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskControllerTest.kt16
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskInitializerTest.kt3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/notetask/OWNERS3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/notetask/quickaffordance/NoteTaskQuickAffordanceConfigTest.kt3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/external/TileServiceRequestControllerTestComposeOff.kt5
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/panels/ui/compose/DragAndDropTest.kt1
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/panels/ui/compose/EditModeTest.kt199
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/panels/ui/compose/ResizingTest.kt1
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BluetoothTileTest.kt3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DreamTileTest.java26
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDetailsContentManagerTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacyTest.java8
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/reardisplay/RearDisplayCoreStartableTest.kt1
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/reardisplay/RearDisplayInnerDialogDelegateTest.kt68
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/recents/LauncherProxyServiceTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/settings/UserTrackerImplTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/shade/GlanceableHubContainerControllerTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextViewTest.kt3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/SplitShadeLockScreenOverScrollerTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/events/SystemStatusAnimationSchedulerImplTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/ViewConfigCoordinatorTest.kt32
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/icon/IconManagerTest.kt3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionProviderImplTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java642
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerWithScenesTest.kt5
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java58
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModelImplTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/model/SystemUiCarrierConfigTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/CarrierConfigRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileRepositorySwitcherTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/FullMobileConnectionRepositoryTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionTelephonySmokeTests.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/view/ModernStatusBarMobileViewTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/satellite/data/prod/DeviceBasedSatelliteRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/data/repository/ConnectivityRepositoryImplTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/stylus/OWNERS3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java4
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java199
-rw-r--r--packages/SystemUI/tests/utils/src/android/view/WindowManagerKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/brightness/ui/viewmodel/BrightnessSliderViewModelKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/communal/data/repository/FakeCommunalSceneRepository.kt7
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModelKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/dreams/ui/viewmodel/DreamViewModelKosmos.kt47
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/KeyguardDisplayManagerKosmos.kt46
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/quickaffordance/LocalUserSelectionManagerKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardClockRepository.kt8
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardRepository.kt30
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryKosmos.kt3
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepositoryKosmos.kt8
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractorKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractorKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardClockInteractorKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorFactory.kt5
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardServiceShowLockscreenInteractor.kt (renamed from packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardServiceLockNowInteractor.kt)4
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardShowWhileAwakeInteractorKosmos.kt (renamed from packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardLockWhileAwakeInteractorKosmos.kt)6
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardWakeDirectlyToGoneInteractorKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/LightRevealScrimInteractorKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/shared/transition/FakeKeyguardTransitionAnimationCallback.kt55
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/shared/transition/KeyguardTransitionAnimationCallbackKosmos.kt32
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/DozingToDreamingTransitionViewModelKosmos.kt25
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelKosmos.kt3
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelKosmos.kt37
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModelKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/kosmos/KosmosJavaAdapter.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/data/repository/FakeMediaProjectionRepository.kt11
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/taskswitcher/FakeMediaProjectionManager.kt19
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/plugins/statusbar/StatusBarStateControllerKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/process/ProcessKosmos.kt5
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/process/ProcessWrapperFake.kt3
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/qs/FakeTileDetailsContent.kt31
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/qs/FakeTileDetailsViewModel.kt13
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModelKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/domain/interactor/QSColumnsInteractorKosmos.kt8
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/ui/viewmodel/PaginatedGridViewModelKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/ui/viewmodel/TileGridViewModelKosmos.kt11
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/qs/pipeline/data/repository/FakeTileSpecRepository.kt7
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractorKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModelKosmos.kt8
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModelKosmos.kt3
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneKosmos.kt11
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/scene/domain/startable/SceneContainerStartableKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/shade/data/repository/ShadeDisplaysRepositoryKosmos.kt1
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorKosmos.kt1
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractorKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/interactor/ShadeModeInteractorKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelKosmos.kt12
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModelKosmos.kt4
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModelKosmos.kt4
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModelKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModelKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModelKosmos.kt4
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/core/StatusBarOrchestratorKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/data/model/ActiveNotificationModelBuilder.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationListInteractorKosmos.kt7
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/promoted/FakePromotedNotificationContentExtractor.kt6
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorKosmos.kt7
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowBuilder.kt3
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/shared/PromotedNotificationContentExtractorKosmos.kt (renamed from packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/domain/interactor/PaginatedGridInteractorKosmos.kt)9
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationStackAppearanceInteractorKosmos.kt4
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/view/NotificationStatsLoggerKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationScrollViewModelKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModelKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ongoingcall/shared/model/OngoingCallModelBuilder.kt11
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModelKosmos.kt8
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/policy/UserSwitcherControllerKosmos.kt35
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ringer/VolumeDialogRingerViewBinderKosmos.kt5
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/settings/ui/binder/VolumeDialogSettingsButtonViewBinderKosmos.kt8
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSlidersViewBinderKosmos.kt5
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/mediaoutput/MediaOutputModuleKosmos.kt11
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/data/repository/FakeWallpaperFocalAreaRepository.kt62
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/data/repository/FakeWallpaperRepository.kt (renamed from packages/SystemUI/multivalentTests/src/com/android/systemui/wallpapers/data/repository/FakeWallpaperRepository.kt)22
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/data/repository/WallpaperFocalAreaRepositoryKosmos.kt23
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/data/repository/WallpaperRepositoryKosmos.kt21
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/domain/interactor/WallpaperFocalAreaInteractor.kt (renamed from packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/WallpaperFocalAreaInteractorKosmos.kt)8
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/ui/viewmodel/WallpaperFocalAreaViewModel.kt (renamed from packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/data/repository/PaginatedGridRepositoryKosmos.kt)12
-rw-r--r--packages/WallpaperBackup/AndroidManifest.xml1
-rw-r--r--ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodRuntimeEnvironmentController.java35
-rw-r--r--ravenwood/texts/ravenwood-annotation-allowed-classes.txt4
-rw-r--r--services/accessibility/java/com/android/server/accessibility/HearingDevicePhoneCallNotificationController.java4
-rw-r--r--services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickController.java28
-rw-r--r--services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickTypePanel.java163
-rw-r--r--services/appfunctions/java/com/android/server/appfunctions/CallerValidator.java4
-rw-r--r--services/appfunctions/java/com/android/server/appfunctions/CallerValidatorImpl.java28
-rw-r--r--services/appfunctions/java/com/android/server/appfunctions/MetadataSyncAdapter.java3
-rw-r--r--services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java20
-rw-r--r--services/art-profile3430
-rw-r--r--services/art-wear-profile34696
-rw-r--r--services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java31
-rw-r--r--services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java5
-rw-r--r--services/companion/java/com/android/server/companion/association/AssociationRequestsProcessor.java41
-rw-r--r--services/companion/java/com/android/server/companion/utils/MetricUtils.java6
-rw-r--r--services/companion/java/com/android/server/companion/utils/PermissionsUtils.java23
-rw-r--r--services/companion/java/com/android/server/companion/utils/RolesUtils.java18
-rw-r--r--services/contextualsearch/java/com/android/server/contextualsearch/ContextualSearchManagerService.java38
-rw-r--r--services/core/Android.bp2
-rw-r--r--services/core/java/com/android/server/BootReceiver.java7
-rw-r--r--services/core/java/com/android/server/OWNERS1
-rw-r--r--services/core/java/com/android/server/StorageManagerService.java31
-rw-r--r--services/core/java/com/android/server/TradeInModeService.java130
-rw-r--r--services/core/java/com/android/server/UiModeManagerService.java131
-rw-r--r--services/core/java/com/android/server/VpnManagerService.java9
-rw-r--r--services/core/java/com/android/server/Watchdog.java3
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java24
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerShellCommand.java2
-rw-r--r--services/core/java/com/android/server/am/AppBatteryTracker.java12
-rw-r--r--services/core/java/com/android/server/am/BatteryStatsService.java2
-rw-r--r--services/core/java/com/android/server/am/OomAdjuster.java25
-rw-r--r--services/core/java/com/android/server/am/ProcessList.java8
-rw-r--r--services/core/java/com/android/server/am/SettingsToPropertiesMapper.java3
-rw-r--r--services/core/java/com/android/server/am/UserController.java38
-rw-r--r--services/core/java/com/android/server/appop/AppOpsService.java51
-rw-r--r--services/core/java/com/android/server/appop/DiscreteOpsRegistry.java6
-rw-r--r--services/core/java/com/android/server/appop/HistoricalRegistry.java2
-rw-r--r--services/core/java/com/android/server/audio/AudioManagerShellCommand.java18
-rw-r--r--services/core/java/com/android/server/audio/AudioPolicyFacade.java1
-rw-r--r--services/core/java/com/android/server/audio/AudioService.java225
-rw-r--r--services/core/java/com/android/server/audio/DefaultAudioPolicyFacade.java10
-rw-r--r--services/core/java/com/android/server/audio/PlaybackActivityMonitor.java92
-rw-r--r--services/core/java/com/android/server/biometrics/PreAuthInfo.java1
-rw-r--r--services/core/java/com/android/server/display/DisplayManagerService.java11
-rw-r--r--services/core/java/com/android/server/display/DisplayTopologyCoordinator.java53
-rw-r--r--services/core/java/com/android/server/display/color/ColorDisplayService.java28
-rw-r--r--services/core/java/com/android/server/display/feature/DisplayManagerFlags.java4
-rw-r--r--services/core/java/com/android/server/display/feature/display_flags.aconfig8
-rw-r--r--services/core/java/com/android/server/dreams/DreamManagerService.java52
-rw-r--r--services/core/java/com/android/server/input/KeyGestureController.java2
-rw-r--r--services/core/java/com/android/server/inputmethod/ImeProtoLogGroup.java82
-rw-r--r--services/core/java/com/android/server/inputmethod/InputMethodManagerService.java253
-rw-r--r--services/core/java/com/android/server/inputmethod/LocaleUtils.java28
-rw-r--r--services/core/java/com/android/server/location/contexthub/ContextHubEndpointManager.java42
-rw-r--r--services/core/java/com/android/server/logcat/OWNERS1
-rw-r--r--services/core/java/com/android/server/media/MediaSessionRecord.java25
-rw-r--r--services/core/java/com/android/server/media/MediaSessionService.java57
-rw-r--r--services/core/java/com/android/server/media/SystemMediaRoute2Provider2.java149
-rw-r--r--services/core/java/com/android/server/media/quality/MediaQualityService.java1628
-rw-r--r--services/core/java/com/android/server/media/quality/MediaQualityUtils.java1577
-rw-r--r--services/core/java/com/android/server/memory/OWNERS3
-rw-r--r--services/core/java/com/android/server/memory/ZramMaintenance.java (renamed from services/core/java/com/android/server/ZramMaintenance.java)102
-rw-r--r--services/core/java/com/android/server/notification/GroupHelper.java101
-rw-r--r--services/core/java/com/android/server/notification/NotificationManagerService.java199
-rw-r--r--services/core/java/com/android/server/notification/NotificationRecord.java10
-rw-r--r--services/core/java/com/android/server/notification/OWNERS3
-rw-r--r--services/core/java/com/android/server/notification/PreferencesHelper.java98
-rw-r--r--services/core/java/com/android/server/notification/RankingConfig.java2
-rw-r--r--services/core/java/com/android/server/om/OverlayManagerService.java156
-rw-r--r--services/core/java/com/android/server/om/OverlayManagerServiceImpl.java11
-rw-r--r--services/core/java/com/android/server/om/OverlayManagerSettings.java26
-rw-r--r--services/core/java/com/android/server/om/OverlayManagerShellCommand.java22
-rw-r--r--services/core/java/com/android/server/pm/DexOptHelper.java177
-rw-r--r--services/core/java/com/android/server/pm/InstallPackageHelper.java25
-rw-r--r--services/core/java/com/android/server/pm/LauncherAppsService.java40
-rw-r--r--services/core/java/com/android/server/pm/PackageInstallerSession.java41
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java2
-rw-r--r--services/core/java/com/android/server/pm/UserManagerInternal.java18
-rw-r--r--services/core/java/com/android/server/pm/UserManagerService.java120
-rw-r--r--services/core/java/com/android/server/pm/UserRestrictionsUtils.java3
-rw-r--r--services/core/java/com/android/server/pm/parsing/pkg/AndroidPackageUtils.java5
-rw-r--r--services/core/java/com/android/server/pm/permission/PermissionManagerService.java3
-rw-r--r--services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java3
-rw-r--r--services/core/java/com/android/server/pm/permission/PermissionManagerServiceInterface.java2
-rw-r--r--services/core/java/com/android/server/pm/permission/PermissionManagerServiceLoggingDecorator.java8
-rw-r--r--services/core/java/com/android/server/pm/permission/PermissionManagerServiceTestingShim.java6
-rw-r--r--services/core/java/com/android/server/pm/permission/PermissionManagerServiceTracingDecorator.java6
-rw-r--r--services/core/java/com/android/server/policy/PhoneWindowManager.java57
-rw-r--r--services/core/java/com/android/server/power/PowerManagerService.java17
-rw-r--r--services/core/java/com/android/server/power/ShutdownCheckPoints.java11
-rw-r--r--services/core/java/com/android/server/power/feature/PowerManagerFlags.java12
-rw-r--r--services/core/java/com/android/server/power/feature/power_flags.aconfig11
-rw-r--r--services/core/java/com/android/server/power/stats/BatteryHistoryDirectory.java573
-rw-r--r--services/core/java/com/android/server/power/stats/BatteryStatsImpl.java35
-rw-r--r--services/core/java/com/android/server/power/stats/OWNERS3
-rw-r--r--services/core/java/com/android/server/power/stats/WakelockStatsFrameworkEvents.java12
-rw-r--r--services/core/java/com/android/server/power/stats/flags.aconfig10
-rw-r--r--services/core/java/com/android/server/security/advancedprotection/AdvancedProtectionService.java8
-rw-r--r--services/core/java/com/android/server/security/advancedprotection/features/UsbDataAdvancedProtectionHook.java312
-rw-r--r--services/core/java/com/android/server/sensorprivacy/SensorPrivacyService.java8
-rw-r--r--services/core/java/com/android/server/slice/SlicePermissionManager.java22
-rw-r--r--services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java11
-rw-r--r--services/core/java/com/android/server/statusbar/StatusBarManagerService.java24
-rw-r--r--services/core/java/com/android/server/vibrator/VibratorManagerService.java6
-rw-r--r--services/core/java/com/android/server/wallpaper/WallpaperManagerInternal.java2
-rw-r--r--services/core/java/com/android/server/wallpaper/WallpaperManagerService.java128
-rw-r--r--services/core/java/com/android/server/wm/ActivityMetricsLogger.java5
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java31
-rw-r--r--services/core/java/com/android/server/wm/ActivityStarter.java8
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskSupervisor.java87
-rw-r--r--services/core/java/com/android/server/wm/AppCompatConfiguration.java4
-rw-r--r--services/core/java/com/android/server/wm/AppCompatReachabilityPolicy.java15
-rw-r--r--services/core/java/com/android/server/wm/AppCompatSizeCompatModePolicy.java9
-rw-r--r--services/core/java/com/android/server/wm/AppTransitionController.java12
-rw-r--r--services/core/java/com/android/server/wm/DesktopModeHelper.java10
-rw-r--r--services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java6
-rw-r--r--services/core/java/com/android/server/wm/DeviceStateAutoRotateSettingController.java77
-rw-r--r--services/core/java/com/android/server/wm/DeviceStateAutoRotateSettingIssueLogger.java94
-rw-r--r--services/core/java/com/android/server/wm/DisplayAreaOrganizerController.java4
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java31
-rw-r--r--services/core/java/com/android/server/wm/DisplayPolicy.java25
-rw-r--r--services/core/java/com/android/server/wm/DisplayRotation.java14
-rw-r--r--services/core/java/com/android/server/wm/DisplayWindowSettings.java2
-rw-r--r--services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java16
-rw-r--r--services/core/java/com/android/server/wm/LaunchParamsController.java16
-rw-r--r--services/core/java/com/android/server/wm/RootWindowContainer.java21
-rw-r--r--services/core/java/com/android/server/wm/Session.java3
-rw-r--r--services/core/java/com/android/server/wm/SurfaceAnimator.java28
-rw-r--r--services/core/java/com/android/server/wm/SurfaceFreezer.java303
-rw-r--r--services/core/java/com/android/server/wm/Task.java81
-rw-r--r--services/core/java/com/android/server/wm/TaskDisplayArea.java42
-rw-r--r--services/core/java/com/android/server/wm/TaskFragment.java55
-rw-r--r--services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java4
-rw-r--r--services/core/java/com/android/server/wm/Transition.java2
-rw-r--r--services/core/java/com/android/server/wm/WindowContainer.java102
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerInternal.java13
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java116
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerShellCommand.java18
-rw-r--r--services/core/java/com/android/server/wm/WindowOrganizerController.java27
-rw-r--r--services/core/java/com/android/server/wm/WindowState.java7
-rw-r--r--services/core/jni/com_android_server_display_DisplayControl.cpp6
-rw-r--r--services/core/jni/com_android_server_input_InputManagerService.cpp55
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java32
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java34
-rw-r--r--services/permission/java/com/android/server/permission/access/AccessPolicy.kt2
-rw-r--r--services/permission/java/com/android/server/permission/access/appop/AppIdAppOpUpgrade.kt16
-rw-r--r--services/permission/java/com/android/server/permission/access/permission/PermissionService.kt16
-rw-r--r--services/supervision/java/com/android/server/supervision/SupervisionService.java17
-rw-r--r--services/tests/InputMethodSystemServerTests/Android.bp22
-rw-r--r--services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java1093
-rw-r--r--services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/SimpleInputMethodService.java27
-rw-r--r--services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/SimpleKeyboard.java106
-rw-r--r--services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/ims/InputMethodServiceWrapper.java41
-rw-r--r--services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/testing/TestActivity.java55
-rw-r--r--services/tests/displayservicetests/src/com/android/server/display/DisplayManagerServiceTest.java12
-rw-r--r--services/tests/displayservicetests/src/com/android/server/display/DisplayTopologyCoordinatorTest.kt323
-rw-r--r--services/tests/displayservicetests/src/com/android/server/display/color/ColorDisplayServiceTest.java61
-rw-r--r--services/tests/dreamservicetests/src/com/android/server/dreams/DreamManagerServiceMockingTest.java118
-rw-r--r--services/tests/dreamservicetests/src/com/android/server/dreams/DreamManagerServiceTest.java203
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/job/controllers/JobStatusTest.java39
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java91
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java169
-rw-r--r--services/tests/ondeviceintelligencetests/OWNERS1
-rw-r--r--services/tests/powerservicetests/src/com/android/server/power/PowerManagerServiceTest.java41
-rw-r--r--services/tests/powerstatstests/res/raw/history_01bin0 -> 131116 bytes
-rw-r--r--services/tests/powerstatstests/res/raw/history_02bin0 -> 131432 bytes
-rw-r--r--services/tests/powerstatstests/res/raw/history_03bin0 -> 132864 bytes
-rw-r--r--services/tests/powerstatstests/res/raw/history_04bin0 -> 131204 bytes
-rw-r--r--services/tests/powerstatstests/res/raw/history_05bin0 -> 131112 bytes
-rw-r--r--services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryCompressionPerfTest.java280
-rw-r--r--services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryIteratorTest.java83
-rw-r--r--services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryTest.java147
-rw-r--r--services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsProviderTest.java12
-rw-r--r--services/tests/powerstatstests/src/com/android/server/power/stats/MockBatteryStatsImpl.java21
-rw-r--r--services/tests/powerstatstests/src/com/android/server/power/stats/WakelockStatsFrameworkEventsTest.java18
-rw-r--r--services/tests/powerstatstests/src/com/android/server/power/stats/processor/PowerStatsAggregatorTest.java2
-rw-r--r--services/tests/powerstatstests/src/com/android/server/power/stats/processor/PowerStatsExporterTest.java5
-rw-r--r--services/tests/powerstatstests/src/com/android/server/power/stats/processor/WakelockPowerStatsProcessorTest.java2
-rw-r--r--services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickControllerTest.java121
-rw-r--r--services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickTypePanelTest.java119
-rw-r--r--services/tests/servicestests/src/com/android/server/am/UserControllerTest.java19
-rw-r--r--services/tests/servicestests/src/com/android/server/audio/AudioDeviceVolumeManagerTest.java66
-rw-r--r--services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java3
-rw-r--r--services/tests/servicestests/src/com/android/server/audio/VolumeHelperTest.java116
-rw-r--r--services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java223
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java6
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java6
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java6
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java6
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromPlaybackTest.java6
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromTvTest.java6
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTest.java6
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTvTest.java6
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java6
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java7
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java7
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java8
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecMessageValidatorTest.java7
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecNetworkTest.java6
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecPowerStatusControllerTest.java6
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java5
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTvTest.java6
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiEarcLocalDeviceTxTest.java5
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/PowerStatusMonitorActionTest.java6
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/RequestSadActionTest.java7
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/ResendCecCommandActionPlaybackTest.java7
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/ResendCecCommandActionTvTest.java7
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/RoutingControlActionTest.java7
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/SetAudioVolumeLevelDiscoveryActionTest.java5
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/SystemAudioAutoInitiationActionTest.java6
-rw-r--r--services/tests/servicestests/src/com/android/server/location/contexthub/ContextHubEndpointTest.java149
-rw-r--r--services/tests/servicestests/src/com/android/server/media/projection/OWNERS1
-rw-r--r--services/tests/servicestests/src/com/android/server/memory/OWNERS3
-rw-r--r--services/tests/servicestests/src/com/android/server/memory/ZramMaintenanceTest.kt154
-rw-r--r--services/tests/servicestests/src/com/android/server/pm/LauncherAppsServiceTest.kt123
-rw-r--r--services/tests/servicestests/src/com/android/server/supervision/SupervisionServiceTest.kt14
-rw-r--r--services/tests/uiservicestests/src/com/android/server/notification/GroupHelperTest.java379
-rw-r--r--services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java35
-rw-r--r--services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java162
-rw-r--r--services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java249
-rw-r--r--services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java6
-rw-r--r--services/tests/vibrator/src/com/android/server/vibrator/VibratorManagerServiceTest.java6
-rw-r--r--services/tests/wmtests/src/com/android/server/policy/PhoneWindowManagerTests.java202
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/ActivityTaskSupervisorTests.java98
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/AppChangeTransitionTests.java175
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/BackgroundActivityStartControllerExemptionTests.java1
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java68
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/DeviceStateAutoRotateSettingControllerTests.java118
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/DeviceStateAutoRotateSettingIssueLoggerTests.java146
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/DisplayAreaOrganizerTest.java6
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/LaunchParamsControllerTests.java14
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java39
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/SplashScreenExceptionListTest.java3
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java10
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java111
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java166
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/WindowContainerTransactionTests.java35
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java82
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java17
-rw-r--r--services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java3
-rw-r--r--telecomm/java/com/android/internal/telecom/ITelecomService.aidl5
-rw-r--r--telephony/java/android/telephony/SubscriptionInfo.java8
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java2
-rw-r--r--tests/FlickerTests/src/com/android/server/wm/flicker/BaseTest.kt10
-rw-r--r--tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/DesktopModeAppHelper.kt6
-rw-r--r--tests/Input/src/com/android/server/input/KeyGestureControllerTests.kt4
-rw-r--r--tests/Input/src/com/android/test/input/UinputRecordingIntegrationTests.kt94
-rw-r--r--tests/SharedLibrary/lib/Android.bp1
-rw-r--r--tests/SharedLibrary/lib/proguard.proguard4
-rw-r--r--tests/utils/testutils/java/android/os/test/TestLooper.java170
-rwxr-xr-xtools/aosp/upload_aosp.sh116
-rwxr-xr-xtools/localedata/extract_icu_data.py9
2430 files changed, 67937 insertions, 50210 deletions
diff --git a/AconfigFlags.bp b/AconfigFlags.bp
index 834398e5c2c2..071cc6555be7 100644
--- a/AconfigFlags.bp
+++ b/AconfigFlags.bp
@@ -848,6 +848,7 @@ java_aconfig_library {
"//apex_available:platform",
"com.android.nfcservices",
"com.android.permission",
+ "com.android.extservices",
],
}
@@ -1573,6 +1574,13 @@ java_aconfig_library {
defaults: ["framework-minus-apex-aconfig-java-defaults"],
}
+java_aconfig_library {
+ name: "power_flags_lib_host",
+ aconfig_declarations: "power_flags",
+ host_supported: true,
+ defaults: ["framework-minus-apex-aconfig-java-defaults"],
+}
+
// Content
aconfig_declarations {
name: "android.content.flags-aconfig",
diff --git a/apct-tests/perftests/autofill/src/android/view/autofill/AutofillTestWatcher.java b/apct-tests/perftests/autofill/src/android/view/autofill/AutofillTestWatcher.java
index f65067fe2d92..afdc36190066 100644
--- a/apct-tests/perftests/autofill/src/android/view/autofill/AutofillTestWatcher.java
+++ b/apct-tests/perftests/autofill/src/android/view/autofill/AutofillTestWatcher.java
@@ -174,7 +174,9 @@ final class AutofillTestWatcher extends TestWatcher {
public static void onConnected() {
Log.i(TAG, "onConnected: sServiceWatcher=" + sServiceWatcher);
-
+ if (sServiceWatcher == null) {
+ sServiceWatcher = new ServiceWatcher();
+ }
sServiceWatcher.mConnected.countDown();
}
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java
index 4b9d7364e27b..aaf69864fe97 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java
@@ -673,10 +673,16 @@ public final class JobStatus {
this.job = job;
- final String bnNamespace = namespace == null ? "" : "@" + namespace + "@";
- this.batteryName = this.sourceTag != null
- ? bnNamespace + this.sourceTag + ":" + job.getService().getPackageName()
- : bnNamespace + job.getService().flattenToShortString();
+ StringBuilder batteryName = new StringBuilder();
+ if (namespace != null) {
+ batteryName.append("@").append(namespace).append("@");
+ }
+ if (sourceTag != null) {
+ batteryName.append(sourceTag).append(":").append(job.getService().getPackageName());
+ } else {
+ batteryName.append(job.getService().flattenToShortString());
+ }
+ this.batteryName = batteryName.toString();
final String componentPackage = job.getService().getPackageName();
mIsProxyJob = !this.sourcePackageName.equals(componentPackage);
diff --git a/boot/boot-image-profile-extra.txt b/boot/boot-image-profile-extra.txt
index fd51f9cbcee1..ced0d176f174 100644
--- a/boot/boot-image-profile-extra.txt
+++ b/boot/boot-image-profile-extra.txt
@@ -45,3 +45,24 @@ HSPLandroid/os/MessageQueue$OnFileDescriptorEventListener;->*
HSPLandroid/os/MessageQueue$StackNodeType;->*
HSPLandroid/os/MessageQueue$StateNode;->*
HSPLandroid/os/MessageQueue$TimedParkStateNode;->*
+HSPLandroid/os/PerfettoTrace$Category;->*
+HSPLandroid/os/PerfettoTrace;->*
+HSPLandroid/os/PerfettoTrackEventExtra;->*
+HSPLandroid/os/PerfettoTrackEventExtra$BuilderImpl;->*
+HSPLandroid/os/PerfettoTrackEventExtra$NoOpBuilder;->*
+HSPLandroid/os/PerfettoTrackEventExtra$ArgBool;->*
+HSPLandroid/os/PerfettoTrackEventExtra$ArgInt64;->*
+HSPLandroid/os/PerfettoTrackEventExtra$ArgDouble;->*
+HSPLandroid/os/PerfettoTrackEventExtra$ArgString;->*
+HSPLandroid/os/PerfettoTrackEventExtra$CounterInt64;->*
+HSPLandroid/os/PerfettoTrackEventExtra$CounterDouble;->*
+HSPLandroid/os/PerfettoTrackEventExtra$CounterTrack;->*
+HSPLandroid/os/PerfettoTrackEventExtra$NamedTrack;->*
+HSPLandroid/os/PerfettoTrackEventExtra$Flow;->*
+HSPLandroid/os/PerfettoTrackEventExtra$Proto;->*
+HSPLandroid/os/PerfettoTrackEventExtra$FieldInt64;->*
+HSPLandroid/os/PerfettoTrackEventExtra$FieldDouble;->*
+HSPLandroid/os/PerfettoTrackEventExtra$FieldString;->*
+HSPLandroid/os/PerfettoTrackEventExtra$FieldNested;->*
+HSPLandroid/os/PerfettoTrackEventExtra$Pool;->*
+HSPLandroid/os/PerfettoTrackEventExtra$RingBuffer;->*
diff --git a/boot/boot-image-profile.txt b/boot/boot-image-profile.txt
index 74b2f84b84a5..8f987c28d79e 100644
--- a/boot/boot-image-profile.txt
+++ b/boot/boot-image-profile.txt
@@ -1,5 +1,5 @@
#
-# Copyright (C) 2017 The Android Open Source Project
+# Copyright (C) 2025 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -120,6 +120,10 @@ HSPLandroid/accounts/IAccountManagerResponse$Stub;->getDefaultTransactionName(I)
HSPLandroid/accounts/IAccountManagerResponse$Stub;->getMaxTransactionId()I
HSPLandroid/accounts/IAccountManagerResponse$Stub;->getTransactionName(I)Ljava/lang/String;
HSPLandroid/accounts/IAccountManagerResponse$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+SPLandroid/adpf/FeatureFlagsImpl;-><init>()V
+SPLandroid/adpf/FeatureFlagsImpl;->adpfViewrootimplActionDownBoost()Z
+SPLandroid/adpf/Flags;-><clinit>()V
+HSPLandroid/adpf/Flags;->adpfViewrootimplActionDownBoost()Z
HSPLandroid/animation/AnimationHandler$$ExternalSyntheticLambda0;-><init>(Landroid/animation/AnimationHandler;)V
HSPLandroid/animation/AnimationHandler$$ExternalSyntheticLambda0;->doFrame(J)V
HSPLandroid/animation/AnimationHandler$1;-><init>(Landroid/animation/AnimationHandler;)V
@@ -161,20 +165,22 @@ HSPLandroid/animation/Animator$AnimatorConstantState;-><init>(Landroid/animation
HSPLandroid/animation/Animator$AnimatorConstantState;->getChangingConfigurations()I
HSPLandroid/animation/Animator$AnimatorConstantState;->newInstance()Landroid/animation/Animator;
HSPLandroid/animation/Animator$AnimatorConstantState;->newInstance()Ljava/lang/Object;
-HSPLandroid/animation/Animator$AnimatorListener;->onAnimationEnd(Landroid/animation/Animator;Z)V+]Landroid/animation/Animator$AnimatorListener;missing_types
-HSPLandroid/animation/Animator$AnimatorListener;->onAnimationStart(Landroid/animation/Animator;Z)V+]Landroid/animation/Animator$AnimatorListener;missing_types
+HSPLandroid/animation/Animator$AnimatorListener;->onAnimationEnd(Landroid/animation/Animator;Z)V+]Landroid/animation/Animator$AnimatorListener;megamorphic_types
+HSPLandroid/animation/Animator$AnimatorListener;->onAnimationStart(Landroid/animation/Animator;Z)V+]Landroid/animation/Animator$AnimatorListener;megamorphic_types
HSPLandroid/animation/Animator;-><init>()V
HSPLandroid/animation/Animator;->addListener(Landroid/animation/Animator$AnimatorListener;)V
HSPLandroid/animation/Animator;->addPauseListener(Landroid/animation/Animator$AnimatorPauseListener;)V
HSPLandroid/animation/Animator;->appendChangingConfigurations(I)V
HSPLandroid/animation/Animator;->callOnList(Ljava/util/ArrayList;Landroid/animation/Animator$AnimatorCaller;Ljava/lang/Object;Z)V
HSPLandroid/animation/Animator;->clone()Landroid/animation/Animator;
+HSPLandroid/animation/Animator;->completeEndAnimation(ZLjava/lang/String;)V+]Landroid/animation/Animator;missing_types
HSPLandroid/animation/Animator;->createConstantState()Landroid/content/res/ConstantState;
HSPLandroid/animation/Animator;->getBackgroundPauseDelay()J
HSPLandroid/animation/Animator;->getChangingConfigurations()I
HSPLandroid/animation/Animator;->getListeners()Ljava/util/ArrayList;
HSPLandroid/animation/Animator;->getStartAndEndTimes(Landroid/util/LongArray;J)V
HSPLandroid/animation/Animator;->notifyEndListeners(Z)V
+HSPLandroid/animation/Animator;->notifyEndListenersFromEndAnimation(ZZ)V+]Landroid/animation/Animator;missing_types
HSPLandroid/animation/Animator;->notifyListeners(Landroid/animation/Animator$AnimatorCaller;Z)V
HSPLandroid/animation/Animator;->notifyStartListeners(Z)V
HSPLandroid/animation/Animator;->pause()V
@@ -223,6 +229,7 @@ HSPLandroid/animation/AnimatorSet$SeekState;-><init>(Landroid/animation/Animator
HSPLandroid/animation/AnimatorSet$SeekState;->getPlayTimeNormalized()J
HSPLandroid/animation/AnimatorSet$SeekState;->isActive()Z
HSPLandroid/animation/AnimatorSet$SeekState;->reset()V
+HSPLandroid/animation/AnimatorSet;->-$$Nest$mgetNodeForAnimation(Landroid/animation/AnimatorSet;Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Node;
HSPLandroid/animation/AnimatorSet;-><init>()V
HSPLandroid/animation/AnimatorSet;->addAnimationCallback(J)V
HSPLandroid/animation/AnimatorSet;->addAnimationEndListener()V
@@ -478,9 +485,11 @@ HSPLandroid/animation/ValueAnimator;->cancel()V
HSPLandroid/animation/ValueAnimator;->clampFraction(F)F
HSPLandroid/animation/ValueAnimator;->clone()Landroid/animation/Animator;
HSPLandroid/animation/ValueAnimator;->clone()Landroid/animation/ValueAnimator;
+HSPLandroid/animation/ValueAnimator;->completeEndAnimation(ZLjava/lang/String;)V
HSPLandroid/animation/ValueAnimator;->doAnimationFrame(J)Z
HSPLandroid/animation/ValueAnimator;->end()V
HSPLandroid/animation/ValueAnimator;->endAnimation()V
+HSPLandroid/animation/ValueAnimator;->endAnimation(Z)V+]Landroid/animation/ValueAnimator;missing_types
HSPLandroid/animation/ValueAnimator;->getAnimatedFraction()F
HSPLandroid/animation/ValueAnimator;->getAnimatedValue()Ljava/lang/Object;
HSPLandroid/animation/ValueAnimator;->getAnimationHandler()Landroid/animation/AnimationHandler;
@@ -543,6 +552,7 @@ HSPLandroid/app/Activity$HostCallbacks;->onGetLayoutInflater()Landroid/view/Layo
HSPLandroid/app/Activity$HostCallbacks;->onUseFragmentManagerInflaterFactory()Z
HSPLandroid/app/Activity;-><init>()V
HSPLandroid/app/Activity;->attach(Landroid/content/Context;Landroid/app/ActivityThread;Landroid/app/Instrumentation;Landroid/os/IBinder;ILandroid/app/Application;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/CharSequence;Landroid/app/Activity;Ljava/lang/String;Landroid/app/Activity$NonConfigurationInstances;Landroid/content/res/Configuration;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;Landroid/view/Window;Landroid/view/ViewRootImpl$ActivityConfigCallback;Landroid/os/IBinder;Landroid/os/IBinder;)V
+HSPLandroid/app/Activity;->attach(Landroid/content/Context;Landroid/app/ActivityThread;Landroid/app/Instrumentation;Landroid/os/IBinder;ILandroid/app/Application;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/CharSequence;Landroid/app/Activity;Ljava/lang/String;Landroid/app/Activity$NonConfigurationInstances;Landroid/content/res/Configuration;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;Landroid/view/Window;Landroid/view/ViewRootImpl$ActivityConfigCallback;Landroid/os/IBinder;Landroid/os/IBinder;Landroid/os/IBinder;)V
HSPLandroid/app/Activity;->attachBaseContext(Landroid/content/Context;)V
HSPLandroid/app/Activity;->cancelInputsAndStartExitTransition(Landroid/os/Bundle;)V
HSPLandroid/app/Activity;->collectActivityLifecycleCallbacks()[Ljava/lang/Object;
@@ -700,20 +710,27 @@ HSPLandroid/app/ActivityClient;->reportSizeConfigurations(Landroid/os/IBinder;La
HSPLandroid/app/ActivityClient;->setActivityClientController(Landroid/app/IActivityClientController;)Landroid/app/IActivityClientController;
HSPLandroid/app/ActivityClient;->setRequestedOrientation(Landroid/os/IBinder;I)V
HSPLandroid/app/ActivityClient;->setTaskDescription(Landroid/os/IBinder;Landroid/app/ActivityManager$TaskDescription;)V
+HSPLandroid/app/ActivityManager$$ExternalSyntheticLambda0;->fetchValue()Ljava/lang/Object;
+HSPLandroid/app/ActivityManager$$ExternalSyntheticLambda1;->fetchValue()Ljava/lang/Object;
+HSPLandroid/app/ActivityManager$$ExternalSyntheticLambda2;->fetchValue()Ljava/lang/Object;
+HSPLandroid/app/ActivityManager$2;-><init>(Landroid/app/ActivityManager;)V
+HSPLandroid/app/ActivityManager$4;->create()Landroid/app/IActivityManager;
+SPLandroid/app/ActivityManager$4;->create()Ljava/lang/Object;
HSPLandroid/app/ActivityManager$AppTask;->getTaskInfo()Landroid/app/ActivityManager$RecentTaskInfo;
HSPLandroid/app/ActivityManager$MemoryInfo;-><init>()V
+HSPLandroid/app/ActivityManager$MemoryInfo;->copyTo(Landroid/app/ActivityManager$MemoryInfo;)V
HSPLandroid/app/ActivityManager$MemoryInfo;->readFromParcel(Landroid/os/Parcel;)V
HSPLandroid/app/ActivityManager$PendingIntentInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ActivityManager$PendingIntentInfo;
HSPLandroid/app/ActivityManager$PendingIntentInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
HSPLandroid/app/ActivityManager$PendingIntentInfo;-><init>(Ljava/lang/String;IZI)V
HSPLandroid/app/ActivityManager$RecentTaskInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ActivityManager$RecentTaskInfo;
HSPLandroid/app/ActivityManager$RecentTaskInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/ActivityManager$RecentTaskInfo$PersistedTaskSnapshotData;-><init>()V
HSPLandroid/app/ActivityManager$RecentTaskInfo;->readFromParcel(Landroid/os/Parcel;)V
HSPLandroid/app/ActivityManager$RunningAppProcessInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ActivityManager$RunningAppProcessInfo;
HSPLandroid/app/ActivityManager$RunningAppProcessInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
HSPLandroid/app/ActivityManager$RunningAppProcessInfo;-><init>()V
HSPLandroid/app/ActivityManager$RunningAppProcessInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/ActivityManager$RunningAppProcessInfo;->copyTo(Landroid/app/ActivityManager$RunningAppProcessInfo;)V
HSPLandroid/app/ActivityManager$RunningAppProcessInfo;->importanceToProcState(I)I
HSPLandroid/app/ActivityManager$RunningAppProcessInfo;->procStateToImportance(I)I
HSPLandroid/app/ActivityManager$RunningAppProcessInfo;->procStateToImportanceForClient(ILandroid/content/Context;)I
@@ -735,6 +752,8 @@ HSPLandroid/app/ActivityManager$TaskDescription;->getIcon()Landroid/graphics/Bit
HSPLandroid/app/ActivityManager$TaskDescription;->getIconFilename()Ljava/lang/String;
HSPLandroid/app/ActivityManager$TaskDescription;->getInMemoryIcon()Landroid/graphics/Bitmap;
HSPLandroid/app/ActivityManager$TaskDescription;->getPrimaryColor()I
+HSPLandroid/app/ActivityManager$TaskDescription;->getSystemBarsAppearance()I
+HSPLandroid/app/ActivityManager$TaskDescription;->hashCode()I
HSPLandroid/app/ActivityManager$TaskDescription;->loadTaskDescriptionIcon(Ljava/lang/String;I)Landroid/graphics/Bitmap;
HSPLandroid/app/ActivityManager$TaskDescription;->readFromParcel(Landroid/os/Parcel;)V
HSPLandroid/app/ActivityManager$TaskDescription;->setBackgroundColor(I)V
@@ -746,6 +765,8 @@ HSPLandroid/app/ActivityManager$TaskDescription;->setNavigationBarColor(I)V
HSPLandroid/app/ActivityManager$TaskDescription;->setPrimaryColor(I)V
HSPLandroid/app/ActivityManager$TaskDescription;->setStatusBarColor(I)V
HSPLandroid/app/ActivityManager$TaskDescription;->writeToParcel(Landroid/os/Parcel;I)V
+SPLandroid/app/ActivityManager;->$r8$lambda$KfaWjLSz8MRDCTZ5k_6RKNsGfys(Landroid/app/ActivityManager;)Ljava/util/List;
+HSPLandroid/app/ActivityManager;->$r8$lambda$ZuQeTlxj3UIhJqa0jkPJ3FavvSc(Landroid/app/ActivityManager;)Landroid/app/ActivityManager$MemoryInfo;
HSPLandroid/app/ActivityManager;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
HSPLandroid/app/ActivityManager;->addOnUidImportanceListener(Landroid/app/ActivityManager$OnUidImportanceListener;I)V
HSPLandroid/app/ActivityManager;->checkComponentPermission(Ljava/lang/String;IIZ)I
@@ -757,10 +778,13 @@ HSPLandroid/app/ActivityManager;->getLargeMemoryClass()I
HSPLandroid/app/ActivityManager;->getLauncherLargeIconSizeInner(Landroid/content/Context;)I
HSPLandroid/app/ActivityManager;->getMemoryClass()I
HSPLandroid/app/ActivityManager;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V
+HSPLandroid/app/ActivityManager;->getMemoryInfoInternal(Landroid/app/ActivityManager$MemoryInfo;)V+]Landroid/app/IActivityManager;Landroid/app/IActivityManager$Stub$Proxy;
HSPLandroid/app/ActivityManager;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V
+HSPLandroid/app/ActivityManager;->getMyMemoryStateInternal(Landroid/app/ActivityManager$RunningAppProcessInfo;)V+]Landroid/app/IActivityManager;Landroid/app/IActivityManager$Stub$Proxy;
HSPLandroid/app/ActivityManager;->getPackageImportance(Ljava/lang/String;)I
HSPLandroid/app/ActivityManager;->getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo;
HSPLandroid/app/ActivityManager;->getRunningAppProcesses()Ljava/util/List;
+HSPLandroid/app/ActivityManager;->getRunningAppProcessesInternal()Ljava/util/List;+]Landroid/app/IActivityManager;Landroid/app/IActivityManager$Stub$Proxy;
HSPLandroid/app/ActivityManager;->getRunningServices(I)Ljava/util/List;
HSPLandroid/app/ActivityManager;->getService()Landroid/app/IActivityManager;
HSPLandroid/app/ActivityManager;->getTaskService()Landroid/app/IActivityTaskManager;
@@ -770,11 +794,16 @@ HSPLandroid/app/ActivityManager;->isHighEndGfx()Z
HSPLandroid/app/ActivityManager;->isLowMemoryKillReportSupported()Z
HSPLandroid/app/ActivityManager;->isLowRamDevice()Z
HSPLandroid/app/ActivityManager;->isLowRamDeviceStatic()Z
+SPLandroid/app/ActivityManager;->isProcStateCached(I)Z
+HSPLandroid/app/ActivityManager;->isProcStateJankPerceptible(I)Z
HSPLandroid/app/ActivityManager;->isRunningInTestHarness()Z
HSPLandroid/app/ActivityManager;->isRunningInUserTestHarness()Z
HSPLandroid/app/ActivityManager;->isStartResultFatalError(I)Z
HSPLandroid/app/ActivityManager;->isUserAMonkey()Z
HSPLandroid/app/ActivityManager;->isUserRunning(I)Z
+HSPLandroid/app/ActivityManager;->lambda$getMemoryInfo$0()Landroid/app/ActivityManager$MemoryInfo;
+HSPLandroid/app/ActivityManager;->lambda$getMyMemoryState$3()Landroid/app/ActivityManager$RunningAppProcessInfo;
+SPLandroid/app/ActivityManager;->lambda$getRunningAppProcesses$2()Ljava/util/List;
HSPLandroid/app/ActivityManager;->staticGetLargeMemoryClass()I
HSPLandroid/app/ActivityManager;->staticGetMemoryClass()I
HSPLandroid/app/ActivityOptions$SourceInfo;-><init>(IJ)V
@@ -800,13 +829,16 @@ HSPLandroid/app/ActivityTaskManager;->getTasks(IZZ)Ljava/util/List;
HSPLandroid/app/ActivityTaskManager;->supportsMultiWindow(Landroid/content/Context;)Z
HSPLandroid/app/ActivityThread$$ExternalSyntheticLambda1;-><init>()V
HSPLandroid/app/ActivityThread$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/app/ActivityThread$$ExternalSyntheticLambda4;->onConfigurationChanged(Landroid/content/res/Configuration;)V
HSPLandroid/app/ActivityThread$2;-><init>(Landroid/app/ActivityThread;Landroid/app/IActivityManager;)V
HSPLandroid/app/ActivityThread$3;-><init>(Landroid/app/ActivityThread;)V
-HSPLandroid/app/ActivityThread$3;->setContentCaptureOptions(Landroid/content/ContentCaptureOptions;)V
HSPLandroid/app/ActivityThread$4;-><init>(Landroid/app/ActivityThread;)V
-HSPLandroid/app/ActivityThread$4;->run()V
+SPLandroid/app/ActivityThread$4;->setContentCaptureOptions(Landroid/content/ContentCaptureOptions;)V
+SPLandroid/app/ActivityThread$5;-><init>(Landroid/app/ActivityThread;)V
+SPLandroid/app/ActivityThread$5;->run()V
HSPLandroid/app/ActivityThread$ActivityClientRecord$1;-><init>(Landroid/app/ActivityThread$ActivityClientRecord;)V
HSPLandroid/app/ActivityThread$ActivityClientRecord;->-$$Nest$misPreHoneycomb(Landroid/app/ActivityThread$ActivityClientRecord;)Z
+HSPLandroid/app/ActivityThread$ActivityClientRecord;-><init>(Landroid/os/IBinder;Landroid/content/Intent;ILandroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/util/List;Ljava/util/List;Landroid/app/ActivityOptions$SceneTransitionInfo;ZLandroid/app/ProfilerInfo;Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/os/IBinder;ZLandroid/os/IBinder;Landroid/os/IBinder;Landroid/window/ActivityWindowInfo;)V
HSPLandroid/app/ActivityThread$ActivityClientRecord;->getLifecycleState()I
HSPLandroid/app/ActivityThread$ActivityClientRecord;->init()V
HSPLandroid/app/ActivityThread$ActivityClientRecord;->isPersistable()Z
@@ -823,6 +855,7 @@ HSPLandroid/app/ActivityThread$AppBindData;-><init>()V
HSPLandroid/app/ActivityThread$ApplicationThread$$ExternalSyntheticLambda2;-><init>()V
HSPLandroid/app/ActivityThread$ApplicationThread$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
HSPLandroid/app/ActivityThread$ApplicationThread;-><init>(Landroid/app/ActivityThread;)V
+SPLandroid/app/ActivityThread$ApplicationThread;->bindApplication(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Ljava/lang/String;ZLandroid/content/pm/ProviderInfoList;Landroid/content/ComponentName;Landroid/app/ProfilerInfo;Landroid/os/Bundle;Landroid/app/IInstrumentationWatcher;Landroid/app/IUiAutomationConnection;IZZZZLandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/util/Map;Landroid/os/Bundle;Ljava/lang/String;Landroid/content/AutofillOptions;Landroid/content/ContentCaptureOptions;[J[JLandroid/os/SharedMemory;Ljava/io/FileDescriptor;JJ)V
HSPLandroid/app/ActivityThread$ApplicationThread;->clearDnsCache()V
HSPLandroid/app/ActivityThread$ApplicationThread;->dispatchPackageBroadcast(I[Ljava/lang/String;)V
HSPLandroid/app/ActivityThread$ApplicationThread;->dumpCacheInfo(Landroid/os/ParcelFileDescriptor;[Ljava/lang/String;)V
@@ -853,6 +886,7 @@ HSPLandroid/app/ActivityThread$ApplicationThread;->setCoreSettings(Landroid/os/B
HSPLandroid/app/ActivityThread$ApplicationThread;->setNetworkBlockSeq(J)V
HSPLandroid/app/ActivityThread$ApplicationThread;->setProcessState(I)V
HSPLandroid/app/ActivityThread$ApplicationThread;->unstableProviderDied(Landroid/os/IBinder;)V
+SPLandroid/app/ActivityThread$ApplicationThread;->updateCompatOverrideDisplayRotation(Landroid/content/res/CompatibilityInfo;)V
HSPLandroid/app/ActivityThread$ApplicationThread;->updateCompatOverrideScale(Landroid/content/res/CompatibilityInfo;)V
HSPLandroid/app/ActivityThread$BindServiceData;-><init>()V
HSPLandroid/app/ActivityThread$BindServiceData;->toString()Ljava/lang/String;
@@ -878,6 +912,7 @@ HSPLandroid/app/ActivityThread$ReceiverData;-><init>(Landroid/content/Intent;ILj
HSPLandroid/app/ActivityThread$RequestAssistContextExtras;-><init>()V
HSPLandroid/app/ActivityThread$ServiceArgsData;-><init>()V
HSPLandroid/app/ActivityThread$ServiceArgsData;->toString()Ljava/lang/String;
+HSPLandroid/app/ActivityThread;->$r8$lambda$ER5_VDuGIZMC0J2vqX33KPnkevc(Landroid/app/ActivityThread;Landroid/content/res/Configuration;)V
HSPLandroid/app/ActivityThread;->-$$Nest$fgetmTransactionExecutor(Landroid/app/ActivityThread;)Landroid/app/servertransaction/TransactionExecutor;
HSPLandroid/app/ActivityThread;->-$$Nest$mhandleBindApplication(Landroid/app/ActivityThread;Landroid/app/ActivityThread$AppBindData;)V
HSPLandroid/app/ActivityThread;->-$$Nest$mhandleBindService(Landroid/app/ActivityThread;Landroid/app/ActivityThread$BindServiceData;)V
@@ -897,6 +932,8 @@ HSPLandroid/app/ActivityThread;->-$$Nest$mhandleStopService(Landroid/app/Activit
HSPLandroid/app/ActivityThread;->-$$Nest$mhandleUnbindService(Landroid/app/ActivityThread;Landroid/app/ActivityThread$BindServiceData;)V
HSPLandroid/app/ActivityThread;->-$$Nest$mpurgePendingResources(Landroid/app/ActivityThread;)V
HSPLandroid/app/ActivityThread;->-$$Nest$msendMessage(Landroid/app/ActivityThread;ILjava/lang/Object;IIZ)V
+HSPLandroid/app/ActivityThread;->-$$Nest$sfgetDEBUG_STORE_ENABLED()Z
+HSPLandroid/app/ActivityThread;->-$$Nest$sfgetLONG_MESSAGE_THRESHOLD_MS()J
HSPLandroid/app/ActivityThread;-><init>()V
HSPLandroid/app/ActivityThread;->acquireExistingProvider(Landroid/content/Context;Ljava/lang/String;IZ)Landroid/content/IContentProvider;
HSPLandroid/app/ActivityThread;->acquireProvider(Landroid/content/Context;Ljava/lang/String;IZ)Landroid/content/IContentProvider;
@@ -992,6 +1029,7 @@ HSPLandroid/app/ActivityThread;->isProtectedComponent(Landroid/content/pm/Activi
HSPLandroid/app/ActivityThread;->isProtectedComponent(Landroid/content/pm/ComponentInfo;Ljava/lang/String;)Z
HSPLandroid/app/ActivityThread;->isProtectedComponent(Landroid/content/pm/ServiceInfo;)Z
HSPLandroid/app/ActivityThread;->isSystem()Z
+HSPLandroid/app/ActivityThread;->lambda$attach$6(Landroid/content/res/Configuration;)V
HSPLandroid/app/ActivityThread;->main([Ljava/lang/String;)V
HSPLandroid/app/ActivityThread;->onCoreSettingsChange()V
HSPLandroid/app/ActivityThread;->peekPackageInfo(Ljava/lang/String;Z)Landroid/app/LoadedApk;
@@ -1015,13 +1053,14 @@ HSPLandroid/app/ActivityThread;->sendMessage(ILjava/lang/Object;)V
HSPLandroid/app/ActivityThread;->sendMessage(ILjava/lang/Object;I)V
HSPLandroid/app/ActivityThread;->sendMessage(ILjava/lang/Object;IIZ)V
HSPLandroid/app/ActivityThread;->setupGraphicsSupport(Landroid/content/Context;)V
+HSPLandroid/app/ActivityThread;->toVmProcessState(I)I
HSPLandroid/app/ActivityThread;->unscheduleGcIdler()V
HSPLandroid/app/ActivityThread;->updateDebugViewAttributeState()Z
HSPLandroid/app/ActivityThread;->updateDeviceIdForNonUIContexts(I)V
HSPLandroid/app/ActivityThread;->updatePendingConfiguration(Landroid/content/res/Configuration;)V
HSPLandroid/app/ActivityThread;->updateProcessState(IZ)V
HSPLandroid/app/ActivityThread;->updateVisibility(Landroid/app/ActivityThread$ActivityClientRecord;Z)V
-HSPLandroid/app/ActivityThread;->updateVmProcessState(I)V
+HSPLandroid/app/ActivityThread;->updateVmProcessState(II)V
HSPLandroid/app/ActivityTransitionState;-><init>()V
HSPLandroid/app/ActivityTransitionState;->enterReady(Landroid/app/Activity;)V
HSPLandroid/app/ActivityTransitionState;->getPendingExitNames()Ljava/util/ArrayList;
@@ -1057,6 +1096,7 @@ HSPLandroid/app/AlarmManager;->setInexactRepeating(IJJLandroid/app/PendingIntent
HSPLandroid/app/AlertDialog;-><init>(Landroid/content/Context;IZ)V
HSPLandroid/app/AlertDialog;->onCreate(Landroid/os/Bundle;)V
HSPLandroid/app/AlertDialog;->resolveDialogTheme(Landroid/content/Context;I)I
+SPLandroid/app/AppCompatCallbacks;-><init>([J[J)V
HSPLandroid/app/AppCompatCallbacks;->isChangeEnabled(J)Z
HSPLandroid/app/AppComponentFactory;-><init>()V
HSPLandroid/app/AppComponentFactory;->instantiateActivity(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Intent;)Landroid/app/Activity;
@@ -1205,6 +1245,7 @@ HSPLandroid/app/ApplicationExitInfo;->getRss()J
HSPLandroid/app/ApplicationExitInfo;->getStatus()I
HSPLandroid/app/ApplicationExitInfo;->getTimestamp()J
HSPLandroid/app/ApplicationLoaders$CachedClassLoader;-><init>()V
+SPLandroid/app/ApplicationLoaders$CachedClassLoader;-><init>(Landroid/app/ApplicationLoaders-IA;)V
HSPLandroid/app/ApplicationLoaders;->addNative(Ljava/lang/ClassLoader;Ljava/util/Collection;)V
HSPLandroid/app/ApplicationLoaders;->createAndCacheNonBootclasspathSystemClassLoader(Landroid/content/pm/SharedLibraryInfo;)V
HSPLandroid/app/ApplicationLoaders;->createAndCacheNonBootclasspathSystemClassLoaders(Ljava/util/List;)V
@@ -1215,20 +1256,24 @@ HSPLandroid/app/ApplicationLoaders;->getClassLoaderWithSharedLibraries(Ljava/lan
HSPLandroid/app/ApplicationLoaders;->getDefault()Landroid/app/ApplicationLoaders;
HSPLandroid/app/ApplicationLoaders;->getSharedLibraryClassLoaderWithSharedLibraries(Ljava/lang/String;IZLjava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/util/List;Ljava/util/List;)Ljava/lang/ClassLoader;
HSPLandroid/app/ApplicationLoaders;->sharedLibrariesEquals(Ljava/util/List;Ljava/util/List;)Z
+SPLandroid/app/ApplicationPackageManager$1;-><init>(Landroid/app/PropertyInvalidatedCache$Args;Ljava/lang/String;Landroid/app/PropertyInvalidatedCache$QueryHandler;)V
HSPLandroid/app/ApplicationPackageManager$1;->recompute(Landroid/app/ApplicationPackageManager$HasSystemFeatureQuery;)Ljava/lang/Boolean;
HSPLandroid/app/ApplicationPackageManager$1;->recompute(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroid/app/ApplicationPackageManager$2;-><init>(Landroid/app/ApplicationPackageManager;Landroid/content/pm/PackageManager$OnChecksumsReadyListener;)V
HSPLandroid/app/ApplicationPackageManager$2;->onChecksumsReady(Ljava/util/List;)V
+SPLandroid/app/ApplicationPackageManager$3;-><init>(ILjava/lang/String;)V
HSPLandroid/app/ApplicationPackageManager$3;->recompute(Ljava/lang/Integer;)Landroid/app/ApplicationPackageManager$GetPackagesForUidResult;
HSPLandroid/app/ApplicationPackageManager$3;->recompute(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroid/app/ApplicationPackageManager$GetPackagesForUidResult;-><init>([Ljava/lang/String;)V
HSPLandroid/app/ApplicationPackageManager$GetPackagesForUidResult;->value()[Ljava/lang/String;
+HSPLandroid/app/ApplicationPackageManager$HasSystemFeatureQuery$$ExternalSyntheticRecord1;->m(ILjava/lang/Object;)I
HSPLandroid/app/ApplicationPackageManager$HasSystemFeatureQuery;-><init>(Ljava/lang/String;I)V
HSPLandroid/app/ApplicationPackageManager$HasSystemFeatureQuery;->equals(Ljava/lang/Object;)Z
HSPLandroid/app/ApplicationPackageManager$HasSystemFeatureQuery;->hashCode()I
HSPLandroid/app/ApplicationPackageManager$ResourceName;-><init>(Ljava/lang/String;I)V
HSPLandroid/app/ApplicationPackageManager$ResourceName;->equals(Ljava/lang/Object;)Z
HSPLandroid/app/ApplicationPackageManager$ResourceName;->hashCode()I
+SPLandroid/app/ApplicationPackageManager;-><clinit>()V
HSPLandroid/app/ApplicationPackageManager;-><init>(Landroid/app/ContextImpl;Landroid/content/pm/IPackageManager;)V
HSPLandroid/app/ApplicationPackageManager;->addOnPermissionsChangeListener(Landroid/content/pm/PackageManager$OnPermissionsChangedListener;)V
HSPLandroid/app/ApplicationPackageManager;->checkPermission(Ljava/lang/String;Ljava/lang/String;)I
@@ -1285,6 +1330,7 @@ HSPLandroid/app/ApplicationPackageManager;->getReceiverInfo(Landroid/content/Com
HSPLandroid/app/ApplicationPackageManager;->getResourcesForApplication(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/Resources;
HSPLandroid/app/ApplicationPackageManager;->getResourcesForApplication(Landroid/content/pm/ApplicationInfo;Landroid/content/res/Configuration;)Landroid/content/res/Resources;
HSPLandroid/app/ApplicationPackageManager;->getResourcesForApplication(Ljava/lang/String;)Landroid/content/res/Resources;
+HSPLandroid/app/ApplicationPackageManager;->getSdkSandboxPackageName()Ljava/lang/String;
HSPLandroid/app/ApplicationPackageManager;->getServiceInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ServiceInfo;
HSPLandroid/app/ApplicationPackageManager;->getServiceInfo(Landroid/content/ComponentName;Landroid/content/pm/PackageManager$ComponentInfoFlags;)Landroid/content/pm/ServiceInfo;
HSPLandroid/app/ApplicationPackageManager;->getServicesSystemSharedLibraryPackageName()Ljava/lang/String;
@@ -1373,6 +1419,18 @@ HSPLandroid/app/BroadcastOptions;->isTemporaryAppAllowlistSet()Z
HSPLandroid/app/BroadcastOptions;->makeBasic()Landroid/app/BroadcastOptions;
HSPLandroid/app/BroadcastOptions;->setTemporaryAppWhitelistDuration(J)V
HSPLandroid/app/BroadcastOptions;->toBundle()Landroid/os/Bundle;
+SPLandroid/app/BroadcastStickyCache$$ExternalSyntheticLambda0;-><init>(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Landroid/content/IntentFilter;Ljava/lang/String;II)V
+HSPLandroid/app/BroadcastStickyCache$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+SPLandroid/app/BroadcastStickyCache$StickyBroadcastFilter$$ExternalSyntheticRecord0;->m(Ljava/lang/Object;Ljava/lang/Object;)I
+SPLandroid/app/BroadcastStickyCache$StickyBroadcastFilter;-><init>(Landroid/content/IntentFilter;Ljava/lang/String;)V
+SPLandroid/app/BroadcastStickyCache$StickyBroadcastFilter;-><init>(Landroid/content/IntentFilter;Ljava/lang/String;Landroid/app/BroadcastStickyCache-IA;)V
+SPLandroid/app/BroadcastStickyCache$StickyBroadcastFilter;->action()Ljava/lang/String;
+SPLandroid/app/BroadcastStickyCache$StickyBroadcastFilter;->filter()Landroid/content/IntentFilter;
+SPLandroid/app/BroadcastStickyCache$StickyBroadcastFilter;->hashCode()I
+HSPLandroid/app/BroadcastStickyCache;->findIpcDataCache(Landroid/content/IntentFilter;)Landroid/os/IpcDataCache;
+SPLandroid/app/BroadcastStickyCache;->getConfig(Ljava/lang/String;)Landroid/os/IpcDataCache$Config;
+HSPLandroid/app/BroadcastStickyCache;->getIntent(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent;+]Landroid/os/IpcDataCache;Landroid/os/IpcDataCache;
+HSPLandroid/app/BroadcastStickyCache;->lambda$getIntent$0(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Landroid/content/IntentFilter;Ljava/lang/String;IILjava/lang/Void;)Landroid/content/Intent;
HSPLandroid/app/ClientTransactionHandler;-><init>()V
HSPLandroid/app/ClientTransactionHandler;->scheduleTransaction(Landroid/app/servertransaction/ClientTransaction;)V
HSPLandroid/app/ConfigurationChangedListenerController;-><init>()V
@@ -1385,6 +1443,7 @@ HSPLandroid/app/ConfigurationController;->getCurDefaultDisplayDpi()I
HSPLandroid/app/ConfigurationController;->getPendingConfiguration(Z)Landroid/content/res/Configuration;
HSPLandroid/app/ConfigurationController;->handleConfigurationChanged(Landroid/content/res/Configuration;)V
HSPLandroid/app/ConfigurationController;->handleConfigurationChanged(Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)V
+HSPLandroid/app/ConfigurationController;->handleConfigurationChangedInner(Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)V+]Landroid/app/ActivityThreadInternal;Landroid/app/ActivityThread;]Landroid/app/ConfigurationController;Landroid/app/ConfigurationController;]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLandroid/app/ConfigurationController;->performConfigurationChanged(Landroid/content/ComponentCallbacks2;Landroid/content/res/Configuration;)V
HSPLandroid/app/ConfigurationController;->setCompatConfiguration(Landroid/content/res/Configuration;)V
HSPLandroid/app/ConfigurationController;->setConfiguration(Landroid/content/res/Configuration;)V
@@ -1408,6 +1467,7 @@ HSPLandroid/app/ContextImpl$ApplicationContentResolver;->resolveUserIdFromAuthor
HSPLandroid/app/ContextImpl$ApplicationContentResolver;->unstableProviderDied(Landroid/content/IContentProvider;)V
HSPLandroid/app/ContextImpl;-><init>(Landroid/app/ContextImpl;Landroid/app/ActivityThread;Landroid/app/LoadedApk;Landroid/content/ContextParams;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;Landroid/os/IBinder;Landroid/os/UserHandle;ILjava/lang/ClassLoader;Ljava/lang/String;IZ)V
HSPLandroid/app/ContextImpl;->bindIsolatedService(Landroid/content/Intent;ILjava/lang/String;Ljava/util/concurrent/Executor;Landroid/content/ServiceConnection;)Z
+HSPLandroid/app/ContextImpl;->bindService(Landroid/content/Intent;ILjava/util/concurrent/Executor;Landroid/content/ServiceConnection;)Z+]Landroid/app/ContextImpl;Landroid/app/ContextImpl;
HSPLandroid/app/ContextImpl;->bindService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z
HSPLandroid/app/ContextImpl;->bindServiceAsUser(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/Handler;Landroid/os/UserHandle;)Z
HSPLandroid/app/ContextImpl;->bindServiceAsUser(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/UserHandle;)Z
@@ -1540,6 +1600,7 @@ HSPLandroid/app/ContextImpl;->registerReceiver(Landroid/content/BroadcastReceive
HSPLandroid/app/ContextImpl;->registerReceiverAsUser(Landroid/content/BroadcastReceiver;Landroid/os/UserHandle;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent;
HSPLandroid/app/ContextImpl;->registerReceiverForAllUsers(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent;
HSPLandroid/app/ContextImpl;->registerReceiverInternal(Landroid/content/BroadcastReceiver;ILandroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;Landroid/content/Context;I)Landroid/content/Intent;
+HSPLandroid/app/ContextImpl;->resolveDeviceIdForPermissionCheck(Ljava/lang/String;)I+]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Ljava/util/Set;Ljava/util/ImmutableCollections$Set12;
HSPLandroid/app/ContextImpl;->resolveUserId(Landroid/net/Uri;)I
HSPLandroid/app/ContextImpl;->revokeUriPermission(Landroid/net/Uri;I)V
HSPLandroid/app/ContextImpl;->scheduleFinalCleanup(Ljava/lang/String;Ljava/lang/String;)V
@@ -1622,7 +1683,30 @@ HSPLandroid/app/DownloadManager;-><init>(Landroid/content/Context;)V
HSPLandroid/app/DownloadManager;->query(Landroid/app/DownloadManager$Query;)Landroid/database/Cursor;
HSPLandroid/app/DownloadManager;->query(Landroid/app/DownloadManager$Query;[Ljava/lang/String;)Landroid/database/Cursor;
HSPLandroid/app/EventLogTags;->writeWmOnTopResumedGainedCalled(ILjava/lang/String;Ljava/lang/String;)V
+SPLandroid/app/FeatureFlagsImpl;->appStartInfoTimestamps()Z
+HSPLandroid/app/FeatureFlagsImpl;->enableCurrentModeTypeBinderCache()Z
+HSPLandroid/app/FeatureFlagsImpl;->jankPerceptibleNarrow()Z
+HSPLandroid/app/FeatureFlagsImpl;->nmBinderPerfCacheChannels()Z
+SPLandroid/app/FeatureFlagsImpl;->nmBinderPerfPermissionCheck()Z
+SPLandroid/app/FeatureFlagsImpl;->nmBinderPerfThrottleNotify()Z
+HSPLandroid/app/FeatureFlagsImpl;->notifChannelCropVibrationEffects()Z
HSPLandroid/app/FeatureFlagsImpl;->notificationChannelVibrationEffectApi()Z
+HSPLandroid/app/FeatureFlagsImpl;->picIsolateCacheByUid()Z
+HSPLandroid/app/FeatureFlagsImpl;->picIsolatedCacheStatistics()Z
+HSPLandroid/app/FeatureFlagsImpl;->rateLimitGetMemoryInfo()Z
+HSPLandroid/app/FeatureFlagsImpl;->rateLimitGetMyMemoryState()Z
+HSPLandroid/app/FeatureFlagsImpl;->rateLimitGetRunningAppProcesses()Z
+SPLandroid/app/FeatureFlagsImpl;->reportPostgcMemoryMetrics()Z
+SPLandroid/app/FeatureFlagsImpl;->skipBgMemTrimOnFgApp()Z
+HSPLandroid/app/FeatureFlagsImpl;->sortSectionByTime()Z
+HSPLandroid/app/FeatureFlagsImpl;->useStickyBcastCache()Z
+HSPLandroid/app/Flags;->appStartInfoTimestamps()Z
+HSPLandroid/app/Flags;->jankPerceptibleNarrow()Z+]Landroid/app/FeatureFlags;Landroid/app/FeatureFlagsImpl;
+HSPLandroid/app/Flags;->nmBinderPerfThrottleNotify()Z+]Landroid/app/FeatureFlags;Landroid/app/FeatureFlagsImpl;
+SPLandroid/app/Flags;->picIsolateCacheByUid()Z
+SPLandroid/app/Flags;->picIsolatedCacheStatistics()Z
+SPLandroid/app/Flags;->reportPostgcMemoryMetrics()Z
+HSPLandroid/app/Flags;->useStickyBcastCache()Z+]Landroid/app/FeatureFlags;Landroid/app/FeatureFlagsImpl;
HSPLandroid/app/Fragment$1;-><init>(Landroid/app/Fragment;)V
HSPLandroid/app/Fragment;-><init>()V
HSPLandroid/app/Fragment;->equals(Ljava/lang/Object;)Z
@@ -1841,6 +1925,7 @@ HSPLandroid/app/IActivityManager$Stub$Proxy;->cancelIntentSender(Landroid/conten
HSPLandroid/app/IActivityManager$Stub$Proxy;->checkPermission(Ljava/lang/String;II)I
HSPLandroid/app/IActivityManager$Stub$Proxy;->checkPermissionForDevice(Ljava/lang/String;III)I
HSPLandroid/app/IActivityManager$Stub$Proxy;->checkUriPermission(Landroid/net/Uri;IIIILandroid/os/IBinder;)I
+SPLandroid/app/IActivityManager$Stub$Proxy;->finishAttachApplication(JJ)V
HSPLandroid/app/IActivityManager$Stub$Proxy;->finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZI)V
HSPLandroid/app/IActivityManager$Stub$Proxy;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder;
HSPLandroid/app/IActivityManager$Stub$Proxy;->getCurrentUser()Landroid/content/pm/UserInfo;
@@ -1866,6 +1951,7 @@ HSPLandroid/app/IActivityManager$Stub$Proxy;->registerReceiverWithFeature(Landro
HSPLandroid/app/IActivityManager$Stub$Proxy;->registerStrictModeCallback(Landroid/os/IBinder;)V
HSPLandroid/app/IActivityManager$Stub$Proxy;->registerUidObserver(Landroid/app/IUidObserver;IILjava/lang/String;)V
HSPLandroid/app/IActivityManager$Stub$Proxy;->removeContentProvider(Landroid/os/IBinder;Z)V
+HSPLandroid/app/IActivityManager$Stub$Proxy;->reportStartInfoViewTimestamps(JJ)V
HSPLandroid/app/IActivityManager$Stub$Proxy;->revokeUriPermission(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/net/Uri;II)V
HSPLandroid/app/IActivityManager$Stub$Proxy;->serviceDoneExecuting(Landroid/os/IBinder;IIILandroid/content/Intent;)V
HSPLandroid/app/IActivityManager$Stub$Proxy;->setRenderThread(I)V
@@ -1873,7 +1959,6 @@ HSPLandroid/app/IActivityManager$Stub$Proxy;->setServiceForeground(Landroid/cont
HSPLandroid/app/IActivityManager$Stub$Proxy;->startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;I)Landroid/content/ComponentName;
HSPLandroid/app/IActivityManager$Stub$Proxy;->stopService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I
HSPLandroid/app/IActivityManager$Stub$Proxy;->stopServiceToken(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z
-HSPLandroid/app/IActivityManager$Stub$Proxy;->unbindFinished(Landroid/os/IBinder;Landroid/content/Intent;Z)V
HSPLandroid/app/IActivityManager$Stub$Proxy;->unbindService(Landroid/app/IServiceConnection;)Z
HSPLandroid/app/IActivityManager$Stub$Proxy;->unregisterReceiver(Landroid/content/IIntentReceiver;)V
HSPLandroid/app/IActivityManager$Stub$Proxy;->unstableProviderDied(Landroid/os/IBinder;)V
@@ -1961,6 +2046,7 @@ HSPLandroid/app/IUiModeManager$Stub$Proxy;->getCurrentModeType()I
HSPLandroid/app/IUiModeManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IUiModeManager;
HSPLandroid/app/IUiModeManagerCallback$Stub;-><init>()V
HSPLandroid/app/IUiModeManagerCallback$Stub;->asBinder()Landroid/os/IBinder;
+HSPLandroid/app/IUidFrozenStateChangedCallback$Stub;-><init>()V
HSPLandroid/app/IUidObserver$Stub;-><init>()V
HSPLandroid/app/IUidObserver$Stub;->asBinder()Landroid/os/IBinder;
HSPLandroid/app/IUidObserver$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
@@ -1998,7 +2084,6 @@ HSPLandroid/app/Instrumentation;->newActivity(Ljava/lang/ClassLoader;Ljava/lang/
HSPLandroid/app/Instrumentation;->newApplication(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Context;)Landroid/app/Application;
HSPLandroid/app/Instrumentation;->notifyStartActivityResult(ILandroid/os/Bundle;)V
HSPLandroid/app/Instrumentation;->onCreate(Landroid/os/Bundle;)V
-HSPLandroid/app/Instrumentation;->onEnterAnimationComplete()V
HSPLandroid/app/Instrumentation;->postPerformCreate(Landroid/app/Activity;)V
HSPLandroid/app/Instrumentation;->prePerformCreate(Landroid/app/Activity;)V
HSPLandroid/app/IntentReceiverLeaked;-><init>(Ljava/lang/String;)V
@@ -2009,15 +2094,18 @@ HSPLandroid/app/IntentService;->onCreate()V
HSPLandroid/app/IntentService;->onDestroy()V
HSPLandroid/app/IntentService;->onStart(Landroid/content/Intent;I)V
HSPLandroid/app/IntentService;->onStartCommand(Landroid/content/Intent;II)I
+SPLandroid/app/JobSchedulerImpl;-><init>(Landroid/app/JobSchedulerImpl;Ljava/lang/String;)V
HSPLandroid/app/JobSchedulerImpl;-><init>(Landroid/content/Context;Landroid/app/job/IJobScheduler;)V
HSPLandroid/app/JobSchedulerImpl;-><init>(Landroid/content/Context;Landroid/app/job/IJobScheduler;Ljava/lang/String;)V
HSPLandroid/app/JobSchedulerImpl;->cancel(I)V
HSPLandroid/app/JobSchedulerImpl;->enqueue(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I
+HSPLandroid/app/JobSchedulerImpl;->forNamespace(Ljava/lang/String;)Landroid/app/job/JobScheduler;
HSPLandroid/app/JobSchedulerImpl;->getAllPendingJobs()Ljava/util/List;
HSPLandroid/app/JobSchedulerImpl;->getPendingJob(I)Landroid/app/job/JobInfo;
HSPLandroid/app/JobSchedulerImpl;->schedule(Landroid/app/job/JobInfo;)I
HSPLandroid/app/JobSchedulerImpl;->scheduleAsPackage(Landroid/app/job/JobInfo;Ljava/lang/String;ILjava/lang/String;)I
HSPLandroid/app/KeyguardManager$1;-><init>(Landroid/app/KeyguardManager;)V
+HSPLandroid/app/KeyguardManager$2;-><init>(Landroid/app/KeyguardManager;)V
HSPLandroid/app/KeyguardManager;-><init>(Landroid/content/Context;)V
HSPLandroid/app/KeyguardManager;->inKeyguardRestrictedInputMode()Z
HSPLandroid/app/KeyguardManager;->isDeviceLocked()Z
@@ -2031,6 +2119,7 @@ HSPLandroid/app/LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0;->ru
HSPLandroid/app/LoadedApk$ReceiverDispatcher$Args;-><init>(Landroid/app/LoadedApk$ReceiverDispatcher;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZIILjava/lang/String;)V
HSPLandroid/app/LoadedApk$ReceiverDispatcher$Args;->getRunnable()Ljava/lang/Runnable;
HSPLandroid/app/LoadedApk$ReceiverDispatcher$Args;->lambda$getRunnable$0()V
+HSPLandroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;-><init>(Landroid/app/IApplicationThread;Landroid/app/LoadedApk$ReceiverDispatcher;Z)V
HSPLandroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
HSPLandroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZIILjava/lang/String;)V
HSPLandroid/app/LoadedApk$ReceiverDispatcher;-><init>(Landroid/app/IApplicationThread;Landroid/content/BroadcastReceiver;Landroid/content/Context;Landroid/os/Handler;Landroid/app/Instrumentation;Z)V
@@ -2116,6 +2205,7 @@ HSPLandroid/app/LoadedApk;->setApplicationInfo(Landroid/content/pm/ApplicationIn
HSPLandroid/app/LoadedApk;->setThreadPolicy(Landroid/os/StrictMode$ThreadPolicy;)V
HSPLandroid/app/LoadedApk;->setVmPolicy(Landroid/os/StrictMode$VmPolicy;)V
HSPLandroid/app/LoadedApk;->updateApplicationInfo(Landroid/content/pm/ApplicationInfo;Ljava/util/List;)V
+HSPLandroid/app/LocaleConfig;->getDefaultLocale()Ljava/util/Locale;
HSPLandroid/app/Notification$$ExternalSyntheticLambda0;-><init>(Landroid/app/Notification;Landroid/os/Parcel;)V
HSPLandroid/app/Notification$$ExternalSyntheticLambda0;->onMarshaled(Landroid/app/PendingIntent;Landroid/os/Parcel;I)V
HSPLandroid/app/Notification$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/Notification;
@@ -2345,13 +2435,15 @@ HSPLandroid/app/NotificationChannelGroup;->getName()Ljava/lang/CharSequence;
HSPLandroid/app/NotificationChannelGroup;->getTrimmedString(Ljava/lang/String;)Ljava/lang/String;
HSPLandroid/app/NotificationChannelGroup;->isBlocked()Z
HSPLandroid/app/NotificationChannelGroup;->writeToParcel(Landroid/os/Parcel;I)V
+SPLandroid/app/NotificationManager$1;-><init>(Landroid/app/NotificationManager;)V
HSPLandroid/app/NotificationManager$Policy$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/NotificationManager$Policy;
HSPLandroid/app/NotificationManager$Policy$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
HSPLandroid/app/NotificationManager$Policy;-><init>(IIIIII)V
HSPLandroid/app/NotificationManager$Policy;-><init>(Landroid/os/Parcel;)V
HSPLandroid/app/NotificationManager$Policy;->equals(Ljava/lang/Object;)Z
HSPLandroid/app/NotificationManager$Policy;->suppressedVisualEffectsEqual(II)Z
-HSPLandroid/app/NotificationManager;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+SPLandroid/app/NotificationManager;-><init>(Landroid/content/Context;)V
+HSPLandroid/app/NotificationManager;-><init>(Landroid/content/Context;Ljava/time/InstantSource;)V
HSPLandroid/app/NotificationManager;->areNotificationsEnabled()Z
HSPLandroid/app/NotificationManager;->cancel(I)V
HSPLandroid/app/NotificationManager;->cancel(Ljava/lang/String;I)V
@@ -2362,6 +2454,7 @@ HSPLandroid/app/NotificationManager;->createNotificationChannelGroup(Landroid/ap
HSPLandroid/app/NotificationManager;->createNotificationChannelGroups(Ljava/util/List;)V
HSPLandroid/app/NotificationManager;->createNotificationChannels(Ljava/util/List;)V
HSPLandroid/app/NotificationManager;->deleteNotificationChannel(Ljava/lang/String;)V
+HSPLandroid/app/NotificationManager;->discardCancel(Landroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;I)Z
HSPLandroid/app/NotificationManager;->fixLegacySmallIcon(Landroid/app/Notification;Ljava/lang/String;)V
HSPLandroid/app/NotificationManager;->fixNotification(Landroid/app/Notification;)Landroid/app/Notification;
HSPLandroid/app/NotificationManager;->getActiveNotifications()[Landroid/service/notification/StatusBarNotification;
@@ -2378,7 +2471,10 @@ HSPLandroid/app/NotificationManager;->isNotificationPolicyAccessGranted()Z
HSPLandroid/app/NotificationManager;->notify(ILandroid/app/Notification;)V
HSPLandroid/app/NotificationManager;->notify(Ljava/lang/String;ILandroid/app/Notification;)V
HSPLandroid/app/NotificationManager;->notifyAsUser(Ljava/lang/String;ILandroid/app/Notification;Landroid/os/UserHandle;)V
+HSPLandroid/app/NotificationManager;->service()Landroid/app/INotificationManager;
HSPLandroid/app/NotificationManager;->zenModeToInterruptionFilter(I)I
+SPLandroid/app/PendingIntent$$ExternalSyntheticLambda0;->execute(Ljava/lang/Runnable;)V
+HSPLandroid/app/PendingIntent$$ExternalSyntheticLambda2;->get()Ljava/lang/Object;
HSPLandroid/app/PendingIntent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/PendingIntent;
HSPLandroid/app/PendingIntent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
HSPLandroid/app/PendingIntent$FinishedDispatcher;-><init>(Landroid/app/PendingIntent;Landroid/app/PendingIntent$OnFinished;Landroid/os/Handler;)V
@@ -2435,28 +2531,70 @@ HSPLandroid/app/Person;->writeToParcel(Landroid/os/Parcel;I)V
HSPLandroid/app/PictureInPictureParams$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/PictureInPictureParams;
HSPLandroid/app/PictureInPictureParams$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
HSPLandroid/app/PictureInPictureParams;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/app/PropertyInvalidatedCache$1;-><init>(Landroid/app/PropertyInvalidatedCache;IFZ)V
-HSPLandroid/app/PropertyInvalidatedCache$1;->removeEldestEntry(Ljava/util/Map$Entry;)Z
+SPLandroid/app/PropertyInvalidatedCache$Args;->-$$Nest$fgetmApi(Landroid/app/PropertyInvalidatedCache$Args;)Ljava/lang/String;
+SPLandroid/app/PropertyInvalidatedCache$Args;->-$$Nest$fgetmCacheNulls(Landroid/app/PropertyInvalidatedCache$Args;)Z
+SPLandroid/app/PropertyInvalidatedCache$Args;->-$$Nest$fgetmIsolateUids(Landroid/app/PropertyInvalidatedCache$Args;)Z
+SPLandroid/app/PropertyInvalidatedCache$Args;->-$$Nest$fgetmMaxEntries(Landroid/app/PropertyInvalidatedCache$Args;)I
+SPLandroid/app/PropertyInvalidatedCache$Args;->-$$Nest$fgetmModule(Landroid/app/PropertyInvalidatedCache$Args;)Ljava/lang/String;
+SPLandroid/app/PropertyInvalidatedCache$Args;->-$$Nest$fgetmTestMode(Landroid/app/PropertyInvalidatedCache$Args;)Z
+SPLandroid/app/PropertyInvalidatedCache$Args;-><init>(Ljava/lang/String;)V
+HSPLandroid/app/PropertyInvalidatedCache$Args;-><init>(Ljava/lang/String;Ljava/lang/String;IZZZ)V
+HSPLandroid/app/PropertyInvalidatedCache$Args;->api(Ljava/lang/String;)Landroid/app/PropertyInvalidatedCache$Args;
+SPLandroid/app/PropertyInvalidatedCache$Args;->cacheNulls(Z)Landroid/app/PropertyInvalidatedCache$Args;
+SPLandroid/app/PropertyInvalidatedCache$Args;->isolateUids(Z)Landroid/app/PropertyInvalidatedCache$Args;
+HSPLandroid/app/PropertyInvalidatedCache$Args;->maxEntries(I)Landroid/app/PropertyInvalidatedCache$Args;
+HSPLandroid/app/PropertyInvalidatedCache$CacheMap$1;-><init>(Landroid/app/PropertyInvalidatedCache$CacheMap;IFZ)V
+HSPLandroid/app/PropertyInvalidatedCache$CacheMap$1;->removeEldestEntry(Ljava/util/Map$Entry;)Z+]Landroid/app/PropertyInvalidatedCache$CacheMap$1;Landroid/app/PropertyInvalidatedCache$CacheMap$1;
+HSPLandroid/app/PropertyInvalidatedCache$CacheMap;-><init>(Landroid/app/PropertyInvalidatedCache;ZZ)V
+HSPLandroid/app/PropertyInvalidatedCache$CacheMap;->callerUid()I
+HSPLandroid/app/PropertyInvalidatedCache$CacheMap;->clear()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLandroid/app/PropertyInvalidatedCache$CacheMap;->createMap()Ljava/util/LinkedHashMap;
+HSPLandroid/app/PropertyInvalidatedCache$CacheMap;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/LinkedHashMap;Landroid/app/PropertyInvalidatedCache$CacheMap$1;
+HSPLandroid/app/PropertyInvalidatedCache$CacheMap;->put(Ljava/lang/Object;Ljava/lang/Object;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/LinkedHashMap;Landroid/app/PropertyInvalidatedCache$CacheMap$1;
HSPLandroid/app/PropertyInvalidatedCache$DefaultComputer;-><init>(Landroid/app/PropertyInvalidatedCache;)V
HSPLandroid/app/PropertyInvalidatedCache$NoPreloadHolder;-><clinit>()V
HSPLandroid/app/PropertyInvalidatedCache$NoPreloadHolder;->next()J
+HSPLandroid/app/PropertyInvalidatedCache$NonceHandler;-><init>(Ljava/lang/String;)V
+HSPLandroid/app/PropertyInvalidatedCache$NonceHandler;->getNonce()J+]Landroid/app/PropertyInvalidatedCache$NonceHandler;Landroid/app/PropertyInvalidatedCache$NonceSharedMem;,Landroid/app/PropertyInvalidatedCache$NonceSysprop;
+SPLandroid/app/PropertyInvalidatedCache$NonceSharedMem;-><init>(Ljava/lang/String;Ljava/lang/String;)V
+HSPLandroid/app/PropertyInvalidatedCache$NonceSharedMem;->getNonceInternal()J+]Landroid/app/PropertyInvalidatedCache$NonceStore;Landroid/app/PropertyInvalidatedCache$NonceStore;
+HSPLandroid/app/PropertyInvalidatedCache$NonceSharedMem;->initialize(Z)I+]Landroid/app/PropertyInvalidatedCache$NonceStore;Landroid/app/PropertyInvalidatedCache$NonceStore;
+SPLandroid/app/PropertyInvalidatedCache$NonceStore;-><clinit>()V
+SPLandroid/app/PropertyInvalidatedCache$NonceStore;-><init>(JZ)V
+HSPLandroid/app/PropertyInvalidatedCache$NonceStore;->getHandleForName(Ljava/lang/String;)I
+SPLandroid/app/PropertyInvalidatedCache$NonceStore;->getInstance()Landroid/app/PropertyInvalidatedCache$NonceStore;
+HSPLandroid/app/PropertyInvalidatedCache$NonceStore;->getNonce(I)J
+HSPLandroid/app/PropertyInvalidatedCache$NonceStore;->refreshStringBlockLocked()V
+HSPLandroid/app/PropertyInvalidatedCache$NonceStore;->throwIfBadHandle(I)V
+SPLandroid/app/PropertyInvalidatedCache$NonceStore;->updateStringMapLocked([B)V
+SPLandroid/app/PropertyInvalidatedCache$NonceSysprop;-><init>(Ljava/lang/String;)V
+HSPLandroid/app/PropertyInvalidatedCache$NonceSysprop;->getNonceInternal()J
HSPLandroid/app/PropertyInvalidatedCache$QueryHandler;-><init>()V
HSPLandroid/app/PropertyInvalidatedCache$QueryHandler;->shouldBypassCache(Ljava/lang/Object;)Z
HSPLandroid/app/PropertyInvalidatedCache;->-$$Nest$fgetmHighWaterMark(Landroid/app/PropertyInvalidatedCache;)J
HSPLandroid/app/PropertyInvalidatedCache;->-$$Nest$fgetmMaxEntries(Landroid/app/PropertyInvalidatedCache;)I
HSPLandroid/app/PropertyInvalidatedCache;->-$$Nest$fputmHighWaterMark(Landroid/app/PropertyInvalidatedCache;J)V
+SPLandroid/app/PropertyInvalidatedCache;->-$$Nest$smnativeGetByteBlock(JI[B)I
+HSPLandroid/app/PropertyInvalidatedCache;->-$$Nest$smnativeGetByteBlockHash(J)I
+SPLandroid/app/PropertyInvalidatedCache;->-$$Nest$smnativeGetMaxByte(J)I
+SPLandroid/app/PropertyInvalidatedCache;->-$$Nest$smnativeGetMaxNonce(J)I
+HSPLandroid/app/PropertyInvalidatedCache;->-$$Nest$smnativeGetNonce(JI)J
+HSPLandroid/app/PropertyInvalidatedCache;->-$$Nest$smthrowIfInvalidModule(Ljava/lang/String;)V
HSPLandroid/app/PropertyInvalidatedCache;-><init>(ILjava/lang/String;)V
HSPLandroid/app/PropertyInvalidatedCache;-><init>(ILjava/lang/String;Ljava/lang/String;)V
HSPLandroid/app/PropertyInvalidatedCache;-><init>(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PropertyInvalidatedCache$QueryHandler;)V
+HSPLandroid/app/PropertyInvalidatedCache;-><init>(Landroid/app/PropertyInvalidatedCache$Args;Ljava/lang/String;Landroid/app/PropertyInvalidatedCache$QueryHandler;)V
+HSPLandroid/app/PropertyInvalidatedCache;->argsFromProperty(Ljava/lang/String;)Landroid/app/PropertyInvalidatedCache$Args;
HSPLandroid/app/PropertyInvalidatedCache;->bypass(Ljava/lang/Object;)Z
HSPLandroid/app/PropertyInvalidatedCache;->cacheName()Ljava/lang/String;
HSPLandroid/app/PropertyInvalidatedCache;->clear()V
-HSPLandroid/app/PropertyInvalidatedCache;->createMap()Ljava/util/LinkedHashMap;
HSPLandroid/app/PropertyInvalidatedCache;->createPropertyName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+SPLandroid/app/PropertyInvalidatedCache;->createSystemCacheKey(Ljava/lang/String;)Ljava/lang/String;
HSPLandroid/app/PropertyInvalidatedCache;->disableLocal()V
-HSPLandroid/app/PropertyInvalidatedCache;->dumpCacheInfo(Landroid/os/ParcelFileDescriptor;[Ljava/lang/String;)V
HSPLandroid/app/PropertyInvalidatedCache;->getActiveCaches()Ljava/util/ArrayList;
HSPLandroid/app/PropertyInvalidatedCache;->getCurrentNonce()J
+HSPLandroid/app/PropertyInvalidatedCache;->getNonceHandler(Ljava/lang/String;)Landroid/app/PropertyInvalidatedCache$NonceHandler;+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
+SPLandroid/app/PropertyInvalidatedCache;->inSharedMemoryDenyList(Ljava/lang/String;)Z
HSPLandroid/app/PropertyInvalidatedCache;->invalidateCache(Ljava/lang/String;)V
HSPLandroid/app/PropertyInvalidatedCache;->isDisabled()Z
HSPLandroid/app/PropertyInvalidatedCache;->isReservedNonce(J)Z
@@ -2465,6 +2603,9 @@ HSPLandroid/app/PropertyInvalidatedCache;->query(Ljava/lang/Object;)Ljava/lang/O
HSPLandroid/app/PropertyInvalidatedCache;->recompute(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroid/app/PropertyInvalidatedCache;->refresh(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroid/app/PropertyInvalidatedCache;->registerCache()V
+SPLandroid/app/PropertyInvalidatedCache;->sharedMemoryOkay(Ljava/lang/String;)Z
+HSPLandroid/app/PropertyInvalidatedCache;->throwIfInvalidCacheKey(Ljava/lang/String;)V
+HSPLandroid/app/PropertyInvalidatedCache;->throwIfInvalidModule(Ljava/lang/String;)V
HSPLandroid/app/QueuedWork$QueuedWorkHandler;-><init>(Landroid/os/Looper;)V
HSPLandroid/app/QueuedWork$QueuedWorkHandler;->handleMessage(Landroid/os/Message;)V
HSPLandroid/app/QueuedWork;->-$$Nest$smprocessPendingWork()V
@@ -2498,16 +2639,27 @@ HSPLandroid/app/RemoteInput;->getAllowFreeFormInput()Z
HSPLandroid/app/RemoteInput;->getChoices()[Ljava/lang/CharSequence;
HSPLandroid/app/RemoteInput;->getEditChoicesBeforeSending()I
HSPLandroid/app/RemoteInput;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/app/ResourcesManager$$ExternalSyntheticLambda2;-><init>(Ljava/util/function/Function;Ljava/util/HashSet;)V
+HSPLandroid/app/ResourcesManager$$ExternalSyntheticLambda2;->test(Ljava/lang/Object;)Z
HSPLandroid/app/ResourcesManager$ActivityResource;-><init>()V
HSPLandroid/app/ResourcesManager$ActivityResources;-><init>()V
+HSPLandroid/app/ResourcesManager$ActivityResources;-><init>(Landroid/app/ResourcesManager-IA;)V
HSPLandroid/app/ResourcesManager$ApkAssetsSupplier;-><init>(Landroid/app/ResourcesManager;)V
HSPLandroid/app/ResourcesManager$ApkAssetsSupplier;->load(Landroid/app/ResourcesManager$ApkKey;)Landroid/content/res/ApkAssets;
HSPLandroid/app/ResourcesManager$ApkKey;-><init>(Ljava/lang/String;ZZ)V
HSPLandroid/app/ResourcesManager$ApkKey;->equals(Ljava/lang/Object;)Z
HSPLandroid/app/ResourcesManager$ApkKey;->hashCode()I
HSPLandroid/app/ResourcesManager$PathCollector;-><init>(Landroid/content/res/ResourcesKey;)V
-HSPLandroid/app/ResourcesManager$PathCollector;->collectedKey()Landroid/content/res/ResourcesKey;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/app/ResourcesManager$PathCollector;->appendAllNewPaths([Ljava/lang/String;Landroid/util/ArraySet;Ljava/util/ArrayList;)V
+HSPLandroid/app/ResourcesManager$PathCollector;->appendKey(Landroid/content/res/ResourcesKey;)V
+HSPLandroid/app/ResourcesManager$PathCollector;->appendNewPath(Ljava/lang/String;Landroid/util/ArraySet;Ljava/util/ArrayList;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/app/ResourcesManager$PathCollector;->collectedKey()Landroid/content/res/ResourcesKey;
+HSPLandroid/app/ResourcesManager$PathCollector;->isSameAsOriginal()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLandroid/app/ResourcesManager$UpdateHandler;-><init>(Landroid/app/ResourcesManager;)V
+HSPLandroid/app/ResourcesManager$UpdateHandler;->onLoadersChanged(Landroid/content/res/Resources;Ljava/util/List;)V+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Ljava/util/List;Ljava/util/ArrayList;
+SPLandroid/app/ResourcesManager;->-$$Nest$fgetmLock(Landroid/app/ResourcesManager;)Ljava/lang/Object;
+SPLandroid/app/ResourcesManager;->-$$Nest$mfindKeyForResourceImplLocked(Landroid/app/ResourcesManager;Landroid/content/res/ResourcesImpl;)Landroid/content/res/ResourcesKey;
+SPLandroid/app/ResourcesManager;->-$$Nest$mfindOrCreateResourcesImplForKeyLocked(Landroid/app/ResourcesManager;Landroid/content/res/ResourcesKey;)Landroid/content/res/ResourcesImpl;
HSPLandroid/app/ResourcesManager;-><init>()V
HSPLandroid/app/ResourcesManager;->addApplicationPathsLocked(Ljava/lang/String;[Ljava/lang/String;)V
HSPLandroid/app/ResourcesManager;->appendLibAssetsForMainAssetPath(Ljava/lang/String;[Ljava/lang/String;)V
@@ -2556,8 +2708,9 @@ HSPLandroid/app/ResourcesManager;->rebaseActivityOverrideConfig(Landroid/app/Res
HSPLandroid/app/ResourcesManager;->rebaseKeyForActivity(Landroid/os/IBinder;Landroid/content/res/ResourcesKey;Z)V
HSPLandroid/app/ResourcesManager;->rebaseKeyForDisplay(Landroid/content/res/ResourcesKey;I)V
HSPLandroid/app/ResourcesManager;->redirectResourcesToNewImplLocked(Landroid/util/ArrayMap;)V
-HSPLandroid/app/ResourcesManager;->registerAllResourcesReference(Landroid/content/res/Resources;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLandroid/app/ResourcesManager;->updateResourceImplWithRegisteredLibs(Landroid/content/res/ResourcesImpl;)I+]Landroid/app/ResourcesManager$SharedLibraryAssets;Landroid/app/ResourcesManager$SharedLibraryAssets;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;
+HSPLandroid/app/ResourcesManager;->registerAllResourcesReference(Landroid/content/res/Resources;)V
+HSPLandroid/app/ResourcesManager;->resourcesKeyFromAssets(Landroid/content/res/AssetManager;)Landroid/content/res/ResourcesKey;
+HSPLandroid/app/ResourcesManager;->updateResourceImplAssetsWithRegisteredLibs(Landroid/content/res/AssetManager;Z)Landroid/util/Pair;+]Landroid/app/ResourcesManager$SharedLibraryAssets;Landroid/app/ResourcesManager$SharedLibraryAssets;]Landroid/app/ResourcesManager;Landroid/app/ResourcesManager;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/Collections$EmptyList;
HSPLandroid/app/ResourcesManager;->updateResourcesForActivity(Landroid/os/IBinder;Landroid/content/res/Configuration;I)V
HSPLandroid/app/ResultInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ResultInfo;
HSPLandroid/app/ResultInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
@@ -2615,7 +2768,10 @@ HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putStringSet(Ljava/lang/Strin
HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->remove(Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;
HSPLandroid/app/SharedPreferencesImpl$MemoryCommitResult;-><init>(JZLjava/util/List;Ljava/util/Set;Ljava/util/Map;)V
HSPLandroid/app/SharedPreferencesImpl$MemoryCommitResult;->setDiskWriteResult(ZZ)V
+SPLandroid/app/SharedPreferencesImpl$SharedPreferencesThreadFactory;-><init>()V
+SPLandroid/app/SharedPreferencesImpl$SharedPreferencesThreadFactory;-><init>(Landroid/app/SharedPreferencesImpl-IA;)V
HSPLandroid/app/SharedPreferencesImpl$SharedPreferencesThreadFactory;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;
+SPLandroid/app/SharedPreferencesImpl;->$r8$lambda$gCIQI__z13DI5jNIqnAnYLWLcMc(Landroid/app/SharedPreferencesImpl;)V
HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$fgetmCurrentMemoryStateGeneration(Landroid/app/SharedPreferencesImpl;)J
HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$fgetmDiskWritesInFlight(Landroid/app/SharedPreferencesImpl;)I
HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$fgetmListeners(Landroid/app/SharedPreferencesImpl;)Ljava/util/WeakHashMap;
@@ -2627,6 +2783,7 @@ HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$fputmDiskWritesInFlight(Landroid
HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$fputmMap(Landroid/app/SharedPreferencesImpl;Ljava/util/Map;)V
HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$menqueueDiskWrite(Landroid/app/SharedPreferencesImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Ljava/lang/Runnable;)V
HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$mwriteToFile(Landroid/app/SharedPreferencesImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Z)V
+SPLandroid/app/SharedPreferencesImpl;-><clinit>()V
HSPLandroid/app/SharedPreferencesImpl;-><init>(Ljava/io/File;I)V
HSPLandroid/app/SharedPreferencesImpl;->awaitLoadedLocked()V
HSPLandroid/app/SharedPreferencesImpl;->contains(Ljava/lang/String;)Z
@@ -2661,6 +2818,7 @@ HSPLandroid/app/SyncNotedAppOp;->getAttributionTag()Ljava/lang/String;
HSPLandroid/app/SyncNotedAppOp;->getOp()Ljava/lang/String;
HSPLandroid/app/SyncNotedAppOp;->getOpMode()I
HSPLandroid/app/SyncNotedAppOp;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/app/SystemServiceRegistry$100;->createService(Landroid/app/ContextImpl;)Landroid/view/contentcapture/ContentCaptureManager;
HSPLandroid/app/SystemServiceRegistry$100;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$103;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$104;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
@@ -2676,7 +2834,9 @@ HSPLandroid/app/SystemServiceRegistry$111;->createService(Landroid/app/ContextIm
HSPLandroid/app/SystemServiceRegistry$112;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$113;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$114;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$115;->createService(Landroid/app/ContextImpl;)Landroid/permission/PermissionManager;
HSPLandroid/app/SystemServiceRegistry$115;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$116;->createService(Landroid/app/ContextImpl;)Landroid/permission/LegacyPermissionManager;
HSPLandroid/app/SystemServiceRegistry$116;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$117;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$122;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
@@ -2689,65 +2849,69 @@ HSPLandroid/app/SystemServiceRegistry$128;->createService(Landroid/app/ContextIm
HSPLandroid/app/SystemServiceRegistry$129;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$12;->createService(Landroid/app/ContextImpl;)Landroid/view/textclassifier/TextClassificationManager;
HSPLandroid/app/SystemServiceRegistry$12;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+SPLandroid/app/SystemServiceRegistry$130;->createService(Landroid/app/ContextImpl;)Landroid/hardware/devicestate/DeviceStateManager;
HSPLandroid/app/SystemServiceRegistry$130;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$131;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$138;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$139;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$13;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$149;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;+]Landroid/app/SystemServiceRegistry$ContextAwareServiceProducerWithBinder;Landroid/app/job/JobSchedulerFrameworkInitializer$$ExternalSyntheticLambda0;,Landroid/app/job/JobSchedulerFrameworkInitializer$$ExternalSyntheticLambda1;,Landroid/app/role/RoleFrameworkInitializer$$ExternalSyntheticLambda0;,Landroid/net/wifi/WifiFrameworkInitializer$$ExternalSyntheticLambda0;
HSPLandroid/app/SystemServiceRegistry$14;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$150;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;+]Landroid/app/SystemServiceRegistry$ContextAwareServiceProducerWithoutBinder;Landroid/telephony/TelephonyFrameworkInitializer$$ExternalSyntheticLambda1;
HSPLandroid/app/SystemServiceRegistry$15;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$18;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$1;->createService(Landroid/app/ContextImpl;)Landroid/view/accessibility/AccessibilityManager;
HSPLandroid/app/SystemServiceRegistry$1;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$21;->createService(Landroid/app/ContextImpl;)Landroid/app/admin/DevicePolicyManager;
+HSPLandroid/app/SystemServiceRegistry$20;->createService(Landroid/app/ContextImpl;)Landroid/app/admin/DevicePolicyManager;
+HSPLandroid/app/SystemServiceRegistry$20;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;+]Landroid/app/SystemServiceRegistry$20;Landroid/app/SystemServiceRegistry$20;
HSPLandroid/app/SystemServiceRegistry$21;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+SPLandroid/app/SystemServiceRegistry$22;->createService(Landroid/app/ContextImpl;)Landroid/os/BatteryManager;
HSPLandroid/app/SystemServiceRegistry$22;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$23;->createService(Landroid/app/ContextImpl;)Landroid/os/BatteryManager;
HSPLandroid/app/SystemServiceRegistry$23;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$24;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$25;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$26;->createService(Landroid/app/ContextImpl;)Landroid/hardware/input/InputManager;
+HSPLandroid/app/SystemServiceRegistry$26;->createService(Landroid/app/ContextImpl;)Landroid/hardware/display/DisplayManager;
HSPLandroid/app/SystemServiceRegistry$26;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$27;->createService(Landroid/app/ContextImpl;)Landroid/hardware/display/DisplayManager;
HSPLandroid/app/SystemServiceRegistry$27;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$28;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$29;->getService(Landroid/app/ContextImpl;)Landroid/view/inputmethod/InputMethodManager;
-HSPLandroid/app/SystemServiceRegistry$29;->getService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$28;->getService(Landroid/app/ContextImpl;)Landroid/view/inputmethod/InputMethodManager;
+HSPLandroid/app/SystemServiceRegistry$28;->getService(Landroid/app/ContextImpl;)Ljava/lang/Object;+]Landroid/app/SystemServiceRegistry$28;Landroid/app/SystemServiceRegistry$28;
HSPLandroid/app/SystemServiceRegistry$2;->createService(Landroid/app/ContextImpl;)Landroid/view/accessibility/CaptioningManager;
HSPLandroid/app/SystemServiceRegistry$2;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$31;->createService(Landroid/app/ContextImpl;)Landroid/app/KeyguardManager;
+HSPLandroid/app/SystemServiceRegistry$30;->createService(Landroid/app/ContextImpl;)Landroid/app/KeyguardManager;
+HSPLandroid/app/SystemServiceRegistry$30;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$31;->createService(Landroid/app/ContextImpl;)Landroid/view/LayoutInflater;
HSPLandroid/app/SystemServiceRegistry$31;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$32;->createService(Landroid/app/ContextImpl;)Landroid/view/LayoutInflater;
+HSPLandroid/app/SystemServiceRegistry$32;->createService(Landroid/app/ContextImpl;)Landroid/location/LocationManager;
HSPLandroid/app/SystemServiceRegistry$32;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$33;->createService(Landroid/app/ContextImpl;)Landroid/location/LocationManager;
HSPLandroid/app/SystemServiceRegistry$33;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$34;->createService(Landroid/app/ContextImpl;)Landroid/app/NotificationManager;+]Landroid/content/Context;Landroid/app/ContextImpl;
HSPLandroid/app/SystemServiceRegistry$34;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$35;->createService(Landroid/app/ContextImpl;)Landroid/app/NotificationManager;
HSPLandroid/app/SystemServiceRegistry$35;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$36;->createService(Landroid/app/ContextImpl;)Landroid/os/PowerManager;
HSPLandroid/app/SystemServiceRegistry$36;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$37;->createService(Landroid/app/ContextImpl;)Landroid/os/PowerManager;
HSPLandroid/app/SystemServiceRegistry$37;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$38;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$39;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$3;->createService(Landroid/app/ContextImpl;)Landroid/accounts/AccountManager;
HSPLandroid/app/SystemServiceRegistry$3;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$40;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$41;->createService(Landroid/app/ContextImpl;)Landroid/hardware/SensorManager;
HSPLandroid/app/SystemServiceRegistry$41;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$42;->createService(Landroid/app/ContextImpl;)Landroid/hardware/SensorManager;
HSPLandroid/app/SystemServiceRegistry$42;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$43;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+SPLandroid/app/SystemServiceRegistry$44;->createService(Landroid/app/ContextImpl;)Landroid/os/storage/StorageManager;
HSPLandroid/app/SystemServiceRegistry$44;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$45;->createService(Landroid/app/ContextImpl;)Landroid/os/storage/StorageManager;
HSPLandroid/app/SystemServiceRegistry$45;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$46;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$47;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+SPLandroid/app/SystemServiceRegistry$48;->createService(Landroid/app/ContextImpl;)Landroid/telephony/TelephonyRegistryManager;
HSPLandroid/app/SystemServiceRegistry$48;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$49;->createService(Landroid/app/ContextImpl;)Landroid/telecom/TelecomManager;
HSPLandroid/app/SystemServiceRegistry$49;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$4;->createService(Landroid/app/ContextImpl;)Landroid/app/ActivityManager;
HSPLandroid/app/SystemServiceRegistry$4;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$50;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+SPLandroid/app/SystemServiceRegistry$51;->createService(Landroid/app/ContextImpl;)Landroid/app/UiModeManager;
HSPLandroid/app/SystemServiceRegistry$51;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$52;->createService(Landroid/app/ContextImpl;)Landroid/app/UiModeManager;
HSPLandroid/app/SystemServiceRegistry$52;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$53;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$54;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
@@ -2755,12 +2919,12 @@ HSPLandroid/app/SystemServiceRegistry$55;->createService(Landroid/app/ContextImp
HSPLandroid/app/SystemServiceRegistry$56;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$57;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$58;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$59;->createService(Landroid/app/ContextImpl;)Landroid/view/WindowManager;
HSPLandroid/app/SystemServiceRegistry$59;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$60;->createService(Landroid/app/ContextImpl;)Landroid/view/WindowManager;
+HSPLandroid/app/SystemServiceRegistry$60;->createService(Landroid/app/ContextImpl;)Landroid/os/UserManager;
HSPLandroid/app/SystemServiceRegistry$60;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$61;->createService(Landroid/app/ContextImpl;)Landroid/os/UserManager;
+HSPLandroid/app/SystemServiceRegistry$61;->createService(Landroid/app/ContextImpl;)Landroid/app/AppOpsManager;
HSPLandroid/app/SystemServiceRegistry$61;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$62;->createService(Landroid/app/ContextImpl;)Landroid/app/AppOpsManager;
HSPLandroid/app/SystemServiceRegistry$62;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$63;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$64;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
@@ -2775,6 +2939,7 @@ HSPLandroid/app/SystemServiceRegistry$78;->createService(Landroid/app/ContextImp
HSPLandroid/app/SystemServiceRegistry$7;->createService(Landroid/app/ContextImpl;)Landroid/app/AlarmManager;
HSPLandroid/app/SystemServiceRegistry$7;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$84;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$85;->createService(Landroid/app/ContextImpl;)Landroid/appwidget/AppWidgetManager;
HSPLandroid/app/SystemServiceRegistry$85;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$86;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$87;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
@@ -2782,6 +2947,7 @@ HSPLandroid/app/SystemServiceRegistry$88;->createService(Landroid/app/ContextImp
HSPLandroid/app/SystemServiceRegistry$89;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$8;->createService(Landroid/app/ContextImpl;)Landroid/media/AudioManager;
HSPLandroid/app/SystemServiceRegistry$8;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+SPLandroid/app/SystemServiceRegistry$90;->createService(Landroid/app/ContextImpl;)Landroid/content/pm/ShortcutManager;
HSPLandroid/app/SystemServiceRegistry$90;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$91;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$92;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
@@ -2789,6 +2955,7 @@ HSPLandroid/app/SystemServiceRegistry$93;->createService(Landroid/app/ContextImp
HSPLandroid/app/SystemServiceRegistry$94;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$95;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$96;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$97;->createService(Landroid/app/ContextImpl;)Landroid/view/autofill/AutofillManager;
HSPLandroid/app/SystemServiceRegistry$97;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$98;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
HSPLandroid/app/SystemServiceRegistry$99;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
@@ -2801,7 +2968,6 @@ HSPLandroid/app/SystemServiceRegistry;->getSystemServiceFetcher(Ljava/lang/Strin
HSPLandroid/app/SystemServiceRegistry;->getSystemServiceName(Ljava/lang/Class;)Ljava/lang/String;
HSPLandroid/app/TaskInfo;-><init>()V
HSPLandroid/app/TaskInfo;->getWindowingMode()I
-HSPLandroid/app/TaskInfo;->readFromParcel(Landroid/os/Parcel;)V
HSPLandroid/app/TaskStackListener;-><init>()V
HSPLandroid/app/TaskStackListener;->onActivityRequestedOrientationChanged(II)V
HSPLandroid/app/TaskStackListener;->onActivityRestartAttempt(Landroid/app/ActivityManager$RunningTaskInfo;ZZZ)V
@@ -2817,12 +2983,17 @@ HSPLandroid/app/TaskStackListener;->onTaskRemovalStarted(Landroid/app/ActivityMa
HSPLandroid/app/TaskStackListener;->onTaskRemoved(I)V
HSPLandroid/app/TaskStackListener;->onTaskRequestedOrientationChanged(II)V
HSPLandroid/app/UiModeManager$1;-><init>(Landroid/app/UiModeManager;)V
+SPLandroid/app/UiModeManager$1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+SPLandroid/app/UiModeManager$1;->apply(Ljava/lang/Void;)Ljava/lang/Integer;
+SPLandroid/app/UiModeManager$2;-><init>(Landroid/app/UiModeManager;)V
HSPLandroid/app/UiModeManager$Globals;->-$$Nest$fgetmService(Landroid/app/UiModeManager$Globals;)Landroid/app/IUiModeManager;
HSPLandroid/app/UiModeManager$Globals;-><init>(Landroid/app/IUiModeManager;)V
HSPLandroid/app/UiModeManager$OnProjectionStateChangedListenerResourceManager;-><init>()V
+SPLandroid/app/UiModeManager;->-$$Nest$mgetCurrentModeTypeFromServer(Landroid/app/UiModeManager;)Ljava/lang/Integer;
HSPLandroid/app/UiModeManager;-><init>(Landroid/content/Context;)V
HSPLandroid/app/UiModeManager;->getActiveProjectionTypes()I
HSPLandroid/app/UiModeManager;->getCurrentModeType()I
+SPLandroid/app/UiModeManager;->getCurrentModeTypeFromServer()Ljava/lang/Integer;
HSPLandroid/app/UriGrantsManager$1;->create()Landroid/app/IUriGrantsManager;
HSPLandroid/app/UriGrantsManager$1;->create()Ljava/lang/Object;
HSPLandroid/app/UriGrantsManager;->getService()Landroid/app/IUriGrantsManager;
@@ -3135,6 +3306,7 @@ HSPLandroid/app/job/JobInfo$Builder;->setRequiresBatteryNotLow(Z)Landroid/app/jo
HSPLandroid/app/job/JobInfo$Builder;->setRequiresCharging(Z)Landroid/app/job/JobInfo$Builder;
HSPLandroid/app/job/JobInfo$Builder;->setRequiresDeviceIdle(Z)Landroid/app/job/JobInfo$Builder;
HSPLandroid/app/job/JobInfo$Builder;->setRequiresStorageNotLow(Z)Landroid/app/job/JobInfo$Builder;
+HSPLandroid/app/job/JobInfo$Builder;->setTraceTag(Ljava/lang/String;)Landroid/app/job/JobInfo$Builder;
HSPLandroid/app/job/JobInfo$Builder;->setTransientExtras(Landroid/os/Bundle;)Landroid/app/job/JobInfo$Builder;
HSPLandroid/app/job/JobInfo$Builder;->setTriggerContentMaxDelay(J)Landroid/app/job/JobInfo$Builder;
HSPLandroid/app/job/JobInfo$Builder;->setTriggerContentUpdateDelay(J)Landroid/app/job/JobInfo$Builder;
@@ -3172,6 +3344,8 @@ HSPLandroid/app/job/JobParameters$1;->createFromParcel(Landroid/os/Parcel;)Ljava
HSPLandroid/app/job/JobParameters;-><init>(Landroid/os/Parcel;)V
HSPLandroid/app/job/JobParameters;->completeWork(Landroid/app/job/JobWorkItem;)V
HSPLandroid/app/job/JobParameters;->dequeueWork()Landroid/app/job/JobWorkItem;
+HSPLandroid/app/job/JobParameters;->disableCleaner()V+]Landroid/app/job/JobParameters$JobCleanupCallback;Landroid/app/job/JobParameters$JobCleanupCallback;]Ljava/lang/ref/Cleaner$Cleanable;Ljdk/internal/ref/CleanerImpl$PhantomCleanableRef;
+HSPLandroid/app/job/JobParameters;->enableCleaner()V+]Landroid/app/job/JobParameters$JobCleanupCallback;Landroid/app/job/JobParameters$JobCleanupCallback;]Landroid/app/job/JobParameters;Landroid/app/job/JobParameters;
HSPLandroid/app/job/JobParameters;->getCallback()Landroid/app/job/IJobCallback;
HSPLandroid/app/job/JobParameters;->getExtras()Landroid/os/PersistableBundle;
HSPLandroid/app/job/JobParameters;->getJobId()I
@@ -3182,6 +3356,7 @@ HSPLandroid/app/job/JobParameters;->getTriggeredContentAuthorities()[Ljava/lang/
HSPLandroid/app/job/JobParameters;->getTriggeredContentUris()[Landroid/net/Uri;
HSPLandroid/app/job/JobParameters;->writeToParcel(Landroid/os/Parcel;I)V
HSPLandroid/app/job/JobScheduler;-><init>()V
+HSPLandroid/app/job/JobScheduler;->sanitizeNamespace(Ljava/lang/String;)Ljava/lang/String;
HSPLandroid/app/job/JobSchedulerFrameworkInitializer$$ExternalSyntheticLambda0;->createService(Landroid/content/Context;Landroid/os/IBinder;)Ljava/lang/Object;
HSPLandroid/app/job/JobSchedulerFrameworkInitializer$$ExternalSyntheticLambda1;->createService(Landroid/content/Context;Landroid/os/IBinder;)Ljava/lang/Object;
HSPLandroid/app/job/JobSchedulerFrameworkInitializer$$ExternalSyntheticLambda2;->createService(Landroid/content/Context;)Ljava/lang/Object;
@@ -3250,17 +3425,29 @@ HSPLandroid/app/servertransaction/ActivityResultItem$1;->createFromParcel(Landro
HSPLandroid/app/servertransaction/ActivityResultItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
HSPLandroid/app/servertransaction/ActivityResultItem;->execute(Landroid/app/ClientTransactionHandler;Landroid/app/ActivityThread$ActivityClientRecord;Landroid/app/servertransaction/PendingTransactionActions;)V
HSPLandroid/app/servertransaction/ActivityResultItem;->getPostExecutionState()I
+HSPLandroid/app/servertransaction/ActivityTransactionItem;->getActivityToken()Landroid/os/IBinder;
+SPLandroid/app/servertransaction/BaseClientRequest;->postExecute(Landroid/app/ClientTransactionHandler;Landroid/app/servertransaction/PendingTransactionActions;)V
+SPLandroid/app/servertransaction/BaseClientRequest;->preExecute(Landroid/app/ClientTransactionHandler;)V
HSPLandroid/app/servertransaction/ClientTransaction$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/servertransaction/ClientTransaction;
HSPLandroid/app/servertransaction/ClientTransaction$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
HSPLandroid/app/servertransaction/ClientTransaction;-><init>(Landroid/os/Parcel;)V
HSPLandroid/app/servertransaction/ClientTransaction;-><init>(Landroid/os/Parcel;Landroid/app/servertransaction/ClientTransaction-IA;)V
HSPLandroid/app/servertransaction/ClientTransaction;->getCallbacks()Ljava/util/List;
HSPLandroid/app/servertransaction/ClientTransaction;->getLifecycleStateRequest()Landroid/app/servertransaction/ActivityLifecycleItem;
+HSPLandroid/app/servertransaction/ClientTransaction;->getTransactionItems()Ljava/util/List;
HSPLandroid/app/servertransaction/ClientTransaction;->preExecute(Landroid/app/ClientTransactionHandler;)V
HSPLandroid/app/servertransaction/ClientTransactionItem;-><init>()V
+HSPLandroid/app/servertransaction/ClientTransactionItem;->getActivityToken()Landroid/os/IBinder;
HSPLandroid/app/servertransaction/ClientTransactionItem;->getPostExecutionState()I
HSPLandroid/app/servertransaction/ClientTransactionItem;->isActivityLifecycleItem()Z
HSPLandroid/app/servertransaction/ClientTransactionItem;->shouldHaveDefinedPreExecutionState()Z
+SPLandroid/app/servertransaction/ClientTransactionListenerController;-><init>(Landroid/hardware/display/DisplayManagerGlobal;)V
+HSPLandroid/app/servertransaction/ClientTransactionListenerController;->getInstance()Landroid/app/servertransaction/ClientTransactionListenerController;
+HSPLandroid/app/servertransaction/ClientTransactionListenerController;->onClientTransactionFinished()V+]Landroid/app/servertransaction/ClientTransactionListenerController;Landroid/app/servertransaction/ClientTransactionListenerController;]Landroid/content/Context;missing_types
+HSPLandroid/app/servertransaction/ClientTransactionListenerController;->onClientTransactionStarted()V
+HSPLandroid/app/servertransaction/ClientTransactionListenerController;->onContextConfigurationPostChanged(Landroid/content/Context;)V
+HSPLandroid/app/servertransaction/ClientTransactionListenerController;->onContextConfigurationPreChanged(Landroid/content/Context;)V+]Landroid/content/Context;missing_types]Landroid/content/res/Resources;Landroid/content/res/Resources;
+HSPLandroid/app/servertransaction/ClientTransactionListenerController;->shouldReportDisplayChange(Landroid/content/Context;Landroid/content/res/Configuration;)Z+]Landroid/content/Context;missing_types]Landroid/content/res/Resources;Landroid/content/res/Resources;
HSPLandroid/app/servertransaction/ConfigurationChangeItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/servertransaction/ConfigurationChangeItem;
HSPLandroid/app/servertransaction/ConfigurationChangeItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
HSPLandroid/app/servertransaction/ConfigurationChangeItem;-><init>(Landroid/os/Parcel;)V
@@ -3271,6 +3458,7 @@ HSPLandroid/app/servertransaction/DestroyActivityItem;->execute(Landroid/app/Cli
HSPLandroid/app/servertransaction/DestroyActivityItem;->getTargetState()I
HSPLandroid/app/servertransaction/LaunchActivityItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/servertransaction/LaunchActivityItem;
HSPLandroid/app/servertransaction/LaunchActivityItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/app/servertransaction/LaunchActivityItem;-><init>(Landroid/os/IBinder;ILandroid/content/res/Configuration;Landroid/content/res/Configuration;ILjava/lang/String;Lcom/android/internal/app/IVoiceInteractor;ILandroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/util/List;Ljava/util/List;Landroid/app/ActivityOptions$SceneTransitionInfo;ZLandroid/app/ProfilerInfo;Landroid/os/IBinder;Landroid/app/IActivityClientController;Landroid/os/IBinder;ZLandroid/os/IBinder;Landroid/os/IBinder;Landroid/window/ActivityWindowInfo;)V
HSPLandroid/app/servertransaction/LaunchActivityItem;-><init>(Landroid/os/Parcel;)V
HSPLandroid/app/servertransaction/NewIntentItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/servertransaction/NewIntentItem;
HSPLandroid/app/servertransaction/NewIntentItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
@@ -3318,13 +3506,17 @@ HSPLandroid/app/servertransaction/TransactionExecutor;-><init>(Landroid/app/Clie
HSPLandroid/app/servertransaction/TransactionExecutor;->cycleToPath(Landroid/app/ActivityThread$ActivityClientRecord;ILandroid/app/servertransaction/ClientTransaction;)V
HSPLandroid/app/servertransaction/TransactionExecutor;->cycleToPath(Landroid/app/ActivityThread$ActivityClientRecord;IZLandroid/app/servertransaction/ClientTransaction;)V
HSPLandroid/app/servertransaction/TransactionExecutor;->execute(Landroid/app/servertransaction/ClientTransaction;)V
-HSPLandroid/app/servertransaction/TransactionExecutor;->executeNonLifecycleItem(Landroid/app/servertransaction/ClientTransaction;Landroid/app/servertransaction/ClientTransactionItem;Z)V+]Landroid/app/ClientTransactionHandler;Landroid/app/ActivityThread;]Landroid/app/servertransaction/ClientTransactionItem;megamorphic_types]Landroid/app/servertransaction/TransactionExecutor;Landroid/app/servertransaction/TransactionExecutor;]Landroid/app/servertransaction/TransactionExecutorHelper;Landroid/app/servertransaction/TransactionExecutorHelper;]Ljava/util/Map;Ljava/util/Collections$SynchronizedMap;
-HSPLandroid/app/servertransaction/TransactionExecutor;->executeTransactionItems(Landroid/app/servertransaction/ClientTransaction;)V+]Landroid/app/servertransaction/ClientTransaction;Landroid/app/servertransaction/ClientTransaction;]Landroid/app/servertransaction/ClientTransactionItem;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;
+HSPLandroid/app/servertransaction/TransactionExecutor;->executeLifecycleItem(Landroid/app/servertransaction/ClientTransaction;Landroid/app/servertransaction/ActivityLifecycleItem;)V+]Landroid/app/ClientTransactionHandler;Landroid/app/ActivityThread;]Landroid/app/servertransaction/ActivityLifecycleItem;megamorphic_types
+HSPLandroid/app/servertransaction/TransactionExecutor;->executeNonLifecycleItem(Landroid/app/servertransaction/ClientTransaction;Landroid/app/servertransaction/ClientTransactionItem;Z)V
+HSPLandroid/app/servertransaction/TransactionExecutor;->executeTransactionItems(Landroid/app/servertransaction/ClientTransaction;)V
HSPLandroid/app/servertransaction/TransactionExecutor;->performLifecycleSequence(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/util/IntArray;Landroid/app/servertransaction/ClientTransaction;)V
HSPLandroid/app/servertransaction/TransactionExecutorHelper;-><init>()V
HSPLandroid/app/servertransaction/TransactionExecutorHelper;->getClosestOfStates(Landroid/app/ActivityThread$ActivityClientRecord;[I)I
HSPLandroid/app/servertransaction/TransactionExecutorHelper;->getClosestPreExecutionState(Landroid/app/ActivityThread$ActivityClientRecord;I)I
HSPLandroid/app/servertransaction/TransactionExecutorHelper;->getLifecyclePath(IIZ)Landroid/util/IntArray;
+HSPLandroid/app/servertransaction/TransactionExecutorHelper;->shouldExcludeLastLifecycleState(Ljava/util/List;I)Z+]Landroid/app/servertransaction/ActivityLifecycleItem;Landroid/app/servertransaction/ResumeActivityItem;]Landroid/app/servertransaction/ClientTransactionItem;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;
+HSPLandroid/app/servertransaction/WindowStateTransactionItem;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/servertransaction/WindowStateTransactionItem;->execute(Landroid/app/ClientTransactionHandler;Landroid/app/servertransaction/PendingTransactionActions;)V+]Landroid/app/servertransaction/WindowStateTransactionItem$TransactionListener;Landroid/view/ViewRootImpl$W;]Landroid/app/servertransaction/WindowStateTransactionItem;Landroid/app/servertransaction/WindowStateInsetsControlChangeItem;,Landroid/app/servertransaction/WindowStateResizeItem;
HSPLandroid/app/slice/ISliceManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
HSPLandroid/app/slice/ISliceManager$Stub$Proxy;->getPinnedSlices(Ljava/lang/String;)[Landroid/net/Uri;
HSPLandroid/app/slice/ISliceManager$Stub$Proxy;->grantSlicePermission(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;)V
@@ -3427,6 +3619,9 @@ HSPLandroid/app/usage/UsageStatsManager;->queryEvents(JJ)Landroid/app/usage/Usag
HSPLandroid/app/usage/UsageStatsManager;->queryUsageStats(IJJ)Ljava/util/List;
HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda3;-><init>()V
HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda5;-><init>()V
+SPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda7;->run()V
+HSPLandroid/appwidget/AppWidgetManager$ServiceCollectionCache;-><init>(Landroid/content/Context;J)V
+SPLandroid/appwidget/AppWidgetManager;->$r8$lambda$WKLPyaeqLNLNb3560d7QJuq2DwQ(Landroid/appwidget/AppWidgetManager;)V
HSPLandroid/appwidget/AppWidgetManager;-><init>(Landroid/content/Context;Lcom/android/internal/appwidget/IAppWidgetService;)V
HSPLandroid/appwidget/AppWidgetManager;->getAppWidgetIds(Landroid/content/ComponentName;)[I
HSPLandroid/appwidget/AppWidgetManager;->getInstalledProvidersForPackage(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List;
@@ -3452,8 +3647,6 @@ HSPLandroid/companion/virtual/IVirtualDeviceManager$Stub$Proxy;->getDeviceIdForD
HSPLandroid/companion/virtual/IVirtualDeviceManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/companion/virtual/IVirtualDeviceManager;
HSPLandroid/companion/virtual/VirtualDeviceManager;-><init>(Landroid/companion/virtual/IVirtualDeviceManager;Landroid/content/Context;)V
HSPLandroid/companion/virtual/VirtualDeviceManager;->getDeviceIdForDisplayId(I)I
-HSPLandroid/companion/virtual/flags/FeatureFlagsImpl;->enableNativeVdm()Z
-HSPLandroid/companion/virtual/flags/Flags;->enableNativeVdm()Z
HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;->cancelSync(Landroid/content/ISyncContext;)V
HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;->isCallerSystem()Z
HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;->startSync(Landroid/content/ISyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;)V
@@ -4054,10 +4247,16 @@ HSPLandroid/content/Intent;-><init>(Ljava/lang/String;)V
HSPLandroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
HSPLandroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;Landroid/content/Context;Ljava/lang/Class;)V
HSPLandroid/content/Intent;->addCategory(Ljava/lang/String;)Landroid/content/Intent;
+HSPLandroid/content/Intent;->addExtendedFlags(I)Landroid/content/Intent;
HSPLandroid/content/Intent;->addFlags(I)Landroid/content/Intent;
+HSPLandroid/content/Intent;->checkCreatorToken()V+]Landroid/content/ClipData;Landroid/content/ClipData;
HSPLandroid/content/Intent;->cloneFilter()Landroid/content/Intent;
+HSPLandroid/content/Intent;->collectExtraIntentKeys()V+]Landroid/content/Intent;Landroid/content/Intent;
+HSPLandroid/content/Intent;->collectExtraIntentKeys(Z)V
+HSPLandroid/content/Intent;->collectNestedIntentKeysRecur(Ljava/util/Set;Z)V+]Landroid/content/ClipData;Landroid/content/ClipData;]Landroid/content/Intent;missing_types]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/ArraySet;,Landroid/util/MapCollections$KeySet;
HSPLandroid/content/Intent;->filterEquals(Landroid/content/Intent;)Z
HSPLandroid/content/Intent;->filterHashCode()I
+HSPLandroid/content/Intent;->forEachNestedCreatorToken(Ljava/util/function/Consumer;Ljava/util/function/Consumer;)V+]Landroid/content/Intent;Landroid/content/Intent;,Landroid/content/pm/LabeledIntent;]Ljava/util/function/Consumer;Landroid/content/Intent$$ExternalSyntheticLambda0;,Landroid/content/Intent$$ExternalSyntheticLambda1;
HSPLandroid/content/Intent;->getAction()Ljava/lang/String;
HSPLandroid/content/Intent;->getBooleanExtra(Ljava/lang/String;Z)Z
HSPLandroid/content/Intent;->getBundleExtra(Ljava/lang/String;)Landroid/os/Bundle;
@@ -4093,6 +4292,7 @@ HSPLandroid/content/Intent;->hasWebURI()Z
HSPLandroid/content/Intent;->isImageCaptureIntent()Z
HSPLandroid/content/Intent;->isWebIntent()Z
HSPLandroid/content/Intent;->makeMainActivity(Landroid/content/ComponentName;)Landroid/content/Intent;
+HSPLandroid/content/Intent;->maybeMarkAsMissingCreatorToken(Ljava/lang/Object;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLandroid/content/Intent;->migrateExtraStreamToClipData(Landroid/content/Context;)Z
HSPLandroid/content/Intent;->parseIntent(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)Landroid/content/Intent;
HSPLandroid/content/Intent;->parseUri(Ljava/lang/String;I)Landroid/content/Intent;
@@ -4101,6 +4301,7 @@ HSPLandroid/content/Intent;->prepareToEnterProcess(ILandroid/content/Attribution
HSPLandroid/content/Intent;->prepareToEnterProcess(ZLandroid/content/AttributionSource;)V
HSPLandroid/content/Intent;->prepareToLeaveProcess(Landroid/content/Context;)V
HSPLandroid/content/Intent;->prepareToLeaveProcess(Z)V
+HSPLandroid/content/Intent;->prepareToLeaveProcess(ZZ)V+]Landroid/content/ClipData;Landroid/content/ClipData;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$OpaqueUri;,Landroid/net/Uri$StringUri;]Landroid/os/storage/StorageManager;Landroid/os/storage/StorageManager;
HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;J)Landroid/content/Intent;
HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/Intent;
@@ -4180,10 +4381,12 @@ HSPLandroid/content/IntentFilter;->countActions()I
HSPLandroid/content/IntentFilter;->countCategories()I
HSPLandroid/content/IntentFilter;->countDataAuthorities()I
HSPLandroid/content/IntentFilter;->countDataPaths()I
+SPLandroid/content/IntentFilter;->countDataSchemeSpecificParts()I
HSPLandroid/content/IntentFilter;->countDataSchemes()I
HSPLandroid/content/IntentFilter;->countDataTypes()I
HSPLandroid/content/IntentFilter;->countMimeGroups()I
HSPLandroid/content/IntentFilter;->debugCheck()Z
+HSPLandroid/content/IntentFilter;->filterEquals(Landroid/content/IntentFilter;Landroid/content/IntentFilter;)Z
HSPLandroid/content/IntentFilter;->getAction(I)Ljava/lang/String;
HSPLandroid/content/IntentFilter;->getAutoVerify()Z
HSPLandroid/content/IntentFilter;->getCategory(I)Ljava/lang/String;
@@ -4208,6 +4411,7 @@ HSPLandroid/content/IntentFilter;->matchData(Ljava/lang/String;Ljava/lang/String
HSPLandroid/content/IntentFilter;->matchDataAuthority(Landroid/net/Uri;Z)I
HSPLandroid/content/IntentFilter;->matchExtras(Landroid/os/Bundle;)Ljava/lang/String;
HSPLandroid/content/IntentFilter;->processMimeType(Ljava/lang/String;Ljava/util/function/BiConsumer;)V
+HSPLandroid/content/IntentFilter;->safeCountActions()I
HSPLandroid/content/IntentFilter;->schemesIterator()Ljava/util/Iterator;
HSPLandroid/content/IntentFilter;->setAutoVerify(Z)V
HSPLandroid/content/IntentFilter;->setOrder(I)V
@@ -4746,7 +4950,6 @@ HSPLandroid/content/pm/ShortcutInfo;->writeToParcel(Landroid/os/Parcel;I)V
HSPLandroid/content/pm/ShortcutManager;-><init>(Landroid/content/Context;Landroid/content/pm/IShortcutService;)V
HSPLandroid/content/pm/ShortcutManager;->addDynamicShortcuts(Ljava/util/List;)Z
HSPLandroid/content/pm/ShortcutManager;->getDynamicShortcuts()Ljava/util/List;
-HSPLandroid/content/pm/ShortcutManager;->getFutureOrThrow(Lcom/android/internal/infra/AndroidFuture;)Ljava/lang/Object;
HSPLandroid/content/pm/ShortcutManager;->getManifestShortcuts()Ljava/util/List;
HSPLandroid/content/pm/ShortcutManager;->getMaxShortcutCountPerActivity()I
HSPLandroid/content/pm/ShortcutManager;->getPinnedShortcuts()Ljava/util/List;
@@ -4833,6 +5036,8 @@ HSPLandroid/content/pm/permission/SplitPermissionInfoParcelable;->onConstructed(
HSPLandroid/content/pm/split/SplitDependencyLoader;-><init>(Landroid/util/SparseArray;)V
HSPLandroid/content/pm/split/SplitDependencyLoader;->collectConfigSplitIndices(I)[I
HSPLandroid/content/pm/split/SplitDependencyLoader;->loadDependenciesForSplit(I)V
+HSPLandroid/content/res/ApkAssets;-><init>(IILandroid/content/res/loader/AssetsProvider;)V
+HSPLandroid/content/res/ApkAssets;-><init>(ILjava/io/FileDescriptor;Ljava/lang/String;ILandroid/content/res/loader/AssetsProvider;)V
HSPLandroid/content/res/ApkAssets;-><init>(ILjava/lang/String;ILandroid/content/res/loader/AssetsProvider;)V
HSPLandroid/content/res/ApkAssets;->close()V
HSPLandroid/content/res/ApkAssets;->definesOverlayable()Z
@@ -4841,7 +5046,12 @@ HSPLandroid/content/res/ApkAssets;->finalize()V
HSPLandroid/content/res/ApkAssets;->getAssetPath()Ljava/lang/String;
HSPLandroid/content/res/ApkAssets;->getDebugName()Ljava/lang/String;
HSPLandroid/content/res/ApkAssets;->getStringFromPool(I)Ljava/lang/CharSequence;
+SPLandroid/content/res/ApkAssets;->isForLoader()Z
+SPLandroid/content/res/ApkAssets;->isOverlay()Z
+SPLandroid/content/res/ApkAssets;->isSharedLib()Z
+SPLandroid/content/res/ApkAssets;->isSystem()Z
HSPLandroid/content/res/ApkAssets;->isUpToDate()Z
+SPLandroid/content/res/ApkAssets;->loadFromFd(Ljava/io/FileDescriptor;Ljava/lang/String;ILandroid/content/res/loader/AssetsProvider;)Landroid/content/res/ApkAssets;
HSPLandroid/content/res/ApkAssets;->loadFromPath(Ljava/lang/String;)Landroid/content/res/ApkAssets;
HSPLandroid/content/res/ApkAssets;->loadFromPath(Ljava/lang/String;I)Landroid/content/res/ApkAssets;
HSPLandroid/content/res/ApkAssets;->loadOverlayFromPath(Ljava/lang/String;I)Landroid/content/res/ApkAssets;
@@ -4973,18 +5183,24 @@ HSPLandroid/content/res/CompatibilityInfo$2;->createFromParcel(Landroid/os/Parce
HSPLandroid/content/res/CompatibilityInfo;-><init>(Landroid/os/Parcel;)V
HSPLandroid/content/res/CompatibilityInfo;-><init>(Landroid/os/Parcel;Landroid/content/res/CompatibilityInfo-IA;)V
HSPLandroid/content/res/CompatibilityInfo;->applyDisplayMetricsIfNeeded(Landroid/util/DisplayMetrics;Z)V
-HSPLandroid/content/res/CompatibilityInfo;->applyOverrideScaleIfNeeded(Landroid/content/res/Configuration;)V
-HSPLandroid/content/res/CompatibilityInfo;->applyOverrideScaleIfNeeded(Landroid/util/MergedConfiguration;)V
+HSPLandroid/content/res/CompatibilityInfo;->applyOverrideIfNeeded(Landroid/content/res/Configuration;)V
+HSPLandroid/content/res/CompatibilityInfo;->applyOverrideIfNeeded(Landroid/util/MergedConfiguration;)V
HSPLandroid/content/res/CompatibilityInfo;->applyToConfiguration(ILandroid/content/res/Configuration;)V
HSPLandroid/content/res/CompatibilityInfo;->applyToDisplayMetrics(Landroid/util/DisplayMetrics;)V
HSPLandroid/content/res/CompatibilityInfo;->equals(Ljava/lang/Object;)Z
+SPLandroid/content/res/CompatibilityInfo;->getCompatibilityChangesForConfig(Landroid/content/res/CompatibilityInfo;)I
HSPLandroid/content/res/CompatibilityInfo;->getOverrideInvertedScale()F
HSPLandroid/content/res/CompatibilityInfo;->getTranslator()Landroid/content/res/CompatibilityInfo$Translator;
+HSPLandroid/content/res/CompatibilityInfo;->hasOverrideDisplayRotation()Z
HSPLandroid/content/res/CompatibilityInfo;->hasOverrideScale()Z
HSPLandroid/content/res/CompatibilityInfo;->hasOverrideScaling()Z
HSPLandroid/content/res/CompatibilityInfo;->hashCode()I
+SPLandroid/content/res/CompatibilityInfo;->isDisplayRotationEqual(Landroid/content/res/CompatibilityInfo;)Z
+SPLandroid/content/res/CompatibilityInfo;->isOverrideDisplayRotationRequired()Z
+SPLandroid/content/res/CompatibilityInfo;->isScaleEqual(Landroid/content/res/CompatibilityInfo;)Z
HSPLandroid/content/res/CompatibilityInfo;->isScalingRequired()Z
HSPLandroid/content/res/CompatibilityInfo;->needsCompatResources()Z
+SPLandroid/content/res/CompatibilityInfo;->setOverrideDisplayRotation(I)V
HSPLandroid/content/res/CompatibilityInfo;->setOverrideInvertedScale(F)V
HSPLandroid/content/res/CompatibilityInfo;->supportsScreen()Z
HSPLandroid/content/res/ComplexColor;-><init>()V
@@ -5045,7 +5261,9 @@ HSPLandroid/content/res/DrawableCache;->getInstance(JLandroid/content/res/Resour
HSPLandroid/content/res/DrawableCache;->shouldInvalidateEntry(Landroid/graphics/drawable/Drawable$ConstantState;I)Z
HSPLandroid/content/res/DrawableCache;->shouldInvalidateEntry(Ljava/lang/Object;I)Z
HSPLandroid/content/res/FeatureFlagsImpl;->defaultLocale()Z
+HSPLandroid/content/res/FeatureFlagsImpl;->registerResourcePaths()Z
HSPLandroid/content/res/Flags;->defaultLocale()Z
+HSPLandroid/content/res/Flags;->registerResourcePaths()Z+]Landroid/content/res/FeatureFlags;Landroid/content/res/FeatureFlagsImpl;
HSPLandroid/content/res/FontResourcesParser;->parse(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;
HSPLandroid/content/res/FontResourcesParser;->readFamilies(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;
HSPLandroid/content/res/FontResourcesParser;->readFamily(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;
@@ -5180,10 +5398,11 @@ HSPLandroid/content/res/Resources;->updateSystemConfiguration(Landroid/content/r
HSPLandroid/content/res/ResourcesImpl$$ExternalSyntheticLambda0;-><init>()V
HSPLandroid/content/res/ResourcesImpl$$ExternalSyntheticLambda0;->onHeaderDecoded(Landroid/graphics/ImageDecoder;Landroid/graphics/ImageDecoder$ImageInfo;Landroid/graphics/ImageDecoder$Source;)V
HSPLandroid/content/res/ResourcesImpl$$ExternalSyntheticLambda1;-><init>()V
-HSPLandroid/content/res/ResourcesImpl$$ExternalSyntheticLambda1;->onHeaderDecoded(Landroid/graphics/ImageDecoder;Landroid/graphics/ImageDecoder$ImageInfo;Landroid/graphics/ImageDecoder$Source;)V
+HSPLandroid/content/res/ResourcesImpl$$ExternalSyntheticLambda1;->get()Ljava/lang/Object;
HSPLandroid/content/res/ResourcesImpl$$ExternalSyntheticLambda2;-><init>()V
-HSPLandroid/content/res/ResourcesImpl$$ExternalSyntheticLambda2;->get()Ljava/lang/Object;
+HSPLandroid/content/res/ResourcesImpl$$ExternalSyntheticLambda2;->onHeaderDecoded(Landroid/graphics/ImageDecoder;Landroid/graphics/ImageDecoder$ImageInfo;Landroid/graphics/ImageDecoder$Source;)V
HSPLandroid/content/res/ResourcesImpl$LookupStack;-><init>()V
+SPLandroid/content/res/ResourcesImpl$LookupStack;-><init>(Landroid/content/res/ResourcesImpl-IA;)V
HSPLandroid/content/res/ResourcesImpl$LookupStack;->contains(I)Z
HSPLandroid/content/res/ResourcesImpl$LookupStack;->pop()V
HSPLandroid/content/res/ResourcesImpl$LookupStack;->push(I)V
@@ -5203,6 +5422,7 @@ HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->resolveAttributes(Landroid/con
HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->setTo(Landroid/content/res/ResourcesImpl$ThemeImpl;)V
HSPLandroid/content/res/ResourcesImpl;->-$$Nest$sfgetsThemeRegistry()Llibcore/util/NativeAllocationRegistry;
HSPLandroid/content/res/ResourcesImpl;-><init>(Landroid/content/res/AssetManager;Landroid/util/DisplayMetrics;Landroid/content/res/Configuration;Landroid/view/DisplayAdjustments;)V
+HSPLandroid/content/res/ResourcesImpl;-><init>(Landroid/content/res/AssetManager;Landroid/util/DisplayMetrics;Landroid/content/res/Configuration;Landroid/view/DisplayAdjustments;Z)V+]Landroid/app/ResourcesManager;Landroid/app/ResourcesManager;]Landroid/util/DisplayMetrics;Landroid/util/DisplayMetrics;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments;
HSPLandroid/content/res/ResourcesImpl;->adjustLanguageTag(Ljava/lang/String;)Ljava/lang/String;
HSPLandroid/content/res/ResourcesImpl;->attrForQuantityCode(Ljava/lang/String;)I
HSPLandroid/content/res/ResourcesImpl;->cacheDrawable(Landroid/util/TypedValue;ZLandroid/content/res/DrawableCache;Landroid/content/res/Resources$Theme;ZJLandroid/graphics/drawable/Drawable;I)V
@@ -5212,6 +5432,7 @@ HSPLandroid/content/res/ResourcesImpl;->dump(Ljava/io/PrintWriter;Ljava/lang/Str
HSPLandroid/content/res/ResourcesImpl;->finishPreloading()V
HSPLandroid/content/res/ResourcesImpl;->flushLayoutCache()V
HSPLandroid/content/res/ResourcesImpl;->getAnimatorCache()Landroid/content/res/ConfigurationBoundResourceCache;
+HSPLandroid/content/res/ResourcesImpl;->getAppliedSharedLibsHash()I
HSPLandroid/content/res/ResourcesImpl;->getAssets()Landroid/content/res/AssetManager;
HSPLandroid/content/res/ResourcesImpl;->getAttributeSetSourceResId(Landroid/util/AttributeSet;)I
HSPLandroid/content/res/ResourcesImpl;->getColorStateListFromInt(Landroid/util/TypedValue;J)Landroid/content/res/ColorStateList;
@@ -5249,6 +5470,7 @@ HSPLandroid/content/res/ResourcesImpl;->startPreloading()V
HSPLandroid/content/res/ResourcesImpl;->updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;)V
HSPLandroid/content/res/ResourcesImpl;->updateConfigurationImpl(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Z)V
HSPLandroid/content/res/ResourcesImpl;->verifyPreloadConfig(IIILjava/lang/String;)Z
+SPLandroid/content/res/ResourcesKey;-><init>(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)V
HSPLandroid/content/res/ResourcesKey;-><init>(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;[Landroid/content/res/loader/ResourcesLoader;)V
HSPLandroid/content/res/ResourcesKey;->equals(Ljava/lang/Object;)Z
HSPLandroid/content/res/ResourcesKey;->hasOverrideConfiguration()Z
@@ -5356,6 +5578,18 @@ HSPLandroid/content/res/XmlBlock;->decOpenCountLocked()V
HSPLandroid/content/res/XmlBlock;->finalize()V
HSPLandroid/content/res/XmlBlock;->newParser()Landroid/content/res/XmlResourceParser;
HSPLandroid/content/res/XmlBlock;->newParser(I)Landroid/content/res/XmlResourceParser;
+SPLandroid/content/res/loader/ResourcesLoader;-><init>()V
+SPLandroid/content/res/loader/ResourcesLoader;->addProvider(Landroid/content/res/loader/ResourcesProvider;)V
+SPLandroid/content/res/loader/ResourcesLoader;->arrayEquals([Landroid/content/res/loader/ResourcesProvider;[Landroid/content/res/loader/ResourcesProvider;)Z
+SPLandroid/content/res/loader/ResourcesLoader;->getApkAssets()Ljava/util/List;
+HSPLandroid/content/res/loader/ResourcesLoader;->notifyProvidersChangedLocked()V
+HSPLandroid/content/res/loader/ResourcesLoader;->registerOnProvidersChangedCallback(Ljava/lang/Object;Landroid/content/res/loader/ResourcesLoader$UpdateCallbacks;)V
+SPLandroid/content/res/loader/ResourcesProvider;-><init>(Landroid/content/res/ApkAssets;)V
+SPLandroid/content/res/loader/ResourcesProvider;->decrementRefCount()V
+SPLandroid/content/res/loader/ResourcesProvider;->getApkAssets()Landroid/content/res/ApkAssets;
+SPLandroid/content/res/loader/ResourcesProvider;->incrementRefCount()V
+SPLandroid/content/res/loader/ResourcesProvider;->loadFromApk(Landroid/os/ParcelFileDescriptor;)Landroid/content/res/loader/ResourcesProvider;
+SPLandroid/content/res/loader/ResourcesProvider;->loadFromApk(Landroid/os/ParcelFileDescriptor;Landroid/content/res/loader/AssetsProvider;)Landroid/content/res/loader/ResourcesProvider;
HSPLandroid/content/type/DefaultMimeMapFactory$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroid/content/type/DefaultMimeMapFactory;->create()Llibcore/content/type/MimeMap;
HSPLandroid/content/type/DefaultMimeMapFactory;->lambda$create$0(Ljava/lang/Class;Ljava/lang/String;)Ljava/io/InputStream;
@@ -5521,7 +5755,7 @@ HSPLandroid/database/DataSetObserver;-><init>()V
HSPLandroid/database/DatabaseUtils;->appendEscapedSQLString(Ljava/lang/StringBuilder;Ljava/lang/String;)V
HSPLandroid/database/DatabaseUtils;->categorizeStatement(Ljava/lang/String;Ljava/lang/String;)I
HSPLandroid/database/DatabaseUtils;->cursorFillWindow(Landroid/database/Cursor;ILandroid/database/CursorWindow;)V
-HSPLandroid/database/DatabaseUtils;->getSqlStatementPrefixSimple(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/database/DatabaseUtils;->getSqlStatementPrefixOffset(Ljava/lang/String;)I
HSPLandroid/database/DatabaseUtils;->getSqlStatementType(Ljava/lang/String;)I
HSPLandroid/database/DatabaseUtils;->getSqlStatementTypeExtended(Ljava/lang/String;)I
HSPLandroid/database/DatabaseUtils;->getTypeOfObject(Ljava/lang/Object;)I
@@ -5555,6 +5789,7 @@ HSPLandroid/database/MatrixCursor;-><init>([Ljava/lang/String;I)V
HSPLandroid/database/MatrixCursor;->addRow([Ljava/lang/Object;)V
HSPLandroid/database/MatrixCursor;->ensureCapacity(I)V
HSPLandroid/database/MatrixCursor;->get(I)Ljava/lang/Object;
+HSPLandroid/database/MatrixCursor;->getBlob(I)[B
HSPLandroid/database/MatrixCursor;->getColumnNames()[Ljava/lang/String;
HSPLandroid/database/MatrixCursor;->getCount()I
HSPLandroid/database/MatrixCursor;->getDouble(I)D
@@ -5576,9 +5811,8 @@ HSPLandroid/database/Observable;->registerObserver(Ljava/lang/Object;)V
HSPLandroid/database/Observable;->unregisterAll()V
HSPLandroid/database/Observable;->unregisterObserver(Ljava/lang/Object;)V
HSPLandroid/database/sqlite/FeatureFlagsImpl;-><init>()V
-HSPLandroid/database/sqlite/FeatureFlagsImpl;->sqliteAllowTempTables()Z
+HSPLandroid/database/sqlite/FeatureFlagsImpl;->onewayFinalizerCloseFixed()Z
HSPLandroid/database/sqlite/Flags;-><clinit>()V
-HSPLandroid/database/sqlite/Flags;->sqliteAllowTempTables()Z
HSPLandroid/database/sqlite/SQLiteClosable;-><init>()V
HSPLandroid/database/sqlite/SQLiteClosable;->acquireReference()V
HSPLandroid/database/sqlite/SQLiteClosable;->close()V
@@ -5587,16 +5821,30 @@ HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->getTruncateSize()J
HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->init(Ljava/lang/String;)V
HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->initIfNeeded()V
HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->isLegacyCompatibilityWalEnabled()Z
+HSPLandroid/database/sqlite/SQLiteConnection$Operation;-><init>(Landroid/database/sqlite/SQLiteConnection;)V
+SPLandroid/database/sqlite/SQLiteConnection$Operation;-><init>(Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection-IA;)V
+HSPLandroid/database/sqlite/SQLiteConnection$Operation;->copyFrom(Landroid/database/sqlite/SQLiteConnection$Operation;)V
HSPLandroid/database/sqlite/SQLiteConnection$Operation;->describe(Ljava/lang/StringBuilder;Z)V
HSPLandroid/database/sqlite/SQLiteConnection$Operation;->getTraceMethodName()Ljava/lang/String;
+HSPLandroid/database/sqlite/SQLiteConnection$Operation;->setEmpty()V
+HSPLandroid/database/sqlite/SQLiteConnection$Operation;->start()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+SPLandroid/database/sqlite/SQLiteConnection$OperationLog$$ExternalSyntheticLambda0;-><init>(Landroid/database/sqlite/SQLiteConnection$OperationLog;)V
+SPLandroid/database/sqlite/SQLiteConnection$OperationLog$$ExternalSyntheticLambda1;-><init>()V
+HSPLandroid/database/sqlite/SQLiteConnection$OperationLog$$ExternalSyntheticLambda1;->apply(I)Ljava/lang/Object;
+HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;-><init>(Landroid/database/sqlite/SQLiteConnection;)V
HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->beginOperation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)I
+HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->beginTransaction(Ljava/lang/String;)V
HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->dump(Landroid/util/Printer;)V
HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->endOperation(I)V
HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->endOperationDeferLog(I)Z
HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->endOperationDeferLogLocked(I)Z
+HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->endTransaction(Z)Z
HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->failOperation(ILjava/lang/Exception;)V
+HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->finishOperationLocked(Landroid/database/sqlite/SQLiteConnection$Operation;)J+]Landroid/database/sqlite/SQLiteConnection$RateLimiter;Landroid/database/sqlite/SQLiteConnection$RateLimiter;]Lcom/android/internal/util/RingBuffer;Lcom/android/internal/util/RingBuffer;
HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->getOperationLocked(I)Landroid/database/sqlite/SQLiteConnection$Operation;
+HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->lambda$new$1(I)[Landroid/database/sqlite/SQLiteConnection$Operation;
HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->newOperationCookieLocked(I)I
+HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->newOperationLocked()Landroid/database/sqlite/SQLiteConnection$Operation;
HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->setResult(J)V
HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->setResult(Ljava/lang/String;)V
HSPLandroid/database/sqlite/SQLiteConnection$PreparedStatement;-><init>()V
@@ -5606,6 +5854,7 @@ HSPLandroid/database/sqlite/SQLiteConnection$PreparedStatementCache;->entryRemov
HSPLandroid/database/sqlite/SQLiteConnection$PreparedStatementCache;->entryRemoved(ZLjava/lang/String;Landroid/database/sqlite/SQLiteConnection$PreparedStatement;Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V
HSPLandroid/database/sqlite/SQLiteConnection$PreparedStatementCache;->getLastSeqNum()J
HSPLandroid/database/sqlite/SQLiteConnection$PreparedStatementCache;->getStatement(Ljava/lang/String;)Landroid/database/sqlite/SQLiteConnection$PreparedStatement;
+HSPLandroid/database/sqlite/SQLiteConnection$RateLimiter;-><init>(JI)V
HSPLandroid/database/sqlite/SQLiteConnection;->-$$Nest$fgetmConnectionPtr(Landroid/database/sqlite/SQLiteConnection;)J
HSPLandroid/database/sqlite/SQLiteConnection;->-$$Nest$mfinalizePreparedStatement(Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V
HSPLandroid/database/sqlite/SQLiteConnection;->-$$Nest$smnativePrepareStatement(JLjava/lang/String;)J
@@ -5658,6 +5907,7 @@ HSPLandroid/database/sqlite/SQLiteConnection;->setSyncMode(Ljava/lang/String;)V
HSPLandroid/database/sqlite/SQLiteConnection;->setSyncModeFromConfiguration()V
HSPLandroid/database/sqlite/SQLiteConnection;->throwIfStatementForbidden(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V
HSPLandroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;-><init>()V
+SPLandroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;-><init>(Landroid/database/sqlite/SQLiteConnectionPool-IA;)V
HSPLandroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;->connectionAcquired(Landroid/database/sqlite/SQLiteConnection;)V
HSPLandroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;->connectionClosed(Landroid/database/sqlite/SQLiteConnection;)V
HSPLandroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;->connectionReleased(Landroid/database/sqlite/SQLiteConnection;)V
@@ -5736,6 +5986,7 @@ HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->-$$Nest$fgetmSyncMode(La
HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;-><init>(ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;IIJLjava/lang/String;Ljava/lang/String;)V
HSPLandroid/database/sqlite/SQLiteDatabase;-><init>(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;IIJLjava/lang/String;Ljava/lang/String;)V
HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransaction()V
+HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransaction(Landroid/database/sqlite/SQLiteTransactionListener;I)V
HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransaction(Landroid/database/sqlite/SQLiteTransactionListener;Z)V
HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransactionNonExclusive()V
HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransactionWithListener(Landroid/database/sqlite/SQLiteTransactionListener;)V
@@ -5920,6 +6171,7 @@ HSPLandroid/database/sqlite/SQLiteStatement;->simpleQueryForString()Ljava/lang/S
HSPLandroid/database/sqlite/SQLiteStatementInfo;-><init>()V
HSPLandroid/ddm/DdmHandle;->putString(Ljava/nio/ByteBuffer;Ljava/lang/String;)V
HSPLandroid/ddm/DdmHandleAppName$Names;-><init>(Ljava/lang/String;Ljava/lang/String;)V
+SPLandroid/ddm/DdmHandleAppName$Names;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/ddm/DdmHandleAppName-IA;)V
HSPLandroid/ddm/DdmHandleAppName;->sendAPNM(Ljava/lang/String;Ljava/lang/String;I)V
HSPLandroid/ddm/DdmHandleAppName;->setAppName(Ljava/lang/String;I)V
HSPLandroid/ddm/DdmHandleAppName;->setAppName(Ljava/lang/String;Ljava/lang/String;I)V
@@ -5980,7 +6232,7 @@ HSPLandroid/graphics/Bitmap$1;->createFromParcel(Landroid/os/Parcel;)Landroid/gr
HSPLandroid/graphics/Bitmap$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
HSPLandroid/graphics/Bitmap$Config;->nativeToConfig(I)Landroid/graphics/Bitmap$Config;
HSPLandroid/graphics/Bitmap$Config;->values()[Landroid/graphics/Bitmap$Config;
-HSPLandroid/graphics/Bitmap;-><init>(JIIIZ[BLandroid/graphics/NinePatch$InsetStruct;Z)V
+HSPLandroid/graphics/Bitmap;-><init>(JJIIIZ[BLandroid/graphics/NinePatch$InsetStruct;Z)V+]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap;]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;
HSPLandroid/graphics/Bitmap;->checkHardware(Ljava/lang/String;)V
HSPLandroid/graphics/Bitmap;->checkPixelAccess(II)V
HSPLandroid/graphics/Bitmap;->checkPixelsAccess(IIIIII[I)V
@@ -6012,6 +6264,7 @@ HSPLandroid/graphics/Bitmap;->getNinePatchInsets()Landroid/graphics/NinePatch$In
HSPLandroid/graphics/Bitmap;->getOpticalInsets(Landroid/graphics/Rect;)V
HSPLandroid/graphics/Bitmap;->getPixel(II)I
HSPLandroid/graphics/Bitmap;->getPixels([IIIIIII)V
+HSPLandroid/graphics/Bitmap;->getRegistry(ZJ)Llibcore/util/NativeAllocationRegistry;
HSPLandroid/graphics/Bitmap;->getRowBytes()I
HSPLandroid/graphics/Bitmap;->getScaledHeight(I)I
HSPLandroid/graphics/Bitmap;->getScaledWidth(I)I
@@ -6057,7 +6310,6 @@ HSPLandroid/graphics/BitmapShader;->createNativeInstance(JZ)J
HSPLandroid/graphics/BitmapShader;->shouldDiscardNativeInstance(Z)Z
HSPLandroid/graphics/BlendMode;->blendModeToPorterDuffMode(Landroid/graphics/BlendMode;)Landroid/graphics/PorterDuff$Mode;
HSPLandroid/graphics/BlendMode;->fromValue(I)Landroid/graphics/BlendMode;
-HSPLandroid/graphics/BlendMode;->getXfermode()Landroid/graphics/Xfermode;
HSPLandroid/graphics/BlendMode;->toValue(Landroid/graphics/BlendMode;)I
HSPLandroid/graphics/BlendModeColorFilter;-><init>(ILandroid/graphics/BlendMode;)V
HSPLandroid/graphics/BlendModeColorFilter;->createNativeInstance()J
@@ -6109,6 +6361,7 @@ HSPLandroid/graphics/Canvas;->getNativeCanvasWrapper()J
HSPLandroid/graphics/Canvas;->getSaveCount()I
HSPLandroid/graphics/Canvas;->getWidth()I
HSPLandroid/graphics/Canvas;->isHardwareAccelerated()Z
+HSPLandroid/graphics/Canvas;->isHighContrastTextEnabled()Z
HSPLandroid/graphics/Canvas;->isOpaque()Z
HSPLandroid/graphics/Canvas;->quickReject(FFFF)Z
HSPLandroid/graphics/Canvas;->restore()V
@@ -6213,6 +6466,7 @@ HSPLandroid/graphics/Compatibility;-><clinit>()V
HSPLandroid/graphics/Compatibility;->getTargetSdkVersion()I
HSPLandroid/graphics/Compatibility;->setTargetSdkVersion(I)V
HSPLandroid/graphics/DrawFilter;-><init>()V
+HSPLandroid/graphics/FontListParser;->readAxis(Lorg/xmlpull/v1/XmlPullParser;)Landroid/graphics/fonts/FontVariationAxis;
HSPLandroid/graphics/FontListParser;->readFamily(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Ljava/util/Map;Z)Landroid/text/FontConfig$FontFamily;
HSPLandroid/graphics/FontListParser;->readFont(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Ljava/util/Map;Z)Landroid/text/FontConfig$Font;
HSPLandroid/graphics/FrameInfo;-><init>()V
@@ -6291,6 +6545,7 @@ HSPLandroid/graphics/ImageDecoder$AssetInputStreamSource;->toString()Ljava/lang/
HSPLandroid/graphics/ImageDecoder$ImageDecoderSourceTrace;-><init>(Landroid/graphics/ImageDecoder;)V
HSPLandroid/graphics/ImageDecoder$ImageDecoderSourceTrace;->close()V
HSPLandroid/graphics/ImageDecoder$ImageInfo;-><init>(Landroid/util/Size;ZLjava/lang/String;Landroid/graphics/ColorSpace;)V
+HSPLandroid/graphics/ImageDecoder$ImageInfo;-><init>(Landroid/util/Size;ZLjava/lang/String;Landroid/graphics/ColorSpace;Landroid/graphics/ImageDecoder-IA;)V
HSPLandroid/graphics/ImageDecoder$InputStreamSource;-><init>(Landroid/content/res/Resources;Ljava/io/InputStream;I)V
HSPLandroid/graphics/ImageDecoder$InputStreamSource;->createImageDecoder(Z)Landroid/graphics/ImageDecoder;
HSPLandroid/graphics/ImageDecoder$InputStreamSource;->getDensity()I
@@ -6428,8 +6683,9 @@ HSPLandroid/graphics/Paint;->getNativeInstance()J
HSPLandroid/graphics/Paint;->getRunAdvance(Ljava/lang/CharSequence;IIIIZI)F
HSPLandroid/graphics/Paint;->getRunAdvance([CIIIIZI)F
HSPLandroid/graphics/Paint;->getRunCharacterAdvance(Ljava/lang/CharSequence;IIIIZI[FI)F
-HSPLandroid/graphics/Paint;->getRunCharacterAdvance(Ljava/lang/CharSequence;IIIIZI[FILandroid/graphics/RectF;Landroid/graphics/Paint$RunInfo;)F+]Landroid/graphics/Paint;Landroid/text/TextPaint;]Ljava/lang/CharSequence;megamorphic_types
+HSPLandroid/graphics/Paint;->getRunCharacterAdvance(Ljava/lang/CharSequence;IIIIZI[FILandroid/graphics/RectF;Landroid/graphics/Paint$RunInfo;)F
HSPLandroid/graphics/Paint;->getRunCharacterAdvance([CIIIIZI[FI)F
+HSPLandroid/graphics/Paint;->getRunCharacterAdvance([CIIIIZI[FILandroid/graphics/RectF;Landroid/graphics/Paint$RunInfo;)F
HSPLandroid/graphics/Paint;->getShader()Landroid/graphics/Shader;
HSPLandroid/graphics/Paint;->getShadowLayerColor()I
HSPLandroid/graphics/Paint;->getShadowLayerDx()F
@@ -6779,6 +7035,7 @@ HSPLandroid/graphics/Typeface$CustomFallbackBuilder;->build()Landroid/graphics/T
HSPLandroid/graphics/Typeface$CustomFallbackBuilder;->setStyle(Landroid/graphics/fonts/FontStyle;)Landroid/graphics/Typeface$CustomFallbackBuilder;
HSPLandroid/graphics/Typeface;-><init>(J)V
HSPLandroid/graphics/Typeface;-><init>(JLjava/lang/String;)V
+HSPLandroid/graphics/Typeface;-><init>(JLjava/lang/String;Landroid/graphics/Typeface;)V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;
HSPLandroid/graphics/Typeface;->create(Landroid/graphics/Typeface;I)Landroid/graphics/Typeface;
HSPLandroid/graphics/Typeface;->create(Ljava/lang/String;I)Landroid/graphics/Typeface;
HSPLandroid/graphics/Typeface;->createFromAsset(Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/graphics/Typeface;
@@ -7136,6 +7393,7 @@ HSPLandroid/graphics/drawable/Drawable;->unscheduleSelf(Ljava/lang/Runnable;)V
HSPLandroid/graphics/drawable/Drawable;->updateBlendModeFilter(Landroid/graphics/BlendModeColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/BlendMode;)Landroid/graphics/BlendModeColorFilter;
HSPLandroid/graphics/drawable/Drawable;->updateTintFilter(Landroid/graphics/PorterDuffColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuffColorFilter;
HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;-><init>()V
+SPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;-><init>(Landroid/graphics/drawable/DrawableContainer-IA;)V
HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V
HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->unwrap()Landroid/graphics/drawable/Drawable$Callback;
HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->wrap(Landroid/graphics/drawable/Drawable$Callback;)Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;
@@ -7846,8 +8104,12 @@ HSPLandroid/graphics/fonts/Font;-><init>(J)V
HSPLandroid/graphics/fonts/Font;->getAxes()[Landroid/graphics/fonts/FontVariationAxis;
HSPLandroid/graphics/fonts/Font;->getNativePtr()J
HSPLandroid/graphics/fonts/Font;->getStyle()Landroid/graphics/fonts/FontStyle;
+SPLandroid/graphics/fonts/FontFamily$Builder$NoImagePreloadHolder;->-$$Nest$sfgetsFamilyRegistry()Llibcore/util/NativeAllocationRegistry;
+SPLandroid/graphics/fonts/FontFamily$Builder$NoImagePreloadHolder;-><clinit>()V
+SPLandroid/graphics/fonts/FontFamily$Builder;->-$$Nest$smnGetReleaseNativeFamily()J
HSPLandroid/graphics/fonts/FontFamily$Builder;-><init>(Landroid/graphics/fonts/Font;)V
HSPLandroid/graphics/fonts/FontFamily$Builder;->build()Landroid/graphics/fonts/FontFamily;
+HSPLandroid/graphics/fonts/FontFamily$Builder;->build(Ljava/lang/String;IZZI)Landroid/graphics/fonts/FontFamily;
HSPLandroid/graphics/fonts/FontFamily$Builder;->makeStyleIdentifier(Landroid/graphics/fonts/Font;)I
HSPLandroid/graphics/fonts/FontFamily;-><init>(J)V
HSPLandroid/graphics/fonts/FontFamily;->getFont(I)Landroid/graphics/fonts/Font;
@@ -7861,6 +8123,7 @@ HSPLandroid/graphics/fonts/FontVariationAxis;-><init>(Ljava/lang/String;F)V
HSPLandroid/graphics/fonts/FontVariationAxis;->fromFontVariationSettings(Ljava/lang/String;)[Landroid/graphics/fonts/FontVariationAxis;
HSPLandroid/graphics/fonts/FontVariationAxis;->isValidTag(Ljava/lang/String;)Z
HSPLandroid/graphics/fonts/FontVariationAxis;->makeTag(Ljava/lang/String;)I
+HSPLandroid/graphics/fonts/FontVariationAxis;->toString()Ljava/lang/String;
HSPLandroid/graphics/fonts/SystemFonts;->mmap(Ljava/lang/String;)Ljava/nio/ByteBuffer;
HSPLandroid/graphics/text/LineBreakConfig$Builder;-><init>()V
HSPLandroid/graphics/text/LineBreakConfig$Builder;->build()Landroid/graphics/text/LineBreakConfig;
@@ -7889,6 +8152,7 @@ HSPLandroid/graphics/text/LineBreaker$Result;->getLineDescent(I)F
HSPLandroid/graphics/text/LineBreaker$Result;->getLineWidth(I)F
HSPLandroid/graphics/text/LineBreaker$Result;->getStartLineHyphenEdit(I)I
HSPLandroid/graphics/text/LineBreaker$Result;->hasLineTab(I)Z
+HSPLandroid/graphics/text/LineBreaker;-><init>(III[IZ)V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;
HSPLandroid/graphics/text/LineBreaker;->computeLineBreaks(Landroid/graphics/text/MeasuredText;Landroid/graphics/text/LineBreaker$ParagraphConstraints;I)Landroid/graphics/text/LineBreaker$Result;
HSPLandroid/graphics/text/MeasuredText$Builder;-><init>([C)V
HSPLandroid/graphics/text/MeasuredText$Builder;->appendReplacementRun(Landroid/graphics/Paint;IF)Landroid/graphics/text/MeasuredText$Builder;
@@ -7908,6 +8172,7 @@ HSPLandroid/hardware/CameraStatus$1;->createFromParcel(Landroid/os/Parcel;)Landr
HSPLandroid/hardware/CameraStatus$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
HSPLandroid/hardware/CameraStatus$1;->newArray(I)[Landroid/hardware/CameraStatus;
HSPLandroid/hardware/CameraStatus$1;->newArray(I)[Ljava/lang/Object;
+SPLandroid/hardware/DataSpace;->pack(III)I
HSPLandroid/hardware/GeomagneticField$LegendreTable;-><init>(IF)V
HSPLandroid/hardware/GeomagneticField;-><init>(FFFJ)V
HSPLandroid/hardware/GeomagneticField;->computeGeocentricCoordinates(FFF)V
@@ -7956,6 +8221,12 @@ HSPLandroid/hardware/SensorManager;->requestTriggerSensor(Landroid/hardware/Trig
HSPLandroid/hardware/SensorManager;->unregisterListener(Landroid/hardware/SensorEventListener;)V
HSPLandroid/hardware/SensorManager;->unregisterListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;)V
HSPLandroid/hardware/SensorPrivacyManager;->isSensorPrivacyEnabled(II)Z
+HSPLandroid/hardware/SyncFence;-><init>(J)V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;
+HSPLandroid/hardware/SyncFence;-><init>(Landroid/hardware/SyncFence;)V
+HSPLandroid/hardware/SyncFence;->await(J)Z
+SPLandroid/hardware/SyncFence;->awaitForever()Z
+HSPLandroid/hardware/SyncFence;->close()V
+HSPLandroid/hardware/SyncFence;->getSignalTime()J
HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;-><init>(Landroid/os/Looper;Landroid/hardware/SystemSensorManager;ILjava/lang/String;)V
HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->addSensor(Landroid/hardware/Sensor;II)Z
HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->disableSensor(Landroid/hardware/Sensor;)I
@@ -7974,6 +8245,8 @@ HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;->removeSensorEvent(La
HSPLandroid/hardware/SystemSensorManager$TriggerEventQueue;->addSensorEvent(Landroid/hardware/Sensor;)V
HSPLandroid/hardware/SystemSensorManager$TriggerEventQueue;->dispatchSensorEvent(I[FIJ)V
HSPLandroid/hardware/SystemSensorManager$TriggerEventQueue;->removeSensorEvent(Landroid/hardware/Sensor;)V
+HSPLandroid/hardware/SystemSensorManager;->-$$Nest$fgetmHandleToSensor(Landroid/hardware/SystemSensorManager;)Ljava/util/HashMap;
+SPLandroid/hardware/SystemSensorManager;-><clinit>()V
HSPLandroid/hardware/SystemSensorManager;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
HSPLandroid/hardware/SystemSensorManager;->cancelTriggerSensorImpl(Landroid/hardware/TriggerEventListener;Landroid/hardware/Sensor;Z)Z
HSPLandroid/hardware/SystemSensorManager;->getFullSensorList()Ljava/util/List;
@@ -8083,6 +8356,11 @@ HSPLandroid/hardware/camera2/utils/TypeReference;->getRawType()Ljava/lang/Class;
HSPLandroid/hardware/camera2/utils/TypeReference;->getRawType(Ljava/lang/reflect/Type;)Ljava/lang/Class;
HSPLandroid/hardware/camera2/utils/TypeReference;->getType()Ljava/lang/reflect/Type;
HSPLandroid/hardware/camera2/utils/TypeReference;->hashCode()I
+SPLandroid/hardware/devicestate/DeviceState$Configuration;-><init>(ILjava/lang/String;Landroid/util/ArraySet;Landroid/util/ArraySet;)V
+SPLandroid/hardware/devicestate/DeviceState$Configuration;-><init>(ILjava/lang/String;Landroid/util/ArraySet;Landroid/util/ArraySet;Landroid/hardware/devicestate/DeviceState-IA;)V
+SPLandroid/hardware/devicestate/DeviceState$Configuration;->getIdentifier()I
+SPLandroid/hardware/devicestate/DeviceState;-><init>(Landroid/hardware/devicestate/DeviceState$Configuration;)V
+SPLandroid/hardware/devicestate/DeviceState;->getIdentifier()I
HSPLandroid/hardware/devicestate/DeviceStateInfo$1;-><init>()V
HSPLandroid/hardware/devicestate/DeviceStateInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/devicestate/DeviceStateInfo;
HSPLandroid/hardware/devicestate/DeviceStateInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
@@ -8094,12 +8372,14 @@ HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWra
HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper$$ExternalSyntheticLambda2;->run()V
HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;-><init>(Landroid/hardware/devicestate/DeviceStateManager$DeviceStateCallback;Ljava/util/concurrent/Executor;)V
HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateManagerCallback;-><init>(Landroid/hardware/devicestate/DeviceStateManagerGlobal;)V
+SPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateManagerCallback;-><init>(Landroid/hardware/devicestate/DeviceStateManagerGlobal;Landroid/hardware/devicestate/DeviceStateManagerGlobal-IA;)V
HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateManagerCallback;->onDeviceStateInfoChanged(Landroid/hardware/devicestate/DeviceStateInfo;)V
HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal;->-$$Nest$mhandleDeviceStateInfoChanged(Landroid/hardware/devicestate/DeviceStateManagerGlobal;Landroid/hardware/devicestate/DeviceStateInfo;)V
HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal;-><init>(Landroid/hardware/devicestate/IDeviceStateManager;)V
HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal;->findCallbackLocked(Landroid/hardware/devicestate/DeviceStateManager$DeviceStateCallback;)I
HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal;->getInstance()Landroid/hardware/devicestate/DeviceStateManagerGlobal;
HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal;->handleDeviceStateInfoChanged(Landroid/hardware/devicestate/DeviceStateInfo;)V
+SPLandroid/hardware/devicestate/DeviceStateManagerGlobal;->registerCallbackLocked()V
HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal;->registerDeviceStateCallback(Landroid/hardware/devicestate/DeviceStateManager$DeviceStateCallback;Ljava/util/concurrent/Executor;)V
HSPLandroid/hardware/devicestate/IDeviceStateManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
HSPLandroid/hardware/devicestate/IDeviceStateManager$Stub$Proxy;->asBinder()Landroid/os/IBinder;
@@ -8155,17 +8435,20 @@ HSPLandroid/hardware/display/DisplayManager;->getWifiDisplayStatus()Landroid/har
HSPLandroid/hardware/display/DisplayManager;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;)V
HSPLandroid/hardware/display/DisplayManager;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;J)V
HSPLandroid/hardware/display/DisplayManager;->unregisterDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;)V
-HSPLandroid/hardware/display/DisplayManagerGlobal$1;-><init>(Landroid/hardware/display/DisplayManagerGlobal;ILjava/lang/String;)V
+SPLandroid/hardware/display/DisplayManagerGlobal$1;-><init>(Landroid/hardware/display/DisplayManagerGlobal;Landroid/app/PropertyInvalidatedCache$Args;Ljava/lang/String;Landroid/app/PropertyInvalidatedCache$QueryHandler;)V
HSPLandroid/hardware/display/DisplayManagerGlobal$1;->recompute(Ljava/lang/Integer;)Landroid/view/DisplayInfo;
HSPLandroid/hardware/display/DisplayManagerGlobal$1;->recompute(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate$$ExternalSyntheticLambda0;-><init>(Landroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;JIILandroid/view/DisplayInfo;Z)V
HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate$$ExternalSyntheticLambda0;->run()V
HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->clearEvents()V
-HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->handleDisplayEventInner(IILandroid/view/DisplayInfo;Z)V+]Landroid/hardware/display/DisplayManager$DisplayListener;megamorphic_types
+HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->handleDisplayEventInner(IILandroid/view/DisplayInfo;Z)V
+HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->sendDisplayEvent(IILandroid/view/DisplayInfo;Z)V+]Ljava/util/concurrent/Executor;missing_types
HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;-><init>(Landroid/hardware/display/DisplayManagerGlobal;)V
+SPLandroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;-><init>(Landroid/hardware/display/DisplayManagerGlobal;Landroid/hardware/display/DisplayManagerGlobal-IA;)V
HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;->onDisplayEvent(II)V
HSPLandroid/hardware/display/DisplayManagerGlobal;->-$$Nest$fgetmDm(Landroid/hardware/display/DisplayManagerGlobal;)Landroid/hardware/display/IDisplayManager;
HSPLandroid/hardware/display/DisplayManagerGlobal;-><init>(Landroid/hardware/display/IDisplayManager;)V
-HSPLandroid/hardware/display/DisplayManagerGlobal;->calculateEventsMaskLocked()I
+HSPLandroid/hardware/display/DisplayManagerGlobal;->calculateEventsMaskLocked()J+]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
HSPLandroid/hardware/display/DisplayManagerGlobal;->extraLogging()Z
HSPLandroid/hardware/display/DisplayManagerGlobal;->findDisplayListenerLocked(Landroid/hardware/display/DisplayManager$DisplayListener;)I
HSPLandroid/hardware/display/DisplayManagerGlobal;->getCompatibleDisplay(ILandroid/content/res/Resources;)Landroid/view/Display;
@@ -8176,10 +8459,14 @@ HSPLandroid/hardware/display/DisplayManagerGlobal;->getDisplayInfo(I)Landroid/vi
HSPLandroid/hardware/display/DisplayManagerGlobal;->getDisplayInfoLocked(I)Landroid/view/DisplayInfo;
HSPLandroid/hardware/display/DisplayManagerGlobal;->getInstance()Landroid/hardware/display/DisplayManagerGlobal;
HSPLandroid/hardware/display/DisplayManagerGlobal;->getLooperForHandler(Landroid/os/Handler;)Landroid/os/Looper;
+SPLandroid/hardware/display/DisplayManagerGlobal;->getOverlaySupport()Landroid/hardware/OverlayProperties;
HSPLandroid/hardware/display/DisplayManagerGlobal;->getPreferredWideGamutColorSpace()Landroid/graphics/ColorSpace;
HSPLandroid/hardware/display/DisplayManagerGlobal;->getStableDisplaySize()Landroid/graphics/Point;
HSPLandroid/hardware/display/DisplayManagerGlobal;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus;
+HSPLandroid/hardware/display/DisplayManagerGlobal;->handleDisplayEvent(IIZ)V+]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
HSPLandroid/hardware/display/DisplayManagerGlobal;->initExtraLogging()Z
+SPLandroid/hardware/display/DisplayManagerGlobal;->mapPrivateEventFlags(J)J
+HSPLandroid/hardware/display/DisplayManagerGlobal;->mapPublicEventFlags(J)J
HSPLandroid/hardware/display/DisplayManagerGlobal;->maybeLogAllDisplayListeners()V
HSPLandroid/hardware/display/DisplayManagerGlobal;->registerCallbackIfNeededLocked()V
HSPLandroid/hardware/display/DisplayManagerGlobal;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Ljava/util/concurrent/Executor;JLjava/lang/String;)V
@@ -8256,6 +8543,7 @@ HSPLandroid/hardware/input/InputManagerGlobal;->getInstance()Landroid/hardware/i
HSPLandroid/hardware/input/InputManagerGlobal;->populateInputDevicesLocked()V
HSPLandroid/hardware/input/InputManagerGlobal;->registerInputDeviceListener(Landroid/hardware/input/InputManager$InputDeviceListener;Landroid/os/Handler;)V
HSPLandroid/hardware/input/InputSettings;->isStylusPointerIconEnabled(Landroid/content/Context;)Z
+HSPLandroid/hardware/input/InputSettings;->isStylusPointerIconEnabled(Landroid/content/Context;Z)Z
HSPLandroid/hardware/location/ContextHubClient;-><init>(Landroid/hardware/location/ContextHubInfo;Z)V
HSPLandroid/hardware/location/ContextHubClient;->sendMessageToNanoApp(Landroid/hardware/location/NanoAppMessage;)I
HSPLandroid/hardware/location/ContextHubClient;->setClientProxy(Landroid/hardware/location/IContextHubClient;)V
@@ -8391,6 +8679,7 @@ HSPLandroid/icu/impl/CalendarUtil;->getCalendarType(Landroid/icu/util/ULocale;)L
HSPLandroid/icu/impl/CaseMapImpl;->appendUnchanged(Ljava/lang/CharSequence;IILjava/lang/Appendable;ILandroid/icu/text/Edits;)V
HSPLandroid/icu/impl/CaseMapImpl;->applyEdits(Ljava/lang/CharSequence;Ljava/lang/StringBuilder;Landroid/icu/text/Edits;)Ljava/lang/String;
HSPLandroid/icu/impl/CaseMapImpl;->fold(ILjava/lang/CharSequence;)Ljava/lang/String;
+HSPLandroid/icu/impl/CaseMapImpl;->fold(ILjava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable;
HSPLandroid/icu/impl/CaseMapImpl;->internalToLower(IILjava/lang/CharSequence;IILandroid/icu/impl/CaseMapImpl$StringContextIterator;Ljava/lang/Appendable;Landroid/icu/text/Edits;)V
HSPLandroid/icu/impl/CaseMapImpl;->internalToUpper(IILjava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)V
HSPLandroid/icu/impl/CaseMapImpl;->toUpper(IILjava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable;
@@ -8405,6 +8694,7 @@ HSPLandroid/icu/impl/CurrencyData$CurrencySpacingInfo;->setSymbolIfNull(Landroid
HSPLandroid/icu/impl/DateNumberFormat;-><init>(Landroid/icu/util/ULocale;Ljava/lang/String;Ljava/lang/String;)V
HSPLandroid/icu/impl/DateNumberFormat;->getDigits()[C
HSPLandroid/icu/impl/DateNumberFormat;->initialize(Landroid/icu/util/ULocale;Ljava/lang/String;Ljava/lang/String;)V
+HSPLandroid/icu/impl/DayPeriodRules$CutoffType;->fromStringOrNull(Ljava/lang/CharSequence;)Landroid/icu/impl/DayPeriodRules$CutoffType;
HSPLandroid/icu/impl/DayPeriodRules$DayPeriod;->fromStringOrNull(Ljava/lang/CharSequence;)Landroid/icu/impl/DayPeriodRules$DayPeriod;
HSPLandroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->parseHour(Ljava/lang/String;)I
HSPLandroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->processRules(Landroid/icu/impl/UResource$Table;Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
@@ -8448,6 +8738,7 @@ HSPLandroid/icu/impl/ICUBinary$DatPackageReader;->getDataOffset(Ljava/nio/ByteBu
HSPLandroid/icu/impl/ICUBinary$DatPackageReader;->getNameOffset(Ljava/nio/ByteBuffer;I)I
HSPLandroid/icu/impl/ICUBinary$PackageDataFile;->addBaseNamesInFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
HSPLandroid/icu/impl/ICUBinary$PackageDataFile;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer;
+SPLandroid/icu/impl/ICUBinary$SingleDataFile;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer;
HSPLandroid/icu/impl/ICUBinary;->addBaseNamesInFileFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
HSPLandroid/icu/impl/ICUBinary;->compareKeys(Ljava/lang/CharSequence;Ljava/nio/ByteBuffer;I)I
HSPLandroid/icu/impl/ICUBinary;->compareKeys(Ljava/lang/CharSequence;[BI)I
@@ -8633,6 +8924,7 @@ HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getType()I
HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;-><init>(II)V
HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->get(I)Ljava/lang/Object;
HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->putIfAbsent(ILjava/lang/Object;I)Ljava/lang/Object;
+HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->-$$Nest$smstoreDirectly(I)Z
HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;-><init>(I)V
HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->findSimple(I)I
HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->get(I)Ljava/lang/Object;
@@ -8657,6 +8949,7 @@ HSPLandroid/icu/impl/ICUResourceBundleReader;->-$$Nest$mcompareKeys(Landroid/icu
HSPLandroid/icu/impl/ICUResourceBundleReader;->-$$Nest$mgetInt(Landroid/icu/impl/ICUResourceBundleReader;I)I
HSPLandroid/icu/impl/ICUResourceBundleReader;->-$$Nest$mgetResourceByteOffset(Landroid/icu/impl/ICUResourceBundleReader;I)I
HSPLandroid/icu/impl/ICUResourceBundleReader;->-$$Nest$mgetTableKeyOffsets(Landroid/icu/impl/ICUResourceBundleReader;I)[C
+HSPLandroid/icu/impl/ICUResourceBundleReader;->-$$Nest$msetKeyFromKey16(Landroid/icu/impl/ICUResourceBundleReader;ILandroid/icu/impl/UResource$Key;)V
HSPLandroid/icu/impl/ICUResourceBundleReader;->-$$Nest$sfgetNULL_READER()Landroid/icu/impl/ICUResourceBundleReader;
HSPLandroid/icu/impl/ICUResourceBundleReader;->-$$Nest$sfgetPUBLIC_TYPES()[I
HSPLandroid/icu/impl/ICUResourceBundleReader;->-$$Nest$smRES_GET_OFFSET(I)I
@@ -8764,6 +9057,8 @@ HSPLandroid/icu/impl/Norm2AllModes;->getNFKCInstance()Landroid/icu/impl/Norm2All
HSPLandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;-><init>(Landroid/icu/impl/Normalizer2Impl;Ljava/lang/Appendable;I)V
HSPLandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->append(Ljava/lang/CharSequence;IIZII)V
HSPLandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->flushAndAppendZeroCC(Ljava/lang/CharSequence;II)Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;
+HSPLandroid/icu/impl/Normalizer2Impl;->addLcccChars(Landroid/icu/text/UnicodeSet;)V
+HSPLandroid/icu/impl/Normalizer2Impl;->addPropertyStarts(Landroid/icu/text/UnicodeSet;)V
HSPLandroid/icu/impl/Normalizer2Impl;->addToStartSet(Landroid/icu/util/MutableCodePointTrie;II)V
HSPLandroid/icu/impl/Normalizer2Impl;->composeQuickCheck(Ljava/lang/CharSequence;IIZZ)I
HSPLandroid/icu/impl/Normalizer2Impl;->decompose(IILandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)V
@@ -8777,7 +9072,6 @@ HSPLandroid/icu/impl/Normalizer2Impl;->isDecompYes(I)Z
HSPLandroid/icu/impl/Normalizer2Impl;->isHangulLV(I)Z
HSPLandroid/icu/impl/Normalizer2Impl;->isHangulLVT(I)Z
HSPLandroid/icu/impl/Normalizer2Impl;->isInert(I)Z
-HSPLandroid/icu/impl/Normalizer2Impl;->isMaybeOrNonZeroCC(I)Z
HSPLandroid/icu/impl/Normalizer2Impl;->mapAlgorithmic(II)I
HSPLandroid/icu/impl/OlsonTimeZone;-><init>(Landroid/icu/util/UResourceBundle;Landroid/icu/util/UResourceBundle;Ljava/lang/String;)V
HSPLandroid/icu/impl/OlsonTimeZone;->clone()Ljava/lang/Object;
@@ -8847,6 +9141,7 @@ HSPLandroid/icu/impl/StandardPlural;->values()[Landroid/icu/impl/StandardPlural;
HSPLandroid/icu/impl/StaticUnicodeSets;->chooseFrom(Ljava/lang/String;Landroid/icu/impl/StaticUnicodeSets$Key;)Landroid/icu/impl/StaticUnicodeSets$Key;
HSPLandroid/icu/impl/StaticUnicodeSets;->chooseFrom(Ljava/lang/String;Landroid/icu/impl/StaticUnicodeSets$Key;Landroid/icu/impl/StaticUnicodeSets$Key;)Landroid/icu/impl/StaticUnicodeSets$Key;
HSPLandroid/icu/impl/StaticUnicodeSets;->get(Landroid/icu/impl/StaticUnicodeSets$Key;)Landroid/icu/text/UnicodeSet;
+HSPLandroid/icu/impl/StringRange;->add(II[I[ILjava/lang/StringBuilder;Ljava/util/Collection;)V
HSPLandroid/icu/impl/StringSegment;-><init>(Ljava/lang/String;Z)V
HSPLandroid/icu/impl/StringSegment;->adjustOffset(I)V
HSPLandroid/icu/impl/StringSegment;->charAt(I)C
@@ -8930,6 +9225,7 @@ HSPLandroid/icu/impl/UCharacterProperty;->getIntPropertyValue(II)I
HSPLandroid/icu/impl/UCharacterProperty;->getNumericTypeValue(I)I
HSPLandroid/icu/impl/UCharacterProperty;->getProperty(I)I
HSPLandroid/icu/impl/UCharacterProperty;->getType(I)I
+HSPLandroid/icu/impl/UCharacterProperty;->upropsvec_addPropertyStarts(Landroid/icu/text/UnicodeSet;)V
HSPLandroid/icu/impl/UPropertyAliases;->asciiToLowercase(I)I
HSPLandroid/icu/impl/UPropertyAliases;->containsName(Landroid/icu/util/BytesTrie;Ljava/lang/CharSequence;)Z
HSPLandroid/icu/impl/UPropertyAliases;->findProperty(I)I
@@ -8954,6 +9250,7 @@ HSPLandroid/icu/impl/Utility;->arrayEquals([BLjava/lang/Object;)Z
HSPLandroid/icu/impl/Utility;->arrayRegionMatches([BI[BII)Z
HSPLandroid/icu/impl/Utility;->sameObjects(Ljava/lang/Object;Ljava/lang/Object;)Z
HSPLandroid/icu/impl/Utility;->shouldAlwaysBeEscaped(I)Z
+HSPLandroid/icu/impl/ValidIdentifiers$ValidityData;->addRange(Ljava/lang/String;Ljava/util/Set;)V
HSPLandroid/icu/impl/ValidIdentifiers$ValiditySet;-><init>(Ljava/util/Set;Z)V
HSPLandroid/icu/impl/ZoneMeta$SystemTimeZoneCache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroid/icu/impl/ZoneMeta$SystemTimeZoneCache;->createInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/impl/OlsonTimeZone;
@@ -9097,12 +9394,20 @@ HSPLandroid/icu/impl/locale/InternalLocaleBuilder;->setLanguage(Ljava/lang/Strin
HSPLandroid/icu/impl/locale/InternalLocaleBuilder;->setRegion(Ljava/lang/String;)Landroid/icu/impl/locale/InternalLocaleBuilder;
HSPLandroid/icu/impl/locale/KeyTypeData;->initFromResourceBundle()V
HSPLandroid/icu/impl/locale/LSR$CachedDecoder$$ExternalSyntheticLambda0;-><init>()V
+HSPLandroid/icu/impl/locale/LSR$CachedDecoder$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/icu/impl/locale/LSR$CachedDecoder;->$r8$lambda$2Vo5iUPXBd-yMfh29hR8_HJ2Bj4(I)Ljava/lang/String;
HSPLandroid/icu/impl/locale/LSR$CachedDecoder;->decode(I)[Ljava/lang/String;
HSPLandroid/icu/impl/locale/LSR$CachedDecoder;->toLanguage(I)Ljava/lang/String;
+HSPLandroid/icu/impl/locale/LSR;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+HSPLandroid/icu/impl/locale/LSR;->decodeInts([I[Ljava/lang/String;)[Landroid/icu/impl/locale/LSR;
HSPLandroid/icu/impl/locale/LSR;->indexForRegion(Ljava/lang/String;)I
HSPLandroid/icu/impl/locale/LanguageTag;->isLanguage(Ljava/lang/String;)Z
HSPLandroid/icu/impl/locale/LanguageTag;->isRegion(Ljava/lang/String;)Z
+HSPLandroid/icu/impl/locale/LikelySubtags;->getCanonical(Ljava/util/Map;Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/Map;Ljava/util/HashMap;
+HSPLandroid/icu/impl/locale/LikelySubtags;->makeMaximizedLsr(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Landroid/icu/impl/locale/LSR;
+HSPLandroid/icu/impl/locale/LikelySubtags;->makeMaximizedLsrFrom(Landroid/icu/util/ULocale;Z)Landroid/icu/impl/locale/LSR;
HSPLandroid/icu/impl/locale/LikelySubtags;->maximize(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Landroid/icu/impl/locale/LSR;
+HSPLandroid/icu/impl/locale/LikelySubtags;->trieNext(Landroid/icu/util/BytesTrie;Ljava/lang/String;I)I
HSPLandroid/icu/impl/locale/LocaleExtensions;->getKeys()Ljava/util/Set;
HSPLandroid/icu/impl/locale/LocaleObjectCache$CacheEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
HSPLandroid/icu/impl/locale/LocaleObjectCache$CacheEntry;->getKey()Ljava/lang/Object;
@@ -9417,6 +9722,7 @@ HSPLandroid/icu/impl/number/range/StandardPluralRanges;->getLanguageToSet()Ljava
HSPLandroid/icu/impl/number/range/StandardPluralRanges;->getPluralRangesData(Ljava/lang/String;Landroid/icu/impl/number/range/StandardPluralRanges;)V
HSPLandroid/icu/impl/number/range/StandardPluralRanges;->getSetForLocale(Landroid/icu/util/ULocale;)Ljava/lang/String;
HSPLandroid/icu/impl/number/range/StandardPluralRanges;->setCapacity(I)V
+HSPLandroid/icu/lang/CharSequences;->codePoints(Ljava/lang/CharSequence;)[I
HSPLandroid/icu/lang/UCharacter;->codePointAt(Ljava/lang/CharSequence;I)I
HSPLandroid/icu/lang/UCharacter;->digit(I)I
HSPLandroid/icu/lang/UCharacter;->foldCase(II)I
@@ -9829,8 +10135,10 @@ HSPLandroid/icu/text/DecimalFormatSymbols;->setPlusSign(C)V
HSPLandroid/icu/text/DecimalFormatSymbols;->setPlusSignString(Ljava/lang/String;)V
HSPLandroid/icu/text/DecimalFormatSymbols;->setZeroDigit(C)V
HSPLandroid/icu/text/DisplayContext;->type()Landroid/icu/text/DisplayContext$Type;
+HSPLandroid/icu/text/Edits$Iterator;-><init>([CIZZ)V
HSPLandroid/icu/text/Edits$Iterator;->next()Z
HSPLandroid/icu/text/Edits$Iterator;->next(Z)Z
+HSPLandroid/icu/text/Edits$Iterator;->noNext()Z
HSPLandroid/icu/text/Edits$Iterator;->updateNextIndexes()V
HSPLandroid/icu/text/Edits;-><init>()V
HSPLandroid/icu/text/Edits;->addReplace(II)V
@@ -10184,6 +10492,7 @@ HSPLandroid/icu/util/Calendar;->weekNumber(II)I
HSPLandroid/icu/util/Calendar;->weekNumber(III)I
HSPLandroid/icu/util/CaseInsensitiveString;-><init>(Ljava/lang/String;)V
HSPLandroid/icu/util/CaseInsensitiveString;->equals(Ljava/lang/Object;)Z
+HSPLandroid/icu/util/CaseInsensitiveString;->getFolded()V
HSPLandroid/icu/util/CaseInsensitiveString;->hashCode()I
HSPLandroid/icu/util/CharsTrie;-><init>(Ljava/lang/CharSequence;I)V
HSPLandroid/icu/util/CharsTrie;->branchNext(III)Landroid/icu/util/BytesTrie$Result;
@@ -10409,6 +10718,7 @@ HSPLandroid/icu/util/ULocale;->getLanguage()Ljava/lang/String;
HSPLandroid/icu/util/ULocale;->getName()Ljava/lang/String;
HSPLandroid/icu/util/ULocale;->getName(Ljava/lang/String;)Ljava/lang/String;
HSPLandroid/icu/util/ULocale;->getRegionForSupplementalData(Landroid/icu/util/ULocale;Z)Ljava/lang/String;
+HSPLandroid/icu/util/ULocale;->getRegionFromKey(Landroid/icu/util/ULocale;Ljava/lang/String;)Ljava/lang/String;
HSPLandroid/icu/util/ULocale;->getScript()Ljava/lang/String;
HSPLandroid/icu/util/ULocale;->getScript(Ljava/lang/String;)Ljava/lang/String;
HSPLandroid/icu/util/ULocale;->getShortestSubtagLength(Ljava/lang/String;)I
@@ -10533,7 +10843,6 @@ HSPLandroid/media/AudioDeviceInfo;-><init>(Landroid/media/AudioDevicePort;)V
HSPLandroid/media/AudioDeviceInfo;->convertInternalDeviceToDeviceType(I)I
HSPLandroid/media/AudioDeviceInfo;->getId()I
HSPLandroid/media/AudioDeviceInfo;->getType()I
-HSPLandroid/media/AudioDevicePort;-><init>(Landroid/media/AudioHandle;Ljava/lang/String;Ljava/util/List;[Landroid/media/AudioGain;ILjava/lang/String;[I[ILjava/util/List;)V
HSPLandroid/media/AudioDevicePort;-><init>(Landroid/media/AudioHandle;Ljava/lang/String;[I[I[I[I[Landroid/media/AudioGain;ILjava/lang/String;[I[I)V
HSPLandroid/media/AudioDevicePort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioDevicePortConfig;
HSPLandroid/media/AudioDevicePort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioPortConfig;
@@ -10737,7 +11046,6 @@ HSPLandroid/media/IAudioService$Stub$Proxy;->isStreamMute(I)Z
HSPLandroid/media/IAudioService$Stub$Proxy;->isVolumeFixed()Z
HSPLandroid/media/IAudioService$Stub$Proxy;->playSoundEffect(II)V
HSPLandroid/media/IAudioService$Stub$Proxy;->playerAttributes(ILandroid/media/AudioAttributes;)V
-HSPLandroid/media/IAudioService$Stub$Proxy;->playerEvent(III)V
HSPLandroid/media/IAudioService$Stub$Proxy;->registerRecordingCallback(Landroid/media/IRecordingConfigDispatcher;)V
HSPLandroid/media/IAudioService$Stub$Proxy;->releasePlayer(I)V
HSPLandroid/media/IAudioService$Stub$Proxy;->requestAudioFocus(Landroid/media/AudioAttributes;ILandroid/os/IBinder;Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/media/audiopolicy/IAudioPolicyCallback;I)I
@@ -11079,17 +11387,14 @@ HSPLandroid/media/PlayerBase;->basePause()V
HSPLandroid/media/PlayerBase;->baseRegisterPlayer(I)V
HSPLandroid/media/PlayerBase;->baseRelease()V
HSPLandroid/media/PlayerBase;->baseSetVolume(FF)V
-HSPLandroid/media/PlayerBase;->baseStart(I)V
HSPLandroid/media/PlayerBase;->baseStop()V
HSPLandroid/media/PlayerBase;->baseUpdateAudioAttributes(Landroid/media/AudioAttributes;)V
-HSPLandroid/media/PlayerBase;->baseUpdateDeviceId(Landroid/media/AudioDeviceInfo;)V
HSPLandroid/media/PlayerBase;->deprecateStreamTypeForPlayback(ILjava/lang/String;Ljava/lang/String;)V
HSPLandroid/media/PlayerBase;->getCurrentOpPackageName()Ljava/lang/String;
HSPLandroid/media/PlayerBase;->getService()Landroid/media/IAudioService;
HSPLandroid/media/PlayerBase;->getStartDelayMs()I
HSPLandroid/media/PlayerBase;->resolvePlaybackSessionId(Landroid/content/Context;I)I
HSPLandroid/media/PlayerBase;->updatePlayerVolume()V
-HSPLandroid/media/PlayerBase;->updateState(II)V
HSPLandroid/media/RoutingSessionInfo$Builder;->build()Landroid/media/RoutingSessionInfo;
HSPLandroid/media/RoutingSessionInfo;-><init>(Landroid/media/RoutingSessionInfo$Builder;)V
HSPLandroid/media/RoutingSessionInfo;->convertToUniqueRouteIds(Ljava/util/List;)Ljava/util/List;
@@ -11290,7 +11595,10 @@ HSPLandroid/metrics/LogMaker;->setCategory(I)Landroid/metrics/LogMaker;
HSPLandroid/metrics/LogMaker;->setComponentName(Landroid/content/ComponentName;)Landroid/metrics/LogMaker;
HSPLandroid/metrics/LogMaker;->setSubtype(I)Landroid/metrics/LogMaker;
HSPLandroid/metrics/LogMaker;->setType(I)Landroid/metrics/LogMaker;
+HSPLandroid/multiuser/FeatureFlagsImpl;->cacheUserSerialNumberReadOnly()Z
+HSPLandroid/multiuser/FeatureFlagsImpl;->cachingDevelopmentImprovements()Z
HSPLandroid/multiuser/FeatureFlagsImpl;->enableSystemUserOnlyForServicesAndProviders()Z
+SPLandroid/multiuser/Flags;->cachingDevelopmentImprovements()Z
HSPLandroid/multiuser/Flags;->enableSystemUserOnlyForServicesAndProviders()Z
HSPLandroid/net/Credentials;-><init>(III)V
HSPLandroid/net/Credentials;->getPid()I
@@ -11389,6 +11697,7 @@ HSPLandroid/net/Uri$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
HSPLandroid/net/Uri$1;->newArray(I)[Landroid/net/Uri;
HSPLandroid/net/Uri$1;->newArray(I)[Ljava/lang/Object;
HSPLandroid/net/Uri$AbstractHierarchicalUri;-><init>()V
+HSPLandroid/net/Uri$AbstractHierarchicalUri;-><init>(Landroid/net/Uri-IA;)V
HSPLandroid/net/Uri$AbstractHierarchicalUri;->findPortSeparator(Ljava/lang/String;)I
HSPLandroid/net/Uri$AbstractHierarchicalUri;->getHost()Ljava/lang/String;
HSPLandroid/net/Uri$AbstractHierarchicalUri;->getLastPathSegment()Ljava/lang/String;
@@ -11421,6 +11730,7 @@ HSPLandroid/net/Uri$Builder;->query(Landroid/net/Uri$Part;)Landroid/net/Uri$Buil
HSPLandroid/net/Uri$Builder;->scheme(Ljava/lang/String;)Landroid/net/Uri$Builder;
HSPLandroid/net/Uri$Builder;->toString()Ljava/lang/String;
HSPLandroid/net/Uri$HierarchicalUri;-><init>(Ljava/lang/String;Landroid/net/Uri$Part;Landroid/net/Uri$PathPart;Landroid/net/Uri$Part;Landroid/net/Uri$Part;)V
+HSPLandroid/net/Uri$HierarchicalUri;-><init>(Ljava/lang/String;Landroid/net/Uri$Part;Landroid/net/Uri$PathPart;Landroid/net/Uri$Part;Landroid/net/Uri$Part;Landroid/net/Uri-IA;)V
HSPLandroid/net/Uri$HierarchicalUri;->appendSspTo(Ljava/lang/StringBuilder;)V
HSPLandroid/net/Uri$HierarchicalUri;->buildUpon()Landroid/net/Uri$Builder;
HSPLandroid/net/Uri$HierarchicalUri;->generatePath(Landroid/net/Uri$PathPart;)Landroid/net/Uri$PathPart;
@@ -11444,6 +11754,7 @@ HSPLandroid/net/Uri$OpaqueUri;-><init>(Ljava/lang/String;Landroid/net/Uri$Part;L
HSPLandroid/net/Uri$OpaqueUri;->getEncodedSchemeSpecificPart()Ljava/lang/String;
HSPLandroid/net/Uri$OpaqueUri;->getScheme()Ljava/lang/String;
HSPLandroid/net/Uri$OpaqueUri;->getSchemeSpecificPart()Ljava/lang/String;
+HSPLandroid/net/Uri$OpaqueUri;->readFrom(Landroid/os/Parcel;)Landroid/net/Uri;
HSPLandroid/net/Uri$OpaqueUri;->toString()Ljava/lang/String;
HSPLandroid/net/Uri$OpaqueUri;->writeToParcel(Landroid/os/Parcel;I)V
HSPLandroid/net/Uri$Part$EmptyPart;->isEmpty()Z
@@ -11463,13 +11774,18 @@ HSPLandroid/net/Uri$PathPart;->fromEncoded(Ljava/lang/String;)Landroid/net/Uri$P
HSPLandroid/net/Uri$PathPart;->getEncoded()Ljava/lang/String;
HSPLandroid/net/Uri$PathPart;->getPathSegments()Landroid/net/Uri$PathSegments;
HSPLandroid/net/Uri$PathPart;->makeAbsolute(Landroid/net/Uri$PathPart;)Landroid/net/Uri$PathPart;
+SPLandroid/net/Uri$PathSegments;-><clinit>()V
HSPLandroid/net/Uri$PathSegments;-><init>([Ljava/lang/String;I)V
HSPLandroid/net/Uri$PathSegments;->get(I)Ljava/lang/Object;
HSPLandroid/net/Uri$PathSegments;->get(I)Ljava/lang/String;
HSPLandroid/net/Uri$PathSegments;->size()I
HSPLandroid/net/Uri$PathSegmentsBuilder;->add(Ljava/lang/String;)V
HSPLandroid/net/Uri$PathSegmentsBuilder;->build()Landroid/net/Uri$PathSegments;
+HSPLandroid/net/Uri$StringUri;->-$$Nest$mgetFragmentPart(Landroid/net/Uri$StringUri;)Landroid/net/Uri$Part;
+SPLandroid/net/Uri$StringUri;->-$$Nest$mgetSsp(Landroid/net/Uri$StringUri;)Landroid/net/Uri$Part;
+SPLandroid/net/Uri$StringUri;->-$$Nest$mparseScheme(Landroid/net/Uri$StringUri;)Ljava/lang/String;
HSPLandroid/net/Uri$StringUri;-><init>(Ljava/lang/String;)V
+HSPLandroid/net/Uri$StringUri;-><init>(Ljava/lang/String;Landroid/net/Uri-IA;)V
HSPLandroid/net/Uri$StringUri;->buildUpon()Landroid/net/Uri$Builder;
HSPLandroid/net/Uri$StringUri;->findFragmentSeparator()I
HSPLandroid/net/Uri$StringUri;->findSchemeSeparator()I
@@ -11488,6 +11804,7 @@ HSPLandroid/net/Uri$StringUri;->getQuery()Ljava/lang/String;
HSPLandroid/net/Uri$StringUri;->getQueryPart()Landroid/net/Uri$Part;
HSPLandroid/net/Uri$StringUri;->getScheme()Ljava/lang/String;
HSPLandroid/net/Uri$StringUri;->getSchemeSpecificPart()Ljava/lang/String;
+HSPLandroid/net/Uri$StringUri;->getSsp()Landroid/net/Uri$Part;
HSPLandroid/net/Uri$StringUri;->isHierarchical()Z
HSPLandroid/net/Uri$StringUri;->isRelative()Z
HSPLandroid/net/Uri$StringUri;->parseAuthority(Ljava/lang/String;I)Ljava/lang/String;
@@ -11496,6 +11813,8 @@ HSPLandroid/net/Uri$StringUri;->parsePath()Ljava/lang/String;
HSPLandroid/net/Uri$StringUri;->parsePath(Ljava/lang/String;I)Ljava/lang/String;
HSPLandroid/net/Uri$StringUri;->parseQuery()Ljava/lang/String;
HSPLandroid/net/Uri$StringUri;->parseScheme()Ljava/lang/String;
+HSPLandroid/net/Uri$StringUri;->parseSsp()Ljava/lang/String;
+HSPLandroid/net/Uri$StringUri;->readFrom(Landroid/os/Parcel;)Landroid/net/Uri;
HSPLandroid/net/Uri$StringUri;->toString()Ljava/lang/String;
HSPLandroid/net/Uri$StringUri;->writeToParcel(Landroid/os/Parcel;I)V
HSPLandroid/net/Uri;-><init>()V
@@ -11537,10 +11856,6 @@ HSPLandroid/net/WifiKey;->writeToParcel(Landroid/os/Parcel;I)V
HSPLandroid/net/http/X509TrustManagerExtensions;-><init>(Ljavax/net/ssl/X509TrustManager;)V
HSPLandroid/net/http/X509TrustManagerExtensions;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
HSPLandroid/net/metrics/IpConnectivityLog;-><init>()V
-HSPLandroid/net/vcn/VcnTransportInfo$1;-><init>()V
-HSPLandroid/net/vcn/VcnTransportInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/vcn/VcnTransportInfo;
-HSPLandroid/net/vcn/VcnTransportInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/vcn/VcnTransportInfo;-><clinit>()V
HSPLandroid/nfc/NfcServiceManager;-><init>()V
HSPLandroid/nfc/cardemulation/AidGroup$1;->createFromParcel(Landroid/os/Parcel;)Landroid/nfc/cardemulation/AidGroup;
HSPLandroid/nfc/cardemulation/AidGroup$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
@@ -11606,6 +11921,7 @@ HSPLandroid/os/BaseBundle;->getBooleanArray(Ljava/lang/String;)[Z
HSPLandroid/os/BaseBundle;->getByteArray(Ljava/lang/String;)[B
HSPLandroid/os/BaseBundle;->getCharSequence(Ljava/lang/String;)Ljava/lang/CharSequence;
HSPLandroid/os/BaseBundle;->getCharSequenceArray(Ljava/lang/String;)[Ljava/lang/CharSequence;
+HSPLandroid/os/BaseBundle;->getClassLoader()Ljava/lang/ClassLoader;
HSPLandroid/os/BaseBundle;->getFloat(Ljava/lang/String;F)F
HSPLandroid/os/BaseBundle;->getInt(Ljava/lang/String;)I
HSPLandroid/os/BaseBundle;->getInt(Ljava/lang/String;I)I
@@ -11629,6 +11945,7 @@ HSPLandroid/os/BaseBundle;->isEmpty()Z
HSPLandroid/os/BaseBundle;->isEmptyParcel()Z
HSPLandroid/os/BaseBundle;->isEmptyParcel(Landroid/os/Parcel;)Z
HSPLandroid/os/BaseBundle;->isParcelled()Z
+HSPLandroid/os/BaseBundle;->isValueParceled(Ljava/lang/String;)Z
HSPLandroid/os/BaseBundle;->keySet()Ljava/util/Set;
HSPLandroid/os/BaseBundle;->putAll(Landroid/os/PersistableBundle;)V
HSPLandroid/os/BaseBundle;->putAll(Landroid/util/ArrayMap;)V
@@ -11758,11 +12075,13 @@ HSPLandroid/os/Bundle;-><init>(Landroid/os/PersistableBundle;)V
HSPLandroid/os/Bundle;->clear()V
HSPLandroid/os/Bundle;->clone()Ljava/lang/Object;
HSPLandroid/os/Bundle;->deepCopy()Landroid/os/Bundle;
+HSPLandroid/os/Bundle;->enableTokenVerification()V
HSPLandroid/os/Bundle;->forPair(Ljava/lang/String;Ljava/lang/String;)Landroid/os/Bundle;
HSPLandroid/os/Bundle;->getBinder(Ljava/lang/String;)Landroid/os/IBinder;
HSPLandroid/os/Bundle;->getBundle(Ljava/lang/String;)Landroid/os/Bundle;
HSPLandroid/os/Bundle;->getByteArray(Ljava/lang/String;)[B
HSPLandroid/os/Bundle;->getCharSequence(Ljava/lang/String;)Ljava/lang/CharSequence;
+HSPLandroid/os/Bundle;->getClassLoader()Ljava/lang/ClassLoader;
HSPLandroid/os/Bundle;->getFloat(Ljava/lang/String;)F
HSPLandroid/os/Bundle;->getFloat(Ljava/lang/String;F)F
HSPLandroid/os/Bundle;->getIntegerArrayList(Ljava/lang/String;)Ljava/util/ArrayList;
@@ -11974,6 +12293,7 @@ HSPLandroid/os/GraphicsEnvironment;->getGlobalSettingsString(Landroid/content/Co
HSPLandroid/os/GraphicsEnvironment;->getInstance()Landroid/os/GraphicsEnvironment;
HSPLandroid/os/GraphicsEnvironment;->getPackageIndex(Ljava/lang/String;Ljava/util/List;)I
HSPLandroid/os/GraphicsEnvironment;->getVulkanVersion(Landroid/content/pm/PackageManager;)I
+SPLandroid/os/GraphicsEnvironment;->queryAngleChoice(Landroid/content/Context;Landroid/os/Bundle;Ljava/lang/String;)Ljava/lang/String;
HSPLandroid/os/GraphicsEnvironment;->setLayerPaths(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;)V
HSPLandroid/os/GraphicsEnvironment;->setup(Landroid/content/Context;Landroid/os/Bundle;)V
HSPLandroid/os/GraphicsEnvironment;->setupAngle(Landroid/content/Context;Landroid/os/Bundle;Landroid/content/pm/PackageManager;Ljava/lang/String;)Z
@@ -12075,7 +12395,6 @@ HSPLandroid/os/IDeviceIdentifiersPolicyService$Stub;->asInterface(Landroid/os/IB
HSPLandroid/os/IDeviceIdleController$Stub$Proxy;->isPowerSaveWhitelistApp(Ljava/lang/String;)Z
HSPLandroid/os/IDeviceIdleController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IDeviceIdleController;
HSPLandroid/os/IHintManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-HSPLandroid/os/IHintManager$Stub$Proxy;->getHintSessionPreferredRate()J
HSPLandroid/os/IHintManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IHintManager;
HSPLandroid/os/IHintSession$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IHintSession;
HSPLandroid/os/IMessenger$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
@@ -12097,6 +12416,7 @@ HSPLandroid/os/IPowerManager$Stub$Proxy;->acquireWakeLock(Landroid/os/IBinder;IL
HSPLandroid/os/IPowerManager$Stub$Proxy;->asBinder()Landroid/os/IBinder;
HSPLandroid/os/IPowerManager$Stub$Proxy;->getPowerSaveState(I)Landroid/os/PowerSaveState;
HSPLandroid/os/IPowerManager$Stub$Proxy;->isDeviceIdleMode()Z
+HSPLandroid/os/IPowerManager$Stub$Proxy;->isDisplayInteractive(I)Z
HSPLandroid/os/IPowerManager$Stub$Proxy;->isInteractive()Z
HSPLandroid/os/IPowerManager$Stub$Proxy;->isLightDeviceIdleMode()Z
HSPLandroid/os/IPowerManager$Stub$Proxy;->isPowerSaveMode()Z
@@ -12113,6 +12433,7 @@ HSPLandroid/os/IRemoteCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/
HSPLandroid/os/IRemoteCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
HSPLandroid/os/IServiceManager$Stub$Proxy;->addService(Ljava/lang/String;Landroid/os/IBinder;ZI)V
HSPLandroid/os/IServiceManager$Stub$Proxy;->asBinder()Landroid/os/IBinder;
+HSPLandroid/os/IServiceManager$Stub$Proxy;->checkService(Ljava/lang/String;)Landroid/os/Service;+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/IServiceManager$Stub$Proxy;Landroid/os/IServiceManager$Stub$Proxy;
HSPLandroid/os/IServiceManager$Stub$Proxy;->isDeclared(Ljava/lang/String;)Z
HSPLandroid/os/ISystemConfig$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/ISystemConfig;
HSPLandroid/os/IThermalEventListener$Stub;-><init>()V
@@ -12152,13 +12473,14 @@ HSPLandroid/os/IUserManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/
HSPLandroid/os/IVibratorManagerService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
HSPLandroid/os/IVibratorManagerService$Stub$Proxy;->getVibratorIds()[I
HSPLandroid/os/IVibratorManagerService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IVibratorManagerService;
+SPLandroid/os/IpcDataCache$1;-><init>(Landroid/os/IpcDataCache$RemoteCall;)V
+HSPLandroid/os/IpcDataCache$1;->apply(Ljava/lang/Object;)Ljava/lang/Object;+]Landroid/os/IpcDataCache$RemoteCall;megamorphic_types
+SPLandroid/os/IpcDataCache$Config;-><init>(ILjava/lang/String;Ljava/lang/String;)V
HSPLandroid/os/IpcDataCache$Config;-><init>(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+SPLandroid/os/IpcDataCache$Config;-><init>(Landroid/app/PropertyInvalidatedCache$Args;Ljava/lang/String;)V
HSPLandroid/os/IpcDataCache$Config;-><init>(Landroid/os/IpcDataCache$Config;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/os/IpcDataCache$Config;->api()Ljava/lang/String;
+SPLandroid/os/IpcDataCache$Config;->cacheNulls(Z)Landroid/os/IpcDataCache$Config;
HSPLandroid/os/IpcDataCache$Config;->child(Ljava/lang/String;)Landroid/os/IpcDataCache$Config;
-HSPLandroid/os/IpcDataCache$Config;->maxEntries()I
-HSPLandroid/os/IpcDataCache$Config;->module()Ljava/lang/String;
-HSPLandroid/os/IpcDataCache$Config;->name()Ljava/lang/String;
HSPLandroid/os/IpcDataCache$Config;->registerChild(Ljava/lang/String;)V
HSPLandroid/os/IpcDataCache$QueryHandler;-><init>()V
HSPLandroid/os/IpcDataCache$QueryHandler;->shouldBypassCache(Ljava/lang/Object;)Z
@@ -12244,28 +12566,159 @@ HSPLandroid/os/Message;->toString()Ljava/lang/String;
HSPLandroid/os/Message;->toString(J)Ljava/lang/String;
HSPLandroid/os/Message;->updateCheckRecycle(I)V
HSPLandroid/os/Message;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/os/MessageQueue$FileDescriptorRecord;-><init>(Ljava/io/FileDescriptor;ILandroid/os/MessageQueue$OnFileDescriptorEventListener;)V
+HSPLandroid/os/MessageQueue$MatchAllFutureMessages;-><init>()V
+HSPLandroid/os/MessageQueue$MatchAllFutureMessages;-><init>(Landroid/os/MessageQueue-IA;)V
+HSPLandroid/os/MessageQueue$MatchAllFutureMessages;->compareMessage(Landroid/os/MessageQueue$MessageNode;Landroid/os/Handler;ILjava/lang/Object;Ljava/lang/Runnable;J)Z
+HSPLandroid/os/MessageQueue$MatchAllMessages;-><init>()V
+HSPLandroid/os/MessageQueue$MatchAllMessages;-><init>(Landroid/os/MessageQueue-IA;)V
+HSPLandroid/os/MessageQueue$MatchAllMessages;->compareMessage(Landroid/os/MessageQueue$MessageNode;Landroid/os/Handler;ILjava/lang/Object;Ljava/lang/Runnable;J)Z
+HSPLandroid/os/MessageQueue$MatchBarrierToken;-><init>(I)V
+HSPLandroid/os/MessageQueue$MatchBarrierToken;->compareMessage(Landroid/os/MessageQueue$MessageNode;Landroid/os/Handler;ILjava/lang/Object;Ljava/lang/Runnable;J)Z
+HSPLandroid/os/MessageQueue$MatchDeliverableMessages;-><init>()V
+HSPLandroid/os/MessageQueue$MatchDeliverableMessages;-><init>(Landroid/os/MessageQueue-IA;)V
+HSPLandroid/os/MessageQueue$MatchDeliverableMessages;->compareMessage(Landroid/os/MessageQueue$MessageNode;Landroid/os/Handler;ILjava/lang/Object;Ljava/lang/Runnable;J)Z
+HSPLandroid/os/MessageQueue$MatchHandler;-><init>()V
+HSPLandroid/os/MessageQueue$MatchHandler;-><init>(Landroid/os/MessageQueue-IA;)V
+HSPLandroid/os/MessageQueue$MatchHandler;->compareMessage(Landroid/os/MessageQueue$MessageNode;Landroid/os/Handler;ILjava/lang/Object;Ljava/lang/Runnable;J)Z
+HSPLandroid/os/MessageQueue$MatchHandlerAndObject;-><init>()V
+HSPLandroid/os/MessageQueue$MatchHandlerAndObject;-><init>(Landroid/os/MessageQueue-IA;)V
+HSPLandroid/os/MessageQueue$MatchHandlerAndObject;->compareMessage(Landroid/os/MessageQueue$MessageNode;Landroid/os/Handler;ILjava/lang/Object;Ljava/lang/Runnable;J)Z
+HSPLandroid/os/MessageQueue$MatchHandlerAndObjectEquals;-><init>()V
+HSPLandroid/os/MessageQueue$MatchHandlerAndObjectEquals;-><init>(Landroid/os/MessageQueue-IA;)V
+HSPLandroid/os/MessageQueue$MatchHandlerAndObjectEquals;->compareMessage(Landroid/os/MessageQueue$MessageNode;Landroid/os/Handler;ILjava/lang/Object;Ljava/lang/Runnable;J)Z
+HSPLandroid/os/MessageQueue$MatchHandlerRunnableAndObject;-><init>()V
+HSPLandroid/os/MessageQueue$MatchHandlerRunnableAndObject;-><init>(Landroid/os/MessageQueue-IA;)V
+HSPLandroid/os/MessageQueue$MatchHandlerRunnableAndObject;->compareMessage(Landroid/os/MessageQueue$MessageNode;Landroid/os/Handler;ILjava/lang/Object;Ljava/lang/Runnable;J)Z
+HSPLandroid/os/MessageQueue$MatchHandlerRunnableAndObjectEquals;-><init>()V
+HSPLandroid/os/MessageQueue$MatchHandlerRunnableAndObjectEquals;-><init>(Landroid/os/MessageQueue-IA;)V
+HSPLandroid/os/MessageQueue$MatchHandlerRunnableAndObjectEquals;->compareMessage(Landroid/os/MessageQueue$MessageNode;Landroid/os/Handler;ILjava/lang/Object;Ljava/lang/Runnable;J)Z
+HSPLandroid/os/MessageQueue$MatchHandlerWhatAndObject;-><init>()V
+HSPLandroid/os/MessageQueue$MatchHandlerWhatAndObject;-><init>(Landroid/os/MessageQueue-IA;)V
+HSPLandroid/os/MessageQueue$MatchHandlerWhatAndObject;->compareMessage(Landroid/os/MessageQueue$MessageNode;Landroid/os/Handler;ILjava/lang/Object;Ljava/lang/Runnable;J)Z
+HSPLandroid/os/MessageQueue$MatchHandlerWhatAndObjectEquals;-><init>()V
+HSPLandroid/os/MessageQueue$MatchHandlerWhatAndObjectEquals;-><init>(Landroid/os/MessageQueue-IA;)V
+HSPLandroid/os/MessageQueue$MatchHandlerWhatAndObjectEquals;->compareMessage(Landroid/os/MessageQueue$MessageNode;Landroid/os/Handler;ILjava/lang/Object;Ljava/lang/Runnable;J)Z
+HSPLandroid/os/MessageQueue$MessageCompare;-><init>()V
+HSPLandroid/os/MessageQueue$MessageCompare;-><init>(Landroid/os/MessageQueue-IA;)V
+HSPLandroid/os/MessageQueue$MessageCounts;-><clinit>()V
+HSPLandroid/os/MessageQueue$MessageCounts;-><init>()V
+HSPLandroid/os/MessageQueue$MessageCounts;-><init>(Landroid/os/MessageQueue-IA;)V
+HSPLandroid/os/MessageQueue$MessageCounts;->clearCounts()V
+HSPLandroid/os/MessageQueue$MessageCounts;->combineCounts(II)J
+HSPLandroid/os/MessageQueue$MessageCounts;->incrementCancelled()Z
+HSPLandroid/os/MessageQueue$MessageCounts;->incrementQueued()V
+HSPLandroid/os/MessageQueue$MessageCounts;->numCancelled(J)I
+HSPLandroid/os/MessageQueue$MessageCounts;->numQueued(J)I
+HSPLandroid/os/MessageQueue$MessageNode;->-$$Nest$fgetmMessage(Landroid/os/MessageQueue$MessageNode;)Landroid/os/Message;
+HSPLandroid/os/MessageQueue$MessageNode;-><clinit>()V
+HSPLandroid/os/MessageQueue$MessageNode;-><init>(Landroid/os/Message;J)V
+HSPLandroid/os/MessageQueue$MessageNode;->compareTo(Landroid/os/MessageQueue$MessageNode;)I
+HSPLandroid/os/MessageQueue$MessageNode;->compareTo(Ljava/lang/Object;)I
+HSPLandroid/os/MessageQueue$MessageNode;->getWhen()J
+HSPLandroid/os/MessageQueue$MessageNode;->isAsync()Z
+HSPLandroid/os/MessageQueue$MessageNode;->isBarrier()Z
+HSPLandroid/os/MessageQueue$MessageNode;->isRemovedFromStack()Z
+HSPLandroid/os/MessageQueue$MessageNode;->removeFromStack()Z
+HSPLandroid/os/MessageQueue$StackNode;-><init>(I)V
+HSPLandroid/os/MessageQueue$StackNode;->getNodeType()I
+HSPLandroid/os/MessageQueue$StackNode;->isMessageNode()Z
+HSPLandroid/os/MessageQueue$StateNode;-><init>(I)V
+HSPLandroid/os/MessageQueue$TimedParkStateNode;-><init>()V
+HSPLandroid/os/MessageQueue;-><clinit>()V
HSPLandroid/os/MessageQueue;-><init>(Z)V
HSPLandroid/os/MessageQueue;->addIdleHandler(Landroid/os/MessageQueue$IdleHandler;)V
+HSPLandroid/os/MessageQueue;->addIdleHandlerConcurrent(Landroid/os/MessageQueue$IdleHandler;)V
+HSPLandroid/os/MessageQueue;->addIdleHandlerLegacy(Landroid/os/MessageQueue$IdleHandler;)V
HSPLandroid/os/MessageQueue;->addOnFileDescriptorEventListener(Ljava/io/FileDescriptor;ILandroid/os/MessageQueue$OnFileDescriptorEventListener;)V
+HSPLandroid/os/MessageQueue;->addOnFileDescriptorEventListenerConcurrent(Ljava/io/FileDescriptor;ILandroid/os/MessageQueue$OnFileDescriptorEventListener;)V
+HSPLandroid/os/MessageQueue;->addOnFileDescriptorEventListenerLegacy(Ljava/io/FileDescriptor;ILandroid/os/MessageQueue$OnFileDescriptorEventListener;)V
HSPLandroid/os/MessageQueue;->dispatchEvents(II)I
HSPLandroid/os/MessageQueue;->dispose()V
+HSPLandroid/os/MessageQueue;->drainStack(Landroid/os/MessageQueue$StackNode;)V
HSPLandroid/os/MessageQueue;->enqueueMessage(Landroid/os/Message;J)Z
+HSPLandroid/os/MessageQueue;->enqueueMessageConcurrent(Landroid/os/Message;J)Z
+HSPLandroid/os/MessageQueue;->enqueueMessageLegacy(Landroid/os/Message;J)Z
+HSPLandroid/os/MessageQueue;->enqueueMessageUnchecked(Landroid/os/Message;J)Z
HSPLandroid/os/MessageQueue;->finalize()V
+HSPLandroid/os/MessageQueue;->findOrRemoveMessages(Landroid/os/Handler;ILjava/lang/Object;Ljava/lang/Runnable;JLandroid/os/MessageQueue$MessageCompare;Z)Z
+HSPLandroid/os/MessageQueue;->getStateNode(Landroid/os/MessageQueue$StackNode;)Landroid/os/MessageQueue$StateNode;
+HSPLandroid/os/MessageQueue;->hasEqualMessages(Landroid/os/Handler;ILjava/lang/Object;)Z
+HSPLandroid/os/MessageQueue;->hasEqualMessagesConcurrent(Landroid/os/Handler;ILjava/lang/Object;)Z
+HSPLandroid/os/MessageQueue;->hasEqualMessagesLegacy(Landroid/os/Handler;ILjava/lang/Object;)Z
+HSPLandroid/os/MessageQueue;->hasMessages(Landroid/os/Handler;)Z
HSPLandroid/os/MessageQueue;->hasMessages(Landroid/os/Handler;ILjava/lang/Object;)Z
HSPLandroid/os/MessageQueue;->hasMessages(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/Object;)Z
+HSPLandroid/os/MessageQueue;->hasMessagesConcurrent(Landroid/os/Handler;)Z
+HSPLandroid/os/MessageQueue;->hasMessagesConcurrent(Landroid/os/Handler;ILjava/lang/Object;)Z
+HSPLandroid/os/MessageQueue;->hasMessagesConcurrent(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/Object;)Z
+HSPLandroid/os/MessageQueue;->hasMessagesLegacy(Landroid/os/Handler;)Z
+HSPLandroid/os/MessageQueue;->hasMessagesLegacy(Landroid/os/Handler;ILjava/lang/Object;)Z
+HSPLandroid/os/MessageQueue;->hasMessagesLegacy(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/Object;)Z
+HSPLandroid/os/MessageQueue;->initIsProcessAllowedToUseConcurrent()V
+HSPLandroid/os/MessageQueue;->insertIntoPriorityQueue(Landroid/os/MessageQueue$MessageNode;)V
+HSPLandroid/os/MessageQueue;->isBlockedOnSyncBarrier()Z
+HSPLandroid/os/MessageQueue;->isIdle()Z
+HSPLandroid/os/MessageQueue;->isIdleConcurrent()Z
+HSPLandroid/os/MessageQueue;->isIdleLegacy()Z
+HSPLandroid/os/MessageQueue;->isInstrumenting()Z
+HSPLandroid/os/MessageQueue;->isPolling()Z
+HSPLandroid/os/MessageQueue;->isPollingConcurrent()Z
+HSPLandroid/os/MessageQueue;->isPollingLegacy()Z
+HSPLandroid/os/MessageQueue;->isPollingLocked()Z
+HSPLandroid/os/MessageQueue;->iterateNext(Ljava/util/Iterator;)Landroid/os/MessageQueue$MessageNode;
+HSPLandroid/os/MessageQueue;->legacyPeekOrPoll(Z)Landroid/os/Message;
HSPLandroid/os/MessageQueue;->next()Landroid/os/Message;
+HSPLandroid/os/MessageQueue;->nextConcurrent()Landroid/os/Message;
+HSPLandroid/os/MessageQueue;->nextLegacy()Landroid/os/Message;
+HSPLandroid/os/MessageQueue;->nextMessage(Z)Landroid/os/Message;
+HSPLandroid/os/MessageQueue;->peekWhenForTest()Ljava/lang/Long;
+HSPLandroid/os/MessageQueue;->pickEarliestNode(Landroid/os/MessageQueue$MessageNode;Landroid/os/MessageQueue$MessageNode;)Landroid/os/MessageQueue$MessageNode;
+HSPLandroid/os/MessageQueue;->pollForTest()Landroid/os/Message;
HSPLandroid/os/MessageQueue;->postSyncBarrier()I
HSPLandroid/os/MessageQueue;->postSyncBarrier(J)I
+HSPLandroid/os/MessageQueue;->postSyncBarrierConcurrent()I
+HSPLandroid/os/MessageQueue;->postSyncBarrierLegacy()I
+HSPLandroid/os/MessageQueue;->priorityQueueHasMessage(Ljava/util/concurrent/ConcurrentSkipListSet;Landroid/os/Handler;ILjava/lang/Object;Ljava/lang/Runnable;JLandroid/os/MessageQueue$MessageCompare;Z)Z
HSPLandroid/os/MessageQueue;->quit(Z)V
+HSPLandroid/os/MessageQueue;->removeAllFutureMessages()V
HSPLandroid/os/MessageQueue;->removeAllFutureMessagesLocked()V
+HSPLandroid/os/MessageQueue;->removeAllMessages()V
HSPLandroid/os/MessageQueue;->removeAllMessagesLocked()V
+HSPLandroid/os/MessageQueue;->removeCallbacksAndEqualMessages(Landroid/os/Handler;Ljava/lang/Object;)V
+HSPLandroid/os/MessageQueue;->removeCallbacksAndEqualMessagesConcurrent(Landroid/os/Handler;Ljava/lang/Object;)V
+HSPLandroid/os/MessageQueue;->removeCallbacksAndEqualMessagesLegacy(Landroid/os/Handler;Ljava/lang/Object;)V
HSPLandroid/os/MessageQueue;->removeCallbacksAndMessages(Landroid/os/Handler;Ljava/lang/Object;)V
+HSPLandroid/os/MessageQueue;->removeCallbacksAndMessagesConcurrent(Landroid/os/Handler;Ljava/lang/Object;)V
+HSPLandroid/os/MessageQueue;->removeCallbacksAndMessagesLegacy(Landroid/os/Handler;Ljava/lang/Object;)V
+HSPLandroid/os/MessageQueue;->removeEqualMessages(Landroid/os/Handler;ILjava/lang/Object;)V
+HSPLandroid/os/MessageQueue;->removeEqualMessages(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/Object;)V
+HSPLandroid/os/MessageQueue;->removeEqualMessagesConcurrent(Landroid/os/Handler;ILjava/lang/Object;)V
+HSPLandroid/os/MessageQueue;->removeEqualMessagesConcurrent(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/Object;)V
+HSPLandroid/os/MessageQueue;->removeEqualMessagesLegacy(Landroid/os/Handler;ILjava/lang/Object;)V
+HSPLandroid/os/MessageQueue;->removeEqualMessagesLegacy(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/Object;)V
+HSPLandroid/os/MessageQueue;->removeFromPriorityQueue(Landroid/os/MessageQueue$MessageNode;)Z
HSPLandroid/os/MessageQueue;->removeIdleHandler(Landroid/os/MessageQueue$IdleHandler;)V
+HSPLandroid/os/MessageQueue;->removeIdleHandlerConcurrent(Landroid/os/MessageQueue$IdleHandler;)V
+HSPLandroid/os/MessageQueue;->removeIdleHandlerLegacy(Landroid/os/MessageQueue$IdleHandler;)V
HSPLandroid/os/MessageQueue;->removeMessages(Landroid/os/Handler;ILjava/lang/Object;)V
HSPLandroid/os/MessageQueue;->removeMessages(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/Object;)V
+HSPLandroid/os/MessageQueue;->removeMessagesConcurrent(Landroid/os/Handler;ILjava/lang/Object;)V
+HSPLandroid/os/MessageQueue;->removeMessagesConcurrent(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/Object;)V
+HSPLandroid/os/MessageQueue;->removeMessagesLegacy(Landroid/os/Handler;ILjava/lang/Object;)V
+HSPLandroid/os/MessageQueue;->removeMessagesLegacy(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/Object;)V
HSPLandroid/os/MessageQueue;->removeOnFileDescriptorEventListener(Ljava/io/FileDescriptor;)V
+HSPLandroid/os/MessageQueue;->removeOnFileDescriptorEventListenerConcurrent(Ljava/io/FileDescriptor;)V
+HSPLandroid/os/MessageQueue;->removeOnFileDescriptorEventListenerLegacy(Ljava/io/FileDescriptor;)V
HSPLandroid/os/MessageQueue;->removeSyncBarrier(I)V
+HSPLandroid/os/MessageQueue;->removeSyncBarrierConcurrent(I)V
+HSPLandroid/os/MessageQueue;->removeSyncBarrierLegacy(I)V
+HSPLandroid/os/MessageQueue;->stackHasMessages(Landroid/os/Handler;ILjava/lang/Object;Ljava/lang/Runnable;JLandroid/os/MessageQueue$MessageCompare;Z)Z
+HSPLandroid/os/MessageQueue;->swapAndSetStackStateActive()Landroid/os/MessageQueue$StackNode;
+HSPLandroid/os/MessageQueue;->throwIfNotTest$ravenwood()V
+HSPLandroid/os/MessageQueue;->throwIfNotTest()V
HSPLandroid/os/MessageQueue;->updateOnFileDescriptorEventListenerLocked(Ljava/io/FileDescriptor;ILandroid/os/MessageQueue$OnFileDescriptorEventListener;)V
+HSPLandroid/os/MessageQueue;->waitForDrainCompleted()V
HSPLandroid/os/Messenger$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/Messenger;
HSPLandroid/os/Messenger$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
HSPLandroid/os/Messenger;-><init>(Landroid/os/Handler;)V
@@ -12278,7 +12731,7 @@ HSPLandroid/os/Messenger;->writeMessengerOrNullToParcel(Landroid/os/Messenger;La
HSPLandroid/os/Messenger;->writeToParcel(Landroid/os/Parcel;I)V
HSPLandroid/os/Parcel$2;-><init>(Landroid/os/Parcel;Ljava/io/InputStream;Ljava/lang/ClassLoader;)V
HSPLandroid/os/Parcel$2;->resolveClass(Ljava/io/ObjectStreamClass;)Ljava/lang/Class;
-HSPLandroid/os/Parcel$LazyValue;-><init>(Landroid/os/Parcel;IIILjava/lang/ClassLoader;)V
+HSPLandroid/os/Parcel$LazyValue;-><init>(Landroid/os/Parcel;IIILandroid/os/Parcel$ClassLoaderProvider;)V
HSPLandroid/os/Parcel$LazyValue;->apply(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;
HSPLandroid/os/Parcel$LazyValue;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroid/os/Parcel$LazyValue;->writeToParcel(Landroid/os/Parcel;)V
@@ -12318,6 +12771,7 @@ HSPLandroid/os/Parcel;->ensureWithinMemoryLimit(II)V
HSPLandroid/os/Parcel;->finalize()V
HSPLandroid/os/Parcel;->freeBuffer()V
HSPLandroid/os/Parcel;->getClassCookie(Ljava/lang/Class;)Ljava/lang/Object;
+HSPLandroid/os/Parcel;->getClassLoader(Landroid/os/Parcel$ClassLoaderProvider;)Ljava/lang/ClassLoader;+]Landroid/os/Parcel$ClassLoaderProvider;Landroid/os/Bundle;,Landroid/os/PersistableBundle;
HSPLandroid/os/Parcel;->getExceptionCode(Ljava/lang/Throwable;)I
HSPLandroid/os/Parcel;->getValueType(Ljava/lang/Object;)I
HSPLandroid/os/Parcel;->hasFileDescriptors()Z
@@ -12335,9 +12789,7 @@ HSPLandroid/os/Parcel;->pushAllowFds(Z)Z
HSPLandroid/os/Parcel;->readArrayList(Ljava/lang/ClassLoader;)Ljava/util/ArrayList;
HSPLandroid/os/Parcel;->readArrayList(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/util/ArrayList;
HSPLandroid/os/Parcel;->readArrayListInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/util/ArrayList;
-HSPLandroid/os/Parcel;->readArrayMap(Landroid/util/ArrayMap;IZZLjava/lang/ClassLoader;)I
-HSPLandroid/os/Parcel;->readArrayMap(Landroid/util/ArrayMap;Ljava/lang/ClassLoader;)V
-HSPLandroid/os/Parcel;->readArrayMapInternal(Landroid/util/ArrayMap;ILjava/lang/ClassLoader;)V
+HSPLandroid/os/Parcel;->readArrayMap(Landroid/util/ArrayMap;IZZLandroid/os/Parcel$ClassLoaderProvider;[I)V
HSPLandroid/os/Parcel;->readArraySet(Ljava/lang/ClassLoader;)Landroid/util/ArraySet;
HSPLandroid/os/Parcel;->readBinderList(Ljava/util/List;)V
HSPLandroid/os/Parcel;->readBlob()[B
@@ -12360,7 +12812,7 @@ HSPLandroid/os/Parcel;->readHashMap(Ljava/lang/ClassLoader;)Ljava/util/HashMap;
HSPLandroid/os/Parcel;->readHashMapInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/HashMap;
HSPLandroid/os/Parcel;->readInt()I
HSPLandroid/os/Parcel;->readIntArray([I)V
-HSPLandroid/os/Parcel;->readLazyValue(Ljava/lang/ClassLoader;)Ljava/lang/Object;
+HSPLandroid/os/Parcel;->readLazyValue(Landroid/os/Parcel$ClassLoaderProvider;)Ljava/lang/Object;
HSPLandroid/os/Parcel;->readList(Ljava/util/List;Ljava/lang/ClassLoader;)V
HSPLandroid/os/Parcel;->readList(Ljava/util/List;Ljava/lang/ClassLoader;Ljava/lang/Class;)V
HSPLandroid/os/Parcel;->readListInternal(Ljava/util/List;ILjava/lang/ClassLoader;)V
@@ -12503,6 +12955,7 @@ HSPLandroid/os/ParcelFileDescriptor;->open(Ljava/io/File;I)Landroid/os/ParcelFil
HSPLandroid/os/ParcelFileDescriptor;->openInternal(Ljava/io/File;I)Ljava/io/FileDescriptor;
HSPLandroid/os/ParcelFileDescriptor;->parseMode(Ljava/lang/String;)I
HSPLandroid/os/ParcelFileDescriptor;->releaseResources()V
+HSPLandroid/os/ParcelFileDescriptor;->toString()Ljava/lang/String;
HSPLandroid/os/ParcelFileDescriptor;->writeCommStatusAndClose(ILjava/lang/String;)V
HSPLandroid/os/ParcelFileDescriptor;->writeToParcel(Landroid/os/Parcel;I)V
HSPLandroid/os/ParcelUuid$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/ParcelUuid;
@@ -12557,8 +13010,6 @@ HSPLandroid/os/PowerManager$2;-><init>(Landroid/os/PowerManager;ILjava/lang/Stri
HSPLandroid/os/PowerManager$2;->recompute(Ljava/lang/Integer;)Ljava/lang/Boolean;
HSPLandroid/os/PowerManager$2;->recompute(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroid/os/PowerManager$3$$ExternalSyntheticLambda0;->run()V
-HSPLandroid/os/PowerManager$3;->lambda$onStatusChange$0(Landroid/os/PowerManager$OnThermalStatusChangedListener;I)V
-HSPLandroid/os/PowerManager$3;->onStatusChange(I)V
HSPLandroid/os/PowerManager$WakeLock$$ExternalSyntheticLambda0;-><init>(Landroid/os/PowerManager$WakeLock;)V
HSPLandroid/os/PowerManager$WakeLock$$ExternalSyntheticLambda0;->run()V
HSPLandroid/os/PowerManager$WakeLock;-><init>(Landroid/os/PowerManager;ILjava/lang/String;Ljava/lang/String;I)V
@@ -12647,6 +13098,14 @@ HSPLandroid/os/ResultReceiver;-><init>(Landroid/os/Handler;)V
HSPLandroid/os/ResultReceiver;-><init>(Landroid/os/Parcel;)V
HSPLandroid/os/ResultReceiver;->send(ILandroid/os/Bundle;)V
HSPLandroid/os/ResultReceiver;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/os/Service$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/Service;
+HSPLandroid/os/Service$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/os/Service$1;Landroid/os/Service$1;
+HSPLandroid/os/Service;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/os/Service;-><init>(Landroid/os/Parcel;Landroid/os/Service-IA;)V
+HSPLandroid/os/Service;->_assertTag(I)V
+HSPLandroid/os/Service;->_set(ILjava/lang/Object;)V
+HSPLandroid/os/Service;->getTag()I
+HSPLandroid/os/Service;->readFromParcel(Landroid/os/Parcel;)V
HSPLandroid/os/ServiceManager$ServiceNotFoundException;-><init>(Ljava/lang/String;)V
HSPLandroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V
HSPLandroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;ZI)V
@@ -12659,14 +13118,26 @@ HSPLandroid/os/ServiceManager;->isDeclared(Ljava/lang/String;)Z
HSPLandroid/os/ServiceManager;->rawGetService(Ljava/lang/String;)Landroid/os/IBinder;
HSPLandroid/os/ServiceManager;->waitForDeclaredService(Ljava/lang/String;)Landroid/os/IBinder;
HSPLandroid/os/ServiceManagerProxy;->addService(Ljava/lang/String;Landroid/os/IBinder;ZI)V
+HSPLandroid/os/ServiceManagerProxy;->checkService(Ljava/lang/String;)Landroid/os/Service;+]Landroid/os/IServiceManager;Landroid/os/IServiceManager$Stub$Proxy;
HSPLandroid/os/ServiceManagerProxy;->getService(Ljava/lang/String;)Landroid/os/IBinder;
+HSPLandroid/os/ServiceManagerProxy;->getService2(Ljava/lang/String;)Landroid/os/Service;+]Landroid/os/ServiceManagerProxy;Landroid/os/ServiceManagerProxy;
HSPLandroid/os/ServiceManagerProxy;->isDeclared(Ljava/lang/String;)Z
HSPLandroid/os/ServiceSpecificException;-><init>(ILjava/lang/String;)V
+SPLandroid/os/ServiceWithMetadata$1;-><init>()V
+HSPLandroid/os/ServiceWithMetadata$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/ServiceWithMetadata;
+HSPLandroid/os/ServiceWithMetadata$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/os/ServiceWithMetadata$1;Landroid/os/ServiceWithMetadata$1;
+SPLandroid/os/ServiceWithMetadata;-><clinit>()V
+HSPLandroid/os/ServiceWithMetadata;-><init>()V
+HSPLandroid/os/ServiceWithMetadata;->readFromParcel(Landroid/os/Parcel;)V
HSPLandroid/os/SharedMemory$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/SharedMemory;
HSPLandroid/os/SharedMemory$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/os/SharedMemory$Closer;-><init>(Ljava/io/FileDescriptor;Landroid/os/SharedMemory$MemoryRegistration;)V
+SPLandroid/os/SharedMemory$Closer;-><init>(Ljava/io/FileDescriptor;Landroid/os/SharedMemory$MemoryRegistration;Landroid/os/SharedMemory-IA;)V
HSPLandroid/os/SharedMemory$MemoryRegistration;-><init>(I)V
+SPLandroid/os/SharedMemory$MemoryRegistration;-><init>(ILandroid/os/SharedMemory-IA;)V
HSPLandroid/os/SharedMemory$MemoryRegistration;->acquire()Landroid/os/SharedMemory$MemoryRegistration;
HSPLandroid/os/SharedMemory$Unmapper;-><init>(JILandroid/os/SharedMemory$MemoryRegistration;)V
+SPLandroid/os/SharedMemory$Unmapper;-><init>(JILandroid/os/SharedMemory$MemoryRegistration;Landroid/os/SharedMemory-IA;)V
HSPLandroid/os/SharedMemory;-><init>(Ljava/io/FileDescriptor;)V
HSPLandroid/os/SharedMemory;-><init>(Ljava/io/FileDescriptor;Landroid/os/SharedMemory-IA;)V
HSPLandroid/os/SharedMemory;->checkOpen()V
@@ -12717,6 +13188,7 @@ HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onWriteToDisk()V
HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->setThreadPolicyMask(I)V
HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->startHandlingViolationException(Landroid/os/strictmode/Violation;)V
HSPLandroid/os/StrictMode$AndroidCloseGuardReporter;-><init>()V
+SPLandroid/os/StrictMode$AndroidCloseGuardReporter;-><init>(Landroid/os/StrictMode-IA;)V
HSPLandroid/os/StrictMode$AndroidCloseGuardReporter;->report(Ljava/lang/String;)V
HSPLandroid/os/StrictMode$AndroidCloseGuardReporter;->report(Ljava/lang/String;Ljava/lang/Throwable;)V
HSPLandroid/os/StrictMode$InstanceTracker;-><init>(Ljava/lang/Object;)V
@@ -12745,6 +13217,7 @@ HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->permitDiskReads()Landroid/os/St
HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->permitDiskWrites()Landroid/os/StrictMode$ThreadPolicy$Builder;
HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->permitUnbufferedIo()Landroid/os/StrictMode$ThreadPolicy$Builder;
HSPLandroid/os/StrictMode$ThreadPolicy;-><init>(ILandroid/os/StrictMode$OnThreadViolationListener;Ljava/util/concurrent/Executor;)V
+HSPLandroid/os/StrictMode$ThreadPolicy;-><init>(ILandroid/os/StrictMode$OnThreadViolationListener;Ljava/util/concurrent/Executor;Landroid/os/StrictMode-IA;)V
HSPLandroid/os/StrictMode$ThreadSpanState;-><init>()V
HSPLandroid/os/StrictMode$UnsafeIntentStrictModeCallback;-><init>()V
HSPLandroid/os/StrictMode$ViolationInfo;->-$$Nest$fgetmViolation(Landroid/os/StrictMode$ViolationInfo;)Landroid/os/strictmode/Violation;
@@ -12834,7 +13307,9 @@ HSPLandroid/os/StrictMode;->vmSqliteObjectLeaksEnabled()Z
HSPLandroid/os/StrictMode;->vmUnsafeIntentLaunchEnabled()Z
HSPLandroid/os/StrictMode;->vmUntaggedSocketEnabled()Z
HSPLandroid/os/StrictMode;->writeGatheredViolationsToParcel(Landroid/os/Parcel;)V
+SPLandroid/os/SystemClock$2;-><init>(Ljava/time/ZoneId;)V
HSPLandroid/os/SystemClock$2;->millis()J
+SPLandroid/os/SystemClock;->elapsedRealtimeClock()Ljava/time/Clock;
HSPLandroid/os/SystemClock;->sleep(J)V
HSPLandroid/os/SystemConfigManager;-><init>()V
HSPLandroid/os/SystemConfigManager;->getDisabledUntilUsedPreinstalledCarrierApps()Ljava/util/Set;
@@ -12920,6 +13395,10 @@ HSPLandroid/os/UserHandle;->readFromParcel(Landroid/os/Parcel;)Landroid/os/UserH
HSPLandroid/os/UserHandle;->toString()Ljava/lang/String;
HSPLandroid/os/UserHandle;->writeToParcel(Landroid/os/Parcel;I)V
HSPLandroid/os/UserHandle;->writeToParcel(Landroid/os/UserHandle;Landroid/os/Parcel;)V
+HSPLandroid/os/UserManager$$ExternalSyntheticLambda10;-><init>(Landroid/os/IUserManager;)V
+SPLandroid/os/UserManager$$ExternalSyntheticLambda10;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/os/UserManager$$ExternalSyntheticLambda5;-><init>(Landroid/os/IUserManager;)V
+SPLandroid/os/UserManager$$ExternalSyntheticLambda5;->apply(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroid/os/UserManager$1;-><init>(Landroid/os/UserManager;ILjava/lang/String;)V
HSPLandroid/os/UserManager$1;->bypass(Ljava/lang/Integer;)Z
HSPLandroid/os/UserManager$1;->bypass(Ljava/lang/Object;)Z
@@ -12982,6 +13461,10 @@ HSPLandroid/os/UserManager;->isUserUnlocked(I)Z
HSPLandroid/os/UserManager;->isUserUnlocked(Landroid/os/UserHandle;)Z
HSPLandroid/os/UserManager;->isUserUnlockingOrUnlocked(I)Z
HSPLandroid/os/UserManager;->supportsMultipleUsers()Z
+SPLandroid/os/UserManagerCache;-><clinit>()V
+HSPLandroid/os/UserManagerCache;-><init>()V
+HSPLandroid/os/UserManagerCache;->isUserUnlocked(Landroid/os/IpcDataCache$RemoteCall;Ljava/lang/Integer;)Ljava/lang/Boolean;+]Landroid/os/IpcDataCache;Landroid/os/IpcDataCache;
+HSPLandroid/os/UserManagerCache;->isUserUnlockingOrUnlocked(Landroid/os/IpcDataCache$RemoteCall;Ljava/lang/Integer;)Ljava/lang/Boolean;+]Landroid/os/IpcDataCache;Landroid/os/IpcDataCache;
HSPLandroid/os/VibrationAttributes$Builder;-><init>()V
HSPLandroid/os/VibrationAttributes$Builder;->build()Landroid/os/VibrationAttributes;
HSPLandroid/os/VibrationAttributes$Builder;->setUsage(Landroid/media/AudioAttributes;)V
@@ -13119,6 +13602,7 @@ HSPLandroid/permission/IPermissionChecker$Stub;->asInterface(Landroid/os/IBinder
HSPLandroid/permission/IPermissionManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
HSPLandroid/permission/IPermissionManager$Stub$Proxy;->addOnPermissionsChangeListener(Landroid/permission/IOnPermissionsChangeListener;)V
HSPLandroid/permission/IPermissionManager$Stub$Proxy;->asBinder()Landroid/os/IBinder;
+HSPLandroid/permission/IPermissionManager$Stub$Proxy;->checkPermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/permission/IPermissionManager$Stub$Proxy;Landroid/permission/IPermissionManager$Stub$Proxy;
HSPLandroid/permission/IPermissionManager$Stub$Proxy;->getPermissionInfo(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/PermissionInfo;
HSPLandroid/permission/IPermissionManager$Stub$Proxy;->getSplitPermissions()Ljava/util/List;
HSPLandroid/permission/IPermissionManager$Stub$Proxy;->removeOnPermissionsChangeListener(Landroid/permission/IOnPermissionsChangeListener;)V
@@ -13132,10 +13616,11 @@ HSPLandroid/permission/PermissionManager$1;-><init>(ILjava/lang/String;Ljava/lan
HSPLandroid/permission/PermissionManager$1;->recompute(Landroid/permission/PermissionManager$PermissionQuery;)Ljava/lang/Integer;
HSPLandroid/permission/PermissionManager$1;->recompute(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroid/permission/PermissionManager$2;-><init>(ILjava/lang/String;Ljava/lang/String;)V
-HSPLandroid/permission/PermissionManager$2;->bypass(Landroid/permission/PermissionManager$PackageNamePermissionQuery;)Z
-HSPLandroid/permission/PermissionManager$2;->bypass(Ljava/lang/Object;)Z
-HSPLandroid/permission/PermissionManager$2;->recompute(Landroid/permission/PermissionManager$PackageNamePermissionQuery;)Ljava/lang/Integer;
HSPLandroid/permission/PermissionManager$2;->recompute(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/permission/PermissionManager$3;->bypass(Landroid/permission/PermissionManager$PackageNamePermissionQuery;)Z
+HSPLandroid/permission/PermissionManager$3;->bypass(Ljava/lang/Object;)Z+]Landroid/permission/PermissionManager$3;Landroid/permission/PermissionManager$3;
+HSPLandroid/permission/PermissionManager$3;->recompute(Landroid/permission/PermissionManager$PackageNamePermissionQuery;)Ljava/lang/Integer;
+HSPLandroid/permission/PermissionManager$3;->recompute(Ljava/lang/Object;)Ljava/lang/Object;+]Landroid/permission/PermissionManager$3;Landroid/permission/PermissionManager$3;
HSPLandroid/permission/PermissionManager$OnPermissionsChangeListenerDelegate;-><init>(Landroid/permission/PermissionManager;Landroid/content/pm/PackageManager$OnPermissionsChangedListener;Landroid/os/Looper;)V
HSPLandroid/permission/PermissionManager$OnPermissionsChangeListenerDelegate;->handleMessage(Landroid/os/Message;)Z
HSPLandroid/permission/PermissionManager$PackageNamePermissionQuery;->equals(Ljava/lang/Object;)Z
@@ -13146,9 +13631,12 @@ HSPLandroid/permission/PermissionManager$SplitPermissionInfo;-><init>(Landroid/c
HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->getNewPermissions()Ljava/util/List;
HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->getSplitPermission()Ljava/lang/String;
HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->getTargetSdk()I
+SPLandroid/permission/PermissionManager;->-$$Nest$smcheckPackageNamePermissionUncached(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I
+HSPLandroid/permission/PermissionManager;->-$$Nest$smcheckPermissionUncached(Ljava/lang/String;III)I
HSPLandroid/permission/PermissionManager;-><clinit>()V
HSPLandroid/permission/PermissionManager;-><init>(Landroid/content/Context;)V
HSPLandroid/permission/PermissionManager;->addOnPermissionsChangeListener(Landroid/content/pm/PackageManager$OnPermissionsChangedListener;)V
+HSPLandroid/permission/PermissionManager;->checkPackageNamePermissionUncached(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I+]Landroid/permission/IPermissionManager;Landroid/permission/IPermissionManager$Stub$Proxy;
HSPLandroid/permission/PermissionManager;->checkPermissionUncached(Ljava/lang/String;III)I
HSPLandroid/permission/PermissionManager;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)I
HSPLandroid/permission/PermissionManager;->getPermissionInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionInfo;
@@ -13255,6 +13743,7 @@ HSPLandroid/provider/Settings$System;->putStringForUser(Landroid/content/Content
HSPLandroid/provider/Settings;->-$$Nest$smparseIntSetting(Ljava/lang/String;Ljava/lang/String;)I
HSPLandroid/provider/Settings;->-$$Nest$smparseIntSettingWithDefault(Ljava/lang/String;I)I
HSPLandroid/provider/Settings;->canDrawOverlays(Landroid/content/Context;)Z
+HSPLandroid/provider/Settings;->getPublicSettingsForClass(Ljava/lang/Class;Ljava/util/Set;Ljava/util/Set;Landroid/util/ArrayMap;)V
HSPLandroid/provider/Settings;->isCallingPackageAllowedToDrawOverlays(Landroid/content/Context;ILjava/lang/String;Z)Z
HSPLandroid/provider/Settings;->isCallingPackageAllowedToPerformAppOpsProtectedOperation(Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;ZI[Ljava/lang/String;Z)Z
HSPLandroid/provider/Settings;->isInSystemServer()Z
@@ -13265,8 +13754,6 @@ HSPLandroid/provider/Settings;->parseLongSettingWithDefault(Ljava/lang/String;J)
HSPLandroid/provider/Telephony$Sms;->getDefaultSmsPackage(Landroid/content/Context;)Ljava/lang/String;
HSPLandroid/renderscript/RenderScriptCacheDir;->setupDiskCache(Ljava/io/File;)V
HSPLandroid/se/omapi/SeServiceManager;-><init>()V
-HSPLandroid/security/FeatureFlagsImpl;-><init>()V
-HSPLandroid/security/Flags;-><clinit>()V
HSPLandroid/security/KeyChain$1;-><init>(Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/CountDownLatch;)V
HSPLandroid/security/KeyChain$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
HSPLandroid/security/KeyChain$KeyChainConnection;-><init>(Landroid/content/Context;Landroid/content/ServiceConnection;Landroid/security/IKeyChainService;)V
@@ -13476,7 +13963,7 @@ HSPLandroid/security/net/config/ApplicationConfig;->hasPerDomainConfigs()Z
HSPLandroid/security/net/config/ApplicationConfig;->isCleartextTrafficPermitted()Z
HSPLandroid/security/net/config/ApplicationConfig;->isCleartextTrafficPermitted(Ljava/lang/String;)Z
HSPLandroid/security/net/config/ApplicationConfig;->setDefaultInstance(Landroid/security/net/config/ApplicationConfig;)V
-HSPLandroid/security/net/config/CertificatesEntryRef;-><init>(Landroid/security/net/config/CertificateSource;Z)V
+SPLandroid/security/net/config/CertificatesEntryRef;->disableCT()Z
HSPLandroid/security/net/config/CertificatesEntryRef;->findAllCertificatesByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/util/Set;
HSPLandroid/security/net/config/CertificatesEntryRef;->findBySubjectAndPublicKey(Ljava/security/cert/X509Certificate;)Landroid/security/net/config/TrustAnchor;
HSPLandroid/security/net/config/ConfigNetworkSecurityPolicy;-><init>(Landroid/security/net/config/ApplicationConfig;)V
@@ -13516,11 +14003,14 @@ HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;-><init>()V
HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->addCertificatesEntryRef(Landroid/security/net/config/CertificatesEntryRef;)Landroid/security/net/config/NetworkSecurityConfig$Builder;
HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->addCertificatesEntryRefs(Ljava/util/Collection;)Landroid/security/net/config/NetworkSecurityConfig$Builder;
HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->build()Landroid/security/net/config/NetworkSecurityConfig;
+SPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getCertificateTransparencyVerificationRequired()Z
+SPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getCertificatesEntryRefs()Ljava/util/List;
HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getEffectiveCertificatesEntryRefs()Ljava/util/List;
HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getEffectiveCleartextTrafficPermitted()Z
HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getEffectiveHstsEnforced()Z
HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getEffectivePinSet()Landroid/security/net/config/PinSet;
HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getParent()Landroid/security/net/config/NetworkSecurityConfig$Builder;
+SPLandroid/security/net/config/NetworkSecurityConfig$Builder;->hasCertificatesEntryRefs()Z
HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->setCleartextTrafficPermitted(Z)Landroid/security/net/config/NetworkSecurityConfig$Builder;
HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->setHstsEnforced(Z)Landroid/security/net/config/NetworkSecurityConfig$Builder;
HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->setParent(Landroid/security/net/config/NetworkSecurityConfig$Builder;)Landroid/security/net/config/NetworkSecurityConfig$Builder;
@@ -13571,6 +14061,9 @@ HSPLandroid/security/net/config/XmlConfigSource;->parseNetworkSecurityConfig(Lan
HSPLandroid/security/net/config/XmlConfigSource;->parseTrustAnchors(Landroid/content/res/XmlResourceParser;Z)Ljava/util/Collection;
HSPLandroid/server/FeatureFlagsImpl;->telemetryApisService()Z
HSPLandroid/service/appprediction/IPredictionService$Stub;-><init>()V
+SPLandroid/service/autofill/FeatureFlagsImpl;->autofillCredmanIntegration()Z
+SPLandroid/service/autofill/FeatureFlagsImpl;->improveFillDialogAconfig()Z
+SPLandroid/service/autofill/FeatureFlagsImpl;->relayoutFix()Z
HSPLandroid/service/dreams/IDreamManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/dreams/IDreamManager;
HSPLandroid/service/media/IMediaBrowserService$Stub;-><init>()V
HSPLandroid/service/media/IMediaBrowserService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
@@ -13648,6 +14141,7 @@ HSPLandroid/service/notification/NotificationRankingUpdate$1;->createFromParcel(
HSPLandroid/service/notification/NotificationRankingUpdate$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
HSPLandroid/service/notification/NotificationRankingUpdate;-><init>(Landroid/os/Parcel;)V
HSPLandroid/service/notification/NotificationRankingUpdate;->getRankingMap()Landroid/service/notification/NotificationListenerService$RankingMap;
+SPLandroid/service/notification/RateEstimator;-><init>()V
HSPLandroid/service/notification/StatusBarNotification$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/StatusBarNotification;
HSPLandroid/service/notification/StatusBarNotification$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
HSPLandroid/service/notification/StatusBarNotification;-><init>(Landroid/os/Parcel;)V
@@ -13732,10 +14226,14 @@ HSPLandroid/sysprop/DisplayProperties;->debug_layout()Ljava/util/Optional;
HSPLandroid/sysprop/DisplayProperties;->debug_vri_package()Ljava/util/Optional;
HSPLandroid/sysprop/DisplayProperties;->tryParseBoolean(Ljava/lang/String;)Ljava/lang/Boolean;
HSPLandroid/sysprop/DisplayProperties;->tryParseString(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/sysprop/InputProperties;->force_enable_stylus_pointer_icon()Ljava/util/Optional;
+HSPLandroid/sysprop/InputProperties;->tryParseBoolean(Ljava/lang/String;)Ljava/lang/Boolean;
HSPLandroid/sysprop/InputProperties;->tryParseString(Ljava/lang/String;)Ljava/lang/String;
HSPLandroid/sysprop/TelephonyProperties$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroid/sysprop/TelephonyProperties$$ExternalSyntheticLambda10;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/sysprop/TelephonyProperties$$ExternalSyntheticLambda11;->apply(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroid/sysprop/TelephonyProperties$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/sysprop/TelephonyProperties$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroid/sysprop/TelephonyProperties$$ExternalSyntheticLambda4;->apply(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroid/sysprop/TelephonyProperties$$ExternalSyntheticLambda5;->apply(Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroid/sysprop/TelephonyProperties$$ExternalSyntheticLambda6;->apply(Ljava/lang/Object;)Ljava/lang/Object;
@@ -14230,6 +14728,7 @@ HSPLandroid/telephony/SubscriptionInfo;->isEmbedded()Z
HSPLandroid/telephony/SubscriptionInfo;->isOpportunistic()Z
HSPLandroid/telephony/SubscriptionInfo;->toString()Ljava/lang/String;
HSPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda10;->applyOrThrow(Ljava/lang/Object;)Ljava/lang/Object;
+SPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda13;->applyOrThrow(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda15;->applyOrThrow(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda9;->applyOrThrow(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroid/telephony/SubscriptionManager$IntegerPropertyInvalidatedCache;->query(Ljava/lang/Integer;)Ljava/lang/Object;
@@ -14371,6 +14870,7 @@ HSPLandroid/telephony/TelephonyManager;->getSupportedModemCount()I
HSPLandroid/telephony/TelephonyManager;->getTelephonyProperty(ILjava/util/List;Ljava/lang/Object;)Ljava/lang/Object;
HSPLandroid/telephony/TelephonyManager;->getVoiceNetworkType()I
HSPLandroid/telephony/TelephonyManager;->getVoiceNetworkType(I)I
+HSPLandroid/telephony/TelephonyManager;->hasCapability(Ljava/lang/String;I)Z+]Landroid/content/Context;missing_types]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
HSPLandroid/telephony/TelephonyManager;->hasCarrierPrivileges(I)Z
HSPLandroid/telephony/TelephonyManager;->isDataCapable()Z
HSPLandroid/telephony/TelephonyManager;->isDataConnectionAllowed()Z
@@ -14506,6 +15006,7 @@ HSPLandroid/text/BoringLayout$Metrics;->reset()V
HSPLandroid/text/BoringLayout;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)V
HSPLandroid/text/BoringLayout;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)V
HSPLandroid/text/BoringLayout;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;IZ)V
+HSPLandroid/text/BoringLayout;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;Landroid/text/TextDirectionHeuristic;FFZZILandroid/text/TextUtils$TruncateAt;III[I[IILandroid/graphics/text/LineBreakConfig;Landroid/text/BoringLayout$Metrics;ZZLandroid/graphics/Paint$FontMetrics;)V+]Landroid/text/BoringLayout;Landroid/text/BoringLayout;
HSPLandroid/text/BoringLayout;->draw(Landroid/graphics/Canvas;Landroid/graphics/Path;Landroid/graphics/Paint;I)V
HSPLandroid/text/BoringLayout;->ellipsized(II)V
HSPLandroid/text/BoringLayout;->getEllipsisCount(I)I
@@ -14524,7 +15025,7 @@ HSPLandroid/text/BoringLayout;->getParagraphDirection(I)I
HSPLandroid/text/BoringLayout;->hasAnyInterestingChars(Ljava/lang/CharSequence;I)Z
HSPLandroid/text/BoringLayout;->init(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/Layout$Alignment;Landroid/text/BoringLayout$Metrics;ZZZ)V
HSPLandroid/text/BoringLayout;->isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;Landroid/text/BoringLayout$Metrics;)Landroid/text/BoringLayout$Metrics;
-HSPLandroid/text/BoringLayout;->isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;ZLandroid/graphics/Paint$FontMetrics;Landroid/text/BoringLayout$Metrics;)Landroid/text/BoringLayout$Metrics;+]Landroid/text/BoringLayout$Metrics;Landroid/text/BoringLayout$Metrics;]Landroid/text/Spanned;Landroid/text/PrecomputedText;,Landroid/text/SpannableString;,Landroid/text/SpannableStringBuilder;,Landroid/text/SpannedString;,Landroid/text/method/ReplacementTransformationMethod$SpannedReplacementCharSequence;]Landroid/text/TextDirectionHeuristic;Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;,Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicLocale;]Landroid/text/TextLine;Landroid/text/TextLine;]Ljava/lang/CharSequence;megamorphic_types
+HSPLandroid/text/BoringLayout;->isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;ZLandroid/graphics/Paint$FontMetrics;Landroid/text/BoringLayout$Metrics;)Landroid/text/BoringLayout$Metrics;
HSPLandroid/text/BoringLayout;->isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;ZLandroid/text/BoringLayout$Metrics;)Landroid/text/BoringLayout$Metrics;
HSPLandroid/text/BoringLayout;->isFallbackLineSpacingEnabled()Z
HSPLandroid/text/BoringLayout;->make(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)Landroid/text/BoringLayout;
@@ -14576,6 +15077,7 @@ HSPLandroid/text/DynamicLayout;->updateBlocks(III)V
HSPLandroid/text/Editable$Factory;-><init>()V
HSPLandroid/text/Editable$Factory;->getInstance()Landroid/text/Editable$Factory;
HSPLandroid/text/Editable$Factory;->newEditable(Ljava/lang/CharSequence;)Landroid/text/Editable;
+HSPLandroid/text/FontConfig$Font;-><init>(Ljava/io/File;Ljava/io/File;Ljava/lang/String;Landroid/graphics/fonts/FontStyle;ILjava/lang/String;Ljava/lang/String;I)V
HSPLandroid/text/FontConfig$Font;->getAxes()[Landroid/graphics/fonts/FontVariationAxis;
HSPLandroid/text/FontConfig$Font;->getTtcIndex()I
HSPLandroid/text/FontConfig$Font;->getWeight()I
@@ -14627,6 +15129,7 @@ HSPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;)V
HSPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;Landroid/graphics/Path;Landroid/graphics/Paint;I)V
HSPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;I)V
HSPLandroid/text/Layout;->drawBackground(Landroid/graphics/Canvas;II)V
+HSPLandroid/text/Layout;->drawHighlights(Landroid/graphics/Canvas;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;III)V+]Landroid/graphics/Canvas;Landroid/graphics/Canvas;,Landroid/graphics/RecordingCanvas;]Ljava/util/List;Ljava/util/ArrayList;
HSPLandroid/text/Layout;->drawText(Landroid/graphics/Canvas;II)V
HSPLandroid/text/Layout;->drawWithoutText(Landroid/graphics/Canvas;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;III)V
HSPLandroid/text/Layout;->ellipsize(III[CILandroid/text/TextUtils$TruncateAt;)V
@@ -14653,6 +15156,7 @@ HSPLandroid/text/Layout;->getLineRangeForDraw(Landroid/graphics/Canvas;)J
HSPLandroid/text/Layout;->getLineRight(I)F
HSPLandroid/text/Layout;->getLineStartPos(III)I
HSPLandroid/text/Layout;->getLineVisibleEnd(I)I
+HSPLandroid/text/Layout;->getLineVisibleEnd(IIIZ)I+]Landroid/text/Layout;missing_types]Ljava/lang/CharSequence;megamorphic_types
HSPLandroid/text/Layout;->getLineWidth(I)F
HSPLandroid/text/Layout;->getOffsetAtStartOf(I)I
HSPLandroid/text/Layout;->getOffsetForHorizontal(IF)I
@@ -14674,18 +15178,21 @@ HSPLandroid/text/Layout;->getText()Ljava/lang/CharSequence;
HSPLandroid/text/Layout;->getTextDirectionHeuristic()Landroid/text/TextDirectionHeuristic;
HSPLandroid/text/Layout;->getWidth()I
HSPLandroid/text/Layout;->increaseWidthTo(I)V
+HSPLandroid/text/Layout;->initSpanColors()V+]Landroid/text/SpanColors;Landroid/text/SpanColors;
HSPLandroid/text/Layout;->isFallbackLineSpacingEnabled()Z
HSPLandroid/text/Layout;->isJustificationRequired(I)Z
HSPLandroid/text/Layout;->isRtlCharAt(I)Z
HSPLandroid/text/Layout;->primaryIsTrailingPrevious(I)Z
HSPLandroid/text/Layout;->replaceWith(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FF)V
HSPLandroid/text/Layout;->shouldClampCursor(I)Z
+HSPLandroid/text/Layout;->shouldDrawHighlightsOnTop(Landroid/graphics/Canvas;)Z+]Landroid/graphics/Canvas;missing_types
HSPLandroid/text/MeasuredParagraph;-><init>()V
HSPLandroid/text/MeasuredParagraph;->applyMetricsAffectingSpan(Landroid/text/TextPaint;Landroid/graphics/text/LineBreakConfig;[Landroid/text/style/MetricAffectingSpan;[Landroid/text/style/LineBreakConfigSpan;IILandroid/graphics/text/MeasuredText$Builder;Landroid/text/MeasuredParagraph$StyleRunCallback;)V
-HSPLandroid/text/MeasuredParagraph;->applyStyleRun(IILandroid/text/TextPaint;Landroid/graphics/text/LineBreakConfig;Landroid/graphics/text/MeasuredText$Builder;Landroid/text/MeasuredParagraph$StyleRunCallback;)V+]Landroid/text/AutoGrowArray$ByteArray;Landroid/text/AutoGrowArray$ByteArray;]Landroid/text/AutoGrowArray$FloatArray;Landroid/text/AutoGrowArray$FloatArray;]Landroid/text/TextPaint;Landroid/text/TextPaint;
+HSPLandroid/text/MeasuredParagraph;->applyStyleRun(IILandroid/text/TextPaint;Landroid/graphics/text/LineBreakConfig;Landroid/graphics/text/MeasuredText$Builder;Landroid/text/MeasuredParagraph$StyleRunCallback;)V
HSPLandroid/text/MeasuredParagraph;->breakText(IZF)I
HSPLandroid/text/MeasuredParagraph;->buildForBidi(Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;Landroid/text/MeasuredParagraph;)Landroid/text/MeasuredParagraph;
HSPLandroid/text/MeasuredParagraph;->buildForMeasurement(Landroid/text/TextPaint;Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;Landroid/text/MeasuredParagraph;)Landroid/text/MeasuredParagraph;
+HSPLandroid/text/MeasuredParagraph;->buildForStaticLayoutInternal(Landroid/text/TextPaint;Landroid/graphics/text/LineBreakConfig;Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;IZZLandroid/text/MeasuredParagraph;Landroid/text/MeasuredParagraph;Landroid/text/MeasuredParagraph$StyleRunCallback;)Landroid/text/MeasuredParagraph;+]Landroid/text/AutoGrowArray$IntArray;Landroid/text/AutoGrowArray$IntArray;]Landroid/text/Spanned;megamorphic_types
HSPLandroid/text/MeasuredParagraph;->getCharWidthAt(I)F
HSPLandroid/text/MeasuredParagraph;->getChars()[C
HSPLandroid/text/MeasuredParagraph;->getDirections(II)Landroid/text/Layout$Directions;
@@ -14721,6 +15228,7 @@ HSPLandroid/text/PrecomputedText$Params;->getBreakStrategy()I
HSPLandroid/text/PrecomputedText$Params;->getHyphenationFrequency()I
HSPLandroid/text/PrecomputedText$Params;->getTextDirection()Landroid/text/TextDirectionHeuristic;
HSPLandroid/text/PrecomputedText$Params;->getTextPaint()Landroid/text/TextPaint;
+HSPLandroid/text/PrecomputedText;->createMeasuredParagraphs(Ljava/lang/CharSequence;Landroid/text/PrecomputedText$Params;IIZZ)[Landroid/text/PrecomputedText$ParagraphInfo;
HSPLandroid/text/Selection;->getSelectionEnd(Ljava/lang/CharSequence;)I
HSPLandroid/text/Selection;->getSelectionStart(Ljava/lang/CharSequence;)I
HSPLandroid/text/Selection;->removeMemory(Landroid/text/Spannable;)V
@@ -14878,7 +15386,7 @@ HSPLandroid/text/StaticLayout$Builder;->setLineSpacing(FF)Landroid/text/StaticLa
HSPLandroid/text/StaticLayout$Builder;->setMaxLines(I)Landroid/text/StaticLayout$Builder;
HSPLandroid/text/StaticLayout$Builder;->setTextDirection(Landroid/text/TextDirectionHeuristic;)Landroid/text/StaticLayout$Builder;
HSPLandroid/text/StaticLayout$Builder;->setUseLineSpacingFromFallbacks(Z)Landroid/text/StaticLayout$Builder;
-HSPLandroid/text/StaticLayout;-><init>(Landroid/text/StaticLayout$Builder;ZI)V+]Landroid/text/StaticLayout;Landroid/text/StaticLayout;
+HSPLandroid/text/StaticLayout;-><init>(Landroid/text/StaticLayout$Builder;ZI)V
HSPLandroid/text/StaticLayout;->calculateEllipsis(IILandroid/text/MeasuredParagraph;IFLandroid/text/TextUtils$TruncateAt;IFLandroid/text/TextPaint;Z)V
HSPLandroid/text/StaticLayout;->generate(Landroid/text/StaticLayout$Builder;ZZ)V
HSPLandroid/text/StaticLayout;->getBottomPadding()I
@@ -14910,14 +15418,13 @@ HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->isRtl([CII
HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;->defaultIsRtl()Z
HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicLocale;->defaultIsRtl()Z
HSPLandroid/text/TextDirectionHeuristics;->isRtlCodePoint(I)I
-HSPLandroid/text/TextFlags;->getKeyForFlag(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/text/TextFlags;->isFeatureEnabled(Ljava/lang/String;)Z
HSPLandroid/text/TextLine$DecorationInfo;-><init>()V
HSPLandroid/text/TextLine$DecorationInfo;->copyInfo()Landroid/text/TextLine$DecorationInfo;
HSPLandroid/text/TextLine$DecorationInfo;->hasDecoration()Z
HSPLandroid/text/TextLine;-><init>()V
HSPLandroid/text/TextLine;->adjustEndHyphenEdit(II)I
HSPLandroid/text/TextLine;->adjustStartHyphenEdit(II)I
+HSPLandroid/text/TextLine;->calculateRunFlag(III)I
HSPLandroid/text/TextLine;->draw(Landroid/graphics/Canvas;FIII)V
HSPLandroid/text/TextLine;->drawStroke(Landroid/text/TextPaint;Landroid/graphics/Canvas;IFFFFF)V
HSPLandroid/text/TextLine;->drawTextRun(Landroid/graphics/Canvas;Landroid/text/TextPaint;IIIIZFI)V
@@ -14927,12 +15434,14 @@ HSPLandroid/text/TextLine;->expandMetricsFromPaint(Landroid/text/TextPaint;IIIIZ
HSPLandroid/text/TextLine;->extractDecorationInfo(Landroid/text/TextPaint;Landroid/text/TextLine$DecorationInfo;)V
HSPLandroid/text/TextLine;->getOffsetBeforeAfter(IIIZIZ)I
HSPLandroid/text/TextLine;->getOffsetToLeftRightOf(IZ)I
-HSPLandroid/text/TextLine;->getRunAdvance(Landroid/text/TextPaint;IIIIZI[FILandroid/graphics/RectF;Landroid/text/TextLine$LineInfo;)F+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/text/PrecomputedText;Landroid/text/PrecomputedText;]Landroid/text/TextPaint;Landroid/text/TextPaint;
+HSPLandroid/text/TextLine;->getRunAdvance(Landroid/text/TextPaint;IIIIZI[FILandroid/graphics/RectF;Landroid/text/TextLine$LineInfo;)F
HSPLandroid/text/TextLine;->handleReplacement(Landroid/text/style/ReplacementSpan;Landroid/text/TextPaint;IIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;Z)F
-HSPLandroid/text/TextLine;->handleRun(IIIZLandroid/graphics/Canvas;Landroid/text/TextShaper$GlyphsConsumer;FIIILandroid/graphics/Paint$FontMetricsInt;Landroid/graphics/RectF;Z[FILandroid/text/TextLine$LineInfo;I)F+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/text/SpanSet;Landroid/text/SpanSet;]Landroid/text/TextPaint;missing_types]Landroid/text/style/CharacterStyle;missing_types]Landroid/text/style/MetricAffectingSpan;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLandroid/text/TextLine;->handleText(Landroid/text/TextPaint;IIIIZLandroid/graphics/Canvas;Landroid/text/TextShaper$GlyphsConsumer;FIIILandroid/graphics/Paint$FontMetricsInt;Landroid/graphics/RectF;ZILjava/util/ArrayList;[FILandroid/text/TextLine$LineInfo;I)F+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/text/TextLine;->handleRun(IIIZLandroid/graphics/Canvas;Landroid/text/TextShaper$GlyphsConsumer;FIIILandroid/graphics/Paint$FontMetricsInt;Landroid/graphics/RectF;Z[FILandroid/text/TextLine$LineInfo;I)F
+HSPLandroid/text/TextLine;->handleText(Landroid/text/TextPaint;IIIIZLandroid/graphics/Canvas;Landroid/text/TextShaper$GlyphsConsumer;FIIILandroid/graphics/Paint$FontMetricsInt;Landroid/graphics/RectF;ZILjava/util/ArrayList;[FILandroid/text/TextLine$LineInfo;I)F
HSPLandroid/text/TextLine;->isLineEndSpace(C)Z
-HSPLandroid/text/TextLine;->measure(IZLandroid/graphics/Paint$FontMetricsInt;Landroid/graphics/RectF;Landroid/text/TextLine$LineInfo;)F+]Landroid/text/Layout$Directions;Landroid/text/Layout$Directions;
+HSPLandroid/text/TextLine;->measure(IZLandroid/graphics/Paint$FontMetricsInt;Landroid/graphics/RectF;Landroid/text/TextLine$LineInfo;)F
+HSPLandroid/text/TextLine;->measureRun(IIIZLandroid/graphics/Paint$FontMetricsInt;Landroid/graphics/RectF;[FIFLandroid/text/TextLine$LineInfo;I)F
+HSPLandroid/text/TextLine;->metrics(Landroid/graphics/Paint$FontMetricsInt;Landroid/graphics/RectF;ZLandroid/text/TextLine$LineInfo;)F+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/text/TextLine;Landroid/text/TextLine;
HSPLandroid/text/TextLine;->obtain()Landroid/text/TextLine;
HSPLandroid/text/TextLine;->recycle(Landroid/text/TextLine;)Landroid/text/TextLine;
HSPLandroid/text/TextLine;->set(Landroid/text/TextPaint;Ljava/lang/CharSequence;IIILandroid/text/Layout$Directions;ZLandroid/text/Layout$TabStops;IIZ)V
@@ -15170,6 +15679,28 @@ HSPLandroid/text/util/Linkify;->addLinks(Landroid/text/Spannable;ILandroid/conte
HSPLandroid/text/util/Linkify;->containsUnsupportedCharacters(Ljava/lang/String;)Z
HSPLandroid/text/util/Linkify;->gatherLinks(Ljava/util/ArrayList;Landroid/text/Spannable;Ljava/util/regex/Pattern;[Ljava/lang/String;Landroid/text/util/Linkify$MatchFilter;Landroid/text/util/Linkify$TransformFilter;)V
HSPLandroid/text/util/Linkify;->pruneOverlaps(Ljava/util/ArrayList;)V
+SPLandroid/tracing/FeatureFlagsImpl;->clientSideProtoLogging()Z
+SPLandroid/tracing/FeatureFlagsImpl;->perfettoIme()Z
+SPLandroid/tracing/FeatureFlagsImpl;->perfettoProtologTracing()Z
+SPLandroid/tracing/Flags;->clientSideProtoLogging()Z
+SPLandroid/tracing/Flags;->perfettoProtologTracing()Z
+SPLandroid/tracing/inputmethod/InputMethodDataSource;-><init>(Ljava/lang/Runnable;Ljava/lang/Runnable;)V
+SPLandroid/tracing/perfetto/DataSource;-><init>(Ljava/lang/String;)V
+SPLandroid/tracing/perfetto/DataSource;->createInstance([BI)Landroid/tracing/perfetto/DataSourceInstance;
+SPLandroid/tracing/perfetto/DataSource;->register(Landroid/tracing/perfetto/DataSourceParams;)V
+SPLandroid/tracing/perfetto/DataSourceInstance;-><init>(Landroid/tracing/perfetto/DataSource;I)V
+SPLandroid/tracing/perfetto/DataSourceParams$Builder;-><init>()V
+SPLandroid/tracing/perfetto/DataSourceParams$Builder;->build()Landroid/tracing/perfetto/DataSourceParams;
+SPLandroid/tracing/perfetto/DataSourceParams$Builder;->setBufferExhaustedPolicy(I)Landroid/tracing/perfetto/DataSourceParams$Builder;
+SPLandroid/tracing/perfetto/DataSourceParams$Builder;->setNoFlush(Z)Landroid/tracing/perfetto/DataSourceParams$Builder;
+SPLandroid/tracing/perfetto/DataSourceParams$Builder;->setWillNotifyOnStop(Z)Landroid/tracing/perfetto/DataSourceParams$Builder;
+SPLandroid/tracing/perfetto/DataSourceParams;-><clinit>()V
+SPLandroid/tracing/perfetto/DataSourceParams;-><init>(IZZ)V
+SPLandroid/tracing/perfetto/DataSourceParams;-><init>(IZZLandroid/tracing/perfetto/DataSourceParams-IA;)V
+SPLandroid/tracing/perfetto/InitArguments;-><clinit>()V
+SPLandroid/tracing/perfetto/InitArguments;-><init>(II)V
+SPLandroid/tracing/perfetto/Producer;->init(Landroid/tracing/perfetto/InitArguments;)V
+SPLandroid/tracing/perfetto/StartCallbackArguments;-><init>()V
HSPLandroid/transition/ChangeBounds;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
HSPLandroid/transition/ChangeBounds;->setResizeClip(Z)V
HSPLandroid/transition/ChangeClipBounds;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
@@ -15374,6 +15905,8 @@ HSPLandroid/util/Base64;->encodeToString([BI)Ljava/lang/String;
HSPLandroid/util/Base64;->encodeToString([BIII)Ljava/lang/String;
HSPLandroid/util/CloseGuard;-><init>()V
HSPLandroid/util/CloseGuard;->close()V
+SPLandroid/util/CloseGuard;->get()Landroid/util/CloseGuard;
+SPLandroid/util/CloseGuard;->getImpl()Ldalvik/system/CloseGuard;
HSPLandroid/util/CloseGuard;->open(Ljava/lang/String;)V
HSPLandroid/util/ContainerHelpers;->binarySearch([III)I
HSPLandroid/util/ContainerHelpers;->binarySearch([JIJ)I
@@ -15514,6 +16047,7 @@ HSPLandroid/util/LongArray;->add(J)V
HSPLandroid/util/LongArray;->ensureCapacity(I)V
HSPLandroid/util/LongArray;->get(I)J
HSPLandroid/util/LongArray;->indexOf(J)I
+HSPLandroid/util/LongArray;->set(IJ)V
HSPLandroid/util/LongArray;->size()I
HSPLandroid/util/LongArray;->toArray()[J
HSPLandroid/util/LongSparseArray;-><init>()V
@@ -15577,6 +16111,7 @@ HSPLandroid/util/MapCollections$MapIterator;->getValue()Ljava/lang/Object;
HSPLandroid/util/MapCollections$MapIterator;->hasNext()Z
HSPLandroid/util/MapCollections$MapIterator;->next()Ljava/lang/Object;
HSPLandroid/util/MapCollections$MapIterator;->next()Ljava/util/Map$Entry;
+HSPLandroid/util/MapCollections$ValuesCollection;-><init>(Landroid/util/MapCollections;)V
HSPLandroid/util/MapCollections$ValuesCollection;->iterator()Ljava/util/Iterator;
HSPLandroid/util/MapCollections$ValuesCollection;->size()I
HSPLandroid/util/MapCollections$ValuesCollection;->toArray()[Ljava/lang/Object;
@@ -15661,6 +16196,8 @@ HSPLandroid/util/Range;->intersect(Ljava/lang/Comparable;Ljava/lang/Comparable;)
HSPLandroid/util/Rational;-><init>(II)V
HSPLandroid/util/Rational;->compareTo(Landroid/util/Rational;)I
HSPLandroid/util/Rational;->compareTo(Ljava/lang/Object;)I
+SPLandroid/util/SequenceUtils;->getInitSeq()I
+HSPLandroid/util/SequenceUtils;->isIncomingSeqStale(II)Z
HSPLandroid/util/Singleton;-><init>()V
HSPLandroid/util/Singleton;->get()Ljava/lang/Object;
HSPLandroid/util/Size;-><init>(II)V
@@ -15786,6 +16323,7 @@ HSPLandroid/util/Xml;->newFastPullParser()Lcom/android/modules/utils/TypedXmlPul
HSPLandroid/util/Xml;->newFastSerializer()Lcom/android/modules/utils/TypedXmlSerializer;
HSPLandroid/util/Xml;->newPullParser()Lorg/xmlpull/v1/XmlPullParser;
HSPLandroid/util/Xml;->newSerializer()Lorg/xmlpull/v1/XmlSerializer;
+SPLandroid/util/Xml;->newXmlPullParser()Lorg/xmlpull/v1/XmlPullParser;
HSPLandroid/util/proto/EncodedBuffer;-><init>(I)V
HSPLandroid/util/proto/EncodedBuffer;->editRawFixed32(II)V
HSPLandroid/util/proto/EncodedBuffer;->getBytes(I)[B
@@ -15807,6 +16345,7 @@ HSPLandroid/util/proto/EncodedBuffer;->writeRawByte(B)V
HSPLandroid/util/proto/EncodedBuffer;->writeRawFixed32(I)V
HSPLandroid/util/proto/EncodedBuffer;->writeRawVarint32(I)V
HSPLandroid/util/proto/EncodedBuffer;->writeRawVarint64(J)V
+SPLandroid/util/proto/ProtoInputStream;-><init>([B)V
HSPLandroid/util/proto/ProtoInputStream;->assertFieldNumber(J)V
HSPLandroid/util/proto/ProtoInputStream;->assertFreshData()V
HSPLandroid/util/proto/ProtoInputStream;->assertWireType(I)V
@@ -15824,6 +16363,7 @@ HSPLandroid/util/proto/ProtoInputStream;->readRawString(I)Ljava/lang/String;
HSPLandroid/util/proto/ProtoInputStream;->readString(J)Ljava/lang/String;
HSPLandroid/util/proto/ProtoInputStream;->readTag()V
HSPLandroid/util/proto/ProtoInputStream;->readVarint()J
+HSPLandroid/util/proto/ProtoInputStream;->skip()V
HSPLandroid/util/proto/ProtoInputStream;->start(J)J
HSPLandroid/util/proto/ProtoOutputStream;-><init>()V
HSPLandroid/util/proto/ProtoOutputStream;-><init>(I)V
@@ -15861,6 +16401,8 @@ HSPLandroid/view/Choreographer$1;->initialValue()Landroid/view/Choreographer;
HSPLandroid/view/Choreographer$1;->initialValue()Ljava/lang/Object;
HSPLandroid/view/Choreographer$2;->initialValue()Landroid/view/Choreographer;
HSPLandroid/view/Choreographer$2;->initialValue()Ljava/lang/Object;
+SPLandroid/view/Choreographer$BufferStuffingState;-><init>()V
+SPLandroid/view/Choreographer$BufferStuffingState;-><init>(Landroid/view/Choreographer-IA;)V
HSPLandroid/view/Choreographer$CallbackQueue;-><init>(Landroid/view/Choreographer;)V
HSPLandroid/view/Choreographer$CallbackQueue;->addCallbackLocked(JLjava/lang/Object;Ljava/lang/Object;)V
HSPLandroid/view/Choreographer$CallbackQueue;->extractDueCallbacksLocked(J)Landroid/view/Choreographer$CallbackRecord;
@@ -15948,6 +16490,7 @@ HSPLandroid/view/Display$HdrCapabilities;->writeToParcel(Landroid/os/Parcel;I)V
HSPLandroid/view/Display$Mode$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/Display$Mode;
HSPLandroid/view/Display$Mode$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
HSPLandroid/view/Display$Mode;-><init>(IIIF)V
+HSPLandroid/view/Display$Mode;-><init>(IIIFFZ[F[I)V
HSPLandroid/view/Display$Mode;-><init>(IIIFF[F[I)V
HSPLandroid/view/Display$Mode;-><init>(IIIF[F[I)V
HSPLandroid/view/Display$Mode;-><init>(Landroid/os/Parcel;)V
@@ -15974,6 +16517,7 @@ HSPLandroid/view/Display;->getLocalRotation()I
HSPLandroid/view/Display;->getMetrics(Landroid/util/DisplayMetrics;)V
HSPLandroid/view/Display;->getMode()Landroid/view/Display$Mode;
HSPLandroid/view/Display;->getName()Ljava/lang/String;
+SPLandroid/view/Display;->getOverlaySupport()Landroid/hardware/OverlayProperties;
HSPLandroid/view/Display;->getPreferredWideGamutColorSpace()Landroid/graphics/ColorSpace;
HSPLandroid/view/Display;->getPresentationDeadlineNanos()J
HSPLandroid/view/Display;->getRealMetrics(Landroid/util/DisplayMetrics;)V
@@ -15996,6 +16540,7 @@ HSPLandroid/view/Display;->updateDisplayInfoLocked()V
HSPLandroid/view/DisplayAddress$Physical$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/DisplayAddress$Physical;
HSPLandroid/view/DisplayAddress$Physical$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
HSPLandroid/view/DisplayAddress$Physical;-><init>(J)V
+SPLandroid/view/DisplayAddress$Physical;-><init>(JLandroid/view/DisplayAddress-IA;)V
HSPLandroid/view/DisplayAddress$Physical;->equals(Ljava/lang/Object;)Z
HSPLandroid/view/DisplayAddress$Physical;->writeToParcel(Landroid/os/Parcel;I)V
HSPLandroid/view/DisplayAddress;-><init>()V
@@ -16010,6 +16555,7 @@ HSPLandroid/view/DisplayAdjustments;->setCompatibilityInfo(Landroid/content/res/
HSPLandroid/view/DisplayAdjustments;->setConfiguration(Landroid/content/res/Configuration;)V
HSPLandroid/view/DisplayCutout$Bounds;->-$$Nest$mgetRects(Landroid/view/DisplayCutout$Bounds;)[Landroid/graphics/Rect;
HSPLandroid/view/DisplayCutout$Bounds;-><init>([Landroid/graphics/Rect;Z)V
+SPLandroid/view/DisplayCutout$Bounds;-><init>([Landroid/graphics/Rect;ZLandroid/view/DisplayCutout-IA;)V
HSPLandroid/view/DisplayCutout$Bounds;->equals(Ljava/lang/Object;)Z
HSPLandroid/view/DisplayCutout$Bounds;->getRects()[Landroid/graphics/Rect;
HSPLandroid/view/DisplayCutout$Bounds;->isEmpty()Z
@@ -16047,7 +16593,7 @@ HSPLandroid/view/DisplayEventReceiver$VsyncEventData$FrameTimeline;-><init>()V
HSPLandroid/view/DisplayEventReceiver$VsyncEventData$FrameTimeline;-><init>(JJJ)V
HSPLandroid/view/DisplayEventReceiver$VsyncEventData$FrameTimeline;->copyFrom(Landroid/view/DisplayEventReceiver$VsyncEventData$FrameTimeline;)V
HSPLandroid/view/DisplayEventReceiver$VsyncEventData;-><init>()V
-HSPLandroid/view/DisplayEventReceiver$VsyncEventData;-><init>([Landroid/view/DisplayEventReceiver$VsyncEventData$FrameTimeline;IIJ)V
+HSPLandroid/view/DisplayEventReceiver$VsyncEventData;-><init>([Landroid/view/DisplayEventReceiver$VsyncEventData$FrameTimeline;IIJI)V
HSPLandroid/view/DisplayEventReceiver$VsyncEventData;->copyFrom(Landroid/view/DisplayEventReceiver$VsyncEventData;)V
HSPLandroid/view/DisplayEventReceiver$VsyncEventData;->preferredFrameTimeline()Landroid/view/DisplayEventReceiver$VsyncEventData$FrameTimeline;
HSPLandroid/view/DisplayEventReceiver;-><init>(Landroid/os/Looper;II)V
@@ -16062,6 +16608,7 @@ HSPLandroid/view/DisplayInfo;-><init>(Landroid/os/Parcel;)V
HSPLandroid/view/DisplayInfo;-><init>(Landroid/os/Parcel;Landroid/view/DisplayInfo-IA;)V
HSPLandroid/view/DisplayInfo;->copyFrom(Landroid/view/DisplayInfo;)V
HSPLandroid/view/DisplayInfo;->equals(Landroid/view/DisplayInfo;)Z
+HSPLandroid/view/DisplayInfo;->equals(Landroid/view/DisplayInfo;Z)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLandroid/view/DisplayInfo;->findMode(I)Landroid/view/Display$Mode;
HSPLandroid/view/DisplayInfo;->flagsToString(I)Ljava/lang/String;
HSPLandroid/view/DisplayInfo;->getAppMetrics(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;)V
@@ -16105,6 +16652,9 @@ HSPLandroid/view/FrameMetrics;->getMetric(I)J
HSPLandroid/view/FrameMetricsObserver;-><init>(Landroid/view/Window;Landroid/os/Handler;Landroid/view/Window$OnFrameMetricsAvailableListener;)V
HSPLandroid/view/FrameMetricsObserver;->getRendererObserver()Landroid/graphics/HardwareRendererObserver;
HSPLandroid/view/FrameMetricsObserver;->onFrameMetricsAvailable(I)V
+HSPLandroid/view/FrameRateCategoryRate$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/FrameRateCategoryRate;
+HSPLandroid/view/FrameRateCategoryRate$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/view/FrameRateCategoryRate$1;Landroid/view/FrameRateCategoryRate$1;
+HSPLandroid/view/FrameRateCategoryRate;-><init>(FF)V
HSPLandroid/view/GestureDetector$GestureHandler;-><init>(Landroid/view/GestureDetector;)V
HSPLandroid/view/GestureDetector$GestureHandler;-><init>(Landroid/view/GestureDetector;Landroid/os/Handler;)V
HSPLandroid/view/GestureDetector$GestureHandler;->handleMessage(Landroid/os/Message;)V
@@ -16119,6 +16669,7 @@ HSPLandroid/view/GestureDetector$SimpleOnGestureListener;->onSingleTapConfirmed(
HSPLandroid/view/GestureDetector$SimpleOnGestureListener;->onSingleTapUp(Landroid/view/MotionEvent;)Z
HSPLandroid/view/GestureDetector;-><init>(Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;)V
HSPLandroid/view/GestureDetector;-><init>(Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;Landroid/os/Handler;)V
+HSPLandroid/view/GestureDetector;-><init>(Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;Landroid/os/Handler;I)V+]Landroid/view/GestureDetector;missing_types
HSPLandroid/view/GestureDetector;->cancel()V
HSPLandroid/view/GestureDetector;->cancelTaps()V
HSPLandroid/view/GestureDetector;->init(Landroid/content/Context;)V
@@ -16157,7 +16708,12 @@ HSPLandroid/view/HandwritingInitiator;->onInputConnectionClosed(Landroid/view/Vi
HSPLandroid/view/HandwritingInitiator;->onInputConnectionCreated(Landroid/view/View;)V
HSPLandroid/view/HandwritingInitiator;->onTouchEvent(Landroid/view/MotionEvent;)Z
HSPLandroid/view/HandwritingInitiator;->updateHandwritingAreasForView(Landroid/view/View;)V
-HSPLandroid/view/HdrRenderState;->updateForFrame(J)Z+]Landroid/view/HdrRenderState;Landroid/view/HdrRenderState;
+HSPLandroid/view/HdrRenderState;->forceUpdateHdrSdrRatio()V+]Landroid/view/HdrRenderState;Landroid/view/HdrRenderState;
+HSPLandroid/view/HdrRenderState;->getDesiredHdrSdrRatio()F
+HSPLandroid/view/HdrRenderState;->getRenderHdrSdrRatio()F
+HSPLandroid/view/HdrRenderState;->isHdrEnabled()Z
+HSPLandroid/view/HdrRenderState;->setDesiredHdrSdrRatio(ZF)V
+HSPLandroid/view/HdrRenderState;->updateForFrame(J)Z
HSPLandroid/view/IGraphicsStats$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
HSPLandroid/view/IGraphicsStats$Stub$Proxy;->asBinder()Landroid/os/IBinder;
HSPLandroid/view/IGraphicsStats$Stub$Proxy;->requestBufferForProcess(Ljava/lang/String;Landroid/view/IGraphicsStatsCallback;)Landroid/os/ParcelFileDescriptor;
@@ -16166,9 +16722,12 @@ HSPLandroid/view/IGraphicsStatsCallback$Stub;->asBinder()Landroid/os/IBinder;
HSPLandroid/view/IGraphicsStatsCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
HSPLandroid/view/IRemoteAnimationRunner$Stub;-><init>()V
HSPLandroid/view/IRemoteAnimationRunner$Stub;->asBinder()Landroid/os/IBinder;
+SPLandroid/view/ISensitiveContentProtectionManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLandroid/view/ISensitiveContentProtectionManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/ISensitiveContentProtectionManager;
HSPLandroid/view/ISystemGestureExclusionListener$Stub;-><init>()V
HSPLandroid/view/IWindow$Stub;-><init>()V
HSPLandroid/view/IWindow$Stub;->asBinder()Landroid/os/IBinder;
+HSPLandroid/view/IWindow$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWindow;+]Landroid/os/IBinder;missing_types
HSPLandroid/view/IWindow$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
HSPLandroid/view/IWindow$Stub;->getMaxTransactionId()I
HSPLandroid/view/IWindow$Stub;->getTransactionName(I)Ljava/lang/String;
@@ -16190,6 +16749,7 @@ HSPLandroid/view/IWindowSession$Stub$Proxy;->finishDrawing(Landroid/view/IWindow
HSPLandroid/view/IWindowSession$Stub$Proxy;->getWindowId(Landroid/os/IBinder;)Landroid/view/IWindowId;
HSPLandroid/view/IWindowSession$Stub$Proxy;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V
HSPLandroid/view/IWindowSession$Stub$Proxy;->pokeDrawLock(Landroid/os/IBinder;)V
+HSPLandroid/view/IWindowSession$Stub$Proxy;->relayout(Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIIIILandroid/view/WindowRelayoutResult;)I+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/view/IWindowSession$Stub$Proxy;Landroid/view/IWindowSession$Stub$Proxy;
HSPLandroid/view/IWindowSession$Stub$Proxy;->relayoutAsync(Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIIII)V
HSPLandroid/view/IWindowSession$Stub$Proxy;->reportSystemGestureExclusionChanged(Landroid/view/IWindow;Ljava/util/List;)V
HSPLandroid/view/IWindowSession$Stub$Proxy;->setInsets(Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V
@@ -16198,6 +16758,8 @@ HSPLandroid/view/IWindowSession$Stub$Proxy;->setWallpaperZoomOut(Landroid/os/IBi
HSPLandroid/view/IWindowSession$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWindowSession;
HSPLandroid/view/IWindowSessionCallback$Stub;-><init>()V
HSPLandroid/view/IWindowSessionCallback$Stub;->asBinder()Landroid/os/IBinder;
+HSPLandroid/view/ImeBackAnimationController;-><init>(Landroid/view/ViewRootImpl;Landroid/view/InsetsController;)V
+HSPLandroid/view/ImeBackAnimationController;->isAnimationInProgress()Z
HSPLandroid/view/ImeFocusController;-><init>(Landroid/view/ViewRootImpl;)V
HSPLandroid/view/ImeFocusController;->getImmDelegate()Landroid/view/ImeFocusController$InputMethodManagerDelegate;
HSPLandroid/view/ImeFocusController;->hasImeFocus()Z
@@ -16244,6 +16806,7 @@ HSPLandroid/view/InputEventAssigner;-><init>()V
HSPLandroid/view/InputEventAssigner;->notifyFrameProcessed()V
HSPLandroid/view/InputEventAssigner;->processEvent(Landroid/view/InputEvent;)I
HSPLandroid/view/InputEventCompatProcessor;-><init>(Landroid/content/Context;)V
+HSPLandroid/view/InputEventCompatProcessor;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
HSPLandroid/view/InputEventCompatProcessor;->processInputEventForCompatibility(Landroid/view/InputEvent;)Ljava/util/List;
HSPLandroid/view/InputEventConsistencyVerifier;->isInstrumentationEnabled()Z
HSPLandroid/view/InputEventReceiver;-><init>(Landroid/view/InputChannel;Landroid/os/Looper;)V
@@ -16253,6 +16816,7 @@ HSPLandroid/view/InputEventReceiver;->dispose()V
HSPLandroid/view/InputEventReceiver;->dispose(Z)V
HSPLandroid/view/InputEventReceiver;->finalize()V
HSPLandroid/view/InputEventReceiver;->finishInputEvent(Landroid/view/InputEvent;Z)V
+HSPLandroid/view/InputEventReceiver;->getShortDescription(Landroid/view/InputEvent;)Ljava/lang/String;
HSPLandroid/view/InputEventReceiver;->onBatchedInputEventPending(I)V
HSPLandroid/view/InputEventReceiver;->reportTimeline(IJJ)V
HSPLandroid/view/InputEventSender;-><init>(Landroid/view/InputChannel;Landroid/os/Looper;)V
@@ -16290,6 +16854,7 @@ HSPLandroid/view/InsetsAnimationControlImpl;->releaseLeashes()V
HSPLandroid/view/InsetsAnimationControlImpl;->setInsetsAndAlpha(Landroid/graphics/Insets;FF)V
HSPLandroid/view/InsetsAnimationControlImpl;->setInsetsAndAlpha(Landroid/graphics/Insets;FFZ)V
HSPLandroid/view/InsetsAnimationControlImpl;->updateSurfacePosition(Landroid/util/SparseArray;)V
+HSPLandroid/view/InsetsAnimationControlRunner$SurfaceParamsApplier;->lambda$static$0([Landroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams;)V
HSPLandroid/view/InsetsAnimationThread;->ensureThreadLocked()V
HSPLandroid/view/InsetsAnimationThread;->getHandler()Landroid/os/Handler;
HSPLandroid/view/InsetsAnimationThread;->release()V
@@ -16311,6 +16876,8 @@ HSPLandroid/view/InsetsAnimationThreadControlRunner;->getTypes()I
HSPLandroid/view/InsetsAnimationThreadControlRunner;->notifyControlRevoked(I)V
HSPLandroid/view/InsetsAnimationThreadControlRunner;->updateSurfacePosition(Landroid/util/SparseArray;)V
HSPLandroid/view/InsetsController$$ExternalSyntheticLambda10;-><init>(Landroid/view/InsetsController;)V
+HSPLandroid/view/InsetsController$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+SPLandroid/view/InsetsController$$ExternalSyntheticLambda8;-><init>()V
HSPLandroid/view/InsetsController$$ExternalSyntheticLambda9;-><init>(Landroid/view/InsetsController;)V
HSPLandroid/view/InsetsController$1;-><init>(Landroid/view/InsetsController;)V
HSPLandroid/view/InsetsController$2;-><init>(Landroid/view/InsetsController;)V
@@ -16335,7 +16902,6 @@ HSPLandroid/view/InsetsController;->-$$Nest$sfgetsEvaluator()Landroid/animation/
HSPLandroid/view/InsetsController;-><init>(Landroid/view/InsetsController$Host;)V
HSPLandroid/view/InsetsController;-><init>(Landroid/view/InsetsController$Host;Lcom/android/internal/util/function/TriFunction;Landroid/os/Handler;)V
HSPLandroid/view/InsetsController;->abortPendingImeControlRequest()V
-HSPLandroid/view/InsetsController;->applyAnimation(IZZLandroid/view/inputmethod/ImeTracker$Token;)V
HSPLandroid/view/InsetsController;->applyAnimation(IZZZLandroid/view/inputmethod/ImeTracker$Token;)V
HSPLandroid/view/InsetsController;->applyLocalVisibilityOverride()V
HSPLandroid/view/InsetsController;->calculateControllableTypes()I
@@ -16344,8 +16910,10 @@ HSPLandroid/view/InsetsController;->calculateVisibleInsets(IIII)Landroid/graphic
HSPLandroid/view/InsetsController;->cancelAnimation(Landroid/view/InsetsAnimationControlRunner;Z)V
HSPLandroid/view/InsetsController;->cancelExistingAnimations()V
HSPLandroid/view/InsetsController;->cancelExistingControllers(I)V
+HSPLandroid/view/InsetsController;->computeAnimatingTypes()I+]Landroid/view/InsetsAnimationControlRunner;Landroid/view/InsetsAnimationControlImpl;,Landroid/view/InsetsAnimationThreadControlRunner;,Landroid/view/InsetsResizeAnimationRunner;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLandroid/view/InsetsController;->dispatchAnimationEnd(Landroid/view/WindowInsetsAnimation;)V
HSPLandroid/view/InsetsController;->getAnimationType(I)I
+HSPLandroid/view/InsetsController;->getAppearanceControlled()I
HSPLandroid/view/InsetsController;->getHost()Landroid/view/InsetsController$Host;
HSPLandroid/view/InsetsController;->getLastDispatchedState()Landroid/view/InsetsState;
HSPLandroid/view/InsetsController;->getRequestedVisibleTypes()I
@@ -16354,6 +16922,7 @@ HSPLandroid/view/InsetsController;->getState()Landroid/view/InsetsState;
HSPLandroid/view/InsetsController;->getSystemBarsAppearance()I
HSPLandroid/view/InsetsController;->hide(I)V
HSPLandroid/view/InsetsController;->invokeControllableInsetsChangedListeners()I
+HSPLandroid/view/InsetsController;->isBehaviorControlled()Z
HSPLandroid/view/InsetsController;->lambda$new$2(Landroid/view/InsetsController;Ljava/lang/Integer;Ljava/lang/Integer;)Landroid/view/InsetsSourceConsumer;
HSPLandroid/view/InsetsController;->lambda$static$1(FLandroid/graphics/Insets;Landroid/graphics/Insets;)Landroid/graphics/Insets;
HSPLandroid/view/InsetsController;->notifyControlRevoked(Landroid/view/InsetsSourceConsumer;)V
@@ -16365,7 +16934,9 @@ HSPLandroid/view/InsetsController;->onStateChanged(Landroid/view/InsetsState;)Z
HSPLandroid/view/InsetsController;->onWindowFocusGained(Z)V
HSPLandroid/view/InsetsController;->onWindowFocusLost()V
HSPLandroid/view/InsetsController;->reportPerceptible(IZ)V
+HSPLandroid/view/InsetsController;->reportRequestedVisibleTypes(Landroid/view/inputmethod/ImeTracker$Token;)V+]Landroid/view/InsetsController$Host;Landroid/view/ViewRootInsetsControllerHost;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Landroid/view/InsetsSourceConsumer;Landroid/view/InsetsSourceConsumer;]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Landroid/view/inputmethod/ImeTracker;Landroid/view/inputmethod/ImeTracker$1;
HSPLandroid/view/InsetsController;->setRequestedVisibleTypes(II)V
+HSPLandroid/view/InsetsController;->setSystemBarsAppearanceFromResource(II)V
HSPLandroid/view/InsetsController;->show(I)V
HSPLandroid/view/InsetsController;->show(IZLandroid/view/inputmethod/ImeTracker$Token;)V
HSPLandroid/view/InsetsController;->updateCompatSysUiVisibility()V
@@ -16376,6 +16947,7 @@ HSPLandroid/view/InsetsSource$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lan
HSPLandroid/view/InsetsSource;-><init>(II)V
HSPLandroid/view/InsetsSource;-><init>(Landroid/os/Parcel;)V
HSPLandroid/view/InsetsSource;-><init>(Landroid/view/InsetsSource;)V
+HSPLandroid/view/InsetsSource;->calculateBoundingRects(Landroid/graphics/Rect;Z)[Landroid/graphics/Rect;+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
HSPLandroid/view/InsetsSource;->calculateInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;Z)Landroid/graphics/Insets;
HSPLandroid/view/InsetsSource;->calculateInsets(Landroid/graphics/Rect;Z)Landroid/graphics/Insets;
HSPLandroid/view/InsetsSource;->calculateVisibleInsets(Landroid/graphics/Rect;)Landroid/graphics/Insets;
@@ -16384,6 +16956,7 @@ HSPLandroid/view/InsetsSource;->equals(Ljava/lang/Object;Z)Z
HSPLandroid/view/InsetsSource;->getFlags()I
HSPLandroid/view/InsetsSource;->getFrame()Landroid/graphics/Rect;
HSPLandroid/view/InsetsSource;->getId()I
+HSPLandroid/view/InsetsSource;->getInsetSide(Landroid/graphics/Insets;)I
HSPLandroid/view/InsetsSource;->getIntersection(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
HSPLandroid/view/InsetsSource;->getType()I
HSPLandroid/view/InsetsSource;->getVisibleFrame()Landroid/graphics/Rect;
@@ -16392,6 +16965,7 @@ HSPLandroid/view/InsetsSource;->isVisible()Z
HSPLandroid/view/InsetsSource;->setVisible(Z)Landroid/view/InsetsSource;
HSPLandroid/view/InsetsSource;->writeToParcel(Landroid/os/Parcel;I)V
HSPLandroid/view/InsetsSourceConsumer;->applyLocalVisibilityOverride()Z
+HSPLandroid/view/InsetsSourceConsumer;->applyRequestedVisibilityAndPositionToControl()V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/view/InsetsAnimationControlRunner$SurfaceParamsApplier;Landroid/view/InsetsAnimationControlRunner$SurfaceParamsApplier$$ExternalSyntheticLambda0;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Landroid/view/InsetsSourceConsumer;Landroid/view/InsetsSourceConsumer;]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;
HSPLandroid/view/InsetsSourceConsumer;->getControl()Landroid/view/InsetsSourceControl;
HSPLandroid/view/InsetsSourceConsumer;->getId()I
HSPLandroid/view/InsetsSourceConsumer;->getType()I
@@ -16400,6 +16974,7 @@ HSPLandroid/view/InsetsSourceConsumer;->onPerceptible(Z)V
HSPLandroid/view/InsetsSourceConsumer;->onWindowFocusGained(Z)V
HSPLandroid/view/InsetsSourceConsumer;->onWindowFocusLost()V
HSPLandroid/view/InsetsSourceConsumer;->removeSurface()V
+HSPLandroid/view/InsetsSourceConsumer;->setControl(Landroid/view/InsetsSourceControl;[I[I[I[I)Z+]Landroid/view/InsetsController;Landroid/view/InsetsController;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsSourceConsumer;Landroid/view/InsetsSourceConsumer;]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Landroid/view/InsetsState;Landroid/view/InsetsState;
HSPLandroid/view/InsetsSourceConsumer;->updateSource(Landroid/view/InsetsSource;I)V
HSPLandroid/view/InsetsSourceControl$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/InsetsSourceControl;
HSPLandroid/view/InsetsSourceControl$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
@@ -16409,6 +16984,7 @@ HSPLandroid/view/InsetsSourceControl$Array$1;-><init>()V
HSPLandroid/view/InsetsSourceControl$Array;-><clinit>()V
HSPLandroid/view/InsetsSourceControl$Array;-><init>()V
HSPLandroid/view/InsetsSourceControl$Array;->get()[Landroid/view/InsetsSourceControl;
+HSPLandroid/view/InsetsSourceControl$Array;->getSeq()I
HSPLandroid/view/InsetsSourceControl$Array;->readFromParcel(Landroid/os/Parcel;)V
HSPLandroid/view/InsetsSourceControl;-><init>(Landroid/os/Parcel;)V
HSPLandroid/view/InsetsSourceControl;-><init>(Landroid/view/InsetsSourceControl;)V
@@ -16442,6 +17018,7 @@ HSPLandroid/view/InsetsState;->calculateUncontrollableInsetsFromFrame(Landroid/g
HSPLandroid/view/InsetsState;->calculateVisibleInsets(Landroid/graphics/Rect;IIII)Landroid/graphics/Insets;
HSPLandroid/view/InsetsState;->canControlSource(Landroid/graphics/Rect;Landroid/view/InsetsSource;)Z
HSPLandroid/view/InsetsState;->clearsCompatInsets(IIII)Z
+HSPLandroid/view/InsetsState;->concatenate([Landroid/graphics/Rect;[Landroid/graphics/Rect;)[Landroid/graphics/Rect;
HSPLandroid/view/InsetsState;->equals(Ljava/lang/Object;)Z
HSPLandroid/view/InsetsState;->equals(Ljava/lang/Object;ZZ)Z
HSPLandroid/view/InsetsState;->getDisplayCutout()Landroid/view/DisplayCutout;
@@ -16450,8 +17027,11 @@ HSPLandroid/view/InsetsState;->getDisplayFrame()Landroid/graphics/Rect;
HSPLandroid/view/InsetsState;->getDisplayShape()Landroid/view/DisplayShape;
HSPLandroid/view/InsetsState;->getPrivacyIndicatorBounds()Landroid/view/PrivacyIndicatorBounds;
HSPLandroid/view/InsetsState;->getRoundedCorners()Landroid/view/RoundedCorners;
+HSPLandroid/view/InsetsState;->getSeq()I
HSPLandroid/view/InsetsState;->isSourceOrDefaultVisible(II)Z
HSPLandroid/view/InsetsState;->peekSource(I)Landroid/view/InsetsSource;
+HSPLandroid/view/InsetsState;->processSource(Landroid/view/InsetsSource;Landroid/graphics/Rect;Z[Landroid/graphics/Insets;Landroid/util/SparseIntArray;[Z[[Landroid/graphics/Rect;)V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
+HSPLandroid/view/InsetsState;->processSourceAsPublicType(Landroid/view/InsetsSource;[Landroid/graphics/Insets;Landroid/util/SparseIntArray;[Z[[Landroid/graphics/Rect;Landroid/graphics/Insets;[Landroid/graphics/Rect;I)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
HSPLandroid/view/InsetsState;->readFromParcel(Landroid/os/Parcel;)Landroid/util/SparseArray;
HSPLandroid/view/InsetsState;->set(Landroid/view/InsetsState;I)V
HSPLandroid/view/InsetsState;->set(Landroid/view/InsetsState;Z)V
@@ -16539,6 +17119,7 @@ HSPLandroid/view/MenuInflater;-><init>(Landroid/content/Context;)V
HSPLandroid/view/MotionEvent$PointerCoords;-><init>()V
HSPLandroid/view/MotionEvent$PointerProperties;-><init>()V
HSPLandroid/view/MotionEvent;-><init>()V
+HSPLandroid/view/MotionEvent;->actionToString(I)Ljava/lang/String;
HSPLandroid/view/MotionEvent;->ensureSharedTempPointerCapacity(I)V
HSPLandroid/view/MotionEvent;->finalize()V
HSPLandroid/view/MotionEvent;->findPointerIndex(I)I
@@ -16601,6 +17182,7 @@ HSPLandroid/view/PendingInsetsController;->detach()V
HSPLandroid/view/PendingInsetsController;->getRequestedVisibleTypes()I
HSPLandroid/view/PendingInsetsController;->getSystemBarsAppearance()I
HSPLandroid/view/PendingInsetsController;->replayAndAttach(Landroid/view/InsetsController;)V
+HSPLandroid/view/PendingInsetsController;->setSystemBarsAppearanceFromResource(II)V
HSPLandroid/view/PointerIcon;->getSystemIcon(Landroid/content/Context;I)Landroid/view/PointerIcon;
HSPLandroid/view/PointerIcon;->getSystemIconTypeIndex(I)I
HSPLandroid/view/PrivacyIndicatorBounds$1;-><init>()V
@@ -16689,17 +17271,28 @@ HSPLandroid/view/SurfaceControl$Builder;->setName(Ljava/lang/String;)Landroid/vi
HSPLandroid/view/SurfaceControl$Builder;->setOpaque(Z)Landroid/view/SurfaceControl$Builder;
HSPLandroid/view/SurfaceControl$Builder;->setParent(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Builder;
HSPLandroid/view/SurfaceControl$Builder;->unsetBufferSize()V
+SPLandroid/view/SurfaceControl$Transaction$$ExternalSyntheticLambda0;-><init>()V
+SPLandroid/view/SurfaceControl$Transaction$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+HSPLandroid/view/SurfaceControl$Transaction$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+HSPLandroid/view/SurfaceControl$Transaction$$ExternalSyntheticLambda3;-><init>(Ljava/util/function/Consumer;Landroid/view/SurfaceControl$TransactionStats;)V
+HSPLandroid/view/SurfaceControl$Transaction$$ExternalSyntheticLambda3;->run()V
HSPLandroid/view/SurfaceControl$Transaction;-><init>()V
HSPLandroid/view/SurfaceControl$Transaction;-><init>(J)V
HSPLandroid/view/SurfaceControl$Transaction;->apply()V
HSPLandroid/view/SurfaceControl$Transaction;->apply(Z)V
+HSPLandroid/view/SurfaceControl$Transaction;->apply(ZZ)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
+HSPLandroid/view/SurfaceControl$Transaction;->applyAsyncUnsafe()V
HSPLandroid/view/SurfaceControl$Transaction;->applyResizedSurfaces()V
HSPLandroid/view/SurfaceControl$Transaction;->checkPreconditions(Landroid/view/SurfaceControl;)V
HSPLandroid/view/SurfaceControl$Transaction;->clear()V
+HSPLandroid/view/SurfaceControl$Transaction;->clearFrameRate(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Transaction;
HSPLandroid/view/SurfaceControl$Transaction;->close()V
HSPLandroid/view/SurfaceControl$Transaction;->hide(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Transaction;
+HSPLandroid/view/SurfaceControl$Transaction;->lambda$addTransactionCompletedListener$1(Ljava/util/function/Consumer;Landroid/view/SurfaceControl$TransactionStats;)V
+SPLandroid/view/SurfaceControl$Transaction;->lambda$addTransactionCompletedListener$2(Ljava/util/concurrent/Executor;Ljava/util/function/Consumer;Landroid/view/SurfaceControl$TransactionStats;)V
HSPLandroid/view/SurfaceControl$Transaction;->merge(Landroid/view/SurfaceControl$Transaction;)Landroid/view/SurfaceControl$Transaction;
HSPLandroid/view/SurfaceControl$Transaction;->notifyReparentedSurfaces()V
+HSPLandroid/view/SurfaceControl$Transaction;->onMergeWithNextTransaction(Ljava/lang/CharSequence;)V
HSPLandroid/view/SurfaceControl$Transaction;->remove(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Transaction;
HSPLandroid/view/SurfaceControl$Transaction;->reparent(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Transaction;
HSPLandroid/view/SurfaceControl$Transaction;->sanitize(II)V
@@ -16709,22 +17302,33 @@ HSPLandroid/view/SurfaceControl$Transaction;->setColor(Landroid/view/SurfaceCont
HSPLandroid/view/SurfaceControl$Transaction;->setCornerRadius(Landroid/view/SurfaceControl;F)Landroid/view/SurfaceControl$Transaction;
HSPLandroid/view/SurfaceControl$Transaction;->setDesintationFrame(Landroid/view/SurfaceControl;II)Landroid/view/SurfaceControl$Transaction;
HSPLandroid/view/SurfaceControl$Transaction;->setExtendedRangeBrightness(Landroid/view/SurfaceControl;FF)Landroid/view/SurfaceControl$Transaction;
+HSPLandroid/view/SurfaceControl$Transaction;->setFrameRateCategory(Landroid/view/SurfaceControl;IZ)Landroid/view/SurfaceControl$Transaction;+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
+HSPLandroid/view/SurfaceControl$Transaction;->setFrameRateSelectionStrategy(Landroid/view/SurfaceControl;I)Landroid/view/SurfaceControl$Transaction;+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
HSPLandroid/view/SurfaceControl$Transaction;->setFrameTimelineVsync(J)Landroid/view/SurfaceControl$Transaction;
HSPLandroid/view/SurfaceControl$Transaction;->setLayer(Landroid/view/SurfaceControl;I)Landroid/view/SurfaceControl$Transaction;
HSPLandroid/view/SurfaceControl$Transaction;->setMatrix(Landroid/view/SurfaceControl;FFFF)Landroid/view/SurfaceControl$Transaction;
HSPLandroid/view/SurfaceControl$Transaction;->setMatrix(Landroid/view/SurfaceControl;Landroid/graphics/Matrix;[F)Landroid/view/SurfaceControl$Transaction;
HSPLandroid/view/SurfaceControl$Transaction;->setOpaque(Landroid/view/SurfaceControl;Z)Landroid/view/SurfaceControl$Transaction;
HSPLandroid/view/SurfaceControl$Transaction;->setPosition(Landroid/view/SurfaceControl;FF)Landroid/view/SurfaceControl$Transaction;
+HSPLandroid/view/SurfaceControl$Transaction;->setRecoverableFromBufferStuffing(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Transaction;+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
HSPLandroid/view/SurfaceControl$Transaction;->setRelativeLayer(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl;I)Landroid/view/SurfaceControl$Transaction;
+HSPLandroid/view/SurfaceControl$Transaction;->setUpForSurfaceControlRegistry()V
HSPLandroid/view/SurfaceControl$Transaction;->setWindowCrop(Landroid/view/SurfaceControl;II)Landroid/view/SurfaceControl$Transaction;
HSPLandroid/view/SurfaceControl$Transaction;->setWindowCrop(Landroid/view/SurfaceControl;Landroid/graphics/Rect;)Landroid/view/SurfaceControl$Transaction;
HSPLandroid/view/SurfaceControl$Transaction;->show(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Transaction;
HSPLandroid/view/SurfaceControl$Transaction;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/view/SurfaceControl$TransactionStats;-><init>(JJ)V
+SPLandroid/view/SurfaceControl$TransactionStats;->close()V
+SPLandroid/view/SurfaceControl$TransactionStats;->getPresentFence()Landroid/hardware/SyncFence;
+SPLandroid/view/SurfaceControl;->-$$Nest$smnativeApplyTransaction(JZZ)V
HSPLandroid/view/SurfaceControl;->-$$Nest$smnativeCreateTransaction()J
HSPLandroid/view/SurfaceControl;->-$$Nest$smnativeSanitize(JII)V
HSPLandroid/view/SurfaceControl;->-$$Nest$smnativeSetDestinationFrame(JJIIII)V
HSPLandroid/view/SurfaceControl;->-$$Nest$smnativeSetExtendedRangeBrightness(JJFF)V
HSPLandroid/view/SurfaceControl;->-$$Nest$smnativeSetFlags(JJII)V
+SPLandroid/view/SurfaceControl;->-$$Nest$smnativeSetFrameRate(JJFII)V
+HSPLandroid/view/SurfaceControl;->-$$Nest$smnativeSetFrameRateCategory(JJIZ)V
+SPLandroid/view/SurfaceControl;->-$$Nest$smnativeSetFrameRateSelectionStrategy(JJI)V
HSPLandroid/view/SurfaceControl;-><init>()V
HSPLandroid/view/SurfaceControl;-><init>(Landroid/os/Parcel;)V
HSPLandroid/view/SurfaceControl;-><init>(Landroid/view/SurfaceControl;Ljava/lang/String;)V
@@ -16741,8 +17345,12 @@ HSPLandroid/view/SurfaceControl;->release()V
HSPLandroid/view/SurfaceControl;->rotationToBufferTransform(I)I
HSPLandroid/view/SurfaceControl;->setTransformHint(I)V
HSPLandroid/view/SurfaceControlRegistry$DefaultReporter;-><init>()V
+HSPLandroid/view/SurfaceControlRegistry$NoOpRegistry;->add(Landroid/view/SurfaceControl;)V
+HSPLandroid/view/SurfaceControlRegistry$NoOpRegistry;->remove(Landroid/view/SurfaceControl;)V
HSPLandroid/view/SurfaceControlRegistry;-><clinit>()V
HSPLandroid/view/SurfaceControlRegistry;->getProcessInstance()Landroid/view/SurfaceControlRegistry;
+SPLandroid/view/SurfaceControlRegistry;->initializeCallStackDebugging()V
+SPLandroid/view/SurfaceControlRegistry;->updateCallStackDebuggingParams()V
HSPLandroid/view/SurfaceSession;-><init>()V
HSPLandroid/view/SurfaceSession;->finalize()V
HSPLandroid/view/SurfaceSession;->kill()V
@@ -16868,6 +17476,7 @@ HSPLandroid/view/VelocityTracker;->getYVelocity()F
HSPLandroid/view/VelocityTracker;->getYVelocity(I)F
HSPLandroid/view/VelocityTracker;->obtain()Landroid/view/VelocityTracker;
HSPLandroid/view/VelocityTracker;->recycle()V
+SPLandroid/view/View$$ExternalSyntheticLambda3;->get()Ljava/lang/Object;
HSPLandroid/view/View$$ExternalSyntheticLambda4;-><init>(Landroid/view/View;)V
HSPLandroid/view/View$$ExternalSyntheticLambda4;->run()V
HSPLandroid/view/View$$ExternalSyntheticLambda5;->run()V
@@ -16931,6 +17540,8 @@ HSPLandroid/view/View$MeasureSpec;->makeSafeMeasureSpec(II)I
HSPLandroid/view/View$PerformClick;->run()V
HSPLandroid/view/View$ScrollabilityCache;-><init>(Landroid/view/ViewConfiguration;Landroid/view/View;)V
HSPLandroid/view/View$ScrollabilityCache;->run()V
+SPLandroid/view/View$SensitiveAutofillHintsHelper;-><clinit>()V
+SPLandroid/view/View$SensitiveAutofillHintsHelper;->containsSensitiveAutofillHint([Ljava/lang/String;)Z
HSPLandroid/view/View$TintInfo;-><init>()V
HSPLandroid/view/View$TransformationInfo;-><init>()V
HSPLandroid/view/View$UnsetPressedState;->run()V
@@ -16960,6 +17571,7 @@ HSPLandroid/view/View;->buildDrawingCache(Z)V
HSPLandroid/view/View;->buildDrawingCacheImpl(Z)V
HSPLandroid/view/View;->buildLayer()V
HSPLandroid/view/View;->calculateAccessibilityDataSensitive()V
+HSPLandroid/view/View;->calculateFrameRateCategory()I+]Landroid/view/View;megamorphic_types
HSPLandroid/view/View;->calculateIsImportantForContentCapture()Z
HSPLandroid/view/View;->canHaveDisplayList()Z
HSPLandroid/view/View;->canNotifyAutofillEnterExitEvent()Z
@@ -17084,6 +17696,7 @@ HSPLandroid/view/View;->getClipBounds()Landroid/graphics/Rect;
HSPLandroid/view/View;->getClipToOutline()Z
HSPLandroid/view/View;->getContentCaptureSession()Landroid/view/contentcapture/ContentCaptureSession;
HSPLandroid/view/View;->getContentDescription()Ljava/lang/CharSequence;
+HSPLandroid/view/View;->getContentSensitivity()I
HSPLandroid/view/View;->getContext()Landroid/content/Context;
HSPLandroid/view/View;->getDefaultSize(II)I
HSPLandroid/view/View;->getDisplay()Landroid/view/Display;
@@ -17101,6 +17714,7 @@ HSPLandroid/view/View;->getFocusableAttribute(Landroid/content/res/TypedArray;)I
HSPLandroid/view/View;->getFocusedRect(Landroid/graphics/Rect;)V
HSPLandroid/view/View;->getForeground()Landroid/graphics/drawable/Drawable;
HSPLandroid/view/View;->getForegroundGravity()I
+HSPLandroid/view/View;->getFrameContentVelocity()F
HSPLandroid/view/View;->getGlobalVisibleRect(Landroid/graphics/Rect;)Z
HSPLandroid/view/View;->getGlobalVisibleRect(Landroid/graphics/Rect;Landroid/graphics/Point;)Z
HSPLandroid/view/View;->getHandler()Landroid/os/Handler;
@@ -17150,6 +17764,7 @@ HSPLandroid/view/View;->getRawLayoutDirection()I
HSPLandroid/view/View;->getRawTextAlignment()I
HSPLandroid/view/View;->getRawTextDirection()I
HSPLandroid/view/View;->getReceiveContentMimeTypes()[Ljava/lang/String;
+HSPLandroid/view/View;->getRequestedFrameRate()F
HSPLandroid/view/View;->getResources()Landroid/content/res/Resources;
HSPLandroid/view/View;->getRight()I
HSPLandroid/view/View;->getRootView()Landroid/view/View;
@@ -17201,6 +17816,7 @@ HSPLandroid/view/View;->handleFocusGainInternal(ILandroid/graphics/Rect;)V
HSPLandroid/view/View;->handleScrollBarDragging(Landroid/view/MotionEvent;)Z
HSPLandroid/view/View;->hasAncestorThatBlocksDescendantFocus()Z
HSPLandroid/view/View;->hasDefaultFocus()Z
+HSPLandroid/view/View;->hasExpensiveMeasuresDuringInputEvent()Z+]Landroid/view/ViewFrameInfo;Landroid/view/ViewFrameInfo;
HSPLandroid/view/View;->hasExplicitFocusable()Z
HSPLandroid/view/View;->hasFocus()Z
HSPLandroid/view/View;->hasFocusable()Z
@@ -17251,6 +17867,7 @@ HSPLandroid/view/View;->isAutoHandwritingEnabled()Z
HSPLandroid/view/View;->isAutofillable()Z
HSPLandroid/view/View;->isAutofilled()Z
HSPLandroid/view/View;->isClickable()Z
+HSPLandroid/view/View;->isContentSensitive()Z+]Landroid/view/View;missing_types
HSPLandroid/view/View;->isContextClickable()Z
HSPLandroid/view/View;->isCredential()Z
HSPLandroid/view/View;->isDefaultFocusHighlightNeeded(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)Z
@@ -17315,6 +17932,7 @@ HSPLandroid/view/View;->needGlobalAttributesUpdate(Z)V
HSPLandroid/view/View;->needRtlPropertiesResolution()Z
HSPLandroid/view/View;->notifyAppearedOrDisappearedForContentCaptureIfNeeded(Z)V
HSPLandroid/view/View;->notifyAutofillManagerOnClick()V
+HSPLandroid/view/View;->notifyAutofillManagerViewVisibilityChanged(Z)V+]Landroid/view/View;missing_types
HSPLandroid/view/View;->notifyEnterOrExitForAutoFillIfNeeded(Z)V
HSPLandroid/view/View;->notifyGlobalFocusCleared(Landroid/view/View;)V
HSPLandroid/view/View;->notifySubtreeAccessibilityStateChangedByParentIfNeeded()V
@@ -17379,6 +17997,7 @@ HSPLandroid/view/View;->performHapticFeedback(II)Z
HSPLandroid/view/View;->performLongClick()Z
HSPLandroid/view/View;->performLongClick(FF)Z
HSPLandroid/view/View;->performLongClickInternal(FF)Z
+HSPLandroid/view/View;->performOnTouchCallback(Landroid/view/MotionEvent;)Z+]Landroid/view/View$OnTouchListener;missing_types]Landroid/view/View;missing_types
HSPLandroid/view/View;->playSoundEffect(I)V
HSPLandroid/view/View;->pointInView(FF)Z
HSPLandroid/view/View;->pointInView(FFF)Z
@@ -17588,8 +18207,10 @@ HSPLandroid/view/View;->updateLocalSystemUiVisibility(II)Z
HSPLandroid/view/View;->updatePflags3AndNotifyA11yIfChanged(IZ)V
HSPLandroid/view/View;->updatePositionUpdateListener()V
HSPLandroid/view/View;->updatePreferKeepClearForFocus()V
+HSPLandroid/view/View;->updateSensitiveViewsCountIfNeeded(Z)V
HSPLandroid/view/View;->updateSystemGestureExclusionRects()V
HSPLandroid/view/View;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z
+HSPLandroid/view/View;->votePreferredFrameRate()V+]Landroid/view/View;missing_types
HSPLandroid/view/View;->willNotDraw()Z
HSPLandroid/view/ViewAnimationHostBridge;-><init>(Landroid/view/View;)V
HSPLandroid/view/ViewAnimationHostBridge;->isAttached()Z
@@ -17923,8 +18544,29 @@ HSPLandroid/view/ViewPropertyAnimator;->translationY(F)Landroid/view/ViewPropert
HSPLandroid/view/ViewPropertyAnimator;->withEndAction(Ljava/lang/Runnable;)Landroid/view/ViewPropertyAnimator;
HSPLandroid/view/ViewPropertyAnimator;->withLayer()Landroid/view/ViewPropertyAnimator;
HSPLandroid/view/ViewPropertyAnimator;->withStartAction(Ljava/lang/Runnable;)Landroid/view/ViewPropertyAnimator;
-HSPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda17;-><init>(Landroid/view/ViewRootImpl;)V
+SPLandroid/view/ViewProtoLogGroups;-><clinit>()V
+SPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda19;-><init>()V
+HSPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda20;-><init>(Landroid/view/ViewRootImpl;)V
+HSPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda20;->execute(Ljava/lang/Runnable;)V
+HSPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda21;-><init>(Landroid/view/ViewRootImpl;)V
+HSPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda21;->run()V
+HSPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda22;-><init>(Landroid/view/ViewRootImpl;)V
+HSPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda22;->run()V
+SPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda23;-><init>(Landroid/view/ViewRootImpl;)V
+SPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda23;->run()V
HSPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda3;->run()V
+HSPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V
+HSPLandroid/view/ViewRootImpl$10;->run()V
+SPLandroid/view/ViewRootImpl$11$$ExternalSyntheticLambda3;-><init>(Landroid/view/ViewRootImpl$11;JLandroid/window/SurfaceSyncGroup;Z)V
+HSPLandroid/view/ViewRootImpl$11$$ExternalSyntheticLambda3;->onFrameCommit(Z)V
+SPLandroid/view/ViewRootImpl$11;->$r8$lambda$lOIKKNnrcWn9ZndeJebfX4H5mOg(Landroid/view/ViewRootImpl$11;JLandroid/window/SurfaceSyncGroup;ZZ)V
+SPLandroid/view/ViewRootImpl$11;->lambda$onFrameDraw$3(JLandroid/window/SurfaceSyncGroup;ZZ)V
+HSPLandroid/view/ViewRootImpl$11;->onFrameDraw(IJ)Landroid/graphics/HardwareRenderer$FrameCommitCallback;
+HSPLandroid/view/ViewRootImpl$4;-><init>(Landroid/view/ViewRootImpl;)V
+HSPLandroid/view/ViewRootImpl$5;->accept(Landroid/view/SurfaceControl$TransactionStats;)V
+SPLandroid/view/ViewRootImpl$5;->accept(Ljava/lang/Object;)V
+SPLandroid/view/ViewRootImpl$6;-><init>(Landroid/view/ViewRootImpl;)V
+HSPLandroid/view/ViewRootImpl$6;->run()V
HSPLandroid/view/ViewRootImpl$AccessibilityInteractionConnectionManager;-><init>(Landroid/view/ViewRootImpl;)V
HSPLandroid/view/ViewRootImpl$AccessibilityInteractionConnectionManager;->ensureNoConnection()V
HSPLandroid/view/ViewRootImpl$AsyncInputStage;-><init>(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V
@@ -18005,14 +18647,26 @@ HSPLandroid/view/ViewRootImpl$W;-><init>(Landroid/view/ViewRootImpl;)V
HSPLandroid/view/ViewRootImpl$W;->closeSystemDialogs(Ljava/lang/String;)V
HSPLandroid/view/ViewRootImpl$W;->dispatchAppVisibility(Z)V
HSPLandroid/view/ViewRootImpl$W;->dispatchWindowShown()V
+HSPLandroid/view/ViewRootImpl$W;->insetsControlChanged(Landroid/view/InsetsState;Landroid/view/InsetsSourceControl$Array;)V+]Landroid/view/InsetsController$Host;Landroid/view/ViewRootInsetsControllerHost;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/internal/inputmethod/ImeTracing;Lcom/android/internal/inputmethod/ImeTracingPerfettoImpl;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;
HSPLandroid/view/ViewRootImpl$W;->moved(II)V
+HSPLandroid/view/ViewRootImpl$W;->onExecutingWindowStateTransactionItem()V
HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;-><init>(Landroid/view/ViewRootImpl;Landroid/view/InputChannel;Landroid/os/Looper;)V
HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->dispose()V
HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onBatchedInputEventPending(I)V
HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onFocusEvent(Z)V
HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onInputEvent(Landroid/view/InputEvent;)V
+SPLandroid/view/ViewRootImpl;->$r8$lambda$I9KJH1qLSZb1_fWNfrFUXDtFojg(Landroid/view/ViewRootImpl;)V
+SPLandroid/view/ViewRootImpl;->$r8$lambda$J_WUiRtQMmJK5FDj7HKcqXqyDcc(Landroid/view/ViewRootImpl;)V
+SPLandroid/view/ViewRootImpl;->$r8$lambda$Lx9xSQs8XgeRJZgj7lPDiojIGvE(Landroid/view/ViewRootImpl;)V
+SPLandroid/view/ViewRootImpl;->$r8$lambda$kydZ5VrQzxxxtiGWLXqElnQw9pY(Landroid/view/ViewRootImpl;ILandroid/view/SurfaceControl$Transaction;)V
+SPLandroid/view/ViewRootImpl;->$r8$lambda$o-4fi-JcmDrHYU6rHJDidn63Y3s(Landroid/view/ViewRootImpl;Ljava/lang/Runnable;)V
+SPLandroid/view/ViewRootImpl;->-$$Nest$fgetmAppStartTimestampsSent(Landroid/view/ViewRootImpl;)Ljava/util/concurrent/atomic/AtomicBoolean;
HSPLandroid/view/ViewRootImpl;->-$$Nest$fgetmBlastBufferQueue(Landroid/view/ViewRootImpl;)Landroid/graphics/BLASTBufferQueue;
+SPLandroid/view/ViewRootImpl;->-$$Nest$fgetmFirstFramePresentedTimeNs(Landroid/view/ViewRootImpl;)J
+SPLandroid/view/ViewRootImpl;->-$$Nest$fgetmRenderThreadDrawStartTimeNs(Landroid/view/ViewRootImpl;)J
+SPLandroid/view/ViewRootImpl;->-$$Nest$fputmFirstFramePresentedTimeNs(Landroid/view/ViewRootImpl;J)V
HSPLandroid/view/ViewRootImpl;->-$$Nest$fputmProfileRendering(Landroid/view/ViewRootImpl;Z)V
+SPLandroid/view/ViewRootImpl;->-$$Nest$mmaybeSendAppStartTimes(Landroid/view/ViewRootImpl;)V
HSPLandroid/view/ViewRootImpl;->-$$Nest$mprofileRendering(Landroid/view/ViewRootImpl;Z)V
HSPLandroid/view/ViewRootImpl;-><init>(Landroid/content/Context;Landroid/view/Display;)V
HSPLandroid/view/ViewRootImpl;-><init>(Landroid/content/Context;Landroid/view/Display;Landroid/view/IWindowSession;Landroid/view/WindowLayout;)V
@@ -18020,10 +18674,14 @@ HSPLandroid/view/ViewRootImpl;->addConfigCallback(Landroid/view/ViewRootImpl$Con
HSPLandroid/view/ViewRootImpl;->addFrameCommitCallbackIfNeeded()V
HSPLandroid/view/ViewRootImpl;->addSurfaceChangedCallback(Landroid/view/ViewRootImpl$SurfaceChangedCallback;)V
HSPLandroid/view/ViewRootImpl;->addWindowCallbacks(Landroid/view/WindowCallbacks;)V
+HSPLandroid/view/ViewRootImpl;->adjustLayoutInDisplayCutoutMode(Landroid/view/WindowManager$LayoutParams;)I+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;
+HSPLandroid/view/ViewRootImpl;->adjustLayoutParamsForCompatibility(Landroid/view/WindowManager$LayoutParams;IZ)V+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;
HSPLandroid/view/ViewRootImpl;->applyKeepScreenOnFlag(Landroid/view/WindowManager$LayoutParams;)V
HSPLandroid/view/ViewRootImpl;->applyTransactionOnDraw(Landroid/view/SurfaceControl$Transaction;)Z
+HSPLandroid/view/ViewRootImpl;->boostFrameRate(I)V
HSPLandroid/view/ViewRootImpl;->canResolveTextDirection()Z
HSPLandroid/view/ViewRootImpl;->cancelInvalidate(Landroid/view/View;)V
+HSPLandroid/view/ViewRootImpl;->categoryToString(I)Ljava/lang/String;
HSPLandroid/view/ViewRootImpl;->checkForLeavingTouchModeAndConsume(Landroid/view/KeyEvent;)Z
HSPLandroid/view/ViewRootImpl;->checkThread()V
HSPLandroid/view/ViewRootImpl;->childDrawableStateChanged(Landroid/view/View;)V
@@ -18037,6 +18695,7 @@ HSPLandroid/view/ViewRootImpl;->deliverInputEvent(Landroid/view/ViewRootImpl$Que
HSPLandroid/view/ViewRootImpl;->destroyHardwareRenderer()V
HSPLandroid/view/ViewRootImpl;->destroyHardwareResources()V
HSPLandroid/view/ViewRootImpl;->destroySurface()V
+HSPLandroid/view/ViewRootImpl;->determineForceDarkType()I
HSPLandroid/view/ViewRootImpl;->die(Z)Z
HSPLandroid/view/ViewRootImpl;->dipToPx(I)I
HSPLandroid/view/ViewRootImpl;->dispatchAppVisibility(Z)V
@@ -18058,6 +18717,7 @@ HSPLandroid/view/ViewRootImpl;->drawSoftware(Landroid/view/Surface;Landroid/view
HSPLandroid/view/ViewRootImpl;->enableHardwareAcceleration(Landroid/view/WindowManager$LayoutParams;)V
HSPLandroid/view/ViewRootImpl;->endDragResizing()V
HSPLandroid/view/ViewRootImpl;->enqueueInputEvent(Landroid/view/InputEvent;)V
+HSPLandroid/view/ViewRootImpl;->enqueueInputEvent(Landroid/view/InputEvent;Landroid/view/InputEventReceiver;IZ)Landroid/view/ViewRootImpl$QueuedInputEvent;+]Ljava/lang/CharSequence;Ljava/lang/String;
HSPLandroid/view/ViewRootImpl;->ensureTouchMode(Z)Z
HSPLandroid/view/ViewRootImpl;->ensureTouchModeLocally(Z)Z
HSPLandroid/view/ViewRootImpl;->enterTouchMode()Z
@@ -18075,8 +18735,10 @@ HSPLandroid/view/ViewRootImpl;->getChildVisibleRect(Landroid/view/View;Landroid/
HSPLandroid/view/ViewRootImpl;->getCompatWindowConfiguration()Landroid/app/WindowConfiguration;
HSPLandroid/view/ViewRootImpl;->getConfiguration()Landroid/content/res/Configuration;
HSPLandroid/view/ViewRootImpl;->getDisplayId()I
+SPLandroid/view/ViewRootImpl;->getFrameRateCompatibility()I
HSPLandroid/view/ViewRootImpl;->getHandwritingInitiator()Landroid/view/HandwritingInitiator;
HSPLandroid/view/ViewRootImpl;->getHostVisibility()I
+HSPLandroid/view/ViewRootImpl;->getHostVisibilityReason()Ljava/lang/String;+]Landroid/view/View;missing_types
HSPLandroid/view/ViewRootImpl;->getImeFocusController()Landroid/view/ImeFocusController;
HSPLandroid/view/ViewRootImpl;->getImpliedSystemUiVisibility(Landroid/view/WindowManager$LayoutParams;)I
HSPLandroid/view/ViewRootImpl;->getInsetsController()Landroid/view/InsetsController;
@@ -18101,7 +18763,10 @@ HSPLandroid/view/ViewRootImpl;->getWindowVisibleDisplayFrame(Landroid/graphics/R
HSPLandroid/view/ViewRootImpl;->handleAppVisibility(Z)V
HSPLandroid/view/ViewRootImpl;->handleContentCaptureFlush()V
HSPLandroid/view/ViewRootImpl;->handleDispatchSystemUiVisibilityChanged()V
+SPLandroid/view/ViewRootImpl;->handleInsetsControlChanged(Landroid/view/InsetsState;Landroid/view/InsetsSourceControl$Array;)V
HSPLandroid/view/ViewRootImpl;->handleWindowFocusChanged()V
+HSPLandroid/view/ViewRootImpl;->initializeProtoLogInProcess()V
+HSPLandroid/view/ViewRootImpl;->intermittentUpdateState()I
HSPLandroid/view/ViewRootImpl;->invalidate()V
HSPLandroid/view/ViewRootImpl;->invalidateChild(Landroid/view/View;Landroid/graphics/Rect;)V
HSPLandroid/view/ViewRootImpl;->invalidateChildInParent([ILandroid/graphics/Rect;)Landroid/view/ViewParent;
@@ -18109,6 +18774,7 @@ HSPLandroid/view/ViewRootImpl;->invalidateRectOnScreen(Landroid/graphics/Rect;)V
HSPLandroid/view/ViewRootImpl;->isAccessibilityFocusDirty()Z
HSPLandroid/view/ViewRootImpl;->isContentCaptureEnabled()Z
HSPLandroid/view/ViewRootImpl;->isContentCaptureReallyEnabled()Z
+HSPLandroid/view/ViewRootImpl;->isFrameRatePowerSavingsBalanced()Z+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;
HSPLandroid/view/ViewRootImpl;->isHardwareEnabled()Z
HSPLandroid/view/ViewRootImpl;->isInLayout()Z
HSPLandroid/view/ViewRootImpl;->isInTouchMode()Z
@@ -18118,13 +18784,19 @@ HSPLandroid/view/ViewRootImpl;->isNavigationKey(Landroid/view/KeyEvent;)Z
HSPLandroid/view/ViewRootImpl;->isTextDirectionResolved()Z
HSPLandroid/view/ViewRootImpl;->keepClearRectsChanged(Z)V
HSPLandroid/view/ViewRootImpl;->lambda$createSyncIfNeeded$4(ILandroid/view/SurfaceControl$Transaction;)V
-HSPLandroid/view/ViewRootImpl;->lambda$getOrCreateSurfaceSyncGroup$14()V
+HSPLandroid/view/ViewRootImpl;->lambda$getOrCreateSurfaceSyncGroup$16()V
+HSPLandroid/view/ViewRootImpl;->lambda$getOrCreateSurfaceSyncGroup$17()V
+HSPLandroid/view/ViewRootImpl;->lambda$getOrCreateSurfaceSyncGroup$18()V
HSPLandroid/view/ViewRootImpl;->lambda$new$0(Landroid/view/View;)Ljava/util/List;
HSPLandroid/view/ViewRootImpl;->lambda$new$1(Landroid/view/View;)Ljava/util/List;
HSPLandroid/view/ViewRootImpl;->lambda$new$2(Landroid/view/View;)Ljava/util/List;
+HSPLandroid/view/ViewRootImpl;->lambda$new$9(Ljava/lang/Runnable;)V
HSPLandroid/view/ViewRootImpl;->loadSystemProperties()V
+HSPLandroid/view/ViewRootImpl;->logAndTrace(Ljava/lang/String;)V
+HSPLandroid/view/ViewRootImpl;->logColorMode(IZ)V
HSPLandroid/view/ViewRootImpl;->maybeFireAccessibilityWindowStateChangedEvent()V
HSPLandroid/view/ViewRootImpl;->maybeHandleWindowMove(Landroid/graphics/Rect;)V
+HSPLandroid/view/ViewRootImpl;->maybeSendAppStartTimes()V
HSPLandroid/view/ViewRootImpl;->maybeUpdateTooltip(Landroid/view/MotionEvent;)V
HSPLandroid/view/ViewRootImpl;->measureHierarchy(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;Landroid/content/res/Resources;IIZ)Z
HSPLandroid/view/ViewRootImpl;->mergeWithNextTransaction(Landroid/view/SurfaceControl$Transaction;J)V
@@ -18135,12 +18807,15 @@ HSPLandroid/view/ViewRootImpl;->notifyRendererOfFramePending()V
HSPLandroid/view/ViewRootImpl;->notifySurfaceCreated(Landroid/view/SurfaceControl$Transaction;)V
HSPLandroid/view/ViewRootImpl;->notifySurfaceDestroyed()V
HSPLandroid/view/ViewRootImpl;->obtainQueuedInputEvent(Landroid/view/InputEvent;Landroid/view/InputEventReceiver;I)Landroid/view/ViewRootImpl$QueuedInputEvent;
+HSPLandroid/view/ViewRootImpl;->onActiveControlsChanged(Landroid/view/InsetsSourceControl$Array;)V+]Landroid/view/InsetsController;Landroid/view/InsetsController;]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array;
HSPLandroid/view/ViewRootImpl;->onDescendantInvalidated(Landroid/view/View;Landroid/view/View;)V
HSPLandroid/view/ViewRootImpl;->onDescendantUnbufferedRequested()V
+HSPLandroid/view/ViewRootImpl;->onInsetsStateChanged(Landroid/view/InsetsState;)V+]Landroid/view/InsetsController;Landroid/view/InsetsController;]Landroid/view/InsetsState;Landroid/view/InsetsState;
HSPLandroid/view/ViewRootImpl;->onMovedToDisplay(ILandroid/content/res/Configuration;)V
HSPLandroid/view/ViewRootImpl;->onPostDraw(Landroid/graphics/RecordingCanvas;)V
HSPLandroid/view/ViewRootImpl;->onPreDraw(Landroid/graphics/RecordingCanvas;)V
HSPLandroid/view/ViewRootImpl;->onStartNestedScroll(Landroid/view/View;Landroid/view/View;I)Z
+HSPLandroid/view/ViewRootImpl;->performConfigurationChange(Landroid/util/MergedConfiguration;ZILandroid/window/ActivityWindowInfo;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Landroid/util/MergedConfiguration;Landroid/util/MergedConfiguration;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments;]Landroid/view/ViewRootImpl$ActivityConfigCallback;missing_types]Landroid/view/ViewRootImpl$ConfigChangedCallback;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLandroid/view/ViewRootImpl;->performContentCaptureInitialReport()V
HSPLandroid/view/ViewRootImpl;->performDraw(Landroid/window/SurfaceSyncGroup;)Z
HSPLandroid/view/ViewRootImpl;->performLayout(Landroid/view/WindowManager$LayoutParams;II)V
@@ -18149,7 +18824,9 @@ HSPLandroid/view/ViewRootImpl;->performTraversals()V
HSPLandroid/view/ViewRootImpl;->playSoundEffect(I)V
HSPLandroid/view/ViewRootImpl;->pokeDrawLockIfNeeded()V
HSPLandroid/view/ViewRootImpl;->prepareSurfaces()V
+HSPLandroid/view/ViewRootImpl;->processRawInputEvent(Landroid/view/InputEvent;)V+]Landroid/view/InputEventCompatProcessor;missing_types
HSPLandroid/view/ViewRootImpl;->profileRendering(Z)V
+HSPLandroid/view/ViewRootImpl;->reasonToString(I)Ljava/lang/String;
HSPLandroid/view/ViewRootImpl;->recomputeViewAttributes(Landroid/view/View;)V
HSPLandroid/view/ViewRootImpl;->recycleQueuedInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)V
HSPLandroid/view/ViewRootImpl;->registerAnimatingRenderNode(Landroid/graphics/RenderNode;)V
@@ -18179,32 +18856,43 @@ HSPLandroid/view/ViewRootImpl;->setAccessibilityFocus(Landroid/view/View;Landroi
HSPLandroid/view/ViewRootImpl;->setAccessibilityWindowAttributesIfNeeded()V
HSPLandroid/view/ViewRootImpl;->setActivityConfigCallback(Landroid/view/ViewRootImpl$ActivityConfigCallback;)V
HSPLandroid/view/ViewRootImpl;->setBoundsLayerCrop(Landroid/view/SurfaceControl$Transaction;)V
+HSPLandroid/view/ViewRootImpl;->setCategoryFromCategoryCounts()V
HSPLandroid/view/ViewRootImpl;->setFrame(Landroid/graphics/Rect;Z)V
HSPLandroid/view/ViewRootImpl;->setLayoutParams(Landroid/view/WindowManager$LayoutParams;Z)V
HSPLandroid/view/ViewRootImpl;->setOnContentApplyWindowInsetsListener(Landroid/view/Window$OnContentApplyWindowInsetsListener;)V
+HSPLandroid/view/ViewRootImpl;->setPreferredFrameRate(F)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
+HSPLandroid/view/ViewRootImpl;->setPreferredFrameRateCategory(I)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
HSPLandroid/view/ViewRootImpl;->setTag()V
HSPLandroid/view/ViewRootImpl;->setView(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;Landroid/view/View;I)V
HSPLandroid/view/ViewRootImpl;->setWindowStopped(Z)V
+HSPLandroid/view/ViewRootImpl;->shouldCheckFrameRate(Z)Z
+HSPLandroid/view/ViewRootImpl;->shouldCheckFrameRateCategory()Z
HSPLandroid/view/ViewRootImpl;->shouldDispatchCutout()Z
+HSPLandroid/view/ViewRootImpl;->shouldEnableDvrr()Z
HSPLandroid/view/ViewRootImpl;->shouldOptimizeMeasure(Landroid/view/WindowManager$LayoutParams;)Z
HSPLandroid/view/ViewRootImpl;->shouldSetFrameRate()Z
+HSPLandroid/view/ViewRootImpl;->shouldSetFrameRateCategory()Z+]Landroid/view/Surface;Landroid/view/Surface;
HSPLandroid/view/ViewRootImpl;->shouldUseDisplaySize(Landroid/view/WindowManager$LayoutParams;)Z
HSPLandroid/view/ViewRootImpl;->systemGestureExclusionChanged()V
HSPLandroid/view/ViewRootImpl;->unscheduleConsumeBatchedInput()V
HSPLandroid/view/ViewRootImpl;->unscheduleTraversals()V
HSPLandroid/view/ViewRootImpl;->updateBlastSurfaceIfNeeded()V
HSPLandroid/view/ViewRootImpl;->updateBoundsLayer(Landroid/view/SurfaceControl$Transaction;)Z
+HSPLandroid/view/ViewRootImpl;->updateColorModeIfNeeded(IF)V+]Landroid/view/HdrRenderState;Landroid/view/HdrRenderState;
HSPLandroid/view/ViewRootImpl;->updateCompatSysUiVisibility(III)V
HSPLandroid/view/ViewRootImpl;->updateCompatSystemUiVisibilityInfo(IIII)V
HSPLandroid/view/ViewRootImpl;->updateConfiguration(I)V
HSPLandroid/view/ViewRootImpl;->updateContentDrawBounds()Z
HSPLandroid/view/ViewRootImpl;->updateForceDarkMode()V
+HSPLandroid/view/ViewRootImpl;->updateFrameRateFromThreadedRendererViews()V+]Landroid/view/View;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLandroid/view/ViewRootImpl;->updateInfrequentCount()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLandroid/view/ViewRootImpl;->updateInternalDisplay(ILandroid/content/res/Resources;)V
HSPLandroid/view/ViewRootImpl;->updateKeepClearForAccessibilityFocusRect()V
HSPLandroid/view/ViewRootImpl;->updateKeepClearRectsForView(Landroid/view/View;)V
HSPLandroid/view/ViewRootImpl;->updateOpacity(Landroid/view/WindowManager$LayoutParams;ZZ)V
HSPLandroid/view/ViewRootImpl;->updateSyncInProgressCount(Landroid/window/SurfaceSyncGroup;)V
HSPLandroid/view/ViewRootImpl;->updateSystemGestureExclusionRectsForView(Landroid/view/View;)V
+HSPLandroid/view/ViewRootImpl;->votePreferredFrameRateCategory(IILandroid/view/View;)V
HSPLandroid/view/ViewRootImpl;->windowFocusChanged(Z)V
HSPLandroid/view/ViewRootInsetsControllerHost;-><init>(Landroid/view/ViewRootImpl;)V
HSPLandroid/view/ViewRootInsetsControllerHost;->dipToPx(I)I
@@ -18217,6 +18905,7 @@ HSPLandroid/view/ViewRootInsetsControllerHost;->getTranslator()Landroid/content/
HSPLandroid/view/ViewRootInsetsControllerHost;->getWindowToken()Landroid/os/IBinder;
HSPLandroid/view/ViewRootInsetsControllerHost;->hasAnimationCallbacks()Z
HSPLandroid/view/ViewRootInsetsControllerHost;->notifyInsetsChanged()V
+HSPLandroid/view/ViewRootInsetsControllerHost;->setSystemBarsAppearance(II)V
HSPLandroid/view/ViewRootInsetsControllerHost;->updateCompatSysUiVisibility(III)V
HSPLandroid/view/ViewRootRectTracker$ViewInfo;-><init>(Landroid/view/ViewRootRectTracker;Landroid/view/View;)V
HSPLandroid/view/ViewRootRectTracker$ViewInfo;->getView()Landroid/view/View;
@@ -18349,6 +19038,7 @@ HSPLandroid/view/WindowInsets$Type;->statusBars()I
HSPLandroid/view/WindowInsets$Type;->systemBars()I
HSPLandroid/view/WindowInsets$Type;->systemGestures()I
HSPLandroid/view/WindowInsets$Type;->toString(I)Ljava/lang/String;
+HSPLandroid/view/WindowInsets;-><init>([Landroid/graphics/Insets;[Landroid/graphics/Insets;[ZZIZILandroid/view/DisplayCutout;Landroid/view/RoundedCorners;Landroid/view/PrivacyIndicatorBounds;Landroid/view/DisplayShape;IZ[[Landroid/graphics/Rect;[[Landroid/graphics/Rect;II)V
HSPLandroid/view/WindowInsets;->assignCompatInsets([Landroid/graphics/Insets;Landroid/graphics/Rect;)V
HSPLandroid/view/WindowInsets;->consumeDisplayCutout()Landroid/view/WindowInsets;
HSPLandroid/view/WindowInsets;->consumeStableInsets()Landroid/view/WindowInsets;
@@ -18389,6 +19079,7 @@ HSPLandroid/view/WindowLayout;-><clinit>()V
HSPLandroid/view/WindowLayout;-><init>()V
HSPLandroid/view/WindowLayout;->computeFrames(Landroid/view/WindowManager$LayoutParams;Landroid/view/InsetsState;Landroid/graphics/Rect;Landroid/graphics/Rect;IIIIFLandroid/window/ClientWindowFrames;)V
HSPLandroid/view/WindowLayout;->computeSurfaceSize(Landroid/view/WindowManager$LayoutParams;Landroid/graphics/Rect;IILandroid/graphics/Rect;ZLandroid/graphics/Point;)V
+HSPLandroid/view/WindowLayout;->intersectOrClamp(Landroid/graphics/Rect;Landroid/graphics/Rect;)V
HSPLandroid/view/WindowLeaked;-><init>(Ljava/lang/String;)V
HSPLandroid/view/WindowManager$LayoutParams$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/WindowManager$LayoutParams;
HSPLandroid/view/WindowManager$LayoutParams$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
@@ -18398,10 +19089,12 @@ HSPLandroid/view/WindowManager$LayoutParams;-><init>(Landroid/os/Parcel;)V
HSPLandroid/view/WindowManager$LayoutParams;->copyFrom(Landroid/view/WindowManager$LayoutParams;)I
HSPLandroid/view/WindowManager$LayoutParams;->forRotation(I)Landroid/view/WindowManager$LayoutParams;
HSPLandroid/view/WindowManager$LayoutParams;->getColorMode()I
+HSPLandroid/view/WindowManager$LayoutParams;->getDesiredHdrHeadroom()F
HSPLandroid/view/WindowManager$LayoutParams;->getFitInsetsSides()I
HSPLandroid/view/WindowManager$LayoutParams;->getFitInsetsTypes()I
HSPLandroid/view/WindowManager$LayoutParams;->getTitle()Ljava/lang/CharSequence;
HSPLandroid/view/WindowManager$LayoutParams;->isFitInsetsIgnoringVisibility()Z
+HSPLandroid/view/WindowManager$LayoutParams;->isFrameRatePowerSavingsBalanced()Z
HSPLandroid/view/WindowManager$LayoutParams;->isFullscreen()Z
HSPLandroid/view/WindowManager$LayoutParams;->mayUseInputMethod(I)Z
HSPLandroid/view/WindowManager$LayoutParams;->setColorMode(I)V
@@ -18452,6 +19145,8 @@ HSPLandroid/view/WindowMetrics;-><init>(Landroid/graphics/Rect;Landroid/view/Win
HSPLandroid/view/WindowMetrics;-><init>(Landroid/graphics/Rect;Ljava/util/function/Supplier;F)V
HSPLandroid/view/WindowMetrics;->getBounds()Landroid/graphics/Rect;
HSPLandroid/view/WindowMetrics;->getWindowInsets()Landroid/view/WindowInsets;
+HSPLandroid/view/WindowRelayoutResult;-><init>(Landroid/window/ClientWindowFrames;Landroid/util/MergedConfiguration;Landroid/view/SurfaceControl;Landroid/view/InsetsState;Landroid/view/InsetsSourceControl$Array;)V
+HSPLandroid/view/WindowRelayoutResult;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/util/MergedConfiguration;Landroid/util/MergedConfiguration;]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/window/ClientWindowFrames;Landroid/window/ClientWindowFrames;
HSPLandroid/view/accessibility/AccessibilityInteractionClient;->hasAnyDirectConnection()Z
HSPLandroid/view/accessibility/AccessibilityManager$1;-><init>(Landroid/view/accessibility/AccessibilityManager;)V
HSPLandroid/view/accessibility/AccessibilityManager$1;->notifyServicesStateChanged(J)V
@@ -18507,6 +19202,10 @@ HSPLandroid/view/accessibility/CaptioningManager;->getUserStyle()Landroid/view/a
HSPLandroid/view/accessibility/CaptioningManager;->isEnabled()Z
HSPLandroid/view/accessibility/CaptioningManager;->registerObserver(Ljava/lang/String;)V
HSPLandroid/view/accessibility/CaptioningManager;->removeCaptioningChangeListener(Landroid/view/accessibility/CaptioningManager$CaptioningChangeListener;)V
+SPLandroid/view/accessibility/FeatureFlagsImpl;->forceInvertColor()Z
+HSPLandroid/view/accessibility/FeatureFlagsImpl;->supplementalDescription()Z
+HSPLandroid/view/accessibility/Flags;->forceInvertColor()Z
+HSPLandroid/view/accessibility/Flags;->supplementalDescription()Z+]Landroid/view/accessibility/FeatureFlags;Landroid/view/accessibility/FeatureFlagsImpl;
HSPLandroid/view/accessibility/IAccessibilityInteractionConnection$Stub;-><init>()V
HSPLandroid/view/accessibility/IAccessibilityManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
HSPLandroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->addClient(Landroid/view/accessibility/IAccessibilityManagerClient;I)J
@@ -18689,14 +19388,26 @@ HSPLandroid/view/autofill/AutofillClientController;->onStartActivity(Landroid/co
HSPLandroid/view/autofill/AutofillFeatureFlags$$ExternalSyntheticLambda0;-><init>()V
HSPLandroid/view/autofill/AutofillFeatureFlags$$ExternalSyntheticLambda1;-><init>()V
HSPLandroid/view/autofill/AutofillFeatureFlags$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
+SPLandroid/view/autofill/AutofillFeatureFlags;->enableRelativeLocationForRelayout()Z
+SPLandroid/view/autofill/AutofillFeatureFlags;->enableRelayoutFixes()Z
+SPLandroid/view/autofill/AutofillFeatureFlags;->getAllowlistStringFromFlag()Ljava/lang/String;
HSPLandroid/view/autofill/AutofillFeatureFlags;->getDenylistStringFromFlag()Ljava/lang/String;
HSPLandroid/view/autofill/AutofillFeatureFlags;->getFillDialogEnabledHints()[Ljava/lang/String;
HSPLandroid/view/autofill/AutofillFeatureFlags;->getNonAutofillableImeActionIdSetFromFlag()Ljava/util/Set;
+SPLandroid/view/autofill/AutofillFeatureFlags;->isCredentialManagerEnabled()Z
+HSPLandroid/view/autofill/AutofillFeatureFlags;->isFillAndSaveDialogDisabledForCredentialManager()Z
HSPLandroid/view/autofill/AutofillFeatureFlags;->isFillDialogEnabled()Z
+SPLandroid/view/autofill/AutofillFeatureFlags;->isImproveFillDialogEnabled()Z
+SPLandroid/view/autofill/AutofillFeatureFlags;->isTriggerFillRequestOnFilteredImportantViewsEnabled()Z
HSPLandroid/view/autofill/AutofillFeatureFlags;->isTriggerFillRequestOnUnimportantViewEnabled()Z
HSPLandroid/view/autofill/AutofillFeatureFlags;->lambda$getFillDialogEnabledHints$1(Ljava/lang/String;)Z
+SPLandroid/view/autofill/AutofillFeatureFlags;->shouldAlwaysIncludeWebviewInAssistStructure()Z
+SPLandroid/view/autofill/AutofillFeatureFlags;->shouldEnableAutofillOnAllViewTypes()Z
+SPLandroid/view/autofill/AutofillFeatureFlags;->shouldEnableMultilineFilter()Z
+SPLandroid/view/autofill/AutofillFeatureFlags;->shouldIgnoreRelayoutWhenAuthPending()Z
HSPLandroid/view/autofill/AutofillFeatureFlags;->shouldIncludeAllChildrenViewInAssistStructure()Z
HSPLandroid/view/autofill/AutofillFeatureFlags;->shouldIncludeAllViewsAutofillTypeNotNoneInAssistStructrue()Z
+SPLandroid/view/autofill/AutofillFeatureFlags;->shouldIncludeInvisibleViewInAssistStructure()Z
HSPLandroid/view/autofill/AutofillId$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/autofill/AutofillId;
HSPLandroid/view/autofill/AutofillId$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
HSPLandroid/view/autofill/AutofillId;-><init>(I)V
@@ -18751,6 +19462,7 @@ HSPLandroid/view/autofill/AutofillManager;->startAutofillIfNeededLocked(Landroid
HSPLandroid/view/autofill/AutofillManager;->startSessionLocked(Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;I)V
HSPLandroid/view/autofill/AutofillManager;->tryAddServiceClientIfNeededLocked()Z
HSPLandroid/view/autofill/AutofillManager;->updateSessionLocked(Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;II)V
+HSPLandroid/view/autofill/AutofillStateFingerprint;-><init>()V
HSPLandroid/view/autofill/AutofillValue$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/autofill/AutofillValue;
HSPLandroid/view/autofill/AutofillValue$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
HSPLandroid/view/autofill/AutofillValue;-><init>(ILjava/lang/Object;)V
@@ -18793,6 +19505,7 @@ HSPLandroid/view/contentcapture/ContentCaptureHelper;->setLoggingLevel(I)V
HSPLandroid/view/contentcapture/ContentCaptureManager$LocalDataShareAdapterResourceManager;-><init>()V
HSPLandroid/view/contentcapture/ContentCaptureManager$StrippedContext;-><init>(Landroid/content/Context;)V
HSPLandroid/view/contentcapture/ContentCaptureManager;-><init>(Landroid/content/Context;Landroid/view/contentcapture/IContentCaptureManager;Landroid/content/ContentCaptureOptions;)V
+HSPLandroid/view/contentcapture/ContentCaptureManager;->getMainContentCaptureSession()Landroid/view/contentcapture/ContentCaptureSession;
HSPLandroid/view/contentcapture/ContentCaptureManager;->isContentCaptureEnabled()Z
HSPLandroid/view/contentcapture/ContentCaptureManager;->onActivityCreated(Landroid/os/IBinder;Landroid/os/IBinder;Landroid/content/ComponentName;)V
HSPLandroid/view/contentcapture/ContentCaptureManager;->setFlushViewTreeAppearingEventDisabled(Z)V
@@ -18835,6 +19548,7 @@ HSPLandroid/view/contentcapture/MainContentCaptureSession$SessionStateReceiver;-
HSPLandroid/view/contentcapture/MainContentCaptureSession$SessionStateReceiver;->send(ILandroid/os/Bundle;)V
HSPLandroid/view/contentcapture/MainContentCaptureSession;->clearEvents()Landroid/content/pm/ParceledListSlice;
HSPLandroid/view/contentcapture/MainContentCaptureSession;->destroySession()V
+HSPLandroid/view/contentcapture/MainContentCaptureSession;->enqueueEvent(Landroid/view/contentcapture/ContentCaptureEvent;Z)V+]Ljava/util/concurrent/ConcurrentLinkedQueue;Ljava/util/concurrent/ConcurrentLinkedQueue;
HSPLandroid/view/contentcapture/MainContentCaptureSession;->flush(I)V
HSPLandroid/view/contentcapture/MainContentCaptureSession;->flushIfNeeded(I)V
HSPLandroid/view/contentcapture/MainContentCaptureSession;->getActivityName()Ljava/lang/String;
@@ -18886,6 +19600,17 @@ HSPLandroid/view/contentcapture/ViewNode;->-$$Nest$fputmReceiveContentMimeTypes(
HSPLandroid/view/contentcapture/ViewNode;-><init>()V
HSPLandroid/view/contentcapture/ViewNode;->writeSelfToParcel(Landroid/os/Parcel;I)V
HSPLandroid/view/contentcapture/ViewNode;->writeToParcel(Landroid/os/Parcel;Landroid/view/contentcapture/ViewNode;I)V
+SPLandroid/view/flags/FeatureFlagsImpl;->addSchandleToVriSurface()Z
+HSPLandroid/view/flags/FeatureFlagsImpl;->bufferStuffingRecovery()Z
+SPLandroid/view/flags/FeatureFlagsImpl;->customizableWindowHeaders()Z
+SPLandroid/view/flags/FeatureFlagsImpl;->disableDrawWakeLock()Z
+SPLandroid/view/flags/FeatureFlagsImpl;->enableScrollFeedbackForTouch()Z
+SPLandroid/view/flags/FeatureFlagsImpl;->enableSurfaceNativeAllocRegistrationRo()Z
+HSPLandroid/view/flags/FeatureFlagsImpl;->sensitiveContentAppProtection()Z
+SPLandroid/view/flags/FeatureFlagsImpl;->viewVelocityApi()Z
+HSPLandroid/view/flags/Flags;->bufferStuffingRecovery()Z+]Landroid/view/flags/FeatureFlags;Landroid/view/flags/FeatureFlagsImpl;
+HSPLandroid/view/flags/Flags;->disableDrawWakeLock()Z
+HSPLandroid/view/flags/Flags;->sensitiveContentAppProtection()Z+]Landroid/view/flags/FeatureFlags;Landroid/view/flags/FeatureFlagsImpl;
HSPLandroid/view/inputmethod/BaseInputConnection;-><init>(Landroid/view/View;Z)V
HSPLandroid/view/inputmethod/BaseInputConnection;-><init>(Landroid/view/inputmethod/InputMethodManager;Z)V
HSPLandroid/view/inputmethod/BaseInputConnection;->beginBatchEdit()Z
@@ -18919,6 +19644,10 @@ HSPLandroid/view/inputmethod/EditorInfo;->setInitialSurroundingText(Ljava/lang/C
HSPLandroid/view/inputmethod/EditorInfo;->setInitialToolType(I)V
HSPLandroid/view/inputmethod/EditorInfo;->writeToParcel(Landroid/os/Parcel;I)V
HSPLandroid/view/inputmethod/ExtractedTextRequest;-><init>()V
+SPLandroid/view/inputmethod/FeatureFlagsImpl;->compatchangeForZerojankproxy()Z
+SPLandroid/view/inputmethod/FeatureFlagsImpl;->initiationWithoutInputConnection()Z
+HSPLandroid/view/inputmethod/FeatureFlagsImpl;->refactorInsetsController()Z
+HSPLandroid/view/inputmethod/Flags;->refactorInsetsController()Z+]Landroid/view/inputmethod/FeatureFlags;Landroid/view/inputmethod/FeatureFlagsImpl;
HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;-><clinit>()V
HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;->addClient(Lcom/android/internal/inputmethod/IInputMethodClient;Lcom/android/internal/inputmethod/IRemoteInputConnection;I)V
HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;->getImeTrackerService()Lcom/android/internal/inputmethod/IImeTracker;
@@ -19046,7 +19775,6 @@ HSPLandroid/view/inputmethod/InputMethodManager;->getStartInputFlags(Landroid/vi
HSPLandroid/view/inputmethod/InputMethodManager;->hasServedByInputMethodLocked(Landroid/view/View;)Z
HSPLandroid/view/inputmethod/InputMethodManager;->hideSoftInputFromWindow(Landroid/os/IBinder;I)Z
HSPLandroid/view/inputmethod/InputMethodManager;->hideSoftInputFromWindow(Landroid/os/IBinder;ILandroid/os/ResultReceiver;)Z
-HSPLandroid/view/inputmethod/InputMethodManager;->hideSoftInputFromWindow(Landroid/os/IBinder;ILandroid/os/ResultReceiver;I)Z
HSPLandroid/view/inputmethod/InputMethodManager;->invalidateInput(Landroid/view/View;)V
HSPLandroid/view/inputmethod/InputMethodManager;->isActive()Z
HSPLandroid/view/inputmethod/InputMethodManager;->isActive(Landroid/view/View;)Z
@@ -19219,7 +19947,6 @@ HSPLandroid/webkit/GeolocationPermissions;-><init>()V
HSPLandroid/webkit/IWebViewUpdateService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
HSPLandroid/webkit/IWebViewUpdateService$Stub$Proxy;->asBinder()Landroid/os/IBinder;
HSPLandroid/webkit/IWebViewUpdateService$Stub$Proxy;->getCurrentWebViewPackage()Landroid/content/pm/PackageInfo;
-HSPLandroid/webkit/IWebViewUpdateService$Stub$Proxy;->isMultiProcessEnabled()Z
HSPLandroid/webkit/IWebViewUpdateService$Stub$Proxy;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse;
HSPLandroid/webkit/IWebViewUpdateService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/webkit/IWebViewUpdateService;
HSPLandroid/webkit/MimeTypeMap;->getMimeTypeFromExtension(Ljava/lang/String;)Ljava/lang/String;
@@ -20362,6 +21089,7 @@ HSPLandroid/widget/TextView$SavedState$1;->createFromParcel(Landroid/os/Parcel;)
HSPLandroid/widget/TextView$SavedState;-><init>(Landroid/os/Parcel;)V
HSPLandroid/widget/TextView$SavedState;->writeToParcel(Landroid/os/Parcel;I)V
HSPLandroid/widget/TextView$TextAppearanceAttributes;-><init>()V
+HSPLandroid/widget/TextView$TextAppearanceAttributes;-><init>(Landroid/widget/TextView-IA;)V
HSPLandroid/widget/TextView;-><init>(Landroid/content/Context;)V
HSPLandroid/widget/TextView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
HSPLandroid/widget/TextView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
@@ -20452,6 +21180,7 @@ HSPLandroid/widget/TextView;->getMinWidth()I
HSPLandroid/widget/TextView;->getOffsetAtCoordinate(IF)I
HSPLandroid/widget/TextView;->getOffsetForPosition(FF)I
HSPLandroid/widget/TextView;->getPaint()Landroid/text/TextPaint;
+HSPLandroid/widget/TextView;->getResolvedMinimumFontMetrics()Landroid/graphics/Paint$FontMetrics;+]Landroid/text/TextPaint;Landroid/text/TextPaint;
HSPLandroid/widget/TextView;->getSelectionEnd()I
HSPLandroid/widget/TextView;->getSelectionEndTransformed()I
HSPLandroid/widget/TextView;->getSelectionStart()I
@@ -20716,7 +21445,21 @@ HSPLandroid/widget/inline/InlinePresentationSpec$1;->createFromParcel(Landroid/o
HSPLandroid/widget/inline/InlinePresentationSpec;-><clinit>()V
HSPLandroid/widget/inline/InlinePresentationSpec;-><init>(Landroid/os/Parcel;)V
HSPLandroid/widget/inline/InlinePresentationSpec;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/window/ActivityWindowInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/window/ActivityWindowInfo;
+HSPLandroid/window/ActivityWindowInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/window/ActivityWindowInfo$1;Landroid/window/ActivityWindowInfo$1;
+HSPLandroid/window/ActivityWindowInfo;-><init>()V
+HSPLandroid/window/ActivityWindowInfo;-><init>(Landroid/os/Parcel;)V
+SPLandroid/window/ActivityWindowInfo;-><init>(Landroid/os/Parcel;Landroid/window/ActivityWindowInfo-IA;)V
+HSPLandroid/window/ActivityWindowInfo;-><init>(Landroid/window/ActivityWindowInfo;)V
+HSPLandroid/window/ActivityWindowInfo;->equals(Ljava/lang/Object;)Z
+HSPLandroid/window/ActivityWindowInfo;->set(Landroid/window/ActivityWindowInfo;)V
+HSPLandroid/window/ActivityWindowInfo;->set(ZLandroid/graphics/Rect;Landroid/graphics/Rect;)V
HSPLandroid/window/BackProgressAnimator;-><init>()V
+SPLandroid/window/BackTouchTracker$TouchTrackerState;->$values()[Landroid/window/BackTouchTracker$TouchTrackerState;
+SPLandroid/window/BackTouchTracker$TouchTrackerState;-><clinit>()V
+SPLandroid/window/BackTouchTracker$TouchTrackerState;-><init>(Ljava/lang/String;I)V
+HSPLandroid/window/BackTouchTracker;-><init>()V
+HSPLandroid/window/BackTouchTracker;->setProgressThresholds(FFF)V
HSPLandroid/window/ClientWindowFrames$1;-><init>()V
HSPLandroid/window/ClientWindowFrames$1;->createFromParcel(Landroid/os/Parcel;)Landroid/window/ClientWindowFrames;
HSPLandroid/window/ClientWindowFrames$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
@@ -20724,11 +21467,55 @@ HSPLandroid/window/ClientWindowFrames;-><clinit>()V
HSPLandroid/window/ClientWindowFrames;-><init>()V
HSPLandroid/window/ClientWindowFrames;-><init>(Landroid/os/Parcel;)V
HSPLandroid/window/ClientWindowFrames;->readFromParcel(Landroid/os/Parcel;)V
+HSPLandroid/window/ClientWindowFrames;->setTo(Landroid/window/ClientWindowFrames;)V
HSPLandroid/window/ConfigurationHelper;->freeTextLayoutCachesIfNeeded(I)V
HSPLandroid/window/ConfigurationHelper;->isDifferentDisplay(II)Z
HSPLandroid/window/ConfigurationHelper;->isDisplayRotationChanged(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)Z
HSPLandroid/window/ConfigurationHelper;->shouldUpdateResources(Landroid/os/IBinder;Landroid/content/res/Configuration;Landroid/content/res/Configuration;Landroid/content/res/Configuration;ZLjava/lang/Boolean;)Z
HSPLandroid/window/ConfigurationHelper;->shouldUpdateWindowMetricsBounds(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)Z
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda0;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda10;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda11;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda12;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda13;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda14;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda15;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda16;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda17;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda18;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda19;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda1;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda20;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda21;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda22;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda23;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda24;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda25;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda26;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda27;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda28;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda29;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda2;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda30;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda31;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda32;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda3;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda4;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda5;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda6;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda7;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda8;-><init>()V
+SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda9;-><init>()V
+SPLandroid/window/DesktopModeFlags$ToggleOverride;->$values()[Landroid/window/DesktopModeFlags$ToggleOverride;
+SPLandroid/window/DesktopModeFlags$ToggleOverride;-><clinit>()V
+SPLandroid/window/DesktopModeFlags$ToggleOverride;-><init>(Ljava/lang/String;I)V
+SPLandroid/window/DesktopModeFlags$ToggleOverride;->fromSetting(ILandroid/window/DesktopModeFlags$ToggleOverride;)Landroid/window/DesktopModeFlags$ToggleOverride;
+SPLandroid/window/DesktopModeFlags$ToggleOverride;->getSetting()I
+SPLandroid/window/DesktopModeFlags;->$values()[Landroid/window/DesktopModeFlags;
+SPLandroid/window/DesktopModeFlags;-><clinit>()V
+HSPLandroid/window/DesktopModeFlags;->getToggleOverride(Landroid/content/ContentResolver;)Landroid/window/DesktopModeFlags$ToggleOverride;
+SPLandroid/window/DesktopModeFlags;->getToggleOverrideFromSystem(Landroid/content/ContentResolver;)Landroid/window/DesktopModeFlags$ToggleOverride;
+HSPLandroid/window/DesktopModeFlags;->isTrue()Z+]Landroid/app/Application;Landroid/app/Application;]Ljava/util/function/Supplier;megamorphic_types
HSPLandroid/window/IOnBackInvokedCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
HSPLandroid/window/IOnBackInvokedCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
HSPLandroid/window/IOnBackInvokedCallback$Stub;-><init>()V
@@ -20764,10 +21551,14 @@ HSPLandroid/window/SizeConfigurationBuckets$1;-><init>()V
HSPLandroid/window/SizeConfigurationBuckets;-><clinit>()V
HSPLandroid/window/SizeConfigurationBuckets;-><init>([Landroid/content/res/Configuration;)V
HSPLandroid/window/SizeConfigurationBuckets;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/window/SurfaceSyncGroup$$ExternalSyntheticLambda1;->get()Ljava/lang/Object;
+HSPLandroid/window/SurfaceSyncGroup$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V
HSPLandroid/window/SurfaceSyncGroup$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V
+HSPLandroid/window/SurfaceSyncGroup$$ExternalSyntheticLambda7;->accept(Ljava/lang/Object;)V
HSPLandroid/window/SurfaceSyncGroup$2;-><init>(Landroid/window/SurfaceSyncGroup;Z)V
HSPLandroid/window/SurfaceSyncGroup$2;->onTransactionReady(Landroid/view/SurfaceControl$Transaction;)V
HSPLandroid/window/SurfaceSyncGroup$ISurfaceSyncGroupImpl;->getSurfaceSyncGroup()Landroid/window/SurfaceSyncGroup;
+SPLandroid/window/SurfaceSyncGroup;->$r8$lambda$Kan-laRIbBzOqZCBkfLmwXUDtJA(Landroid/window/SurfaceSyncGroup;Ljava/util/function/Consumer;Landroid/view/SurfaceControl$Transaction;)V
HSPLandroid/window/SurfaceSyncGroup;->-$$Nest$fgetmLock(Landroid/window/SurfaceSyncGroup;)Ljava/lang/Object;
HSPLandroid/window/SurfaceSyncGroup;->-$$Nest$fgetmPendingSyncs(Landroid/window/SurfaceSyncGroup;)Landroid/util/ArraySet;
HSPLandroid/window/SurfaceSyncGroup;->-$$Nest$fgetmTransaction(Landroid/window/SurfaceSyncGroup;)Landroid/view/SurfaceControl$Transaction;
@@ -20830,12 +21621,16 @@ HSPLandroid/window/WindowOnBackInvokedDispatcher$OnBackInvokedCallbackWrapper;->
HSPLandroid/window/WindowOnBackInvokedDispatcher$OnBackInvokedCallbackWrapper;->onBackCancelled()V
HSPLandroid/window/WindowOnBackInvokedDispatcher$OnBackInvokedCallbackWrapper;->onBackInvoked()V
HSPLandroid/window/WindowOnBackInvokedDispatcher;-><clinit>()V
+HSPLandroid/window/WindowOnBackInvokedDispatcher;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
+HSPLandroid/window/WindowOnBackInvokedDispatcher;->attachToWindow(Landroid/view/IWindowSession;Landroid/view/IWindow;Landroid/view/ViewRootImpl;Landroid/view/ImeBackAnimationController;)V
HSPLandroid/window/WindowOnBackInvokedDispatcher;->clear()V
HSPLandroid/window/WindowOnBackInvokedDispatcher;->detachFromWindow()V
HSPLandroid/window/WindowOnBackInvokedDispatcher;->getTopCallback()Landroid/window/OnBackInvokedCallback;
HSPLandroid/window/WindowOnBackInvokedDispatcher;->hasImeOnBackInvokedDispatcher()Z
HSPLandroid/window/WindowOnBackInvokedDispatcher;->isOnBackInvokedCallbackEnabled()Z
HSPLandroid/window/WindowOnBackInvokedDispatcher;->isOnBackInvokedCallbackEnabled(Landroid/content/Context;)Z
+HSPLandroid/window/WindowOnBackInvokedDispatcher;->isOnBackInvokedCallbackEnabled(Landroid/content/pm/ActivityInfo;Landroid/content/pm/ApplicationInfo;Ljava/util/function/Supplier;)Z
+HSPLandroid/window/WindowOnBackInvokedDispatcher;->onConfigurationChanged(Landroid/content/res/Configuration;)V
HSPLandroid/window/WindowOnBackInvokedDispatcher;->registerOnBackInvokedCallback(ILandroid/window/OnBackInvokedCallback;)V
HSPLandroid/window/WindowOnBackInvokedDispatcher;->registerOnBackInvokedCallbackUnchecked(Landroid/window/OnBackInvokedCallback;I)V
HSPLandroid/window/WindowOnBackInvokedDispatcher;->setTopOnBackInvokedCallback(Landroid/window/OnBackInvokedCallback;)V
@@ -20847,6 +21642,9 @@ HSPLandroid/window/WindowTokenClient;-><init>()V
HSPLandroid/window/WindowTokenClient;->attachContext(Landroid/content/Context;)V
HSPLandroid/window/WindowTokenClient;->onConfigurationChanged(Landroid/content/res/Configuration;I)V
HSPLandroid/window/WindowTokenClient;->onConfigurationChanged(Landroid/content/res/Configuration;IZ)V
+HSPLcom/android/graphics/hwui/flags/FeatureFlagsImpl;->highContrastTextSmallTextRect()Z
+HSPLcom/android/graphics/hwui/flags/FeatureFlagsImpl;->runtimeColorFiltersBlenders()Z
+HSPLcom/android/graphics/hwui/flags/Flags;->highContrastTextSmallTextRect()Z+]Lcom/android/graphics/hwui/flags/FeatureFlags;Lcom/android/graphics/hwui/flags/FeatureFlagsImpl;
HSPLcom/android/i18n/phonenumbers/CountryCodeToRegionCodeMap;->getCountryCodeToRegionCodeMap()Ljava/util/Map;
HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->buildNationalNumberForParsing(Ljava/lang/String;Ljava/lang/StringBuilder;)V
HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->checkRegionForParsing(Ljava/lang/CharSequence;Ljava/lang/String;)Z
@@ -20982,6 +21780,7 @@ HSPLcom/android/i18n/phonenumbers/internal/RegexCache$LRUCache;->get(Ljava/lang/
HSPLcom/android/i18n/phonenumbers/internal/RegexCache$LRUCache;->put(Ljava/lang/Object;Ljava/lang/Object;)V
HSPLcom/android/i18n/phonenumbers/internal/RegexCache;-><init>(I)V
HSPLcom/android/i18n/phonenumbers/internal/RegexCache;->getPatternForRegex(Ljava/lang/String;)Ljava/util/regex/Pattern;
+HSPLcom/android/i18n/phonenumbers/prefixmapper/FlyweightMapStorage;->readExternalWord(Ljava/io/ObjectInput;ILjava/nio/ByteBuffer;I)V
HSPLcom/android/i18n/system/AppSpecializationHooks;->handleCompatChangesBeforeBindingApplication()V
HSPLcom/android/i18n/system/ZygoteHooks;->handleCompatChangesBeforeBindingApplication()V
HSPLcom/android/i18n/system/ZygoteHooks;->onEndPreload()V
@@ -21053,6 +21852,8 @@ HSPLcom/android/i18n/timezone/internal/NioBufferIterator;->readByteArray([BII)V
HSPLcom/android/i18n/timezone/internal/NioBufferIterator;->readInt()I
HSPLcom/android/i18n/timezone/internal/NioBufferIterator;->readLongArray([JII)V
HSPLcom/android/i18n/timezone/internal/NioBufferIterator;->skip(I)V
+SPLcom/android/i18n/util/ATrace;->traceBegin(Ljava/lang/String;)V
+SPLcom/android/i18n/util/ATrace;->traceEnd()V
HSPLcom/android/icu/charset/CharsetDecoderICU;-><init>(Ljava/nio/charset/Charset;FJ)V
HSPLcom/android/icu/charset/CharsetDecoderICU;->decodeLoop(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;
HSPLcom/android/icu/charset/CharsetDecoderICU;->getArray(Ljava/nio/ByteBuffer;)I
@@ -21191,22 +21992,30 @@ HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;-><init>(Landroi
HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->asBinder()Landroid/os/IBinder;
HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->getAppWidgetIds(Landroid/content/ComponentName;)[I
HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->getInstalledProvidersForProfile(IILjava/lang/String;)Landroid/content/pm/ParceledListSlice;
+HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->getMaxBitmapMemory()I
HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->notifyProviderInheritance([Landroid/content/ComponentName;)V
HSPLcom/android/internal/appwidget/IAppWidgetService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/appwidget/IAppWidgetService;
HSPLcom/android/internal/colorextraction/ColorExtractor$GradientColors;->getMainColor()I
HSPLcom/android/internal/colorextraction/ColorExtractor$GradientColors;->supportsDarkText()Z
+HSPLcom/android/internal/compat/ChangeReporter$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
HSPLcom/android/internal/compat/ChangeReporter$ChangeReport;-><init>(JI)V
HSPLcom/android/internal/compat/ChangeReporter$ChangeReport;->equals(Ljava/lang/Object;)Z
HSPLcom/android/internal/compat/ChangeReporter$ChangeReport;->hashCode()I
HSPLcom/android/internal/compat/ChangeReporter;-><init>(I)V
+HSPLcom/android/internal/compat/ChangeReporter;->checkAndSetIsAlreadyReported(ILcom/android/internal/compat/ChangeReporter$ChangeReport;)Z
HSPLcom/android/internal/compat/ChangeReporter;->debugLog(IJI)V
HSPLcom/android/internal/compat/ChangeReporter;->isAlreadyReported(ILcom/android/internal/compat/ChangeReporter$ChangeReport;)Z
+HSPLcom/android/internal/compat/ChangeReporter;->lambda$static$0(Ljava/lang/Integer;)Ljava/util/Set;
HSPLcom/android/internal/compat/ChangeReporter;->markAsReported(ILcom/android/internal/compat/ChangeReporter$ChangeReport;)V
HSPLcom/android/internal/compat/ChangeReporter;->reportChange(IJI)V
+HSPLcom/android/internal/compat/ChangeReporter;->reportChange(IJIZZ)V+]Lcom/android/internal/compat/ChangeReporter;Lcom/android/internal/compat/ChangeReporter;
HSPLcom/android/internal/compat/ChangeReporter;->shouldWriteToDebug(IJI)Z
HSPLcom/android/internal/compat/ChangeReporter;->shouldWriteToDebug(ZIZ)Z
+HSPLcom/android/internal/compat/ChangeReporter;->shouldWriteToStatsLog(ZZ)Z
HSPLcom/android/internal/compat/ChangeReporter;->stateToString(I)Ljava/lang/String;
HSPLcom/android/internal/compat/IPlatformCompat$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/compat/IPlatformCompat;
+HSPLcom/android/internal/compat/flags/FeatureFlagsImpl;->skipOldAndDisabledCompatLogging()Z
+HSPLcom/android/internal/compat/flags/Flags;->skipOldAndDisabledCompatLogging()Z+]Lcom/android/internal/compat/flags/FeatureFlags;Lcom/android/internal/compat/flags/FeatureFlagsImpl;
HSPLcom/android/internal/content/PackageMonitor;-><init>()V
HSPLcom/android/internal/content/ReferrerIntent$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/content/ReferrerIntent;
HSPLcom/android/internal/content/ReferrerIntent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
@@ -21262,7 +22071,44 @@ HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;->stop()V
HSPLcom/android/internal/graphics/drawable/BackgroundBlurDrawable$Aggregator;-><init>(Landroid/view/ViewRootImpl;)V
HSPLcom/android/internal/graphics/drawable/BackgroundBlurDrawable$Aggregator;->hasRegions()Z
HSPLcom/android/internal/graphics/drawable/BackgroundBlurDrawable$Aggregator;->hasUpdates()Z
+HSPLcom/android/internal/hidden_from_bootclasspath/android/app/job/FeatureFlagsImpl;->handleAbandonedJobs()Z
+HSPLcom/android/internal/hidden_from_bootclasspath/android/app/job/FeatureFlagsImpl;->ignoreImportantWhileForeground()Z
+HSPLcom/android/internal/hidden_from_bootclasspath/android/app/job/Flags;->handleAbandonedJobs()Z+]Lcom/android/internal/hidden_from_bootclasspath/android/app/job/FeatureFlags;Lcom/android/internal/hidden_from_bootclasspath/android/app/job/FeatureFlagsImpl;
+SPLcom/android/internal/hidden_from_bootclasspath/android/companion/virtualdevice/flags/FeatureFlagsImpl;-><init>()V
+HSPLcom/android/internal/hidden_from_bootclasspath/android/companion/virtualdevice/flags/FeatureFlagsImpl;->displayPowerManagerApis()Z
+SPLcom/android/internal/hidden_from_bootclasspath/android/companion/virtualdevice/flags/Flags;-><clinit>()V
+HSPLcom/android/internal/hidden_from_bootclasspath/android/companion/virtualdevice/flags/Flags;->displayPowerManagerApis()Z+]Lcom/android/internal/hidden_from_bootclasspath/android/companion/virtualdevice/flags/FeatureFlags;Lcom/android/internal/hidden_from_bootclasspath/android/companion/virtualdevice/flags/FeatureFlagsImpl;
+HSPLcom/android/internal/hidden_from_bootclasspath/android/content/pm/FeatureFlagsImpl;->relativeReferenceIntentFilters()Z
+SPLcom/android/internal/hidden_from_bootclasspath/android/net/http/FeatureFlagsImpl;-><init>()V
+SPLcom/android/internal/hidden_from_bootclasspath/android/net/http/FeatureFlagsImpl;->preloadHttpengineInZygote()Z
+SPLcom/android/internal/hidden_from_bootclasspath/android/net/http/Flags;-><clinit>()V
+SPLcom/android/internal/hidden_from_bootclasspath/android/net/http/Flags;->preloadHttpengineInZygote()Z
+HSPLcom/android/internal/hidden_from_bootclasspath/android/os/FeatureFlagsImpl;->adpfMeasureDuringInputEventBoost()Z
+SPLcom/android/internal/hidden_from_bootclasspath/android/os/FeatureFlagsImpl;->enableAngleAllowList()Z
HSPLcom/android/internal/hidden_from_bootclasspath/android/os/FeatureFlagsImpl;->messageQueueTailTracking()Z
+SPLcom/android/internal/hidden_from_bootclasspath/android/os/Flags;->enableAngleAllowList()Z
+SPLcom/android/internal/hidden_from_bootclasspath/android/security/FeatureFlagsImpl;->contentUriPermissionApis()Z
+HSPLcom/android/internal/hidden_from_bootclasspath/android/security/FeatureFlagsImpl;->preventIntentRedirect()Z
+HSPLcom/android/internal/hidden_from_bootclasspath/android/security/Flags;->contentUriPermissionApis()Z
+HSPLcom/android/internal/hidden_from_bootclasspath/android/security/Flags;->preventIntentRedirect()Z+]Lcom/android/internal/hidden_from_bootclasspath/android/security/FeatureFlags;Lcom/android/internal/hidden_from_bootclasspath/android/security/FeatureFlagsImpl;
+SPLcom/android/internal/hidden_from_bootclasspath/android/service/notification/FeatureFlagsImpl;->notificationClassification()Z
+SPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->enableCaptionCompatInsetForceConsumption()Z
+HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->enableCaptionCompatInsetForceConsumptionAlways()Z
+HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->enableDesktopWindowingMode()Z
+SPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->predictiveBackPrioritySystemNavigationObserver()Z
+SPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->predictiveBackSystemOverrideCallback()Z
+SPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->scrollingFromLetterbox()Z
+SPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->sdkDesiredPresentTime()Z
+SPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->setScPropertiesInClient()Z
+HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->showDesktopWindowingDevOption()Z
+SPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->wlinfoOncreate()Z
+HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/Flags;->enableCaptionCompatInsetForceConsumption()Z+]Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlags;Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;
+HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/Flags;->enableCaptionCompatInsetForceConsumptionAlways()Z+]Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlags;Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;
+HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/Flags;->enableDesktopWindowingMode()Z+]Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlags;Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;
+SPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/Flags;->scrollingFromLetterbox()Z
+HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/Flags;->setScPropertiesInClient()Z+]Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlags;Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;
+HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/Flags;->showDesktopWindowingDevOption()Z+]Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlags;Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;
+HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/Flags;->wlinfoOncreate()Z+]Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlags;Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;
HSPLcom/android/internal/infra/AndroidFuture$1;->complete(Lcom/android/internal/infra/AndroidFuture;)V
HSPLcom/android/internal/infra/AndroidFuture$2;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/infra/AndroidFuture;
HSPLcom/android/internal/infra/AndroidFuture$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
@@ -21307,6 +22153,11 @@ HSPLcom/android/internal/inputmethod/ImeTracing;->isEnabled()Z
HSPLcom/android/internal/inputmethod/ImeTracing;->isSystemProcess()Z
HSPLcom/android/internal/inputmethod/ImeTracingClientImpl;-><init>()V
HSPLcom/android/internal/inputmethod/ImeTracingClientImpl;->triggerClientDump(Ljava/lang/String;Landroid/view/inputmethod/InputMethodManager;[B)V
+SPLcom/android/internal/inputmethod/ImeTracingPerfettoImpl$$ExternalSyntheticLambda3;-><init>(Ljava/util/concurrent/atomic/AtomicInteger;)V
+SPLcom/android/internal/inputmethod/ImeTracingPerfettoImpl$$ExternalSyntheticLambda4;-><init>(Ljava/util/concurrent/atomic/AtomicInteger;)V
+SPLcom/android/internal/inputmethod/ImeTracingPerfettoImpl;-><init>()V
+HSPLcom/android/internal/inputmethod/ImeTracingPerfettoImpl;->isEnabled()Z
+HSPLcom/android/internal/inputmethod/ImeTracingPerfettoImpl;->triggerClientDump(Ljava/lang/String;Landroid/view/inputmethod/InputMethodManager;[B)V
HSPLcom/android/internal/inputmethod/InputBindResult$1;-><init>()V
HSPLcom/android/internal/inputmethod/InputBindResult$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/inputmethod/InputBindResult;
HSPLcom/android/internal/inputmethod/InputBindResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
@@ -21378,6 +22229,14 @@ HSPLcom/android/internal/logging/UiEventLoggerImpl;->logWithInstanceId(Lcom/andr
HSPLcom/android/internal/net/NetworkUtilsInternal;-><clinit>()V
HSPLcom/android/internal/os/AndroidPrintStream;-><init>(ILjava/lang/String;)V
HSPLcom/android/internal/os/AndroidPrintStream;->log(Ljava/lang/String;)V
+SPLcom/android/internal/os/ApplicationSharedMemory;-><init>(Ljava/io/FileDescriptor;ZJ)V
+SPLcom/android/internal/os/ApplicationSharedMemory;->closeFileDescriptor()V
+SPLcom/android/internal/os/ApplicationSharedMemory;->fromFileDescriptor(Ljava/io/FileDescriptor;Z)Lcom/android/internal/os/ApplicationSharedMemory;
+HSPLcom/android/internal/os/ApplicationSharedMemory;->getInstance()Lcom/android/internal/os/ApplicationSharedMemory;
+SPLcom/android/internal/os/ApplicationSharedMemory;->getSystemNonceBlock()J
+SPLcom/android/internal/os/ApplicationSharedMemory;->isMapped()Z
+SPLcom/android/internal/os/ApplicationSharedMemory;->isMutable()Z
+SPLcom/android/internal/os/ApplicationSharedMemory;->setInstance(Lcom/android/internal/os/ApplicationSharedMemory;)V
HSPLcom/android/internal/os/BackgroundThread;-><init>()V
HSPLcom/android/internal/os/BackgroundThread;->ensureThreadLocked()V
HSPLcom/android/internal/os/BackgroundThread;->getExecutor()Ljava/util/concurrent/Executor;
@@ -21427,6 +22286,23 @@ HSPLcom/android/internal/os/CachedDeviceState$Readonly;->isCharging()Z
HSPLcom/android/internal/os/ClassLoaderFactory;->createClassLoader(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/util/List;Ljava/util/List;)Ljava/lang/ClassLoader;
HSPLcom/android/internal/os/ClassLoaderFactory;->createClassLoader(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;IZLjava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;)Ljava/lang/ClassLoader;
HSPLcom/android/internal/os/ClassLoaderFactory;->isPathClassLoaderName(Ljava/lang/String;)Z
+HSPLcom/android/internal/os/DebugStore$DebugStoreNativeImpl;->beginEvent(Ljava/lang/String;Ljava/util/List;)J
+HSPLcom/android/internal/os/DebugStore$DebugStoreNativeImpl;->endEvent(JLjava/util/List;)V
+HSPLcom/android/internal/os/DebugStore$DebugStoreNativeImpl;->recordEvent(Ljava/lang/String;Ljava/util/List;)V
+HSPLcom/android/internal/os/DebugStore;->-$$Nest$smbeginEventNative(Ljava/lang/String;Ljava/util/List;)J
+HSPLcom/android/internal/os/DebugStore;->-$$Nest$smendEventNative(JLjava/util/List;)V
+HSPLcom/android/internal/os/DebugStore;->-$$Nest$smrecordEventNative(Ljava/lang/String;Ljava/util/List;)V
+HSPLcom/android/internal/os/DebugStore;->recordBroadcastHandleReceiver(Landroid/content/Intent;)J+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/internal/os/DebugStore$DebugStoreNative;Lcom/android/internal/os/DebugStore$DebugStoreNativeImpl;]Ljava/lang/Thread;Ljava/lang/Thread;
+HSPLcom/android/internal/os/DebugStore;->recordEventEnd(J)V+]Lcom/android/internal/os/DebugStore$DebugStoreNative;Lcom/android/internal/os/DebugStore$DebugStoreNativeImpl;
+HSPLcom/android/internal/os/DebugStore;->recordFinish(Ljava/lang/String;)V+]Lcom/android/internal/os/DebugStore$DebugStoreNative;Lcom/android/internal/os/DebugStore$DebugStoreNativeImpl;]Ljava/lang/Thread;missing_types
+HSPLcom/android/internal/os/DebugStore;->recordGoAsync(Ljava/lang/String;)V+]Lcom/android/internal/os/DebugStore$DebugStoreNative;Lcom/android/internal/os/DebugStore$DebugStoreNativeImpl;]Ljava/lang/Thread;Ljava/lang/Thread;
+HSPLcom/android/internal/os/DebugStore;->recordServiceBind(ZLandroid/content/Intent;)J+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/internal/os/DebugStore$DebugStoreNative;Lcom/android/internal/os/DebugStore$DebugStoreNativeImpl;
+HSPLcom/android/internal/os/DebugStore;->recordServiceCreate(Landroid/content/pm/ServiceInfo;)J+]Lcom/android/internal/os/DebugStore$DebugStoreNative;Lcom/android/internal/os/DebugStore$DebugStoreNativeImpl;
+HSPLcom/android/internal/os/DebugStore;->recordServiceOnStart(IILandroid/content/Intent;)J+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/internal/os/DebugStore$DebugStoreNative;Lcom/android/internal/os/DebugStore$DebugStoreNativeImpl;
+HSPLcom/android/internal/os/FeatureFlagsImpl;->applicationSharedMemoryEnabled()Z
+SPLcom/android/internal/os/FeatureFlagsImpl;->enableApacheHttpLegacyPreload()Z
+HSPLcom/android/internal/os/Flags;->applicationSharedMemoryEnabled()Z+]Lcom/android/internal/os/FeatureFlags;Lcom/android/internal/os/FeatureFlagsImpl;
+SPLcom/android/internal/os/Flags;->enableApacheHttpLegacyPreload()Z
HSPLcom/android/internal/os/HandlerCaller$MyHandler;-><init>(Lcom/android/internal/os/HandlerCaller;Landroid/os/Looper;Z)V
HSPLcom/android/internal/os/HandlerCaller$MyHandler;->handleMessage(Landroid/os/Message;)V
HSPLcom/android/internal/os/HandlerCaller;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/internal/os/HandlerCaller$Callback;Z)V
@@ -21472,6 +22348,7 @@ HSPLcom/android/internal/os/RuntimeInit$Arguments;-><init>([Ljava/lang/String;)V
HSPLcom/android/internal/os/RuntimeInit$Arguments;->parseArgs([Ljava/lang/String;)V
HSPLcom/android/internal/os/RuntimeInit$KillApplicationHandler;-><init>(Lcom/android/internal/os/RuntimeInit$LoggingHandler;)V
HSPLcom/android/internal/os/RuntimeInit$LoggingHandler;-><init>()V
+SPLcom/android/internal/os/RuntimeInit$LoggingHandler;-><init>(Lcom/android/internal/os/RuntimeInit-IA;)V
HSPLcom/android/internal/os/RuntimeInit$MethodAndArgsCaller;-><init>(Ljava/lang/reflect/Method;[Ljava/lang/String;)V
HSPLcom/android/internal/os/RuntimeInit$MethodAndArgsCaller;->run()V
HSPLcom/android/internal/os/RuntimeInit;->applicationInit(I[J[Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Runnable;
@@ -21567,6 +22444,7 @@ HSPLcom/android/internal/os/ZygoteServer;->getZygoteSocketFileDescriptor()Ljava/
HSPLcom/android/internal/os/ZygoteServer;->isUsapPoolEnabled()Z
HSPLcom/android/internal/os/ZygoteServer;->runSelectLoop(Ljava/lang/String;)Ljava/lang/Runnable;
HSPLcom/android/internal/os/ZygoteServer;->setForkChild()V
+SPLcom/android/internal/pm/RoSystemFeatures;->maybeHasFeature(Ljava/lang/String;I)Ljava/lang/Boolean;
HSPLcom/android/internal/policy/DecorContext;-><init>(Landroid/content/Context;Lcom/android/internal/policy/PhoneWindow;)V
HSPLcom/android/internal/policy/DecorContext;->getAutofillOptions()Landroid/content/AutofillOptions;
HSPLcom/android/internal/policy/DecorContext;->getContentCaptureOptions()Landroid/content/ContentCaptureOptions;
@@ -21582,6 +22460,7 @@ HSPLcom/android/internal/policy/DecorView$ColorViewAttributes;->isPresent(ZIZ)Z
HSPLcom/android/internal/policy/DecorView$ColorViewAttributes;->isVisible(ZIIZ)Z
HSPLcom/android/internal/policy/DecorView$ColorViewState;-><init>(Lcom/android/internal/policy/DecorView$ColorViewAttributes;)V
HSPLcom/android/internal/policy/DecorView;-><init>(Landroid/content/Context;ILcom/android/internal/policy/PhoneWindow;Landroid/view/WindowManager$LayoutParams;)V
+HSPLcom/android/internal/policy/DecorView;->calculateBarColor(IIIIIIZZ)I
HSPLcom/android/internal/policy/DecorView;->calculateNavigationBarColor(I)I
HSPLcom/android/internal/policy/DecorView;->calculateStatusBarColor(I)I
HSPLcom/android/internal/policy/DecorView;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z
@@ -21643,6 +22522,7 @@ HSPLcom/android/internal/policy/GestureNavigationSettingsObserver$1;-><init>(Lco
HSPLcom/android/internal/policy/GestureNavigationSettingsObserver;->areNavigationButtonForcedVisible()Z
HSPLcom/android/internal/policy/GestureNavigationSettingsObserver;->getLeftSensitivity(Landroid/content/res/Resources;)I
HSPLcom/android/internal/policy/GestureNavigationSettingsObserver;->getRightSensitivity(Landroid/content/res/Resources;)I
+HSPLcom/android/internal/policy/IDeviceLockedStateListener$Stub;-><init>()V
HSPLcom/android/internal/policy/IKeyguardLockedStateListener$Stub;-><init>()V
HSPLcom/android/internal/policy/PhoneFallbackEventHandler;-><init>(Landroid/content/Context;)V
HSPLcom/android/internal/policy/PhoneFallbackEventHandler;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z
@@ -21684,6 +22564,7 @@ HSPLcom/android/internal/policy/PhoneWindow;->getViewRootImplOrNull()Landroid/vi
HSPLcom/android/internal/policy/PhoneWindow;->getVolumeControlStream()I
HSPLcom/android/internal/policy/PhoneWindow;->installDecor()V
HSPLcom/android/internal/policy/PhoneWindow;->invalidatePanelMenu(I)V
+HSPLcom/android/internal/policy/PhoneWindow;->isEdgeToEdgeEnforced(Landroid/content/pm/ApplicationInfo;ZLandroid/content/res/TypedArray;)Z
HSPLcom/android/internal/policy/PhoneWindow;->isFloating()Z
HSPLcom/android/internal/policy/PhoneWindow;->isShowingWallpaper()Z
HSPLcom/android/internal/policy/PhoneWindow;->isTranslucent()Z
@@ -21719,6 +22600,62 @@ HSPLcom/android/internal/policy/PhoneWindow;->setVolumeControlStream(I)V
HSPLcom/android/internal/policy/PhoneWindow;->superDispatchKeyEvent(Landroid/view/KeyEvent;)Z
HSPLcom/android/internal/policy/PhoneWindow;->superDispatchTouchEvent(Landroid/view/MotionEvent;)Z
HSPLcom/android/internal/policy/ScreenDecorationsUtils;->supportsRoundedCornersOnWindows(Landroid/content/res/Resources;)Z
+HSPLcom/android/internal/policy/WearGestureInterceptionDetector;->isEnabled(Landroid/content/Context;)Z
+SPLcom/android/internal/protolog/IProtoLogClient$Stub;-><init>()V
+SPLcom/android/internal/protolog/PerfettoProtoLogImpl$$ExternalSyntheticLambda4;-><init>(Lcom/android/internal/protolog/PerfettoProtoLogImpl;)V
+SPLcom/android/internal/protolog/PerfettoProtoLogImpl$$ExternalSyntheticLambda4;->run(ILcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;)V
+SPLcom/android/internal/protolog/PerfettoProtoLogImpl$$ExternalSyntheticLambda5;-><init>(Lcom/android/internal/protolog/PerfettoProtoLogImpl;)V
+SPLcom/android/internal/protolog/PerfettoProtoLogImpl$$ExternalSyntheticLambda6;-><init>(Lcom/android/internal/protolog/PerfettoProtoLogImpl;)V
+SPLcom/android/internal/protolog/PerfettoProtoLogImpl;->$r8$lambda$MQ_SVaXmDujMW5ISGNMGvz8bOeI(Lcom/android/internal/protolog/PerfettoProtoLogImpl;ILcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;)V
+SPLcom/android/internal/protolog/PerfettoProtoLogImpl;-><init>(Lcom/android/internal/protolog/ProtoLogDataSource;Lcom/android/internal/protolog/ProtoLogCacheUpdater;[Lcom/android/internal/protolog/common/IProtoLogGroup;)V
+SPLcom/android/internal/protolog/PerfettoProtoLogImpl;-><init>(Lcom/android/internal/protolog/ProtoLogDataSource;Lcom/android/internal/protolog/ProtoLogCacheUpdater;[Lcom/android/internal/protolog/common/IProtoLogGroup;Lcom/android/internal/protolog/IProtoLogConfigurationService;)V
+SPLcom/android/internal/protolog/PerfettoProtoLogImpl;->enable()V
+HSPLcom/android/internal/protolog/PerfettoProtoLogImpl;->onTracingInstanceStart(ILcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;)V+]Lcom/android/internal/protolog/ProtoLogCacheUpdater;missing_types]Lcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;Lcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Set;Ljava/util/HashMap$KeySet;
+SPLcom/android/internal/protolog/PerfettoProtoLogImpl;->readyToLogToLogcat()V
+SPLcom/android/internal/protolog/PerfettoProtoLogImpl;->registerGroupsLocally([Lcom/android/internal/protolog/common/IProtoLogGroup;)V
+SPLcom/android/internal/protolog/PerfettoProtoLogImpl;->verifyNoCollisionsOrDuplicates([Lcom/android/internal/protolog/common/IProtoLogGroup;)V
+SPLcom/android/internal/protolog/ProtoLog;-><clinit>()V
+SPLcom/android/internal/protolog/ProtoLog;->createAndEnableNewPerfettoProtoLogImpl(Lcom/android/internal/protolog/ProtoLogDataSource;[Lcom/android/internal/protolog/common/IProtoLogGroup;)Lcom/android/internal/protolog/PerfettoProtoLogImpl;
+SPLcom/android/internal/protolog/ProtoLog;->getSharedSingleInstanceDataSource()Lcom/android/internal/protolog/ProtoLogDataSource;
+SPLcom/android/internal/protolog/ProtoLog;->init([Lcom/android/internal/protolog/common/IProtoLogGroup;)V
+SPLcom/android/internal/protolog/ProtoLog;->initializePerfettoProtoLog([Lcom/android/internal/protolog/common/IProtoLogGroup;)V
+SPLcom/android/internal/protolog/ProtoLogDataSource$$ExternalSyntheticLambda0;-><init>(Lcom/android/internal/protolog/ProtoLogDataSource;)V
+SPLcom/android/internal/protolog/ProtoLogDataSource$$ExternalSyntheticLambda0;->run(ILcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;)V
+SPLcom/android/internal/protolog/ProtoLogDataSource$$ExternalSyntheticLambda1;-><init>(Lcom/android/internal/protolog/ProtoLogDataSource;)V
+SPLcom/android/internal/protolog/ProtoLogDataSource$$ExternalSyntheticLambda2;-><init>(Lcom/android/internal/protolog/ProtoLogDataSource;)V
+HSPLcom/android/internal/protolog/ProtoLogDataSource$GroupConfig;-><init>(Lcom/android/internal/protolog/common/LogLevel;Z)V
+SPLcom/android/internal/protolog/ProtoLogDataSource$Instance;-><init>(Landroid/tracing/perfetto/DataSource;ILcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;Lcom/android/internal/protolog/ProtoLogDataSource$Instance$TracingInstanceStartCallback;Ljava/lang/Runnable;Lcom/android/internal/protolog/ProtoLogDataSource$Instance$TracingInstanceStopCallback;)V
+SPLcom/android/internal/protolog/ProtoLogDataSource$Instance;->onStart(Landroid/tracing/perfetto/StartCallbackArguments;)V
+SPLcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;-><clinit>()V
+SPLcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;-><init>(Lcom/android/internal/protolog/common/LogLevel;Ljava/util/Map;)V
+SPLcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;-><init>(Lcom/android/internal/protolog/common/LogLevel;Ljava/util/Map;Lcom/android/internal/protolog/ProtoLogDataSource-IA;)V
+HSPLcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;->getConfigFor(Ljava/lang/String;)Lcom/android/internal/protolog/ProtoLogDataSource$GroupConfig;+]Lcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;Lcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;]Ljava/util/Map;Ljava/util/HashMap;
+HSPLcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;->getDefaultGroupConfig()Lcom/android/internal/protolog/ProtoLogDataSource$GroupConfig;
+SPLcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;->getGroupTagsWithOverriddenConfigs()Ljava/util/Set;
+SPLcom/android/internal/protolog/ProtoLogDataSource;->$r8$lambda$UIYmd4vygAyNlpzo0qcmzUnaAs4(Lcom/android/internal/protolog/ProtoLogDataSource;ILcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;)V
+SPLcom/android/internal/protolog/ProtoLogDataSource;-><init>()V
+SPLcom/android/internal/protolog/ProtoLogDataSource;-><init>(Ljava/lang/String;)V
+SPLcom/android/internal/protolog/ProtoLogDataSource;->createInstance(Landroid/util/proto/ProtoInputStream;I)Landroid/tracing/perfetto/DataSourceInstance;
+SPLcom/android/internal/protolog/ProtoLogDataSource;->createInstance(Landroid/util/proto/ProtoInputStream;I)Lcom/android/internal/protolog/ProtoLogDataSource$Instance;
+SPLcom/android/internal/protolog/ProtoLogDataSource;->executeOnStartCallbacks(ILcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;)V
+SPLcom/android/internal/protolog/ProtoLogDataSource;->logLevelFromInt(I)Lcom/android/internal/protolog/common/LogLevel;
+SPLcom/android/internal/protolog/ProtoLogDataSource;->readProtoLogConfig(Landroid/util/proto/ProtoInputStream;)Lcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;
+SPLcom/android/internal/protolog/ProtoLogDataSource;->registerOnFlushCallback(Ljava/lang/Runnable;)V
+SPLcom/android/internal/protolog/ProtoLogDataSource;->registerOnStartCallback(Lcom/android/internal/protolog/ProtoLogDataSource$Instance$TracingInstanceStartCallback;)V
+SPLcom/android/internal/protolog/ProtoLogDataSource;->registerOnStopCallback(Lcom/android/internal/protolog/ProtoLogDataSource$Instance$TracingInstanceStopCallback;)V
+SPLcom/android/internal/protolog/ProtoLogGroup;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V
+SPLcom/android/internal/protolog/ProtoLogGroup;->getId()I
+HSPLcom/android/internal/protolog/ProtoLogGroup;->name()Ljava/lang/String;
+SPLcom/android/internal/protolog/UnprocessedPerfettoProtoLogImpl$$ExternalSyntheticLambda0;-><init>()V
+SPLcom/android/internal/protolog/UnprocessedPerfettoProtoLogImpl$$ExternalSyntheticLambda0;->update(Lcom/android/internal/protolog/common/IProtoLog;)V
+SPLcom/android/internal/protolog/UnprocessedPerfettoProtoLogImpl;-><init>(Lcom/android/internal/protolog/ProtoLogDataSource;[Lcom/android/internal/protolog/common/IProtoLogGroup;)V
+SPLcom/android/internal/protolog/UnprocessedPerfettoProtoLogImpl;->lambda$new$0(Lcom/android/internal/protolog/common/IProtoLog;)V
+SPLcom/android/internal/protolog/common/LogLevel;->$values()[Lcom/android/internal/protolog/common/LogLevel;
+SPLcom/android/internal/protolog/common/LogLevel;-><clinit>()V
+SPLcom/android/internal/protolog/common/LogLevel;-><init>(Ljava/lang/String;ILjava/lang/String;I)V
+HSPLcom/android/internal/protolog/common/LogLevel;->values()[Lcom/android/internal/protolog/common/LogLevel;
+SPLcom/android/internal/ravenwood/RavenwoodEnvironment;->getInstance()Lcom/android/internal/ravenwood/RavenwoodEnvironment;
+SPLcom/android/internal/ravenwood/RavenwoodEnvironment;->isRunningOnRavenwood()Z
HSPLcom/android/internal/statusbar/IStatusBarService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/statusbar/IStatusBarService;
HSPLcom/android/internal/statusbar/NotificationVisibility;->recycle()V
HSPLcom/android/internal/telecom/ClientTransactionalServiceRepository;-><clinit>()V
@@ -22014,6 +22951,9 @@ HSPLcom/android/internal/util/Preconditions;->checkState(ZLjava/lang/String;)V
HSPLcom/android/internal/util/Preconditions;->checkStringNotEmpty(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
HSPLcom/android/internal/util/Preconditions;->checkStringNotEmpty(Ljava/lang/CharSequence;Ljava/lang/Object;)Ljava/lang/CharSequence;
HSPLcom/android/internal/util/ProcFileReader;->finishLine()V
+HSPLcom/android/internal/util/RateLimitingCache;->get(Lcom/android/internal/util/RateLimitingCache$ValueFetcher;)Ljava/lang/Object;+]Lcom/android/internal/util/RateLimitingCache$ValueFetcher;Landroid/app/ActivityManager$$ExternalSyntheticLambda0;,Landroid/app/ActivityManager$$ExternalSyntheticLambda1;,Landroid/app/ActivityManager$$ExternalSyntheticLambda2;,Landroid/app/ActivityManager$$ExternalSyntheticLambda3;]Lcom/android/internal/util/RateLimitingCache;Lcom/android/internal/util/RateLimitingCache;
+HSPLcom/android/internal/util/RateLimitingCache;->getTime()J
+HSPLcom/android/internal/util/RingBuffer;-><init>(Ljava/util/function/Supplier;Ljava/util/function/IntFunction;I)V+]Ljava/util/function/IntFunction;Landroid/database/sqlite/SQLiteConnection$OperationLog$$ExternalSyntheticLambda1;,Lcom/android/internal/util/RingBuffer$$ExternalSyntheticLambda1;
HSPLcom/android/internal/util/ScreenshotHelper;-><init>(Landroid/content/Context;)V
HSPLcom/android/internal/util/StatLogger;->getTime()J
HSPLcom/android/internal/util/StatLogger;->logDurationStat(IJ)J
@@ -22104,6 +23044,7 @@ HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/lang/S
HSPLcom/android/internal/util/XmlUtils;->writeSetXml(Ljava/util/Set;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;)V
HSPLcom/android/internal/util/XmlUtils;->writeValueXml(Ljava/lang/Object;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;)V
HSPLcom/android/internal/util/XmlUtils;->writeValueXml(Ljava/lang/Object;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V
+SPLcom/android/internal/util/function/pooled/OmniFunction;-><init>()V
HSPLcom/android/internal/util/function/pooled/OmniFunction;->run()V
HSPLcom/android/internal/util/function/pooled/PooledLambda;->obtainMessage(Lcom/android/internal/util/function/HexConsumer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message;
HSPLcom/android/internal/util/function/pooled/PooledLambda;->obtainMessage(Lcom/android/internal/util/function/QuadConsumer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message;
@@ -22116,7 +23057,11 @@ HSPLcom/android/internal/util/function/pooled/PooledLambda;->obtainRunnable(Ljav
HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl$LambdaType;->decodeArgCount(I)I
HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl$LambdaType;->decodeReturnType(I)I
HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl$LambdaType;->encode(II)I
+SPLcom/android/internal/util/function/pooled/PooledLambdaImpl$Pool;-><init>(Ljava/lang/Object;)V
+HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->-$$Nest$smmask(II)I
HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->-$$Nest$smunmask(II)I
+SPLcom/android/internal/util/function/pooled/PooledLambdaImpl;-><clinit>()V
+HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;-><init>()V
HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->acquire(Lcom/android/internal/util/function/pooled/PooledLambdaImpl$Pool;)Lcom/android/internal/util/function/pooled/PooledLambdaImpl;
HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->acquire(Lcom/android/internal/util/function/pooled/PooledLambdaImpl$Pool;Ljava/lang/Object;IIILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/android/internal/util/function/pooled/PooledLambda;
HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->checkNotRecycled()V
@@ -22202,7 +23147,7 @@ HSPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;->handleStron
HSPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;->isNonStrongBiometricAllowedAfterIdleTimeout(I)Z
HSPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;->onIsNonStrongBiometricAllowedChanged(I)V
HSPLcom/android/internal/widget/LockPatternUtils;-><init>(Landroid/content/Context;)V
-HSPLcom/android/internal/widget/LockPatternUtils;-><init>(Landroid/content/Context;Lcom/android/internal/widget/ILockSettings;)V+]Landroid/content/Context;Landroid/app/ContextImpl;
+HSPLcom/android/internal/widget/LockPatternUtils;-><init>(Landroid/content/Context;Lcom/android/internal/widget/ILockSettings;)V
HSPLcom/android/internal/widget/LockPatternUtils;->credentialTypeToPasswordQuality(I)I
HSPLcom/android/internal/widget/LockPatternUtils;->getBoolean(Ljava/lang/String;ZI)Z
HSPLcom/android/internal/widget/LockPatternUtils;->getCredentialTypeForUser(I)I
@@ -22217,6 +23162,10 @@ HSPLcom/android/internal/widget/LockPatternUtils;->isManagedProfile(I)Z
HSPLcom/android/internal/widget/LockPatternUtils;->isOwnerInfoEnabled(I)Z
HSPLcom/android/internal/widget/LockPatternUtils;->isSecure(I)Z
HSPLcom/android/internal/widget/LockPatternUtils;->isSeparateProfileChallengeEnabled(I)Z
+SPLcom/android/libcore/readonly/FeatureFlagsImpl;-><init>()V
+HSPLcom/android/libcore/readonly/FeatureFlagsImpl;->nativeMetrics()Z
+SPLcom/android/libcore/readonly/Flags;-><clinit>()V
+HSPLcom/android/libcore/readonly/Flags;->nativeMetrics()Z+]Lcom/android/libcore/readonly/FeatureFlags;Lcom/android/libcore/readonly/FeatureFlagsImpl;
HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeBoolean(Ljava/lang/String;Ljava/lang/String;)Z+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;
HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeFloat(Ljava/lang/String;Ljava/lang/String;)F
HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeIndex(Ljava/lang/String;Ljava/lang/String;)I+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;
@@ -22232,13 +23181,23 @@ HSPLcom/android/net/module/util/MacAddressUtils;->isMacAddress([B)Z
HSPLcom/android/net/module/util/MacAddressUtils;->longAddrFromByteAddr([B)J
HSPLcom/android/net/module/util/NetUtils;->maskRawAddress([BI)V
HSPLcom/android/net/module/util/NetworkCapabilitiesUtils;-><clinit>()V
+HSPLcom/android/os/coregraphics/HwuiStatsLog;->write(IIJI)V
HSPLcom/android/server/LocalServices;->getService(Ljava/lang/Class;)Ljava/lang/Object;
+SPLcom/android/server/display/feature/flags/FeatureFlagsImpl;-><init>()V
+SPLcom/android/server/display/feature/flags/FeatureFlagsImpl;->displayListenerPerformanceImprovements()Z
+SPLcom/android/server/display/feature/flags/FeatureFlagsImpl;->subscribeGranularDisplayEvents()Z
+SPLcom/android/server/display/feature/flags/Flags;-><clinit>()V
+HSPLcom/android/server/display/feature/flags/Flags;->displayListenerPerformanceImprovements()Z+]Lcom/android/server/display/feature/flags/FeatureFlags;Lcom/android/server/display/feature/flags/FeatureFlagsImpl;
+HSPLcom/android/server/display/feature/flags/Flags;->subscribeGranularDisplayEvents()Z
HSPLcom/android/telephony/Rlog;->d(Ljava/lang/String;Ljava/lang/String;)I
HSPLcom/android/telephony/Rlog;->e(Ljava/lang/String;Ljava/lang/String;)I
HSPLcom/android/telephony/Rlog;->log(ILjava/lang/String;Ljava/lang/String;)I
HSPLcom/android/telephony/Rlog;->pii(ZLjava/lang/Object;)Ljava/lang/String;
HSPLcom/android/telephony/Rlog;->w(Ljava/lang/String;Ljava/lang/String;)I
HSPLcom/android/text/flags/FeatureFlagsImpl;-><init>()V
+HSPLcom/android/text/flags/FeatureFlagsImpl;->fixLineHeightForLocale()Z
+HSPLcom/android/text/flags/FeatureFlagsImpl;->insertModeNotUpdateSelection()Z
+HSPLcom/android/text/flags/FeatureFlagsImpl;->typefaceRedesignReadonly()Z
HSPLcom/android/text/flags/Flags;-><clinit>()V
HSPLcom/google/android/collect/Lists;->newArrayList()Ljava/util/ArrayList;
HSPLcom/google/android/collect/Lists;->newArrayList([Ljava/lang/Object;)Ljava/util/ArrayList;
@@ -22375,7 +23334,6 @@ Landroid/accounts/AccountManager$AmsTask$1;
Landroid/accounts/AccountManager$AmsTask$Response;
Landroid/accounts/AccountManager$AmsTask;
Landroid/accounts/AccountManager$BaseFutureTask$1;
-Landroid/accounts/AccountManager$BaseFutureTask$Response;
Landroid/accounts/AccountManager$BaseFutureTask;
Landroid/accounts/AccountManager$Future2Task$1;
Landroid/accounts/AccountManager$Future2Task;
@@ -22390,7 +23348,6 @@ Landroid/accounts/AuthenticatorDescription$1;
Landroid/accounts/AuthenticatorDescription-IA;
Landroid/accounts/AuthenticatorDescription;
Landroid/accounts/AuthenticatorException;
-Landroid/accounts/IAccountAuthenticator$Stub$Proxy;
Landroid/accounts/IAccountAuthenticator$Stub;
Landroid/accounts/IAccountAuthenticator;
Landroid/accounts/IAccountAuthenticatorResponse$Stub$Proxy;
@@ -22399,7 +23356,6 @@ Landroid/accounts/IAccountAuthenticatorResponse;
Landroid/accounts/IAccountManager$Stub$Proxy;
Landroid/accounts/IAccountManager$Stub;
Landroid/accounts/IAccountManager;
-Landroid/accounts/IAccountManagerResponse$Stub$Proxy;
Landroid/accounts/IAccountManagerResponse$Stub;
Landroid/accounts/IAccountManagerResponse;
Landroid/accounts/NetworkErrorException;
@@ -22412,6 +23368,9 @@ Landroid/aconfig/nano/Aconfig$flag_values;
Landroid/aconfig/nano/Aconfig$parsed_flag;
Landroid/aconfig/nano/Aconfig$parsed_flags;
Landroid/aconfig/nano/Aconfig$tracepoint;
+Landroid/adpf/FeatureFlags;
+Landroid/adpf/FeatureFlagsImpl;
+Landroid/adpf/Flags;
Landroid/animation/AnimationHandler$$ExternalSyntheticLambda0;
Landroid/animation/AnimationHandler$1;
Landroid/animation/AnimationHandler$2;
@@ -22550,7 +23509,6 @@ Landroid/app/ActivityManager$PendingIntentInfo;
Landroid/app/ActivityManager$ProcessErrorStateInfo$1;
Landroid/app/ActivityManager$ProcessErrorStateInfo;
Landroid/app/ActivityManager$RecentTaskInfo$1;
-Landroid/app/ActivityManager$RecentTaskInfo$PersistedTaskSnapshotData;
Landroid/app/ActivityManager$RecentTaskInfo;
Landroid/app/ActivityManager$RunningAppProcessInfo$1;
Landroid/app/ActivityManager$RunningAppProcessInfo;
@@ -22588,9 +23546,9 @@ Landroid/app/ActivityThread$1;
Landroid/app/ActivityThread$2;
Landroid/app/ActivityThread$3;
Landroid/app/ActivityThread$4;
+Landroid/app/ActivityThread$5;
Landroid/app/ActivityThread$ActivityClientRecord$1;
Landroid/app/ActivityThread$ActivityClientRecord;
-Landroid/app/ActivityThread$AndroidOs;
Landroid/app/ActivityThread$AppBindData;
Landroid/app/ActivityThread$ApplicationThread$$ExternalSyntheticLambda2;
Landroid/app/ActivityThread$ApplicationThread$1;
@@ -22641,8 +23599,9 @@ Landroid/app/AppOpsManager$$ExternalSyntheticLambda3;
Landroid/app/AppOpsManager$$ExternalSyntheticLambda4;
Landroid/app/AppOpsManager$$ExternalSyntheticLambda5;
Landroid/app/AppOpsManager$$ExternalSyntheticLambda6;
+Landroid/app/AppOpsManager$$ExternalSyntheticLambda8;
Landroid/app/AppOpsManager$1;
-Landroid/app/AppOpsManager$3;
+Landroid/app/AppOpsManager$2;
Landroid/app/AppOpsManager$4;
Landroid/app/AppOpsManager$AppOpsCollector;
Landroid/app/AppOpsManager$AttributedHistoricalOps$1;
@@ -22707,9 +23666,11 @@ Landroid/app/ApplicationPackageManager$1;
Landroid/app/ApplicationPackageManager$2;
Landroid/app/ApplicationPackageManager$3;
Landroid/app/ApplicationPackageManager$GetPackagesForUidResult;
+Landroid/app/ApplicationPackageManager$HasSystemFeatureQuery$$ExternalSyntheticRecord1;
Landroid/app/ApplicationPackageManager$HasSystemFeatureQuery;
Landroid/app/ApplicationPackageManager$MoveCallbackDelegate;
Landroid/app/ApplicationPackageManager$ResourceName;
+Landroid/app/ApplicationPackageManager-IA;
Landroid/app/AsyncNotedAppOp$1;
Landroid/app/AsyncNotedAppOp;
Landroid/app/AutomaticZenRule$1;
@@ -22722,6 +23683,9 @@ Landroid/app/BackgroundInstallControlManager;
Landroid/app/BackgroundServiceStartNotAllowedException$1;
Landroid/app/BackgroundServiceStartNotAllowedException;
Landroid/app/BroadcastOptions;
+Landroid/app/BroadcastStickyCache$$ExternalSyntheticLambda0;
+Landroid/app/BroadcastStickyCache$StickyBroadcastFilter$$ExternalSyntheticRecord0;
+Landroid/app/BroadcastStickyCache$StickyBroadcastFilter;
Landroid/app/BroadcastStickyCache;
Landroid/app/CameraCompatTaskInfo$1;
Landroid/app/CameraCompatTaskInfo;
@@ -22868,7 +23832,6 @@ Landroid/app/IServiceConnection;
Landroid/app/IStopUserCallback$Stub$Proxy;
Landroid/app/IStopUserCallback$Stub;
Landroid/app/IStopUserCallback;
-Landroid/app/ITaskStackListener$Stub$Proxy;
Landroid/app/ITaskStackListener$Stub;
Landroid/app/ITaskStackListener;
Landroid/app/ITransientNotification$Stub$Proxy;
@@ -22917,6 +23880,7 @@ Landroid/app/IntentReceiverLeaked;
Landroid/app/IntentService$ServiceHandler;
Landroid/app/IntentService;
Landroid/app/KeyguardManager$1;
+Landroid/app/KeyguardManager$2;
Landroid/app/KeyguardManager$KeyguardDismissCallback;
Landroid/app/KeyguardManager;
Landroid/app/ListActivity;
@@ -22960,6 +23924,7 @@ Landroid/app/Notification$InboxStyle;
Landroid/app/Notification$MediaStyle;
Landroid/app/Notification$MessagingStyle$Message;
Landroid/app/Notification$MessagingStyle;
+Landroid/app/Notification$ProgressStyle;
Landroid/app/Notification$StandardTemplateParams;
Landroid/app/Notification$Style;
Landroid/app/Notification$TemplateBindResult$MarginSet;
@@ -22975,6 +23940,9 @@ Landroid/app/NotificationHistory$1;
Landroid/app/NotificationHistory$HistoricalNotification$Builder;
Landroid/app/NotificationHistory$HistoricalNotification;
Landroid/app/NotificationHistory;
+Landroid/app/NotificationManager$1;
+Landroid/app/NotificationManager$NotificationChannelQuery;
+Landroid/app/NotificationManager$NotificationKey;
Landroid/app/NotificationManager$Policy$1;
Landroid/app/NotificationManager$Policy;
Landroid/app/NotificationManager;
@@ -23006,11 +23974,17 @@ Landroid/app/ProfilerInfo$1;
Landroid/app/ProfilerInfo;
Landroid/app/ProgressDialog$1;
Landroid/app/ProgressDialog;
-Landroid/app/PropertyInvalidatedCache$1;
+Landroid/app/PropertyInvalidatedCache$Args;
Landroid/app/PropertyInvalidatedCache$AutoCorker$1;
Landroid/app/PropertyInvalidatedCache$AutoCorker;
+Landroid/app/PropertyInvalidatedCache$CacheMap$1;
+Landroid/app/PropertyInvalidatedCache$CacheMap;
Landroid/app/PropertyInvalidatedCache$DefaultComputer;
Landroid/app/PropertyInvalidatedCache$NoPreloadHolder;
+Landroid/app/PropertyInvalidatedCache$NonceHandler;
+Landroid/app/PropertyInvalidatedCache$NonceSharedMem;
+Landroid/app/PropertyInvalidatedCache$NonceStore;
+Landroid/app/PropertyInvalidatedCache$NonceSysprop;
Landroid/app/PropertyInvalidatedCache$QueryHandler;
Landroid/app/PropertyInvalidatedCache;
Landroid/app/QueuedWork$QueuedWorkHandler;
@@ -23029,6 +24003,7 @@ Landroid/app/RemoteInputHistoryItem;
Landroid/app/RemoteServiceException;
Landroid/app/ResourcesManager$$ExternalSyntheticLambda0;
Landroid/app/ResourcesManager$$ExternalSyntheticLambda1;
+Landroid/app/ResourcesManager$$ExternalSyntheticLambda2;
Landroid/app/ResourcesManager$ActivityResource;
Landroid/app/ResourcesManager$ActivityResources;
Landroid/app/ResourcesManager$ApkAssetsSupplier;
@@ -23124,7 +24099,9 @@ Landroid/app/SystemServiceRegistry$145;
Landroid/app/SystemServiceRegistry$146;
Landroid/app/SystemServiceRegistry$147;
Landroid/app/SystemServiceRegistry$148;
+Landroid/app/SystemServiceRegistry$149;
Landroid/app/SystemServiceRegistry$14;
+Landroid/app/SystemServiceRegistry$150;
Landroid/app/SystemServiceRegistry$15;
Landroid/app/SystemServiceRegistry$16;
Landroid/app/SystemServiceRegistry$17;
@@ -23230,6 +24207,7 @@ Landroid/app/SystemServiceRegistry;
Landroid/app/TaskInfo;
Landroid/app/TaskStackListener;
Landroid/app/UiModeManager$1;
+Landroid/app/UiModeManager$2;
Landroid/app/UiModeManager$Globals;
Landroid/app/UiModeManager$InnerListener;
Landroid/app/UiModeManager$OnProjectionStateChangedListener;
@@ -23326,6 +24304,7 @@ Landroid/app/ambientcontext/AmbientContextManager;
Landroid/app/ambientcontext/IAmbientContextManager$Stub$Proxy;
Landroid/app/ambientcontext/IAmbientContextManager$Stub;
Landroid/app/ambientcontext/IAmbientContextManager;
+Landroid/app/appfunctions/AppFunctionManager;
Landroid/app/assist/ActivityId$1;
Landroid/app/assist/ActivityId;
Landroid/app/assist/AssistContent$1;
@@ -23346,6 +24325,7 @@ Landroid/app/assist/AssistStructure$ViewNodeText;
Landroid/app/assist/AssistStructure$ViewStackEntry;
Landroid/app/assist/AssistStructure$WindowNode;
Landroid/app/assist/AssistStructure;
+Landroid/app/assist/flags/Flags;
Landroid/app/backup/BackupAgent$BackupServiceBinder;
Landroid/app/backup/BackupAgent$SharedPrefsSynchronizer;
Landroid/app/backup/BackupAgent-IA;
@@ -23432,6 +24412,10 @@ Landroid/app/contentsuggestions/SelectionsRequest$Builder;
Landroid/app/contentsuggestions/SelectionsRequest-IA;
Landroid/app/contentsuggestions/SelectionsRequest;
Landroid/app/contextualsearch/ContextualSearchManager;
+Landroid/app/jank/FeatureFlags;
+Landroid/app/jank/FeatureFlagsImpl;
+Landroid/app/jank/Flags;
+Landroid/app/jank/JankTracker;
Landroid/app/job/IJobCallback$Stub$Proxy;
Landroid/app/job/IJobCallback$Stub;
Landroid/app/job/IJobCallback;
@@ -23463,7 +24447,6 @@ Landroid/app/job/JobServiceEngine$JobHandler;
Landroid/app/job/JobServiceEngine;
Landroid/app/job/JobWorkItem$1;
Landroid/app/job/JobWorkItem;
-Landroid/app/ondeviceintelligence/OnDeviceIntelligenceManager;
Landroid/app/people/IPeopleManager$Stub$Proxy;
Landroid/app/people/IPeopleManager$Stub;
Landroid/app/people/IPeopleManager;
@@ -23541,7 +24524,10 @@ Landroid/app/servertransaction/TopResumedActivityChangeItem-IA;
Landroid/app/servertransaction/TopResumedActivityChangeItem;
Landroid/app/servertransaction/TransactionExecutor;
Landroid/app/servertransaction/TransactionExecutorHelper;
+Landroid/app/servertransaction/WindowStateInsetsControlChangeItem$1;
+Landroid/app/servertransaction/WindowStateInsetsControlChangeItem;
Landroid/app/servertransaction/WindowStateTransactionItem$TransactionListener;
+Landroid/app/servertransaction/WindowStateTransactionItem;
Landroid/app/slice/ISliceManager$Stub$Proxy;
Landroid/app/slice/ISliceManager$Stub;
Landroid/app/slice/ISliceManager;
@@ -23689,6 +24675,7 @@ Landroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda4;
Landroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda5;
Landroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda6;
Landroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda7;
+Landroid/appwidget/AppWidgetManager$ServiceCollectionCache;
Landroid/appwidget/AppWidgetManager;
Landroid/appwidget/AppWidgetManagerInternal;
Landroid/appwidget/AppWidgetProvider;
@@ -23841,9 +24828,13 @@ Landroid/content/ISyncContext$Stub;
Landroid/content/ISyncContext;
Landroid/content/ISyncStatusObserver$Stub;
Landroid/content/ISyncStatusObserver;
+Landroid/content/Intent$$ExternalSyntheticLambda0;
+Landroid/content/Intent$$ExternalSyntheticLambda1;
Landroid/content/Intent$1;
Landroid/content/Intent$CommandOptionHandler;
+Landroid/content/Intent$CreatorTokenInfo;
Landroid/content/Intent$FilterComparison;
+Landroid/content/Intent$NestedIntentKey;
Landroid/content/Intent;
Landroid/content/IntentFilter$$ExternalSyntheticLambda0;
Landroid/content/IntentFilter$$ExternalSyntheticLambda2;
@@ -23988,7 +24979,6 @@ Landroid/content/pm/IDexModuleRegisterCallback;
Landroid/content/pm/ILauncherApps$Stub$Proxy;
Landroid/content/pm/ILauncherApps$Stub;
Landroid/content/pm/ILauncherApps;
-Landroid/content/pm/IOnAppsChangedListener$Stub$Proxy;
Landroid/content/pm/IOnAppsChangedListener$Stub;
Landroid/content/pm/IOnAppsChangedListener;
Landroid/content/pm/IOnChecksumsReadyListener$Stub$Proxy;
@@ -24069,6 +25059,7 @@ Landroid/content/pm/LauncherApps$ShortcutQuery$QueryFlags;
Landroid/content/pm/LauncherApps$ShortcutQuery;
Landroid/content/pm/LauncherApps-IA;
Landroid/content/pm/LauncherApps;
+Landroid/content/pm/LauncherUserInfo;
Landroid/content/pm/ModuleInfo$1;
Landroid/content/pm/ModuleInfo-IA;
Landroid/content/pm/ModuleInfo;
@@ -24482,6 +25473,7 @@ Landroid/debug/IAdbManager;
Landroid/debug/IAdbTransport$Stub;
Landroid/debug/IAdbTransport;
Landroid/graphics/BLASTBufferQueue$TransactionHangCallback;
+Landroid/graphics/BLASTBufferQueue$WaitForBufferReleaseCallback;
Landroid/graphics/BLASTBufferQueue;
Landroid/graphics/BaseCanvas;
Landroid/graphics/BaseRecordingCanvas;
@@ -24653,8 +25645,10 @@ Landroid/graphics/RenderNode$CompositePositionUpdateListener;
Landroid/graphics/RenderNode$NoImagePreloadHolder;
Landroid/graphics/RenderNode$PositionUpdateListener;
Landroid/graphics/RenderNode;
+Landroid/graphics/RuntimeColorFilter;
Landroid/graphics/RuntimeShader$NoImagePreloadHolder;
Landroid/graphics/RuntimeShader;
+Landroid/graphics/RuntimeXfermode;
Landroid/graphics/Shader$NoImagePreloadHolder;
Landroid/graphics/Shader$TileMode;
Landroid/graphics/Shader;
@@ -24830,6 +25824,7 @@ Landroid/graphics/fonts/Font$NoImagePreloadHolder;
Landroid/graphics/fonts/Font;
Landroid/graphics/fonts/FontCustomizationParser$Result;
Landroid/graphics/fonts/FontCustomizationParser;
+Landroid/graphics/fonts/FontFamily$Builder$NoImagePreloadHolder;
Landroid/graphics/fonts/FontFamily$Builder;
Landroid/graphics/fonts/FontFamily;
Landroid/graphics/fonts/FontFileUtil;
@@ -24844,6 +25839,7 @@ Landroid/graphics/text/LineBreakConfig$1;
Landroid/graphics/text/LineBreakConfig$Builder;
Landroid/graphics/text/LineBreakConfig;
Landroid/graphics/text/LineBreaker$Builder;
+Landroid/graphics/text/LineBreaker$NoImagePreloadHolder;
Landroid/graphics/text/LineBreaker$ParagraphConstraints;
Landroid/graphics/text/LineBreaker$Result;
Landroid/graphics/text/LineBreaker-IA;
@@ -24893,6 +25889,7 @@ Landroid/hardware/ISensorPrivacyManager$Stub;
Landroid/hardware/ISensorPrivacyManager;
Landroid/hardware/ISerialManager$Stub;
Landroid/hardware/ISerialManager;
+Landroid/hardware/LutProperties;
Landroid/hardware/OverlayProperties$1;
Landroid/hardware/OverlayProperties-IA;
Landroid/hardware/OverlayProperties;
@@ -24916,6 +25913,7 @@ Landroid/hardware/SerialPort;
Landroid/hardware/SyncFence$1;
Landroid/hardware/SyncFence;
Landroid/hardware/SystemSensorManager$BaseEventQueue;
+Landroid/hardware/SystemSensorManager$InjectEventQueue;
Landroid/hardware/SystemSensorManager$SensorEventQueue;
Landroid/hardware/SystemSensorManager$TriggerEventQueue;
Landroid/hardware/TriggerEvent;
@@ -24978,6 +25976,7 @@ Landroid/hardware/camera2/CameraCharacteristics$5;
Landroid/hardware/camera2/CameraCharacteristics$6;
Landroid/hardware/camera2/CameraCharacteristics$7;
Landroid/hardware/camera2/CameraCharacteristics$8;
+Landroid/hardware/camera2/CameraCharacteristics$9;
Landroid/hardware/camera2/CameraCharacteristics$Key;
Landroid/hardware/camera2/CameraCharacteristics;
Landroid/hardware/camera2/CameraDevice$StateCallback;
@@ -25044,6 +26043,7 @@ Landroid/hardware/camera2/impl/CameraMetadataNative$37;
Landroid/hardware/camera2/impl/CameraMetadataNative$38;
Landroid/hardware/camera2/impl/CameraMetadataNative$39;
Landroid/hardware/camera2/impl/CameraMetadataNative$3;
+Landroid/hardware/camera2/impl/CameraMetadataNative$40;
Landroid/hardware/camera2/impl/CameraMetadataNative$4;
Landroid/hardware/camera2/impl/CameraMetadataNative$5;
Landroid/hardware/camera2/impl/CameraMetadataNative$6;
@@ -25114,6 +26114,7 @@ Landroid/hardware/camera2/params/OisSample;
Landroid/hardware/camera2/params/RecommendedStreamConfiguration;
Landroid/hardware/camera2/params/ReprocessFormatsMap;
Landroid/hardware/camera2/params/RggbChannelVector;
+Landroid/hardware/camera2/params/SharedSessionConfiguration;
Landroid/hardware/camera2/params/StreamConfiguration;
Landroid/hardware/camera2/params/StreamConfigurationDuration;
Landroid/hardware/camera2/params/StreamConfigurationMap;
@@ -25131,6 +26132,8 @@ Landroid/hardware/camera2/utils/TypeReference-IA;
Landroid/hardware/camera2/utils/TypeReference;
Landroid/hardware/common/fmq/SynchronizedReadWrite;
Landroid/hardware/common/fmq/UnsynchronizedWrite;
+Landroid/hardware/contexthub/IContextHubEndpointDiscoveryCallback$Stub;
+Landroid/hardware/contexthub/IContextHubEndpointDiscoveryCallback;
Landroid/hardware/contexthub/V1_0/ContextHub;
Landroid/hardware/contexthub/V1_0/ContextHubMsg;
Landroid/hardware/contexthub/V1_0/HubAppInfo;
@@ -25146,6 +26149,7 @@ Landroid/hardware/devicestate/DeviceState$Configuration$1;
Landroid/hardware/devicestate/DeviceState$Configuration;
Landroid/hardware/devicestate/DeviceState;
Landroid/hardware/devicestate/DeviceStateInfo$1;
+Landroid/hardware/devicestate/DeviceStateInfo-IA;
Landroid/hardware/devicestate/DeviceStateInfo;
Landroid/hardware/devicestate/DeviceStateManager$DeviceStateCallback;
Landroid/hardware/devicestate/DeviceStateManager$FoldStateListener;
@@ -25196,10 +26200,12 @@ Landroid/hardware/display/DisplayManager;
Landroid/hardware/display/DisplayManagerGlobal$1;
Landroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate$$ExternalSyntheticLambda0;
Landroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;
+Landroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;
Landroid/hardware/display/DisplayManagerGlobal;
Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;
Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;
Landroid/hardware/display/DisplayManagerInternal;
+Landroid/hardware/display/DisplayTopology;
Landroid/hardware/display/DisplayViewport;
Landroid/hardware/display/DisplayedContentSample;
Landroid/hardware/display/DisplayedContentSamplingAttributes;
@@ -25211,6 +26217,7 @@ Landroid/hardware/display/IColorDisplayManager;
Landroid/hardware/display/IDisplayManager$Stub$Proxy;
Landroid/hardware/display/IDisplayManager$Stub;
Landroid/hardware/display/IDisplayManager;
+Landroid/hardware/display/IDisplayManagerCallback$Stub$Proxy;
Landroid/hardware/display/IDisplayManagerCallback$Stub;
Landroid/hardware/display/IDisplayManagerCallback;
Landroid/hardware/display/IVirtualDisplayCallback$Stub$Proxy;
@@ -25398,6 +26405,8 @@ Landroid/hardware/location/NanoAppRpcService;
Landroid/hardware/location/NanoAppState$1;
Landroid/hardware/location/NanoAppState-IA;
Landroid/hardware/location/NanoAppState;
+Landroid/hardware/power/CpuHeadroomResult$Tag;
+Landroid/hardware/power/GpuHeadroomResult$Tag;
Landroid/hardware/power/SessionMode;
Landroid/hardware/radio/ITuner$Stub;
Landroid/hardware/radio/ITuner;
@@ -26063,6 +27072,7 @@ Landroid/icu/impl/UCharacterProperty$27;
Landroid/icu/impl/UCharacterProperty$28;
Landroid/icu/impl/UCharacterProperty$29;
Landroid/icu/impl/UCharacterProperty$2;
+Landroid/icu/impl/UCharacterProperty$30;
Landroid/icu/impl/UCharacterProperty$3;
Landroid/icu/impl/UCharacterProperty$4;
Landroid/icu/impl/UCharacterProperty$5;
@@ -26079,6 +27089,7 @@ Landroid/icu/impl/UCharacterProperty$IntProperty;
Landroid/icu/impl/UCharacterProperty$IsAcceptable;
Landroid/icu/impl/UCharacterProperty$LayoutProps$IsAcceptable;
Landroid/icu/impl/UCharacterProperty$LayoutProps;
+Landroid/icu/impl/UCharacterProperty$MCMBinaryProperty;
Landroid/icu/impl/UCharacterProperty$MathCompatBinaryProperty;
Landroid/icu/impl/UCharacterProperty$NormInertBinaryProperty;
Landroid/icu/impl/UCharacterProperty$NormQuickCheckIntProperty;
@@ -27236,6 +28247,12 @@ Landroid/inputmethodservice/InputMethodService$Insets;
Landroid/inputmethodservice/InputMethodService$SettingsObserver;
Landroid/inputmethodservice/InputMethodService;
Landroid/inputmethodservice/SoftInputWindow;
+Landroid/internal/aconfig/storage/AconfigStorageException;
+Landroid/internal/aconfig/storage/ByteBufferReader;
+Landroid/internal/aconfig/storage/FileType;
+Landroid/internal/aconfig/storage/PackageTable$Header;
+Landroid/internal/aconfig/storage/PackageTable;
+Landroid/internal/framework/protobuf/nano/InvalidProtocolBufferNanoException;
Landroid/internal/framework/protobuf/nano/MessageNano;
Landroid/internal/hidl/base/V1_0/DebugInfo;
Landroid/internal/hidl/base/V1_0/IBase;
@@ -27438,7 +28455,6 @@ Landroid/media/IMediaRouter2$Stub;
Landroid/media/IMediaRouter2;
Landroid/media/IMediaRouter2Manager$Stub;
Landroid/media/IMediaRouter2Manager;
-Landroid/media/IMediaRouterClient$Stub$Proxy;
Landroid/media/IMediaRouterClient$Stub;
Landroid/media/IMediaRouterClient;
Landroid/media/IMediaRouterService$Stub$Proxy;
@@ -27705,10 +28721,8 @@ Landroid/media/VolumeShaper$Operation;
Landroid/media/VolumeShaper$State$1;
Landroid/media/VolumeShaper$State;
Landroid/media/VolumeShaper;
-Landroid/media/audio/FeatureFlags;
-Landroid/media/audio/FeatureFlagsImpl;
-Landroid/media/audio/Flags;
Landroid/media/audio/common/AidlConversion;
+Landroid/media/audio/common/AudioHalProductStrategy$ZoneId;
Landroid/media/audio/common/HeadTracking$SensorData$Tag;
Landroid/media/audiofx/AudioEffect$Descriptor;
Landroid/media/audiofx/AudioEffect;
@@ -27757,6 +28771,8 @@ Landroid/media/browse/MediaBrowser$SubscriptionCallback;
Landroid/media/browse/MediaBrowser-IA;
Landroid/media/browse/MediaBrowser;
Landroid/media/browse/MediaBrowserUtils;
+Landroid/media/codec/FeatureFlags;
+Landroid/media/codec/FeatureFlagsImpl;
Landroid/media/codec/Flags;
Landroid/media/metrics/Event;
Landroid/media/metrics/IMediaMetricsManager$Stub$Proxy;
@@ -27811,6 +28827,9 @@ Landroid/media/projection/MediaProjectionInfo;
Landroid/media/projection/MediaProjectionManager$Callback;
Landroid/media/projection/MediaProjectionManager$CallbackDelegate;
Landroid/media/projection/MediaProjectionManager;
+Landroid/media/quality/MediaQualityManager;
+Landroid/media/quality/PictureProfileHandle$1;
+Landroid/media/quality/PictureProfileHandle;
Landroid/media/session/IActiveSessionsListener$Stub$Proxy;
Landroid/media/session/IActiveSessionsListener$Stub;
Landroid/media/session/IActiveSessionsListener;
@@ -27838,7 +28857,6 @@ Landroid/media/session/ISessionCallback;
Landroid/media/session/ISessionController$Stub$Proxy;
Landroid/media/session/ISessionController$Stub;
Landroid/media/session/ISessionController;
-Landroid/media/session/ISessionControllerCallback$Stub$Proxy;
Landroid/media/session/ISessionControllerCallback$Stub;
Landroid/media/session/ISessionControllerCallback;
Landroid/media/session/ISessionManager$Stub$Proxy;
@@ -27967,7 +28985,6 @@ Landroid/net/LocalServerSocket;
Landroid/net/LocalSocket;
Landroid/net/LocalSocketAddress$Namespace;
Landroid/net/LocalSocketAddress;
-Landroid/net/LocalSocketImpl$SocketInputStream;
Landroid/net/LocalSocketImpl;
Landroid/net/MatchAllNetworkSpecifier$1;
Landroid/net/MatchAllNetworkSpecifier;
@@ -28102,16 +29119,6 @@ Landroid/net/sip/SipSession$State;
Landroid/net/sip/SipSession;
Landroid/net/sip/SipSessionAdapter;
Landroid/net/util/SocketUtils;
-Landroid/net/vcn/VcnManager$VcnNetworkPolicyChangeListener;
-Landroid/net/vcn/VcnManager$VcnUnderlyingNetworkPolicyListener;
-Landroid/net/vcn/VcnManager;
-Landroid/net/vcn/VcnNetworkPolicyResult$1;
-Landroid/net/vcn/VcnNetworkPolicyResult;
-Landroid/net/vcn/VcnTransportInfo$1;
-Landroid/net/vcn/VcnTransportInfo-IA;
-Landroid/net/vcn/VcnTransportInfo;
-Landroid/net/vcn/VcnUnderlyingNetworkPolicy$1;
-Landroid/net/vcn/VcnUnderlyingNetworkPolicy;
Landroid/net/wifi/SoftApConfToXmlMigrationUtil;
Landroid/net/wifi/WifiMigration$1;
Landroid/net/wifi/WifiMigration;
@@ -28149,26 +29156,48 @@ Landroid/net/wifi/nl80211/WifiNl80211Manager$ScanEventHandler;
Landroid/net/wifi/nl80211/WifiNl80211Manager$SignalPollResult;
Landroid/net/wifi/nl80211/WifiNl80211Manager;
Landroid/net/wifi/sharedconnectivity/app/SharedConnectivityManager;
+Landroid/nfc/AvailableNfcAntenna;
+Landroid/nfc/Entry;
+Landroid/nfc/FormatException;
+Landroid/nfc/IAppCallback$Stub$Proxy;
Landroid/nfc/IAppCallback$Stub;
Landroid/nfc/IAppCallback;
+Landroid/nfc/INfcAdapter$Stub$Proxy;
Landroid/nfc/INfcAdapter$Stub;
Landroid/nfc/INfcAdapter;
Landroid/nfc/INfcAdapterExtras;
Landroid/nfc/INfcCardEmulation;
+Landroid/nfc/INfcControllerAlwaysOnListener$Stub$Proxy;
Landroid/nfc/INfcControllerAlwaysOnListener$Stub;
Landroid/nfc/INfcControllerAlwaysOnListener;
Landroid/nfc/INfcDta;
Landroid/nfc/INfcFCardEmulation;
+Landroid/nfc/INfcOemExtensionCallback$Stub;
+Landroid/nfc/INfcOemExtensionCallback;
+Landroid/nfc/INfcTag$Stub;
Landroid/nfc/INfcTag;
+Landroid/nfc/INfcUnlockHandler$Stub$Proxy;
Landroid/nfc/INfcUnlockHandler$Stub;
Landroid/nfc/INfcUnlockHandler;
+Landroid/nfc/INfcVendorNciCallback$Stub$Proxy;
Landroid/nfc/INfcVendorNciCallback$Stub;
Landroid/nfc/INfcVendorNciCallback;
+Landroid/nfc/INfcWlcStateListener$Stub$Proxy;
Landroid/nfc/INfcWlcStateListener$Stub;
Landroid/nfc/INfcWlcStateListener;
+Landroid/nfc/IT4tNdefNfcee;
+Landroid/nfc/ITagRemovedCallback$Stub$Proxy;
Landroid/nfc/ITagRemovedCallback$Stub;
Landroid/nfc/ITagRemovedCallback;
+Landroid/nfc/NdefMessage$1;
Landroid/nfc/NdefMessage;
+Landroid/nfc/NdefRecord;
+Landroid/nfc/NfcActivityManager$$ExternalSyntheticLambda0;
+Landroid/nfc/NfcActivityManager$$ExternalSyntheticLambda1;
+Landroid/nfc/NfcActivityManager$$ExternalSyntheticLambda2;
+Landroid/nfc/NfcActivityManager$$ExternalSyntheticLambda3;
+Landroid/nfc/NfcActivityManager$NfcActivityState;
+Landroid/nfc/NfcActivityManager$NfcApplicationState;
Landroid/nfc/NfcActivityManager;
Landroid/nfc/NfcAdapter$$ExternalSyntheticLambda0;
Landroid/nfc/NfcAdapter$$ExternalSyntheticLambda10;
@@ -28204,12 +29233,16 @@ Landroid/nfc/NfcAdapter$$ExternalSyntheticLambda37;
Landroid/nfc/NfcAdapter$$ExternalSyntheticLambda38;
Landroid/nfc/NfcAdapter$$ExternalSyntheticLambda39;
Landroid/nfc/NfcAdapter$$ExternalSyntheticLambda3;
+Landroid/nfc/NfcAdapter$$ExternalSyntheticLambda40;
+Landroid/nfc/NfcAdapter$$ExternalSyntheticLambda41;
+Landroid/nfc/NfcAdapter$$ExternalSyntheticLambda42;
Landroid/nfc/NfcAdapter$$ExternalSyntheticLambda4;
Landroid/nfc/NfcAdapter$$ExternalSyntheticLambda5;
Landroid/nfc/NfcAdapter$$ExternalSyntheticLambda6;
Landroid/nfc/NfcAdapter$$ExternalSyntheticLambda7;
Landroid/nfc/NfcAdapter$$ExternalSyntheticLambda8;
Landroid/nfc/NfcAdapter$$ExternalSyntheticLambda9;
+Landroid/nfc/NfcAdapter$1$1;
Landroid/nfc/NfcAdapter$1;
Landroid/nfc/NfcAdapter$2;
Landroid/nfc/NfcAdapter$ControllerAlwaysOnListener;
@@ -28224,24 +29257,79 @@ Landroid/nfc/NfcAdapter$ServiceCall;
Landroid/nfc/NfcAdapter$ServiceCallReturn;
Landroid/nfc/NfcAdapter$WlcStateListener;
Landroid/nfc/NfcAdapter;
+Landroid/nfc/NfcAntennaInfo$1;
+Landroid/nfc/NfcAntennaInfo-IA;
Landroid/nfc/NfcAntennaInfo;
+Landroid/nfc/NfcControllerAlwaysOnListener$$ExternalSyntheticLambda0;
Landroid/nfc/NfcControllerAlwaysOnListener;
Landroid/nfc/NfcFrameworkInitializer$$ExternalSyntheticLambda0;
Landroid/nfc/NfcFrameworkInitializer;
Landroid/nfc/NfcManager;
+Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda0;
+Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda10;
+Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda11;
+Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda12;
+Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda13;
+Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda14;
+Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda15;
+Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda16;
+Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda17;
+Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda18;
+Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda19;
+Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda1;
+Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda2;
+Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda3;
+Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda4;
+Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda5;
+Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda6;
+Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda7;
+Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda8;
+Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda9;
+Landroid/nfc/NfcOemExtension$Callback;
+Landroid/nfc/NfcOemExtension$NfcOemExtensionCallback;
+Landroid/nfc/NfcOemExtension-IA;
Landroid/nfc/NfcOemExtension;
+Landroid/nfc/NfcRoutingTableEntry;
Landroid/nfc/NfcServiceManager$ServiceRegisterer;
Landroid/nfc/NfcServiceManager;
+Landroid/nfc/NfcVendorNciCallbackListener$$ExternalSyntheticLambda0;
+Landroid/nfc/NfcVendorNciCallbackListener$$ExternalSyntheticLambda1;
Landroid/nfc/NfcVendorNciCallbackListener;
+Landroid/nfc/NfcWlcStateListener$$ExternalSyntheticLambda0;
Landroid/nfc/NfcWlcStateListener;
+Landroid/nfc/RoutingStatus;
+Landroid/nfc/RoutingTableAidEntry;
+Landroid/nfc/RoutingTableProtocolEntry;
+Landroid/nfc/RoutingTableSystemCodeEntry;
+Landroid/nfc/RoutingTableTechnologyEntry;
+Landroid/nfc/T4tNdefNfcee;
+Landroid/nfc/Tag$1;
Landroid/nfc/Tag;
+Landroid/nfc/TechListParcel$1;
Landroid/nfc/TechListParcel;
+Landroid/nfc/WlcListenerDeviceInfo$1;
+Landroid/nfc/WlcListenerDeviceInfo-IA;
Landroid/nfc/WlcListenerDeviceInfo;
Landroid/nfc/cardemulation/AidGroup$1;
Landroid/nfc/cardemulation/AidGroup;
Landroid/nfc/cardemulation/ApduServiceInfo$1;
Landroid/nfc/cardemulation/ApduServiceInfo;
+Landroid/nfc/cardemulation/CardEmulation;
+Landroid/nfc/cardemulation/PollingFrame$1;
+Landroid/nfc/cardemulation/PollingFrame-IA;
Landroid/nfc/cardemulation/PollingFrame;
+Landroid/nfc/tech/BasicTagTechnology;
+Landroid/nfc/tech/IsoDep;
+Landroid/nfc/tech/MifareClassic;
+Landroid/nfc/tech/MifareUltralight;
+Landroid/nfc/tech/Ndef;
+Landroid/nfc/tech/NdefFormatable;
+Landroid/nfc/tech/NfcA;
+Landroid/nfc/tech/NfcB;
+Landroid/nfc/tech/NfcBarcode;
+Landroid/nfc/tech/NfcF;
+Landroid/nfc/tech/NfcV;
+Landroid/nfc/tech/TagTechnology;
Landroid/opengl/EGL14;
Landroid/opengl/EGL15;
Landroid/opengl/EGLConfig;
@@ -28502,6 +29590,8 @@ Landroid/os/IPowerManager$LowPowerStandbyPortDescription;
Landroid/os/IPowerManager$Stub$Proxy;
Landroid/os/IPowerManager$Stub;
Landroid/os/IPowerManager;
+Landroid/os/IPowerStatsService$Stub;
+Landroid/os/IPowerStatsService;
Landroid/os/IProcessInfoService$Stub;
Landroid/os/IProcessInfoService;
Landroid/os/IProgressListener$Stub$Proxy;
@@ -28517,6 +29607,9 @@ Landroid/os/IRemoteCallback$Stub;
Landroid/os/IRemoteCallback;
Landroid/os/ISchedulingPolicyService$Stub;
Landroid/os/ISchedulingPolicyService;
+Landroid/os/IScreenTimeoutPolicyListener$Stub$Proxy;
+Landroid/os/IScreenTimeoutPolicyListener$Stub;
+Landroid/os/IScreenTimeoutPolicyListener;
Landroid/os/IServiceManager$Stub$Proxy;
Landroid/os/IServiceManager$Stub;
Landroid/os/IServiceManager;
@@ -28574,6 +29667,7 @@ Landroid/os/IncidentManager$IncidentReport$1;
Landroid/os/IncidentManager$IncidentReport;
Landroid/os/IncidentManager;
Landroid/os/IpcDataCache$1;
+Landroid/os/IpcDataCache$BypassCall;
Landroid/os/IpcDataCache$Config;
Landroid/os/IpcDataCache$QueryHandler;
Landroid/os/IpcDataCache$RemoteCall;
@@ -28589,7 +29683,27 @@ Landroid/os/Message$1;
Landroid/os/Message;
Landroid/os/MessageQueue$FileDescriptorRecord;
Landroid/os/MessageQueue$IdleHandler;
+Landroid/os/MessageQueue$MatchAllFutureMessages;
+Landroid/os/MessageQueue$MatchAllMessages;
+Landroid/os/MessageQueue$MatchBarrierToken;
+Landroid/os/MessageQueue$MatchDeliverableMessages;
+Landroid/os/MessageQueue$MatchHandler;
+Landroid/os/MessageQueue$MatchHandlerAndObject;
+Landroid/os/MessageQueue$MatchHandlerAndObjectEquals;
+Landroid/os/MessageQueue$MatchHandlerRunnableAndObject;
+Landroid/os/MessageQueue$MatchHandlerRunnableAndObjectEquals;
+Landroid/os/MessageQueue$MatchHandlerWhatAndObject;
+Landroid/os/MessageQueue$MatchHandlerWhatAndObjectEquals;
+Landroid/os/MessageQueue$MessageCompare;
+Landroid/os/MessageQueue$MessageCounts;
+Landroid/os/MessageQueue$MessageNode;
+Landroid/os/MessageQueue$OnFileDescriptorEventListener$Events;
Landroid/os/MessageQueue$OnFileDescriptorEventListener;
+Landroid/os/MessageQueue$StackNode;
+Landroid/os/MessageQueue$StackNodeType;
+Landroid/os/MessageQueue$StateNode;
+Landroid/os/MessageQueue$TimedParkStateNode;
+Landroid/os/MessageQueue-IA;
Landroid/os/MessageQueue;
Landroid/os/Messenger$1;
Landroid/os/Messenger;
@@ -28601,6 +29715,7 @@ Landroid/os/OutcomeReceiver;
Landroid/os/PackageTagsList$1;
Landroid/os/PackageTagsList;
Landroid/os/Parcel$1;
+Landroid/os/Parcel$ClassLoaderProvider;
Landroid/os/Parcel$LazyValue;
Landroid/os/Parcel$ReadWriteHelper;
Landroid/os/Parcel$SquashReadHelper;
@@ -28626,6 +29741,25 @@ Landroid/os/ParcelableParcel$1;
Landroid/os/ParcelableParcel;
Landroid/os/PatternMatcher$1;
Landroid/os/PatternMatcher;
+Landroid/os/PerfettoTrace$Category;
+Landroid/os/PerfettoTrace;
+Landroid/os/PerfettoTrackEventExtra$ArgBool;
+Landroid/os/PerfettoTrackEventExtra$ArgDouble;
+Landroid/os/PerfettoTrackEventExtra$ArgInt64;
+Landroid/os/PerfettoTrackEventExtra$ArgString;
+Landroid/os/PerfettoTrackEventExtra$CounterDouble;
+Landroid/os/PerfettoTrackEventExtra$CounterInt64;
+Landroid/os/PerfettoTrackEventExtra$CounterTrack;
+Landroid/os/PerfettoTrackEventExtra$FieldContainer;
+Landroid/os/PerfettoTrackEventExtra$FieldDouble;
+Landroid/os/PerfettoTrackEventExtra$FieldInt64;
+Landroid/os/PerfettoTrackEventExtra$FieldNested;
+Landroid/os/PerfettoTrackEventExtra$FieldString;
+Landroid/os/PerfettoTrackEventExtra$Flow;
+Landroid/os/PerfettoTrackEventExtra$NamedTrack;
+Landroid/os/PerfettoTrackEventExtra$PerfettoPointer;
+Landroid/os/PerfettoTrackEventExtra$Proto;
+Landroid/os/PerfettoTrackEventExtra;
Landroid/os/PerformanceHintManager$Session;
Landroid/os/PerformanceHintManager;
Landroid/os/PermissionEnforcer;
@@ -28639,7 +29773,9 @@ Landroid/os/PowerManager$1;
Landroid/os/PowerManager$2;
Landroid/os/PowerManager$3$$ExternalSyntheticLambda0;
Landroid/os/PowerManager$3;
+Landroid/os/PowerManager$4;
Landroid/os/PowerManager$OnThermalStatusChangedListener;
+Landroid/os/PowerManager$ScreenTimeoutPolicyListener;
Landroid/os/PowerManager$WakeData;
Landroid/os/PowerManager$WakeLock$$ExternalSyntheticLambda0;
Landroid/os/PowerManager$WakeLock;
@@ -28669,6 +29805,7 @@ Landroid/os/RemoteCallback$2;
Landroid/os/RemoteCallback$3;
Landroid/os/RemoteCallback$OnResultListener;
Landroid/os/RemoteCallback;
+Landroid/os/RemoteCallbackList$Interface;
Landroid/os/RemoteCallbackList;
Landroid/os/RemoteException;
Landroid/os/ResultReceiver$1;
@@ -28684,6 +29821,8 @@ Landroid/os/ServiceManager;
Landroid/os/ServiceManagerNative;
Landroid/os/ServiceManagerProxy;
Landroid/os/ServiceSpecificException;
+Landroid/os/ServiceWithMetadata$1;
+Landroid/os/ServiceWithMetadata;
Landroid/os/SharedMemory$1;
Landroid/os/SharedMemory$Closer;
Landroid/os/SharedMemory$MemoryRegistration;
@@ -28769,11 +29908,22 @@ Landroid/os/UpdateEngineCallback;
Landroid/os/UpdateLock;
Landroid/os/UserHandle$1;
Landroid/os/UserHandle;
+Landroid/os/UserManager$$ExternalSyntheticLambda0;
+Landroid/os/UserManager$$ExternalSyntheticLambda10;
+Landroid/os/UserManager$$ExternalSyntheticLambda13;
+Landroid/os/UserManager$$ExternalSyntheticLambda15;
+Landroid/os/UserManager$$ExternalSyntheticLambda1;
+Landroid/os/UserManager$$ExternalSyntheticLambda3;
+Landroid/os/UserManager$$ExternalSyntheticLambda4;
+Landroid/os/UserManager$$ExternalSyntheticLambda5;
+Landroid/os/UserManager$$ExternalSyntheticLambda8;
+Landroid/os/UserManager$$ExternalSyntheticLambda9;
Landroid/os/UserManager$1;
Landroid/os/UserManager$EnforcingUser$1;
Landroid/os/UserManager$EnforcingUser;
Landroid/os/UserManager$UserOperationException;
Landroid/os/UserManager;
+Landroid/os/UserManagerCache;
Landroid/os/VibrationAttributes$1;
Landroid/os/VibrationAttributes$Builder;
Landroid/os/VibrationAttributes-IA;
@@ -28787,6 +29937,8 @@ Landroid/os/Vibrator;
Landroid/os/VibratorInfo$1;
Landroid/os/VibratorInfo$FrequencyProfile$1;
Landroid/os/VibratorInfo$FrequencyProfile;
+Landroid/os/VibratorInfo$FrequencyProfileLegacy$1;
+Landroid/os/VibratorInfo$FrequencyProfileLegacy;
Landroid/os/VibratorInfo;
Landroid/os/VibratorManager;
Landroid/os/VintfObject;
@@ -28806,6 +29958,7 @@ Landroid/os/connectivity/WifiActivityEnergyInfo$1;
Landroid/os/connectivity/WifiActivityEnergyInfo;
Landroid/os/connectivity/WifiBatteryStats$1;
Landroid/os/connectivity/WifiBatteryStats;
+Landroid/os/flagging/PlatformAconfigPackage;
Landroid/os/health/HealthKeys$Constant;
Landroid/os/health/HealthKeys$Constants;
Landroid/os/health/HealthKeys$SortedIntArray;
@@ -28830,6 +29983,9 @@ Landroid/os/incremental/IncrementalManager;
Landroid/os/incremental/V4Signature$HashingInfo;
Landroid/os/incremental/V4Signature$SigningInfo;
Landroid/os/incremental/V4Signature;
+Landroid/os/instrumentation/IOffsetCallback$Stub;
+Landroid/os/instrumentation/IOffsetCallback;
+Landroid/os/instrumentation/MethodDescriptor;
Landroid/os/storage/DiskInfo$1;
Landroid/os/storage/DiskInfo;
Landroid/os/storage/IObbActionListener$Stub$Proxy;
@@ -28921,9 +30077,11 @@ Landroid/permission/PermissionControllerManager$1;
Landroid/permission/PermissionControllerManager;
Landroid/permission/PermissionManager$1;
Landroid/permission/PermissionManager$2;
+Landroid/permission/PermissionManager$3;
Landroid/permission/PermissionManager$OnPermissionsChangeListenerDelegate;
Landroid/permission/PermissionManager$PackageNamePermissionQuery;
Landroid/permission/PermissionManager$PermissionQuery;
+Landroid/permission/PermissionManager$PermissionRequestStateQuery;
Landroid/permission/PermissionManager$SplitPermissionInfo;
Landroid/permission/PermissionManager-IA;
Landroid/permission/PermissionManager;
@@ -29130,10 +30288,7 @@ Landroid/se/omapi/SeServiceManager;
Landroid/security/AttestedKeyPair;
Landroid/security/CheckedRemoteRequest;
Landroid/security/Credentials;
-Landroid/security/FeatureFlags;
-Landroid/security/FeatureFlagsImpl;
Landroid/security/FileIntegrityManager;
-Landroid/security/Flags;
Landroid/security/GateKeeper;
Landroid/security/IFileIntegrityService$Stub;
Landroid/security/IFileIntegrityService;
@@ -29167,7 +30322,11 @@ Landroid/security/KeyStoreSecurityLevel$$ExternalSyntheticLambda1;
Landroid/security/KeyStoreSecurityLevel;
Landroid/security/NetworkSecurityPolicy;
Landroid/security/Scrypt;
+Landroid/security/advancedprotection/AdvancedProtectionFeature;
+Landroid/security/advancedprotection/AdvancedProtectionManager;
Landroid/security/attestationverification/AttestationVerificationManager;
+Landroid/security/authenticationpolicy/AuthenticationPolicyManager;
+Landroid/security/intrusiondetection/IntrusionDetectionManager;
Landroid/security/keymaster/ExportResult$1;
Landroid/security/keymaster/ExportResult;
Landroid/security/keymaster/KeyCharacteristics$1;
@@ -29214,6 +30373,7 @@ Landroid/security/keystore/KeyProtection$Builder;
Landroid/security/keystore/KeyProtection;
Landroid/security/keystore/KeyStoreConnectException;
Landroid/security/keystore/KeyStoreCryptoOperation;
+Landroid/security/keystore/KeyStoreManager;
Landroid/security/keystore/KeystoreResponse$1;
Landroid/security/keystore/KeystoreResponse;
Landroid/security/keystore/ParcelableKeyGenParameterSpec$1;
@@ -29470,6 +30630,7 @@ Landroid/service/notification/Adjustment;
Landroid/service/notification/Condition$1;
Landroid/service/notification/Condition;
Landroid/service/notification/ConditionProviderService$H;
+Landroid/service/notification/ConditionProviderService$Provider;
Landroid/service/notification/ConditionProviderService-IA;
Landroid/service/notification/ConditionProviderService;
Landroid/service/notification/IConditionProvider$Stub;
@@ -29495,6 +30656,7 @@ Landroid/service/notification/NotificationRankingUpdate;
Landroid/service/notification/NotificationStats$1;
Landroid/service/notification/NotificationStats;
Landroid/service/notification/NotifyingApp$1;
+Landroid/service/notification/RateEstimator;
Landroid/service/notification/ScheduleCalendar;
Landroid/service/notification/SnoozeCriterion$1;
Landroid/service/notification/SnoozeCriterion;
@@ -29601,11 +30763,6 @@ Landroid/service/wallpaper/WallpaperService$IWallpaperEngineWrapper;
Landroid/service/wallpaper/WallpaperService$IWallpaperServiceWrapper;
Landroid/service/wallpaper/WallpaperService$WallpaperCommand;
Landroid/service/wallpaper/WallpaperService;
-Landroid/service/watchdog/ExplicitHealthCheckService$PackageConfig$1;
-Landroid/service/watchdog/ExplicitHealthCheckService$PackageConfig;
-Landroid/service/watchdog/IExplicitHealthCheckService$Stub$Proxy;
-Landroid/service/watchdog/IExplicitHealthCheckService$Stub;
-Landroid/service/watchdog/IExplicitHealthCheckService;
Landroid/speech/RecognitionListener;
Landroid/speech/SpeechRecognizer;
Landroid/speech/tts/ITextToSpeechCallback$Stub;
@@ -29682,7 +30839,6 @@ Landroid/system/keystore2/KeyParameters$1;
Landroid/system/keystore2/KeyParameters;
Landroid/system/keystore2/OperationChallenge$1;
Landroid/system/keystore2/OperationChallenge;
-Landroid/system/suspend/internal/ISuspendControlServiceInternal$Stub$Proxy;
Landroid/system/suspend/internal/ISuspendControlServiceInternal$Stub;
Landroid/system/suspend/internal/ISuspendControlServiceInternal;
Landroid/system/suspend/internal/WakeLockInfo$1;
@@ -29866,6 +31022,7 @@ Landroid/telephony/CellSignalStrengthTdscdma;
Landroid/telephony/CellSignalStrengthWcdma$1;
Landroid/telephony/CellSignalStrengthWcdma-IA;
Landroid/telephony/CellSignalStrengthWcdma;
+Landroid/telephony/CellularIdentifierDisclosure;
Landroid/telephony/ClientRequestStats$1;
Landroid/telephony/ClientRequestStats;
Landroid/telephony/ClosedSubscriberGroupInfo$1;
@@ -29985,6 +31142,7 @@ Landroid/telephony/RadioAccessFamily;
Landroid/telephony/RadioAccessSpecifier$1;
Landroid/telephony/RadioAccessSpecifier;
Landroid/telephony/Rlog;
+Landroid/telephony/SecurityAlgorithmUpdate;
Landroid/telephony/ServiceState$$ExternalSyntheticLambda0;
Landroid/telephony/ServiceState$1;
Landroid/telephony/ServiceState;
@@ -30055,9 +31213,10 @@ Landroid/telephony/TelephonyCallback$CallDisconnectCauseListener;
Landroid/telephony/TelephonyCallback$CallForwardingIndicatorListener;
Landroid/telephony/TelephonyCallback$CallStateListener;
Landroid/telephony/TelephonyCallback$CarrierNetworkListener;
-Landroid/telephony/TelephonyCallback$CarrierRoamingNtnModeListener;
+Landroid/telephony/TelephonyCallback$CarrierRoamingNtnListener;
Landroid/telephony/TelephonyCallback$CellInfoListener;
Landroid/telephony/TelephonyCallback$CellLocationListener;
+Landroid/telephony/TelephonyCallback$CellularIdentifierDisclosedListener;
Landroid/telephony/TelephonyCallback$DataActivationStateListener;
Landroid/telephony/TelephonyCallback$DataActivityListener;
Landroid/telephony/TelephonyCallback$DataConnectionStateListener;
@@ -30085,6 +31244,7 @@ Landroid/telephony/TelephonyCallback$PreciseCallStateListener;
Landroid/telephony/TelephonyCallback$PreciseDataConnectionStateListener;
Landroid/telephony/TelephonyCallback$RadioPowerStateListener;
Landroid/telephony/TelephonyCallback$RegistrationFailedListener;
+Landroid/telephony/TelephonyCallback$SecurityAlgorithmsListener;
Landroid/telephony/TelephonyCallback$ServiceStateListener;
Landroid/telephony/TelephonyCallback$SignalStrengthsListener;
Landroid/telephony/TelephonyCallback$SimultaneousCellularCallingSupportListener;
@@ -30133,7 +31293,6 @@ Landroid/telephony/TelephonyRegistryManager$$ExternalSyntheticLambda0;
Landroid/telephony/TelephonyRegistryManager$$ExternalSyntheticLambda1;
Landroid/telephony/TelephonyRegistryManager$$ExternalSyntheticLambda2;
Landroid/telephony/TelephonyRegistryManager$1$$ExternalSyntheticLambda0;
-Landroid/telephony/TelephonyRegistryManager$1;
Landroid/telephony/TelephonyRegistryManager$2;
Landroid/telephony/TelephonyRegistryManager$3;
Landroid/telephony/TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda0;
@@ -30417,6 +31576,7 @@ Landroid/telephony/ims/stub/ImsRegistrationImplBase;
Landroid/telephony/ims/stub/ImsSmsImplBase;
Landroid/telephony/ims/stub/ImsUtImplBase$1;
Landroid/telephony/ims/stub/ImsUtImplBase;
+Landroid/telephony/satellite/NtnSignalStrength;
Landroid/telephony/satellite/SatelliteManager;
Landroid/text/AndroidBidi;
Landroid/text/AndroidCharacter;
@@ -30430,7 +31590,6 @@ Landroid/text/BidiFormatter;
Landroid/text/BoringLayout$Metrics;
Landroid/text/BoringLayout;
Landroid/text/CharSequenceCharacterIterator;
-Landroid/text/ClientFlags;
Landroid/text/ClipboardManager;
Landroid/text/DynamicLayout$Builder;
Landroid/text/DynamicLayout$ChangeWatcher;
@@ -30515,7 +31674,6 @@ Landroid/text/SpanSet;
Landroid/text/SpanWatcher;
Landroid/text/Spannable$Factory;
Landroid/text/Spannable;
-Landroid/text/SpannableString;
Landroid/text/SpannableStringBuilder;
Landroid/text/SpannableStringInternal;
Landroid/text/Spanned;
@@ -30532,7 +31690,6 @@ Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;
Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;
Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicLocale;
Landroid/text/TextDirectionHeuristics;
-Landroid/text/TextFlags;
Landroid/text/TextLine$DecorationInfo;
Landroid/text/TextLine$LineInfo;
Landroid/text/TextLine-IA;
@@ -30628,6 +31785,7 @@ Landroid/text/style/LineHeightSpan;
Landroid/text/style/LocaleSpan;
Landroid/text/style/MetricAffectingSpan$Passthrough;
Landroid/text/style/MetricAffectingSpan;
+Landroid/text/style/NoWritingToolsSpan;
Landroid/text/style/ParagraphStyle;
Landroid/text/style/QuoteSpan;
Landroid/text/style/RelativeSizeSpan;
@@ -30677,10 +31835,15 @@ Landroid/timezone/TimeZoneFinder;
Landroid/tracing/FeatureFlags;
Landroid/tracing/FeatureFlagsImpl;
Landroid/tracing/Flags;
+Landroid/tracing/inputmethod/InputMethodDataSource;
Landroid/tracing/perfetto/CreateIncrementalStateArgs;
Landroid/tracing/perfetto/CreateTlsStateArgs;
Landroid/tracing/perfetto/DataSource;
+Landroid/tracing/perfetto/DataSourceInstance;
+Landroid/tracing/perfetto/DataSourceParams$Builder;
+Landroid/tracing/perfetto/DataSourceParams;
Landroid/tracing/perfetto/FlushCallbackArguments;
+Landroid/tracing/perfetto/InitArguments;
Landroid/tracing/perfetto/Producer;
Landroid/tracing/perfetto/StartCallbackArguments;
Landroid/tracing/perfetto/StopCallbackArguments;
@@ -30798,7 +31961,6 @@ Landroid/util/FeatureFlagUtils;
Landroid/util/FloatProperty;
Landroid/util/Half;
Landroid/util/IconDrawableFactory;
-Landroid/util/IndentingPrintWriter;
Landroid/util/IntArray;
Landroid/util/IntProperty;
Landroid/util/JsonReader$1;
@@ -30859,7 +32021,6 @@ Landroid/util/Range;
Landroid/util/Rational;
Landroid/util/RecurrenceRule$1;
Landroid/util/RecurrenceRule$NonrecurringIterator;
-Landroid/util/RecurrenceRule$RecurringIterator;
Landroid/util/RecurrenceRule;
Landroid/util/ReflectiveProperty;
Landroid/util/RotationUtils;
@@ -30964,6 +32125,8 @@ Landroid/view/Choreographer$1;
Landroid/view/Choreographer$2;
Landroid/view/Choreographer$3;
Landroid/view/Choreographer$4;
+Landroid/view/Choreographer$BufferStuffingState$RecoveryAction;
+Landroid/view/Choreographer$BufferStuffingState;
Landroid/view/Choreographer$CallbackQueue;
Landroid/view/Choreographer$CallbackRecord;
Landroid/view/Choreographer$FrameCallback;
@@ -31027,6 +32190,8 @@ Landroid/view/FocusFinder-IA;
Landroid/view/FocusFinder;
Landroid/view/FrameMetrics;
Landroid/view/FrameMetricsObserver;
+Landroid/view/FrameRateCategoryRate$1;
+Landroid/view/FrameRateCategoryRate;
Landroid/view/FrameStats;
Landroid/view/GestureDetector$GestureHandler;
Landroid/view/GestureDetector$OnContextClickListener;
@@ -31055,7 +32220,6 @@ Landroid/view/IDisplayChangeWindowController;
Landroid/view/IDisplayFoldListener$Stub$Proxy;
Landroid/view/IDisplayFoldListener$Stub;
Landroid/view/IDisplayFoldListener;
-Landroid/view/IDisplayWindowInsetsController$Stub$Proxy;
Landroid/view/IDisplayWindowInsetsController$Stub;
Landroid/view/IDisplayWindowInsetsController;
Landroid/view/IDisplayWindowListener$Stub$Proxy;
@@ -31101,7 +32265,6 @@ Landroid/view/ISurfaceControlViewHostParent$Stub;
Landroid/view/ISurfaceControlViewHostParent;
Landroid/view/ISystemGestureExclusionListener$Stub;
Landroid/view/ISystemGestureExclusionListener;
-Landroid/view/IWallpaperVisibilityListener$Stub$Proxy;
Landroid/view/IWallpaperVisibilityListener$Stub;
Landroid/view/IWallpaperVisibilityListener;
Landroid/view/IWindow$Stub;
@@ -31219,6 +32382,7 @@ Landroid/view/LayoutInflater$Factory;
Landroid/view/LayoutInflater$FactoryMerger;
Landroid/view/LayoutInflater$Filter;
Landroid/view/LayoutInflater;
+Landroid/view/LetterboxScrollProcessor;
Landroid/view/MagnificationSpec$1;
Landroid/view/MagnificationSpec;
Landroid/view/Menu;
@@ -31299,7 +32463,9 @@ Landroid/view/SurfaceControl$RefreshRateRange$1;
Landroid/view/SurfaceControl$RefreshRateRange;
Landroid/view/SurfaceControl$RefreshRateRanges;
Landroid/view/SurfaceControl$StaticDisplayInfo;
+Landroid/view/SurfaceControl$Transaction$$ExternalSyntheticLambda0;
Landroid/view/SurfaceControl$Transaction$$ExternalSyntheticLambda1;
+Landroid/view/SurfaceControl$Transaction$$ExternalSyntheticLambda3;
Landroid/view/SurfaceControl$Transaction$1;
Landroid/view/SurfaceControl$Transaction$2;
Landroid/view/SurfaceControl$Transaction;
@@ -31309,6 +32475,8 @@ Landroid/view/SurfaceControl$TrustedPresentationCallback;
Landroid/view/SurfaceControl$TrustedPresentationThresholds;
Landroid/view/SurfaceControl-IA;
Landroid/view/SurfaceControl;
+Landroid/view/SurfaceControlActivePicture;
+Landroid/view/SurfaceControlActivePictureListener;
Landroid/view/SurfaceControlHdrLayerInfoListener;
Landroid/view/SurfaceControlRegistry$DefaultReporter;
Landroid/view/SurfaceControlRegistry$NoOpRegistry;
@@ -31415,6 +32583,7 @@ Landroid/view/View$PerformClick;
Landroid/view/View$ScrollabilityCache;
Landroid/view/View$SendAccessibilityEventThrottle;
Landroid/view/View$SendViewScrolledAccessibilityEvent;
+Landroid/view/View$SensitiveAutofillHintsHelper;
Landroid/view/View$TintInfo;
Landroid/view/View$TooltipInfo;
Landroid/view/View$TransformationInfo;
@@ -31463,6 +32632,7 @@ Landroid/view/ViewPropertyAnimator$NameValuesHolder;
Landroid/view/ViewPropertyAnimator$PropertyBundle;
Landroid/view/ViewPropertyAnimator-IA;
Landroid/view/ViewPropertyAnimator;
+Landroid/view/ViewProtoLogGroups;
Landroid/view/ViewRootImpl$$ExternalSyntheticLambda0;
Landroid/view/ViewRootImpl$$ExternalSyntheticLambda10;
Landroid/view/ViewRootImpl$$ExternalSyntheticLambda11;
@@ -31473,7 +32643,12 @@ Landroid/view/ViewRootImpl$$ExternalSyntheticLambda15;
Landroid/view/ViewRootImpl$$ExternalSyntheticLambda16;
Landroid/view/ViewRootImpl$$ExternalSyntheticLambda17;
Landroid/view/ViewRootImpl$$ExternalSyntheticLambda18;
+Landroid/view/ViewRootImpl$$ExternalSyntheticLambda19;
Landroid/view/ViewRootImpl$$ExternalSyntheticLambda1;
+Landroid/view/ViewRootImpl$$ExternalSyntheticLambda20;
+Landroid/view/ViewRootImpl$$ExternalSyntheticLambda21;
+Landroid/view/ViewRootImpl$$ExternalSyntheticLambda22;
+Landroid/view/ViewRootImpl$$ExternalSyntheticLambda23;
Landroid/view/ViewRootImpl$$ExternalSyntheticLambda2;
Landroid/view/ViewRootImpl$$ExternalSyntheticLambda3;
Landroid/view/ViewRootImpl$$ExternalSyntheticLambda4;
@@ -31483,6 +32658,7 @@ Landroid/view/ViewRootImpl$$ExternalSyntheticLambda7;
Landroid/view/ViewRootImpl$$ExternalSyntheticLambda8;
Landroid/view/ViewRootImpl$$ExternalSyntheticLambda9;
Landroid/view/ViewRootImpl$10;
+Landroid/view/ViewRootImpl$11$$ExternalSyntheticLambda3;
Landroid/view/ViewRootImpl$11;
Landroid/view/ViewRootImpl$1;
Landroid/view/ViewRootImpl$2;
@@ -31528,7 +32704,6 @@ Landroid/view/ViewRootImpl$UnhandledKeyManager;
Landroid/view/ViewRootImpl$ViewPostImeInputStage;
Landroid/view/ViewRootImpl$ViewPreImeInputStage;
Landroid/view/ViewRootImpl$ViewRootHandler;
-Landroid/view/ViewRootImpl$W;
Landroid/view/ViewRootImpl$WindowInputEventReceiver;
Landroid/view/ViewRootImpl-IA;
Landroid/view/ViewRootImpl;
@@ -31597,10 +32772,10 @@ Landroid/view/WindowManagerGlobal$2;
Landroid/view/WindowManagerGlobal$TrustedPresentationListener;
Landroid/view/WindowManagerGlobal-IA;
Landroid/view/WindowManagerGlobal;
-Landroid/view/WindowManagerImpl;
Landroid/view/WindowManagerPolicyConstants$PointerEventListener;
Landroid/view/WindowManagerPolicyConstants;
Landroid/view/WindowMetrics;
+Landroid/view/WindowRelayoutResult$1;
Landroid/view/WindowRelayoutResult;
Landroid/view/WindowlessWindowLayout;
Landroid/view/WindowlessWindowManager;
@@ -31614,10 +32789,10 @@ Landroid/view/accessibility/AccessibilityManager$$ExternalSyntheticLambda0;
Landroid/view/accessibility/AccessibilityManager$$ExternalSyntheticLambda1;
Landroid/view/accessibility/AccessibilityManager$$ExternalSyntheticLambda3;
Landroid/view/accessibility/AccessibilityManager$1$$ExternalSyntheticLambda0;
-Landroid/view/accessibility/AccessibilityManager$1;
Landroid/view/accessibility/AccessibilityManager$AccessibilityPolicy;
Landroid/view/accessibility/AccessibilityManager$AccessibilityServicesStateChangeListener;
Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;
+Landroid/view/accessibility/AccessibilityManager$HighContrastTextStateChangeListener;
Landroid/view/accessibility/AccessibilityManager$MyCallback;
Landroid/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener;
Landroid/view/accessibility/AccessibilityManager-IA;
@@ -31657,7 +32832,6 @@ Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;
Landroid/view/accessibility/IAccessibilityManager$Stub$Proxy;
Landroid/view/accessibility/IAccessibilityManager$Stub;
Landroid/view/accessibility/IAccessibilityManager;
-Landroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;
Landroid/view/accessibility/IAccessibilityManagerClient$Stub;
Landroid/view/accessibility/IAccessibilityManagerClient;
Landroid/view/accessibility/WeakSparseArray$WeakReferenceWithId;
@@ -31708,6 +32882,7 @@ Landroid/view/autofill/AutofillManager$$ExternalSyntheticLambda1;
Landroid/view/autofill/AutofillManager$$ExternalSyntheticLambda2;
Landroid/view/autofill/AutofillManager$$ExternalSyntheticLambda3;
Landroid/view/autofill/AutofillManager$$ExternalSyntheticLambda4;
+Landroid/view/autofill/AutofillManager$AugmentedAutofillManagerClient$$ExternalSyntheticLambda1;
Landroid/view/autofill/AutofillManager$AugmentedAutofillManagerClient;
Landroid/view/autofill/AutofillManager$AutofillCallback;
Landroid/view/autofill/AutofillManager$AutofillClient;
@@ -31870,6 +33045,7 @@ Landroid/view/inputmethod/InputMethodManager$$ExternalSyntheticLambda2;
Landroid/view/inputmethod/InputMethodManager$$ExternalSyntheticLambda3;
Landroid/view/inputmethod/InputMethodManager$$ExternalSyntheticLambda4;
Landroid/view/inputmethod/InputMethodManager$$ExternalSyntheticLambda5;
+Landroid/view/inputmethod/InputMethodManager$$ExternalSyntheticLambda6;
Landroid/view/inputmethod/InputMethodManager$1;
Landroid/view/inputmethod/InputMethodManager$2;
Landroid/view/inputmethod/InputMethodManager$6;
@@ -32035,6 +33211,7 @@ Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListenerImpl$Sp
Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListenerImpl;
Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionParams$Builder;
Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionParams;
+Landroid/view/textservice/SpellCheckerSession-IA;
Landroid/view/textservice/SpellCheckerSession;
Landroid/view/textservice/SpellCheckerSubtype$1;
Landroid/view/textservice/SpellCheckerSubtype;
@@ -32380,11 +33557,12 @@ Landroid/widget/RemoteViews$$ExternalSyntheticLambda1;
Landroid/widget/RemoteViews$$ExternalSyntheticLambda2;
Landroid/widget/RemoteViews$$ExternalSyntheticLambda4;
Landroid/widget/RemoteViews$$ExternalSyntheticLambda5;
+Landroid/widget/RemoteViews$$ExternalSyntheticLambda6;
+Landroid/widget/RemoteViews$$ExternalSyntheticLambda7;
Landroid/widget/RemoteViews$1;
Landroid/widget/RemoteViews$2;
Landroid/widget/RemoteViews$Action;
Landroid/widget/RemoteViews$ActionException;
-Landroid/widget/RemoteViews$ApplicationInfoCache$$ExternalSyntheticLambda0;
Landroid/widget/RemoteViews$ApplicationInfoCache;
Landroid/widget/RemoteViews$AsyncApplyTask;
Landroid/widget/RemoteViews$AttributeReflectionAction;
@@ -32572,18 +33750,56 @@ Landroid/window/BackProgressAnimator$$ExternalSyntheticLambda1;
Landroid/window/BackProgressAnimator$1;
Landroid/window/BackProgressAnimator$ProgressCallback;
Landroid/window/BackProgressAnimator;
+Landroid/window/BackTouchTracker$TouchTrackerState;
Landroid/window/BackTouchTracker;
Landroid/window/ClientWindowFrames$1;
Landroid/window/ClientWindowFrames-IA;
Landroid/window/ClientWindowFrames;
Landroid/window/CompatOnBackInvokedCallback;
Landroid/window/ConfigurationHelper;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda0;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda10;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda11;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda12;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda13;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda14;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda15;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda16;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda17;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda18;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda19;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda1;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda20;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda21;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda22;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda23;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda24;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda25;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda26;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda27;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda28;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda29;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda2;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda30;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda31;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda32;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda3;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda4;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda5;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda6;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda7;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda8;
+Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda9;
+Landroid/window/DesktopModeFlags$ToggleOverride;
+Landroid/window/DesktopModeFlags;
Landroid/window/DisplayAreaAppearedInfo$1;
Landroid/window/DisplayAreaAppearedInfo;
Landroid/window/DisplayAreaInfo$1;
Landroid/window/DisplayAreaInfo;
Landroid/window/DisplayAreaOrganizer$1;
Landroid/window/DisplayAreaOrganizer;
+Landroid/window/IBackAnimationHandoffHandler$Stub;
+Landroid/window/IBackAnimationHandoffHandler;
Landroid/window/IDisplayAreaOrganizer$Stub$Proxy;
Landroid/window/IDisplayAreaOrganizer$Stub;
Landroid/window/IDisplayAreaOrganizer;
@@ -32601,7 +33817,6 @@ Landroid/window/ISurfaceSyncGroup$Stub;
Landroid/window/ISurfaceSyncGroup;
Landroid/window/ISurfaceSyncGroupCompletedListener$Stub;
Landroid/window/ISurfaceSyncGroupCompletedListener;
-Landroid/window/ITaskFragmentOrganizer$Stub$Proxy;
Landroid/window/ITaskFragmentOrganizer$Stub;
Landroid/window/ITaskFragmentOrganizer;
Landroid/window/ITaskFragmentOrganizerController$Stub;
@@ -32676,6 +33891,7 @@ Landroid/window/SurfaceSyncGroup$ISurfaceSyncGroupImpl;
Landroid/window/SurfaceSyncGroup$SurfaceViewFrameCallback;
Landroid/window/SurfaceSyncGroup-IA;
Landroid/window/SurfaceSyncGroup;
+Landroid/window/SystemOverrideOnBackInvokedCallback;
Landroid/window/TaskAppearedInfo$1;
Landroid/window/TaskAppearedInfo;
Landroid/window/TaskFpsCallback;
@@ -32709,6 +33925,7 @@ Landroid/window/WindowContainerTransaction$HierarchyOp;
Landroid/window/WindowContainerTransaction;
Landroid/window/WindowContext;
Landroid/window/WindowContextController;
+Landroid/window/WindowContextInfo;
Landroid/window/WindowInfosListener$DisplayInfo;
Landroid/window/WindowInfosListener;
Landroid/window/WindowMetricsController$$ExternalSyntheticLambda0;
@@ -32716,6 +33933,7 @@ Landroid/window/WindowMetricsController;
Landroid/window/WindowOnBackInvokedDispatcher$$ExternalSyntheticLambda0;
Landroid/window/WindowOnBackInvokedDispatcher$$ExternalSyntheticLambda1;
Landroid/window/WindowOnBackInvokedDispatcher$$ExternalSyntheticLambda2;
+Landroid/window/WindowOnBackInvokedDispatcher$$ExternalSyntheticLambda3;
Landroid/window/WindowOnBackInvokedDispatcher$Checker;
Landroid/window/WindowOnBackInvokedDispatcher$OnBackInvokedCallbackWrapper$$ExternalSyntheticLambda0;
Landroid/window/WindowOnBackInvokedDispatcher$OnBackInvokedCallbackWrapper$$ExternalSyntheticLambda1;
@@ -32932,6 +34150,7 @@ Lcom/android/i18n/timezone/internal/ByteBufferIterator;
Lcom/android/i18n/timezone/internal/Memory;
Lcom/android/i18n/timezone/internal/MemoryMappedFile;
Lcom/android/i18n/timezone/internal/NioBufferIterator;
+Lcom/android/i18n/util/ATrace;
Lcom/android/i18n/util/Log;
Lcom/android/icu/charset/CharsetDecoderICU;
Lcom/android/icu/charset/CharsetEncoderICU;
@@ -33448,7 +34667,6 @@ Lcom/android/internal/appwidget/IAppWidgetHost;
Lcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;
Lcom/android/internal/appwidget/IAppWidgetService$Stub;
Lcom/android/internal/appwidget/IAppWidgetService;
-Lcom/android/internal/backup/IBackupTransport$Stub$Proxy;
Lcom/android/internal/backup/IBackupTransport$Stub;
Lcom/android/internal/backup/IBackupTransport;
Lcom/android/internal/colorextraction/ColorExtractor$GradientColors;
@@ -33552,20 +34770,42 @@ Lcom/android/internal/hidden_from_bootclasspath/android/app/appfunctions/flags/F
Lcom/android/internal/hidden_from_bootclasspath/android/app/job/FeatureFlags;
Lcom/android/internal/hidden_from_bootclasspath/android/app/job/FeatureFlagsImpl;
Lcom/android/internal/hidden_from_bootclasspath/android/app/job/Flags;
+Lcom/android/internal/hidden_from_bootclasspath/android/companion/virtualdevice/flags/FeatureFlags;
+Lcom/android/internal/hidden_from_bootclasspath/android/companion/virtualdevice/flags/FeatureFlagsImpl;
+Lcom/android/internal/hidden_from_bootclasspath/android/companion/virtualdevice/flags/Flags;
Lcom/android/internal/hidden_from_bootclasspath/android/content/pm/FeatureFlags;
Lcom/android/internal/hidden_from_bootclasspath/android/content/pm/FeatureFlagsImpl;
Lcom/android/internal/hidden_from_bootclasspath/android/content/pm/Flags;
+Lcom/android/internal/hidden_from_bootclasspath/android/media/audio/FeatureFlags;
+Lcom/android/internal/hidden_from_bootclasspath/android/media/audio/FeatureFlagsImpl;
+Lcom/android/internal/hidden_from_bootclasspath/android/media/audio/Flags;
+Lcom/android/internal/hidden_from_bootclasspath/android/net/http/FeatureFlags;
+Lcom/android/internal/hidden_from_bootclasspath/android/net/http/FeatureFlagsImpl;
+Lcom/android/internal/hidden_from_bootclasspath/android/net/http/Flags;
Lcom/android/internal/hidden_from_bootclasspath/android/os/FeatureFlags;
Lcom/android/internal/hidden_from_bootclasspath/android/os/FeatureFlagsImpl;
Lcom/android/internal/hidden_from_bootclasspath/android/os/Flags;
Lcom/android/internal/hidden_from_bootclasspath/android/permission/flags/FeatureFlags;
Lcom/android/internal/hidden_from_bootclasspath/android/permission/flags/FeatureFlagsImpl;
Lcom/android/internal/hidden_from_bootclasspath/android/permission/flags/Flags;
+Lcom/android/internal/hidden_from_bootclasspath/android/provider/flags/FeatureFlags;
+Lcom/android/internal/hidden_from_bootclasspath/android/provider/flags/FeatureFlagsImpl;
+Lcom/android/internal/hidden_from_bootclasspath/android/provider/flags/Flags;
+Lcom/android/internal/hidden_from_bootclasspath/android/security/FeatureFlags;
+Lcom/android/internal/hidden_from_bootclasspath/android/security/FeatureFlagsImpl;
+Lcom/android/internal/hidden_from_bootclasspath/android/security/Flags;
Lcom/android/internal/hidden_from_bootclasspath/android/service/notification/FeatureFlags;
Lcom/android/internal/hidden_from_bootclasspath/android/service/notification/FeatureFlagsImpl;
Lcom/android/internal/hidden_from_bootclasspath/android/service/notification/Flags;
+Lcom/android/internal/hidden_from_bootclasspath/com/android/libcore/FeatureFlags;
+Lcom/android/internal/hidden_from_bootclasspath/com/android/libcore/FeatureFlagsImpl;
Lcom/android/internal/hidden_from_bootclasspath/com/android/libcore/Flags;
+Lcom/android/internal/hidden_from_bootclasspath/com/android/server/power/optimization/FeatureFlags;
+Lcom/android/internal/hidden_from_bootclasspath/com/android/server/power/optimization/FeatureFlagsImpl;
Lcom/android/internal/hidden_from_bootclasspath/com/android/server/power/optimization/Flags;
+Lcom/android/internal/hidden_from_bootclasspath/com/android/settingslib/flags/FeatureFlags;
+Lcom/android/internal/hidden_from_bootclasspath/com/android/settingslib/flags/FeatureFlagsImpl;
+Lcom/android/internal/hidden_from_bootclasspath/com/android/settingslib/flags/Flags;
Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlags;
Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;
Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/Flags;
@@ -33611,7 +34851,6 @@ Lcom/android/internal/inputmethod/IInputMethodClient;
Lcom/android/internal/inputmethod/IInputMethodPrivilegedOperations$Stub$Proxy;
Lcom/android/internal/inputmethod/IInputMethodPrivilegedOperations$Stub;
Lcom/android/internal/inputmethod/IInputMethodPrivilegedOperations;
-Lcom/android/internal/inputmethod/IInputMethodSession$Stub$Proxy;
Lcom/android/internal/inputmethod/IInputMethodSession$Stub;
Lcom/android/internal/inputmethod/IInputMethodSession;
Lcom/android/internal/inputmethod/IRemoteAccessibilityInputConnection$Stub;
@@ -33621,7 +34860,8 @@ Lcom/android/internal/inputmethod/IRemoteInputConnection$Stub;
Lcom/android/internal/inputmethod/IRemoteInputConnection;
Lcom/android/internal/inputmethod/ImeTracing;
Lcom/android/internal/inputmethod/ImeTracingClientImpl;
-Lcom/android/internal/inputmethod/ImeTracingPerfettoImpl;
+Lcom/android/internal/inputmethod/ImeTracingPerfettoImpl$$ExternalSyntheticLambda3;
+Lcom/android/internal/inputmethod/ImeTracingPerfettoImpl$$ExternalSyntheticLambda4;
Lcom/android/internal/inputmethod/ImeTracingServerImpl;
Lcom/android/internal/inputmethod/InputBindResult$1;
Lcom/android/internal/inputmethod/InputBindResult-IA;
@@ -33711,6 +34951,7 @@ Lcom/android/internal/os/AndroidPrintStream;
Lcom/android/internal/os/AppFuseMount$1;
Lcom/android/internal/os/AppFuseMount;
Lcom/android/internal/os/AppIdToPackageMap;
+Lcom/android/internal/os/ApplicationSharedMemory;
Lcom/android/internal/os/AtomicDirectory;
Lcom/android/internal/os/BackgroundThread;
Lcom/android/internal/os/BatteryStatsHistory$HistoryStepDetailsCalculator;
@@ -33752,6 +34993,7 @@ Lcom/android/internal/os/CachedDeviceState;
Lcom/android/internal/os/ClassLoaderFactory;
Lcom/android/internal/os/Clock;
Lcom/android/internal/os/DebugStore$DebugStoreNative;
+Lcom/android/internal/os/DebugStore$DebugStoreNativeImpl;
Lcom/android/internal/os/DebugStore;
Lcom/android/internal/os/FeatureFlags;
Lcom/android/internal/os/FeatureFlagsImpl;
@@ -33808,7 +35050,6 @@ Lcom/android/internal/os/KernelSingleUidTimeReader;
Lcom/android/internal/os/LoggingPrintStream$1;
Lcom/android/internal/os/LoggingPrintStream;
Lcom/android/internal/os/LongArrayMultiStateCounter$1;
-Lcom/android/internal/os/LongArrayMultiStateCounter$LongArrayContainer;
Lcom/android/internal/os/LongArrayMultiStateCounter;
Lcom/android/internal/os/LongMultiStateCounter$1;
Lcom/android/internal/os/LongMultiStateCounter;
@@ -33860,6 +35101,7 @@ Lcom/android/internal/os/ZygoteServer$$ExternalSyntheticLambda0;
Lcom/android/internal/os/ZygoteServer$UsapPoolRefillAction;
Lcom/android/internal/os/ZygoteServer;
Lcom/android/internal/os/logging/MetricsLoggerWrapper;
+Lcom/android/internal/pm/RoSystemFeatures;
Lcom/android/internal/pm/parsing/PackageParser2$Callback;
Lcom/android/internal/pm/parsing/PackageParserException;
Lcom/android/internal/pm/pkg/component/flags/FeatureFlags;
@@ -33882,6 +35124,8 @@ Lcom/android/internal/policy/DecorView;
Lcom/android/internal/policy/GestureNavigationSettingsObserver$$ExternalSyntheticLambda0;
Lcom/android/internal/policy/GestureNavigationSettingsObserver$1;
Lcom/android/internal/policy/GestureNavigationSettingsObserver;
+Lcom/android/internal/policy/IDeviceLockedStateListener$Stub;
+Lcom/android/internal/policy/IDeviceLockedStateListener;
Lcom/android/internal/policy/IKeyguardDismissCallback$Stub$Proxy;
Lcom/android/internal/policy/IKeyguardDismissCallback$Stub;
Lcom/android/internal/policy/IKeyguardDismissCallback;
@@ -33925,13 +35169,34 @@ Lcom/android/internal/policy/TransitionAnimation$$ExternalSyntheticLambda1;
Lcom/android/internal/policy/TransitionAnimation;
Lcom/android/internal/policy/WearGestureInterceptionDetector;
Lcom/android/internal/power/ModemPowerProfile;
+Lcom/android/internal/protolog/IProtoLogClient$Stub;
+Lcom/android/internal/protolog/IProtoLogClient;
+Lcom/android/internal/protolog/IProtoLogConfigurationService;
+Lcom/android/internal/protolog/PerfettoProtoLogImpl$$ExternalSyntheticLambda4;
+Lcom/android/internal/protolog/PerfettoProtoLogImpl$$ExternalSyntheticLambda5;
+Lcom/android/internal/protolog/PerfettoProtoLogImpl$$ExternalSyntheticLambda6;
+Lcom/android/internal/protolog/PerfettoProtoLogImpl;
+Lcom/android/internal/protolog/ProtoLog;
+Lcom/android/internal/protolog/ProtoLogCacheUpdater;
+Lcom/android/internal/protolog/ProtoLogDataSource$$ExternalSyntheticLambda0;
+Lcom/android/internal/protolog/ProtoLogDataSource$$ExternalSyntheticLambda1;
+Lcom/android/internal/protolog/ProtoLogDataSource$$ExternalSyntheticLambda2;
+Lcom/android/internal/protolog/ProtoLogDataSource$GroupConfig;
+Lcom/android/internal/protolog/ProtoLogDataSource$Instance$TracingInstanceStartCallback;
+Lcom/android/internal/protolog/ProtoLogDataSource$Instance$TracingInstanceStopCallback;
+Lcom/android/internal/protolog/ProtoLogDataSource$Instance;
+Lcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;
+Lcom/android/internal/protolog/ProtoLogDataSource;
Lcom/android/internal/protolog/ProtoLogGroup;
Lcom/android/internal/protolog/ProtoLogImpl;
Lcom/android/internal/protolog/ProtoLogViewerConfigReader;
+Lcom/android/internal/protolog/UnprocessedPerfettoProtoLogImpl$$ExternalSyntheticLambda0;
+Lcom/android/internal/protolog/UnprocessedPerfettoProtoLogImpl;
Lcom/android/internal/protolog/common/BitmaskConversionException;
+Lcom/android/internal/protolog/common/IProtoLog;
Lcom/android/internal/protolog/common/IProtoLogGroup;
Lcom/android/internal/protolog/common/LogDataType;
-Lcom/android/internal/ravenwood/RavenwoodEnvironment$Workaround;
+Lcom/android/internal/protolog/common/LogLevel;
Lcom/android/internal/ravenwood/RavenwoodEnvironment;
Lcom/android/internal/security/VerityUtils;
Lcom/android/internal/statusbar/IAddTileResultCallback;
@@ -34063,7 +35328,6 @@ Lcom/android/internal/telephony/CellBroadcastUtils;
Lcom/android/internal/telephony/CellNetworkScanResult$1;
Lcom/android/internal/telephony/CellNetworkScanResult;
Lcom/android/internal/telephony/CellularNetworkService$CellularNetworkServiceProvider$1;
-Lcom/android/internal/telephony/CellularNetworkService$CellularNetworkServiceProvider;
Lcom/android/internal/telephony/CellularNetworkService;
Lcom/android/internal/telephony/ClientWakelockAccountant;
Lcom/android/internal/telephony/ClientWakelockTracker;
@@ -34151,7 +35415,6 @@ Lcom/android/internal/telephony/IMms;
Lcom/android/internal/telephony/INumberVerificationCallback$Stub$Proxy;
Lcom/android/internal/telephony/INumberVerificationCallback$Stub;
Lcom/android/internal/telephony/INumberVerificationCallback;
-Lcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub$Proxy;
Lcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub;
Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;
Lcom/android/internal/telephony/IOns$Stub$Proxy;
@@ -34257,7 +35520,6 @@ Lcom/android/internal/telephony/NetworkFactoryLegacyImpl$1;
Lcom/android/internal/telephony/NetworkFactoryLegacyImpl$NetworkRequestInfo;
Lcom/android/internal/telephony/NetworkFactoryLegacyImpl;
Lcom/android/internal/telephony/NetworkFactoryShim;
-Lcom/android/internal/telephony/NetworkRegistrationManager$NetworkRegStateCallback;
Lcom/android/internal/telephony/NetworkRegistrationManager$NetworkServiceConnection;
Lcom/android/internal/telephony/NetworkRegistrationManager$RegManagerDeathRecipient;
Lcom/android/internal/telephony/NetworkRegistrationManager;
@@ -34273,11 +35535,15 @@ Lcom/android/internal/telephony/NetworkScanRequestTracker;
Lcom/android/internal/telephony/NetworkScanResult$1;
Lcom/android/internal/telephony/NetworkScanResult;
Lcom/android/internal/telephony/NetworkTypeController$1;
+Lcom/android/internal/telephony/NetworkTypeController$3;
+Lcom/android/internal/telephony/NetworkTypeController$4;
Lcom/android/internal/telephony/NetworkTypeController$DefaultState;
Lcom/android/internal/telephony/NetworkTypeController$IdleState;
Lcom/android/internal/telephony/NetworkTypeController$LegacyState;
Lcom/android/internal/telephony/NetworkTypeController$LteConnectedState;
+Lcom/android/internal/telephony/NetworkTypeController$NrConnectedAdvancedState;
Lcom/android/internal/telephony/NetworkTypeController$NrConnectedState;
+Lcom/android/internal/telephony/NetworkTypeController$NrIdleState;
Lcom/android/internal/telephony/NetworkTypeController$OverrideTimerRule;
Lcom/android/internal/telephony/NetworkTypeController;
Lcom/android/internal/telephony/NitzData;
@@ -34339,7 +35605,6 @@ Lcom/android/internal/telephony/PhoneSubInfoController$$ExternalSyntheticLambda8
Lcom/android/internal/telephony/PhoneSubInfoController$$ExternalSyntheticLambda9;
Lcom/android/internal/telephony/PhoneSubInfoController$CallPhoneMethodHelper;
Lcom/android/internal/telephony/PhoneSubInfoController$PermissionCheckHelper;
-Lcom/android/internal/telephony/PhoneSubInfoController;
Lcom/android/internal/telephony/ProxyController$1;
Lcom/android/internal/telephony/ProxyController;
Lcom/android/internal/telephony/RIL$RadioProxyDeathRecipient;
@@ -34628,7 +35893,6 @@ Lcom/android/internal/telephony/d2d/TransportProtocol;
Lcom/android/internal/telephony/data/DataCallback;
Lcom/android/internal/telephony/data/DataNetworkController$DataNetworkControllerCallback;
Lcom/android/internal/telephony/data/DataSettingsManager$DataSettingsManagerCallback;
-Lcom/android/internal/telephony/data/TelephonyNetworkFactory;
Lcom/android/internal/telephony/emergency/EmergencyNumberTracker$1;
Lcom/android/internal/telephony/emergency/EmergencyNumberTracker;
Lcom/android/internal/telephony/euicc/EuiccCardController$10;
@@ -34834,6 +36098,7 @@ Lcom/android/internal/telephony/ims/ImsResolver$5;
Lcom/android/internal/telephony/ims/ImsResolver$6;
Lcom/android/internal/telephony/ims/ImsResolver$7;
Lcom/android/internal/telephony/ims/ImsResolver$8;
+Lcom/android/internal/telephony/ims/ImsResolver$ActivityManagerProxy;
Lcom/android/internal/telephony/ims/ImsResolver$ImsDynamicQueryManagerFactory;
Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceControllerFactory;
Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;
@@ -34912,7 +36177,6 @@ Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$HoldSwapState;
Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$MmTelFeatureListener;
Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$PhoneStateListener;
Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$SharedPreferenceProxy;
-Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$VtDataUsageProvider;
Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;
Lcom/android/internal/telephony/imsphone/ImsPhoneCommandInterface;
Lcom/android/internal/telephony/imsphone/ImsPhoneConnection$$ExternalSyntheticLambda0;
@@ -35449,7 +36713,6 @@ Lcom/android/internal/util/ExponentiallyBucketedHistogram;
Lcom/android/internal/util/FastMath;
Lcom/android/internal/util/FastPrintWriter$DummyWriter;
Lcom/android/internal/util/FastPrintWriter-IA;
-Lcom/android/internal/util/FastPrintWriter;
Lcom/android/internal/util/FastXmlSerializer;
Lcom/android/internal/util/FileRotator$FileInfo;
Lcom/android/internal/util/FileRotator$Reader;
@@ -35470,7 +36733,6 @@ Lcom/android/internal/util/HeavyHitterSketch;
Lcom/android/internal/util/HexDump;
Lcom/android/internal/util/IState;
Lcom/android/internal/util/ImageUtils;
-Lcom/android/internal/util/IndentingPrintWriter;
Lcom/android/internal/util/IntPair;
Lcom/android/internal/util/JournaledFile;
Lcom/android/internal/util/LatencyTracker$$ExternalSyntheticLambda0;
@@ -35723,6 +36985,9 @@ Lcom/android/internal/widget/floatingtoolbar/FloatingToolbar$$ExternalSyntheticL
Lcom/android/internal/widget/floatingtoolbar/FloatingToolbar$$ExternalSyntheticLambda1;
Lcom/android/internal/widget/floatingtoolbar/FloatingToolbar;
Lcom/android/internal/widget/floatingtoolbar/FloatingToolbarPopup;
+Lcom/android/libcore/readonly/FeatureFlags;
+Lcom/android/libcore/readonly/FeatureFlagsImpl;
+Lcom/android/libcore/readonly/Flags;
Lcom/android/media/flags/FeatureFlags;
Lcom/android/media/flags/FeatureFlagsImpl;
Lcom/android/media/flags/Flags;
@@ -35746,7 +37011,10 @@ Lcom/android/net/module/util/NetworkCapabilitiesUtils;
Lcom/android/net/module/util/NetworkIdentityUtils;
Lcom/android/net/module/util/NetworkStackConstants;
Lcom/android/net/module/util/ProxyUtils;
+Lcom/android/nfc/x/android/nfc/FeatureFlags;
+Lcom/android/nfc/x/android/nfc/FeatureFlagsImpl;
Lcom/android/nfc/x/android/nfc/Flags;
+Lcom/android/os/coregraphics/HwuiStatsLog;
Lcom/android/phone/ecc/nano/CodedInputByteBufferNano;
Lcom/android/phone/ecc/nano/CodedOutputByteBufferNano$OutOfSpaceException;
Lcom/android/phone/ecc/nano/CodedOutputByteBufferNano;
@@ -35807,6 +37075,9 @@ Lcom/android/server/criticalevents/nano/CriticalEventProto$JavaCrash;
Lcom/android/server/criticalevents/nano/CriticalEventProto$NativeCrash;
Lcom/android/server/criticalevents/nano/CriticalEventProto$SystemServerStarted;
Lcom/android/server/criticalevents/nano/CriticalEventProto$Watchdog;
+Lcom/android/server/display/feature/flags/FeatureFlags;
+Lcom/android/server/display/feature/flags/FeatureFlagsImpl;
+Lcom/android/server/display/feature/flags/Flags;
Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;
Lcom/android/server/net/BaseNetdEventCallback;
Lcom/android/server/net/BaseNetworkObserver;
@@ -36450,7 +37721,6 @@ Lorg/apache/http/conn/ssl/X509HostnameVerifier;
Lorg/apache/http/params/CoreConnectionPNames;
Lorg/apache/http/params/HttpConnectionParams;
Lorg/apache/http/params/HttpParams;
-Lorg/ccil/cowan/tagsoup/AttributesImpl;
Lorg/ccil/cowan/tagsoup/AutoDetector;
Lorg/ccil/cowan/tagsoup/CommandLine;
Lorg/ccil/cowan/tagsoup/Element;
@@ -36480,6 +37750,7 @@ Lorg/ccil/cowan/tagsoup/jaxp/SAXParserImpl;
[Landroid/animation/Keyframe$ObjectKeyframe;
[Landroid/animation/Keyframe;
[Landroid/animation/PropertyValuesHolder;
+[Landroid/app/Activity;
[Landroid/app/AppOpInfo;
[Landroid/app/BackStackState;
[Landroid/app/FragmentState;
@@ -36734,6 +38005,7 @@ Lorg/ccil/cowan/tagsoup/jaxp/SAXParserImpl;
[Landroid/icu/util/ULocale;
[Landroid/icu/util/UResourceBundle$RootType;
[Landroid/icu/util/UniversalTimeScale$TimeScaleData;
+[Landroid/internal/aconfig/storage/FileType;
[Landroid/media/AudioAttributes;
[Landroid/media/AudioDeviceInfo;
[Landroid/media/AudioGain;
@@ -36755,6 +38027,13 @@ Lorg/ccil/cowan/tagsoup/jaxp/SAXParserImpl;
[Landroid/net/NetworkKey;
[Landroid/net/Uri;
[Landroid/net/rtp/AudioCodec;
+[Landroid/nfc/NdefMessage;
+[Landroid/nfc/NdefRecord;
+[Landroid/nfc/NfcAntennaInfo;
+[Landroid/nfc/Tag;
+[Landroid/nfc/TechListParcel;
+[Landroid/nfc/WlcListenerDeviceInfo;
+[Landroid/nfc/cardemulation/PollingFrame;
[Landroid/os/AsyncTask$Status;
[Landroid/os/BatteryConsumer$Key;
[Landroid/os/BatteryStats$BitDescription;
@@ -36888,6 +38167,9 @@ Lorg/ccil/cowan/tagsoup/jaxp/SAXParserImpl;
[Landroid/widget/SpellChecker$SpellParser;
[Landroid/widget/TextView$BufferType;
[Landroid/widget/TextView$ChangeWatcher;
+[Landroid/window/BackTouchTracker$TouchTrackerState;
+[Landroid/window/DesktopModeFlags$ToggleOverride;
+[Landroid/window/DesktopModeFlags;
[Landroid/window/TransitionFilter$Requirement;
[Lcom/android/framework/protobuf/GeneratedMessageLite$MethodToInvoke;
[Lcom/android/framework/protobuf/MessageInfoFactory;
@@ -36907,6 +38189,8 @@ Lorg/ccil/cowan/tagsoup/jaxp/SAXParserImpl;
[Lcom/android/internal/os/ZygoteServer$UsapPoolRefillAction;
[Lcom/android/internal/policy/PhoneWindow$PanelFeatureState;
[Lcom/android/internal/protolog/ProtoLogGroup;
+[Lcom/android/internal/protolog/common/IProtoLogGroup;
+[Lcom/android/internal/protolog/common/LogLevel;
[Lcom/android/internal/statusbar/LetterboxDetails;
[Lcom/android/internal/statusbar/NotificationVisibility$NotificationLocation;
[Lcom/android/internal/telephony/Call$SrvccState;
@@ -36967,6 +38251,7 @@ Lorg/ccil/cowan/tagsoup/jaxp/SAXParserImpl;
[Lcom/android/internal/telephony/uicc/UsimServiceTable$UsimService;
[Lcom/android/internal/util/StateMachine$SmHandler$StateInfo;
[Lcom/android/internal/view/AppearanceRegion;
+[Lcom/android/internal/widget/LockPatternView$Cell;
[Lgov/nist/javax/sip/DialogTimeoutEvent$Reason;
[Ljavax/microedition/khronos/egl/EGLConfig;
[Ljavax/sip/DialogState;
diff --git a/boot/preloaded-classes b/boot/preloaded-classes
index 9926aef91ee1..47abe6b2a8f6 100644
--- a/boot/preloaded-classes
+++ b/boot/preloaded-classes
@@ -1,5 +1,5 @@
#
-# Copyright (C) 2017 The Android Open Source Project
+# Copyright (C) 2025 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -93,6 +93,7 @@ android.aconfig.nano.Aconfig$flag_values
android.aconfig.nano.Aconfig$parsed_flag
android.aconfig.nano.Aconfig$parsed_flags
android.aconfig.nano.Aconfig$tracepoint
+android.adpf.Flags
android.animation.AnimationHandler$$ExternalSyntheticLambda0
android.animation.AnimationHandler$1
android.animation.AnimationHandler$2
@@ -231,7 +232,6 @@ android.app.ActivityManager$PendingIntentInfo
android.app.ActivityManager$ProcessErrorStateInfo$1
android.app.ActivityManager$ProcessErrorStateInfo
android.app.ActivityManager$RecentTaskInfo$1
-android.app.ActivityManager$RecentTaskInfo$PersistedTaskSnapshotData
android.app.ActivityManager$RecentTaskInfo
android.app.ActivityManager$RunningAppProcessInfo$1
android.app.ActivityManager$RunningAppProcessInfo
@@ -269,6 +269,7 @@ android.app.ActivityThread$1
android.app.ActivityThread$2
android.app.ActivityThread$3
android.app.ActivityThread$4
+android.app.ActivityThread$5
android.app.ActivityThread$ActivityClientRecord$1
android.app.ActivityThread$ActivityClientRecord
android.app.ActivityThread$AppBindData
@@ -320,8 +321,9 @@ android.app.AppOpsManager$$ExternalSyntheticLambda3
android.app.AppOpsManager$$ExternalSyntheticLambda4
android.app.AppOpsManager$$ExternalSyntheticLambda5
android.app.AppOpsManager$$ExternalSyntheticLambda6
+android.app.AppOpsManager$$ExternalSyntheticLambda8
android.app.AppOpsManager$1
-android.app.AppOpsManager$3
+android.app.AppOpsManager$2
android.app.AppOpsManager$4
android.app.AppOpsManager$AppOpsCollector
android.app.AppOpsManager$AttributedHistoricalOps$1
@@ -365,7 +367,6 @@ android.app.AppOpsManager
android.app.AppOpsManagerInternal
android.app.Application$ActivityLifecycleCallbacks
android.app.Application$OnProvideAssistDataListener
-android.app.Application
android.app.ApplicationErrorReport$1
android.app.ApplicationErrorReport$AnrInfo
android.app.ApplicationErrorReport$BatteryInfo
@@ -386,9 +387,11 @@ android.app.ApplicationPackageManager$1
android.app.ApplicationPackageManager$2
android.app.ApplicationPackageManager$3
android.app.ApplicationPackageManager$GetPackagesForUidResult
+android.app.ApplicationPackageManager$HasSystemFeatureQuery$$ExternalSyntheticRecord1
android.app.ApplicationPackageManager$HasSystemFeatureQuery
android.app.ApplicationPackageManager$MoveCallbackDelegate
android.app.ApplicationPackageManager$ResourceName
+android.app.ApplicationPackageManager-IA
android.app.AsyncNotedAppOp$1
android.app.AsyncNotedAppOp
android.app.AutomaticZenRule$1
@@ -401,6 +404,9 @@ android.app.BackgroundInstallControlManager
android.app.BackgroundServiceStartNotAllowedException$1
android.app.BackgroundServiceStartNotAllowedException
android.app.BroadcastOptions
+android.app.BroadcastStickyCache$$ExternalSyntheticLambda0
+android.app.BroadcastStickyCache$StickyBroadcastFilter$$ExternalSyntheticRecord0
+android.app.BroadcastStickyCache$StickyBroadcastFilter
android.app.BroadcastStickyCache
android.app.CameraCompatTaskInfo$1
android.app.CameraCompatTaskInfo
@@ -513,7 +519,6 @@ android.app.IForegroundServiceObserver
android.app.IGameManagerService$Stub$Proxy
android.app.IGameManagerService$Stub
android.app.IGameManagerService
-android.app.IInstantAppResolver$Stub$Proxy
android.app.IInstantAppResolver$Stub
android.app.IInstantAppResolver
android.app.IInstrumentationWatcher$Stub$Proxy
@@ -595,6 +600,7 @@ android.app.IntentReceiverLeaked
android.app.IntentService$ServiceHandler
android.app.IntentService
android.app.KeyguardManager$1
+android.app.KeyguardManager$2
android.app.KeyguardManager$KeyguardDismissCallback
android.app.KeyguardManager
android.app.ListActivity
@@ -638,6 +644,7 @@ android.app.Notification$InboxStyle
android.app.Notification$MediaStyle
android.app.Notification$MessagingStyle$Message
android.app.Notification$MessagingStyle
+android.app.Notification$ProgressStyle
android.app.Notification$StandardTemplateParams
android.app.Notification$Style
android.app.Notification$TemplateBindResult$MarginSet
@@ -653,6 +660,9 @@ android.app.NotificationHistory$1
android.app.NotificationHistory$HistoricalNotification$Builder
android.app.NotificationHistory$HistoricalNotification
android.app.NotificationHistory
+android.app.NotificationManager$1
+android.app.NotificationManager$NotificationChannelQuery
+android.app.NotificationManager$NotificationKey
android.app.NotificationManager$Policy$1
android.app.NotificationManager$Policy
android.app.NotificationManager
@@ -684,10 +694,16 @@ android.app.ProfilerInfo$1
android.app.ProfilerInfo
android.app.ProgressDialog$1
android.app.ProgressDialog
-android.app.PropertyInvalidatedCache$1
+android.app.PropertyInvalidatedCache$Args
android.app.PropertyInvalidatedCache$AutoCorker$1
android.app.PropertyInvalidatedCache$AutoCorker
+android.app.PropertyInvalidatedCache$CacheMap$1
+android.app.PropertyInvalidatedCache$CacheMap
android.app.PropertyInvalidatedCache$DefaultComputer
+android.app.PropertyInvalidatedCache$NonceHandler
+android.app.PropertyInvalidatedCache$NonceSharedMem
+android.app.PropertyInvalidatedCache$NonceStore
+android.app.PropertyInvalidatedCache$NonceSysprop
android.app.PropertyInvalidatedCache$QueryHandler
android.app.PropertyInvalidatedCache
android.app.QueuedWork$QueuedWorkHandler
@@ -706,6 +722,7 @@ android.app.RemoteInputHistoryItem
android.app.RemoteServiceException
android.app.ResourcesManager$$ExternalSyntheticLambda0
android.app.ResourcesManager$$ExternalSyntheticLambda1
+android.app.ResourcesManager$$ExternalSyntheticLambda2
android.app.ResourcesManager$ActivityResource
android.app.ResourcesManager$ActivityResources
android.app.ResourcesManager$ApkAssetsSupplier
@@ -801,7 +818,9 @@ android.app.SystemServiceRegistry$145
android.app.SystemServiceRegistry$146
android.app.SystemServiceRegistry$147
android.app.SystemServiceRegistry$148
+android.app.SystemServiceRegistry$149
android.app.SystemServiceRegistry$14
+android.app.SystemServiceRegistry$150
android.app.SystemServiceRegistry$15
android.app.SystemServiceRegistry$16
android.app.SystemServiceRegistry$17
@@ -907,6 +926,7 @@ android.app.SystemServiceRegistry
android.app.TaskInfo
android.app.TaskStackListener
android.app.UiModeManager$1
+android.app.UiModeManager$2
android.app.UiModeManager$Globals
android.app.UiModeManager$InnerListener
android.app.UiModeManager$OnProjectionStateChangedListener
@@ -1003,6 +1023,7 @@ android.app.ambientcontext.AmbientContextManager
android.app.ambientcontext.IAmbientContextManager$Stub$Proxy
android.app.ambientcontext.IAmbientContextManager$Stub
android.app.ambientcontext.IAmbientContextManager
+android.app.appfunctions.AppFunctionManager
android.app.assist.ActivityId$1
android.app.assist.ActivityId
android.app.assist.AssistContent$1
@@ -1023,6 +1044,7 @@ android.app.assist.AssistStructure$ViewNodeText
android.app.assist.AssistStructure$ViewStackEntry
android.app.assist.AssistStructure$WindowNode
android.app.assist.AssistStructure
+android.app.assist.flags.Flags
android.app.backup.BackupAgent$BackupServiceBinder
android.app.backup.BackupAgent$SharedPrefsSynchronizer
android.app.backup.BackupAgent-IA
@@ -1109,6 +1131,8 @@ android.app.contentsuggestions.SelectionsRequest$Builder
android.app.contentsuggestions.SelectionsRequest-IA
android.app.contentsuggestions.SelectionsRequest
android.app.contextualsearch.ContextualSearchManager
+android.app.jank.Flags
+android.app.jank.JankTracker
android.app.job.IJobCallback$Stub$Proxy
android.app.job.IJobCallback$Stub
android.app.job.IJobCallback
@@ -1140,7 +1164,6 @@ android.app.job.JobServiceEngine$JobHandler
android.app.job.JobServiceEngine
android.app.job.JobWorkItem$1
android.app.job.JobWorkItem
-android.app.ondeviceintelligence.OnDeviceIntelligenceManager
android.app.people.IPeopleManager$Stub$Proxy
android.app.people.IPeopleManager$Stub
android.app.people.IPeopleManager
@@ -1366,6 +1389,7 @@ android.appwidget.AppWidgetManager$$ExternalSyntheticLambda4
android.appwidget.AppWidgetManager$$ExternalSyntheticLambda5
android.appwidget.AppWidgetManager$$ExternalSyntheticLambda6
android.appwidget.AppWidgetManager$$ExternalSyntheticLambda7
+android.appwidget.AppWidgetManager$ServiceCollectionCache
android.appwidget.AppWidgetManager
android.appwidget.AppWidgetManagerInternal
android.appwidget.AppWidgetProvider
@@ -1516,9 +1540,13 @@ android.content.ISyncContext$Stub
android.content.ISyncContext
android.content.ISyncStatusObserver$Stub
android.content.ISyncStatusObserver
+android.content.Intent$$ExternalSyntheticLambda0
+android.content.Intent$$ExternalSyntheticLambda1
android.content.Intent$1
android.content.Intent$CommandOptionHandler
+android.content.Intent$CreatorTokenInfo
android.content.Intent$FilterComparison
+android.content.Intent$NestedIntentKey
android.content.Intent
android.content.IntentFilter$$ExternalSyntheticLambda0
android.content.IntentFilter$$ExternalSyntheticLambda2
@@ -1743,6 +1771,7 @@ android.content.pm.LauncherApps$ShortcutQuery$QueryFlags
android.content.pm.LauncherApps$ShortcutQuery
android.content.pm.LauncherApps-IA
android.content.pm.LauncherApps
+android.content.pm.LauncherUserInfo
android.content.pm.ModuleInfo$1
android.content.pm.ModuleInfo-IA
android.content.pm.ModuleInfo
@@ -2155,6 +2184,7 @@ android.debug.IAdbManager
android.debug.IAdbTransport$Stub
android.debug.IAdbTransport
android.graphics.BLASTBufferQueue$TransactionHangCallback
+android.graphics.BLASTBufferQueue$WaitForBufferReleaseCallback
android.graphics.BLASTBufferQueue
android.graphics.BaseCanvas
android.graphics.BaseRecordingCanvas
@@ -2196,10 +2226,7 @@ android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda0
android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda1
android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda2
android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda3
-android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda4
android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda5
-android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda6
-android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda9
android.graphics.ColorSpace$Rgb$Native
android.graphics.ColorSpace$Rgb$NoImagePreloadHolder
android.graphics.ColorSpace$Rgb$TransferParameters
@@ -2326,8 +2353,10 @@ android.graphics.RenderNode$CompositePositionUpdateListener
android.graphics.RenderNode$NoImagePreloadHolder
android.graphics.RenderNode$PositionUpdateListener
android.graphics.RenderNode
+android.graphics.RuntimeColorFilter
android.graphics.RuntimeShader$NoImagePreloadHolder
android.graphics.RuntimeShader
+android.graphics.RuntimeXfermode
android.graphics.Shader$NoImagePreloadHolder
android.graphics.Shader$TileMode
android.graphics.Shader
@@ -2566,6 +2595,7 @@ android.hardware.ISensorPrivacyManager$Stub
android.hardware.ISensorPrivacyManager
android.hardware.ISerialManager$Stub
android.hardware.ISerialManager
+android.hardware.LutProperties
android.hardware.OverlayProperties$1
android.hardware.OverlayProperties-IA
android.hardware.OverlayProperties
@@ -2589,6 +2619,7 @@ android.hardware.SerialPort
android.hardware.SyncFence$1
android.hardware.SyncFence
android.hardware.SystemSensorManager$BaseEventQueue
+android.hardware.SystemSensorManager$InjectEventQueue
android.hardware.SystemSensorManager$SensorEventQueue
android.hardware.SystemSensorManager$TriggerEventQueue
android.hardware.TriggerEvent
@@ -2651,6 +2682,7 @@ android.hardware.camera2.CameraCharacteristics$5
android.hardware.camera2.CameraCharacteristics$6
android.hardware.camera2.CameraCharacteristics$7
android.hardware.camera2.CameraCharacteristics$8
+android.hardware.camera2.CameraCharacteristics$9
android.hardware.camera2.CameraCharacteristics$Key
android.hardware.camera2.CameraCharacteristics
android.hardware.camera2.CameraDevice$StateCallback
@@ -2717,6 +2749,7 @@ android.hardware.camera2.impl.CameraMetadataNative$37
android.hardware.camera2.impl.CameraMetadataNative$38
android.hardware.camera2.impl.CameraMetadataNative$39
android.hardware.camera2.impl.CameraMetadataNative$3
+android.hardware.camera2.impl.CameraMetadataNative$40
android.hardware.camera2.impl.CameraMetadataNative$4
android.hardware.camera2.impl.CameraMetadataNative$5
android.hardware.camera2.impl.CameraMetadataNative$6
@@ -2787,6 +2820,7 @@ android.hardware.camera2.params.OisSample
android.hardware.camera2.params.RecommendedStreamConfiguration
android.hardware.camera2.params.ReprocessFormatsMap
android.hardware.camera2.params.RggbChannelVector
+android.hardware.camera2.params.SharedSessionConfiguration
android.hardware.camera2.params.StreamConfiguration
android.hardware.camera2.params.StreamConfigurationDuration
android.hardware.camera2.params.StreamConfigurationMap
@@ -2804,6 +2838,8 @@ android.hardware.camera2.utils.TypeReference-IA
android.hardware.camera2.utils.TypeReference
android.hardware.common.fmq.SynchronizedReadWrite
android.hardware.common.fmq.UnsynchronizedWrite
+android.hardware.contexthub.IContextHubEndpointDiscoveryCallback$Stub
+android.hardware.contexthub.IContextHubEndpointDiscoveryCallback
android.hardware.contexthub.V1_0.ContextHub
android.hardware.contexthub.V1_0.ContextHubMsg
android.hardware.contexthub.V1_0.HubAppInfo
@@ -2819,6 +2855,7 @@ android.hardware.devicestate.DeviceState$Configuration$1
android.hardware.devicestate.DeviceState$Configuration
android.hardware.devicestate.DeviceState
android.hardware.devicestate.DeviceStateInfo$1
+android.hardware.devicestate.DeviceStateInfo-IA
android.hardware.devicestate.DeviceStateInfo
android.hardware.devicestate.DeviceStateManager$DeviceStateCallback
android.hardware.devicestate.DeviceStateManager$FoldStateListener
@@ -2873,6 +2910,7 @@ android.hardware.display.DisplayManagerGlobal
android.hardware.display.DisplayManagerInternal$DisplayPowerCallbacks
android.hardware.display.DisplayManagerInternal$DisplayPowerRequest
android.hardware.display.DisplayManagerInternal
+android.hardware.display.DisplayTopology
android.hardware.display.DisplayViewport
android.hardware.display.DisplayedContentSample
android.hardware.display.DisplayedContentSamplingAttributes
@@ -2958,7 +2996,6 @@ android.hardware.hdmi.HdmiRecordSources$OwnSource
android.hardware.hdmi.HdmiRecordSources$RecordSource
android.hardware.input.HostUsiVersion$1
android.hardware.input.HostUsiVersion
-android.hardware.input.IInputDevicesChangedListener$Stub$Proxy
android.hardware.input.IInputDevicesChangedListener$Stub
android.hardware.input.IInputDevicesChangedListener
android.hardware.input.IInputManager$Stub$Proxy
@@ -2974,7 +3011,6 @@ android.hardware.input.InputDeviceIdentifier
android.hardware.input.InputManager$InputDeviceListener
android.hardware.input.InputManager
android.hardware.input.InputManagerGlobal$InputDeviceListenerDelegate
-android.hardware.input.InputManagerGlobal$InputDevicesChangedListener
android.hardware.input.InputManagerGlobal$OnTabletModeChangedListenerDelegate
android.hardware.input.InputManagerGlobal-IA
android.hardware.input.InputManagerGlobal
@@ -3071,6 +3107,8 @@ android.hardware.location.NanoAppRpcService
android.hardware.location.NanoAppState$1
android.hardware.location.NanoAppState-IA
android.hardware.location.NanoAppState
+android.hardware.power.CpuHeadroomResult$Tag
+android.hardware.power.GpuHeadroomResult$Tag
android.hardware.power.SessionMode
android.hardware.radio.ITuner$Stub
android.hardware.radio.ITuner
@@ -3736,6 +3774,7 @@ android.icu.impl.UCharacterProperty$27
android.icu.impl.UCharacterProperty$28
android.icu.impl.UCharacterProperty$29
android.icu.impl.UCharacterProperty$2
+android.icu.impl.UCharacterProperty$30
android.icu.impl.UCharacterProperty$3
android.icu.impl.UCharacterProperty$4
android.icu.impl.UCharacterProperty$5
@@ -3752,6 +3791,7 @@ android.icu.impl.UCharacterProperty$IntProperty
android.icu.impl.UCharacterProperty$IsAcceptable
android.icu.impl.UCharacterProperty$LayoutProps$IsAcceptable
android.icu.impl.UCharacterProperty$LayoutProps
+android.icu.impl.UCharacterProperty$MCMBinaryProperty
android.icu.impl.UCharacterProperty$MathCompatBinaryProperty
android.icu.impl.UCharacterProperty$NormInertBinaryProperty
android.icu.impl.UCharacterProperty$NormQuickCheckIntProperty
@@ -4564,7 +4604,6 @@ android.icu.text.ReplaceableContextIterator
android.icu.text.ReplaceableString
android.icu.text.RuleBasedBreakIterator$BreakCache
android.icu.text.RuleBasedBreakIterator$DictionaryCache
-android.icu.text.RuleBasedBreakIterator
android.icu.text.RuleBasedCollator$CollationBuffer
android.icu.text.RuleBasedCollator$CollationKeyByteSink
android.icu.text.RuleBasedCollator$FCDUTF16NFDIterator
@@ -4909,6 +4948,12 @@ android.inputmethodservice.InputMethodService$Insets
android.inputmethodservice.InputMethodService$SettingsObserver
android.inputmethodservice.InputMethodService
android.inputmethodservice.SoftInputWindow
+android.internal.aconfig.storage.AconfigStorageException
+android.internal.aconfig.storage.ByteBufferReader
+android.internal.aconfig.storage.FileType
+android.internal.aconfig.storage.PackageTable$Header
+android.internal.aconfig.storage.PackageTable
+android.internal.framework.protobuf.nano.InvalidProtocolBufferNanoException
android.internal.framework.protobuf.nano.MessageNano
android.internal.hidl.base.V1_0.DebugInfo
android.internal.hidl.base.V1_0.IBase
@@ -5111,7 +5156,6 @@ android.media.IMediaRouter2$Stub
android.media.IMediaRouter2
android.media.IMediaRouter2Manager$Stub
android.media.IMediaRouter2Manager
-android.media.IMediaRouterClient$Stub$Proxy
android.media.IMediaRouterClient$Stub
android.media.IMediaRouterClient
android.media.IMediaRouterService$Stub$Proxy
@@ -5177,6 +5221,7 @@ android.media.MediaCodecInfo$AudioCapabilities
android.media.MediaCodecInfo$CodecProfileLevel
android.media.MediaCodecInfo$EncoderCapabilities
android.media.MediaCodecInfo$Feature
+android.media.MediaCodecInfo$LazyHolder
android.media.MediaCodecInfo$VideoCapabilities$$ExternalSyntheticLambda0
android.media.MediaCodecInfo$VideoCapabilities$PerformancePoint
android.media.MediaCodecInfo$VideoCapabilities
@@ -5273,7 +5318,6 @@ android.media.MediaRouter$Static$1
android.media.MediaRouter$Static$Client$$ExternalSyntheticLambda0
android.media.MediaRouter$Static$Client$$ExternalSyntheticLambda1
android.media.MediaRouter$Static$Client$1
-android.media.MediaRouter$Static$Client
android.media.MediaRouter$Static
android.media.MediaRouter$UserRouteInfo$SessionVolumeProvider
android.media.MediaRouter$UserRouteInfo
@@ -5373,10 +5417,8 @@ android.media.VolumeShaper$Operation
android.media.VolumeShaper$State$1
android.media.VolumeShaper$State
android.media.VolumeShaper
-android.media.audio.FeatureFlags
-android.media.audio.FeatureFlagsImpl
-android.media.audio.Flags
android.media.audio.common.AidlConversion
+android.media.audio.common.AudioHalProductStrategy$ZoneId
android.media.audio.common.HeadTracking$SensorData$Tag
android.media.audiofx.AudioEffect$Descriptor
android.media.audiofx.AudioEffect
@@ -5425,6 +5467,8 @@ android.media.browse.MediaBrowser$SubscriptionCallback
android.media.browse.MediaBrowser-IA
android.media.browse.MediaBrowser
android.media.browse.MediaBrowserUtils
+android.media.codec.FeatureFlags
+android.media.codec.FeatureFlagsImpl
android.media.codec.Flags
android.media.metrics.Event
android.media.metrics.IMediaMetricsManager$Stub$Proxy
@@ -5479,7 +5523,9 @@ android.media.projection.MediaProjectionInfo
android.media.projection.MediaProjectionManager$Callback
android.media.projection.MediaProjectionManager$CallbackDelegate
android.media.projection.MediaProjectionManager
-android.media.session.IActiveSessionsListener$Stub$Proxy
+android.media.quality.MediaQualityManager
+android.media.quality.PictureProfileHandle$1
+android.media.quality.PictureProfileHandle
android.media.session.IActiveSessionsListener$Stub
android.media.session.IActiveSessionsListener
android.media.session.IOnMediaKeyEventDispatchedListener$Stub$Proxy
@@ -5506,7 +5552,6 @@ android.media.session.ISessionCallback
android.media.session.ISessionController$Stub$Proxy
android.media.session.ISessionController$Stub
android.media.session.ISessionController
-android.media.session.ISessionControllerCallback$Stub$Proxy
android.media.session.ISessionControllerCallback$Stub
android.media.session.ISessionControllerCallback
android.media.session.ISessionManager$Stub$Proxy
@@ -5543,7 +5588,6 @@ android.media.session.MediaSessionManager$RemoteSessionCallbackStub
android.media.session.MediaSessionManager$RemoteUserInfo
android.media.session.MediaSessionManager$Session2TokensChangedWrapper
android.media.session.MediaSessionManager$SessionsChangedWrapper$1$$ExternalSyntheticLambda0
-android.media.session.MediaSessionManager$SessionsChangedWrapper$1
android.media.session.MediaSessionManager$SessionsChangedWrapper
android.media.session.MediaSessionManager-IA
android.media.session.MediaSessionManager
@@ -5617,6 +5661,7 @@ android.net.INetworkPolicyListener
android.net.INetworkPolicyManager$Stub$Proxy
android.net.INetworkPolicyManager$Stub
android.net.INetworkPolicyManager
+android.net.INetworkRecommendationProvider$Stub$Proxy
android.net.INetworkRecommendationProvider$Stub
android.net.INetworkRecommendationProvider
android.net.INetworkScoreCache$Stub$Proxy
@@ -5768,16 +5813,6 @@ android.net.sip.SipSession$State
android.net.sip.SipSession
android.net.sip.SipSessionAdapter
android.net.util.SocketUtils
-android.net.vcn.VcnManager$VcnNetworkPolicyChangeListener
-android.net.vcn.VcnManager$VcnUnderlyingNetworkPolicyListener
-android.net.vcn.VcnManager
-android.net.vcn.VcnNetworkPolicyResult$1
-android.net.vcn.VcnNetworkPolicyResult
-android.net.vcn.VcnTransportInfo$1
-android.net.vcn.VcnTransportInfo-IA
-android.net.vcn.VcnTransportInfo
-android.net.vcn.VcnUnderlyingNetworkPolicy$1
-android.net.vcn.VcnUnderlyingNetworkPolicy
android.net.wifi.SoftApConfToXmlMigrationUtil
android.net.wifi.WifiMigration$1
android.net.wifi.WifiMigration
@@ -5815,26 +5850,48 @@ android.net.wifi.nl80211.WifiNl80211Manager$ScanEventHandler
android.net.wifi.nl80211.WifiNl80211Manager$SignalPollResult
android.net.wifi.nl80211.WifiNl80211Manager
android.net.wifi.sharedconnectivity.app.SharedConnectivityManager
+android.nfc.AvailableNfcAntenna
+android.nfc.Entry
+android.nfc.FormatException
+android.nfc.IAppCallback$Stub$Proxy
android.nfc.IAppCallback$Stub
android.nfc.IAppCallback
+android.nfc.INfcAdapter$Stub$Proxy
android.nfc.INfcAdapter$Stub
android.nfc.INfcAdapter
android.nfc.INfcAdapterExtras
android.nfc.INfcCardEmulation
+android.nfc.INfcControllerAlwaysOnListener$Stub$Proxy
android.nfc.INfcControllerAlwaysOnListener$Stub
android.nfc.INfcControllerAlwaysOnListener
android.nfc.INfcDta
android.nfc.INfcFCardEmulation
+android.nfc.INfcOemExtensionCallback$Stub
+android.nfc.INfcOemExtensionCallback
+android.nfc.INfcTag$Stub
android.nfc.INfcTag
+android.nfc.INfcUnlockHandler$Stub$Proxy
android.nfc.INfcUnlockHandler$Stub
android.nfc.INfcUnlockHandler
+android.nfc.INfcVendorNciCallback$Stub$Proxy
android.nfc.INfcVendorNciCallback$Stub
android.nfc.INfcVendorNciCallback
+android.nfc.INfcWlcStateListener$Stub$Proxy
android.nfc.INfcWlcStateListener$Stub
android.nfc.INfcWlcStateListener
+android.nfc.IT4tNdefNfcee
+android.nfc.ITagRemovedCallback$Stub$Proxy
android.nfc.ITagRemovedCallback$Stub
android.nfc.ITagRemovedCallback
+android.nfc.NdefMessage$1
android.nfc.NdefMessage
+android.nfc.NdefRecord
+android.nfc.NfcActivityManager$$ExternalSyntheticLambda0
+android.nfc.NfcActivityManager$$ExternalSyntheticLambda1
+android.nfc.NfcActivityManager$$ExternalSyntheticLambda2
+android.nfc.NfcActivityManager$$ExternalSyntheticLambda3
+android.nfc.NfcActivityManager$NfcActivityState
+android.nfc.NfcActivityManager$NfcApplicationState
android.nfc.NfcActivityManager
android.nfc.NfcAdapter$$ExternalSyntheticLambda0
android.nfc.NfcAdapter$$ExternalSyntheticLambda10
@@ -5870,12 +5927,16 @@ android.nfc.NfcAdapter$$ExternalSyntheticLambda37
android.nfc.NfcAdapter$$ExternalSyntheticLambda38
android.nfc.NfcAdapter$$ExternalSyntheticLambda39
android.nfc.NfcAdapter$$ExternalSyntheticLambda3
+android.nfc.NfcAdapter$$ExternalSyntheticLambda40
+android.nfc.NfcAdapter$$ExternalSyntheticLambda41
+android.nfc.NfcAdapter$$ExternalSyntheticLambda42
android.nfc.NfcAdapter$$ExternalSyntheticLambda4
android.nfc.NfcAdapter$$ExternalSyntheticLambda5
android.nfc.NfcAdapter$$ExternalSyntheticLambda6
android.nfc.NfcAdapter$$ExternalSyntheticLambda7
android.nfc.NfcAdapter$$ExternalSyntheticLambda8
android.nfc.NfcAdapter$$ExternalSyntheticLambda9
+android.nfc.NfcAdapter$1$1
android.nfc.NfcAdapter$1
android.nfc.NfcAdapter$2
android.nfc.NfcAdapter$ControllerAlwaysOnListener
@@ -5890,24 +5951,79 @@ android.nfc.NfcAdapter$ServiceCall
android.nfc.NfcAdapter$ServiceCallReturn
android.nfc.NfcAdapter$WlcStateListener
android.nfc.NfcAdapter
+android.nfc.NfcAntennaInfo$1
+android.nfc.NfcAntennaInfo-IA
android.nfc.NfcAntennaInfo
+android.nfc.NfcControllerAlwaysOnListener$$ExternalSyntheticLambda0
android.nfc.NfcControllerAlwaysOnListener
android.nfc.NfcFrameworkInitializer$$ExternalSyntheticLambda0
android.nfc.NfcFrameworkInitializer
android.nfc.NfcManager
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda0
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda10
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda11
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda12
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda13
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda14
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda15
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda16
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda17
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda18
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda19
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda1
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda2
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda3
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda4
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda5
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda6
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda7
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda8
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda9
+android.nfc.NfcOemExtension$Callback
+android.nfc.NfcOemExtension$NfcOemExtensionCallback
+android.nfc.NfcOemExtension-IA
android.nfc.NfcOemExtension
+android.nfc.NfcRoutingTableEntry
android.nfc.NfcServiceManager$ServiceRegisterer
android.nfc.NfcServiceManager
+android.nfc.NfcVendorNciCallbackListener$$ExternalSyntheticLambda0
+android.nfc.NfcVendorNciCallbackListener$$ExternalSyntheticLambda1
android.nfc.NfcVendorNciCallbackListener
+android.nfc.NfcWlcStateListener$$ExternalSyntheticLambda0
android.nfc.NfcWlcStateListener
+android.nfc.RoutingStatus
+android.nfc.RoutingTableAidEntry
+android.nfc.RoutingTableProtocolEntry
+android.nfc.RoutingTableSystemCodeEntry
+android.nfc.RoutingTableTechnologyEntry
+android.nfc.T4tNdefNfcee
+android.nfc.Tag$1
android.nfc.Tag
+android.nfc.TechListParcel$1
android.nfc.TechListParcel
+android.nfc.WlcListenerDeviceInfo$1
+android.nfc.WlcListenerDeviceInfo-IA
android.nfc.WlcListenerDeviceInfo
android.nfc.cardemulation.AidGroup$1
android.nfc.cardemulation.AidGroup
android.nfc.cardemulation.ApduServiceInfo$1
android.nfc.cardemulation.ApduServiceInfo
+android.nfc.cardemulation.CardEmulation
+android.nfc.cardemulation.PollingFrame$1
+android.nfc.cardemulation.PollingFrame-IA
android.nfc.cardemulation.PollingFrame
+android.nfc.tech.BasicTagTechnology
+android.nfc.tech.IsoDep
+android.nfc.tech.MifareClassic
+android.nfc.tech.MifareUltralight
+android.nfc.tech.Ndef
+android.nfc.tech.NdefFormatable
+android.nfc.tech.NfcA
+android.nfc.tech.NfcB
+android.nfc.tech.NfcBarcode
+android.nfc.tech.NfcF
+android.nfc.tech.NfcV
+android.nfc.tech.TagTechnology
android.opengl.EGL14
android.opengl.EGL15
android.opengl.EGLConfig
@@ -6092,7 +6208,6 @@ android.os.Handler$Callback
android.os.Handler$MessengerImpl
android.os.Handler-IA
android.os.Handler
-android.os.HandlerExecutor
android.os.HandlerThread
android.os.HardwarePropertiesManager
android.os.HidlMemory
@@ -6181,6 +6296,9 @@ android.os.IRemoteCallback$Stub
android.os.IRemoteCallback
android.os.ISchedulingPolicyService$Stub
android.os.ISchedulingPolicyService
+android.os.IScreenTimeoutPolicyListener$Stub$Proxy
+android.os.IScreenTimeoutPolicyListener$Stub
+android.os.IScreenTimeoutPolicyListener
android.os.IServiceManager$Stub$Proxy
android.os.IServiceManager$Stub
android.os.IServiceManager
@@ -6238,6 +6356,7 @@ android.os.IncidentManager$IncidentReport$1
android.os.IncidentManager$IncidentReport
android.os.IncidentManager
android.os.IpcDataCache$1
+android.os.IpcDataCache$BypassCall
android.os.IpcDataCache$Config
android.os.IpcDataCache$QueryHandler
android.os.IpcDataCache$RemoteCall
@@ -6253,7 +6372,27 @@ android.os.Message$1
android.os.Message
android.os.MessageQueue$FileDescriptorRecord
android.os.MessageQueue$IdleHandler
+android.os.MessageQueue$MatchAllFutureMessages
+android.os.MessageQueue$MatchAllMessages
+android.os.MessageQueue$MatchBarrierToken
+android.os.MessageQueue$MatchDeliverableMessages
+android.os.MessageQueue$MatchHandler
+android.os.MessageQueue$MatchHandlerAndObject
+android.os.MessageQueue$MatchHandlerAndObjectEquals
+android.os.MessageQueue$MatchHandlerRunnableAndObject
+android.os.MessageQueue$MatchHandlerRunnableAndObjectEquals
+android.os.MessageQueue$MatchHandlerWhatAndObject
+android.os.MessageQueue$MatchHandlerWhatAndObjectEquals
+android.os.MessageQueue$MessageCompare
+android.os.MessageQueue$MessageCounts
+android.os.MessageQueue$MessageNode
+android.os.MessageQueue$OnFileDescriptorEventListener$Events
android.os.MessageQueue$OnFileDescriptorEventListener
+android.os.MessageQueue$StackNode
+android.os.MessageQueue$StackNodeType
+android.os.MessageQueue$StateNode
+android.os.MessageQueue$TimedParkStateNode
+android.os.MessageQueue-IA
android.os.MessageQueue
android.os.Messenger$1
android.os.Messenger
@@ -6264,6 +6403,7 @@ android.os.OutcomeReceiver
android.os.PackageTagsList$1
android.os.PackageTagsList
android.os.Parcel$1
+android.os.Parcel$ClassLoaderProvider
android.os.Parcel$LazyValue
android.os.Parcel$ReadWriteHelper
android.os.Parcel$SquashReadHelper
@@ -6272,7 +6412,6 @@ android.os.ParcelDuration$1
android.os.ParcelDuration
android.os.ParcelFileDescriptor$1
android.os.ParcelFileDescriptor$2
-android.os.ParcelFileDescriptor$AutoCloseInputStream
android.os.ParcelFileDescriptor$AutoCloseOutputStream
android.os.ParcelFileDescriptor$OnCloseListener
android.os.ParcelFileDescriptor$Status
@@ -6289,6 +6428,25 @@ android.os.ParcelableParcel$1
android.os.ParcelableParcel
android.os.PatternMatcher$1
android.os.PatternMatcher
+android.os.PerfettoTrace$Category
+android.os.PerfettoTrace
+android.os.PerfettoTrackEventExtra$ArgBool
+android.os.PerfettoTrackEventExtra$ArgDouble
+android.os.PerfettoTrackEventExtra$ArgInt64
+android.os.PerfettoTrackEventExtra$ArgString
+android.os.PerfettoTrackEventExtra$CounterDouble
+android.os.PerfettoTrackEventExtra$CounterInt64
+android.os.PerfettoTrackEventExtra$CounterTrack
+android.os.PerfettoTrackEventExtra$FieldContainer
+android.os.PerfettoTrackEventExtra$FieldDouble
+android.os.PerfettoTrackEventExtra$FieldInt64
+android.os.PerfettoTrackEventExtra$FieldNested
+android.os.PerfettoTrackEventExtra$FieldString
+android.os.PerfettoTrackEventExtra$Flow
+android.os.PerfettoTrackEventExtra$NamedTrack
+android.os.PerfettoTrackEventExtra$PerfettoPointer
+android.os.PerfettoTrackEventExtra$Proto
+android.os.PerfettoTrackEventExtra
android.os.PerformanceHintManager$Session
android.os.PerformanceHintManager
android.os.PermissionEnforcer
@@ -6302,7 +6460,9 @@ android.os.PowerManager$1
android.os.PowerManager$2
android.os.PowerManager$3$$ExternalSyntheticLambda0
android.os.PowerManager$3
+android.os.PowerManager$4
android.os.PowerManager$OnThermalStatusChangedListener
+android.os.PowerManager$ScreenTimeoutPolicyListener
android.os.PowerManager$WakeData
android.os.PowerManager$WakeLock$$ExternalSyntheticLambda0
android.os.PowerManager$WakeLock
@@ -6332,6 +6492,7 @@ android.os.RemoteCallback$2
android.os.RemoteCallback$3
android.os.RemoteCallback$OnResultListener
android.os.RemoteCallback
+android.os.RemoteCallbackList$Interface
android.os.RemoteCallbackList
android.os.RemoteException
android.os.ResultReceiver$1
@@ -6347,6 +6508,8 @@ android.os.ServiceManager
android.os.ServiceManagerNative
android.os.ServiceManagerProxy
android.os.ServiceSpecificException
+android.os.ServiceWithMetadata$1
+android.os.ServiceWithMetadata
android.os.SharedMemory$1
android.os.SharedMemory$Closer
android.os.SharedMemory$MemoryRegistration
@@ -6374,7 +6537,6 @@ android.os.StrictMode$8
android.os.StrictMode$9
android.os.StrictMode$AndroidBlockGuardPolicy$$ExternalSyntheticLambda0
android.os.StrictMode$AndroidBlockGuardPolicy$$ExternalSyntheticLambda1
-android.os.StrictMode$AndroidBlockGuardPolicy
android.os.StrictMode$AndroidCloseGuardReporter
android.os.StrictMode$InstanceTracker
android.os.StrictMode$OnThreadViolationListener
@@ -6432,11 +6594,22 @@ android.os.UpdateEngineCallback
android.os.UpdateLock
android.os.UserHandle$1
android.os.UserHandle
+android.os.UserManager$$ExternalSyntheticLambda0
+android.os.UserManager$$ExternalSyntheticLambda10
+android.os.UserManager$$ExternalSyntheticLambda13
+android.os.UserManager$$ExternalSyntheticLambda15
+android.os.UserManager$$ExternalSyntheticLambda1
+android.os.UserManager$$ExternalSyntheticLambda3
+android.os.UserManager$$ExternalSyntheticLambda4
+android.os.UserManager$$ExternalSyntheticLambda5
+android.os.UserManager$$ExternalSyntheticLambda8
+android.os.UserManager$$ExternalSyntheticLambda9
android.os.UserManager$1
android.os.UserManager$EnforcingUser$1
android.os.UserManager$EnforcingUser
android.os.UserManager$UserOperationException
android.os.UserManager
+android.os.UserManagerCache
android.os.VibrationAttributes$1
android.os.VibrationAttributes$Builder
android.os.VibrationAttributes-IA
@@ -6450,6 +6623,8 @@ android.os.Vibrator
android.os.VibratorInfo$1
android.os.VibratorInfo$FrequencyProfile$1
android.os.VibratorInfo$FrequencyProfile
+android.os.VibratorInfo$FrequencyProfileLegacy$1
+android.os.VibratorInfo$FrequencyProfileLegacy
android.os.VibratorInfo
android.os.VibratorManager
android.os.VintfObject
@@ -6495,6 +6670,9 @@ android.os.incremental.IncrementalManager
android.os.incremental.V4Signature$HashingInfo
android.os.incremental.V4Signature$SigningInfo
android.os.incremental.V4Signature
+android.os.instrumentation.IOffsetCallback$Stub
+android.os.instrumentation.IOffsetCallback
+android.os.instrumentation.MethodDescriptor
android.os.storage.DiskInfo$1
android.os.storage.DiskInfo
android.os.storage.IObbActionListener$Stub$Proxy
@@ -6584,14 +6762,16 @@ android.permission.LegacyPermissionManager
android.permission.PermissionCheckerManager
android.permission.PermissionControllerManager$1
android.permission.PermissionControllerManager
-android.permission.PermissionManager
android.permission.PermissionManager$1
android.permission.PermissionManager$2
+android.permission.PermissionManager$3
android.permission.PermissionManager$OnPermissionsChangeListenerDelegate
android.permission.PermissionManager$PackageNamePermissionQuery
android.permission.PermissionManager$PermissionQuery
+android.permission.PermissionManager$PermissionRequestStateQuery
android.permission.PermissionManager$SplitPermissionInfo
android.permission.PermissionManager-IA
+android.permission.PermissionManager
android.permission.PermissionManagerInternal
android.preference.DialogPreference
android.preference.GenericInflater$Parent
@@ -6795,10 +6975,7 @@ android.se.omapi.SeServiceManager
android.security.AttestedKeyPair
android.security.CheckedRemoteRequest
android.security.Credentials
-android.security.FeatureFlags
-android.security.FeatureFlagsImpl
android.security.FileIntegrityManager
-android.security.Flags
android.security.GateKeeper
android.security.IFileIntegrityService$Stub
android.security.IFileIntegrityService
@@ -6833,6 +7010,8 @@ android.security.KeyStoreSecurityLevel
android.security.NetworkSecurityPolicy
android.security.Scrypt
android.security.attestationverification.AttestationVerificationManager
+android.security.authenticationpolicy.AuthenticationPolicyManager
+android.security.intrusiondetection.IntrusionDetectionManager
android.security.keymaster.ExportResult$1
android.security.keymaster.ExportResult
android.security.keymaster.KeyCharacteristics$1
@@ -6879,6 +7058,7 @@ android.security.keystore.KeyProtection$Builder
android.security.keystore.KeyProtection
android.security.keystore.KeyStoreConnectException
android.security.keystore.KeyStoreCryptoOperation
+android.security.keystore.KeyStoreManager
android.security.keystore.KeystoreResponse$1
android.security.keystore.KeystoreResponse
android.security.keystore.ParcelableKeyGenParameterSpec$1
@@ -7157,6 +7337,7 @@ android.service.notification.NotificationRankingUpdate
android.service.notification.NotificationStats$1
android.service.notification.NotificationStats
android.service.notification.NotifyingApp$1
+android.service.notification.RateEstimator
android.service.notification.ScheduleCalendar
android.service.notification.SnoozeCriterion$1
android.service.notification.SnoozeCriterion
@@ -7201,7 +7382,6 @@ android.service.quicksettings.TileService
android.service.storage.IExternalStorageService$Stub$Proxy
android.service.storage.IExternalStorageService$Stub
android.service.storage.IExternalStorageService
-android.service.textclassifier.ITextClassifierCallback$Stub$Proxy
android.service.textclassifier.ITextClassifierCallback$Stub
android.service.textclassifier.ITextClassifierCallback
android.service.textclassifier.ITextClassifierService$Stub$Proxy
@@ -7263,11 +7443,6 @@ android.service.wallpaper.WallpaperService$IWallpaperEngineWrapper
android.service.wallpaper.WallpaperService$IWallpaperServiceWrapper
android.service.wallpaper.WallpaperService$WallpaperCommand
android.service.wallpaper.WallpaperService
-android.service.watchdog.ExplicitHealthCheckService$PackageConfig$1
-android.service.watchdog.ExplicitHealthCheckService$PackageConfig
-android.service.watchdog.IExplicitHealthCheckService$Stub$Proxy
-android.service.watchdog.IExplicitHealthCheckService$Stub
-android.service.watchdog.IExplicitHealthCheckService
android.speech.RecognitionListener
android.speech.SpeechRecognizer
android.speech.tts.ITextToSpeechCallback$Stub
@@ -7341,7 +7516,6 @@ android.system.keystore2.KeyParameters$1
android.system.keystore2.KeyParameters
android.system.keystore2.OperationChallenge$1
android.system.keystore2.OperationChallenge
-android.system.suspend.internal.ISuspendControlServiceInternal$Stub$Proxy
android.system.suspend.internal.ISuspendControlServiceInternal$Stub
android.system.suspend.internal.ISuspendControlServiceInternal
android.system.suspend.internal.WakeLockInfo$1
@@ -7484,7 +7658,6 @@ android.telephony.CellIdentityCdma
android.telephony.CellIdentityGsm$1
android.telephony.CellIdentityGsm
android.telephony.CellIdentityLte$1
-android.telephony.CellIdentityLte
android.telephony.CellIdentityNr$1
android.telephony.CellIdentityNr
android.telephony.CellIdentityTdscdma$1
@@ -7512,7 +7685,6 @@ android.telephony.CellSignalStrengthCdma-IA
android.telephony.CellSignalStrengthCdma
android.telephony.CellSignalStrengthGsm$1
android.telephony.CellSignalStrengthGsm-IA
-android.telephony.CellSignalStrengthGsm
android.telephony.CellSignalStrengthLte$1
android.telephony.CellSignalStrengthLte-IA
android.telephony.CellSignalStrengthLte
@@ -7524,7 +7696,7 @@ android.telephony.CellSignalStrengthTdscdma-IA
android.telephony.CellSignalStrengthTdscdma
android.telephony.CellSignalStrengthWcdma$1
android.telephony.CellSignalStrengthWcdma-IA
-android.telephony.CellSignalStrengthWcdma
+android.telephony.CellularIdentifierDisclosure
android.telephony.ClientRequestStats$1
android.telephony.ClientRequestStats
android.telephony.ClosedSubscriberGroupInfo$1
@@ -7644,6 +7816,7 @@ android.telephony.RadioAccessFamily
android.telephony.RadioAccessSpecifier$1
android.telephony.RadioAccessSpecifier
android.telephony.Rlog
+android.telephony.SecurityAlgorithmUpdate
android.telephony.ServiceState$$ExternalSyntheticLambda0
android.telephony.ServiceState$1
android.telephony.ServiceState
@@ -7714,9 +7887,10 @@ android.telephony.TelephonyCallback$CallDisconnectCauseListener
android.telephony.TelephonyCallback$CallForwardingIndicatorListener
android.telephony.TelephonyCallback$CallStateListener
android.telephony.TelephonyCallback$CarrierNetworkListener
-android.telephony.TelephonyCallback$CarrierRoamingNtnModeListener
+android.telephony.TelephonyCallback$CarrierRoamingNtnListener
android.telephony.TelephonyCallback$CellInfoListener
android.telephony.TelephonyCallback$CellLocationListener
+android.telephony.TelephonyCallback$CellularIdentifierDisclosedListener
android.telephony.TelephonyCallback$DataActivationStateListener
android.telephony.TelephonyCallback$DataActivityListener
android.telephony.TelephonyCallback$DataConnectionStateListener
@@ -7744,6 +7918,7 @@ android.telephony.TelephonyCallback$PreciseCallStateListener
android.telephony.TelephonyCallback$PreciseDataConnectionStateListener
android.telephony.TelephonyCallback$RadioPowerStateListener
android.telephony.TelephonyCallback$RegistrationFailedListener
+android.telephony.TelephonyCallback$SecurityAlgorithmsListener
android.telephony.TelephonyCallback$ServiceStateListener
android.telephony.TelephonyCallback$SignalStrengthsListener
android.telephony.TelephonyCallback$SimultaneousCellularCallingSupportListener
@@ -7792,9 +7967,7 @@ android.telephony.TelephonyRegistryManager$$ExternalSyntheticLambda0
android.telephony.TelephonyRegistryManager$$ExternalSyntheticLambda1
android.telephony.TelephonyRegistryManager$$ExternalSyntheticLambda2
android.telephony.TelephonyRegistryManager$1$$ExternalSyntheticLambda0
-android.telephony.TelephonyRegistryManager$1
android.telephony.TelephonyRegistryManager$2
-android.telephony.TelephonyRegistryManager$3
android.telephony.TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda0
android.telephony.TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda1
android.telephony.TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda2
@@ -8076,6 +8249,7 @@ android.telephony.ims.stub.ImsRegistrationImplBase
android.telephony.ims.stub.ImsSmsImplBase
android.telephony.ims.stub.ImsUtImplBase$1
android.telephony.ims.stub.ImsUtImplBase
+android.telephony.satellite.NtnSignalStrength
android.telephony.satellite.SatelliteManager
android.text.AndroidBidi
android.text.AndroidCharacter
@@ -8089,7 +8263,6 @@ android.text.BidiFormatter
android.text.BoringLayout$Metrics
android.text.BoringLayout
android.text.CharSequenceCharacterIterator
-android.text.ClientFlags
android.text.ClipboardManager
android.text.DynamicLayout$Builder
android.text.DynamicLayout$ChangeWatcher
@@ -8174,7 +8347,6 @@ android.text.SpanSet
android.text.SpanWatcher
android.text.Spannable$Factory
android.text.Spannable
-android.text.SpannableString
android.text.SpannableStringBuilder
android.text.SpannableStringInternal
android.text.Spanned
@@ -8286,6 +8458,7 @@ android.text.style.LineHeightSpan
android.text.style.LocaleSpan
android.text.style.MetricAffectingSpan$Passthrough
android.text.style.MetricAffectingSpan
+android.text.style.NoWritingToolsSpan
android.text.style.ParagraphStyle
android.text.style.QuoteSpan
android.text.style.RelativeSizeSpan
@@ -8332,11 +8505,16 @@ android.timezone.TelephonyLookup
android.timezone.TelephonyNetwork
android.timezone.TelephonyNetworkFinder
android.timezone.TimeZoneFinder
+android.tracing.FeatureFlags
+android.tracing.FeatureFlagsImpl
android.tracing.Flags
android.tracing.perfetto.CreateIncrementalStateArgs
android.tracing.perfetto.CreateTlsStateArgs
android.tracing.perfetto.DataSource
+android.tracing.perfetto.DataSourceParams$Builder
+android.tracing.perfetto.DataSourceParams
android.tracing.perfetto.FlushCallbackArguments
+android.tracing.perfetto.InitArguments
android.tracing.perfetto.Producer
android.tracing.perfetto.StartCallbackArguments
android.tracing.perfetto.StopCallbackArguments
@@ -8454,7 +8632,6 @@ android.util.FeatureFlagUtils
android.util.FloatProperty
android.util.Half
android.util.IconDrawableFactory
-android.util.IndentingPrintWriter
android.util.IntArray
android.util.IntProperty
android.util.JsonReader$1
@@ -8619,6 +8796,8 @@ android.view.Choreographer$1
android.view.Choreographer$2
android.view.Choreographer$3
android.view.Choreographer$4
+android.view.Choreographer$BufferStuffingState$RecoveryAction
+android.view.Choreographer$BufferStuffingState
android.view.Choreographer$CallbackQueue
android.view.Choreographer$CallbackRecord
android.view.Choreographer$FrameCallback
@@ -8682,6 +8861,8 @@ android.view.FocusFinder-IA
android.view.FocusFinder
android.view.FrameMetrics
android.view.FrameMetricsObserver
+android.view.FrameRateCategoryRate$1
+android.view.FrameRateCategoryRate
android.view.FrameStats
android.view.GestureDetector$GestureHandler
android.view.GestureDetector$OnContextClickListener
@@ -8711,7 +8892,6 @@ android.view.IDisplayFoldListener$Stub
android.view.IDisplayFoldListener
android.view.IDisplayWindowInsetsController$Stub
android.view.IDisplayWindowInsetsController
-android.view.IDisplayWindowListener$Stub$Proxy
android.view.IDisplayWindowListener$Stub
android.view.IDisplayWindowListener
android.view.IDockedStackListener$Stub$Proxy
@@ -8754,7 +8934,6 @@ android.view.ISurfaceControlViewHostParent$Stub
android.view.ISurfaceControlViewHostParent
android.view.ISystemGestureExclusionListener$Stub
android.view.ISystemGestureExclusionListener
-android.view.IWallpaperVisibilityListener$Stub$Proxy
android.view.IWallpaperVisibilityListener$Stub
android.view.IWallpaperVisibilityListener
android.view.IWindow$Stub
@@ -8872,6 +9051,7 @@ android.view.LayoutInflater$Factory
android.view.LayoutInflater$FactoryMerger
android.view.LayoutInflater$Filter
android.view.LayoutInflater
+android.view.LetterboxScrollProcessor
android.view.MagnificationSpec$1
android.view.MagnificationSpec
android.view.Menu
@@ -8962,6 +9142,8 @@ android.view.SurfaceControl$TrustedPresentationCallback
android.view.SurfaceControl$TrustedPresentationThresholds
android.view.SurfaceControl-IA
android.view.SurfaceControl
+android.view.SurfaceControlActivePicture
+android.view.SurfaceControlActivePictureListener
android.view.SurfaceControlHdrLayerInfoListener
android.view.SurfaceControlRegistry$DefaultReporter
android.view.SurfaceControlRegistry$NoOpRegistry
@@ -9116,6 +9298,7 @@ android.view.ViewPropertyAnimator$NameValuesHolder
android.view.ViewPropertyAnimator$PropertyBundle
android.view.ViewPropertyAnimator-IA
android.view.ViewPropertyAnimator
+android.view.ViewProtoLogGroups
android.view.ViewRootImpl$$ExternalSyntheticLambda0
android.view.ViewRootImpl$$ExternalSyntheticLambda10
android.view.ViewRootImpl$$ExternalSyntheticLambda11
@@ -9126,7 +9309,11 @@ android.view.ViewRootImpl$$ExternalSyntheticLambda15
android.view.ViewRootImpl$$ExternalSyntheticLambda16
android.view.ViewRootImpl$$ExternalSyntheticLambda17
android.view.ViewRootImpl$$ExternalSyntheticLambda18
+android.view.ViewRootImpl$$ExternalSyntheticLambda19
android.view.ViewRootImpl$$ExternalSyntheticLambda1
+android.view.ViewRootImpl$$ExternalSyntheticLambda20
+android.view.ViewRootImpl$$ExternalSyntheticLambda21
+android.view.ViewRootImpl$$ExternalSyntheticLambda22
android.view.ViewRootImpl$$ExternalSyntheticLambda2
android.view.ViewRootImpl$$ExternalSyntheticLambda3
android.view.ViewRootImpl$$ExternalSyntheticLambda4
@@ -9252,6 +9439,7 @@ android.view.WindowManagerGlobal
android.view.WindowManagerPolicyConstants$PointerEventListener
android.view.WindowManagerPolicyConstants
android.view.WindowMetrics
+android.view.WindowRelayoutResult$1
android.view.WindowRelayoutResult
android.view.WindowlessWindowLayout
android.view.WindowlessWindowManager
@@ -9265,10 +9453,10 @@ android.view.accessibility.AccessibilityManager$$ExternalSyntheticLambda0
android.view.accessibility.AccessibilityManager$$ExternalSyntheticLambda1
android.view.accessibility.AccessibilityManager$$ExternalSyntheticLambda3
android.view.accessibility.AccessibilityManager$1$$ExternalSyntheticLambda0
-android.view.accessibility.AccessibilityManager$1
android.view.accessibility.AccessibilityManager$AccessibilityPolicy
android.view.accessibility.AccessibilityManager$AccessibilityServicesStateChangeListener
android.view.accessibility.AccessibilityManager$AccessibilityStateChangeListener
+android.view.accessibility.AccessibilityManager$HighContrastTextStateChangeListener
android.view.accessibility.AccessibilityManager$MyCallback
android.view.accessibility.AccessibilityManager$TouchExplorationStateChangeListener
android.view.accessibility.AccessibilityManager-IA
@@ -9308,7 +9496,6 @@ android.view.accessibility.IAccessibilityInteractionConnectionCallback
android.view.accessibility.IAccessibilityManager$Stub$Proxy
android.view.accessibility.IAccessibilityManager$Stub
android.view.accessibility.IAccessibilityManager
-android.view.accessibility.IAccessibilityManagerClient$Stub$Proxy
android.view.accessibility.IAccessibilityManagerClient$Stub
android.view.accessibility.IAccessibilityManagerClient
android.view.accessibility.WeakSparseArray$WeakReferenceWithId
@@ -9359,6 +9546,7 @@ android.view.autofill.AutofillManager$$ExternalSyntheticLambda1
android.view.autofill.AutofillManager$$ExternalSyntheticLambda2
android.view.autofill.AutofillManager$$ExternalSyntheticLambda3
android.view.autofill.AutofillManager$$ExternalSyntheticLambda4
+android.view.autofill.AutofillManager$AugmentedAutofillManagerClient$$ExternalSyntheticLambda1
android.view.autofill.AutofillManager$AugmentedAutofillManagerClient
android.view.autofill.AutofillManager$AutofillCallback
android.view.autofill.AutofillManager$AutofillClient
@@ -9521,6 +9709,7 @@ android.view.inputmethod.InputMethodManager$$ExternalSyntheticLambda2
android.view.inputmethod.InputMethodManager$$ExternalSyntheticLambda3
android.view.inputmethod.InputMethodManager$$ExternalSyntheticLambda4
android.view.inputmethod.InputMethodManager$$ExternalSyntheticLambda5
+android.view.inputmethod.InputMethodManager$$ExternalSyntheticLambda6
android.view.inputmethod.InputMethodManager$1
android.view.inputmethod.InputMethodManager$2
android.view.inputmethod.InputMethodManager$6
@@ -9686,6 +9875,7 @@ android.view.textservice.SpellCheckerSession$SpellCheckerSessionListenerImpl$Spe
android.view.textservice.SpellCheckerSession$SpellCheckerSessionListenerImpl
android.view.textservice.SpellCheckerSession$SpellCheckerSessionParams$Builder
android.view.textservice.SpellCheckerSession$SpellCheckerSessionParams
+android.view.textservice.SpellCheckerSession-IA
android.view.textservice.SpellCheckerSession
android.view.textservice.SpellCheckerSubtype$1
android.view.textservice.SpellCheckerSubtype
@@ -10030,11 +10220,12 @@ android.widget.RemoteViews$$ExternalSyntheticLambda1
android.widget.RemoteViews$$ExternalSyntheticLambda2
android.widget.RemoteViews$$ExternalSyntheticLambda4
android.widget.RemoteViews$$ExternalSyntheticLambda5
+android.widget.RemoteViews$$ExternalSyntheticLambda6
+android.widget.RemoteViews$$ExternalSyntheticLambda7
android.widget.RemoteViews$1
android.widget.RemoteViews$2
android.widget.RemoteViews$Action
android.widget.RemoteViews$ActionException
-android.widget.RemoteViews$ApplicationInfoCache$$ExternalSyntheticLambda0
android.widget.RemoteViews$ApplicationInfoCache
android.widget.RemoteViews$AsyncApplyTask
android.widget.RemoteViews$AttributeReflectionAction
@@ -10228,12 +10419,49 @@ android.window.ClientWindowFrames-IA
android.window.ClientWindowFrames
android.window.CompatOnBackInvokedCallback
android.window.ConfigurationHelper
+android.window.DesktopModeFlags$$ExternalSyntheticLambda0
+android.window.DesktopModeFlags$$ExternalSyntheticLambda10
+android.window.DesktopModeFlags$$ExternalSyntheticLambda11
+android.window.DesktopModeFlags$$ExternalSyntheticLambda12
+android.window.DesktopModeFlags$$ExternalSyntheticLambda13
+android.window.DesktopModeFlags$$ExternalSyntheticLambda14
+android.window.DesktopModeFlags$$ExternalSyntheticLambda15
+android.window.DesktopModeFlags$$ExternalSyntheticLambda16
+android.window.DesktopModeFlags$$ExternalSyntheticLambda17
+android.window.DesktopModeFlags$$ExternalSyntheticLambda18
+android.window.DesktopModeFlags$$ExternalSyntheticLambda19
+android.window.DesktopModeFlags$$ExternalSyntheticLambda1
+android.window.DesktopModeFlags$$ExternalSyntheticLambda20
+android.window.DesktopModeFlags$$ExternalSyntheticLambda21
+android.window.DesktopModeFlags$$ExternalSyntheticLambda22
+android.window.DesktopModeFlags$$ExternalSyntheticLambda23
+android.window.DesktopModeFlags$$ExternalSyntheticLambda24
+android.window.DesktopModeFlags$$ExternalSyntheticLambda25
+android.window.DesktopModeFlags$$ExternalSyntheticLambda26
+android.window.DesktopModeFlags$$ExternalSyntheticLambda27
+android.window.DesktopModeFlags$$ExternalSyntheticLambda28
+android.window.DesktopModeFlags$$ExternalSyntheticLambda29
+android.window.DesktopModeFlags$$ExternalSyntheticLambda2
+android.window.DesktopModeFlags$$ExternalSyntheticLambda30
+android.window.DesktopModeFlags$$ExternalSyntheticLambda31
+android.window.DesktopModeFlags$$ExternalSyntheticLambda32
+android.window.DesktopModeFlags$$ExternalSyntheticLambda3
+android.window.DesktopModeFlags$$ExternalSyntheticLambda4
+android.window.DesktopModeFlags$$ExternalSyntheticLambda5
+android.window.DesktopModeFlags$$ExternalSyntheticLambda6
+android.window.DesktopModeFlags$$ExternalSyntheticLambda7
+android.window.DesktopModeFlags$$ExternalSyntheticLambda8
+android.window.DesktopModeFlags$$ExternalSyntheticLambda9
+android.window.DesktopModeFlags$ToggleOverride
+android.window.DesktopModeFlags
android.window.DisplayAreaAppearedInfo$1
android.window.DisplayAreaAppearedInfo
android.window.DisplayAreaInfo$1
android.window.DisplayAreaInfo
android.window.DisplayAreaOrganizer$1
android.window.DisplayAreaOrganizer
+android.window.IBackAnimationHandoffHandler$Stub
+android.window.IBackAnimationHandoffHandler
android.window.IDisplayAreaOrganizer$Stub$Proxy
android.window.IDisplayAreaOrganizer$Stub
android.window.IDisplayAreaOrganizer
@@ -10318,12 +10546,14 @@ android.window.SurfaceSyncGroup$$ExternalSyntheticLambda3
android.window.SurfaceSyncGroup$$ExternalSyntheticLambda4
android.window.SurfaceSyncGroup$$ExternalSyntheticLambda5
android.window.SurfaceSyncGroup$$ExternalSyntheticLambda6
+android.window.SurfaceSyncGroup$$ExternalSyntheticLambda7
android.window.SurfaceSyncGroup$1
android.window.SurfaceSyncGroup$2
android.window.SurfaceSyncGroup$ISurfaceSyncGroupImpl
android.window.SurfaceSyncGroup$SurfaceViewFrameCallback
android.window.SurfaceSyncGroup-IA
android.window.SurfaceSyncGroup
+android.window.SystemOverrideOnBackInvokedCallback
android.window.TaskAppearedInfo$1
android.window.TaskAppearedInfo
android.window.TaskFpsCallback
@@ -10364,6 +10594,7 @@ android.window.WindowMetricsController
android.window.WindowOnBackInvokedDispatcher$$ExternalSyntheticLambda0
android.window.WindowOnBackInvokedDispatcher$$ExternalSyntheticLambda1
android.window.WindowOnBackInvokedDispatcher$$ExternalSyntheticLambda2
+android.window.WindowOnBackInvokedDispatcher$$ExternalSyntheticLambda3
android.window.WindowOnBackInvokedDispatcher$Checker
android.window.WindowOnBackInvokedDispatcher$OnBackInvokedCallbackWrapper$$ExternalSyntheticLambda0
android.window.WindowOnBackInvokedDispatcher$OnBackInvokedCallbackWrapper$$ExternalSyntheticLambda1
@@ -10580,6 +10811,7 @@ com.android.i18n.timezone.internal.ByteBufferIterator
com.android.i18n.timezone.internal.Memory
com.android.i18n.timezone.internal.MemoryMappedFile
com.android.i18n.timezone.internal.NioBufferIterator
+com.android.i18n.util.ATrace
com.android.i18n.util.Log
com.android.icu.charset.CharsetDecoderICU
com.android.icu.charset.CharsetEncoderICU
@@ -11095,7 +11327,6 @@ com.android.internal.appwidget.IAppWidgetHost
com.android.internal.appwidget.IAppWidgetService$Stub$Proxy
com.android.internal.appwidget.IAppWidgetService$Stub
com.android.internal.appwidget.IAppWidgetService
-com.android.internal.backup.IBackupTransport$Stub$Proxy
com.android.internal.backup.IBackupTransport$Stub
com.android.internal.backup.IBackupTransport
com.android.internal.colorextraction.ColorExtractor$GradientColors
@@ -11199,20 +11430,42 @@ com.android.internal.hidden_from_bootclasspath.android.app.appfunctions.flags.Fl
com.android.internal.hidden_from_bootclasspath.android.app.job.FeatureFlags
com.android.internal.hidden_from_bootclasspath.android.app.job.FeatureFlagsImpl
com.android.internal.hidden_from_bootclasspath.android.app.job.Flags
+com.android.internal.hidden_from_bootclasspath.android.companion.virtualdevice.flags.FeatureFlags
+com.android.internal.hidden_from_bootclasspath.android.companion.virtualdevice.flags.FeatureFlagsImpl
+com.android.internal.hidden_from_bootclasspath.android.companion.virtualdevice.flags.Flags
com.android.internal.hidden_from_bootclasspath.android.content.pm.FeatureFlags
com.android.internal.hidden_from_bootclasspath.android.content.pm.FeatureFlagsImpl
com.android.internal.hidden_from_bootclasspath.android.content.pm.Flags
+com.android.internal.hidden_from_bootclasspath.android.media.audio.FeatureFlags
+com.android.internal.hidden_from_bootclasspath.android.media.audio.FeatureFlagsImpl
+com.android.internal.hidden_from_bootclasspath.android.media.audio.Flags
+com.android.internal.hidden_from_bootclasspath.android.net.http.FeatureFlags
+com.android.internal.hidden_from_bootclasspath.android.net.http.FeatureFlagsImpl
+com.android.internal.hidden_from_bootclasspath.android.net.http.Flags
com.android.internal.hidden_from_bootclasspath.android.os.FeatureFlags
com.android.internal.hidden_from_bootclasspath.android.os.FeatureFlagsImpl
com.android.internal.hidden_from_bootclasspath.android.os.Flags
com.android.internal.hidden_from_bootclasspath.android.permission.flags.FeatureFlags
com.android.internal.hidden_from_bootclasspath.android.permission.flags.FeatureFlagsImpl
com.android.internal.hidden_from_bootclasspath.android.permission.flags.Flags
+com.android.internal.hidden_from_bootclasspath.android.provider.flags.FeatureFlags
+com.android.internal.hidden_from_bootclasspath.android.provider.flags.FeatureFlagsImpl
+com.android.internal.hidden_from_bootclasspath.android.provider.flags.Flags
+com.android.internal.hidden_from_bootclasspath.android.security.FeatureFlags
+com.android.internal.hidden_from_bootclasspath.android.security.FeatureFlagsImpl
+com.android.internal.hidden_from_bootclasspath.android.security.Flags
com.android.internal.hidden_from_bootclasspath.android.service.notification.FeatureFlags
com.android.internal.hidden_from_bootclasspath.android.service.notification.FeatureFlagsImpl
com.android.internal.hidden_from_bootclasspath.android.service.notification.Flags
+com.android.internal.hidden_from_bootclasspath.com.android.libcore.FeatureFlags
+com.android.internal.hidden_from_bootclasspath.com.android.libcore.FeatureFlagsImpl
com.android.internal.hidden_from_bootclasspath.com.android.libcore.Flags
+com.android.internal.hidden_from_bootclasspath.com.android.server.power.optimization.FeatureFlags
+com.android.internal.hidden_from_bootclasspath.com.android.server.power.optimization.FeatureFlagsImpl
com.android.internal.hidden_from_bootclasspath.com.android.server.power.optimization.Flags
+com.android.internal.hidden_from_bootclasspath.com.android.settingslib.flags.FeatureFlags
+com.android.internal.hidden_from_bootclasspath.com.android.settingslib.flags.FeatureFlagsImpl
+com.android.internal.hidden_from_bootclasspath.com.android.settingslib.flags.Flags
com.android.internal.hidden_from_bootclasspath.com.android.window.flags.FeatureFlags
com.android.internal.hidden_from_bootclasspath.com.android.window.flags.FeatureFlagsImpl
com.android.internal.hidden_from_bootclasspath.com.android.window.flags.Flags
@@ -11229,6 +11482,7 @@ com.android.internal.infra.AndroidFuture$$ExternalSyntheticLambda1
com.android.internal.infra.AndroidFuture$$ExternalSyntheticLambda3
com.android.internal.infra.AndroidFuture$1
com.android.internal.infra.AndroidFuture$2
+com.android.internal.infra.AndroidFuture
com.android.internal.infra.GlobalWhitelistState
com.android.internal.infra.IAndroidFuture$Stub$Proxy
com.android.internal.infra.IAndroidFuture$Stub
@@ -11236,6 +11490,7 @@ com.android.internal.infra.IAndroidFuture
com.android.internal.infra.PerUser
com.android.internal.infra.RemoteStream$1
com.android.internal.infra.RemoteStream
+com.android.internal.infra.ServiceConnector$Impl$CompletionAwareJob
com.android.internal.infra.ServiceConnector$Impl
com.android.internal.infra.ServiceConnector$Job
com.android.internal.infra.ServiceConnector$VoidJob
@@ -11265,7 +11520,6 @@ com.android.internal.inputmethod.IRemoteInputConnection$Stub
com.android.internal.inputmethod.IRemoteInputConnection
com.android.internal.inputmethod.ImeTracing
com.android.internal.inputmethod.ImeTracingClientImpl
-com.android.internal.inputmethod.ImeTracingPerfettoImpl
com.android.internal.inputmethod.ImeTracingServerImpl
com.android.internal.inputmethod.InputBindResult$1
com.android.internal.inputmethod.InputBindResult-IA
@@ -11353,6 +11607,7 @@ com.android.internal.os.AndroidPrintStream
com.android.internal.os.AppFuseMount$1
com.android.internal.os.AppFuseMount
com.android.internal.os.AppIdToPackageMap
+com.android.internal.os.ApplicationSharedMemory
com.android.internal.os.AtomicDirectory
com.android.internal.os.BackgroundThread
com.android.internal.os.BatteryStatsHistory$HistoryStepDetailsCalculator
@@ -11368,7 +11623,9 @@ com.android.internal.os.BinderCallsStats$CallStatKey
com.android.internal.os.BinderCallsStats$ExportedCallStat
com.android.internal.os.BinderCallsStats$Injector
com.android.internal.os.BinderCallsStats$OverflowBinder
+com.android.internal.os.BinderCallsStats$SettingsObserver
com.android.internal.os.BinderCallsStats$UidEntry
+com.android.internal.os.BinderCallsStats
com.android.internal.os.BinderDeathDispatcher$RecipientsInfo
com.android.internal.os.BinderDeathDispatcher-IA
com.android.internal.os.BinderDeathDispatcher
@@ -11391,6 +11648,8 @@ com.android.internal.os.CachedDeviceState$TimeInStateStopwatch
com.android.internal.os.CachedDeviceState
com.android.internal.os.ClassLoaderFactory
com.android.internal.os.Clock
+com.android.internal.os.DebugStore$DebugStoreNative
+com.android.internal.os.DebugStore$DebugStoreNativeImpl
com.android.internal.os.DebugStore
com.android.internal.os.FeatureFlags
com.android.internal.os.FeatureFlagsImpl
@@ -11447,7 +11706,6 @@ com.android.internal.os.KernelSingleUidTimeReader
com.android.internal.os.LoggingPrintStream$1
com.android.internal.os.LoggingPrintStream
com.android.internal.os.LongArrayMultiStateCounter$1
-com.android.internal.os.LongArrayMultiStateCounter$LongArrayContainer
com.android.internal.os.LongArrayMultiStateCounter
com.android.internal.os.LongMultiStateCounter$1
com.android.internal.os.LongMultiStateCounter
@@ -11499,6 +11757,7 @@ com.android.internal.os.ZygoteServer$$ExternalSyntheticLambda0
com.android.internal.os.ZygoteServer$UsapPoolRefillAction
com.android.internal.os.ZygoteServer
com.android.internal.os.logging.MetricsLoggerWrapper
+com.android.internal.pm.RoSystemFeatures
com.android.internal.pm.parsing.PackageParser2$Callback
com.android.internal.pm.parsing.PackageParserException
com.android.internal.pm.pkg.component.flags.FeatureFlags
@@ -11521,6 +11780,8 @@ com.android.internal.policy.DecorView
com.android.internal.policy.GestureNavigationSettingsObserver$$ExternalSyntheticLambda0
com.android.internal.policy.GestureNavigationSettingsObserver$1
com.android.internal.policy.GestureNavigationSettingsObserver
+com.android.internal.policy.IDeviceLockedStateListener$Stub
+com.android.internal.policy.IDeviceLockedStateListener
com.android.internal.policy.IKeyguardDismissCallback$Stub$Proxy
com.android.internal.policy.IKeyguardDismissCallback$Stub
com.android.internal.policy.IKeyguardDismissCallback
@@ -11564,13 +11825,28 @@ com.android.internal.policy.TransitionAnimation$$ExternalSyntheticLambda1
com.android.internal.policy.TransitionAnimation
com.android.internal.policy.WearGestureInterceptionDetector
com.android.internal.power.ModemPowerProfile
+com.android.internal.protolog.IProtoLogClient$Stub
+com.android.internal.protolog.IProtoLogClient
+com.android.internal.protolog.IProtoLogConfigurationService
+com.android.internal.protolog.PerfettoProtoLogImpl$$ExternalSyntheticLambda4
+com.android.internal.protolog.PerfettoProtoLogImpl$$ExternalSyntheticLambda5
+com.android.internal.protolog.PerfettoProtoLogImpl$$ExternalSyntheticLambda6
+com.android.internal.protolog.PerfettoProtoLogImpl
+com.android.internal.protolog.ProtoLog
+com.android.internal.protolog.ProtoLogCacheUpdater
+com.android.internal.protolog.ProtoLogDataSource$Instance$TracingInstanceStartCallback
+com.android.internal.protolog.ProtoLogDataSource$Instance$TracingInstanceStopCallback
+com.android.internal.protolog.ProtoLogDataSource
com.android.internal.protolog.ProtoLogGroup
com.android.internal.protolog.ProtoLogImpl
com.android.internal.protolog.ProtoLogViewerConfigReader
+com.android.internal.protolog.UnprocessedPerfettoProtoLogImpl$$ExternalSyntheticLambda0
+com.android.internal.protolog.UnprocessedPerfettoProtoLogImpl
com.android.internal.protolog.common.BitmaskConversionException
+com.android.internal.protolog.common.IProtoLog
com.android.internal.protolog.common.IProtoLogGroup
com.android.internal.protolog.common.LogDataType
-com.android.internal.ravenwood.RavenwoodEnvironment$Workaround
+com.android.internal.protolog.common.LogLevel
com.android.internal.ravenwood.RavenwoodEnvironment
com.android.internal.security.VerityUtils
com.android.internal.statusbar.IAddTileResultCallback
@@ -11789,7 +12065,6 @@ com.android.internal.telephony.IMms
com.android.internal.telephony.INumberVerificationCallback$Stub$Proxy
com.android.internal.telephony.INumberVerificationCallback$Stub
com.android.internal.telephony.INumberVerificationCallback
-com.android.internal.telephony.IOnSubscriptionsChangedListener$Stub$Proxy
com.android.internal.telephony.IOnSubscriptionsChangedListener$Stub
com.android.internal.telephony.IOnSubscriptionsChangedListener
com.android.internal.telephony.IOns$Stub$Proxy
@@ -11895,7 +12170,6 @@ com.android.internal.telephony.NetworkFactoryLegacyImpl$1
com.android.internal.telephony.NetworkFactoryLegacyImpl$NetworkRequestInfo
com.android.internal.telephony.NetworkFactoryLegacyImpl
com.android.internal.telephony.NetworkFactoryShim
-com.android.internal.telephony.NetworkRegistrationManager$NetworkRegStateCallback
com.android.internal.telephony.NetworkRegistrationManager$NetworkServiceConnection
com.android.internal.telephony.NetworkRegistrationManager$RegManagerDeathRecipient
com.android.internal.telephony.NetworkRegistrationManager
@@ -11911,11 +12185,15 @@ com.android.internal.telephony.NetworkScanRequestTracker
com.android.internal.telephony.NetworkScanResult$1
com.android.internal.telephony.NetworkScanResult
com.android.internal.telephony.NetworkTypeController$1
+com.android.internal.telephony.NetworkTypeController$3
+com.android.internal.telephony.NetworkTypeController$4
com.android.internal.telephony.NetworkTypeController$DefaultState
com.android.internal.telephony.NetworkTypeController$IdleState
com.android.internal.telephony.NetworkTypeController$LegacyState
com.android.internal.telephony.NetworkTypeController$LteConnectedState
+com.android.internal.telephony.NetworkTypeController$NrConnectedAdvancedState
com.android.internal.telephony.NetworkTypeController$NrConnectedState
+com.android.internal.telephony.NetworkTypeController$NrIdleState
com.android.internal.telephony.NetworkTypeController$OverrideTimerRule
com.android.internal.telephony.NetworkTypeController
com.android.internal.telephony.NitzData
@@ -11977,7 +12255,6 @@ com.android.internal.telephony.PhoneSubInfoController$$ExternalSyntheticLambda8
com.android.internal.telephony.PhoneSubInfoController$$ExternalSyntheticLambda9
com.android.internal.telephony.PhoneSubInfoController$CallPhoneMethodHelper
com.android.internal.telephony.PhoneSubInfoController$PermissionCheckHelper
-com.android.internal.telephony.PhoneSubInfoController
com.android.internal.telephony.ProxyController$1
com.android.internal.telephony.ProxyController
com.android.internal.telephony.RIL$RadioProxyDeathRecipient
@@ -12266,7 +12543,6 @@ com.android.internal.telephony.d2d.TransportProtocol
com.android.internal.telephony.data.DataCallback
com.android.internal.telephony.data.DataNetworkController$DataNetworkControllerCallback
com.android.internal.telephony.data.DataSettingsManager$DataSettingsManagerCallback
-com.android.internal.telephony.data.TelephonyNetworkFactory
com.android.internal.telephony.emergency.EmergencyNumberTracker$1
com.android.internal.telephony.emergency.EmergencyNumberTracker
com.android.internal.telephony.euicc.EuiccCardController$10
@@ -12472,6 +12748,7 @@ com.android.internal.telephony.ims.ImsResolver$5
com.android.internal.telephony.ims.ImsResolver$6
com.android.internal.telephony.ims.ImsResolver$7
com.android.internal.telephony.ims.ImsResolver$8
+com.android.internal.telephony.ims.ImsResolver$ActivityManagerProxy
com.android.internal.telephony.ims.ImsResolver$ImsDynamicQueryManagerFactory
com.android.internal.telephony.ims.ImsResolver$ImsServiceControllerFactory
com.android.internal.telephony.ims.ImsResolver$ImsServiceInfo
@@ -12532,6 +12809,7 @@ com.android.internal.telephony.imsphone.ImsPhoneCallTracker$$ExternalSyntheticLa
com.android.internal.telephony.imsphone.ImsPhoneCallTracker$$ExternalSyntheticLambda2
com.android.internal.telephony.imsphone.ImsPhoneCallTracker$$ExternalSyntheticLambda3
com.android.internal.telephony.imsphone.ImsPhoneCallTracker$10
+com.android.internal.telephony.imsphone.ImsPhoneCallTracker$11
com.android.internal.telephony.imsphone.ImsPhoneCallTracker$12
com.android.internal.telephony.imsphone.ImsPhoneCallTracker$1
com.android.internal.telephony.imsphone.ImsPhoneCallTracker$2
@@ -12549,7 +12827,6 @@ com.android.internal.telephony.imsphone.ImsPhoneCallTracker$HoldSwapState
com.android.internal.telephony.imsphone.ImsPhoneCallTracker$MmTelFeatureListener
com.android.internal.telephony.imsphone.ImsPhoneCallTracker$PhoneStateListener
com.android.internal.telephony.imsphone.ImsPhoneCallTracker$SharedPreferenceProxy
-com.android.internal.telephony.imsphone.ImsPhoneCallTracker$VtDataUsageProvider
com.android.internal.telephony.imsphone.ImsPhoneCallTracker
com.android.internal.telephony.imsphone.ImsPhoneCommandInterface
com.android.internal.telephony.imsphone.ImsPhoneConnection$$ExternalSyntheticLambda0
@@ -13086,7 +13363,6 @@ com.android.internal.util.ExponentiallyBucketedHistogram
com.android.internal.util.FastMath
com.android.internal.util.FastPrintWriter$DummyWriter
com.android.internal.util.FastPrintWriter-IA
-com.android.internal.util.FastPrintWriter
com.android.internal.util.FastXmlSerializer
com.android.internal.util.FileRotator$FileInfo
com.android.internal.util.FileRotator$Reader
@@ -13107,7 +13383,6 @@ com.android.internal.util.HeavyHitterSketch
com.android.internal.util.HexDump
com.android.internal.util.IState
com.android.internal.util.ImageUtils
-com.android.internal.util.IndentingPrintWriter
com.android.internal.util.IntPair
com.android.internal.util.JournaledFile
com.android.internal.util.LatencyTracker$$ExternalSyntheticLambda0
@@ -13358,6 +13633,9 @@ com.android.internal.widget.floatingtoolbar.FloatingToolbar$$ExternalSyntheticLa
com.android.internal.widget.floatingtoolbar.FloatingToolbar$$ExternalSyntheticLambda1
com.android.internal.widget.floatingtoolbar.FloatingToolbar
com.android.internal.widget.floatingtoolbar.FloatingToolbarPopup
+com.android.libcore.readonly.FeatureFlags
+com.android.libcore.readonly.FeatureFlagsImpl
+com.android.libcore.readonly.Flags
com.android.media.flags.FeatureFlags
com.android.media.flags.FeatureFlagsImpl
com.android.media.flags.Flags
@@ -13381,6 +13659,8 @@ com.android.net.module.util.NetworkCapabilitiesUtils
com.android.net.module.util.NetworkIdentityUtils
com.android.net.module.util.NetworkStackConstants
com.android.net.module.util.ProxyUtils
+com.android.nfc.x.android.nfc.FeatureFlags
+com.android.nfc.x.android.nfc.FeatureFlagsImpl
com.android.nfc.x.android.nfc.Flags
com.android.phone.ecc.nano.CodedInputByteBufferNano
com.android.phone.ecc.nano.CodedOutputByteBufferNano$OutOfSpaceException
@@ -13442,6 +13722,9 @@ com.android.server.criticalevents.nano.CriticalEventProto$JavaCrash
com.android.server.criticalevents.nano.CriticalEventProto$NativeCrash
com.android.server.criticalevents.nano.CriticalEventProto$SystemServerStarted
com.android.server.criticalevents.nano.CriticalEventProto$Watchdog
+com.android.server.display.feature.flags.FeatureFlags
+com.android.server.display.feature.flags.FeatureFlagsImpl
+com.android.server.display.feature.flags.Flags
com.android.server.job.JobSchedulerInternal$JobStorePersistStats
com.android.server.net.BaseNetdEventCallback
com.android.server.net.BaseNetworkObserver
@@ -14112,6 +14395,7 @@ org.ccil.cowan.tagsoup.jaxp.SAXParserImpl
[Landroid.animation.Keyframe$ObjectKeyframe;
[Landroid.animation.Keyframe;
[Landroid.animation.PropertyValuesHolder;
+[Landroid.app.Activity;
[Landroid.app.AppOpInfo;
[Landroid.app.BackStackState;
[Landroid.app.FragmentState;
@@ -14366,6 +14650,7 @@ org.ccil.cowan.tagsoup.jaxp.SAXParserImpl
[Landroid.icu.util.ULocale;
[Landroid.icu.util.UResourceBundle$RootType;
[Landroid.icu.util.UniversalTimeScale$TimeScaleData;
+[Landroid.internal.aconfig.storage.FileType;
[Landroid.media.AudioAttributes;
[Landroid.media.AudioDeviceInfo;
[Landroid.media.AudioGain;
@@ -14387,6 +14672,13 @@ org.ccil.cowan.tagsoup.jaxp.SAXParserImpl
[Landroid.net.NetworkKey;
[Landroid.net.Uri;
[Landroid.net.rtp.AudioCodec;
+[Landroid.nfc.NdefMessage;
+[Landroid.nfc.NdefRecord;
+[Landroid.nfc.NfcAntennaInfo;
+[Landroid.nfc.Tag;
+[Landroid.nfc.TechListParcel;
+[Landroid.nfc.WlcListenerDeviceInfo;
+[Landroid.nfc.cardemulation.PollingFrame;
[Landroid.os.AsyncTask$Status;
[Landroid.os.BatteryConsumer$Key;
[Landroid.os.BatteryStats$BitDescription;
@@ -14520,6 +14812,8 @@ org.ccil.cowan.tagsoup.jaxp.SAXParserImpl
[Landroid.widget.SpellChecker$SpellParser;
[Landroid.widget.TextView$BufferType;
[Landroid.widget.TextView$ChangeWatcher;
+[Landroid.window.DesktopModeFlags$ToggleOverride;
+[Landroid.window.DesktopModeFlags;
[Landroid.window.TransitionFilter$Requirement;
[Lcom.android.framework.protobuf.GeneratedMessageLite$MethodToInvoke;
[Lcom.android.framework.protobuf.MessageInfoFactory;
@@ -14539,6 +14833,8 @@ org.ccil.cowan.tagsoup.jaxp.SAXParserImpl
[Lcom.android.internal.os.ZygoteServer$UsapPoolRefillAction;
[Lcom.android.internal.policy.PhoneWindow$PanelFeatureState;
[Lcom.android.internal.protolog.ProtoLogGroup;
+[Lcom.android.internal.protolog.common.IProtoLogGroup;
+[Lcom.android.internal.protolog.common.LogLevel;
[Lcom.android.internal.statusbar.LetterboxDetails;
[Lcom.android.internal.statusbar.NotificationVisibility$NotificationLocation;
[Lcom.android.internal.telephony.Call$SrvccState;
@@ -14599,6 +14895,7 @@ org.ccil.cowan.tagsoup.jaxp.SAXParserImpl
[Lcom.android.internal.telephony.uicc.UsimServiceTable$UsimService;
[Lcom.android.internal.util.StateMachine$SmHandler$StateInfo;
[Lcom.android.internal.view.AppearanceRegion;
+[Lcom.android.internal.widget.LockPatternView$Cell;
[Lgov.nist.javax.sip.DialogTimeoutEvent$Reason;
[Ljavax.microedition.khronos.egl.EGLConfig;
[Ljavax.sip.DialogState;
diff --git a/cmds/screencap/Android.bp b/cmds/screencap/Android.bp
index 16026eca2980..9f350b1d6054 100644
--- a/cmds/screencap/Android.bp
+++ b/cmds/screencap/Android.bp
@@ -7,25 +7,66 @@ package {
default_applicable_licenses: ["frameworks_base_license"],
}
-cc_binary {
- name: "screencap",
+cc_defaults {
+ name: "screencap_defaults",
- srcs: ["screencap.cpp"],
+ cflags: [
+ "-Wall",
+ "-Werror",
+ "-Wunreachable-code",
+ "-Wunused",
+ ],
shared_libs: [
- "libcutils",
- "libutils",
"libbinder",
- "libjnigraphics",
+ "libcutils",
+ "libgui",
"libhwui",
+ "libjnigraphics",
"libui",
- "libgui",
+ "libutils",
],
+}
- cflags: [
- "-Wall",
- "-Werror",
- "-Wunused",
- "-Wunreachable-code",
+cc_library {
+ name: "libscreencap",
+
+ defaults: [
+ "screencap_defaults",
+ ],
+
+ srcs: ["screencap_utils.cpp"],
+}
+
+cc_binary {
+ name: "screencap",
+
+ defaults: [
+ "screencap_defaults",
+ ],
+
+ srcs: ["screencap.cpp"],
+
+ static_libs: [
+ "libscreencap",
+ ],
+}
+
+cc_test {
+ name: "libscreencap_test",
+
+ defaults: [
+ "screencap_defaults",
+ ],
+
+ test_suites: ["device-tests"],
+
+ srcs: [
+ "tests/screencap_test.cpp",
+ ],
+
+ static_libs: [
+ "libgmock",
+ "libscreencap",
],
}
diff --git a/cmds/screencap/TEST_MAPPING b/cmds/screencap/TEST_MAPPING
new file mode 100644
index 000000000000..05c598e1e9cc
--- /dev/null
+++ b/cmds/screencap/TEST_MAPPING
@@ -0,0 +1,12 @@
+{
+ "presubmit": [
+ {
+ "name": "libscreencap_test"
+ }
+ ],
+ "hwasan-presubmit": [
+ {
+ "name": "libscreencap_test"
+ }
+ ]
+} \ No newline at end of file
diff --git a/cmds/screencap/screencap.cpp b/cmds/screencap/screencap.cpp
index d563ad3fd3db..a432819e2eaf 100644
--- a/cmds/screencap/screencap.cpp
+++ b/cmds/screencap/screencap.cpp
@@ -37,10 +37,13 @@
#include <ui/GraphicTypes.h>
#include <ui/PixelFormat.h>
+#include "screencap_utils.h"
+#include "utils/Errors.h"
+
using namespace android;
-#define COLORSPACE_UNKNOWN 0
-#define COLORSPACE_SRGB 1
+#define COLORSPACE_UNKNOWN 0
+#define COLORSPACE_SRGB 1
#define COLORSPACE_DISPLAY_P3 2
void usage(const char* pname, ftl::Optional<DisplayId> displayIdOpt) {
@@ -59,13 +62,13 @@ If FILENAME is not given, the results will be printed to stdout.
)",
pname,
displayIdOpt
- .transform([](DisplayId id) {
- return std::string(ftl::Concat(
- " (If the id is not given, it defaults to ", id.value,')'
- ).str());
- })
- .value_or(std::string())
- .c_str());
+ .transform([](DisplayId id) {
+ return std::string(ftl::Concat(" (If the id is not given, it defaults to ",
+ id.value, ')')
+ .str());
+ })
+ .value_or(std::string())
+ .c_str());
}
// For options that only exist in long-form. Anything in the
@@ -84,8 +87,7 @@ static const struct option LONG_OPTIONS[] = {{"png", no_argument, nullptr, 'p'},
LongOpts::HintForSeamless},
{0, 0, 0, 0}};
-static int32_t flinger2bitmapFormat(PixelFormat f)
-{
+static int32_t flinger2bitmapFormat(PixelFormat f) {
switch (f) {
case PIXEL_FORMAT_RGB_565:
return ANDROID_BITMAP_FORMAT_RGB_565;
@@ -94,8 +96,7 @@ static int32_t flinger2bitmapFormat(PixelFormat f)
}
}
-static uint32_t dataSpaceToInt(ui::Dataspace d)
-{
+static uint32_t dataSpaceToInt(ui::Dataspace d) {
switch (d) {
case ui::Dataspace::V0_SRGB:
return COLORSPACE_SRGB;
@@ -109,25 +110,20 @@ static uint32_t dataSpaceToInt(ui::Dataspace d)
static status_t notifyMediaScanner(const char* fileName) {
std::string filePath("file://");
filePath.append(fileName);
- char *cmd[] = {
- (char*) "am",
- (char*) "broadcast",
- (char*) "-a",
- (char*) "android.intent.action.MEDIA_SCANNER_SCAN_FILE",
- (char*) "-d",
- &filePath[0],
- nullptr
- };
+ char* cmd[] = {(char*)"am", (char*)"broadcast",
+ (char*)"-a", (char*)"android.intent.action.MEDIA_SCANNER_SCAN_FILE",
+ (char*)"-d", &filePath[0],
+ nullptr};
int status;
int pid = fork();
- if (pid < 0){
+ if (pid < 0) {
fprintf(stderr, "Unable to fork in order to send intent for media scanner.\n");
return UNKNOWN_ERROR;
}
- if (pid == 0){
+ if (pid == 0) {
int fd = open("/dev/null", O_WRONLY);
- if (fd < 0){
+ if (fd < 0) {
fprintf(stderr, "Unable to open /dev/null for media scanner stdout redirection.\n");
exit(1);
}
@@ -145,24 +141,6 @@ static status_t notifyMediaScanner(const char* fileName) {
return NO_ERROR;
}
-status_t capture(const DisplayId displayId,
- const gui::CaptureArgs& captureArgs,
- ScreenCaptureResults& outResult) {
- sp<SyncScreenCaptureListener> captureListener = new SyncScreenCaptureListener();
- ScreenshotClient::captureDisplay(displayId, captureArgs, captureListener);
-
- ScreenCaptureResults captureResults = captureListener->waitForResults();
- if (!captureResults.fenceResult.ok()) {
- fprintf(stderr, "Failed to take screenshot. Status: %d\n",
- fenceStatus(captureResults.fenceResult));
- return 1;
- }
-
- outResult = captureResults;
-
- return 0;
-}
-
status_t saveImage(const char* fn, std::optional<AndroidBitmapCompressFormat> format,
const ScreenCaptureResults& captureResults) {
void* base = nullptr;
@@ -231,31 +209,33 @@ status_t saveImage(const char* fn, std::optional<AndroidBitmapCompressFormat> fo
info.height = buffer->getHeight();
info.stride = buffer->getStride() * bytesPerPixel(buffer->getPixelFormat());
- int result;
+ int bitmapResult;
if (gainmapBase) {
- result = ABitmap_compressWithGainmap(&info, static_cast<ADataSpace>(dataspace), base,
- gainmapBase, captureResults.hdrSdrRatio, *format,
- 100, &fd,
- [](void* fdPtr, const void* data,
- size_t size) -> bool {
- int bytesWritten =
- write(*static_cast<int*>(fdPtr), data,
- size);
- return bytesWritten == size;
- });
+ bitmapResult =
+ ABitmap_compressWithGainmap(&info, static_cast<ADataSpace>(dataspace), base,
+ gainmapBase, captureResults.hdrSdrRatio, *format,
+ 100, &fd,
+ [](void* fdPtr, const void* data,
+ size_t size) -> bool {
+ int bytesWritten =
+ write(*static_cast<int*>(fdPtr), data,
+ size);
+ return bytesWritten == size;
+ });
} else {
- result = AndroidBitmap_compress(&info, static_cast<int32_t>(dataspace), base, *format,
- 100, &fd,
- [](void* fdPtr, const void* data, size_t size) -> bool {
- int bytesWritten = write(*static_cast<int*>(fdPtr),
- data, size);
- return bytesWritten == size;
- });
+ bitmapResult =
+ AndroidBitmap_compress(&info, static_cast<int32_t>(dataspace), base, *format,
+ 100, &fd,
+ [](void* fdPtr, const void* data, size_t size) -> bool {
+ int bytesWritten =
+ write(*static_cast<int*>(fdPtr), data, size);
+ return bytesWritten == size;
+ });
}
- if (result != ANDROID_BITMAP_RESULT_SUCCESS) {
- fprintf(stderr, "Failed to compress (error code: %d)\n", result);
+ if (bitmapResult != ANDROID_BITMAP_RESULT_SUCCESS) {
+ fprintf(stderr, "Failed to compress (error code: %d)\n", bitmapResult);
}
if (fn != NULL) {
@@ -273,9 +253,9 @@ status_t saveImage(const char* fn, std::optional<AndroidBitmapCompressFormat> fo
write(fd, &f, 4);
write(fd, &c, 4);
size_t Bpp = bytesPerPixel(f);
- for (size_t y=0 ; y<h ; y++) {
- write(fd, base, w*Bpp);
- base = (void *)((char *)base + s*Bpp);
+ for (size_t y = 0; y < h; y++) {
+ write(fd, base, w * Bpp);
+ base = (void*)((char*)base + s * Bpp);
}
}
close(fd);
@@ -291,10 +271,9 @@ status_t saveImage(const char* fn, std::optional<AndroidBitmapCompressFormat> fo
return 0;
}
-int main(int argc, char** argv)
-{
+int main(int argc, char** argv) {
const std::vector<PhysicalDisplayId> physicalDisplays =
- SurfaceComposerClient::getPhysicalDisplayIds();
+ SurfaceComposerClient::getPhysicalDisplayIds();
if (physicalDisplays.empty()) {
fprintf(stderr, "Failed to get ID for any displays.\n");
@@ -367,9 +346,9 @@ int main(int argc, char** argv)
std::string suffix;
if (argc == 1) {
- std::string_view filename = { argv[0] };
+ std::string_view filename = {argv[0]};
if (filename.ends_with(".png")) {
- baseName = filename.substr(0, filename.size()-4);
+ baseName = filename.substr(0, filename.size() - 4);
suffix = ".png";
png = true;
} else if (filename.ends_with(".jpeg")) {
@@ -427,15 +406,12 @@ int main(int argc, char** argv)
std::vector<ScreenCaptureResults> results;
const size_t numDisplays = displaysToCapture.size();
- for (int i=0; i<numDisplays; i++) {
- ScreenCaptureResults result;
-
+ for (int i = 0; i < numDisplays; i++) {
// 1. Capture the screen
- if (const status_t captureStatus =
- capture(displaysToCapture[i], captureArgs, result) != 0) {
-
- fprintf(stderr, "Capturing failed.\n");
- return captureStatus;
+ auto captureResult = screencap::capture(displaysToCapture[i], captureArgs);
+ if (!captureResult.ok()) {
+ fprintf(stderr, "%sCapturing failed.\n", captureResult.error().message().c_str());
+ return 1;
}
// 2. Save the capture result as an image.
@@ -453,7 +429,7 @@ int main(int argc, char** argv)
if (!filename.empty()) {
fn = filename.c_str();
}
- if (const status_t saveImageStatus = saveImage(fn, format, result) != 0) {
+ if (const status_t saveImageStatus = saveImage(fn, format, captureResult.value()) != 0) {
fprintf(stderr, "Saving image failed.\n");
return saveImageStatus;
}
diff --git a/cmds/screencap/screencap_utils.cpp b/cmds/screencap/screencap_utils.cpp
new file mode 100644
index 000000000000..03ade73d0e30
--- /dev/null
+++ b/cmds/screencap/screencap_utils.cpp
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "screencap_utils.h"
+
+#include "gui/SyncScreenCaptureListener.h"
+
+namespace android::screencap {
+
+base::Result<gui::ScreenCaptureResults> capture(const DisplayId displayId,
+ const gui::CaptureArgs& captureArgs) {
+ sp<SyncScreenCaptureListener> captureListener = new SyncScreenCaptureListener();
+ auto captureDisplayStatus =
+ ScreenshotClient::captureDisplay(displayId, captureArgs, captureListener);
+
+ gui::ScreenCaptureResults captureResults = captureListener->waitForResults();
+ if (!captureResults.fenceResult.ok()) {
+ status_t captureStatus = fenceStatus(captureResults.fenceResult);
+ std::stringstream errorMsg;
+ errorMsg << "Failed to take take screenshot. ";
+ if (captureStatus == NAME_NOT_FOUND) {
+ errorMsg << "Display Id '" << displayId.value << "' is not valid.\n";
+ }
+ return base::ResultError(errorMsg.str(), captureStatus);
+ }
+
+ return captureResults;
+}
+
+} // namespace android::screencap \ No newline at end of file
diff --git a/cmds/screencap/screencap_utils.h b/cmds/screencap/screencap_utils.h
new file mode 100644
index 000000000000..6580e3fa5ff1
--- /dev/null
+++ b/cmds/screencap/screencap_utils.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <android-base/result.h>
+#include <android/gui/DisplayCaptureArgs.h>
+
+#include "gui/ScreenCaptureResults.h"
+#include "ui/DisplayId.h"
+
+#pragma once
+
+namespace android::screencap {
+base::Result<gui::ScreenCaptureResults> capture(const DisplayId displayId,
+ const gui::CaptureArgs& captureArgs);
+} // namespace android::screencap
diff --git a/cmds/screencap/tests/screencap_test.cpp b/cmds/screencap/tests/screencap_test.cpp
new file mode 100644
index 000000000000..b7bfca9ada65
--- /dev/null
+++ b/cmds/screencap/tests/screencap_test.cpp
@@ -0,0 +1,68 @@
+// Copyright (C) 2025 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <binder/ProcessState.h>
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+#include <gui/SurfaceComposerClient.h>
+
+#include "android/gui/CaptureArgs.h"
+#include "gmock/gmock.h"
+#include "gui/ScreenCaptureResults.h"
+#include "screencap_utils.h"
+#include "ui/DisplayId.h"
+
+using ::android::DisplayId;
+using ::android::OK;
+using ::android::PhysicalDisplayId;
+using ::android::ProcessState;
+using ::android::SurfaceComposerClient;
+using ::android::gui::CaptureArgs;
+using ::android::gui::ScreenCaptureResults;
+using ::testing::AllOf;
+using ::testing::HasSubstr;
+
+class ScreenCapTest : public ::testing::Test {
+protected:
+ static void SetUpTestSuite() {
+ // These lines are copied from screencap.cpp. They are necessary to call binder.
+ ProcessState::self()->setThreadPoolMaxThreadCount(0);
+ ProcessState::self()->startThreadPool();
+ }
+};
+
+TEST_F(ScreenCapTest, Capture_InvalidDisplayNumber) {
+ DisplayId display;
+ display.value = -1;
+
+ CaptureArgs args;
+ auto result = ::android::screencap::capture(display, args);
+ EXPECT_FALSE(result.ok());
+ EXPECT_THAT(result.error().message(),
+ AllOf(HasSubstr("Display Id"), HasSubstr("is not valid.")));
+}
+
+TEST_F(ScreenCapTest, Capture_SuccessWithPhysicalDisplay) {
+ const std::vector<PhysicalDisplayId> physicalDisplays =
+ SurfaceComposerClient::getPhysicalDisplayIds();
+
+ ASSERT_FALSE(physicalDisplays.empty());
+ DisplayId display;
+ display.value = physicalDisplays.front().value;
+
+ CaptureArgs args;
+ auto result = ::android::screencap::capture(display, args);
+ EXPECT_TRUE(result.ok());
+ // TODO consider verifying actual captured image.
+} \ No newline at end of file
diff --git a/config/preloaded-classes b/config/preloaded-classes
index bdd95f8e67ae..70a94a0895ab 100644
--- a/config/preloaded-classes
+++ b/config/preloaded-classes
@@ -1,5 +1,5 @@
#
-# Copyright (C) 2017 The Android Open Source Project
+# Copyright (C) 2025 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -93,6 +93,7 @@ android.aconfig.nano.Aconfig$flag_values
android.aconfig.nano.Aconfig$parsed_flag
android.aconfig.nano.Aconfig$parsed_flags
android.aconfig.nano.Aconfig$tracepoint
+android.adpf.Flags
android.animation.AnimationHandler$$ExternalSyntheticLambda0
android.animation.AnimationHandler$1
android.animation.AnimationHandler$2
@@ -231,7 +232,6 @@ android.app.ActivityManager$PendingIntentInfo
android.app.ActivityManager$ProcessErrorStateInfo$1
android.app.ActivityManager$ProcessErrorStateInfo
android.app.ActivityManager$RecentTaskInfo$1
-android.app.ActivityManager$RecentTaskInfo$PersistedTaskSnapshotData
android.app.ActivityManager$RecentTaskInfo
android.app.ActivityManager$RunningAppProcessInfo$1
android.app.ActivityManager$RunningAppProcessInfo
@@ -269,6 +269,7 @@ android.app.ActivityThread$1
android.app.ActivityThread$2
android.app.ActivityThread$3
android.app.ActivityThread$4
+android.app.ActivityThread$5
android.app.ActivityThread$ActivityClientRecord$1
android.app.ActivityThread$ActivityClientRecord
android.app.ActivityThread$AppBindData
@@ -320,8 +321,9 @@ android.app.AppOpsManager$$ExternalSyntheticLambda3
android.app.AppOpsManager$$ExternalSyntheticLambda4
android.app.AppOpsManager$$ExternalSyntheticLambda5
android.app.AppOpsManager$$ExternalSyntheticLambda6
+android.app.AppOpsManager$$ExternalSyntheticLambda8
android.app.AppOpsManager$1
-android.app.AppOpsManager$3
+android.app.AppOpsManager$2
android.app.AppOpsManager$4
android.app.AppOpsManager$AppOpsCollector
android.app.AppOpsManager$AttributedHistoricalOps$1
@@ -365,7 +367,6 @@ android.app.AppOpsManager
android.app.AppOpsManagerInternal
android.app.Application$ActivityLifecycleCallbacks
android.app.Application$OnProvideAssistDataListener
-android.app.Application
android.app.ApplicationErrorReport$1
android.app.ApplicationErrorReport$AnrInfo
android.app.ApplicationErrorReport$BatteryInfo
@@ -386,9 +387,11 @@ android.app.ApplicationPackageManager$1
android.app.ApplicationPackageManager$2
android.app.ApplicationPackageManager$3
android.app.ApplicationPackageManager$GetPackagesForUidResult
+android.app.ApplicationPackageManager$HasSystemFeatureQuery$$ExternalSyntheticRecord1
android.app.ApplicationPackageManager$HasSystemFeatureQuery
android.app.ApplicationPackageManager$MoveCallbackDelegate
android.app.ApplicationPackageManager$ResourceName
+android.app.ApplicationPackageManager-IA
android.app.AsyncNotedAppOp$1
android.app.AsyncNotedAppOp
android.app.AutomaticZenRule$1
@@ -401,6 +404,9 @@ android.app.BackgroundInstallControlManager
android.app.BackgroundServiceStartNotAllowedException$1
android.app.BackgroundServiceStartNotAllowedException
android.app.BroadcastOptions
+android.app.BroadcastStickyCache$$ExternalSyntheticLambda0
+android.app.BroadcastStickyCache$StickyBroadcastFilter$$ExternalSyntheticRecord0
+android.app.BroadcastStickyCache$StickyBroadcastFilter
android.app.BroadcastStickyCache
android.app.CameraCompatTaskInfo$1
android.app.CameraCompatTaskInfo
@@ -513,7 +519,6 @@ android.app.IForegroundServiceObserver
android.app.IGameManagerService$Stub$Proxy
android.app.IGameManagerService$Stub
android.app.IGameManagerService
-android.app.IInstantAppResolver$Stub$Proxy
android.app.IInstantAppResolver$Stub
android.app.IInstantAppResolver
android.app.IInstrumentationWatcher$Stub$Proxy
@@ -595,6 +600,7 @@ android.app.IntentReceiverLeaked
android.app.IntentService$ServiceHandler
android.app.IntentService
android.app.KeyguardManager$1
+android.app.KeyguardManager$2
android.app.KeyguardManager$KeyguardDismissCallback
android.app.KeyguardManager
android.app.ListActivity
@@ -638,6 +644,7 @@ android.app.Notification$InboxStyle
android.app.Notification$MediaStyle
android.app.Notification$MessagingStyle$Message
android.app.Notification$MessagingStyle
+android.app.Notification$ProgressStyle
android.app.Notification$StandardTemplateParams
android.app.Notification$Style
android.app.Notification$TemplateBindResult$MarginSet
@@ -653,6 +660,9 @@ android.app.NotificationHistory$1
android.app.NotificationHistory$HistoricalNotification$Builder
android.app.NotificationHistory$HistoricalNotification
android.app.NotificationHistory
+android.app.NotificationManager$1
+android.app.NotificationManager$NotificationChannelQuery
+android.app.NotificationManager$NotificationKey
android.app.NotificationManager$Policy$1
android.app.NotificationManager$Policy
android.app.NotificationManager
@@ -684,10 +694,16 @@ android.app.ProfilerInfo$1
android.app.ProfilerInfo
android.app.ProgressDialog$1
android.app.ProgressDialog
-android.app.PropertyInvalidatedCache$1
+android.app.PropertyInvalidatedCache$Args
android.app.PropertyInvalidatedCache$AutoCorker$1
android.app.PropertyInvalidatedCache$AutoCorker
+android.app.PropertyInvalidatedCache$CacheMap$1
+android.app.PropertyInvalidatedCache$CacheMap
android.app.PropertyInvalidatedCache$DefaultComputer
+android.app.PropertyInvalidatedCache$NonceHandler
+android.app.PropertyInvalidatedCache$NonceSharedMem
+android.app.PropertyInvalidatedCache$NonceStore
+android.app.PropertyInvalidatedCache$NonceSysprop
android.app.PropertyInvalidatedCache$QueryHandler
android.app.PropertyInvalidatedCache
android.app.QueuedWork$QueuedWorkHandler
@@ -706,6 +722,7 @@ android.app.RemoteInputHistoryItem
android.app.RemoteServiceException
android.app.ResourcesManager$$ExternalSyntheticLambda0
android.app.ResourcesManager$$ExternalSyntheticLambda1
+android.app.ResourcesManager$$ExternalSyntheticLambda2
android.app.ResourcesManager$ActivityResource
android.app.ResourcesManager$ActivityResources
android.app.ResourcesManager$ApkAssetsSupplier
@@ -801,7 +818,9 @@ android.app.SystemServiceRegistry$145
android.app.SystemServiceRegistry$146
android.app.SystemServiceRegistry$147
android.app.SystemServiceRegistry$148
+android.app.SystemServiceRegistry$149
android.app.SystemServiceRegistry$14
+android.app.SystemServiceRegistry$150
android.app.SystemServiceRegistry$15
android.app.SystemServiceRegistry$16
android.app.SystemServiceRegistry$17
@@ -907,6 +926,7 @@ android.app.SystemServiceRegistry
android.app.TaskInfo
android.app.TaskStackListener
android.app.UiModeManager$1
+android.app.UiModeManager$2
android.app.UiModeManager$Globals
android.app.UiModeManager$InnerListener
android.app.UiModeManager$OnProjectionStateChangedListener
@@ -1003,6 +1023,7 @@ android.app.ambientcontext.AmbientContextManager
android.app.ambientcontext.IAmbientContextManager$Stub$Proxy
android.app.ambientcontext.IAmbientContextManager$Stub
android.app.ambientcontext.IAmbientContextManager
+android.app.appfunctions.AppFunctionManager
android.app.assist.ActivityId$1
android.app.assist.ActivityId
android.app.assist.AssistContent$1
@@ -1023,6 +1044,7 @@ android.app.assist.AssistStructure$ViewNodeText
android.app.assist.AssistStructure$ViewStackEntry
android.app.assist.AssistStructure$WindowNode
android.app.assist.AssistStructure
+android.app.assist.flags.Flags
android.app.backup.BackupAgent$BackupServiceBinder
android.app.backup.BackupAgent$SharedPrefsSynchronizer
android.app.backup.BackupAgent-IA
@@ -1109,6 +1131,8 @@ android.app.contentsuggestions.SelectionsRequest$Builder
android.app.contentsuggestions.SelectionsRequest-IA
android.app.contentsuggestions.SelectionsRequest
android.app.contextualsearch.ContextualSearchManager
+android.app.jank.Flags
+android.app.jank.JankTracker
android.app.job.IJobCallback$Stub$Proxy
android.app.job.IJobCallback$Stub
android.app.job.IJobCallback
@@ -1140,7 +1164,6 @@ android.app.job.JobServiceEngine$JobHandler
android.app.job.JobServiceEngine
android.app.job.JobWorkItem$1
android.app.job.JobWorkItem
-android.app.ondeviceintelligence.OnDeviceIntelligenceManager
android.app.people.IPeopleManager$Stub$Proxy
android.app.people.IPeopleManager$Stub
android.app.people.IPeopleManager
@@ -1366,6 +1389,7 @@ android.appwidget.AppWidgetManager$$ExternalSyntheticLambda4
android.appwidget.AppWidgetManager$$ExternalSyntheticLambda5
android.appwidget.AppWidgetManager$$ExternalSyntheticLambda6
android.appwidget.AppWidgetManager$$ExternalSyntheticLambda7
+android.appwidget.AppWidgetManager$ServiceCollectionCache
android.appwidget.AppWidgetManager
android.appwidget.AppWidgetManagerInternal
android.appwidget.AppWidgetProvider
@@ -1520,9 +1544,13 @@ android.content.ISyncContext$Stub
android.content.ISyncContext
android.content.ISyncStatusObserver$Stub
android.content.ISyncStatusObserver
+android.content.Intent$$ExternalSyntheticLambda0
+android.content.Intent$$ExternalSyntheticLambda1
android.content.Intent$1
android.content.Intent$CommandOptionHandler
+android.content.Intent$CreatorTokenInfo
android.content.Intent$FilterComparison
+android.content.Intent$NestedIntentKey
android.content.Intent
android.content.IntentFilter$$ExternalSyntheticLambda0
android.content.IntentFilter$$ExternalSyntheticLambda2
@@ -1747,6 +1775,7 @@ android.content.pm.LauncherApps$ShortcutQuery$QueryFlags
android.content.pm.LauncherApps$ShortcutQuery
android.content.pm.LauncherApps-IA
android.content.pm.LauncherApps
+android.content.pm.LauncherUserInfo
android.content.pm.ModuleInfo$1
android.content.pm.ModuleInfo-IA
android.content.pm.ModuleInfo
@@ -2032,6 +2061,7 @@ android.content.type.DefaultMimeMapFactory
android.credentials.CredentialManager
android.credentials.GetCredentialResponse$1
android.credentials.GetCredentialResponse
+android.crypto.hpke.HpkeSpi
android.database.AbstractCursor$SelfContentObserver
android.database.AbstractCursor
android.database.AbstractWindowedCursor
@@ -2159,6 +2189,7 @@ android.debug.IAdbManager
android.debug.IAdbTransport$Stub
android.debug.IAdbTransport
android.graphics.BLASTBufferQueue$TransactionHangCallback
+android.graphics.BLASTBufferQueue$WaitForBufferReleaseCallback
android.graphics.BLASTBufferQueue
android.graphics.BaseCanvas
android.graphics.BaseRecordingCanvas
@@ -2200,10 +2231,7 @@ android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda0
android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda1
android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda2
android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda3
-android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda4
android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda5
-android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda6
-android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda9
android.graphics.ColorSpace$Rgb$Native
android.graphics.ColorSpace$Rgb$NoImagePreloadHolder
android.graphics.ColorSpace$Rgb$TransferParameters
@@ -2330,8 +2358,10 @@ android.graphics.RenderNode$CompositePositionUpdateListener
android.graphics.RenderNode$NoImagePreloadHolder
android.graphics.RenderNode$PositionUpdateListener
android.graphics.RenderNode
+android.graphics.RuntimeColorFilter
android.graphics.RuntimeShader$NoImagePreloadHolder
android.graphics.RuntimeShader
+android.graphics.RuntimeXfermode
android.graphics.Shader$NoImagePreloadHolder
android.graphics.Shader$TileMode
android.graphics.Shader
@@ -2570,6 +2600,7 @@ android.hardware.ISensorPrivacyManager$Stub
android.hardware.ISensorPrivacyManager
android.hardware.ISerialManager$Stub
android.hardware.ISerialManager
+android.hardware.LutProperties
android.hardware.OverlayProperties$1
android.hardware.OverlayProperties-IA
android.hardware.OverlayProperties
@@ -2593,6 +2624,7 @@ android.hardware.SerialPort
android.hardware.SyncFence$1
android.hardware.SyncFence
android.hardware.SystemSensorManager$BaseEventQueue
+android.hardware.SystemSensorManager$InjectEventQueue
android.hardware.SystemSensorManager$SensorEventQueue
android.hardware.SystemSensorManager$TriggerEventQueue
android.hardware.TriggerEvent
@@ -2655,6 +2687,7 @@ android.hardware.camera2.CameraCharacteristics$5
android.hardware.camera2.CameraCharacteristics$6
android.hardware.camera2.CameraCharacteristics$7
android.hardware.camera2.CameraCharacteristics$8
+android.hardware.camera2.CameraCharacteristics$9
android.hardware.camera2.CameraCharacteristics$Key
android.hardware.camera2.CameraCharacteristics
android.hardware.camera2.CameraDevice$StateCallback
@@ -2721,6 +2754,7 @@ android.hardware.camera2.impl.CameraMetadataNative$37
android.hardware.camera2.impl.CameraMetadataNative$38
android.hardware.camera2.impl.CameraMetadataNative$39
android.hardware.camera2.impl.CameraMetadataNative$3
+android.hardware.camera2.impl.CameraMetadataNative$40
android.hardware.camera2.impl.CameraMetadataNative$4
android.hardware.camera2.impl.CameraMetadataNative$5
android.hardware.camera2.impl.CameraMetadataNative$6
@@ -2791,6 +2825,7 @@ android.hardware.camera2.params.OisSample
android.hardware.camera2.params.RecommendedStreamConfiguration
android.hardware.camera2.params.ReprocessFormatsMap
android.hardware.camera2.params.RggbChannelVector
+android.hardware.camera2.params.SharedSessionConfiguration
android.hardware.camera2.params.StreamConfiguration
android.hardware.camera2.params.StreamConfigurationDuration
android.hardware.camera2.params.StreamConfigurationMap
@@ -2808,6 +2843,8 @@ android.hardware.camera2.utils.TypeReference-IA
android.hardware.camera2.utils.TypeReference
android.hardware.common.fmq.SynchronizedReadWrite
android.hardware.common.fmq.UnsynchronizedWrite
+android.hardware.contexthub.IContextHubEndpointDiscoveryCallback$Stub
+android.hardware.contexthub.IContextHubEndpointDiscoveryCallback
android.hardware.contexthub.V1_0.ContextHub
android.hardware.contexthub.V1_0.ContextHubMsg
android.hardware.contexthub.V1_0.HubAppInfo
@@ -2823,6 +2860,7 @@ android.hardware.devicestate.DeviceState$Configuration$1
android.hardware.devicestate.DeviceState$Configuration
android.hardware.devicestate.DeviceState
android.hardware.devicestate.DeviceStateInfo$1
+android.hardware.devicestate.DeviceStateInfo-IA
android.hardware.devicestate.DeviceStateInfo
android.hardware.devicestate.DeviceStateManager$DeviceStateCallback
android.hardware.devicestate.DeviceStateManager$FoldStateListener
@@ -2877,6 +2915,7 @@ android.hardware.display.DisplayManagerGlobal
android.hardware.display.DisplayManagerInternal$DisplayPowerCallbacks
android.hardware.display.DisplayManagerInternal$DisplayPowerRequest
android.hardware.display.DisplayManagerInternal
+android.hardware.display.DisplayTopology
android.hardware.display.DisplayViewport
android.hardware.display.DisplayedContentSample
android.hardware.display.DisplayedContentSamplingAttributes
@@ -2962,7 +3001,6 @@ android.hardware.hdmi.HdmiRecordSources$OwnSource
android.hardware.hdmi.HdmiRecordSources$RecordSource
android.hardware.input.HostUsiVersion$1
android.hardware.input.HostUsiVersion
-android.hardware.input.IInputDevicesChangedListener$Stub$Proxy
android.hardware.input.IInputDevicesChangedListener$Stub
android.hardware.input.IInputDevicesChangedListener
android.hardware.input.IInputManager$Stub$Proxy
@@ -2978,7 +3016,6 @@ android.hardware.input.InputDeviceIdentifier
android.hardware.input.InputManager$InputDeviceListener
android.hardware.input.InputManager
android.hardware.input.InputManagerGlobal$InputDeviceListenerDelegate
-android.hardware.input.InputManagerGlobal$InputDevicesChangedListener
android.hardware.input.InputManagerGlobal$OnTabletModeChangedListenerDelegate
android.hardware.input.InputManagerGlobal-IA
android.hardware.input.InputManagerGlobal
@@ -3075,6 +3112,8 @@ android.hardware.location.NanoAppRpcService
android.hardware.location.NanoAppState$1
android.hardware.location.NanoAppState-IA
android.hardware.location.NanoAppState
+android.hardware.power.CpuHeadroomResult$Tag
+android.hardware.power.GpuHeadroomResult$Tag
android.hardware.power.SessionMode
android.hardware.radio.ITuner$Stub
android.hardware.radio.ITuner
@@ -3740,6 +3779,7 @@ android.icu.impl.UCharacterProperty$27
android.icu.impl.UCharacterProperty$28
android.icu.impl.UCharacterProperty$29
android.icu.impl.UCharacterProperty$2
+android.icu.impl.UCharacterProperty$30
android.icu.impl.UCharacterProperty$3
android.icu.impl.UCharacterProperty$4
android.icu.impl.UCharacterProperty$5
@@ -3756,6 +3796,7 @@ android.icu.impl.UCharacterProperty$IntProperty
android.icu.impl.UCharacterProperty$IsAcceptable
android.icu.impl.UCharacterProperty$LayoutProps$IsAcceptable
android.icu.impl.UCharacterProperty$LayoutProps
+android.icu.impl.UCharacterProperty$MCMBinaryProperty
android.icu.impl.UCharacterProperty$MathCompatBinaryProperty
android.icu.impl.UCharacterProperty$NormInertBinaryProperty
android.icu.impl.UCharacterProperty$NormQuickCheckIntProperty
@@ -4568,7 +4609,6 @@ android.icu.text.ReplaceableContextIterator
android.icu.text.ReplaceableString
android.icu.text.RuleBasedBreakIterator$BreakCache
android.icu.text.RuleBasedBreakIterator$DictionaryCache
-android.icu.text.RuleBasedBreakIterator
android.icu.text.RuleBasedCollator$CollationBuffer
android.icu.text.RuleBasedCollator$CollationKeyByteSink
android.icu.text.RuleBasedCollator$FCDUTF16NFDIterator
@@ -4913,6 +4953,12 @@ android.inputmethodservice.InputMethodService$Insets
android.inputmethodservice.InputMethodService$SettingsObserver
android.inputmethodservice.InputMethodService
android.inputmethodservice.SoftInputWindow
+android.internal.aconfig.storage.AconfigStorageException
+android.internal.aconfig.storage.ByteBufferReader
+android.internal.aconfig.storage.FileType
+android.internal.aconfig.storage.PackageTable$Header
+android.internal.aconfig.storage.PackageTable
+android.internal.framework.protobuf.nano.InvalidProtocolBufferNanoException
android.internal.framework.protobuf.nano.MessageNano
android.internal.hidl.base.V1_0.DebugInfo
android.internal.hidl.base.V1_0.IBase
@@ -5115,7 +5161,6 @@ android.media.IMediaRouter2$Stub
android.media.IMediaRouter2
android.media.IMediaRouter2Manager$Stub
android.media.IMediaRouter2Manager
-android.media.IMediaRouterClient$Stub$Proxy
android.media.IMediaRouterClient$Stub
android.media.IMediaRouterClient
android.media.IMediaRouterService$Stub$Proxy
@@ -5181,6 +5226,7 @@ android.media.MediaCodecInfo$AudioCapabilities
android.media.MediaCodecInfo$CodecProfileLevel
android.media.MediaCodecInfo$EncoderCapabilities
android.media.MediaCodecInfo$Feature
+android.media.MediaCodecInfo$LazyHolder
android.media.MediaCodecInfo$VideoCapabilities$$ExternalSyntheticLambda0
android.media.MediaCodecInfo$VideoCapabilities$PerformancePoint
android.media.MediaCodecInfo$VideoCapabilities
@@ -5277,7 +5323,6 @@ android.media.MediaRouter$Static$1
android.media.MediaRouter$Static$Client$$ExternalSyntheticLambda0
android.media.MediaRouter$Static$Client$$ExternalSyntheticLambda1
android.media.MediaRouter$Static$Client$1
-android.media.MediaRouter$Static$Client
android.media.MediaRouter$Static
android.media.MediaRouter$UserRouteInfo$SessionVolumeProvider
android.media.MediaRouter$UserRouteInfo
@@ -5377,10 +5422,8 @@ android.media.VolumeShaper$Operation
android.media.VolumeShaper$State$1
android.media.VolumeShaper$State
android.media.VolumeShaper
-android.media.audio.FeatureFlags
-android.media.audio.FeatureFlagsImpl
-android.media.audio.Flags
android.media.audio.common.AidlConversion
+android.media.audio.common.AudioHalProductStrategy$ZoneId
android.media.audio.common.HeadTracking$SensorData$Tag
android.media.audiofx.AudioEffect$Descriptor
android.media.audiofx.AudioEffect
@@ -5429,6 +5472,8 @@ android.media.browse.MediaBrowser$SubscriptionCallback
android.media.browse.MediaBrowser-IA
android.media.browse.MediaBrowser
android.media.browse.MediaBrowserUtils
+android.media.codec.FeatureFlags
+android.media.codec.FeatureFlagsImpl
android.media.codec.Flags
android.media.metrics.Event
android.media.metrics.IMediaMetricsManager$Stub$Proxy
@@ -5483,7 +5528,9 @@ android.media.projection.MediaProjectionInfo
android.media.projection.MediaProjectionManager$Callback
android.media.projection.MediaProjectionManager$CallbackDelegate
android.media.projection.MediaProjectionManager
-android.media.session.IActiveSessionsListener$Stub$Proxy
+android.media.quality.MediaQualityManager
+android.media.quality.PictureProfileHandle$1
+android.media.quality.PictureProfileHandle
android.media.session.IActiveSessionsListener$Stub
android.media.session.IActiveSessionsListener
android.media.session.IOnMediaKeyEventDispatchedListener$Stub$Proxy
@@ -5510,7 +5557,6 @@ android.media.session.ISessionCallback
android.media.session.ISessionController$Stub$Proxy
android.media.session.ISessionController$Stub
android.media.session.ISessionController
-android.media.session.ISessionControllerCallback$Stub$Proxy
android.media.session.ISessionControllerCallback$Stub
android.media.session.ISessionControllerCallback
android.media.session.ISessionManager$Stub$Proxy
@@ -5547,7 +5593,6 @@ android.media.session.MediaSessionManager$RemoteSessionCallbackStub
android.media.session.MediaSessionManager$RemoteUserInfo
android.media.session.MediaSessionManager$Session2TokensChangedWrapper
android.media.session.MediaSessionManager$SessionsChangedWrapper$1$$ExternalSyntheticLambda0
-android.media.session.MediaSessionManager$SessionsChangedWrapper$1
android.media.session.MediaSessionManager$SessionsChangedWrapper
android.media.session.MediaSessionManager-IA
android.media.session.MediaSessionManager
@@ -5621,6 +5666,7 @@ android.net.INetworkPolicyListener
android.net.INetworkPolicyManager$Stub$Proxy
android.net.INetworkPolicyManager$Stub
android.net.INetworkPolicyManager
+android.net.INetworkRecommendationProvider$Stub$Proxy
android.net.INetworkRecommendationProvider$Stub
android.net.INetworkRecommendationProvider
android.net.INetworkScoreCache$Stub$Proxy
@@ -5772,16 +5818,6 @@ android.net.sip.SipSession$State
android.net.sip.SipSession
android.net.sip.SipSessionAdapter
android.net.util.SocketUtils
-android.net.vcn.VcnManager$VcnNetworkPolicyChangeListener
-android.net.vcn.VcnManager$VcnUnderlyingNetworkPolicyListener
-android.net.vcn.VcnManager
-android.net.vcn.VcnNetworkPolicyResult$1
-android.net.vcn.VcnNetworkPolicyResult
-android.net.vcn.VcnTransportInfo$1
-android.net.vcn.VcnTransportInfo-IA
-android.net.vcn.VcnTransportInfo
-android.net.vcn.VcnUnderlyingNetworkPolicy$1
-android.net.vcn.VcnUnderlyingNetworkPolicy
android.net.wifi.SoftApConfToXmlMigrationUtil
android.net.wifi.WifiMigration$1
android.net.wifi.WifiMigration
@@ -5819,26 +5855,48 @@ android.net.wifi.nl80211.WifiNl80211Manager$ScanEventHandler
android.net.wifi.nl80211.WifiNl80211Manager$SignalPollResult
android.net.wifi.nl80211.WifiNl80211Manager
android.net.wifi.sharedconnectivity.app.SharedConnectivityManager
+android.nfc.AvailableNfcAntenna
+android.nfc.Entry
+android.nfc.FormatException
+android.nfc.IAppCallback$Stub$Proxy
android.nfc.IAppCallback$Stub
android.nfc.IAppCallback
+android.nfc.INfcAdapter$Stub$Proxy
android.nfc.INfcAdapter$Stub
android.nfc.INfcAdapter
android.nfc.INfcAdapterExtras
android.nfc.INfcCardEmulation
+android.nfc.INfcControllerAlwaysOnListener$Stub$Proxy
android.nfc.INfcControllerAlwaysOnListener$Stub
android.nfc.INfcControllerAlwaysOnListener
android.nfc.INfcDta
android.nfc.INfcFCardEmulation
+android.nfc.INfcOemExtensionCallback$Stub
+android.nfc.INfcOemExtensionCallback
+android.nfc.INfcTag$Stub
android.nfc.INfcTag
+android.nfc.INfcUnlockHandler$Stub$Proxy
android.nfc.INfcUnlockHandler$Stub
android.nfc.INfcUnlockHandler
+android.nfc.INfcVendorNciCallback$Stub$Proxy
android.nfc.INfcVendorNciCallback$Stub
android.nfc.INfcVendorNciCallback
+android.nfc.INfcWlcStateListener$Stub$Proxy
android.nfc.INfcWlcStateListener$Stub
android.nfc.INfcWlcStateListener
+android.nfc.IT4tNdefNfcee
+android.nfc.ITagRemovedCallback$Stub$Proxy
android.nfc.ITagRemovedCallback$Stub
android.nfc.ITagRemovedCallback
+android.nfc.NdefMessage$1
android.nfc.NdefMessage
+android.nfc.NdefRecord
+android.nfc.NfcActivityManager$$ExternalSyntheticLambda0
+android.nfc.NfcActivityManager$$ExternalSyntheticLambda1
+android.nfc.NfcActivityManager$$ExternalSyntheticLambda2
+android.nfc.NfcActivityManager$$ExternalSyntheticLambda3
+android.nfc.NfcActivityManager$NfcActivityState
+android.nfc.NfcActivityManager$NfcApplicationState
android.nfc.NfcActivityManager
android.nfc.NfcAdapter$$ExternalSyntheticLambda0
android.nfc.NfcAdapter$$ExternalSyntheticLambda10
@@ -5874,12 +5932,16 @@ android.nfc.NfcAdapter$$ExternalSyntheticLambda37
android.nfc.NfcAdapter$$ExternalSyntheticLambda38
android.nfc.NfcAdapter$$ExternalSyntheticLambda39
android.nfc.NfcAdapter$$ExternalSyntheticLambda3
+android.nfc.NfcAdapter$$ExternalSyntheticLambda40
+android.nfc.NfcAdapter$$ExternalSyntheticLambda41
+android.nfc.NfcAdapter$$ExternalSyntheticLambda42
android.nfc.NfcAdapter$$ExternalSyntheticLambda4
android.nfc.NfcAdapter$$ExternalSyntheticLambda5
android.nfc.NfcAdapter$$ExternalSyntheticLambda6
android.nfc.NfcAdapter$$ExternalSyntheticLambda7
android.nfc.NfcAdapter$$ExternalSyntheticLambda8
android.nfc.NfcAdapter$$ExternalSyntheticLambda9
+android.nfc.NfcAdapter$1$1
android.nfc.NfcAdapter$1
android.nfc.NfcAdapter$2
android.nfc.NfcAdapter$ControllerAlwaysOnListener
@@ -5894,24 +5956,79 @@ android.nfc.NfcAdapter$ServiceCall
android.nfc.NfcAdapter$ServiceCallReturn
android.nfc.NfcAdapter$WlcStateListener
android.nfc.NfcAdapter
+android.nfc.NfcAntennaInfo$1
+android.nfc.NfcAntennaInfo-IA
android.nfc.NfcAntennaInfo
+android.nfc.NfcControllerAlwaysOnListener$$ExternalSyntheticLambda0
android.nfc.NfcControllerAlwaysOnListener
android.nfc.NfcFrameworkInitializer$$ExternalSyntheticLambda0
android.nfc.NfcFrameworkInitializer
android.nfc.NfcManager
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda0
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda10
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda11
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda12
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda13
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda14
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda15
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda16
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda17
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda18
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda19
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda1
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda2
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda3
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda4
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda5
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda6
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda7
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda8
+android.nfc.NfcOemExtension$$ExternalSyntheticLambda9
+android.nfc.NfcOemExtension$Callback
+android.nfc.NfcOemExtension$NfcOemExtensionCallback
+android.nfc.NfcOemExtension-IA
android.nfc.NfcOemExtension
+android.nfc.NfcRoutingTableEntry
android.nfc.NfcServiceManager$ServiceRegisterer
android.nfc.NfcServiceManager
+android.nfc.NfcVendorNciCallbackListener$$ExternalSyntheticLambda0
+android.nfc.NfcVendorNciCallbackListener$$ExternalSyntheticLambda1
android.nfc.NfcVendorNciCallbackListener
+android.nfc.NfcWlcStateListener$$ExternalSyntheticLambda0
android.nfc.NfcWlcStateListener
+android.nfc.RoutingStatus
+android.nfc.RoutingTableAidEntry
+android.nfc.RoutingTableProtocolEntry
+android.nfc.RoutingTableSystemCodeEntry
+android.nfc.RoutingTableTechnologyEntry
+android.nfc.T4tNdefNfcee
+android.nfc.Tag$1
android.nfc.Tag
+android.nfc.TechListParcel$1
android.nfc.TechListParcel
+android.nfc.WlcListenerDeviceInfo$1
+android.nfc.WlcListenerDeviceInfo-IA
android.nfc.WlcListenerDeviceInfo
android.nfc.cardemulation.AidGroup$1
android.nfc.cardemulation.AidGroup
android.nfc.cardemulation.ApduServiceInfo$1
android.nfc.cardemulation.ApduServiceInfo
+android.nfc.cardemulation.CardEmulation
+android.nfc.cardemulation.PollingFrame$1
+android.nfc.cardemulation.PollingFrame-IA
android.nfc.cardemulation.PollingFrame
+android.nfc.tech.BasicTagTechnology
+android.nfc.tech.IsoDep
+android.nfc.tech.MifareClassic
+android.nfc.tech.MifareUltralight
+android.nfc.tech.Ndef
+android.nfc.tech.NdefFormatable
+android.nfc.tech.NfcA
+android.nfc.tech.NfcB
+android.nfc.tech.NfcBarcode
+android.nfc.tech.NfcF
+android.nfc.tech.NfcV
+android.nfc.tech.TagTechnology
android.opengl.EGL14
android.opengl.EGL15
android.opengl.EGLConfig
@@ -6096,7 +6213,6 @@ android.os.Handler$Callback
android.os.Handler$MessengerImpl
android.os.Handler-IA
android.os.Handler
-android.os.HandlerExecutor
android.os.HandlerThread
android.os.HardwarePropertiesManager
android.os.HidlMemory
@@ -6185,6 +6301,9 @@ android.os.IRemoteCallback$Stub
android.os.IRemoteCallback
android.os.ISchedulingPolicyService$Stub
android.os.ISchedulingPolicyService
+android.os.IScreenTimeoutPolicyListener$Stub$Proxy
+android.os.IScreenTimeoutPolicyListener$Stub
+android.os.IScreenTimeoutPolicyListener
android.os.IServiceManager$Stub$Proxy
android.os.IServiceManager$Stub
android.os.IServiceManager
@@ -6242,6 +6361,7 @@ android.os.IncidentManager$IncidentReport$1
android.os.IncidentManager$IncidentReport
android.os.IncidentManager
android.os.IpcDataCache$1
+android.os.IpcDataCache$BypassCall
android.os.IpcDataCache$Config
android.os.IpcDataCache$QueryHandler
android.os.IpcDataCache$RemoteCall
@@ -6257,7 +6377,27 @@ android.os.Message$1
android.os.Message
android.os.MessageQueue$FileDescriptorRecord
android.os.MessageQueue$IdleHandler
+android.os.MessageQueue$MatchAllFutureMessages
+android.os.MessageQueue$MatchAllMessages
+android.os.MessageQueue$MatchBarrierToken
+android.os.MessageQueue$MatchDeliverableMessages
+android.os.MessageQueue$MatchHandler
+android.os.MessageQueue$MatchHandlerAndObject
+android.os.MessageQueue$MatchHandlerAndObjectEquals
+android.os.MessageQueue$MatchHandlerRunnableAndObject
+android.os.MessageQueue$MatchHandlerRunnableAndObjectEquals
+android.os.MessageQueue$MatchHandlerWhatAndObject
+android.os.MessageQueue$MatchHandlerWhatAndObjectEquals
+android.os.MessageQueue$MessageCompare
+android.os.MessageQueue$MessageCounts
+android.os.MessageQueue$MessageNode
+android.os.MessageQueue$OnFileDescriptorEventListener$Events
android.os.MessageQueue$OnFileDescriptorEventListener
+android.os.MessageQueue$StackNode
+android.os.MessageQueue$StackNodeType
+android.os.MessageQueue$StateNode
+android.os.MessageQueue$TimedParkStateNode
+android.os.MessageQueue-IA
android.os.MessageQueue
android.os.Messenger$1
android.os.Messenger
@@ -6268,6 +6408,7 @@ android.os.OutcomeReceiver
android.os.PackageTagsList$1
android.os.PackageTagsList
android.os.Parcel$1
+android.os.Parcel$ClassLoaderProvider
android.os.Parcel$LazyValue
android.os.Parcel$ReadWriteHelper
android.os.Parcel$SquashReadHelper
@@ -6276,7 +6417,6 @@ android.os.ParcelDuration$1
android.os.ParcelDuration
android.os.ParcelFileDescriptor$1
android.os.ParcelFileDescriptor$2
-android.os.ParcelFileDescriptor$AutoCloseInputStream
android.os.ParcelFileDescriptor$AutoCloseOutputStream
android.os.ParcelFileDescriptor$OnCloseListener
android.os.ParcelFileDescriptor$Status
@@ -6293,6 +6433,25 @@ android.os.ParcelableParcel$1
android.os.ParcelableParcel
android.os.PatternMatcher$1
android.os.PatternMatcher
+android.os.PerfettoTrace$Category
+android.os.PerfettoTrace
+android.os.PerfettoTrackEventExtra$ArgBool
+android.os.PerfettoTrackEventExtra$ArgDouble
+android.os.PerfettoTrackEventExtra$ArgInt64
+android.os.PerfettoTrackEventExtra$ArgString
+android.os.PerfettoTrackEventExtra$CounterDouble
+android.os.PerfettoTrackEventExtra$CounterInt64
+android.os.PerfettoTrackEventExtra$CounterTrack
+android.os.PerfettoTrackEventExtra$FieldContainer
+android.os.PerfettoTrackEventExtra$FieldDouble
+android.os.PerfettoTrackEventExtra$FieldInt64
+android.os.PerfettoTrackEventExtra$FieldNested
+android.os.PerfettoTrackEventExtra$FieldString
+android.os.PerfettoTrackEventExtra$Flow
+android.os.PerfettoTrackEventExtra$NamedTrack
+android.os.PerfettoTrackEventExtra$PerfettoPointer
+android.os.PerfettoTrackEventExtra$Proto
+android.os.PerfettoTrackEventExtra
android.os.PerformanceHintManager$Session
android.os.PerformanceHintManager
android.os.PermissionEnforcer
@@ -6306,7 +6465,9 @@ android.os.PowerManager$1
android.os.PowerManager$2
android.os.PowerManager$3$$ExternalSyntheticLambda0
android.os.PowerManager$3
+android.os.PowerManager$4
android.os.PowerManager$OnThermalStatusChangedListener
+android.os.PowerManager$ScreenTimeoutPolicyListener
android.os.PowerManager$WakeData
android.os.PowerManager$WakeLock$$ExternalSyntheticLambda0
android.os.PowerManager$WakeLock
@@ -6336,6 +6497,7 @@ android.os.RemoteCallback$2
android.os.RemoteCallback$3
android.os.RemoteCallback$OnResultListener
android.os.RemoteCallback
+android.os.RemoteCallbackList$Interface
android.os.RemoteCallbackList
android.os.RemoteException
android.os.ResultReceiver$1
@@ -6351,6 +6513,8 @@ android.os.ServiceManager
android.os.ServiceManagerNative
android.os.ServiceManagerProxy
android.os.ServiceSpecificException
+android.os.ServiceWithMetadata$1
+android.os.ServiceWithMetadata
android.os.SharedMemory$1
android.os.SharedMemory$Closer
android.os.SharedMemory$MemoryRegistration
@@ -6378,7 +6542,6 @@ android.os.StrictMode$8
android.os.StrictMode$9
android.os.StrictMode$AndroidBlockGuardPolicy$$ExternalSyntheticLambda0
android.os.StrictMode$AndroidBlockGuardPolicy$$ExternalSyntheticLambda1
-android.os.StrictMode$AndroidBlockGuardPolicy
android.os.StrictMode$AndroidCloseGuardReporter
android.os.StrictMode$InstanceTracker
android.os.StrictMode$OnThreadViolationListener
@@ -6436,11 +6599,22 @@ android.os.UpdateEngineCallback
android.os.UpdateLock
android.os.UserHandle$1
android.os.UserHandle
+android.os.UserManager$$ExternalSyntheticLambda0
+android.os.UserManager$$ExternalSyntheticLambda10
+android.os.UserManager$$ExternalSyntheticLambda13
+android.os.UserManager$$ExternalSyntheticLambda15
+android.os.UserManager$$ExternalSyntheticLambda1
+android.os.UserManager$$ExternalSyntheticLambda3
+android.os.UserManager$$ExternalSyntheticLambda4
+android.os.UserManager$$ExternalSyntheticLambda5
+android.os.UserManager$$ExternalSyntheticLambda8
+android.os.UserManager$$ExternalSyntheticLambda9
android.os.UserManager$1
android.os.UserManager$EnforcingUser$1
android.os.UserManager$EnforcingUser
android.os.UserManager$UserOperationException
android.os.UserManager
+android.os.UserManagerCache
android.os.VibrationAttributes$1
android.os.VibrationAttributes$Builder
android.os.VibrationAttributes-IA
@@ -6454,6 +6628,8 @@ android.os.Vibrator
android.os.VibratorInfo$1
android.os.VibratorInfo$FrequencyProfile$1
android.os.VibratorInfo$FrequencyProfile
+android.os.VibratorInfo$FrequencyProfileLegacy$1
+android.os.VibratorInfo$FrequencyProfileLegacy
android.os.VibratorInfo
android.os.VibratorManager
android.os.VintfObject
@@ -6499,6 +6675,9 @@ android.os.incremental.IncrementalManager
android.os.incremental.V4Signature$HashingInfo
android.os.incremental.V4Signature$SigningInfo
android.os.incremental.V4Signature
+android.os.instrumentation.IOffsetCallback$Stub
+android.os.instrumentation.IOffsetCallback
+android.os.instrumentation.MethodDescriptor
android.os.storage.DiskInfo$1
android.os.storage.DiskInfo
android.os.storage.IObbActionListener$Stub$Proxy
@@ -6588,14 +6767,16 @@ android.permission.LegacyPermissionManager
android.permission.PermissionCheckerManager
android.permission.PermissionControllerManager$1
android.permission.PermissionControllerManager
-android.permission.PermissionManager
android.permission.PermissionManager$1
android.permission.PermissionManager$2
+android.permission.PermissionManager$3
android.permission.PermissionManager$OnPermissionsChangeListenerDelegate
android.permission.PermissionManager$PackageNamePermissionQuery
android.permission.PermissionManager$PermissionQuery
+android.permission.PermissionManager$PermissionRequestStateQuery
android.permission.PermissionManager$SplitPermissionInfo
android.permission.PermissionManager-IA
+android.permission.PermissionManager
android.permission.PermissionManagerInternal
android.preference.DialogPreference
android.preference.GenericInflater$Parent
@@ -6799,10 +6980,7 @@ android.se.omapi.SeServiceManager
android.security.AttestedKeyPair
android.security.CheckedRemoteRequest
android.security.Credentials
-android.security.FeatureFlags
-android.security.FeatureFlagsImpl
android.security.FileIntegrityManager
-android.security.Flags
android.security.GateKeeper
android.security.IFileIntegrityService$Stub
android.security.IFileIntegrityService
@@ -6837,6 +7015,8 @@ android.security.KeyStoreSecurityLevel
android.security.NetworkSecurityPolicy
android.security.Scrypt
android.security.attestationverification.AttestationVerificationManager
+android.security.authenticationpolicy.AuthenticationPolicyManager
+android.security.intrusiondetection.IntrusionDetectionManager
android.security.keymaster.ExportResult$1
android.security.keymaster.ExportResult
android.security.keymaster.KeyCharacteristics$1
@@ -6883,6 +7063,7 @@ android.security.keystore.KeyProtection$Builder
android.security.keystore.KeyProtection
android.security.keystore.KeyStoreConnectException
android.security.keystore.KeyStoreCryptoOperation
+android.security.keystore.KeyStoreManager
android.security.keystore.KeystoreResponse$1
android.security.keystore.KeystoreResponse
android.security.keystore.ParcelableKeyGenParameterSpec$1
@@ -7161,6 +7342,7 @@ android.service.notification.NotificationRankingUpdate
android.service.notification.NotificationStats$1
android.service.notification.NotificationStats
android.service.notification.NotifyingApp$1
+android.service.notification.RateEstimator
android.service.notification.ScheduleCalendar
android.service.notification.SnoozeCriterion$1
android.service.notification.SnoozeCriterion
@@ -7205,7 +7387,6 @@ android.service.quicksettings.TileService
android.service.storage.IExternalStorageService$Stub$Proxy
android.service.storage.IExternalStorageService$Stub
android.service.storage.IExternalStorageService
-android.service.textclassifier.ITextClassifierCallback$Stub$Proxy
android.service.textclassifier.ITextClassifierCallback$Stub
android.service.textclassifier.ITextClassifierCallback
android.service.textclassifier.ITextClassifierService$Stub$Proxy
@@ -7267,11 +7448,6 @@ android.service.wallpaper.WallpaperService$IWallpaperEngineWrapper
android.service.wallpaper.WallpaperService$IWallpaperServiceWrapper
android.service.wallpaper.WallpaperService$WallpaperCommand
android.service.wallpaper.WallpaperService
-android.service.watchdog.ExplicitHealthCheckService$PackageConfig$1
-android.service.watchdog.ExplicitHealthCheckService$PackageConfig
-android.service.watchdog.IExplicitHealthCheckService$Stub$Proxy
-android.service.watchdog.IExplicitHealthCheckService$Stub
-android.service.watchdog.IExplicitHealthCheckService
android.speech.RecognitionListener
android.speech.SpeechRecognizer
android.speech.tts.ITextToSpeechCallback$Stub
@@ -7373,7 +7549,6 @@ android.system.keystore2.KeyParameters$1
android.system.keystore2.KeyParameters
android.system.keystore2.OperationChallenge$1
android.system.keystore2.OperationChallenge
-android.system.suspend.internal.ISuspendControlServiceInternal$Stub$Proxy
android.system.suspend.internal.ISuspendControlServiceInternal$Stub
android.system.suspend.internal.ISuspendControlServiceInternal
android.system.suspend.internal.WakeLockInfo$1
@@ -7516,7 +7691,6 @@ android.telephony.CellIdentityCdma
android.telephony.CellIdentityGsm$1
android.telephony.CellIdentityGsm
android.telephony.CellIdentityLte$1
-android.telephony.CellIdentityLte
android.telephony.CellIdentityNr$1
android.telephony.CellIdentityNr
android.telephony.CellIdentityTdscdma$1
@@ -7544,7 +7718,6 @@ android.telephony.CellSignalStrengthCdma-IA
android.telephony.CellSignalStrengthCdma
android.telephony.CellSignalStrengthGsm$1
android.telephony.CellSignalStrengthGsm-IA
-android.telephony.CellSignalStrengthGsm
android.telephony.CellSignalStrengthLte$1
android.telephony.CellSignalStrengthLte-IA
android.telephony.CellSignalStrengthLte
@@ -7556,7 +7729,7 @@ android.telephony.CellSignalStrengthTdscdma-IA
android.telephony.CellSignalStrengthTdscdma
android.telephony.CellSignalStrengthWcdma$1
android.telephony.CellSignalStrengthWcdma-IA
-android.telephony.CellSignalStrengthWcdma
+android.telephony.CellularIdentifierDisclosure
android.telephony.ClientRequestStats$1
android.telephony.ClientRequestStats
android.telephony.ClosedSubscriberGroupInfo$1
@@ -7676,6 +7849,7 @@ android.telephony.RadioAccessFamily
android.telephony.RadioAccessSpecifier$1
android.telephony.RadioAccessSpecifier
android.telephony.Rlog
+android.telephony.SecurityAlgorithmUpdate
android.telephony.ServiceState$$ExternalSyntheticLambda0
android.telephony.ServiceState$1
android.telephony.ServiceState
@@ -7746,9 +7920,10 @@ android.telephony.TelephonyCallback$CallDisconnectCauseListener
android.telephony.TelephonyCallback$CallForwardingIndicatorListener
android.telephony.TelephonyCallback$CallStateListener
android.telephony.TelephonyCallback$CarrierNetworkListener
-android.telephony.TelephonyCallback$CarrierRoamingNtnModeListener
+android.telephony.TelephonyCallback$CarrierRoamingNtnListener
android.telephony.TelephonyCallback$CellInfoListener
android.telephony.TelephonyCallback$CellLocationListener
+android.telephony.TelephonyCallback$CellularIdentifierDisclosedListener
android.telephony.TelephonyCallback$DataActivationStateListener
android.telephony.TelephonyCallback$DataActivityListener
android.telephony.TelephonyCallback$DataConnectionStateListener
@@ -7776,6 +7951,7 @@ android.telephony.TelephonyCallback$PreciseCallStateListener
android.telephony.TelephonyCallback$PreciseDataConnectionStateListener
android.telephony.TelephonyCallback$RadioPowerStateListener
android.telephony.TelephonyCallback$RegistrationFailedListener
+android.telephony.TelephonyCallback$SecurityAlgorithmsListener
android.telephony.TelephonyCallback$ServiceStateListener
android.telephony.TelephonyCallback$SignalStrengthsListener
android.telephony.TelephonyCallback$SimultaneousCellularCallingSupportListener
@@ -7824,9 +8000,7 @@ android.telephony.TelephonyRegistryManager$$ExternalSyntheticLambda0
android.telephony.TelephonyRegistryManager$$ExternalSyntheticLambda1
android.telephony.TelephonyRegistryManager$$ExternalSyntheticLambda2
android.telephony.TelephonyRegistryManager$1$$ExternalSyntheticLambda0
-android.telephony.TelephonyRegistryManager$1
android.telephony.TelephonyRegistryManager$2
-android.telephony.TelephonyRegistryManager$3
android.telephony.TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda0
android.telephony.TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda1
android.telephony.TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda2
@@ -8108,6 +8282,7 @@ android.telephony.ims.stub.ImsRegistrationImplBase
android.telephony.ims.stub.ImsSmsImplBase
android.telephony.ims.stub.ImsUtImplBase$1
android.telephony.ims.stub.ImsUtImplBase
+android.telephony.satellite.NtnSignalStrength
android.telephony.satellite.SatelliteManager
android.text.AndroidBidi
android.text.AndroidCharacter
@@ -8121,7 +8296,6 @@ android.text.BidiFormatter
android.text.BoringLayout$Metrics
android.text.BoringLayout
android.text.CharSequenceCharacterIterator
-android.text.ClientFlags
android.text.ClipboardManager
android.text.DynamicLayout$Builder
android.text.DynamicLayout$ChangeWatcher
@@ -8206,7 +8380,6 @@ android.text.SpanSet
android.text.SpanWatcher
android.text.Spannable$Factory
android.text.Spannable
-android.text.SpannableString
android.text.SpannableStringBuilder
android.text.SpannableStringInternal
android.text.Spanned
@@ -8318,6 +8491,7 @@ android.text.style.LineHeightSpan
android.text.style.LocaleSpan
android.text.style.MetricAffectingSpan$Passthrough
android.text.style.MetricAffectingSpan
+android.text.style.NoWritingToolsSpan
android.text.style.ParagraphStyle
android.text.style.QuoteSpan
android.text.style.RelativeSizeSpan
@@ -8364,11 +8538,16 @@ android.timezone.TelephonyLookup
android.timezone.TelephonyNetwork
android.timezone.TelephonyNetworkFinder
android.timezone.TimeZoneFinder
+android.tracing.FeatureFlags
+android.tracing.FeatureFlagsImpl
android.tracing.Flags
android.tracing.perfetto.CreateIncrementalStateArgs
android.tracing.perfetto.CreateTlsStateArgs
android.tracing.perfetto.DataSource
+android.tracing.perfetto.DataSourceParams$Builder
+android.tracing.perfetto.DataSourceParams
android.tracing.perfetto.FlushCallbackArguments
+android.tracing.perfetto.InitArguments
android.tracing.perfetto.Producer
android.tracing.perfetto.StartCallbackArguments
android.tracing.perfetto.StopCallbackArguments
@@ -8486,7 +8665,6 @@ android.util.FeatureFlagUtils
android.util.FloatProperty
android.util.Half
android.util.IconDrawableFactory
-android.util.IndentingPrintWriter
android.util.IntArray
android.util.IntProperty
android.util.JsonReader$1
@@ -8651,6 +8829,8 @@ android.view.Choreographer$1
android.view.Choreographer$2
android.view.Choreographer$3
android.view.Choreographer$4
+android.view.Choreographer$BufferStuffingState$RecoveryAction
+android.view.Choreographer$BufferStuffingState
android.view.Choreographer$CallbackQueue
android.view.Choreographer$CallbackRecord
android.view.Choreographer$FrameCallback
@@ -8714,6 +8894,8 @@ android.view.FocusFinder-IA
android.view.FocusFinder
android.view.FrameMetrics
android.view.FrameMetricsObserver
+android.view.FrameRateCategoryRate$1
+android.view.FrameRateCategoryRate
android.view.FrameStats
android.view.GestureDetector$GestureHandler
android.view.GestureDetector$OnContextClickListener
@@ -8743,7 +8925,6 @@ android.view.IDisplayFoldListener$Stub
android.view.IDisplayFoldListener
android.view.IDisplayWindowInsetsController$Stub
android.view.IDisplayWindowInsetsController
-android.view.IDisplayWindowListener$Stub$Proxy
android.view.IDisplayWindowListener$Stub
android.view.IDisplayWindowListener
android.view.IDockedStackListener$Stub$Proxy
@@ -8786,7 +8967,6 @@ android.view.ISurfaceControlViewHostParent$Stub
android.view.ISurfaceControlViewHostParent
android.view.ISystemGestureExclusionListener$Stub
android.view.ISystemGestureExclusionListener
-android.view.IWallpaperVisibilityListener$Stub$Proxy
android.view.IWallpaperVisibilityListener$Stub
android.view.IWallpaperVisibilityListener
android.view.IWindow$Stub
@@ -8904,6 +9084,7 @@ android.view.LayoutInflater$Factory
android.view.LayoutInflater$FactoryMerger
android.view.LayoutInflater$Filter
android.view.LayoutInflater
+android.view.LetterboxScrollProcessor
android.view.MagnificationSpec$1
android.view.MagnificationSpec
android.view.Menu
@@ -8994,6 +9175,8 @@ android.view.SurfaceControl$TrustedPresentationCallback
android.view.SurfaceControl$TrustedPresentationThresholds
android.view.SurfaceControl-IA
android.view.SurfaceControl
+android.view.SurfaceControlActivePicture
+android.view.SurfaceControlActivePictureListener
android.view.SurfaceControlHdrLayerInfoListener
android.view.SurfaceControlRegistry$DefaultReporter
android.view.SurfaceControlRegistry$NoOpRegistry
@@ -9148,6 +9331,7 @@ android.view.ViewPropertyAnimator$NameValuesHolder
android.view.ViewPropertyAnimator$PropertyBundle
android.view.ViewPropertyAnimator-IA
android.view.ViewPropertyAnimator
+android.view.ViewProtoLogGroups
android.view.ViewRootImpl$$ExternalSyntheticLambda0
android.view.ViewRootImpl$$ExternalSyntheticLambda10
android.view.ViewRootImpl$$ExternalSyntheticLambda11
@@ -9158,7 +9342,11 @@ android.view.ViewRootImpl$$ExternalSyntheticLambda15
android.view.ViewRootImpl$$ExternalSyntheticLambda16
android.view.ViewRootImpl$$ExternalSyntheticLambda17
android.view.ViewRootImpl$$ExternalSyntheticLambda18
+android.view.ViewRootImpl$$ExternalSyntheticLambda19
android.view.ViewRootImpl$$ExternalSyntheticLambda1
+android.view.ViewRootImpl$$ExternalSyntheticLambda20
+android.view.ViewRootImpl$$ExternalSyntheticLambda21
+android.view.ViewRootImpl$$ExternalSyntheticLambda22
android.view.ViewRootImpl$$ExternalSyntheticLambda2
android.view.ViewRootImpl$$ExternalSyntheticLambda3
android.view.ViewRootImpl$$ExternalSyntheticLambda4
@@ -9284,6 +9472,7 @@ android.view.WindowManagerGlobal
android.view.WindowManagerPolicyConstants$PointerEventListener
android.view.WindowManagerPolicyConstants
android.view.WindowMetrics
+android.view.WindowRelayoutResult$1
android.view.WindowRelayoutResult
android.view.WindowlessWindowLayout
android.view.WindowlessWindowManager
@@ -9297,10 +9486,10 @@ android.view.accessibility.AccessibilityManager$$ExternalSyntheticLambda0
android.view.accessibility.AccessibilityManager$$ExternalSyntheticLambda1
android.view.accessibility.AccessibilityManager$$ExternalSyntheticLambda3
android.view.accessibility.AccessibilityManager$1$$ExternalSyntheticLambda0
-android.view.accessibility.AccessibilityManager$1
android.view.accessibility.AccessibilityManager$AccessibilityPolicy
android.view.accessibility.AccessibilityManager$AccessibilityServicesStateChangeListener
android.view.accessibility.AccessibilityManager$AccessibilityStateChangeListener
+android.view.accessibility.AccessibilityManager$HighContrastTextStateChangeListener
android.view.accessibility.AccessibilityManager$MyCallback
android.view.accessibility.AccessibilityManager$TouchExplorationStateChangeListener
android.view.accessibility.AccessibilityManager-IA
@@ -9340,7 +9529,6 @@ android.view.accessibility.IAccessibilityInteractionConnectionCallback
android.view.accessibility.IAccessibilityManager$Stub$Proxy
android.view.accessibility.IAccessibilityManager$Stub
android.view.accessibility.IAccessibilityManager
-android.view.accessibility.IAccessibilityManagerClient$Stub$Proxy
android.view.accessibility.IAccessibilityManagerClient$Stub
android.view.accessibility.IAccessibilityManagerClient
android.view.accessibility.WeakSparseArray$WeakReferenceWithId
@@ -9391,6 +9579,7 @@ android.view.autofill.AutofillManager$$ExternalSyntheticLambda1
android.view.autofill.AutofillManager$$ExternalSyntheticLambda2
android.view.autofill.AutofillManager$$ExternalSyntheticLambda3
android.view.autofill.AutofillManager$$ExternalSyntheticLambda4
+android.view.autofill.AutofillManager$AugmentedAutofillManagerClient$$ExternalSyntheticLambda1
android.view.autofill.AutofillManager$AugmentedAutofillManagerClient
android.view.autofill.AutofillManager$AutofillCallback
android.view.autofill.AutofillManager$AutofillClient
@@ -9553,6 +9742,7 @@ android.view.inputmethod.InputMethodManager$$ExternalSyntheticLambda2
android.view.inputmethod.InputMethodManager$$ExternalSyntheticLambda3
android.view.inputmethod.InputMethodManager$$ExternalSyntheticLambda4
android.view.inputmethod.InputMethodManager$$ExternalSyntheticLambda5
+android.view.inputmethod.InputMethodManager$$ExternalSyntheticLambda6
android.view.inputmethod.InputMethodManager$1
android.view.inputmethod.InputMethodManager$2
android.view.inputmethod.InputMethodManager$6
@@ -9718,6 +9908,7 @@ android.view.textservice.SpellCheckerSession$SpellCheckerSessionListenerImpl$Spe
android.view.textservice.SpellCheckerSession$SpellCheckerSessionListenerImpl
android.view.textservice.SpellCheckerSession$SpellCheckerSessionParams$Builder
android.view.textservice.SpellCheckerSession$SpellCheckerSessionParams
+android.view.textservice.SpellCheckerSession-IA
android.view.textservice.SpellCheckerSession
android.view.textservice.SpellCheckerSubtype$1
android.view.textservice.SpellCheckerSubtype
@@ -10062,11 +10253,12 @@ android.widget.RemoteViews$$ExternalSyntheticLambda1
android.widget.RemoteViews$$ExternalSyntheticLambda2
android.widget.RemoteViews$$ExternalSyntheticLambda4
android.widget.RemoteViews$$ExternalSyntheticLambda5
+android.widget.RemoteViews$$ExternalSyntheticLambda6
+android.widget.RemoteViews$$ExternalSyntheticLambda7
android.widget.RemoteViews$1
android.widget.RemoteViews$2
android.widget.RemoteViews$Action
android.widget.RemoteViews$ActionException
-android.widget.RemoteViews$ApplicationInfoCache$$ExternalSyntheticLambda0
android.widget.RemoteViews$ApplicationInfoCache
android.widget.RemoteViews$AsyncApplyTask
android.widget.RemoteViews$AttributeReflectionAction
@@ -10260,12 +10452,49 @@ android.window.ClientWindowFrames-IA
android.window.ClientWindowFrames
android.window.CompatOnBackInvokedCallback
android.window.ConfigurationHelper
+android.window.DesktopModeFlags$$ExternalSyntheticLambda0
+android.window.DesktopModeFlags$$ExternalSyntheticLambda10
+android.window.DesktopModeFlags$$ExternalSyntheticLambda11
+android.window.DesktopModeFlags$$ExternalSyntheticLambda12
+android.window.DesktopModeFlags$$ExternalSyntheticLambda13
+android.window.DesktopModeFlags$$ExternalSyntheticLambda14
+android.window.DesktopModeFlags$$ExternalSyntheticLambda15
+android.window.DesktopModeFlags$$ExternalSyntheticLambda16
+android.window.DesktopModeFlags$$ExternalSyntheticLambda17
+android.window.DesktopModeFlags$$ExternalSyntheticLambda18
+android.window.DesktopModeFlags$$ExternalSyntheticLambda19
+android.window.DesktopModeFlags$$ExternalSyntheticLambda1
+android.window.DesktopModeFlags$$ExternalSyntheticLambda20
+android.window.DesktopModeFlags$$ExternalSyntheticLambda21
+android.window.DesktopModeFlags$$ExternalSyntheticLambda22
+android.window.DesktopModeFlags$$ExternalSyntheticLambda23
+android.window.DesktopModeFlags$$ExternalSyntheticLambda24
+android.window.DesktopModeFlags$$ExternalSyntheticLambda25
+android.window.DesktopModeFlags$$ExternalSyntheticLambda26
+android.window.DesktopModeFlags$$ExternalSyntheticLambda27
+android.window.DesktopModeFlags$$ExternalSyntheticLambda28
+android.window.DesktopModeFlags$$ExternalSyntheticLambda29
+android.window.DesktopModeFlags$$ExternalSyntheticLambda2
+android.window.DesktopModeFlags$$ExternalSyntheticLambda30
+android.window.DesktopModeFlags$$ExternalSyntheticLambda31
+android.window.DesktopModeFlags$$ExternalSyntheticLambda32
+android.window.DesktopModeFlags$$ExternalSyntheticLambda3
+android.window.DesktopModeFlags$$ExternalSyntheticLambda4
+android.window.DesktopModeFlags$$ExternalSyntheticLambda5
+android.window.DesktopModeFlags$$ExternalSyntheticLambda6
+android.window.DesktopModeFlags$$ExternalSyntheticLambda7
+android.window.DesktopModeFlags$$ExternalSyntheticLambda8
+android.window.DesktopModeFlags$$ExternalSyntheticLambda9
+android.window.DesktopModeFlags$ToggleOverride
+android.window.DesktopModeFlags
android.window.DisplayAreaAppearedInfo$1
android.window.DisplayAreaAppearedInfo
android.window.DisplayAreaInfo$1
android.window.DisplayAreaInfo
android.window.DisplayAreaOrganizer$1
android.window.DisplayAreaOrganizer
+android.window.IBackAnimationHandoffHandler$Stub
+android.window.IBackAnimationHandoffHandler
android.window.IDisplayAreaOrganizer$Stub$Proxy
android.window.IDisplayAreaOrganizer$Stub
android.window.IDisplayAreaOrganizer
@@ -10350,12 +10579,14 @@ android.window.SurfaceSyncGroup$$ExternalSyntheticLambda3
android.window.SurfaceSyncGroup$$ExternalSyntheticLambda4
android.window.SurfaceSyncGroup$$ExternalSyntheticLambda5
android.window.SurfaceSyncGroup$$ExternalSyntheticLambda6
+android.window.SurfaceSyncGroup$$ExternalSyntheticLambda7
android.window.SurfaceSyncGroup$1
android.window.SurfaceSyncGroup$2
android.window.SurfaceSyncGroup$ISurfaceSyncGroupImpl
android.window.SurfaceSyncGroup$SurfaceViewFrameCallback
android.window.SurfaceSyncGroup-IA
android.window.SurfaceSyncGroup
+android.window.SystemOverrideOnBackInvokedCallback
android.window.TaskAppearedInfo$1
android.window.TaskAppearedInfo
android.window.TaskFpsCallback
@@ -10396,6 +10627,7 @@ android.window.WindowMetricsController
android.window.WindowOnBackInvokedDispatcher$$ExternalSyntheticLambda0
android.window.WindowOnBackInvokedDispatcher$$ExternalSyntheticLambda1
android.window.WindowOnBackInvokedDispatcher$$ExternalSyntheticLambda2
+android.window.WindowOnBackInvokedDispatcher$$ExternalSyntheticLambda3
android.window.WindowOnBackInvokedDispatcher$Checker
android.window.WindowOnBackInvokedDispatcher$OnBackInvokedCallbackWrapper$$ExternalSyntheticLambda0
android.window.WindowOnBackInvokedDispatcher$OnBackInvokedCallbackWrapper$$ExternalSyntheticLambda1
@@ -10615,6 +10847,7 @@ com.android.i18n.timezone.internal.ByteBufferIterator
com.android.i18n.timezone.internal.Memory
com.android.i18n.timezone.internal.MemoryMappedFile
com.android.i18n.timezone.internal.NioBufferIterator
+com.android.i18n.util.ATrace
com.android.i18n.util.Log
com.android.icu.charset.CharsetDecoderICU
com.android.icu.charset.CharsetEncoderICU
@@ -11130,7 +11363,6 @@ com.android.internal.appwidget.IAppWidgetHost
com.android.internal.appwidget.IAppWidgetService$Stub$Proxy
com.android.internal.appwidget.IAppWidgetService$Stub
com.android.internal.appwidget.IAppWidgetService
-com.android.internal.backup.IBackupTransport$Stub$Proxy
com.android.internal.backup.IBackupTransport$Stub
com.android.internal.backup.IBackupTransport
com.android.internal.colorextraction.ColorExtractor$GradientColors
@@ -11234,20 +11466,42 @@ com.android.internal.hidden_from_bootclasspath.android.app.appfunctions.flags.Fl
com.android.internal.hidden_from_bootclasspath.android.app.job.FeatureFlags
com.android.internal.hidden_from_bootclasspath.android.app.job.FeatureFlagsImpl
com.android.internal.hidden_from_bootclasspath.android.app.job.Flags
+com.android.internal.hidden_from_bootclasspath.android.companion.virtualdevice.flags.FeatureFlags
+com.android.internal.hidden_from_bootclasspath.android.companion.virtualdevice.flags.FeatureFlagsImpl
+com.android.internal.hidden_from_bootclasspath.android.companion.virtualdevice.flags.Flags
com.android.internal.hidden_from_bootclasspath.android.content.pm.FeatureFlags
com.android.internal.hidden_from_bootclasspath.android.content.pm.FeatureFlagsImpl
com.android.internal.hidden_from_bootclasspath.android.content.pm.Flags
+com.android.internal.hidden_from_bootclasspath.android.media.audio.FeatureFlags
+com.android.internal.hidden_from_bootclasspath.android.media.audio.FeatureFlagsImpl
+com.android.internal.hidden_from_bootclasspath.android.media.audio.Flags
+com.android.internal.hidden_from_bootclasspath.android.net.http.FeatureFlags
+com.android.internal.hidden_from_bootclasspath.android.net.http.FeatureFlagsImpl
+com.android.internal.hidden_from_bootclasspath.android.net.http.Flags
com.android.internal.hidden_from_bootclasspath.android.os.FeatureFlags
com.android.internal.hidden_from_bootclasspath.android.os.FeatureFlagsImpl
com.android.internal.hidden_from_bootclasspath.android.os.Flags
com.android.internal.hidden_from_bootclasspath.android.permission.flags.FeatureFlags
com.android.internal.hidden_from_bootclasspath.android.permission.flags.FeatureFlagsImpl
com.android.internal.hidden_from_bootclasspath.android.permission.flags.Flags
+com.android.internal.hidden_from_bootclasspath.android.provider.flags.FeatureFlags
+com.android.internal.hidden_from_bootclasspath.android.provider.flags.FeatureFlagsImpl
+com.android.internal.hidden_from_bootclasspath.android.provider.flags.Flags
+com.android.internal.hidden_from_bootclasspath.android.security.FeatureFlags
+com.android.internal.hidden_from_bootclasspath.android.security.FeatureFlagsImpl
+com.android.internal.hidden_from_bootclasspath.android.security.Flags
com.android.internal.hidden_from_bootclasspath.android.service.notification.FeatureFlags
com.android.internal.hidden_from_bootclasspath.android.service.notification.FeatureFlagsImpl
com.android.internal.hidden_from_bootclasspath.android.service.notification.Flags
+com.android.internal.hidden_from_bootclasspath.com.android.libcore.FeatureFlags
+com.android.internal.hidden_from_bootclasspath.com.android.libcore.FeatureFlagsImpl
com.android.internal.hidden_from_bootclasspath.com.android.libcore.Flags
+com.android.internal.hidden_from_bootclasspath.com.android.server.power.optimization.FeatureFlags
+com.android.internal.hidden_from_bootclasspath.com.android.server.power.optimization.FeatureFlagsImpl
com.android.internal.hidden_from_bootclasspath.com.android.server.power.optimization.Flags
+com.android.internal.hidden_from_bootclasspath.com.android.settingslib.flags.FeatureFlags
+com.android.internal.hidden_from_bootclasspath.com.android.settingslib.flags.FeatureFlagsImpl
+com.android.internal.hidden_from_bootclasspath.com.android.settingslib.flags.Flags
com.android.internal.hidden_from_bootclasspath.com.android.window.flags.FeatureFlags
com.android.internal.hidden_from_bootclasspath.com.android.window.flags.FeatureFlagsImpl
com.android.internal.hidden_from_bootclasspath.com.android.window.flags.Flags
@@ -11264,6 +11518,7 @@ com.android.internal.infra.AndroidFuture$$ExternalSyntheticLambda1
com.android.internal.infra.AndroidFuture$$ExternalSyntheticLambda3
com.android.internal.infra.AndroidFuture$1
com.android.internal.infra.AndroidFuture$2
+com.android.internal.infra.AndroidFuture
com.android.internal.infra.GlobalWhitelistState
com.android.internal.infra.IAndroidFuture$Stub$Proxy
com.android.internal.infra.IAndroidFuture$Stub
@@ -11271,6 +11526,7 @@ com.android.internal.infra.IAndroidFuture
com.android.internal.infra.PerUser
com.android.internal.infra.RemoteStream$1
com.android.internal.infra.RemoteStream
+com.android.internal.infra.ServiceConnector$Impl$CompletionAwareJob
com.android.internal.infra.ServiceConnector$Impl
com.android.internal.infra.ServiceConnector$Job
com.android.internal.infra.ServiceConnector$VoidJob
@@ -11300,7 +11556,6 @@ com.android.internal.inputmethod.IRemoteInputConnection$Stub
com.android.internal.inputmethod.IRemoteInputConnection
com.android.internal.inputmethod.ImeTracing
com.android.internal.inputmethod.ImeTracingClientImpl
-com.android.internal.inputmethod.ImeTracingPerfettoImpl
com.android.internal.inputmethod.ImeTracingServerImpl
com.android.internal.inputmethod.InputBindResult$1
com.android.internal.inputmethod.InputBindResult-IA
@@ -11388,6 +11643,7 @@ com.android.internal.os.AndroidPrintStream
com.android.internal.os.AppFuseMount$1
com.android.internal.os.AppFuseMount
com.android.internal.os.AppIdToPackageMap
+com.android.internal.os.ApplicationSharedMemory
com.android.internal.os.AtomicDirectory
com.android.internal.os.BackgroundThread
com.android.internal.os.BatteryStatsHistory$HistoryStepDetailsCalculator
@@ -11403,7 +11659,9 @@ com.android.internal.os.BinderCallsStats$CallStatKey
com.android.internal.os.BinderCallsStats$ExportedCallStat
com.android.internal.os.BinderCallsStats$Injector
com.android.internal.os.BinderCallsStats$OverflowBinder
+com.android.internal.os.BinderCallsStats$SettingsObserver
com.android.internal.os.BinderCallsStats$UidEntry
+com.android.internal.os.BinderCallsStats
com.android.internal.os.BinderDeathDispatcher$RecipientsInfo
com.android.internal.os.BinderDeathDispatcher-IA
com.android.internal.os.BinderDeathDispatcher
@@ -11426,6 +11684,8 @@ com.android.internal.os.CachedDeviceState$TimeInStateStopwatch
com.android.internal.os.CachedDeviceState
com.android.internal.os.ClassLoaderFactory
com.android.internal.os.Clock
+com.android.internal.os.DebugStore$DebugStoreNative
+com.android.internal.os.DebugStore$DebugStoreNativeImpl
com.android.internal.os.DebugStore
com.android.internal.os.FeatureFlags
com.android.internal.os.FeatureFlagsImpl
@@ -11482,7 +11742,6 @@ com.android.internal.os.KernelSingleUidTimeReader
com.android.internal.os.LoggingPrintStream$1
com.android.internal.os.LoggingPrintStream
com.android.internal.os.LongArrayMultiStateCounter$1
-com.android.internal.os.LongArrayMultiStateCounter$LongArrayContainer
com.android.internal.os.LongArrayMultiStateCounter
com.android.internal.os.LongMultiStateCounter$1
com.android.internal.os.LongMultiStateCounter
@@ -11534,6 +11793,7 @@ com.android.internal.os.ZygoteServer$$ExternalSyntheticLambda0
com.android.internal.os.ZygoteServer$UsapPoolRefillAction
com.android.internal.os.ZygoteServer
com.android.internal.os.logging.MetricsLoggerWrapper
+com.android.internal.pm.RoSystemFeatures
com.android.internal.pm.parsing.PackageParser2$Callback
com.android.internal.pm.parsing.PackageParserException
com.android.internal.pm.pkg.component.flags.FeatureFlags
@@ -11556,6 +11816,8 @@ com.android.internal.policy.DecorView
com.android.internal.policy.GestureNavigationSettingsObserver$$ExternalSyntheticLambda0
com.android.internal.policy.GestureNavigationSettingsObserver$1
com.android.internal.policy.GestureNavigationSettingsObserver
+com.android.internal.policy.IDeviceLockedStateListener$Stub
+com.android.internal.policy.IDeviceLockedStateListener
com.android.internal.policy.IKeyguardDismissCallback$Stub$Proxy
com.android.internal.policy.IKeyguardDismissCallback$Stub
com.android.internal.policy.IKeyguardDismissCallback
@@ -11599,13 +11861,28 @@ com.android.internal.policy.TransitionAnimation$$ExternalSyntheticLambda1
com.android.internal.policy.TransitionAnimation
com.android.internal.policy.WearGestureInterceptionDetector
com.android.internal.power.ModemPowerProfile
+com.android.internal.protolog.IProtoLogClient$Stub
+com.android.internal.protolog.IProtoLogClient
+com.android.internal.protolog.IProtoLogConfigurationService
+com.android.internal.protolog.PerfettoProtoLogImpl$$ExternalSyntheticLambda4
+com.android.internal.protolog.PerfettoProtoLogImpl$$ExternalSyntheticLambda5
+com.android.internal.protolog.PerfettoProtoLogImpl$$ExternalSyntheticLambda6
+com.android.internal.protolog.PerfettoProtoLogImpl
+com.android.internal.protolog.ProtoLog
+com.android.internal.protolog.ProtoLogCacheUpdater
+com.android.internal.protolog.ProtoLogDataSource$Instance$TracingInstanceStartCallback
+com.android.internal.protolog.ProtoLogDataSource$Instance$TracingInstanceStopCallback
+com.android.internal.protolog.ProtoLogDataSource
com.android.internal.protolog.ProtoLogGroup
com.android.internal.protolog.ProtoLogImpl
com.android.internal.protolog.ProtoLogViewerConfigReader
+com.android.internal.protolog.UnprocessedPerfettoProtoLogImpl$$ExternalSyntheticLambda0
+com.android.internal.protolog.UnprocessedPerfettoProtoLogImpl
com.android.internal.protolog.common.BitmaskConversionException
+com.android.internal.protolog.common.IProtoLog
com.android.internal.protolog.common.IProtoLogGroup
com.android.internal.protolog.common.LogDataType
-com.android.internal.ravenwood.RavenwoodEnvironment$Workaround
+com.android.internal.protolog.common.LogLevel
com.android.internal.ravenwood.RavenwoodEnvironment
com.android.internal.security.VerityUtils
com.android.internal.statusbar.IAddTileResultCallback
@@ -11824,7 +12101,6 @@ com.android.internal.telephony.IMms
com.android.internal.telephony.INumberVerificationCallback$Stub$Proxy
com.android.internal.telephony.INumberVerificationCallback$Stub
com.android.internal.telephony.INumberVerificationCallback
-com.android.internal.telephony.IOnSubscriptionsChangedListener$Stub$Proxy
com.android.internal.telephony.IOnSubscriptionsChangedListener$Stub
com.android.internal.telephony.IOnSubscriptionsChangedListener
com.android.internal.telephony.IOns$Stub$Proxy
@@ -11930,7 +12206,6 @@ com.android.internal.telephony.NetworkFactoryLegacyImpl$1
com.android.internal.telephony.NetworkFactoryLegacyImpl$NetworkRequestInfo
com.android.internal.telephony.NetworkFactoryLegacyImpl
com.android.internal.telephony.NetworkFactoryShim
-com.android.internal.telephony.NetworkRegistrationManager$NetworkRegStateCallback
com.android.internal.telephony.NetworkRegistrationManager$NetworkServiceConnection
com.android.internal.telephony.NetworkRegistrationManager$RegManagerDeathRecipient
com.android.internal.telephony.NetworkRegistrationManager
@@ -11946,11 +12221,15 @@ com.android.internal.telephony.NetworkScanRequestTracker
com.android.internal.telephony.NetworkScanResult$1
com.android.internal.telephony.NetworkScanResult
com.android.internal.telephony.NetworkTypeController$1
+com.android.internal.telephony.NetworkTypeController$3
+com.android.internal.telephony.NetworkTypeController$4
com.android.internal.telephony.NetworkTypeController$DefaultState
com.android.internal.telephony.NetworkTypeController$IdleState
com.android.internal.telephony.NetworkTypeController$LegacyState
com.android.internal.telephony.NetworkTypeController$LteConnectedState
+com.android.internal.telephony.NetworkTypeController$NrConnectedAdvancedState
com.android.internal.telephony.NetworkTypeController$NrConnectedState
+com.android.internal.telephony.NetworkTypeController$NrIdleState
com.android.internal.telephony.NetworkTypeController$OverrideTimerRule
com.android.internal.telephony.NetworkTypeController
com.android.internal.telephony.NitzData
@@ -12012,7 +12291,6 @@ com.android.internal.telephony.PhoneSubInfoController$$ExternalSyntheticLambda8
com.android.internal.telephony.PhoneSubInfoController$$ExternalSyntheticLambda9
com.android.internal.telephony.PhoneSubInfoController$CallPhoneMethodHelper
com.android.internal.telephony.PhoneSubInfoController$PermissionCheckHelper
-com.android.internal.telephony.PhoneSubInfoController
com.android.internal.telephony.ProxyController$1
com.android.internal.telephony.ProxyController
com.android.internal.telephony.RIL$RadioProxyDeathRecipient
@@ -12301,7 +12579,6 @@ com.android.internal.telephony.d2d.TransportProtocol
com.android.internal.telephony.data.DataCallback
com.android.internal.telephony.data.DataNetworkController$DataNetworkControllerCallback
com.android.internal.telephony.data.DataSettingsManager$DataSettingsManagerCallback
-com.android.internal.telephony.data.TelephonyNetworkFactory
com.android.internal.telephony.emergency.EmergencyNumberTracker$1
com.android.internal.telephony.emergency.EmergencyNumberTracker
com.android.internal.telephony.euicc.EuiccCardController$10
@@ -12507,6 +12784,7 @@ com.android.internal.telephony.ims.ImsResolver$5
com.android.internal.telephony.ims.ImsResolver$6
com.android.internal.telephony.ims.ImsResolver$7
com.android.internal.telephony.ims.ImsResolver$8
+com.android.internal.telephony.ims.ImsResolver$ActivityManagerProxy
com.android.internal.telephony.ims.ImsResolver$ImsDynamicQueryManagerFactory
com.android.internal.telephony.ims.ImsResolver$ImsServiceControllerFactory
com.android.internal.telephony.ims.ImsResolver$ImsServiceInfo
@@ -12567,6 +12845,7 @@ com.android.internal.telephony.imsphone.ImsPhoneCallTracker$$ExternalSyntheticLa
com.android.internal.telephony.imsphone.ImsPhoneCallTracker$$ExternalSyntheticLambda2
com.android.internal.telephony.imsphone.ImsPhoneCallTracker$$ExternalSyntheticLambda3
com.android.internal.telephony.imsphone.ImsPhoneCallTracker$10
+com.android.internal.telephony.imsphone.ImsPhoneCallTracker$11
com.android.internal.telephony.imsphone.ImsPhoneCallTracker$12
com.android.internal.telephony.imsphone.ImsPhoneCallTracker$1
com.android.internal.telephony.imsphone.ImsPhoneCallTracker$2
@@ -12584,7 +12863,6 @@ com.android.internal.telephony.imsphone.ImsPhoneCallTracker$HoldSwapState
com.android.internal.telephony.imsphone.ImsPhoneCallTracker$MmTelFeatureListener
com.android.internal.telephony.imsphone.ImsPhoneCallTracker$PhoneStateListener
com.android.internal.telephony.imsphone.ImsPhoneCallTracker$SharedPreferenceProxy
-com.android.internal.telephony.imsphone.ImsPhoneCallTracker$VtDataUsageProvider
com.android.internal.telephony.imsphone.ImsPhoneCallTracker
com.android.internal.telephony.imsphone.ImsPhoneCommandInterface
com.android.internal.telephony.imsphone.ImsPhoneConnection$$ExternalSyntheticLambda0
@@ -13121,7 +13399,6 @@ com.android.internal.util.ExponentiallyBucketedHistogram
com.android.internal.util.FastMath
com.android.internal.util.FastPrintWriter$DummyWriter
com.android.internal.util.FastPrintWriter-IA
-com.android.internal.util.FastPrintWriter
com.android.internal.util.FastXmlSerializer
com.android.internal.util.FileRotator$FileInfo
com.android.internal.util.FileRotator$Reader
@@ -13142,7 +13419,6 @@ com.android.internal.util.HeavyHitterSketch
com.android.internal.util.HexDump
com.android.internal.util.IState
com.android.internal.util.ImageUtils
-com.android.internal.util.IndentingPrintWriter
com.android.internal.util.IntPair
com.android.internal.util.JournaledFile
com.android.internal.util.LatencyTracker$$ExternalSyntheticLambda0
@@ -13396,6 +13672,9 @@ com.android.internal.widget.floatingtoolbar.FloatingToolbarPopup
com.android.libcore.FeatureFlags
com.android.libcore.FeatureFlagsImpl
com.android.libcore.Flags
+com.android.libcore.readonly.FeatureFlags
+com.android.libcore.readonly.FeatureFlagsImpl
+com.android.libcore.readonly.Flags
com.android.media.flags.FeatureFlags
com.android.media.flags.FeatureFlagsImpl
com.android.media.flags.Flags
@@ -13419,6 +13698,8 @@ com.android.net.module.util.NetworkCapabilitiesUtils
com.android.net.module.util.NetworkIdentityUtils
com.android.net.module.util.NetworkStackConstants
com.android.net.module.util.ProxyUtils
+com.android.nfc.x.android.nfc.FeatureFlags
+com.android.nfc.x.android.nfc.FeatureFlagsImpl
com.android.nfc.x.android.nfc.Flags
com.android.okhttp.Address
com.android.okhttp.AndroidInternal
@@ -13580,12 +13861,12 @@ com.android.okhttp.okio.Timeout$1
com.android.okhttp.okio.Timeout
com.android.okhttp.okio.Util
com.android.org.bouncycastle.asn1.ASN1ApplicationSpecific
+com.android.org.bouncycastle.asn1.ASN1ApplicationSpecificParser
com.android.org.bouncycastle.asn1.ASN1BitString
com.android.org.bouncycastle.asn1.ASN1Boolean
com.android.org.bouncycastle.asn1.ASN1Choice
com.android.org.bouncycastle.asn1.ASN1Encodable
com.android.org.bouncycastle.asn1.ASN1EncodableVector
-com.android.org.bouncycastle.asn1.ASN1Enumerated$$ExternalSyntheticOutline0
com.android.org.bouncycastle.asn1.ASN1Enumerated
com.android.org.bouncycastle.asn1.ASN1Exception
com.android.org.bouncycastle.asn1.ASN1External
@@ -13609,6 +13890,7 @@ com.android.org.bouncycastle.asn1.ASN1SetParser
com.android.org.bouncycastle.asn1.ASN1StreamParser
com.android.org.bouncycastle.asn1.ASN1String
com.android.org.bouncycastle.asn1.ASN1TaggedObject
+com.android.org.bouncycastle.asn1.ASN1TaggedObjectParser
com.android.org.bouncycastle.asn1.ASN1UTCTime
com.android.org.bouncycastle.asn1.BERApplicationSpecific
com.android.org.bouncycastle.asn1.BERApplicationSpecificParser
@@ -13619,6 +13901,7 @@ com.android.org.bouncycastle.asn1.BERSequenceParser
com.android.org.bouncycastle.asn1.BERSet
com.android.org.bouncycastle.asn1.BERSetParser
com.android.org.bouncycastle.asn1.BERTaggedObjectParser
+com.android.org.bouncycastle.asn1.BERTags
com.android.org.bouncycastle.asn1.ConstructedOctetStream
com.android.org.bouncycastle.asn1.DERBMPString
com.android.org.bouncycastle.asn1.DERBitString
@@ -13650,6 +13933,7 @@ com.android.org.bouncycastle.asn1.InMemoryRepresentable
com.android.org.bouncycastle.asn1.IndefiniteLengthInputStream
com.android.org.bouncycastle.asn1.LazyEncodedSequence
com.android.org.bouncycastle.asn1.LimitedInputStream
+com.android.org.bouncycastle.asn1.OIDTokenizer
com.android.org.bouncycastle.asn1.StreamUtil
com.android.org.bouncycastle.asn1.bc.BCObjectIdentifiers
com.android.org.bouncycastle.asn1.misc.MiscObjectIdentifiers
@@ -13657,6 +13941,7 @@ com.android.org.bouncycastle.asn1.nist.NISTObjectIdentifiers
com.android.org.bouncycastle.asn1.oiw.OIWObjectIdentifiers
com.android.org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers
com.android.org.bouncycastle.asn1.x500.X500Name
+com.android.org.bouncycastle.asn1.x500.X500NameStyle
com.android.org.bouncycastle.asn1.x500.style.AbstractX500NameStyle
com.android.org.bouncycastle.asn1.x500.style.BCStyle
com.android.org.bouncycastle.asn1.x509.AlgorithmIdentifier
@@ -13679,12 +13964,14 @@ com.android.org.bouncycastle.crypto.DataLengthException
com.android.org.bouncycastle.crypto.Digest
com.android.org.bouncycastle.crypto.ExtendedDigest
com.android.org.bouncycastle.crypto.InvalidCipherTextException
+com.android.org.bouncycastle.crypto.Mac
com.android.org.bouncycastle.crypto.OutputLengthException
com.android.org.bouncycastle.crypto.PBEParametersGenerator
com.android.org.bouncycastle.crypto.RuntimeCryptoException
com.android.org.bouncycastle.crypto.Wrapper
com.android.org.bouncycastle.crypto.digests.AndroidDigestFactory
com.android.org.bouncycastle.crypto.digests.AndroidDigestFactoryBouncyCastle
+com.android.org.bouncycastle.crypto.digests.AndroidDigestFactoryInterface
com.android.org.bouncycastle.crypto.digests.AndroidDigestFactoryOpenSSL
com.android.org.bouncycastle.crypto.digests.EncodableDigest
com.android.org.bouncycastle.crypto.digests.GeneralDigest
@@ -13711,6 +13998,7 @@ com.android.org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator
com.android.org.bouncycastle.crypto.io.MacInputStream
com.android.org.bouncycastle.crypto.macs.HMac
com.android.org.bouncycastle.crypto.modes.AEADBlockCipher
+com.android.org.bouncycastle.crypto.modes.AEADCipher
com.android.org.bouncycastle.crypto.modes.CBCBlockCipher
com.android.org.bouncycastle.crypto.paddings.BlockCipherPadding
com.android.org.bouncycastle.crypto.paddings.PKCS7Padding
@@ -13726,16 +14014,21 @@ com.android.org.bouncycastle.crypto.params.DSAValidationParameters
com.android.org.bouncycastle.crypto.params.KeyParameter
com.android.org.bouncycastle.crypto.params.ParametersWithIV
com.android.org.bouncycastle.crypto.params.ParametersWithRandom
+com.android.org.bouncycastle.jcajce.PBKDFKey
com.android.org.bouncycastle.jcajce.PKCS12Key
+com.android.org.bouncycastle.jcajce.PKCS12KeyWithParameters
com.android.org.bouncycastle.jcajce.provider.asymmetric.DH$Mappings
com.android.org.bouncycastle.jcajce.provider.asymmetric.DH
com.android.org.bouncycastle.jcajce.provider.asymmetric.DSA$Mappings
+com.android.org.bouncycastle.jcajce.provider.asymmetric.EC$Mappings
com.android.org.bouncycastle.jcajce.provider.asymmetric.RSA$Mappings
com.android.org.bouncycastle.jcajce.provider.asymmetric.RSA
+com.android.org.bouncycastle.jcajce.provider.asymmetric.X509$Mappings
com.android.org.bouncycastle.jcajce.provider.asymmetric.dh.KeyFactorySpi
com.android.org.bouncycastle.jcajce.provider.asymmetric.dsa.DSAUtil
com.android.org.bouncycastle.jcajce.provider.asymmetric.dsa.KeyFactorySpi
com.android.org.bouncycastle.jcajce.provider.asymmetric.rsa.CipherSpi$NoPadding
+com.android.org.bouncycastle.jcajce.provider.asymmetric.rsa.CipherSpi
com.android.org.bouncycastle.jcajce.provider.asymmetric.rsa.KeyFactorySpi
com.android.org.bouncycastle.jcajce.provider.asymmetric.rsa.RSAUtil
com.android.org.bouncycastle.jcajce.provider.asymmetric.util.BaseCipherSpi
@@ -13748,7 +14041,8 @@ com.android.org.bouncycastle.jcajce.provider.config.ConfigurableProvider
com.android.org.bouncycastle.jcajce.provider.config.ProviderConfiguration
com.android.org.bouncycastle.jcajce.provider.config.ProviderConfigurationPermission
com.android.org.bouncycastle.jcajce.provider.digest.DigestAlgorithmProvider
-com.android.org.bouncycastle.jcajce.provider.digest.SHA1$Mappings$$ExternalSyntheticOutline0
+com.android.org.bouncycastle.jcajce.provider.digest.MD5$Mappings
+com.android.org.bouncycastle.jcajce.provider.digest.MD5
com.android.org.bouncycastle.jcajce.provider.digest.SHA1$Mappings
com.android.org.bouncycastle.jcajce.provider.digest.SHA1
com.android.org.bouncycastle.jcajce.provider.digest.SHA224$Mappings
@@ -13764,6 +14058,7 @@ com.android.org.bouncycastle.jcajce.provider.keystore.PKCS12$Mappings
com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi$Std
com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi$StoreEntry
com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi
+com.android.org.bouncycastle.jcajce.provider.symmetric.AES$ECB$1
com.android.org.bouncycastle.jcajce.provider.symmetric.AES$ECB
com.android.org.bouncycastle.jcajce.provider.symmetric.AES$Mappings
com.android.org.bouncycastle.jcajce.provider.symmetric.AES
@@ -13798,6 +14093,7 @@ com.android.org.bouncycastle.jcajce.provider.symmetric.util.BaseSecretKeyFactory
com.android.org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher$ErasableOutputStream
com.android.org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher$InvalidKeyOrParametersException
com.android.org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher
+com.android.org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider
com.android.org.bouncycastle.jcajce.provider.symmetric.util.ClassUtil$1
com.android.org.bouncycastle.jcajce.provider.symmetric.util.ClassUtil
com.android.org.bouncycastle.jcajce.provider.symmetric.util.GcmSpecUtil$2
@@ -13808,11 +14104,14 @@ com.android.org.bouncycastle.jcajce.provider.util.AlgorithmProvider
com.android.org.bouncycastle.jcajce.provider.util.AsymmetricAlgorithmProvider
com.android.org.bouncycastle.jcajce.provider.util.AsymmetricKeyInfoConverter
com.android.org.bouncycastle.jcajce.provider.util.DigestFactory
+com.android.org.bouncycastle.jcajce.spec.AEADParameterSpec
com.android.org.bouncycastle.jcajce.spec.PBKDF2KeySpec
com.android.org.bouncycastle.jcajce.util.BCJcaJceHelper
com.android.org.bouncycastle.jcajce.util.DefaultJcaJceHelper
com.android.org.bouncycastle.jcajce.util.JcaJceHelper
+com.android.org.bouncycastle.jcajce.util.ProviderJcaJceHelper
com.android.org.bouncycastle.jce.X509Principal
+com.android.org.bouncycastle.jce.interfaces.BCKeyStore
com.android.org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier
com.android.org.bouncycastle.jce.provider.BouncyCastleProvider$1
com.android.org.bouncycastle.jce.provider.BouncyCastleProvider$PrivateProvider
@@ -13822,13 +14121,16 @@ com.android.org.bouncycastle.jce.provider.CertStoreCollectionSpi
com.android.org.bouncycastle.jce.provider.X509CRLObject
com.android.org.bouncycastle.util.Arrays
com.android.org.bouncycastle.util.BigIntegers
+com.android.org.bouncycastle.util.Encodable
com.android.org.bouncycastle.util.Integers
+com.android.org.bouncycastle.util.Iterable
com.android.org.bouncycastle.util.Memoable
com.android.org.bouncycastle.util.Pack
com.android.org.bouncycastle.util.Properties$1
com.android.org.bouncycastle.util.Properties
com.android.org.bouncycastle.util.Strings$1
com.android.org.bouncycastle.util.Strings
+com.android.org.bouncycastle.util.encoders.Encoder
com.android.org.bouncycastle.util.encoders.Hex
com.android.org.bouncycastle.util.encoders.HexEncoder
com.android.org.bouncycastle.util.io.Streams
@@ -13894,6 +14196,9 @@ com.android.server.criticalevents.nano.CriticalEventProto$JavaCrash
com.android.server.criticalevents.nano.CriticalEventProto$NativeCrash
com.android.server.criticalevents.nano.CriticalEventProto$SystemServerStarted
com.android.server.criticalevents.nano.CriticalEventProto$Watchdog
+com.android.server.display.feature.flags.FeatureFlags
+com.android.server.display.feature.flags.FeatureFlagsImpl
+com.android.server.display.feature.flags.Flags
com.android.server.job.JobSchedulerInternal$JobStorePersistStats
com.android.server.net.BaseNetdEventCallback
com.android.server.net.BaseNetworkObserver
@@ -15624,6 +15929,7 @@ java.util.ImmutableCollections$Access$1
java.util.ImmutableCollections$Access
java.util.ImmutableCollections$MapN$1
java.util.ImmutableCollections$MapN$MapNIterator
+java.util.ImmutableCollections$SetN$SetNIterator
java.util.ImmutableCollections$SubList
java.util.ImmutableCollections-IA
java.util.InputMismatchException
@@ -15802,6 +16108,7 @@ java.util.concurrent.ConcurrentHashMap$ForEachTransformedMappingTask
java.util.concurrent.ConcurrentHashMap$ForEachTransformedValueTask
java.util.concurrent.ConcurrentHashMap$ForEachValueTask
java.util.concurrent.ConcurrentHashMap$ForwardingNode
+java.util.concurrent.ConcurrentHashMap$KeyIterator
java.util.concurrent.ConcurrentHashMap$KeySetView
java.util.concurrent.ConcurrentHashMap$KeySpliterator
java.util.concurrent.ConcurrentHashMap$MapReduceEntriesTask
@@ -15862,12 +16169,12 @@ java.util.concurrent.Delayed
java.util.concurrent.ExecutionException
java.util.concurrent.Executor
java.util.concurrent.ExecutorService
+java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService$$ExternalSyntheticLambda0
java.util.concurrent.Executors$DefaultThreadFactory
java.util.concurrent.Executors$DelegatedExecutorService
java.util.concurrent.Executors$RunnableAdapter
java.util.concurrent.Executors
java.util.concurrent.ForkJoinPool$1
-java.util.concurrent.ForkJoinPool$DefaultCommonPoolForkJoinWorkerThreadFactory
java.util.concurrent.ForkJoinPool$DefaultForkJoinWorkerThreadFactory
java.util.concurrent.ForkJoinPool$ForkJoinWorkerThreadFactory
java.util.concurrent.ForkJoinPool$ManagedBlocker
@@ -15876,6 +16183,7 @@ java.util.concurrent.ForkJoinPool
java.util.concurrent.ForkJoinTask$Aux
java.util.concurrent.ForkJoinTask
java.util.concurrent.ForkJoinWorkerThread
+java.util.concurrent.Future$State
java.util.concurrent.Future
java.util.concurrent.FutureTask$WaitNode
java.util.concurrent.FutureTask
@@ -15886,6 +16194,8 @@ java.util.concurrent.LinkedBlockingDeque
java.util.concurrent.LinkedBlockingQueue$Itr
java.util.concurrent.LinkedBlockingQueue$Node
java.util.concurrent.LinkedBlockingQueue
+java.util.concurrent.LinkedTransferQueue$DualNode
+java.util.concurrent.LinkedTransferQueue
java.util.concurrent.Phaser
java.util.concurrent.PriorityBlockingQueue
java.util.concurrent.RejectedExecutionException
@@ -15909,6 +16219,7 @@ java.util.concurrent.ThreadPoolExecutor$Worker
java.util.concurrent.TimeUnit$1
java.util.concurrent.TimeUnit
java.util.concurrent.TimeoutException
+java.util.concurrent.TransferQueue
java.util.concurrent.atomic.AtomicBoolean
java.util.concurrent.atomic.AtomicInteger
java.util.concurrent.atomic.AtomicIntegerArray
@@ -16281,6 +16592,7 @@ java.util.zip.Deflater-IA
java.util.zip.Deflater
java.util.zip.DeflaterOutputStream
java.util.zip.GZIPInputStream$1
+java.util.zip.GZIPInputStream
java.util.zip.GZIPOutputStream
java.util.zip.Inflater$InflaterZStreamRef
java.util.zip.Inflater-IA
@@ -16539,7 +16851,9 @@ jdk.internal.access.JavaIOFileDescriptorAccess
jdk.internal.access.JavaObjectInputStreamAccess
jdk.internal.access.JavaUtilCollectionAccess
jdk.internal.access.SharedSecrets
+jdk.internal.math.DoubleToDecimal
jdk.internal.math.FDBigInteger
+jdk.internal.math.FloatToDecimal
jdk.internal.math.FloatingDecimal$1
jdk.internal.math.FloatingDecimal$ASCIIToBinaryBuffer
jdk.internal.math.FloatingDecimal$ASCIIToBinaryConverter
@@ -16549,9 +16863,11 @@ jdk.internal.math.FloatingDecimal$ExceptionalBinaryToASCIIBuffer
jdk.internal.math.FloatingDecimal$HexFloatPattern
jdk.internal.math.FloatingDecimal$PreparedASCIIToBinaryBuffer
jdk.internal.math.FloatingDecimal
+jdk.internal.math.FormattedFPDecimal
jdk.internal.math.FormattedFloatingDecimal$1
jdk.internal.math.FormattedFloatingDecimal$Form
jdk.internal.math.FormattedFloatingDecimal
+jdk.internal.math.MathUtils
jdk.internal.misc.TerminatingThreadLocal$1
jdk.internal.misc.TerminatingThreadLocal
jdk.internal.misc.Unsafe
@@ -16654,6 +16970,7 @@ libcore.util.FP16
libcore.util.HexEncoding
libcore.util.NativeAllocationRegistry$CleanerRunner
libcore.util.NativeAllocationRegistry$CleanerThunk
+libcore.util.NativeAllocationRegistry$Metrics
libcore.util.NativeAllocationRegistry
libcore.util.Objects
libcore.util.SneakyThrow
@@ -16675,7 +16992,9 @@ org.apache.harmony.xml.dom.CDATASectionImpl
org.apache.harmony.xml.dom.CharacterDataImpl
org.apache.harmony.xml.dom.CommentImpl
org.apache.harmony.xml.dom.DOMImplementationImpl
+org.apache.harmony.xml.dom.DocumentImpl
org.apache.harmony.xml.dom.DocumentTypeImpl
+org.apache.harmony.xml.dom.ElementImpl
org.apache.harmony.xml.dom.EntityReferenceImpl
org.apache.harmony.xml.dom.InnerNodeImpl
org.apache.harmony.xml.dom.LeafNodeImpl
@@ -16683,6 +17002,7 @@ org.apache.harmony.xml.dom.NodeImpl$1
org.apache.harmony.xml.dom.NodeImpl
org.apache.harmony.xml.dom.NodeListImpl
org.apache.harmony.xml.dom.ProcessingInstructionImpl
+org.apache.harmony.xml.dom.TextImpl
org.apache.harmony.xml.parsers.DocumentBuilderFactoryImpl
org.apache.harmony.xml.parsers.DocumentBuilderImpl
org.apache.harmony.xml.parsers.SAXParserFactoryImpl
@@ -16893,6 +17213,7 @@ sun.nio.fs.UnixFileSystemProvider$3
sun.nio.fs.UnixFileSystemProvider
sun.nio.fs.UnixMountEntry
sun.nio.fs.UnixNativeDispatcher
+sun.nio.fs.UnixPath
sun.nio.fs.UnixSecureDirectoryStream
sun.nio.fs.Util
sun.reflect.Reflection
@@ -17124,6 +17445,7 @@ sun.util.logging.PlatformLogger
[Landroid.animation.Keyframe$ObjectKeyframe;
[Landroid.animation.Keyframe;
[Landroid.animation.PropertyValuesHolder;
+[Landroid.app.Activity;
[Landroid.app.AppOpInfo;
[Landroid.app.BackStackState;
[Landroid.app.FragmentState;
@@ -17378,6 +17700,7 @@ sun.util.logging.PlatformLogger
[Landroid.icu.util.ULocale;
[Landroid.icu.util.UResourceBundle$RootType;
[Landroid.icu.util.UniversalTimeScale$TimeScaleData;
+[Landroid.internal.aconfig.storage.FileType;
[Landroid.media.AudioAttributes;
[Landroid.media.AudioDeviceInfo;
[Landroid.media.AudioGain;
@@ -17399,6 +17722,13 @@ sun.util.logging.PlatformLogger
[Landroid.net.NetworkKey;
[Landroid.net.Uri;
[Landroid.net.rtp.AudioCodec;
+[Landroid.nfc.NdefMessage;
+[Landroid.nfc.NdefRecord;
+[Landroid.nfc.NfcAntennaInfo;
+[Landroid.nfc.Tag;
+[Landroid.nfc.TechListParcel;
+[Landroid.nfc.WlcListenerDeviceInfo;
+[Landroid.nfc.cardemulation.PollingFrame;
[Landroid.os.AsyncTask$Status;
[Landroid.os.BatteryConsumer$Key;
[Landroid.os.BatteryStats$BitDescription;
@@ -17535,6 +17865,8 @@ sun.util.logging.PlatformLogger
[Landroid.widget.SpellChecker$SpellParser;
[Landroid.widget.TextView$BufferType;
[Landroid.widget.TextView$ChangeWatcher;
+[Landroid.window.DesktopModeFlags$ToggleOverride;
+[Landroid.window.DesktopModeFlags;
[Landroid.window.TransitionFilter$Requirement;
[Lcom.android.framework.protobuf.GeneratedMessageLite$MethodToInvoke;
[Lcom.android.framework.protobuf.MessageInfoFactory;
@@ -17554,6 +17886,8 @@ sun.util.logging.PlatformLogger
[Lcom.android.internal.os.ZygoteServer$UsapPoolRefillAction;
[Lcom.android.internal.policy.PhoneWindow$PanelFeatureState;
[Lcom.android.internal.protolog.ProtoLogGroup;
+[Lcom.android.internal.protolog.common.IProtoLogGroup;
+[Lcom.android.internal.protolog.common.LogLevel;
[Lcom.android.internal.statusbar.LetterboxDetails;
[Lcom.android.internal.statusbar.NotificationVisibility$NotificationLocation;
[Lcom.android.internal.telephony.Call$SrvccState;
@@ -17614,6 +17948,7 @@ sun.util.logging.PlatformLogger
[Lcom.android.internal.telephony.uicc.UsimServiceTable$UsimService;
[Lcom.android.internal.util.StateMachine$SmHandler$StateInfo;
[Lcom.android.internal.view.AppearanceRegion;
+[Lcom.android.internal.widget.LockPatternView$Cell;
[Lcom.android.okhttp.CipherSuite;
[Lcom.android.okhttp.ConnectionSpec;
[Lcom.android.okhttp.HttpUrl$Builder$ParseResult;
@@ -17634,16 +17969,20 @@ sun.util.logging.PlatformLogger
[Lgov.nist.javax.sip.DialogTimeoutEvent$Reason;
[Ljava.io.File$PathStatus;
[Ljava.io.File;
+[Ljava.io.FileDescriptor;
+[Ljava.io.IOException;
[Ljava.io.InputStream;
[Ljava.io.ObjectInputStream$HandleTable$HandleList;
[Ljava.io.ObjectStreamClass$ClassDataSlot;
[Ljava.io.ObjectStreamClass$MemberSignature;
[Ljava.io.ObjectStreamField;
+[Ljava.lang.Boolean;
[Ljava.lang.Byte;
[Ljava.lang.CharSequence;
[Ljava.lang.Character$UnicodeBlock;
[Ljava.lang.Character;
[Ljava.lang.Class;
+[Ljava.lang.ClassLoader;
[Ljava.lang.ClassValue$Entry;
[Ljava.lang.Comparable;
[Ljava.lang.Daemons$Daemon;
@@ -17666,6 +18005,7 @@ sun.util.logging.PlatformLogger
[Ljava.lang.ThreadGroup;
[Ljava.lang.ThreadLocal$ThreadLocalMap$Entry;
[Ljava.lang.Throwable;
+[Ljava.lang.Void;
[Ljava.lang.annotation.Annotation;
[Ljava.lang.constant.ClassDesc;
[Ljava.lang.constant.Constable;
@@ -17688,6 +18028,7 @@ sun.util.logging.PlatformLogger
[Ljava.lang.reflect.TypeVariable;
[Ljava.math.BigDecimal;
[Ljava.math.BigInteger;
+[Ljava.math.MathContext;
[Ljava.math.RoundingMode;
[Ljava.net.Authenticator$RequestorType;
[Ljava.net.InetAddress;
@@ -17720,6 +18061,7 @@ sun.util.logging.PlatformLogger
[Ljava.security.cert.X509CRL;
[Ljava.security.cert.X509Certificate;
[Ljava.text.DateFormat$Field;
+[Ljava.text.DateFormat;
[Ljava.text.Format;
[Ljava.text.Normalizer$Form;
[Ljava.text.NumberFormat$Style;
@@ -17742,10 +18084,12 @@ sun.util.logging.PlatformLogger
[Ljava.time.zone.ZoneOffsetTransition;
[Ljava.time.zone.ZoneOffsetTransitionRule$TimeDefinition;
[Ljava.time.zone.ZoneOffsetTransitionRule;
+[Ljava.util.ArrayList;
[Ljava.util.Comparators$NaturalOrderComparator;
[Ljava.util.Enumeration;
[Ljava.util.Formatter$Flags;
[Ljava.util.HashMap$Node;
+[Ljava.util.HashMap;
[Ljava.util.Hashtable$HashtableEntry;
[Ljava.util.List;
[Ljava.util.Locale$Category;
@@ -17760,6 +18104,7 @@ sun.util.logging.PlatformLogger
[Ljava.util.concurrent.ConcurrentHashMap$Segment;
[Ljava.util.concurrent.ForkJoinPool$WorkQueue;
[Ljava.util.concurrent.ForkJoinTask;
+[Ljava.util.concurrent.Future$State;
[Ljava.util.concurrent.RunnableScheduledFuture;
[Ljava.util.concurrent.TimeUnit;
[Ljava.util.concurrent.atomic.Striped64$Cell;
@@ -17779,6 +18124,7 @@ sun.util.logging.PlatformLogger
[Ljavax.net.ssl.SSLEngineResult$Status;
[Ljavax.net.ssl.TrustManager;
[Ljavax.security.auth.callback.Callback;
+[Ljavax.security.auth.x500.X500Principal;
[Ljavax.security.cert.X509Certificate;
[Ljavax.sip.DialogState;
[Ljavax.sip.Timeout;
@@ -17814,7 +18160,9 @@ sun.util.logging.PlatformLogger
[S
[Z
[[B
+[[C
[[D
+[[F
[[I
[[J
[[Landroid.graphics.Rect;
@@ -17823,9 +18171,13 @@ sun.util.logging.PlatformLogger
[[Lcom.android.internal.widget.LockPatternView$Cell;
[[Ljava.lang.Byte;
[[Ljava.lang.Class;
+[[Ljava.lang.Long;
[[Ljava.lang.Object;
[[Ljava.lang.String;
[[Ljava.lang.annotation.Annotation;
[[Ljava.lang.invoke.MethodHandle;
[[Ljava.math.BigInteger;
+[[S
[[Z
+[[[B
+[[[I
diff --git a/core/api/current.txt b/core/api/current.txt
index 17e7d7a258d8..dd606774b770 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -1207,7 +1207,6 @@ package android {
field public static final int minResizeHeight = 16843670; // 0x1010396
field public static final int minResizeWidth = 16843669; // 0x1010395
field public static final int minSdkVersion = 16843276; // 0x101020c
- field @FlaggedApi("android.sdk.major_minor_versioning_scheme") public static final int minSdkVersionFull = 16844461; // 0x10106ad
field public static final int minWidth = 16843071; // 0x101013f
field public static final int minimumHorizontalAngle = 16843901; // 0x101047d
field public static final int minimumVerticalAngle = 16843902; // 0x101047e
@@ -8893,8 +8892,8 @@ package android.app.appfunctions {
}
@FlaggedApi("android.app.appfunctions.flags.enable_app_function_manager") public final class AppFunctionManager {
- method @RequiresPermission(anyOf={"android.permission.EXECUTE_APP_FUNCTIONS_TRUSTED", android.Manifest.permission.EXECUTE_APP_FUNCTIONS}, conditional=true) public void executeAppFunction(@NonNull android.app.appfunctions.ExecuteAppFunctionRequest, @NonNull java.util.concurrent.Executor, @NonNull android.os.CancellationSignal, @NonNull android.os.OutcomeReceiver<android.app.appfunctions.ExecuteAppFunctionResponse,android.app.appfunctions.AppFunctionException>);
- method @RequiresPermission(anyOf={"android.permission.EXECUTE_APP_FUNCTIONS_TRUSTED", android.Manifest.permission.EXECUTE_APP_FUNCTIONS}, conditional=true) public void isAppFunctionEnabled(@NonNull String, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Boolean,java.lang.Exception>);
+ method @RequiresPermission(value=android.Manifest.permission.EXECUTE_APP_FUNCTIONS, conditional=true) public void executeAppFunction(@NonNull android.app.appfunctions.ExecuteAppFunctionRequest, @NonNull java.util.concurrent.Executor, @NonNull android.os.CancellationSignal, @NonNull android.os.OutcomeReceiver<android.app.appfunctions.ExecuteAppFunctionResponse,android.app.appfunctions.AppFunctionException>);
+ method @RequiresPermission(value=android.Manifest.permission.EXECUTE_APP_FUNCTIONS, conditional=true) public void isAppFunctionEnabled(@NonNull String, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Boolean,java.lang.Exception>);
method public void isAppFunctionEnabled(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Boolean,java.lang.Exception>);
method public void setAppFunctionEnabled(@NonNull String, int, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,java.lang.Exception>);
field public static final int APP_FUNCTION_STATE_DEFAULT = 0; // 0x0
@@ -20785,6 +20784,7 @@ package android.hardware.display {
method public void registerDisplayListener(android.hardware.display.DisplayManager.DisplayListener, android.os.Handler);
method @FlaggedApi("com.android.server.display.feature.flags.display_listener_performance_improvements") public void registerDisplayListener(@NonNull java.util.concurrent.Executor, long, @NonNull android.hardware.display.DisplayManager.DisplayListener);
method public void unregisterDisplayListener(android.hardware.display.DisplayManager.DisplayListener);
+ field @FlaggedApi("com.android.server.display.feature.flags.display_category_built_in") public static final String DISPLAY_CATEGORY_BUILT_IN_DISPLAYS = "android.hardware.display.category.BUILT_IN_DISPLAYS";
field public static final String DISPLAY_CATEGORY_PRESENTATION = "android.hardware.display.category.PRESENTATION";
field @FlaggedApi("com.android.server.display.feature.flags.display_listener_performance_improvements") public static final long EVENT_TYPE_DISPLAY_ADDED = 1L; // 0x1L
field @FlaggedApi("com.android.server.display.feature.flags.display_listener_performance_improvements") public static final long EVENT_TYPE_DISPLAY_CHANGED = 4L; // 0x4L
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 41f286245d8d..9a848d423c9a 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -150,7 +150,6 @@ package android {
field @FlaggedApi("com.android.window.flags.untrusted_embedding_any_app_permission") public static final String EMBED_ANY_APP_IN_UNTRUSTED_MODE = "android.permission.EMBED_ANY_APP_IN_UNTRUSTED_MODE";
field @FlaggedApi("android.content.pm.emergency_install_permission") public static final String EMERGENCY_INSTALL_PACKAGES = "android.permission.EMERGENCY_INSTALL_PACKAGES";
field public static final String ENTER_CAR_MODE_PRIORITIZED = "android.permission.ENTER_CAR_MODE_PRIORITIZED";
- field @FlaggedApi("android.app.appfunctions.flags.enable_app_function_manager") public static final String EXECUTE_APP_FUNCTIONS_TRUSTED = "android.permission.EXECUTE_APP_FUNCTIONS_TRUSTED";
field public static final String EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS = "android.permission.EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS";
field public static final String FORCE_BACK = "android.permission.FORCE_BACK";
field public static final String FORCE_STOP_PACKAGES = "android.permission.FORCE_STOP_PACKAGES";
@@ -16053,7 +16052,7 @@ package android.telephony {
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isLteCdmaEvdoGsmWcdmaEnabled();
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isMobileDataPolicyEnabled(int);
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isNrDualConnectivityEnabled();
- method @FlaggedApi("com.android.internal.telephony.flags.enable_modem_cipher_transparency") @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isNullCipherNotificationsEnabled();
+ method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isNullCipherNotificationsEnabled();
method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isOffhook();
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isOpportunisticNetworkEnabled();
method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isPotentialEmergencyNumber(@NonNull String);
@@ -16098,7 +16097,7 @@ package android.telephony {
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setMobileDataPolicyEnabled(int, boolean);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setMultiSimCarrierRestriction(boolean);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setNrDualConnectivityState(int);
- method @FlaggedApi("com.android.internal.telephony.flags.enable_modem_cipher_transparency") @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setNullCipherNotificationsEnabled(boolean);
+ method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setNullCipherNotificationsEnabled(boolean);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setOpportunisticNetworkState(boolean);
method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setPreferredNetworkTypeBitmask(long);
method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setRadio(boolean);
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 7c1c86823110..5453e735ce17 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -478,8 +478,8 @@ package android.app {
method public void destroy();
method @NonNull public java.util.Set<java.lang.String> getAdoptedShellPermissions();
method @Deprecated public boolean grantRuntimePermission(String, String, android.os.UserHandle);
- method @Deprecated @FlaggedApi("com.android.input.flags.deprecate_uiautomation_input_injection") public boolean injectInputEvent(@NonNull android.view.InputEvent, boolean, boolean);
- method @Deprecated @FlaggedApi("com.android.input.flags.deprecate_uiautomation_input_injection") public void injectInputEventToInputFilter(@NonNull android.view.InputEvent);
+ method public boolean injectInputEvent(@NonNull android.view.InputEvent, boolean, boolean);
+ method public void injectInputEventToInputFilter(@NonNull android.view.InputEvent);
method public boolean isNodeInCache(@NonNull android.view.accessibility.AccessibilityNodeInfo);
method public void removeOverridePermissionState(int, @NonNull String);
method @Deprecated public boolean revokeRuntimePermission(String, String, android.os.UserHandle);
@@ -909,6 +909,14 @@ package android.companion {
method @NonNull public android.companion.AssociationInfo.Builder setTimeApproved(long);
}
+ public final class AssociationRequest implements android.os.Parcelable {
+ method public boolean isSkipRoleGrant();
+ }
+
+ public static final class AssociationRequest.Builder {
+ method @NonNull @RequiresPermission(android.Manifest.permission.ASSOCIATE_COMPANION_DEVICES) public android.companion.AssociationRequest.Builder setSkipRoleGrant(boolean);
+ }
+
public final class CompanionDeviceManager {
method @RequiresPermission("android.permission.MANAGE_COMPANION_DEVICES") public void enableSecureTransport(boolean);
}
@@ -1714,6 +1722,7 @@ package android.hardware.display {
public final class DisplayManager {
method public boolean areUserDisabledHdrTypesAllowed();
method @RequiresPermission(android.Manifest.permission.MODIFY_USER_PREFERRED_DISPLAY_MODE) public void clearGlobalUserPreferredDisplayMode();
+ method @FlaggedApi("com.android.server.display.feature.flags.display_topology") @Nullable @RequiresPermission("android.permission.MANAGE_DISPLAYS") public android.hardware.display.DisplayTopology getDisplayTopology();
method @Nullable public android.view.Display.Mode getGlobalUserPreferredDisplayMode();
method @NonNull public android.hardware.display.HdrConversionMode getHdrConversionModeSetting();
method @NonNull public int[] getSupportedHdrOutputTypes();
@@ -1727,6 +1736,7 @@ package android.hardware.display {
method @RequiresPermission(android.Manifest.permission.OVERRIDE_DISPLAY_MODE_REQUESTS) public void setShouldAlwaysRespectAppRequestedMode(boolean);
method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void setUserDisabledHdrTypes(@NonNull int[]);
method @RequiresPermission(android.Manifest.permission.OVERRIDE_DISPLAY_MODE_REQUESTS) public boolean shouldAlwaysRespectAppRequestedMode();
+ field public static final String DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED = "android.hardware.display.category.ALL_INCLUDING_DISABLED";
field public static final String DISPLAY_CATEGORY_REAR = "android.hardware.display.category.REAR";
field public static final String HDR_OUTPUT_CONTROL_FLAG = "enable_hdr_output_control";
field public static final int SWITCHING_TYPE_ACROSS_AND_WITHIN_GROUPS = 2; // 0x2
@@ -1738,6 +1748,13 @@ package android.hardware.display {
field public static final int VIRTUAL_DISPLAY_FLAG_SUPPORTS_TOUCH = 64; // 0x40
}
+ @FlaggedApi("com.android.server.display.feature.flags.display_topology") public final class DisplayTopology implements android.os.Parcelable {
+ method public int describeContents();
+ method @NonNull public android.util.SparseArray<android.graphics.RectF> getAbsoluteBounds();
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field @NonNull public static final android.os.Parcelable.Creator<android.hardware.display.DisplayTopology> CREATOR;
+ }
+
}
package android.hardware.fingerprint {
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index 220fbb5c16a6..252d23f69400 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -7680,16 +7680,23 @@ public class Activity extends ContextThemeWrapper
}
/**
- * Change the desired orientation of this activity. If the activity
- * is currently in the foreground or otherwise impacting the screen
- * orientation, the screen will immediately be changed (possibly causing
- * the activity to be restarted). Otherwise, this will be used the next
- * time the activity is visible.
- *
- * <aside class="note"><b>Note:</b> Device manufacturers can configure devices to override
- * (ignore) calls to this method to improve the layout of orientation-restricted apps. See
- * <a href="{@docRoot}guide/practices/device-compatibility-mode">
- * Device compatibility mode</a>.
+ * Change the desired orientation of this activity. If the activity is currently in the
+ * foreground or otherwise impacting the screen orientation, the screen is immediately changed
+ * (possibly causing the activity to be restarted). Otherwise, the requested orientation is used
+ * the next time the activity is visible.
+ *
+ * <aside class="note"><b>Note:</b>
+ * <ul>
+ * <li>Device manufacturers can configure devices to override (ignore) calls to this
+ * method to improve the layout of orientation-restricted apps.</li>
+ * <li>On devices with Android 16 (API level 36) or higher installed, virtual device
+ * owners (limited to select trusted and privileged apps) can optimize app layout on
+ * displays they manage by ignoring calls to this method. See also
+ * <a href="https://source.android.com/docs/core/permissions/app-streaming">
+ * Companion app streaming</a>.</li>
+ * </ul>
+ * <p>See <a href="{@docRoot}guide/practices/device-compatibility-mode">Device
+ * compatibility mode</a>.</p>
* </aside>
*
* @param requestedOrientation An orientation constant as used in
@@ -7708,11 +7715,24 @@ public class Activity extends ContextThemeWrapper
}
/**
- * Return the current requested orientation of the activity. This will
- * either be the orientation requested in its component's manifest, or
- * the last requested orientation given to
+ * Return the current requested orientation of the activity. This is either the orientation
+ * requested in the app manifest, or the last requested orientation given to
* {@link #setRequestedOrientation(int)}.
*
+ * <aside class="note"><b>Note:</b>
+ * <ul>
+ * <li>Device manufacturers can configure devices to ignore calls to this method to
+ * improve the layout of orientation-restricted apps.</li>
+ * <li>On devices with Android 16 (API level 36) or higher installed, virtual device
+ * owners (limited to select trusted and privileged apps) can optimize app layout on
+ * displays they manage by ignoring calls to this method. See also
+ * <a href="https://source.android.com/docs/core/permissions/app-streaming">
+ * Companion app streaming</a>.</li>
+ * </ul>
+ * <p>See <a href="{@docRoot}guide/practices/device-compatibility-mode">Device
+ * compatibility mode</a>.</p>
+ * </aside>
+ *
* @return Returns an orientation constant as used in
* {@link ActivityInfo#screenOrientation ActivityInfo.screenOrientation}.
*/
diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java
index efcd278ed118..458c1715d2b6 100644
--- a/core/java/android/app/AppOpsManager.java
+++ b/core/java/android/app/AppOpsManager.java
@@ -3067,7 +3067,7 @@ public class AppOpsManager {
new AppOpInfo.Builder(OP_ESTABLISH_VPN_MANAGER, OPSTR_ESTABLISH_VPN_MANAGER,
"ESTABLISH_VPN_MANAGER").setDefaultMode(AppOpsManager.MODE_ALLOWED).build(),
new AppOpInfo.Builder(OP_ACCESS_RESTRICTED_SETTINGS, OPSTR_ACCESS_RESTRICTED_SETTINGS,
- "ACCESS_RESTRICTED_SETTINGS").setDefaultMode(AppOpsManager.MODE_ALLOWED)
+ "ACCESS_RESTRICTED_SETTINGS").setDefaultMode(AppOpsManager.MODE_DEFAULT)
.setDisableReset(true).setRestrictRead(true).build(),
new AppOpInfo.Builder(OP_RECEIVE_AMBIENT_TRIGGER_AUDIO, OPSTR_RECEIVE_AMBIENT_TRIGGER_AUDIO,
"RECEIVE_SOUNDTRIGGER_AUDIO").setDefaultMode(AppOpsManager.MODE_ALLOWED)
diff --git a/core/java/android/app/AutomaticZenRule.java b/core/java/android/app/AutomaticZenRule.java
index e0a937156906..9d1d9c7b69de 100644
--- a/core/java/android/app/AutomaticZenRule.java
+++ b/core/java/android/app/AutomaticZenRule.java
@@ -162,7 +162,7 @@ public final class AutomaticZenRule implements Parcelable {
* both to fields in the rule itself (such as its name) and items with sub-fields.
* @hide
*/
- public static final int MAX_STRING_LENGTH = 1000;
+ public static final int MAX_STRING_LENGTH = 500;
/**
* The maximum string length for the trigger description rule, given UI constraints.
diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl
index 3fb08224b9db..6fedcbe50f30 100644
--- a/core/java/android/app/INotificationManager.aidl
+++ b/core/java/android/app/INotificationManager.aidl
@@ -121,6 +121,7 @@ interface INotificationManager
void deleteNotificationChannelGroup(String pkg, String channelGroupId);
NotificationChannelGroup getNotificationChannelGroup(String pkg, String channelGroupId);
ParceledListSlice getNotificationChannelGroups(String pkg);
+ ParceledListSlice getNotificationChannelGroupsWithoutChannels(String pkg);
boolean onlyHasDefaultChannel(String pkg, int uid);
boolean areChannelsBypassingDnd();
ParceledListSlice getNotificationChannelsBypassingDnd(String pkg, int uid);
@@ -270,6 +271,7 @@ interface INotificationManager
int[] getAllowedAdjustmentKeyTypes();
void setAssistantAdjustmentKeyTypeState(int type, boolean enabled);
+ String[] getAdjustmentDeniedPackages(String key);
boolean isAdjustmentSupportedForPackage(String key, String pkg);
void setAdjustmentSupportedForPackage(String key, String pkg, boolean enabled);
diff --git a/core/java/android/app/IUiModeManager.aidl b/core/java/android/app/IUiModeManager.aidl
index 3b83024d536b..6d4ad7518546 100644
--- a/core/java/android/app/IUiModeManager.aidl
+++ b/core/java/android/app/IUiModeManager.aidl
@@ -51,7 +51,7 @@ interface IUiModeManager {
* Return the current running mode.
*/
int getCurrentModeType();
-
+
/**
* Sets the night mode.
* <p>
@@ -161,61 +161,69 @@ interface IUiModeManager {
boolean setNightModeActivated(boolean active);
/**
- * Returns custom start clock time
- */
+ * Returns custom start clock time
+ */
long getCustomNightModeStart();
/**
- * Sets custom start clock time
- */
+ * Sets custom start clock time
+ */
void setCustomNightModeStart(long time);
/**
- * Returns custom end clock time
- */
+ * Returns custom end clock time
+ */
long getCustomNightModeEnd();
/**
- * Sets custom end clock time
- */
+ * Sets custom end clock time
+ */
void setCustomNightModeEnd(long time);
/**
- * Sets projection state for the caller for the given projection type.
- */
+ * Sets projection state for the caller for the given projection type.
+ */
boolean requestProjection(in IBinder binder, int projectionType, String callingPackage);
/**
- * Releases projection state for the caller for the given projection type.
- */
+ * Releases projection state for the caller for the given projection type.
+ */
boolean releaseProjection(int projectionType, String callingPackage);
/**
- * Registers a listener for changes to projection state.
- */
+ * Registers a listener for changes to projection state.
+ */
@EnforcePermission("READ_PROJECTION_STATE")
void addOnProjectionStateChangedListener(in IOnProjectionStateChangedListener listener, int projectionType);
/**
- * Unregisters a listener for changes to projection state.
- */
+ * Unregisters a listener for changes to projection state.
+ */
@EnforcePermission("READ_PROJECTION_STATE")
void removeOnProjectionStateChangedListener(in IOnProjectionStateChangedListener listener);
/**
- * Returns packages that have currently set the given projection type.
- */
+ * Returns packages that have currently set the given projection type.
+ */
@EnforcePermission("READ_PROJECTION_STATE")
List<String> getProjectingPackages(int projectionType);
/**
- * Returns currently set projection types.
- */
+ * Returns currently set projection types.
+ */
@EnforcePermission("READ_PROJECTION_STATE")
int getActiveProjectionTypes();
/**
- * Returns the contrast for the current user
- */
+ * Returns the contrast for the current user.
+ */
float getContrast();
+
+
+ /**
+ * Returns the force invert state.
+ *
+ * @hide
+ */
+ int getForceInvertState();
}
diff --git a/core/java/android/app/IUiModeManagerCallback.aidl b/core/java/android/app/IUiModeManagerCallback.aidl
index 47c18a8bd3cb..550779d14bab 100644
--- a/core/java/android/app/IUiModeManagerCallback.aidl
+++ b/core/java/android/app/IUiModeManagerCallback.aidl
@@ -24,4 +24,5 @@ package android.app;
*/
oneway interface IUiModeManagerCallback {
void notifyContrastChanged(float contrast);
+ void notifyForceInvertStateChanged(int forceInvertState);
}
diff --git a/core/java/android/app/KeyguardManager.java b/core/java/android/app/KeyguardManager.java
index b5ac4e78c7ad..d91838c4cc2b 100644
--- a/core/java/android/app/KeyguardManager.java
+++ b/core/java/android/app/KeyguardManager.java
@@ -205,6 +205,15 @@ public class KeyguardManager {
public static final String EXTRA_DISALLOW_BIOMETRICS_IF_POLICY_EXISTS = "check_dpm";
/**
+ * When switching to a secure user, system server will expect a callback when the UI has
+ * completed the switch.
+ *
+ * @hide
+ */
+ public static final String LOCK_ON_USER_SWITCH_CALLBACK = "onSwitchCallback";
+
+
+ /**
*
* Password lock type, see {@link #setLock}
*
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index ba4914954223..dce15b833bbb 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -5999,8 +5999,10 @@ public class Notification implements Parcelable
setHeaderlessVerticalMargins(contentView, p, hasSecondLine);
// Update margins to leave space for the top line (but not for headerless views like
- // HUNS, which use a different layout that already accounts for that).
- if (Flags.notificationsRedesignTemplates() && !p.mHeaderless) {
+ // HUNS, which use a different layout that already accounts for that). Templates that
+ // have content that will be displayed under the small icon also use a different margin.
+ if (Flags.notificationsRedesignTemplates()
+ && !p.mHeaderless && !p.mHasContentInLeftMargin) {
int margin = getContentMarginTop(mContext,
R.dimen.notification_2025_content_margin_top);
contentView.setViewLayoutMargin(R.id.notification_main_column,
@@ -7597,11 +7599,19 @@ public class Notification implements Parcelable
}
private int getCompactHeadsUpBaseLayoutResource() {
- return R.layout.notification_template_material_compact_heads_up_base;
+ if (Flags.notificationsRedesignTemplates()) {
+ return R.layout.notification_2025_template_compact_heads_up_base;
+ } else {
+ return R.layout.notification_template_material_compact_heads_up_base;
+ }
}
private int getMessagingCompactHeadsUpLayoutResource() {
- return R.layout.notification_template_material_messaging_compact_heads_up;
+ if (Flags.notificationsRedesignTemplates()) {
+ return R.layout.notification_2025_template_compact_heads_up_messaging;
+ } else {
+ return R.layout.notification_template_material_messaging_compact_heads_up;
+ }
}
private int getExpandedBaseLayoutResource() {
@@ -8927,16 +8937,6 @@ public class Notification implements Parcelable
}
/**
- * @hide
- */
- public boolean displayCustomViewInline() {
- // This is a lie; True is returned for conversations to make sure that the custom
- // view is not used instead of the template, but it will not actually be included.
- return Flags.notificationNoCustomViewConversations()
- && mConversationType != CONVERSATION_TYPE_LEGACY;
- }
-
- /**
* @return the text that should be displayed in the statusBar when heads upped.
* If {@code null} is returned, the default implementation will be used.
*
@@ -9502,7 +9502,8 @@ public class Notification implements Parcelable
.text(null)
.hideLeftIcon(isOneToOne)
.hideRightIcon(hideRightIcons || isOneToOne)
- .headerTextSecondary(isHeaderless ? null : conversationTitle);
+ .headerTextSecondary(isHeaderless ? null : conversationTitle)
+ .hasContentInLeftMargin(true);
RemoteViews contentView = mBuilder.applyStandardTemplateWithActions(
isConversationLayout
? mBuilder.getConversationLayoutResource()
@@ -14673,6 +14674,7 @@ public class Notification implements Parcelable
Icon mPromotedPicture;
boolean mCallStyleActions;
boolean mAllowTextWithProgress;
+ boolean mHasContentInLeftMargin;
int mTitleViewId;
int mTextViewId;
@Nullable CharSequence mTitle;
@@ -14698,6 +14700,7 @@ public class Notification implements Parcelable
mPromotedPicture = null;
mCallStyleActions = false;
mAllowTextWithProgress = false;
+ mHasContentInLeftMargin = false;
mTitleViewId = R.id.title;
mTextViewId = R.id.text;
mTitle = null;
@@ -14764,6 +14767,11 @@ public class Notification implements Parcelable
return this;
}
+ public StandardTemplateParams hasContentInLeftMargin(boolean hasContentInLeftMargin) {
+ mHasContentInLeftMargin = hasContentInLeftMargin;
+ return this;
+ }
+
final StandardTemplateParams hideSnoozeButton(boolean hideSnoozeButton) {
this.mHideSnoozeButton = hideSnoozeButton;
return this;
diff --git a/core/java/android/app/NotificationChannel.java b/core/java/android/app/NotificationChannel.java
index c6f008c46f99..d88395331656 100644
--- a/core/java/android/app/NotificationChannel.java
+++ b/core/java/android/app/NotificationChannel.java
@@ -380,17 +380,6 @@ public final class NotificationChannel implements Parcelable {
mSound = null;
}
mLights = in.readByte() != 0;
- mVibrationPattern = in.createLongArray();
- if (mVibrationPattern != null && mVibrationPattern.length > MAX_VIBRATION_LENGTH) {
- mVibrationPattern = Arrays.copyOf(mVibrationPattern, MAX_VIBRATION_LENGTH);
- }
- if (Flags.notificationChannelVibrationEffectApi()) {
- mVibrationEffect =
- in.readInt() != 0 ? VibrationEffect.CREATOR.createFromParcel(in) : null;
- if (Flags.notifChannelCropVibrationEffects() && mVibrationEffect != null) {
- mVibrationEffect = getTrimmedVibrationEffect(mVibrationEffect);
- }
- }
mUserLockedFields = in.readInt();
mUserVisibleTaskShown = in.readByte() != 0;
mVibrationEnabled = in.readByte() != 0;
@@ -412,6 +401,38 @@ public final class NotificationChannel implements Parcelable {
mImportantConvo = in.readBoolean();
mDeletedTime = in.readLong();
mImportanceLockedDefaultApp = in.readBoolean();
+
+ // Add new fields above this line and not after vibration effect! When
+ // notif_channel_estimate_effect_size is true, we use parcel size to detect whether the
+ // vibration effect might be too large to handle, so this must remain at the end lest any
+ // following fields cause the data to get incorrectly dropped.
+ mVibrationPattern = in.createLongArray();
+ if (mVibrationPattern != null && mVibrationPattern.length > MAX_VIBRATION_LENGTH) {
+ mVibrationPattern = Arrays.copyOf(mVibrationPattern, MAX_VIBRATION_LENGTH);
+ }
+ boolean largeEffect = false;
+ if (Flags.notifChannelEstimateEffectSize()) {
+ // Note that we must check the length of remaining data in the parcel before reading in
+ // the data.
+ largeEffect = (in.dataAvail() > MAX_SERIALIZED_VIBRATION_LENGTH);
+ }
+ if (Flags.notificationChannelVibrationEffectApi()) {
+ mVibrationEffect =
+ in.readInt() != 0 ? VibrationEffect.CREATOR.createFromParcel(in) : null;
+ if (Flags.notifChannelCropVibrationEffects() && mVibrationEffect != null) {
+ if (Flags.notifChannelEstimateEffectSize()) {
+ // Try trimming the effect if the remaining parcel size is large. If trimming is
+ // not applicable for the effect, rather than serializing to XML (expensive) to
+ // check the exact serialized length, we just reject the effect.
+ if (largeEffect) {
+ mVibrationEffect = mVibrationEffect.cropToLengthOrNull(
+ MAX_VIBRATION_LENGTH);
+ }
+ } else {
+ mVibrationEffect = getTrimmedVibrationEffect(mVibrationEffect);
+ }
+ }
+ }
}
@Override
@@ -444,15 +465,6 @@ public final class NotificationChannel implements Parcelable {
dest.writeByte((byte) 0);
}
dest.writeByte(mLights ? (byte) 1 : (byte) 0);
- dest.writeLongArray(mVibrationPattern);
- if (Flags.notificationChannelVibrationEffectApi()) {
- if (mVibrationEffect != null) {
- dest.writeInt(1);
- mVibrationEffect.writeToParcel(dest, /* flags= */ 0);
- } else {
- dest.writeInt(0);
- }
- }
dest.writeInt(mUserLockedFields);
dest.writeByte(mUserVisibleTaskShown ? (byte) 1 : (byte) 0);
dest.writeByte(mVibrationEnabled ? (byte) 1 : (byte) 0);
@@ -480,6 +492,17 @@ public final class NotificationChannel implements Parcelable {
dest.writeBoolean(mImportantConvo);
dest.writeLong(mDeletedTime);
dest.writeBoolean(mImportanceLockedDefaultApp);
+
+ // Add new fields above this line; vibration effect must remain the last entry.
+ dest.writeLongArray(mVibrationPattern);
+ if (Flags.notificationChannelVibrationEffectApi()) {
+ if (mVibrationEffect != null) {
+ dest.writeInt(1);
+ mVibrationEffect.writeToParcel(dest, /* flags= */ 0);
+ } else {
+ dest.writeInt(0);
+ }
+ }
}
/** @hide */
@@ -605,7 +628,9 @@ public final class NotificationChannel implements Parcelable {
return input;
}
- // Returns trimmed vibration effect or null if not trimmable.
+ // Returns trimmed vibration effect or null if not trimmable and the serialized string is too
+ // long. Note that this method involves serializing the full VibrationEffect, which may be
+ // expensive.
private VibrationEffect getTrimmedVibrationEffect(VibrationEffect effect) {
if (effect == null) {
return null;
diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java
index 6e31779f2fb3..00f896deae4b 100644
--- a/core/java/android/app/NotificationManager.java
+++ b/core/java/android/app/NotificationManager.java
@@ -69,12 +69,14 @@ import android.service.notification.ZenDeviceEffects;
import android.service.notification.ZenModeConfig;
import android.service.notification.ZenPolicy;
import android.text.TextUtils;
+import android.util.ArrayMap;
import android.util.Log;
import android.util.LruCache;
import android.util.Slog;
import android.util.proto.ProtoOutputStream;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.notification.NotificationChannelGroupsHelper;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -1396,11 +1398,23 @@ public class NotificationManager {
* The channel group must belong to your package, or null will be returned.
*/
public NotificationChannelGroup getNotificationChannelGroup(String channelGroupId) {
- INotificationManager service = service();
- try {
- return service.getNotificationChannelGroup(mContext.getPackageName(), channelGroupId);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
+ if (Flags.nmBinderPerfCacheChannels()) {
+ String pkgName = mContext.getPackageName();
+ // getNotificationChannelGroup may only be called by the same package.
+ List<NotificationChannel> channelList = mNotificationChannelListCache.query(
+ new NotificationChannelQuery(pkgName, pkgName, mContext.getUserId()));
+ Map<String, NotificationChannelGroup> groupHeaders =
+ mNotificationChannelGroupsCache.query(pkgName);
+ return NotificationChannelGroupsHelper.getGroupWithChannels(channelGroupId, channelList,
+ groupHeaders, /* includeDeleted= */ false);
+ } else {
+ INotificationManager service = service();
+ try {
+ return service.getNotificationChannelGroup(mContext.getPackageName(),
+ channelGroupId);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
}
}
@@ -1408,17 +1422,27 @@ public class NotificationManager {
* Returns all notification channel groups belonging to the calling app.
*/
public List<NotificationChannelGroup> getNotificationChannelGroups() {
- INotificationManager service = service();
- try {
- final ParceledListSlice<NotificationChannelGroup> parceledList =
- service.getNotificationChannelGroups(mContext.getPackageName());
- if (parceledList != null) {
- return parceledList.getList();
+ if (Flags.nmBinderPerfCacheChannels()) {
+ String pkgName = mContext.getPackageName();
+ List<NotificationChannel> channelList = mNotificationChannelListCache.query(
+ new NotificationChannelQuery(pkgName, pkgName, mContext.getUserId()));
+ Map<String, NotificationChannelGroup> groupHeaders =
+ mNotificationChannelGroupsCache.query(pkgName);
+ return NotificationChannelGroupsHelper.getGroupsWithChannels(channelList, groupHeaders,
+ NotificationChannelGroupsHelper.Params.forAllGroups());
+ } else {
+ INotificationManager service = service();
+ try {
+ final ParceledListSlice<NotificationChannelGroup> parceledList =
+ service.getNotificationChannelGroups(mContext.getPackageName());
+ if (parceledList != null) {
+ return parceledList.getList();
+ }
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
}
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
+ return new ArrayList<>();
}
- return new ArrayList<>();
}
/**
@@ -1448,9 +1472,11 @@ public class NotificationManager {
}
}
- private static final String NOTIFICATION_CHANNEL_CACHE_API = "getNotificationChannel";
- private static final String NOTIFICATION_CHANNEL_LIST_CACHE_NAME = "getNotificationChannels";
- private static final int NOTIFICATION_CHANNEL_CACHE_SIZE = 10;
+ private static final String NOTIFICATION_CHANNELS_CACHE_API = "getNotificationChannels";
+ private static final int NOTIFICATION_CHANNELS_CACHE_SIZE = 10;
+ private static final String NOTIFICATION_CHANNEL_GROUPS_CACHE_API =
+ "getNotificationChannelGroups";
+ private static final int NOTIFICATION_CHANNEL_GROUPS_CACHE_SIZE = 10;
private final IpcDataCache.QueryHandler<NotificationChannelQuery, List<NotificationChannel>>
mNotificationChannelListQueryHandler = new IpcDataCache.QueryHandler<>() {
@@ -1480,8 +1506,8 @@ public class NotificationManager {
private final IpcDataCache<NotificationChannelQuery, List<NotificationChannel>>
mNotificationChannelListCache =
- new IpcDataCache<>(NOTIFICATION_CHANNEL_CACHE_SIZE, IpcDataCache.MODULE_SYSTEM,
- NOTIFICATION_CHANNEL_CACHE_API, NOTIFICATION_CHANNEL_LIST_CACHE_NAME,
+ new IpcDataCache<>(NOTIFICATION_CHANNELS_CACHE_SIZE, IpcDataCache.MODULE_SYSTEM,
+ NOTIFICATION_CHANNELS_CACHE_API, NOTIFICATION_CHANNELS_CACHE_API,
mNotificationChannelListQueryHandler);
private record NotificationChannelQuery(
@@ -1489,13 +1515,52 @@ public class NotificationManager {
String targetPkg,
int userId) {}
+ private final IpcDataCache.QueryHandler<String, Map<String, NotificationChannelGroup>>
+ mNotificationChannelGroupsQueryHandler = new IpcDataCache.QueryHandler<>() {
+ @Override
+ public Map<String, NotificationChannelGroup> apply(String pkg) {
+ INotificationManager service = service();
+ Map<String, NotificationChannelGroup> groups = new ArrayMap<>();
+ try {
+ final ParceledListSlice<NotificationChannelGroup> parceledList =
+ service.getNotificationChannelGroupsWithoutChannels(pkg);
+ if (parceledList != null) {
+ for (NotificationChannelGroup group : parceledList.getList()) {
+ groups.put(group.getId(), group);
+ }
+ }
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ return groups;
+ }
+
+ @Override
+ public boolean shouldBypassCache(@NonNull String query) {
+ // Other locations should also not be querying the cache in the first place if
+ // the flag is not enabled, but this is an extra precaution.
+ if (!Flags.nmBinderPerfCacheChannels()) {
+ Log.wtf(TAG,
+ "shouldBypassCache called when nm_binder_perf_cache_channels off");
+ return true;
+ }
+ return false;
+ }
+ };
+
+ private final IpcDataCache<String, Map<String, NotificationChannelGroup>>
+ mNotificationChannelGroupsCache = new IpcDataCache<>(
+ NOTIFICATION_CHANNEL_GROUPS_CACHE_SIZE, IpcDataCache.MODULE_SYSTEM,
+ NOTIFICATION_CHANNEL_GROUPS_CACHE_API, NOTIFICATION_CHANNEL_GROUPS_CACHE_API,
+ mNotificationChannelGroupsQueryHandler);
+
/**
* @hide
*/
public static void invalidateNotificationChannelCache() {
if (Flags.nmBinderPerfCacheChannels()) {
IpcDataCache.invalidateCache(IpcDataCache.MODULE_SYSTEM,
- NOTIFICATION_CHANNEL_CACHE_API);
+ NOTIFICATION_CHANNELS_CACHE_API);
} else {
// if we are here, we have failed to flag something
Log.wtf(TAG, "invalidateNotificationChannelCache called without flag");
@@ -1503,14 +1568,28 @@ public class NotificationManager {
}
/**
+ * @hide
+ */
+ public static void invalidateNotificationChannelGroupCache() {
+ if (Flags.nmBinderPerfCacheChannels()) {
+ IpcDataCache.invalidateCache(IpcDataCache.MODULE_SYSTEM,
+ NOTIFICATION_CHANNEL_GROUPS_CACHE_API);
+ } else {
+ // if we are here, we have failed to flag something
+ Log.wtf(TAG, "invalidateNotificationChannelGroupCache called without flag");
+ }
+ }
+
+ /**
* For testing only: running tests with a cache requires marking the cache's property for
* testing, as test APIs otherwise cannot invalidate the cache. This must be called after
* calling PropertyInvalidatedCache.setTestMode(true).
* @hide
*/
@VisibleForTesting
- public void setChannelCacheToTestMode() {
+ public void setChannelCachesToTestMode() {
mNotificationChannelListCache.testPropertyName();
+ mNotificationChannelGroupsCache.testPropertyName();
}
/**
diff --git a/core/java/android/app/PropertyInvalidatedCache.java b/core/java/android/app/PropertyInvalidatedCache.java
index e9b2ffcdf4cc..bfb33f2b7cb1 100644
--- a/core/java/android/app/PropertyInvalidatedCache.java
+++ b/core/java/android/app/PropertyInvalidatedCache.java
@@ -307,11 +307,8 @@ public class PropertyInvalidatedCache<Query, Result> {
@GuardedBy("mLock")
private long mMisses = 0;
- // This counter tracks the number of times {@link #recompute} returned a null value. Null
- // results are cached, or not, depending on instantiation arguments. Caching nulls when they
- // should not be cached is a functional error. Failing to cache nulls that can be cached is a
- // performance error. A non-zero value here means the cache should be examined to be sure
- // that nulls are correctly cached, or not.
+ // This counter tracks the number of times {@link #recompute} returned a null value and the
+ // result was not cached.
@GuardedBy("mLock")
private long mNulls = 0;
@@ -1728,8 +1725,8 @@ public class PropertyInvalidatedCache<Query, Result> {
if (mLastSeenNonce == currentNonce) {
if (result != null || mCacheNullResults) {
mCache.put(query, result);
- }
- if (result == null) {
+ } else if (result == null) {
+ // The result was null and it was not cached.
mNulls++;
}
}
diff --git a/core/java/android/app/UiAutomation.java b/core/java/android/app/UiAutomation.java
index ba8fbc121e8d..7b63ab80964d 100644
--- a/core/java/android/app/UiAutomation.java
+++ b/core/java/android/app/UiAutomation.java
@@ -18,8 +18,6 @@ package android.app;
import static android.view.Display.DEFAULT_DISPLAY;
-import static com.android.input.flags.Flags.FLAG_DEPRECATE_UIAUTOMATION_INPUT_INJECTION;
-
import android.accessibilityservice.AccessibilityGestureEvent;
import android.accessibilityservice.AccessibilityService;
import android.accessibilityservice.AccessibilityService.Callbacks;
@@ -28,7 +26,6 @@ import android.accessibilityservice.AccessibilityServiceInfo;
import android.accessibilityservice.IAccessibilityServiceClient;
import android.accessibilityservice.IAccessibilityServiceConnection;
import android.accessibilityservice.MagnificationConfig;
-import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -111,10 +108,7 @@ import java.util.concurrent.TimeoutException;
* client should be using a higher-level library or implement high-level functions.
* For example, performing a tap on the screen requires construction and injecting
* of a touch down and up events which have to be delivered to the system by a
- * call to {@link #injectInputEvent(InputEvent, boolean)}. <strong>Note:</strong> For CTS tests, it
- * is preferable to inject input events using uinput (com.android.cts.input.UinputDevice) or hid
- * devices (com.android.cts.input.HidDevice). Alternatively, use InjectInputInProcess
- * (com.android.cts.input.InjectInputInProcess) for in-process injection.
+ * call to {@link #injectInputEvent(InputEvent, boolean)}.
* </p>
* <p>
* The APIs exposed by this class operate across applications enabling a client
@@ -963,17 +957,9 @@ public final class UiAutomation {
* <strong>Note:</strong> It is caller's responsibility to recycle the event.
* </p>
*
- * <p>
- * <strong>Note:</strong> Avoid this method when injecting input events in CTS tests. Instead
- * use uinput (com.android.cts.input.UinputDevice)
- * or hid devices (com.android.cts.input.HidDevice), as they provide a more accurate simulation
- * of real device behavior. Alternatively, InjectInputInProcess
- * (com.android.cts.input.InjectInputProcess) can be used for in-process injection.
- * </p>
- *
- * @param event the event to inject
- * @param sync whether to inject the event synchronously
- * @return {@code true} if event injection succeeded
+ * @param event The event to inject.
+ * @param sync Whether to inject the event synchronously.
+ * @return Whether event injection succeeded.
*/
public boolean injectInputEvent(InputEvent event, boolean sync) {
return injectInputEvent(event, sync, true /* waitForAnimations */);
@@ -986,21 +972,15 @@ public final class UiAutomation {
* <strong>Note:</strong> It is caller's responsibility to recycle the event.
* </p>
*
- * @param event the event to inject
- * @param sync whether to inject the event synchronously.
- * @param waitForAnimations whether to wait for all window container animations and surface
- * operations to complete
- * @return {@code true} if event injection succeeded
+ * @param event The event to inject.
+ * @param sync Whether to inject the event synchronously.
+ * @param waitForAnimations Whether to wait for all window container animations and surface
+ * operations to complete.
+ * @return Whether event injection succeeded.
*
- * @deprecated for CTS tests prefer inject input events using uinput
- * (com.android.cts.input.UinputDevice) or hid devices (com.android.cts.input.HidDevice).
- * Alternatively, InjectInputInProcess (com.android.cts.input.InjectInputProcess) can be used
- * for in-process injection.
* @hide
*/
@TestApi
- @Deprecated // Deprecated for CTS tests
- @FlaggedApi(FLAG_DEPRECATE_UIAUTOMATION_INPUT_INJECTION)
public boolean injectInputEvent(@NonNull InputEvent event, boolean sync,
boolean waitForAnimations) {
try {
@@ -1023,15 +1003,9 @@ public final class UiAutomation {
* Events injected to the input subsystem using the standard {@link #injectInputEvent} method
* skip the accessibility input filter to avoid feedback loops.
*
- * @deprecated for CTS tests prefer inject input events using uinput
- * (com.android.cts.input.UinputDevice) or hid devices (com.android.cts.input.HidDevice).
- * Alternatively, InjectInputInProcess (com.android.cts.input.InjectInputProcess) can be used
- * for in-process injection.
* @hide
*/
@TestApi
- @Deprecated
- @FlaggedApi(FLAG_DEPRECATE_UIAUTOMATION_INPUT_INJECTION)
public void injectInputEventToInputFilter(@NonNull InputEvent event) {
try {
mUiAutomationConnection.injectInputEventToInputFilter(event);
diff --git a/core/java/android/app/UiModeManager.java b/core/java/android/app/UiModeManager.java
index 57549847f05d..f6c789d51aee 100644
--- a/core/java/android/app/UiModeManager.java
+++ b/core/java/android/app/UiModeManager.java
@@ -121,6 +121,24 @@ public class UiModeManager {
}
/**
+ * Listener for the force invert state. To listen for changes to
+ * the force invert state on the device, implement this interface and
+ * register it with the system by calling {@link #addForceInvertStateChangeListener}.
+ *
+ * @hide
+ */
+ public interface ForceInvertStateChangeListener {
+
+ /**
+ * Called when the force invert state changes.
+ *
+ * @param forceInvertState The force invert state in {@link #getForceInvertState}
+ * @hide
+ */
+ void onForceInvertStateChanged(@ForceInvertType int forceInvertState);
+ }
+
+ /**
* Broadcast sent when the device's UI has switched to car mode, either
* by being placed in a car dock or explicit action of the user. After
* sending the broadcast, the system will start the intent
@@ -374,6 +392,36 @@ public class UiModeManager {
@SystemApi
public static final int MODE_NIGHT_CUSTOM_TYPE_BEDTIME = 1;
+ /** @hide */
+ @IntDef(prefix = {"Force_Invert_Type_"}, value = {
+ FORCE_INVERT_TYPE_OFF,
+ FORCE_INVERT_TYPE_DARK,
+ FORCE_INVERT_TYPE_LIGHT,
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface ForceInvertType {}
+
+ /**
+ * Constant for {@link #getForceInvertState()}: Do not force invert.
+ *
+ * @hide
+ */
+ public static final int FORCE_INVERT_TYPE_OFF = 0;
+
+ /**
+ * Constant for {@link #getForceInvertState()}: Force apps to be dark.
+ *
+ * @hide
+ */
+ public static final int FORCE_INVERT_TYPE_DARK = 1;
+
+ /**
+ * Constant for {@link #getForceInvertState()}: Force apps to be light.
+ *
+ * @hide
+ */
+ public static final int FORCE_INVERT_TYPE_LIGHT = 2;
+
private static Globals sGlobals;
/**
@@ -405,6 +453,8 @@ public class UiModeManager {
private final IUiModeManager mService;
private final Object mGlobalsLock = new Object();
+ @ForceInvertType
+ private int mForceInvertState = FORCE_INVERT_TYPE_OFF;
private float mContrast = ContrastUtils.CONTRAST_DEFAULT_VALUE;
/**
@@ -414,16 +464,63 @@ public class UiModeManager {
private final ArrayMap<ContrastChangeListener, Executor>
mContrastChangeListeners = new ArrayMap<>();
+ private final ArrayMap<ForceInvertStateChangeListener, Executor>
+ mForceInvertStateChangeListeners = new ArrayMap<>();
+
Globals(IUiModeManager service) {
mService = service;
try {
mService.addCallback(this);
mContrast = mService.getContrast();
+ mForceInvertState = mService.getForceInvertState();
} catch (RemoteException e) {
Log.e(TAG, "Setup failed: UiModeManagerService is dead", e);
}
}
+ @ForceInvertType
+ private int getForceInvertState() {
+ synchronized (mGlobalsLock) {
+ return mForceInvertState;
+ }
+ }
+
+ private void addForceInvertStateChangeListener(ForceInvertStateChangeListener listener,
+ Executor executor) {
+ synchronized (mGlobalsLock) {
+ mForceInvertStateChangeListeners.put(listener, executor);
+ }
+ }
+
+ private void removeForceInvertStateChangeListener(ForceInvertStateChangeListener listener) {
+ synchronized (mGlobalsLock) {
+ mForceInvertStateChangeListeners.remove(listener);
+ }
+ }
+
+ @Override
+ public void notifyForceInvertStateChanged(@ForceInvertType int forceInvertState) {
+ final Map<ForceInvertStateChangeListener, Executor> listeners = new ArrayMap<>();
+ synchronized (mGlobalsLock) {
+ // if value changed in the settings, update the cached value and notify listeners
+ if (mForceInvertState == forceInvertState) {
+ return;
+ }
+
+ mForceInvertState = forceInvertState;
+ listeners.putAll(mForceInvertStateChangeListeners);
+ }
+
+ listeners.forEach((listener, executor) -> {
+ final long token = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() -> listener.onForceInvertStateChanged(forceInvertState));
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ });
+ }
+
private float getContrast() {
synchronized (mGlobalsLock) {
return mContrast;
@@ -1453,4 +1550,44 @@ public class UiModeManager {
Objects.requireNonNull(listener);
sGlobals.removeContrastChangeListener(listener);
}
+
+ /**
+ * Returns the force invert state for the user.
+ *
+ * @hide
+ */
+ @ForceInvertType
+ public int getForceInvertState() {
+ return sGlobals.getForceInvertState();
+ }
+
+ /**
+ * Registers a {@link ForceInvertStateChangeListener} for the current user.
+ *
+ * @param executor The executor on which the listener should be called back.
+ * @param listener The listener.
+ *
+ * @hide
+ */
+ public void addForceInvertStateChangeListener(
+ @NonNull @CallbackExecutor Executor executor,
+ @NonNull ForceInvertStateChangeListener listener) {
+ Objects.requireNonNull(executor);
+ Objects.requireNonNull(listener);
+ sGlobals.addForceInvertStateChangeListener(listener, executor);
+ }
+
+ /**
+ * Unregisters a {@link ForceInvertStateChangeListener} for the current user.
+ * If the listener was not registered, does nothing and returns.
+ *
+ * @param listener The listener to unregister.
+ *
+ * @hide
+ */
+ public void removeForceInvertStateChangeListener(
+ @NonNull ForceInvertStateChangeListener listener) {
+ Objects.requireNonNull(listener);
+ sGlobals.removeForceInvertStateChangeListener(listener);
+ }
}
diff --git a/core/java/android/app/WallpaperManager.java b/core/java/android/app/WallpaperManager.java
index 076f856635b5..957482450893 100644
--- a/core/java/android/app/WallpaperManager.java
+++ b/core/java/android/app/WallpaperManager.java
@@ -297,6 +297,16 @@ public class WallpaperManager {
"android.wallpaper.lockscreen_layout_changed";
/**
+ * Command for {@link #sendWallpaperCommand}: Include the tap position within the wallpaper
+ * focal area.The x and y arguments are the absolute tap coordinates, already scaled to match
+ * the wallpaper's dimensions.
+ *
+ * @hide
+ */
+ public static final String COMMAND_LOCKSCREEN_TAP =
+ "android.wallpaper.lockscreen_tap";
+
+ /**
* Extra passed back from setWallpaper() giving the new wallpaper's assigned ID.
* @hide
*/
diff --git a/core/java/android/app/appfunctions/AppFunctionManager.java b/core/java/android/app/appfunctions/AppFunctionManager.java
index 6fd8db995368..0a3891fe47a1 100644
--- a/core/java/android/app/appfunctions/AppFunctionManager.java
+++ b/core/java/android/app/appfunctions/AppFunctionManager.java
@@ -72,10 +72,10 @@ import java.util.concurrent.Executor;
* <p>To execute an app function, the caller app can retrieve the {@code functionIdentifier} from
* the {@code AppFunctionStaticMetadata} document and use it to build an {@link
* ExecuteAppFunctionRequest}. Then, invoke {@link #executeAppFunction} with the request to execute
- * the app function. Callers need the {@code android.permission.EXECUTE_APP_FUNCTIONS} or {@code
- * android.permission.EXECUTE_APP_FUNCTIONS_TRUSTED} permission to execute app functions from other
- * apps. An app can always execute its own app functions and doesn't need these permissions.
- * AppFunction SDK provides a convenient way to achieve this and is the preferred method.
+ * the app function. Callers need the {@code android.permission.EXECUTE_APP_FUNCTIONS} permission to
+ * execute app functions from other apps. An app can always execute its own app functions and
+ * doesn't need these permissions. AppFunction SDK provides a convenient way to achieve this and
+ * is the preferred method.
*
* <h3>Example</h3>
*
@@ -141,32 +141,24 @@ public final class AppFunctionManager {
* Executes the app function.
*
* <p>Note: Applications can execute functions they define. To execute functions defined in
- * another component, apps would need to have {@code
- * android.permission.EXECUTE_APP_FUNCTIONS_TRUSTED} or {@code
- * android.permission.EXECUTE_APP_FUNCTIONS}.
+ * another component, apps would need to have the permission
+ * {@code android.permission.EXECUTE_APP_FUNCTIONS}.
*
* @param request the request to execute the app function
* @param executor the executor to run the callback
* @param cancellationSignal the cancellation signal to cancel the execution.
* @param callback the callback to receive the function execution result or error.
* <p>If the calling app does not own the app function or does not have {@code
- * android.permission.EXECUTE_APP_FUNCTIONS_TRUSTED} or {@code
* android.permission.EXECUTE_APP_FUNCTIONS}, the execution result will contain {@code
* AppFunctionException.ERROR_DENIED}.
- * <p>If the caller only has {@code android.permission.EXECUTE_APP_FUNCTIONS} but the
- * function requires {@code android.permission.EXECUTE_APP_FUNCTIONS_TRUSTED}, the execution
+ * <p>If the caller only has {@code android.permission.EXECUTE_APP_FUNCTIONS}, the execution
* result will contain {@code AppFunctionException.ERROR_DENIED}
* <p>If the function requested for execution is disabled, then the execution result will
* contain {@code AppFunctionException.ERROR_DISABLED}
* <p>If the cancellation signal is issued, the operation is cancelled and no response is
* returned to the caller.
*/
- @RequiresPermission(
- anyOf = {
- Manifest.permission.EXECUTE_APP_FUNCTIONS_TRUSTED,
- Manifest.permission.EXECUTE_APP_FUNCTIONS
- },
- conditional = true)
+ @RequiresPermission(value = Manifest.permission.EXECUTE_APP_FUNCTIONS, conditional = true)
@UserHandleAware
public void executeAppFunction(
@NonNull ExecuteAppFunctionRequest request,
@@ -222,9 +214,8 @@ public final class AppFunctionManager {
* Returns a boolean through a callback, indicating whether the app function is enabled.
*
* <p>This method can only check app functions owned by the caller, or those where the caller
- * has visibility to the owner package and holds either the {@link
- * Manifest.permission#EXECUTE_APP_FUNCTIONS} or {@link
- * Manifest.permission#EXECUTE_APP_FUNCTIONS_TRUSTED} permission.
+ * has visibility to the owner package and holds the
+ * {@link Manifest.permission#EXECUTE_APP_FUNCTIONS} permission.
*
* <p>If the operation fails, the callback's {@link OutcomeReceiver#onError} is called with
* errors:
@@ -241,12 +232,7 @@ public final class AppFunctionManager {
* @param executor the executor to run the request
* @param callback the callback to receive the function enabled check result
*/
- @RequiresPermission(
- anyOf = {
- Manifest.permission.EXECUTE_APP_FUNCTIONS_TRUSTED,
- Manifest.permission.EXECUTE_APP_FUNCTIONS
- },
- conditional = true)
+ @RequiresPermission(value = Manifest.permission.EXECUTE_APP_FUNCTIONS, conditional = true)
public void isAppFunctionEnabled(
@NonNull String functionIdentifier,
@NonNull String targetPackage,
diff --git a/core/java/android/app/appfunctions/AppFunctionManagerHelper.java b/core/java/android/app/appfunctions/AppFunctionManagerHelper.java
index 64dece99c5d1..cc3ca03f423d 100644
--- a/core/java/android/app/appfunctions/AppFunctionManagerHelper.java
+++ b/core/java/android/app/appfunctions/AppFunctionManagerHelper.java
@@ -54,9 +54,8 @@ public class AppFunctionManagerHelper {
* Returns (through a callback) a boolean indicating whether the app function is enabled.
*
* This method can only check app functions owned by the caller, or those where the caller
- * has visibility to the owner package and holds either the {@link
- * Manifest.permission#EXECUTE_APP_FUNCTIONS} or {@link
- * Manifest.permission#EXECUTE_APP_FUNCTIONS_TRUSTED} permission.
+ * has visibility to the owner package and holds the {@link
+ * Manifest.permission#EXECUTE_APP_FUNCTIONS} permission.
*
* <p>If operation fails, the callback's {@link OutcomeReceiver#onError} is called with errors:
*
diff --git a/core/java/android/app/appfunctions/AppFunctionRuntimeMetadata.java b/core/java/android/app/appfunctions/AppFunctionRuntimeMetadata.java
index 3ddda228d145..7743d4862b51 100644
--- a/core/java/android/app/appfunctions/AppFunctionRuntimeMetadata.java
+++ b/core/java/android/app/appfunctions/AppFunctionRuntimeMetadata.java
@@ -90,8 +90,7 @@ public class AppFunctionRuntimeMetadata extends GenericDocument {
* we need to have per-package app function schemas.
*
* <p>This schema should be set visible to callers from the package owner itself and for callers
- * with {@link android.Manifest.permission#EXECUTE_APP_FUNCTIONS} or {@link
- * android.Manifest.permission#EXECUTE_APP_FUNCTIONS_TRUSTED} permissions.
+ * with the permission {@link android.Manifest.permission#EXECUTE_APP_FUNCTIONS}.
*
* @param packageName The package name to create a schema for.
*/
@@ -105,9 +104,8 @@ public class AppFunctionRuntimeMetadata extends GenericDocument {
/**
* Creates a parent schema for all app function runtime schemas.
*
- * <p>This schema should be set visible to the owner itself and for callers with {@link
- * android.permission.EXECUTE_APP_FUNCTIONS_TRUSTED} or {@link
- * android.permission.EXECUTE_APP_FUNCTIONS} permissions.
+ * <p>This schema should be set visible to the owner itself and for callers with
+ * the permission {@link android.permission.EXECUTE_APP_FUNCTIONS}.
*/
public static AppSearchSchema createParentAppFunctionRuntimeSchema() {
return getAppFunctionRuntimeSchemaBuilder(RUNTIME_SCHEMA_TYPE).build();
diff --git a/core/java/android/app/appfunctions/IAppFunctionManager.aidl b/core/java/android/app/appfunctions/IAppFunctionManager.aidl
index 72335e40c207..098e1fe8b516 100644
--- a/core/java/android/app/appfunctions/IAppFunctionManager.aidl
+++ b/core/java/android/app/appfunctions/IAppFunctionManager.aidl
@@ -34,7 +34,7 @@ interface IAppFunctionManager {
* @param request the request to execute an app function.
* @param callback the callback to report the result.
*/
- @JavaPassthrough(annotation="@android.annotation.RequiresPermission(anyOf = {android.Manifest.permission.EXECUTE_APP_FUNCTIONS_TRUSTED,android.Manifest.permission.EXECUTE_APP_FUNCTIONS}, conditional = true)")
+ @JavaPassthrough(annotation="@android.annotation.RequiresPermission(value = android.Manifest.permission.EXECUTE_APP_FUNCTIONS, conditional = true)")
ICancellationSignal executeAppFunction(
in ExecuteAppFunctionAidlRequest request,
in IExecuteAppFunctionCallback callback
diff --git a/core/java/android/app/contextualsearch/flags.aconfig b/core/java/android/app/contextualsearch/flags.aconfig
index c19921dcdc61..d81ec1e8b883 100644
--- a/core/java/android/app/contextualsearch/flags.aconfig
+++ b/core/java/android/app/contextualsearch/flags.aconfig
@@ -27,7 +27,10 @@ flag {
name: "contextual_search_window_layer"
namespace: "sysui_integrations"
description: "Identify live contextual search UI to exclude from contextual search screenshot."
- bug: "372510690"
+ bug: "390176823"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
}
flag {
@@ -35,4 +38,4 @@ flag {
namespace: "sysui_integrations"
description: "Add audio playing status to the contextual search invocation intent."
bug: "372935419"
-} \ No newline at end of file
+}
diff --git a/core/java/android/app/notification.aconfig b/core/java/android/app/notification.aconfig
index 733a348aa825..a10b6ff39a37 100644
--- a/core/java/android/app/notification.aconfig
+++ b/core/java/android/app/notification.aconfig
@@ -154,6 +154,16 @@ flag {
}
flag {
+ name: "notif_channel_estimate_effect_size"
+ namespace: "systemui"
+ description: "When reading vibration effects from parcel, estimate size instead of unnecessarily serializing to XML"
+ bug: "391908451"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
+flag {
name: "evenly_divided_call_style_action_layout"
namespace: "systemui"
description: "Evenly divides horizontal space for action buttons in CallStyle notifications."
diff --git a/core/java/android/app/supervision/SupervisionManager.java b/core/java/android/app/supervision/SupervisionManager.java
index a4efd77fce75..d30705536045 100644
--- a/core/java/android/app/supervision/SupervisionManager.java
+++ b/core/java/android/app/supervision/SupervisionManager.java
@@ -33,7 +33,7 @@ import android.os.RemoteException;
@SystemService(Context.SUPERVISION_SERVICE)
public class SupervisionManager {
private final Context mContext;
- private final ISupervisionManager mService;
+ @Nullable private final ISupervisionManager mService;
/**
* Activity action: ask the human user to enable supervision for this user. Only the app that
@@ -66,7 +66,7 @@ public class SupervisionManager {
/** @hide */
@UnsupportedAppUsage
- public SupervisionManager(Context context, ISupervisionManager service) {
+ public SupervisionManager(Context context, @Nullable ISupervisionManager service) {
mContext = context;
mService = service;
}
@@ -93,11 +93,14 @@ public class SupervisionManager {
value = android.Manifest.permission.INTERACT_ACROSS_USERS,
conditional = true)
public boolean isSupervisionEnabledForUser(@UserIdInt int userId) {
- try {
- return mService.isSupervisionEnabledForUser(userId);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
+ if (mService != null) {
+ try {
+ return mService.isSupervisionEnabledForUser(userId);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
}
+ return false;
}
/**
@@ -122,10 +125,12 @@ public class SupervisionManager {
value = android.Manifest.permission.INTERACT_ACROSS_USERS,
conditional = true)
public void setSupervisionEnabledForUser(@UserIdInt int userId, boolean enabled) {
- try {
- mService.setSupervisionEnabledForUser(userId, enabled);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
+ if (mService != null) {
+ try {
+ mService.setSupervisionEnabledForUser(userId, enabled);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
}
}
@@ -138,10 +143,13 @@ public class SupervisionManager {
@UserHandleAware
@Nullable
public String getActiveSupervisionAppPackage() {
- try {
- return mService.getActiveSupervisionAppPackage(mContext.getUserId());
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
+ if (mService != null) {
+ try {
+ return mService.getActiveSupervisionAppPackage(mContext.getUserId());
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
}
+ return null;
}
}
diff --git a/core/java/android/companion/AssociationRequest.java b/core/java/android/companion/AssociationRequest.java
index a098a6067491..11e20e65d355 100644
--- a/core/java/android/companion/AssociationRequest.java
+++ b/core/java/android/companion/AssociationRequest.java
@@ -16,6 +16,7 @@
package android.companion;
+import static android.Manifest.permission.ASSOCIATE_COMPANION_DEVICES;
import static android.Manifest.permission.REQUEST_COMPANION_SELF_MANAGED;
import static com.android.internal.util.CollectionUtils.emptyIfNull;
@@ -28,7 +29,10 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.StringDef;
+import android.annotation.SuppressLint;
+import android.annotation.TestApi;
import android.annotation.UserIdInt;
+import android.app.KeyguardManager;
import android.compat.annotation.UnsupportedAppUsage;
import android.graphics.drawable.Icon;
import android.os.Build;
@@ -90,7 +94,21 @@ public final class AssociationRequest implements Parcelable {
public static final String DEVICE_PROFILE_GLASSES = "android.app.role.COMPANION_DEVICE_GLASSES";
/**
- * Device profile: a virtual device capable of rendering Android applications, and sending back
+ * Device profile: a wearable device capable of sensing its surroundings.
+ * <p>
+ * This device profile is not tied to any android role, and is used to identify the device
+ * as a wearable sensing device.
+ * <p>
+ * This profile may only be used by the system.
+ *
+ * @see AssociationRequest.Builder#setDeviceProfile
+ * @hide
+ */
+ public static final String DEVICE_PROFILE_WEARABLE_SENSING =
+ "android.companion.COMPANION_DEVICE_WEARABLE_SENSING";
+
+ /**
+ * Device profile: a virtual display capable of rendering Android applications, and sending back
* input events.
* <p>
* Only applications that have been granted
@@ -163,7 +181,8 @@ public final class AssociationRequest implements Parcelable {
@Retention(RetentionPolicy.SOURCE)
@StringDef(value = { DEVICE_PROFILE_WATCH, DEVICE_PROFILE_COMPUTER,
DEVICE_PROFILE_AUTOMOTIVE_PROJECTION, DEVICE_PROFILE_APP_STREAMING,
- DEVICE_PROFILE_GLASSES, DEVICE_PROFILE_NEARBY_DEVICE_STREAMING })
+ DEVICE_PROFILE_GLASSES, DEVICE_PROFILE_NEARBY_DEVICE_STREAMING,
+ DEVICE_PROFILE_WEARABLE_SENSING })
public @interface DeviceProfile {}
/**
@@ -214,6 +233,11 @@ public final class AssociationRequest implements Parcelable {
private final boolean mForceConfirmation;
/**
+ * Whether to skip the role grant, permission checks and consent dialog.
+ */
+ private final boolean mSkipRoleGrant;
+
+ /**
* The app package name of the application the association will belong to.
* Populated by the system.
* @hide
@@ -283,6 +307,7 @@ public final class AssociationRequest implements Parcelable {
@Nullable CharSequence displayName,
boolean selfManaged,
boolean forceConfirmation,
+ boolean skipRoleGrant,
@Nullable Icon deviceIcon) {
mSingleDevice = singleDevice;
mDeviceFilters = requireNonNull(deviceFilters);
@@ -290,6 +315,7 @@ public final class AssociationRequest implements Parcelable {
mDisplayName = displayName;
mSelfManaged = selfManaged;
mForceConfirmation = forceConfirmation;
+ mSkipRoleGrant = skipRoleGrant;
mCreationTime = System.currentTimeMillis();
mDeviceIcon = deviceIcon;
}
@@ -333,6 +359,18 @@ public final class AssociationRequest implements Parcelable {
}
/**
+ * Whether to skip the role grant, permission checks and consent dialog.
+ *
+ * @see Builder#setSkipRoleGrant(boolean)
+ * @hide
+ */
+ @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+ @TestApi
+ public boolean isSkipRoleGrant() {
+ return mSkipRoleGrant;
+ }
+
+ /**
* Whether only a single device should match the provided filter.
*
* When scanning for a single device with a specific {@link BluetoothDeviceFilter} mac
@@ -407,6 +445,7 @@ public final class AssociationRequest implements Parcelable {
private CharSequence mDisplayName;
private boolean mSelfManaged = false;
private boolean mForceConfirmation = false;
+ private boolean mSkipRoleGrant = false;
private Icon mDeviceIcon = null;
public Builder() {}
@@ -494,6 +533,27 @@ public final class AssociationRequest implements Parcelable {
}
/**
+ * Do not attempt to grant the role corresponding to the device profile.
+ *
+ * <p>This will skip the permission checks and consent dialog but will not fail if the
+ * role cannot be granted.</p>
+ *
+ * <p>Requires that the device not to have secure lock screen and that there no locked SIM
+ * card. See {@link KeyguardManager#isKeyguardSecure()}</p>
+ *
+ * @hide
+ */
+ @RequiresPermission(ASSOCIATE_COMPANION_DEVICES)
+ @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+ @TestApi
+ @NonNull
+ public Builder setSkipRoleGrant(boolean skipRoleGrant) {
+ checkNotUsed();
+ mSkipRoleGrant = skipRoleGrant;
+ return this;
+ }
+
+ /**
* Set the device icon for the self-managed device and to display the icon in the
* self-managed association dialog.
* <p>The given device icon will be resized to 24dp x 24dp.
@@ -521,7 +581,8 @@ public final class AssociationRequest implements Parcelable {
+ "provide the display name of the device");
}
return new AssociationRequest(mSingleDevice, emptyIfNull(mDeviceFilters),
- mDeviceProfile, mDisplayName, mSelfManaged, mForceConfirmation, mDeviceIcon);
+ mDeviceProfile, mDisplayName, mSelfManaged, mForceConfirmation, mSkipRoleGrant,
+ mDeviceIcon);
}
}
@@ -597,6 +658,7 @@ public final class AssociationRequest implements Parcelable {
+ ", associatedDevice = " + mAssociatedDevice
+ ", selfManaged = " + mSelfManaged
+ ", forceConfirmation = " + mForceConfirmation
+ + ", skipRoleGrant = " + mSkipRoleGrant
+ ", packageName = " + mPackageName
+ ", userId = " + mUserId
+ ", deviceProfilePrivilegesDescription = " + mDeviceProfilePrivilegesDescription
@@ -617,6 +679,7 @@ public final class AssociationRequest implements Parcelable {
&& Objects.equals(mAssociatedDevice, that.mAssociatedDevice)
&& mSelfManaged == that.mSelfManaged
&& mForceConfirmation == that.mForceConfirmation
+ && mSkipRoleGrant == that.mSkipRoleGrant
&& Objects.equals(mPackageName, that.mPackageName)
&& mUserId == that.mUserId
&& Objects.equals(mDeviceProfilePrivilegesDescription,
@@ -637,6 +700,7 @@ public final class AssociationRequest implements Parcelable {
_hash = 31 * _hash + Objects.hashCode(mAssociatedDevice);
_hash = 31 * _hash + Boolean.hashCode(mSelfManaged);
_hash = 31 * _hash + Boolean.hashCode(mForceConfirmation);
+ _hash = 31 * _hash + Boolean.hashCode(mSkipRoleGrant);
_hash = 31 * _hash + Objects.hashCode(mPackageName);
_hash = 31 * _hash + mUserId;
_hash = 31 * _hash + Objects.hashCode(mDeviceProfilePrivilegesDescription);
@@ -659,6 +723,7 @@ public final class AssociationRequest implements Parcelable {
if (mAssociatedDevice != null) flg |= 0x40;
if (mPackageName != null) flg |= 0x80;
if (mDeviceProfilePrivilegesDescription != null) flg |= 0x100;
+ if (mSkipRoleGrant) flg |= 0x200;
dest.writeInt(flg);
dest.writeParcelableList(mDeviceFilters, flags);
@@ -692,6 +757,7 @@ public final class AssociationRequest implements Parcelable {
boolean selfManaged = (flg & 0x2) != 0;
boolean forceConfirmation = (flg & 0x4) != 0;
boolean skipPrompt = (flg & 0x8) != 0;
+ boolean skipRoleGrant = (flg & 0x200) != 0;
List<DeviceFilter<?>> deviceFilters = new ArrayList<>();
in.readParcelableList(deviceFilters, DeviceFilter.class.getClassLoader(),
(Class<android.companion.DeviceFilter<?>>) (Class<?>)
@@ -714,6 +780,7 @@ public final class AssociationRequest implements Parcelable {
this.mAssociatedDevice = associatedDevice;
this.mSelfManaged = selfManaged;
this.mForceConfirmation = forceConfirmation;
+ this.mSkipRoleGrant = skipRoleGrant;
this.mPackageName = packageName;
this.mUserId = userId;
com.android.internal.util.AnnotationValidations.validate(
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index 469688265ae8..0312ad7a739a 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -12426,8 +12426,8 @@ public class Intent implements Parcelable, Cloneable {
}
private void collectNestedIntentKeysRecur(Set<Intent> visited, boolean forceUnparcel) {
- addExtendedFlags(EXTENDED_FLAG_NESTED_INTENT_KEYS_COLLECTED);
if (mExtras != null && (forceUnparcel || !mExtras.isParcelled()) && !mExtras.isEmpty()) {
+ addExtendedFlags(EXTENDED_FLAG_NESTED_INTENT_KEYS_COLLECTED);
for (String key : mExtras.keySet()) {
Object value;
try {
diff --git a/core/java/android/content/pm/LauncherActivityInfo.java b/core/java/android/content/pm/LauncherActivityInfo.java
index bb91a37825e6..760224f92acb 100644
--- a/core/java/android/content/pm/LauncherActivityInfo.java
+++ b/core/java/android/content/pm/LauncherActivityInfo.java
@@ -213,6 +213,14 @@ public class LauncherActivityInfo {
}
/**
+ * Returns whether this activity supports (and can be launched in) multiple instances.
+ * @hide
+ */
+ public boolean supportsMultiInstance() {
+ return mInternal.supportsMultiInstance();
+ }
+
+ /**
* Check whether the {@code sequence} is visible to the user or not.
* <p>
* Return {@code false} when one of these conditions are satisfied:
diff --git a/core/java/android/content/pm/LauncherActivityInfoInternal.java b/core/java/android/content/pm/LauncherActivityInfoInternal.java
index 5aac97d784b3..3bb38799a211 100644
--- a/core/java/android/content/pm/LauncherActivityInfoInternal.java
+++ b/core/java/android/content/pm/LauncherActivityInfoInternal.java
@@ -32,19 +32,24 @@ public class LauncherActivityInfoInternal implements Parcelable {
@NonNull private ComponentName mComponentName;
@NonNull private IncrementalStatesInfo mIncrementalStatesInfo;
@NonNull private UserHandle mUser;
+ private boolean mSupportsMultiInstance;
/**
* @param info ActivityInfo from which to create the LauncherActivityInfo.
* @param incrementalStatesInfo The package's states.
* @param user The user the activity info belongs to.
+ * @param supportsMultiInstance Whether the activity supports multi-instance as declared in its
+ * app manifest
*/
public LauncherActivityInfoInternal(@NonNull ActivityInfo info,
@NonNull IncrementalStatesInfo incrementalStatesInfo,
- @NonNull UserHandle user) {
+ @NonNull UserHandle user,
+ boolean supportsMultiInstance) {
mActivityInfo = info;
mComponentName = new ComponentName(info.packageName, info.name);
mIncrementalStatesInfo = incrementalStatesInfo;
mUser = user;
+ mSupportsMultiInstance = supportsMultiInstance;
}
public LauncherActivityInfoInternal(Parcel source) {
@@ -52,6 +57,7 @@ public class LauncherActivityInfoInternal implements Parcelable {
mComponentName = new ComponentName(mActivityInfo.packageName, mActivityInfo.name);
mIncrementalStatesInfo = source.readTypedObject(IncrementalStatesInfo.CREATOR);
mUser = source.readTypedObject(UserHandle.CREATOR);
+ mSupportsMultiInstance = source.readBoolean();
}
public ComponentName getComponentName() {
@@ -70,6 +76,10 @@ public class LauncherActivityInfoInternal implements Parcelable {
return mIncrementalStatesInfo;
}
+ public boolean supportsMultiInstance() {
+ return mSupportsMultiInstance;
+ }
+
@Override
public int describeContents() {
return 0;
@@ -80,6 +90,7 @@ public class LauncherActivityInfoInternal implements Parcelable {
dest.writeTypedObject(mActivityInfo, flags);
dest.writeTypedObject(mIncrementalStatesInfo, flags);
dest.writeTypedObject(mUser, flags);
+ dest.writeBoolean(mSupportsMultiInstance);
}
public static final @android.annotation.NonNull Creator<LauncherActivityInfoInternal> CREATOR =
diff --git a/core/java/android/content/pm/LauncherApps.java b/core/java/android/content/pm/LauncherApps.java
index 1724d9ff0deb..2e07a990fa3c 100644
--- a/core/java/android/content/pm/LauncherApps.java
+++ b/core/java/android/content/pm/LauncherApps.java
@@ -77,7 +77,6 @@ import android.util.Pair;
import android.window.IDumpCallback;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.infra.AndroidFuture;
import com.android.internal.util.function.pooled.PooledLambda;
import java.io.IOException;
@@ -92,7 +91,6 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
-import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
/**
@@ -793,18 +791,8 @@ public class LauncherApps {
public List<LauncherActivityInfo> getActivityList(String packageName, UserHandle user) {
logErrorForInvalidProfileAccess(user);
try {
- final List<LauncherActivityInfo> activityList = convertToActivityList(
- mService.getLauncherActivities(
- mContext.getPackageName(),
- packageName,
- user
- ), user);
- if (activityList.isEmpty()) {
- // b/350144057
- Log.d(TAG, "getActivityList: No launchable activities found for"
- + "packageName=" + packageName + ", user=" + user);
- }
- return activityList;
+ return convertToActivityList(mService.getLauncherActivities(mContext.getPackageName(),
+ packageName, user), user);
} catch (RemoteException re) {
throw re.rethrowFromSystemServer();
}
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 8c7e93a834b7..0369b7d9bc28 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -7967,7 +7967,7 @@ public abstract class PackageManager {
* @param flags Additional option flags to modify the data returned.
* @return Returns a List of ResolveInfo objects containing one entry for
* each matching receiver, ordered from best to worst. If there are
- * no matching receivers, an empty list or null is returned.
+ * no matching receivers, returns an empty list.
*/
@NonNull
public abstract List<ResolveInfo> queryBroadcastReceivers(@NonNull Intent intent, int flags);
@@ -7994,7 +7994,7 @@ public abstract class PackageManager {
* @param userHandle UserHandle of the user being queried.
* @return Returns a List of ResolveInfo objects containing one entry for
* each matching receiver, ordered from best to worst. If there are
- * no matching receivers, an empty list or null is returned.
+ * no matching receivers, returns an empty list.
* @hide
*/
@SuppressWarnings("HiddenAbstractMethod")
@@ -8111,8 +8111,8 @@ public abstract class PackageManager {
* @return Returns a List of ResolveInfo objects containing one entry for
* each matching service, ordered from best to worst. In other
* words, the first item is what would be returned by
- * {@link #resolveService}. If there are no matching services, an
- * empty list or null is returned.
+ * {@link #resolveService}. If there are no matching services,
+ * returns an empty list.
*/
@NonNull
public abstract List<ResolveInfo> queryIntentServices(@NonNull Intent intent,
@@ -8140,8 +8140,8 @@ public abstract class PackageManager {
* @return Returns a List of ResolveInfo objects containing one entry for
* each matching service, ordered from best to worst. In other
* words, the first item is what would be returned by
- * {@link #resolveService}. If there are no matching services, an
- * empty list or null is returned.
+ * {@link #resolveService}. If there are no matching services,
+ * returns an empty list.
* @hide
*/
@SuppressWarnings("HiddenAbstractMethod")
@@ -8173,8 +8173,8 @@ public abstract class PackageManager {
* @return Returns a List of ResolveInfo objects containing one entry for
* each matching service, ordered from best to worst. In other
* words, the first item is what would be returned by
- * {@link #resolveService}. If there are no matching services, an
- * empty list or null is returned.
+ * {@link #resolveService}. If there are no matching services,
+ * returns an empty list.
* @hide
*/
@NonNull
@@ -8208,7 +8208,7 @@ public abstract class PackageManager {
* @param userId The user id.
* @return Returns a List of ResolveInfo objects containing one entry for
* each matching provider, ordered from best to worst. If there are
- * no matching services, an empty list or null is returned.
+ * no matching services, returns an empty list.
* @hide
*/
@SuppressWarnings("HiddenAbstractMethod")
@@ -8240,7 +8240,7 @@ public abstract class PackageManager {
* @param user The user being queried.
* @return Returns a List of ResolveInfo objects containing one entry for
* each matching provider, ordered from best to worst. If there are
- * no matching services, an empty list or null is returned.
+ * no matching services, returns an empty list.
* @hide
*/
@NonNull
@@ -8274,7 +8274,7 @@ public abstract class PackageManager {
* @param flags Additional option flags to modify the data returned.
* @return Returns a List of ResolveInfo objects containing one entry for
* each matching provider, ordered from best to worst. If there are
- * no matching services, an empty list or null is returned.
+ * no matching services, returns an empty list.
*/
@NonNull
public abstract List<ResolveInfo> queryIntentContentProviders(@NonNull Intent intent,
diff --git a/core/java/android/content/pm/multiuser.aconfig b/core/java/android/content/pm/multiuser.aconfig
index 4e6fb8d3a8e7..e6082d0df1f8 100644
--- a/core/java/android/content/pm/multiuser.aconfig
+++ b/core/java/android/content/pm/multiuser.aconfig
@@ -615,3 +615,10 @@ flag {
bug: "346553745"
is_exported: true
}
+
+flag {
+ namespace: "multi_user"
+ name: "logout_user_api"
+ description: "Add API to logout user"
+ bug: "350045389"
+}
diff --git a/core/java/android/content/pm/parsing/ApkLite.java b/core/java/android/content/pm/parsing/ApkLite.java
index 1d8209da6559..b8cf70960ea3 100644
--- a/core/java/android/content/pm/parsing/ApkLite.java
+++ b/core/java/android/content/pm/parsing/ApkLite.java
@@ -18,6 +18,7 @@ package android.content.pm.parsing;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.content.pm.ApplicationInfo;
import android.content.pm.ArchivedPackageParcel;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
@@ -184,6 +185,11 @@ public class ApkLite {
*/
private final @Nullable ArchivedPackageParcel mArchivedPackage;
+ /**
+ * pageSizeCompat info from manifest file
+ */
+ private final int mPageSizeCompat;
+
public ApkLite(String path, String packageName, String splitName, boolean isFeatureSplit,
String configForSplit, String usesSplitName, boolean isSplitRequired, int versionCode,
int versionCodeMajor, int revisionCode, int installLocation,
@@ -200,7 +206,8 @@ public class ApkLite {
List<String> usesStaticLibraries, long[] usesStaticLibrariesVersionsMajor,
String[][] usesStaticLibrariesCertDigests,
boolean updatableSystem,
- String emergencyInstaller, List<SharedLibraryInfo> declaredLibraries) {
+ String emergencyInstaller, List<SharedLibraryInfo> declaredLibraries,
+ int pageSizeCompat) {
mPath = path;
mPackageName = packageName;
mSplitName = splitName;
@@ -245,6 +252,7 @@ public class ApkLite {
mEmergencyInstaller = emergencyInstaller;
mArchivedPackage = null;
mDeclaredLibraries = declaredLibraries;
+ mPageSizeCompat = pageSizeCompat;
}
public ApkLite(String path, ArchivedPackageParcel archivedPackage) {
@@ -292,6 +300,7 @@ public class ApkLite {
mEmergencyInstaller = null;
mArchivedPackage = archivedPackage;
mDeclaredLibraries = null;
+ mPageSizeCompat = ApplicationInfo.PAGE_SIZE_APP_COMPAT_FLAG_UNDEFINED;
}
/**
@@ -676,11 +685,19 @@ public class ApkLite {
return mArchivedPackage;
}
+ /**
+ * pageSizeCompat info from manifest file
+ */
+ @DataClass.Generated.Member
+ public int getPageSizeCompat() {
+ return mPageSizeCompat;
+ }
+
@DataClass.Generated(
- time = 1731589363302L,
+ time = 1738189581427L,
codegenVersion = "1.0.23",
sourceFile = "frameworks/base/core/java/android/content/pm/parsing/ApkLite.java",
- inputSignatures = "private final @android.annotation.NonNull java.lang.String mPackageName\nprivate final @android.annotation.NonNull java.lang.String mPath\nprivate final @android.annotation.Nullable java.lang.String mSplitName\nprivate final @android.annotation.Nullable java.lang.String mUsesSplitName\nprivate final @android.annotation.Nullable java.lang.String mConfigForSplit\nprivate final @android.annotation.Nullable java.util.Set<java.lang.String> mRequiredSplitTypes\nprivate final @android.annotation.Nullable java.util.Set<java.lang.String> mSplitTypes\nprivate final int mVersionCodeMajor\nprivate final int mVersionCode\nprivate final int mRevisionCode\nprivate final int mInstallLocation\nprivate final int mMinSdkVersion\nprivate final int mTargetSdkVersion\nprivate final @android.annotation.NonNull android.content.pm.VerifierInfo[] mVerifiers\nprivate final @android.annotation.NonNull android.content.pm.SigningDetails mSigningDetails\nprivate final boolean mFeatureSplit\nprivate final boolean mIsolatedSplits\nprivate final boolean mSplitRequired\nprivate final boolean mCoreApp\nprivate final boolean mDebuggable\nprivate final boolean mProfileableByShell\nprivate final boolean mMultiArch\nprivate final boolean mUse32bitAbi\nprivate final boolean mExtractNativeLibs\nprivate final boolean mUseEmbeddedDex\nprivate final @android.annotation.Nullable java.lang.String mTargetPackageName\nprivate final boolean mOverlayIsStatic\nprivate final int mOverlayPriority\nprivate final @android.annotation.Nullable java.lang.String mRequiredSystemPropertyName\nprivate final @android.annotation.Nullable java.lang.String mRequiredSystemPropertyValue\nprivate final int mRollbackDataPolicy\nprivate final boolean mHasDeviceAdminReceiver\nprivate final boolean mIsSdkLibrary\nprivate final boolean mIsStaticLibrary\nprivate final @android.annotation.NonNull java.util.List<java.lang.String> mUsesSdkLibraries\nprivate final @android.annotation.Nullable long[] mUsesSdkLibrariesVersionsMajor\nprivate final @android.annotation.Nullable java.lang.String[][] mUsesSdkLibrariesCertDigests\nprivate final @android.annotation.NonNull java.util.List<java.lang.String> mUsesStaticLibraries\nprivate final @android.annotation.Nullable long[] mUsesStaticLibrariesVersions\nprivate final @android.annotation.Nullable java.lang.String[][] mUsesStaticLibrariesCertDigests\nprivate final boolean mUpdatableSystem\nprivate final @android.annotation.Nullable java.lang.String mEmergencyInstaller\nprivate final @android.annotation.NonNull java.util.List<android.content.pm.SharedLibraryInfo> mDeclaredLibraries\nprivate final @android.annotation.Nullable android.content.pm.ArchivedPackageParcel mArchivedPackage\npublic long getLongVersionCode()\nprivate boolean hasAnyRequiredSplitTypes()\nclass ApkLite extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false, genConstDefs=false)")
+ inputSignatures = "private final @android.annotation.NonNull java.lang.String mPackageName\nprivate final @android.annotation.NonNull java.lang.String mPath\nprivate final @android.annotation.Nullable java.lang.String mSplitName\nprivate final @android.annotation.Nullable java.lang.String mUsesSplitName\nprivate final @android.annotation.Nullable java.lang.String mConfigForSplit\nprivate final @android.annotation.Nullable java.util.Set<java.lang.String> mRequiredSplitTypes\nprivate final @android.annotation.Nullable java.util.Set<java.lang.String> mSplitTypes\nprivate final int mVersionCodeMajor\nprivate final int mVersionCode\nprivate final int mRevisionCode\nprivate final int mInstallLocation\nprivate final int mMinSdkVersion\nprivate final int mTargetSdkVersion\nprivate final @android.annotation.NonNull android.content.pm.VerifierInfo[] mVerifiers\nprivate final @android.annotation.NonNull android.content.pm.SigningDetails mSigningDetails\nprivate final boolean mFeatureSplit\nprivate final boolean mIsolatedSplits\nprivate final boolean mSplitRequired\nprivate final boolean mCoreApp\nprivate final boolean mDebuggable\nprivate final boolean mProfileableByShell\nprivate final boolean mMultiArch\nprivate final boolean mUse32bitAbi\nprivate final boolean mExtractNativeLibs\nprivate final boolean mUseEmbeddedDex\nprivate final @android.annotation.Nullable java.lang.String mTargetPackageName\nprivate final boolean mOverlayIsStatic\nprivate final int mOverlayPriority\nprivate final @android.annotation.Nullable java.lang.String mRequiredSystemPropertyName\nprivate final @android.annotation.Nullable java.lang.String mRequiredSystemPropertyValue\nprivate final int mRollbackDataPolicy\nprivate final boolean mHasDeviceAdminReceiver\nprivate final boolean mIsSdkLibrary\nprivate final boolean mIsStaticLibrary\nprivate final @android.annotation.NonNull java.util.List<java.lang.String> mUsesSdkLibraries\nprivate final @android.annotation.Nullable long[] mUsesSdkLibrariesVersionsMajor\nprivate final @android.annotation.Nullable java.lang.String[][] mUsesSdkLibrariesCertDigests\nprivate final @android.annotation.NonNull java.util.List<java.lang.String> mUsesStaticLibraries\nprivate final @android.annotation.Nullable long[] mUsesStaticLibrariesVersions\nprivate final @android.annotation.Nullable java.lang.String[][] mUsesStaticLibrariesCertDigests\nprivate final boolean mUpdatableSystem\nprivate final @android.annotation.Nullable java.lang.String mEmergencyInstaller\nprivate final @android.annotation.NonNull java.util.List<android.content.pm.SharedLibraryInfo> mDeclaredLibraries\nprivate final @android.annotation.Nullable android.content.pm.ArchivedPackageParcel mArchivedPackage\nprivate final int mPageSizeCompat\npublic long getLongVersionCode()\nprivate boolean hasAnyRequiredSplitTypes()\nclass ApkLite extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false, genConstDefs=false)")
@Deprecated
private void __metadata() {}
diff --git a/core/java/android/content/pm/parsing/ApkLiteParseUtils.java b/core/java/android/content/pm/parsing/ApkLiteParseUtils.java
index 71d0a04760ac..26252a990676 100644
--- a/core/java/android/content/pm/parsing/ApkLiteParseUtils.java
+++ b/core/java/android/content/pm/parsing/ApkLiteParseUtils.java
@@ -22,6 +22,7 @@ import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER;
import android.annotation.NonNull;
import android.app.admin.DeviceAdminReceiver;
+import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.SharedLibraryInfo;
@@ -459,6 +460,7 @@ public class ApkLiteParseUtils {
boolean overlayIsStatic = false;
int overlayPriority = 0;
int rollbackDataPolicy = 0;
+ int pageSizeCompat = ApplicationInfo.PAGE_SIZE_APP_COMPAT_FLAG_UNDEFINED;
String requiredSystemPropertyName = null;
String requiredSystemPropertyValue = null;
@@ -516,6 +518,10 @@ public class ApkLiteParseUtils {
boolean hasBindDeviceAdminPermission =
android.Manifest.permission.BIND_DEVICE_ADMIN.equals(permission);
+ pageSizeCompat = parser.getAttributeIntValue(ANDROID_RES_NAMESPACE,
+ "pageSizeCompat",
+ ApplicationInfo.PAGE_SIZE_APP_COMPAT_FLAG_UNDEFINED);
+
final int innerDepth = parser.getDepth();
int innerType;
while ((innerType = parser.next()) != XmlPullParser.END_DOCUMENT
@@ -817,7 +823,7 @@ public class ApkLiteParseUtils {
usesSdkLibrariesVersionsMajor, usesSdkLibrariesCertDigests, isStaticLibrary,
usesStaticLibraries, usesStaticLibrariesVersions,
usesStaticLibrariesCertDigests, updatableSystem, emergencyInstaller,
- declaredLibraries));
+ declaredLibraries, pageSizeCompat));
}
private static ParseResult<String[]> parseAdditionalCertificates(ParseInput input,
diff --git a/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java b/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java
index d2d3a6840acc..c7403c0ea98c 100644
--- a/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java
+++ b/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java
@@ -339,36 +339,6 @@ public class FrameworkParsingPackageUtils {
}
/**
- * Check if a package is compatible with this platform with regards to its
- * its minSdkVersionFull.
- *
- * @param minSdkVersionFullString A string representation of a major.minor version,
- * e.g. "12.34"
- * @param platformMinSdkVersionFull The major and minor version of the platform, i.e. the value
- * of Build.VERSION.SDK_INT_FULL
- * @param input A ParseInput object to report success or failure
- */
- public static ParseResult<Void> verifyMinSdkVersionFull(@NonNull String minSdkVersionFullString,
- int platformMinSdkVersionFull, @NonNull ParseInput input) {
- int minSdkVersionFull;
- try {
- minSdkVersionFull = Build.parseFullVersion(minSdkVersionFullString);
- } catch (IllegalStateException e) {
- return input.error(PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED,
- e.getMessage());
- }
- if (minSdkVersionFull <= platformMinSdkVersionFull) {
- return input.success(null);
- }
- return input.error(PackageManager.INSTALL_FAILED_OLDER_SDK,
- "Requires newer sdk version "
- + Build.fullVersionToString(minSdkVersionFull)
- + " (current version is "
- + Build.fullVersionToString(platformMinSdkVersionFull)
- + ")");
- }
-
- /**
* Computes the targetSdkVersion to use at runtime. If the package is not compatible with this
* platform, populates {@code outError[0]} with an error message.
* <p>
diff --git a/core/java/android/content/pm/parsing/PackageLite.java b/core/java/android/content/pm/parsing/PackageLite.java
index 0e11eecfc7ec..43a3645f34cd 100644
--- a/core/java/android/content/pm/parsing/PackageLite.java
+++ b/core/java/android/content/pm/parsing/PackageLite.java
@@ -138,6 +138,11 @@ public class PackageLite {
*/
private final @Nullable ArchivedPackageParcel mArchivedPackage;
+ /**
+ * pageSizeCompat info from manifest file
+ */
+ private final int mPageSizeCompat;
+
public PackageLite(String path, String baseApkPath, ApkLite baseApk,
String[] splitNames, boolean[] isFeatureSplits, String[] usesSplitNames,
String[] configForSplit, String[] splitApkPaths, int[] splitRevisionCodes,
@@ -182,6 +187,7 @@ public class PackageLite {
mTargetSdk = targetSdk;
mDeclaredLibraries = baseApk.getDeclaredLibraries();
mArchivedPackage = baseApk.getArchivedPackage();
+ mPageSizeCompat = baseApk.getPageSizeCompat();
}
/**
@@ -511,11 +517,19 @@ public class PackageLite {
return mArchivedPackage;
}
+ /**
+ * pageSizeCompat info from manifest file
+ */
+ @DataClass.Generated.Member
+ public int getPageSizeCompat() {
+ return mPageSizeCompat;
+ }
+
@DataClass.Generated(
- time = 1731591578587L,
+ time = 1738193799106L,
codegenVersion = "1.0.23",
sourceFile = "frameworks/base/core/java/android/content/pm/parsing/PackageLite.java",
- inputSignatures = "private final @android.annotation.NonNull java.lang.String mPackageName\nprivate final @android.annotation.NonNull java.lang.String mPath\nprivate final @android.annotation.NonNull java.lang.String mBaseApkPath\nprivate final @android.annotation.Nullable java.lang.String[] mSplitApkPaths\nprivate final @android.annotation.Nullable java.lang.String[] mSplitNames\nprivate final @android.annotation.Nullable java.lang.String[] mUsesSplitNames\nprivate final @android.annotation.Nullable java.lang.String[] mConfigForSplit\nprivate final @android.annotation.Nullable java.util.Set<java.lang.String> mBaseRequiredSplitTypes\nprivate final @android.annotation.Nullable java.util.Set<java.lang.String>[] mRequiredSplitTypes\nprivate final @android.annotation.Nullable java.util.Set<java.lang.String>[] mSplitTypes\nprivate final int mVersionCodeMajor\nprivate final int mVersionCode\nprivate final int mTargetSdk\nprivate final int mBaseRevisionCode\nprivate final @android.annotation.Nullable int[] mSplitRevisionCodes\nprivate final int mInstallLocation\nprivate final @android.annotation.NonNull android.content.pm.VerifierInfo[] mVerifiers\nprivate final @android.annotation.NonNull android.content.pm.SigningDetails mSigningDetails\nprivate final @android.annotation.Nullable boolean[] mIsFeatureSplits\nprivate final boolean mIsolatedSplits\nprivate final boolean mSplitRequired\nprivate final boolean mCoreApp\nprivate final boolean mDebuggable\nprivate final boolean mMultiArch\nprivate final boolean mUse32bitAbi\nprivate final boolean mExtractNativeLibs\nprivate final boolean mProfileableByShell\nprivate final boolean mUseEmbeddedDex\nprivate final boolean mIsSdkLibrary\nprivate final boolean mIsStaticLibrary\nprivate final @android.annotation.NonNull java.util.List<java.lang.String> mUsesSdkLibraries\nprivate final @android.annotation.Nullable long[] mUsesSdkLibrariesVersionsMajor\nprivate final @android.annotation.Nullable java.lang.String[][] mUsesSdkLibrariesCertDigests\nprivate final @android.annotation.NonNull java.util.List<java.lang.String> mUsesStaticLibraries\nprivate final @android.annotation.Nullable long[] mUsesStaticLibrariesVersions\nprivate final @android.annotation.Nullable java.lang.String[][] mUsesStaticLibrariesCertDigests\nprivate final @android.annotation.NonNull java.util.List<android.content.pm.SharedLibraryInfo> mDeclaredLibraries\nprivate final @android.annotation.Nullable android.content.pm.ArchivedPackageParcel mArchivedPackage\npublic java.util.List<java.lang.String> getAllApkPaths()\npublic long getLongVersionCode()\nprivate boolean hasAnyRequiredSplitTypes()\nclass PackageLite extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false, genConstDefs=false)")
+ inputSignatures = "private final @android.annotation.NonNull java.lang.String mPackageName\nprivate final @android.annotation.NonNull java.lang.String mPath\nprivate final @android.annotation.NonNull java.lang.String mBaseApkPath\nprivate final @android.annotation.Nullable java.lang.String[] mSplitApkPaths\nprivate final @android.annotation.Nullable java.lang.String[] mSplitNames\nprivate final @android.annotation.Nullable java.lang.String[] mUsesSplitNames\nprivate final @android.annotation.Nullable java.lang.String[] mConfigForSplit\nprivate final @android.annotation.Nullable java.util.Set<java.lang.String> mBaseRequiredSplitTypes\nprivate final @android.annotation.Nullable java.util.Set<java.lang.String>[] mRequiredSplitTypes\nprivate final @android.annotation.Nullable java.util.Set<java.lang.String>[] mSplitTypes\nprivate final int mVersionCodeMajor\nprivate final int mVersionCode\nprivate final int mTargetSdk\nprivate final int mBaseRevisionCode\nprivate final @android.annotation.Nullable int[] mSplitRevisionCodes\nprivate final int mInstallLocation\nprivate final @android.annotation.NonNull android.content.pm.VerifierInfo[] mVerifiers\nprivate final @android.annotation.NonNull android.content.pm.SigningDetails mSigningDetails\nprivate final @android.annotation.Nullable boolean[] mIsFeatureSplits\nprivate final boolean mIsolatedSplits\nprivate final boolean mSplitRequired\nprivate final boolean mCoreApp\nprivate final boolean mDebuggable\nprivate final boolean mMultiArch\nprivate final boolean mUse32bitAbi\nprivate final boolean mExtractNativeLibs\nprivate final boolean mProfileableByShell\nprivate final boolean mUseEmbeddedDex\nprivate final boolean mIsSdkLibrary\nprivate final boolean mIsStaticLibrary\nprivate final @android.annotation.NonNull java.util.List<java.lang.String> mUsesSdkLibraries\nprivate final @android.annotation.Nullable long[] mUsesSdkLibrariesVersionsMajor\nprivate final @android.annotation.Nullable java.lang.String[][] mUsesSdkLibrariesCertDigests\nprivate final @android.annotation.NonNull java.util.List<java.lang.String> mUsesStaticLibraries\nprivate final @android.annotation.Nullable long[] mUsesStaticLibrariesVersions\nprivate final @android.annotation.Nullable java.lang.String[][] mUsesStaticLibrariesCertDigests\nprivate final @android.annotation.NonNull java.util.List<android.content.pm.SharedLibraryInfo> mDeclaredLibraries\nprivate final @android.annotation.Nullable android.content.pm.ArchivedPackageParcel mArchivedPackage\nprivate final int mPageSizeCompat\npublic java.util.List<java.lang.String> getAllApkPaths()\npublic long getLongVersionCode()\nprivate boolean hasAnyRequiredSplitTypes()\nclass PackageLite extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false, genConstDefs=false)")
@Deprecated
private void __metadata() {}
diff --git a/core/java/android/content/res/flags.aconfig b/core/java/android/content/res/flags.aconfig
index ecb4bb1394b6..e24f1a8155ef 100644
--- a/core/java/android/content/res/flags.aconfig
+++ b/core/java/android/content/res/flags.aconfig
@@ -121,4 +121,12 @@ flag {
namespace: "customization_picker"
description: "Fixes bug in Launcher preview by enabling overlays targeting 'android'"
bug: "377545987"
+}
+
+flag {
+ name: "always_false"
+ is_exported: true
+ namespace: "resource_manager"
+ description: "flag always meant to be false, for testing resource flagging within cts tests"
+ bug: "377974898"
} \ No newline at end of file
diff --git a/core/java/android/hardware/biometrics/BiometricConstants.java b/core/java/android/hardware/biometrics/BiometricConstants.java
index 7dc6afba3f1c..a7fbce51e9df 100644
--- a/core/java/android/hardware/biometrics/BiometricConstants.java
+++ b/core/java/android/hardware/biometrics/BiometricConstants.java
@@ -188,6 +188,24 @@ public interface BiometricConstants {
int BIOMETRIC_ERROR_CONTENT_VIEW_MORE_OPTIONS_BUTTON = 22;
/**
+ * The error code returned after lock out error happens, the error dialog shows, and the users
+ * dismisses the dialog. This is a placeholder that is currently only used by the support
+ * library.
+ *
+ * @hide
+ */
+ int BIOMETRIC_ERROR_LOCKOUT_ERROR_DIALOG_DISMISSED = 23;
+
+ /**
+ * The error code returned after biometric hardware error happens, the error dialog shows, and
+ * the users dismisses the dialog.This is a placeholder that is currently only used by the
+ * support library.
+ *
+ * @hide
+ */
+ int BIOMETRIC_ERROR_BIOMETRIC_HARDWARE_ERROR_DIALOG_DISMISSED = 24;
+
+ /**
* This constant is only used by SystemUI. It notifies SystemUI that authentication was paused
* because the authentication attempt was unsuccessful.
* @hide
@@ -219,6 +237,8 @@ public interface BiometricConstants {
BIOMETRIC_ERROR_IDENTITY_CHECK_NOT_ACTIVE,
BIOMETRIC_ERROR_NOT_ENABLED_FOR_APPS,
BIOMETRIC_ERROR_CONTENT_VIEW_MORE_OPTIONS_BUTTON,
+ BIOMETRIC_ERROR_LOCKOUT_ERROR_DIALOG_DISMISSED,
+ BIOMETRIC_ERROR_BIOMETRIC_HARDWARE_ERROR_DIALOG_DISMISSED,
BIOMETRIC_PAUSED_REJECTED})
@Retention(RetentionPolicy.SOURCE)
@interface Errors {}
diff --git a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
index 89a6b02b56c4..56d272768a66 100644
--- a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
+++ b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
@@ -1616,7 +1616,13 @@ public class CameraDeviceImpl extends CameraDevice
// request if no repeating request is active. A default capture request is created here
// for initial use. The capture callback will provide capture results that include the
// actual capture parameters used for the streaming.
- CaptureRequest.Builder builder = createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
+ CameraMetadataNative templatedRequest = mRemoteDevice.createDefaultRequest(
+ CameraDevice.TEMPLATE_PREVIEW);
+
+ CaptureRequest.Builder builder = new CaptureRequest.Builder(
+ templatedRequest, /*reprocess*/false, CameraCaptureSession.SESSION_ID_NONE,
+ getId(), /*physicalCameraIdSet*/ null);
+
for (Surface surface : surfaces) {
builder.addTarget(surface);
}
diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java
index 34e86a414533..fded88212127 100644
--- a/core/java/android/hardware/display/DisplayManager.java
+++ b/core/java/android/hardware/display/DisplayManager.java
@@ -146,6 +146,22 @@ public final class DisplayManager {
"android.hardware.display.category.PRESENTATION";
/**
+ * Display category: Built in displays.
+ *
+ * <p>
+ * This category can be used to identify displays that are built into the device. The
+ * displays that are returned may be inactive or disabled at the current moment. The
+ * returned displays are useful in identifying the various sizes of built-in displays. The
+ * id from {@link Display#getDisplayId()} is not guaranteed to be stable and may change
+ * when the display becomes active.
+ * </p>
+ * @see #getDisplays(String)
+ */
+ @FlaggedApi(com.android.server.display.feature.flags.Flags.FLAG_DISPLAY_CATEGORY_BUILT_IN)
+ public static final String DISPLAY_CATEGORY_BUILT_IN_DISPLAYS =
+ "android.hardware.display.category.BUILT_IN_DISPLAYS";
+
+ /**
* Display category: Rear displays.
* <p>
* This category can be used to identify complementary internal displays that are facing away
@@ -171,6 +187,8 @@ public final class DisplayManager {
* @see #getDisplays(String)
* @hide
*/
+ @TestApi
+ @SuppressLint("UnflaggedApi")
public static final String DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED =
"android.hardware.display.category.ALL_INCLUDING_DISABLED";
@@ -623,9 +641,6 @@ public final class DisplayManager {
* is triggered whenever the properties of a {@link android.view.Display}, such as size,
* state, density are modified.
*
- * This event is not triggered for refresh rate changes as they can change very often.
- * To monitor refresh rate changes, subscribe to {@link EVENT_TYPE_DISPLAY_REFRESH_RATE}.
- *
* @see #registerDisplayListener(DisplayListener, Handler, long)
*
*/
@@ -732,10 +747,13 @@ public final class DisplayManager {
* @see #DISPLAY_CATEGORY_PRESENTATION
*/
public Display[] getDisplays(String category) {
- boolean includeDisabled = (category != null
- && category.equals(DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED));
+ boolean includeDisabled = shouldIncludeDisabledDisplays(category);
final int[] displayIds = mGlobal.getDisplayIds(includeDisabled);
- if (DISPLAY_CATEGORY_PRESENTATION.equals(category)) {
+ if (Flags.displayCategoryBuiltIn()
+ && DISPLAY_CATEGORY_BUILT_IN_DISPLAYS.equals(category)) {
+ Display[] value = getDisplays(displayIds, DisplayManager::isBuiltInDisplay);
+ return value;
+ } else if (DISPLAY_CATEGORY_PRESENTATION.equals(category)) {
return getDisplays(displayIds, DisplayManager::isPresentationDisplay);
} else if (DISPLAY_CATEGORY_REAR.equals(category)) {
return getDisplays(displayIds, DisplayManager::isRearDisplay);
@@ -745,6 +763,16 @@ public final class DisplayManager {
return new Display[0];
}
+ private boolean shouldIncludeDisabledDisplays(@Nullable String category) {
+ if (DISPLAY_CATEGORY_BUILT_IN_DISPLAYS.equals(category)) {
+ return true;
+ }
+ if (DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED.equals(category)) {
+ return true;
+ }
+ return false;
+ }
+
private Display[] getDisplays(int[] displayIds, Predicate<Display> predicate) {
ArrayList<Display> tmpDisplays = new ArrayList<>();
for (int displayId : displayIds) {
@@ -756,6 +784,13 @@ public final class DisplayManager {
return tmpDisplays.toArray(new Display[tmpDisplays.size()]);
}
+ private static boolean isBuiltInDisplay(@Nullable Display display) {
+ if (display == null) {
+ return false;
+ }
+ return display.getType() == Display.TYPE_INTERNAL;
+ }
+
private static boolean isPresentationDisplay(@Nullable Display display) {
if (display == null || (display.getDisplayId() == DEFAULT_DISPLAY)
|| (display.getFlags() & Display.FLAG_PRESENTATION) == 0) {
@@ -804,9 +839,6 @@ public final class DisplayManager {
* Registers a display listener to receive notifications about when
* displays are added, removed or changed.
*
- * We encourage to use {@link #registerDisplayListener(Executor, long, DisplayListener)}
- * instead to subscribe for explicit events of interest
- *
* @param listener The listener to register.
* @param handler The handler on which the listener should be invoked, or null
* if the listener should be invoked on the calling thread's looper.
@@ -815,9 +847,7 @@ public final class DisplayManager {
*/
public void registerDisplayListener(DisplayListener listener, Handler handler) {
registerDisplayListener(listener, handler, EVENT_TYPE_DISPLAY_ADDED
- | EVENT_TYPE_DISPLAY_CHANGED
- | EVENT_TYPE_DISPLAY_REFRESH_RATE
- | EVENT_TYPE_DISPLAY_REMOVED);
+ | EVENT_TYPE_DISPLAY_CHANGED | EVENT_TYPE_DISPLAY_REMOVED);
}
/**
@@ -1843,6 +1873,8 @@ public final class DisplayManager {
*/
@RequiresPermission(MANAGE_DISPLAYS)
@Nullable
+ @TestApi
+ @FlaggedApi(Flags.FLAG_DISPLAY_TOPOLOGY)
public DisplayTopology getDisplayTopology() {
return mGlobal.getDisplayTopology();
}
diff --git a/core/java/android/hardware/display/DisplayManagerGlobal.java b/core/java/android/hardware/display/DisplayManagerGlobal.java
index 339dbf2c2029..b5715ed25bd9 100644
--- a/core/java/android/hardware/display/DisplayManagerGlobal.java
+++ b/core/java/android/hardware/display/DisplayManagerGlobal.java
@@ -1766,23 +1766,29 @@ public final class DisplayManagerGlobal {
}
if ((eventFlags & DisplayManager.EVENT_TYPE_DISPLAY_CHANGED) != 0) {
- baseEventMask |= INTERNAL_EVENT_FLAG_DISPLAY_BASIC_CHANGED;
+ // For backward compatibility, a client subscribing to
+ // DisplayManager.EVENT_FLAG_DISPLAY_CHANGED will be enrolled to both Basic and
+ // RR changes
+ baseEventMask |= INTERNAL_EVENT_FLAG_DISPLAY_BASIC_CHANGED
+ | INTERNAL_EVENT_FLAG_DISPLAY_REFRESH_RATE;
}
- if ((eventFlags & DisplayManager.EVENT_TYPE_DISPLAY_REMOVED) != 0) {
+ if ((eventFlags
+ & DisplayManager.EVENT_TYPE_DISPLAY_REMOVED) != 0) {
baseEventMask |= INTERNAL_EVENT_FLAG_DISPLAY_REMOVED;
}
- if ((eventFlags & DisplayManager.EVENT_TYPE_DISPLAY_REFRESH_RATE) != 0) {
- baseEventMask |= INTERNAL_EVENT_FLAG_DISPLAY_REFRESH_RATE;
- }
-
if (Flags.displayListenerPerformanceImprovements()) {
+ if ((eventFlags & DisplayManager.EVENT_TYPE_DISPLAY_REFRESH_RATE) != 0) {
+ baseEventMask |= INTERNAL_EVENT_FLAG_DISPLAY_REFRESH_RATE;
+ }
+
if ((eventFlags & DisplayManager.EVENT_TYPE_DISPLAY_STATE) != 0) {
baseEventMask |= INTERNAL_EVENT_FLAG_DISPLAY_STATE;
}
}
+
return baseEventMask;
}
}
diff --git a/core/java/android/hardware/display/DisplayTopology.java b/core/java/android/hardware/display/DisplayTopology.java
index 555ff4b271fd..4ed0fc056e7d 100644
--- a/core/java/android/hardware/display/DisplayTopology.java
+++ b/core/java/android/hardware/display/DisplayTopology.java
@@ -21,8 +21,10 @@ import static android.hardware.display.DisplayTopology.TreeNode.POSITION_LEFT;
import static android.hardware.display.DisplayTopology.TreeNode.POSITION_RIGHT;
import static android.hardware.display.DisplayTopology.TreeNode.POSITION_TOP;
+import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.Nullable;
+import android.annotation.TestApi;
import android.graphics.PointF;
import android.graphics.RectF;
import android.os.Parcel;
@@ -39,6 +41,7 @@ import android.view.Display;
import androidx.annotation.NonNull;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.server.display.feature.flags.Flags;
import java.io.PrintWriter;
import java.io.StringWriter;
@@ -59,6 +62,8 @@ import java.util.Queue;
*
* @hide
*/
+@TestApi
+@FlaggedApi(Flags.FLAG_DISPLAY_TOPOLOGY)
public final class DisplayTopology implements Parcelable {
private static final String TAG = "DisplayTopology";
private static final float EPSILON = 0.0001f;
@@ -82,6 +87,7 @@ public final class DisplayTopology implements Parcelable {
* @param px The value in logical pixels
* @param dpi The logical density of the display
* @return The value in density-independent pixels
+ * @hide
*/
public static float pxToDp(float px, int dpi) {
return px * DisplayMetrics.DENSITY_DEFAULT / dpi;
@@ -91,6 +97,7 @@ public final class DisplayTopology implements Parcelable {
* @param dp The value in density-independent pixels
* @param dpi The logical density of the display
* @return The value in logical pixels
+ * @hide
*/
public static float dpToPx(float dp, int dpi) {
return dp * dpi / DisplayMetrics.DENSITY_DEFAULT;
@@ -108,8 +115,14 @@ public final class DisplayTopology implements Parcelable {
*/
private int mPrimaryDisplayId = Display.INVALID_DISPLAY;
+ /**
+ * @hide
+ */
public DisplayTopology() {}
+ /**
+ * @hide
+ */
public DisplayTopology(@Nullable TreeNode root, int primaryDisplayId) {
mRoot = root;
if (mRoot != null) {
@@ -124,15 +137,24 @@ public final class DisplayTopology implements Parcelable {
mPrimaryDisplayId = primaryDisplayId;
}
+ /**
+ * @hide
+ */
public DisplayTopology(Parcel source) {
this(source.readTypedObject(TreeNode.CREATOR), source.readInt());
}
+ /**
+ * @hide
+ */
@Nullable
public TreeNode getRoot() {
return mRoot;
}
+ /**
+ * @hide
+ */
public int getPrimaryDisplayId() {
return mPrimaryDisplayId;
}
@@ -144,6 +166,7 @@ public final class DisplayTopology implements Parcelable {
* @param displayId The logical display ID
* @param width The width of the display
* @param height The height of the display
+ * @hide
*/
public void addDisplay(int displayId, float width, float height) {
addDisplay(displayId, width, height, /* shouldLog= */ true);
@@ -155,6 +178,7 @@ public final class DisplayTopology implements Parcelable {
* @param width The new width
* @param height The new height
* @return True if the topology has changed.
+ * @hide
*/
public boolean updateDisplay(int displayId, float width, float height) {
TreeNode display = findDisplay(displayId, mRoot);
@@ -178,6 +202,7 @@ public final class DisplayTopology implements Parcelable {
* one by one.
* @param displayId The logical display ID
* @return True if the display was present in the topology and removed.
+ * @hide
*/
public boolean removeDisplay(int displayId) {
if (findDisplay(displayId, mRoot) == null) {
@@ -221,6 +246,7 @@ public final class DisplayTopology implements Parcelable {
* are the display IDs.
* @throws IllegalArgumentException if the keys in {@code positions} are not the exact display
* IDs in this topology, no more, no less
+ * @hide
*/
public void rearrange(Map<Integer, PointF> newPos) {
if (mRoot == null) {
@@ -346,6 +372,7 @@ public final class DisplayTopology implements Parcelable {
/**
* Clamp offsets and remove any overlaps between displays.
+ * @hide
*/
public void normalize() {
if (mRoot == null) {
@@ -494,6 +521,7 @@ public final class DisplayTopology implements Parcelable {
/**
* @return A deep copy of the topology that will not be modified by the system.
+ * @hide
*/
public DisplayTopology copy() {
TreeNode rootCopy = mRoot == null ? null : mRoot.copy();
@@ -505,6 +533,7 @@ public final class DisplayTopology implements Parcelable {
* (0, 0).
* @return Map from logical display ID to the display's absolute bounds
*/
+ @NonNull
public SparseArray<RectF> getAbsoluteBounds() {
Map<TreeNode, RectF> bounds = new HashMap<>();
getInfo(bounds, /* depths= */ null, /* parents= */ null, mRoot, /* x= */ 0, /* y= */ 0,
@@ -529,6 +558,7 @@ public final class DisplayTopology implements Parcelable {
/**
* Print the object's state and debug information into the given stream.
+ * @hide
* @param pw The stream to dump information to.
*/
public void dump(PrintWriter pw) {
@@ -629,6 +659,9 @@ public final class DisplayTopology implements Parcelable {
return result;
}
+ /**
+ * @hide
+ */
@Nullable
public static TreeNode findDisplay(int displayId, @Nullable TreeNode startingNode) {
if (startingNode == null) {
@@ -725,6 +758,7 @@ public final class DisplayTopology implements Parcelable {
* @param densityPerDisplay The logical display densities, indexed by logical display ID
* @return The graph representation of the topology. If there is a corner adjacency, the same
* display will appear twice in the list of adjacent displays with both possible placements.
+ * @hide
*/
@Nullable
public DisplayTopologyGraph getGraph(SparseIntArray densityPerDisplay) {
@@ -750,7 +784,7 @@ public final class DisplayTopology implements Parcelable {
new SparseArray<>();
for (int id : displayIds) {
if (densityPerDisplay.get(id) == 0) {
- Slog.w(TAG, "Cannot construct graph, no density for display " + id);
+ Slog.e(TAG, "Cannot construct graph, no density for display " + id);
return null;
}
adjacentDisplaysPerId.append(id, new ArrayList<>(Math.min(10, displayIds.size())));
@@ -839,6 +873,9 @@ public final class DisplayTopology implements Parcelable {
}
}
+ /**
+ * @hide
+ */
public static final class TreeNode implements Parcelable {
public static final int POSITION_LEFT = 0;
public static final int POSITION_TOP = 1;
diff --git a/core/java/android/hardware/display/VirtualDisplayConfig.java b/core/java/android/hardware/display/VirtualDisplayConfig.java
index 2a9ee7f07934..322e139d9686 100644
--- a/core/java/android/hardware/display/VirtualDisplayConfig.java
+++ b/core/java/android/hardware/display/VirtualDisplayConfig.java
@@ -243,9 +243,11 @@ public final class VirtualDisplayConfig implements Parcelable {
}
/**
- * Whether this virtual display ignores fixed orientation, aspect ratio and resizability
+ * Whether this virtual display ignores fixed orientation, aspect ratio, and resizability
* of apps.
*
+ * @return Whether orientation, aspect ratio, and resizability restrictions are ignored.
+ *
* @see Builder#setIgnoreActivitySizeRestrictions(boolean)
* @hide
*/
diff --git a/core/java/android/hardware/input/input_framework.aconfig b/core/java/android/hardware/input/input_framework.aconfig
index ae017e80966f..23722ed5bb0d 100644
--- a/core/java/android/hardware/input/input_framework.aconfig
+++ b/core/java/android/hardware/input/input_framework.aconfig
@@ -225,3 +225,11 @@ flag {
purpose: PURPOSE_BUGFIX
}
}
+
+flag {
+ name: "key_event_activity_detection"
+ namespace: "input"
+ is_exported: true
+ description: "Key Event Activity Detection"
+ bug: "356412905"
+}
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index 4c9e73c8b21f..a528ba4b16bf 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -1725,10 +1725,22 @@ public class InputMethodService extends AbstractInputMethodService {
return "SettingsObserver{mShowImeWithHardKeyboard=" + mShowImeWithHardKeyboard + "}";
}
}
+
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
private SettingsObserver mSettingsObserver;
/**
+ * Checks whether the IME should be shown when a hardware keyboard is connected, as configured
+ * through {@link Settings.Secure#SHOW_IME_WITH_HARD_KEYBOARD}, for testing purposes only.
+ *
+ * @hide
+ */
+ @VisibleForTesting
+ public final boolean getShouldShowImeWithHardKeyboardForTesting() {
+ return mSettingsObserver.shouldShowImeWithHardKeyboard();
+ }
+
+ /**
* You can call this to customize the theme used by your IME's window.
* This theme should typically be one that derives from
* {@link android.R.style#Theme_InputMethod}, which is the default theme
@@ -4454,7 +4466,7 @@ public class InputMethodService extends AbstractInputMethodService {
*
* @hide
*/
- @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
+ @VisibleForTesting
public final boolean isImeNavigationBarShownForTesting() {
return mNavigationBarController.isShown();
}
diff --git a/core/java/android/os/BaseBundle.java b/core/java/android/os/BaseBundle.java
index 1cf293d46350..e79b2e7becce 100644
--- a/core/java/android/os/BaseBundle.java
+++ b/core/java/android/os/BaseBundle.java
@@ -142,6 +142,7 @@ public class BaseBundle {
/** {@hide} */
@VisibleForTesting
public int mFlags;
+ private boolean mHasIntent = false;
/**
* Constructs a new, empty Bundle that uses a specific ClassLoader for
@@ -258,9 +259,20 @@ public class BaseBundle {
// Keep as last statement to ensure visibility of other fields
mParcelledData = parcelledData;
+ mHasIntent = from.mHasIntent;
}
}
+ /** @hide */
+ public boolean hasIntent() {
+ return mHasIntent;
+ }
+
+ /** @hide */
+ public void setHasIntent(boolean hasIntent) {
+ mHasIntent = hasIntent;
+ }
+
/**
* TODO: optimize this later (getting just the value part of a Bundle
* with a single pair) once Bundle.forPair() above is implemented
@@ -1837,6 +1849,7 @@ public class BaseBundle {
parcel.writeInt(length);
parcel.writeInt(mParcelledByNative ? BUNDLE_MAGIC_NATIVE : BUNDLE_MAGIC);
parcel.appendFrom(mParcelledData, 0, length);
+ parcel.writeBoolean(mHasIntent);
}
return;
}
@@ -1851,7 +1864,6 @@ public class BaseBundle {
int lengthPos = parcel.dataPosition();
parcel.writeInt(-1); // placeholder, will hold length
parcel.writeInt(BUNDLE_MAGIC);
-
int startPos = parcel.dataPosition();
parcel.writeArrayMapInternal(map);
int endPos = parcel.dataPosition();
@@ -1861,6 +1873,7 @@ public class BaseBundle {
int length = endPos - startPos;
parcel.writeInt(length);
parcel.setDataPosition(endPos);
+ parcel.writeBoolean(mHasIntent);
}
/**
@@ -1904,6 +1917,7 @@ public class BaseBundle {
mOwnsLazyValues = false;
initializeFromParcelLocked(parcel, /*ownsParcel*/ false, isNativeBundle);
}
+ mHasIntent = parcel.readBoolean();
return;
}
@@ -1922,6 +1936,7 @@ public class BaseBundle {
mOwnsLazyValues = true;
mParcelledByNative = isNativeBundle;
mParcelledData = p;
+ mHasIntent = parcel.readBoolean();
}
/** {@hide} */
diff --git a/core/java/android/os/Binder.java b/core/java/android/os/Binder.java
index 6b1e918a3c47..ee62dea7f9e5 100644
--- a/core/java/android/os/Binder.java
+++ b/core/java/android/os/Binder.java
@@ -149,11 +149,6 @@ public class Binder implements IBinder {
private static volatile boolean sStackTrackingEnabled = false;
/**
- * The extension binder object
- */
- private IBinder mExtension = null;
-
- /**
* Enable Binder IPC stack tracking. If enabled, every binder transaction will be logged to
* {@link TransactionTracker}.
*
@@ -1242,9 +1237,7 @@ public class Binder implements IBinder {
/** @hide */
@Override
- public final @Nullable IBinder getExtension() {
- return mExtension;
- }
+ public final native @Nullable IBinder getExtension();
/**
* Set the binder extension.
@@ -1252,12 +1245,7 @@ public class Binder implements IBinder {
*
* @hide
*/
- public final void setExtension(@Nullable IBinder extension) {
- mExtension = extension;
- setExtensionNative(extension);
- }
-
- private final native void setExtensionNative(@Nullable IBinder extension);
+ public final native void setExtension(@Nullable IBinder extension);
/**
* Default implementation rewinds the parcels and calls onTransact. On
diff --git a/core/java/android/os/Bundle.java b/core/java/android/os/Bundle.java
index 819d58d9f059..a24dc5739b7e 100644
--- a/core/java/android/os/Bundle.java
+++ b/core/java/android/os/Bundle.java
@@ -398,7 +398,7 @@ public final class Bundle extends BaseBundle implements Cloneable, Parcelable {
if ((bundle.mFlags & FLAG_HAS_BINDERS_KNOWN) == 0) {
mFlags &= ~FLAG_HAS_BINDERS_KNOWN;
}
- mFlags |= bundle.mFlags & FLAG_HAS_INTENT;
+ setHasIntent(hasIntent() || bundle.hasIntent());
}
/**
@@ -465,7 +465,7 @@ public final class Bundle extends BaseBundle implements Cloneable, Parcelable {
* @hide
*/
public boolean hasIntent() {
- return (mFlags & FLAG_HAS_INTENT) != 0;
+ return super.hasIntent();
}
/** {@hide} */
@@ -591,7 +591,7 @@ public final class Bundle extends BaseBundle implements Cloneable, Parcelable {
mFlags &= ~FLAG_HAS_FDS_KNOWN;
mFlags &= ~FLAG_HAS_BINDERS_KNOWN;
if (intentClass != null && intentClass.isInstance(value)) {
- mFlags |= FLAG_HAS_INTENT;
+ setHasIntent(true);
}
}
diff --git a/core/java/android/os/ChildZygoteProcess.java b/core/java/android/os/ChildZygoteProcess.java
index d8f825a2ee60..84fd0ca4cce9 100644
--- a/core/java/android/os/ChildZygoteProcess.java
+++ b/core/java/android/os/ChildZygoteProcess.java
@@ -67,12 +67,15 @@ public class ChildZygoteProcess extends ZygoteProcess {
if (mDead.get()) {
return true;
}
+ StrictMode.ThreadPolicy oldStrictModeThreadPolicy = StrictMode.allowThreadDiskReads();
try {
if (Os.stat("/proc/" + mPid).st_uid == mUid) {
return false;
}
} catch (ErrnoException e) {
// Do nothing, it's dead.
+ } finally {
+ StrictMode.setThreadPolicy(oldStrictModeThreadPolicy);
}
mDead.set(true);
return true;
diff --git a/core/java/android/os/CombinedMessageQueue/MessageQueue.java b/core/java/android/os/CombinedMessageQueue/MessageQueue.java
index 877f130a8b5a..349a2f0a181d 100644
--- a/core/java/android/os/CombinedMessageQueue/MessageQueue.java
+++ b/core/java/android/os/CombinedMessageQueue/MessageQueue.java
@@ -24,8 +24,6 @@ import android.annotation.TestApi;
import android.app.ActivityThread;
import android.app.Instrumentation;
import android.compat.annotation.UnsupportedAppUsage;
-import android.os.Process;
-import android.os.UserHandle;
import android.ravenwood.annotation.RavenwoodKeepWholeClass;
import android.ravenwood.annotation.RavenwoodRedirect;
import android.ravenwood.annotation.RavenwoodRedirectionClass;
@@ -95,6 +93,13 @@ public final class MessageQueue {
private int mAsyncMessageCount;
/**
+ * @hide
+ */
+ private final AtomicLong mMessageCount = new AtomicLong();
+ private final Thread mThread;
+ private final long mTid;
+
+ /**
* Select between two implementations of message queue. The legacy implementation is used
* by default as it provides maximum compatibility with applications and tests that
* reach into MessageQueue via the mMessages field. The concurrent implemmentation is used for
@@ -128,6 +133,8 @@ public final class MessageQueue {
mUseConcurrent = sIsProcessAllowedToUseConcurrent && !isInstrumenting();
mQuitAllowed = quitAllowed;
mPtr = nativeInit();
+ mThread = Thread.currentThread();
+ mTid = Process.myTid();
}
private static void initIsProcessAllowedToUseConcurrent() {
@@ -218,6 +225,32 @@ public final class MessageQueue {
}
}
+ private void decAndTraceMessageCount() {
+ mMessageCount.decrementAndGet();
+ traceMessageCount();
+ }
+
+ private void incAndTraceMessageCount(Message msg, long when) {
+ mMessageCount.incrementAndGet();
+ msg.mSendingThreadName = Thread.currentThread().getName();
+ msg.mEventId.set(PerfettoTrace.getFlowId());
+
+ traceMessageCount();
+ PerfettoTrace.instant(PerfettoTrace.MQ_CATEGORY, "message_queue_send")
+ .addFlow(msg.mEventId.get())
+ .addArg("receiving_thread", mThread.getName())
+ .addArg("delay", when - SystemClock.uptimeMillis())
+ .addArg("what", msg.what)
+ .emit();
+ }
+
+ /** @hide */
+ private void traceMessageCount() {
+ PerfettoTrace.counter(PerfettoTrace.MQ_CATEGORY, mMessageCount.get())
+ .usingThreadCounterTrack(mTid, mThread.getName())
+ .emit();
+ }
+
// Disposes of the underlying message queue.
// Must only be called on the looper thread or the finalizer.
private void dispose() {
@@ -800,6 +833,7 @@ public final class MessageQueue {
Message msg = nextMessage(false, false);
if (msg != null) {
msg.markInUse();
+ decAndTraceMessageCount();
return msg;
}
@@ -909,6 +943,7 @@ public final class MessageQueue {
if (msg.isAsynchronous()) {
mAsyncMessageCount--;
}
+ decAndTraceMessageCount();
if (TRACE) {
Trace.setCounter("MQ.Delivered", mMessagesDelivered.incrementAndGet());
}
@@ -1075,6 +1110,7 @@ public final class MessageQueue {
msg.markInUse();
msg.arg1 = token;
+ incAndTraceMessageCount(msg, when);
if (!enqueueMessageUnchecked(msg, when)) {
Log.wtf(TAG_C, "Unexpected error while adding sync barrier!");
@@ -1090,6 +1126,7 @@ public final class MessageQueue {
msg.markInUse();
msg.when = when;
msg.arg1 = token;
+ incAndTraceMessageCount(msg, when);
if (Flags.messageQueueTailTracking() && mLast != null && mLast.when <= when) {
/* Message goes to tail of list */
@@ -1196,6 +1233,7 @@ public final class MessageQueue {
needWake = mMessages == null || mMessages.target != null;
}
p.recycleUnchecked();
+ decAndTraceMessageCount();
// If the loop is quitting then it is already awake.
// We can assume mPtr != 0 when mQuitting is false.
@@ -1252,6 +1290,8 @@ public final class MessageQueue {
msg.markInUse();
msg.when = when;
+ incAndTraceMessageCount(msg, when);
+
Message p = mMessages;
boolean needWake;
if (p == null || when == 0 || when < p.when) {
@@ -1391,6 +1431,7 @@ public final class MessageQueue {
if (msg.isAsynchronous()) {
mAsyncMessageCount--;
}
+ decAndTraceMessageCount();
if (TRACE) {
Trace.setCounter("MQ.Delivered", mMessagesDelivered.incrementAndGet());
}
@@ -1642,6 +1683,7 @@ public final class MessageQueue {
mAsyncMessageCount--;
}
p.recycleUnchecked();
+ decAndTraceMessageCount();
p = n;
}
@@ -1660,6 +1702,7 @@ public final class MessageQueue {
mAsyncMessageCount--;
}
n.recycleUnchecked();
+ decAndTraceMessageCount();
p.next = nn;
if (p.next == null) {
mLast = p;
@@ -1718,6 +1761,7 @@ public final class MessageQueue {
mAsyncMessageCount--;
}
n.recycleUnchecked();
+ decAndTraceMessageCount();
p.next = nn;
if (p.next == null) {
mLast = p;
@@ -1759,6 +1803,7 @@ public final class MessageQueue {
mAsyncMessageCount--;
}
p.recycleUnchecked();
+ decAndTraceMessageCount();
p = n;
}
@@ -1777,6 +1822,7 @@ public final class MessageQueue {
mAsyncMessageCount--;
}
n.recycleUnchecked();
+ decAndTraceMessageCount();
p.next = nn;
if (p.next == null) {
mLast = p;
@@ -1832,6 +1878,7 @@ public final class MessageQueue {
mAsyncMessageCount--;
}
p.recycleUnchecked();
+ decAndTraceMessageCount();
p = n;
}
@@ -1850,6 +1897,7 @@ public final class MessageQueue {
mAsyncMessageCount--;
}
n.recycleUnchecked();
+ decAndTraceMessageCount();
p.next = nn;
if (p.next == null) {
mLast = p;
@@ -1904,6 +1952,7 @@ public final class MessageQueue {
mAsyncMessageCount--;
}
p.recycleUnchecked();
+ decAndTraceMessageCount();
p = n;
}
@@ -1921,6 +1970,7 @@ public final class MessageQueue {
mAsyncMessageCount--;
}
n.recycleUnchecked();
+ decAndTraceMessageCount();
p.next = nn;
if (p.next == null) {
mLast = p;
@@ -1976,6 +2026,7 @@ public final class MessageQueue {
mAsyncMessageCount--;
}
p.recycleUnchecked();
+ decAndTraceMessageCount();
p = n;
}
@@ -1993,6 +2044,7 @@ public final class MessageQueue {
mAsyncMessageCount--;
}
n.recycleUnchecked();
+ decAndTraceMessageCount();
p.next = nn;
if (p.next == null) {
mLast = p;
@@ -2027,6 +2079,8 @@ public final class MessageQueue {
mMessages = null;
mLast = null;
mAsyncMessageCount = 0;
+ mMessageCount.set(0);
+ traceMessageCount();
}
private void removeAllFutureMessagesLocked() {
@@ -2057,6 +2111,7 @@ public final class MessageQueue {
mAsyncMessageCount--;
}
p.recycleUnchecked();
+ decAndTraceMessageCount();
} while (n != null);
}
}
@@ -2701,6 +2756,7 @@ public final class MessageQueue {
MessageNode node = new MessageNode(msg, seq);
msg.when = when;
msg.markInUse();
+ incAndTraceMessageCount(msg, when);
if (DEBUG) {
Log.d(TAG_C, "Insert message what: " + msg.what + " when: " + msg.when + " seq: "
@@ -2828,6 +2884,7 @@ public final class MessageQueue {
if (removeMatches) {
if (p.removeFromStack()) {
p.mMessage.recycleUnchecked();
+ decAndTraceMessageCount();
if (mMessageCounts.incrementCancelled()) {
nativeWake(mPtr);
}
@@ -2870,6 +2927,7 @@ public final class MessageQueue {
found = true;
if (queue.remove(msg)) {
msg.mMessage.recycleUnchecked();
+ decAndTraceMessageCount();
}
} else {
return true;
diff --git a/core/java/android/os/ITradeInMode.aidl b/core/java/android/os/ITradeInMode.aidl
index f15954d14d0e..d05f52cf6a90 100644
--- a/core/java/android/os/ITradeInMode.aidl
+++ b/core/java/android/os/ITradeInMode.aidl
@@ -59,4 +59,37 @@ interface ITradeInMode {
* ENTER_TRADE_IN_MODE permission is required.
*/
boolean enterEvaluationMode();
+
+ /**
+ * Schedules a wipe to trigger SUW for trade-in mode testing. A reboot is
+ * required. After this, startTesting() can be called.
+ *
+ * ENTER_TRADE_IN_MODE permission is required and ro.debuggable must be 1.
+ */
+ void scheduleWipeForTesting();
+
+ /**
+ * Enables testing. This only takes effect after the next reboot, and is
+ * only allowed in ro.debuggable builds. On the following boot, normal
+ * adbd will be disabled and trade-in mode adbd will be enabled instead.
+ *
+ * ENTER_TRADE_IN_MODE permission is required and ro.debuggable must be 1.
+ */
+ void startTesting();
+
+ /**
+ * Disables testing. This disables trade-in mode and removes any scheduled
+ * trade-in mode wipe.
+ *
+ * ENTER_TRADE_IN_MODE permission is required, ro.debuggable must be 1, and
+ * startTesting() must have been called.
+ */
+ void stopTesting();
+
+ /**
+ * Returns whether the device is testing trade-in mode.
+ *
+ * ENTER_TRADE_IN_MODE permission is required and ro.debuggable must be 1.
+ */
+ boolean isTesting();
}
diff --git a/core/java/android/os/IUserManager.aidl b/core/java/android/os/IUserManager.aidl
index 18f9b2b9d74f..59bd9822c157 100644
--- a/core/java/android/os/IUserManager.aidl
+++ b/core/java/android/os/IUserManager.aidl
@@ -83,6 +83,8 @@ interface IUserManager {
long getUserCreationTime(int userId);
int getUserSwitchability(int userId);
boolean isUserSwitcherEnabled(boolean showEvenIfNotActionable, int mUserId);
+ @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MANAGE_USERS)")
+ int getUserLogoutability(int userId);
boolean isRestricted(int userId);
boolean canHaveRestrictedProfile(int userId);
boolean canAddPrivateProfile(int userId);
diff --git a/core/java/android/os/Looper.java b/core/java/android/os/Looper.java
index 2fe4871e08dd..d16e4473d55f 100644
--- a/core/java/android/os/Looper.java
+++ b/core/java/android/os/Looper.java
@@ -199,7 +199,12 @@ public final class Looper {
return false;
}
- // This must be in a local variable, in case a UI event sets the logger
+ PerfettoTrace.begin(PerfettoTrace.MQ_CATEGORY, "message_queue_receive")
+ .addArg("sending_thread", msg.mSendingThreadName)
+ .addTerminatingFlow(msg.mEventId.get())
+ .emit();
+
+ // This must be in a local variabe, in case a UI event sets the logger
final Printer logging = me.mLogging;
if (logging != null) {
logging.println(">>>>> Dispatching to " + msg.target + " "
@@ -289,6 +294,7 @@ public final class Looper {
+ msg.callback + " what=" + msg.what);
}
+ PerfettoTrace.end(PerfettoTrace.MQ_CATEGORY).emit();
msg.recycleUnchecked();
return true;
diff --git a/core/java/android/os/Message.java b/core/java/android/os/Message.java
index 702fdc2bbaa6..b22d1774d967 100644
--- a/core/java/android/os/Message.java
+++ b/core/java/android/os/Message.java
@@ -23,6 +23,8 @@ import android.util.proto.ProtoOutputStream;
import com.android.internal.annotations.VisibleForTesting;
+import java.util.concurrent.atomic.AtomicInteger;
+
/**
*
* Defines a message containing a description and arbitrary data object that can be
@@ -37,6 +39,13 @@ import com.android.internal.annotations.VisibleForTesting;
@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class Message implements Parcelable {
/**
+ * For tracing
+ *
+ * @hide Only for use within the system server.
+ */
+ public final AtomicInteger mEventId = new AtomicInteger();
+
+ /**
* User-defined message code so that the recipient can identify
* what this message is about. Each {@link Handler} has its own name-space
* for message codes, so you do not need to worry about yours conflicting
@@ -101,6 +110,13 @@ public final class Message implements Parcelable {
*/
public int workSourceUid = UID_NONE;
+ /**
+ * Sending thread
+ *
+ * @hide
+ */
+ public String mSendingThreadName;
+
/** If set message is in use.
* This flag is set when the message is enqueued and remains set while it
* is delivered and afterwards when it is recycled. The flag is only cleared
diff --git a/core/java/android/os/PerfettoTrace.java b/core/java/android/os/PerfettoTrace.java
index 68f1570154ff..741d542ecb3b 100644
--- a/core/java/android/os/PerfettoTrace.java
+++ b/core/java/android/os/PerfettoTrace.java
@@ -16,6 +16,8 @@
package android.os;
+import com.android.internal.ravenwood.RavenwoodEnvironment;
+
import dalvik.annotation.optimization.CriticalNative;
import dalvik.annotation.optimization.FastNative;
@@ -32,6 +34,7 @@ import java.util.concurrent.atomic.AtomicInteger;
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class PerfettoTrace {
private static final String TAG = "PerfettoTrace";
@@ -48,11 +51,14 @@ public final class PerfettoTrace {
*/
private static final AtomicInteger sFlowEventId = new AtomicInteger();
+ public static final PerfettoTrace.Category MQ_CATEGORY = new PerfettoTrace.Category("mq");
+
/**
* Perfetto category a trace event belongs to.
* Registering a category is not sufficient to capture events within the category, it must
* also be enabled in the trace config.
*/
+ @android.ravenwood.annotation.RavenwoodKeepWholeClass
public static final class Category implements PerfettoTrackEventExtra.PerfettoPointer {
private static final NativeAllocationRegistry sRegistry =
NativeAllocationRegistry.createMalloced(
@@ -97,12 +103,16 @@ public final class PerfettoTrace {
mSeverity = severity;
mPtr = native_init(name, tag, severity);
mExtraPtr = native_get_extra_ptr(mPtr);
- sRegistry.registerNativeAllocation(this, mPtr);
+ if (!RavenwoodEnvironment.getInstance().isRunningOnRavenwood()) {
+ sRegistry.registerNativeAllocation(this, mPtr);
+ }
}
@FastNative
+ @android.ravenwood.annotation.RavenwoodReplace
private static native long native_init(String name, String tag, String severity);
@CriticalNative
+ @android.ravenwood.annotation.RavenwoodReplace
private static native long native_delete();
@CriticalNative
private static native void native_register(long ptr);
@@ -111,8 +121,24 @@ public final class PerfettoTrace {
@CriticalNative
private static native boolean native_is_enabled(long ptr);
@CriticalNative
+ @android.ravenwood.annotation.RavenwoodReplace
private static native long native_get_extra_ptr(long ptr);
+ private static long native_init$ravenwood(String name, String tag, String severity) {
+ // Tracing currently completely disabled under Ravenwood
+ return 0;
+ }
+
+ private static long native_delete$ravenwood() {
+ // Tracing currently completely disabled under Ravenwood
+ return 0;
+ }
+
+ private static long native_get_extra_ptr$ravenwood(long ptr) {
+ // Tracing currently completely disabled under Ravenwood
+ return 0;
+ }
+
/**
* Register the category.
*/
@@ -134,10 +160,16 @@ public final class PerfettoTrace {
/**
* Whether the category is enabled or not.
*/
+ @android.ravenwood.annotation.RavenwoodReplace
public boolean isEnabled() {
return IS_FLAG_ENABLED && native_is_enabled(mPtr);
}
+ public boolean isEnabled$ravenwood() {
+ // Tracing currently completely disabled under Ravenwood
+ return false;
+ }
+
/**
* Whether the category is registered or not.
*/
@@ -340,4 +372,11 @@ public final class PerfettoTrace {
public static void register(boolean isBackendInProcess) {
native_register(isBackendInProcess);
}
+
+ /**
+ * Registers categories with Perfetto.
+ */
+ public static void registerCategories() {
+ MQ_CATEGORY.register();
+ }
}
diff --git a/core/java/android/os/PerfettoTrackEventExtra.java b/core/java/android/os/PerfettoTrackEventExtra.java
index e034fb3726e3..adb98aa25f8f 100644
--- a/core/java/android/os/PerfettoTrackEventExtra.java
+++ b/core/java/android/os/PerfettoTrackEventExtra.java
@@ -16,6 +16,8 @@
package android.os;
+import com.android.internal.ravenwood.RavenwoodEnvironment;
+
import dalvik.annotation.optimization.CriticalNative;
import dalvik.annotation.optimization.FastNative;
@@ -29,6 +31,7 @@ import java.util.function.Supplier;
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class PerfettoTrackEventExtra {
private static final int DEFAULT_EXTRA_CACHE_SIZE = 5;
private static final Builder NO_OP_BUILDER = new NoOpBuilder();
@@ -40,6 +43,12 @@ public final class PerfettoTrackEventExtra {
}
};
private static final AtomicLong sNamedTrackId = new AtomicLong();
+ private static final Supplier<Flow> sFlowSupplier = Flow::new;
+ private static final Supplier<BuilderImpl> sBuilderSupplier = BuilderImpl::new;
+ private static final Supplier<FieldInt64> sFieldInt64Supplier = FieldInt64::new;
+ private static final Supplier<FieldDouble> sFieldDoubleSupplier = FieldDouble::new;
+ private static final Supplier<FieldString> sFieldStringSupplier = FieldString::new;
+ private static final Supplier<FieldNested> sFieldNestedSupplier = FieldNested::new;
private CounterInt64 mCounterInt64;
private CounterDouble mCounterDouble;
@@ -136,13 +145,8 @@ public final class PerfettoTrackEventExtra {
/**
* Sets the event name for the track event.
- *
- * @param eventName can contain a format string specifier, in which case, the
- * {@code args} are the format arguments. If no {@code args} are provided,
- * the {@code eventName} should be the string itself.
- * @param args format arguments if {@code eventName} is specified.
*/
- Builder setEventName(String eventName, Object... args);
+ Builder setEventName(String eventName);
/**
* Adds a debug arg with key {@code name} and value {@code val}.
@@ -161,13 +165,8 @@ public final class PerfettoTrackEventExtra {
/**
* Adds a debug arg with key {@code name} and value {@code val}.
- *
- * @param val can contain a format string specifier, in which case, the
- * {@code args} are the format arguments. If no {@code args} are provided,
- * the {@code val} should be the string itself.
- * @param args format arguments if {@code val} is specified.
*/
- Builder addArg(String name, String val, Object... args);
+ Builder addArg(String name, String val);
/**
* Adds a flow with {@code id}.
@@ -182,68 +181,38 @@ public final class PerfettoTrackEventExtra {
/**
* Adds the events to a named track instead of the thread track where the
* event occurred.
- *
- * @param name can contain a format string specifier, in which case, the
- * {@code args} are the format arguments. If no {@code args} are provided,
- * the {@code name} should be the string itself.
- * @param args format arguments if {@code name} is specified.
*/
- Builder usingNamedTrack(long parentUuid, String name, Object... args);
+ Builder usingNamedTrack(long parentUuid, String name);
/**
* Adds the events to a process scoped named track instead of the thread track where the
* event occurred.
- *
- * @param name can contain a format string specifier, in which case, the
- * {@code args} are the format arguments. If no {@code args} are provided,
- * the {@code name} should be the string itself.
- * @param args format arguments if {@code name} is specified.
*/
- Builder usingProcessNamedTrack(String name, Object... args);
+ Builder usingProcessNamedTrack(String name);
/**
* Adds the events to a thread scoped named track instead of the thread track where the
* event occurred.
- *
- * @param name can contain a format string specifier, in which case, the
- * {@code args} are the format arguments. If no {@code args} are provided,
- * the {@code name} should be the string itself.
- * @param args format arguments if {@code name} is specified.
*/
- Builder usingThreadNamedTrack(long tid, String name, Object... args);
+ Builder usingThreadNamedTrack(long tid, String name);
/**
* Adds the events to a counter track instead. This is required for
* setting counter values.
- *
- * @param name can contain a format string specifier, in which case, the
- * {@code args} are the format arguments. If no {@code args} are provided,
- * the {@code name} should be the string itself.
- * @param args format arguments if {@code name} is specified.
*/
- Builder usingCounterTrack(long parentUuid, String name, Object... args);
+ Builder usingCounterTrack(long parentUuid, String name);
/**
* Adds the events to a process scoped counter track instead. This is required for
* setting counter values.
- *
- * @param name can contain a format string specifier, in which case, the
- * {@code args} are the format arguments. If no {@code args} are provided,
- * the {@code name} should be the string itself.
- * @param args format arguments if {@code eventName} is specified.
*/
- Builder usingProcessCounterTrack(String name, Object... args);
+ Builder usingProcessCounterTrack(String name);
/**
* Adds the events to a thread scoped counter track instead. This is required for
* setting counter values.
- *
- * @param name can contain a format string specifier, in which case, the
- * {@code args} are the format arguments. If no {@code args} are provided,
- * the {@code name} should be the string itself.
- * @param args format arguments if {@code name} is specified.
*/
- Builder usingThreadCounterTrack(long tid, String name, Object... args);
+ Builder usingThreadCounterTrack(long tid, String name);
/**
* Sets a long counter value on the event.
@@ -269,13 +238,8 @@ public final class PerfettoTrackEventExtra {
/**
* Adds a proto field with field id {@code id} and value {@code val}.
- *
- * @param val can contain a format string specifier, in which case, the
- * {@code args} are the format arguments. If no {@code args} are provided,
- * the {@code val} should be the string itself.
- * @param args format arguments if {@code val} is specified.
*/
- Builder addField(long id, String val, Object... args);
+ Builder addField(long id, String val);
/**
* Begins a proto field with field
@@ -305,6 +269,7 @@ public final class PerfettoTrackEventExtra {
Builder endNested();
}
+ @android.ravenwood.annotation.RavenwoodKeepWholeClass
public static final class NoOpBuilder implements Builder {
@Override
public void emit() {}
@@ -313,7 +278,7 @@ public final class PerfettoTrackEventExtra {
return this;
}
@Override
- public Builder setEventName(String eventName, Object... args) {
+ public Builder setEventName(String eventName) {
return this;
}
@Override
@@ -329,7 +294,7 @@ public final class PerfettoTrackEventExtra {
return this;
}
@Override
- public Builder addArg(String name, String val, Object... args) {
+ public Builder addArg(String name, String val) {
return this;
}
@Override
@@ -341,27 +306,27 @@ public final class PerfettoTrackEventExtra {
return this;
}
@Override
- public Builder usingNamedTrack(long parentUuid, String name, Object... args) {
+ public Builder usingNamedTrack(long parentUuid, String name) {
return this;
}
@Override
- public Builder usingProcessNamedTrack(String name, Object... args) {
+ public Builder usingProcessNamedTrack(String name) {
return this;
}
@Override
- public Builder usingThreadNamedTrack(long tid, String name, Object... args) {
+ public Builder usingThreadNamedTrack(long tid, String name) {
return this;
}
@Override
- public Builder usingCounterTrack(long parentUuid, String name, Object... args) {
+ public Builder usingCounterTrack(long parentUuid, String name) {
return this;
}
@Override
- public Builder usingProcessCounterTrack(String name, Object... args) {
+ public Builder usingProcessCounterTrack(String name) {
return this;
}
@Override
- public Builder usingThreadCounterTrack(long tid, String name, Object... args) {
+ public Builder usingThreadCounterTrack(long tid, String name) {
return this;
}
@Override
@@ -381,7 +346,7 @@ public final class PerfettoTrackEventExtra {
return this;
}
@Override
- public Builder addField(long id, String val, Object... args) {
+ public Builder addField(long id, String val) {
return this;
}
@Override
@@ -439,7 +404,6 @@ public final class PerfettoTrackEventExtra {
private BuilderImpl() {
mExtra = sTrackEventExtra.get();
-
mNamedTrackCache = mExtra.mNamedTrackCache;
mCounterTrackCache = mExtra.mCounterTrackCache;
mArgInt64Cache = mExtra.mArgInt64Cache;
@@ -478,6 +442,7 @@ public final class PerfettoTrackEventExtra {
mFieldStringCache.reset();
mFieldNestedCache.reset();
mBuilderCache.reset();
+ mFlowCache.reset();
mExtra.reset();
// Reset after on init in case the thread created builders without calling emit
@@ -485,8 +450,8 @@ public final class PerfettoTrackEventExtra {
}
@Override
- public Builder setEventName(String eventName, Object... args) {
- mEventName = toString(eventName, args);
+ public Builder setEventName(String eventName) {
+ mEventName = eventName;
return this;
}
@@ -530,14 +495,14 @@ public final class PerfettoTrackEventExtra {
}
@Override
- public Builder addArg(String name, String val, Object... args) {
+ public Builder addArg(String name, String val) {
checkParent();
ArgString arg = mArgStringCache.get(name.hashCode());
if (arg == null || !arg.getName().equals(name)) {
arg = new ArgString(name);
mArgStringCache.put(name.hashCode(), arg);
}
- arg.setValue(toString(val, args));
+ arg.setValue(val);
mExtra.addPerfettoPointer(arg);
return this;
}
@@ -545,7 +510,7 @@ public final class PerfettoTrackEventExtra {
@Override
public Builder addFlow(int id) {
checkParent();
- Flow flow = mFlowCache.get(Flow::new);
+ Flow flow = mFlowCache.get(sFlowSupplier);
flow.setProcessFlow(id);
mExtra.addPerfettoPointer(flow);
return this;
@@ -554,16 +519,15 @@ public final class PerfettoTrackEventExtra {
@Override
public Builder addTerminatingFlow(int id) {
checkParent();
- Flow flow = mFlowCache.get(Flow::new);
+ Flow flow = mFlowCache.get(sFlowSupplier);
flow.setProcessTerminatingFlow(id);
mExtra.addPerfettoPointer(flow);
return this;
}
@Override
- public Builder usingNamedTrack(long parentUuid, String name, Object... args) {
+ public Builder usingNamedTrack(long parentUuid, String name) {
checkParent();
- name = toString(name, args);
NamedTrack track = mNamedTrackCache.get(name.hashCode());
if (track == null || !track.getName().equals(name)) {
@@ -575,19 +539,18 @@ public final class PerfettoTrackEventExtra {
}
@Override
- public Builder usingProcessNamedTrack(String name, Object... args) {
- return usingNamedTrack(PerfettoTrace.getProcessTrackUuid(), name, args);
+ public Builder usingProcessNamedTrack(String name) {
+ return usingNamedTrack(PerfettoTrace.getProcessTrackUuid(), name);
}
@Override
- public Builder usingThreadNamedTrack(long tid, String name, Object... args) {
- return usingNamedTrack(PerfettoTrace.getThreadTrackUuid(tid), name, args);
+ public Builder usingThreadNamedTrack(long tid, String name) {
+ return usingNamedTrack(PerfettoTrace.getThreadTrackUuid(tid), name);
}
@Override
- public Builder usingCounterTrack(long parentUuid, String name, Object... args) {
+ public Builder usingCounterTrack(long parentUuid, String name) {
checkParent();
- name = toString(name, args);
CounterTrack track = mCounterTrackCache.get(name.hashCode());
if (track == null || !track.getName().equals(name)) {
@@ -599,13 +562,13 @@ public final class PerfettoTrackEventExtra {
}
@Override
- public Builder usingProcessCounterTrack(String name, Object... args) {
- return usingCounterTrack(PerfettoTrace.getProcessTrackUuid(), name, args);
+ public Builder usingProcessCounterTrack(String name) {
+ return usingCounterTrack(PerfettoTrace.getProcessTrackUuid(), name);
}
@Override
- public Builder usingThreadCounterTrack(long tid, String name, Object... args) {
- return usingCounterTrack(PerfettoTrace.getThreadTrackUuid(tid), name, args);
+ public Builder usingThreadCounterTrack(long tid, String name) {
+ return usingCounterTrack(PerfettoTrace.getThreadTrackUuid(tid), name);
}
@Override
@@ -627,7 +590,7 @@ public final class PerfettoTrackEventExtra {
@Override
public Builder addField(long id, long val) {
checkContainer();
- FieldInt64 field = mFieldInt64Cache.get(FieldInt64::new);
+ FieldInt64 field = mFieldInt64Cache.get(sFieldInt64Supplier);
field.setValue(id, val);
mCurrentContainer.addField(field);
return this;
@@ -636,17 +599,17 @@ public final class PerfettoTrackEventExtra {
@Override
public Builder addField(long id, double val) {
checkContainer();
- FieldDouble field = mFieldDoubleCache.get(FieldDouble::new);
+ FieldDouble field = mFieldDoubleCache.get(sFieldDoubleSupplier);
field.setValue(id, val);
mCurrentContainer.addField(field);
return this;
}
@Override
- public Builder addField(long id, String val, Object... args) {
+ public Builder addField(long id, String val) {
checkContainer();
- FieldString field = mFieldStringCache.get(FieldString::new);
- field.setValue(id, toString(val, args));
+ FieldString field = mFieldStringCache.get(sFieldStringSupplier);
+ field.setValue(id, val);
mCurrentContainer.addField(field);
return this;
}
@@ -656,7 +619,7 @@ public final class PerfettoTrackEventExtra {
checkParent();
mProto.clearFields();
mExtra.addPerfettoPointer(mProto);
- return mBuilderCache.get(BuilderImpl::new).initInternal(this, mProto);
+ return mBuilderCache.get(sBuilderSupplier).initInternal(this, mProto);
}
@Override
@@ -670,10 +633,10 @@ public final class PerfettoTrackEventExtra {
@Override
public Builder beginNested(long id) {
checkContainer();
- FieldNested field = mFieldNestedCache.get(FieldNested::new);
+ FieldNested field = mFieldNestedCache.get(sFieldNestedSupplier);
field.setId(id);
mCurrentContainer.addField(field);
- return mBuilderCache.get(BuilderImpl::new).initInternal(this, field);
+ return mBuilderCache.get(sBuilderSupplier).initInternal(this, field);
}
@Override
@@ -684,10 +647,6 @@ public final class PerfettoTrackEventExtra {
return mParent;
}
- private static String toString(String val, Object... args) {
- return args == null || args.length == 0 ? val : String.format(val, args);
- }
-
private Builder initInternal(Builder parent, FieldContainer container) {
mParent = parent;
mCurrentContainer = container;
@@ -723,7 +682,7 @@ public final class PerfettoTrackEventExtra {
* Start a {@link Builder} to build a {@link PerfettoTrackEventExtra}.
*/
public static Builder builder() {
- return sTrackEventExtra.get().mBuilderCache.get(BuilderImpl::new).initInternal(null, null);
+ return sTrackEventExtra.get().mBuilderCache.get(sBuilderSupplier).initInternal(null, null);
}
/**
@@ -759,7 +718,9 @@ public final class PerfettoTrackEventExtra {
private PerfettoTrackEventExtra() {
mPtr = native_init();
- sRegistry.registerNativeAllocation(this, mPtr);
+ if (!RavenwoodEnvironment.getInstance().isRunningOnRavenwood()) {
+ sRegistry.registerNativeAllocation(this, mPtr);
+ }
}
/**
@@ -1342,8 +1303,10 @@ public final class PerfettoTrackEventExtra {
}
@CriticalNative
+ @android.ravenwood.annotation.RavenwoodReplace
private static native long native_init();
@CriticalNative
+ @android.ravenwood.annotation.RavenwoodReplace
private static native long native_delete();
@CriticalNative
private static native void native_add_arg(long ptr, long extraPtr);
@@ -1351,4 +1314,14 @@ public final class PerfettoTrackEventExtra {
private static native void native_clear_args(long ptr);
@FastNative
private static native void native_emit(int type, long tag, String name, long ptr);
+
+ private static long native_init$ravenwood() {
+ // Tracing currently completely disabled under Ravenwood
+ return 0;
+ }
+
+ private static long native_delete$ravenwood() {
+ // Tracing currently completely disabled under Ravenwood
+ return 0;
+ }
}
diff --git a/core/java/android/os/PowerManager.java b/core/java/android/os/PowerManager.java
index e769abec7dd9..5129af6be442 100644
--- a/core/java/android/os/PowerManager.java
+++ b/core/java/android/os/PowerManager.java
@@ -4213,6 +4213,17 @@ public final class PowerManager {
else mFlags &= ~UNIMPORTANT_FOR_LOGGING;
}
+ /** @hide */
+ public void updateUids(int[] uids) {
+ synchronized (mToken) {
+ try {
+ mService.updateWakeLockUids(mToken, uids);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+ }
+
@Override
public String toString() {
synchronized (mToken) {
diff --git a/core/java/android/os/SharedMemory.java b/core/java/android/os/SharedMemory.java
index 46ae9d8682ee..320641ded0f9 100644
--- a/core/java/android/os/SharedMemory.java
+++ b/core/java/android/os/SharedMemory.java
@@ -25,8 +25,6 @@ import android.system.OsConstants;
import dalvik.system.VMRuntime;
-import libcore.io.IoUtils;
-
import java.io.Closeable;
import java.io.FileDescriptor;
import java.io.IOException;
@@ -65,7 +63,7 @@ public final class SharedMemory implements Parcelable, Closeable {
mMemoryRegistration = new MemoryRegistration(mSize);
mCleaner = Cleaner.create(mFileDescriptor,
- new Closer(mFileDescriptor, mMemoryRegistration));
+ new Closer(mFileDescriptor.getInt$(), mMemoryRegistration));
}
/**
@@ -278,6 +276,7 @@ public final class SharedMemory implements Parcelable, Closeable {
*/
@Override
public void close() {
+ mFileDescriptor.setInt$(-1);
if (mCleaner != null) {
mCleaner.clean();
mCleaner = null;
@@ -327,20 +326,21 @@ public final class SharedMemory implements Parcelable, Closeable {
* Cleaner that closes the FD
*/
private static final class Closer implements Runnable {
- private FileDescriptor mFd;
+ private int mFd;
private MemoryRegistration mMemoryReference;
- private Closer(FileDescriptor fd, MemoryRegistration memoryReference) {
+ private Closer(int fd, MemoryRegistration memoryReference) {
mFd = fd;
- IoUtils.setFdOwner(mFd, this);
mMemoryReference = memoryReference;
}
@Override
public void run() {
- IoUtils.closeQuietly(mFd);
- mFd = null;
-
+ try {
+ FileDescriptor fd = new FileDescriptor();
+ fd.setInt$(mFd);
+ Os.close(fd);
+ } catch (ErrnoException e) { /* swallow error */ }
mMemoryReference.release();
mMemoryReference = null;
}
diff --git a/core/java/android/os/TestLooperManager.java b/core/java/android/os/TestLooperManager.java
index ddfa3799706e..2d9d025b8d80 100644
--- a/core/java/android/os/TestLooperManager.java
+++ b/core/java/android/os/TestLooperManager.java
@@ -18,6 +18,7 @@ import android.annotation.FlaggedApi;
import android.annotation.Nullable;
import android.util.ArraySet;
+import java.util.concurrent.CountDownLatch;
import java.util.concurrent.LinkedBlockingQueue;
/**
@@ -38,10 +39,13 @@ public class TestLooperManager {
private final MessageQueue mQueue;
private final Looper mLooper;
private final LinkedBlockingQueue<MessageExecution> mExecuteQueue = new LinkedBlockingQueue<>();
+ private final boolean mLooperIsMyLooper;
+
+ // When this latch is zero, it's guaranteed that the LooperHolder Message
+ // is not in the underlying queue.
+ private final CountDownLatch mLooperHolderLatch = new CountDownLatch(1);
private boolean mReleased;
- private boolean mLooperBlocked;
- private final boolean mLooperIsMyLooper;
/**
* @hide
@@ -59,6 +63,8 @@ public class TestLooperManager {
if (!mLooperIsMyLooper) {
// Post a message that will keep the looper blocked as long as we are dispatching.
new Handler(looper).post(new LooperHolder());
+ } else {
+ mLooperHolderLatch.countDown();
}
}
@@ -168,6 +174,7 @@ public class TestLooperManager {
try {
execution.wait();
} catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
}
if (execution.response != null) {
throw new RuntimeException(execution.response);
@@ -222,23 +229,17 @@ public class TestLooperManager {
* is not in the underlying queue.
*/
private void waitForLooperHolder() {
- while (!mLooperIsMyLooper && !mLooperBlocked) {
- synchronized (this) {
- try {
- wait();
- } catch (InterruptedException e) {
- }
- }
+ try {
+ mLooperHolderLatch.await();
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
}
}
private class LooperHolder implements Runnable {
@Override
public void run() {
- synchronized (TestLooperManager.this) {
- mLooperBlocked = true;
- TestLooperManager.this.notify();
- }
+ mLooperHolderLatch.countDown();
while (!mReleased) {
try {
final MessageExecution take = mExecuteQueue.take();
@@ -246,11 +247,9 @@ public class TestLooperManager {
processMessage(take);
}
} catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
}
}
- synchronized (TestLooperManager.this) {
- mLooperBlocked = false;
- }
}
private void processMessage(MessageExecution mex) {
diff --git a/core/java/android/os/Trace.java b/core/java/android/os/Trace.java
index 09e6a45dc294..bf4c4d16fe19 100644
--- a/core/java/android/os/Trace.java
+++ b/core/java/android/os/Trace.java
@@ -544,5 +544,6 @@ public final class Trace {
*/
public static void registerWithPerfetto() {
PerfettoTrace.register(false /* isBackendInProcess */);
+ PerfettoTrace.registerCategories();
}
}
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index aaf6489d18ca..c00f31db1a38 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -2261,6 +2261,45 @@ public class UserManager {
public @interface UserSwitchabilityResult {}
/**
+ * Indicates that user can logout.
+ * @hide
+ */
+ public static final int LOGOUTABILITY_STATUS_OK = 0;
+
+ /**
+ * Indicates that user cannot logout because it is the system user.
+ * @hide
+ */
+ public static final int LOGOUTABILITY_STATUS_CANNOT_LOGOUT_SYSTEM_USER = 1;
+
+ /**
+ * Indicates that user cannot logout because there is no suitable user to logout to. This is
+ * generally applicable to Headless System User Mode devices that do not have an interactive
+ * system user.
+ * @hide
+ */
+ public static final int LOGOUTABILITY_STATUS_NO_SUITABLE_USER_TO_LOGOUT_TO = 2;
+
+ /**
+ * Indicates that user cannot logout because user switch cannot happen.
+ * @hide
+ */
+ public static final int LOGOUTABILITY_STATUS_CANNOT_SWITCH = 3;
+
+ /**
+ * Result returned in {@link #getUserLogoutability()} indicating user logoutability.
+ * @hide
+ */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(flag = false, prefix = { "LOGOUTABILITY_STATUS_" }, value = {
+ LOGOUTABILITY_STATUS_OK,
+ LOGOUTABILITY_STATUS_CANNOT_LOGOUT_SYSTEM_USER,
+ LOGOUTABILITY_STATUS_NO_SUITABLE_USER_TO_LOGOUT_TO,
+ LOGOUTABILITY_STATUS_CANNOT_SWITCH
+ })
+ public @interface UserLogoutability {}
+
+ /**
* A response code from {@link #removeUserWhenPossible(UserHandle, boolean)} indicating that
* the specified user has been successfully removed.
*
@@ -2737,6 +2776,35 @@ public class UserManager {
}
/**
+ * Returns whether logging out is currently allowed for the context user.
+ *
+ * <p>Logging out is not allowed in the following cases:
+ * <ol>
+ * <li>the user is system user
+ * <li>there is no suitable user to logout to (if no interactive system user)
+ * <li>the user is in a phone call
+ * <li>{@link #DISALLOW_USER_SWITCH} is set
+ * <li>system user hasn't been unlocked yet
+ * </ol>
+ *
+ * @return A {@link UserLogoutability} flag indicating if the user can logout,
+ * one of {@link #LOGOUTABILITY_STATUS_OK},
+ * {@link #LOGOUTABILITY_STATUS_CANNOT_LOGOUT_SYSTEM_USER},
+ * {@link #LOGOUTABILITY_STATUS_NO_SUITABLE_USER_TO_LOGOUT_TO},
+ * {@link #LOGOUTABILITY_STATUS_CANNOT_SWITCH}.
+ * @hide
+ */
+ @UserHandleAware
+ @RequiresPermission(Manifest.permission.MANAGE_USERS)
+ public @UserLogoutability int getUserLogoutability() {
+ try {
+ return mService.getUserLogoutability(mUserId);
+ } catch (RemoteException re) {
+ throw re.rethrowFromSystemServer();
+ }
+ }
+
+ /**
* Returns the userId for the context user.
*
* @return the userId of the context user.
@@ -5326,7 +5394,9 @@ public class UserManager {
}
/**
- * Returns list of the profiles of userId including userId itself.
+ * Returns a list of the users that are associated with userId, including userId itself. This
+ * includes the user, its profiles, its parent, and its parent's other profiles, as applicable.
+ *
* Note that this returns both enabled and not enabled profiles. See
* {@link #getEnabledProfiles(int)} if you need only the enabled ones.
* <p>Note that this includes all profile types (not including Restricted profiles).
@@ -5334,7 +5404,7 @@ public class UserManager {
* <p>Requires {@link android.Manifest.permission#MANAGE_USERS} or
* {@link android.Manifest.permission#CREATE_USERS} or
* {@link android.Manifest.permission#QUERY_USERS} if userId is not the calling user.
- * @param userId profiles of this user will be returned.
+ * @param userId profiles associated with this user (including itself) will be returned.
* @return the list of profiles.
* @hide
*/
@@ -5358,12 +5428,13 @@ public class UserManager {
}
/**
- * Returns list of the profiles of the given user, including userId itself, as well as the
- * communal profile, if there is one.
+ * Returns a list of the users that are associated with userId, including userId itself,
+ * as well as the communal profile, if there is one.
*
* <p>Note that this returns both enabled and not enabled profiles.
* <p>Note that this includes all profile types (not including Restricted profiles).
*
+ * @see #getProfiles(int)
* @hide
*/
@FlaggedApi(android.multiuser.Flags.FLAG_SUPPORT_COMMUNAL_PROFILE)
@@ -5419,7 +5490,10 @@ public class UserManager {
}
/**
- * Returns list of the profiles of userId including userId itself.
+ * Returns a list of the enabled users that are associated with userId, including userId itself.
+ * This includes the user, its profiles, its parent, and its parent's other profiles, as
+ * applicable.
+ *
* Note that this returns only {@link UserInfo#isEnabled() enabled} profiles.
* <p>Note that this includes all profile types (not including Restricted profiles).
*
@@ -5447,8 +5521,10 @@ public class UserManager {
}
/**
- * Returns a list of UserHandles for profiles associated with the context user, including the
- * user itself.
+ * Returns a list of the users that are associated with the context user, including the user
+ * itself. This includes the user, its profiles, its parent, and its parent's other profiles,
+ * as applicable.
+ *
* <p>Note that this includes all profile types (not including Restricted profiles).
*
* @return A non-empty list of UserHandles associated with the context user.
@@ -5465,8 +5541,10 @@ public class UserManager {
}
/**
- * Returns a list of ids for enabled profiles associated with the context user including the
- * user itself.
+ * Returns a list of the enabled users that are associated with the context user, including the
+ * user itself. This includes the user, its profiles, its parent, and its parent's other
+ * profiles, as applicable.
+ *
* <p>Note that this includes all profile types (not including Restricted profiles).
*
* @return A non-empty list of UserHandles associated with the context user.
@@ -5483,8 +5561,10 @@ public class UserManager {
}
/**
- * Returns a list of ids for all profiles associated with the context user including the user
- * itself.
+ * Returns a list of all users that are associated with the context user, including the user
+ * itself. This includes the user, its profiles, its parent, and its parent's other profiles,
+ * as applicable.
+ *
* <p>Note that this includes all profile types (not including Restricted profiles).
*
* @return A non-empty list of UserHandles associated with the context user.
@@ -5501,8 +5581,10 @@ public class UserManager {
}
/**
- * Returns a list of ids for profiles associated with the context user including the user
- * itself.
+ * Returns a list of the users that are associated with the context user, including the user
+ * itself. This includes the user, its profiles, its parent, and its parent's other profiles, as
+ * applicable.
+ *
* <p>Note that this includes all profile types (not including Restricted profiles).
*
* @param enabledOnly whether to return only {@link UserInfo#isEnabled() enabled} profiles
@@ -5528,8 +5610,10 @@ public class UserManager {
}
/**
- * Returns a list of ids for profiles associated with the specified user including the user
- * itself.
+ * Returns a list of the users that are associated with the specified user, including the user
+ * itself. This includes the user, its profiles, its parent, and its parent's other profiles,
+ * as applicable.
+ *
* <p>Note that this includes all profile types (not including Restricted profiles).
*
* @param userId id of the user to return profiles for
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 65c857a51b29..3cd7a00591ca 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -10981,7 +10981,10 @@ public final class Settings {
/**
* Indicates whether "seen" notifications should be suppressed from the lockscreen.
* <p>
- * Type: int (0 for unset, 1 for true, 2 for false)
+ * Type: int (0 for unset_off, 1 for true, 2 for false)
+ * 0 is the default value for phones, which is equivalent to off in effect, before
+ * the notification minimalism feature, this setting is default hidden to phones, we use
+ * 0 instead of 2 to mark that we need to hide this setting toggle in the Settings app.
*
* @hide
*/
diff --git a/core/java/android/security/responsible_apis_flags.aconfig b/core/java/android/security/responsible_apis_flags.aconfig
index 8add9f7c63cc..95985682dd45 100644
--- a/core/java/android/security/responsible_apis_flags.aconfig
+++ b/core/java/android/security/responsible_apis_flags.aconfig
@@ -146,3 +146,10 @@ flag {
description: "Android Advanced Protection Mode Feature: Disable Cellular 2G"
bug: "377748286"
}
+
+flag {
+ name: "aapm_feature_usb_data_protection"
+ namespace: "preload_safety"
+ description: "Android Advanced Protection Mode Feature: Usb Data Protection"
+ bug: "389958463"
+}
diff --git a/core/java/android/service/chooser/flags.aconfig b/core/java/android/service/chooser/flags.aconfig
index 2b75493a369e..ae0b56e6f009 100644
--- a/core/java/android/service/chooser/flags.aconfig
+++ b/core/java/android/service/chooser/flags.aconfig
@@ -2,6 +2,16 @@ package: "android.service.chooser"
container: "system"
flag {
+ name: "announce_shortcuts_and_suggested_apps_legacy"
+ namespace: "intentresolver"
+ description: "Enable talkback announcement for the app shortcuts and the suggested apps target groups in the legacy sharesheet codebase."
+ bug: "380211084"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
+flag {
name: "chooser_album_text"
is_exported: true
namespace: "intentresolver"
diff --git a/core/java/android/service/dreams/DreamManagerInternal.java b/core/java/android/service/dreams/DreamManagerInternal.java
index e9bb28c252e0..ad022c57345d 100644
--- a/core/java/android/service/dreams/DreamManagerInternal.java
+++ b/core/java/android/service/dreams/DreamManagerInternal.java
@@ -60,6 +60,12 @@ public abstract class DreamManagerInternal {
public abstract boolean canStartDreaming(boolean isScreenOn);
/**
+ * Whether or not the device is currently in the user's "when to dream" state, ex.
+ * docked & charging.
+ */
+ public abstract boolean dreamConditionActive();
+
+ /**
* Register a {@link DreamManagerStateListener}, which will be called when there are changes to
* dream state.
*
diff --git a/core/java/android/view/DisplayInfo.java b/core/java/android/view/DisplayInfo.java
index e75b1b0bd17a..ecdbaa3cd2f4 100644
--- a/core/java/android/view/DisplayInfo.java
+++ b/core/java/android/view/DisplayInfo.java
@@ -493,8 +493,6 @@ public final class DisplayInfo implements Parcelable {
&& logicalDensityDpi == other.logicalDensityDpi
&& physicalXDpi == other.physicalXDpi
&& physicalYDpi == other.physicalYDpi
- && appVsyncOffsetNanos == other.appVsyncOffsetNanos
- && presentationDeadlineNanos == other.presentationDeadlineNanos
&& state == other.state
&& committedState == other.committedState
&& ownerUid == other.ownerUid
@@ -517,6 +515,8 @@ public final class DisplayInfo implements Parcelable {
if (compareRefreshRate) {
return isEqualWithoutRefreshRate
&& (getRefreshRate() == other.getRefreshRate())
+ && appVsyncOffsetNanos == other.appVsyncOffsetNanos
+ && presentationDeadlineNanos == other.presentationDeadlineNanos
&& (modeId == other.modeId);
}
return isEqualWithoutRefreshRate;
diff --git a/core/java/android/view/NotificationHeaderView.java b/core/java/android/view/NotificationHeaderView.java
index df680c054f56..73cd5ecd39ef 100644
--- a/core/java/android/view/NotificationHeaderView.java
+++ b/core/java/android/view/NotificationHeaderView.java
@@ -32,6 +32,7 @@ import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.util.AttributeSet;
+import android.util.TypedValue;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import android.widget.RemoteViews;
@@ -265,14 +266,20 @@ public class NotificationHeaderView extends RelativeLayout {
? R.style.TextAppearance_DeviceDefault_Notification_Title
: R.style.TextAppearance_DeviceDefault_Notification_Info;
// Most of the time, we're showing text in the minimized state
- View headerText = findViewById(R.id.header_text);
- if (headerText instanceof TextView) {
- ((TextView) headerText).setTextAppearance(styleResId);
+ if (findViewById(R.id.header_text) instanceof TextView headerText) {
+ headerText.setTextAppearance(styleResId);
+ if (notificationsRedesignTemplates()) {
+ // TODO: b/378660052 - When inlining the redesign flag, this should be updated
+ // directly in TextAppearance_DeviceDefault_Notification_Title so we won't need to
+ // override it here.
+ float textSize = getContext().getResources().getDimension(
+ R.dimen.notification_2025_title_text_size);
+ headerText.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
+ }
}
// If there's no summary or text, we show the app name instead of nothing
- View appNameText = findViewById(R.id.app_name_text);
- if (appNameText instanceof TextView) {
- ((TextView) appNameText).setTextAppearance(styleResId);
+ if (findViewById(R.id.app_name_text) instanceof TextView appNameText) {
+ appNameText.setTextAppearance(styleResId);
}
}
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index 311fbee2fc4b..0903d2293d67 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -162,8 +162,6 @@ public final class SurfaceControl implements Parcelable {
float cornerRadius);
private static native void nativeSetClientDrawnCornerRadius(long transactionObj,
long nativeObject, float clientDrawnCornerRadius);
- private static native void nativeSetClientDrawnShadows(long transactionObj,
- long nativeObject, float clientDrawnShadows);
private static native void nativeSetBackgroundBlurRadius(long transactionObj, long nativeObject,
int blurRadius);
private static native void nativeSetLayerStack(long transactionObj, long nativeObject,
@@ -594,6 +592,7 @@ public final class SurfaceControl implements Parcelable {
private final Runnable mFreeNativeResources;
private boolean mRemoved = false;
+ private OnJankDataListener mListener;
private OnJankDataListenerRegistration() {
mNativeObject = 0;
@@ -604,6 +603,8 @@ public final class SurfaceControl implements Parcelable {
mNativeObject = nativeCreateJankDataListenerWrapper(surface.mNativeObject, listener);
mFreeNativeResources = (mNativeObject == 0) ? () -> {} :
sRegistry.registerNativeAllocation(this, mNativeObject);
+ // Make sure the listener doesn't get GCed as long as the registration is alive.
+ mListener = listener;
}
/**
@@ -643,6 +644,7 @@ public final class SurfaceControl implements Parcelable {
if (!mRemoved) {
removeAfter(0);
}
+ mListener = null;
mFreeNativeResources.run();
}
}
@@ -3691,35 +3693,6 @@ public final class SurfaceControl implements Parcelable {
}
/**
- * Disables shadows of a {@link SurfaceControl}. When the radius set by
- * {@link Transaction#setClientDrawnShadows(SurfaceControl, float)} is equal to
- * clientDrawnShadowRadius the shadows drawn by SurfaceFlinger is disabled.
- *
- * @param sc SurfaceControl
- * @param clientDrawnShadowRadius Shadow radius drawn by the client
- * @return Itself.
- * @hide
- */
- @NonNull
- public Transaction setClientDrawnShadows(@NonNull SurfaceControl sc,
- float clientDrawnShadowRadius) {
- checkPreconditions(sc);
- if (SurfaceControlRegistry.sCallStackDebuggingEnabled) {
- SurfaceControlRegistry.getProcessInstance().checkCallStackDebugging(
- "setClientDrawnShadows", this, sc,
- "clientDrawnShadowRadius=" + clientDrawnShadowRadius);
- }
- if (Flags.ignoreCornerRadiusAndShadows()) {
- nativeSetClientDrawnShadows(mNativeObject, sc.mNativeObject,
- clientDrawnShadowRadius);
- } else {
- Log.w(TAG, "setClientDrawnShadows was called but"
- + "ignore_corner_radius_and_shadows flag is disabled");
- }
- return this;
- }
-
- /**
* Sets the background blur radius of the {@link SurfaceControl}.
*
* @param sc SurfaceControl.
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index bf34069f9445..900f22d2b37b 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -123,6 +123,7 @@ import static android.view.flags.Flags.toolkitFrameRateTouchBoost25q1;
import static android.view.flags.Flags.toolkitFrameRateTypingReadOnly;
import static android.view.flags.Flags.toolkitFrameRateVelocityMappingReadOnly;
import static android.view.flags.Flags.toolkitFrameRateViewEnablingReadOnly;
+import static android.view.flags.Flags.toolkitInitialTouchBoost;
import static android.view.flags.Flags.toolkitMetricsForFrameRateDecision;
import static android.view.flags.Flags.toolkitSetFrameRateReadOnly;
import static android.view.inputmethod.InputMethodEditorTraceProto.InputMethodClientsTraceProto.ClientSideProto.IME_FOCUS_CONTROLLER;
@@ -149,6 +150,8 @@ import android.annotation.UiContext;
import android.app.ActivityManager;
import android.app.ActivityThread;
import android.app.ResourcesManager;
+import android.app.UiModeManager;
+import android.app.UiModeManager.ForceInvertStateChangeListener;
import android.app.WindowConfiguration;
import android.app.compat.CompatChanges;
import android.app.servertransaction.WindowStateTransactionItem;
@@ -164,7 +167,6 @@ import android.content.res.CompatibilityInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
-import android.database.ContentObserver;
import android.graphics.BLASTBufferQueue;
import android.graphics.Canvas;
import android.graphics.Color;
@@ -210,7 +212,6 @@ import android.os.SystemProperties;
import android.os.Trace;
import android.os.UserHandle;
import android.os.Vibrator;
-import android.provider.Settings;
import android.sysprop.DisplayProperties;
import android.sysprop.ViewProperties;
import android.text.TextUtils;
@@ -463,10 +464,8 @@ public final class ViewRootImpl implements ViewParent,
private CompatOnBackInvokedCallback mCompatOnBackInvokedCallback;
@Nullable
- private ContentObserver mForceInvertObserver;
+ private ForceInvertStateChangeListener mForceInvertStateChangeListener;
- private static final int INVALID_VALUE = Integer.MIN_VALUE;
- private int mForceInvertEnabled = INVALID_VALUE;
/**
* Callback for notifying about global configuration changes.
*/
@@ -543,6 +542,8 @@ public final class ViewRootImpl implements ViewParent,
@UiContext
public final Context mContext;
+ private UiModeManager mUiModeManager;
+
@UnsupportedAppUsage
final IWindowSession mWindowSession;
@NonNull Display mDisplay;
@@ -1113,9 +1114,13 @@ public final class ViewRootImpl implements ViewParent,
private boolean mIsFrameRateConflicted = false;
// Used to check whether SurfaceControl has been replaced.
private boolean mSurfaceReplaced = false;
+ // Indicates whether a draw operation occurred during this frame while a touch event was active.
+ private boolean mTouchAndDrawn = false;
// Used to set frame rate compatibility.
@Surface.FrameRateCompatibility int mFrameRateCompatibility =
FRAME_RATE_COMPATIBILITY_FIXED_SOURCE;
+ // time for initial touch boost period.
+ private static final int FRAME_RATE_INITIAL_TOUCH_BOOST_TIME = 30;
// time for touch boost period.
private static final int FRAME_RATE_TOUCH_BOOST_TIME = 3000;
// Timeout for the other frame rate boosts other than touch boost.
@@ -1213,6 +1218,7 @@ public final class ViewRootImpl implements ViewParent,
private static boolean sSurfaceFlingerBugfixFlagValue =
com.android.graphics.surfaceflinger.flags.Flags.vrrBugfix24q4();
private static final boolean sEnableVrr = ViewProperties.vrr_enabled().orElse(true);
+ private static final boolean sToolkitInitialTouchBoostFlagValue = toolkitInitialTouchBoost();
static {
sToolkitSetFrameRateReadOnlyFlagValue = toolkitSetFrameRateReadOnly();
@@ -1238,6 +1244,7 @@ public final class ViewRootImpl implements ViewParent,
public ViewRootImpl(@UiContext Context context, Display display, IWindowSession session,
WindowLayout windowLayout) {
mContext = context;
+ mUiModeManager = context.getSystemService(UiModeManager.class);
mWindowSession = session;
mWindowLayout = windowLayout;
mDisplay = display;
@@ -1781,23 +1788,6 @@ public final class ViewRootImpl implements ViewParent,
}
}
- private boolean isForceInvertEnabled() {
- if (mForceInvertEnabled == INVALID_VALUE) {
- reloadForceInvertEnabled();
- }
- return mForceInvertEnabled == 1;
- }
-
- private void reloadForceInvertEnabled() {
- if (forceInvertColor()) {
- mForceInvertEnabled = Settings.Secure.getIntForUser(
- mContext.getContentResolver(),
- Settings.Secure.ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED,
- /* def= */ 0,
- UserHandle.myUserId());
- }
- }
-
/**
* Register any kind of listeners if setView was success.
*/
@@ -1829,21 +1819,11 @@ public final class ViewRootImpl implements ViewParent,
mBasePackageName);
if (forceInvertColor()) {
- if (mForceInvertObserver == null) {
- mForceInvertObserver = new ContentObserver(mHandler) {
- @Override
- public void onChange(boolean selfChange) {
- reloadForceInvertEnabled();
- updateForceDarkMode();
- }
- };
- mContext.getContentResolver().registerContentObserver(
- Settings.Secure.getUriFor(
- Settings.Secure.ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED
- ),
- false,
- mForceInvertObserver,
- UserHandle.myUserId());
+ if (mForceInvertStateChangeListener == null) {
+ mForceInvertStateChangeListener =
+ forceInvertState -> updateForceDarkMode();
+ mUiModeManager.addForceInvertStateChangeListener(mExecutor,
+ mForceInvertStateChangeListener);
}
}
}
@@ -1861,9 +1841,10 @@ public final class ViewRootImpl implements ViewParent,
.unregisterDisplayListener(mDisplayListener);
if (forceInvertColor()) {
- if (mForceInvertObserver != null) {
- mContext.getContentResolver().unregisterContentObserver(mForceInvertObserver);
- mForceInvertObserver = null;
+ if (mForceInvertStateChangeListener != null) {
+ mUiModeManager.removeForceInvertStateChangeListener(
+ mForceInvertStateChangeListener);
+ mForceInvertStateChangeListener = null;
}
}
@@ -2050,21 +2031,25 @@ public final class ViewRootImpl implements ViewParent,
return getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
}
- /** Returns true if force dark should be enabled according to various settings */
+ /**
+ * Determines the type of force dark to apply, considering force inversion, system night mode,
+ * and app-specific settings (including developer opt-outs).
+ *
+ * @return A {@link ForceDarkType.ForceDarkTypeDef} constant indicating the force dark type.
+ */
@VisibleForTesting
public @ForceDarkType.ForceDarkTypeDef int determineForceDarkType() {
if (forceInvertColor()) {
// Force invert ignores all developer opt-outs.
// We also ignore dark theme, since the app developer can override the user's preference
- // for dark mode in configuration.uiMode. Instead, we assume that the force invert
- // setting will be enabled at the same time dark theme is in the Settings app.
- if (isForceInvertEnabled()) {
+ // for dark mode in configuration.uiMode. Instead, we assume that both force invert and
+ // the system's dark theme are enabled.
+ if (mUiModeManager.getForceInvertState() == UiModeManager.FORCE_INVERT_TYPE_DARK) {
return ForceDarkType.FORCE_INVERT_COLOR_DARK;
}
}
boolean useAutoDark = getNightMode() == Configuration.UI_MODE_NIGHT_YES;
-
if (useAutoDark) {
boolean forceDarkAllowedDefault =
SystemProperties.getBoolean(ThreadedRenderer.DEBUG_FORCE_DARK, false);
@@ -4456,6 +4441,10 @@ public final class ViewRootImpl implements ViewParent,
// We set the preferred frame rate and frame rate category at the end of performTraversals
// when the values are applicable.
if (mDrawnThisFrame) {
+ if (sToolkitInitialTouchBoostFlagValue && mIsTouchBoosting) {
+ mTouchAndDrawn = true;
+ }
+
mDrawnThisFrame = false;
if (!mInvalidationIdleMessagePosted && sSurfaceFlingerBugfixFlagValue) {
mInvalidationIdleMessagePosted = true;
@@ -6739,6 +6728,7 @@ public final class ViewRootImpl implements ViewParent,
private static final int MSG_REFRESH_POINTER_ICON = 41;
private static final int MSG_FRAME_RATE_SETTING = 42;
private static final int MSG_SURFACE_REPLACED_TIMEOUT = 43;
+ private static final int MSG_INITIAL_TOUCH_BOOST_TIMEOUT = 44;
final class ViewRootHandler extends Handler {
@Override
@@ -6812,6 +6802,8 @@ public final class ViewRootImpl implements ViewParent,
return "MSG_FRAME_RATE_SETTING";
case MSG_SURFACE_REPLACED_TIMEOUT:
return "MSG_SURFACE_REPLACED_TIMEOUT";
+ case MSG_INITIAL_TOUCH_BOOST_TIMEOUT:
+ return "MSG_INITIAL_TOUCH_BOOST_TIMEOUT";
}
return super.getMessageName(message);
}
@@ -7087,6 +7079,17 @@ public final class ViewRootImpl implements ViewParent,
setPreferredFrameRateCategory(FRAME_RATE_CATEGORY_NO_PREFERENCE);
}
break;
+ case MSG_INITIAL_TOUCH_BOOST_TIMEOUT:
+ if (mTouchAndDrawn) {
+ mHandler.removeMessages(MSG_TOUCH_BOOST_TIMEOUT);
+ mHandler.sendEmptyMessageDelayed(MSG_TOUCH_BOOST_TIMEOUT,
+ FRAME_RATE_TOUCH_BOOST_TIME);
+ } else {
+ mIsTouchBoosting = false;
+ setPreferredFrameRateCategory(FRAME_RATE_CATEGORY_NO_PREFERENCE);
+ }
+ mTouchAndDrawn = false;
+ break;
case MSG_REFRESH_POINTER_ICON:
if (mPointerIconEvent == null) {
break;
@@ -8151,9 +8154,16 @@ public final class ViewRootImpl implements ViewParent,
*/
if (mIsTouchBoosting && (action == MotionEvent.ACTION_UP
|| action == MotionEvent.ACTION_CANCEL)) {
- mHandler.removeMessages(MSG_TOUCH_BOOST_TIMEOUT);
- mHandler.sendEmptyMessageDelayed(MSG_TOUCH_BOOST_TIMEOUT,
- FRAME_RATE_TOUCH_BOOST_TIME);
+
+ if (sToolkitInitialTouchBoostFlagValue) {
+ mHandler.removeMessages(MSG_INITIAL_TOUCH_BOOST_TIMEOUT);
+ mHandler.sendEmptyMessageDelayed(MSG_INITIAL_TOUCH_BOOST_TIMEOUT,
+ FRAME_RATE_INITIAL_TOUCH_BOOST_TIME);
+ } else {
+ mHandler.removeMessages(MSG_TOUCH_BOOST_TIMEOUT);
+ mHandler.sendEmptyMessageDelayed(MSG_TOUCH_BOOST_TIMEOUT,
+ FRAME_RATE_TOUCH_BOOST_TIME);
+ }
}
return handled ? FINISH_HANDLED : FORWARD;
}
@@ -9339,6 +9349,16 @@ public final class ViewRootImpl implements ViewParent,
return mVibrator;
}
+ /**
+ * Clears the system vibrator.
+ *
+ * <p>This method releases the reference to the system vibrator. It's crucial to call this
+ * method when the vibrator is no longer needed to prevent any potential memory leaks.
+ */
+ public void clearSystemVibrator() {
+ mVibrator = null;
+ }
+
private @Nullable AutofillManager getAutofillManager() {
if (mView instanceof ViewGroup) {
ViewGroup decorView = (ViewGroup) mView;
diff --git a/core/java/android/view/flags/refresh_rate_flags.aconfig b/core/java/android/view/flags/refresh_rate_flags.aconfig
index 675e5a1b4804..3bc2205f8e1c 100644
--- a/core/java/android/view/flags/refresh_rate_flags.aconfig
+++ b/core/java/android/view/flags/refresh_rate_flags.aconfig
@@ -136,4 +136,11 @@ flag {
description: "Feature flag to not suppress touch boost for specific windowTypes in VRR V QPR2"
bug: "335874198"
is_exported: true
+}
+
+flag {
+ name: "toolkit_initial_touch_boost"
+ namespace: "toolkit"
+ description: "Feature flag to update initial touch boost logic"
+ bug: "393004744"
} \ No newline at end of file
diff --git a/core/java/android/view/inputmethod/ImeTracker.java b/core/java/android/view/inputmethod/ImeTracker.java
index 4d354e0655f0..aa0111a13b8e 100644
--- a/core/java/android/view/inputmethod/ImeTracker.java
+++ b/core/java/android/view/inputmethod/ImeTracker.java
@@ -134,6 +134,7 @@ public interface ImeTracker {
ORIGIN_CLIENT,
ORIGIN_SERVER,
ORIGIN_IME,
+ ORIGIN_WM_SHELL,
})
@Retention(RetentionPolicy.SOURCE)
@interface Origin {}
diff --git a/core/java/android/widget/Button.java b/core/java/android/widget/Button.java
index eb3b76873a8f..2864aaadfd0b 100644
--- a/core/java/android/widget/Button.java
+++ b/core/java/android/widget/Button.java
@@ -223,7 +223,7 @@ public class Button extends TextView {
private static int getButtonDefaultStyleRes() {
if (sUseWearMaterial3Style != null && sUseWearMaterial3Style) {
- return com.android.internal.R.style.Widget_DeviceDefault_Button_WearMaterial3;
+ return com.android.internal.R.style.Widget_Material3_Button;
}
return 0;
}
diff --git a/core/java/android/widget/CheckedTextView.java b/core/java/android/widget/CheckedTextView.java
index 422d2d37321c..da9080d195c8 100644
--- a/core/java/android/widget/CheckedTextView.java
+++ b/core/java/android/widget/CheckedTextView.java
@@ -16,6 +16,8 @@
package android.widget;
+import static android.view.accessibility.Flags.triStateChecked;
+
import android.annotation.DrawableRes;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -141,6 +143,10 @@ public class CheckedTextView extends TextView implements Checkable {
if (mChecked != checked) {
mChecked = checked;
refreshDrawableState();
+ if (triStateChecked()) {
+ notifyViewAccessibilityStateChangedIfNeeded(
+ AccessibilityEvent.CONTENT_CHANGE_TYPE_CHECKED);
+ }
notifyViewAccessibilityStateChangedIfNeeded(
AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED);
}
@@ -570,7 +576,12 @@ public class CheckedTextView extends TextView implements Checkable {
public void onInitializeAccessibilityNodeInfoInternal(AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfoInternal(info);
info.setCheckable(true);
- info.setChecked(mChecked);
+ if (triStateChecked()) {
+ info.setChecked(mChecked ? AccessibilityNodeInfo.CHECKED_STATE_TRUE :
+ AccessibilityNodeInfo.CHECKED_STATE_FALSE);
+ } else {
+ info.setChecked(mChecked);
+ }
}
/** @hide */
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index ec0d9152468e..0f5476f58f74 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -10082,6 +10082,7 @@ public class RemoteViews implements Parcelable, Filter {
if (mApplication != null) {
// mApplication may be null if this was created with DrawInstructions constructor.
out.write(RemoteViewsProto.PACKAGE_NAME, mApplication.packageName);
+ out.write(RemoteViewsProto.UID, mApplication.uid);
}
Resources appResources = getContextForResourcesEnsuringCorrectCachedApkPaths(
context).getResources();
@@ -10163,6 +10164,7 @@ public class RemoteViews implements Parcelable, Filter {
int mApplyFlags = 0;
long mProviderInstanceId = -1;
String mPackageName = null;
+ Integer mUid = null;
SizeF mIdealSize = null;
String mLayoutResName = null;
String mLightBackgroundResName = null;
@@ -10185,6 +10187,9 @@ public class RemoteViews implements Parcelable, Filter {
case (int) RemoteViewsProto.PACKAGE_NAME:
ref.mPackageName = in.readString(RemoteViewsProto.PACKAGE_NAME);
break;
+ case (int) RemoteViewsProto.UID:
+ ref.mUid = in.readInt(RemoteViewsProto.UID);
+ break;
case (int) RemoteViewsProto.IDEAL_SIZE:
final long idealSizeToken = in.start(RemoteViewsProto.IDEAL_SIZE);
ref.mIdealSize = createSizeFFromProto(in);
@@ -10286,8 +10291,9 @@ public class RemoteViews implements Parcelable, Filter {
Resources appResources = null;
if (!ref.mHasDrawInstructions) {
checkProtoResultNotNull(ref.mPackageName, "No application info");
- rv.mApplication = context.getPackageManager().getApplicationInfo(ref.mPackageName,
- /* flags= */ 0);
+ checkProtoResultNotNull(ref.mUid, "No uid");
+ rv.mApplication = context.getPackageManager().getApplicationInfoAsUser(
+ ref.mPackageName, /* flags= */ 0, UserHandle.getUserId(ref.mUid));
appContext = rv.getContextForResourcesEnsuringCorrectCachedApkPaths(context);
appResources = appContext.getResources();
diff --git a/core/java/android/window/DesktopExperienceFlags.java b/core/java/android/window/DesktopExperienceFlags.java
index 7758dea3ea8a..e0c48b03dad8 100644
--- a/core/java/android/window/DesktopExperienceFlags.java
+++ b/core/java/android/window/DesktopExperienceFlags.java
@@ -40,9 +40,7 @@ import java.util.function.BooleanSupplier;
* @hide
*/
public enum DesktopExperienceFlags {
- ENABLE_DISPLAY_CONTENT_MODE_MANAGEMENT(
- com.android.server.display.feature.flags.Flags::enableDisplayContentModeManagement,
- true),
+ // go/keep-sorted start
ACTIVITY_EMBEDDING_SUPPORT_FOR_CONNECTED_DISPLAYS(
Flags::activityEmbeddingSupportForConnectedDisplays, false),
BASE_DENSITY_FOR_EXTERNAL_DISPLAYS(
@@ -53,6 +51,9 @@ public enum DesktopExperienceFlags {
ENABLE_CONNECTED_DISPLAYS_DND(Flags::enableConnectedDisplaysDnd, false),
ENABLE_CONNECTED_DISPLAYS_PIP(Flags::enableConnectedDisplaysPip, false),
ENABLE_CONNECTED_DISPLAYS_WINDOW_DRAG(Flags::enableConnectedDisplaysWindowDrag, false),
+ ENABLE_DISPLAY_CONTENT_MODE_MANAGEMENT(
+ com.android.server.display.feature.flags.Flags::enableDisplayContentModeManagement,
+ true),
ENABLE_DISPLAY_FOCUS_IN_SHELL_TRANSITIONS(Flags::enableDisplayFocusInShellTransitions, false),
ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING(Flags::enableDisplayWindowingModeSwitching, false),
ENABLE_DRAG_TO_MAXIMIZE(Flags::enableDragToMaximize, true),
@@ -63,9 +64,12 @@ public enum DesktopExperienceFlags {
false),
ENABLE_PER_DISPLAY_PACKAGE_CONTEXT_CACHE_IN_STATUSBAR_NOTIF(
Flags::enablePerDisplayPackageContextCacheInStatusbarNotif, false),
+ ENABLE_TASKBAR_CONNECTED_DISPLAYS(Flags::enableTaskbarConnectedDisplays, false),
ENTER_DESKTOP_BY_DEFAULT_ON_FREEFORM_DISPLAYS(Flags::enterDesktopByDefaultOnFreeformDisplays,
false),
- REPARENT_WINDOW_TOKEN_API(Flags::reparentWindowTokenApi, true);
+ REPARENT_WINDOW_TOKEN_API(Flags::reparentWindowTokenApi, true)
+ // go/keep-sorted end
+ ;
/**
* Flag class, to be used in case the enum cannot be used because the flag is not accessible.
diff --git a/core/java/android/window/DesktopModeFlags.java b/core/java/android/window/DesktopModeFlags.java
index 29186109f818..785246074cee 100644
--- a/core/java/android/window/DesktopModeFlags.java
+++ b/core/java/android/window/DesktopModeFlags.java
@@ -42,60 +42,79 @@ import java.util.function.BooleanSupplier;
*/
public enum DesktopModeFlags {
// All desktop mode related flags to be overridden by developer option toggle will be added here
- ENABLE_DESKTOP_WINDOWING_MODE(
- Flags::enableDesktopWindowingMode, /* shouldOverrideByDevOption= */ true),
- ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS(Flags::enableWindowingDynamicInitialBounds, true),
- ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION(
- Flags::enableCaptionCompatInsetForceConsumption, true),
+ // go/keep-sorted start
+ DISABLE_NON_RESIZABLE_APP_SNAP_RESIZE(Flags::disableNonResizableAppSnapResizing, true),
+ ENABLE_ACCESSIBLE_CUSTOM_HEADERS(Flags::enableAccessibleCustomHeaders, true),
+ ENABLE_APP_HEADER_WITH_TASK_DENSITY(Flags::enableAppHeaderWithTaskDensity, true),
+ ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION(Flags::enableCaptionCompatInsetForceConsumption,
+ true),
ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION_ALWAYS(
Flags::enableCaptionCompatInsetForceConsumptionAlways, true),
ENABLE_CASCADING_WINDOWS(Flags::enableCascadingWindows, true),
- ENABLE_TILE_RESIZING(Flags::enableTileResizing, true),
- ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY(
- Flags::enableDesktopWindowingWallpaperActivity, true),
- ENABLE_DESKTOP_WINDOWING_MODALS_POLICY(Flags::enableDesktopWindowingModalsPolicy, true),
- ENABLE_THEMED_APP_HEADERS(Flags::enableThemedAppHeaders, true),
- ENABLE_HOLD_TO_DRAG_APP_HANDLE(Flags::enableHoldToDragAppHandle, true),
- ENABLE_DESKTOP_WINDOWING_QUICK_SWITCH(Flags::enableDesktopWindowingQuickSwitch, true),
- ENABLE_APP_HEADER_WITH_TASK_DENSITY(Flags::enableAppHeaderWithTaskDensity, true),
- ENABLE_TASK_STACK_OBSERVER_IN_SHELL(Flags::enableTaskStackObserverInShell, true),
- ENABLE_DESKTOP_WINDOWING_SIZE_CONSTRAINTS(Flags::enableDesktopWindowingSizeConstraints, true),
- DISABLE_NON_RESIZABLE_APP_SNAP_RESIZE(Flags::disableNonResizableAppSnapResizing, true),
- ENABLE_WINDOWING_SCALED_RESIZING(Flags::enableWindowingScaledResizing, true),
- ENABLE_DESKTOP_WINDOWING_TASK_LIMIT(Flags::enableDesktopWindowingTaskLimit, true),
+ ENABLE_DESKTOP_APP_LAUNCH_ALTTAB_TRANSITIONS_BUGFIX(
+ Flags::enableDesktopAppLaunchAlttabTransitionsBugfix, true),
+ ENABLE_DESKTOP_APP_LAUNCH_TRANSITIONS_BUGFIX(Flags::enableDesktopAppLaunchTransitionsBugfix,
+ true),
+ ENABLE_DESKTOP_COMPAT_UI_VISIBILITY_STATUS(Flags::enableCompatUiVisibilityStatus, true),
+ ENABLE_DESKTOP_RECENTS_TRANSITIONS_CORNERS_BUGFIX(
+ Flags::enableDesktopRecentsTransitionsCornersBugfix, false),
+ ENABLE_DESKTOP_SKIP_COMPAT_UI_EDUCATION_IN_DESKTOP_MODE_BUGFIX(
+ Flags::skipCompatUiEducationInDesktopMode, true),
+ ENABLE_DESKTOP_SYSTEM_DIALOGS_TRANSITIONS(Flags::enableDesktopSystemDialogsTransitions, true),
+ ENABLE_DESKTOP_TAB_TEARING_MINIMIZE_ANIMATION_BUGFIX(
+ Flags::enableDesktopTabTearingMinimizeAnimationBugfix, false),
+ ENABLE_DESKTOP_TRAMPOLINE_CLOSE_ANIMATION_BUGFIX(
+ Flags::enableDesktopTrampolineCloseAnimationBugfix, false),
+ ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER(
+ Flags::enableDesktopWallpaperActivityForSystemUser, true),
+ ENABLE_DESKTOP_WINDOWING_APP_TO_WEB(Flags::enableDesktopWindowingAppToWeb, true),
+ ENABLE_DESKTOP_WINDOWING_APP_TO_WEB_EDUCATION(Flags::enableDesktopWindowingAppToWebEducation,
+ true),
ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION(Flags::enableDesktopWindowingBackNavigation, true),
- ENABLE_WINDOWING_EDGE_DRAG_RESIZE(Flags::enableWindowingEdgeDragResize, true),
- ENABLE_DESKTOP_WINDOWING_TASKBAR_RUNNING_APPS(
- Flags::enableDesktopWindowingTaskbarRunningApps, true),
- ENABLE_WINDOWING_TRANSITION_HANDLERS_OBSERVERS(
- Flags::enableWindowingTransitionHandlersObservers, false),
- ENABLE_DESKTOP_WINDOWING_PERSISTENCE(Flags::enableDesktopWindowingPersistence, false),
- ENABLE_HANDLE_INPUT_FIX(Flags::enableHandleInputFix, true),
ENABLE_DESKTOP_WINDOWING_ENTER_TRANSITIONS_BUGFIX(
Flags::enableDesktopWindowingEnterTransitionBugfix, true),
+ ENABLE_DESKTOP_WINDOWING_EXIT_BY_MINIMIZE_TRANSITION_BUGFIX(
+ Flags::enableDesktopWindowingExitByMinimizeTransitionBugfix, false),
ENABLE_DESKTOP_WINDOWING_EXIT_TRANSITIONS_BUGFIX(
Flags::enableDesktopWindowingExitTransitionsBugfix, true),
- ENABLE_DESKTOP_APP_LAUNCH_ALTTAB_TRANSITIONS_BUGFIX(
- Flags::enableDesktopAppLaunchAlttabTransitionsBugfix, true),
- ENABLE_DESKTOP_APP_LAUNCH_TRANSITIONS_BUGFIX(
- Flags::enableDesktopAppLaunchTransitionsBugfix, true),
- ENABLE_DESKTOP_COMPAT_UI_VISIBILITY_STATUS(
- Flags::enableCompatUiVisibilityStatus, true),
- ENABLE_DESKTOP_SKIP_COMPAT_UI_EDUCATION_IN_DESKTOP_MODE_BUGFIX(
- Flags::skipCompatUiEducationInDesktopMode, true),
- INCLUDE_TOP_TRANSPARENT_FULLSCREEN_TASK_IN_DESKTOP_HEURISTIC(
- Flags::includeTopTransparentFullscreenTaskInDesktopHeuristic, true),
ENABLE_DESKTOP_WINDOWING_HSUM(Flags::enableDesktopWindowingHsum, true),
+ ENABLE_DESKTOP_WINDOWING_IMMERSIVE_HANDLE_HIDING(
+ Flags::enableDesktopWindowingImmersiveHandleHiding, true),
+ ENABLE_DESKTOP_WINDOWING_MODALS_POLICY(Flags::enableDesktopWindowingModalsPolicy, true),
+ ENABLE_DESKTOP_WINDOWING_MODE(Flags::enableDesktopWindowingMode, true),
+ ENABLE_DESKTOP_WINDOWING_MULTI_INSTANCE_FEATURES(
+ Flags::enableDesktopWindowingMultiInstanceFeatures, true),
+ ENABLE_DESKTOP_WINDOWING_PERSISTENCE(Flags::enableDesktopWindowingPersistence, true),
+ ENABLE_DESKTOP_WINDOWING_QUICK_SWITCH(Flags::enableDesktopWindowingQuickSwitch, true),
+ ENABLE_DESKTOP_WINDOWING_SCVH_CACHE(Flags::enableDesktopWindowingScvhCacheBugFix, true),
+ ENABLE_DESKTOP_WINDOWING_SIZE_CONSTRAINTS(Flags::enableDesktopWindowingSizeConstraints, true),
+ ENABLE_DESKTOP_WINDOWING_TASKBAR_RUNNING_APPS(Flags::enableDesktopWindowingTaskbarRunningApps,
+ true),
+ ENABLE_DESKTOP_WINDOWING_TASK_LIMIT(Flags::enableDesktopWindowingTaskLimit, true),
+ ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY(Flags::enableDesktopWindowingWallpaperActivity,
+ true),
+ ENABLE_FULLY_IMMERSIVE_IN_DESKTOP(Flags::enableFullyImmersiveInDesktop, true),
+ ENABLE_HANDLE_INPUT_FIX(Flags::enableHandleInputFix, true),
+ ENABLE_HOLD_TO_DRAG_APP_HANDLE(Flags::enableHoldToDragAppHandle, true),
ENABLE_MINIMIZE_BUTTON(Flags::enableMinimizeButton, true),
ENABLE_RESIZING_METRICS(Flags::enableResizingMetrics, true),
+ ENABLE_RESTORE_TO_PREVIOUS_SIZE_FROM_DESKTOP_IMMERSIVE(
+ Flags::enableRestoreToPreviousSizeFromDesktopImmersive, true),
ENABLE_TASK_RESIZING_KEYBOARD_SHORTCUTS(Flags::enableTaskResizingKeyboardShortcuts, true),
- ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER(
- Flags::enableDesktopWallpaperActivityForSystemUser, true),
- ENABLE_TOP_VISIBLE_ROOT_TASK_PER_USER_TRACKING(
- Flags::enableTopVisibleRootTaskPerUserTracking, true),
- ENABLE_DESKTOP_RECENTS_TRANSITIONS_CORNERS_BUGFIX(
- Flags::enableDesktopRecentsTransitionsCornersBugfix, false),
- ENABLE_DESKTOP_SYSTEM_DIALOGS_TRANSITIONS(Flags::enableDesktopSystemDialogsTransitions, true);
+ ENABLE_TASK_STACK_OBSERVER_IN_SHELL(Flags::enableTaskStackObserverInShell, true),
+ ENABLE_THEMED_APP_HEADERS(Flags::enableThemedAppHeaders, true),
+ ENABLE_TILE_RESIZING(Flags::enableTileResizing, true),
+ ENABLE_TOP_VISIBLE_ROOT_TASK_PER_USER_TRACKING(Flags::enableTopVisibleRootTaskPerUserTracking,
+ true),
+ ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS(Flags::enableWindowingDynamicInitialBounds, true),
+ ENABLE_WINDOWING_EDGE_DRAG_RESIZE(Flags::enableWindowingEdgeDragResize, true),
+ ENABLE_WINDOWING_SCALED_RESIZING(Flags::enableWindowingScaledResizing, true),
+ ENABLE_WINDOWING_TRANSITION_HANDLERS_OBSERVERS(
+ Flags::enableWindowingTransitionHandlersObservers, false),
+ INCLUDE_TOP_TRANSPARENT_FULLSCREEN_TASK_IN_DESKTOP_HEURISTIC(
+ Flags::includeTopTransparentFullscreenTaskInDesktopHeuristic, true)
+ // go/keep-sorted end
+ ;
/**
* Flag class, to be used in case the enum cannot be used because the flag is not accessible.
diff --git a/core/java/android/window/TaskFragmentOrganizer.java b/core/java/android/window/TaskFragmentOrganizer.java
index c316800108bd..0b9d62983004 100644
--- a/core/java/android/window/TaskFragmentOrganizer.java
+++ b/core/java/android/window/TaskFragmentOrganizer.java
@@ -279,10 +279,6 @@ public class TaskFragmentOrganizer extends WindowOrganizer {
* @param state the state to save.
*/
public void setSavedState(@NonNull Bundle state) {
- if (!Flags.aeBackStackRestore()) {
- return;
- }
-
if (state.getSize() > 200000) {
throw new IllegalArgumentException("Saved state too large, " + state.getSize());
}
diff --git a/core/java/android/window/WindowContainerTransaction.java b/core/java/android/window/WindowContainerTransaction.java
index 68b5a261f507..1156503cf8e8 100644
--- a/core/java/android/window/WindowContainerTransaction.java
+++ b/core/java/android/window/WindowContainerTransaction.java
@@ -1130,6 +1130,19 @@ public final class WindowContainerTransaction implements Parcelable {
}
/**
+ * Adds a hierarchy op for app compat reachability.
+ *
+ * @param container The token for the container Task
+ * @param taskId The id of the current task
+ * @hide
+ */
+ public WindowContainerTransaction setReachabilityOffset(
+ @NonNull WindowContainerToken container, int taskId, int x, int y) {
+ mHierarchyOps.add(HierarchyOp.createForReachability(container.asBinder(), taskId, x, y));
+ return this;
+ }
+
+ /**
* Merges another WCT into this one.
* @param transfer When true, this will transfer everything from other potentially leaving
* other in an unusable state. When false, other is left alone, but
@@ -1590,6 +1603,7 @@ public final class WindowContainerTransaction implements Parcelable {
public static final int HIERARCHY_OP_TYPE_SET_KEYGUARD_STATE = 22;
public static final int HIERARCHY_OP_TYPE_SET_DISABLE_LAUNCH_ADJACENT = 23;
public static final int HIERARCHY_OP_TYPE_REMOVE_ROOT_TASK = 24;
+ public static final int HIERARCHY_OP_TYPE_APP_COMPAT_REACHABILITY = 25;
@IntDef(prefix = {"HIERARCHY_OP_TYPE_"}, value = {
HIERARCHY_OP_TYPE_REPARENT,
@@ -1617,6 +1631,7 @@ public final class WindowContainerTransaction implements Parcelable {
HIERARCHY_OP_TYPE_SET_KEYGUARD_STATE,
HIERARCHY_OP_TYPE_SET_DISABLE_LAUNCH_ADJACENT,
HIERARCHY_OP_TYPE_REMOVE_ROOT_TASK,
+ HIERARCHY_OP_TYPE_APP_COMPAT_REACHABILITY,
})
@Retention(RetentionPolicy.SOURCE)
public @interface HierarchyOpType {
@@ -1630,6 +1645,10 @@ public final class WindowContainerTransaction implements Parcelable {
public static final String LAUNCH_KEY_SHORTCUT_CALLING_PACKAGE =
"android:transaction.hop.shortcut_calling_package";
+ // The following keys are used to define the reachability direction after a double tap.
+ public static final String REACHABILITY_EVENT_X = "android:transaction.reachability_x";
+ public static final String REACHABILITY_EVENT_Y = "android:transaction.reachability_y";
+
@HierarchyOpType
private final int mType;
@@ -1665,6 +1684,9 @@ public final class WindowContainerTransaction implements Parcelable {
private Bundle mLaunchOptions;
@Nullable
+ private Bundle mAppCompatOptions;
+
+ @Nullable
private Intent mActivityIntent;
/** Used as options for {@link #addTaskFragmentOperation}. */
@@ -1833,7 +1855,21 @@ public final class WindowContainerTransaction implements Parcelable {
.build();
}
- /** Creates a hierarchy op for setting a task non-trimmable by recents. */
+ /** Create a hierarchy op for app compat reachability. */
+ @NonNull
+ public static HierarchyOp createForReachability(IBinder container, int taskId, int x,
+ int y) {
+ final Bundle appCompatOptions = new Bundle();
+ appCompatOptions.putInt(LAUNCH_KEY_TASK_ID, taskId);
+ appCompatOptions.putInt(REACHABILITY_EVENT_X, x);
+ appCompatOptions.putInt(REACHABILITY_EVENT_Y, y);
+ return new HierarchyOp.Builder(HIERARCHY_OP_TYPE_APP_COMPAT_REACHABILITY)
+ .setAppCompatOptions(appCompatOptions)
+ .setContainer(container)
+ .build();
+ }
+
+ /** Create a hierarchy op for setting a task non-trimmable by recents. */
@NonNull
@FlaggedApi(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
public static HierarchyOp createForSetTaskTrimmableFromRecents(@NonNull IBinder container,
@@ -1863,6 +1899,7 @@ public final class WindowContainerTransaction implements Parcelable {
mWindowingModes = copy.mWindowingModes;
mActivityTypes = copy.mActivityTypes;
mLaunchOptions = copy.mLaunchOptions;
+ mAppCompatOptions = copy.mAppCompatOptions;
mActivityIntent = copy.mActivityIntent;
mTaskFragmentOperation = copy.mTaskFragmentOperation;
mKeyguardState = copy.mKeyguardState;
@@ -1889,6 +1926,7 @@ public final class WindowContainerTransaction implements Parcelable {
mWindowingModes = in.createIntArray();
mActivityTypes = in.createIntArray();
mLaunchOptions = in.readBundle();
+ mAppCompatOptions = in.readBundle(getClass().getClassLoader());
mActivityIntent = in.readTypedObject(Intent.CREATOR);
mTaskFragmentOperation = in.readTypedObject(TaskFragmentOperation.CREATOR);
mKeyguardState = in.readTypedObject(KeyguardState.CREATOR);
@@ -1966,6 +2004,11 @@ public final class WindowContainerTransaction implements Parcelable {
}
@Nullable
+ public Bundle getAppCompatOptions() {
+ return mAppCompatOptions;
+ }
+
+ @Nullable
public Intent getActivityIntent() {
return mActivityIntent;
}
@@ -2100,6 +2143,9 @@ public final class WindowContainerTransaction implements Parcelable {
case HIERARCHY_OP_TYPE_LAUNCH_TASK:
sb.append(mLaunchOptions);
break;
+ case HIERARCHY_OP_TYPE_APP_COMPAT_REACHABILITY:
+ sb.append(mAppCompatOptions);
+ break;
case HIERARCHY_OP_TYPE_SET_LAUNCH_ADJACENT_FLAG_ROOT:
sb.append("container=").append(mContainer).append(" clearRoot=").append(mToTop);
break;
@@ -2182,6 +2228,7 @@ public final class WindowContainerTransaction implements Parcelable {
dest.writeIntArray(mWindowingModes);
dest.writeIntArray(mActivityTypes);
dest.writeBundle(mLaunchOptions);
+ dest.writeBundle(mAppCompatOptions);
dest.writeTypedObject(mActivityIntent, flags);
dest.writeTypedObject(mTaskFragmentOperation, flags);
dest.writeTypedObject(mKeyguardState, flags);
@@ -2245,6 +2292,9 @@ public final class WindowContainerTransaction implements Parcelable {
private Bundle mLaunchOptions;
@Nullable
+ private Bundle mAppCompatOptions;
+
+ @Nullable
private Intent mActivityIntent;
@Nullable
@@ -2328,6 +2378,11 @@ public final class WindowContainerTransaction implements Parcelable {
return this;
}
+ Builder setAppCompatOptions(@Nullable Bundle appCompatOptions) {
+ mAppCompatOptions = appCompatOptions;
+ return this;
+ }
+
Builder setActivityIntent(@Nullable Intent activityIntent) {
mActivityIntent = activityIntent;
return this;
@@ -2407,6 +2462,7 @@ public final class WindowContainerTransaction implements Parcelable {
hierarchyOp.mToTop = mToTop;
hierarchyOp.mReparentTopOnly = mReparentTopOnly;
hierarchyOp.mLaunchOptions = mLaunchOptions;
+ hierarchyOp.mAppCompatOptions = mAppCompatOptions;
hierarchyOp.mActivityIntent = mActivityIntent;
hierarchyOp.mPendingIntent = mPendingIntent;
hierarchyOp.mAlwaysOnTop = mAlwaysOnTop;
diff --git a/core/java/android/window/flags/lse_desktop_experience.aconfig b/core/java/android/window/flags/lse_desktop_experience.aconfig
index d20b06738f8c..d413ba0b042c 100644
--- a/core/java/android/window/flags/lse_desktop_experience.aconfig
+++ b/core/java/android/window/flags/lse_desktop_experience.aconfig
@@ -513,6 +513,13 @@ flag {
}
flag {
+ name: "enable_taskbar_connected_displays"
+ namespace: "lse_desktop_experience"
+ description: "Enables connected displays in taskbar."
+ bug: "393398093"
+}
+
+flag {
name: "enable_bug_fixes_for_secondary_display"
namespace: "lse_desktop_experience"
description: "Bugfixes / papercuts to bring Desktop Windowing to secondary displays."
@@ -558,6 +565,13 @@ flag {
}
flag {
+ name: "enable_display_disconnect_interaction"
+ namespace: "lse_desktop_experience"
+ description: "Enables new interaction that occurs when a display is disconnected."
+ bug: "391652399"
+}
+
+flag {
name: "show_desktop_experience_dev_option"
namespace: "lse_desktop_experience"
description: "Replace the freeform windowing dev options with a desktop experience one."
@@ -602,6 +616,16 @@ flag {
}
flag {
+ name: "exclude_caption_from_app_bounds"
+ namespace: "lse_desktop_experience"
+ description: "Whether caption insets are excluded from app bounds in freeform"
+ bug: "388014743"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
+flag {
name: "enable_desktop_mode_through_dev_option"
namespace: "lse_desktop_experience"
description: "Enables support for desktop mode through developer options for devices eligible for desktop mode."
@@ -610,3 +634,47 @@ flag {
purpose: PURPOSE_BUGFIX
}
}
+
+flag {
+ name: "enable_desktop_taskbar_on_freeform_displays"
+ namespace: "lse_desktop_experience"
+ description: "Forces pinned taskbar with desktop tasks on freeform displays"
+ bug: "390665752"
+}
+
+flag {
+ name: "enable_presentation_for_connected_displays"
+ namespace: "lse_desktop_experience"
+ description: "Enables full support of presentation API for connected displays."
+ bug: "378503083"
+}
+
+flag {
+ name: "enable_full_screen_window_on_removing_split_screen_stage_bugfix"
+ namespace: "lse_desktop_experience"
+ description: "Enables clearing the windowing mode of a freeform window when removing the task from the split screen stage."
+ bug: "372791604"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
+flag {
+ name: "enable_desktop_trampoline_close_animation_bugfix"
+ namespace: "lse_desktop_experience"
+ description: "Enables a close animation when the app trampolines (a second window is opened, and the first is closed)."
+ bug: "391548553"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
+flag {
+ name: "enable_desktop_tab_tearing_minimize_animation_bugfix"
+ namespace: "lse_desktop_experience"
+ description: "Enabling a minimize animation when a new window is opened via tab tearing and the Desktop Windowing open windows limit is reached."
+ bug: "376459606"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+} \ No newline at end of file
diff --git a/core/java/android/window/flags/window_surfaces.aconfig b/core/java/android/window/flags/window_surfaces.aconfig
index 8ff2e6aebdd0..d866b0e2f89e 100644
--- a/core/java/android/window/flags/window_surfaces.aconfig
+++ b/core/java/android/window/flags/window_surfaces.aconfig
@@ -106,3 +106,15 @@ flag {
is_exported: true
bug: "293949943"
}
+
+flag {
+ namespace: "window_surfaces"
+ name: "fix_hide_overlay_api"
+ description: "Application that calls setHideOverlayWindows() shouldn't hide its own windows, this flag gate the fix of this issue."
+ is_fixed_read_only: true
+ is_exported: true
+ bug: "359424300"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
diff --git a/core/java/android/window/flags/windowing_frontend.aconfig b/core/java/android/window/flags/windowing_frontend.aconfig
index 9f6ea42c6fc4..25dc6723aa78 100644
--- a/core/java/android/window/flags/windowing_frontend.aconfig
+++ b/core/java/android/window/flags/windowing_frontend.aconfig
@@ -460,4 +460,15 @@ flag {
metadata {
purpose: PURPOSE_BUGFIX
}
+}
+
+flag {
+ name: "clear_system_vibrator"
+ namespace: "windowing_frontend"
+ description: "Clears the system vibrator before attaching new window, to avoid leaks."
+ bug: "393190314"
+ is_fixed_read_only: true
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
} \ No newline at end of file
diff --git a/core/java/android/window/flags/windowing_sdk.aconfig b/core/java/android/window/flags/windowing_sdk.aconfig
index 1b946afd506c..ac6625b17413 100644
--- a/core/java/android/window/flags/windowing_sdk.aconfig
+++ b/core/java/android/window/flags/windowing_sdk.aconfig
@@ -91,14 +91,6 @@ flag {
flag {
namespace: "windowing_sdk"
- name: "ae_back_stack_restore"
- description: "Allow the ActivityEmbedding back stack to be restored after process restarted"
- bug: "289875940"
- is_fixed_read_only: true
-}
-
-flag {
- namespace: "windowing_sdk"
name: "touch_pass_through_opt_in"
description: "Requires apps to opt-in to overlay pass through touches and provide APIs to opt-in"
bug: "358129114"
@@ -185,3 +177,14 @@ flag {
description: "Enables letterboxing for a safe region"
bug: "380132497"
}
+
+flag {
+ namespace: "windowing_sdk"
+ name: "fix_layout_existing_task"
+ description: "Layout the existing task to ensure the bounds are updated."
+ bug: "390291971"
+ is_fixed_read_only: true
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+} \ No newline at end of file
diff --git a/core/java/com/android/internal/app/AlertController.java b/core/java/com/android/internal/app/AlertController.java
index 5d4c40853009..4fad6d52a00a 100644
--- a/core/java/com/android/internal/app/AlertController.java
+++ b/core/java/com/android/internal/app/AlertController.java
@@ -258,7 +258,7 @@ public class AlertController {
private int getAlertDialogDefStyleRes() {
if (sUseWearMaterial3Style) {
- return com.android.internal.R.style.AlertDialog_DeviceDefault_WearMaterial3;
+ return com.android.internal.R.style.AlertDialog_Material3;
}
return 0;
}
diff --git a/core/java/com/android/internal/app/ChooserGridLayoutManager.java b/core/java/com/android/internal/app/ChooserGridLayoutManager.java
index c50ebd9562c9..69d2abc7d998 100644
--- a/core/java/com/android/internal/app/ChooserGridLayoutManager.java
+++ b/core/java/com/android/internal/app/ChooserGridLayoutManager.java
@@ -16,9 +16,20 @@
package com.android.internal.app;
+import static android.service.chooser.Flags.announceShortcutsAndSuggestedAppsLegacy;
+
+import android.annotation.Nullable;
import android.content.Context;
import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.accessibility.AccessibilityNodeInfo;
+import android.view.accessibility.AccessibilityNodeInfo.CollectionInfo;
+import android.widget.GridView;
+import android.widget.TextView;
+import com.android.internal.R;
+import com.android.internal.app.ChooserActivity.ChooserGridAdapter;
import com.android.internal.widget.GridLayoutManager;
import com.android.internal.widget.RecyclerView;
@@ -28,6 +39,11 @@ import com.android.internal.widget.RecyclerView;
*/
public class ChooserGridLayoutManager extends GridLayoutManager {
+ private CharSequence mShortcutGroupTitle = "";
+ private CharSequence mSuggestedAppsGroupTitle = "";
+ private CharSequence mAllAppListGroupTitle = "";
+ @Nullable
+ private RecyclerView mRecyclerView;
private boolean mVerticalScrollEnabled = true;
/**
@@ -39,6 +55,9 @@ public class ChooserGridLayoutManager extends GridLayoutManager {
public ChooserGridLayoutManager(Context context, AttributeSet attrs, int defStyleAttr,
int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
+ if (announceShortcutsAndSuggestedAppsLegacy()) {
+ readGroupTitles(context);
+ }
}
/**
@@ -49,6 +68,9 @@ public class ChooserGridLayoutManager extends GridLayoutManager {
*/
public ChooserGridLayoutManager(Context context, int spanCount) {
super(context, spanCount);
+ if (announceShortcutsAndSuggestedAppsLegacy()) {
+ readGroupTitles(context);
+ }
}
/**
@@ -61,6 +83,27 @@ public class ChooserGridLayoutManager extends GridLayoutManager {
public ChooserGridLayoutManager(Context context, int spanCount, int orientation,
boolean reverseLayout) {
super(context, spanCount, orientation, reverseLayout);
+ if (announceShortcutsAndSuggestedAppsLegacy()) {
+ readGroupTitles(context);
+ }
+ }
+
+ private void readGroupTitles(Context context) {
+ mShortcutGroupTitle = context.getString(R.string.shortcut_group_a11y_title);
+ mSuggestedAppsGroupTitle = context.getString(R.string.suggested_apps_group_a11y_title);
+ mAllAppListGroupTitle = context.getString(R.string.all_apps_group_a11y_title);
+ }
+
+ @Override
+ public void onAttachedToWindow(RecyclerView view) {
+ super.onAttachedToWindow(view);
+ mRecyclerView = view;
+ }
+
+ @Override
+ public void onDetachedFromWindow(RecyclerView view, RecyclerView.Recycler recycler) {
+ super.onDetachedFromWindow(view, recycler);
+ mRecyclerView = null;
}
@Override
@@ -78,4 +121,89 @@ public class ChooserGridLayoutManager extends GridLayoutManager {
public boolean canScrollVertically() {
return mVerticalScrollEnabled && super.canScrollVertically();
}
+
+ @Override
+ public void onInitializeAccessibilityNodeInfoForItem(
+ RecyclerView.Recycler recycler,
+ RecyclerView.State state,
+ View host,
+ AccessibilityNodeInfo info) {
+ super.onInitializeAccessibilityNodeInfoForItem(recycler, state, host, info);
+ if (announceShortcutsAndSuggestedAppsLegacy() && host instanceof ViewGroup) {
+ if (host.getId() == R.id.shortcuts_container) {
+ info.setClassName(GridView.class.getName());
+ info.setContainerTitle(mShortcutGroupTitle);
+ info.setCollectionInfo(createShortcutsA11yCollectionInfo((ViewGroup) host));
+ } else if (host.getId() == R.id.chooser_row) {
+ RecyclerView.Adapter adapter =
+ mRecyclerView == null ? null : mRecyclerView.getAdapter();
+ ChooserListAdapter gridAdapter = adapter instanceof ChooserGridAdapter
+ ? ((ChooserGridAdapter) adapter).getListAdapter()
+ : null;
+ info.setClassName(GridView.class.getName());
+ info.setCollectionInfo(createSuggestedAppsA11yCollectionInfo((ViewGroup) host));
+ if (gridAdapter == null || gridAdapter.getAlphaTargetCount() > 0) {
+ info.setContainerTitle(mSuggestedAppsGroupTitle);
+ } else {
+ // if all applications fit into one row, they will be put into the suggested
+ // applications group.
+ info.setContainerTitle(mAllAppListGroupTitle);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void onInitializeAccessibilityNodeInfo(RecyclerView.Recycler recycler,
+ RecyclerView.State state, AccessibilityNodeInfo info) {
+ super.onInitializeAccessibilityNodeInfo(recycler, state, info);
+ if (announceShortcutsAndSuggestedAppsLegacy()) {
+ info.setContainerTitle(mAllAppListGroupTitle);
+ }
+ }
+
+ @Override
+ public boolean isLayoutHierarchical(RecyclerView.Recycler recycler, RecyclerView.State state) {
+ return announceShortcutsAndSuggestedAppsLegacy()
+ || super.isLayoutHierarchical(recycler, state);
+ }
+
+ private CollectionInfo createShortcutsA11yCollectionInfo(ViewGroup container) {
+ int rowCount = 0;
+ int columnCount = 0;
+ for (int i = 0; i < container.getChildCount(); i++) {
+ View row = container.getChildAt(i);
+ int rowColumnCount = 0;
+ if (row instanceof ViewGroup rowGroup && row.getVisibility() == View.VISIBLE) {
+ for (int j = 0; j < rowGroup.getChildCount(); j++) {
+ View v = rowGroup.getChildAt(j);
+ if (v != null && v.getVisibility() == View.VISIBLE) {
+ rowColumnCount++;
+ if (v instanceof TextView) {
+ // A special case of the no-targets message that also contains an
+ // off-screen item (which looks like a bug).
+ rowColumnCount = 1;
+ break;
+ }
+ }
+ }
+ }
+ if (rowColumnCount > 0) {
+ rowCount++;
+ columnCount = Math.max(columnCount, rowColumnCount);
+ }
+ }
+ return CollectionInfo.obtain(rowCount, columnCount, false);
+ }
+
+ private CollectionInfo createSuggestedAppsA11yCollectionInfo(ViewGroup container) {
+ int columnCount = 0;
+ for (int i = 0; i < container.getChildCount(); i++) {
+ View v = container.getChildAt(i);
+ if (v.getVisibility() == View.VISIBLE) {
+ columnCount++;
+ }
+ }
+ return CollectionInfo.obtain(1, columnCount, false);
+ }
}
diff --git a/core/java/com/android/internal/content/NativeLibraryHelper.java b/core/java/com/android/internal/content/NativeLibraryHelper.java
index e170d6652863..8c64750b66e4 100644
--- a/core/java/com/android/internal/content/NativeLibraryHelper.java
+++ b/core/java/com/android/internal/content/NativeLibraryHelper.java
@@ -85,6 +85,8 @@ public class NativeLibraryHelper {
final boolean extractNativeLibs;
final boolean debuggable;
+ final boolean pageSizeCompatDisabled;
+
public static Handle create(File packageFile) throws IOException {
final ParseTypeImpl input = ParseTypeImpl.forDefaultParsing();
final ParseResult<PackageLite> ret = ApkLiteParseUtils.parsePackageLite(input.reset(),
@@ -97,12 +99,15 @@ public class NativeLibraryHelper {
}
public static Handle create(PackageLite lite) throws IOException {
+ boolean isPageSizeCompatDisabled = lite.getPageSizeCompat()
+ == ApplicationInfo.PAGE_SIZE_APP_COMPAT_FLAG_MANIFEST_OVERRIDE_DISABLED;
return create(lite.getAllApkPaths(), lite.isMultiArch(), lite.isExtractNativeLibs(),
- lite.isDebuggable());
+ lite.isDebuggable(), isPageSizeCompatDisabled);
}
public static Handle create(List<String> codePaths, boolean multiArch,
- boolean extractNativeLibs, boolean debuggable) throws IOException {
+ boolean extractNativeLibs, boolean debuggable, boolean isPageSizeCompatDisabled)
+ throws IOException {
final int size = codePaths.size();
final String[] apkPaths = new String[size];
final long[] apkHandles = new long[size];
@@ -119,7 +124,8 @@ public class NativeLibraryHelper {
}
}
- return new Handle(apkPaths, apkHandles, multiArch, extractNativeLibs, debuggable);
+ return new Handle(apkPaths, apkHandles, multiArch, extractNativeLibs, debuggable,
+ isPageSizeCompatDisabled);
}
public static Handle createFd(PackageLite lite, FileDescriptor fd) throws IOException {
@@ -130,17 +136,21 @@ public class NativeLibraryHelper {
throw new IOException("Unable to open APK " + path + " from fd " + fd);
}
+ boolean isPageSizeCompatDisabled = lite.getPageSizeCompat()
+ == ApplicationInfo.PAGE_SIZE_APP_COMPAT_FLAG_MANIFEST_OVERRIDE_DISABLED;
+
return new Handle(new String[]{path}, apkHandles, lite.isMultiArch(),
- lite.isExtractNativeLibs(), lite.isDebuggable());
+ lite.isExtractNativeLibs(), lite.isDebuggable(), isPageSizeCompatDisabled);
}
Handle(String[] apkPaths, long[] apkHandles, boolean multiArch,
- boolean extractNativeLibs, boolean debuggable) {
+ boolean extractNativeLibs, boolean debuggable, boolean isPageSizeCompatDisabled) {
this.apkPaths = apkPaths;
this.apkHandles = apkHandles;
this.multiArch = multiArch;
this.extractNativeLibs = extractNativeLibs;
this.debuggable = debuggable;
+ this.pageSizeCompatDisabled = isPageSizeCompatDisabled;
mGuard.open("close");
}
@@ -175,7 +185,8 @@ public class NativeLibraryHelper {
private static native long nativeSumNativeBinaries(long handle, String cpuAbi);
private native static int nativeCopyNativeBinaries(long handle, String sharedLibraryPath,
- String abiToCopy, boolean extractNativeLibs, boolean debuggable);
+ String abiToCopy, boolean extractNativeLibs, boolean debuggable,
+ boolean pageSizeCompatDisabled);
private static native int nativeCheckAlignment(
long handle,
@@ -203,7 +214,7 @@ public class NativeLibraryHelper {
public static int copyNativeBinaries(Handle handle, File sharedLibraryDir, String abi) {
for (long apkHandle : handle.apkHandles) {
int res = nativeCopyNativeBinaries(apkHandle, sharedLibraryDir.getPath(), abi,
- handle.extractNativeLibs, handle.debuggable);
+ handle.extractNativeLibs, handle.debuggable, handle.pageSizeCompatDisabled);
if (res != INSTALL_SUCCEEDED) {
return res;
}
diff --git a/core/java/com/android/internal/jank/Cuj.java b/core/java/com/android/internal/jank/Cuj.java
index b7eeb7cae6e0..7c5335cc753c 100644
--- a/core/java/com/android/internal/jank/Cuj.java
+++ b/core/java/com/android/internal/jank/Cuj.java
@@ -300,9 +300,14 @@ public class Cuj {
*/
public static final int CUJ_DESKTOP_MODE_KEYBOARD_QUICK_SWITCH_APP_LAUNCH = 125;
+ /** Track work utility view animation expanding when scrolling up app list. */
+ public static final int CUJ_LAUNCHER_WORK_UTILITY_VIEW_EXPAND = 126;
+
+ /** Track work utility view animation shrinking when scrolling down app list. */
+ public static final int CUJ_LAUNCHER_WORK_UTILITY_VIEW_SHRINK = 127;
+
// When adding a CUJ, update this and make sure to also update CUJ_TO_STATSD_INTERACTION_TYPE.
- @VisibleForTesting static final int LAST_CUJ =
- CUJ_DESKTOP_MODE_KEYBOARD_QUICK_SWITCH_APP_LAUNCH;
+ @VisibleForTesting static final int LAST_CUJ = CUJ_LAUNCHER_WORK_UTILITY_VIEW_SHRINK;
/** @hide */
@IntDef({
@@ -419,7 +424,9 @@ public class Cuj {
CUJ_DESKTOP_MODE_CLOSE_TASK,
CUJ_DESKTOP_MODE_APP_LAUNCH_FROM_INTENT,
CUJ_DESKTOP_MODE_APP_LAUNCH_FROM_ICON,
- CUJ_DESKTOP_MODE_KEYBOARD_QUICK_SWITCH_APP_LAUNCH
+ CUJ_DESKTOP_MODE_KEYBOARD_QUICK_SWITCH_APP_LAUNCH,
+ CUJ_LAUNCHER_WORK_UTILITY_VIEW_EXPAND,
+ CUJ_LAUNCHER_WORK_UTILITY_VIEW_SHRINK
})
@Retention(RetentionPolicy.SOURCE)
public @interface CujType {}
@@ -547,6 +554,8 @@ public class Cuj {
CUJ_TO_STATSD_INTERACTION_TYPE[CUJ_DESKTOP_MODE_APP_LAUNCH_FROM_INTENT] = FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__DESKTOP_MODE_APP_LAUNCH_FROM_INTENT;
CUJ_TO_STATSD_INTERACTION_TYPE[CUJ_DESKTOP_MODE_APP_LAUNCH_FROM_ICON] = FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__DESKTOP_MODE_APP_LAUNCH_FROM_ICON;
CUJ_TO_STATSD_INTERACTION_TYPE[CUJ_DESKTOP_MODE_KEYBOARD_QUICK_SWITCH_APP_LAUNCH] = FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__DESKTOP_MODE_KEYBOARD_QUICK_SWITCH_APP_LAUNCH;
+ CUJ_TO_STATSD_INTERACTION_TYPE[CUJ_LAUNCHER_WORK_UTILITY_VIEW_EXPAND] = FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__LAUNCHER_WORK_UTILITY_VIEW_EXPAND;
+ CUJ_TO_STATSD_INTERACTION_TYPE[CUJ_LAUNCHER_WORK_UTILITY_VIEW_SHRINK] = FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__LAUNCHER_WORK_UTILITY_VIEW_SHRINK;
}
private Cuj() {
@@ -793,6 +802,10 @@ public class Cuj {
return "DESKTOP_MODE_APP_LAUNCH_FROM_ICON";
case CUJ_DESKTOP_MODE_KEYBOARD_QUICK_SWITCH_APP_LAUNCH:
return "DESKTOP_MODE_KEYBOARD_QUICK_SWITCH_APP_LAUNCH";
+ case CUJ_LAUNCHER_WORK_UTILITY_VIEW_EXPAND:
+ return "LAUNCHER_WORK_UTILITY_VIEW_EXPAND";
+ case CUJ_LAUNCHER_WORK_UTILITY_VIEW_SHRINK:
+ return "LAUNCHER_WORK_UTILITY_VIEW_SHRINK";
}
return "UNKNOWN";
}
diff --git a/core/java/com/android/internal/notification/NotificationChannelGroupsHelper.java b/core/java/com/android/internal/notification/NotificationChannelGroupsHelper.java
new file mode 100644
index 000000000000..2bfb19f10807
--- /dev/null
+++ b/core/java/com/android/internal/notification/NotificationChannelGroupsHelper.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.internal.notification;
+
+import static android.app.NotificationChannel.SYSTEM_RESERVED_IDS;
+import static android.app.NotificationManager.IMPORTANCE_NONE;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.app.INotificationManager;
+import android.app.NotificationChannel;
+import android.app.NotificationChannelGroup;
+import android.service.notification.Flags;
+import android.util.ArrayMap;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * NotificationChannelGroupHelper contains helper methods for associating channels with the groups
+ * they belong to, matching by ID.
+ */
+public class NotificationChannelGroupsHelper {
+ /**
+ * Set of parameters passed into
+ * {@link NotificationChannelGroupsHelper#getGroupsWithChannels(Collection, Map, Params)}.
+ *
+ * @param includeDeleted Whether to include deleted channels.
+ * @param includeNonGrouped Whether to include channels that are not associated with a group.
+ * @param includeEmpty Whether to include groups containing no channels.
+ * @param includeAllBlockedWithFilter Whether to include channels that are blocked from
+ * sending notifications along with channels specified by
+ * the filter. This setting only takes effect when
+ * channelFilter is not {@code null}, and if true will
+ * include all blocked channels in the output (regardless
+ * of whether they are included in the filter).
+ * @param channelFilter If non-null, a specific set of channels to include. If a channel
+ * matching this filter is blocked, it will still be included even
+ * if includeAllBlockedWithFilter=false.
+ */
+ public record Params(
+ boolean includeDeleted,
+ boolean includeNonGrouped,
+ boolean includeEmpty,
+ boolean includeAllBlockedWithFilter,
+ Set<String> channelFilter
+ ) {
+ /**
+ * Default set of parameters used to specify the behavior of
+ * {@link INotificationManager#getNotificationChannelGroups(String)}. This will include
+ * output for all groups, including those without channels, but not any ungrouped channels.
+ */
+ public static Params forAllGroups() {
+ return new Params(
+ /* includeDeleted= */ false,
+ /* includeNonGrouped= */ false,
+ /* includeEmpty= */ true,
+ /* includeAllBlockedWithFilter= */ true,
+ /* channelFilter= */ null);
+ }
+
+ /**
+ * Parameters to get groups for all channels, including those not associated with any groups
+ * and optionally including deleted channels as well. Channels not associated with a group
+ * are returned inside a group with id {@code null}.
+ *
+ * @param includeDeleted Whether to include deleted channels.
+ */
+ public static Params forAllChannels(boolean includeDeleted) {
+ return new Params(
+ includeDeleted,
+ /* includeNonGrouped= */ true,
+ /* includeEmpty= */ false,
+ /* includeAllBlockedWithFilter= */ true,
+ /* channelFilter= */ null);
+ }
+
+ /**
+ * Parameters to collect groups only for channels specified by the channel filter, as well
+ * as any blocked channels (independent of whether they exist in the filter).
+ * @param channelFilter Specific set of channels to return.
+ */
+ public static Params onlySpecifiedOrBlockedChannels(Set<String> channelFilter) {
+ return new Params(
+ /* includeDeleted= */ false,
+ /* includeNonGrouped= */ true,
+ /* includeEmpty= */ false,
+ /* includeAllBlockedWithFilter= */ true,
+ channelFilter);
+ }
+ }
+
+ /**
+ * Retrieve the {@link NotificationChannelGroup} object specified by the given groupId, if it
+ * exists, with the list of channels filled in from the provided available channels.
+ *
+ * @param groupId The ID of the group to return.
+ * @param allChannels A list of all channels associated with the package.
+ * @param allGroups A map of group ID -> NotificationChannelGroup objects.
+ */
+ public static @Nullable NotificationChannelGroup getGroupWithChannels(@NonNull String groupId,
+ @NonNull Collection<NotificationChannel> allChannels,
+ @NonNull Map<String, NotificationChannelGroup> allGroups,
+ boolean includeDeleted) {
+ NotificationChannelGroup group = null;
+ if (allGroups.containsKey(groupId)) {
+ group = allGroups.get(groupId).clone();
+ group.setChannels(new ArrayList<>());
+ for (NotificationChannel nc : allChannels) {
+ if (includeDeleted || !nc.isDeleted()) {
+ if (groupId.equals(nc.getGroup())) {
+ group.addChannel(nc);
+ }
+ }
+ }
+ }
+ return group;
+ }
+
+ /**
+ * Returns a list of groups with their associated channels filled in.
+ *
+ * @param allChannels All available channels that may be associated with these groups.
+ * @param allGroups Map of group ID -> {@link NotificationChannelGroup} objects.
+ * @param params Params indicating which channels and which groups to include.
+ */
+ public static @NonNull List<NotificationChannelGroup> getGroupsWithChannels(
+ @NonNull Collection<NotificationChannel> allChannels,
+ @NonNull Map<String, NotificationChannelGroup> allGroups,
+ Params params) {
+ Map<String, NotificationChannelGroup> outputGroups = new ArrayMap<>();
+ NotificationChannelGroup nonGrouped = new NotificationChannelGroup(null, null);
+ for (NotificationChannel nc : allChannels) {
+ boolean includeChannel = (params.includeDeleted || !nc.isDeleted())
+ && (params.channelFilter == null
+ || (params.includeAllBlockedWithFilter
+ && nc.getImportance() == IMPORTANCE_NONE)
+ || params.channelFilter.contains(nc.getId()))
+ && (!Flags.notificationClassification()
+ || !SYSTEM_RESERVED_IDS.contains(nc.getId()));
+ if (includeChannel) {
+ if (nc.getGroup() != null) {
+ if (allGroups.get(nc.getGroup()) != null) {
+ NotificationChannelGroup ncg = outputGroups.get(nc.getGroup());
+ if (ncg == null) {
+ ncg = allGroups.get(nc.getGroup()).clone();
+ ncg.setChannels(new ArrayList<>());
+ outputGroups.put(nc.getGroup(), ncg);
+ }
+ ncg.addChannel(nc);
+ }
+ } else {
+ nonGrouped.addChannel(nc);
+ }
+ }
+ }
+ if (params.includeNonGrouped && nonGrouped.getChannels().size() > 0) {
+ outputGroups.put(null, nonGrouped);
+ }
+ if (params.includeEmpty) {
+ for (NotificationChannelGroup group : allGroups.values()) {
+ if (!outputGroups.containsKey(group.getId())) {
+ outputGroups.put(group.getId(), group);
+ }
+ }
+ }
+ return new ArrayList<>(outputGroups.values());
+ }
+}
diff --git a/core/java/com/android/internal/os/BatteryStatsHistory.java b/core/java/com/android/internal/os/BatteryStatsHistory.java
index f49c5f1c2b0f..85794d43df3d 100644
--- a/core/java/com/android/internal/os/BatteryStatsHistory.java
+++ b/core/java/com/android/internal/os/BatteryStatsHistory.java
@@ -34,45 +34,38 @@ import android.os.Build;
import android.os.Parcel;
import android.os.ParcelFormatException;
import android.os.Process;
-import android.os.StatFs;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.Trace;
import android.util.ArraySet;
-import android.util.AtomicFile;
import android.util.Slog;
import android.util.SparseArray;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.ConcurrentModificationException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.concurrent.locks.ReentrantLock;
/**
* BatteryStatsHistory encapsulates battery history files.
* Battery history record is appended into buffer {@link #mHistoryBuffer} and backed up into
- * {@link #mActiveFile}.
- * When {@link #mHistoryBuffer} size reaches {@link BatteryStatsImpl.Constants#MAX_HISTORY_BUFFER},
+ * {@link #mActiveFragment}.
+ * When {@link #mHistoryBuffer} size reaches {@link #mMaxHistoryBufferSize},
* current mActiveFile is closed and a new mActiveFile is open.
* History files are under directory /data/system/battery-history/.
- * History files have name battery-history-<num>.bin. The file number <num> starts from zero and
- * grows sequentially.
+ * History files have name &lt;num&gt;.bf. The file number &lt;num&gt; corresponds to the
+ * monotonic time when the file was started.
* The mActiveFile is always the highest numbered history file.
* The lowest number file is always the oldest file.
* The highest number file is always the newest file.
- * The file number grows sequentially and we never skip number.
- * When count of history files exceeds {@link BatteryStatsImpl.Constants#MAX_HISTORY_FILES},
+ * The file number grows monotonically and we never skip number.
+ * When the total size of history files exceeds the maximum allowed value,
* the lowest numbered file is deleted and a new file is open.
*
* All interfaces in BatteryStatsHistory should only be called by BatteryStatsImpl and protected by
@@ -84,11 +77,7 @@ public class BatteryStatsHistory {
private static final String TAG = "BatteryStatsHistory";
// Current on-disk Parcel version. Must be updated when the format of the parcelable changes
- private static final int VERSION = 212;
-
- private static final String HISTORY_DIR = "battery-history";
- private static final String FILE_SUFFIX = ".bh";
- private static final int MIN_FREE_SPACE = 100 * 1024 * 1024;
+ private static final int VERSION = 213;
// Part of initial delta int that specifies the time delta.
static final int DELTA_TIME_MASK = 0x7ffff;
@@ -120,10 +109,27 @@ public class BatteryStatsHistory {
static final int STATE_BATTERY_PLUG_MASK = 0x00000003;
static final int STATE_BATTERY_PLUG_SHIFT = 24;
+ // Pieces of data that are packed into the battery level int
+ static final int BATTERY_LEVEL_LEVEL_MASK = 0xFF000000;
+ static final int BATTERY_LEVEL_LEVEL_SHIFT = 24;
+ static final int BATTERY_LEVEL_TEMP_MASK = 0x00FF8000;
+ static final int BATTERY_LEVEL_TEMP_SHIFT = 15;
+ static final int BATTERY_LEVEL_VOLT_MASK = 0x00007FFC;
+ static final int BATTERY_LEVEL_VOLT_SHIFT = 2;
+ // Flag indicating that the voltage and temperature deltas are too large to
+ // store in the battery level int and full volt/temp values are instead
+ // stored in a following int.
+ static final int BATTERY_LEVEL_OVERFLOW_FLAG = 0x00000002;
// We use the low bit of the battery state int to indicate that we have full details
// from a battery level change.
static final int BATTERY_LEVEL_DETAILS_FLAG = 0x00000001;
+ // Pieces of data that are packed into the extended battery level int
+ static final int BATTERY_LEVEL2_TEMP_MASK = 0xFFFF0000;
+ static final int BATTERY_LEVEL2_TEMP_SHIFT = 16;
+ static final int BATTERY_LEVEL2_VOLT_MASK = 0x0000FFFF;
+ static final int BATTERY_LEVEL2_VOLT_SHIFT = 0;
+
// Flag in history tag index: indicates that this is the first occurrence of this tag,
// therefore the tag value is written in the parcel
static final int TAG_FIRST_OCCURRENCE_FLAG = 0x8000;
@@ -135,7 +141,7 @@ public class BatteryStatsHistory {
// For state1, trace everything except the wakelock bit (which can race with
// suspend) and the running bit (which isn't meaningful in traces).
static final int STATE1_TRACE_MASK = ~(HistoryItem.STATE_WAKE_LOCK_FLAG
- | HistoryItem.STATE_CPU_RUNNING_FLAG);
+ | HistoryItem.STATE_CPU_RUNNING_FLAG);
// For state2, trace all bit changes.
static final int STATE2_TRACE_MASK = ~0;
@@ -146,22 +152,132 @@ public class BatteryStatsHistory {
*/
private static final int EXTRA_BUFFER_SIZE_WHEN_DIR_LOCKED = 100_000;
+ public abstract static class BatteryHistoryFragment
+ implements Comparable<BatteryHistoryFragment> {
+ public final long monotonicTimeMs;
+
+ public BatteryHistoryFragment(long monotonicTimeMs) {
+ this.monotonicTimeMs = monotonicTimeMs;
+ }
+
+ @Override
+ public int compareTo(BatteryHistoryFragment o) {
+ return Long.compare(monotonicTimeMs, o.monotonicTimeMs);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ return monotonicTimeMs == ((BatteryHistoryFragment) o).monotonicTimeMs;
+ }
+
+ @Override
+ public int hashCode() {
+ return Long.hashCode(monotonicTimeMs);
+ }
+ }
+
+ /**
+ * Persistent storage for battery history fragments
+ */
+ public interface BatteryHistoryStore {
+ /**
+ * Returns the table of contents, in the chronological order.
+ */
+ List<BatteryHistoryFragment> getFragments();
+
+ /**
+ * Returns the earliest available fragment
+ */
+ @Nullable
+ BatteryHistoryFragment getEarliestFragment();
+
+ /**
+ * Returns the latest available fragment
+ */
+ @Nullable
+ BatteryHistoryFragment getLatestFragment();
+
+ /**
+ * Given a fragment, returns the earliest fragment that follows it whose monotonic
+ * start time falls within the specified range. `startTimeMs` is inclusive, `endTimeMs`
+ * is exclusive.
+ */
+ @Nullable
+ BatteryHistoryFragment getNextFragment(BatteryHistoryFragment current, long startTimeMs,
+ long endTimeMs);
+
+ /**
+ * Acquires a lock on the entire store.
+ */
+ void lock();
+
+ /**
+ * Acquires a lock unless the store is already locked by a different thread. Returns true
+ * if the lock has been successfully acquired.
+ */
+ boolean tryLock();
+
+ /**
+ * Unlocks the store.
+ */
+ void unlock();
+
+ /**
+ * Returns true if the store is currently locked.
+ */
+ boolean isLocked();
+
+ /**
+ * Returns the total amount of storage occupied by history fragments, in bytes.
+ */
+ int getSize();
+
+ /**
+ * Returns true if the store contains any history fragments, excluding the currently
+ * active partial fragment.
+ */
+ boolean hasCompletedFragments();
+
+ /**
+ * Creates a new empty history fragment starting at the specified time.
+ */
+ BatteryHistoryFragment createFragment(long monotonicStartTime);
+
+ /**
+ * Writes a fragment to disk as raw bytes.
+ *
+ * @param fragmentComplete indicates if this fragment is done or still partial.
+ */
+ void writeFragment(BatteryHistoryFragment fragment, @NonNull byte[] bytes,
+ boolean fragmentComplete);
+
+ /**
+ * Reads a fragment as raw bytes.
+ */
+ @Nullable
+ byte[] readFragment(BatteryHistoryFragment fragment);
+
+ /**
+ * Removes all persistent fragments
+ */
+ void reset();
+ }
+
private final Parcel mHistoryBuffer;
- private final File mSystemDir;
private final HistoryStepDetailsCalculator mStepDetailsCalculator;
private final Clock mClock;
private int mMaxHistoryBufferSize;
/**
- * The active history file that the history buffer is backed up into.
+ * The active history fragment that the history buffer is backed up into.
*/
- private AtomicFile mActiveFile;
+ private BatteryHistoryFragment mActiveFragment;
/**
- * A list of history files with increasing timestamps.
+ * Persistent storage of history files.
*/
- private final BatteryHistoryDirectory mHistoryDir;
+ private final BatteryHistoryStore mStore;
/**
* A list of small history parcels, used when BatteryStatsImpl object is created from
@@ -172,7 +288,7 @@ public class BatteryStatsHistory {
/**
* When iterating history files, the current file index.
*/
- private BatteryHistoryFile mCurrentFile;
+ private BatteryHistoryFragment mCurrentFragment;
/**
* When iterating history files, the current file parcel.
@@ -221,326 +337,6 @@ public class BatteryStatsHistory {
private int mIteratorCookie;
private final BatteryStatsHistory mWritableHistory;
- private static class BatteryHistoryFile implements Comparable<BatteryHistoryFile> {
- public final long monotonicTimeMs;
- public final AtomicFile atomicFile;
-
- private BatteryHistoryFile(File directory, long monotonicTimeMs) {
- this.monotonicTimeMs = monotonicTimeMs;
- atomicFile = new AtomicFile(new File(directory, monotonicTimeMs + FILE_SUFFIX));
- }
-
- @Override
- public int compareTo(BatteryHistoryFile o) {
- return Long.compare(monotonicTimeMs, o.monotonicTimeMs);
- }
-
- @Override
- public boolean equals(Object o) {
- return monotonicTimeMs == ((BatteryHistoryFile) o).monotonicTimeMs;
- }
-
- @Override
- public int hashCode() {
- return Long.hashCode(monotonicTimeMs);
- }
-
- @Override
- public String toString() {
- return atomicFile.getBaseFile().toString();
- }
- }
-
- private static class BatteryHistoryDirectory {
- private final File mDirectory;
- private final MonotonicClock mMonotonicClock;
- private int mMaxHistorySize;
- private final List<BatteryHistoryFile> mHistoryFiles = new ArrayList<>();
- private final ReentrantLock mLock = new ReentrantLock();
- private boolean mCleanupNeeded;
-
- BatteryHistoryDirectory(File directory, MonotonicClock monotonicClock, int maxHistorySize) {
- mDirectory = directory;
- mMonotonicClock = monotonicClock;
- mMaxHistorySize = maxHistorySize;
- if (mMaxHistorySize == 0) {
- Slog.w(TAG, "mMaxHistorySize should not be zero when writing history");
- }
- }
-
- void setMaxHistorySize(int maxHistorySize) {
- mMaxHistorySize = maxHistorySize;
- cleanup();
- }
-
- void lock() {
- mLock.lock();
- }
-
- boolean tryLock() {
- return mLock.tryLock();
- }
-
- void unlock() {
- mLock.unlock();
- if (mCleanupNeeded) {
- cleanup();
- }
- }
-
- boolean isLocked() {
- return mLock.isLocked();
- }
-
- void load() {
- Trace.asyncTraceBegin(TRACE_TAG_SYSTEM_SERVER, "BatteryStatsHistory.load", 0);
- mDirectory.mkdirs();
- if (!mDirectory.exists()) {
- Slog.wtf(TAG, "HistoryDir does not exist:" + mDirectory.getPath());
- }
-
- final List<File> toRemove = new ArrayList<>();
- final Set<BatteryHistoryFile> dedup = new ArraySet<>();
- mDirectory.listFiles((dir, name) -> {
- final int b = name.lastIndexOf(FILE_SUFFIX);
- if (b <= 0) {
- toRemove.add(new File(dir, name));
- return false;
- }
- try {
- long monotonicTime = Long.parseLong(name.substring(0, b));
- dedup.add(new BatteryHistoryFile(mDirectory, monotonicTime));
- } catch (NumberFormatException e) {
- toRemove.add(new File(dir, name));
- return false;
- }
- return true;
- });
- if (!dedup.isEmpty()) {
- mHistoryFiles.addAll(dedup);
- Collections.sort(mHistoryFiles);
- }
- if (!toRemove.isEmpty()) {
- // Clear out legacy history files, which did not follow the X-Y.bin naming format.
- BackgroundThread.getHandler().post(() -> {
- lock();
- try {
- for (File file : toRemove) {
- file.delete();
- }
- } finally {
- unlock();
- Trace.asyncTraceEnd(TRACE_TAG_SYSTEM_SERVER, "BatteryStatsHistory.load", 0);
- }
- });
- } else {
- Trace.asyncTraceEnd(TRACE_TAG_SYSTEM_SERVER, "BatteryStatsHistory.load", 0);
- }
- }
-
- List<String> getFileNames() {
- lock();
- try {
- List<String> names = new ArrayList<>();
- for (BatteryHistoryFile historyFile : mHistoryFiles) {
- names.add(historyFile.atomicFile.getBaseFile().getName());
- }
- return names;
- } finally {
- unlock();
- }
- }
-
- @Nullable
- BatteryHistoryFile getFirstFile() {
- lock();
- try {
- if (!mHistoryFiles.isEmpty()) {
- return mHistoryFiles.get(0);
- }
- return null;
- } finally {
- unlock();
- }
- }
-
- @Nullable
- BatteryHistoryFile getLastFile() {
- lock();
- try {
- if (!mHistoryFiles.isEmpty()) {
- return mHistoryFiles.get(mHistoryFiles.size() - 1);
- }
- return null;
- } finally {
- unlock();
- }
- }
-
- @Nullable
- BatteryHistoryFile getNextFile(BatteryHistoryFile current, long startTimeMs,
- long endTimeMs) {
- if (!mLock.isHeldByCurrentThread()) {
- throw new IllegalStateException("Iterating battery history without a lock");
- }
-
- int nextFileIndex = 0;
- int firstFileIndex = 0;
- // skip the last file because its data is in history buffer.
- int lastFileIndex = mHistoryFiles.size() - 2;
- for (int i = lastFileIndex; i >= 0; i--) {
- BatteryHistoryFile file = mHistoryFiles.get(i);
- if (current != null && file.monotonicTimeMs == current.monotonicTimeMs) {
- nextFileIndex = i + 1;
- }
- if (file.monotonicTimeMs > endTimeMs) {
- lastFileIndex = i - 1;
- }
- if (file.monotonicTimeMs <= startTimeMs) {
- firstFileIndex = i;
- break;
- }
- }
-
- if (nextFileIndex < firstFileIndex) {
- nextFileIndex = firstFileIndex;
- }
-
- if (nextFileIndex <= lastFileIndex) {
- return mHistoryFiles.get(nextFileIndex);
- }
-
- return null;
- }
-
- BatteryHistoryFile makeBatteryHistoryFile() {
- BatteryHistoryFile file = new BatteryHistoryFile(mDirectory,
- mMonotonicClock.monotonicTime());
- lock();
- try {
- mHistoryFiles.add(file);
- } finally {
- unlock();
- }
- return file;
- }
-
- void writeToParcel(Parcel out, boolean useBlobs,
- long preferredEarliestIncludedTimestampMs) {
- Trace.traceBegin(TRACE_TAG_SYSTEM_SERVER, "BatteryStatsHistory.writeToParcel");
- lock();
- try {
- final long start = SystemClock.uptimeMillis();
- for (int i = 0; i < mHistoryFiles.size() - 1; i++) {
- long monotonicEndTime = Long.MAX_VALUE;
- if (i < mHistoryFiles.size() - 1) {
- monotonicEndTime = mHistoryFiles.get(i + 1).monotonicTimeMs;
- }
-
- if (monotonicEndTime < preferredEarliestIncludedTimestampMs) {
- continue;
- }
-
- AtomicFile file = mHistoryFiles.get(i).atomicFile;
- byte[] raw = new byte[0];
- try {
- raw = file.readFully();
- } catch (Exception e) {
- Slog.e(TAG, "Error reading file " + file.getBaseFile().getPath(), e);
- }
-
- out.writeBoolean(true);
- if (useBlobs) {
- out.writeBlob(raw);
- } else {
- // Avoiding blobs in the check-in file for compatibility
- out.writeByteArray(raw);
- }
- }
- out.writeBoolean(false);
- if (DEBUG) {
- Slog.d(TAG,
- "writeToParcel duration ms:" + (SystemClock.uptimeMillis() - start));
- }
- } finally {
- unlock();
- Trace.traceEnd(TRACE_TAG_SYSTEM_SERVER);
- }
- }
-
- int getFileCount() {
- lock();
- try {
- return mHistoryFiles.size();
- } finally {
- unlock();
- }
- }
-
- int getSize() {
- lock();
- try {
- int ret = 0;
- for (int i = 0; i < mHistoryFiles.size() - 1; i++) {
- ret += (int) mHistoryFiles.get(i).atomicFile.getBaseFile().length();
- }
- return ret;
- } finally {
- unlock();
- }
- }
-
- void reset() {
- lock();
- try {
- if (DEBUG) Slog.i(TAG, "********** CLEARING HISTORY!");
- for (BatteryHistoryFile file : mHistoryFiles) {
- file.atomicFile.delete();
- }
- mHistoryFiles.clear();
- } finally {
- unlock();
- }
- }
-
- private void cleanup() {
- Trace.traceBegin(TRACE_TAG_SYSTEM_SERVER, "BatteryStatsHistory.cleanup");
- try {
- if (mDirectory == null) {
- return;
- }
-
- if (!tryLock()) {
- mCleanupNeeded = true;
- return;
- }
-
- mCleanupNeeded = false;
- try {
- // if free disk space is less than 100MB, delete oldest history file.
- if (!hasFreeDiskSpace(mDirectory)) {
- BatteryHistoryFile oldest = mHistoryFiles.remove(0);
- oldest.atomicFile.delete();
- }
-
- // if there is more history stored than allowed, delete oldest history files.
- int size = getSize();
- while (size > mMaxHistorySize) {
- BatteryHistoryFile oldest = mHistoryFiles.get(0);
- int length = (int) oldest.atomicFile.getBaseFile().length();
- oldest.atomicFile.delete();
- mHistoryFiles.remove(0);
- size -= length;
- }
- } finally {
- unlock();
- }
- } finally {
- Trace.traceEnd(TRACE_TAG_SYSTEM_SERVER);
- }
- }
- }
-
/**
* A delegate responsible for computing additional details for a step in battery history.
*/
@@ -621,24 +417,22 @@ public class BatteryStatsHistory {
/**
* Constructor
*
- * @param systemDir typically /data/system
- * @param maxHistorySize the largest amount of battery history to keep on disk
* @param maxHistoryBufferSize the most amount of RAM to used for buffering of history steps
*/
- public BatteryStatsHistory(Parcel historyBuffer, File systemDir,
- int maxHistorySize, int maxHistoryBufferSize,
- HistoryStepDetailsCalculator stepDetailsCalculator, Clock clock,
- MonotonicClock monotonicClock, TraceDelegate tracer, EventLogger eventLogger) {
- this(historyBuffer, systemDir, maxHistorySize, maxHistoryBufferSize, stepDetailsCalculator,
+ public BatteryStatsHistory(Parcel historyBuffer, int maxHistoryBufferSize,
+ @Nullable BatteryHistoryStore store, HistoryStepDetailsCalculator stepDetailsCalculator,
+ Clock clock, MonotonicClock monotonicClock, TraceDelegate tracer,
+ EventLogger eventLogger) {
+ this(historyBuffer, maxHistoryBufferSize, store,
+ stepDetailsCalculator,
clock, monotonicClock, tracer, eventLogger, null);
}
- private BatteryStatsHistory(@Nullable Parcel historyBuffer, @Nullable File systemDir,
- int maxHistorySize, int maxHistoryBufferSize,
+ private BatteryStatsHistory(@Nullable Parcel historyBuffer, int maxHistoryBufferSize,
+ @Nullable BatteryHistoryStore store,
@NonNull HistoryStepDetailsCalculator stepDetailsCalculator, @NonNull Clock clock,
@NonNull MonotonicClock monotonicClock, @NonNull TraceDelegate tracer,
@NonNull EventLogger eventLogger, @Nullable BatteryStatsHistory writableHistory) {
- mSystemDir = systemDir;
mMaxHistoryBufferSize = maxHistoryBufferSize;
mStepDetailsCalculator = stepDetailsCalculator;
mTracer = tracer;
@@ -659,18 +453,16 @@ public class BatteryStatsHistory {
}
if (writableHistory != null) {
- mHistoryDir = writableHistory.mHistoryDir;
- } else if (systemDir != null) {
- mHistoryDir = new BatteryHistoryDirectory(new File(systemDir, HISTORY_DIR),
- monotonicClock, maxHistorySize);
- mHistoryDir.load();
- BatteryHistoryFile activeFile = mHistoryDir.getLastFile();
- if (activeFile == null) {
- activeFile = mHistoryDir.makeBatteryHistoryFile();
- }
- setActiveFile(activeFile);
+ mStore = writableHistory.mStore;
} else {
- mHistoryDir = null;
+ mStore = store;
+ if (mStore != null) {
+ BatteryHistoryFragment activeFile = mStore.getLatestFragment();
+ if (activeFile == null) {
+ activeFile = mStore.createFragment(mMonotonicClock.monotonicTime());
+ }
+ setActiveFragment(activeFile);
+ }
}
}
@@ -681,8 +473,7 @@ public class BatteryStatsHistory {
private BatteryStatsHistory(Parcel parcel) {
mClock = Clock.SYSTEM_CLOCK;
mTracer = null;
- mSystemDir = null;
- mHistoryDir = null;
+ mStore = null;
mStepDetailsCalculator = null;
mEventLogger = new EventLogger();
mWritableHistory = null;
@@ -718,15 +509,6 @@ public class BatteryStatsHistory {
}
/**
- * Changes the maximum amount of history to be kept on disk.
- */
- public void setMaxHistorySize(int maxHistorySize) {
- if (mHistoryDir != null) {
- mHistoryDir.setMaxHistorySize(maxHistorySize);
- }
- }
-
- /**
* Changes the maximum size of the history buffer, in bytes.
*/
public void setMaxHistoryBufferSize(int maxHistoryBufferSize) {
@@ -745,8 +527,8 @@ public class BatteryStatsHistory {
Parcel historyBufferCopy = Parcel.obtain();
historyBufferCopy.appendFrom(mHistoryBuffer, 0, mHistoryBuffer.dataSize());
- return new BatteryStatsHistory(historyBufferCopy, mSystemDir, 0, 0, null, null,
- null, null, mEventLogger, this);
+ return new BatteryStatsHistory(historyBufferCopy, 0, mStore, null,
+ null, null, null, mEventLogger, this);
}
} finally {
Trace.traceEnd(TRACE_TAG_SYSTEM_SERVER);
@@ -757,45 +539,40 @@ public class BatteryStatsHistory {
* Returns true if this instance only supports reading history.
*/
public boolean isReadOnly() {
- return !mMutable || mActiveFile == null/* || mHistoryDir == null*/;
+ return !mMutable || mActiveFragment == null || mStore == null;
}
/**
* Set the active file that mHistoryBuffer is backed up into.
*/
- private void setActiveFile(BatteryHistoryFile file) {
- mActiveFile = file.atomicFile;
+ private void setActiveFragment(BatteryHistoryFragment file) {
+ mActiveFragment = file;
if (DEBUG) {
- Slog.d(TAG, "activeHistoryFile:" + mActiveFile.getBaseFile().getPath());
+ Slog.d(TAG, "activeHistoryFile:" + mActiveFragment);
}
}
/**
- * When {@link #mHistoryBuffer} reaches {@link BatteryStatsImpl.Constants#MAX_HISTORY_BUFFER},
- * create next history file.
+ * When {@link #mHistoryBuffer} reaches {@link #mMaxHistoryBufferSize},
+ * create next history fragment.
*/
- public void startNextFile(long elapsedRealtimeMs) {
+ public void startNextFragment(long elapsedRealtimeMs) {
synchronized (this) {
- startNextFileLocked(elapsedRealtimeMs);
+ startNextFragmentLocked(elapsedRealtimeMs);
}
}
@GuardedBy("this")
- private void startNextFileLocked(long elapsedRealtimeMs) {
+ private void startNextFragmentLocked(long elapsedRealtimeMs) {
final long start = SystemClock.uptimeMillis();
- writeHistory();
+ writeHistory(true /* fragmentComplete */);
if (DEBUG) {
Slog.d(TAG, "writeHistory took ms:" + (SystemClock.uptimeMillis() - start));
}
- setActiveFile(mHistoryDir.makeBatteryHistoryFile());
- try {
- mActiveFile.getBaseFile().createNewFile();
- } catch (IOException e) {
- Slog.e(TAG, "Could not create history file: " + mActiveFile.getBaseFile());
- }
-
- mHistoryBufferStartTime = mMonotonicClock.monotonicTime(elapsedRealtimeMs);
+ long monotonicStartTime = mMonotonicClock.monotonicTime(elapsedRealtimeMs);
+ setActiveFragment(mStore.createFragment(monotonicStartTime));
+ mHistoryBufferStartTime = monotonicStartTime;
mHistoryBuffer.setDataSize(0);
mHistoryBuffer.setDataPosition(0);
mHistoryBuffer.setDataCapacity(mMaxHistoryBufferSize / 2);
@@ -810,7 +587,6 @@ public class BatteryStatsHistory {
}
mWrittenPowerStatsDescriptors.clear();
- mHistoryDir.cleanup();
}
/**
@@ -818,7 +594,7 @@ public class BatteryStatsHistory {
* currently being read.
*/
public boolean isResetEnabled() {
- return mHistoryDir == null || !mHistoryDir.isLocked();
+ return mStore == null || !mStore.isLocked();
}
/**
@@ -827,11 +603,11 @@ public class BatteryStatsHistory {
*/
public void reset() {
synchronized (this) {
- if (mHistoryDir != null) {
- mHistoryDir.reset();
- setActiveFile(mHistoryDir.makeBatteryHistoryFile());
- }
initHistoryBuffer();
+ if (mStore != null) {
+ mStore.reset();
+ setActiveFragment(mStore.createFragment(mHistoryBufferStartTime));
+ }
}
}
@@ -840,9 +616,9 @@ public class BatteryStatsHistory {
*/
public long getStartTime() {
synchronized (this) {
- BatteryHistoryFile file = mHistoryDir.getFirstFile();
- if (file != null) {
- return file.monotonicTimeMs;
+ BatteryHistoryFragment firstFragment = mStore.getEarliestFragment();
+ if (firstFragment != null) {
+ return firstFragment.monotonicTimeMs;
} else {
return mHistoryBufferStartTime;
}
@@ -863,10 +639,10 @@ public class BatteryStatsHistory {
return copy().iterate(startTimeMs, endTimeMs);
}
- if (mHistoryDir != null) {
- mHistoryDir.lock();
+ if (mStore != null) {
+ mStore.lock();
}
- mCurrentFile = null;
+ mCurrentFragment = null;
mCurrentParcel = null;
mCurrentParcelEnd = 0;
mParcelIndex = 0;
@@ -883,8 +659,8 @@ public class BatteryStatsHistory {
*/
void iteratorFinished() {
mHistoryBuffer.setDataPosition(mHistoryBuffer.dataSize());
- if (mHistoryDir != null) {
- mHistoryDir.unlock();
+ if (mStore != null) {
+ mStore.unlock();
}
Trace.asyncTraceEnd(TRACE_TAG_SYSTEM_SERVER, "BatteryStatsHistory.iterate",
mIteratorCookie);
@@ -918,27 +694,26 @@ public class BatteryStatsHistory {
}
}
- if (mHistoryDir != null) {
- BatteryHistoryFile nextFile = mHistoryDir.getNextFile(mCurrentFile, startTimeMs,
+ if (mStore != null) {
+ BatteryHistoryFragment next = mStore.getNextFragment(mCurrentFragment, startTimeMs,
endTimeMs);
- while (nextFile != null) {
+ while (next != null) {
mCurrentParcel = null;
mCurrentParcelEnd = 0;
final Parcel p = Parcel.obtain();
- AtomicFile file = nextFile.atomicFile;
- if (readFileToParcel(p, file)) {
+ if (readFragmentToParcel(p, next)) {
int bufSize = p.readInt();
int curPos = p.dataPosition();
mCurrentParcelEnd = curPos + bufSize;
mCurrentParcel = p;
if (curPos < mCurrentParcelEnd) {
- mCurrentFile = nextFile;
+ mCurrentFragment = next;
return mCurrentParcel;
}
} else {
p.recycle();
}
- nextFile = mHistoryDir.getNextFile(nextFile, startTimeMs, endTimeMs);
+ next = mStore.getNextFragment(next, startTimeMs, endTimeMs);
}
}
@@ -988,39 +763,26 @@ public class BatteryStatsHistory {
* Read history file into a parcel.
*
* @param out the Parcel read into.
- * @param file the File to read from.
+ * @param fragment the fragment to read from.
* @return true if success, false otherwise.
*/
- public boolean readFileToParcel(Parcel out, AtomicFile file) {
- Trace.traceBegin(TRACE_TAG_SYSTEM_SERVER, "BatteryStatsHistory.read");
- try {
- byte[] raw = null;
- try {
- final long start = SystemClock.uptimeMillis();
- raw = file.readFully();
- if (DEBUG) {
- Slog.d(TAG, "readFileToParcel:" + file.getBaseFile().getPath()
- + " duration ms:" + (SystemClock.uptimeMillis() - start));
- }
- } catch (Exception e) {
- Slog.e(TAG, "Error reading file " + file.getBaseFile().getPath(), e);
- return false;
- }
- out.unmarshall(raw, 0, raw.length);
- out.setDataPosition(0);
- if (!verifyVersion(out)) {
- return false;
- }
- // skip monotonic time field.
- out.readLong();
- // skip monotonic end time field
- out.readLong();
- // skip monotonic size field
- out.readLong();
- return true;
- } finally {
- Trace.traceEnd(TRACE_TAG_SYSTEM_SERVER);
+ public boolean readFragmentToParcel(Parcel out, BatteryHistoryFragment fragment) {
+ byte[] data = mStore.readFragment(fragment);
+ if (data == null) {
+ return false;
}
+ out.unmarshall(data, 0, data.length);
+ out.setDataPosition(0);
+ if (!verifyVersion(out)) {
+ return false;
+ }
+ // skip monotonic time field.
+ out.readLong();
+ // skip monotonic end time field
+ out.readLong();
+ // skip monotonic size field
+ out.readLong();
+ return true;
}
/**
@@ -1106,9 +868,8 @@ public class BatteryStatsHistory {
public void writeToParcel(Parcel out) {
synchronized (this) {
writeHistoryBuffer(out);
- /* useBlobs */
- if (mHistoryDir != null) {
- mHistoryDir.writeToParcel(out, false /* useBlobs */, 0);
+ if (mStore != null) {
+ writeToParcel(out, false /* useBlobs */, 0);
}
}
}
@@ -1122,13 +883,54 @@ public class BatteryStatsHistory {
public void writeToBatteryUsageStatsParcel(Parcel out, long preferredHistoryDurationMs) {
synchronized (this) {
out.writeBlob(mHistoryBuffer.marshall());
- if (mHistoryDir != null) {
- mHistoryDir.writeToParcel(out, true /* useBlobs */,
+ if (mStore != null) {
+ writeToParcel(out, true /* useBlobs */,
mHistoryMonotonicEndTime - preferredHistoryDurationMs);
}
}
}
+ private void writeToParcel(Parcel out, boolean useBlobs,
+ long preferredEarliestIncludedTimestampMs) {
+ Trace.traceBegin(TRACE_TAG_SYSTEM_SERVER, "BatteryStatsHistory.writeToParcel");
+ mStore.lock();
+ try {
+ final long start = SystemClock.uptimeMillis();
+ List<BatteryHistoryFragment> fragments = mStore.getFragments();
+ for (int i = 0; i < fragments.size() - 1; i++) {
+ long monotonicEndTime = Long.MAX_VALUE;
+ if (i < fragments.size() - 1) {
+ monotonicEndTime = fragments.get(i + 1).monotonicTimeMs;
+ }
+
+ if (monotonicEndTime < preferredEarliestIncludedTimestampMs) {
+ continue;
+ }
+
+ byte[] data = mStore.readFragment(fragments.get(i));
+ if (data == null) {
+ Slog.e(TAG, "Error reading history fragment " + fragments.get(i));
+ continue;
+ }
+
+ out.writeBoolean(true);
+ if (useBlobs) {
+ out.writeBlob(data, 0, data.length);
+ } else {
+ // Avoiding blobs in the check-in file for compatibility
+ out.writeByteArray(data, 0, data.length);
+ }
+ }
+ out.writeBoolean(false);
+ if (DEBUG) {
+ Slog.d(TAG, "writeToParcel duration ms:" + (SystemClock.uptimeMillis() - start));
+ }
+ } finally {
+ mStore.unlock();
+ Trace.traceEnd(TRACE_TAG_SYSTEM_SERVER);
+ }
+ }
+
/**
* Reads a BatteryStatsHistory from a parcel written with
* the {@link #writeToBatteryUsageStatsParcel} method.
@@ -1141,28 +943,21 @@ public class BatteryStatsHistory {
* Read history from a check-in file.
*/
public boolean readSummary() {
- if (mActiveFile == null) {
+ if (mActiveFragment == null) {
Slog.w(TAG, "readSummary: no history file associated with this instance");
return false;
}
Parcel parcel = Parcel.obtain();
try {
- final long start = SystemClock.uptimeMillis();
- if (mActiveFile.exists()) {
- byte[] raw = mActiveFile.readFully();
- if (raw.length > 0) {
- parcel.unmarshall(raw, 0, raw.length);
- parcel.setDataPosition(0);
- readHistoryBuffer(parcel);
- }
- if (DEBUG) {
- Slog.d(TAG, "read history file::"
- + mActiveFile.getBaseFile().getPath()
- + " bytes:" + raw.length + " took ms:" + (SystemClock.uptimeMillis()
- - start));
- }
+ byte[] data = mStore.readFragment(mActiveFragment);
+ if (data == null) {
+ return false;
}
+
+ parcel.unmarshall(data, 0, data.length);
+ parcel.setDataPosition(0);
+ readHistoryBuffer(parcel);
} catch (Exception e) {
Slog.e(TAG, "Error reading battery history", e);
reset();
@@ -1201,41 +996,21 @@ public class BatteryStatsHistory {
}
}
- /**
- * @return true if there is more than 100MB free disk space left.
- */
- @android.ravenwood.annotation.RavenwoodReplace
- private static boolean hasFreeDiskSpace(File systemDir) {
- final StatFs stats = new StatFs(systemDir.getAbsolutePath());
- return stats.getAvailableBytes() > MIN_FREE_SPACE;
- }
-
- private static boolean hasFreeDiskSpace$ravenwood(File systemDir) {
- return true;
- }
-
@VisibleForTesting
- public List<String> getFilesNames() {
- return mHistoryDir.getFileNames();
+ public BatteryHistoryStore getBatteryHistoryStore() {
+ return mStore;
}
@VisibleForTesting
- public AtomicFile getActiveFile() {
- return mActiveFile;
- }
-
- /**
- * Returns the maximum storage size allocated to battery history.
- */
- public int getMaxHistorySize() {
- return mHistoryDir.mMaxHistorySize;
+ public BatteryHistoryFragment getActiveFragment() {
+ return mActiveFragment;
}
/**
* @return the total size of all history files and history buffer.
*/
public int getHistoryUsedSize() {
- int ret = mHistoryDir.getSize();
+ int ret = mStore.getSize();
ret += mHistoryBuffer.dataSize();
if (mHistoryParcels != null) {
for (int i = 0; i < mHistoryParcels.size(); i++) {
@@ -1293,7 +1068,7 @@ public class BatteryStatsHistory {
*/
public void continueRecordingHistory() {
synchronized (this) {
- if (mHistoryBuffer.dataPosition() <= 0 && mHistoryDir.getFileCount() <= 1) {
+ if (mHistoryBuffer.dataPosition() <= 0 && !mStore.hasCompletedFragments()) {
return;
}
@@ -1852,7 +1627,7 @@ public class BatteryStatsHistory {
}
final long timeDiffMs = mMonotonicClock.monotonicTime(elapsedRealtimeMs)
- - mHistoryLastWritten.time;
+ - mHistoryLastWritten.time;
final int diffStates = mHistoryLastWritten.states ^ cur.states;
final int diffStates2 = mHistoryLastWritten.states2 ^ cur.states2;
final int lastDiffStates = mHistoryLastWritten.states ^ mHistoryLastLastWritten.states;
@@ -1953,7 +1728,7 @@ public class BatteryStatsHistory {
mMaxHistoryBufferSize = 1024;
}
- boolean successfullyLocked = mHistoryDir.tryLock();
+ boolean successfullyLocked = mStore.tryLock();
if (!successfullyLocked) { // Already locked by another thread
// If the buffer size is below the allowed overflow limit, just keep going
if (dataSize < mMaxHistoryBufferSize + EXTRA_BUFFER_SIZE_WHEN_DIR_LOCKED) {
@@ -1971,10 +1746,10 @@ public class BatteryStatsHistory {
copy.setTo(cur);
try {
- startNextFile(elapsedRealtimeMs);
+ startNextFragment(elapsedRealtimeMs);
} finally {
if (successfullyLocked) {
- mHistoryDir.unlock();
+ mStore.unlock();
}
}
@@ -2050,12 +1825,22 @@ public class BatteryStatsHistory {
Battery level int: if A in the first token is set,
31 23 15 7 0
- █L|L|L|L|L|L|L|T█T|T|T|T|T|T|T|T█T|V|V|V|V|V|V|V█V|V|V|V|V|V|V|D█
+ █L|L|L|L|L|L|L|L█T|T|T|T|T|T|T|T█T|V|V|V|V|V|V|V█V|V|V|V|V|V|E|D█
D: indicates that extra history details follow.
- V: the battery voltage.
- T: the battery temperature.
- L: the battery level (out of 100).
+ E: indicates that the voltage delta or temperature delta is too large to fit in the
+ respective V or T field of this int. If this flag is set, an extended battery level
+ int containing the complete voltage and temperature values immediately follows.
+ V: the signed battery voltage delta in millivolts.
+ T: the signed battery temperature delta in tenths of a degree Celsius.
+ L: the signed battery level delta (out of 100).
+
+ Extended battery level int: if E in the battery level int is set,
+ 31 23 15 7 0
+ █T|T|T|T|T|T|T|T█T|T|T|T|T|T|T|T█V|V|V|V|V|V|V|V█V|V|V|V|V|V|V|V█
+
+ V: the current battery voltage (complete 16-bit value, not a delta).
+ T: the current battery temperature (complete 16-bit value, not a delta).
State change int: if B in the first token is set,
31 23 15 7 0
@@ -2095,6 +1880,7 @@ public class BatteryStatsHistory {
Battery charge int: if F in the first token is set, an int representing the battery charge
in coulombs follows.
*/
+
/**
* Writes the delta between the previous and current history items into history buffer.
*/
@@ -2110,7 +1896,7 @@ public class BatteryStatsHistory {
int extensionFlags = 0;
final long deltaTime = cur.time - last.time;
- final int lastBatteryLevelInt = buildBatteryLevelInt(last);
+ int batteryLevelInt = buildBatteryLevelInt(cur, last);
final int lastStateInt = buildStateInt(last);
int deltaTimeToken;
@@ -2122,7 +1908,6 @@ public class BatteryStatsHistory {
deltaTimeToken = (int) deltaTime;
}
int firstToken = deltaTimeToken | (cur.states & BatteryStatsHistory.DELTA_STATE_MASK);
- int batteryLevelInt = buildBatteryLevelInt(cur);
if (cur.batteryLevel < mLastHistoryStepLevel || mLastHistoryStepLevel == 0) {
cur.stepDetails = mStepDetailsCalculator.getHistoryStepDetails();
@@ -2135,7 +1920,7 @@ public class BatteryStatsHistory {
mLastHistoryStepLevel = cur.batteryLevel;
}
- final boolean batteryLevelIntChanged = batteryLevelInt != lastBatteryLevelInt;
+ final boolean batteryLevelIntChanged = batteryLevelInt != 0;
if (batteryLevelIntChanged) {
firstToken |= BatteryStatsHistory.DELTA_BATTERY_LEVEL_FLAG;
}
@@ -2189,10 +1974,21 @@ public class BatteryStatsHistory {
}
}
if (batteryLevelIntChanged) {
+ boolean overflow = (batteryLevelInt & BATTERY_LEVEL_OVERFLOW_FLAG) != 0;
+ int extendedBatteryLevelInt = 0;
+
dest.writeInt(batteryLevelInt);
+ if (overflow) {
+ extendedBatteryLevelInt = buildExtendedBatteryLevelInt(cur);
+ dest.writeInt(extendedBatteryLevelInt);
+ }
+
if (DEBUG) {
Slog.i(TAG, "WRITE DELTA: batteryToken=0x"
+ Integer.toHexString(batteryLevelInt)
+ + (overflow
+ ? " batteryToken2=0x" + Integer.toHexString(extendedBatteryLevelInt)
+ : "")
+ " batteryLevel=" + cur.batteryLevel
+ " batteryTemp=" + cur.batteryTemperature
+ " batteryVolt=" + (int) cur.batteryVoltage);
@@ -2290,16 +2086,43 @@ public class BatteryStatsHistory {
}
}
- private int buildBatteryLevelInt(HistoryItem h) {
- int bits = 0;
- bits = setBitField(bits, h.batteryLevel, 25, 0xfe000000 /* 7F << 25 */);
- bits = setBitField(bits, h.batteryTemperature, 15, 0x01ff8000 /* 3FF << 15 */);
- short voltage = (short) h.batteryVoltage;
- if (voltage == -1) {
- voltage = 0x3FFF;
+ private boolean signedValueFits(int value, int mask, int shift) {
+ mask >>>= shift;
+ // The original value can only be restored if all of the lost
+ // high-order bits match the MSB of the packed value. Extract both the
+ // MSB and the lost bits, and check if they match (i.e. they are all
+ // zeros or all ones).
+ int msbAndLostBitsMask = ~(mask >>> 1);
+ int msbAndLostBits = value & msbAndLostBitsMask;
+
+ return msbAndLostBits == 0 || msbAndLostBits == msbAndLostBitsMask;
+ }
+
+ private int buildBatteryLevelInt(HistoryItem cur, HistoryItem prev) {
+ final int levelDelta = (int) cur.batteryLevel - (int) prev.batteryLevel;
+ final int tempDelta = (int) cur.batteryTemperature - (int) prev.batteryTemperature;
+ final int voltDelta = (int) cur.batteryVoltage - (int) prev.batteryVoltage;
+ final boolean overflow =
+ !signedValueFits(tempDelta, BATTERY_LEVEL_TEMP_MASK, BATTERY_LEVEL_VOLT_SHIFT)
+ || !signedValueFits(voltDelta, BATTERY_LEVEL_VOLT_MASK, BATTERY_LEVEL_TEMP_SHIFT);
+
+ int batt = 0;
+ batt |= (levelDelta << BATTERY_LEVEL_LEVEL_SHIFT) & BATTERY_LEVEL_LEVEL_MASK;
+ if (overflow) {
+ batt |= BATTERY_LEVEL_OVERFLOW_FLAG;
+ } else {
+ batt |= (tempDelta << BATTERY_LEVEL_TEMP_SHIFT) & BATTERY_LEVEL_TEMP_MASK;
+ batt |= (voltDelta << BATTERY_LEVEL_VOLT_SHIFT) & BATTERY_LEVEL_VOLT_MASK;
}
- bits = setBitField(bits, voltage, 1, 0x00007ffe /* 3FFF << 1 */);
- return bits;
+
+ return batt;
+ }
+
+ private int buildExtendedBatteryLevelInt(HistoryItem cur) {
+ int battExt = 0;
+ battExt |= (cur.batteryTemperature << BATTERY_LEVEL2_TEMP_SHIFT) & BATTERY_LEVEL2_TEMP_MASK;
+ battExt |= (cur.batteryVoltage << BATTERY_LEVEL2_VOLT_SHIFT) & BATTERY_LEVEL2_VOLT_MASK;
+ return battExt;
}
private int buildStateInt(HistoryItem h) {
@@ -2376,9 +2199,13 @@ public class BatteryStatsHistory {
}
/**
- * Saves the accumulated history buffer in the active file, see {@link #getActiveFile()} .
+ * Saves the accumulated history buffer in the active file, see {@link #getActiveFragment()} .
*/
public void writeHistory() {
+ writeHistory(false /* fragmentComplete */);
+ }
+
+ private void writeHistory(boolean fragmentComplete) {
synchronized (this) {
if (isReadOnly()) {
Slog.w(TAG, "writeHistory: this instance instance is read-only");
@@ -2397,7 +2224,7 @@ public class BatteryStatsHistory {
Slog.d(TAG, "writeHistoryBuffer duration ms:"
+ (SystemClock.uptimeMillis() - start) + " bytes:" + p.dataSize());
}
- writeParcelToFileLocked(p, mActiveFile);
+ writeParcelLocked(p, mActiveFragment, fragmentComplete);
} finally {
p.recycle();
}
@@ -2457,30 +2284,18 @@ public class BatteryStatsHistory {
}
@GuardedBy("this")
- private void writeParcelToFileLocked(Parcel p, AtomicFile file) {
- FileOutputStream fos = null;
+ private void writeParcelLocked(Parcel p, BatteryHistoryFragment fragment,
+ boolean fragmentComplete) {
mWriteLock.lock();
try {
final long startTimeMs = SystemClock.uptimeMillis();
- fos = file.startWrite();
- fos.write(p.marshall());
- fos.flush();
- file.finishWrite(fos);
- if (DEBUG) {
- Slog.d(TAG, "writeParcelToFileLocked file:" + file.getBaseFile().getPath()
- + " duration ms:" + (SystemClock.uptimeMillis() - startTimeMs)
- + " bytes:" + p.dataSize());
- }
+ mStore.writeFragment(fragment, p.marshall(), fragmentComplete);
mEventLogger.writeCommitSysConfigFile(startTimeMs);
- } catch (IOException e) {
- Slog.w(TAG, "Error writing battery statistics", e);
- file.failWrite(fos);
} finally {
mWriteLock.unlock();
}
}
-
/**
* Returns the total number of history tags in the tag pool.
*/
diff --git a/core/java/com/android/internal/os/BatteryStatsHistoryIterator.java b/core/java/com/android/internal/os/BatteryStatsHistoryIterator.java
index ee897cd37cd3..0d5d8761d00d 100644
--- a/core/java/com/android/internal/os/BatteryStatsHistoryIterator.java
+++ b/core/java/com/android/internal/os/BatteryStatsHistoryIterator.java
@@ -150,11 +150,21 @@ public class BatteryStatsHistoryIterator implements Iterator<BatteryStats.Histor
final int batteryLevelInt;
if ((firstToken & BatteryStatsHistory.DELTA_BATTERY_LEVEL_FLAG) != 0) {
batteryLevelInt = src.readInt();
- readBatteryLevelInt(batteryLevelInt, cur);
cur.numReadInts += 1;
+ final boolean overflow =
+ (batteryLevelInt & BatteryStatsHistory.BATTERY_LEVEL_OVERFLOW_FLAG) != 0;
+ int extendedBatteryLevelInt = 0;
+ if (overflow) {
+ extendedBatteryLevelInt = src.readInt();
+ cur.numReadInts += 1;
+ }
+ readBatteryLevelInts(batteryLevelInt, extendedBatteryLevelInt, cur);
if (DEBUG) {
Slog.i(TAG, "READ DELTA: batteryToken=0x"
+ Integer.toHexString(batteryLevelInt)
+ + (overflow
+ ? " batteryToken2=0x" + Integer.toHexString(extendedBatteryLevelInt)
+ : "")
+ " batteryLevel=" + cur.batteryLevel
+ " batteryTemp=" + cur.batteryTemperature
+ " batteryVolt=" + (int) cur.batteryVoltage);
@@ -312,15 +322,43 @@ public class BatteryStatsHistoryIterator implements Iterator<BatteryStats.Histor
return true;
}
- private static void readBatteryLevelInt(int batteryLevelInt, BatteryStats.HistoryItem out) {
- out.batteryLevel = (byte) ((batteryLevelInt & 0xfe000000) >>> 25);
- out.batteryTemperature = (short) ((batteryLevelInt & 0x01ff8000) >>> 15);
- int voltage = ((batteryLevelInt & 0x00007ffe) >>> 1);
- if (voltage == 0x3FFF) {
- voltage = -1;
- }
+ private static int extractSignedBitField(int bits, int mask, int shift) {
+ mask >>>= shift;
+ bits >>>= shift;
+ int value = bits & mask;
+ int msbMask = mask ^ (mask >>> 1);
+ // Sign extend with MSB
+ if ((value & msbMask) != 0) value |= ~mask;
+ return value;
+ }
+
+ private static void readBatteryLevelInts(int batteryInt, int extendedBatteryInt,
+ BatteryStats.HistoryItem out) {
- out.batteryVoltage = (short) voltage;
+ out.batteryLevel += extractSignedBitField(
+ batteryInt,
+ BatteryStatsHistory.BATTERY_LEVEL_LEVEL_MASK,
+ BatteryStatsHistory.BATTERY_LEVEL_LEVEL_SHIFT);
+
+ if ((batteryInt & BatteryStatsHistory.BATTERY_LEVEL_OVERFLOW_FLAG) == 0) {
+ out.batteryTemperature += extractSignedBitField(
+ batteryInt,
+ BatteryStatsHistory.BATTERY_LEVEL_TEMP_MASK,
+ BatteryStatsHistory.BATTERY_LEVEL_TEMP_SHIFT);
+ out.batteryVoltage += extractSignedBitField(
+ batteryInt,
+ BatteryStatsHistory.BATTERY_LEVEL_VOLT_MASK,
+ BatteryStatsHistory.BATTERY_LEVEL_VOLT_SHIFT);
+ } else {
+ out.batteryTemperature = (short) extractSignedBitField(
+ extendedBatteryInt,
+ BatteryStatsHistory.BATTERY_LEVEL2_TEMP_MASK,
+ BatteryStatsHistory.BATTERY_LEVEL2_TEMP_SHIFT);
+ out.batteryVoltage = (short) extractSignedBitField(
+ extendedBatteryInt,
+ BatteryStatsHistory.BATTERY_LEVEL2_VOLT_MASK,
+ BatteryStatsHistory.BATTERY_LEVEL2_VOLT_SHIFT);
+ }
}
/**
diff --git a/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java b/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java
index 5c08dc6be1a0..db60e12e50b1 100644
--- a/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java
+++ b/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java
@@ -29,7 +29,6 @@ import static android.content.pm.PackageManager.INSTALL_PARSE_FAILED_UNEXPECTED_
import static android.os.Build.VERSION_CODES.DONUT;
import static android.os.Build.VERSION_CODES.O;
import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER;
-import static android.sdk.Flags.majorMinorVersioningScheme;
import static com.android.internal.pm.pkg.parsing.ParsingUtils.parseKnownActivityEmbeddingCerts;
@@ -1690,21 +1689,6 @@ public class ParsingPackageUtils {
targetCode = minCode;
}
- if (majorMinorVersioningScheme()) {
- val = sa.peekValue(R.styleable.AndroidManifestUsesSdk_minSdkVersionFull);
- if (val != null) {
- if (val.type == TypedValue.TYPE_STRING && val.string != null) {
- String minSdkVersionFullString = val.string.toString();
- ParseResult<Void> minSdkVersionFullResult =
- FrameworkParsingPackageUtils.verifyMinSdkVersionFull(
- minSdkVersionFullString, Build.VERSION.SDK_INT_FULL, input);
- if (minSdkVersionFullResult.isError()) {
- return input.error(minSdkVersionFullResult);
- }
- }
- }
- }
-
if (isApkInApex) {
val = sa.peekValue(R.styleable.AndroidManifestUsesSdk_maxSdkVersion);
if (val != null) {
diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java
index 6c00921ebb7b..d73e2d47348b 100644
--- a/core/java/com/android/internal/policy/PhoneWindow.java
+++ b/core/java/com/android/internal/policy/PhoneWindow.java
@@ -436,6 +436,9 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
if (viewRoot != null) {
// Clear the old callbacks and attach to the new window.
viewRoot.getOnBackInvokedDispatcher().clear();
+ if (Flags.clearSystemVibrator()) {
+ viewRoot.clearSystemVibrator();
+ }
onViewRootImplSet(viewRoot);
}
}
@@ -478,8 +481,6 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
public static boolean isOptingOutEdgeToEdgeEnforcement(ApplicationInfo info, boolean local,
TypedArray windowStyle) {
final boolean disabled = Flags.disableOptOutEdgeToEdge()
- // TODO (b/377864165): Don't exclude system apps after they are ready.
- && !info.isSystemApp()
&& (local
// Calling this doesn't require a permission.
? CompatChanges.isChangeEnabled(DISABLE_OPT_OUT_EDGE_TO_EDGE)
diff --git a/core/java/com/android/internal/protolog/IProtoLogConfigurationService.aidl b/core/java/com/android/internal/protolog/IProtoLogConfigurationService.aidl
index ce948281bbd6..9b60f49d1446 100644
--- a/core/java/com/android/internal/protolog/IProtoLogConfigurationService.aidl
+++ b/core/java/com/android/internal/protolog/IProtoLogConfigurationService.aidl
@@ -40,7 +40,7 @@ import com.android.internal.protolog.IProtoLogClient;
*
* {@hide}
*/
-interface IProtoLogConfigurationService {
+oneway interface IProtoLogConfigurationService {
interface IRegisterClientArgs {
String[] getGroups();
boolean[] getGroupsDefaultLogcatStatus();
diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl
index 72cb9d1a20ac..7018ebcbe9f4 100644
--- a/core/java/com/android/internal/statusbar/IStatusBar.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl
@@ -217,9 +217,9 @@ oneway interface IStatusBar
void setUdfpsRefreshRateCallback(in IUdfpsRefreshRateRequestCallback callback);
/**
- * Notifies System UI that the display is ready to show system decorations.
+ * Notifies System UI that the system decorations should be added on the display.
*/
- void onDisplayReady(int displayId);
+ void onDisplayAddSystemDecorations(int displayId);
/**
* Notifies System UI that the system decorations should be removed from the display.
@@ -408,7 +408,4 @@ oneway interface IStatusBar
* @param displayId the id of the current display.
*/
void moveFocusedTaskToDesktop(int displayId);
-
- /** Set whether the display should have a navigation bar. */
- void setHasNavigationBar(int displayId, boolean hasNavigationBar);
}
diff --git a/core/java/com/android/internal/util/RateLimitingCache.java b/core/java/com/android/internal/util/RateLimitingCache.java
index 9916076fd0ef..956d5d680fe7 100644
--- a/core/java/com/android/internal/util/RateLimitingCache.java
+++ b/core/java/com/android/internal/util/RateLimitingCache.java
@@ -17,6 +17,8 @@
package com.android.internal.util;
import android.os.SystemClock;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicReference;
/**
* A speed/rate limiting cache that's used to cache a value to be returned as long as period hasn't
@@ -30,6 +32,12 @@ import android.os.SystemClock;
* and then the cached value is returned for the remainder of the period. It uses a simple fixed
* window method to track rate. Use a window and count appropriate for bursts of calls and for
* high latency/cost of the AIDL call.
+ * <p>
+ * This class is thread-safe. When multiple threads call get(), they will all fetch a new value
+ * if the cached value is stale. This is to prevent a slow getting thread from blocking other
+ * threads from getting a fresh value. In such circumsntaces it's possible to exceed
+ * <code>count</code> calls in a given period by up to the number of threads that are concurrently
+ * attempting to get a fresh value minus one.
*
* @param <Value> The type of the return value
* @hide
@@ -37,12 +45,11 @@ import android.os.SystemClock;
@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class RateLimitingCache<Value> {
- private volatile Value mCurrentValue;
- private volatile long mLastTimestamp; // Can be last fetch time or window start of fetch time
private final long mPeriodMillis; // window size
private final int mLimit; // max per window
- private int mCount = 0; // current count within window
- private long mRandomOffset; // random offset to avoid batching of AIDL calls at window boundary
+ // random offset to avoid batching of AIDL calls at window boundary
+ private final long mRandomOffset;
+ private final AtomicReference<CachedValue> mCachedValue = new AtomicReference();
/**
* The interface to fetch the actual value, if the cache is null or expired.
@@ -56,6 +63,12 @@ public class RateLimitingCache<Value> {
V fetchValue();
}
+ class CachedValue {
+ Value value;
+ long timestamp;
+ AtomicInteger count; // current count within window
+ }
+
/**
* Create a speed limiting cache that returns the same value until periodMillis has passed
* and then fetches a new value via the {@link ValueFetcher}.
@@ -83,6 +96,8 @@ public class RateLimitingCache<Value> {
mLimit = count;
if (mLimit > 1 && periodMillis > 1) {
mRandomOffset = (long) (Math.random() * (periodMillis / 2));
+ } else {
+ mRandomOffset = 0;
}
}
@@ -102,34 +117,39 @@ public class RateLimitingCache<Value> {
* @return the cached or latest value
*/
public Value get(ValueFetcher<Value> query) {
- // If the value never changes
- if (mPeriodMillis < 0 && mLastTimestamp != 0) {
- return mCurrentValue;
- }
+ CachedValue cached = mCachedValue.get();
- synchronized (this) {
- // Get the current time and add a random offset to avoid colliding with other
- // caches with similar harmonic window boundaries
- final long now = getTime() + mRandomOffset;
- final boolean newWindow = now - mLastTimestamp >= mPeriodMillis;
- if (newWindow || mCount < mLimit) {
- // Fetch a new value
- mCurrentValue = query.fetchValue();
+ // If the value never changes and there is a previous cached value, return it
+ if (mPeriodMillis < 0 && cached != null && cached.timestamp != 0) {
+ return cached.value;
+ }
- // If rate limiting, set timestamp to start of this window
- if (mLimit > 1) {
- mLastTimestamp = now - (now % mPeriodMillis);
- } else {
- mLastTimestamp = now;
- }
+ // Get the current time and add a random offset to avoid colliding with other
+ // caches with similar harmonic window boundaries
+ final long now = getTime() + mRandomOffset;
+ final boolean newWindow = cached == null || now - cached.timestamp >= mPeriodMillis;
+ if (newWindow || cached.count.getAndIncrement() < mLimit) {
+ // Fetch a new value
+ Value freshValue = query.fetchValue();
+ long freshTimestamp = now;
+ // If rate limiting, set timestamp to start of this window
+ if (mLimit > 1) {
+ freshTimestamp = now - (now % mPeriodMillis);
+ }
- if (newWindow) {
- mCount = 1;
- } else {
- mCount++;
- }
+ CachedValue freshCached = new CachedValue();
+ freshCached.value = freshValue;
+ freshCached.timestamp = freshTimestamp;
+ if (newWindow) {
+ freshCached.count = new AtomicInteger(1);
+ } else {
+ freshCached.count = cached.count;
}
- return mCurrentValue;
+
+ // If we fail to CAS then it means that another thread beat us to it.
+ // In this case we don't override their work.
+ mCachedValue.compareAndSet(cached, freshCached);
}
+ return mCachedValue.get().value;
}
}
diff --git a/core/java/com/android/internal/widget/ConversationLayout.java b/core/java/com/android/internal/widget/ConversationLayout.java
index 04ce9bcd7afd..9a5849a28065 100644
--- a/core/java/com/android/internal/widget/ConversationLayout.java
+++ b/core/java/com/android/internal/widget/ConversationLayout.java
@@ -86,8 +86,6 @@ public class ConversationLayout extends FrameLayout
public static final Interpolator FAST_OUT_LINEAR_IN = new PathInterpolator(0.4f, 0f, 1f, 1f);
public static final Interpolator FAST_OUT_SLOW_IN = new PathInterpolator(0.4f, 0f, 0.2f, 1f);
public static final Interpolator OVERSHOOT = new PathInterpolator(0.4f, 0f, 0.2f, 1.4f);
- public static final OnLayoutChangeListener MESSAGING_PROPERTY_ANIMATOR
- = new MessagingPropertyAnimator();
public static final int IMPORTANCE_ANIM_GROW_DURATION = 250;
public static final int IMPORTANCE_ANIM_SHRINK_DURATION = 200;
public static final int IMPORTANCE_ANIM_SHRINK_DELAY = 25;
@@ -96,13 +94,13 @@ public class ConversationLayout extends FrameLayout
private List<MessagingMessage> mHistoricMessages = new ArrayList<>();
private MessagingLinearLayout mMessagingLinearLayout;
private boolean mShowHistoricMessages;
- private ArrayList<MessagingGroup> mGroups = new ArrayList<>();
+ private final ArrayList<MessagingGroup> mGroups = new ArrayList<>();
private int mLayoutColor;
private int mSenderTextColor;
private int mMessageTextColor;
private Icon mAvatarReplacement;
private boolean mIsOneToOne;
- private ArrayList<MessagingGroup> mAddedGroups = new ArrayList<>();
+ private final ArrayList<MessagingGroup> mAddedGroups = new ArrayList<>();
private Person mUser;
private CharSequence mNameReplacement;
private CharSequence mSummarizedContent;
@@ -163,8 +161,8 @@ public class ConversationLayout extends FrameLayout
private Icon mConversationIcon;
private Icon mShortcutIcon;
private View mAppNameDivider;
- private TouchDelegateComposite mTouchDelegate = new TouchDelegateComposite(this);
- private ArrayList<MessagingLinearLayout.MessagingChild> mToRecycle = new ArrayList<>();
+ private final TouchDelegateComposite mTouchDelegate = new TouchDelegateComposite(this);
+ private final ArrayList<MessagingLinearLayout.MessagingChild> mToRecycle = new ArrayList<>();
private boolean mPrecomputedTextEnabled = false;
@Nullable
private ConversationHeaderData mConversationHeaderData;
@@ -440,9 +438,8 @@ public class ConversationLayout extends FrameLayout
// mUser now set (would be nice to avoid the side effect but WHATEVER)
final Person user = extras.getParcelable(Notification.EXTRA_MESSAGING_PERSON, Person.class);
// Append remote input history to newMessages (again, side effect is lame but WHATEVS)
- RemoteInputHistoryItem[] history = (RemoteInputHistoryItem[])
- extras.getParcelableArray(Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS,
- RemoteInputHistoryItem.class);
+ RemoteInputHistoryItem[] history = extras.getParcelableArray(
+ Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS, RemoteInputHistoryItem.class);
addRemoteInputHistoryToMessages(newMessages, history);
boolean showSpinner =
@@ -547,7 +544,7 @@ public class ConversationLayout extends FrameLayout
for (int i = remoteInputHistory.length - 1; i >= 0; i--) {
RemoteInputHistoryItem historyMessage = remoteInputHistory[i];
Notification.MessagingStyle.Message message = new Notification.MessagingStyle.Message(
- historyMessage.getText(), 0, (Person) null, true /* remoteHistory */);
+ historyMessage.getText(), 0, null, true /* remoteHistory */);
if (historyMessage.getUri() != null) {
message.setData(historyMessage.getMimeType(), historyMessage.getUri());
}
@@ -718,11 +715,11 @@ public class ConversationLayout extends FrameLayout
private void updateImageMessages() {
View newMessage = null;
- if (mIsCollapsed && mGroups.size() > 0) {
+ if (mIsCollapsed && !mGroups.isEmpty()) {
// When collapsed, we're displaying the image message in a dedicated container
// on the right of the layout instead of inline. Let's add the isolated image there
- MessagingGroup messagingGroup = mGroups.get(mGroups.size() - 1);
+ MessagingGroup messagingGroup = mGroups.getLast();
MessagingImageMessage isolatedMessage = messagingGroup.getIsolatedMessage();
if (isolatedMessage != null) {
newMessage = isolatedMessage.getView();
@@ -1234,7 +1231,7 @@ public class ConversationLayout extends FrameLayout
final Person sender = message.getSenderPerson();
final CharSequence senderKey = getKey(sender);
if ((sender != null && senderKey != userKey) || i == 0) {
- if (conversationText == null || conversationText.length() == 0) {
+ if (conversationText == null || conversationText.isEmpty()) {
conversationText = sender != null ? sender.getName() : "";
}
if (conversationIcon == null) {
diff --git a/core/java/com/android/internal/widget/MessagingData.java b/core/java/com/android/internal/widget/MessagingData.java
index cb5041efd10f..2ef3c647c004 100644
--- a/core/java/com/android/internal/widget/MessagingData.java
+++ b/core/java/com/android/internal/widget/MessagingData.java
@@ -39,10 +39,10 @@ final class MessagingData {
MessagingData(Person user, boolean showSpinner,
List<MessagingMessage> historicMessagingMessages,
List<MessagingMessage> newMessagingMessages, List<List<MessagingMessage>> groups,
- List<Person> senders) {
+ List<Person> senders, CharSequence summarization) {
this(user, showSpinner, /* unreadCount= */0,
historicMessagingMessages, newMessagingMessages,
- groups, senders, null, null);
+ groups, senders, null, summarization);
}
MessagingData(Person user, boolean showSpinner,
diff --git a/core/java/com/android/internal/widget/MessagingLayout.java b/core/java/com/android/internal/widget/MessagingLayout.java
index d000596390ec..90ab6605b2e8 100644
--- a/core/java/com/android/internal/widget/MessagingLayout.java
+++ b/core/java/com/android/internal/widget/MessagingLayout.java
@@ -46,7 +46,6 @@ import android.widget.ImageView;
import android.widget.RemoteViews;
import com.android.internal.R;
-import com.android.internal.util.ContrastColorUtil;
import java.util.ArrayList;
import java.util.List;
@@ -60,7 +59,6 @@ import java.util.Map;
public class MessagingLayout extends FrameLayout
implements ImageMessageConsumer, IMessagingLayout {
- private static final float COLOR_SHIFT_AMOUNT = 60;
public static final Interpolator LINEAR_OUT_SLOW_IN = new PathInterpolator(0f, 0f, 0.2f, 1f);
public static final Interpolator FAST_OUT_LINEAR_IN = new PathInterpolator(0.4f, 0f, 1f, 1f);
public static final Interpolator FAST_OUT_SLOW_IN = new PathInterpolator(0.4f, 0f, 0.2f, 1f);
@@ -71,7 +69,7 @@ public class MessagingLayout extends FrameLayout
private List<MessagingMessage> mHistoricMessages = new ArrayList<>();
private MessagingLinearLayout mMessagingLinearLayout;
private boolean mShowHistoricMessages;
- private ArrayList<MessagingGroup> mGroups = new ArrayList<>();
+ private final ArrayList<MessagingGroup> mGroups = new ArrayList<>();
private MessagingLinearLayout mImageMessageContainer;
private ImageView mRightIconView;
private Rect mMessagingClipRect;
@@ -80,14 +78,16 @@ public class MessagingLayout extends FrameLayout
private int mMessageTextColor;
private Icon mAvatarReplacement;
private boolean mIsOneToOne;
- private ArrayList<MessagingGroup> mAddedGroups = new ArrayList<>();
+ private final ArrayList<MessagingGroup> mAddedGroups = new ArrayList<>();
private Person mUser;
private CharSequence mNameReplacement;
private boolean mIsCollapsed;
private ImageResolver mImageResolver;
private CharSequence mConversationTitle;
- private ArrayList<MessagingLinearLayout.MessagingChild> mToRecycle = new ArrayList<>();
+ private final ArrayList<MessagingLinearLayout.MessagingChild> mToRecycle = new ArrayList<>();
private boolean mPrecomputedTextEnabled = false;
+ private CharSequence mSummarizedContent;
+
public MessagingLayout(@NonNull Context context) {
super(context);
}
@@ -141,6 +141,16 @@ public class MessagingLayout extends FrameLayout
mIsCollapsed = isCollapsed;
}
+ /**
+ * setDataAsync needs to do different stuff for the collapsed vs expanded view, so store the
+ * collapsed state early.
+ */
+ @RemotableViewMethod(asyncImpl = "setIsCollapsedAsync")
+ public Runnable setIsCollapsedAsync(boolean isCollapsed) {
+ mIsCollapsed = isCollapsed;
+ return () -> {};
+ }
+
@RemotableViewMethod
public void setLargeIcon(Icon largeIcon) {
// Unused
@@ -175,20 +185,28 @@ public class MessagingLayout extends FrameLayout
Notification.MessagingStyle.Message.getMessagesFromBundleArray(histMessages);
setUser(extras.getParcelable(Notification.EXTRA_MESSAGING_PERSON,
Person.class));
- RemoteInputHistoryItem[] history =
- (RemoteInputHistoryItem[]) extras.getParcelableArray(
- Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS,
- RemoteInputHistoryItem.class);
+ RemoteInputHistoryItem[] history = extras.getParcelableArray(
+ Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS, RemoteInputHistoryItem.class);
addRemoteInputHistoryToMessages(newMessages, history);
final Person user = extras.getParcelable(Notification.EXTRA_MESSAGING_PERSON, Person.class);
boolean showSpinner =
extras.getBoolean(Notification.EXTRA_SHOW_REMOTE_INPUT_SPINNER, false);
+
final List<MessagingMessage> historicMessagingMessages = createMessages(newHistoricMessages,
/* isHistoric= */true, usePrecomputedText);
- final List<MessagingMessage> newMessagingMessages =
- createMessages(newMessages, /* isHistoric */false, usePrecomputedText);
+ List<MessagingMessage> newMessagingMessages;
+ mSummarizedContent = extras.getCharSequence(Notification.EXTRA_SUMMARIZED_CONTENT);
+ if (mSummarizedContent != null && mIsCollapsed) {
+ Notification.MessagingStyle.Message summary =
+ new Notification.MessagingStyle.Message(mSummarizedContent, 0, "");
+ newMessagingMessages = createMessages(List.of(summary), false, usePrecomputedText);
+ } else {
+ newMessagingMessages =
+ createMessages(newMessages, /* isHistoric= */false, usePrecomputedText);
+ }
+
// Let's first find our groups!
List<List<MessagingMessage>> groups = new ArrayList<>();
List<Person> senders = new ArrayList<>();
@@ -196,8 +214,8 @@ public class MessagingLayout extends FrameLayout
// Lets first find the groups
findGroups(historicMessagingMessages, newMessagingMessages, groups, senders);
- return new MessagingData(user, showSpinner,
- historicMessagingMessages, newMessagingMessages, groups, senders);
+ return new MessagingData(user, showSpinner, historicMessagingMessages, newMessagingMessages,
+ groups, senders, mSummarizedContent);
}
/**
@@ -251,7 +269,7 @@ public class MessagingLayout extends FrameLayout
for (int i = remoteInputHistory.length - 1; i >= 0; i--) {
RemoteInputHistoryItem historyMessage = remoteInputHistory[i];
Notification.MessagingStyle.Message message = new Notification.MessagingStyle.Message(
- historyMessage.getText(), 0, (Person) null, true /* remoteHistory */);
+ historyMessage.getText(), 0, null, true /* remoteHistory */);
if (historyMessage.getUri() != null) {
message.setData(historyMessage.getMimeType(), historyMessage.getUri());
}
@@ -302,7 +320,7 @@ public class MessagingLayout extends FrameLayout
if (mIsCollapsed && !mGroups.isEmpty()) {
// When collapsed, we're displaying the image message in a dedicated container
// on the right of the layout instead of inline. Let's add the isolated image there
- MessagingGroup messagingGroup = mGroups.get(mGroups.size() - 1);
+ MessagingGroup messagingGroup = mGroups.getLast();
MessagingImageMessage isolatedMessage = messagingGroup.getIsolatedMessage();
if (isolatedMessage != null) {
newMessage = isolatedMessage.getView();
@@ -398,26 +416,6 @@ public class MessagingLayout extends FrameLayout
return mPeopleHelper.createAvatarSymbol(senderName, symbol, layoutColor);
}
- private int findColor(CharSequence senderName, int layoutColor) {
- double luminance = ContrastColorUtil.calculateLuminance(layoutColor);
- float shift = Math.abs(senderName.hashCode()) % 5 / 4.0f - 0.5f;
-
- // we need to offset the range if the luminance is too close to the borders
- shift += Math.max(COLOR_SHIFT_AMOUNT / 2.0f / 100 - luminance, 0);
- shift -= Math.max(COLOR_SHIFT_AMOUNT / 2.0f / 100 - (1.0f - luminance), 0);
- return ContrastColorUtil.getShiftedColor(layoutColor,
- (int) (shift * COLOR_SHIFT_AMOUNT));
- }
-
- private String findNameSplit(String existingName) {
- String[] split = existingName.split(" ");
- if (split.length > 1) {
- return Character.toString(split[0].charAt(0))
- + Character.toString(split[1].charAt(0));
- }
- return existingName.substring(0, 1);
- }
-
@RemotableViewMethod
public void setLayoutColor(int color) {
mLayoutColor = color;
diff --git a/core/java/com/android/internal/widget/remotecompose/accessibility/AndroidPlatformSemanticNodeApplier.java b/core/java/com/android/internal/widget/remotecompose/accessibility/AndroidPlatformSemanticNodeApplier.java
index 1bdbaa48d18c..a53d6b899898 100644
--- a/core/java/com/android/internal/widget/remotecompose/accessibility/AndroidPlatformSemanticNodeApplier.java
+++ b/core/java/com/android/internal/widget/remotecompose/accessibility/AndroidPlatformSemanticNodeApplier.java
@@ -16,20 +16,33 @@
package com.android.internal.widget.remotecompose.accessibility;
import android.graphics.Rect;
+import android.view.View;
import android.view.accessibility.AccessibilityNodeInfo;
+import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
+
+import com.android.internal.widget.remotecompose.core.operations.RootContentBehavior;
+import com.android.internal.widget.remotecompose.core.semantics.ScrollableComponent;
+
+import java.util.List;
public class AndroidPlatformSemanticNodeApplier
extends BaseSemanticNodeApplier<AccessibilityNodeInfo> {
private static final String ROLE_DESCRIPTION_KEY = "AccessibilityNodeInfo.roleDescription";
+ private final View mPlayer;
+
+ public AndroidPlatformSemanticNodeApplier(View player) {
+ this.mPlayer = player;
+ }
+
@Override
protected void setClickable(AccessibilityNodeInfo nodeInfo, boolean clickable) {
nodeInfo.setClickable(clickable);
if (clickable) {
- nodeInfo.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_CLICK);
+ nodeInfo.addAction(AccessibilityAction.ACTION_CLICK);
} else {
- nodeInfo.removeAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_CLICK);
+ nodeInfo.removeAction(AccessibilityAction.ACTION_CLICK);
}
}
@@ -83,4 +96,68 @@ public class AndroidPlatformSemanticNodeApplier
protected void setUniqueId(AccessibilityNodeInfo nodeInfo, String id) {
nodeInfo.setUniqueId(id);
}
+
+ @Override
+ protected void applyScrollable(
+ AccessibilityNodeInfo nodeInfo,
+ ScrollableComponent.ScrollAxisRange scrollAxis,
+ int scrollDirection) {
+ nodeInfo.setScrollable(true);
+ nodeInfo.addAction(AccessibilityAction.ACTION_SCROLL_TO_POSITION);
+ nodeInfo.addAction(AccessibilityAction.ACTION_SET_PROGRESS);
+
+ nodeInfo.setGranularScrollingSupported(true);
+
+ if (scrollAxis.canScrollForward()) {
+ nodeInfo.addAction(AccessibilityAction.ACTION_SCROLL_FORWARD);
+ if (scrollDirection == RootContentBehavior.SCROLL_VERTICAL) {
+ nodeInfo.addAction(AccessibilityAction.ACTION_SCROLL_DOWN);
+ nodeInfo.addAction(AccessibilityAction.ACTION_PAGE_DOWN);
+ } else if (scrollDirection == RootContentBehavior.SCROLL_HORIZONTAL) {
+ // TODO handle RTL
+ nodeInfo.addAction(AccessibilityAction.ACTION_SCROLL_RIGHT);
+ nodeInfo.addAction(AccessibilityAction.ACTION_PAGE_RIGHT);
+ }
+ }
+
+ if (scrollAxis.canScrollBackwards()) {
+ nodeInfo.addAction(AccessibilityAction.ACTION_SCROLL_BACKWARD);
+ if (scrollDirection == RootContentBehavior.SCROLL_VERTICAL) {
+ nodeInfo.addAction(AccessibilityAction.ACTION_SCROLL_UP);
+ nodeInfo.addAction(AccessibilityAction.ACTION_PAGE_UP);
+ } else if (scrollDirection == RootContentBehavior.SCROLL_HORIZONTAL) {
+ // TODO handle RTL
+ nodeInfo.addAction(AccessibilityAction.ACTION_SCROLL_LEFT);
+ nodeInfo.addAction(AccessibilityAction.ACTION_PAGE_LEFT);
+ }
+ }
+
+ // TODO correct values
+ nodeInfo.setCollectionInfo(AccessibilityNodeInfo.CollectionInfo.obtain(-1, 1, false));
+
+ if (scrollDirection == RootContentBehavior.SCROLL_HORIZONTAL) {
+ nodeInfo.setClassName("android.widget.HorizontalScrollView");
+ } else {
+ nodeInfo.setClassName("android.widget.ScrollView");
+ }
+ }
+
+ @Override
+ protected void applyListItem(AccessibilityNodeInfo nodeInfo, int parentId) {
+ nodeInfo.addAction(AccessibilityAction.ACTION_SHOW_ON_SCREEN);
+ nodeInfo.setScreenReaderFocusable(true);
+ nodeInfo.setFocusable(true);
+ nodeInfo.setParent(mPlayer, parentId);
+
+ // TODO correct values
+ nodeInfo.setCollectionItemInfo(
+ AccessibilityNodeInfo.CollectionItemInfo.obtain(1, 1, 0, 1, false));
+ }
+
+ @Override
+ public void addChildren(AccessibilityNodeInfo nodeInfo, List<Integer> childIds) {
+ for (int id : childIds) {
+ nodeInfo.addChild(mPlayer, id);
+ }
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/accessibility/BaseSemanticNodeApplier.java b/core/java/com/android/internal/widget/remotecompose/accessibility/BaseSemanticNodeApplier.java
index 228afb88b5de..a82f506212c2 100644
--- a/core/java/com/android/internal/widget/remotecompose/accessibility/BaseSemanticNodeApplier.java
+++ b/core/java/com/android/internal/widget/remotecompose/accessibility/BaseSemanticNodeApplier.java
@@ -16,11 +16,15 @@
package com.android.internal.widget.remotecompose.accessibility;
import android.graphics.Rect;
+import android.util.Log;
import com.android.internal.widget.remotecompose.core.operations.layout.Component;
+import com.android.internal.widget.remotecompose.core.operations.layout.LayoutComponent;
import com.android.internal.widget.remotecompose.core.semantics.AccessibilitySemantics;
import com.android.internal.widget.remotecompose.core.semantics.AccessibleComponent;
import com.android.internal.widget.remotecompose.core.semantics.CoreSemantics;
+import com.android.internal.widget.remotecompose.core.semantics.ScrollableComponent;
+import com.android.internal.widget.remotecompose.core.semantics.ScrollableComponent.ScrollAxisRange;
import java.util.List;
@@ -37,6 +41,8 @@ import java.util.List;
* @param <N> The type of node this applier works with.
*/
public abstract class BaseSemanticNodeApplier<N> implements SemanticNodeApplier<N> {
+ private static final String LOG_TAG = "RemoteCompose";
+
@Override
public void applyComponent(
RemoteComposeDocumentAccessibility remoteComposeAccessibility,
@@ -74,6 +80,15 @@ public abstract class BaseSemanticNodeApplier<N> implements SemanticNodeApplier<
if (getText(nodeInfo) == null && getContentDescription(nodeInfo) == null) {
setContentDescription(nodeInfo, "");
}
+
+ if (component.getParent() instanceof LayoutComponent) {
+ LayoutComponent parent = (LayoutComponent) component.getParent();
+ ScrollableComponent scrollable = parent.selfOrModifier(ScrollableComponent.class);
+
+ if (scrollable != null) {
+ applyListItem(nodeInfo, parent.getComponentId());
+ }
+ }
}
protected void applySemantics(
@@ -106,6 +121,15 @@ public abstract class BaseSemanticNodeApplier<N> implements SemanticNodeApplier<
}
applyRole(accessibleComponent.getRole(), nodeInfo);
+ } else if (semantic instanceof ScrollableComponent) {
+ ScrollableComponent scrollableSemantic = (ScrollableComponent) semantic;
+
+ if (scrollableSemantic.supportsScrollByOffset()) {
+ ScrollAxisRange scrollAxis = scrollableSemantic.getScrollAxisRange();
+ applyScrollable(nodeInfo, scrollAxis, scrollableSemantic.scrollDirection());
+ }
+ } else {
+ Log.w(LOG_TAG, "Unknown semantic: " + semantic);
}
}
}
@@ -154,10 +178,8 @@ public abstract class BaseSemanticNodeApplier<N> implements SemanticNodeApplier<
N nodeInfo,
RemoteComposeDocumentAccessibility remoteComposeAccessibility) {
if (textId != null) {
- setText(
- nodeInfo,
- appendNullable(
- getText(nodeInfo), remoteComposeAccessibility.stringValue(textId)));
+ String value = remoteComposeAccessibility.stringValue(textId);
+ setText(nodeInfo, appendNullable(getText(nodeInfo), value));
}
}
@@ -205,4 +227,9 @@ public abstract class BaseSemanticNodeApplier<N> implements SemanticNodeApplier<
protected abstract void setBoundsInScreen(N nodeInfo, Rect bounds);
protected abstract void setUniqueId(N nodeInfo, String s);
+
+ protected abstract void applyScrollable(
+ N nodeInfo, ScrollAxisRange scrollAxis, int scrollDirection);
+
+ protected abstract void applyListItem(N nodeInfo, int parentId);
}
diff --git a/core/java/com/android/internal/widget/remotecompose/accessibility/CoreDocumentAccessibility.java b/core/java/com/android/internal/widget/remotecompose/accessibility/CoreDocumentAccessibility.java
index 52d51539867d..d3a496db2ca9 100644
--- a/core/java/com/android/internal/widget/remotecompose/accessibility/CoreDocumentAccessibility.java
+++ b/core/java/com/android/internal/widget/remotecompose/accessibility/CoreDocumentAccessibility.java
@@ -18,6 +18,7 @@ package com.android.internal.widget.remotecompose.accessibility;
import android.annotation.Nullable;
import android.graphics.PointF;
import android.os.Bundle;
+import android.view.accessibility.AccessibilityNodeInfo;
import com.android.internal.widget.remotecompose.core.CoreDocument;
import com.android.internal.widget.remotecompose.core.Operation;
@@ -31,6 +32,7 @@ import com.android.internal.widget.remotecompose.core.operations.layout.modifier
import com.android.internal.widget.remotecompose.core.semantics.AccessibilitySemantics;
import com.android.internal.widget.remotecompose.core.semantics.AccessibleComponent;
import com.android.internal.widget.remotecompose.core.semantics.CoreSemantics;
+import com.android.internal.widget.remotecompose.core.semantics.ScrollableComponent;
import java.util.ArrayList;
import java.util.Collections;
@@ -95,14 +97,90 @@ public class CoreDocumentAccessibility implements RemoteComposeDocumentAccessibi
return result;
}
- @Override
public boolean performAction(Component component, int action, Bundle arguments) {
- if (action == ACTION_CLICK) {
- mDocument.performClick(mRemoteContext, component.getComponentId());
- return true;
- } else {
- return false;
+ boolean needsRepaint = true;
+
+ try {
+ if (isClickAction(action)) {
+ return performClick(component);
+ } else if (isScrollForwardAction(action)) {
+ return scrollByOffset(mRemoteContext, component, -500) != 0;
+ } else if (isScrollBackwardAction(action)) {
+ return scrollByOffset(mRemoteContext, component, 500) != 0;
+ } else if (isShowOnScreenAction(action)) {
+ return showOnScreen(mRemoteContext, component);
+ } else {
+ needsRepaint = false;
+ return false;
+ }
+ } finally {
+ if (needsRepaint) {
+ mDocument.needsRepaint();
+ }
+ }
+ }
+
+ private static boolean isShowOnScreenAction(int action) {
+ return action == android.R.id.accessibilityActionShowOnScreen;
+ }
+
+ private static boolean isScrollBackwardAction(int action) {
+ return action == AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD
+ || action == android.R.id.accessibilityActionScrollUp
+ || action == android.R.id.accessibilityActionScrollLeft;
+ }
+
+ private static boolean isScrollForwardAction(int action) {
+ return action == AccessibilityNodeInfo.ACTION_SCROLL_FORWARD
+ || action == android.R.id.accessibilityActionScrollDown
+ || action == android.R.id.accessibilityActionScrollRight;
+ }
+
+ private static boolean isClickAction(int action) {
+ return action == AccessibilityNodeInfo.ACTION_CLICK;
+ }
+
+ private boolean showOnScreen(RemoteContext context, Component component) {
+ if (component.getParent() instanceof LayoutComponent) {
+ LayoutComponent parent = (LayoutComponent) component.getParent();
+ ScrollableComponent scrollable = parent.selfOrModifier(ScrollableComponent.class);
+
+ if (scrollable != null) {
+ scrollable.showOnScreen(context, component.getComponentId());
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * scroll content by the given offset
+ *
+ * @param context
+ * @param component
+ * @param pixels
+ * @return
+ */
+ public int scrollByOffset(RemoteContext context, Component component, int pixels) {
+ ScrollableComponent scrollable = component.selfOrModifier(ScrollableComponent.class);
+
+ if (scrollable != null) {
+ return scrollable.scrollByOffset(context, pixels);
}
+
+ return 0;
+ }
+
+ /**
+ * Perform a click on the given component
+ *
+ * @param component
+ * @return
+ */
+ public boolean performClick(Component component) {
+ mDocument.performClick(mRemoteContext, component.getComponentId());
+ return true;
}
@Nullable
diff --git a/core/java/com/android/internal/widget/remotecompose/accessibility/PlatformRemoteComposeAccessibilityRegistrar.java b/core/java/com/android/internal/widget/remotecompose/accessibility/PlatformRemoteComposeAccessibilityRegistrar.java
index 975383ee36b4..bce9e4495c79 100644
--- a/core/java/com/android/internal/widget/remotecompose/accessibility/PlatformRemoteComposeAccessibilityRegistrar.java
+++ b/core/java/com/android/internal/widget/remotecompose/accessibility/PlatformRemoteComposeAccessibilityRegistrar.java
@@ -34,7 +34,7 @@ public class PlatformRemoteComposeAccessibilityRegistrar
player,
new CoreDocumentAccessibility(
coreDocument, ((RemoteContextAware) player).getRemoteContext()),
- new AndroidPlatformSemanticNodeApplier());
+ new AndroidPlatformSemanticNodeApplier(player));
}
public void setAccessibilityDelegate(View remoteComposePlayer, CoreDocument document) {
diff --git a/core/java/com/android/internal/widget/remotecompose/accessibility/PlatformRemoteComposeTouchHelper.java b/core/java/com/android/internal/widget/remotecompose/accessibility/PlatformRemoteComposeTouchHelper.java
index c8474b19058f..c38a44ac30be 100644
--- a/core/java/com/android/internal/widget/remotecompose/accessibility/PlatformRemoteComposeTouchHelper.java
+++ b/core/java/com/android/internal/widget/remotecompose/accessibility/PlatformRemoteComposeTouchHelper.java
@@ -33,10 +33,7 @@ import com.android.internal.widget.remotecompose.core.operations.layout.Componen
import com.android.internal.widget.remotecompose.core.semantics.AccessibilitySemantics;
import com.android.internal.widget.remotecompose.core.semantics.AccessibleComponent.Mode;
-import java.util.HashSet;
import java.util.List;
-import java.util.Set;
-import java.util.Stack;
public class PlatformRemoteComposeTouchHelper extends ExploreByTouchHelper {
private final RemoteComposeDocumentAccessibility mRemoteDocA11y;
@@ -58,7 +55,7 @@ public class PlatformRemoteComposeTouchHelper extends ExploreByTouchHelper {
player,
new CoreDocumentAccessibility(
coreDocument, ((RemoteContextAware) player).getRemoteContext()),
- new AndroidPlatformSemanticNodeApplier());
+ new AndroidPlatformSemanticNodeApplier(player));
}
/**
@@ -96,35 +93,17 @@ public class PlatformRemoteComposeTouchHelper extends ExploreByTouchHelper {
*/
@Override
protected void getVisibleVirtualViews(IntArray virtualViewIds) {
- Stack<Integer> toVisit = new Stack<>();
- Set<Integer> visited = new HashSet<>();
+ Component rootComponent = mRemoteDocA11y.findComponentById(RootId);
- toVisit.push(RootId);
-
- while (!toVisit.isEmpty()) {
- Integer componentId = toVisit.remove(0);
-
- if (visited.add(componentId)) {
- Component component = mRemoteDocA11y.findComponentById(componentId);
-
- // Only include the root when it has semantics such as content description
- if (!RootId.equals(componentId)
- || !mRemoteDocA11y.semanticModifiersForComponent(component).isEmpty()) {
- virtualViewIds.add(componentId);
- }
-
- if (component != null) {
- Mode mergeMode = mRemoteDocA11y.mergeMode(component);
-
- if (mergeMode == Mode.SET) {
- List<Integer> childViews =
- mRemoteDocA11y.semanticallyRelevantChildComponents(
- component, false);
+ if (rootComponent == null
+ || !mRemoteDocA11y.semanticModifiersForComponent(rootComponent).isEmpty()) {
+ virtualViewIds.add(RootId);
+ }
- toVisit.addAll(childViews);
- }
- }
- }
+ List<Integer> children =
+ mRemoteDocA11y.semanticallyRelevantChildComponents(rootComponent, false);
+ for (int child : children) {
+ virtualViewIds.add(child);
}
}
@@ -150,6 +129,13 @@ public class PlatformRemoteComposeTouchHelper extends ExploreByTouchHelper {
List<AccessibilitySemantics> semantics =
mRemoteDocA11y.semanticModifiersForComponent(component);
mApplier.applyComponent(mRemoteDocA11y, node, component, semantics);
+
+ if (mergeMode == Mode.SET) {
+ List<Integer> childViews =
+ mRemoteDocA11y.semanticallyRelevantChildComponents(component, false);
+
+ mApplier.addChildren(node, childViews);
+ }
}
@Override
@@ -161,7 +147,13 @@ public class PlatformRemoteComposeTouchHelper extends ExploreByTouchHelper {
Component component = mRemoteDocA11y.findComponentById(virtualViewId);
if (component != null) {
- return mRemoteDocA11y.performAction(component, action, arguments);
+ boolean performed = mRemoteDocA11y.performAction(component, action, arguments);
+
+ if (performed) {
+ invalidateRoot();
+ }
+
+ return performed;
} else {
return false;
}
diff --git a/core/java/com/android/internal/widget/remotecompose/accessibility/SemanticNodeApplier.java b/core/java/com/android/internal/widget/remotecompose/accessibility/SemanticNodeApplier.java
index 832b5426f476..031db1f895e5 100644
--- a/core/java/com/android/internal/widget/remotecompose/accessibility/SemanticNodeApplier.java
+++ b/core/java/com/android/internal/widget/remotecompose/accessibility/SemanticNodeApplier.java
@@ -40,5 +40,13 @@ public interface SemanticNodeApplier<N> {
Component component,
List<AccessibilitySemantics> semantics);
+ /**
+ * add children to the node
+ *
+ * @param nodeInfo
+ * @param childIds
+ */
+ void addChildren(N nodeInfo, List<Integer> childIds);
+
String VIRTUAL_VIEW_ID_KEY = "VirtualViewId";
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/CoreDocument.java b/core/java/com/android/internal/widget/remotecompose/core/CoreDocument.java
index 0cfaf5592d6f..dea1caf76a5c 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/CoreDocument.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/CoreDocument.java
@@ -36,6 +36,8 @@ import com.android.internal.widget.remotecompose.core.operations.layout.RootLayo
import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.ComponentModifiers;
import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.ModifierOperation;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
@@ -48,21 +50,21 @@ import java.util.Set;
* Represents a platform independent RemoteCompose document, containing RemoteCompose operations +
* state
*/
-public class CoreDocument {
+public class CoreDocument implements Serializable {
private static final boolean DEBUG = false;
// Semantic version
public static final int MAJOR_VERSION = 0;
- public static final int MINOR_VERSION = 3;
+ public static final int MINOR_VERSION = 4;
public static final int PATCH_VERSION = 0;
// Internal version level
- public static final int DOCUMENT_API_LEVEL = 3;
+ public static final int DOCUMENT_API_LEVEL = 4;
// We also keep a more fine-grained BUILD number, exposed as
// ID_API_LEVEL = DOCUMENT_API_LEVEL + BUILD
- static final float BUILD = 0.4f;
+ static final float BUILD = 0.0f;
@NonNull ArrayList<Operation> mOperations = new ArrayList<>();
@@ -403,6 +405,14 @@ public class CoreDocument {
}
}
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer.add("type", "CoreDocument");
+ serializer.add("width", mWidth);
+ serializer.add("height", mHeight);
+ serializer.add("operations", mOperations);
+ }
+
// ============== Haptic support ==================
public interface HapticEngine {
/**
@@ -1308,10 +1318,25 @@ public class CoreDocument {
* @param ctl the call back to allow evaluation of shaders
*/
public void checkShaders(RemoteContext context, ShaderControl ctl) {
- for (Operation op : mOperations) {
+ checkShaders(context, ctl, mOperations);
+ }
+
+ /**
+ * Recursive private version that checks the shaders
+ *
+ * @param context the remote context
+ * @param ctl the call back to allow evaluation of shaders
+ * @param operations the operations to check
+ */
+ private void checkShaders(
+ RemoteContext context, ShaderControl ctl, List<Operation> operations) {
+ for (Operation op : operations) {
if (op instanceof TextData) {
op.apply(context);
}
+ if (op instanceof Container) {
+ checkShaders(context, ctl, ((Container) op).getList());
+ }
if (op instanceof ShaderData) {
ShaderData sd = (ShaderData) op;
int id = sd.getShaderTextId();
diff --git a/core/java/com/android/internal/widget/remotecompose/core/Operations.java b/core/java/com/android/internal/widget/remotecompose/core/Operations.java
index 3760af2f7460..9bb8d9f39975 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/Operations.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/Operations.java
@@ -50,6 +50,7 @@ import com.android.internal.widget.remotecompose.core.operations.FloatExpression
import com.android.internal.widget.remotecompose.core.operations.FloatFunctionCall;
import com.android.internal.widget.remotecompose.core.operations.FloatFunctionDefine;
import com.android.internal.widget.remotecompose.core.operations.Header;
+import com.android.internal.widget.remotecompose.core.operations.ImageAttribute;
import com.android.internal.widget.remotecompose.core.operations.IntegerExpression;
import com.android.internal.widget.remotecompose.core.operations.MatrixRestore;
import com.android.internal.widget.remotecompose.core.operations.MatrixRotate;
@@ -68,6 +69,7 @@ import com.android.internal.widget.remotecompose.core.operations.PathTween;
import com.android.internal.widget.remotecompose.core.operations.RootContentBehavior;
import com.android.internal.widget.remotecompose.core.operations.RootContentDescription;
import com.android.internal.widget.remotecompose.core.operations.ShaderData;
+import com.android.internal.widget.remotecompose.core.operations.TextAttribute;
import com.android.internal.widget.remotecompose.core.operations.TextData;
import com.android.internal.widget.remotecompose.core.operations.TextFromFloat;
import com.android.internal.widget.remotecompose.core.operations.TextLength;
@@ -76,6 +78,7 @@ import com.android.internal.widget.remotecompose.core.operations.TextLookupInt;
import com.android.internal.widget.remotecompose.core.operations.TextMeasure;
import com.android.internal.widget.remotecompose.core.operations.TextMerge;
import com.android.internal.widget.remotecompose.core.operations.Theme;
+import com.android.internal.widget.remotecompose.core.operations.TimeAttribute;
import com.android.internal.widget.remotecompose.core.operations.TouchExpression;
import com.android.internal.widget.remotecompose.core.operations.layout.CanvasContent;
import com.android.internal.widget.remotecompose.core.operations.layout.ClickModifierOperation;
@@ -209,6 +212,9 @@ public class Operations {
public static final int IMPULSE_PROCESS = 165;
public static final int FUNCTION_CALL = 166;
public static final int FUNCTION_DEFINE = 168;
+ public static final int ATTRIBUTE_TEXT = 170;
+ public static final int ATTRIBUTE_IMAGE = 171;
+ public static final int ATTRIBUTE_TIME = 172;
///////////////////////////////////////// ======================
@@ -405,6 +411,10 @@ public class Operations {
map.put(FUNCTION_DEFINE, FloatFunctionDefine::read);
map.put(ACCESSIBILITY_SEMANTICS, CoreSemantics::read);
+ map.put(ATTRIBUTE_IMAGE, ImageAttribute::read);
+ map.put(ATTRIBUTE_TEXT, TextAttribute::read);
+ map.put(ATTRIBUTE_TIME, TimeAttribute::read);
+
// map.put(ACCESSIBILITY_CUSTOM_ACTION, CoreSemantics::read);
}
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/PaintContext.java b/core/java/com/android/internal/widget/remotecompose/core/PaintContext.java
index 49a0457c3595..a5b669d6aecf 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/PaintContext.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/PaintContext.java
@@ -24,6 +24,8 @@ import com.android.internal.widget.remotecompose.core.operations.paint.PaintBund
public abstract class PaintContext {
public static final int TEXT_MEASURE_MONOSPACE_WIDTH = 0x01;
public static final int TEXT_MEASURE_FONT_HEIGHT = 0x02;
+ public static final int TEXT_MEASURE_SPACES = 0x04;
+ public static final int TEXT_COMPLEX = 0x08;
protected @NonNull RemoteContext mContext;
private boolean mNeedsRepaint = false;
@@ -233,15 +235,53 @@ public abstract class PaintContext {
* @param textId
* @param start
* @param end if end is -1 it means the whole string
- * @param flags how to measure: TEXT_MEASURE_MONOSPACE_WIDTH - measure as a monospace font
- * TEXT_MEASURE_FULL_HEIGHT - measure bounds of the given string using the max ascend and
- * descent of the font (not just of the measured text)
+ * @param flags how to measure:
+ * <ul>
+ * <li>TEXT_MEASURE_MONOSPACE_WIDTH - measure as a monospace font
+ * <li>TEXT_MEASURE_FULL_HEIGHT - measure bounds of the given string using the max ascend
+ * and descent of the font (not just of the measured text).
+ * <li>TEXT_MEASURE_SPACES - make sure to include leading/trailing spaces in the measure
+ * <li>TEXT_MEASURE_COMPLEX - complex text
+ * </ul>
+ *
* @param bounds the bounds (left, top, right, bottom)
*/
public abstract void getTextBounds(
int textId, int start, int end, int flags, @NonNull float[] bounds);
/**
+ * Compute complex text layout
+ *
+ * @param textId
+ * @param start
+ * @param end if end is -1 it means the whole string
+ * @param alignment draw the text aligned start/center/end in the available space if > text
+ * length
+ * @param overflow overflow behavior when text length > max width
+ * @param maxLines maximum number of lines to display
+ * @param maxWidth maximum width to layout the text
+ * @param flags how to measure:
+ * <ul>
+ * <li>TEXT_MEASURE_MONOSPACE_WIDTH - measure as a monospace font
+ * <li>TEXT_MEASURE_FULL_HEIGHT - measure bounds of the given string using the max ascend
+ * and descent of the font (not just of the measured text).
+ * <li>TEXT_MEASURE_SPACES - make sure to include leading/trailing spaces in the measure
+ * <li>TEXT_MEASURE_COMPLEX - complex text
+ * </ul>
+ *
+ * @return an instance of a ComputedTextLayout (typically if complex text drawing is used)
+ */
+ public abstract Platform.ComputedTextLayout layoutComplexText(
+ int textId,
+ int start,
+ int end,
+ int alignment,
+ int overflow,
+ int maxLines,
+ float maxWidth,
+ int flags);
+
+ /**
* Draw a text starting ast x,y
*
* @param textId reference to the text
@@ -264,6 +304,13 @@ public abstract class PaintContext {
boolean rtl);
/**
+ * Draw a complex text (multilines, etc.)
+ *
+ * @param computedTextLayout pre-computed text layout
+ */
+ public abstract void drawComplexText(Platform.ComputedTextLayout computedTextLayout);
+
+ /**
* Draw an interpolation between two paths
*
* @param path1Id
diff --git a/core/java/com/android/internal/widget/remotecompose/core/Platform.java b/core/java/com/android/internal/widget/remotecompose/core/Platform.java
index e4a063d7d6ff..6073de662cdb 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/Platform.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/Platform.java
@@ -71,6 +71,27 @@ public interface Platform {
*/
void log(LogCategory category, String message);
+ /**
+ * Represents a precomputed text layout, for complex text painting / measuring / layout. Allows
+ * the implementation to return a cached / engine after a text measure to be used int the paint
+ * pass.
+ */
+ interface ComputedTextLayout {
+ /**
+ * Horizontal dimension of this text layout
+ *
+ * @return
+ */
+ float getWidth();
+
+ /**
+ * Vertical dimension of this text layout
+ *
+ * @return
+ */
+ float getHeight();
+ }
+
Platform None =
new Platform() {
@Override
diff --git a/core/java/com/android/internal/widget/remotecompose/core/RemoteComposeBuffer.java b/core/java/com/android/internal/widget/remotecompose/core/RemoteComposeBuffer.java
index f83ecef1074d..c6ef1d3c457d 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/RemoteComposeBuffer.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/RemoteComposeBuffer.java
@@ -53,6 +53,7 @@ import com.android.internal.widget.remotecompose.core.operations.FloatExpression
import com.android.internal.widget.remotecompose.core.operations.FloatFunctionCall;
import com.android.internal.widget.remotecompose.core.operations.FloatFunctionDefine;
import com.android.internal.widget.remotecompose.core.operations.Header;
+import com.android.internal.widget.remotecompose.core.operations.ImageAttribute;
import com.android.internal.widget.remotecompose.core.operations.IntegerExpression;
import com.android.internal.widget.remotecompose.core.operations.MatrixRestore;
import com.android.internal.widget.remotecompose.core.operations.MatrixRotate;
@@ -70,6 +71,7 @@ import com.android.internal.widget.remotecompose.core.operations.PathData;
import com.android.internal.widget.remotecompose.core.operations.PathTween;
import com.android.internal.widget.remotecompose.core.operations.RootContentBehavior;
import com.android.internal.widget.remotecompose.core.operations.RootContentDescription;
+import com.android.internal.widget.remotecompose.core.operations.TextAttribute;
import com.android.internal.widget.remotecompose.core.operations.TextData;
import com.android.internal.widget.remotecompose.core.operations.TextFromFloat;
import com.android.internal.widget.remotecompose.core.operations.TextLength;
@@ -78,6 +80,7 @@ import com.android.internal.widget.remotecompose.core.operations.TextLookupInt;
import com.android.internal.widget.remotecompose.core.operations.TextMeasure;
import com.android.internal.widget.remotecompose.core.operations.TextMerge;
import com.android.internal.widget.remotecompose.core.operations.Theme;
+import com.android.internal.widget.remotecompose.core.operations.TimeAttribute;
import com.android.internal.widget.remotecompose.core.operations.TouchExpression;
import com.android.internal.widget.remotecompose.core.operations.Utils;
import com.android.internal.widget.remotecompose.core.operations.layout.CanvasContent;
@@ -2230,6 +2233,8 @@ public class RemoteComposeBuffer {
* @param fontStyle font style (0 : Normal, 1 : Italic)
* @param fontWeight font weight (1 to 1000, normal is 400)
* @param fontFamily font family or null
+ * @param overflow
+ * @param maxLines
*/
public void addTextComponentStart(
int componentId,
@@ -2240,7 +2245,9 @@ public class RemoteComposeBuffer {
int fontStyle,
float fontWeight,
@Nullable String fontFamily,
- int textAlign) {
+ int textAlign,
+ int overflow,
+ int maxLines) {
mLastComponentId = getComponentId(componentId);
int fontFamilyId = -1;
if (fontFamily != null) {
@@ -2256,7 +2263,9 @@ public class RemoteComposeBuffer {
fontStyle,
fontWeight,
fontFamilyId,
- textAlign);
+ textAlign,
+ overflow,
+ maxLines);
}
/**
@@ -2357,4 +2366,38 @@ public class RemoteComposeBuffer {
public void callFloatFunction(int id, float[] args) {
FloatFunctionCall.apply(mBuffer, id, args);
}
+
+ /**
+ * @param bitmapId the id of the bitmap
+ * @param attribute the attribute to get
+ * @return the nan id of the attribute
+ */
+ public float bitmapAttribute(int bitmapId, short attribute) {
+ int id = mRemoteComposeState.nextId();
+ ImageAttribute.apply(mBuffer, id, bitmapId, attribute, null);
+ return Utils.asNan(id);
+ }
+
+ /**
+ * @param textId the id of the bitmap
+ * @param attribute the attribute to get
+ * @return the nan id of the attribute
+ */
+ public float textAttribute(int textId, short attribute) {
+ int id = mRemoteComposeState.nextId();
+ TextAttribute.apply(mBuffer, id, textId, attribute);
+ return Utils.asNan(id);
+ }
+
+ /**
+ * @param timeId the id of the long
+ * @param attribute the attribute to get
+ * @param args the arguments of the function
+ * @return the nan id of the attribute
+ */
+ public float timeAttribute(int timeId, short attribute, int... args) {
+ int id = mRemoteComposeState.nextId();
+ TimeAttribute.apply(mBuffer, id, timeId, attribute, args);
+ return Utils.asNan(id);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/BitmapData.java b/core/java/com/android/internal/widget/remotecompose/core/operations/BitmapData.java
index 784897b04991..13e6f3859933 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/BitmapData.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/BitmapData.java
@@ -29,6 +29,8 @@ import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
import java.util.List;
@@ -36,7 +38,7 @@ import java.util.List;
* Operation to deal with bitmap data On getting an Image during a draw call the bitmap is
* compressed and saved in playback the image is decompressed
*/
-public class BitmapData extends Operation implements SerializableToString {
+public class BitmapData extends Operation implements SerializableToString, Serializable {
private static final int OP_CODE = Operations.DATA_BITMAP;
private static final String CLASS_NAME = "BitmapData";
int mImageId;
@@ -222,6 +224,7 @@ public class BitmapData extends Operation implements SerializableToString {
@Override
public void apply(@NonNull RemoteContext context) {
+ context.putObject(mImageId, this);
context.loadBitmap(mImageId, mEncoding, mType, mImageWidth, mImageHeight, mBitmap);
}
@@ -237,4 +240,43 @@ public class BitmapData extends Operation implements SerializableToString {
indent,
CLASS_NAME + " id " + mImageId + " (" + mImageWidth + "x" + mImageHeight + ")");
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .add("type", CLASS_NAME)
+ .add("imageId", mImageId)
+ .add("imageWidth", mImageWidth)
+ .add("imageHeight", mImageHeight)
+ .add("imageType", getImageTypeString(mType))
+ .add("encoding", getEncodingString(mEncoding));
+ }
+
+ private String getEncodingString(short encoding) {
+ switch (encoding) {
+ case ENCODING_INLINE:
+ return "ENCODING_INLINE";
+ case ENCODING_URL:
+ return "ENCODING_URL";
+ case ENCODING_FILE:
+ return "ENCODING_FILE";
+ default:
+ return "ENCODING_INVALID";
+ }
+ }
+
+ private String getImageTypeString(short type) {
+ switch (type) {
+ case TYPE_PNG_8888:
+ return "TYPE_PNG_8888";
+ case TYPE_PNG:
+ return "TYPE_PNG";
+ case TYPE_RAW8:
+ return "TYPE_RAW8";
+ case TYPE_RAW8888:
+ return "TYPE_RAW8888";
+ default:
+ return "TYPE_INVALID";
+ }
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/BitmapFontData.java b/core/java/com/android/internal/widget/remotecompose/core/operations/BitmapFontData.java
index cbd30dc21caf..078ce981d243 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/BitmapFontData.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/BitmapFontData.java
@@ -26,12 +26,14 @@ import com.android.internal.widget.remotecompose.core.RemoteContext;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
import java.util.Arrays;
import java.util.List;
/** Operation to deal with bitmap font data. */
-public class BitmapFontData extends Operation {
+public class BitmapFontData extends Operation implements Serializable {
private static final int OP_CODE = Operations.DATA_BITMAP_FONT;
private static final String CLASS_NAME = "BitmapFontData";
@@ -216,4 +218,9 @@ public class BitmapFontData extends Operation {
}
return null;
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer.add("type", CLASS_NAME).add("id", mId);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/ClickArea.java b/core/java/com/android/internal/widget/remotecompose/core/operations/ClickArea.java
index bb112d1cb732..00ac9c28f362 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/ClickArea.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/ClickArea.java
@@ -26,12 +26,14 @@ import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
import com.android.internal.widget.remotecompose.core.semantics.AccessibleComponent;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
import java.util.List;
/** Add a click area to the document */
public class ClickArea extends Operation
- implements RemoteComposeOperation, AccessibleComponent, VariableSupport {
+ implements RemoteComposeOperation, AccessibleComponent, VariableSupport, Serializable {
private static final int OP_CODE = Operations.CLICK_AREA;
private static final String CLASS_NAME = "ClickArea";
int mId;
@@ -231,4 +233,17 @@ public class ClickArea extends Operation
"metadata",
"user defined string accessible in callback");
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .add("type", CLASS_NAME)
+ .add("id", mId)
+ .add("contentDescriptionId", mContentDescription)
+ .add("left", mLeft, mOutLeft)
+ .add("top", mTop, mOutTop)
+ .add("right", mRight, mOutRight)
+ .add("bottom", mBottom, mOutBottom)
+ .add("metadata", mMetadata);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/ClipPath.java b/core/java/com/android/internal/widget/remotecompose/core/operations/ClipPath.java
index 06ef9979a267..e7dc405b542e 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/ClipPath.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/ClipPath.java
@@ -24,6 +24,8 @@ import com.android.internal.widget.remotecompose.core.PaintOperation;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
import java.util.List;
@@ -31,7 +33,7 @@ import java.util.List;
* Defines a path that clips a the subsequent drawing commands Use MatrixSave and MatrixRestore
* commands to remove clip TODO allow id 0 to mean null?
*/
-public class ClipPath extends PaintOperation {
+public class ClipPath extends PaintOperation implements Serializable {
private static final int OP_CODE = Operations.CLIP_PATH;
private static final String CLASS_NAME = "ClipPath";
int mId;
@@ -128,4 +130,26 @@ public class ClipPath extends PaintOperation {
public void paint(@NonNull PaintContext context) {
context.clipPath(mId, mRegionOp);
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer.add("type", CLASS_NAME).add("id", mId).add("regionOp", regionOpToString());
+ }
+
+ String regionOpToString() {
+ switch (mRegionOp) {
+ case REPLACE:
+ return "REPLACE";
+ case DIFFERENCE:
+ return "DIFFERENCE";
+ case INTERSECT:
+ return "INTERSECT";
+ case XOR:
+ return "XOR";
+ case REVERSE_DIFFERENCE:
+ return "REVERSE_DIFFERENCE";
+ default:
+ return "UNDEFINED";
+ }
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/ClipRect.java b/core/java/com/android/internal/widget/remotecompose/core/operations/ClipRect.java
index 5a495d54e8da..1646146bd21d 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/ClipRect.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/ClipRect.java
@@ -23,6 +23,7 @@ import com.android.internal.widget.remotecompose.core.PaintContext;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
import java.util.List;
@@ -114,4 +115,9 @@ public class ClipRect extends DrawBase4 {
public static void apply(@NonNull WireBuffer buffer, float x1, float y1, float x2, float y2) {
write(buffer, OP_CODE, x1, y1, x2, y2);
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serialize(serializer, "left", "top", "right", "bottom").add("type", CLASS_NAME);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/ColorConstant.java b/core/java/com/android/internal/widget/remotecompose/core/operations/ColorConstant.java
index 68020157b8d1..333ffaae8289 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/ColorConstant.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/ColorConstant.java
@@ -25,11 +25,13 @@ import com.android.internal.widget.remotecompose.core.RemoteContext;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
import java.util.List;
/** Operation that defines a simple Color based on ID Mainly for colors in theming. */
-public class ColorConstant extends Operation {
+public class ColorConstant extends Operation implements Serializable {
private static final int OP_CODE = Operations.COLOR_CONSTANT;
private static final String CLASS_NAME = "ColorConstant";
@@ -127,4 +129,12 @@ public class ColorConstant extends Operation {
public String deepToString(@NonNull String indent) {
return indent + toString();
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .add("type", CLASS_NAME)
+ .add("color", Utils.colorInt(mColor))
+ .add("colorId", mColorId);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/ColorExpression.java b/core/java/com/android/internal/widget/remotecompose/core/operations/ColorExpression.java
index 73f99ccb4405..a593241888df 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/ColorExpression.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/ColorExpression.java
@@ -224,7 +224,7 @@ public class ColorExpression extends Operation implements VariableSupport {
@Override
public void registerListening(@NonNull RemoteContext context) {
- if (mMode == 4) {
+ if (mMode == HSV_MODE) {
if (Float.isNaN(mHue)) {
context.listensTo(Utils.idFromNan(mHue), this);
}
@@ -236,6 +236,21 @@ public class ColorExpression extends Operation implements VariableSupport {
}
return;
}
+ if (mMode == ARGB_MODE) {
+ if (Float.isNaN(mArgbAlpha)) {
+ context.listensTo(Utils.idFromNan(mArgbAlpha), this);
+ }
+ if (Float.isNaN(mArgbRed)) {
+ context.listensTo(Utils.idFromNan(mArgbRed), this);
+ }
+ if (Float.isNaN(mArgbGreen)) {
+ context.listensTo(Utils.idFromNan(mArgbGreen), this);
+ }
+ if (Float.isNaN(mArgbBlue)) {
+ context.listensTo(Utils.idFromNan(mArgbBlue), this);
+ }
+ return;
+ }
if (Float.isNaN(mTween)) {
context.listensTo(Utils.idFromNan(mTween), this);
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/ComponentValue.java b/core/java/com/android/internal/widget/remotecompose/core/operations/ComponentValue.java
index 3e852364cfee..cd13d2534266 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/ComponentValue.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/ComponentValue.java
@@ -27,10 +27,12 @@ import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
import java.util.List;
-public class ComponentValue extends Operation implements SerializableToString {
+public class ComponentValue extends Operation implements SerializableToString, Serializable {
private static final int OP_CODE = Operations.COMPONENT_VALUE;
private static final String CLASS_NAME = "ComponentValue";
@@ -165,4 +167,19 @@ public class ComponentValue extends Operation implements SerializableToString {
+ " of Component "
+ mComponentID);
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .add("type", CLASS_NAME)
+ .add("valueId", mValueId)
+ .add("componentValueType", typeToString(mType))
+ .add("componentId", mComponentID);
+ }
+
+ private String typeToString(int type) {
+ if (type == WIDTH) return "WIDTH";
+ if (type == HEIGHT) return "HEIGHT";
+ return "INVALID_TYPE";
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawArc.java b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawArc.java
index fd1f41065dd9..a427836b6c5f 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawArc.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawArc.java
@@ -23,6 +23,7 @@ import com.android.internal.widget.remotecompose.core.PaintContext;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
import java.util.List;
@@ -136,4 +137,10 @@ public class DrawArc extends DrawBase6 {
public void paint(@NonNull PaintContext context) {
context.drawArc(mV1, mV2, mV3, mV4, mV5, mV6);
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serialize(serializer, "left", "top", "right", "bottom", "startAngle", "sweepAngle")
+ .add("type", CLASS_NAME);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawBase2.java b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawBase2.java
index 411353bd3509..6df4b91cc405 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawBase2.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawBase2.java
@@ -25,11 +25,13 @@ import com.android.internal.widget.remotecompose.core.PaintOperation;
import com.android.internal.widget.remotecompose.core.RemoteContext;
import com.android.internal.widget.remotecompose.core.VariableSupport;
import com.android.internal.widget.remotecompose.core.WireBuffer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
import java.util.List;
/** Base class for commands that take 3 float */
-public abstract class DrawBase2 extends PaintOperation implements VariableSupport {
+public abstract class DrawBase2 extends PaintOperation implements VariableSupport, Serializable {
@NonNull protected String mName = "DrawRectBase";
float mV1;
float mV2;
@@ -117,4 +119,8 @@ public abstract class DrawBase2 extends PaintOperation implements VariableSuppor
buffer.writeFloat(x1);
buffer.writeFloat(y1);
}
+
+ protected MapSerializer serialize(MapSerializer serializer, String v1Name, String v2Name) {
+ return serializer.add(v1Name, mV1, mValue1).add(v2Name, mV2, mValue2);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawBase3.java b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawBase3.java
index a6bfda8beccd..16ead454d84f 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawBase3.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawBase3.java
@@ -25,11 +25,13 @@ import com.android.internal.widget.remotecompose.core.PaintOperation;
import com.android.internal.widget.remotecompose.core.RemoteContext;
import com.android.internal.widget.remotecompose.core.VariableSupport;
import com.android.internal.widget.remotecompose.core.WireBuffer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
import java.util.List;
/** Base class for commands that take 3 float */
-public abstract class DrawBase3 extends PaintOperation implements VariableSupport {
+public abstract class DrawBase3 extends PaintOperation implements VariableSupport, Serializable {
@NonNull protected String mName = "DrawRectBase";
float mV1;
@@ -120,4 +122,12 @@ public abstract class DrawBase3 extends PaintOperation implements VariableSuppor
public Operation construct(float x1, float y1, float x2) {
return null;
}
+
+ protected MapSerializer serialize(
+ MapSerializer serializer, String v1Name, String v2Name, String v3Name) {
+ return serializer
+ .add(v1Name, mV1, mValue1)
+ .add(v2Name, mV2, mValue2)
+ .add(v3Name, mV3, mValue3);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawBase4.java b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawBase4.java
index 1e96bcd9cebf..0733b833be11 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawBase4.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawBase4.java
@@ -25,11 +25,13 @@ import com.android.internal.widget.remotecompose.core.PaintOperation;
import com.android.internal.widget.remotecompose.core.RemoteContext;
import com.android.internal.widget.remotecompose.core.VariableSupport;
import com.android.internal.widget.remotecompose.core.WireBuffer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
import java.util.List;
/** Base class for draw commands that take 4 floats */
-public abstract class DrawBase4 extends PaintOperation implements VariableSupport {
+public abstract class DrawBase4 extends PaintOperation implements VariableSupport, Serializable {
@NonNull protected String mName = "DrawRectBase";
protected float mX1;
protected float mY1;
@@ -152,4 +154,13 @@ public abstract class DrawBase4 extends PaintOperation implements VariableSuppor
buffer.writeFloat(x2);
buffer.writeFloat(y2);
}
+
+ protected MapSerializer serialize(
+ MapSerializer serializer, String x1Name, String y1Name, String x2Name, String y2Name) {
+ return serializer
+ .add(x1Name, mX1, mX1Value)
+ .add(y1Name, mY1, mY1Value)
+ .add(x2Name, mX2, mX2Value)
+ .add(y2Name, mY2, mY2Value);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawBase6.java b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawBase6.java
index bc5904584527..75b87c04e810 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawBase6.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawBase6.java
@@ -23,11 +23,13 @@ import com.android.internal.widget.remotecompose.core.PaintOperation;
import com.android.internal.widget.remotecompose.core.RemoteContext;
import com.android.internal.widget.remotecompose.core.VariableSupport;
import com.android.internal.widget.remotecompose.core.WireBuffer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
import java.util.List;
/** Base class for draw commands the take 6 floats */
-public abstract class DrawBase6 extends PaintOperation implements VariableSupport {
+public abstract class DrawBase6 extends PaintOperation implements VariableSupport, Serializable {
@NonNull protected String mName = "DrawRectBase";
float mV1;
float mV2;
@@ -161,4 +163,21 @@ public abstract class DrawBase6 extends PaintOperation implements VariableSuppor
public static String name() {
return "DrawBase6";
}
+
+ protected MapSerializer serialize(
+ MapSerializer serializer,
+ String v1Name,
+ String v2Name,
+ String v3Name,
+ String v4Name,
+ String v5Name,
+ String v6Name) {
+ return serializer
+ .add(v1Name, mV1, mValue1)
+ .add(v2Name, mV2, mValue2)
+ .add(v3Name, mV3, mValue3)
+ .add(v4Name, mV4, mValue4)
+ .add(v5Name, mV5, mValue5)
+ .add(v6Name, mV6, mValue6);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawCircle.java b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawCircle.java
index 735e262ce94f..dfc89b12de1e 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawCircle.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawCircle.java
@@ -23,6 +23,7 @@ import com.android.internal.widget.remotecompose.core.PaintContext;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
import java.util.List;
@@ -108,4 +109,9 @@ public class DrawCircle extends DrawBase3 {
buffer.writeFloat(y1);
buffer.writeFloat(x2);
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serialize(serializer, "cx", "cy", "radius").add("type", CLASS_NAME);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawLine.java b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawLine.java
index f3a190d98960..461dece02625 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawLine.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawLine.java
@@ -25,6 +25,7 @@ import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
import java.util.List;
@@ -136,4 +137,9 @@ public class DrawLine extends DrawBase4 implements SerializableToString {
}
serializer.append(indent, CLASS_NAME + "(" + x1 + ", " + y1 + ", " + x2 + ", " + y2 + ")");
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serialize(serializer, "startX", "startY", "endX", "endY").add("type", CLASS_NAME);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawOval.java b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawOval.java
index a009874302e0..d0a5adc0e737 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawOval.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawOval.java
@@ -23,6 +23,7 @@ import com.android.internal.widget.remotecompose.core.PaintContext;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
import java.util.List;
@@ -106,4 +107,9 @@ public class DrawOval extends DrawBase4 {
public static void apply(@NonNull WireBuffer buffer, float x1, float y1, float x2, float y2) {
write(buffer, OP_CODE, x1, y1, x2, y2);
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serialize(serializer, "left", "top", "right", "bottom").add("type", CLASS_NAME);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawPath.java b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawPath.java
index db9c4d3efafa..3fd8bb440d82 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawPath.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawPath.java
@@ -24,10 +24,12 @@ import com.android.internal.widget.remotecompose.core.PaintOperation;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
import java.util.List;
-public class DrawPath extends PaintOperation {
+public class DrawPath extends PaintOperation implements Serializable {
private static final int OP_CODE = Operations.DRAW_PATH;
private static final String CLASS_NAME = "DrawPath";
@@ -107,4 +109,9 @@ public class DrawPath extends PaintOperation {
public void paint(@NonNull PaintContext context) {
context.drawPath(mId, mStart, mEnd);
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer.add("type", CLASS_NAME).add("id", mId).add("start", mStart).add("end", mEnd);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawRect.java b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawRect.java
index 38477ad0deb6..f6aa30f5b5dd 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawRect.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawRect.java
@@ -23,6 +23,7 @@ import com.android.internal.widget.remotecompose.core.PaintContext;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
import java.util.List;
@@ -102,4 +103,9 @@ public class DrawRect extends DrawBase4 {
public static void apply(@NonNull WireBuffer buffer, float x1, float y1, float x2, float y2) {
write(buffer, OP_CODE, x1, y1, x2, y2);
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serialize(serializer, "left", "top", "right", "bottom").add("type", CLASS_NAME);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawRoundRect.java b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawRoundRect.java
index a41e46e03506..67338c14a101 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawRoundRect.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawRoundRect.java
@@ -23,6 +23,7 @@ import com.android.internal.widget.remotecompose.core.PaintContext;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
import java.util.List;
@@ -122,4 +123,10 @@ public class DrawRoundRect extends DrawBase6 {
public void paint(@NonNull PaintContext context) {
context.drawRoundRect(mV1, mV2, mV3, mV4, mV5, mV6);
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serialize(serializer, "left", "top", "right", "bottom", "rx", "sweepAngle")
+ .add("type", CLASS_NAME);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawSector.java b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawSector.java
index 51ece77a872a..78f64a5bcd44 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/DrawSector.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/DrawSector.java
@@ -23,6 +23,7 @@ import com.android.internal.widget.remotecompose.core.PaintContext;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
import java.util.List;
@@ -123,4 +124,10 @@ public class DrawSector extends DrawBase6 {
public void paint(@NonNull PaintContext context) {
context.drawSector(mV1, mV2, mV3, mV4, mV5, mV6);
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serialize(serializer, "left", "top", "right", "bottom", "startAngle", "sweepAngle")
+ .add("type", CLASS_NAME);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/ImageAttribute.java b/core/java/com/android/internal/widget/remotecompose/core/operations/ImageAttribute.java
new file mode 100644
index 000000000000..fb4a5e4848c2
--- /dev/null
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/ImageAttribute.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.internal.widget.remotecompose.core.operations;
+
+import static com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation.INT;
+import static com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation.SHORT;
+
+import android.annotation.NonNull;
+
+import com.android.internal.widget.remotecompose.core.Operation;
+import com.android.internal.widget.remotecompose.core.Operations;
+import com.android.internal.widget.remotecompose.core.PaintContext;
+import com.android.internal.widget.remotecompose.core.PaintOperation;
+import com.android.internal.widget.remotecompose.core.WireBuffer;
+import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
+
+import java.util.List;
+
+/** Operation to extract meta Attributes from image data objects */
+public class ImageAttribute extends PaintOperation {
+ private static final int OP_CODE = Operations.ATTRIBUTE_IMAGE;
+ private static final String CLASS_NAME = "ImageAttribute";
+ private final int[] mArgs;
+ public int mId;
+ int mImageId;
+ short mType;
+
+ public static final short IMAGE_WIDTH = 0;
+ public static final short IMAGE_HEIGHT = 1;
+
+ /**
+ * Create a new ImageAttribute operation
+ *
+ * @param id the id to store the attribute
+ * @param imageId the id of the image
+ * @param type the type of value to return
+ * @param args support for additional arguments (currently none)
+ */
+ public ImageAttribute(int id, int imageId, short type, int[] args) {
+ this.mId = id;
+ this.mImageId = imageId;
+ this.mType = type;
+ this.mArgs = args;
+ }
+
+ @Override
+ public void write(@NonNull WireBuffer buffer) {
+ apply(buffer, mId, mImageId, mType, mArgs);
+ }
+
+ @Override
+ public @NonNull String toString() {
+ return "ImageAttribute[" + mId + "] = " + mImageId + " " + mType;
+ }
+
+ /**
+ * The name of the class
+ *
+ * @return the name
+ */
+ public static @NonNull String name() {
+ return CLASS_NAME;
+ }
+
+ /**
+ * The OP_CODE for this command
+ *
+ * @return the opcode
+ */
+ public static int id() {
+ return OP_CODE;
+ }
+
+ /**
+ * Writes out the operation to the buffer
+ *
+ * @param buffer write command to this buffer
+ * @param id the id
+ * @param imageId the id of the image
+ * @param type the type of value
+ * @param args the value of the float
+ */
+ public static void apply(
+ @NonNull WireBuffer buffer, int id, int imageId, short type, int[] args) {
+ buffer.start(OP_CODE);
+ buffer.writeInt(id);
+ buffer.writeInt(imageId);
+ buffer.writeShort(type);
+ if (args == null) {
+ buffer.writeShort((short) 0);
+ } else {
+ buffer.writeShort((short) args.length);
+ for (int i = 0; i < args.length; i++) {
+ buffer.writeInt(args[i]);
+ }
+ }
+ }
+
+ /**
+ * Read this operation and add it to the list of operations
+ *
+ * @param buffer the buffer to read
+ * @param operations the list of operations that will be added to
+ */
+ public static void read(@NonNull WireBuffer buffer, @NonNull List<Operation> operations) {
+ int id = buffer.readInt();
+ int imageId = buffer.readInt();
+ short type = (short) buffer.readShort();
+ short len = (short) buffer.readShort();
+ int[] args = new int[len];
+ for (int i = 0; i < args.length; i++) {
+ args[i] = buffer.readInt();
+ }
+ operations.add(new ImageAttribute(id, imageId, type, args));
+ }
+
+ /**
+ * Populate the documentation with a description of this operation
+ *
+ * @param doc to append the description to.
+ */
+ public static void documentation(@NonNull DocumentationBuilder doc) {
+ doc.operation("Image Attributes", OP_CODE, CLASS_NAME)
+ .description("Measure text")
+ .field(INT, "id", "id of float result of the measure")
+ .field(INT, "ImageId", "id of the image")
+ .field(SHORT, "type", "type: measure 0=width,1=height")
+ .field(SHORT, "len", "number of additional arguments (currently 0)")
+ .field(INT, "a", "len", "number of arguments");
+ }
+
+ @NonNull
+ @Override
+ public String deepToString(@NonNull String indent) {
+ return indent + toString();
+ }
+
+ @NonNull float[] mBounds = new float[4];
+
+ @Override
+ public void paint(@NonNull PaintContext context) {
+ BitmapData bitmapData = (BitmapData) context.getContext().getObject(mImageId);
+ switch (mType) {
+ case IMAGE_WIDTH:
+ context.getContext().loadFloat(mId, bitmapData.getWidth());
+ break;
+ case IMAGE_HEIGHT:
+ context.getContext().loadFloat(mId, bitmapData.getHeight());
+ break;
+ }
+ }
+}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixRestore.java b/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixRestore.java
index 66daa13dd21c..64df19d8a04f 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixRestore.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixRestore.java
@@ -23,11 +23,13 @@ import com.android.internal.widget.remotecompose.core.PaintContext;
import com.android.internal.widget.remotecompose.core.PaintOperation;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
import java.util.List;
/** The restore previous matrix command */
-public class MatrixRestore extends PaintOperation {
+public class MatrixRestore extends PaintOperation implements Serializable {
private static final int OP_CODE = Operations.MATRIX_RESTORE;
private static final String CLASS_NAME = "MatrixRestore";
@@ -97,4 +99,9 @@ public class MatrixRestore extends PaintOperation {
public void paint(@NonNull PaintContext context) {
context.matrixRestore();
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer.add("type", CLASS_NAME);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixRotate.java b/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixRotate.java
index 57f5a0ebfab1..9c4df0b54d60 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixRotate.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixRotate.java
@@ -23,6 +23,7 @@ import com.android.internal.widget.remotecompose.core.PaintContext;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
import java.util.List;
@@ -110,4 +111,9 @@ public class MatrixRotate extends DrawBase3 {
buffer.writeFloat(y1);
buffer.writeFloat(x2);
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serialize(serializer, "rotate", "pivotX", "pivotY").add("type", CLASS_NAME);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixSave.java b/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixSave.java
index ec918e8260b9..0e6de0db3b28 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixSave.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixSave.java
@@ -23,11 +23,13 @@ import com.android.internal.widget.remotecompose.core.PaintContext;
import com.android.internal.widget.remotecompose.core.PaintOperation;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
import java.util.List;
/** The save the matrix state command */
-public class MatrixSave extends PaintOperation {
+public class MatrixSave extends PaintOperation implements Serializable {
private static final int OP_CODE = Operations.MATRIX_SAVE;
private static final String CLASS_NAME = "MatrixSave";
@@ -95,4 +97,9 @@ public class MatrixSave extends PaintOperation {
public void paint(@NonNull PaintContext context) {
context.matrixSave();
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer.add("type", CLASS_NAME);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixScale.java b/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixScale.java
index 07f965f7d72a..b6e5cbcf388a 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixScale.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixScale.java
@@ -23,6 +23,7 @@ import com.android.internal.widget.remotecompose.core.PaintContext;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
import java.util.List;
@@ -102,4 +103,9 @@ public class MatrixScale extends DrawBase4 {
public static void apply(@NonNull WireBuffer buffer, float x1, float y1, float x2, float y2) {
write(buffer, OP_CODE, x1, y1, x2, y2);
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serialize(serializer, "scaleX", "scaleY", "pivotX", "pivotY").add("type", CLASS_NAME);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixSkew.java b/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixSkew.java
index b31492d2cb57..f9a589c598aa 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixSkew.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixSkew.java
@@ -24,6 +24,7 @@ import com.android.internal.widget.remotecompose.core.Operations;
import com.android.internal.widget.remotecompose.core.PaintContext;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
import java.util.List;
@@ -99,4 +100,9 @@ public class MatrixSkew extends DrawBase2 {
public static void apply(@NonNull WireBuffer buffer, float x1, float y1) {
write(buffer, OP_CODE, x1, y1);
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serialize(serializer, "skewX", "skewY").add("type", CLASS_NAME);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixTranslate.java b/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixTranslate.java
index 11fa040183ce..de783bfc7ae8 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixTranslate.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/MatrixTranslate.java
@@ -23,6 +23,7 @@ import com.android.internal.widget.remotecompose.core.PaintContext;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
import java.util.List;
@@ -98,4 +99,9 @@ public class MatrixTranslate extends DrawBase2 {
public static void apply(@NonNull WireBuffer buffer, float x1, float y1) {
write(buffer, OP_CODE, x1, y1);
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serialize(serializer, "dx", "dy").add("type", CLASS_NAME);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/PathData.java b/core/java/com/android/internal/widget/remotecompose/core/operations/PathData.java
index 45d99a716443..9564f15209c7 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/PathData.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/PathData.java
@@ -28,11 +28,13 @@ import com.android.internal.widget.remotecompose.core.VariableSupport;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
import java.util.Arrays;
import java.util.List;
-public class PathData extends Operation implements VariableSupport {
+public class PathData extends Operation implements VariableSupport, Serializable {
private static final int OP_CODE = Operations.DATA_PATH;
private static final String CLASS_NAME = "PathData";
int mInstanceId;
@@ -238,4 +240,12 @@ public class PathData extends Operation implements VariableSupport {
}
mPathChanged = false;
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .add("type", CLASS_NAME)
+ .add("id", mInstanceId)
+ .add("path", pathString(mFloatPath));
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/RootContentBehavior.java b/core/java/com/android/internal/widget/remotecompose/core/operations/RootContentBehavior.java
index 129201c2b2d2..ed8b38249112 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/RootContentBehavior.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/RootContentBehavior.java
@@ -24,6 +24,7 @@ import com.android.internal.widget.remotecompose.core.RemoteContext;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
+import com.android.internal.widget.remotecompose.core.semantics.ScrollableComponent;
import java.util.List;
@@ -33,7 +34,8 @@ import java.util.List;
* <p>It encodes the version of the document (following semantic versioning) as well as the
* dimensions of the document in pixels.
*/
-public class RootContentBehavior extends Operation implements RemoteComposeOperation {
+public class RootContentBehavior extends Operation
+ implements RemoteComposeOperation, ScrollableComponent {
private static final int OP_CODE = Operations.ROOT_CONTENT_BEHAVIOR;
private static final String CLASS_NAME = "RootContentBehavior";
int mScroll = NONE;
@@ -45,13 +47,13 @@ public class RootContentBehavior extends Operation implements RemoteComposeOpera
protected static final String TAG = "RootContentBehavior";
- public static final int NONE = 0;
+ public static final int NONE = ScrollableComponent.SCROLL_NONE;
///////////////////////////////////////////////////////////////////////////////////////////////
// Scrolling
///////////////////////////////////////////////////////////////////////////////////////////////
- public static final int SCROLL_HORIZONTAL = 1;
- public static final int SCROLL_VERTICAL = 2;
+ public static final int SCROLL_HORIZONTAL = ScrollableComponent.SCROLL_HORIZONTAL;
+ public static final int SCROLL_VERTICAL = ScrollableComponent.SCROLL_VERTICAL;
///////////////////////////////////////////////////////////////////////////////////////////////
// Sizing
@@ -288,4 +290,25 @@ public class RootContentBehavior extends Operation implements RemoteComposeOpera
.possibleValues("LAYOUT_MATCH_PARENT", LAYOUT_MATCH_PARENT)
.possibleValues("LAYOUT_WRAP_CONTENT", LAYOUT_WRAP_CONTENT);
}
+
+ @Override
+ public boolean isInterestingForSemantics() {
+ return mScroll != SCROLL_NONE;
+ }
+
+ @Override
+ public boolean supportsScrollByOffset() {
+ return mScroll != SCROLL_NONE;
+ }
+
+ @Override
+ public int scrollByOffset(RemoteContext context, int offset) {
+ // TODO implement scroll handling
+ return offset;
+ }
+
+ @Override
+ public int scrollDirection() {
+ return mScroll;
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/ShaderData.java b/core/java/com/android/internal/widget/remotecompose/core/operations/ShaderData.java
index 891367e33d87..46a32905b96c 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/ShaderData.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/ShaderData.java
@@ -172,6 +172,9 @@ public class ShaderData extends Operation implements VariableSupport {
@Override
public void updateVariables(@NonNull RemoteContext context) {
+ if (mUniformRawFloatMap == null) {
+ return;
+ }
for (String name : mUniformRawFloatMap.keySet()) { // TODO: potential npe
float[] value = mUniformRawFloatMap.get(name);
float[] out = null;
@@ -189,6 +192,9 @@ public class ShaderData extends Operation implements VariableSupport {
@Override
public void registerListening(@NonNull RemoteContext context) {
+ if (mUniformFloatMap == null) {
+ return;
+ }
for (String name : mUniformRawFloatMap.keySet()) { // TODO: potential npe
float[] value = mUniformRawFloatMap.get(name);
for (float v : value) {
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/TextAttribute.java b/core/java/com/android/internal/widget/remotecompose/core/operations/TextAttribute.java
new file mode 100644
index 000000000000..45cced3f8b45
--- /dev/null
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/TextAttribute.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.internal.widget.remotecompose.core.operations;
+
+import static com.android.internal.widget.remotecompose.core.PaintContext.TEXT_MEASURE_FONT_HEIGHT;
+import static com.android.internal.widget.remotecompose.core.PaintContext.TEXT_MEASURE_MONOSPACE_WIDTH;
+import static com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation.INT;
+
+import android.annotation.NonNull;
+
+import com.android.internal.widget.remotecompose.core.Operation;
+import com.android.internal.widget.remotecompose.core.Operations;
+import com.android.internal.widget.remotecompose.core.PaintContext;
+import com.android.internal.widget.remotecompose.core.PaintOperation;
+import com.android.internal.widget.remotecompose.core.WireBuffer;
+import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
+
+import java.util.List;
+
+/** Operation to Measure Text data */
+public class TextAttribute extends PaintOperation {
+ private static final int OP_CODE = Operations.ATTRIBUTE_TEXT;
+ private static final String CLASS_NAME = "TextMeasure";
+ public int mId;
+ public int mTextId;
+ public short mType;
+
+ public static final short MEASURE_WIDTH = 0;
+ public static final short MEASURE_HEIGHT = 1;
+ public static final short MEASURE_LEFT = 2;
+ public static final short MEASURE_RIGHT = 3;
+ public static final short MEASURE_TOP = 4;
+ public static final short MEASURE_BOTTOM = 5;
+ public static final short TEXT_LENGTH = 6;
+
+ /** a << 8 shifted {@link PaintContext#getTextBounds} */
+ public static final int MEASURE_MONOSPACE_FLAG = TEXT_MEASURE_MONOSPACE_WIDTH << 8;
+
+ public static final int MEASURE_MAX_HEIGHT_FLAG = TEXT_MEASURE_FONT_HEIGHT << 8;
+
+ public TextAttribute(int id, int textId, short type) {
+ this.mId = id;
+ this.mTextId = textId;
+ this.mType = type;
+ }
+
+ @Override
+ public void write(@NonNull WireBuffer buffer) {
+ apply(buffer, mId, mTextId, mType);
+ }
+
+ @Override
+ public @NonNull String toString() {
+ return "FloatConstant[" + mId + "] = " + mTextId + " " + mType;
+ }
+
+ /**
+ * The name of the class
+ *
+ * @return the name
+ */
+ public static @NonNull String name() {
+ return CLASS_NAME;
+ }
+
+ /**
+ * The OP_CODE for this command
+ *
+ * @return the opcode
+ */
+ public static int id() {
+ return OP_CODE;
+ }
+
+ /**
+ * Writes out the operation to the buffer
+ *
+ * @param buffer write command to this buffer
+ * @param id the id
+ * @param textId the id
+ * @param type the value of the float
+ */
+ public static void apply(@NonNull WireBuffer buffer, int id, int textId, short type) {
+ buffer.start(OP_CODE);
+ buffer.writeInt(id);
+ buffer.writeInt(textId);
+ buffer.writeShort(type);
+ buffer.writeShort(0);
+ }
+
+ /**
+ * Read this operation and add it to the list of operations
+ *
+ * @param buffer the buffer to read
+ * @param operations the list of operations that will be added to
+ */
+ public static void read(@NonNull WireBuffer buffer, @NonNull List<Operation> operations) {
+ int id = buffer.readInt();
+ int textId = buffer.readInt();
+ short type = (short) buffer.readShort();
+ short len = (short) buffer.readShort();
+ operations.add(new TextAttribute(id, textId, type));
+ }
+
+ /**
+ * Populate the documentation with a description of this operation
+ *
+ * @param doc to append the description to.
+ */
+ public static void documentation(@NonNull DocumentationBuilder doc) {
+ doc.operation("Expressions Operations", OP_CODE, CLASS_NAME)
+ .description("Measure text")
+ .field(INT, "id", "id of float result of the measure")
+ .field(INT, "textId", "id of text")
+ .field(INT, "type", "type: measure 0=width,1=height");
+ }
+
+ @NonNull
+ @Override
+ public String deepToString(@NonNull String indent) {
+ return indent + toString();
+ }
+
+ @NonNull float[] mBounds = new float[4];
+
+ @Override
+ public void paint(@NonNull PaintContext context) {
+ int val = mType & 255;
+ int flags = mType >> 8;
+ if (val <= MEASURE_BOTTOM) {
+ context.getTextBounds(mTextId, 0, -1, flags, mBounds);
+ }
+ switch (val) {
+ case MEASURE_WIDTH:
+ context.getContext().loadFloat(mId, mBounds[2] - mBounds[0]);
+ break;
+ case MEASURE_HEIGHT:
+ context.getContext().loadFloat(mId, mBounds[3] - mBounds[1]);
+ break;
+ case MEASURE_LEFT:
+ context.getContext().loadFloat(mId, mBounds[0]);
+ break;
+ case MEASURE_TOP:
+ context.getContext().loadFloat(mId, mBounds[1]);
+ break;
+ case MEASURE_RIGHT:
+ context.getContext().loadFloat(mId, mBounds[2]);
+ break;
+ case MEASURE_BOTTOM:
+ context.getContext().loadFloat(mId, mBounds[3]);
+ break;
+ case TEXT_LENGTH:
+ context.getContext().loadFloat(mId, context.getText(mTextId).length());
+ break;
+ }
+ }
+}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/TimeAttribute.java b/core/java/com/android/internal/widget/remotecompose/core/operations/TimeAttribute.java
new file mode 100644
index 000000000000..afb84b56d7b0
--- /dev/null
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/TimeAttribute.java
@@ -0,0 +1,295 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.internal.widget.remotecompose.core.operations;
+
+import static com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation.INT;
+import static com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation.SHORT;
+
+import android.annotation.NonNull;
+
+import com.android.internal.widget.remotecompose.core.Operation;
+import com.android.internal.widget.remotecompose.core.Operations;
+import com.android.internal.widget.remotecompose.core.PaintContext;
+import com.android.internal.widget.remotecompose.core.PaintOperation;
+import com.android.internal.widget.remotecompose.core.RemoteContext;
+import com.android.internal.widget.remotecompose.core.WireBuffer;
+import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
+import com.android.internal.widget.remotecompose.core.types.LongConstant;
+
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
+import java.util.Arrays;
+import java.util.List;
+
+/** Operation to perform time related calculation */
+public class TimeAttribute extends PaintOperation {
+ private static final int OP_CODE = Operations.ATTRIBUTE_TIME;
+ private static final String CLASS_NAME = "TimeAttribute";
+ private final int[] mArgs;
+ public int mId;
+ public int mTimeId;
+ public short mType;
+
+ /** (value - currentTimeMillis) * 1E-3 */
+ public static final short TIME_FROM_NOW_SEC = 0;
+
+ /** (value - currentTimeMillis) * 1E-3 / 60 */
+ public static final short TIME_FROM_NOW_MIN = 1;
+
+ /** (value - currentTimeMillis) * 1E-3 / 3600 */
+ public static final short TIME_FROM_NOW_HR = 2;
+
+ /** (value - arg[0]) * 1E-3 */
+ public static final short TIME_FROM_ARG_SEC = 3;
+
+ /** (value - arg[0]) * 1E-3 / 60 */
+ public static final short TIME_FROM_ARG_MIN = 4;
+
+ /** (value - arg[0]) * 1E-3 / 3600 */
+ public static final short TIME_FROM_ARG_HR = 5;
+
+ /** second-of-minute */
+ public static final short TIME_IN_SEC = 6;
+
+ /** minute-of-hour */
+ public static final short TIME_IN_MIN = 7;
+
+ /** hour-of-day */
+ public static final short TIME_IN_HR = 8;
+
+ /** day-of-month */
+ public static final short TIME_DAY_OF_MONTH = 9;
+
+ /** month-of-year from 0 to 11 */
+ public static final short TIME_MONTH_VALUE = 10;
+
+ /** day-of-week from 0 to 6 */
+ public static final short TIME_DAY_OF_WEEK = 11;
+
+ /** the year */
+ public static final short TIME_YEAR = 12;
+
+ /**
+ * creates a new operation
+ *
+ * @param id to write value to
+ * @param longId of long to calculate on
+ * @param type the type of calculation
+ * @param args the optional args
+ */
+ public TimeAttribute(int id, int longId, short type, int[] args) {
+ this.mId = id;
+ this.mTimeId = longId;
+ this.mType = type;
+ this.mArgs = args;
+ }
+
+ @Override
+ public void write(@NonNull WireBuffer buffer) {
+ apply(buffer, mId, mTimeId, mType);
+ }
+
+ @Override
+ public @NonNull String toString() {
+ if (mArgs == null) {
+ return CLASS_NAME + "[" + mId + "] = " + mTimeId + " " + mType;
+ } else {
+ return CLASS_NAME
+ + "["
+ + mId
+ + "] = "
+ + mTimeId
+ + " "
+ + mType
+ + " "
+ + Arrays.toString(mArgs);
+ }
+ }
+
+ /**
+ * The name of the class
+ *
+ * @return the name
+ */
+ public static @NonNull String name() {
+ return CLASS_NAME;
+ }
+
+ /**
+ * The OP_CODE for this command
+ *
+ * @return the opcode
+ */
+ public static int id() {
+ return OP_CODE;
+ }
+
+ /**
+ * Writes out the operation to the buffer
+ *
+ * @param buffer write command to this buffer
+ * @param id the id
+ * @param textId the id
+ * @param type the value of the float
+ */
+ public static void apply(@NonNull WireBuffer buffer, int id, int textId, short type) {
+ apply(buffer, id, textId, type, null);
+ }
+
+ /**
+ * Writes out the operation to the buffer
+ *
+ * @param buffer write command to this buffer
+ * @param id the id
+ * @param textId the id
+ * @param type the value of the float
+ * @param args the optional args
+ */
+ public static void apply(
+ @NonNull WireBuffer buffer, int id, int textId, short type, int[] args) {
+ buffer.start(OP_CODE);
+ buffer.writeInt(id);
+ buffer.writeInt(textId);
+ buffer.writeShort(type);
+ if (args == null) {
+ buffer.writeShort(0);
+ } else {
+ buffer.writeShort(args.length);
+ for (int arg : args) {
+ buffer.writeInt(arg);
+ }
+ }
+ }
+
+ /**
+ * Read this operation and add it to the list of operations
+ *
+ * @param buffer the buffer to read
+ * @param operations the list of operations that will be added to
+ */
+ public static void read(@NonNull WireBuffer buffer, @NonNull List<Operation> operations) {
+ int id = buffer.readInt();
+ int textId = buffer.readInt();
+ short type = (short) buffer.readShort();
+ short len = (short) buffer.readShort();
+ int[] args = null;
+ if (len != 0) {
+ args = new int[len];
+ for (int i = 0; i < len; i++) {
+ args[i] = buffer.readInt();
+ }
+ }
+ operations.add(new TimeAttribute(id, textId, type, args));
+ }
+
+ /**
+ * Populate the documentation with a description of this operation
+ *
+ * @param doc to append the description to.
+ */
+ public static void documentation(@NonNull DocumentationBuilder doc) {
+ doc.operation("Time Operations", OP_CODE, CLASS_NAME)
+ .description("Calculate Information about time")
+ .field(INT, "id", "id to output")
+ .field(INT, "longId", "id of time to calculate on")
+ .field(SHORT, "type", "the type of calculation")
+ .field(SHORT, "argsLength", "The number of additional args")
+ .field(INT, "args", "argsLength", "The number of additional args");
+ }
+
+ @NonNull
+ @Override
+ public String deepToString(@NonNull String indent) {
+ return indent + toString();
+ }
+
+ @NonNull float[] mBounds = new float[4];
+
+ @Override
+ public void paint(@NonNull PaintContext context) {
+ int val = mType & 255;
+ int flags = mType >> 8;
+ RemoteContext ctx = context.getContext();
+ LongConstant longConstant = (LongConstant) ctx.getObject(mTimeId);
+ long value = longConstant.getValue();
+ long delta = 0;
+ LocalDateTime time = null;
+
+ switch (val) {
+ case TIME_FROM_NOW_SEC:
+ case TIME_FROM_NOW_MIN:
+ case TIME_FROM_NOW_HR:
+ delta = (value - System.currentTimeMillis());
+ break;
+ case TIME_FROM_ARG_SEC:
+ case TIME_FROM_ARG_MIN:
+ case TIME_FROM_ARG_HR:
+ LongConstant lc2 = (LongConstant) ctx.getObject(mArgs[0]);
+ delta = (value - lc2.getValue());
+ break;
+ case TIME_IN_SEC:
+ case TIME_IN_MIN:
+ case TIME_IN_HR:
+ case TIME_DAY_OF_MONTH:
+ case TIME_MONTH_VALUE:
+ case TIME_DAY_OF_WEEK:
+ case TIME_YEAR:
+ time =
+ (LocalDateTime)
+ Instant.ofEpochMilli(value)
+ .atZone(ZoneOffset.systemDefault())
+ .toLocalDateTime();
+
+ break;
+ }
+ switch (val) {
+ case TIME_FROM_NOW_SEC:
+ case TIME_FROM_ARG_SEC:
+ ctx.loadFloat(mId, (delta) * 1E-3f);
+ break;
+ case TIME_FROM_ARG_MIN:
+ case TIME_FROM_NOW_MIN:
+ ctx.loadFloat(mId, (float) (delta * 1E-3 / 60));
+ break;
+ case TIME_FROM_ARG_HR:
+ case TIME_FROM_NOW_HR:
+ ctx.loadFloat(mId, (float) (delta * 1E-3 / 3600));
+ break;
+ case TIME_IN_SEC:
+ ctx.loadFloat(mId, time.getSecond());
+ break;
+ case TIME_IN_MIN:
+ ctx.loadFloat(mId, time.getDayOfMonth());
+ break;
+ case TIME_IN_HR:
+ ctx.loadFloat(mId, time.getHour());
+ break;
+ case TIME_DAY_OF_MONTH:
+ ctx.loadFloat(mId, time.getDayOfMonth());
+ break;
+ case TIME_MONTH_VALUE:
+ ctx.loadFloat(mId, time.getMonthValue() - 1);
+ break;
+ case TIME_DAY_OF_WEEK:
+ ctx.loadFloat(mId, time.getDayOfWeek().ordinal());
+ break;
+ case TIME_YEAR:
+ ctx.loadFloat(mId, time.getYear());
+ break;
+ }
+ }
+}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/ActionOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/ActionOperation.java
index 1c241601765b..3010fc74aad4 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/ActionOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/ActionOperation.java
@@ -20,9 +20,10 @@ import android.annotation.NonNull;
import com.android.internal.widget.remotecompose.core.CoreDocument;
import com.android.internal.widget.remotecompose.core.RemoteContext;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
/** Operations representing actions on the document */
-public interface ActionOperation {
+public interface ActionOperation extends Serializable {
/**
* Serialize the string
*
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/AnimatableValue.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/AnimatableValue.java
index 143223398a2a..9dc2a49d26ef 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/AnimatableValue.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/AnimatableValue.java
@@ -19,9 +19,11 @@ import com.android.internal.widget.remotecompose.core.PaintContext;
import com.android.internal.widget.remotecompose.core.operations.Utils;
import com.android.internal.widget.remotecompose.core.operations.utilities.easing.FloatAnimation;
import com.android.internal.widget.remotecompose.core.operations.utilities.easing.GeneralEasing;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
/** Value animation for layouts */
-public class AnimatableValue {
+public class AnimatableValue implements Serializable {
boolean mIsVariable = false;
int mId = 0;
float mValue = 0f;
@@ -124,4 +126,9 @@ public class AnimatableValue {
public String toString() {
return "AnimatableValue{mId=" + mId + "}";
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer.add("type", "AnimatableValue").add("id", mId);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/ClickModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/ClickModifierOperation.java
index 110bd3079697..8b13c13a3333 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/ClickModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/ClickModifierOperation.java
@@ -36,6 +36,8 @@ import com.android.internal.widget.remotecompose.core.operations.utilities.easin
import com.android.internal.widget.remotecompose.core.operations.utilities.easing.FloatAnimation;
import com.android.internal.widget.remotecompose.core.semantics.AccessibleComponent;
import com.android.internal.widget.remotecompose.core.semantics.CoreSemantics;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.ArrayList;
import java.util.List;
@@ -248,4 +250,9 @@ public class ClickModifierOperation extends PaintOperation
"Click modifier. This operation contains"
+ " a list of action executed on click");
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer.addTags(SerializeTags.MODIFIER).add("type", "ClickModifierOperation");
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/Component.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/Component.java
index 96a31aec7dc4..e332e4be4c8d 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/Component.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/Component.java
@@ -39,6 +39,7 @@ import com.android.internal.widget.remotecompose.core.operations.paint.PaintBund
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
import com.android.internal.widget.remotecompose.core.serialize.Serializable;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.ArrayList;
import java.util.HashSet;
@@ -1049,6 +1050,7 @@ public class Component extends PaintOperation
@Override
public void serialize(MapSerializer serializer) {
+ serializer.addTags(SerializeTags.COMPONENT);
serializer.add("type", getSerializedName());
serializer.add("id", mComponentId);
serializer.add("x", mX);
@@ -1056,5 +1058,27 @@ public class Component extends PaintOperation
serializer.add("width", mWidth);
serializer.add("height", mHeight);
serializer.add("visibility", mVisibility);
+ serializer.add("list", mList);
+ }
+
+ /**
+ * Return ourself or a matching modifier. Used by the semantics / accessibility layer.
+ *
+ * @param operationClass
+ * @return
+ * @param <T>
+ */
+ public <T> @Nullable T selfOrModifier(Class<T> operationClass) {
+ if (operationClass.isInstance(this)) {
+ return operationClass.cast(this);
+ }
+
+ for (Operation op : mList) {
+ if (operationClass.isInstance(op)) {
+ return operationClass.cast(op);
+ }
+ }
+
+ return null;
}
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/LayoutComponent.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/LayoutComponent.java
index c517e50f35d3..10cbd4ca2a50 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/LayoutComponent.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/LayoutComponent.java
@@ -46,6 +46,7 @@ import com.android.internal.widget.remotecompose.core.operations.layout.modifier
import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.WidthModifierOperation;
import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.ZIndexModifierOperation;
import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.ArrayList;
@@ -491,10 +492,26 @@ public class LayoutComponent extends Component {
@Override
public void serialize(MapSerializer serializer) {
super.serialize(serializer);
- serializer.add("children", mChildrenComponents);
- serializer.add("paddingLeft", mPaddingLeft);
- serializer.add("paddingRight", mPaddingRight);
- serializer.add("paddingTop", mPaddingTop);
- serializer.add("paddingBottom", mPaddingBottom);
+ serializer
+ .addTags(SerializeTags.LAYOUT_COMPONENT)
+ .add("paddingLeft", mPaddingLeft)
+ .add("paddingRight", mPaddingRight)
+ .add("paddingTop", mPaddingTop)
+ .add("paddingBottom", mPaddingBottom);
+ }
+
+ @Override
+ public <T> @Nullable T selfOrModifier(Class<T> operationClass) {
+ if (operationClass.isInstance(this)) {
+ return operationClass.cast(this);
+ }
+
+ for (ModifierOperation op : mComponentModifiers.getList()) {
+ if (operationClass.isInstance(op)) {
+ return operationClass.cast(op);
+ }
+ }
+
+ return null;
}
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/ListActionsOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/ListActionsOperation.java
index bfa417e87637..fc176da6b53d 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/ListActionsOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/ListActionsOperation.java
@@ -25,8 +25,10 @@ import com.android.internal.widget.remotecompose.core.RemoteContext;
import com.android.internal.widget.remotecompose.core.operations.TextData;
import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.ModifierOperation;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
import java.util.ArrayList;
+import java.util.Vector;
public abstract class ListActionsOperation extends PaintOperation
implements Container, ModifierOperation, DecoratorComponent {
@@ -123,4 +125,10 @@ public abstract class ListActionsOperation extends PaintOperation
}
return true;
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ // TODO: Pass in the list once all operations implement Serializable
+ serializer.add("actions", new Vector<>());
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/RootLayoutComponent.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/RootLayoutComponent.java
index f94cda21aca7..f2503b26513e 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/RootLayoutComponent.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/RootLayoutComponent.java
@@ -32,6 +32,8 @@ import com.android.internal.widget.remotecompose.core.operations.layout.measure.
import com.android.internal.widget.remotecompose.core.operations.layout.measure.MeasurePass;
import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.ComponentModifiers;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -275,4 +277,11 @@ public class RootLayoutComponent extends Component {
public boolean hasTouchListeners() {
return mHasTouchListeners;
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ super.serialize(serializer);
+ serializer.addTags(SerializeTags.COMPONENT);
+ serializer.add("type", "RootLayoutComponent");
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/TouchCancelModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/TouchCancelModifierOperation.java
index a4e8f5c5f18e..62b1b6cf9615 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/TouchCancelModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/TouchCancelModifierOperation.java
@@ -23,6 +23,7 @@ import com.android.internal.widget.remotecompose.core.Operations;
import com.android.internal.widget.remotecompose.core.RemoteContext;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
import java.util.List;
@@ -124,4 +125,10 @@ public class TouchCancelModifierOperation extends ListActionsOperation implement
"Touch cancel modifier. This operation contains"
+ " a list of action executed on Touch cancel");
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ super.serialize(serializer);
+ serializer.add("type", "TouchCancelModifierOperation");
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/TouchDownModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/TouchDownModifierOperation.java
index 6191bf4e4ad2..5289fda2c74b 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/TouchDownModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/TouchDownModifierOperation.java
@@ -23,6 +23,7 @@ import com.android.internal.widget.remotecompose.core.Operations;
import com.android.internal.widget.remotecompose.core.RemoteContext;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
import java.util.List;
@@ -126,4 +127,10 @@ public class TouchDownModifierOperation extends ListActionsOperation implements
"Touch down modifier. This operation contains"
+ " a list of action executed on Touch down");
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ super.serialize(serializer);
+ serializer.add("type", "TouchDownModifierOperation");
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/TouchUpModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/TouchUpModifierOperation.java
index a7e423e67940..576c5e9281a4 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/TouchUpModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/TouchUpModifierOperation.java
@@ -23,6 +23,7 @@ import com.android.internal.widget.remotecompose.core.Operations;
import com.android.internal.widget.remotecompose.core.RemoteContext;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
import java.util.List;
@@ -124,4 +125,10 @@ public class TouchUpModifierOperation extends ListActionsOperation implements To
"Touch up modifier. This operation contains"
+ " a list of action executed on Touch up");
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ super.serialize(serializer);
+ serializer.add("type", "TouchUpModifierOperation");
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/animation/AnimationSpec.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/animation/AnimationSpec.java
index 6e9de58e354a..91348f5810a1 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/animation/AnimationSpec.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/animation/AnimationSpec.java
@@ -26,7 +26,9 @@ import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.ModifierOperation;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.operations.utilities.easing.Easing;
import com.android.internal.widget.remotecompose.core.operations.utilities.easing.GeneralEasing;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
import java.util.List;
@@ -124,6 +126,18 @@ public class AnimationSpec extends Operation implements ModifierOperation {
+ "]");
}
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .add("type", "AnimationSpec")
+ .add("motionDuration", getMotionDuration())
+ .add("motionEasingType", Easing.getString(getMotionEasingType()))
+ .add("visibilityDuration", getVisibilityDuration())
+ .add("visibilityEasingType", Easing.getString(getVisibilityEasingType()))
+ .add("enterAnimation", getEnterAnimation())
+ .add("exitAnimation", getExitAnimation());
+ }
+
public enum ANIMATION {
FADE_IN,
FADE_OUT,
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/managers/CanvasLayout.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/managers/CanvasLayout.java
index 8448132cbcc1..508b685b5407 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/managers/CanvasLayout.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/managers/CanvasLayout.java
@@ -154,7 +154,8 @@ public class CanvasLayout extends BoxLayout {
@Override
public void serialize(MapSerializer serializer) {
super.serialize(serializer);
- serializer.add("", mHorizontalPositioning);
+ serializer.add("type", getSerializedName());
+ serializer.add("horizontalPositioning", mHorizontalPositioning);
}
private String getPositioningString(int pos) {
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/managers/TextLayout.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/managers/TextLayout.java
index e8e95db8141d..1cfb50724e0b 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/managers/TextLayout.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/managers/TextLayout.java
@@ -24,10 +24,12 @@ import android.annotation.Nullable;
import com.android.internal.widget.remotecompose.core.Operation;
import com.android.internal.widget.remotecompose.core.Operations;
import com.android.internal.widget.remotecompose.core.PaintContext;
+import com.android.internal.widget.remotecompose.core.Platform;
import com.android.internal.widget.remotecompose.core.RemoteContext;
import com.android.internal.widget.remotecompose.core.VariableSupport;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
+import com.android.internal.widget.remotecompose.core.operations.Utils;
import com.android.internal.widget.remotecompose.core.operations.layout.Component;
import com.android.internal.widget.remotecompose.core.operations.layout.measure.MeasurePass;
import com.android.internal.widget.remotecompose.core.operations.layout.measure.Size;
@@ -41,6 +43,19 @@ import java.util.List;
/** Text component, referencing a text id */
public class TextLayout extends LayoutManager implements VariableSupport, AccessibleComponent {
+ public static final int TEXT_ALIGN_LEFT = 1;
+ public static final int TEXT_ALIGN_RIGHT = 2;
+ public static final int TEXT_ALIGN_CENTER = 3;
+ public static final int TEXT_ALIGN_JUSTIFY = 4;
+ public static final int TEXT_ALIGN_START = 5;
+ public static final int TEXT_ALIGN_END = 6;
+
+ public static final int OVERFLOW_CLIP = 1;
+ public static final int OVERFLOW_VISIBLE = 2;
+ public static final int OVERFLOW_ELLIPSIS = 3;
+ public static final int OVERFLOW_START_ELLIPSIS = 4;
+ public static final int OVERFLOW_MIDDLE_ELLIPSIS = 5;
+
private static final boolean DEBUG = false;
private int mTextId = -1;
private int mColor = 0;
@@ -49,6 +64,8 @@ public class TextLayout extends LayoutManager implements VariableSupport, Access
private float mFontWeight = 400f;
private int mFontFamilyId = -1;
private int mTextAlign = -1;
+ private int mOverflow = 1;
+ private int mMaxLines = Integer.MAX_VALUE;
private int mType = -1;
private float mTextX;
@@ -58,6 +75,8 @@ public class TextLayout extends LayoutManager implements VariableSupport, Access
@Nullable private String mCachedString = "";
+ Platform.ComputedTextLayout mComputedTextLayout;
+
@Nullable
@Override
public Integer getTextId() {
@@ -123,7 +142,9 @@ public class TextLayout extends LayoutManager implements VariableSupport, Access
int fontStyle,
float fontWeight,
int fontFamilyId,
- int textAlign) {
+ int textAlign,
+ int overflow,
+ int maxLines) {
super(parent, componentId, animationId, x, y, width, height);
mTextId = textId;
mColor = color;
@@ -132,6 +153,8 @@ public class TextLayout extends LayoutManager implements VariableSupport, Access
mFontWeight = fontWeight;
mFontFamilyId = fontFamilyId;
mTextAlign = textAlign;
+ mOverflow = overflow;
+ mMaxLines = maxLines;
}
public TextLayout(
@@ -144,7 +167,9 @@ public class TextLayout extends LayoutManager implements VariableSupport, Access
int fontStyle,
float fontWeight,
int fontFamilyId,
- int textAlign) {
+ int textAlign,
+ int overflow,
+ int maxLines) {
this(
parent,
componentId,
@@ -159,7 +184,9 @@ public class TextLayout extends LayoutManager implements VariableSupport, Access
fontStyle,
fontWeight,
fontFamilyId,
- textAlign);
+ textAlign,
+ overflow,
+ maxLines);
}
@NonNull public PaintBundle mPaint = new PaintBundle();
@@ -187,18 +214,35 @@ public class TextLayout extends LayoutManager implements VariableSupport, Access
return;
}
int length = mCachedString.length();
- if (mTextW > mWidth) {
- context.save();
- context.clipRect(
- mPaddingLeft,
- mPaddingTop,
- mWidth - mPaddingLeft - mPaddingRight,
- mHeight - mPaddingTop - mPaddingBottom);
- context.translate(getScrollX(), getScrollY());
- context.drawTextRun(mTextId, 0, length, 0, 0, mTextX, mTextY, false);
- context.restore();
+ if (mComputedTextLayout != null) {
+ context.drawComplexText(mComputedTextLayout);
} else {
- context.drawTextRun(mTextId, 0, length, 0, 0, mTextX, mTextY, false);
+ float px = mTextX;
+ switch (mTextAlign) {
+ case TEXT_ALIGN_CENTER:
+ px = (mWidth - mPaddingLeft - mPaddingRight - mTextW) / 2f;
+ break;
+ case TEXT_ALIGN_RIGHT:
+ case TEXT_ALIGN_END:
+ px = (mWidth - mPaddingRight - mTextW);
+ break;
+ case TEXT_ALIGN_LEFT:
+ case TEXT_ALIGN_START:
+ default:
+ }
+ if (mTextW > (mWidth - mPaddingLeft - mPaddingRight)) {
+ context.save();
+ context.clipRect(
+ 0f,
+ 0f,
+ mWidth - mPaddingLeft - mPaddingRight,
+ mHeight - mPaddingTop - mPaddingBottom);
+ context.translate(getScrollX(), getScrollY());
+ context.drawTextRun(mTextId, 0, length, 0, 0, px, mTextY, false);
+ context.restore();
+ } else {
+ context.drawTextRun(mTextId, 0, length, 0, 0, px, mTextY, false);
+ }
}
if (DEBUG) {
mPaint.setStyle(PaintBundle.STYLE_FILL_AND_STROKE);
@@ -285,13 +329,40 @@ public class TextLayout extends LayoutManager implements VariableSupport, Access
mPaint.reset();
mPaint.setTextSize(mFontSize);
mPaint.setTextStyle(mType, (int) mFontWeight, mFontStyle == 1);
+ mPaint.setColor(mColor);
context.applyPaint(mPaint);
float[] bounds = new float[4];
- int flags = PaintContext.TEXT_MEASURE_FONT_HEIGHT;
if (mCachedString == null) {
return;
}
+ int flags = PaintContext.TEXT_MEASURE_FONT_HEIGHT | PaintContext.TEXT_MEASURE_SPACES;
+ if (mMaxLines == 1
+ && (mOverflow == OVERFLOW_START_ELLIPSIS
+ || mOverflow == OVERFLOW_MIDDLE_ELLIPSIS
+ || mOverflow == OVERFLOW_ELLIPSIS)) {
+ flags |= PaintContext.TEXT_COMPLEX;
+ }
context.getTextBounds(mTextId, 0, mCachedString.length(), flags, bounds);
+ if (bounds[2] - bounds[1] > maxWidth) {
+ mComputedTextLayout =
+ context.layoutComplexText(
+ mTextId,
+ 0,
+ mCachedString.length(),
+ mTextAlign,
+ mOverflow,
+ mMaxLines,
+ maxWidth,
+ flags);
+ if (mComputedTextLayout != null) {
+ bounds[0] = 0f;
+ bounds[1] = 0f;
+ bounds[2] = mComputedTextLayout.getWidth();
+ bounds[3] = mComputedTextLayout.getHeight();
+ }
+ } else {
+ mComputedTextLayout = null;
+ }
context.restorePaint();
float w = bounds[2] - bounds[0];
float h = bounds[3] - bounds[1];
@@ -345,6 +416,8 @@ public class TextLayout extends LayoutManager implements VariableSupport, Access
* @param fontWeight the font weight
* @param fontFamilyId the font family id
* @param textAlign the alignment rules
+ * @param overflow
+ * @param maxLines
*/
public static void apply(
@NonNull WireBuffer buffer,
@@ -356,7 +429,9 @@ public class TextLayout extends LayoutManager implements VariableSupport, Access
int fontStyle,
float fontWeight,
int fontFamilyId,
- int textAlign) {
+ int textAlign,
+ int overflow,
+ int maxLines) {
buffer.start(id());
buffer.writeInt(componentId);
buffer.writeInt(animationId);
@@ -367,6 +442,8 @@ public class TextLayout extends LayoutManager implements VariableSupport, Access
buffer.writeFloat(fontWeight);
buffer.writeInt(fontFamilyId);
buffer.writeInt(textAlign);
+ buffer.writeInt(overflow);
+ buffer.writeInt(maxLines);
}
/**
@@ -385,6 +462,8 @@ public class TextLayout extends LayoutManager implements VariableSupport, Access
float fontWeight = buffer.readFloat();
int fontFamilyId = buffer.readInt();
int textAlign = buffer.readInt();
+ int overflow = buffer.readInt();
+ int maxLines = buffer.readInt();
operations.add(
new TextLayout(
null,
@@ -396,7 +475,9 @@ public class TextLayout extends LayoutManager implements VariableSupport, Access
fontStyle,
fontWeight,
fontFamilyId,
- textAlign));
+ textAlign,
+ overflow,
+ maxLines));
}
/**
@@ -431,14 +512,16 @@ public class TextLayout extends LayoutManager implements VariableSupport, Access
mFontStyle,
mFontWeight,
mFontFamilyId,
- mTextAlign);
+ mTextAlign,
+ mOverflow,
+ mMaxLines);
}
@Override
public void serialize(MapSerializer serializer) {
super.serialize(serializer);
serializer.add("textId", mTextId);
- serializer.add("color", mColor);
+ serializer.add("color", Utils.colorInt(mColor));
serializer.add("fontSize", mFontSize);
serializer.add("fontStyle", mFontStyle);
serializer.add("fontWeight", mFontWeight);
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/BackgroundModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/BackgroundModifierOperation.java
index ac23db0ed599..dc1b875f0f9c 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/BackgroundModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/BackgroundModifierOperation.java
@@ -28,6 +28,8 @@ import com.android.internal.widget.remotecompose.core.documentation.Documentatio
import com.android.internal.widget.remotecompose.core.operations.layout.Component;
import com.android.internal.widget.remotecompose.core.operations.paint.PaintBundle;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -221,4 +223,17 @@ public class BackgroundModifierOperation extends DecoratorModifierOperation {
.field(FLOAT, "a", "")
.field(FLOAT, "shapeType", "0 for RECTANGLE, 1 for CIRCLE");
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER)
+ .add("type", "BackgroundModifierOperation")
+ .add("x", mX)
+ .add("y", mY)
+ .add("width", mWidth)
+ .add("height", mHeight)
+ .add("color", mA, mR, mG, mB)
+ .add("shapeType", ShapeType.getString(mShapeType));
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/BorderModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/BorderModifierOperation.java
index 06c21bd49f33..3acbd88329c2 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/BorderModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/BorderModifierOperation.java
@@ -28,6 +28,8 @@ import com.android.internal.widget.remotecompose.core.documentation.Documentatio
import com.android.internal.widget.remotecompose.core.operations.layout.Component;
import com.android.internal.widget.remotecompose.core.operations.paint.PaintBundle;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -283,4 +285,19 @@ public class BorderModifierOperation extends DecoratorModifierOperation {
.field(FLOAT, "a", "")
.field(FLOAT, "shapeType", "");
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER)
+ .add("type", "BorderModifierOperation")
+ .add("x", mX)
+ .add("y", mY)
+ .add("width", mWidth)
+ .add("height", mHeight)
+ .add("borderWidth", mBorderWidth)
+ .add("roundedCornerRadius", mRoundedCorner)
+ .add("color", mA, mR, mG, mB)
+ .add("shapeType", ShapeType.getString(mShapeType));
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ClipRectModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ClipRectModifierOperation.java
index ce4449355434..00a53170fc48 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ClipRectModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ClipRectModifierOperation.java
@@ -25,6 +25,8 @@ import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.operations.layout.Component;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -104,4 +106,13 @@ public class ClipRectModifierOperation extends DecoratorModifierOperation {
doc.operation("Canvas Operations", OP_CODE, CLASS_NAME)
.description("Draw the specified round-rect");
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER)
+ .add("type", "ClipRectModifierOperation")
+ .add("width", mWidth)
+ .add("height", mHeight);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ComponentModifiers.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ComponentModifiers.java
index dd27f8b6cfe6..a9e342144cc5 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ComponentModifiers.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ComponentModifiers.java
@@ -32,12 +32,19 @@ import com.android.internal.widget.remotecompose.core.operations.layout.Componen
import com.android.internal.widget.remotecompose.core.operations.layout.DecoratorComponent;
import com.android.internal.widget.remotecompose.core.operations.layout.TouchHandler;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.ArrayList;
/** Maintain a list of modifiers */
public class ComponentModifiers extends PaintOperation
- implements DecoratorComponent, ClickHandler, TouchHandler, SerializableToString {
+ implements DecoratorComponent,
+ ClickHandler,
+ TouchHandler,
+ SerializableToString,
+ Serializable {
@NonNull ArrayList<ModifierOperation> mList = new ArrayList<>();
@NonNull
@@ -315,4 +322,12 @@ public class ComponentModifiers extends PaintOperation
}
return 0f;
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER)
+ .add("type", "ComponentModifiers")
+ .add("modifiers", mList);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ComponentVisibilityOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ComponentVisibilityOperation.java
index dd22391c43ac..fbf8a95248b9 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ComponentVisibilityOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ComponentVisibilityOperation.java
@@ -30,6 +30,8 @@ import com.android.internal.widget.remotecompose.core.operations.layout.Componen
import com.android.internal.widget.remotecompose.core.operations.layout.DecoratorComponent;
import com.android.internal.widget.remotecompose.core.operations.layout.LayoutComponent;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -143,4 +145,13 @@ public class ComponentVisibilityOperation extends Operation
@Override
public void layout(
@NonNull RemoteContext context, Component component, float width, float height) {}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER)
+ .add("type", "ComponentVisibilityOperation")
+ .add("visibilityId", mVisibilityId)
+ .add("visibility", mVisibility);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/DecoratorModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/DecoratorModifierOperation.java
index b4c4108802ee..a4f6a2c1ba71 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/DecoratorModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/DecoratorModifierOperation.java
@@ -17,10 +17,11 @@ package com.android.internal.widget.remotecompose.core.operations.layout.modifie
import com.android.internal.widget.remotecompose.core.PaintOperation;
import com.android.internal.widget.remotecompose.core.operations.layout.DecoratorComponent;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
/**
* Represents a decorator modifier (lightweight component), ie a modifier that impacts the visual
* output (background, border...)
*/
public abstract class DecoratorModifierOperation extends PaintOperation
- implements ModifierOperation, DecoratorComponent {}
+ implements ModifierOperation, DecoratorComponent, Serializable {}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/DimensionInModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/DimensionInModifierOperation.java
index 7c9acfe8d2e6..22d458203eda 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/DimensionInModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/DimensionInModifierOperation.java
@@ -25,7 +25,7 @@ import com.android.internal.widget.remotecompose.core.operations.Utils;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
/** Helper class to set the min / max dimension on a component */
-public class DimensionInModifierOperation extends Operation
+public abstract class DimensionInModifierOperation extends Operation
implements ModifierOperation, VariableSupport {
int mOpCode = -1;
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/GraphicsLayerModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/GraphicsLayerModifierOperation.java
index dc5918037946..c1c1f9568ea8 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/GraphicsLayerModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/GraphicsLayerModifierOperation.java
@@ -29,6 +29,8 @@ import com.android.internal.widget.remotecompose.core.documentation.Documentatio
import com.android.internal.widget.remotecompose.core.operations.layout.AnimatableValue;
import com.android.internal.widget.remotecompose.core.operations.layout.Component;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -345,4 +347,26 @@ public class GraphicsLayerModifierOperation extends DecoratorModifierOperation {
@Override
public void layout(RemoteContext context, Component component, float width, float height) {}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER)
+ .add("type", "GraphicsLayerModifierOperation")
+ .add("scaleX", mScaleX)
+ .add("scaleX", mScaleX)
+ .add("rotationX", mRotationX)
+ .add("rotationY", mRotationY)
+ .add("rotationZ", mRotationZ)
+ .add("shadowElevation", mShadowElevation)
+ .add("transformOriginX", mTransformOriginX)
+ .add("transformOriginY", mTransformOriginY)
+ .add("alpha", mAlpha)
+ .add("cameraDistance", mCameraDistance)
+ .add("blendMode", mBlendMode)
+ .add("spotShadowColorId", mSpotShadowColorId)
+ .add("ambientShadowColorId", mAmbientShadowColorId)
+ .add("colorFilterId", mColorFilterId)
+ .add("renderEffectId", mRenderEffectId);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/HeightInModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/HeightInModifierOperation.java
index cc32f2699dfe..7f0dd8d8d8e5 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/HeightInModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/HeightInModifierOperation.java
@@ -23,6 +23,8 @@ import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -100,4 +102,13 @@ public class HeightInModifierOperation extends DimensionInModifierOperation {
public void serializeToString(int indent, @NonNull StringSerializer serializer) {
serializer.append(indent, "HEIGHT_IN = [" + getMin() + ", " + getMax() + "]");
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER)
+ .add("type", "HeightInModifierOperation")
+ .add("min", mV1, mValue1)
+ .add("max", mV2, mValue2);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/HeightModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/HeightModifierOperation.java
index 154740d5536c..1df84257f344 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/HeightModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/HeightModifierOperation.java
@@ -24,6 +24,8 @@ import com.android.internal.widget.remotecompose.core.Operation;
import com.android.internal.widget.remotecompose.core.Operations;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -136,4 +138,13 @@ public class HeightModifierOperation extends DimensionModifierOperation {
public HeightInModifierOperation getHeightIn() {
return mHeightIn;
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER)
+ .add("type", "HeightModifierOperation")
+ .add("height", mValue, mOutValue)
+ .add("dimensionModifierType", mType);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/HostActionOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/HostActionOperation.java
index 09e2228b847a..67714ef5abac 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/HostActionOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/HostActionOperation.java
@@ -29,12 +29,15 @@ import com.android.internal.widget.remotecompose.core.documentation.Documentatio
import com.android.internal.widget.remotecompose.core.operations.layout.ActionOperation;
import com.android.internal.widget.remotecompose.core.operations.layout.Component;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
/** Capture a host action information. This can be triggered on eg. a click. */
public class HostActionOperation extends Operation
- implements ActionOperation, SerializableToString {
+ implements ActionOperation, SerializableToString, Serializable {
private static final int OP_CODE = Operations.HOST_ACTION;
int mActionId = -1;
@@ -122,4 +125,12 @@ public class HostActionOperation extends Operation
.description("Host action. This operation represents a host action")
.field(INT, "ACTION_ID", "Host Action ID");
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER)
+ .add("type", "HostActionOperation")
+ .add("id", mActionId);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/HostNamedActionOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/HostNamedActionOperation.java
index 8a8809c653f8..40c13f143468 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/HostNamedActionOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/HostNamedActionOperation.java
@@ -28,11 +28,14 @@ import com.android.internal.widget.remotecompose.core.documentation.Documentatio
import com.android.internal.widget.remotecompose.core.operations.layout.ActionOperation;
import com.android.internal.widget.remotecompose.core.operations.layout.Component;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
/** Capture a host action information. This can be triggered on eg. a click. */
-public class HostNamedActionOperation extends Operation implements ActionOperation {
+public class HostNamedActionOperation extends Operation implements ActionOperation, Serializable {
private static final int OP_CODE = Operations.HOST_NAMED_ACTION;
public static final int FLOAT_TYPE = 0;
@@ -149,4 +152,31 @@ public class HostNamedActionOperation extends Operation implements ActionOperati
.field(INT, "TEXT_ID", "Named Host Action Text ID")
.field(INT, "VALUE_ID", "Named Host Action Value ID");
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER)
+ .add("type", "HostNamedActionOperation")
+ .add("textId", mTextId)
+ .add("actionType", getActionType(mType))
+ .add("valueId", mValueId);
+ }
+
+ private static String getActionType(int value) {
+ switch (value) {
+ case FLOAT_TYPE:
+ return "FLOAT_TYPE";
+ case INT_TYPE:
+ return "INT_TYPE";
+ case STRING_TYPE:
+ return "STRING_TYPE";
+ case FLOAT_ARRAY_TYPE:
+ return "FLOAT_ARRAY_TYPE";
+ case NONE_TYPE:
+ return "NONE_TYPE";
+ default:
+ return "INVALID_TYPE";
+ }
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/MarqueeModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/MarqueeModifierOperation.java
index 4ad11d267406..d2a1684a262a 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/MarqueeModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/MarqueeModifierOperation.java
@@ -29,6 +29,8 @@ import com.android.internal.widget.remotecompose.core.operations.layout.Componen
import com.android.internal.widget.remotecompose.core.operations.layout.LayoutComponent;
import com.android.internal.widget.remotecompose.core.operations.layout.ScrollDelegate;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -249,4 +251,17 @@ public class MarqueeModifierOperation extends DecoratorModifierOperation impleme
setContentHeight(layoutComponent.intrinsicHeight(context));
}
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER)
+ .add("type", "MarqueeModifierOperation")
+ .add("iterations", mIterations)
+ .add("animationMode", mAnimationMode)
+ .add("repeatDelayMillis", mRepeatDelayMillis)
+ .add("initialDelayMillis", mInitialDelayMillis)
+ .add("spacing", mSpacing)
+ .add("velocity", mVelocity);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ModifierOperation.java
index a86fb2c1f6a5..1ccdf75aa0b3 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ModifierOperation.java
@@ -19,9 +19,10 @@ import android.annotation.NonNull;
import com.android.internal.widget.remotecompose.core.OperationInterface;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.Serializable;
/** Represents a modifier */
-public interface ModifierOperation extends OperationInterface {
+public interface ModifierOperation extends OperationInterface, Serializable {
/**
* Serialize the string
*
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/OffsetModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/OffsetModifierOperation.java
index 2cd2728f0720..b7fe97b0e936 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/OffsetModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/OffsetModifierOperation.java
@@ -28,6 +28,8 @@ import com.android.internal.widget.remotecompose.core.documentation.Documentatio
import com.android.internal.widget.remotecompose.core.operations.Utils;
import com.android.internal.widget.remotecompose.core.operations.layout.Component;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -155,4 +157,13 @@ public class OffsetModifierOperation extends DecoratorModifierOperation {
@Override
public void layout(RemoteContext context, Component component, float width, float height) {}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER)
+ .add("type", "OffsetModifierOperation")
+ .add("x", mX)
+ .add("y", mY);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/PaddingModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/PaddingModifierOperation.java
index 3225d5c6f92c..d5b3a0b09261 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/PaddingModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/PaddingModifierOperation.java
@@ -25,6 +25,8 @@ import com.android.internal.widget.remotecompose.core.RemoteContext;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -177,4 +179,15 @@ public class PaddingModifierOperation extends Operation implements ModifierOpera
.field(FLOAT, "right", "")
.field(FLOAT, "bottom", "");
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER)
+ .add("type", "PaddingModifierOperation")
+ .add("left", mLeft)
+ .add("top", mTop)
+ .add("right", mRight)
+ .add("bottom", mBottom);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/RippleModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/RippleModifierOperation.java
index 9787d9b4b399..d3004aa73a77 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/RippleModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/RippleModifierOperation.java
@@ -33,6 +33,8 @@ import com.android.internal.widget.remotecompose.core.operations.utilities.Color
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
import com.android.internal.widget.remotecompose.core.operations.utilities.easing.Easing;
import com.android.internal.widget.remotecompose.core.operations.utilities.easing.FloatAnimation;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -210,4 +212,17 @@ public class RippleModifierOperation extends DecoratorModifierOperation implemen
@Override
public void onTouchCancel(
RemoteContext context, CoreDocument document, Component component, float x, float y) {}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER)
+ .add("type", "RippleModifierOperation")
+ .add("animateRippleStart", mAnimateRippleStart)
+ .add("animateRippleX", mAnimateRippleX)
+ .add("animateRippleY", mAnimateRippleY)
+ .add("animateRippleDuration", mAnimateRippleDuration)
+ .add("width", mWidth)
+ .add("height", mHeight);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/RoundedClipRectModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/RoundedClipRectModifierOperation.java
index 4c1f04ebd3d4..8442e05e59df 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/RoundedClipRectModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/RoundedClipRectModifierOperation.java
@@ -29,6 +29,8 @@ import com.android.internal.widget.remotecompose.core.operations.DrawBase4;
import com.android.internal.widget.remotecompose.core.operations.layout.Component;
import com.android.internal.widget.remotecompose.core.operations.layout.DecoratorComponent;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -160,4 +162,13 @@ public class RoundedClipRectModifierOperation extends DrawBase4
float bottomEnd) {
write(buffer, OP_CODE, topStart, topEnd, bottomStart, bottomEnd);
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serialize(serializer, "topStart", "topEnd", "bottomStart", "bottomEnd")
+ .addTags(SerializeTags.MODIFIER)
+ .add("type", CLASS_NAME)
+ .add("width", mWidth)
+ .add("height", mHeight);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ScrollModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ScrollModifierOperation.java
index 76b3373a52d9..a57365ec9132 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ScrollModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ScrollModifierOperation.java
@@ -18,6 +18,7 @@ package com.android.internal.widget.remotecompose.core.operations.layout.modifie
import static com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation.INT;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import com.android.internal.widget.remotecompose.core.CoreDocument;
import com.android.internal.widget.remotecompose.core.Operation;
@@ -37,12 +38,19 @@ import com.android.internal.widget.remotecompose.core.operations.layout.RootLayo
import com.android.internal.widget.remotecompose.core.operations.layout.ScrollDelegate;
import com.android.internal.widget.remotecompose.core.operations.layout.TouchHandler;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.semantics.ScrollableComponent;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
/** Represents a scroll modifier. */
public class ScrollModifierOperation extends ListActionsOperation
- implements TouchHandler, DecoratorComponent, ScrollDelegate, VariableSupport {
+ implements TouchHandler,
+ DecoratorComponent,
+ ScrollDelegate,
+ VariableSupport,
+ ScrollableComponent {
private static final int OP_CODE = Operations.MODIFIER_SCROLL;
public static final String CLASS_NAME = "ScrollModifierOperation";
@@ -384,4 +392,58 @@ public class ScrollModifierOperation extends ListActionsOperation
public void reset() {
// nothing here for now
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER)
+ .add("type", "ScrollModifierOperation")
+ .add("direction", mDirection)
+ .add("max", mMax)
+ .add("notchMax", mNotchMax)
+ .add("scrollX", mScrollX)
+ .add("scrollY", mScrollY)
+ .add("maxScrollX", mMaxScrollX)
+ .add("maxScrollY", mMaxScrollY)
+ .add("contentDimension", mContentDimension)
+ .add("hostDimension", mHostDimension);
+ }
+
+ @Override
+ public int scrollDirection() {
+ if (handlesVerticalScroll()) {
+ return ScrollableComponent.SCROLL_VERTICAL;
+ } else {
+ return ScrollableComponent.SCROLL_HORIZONTAL;
+ }
+ }
+
+ @Override
+ public int scrollByOffset(RemoteContext context, int offset) {
+ // TODO work out how to avoid disabling this
+ mTouchExpression = null;
+
+ if (handlesVerticalScroll()) {
+ mScrollY = Math.max(-mMaxScrollY, Math.min(0, mScrollY + offset));
+ } else {
+ mScrollX = Math.max(-mMaxScrollX, Math.min(0, mScrollX + offset));
+ }
+ return offset;
+ }
+
+ @Override
+ public boolean showOnScreen(RemoteContext context, int childId) {
+ // TODO correct this when we trust the bounds in parent
+ return scrollByOffset(context, -1000) != 0;
+ }
+
+ @Nullable
+ @Override
+ public ScrollAxisRange getScrollAxisRange() {
+ if (handlesVerticalScroll()) {
+ return new ScrollAxisRange(mScrollY, mMaxScrollY, true, true);
+ } else {
+ return new ScrollAxisRange(mScrollX, mMaxScrollX, true, true);
+ }
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ShapeType.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ShapeType.java
index 0cd062eb25c3..4c6fbe37cfa6 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ShapeType.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ShapeType.java
@@ -17,7 +17,26 @@ package com.android.internal.widget.remotecompose.core.operations.layout.modifie
/** Known shapes, used for modifiers (clip/background/border) */
public class ShapeType {
- public static int RECTANGLE = 0;
- public static int CIRCLE = 1;
- public static int ROUNDED_RECTANGLE = 2;
+ public static final int RECTANGLE = 0;
+ public static final int CIRCLE = 1;
+ public static final int ROUNDED_RECTANGLE = 2;
+
+ /**
+ * Returns a string representation of the value. Used during serialization.
+ *
+ * @param value
+ * @return
+ */
+ public static String getString(int value) {
+ switch (value) {
+ case ShapeType.RECTANGLE:
+ return "RECTANGLE";
+ case ShapeType.CIRCLE:
+ return "CIRCLE";
+ case ShapeType.ROUNDED_RECTANGLE:
+ return "ROUNDED_RECTANGLE";
+ default:
+ return "INVALID_SHAPE_TYPE[" + value + "]";
+ }
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueFloatChangeActionOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueFloatChangeActionOperation.java
index d625900fcf2e..bd91734602d9 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueFloatChangeActionOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueFloatChangeActionOperation.java
@@ -29,6 +29,8 @@ import com.android.internal.widget.remotecompose.core.documentation.Documentatio
import com.android.internal.widget.remotecompose.core.operations.layout.ActionOperation;
import com.android.internal.widget.remotecompose.core.operations.layout.Component;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -119,4 +121,13 @@ public class ValueFloatChangeActionOperation extends Operation implements Action
.field(INT, "TARGET_VALUE_ID", "Value ID")
.field(FLOAT, "VALUE", "float value to be assigned to the target");
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER, SerializeTags.ACTION)
+ .add("type", "ValueFloatChangeActionOperation")
+ .add("targetValueId", mTargetValueId)
+ .add("value", mValue);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueFloatExpressionChangeActionOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueFloatExpressionChangeActionOperation.java
index 3f26c5e5575b..4b18d0aaf0df 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueFloatExpressionChangeActionOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueFloatExpressionChangeActionOperation.java
@@ -28,6 +28,8 @@ import com.android.internal.widget.remotecompose.core.documentation.Documentatio
import com.android.internal.widget.remotecompose.core.operations.layout.ActionOperation;
import com.android.internal.widget.remotecompose.core.operations.layout.Component;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -126,4 +128,13 @@ public class ValueFloatExpressionChangeActionOperation extends Operation
.field(INT, "TARGET_VALUE_ID", "Value ID")
.field(INT, "VALUE_ID", "id of the value to be assigned to the target");
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER, SerializeTags.ACTION)
+ .add("type", "ValueFloatExpressionChangeActionOperation")
+ .add("targetValueId", mTargetValueId)
+ .add("valueExpressionId", mValueExpressionId);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueIntegerChangeActionOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueIntegerChangeActionOperation.java
index 8c5bb6fdb268..d86c4a6ad416 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueIntegerChangeActionOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueIntegerChangeActionOperation.java
@@ -28,6 +28,8 @@ import com.android.internal.widget.remotecompose.core.documentation.Documentatio
import com.android.internal.widget.remotecompose.core.operations.layout.ActionOperation;
import com.android.internal.widget.remotecompose.core.operations.layout.Component;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -124,4 +126,13 @@ public class ValueIntegerChangeActionOperation extends Operation implements Acti
.field(INT, "TARGET_VALUE_ID", "Value ID")
.field(INT, "VALUE", "integer value to be assigned to the target");
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER, SerializeTags.ACTION)
+ .add("type", "ValueIntegerChangeActionOperation")
+ .add("targetValueId", mTargetValueId)
+ .add("value", mValue);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueIntegerExpressionChangeActionOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueIntegerExpressionChangeActionOperation.java
index 00c80f12aaba..e253460d2afb 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueIntegerExpressionChangeActionOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueIntegerExpressionChangeActionOperation.java
@@ -28,6 +28,8 @@ import com.android.internal.widget.remotecompose.core.documentation.Documentatio
import com.android.internal.widget.remotecompose.core.operations.layout.ActionOperation;
import com.android.internal.widget.remotecompose.core.operations.layout.Component;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -126,4 +128,13 @@ public class ValueIntegerExpressionChangeActionOperation extends Operation
.field(INT, "TARGET_VALUE_ID", "Value ID")
.field(INT, "VALUE_ID", "id of the value to be assigned to the target");
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER, SerializeTags.ACTION)
+ .add("type", "ValueIntegerExpressionChangeActionOperation")
+ .add("targetValueId", mTargetValueId)
+ .add("valueExpressionId", mValueExpressionId);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueStringChangeActionOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueStringChangeActionOperation.java
index 57e30d4126ba..e84b29922523 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueStringChangeActionOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ValueStringChangeActionOperation.java
@@ -28,6 +28,8 @@ import com.android.internal.widget.remotecompose.core.documentation.Documentatio
import com.android.internal.widget.remotecompose.core.operations.layout.ActionOperation;
import com.android.internal.widget.remotecompose.core.operations.layout.Component;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -132,4 +134,13 @@ public class ValueStringChangeActionOperation extends Operation implements Actio
"VALUE_ID",
"Value ID to be assigned to the target " + "value as a string");
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER, SerializeTags.ACTION)
+ .add("type", "ValueIntegerExpressionChangeActionOperation")
+ .add("targetValueId", mTargetValueId)
+ .add("valueId", mValueId);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/WidthInModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/WidthInModifierOperation.java
index 8c1ffbd2c500..3282a9cb5426 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/WidthInModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/WidthInModifierOperation.java
@@ -23,6 +23,8 @@ import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -100,4 +102,13 @@ public class WidthInModifierOperation extends DimensionInModifierOperation {
public void serializeToString(int indent, @NonNull StringSerializer serializer) {
serializer.append(indent, "WIDTH_IN = [" + getMin() + ", " + getMax() + "]");
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER)
+ .add("type", "WidthInModifierOperation")
+ .add("min", mV1, mValue1)
+ .add("max", mV2, mValue2);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/WidthModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/WidthModifierOperation.java
index 687238e62bac..6fe5a70b7ad4 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/WidthModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/WidthModifierOperation.java
@@ -24,6 +24,8 @@ import com.android.internal.widget.remotecompose.core.Operation;
import com.android.internal.widget.remotecompose.core.Operations;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.documentation.DocumentationBuilder;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -136,4 +138,13 @@ public class WidthModifierOperation extends DimensionModifierOperation {
public WidthInModifierOperation getWidthIn() {
return mWidthIn;
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER)
+ .add("type", "WidthModifierOperation")
+ .add("width", mValue, mOutValue)
+ .add("dimensionModifierType", mType);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ZIndexModifierOperation.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ZIndexModifierOperation.java
index 52841a7e6779..f250951ab87e 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ZIndexModifierOperation.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/modifiers/ZIndexModifierOperation.java
@@ -28,6 +28,8 @@ import com.android.internal.widget.remotecompose.core.documentation.Documentatio
import com.android.internal.widget.remotecompose.core.operations.Utils;
import com.android.internal.widget.remotecompose.core.operations.layout.Component;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -140,4 +142,12 @@ public class ZIndexModifierOperation extends DecoratorModifierOperation {
@Override
public void layout(RemoteContext context, Component component, float width, float height) {}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER)
+ .add("type", "ZIndexModifierOperation")
+ .add("value", mValue);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/utilities/easing/Easing.java b/core/java/com/android/internal/widget/remotecompose/core/operations/utilities/easing/Easing.java
index 2b5368297dae..9b5f961e3ab2 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/utilities/easing/Easing.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/utilities/easing/Easing.java
@@ -73,4 +73,37 @@ public abstract class Easing {
/** a elastic Easing function */
public static final int EASE_OUT_ELASTIC = 14;
+
+ /**
+ * Returns a string representation for the given value. Used during serialization.
+ *
+ * @param value
+ * @return
+ */
+ public static String getString(int value) {
+ switch (value) {
+ case CUBIC_STANDARD:
+ return "CUBIC_STANDARD";
+ case CUBIC_ACCELERATE:
+ return "CUBIC_ACCELERATE";
+ case CUBIC_DECELERATE:
+ return "CUBIC_DECELERATE";
+ case CUBIC_LINEAR:
+ return "CUBIC_LINEAR";
+ case CUBIC_ANTICIPATE:
+ return "CUBIC_ANTICIPATE";
+ case CUBIC_OVERSHOOT:
+ return "CUBIC_OVERSHOOT";
+ case CUBIC_CUSTOM:
+ return "CUBIC_CUSTOM";
+ case SPLINE_CUSTOM:
+ return "SPLINE_CUSTOM";
+ case EASE_OUT_BOUNCE:
+ return "EASE_OUT_BOUNCE";
+ case EASE_OUT_ELASTIC:
+ return "EASE_OUT_ELASTIC";
+ default:
+ return "INVALID_CURVE_TYPE[" + value + "]";
+ }
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/semantics/CoreSemantics.java b/core/java/com/android/internal/widget/remotecompose/core/semantics/CoreSemantics.java
index 5b35ee5fc7ed..08559fc21acb 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/semantics/CoreSemantics.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/semantics/CoreSemantics.java
@@ -23,6 +23,8 @@ import com.android.internal.widget.remotecompose.core.Operations;
import com.android.internal.widget.remotecompose.core.RemoteContext;
import com.android.internal.widget.remotecompose.core.WireBuffer;
import com.android.internal.widget.remotecompose.core.operations.utilities.StringSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
+import com.android.internal.widget.remotecompose.core.serialize.SerializeTags;
import java.util.List;
@@ -154,4 +156,18 @@ public class CoreSemantics extends Operation implements AccessibilityModifier {
public @Nullable Integer getTextId() {
return mTextId != 0 ? mTextId : null;
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {
+ serializer
+ .addTags(SerializeTags.MODIFIER, SerializeTags.A11Y)
+ .add("type", "CoreSemantics")
+ .add("contentDescriptionId", mContentDescriptionId)
+ .add("role", mRole)
+ .add("textId", mTextId)
+ .add("stateDescriptionId", mStateDescriptionId)
+ .add("enabled", mEnabled)
+ .add("mode", mMode)
+ .add("clickable", mClickable);
+ }
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/semantics/ScrollableComponent.java b/core/java/com/android/internal/widget/remotecompose/core/semantics/ScrollableComponent.java
new file mode 100644
index 000000000000..3d1bd12357c9
--- /dev/null
+++ b/core/java/com/android/internal/widget/remotecompose/core/semantics/ScrollableComponent.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.internal.widget.remotecompose.core.semantics;
+
+import android.annotation.Nullable;
+
+import com.android.internal.widget.remotecompose.core.RemoteContext;
+
+/**
+ * Interface for components that support scrolling.
+ *
+ * <p>This interface defines the contract for components that can be scrolled, either horizontally,
+ * vertically. It provides methods for checking scroll support, performing scroll operations, and
+ * querying the scroll range and current position.
+ */
+public interface ScrollableComponent extends AccessibilitySemantics {
+ int SCROLL_NONE = 0;
+ int SCROLL_HORIZONTAL = 1;
+ int SCROLL_VERTICAL = 2;
+
+ /** Indicates whether this component supports scrolling by a specified offset. */
+ default boolean supportsScrollByOffset() {
+ return true;
+ }
+
+ /**
+ * Scrolls the content by the specified offset.
+ *
+ * @param offset The amount to scroll by in pixels. Positive values indicate scrolling down or
+ * to the right, while negative values indicate scrolling up or to the left.
+ * @return The offset value that was consumed by this component scrolling.
+ */
+ default int scrollByOffset(RemoteContext context, int offset) {
+ return offset;
+ }
+
+ /**
+ * Show a child with the given ID on the screen, typically scrolling so it's fully on screen.
+ *
+ * @param childId The ID of the child to check for visibility.
+ * @return {@code true} if the child with the given ID could be shown on screen; {@code false}
+ * otherwise.
+ */
+ default boolean showOnScreen(RemoteContext context, int childId) {
+ return false;
+ }
+
+ /** Gets the current scroll direction. */
+ int scrollDirection();
+
+ /** Represents a range along a scroll axis. */
+ default @Nullable ScrollAxisRange getScrollAxisRange() {
+ return null;
+ }
+
+ /**
+ * Represents the state of a scrollable axis, including its current value, maximum value, and
+ * whether it can scroll forward or backward.
+ */
+ class ScrollAxisRange {
+ private float mValue;
+ private float mMaxValue;
+ private boolean mCanScrollForward;
+ private boolean mCanScrollBackwards;
+
+ /**
+ * Represents the range and scroll capabilities of a single axis (e.g., horizontal or
+ * vertical) in a scrollable area.
+ */
+ public ScrollAxisRange(
+ float value, float maxValue, boolean canScrollForward, boolean canScrollBackwards) {
+ this.mValue = value;
+ this.mMaxValue = maxValue;
+ this.mCanScrollForward = canScrollForward;
+ this.mCanScrollBackwards = canScrollBackwards;
+ }
+
+ /** Returns the current scroll offset held by this scrollable component. */
+ public float getmValue() {
+ return mValue;
+ }
+
+ /** Returns the maximum scroll offset possible by this scrollable component. */
+ public float getMaxValue() {
+ return mMaxValue;
+ }
+
+ /** Returns {@code true} if this scrollable component can scroll forward. */
+ public boolean canScrollForward() {
+ return mCanScrollForward;
+ }
+
+ /** Returns {@code true} if this scrollable component can scroll backwards. */
+ public boolean canScrollBackwards() {
+ return mCanScrollBackwards;
+ }
+ }
+}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/serialize/MapSerializer.java b/core/java/com/android/internal/widget/remotecompose/core/serialize/MapSerializer.java
index 2be8057ce097..bcdac22f7baa 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/serialize/MapSerializer.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/serialize/MapSerializer.java
@@ -24,13 +24,20 @@ import java.util.Map;
public interface MapSerializer {
/**
+ * Add metadata to this map for filtering by the data format generator.
+ *
+ * @param value A set of tags to add
+ */
+ MapSerializer addTags(SerializeTags... value);
+
+ /**
* Add a list entry to this map. The List values can be any primitive, List, Map, or
* Serializable
*
* @param key The key
* @param value The list
*/
- <T> void add(String key, @Nullable List<T> value);
+ <T> MapSerializer add(String key, @Nullable List<T> value);
/**
* Add a map entry to this map. The map values can be any primitive, List, Map, or Serializable
@@ -38,7 +45,7 @@ public interface MapSerializer {
* @param key The key
* @param value The list
*/
- <T> void add(String key, @Nullable Map<String, T> value);
+ <T> MapSerializer add(String key, @Nullable Map<String, T> value);
/**
* Adds any Serializable type to this map
@@ -46,7 +53,7 @@ public interface MapSerializer {
* @param key The key
* @param value The Serializable
*/
- void add(String key, @Nullable Serializable value);
+ MapSerializer add(String key, @Nullable Serializable value);
/**
* Adds a String entry
@@ -54,7 +61,27 @@ public interface MapSerializer {
* @param key The key
* @param value The String
*/
- void add(String key, @Nullable String value);
+ MapSerializer add(String key, @Nullable String value);
+
+ /**
+ * Adds a color entry
+ *
+ * @param key The key
+ * @param a Alpha value [0, 1]
+ * @param r Red value [0, 1]
+ * @param g Green value [0, 1]
+ * @param b Blue value [0, 1]
+ */
+ MapSerializer add(String key, float a, float r, float g, float b);
+
+ /**
+ * Adds an ID and Value pair. This can be either a value or variable.
+ *
+ * @param key The key
+ * @param id Maybe float NaN ID
+ * @param value Maybe value
+ */
+ MapSerializer add(String key, float id, float value);
/**
* Adds a Byte entry
@@ -62,7 +89,7 @@ public interface MapSerializer {
* @param key The key
* @param value The Byte
*/
- void add(String key, @Nullable Byte value);
+ MapSerializer add(String key, @Nullable Byte value);
/**
* Adds a Short entry
@@ -70,7 +97,7 @@ public interface MapSerializer {
* @param key The key
* @param value The Short
*/
- void add(String key, @Nullable Short value);
+ MapSerializer add(String key, @Nullable Short value);
/**
* Adds an Integer entry
@@ -78,7 +105,7 @@ public interface MapSerializer {
* @param key The key
* @param value The Integer
*/
- void add(String key, @Nullable Integer value);
+ MapSerializer add(String key, @Nullable Integer value);
/**
* Adds a Long entry
@@ -86,7 +113,7 @@ public interface MapSerializer {
* @param key The key
* @param value The Long
*/
- void add(String key, @Nullable Long value);
+ MapSerializer add(String key, @Nullable Long value);
/**
* Adds a Float entry
@@ -94,7 +121,7 @@ public interface MapSerializer {
* @param key The key
* @param value The Float
*/
- void add(String key, @Nullable Float value);
+ MapSerializer add(String key, @Nullable Float value);
/**
* Adds a Double entry
@@ -102,7 +129,7 @@ public interface MapSerializer {
* @param key The key
* @param value The Double
*/
- void add(String key, @Nullable Double value);
+ MapSerializer add(String key, @Nullable Double value);
/**
* Adds a Boolean entry
@@ -110,7 +137,7 @@ public interface MapSerializer {
* @param key The key
* @param value The Boolean
*/
- void add(String key, @Nullable Boolean value);
+ MapSerializer add(String key, @Nullable Boolean value);
/**
* Adds a Enum entry
@@ -118,5 +145,5 @@ public interface MapSerializer {
* @param key The key
* @param value The Enum
*/
- <T extends Enum<T>> void add(String key, @Nullable Enum<T> value);
+ <T extends Enum<T>> MapSerializer add(String key, @Nullable Enum<T> value);
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIShellTestCase.java b/core/java/com/android/internal/widget/remotecompose/core/serialize/SerializeTags.java
index 979cee9d63c2..99cac0fc75a8 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIShellTestCase.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/serialize/SerializeTags.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2024 The Android Open Source Project
+ * Copyright (C) 2025 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,13 +13,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package com.android.internal.widget.remotecompose.core.serialize;
-package com.android.wm.shell.compatui;
-
-import com.android.wm.shell.ShellTestCase;
-
-/**
- * Base class for CompatUI tests.
- */
-public class CompatUIShellTestCase extends ShellTestCase {
+public enum SerializeTags {
+ COMPONENT,
+ LAYOUT_COMPONENT,
+ MODIFIER,
+ A11Y,
+ ACTION,
+ DRAW_OPERATION,
}
diff --git a/core/java/com/android/internal/widget/remotecompose/player/platform/AndroidComputedTextLayout.java b/core/java/com/android/internal/widget/remotecompose/player/platform/AndroidComputedTextLayout.java
new file mode 100644
index 000000000000..98ce30f51fe6
--- /dev/null
+++ b/core/java/com/android/internal/widget/remotecompose/player/platform/AndroidComputedTextLayout.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.internal.widget.remotecompose.player.platform;
+
+import android.text.StaticLayout;
+
+import com.android.internal.widget.remotecompose.core.Platform;
+
+public class AndroidComputedTextLayout implements Platform.ComputedTextLayout {
+ StaticLayout mStaticLayout;
+ float mWidth;
+ float mHeight;
+
+ public AndroidComputedTextLayout(StaticLayout staticLayout, float width, float height) {
+ mStaticLayout = staticLayout;
+ mWidth = width;
+ mHeight = height;
+ }
+
+ /**
+ * Set a StaticLayout on this container
+ *
+ * @param layout
+ */
+ public void set(StaticLayout layout) {
+ mStaticLayout = layout;
+ }
+
+ /**
+ * Retrieve the stored StaticLayout
+ *
+ * @return
+ */
+ public StaticLayout get() {
+ return mStaticLayout;
+ }
+
+ @Override
+ public float getWidth() {
+ return mWidth;
+ }
+
+ @Override
+ public float getHeight() {
+ return mHeight;
+ }
+}
diff --git a/core/java/com/android/internal/widget/remotecompose/player/platform/AndroidPaintContext.java b/core/java/com/android/internal/widget/remotecompose/player/platform/AndroidPaintContext.java
index 16e0e054ea4f..6b1a30a7545c 100644
--- a/core/java/com/android/internal/widget/remotecompose/player/platform/AndroidPaintContext.java
+++ b/core/java/com/android/internal/widget/remotecompose/player/platform/AndroidPaintContext.java
@@ -17,7 +17,9 @@ package com.android.internal.widget.remotecompose.player.platform;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SuppressLint;
import android.graphics.Bitmap;
+import android.graphics.BitmapShader;
import android.graphics.BlendMode;
import android.graphics.Canvas;
import android.graphics.LinearGradient;
@@ -34,12 +36,18 @@ import android.graphics.RuntimeShader;
import android.graphics.Shader;
import android.graphics.SweepGradient;
import android.graphics.Typeface;
+import android.text.Layout;
+import android.text.StaticLayout;
+import android.text.TextPaint;
+import android.text.TextUtils;
import com.android.internal.widget.remotecompose.core.PaintContext;
+import com.android.internal.widget.remotecompose.core.Platform;
import com.android.internal.widget.remotecompose.core.RemoteContext;
import com.android.internal.widget.remotecompose.core.operations.ClipPath;
import com.android.internal.widget.remotecompose.core.operations.ShaderData;
import com.android.internal.widget.remotecompose.core.operations.Utils;
+import com.android.internal.widget.remotecompose.core.operations.layout.managers.TextLayout;
import com.android.internal.widget.remotecompose.core.operations.paint.PaintBundle;
import com.android.internal.widget.remotecompose.core.operations.paint.PaintChanges;
@@ -262,17 +270,21 @@ public class AndroidPaintContext extends PaintContext {
}
mPaint.getFontMetrics(mCachedFontMetrics);
mPaint.getTextBounds(str, start, end, mTmpRect);
-
- bounds[0] = mTmpRect.left;
-
- if ((flags & PaintContext.TEXT_MEASURE_MONOSPACE_WIDTH) != 0) {
- bounds[2] = mPaint.measureText(str, start, end) - mTmpRect.left;
+ if ((flags & PaintContext.TEXT_MEASURE_SPACES) != 0
+ && (str.startsWith(" ") || str.endsWith(" "))) {
+ bounds[0] = 0f;
+ bounds[2] = mPaint.measureText(str, start, end);
} else {
- bounds[2] = mTmpRect.right;
+ bounds[0] = mTmpRect.left;
+ if ((flags & PaintContext.TEXT_MEASURE_MONOSPACE_WIDTH) != 0) {
+ bounds[2] = mPaint.measureText(str, start, end) - mTmpRect.left;
+ } else {
+ bounds[2] = mTmpRect.right;
+ }
}
if ((flags & PaintContext.TEXT_MEASURE_FONT_HEIGHT) != 0) {
- bounds[1] = Math.round(mCachedFontMetrics.ascent);
+ bounds[1] = Math.round(mCachedFontMetrics.top);
bounds[3] = Math.round(mCachedFontMetrics.bottom);
} else {
bounds[1] = mTmpRect.top;
@@ -281,6 +293,58 @@ public class AndroidPaintContext extends PaintContext {
}
@Override
+ public Platform.ComputedTextLayout layoutComplexText(
+ int textId,
+ int start,
+ int end,
+ int alignment,
+ int overflow,
+ int maxLines,
+ float maxWidth,
+ int flags) {
+ String str = getText(textId);
+ if (str == null) {
+ return null;
+ }
+ if (end == -1 || end > str.length()) {
+ end = str.length();
+ }
+
+ TextPaint textPaint = new TextPaint();
+ textPaint.set(mPaint);
+ StaticLayout.Builder staticLayoutBuilder =
+ StaticLayout.Builder.obtain(str, start, end, textPaint, (int) maxWidth);
+ switch (alignment) {
+ case TextLayout.TEXT_ALIGN_RIGHT:
+ case TextLayout.TEXT_ALIGN_END:
+ staticLayoutBuilder.setAlignment(Layout.Alignment.ALIGN_OPPOSITE);
+ break;
+ case TextLayout.TEXT_ALIGN_CENTER:
+ staticLayoutBuilder.setAlignment(Layout.Alignment.ALIGN_CENTER);
+ break;
+ default:
+ staticLayoutBuilder.setAlignment(Layout.Alignment.ALIGN_NORMAL);
+ }
+ switch (overflow) {
+ case TextLayout.OVERFLOW_ELLIPSIS:
+ staticLayoutBuilder.setEllipsize(TextUtils.TruncateAt.END);
+ break;
+ case TextLayout.OVERFLOW_MIDDLE_ELLIPSIS:
+ staticLayoutBuilder.setEllipsize(TextUtils.TruncateAt.MIDDLE);
+ break;
+ case TextLayout.OVERFLOW_START_ELLIPSIS:
+ staticLayoutBuilder.setEllipsize(TextUtils.TruncateAt.START);
+ break;
+ default:
+ }
+ staticLayoutBuilder.setMaxLines(maxLines);
+
+ StaticLayout staticLayout = staticLayoutBuilder.build();
+ return new AndroidComputedTextLayout(
+ staticLayout, staticLayout.getWidth(), staticLayout.getHeight());
+ }
+
+ @Override
public void drawTextRun(
int textID,
int start,
@@ -309,6 +373,15 @@ public class AndroidPaintContext extends PaintContext {
}
@Override
+ public void drawComplexText(Platform.ComputedTextLayout computedTextLayout) {
+ if (computedTextLayout == null) {
+ return;
+ }
+ StaticLayout staticLayout = ((AndroidComputedTextLayout) computedTextLayout).get();
+ staticLayout.draw(mCanvas);
+ }
+
+ @Override
public void drawTweenPath(int path1Id, int path2Id, float tween, float start, float end) {
mCanvas.drawPath(getPath(path1Id, path2Id, tween, start, end), mPaint);
}
@@ -494,6 +567,7 @@ public class AndroidPaintContext extends PaintContext {
mPaint.setStyle(Paint.Style.values()[style]);
}
+ @SuppressLint("NewApi")
@Override
public void setShader(int shaderId) {
// TODO this stuff should check the shader creation
@@ -522,6 +596,12 @@ public class AndroidPaintContext extends PaintContext {
for (int i = 0; i < names.length; i++) {
String name = names[i];
int val = data.getUniformBitmapId(name);
+ AndroidRemoteContext androidContext = (AndroidRemoteContext) mContext;
+ Bitmap bitmap = (Bitmap) androidContext.mRemoteComposeState.getFromId(val);
+ BitmapShader bitmapShader =
+ new BitmapShader(
+ bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
+ shader.setInputShader(name, bitmapShader);
}
mPaint.setShader(shader);
}
diff --git a/core/jni/Android.bp b/core/jni/Android.bp
index 3afe27ea591f..447822f0903f 100644
--- a/core/jni/Android.bp
+++ b/core/jni/Android.bp
@@ -42,6 +42,8 @@ cc_library_shared_for_libandroid_runtime {
"-DU_USING_ICU_NAMESPACE=0",
+ "-DANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION",
+
"-Wall",
"-Werror",
"-Wextra",
@@ -280,6 +282,7 @@ cc_library_shared_for_libandroid_runtime {
],
static_libs: [
+ "android.os.flags-aconfig-cc",
"libasync_safe",
"libbinderthreadstateutils",
"libdmabufinfo",
diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp
index aea1734918d6..5c0b72013a06 100644
--- a/core/jni/AndroidRuntime.cpp
+++ b/core/jni/AndroidRuntime.cpp
@@ -22,6 +22,7 @@
#include <android-base/parsebool.h>
#include <android-base/properties.h>
#include <android/graphics/jni_runtime.h>
+#include <android_os.h>
#include <android_runtime/AndroidRuntime.h>
#include <assert.h>
#include <binder/IBinder.h>
@@ -893,9 +894,13 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote, bool p
madviseWillNeedFileSizeOdex,
"-XMadviseWillNeedOdexFileSize:");
- parseRuntimeOption("dalvik.vm.madvise.artfile.size",
- madviseWillNeedFileSizeArt,
- "-XMadviseWillNeedArtFileSize:");
+ // Historically, dalvik.vm.madvise.artfile.size was set to UINT_MAX by default. With the
+ // disable_madvise_art_default flag rollout, we use this default only when the flag is disabled.
+ // TODO(b/382110550): Remove this property/flag entirely after validating and ramping.
+ const char* madvise_artfile_size_default =
+ android::os::disable_madvise_artfile_default() ? "" : "4294967295";
+ parseRuntimeOption("dalvik.vm.madvise.artfile.size", madviseWillNeedFileSizeArt,
+ "-XMadviseWillNeedArtFileSize:", madvise_artfile_size_default);
/*
* Profile related options.
diff --git a/core/jni/android_content_res_ObbScanner.cpp b/core/jni/android_content_res_ObbScanner.cpp
index 760037f63195..5b412ab19e16 100644
--- a/core/jni/android_content_res_ObbScanner.cpp
+++ b/core/jni/android_content_res_ObbScanner.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "ObbScanner"
diff --git a/core/jni/android_graphics_BLASTBufferQueue.cpp b/core/jni/android_graphics_BLASTBufferQueue.cpp
index 10d6d33c5a76..a52678359423 100644
--- a/core/jni/android_graphics_BLASTBufferQueue.cpp
+++ b/core/jni/android_graphics_BLASTBufferQueue.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "BLASTBufferQueue"
diff --git a/core/jni/android_graphics_GraphicBuffer.cpp b/core/jni/android_graphics_GraphicBuffer.cpp
index d5765f1907d5..61dbb32c3b9f 100644
--- a/core/jni/android_graphics_GraphicBuffer.cpp
+++ b/core/jni/android_graphics_GraphicBuffer.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "GraphicBuffer"
diff --git a/core/jni/android_graphics_SurfaceTexture.cpp b/core/jni/android_graphics_SurfaceTexture.cpp
index 8dd63cc07b8a..93d1e2eef9e7 100644
--- a/core/jni/android_graphics_SurfaceTexture.cpp
+++ b/core/jni/android_graphics_SurfaceTexture.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#undef LOG_TAG
#define LOG_TAG "SurfaceTexture"
diff --git a/core/jni/android_hardware_Camera.cpp b/core/jni/android_hardware_Camera.cpp
index 42406147b2f0..003ebc032a29 100644
--- a/core/jni/android_hardware_Camera.cpp
+++ b/core/jni/android_hardware_Camera.cpp
@@ -14,6 +14,7 @@
** See the License for the specific language governing permissions and
** limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
//#define LOG_NDEBUG 0
#define LOG_TAG "Camera-JNI"
diff --git a/core/jni/android_hardware_HardwareBuffer.cpp b/core/jni/android_hardware_HardwareBuffer.cpp
index 2ea2158d1884..c8059f39a34a 100644
--- a/core/jni/android_hardware_HardwareBuffer.cpp
+++ b/core/jni/android_hardware_HardwareBuffer.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "HardwareBuffer"
diff --git a/core/jni/android_hardware_SensorManager.cpp b/core/jni/android_hardware_SensorManager.cpp
index 56ea52d2ad8b..2864a5718f33 100644
--- a/core/jni/android_hardware_SensorManager.cpp
+++ b/core/jni/android_hardware_SensorManager.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "SensorManager"
#include <nativehelper/JNIHelp.h>
diff --git a/core/jni/android_hardware_camera2_CameraMetadata.cpp b/core/jni/android_hardware_camera2_CameraMetadata.cpp
index a0987373687b..7629faa3a72c 100644
--- a/core/jni/android_hardware_camera2_CameraMetadata.cpp
+++ b/core/jni/android_hardware_camera2_CameraMetadata.cpp
@@ -14,6 +14,7 @@
** See the License for the specific language governing permissions and
** limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
// #define LOG_NDEBUG 0
#include <memory>
diff --git a/core/jni/android_hardware_camera2_DngCreator.cpp b/core/jni/android_hardware_camera2_DngCreator.cpp
index 82570be8e329..828f2eb76c60 100644
--- a/core/jni/android_hardware_camera2_DngCreator.cpp
+++ b/core/jni/android_hardware_camera2_DngCreator.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
//#define LOG_NDEBUG 0
#define LOG_TAG "DngCreator_JNI"
diff --git a/core/jni/android_hardware_display_DisplayTopology.cpp b/core/jni/android_hardware_display_DisplayTopology.cpp
index a16f3c3c20b8..a11b3cebef47 100644
--- a/core/jni/android_hardware_display_DisplayTopology.cpp
+++ b/core/jni/android_hardware_display_DisplayTopology.cpp
@@ -81,7 +81,7 @@ status_t android_hardware_display_DisplayTopologyGraphNode_toNative(
for (jsize i = 0; i < length; i++) {
ScopedLocalRef<jobject>
adjacentDisplayObj(env, env->GetObjectArrayElement(adjacentDisplaysArray, i));
- if (NULL != adjacentDisplayObj.get()) {
+ if (NULL == adjacentDisplayObj.get()) {
break; // found null element indicating end of used portion of the array
}
@@ -109,7 +109,7 @@ DisplayTopologyGraph android_hardware_display_DisplayTopologyGraph_toNative(JNIE
jsize length = env->GetArrayLength(nodesArray);
for (jsize i = 0; i < length; i++) {
ScopedLocalRef<jobject> nodeObj(env, env->GetObjectArrayElement(nodesArray, i));
- if (NULL != nodeObj.get()) {
+ if (NULL == nodeObj.get()) {
break; // found null element indicating end of used portion of the array
}
diff --git a/core/jni/android_hardware_input_InputWindowHandle.cpp b/core/jni/android_hardware_input_InputWindowHandle.cpp
index f1c4913fe006..a3de6fbc3992 100644
--- a/core/jni/android_hardware_input_InputWindowHandle.cpp
+++ b/core/jni/android_hardware_input_InputWindowHandle.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "InputWindowHandle"
diff --git a/core/jni/android_media_AudioRecord.cpp b/core/jni/android_media_AudioRecord.cpp
index 5a183925e38e..102edc944c22 100644
--- a/core/jni/android_media_AudioRecord.cpp
+++ b/core/jni/android_media_AudioRecord.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
//#define LOG_NDEBUG 0
diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp
index 3d9a19e129a8..2ba6bc4912c3 100644
--- a/core/jni/android_media_AudioSystem.cpp
+++ b/core/jni/android_media_AudioSystem.cpp
@@ -14,6 +14,7 @@
** See the License for the specific language governing permissions and
** limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
//#define LOG_NDEBUG 0
diff --git a/core/jni/android_media_AudioTrack.cpp b/core/jni/android_media_AudioTrack.cpp
index 5d4d1ce20e5d..3fc1a02f46b6 100644
--- a/core/jni/android_media_AudioTrack.cpp
+++ b/core/jni/android_media_AudioTrack.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
//#define LOG_NDEBUG 0
#define LOG_TAG "AudioTrack-JNI"
diff --git a/core/jni/android_media_AudioVolumeGroupCallback.cpp b/core/jni/android_media_AudioVolumeGroupCallback.cpp
index cb4ddbd119d5..d130a4bc68fa 100644
--- a/core/jni/android_media_AudioVolumeGroupCallback.cpp
+++ b/core/jni/android_media_AudioVolumeGroupCallback.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
//#define LOG_NDEBUG 0
diff --git a/core/jni/android_media_RemoteDisplay.cpp b/core/jni/android_media_RemoteDisplay.cpp
index 3b517f1eafe0..cf96f027bd5e 100644
--- a/core/jni/android_media_RemoteDisplay.cpp
+++ b/core/jni/android_media_RemoteDisplay.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "RemoteDisplay"
diff --git a/core/jni/android_media_ToneGenerator.cpp b/core/jni/android_media_ToneGenerator.cpp
index cc4657ded596..3c590c37adac 100644
--- a/core/jni/android_media_ToneGenerator.cpp
+++ b/core/jni/android_media_ToneGenerator.cpp
@@ -14,6 +14,7 @@
** See the License for the specific language governing permissions and
** limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "ToneGenerator"
#include <stdio.h>
diff --git a/core/jni/android_opengl_EGL14.cpp b/core/jni/android_opengl_EGL14.cpp
index 917d28348d04..7e9beefdc38c 100644
--- a/core/jni/android_opengl_EGL14.cpp
+++ b/core/jni/android_opengl_EGL14.cpp
@@ -632,7 +632,7 @@ not_valid_surface:
if (producer == NULL)
goto not_valid_surface;
- window = new android::Surface(producer, true);
+ window = android::sp<android::Surface>::make(producer, true);
if (window == NULL)
goto not_valid_surface;
diff --git a/core/jni/android_os_HwBinder.cpp b/core/jni/android_os_HwBinder.cpp
index 734b5f497e2e..8060e6232482 100644
--- a/core/jni/android_os_HwBinder.cpp
+++ b/core/jni/android_os_HwBinder.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
//#define LOG_NDEBUG 0
#define LOG_TAG "android_os_HwBinder"
diff --git a/core/jni/android_os_HwBlob.cpp b/core/jni/android_os_HwBlob.cpp
index e554b44233b5..df579af0acb4 100644
--- a/core/jni/android_os_HwBlob.cpp
+++ b/core/jni/android_os_HwBlob.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
//#define LOG_NDEBUG 0
#define LOG_TAG "android_os_HwBlob"
diff --git a/core/jni/android_os_HwParcel.cpp b/core/jni/android_os_HwParcel.cpp
index c7866524668f..727455c21e02 100644
--- a/core/jni/android_os_HwParcel.cpp
+++ b/core/jni/android_os_HwParcel.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
//#define LOG_NDEBUG 0
#define LOG_TAG "android_os_HwParcel"
diff --git a/core/jni/android_os_HwRemoteBinder.cpp b/core/jni/android_os_HwRemoteBinder.cpp
index d2d7213e5761..3b567092f6a6 100644
--- a/core/jni/android_os_HwRemoteBinder.cpp
+++ b/core/jni/android_os_HwRemoteBinder.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
//#define LOG_NDEBUG 0
#define LOG_TAG "JHwRemoteBinder"
diff --git a/core/jni/android_os_MessageQueue.cpp b/core/jni/android_os_MessageQueue.cpp
index 30d9ea19be39..d5d5521eb8c8 100644
--- a/core/jni/android_os_MessageQueue.cpp
+++ b/core/jni/android_os_MessageQueue.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "MessageQueue-JNI"
diff --git a/core/jni/android_tracing_PerfettoDataSource.cpp b/core/jni/android_tracing_PerfettoDataSource.cpp
index fec28987e7e6..ea896e1678a7 100644
--- a/core/jni/android_tracing_PerfettoDataSource.cpp
+++ b/core/jni/android_tracing_PerfettoDataSource.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "NativeJavaPerfettoDs"
@@ -489,4 +490,4 @@ int register_android_tracing_PerfettoDataSource(JNIEnv* env) {
return 0;
}
-} // namespace android \ No newline at end of file
+} // namespace android
diff --git a/core/jni/android_util_Binder.cpp b/core/jni/android_util_Binder.cpp
index 91b25c2bda06..1ca8e2023cb2 100644
--- a/core/jni/android_util_Binder.cpp
+++ b/core/jni/android_util_Binder.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "JavaBinder"
//#define LOG_NDEBUG 0
@@ -74,7 +75,6 @@ static struct bindernative_offsets_t
jmethodID mExecTransact;
jmethodID mGetInterfaceDescriptor;
jmethodID mTransactionCallback;
- jmethodID mGetExtension;
// Object state.
jfieldID mObject;
@@ -490,12 +490,8 @@ public:
if (mVintf) {
::android::internal::Stability::markVintf(b.get());
}
- if (mSetExtensionCalled) {
- jobject javaIBinderObject = env->CallObjectMethod(obj, gBinderOffsets.mGetExtension);
- sp<IBinder> extensionFromJava = ibinderForJavaObject(env, javaIBinderObject);
- if (extensionFromJava != nullptr) {
- b.get()->setExtension(extensionFromJava);
- }
+ if (mExtension != nullptr) {
+ b.get()->setExtension(mExtension);
}
mBinder = b;
ALOGV("Creating JavaBinder %p (refs %p) for Object %p, weakCount=%" PRId32 "\n",
@@ -521,12 +517,21 @@ public:
mVintf = false;
}
+ sp<IBinder> getExtension() {
+ AutoMutex _l(mLock);
+ sp<JavaBBinder> b = mBinder.promote();
+ if (b != nullptr) {
+ return b.get()->getExtension();
+ }
+ return mExtension;
+ }
+
void setExtension(const sp<IBinder>& extension) {
AutoMutex _l(mLock);
- mSetExtensionCalled = true;
+ mExtension = extension;
sp<JavaBBinder> b = mBinder.promote();
if (b != nullptr) {
- b.get()->setExtension(extension);
+ b.get()->setExtension(mExtension);
}
}
@@ -538,7 +543,8 @@ private:
// is too much binder state here, we can think about making JavaBBinder an
// sp here (avoid recreating it)
bool mVintf = false;
- bool mSetExtensionCalled = false;
+
+ sp<IBinder> mExtension;
};
// ----------------------------------------------------------------------------
@@ -1244,6 +1250,10 @@ static void android_os_Binder_blockUntilThreadAvailable(JNIEnv* env, jobject cla
return IPCThreadState::self()->blockUntilThreadAvailable();
}
+static jobject android_os_Binder_getExtension(JNIEnv* env, jobject obj) {
+ JavaBBinderHolder* jbh = (JavaBBinderHolder*) env->GetLongField(obj, gBinderOffsets.mObject);
+ return javaObjectForIBinder(env, jbh->getExtension());
+}
static void android_os_Binder_setExtension(JNIEnv* env, jobject obj, jobject extensionObject) {
JavaBBinderHolder* jbh = (JavaBBinderHolder*) env->GetLongField(obj, gBinderOffsets.mObject);
@@ -1286,7 +1296,8 @@ static const JNINativeMethod gBinderMethods[] = {
{ "getNativeBBinderHolder", "()J", (void*)android_os_Binder_getNativeBBinderHolder },
{ "getNativeFinalizer", "()J", (void*)android_os_Binder_getNativeFinalizer },
{ "blockUntilThreadAvailable", "()V", (void*)android_os_Binder_blockUntilThreadAvailable },
- { "setExtensionNative", "(Landroid/os/IBinder;)V", (void*)android_os_Binder_setExtension },
+ { "getExtension", "()Landroid/os/IBinder;", (void*)android_os_Binder_getExtension },
+ { "setExtension", "(Landroid/os/IBinder;)V", (void*)android_os_Binder_setExtension },
};
// clang-format on
@@ -1303,8 +1314,6 @@ static int int_register_android_os_Binder(JNIEnv* env)
gBinderOffsets.mTransactionCallback =
GetStaticMethodIDOrDie(env, clazz, "transactionCallback", "(IIII)V");
gBinderOffsets.mObject = GetFieldIDOrDie(env, clazz, "mObject", "J");
- gBinderOffsets.mGetExtension = GetMethodIDOrDie(env, clazz, "getExtension",
- "()Landroid/os/IBinder;");
return RegisterMethodsOrDie(
env, kBinderPathName,
diff --git a/core/jni/android_view_CompositionSamplingListener.cpp b/core/jni/android_view_CompositionSamplingListener.cpp
index 59c01dc37593..28616a063730 100644
--- a/core/jni/android_view_CompositionSamplingListener.cpp
+++ b/core/jni/android_view_CompositionSamplingListener.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "CompositionSamplingListener"
diff --git a/core/jni/android_view_DisplayEventReceiver.cpp b/core/jni/android_view_DisplayEventReceiver.cpp
index 7ff1f8c4a748..d8f1b626abf2 100644
--- a/core/jni/android_view_DisplayEventReceiver.cpp
+++ b/core/jni/android_view_DisplayEventReceiver.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "DisplayEventReceiver"
diff --git a/core/jni/android_view_InputEventReceiver.cpp b/core/jni/android_view_InputEventReceiver.cpp
index 6272fb1947c1..535bfd23d8c4 100644
--- a/core/jni/android_view_InputEventReceiver.cpp
+++ b/core/jni/android_view_InputEventReceiver.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "InputEventReceiver"
#define ATRACE_TAG ATRACE_TAG_INPUT
diff --git a/core/jni/android_view_InputEventSender.cpp b/core/jni/android_view_InputEventSender.cpp
index 88b02baab924..01309b795567 100644
--- a/core/jni/android_view_InputEventSender.cpp
+++ b/core/jni/android_view_InputEventSender.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "InputEventSender"
diff --git a/core/jni/android_view_InputQueue.cpp b/core/jni/android_view_InputQueue.cpp
index 50d2cbe2ce74..17165d8a03fe 100644
--- a/core/jni/android_view_InputQueue.cpp
+++ b/core/jni/android_view_InputQueue.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "InputQueue"
diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp
index ac6298d3d0b4..312c2067d396 100644
--- a/core/jni/android_view_Surface.cpp
+++ b/core/jni/android_view_Surface.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "Surface"
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index 6f69e4005b80..b99b0ef7f24e 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "SurfaceControl"
#define LOG_NDEBUG 0
@@ -1121,14 +1122,6 @@ static void nativeSetClientDrawnCornerRadius(JNIEnv* env, jclass clazz, jlong tr
transaction->setClientDrawnCornerRadius(ctrl, clientDrawnCornerRadius);
}
-static void nativeSetClientDrawnShadows(JNIEnv* env, jclass clazz, jlong transactionObj,
- jlong nativeObject, jfloat clientDrawnShadowRadius) {
- auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj);
-
- SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl*>(nativeObject);
- transaction->setClientDrawnShadowRadius(ctrl, clientDrawnShadowRadius);
-}
-
static void nativeSetBackgroundBlurRadius(JNIEnv* env, jclass clazz, jlong transactionObj,
jlong nativeObject, jint blurRadius) {
auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj);
@@ -2565,8 +2558,6 @@ static const JNINativeMethod sSurfaceControlMethods[] = {
(void*)nativeSetCornerRadius },
{"nativeSetClientDrawnCornerRadius", "(JJF)V",
(void*) nativeSetClientDrawnCornerRadius },
- {"nativeSetClientDrawnShadows", "(JJF)V",
- (void*) nativeSetClientDrawnShadows },
{"nativeSetBackgroundBlurRadius", "(JJI)V",
(void*)nativeSetBackgroundBlurRadius },
{"nativeSetLayerStack", "(JJI)V",
diff --git a/core/jni/android_view_SurfaceControlActivePictureListener.cpp b/core/jni/android_view_SurfaceControlActivePictureListener.cpp
index 15132db2a569..ee8efe19e15e 100644
--- a/core/jni/android_view_SurfaceControlActivePictureListener.cpp
+++ b/core/jni/android_view_SurfaceControlActivePictureListener.cpp
@@ -106,11 +106,13 @@ struct SurfaceControlActivePictureListener : public gui::BnActivePictureListener
}
status_t startListening() {
- return SurfaceComposerClient::addActivePictureListener(this);
+ return SurfaceComposerClient::addActivePictureListener(
+ sp<SurfaceControlActivePictureListener>::fromExisting(this));
}
status_t stopListening() {
- return SurfaceComposerClient::removeActivePictureListener(this);
+ return SurfaceComposerClient::removeActivePictureListener(
+ sp<SurfaceControlActivePictureListener>::fromExisting(this));
}
protected:
diff --git a/core/jni/android_view_SurfaceControlHdrLayerInfoListener.cpp b/core/jni/android_view_SurfaceControlHdrLayerInfoListener.cpp
index 443f99a78f02..09cb8116d04b 100644
--- a/core/jni/android_view_SurfaceControlHdrLayerInfoListener.cpp
+++ b/core/jni/android_view_SurfaceControlHdrLayerInfoListener.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "SurfaceControlHdrLayerInfoListener"
diff --git a/core/jni/android_view_SurfaceSession.cpp b/core/jni/android_view_SurfaceSession.cpp
index 0aac07d17cdc..6ad109e80752 100644
--- a/core/jni/android_view_SurfaceSession.cpp
+++ b/core/jni/android_view_SurfaceSession.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "SurfaceSession"
diff --git a/core/jni/android_view_TextureView.cpp b/core/jni/android_view_TextureView.cpp
index 391f515af115..21fe1f020b29 100644
--- a/core/jni/android_view_TextureView.cpp
+++ b/core/jni/android_view_TextureView.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#include "jni.h"
#include <nativehelper/JNIHelp.h>
diff --git a/core/jni/android_view_TunnelModeEnabledListener.cpp b/core/jni/android_view_TunnelModeEnabledListener.cpp
index d9ab9571cfbe..fd78a94fc2d9 100644
--- a/core/jni/android_view_TunnelModeEnabledListener.cpp
+++ b/core/jni/android_view_TunnelModeEnabledListener.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "TunnelModeEnabledListener"
diff --git a/core/jni/android_window_InputTransferToken.cpp b/core/jni/android_window_InputTransferToken.cpp
index 5bcea9b7c401..f92d128c7077 100644
--- a/core/jni/android_window_InputTransferToken.cpp
+++ b/core/jni/android_window_InputTransferToken.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "InputTransferToken"
@@ -137,4 +138,4 @@ int register_android_window_InputTransferToken(JNIEnv* env) {
return err;
}
-} // namespace android \ No newline at end of file
+} // namespace android
diff --git a/core/jni/android_window_ScreenCapture.cpp b/core/jni/android_window_ScreenCapture.cpp
index 5657fa146b5b..7b085b16d24b 100644
--- a/core/jni/android_window_ScreenCapture.cpp
+++ b/core/jni/android_window_ScreenCapture.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "ScreenCapture"
// #define LOG_NDEBUG 0
diff --git a/core/jni/android_window_WindowInfosListener.cpp b/core/jni/android_window_WindowInfosListener.cpp
index c39d5e20aa1c..30846ef99d60 100644
--- a/core/jni/android_window_WindowInfosListener.cpp
+++ b/core/jni/android_window_WindowInfosListener.cpp
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#define LOG_TAG "WindowInfosListener"
diff --git a/core/jni/com_android_internal_content_NativeLibraryHelper.cpp b/core/jni/com_android_internal_content_NativeLibraryHelper.cpp
index e78c5247d8a7..06fd80e37669 100644
--- a/core/jni/com_android_internal_content_NativeLibraryHelper.cpp
+++ b/core/jni/com_android_internal_content_NativeLibraryHelper.cpp
@@ -273,6 +273,7 @@ static install_status_t copyFileIfChanged(JNIEnv* env, void* arg, ZipFileRO* zip
jboolean extractNativeLibs = *(jboolean*)args[1];
jboolean debuggable = *(jboolean*)args[2];
jboolean app_compat_16kb = *(jboolean*)args[3];
+ jboolean pageSizeCompatDisabled = *(jboolean*)args[4];
install_status_t ret = INSTALL_SUCCEEDED;
ScopedUtfChars nativeLibPath(env, *javaNativeLibPath);
@@ -304,6 +305,16 @@ static install_status_t copyFileIfChanged(JNIEnv* env, void* arg, ZipFileRO* zip
}
if (offset % kPageSize != 0) {
+ // If page size app compat was disabled explicitly in manifest, don't extract libs on
+ // 16 KB page size device.
+ if (kPageSize == 0x4000 && pageSizeCompatDisabled) {
+ ALOGE("pageSizeCompat=disabled library '%s' is not PAGE(%zu)-"
+ "aligned within apk (APK alignment, not ELF alignment) -"
+ "and will not be extracted.\n",
+ fileName, kPageSize);
+ return INSTALL_FAILED_INVALID_APK;
+ }
+
// If the library is zip-aligned correctly for 4kb devices and app compat is
// enabled, on 16kb devices fallback to extraction
if (offset % 0x1000 == 0 && app_compat_16kb) {
@@ -537,13 +548,12 @@ static inline bool app_compat_16kb_enabled() {
return !android::base::GetBoolProperty("pm.16kb.app_compat.disabled", false);
}
-static jint
-com_android_internal_content_NativeLibraryHelper_copyNativeBinaries(JNIEnv *env, jclass clazz,
- jlong apkHandle, jstring javaNativeLibPath, jstring javaCpuAbi,
- jboolean extractNativeLibs, jboolean debuggable)
-{
+static jint com_android_internal_content_NativeLibraryHelper_copyNativeBinaries(
+ JNIEnv* env, jclass clazz, jlong apkHandle, jstring javaNativeLibPath, jstring javaCpuAbi,
+ jboolean extractNativeLibs, jboolean debuggable, jboolean pageSizeCompatDisabled) {
jboolean app_compat_16kb = app_compat_16kb_enabled();
- void* args[] = { &javaNativeLibPath, &extractNativeLibs, &debuggable, &app_compat_16kb };
+ void* args[] = {&javaNativeLibPath, &extractNativeLibs, &debuggable, &app_compat_16kb,
+ &pageSizeCompatDisabled};
return (jint) iterateOverNativeFiles(env, apkHandle, javaCpuAbi,
copyFileIfChanged, reinterpret_cast<void*>(args));
}
@@ -804,7 +814,7 @@ static const JNINativeMethod gMethods[] = {
{"nativeOpenApkFd", "(Ljava/io/FileDescriptor;Ljava/lang/String;)J",
(void*)com_android_internal_content_NativeLibraryHelper_openApkFd},
{"nativeClose", "(J)V", (void*)com_android_internal_content_NativeLibraryHelper_close},
- {"nativeCopyNativeBinaries", "(JLjava/lang/String;Ljava/lang/String;ZZ)I",
+ {"nativeCopyNativeBinaries", "(JLjava/lang/String;Ljava/lang/String;ZZZ)I",
(void*)com_android_internal_content_NativeLibraryHelper_copyNativeBinaries},
{"nativeSumNativeBinaries", "(JLjava/lang/String;)J",
(void*)com_android_internal_content_NativeLibraryHelper_sumNativeBinaries},
diff --git a/core/jni/com_google_android_gles_jni_EGLImpl.cpp b/core/jni/com_google_android_gles_jni_EGLImpl.cpp
index 5aea8485d0c1..75330be2624d 100644
--- a/core/jni/com_google_android_gles_jni_EGLImpl.cpp
+++ b/core/jni/com_google_android_gles_jni_EGLImpl.cpp
@@ -14,6 +14,7 @@
** See the License for the specific language governing permissions and
** limitations under the License.
*/
+#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code
#include <nativehelper/JNIHelp.h>
#include <android_runtime/AndroidRuntime.h>
diff --git a/core/proto/android/server/windowmanagerservice.proto b/core/proto/android/server/windowmanagerservice.proto
index 407790c89202..a673ad7dfb34 100644
--- a/core/proto/android/server/windowmanagerservice.proto
+++ b/core/proto/android/server/windowmanagerservice.proto
@@ -399,6 +399,7 @@ message ActivityRecordProto {
optional bool should_override_force_resize_app = 44;
optional bool should_enable_user_aspect_ratio_settings = 45;
optional bool is_user_fullscreen_override_enabled = 46;
+ optional int64 request_open_in_browser_education_timestamp = 47;
}
/* represents WindowToken */
diff --git a/core/proto/android/widget/remoteviews.proto b/core/proto/android/widget/remoteviews.proto
index 6a987a475711..91dbf7b54534 100644
--- a/core/proto/android/widget/remoteviews.proto
+++ b/core/proto/android/widget/remoteviews.proto
@@ -57,6 +57,7 @@ message RemoteViewsProto {
repeated bytes bitmap_cache = 14;
optional RemoteCollectionCache remote_collection_cache = 15;
repeated Action actions = 16;
+ optional int32 uid = 17;
message RemoteCollectionCache {
message Entry {
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index aad8f8a156b5..c9f4cdc8e3ce 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -8308,26 +8308,9 @@
android:featureFlag="android.app.appfunctions.flags.enable_app_function_manager"
android:protectionLevel="signature" />
- <!-- Allows a trusted application to perform actions on behalf of users inside of
- applications with privacy guarantees from the system.
- <p>This permission is currently only granted to system packages in the
- {@link android.app.role.SYSTEM_UI_INTELLIGENCE} role which complies with privacy
- requirements outlined in the Android CDD section "9.8.6 Content Capture".
- <p>Apps are not able to opt-out from caller having this permission.
- <p>Protection level: internal|role
- @SystemApi
- @hide
- @FlaggedApi(android.app.appfunctions.flags.Flags.FLAG_ENABLE_APP_FUNCTION_MANAGER) -->
- <permission android:name="android.permission.EXECUTE_APP_FUNCTIONS_TRUSTED"
- android:featureFlag="android.app.appfunctions.flags.enable_app_function_manager"
- android:protectionLevel="internal|role" />
-
<!-- Allows an application to perform actions on behalf of users inside of
applications.
<p>This permission is currently only granted to privileged system apps.
- <p>Apps contributing app functions can opt to disallow callers with this permission,
- limiting to only callers with {@link android.permission.EXECUTE_APP_FUNCTIONS_TRUSTED}
- instead.
<p>Protection level: internal|privileged
@FlaggedApi(android.app.appfunctions.flags.Flags.FLAG_ENABLE_APP_FUNCTION_MANAGER) -->
<permission android:name="android.permission.EXECUTE_APP_FUNCTIONS"
@@ -8463,6 +8446,14 @@
android:protectionLevel="signature"
android:featureFlag="com.android.hardware.input.manage_key_gestures" />
+ <!-- Allows applications to register listeners for key activeness through
+ InputManagerService.
+ <p>Protection level: signature
+ @hide -->
+ <permission android:name="android.permission.LISTEN_FOR_KEY_ACTIVITY"
+ android:protectionLevel="signature"
+ android:featureFlag="com.android.hardware.input.key_event_activity_detection" />
+
<uses-permission android:name="android.permission.HANDLE_QUERY_PACKAGE_RESTART" />
<!-- Allows financed device kiosk apps to perform actions on the Device Lock service
@@ -9256,7 +9247,7 @@
android:permission="android.permission.BIND_JOB_SERVICE" >
</service>
- <service android:name="com.android.server.ZramMaintenance"
+ <service android:name="com.android.server.memory.ZramMaintenance"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE" >
</service>
diff --git a/core/res/res/drawable-watch/toast_frame.xml b/core/res/res/drawable-watch/toast_frame.xml
index 60129a2086fd..b30a101d3845 100644
--- a/core/res/res/drawable-watch/toast_frame.xml
+++ b/core/res/res/drawable-watch/toast_frame.xml
@@ -17,8 +17,8 @@
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
- <!-- background is material_grey_700 with .9 alpha -->
- <solid android:color="#E65F6368" />
+ <!-- background is material_white with .9 alpha -->
+ <solid android:color="@color/tooltip_background_light" />
<corners android:radius="24dp" />
</shape>
diff --git a/core/res/res/drawable/accessibility_autoclick_button_group_rounded_background.xml b/core/res/res/drawable/accessibility_autoclick_button_group_rounded_background.xml
new file mode 100644
index 000000000000..87f7cdd61f16
--- /dev/null
+++ b/core/res/res/drawable/accessibility_autoclick_button_group_rounded_background.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2025 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="@color/materialColorSurfaceContainer" />
+ <corners android:radius="30dp" />
+</shape>
diff --git a/core/res/res/drawable/accessibility_autoclick_button_rounded_background.xml b/core/res/res/drawable/accessibility_autoclick_button_rounded_background.xml
new file mode 100644
index 000000000000..6d0c2653e5f2
--- /dev/null
+++ b/core/res/res/drawable/accessibility_autoclick_button_rounded_background.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2025 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="@color/materialColorSurfaceContainer" />
+ <corners android:radius="24dp" />
+</shape>
diff --git a/core/res/res/drawable/accessibility_autoclick_double_click.xml b/core/res/res/drawable/accessibility_autoclick_double_click.xml
new file mode 100644
index 000000000000..ea28bc28dbe1
--- /dev/null
+++ b/core/res/res/drawable/accessibility_autoclick_double_click.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2025 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="20dp"
+ android:height="20dp"
+ android:viewportWidth="20"
+ android:viewportHeight="20">
+ <path
+ android:pathData="M9.7 16C8.1 15.9167 6.75 15.3 5.65 14.15C4.55 13 4 11.6167 4 10C4 8.33333 4.58333 6.91667 5.75 5.75C6.91667 4.58333 8.33333 4 10 4C11.6167 4 13 4.55 14.15 5.65C15.3 6.75 15.9167 8.1 16 9.7L13.9 9.075C13.6833 8.175 13.2167 7.44167 12.5 6.875C11.7833 6.29167 10.95 6 10 6C8.9 6 7.95833 6.39167 7.175 7.175C6.39167 7.95833 6 8.9 6 10C6 10.95 6.28333 11.7833 6.85 12.5C7.43333 13.2167 8.175 13.6833 9.075 13.9L9.7 16ZM10.9 19.95C10.75 19.9833 10.6 20 10.45 20C10.3 20 10.15 20 10 20C8.61667 20 7.31667 19.7417 6.1 19.225C4.88333 18.6917 3.825 17.975 2.925 17.075C2.025 16.175 1.30833 15.1167 0.775 13.9C0.258333 12.6833 0.0000000596046 11.3833 0.0000000596046 10C0.0000000596046 8.61667 0.258333 7.31667 0.775 6.1C1.30833 4.88333 2.025 3.825 2.925 2.925C3.825 2.025 4.88333 1.31667 6.1 0.799999C7.31667 0.266666 8.61667 -0.000000476837 10 -0.000000476837C11.3833 -0.000000476837 12.6833 0.266666 13.9 0.799999C15.1167 1.31667 16.175 2.025 17.075 2.925C17.975 3.825 18.6833 4.88333 19.2 6.1C19.7333 7.31667 20 8.61667 20 10C20 10.15 20 10.3 20 10.45C20 10.6 19.9833 10.75 19.95 10.9L18 10.3V10C18 7.76667 17.225 5.875 15.675 4.325C14.125 2.775 12.2333 2 10 2C7.76667 2 5.875 2.775 4.325 4.325C2.775 5.875 2 7.76667 2 10C2 12.2333 2.775 14.125 4.325 15.675C5.875 17.225 7.76667 18 10 18C10.05 18 10.1 18 10.15 18C10.2 18 10.25 18 10.3 18L10.9 19.95ZM18.525 20.5L14.25 16.225L13 20L10 10L20 13L16.225 14.25L20.5 18.525L18.525 20.5Z"
+ android:fillColor="@color/materialColorPrimary" />
+</vector>
diff --git a/core/res/res/drawable/accessibility_autoclick_drag.xml b/core/res/res/drawable/accessibility_autoclick_drag.xml
new file mode 100644
index 000000000000..02d90bc83b5f
--- /dev/null
+++ b/core/res/res/drawable/accessibility_autoclick_drag.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2025 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="20dp"
+ android:height="20dp"
+ android:viewportWidth="20"
+ android:viewportHeight="20">
+ <path
+ android:pathData="M10 20L5.75 15.75L7.175 14.325L9 16.15V11H3.875L5.7 12.8L4.25 14.25L0.0000000596046 10L4.225 5.775L5.65 7.2L3.85 9H9V3.85L7.175 5.675L5.75 4.25L10 -0.000000476837L14.25 4.25L12.825 5.675L11 3.85V9H16.125L14.3 7.2L15.75 5.75L20 10L15.75 14.25L14.325 12.825L16.15 11H11V16.125L12.8 14.3L14.25 15.75L10 20Z"
+ android:fillColor="@color/materialColorPrimary" />
+</vector>
diff --git a/core/res/res/drawable/accessibility_autoclick_left_click.xml b/core/res/res/drawable/accessibility_autoclick_left_click.xml
new file mode 100644
index 000000000000..64c8efbe24b3
--- /dev/null
+++ b/core/res/res/drawable/accessibility_autoclick_left_click.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2025 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="18dp"
+ android:height="18dp"
+ android:viewportWidth="18"
+ android:viewportHeight="18">
+ <path
+ android:pathData="M5.7 12C4.1 11.9167 2.75 11.3 1.65 10.15C0.55 9 0 7.61667 0 6C0 4.33333 0.583333 2.91667 1.75 1.75C2.91667 0.583332 4.33333 -0.00000143051 6 -0.00000143051C7.61667 -0.00000143051 9 0.549999 10.15 1.65C11.3 2.75 11.9167 4.1 12 5.7L9.9 5.075C9.68333 4.175 9.21667 3.44167 8.5 2.875C7.78333 2.29167 6.95 2 6 2C4.9 2 3.95833 2.39167 3.175 3.175C2.39167 3.95833 2 4.9 2 6C2 6.95 2.28333 7.78333 2.85 8.5C3.43333 9.21667 4.175 9.68333 5.075 9.9L5.7 12ZM14.525 16.5L10.25 12.225L9 16L6 6L16 9L12.225 10.25L16.5 14.525L14.525 16.5Z"
+ android:fillColor="@color/materialColorPrimary" />
+</vector>
diff --git a/core/res/res/drawable/accessibility_autoclick_pause.xml b/core/res/res/drawable/accessibility_autoclick_pause.xml
new file mode 100644
index 000000000000..5251b2afed0d
--- /dev/null
+++ b/core/res/res/drawable/accessibility_autoclick_pause.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2025 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="@color/materialColorPrimary"
+ android:pathData="M6,19h4V5H6v14zm8,-14v14h4V5h-4z" />
+</vector>
diff --git a/core/res/res/drawable/accessibility_autoclick_position.xml b/core/res/res/drawable/accessibility_autoclick_position.xml
new file mode 100644
index 000000000000..8c98235e7d99
--- /dev/null
+++ b/core/res/res/drawable/accessibility_autoclick_position.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2025 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="21dp"
+ android:height="17dp"
+ android:viewportWidth="21"
+ android:viewportHeight="17">
+ <path
+ android:pathData="M0.400024 2.99961C0.400024 1.67413 1.47454 0.599609 2.80002 0.599609H17.2C18.5255 0.599609 19.6 1.67413 19.6 2.99961V14.9996C19.6 16.3251 18.5255 17.3996 17.2 17.3996H2.80002C1.47454 17.3996 0.400024 16.3251 0.400024 14.9996V2.99961ZM2.80002 2.99961H17.2V14.9996H2.80002V2.99961ZM10.6 10.1996C9.60591 10.1996 8.80002 11.0055 8.80002 11.9996C8.80002 12.9937 9.60591 13.7996 10.6 13.7996H14.2C15.1941 13.7996 16 12.9937 16 11.9996C16 11.0055 15.1941 10.1996 14.2 10.1996H10.6Z"
+ android:fillType="evenOdd"
+ android:fillColor="@color/materialColorPrimary" />
+</vector>
diff --git a/core/res/res/drawable/accessibility_autoclick_right_click.xml b/core/res/res/drawable/accessibility_autoclick_right_click.xml
new file mode 100644
index 000000000000..a5e296614501
--- /dev/null
+++ b/core/res/res/drawable/accessibility_autoclick_right_click.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2025 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="18dp"
+ android:height="18dp"
+ android:viewportWidth="18"
+ android:viewportHeight="18">
+ <path
+ android:pathData="M11.3 12L11.925 9.9C12.825 9.68333 13.5583 9.21667 14.125 8.5C14.7083 7.78333 15 6.95 15 6C15 4.9 14.6083 3.95833 13.825 3.175C13.0417 2.39167 12.1 2 11 2C10.05 2 9.21667 2.29167 8.5 2.875C7.78333 3.44167 7.31667 4.175 7.1 5.075L5 5.7C5.08333 4.1 5.7 2.75 6.85 1.65C8 0.549999 9.38333 -0.00000143051 11 -0.00000143051C12.6667 -0.00000143051 14.0833 0.583332 15.25 1.75C16.4167 2.91667 17 4.33333 17 6C17 7.61667 16.45 9 15.35 10.15C14.25 11.3 12.9 11.9167 11.3 12ZM2.475 16.5L0.5 14.525L4.775 10.25L1 9L11 6L8 16L6.75 12.225L2.475 16.5Z"
+ android:fillColor="@color/materialColorPrimary" />
+</vector>
diff --git a/core/res/res/drawable/accessibility_autoclick_scroll.xml b/core/res/res/drawable/accessibility_autoclick_scroll.xml
new file mode 100644
index 000000000000..8b6da25be2ff
--- /dev/null
+++ b/core/res/res/drawable/accessibility_autoclick_scroll.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2025 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="12dp"
+ android:height="20dp"
+ android:viewportWidth="12"
+ android:viewportHeight="20">
+ <path
+ android:pathData="M10 15L5 20L-0.000000953674 15L1.4 13.6L4 16.175L4 3.825L1.4 6.4L-0.000000953674 5L5 -0.000000476837L10 5L8.6 6.4L6 3.825L6 16.175L8.6 13.6L10 15Z"
+ android:fillColor="@color/materialColorPrimary" />
+</vector>
diff --git a/core/res/res/drawable/accessibility_autoclick_type_panel_rounded_background.xml b/core/res/res/drawable/accessibility_autoclick_type_panel_rounded_background.xml
new file mode 100644
index 000000000000..e367ba55ae7d
--- /dev/null
+++ b/core/res/res/drawable/accessibility_autoclick_type_panel_rounded_background.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2025 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="@color/materialColorSurface" />
+ <corners android:radius="40dp" />
+</shape>
diff --git a/core/res/res/drawable/ic_notification_summarization.xml b/core/res/res/drawable/ic_notification_summarization.xml
new file mode 100644
index 000000000000..de905fa10728
--- /dev/null
+++ b/core/res/res/drawable/ic_notification_summarization.xml
@@ -0,0 +1,23 @@
+<!--
+Copyright (C) 2025 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="16dp"
+ android:height="16dp"
+ android:tint="?android:attr/colorControlNormal"
+ android:viewportHeight="960"
+ android:viewportWidth="960">
+ <path android:fillColor="#ffffff" android:pathData="M354,673L480,597L606,674L573,530L684,434L538,421L480,285L422,420L276,433L387,530L354,673ZM233,840L298,559L80,370L368,345L480,80L592,345L880,370L662,559L727,840L480,691L233,840ZM480,490L480,490L480,490L480,490L480,490L480,490L480,490L480,490L480,490L480,490Z"/>
+</vector> \ No newline at end of file
diff --git a/core/res/res/layout/accessibility_autoclick_type_panel.xml b/core/res/res/layout/accessibility_autoclick_type_panel.xml
new file mode 100644
index 000000000000..cedbdc175488
--- /dev/null
+++ b/core/res/res/layout/accessibility_autoclick_type_panel.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2025, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/accessibility_autoclick_type_panel"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:background="@drawable/accessibility_autoclick_type_panel_rounded_background"
+ android:orientation="vertical"
+ android:padding="16dp">
+
+ <LinearLayout
+ android:id="@+id/accessibility_autoclick_button_group_container"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:orientation="horizontal">
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:background="@drawable/accessibility_autoclick_button_group_rounded_background"
+ android:orientation="horizontal"
+ android:padding="3dp">
+
+ <LinearLayout
+ android:id="@+id/accessibility_autoclick_drag_layout"
+ style="@style/AccessibilityAutoclickPanelButtonLayoutStyle">
+
+ <ImageButton
+ android:id="@+id/accessibility_autoclick_drag_button"
+ style="@style/AccessibilityAutoclickPanelImageButtonStyle"
+ android:contentDescription="@string/accessibility_autoclick_drag"
+ android:src="@drawable/accessibility_autoclick_drag" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/accessibility_autoclick_double_click_layout"
+ style="@style/AccessibilityAutoclickPanelButtonLayoutStyle">
+
+ <ImageButton
+ android:id="@+id/accessibility_autoclick_double_click_button"
+ style="@style/AccessibilityAutoclickPanelImageButtonStyle"
+ android:contentDescription="@string/accessibility_autoclick_double_click"
+ android:src="@drawable/accessibility_autoclick_double_click" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/accessibility_autoclick_right_click_layout"
+ style="@style/AccessibilityAutoclickPanelButtonLayoutStyle">
+
+ <ImageButton
+ android:id="@+id/accessibility_autoclick_right_click_button"
+ style="@style/AccessibilityAutoclickPanelImageButtonStyle"
+ android:contentDescription="@string/accessibility_autoclick_right_click"
+ android:src="@drawable/accessibility_autoclick_right_click" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/accessibility_autoclick_scroll_layout"
+ style="@style/AccessibilityAutoclickPanelButtonLayoutStyle">
+
+ <ImageButton
+ android:id="@+id/accessibility_autoclick_scroll_button"
+ style="@style/AccessibilityAutoclickPanelImageButtonStyle"
+ android:contentDescription="@string/accessibility_autoclick_scroll"
+ android:src="@drawable/accessibility_autoclick_scroll" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/accessibility_autoclick_left_click_layout"
+ style="@style/AccessibilityAutoclickPanelButtonLayoutStyle">
+
+ <ImageButton
+ android:id="@+id/accessibility_autoclick_left_click_button"
+ style="@style/AccessibilityAutoclickPanelImageButtonStyle"
+ android:contentDescription="@string/accessibility_autoclick_left_click"
+ android:src="@drawable/accessibility_autoclick_left_click" />
+ </LinearLayout>
+
+ </LinearLayout>
+
+ <View
+ android:layout_width="@dimen/accessibility_autoclick_type_panel_divider_width"
+ android:layout_height="@dimen/accessibility_autoclick_type_panel_divider_height"
+ android:layout_marginStart="@dimen/accessibility_autoclick_type_panel_button_spacing"
+ android:layout_marginEnd="@dimen/accessibility_autoclick_type_panel_button_spacing"
+ android:background="@color/materialColorSurfaceContainer" />
+
+ <LinearLayout
+ android:id="@+id/accessibility_autoclick_pause_layout"
+ style="@style/AccessibilityAutoclickPanelButtonLayoutStyle"
+ android:layout_marginEnd="@dimen/accessibility_autoclick_type_panel_button_spacing">
+
+ <ImageButton
+ android:id="@+id/accessibility_autoclick_pause_button"
+ style="@style/AccessibilityAutoclickPanelImageButtonStyle"
+ android:contentDescription="@string/accessibility_autoclick_pause"
+ android:src="@drawable/accessibility_autoclick_pause" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/accessibility_autoclick_position_layout"
+ style="@style/AccessibilityAutoclickPanelButtonLayoutStyle">
+
+ <ImageButton
+ android:id="@+id/accessibility_autoclick_position_button"
+ style="@style/AccessibilityAutoclickPanelImageButtonStyle"
+ android:contentDescription="@string/accessibility_autoclick_position"
+ android:src="@drawable/accessibility_autoclick_position" />
+ </LinearLayout>
+
+ </LinearLayout>
+
+</LinearLayout>
diff --git a/core/res/res/layout/alert_dialog_watch.xml b/core/res/res/layout/alert_dialog_watch.xml
index cb81fc5976a0..c78f83949dfe 100644
--- a/core/res/res/layout/alert_dialog_watch.xml
+++ b/core/res/res/layout/alert_dialog_watch.xml
@@ -103,7 +103,7 @@
<!-- Positive Button -->
<Button
android:id="@+id/button1"
- style="@*android:style/Widget.DeviceDefault.Button.Filled"
+ style="@*android:style/Widget.Material3.Button.Filled"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
@@ -111,7 +111,7 @@
<!--Neutral Button -->
<Button
android:id="@+id/button3"
- style="@*android:style/Widget.DeviceDefault.Button.WearMaterial3"
+ style="@*android:style/Widget.Material3.Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
@@ -119,7 +119,7 @@
<!-- Negative Button -->
<Button
android:id="@+id/button2"
- style="@*android:style/Widget.DeviceDefault.Button.WearMaterial3"
+ style="@*android:style/Widget.Material3.Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
diff --git a/core/res/res/layout/chooser_row.xml b/core/res/res/layout/chooser_row.xml
index f5814c3251f6..8463bf4e07e5 100644
--- a/core/res/res/layout/chooser_row.xml
+++ b/core/res/res/layout/chooser_row.xml
@@ -17,6 +17,7 @@
*/
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/chooser_row"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="100dp"
diff --git a/core/res/res/layout/chooser_row_direct_share.xml b/core/res/res/layout/chooser_row_direct_share.xml
index d7e36eedfe92..53e666a629bb 100644
--- a/core/res/res/layout/chooser_row_direct_share.xml
+++ b/core/res/res/layout/chooser_row_direct_share.xml
@@ -17,6 +17,7 @@
*/
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/shortcuts_container"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="200dp">
diff --git a/core/res/res/layout/notification_2025_conversation_header.xml b/core/res/res/layout/notification_2025_conversation_header.xml
index 1bde17358825..75bd244cbbf4 100644
--- a/core/res/res/layout/notification_2025_conversation_header.xml
+++ b/core/res/res/layout/notification_2025_conversation_header.xml
@@ -29,7 +29,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.DeviceDefault.Notification.Title"
- android:textSize="16sp"
+ android:textSize="@dimen/notification_2025_title_text_size"
android:singleLine="true"
android:layout_weight="1"
/>
diff --git a/core/res/res/layout/notification_2025_reply_container.xml b/core/res/res/layout/notification_2025_reply_history_container.xml
index 6923b59f34dc..6923b59f34dc 100644
--- a/core/res/res/layout/notification_2025_reply_container.xml
+++ b/core/res/res/layout/notification_2025_reply_history_container.xml
diff --git a/core/res/res/layout/notification_2025_template_collapsed_base.xml b/core/res/res/layout/notification_2025_template_collapsed_base.xml
index d29b7af9e24e..054583297d37 100644
--- a/core/res/res/layout/notification_2025_template_collapsed_base.xml
+++ b/core/res/res/layout/notification_2025_template_collapsed_base.xml
@@ -102,6 +102,7 @@
android:singleLine="true"
android:textAlignment="viewStart"
android:textAppearance="@style/TextAppearance.DeviceDefault.Notification.Title"
+ android:textSize="@dimen/notification_2025_title_text_size"
/>
<include layout="@layout/notification_2025_top_line_views" />
diff --git a/core/res/res/layout/notification_2025_template_collapsed_media.xml b/core/res/res/layout/notification_2025_template_collapsed_media.xml
index 5beab508aecf..9959b666b3bf 100644
--- a/core/res/res/layout/notification_2025_template_collapsed_media.xml
+++ b/core/res/res/layout/notification_2025_template_collapsed_media.xml
@@ -104,6 +104,7 @@
android:singleLine="true"
android:textAlignment="viewStart"
android:textAppearance="@style/TextAppearance.DeviceDefault.Notification.Title"
+ android:textSize="@dimen/notification_2025_title_text_size"
/>
<include layout="@layout/notification_2025_top_line_views" />
diff --git a/core/res/res/layout/notification_2025_template_collapsed_messaging.xml b/core/res/res/layout/notification_2025_template_collapsed_messaging.xml
index d7c3263904d4..85ca124de8ff 100644
--- a/core/res/res/layout/notification_2025_template_collapsed_messaging.xml
+++ b/core/res/res/layout/notification_2025_template_collapsed_messaging.xml
@@ -130,6 +130,7 @@
android:singleLine="true"
android:textAlignment="viewStart"
android:textAppearance="@style/TextAppearance.DeviceDefault.Notification.Title"
+ android:textSize="@dimen/notification_2025_title_text_size"
/>
<include layout="@layout/notification_2025_top_line_views" />
diff --git a/core/res/res/layout/notification_2025_template_compact_heads_up_base.xml b/core/res/res/layout/notification_2025_template_compact_heads_up_base.xml
new file mode 100644
index 000000000000..11fc48668ad7
--- /dev/null
+++ b/core/res/res/layout/notification_2025_template_compact_heads_up_base.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ ~ Copyright (C) 2025 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+
+<FrameLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/status_bar_latest_event_content"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/notification_header_height"
+ android:clipChildren="false"
+ android:tag="compactHUN"
+ android:gravity="center_vertical"
+ android:theme="@style/Theme.DeviceDefault.Notification"
+ android:importantForAccessibility="no">
+ <com.android.internal.widget.NotificationRowIconView
+ android:id="@+id/icon"
+ android:layout_width="@dimen/notification_icon_circle_size"
+ android:layout_height="@dimen/notification_icon_circle_size"
+ android:layout_gravity="center_vertical|start"
+ android:layout_marginStart="@dimen/notification_icon_circle_start"
+ android:background="@drawable/notification_icon_circle"
+ android:padding="@dimen/notification_icon_circle_padding"
+ android:maxDrawableWidth="@dimen/notification_icon_circle_size"
+ android:maxDrawableHeight="@dimen/notification_icon_circle_size"
+ />
+ <FrameLayout
+ android:id="@+id/alternate_expand_target"
+ android:layout_width="@dimen/notification_content_margin_start"
+ android:layout_height="match_parent"
+ android:layout_gravity="start"
+ android:importantForAccessibility="no"
+ android:focusable="false"
+ />
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginStart="@dimen/notification_content_margin_start"
+ android:orientation="horizontal"
+ >
+ <NotificationTopLineView
+ android:id="@+id/notification_top_line"
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_centerVertical="true"
+ android:layout_weight="1"
+ android:clipChildren="false"
+ android:gravity="center_vertical"
+ android:theme="@style/Theme.DeviceDefault.Notification"
+ >
+ <TextView
+ android:id="@+id/title"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginEnd="@dimen/notification_header_separating_margin"
+ android:ellipsize="end"
+ android:fadingEdge="horizontal"
+ android:singleLine="true"
+ android:textAlignment="viewStart"
+ android:textAppearance="@style/TextAppearance.DeviceDefault.Notification.Title"
+ android:textSize="@dimen/notification_2025_title_text_size"
+ />
+ <include layout="@layout/notification_2025_top_line_views" />
+ </NotificationTopLineView>
+ <FrameLayout
+ android:id="@+id/expand_button_touch_container"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:minWidth="@dimen/notification_content_margin_end"
+ >
+ <include layout="@layout/notification_2025_expand_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical|end"
+ />
+ </FrameLayout>
+ </LinearLayout>
+</FrameLayout>
diff --git a/core/res/res/layout/notification_2025_template_compact_heads_up_messaging.xml b/core/res/res/layout/notification_2025_template_compact_heads_up_messaging.xml
new file mode 100644
index 000000000000..bf70a5eff47e
--- /dev/null
+++ b/core/res/res/layout/notification_2025_template_compact_heads_up_messaging.xml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ ~ Copyright (C) 2025 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+
+<com.android.internal.widget.CompactMessagingLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/status_bar_latest_event_content"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/notification_header_height"
+ android:clipChildren="false"
+ android:tag="compactMessagingHUN"
+ android:gravity="center_vertical"
+ android:theme="@style/Theme.DeviceDefault.Notification"
+ android:importantForAccessibility="no">
+ <com.android.internal.widget.NotificationRowIconView
+ android:id="@+id/icon"
+ android:layout_width="@dimen/notification_icon_circle_size"
+ android:layout_height="@dimen/notification_icon_circle_size"
+ android:layout_gravity="center_vertical|start"
+ android:layout_marginStart="@dimen/notification_icon_circle_start"
+ android:background="@drawable/notification_icon_circle"
+ android:padding="@dimen/notification_icon_circle_padding"
+ android:maxDrawableWidth="@dimen/notification_icon_circle_size"
+ android:maxDrawableHeight="@dimen/notification_icon_circle_size"
+ />
+ <com.android.internal.widget.CachingIconView
+ android:id="@+id/conversation_icon"
+ android:layout_width="@dimen/notification_icon_circle_size"
+ android:layout_height="@dimen/notification_icon_circle_size"
+ android:layout_gravity="center_vertical|start"
+ android:layout_marginStart="@dimen/notification_icon_circle_start"
+ android:background="@drawable/notification_icon_circle"
+ android:clipToOutline="true"
+ android:maxDrawableWidth="@dimen/notification_icon_circle_size"
+ android:maxDrawableHeight="@dimen/notification_icon_circle_size"
+ android:scaleType="centerCrop"
+ android:importantForAccessibility="no"
+ />
+ <ViewStub
+ android:layout="@layout/notification_2025_conversation_face_pile_layout"
+ android:layout_gravity="center_vertical|start"
+ android:layout_width="@dimen/conversation_compact_face_pile_size"
+ android:layout_height="@dimen/conversation_compact_face_pile_size"
+ android:layout_marginStart="@dimen/notification_icon_circle_start"
+ android:id="@+id/conversation_face_pile"
+ />
+ <FrameLayout
+ android:id="@+id/alternate_expand_target"
+ android:layout_width="@dimen/notification_content_margin_start"
+ android:layout_height="match_parent"
+ android:layout_gravity="start"
+ android:importantForAccessibility="no"
+ android:focusable="false"
+ />
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginStart="@dimen/notification_content_margin_start"
+ android:orientation="horizontal"
+ >
+ <NotificationTopLineView
+ android:id="@+id/notification_top_line"
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_centerVertical="true"
+ android:layout_weight="1"
+ android:clipChildren="false"
+ android:gravity="center_vertical"
+ android:theme="@style/Theme.DeviceDefault.Notification"
+ >
+ <TextView
+ android:id="@+id/title"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginEnd="@dimen/notification_header_separating_margin"
+ android:ellipsize="end"
+ android:fadingEdge="horizontal"
+ android:singleLine="true"
+ android:textAlignment="viewStart"
+ android:textAppearance="@style/TextAppearance.DeviceDefault.Notification.Title"
+ android:textSize="@dimen/notification_2025_title_text_size"
+ />
+ <include layout="@layout/notification_2025_top_line_views" />
+ </NotificationTopLineView>
+ <FrameLayout
+ android:id="@+id/reply_action_container"
+ android:layout_width="wrap_content"
+ android:layout_height="@dimen/notification_action_list_height"
+ android:gravity="center_vertical"
+ android:orientation="horizontal" />
+ <FrameLayout
+ android:id="@+id/expand_button_touch_container"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:minWidth="@dimen/notification_content_margin_end"
+ >
+ <include layout="@layout/notification_2025_expand_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical|end"
+ />
+ </FrameLayout>
+ </LinearLayout>
+</com.android.internal.widget.CompactMessagingLayout>
diff --git a/core/res/res/layout/notification_2025_template_expanded_base.xml b/core/res/res/layout/notification_2025_template_expanded_base.xml
index d364c659d0db..e12db2783191 100644
--- a/core/res/res/layout/notification_2025_template_expanded_base.xml
+++ b/core/res/res/layout/notification_2025_template_expanded_base.xml
@@ -67,7 +67,7 @@
</FrameLayout>
<ViewStub
- android:layout="@layout/notification_2025_reply_container"
+ android:layout="@layout/notification_2025_reply_history_container"
android:id="@+id/notification_material_reply_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/core/res/res/layout/notification_2025_template_expanded_big_picture.xml b/core/res/res/layout/notification_2025_template_expanded_big_picture.xml
index 12e11728f608..fac9d1c47f41 100644
--- a/core/res/res/layout/notification_2025_template_expanded_big_picture.xml
+++ b/core/res/res/layout/notification_2025_template_expanded_big_picture.xml
@@ -74,8 +74,8 @@
/>
<ViewStub
- android:layout="@layout/notification_material_reply_text"
- android:id="@+id/notification_2025_reply_container"
+ android:layout="@layout/notification_2025_reply_history_container"
+ android:id="@+id/notification_material_reply_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
diff --git a/core/res/res/layout/notification_2025_template_expanded_big_text.xml b/core/res/res/layout/notification_2025_template_expanded_big_text.xml
index c9dd868795de..4a807cb674c6 100644
--- a/core/res/res/layout/notification_2025_template_expanded_big_text.xml
+++ b/core/res/res/layout/notification_2025_template_expanded_big_text.xml
@@ -73,8 +73,8 @@
</com.android.internal.widget.RemeasuringLinearLayout>
<ViewStub
- android:layout="@layout/notification_material_reply_text"
- android:id="@+id/notification_2025_reply_container"
+ android:layout="@layout/notification_2025_reply_history_container"
+ android:id="@+id/notification_material_reply_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
diff --git a/core/res/res/layout/notification_2025_template_expanded_inbox.xml b/core/res/res/layout/notification_2025_template_expanded_inbox.xml
index 8434b3644f81..ccab02e312cc 100644
--- a/core/res/res/layout/notification_2025_template_expanded_inbox.xml
+++ b/core/res/res/layout/notification_2025_template_expanded_inbox.xml
@@ -116,10 +116,12 @@
android:layout_weight="1"
/>
</LinearLayout>
- <ViewStub android:layout="@layout/notification_material_reply_text"
- android:id="@+id/notification_2025_reply_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content" />
+ <ViewStub
+ android:layout="@layout/notification_2025_reply_history_container"
+ android:id="@+id/notification_material_reply_container"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ />
<include layout="@layout/notification_template_smart_reply_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/core/res/res/layout/notification_2025_template_expanded_messaging.xml b/core/res/res/layout/notification_2025_template_expanded_messaging.xml
index 7f5a36b5f865..177706c6d58d 100644
--- a/core/res/res/layout/notification_2025_template_expanded_messaging.xml
+++ b/core/res/res/layout/notification_2025_template_expanded_messaging.xml
@@ -36,14 +36,13 @@
android:clipChildren="false"
android:orientation="vertical">
- <!-- Note: the top margin is being set in code based on the estimated space needed for
- the header text. -->
<com.android.internal.widget.RemeasuringLinearLayout
android:id="@+id/notification_main_column"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:layout_weight="1"
+ android:layout_marginTop="@dimen/notification_2025_header_height"
android:layout_marginEnd="@dimen/notification_content_margin_end"
android:orientation="vertical"
android:clipChildren="false"
diff --git a/core/res/res/layout/notification_2025_template_expanded_progress.xml b/core/res/res/layout/notification_2025_template_expanded_progress.xml
index 5d4fc4c87fac..87ded8975cb0 100644
--- a/core/res/res/layout/notification_2025_template_expanded_progress.xml
+++ b/core/res/res/layout/notification_2025_template_expanded_progress.xml
@@ -103,8 +103,8 @@
</FrameLayout>
<ViewStub
- android:layout="@layout/notification_material_reply_text"
- android:id="@+id/notification_2025_reply_container"
+ android:layout="@layout/notification_2025_reply_history_container"
+ android:id="@+id/notification_material_reply_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 1c7ce89dc0ad..368cf65ae67c 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Ontspeld"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Ontspeld <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Appinligting"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Begin tans demonstrasie …"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Stel toestel tans terug …"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"D-paneel links"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"D-paneel regs"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"D-paneel middel"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> is in die BEPERK-groep geplaas"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"het \'n prent gestuur"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Apps"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Jou vingerafdrukke kan nie meer herken word nie. Stel Vingerafdrukslot weer op."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 0f5fee4cf9da..1ab3beb71858 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"ንቀል"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> ንቀል"</string>
<string name="app_info" msgid="6113278084877079851">"የመተግበሪያ መረጃ"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"ማሳያን በማስጀመር ላይ…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"መሣሪያን ዳግም በማስጀመር ላይ…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"ከDpad በስተግራ"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"ከDpad በስተቀኝ"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"የDpad ማዕከል"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ወደ የRESTRICTED ባልዲ ተከትቷል"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>፦"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"አንድ ምስል ልከዋል"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"ካርታዎች"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"መተግበሪያዎች"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"ከእንግዲህ የጣት አሻራዎችዎ ሊለዩ አይችሉም። በጣት አሻራ መክፈቻን እንደገና ያዋቅሩ።"</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 68712916e1df..637b08daa171 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -1016,7 +1016,7 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"أعد المحاولة"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"فتح القفل للوصول إلى جميع الميزات والبيانات"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"تم تجاوز الحد الأقصى لعدد محاولات فتح الجهاز ببصمة الوجه"</string>
- <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"‏لا تتوفر شريحة SIM."</string>
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"‏لا تتوفر شريحة SIM"</string>
<string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"‏لا تتوفر شريحة SIM في الجهاز اللوحي."</string>
<string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"‏لا تتوفر شريحة SIM في جهاز Android TV."</string>
<string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"‏لا تتوفر شريحة SIM في الهاتف."</string>
@@ -2092,6 +2092,12 @@
<string name="unpin_target" msgid="3963318576590204447">"إزالة تثبيت"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"إزالة تثبيت <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"معلومات عن التطبيق"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"جارٍ بدء العرض التوضيحي…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"جارٍ إعادة ضبط الجهاز…"</string>
@@ -2246,6 +2252,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"زرّ الاتجاه لليسار"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"زرّ الاتجاه لليمين"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"الزرّ المركزي"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"لوحة إعدادات نوع النقر التلقائي"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"النقر بالزر الأيسر"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"إيقاف مؤقت"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"تعديل الموضع"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"تم وضع <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> في الحزمة \"محظورة\"."</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"هذا المستخدم أرسل صورة"</string>
@@ -2520,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"‏خرائط Google"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"التطبيقات"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"لم يعد بالإمكان التعرّف على بصمات أصابعك. يجب ضبط ميزة \"فتح الجهاز ببصمة الإصبع\" مجددًا."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index 48895bc41000..95d442bf43a4 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"আনপিন"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g>ক আনপিন কৰক"</string>
<string name="app_info" msgid="6113278084877079851">"এপ্ সম্পৰ্কীয় তথ্য"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"ডেম\' আৰম্ভ কৰি থকা হৈছে…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"ডিভাইচটো আকৌ ছেটিং কৰি থকা হৈছে…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"ডিপেডৰ বাওঁফালৰ বুটাম"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"ডিপেডৰ সোঁফালৰ বুটাম"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"ডিপেডৰ মাজৰ বুটাম"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>ক সীমাবদ্ধ বাকেটটোত ৰখা হৈছে"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"এখন প্ৰতিচ্ছবি পঠিয়াইছে"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"মেপ"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"এপ্লিকেশ্বন"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"আপোনাৰ ফিংগাৰপ্ৰিণ্ট আৰু চিনাক্ত কৰিব নোৱাৰি। ফিংগাৰপ্ৰিণ্ট আনলক পুনৰ ছেট আপ কৰক।"</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index 9084407b1c6d..4f7da4f74a71 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Çıxarın"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"İşarələməyin: <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Tətbiq haqqında"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Demo başlayır…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Cihaz sıfırlanır…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad Sola"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad Sağa"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad Mərkəzə"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> MƏHDUDLAŞDIRILMIŞ səbətinə yerləşdirilib"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"şəkil göndərdi"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Xəritə"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Tətbiqlər"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Barmaq izlərinizi artıq tanımaq mümkün deyil. Barmaqla Kilidaçmanı yenidən ayarlayın."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index 2abb7f4da9af..049359b85a1e 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -2089,6 +2089,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Otkači"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Otkači aplikaciju <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Informacije o aplikaciji"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Pokrećemo demonstraciju..."</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Resetujemo uređaj..."</string>
@@ -2243,6 +2249,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"nalevo na D-pad-u"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"nadesno na D-pad-u"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"centar na D-pad-u"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Okno sa podešavanjima tipa automatskog klika"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Levi klik"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pauziraj"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Pozicija"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Paket <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> je dodat u segment OGRANIČENO"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"je poslao/la sliku"</string>
@@ -2517,4 +2527,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Mape"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplikacije"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Otisci prstiju više ne mogu da se prepoznaju. Ponovo podesite otključavanje otiskom prsta."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index 7f57c8747e23..02cc889e9ecc 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -2090,6 +2090,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Адмацаваць"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Адмацаваць праграму \"<xliff:g id="LABEL">%1$s</xliff:g>\""</string>
<string name="app_info" msgid="6113278084877079851">"Звесткі аб праграме"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Ідзе запуск дэманстрацыі…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Ідзе скід налад прылады…"</string>
@@ -2244,6 +2250,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Улева на панэлі кіравання"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Управа на панэлі кіравання"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"У цэнтр на панэлі кіравання"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Пакет \"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>\" дададзены ў АБМЕЖАВАНУЮ групу"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"адпраўлены відарыс"</string>
@@ -2518,4 +2532,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Карты"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Праграмы"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Вашы адбіткі пальцаў больш не распазнаюцца. Паўторна наладзьце разблакіроўку адбіткам пальца."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 6bff361516e5..d85e319edaaa 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Освобождаване"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Премахване на фиксирането на <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Информация за приложението"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"-<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Демонстрацията се стартира…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Устройството се нулира…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Контролен пад – ляво"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Контролен пад – дясно"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Контролен пад – център"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Пакетът <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> е поставен в ОГРАНИЧЕНИЯ контейнер"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"изпратено изображение"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Карти"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Приложения"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Отпечатъците ви вече не могат да бъдат разпознати. Настройте отново „Отключване с отпечатък“."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index 82d1da312905..19d4962175b1 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"আনপিন করুন"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> অ্যাপ আনপিন করুন"</string>
<string name="app_info" msgid="6113278084877079851">"অ্যাপের তথ্য"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"ডেমো শুরু করা হচ্ছে…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"ডিভাইস আবার সেট করা হচ্ছে…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"ডিপ্যাড (Dpad)-এর বাঁদিকে"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"ডিপ্যাড (Dpad)-এর ডানদিকে"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"ডিপ্যাড (Dpad)-এর মাঝখানে"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> সীমাবদ্ধ গ্রুপে অন্তর্ভুক্ত করা হয়েছে"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"একটি ছবি পাঠানো হয়েছে"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"ম্যাপ"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"অ্যাপ্লিকেশন"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"আপনার ফিঙ্গারপ্রিন্ট আর শনাক্ত করা যাবে না। \'ফিঙ্গারপ্রিন্ট আনলক\' ফিচার আবার সেট-আপ করুন।"</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index d055f762858b..e95bedf3dcd3 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -2089,6 +2089,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Otkači"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Otkači aplikaciju <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Informacije o aplikaciji"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Pokretanje demonstracije…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Vraćanje uređaja na početne postavke…"</string>
@@ -2243,6 +2249,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Upravljač lijevo"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Upravljač desno"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Upravljač sredina"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Ploča postavki vrste automatskog klika"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Lijevi klik"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pauziraj"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Pozicija"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Paket <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> je stavljen u odjeljak OGRANIČENO"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"je poslao/la sliku"</string>
@@ -2517,4 +2527,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Mape"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplikacije"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Vaši otisci prstiju se više ne mogu prepoznavati. Ponovo postavite otključavanje otiskom prsta."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 2b0e6fca8caa..9b67f28bbfb2 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -2089,6 +2089,12 @@
<string name="unpin_target" msgid="3963318576590204447">"No fixis"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"No fixis <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Informació de l\'app"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"-<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"S\'està iniciant la demostració…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"S\'està restablint el dispositiu…"</string>
@@ -2243,6 +2249,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Creu direccional: esquerra"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Creu direccional: dreta"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Creu direccional: centre"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> s\'ha transferit al segment RESTRINGIT"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"ha enviat una imatge"</string>
@@ -2517,4 +2531,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplicacions"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Les teves empremtes digitals ja no es poden reconèixer. Torna a configurar Desbloqueig amb empremta digital."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index e8f75f3b957f..f4eef972c0d1 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -2090,6 +2090,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Odepnout"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Odepnout: <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"O aplikaci"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Spouštění ukázky…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Resetování zařízení…"</string>
@@ -2244,6 +2250,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad doleva"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad doprava"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad střed"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Panel nastavení typu automatického kliknutí"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Kliknutí levým"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pozastavit"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Pozice"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Balíček <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> byl vložen do sekce OMEZENO"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"posílá obrázek"</string>
@@ -2518,4 +2528,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Mapy"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplikace"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Vaše otisky prstů se nedaří rozpoznat. Nastavte odemknutí otiskem prstu znovu."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 288053ee1632..bcdb691eaf86 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Frigør"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Frigør <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Appinfo"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Starter demoen…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Nulstiller enheden…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"D-pad, venstre"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"D-pad, højre"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"D-pad, midten"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> er blevet placeret i samlingen BEGRÆNSET"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"sendte et billede"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Kort"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Apps"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Dine fingeraftryk kan ikke længere genkendes. Konfigurer fingeroplåsning igen."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 10659eb7e42e..4191512fd018 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Markierung entfernen"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> loslösen"</string>
<string name="app_info" msgid="6113278084877079851">"App-Informationen"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Demo wird gestartet…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Gerät wird zurückgesetzt…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Steuerkreuz nach links"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Steuerkreuz nach rechts"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Steuerkreuz Mitte"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> wurde in den BESCHRÄNKT-Bucket gelegt"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"hat ein Bild gesendet"</string>
@@ -2428,7 +2442,7 @@
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Dein Gerät ist zu heiß und kann den Bildschirm erst spiegeln, wenn es abgekühlt ist"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen ist aktiviert"</string>
- <string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> nutzt zum Anzeigen von Inhalten beide Displays"</string>
+ <string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> nutzt beide Displays zum Anzeigen von Inhalten"</string>
<string name="concurrent_display_notification_thermal_title" msgid="5921609404644739229">"Gerät ist zu warm"</string>
<string name="concurrent_display_notification_thermal_content" msgid="2075484836527609319">"Dual Screen ist nicht verfügbar, weil dein Smartphone zu warm ist"</string>
<string name="concurrent_display_notification_power_save_title" msgid="1794569070730736281">"Dual Screen ist nicht verfügbar"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Anwendungen"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Deine Fingerabdrücke können nicht mehr erkannt werden. Bitte richte die Entsperrung per Fingerabdruck neu ein."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 77a13ed65700..332fb1b47585 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Ξεκαρφίτσωμα"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Ξεκαρφίτσωμα <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Πληροφορίες εφαρμογής"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Έναρξη επίδειξης…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Επαναφορά συσκευής…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad αριστερά"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad δεξιά"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad κέντρο"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Το πακέτο <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> τοποθετήθηκε στον κάδο ΠΕΡΙΟΡΙΣΜΕΝΗΣ ΠΡΟΣΒΑΣΗΣ."</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"έστειλε μια εικόνα"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Χάρτες"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Εφαρμογές"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Δεν είναι δυνατή πλέον η αναγνώριση των δακτυλικών αποτυπωμάτων σας. Ρυθμίστε ξανά τη λειτουργία Ξεκλείδωμα με δακτυλικό αποτύπωμα."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 667f978701f9..74feb323b4dc 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Unpin"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Unpin <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"App info"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Starting demo…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Resetting device…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad left"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad right"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad centre"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> has been put into the RESTRICTED bucket"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"sent an image"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Applications"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Your fingerprints can no longer be recognised. Set up Fingerprint Unlock again."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index fc4b8af6f0ba..9b7764ef0475 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Unpin"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Unpin <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"App info"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Starting demo…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Resetting device…"</string>
@@ -2242,6 +2248,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad Left"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad Right"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad Center"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Autoclick type settings panel"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Left click"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pause"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Position"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> has been put into the RESTRICTED bucket"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"sent an image"</string>
@@ -2516,4 +2526,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Applications"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Your fingerprints can no longer be recognized. Set up Fingerprint Unlock again."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 4dcece1eb448..51148ae3be1d 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Unpin"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Unpin <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"App info"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Starting demo…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Resetting device…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad left"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad right"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad centre"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> has been put into the RESTRICTED bucket"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"sent an image"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Applications"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Your fingerprints can no longer be recognised. Set up Fingerprint Unlock again."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index a1f6f7615aba..0b9bb83b6a4a 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Unpin"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Unpin <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"App info"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Starting demo…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Resetting device…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad left"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad right"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad centre"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> has been put into the RESTRICTED bucket"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"sent an image"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Applications"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Your fingerprints can no longer be recognised. Set up Fingerprint Unlock again."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index f34aa97b424a..07c66ead87df 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -2089,6 +2089,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Dejar de fijar"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Dejar de fijar <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Información de apps"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Iniciando demostración…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Restableciendo dispositivo…"</string>
@@ -2243,6 +2249,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Pad direccional: izquierda"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Pad direccional: derecha"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Pad direccional: centro"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Panel de configuración del tipo de clic automático"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Clic izquierdo"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pausar"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Posición"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Se colocó <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> en el bucket RESTRICTED"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"envió una imagen"</string>
@@ -2517,4 +2527,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplicaciones"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Ya no se pueden reconocer tus huellas dactilares. Vuelve a configurar el Desbloqueo con huellas dactilares."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 612d86f14ef8..f035d5bbceaf 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -2089,6 +2089,12 @@
<string name="unpin_target" msgid="3963318576590204447">"No fijar"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"No fijar <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Información de la app"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Iniciando demostración…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Restableciendo dispositivo…"</string>
@@ -2243,6 +2249,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Cruceta: izquierda"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Cruceta: derecha"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Cruceta: centro"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> se ha incluido en el grupo de restringidos"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"ha enviado una imagen"</string>
@@ -2517,4 +2531,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplicaciones"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Tus huellas digitales ya no pueden reconocerse. Vuelve a configurar Desbloqueo con huella digital."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 6d5448908b02..1e299a609bd2 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -1055,7 +1055,7 @@
<string name="lockscreen_glogin_submit_button" msgid="3590556636347843733">"Logi sisse"</string>
<string name="lockscreen_glogin_invalid_input" msgid="4369219936865697679">"Vale kasutajanimi või parool."</string>
<string name="lockscreen_glogin_account_recovery_hint" msgid="1683405808525090649">"Kas unustasite oma kasutajanime või parooli?\nKülastage aadressi "<b>"google.com/accounts/recovery"</b>"."</string>
- <string name="lockscreen_glogin_checking_password" msgid="2607271802803381645">"Kontrollimine ..."</string>
+ <string name="lockscreen_glogin_checking_password" msgid="2607271802803381645">"Kontrollimine..."</string>
<string name="lockscreen_unlock_label" msgid="4648257878373307582">"Ava"</string>
<string name="lockscreen_sound_on_label" msgid="1660281470535492430">"Heli sisse"</string>
<string name="lockscreen_sound_off_label" msgid="2331496559245450053">"Heli välja"</string>
@@ -1509,7 +1509,7 @@
<string name="ext_media_move_failure_message" msgid="4197306718121869335">"Proovige sisu uuesti teisaldada"</string>
<string name="ext_media_status_removed" msgid="241223931135751691">"Eemaldatud"</string>
<string name="ext_media_status_unmounted" msgid="8145812017295835941">"Väljutatud"</string>
- <string name="ext_media_status_checking" msgid="159013362442090347">"Kontrollimine ..."</string>
+ <string name="ext_media_status_checking" msgid="159013362442090347">"Kontrollimine..."</string>
<string name="ext_media_status_mounted" msgid="3459448555811203459">"Valmis"</string>
<string name="ext_media_status_mounted_ro" msgid="1974809199760086956">"Kirjutuskaitstud"</string>
<string name="ext_media_status_bad_removal" msgid="508448566481406245">"Eemaldamine polnud turvaline"</string>
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Vabasta"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Vabasta <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Rakenduse teave"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Demo käivitamine …"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Seadme lähtestamine …"</string>
@@ -2242,6 +2248,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Suunaklahvistiku vasaknool"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Suunaklahvistiku paremnool"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Suunaklahvistiku keskmine nupp"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Automaatkliki tüübi seadete paneel"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Vasakklikk"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Peata"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Asukoht"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> on lisatud salve PIIRANGUTEGA"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"saatis kujutise"</string>
@@ -2516,4 +2526,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Rakendused"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Teie sõrmejälgi ei saa enam tuvastada. Seadistage sõrmejäljega avamine uuesti."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index 9f62847bb710..177449ccb494 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -1794,8 +1794,8 @@
<string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Aukeratu eginbide bat"</string>
<string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Aukeratu eginbide bat"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Erabilerraztasuna botoia sakatzen duzun hurrengoan irekiko da eginbidea"</string>
- <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Lasterbidea erabiltzen duzun hurrengoan irekiko da eginbidea. Pasatu 2 hatz pantailaren behealdetik gorantz eta askatu bizkor."</string>
- <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Lasterbidea erabiltzen duzun hurrengoan irekiko da eginbidea. Pasatu 3 hatz pantailaren behealdetik gorantz eta askatu bizkor."</string>
+ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Lasterbidea erabiltzen duzun hurrengoan irekiko da eginbidea. Pasatu 2 hatz pantailaren behealdetik gora eta askatu bizkor."</string>
+ <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Lasterbidea erabiltzen duzun hurrengoan irekiko da eginbidea. Pasatu 3 hatz pantailaren behealdetik gora eta askatu bizkor."</string>
<string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Lupa"</string>
<string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Telefonoaren mikrofonora aldatu nahi duzu?"</string>
<string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Audifonoaren mikrofonora aldatu nahi duzu?"</string>
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Kendu aingura"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Kendu aingura <xliff:g id="LABEL">%1$s</xliff:g> aplikazioari"</string>
<string name="app_info" msgid="6113278084877079851">"Aplikazioari buruzko informazioa"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Demoa abiarazten…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Gailua berrezartzen…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Norabide-kontrolagailuko ezkerreko botoia"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Norabide-kontrolagailuko eskuineko botoia"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Norabide-kontrolagailuko erdiko botoia"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Murriztuen edukiontzian ezarri da <xliff:g id="PACKAGE_NAME">%1$s</xliff:g>"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"erabiltzaileak irudi bat bidali du"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplikazioak"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Zure hatz-markak ez dira ezagutzen jada. Konfiguratu berriro hatz-marka bidez desblokeatzeko eginbidea."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index e8e0f48a966e..e0a8c1b67cb5 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"برداشتن سنجاق"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"برداشتن سنجاق <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"اطلاعات برنامه"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"در حال شروع نسخه نمایشی…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"در حال بازنشانی دستگاه…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"پد کنترل چپ"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"پد کنترل راست"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"پد کنترل وسط"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> در سطل «محدودشده» قرار گرفت"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"تصویری ارسال کرد"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"نقشه"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"برنامه‌ها"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"اثر انگشتانتان دیگر قابل‌شناسایی نیست. «قفل‌گشایی با اثر انگشت» را دوباره راه‌اندازی کنید."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 5da5844cd9c3..1b53196c9808 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Irrota"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Irrota <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Sovellustiedot"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Aloitetaan esittelyä…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Palautetaan asetuksia…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Suuntanäppäimistö: vasen painike"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Suuntanäppäimistö: oikea painike"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Suuntanäppäimistö: keskipainike"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> on nyt rajoitettujen ryhmässä"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"lähetti kuvan"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Sovellukset"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Sormenjälkiäsi ei voi enää tunnistaa. Ota sormenjälkiavaus uudelleen käyttöön."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 9d81f4f978bd..d742d87f7ed7 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -2089,6 +2089,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Annuler l\'épinglage"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Annuler l\'épinglage de <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Détails de l\'appli"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Démarrage de la démonstration en cours…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Réinitialisation de l\'appareil en cours…"</string>
@@ -2243,6 +2249,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Pavé directionnel – gauche"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Pavé directionnel – droite"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Pavé directionnel – centre"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> a été placé dans le compartiment RESTREINT"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g> :"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"a envoyé une image"</string>
@@ -2517,4 +2531,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Applications"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Vos empreintes digitales ne peuvent plus être reconnues. Reconfigurez le Déverrouillage par empreinte digitale."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 9ef2758b4eee..f0727d69c325 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -2089,6 +2089,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Retirer"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Retirer <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Infos sur l\'appli"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"− <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Lancement de la démo…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Réinitialisation…"</string>
@@ -2243,6 +2249,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Pavé directionnel - Gauche"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Pavé directionnel - Droite"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Pavé directionnel - Centre"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> a été placé dans le bucket RESTRICTED"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g> :"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"a envoyé une image"</string>
@@ -2517,4 +2531,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Applications"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Vos empreintes ne peuvent plus être reconnues. Reconfigurez le déverrouillage par empreinte digitale."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index 6f677e3ad84b..bb41a4f5fd3d 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Deixar de fixar"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Deixar de fixar a <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Información da app"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Iniciando demostración…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Restablecendo dispositivo…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Cruceta: esquerda"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Cruceta: dereita"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Cruceta: centro"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> incluíuse no grupo RESTRINXIDO"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"enviouse unha imaxe"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Mapas"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplicacións"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Xa non se recoñecen as túas impresións dixitais. Configura de novo o desbloqueo dactilar."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index f4d6099fffe8..ff32df0b26fe 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -67,10 +67,10 @@
<string name="RuacMmi" msgid="1876047385848991110">"અનિચ્છિત પજવણીકારક કૉલ્સનો અસ્વીકાર"</string>
<string name="CndMmi" msgid="185136449405618437">"કૉલિંગ નંબર વિતરણ"</string>
<string name="DndMmi" msgid="8797375819689129800">"ખલેલ પાડશો નહીં"</string>
- <string name="CLIRDefaultOnNextCallOn" msgid="4511621022859867988">"કૉલર ID પ્રતિબંધિત પર ડિફોલ્ટ છે. આગલો કૉલ: પ્રતિબંધિત છે"</string>
- <string name="CLIRDefaultOnNextCallOff" msgid="5036749051007098105">"કૉલર ID પ્રતિબંધિત પર ડિફોલ્ટ છે. આગલો કૉલ: પ્રતિબંધિત નહીં"</string>
- <string name="CLIRDefaultOffNextCallOn" msgid="1022781126694885017">"કૉલર ID પ્રતિબંધિત નહીં પર ડિફોલ્ટ છે. આગલો કૉલ: પ્રતિબંધિત"</string>
- <string name="CLIRDefaultOffNextCallOff" msgid="2491576172356463443">"કૉલર ID પ્રતિબંધિત નહીં પર ડિફોલ્ટ છે. આગલો કૉલ: પ્રતિબંધિત નહીં"</string>
+ <string name="CLIRDefaultOnNextCallOn" msgid="4511621022859867988">"કૉલર ID ડિફૉલ્ટ તરીકે પ્રતિબંધિત છે. આગળનો કૉલ: પ્રતિબંધિત છે"</string>
+ <string name="CLIRDefaultOnNextCallOff" msgid="5036749051007098105">"કૉલર ID ડિફૉલ્ટ તરીકે પ્રતિબંધિત છે. આગળનો કૉલ: પ્રતિબંધિત નથી"</string>
+ <string name="CLIRDefaultOffNextCallOn" msgid="1022781126694885017">"કૉલર ID ડિફૉલ્ટ તરીકે પ્રતિબંધિત નથી. આગળનો કૉલ: પ્રતિબંધિત છે"</string>
+ <string name="CLIRDefaultOffNextCallOff" msgid="2491576172356463443">"કૉલર ID ડિફૉલ્ટ તરીકે પ્રતિબંધિત નથી. આગળનો કૉલ: પ્રતિબંધિત નથી"</string>
<string name="page_size_compat_apk_warning" msgid="2982396798449041224">"આ ઍપ 16 KB સુસંગત નથી. APK સંરેખણની તપાસ નિષ્ફળ રહી. આ ઍપ પેજના કદ સાથે સુસંગત મોડનો ઉપયોગ કરીને ચાલશે. શ્રેષ્ઠ સુસંગતતા માટે, કૃપા કરીને 16 KB સપોર્ટવાળી ઍપ્લિકેશન ફરીથી સંકલિત કરો. વધુ માહિતી માટે, &lt;a href=\"https://developer.android.com/16kb-page-size\"&gt;https://developer.android.com/16kb-page-size&lt;/a&gt; જુઓ"</string>
<string name="page_size_compat_elf_warning" msgid="6753874059564812651">"આ ઍપ 16 KB સુસંગત નથી. ELF સંરેખણની તપાસ નિષ્ફળ રહી. આ ઍપ પેજના કદ સાથે સુસંગત મોડનો ઉપયોગ કરીને ચાલશે. શ્રેષ્ઠ સુસંગતતા માટે, કૃપા કરીને 16 KB સપોર્ટવાળી ઍપ્લિકેશન ફરીથી સંકલિત કરો. વધુ માહિતી માટે, &lt;a href=\"https://developer.android.com/16kb-page-size\"&gt;https://developer.android.com/16kb-page-size&lt;/a&gt; જુઓ"</string>
<string name="page_size_compat_apk_and_elf_warning" msgid="7628675779500605390">"આ ઍપ 16 KB સુસંગત નથી. APK અને ELF સંરેખણની તપાસ નિષ્ફળ રહી. આ ઍપ પેજના કદ સાથે સુસંગત મોડનો ઉપયોગ કરીને ચાલશે. શ્રેષ્ઠ સુસંગતતા માટે, કૃપા કરીને 16 KB સપોર્ટવાળી ઍપ્લિકેશન ફરીથી સંકલિત કરો. વધુ માહિતી માટે, &lt;a href=\"https://developer.android.com/16kb-page-size\"&gt;https://developer.android.com/16kb-page-size&lt;/a&gt; જુઓ"</string>
@@ -1039,12 +1039,12 @@
<string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="3069635524964070596">"તમે <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે અનલૉક પૅટર્ન દોરી છે. વધુ <xliff:g id="NUMBER_1">%2$d</xliff:g> વખત અસફળ પ્રયાસ પછી, તમને તમારા Google સાઇન ઇનનો ઉપયોગ કરીને તમારા ટૅબ્લેટને અનલૉક કરવા માટે કહેવામાં આવશે.\n\n<xliff:g id="NUMBER_2">%3$d</xliff:g> સેકન્ડમાં ફરી પ્રયાસ કરો."</string>
<string name="lockscreen_failed_attempts_almost_glogin" product="tv" msgid="6399092175942158529">"તમે <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે અનલૉક પૅટર્ન દોરી છે. વધુ <xliff:g id="NUMBER_1">%2$d</xliff:g> વખત અસફળ પ્રયાસ પછી, તમને તમારા Google સાઇન ઇનનો ઉપયોગ કરીને તમારા Android TV ડિવાઇસને અનલૉક કરવા માટે કહેવામાં આવશે.\n\n<xliff:g id="NUMBER_2">%3$d</xliff:g> સેકન્ડમાં ફરી પ્રયાસ કરો."</string>
<string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="5691623136957148335">"તમે <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે અનલૉક પૅટર્ન દોરી છે. વધુ <xliff:g id="NUMBER_1">%2$d</xliff:g> વખત અસફળ પ્રયાસ પછી, તમને તમારા Google સાઇન ઇનનો ઉપયોગ કરીને તમારા ફોનને અનલૉક કરવા માટે કહેવામાં આવશે.\n\n<xliff:g id="NUMBER_2">%3$d</xliff:g> સેકન્ડમાં ફરી પ્રયાસ કરો."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="7914445759242151426">"તમે ટેબ્લેટને અનલૉક કરવા માટે <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે પ્રયાસ કર્યો. <xliff:g id="NUMBER_1">%2$d</xliff:g> વધુ અસફળ પ્રયાસ પછી, ટેબ્લેટને ફેક્ટરી ડિફોલ્ટ પર ફરીથી સેટ કરવામાં આવશે અને તેનો તમામ ડેટા કાઢી નાખવામાં આવશે."</string>
+ <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="7914445759242151426">"તમે ટૅબ્લેટને અનલૉક કરવા માટે <xliff:g id="NUMBER_0">%1$d</xliff:g> વાર ખોટી રીતે પ્રયાસ કર્યો. <xliff:g id="NUMBER_1">%2$d</xliff:g> વધુ અસફળ પ્રયાસ પછી, ટૅબ્લેટને ફેક્ટરી ડિફૉલ્ટ પર રીસેટ કરવામાં આવશે અને તેનો તમામ ડેટા ગુમાવવામાં આવશે."</string>
<string name="lockscreen_failed_attempts_almost_at_wipe" product="tv" msgid="4275591249631864248">"તમે તમારા Android TV ડિવાઇસને <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે અનલૉક કરવાનો પ્રયાસ કર્યો છે. વધુ <xliff:g id="NUMBER_1">%2$d</xliff:g> અસફળ પ્રયાસ પછી, તમારા Android TV ડિવાઇસને ફેક્ટરી ડિફૉલ્ટ પર રીસેટ કરવામાં આવશે અને બધો વપરાશકર્તા ડેટા ગુમ થઈ જશે."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="1166532464798446579">"તમે ફોનને અનલૉક કરવા માટે <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે પ્રયાસ કર્યો. <xliff:g id="NUMBER_1">%2$d</xliff:g> વધુ અસફળ પ્રયાસો પછી, ફોનને ફેક્ટરી ડિફોલ્ટ પર ફરીથી સેટ કરવામાં આવશે અને તેનો તમામ ડેટા કાઢી નાખવામાં આવશે."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="8682445539263683414">"તમે <xliff:g id="NUMBER">%d</xliff:g> વખત ખોટી રીતે ટેબ્લેટને અનલૉક કરવાનો પ્રયાસ કર્યો. ટેબ્લેટ હવે ફેક્ટરી ડિફોલ્ટ પર ફરીથી સેટ કરવામાં આવશે."</string>
+ <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="1166532464798446579">"તમે ફોનને અનલૉક કરવા માટે <xliff:g id="NUMBER_0">%1$d</xliff:g> વાર ખોટી રીતે પ્રયાસ કર્યો. <xliff:g id="NUMBER_1">%2$d</xliff:g> વધુ અસફળ પ્રયાસો પછી, ફોનને ફેક્ટરી ડિફૉલ્ટ પર રીસેટ કરવામાં આવશે અને તેનો તમામ ડેટા ગુમાવવામાં આવશે."</string>
+ <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="8682445539263683414">"તમે <xliff:g id="NUMBER">%d</xliff:g> વાર ખોટી રીતે ટૅબ્લેટને અનલૉક કરવાનો પ્રયાસ કર્યો. ટૅબ્લેટ હવે ફેક્ટરી ડિફૉલ્ટ પર રીસેટ કરવામાં આવશે."</string>
<string name="lockscreen_failed_attempts_now_wiping" product="tv" msgid="2205435033340091883">"તમે તમારા Android TV ડિવાઇસને <xliff:g id="NUMBER">%d</xliff:g> વખત ખોટી રીતે અનલૉક કરવાનો પ્રયાસ કર્યો છે. તમારા Android TV ડિવાઇસને હવે ફેક્ટરી ડિફૉલ્ટ પર રીસેટ કરવામાં આવશે."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="2203704707679895487">"તમે <xliff:g id="NUMBER">%d</xliff:g> વખત ખોટી રીતે ફોનને અનલૉક કરવાનો પ્રયાસ કર્યો. ફોન હવે ફેક્ટરી ડિફોલ્ટ પર ફરીથી સેટ કરવામાં આવશે."</string>
+ <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="2203704707679895487">"તમે <xliff:g id="NUMBER">%d</xliff:g> વાર ખોટી રીતે ફોનને અનલૉક કરવાનો પ્રયાસ કર્યો. ફોન હવે ફેક્ટરી ડિફૉલ્ટ પર રીસેટ કરવામાં આવશે."</string>
<string name="lockscreen_too_many_failed_attempts_countdown" msgid="6807200118164539589">"<xliff:g id="NUMBER">%d</xliff:g> સેકંડમાં ફરી પ્રયાસ કરો."</string>
<string name="lockscreen_forgot_pattern_button_text" msgid="8362442730606839031">"પૅટર્ન ભૂલી ગયા છો?"</string>
<string name="lockscreen_glogin_forgot_pattern" msgid="9218940117797602518">"એકાઉન્ટ અનલૉક કરો"</string>
@@ -1265,7 +1265,7 @@
<string name="whichImageCaptureApplication" msgid="2737413019463215284">"આની સાથે છબી કૅપ્ચર કરો"</string>
<string name="whichImageCaptureApplicationNamed" msgid="8820702441847612202">"%1$s સાથે છબી કૅપ્ચર કરો"</string>
<string name="whichImageCaptureApplicationLabel" msgid="6505433734824988277">"છબી કૅપ્ચર કરો"</string>
- <string name="alwaysUse" msgid="3153558199076112903">"આ ક્રિયા માટે ડિફોલ્ટ તરીકે ઉપયોગમાં લો."</string>
+ <string name="alwaysUse" msgid="3153558199076112903">"આ ઍક્શન માટે ડિફૉલ્ટ તરીકેનો ઉપયોગ કરો."</string>
<string name="use_a_different_app" msgid="4987790276170972776">"અલગ એપ્લિકેશનનો ઉપયોગ કરો"</string>
<string name="clearDefaultHintMsg" msgid="1325866337702524936">"સિસ્ટમ સેટિંગ &gt; ઍપ &gt; ડાઉનલોડ કરેલામાં ડિફૉલ્ટ સાફ કરો."</string>
<string name="chooseActivity" msgid="8563390197659779956">"એક ક્રિયા પસંદ કરો"</string>
@@ -1351,7 +1351,7 @@
<string name="volume_icon_description_incall" msgid="4491255105381227919">"કૉલ વૉલ્યૂમ"</string>
<string name="volume_icon_description_media" msgid="4997633254078171233">"મીડિયા વૉલ્યૂમ"</string>
<string name="volume_icon_description_notification" msgid="579091344110747279">"સૂચના વૉલ્યૂમ"</string>
- <string name="ringtone_default" msgid="9118299121288174597">"ડિફોલ્ટ રિંગટોન"</string>
+ <string name="ringtone_default" msgid="9118299121288174597">"ડિફૉલ્ટ રિંગટોન"</string>
<string name="ringtone_default_with_actual" msgid="2709686194556159773">"ડિફૉલ્ટ (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
<string name="ringtone_silent" msgid="397111123930141876">"કોઈ નહીં"</string>
<string name="ringtone_picker_title" msgid="667342618626068253">"રિંગટોન્સ"</string>
@@ -1735,12 +1735,12 @@
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="23741434207544038">"તમે <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે તમારો પિન લખ્યો છે. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> સેકન્ડમાં ફરીથી પ્રયાસ કરો."</string>
<string name="kg_too_many_failed_password_attempts_dialog_message" msgid="3328686432962224215">"તમે <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે તમારો પાસવર્ડ લખ્યો છે. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> સેકંડમાં ફરીથી પ્રયાસ કરો."</string>
<string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="7357404233979139075">"તમે <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે તમારી અનલૉક પૅટર્ન દોરી. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> સેકન્ડમાં ફરીથી પ્રયાસ કરો."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="3479940221343361587">"તમે ટેબ્લેટને અનલૉક કરવા માટે <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે પ્રયાસ કર્યો. <xliff:g id="NUMBER_1">%2$d</xliff:g> વધુ અસફળ પ્રયાસ પછી, ટેબ્લેટને ફેક્ટરી ડિફોલ્ટ પર ફરીથી સેટ કરવામાં આવશે અને તેનો તમામ ડેટા કાઢી નાખવામાં આવશે."</string>
+ <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="3479940221343361587">"તમે ટૅબ્લેટને અનલૉક કરવા માટે <xliff:g id="NUMBER_0">%1$d</xliff:g> વાર ખોટી રીતે પ્રયાસ કર્યો. <xliff:g id="NUMBER_1">%2$d</xliff:g> વધુ અસફળ પ્રયાસ પછી, ટૅબ્લેટને ફેક્ટરી ડિફૉલ્ટ પર રીસેટ કરવામાં આવશે અને તેનો તમામ ડેટા ગુમાવવામાં આવશે."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tv" msgid="9064457748587850217">"તમે તમારા Android TV ડિવાઇસને <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે અનલૉક કરવાનો પ્રયાસ કર્યો છે. વધુ <xliff:g id="NUMBER_1">%2$d</xliff:g> અસફળ પ્રયાસ પછી, તમારા Android TV ડિવાઇસને ફેક્ટરી ડિફૉલ્ટ પર રીસેટ કરવામાં આવશે અને બધો વપરાશકર્તા ડેટા ગુમ થઈ જશે."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="5955398963754432548">"તમે ફોનને અનલૉક કરવા માટે <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે પ્રયાસ કર્યો. <xliff:g id="NUMBER_1">%2$d</xliff:g> વધુ અસફળ પ્રયાસો પછી, ફોનને ફેક્ટરી ડિફોલ્ટ પર ફરીથી સેટ કરવામાં આવશે અને તેનો તમામ ડેટા કાઢી નાખવામાં આવશે."</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2299099385175083308">"તમે <xliff:g id="NUMBER">%d</xliff:g> વખત ખોટી રીતે ટેબ્લેટને અનલૉક કરવાનો પ્રયાસ કર્યો. ટેબ્લેટ હવે ફેક્ટરી ડિફોલ્ટ પર ફરીથી સેટ કરવામાં આવશે."</string>
+ <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="5955398963754432548">"તમે ફોનને અનલૉક કરવા માટે <xliff:g id="NUMBER_0">%1$d</xliff:g> વાર ખોટી રીતે પ્રયાસ કર્યો. <xliff:g id="NUMBER_1">%2$d</xliff:g> વધુ અસફળ પ્રયાસો પછી, ફોનને ફેક્ટરી ડિફૉલ્ટ પર રીસેટ કરવામાં આવશે અને તેનો તમામ ડેટા ગુમાવવામાં આવશે."</string>
+ <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2299099385175083308">"તમે <xliff:g id="NUMBER">%d</xliff:g> વાર ખોટી રીતે ટૅબ્લેટને અનલૉક કરવાનો પ્રયાસ કર્યો. ટૅબ્લેટ હવે ફેક્ટરી ડિફૉલ્ટ પર રીસેટ કરવામાં આવશે."</string>
<string name="kg_failed_attempts_now_wiping" product="tv" msgid="5045460916106267585">"તમે તમારા Android TV ડિવાઇસને <xliff:g id="NUMBER">%d</xliff:g> વખત ખોટી રીતે અનલૉક કરવાનો પ્રયાસ કર્યો છે. તમારા Android TV ડિવાઇસને હવે ફેક્ટરી ડિફૉલ્ટ પર રીસેટ કરવામાં આવશે."</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="5043730590446071189">"તમે <xliff:g id="NUMBER">%d</xliff:g> વખત ખોટી રીતે ફોનને અનલૉક કરવાનો પ્રયાસ કર્યો. ફોન હવે ફેક્ટરી ડિફોલ્ટ પર ફરીથી સેટ કરવામાં આવશે."</string>
+ <string name="kg_failed_attempts_now_wiping" product="default" msgid="5043730590446071189">"તમે <xliff:g id="NUMBER">%d</xliff:g> વાર ખોટી રીતે ફોનને અનલૉક કરવાનો પ્રયાસ કર્યો. ફોન હવે ફેક્ટરી ડિફૉલ્ટ પર રીસેટ કરવામાં આવશે."</string>
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="7086799295109717623">"તમે <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે અનલૉક પૅટર્ન દોરી છે. વધુ <xliff:g id="NUMBER_1">%2$d</xliff:g> વખત અસફળ પ્રયાસો પછી, તમને એક ઇમેઇલ એકાઉન્ટનો ઉપયોગ કરીને તમારા ટૅબ્લેટને અનલૉક કરવા માટે પૂછવામાં આવશે.\n\n<xliff:g id="NUMBER_2">%3$d</xliff:g> સેકન્ડમાં ફરી પ્રયાસ કરો."</string>
<string name="kg_failed_attempts_almost_at_login" product="tv" msgid="4670840383567106114">"તમે તમારી અનલૉક પૅટર્ન <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે દોરી છે. વધુ <xliff:g id="NUMBER_1">%2$d</xliff:g> અસફળ પ્રયાસ પછી, તમને ઇમેઇલ એકાઉન્ટનો ઉપયોગ કરીને તમારા Android TV ડિવાઇસને અનલૉક કરવાનું કહેવામાં આવશે.\n\n<xliff:g id="NUMBER_2">%3$d</xliff:g> સેકન્ડમાં ફરીથી પ્રયાસ કરો."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"તમે તમારી અનલૉક પૅટર્ન <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે દોરી. હજી <xliff:g id="NUMBER_1">%2$d</xliff:g> અસફળ પ્રયાસ પછી, તમને ઇમેઇલ એકાઉન્ટનો ઉપયોગ કરીને ફોનને અનલૉક કરવાનું કહેવામાં આવશે.\n\n<xliff:g id="NUMBER_2">%3$d</xliff:g> સેકન્ડમાં ફરીથી પ્રયાસ કરો."</string>
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"અનપિન કરો"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g>ને અનપિન કરો"</string>
<string name="app_info" msgid="6113278084877079851">"ઍપની માહિતી"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"ડેમો પ્રારંભ કરી રહ્યાં છે…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"ઉપકરણ ફરીથી સેટ કરી રહ્યાં છે…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"ડી-પૅડ ડાબે"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"ડી-પૅડ જમણે"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"ડી-પૅડ મધ્યમાં"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>ને પ્રતિબંધિત સમૂહમાં મૂકવામાં આવ્યું છે"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"છબી મોકલી"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"ઍપ્લિકેશનો"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"તમારી ફિંગરપ્રિન્ટને હવેથી ઓળખી શકાશે નહીં. ફિંગરપ્રિન્ટ અનલૉક સુવિધાનું ફરી સેટઅપ કરો."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index d750b39a0e41..393316b2386e 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"अनपिन करें"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> को अनपिन करें"</string>
<string name="app_info" msgid="6113278084877079851">"ऐप्लिकेशन की जानकारी"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"डेमो प्रारंभ हो रहा है…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"डिवाइस फिर से रीसेट कर रहा है…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"डी-पैड का बाईं ओर वाला बटन"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"डी-पैड का दाईं ओर वाला बटन"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"डी-पैड का बीच वाला बटन"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> को प्रतिबंधित बकेट में रखा गया है"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"एक इमेज भेजी गई"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"मैप"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"ऐप्लिकेशन"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"अब आपके फ़िंगरप्रिंट की पहचान नहीं की जा सकती. फ़िंगरप्रिंट अनलॉक की सुविधा को दोबारा सेट अप करें."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index b5fc19a3e961..cc4d29689743 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -1411,7 +1411,7 @@
<string name="carrier_app_notification_text" msgid="6567057546341958637">"Dodirnite da biste je postavili"</string>
<string name="time_zone_change_notification_title" msgid="5232503069219193218">"Vaša je vremenska zona promijenjena"</string>
<string name="time_zone_change_notification_body" msgid="6135793674904665585">"Sada ste u vremenskoj zoni <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string>
- <string name="time_picker_dialog_title" msgid="9053376764985220821">"Postavljanje vremena"</string>
+ <string name="time_picker_dialog_title" msgid="9053376764985220821">"Postavite vrijeme"</string>
<string name="date_picker_dialog_title" msgid="5030520449243071926">"Postavi datum"</string>
<string name="date_time_set" msgid="4603445265164486816">"Postavi"</string>
<string name="date_time_done" msgid="8363155889402873463">"Gotovo"</string>
@@ -2089,6 +2089,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Otkvači"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Otkvači sudionika <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Informacije o aplikaciji"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Pokretanje demo-načina..."</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Vraćanje uređaja na zadano…"</string>
@@ -2108,7 +2114,7 @@
<string name="adb_debugging_notification_channel_tv" msgid="4764046459631031496">"Otklanjanje pogrešaka putem USB-a"</string>
<string name="time_picker_hour_label" msgid="4208590187662336864">"sat"</string>
<string name="time_picker_minute_label" msgid="8307452311269824553">"minuta"</string>
- <string name="time_picker_header_text" msgid="9073802285051516688">"Postavljanje vremena"</string>
+ <string name="time_picker_header_text" msgid="9073802285051516688">"Postavite vrijeme"</string>
<string name="time_picker_input_error" msgid="8386271930742451034">"Unesite važeće vrijeme"</string>
<string name="time_picker_prompt_label" msgid="303588544656363889">"Unesite vrijeme"</string>
<string name="time_picker_text_input_mode_description" msgid="4761160667516611576">"Prijeđite na način unosa teksta da biste unijeli vrijeme."</string>
@@ -2243,6 +2249,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Lijevo na plohi za smjerove"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Desno na plohi za smjerove"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"U središtu plohe za smjerove"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Ploča postavki vrste automatskog klika"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Lijevi klik"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pauziraj"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Pozicija"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Paket <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> premješten je u spremnik OGRANIČENO"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"šalje sliku"</string>
@@ -2517,4 +2527,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Karte"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplikacije"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Vaši se otisci prstiju više ne prepoznaju. Ponovo postavite otključavanje otiskom prsta."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index f42567ed1fe6..ddfef1aae499 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Feloldás"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> rögzítésének feloldása"</string>
<string name="app_info" msgid="6113278084877079851">"Alkalmazásinfó"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Bemutató indítása…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Eszköz visszaállítása…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"D-pad – balra"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"D-pad – jobbra"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"D-pad – középre"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"A következő csomag a KORLÁTOZOTT csoportba került: <xliff:g id="PACKAGE_NAME">%1$s</xliff:g>"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"képet küldött"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Térkép"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Alkalmazások"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Az ujjlenyomata már nem ismerhető fel. Állítsa be újra a Feloldás ujjlenyomattal funkciót."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index e3fa611ce135..92633245988e 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Ապամրացնել"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Ապամրացնել <xliff:g id="LABEL">%1$s</xliff:g> հավելվածը"</string>
<string name="app_info" msgid="6113278084877079851">"Հավելվածի մասին"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Ցուցադրական օգտատերը գործարկվում է…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Սարքը վերակայվում է…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad-ի «Ձախ» կոճակ"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad-ի «Աջ» կոճակ"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad-ի «Կենտրոն» կոճակ"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> փաթեթը գցվեց ՍԱՀՄԱՆԱՓԱԿՎԱԾ զամբյուղի մեջ"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>՝"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"օգտատերը պատկեր է ուղարկել"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Քարտեզներ"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Հավելվածներ"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Ձեր մատնահետքերն այլևս չեն կարող ճանաչվել։ Նորից կարգավորեք մատնահետքով ապակողպումը։"</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index 5f60ba2de8e4..86f711483ed1 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Lepas pin"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Lepas sematan <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Info aplikasi"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Memulai demo..."</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Mereset perangkat..."</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad Kiri"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad Kanan"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad Tengah"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> telah dimasukkan ke dalam bucket DIBATASI"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"mengirim gambar"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplikasi"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Sidik jari Anda tidak dapat dikenali lagi. Siapkan Buka dengan Sidik Jari lagi."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index 92567427b0b9..360e3d9815a0 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Losa"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Losa <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Forritsupplýsingar"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Byrjar kynningu…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Endurstillir tækið…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Vinstrihnappur stýriflatar"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Hægrihnappur stýriflatar"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Miðjuhnappur stýriflatar"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> var sett í flokkinn TAKMARKAÐ"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"sendi mynd"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Kort"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Forrit"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Ekki er lengur hægt að bera kennsl á fingraförin þín. Settu fingrafarskenni upp aftur."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 34b179fae4ed..1914ea5ec6b5 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -2086,9 +2086,15 @@
<string name="usb_mtp_launch_notification_description" msgid="6942535713629852684">"Tocca per visualizzare i file"</string>
<string name="pin_target" msgid="8036028973110156895">"Fissa"</string>
<string name="pin_specific_target" msgid="7824671240625957415">"Blocca <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="unpin_target" msgid="3963318576590204447">"Sblocca"</string>
+ <string name="unpin_target" msgid="3963318576590204447">"Stacca"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Sblocca <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Informazioni app"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Avvio della demo…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Reset del dispositivo…"</string>
@@ -2243,6 +2249,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"D-pad - Sinistra"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"D-pad - Destra"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"D-pad - Centro"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> è stato inserito nel bucket RESTRICTED"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"ha inviato un\'immagine"</string>
@@ -2517,4 +2531,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Applicazioni"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Non è più possibile riconoscere le tue impronte. Riconfigura lo Sblocco con l\'Impronta."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index cbc989ef58f4..5e0df4708c03 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -2089,6 +2089,12 @@
<string name="unpin_target" msgid="3963318576590204447">"ביטול הצמדה"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"ביטול ההצמדה של <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"פרטי האפליקציה"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"תהליך ההדגמה מתחיל…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"מתבצע איפוס של המכשיר…"</string>
@@ -2243,6 +2249,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"‏לחצן שמאלי ב-Dpad"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"‏לחצן ימני ב-Dpad"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"‏לחצן אמצעי ב-Dpad"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> התווספה לקטגוריה \'מוגבל\'"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"נשלחה תמונה"</string>
@@ -2517,4 +2531,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"מפות"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"אפליקציות"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"טביעות האצבע שלך נשחקו ואי אפשר לזהות אותן. צריך להגדיר \'פתיחה בטביעת אצבע\' מחדש."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 51dca2255a83..ac37d558e8bb 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"固定を解除"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> の固定を解除"</string>
<string name="app_info" msgid="6113278084877079851">"アプリ情報"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"デモを開始しています…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"デバイスをリセットしています…"</string>
@@ -2242,6 +2248,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"D-pad: 左"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"D-pad: 右"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"D-pad: 中央"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"自動クリックの種類の設定パネル"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"左クリック"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"一時停止"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"位置"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> は RESTRICTED バケットに移動しました。"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"画像を送信しました"</string>
@@ -2516,4 +2526,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"マップ"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"アプリ"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"指紋を認識できなくなりました。指紋認証をもう一度設定してください。"</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
index 2411c8cad961..2dee93b1dc24 100644
--- a/core/res/res/values-ka/strings.xml
+++ b/core/res/res/values-ka/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"ჩამაგრების მოხსნა"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g>-ის ჩამაგრების მოხსნა"</string>
<string name="app_info" msgid="6113278084877079851">"აპის შესახებ"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"მიმდინარეობს დემონსტრაციის დაწყება…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"მიმდინარეობს მოწყობილობის გადაყენება…"</string>
@@ -2242,6 +2248,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad მარცხნივ"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad მარჯვნივ"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad ცენტრი"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"ავტოდაწკაპუნების ტიპის პარამეტრების არე"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"მარცხენა დაწკაპუნება"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"პაუზა"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"პოზიცია"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> მოთავსდა კალათაში „შეზღუდული“"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"გაიგზავნა სურათი"</string>
@@ -2516,4 +2526,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"აპლიკაციები"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"თქვენი თითის ანაბეჭდის ამოცნობა ვეღარ ხერხდება. ხელახლა დააყენეთ ანაბეჭდით განბლოკვა."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index 3f3881b0d598..6655e5d31590 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Босату"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> босату"</string>
<string name="app_info" msgid="6113278084877079851">"Қолданба ақпараты"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Демо нұсқасы іске қосылуда..."</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Құрылғы бастапқы күйге қайтарылуда..."</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Сол жақ Dpad түймесі"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Оң жақ Dpad түймесі"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Ортаңғы Dpad түймесі"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ШЕКТЕЛГЕН себетке салынды."</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"сурет жіберілді"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Қолданбалар"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Саусағыңыздың іздері бұдан былай танылмайды. Саусақ ізімен ашу функциясын қайта реттеу"</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index 0ad4f09d1cfa..3d78797d9a70 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"មិនខ្ទាស់"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"ដកខ្ទាស់ <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"ព័ត៌មាន​កម្មវិធី"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"កំពុងចាប់ផ្តើមការបង្ហាញសាកល្បង…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"កំពុងកំណត់ឧបករណ៍ឡើងវិញ…"</string>
@@ -2242,6 +2248,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad ឆ្វេង"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad ស្ដាំ"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad កណ្ដាល"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"ផ្ទាំងការកំណត់ប្រភេទចុចស្វ័យប្រវត្តិ"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"ចុចម៉ៅស៍ខាងឆ្វេង"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"ផ្អាក"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"ទីតាំង"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ត្រូវបានដាក់​ទៅក្នុងធុង​ដែលបានដាក់កំហិត"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>៖"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"បាន​ផ្ញើរូបភាព"</string>
@@ -2516,4 +2526,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"ផែនទី"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"កម្មវិធី"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"លែងអាចសម្គាល់ស្នាមម្រាមដៃរបស់អ្នកបានទៀតហើយ។ សូមរៀបចំការដោះសោ​ដោយស្កេន​ស្នាមម្រាមដៃម្ដងទៀត។"</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index c65dd276be8d..1d89ad7c08e5 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"ಅನ್‌ಪಿನ್"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> ಅನ್ನು ಅನ್‌ಪಿನ್ ಮಾಡಿ"</string>
<string name="app_info" msgid="6113278084877079851">"ಆ್ಯಪ್ ಮಾಹಿತಿ"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"ಡೆಮೋ ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತಿದೆ..."</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"ಸಾಧನ ಮರುಹೊಂದಿಸಲಾಗುತ್ತಿದೆ..."</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad ನ ಎಡಭಾಗದ ಬಟನ್"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad ನ ಬಲಭಾಗದ ಬಟನ್"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad ನ ಮಧ್ಯದ ಬಟನ್"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ಅನ್ನು ನಿರ್ಬಂಧಿತ ಬಕೆಟ್‌ಗೆ ಹಾಕಲಾಗಿದೆ"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"ಚಿತ್ರವನ್ನು ಕಳುಹಿಸಲಾಗಿದೆ"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"ಆ್ಯಪ್‌ಗಳು"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"ನಿಮ್ಮ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್‌ಗಳನ್ನು ಇನ್ನು ಮುಂದೆ ಗುರುತಿಸಲಾಗುವುದಿಲ್ಲ. ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಅನ್‌ಲಾಕ್ ಅನ್ನು ಮತ್ತೊಮ್ಮೆ ಸೆಟಪ್ ಮಾಡಿ."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index a52da3c6b91e..ad1bdae6fc30 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"고정 해제"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> 고정 해제"</string>
<string name="app_info" msgid="6113278084877079851">"앱 정보"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"데모 시작 중..."</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"기기 초기화 중..."</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"방향 패드 왼쪽"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"방향 패드 오른쪽"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"방향 패드 가운데"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> 항목이 RESTRICTED 버킷으로 이동함"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"이미지 보냄"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"지도"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"애플리케이션"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"지문을 더 이상 인식할 수 없습니다. 지문 잠금 해제를 다시 설정하세요."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index ff743fc42bd3..cb4edb963c76 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Кадоодон алып коюу"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> бошотуу"</string>
<string name="app_info" msgid="6113278084877079851">"Колдонмо тууралуу"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Демо режим башталууда…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Түзмөк баштапкы абалга келтирилүүдө…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad\'дын сол баскычы"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad\'дын оң баскычы"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad\'дын ортоңку баскычы"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ЧЕКТЕЛГЕН чакага коюлган"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"сүрөт жөнөттү"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Карталар"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Колдонмолор"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Манжаңыздын изи мындан ары таанылбайт. Манжа изи менен ачуу функциясын кайрадан тууралаңыз."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index 6f32d875c2c8..4b426c818179 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"ຖອນປັກໝຸດ"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"ຖອດປັກມຸດ <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"ຂໍ້ມູນແອັບ"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"ກຳລັງເລີ່ມເດໂມ…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"ກຳລັງຣີເຊັດອຸປະກອນ…"</string>
@@ -2242,6 +2248,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad ຊ້າຍ"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad ຂວາ"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad ກາງ"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"ແຜງການຕັ້ງຄ່າປະເພດການຄລິກອັດຕະໂນມັດ"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"ຄລິກຊ້າຍ"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"ຢຸດຊົ່ວຄາວ"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"ຕຳແໜ່ງ"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ຖືກວາງໄວ້ໃນກະຕ່າ \"ຈຳກັດ\" ແລ້ວ"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"ສົ່ງຮູບແລ້ວ"</string>
@@ -2516,4 +2526,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"ແຜນທີ່"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"ແອັບພລິເຄຊັນ"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"ລະບົບບໍ່ສາມາດຈຳແນກລາຍນິ້ວມືຂອງທ່ານໄດ້ອີກຕໍ່ໄປ. ກະລຸນາຕັ້ງຄ່າການປົດລັອກດ້ວຍລາຍນິ້ວມືອີກຄັ້ງ."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 1035fed764f4..544cd4108e02 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -240,7 +240,7 @@
<string name="turn_on_radio" msgid="2961717788170634233">"Įjungti bevielį"</string>
<string name="turn_off_radio" msgid="7222573978109933360">"Išjungti bevielį"</string>
<string name="screen_lock" msgid="2072642720826409809">"Ekrano užraktas"</string>
- <string name="power_off" msgid="4111692782492232778">"Išjungiamas maitinimas"</string>
+ <string name="power_off" msgid="4111692782492232778">"Išjungti maitinimą"</string>
<string name="silent_mode_silent" msgid="5079789070221150912">"Skambutis išjungtas"</string>
<string name="silent_mode_vibrate" msgid="8821830448369552678">"Vibracija skambinant"</string>
<string name="silent_mode_ring" msgid="6039011004781526678">"Skambutis įjungtas"</string>
@@ -264,7 +264,7 @@
<string name="global_actions" product="tv" msgid="3871763739487450369">"„Android TV“ parinktys"</string>
<string name="global_actions" product="default" msgid="6410072189971495460">"Telefono parinktys"</string>
<string name="global_action_lock" msgid="6949357274257655383">"Ekrano užraktas"</string>
- <string name="global_action_power_off" msgid="4404936470711393203">"Išjungiamas maitinimas"</string>
+ <string name="global_action_power_off" msgid="4404936470711393203">"Išjungti maitinimą"</string>
<string name="global_action_power_options" msgid="1185286119330160073">"Maitinimas"</string>
<string name="global_action_restart" msgid="4678451019561687074">"Paleisti iš naujo"</string>
<string name="global_action_emergency" msgid="1387617624177105088">"Skubus atvejis"</string>
@@ -2090,6 +2090,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Atsegti"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Atsegti <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Programos informacija"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"–<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Paleidžiama demonstracinė versija…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Įrenginys nustatomas iš naujo…"</string>
@@ -2244,6 +2250,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Valdymo pultas – kairėn"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Valdymo pultas – dešinėn"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Valdymo pultas – centras"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"„<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>“ įkeltas į grupę APRIBOTA"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"išsiuntė vaizdą"</string>
@@ -2518,4 +2532,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Žemėlapiai"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Programos"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Nebegalima atpažinti jūsų piršto atspaudų. Dar kartą nustatykite atrakinimą piršto atspaudu."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index a643b9861312..02e93395237c 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -2089,6 +2089,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Atspraust"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Atspraust lietotni <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Lietotnes informācija"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Notiek demonstrācijas palaišana..."</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Notiek ierīces atiestatīšana..."</string>
@@ -2243,6 +2249,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Virzienu slēdzis — pa kreisi"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Virzienu slēdzis — pa labi"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Virzienu slēdzis — centrs"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Pakotne “<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>” ir ievietota ierobežotā kopā."</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"nosūtīts attēls"</string>
@@ -2517,4 +2531,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Lietojumprogrammas"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Jūsu pirkstu nospiedumus vairs nevar atpazīt. Vēlreiz iestatiet autorizāciju ar pirksta nospiedumu."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index f2de857dee11..df101f24f158 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Откачете"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Откачи <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Информации за апликација"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Се вклучува демонстрацијата…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Се ресетира уредот…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Навигациско копче за налево"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Навигациско копче за надесно"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Навигациско копче за средина"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> е ставен во корпата ОГРАНИЧЕНИ"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"испрати слика"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Карти"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Апликации"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Вашите отпечатоци веќе не може да се препознаат. Поставете „Отклучување со отпечаток“ повторно."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index 85dd3362990c..b5ded52f10b7 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"അൺപിൻ ചെയ്യുക"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> അൺപിൻ ചെയ്യുക"</string>
<string name="app_info" msgid="6113278084877079851">"ആപ്പ് വിവരം"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"ഡെമോ ആരംഭിക്കുന്നു…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"ഉപകരണം പുനക്രമീകരിക്കുന്നു…"</string>
@@ -2242,6 +2248,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad ലെഫ്റ്റ്"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad റൈറ്റ്"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad സെന്റർ"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"ഓട്ടോക്ലിക്ക് തരം ക്രമീകരണ പാനല്‍"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"ഇടത് ക്ലിക്ക്"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"താൽക്കാലികമായി നിർത്തുക"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"സ്ഥാനം"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> നിയന്ത്രിത ബക്കറ്റിലേക്ക് നീക്കി"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"ചിത്രം അയച്ചു"</string>
@@ -2516,4 +2526,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"ആപ്പുകൾ"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"നിങ്ങളുടെ ഫിംഗർപ്രിന്റുകൾ ഇനി തിരിച്ചറിയാനാകില്ല. ഫിംഗർപ്രിന്റ് അൺലോക്ക് വീണ്ടും സജ്ജീകരിക്കുക."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index 2c4b9f45d5e8..a61bd7fbf1da 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Unpin"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g>-г тогтоосныг болиулах"</string>
<string name="app_info" msgid="6113278084877079851">"Аппын мэдээлэл"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Жишээг эхлүүлж байна…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Төхөөрөмжийг шинэчилж байна…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad зүүн"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad баруун"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad гол"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>-г ХЯЗГААРЛАСАН сагс руу орууллаа"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"зураг илгээсэн"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Газрын зураг"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Аппликэйшн"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Таны хурууны хээг цаашид таних боломжгүй. Хурууны хээгээр түгжээ тайлахыг дахин тохируулна уу."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index 63b017a766ed..3f2e57f5163a 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -2042,7 +2042,7 @@
<string name="app_suspended_title" msgid="888873445010322650">"अ‍ॅप उपलब्ध नाही"</string>
<string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> आत्ता उपलब्ध नाही. हे <xliff:g id="APP_NAME_1">%2$s</xliff:g> कडून व्यवस्थापित केले जाते."</string>
<string name="app_suspended_more_details" msgid="211260942831587014">"अधिक जाणून घ्या"</string>
- <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"अ‍ॅप उघडा"</string>
+ <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"अ‍ॅप पुन्हा सुरू करा"</string>
<string name="work_mode_off_title" msgid="6367463960165135829">"वर्क ॲप्स पुन्हा सुरू करायची?"</string>
<string name="work_mode_turn_on" msgid="5316648862401307800">"पुन्हा सुरू करा"</string>
<string name="work_mode_emergency_call_button" msgid="6818855962881612322">"आणीबाणी"</string>
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"अनपिन करा"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> ला अनपिन करा"</string>
<string name="app_info" msgid="6113278084877079851">"अ‍ॅप माहिती"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"डेमो सुरू करत आहे..."</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"डिव्हाइस रीसेट करत आहे..."</string>
@@ -2182,7 +2188,7 @@
<string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"ही सूचना सायलंट करण्यात आली आहे. फीडबॅक देण्यासाठी टॅप करा."</string>
<string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"हा सूचनेला उच्च रँक करण्यात आले. फीडबॅक देण्यासाठी टॅप करा."</string>
<string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"या सूचनेला कमी रँक करण्यात आले. फीडबॅक देण्यासाठी टॅप करा."</string>
- <string name="nas_upgrade_notification_title" msgid="8436359459300146555">"वर्धित सूचना"</string>
+ <string name="nas_upgrade_notification_title" msgid="8436359459300146555">"वर्धित नोटिफिकेशन"</string>
<string name="nas_upgrade_notification_content" msgid="5157550369837103337">"सुचवलेल्या कृती आणि उत्तरे आता वर्धित सूचनांद्वारे दिली जातात. Android अ‍ॅडॅप्टिव्ह सूचना यांना आता सपोर्ट नाही."</string>
<string name="nas_upgrade_notification_enable_action" msgid="3046406808378726874">"ओके"</string>
<string name="nas_upgrade_notification_disable_action" msgid="3794833210043497982">"बंद करा"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad डावीकडील"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad चे उजवीकडील"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad चे मधले"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> हे प्रतिबंधित बादलीमध्ये ठेवण्यात आले आहे"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"इमेज पाठवली आहे"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"अ‍ॅप्लिकेशन"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"तुमची फिंगरप्रिंट यापुढे ओळखता येणार नाहीत. फिंगरप्रिंट अनलॉक पुन्हा सेट करा."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 5cb9defbcd3e..f9aeec485295 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Nyahsemat"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Nyahsemat <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Maklumat apl"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Memulakan tunjuk cara…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Menetapkan semula peranti…"</string>
@@ -2242,6 +2248,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad Kiri"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad Kanan"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad Tengah"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Panel tetapan jenis autoklik"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Klik kiri"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Jeda"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Kedudukan"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> telah diletakkan dalam baldi TERHAD"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"menghantar imej"</string>
@@ -2516,4 +2526,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplikasi"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Cap jari anda tidak dapat dicam lagi. Sediakan semula Buka Kunci Cap Jari."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index 76086336514f..293b316efa00 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"ဖြုတ်ပါ"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> ကို ပင်ဖြုတ်ရန်"</string>
<string name="app_info" msgid="6113278084877079851">"အက်ပ်အချက်အလက်"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"သရုပ်ပြချက်ကို စတင်နေသည်…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"စက်ပစ္စည်းကို ပြန်လည်သတ်မှတ်နေသည်…"</string>
@@ -2109,7 +2115,7 @@
<string name="time_picker_minute_label" msgid="8307452311269824553">"မိ​နစ်​"</string>
<string name="time_picker_header_text" msgid="9073802285051516688">"အချိန်သတ်မှတ်ရန်"</string>
<string name="time_picker_input_error" msgid="8386271930742451034">"မှန်ကန်သည့် အမည်တစ်ခု ထည့်ရန်"</string>
- <string name="time_picker_prompt_label" msgid="303588544656363889">"အချိန်ကို ထည့်ရန်"</string>
+ <string name="time_picker_prompt_label" msgid="303588544656363889">"အချိန်ရိုက်ထည့်ပါ"</string>
<string name="time_picker_text_input_mode_description" msgid="4761160667516611576">"အချိန်ထည့်သွင်းရန် စာသားထည့်သွင်းမှုမုဒ်သို့ ပြောင်းပါ။"</string>
<string name="time_picker_radial_mode_description" msgid="1222342577115016953">"အချိန်ထည့်သွင်းမှုအတွက် နာရီမုဒ်သို့ ပြောင်းပါ။"</string>
<string name="autofill_picker_accessibility_title" msgid="4425806874792196599">"အော်တိုဖြည့် ရွေးချယ်စရာများ"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad ဘယ်"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad ညာ"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad အလယ်"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ကို တားမြစ်ထားသော သိမ်းဆည်းမှုအတွင်းသို့ ထည့်ပြီးပါပြီ"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>-"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"ပုံပို့ထားသည်"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"အပလီကေးရှင်းများ"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"သင့်လက်ဗွေများကို မသိရှိနိုင်တော့ပါ။ ‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ ထပ်မံစနစ်ထည့်သွင်းပါ။"</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 6bd4598709e6..a79ff1e4d7bf 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Løsne"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Løsne <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Info om appen"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Starter demo …"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Tilbakestiller enheten …"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Venstre på styrepilene"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Høyre på styrepilene"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Midt på styrepilene"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> er blitt plassert i TILGANGSBEGRENSET-toppmappen"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"har sendt et bilde"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Apper"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Fingeravtrykkene dine kan ikke gjenkjennes lenger. Konfigurer opplåsing med fingeravtrykk på nytt."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index b94c2f618d6b..3f24b2773404 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"अनपिन गर्नुहोस्"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> लाई अनपिन गर्नुहोस्"</string>
<string name="app_info" msgid="6113278084877079851">"एपका बारे जानकारी"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"डेमो सुरु गर्दै…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"यन्त्रलाई रिसेट गर्दै…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad को बायाँको बटन"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad को दायाँको बटन"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad को बिचको बटन"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> लाई प्रतिबन्धित बाल्टीमा राखियो"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"फोटो पठाइयो"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"नक्सा"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"एपहरू"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"तपाईंको फिंगरप्रिन्ट अब पहिचान गर्न सकिँदैन। फिंगरप्रिन्ट अनलक फेरि सेटअप गर्नुहोस्।"</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 52d9106cebfd..38bcffab7c33 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Losmaken"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> losmaken"</string>
<string name="app_info" msgid="6113278084877079851">"App-info"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Demo starten…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Apparaat resetten…"</string>
@@ -2242,6 +2248,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"D-pad links"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"D-pad rechts"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"D-pad midden"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Deelvenster met instellingen voor het type automatisch klikken"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Klikken met de linkermuisknop"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pauzeren"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Positie"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> is in de bucket RESTRICTED geplaatst"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"heeft een afbeelding gestuurd"</string>
@@ -2516,4 +2526,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Kaarten"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Apps"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Je vingerafdrukken worden niet meer herkend. Stel Ontgrendelen met vingerafdruk opnieuw in."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index ba2560f66ae5..e99010f02be0 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"ଅନପିନ୍ କରନ୍ତୁ"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g>ରେ ଅନ୍‌ପିନ୍ କରନ୍ତୁ"</string>
<string name="app_info" msgid="6113278084877079851">"ଆପ୍‍ ସୂଚନା"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"ଡେମୋ ଆରମ୍ଭ କରାଯାଉଛି…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"ଡିଭାଇସ୍‍କୁ ରିସେଟ୍‍ କରାଯାଉଛି…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad ବାମ"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad ଡାହାଣ"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad କେନ୍ଦ୍ର"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>କୁ ପ୍ରତିବନ୍ଧିତ ବକେଟରେ ରଖାଯାଇଛି"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"ଏକ ଛବି ପଠାଯାଇଛି"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"ଆପ୍ଲିକେସନ"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"ଆପଣଙ୍କ ଟିପଚିହ୍ନକୁ ଆଉ ଚିହ୍ନଟ କରାଯାଇପାରିବ ନାହିଁ। ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ ପୁଣି ସେଟ ଅପ କରନ୍ତୁ।"</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index 2d2f9c01a4c3..63765aa11e78 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"ਅਨਪਿੰਨ ਕਰੋ"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> ਨੂੰ ਅਨਪਿੰਨ ਕਰੋ"</string>
<string name="app_info" msgid="6113278084877079851">"ਐਪ ਜਾਣਕਾਰੀ"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"ਡੈਮੋ ਚਾਲੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"ਡੀਵਾਈਸ ਰੀਸੈੱਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
@@ -2242,6 +2248,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad ਦਾ ਖੱਬੇ ਪਾਸੇ ਵਾਲਾ ਬਟਨ"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad ਦਾ ਸੱਜੇ ਪਾਸੇ ਵਾਲਾ ਬਟਨ"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad ਦਾ ਵਿਚਕਾਰਲਾ ਬਟਨ"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"ਸਵੈ-ਕਲਿੱਕ ਟਾਈਪ ਸੈਟਿੰਗ ਪੈਨਲ"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"ਖੱਬਾ-ਕਲਿੱਕ ਦਬਾਓ"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"ਰੋਕੋ"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"ਸਥਿਤੀ"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ਨੂੰ ਪ੍ਰਤਿਬੰਧਿਤ ਖਾਨੇ ਵਿੱਚ ਪਾਇਆ ਗਿਆ ਹੈ"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"ਚਿੱਤਰ ਭੇਜਿਆ ਗਿਆ"</string>
@@ -2516,4 +2526,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"ਐਪਲੀਕੇਸ਼ਨਾਂ"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"ਤੁਹਾਡੇ ਫਿੰਗਰਪ੍ਰਿੰਟਾਂ ਦੀ ਹੁਣ ਪਛਾਣ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ। ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਦਾ ਦੁਬਾਰਾ ਸੈੱਟਅੱਪ ਕਰੋ।"</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 810aa325e48a..372608d3af15 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -2090,6 +2090,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Odepnij"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Odepnij: <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"O aplikacji"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Uruchamiam tryb demo…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Resetuję urządzenie…"</string>
@@ -2244,6 +2250,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad – w lewo"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad – w prawo"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad – środek"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Umieszczono pakiet <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> w zasobniku danych RESTRICTED"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"wysłano obraz"</string>
@@ -2518,4 +2532,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Mapy"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplikacje"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Nie można już rozpoznać Twoich odcisków palców. Skonfiguruj ponownie odblokowywanie odciskiem palca."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index 91c7adc58eb3..dc5275918233 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -96,7 +96,7 @@
<string name="notification_channel_mobile_data_status" msgid="1941911162076442474">"Status dos dados móveis"</string>
<string name="notification_channel_sms" msgid="1243384981025535724">"Mensagens SMS"</string>
<string name="notification_channel_voice_mail" msgid="8457433203106654172">"Mensagens do correio de voz"</string>
- <string name="notification_channel_wfc" msgid="9048240466765169038">"Chamadas por Wi-Fi"</string>
+ <string name="notification_channel_wfc" msgid="9048240466765169038">"Ligação pelo Wi-Fi"</string>
<string name="notification_channel_sim" msgid="5098802350325677490">"Status do chip"</string>
<string name="notification_channel_sim_high_prio" msgid="642361929452850928">"Status de prioridade alta do chip"</string>
<string name="peerTtyModeFull" msgid="337553730440832160">"TTD modo COMPLETO solicitado"</string>
@@ -148,7 +148,7 @@
<string name="wfcSpnFormat_wifi_call" msgid="434016592539090004">"Ligação pelo Wi-Fi"</string>
<string name="wifi_calling_off_summary" msgid="5626710010766902560">"Desativado"</string>
<string name="wfc_mode_wifi_preferred_summary" msgid="1035175836270943089">"Chamar via Wi-Fi"</string>
- <string name="wfc_mode_cellular_preferred_summary" msgid="4958965609212575619">"Chamar via rede móvel"</string>
+ <string name="wfc_mode_cellular_preferred_summary" msgid="4958965609212575619">"Ligar via rede móvel"</string>
<string name="wfc_mode_wifi_only_summary" msgid="104951993894678665">"Somente Wi-Fi"</string>
<!-- no translation found for crossSimFormat_spn (9125246077491634262) -->
<skip />
@@ -2089,6 +2089,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Liberar guia"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Liberar <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Informações do app"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Iniciando demonstração…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Redefinindo dispositivo…"</string>
@@ -2243,6 +2249,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Botão direcional: para a esquerda"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Botão direcional: para a direita"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Botão direcional: centro"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> foi colocado no intervalo \"RESTRITO\""</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"enviou uma imagem"</string>
@@ -2517,4 +2531,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Mapas"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Apps"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"As impressões digitais não são mais reconhecidas. Configure o Desbloqueio por impressão digital de novo."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index af76e3f1ad03..1418a0b0aac2 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -2089,6 +2089,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Soltar"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Soltar <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Info. da app"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"-<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"A iniciar a demonstração…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"A repor o dispositivo…"</string>
@@ -2243,6 +2249,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Teclado direcional: para a esquerda"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Teclado direcional: para a direita"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Teclado direcional: centrar"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Painel de definições do tipo de clique automático"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Clicar com o botão esquerdo do rato"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pausar"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Posição"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> foi colocado no contentor RESTRITO."</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"enviou uma imagem"</string>
@@ -2517,4 +2527,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplicações"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Já não é possível reconhecer as suas impressões digitais. Configure o Desbloqueio por impressão digital novamente."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 91c7adc58eb3..dc5275918233 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -96,7 +96,7 @@
<string name="notification_channel_mobile_data_status" msgid="1941911162076442474">"Status dos dados móveis"</string>
<string name="notification_channel_sms" msgid="1243384981025535724">"Mensagens SMS"</string>
<string name="notification_channel_voice_mail" msgid="8457433203106654172">"Mensagens do correio de voz"</string>
- <string name="notification_channel_wfc" msgid="9048240466765169038">"Chamadas por Wi-Fi"</string>
+ <string name="notification_channel_wfc" msgid="9048240466765169038">"Ligação pelo Wi-Fi"</string>
<string name="notification_channel_sim" msgid="5098802350325677490">"Status do chip"</string>
<string name="notification_channel_sim_high_prio" msgid="642361929452850928">"Status de prioridade alta do chip"</string>
<string name="peerTtyModeFull" msgid="337553730440832160">"TTD modo COMPLETO solicitado"</string>
@@ -148,7 +148,7 @@
<string name="wfcSpnFormat_wifi_call" msgid="434016592539090004">"Ligação pelo Wi-Fi"</string>
<string name="wifi_calling_off_summary" msgid="5626710010766902560">"Desativado"</string>
<string name="wfc_mode_wifi_preferred_summary" msgid="1035175836270943089">"Chamar via Wi-Fi"</string>
- <string name="wfc_mode_cellular_preferred_summary" msgid="4958965609212575619">"Chamar via rede móvel"</string>
+ <string name="wfc_mode_cellular_preferred_summary" msgid="4958965609212575619">"Ligar via rede móvel"</string>
<string name="wfc_mode_wifi_only_summary" msgid="104951993894678665">"Somente Wi-Fi"</string>
<!-- no translation found for crossSimFormat_spn (9125246077491634262) -->
<skip />
@@ -2089,6 +2089,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Liberar guia"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Liberar <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Informações do app"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Iniciando demonstração…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Redefinindo dispositivo…"</string>
@@ -2243,6 +2249,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Botão direcional: para a esquerda"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Botão direcional: para a direita"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Botão direcional: centro"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> foi colocado no intervalo \"RESTRITO\""</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"enviou uma imagem"</string>
@@ -2517,4 +2531,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Mapas"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Apps"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"As impressões digitais não são mais reconhecidas. Configure o Desbloqueio por impressão digital de novo."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 0fcd12bfbc01..75369415e322 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -267,7 +267,7 @@
<string name="global_action_power_options" msgid="1185286119330160073">"Alimentare"</string>
<string name="global_action_restart" msgid="4678451019561687074">"Repornește"</string>
<string name="global_action_emergency" msgid="1387617624177105088">"Urgență"</string>
- <string name="global_action_bug_report" msgid="5127867163044170003">"Raport despre erori"</string>
+ <string name="global_action_bug_report" msgid="5127867163044170003">"Raport de eroare"</string>
<string name="global_action_logout" msgid="6093581310002476511">"Încheie sesiunea"</string>
<string name="global_action_screenshot" msgid="2610053466156478564">"Instantaneu"</string>
<string name="bugreport_title" msgid="8549990811777373050">"Raport de eroare"</string>
@@ -2089,6 +2089,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Anulează fixarea"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Anulează fixarea pentru <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Informații despre aplicație"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Se pornește demonstrația…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Se resetează dispozitivul…"</string>
@@ -2243,6 +2249,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad stânga"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad dreapta"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad centru"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> a fost adăugat la grupul RESTRICȚIONATE"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"a trimis o imagine"</string>
@@ -2517,4 +2531,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplicații"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"E posibil ca amprentele tale să nu mai fie recunoscute. Configurează din nou Deblocarea cu amprenta."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 85177030d45a..f35392f3911a 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -2090,6 +2090,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Открепить"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Открепить приложение \"<xliff:g id="LABEL">%1$s</xliff:g>\""</string>
<string name="app_info" msgid="6113278084877079851">"О приложении"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Запуск деморежима…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Сброс данных…"</string>
@@ -2244,6 +2250,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"D-pad – влево"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"D-pad – вправо"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"D-pad – по центру"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Панель настроек типа автонажатия"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Нажать левую кнопку"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Приостановить"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Положение"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Приложение \"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>\" помещено в категорию с ограниченным доступом."</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"Отправлено изображение"</string>
@@ -2518,4 +2528,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Карты"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Приложения"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Ваши отпечатки больше не распознаются. Настройте разблокировку по отпечатку пальца снова."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index 863f0cc18ff8..d21df4a7f702 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"ගලවන්න"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> ඇමුණුම ඉවත් කරන්න"</string>
<string name="app_info" msgid="6113278084877079851">"යෙදුම් තොරතුරු"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"ආදර්ශනය ආරම්භ කරමින්..."</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"උපාංගය යළි සකසමින්..."</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad වම"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad දකුණ"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad මැද"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> අවහිර කළ බාල්දියට දමා ඇත"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"රූපයක් එව්වා"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"සිතියම්"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"යෙදුම්"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"ඔබේ ඇඟිලි සලකුණු තවදුරටත් හඳුනාගත නොහැක. ඇඟිලි සලකුණු අගුළු හැරීම නැවත පිහිටුවන්න."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index fbb57ca0cb74..56fa73cba3fd 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -2090,6 +2090,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Uvoľniť"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Odopnúť <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Informácie o aplikácii"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"-<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Spúšťa sa ukážka…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Resetuje sa zariadenie…"</string>
@@ -2244,6 +2250,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Stlačiť tlačidlo doľava krížového ovládača"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Stlačiť tlačidlo doprava krížového ovládača"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Stlačiť stredné tlačidlo krížového ovládača"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Panel nastavení typu automatického kliknutia"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Kliknutie ľavým tlačidlom"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pozastaviť"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Pozícia"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Balík <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> bol vložený do kontajnera OBMEDZENÉ"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"odoslal(a) obrázok"</string>
@@ -2469,7 +2479,7 @@
<string name="satellite_manual_selection_state_popup_title" msgid="8545991934926661974">"Zapnite Vyberať sieť automaticky"</string>
<string name="satellite_manual_selection_state_popup_message" msgid="1928101658551382450">"Zapnite v Nastaveniach možnosť Vyberať sieť automaticky, aby telefón mohol nájsť sieť, ktorá spolupracuje so satelitom"</string>
<string name="satellite_manual_selection_state_popup_ok" msgid="2459664752624985095">"Zapnúť"</string>
- <string name="satellite_manual_selection_state_popup_cancel" msgid="973605633339469252">"Prejsť späť"</string>
+ <string name="satellite_manual_selection_state_popup_cancel" msgid="973605633339469252">"Späť"</string>
<string name="unarchival_session_app_label" msgid="6811856981546348205">"Nespracovaná…"</string>
<string name="satellite_sos_available_notification_title" msgid="5396708154268096124">"Pomoc cez satelit je teraz k dispozícii"</string>
<string name="satellite_sos_available_notification_summary" msgid="1727088812951848330">"Tiesňovej linke môžete poslať správu, keď nie je dostupná mobilná sieť ani sieť Wi‑Fi. Správy Google musíte mať nastavené ako predvolený komunikátor."</string>
@@ -2518,4 +2528,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Mapy"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplikácie"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Vaše odtlačky prstov sa už nedajú rozpoznať. Znova nastavte odomknutie odtlačkom prsta."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index 2776e1ce0404..f44f1e798068 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -1014,7 +1014,7 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Poskusite znova"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Odklenite za dostop do vseh funkcij in podatkov"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Presegli ste dovoljeno število poskusov odklepanja z obrazom"</string>
- <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Ni kartice SIM."</string>
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Ni kartice SIM"</string>
<string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"V tabličnem računalniku ni kartice SIM."</string>
<string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"V napravi Android TV ni kartice SIM."</string>
<string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"V telefonu ni kartice SIM."</string>
@@ -2090,6 +2090,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Odpenjanje"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Odpni aplikacijo <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Podatki o aplikacijah"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Začenjanje predstavitve …"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Ponastavljanje naprave …"</string>
@@ -2244,6 +2250,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Smerni gumb levo"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Smerni gumb desno"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Smerni gumb sredina"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Podokno z nastavitvami vrste samodejnega klika"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Levi klik"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Začasna zaustavitev"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Položaj"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Paket <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> je bil dodan v segment OMEJENO"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"je poslal(-a) sliko"</string>
@@ -2518,4 +2528,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Zemljevidi"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplikacije"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Vaših prstnih odtisov ni več mogoče prepoznati. Znova nastavite odklepanje s prstnim odtisom."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index 19be60047254..3739b53b32ac 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Zhgozhdo"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Zhgozhdoje <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Informacioni mbi aplikacionin"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Po nis demonstrimin..."</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Po rivendos pajisjen…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Majtas në bllokun e drejtimit"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Djathtas në bllokun e drejtimit"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Qendra e bllokut të drejtimit"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> është vendosur në grupin E KUFIZUAR"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"dërgoi një imazh"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplikacionet"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Gjurmët e tua të gishtave nuk mund të njihen më. Konfiguro përsëri \"Shkyçjen me gjurmën e gishtit\"."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index c286a65a78e7..009c27bcbb25 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -2089,6 +2089,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Откачи"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Откачи апликацију <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Информације о апликацији"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Покрећемо демонстрацију..."</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Ресетујемо уређај..."</string>
@@ -2243,6 +2249,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"налево на D-pad-у"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"надесно на D-pad-у"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"центар на D-pad-у"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Окно са подешавањима типа аутоматског клика"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Леви клик"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Паузирај"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Позиција"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Пакет <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> је додат у сегмент ОГРАНИЧЕНО"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"је послао/ла слику"</string>
@@ -2517,4 +2527,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Мапе"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Апликације"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Отисци прстију више не могу да се препознају. Поново подесите откључавање отиском прста."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index a2fcd231854c..442763ae3188 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Lossa"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Lossa <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Appinformation"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"-<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Demo startas …"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Enheten återställs …"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Styrkors, vänster"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Styrkors, höger"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Styrkors, mitten"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> har placerats i hinken RESTRICTED"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"har skickat en bild"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Appar"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Det går inte längre att känna igen dina fingeravtryck. Ställ in fingeravtryckslås igen."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 93233d91e0df..8153eb02d625 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Bandua"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Bandua <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Maelezo ya programu"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Inaanzisha onyesho..."</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Inaweka upya kifaa..."</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Kitufe cha kushoto cha Dpad"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Kitufe cha kulia cha Dpad"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Kitufe cha katikati cha Dpad"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> kimewekwa katika kikundi KILICHODHIBITIWA"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"alituma picha"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Ramani"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Programu"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Alama zako za vidole hazitambuliki tena. Weka tena mipangilio ya Kufungua kwa Alama ya Kidole."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index 8c5acd45fd12..94168418ff4d 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"பின்னை அகற்று"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> ஐப் பின் நீக்கு"</string>
<string name="app_info" msgid="6113278084877079851">"ஆப்ஸ் தகவல்"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"டெமோவைத் தொடங்குகிறது…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"சாதனத்தை மீட்டமைக்கிறது…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"இடது திசை காட்டும் பட்டன்"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"வலது திசை காட்டும் பட்டன்"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"மையப் பகுதியைக் காட்டும் பட்டன்"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> என்பதை வரம்பிடப்பட்ட பக்கெட்திற்குள் சேர்க்கப்பட்டது"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"படம் அனுப்பப்பட்டது"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"ஆப்ஸ்"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"உங்கள் கைரேகைகளை இனி அடையாளம் காண முடியாது. கைரேகை அன்லாக் அம்சத்தை மீண்டும் அமையுங்கள்."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index 8333b0bafc02..4bb85f72c1d8 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"అన్‌‌పిన్‌ ‌చేయి"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g>ను అన్‌పిన్ చేయి"</string>
<string name="app_info" msgid="6113278084877079851">"యాప్ సమాచారం"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"డెమోను ప్రారంభిస్తోంది..."</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"పరికరాన్ని రీసెట్ చేస్తోంది..."</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad ఎడమవైపున"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad కుడివైపున"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"DPad మధ్యన"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> పరిమితం చేయబడిన బకెట్‌లో ఉంచబడింది"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"ఇమేజ్‌ను పంపారు"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"అప్లికేషన్‌లు"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"మీ వేలిముద్రలను ఇకపై గుర్తించడం సాధ్యం కాదు. వేలిముద్ర అన్‌లాక్‌ను మళ్లీ సెటప్ చేయండి."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 8f8252584757..26084553817a 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"เลิกปักหมุด"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"เลิกปักหมุด <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"ข้อมูลแอป"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"กำลังเริ่มการสาธิต…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"กำลังรีเซ็ตอุปกรณ์…"</string>
@@ -2242,6 +2248,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad ซ้าย"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad ขวา"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad กึ่งกลาง"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"แผงการตั้งค่าประเภทการคลิกอัตโนมัติ"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"คลิกซ้าย"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"หยุดชั่วคราว"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"วางตำแหน่ง"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"ใส่ <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ในที่เก็บข้อมูลที่ถูกจำกัดแล้ว"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"ส่งรูปภาพ"</string>
@@ -2516,4 +2526,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"แผนที่"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"แอปพลิเคชัน"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"ระบบจะไม่จดจำลายนิ้วมือของคุณอีกต่อไป ตั้งค่าการปลดล็อกด้วยลายนิ้วมืออีกครั้ง"</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 092e15c5289f..482d7fdbb621 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"I-unpin"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"I-unpin ang <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Impormasyon ng app"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Sinisimulan ang demo…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Nire-reset ang device…"</string>
@@ -2242,6 +2248,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad Left"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad Right"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad Center"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Panel ng mga setting ng uri ng autoclick"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Mag-left click"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"I-pause"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Posisyon"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Inilagay ang <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> sa PINAGHIHIGPITANG bucket"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"nagpadala ng larawan"</string>
@@ -2516,4 +2526,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Mga Mapa"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Mga Application"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Hindi na makikilala ang iyong mga fingerprint. I-set up ulit ang Pag-unlock Gamit ang Fingerprint."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index e04ad55e395f..cb65ad72782d 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Sabitlemeyi kaldır"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> uygulamasının sabitlemesini kaldır"</string>
<string name="app_info" msgid="6113278084877079851">"Uygulama bilgileri"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Demo başlatılıyor…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Cihaz sıfırlanıyor…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad Sol"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad Sağ"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad Orta"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> KISITLANMIŞ gruba yerleştirildi"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"bir resim gönderildi"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Haritalar"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Uygulamalar"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Parmak izleriniz artık tanınamıyor. Parmak İzi Kilidi\'ni tekrar kurun."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index a78847339b15..341aff5d70b8 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -2090,6 +2090,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Відкріпити"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Відкріпити додаток <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Про додатки"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"-<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Запуск демонстрації…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Скидання налаштувань пристрою…"</string>
@@ -2244,6 +2250,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Кнопка \"вліво\" панелі керування"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Кнопка \"вправо\" панелі керування"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Центральна кнопка панелі керування"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Пакет \"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>\" додано в сегмент з обмеженнями"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"надіслано зображення"</string>
@@ -2518,4 +2532,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Карти"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Додатки"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Ваші відбитки пальців більше не розпізнаються. Налаштуйте розблокування відбитком пальця повторно."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index 7f3a2ef7ed31..ec832e67aa2f 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"پن ہٹائیں"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g> سے پن ہٹائیں"</string>
<string name="app_info" msgid="6113278084877079851">"ایپ کی معلومات"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"ڈیمو شروع ہو رہا ہے…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"آلہ ری سیٹ ہو رہا ہے…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"‏Dpad بائیں کریں"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"‏Dpad دائیں کریں"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"‏Dpad سینٹر"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> کو پابند کردہ بکٹ میں رکھ دیا گیا ہے"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"ایک تصویر بھیجی"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"نقشے"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"ایپلیکیشنز"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"آپ کے فنگر پرنٹس کو مزید پہچانا نہیں جا سکتا۔ فنگر پرنٹ اَن لاک کو دوبارہ سیٹ اپ کریں۔"</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index 9f24b987033b..e764fc293124 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Yechib olish"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Yechib olish: <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Ilova haqida"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Demo boshlanmoqda…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Qurilma asl holatga qaytarilmoqda…"</string>
@@ -2242,6 +2248,10 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad – chapga"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad – oʻngga"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad – markazga"</string>
+ <string name="accessibility_autoclick_type_settings_panel_title" msgid="7354373370578758696">"Avtomatik klik turi sozlamalari paneli"</string>
+ <string name="accessibility_autoclick_left_click" msgid="2301793352260551080">"Chap klik"</string>
+ <string name="accessibility_autoclick_pause" msgid="3272200156172573568">"Pauza"</string>
+ <string name="accessibility_autoclick_position" msgid="2933660969907663545">"Joylashuvi"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> cheklangan turkumga joylandi"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"rasm yuborildi"</string>
@@ -2516,4 +2526,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Xaritalar"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Ilovalar"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Barmoq izlaringiz endi tanilmaydi. Barmoq izi bilan ochishni qayta sozlang."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 678f3e09f123..cd89cfdaa017 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Bỏ ghim"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Bỏ ghim <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Thông tin ứng dụng"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Đang bắt đầu bản trình diễn..."</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Đang đặt lại thiết bị..."</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Chuyển sang trái bằng bàn phím di chuyển"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Chuyển sang phải bằng bàn phím di chuyển"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Căn giữa bằng bàn phím di chuyển"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Đã đưa <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> vào bộ chứa BỊ HẠN CHẾ"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"đã gửi hình ảnh"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Bản đồ"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Ứng dụng"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Hệ thống không nhận dạng được vân tay của bạn. Hãy thiết lập lại tính năng Mở khoá bằng vân tay."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-watch/styles_device_defaults.xml b/core/res/res/values-watch/styles_device_defaults.xml
index d8d424ae15c6..fb7dbb0660c5 100644
--- a/core/res/res/values-watch/styles_device_defaults.xml
+++ b/core/res/res/values-watch/styles_device_defaults.xml
@@ -37,55 +37,6 @@
<item name="layout">@layout/watch_base_error_dialog</item>
</style>
- <!-- Button Styles -->
- <!-- Material Button - Filled (primary colored) -->
- <style name="Widget.DeviceDefault.Button.Filled" parent="Widget.DeviceDefault.Button.WearMaterial3">
- <item name="android:background">@drawable/btn_background_material_filled_watch</item>
- <item name="textAppearance">@style/TextAppearance.Widget.Button.Material.Filled</item>
- </style>
-
- <!-- Material Button - Filled Tonal (Override system default button styles) -->
- <style name="Widget.DeviceDefault.Button.WearMaterial3">
- <item name="background">@drawable/btn_background_material_filled_tonal_watch</item>
- <item name="textAppearance">@style/TextAppearance.Widget.Button.Material</item>
- <item name="minHeight">@dimen/btn_material_height</item>
- <item name="maxWidth">@dimen/btn_material_width</item>
- <item name="android:paddingStart">@dimen/btn_horizontal_edge_padding</item>
- <item name="android:paddingEnd">@dimen/btn_horizontal_edge_padding</item>
- <item name="android:drawablePadding">@dimen/btn_drawable_padding</item>
- <item name="android:maxLines">2</item>
- <item name="android:ellipsize">end</item>
- <item name="android:breakStrategy">simple</item>
- <item name="stateListAnimator">@anim/button_state_list_anim_material</item>
- <item name="focusable">true</item>
- <item name="clickable">true</item>
- <item name="gravity">center_vertical</item>
- </style>
-
- <!-- Wear Material3 Button - Outlined -->
- <style name="Widget.DeviceDefault.Button.Outlined" parent="Widget.DeviceDefault.Button.WearMaterial3">
- <item name="android:background">@drawable/btn_background_material_outlined_watch</item>
- </style>
-
- <!-- Wear Material3 Button - Text -->
- <style name="Widget.DeviceDefault.Button.Text" parent="Widget.DeviceDefault.Button.WearMaterial3">
- <item name="android:background">@drawable/btn_background_material_text_watch</item>
- </style>
-
- <!-- Wear Material3 AlertDialog Styles -->
- <style name="AlertDialog.DeviceDefault.WearMaterial3">
- <item name="layout">@layout/alert_dialog_watch</item>
- </style>
-
- <!-- Wear Material3 Progress Bar style: progressed ring.-->
- <style name="Widget.DeviceDefault.ProgressBar.WearMaterial3">
- <item name="indeterminateOnly">false</item>
- <item name="progressDrawable">@drawable/progress_ring_watch</item>
- <item name="minHeight">@dimen/progress_bar_height</item>
- <item name="maxHeight">@dimen/progress_bar_height</item>
- <item name="mirrorForRtl">true</item>
- </style>
-
<style name="Widget.DeviceDefault.ProgressBar" parent="Widget.Material.ProgressBar">
<!-- Allow determinate option -->
<item name="indeterminateOnly">false</item>
diff --git a/core/res/res/values-watch/styles_material3.xml b/core/res/res/values-watch/styles_material3.xml
new file mode 100644
index 000000000000..3b5007af9c23
--- /dev/null
+++ b/core/res/res/values-watch/styles_material3.xml
@@ -0,0 +1,61 @@
+<!--
+ ~ Copyright (C) 2024 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources>
+ <style name="Widget.Material3" parent="Widget.DeviceDefault"/>
+
+ <!-- Wear Material3 Button Styles -->
+ <style name="Widget.Material3.Button">
+ <item name="background">@drawable/btn_background_material_filled_tonal_watch</item>
+ <item name="textAppearance">@style/TextAppearance.Widget.Material3.Button</item>
+ <item name="minHeight">@dimen/btn_material_height</item>
+ <item name="maxWidth">@dimen/btn_material_width</item>
+ <item name="android:paddingStart">@dimen/btn_horizontal_edge_padding</item>
+ <item name="android:paddingEnd">@dimen/btn_horizontal_edge_padding</item>
+ <item name="android:drawablePadding">@dimen/btn_drawable_padding</item>
+ <item name="android:maxLines">2</item>
+ <item name="android:ellipsize">end</item>
+ <item name="android:breakStrategy">simple</item>
+ <item name="stateListAnimator">@anim/button_state_list_anim_material</item>
+ <item name="focusable">true</item>
+ <item name="clickable">true</item>
+ <item name="gravity">center_vertical</item>
+ </style>
+
+ <!-- Wear Material3 Button - Filled (primary colored) -->
+ <style name="Widget.Material3.Button.Filled">
+ <item name="android:background">@drawable/btn_background_material_filled_watch</item>
+ <item name="textAppearance">@style/TextAppearance.Widget.Material3.Button.Filled</item>
+ </style>
+
+ <!-- Wear Material3 Button - Filled Tonal (Override system default button styles) -->
+ <style name="Widget.Material3.Button.FilledTonal"/>
+
+ <!-- Wear Material3 Button - Outlined -->
+ <style name="Widget.Material3.Button.Outlined">
+ <item name="android:background">@drawable/btn_background_material_outlined_watch</item>
+ </style>
+
+ <!-- Wear Material3 Button - Text -->
+ <style name="Widget.Material3.Button.Text">
+ <item name="android:background">@drawable/btn_background_material_text_watch</item>
+ </style>
+
+ <!-- Wear Material3 AlertDialog Styles -->
+ <style name="AlertDialog.Material3">
+ <item name="layout">@layout/alert_dialog_watch</item>
+ </style>
+</resources> \ No newline at end of file
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 7888f4749e25..d5aa069c6e8b 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"取消置顶"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"取消置顶<xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"应用信息"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"正在启动演示模式…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"正在重置设备…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"向左方向键"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"向右方向键"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"方向键中心"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> 已被放入受限存储分区"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"发送了一张图片"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"地图"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"应用"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"系统无法再识别您的指纹。请重新设置“指纹解锁”功能。"</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 0fb351d12681..91c852146be7 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"取消固定"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"取消將<xliff:g id="LABEL">%1$s</xliff:g>置頂"</string>
<string name="app_info" msgid="6113278084877079851">"應用程式資料"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"正在開始示範…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"正在重設裝置…"</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"十字鍵向左鍵"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"十字鍵向右鍵"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"十字鍵中心鍵"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> 已納入受限制的儲存區"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"已傳送圖片"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"地圖"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"應用程式"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"無法再辨識你的指紋。請重新設定「指紋解鎖」功能。"</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 9e83ce8d44c2..1a71fedeef65 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"取消固定"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"將「<xliff:g id="LABEL">%1$s</xliff:g>」取消固定"</string>
<string name="app_info" msgid="6113278084877079851">"應用程式資訊"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"正在啟動示範模式..."</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"正在重設裝置..."</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Dpad 向左移"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Dpad 向右移"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Dpad 置中"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"已將「<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>」移入受限制的值區"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"傳送了一張圖片"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"地圖"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"應用程式"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"系統無法再辨識你的指紋,請重新設定「指紋解鎖」。"</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index a2827799c252..3eb20d6da55b 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -2088,6 +2088,12 @@
<string name="unpin_target" msgid="3963318576590204447">"Susa ukuphina"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Susa ukuphina ku-<xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="app_info" msgid="6113278084877079851">"Ulwazi nge-app"</string>
+ <!-- no translation found for shortcut_group_a11y_title (2992150163811583865) -->
+ <skip />
+ <!-- no translation found for suggested_apps_group_a11y_title (2804876567839501831) -->
+ <skip />
+ <!-- no translation found for all_apps_group_a11y_title (7020352520224108745) -->
+ <skip />
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Iqalisa i-demo..."</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Isetha kabusha idivayisi..."</string>
@@ -2242,6 +2248,14 @@
<string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"Ngakwesokunxele se-Dpad"</string>
<string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"Ngakwesokudla se-Dpad"</string>
<string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"Isikhungo se-Dpad"</string>
+ <!-- no translation found for accessibility_autoclick_type_settings_panel_title (7354373370578758696) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_left_click (2301793352260551080) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_pause (3272200156172573568) -->
+ <skip />
+ <!-- no translation found for accessibility_autoclick_position (2933660969907663545) -->
+ <skip />
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"I-<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ifakwe kubhakede LOKUKHAWULELWE"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
<string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"uthumele isithombe"</string>
@@ -2516,4 +2530,12 @@
<string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Amamephu"</string>
<string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Ama-application"</string>
<string name="fingerprint_loe_notification_msg" msgid="3927447270148854546">"Isigxivizo somunwe wakho ngeke zisakwazi ukubonwa. Setha Ukuvula Ngesigxivizo Somunwe futhi."</string>
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_title (468577168569874967) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_plugged_in_when_locked_notification_text (6695268246267993166) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_title (3461195995882871461) -->
+ <skip />
+ <!-- no translation found for usb_apm_usb_suspicious_activity_notification_text (6537085605929303187) -->
+ <skip />
</resources>
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index 8c6fd1dfc47e..15230c299973 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -846,16 +846,23 @@
This enum value is introduced in API level 31. -->
<enum name="singleInstancePerTask" value="4" />
</attr>
- <!-- Specify the orientation an activity should be run in. If not
- specified, it will run in the current preferred orientation
- of the screen.
+ <!-- Specify the orientation an activity should run in. If the orientation is not specified, the
+ system determines the best orientation for the activity.
<p>This attribute is supported by the <a
href="{@docRoot}guide/topics/manifest/activity-element.html">{@code <activity>}</a>
element.
- <aside class="note"><b>Note:</b> Device manufacturers can configure devices to override
- (ignore) this attribute to improve the layout of apps. See
- <a href="{@docRoot}guide/practices/device-compatibility-mode">
- Device compatibility mode</a>.
+ <aside class="note"><b>Note:</b>
+ <ul>
+ <li>Device manufacturers can configure devices to override (ignore) this attribute
+ to improve the layout of apps.</li>
+ <li>On devices with Android 16 (API level 36) or higher installed, virtual device
+ owners (limited to select trusted and privileged apps) can configure devices
+ they manage to override (ignore) this attribute to improve app layout. See also
+ <a href="https://source.android.com/docs/core/permissions/app-streaming">
+ Companion app streaming</a>.</li>
+ </ul>
+ <p>See <a href="{@docRoot}guide/practices/device-compatibility-mode">Device
+ compatibility mode</a>.</p>
</aside> -->
<attr name="screenOrientation">
<!-- No preference specified: let the system decide the best
@@ -1474,12 +1481,19 @@
<ul>
<li>On Android 11 (API level 30) and lower, the value of
{@link android.R.attr#screenOrientation} is ignored for resizeable activities
- in multi-window mode.
+ in multi-window mode.</li>
<li>Device manufacturers can configure devices to override (ignore) this attribute
to force apps to resize. The override does not affect the app's support for
multi-window mode. See
- <a href="{@docRoot}guide/practices/device-compatibility-mode">
- Device compatibility mode</a>.
+ <a href="{@docRoot}guide/practices/device-compatibility-mode">Device
+ compatibility mode</a>.</li>
+ <li>On devices with Android 16 (API level 36) or higher installed, virtual device
+ owners (limited to select trusted and privileged apps) can configure devices
+ they manage to override (ignore) this attribute to force apps to resize. See
+ <a href="{@docRoot}guide/practices/device-compatibility-mode">Device
+ compatibility mode</a>. See also
+ <a href="https://source.android.com/docs/core/permissions/app-streaming">
+ Companion app streaming</a>.</li>
</ul>
</aside> -->
<attr name="resizeableActivity" format="boolean" />
@@ -1504,11 +1518,18 @@
<aside class="note"><b>Note:</b>
<ul>
<li>This attribute is ignored if the activity has
- {@link android.R.attr#resizeableActivity} set to {@code true}.
+ {@link android.R.attr#resizeableActivity} set to {@code true}.</li>
<li>Device manufacturers can configure devices to override (ignore) this attribute
to improve the layout of apps. See
- <a href="{@docRoot}guide/practices/device-compatibility-mode">
- Device compatibility mode</a>.
+ <a href="{@docRoot}guide/practices/device-compatibility-mode#override_any_orientation_to_user">
+ Device compatibility mode</a>.</li>
+ <li>On devices with Android 16 (API level 36) or higher installed, virtual device
+ owners (limited to select trusted and privileged apps) can configure devices
+ they manage to override (ignore) this attribute to improve app layout. See
+ <a href="{@docRoot}guide/practices/device-compatibility-mode#override_any_orientation_to_user">
+ Device compatibility mode</a>. See also
+ <a href="https://source.android.com/docs/core/permissions/app-streaming">
+ Companion app streaming</a>.</li>
</ul>
</aside> -->
<attr name="maxAspectRatio" format="float" />
@@ -1522,11 +1543,18 @@
<aside class="note"><b>Note:</b>
<ul>
<li>This attribute is ignored if the activity has
- {@link android.R.attr#resizeableActivity} set to {@code true}.
+ {@link android.R.attr#resizeableActivity} set to {@code true}.</li>
<li>Device manufacturers can configure devices to override (ignore) this attribute
to improve the layout of apps. See
- <a href="{@docRoot}guide/practices/device-compatibility-mode">
- Device compatibility mode</a>.
+ <a href="{@docRoot}guide/practices/device-compatibility-mode">Device
+ compatibility mode</a>.</li>
+ <li>On devices with Android 16 (API level 36) or higher installed, virtual device
+ owners (limited to select trusted and privileged apps) can configure devices
+ they manage to override (ignore) this attribute to improve app layout. See
+ <a href="{@docRoot}guide/practices/device-compatibility-mode">Device
+ compatibility mode</a>. See also
+ <a href="https://source.android.com/docs/core/permissions/app-streaming">
+ Companion app streaming</a>.</li>
</ul>
</aside> -->
<attr name="minAspectRatio" format="float" />
@@ -1862,9 +1890,38 @@
<enum name="sync" value="2" />
</attr>
- <!-- This attribute will be used to override app compatibility mode on 16 KB devices.
- If set to enabled, Natives lib will be extracted from APK if they are not page aligned on
- 16 KB device. 4 KB natives libs will be loaded app-compat mode if they are eligible.
+ <!-- This attribute overrides the user-set or platform-set 16 KB page size
+ compatibility mode, so that page agnostic compatibility is always enabled
+ or always disabled, rather than according to the user's preference.
+
+ <p>On 4 KB systems, this attribute is ignored and apps are installed
+ normally.
+
+ <p>On 16 KB systems, if an app is built for 16 KB page sizes, this
+ attribute is ignored and apps are installed normally.
+
+ <p>This attribute only affects 16 KB systems for apps that are built
+ with 4 KB page size (old) options.
+
+ <p>When page agnostic compatibility is enabled (either through this
+ flag or via the user's preference), the system specializes the app
+ installation process in ways known to improve compatibility of 4 KB
+ built apps on 16 KB systems. That is, apps which do not have aligned
+ libraries in APK files are extracted, requiring more space on the
+ device. An additional specialization when this option is enabled is
+ that the linker loads the application in a special mode intended
+ to allow 4 KB aligned program segments to load on a 16 KB page system.
+
+ <p>Here are the situations where this attribute should be most useful:
+ <ul>
+ <li>If an app works on 16 KB mode, but is not built for it, enabling this
+ attribute forces the app to be installed in 16 KB mode without
+ the user having to set these options themself.
+ <li>If an app is fully working in 16 KB mode, you can set this
+ attribute to disabled, so that any regression causes a clear failure
+ and this compatibility mode is not used.
+ </ul>
+
@FlaggedApi(android.content.pm.Flags.FLAG_APP_COMPAT_OPTION_16KB) -->
<attr name="pageSizeCompat">
<!-- value for enabled must match with
@@ -2572,10 +2629,6 @@
against a development branch, in which case it will only work against
the development builds. -->
<attr name="minSdkVersion" format="integer|string" />
- <!-- This is the minimum SDK major and minor version (e.g. "36.1") that
- the application requires. Verified independently of minSdkVersion.
- @FlaggedApi(android.sdk.Flags.FLAG_MAJOR_MINOR_VERSIONING_SCHEME) -->
- <attr name="minSdkVersionFull" format="string" />
<!-- This is the SDK version number that the application is targeting.
It is able to run on older versions (down to minSdkVersion), but
was explicitly tested to work with the version specified here.
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index a49e03484192..8db94a420e4c 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -1214,6 +1214,9 @@
3 - Really go to sleep and go home (don't doze)
4 - Go to home
5 - Dismiss IME if shown. Otherwise go to home
+ 6 - Lock if keyguard enabled or go to sleep (doze)
+ 7 - Dream if possible or go to sleep (doze)
+ 8 - Go to glanceable hub or dream if possible, or sleep if neither is available (doze)
-->
<integer name="config_shortPressOnPowerBehavior">1</integer>
@@ -5958,6 +5961,9 @@
<!-- <item>com.google</item> -->
</string-array>
+ <!-- Whether to restrict the accounts that raw contacts can be created in. -->
+ <bool name = "config_rawContactsAccountRestrictionEnabled">true</bool>
+
<!-- Whether or not to use assistant stream volume separately from music volume -->
<bool name="config_useAssistantVolume">false</bool>
diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml
index d6b8704a978b..484e8ef1e049 100644
--- a/core/res/res/values/dimens.xml
+++ b/core/res/res/values/dimens.xml
@@ -577,6 +577,9 @@
<dimen name="notification_text_size">14sp</dimen>
<!-- Size of notification text titles (see TextAppearance.StatusBar.EventContent.Title) -->
<dimen name="notification_title_text_size">14sp</dimen>
+ <!-- Size of notification text titles, 2025 redesign version (see TextAppearance.StatusBar.EventContent.Title) -->
+ <!-- TODO: b/378660052 - When inlining the redesign flag, this should be updated directly in TextAppearance.DeviceDefault.Notification.Title -->
+ <dimen name="notification_2025_title_text_size">16sp</dimen>
<!-- Size of big notification text titles (see TextAppearance.StatusBar.EventContent.BigTitle) -->
<dimen name="notification_big_title_text_size">16sp</dimen>
<!-- Size of smaller notification text (see TextAppearance.StatusBar.EventContent.Line2, Info, Time) -->
@@ -711,6 +714,18 @@
<!-- The minimum window size of the accessibility window magnifier -->
<dimen name="accessibility_window_magnifier_min_size">122dp</dimen>
+ <!-- The accessibility autoclick panel button spacing -->
+ <dimen name="accessibility_autoclick_type_panel_button_spacing">12dp</dimen>
+
+ <!-- The accessibility autoclick panel button width and height -->
+ <dimen name="accessibility_autoclick_type_panel_button_size">36dp</dimen>
+
+ <!-- The accessibility autoclick panel divider width -->
+ <dimen name="accessibility_autoclick_type_panel_divider_width">1dp</dimen>
+
+ <!-- The accessibility autoclick panel divider height -->
+ <dimen name="accessibility_autoclick_type_panel_divider_height">24dp</dimen>
+
<!-- Margin around the various security views -->
<dimen name="keyguard_muliuser_selector_margin">8dp</dimen>
diff --git a/core/res/res/values/public-final.xml b/core/res/res/values/public-final.xml
index d8e89318a134..af1e5123096d 100644
--- a/core/res/res/values/public-final.xml
+++ b/core/res/res/values/public-final.xml
@@ -3953,8 +3953,7 @@
<public name="pageSizeCompat" />
<!-- @FlaggedApi(android.nfc.Flags.FLAG_NFC_ASSOCIATED_ROLE_SERVICES) -->
<public name="wantsRoleHolderPriority"/>
- <!-- @FlaggedApi(android.sdk.Flags.FLAG_MAJOR_MINOR_VERSIONING_SCHEME) -->
- <public name="minSdkVersionFull"/>
+ <public name="removed_"/>
<public name="removed_" />
<public name="removed_" />
<public name="removed_" />
@@ -3980,8 +3979,6 @@
<public type="attr" name="pageSizeCompat" id="0x010106ab" />
<!-- @FlaggedApi(android.nfc.Flags.FLAG_NFC_ASSOCIATED_ROLE_SERVICES) -->
<public type="attr" name="wantsRoleHolderPriority" id="0x010106ac" />
- <!-- @FlaggedApi(android.sdk.Flags.FLAG_MAJOR_MINOR_VERSIONING_SCHEME) -->
- <public type="attr" name="minSdkVersionFull" id="0x010106ad" />
<staging-public-group-final type="string" first-id="0x01b40000">
<!-- @FlaggedApi(android.content.pm.Flags.FLAG_SDK_DEPENDENCY_INSTALLER)
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index fa4c21de682e..abbba9d1bffa 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -5744,6 +5744,16 @@
<string name="unpin_specific_target">Unpin <xliff:g id="label" example="Tweet">%1$s</xliff:g></string>
<!-- View application info for a target. -->
<string name="app_info">App info</string>
+ <!-- Accessibility announcement for the shortcut group (https://developer.android.com/training/sharing/direct-share-targets)
+ in the list of targets. [CHAR LIMIT=NONE]-->
+ <string name="shortcut_group_a11y_title">Direct share targets</string>
+ <!-- Accessibility announcement for the suggested application group in the list of targets.
+ [CHAR LIMIT=NONE] -->
+ <string name="suggested_apps_group_a11y_title">App suggestions</string>
+ <!-- Accessibility announcement for the all-applications group in the list of targets.
+ [CHAR LIMIT=NONE] -->
+ <string name="all_apps_group_a11y_title">App list</string>
+
<!-- The representation of a time duration when negative. An example is -1:14. This can be used with a countdown timer for example.-->
<string name="negative_duration">\u2212<xliff:g id="time" example="1:14">%1$s</xliff:g></string>
@@ -6149,6 +6159,24 @@
<!-- Label for Dpad center action [CHAR LIMIT=NONE] -->
<string name="accessibility_system_action_dpad_center_label">Dpad Center</string>
+ <!-- Accessibility autoclick related strings -->
+ <!-- Label for autoclick type settings panel [CHAR LIMIT=NONE] -->
+ <string name="accessibility_autoclick_type_settings_panel_title">Autoclick type settings panel</string>
+ <!-- Label for autoclick left click button [CHAR LIMIT=NONE] -->
+ <string name="accessibility_autoclick_left_click">Left click</string>
+ <!-- Label for autoclick right click button [CHAR LIMIT=NONE] -->
+ <string name="accessibility_autoclick_right_click">Right click</string>
+ <!-- Label for autoclick double click button [CHAR LIMIT=NONE] -->
+ <string name="accessibility_autoclick_double_click">Double click</string>
+ <!-- Label for autoclick drag button [CHAR LIMIT=NONE] -->
+ <string name="accessibility_autoclick_drag">Drag</string>
+ <!-- Label for autoclick scroll button [CHAR LIMIT=NONE] -->
+ <string name="accessibility_autoclick_scroll">Scroll</string>
+ <!-- Label for autoclick pause button [CHAR LIMIT=NONE] -->
+ <string name="accessibility_autoclick_pause">Pause</string>
+ <!-- Label for autoclick position button [CHAR LIMIT=NONE] -->
+ <string name="accessibility_autoclick_position">Position</string>
+
<!-- Text to tell the user that a package has been forced by themselves in the RESTRICTED bucket. [CHAR LIMIT=NONE] -->
<string name="as_app_forced_to_restricted_bucket">
<xliff:g id="package_name" example="com.android.example">%1$s</xliff:g> has been put into the RESTRICTED bucket</string>
@@ -6766,4 +6794,10 @@ ul.</string>
<!-- Fingerprint loe notification string -->
<string name="fingerprint_loe_notification_msg">Your fingerprints can no longer be recognized. Set up Fingerprint Unlock again.</string>
+
+ <!-- AdvancedProtectionService USB notifications -->
+ <string name="usb_apm_usb_plugged_in_when_locked_notification_title">USB device plugged in when locked</string>
+ <string name="usb_apm_usb_plugged_in_when_locked_notification_text">USB device is plugged in when Android is locked. To use device, please unlock Android first and then reinsert USB device to use it.</string>
+ <string name="usb_apm_usb_suspicious_activity_notification_title">Suspicious USB activity</string>
+ <string name="usb_apm_usb_suspicious_activity_notification_text">USB data signal has been disabled.</string>
</resources>
diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml
index 579dc91d2ca1..ee1edda838fd 100644
--- a/core/res/res/values/styles.xml
+++ b/core/res/res/values/styles.xml
@@ -1745,6 +1745,22 @@ please see styles_device_defaults.xml.
<item name="android:windowOptOutEdgeToEdgeEnforcement">true</item>
</style>
+ <style name="AccessibilityAutoclickPanelButtonLayoutStyle">
+ <item name="android:gravity">center</item>
+ <item name="android:background">@drawable/accessibility_autoclick_button_rounded_background</item>
+ <item name="android:layout_width">@dimen/accessibility_autoclick_type_panel_button_size</item>
+ <item name="android:layout_height">@dimen/accessibility_autoclick_type_panel_button_size</item>
+ </style>
+
+ <style name="AccessibilityAutoclickPanelImageButtonStyle">
+ <item name="android:gravity">center</item>
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:scaleType">center</item>
+ <item name="android:background">@android:color/transparent</item>
+ <item name="android:tint">@color/materialColorPrimary</item>
+ </style>
+
<!--
TODO(b/309578419): Make activities go edge-to-edge properly and then remove this.
-->
diff --git a/core/res/res/values/styles_device_defaults.xml b/core/res/res/values/styles_device_defaults.xml
index 326afba51fb2..3b2f24409a88 100644
--- a/core/res/res/values/styles_device_defaults.xml
+++ b/core/res/res/values/styles_device_defaults.xml
@@ -43,11 +43,6 @@ easier.
<item name="textAppearance">?attr/textAppearanceButton</item>
<item name="textColor">@color/btn_colored_text_material</item>
</style>
- <style name="Widget.DeviceDefault.Button.WearMaterial3"/>
- <style name="Widget.DeviceDefault.Button.WearMaterial3.Filled"/>
- <style name="Widget.DeviceDefault.Button.WearMaterial3.FilledTonal"/>
- <style name="Widget.DeviceDefault.Button.WearMaterial3.Outlined"/>
- <style name="Widget.DeviceDefault.Button.WearMaterial3.Text"/>
<style name="Widget.DeviceDefault.TextView" parent="Widget.Material.TextView" />
<style name="Widget.DeviceDefault.CheckedTextView" parent="Widget.Material.CheckedTextView"/>
<style name="Widget.DeviceDefault.AutoCompleteTextView" parent="Widget.Material.AutoCompleteTextView"/>
@@ -64,7 +59,6 @@ easier.
<style name="Widget.DeviceDefault.ProgressBar.Small" parent="Widget.Material.ProgressBar.Small"/>
<style name="Widget.DeviceDefault.ProgressBar.Small.Title" parent="Widget.Material.ProgressBar.Small.Title"/>
<style name="Widget.DeviceDefault.ProgressBar.Large" parent="Widget.Material.ProgressBar.Large"/>
- <style name="Widget.DeviceDefault.ProgressBar.WearMaterial3"/>
<style name="Widget.DeviceDefault.SeekBar" parent="Widget.Material.SeekBar"/>
<style name="Widget.DeviceDefault.RatingBar" parent="Widget.Material.RatingBar"/>
<style name="Widget.DeviceDefault.RatingBar.Indicator" parent="Widget.Material.RatingBar.Indicator"/>
@@ -435,7 +429,6 @@ easier.
<!-- AlertDialog Styles -->
<style name="AlertDialog.DeviceDefault" parent="AlertDialog.Material"/>
<style name="AlertDialog.DeviceDefault.Light" parent="AlertDialog.Material.Light"/>
- <style name="AlertDialog.DeviceDefault.WearMaterial3"/>
<!-- Animation Styles -->
<style name="Animation.DeviceDefault.Activity" parent="Animation.Material.Activity"/>
diff --git a/core/res/res/values/styles_watch.xml b/core/res/res/values/styles_watch.xml
index 3cf1f9b80fc4..61811cda8f6a 100644
--- a/core/res/res/values/styles_watch.xml
+++ b/core/res/res/values/styles_watch.xml
@@ -16,12 +16,12 @@
<resources>
<!-- TextAppearance for Wear Material3 Button - Filled -->
- <style name="TextAppearance.Widget.Button.Material.Filled">
+ <style name="TextAppearance.Widget.Material3.Button.Filled">
<item name="textColor">@color/btn_material_filled_content_color_watch</item>
</style>
<!-- TextAppearance for Wear Material3 Button - Filled Tonal -->
- <style name="TextAppearance.Widget.Button.Material" parent="TextAppearance.DeviceDefault">
+ <style name="TextAppearance.Widget.Material3.Button" parent="TextAppearance.DeviceDefault">
<item name="android:fontFamily">font-family-flex-device-default</item>
<item name="android:fontVariationSettings">"'wdth' 90, 'wght' 500, 'ROND' 100, 'opsz' 15, 'GRAD' 0"</item>
<item name="textSize">@dimen/btn_textSize</item>
@@ -29,6 +29,8 @@
<item name="lineHeight">@dimen/btn_lineHeight</item>
</style>
+ <!-- TODO(b/383898608): remove following 3 styles once UX design is settled. -->
+ <!-- Following 3 button styles are used in layout that uses icon button. -->
<style name="Widget.DeviceDefault.Button.ButtonBar.AlertDialog.WearMaterial3" parent="Widget.DeviceDefault.Button">
<item name="android:textSize">0sp</item>
<item name="android:gravity">center</item>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index aca9d30a2607..8c2ca97af493 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -574,6 +574,7 @@
<java-symbol type="dimen" name="notification_text_size" />
<java-symbol type="dimen" name="notification_title_text_size" />
<java-symbol type="dimen" name="notification_subtext_size" />
+ <java-symbol type="dimen" name="notification_2025_title_text_size" />
<java-symbol type="dimen" name="notification_top_pad" />
<java-symbol type="dimen" name="notification_top_pad_narrow" />
<java-symbol type="dimen" name="notification_top_pad_large_text" />
@@ -2411,6 +2412,8 @@
<java-symbol type="layout" name="notification_2025_template_collapsed_base" />
<java-symbol type="layout" name="notification_2025_template_expanded_base" />
<java-symbol type="layout" name="notification_2025_template_heads_up_base" />
+ <java-symbol type="layout" name="notification_2025_template_compact_heads_up_base" />
+ <java-symbol type="layout" name="notification_2025_template_compact_heads_up_messaging" />
<java-symbol type="layout" name="notification_2025_template_header" />
<java-symbol type="layout" name="notification_2025_template_collapsed_messaging" />
<java-symbol type="layout" name="notification_2025_template_collapsed_media" />
@@ -4614,6 +4617,7 @@
<java-symbol type="string" name="config_rawContactsLocalAccountName" />
<java-symbol type="string" name="config_rawContactsLocalAccountType" />
<java-symbol type="array" name="config_rawContactsEligibleDefaultAccountTypes" />
+ <java-symbol type="bool" name="config_rawContactsAccountRestrictionEnabled" />
<!-- For App Standby -->
<java-symbol type="string" name="as_app_forced_to_restricted_bucket" />
@@ -4726,6 +4730,8 @@
<java-symbol type="id" name="resolver_empty_state_container" />
<java-symbol type="id" name="button_bar_container" />
<java-symbol type="id" name="title_container" />
+ <java-symbol type="id" name="shortcuts_container" />
+ <java-symbol type="id" name="chooser_row" />
<java-symbol type="string" name="resolver_cross_profile_blocked" />
<java-symbol type="string" name="resolver_cant_share_with_work_apps_explanation" />
<java-symbol type="string" name="resolver_cant_share_with_personal_apps_explanation" />
@@ -4735,6 +4741,9 @@
<java-symbol type="string" name="resolver_no_work_apps_available" />
<java-symbol type="string" name="resolver_no_personal_apps_available" />
<java-symbol type="string" name="resolver_switch_on_work" />
+ <java-symbol type="string" name="shortcut_group_a11y_title" />
+ <java-symbol type="string" name="suggested_apps_group_a11y_title" />
+ <java-symbol type="string" name="all_apps_group_a11y_title" />
<java-symbol type="drawable" name="ic_screenshot_edit" />
<java-symbol type="dimen" name="resolver_empty_state_height" />
<java-symbol type="dimen" name="resolver_empty_state_height_with_tabs" />
@@ -5604,6 +5613,37 @@
<java-symbol type="bool" name="config_enable_a11y_fullscreen_magnification_overscroll_handler" />
<java-symbol type="dimen" name="accessibility_fullscreen_magnification_gesture_edge_slop" />
+ <!-- Accessibility autoclick related -->
+ <java-symbol type="layout" name="accessibility_autoclick_type_panel" />
+ <java-symbol type="string" name="accessibility_autoclick_type_settings_panel_title" />
+ <java-symbol type="string" name="accessibility_autoclick_left_click" />
+ <java-symbol type="string" name="accessibility_autoclick_right_click" />
+ <java-symbol type="string" name="accessibility_autoclick_double_click" />
+ <java-symbol type="string" name="accessibility_autoclick_drag" />
+ <java-symbol type="string" name="accessibility_autoclick_scroll" />
+ <java-symbol type="string" name="accessibility_autoclick_pause" />
+ <java-symbol type="string" name="accessibility_autoclick_position" />
+ <java-symbol type="dimen" name="accessibility_autoclick_type_panel_button_spacing" />
+ <java-symbol type="dimen" name="accessibility_autoclick_type_panel_button_size" />
+ <java-symbol type="dimen" name="accessibility_autoclick_type_panel_divider_height" />
+ <java-symbol type="dimen" name="accessibility_autoclick_type_panel_divider_width" />
+ <java-symbol type="id" name="accessibility_autoclick_type_panel" />
+ <java-symbol type="id" name="accessibility_autoclick_button_group_container" />
+ <java-symbol type="id" name="accessibility_autoclick_left_click_layout" />
+ <java-symbol type="id" name="accessibility_autoclick_left_click_button" />
+ <java-symbol type="id" name="accessibility_autoclick_right_click_layout" />
+ <java-symbol type="id" name="accessibility_autoclick_right_click_button" />
+ <java-symbol type="id" name="accessibility_autoclick_double_click_layout" />
+ <java-symbol type="id" name="accessibility_autoclick_double_click_button" />
+ <java-symbol type="id" name="accessibility_autoclick_drag_layout" />
+ <java-symbol type="id" name="accessibility_autoclick_drag_button" />
+ <java-symbol type="id" name="accessibility_autoclick_scroll_layout" />
+ <java-symbol type="id" name="accessibility_autoclick_scroll_button" />
+ <java-symbol type="id" name="accessibility_autoclick_pause_layout" />
+ <java-symbol type="id" name="accessibility_autoclick_pause_button" />
+ <java-symbol type="id" name="accessibility_autoclick_position_layout" />
+ <java-symbol type="id" name="accessibility_autoclick_position_button" />
+
<!-- For HapticFeedbackConstants configurability defined at HapticFeedbackCustomization -->
<java-symbol type="string" name="config_hapticFeedbackCustomizationFile" />
<java-symbol type="xml" name="haptic_feedback_customization" />
@@ -5800,11 +5840,16 @@
<!-- Default toggle for fp screen of unlcok-->
<java-symbol type="bool" name="config_screen_off_udfps_default_on" />
- <!-- Style for Wear Material3 Button. Will only be used for sdk 36 or above. -->
- <java-symbol type="style" name="Widget.DeviceDefault.Button.WearMaterial3" />
+ <!-- Style for Material3. Will only be used for sdk 36 or above. -->
+ <java-symbol type="style" name="Widget.Material3" />
+ <java-symbol type="style" name="Widget.Material3.Button" />
+ <java-symbol type="style" name="Widget.Material3.Button.Filled" />
+ <java-symbol type="style" name="Widget.Material3.Button.FilledTonal" />
+ <java-symbol type="style" name="Widget.Material3.Button.Outlined" />
+ <java-symbol type="style" name="Widget.Material3.Button.Text" />
- <!-- Style for Wear Material3 AlertDialog. Will only be used for sdk 36 or above. -->
- <java-symbol type="style" name="AlertDialog.DeviceDefault.WearMaterial3" />
+ <!-- Style for Material3 AlertDialog. Will only be used for sdk 36 or above. -->
+ <java-symbol type="style" name="AlertDialog.Material3" />
<java-symbol type="bool" name="config_allowNormalBrightnessForDozePolicy" />
@@ -5848,5 +5893,11 @@
<java-symbol type="bool" name="config_deviceSupportsWifiUsd" />
<java-symbol type="array" name="config_notificationDefaultUnsupportedAdjustments" />
+ <java-symbol type="drawable" name="ic_notification_summarization" />
+ <!-- Advanced Protection Service USB feature -->
+ <java-symbol type="string" name="usb_apm_usb_plugged_in_when_locked_notification_title" />
+ <java-symbol type="string" name="usb_apm_usb_plugged_in_when_locked_notification_text" />
+ <java-symbol type="string" name="usb_apm_usb_suspicious_activity_notification_title" />
+ <java-symbol type="string" name="usb_apm_usb_suspicious_activity_notification_text" />
</resources>
diff --git a/core/tests/coretests/src/android/app/NotificationChannelTest.java b/core/tests/coretests/src/android/app/NotificationChannelTest.java
index e4b54071e892..b1d995a2eb9d 100644
--- a/core/tests/coretests/src/android/app/NotificationChannelTest.java
+++ b/core/tests/coretests/src/android/app/NotificationChannelTest.java
@@ -69,6 +69,9 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import platform.test.runner.parameterized.ParameterizedAndroidJunit4;
+import platform.test.runner.parameterized.Parameters;
+
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
@@ -78,9 +81,6 @@ import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;
-import platform.test.runner.parameterized.ParameterizedAndroidJunit4;
-import platform.test.runner.parameterized.Parameters;
-
@RunWith(ParameterizedAndroidJunit4.class)
@UsesFlags(android.app.Flags.class)
@SmallTest
@@ -92,7 +92,8 @@ public class NotificationChannelTest {
@Parameters(name = "{0}")
public static List<FlagsParameterization> getParams() {
return FlagsParameterization.allCombinationsOf(
- Flags.FLAG_NOTIF_CHANNEL_CROP_VIBRATION_EFFECTS);
+ Flags.FLAG_NOTIF_CHANNEL_CROP_VIBRATION_EFFECTS,
+ Flags.FLAG_NOTIF_CHANNEL_ESTIMATE_EFFECT_SIZE);
}
@Rule
@@ -282,6 +283,59 @@ public class NotificationChannelTest {
}
@Test
+ @EnableFlags({Flags.FLAG_NOTIFICATION_CHANNEL_VIBRATION_EFFECT_API,
+ Flags.FLAG_NOTIF_CHANNEL_CROP_VIBRATION_EFFECTS,
+ Flags.FLAG_NOTIF_CHANNEL_ESTIMATE_EFFECT_SIZE})
+ public void testVibrationEffect_droppedIfTooLargeAndNotTrimmable() {
+ NotificationChannel channel = new NotificationChannel("id", "name", 3);
+ // populate pattern with contents
+ long[] pattern = new long[65550 / 2];
+ for (int i = 0; i < pattern.length; i++) {
+ pattern[i] = 100;
+ }
+ // repeating effects cannot be trimmed
+ VibrationEffect effect = VibrationEffect.createWaveform(pattern, 1);
+ channel.setVibrationEffect(effect);
+
+ NotificationChannel result = writeToAndReadFromParcel(channel);
+ assertThat(result.getVibrationEffect()).isNull();
+ }
+
+ @Test
+ @EnableFlags({Flags.FLAG_NOTIFICATION_CHANNEL_VIBRATION_EFFECT_API,
+ Flags.FLAG_NOTIF_CHANNEL_CROP_VIBRATION_EFFECTS,
+ Flags.FLAG_NOTIF_CHANNEL_ESTIMATE_EFFECT_SIZE})
+ public void testVibrationEffect_trimmedIfLargeAndTrimmable() {
+ NotificationChannel channel = new NotificationChannel("id", "name", 3);
+ // populate pattern with contents
+ long[] pattern = new long[65550 / 2];
+ for (int i = 0; i < pattern.length; i++) {
+ pattern[i] = 100;
+ }
+ // Effect is equivalent to the pattern
+ VibrationEffect effect = VibrationEffect.createWaveform(pattern, -1);
+ channel.setVibrationEffect(effect);
+
+ NotificationChannel result = writeToAndReadFromParcel(channel);
+ assertThat(result.getVibrationEffect()).isNotNull();
+ assertThat(result.getVibrationEffect().computeCreateWaveformOffOnTimingsOrNull()).hasLength(
+ NotificationChannel.MAX_VIBRATION_LENGTH);
+ }
+
+ @Test
+ @EnableFlags({Flags.FLAG_NOTIFICATION_CHANNEL_VIBRATION_EFFECT_API,
+ Flags.FLAG_NOTIF_CHANNEL_CROP_VIBRATION_EFFECTS,
+ Flags.FLAG_NOTIF_CHANNEL_ESTIMATE_EFFECT_SIZE})
+ public void testVibrationEffect_keptIfSmall() {
+ NotificationChannel channel = new NotificationChannel("id", "name", 3);
+ VibrationEffect effect = VibrationEffect.createOneShot(1, 100);
+ channel.setVibrationEffect(effect);
+
+ NotificationChannel result = writeToAndReadFromParcel(channel);
+ assertThat(result.getVibrationEffect()).isEqualTo(effect);
+ }
+
+ @Test
public void testRestoreSoundUri_customLookup() throws Exception {
Uri uriToBeRestoredUncanonicalized = Uri.parse("content://media/1");
Uri uriToBeRestoredCanonicalized = Uri.parse("content://media/1?title=Song&canonical=1");
diff --git a/core/tests/coretests/src/android/app/NotificationManagerTest.java b/core/tests/coretests/src/android/app/NotificationManagerTest.java
index 9b97c8feaf12..d816039d0d3c 100644
--- a/core/tests/coretests/src/android/app/NotificationManagerTest.java
+++ b/core/tests/coretests/src/android/app/NotificationManagerTest.java
@@ -51,6 +51,7 @@ import org.junit.runner.RunWith;
import java.time.Instant;
import java.time.InstantSource;
+import java.util.ArrayList;
import java.util.List;
@RunWith(AndroidJUnit4.class)
@@ -72,7 +73,7 @@ public class NotificationManagerTest {
// Caches must be in test mode in order to be used in tests.
PropertyInvalidatedCache.setTestMode(true);
- mNotificationManager.setChannelCacheToTestMode();
+ mNotificationManager.setChannelCachesToTestMode();
}
@After
@@ -347,8 +348,8 @@ public class NotificationManagerTest {
when(mNotificationManager.mBackendService.getNotificationChannels(any(), any(),
anyInt())).thenReturn(new ParceledListSlice<>(List.of(exampleChannel())));
- // ask for channels 100 times without invalidating the cache
- for (int i = 0; i < 100; i++) {
+ // ask for channels 5 times without invalidating the cache
+ for (int i = 0; i < 5; i++) {
List<NotificationChannel> unused = mNotificationManager.getNotificationChannels();
}
@@ -440,6 +441,86 @@ public class NotificationManagerTest {
}
@Test
+ @EnableFlags(Flags.FLAG_NM_BINDER_PERF_CACHE_CHANNELS)
+ public void getNotificationChannelGroup_cachedUntilInvalidated() throws Exception {
+ // Data setup: group has some channels in it
+ NotificationChannelGroup g1 = new NotificationChannelGroup("g1", "group one");
+
+ NotificationChannel nc1 = new NotificationChannel("nc1", "channel one",
+ NotificationManager.IMPORTANCE_DEFAULT);
+ nc1.setGroup("g1");
+ NotificationChannel nc2 = new NotificationChannel("nc2", "channel two",
+ NotificationManager.IMPORTANCE_DEFAULT);
+ nc2.setGroup("g1");
+
+ NotificationManager.invalidateNotificationChannelCache();
+ NotificationManager.invalidateNotificationChannelGroupCache();
+ when(mNotificationManager.mBackendService.getNotificationChannelGroupsWithoutChannels(
+ any())).thenReturn(new ParceledListSlice<>(List.of(g1)));
+
+ // getting notification channel groups also involves looking for channels
+ when(mNotificationManager.mBackendService.getNotificationChannels(any(), any(), anyInt()))
+ .thenReturn(new ParceledListSlice<>(List.of(nc1, nc2)));
+
+ // ask for group 5 times without invalidating the cache
+ for (int i = 0; i < 5; i++) {
+ NotificationChannelGroup unused = mNotificationManager.getNotificationChannelGroup(
+ "g1");
+ }
+
+ // invalidate group cache but not channels cache; then ask for groups again
+ NotificationManager.invalidateNotificationChannelGroupCache();
+ NotificationChannelGroup receivedG1 = mNotificationManager.getNotificationChannelGroup(
+ "g1");
+
+ verify(mNotificationManager.mBackendService, times(1))
+ .getNotificationChannels(any(), any(), anyInt());
+ verify(mNotificationManager.mBackendService,
+ times(2)).getNotificationChannelGroupsWithoutChannels(any());
+
+ // Also confirm that we got sensible information in the return value
+ assertThat(receivedG1).isNotNull();
+ assertThat(receivedG1.getChannels()).hasSize(2);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_NM_BINDER_PERF_CACHE_CHANNELS)
+ public void getNotificationChannelGroups_cachedUntilInvalidated() throws Exception {
+ NotificationChannelGroup g1 = new NotificationChannelGroup("g1", "group one");
+ NotificationChannelGroup g2 = new NotificationChannelGroup("g2", "group two");
+ NotificationChannel nc1 = new NotificationChannel("nc1", "channel one",
+ NotificationManager.IMPORTANCE_DEFAULT);
+ nc1.setGroup("g1");
+
+ NotificationManager.invalidateNotificationChannelCache();
+ NotificationManager.invalidateNotificationChannelGroupCache();
+ when(mNotificationManager.mBackendService.getNotificationChannelGroupsWithoutChannels(
+ any())).thenReturn(new ParceledListSlice<>(List.of(g1, g2)));
+ when(mNotificationManager.mBackendService.getNotificationChannels(any(), any(), anyInt()))
+ .thenReturn(new ParceledListSlice<>(List.of(nc1)));
+
+ // ask for groups 5 times without invalidating the cache
+ for (int i = 0; i < 5; i++) {
+ List<NotificationChannelGroup> unused =
+ mNotificationManager.getNotificationChannelGroups();
+ }
+
+ // invalidate group cache; ask again
+ NotificationManager.invalidateNotificationChannelGroupCache();
+ List<NotificationChannelGroup> result = mNotificationManager.getNotificationChannelGroups();
+
+ verify(mNotificationManager.mBackendService,
+ times(2)).getNotificationChannelGroupsWithoutChannels(any());
+
+ NotificationChannelGroup expectedG1 = g1.clone();
+ expectedG1.setChannels(List.of(nc1));
+ NotificationChannelGroup expectedG2 = g2.clone();
+ expectedG2.setChannels(new ArrayList<>());
+
+ assertThat(result).containsExactly(expectedG1, expectedG2);
+ }
+
+ @Test
@EnableFlags({Flags.FLAG_MODES_API, Flags.FLAG_MODES_UI})
public void areAutomaticZenRulesUserManaged_handheld_isTrue() {
PackageManager pm = mock(PackageManager.class);
diff --git a/core/tests/coretests/src/android/hardware/display/DisplayManagerGlobalTest.java b/core/tests/coretests/src/android/hardware/display/DisplayManagerGlobalTest.java
index dc2f0a69375d..8fa510381060 100644
--- a/core/tests/coretests/src/android/hardware/display/DisplayManagerGlobalTest.java
+++ b/core/tests/coretests/src/android/hardware/display/DisplayManagerGlobalTest.java
@@ -307,10 +307,8 @@ public class DisplayManagerGlobalTest {
assertEquals(DisplayManagerGlobal.INTERNAL_EVENT_FLAG_DISPLAY_ADDED,
mDisplayManagerGlobal
.mapFiltersToInternalEventFlag(DisplayManager.EVENT_TYPE_DISPLAY_ADDED, 0));
- assertEquals(DisplayManagerGlobal.INTERNAL_EVENT_FLAG_DISPLAY_BASIC_CHANGED,
- mDisplayManagerGlobal
- .mapFiltersToInternalEventFlag(DisplayManager.EVENT_TYPE_DISPLAY_CHANGED,
- 0));
+ assertEquals(DISPLAY_CHANGE_EVENTS, mDisplayManagerGlobal
+ .mapFiltersToInternalEventFlag(DisplayManager.EVENT_TYPE_DISPLAY_CHANGED, 0));
assertEquals(DisplayManagerGlobal.INTERNAL_EVENT_FLAG_DISPLAY_REMOVED,
mDisplayManagerGlobal.mapFiltersToInternalEventFlag(
DisplayManager.EVENT_TYPE_DISPLAY_REMOVED, 0));
diff --git a/core/tests/coretests/src/android/os/BundleTest.java b/core/tests/coretests/src/android/os/BundleTest.java
index 31e07524d777..9aac02d0d07e 100644
--- a/core/tests/coretests/src/android/os/BundleTest.java
+++ b/core/tests/coretests/src/android/os/BundleTest.java
@@ -76,7 +76,7 @@ public class BundleTest {
/**
* Create a test bundle, parcel it and return the parcel.
*/
- private Parcel createBundleParcel(boolean withFd) throws Exception {
+ private Parcel createBundleParcel(boolean withFd, boolean hasIntent) throws Exception {
final Bundle source = new Bundle();
source.putString("string", "abc");
source.putInt("int", 1);
@@ -85,13 +85,14 @@ public class BundleTest {
pipe[1].close();
source.putParcelable("fd", pipe[0]);
}
+ source.setHasIntent(hasIntent);
return getParcelledBundle(source);
}
/**
* Verify a bundle generated by {@link #createBundleParcel(boolean)}.
*/
- private void checkBundle(Bundle b, boolean withFd) {
+ private void checkBundle(Bundle b, boolean withFd, boolean hasIntent) {
// First, do the checks without actually unparceling the bundle.
// (Note looking into the contents will unparcel a bundle, so we'll do it later.)
assertTrue("mParcelledData shouldn't be null here.", b.isParcelled());
@@ -107,6 +108,8 @@ public class BundleTest {
b.mFlags & (Bundle.FLAG_HAS_FDS | Bundle.FLAG_HAS_FDS_KNOWN));
}
+ assertEquals(b.hasIntent(), hasIntent);
+
// Then, check the contents.
assertEquals("abc", b.getString("string"));
assertEquals(1, b.getInt("int"));
@@ -139,42 +142,56 @@ public class BundleTest {
withFd = false;
// new Bundle with p
- p = createBundleParcel(withFd);
- checkBundle(new Bundle(p), withFd);
+ p = createBundleParcel(withFd, false);
+ checkBundle(new Bundle(p), withFd, false);
p.recycle();
// new Bundle with p and length
- p = createBundleParcel(withFd);
+ p = createBundleParcel(withFd, false);
length = p.readInt();
- checkBundle(new Bundle(p, length), withFd);
+ checkBundle(new Bundle(p, length), withFd, false);
+ p.recycle();
+
+ // readFromParcel()
+ p = createBundleParcel(withFd, false);
+ b = new Bundle();
+ b.readFromParcel(p);
+ checkBundle(b, withFd, false);
p.recycle();
// readFromParcel()
- p = createBundleParcel(withFd);
+ p = createBundleParcel(withFd, true);
b = new Bundle();
b.readFromParcel(p);
- checkBundle(b, withFd);
+ checkBundle(b, withFd, true);
p.recycle();
// Same test with FDs.
withFd = true;
// new Bundle with p
- p = createBundleParcel(withFd);
- checkBundle(new Bundle(p), withFd);
+ p = createBundleParcel(withFd, false);
+ checkBundle(new Bundle(p), withFd, false);
p.recycle();
// new Bundle with p and length
- p = createBundleParcel(withFd);
+ p = createBundleParcel(withFd, false);
length = p.readInt();
- checkBundle(new Bundle(p, length), withFd);
+ checkBundle(new Bundle(p, length), withFd, false);
+ p.recycle();
+
+ // readFromParcel()
+ p = createBundleParcel(withFd, false);
+ b = new Bundle();
+ b.readFromParcel(p);
+ checkBundle(b, withFd, false);
p.recycle();
// readFromParcel()
- p = createBundleParcel(withFd);
+ p = createBundleParcel(withFd, true);
b = new Bundle();
b.readFromParcel(p);
- checkBundle(b, withFd);
+ checkBundle(b, withFd, true);
p.recycle();
}
@@ -486,6 +503,7 @@ public class BundleTest {
p.writeInt(131313); // Invalid type
p.writeInt(0); // Anything, really
int end = p.dataPosition();
+ p.writeBoolean(false);
p.setDataPosition(0);
return new Bundle(p, end - start);
}
diff --git a/core/tests/coretests/src/android/os/PerfettoTraceTest.java b/core/tests/coretests/src/android/os/PerfettoTraceTest.java
index 0b5a44665d2b..c5c2554c2a67 100644
--- a/core/tests/coretests/src/android/os/PerfettoTraceTest.java
+++ b/core/tests/coretests/src/android/os/PerfettoTraceTest.java
@@ -59,6 +59,8 @@ import perfetto.protos.TrackEventOuterClass.TrackEvent;
import java.util.List;
import java.util.Set;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
/**
* This class is used to test the native tracing support. Run this test
@@ -77,6 +79,8 @@ public class PerfettoTraceTest {
private static final String BAR = "bar";
private static final Category FOO_CATEGORY = new Category(FOO);
+ private static final int MESSAGE = 1234567;
+ private static final int MESSAGE_COUNT = 3;
private final Set<String> mCategoryNames = new ArraySet<>();
private final Set<String> mEventNames = new ArraySet<>();
@@ -245,7 +249,7 @@ public class PerfettoTraceTest {
PerfettoTrace.end(FOO_CATEGORY)
- .usingThreadNamedTrack(Process.myTid(), "%s-%s", "bar", "stool")
+ .usingThreadNamedTrack(Process.myTid(), "bar")
.emit();
Trace trace = Trace.parseFrom(session.close());
@@ -277,7 +281,7 @@ public class PerfettoTraceTest {
assertThat(hasTrackUuid).isTrue();
assertThat(mCategoryNames).contains(FOO);
assertThat(mTrackNames).contains(FOO);
- assertThat(mTrackNames).contains("bar-stool");
+ assertThat(mTrackNames).contains("bar");
}
@Test
@@ -335,7 +339,7 @@ public class PerfettoTraceTest {
PerfettoTrace.counter(FOO_CATEGORY, 3.14)
.usingCounterTrack(PerfettoTrace.getThreadTrackUuid(Process.myTid()),
- "%s-%s", "bar", "stool").emit();
+ "bar").emit();
Trace trace = Trace.parseFrom(session.close());
@@ -366,7 +370,7 @@ public class PerfettoTraceTest {
assertThat(hasCounterValue).isTrue();
assertThat(hasDoubleCounterValue).isTrue();
assertThat(mTrackNames).contains(FOO);
- assertThat(mTrackNames).contains("bar-stool");
+ assertThat(mTrackNames).contains("bar");
}
@Test
@@ -379,7 +383,7 @@ public class PerfettoTraceTest {
PerfettoTrace.counter(FOO_CATEGORY, 16).usingProcessCounterTrack(FOO).emit();
PerfettoTrace.counter(FOO_CATEGORY, 3.14)
- .usingThreadCounterTrack(Process.myTid(), "%s-%s", "bar", "stool").emit();
+ .usingThreadCounterTrack(Process.myTid(), "bar").emit();
Trace trace = Trace.parseFrom(session.close());
@@ -410,7 +414,7 @@ public class PerfettoTraceTest {
assertThat(hasCounterValue).isTrue();
assertThat(hasDoubleCounterValue).isTrue();
assertThat(mTrackNames).contains(FOO);
- assertThat(mTrackNames).contains("bar-stool");
+ assertThat(mTrackNames).contains("bar");
}
@Test
@@ -592,6 +596,89 @@ public class PerfettoTraceTest {
assertThat(mDebugAnnotationNames).doesNotContain("before");
}
+ @Test
+ @RequiresFlagsEnabled(android.os.Flags.FLAG_PERFETTO_SDK_TRACING_V2)
+ public void testMessageQueue() throws Exception {
+ TraceConfig traceConfig = getTraceConfig("mq");
+
+ PerfettoTrace.MQ_CATEGORY.register();
+ final HandlerThread thread = new HandlerThread("test");
+ thread.start();
+ final Handler handler = thread.getThreadHandler();
+ final CountDownLatch latch = new CountDownLatch(1);
+
+ PerfettoTrace.Session session = new PerfettoTrace.Session(true,
+ getTraceConfig("mq").toByteArray());
+
+ handler.sendEmptyMessage(MESSAGE);
+ handler.sendEmptyMessageDelayed(MESSAGE, 10);
+ handler.sendEmptyMessage(MESSAGE);
+ handler.postDelayed(() -> {
+ latch.countDown();
+ }, 10);
+ assertThat(latch.await(100, TimeUnit.MILLISECONDS)).isTrue();
+
+ byte[] traceBytes = session.close();
+
+ Trace trace = Trace.parseFrom(traceBytes);
+
+ boolean hasTrackEvent = false;
+ int instantCount = 0;
+ int counterCount = 0;
+ int beginCount = 0;
+ int endCount = 0;
+
+ Set<Long> flowIds = new ArraySet<>();
+ for (TracePacket packet: trace.getPacketList()) {
+ TrackEvent event;
+ if (packet.hasTrackEvent()) {
+ hasTrackEvent = true;
+ event = packet.getTrackEvent();
+ } else {
+ continue;
+ }
+
+ List<DebugAnnotation> annotations = event.getDebugAnnotationsList();
+ switch (event.getType()) {
+ case TrackEvent.Type.TYPE_INSTANT:
+ if (annotations.get(2).getIntValue() == MESSAGE) {
+ instantCount++;
+ assertThat(annotations.get(0).getStringValue()).isEqualTo("test");
+ assertThat(event.getFlowIdsCount()).isEqualTo(1);
+ flowIds.addAll(event.getFlowIdsList());
+ }
+ break;
+ case TrackEvent.Type.TYPE_COUNTER:
+ counterCount++;
+ break;
+ case TrackEvent.Type.TYPE_SLICE_BEGIN:
+ annotations = event.getDebugAnnotationsList();
+ if (flowIds.containsAll(event.getTerminatingFlowIdsList())) {
+ beginCount++;
+ assertThat(event.getTerminatingFlowIdsCount()).isEqualTo(1);
+ }
+ break;
+ case TrackEvent.Type.TYPE_SLICE_END:
+ endCount++;
+ break;
+ default:
+ break;
+ }
+ collectInternedData(packet);
+ }
+
+ assertThat(hasTrackEvent).isTrue();
+ assertThat(mCategoryNames).contains("mq");
+ assertThat(mEventNames).contains("message_queue_send");
+ assertThat(mEventNames).contains("message_queue_receive");
+ assertThat(mDebugAnnotationNames).contains("what");
+ assertThat(mDebugAnnotationNames).contains("delay");
+ assertThat(instantCount).isEqualTo(MESSAGE_COUNT);
+ assertThat(beginCount).isEqualTo(MESSAGE_COUNT);
+ assertThat(endCount).isAtLeast(MESSAGE_COUNT);
+ assertThat(counterCount).isAtLeast(MESSAGE_COUNT);
+ }
+
private TrackEvent getTrackEvent(Trace trace, int idx) {
int curIdx = 0;
for (TracePacket packet: trace.getPacketList()) {
diff --git a/core/tests/coretests/src/android/view/ViewFrameRateTest.java b/core/tests/coretests/src/android/view/ViewFrameRateTest.java
index 8b4f714fbf65..45f1a096aa85 100644
--- a/core/tests/coretests/src/android/view/ViewFrameRateTest.java
+++ b/core/tests/coretests/src/android/view/ViewFrameRateTest.java
@@ -26,6 +26,7 @@ import static android.view.flags.Flags.FLAG_TOOLKIT_FRAME_RATE_ANIMATION_BUGFIX_
import static android.view.flags.Flags.FLAG_TOOLKIT_FRAME_RATE_VELOCITY_MAPPING_READ_ONLY;
import static android.view.flags.Flags.FLAG_TOOLKIT_FRAME_RATE_TOUCH_BOOST_25Q1;
import static android.view.flags.Flags.FLAG_TOOLKIT_FRAME_RATE_VIEW_ENABLING_READ_ONLY;
+import static android.view.flags.Flags.FLAG_TOOLKIT_INITIAL_TOUCH_BOOST;
import static android.view.flags.Flags.FLAG_TOOLKIT_SET_FRAME_RATE_READ_ONLY;
import static android.view.flags.Flags.FLAG_VIEW_VELOCITY_API;
import static android.view.flags.Flags.toolkitFrameRateBySizeReadOnly;
@@ -34,6 +35,7 @@ import static android.view.flags.Flags.toolkitFrameRateSmallUsesPercentReadOnly;
import static junit.framework.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import android.annotation.NonNull;
@@ -180,6 +182,75 @@ public class ViewFrameRateTest {
}
@Test
+ @RequiresFlagsEnabled(FLAG_TOOLKIT_INITIAL_TOUCH_BOOST)
+ public void initialTouchBoost() throws Throwable {
+ if (!ViewProperties.vrr_enabled().orElse(true)) {
+ return;
+ }
+
+ mActivityRule.runOnUiThread(() -> {
+ ViewGroup.LayoutParams layoutParams = mMovingView.getLayoutParams();
+ layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
+ layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
+ mMovingView.setLayoutParams(layoutParams);
+ mMovingView.setOnClickListener((v) -> {});
+ });
+ waitForFrameRateCategoryToSettle();
+
+ int[] position = new int[2];
+ mActivityRule.runOnUiThread(() -> {
+ mMovingView.getLocationOnScreen(position);
+ position[0] += mMovingView.getWidth() / 2;
+ position[1] += mMovingView.getHeight() / 2;
+ });
+ final Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
+
+ assertFalse(mViewRoot.getIsTouchBoosting());
+
+ long now = SystemClock.uptimeMillis();
+ MotionEvent down = MotionEvent.obtain(
+ now, // downTime
+ now, // eventTime
+ MotionEvent.ACTION_DOWN, // action
+ position[0], // x
+ position[1], // y
+ 0 // metaState
+ );
+
+ mActivityRule.runOnUiThread(() -> {
+ mMovingView.getViewRootImpl().dispatchAppVisibility(false);
+ });
+
+ down.setSource(InputDevice.SOURCE_TOUCHSCREEN);
+ instrumentation.sendPointerSync(down);
+ down.recycle();
+
+ Thread.sleep(100);
+ // should have touch boost
+ assertTrue(mViewRoot.getIsTouchBoosting());
+
+ MotionEvent up = MotionEvent.obtain(
+ now, // downTime
+ now, // eventTime
+ MotionEvent.ACTION_UP, // action
+ position[0], // x
+ position[1], // y
+ 0 // metaState
+ );
+ up.setSource(InputDevice.SOURCE_TOUCHSCREEN);
+ instrumentation.sendPointerSync(up);
+ up.recycle();
+
+ // Should not be boosted if nothing is drawn
+ Thread.sleep(30);
+ assertFalse(mViewRoot.getIsTouchBoosting());
+
+ mActivityRule.runOnUiThread(() -> {
+ mMovingView.getViewRootImpl().dispatchAppVisibility(true);
+ });
+ }
+
+ @Test
@RequiresFlagsEnabled(FLAG_TOOLKIT_FRAME_RATE_VIEW_ENABLING_READ_ONLY)
public void inputMethodWithContentMoves() throws Throwable {
if (!ViewProperties.vrr_enabled().orElse(true)) {
diff --git a/core/tests/coretests/src/android/view/ViewRootImplTest.java b/core/tests/coretests/src/android/view/ViewRootImplTest.java
index c40137f1bd34..a289df0441e5 100644
--- a/core/tests/coretests/src/android/view/ViewRootImplTest.java
+++ b/core/tests/coretests/src/android/view/ViewRootImplTest.java
@@ -16,6 +16,8 @@
package android.view;
+import static android.app.UiModeManager.MODE_NIGHT_NO;
+import static android.app.UiModeManager.MODE_NIGHT_YES;
import static android.util.SequenceUtils.getInitSeq;
import static android.view.HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING;
import static android.view.InputDevice.SOURCE_ROTARY_ENCODER;
@@ -67,8 +69,10 @@ import static org.junit.Assume.assumeTrue;
import android.annotation.NonNull;
import android.app.Instrumentation;
import android.app.UiModeManager;
+import android.app.UiModeManager.ForceInvertType;
import android.content.Context;
import android.graphics.ForceDarkType;
+import android.graphics.ForceDarkType.ForceDarkTypeDef;
import android.graphics.Rect;
import android.hardware.display.DisplayManagerGlobal;
import android.os.Binder;
@@ -93,9 +97,12 @@ import androidx.test.filters.SmallTest;
import androidx.test.platform.app.InstrumentationRegistry;
import com.android.compatibility.common.util.ShellIdentityUtils;
+import com.android.compatibility.common.util.TestUtils;
import com.android.cts.input.BlockingQueueEventVerifier;
import com.android.window.flags.Flags;
+import com.google.common.truth.Expect;
+
import org.hamcrest.Matcher;
import org.junit.After;
import org.junit.AfterClass;
@@ -124,6 +131,8 @@ public class ViewRootImplTest {
@Rule
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+ @Rule
+ public final Expect mExpect = Expect.create();
private ViewRootImpl mViewRootImpl;
private View mView;
@@ -1507,49 +1516,34 @@ public class ViewRootImplTest {
}
@Test
- public void forceInvertOffDarkThemeOff_forceDarkModeDisabled() {
- mSetFlagsRule.enableFlags(FLAG_FORCE_INVERT_COLOR);
- ShellIdentityUtils.invokeWithShellPermissions(() -> {
- Settings.Secure.putInt(
- sContext.getContentResolver(),
- Settings.Secure.ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED,
- /* value= */ 0
- );
- var uiModeManager = sContext.getSystemService(UiModeManager.class);
- uiModeManager.setNightMode(UiModeManager.MODE_NIGHT_NO);
- });
-
- sInstrumentation.runOnMainSync(() ->
- mViewRootImpl.updateConfiguration(sContext.getDisplayNoVerify().getDisplayId())
- );
-
- assertThat(mViewRootImpl.determineForceDarkType()).isEqualTo(ForceDarkType.NONE);
- }
-
- @Test
- public void forceInvertOnDarkThemeOff_forceDarkModeEnabled() {
- mSetFlagsRule.enableFlags(FLAG_FORCE_INVERT_COLOR);
- ShellIdentityUtils.invokeWithShellPermissions(() -> {
- Settings.Secure.putInt(
- sContext.getContentResolver(),
- Settings.Secure.ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED,
- /* value= */ 1
- );
- var uiModeManager = sContext.getSystemService(UiModeManager.class);
- uiModeManager.setNightMode(UiModeManager.MODE_NIGHT_NO);
- });
-
- sInstrumentation.runOnMainSync(() ->
- mViewRootImpl.updateConfiguration(sContext.getDisplayNoVerify().getDisplayId())
- );
-
- assertThat(mViewRootImpl.determineForceDarkType())
- .isEqualTo(ForceDarkType.FORCE_INVERT_COLOR_DARK);
+ @RequiresFlagsEnabled(FLAG_FORCE_INVERT_COLOR)
+ public void updateConfiguration_returnsExpectedForceDarkMode() {
+ waitForSystemNightModeActivated(true);
+
+ verifyForceDarkType(/* isAppInNightMode= */ true, /* isForceInvertEnabled= */ true,
+ UiModeManager.FORCE_INVERT_TYPE_DARK, ForceDarkType.FORCE_INVERT_COLOR_DARK);
+ verifyForceDarkType(/* isAppInNightMode= */ true, /* isForceInvertEnabled= */ false,
+ UiModeManager.FORCE_INVERT_TYPE_OFF, ForceDarkType.NONE);
+ verifyForceDarkType(/* isAppInNightMode= */ false, /* isForceInvertEnabled= */ true,
+ UiModeManager.FORCE_INVERT_TYPE_DARK, ForceDarkType.FORCE_INVERT_COLOR_DARK);
+ verifyForceDarkType(/* isAppInNightMode= */ false, /* isForceInvertEnabled= */ false,
+ UiModeManager.FORCE_INVERT_TYPE_OFF, ForceDarkType.NONE);
+
+ waitForSystemNightModeActivated(false);
+
+ verifyForceDarkType(/* isAppInNightMode= */ true, /* isForceInvertEnabled= */ true,
+ UiModeManager.FORCE_INVERT_TYPE_OFF, ForceDarkType.NONE);
+ verifyForceDarkType(/* isAppInNightMode= */ true, /* isForceInvertEnabled= */ false,
+ UiModeManager.FORCE_INVERT_TYPE_OFF, ForceDarkType.NONE);
+ verifyForceDarkType(/* isAppInNightMode= */ false, /* isForceInvertEnabled= */ true,
+ UiModeManager.FORCE_INVERT_TYPE_OFF, ForceDarkType.NONE);
+ verifyForceDarkType(/* isAppInNightMode= */ false, /* isForceInvertEnabled= */ false,
+ UiModeManager.FORCE_INVERT_TYPE_OFF, ForceDarkType.NONE);
}
@Test
+ @EnableFlags(FLAG_FORCE_INVERT_COLOR)
public void forceInvertOffForceDarkOff_forceDarkModeDisabled() {
- mSetFlagsRule.enableFlags(FLAG_FORCE_INVERT_COLOR);
ShellIdentityUtils.invokeWithShellPermissions(() -> {
Settings.Secure.putInt(
sContext.getContentResolver(),
@@ -1562,15 +1556,14 @@ public class ViewRootImplTest {
});
sInstrumentation.runOnMainSync(() ->
- mViewRootImpl.updateConfiguration(sContext.getDisplayNoVerify().getDisplayId())
- );
+ mViewRootImpl.updateConfiguration(sContext.getDisplayNoVerify().getDisplayId()));
assertThat(mViewRootImpl.determineForceDarkType()).isEqualTo(ForceDarkType.NONE);
}
@Test
+ @EnableFlags(FLAG_FORCE_INVERT_COLOR)
public void forceInvertOffForceDarkOn_forceDarkModeEnabled() {
- mSetFlagsRule.enableFlags(FLAG_FORCE_INVERT_COLOR);
ShellIdentityUtils.invokeWithShellPermissions(() -> {
Settings.Secure.putInt(
sContext.getContentResolver(),
@@ -1582,8 +1575,7 @@ public class ViewRootImplTest {
});
sInstrumentation.runOnMainSync(() ->
- mViewRootImpl.updateConfiguration(sContext.getDisplayNoVerify().getDisplayId())
- );
+ mViewRootImpl.updateConfiguration(sContext.getDisplayNoVerify().getDisplayId()));
assertThat(mViewRootImpl.determineForceDarkType()).isEqualTo(ForceDarkType.FORCE_DARK);
}
@@ -1790,4 +1782,39 @@ public class ViewRootImplTest {
() -> view.getViewTreeObserver().removeOnDrawListener(listener));
}
}
+
+ private void waitForSystemNightModeActivated(boolean active) {
+ ShellIdentityUtils.invokeWithShellPermissions(() ->
+ sInstrumentation.runOnMainSync(() -> {
+ var uiModeManager = sContext.getSystemService(UiModeManager.class);
+ uiModeManager.setNightModeActivated(active);
+ }));
+ sInstrumentation.waitForIdleSync();
+ }
+
+ private void verifyForceDarkType(boolean isAppInNightMode, boolean isForceInvertEnabled,
+ @ForceInvertType int expectedForceInvertType,
+ @ForceDarkTypeDef int expectedForceDarkType) {
+ var uiModeManager = sContext.getSystemService(UiModeManager.class);
+ ShellIdentityUtils.invokeWithShellPermissions(() -> {
+ uiModeManager.setApplicationNightMode(
+ isAppInNightMode ? MODE_NIGHT_YES : MODE_NIGHT_NO);
+ Settings.Secure.putInt(
+ sContext.getContentResolver(),
+ Settings.Secure.ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED,
+ isForceInvertEnabled ? 1 : 0);
+ });
+
+ sInstrumentation.runOnMainSync(() ->
+ mViewRootImpl.updateConfiguration(sContext.getDisplayNoVerify().getDisplayId()));
+ try {
+ TestUtils.waitUntil("Waiting for force invert state changed",
+ () -> (uiModeManager.getForceInvertState() == expectedForceInvertType));
+ } catch (Exception e) {
+ Log.e(TAG, "Unexpected error trying to apply force invert state. " + e);
+ e.printStackTrace();
+ }
+
+ mExpect.that(mViewRootImpl.determineForceDarkType()).isEqualTo(expectedForceDarkType);
+ }
}
diff --git a/core/tests/coretests/src/com/android/internal/notification/NotificationChannelGroupsHelperTest.java b/core/tests/coretests/src/com/android/internal/notification/NotificationChannelGroupsHelperTest.java
new file mode 100644
index 000000000000..26e96ea79e4b
--- /dev/null
+++ b/core/tests/coretests/src/com/android/internal/notification/NotificationChannelGroupsHelperTest.java
@@ -0,0 +1,268 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.internal.notification;
+
+import static android.app.NotificationManager.IMPORTANCE_DEFAULT;
+import static android.app.NotificationManager.IMPORTANCE_NONE;
+
+import static com.android.internal.notification.NotificationChannelGroupsHelper.getGroupWithChannels;
+import static com.android.internal.notification.NotificationChannelGroupsHelper.getGroupsWithChannels;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.NotificationChannel;
+import android.app.NotificationChannelGroup;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.internal.notification.NotificationChannelGroupsHelper.Params;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+@RunWith(AndroidJUnit4.class)
+public class NotificationChannelGroupsHelperTest {
+ private Collection<NotificationChannel> mChannels;
+ private Map<String, NotificationChannelGroup> mGroups;
+
+ @Before
+ public void setUp() {
+ // Test data setup.
+ // Channels and their corresponding groups:
+ // * "regular": a channel that is not deleted or blocked. In group A.
+ // * "blocked": blocked channel. In group A.
+ // * "deleted": deleted channel. In group A.
+ // * "adrift": regular channel. No group.
+ // * "gone": deleted channel. No group.
+ // * "alternate": regular channel. In group B.
+ // * "another blocked": blocked channel. In group B.
+ // * "another deleted": deleted channel. In group C.
+ // * Additionally, there is an empty group D.
+ mChannels = List.of(makeChannel("regular", "a", false, false),
+ makeChannel("blocked", "a", true, false),
+ makeChannel("deleted", "a", false, true),
+ makeChannel("adrift", null, false, false),
+ makeChannel("gone", null, false, true),
+ makeChannel("alternate", "b", false, false),
+ makeChannel("anotherBlocked", "b", true, false),
+ makeChannel("anotherDeleted", "c", false, true));
+
+ mGroups = Map.of("a", new NotificationChannelGroup("a", "a"),
+ "b", new NotificationChannelGroup("b", "b"),
+ "c", new NotificationChannelGroup("c", "c"),
+ "d", new NotificationChannelGroup("d", "d"));
+ }
+
+ @Test
+ public void testGetGroup_noDeleted() {
+ NotificationChannelGroup res = getGroupWithChannels("a", mChannels, mGroups, false);
+ assertThat(res).isNotNull();
+ assertThat(res.getChannels()).hasSize(2); // "regular" & "blocked"
+ assertThat(res.getChannels()).containsExactlyElementsIn(List.of(
+ makeChannel("regular", "a", false, false),
+ makeChannel("blocked", "a", true, false)));
+ }
+
+ @Test
+ public void testGetGroup_includeDeleted() {
+ NotificationChannelGroup res = getGroupWithChannels("c", mChannels, mGroups, true);
+ assertThat(res).isNotNull();
+ assertThat(res.getChannels()).hasSize(1);
+ assertThat(res.getChannels().getFirst()).isEqualTo(
+ makeChannel("anotherDeleted", "c", false, true));
+ }
+
+ @Test
+ public void testGetGroup_empty() {
+ NotificationChannelGroup res = getGroupWithChannels("d", mChannels, mGroups, true);
+ assertThat(res).isNotNull();
+ assertThat(res.getChannels()).isEmpty();
+ }
+
+ @Test
+ public void testGetGroup_emptyBecauseNoChannelMatch() {
+ NotificationChannelGroup res = getGroupWithChannels("c", mChannels, mGroups, false);
+ assertThat(res).isNotNull();
+ assertThat(res.getChannels()).isEmpty();
+ }
+
+ @Test
+ public void testGetGroup_nonexistent() {
+ NotificationChannelGroup res = getGroupWithChannels("e", mChannels, mGroups, true);
+ assertThat(res).isNull();
+ }
+
+ @Test
+ public void testGetGroups_paramsForAllGroups() {
+ // deleted=false, nongrouped=false, empty=true, blocked=true, no channel filter
+ List<NotificationChannelGroup> res = getGroupsWithChannels(mChannels, mGroups,
+ Params.forAllGroups());
+
+ NotificationChannelGroup expectedA = new NotificationChannelGroup("a", "a");
+ expectedA.setChannels(List.of(
+ makeChannel("regular", "a", false, false),
+ makeChannel("blocked", "a", true, false)));
+
+ NotificationChannelGroup expectedB = new NotificationChannelGroup("b", "b");
+ expectedB.setChannels(List.of(
+ makeChannel("alternate", "b", false, false),
+ makeChannel("anotherBlocked", "b", true, false)));
+
+ NotificationChannelGroup expectedC = new NotificationChannelGroup("c", "c");
+ expectedC.setChannels(new ArrayList<>()); // empty, no deleted
+
+ NotificationChannelGroup expectedD = new NotificationChannelGroup("d", "d");
+ expectedD.setChannels(new ArrayList<>()); // empty
+
+ assertThat(res).containsExactly(expectedA, expectedB, expectedC, expectedD);
+ }
+
+ @Test
+ public void testGetGroups_paramsForAllChannels_noDeleted() {
+ // Excluding deleted channels to means group C is not included because it's "empty"
+ List<NotificationChannelGroup> res = getGroupsWithChannels(mChannels, mGroups,
+ Params.forAllChannels(false));
+
+ NotificationChannelGroup expectedA = new NotificationChannelGroup("a", "a");
+ expectedA.setChannels(List.of(
+ makeChannel("regular", "a", false, false),
+ makeChannel("blocked", "a", true, false)));
+
+ NotificationChannelGroup expectedB = new NotificationChannelGroup("b", "b");
+ expectedB.setChannels(List.of(
+ makeChannel("alternate", "b", false, false),
+ makeChannel("anotherBlocked", "b", true, false)));
+
+ NotificationChannelGroup expectedUngrouped = new NotificationChannelGroup(null, null);
+ expectedUngrouped.setChannels(List.of(
+ makeChannel("adrift", null, false, false),
+ makeChannel("gone", null, false, true)));
+
+ assertThat(res).containsExactly(expectedA, expectedB, expectedUngrouped);
+ }
+
+ @Test
+ public void testGetGroups_paramsForAllChannels_withDeleted() {
+ // This will get everything!
+ List<NotificationChannelGroup> res = getGroupsWithChannels(mChannels, mGroups,
+ Params.forAllChannels(true));
+
+ NotificationChannelGroup expectedA = new NotificationChannelGroup("a", "a");
+ expectedA.setChannels(List.of(
+ makeChannel("regular", "a", false, false),
+ makeChannel("blocked", "a", true, false),
+ makeChannel("deleted", "a", false, true)));
+
+ NotificationChannelGroup expectedB = new NotificationChannelGroup("b", "b");
+ expectedB.setChannels(List.of(
+ makeChannel("alternate", "b", false, false),
+ makeChannel("anotherBlocked", "b", true, false)));
+
+ NotificationChannelGroup expectedC = new NotificationChannelGroup("c", "c");
+ expectedC.setChannels(List.of(makeChannel("anotherDeleted", "c", false, true)));
+
+ // no D, because D is empty
+
+ NotificationChannelGroup expectedUngrouped = new NotificationChannelGroup(null, null);
+ expectedUngrouped.setChannels(List.of(makeChannel("adrift", null, false, false)));
+
+ assertThat(res).containsExactly(expectedA, expectedB, expectedC, expectedUngrouped);
+ }
+
+ @Test
+ public void testGetGroups_onlySpecifiedOrBlocked() {
+ Set<String> filter = Set.of("regular", "blocked", "adrift", "anotherDeleted");
+
+ // also not including deleted channels to check intersection of those params
+ List<NotificationChannelGroup> res = getGroupsWithChannels(mChannels, mGroups,
+ Params.onlySpecifiedOrBlockedChannels(filter));
+
+ NotificationChannelGroup expectedA = new NotificationChannelGroup("a", "a");
+ expectedA.setChannels(List.of(
+ makeChannel("regular", "a", false, false),
+ makeChannel("blocked", "a", true, false)));
+
+ // While nothing matches the filter from group B, includeBlocked=true means all blocked
+ // channels are included even if they are not in the filter.
+ NotificationChannelGroup expectedB = new NotificationChannelGroup("b", "b");
+ expectedB.setChannels(List.of(makeChannel("anotherBlocked", "b", true, false)));
+
+ NotificationChannelGroup expectedC = new NotificationChannelGroup("c", "c");
+ expectedC.setChannels(new ArrayList<>()); // deleted channel not included
+
+ NotificationChannelGroup expectedD = new NotificationChannelGroup("d", "d");
+ expectedD.setChannels(new ArrayList<>()); // empty
+
+ NotificationChannelGroup expectedUngrouped = new NotificationChannelGroup(null, null);
+ expectedUngrouped.setChannels(List.of(makeChannel("adrift", null, false, false)));
+
+ assertThat(res).containsExactly(expectedA, expectedB, expectedC, expectedD,
+ expectedUngrouped);
+ }
+
+
+ @Test
+ public void testGetGroups_noBlockedWithFilter() {
+ Set<String> filter = Set.of("regular", "blocked", "adrift");
+
+ // The includeBlocked setting only takes effect if there is a channel filter.
+ List<NotificationChannelGroup> res = getGroupsWithChannels(mChannels, mGroups,
+ new Params(true, true, true, false, filter));
+
+ // Even though includeBlocked=false, "blocked" is included because it's explicitly specified
+ // by the channel filter.
+ NotificationChannelGroup expectedA = new NotificationChannelGroup("a", "a");
+ expectedA.setChannels(List.of(
+ makeChannel("regular", "a", false, false),
+ makeChannel("blocked", "a", true, false)));
+
+ NotificationChannelGroup expectedB = new NotificationChannelGroup("b", "b");
+ expectedB.setChannels(new ArrayList<>()); // no matches; blocked channel not in filter
+
+ NotificationChannelGroup expectedC = new NotificationChannelGroup("c", "c");
+ expectedC.setChannels(new ArrayList<>()); // no matches
+
+ NotificationChannelGroup expectedD = new NotificationChannelGroup("d", "d");
+ expectedD.setChannels(new ArrayList<>()); // empty
+
+ NotificationChannelGroup expectedUngrouped = new NotificationChannelGroup(null, null);
+ expectedUngrouped.setChannels(List.of(makeChannel("adrift", null, false, false)));
+
+ assertThat(res).containsExactly(expectedA, expectedB, expectedC, expectedD,
+ expectedUngrouped);
+ }
+
+ private NotificationChannel makeChannel(String id, String groupId, boolean blocked,
+ boolean deleted) {
+ NotificationChannel c = new NotificationChannel(id, id,
+ blocked ? IMPORTANCE_NONE : IMPORTANCE_DEFAULT);
+ if (deleted) {
+ c.setDeleted(true);
+ }
+ if (groupId != null) {
+ c.setGroup(groupId);
+ }
+ return c;
+ }
+}
diff --git a/core/tests/coretests/src/com/android/internal/notification/OWNERS b/core/tests/coretests/src/com/android/internal/notification/OWNERS
new file mode 100644
index 000000000000..396fd1213aca
--- /dev/null
+++ b/core/tests/coretests/src/com/android/internal/notification/OWNERS
@@ -0,0 +1 @@
+include /services/core/java/com/android/server/notification/OWNERS
diff --git a/core/tests/coretests/src/com/android/internal/util/RateLimitingCacheTest.java b/core/tests/coretests/src/com/android/internal/util/RateLimitingCacheTest.java
index 7541a844c1da..52ff79da26ea 100644
--- a/core/tests/coretests/src/com/android/internal/util/RateLimitingCacheTest.java
+++ b/core/tests/coretests/src/com/android/internal/util/RateLimitingCacheTest.java
@@ -18,11 +18,15 @@ package com.android.internal.util;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import android.os.SystemClock;
import androidx.test.runner.AndroidJUnit4;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.CountDownLatch;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -40,7 +44,7 @@ public class RateLimitingCacheTest {
mCounter = -1;
}
- RateLimitingCache.ValueFetcher<Integer> mFetcher = () -> {
+ private final RateLimitingCache.ValueFetcher<Integer> mFetcher = () -> {
return ++mCounter;
};
@@ -50,13 +54,13 @@ public class RateLimitingCacheTest {
*/
@Test
public void testTtl_Zero() {
- RateLimitingCache<Integer> s = new RateLimitingCache<>(0);
+ TestRateLimitingCache<Integer> s = new TestRateLimitingCache<>(0);
int first = s.get(mFetcher);
assertEquals(first, 0);
int second = s.get(mFetcher);
assertEquals(second, 1);
- SystemClock.sleep(20);
+ s.advanceTime(20);
int third = s.get(mFetcher);
assertEquals(third, 2);
}
@@ -67,14 +71,14 @@ public class RateLimitingCacheTest {
*/
@Test
public void testTtl_100() {
- RateLimitingCache<Integer> s = new RateLimitingCache<>(100);
+ TestRateLimitingCache<Integer> s = new TestRateLimitingCache<>(100);
int first = s.get(mFetcher);
assertEquals(first, 0);
int second = s.get(mFetcher);
// Too early to change
assertEquals(second, 0);
- SystemClock.sleep(150);
+ s.advanceTime(150);
int third = s.get(mFetcher);
// Changed by now
assertEquals(third, 1);
@@ -89,11 +93,11 @@ public class RateLimitingCacheTest {
*/
@Test
public void testTtl_Negative() {
- RateLimitingCache<Integer> s = new RateLimitingCache<>(-1);
+ TestRateLimitingCache<Integer> s = new TestRateLimitingCache<>(-1);
int first = s.get(mFetcher);
assertEquals(first, 0);
- SystemClock.sleep(200);
+ s.advanceTime(200);
// Should return the original value every time
int second = s.get(mFetcher);
assertEquals(second, 0);
@@ -105,7 +109,7 @@ public class RateLimitingCacheTest {
*/
@Test
public void testTtl_Spam() {
- RateLimitingCache<Integer> s = new RateLimitingCache<>(100);
+ TestRateLimitingCache<Integer> s = new TestRateLimitingCache<>(100);
assertCount(s, 1000, 7, 15);
}
@@ -115,25 +119,147 @@ public class RateLimitingCacheTest {
*/
@Test
public void testRate_10hz() {
- RateLimitingCache<Integer> s = new RateLimitingCache<>(1000, 10);
+ TestRateLimitingCache<Integer> s = new TestRateLimitingCache<>(1000, 10);
// At 10 per second, 2 seconds should not exceed about 30, assuming overlap into left and
// right windows that allow 10 each
assertCount(s, 2000, 20, 33);
}
/**
- * Test that using a different timebase works correctly.
+ * Exercises concurrent access to the cache.
*/
@Test
- public void testTimebase() {
- RateLimitingCache<Integer> s = new RateLimitingCache<>(1000, 10) {
+ public void testMultipleThreads() throws InterruptedException {
+ final long periodMillis = 1000;
+ final int maxCountPerPeriod = 10;
+ final RateLimitingCache<Integer> s =
+ new RateLimitingCache<>(periodMillis, maxCountPerPeriod);
+
+ Thread t1 = new Thread(() -> {
+ for (int i = 0; i < 100; i++) {
+ s.get(mFetcher);
+ }
+ });
+ Thread t2 = new Thread(() -> {
+ for (int i = 0; i < 100; i++) {
+ s.get(mFetcher);
+ }
+ });
+
+ final long startTimeMillis = SystemClock.elapsedRealtime();
+ t1.start();
+ t2.start();
+ t1.join();
+ t2.join();
+ final long endTimeMillis = SystemClock.elapsedRealtime();
+
+ final long periodsElapsed = 1 + ((endTimeMillis - startTimeMillis) / periodMillis);
+ final long expected = Math.min(100 + 100, periodsElapsed * maxCountPerPeriod) - 1;
+ assertEquals(mCounter, expected);
+ }
+
+ /**
+ * Multiple threads calling get() on the cache while the cached value is stale are allowed
+ * to fetch, regardless of the rate limiting.
+ * This is to prevent a slow getting thread from blocking other threads from getting a fresh
+ * value.
+ */
+ @Test
+ public void testMultipleThreads_oneThreadIsSlow() throws InterruptedException {
+ final long periodMillis = 1000;
+ final int maxCountPerPeriod = 1;
+ final RateLimitingCache<Integer> s =
+ new RateLimitingCache<>(periodMillis, maxCountPerPeriod);
+
+ final CountDownLatch latch1 = new CountDownLatch(2);
+ final CountDownLatch latch2 = new CountDownLatch(1);
+ final AtomicInteger counter = new AtomicInteger();
+ final RateLimitingCache.ValueFetcher<Integer> fetcher = () -> {
+ latch1.countDown();
+ try {
+ latch2.await();
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ return counter.incrementAndGet();
+ };
+
+ Thread t1 = new Thread(() -> {
+ for (int i = 0; i < 100; i++) {
+ s.get(fetcher);
+ }
+ });
+ Thread t2 = new Thread(() -> {
+ for (int i = 0; i < 100; i++) {
+ s.get(fetcher);
+ }
+ });
+
+ t1.start();
+ t2.start();
+ // Both threads should be admitted to fetch because there is no fresh cached value,
+ // even though this exceeds the rate limit of at most 1 call per period.
+ // Wait for both threads to be fetching.
+ latch1.await();
+ // Allow the fetcher to return.
+ latch2.countDown();
+ // Wait for both threads to finish their fetches.
+ t1.join();
+ t2.join();
+
+ assertEquals(counter.get(), 2);
+ }
+
+ /**
+ * Even if multiple threads race to refresh the cache, only one thread gets to set a new value.
+ * This ensures, among other things, that the cache never returns values that were fetched out
+ * of order.
+ */
+ @Test
+ public void testMultipleThreads_cachedValueNeverGoesBackInTime() throws InterruptedException {
+ final long periodMillis = 10;
+ final int maxCountPerPeriod = 3;
+ final RateLimitingCache<Integer> s =
+ new RateLimitingCache<>(periodMillis, maxCountPerPeriod);
+ final AtomicInteger counter = new AtomicInteger();
+ final RateLimitingCache.ValueFetcher<Integer> fetcher = () -> {
+ // Note that this fetcher has a side effect, which is strictly not allowed for
+ // RateLimitingCache users, but we make an exception for the purpose of this test.
+ return counter.incrementAndGet();
+ };
+
+ // Make three threads that spin on getting from the cache
+ final AtomicBoolean shouldRun = new AtomicBoolean(true);
+ Runnable worker = new Runnable() {
@Override
- protected long getTime() {
- return SystemClock.elapsedRealtime() / 2;
+ public void run() {
+ while (shouldRun.get()) {
+ s.get(fetcher);
+ }
}
};
- // Timebase is moving at half the speed, so only allows for 1 second worth in 2 seconds.
- assertCount(s, 2000, 10, 22);
+ Thread t1 = new Thread(worker);
+ Thread t2 = new Thread(worker);
+ Thread t3 = new Thread(worker);
+ t1.start();
+ t2.start();
+ t3.start();
+
+ // Get values until a sufficiently convincing high value while ensuring that values are
+ // monotonically non-decreasing.
+ int lastSeen = 0;
+ while (lastSeen < 10000) {
+ int value = s.get(fetcher);
+ if (value < lastSeen) {
+ fail("Unexpectedly saw decreasing value " + value + " after " + lastSeen);
+ }
+ lastSeen = value;
+ }
+
+ shouldRun.set(false);
+ t1.join();
+ t2.join();
+ t3.join();
}
/**
@@ -144,15 +270,36 @@ public class RateLimitingCacheTest {
* @param minCount the lower end of the expected number of fetches, with a margin for error
* @param maxCount the higher end of the expected number of fetches, with a margin for error
*/
- private void assertCount(RateLimitingCache<Integer> cache, long period,
+ private void assertCount(TestRateLimitingCache<Integer> cache, long period,
int minCount, int maxCount) {
- long startTime = SystemClock.elapsedRealtime();
- while (SystemClock.elapsedRealtime() < startTime + period) {
+ long startTime = cache.getTime();
+ while (cache.getTime() < startTime + period) {
int value = cache.get(mFetcher);
- SystemClock.sleep(5);
+ cache.advanceTime(5);
}
int latest = cache.get(mFetcher);
assertTrue("Latest should be between " + minCount + " and " + maxCount
+ " but is " + latest, latest <= maxCount && latest >= minCount);
}
+
+ private static class TestRateLimitingCache<Value> extends RateLimitingCache<Value> {
+ private long mTime;
+
+ public TestRateLimitingCache(long periodMillis) {
+ super(periodMillis);
+ }
+
+ public TestRateLimitingCache(long periodMillis, int count) {
+ super(periodMillis, count);
+ }
+
+ public void advanceTime(long time) {
+ mTime += time;
+ }
+
+ @Override
+ public long getTime() {
+ return mTime;
+ }
+ }
}
diff --git a/core/tests/overlaytests/host/src/com/android/server/om/hosttest/InstallOverlayTests.java b/core/tests/overlaytests/host/src/com/android/server/om/hosttest/InstallOverlayTests.java
index 36c73e2e979e..c42ddd3412be 100644
--- a/core/tests/overlaytests/host/src/com/android/server/om/hosttest/InstallOverlayTests.java
+++ b/core/tests/overlaytests/host/src/com/android/server/om/hosttest/InstallOverlayTests.java
@@ -44,8 +44,11 @@ public class InstallOverlayTests extends BaseHostJUnit4Test {
"com.android.server.om.hosttest.update_overlay_test";
private static final String DEVICE_TEST_CLS = DEVICE_TEST_PKG + ".UpdateOverlayTest";
+ private int mCurrentUserid;
+
@Before
public void ensureNoOverlays() throws Exception {
+ mCurrentUserid = getDevice().getCurrentUser();
// Make sure we're starting with a clean slate.
for (String pkg : ALL_PACKAGES) {
assertFalse(pkg + " should not be installed", isPackageInstalled(pkg));
@@ -62,7 +65,7 @@ public class InstallOverlayTests extends BaseHostJUnit4Test {
@After
public void uninstallOverlays() throws Exception {
for (String pkg : ALL_PACKAGES) {
- uninstallPackage(pkg);
+ getDevice().uninstallPackageForUser(pkg, mCurrentUserid);
}
}
@@ -166,7 +169,7 @@ public class InstallOverlayTests extends BaseHostJUnit4Test {
installPackage("OverlayHostTests_AppOverlayV1.apk");
assertTrue(getDevice().executeShellCommand("cat /data/system/overlays.xml")
.contains(APP_OVERLAY_PACKAGE_NAME));
- uninstallPackage(APP_OVERLAY_PACKAGE_NAME);
+ getDevice().uninstallPackageForUser(APP_OVERLAY_PACKAGE_NAME, mCurrentUserid);
delay();
assertFalse(getDevice().executeShellCommand("cat /data/system/overlays.xml")
.contains(APP_OVERLAY_PACKAGE_NAME));
@@ -200,12 +203,12 @@ public class InstallOverlayTests extends BaseHostJUnit4Test {
}
private void installPackage(String pkg) throws Exception {
- super.installPackage(pkg);
+ super.installPackageAsUser(pkg, true /* grantPermission */, mCurrentUserid);
delay();
}
private void installInstantPackage(String pkg) throws Exception {
- super.installPackage(pkg, "--instant");
+ super.installPackageAsUser(pkg, true /* grantPermission */, mCurrentUserid, "--instant");
delay();
}
diff --git a/data/etc/OWNERS b/data/etc/OWNERS
index 85dae631cac3..712042f6ff6b 100644
--- a/data/etc/OWNERS
+++ b/data/etc/OWNERS
@@ -5,7 +5,6 @@ hackbod@android.com
hackbod@google.com
jeffv@google.com
jsharkey@android.com
-jsharkey@google.com
lorenzo@google.com
yamasani@google.com
diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml
index b8059d08756a..15f70298198f 100644
--- a/data/etc/privapp-permissions-platform.xml
+++ b/data/etc/privapp-permissions-platform.xml
@@ -259,6 +259,7 @@ applications that come with the platform
<permission name="android.permission.MODIFY_DAY_NIGHT_MODE"/>
<permission name="android.permission.ACCESS_LOWPAN_STATE"/>
<permission name="android.permission.BACKUP"/>
+ <permission name="android.permission.ENTER_TRADE_IN_MODE"/>
<!-- Needed for GMSCore Location API test only -->
<permission name="android.permission.LOCATION_BYPASS"/>
<!-- Needed for test only -->
@@ -294,6 +295,8 @@ applications that come with the platform
<permission name="android.permission.INSTALL_PACKAGE_UPDATES"/>
<permission name="android.permission.KILL_ALL_BACKGROUND_PROCESSES"/>
<!-- Needed for test only -->
+ <permission name="android.permission.LISTEN_FOR_KEY_ACTIVITY" />
+ <!-- Needed for test only -->
<permission name="android.permission.ACCESS_MTP"/>
<!-- Needed for test only -->
<permission name="android.permission.INTERACT_ACROSS_PROFILES"/>
@@ -594,7 +597,6 @@ applications that come with the platform
<!-- Permission required for CTS test - FileIntegrityManagerTest -->
<permission name="android.permission.SETUP_FSVERITY" />
<!-- Permissions required for CTS test - AppFunctionManagerTest -->
- <permission name="android.permission.EXECUTE_APP_FUNCTIONS_TRUSTED" />
<permission name="android.permission.EXECUTE_APP_FUNCTIONS" />
<!-- Permission required for CTS test - CtsNfcTestCases -->
<permission name="android.permission.NFC_SET_CONTROLLER_ALWAYS_ON" />
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/WindowExtensionsImpl.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/WindowExtensionsImpl.java
index fcf3a3759f7a..de3146e5bd11 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/WindowExtensionsImpl.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/WindowExtensionsImpl.java
@@ -85,10 +85,7 @@ class WindowExtensionsImpl implements WindowExtensions {
if (Flags.wlinfoOncreate()) {
return EXTENSIONS_VERSION_V9;
}
- if (Flags.aeBackStackRestore()) {
- return EXTENSIONS_VERSION_V8;
- }
- return EXTENSIONS_VERSION_V7;
+ return EXTENSIONS_VERSION_V8;
}
private String generateLogMessage() {
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
index 1bcb0bb91515..b0fadb06b7e3 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
@@ -288,7 +288,7 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
mSplitRules.clear();
mSplitRules.addAll(rules);
- if (!Flags.aeBackStackRestore() || !mPresenter.isWaitingToRebuildTaskContainers()) {
+ if (!mPresenter.isWaitingToRebuildTaskContainers()) {
return;
}
@@ -2893,10 +2893,6 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
@Override
public void setAutoSaveEmbeddingState(boolean saveEmbeddingState) {
- if (!Flags.aeBackStackRestore()) {
- return;
- }
-
synchronized (mLock) {
mPresenter.setAutoSaveEmbeddingState(saveEmbeddingState);
}
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
index 9a2f32e9ee99..eb59d6efdeff 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
@@ -169,12 +169,8 @@ class SplitPresenter extends JetpackTaskFragmentOrganizer {
mWindowLayoutComponent = windowLayoutComponent;
mController = controller;
final Bundle outSavedState = new Bundle();
- if (Flags.aeBackStackRestore()) {
- outSavedState.setClassLoader(ParcelableTaskContainerData.class.getClassLoader());
- registerOrganizer(false /* isSystemOrganizer */, outSavedState);
- } else {
- registerOrganizer();
- }
+ outSavedState.setClassLoader(ParcelableTaskContainerData.class.getClassLoader());
+ registerOrganizer(false /* isSystemOrganizer */, outSavedState);
mBackupHelper = new BackupHelper(controller, this, outSavedState);
if (!SplitController.ENABLE_SHELL_TRANSITIONS) {
// TODO(b/207070762): cleanup with legacy app transition
diff --git a/libs/WindowManager/Shell/OWNERS b/libs/WindowManager/Shell/OWNERS
index 394093c6ab30..f01e8d665d12 100644
--- a/libs/WindowManager/Shell/OWNERS
+++ b/libs/WindowManager/Shell/OWNERS
@@ -3,5 +3,5 @@ pbdr@google.com
pragyabajoria@google.com
# Give submodule owners in shell resource approval
-per-file res*/*/*.xml = atsjenk@google.com, hwwang@google.com, jorgegil@google.com, lbill@google.com, madym@google.com, vaniadesmonda@google.com, pbdr@google.com, tkachenkoi@google.com, mpodolian@google.com, liranb@google.com, pragyabajoria@google.com, uysalorhan@google.com, gsennton@google.com, mattsziklay@google.com, mdehaini@google.com
+per-file res*/*/*.xml = atsjenk@google.com, hwwang@google.com, jorgegil@google.com, lbill@google.com, madym@google.com, vaniadesmonda@google.com, pbdr@google.com, mpodolian@google.com, liranb@google.com, pragyabajoria@google.com, uysalorhan@google.com, gsennton@google.com, mattsziklay@google.com, mdehaini@google.com
per-file res*/*/tv_*.xml = bronger@google.com
diff --git a/libs/WindowManager/Shell/multivalentTests/AndroidManifest.xml b/libs/WindowManager/Shell/multivalentTests/AndroidManifest.xml
index fd578a959e3b..95cd1c72a2af 100644
--- a/libs/WindowManager/Shell/multivalentTests/AndroidManifest.xml
+++ b/libs/WindowManager/Shell/multivalentTests/AndroidManifest.xml
@@ -1,10 +1,19 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.wm.shell.multivalenttests">
+ <uses-permission android:name="android.permission.MANAGE_ACTIVITY_TASKS"/>
+
<application android:debuggable="true" android:supportsRtl="true" >
<uses-library android:name="android.test.runner" />
<activity android:name="com.android.wm.shell.bubbles.bar.BubbleBarAnimationHelperTest$TestActivity"
android:exported="true"/>
+
+ <activity android:name=".bubbles.TestActivity"
+ android:allowEmbedded="true"
+ android:documentLaunchMode="always"
+ android:excludeFromRecents="true"
+ android:exported="false"
+ android:resizeableActivity="true" />
</application>
<instrumentation
diff --git a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleControllerBubbleBarTest.kt b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleControllerBubbleBarTest.kt
index 09a93d501f8e..bce6c5999a75 100644
--- a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleControllerBubbleBarTest.kt
+++ b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleControllerBubbleBarTest.kt
@@ -35,7 +35,6 @@ import com.android.internal.statusbar.IStatusBarService
import com.android.wm.shell.Flags
import com.android.wm.shell.ShellTaskOrganizer
import com.android.wm.shell.bubbles.Bubbles.SysuiProxy
-import com.android.wm.shell.bubbles.properties.ProdBubbleProperties
import com.android.wm.shell.bubbles.storage.BubblePersistentRepository
import com.android.wm.shell.common.DisplayController
import com.android.wm.shell.common.DisplayImeController
@@ -48,6 +47,7 @@ import com.android.wm.shell.draganddrop.DragAndDropController
import com.android.wm.shell.shared.TransactionPool
import com.android.wm.shell.shared.bubbles.BubbleBarLocation
import com.android.wm.shell.shared.bubbles.BubbleBarUpdate
+import com.android.wm.shell.shared.bubbles.DeviceConfig
import com.android.wm.shell.sysui.ShellCommandHandler
import com.android.wm.shell.sysui.ShellController
import com.android.wm.shell.sysui.ShellInit
@@ -288,7 +288,7 @@ class BubbleControllerBubbleBarTest {
mock<Transitions>(),
SyncTransactionQueue(TransactionPool(), mainExecutor),
mock<IWindowManager>(),
- ProdBubbleProperties,
+ BubbleResizabilityChecker()
)
}
diff --git a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleControllerTest.kt b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleControllerTest.kt
new file mode 100644
index 000000000000..cb229c99f42c
--- /dev/null
+++ b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleControllerTest.kt
@@ -0,0 +1,401 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.bubbles
+
+import android.content.Context
+import android.content.Intent
+import android.content.pm.LauncherApps
+import android.content.pm.ShortcutInfo
+import android.content.res.Resources
+import android.graphics.Rect
+import android.graphics.drawable.Icon
+import android.os.Handler
+import android.os.UserHandle
+import android.os.UserManager
+import android.view.IWindowManager
+import android.view.InsetsSource
+import android.view.InsetsState
+import android.view.WindowInsets
+import android.view.WindowManager
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
+import com.android.internal.logging.testing.UiEventLoggerFake
+import com.android.internal.protolog.ProtoLog
+import com.android.internal.statusbar.IStatusBarService
+import com.android.wm.shell.R
+import com.android.wm.shell.ShellTaskOrganizer
+import com.android.wm.shell.bubbles.Bubbles.BubbleExpandListener
+import com.android.wm.shell.bubbles.Bubbles.SysuiProxy
+import com.android.wm.shell.bubbles.storage.BubblePersistentRepository
+import com.android.wm.shell.common.DisplayController
+import com.android.wm.shell.common.DisplayImeController
+import com.android.wm.shell.common.DisplayInsetsController
+import com.android.wm.shell.common.DisplayLayout
+import com.android.wm.shell.common.FloatingContentCoordinator
+import com.android.wm.shell.common.ImeListener
+import com.android.wm.shell.common.SyncTransactionQueue
+import com.android.wm.shell.common.TaskStackListenerImpl
+import com.android.wm.shell.common.TestShellExecutor
+import com.android.wm.shell.common.TestSyncExecutor
+import com.android.wm.shell.draganddrop.DragAndDropController
+import com.android.wm.shell.shared.TransactionPool
+import com.android.wm.shell.sysui.ShellCommandHandler
+import com.android.wm.shell.sysui.ShellController
+import com.android.wm.shell.sysui.ShellInit
+import com.android.wm.shell.taskview.TaskViewRepository
+import com.android.wm.shell.taskview.TaskViewTransitions
+import com.android.wm.shell.transition.Transitions
+import com.google.common.truth.Truth.assertThat
+import com.google.common.util.concurrent.MoreExecutors.directExecutor
+import java.util.Optional
+import org.junit.After
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.ArgumentMatchers.anyInt
+import org.mockito.kotlin.argumentCaptor
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
+
+/** Tests for [BubbleController] */
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class BubbleControllerTest {
+
+ private val context = ApplicationProvider.getApplicationContext<Context>()
+
+ private lateinit var bubbleController: BubbleController
+ private lateinit var bubblePositioner: BubblePositioner
+ private lateinit var uiEventLoggerFake: UiEventLoggerFake
+ private lateinit var bubbleLogger: BubbleLogger
+ private lateinit var mainExecutor: TestShellExecutor
+ private lateinit var bgExecutor: TestShellExecutor
+ private lateinit var bubbleData: BubbleData
+ private lateinit var eduController: BubbleEducationController
+ private lateinit var displayController: DisplayController
+ private lateinit var displayImeController: DisplayImeController
+ private lateinit var displayInsetsController: DisplayInsetsController
+ private lateinit var imeListener: ImeListener
+
+ @Before
+ fun setUp() {
+ ProtoLog.REQUIRE_PROTOLOGTOOL = false
+ ProtoLog.init()
+
+ uiEventLoggerFake = UiEventLoggerFake()
+ bubbleLogger = BubbleLogger(uiEventLoggerFake)
+ eduController = BubbleEducationController(context)
+
+ mainExecutor = TestShellExecutor()
+ bgExecutor = TestShellExecutor()
+
+ // Tests don't have permission to add our window to windowManager, so we mock it :(
+ val windowManager = mock<WindowManager>()
+ val realWindowManager = context.getSystemService(WindowManager::class.java)!!
+ // But we do want the metrics from the real one
+ whenever(windowManager.currentWindowMetrics)
+ .thenReturn(realWindowManager.currentWindowMetrics)
+ whenever(windowManager.defaultDisplay).thenReturn(realWindowManager.defaultDisplay)
+
+ bubblePositioner = BubblePositioner(context, windowManager)
+
+ bubbleData =
+ BubbleData(
+ context,
+ bubbleLogger,
+ bubblePositioner,
+ eduController,
+ mainExecutor,
+ bgExecutor
+ )
+ displayController = mock<DisplayController>()
+ displayImeController = mock<DisplayImeController>()
+ displayInsetsController = mock<DisplayInsetsController>()
+
+ bubbleController =
+ createBubbleController(
+ bubbleData,
+ windowManager,
+ bubbleLogger,
+ bubblePositioner,
+ mainExecutor,
+ bgExecutor,
+ )
+ bubbleController.asBubbles().setSysuiProxy(mock<SysuiProxy>())
+ // Flush so that proxy gets set
+ mainExecutor.flushAll()
+
+ whenever(displayController.getDisplayLayout(anyInt()))
+ .thenReturn(DisplayLayout(context, realWindowManager.defaultDisplay))
+ val insetsChangedListenerCaptor = argumentCaptor<ImeListener>()
+ verify(displayInsetsController)
+ .addInsetsChangedListener(anyInt(), insetsChangedListenerCaptor.capture())
+ imeListener = insetsChangedListenerCaptor.lastValue
+ }
+
+ @After
+ fun tearDown() {
+ getInstrumentation().waitForIdleSync()
+ }
+
+ @Test
+ fun showOrHideNotesBubble_createsNoteBubble() {
+ val intent = Intent(context, TestActivity::class.java)
+ intent.setPackage(context.packageName)
+ val user = UserHandle.of(0)
+ val expectedKey = Bubble.getNoteBubbleKeyForApp(intent.getPackage(), user)
+
+ getInstrumentation().runOnMainSync {
+ bubbleController.showOrHideNotesBubble(intent, user, mock<Icon>())
+ }
+ getInstrumentation().waitForIdleSync()
+
+ assertThat(bubbleController.hasBubbles()).isTrue()
+ assertThat(bubbleData.getAnyBubbleWithKey(expectedKey)).isNotNull()
+ assertThat(bubbleData.getAnyBubbleWithKey(expectedKey)!!.isNote).isTrue()
+ }
+
+ @Test
+ fun onDeviceLocked_expanded_imeHidden_shouldCollapseImmediately() {
+ val bubble = createBubble("key")
+ bubblePositioner.setImeVisible(false, 0)
+ getInstrumentation().runOnMainSync {
+ bubbleController.inflateAndAdd(
+ bubble,
+ /* suppressFlyout= */ true,
+ /* showInShade= */ true
+ )
+ }
+ assertThat(bubbleData.hasBubbles()).isTrue()
+
+ // expand and lock the device
+ getInstrumentation().runOnMainSync {
+ bubbleController.expandStackAndSelectBubble(bubble)
+ assertThat(bubbleData.isExpanded).isTrue()
+ bubbleController.onStatusBarStateChanged(/* isShade= */ false)
+ }
+ // verify that we collapsed immediately, since the IME is hidden
+ assertThat(bubbleData.isExpanded).isFalse()
+ }
+
+ @Test
+ fun onDeviceLocked_expanded_imeVisible_shouldHideImeBeforeCollapsing() {
+ val bubble = createBubble("key")
+ getInstrumentation().runOnMainSync {
+ bubbleController.inflateAndAdd(
+ bubble,
+ /* suppressFlyout= */ true,
+ /* showInShade= */ true
+ )
+ }
+ assertThat(bubbleData.hasBubbles()).isTrue()
+
+ // expand and show the IME. then lock the device
+ val imeVisibleInsetsState = createFakeInsetsState(imeVisible = true)
+ getInstrumentation().runOnMainSync {
+ bubbleController.expandStackAndSelectBubble(bubble)
+ assertThat(bubbleData.isExpanded).isTrue()
+ imeListener.insetsChanged(imeVisibleInsetsState)
+ assertThat(bubblePositioner.isImeVisible).isTrue()
+ bubbleController.onStatusBarStateChanged(/* isShade= */ false)
+ }
+ // check that we haven't actually started collapsing because we weren't notified yet that
+ // the IME is hidden
+ assertThat(bubbleData.isExpanded).isTrue()
+ // collapsing while the device is locked goes through display ime controller
+ verify(displayImeController).hideImeForBubblesWhenLocked(anyInt())
+
+ // notify that the IME was hidden
+ val imeHiddenInsetsState = createFakeInsetsState(imeVisible = false)
+ getInstrumentation().runOnMainSync { imeListener.insetsChanged(imeHiddenInsetsState) }
+ assertThat(bubblePositioner.isImeVisible).isFalse()
+ // bubbles should be collapsed now
+ assertThat(bubbleData.isExpanded).isFalse()
+ }
+
+ @Test
+ fun onDeviceLocked_whileHidingImeDuringCollapse() {
+ val bubble = createBubble("key")
+ val expandListener = FakeBubbleExpandListener()
+ bubbleController.setExpandListener(expandListener)
+
+ getInstrumentation().runOnMainSync {
+ bubbleController.inflateAndAdd(
+ bubble,
+ /* suppressFlyout= */ true,
+ /* showInShade= */ true
+ )
+ }
+ assertThat(bubbleData.hasBubbles()).isTrue()
+
+ // expand
+ getInstrumentation().runOnMainSync {
+ bubbleController.expandStackAndSelectBubble(bubble)
+ assertThat(bubbleData.isExpanded).isTrue()
+ mainExecutor.flushAll()
+ }
+
+ assertThat(expandListener.bubblesExpandedState).isEqualTo(mapOf("key" to true))
+
+ // show the IME
+ val imeVisibleInsetsState = createFakeInsetsState(imeVisible = true)
+ getInstrumentation().runOnMainSync { imeListener.insetsChanged(imeVisibleInsetsState) }
+
+ assertThat(bubblePositioner.isImeVisible).isTrue()
+
+ // collapse the stack
+ getInstrumentation().runOnMainSync { bubbleController.collapseStack() }
+ assertThat(bubbleData.isExpanded).isFalse()
+ // since we started to collapse while the IME was visible, we will wait to be notified that
+ // the IME is hidden before completing the collapse. check that the expand listener was not
+ // yet called
+ assertThat(expandListener.bubblesExpandedState).isEqualTo(mapOf("key" to true))
+
+ // lock the device during this state
+ getInstrumentation().runOnMainSync {
+ bubbleController.onStatusBarStateChanged(/* isShade= */ false)
+ }
+ verify(displayImeController).hideImeForBubblesWhenLocked(anyInt())
+
+ // notify that the IME is hidden
+ val imeHiddenInsetsState = createFakeInsetsState(imeVisible = false)
+ getInstrumentation().runOnMainSync { imeListener.insetsChanged(imeHiddenInsetsState) }
+ assertThat(bubblePositioner.isImeVisible).isFalse()
+ // verify the collapse action completed
+ assertThat(expandListener.bubblesExpandedState).isEqualTo(mapOf("key" to false))
+ }
+
+ private fun createBubble(key: String): Bubble {
+ val icon = Icon.createWithResource(context.resources, R.drawable.bubble_ic_overflow_button)
+ val shortcutInfo = ShortcutInfo.Builder(context, "fakeId").setIcon(icon).build()
+ val bubble =
+ Bubble(
+ key,
+ shortcutInfo,
+ /* desiredHeight= */ 0,
+ Resources.ID_NULL,
+ "title",
+ /* taskId= */ 0,
+ "locus",
+ /* isDismissable= */ true,
+ directExecutor(),
+ directExecutor()
+ ) {}
+ return bubble
+ }
+
+ private fun createFakeInsetsState(imeVisible: Boolean): InsetsState {
+ val insetsState = InsetsState()
+ if (imeVisible) {
+ insetsState
+ .getOrCreateSource(InsetsSource.ID_IME, WindowInsets.Type.ime())
+ .setFrame(Rect(0, 100, 100, 200))
+ .setVisible(true)
+ }
+ return insetsState
+ }
+
+ private fun createBubbleController(
+ bubbleData: BubbleData,
+ windowManager: WindowManager,
+ bubbleLogger: BubbleLogger,
+ bubblePositioner: BubblePositioner,
+ mainExecutor: TestShellExecutor,
+ bgExecutor: TestShellExecutor,
+ ): BubbleController {
+ val shellInit = ShellInit(mainExecutor)
+ val shellCommandHandler = ShellCommandHandler()
+ val shellController =
+ ShellController(
+ context,
+ shellInit,
+ shellCommandHandler,
+ displayInsetsController,
+ mainExecutor,
+ )
+ val surfaceSynchronizer = { obj: Runnable -> obj.run() }
+
+ val bubbleDataRepository =
+ BubbleDataRepository(
+ mock<LauncherApps>(),
+ mainExecutor,
+ bgExecutor,
+ BubblePersistentRepository(context),
+ )
+
+ val shellTaskOrganizer =
+ ShellTaskOrganizer(
+ mock<ShellInit>(),
+ ShellCommandHandler(),
+ null,
+ Optional.empty(),
+ Optional.empty(),
+ TestSyncExecutor()
+ )
+
+ val resizeChecker = ResizabilityChecker { _, _, _ -> true }
+
+ val bubbleController =
+ BubbleController(
+ context,
+ shellInit,
+ shellCommandHandler,
+ shellController,
+ bubbleData,
+ surfaceSynchronizer,
+ FloatingContentCoordinator(),
+ bubbleDataRepository,
+ mock<IStatusBarService>(),
+ windowManager,
+ displayInsetsController,
+ displayImeController,
+ mock<UserManager>(),
+ mock<LauncherApps>(),
+ bubbleLogger,
+ mock<TaskStackListenerImpl>(),
+ shellTaskOrganizer,
+ bubblePositioner,
+ displayController,
+ Optional.empty(),
+ mock<DragAndDropController>(),
+ mainExecutor,
+ mock<Handler>(),
+ bgExecutor,
+ mock<TaskViewRepository>(),
+ mock<TaskViewTransitions>(),
+ mock<Transitions>(),
+ SyncTransactionQueue(TransactionPool(), mainExecutor),
+ mock<IWindowManager>(),
+ resizeChecker,
+ )
+ bubbleController.setInflateSynchronously(true)
+ bubbleController.onInit()
+
+ return bubbleController
+ }
+
+ private class FakeBubbleExpandListener : BubbleExpandListener {
+ val bubblesExpandedState = mutableMapOf<String, Boolean>()
+
+ override fun onBubbleExpandChanged(isExpanding: Boolean, key: String) {
+ bubblesExpandedState[key] = isExpanding
+ }
+ }
+}
diff --git a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubblePositionerTest.kt b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubblePositionerTest.kt
index 1d0c5057c77f..ec1add21ebf8 100644
--- a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubblePositionerTest.kt
+++ b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubblePositionerTest.kt
@@ -31,6 +31,7 @@ import com.android.internal.protolog.ProtoLog
import com.android.wm.shell.R
import com.android.wm.shell.bubbles.BubblePositioner.MAX_HEIGHT
import com.android.wm.shell.shared.bubbles.BubbleBarLocation
+import com.android.wm.shell.shared.bubbles.DeviceConfig
import com.google.common.truth.Truth.assertThat
import com.google.common.util.concurrent.MoreExecutors.directExecutor
import org.junit.Before
@@ -154,19 +155,19 @@ class BubblePositionerTest {
/** Test that the default resting position on tablet is middle right. */
@Test
- fun testGetDefaultPosition_appBubble_onTablet() {
+ fun testGetDefaultPosition_noteBubble_onTablet() {
positioner.update(defaultDeviceConfig.copy(isLargeScreen = true))
val allowableStackRegion = positioner.getAllowableStackPositionRegion(1 /* bubbleCount */)
- val startPosition = positioner.getDefaultStartPosition(true /* isAppBubble */)
+ val startPosition = positioner.getDefaultStartPosition(true /* isNoteBubble */)
assertThat(startPosition.x).isEqualTo(allowableStackRegion.right)
assertThat(startPosition.y).isEqualTo(defaultYPosition)
}
@Test
- fun testGetRestingPosition_appBubble_onTablet_RTL() {
+ fun testGetRestingPosition_noteBubble_onTablet_RTL() {
positioner.update(defaultDeviceConfig.copy(isLargeScreen = true, isRtl = true))
val allowableStackRegion = positioner.getAllowableStackPositionRegion(1 /* bubbleCount */)
- val startPosition = positioner.getDefaultStartPosition(true /* isAppBubble */)
+ val startPosition = positioner.getDefaultStartPosition(true /* isNoteBubble */)
assertThat(startPosition.x).isEqualTo(allowableStackRegion.left)
assertThat(startPosition.y).isEqualTo(defaultYPosition)
}
diff --git a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleStackViewTest.kt b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleStackViewTest.kt
index 9d445f0bb80d..88bfeb21bb74 100644
--- a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleStackViewTest.kt
+++ b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleStackViewTest.kt
@@ -685,7 +685,6 @@ class BubbleStackViewTest {
expandedViewManager,
bubbleTaskViewFactory,
positioner,
- bubbleLogger,
bubbleStackView,
null,
iconFactory,
diff --git a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleViewInfoTaskTest.kt b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleViewInfoTaskTest.kt
index f1ba0423b422..4168686e9947 100644
--- a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleViewInfoTaskTest.kt
+++ b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleViewInfoTaskTest.kt
@@ -35,7 +35,6 @@ import com.android.internal.protolog.ProtoLog
import com.android.internal.statusbar.IStatusBarService
import com.android.launcher3.icons.BubbleIconFactory
import com.android.wm.shell.ShellTaskOrganizer
-import com.android.wm.shell.bubbles.properties.BubbleProperties
import com.android.wm.shell.bubbles.storage.BubblePersistentRepository
import com.android.wm.shell.common.DisplayController
import com.android.wm.shell.common.DisplayImeController
@@ -161,7 +160,7 @@ class BubbleViewInfoTaskTest {
mock<Transitions>(),
SyncTransactionQueue(TransactionPool(), mainExecutor),
mock<IWindowManager>(),
- mock<BubbleProperties>()
+ BubbleResizabilityChecker()
)
// TODO: (b/371829099) - when optional overflow is no longer flagged we can enable this
@@ -328,7 +327,6 @@ class BubbleViewInfoTaskTest {
expandedViewManager,
bubbleTaskViewFactory,
bubblePositioner,
- bubbleLogger,
bubbleStackView,
null /* layerView */,
iconFactory,
diff --git a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/FakeBubbleExpandedViewManager.kt b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/FakeBubbleExpandedViewManager.kt
index 3c013d3636e8..adcd835d72be 100644
--- a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/FakeBubbleExpandedViewManager.kt
+++ b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/FakeBubbleExpandedViewManager.kt
@@ -38,7 +38,7 @@ class FakeBubbleExpandedViewManager(var bubbleBar: Boolean = false, var expanded
override fun dismissBubble(bubble: Bubble, reason: Int) {}
- override fun setAppBubbleTaskId(key: String, taskId: Int) {}
+ override fun setNoteBubbleTaskId(key: String, taskId: Int) {}
override fun isStackExpanded(): Boolean {
return expanded
diff --git a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/FakeBubbleFactory.kt b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/FakeBubbleFactory.kt
index 750178678785..af33a8daee9d 100644
--- a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/FakeBubbleFactory.kt
+++ b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/FakeBubbleFactory.kt
@@ -45,10 +45,10 @@ class FakeBubbleFactory {
.inflate(R.layout.bubble_bar_expanded_view, null, false /* attachToRoot */)
as BubbleBarExpandedView)
.apply {
+ this.bubbleLogger = bubbleLogger
initialize(
expandedViewManager,
bubblePositioner,
- bubbleLogger,
false, /* isOverflow */
bubbleTaskView,
mainExecutor,
diff --git a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/TestActivity.kt b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/TestActivity.kt
new file mode 100644
index 000000000000..40e80d02e7b3
--- /dev/null
+++ b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/TestActivity.kt
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.wm.shell.bubbles
+
+import android.app.Activity
+import android.os.Bundle
+import android.widget.FrameLayout
+
+class TestActivity : Activity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(FrameLayout(getApplicationContext()))
+ }
+}
diff --git a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarAnimationHelperTest.kt b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarAnimationHelperTest.kt
index d3cfbd00c4a3..56cee4221dba 100644
--- a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarAnimationHelperTest.kt
+++ b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarAnimationHelperTest.kt
@@ -42,10 +42,10 @@ import com.android.wm.shell.bubbles.BubbleLogger
import com.android.wm.shell.bubbles.BubbleOverflow
import com.android.wm.shell.bubbles.BubblePositioner
import com.android.wm.shell.bubbles.BubbleTaskView
-import com.android.wm.shell.bubbles.DeviceConfig
import com.android.wm.shell.bubbles.FakeBubbleExpandedViewManager
import com.android.wm.shell.bubbles.FakeBubbleFactory
import com.android.wm.shell.common.TestShellExecutor
+import com.android.wm.shell.shared.bubbles.DeviceConfig
import com.android.wm.shell.taskview.TaskView
import com.android.wm.shell.taskview.TaskViewController
import com.android.wm.shell.taskview.TaskViewTaskController
@@ -358,7 +358,7 @@ class BubbleBarAnimationHelperTest {
private fun createOverflow(): BubbleOverflow {
val overflow = BubbleOverflow(context, bubblePositioner)
- overflow.initializeForBubbleBar(expandedViewManager, bubblePositioner, bubbleLogger)
+ overflow.initializeForBubbleBar(expandedViewManager, bubblePositioner)
return overflow
}
diff --git a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedViewTest.kt b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedViewTest.kt
index 7f65e22736b3..1440873cfdf7 100644
--- a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedViewTest.kt
+++ b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedViewTest.kt
@@ -39,11 +39,11 @@ import com.android.wm.shell.bubbles.BubbleLogger
import com.android.wm.shell.bubbles.BubblePositioner
import com.android.wm.shell.bubbles.BubbleTaskView
import com.android.wm.shell.bubbles.BubbleTaskViewFactory
-import com.android.wm.shell.bubbles.DeviceConfig
import com.android.wm.shell.bubbles.FakeBubbleExpandedViewManager
import com.android.wm.shell.bubbles.RegionSamplingProvider
import com.android.wm.shell.bubbles.UiEventSubject.Companion.assertThat
import com.android.wm.shell.common.TestShellExecutor
+import com.android.wm.shell.shared.bubbles.DeviceConfig
import com.android.wm.shell.shared.handles.RegionSamplingHelper
import com.android.wm.shell.taskview.TaskView
import com.android.wm.shell.taskview.TaskViewController
@@ -114,10 +114,10 @@ class BubbleBarExpandedViewTest {
bubbleExpandedView = inflater.inflate(
R.layout.bubble_bar_expanded_view, null, false /* attachToRoot */
) as BubbleBarExpandedView
+ bubbleExpandedView.bubbleLogger = BubbleLogger(uiEventLoggerFake)
bubbleExpandedView.initialize(
expandedViewManager,
positioner,
- BubbleLogger(uiEventLoggerFake),
false /* isOverflow */,
bubbleTaskView,
mainExecutor,
@@ -279,7 +279,6 @@ class BubbleBarExpandedViewTest {
expandedView.initialize(
expandedViewManager,
positioner,
- BubbleLogger(uiEventLoggerFake),
false /* isOverflow */,
taskView,
mainExecutor,
@@ -321,7 +320,6 @@ class BubbleBarExpandedViewTest {
expandedView.initialize(
expandedViewManager,
positioner,
- BubbleLogger(uiEventLoggerFake),
false /* isOverflow */,
taskView,
mainExecutor,
diff --git a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerViewTest.kt b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerViewTest.kt
index a6492476176b..c022a298e972 100644
--- a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerViewTest.kt
+++ b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerViewTest.kt
@@ -43,13 +43,13 @@ import com.android.wm.shell.bubbles.BubbleDataRepository
import com.android.wm.shell.bubbles.BubbleExpandedViewManager
import com.android.wm.shell.bubbles.BubbleLogger
import com.android.wm.shell.bubbles.BubblePositioner
+import com.android.wm.shell.bubbles.BubbleResizabilityChecker
import com.android.wm.shell.bubbles.Bubbles.SysuiProxy
import com.android.wm.shell.bubbles.FakeBubbleExpandedViewManager
import com.android.wm.shell.bubbles.FakeBubbleFactory
import com.android.wm.shell.bubbles.FakeBubbleTaskViewFactory
import com.android.wm.shell.bubbles.UiEventSubject.Companion.assertThat
import com.android.wm.shell.bubbles.animation.AnimatableScaleMatrix
-import com.android.wm.shell.bubbles.properties.BubbleProperties
import com.android.wm.shell.bubbles.storage.BubblePersistentRepository
import com.android.wm.shell.common.DisplayController
import com.android.wm.shell.common.DisplayImeController
@@ -200,7 +200,7 @@ class BubbleBarLayerViewTest {
mock<Transitions>(),
SyncTransactionQueue(TransactionPool(), mainExecutor),
mock<IWindowManager>(),
- mock<BubbleProperties>(),
+ BubbleResizabilityChecker()
)
}
diff --git a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleExpandedViewPinControllerTest.kt b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleExpandedViewPinControllerTest.kt
index d4cbe6e10971..1b0e11f7103c 100644
--- a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleExpandedViewPinControllerTest.kt
+++ b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleExpandedViewPinControllerTest.kt
@@ -30,13 +30,13 @@ import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
import com.android.internal.protolog.ProtoLog
import com.android.wm.shell.R
import com.android.wm.shell.bubbles.BubblePositioner
-import com.android.wm.shell.bubbles.DeviceConfig
import com.android.wm.shell.shared.bubbles.BaseBubblePinController
import com.android.wm.shell.shared.bubbles.BaseBubblePinController.Companion.DROP_TARGET_ALPHA_IN_DURATION
import com.android.wm.shell.shared.bubbles.BaseBubblePinController.Companion.DROP_TARGET_ALPHA_OUT_DURATION
import com.android.wm.shell.shared.bubbles.BubbleBarLocation
import com.android.wm.shell.shared.bubbles.BubbleBarLocation.LEFT
import com.android.wm.shell.shared.bubbles.BubbleBarLocation.RIGHT
+import com.android.wm.shell.shared.bubbles.DeviceConfig
import com.google.common.truth.Truth.assertThat
import org.junit.After
import org.junit.Before
diff --git a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/common/TestSyncExecutor.kt b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/common/TestSyncExecutor.kt
new file mode 100644
index 000000000000..50d9f77389c8
--- /dev/null
+++ b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/common/TestSyncExecutor.kt
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.common
+
+class TestSyncExecutor : ShellExecutor {
+ override fun execute(runnable: Runnable) {
+ runnable.run()
+ }
+
+ override fun executeDelayed(runnable: Runnable, delayMillis: Long) {
+ runnable.run()
+ }
+
+ override fun removeCallbacks(runnable: Runnable) {
+ }
+
+ override fun hasCallback(runnable: Runnable): Boolean {
+ return false
+ }
+} \ No newline at end of file
diff --git a/libs/WindowManager/Shell/res/drawable/ic_baseline_expand_more_16.xml b/libs/WindowManager/Shell/res/drawable/ic_baseline_expand_more_16.xml
new file mode 100644
index 000000000000..c2a20b977b70
--- /dev/null
+++ b/libs/WindowManager/Shell/res/drawable/ic_baseline_expand_more_16.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="16dp"
+ android:height="16dp"
+ android:viewportWidth="16"
+ android:viewportHeight="16"
+ android:tint="?android:attr/textColorSecondary">
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M 8 11.375 L 2 5.375 L 3.4 3.975 L 8 8.575 L 12.6 3.975 L 14 5.375 L 8 11.375 Z"
+ />
+</vector>
+
diff --git a/libs/WindowManager/Shell/res/layout/desktop_mode_app_header.xml b/libs/WindowManager/Shell/res/layout/desktop_mode_app_header.xml
index 87c520ca1b51..b898e4b06c14 100644
--- a/libs/WindowManager/Shell/res/layout/desktop_mode_app_header.xml
+++ b/libs/WindowManager/Shell/res/layout/desktop_mode_app_header.xml
@@ -64,7 +64,7 @@
android:id="@+id/expand_menu_button"
android:layout_width="16dp"
android:layout_height="16dp"
- android:src="@drawable/ic_baseline_expand_more_24"
+ android:src="@drawable/ic_baseline_expand_more_16"
android:background="@null"
android:scaleType="fitCenter"
android:clickable="false"
@@ -101,7 +101,7 @@
android:layout_width="44dp"
android:layout_height="40dp"
android:layout_gravity="end"
- android:layout_marginHorizontal="8dp"
+ android:layout_marginEnd="8dp"
android:clickable="true"
android:focusable="true"/>
diff --git a/libs/WindowManager/Shell/res/layout/desktop_mode_window_decor_handle_menu.xml b/libs/WindowManager/Shell/res/layout/desktop_mode_window_decor_handle_menu.xml
index b69563b46e06..b1fedce5597e 100644
--- a/libs/WindowManager/Shell/res/layout/desktop_mode_window_decor_handle_menu.xml
+++ b/libs/WindowManager/Shell/res/layout/desktop_mode_window_decor_handle_menu.xml
@@ -51,7 +51,6 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
tools:text="Gmail"
- android:importantForAccessibility="no"
android:textColor="@androidprv:color/materialColorOnSurface"
android:textSize="14sp"
android:textFontWeight="500"
diff --git a/libs/WindowManager/Shell/res/values-af/strings.xml b/libs/WindowManager/Shell/res/values-af/strings.xml
index a975682b065e..13e5f34e1586 100644
--- a/libs/WindowManager/Shell/res/values-af/strings.xml
+++ b/libs/WindowManager/Shell/res/values-af/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Links 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Links 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Volskerm regs"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Volskerm bo"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Bo 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Bo 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Stel terug"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Spring na links"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Spring na regs"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Maak By Verstek Oop-instellings"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Kies hoe om webskakels vir hierdie app oop te maak"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In die app"</string>
diff --git a/libs/WindowManager/Shell/res/values-am/strings.xml b/libs/WindowManager/Shell/res/values-am/strings.xml
index a6921b992234..14a79aa8475b 100644
--- a/libs/WindowManager/Shell/res/values-am/strings.xml
+++ b/libs/WindowManager/Shell/res/values-am/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ግራ 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ግራ 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"የቀኝ ሙሉ ማያ ገፅ"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"የላይ ሙሉ ማያ ገፅ"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ከላይ 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ከላይ 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"ወደነበረበት መልስ"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"ወደ ግራ አሳድግ"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"ወደ ቀኝ አሳድግ"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"በነባሪ ቅንብሮች ክፈት"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ለዚህ የድር መተግበሪያ አገናኙን እንዴት እንደሚከፍቱ ይምረጡ"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"በመተግበሪያው ውስጥ"</string>
diff --git a/libs/WindowManager/Shell/res/values-ar/strings.xml b/libs/WindowManager/Shell/res/values-ar/strings.xml
index b72d25519e4f..9a6869a64f3f 100644
--- a/libs/WindowManager/Shell/res/values-ar/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ar/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ضبط حجم النافذة اليسرى ليكون ٥٠%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ضبط حجم النافذة اليسرى ليكون ٣٠%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"عرض النافذة اليمنى بملء الشاشة"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"عرض النافذة العلوية بملء الشاشة"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ضبط حجم النافذة العلوية ليكون ٧٠%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ضبط حجم النافذة العلوية ليكون ٥٠%"</string>
@@ -124,7 +126,7 @@
<string name="float_button_text" msgid="9221657008391364581">"نافذة عائمة"</string>
<string name="select_text" msgid="5139083974039906583">"اختيار"</string>
<string name="screenshot_text" msgid="1477704010087786671">"لقطة شاشة"</string>
- <string name="open_in_browser_text" msgid="9181692926376072904">"فتح في المتصفِّح"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"الفتح في المتصفِّح"</string>
<string name="open_in_app_text" msgid="2874590745116268525">"فتح في التطبيق"</string>
<string name="new_window_text" msgid="6318648868380652280">"نافذة جديدة"</string>
<string name="manage_windows_text" msgid="5567366688493093920">"إدارة النوافذ"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"استعادة"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"المحاذاة إلى اليسار"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"المحاذاة إلى اليمين"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"إعدادات الفتح تلقائيًا"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"اختيار طريقة فتح روابط الويب لهذا التطبيق"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"في التطبيق"</string>
diff --git a/libs/WindowManager/Shell/res/values-as/strings.xml b/libs/WindowManager/Shell/res/values-as/strings.xml
index 632d1265a1e6..0f433479e130 100644
--- a/libs/WindowManager/Shell/res/values-as/strings.xml
+++ b/libs/WindowManager/Shell/res/values-as/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"বাওঁফালৰ স্ক্ৰীনখন ৫০% কৰক"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"বাওঁফালৰ স্ক্ৰীনখন ৩০% কৰক"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"সোঁফালৰ স্ক্ৰীনখন সম্পূৰ্ণ স্ক্ৰীন কৰক"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"এপ্‌সমূহ সলনাসলনি কৰক"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"শীৰ্ষ স্ক্ৰীনখন সম্পূৰ্ণ স্ক্ৰীন কৰক"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"শীর্ষ স্ক্ৰীনখন ৭০% কৰক"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"শীর্ষ স্ক্ৰীনখন ৫০% কৰক"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"পুনঃস্থাপন কৰক"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"বাওঁফাললৈ স্নেপ কৰক"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"সোঁফাললৈ স্নেপ কৰক"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"বাওঁফালে এপ্‌ ৱিণ্ড’ৰ আকাৰ সলনি কৰক"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"সোঁফালে এপ্‌ ৱিণ্ড’ৰ আকাৰ সলনি কৰক"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ৱিণ্ড’ৰ আকাৰ মেক্সিমাইজ বা পুনঃস্থাপন কৰক"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"বিভাজিত-স্ক্ৰীন ম’ড দিয়ক"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"ডেস্কটপ ৱিণ্ড’ইং ম’ড দিয়ক"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"সোঁফাললৈ ৱিণ্ড’ৰ আকাৰ সলনি কৰক"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"বাওঁফাললৈ ৱিণ্ড’ৰ আকাৰ সলনি কৰক"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ৱিণ্ড’ৰ আকাৰ মেক্সিমাইজ বা পুনঃস্থাপন কৰক"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ৱিণ্ড’ৰ আকাৰ মেক্সিমাইজ বা পুনঃস্থাপন কৰক"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"এপ্‌ ৱিণ্ড’ মিনিমাইজ কৰক"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"ডিফ’ল্ট ছেটিং খোলক"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"এই এপ্‌টোৰ বাবে কিদৰে ৱেব লিংক খুলিব পাৰি সেয়া বাছনি কৰক"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"এপ্‌টোত"</string>
diff --git a/libs/WindowManager/Shell/res/values-az/strings.xml b/libs/WindowManager/Shell/res/values-az/strings.xml
index cf9f1b251af7..5181930edf57 100644
--- a/libs/WindowManager/Shell/res/values-az/strings.xml
+++ b/libs/WindowManager/Shell/res/values-az/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Sol 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Sol 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Sağ tam ekran"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Yuxarı tam ekran"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Yuxarı 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Yuxarı 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Bərpa edin"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Sola tərəf çəkin"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Sağa tərəf çəkin"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Defolt ayarlarla açın"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Bu tətbiq üçün veb-linklərin necə açılacağını seçin"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Tətbiqdə"</string>
diff --git a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml
index c2d4d8b0613e..92580d39f12c 100644
--- a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Levi ekran 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Levi ekran 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Režim celog ekrana za donji ekran"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Zamenite mesta aplikacijama"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Režim celog ekrana za gornji ekran"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Gornji ekran 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Gornji ekran 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Vratite"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Prikačite levo"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Prikačite desno"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Promenite veličinu prozora aplikacije nalevo"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Promenite veličinu prozora aplikacije nadesno"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Uvećajte ili vratite veličinu prozora"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Uđite u režim podeljenog ekrana"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Uđite u režim prozora na računaru"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Promenite veličinu prozora nalevo"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Promenite veličinu prozora nadesno"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Uvećajte ili vratite veličinu prozora"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Uvećajte ili vratite veličinu prozora"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Umanjite prozor aplikacije"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Podešavanje Podrazumevano otvaraj"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Odaberite način otvaranja veb-linkova za ovu aplikaciju"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"U aplikaciji"</string>
diff --git a/libs/WindowManager/Shell/res/values-be/strings.xml b/libs/WindowManager/Shell/res/values-be/strings.xml
index dde2374ea491..4c2950b5afa1 100644
--- a/libs/WindowManager/Shell/res/values-be/strings.xml
+++ b/libs/WindowManager/Shell/res/values-be/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Левы экран – 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Левы экран – 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Правы экран – поўнаэкранны рэжым"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Пераключыць праграмы"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Верхні экран – поўнаэкранны рэжым"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Верхні экран – 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Верхні экран – 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Аднавіць"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Размясціць злева"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Размясціць справа"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Змяніць памер акна (злева)"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Змяніць памер акна (справа)"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Разгарнуць акно ці аднавіць яго памер"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Уключыць рэжым падзеленага экрана"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Уключыць рэжым вокнаў працоўнага стала"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Змяніць памер акна і перамясціць да левага краю"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Змяніць памер акна і перамясціць да правага краю"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Разгарнуць акно ці аднавіць яго памер"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Разгарнуць акно ці аднавіць яго памер"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Згарнуць акно праграмы"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Налады параметра \"Адкрываць стандартна\""</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Выберыце, як гэта праграма будзе адкрываць вэб-спасылкі"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"У праграме"</string>
diff --git a/libs/WindowManager/Shell/res/values-bg/strings.xml b/libs/WindowManager/Shell/res/values-bg/strings.xml
index 7e804843dfce..e7feb5b6fa8c 100644
--- a/libs/WindowManager/Shell/res/values-bg/strings.xml
+++ b/libs/WindowManager/Shell/res/values-bg/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Ляв екран: 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Ляв екран: 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Десен екран: Показване на цял екран"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Горен екран: Показване на цял екран"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Горен екран: 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Горен екран: 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Възстановяване"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Прилепване наляво"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Прилепване надясно"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Отваряне на настройките по подразбиране"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Изберете как да се отварят уеб връзките за това приложение"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"В приложението"</string>
diff --git a/libs/WindowManager/Shell/res/values-bn/strings.xml b/libs/WindowManager/Shell/res/values-bn/strings.xml
index 4c6e6c1fee2f..f4f887771fd9 100644
--- a/libs/WindowManager/Shell/res/values-bn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-bn/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"৫০% বাকি আছে"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"৩০% বাকি আছে"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"ডান দিকের অংশ নিয়ে পূর্ণ স্ক্রিন"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"উপর দিকের অংশ নিয়ে পূর্ণ স্ক্রিন"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"শীর্ষ ৭০%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"শীর্ষ ৫০%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"ফিরিয়ে আনুন"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"বাঁদিকে স্ন্যাপ করুন"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"ডানদিকে স্ন্যাপ করুন"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"ডিফল্ট হিসেবে থাকা সেটিংস খুলুন"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"এই অ্যাপের জন্য কীভাবে ওয়েব লিঙ্ক খুলবেন তা বেছে নিন"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"অ্যাপের মধ্যে"</string>
diff --git a/libs/WindowManager/Shell/res/values-bs/strings.xml b/libs/WindowManager/Shell/res/values-bs/strings.xml
index 244149b855f6..12e4fc2700ed 100644
--- a/libs/WindowManager/Shell/res/values-bs/strings.xml
+++ b/libs/WindowManager/Shell/res/values-bs/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Lijevo 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Lijevo 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Desno cijeli ekran"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Zamijeni aplikacije"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Gore cijeli ekran"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Gore 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Gore 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Vraćanje"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Pomicanje ulijevo"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Pomicanje udesno"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Promijeni veličinu prozora aplikacije ulijevo"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Promijeni veličinu prozora aplikacije udesno"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maksimiziraj ili vrati veličinu prozora"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Pokreni način podijeljenog zaslona"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Pokreni način prikaza u prozorima na računalu"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Promijeni veličinu prozora ulijevo"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Promijeni veličinu prozora udesno"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimiziraj ili vrati veličinu prozora"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimiziraj ili vrati veličinu prozora"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimiziraj prozor aplikacije"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Otvaranje prema zadanim postavkama"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Odaberite način otvaranja web linkova za ovu aplikaciju"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"U aplikaciji"</string>
diff --git a/libs/WindowManager/Shell/res/values-ca/strings.xml b/libs/WindowManager/Shell/res/values-ca/strings.xml
index 786ed769e7b7..1623954d1d7c 100644
--- a/libs/WindowManager/Shell/res/values-ca/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ca/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Pantalla esquerra al 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Pantalla esquerra al 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Pantalla dreta completa"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Pantalla superior completa"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Pantalla superior al 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Pantalla superior al 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Restaura"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Ajusta a l\'esquerra"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Ajusta a la dreta"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Configuració d\'obertura predeterminada"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Tria com vols obrir els enllaços web per a aquesta aplicació"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"A l\'aplicació"</string>
diff --git a/libs/WindowManager/Shell/res/values-cs/strings.xml b/libs/WindowManager/Shell/res/values-cs/strings.xml
index 99e9a8350822..f6ac59ca24b7 100644
--- a/libs/WindowManager/Shell/res/values-cs/strings.xml
+++ b/libs/WindowManager/Shell/res/values-cs/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50 % vlevo"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30 % vlevo"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Pravá část na celou obrazovku"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Horní část na celou obrazovku"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70 % nahoře"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50 % nahoře"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Obnovit"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Přichytit vlevo"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Přichytit vpravo"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Otevírat podle výchozího nastavení"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Určete, jak se v této aplikaci mají otevírat webové odkazy"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"V aplikaci"</string>
diff --git a/libs/WindowManager/Shell/res/values-da/strings.xml b/libs/WindowManager/Shell/res/values-da/strings.xml
index 6021a96e8cbe..e662a16ced1e 100644
--- a/libs/WindowManager/Shell/res/values-da/strings.xml
+++ b/libs/WindowManager/Shell/res/values-da/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Venstre 50 %"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Venstre 30 %"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Vis højre del i fuld skærm"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Byt apps"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Vis øverste del i fuld skærm"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Øverste 70 %"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Øverste 50 %"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Gendan"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Fastgør til venstre"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Fastgør til højre"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Juster størrelsen på appvinduet til venstre"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Juster størrelsen på appvinduet til højre"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maksimer eller gendan vinduesstørrelse"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Åbn opdelt skærm"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Åbn tilstanden for vinduer på computeren"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Juster størrelsen på vinduet til venstre"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Juster størrelsen på vinduet til højre"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimer eller gendan vinduesstørrelse"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimer eller gendan vinduesstørrelse"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimer appvindue"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Indstillinger for automatisk åbning"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Vælg, hvordan denne app skal åben weblinks"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"I appen"</string>
diff --git a/libs/WindowManager/Shell/res/values-de/strings.xml b/libs/WindowManager/Shell/res/values-de/strings.xml
index 7b296620099b..d7ee8a0cf8c3 100644
--- a/libs/WindowManager/Shell/res/values-de/strings.xml
+++ b/libs/WindowManager/Shell/res/values-de/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50 % links"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30 % links"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Vollbild rechts"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Vollbild oben"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70 % oben"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50 % oben"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Wiederherstellen"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Links andocken"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Rechts andocken"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Einstellungen für die Option „Standardmäßig öffnen“"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Festlegen, wie Weblinks für diese App geöffnet werden"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In der App"</string>
diff --git a/libs/WindowManager/Shell/res/values-el/strings.xml b/libs/WindowManager/Shell/res/values-el/strings.xml
index 879347adf406..4ba68b4fc9db 100644
--- a/libs/WindowManager/Shell/res/values-el/strings.xml
+++ b/libs/WindowManager/Shell/res/values-el/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Αριστερή 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Αριστερή 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Δεξιά πλήρης οθόνη"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Πάνω πλήρης οθόνη"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Πάνω 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Πάνω 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Επαναφορά"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Κούμπωμα αριστερά"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Κούμπωμα δεξιά"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Άνοιγμα ρυθμίσεων από προεπιλογή"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Επιλογή τρόπου ανοίγματος συνδέσμων ιστού για την εφαρμογή"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Στην εφαρμογή"</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rAU/strings.xml b/libs/WindowManager/Shell/res/values-en-rAU/strings.xml
index 358e31476242..8b1a14f66195 100644
--- a/libs/WindowManager/Shell/res/values-en-rAU/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rAU/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Left 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Left 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Right full screen"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Top full screen"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Top 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Top 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Restore"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Snap left"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Snap right"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Open by default settings"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Choose how to open web links for this app"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In the app"</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rCA/strings.xml b/libs/WindowManager/Shell/res/values-en-rCA/strings.xml
index 923f30b9a5ba..20d141e7808c 100644
--- a/libs/WindowManager/Shell/res/values-en-rCA/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rCA/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Left 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Left 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Right full screen"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Swap Apps"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Top full screen"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Top 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Top 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Restore"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Snap left"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Snap right"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Resize app window left"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Resize app window right"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximize or restore window size"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Enter split screen mode"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Enter desktop windowing mode"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Resize window to left"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Resize window to right"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximize or restore window size"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximize or restore window size"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimize app window"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Open by default settings"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Choose how to open web links for this app"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In the app"</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rGB/strings.xml b/libs/WindowManager/Shell/res/values-en-rGB/strings.xml
index 358e31476242..8b1a14f66195 100644
--- a/libs/WindowManager/Shell/res/values-en-rGB/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rGB/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Left 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Left 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Right full screen"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Top full screen"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Top 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Top 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Restore"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Snap left"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Snap right"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Open by default settings"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Choose how to open web links for this app"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In the app"</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rIN/strings.xml b/libs/WindowManager/Shell/res/values-en-rIN/strings.xml
index 358e31476242..8b1a14f66195 100644
--- a/libs/WindowManager/Shell/res/values-en-rIN/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rIN/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Left 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Left 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Right full screen"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Top full screen"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Top 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Top 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Restore"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Snap left"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Snap right"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Open by default settings"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Choose how to open web links for this app"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In the app"</string>
diff --git a/libs/WindowManager/Shell/res/values-es-rUS/strings.xml b/libs/WindowManager/Shell/res/values-es-rUS/strings.xml
index 7a2e8cffffcf..24c2bed5e79e 100644
--- a/libs/WindowManager/Shell/res/values-es-rUS/strings.xml
+++ b/libs/WindowManager/Shell/res/values-es-rUS/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Izquierda: 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Izquierda: 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Pantalla derecha completa"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Intercambiar apps"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Pantalla superior completa"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Superior: 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Superior: 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Restablecer"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Ajustar a la izquierda"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Ajustar a la derecha"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Ajustar el tamaño de la ventana de la app hacia la izquierda"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Ajustar el tamaño de la ventana de la app hacia la derecha"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximizar o restablecer el tamaño de la ventana"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Activar el modo de pantalla dividida"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Ingresar al modo ventana de computadora"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ajustar el tamaño de la ventana hacia la izquierda"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ajustar el tamaño de la ventana hacia la derecha"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar o restablecer el tamaño de la ventana"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizar o restablecer el tamaño de la ventana"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizar ventana de la app"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Abrir con la configuración predeterminada"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Elige cómo abrir vínculos web para esta app"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"En la app"</string>
diff --git a/libs/WindowManager/Shell/res/values-es/strings.xml b/libs/WindowManager/Shell/res/values-es/strings.xml
index 2a30bfbd1ba1..f36135e1febd 100644
--- a/libs/WindowManager/Shell/res/values-es/strings.xml
+++ b/libs/WindowManager/Shell/res/values-es/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Izquierda 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Izquierda 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Pantalla derecha completa"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Pantalla superior completa"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Superior 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Superior 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Restaurar"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Acoplar a la izquierda"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Acoplar a la derecha"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Abrir con los ajustes predeterminados"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Elige cómo quieres abrir los enlaces web de esta aplicación"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"En la aplicación"</string>
diff --git a/libs/WindowManager/Shell/res/values-et/strings.xml b/libs/WindowManager/Shell/res/values-et/strings.xml
index 9a15f90ac27e..56b5f0bb0874 100644
--- a/libs/WindowManager/Shell/res/values-et/strings.xml
+++ b/libs/WindowManager/Shell/res/values-et/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Vasak: 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Vasak: 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Parem täisekraan"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Rakenduste vahetamine"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Ülemine täisekraan"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Ülemine: 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Ülemine: 50%"</string>
@@ -124,7 +125,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Hõljuv"</string>
<string name="select_text" msgid="5139083974039906583">"Vali"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Ekraanipilt"</string>
- <string name="open_in_browser_text" msgid="9181692926376072904">"Avamine brauseris"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Ava brauseris"</string>
<string name="open_in_app_text" msgid="2874590745116268525">"Ava rakenduses"</string>
<string name="new_window_text" msgid="6318648868380652280">"Uus aken"</string>
<string name="manage_windows_text" msgid="5567366688493093920">"Akende haldamine"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Taasta"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Tõmmake vasakule"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Tõmmake paremale"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Rakenduse akna suuruse muutmine vasakul"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Rakenduse akna suuruse muutmine paremal"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Akna suuruse maksimeerimine või taastamine"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Poolitatud ekraani režiimi sisenemine"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Töölaua akende kuvamise režiimi sisenemine"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Akna suuruse muutmine, vasakule"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Akna suuruse muutmine, paremale"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Akna suuruse maksimeerimine või taastamine"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Akna suuruse maksimeerimine või taastamine"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Rakenduse akna minimeerimine"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Avamisviisi vaikeseaded"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Valige, kuidas avada selle rakenduse puhul veebilinke"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Rakenduses"</string>
diff --git a/libs/WindowManager/Shell/res/values-eu/strings.xml b/libs/WindowManager/Shell/res/values-eu/strings.xml
index 7c03b24eaef8..b77d0eb642f7 100644
--- a/libs/WindowManager/Shell/res/values-eu/strings.xml
+++ b/libs/WindowManager/Shell/res/values-eu/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Ezarri ezkerraldea % 50en"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Ezarri ezkerraldea % 30en"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Ezarri eskuinaldea pantaila osoan"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Ezarri goialdea pantaila osoan"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Ezarri goialdea % 70en"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Ezarri goialdea % 50en"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Leheneratu"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Ezarri ezkerrean"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Ezarri eskuinean"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Modu lehenetsian irekitzearen ezarpenak"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Aukeratu nola ireki sareko estekak aplikazio honetan"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Aplikazioan"</string>
diff --git a/libs/WindowManager/Shell/res/values-fa/strings.xml b/libs/WindowManager/Shell/res/values-fa/strings.xml
index f9a3c355773c..22ef61f62e13 100644
--- a/libs/WindowManager/Shell/res/values-fa/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fa/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"٪۵۰ چپ"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"٪۳۰ چپ"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"تمام‌صفحه راست"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"جابه‌جا کردن برنامه‌ها"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"تمام‌صفحه بالا"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"٪۷۰ بالا"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"٪۵۰ بالا"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"بازیابی کردن"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"کشیدن به‌چپ"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"کشیدن به‌راست"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"تغییر اندازه پنجره برنامه در چپ"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"تغییر اندازه پنجره برنامه در راست"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"بیشینه‌سازی یا بازیابی اندازه پنجره"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"ورود به حالت صفحه تقسیم‌شده"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"رفتن به حالت پردازش پنجره‌ای میز کار"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"تغییر اندازه پنجره به چپ"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"تغییر اندازه پنجره به راست"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"بیشینه‌سازی یا بازیابی اندازه پنجره"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"بیشینه‌سازی یا بازیابی اندازه پنجره"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"کمینه‌سازی پنجره برنامه"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"تنظیمات باز کردن به‌طور پیش‌فرض"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"انتخاب روش باز کردن پیوندهای وب مربوط به این برنامه"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"در برنامه"</string>
diff --git a/libs/WindowManager/Shell/res/values-fi/strings.xml b/libs/WindowManager/Shell/res/values-fi/strings.xml
index d89e36aad3d3..06ff6e74322c 100644
--- a/libs/WindowManager/Shell/res/values-fi/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fi/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Vasen 50 %"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Vasen 30 %"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Oikea koko näytölle"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Yläosa koko näytölle"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Yläosa 70 %"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Yläosa 50 %"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Palauta"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Siirrä vasemmalle"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Siirrä oikealle"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Avaa oletusasetusten mukaan"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Valitse, miten verkkolinkit avataan tässä sovelluksessa"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Sovelluksessa"</string>
diff --git a/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml b/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml
index e2730d422013..08ff1d35a8c7 100644
--- a/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50 % à la gauche"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30 % à la gauche"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Plein écran à la droite"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Plein écran dans le haut"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70 % dans le haut"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50 % dans le haut"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Restaurer"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Épingler à gauche"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Épingler à droite"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Ouvrir les paramètres par défaut"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Choisissez comment ouvrir les liens Web pour cette appli"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Dans l\'appli"</string>
diff --git a/libs/WindowManager/Shell/res/values-fr/strings.xml b/libs/WindowManager/Shell/res/values-fr/strings.xml
index a97a48cdcd46..9ced5c7bafd4 100644
--- a/libs/WindowManager/Shell/res/values-fr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fr/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Écran de gauche à 50 %"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Écran de gauche à 30 %"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Écran de droite en plein écran"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Écran du haut en plein écran"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Écran du haut à 70 %"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Écran du haut à 50 %"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Restaurer"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Ancrer à gauche"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Ancrer à droite"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Ouvrir les paramètres par défaut"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Choisir comment ouvrir les liens Web pour cette appli"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Dans l\'application"</string>
diff --git a/libs/WindowManager/Shell/res/values-gl/strings.xml b/libs/WindowManager/Shell/res/values-gl/strings.xml
index 445cc70d4e8d..aa2f6392842b 100644
--- a/libs/WindowManager/Shell/res/values-gl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-gl/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50 % á esquerda"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30 % á esquerda"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Pantalla completa á dereita"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Cambiar as aplicacións"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Pantalla completa arriba"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70 % arriba"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50 % arriba"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Restaurar"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Axustar á esquerda"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Axustar á dereita"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Axustar o tamaño da ventá da aplicación á esquerda"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Axustar o tamaño da ventá da aplicación á dereita"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximizar ou restaurar o tamaño da ventá"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Entrar no modo de pantalla dividida"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Entrar no modo de ventás do ordenador"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Axustar o tamaño da ventá á esquerda"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Axustar o tamaño da ventá á dereita"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar ou restaurar o tamaño da ventá"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizar ou restaurar o tamaño da ventá"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizar a ventá da aplicación"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Abrir coa configuración predeterminada"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Escoller como abrir as ligazóns web para esta aplicación"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Na aplicación"</string>
diff --git a/libs/WindowManager/Shell/res/values-gu/strings.xml b/libs/WindowManager/Shell/res/values-gu/strings.xml
index 6bef1bb6e061..d8c422fd1bd2 100644
--- a/libs/WindowManager/Shell/res/values-gu/strings.xml
+++ b/libs/WindowManager/Shell/res/values-gu/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ડાબે 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ડાબે 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"જમણી સ્ક્રીન સ્ક્રીન"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"શીર્ષ પૂર્ણ સ્ક્રીન"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"શીર્ષ 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"શીર્ષ 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"રિસ્ટોર કરો"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"ડાબે સ્નૅપ કરો"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"જમણે સ્નૅપ કરો"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"\'ડિફૉલ્ટ તરીકે ખોલો\' સેટિંગ"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"આ ઍપ માટે વેબ લિંક ખોલવાની રીત પસંદ કરો"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ઍપમાં"</string>
diff --git a/libs/WindowManager/Shell/res/values-hi/strings.xml b/libs/WindowManager/Shell/res/values-hi/strings.xml
index 95b3fc0fafd5..f8215afb1c05 100644
--- a/libs/WindowManager/Shell/res/values-hi/strings.xml
+++ b/libs/WindowManager/Shell/res/values-hi/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"बाईं स्क्रीन को 50% बनाएं"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"बाईं स्क्रीन को 30% बनाएं"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"दाईं स्क्रीन को फ़ुल स्क्रीन बनाएं"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ऊपर की स्क्रीन को फ़ुल स्क्रीन बनाएं"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ऊपर की स्क्रीन को 70% बनाएं"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ऊपर की स्क्रीन को 50% बनाएं"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"पहले जैसा करें"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"बाईं ओर स्नैप करें"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"दाईं ओर स्नैप करें"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"डिफ़ॉल्ट सेटिंग के हिसाब से खोलें"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"इस ऐप्लिकेशन के लिए वेब लिंक खोलने का तरीका चुनें"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ऐप्लिकेशन में"</string>
diff --git a/libs/WindowManager/Shell/res/values-hr/strings.xml b/libs/WindowManager/Shell/res/values-hr/strings.xml
index 28bab79042a0..157822c5dc4f 100644
--- a/libs/WindowManager/Shell/res/values-hr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-hr/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Lijevi zaslon na 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Lijevi zaslon na 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Desni zaslon u cijeli zaslon"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Zamijeni aplikacije"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Gornji zaslon u cijeli zaslon"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Gornji zaslon na 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Gornji zaslon na 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Vrati"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Poravnaj lijevo"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Poravnaj desno"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Promijeni veličinu prozora aplikacije ulijevo"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Promijeni veličinu prozora aplikacije udesno"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maksimiziraj ili vrati veličinu prozora"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Pokreni način podijeljenog zaslona"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Pokreni način prikaza u prozorima na računalu"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Promijeni veličinu prozora ulijevo"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Promijeni veličinu prozora udesno"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimiziraj ili vrati veličinu prozora"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimiziraj ili vrati veličinu prozora"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimiziraj prozor aplikacije"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Otvori prema zadanim postavkama"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Odaberite način otvaranja web-veza za ovu aplikaciju"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"U aplikaciji"</string>
diff --git a/libs/WindowManager/Shell/res/values-hu/strings.xml b/libs/WindowManager/Shell/res/values-hu/strings.xml
index 1afb57d8c80a..76e7579232d9 100644
--- a/libs/WindowManager/Shell/res/values-hu/strings.xml
+++ b/libs/WindowManager/Shell/res/values-hu/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Bal oldali 50%-ra"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Bal oldali 30%-ra"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Jobb oldali teljes képernyőre"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Felső teljes képernyőre"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Felső 70%-ra"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Felső 50%-ra"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Visszaállítás"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Balra igazítás"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Jobbra igazítás"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Alapértelmezett beállítások megnyitása"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Az app webes linkjeinek megnyitásához használt módszer"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Az alkalmazásban"</string>
diff --git a/libs/WindowManager/Shell/res/values-hy/strings.xml b/libs/WindowManager/Shell/res/values-hy/strings.xml
index 7266942434c0..0eb75c79e4b8 100644
--- a/libs/WindowManager/Shell/res/values-hy/strings.xml
+++ b/libs/WindowManager/Shell/res/values-hy/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Ձախ էկրանը՝ 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Ձախ էկրանը՝ 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Աջ էկրանը՝ լիաէկրան"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Վերևի էկրանը՝ լիաէկրան"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Վերևի էկրանը՝ 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Վերևի էկրանը՝ 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Վերականգնել"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Ամրացնել ձախ կողմում"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Ամրացնել աջ կողմում"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Բացել կարգավորումներն ըստ կանխադրման"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Ընտրեք՝ ինչպես բացել այս հավելվածի վեբ հղումները"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Հավելվածում"</string>
diff --git a/libs/WindowManager/Shell/res/values-in/strings.xml b/libs/WindowManager/Shell/res/values-in/strings.xml
index 1197413553db..813e9783f336 100644
--- a/libs/WindowManager/Shell/res/values-in/strings.xml
+++ b/libs/WindowManager/Shell/res/values-in/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Kiri 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Kiri 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Layar penuh di kanan"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Layar penuh di atas"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Atas 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Atas 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Pulihkan"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Maksimalkan ke kiri"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Maksimalkan ke kanan"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Buka dengan setelan default"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Pilih cara membuka link web untuk aplikasi ini"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Di aplikasi"</string>
diff --git a/libs/WindowManager/Shell/res/values-is/strings.xml b/libs/WindowManager/Shell/res/values-is/strings.xml
index 9646cb375f2f..61c1d0e7759c 100644
--- a/libs/WindowManager/Shell/res/values-is/strings.xml
+++ b/libs/WindowManager/Shell/res/values-is/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Vinstri 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Vinstri 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Hægri á öllum skjánum"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Skipta á milli forrita"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Efri á öllum skjánum"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Efri 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Efri 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Endurheimta"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Smella til vinstri"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Smella til hægri"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Breyta stærð forritsglugga til vinstri"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Breyta stærð forritsglugga til hægri"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Hámarka eða endurheimta stærð glugga"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Skipta skjánum"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Opna gluggastillingu í tölvu"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Breyta stærð glugga til vinstri"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Breyta stærð glugga til hægri"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Hámarka eða endurheimta stærð glugga"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Hámarka eða endurheimta stærð glugga"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Lágmarka stærð forritsglugga"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Stillingar sjálfvirkrar opnunar"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Veldu hvernig veftenglar opnast í forritinu"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Í forritinu"</string>
diff --git a/libs/WindowManager/Shell/res/values-it/strings.xml b/libs/WindowManager/Shell/res/values-it/strings.xml
index c3f6b3b49d9f..fab259e03b3b 100644
--- a/libs/WindowManager/Shell/res/values-it/strings.xml
+++ b/libs/WindowManager/Shell/res/values-it/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Schermata sinistra al 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Schermata sinistra al 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Schermata destra a schermo intero"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Scambia app"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Schermata superiore a schermo intero"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Schermata superiore al 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Schermata superiore al 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Ripristina"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Aggancia a sinistra"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Aggancia a destra"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Ridimensiona la finestra dell\'app a sinistra"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Ridimensiona la finestra dell\'app a destra"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Ingrandisci o ripristina le dimensioni della finestra"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Attiva la modalità schermo diviso"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Attiva la modalità finestre del desktop"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ridimensiona la finestra a sinistra"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ridimensiona la finestra a destra"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Ingrandisci o ripristina le dimensioni della finestra"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Ingrandisci o ripristina le dimensioni della finestra"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Riduci a icona la finestra dell\'app"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Apri in base alle impostazioni predefinite"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Scegli come aprire i link web per questa app"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"All\'interno dell\'app"</string>
diff --git a/libs/WindowManager/Shell/res/values-iw/strings.xml b/libs/WindowManager/Shell/res/values-iw/strings.xml
index cf9c18b43a5e..1cd89a615cb2 100644
--- a/libs/WindowManager/Shell/res/values-iw/strings.xml
+++ b/libs/WindowManager/Shell/res/values-iw/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"שמאלה 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"שמאלה 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"מסך ימני מלא"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"מסך עליון מלא"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"עליון 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"עליון 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"שחזור"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"הצמדה לשמאל"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"הצמדה לימין"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"הגדרות לפתיחה כברירת מחדל"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"כאן בוחרים איך לפתוח באפליקציה הזו קישורים לדפי אינטרנט"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"באפליקציה"</string>
diff --git a/libs/WindowManager/Shell/res/values-ja/strings.xml b/libs/WindowManager/Shell/res/values-ja/strings.xml
index c955ecb4f508..3fe2a515437f 100644
--- a/libs/WindowManager/Shell/res/values-ja/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ja/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"左 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"左 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"右全画面"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"アプリを切り替える"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"上部全画面"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"上 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"上 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"復元"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"左にスナップ"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"右にスナップ"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"アプリ ウィンドウを左側にサイズ変更する"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"アプリ ウィンドウを右側にサイズ変更する"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ウィンドウを最大化する、またはウィンドウを元のサイズに戻す"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"分割画面モードに切り替える"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"デスクトップ ウィンドウ モードに切り替える"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ウィンドウを左側にサイズ変更する"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ウィンドウを右側にサイズ変更する"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ウィンドウを最大化する、またはウィンドウを元のサイズに戻す"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ウィンドウを最大化する、またはウィンドウを元のサイズに戻す"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"アプリ ウィンドウを最小化する"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"デフォルトの設定で開く"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"このアプリのウェブリンクを開く方法を選択"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"アプリ内"</string>
diff --git a/libs/WindowManager/Shell/res/values-ka/strings.xml b/libs/WindowManager/Shell/res/values-ka/strings.xml
index 2c286d2644df..02e0f320eea6 100644
--- a/libs/WindowManager/Shell/res/values-ka/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ka/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"მარცხენა ეკრანი — 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"მარცხენა ეკრანი — 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"მარჯვენა ნაწილის სრულ ეკრანზე გაშლა"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ზედა ნაწილის სრულ ეკრანზე გაშლა"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ზედა ეკრანი — 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ზედა ეკრანი — 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"აღდგენა"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"მარცხნივ გადატანა"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"მარჯვნივ გადატანა"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"პარამეტრების ნაგულისხმევად გახსნა"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ამ აპისთვის ვებ ბმულების გახსნის წესის არჩევა"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"აპში"</string>
diff --git a/libs/WindowManager/Shell/res/values-kk/strings.xml b/libs/WindowManager/Shell/res/values-kk/strings.xml
index 58afb7fdd6c4..61c331df7598 100644
--- a/libs/WindowManager/Shell/res/values-kk/strings.xml
+++ b/libs/WindowManager/Shell/res/values-kk/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50% сол жақта"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30% сол жақта"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Оң жағын толық экранға шығару"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Жоғарғы жағын толық экранға шығару"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70% жоғарғы жақта"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50% жоғарғы жақта"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Қалпына келтіру"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Солға тіркеу"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Оңға тіркеу"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Әдепкісінше ашу параметрлері"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Осы қолданбадағы веб-сілтемелерді ашу жолын таңдаңыз"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Қолданбада"</string>
diff --git a/libs/WindowManager/Shell/res/values-km/strings.xml b/libs/WindowManager/Shell/res/values-km/strings.xml
index 6abb66dc9ade..f5118972d93f 100644
--- a/libs/WindowManager/Shell/res/values-km/strings.xml
+++ b/libs/WindowManager/Shell/res/values-km/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ឆ្វេង 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ឆ្វេង 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"អេក្រង់ពេញខាងស្តាំ"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ប្ដូរកម្មវិធី"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"អេក្រង់ពេញខាងលើ"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ខាងលើ 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ខាងលើ 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"ស្ដារ"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"ផ្លាស់ទីទៅឆ្វេង"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"ផ្លាស់ទីទៅស្ដាំ"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ប្ដូរទំហំវិនដូកម្មវិធីទៅឆ្វេង"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ប្ដូរទំហំវិនដូកម្មវិធីទៅស្ដាំ"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ស្ដារ ឬបង្កើនទំហំវិនដូជាអតិបរមា"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"ចូលទៅមុខងារ​បំបែក​អេក្រង់"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"ចូលទៅមុខងារវិនដូកុំព្យូទ័រ"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ប្ដូរទំហំវិនដូទៅឆ្វេង"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ប្ដូរទំហំវិនដូទៅស្ដាំ"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ស្ដារ ឬបង្កើនទំហំវិនដូជាអតិបរមា"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ស្ដារ ឬបង្កើនទំហំវិនដូជាអតិបរមា"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"បង្រួមវិនដូកម្មវិធី"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"ការកំណត់បើកតាមលំនាំដើម"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ជ្រើសរើសរបៀបបើកតំណបណ្ដាញសម្រាប់កម្មវិធីនេះ"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"នៅក្នុងកម្មវិធី"</string>
diff --git a/libs/WindowManager/Shell/res/values-kn/strings.xml b/libs/WindowManager/Shell/res/values-kn/strings.xml
index 1da093d666bb..3bd5527a9fe5 100644
--- a/libs/WindowManager/Shell/res/values-kn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-kn/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50% ಎಡಕ್ಕೆ"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30% ಎಡಕ್ಕೆ"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"ಬಲ ಫುಲ್ ಸ್ಕ್ರೀನ್"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ಆ್ಯಪ್‌ಗಳನ್ನು ಸ್ವ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ಮೇಲಿನ ಫುಲ್ ಸ್ಕ್ರೀನ್"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70% ಮೇಲಕ್ಕೆ"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50% ಮೇಲಕ್ಕೆ"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"ಮರುಸ್ಥಾಪಿಸಿ"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"ಎಡಕ್ಕೆ ಸ್ನ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"ಬಲಕ್ಕೆ ಸ್ನ್ಯಾಪ್ ಮಾಡಿ"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ಮರುಗಾತ್ರಗೊಳಿಸಿ ಆ್ಯಪ್ ವಿಂಡೋ ಎಡ"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ಮರುಗಾತ್ರಗೊಳಿಸಿ ಆ್ಯಪ್ ವಿಂಡೋ ಬಲ"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ವಿಂಡೋ ಗಾತ್ರವನ್ನು ಗರಿಷ್ಠಗೊಳಿಸಿ ಅಥವಾ ಮರುಸ್ಥಾಪಿಸಿ"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"ಸ್ಪ್ಲಿಟ್ ಸ್ಕ್ರೀನ್ ಮೋಡ್‌ಗೆ ಪ್ರವೇಶಿಸಿ"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"ಡೆಸ್ಕ್‌ಟಾಪ್ ವಿಂಡೋಯಿಂಗ್ ಮೋಡ್‌ಗೆ ಪ್ರವೇಶಿಸಿ"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ಮರುಗಾತ್ರಗೊಳಿಸಿ ವಿಂಡೋವನ್ನು ಎಡಕ್ಕೆ ಸರಿಸಿ"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ಮರುಗಾತ್ರಗೊಳಿಸಿ ವಿಂಡೋವನ್ನು ಬಲಕ್ಕೆ ಸರಿಸಿ"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ವಿಂಡೋ ಗಾತ್ರವನ್ನು ಗರಿಷ್ಠಗೊಳಿಸಿ ಅಥವಾ ಮರುಸ್ಥಾಪಿಸಿ"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ವಿಂಡೋ ಗಾತ್ರವನ್ನು ಗರಿಷ್ಠಗೊಳಿಸಿ ಅಥವಾ ಮರುಸ್ಥಾಪಿಸಿ"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ಆ್ಯಪ್ ವಿಂಡೋವನ್ನು ಮಿನಿಮೈಜ್ ಮಾಡಿ"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"ಡೀಫಾಲ್ಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಂದ ತೆರೆಯಿರಿ"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ಈ ಆ್ಯಪ್‌ಗೆ ವೆಬ್ ಲಿಂಕ್‌ಗಳನ್ನು ಹೇಗೆ ತೆರೆಯಬೇಕು ಎಂಬುದನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ಆ್ಯಪ್‌ನಲ್ಲಿ"</string>
diff --git a/libs/WindowManager/Shell/res/values-ko/strings.xml b/libs/WindowManager/Shell/res/values-ko/strings.xml
index 22f2e0632b46..13c700952609 100644
--- a/libs/WindowManager/Shell/res/values-ko/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ko/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"왼쪽 화면 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"왼쪽 화면 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"오른쪽 화면 전체화면"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"위쪽 화면 전체화면"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"위쪽 화면 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"위쪽 화면 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"복원"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"왼쪽으로 맞추기"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"오른쪽으로 맞추기"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"기본값으로 열기 설정"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"이 앱에서 웹 링크를 여는 방법을 선택하세요"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"앱에서"</string>
diff --git a/libs/WindowManager/Shell/res/values-ky/strings.xml b/libs/WindowManager/Shell/res/values-ky/strings.xml
index 86529a292cff..eb990f142da8 100644
--- a/libs/WindowManager/Shell/res/values-ky/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ky/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Сол жактагы экранды 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Сол жактагы экранды 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Оң жактагы экранды толук экран режимине өткөрүү"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Үстүнкү экранды толук экран режимине өткөрүү"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Үстүнкү экранды 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Үстүнкү экранды 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Калыбына келтирүү"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Солго жылдыруу"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Оңго жылдыруу"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Демейки шартта ачылуучу шилтемелердин параметрлери"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Колдонмодо шилтемелер кантип ачыларын тандаңыз"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Колдонмодо"</string>
diff --git a/libs/WindowManager/Shell/res/values-lo/strings.xml b/libs/WindowManager/Shell/res/values-lo/strings.xml
index fab0cb245cfd..50164c081bb4 100644
--- a/libs/WindowManager/Shell/res/values-lo/strings.xml
+++ b/libs/WindowManager/Shell/res/values-lo/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ຊ້າຍ 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ຊ້າຍ 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"ເຕັມໜ້າຈໍຂວາ"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ເຕັມໜ້າຈໍເທິງສຸດ"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ເທິງສຸດ 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ເທິງສຸດ 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"ກູ້ຄືນ"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"ແນບຊ້າຍ"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"ແນບຂວາ"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"ເປີດຕາມການຕັ້ງຄ່າເລີ່ມຕົ້ນ"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ເລືອກວິທີເປີດລິ້ງເວັບສຳລັບແອັບນີ້"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ໃນແອັບ"</string>
diff --git a/libs/WindowManager/Shell/res/values-lt/strings.xml b/libs/WindowManager/Shell/res/values-lt/strings.xml
index d036e35e9cbf..ede25645c76c 100644
--- a/libs/WindowManager/Shell/res/values-lt/strings.xml
+++ b/libs/WindowManager/Shell/res/values-lt/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Kairysis ekranas 50 %"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Kairysis ekranas 30 %"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Dešinysis ekranas viso ekrano režimu"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Programų keitimas"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Viršutinis ekranas viso ekrano režimu"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Viršutinis ekranas 70 %"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Viršutinis ekranas 50 %"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Atkurti"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Pritraukti kairėje"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Pritraukti dešinėje"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Pakeisti programos lango dydį kairėje"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Pakeisti programos lango dydį dešinėje"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Padidinti arba atkurti lango dydį"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Išskaidyto ekrano režimo įjungimas"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Įjungti darbalaukio pateikimo lange režimą"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Pakeisti lango dydį kairėje"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Pakeisti lango dydį dešinėje"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Padidinti arba atkurti lango dydį"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Padidinti arba atkurti lango dydį"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Sumažinti programos langą"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Atidaryti pagal numatytuosius nustatymus"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Pasirinkite, kaip atidaryti šios programos žiniatinklio nuorodas"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Programoje"</string>
diff --git a/libs/WindowManager/Shell/res/values-lv/strings.xml b/libs/WindowManager/Shell/res/values-lv/strings.xml
index dc1f7b04c21a..a5547b0f71ea 100644
--- a/libs/WindowManager/Shell/res/values-lv/strings.xml
+++ b/libs/WindowManager/Shell/res/values-lv/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Pa kreisi 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Pa kreisi 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Labā daļa pa visu ekrānu"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Augšdaļa pa visu ekrānu"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Augšdaļa 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Augšdaļa 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Atjaunot"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Piestiprināt pa kreisi"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Piestiprināt pa labi"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Atvērt pēc noklusējuma iestatījumiem"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Izvēlieties, kā atvērt šajā lietotnē norādītās saites"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Lietotnē"</string>
diff --git a/libs/WindowManager/Shell/res/values-mk/strings.xml b/libs/WindowManager/Shell/res/values-mk/strings.xml
index 3da196b52984..6593e2d9e66b 100644
--- a/libs/WindowManager/Shell/res/values-mk/strings.xml
+++ b/libs/WindowManager/Shell/res/values-mk/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Левиот 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Левиот 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Десниот на цел екран"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Горниот на цел екран"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Горниот 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Горниот 50%"</string>
@@ -133,7 +135,7 @@
<string name="collapse_menu_text" msgid="7515008122450342029">"Затворете го менито"</string>
<string name="desktop_mode_app_header_chip_text" msgid="6366422614991687237">"Отвори го менито"</string>
<string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Максимизирај го екранот"</string>
- <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Промени ја големината"</string>
+ <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Промени ја гол."</string>
<string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"Апликацијата не може да се премести овде"</string>
<string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"Реалистично"</string>
<string name="desktop_mode_maximize_menu_immersive_restore_button_text" msgid="4900114367354709257">"Врати"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Врати"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Фотографирај лево"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Фотографирај десно"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Отвори според стандардните поставки"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Изберете како да се отвораат линковите за апликацијава"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Во апликацијата"</string>
diff --git a/libs/WindowManager/Shell/res/values-ml/strings.xml b/libs/WindowManager/Shell/res/values-ml/strings.xml
index c2e747c590d8..89215b66ba01 100644
--- a/libs/WindowManager/Shell/res/values-ml/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ml/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ഇടത് 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ഇടത് 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"വലത് പൂർണ്ണ സ്ക്രീൻ"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ആപ്പുകൾ സ്വാപ്പ് ചെയ്യുക"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"മുകളിൽ പൂർണ്ണ സ്ക്രീൻ"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"മുകളിൽ 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"മുകളിൽ 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"പുനഃസ്ഥാപിക്കുക"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"ഇടതുവശത്തേക്ക് സ്‌നാപ്പ് ചെയ്യുക"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"വലതുവശത്തേക്ക് സ്‌നാപ്പ് ചെയ്യുക"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ഇടത് ആപ്പ് വിൻഡോ വലുപ്പം മാറ്റുക"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"വലത് ആപ്പ് വിൻഡോ വലുപ്പം മാറ്റുക"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"വിന്‍ഡോ വലുപ്പം വലുതാക്കുക അല്ലെങ്കിൽ പഴയത് പുനഃസ്ഥാപിക്കുക"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"സ്പ്ലിറ്റ് സ്ക്രീൻ മോഡിൽ പ്രവേശിക്കുക"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"ഡെസ്ക്ടോപ്പ് വിൻഡോയിംഗ് മോഡിൽ പ്രവേശിക്കുക"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ഇടത്തേക്ക് ആപ്പ് വിൻഡോ വലുപ്പം മാറ്റുക"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"വലത്തേക്ക് ആപ്പ് വിൻഡോ വലുപ്പം മാറ്റുക"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"വിന്‍ഡോ വലുപ്പം വലുതാക്കുക അല്ലെങ്കിൽ പഴയത് പുനഃസ്ഥാപിക്കുക"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"വിന്‍ഡോ വലുപ്പം വലുതാക്കുക അല്ലെങ്കിൽ പഴയത് പുനഃസ്ഥാപിക്കുക"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ആപ്പ് വിന്‍ഡോ ചെറുതാക്കുക"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"ഡിഫോൾട്ട് ക്രമീകരണം ഉപയോഗിച്ച് തുറക്കുക"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ഈ ആപ്പിനായി വെബ് ലിങ്കുകൾ എങ്ങനെ തുറക്കണമെന്ന് തിരഞ്ഞെടുക്കൂ"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ആപ്പിൽ"</string>
diff --git a/libs/WindowManager/Shell/res/values-mn/strings.xml b/libs/WindowManager/Shell/res/values-mn/strings.xml
index 045fc2101481..8914e1fa782a 100644
--- a/libs/WindowManager/Shell/res/values-mn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-mn/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Зүүн 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Зүүн 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Баруун талын бүтэн дэлгэц"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Дээд талын бүтэн дэлгэц"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Дээд 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Дээд 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Сэргээх"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Зүүн тийш зэрэгцүүлэх"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Баруун тийш зэрэгцүүлэх"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Өгөгдмөл тохиргоогоор нээх"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Энэ аппад веб холбоосыг хэрхэн нээхийг сонгоно уу"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Аппад"</string>
diff --git a/libs/WindowManager/Shell/res/values-mr/strings.xml b/libs/WindowManager/Shell/res/values-mr/strings.xml
index 01398d5c4d3a..81594798ef48 100644
--- a/libs/WindowManager/Shell/res/values-mr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-mr/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"डावी 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"डावी 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"उजवी फुल स्क्रीन"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"शीर्ष फुल स्क्रीन"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"शीर्ष 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"शीर्ष 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"रिस्टोअर करा"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"डावीकडे स्नॅप करा"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"उजवीकडे स्नॅप करा"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"बाय डीफॉल्ट सेटिंग्ज उघडा"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"या अ‍ॅपसाठीच्या वेब लिंक कशा उघडाव्यात हे निवडा"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ॲपमध्ये"</string>
diff --git a/libs/WindowManager/Shell/res/values-ms/strings.xml b/libs/WindowManager/Shell/res/values-ms/strings.xml
index 3d687dcbd800..a54ef140c9a1 100644
--- a/libs/WindowManager/Shell/res/values-ms/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ms/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Kiri 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Kiri 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Skrin penuh kanan"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Tukar Apl"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Skrin penuh atas"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Atas 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Atas 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Pulihkan"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Autojajar ke kiri"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Autojajar ke kanan"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Butang kiri ubah saiz tetingkap apl"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Butang kanan ubah saiz tetingkap apl"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maksimumkan atau pulihkan saiz tetingkap"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Masuki mod skrin pisah"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Masuki mod tetingkap desktop"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ubah saiz tetingkap ke sebelah kiri"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ubah saiz tetingkap ke sebelah kanan"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimumkan atau pulihkan saiz tetingkap"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimumkan atau pulihkan saiz tetingkap"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimumkan tetingkap apl"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Buka tetapan secara lalai"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Pilih cara membuka pautan web untuk apl ini"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Pada apl"</string>
diff --git a/libs/WindowManager/Shell/res/values-my/strings.xml b/libs/WindowManager/Shell/res/values-my/strings.xml
index 08a935f75355..b749b670f74d 100644
--- a/libs/WindowManager/Shell/res/values-my/strings.xml
+++ b/libs/WindowManager/Shell/res/values-my/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ဘယ်ဘက် မျက်နှာပြင် ၅၀%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ဘယ်ဘက် မျက်နှာပြင် ၃၀%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"ညာဘက် မျက်နှာပြင်အပြည့်"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"အပေါ်ဘက် မျက်နှာပြင်အပြည့်"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"အပေါ်ဘက် မျက်နှာပြင် ၇၀%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"အပေါ်ဘက် မျက်နှာပြင် ၅၀%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"ပြန်ပြောင်းရန်"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"ဘယ်တွင် ချဲ့ရန်"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"ညာတွင် ချဲ့ရန်"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"မူရင်းဆက်တင်ဖြင့် ဖွင့်ရန်"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ဤအက်ပ်အတွက် ဝဘ်လင့်ခ်များ မည်သို့ဖွင့်မည်ကို ရွေးပါ"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"အက်ပ်တွင်"</string>
diff --git a/libs/WindowManager/Shell/res/values-nb/strings.xml b/libs/WindowManager/Shell/res/values-nb/strings.xml
index 196507866aaf..86aa19650003 100644
--- a/libs/WindowManager/Shell/res/values-nb/strings.xml
+++ b/libs/WindowManager/Shell/res/values-nb/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Sett størrelsen på den venstre delen av skjermen til 50 %"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Sett størrelsen på den venstre delen av skjermen til 30 %"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Utvid den høyre delen av skjermen til hele skjermen"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Utvid den øverste delen av skjermen til hele skjermen"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Sett størrelsen på den øverste delen av skjermen til 70 %"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Sett størrelsen på den øverste delen av skjermen til 50 %"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Gjenopprett"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Fest til venstre"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Fest til høyre"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Innstillinger for åpning som standard"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Velg hvordan nettlinker skal åpnes for denne appen"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"I appen"</string>
diff --git a/libs/WindowManager/Shell/res/values-ne/strings.xml b/libs/WindowManager/Shell/res/values-ne/strings.xml
index 10e933245e60..bc45b0f45750 100644
--- a/libs/WindowManager/Shell/res/values-ne/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ne/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"बायाँ भाग ५०%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"बायाँ भाग ३०%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"दायाँ भाग फुल स्क्रिन"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"माथिल्लो भाग फुल स्क्रिन"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"माथिल्लो भाग ७०%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"माथिल्लो भाग ५०%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"रिस्टोर गर्नुहोस्"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"बायाँतिर स्न्याप गर्नुहोस्"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"दायाँतिर स्न्याप गर्नुहोस्"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"डिफल्ट सेटिङअनुसार खोल्नुहोस्"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"यो एपका वेब लिंकहरू खोल्ने तरिका छनौट गर्नुहोस्"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"एपमा"</string>
diff --git a/libs/WindowManager/Shell/res/values-nl/strings.xml b/libs/WindowManager/Shell/res/values-nl/strings.xml
index fc8451522f21..20bc65abab18 100644
--- a/libs/WindowManager/Shell/res/values-nl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-nl/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Linkerscherm 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Linkerscherm 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Rechterscherm op volledig scherm"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Apps wisselen"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Bovenste scherm op volledig scherm"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Bovenste scherm 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Bovenste scherm 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Herstellen"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Links uitlijnen"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Rechts uitlijnen"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Formaat van app-venster naar links aanpassen"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Formaat van app-venster naar rechts aanpassen"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Formaat van venster maximaliseren of herstellen"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Modus voor gesplitst scherm openen"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Modus voor desktopvensterfuncties openen"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Formaat van venster naar links aanpassen"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Formaat van venster naar rechts aanpassen"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Formaat van venster maximaliseren of herstellen"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Formaat van venster maximaliseren of herstellen"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"App-venster minimaliseren"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Instellingen voor Standaard openen"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Kies hoe je weblinks voor deze app wilt openen"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In de app"</string>
diff --git a/libs/WindowManager/Shell/res/values-or/strings.xml b/libs/WindowManager/Shell/res/values-or/strings.xml
index be01593fda39..b16092ec46f9 100644
--- a/libs/WindowManager/Shell/res/values-or/strings.xml
+++ b/libs/WindowManager/Shell/res/values-or/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ବାମ ପଟକୁ 50% କରନ୍ତୁ"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ବାମ ପଟେ 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"ଡାହାଣ ପଟକୁ ପୂର୍ଣ୍ଣ ସ୍କ୍ରୀନ୍‍ କରନ୍ତୁ"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ଉପର ଆଡ଼କୁ ପୂର୍ଣ୍ଣ ସ୍କ୍ରୀନ୍‍ କରନ୍ତୁ"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ଉପର ଆଡ଼କୁ 70% କରନ୍ତୁ"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ଉପର ଆଡ଼କୁ 50% କରନ୍ତୁ"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"ରିଷ୍ଟୋର କରନ୍ତୁ"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"ବାମରେ ସ୍ନାପ କରନ୍ତୁ"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"ଡାହାଣରେ ସ୍ନାପ କରନ୍ତୁ"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"ଡିଫଲ୍ଟ ସେଟିଂସକୁ ଖୋଲନ୍ତୁ"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ଏହି ଆପ ପାଇଁ ୱେବ ଲିଙ୍କଗୁଡ଼ିକୁ କିପରି ଖୋଲିବେ, ତାହା ବାଛନ୍ତୁ"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ଆପରେ"</string>
diff --git a/libs/WindowManager/Shell/res/values-pa/strings.xml b/libs/WindowManager/Shell/res/values-pa/strings.xml
index fb4c83e352f7..29de4c45217f 100644
--- a/libs/WindowManager/Shell/res/values-pa/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pa/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ਖੱਬੇ 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ਖੱਬੇ 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"ਸੱਜੇ ਪੂਰੀ ਸਕ੍ਰੀਨ"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ਐਪਾਂ ਨੂੰ ਸਵੈਪ ਕਰੋ"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ਉੱਪਰ ਪੂਰੀ ਸਕ੍ਰੀਨ"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ਉੱਪਰ 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ਉੱਪਰ 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"ਮੁੜ-ਬਹਾਲ ਕਰੋ"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"ਖੱਬੇ ਪਾਸੇ ਸਨੈਪ ਕਰੋ"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"ਸੱਜੇ ਪਾਸੇ ਸਨੈਪ ਕਰੋ"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ਐਪ ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਬਦਲ ਕੇ ਖੱਬੇ ਪਾਸੇ ਕਰੋ"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ਐਪ ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਬਦਲ ਕੇ ਸੱਜੇ ਪਾਸੇ ਕਰੋ"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਵਧਾਓ ਜਾਂ ਮੁੜ-ਬਹਾਲ ਕਰੋ"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"ਸਪਲਿਟ ਸਕ੍ਰੀਨ ਮੋਡ ਵਿੱਚ ਦਾਖਲ ਹੋਵੋ"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"ਡੈਸਕਟਾਪ ਵਿੰਡੋ ਮੋਡ ਵਿੱਚ ਦਾਖਲ ਹੋਵੋ"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਬਦਲ ਕੇ ਖੱਬੇ ਪਾਸੇ ਕਰੋ"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਬਦਲ ਕੇ ਸੱਜੇ ਪਾਸੇ ਕਰੋ"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਵਧਾਓ ਜਾਂ ਮੁੜ-ਬਹਾਲ ਕਰੋ"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਵਧਾਓ ਜਾਂ ਮੁੜ-ਬਹਾਲ ਕਰੋ"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ਐਪ ਵਿੰਡੋ ਨੂੰ ਛੋਟਾ ਕਰੋ"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਸੈਟਿੰਗਾਂ ਮੁਤਾਬਕ ਖੋਲ੍ਹੋ"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ਇਸ ਐਪ ਲਈ ਵੈੱਬ ਲਿੰਕਾਂ ਨੂੰ ਖੋਲ੍ਹਣ ਦਾ ਤਰੀਕਾ ਚੁਣੋ"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ਐਪ ਵਿੱਚ"</string>
diff --git a/libs/WindowManager/Shell/res/values-pl/strings.xml b/libs/WindowManager/Shell/res/values-pl/strings.xml
index fa0e7c318f7e..d06603fbe206 100644
--- a/libs/WindowManager/Shell/res/values-pl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pl/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50% lewej części ekranu"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30% lewej części ekranu"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Prawa część ekranu na pełnym ekranie"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Górna część ekranu na pełnym ekranie"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70% górnej części ekranu"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50% górnej części ekranu"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Przywróć"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Przyciągnij do lewej"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Przyciągnij do prawej"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Ustawienia domyślnego otwierania"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Wybierz, gdzie chcesz otwierać linki z tej aplikacji"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"W aplikacji"</string>
diff --git a/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml b/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml
index d9e5f8c77897..0a3ea7011e1e 100644
--- a/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Esquerda a 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Esquerda a 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Lado direito em tela cheia"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Trocar apps"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Parte superior em tela cheia"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Parte superior a 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Parte superior a 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Restaurar"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Ajustar à esquerda"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Ajustar à direita"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Redimensionar janela do app para a esquerda"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Redimensionar janela do app para a direita"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximizar ou restaurar o tamanho da janela"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Entrar no modo de tela dividida"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Entrar no modo de janela do computador"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionar janela para a esquerda"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionar janela para a direita"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar ou restaurar o tamanho da janela"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizar ou restaurar o tamanho da janela"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizar janela do app"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Configurações \"Abrir por padrão\""</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Escolha como abrir links da Web para este app"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"No app"</string>
diff --git a/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml b/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml
index 28dc7b0d228e..c9d196b922db 100644
--- a/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50% no ecrã esquerdo"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30% no ecrã esquerdo"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Ecrã direito inteiro"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Trocar apps"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Ecrã superior inteiro"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70% no ecrã superior"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50% no ecrã superior"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Restaurar"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Encaixar à esquerda"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Encaixar à direita"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Redimensionar janela da app para a esquerda"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Redimensionar janela da app para a direita"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximizar ou restaurar tamanho da janela"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Aceder ao modo de ecrã dividido"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Aceder ao modo de janelas de computador"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionar janela para a esquerda"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionar janela para a direita"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar ou restaurar tamanho da janela"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizar ou restaurar tamanho da janela"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizar janela da app"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Definições de Abrir por predefinição"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Escolha como abrir links da Web para esta app"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Na app"</string>
diff --git a/libs/WindowManager/Shell/res/values-pt/strings.xml b/libs/WindowManager/Shell/res/values-pt/strings.xml
index d9e5f8c77897..0a3ea7011e1e 100644
--- a/libs/WindowManager/Shell/res/values-pt/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pt/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Esquerda a 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Esquerda a 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Lado direito em tela cheia"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Trocar apps"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Parte superior em tela cheia"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Parte superior a 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Parte superior a 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Restaurar"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Ajustar à esquerda"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Ajustar à direita"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Redimensionar janela do app para a esquerda"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Redimensionar janela do app para a direita"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximizar ou restaurar o tamanho da janela"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Entrar no modo de tela dividida"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Entrar no modo de janela do computador"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionar janela para a esquerda"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionar janela para a direita"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar ou restaurar o tamanho da janela"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizar ou restaurar o tamanho da janela"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizar janela do app"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Configurações \"Abrir por padrão\""</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Escolha como abrir links da Web para este app"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"No app"</string>
diff --git a/libs/WindowManager/Shell/res/values-ro/strings.xml b/libs/WindowManager/Shell/res/values-ro/strings.xml
index b63a8b3b05df..3039950e47ee 100644
--- a/libs/WindowManager/Shell/res/values-ro/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ro/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Partea stângă: 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Partea stângă: 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Partea dreaptă pe ecran complet"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Partea de sus pe ecran complet"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Partea de sus: 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Partea de sus: 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Restabilește"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Trage la stânga"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Trage la dreapta"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Setări de deschidere în mod prestabilit"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Alege modul de deschidere a linkurilor web pentru aplicație"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"În aplicație"</string>
diff --git a/libs/WindowManager/Shell/res/values-ru/strings.xml b/libs/WindowManager/Shell/res/values-ru/strings.xml
index 709e90eb7fd9..5b20b2bd6499 100644
--- a/libs/WindowManager/Shell/res/values-ru/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ru/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Левый на 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Левый на 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Правый во весь экран"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Поменять приложения местами"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Верхний во весь экран"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Верхний на 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Верхний на 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Восстановить"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Привязать слева"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Привязать справа"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Растянуть окно приложения влево"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Растянуть окно приложения вправо"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Развернуть окно или восстановить его размер"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Перейти в режим разделения экрана"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Перейти в режим компьютера"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Растянуть окно влево"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Растянуть окно вправо"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Развернуть окно или восстановить его размер"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Развернуть окно или восстановить его размер"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Свернуть окно приложения"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Настройки, регулирующие, как по умолчанию открываются ссылки"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Выберите, где будут открываться ссылки из этого приложения"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"В приложении"</string>
diff --git a/libs/WindowManager/Shell/res/values-si/strings.xml b/libs/WindowManager/Shell/res/values-si/strings.xml
index da1aa9d71c15..f0ef1d1bc658 100644
--- a/libs/WindowManager/Shell/res/values-si/strings.xml
+++ b/libs/WindowManager/Shell/res/values-si/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"වම් 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"වම් 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"දකුණු පූර්ණ තිරය"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"යෙදුම් හුවමාරු කරන්න"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ඉහළම පූර්ණ තිරය"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ඉහළම 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ඉහළම 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"ප්‍රතිසාධනය කරන්න"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"වමට ස්නැප් කරන්න"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"දකුණට ස්නැප් කරන්න"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"යෙදුම් කවුළුව වමට ප්‍රතිප්‍රමාණ කරන්න"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"යෙදුම් කවුළුව දකුණට ප්‍රතිප්‍රමාණ කරන්න"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"කවුළු ප්‍රමාණය උපරිම කරන්න හෝ ප්‍රතිසාධනය කරන්න"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"බෙදුම් තිර මාදිලියට ඇතුළු වන්න"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"ඩෙස්ක්ටොප කවුළුකරණ මාදිලියට ඇතුළු වන්න"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"කවුළුව වමට ප්‍රතිප්‍රමාණ කරන්න"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"කවුළුව දකුණට ප්‍රතිප්‍රමාණ කරන්න"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"කවුළු ප්‍රමාණය උපරිම කරන්න හෝ ප්‍රතිසාධනය කරන්න"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"කවුළු ප්‍රමාණය උපරිම කරන්න හෝ ප්‍රතිසාධනය කරන්න"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"යෙදුම් කවුළුව අවම කරන්න"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"පෙරනිමි සැකසීම් මඟින් විවෘත කරන්න"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"මෙම යෙදුම සඳහා වෙබ් සබැඳි විවෘත කරන ආකාරය තෝරා ගන්න"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"යෙදුම තුළ"</string>
diff --git a/libs/WindowManager/Shell/res/values-sk/strings.xml b/libs/WindowManager/Shell/res/values-sk/strings.xml
index aa7799723993..688c217b8d32 100644
--- a/libs/WindowManager/Shell/res/values-sk/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sk/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Ľavá – 50 %"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Ľavá – 30 %"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Pravá– na celú obrazovku"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Vymeniť aplikácie"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Horná – na celú obrazovku"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Horná – 70 %"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Horná – 50 %"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Obnoviť"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Prichytiť vľavo"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Prichytiť vpravo"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Zmeniť veľkosť okna aplikácie vľavo"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Zmeniť veľkosť okna aplikácie vpravo"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Maximalizovať alebo obnoviť veľkosť okna"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Spustiť režim rozdelenej obrazovky"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Prejsť na režim okien na pracovnej ploche"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Zmeniť veľkosť okna vľavo"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Zmeniť veľkosť okna vpravo"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximalizovať alebo obnoviť veľkosť okna"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximalizovať alebo obnoviť veľkosť okna"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimalizovať okno aplikácie"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Otvárať podľa predvolených nastavení"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Vyberte, ako sa majú v tejto aplikácii otvárať webové odkazy"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"V aplikácii"</string>
diff --git a/libs/WindowManager/Shell/res/values-sl/strings.xml b/libs/WindowManager/Shell/res/values-sl/strings.xml
index 55452bd0e854..69eb3e311726 100644
--- a/libs/WindowManager/Shell/res/values-sl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sl/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Levi 50 %"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Levi 30 %"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Desni v celozaslonski način"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Zamenjava aplikacij"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Zgornji v celozaslonski način"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Zgornji 70 %"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Zgornji 50 %"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Obnovi"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Pripni levo"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Pripni desno"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Sprememba velikosti okna aplikacije na levi"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Sprememba velikosti okna aplikacije na desni"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Povečava ali obnovitev velikosti okna"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Vklop načina razdeljenega zaslona"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Vklop načina prikaza v oknu na namizju"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Sprememba velikosti okna na levi"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Sprememba velikosti okna na desni"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Povečava ali obnovitev velikosti okna"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Povečava ali obnovitev velikosti okna"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Pomanjšava okna aplikacije"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Nastavitve privzetega odpiranja"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Izberite način odpiranja spletnih povezav za to aplikacijo"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"V aplikaciji"</string>
diff --git a/libs/WindowManager/Shell/res/values-sq/strings.xml b/libs/WindowManager/Shell/res/values-sq/strings.xml
index 0492b2f9a51f..fe03feb901ed 100644
--- a/libs/WindowManager/Shell/res/values-sq/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sq/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Majtas 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Majtas 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Ekrani i plotë djathtas"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Ekrani i plotë lart"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Lart 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Lart 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Restauro"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Zhvendos majtas"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Zhvendos djathtas"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Hap sipas cilësimeve të parazgjedhura"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Zgjidh si do t\'i hapësh lidhjet e uebit për këtë aplikacion"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Në aplikacion"</string>
diff --git a/libs/WindowManager/Shell/res/values-sr/strings.xml b/libs/WindowManager/Shell/res/values-sr/strings.xml
index af8ac6898e83..5163fc69dfb5 100644
--- a/libs/WindowManager/Shell/res/values-sr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sr/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Леви екран 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Леви екран 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Режим целог екрана за доњи екран"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Замените места апликацијама"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Режим целог екрана за горњи екран"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Горњи екран 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Горњи екран 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Вратите"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Прикачите лево"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Прикачите десно"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Промените величину прозора апликације налево"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Промените величину прозора апликације надесно"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Увећајте или вратите величину прозора"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Уђите у режим подељеног екрана"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Уђите у режим прозора на рачунару"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Промените величину прозора налево"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Промените величину прозора надесно"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Увећајте или вратите величину прозора"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Увећајте или вратите величину прозора"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Умањите прозор апликације"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Подешавање Подразумевано отварај"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Одаберите начин отварања веб-линкова за ову апликацију"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"У апликацији"</string>
diff --git a/libs/WindowManager/Shell/res/values-sv/strings.xml b/libs/WindowManager/Shell/res/values-sv/strings.xml
index 0c3c18c70040..29f4aab0502a 100644
--- a/libs/WindowManager/Shell/res/values-sv/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sv/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Vänster 50 %"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Vänster 30 %"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Helskärm på höger skärm"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Helskärm på övre skärm"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Övre 70 %"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Övre 50 %"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Återställ"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Fäst till vänster"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Fäst till höger"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Inställningar för Öppna som standard"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Välj hur webblänkar ska öppnas för den här appen"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"I appen"</string>
diff --git a/libs/WindowManager/Shell/res/values-sw/strings.xml b/libs/WindowManager/Shell/res/values-sw/strings.xml
index 4f0a6ac93b55..6471e3b723e0 100644
--- a/libs/WindowManager/Shell/res/values-sw/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sw/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Kushoto 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Kushoto 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Skrini nzima ya kulia"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Skrini nzima ya juu"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Juu 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Juu 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Rejesha"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Telezesha kushoto"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Telezesha kulia"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Fungua kwa mipangilio chaguomsingi"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Chagua jinsi ya kufungua viungo vya wavuti vya programu hii"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Kwenye programu"</string>
diff --git a/libs/WindowManager/Shell/res/values-ta/strings.xml b/libs/WindowManager/Shell/res/values-ta/strings.xml
index 5fca404d5614..03e55c8dcf79 100644
--- a/libs/WindowManager/Shell/res/values-ta/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ta/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"இடது புறம் 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"இடது புறம் 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"வலது புறம் முழுத் திரை"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"மேற்புறம் முழுத் திரை"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"மேலே 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"மேலே 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"மீட்டெடுக்கும்"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"இடதுபுறம் நகர்த்தும்"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"வலதுபுறம் நகர்த்தும்"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"இயல்பாக அமைப்புகளைத் திறக்கும்"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"இந்த ஆப்ஸில் வலை இணைப்புகளைத் திறக்கும் வழிமுறையைத் தேர்வுசெய்யுங்கள்"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ஆப்ஸில்"</string>
diff --git a/libs/WindowManager/Shell/res/values-te/strings.xml b/libs/WindowManager/Shell/res/values-te/strings.xml
index abc4d08cd3ca..932f831c537d 100644
--- a/libs/WindowManager/Shell/res/values-te/strings.xml
+++ b/libs/WindowManager/Shell/res/values-te/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ఎడమవైపు 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ఎడమవైపు 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"కుడివైపు ఫుల్-స్క్రీన్‌"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"యాప్‌లను మార్చండి"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ఎగువ ఫుల్-స్క్రీన్‌"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ఎగువ 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ఎగువ 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"రీస్టోర్ చేయండి"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"ఎడమ వైపున స్నాప్ చేయండి"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"కుడి వైపున స్నాప్ చేయండి"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"యాప్ విండో ఎడమ వైపు సైజ్ మార్చండి"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"యాప్ విండో కుడి వైపు సైజ్ మార్చండి"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"విండో సైజ్‌ను మ్యాగ్జిమైజ్ చేయండి లేదా రీస్టోర్ చేయండి"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"స్ప్లిట్ స్క్రీన్ మోడ్‌ను ఉపయోగించండి"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"డెస్క్‌టాప్ విండోయింగ్ మోడ్‌ను ఎంటర్ చేయండి"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"విండో ఎడమ వైపునకు సైజ్‌ను మార్చండి"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"విండో కుడి వైపునకు సైజ్‌ను మార్చండి"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"విండో సైజ్‌ను మ్యాగ్జిమైజ్ చేయండి లేదా రీస్టోర్ చేయండి"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"విండో సైజ్‌ను మ్యాగ్జిమైజ్ చేయండి లేదా రీస్టోర్ చేయండి"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"యాప్ విండోను కుదించండి"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"ఆటోమేటిక్ సెట్టింగ్‌ల ద్వారా తెరవండి"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ఈ యాప్‌నకు సంబంధించిన వెబ్ లింక్‌లను ఎలా తెరవాలో ఎంచుకోండి"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"యాప్‌లో"</string>
diff --git a/libs/WindowManager/Shell/res/values-th/strings.xml b/libs/WindowManager/Shell/res/values-th/strings.xml
index 7be7373e03a9..e157474d34fa 100644
--- a/libs/WindowManager/Shell/res/values-th/strings.xml
+++ b/libs/WindowManager/Shell/res/values-th/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ซ้าย 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ซ้าย 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"เต็มหน้าจอทางขวา"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"สลับแอป"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"เต็มหน้าจอด้านบน"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ด้านบน 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ด้านบน 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"คืนค่า"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"จัดพอดีกับทางซ้าย"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"จัดพอดีกับทางขวา"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"ปรับขนาดหน้าต่างแอปไปทางซ้าย"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"ปรับขนาดหน้าต่างแอปไปทางขวา"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"ขยายหรือคืนค่าขนาดหน้าต่าง"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"เข้าสู่โหมดแยกหน้าจอ"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"เข้าสู่โหมดหน้าต่างเดสก์ท็อป"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ปรับขนาดหน้าต่างไปทางซ้าย"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ปรับขนาดหน้าต่างไปทางขวา"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ขยายหรือคืนค่าขนาดหน้าต่าง"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ขยายหรือคืนค่าขนาดหน้าต่าง"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ย่อหน้าต่างแอป"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"เปิดตามการตั้งค่าเริ่มต้น"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"เลือกวิธีเปิดเว็บลิงก์สำหรับแอปนี้"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ในแอป"</string>
diff --git a/libs/WindowManager/Shell/res/values-tl/strings.xml b/libs/WindowManager/Shell/res/values-tl/strings.xml
index 22b0174c0252..7f2970453072 100644
--- a/libs/WindowManager/Shell/res/values-tl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-tl/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Gawing 50% ang nasa kaliwa"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Gawing 30% ang nasa kaliwa"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"I-full screen ang nasa kanan"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Pagpalitin ang Mga App"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"I-full screen ang nasa itaas"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Gawing 70% ang nasa itaas"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Gawing 50% ang nasa itaas"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"I-restore"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"I-snap pakaliwa"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"I-snap pakanan"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"I-resize pakaliwa ang window ng app"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"I-resize pakanan ang window ng app"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"I-maximize o i-restore ang laki ng window"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Pumunta sa split screen mode"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Pumunta sa desktop windowing mode"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"I-resize pakaliwa ang window"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"I-resize pakanan ang window"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"I-maximize o i-restore ang laki ng window"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"I-maximize o i-restore ang laki ng window"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"I-minimize ang window ng app"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Buksan sa pamamagitan ng mga default na setting"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Piliin kung paano magbukas ng web link para sa app na ito"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Sa app"</string>
diff --git a/libs/WindowManager/Shell/res/values-tr/strings.xml b/libs/WindowManager/Shell/res/values-tr/strings.xml
index 79d64ba1f117..8d12e5437c62 100644
--- a/libs/WindowManager/Shell/res/values-tr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-tr/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Solda %50"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Solda %30"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Sağda tam ekran"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Üstte tam ekran"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Üstte %70"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Üstte %50"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Geri yükle"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Sola tuttur"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Sağa tuttur"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Varsayılan olarak açma ayarları"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Bu uygulama için web bağlantılarının nasıl açılacağını seçin"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Uygulamada"</string>
diff --git a/libs/WindowManager/Shell/res/values-uk/strings.xml b/libs/WindowManager/Shell/res/values-uk/strings.xml
index aeba9824d3f4..66d8a62f6633 100644
--- a/libs/WindowManager/Shell/res/values-uk/strings.xml
+++ b/libs/WindowManager/Shell/res/values-uk/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Ліве вікно на 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Ліве вікно на 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Праве вікно на весь екран"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Верхнє вікно на весь екран"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Верхнє вікно на 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Верхнє вікно на 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Відновити"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Закріпити ліворуч"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Закріпити праворуч"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Налаштування \"Відкривати за умовчанням\""</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Виберіть, як відкривати вебпосилання в цьому додатку"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"У додатку"</string>
diff --git a/libs/WindowManager/Shell/res/values-ur/strings.xml b/libs/WindowManager/Shell/res/values-ur/strings.xml
index cf6fb8926f55..653ba0e66984 100644
--- a/libs/WindowManager/Shell/res/values-ur/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ur/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"بائیں %50"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"بائیں %30"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"دائیں فل اسکرین"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"بالائی فل اسکرین"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"اوپر %70"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"اوپر %50"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"بحال کریں"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"دائیں منتقل کریں"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"بائیں منتقل کریں"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"بطور ڈیفالٹ ترتیبات کھولیں"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"اس ایپ کے لیے ویب لنکس کھولنے کا طریقہ منتخب کریں"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ایپ میں"</string>
diff --git a/libs/WindowManager/Shell/res/values-uz/strings.xml b/libs/WindowManager/Shell/res/values-uz/strings.xml
index c64b84373b17..7c6a2a20aa80 100644
--- a/libs/WindowManager/Shell/res/values-uz/strings.xml
+++ b/libs/WindowManager/Shell/res/values-uz/strings.xml
@@ -43,6 +43,7 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Chapda 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Chapda 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"O‘ngda to‘liq ekran"</string>
+ <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Ilovalarni almashtirish"</string>
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Tepada to‘liq ekran"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Tepada 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Tepada 50%"</string>
@@ -141,6 +142,16 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Tiklash"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Chapga tortish"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Oʻngga tortish"</string>
+ <string name="desktop_mode_a11y_action_snap_left" msgid="2932955411661734668">"Ilova chap oynasi oʻlchamini oʻzgartirish"</string>
+ <string name="desktop_mode_a11y_action_snap_right" msgid="4577032451624261787">"Ilova oʻng oynasi oʻlchamini oʻzgartirish"</string>
+ <string name="desktop_mode_a11y_action_maximize_restore" msgid="8026037983417986686">"Oyna oʻlchamini kengaytirish yoki asliga qaytarish"</string>
+ <string name="app_handle_menu_talkback_split_screen_mode_button_text" msgid="7182959681057464802">"Ajratilgan ekran rejimiga kirish"</string>
+ <string name="app_handle_menu_talkback_desktop_mode_button_text" msgid="1230110046930843630">"Kompyuter rejimiga kirish"</string>
+ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Oyna oʻlchamini chapga oʻzgartirish"</string>
+ <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Oyna oʻlchamini oʻngga oʻzgartirish"</string>
+ <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Oyna oʻlchamini kengaytirish yoki asliga qaytarish"</string>
+ <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Oyna oʻlchamini kengaytirish yoki asliga qaytarish"</string>
+ <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Ilova oynasini kichraytirish"</string>
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Birlamchi sozlamalar asosida ochish"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Bu ilovalardagi veb havolalar qanday ochilishini tanlang"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Ilovada"</string>
diff --git a/libs/WindowManager/Shell/res/values-vi/strings.xml b/libs/WindowManager/Shell/res/values-vi/strings.xml
index 2a7dae4cbaef..f1b728b1b64c 100644
--- a/libs/WindowManager/Shell/res/values-vi/strings.xml
+++ b/libs/WindowManager/Shell/res/values-vi/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Trái 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Trái 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Toàn màn hình bên phải"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Toàn màn hình phía trên"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Trên 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Trên 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Khôi phục"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Di chuyển nhanh sang trái"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Di chuyển nhanh sang phải"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Mở các chế độ cài đặt theo mặc định"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Chọn cách mở đường liên kết trang web cho ứng dụng này"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Trong ứng dụng"</string>
diff --git a/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml b/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml
index e45fbba6e196..543780844060 100644
--- a/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml
+++ b/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"左侧 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"左侧 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"右侧全屏"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"顶部全屏"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"顶部 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"顶部 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"恢复"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"贴靠左侧"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"贴靠右侧"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"默认打开设置"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"选择如何打开此应用中的网页链接"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"在此应用内"</string>
diff --git a/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml b/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml
index d5e106394720..938024d2cd1a 100644
--- a/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml
+++ b/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"左邊 50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"左邊 30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"右邊全螢幕"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"頂部全螢幕"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"頂部 70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"頂部 50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"還原"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"貼齊左邊"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"貼齊右邊"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"採用預設設定打開"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"選擇此應用程式開啟網絡連結的方式"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"在應用程式內"</string>
diff --git a/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml b/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml
index a0357e12b722..3a5a87d9868e 100644
--- a/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml
+++ b/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"以 50% 的螢幕空間顯示左側畫面"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"以 30% 的螢幕空間顯示左側畫面"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"以全螢幕顯示右側畫面"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"以全螢幕顯示頂端畫面"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"以 70% 的螢幕空間顯示頂端畫面"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"以 50% 的螢幕空間顯示頂端畫面"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"還原"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"靠左對齊"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"靠右對齊"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"開啟連結的預設設定"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"選擇如何開啟這個應用程式的網頁連結"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"使用應用程式"</string>
diff --git a/libs/WindowManager/Shell/res/values-zu/strings.xml b/libs/WindowManager/Shell/res/values-zu/strings.xml
index 810b6c82e09d..cba8e048ea3d 100644
--- a/libs/WindowManager/Shell/res/values-zu/strings.xml
+++ b/libs/WindowManager/Shell/res/values-zu/strings.xml
@@ -43,6 +43,8 @@
<string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Kwesokunxele ngo-50%"</string>
<string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Kwesokunxele ngo-30%"</string>
<string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Isikrini esigcwele esingakwesokudla"</string>
+ <!-- no translation found for accessibility_action_divider_swap (7026003137401725787) -->
+ <skip />
<string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Isikrini esigcwele esiphezulu"</string>
<string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Okuphezulu okungu-70%"</string>
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Okuphezulu okungu-50%"</string>
@@ -141,6 +143,26 @@
<string name="desktop_mode_maximize_menu_restore_button_text" msgid="4234449220944704387">"Buyisela"</string>
<string name="desktop_mode_maximize_menu_snap_left_button_text" msgid="8077452201179893424">"Chofoza kwesobunxele"</string>
<string name="desktop_mode_maximize_menu_snap_right_button_text" msgid="7117751068945657304">"Chofoza kwesokudla"</string>
+ <!-- no translation found for desktop_mode_a11y_action_snap_left (2932955411661734668) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_snap_right (4577032451624261787) -->
+ <skip />
+ <!-- no translation found for desktop_mode_a11y_action_maximize_restore (8026037983417986686) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_split_screen_mode_button_text (7182959681057464802) -->
+ <skip />
+ <!-- no translation found for app_handle_menu_talkback_desktop_mode_button_text (1230110046930843630) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_left_text (500309467459084564) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_snap_right_text (7010831426654467163) -->
+ <skip />
+ <!-- no translation found for maximize_menu_talkback_action_maximize_restore_text (4942610897847934859) -->
+ <skip />
+ <!-- no translation found for maximize_button_talkback_action_maximize_restore_text (4122441323153198455) -->
+ <skip />
+ <!-- no translation found for minimize_button_talkback_action_maximize_restore_text (8890767445425625935) -->
+ <skip />
<string name="open_by_default_settings_text" msgid="2526548548598185500">"Vula amasethingi ngokuzenzakalela"</string>
<string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Khetha indlela yokuvula amalinki ewebhu ale app"</string>
<string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Ku-app"</string>
diff --git a/libs/WindowManager/Shell/res/values/dimen.xml b/libs/WindowManager/Shell/res/values/dimen.xml
index 9e2d23b41556..e23d5725e9c3 100644
--- a/libs/WindowManager/Shell/res/values/dimen.xml
+++ b/libs/WindowManager/Shell/res/values/dimen.xml
@@ -270,6 +270,8 @@
<dimen name="bubble_bar_expanded_view_switch_offset">48dp</dimen>
<!-- Minimum width of the bubble bar manage menu. -->
<dimen name="bubble_bar_manage_menu_min_width">200dp</dimen>
+ <!-- The Bubble Bar drop zone square size. -->
+ <dimen name="bubble_bar_drop_zone_side_size">200dp</dimen>
<!-- Size of the dismiss icon in the bubble bar manage menu. -->
<dimen name="bubble_bar_manage_menu_dismiss_icon_size">16dp</dimen>
<!-- Padding of the bubble bar manage menu, provides space for menu shadows -->
@@ -293,6 +295,10 @@
<dimen name="bubble_bar_dismiss_zone_width">192dp</dimen>
<!-- Height of the box around bottom center of the screen where drag only leads to dismiss -->
<dimen name="bubble_bar_dismiss_zone_height">242dp</dimen>
+ <!-- Height of the box at the corner of the screen where drag leads to app moving to bubble -->
+ <dimen name="bubble_transform_area_width">140dp</dimen>
+ <!-- Width of the box at the corner of the screen where drag leads to app moving to bubble -->
+ <dimen name="bubble_transform_area_height">140dp</dimen>
<!-- Bottom and end margin for compat buttons. -->
<dimen name="compat_button_margin">24dp</dimen>
diff --git a/libs/WindowManager/Shell/res/values/ids.xml b/libs/WindowManager/Shell/res/values/ids.xml
index 122cde04f8e4..c6082b3bd60f 100644
--- a/libs/WindowManager/Shell/res/values/ids.xml
+++ b/libs/WindowManager/Shell/res/values/ids.xml
@@ -25,6 +25,7 @@
<item type="id" name="action_move_tl_50" />
<item type="id" name="action_move_tl_30" />
<item type="id" name="action_move_rb_full" />
+ <item type="id" name="action_swap_apps" />
<!-- For saving PhysicsAnimationLayout animations/animators as view tags. -->
<item type="id" name="translation_x_dynamicanimation_tag"/>
diff --git a/libs/WindowManager/Shell/res/values/strings.xml b/libs/WindowManager/Shell/res/values/strings.xml
index c29b927f61c2..a2231dd64112 100644
--- a/libs/WindowManager/Shell/res/values/strings.xml
+++ b/libs/WindowManager/Shell/res/values/strings.xml
@@ -90,6 +90,8 @@
<string name="accessibility_action_divider_left_30">Left 30%</string>
<!-- Accessibility action for moving docked stack divider to make the right screen full screen [CHAR LIMIT=NONE] -->
<string name="accessibility_action_divider_right_full">Right full screen</string>
+ <!-- Accessibility action for swapping the apps around the divider (double tap action) [CHAR LIMIT=NONE] -->
+ <string name="accessibility_action_divider_swap">Swap Apps</string>
<!-- Accessibility action for moving docked stack divider to make the top screen full screen [CHAR LIMIT=NONE] -->
<string name="accessibility_action_divider_top_full">Top full screen</string>
diff --git a/libs/WindowManager/Shell/res/values/strings_tv.xml b/libs/WindowManager/Shell/res/values/strings_tv.xml
index 8f806cf56c9b..b50812f36e4b 100644
--- a/libs/WindowManager/Shell/res/values/strings_tv.xml
+++ b/libs/WindowManager/Shell/res/values/strings_tv.xml
@@ -59,5 +59,7 @@
<!-- Accessibility action: done with moving the PiP [CHAR LIMIT=30] -->
<string name="a11y_action_pip_move_done">Done</string>
+ <string name="font_display_medium" translatable="false">sans-serif</string>
+
</resources>
diff --git a/libs/WindowManager/Shell/res/values/styles.xml b/libs/WindowManager/Shell/res/values/styles.xml
index 8a4a7023b8e8..4ebb7dc6ff37 100644
--- a/libs/WindowManager/Shell/res/values/styles.xml
+++ b/libs/WindowManager/Shell/res/values/styles.xml
@@ -75,15 +75,6 @@
<item name="android:background">@color/split_divider_background</item>
</style>
- <style name="TvPipEduText">
- <item name="android:fontFamily">@*android:string/config_headlineFontFamilyMedium</item>
- <item name="android:textAllCaps">true</item>
- <item name="android:textSize">10sp</item>
- <item name="android:lineSpacingExtra">4sp</item>
- <item name="android:lineHeight">16sp</item>
- <item name="android:textColor">@color/tv_pip_edu_text</item>
- </style>
-
<style name="LetterboxDialog" parent="@android:style/Theme.DeviceDefault.Dialog.Alert">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
diff --git a/libs/WindowManager/Shell/res/values/styles_tv.xml b/libs/WindowManager/Shell/res/values/styles_tv.xml
new file mode 100644
index 000000000000..a4f5edc7fa35
--- /dev/null
+++ b/libs/WindowManager/Shell/res/values/styles_tv.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2025 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <style name="TvPipEduText">
+ <item name="android:fontFamily">@string/font_display_medium</item>
+ <item name="android:textAllCaps">true</item>
+ <item name="android:textFontWeight">700</item>
+ <item name="android:textSize">10sp</item>
+ <item name="android:lineSpacingExtra">4sp</item>
+ <item name="android:lineHeight">16sp</item>
+ <item name="android:textColor">@color/tv_pip_edu_text</item>
+ </style>
+
+</resources> \ No newline at end of file
diff --git a/libs/WindowManager/Shell/shared/Android.bp b/libs/WindowManager/Shell/shared/Android.bp
index 261c63948a94..af46ca298efe 100644
--- a/libs/WindowManager/Shell/shared/Android.bp
+++ b/libs/WindowManager/Shell/shared/Android.bp
@@ -74,6 +74,7 @@ java_library {
"**/desktopmode/*.kt",
],
static_libs: [
+ "WindowManager-Shell-shared-AOSP",
"com.android.window.flags.window-aconfig-java",
"wm_shell-shared-utils",
],
diff --git a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/annotations/ShellDesktopThread.java b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/annotations/ShellDesktopThread.java
new file mode 100644
index 000000000000..cfa00bbb7649
--- /dev/null
+++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/annotations/ShellDesktopThread.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.shared.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+import javax.inject.Qualifier;
+
+/** Annotates a method or qualifies a provider that runs on the Shell desktop thread */
+@Documented
+@Inherited
+@Qualifier
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ShellDesktopThread {
+}
diff --git a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/BaseBubblePinController.kt b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/BaseBubblePinController.kt
index bd129a28f049..da3d44df1180 100644
--- a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/BaseBubblePinController.kt
+++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/BaseBubblePinController.kt
@@ -95,7 +95,7 @@ abstract class BaseBubblePinController(private val screenSizeProvider: () -> Poi
/** Signal the controller that dragging interaction has finished. */
fun onDragEnd() {
- getDropTargetView()?.let { view -> view.animateOut { removeDropTargetView(view) } }
+ hideDropTarget()
dismissZone = null
listener?.onRelease(if (onLeft) LEFT else RIGHT)
}
@@ -139,7 +139,7 @@ abstract class BaseBubblePinController(private val screenSizeProvider: () -> Poi
return rect
}
- private fun showDropTarget(location: BubbleBarLocation) {
+ fun showDropTarget(location: BubbleBarLocation) {
val targetView = getDropTargetView() ?: createDropTargetView().apply { alpha = 0f }
if (targetView.alpha > 0) {
targetView.animateOut {
@@ -152,6 +152,10 @@ abstract class BaseBubblePinController(private val screenSizeProvider: () -> Poi
}
}
+ fun hideDropTarget() {
+ getDropTargetView()?.let { view -> view.animateOut { removeDropTargetView(view) } }
+ }
+
private fun View.animateIn() {
dropTargetAnimator?.cancel()
dropTargetAnimator =
diff --git a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/BubbleBarLocation.kt b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/BubbleBarLocation.kt
index 84a22b873aaf..481fc7fcb869 100644
--- a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/BubbleBarLocation.kt
+++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/BubbleBarLocation.kt
@@ -70,6 +70,7 @@ enum class BubbleBarLocation : Parcelable {
UpdateSource.A11Y_ACTION_BAR,
UpdateSource.A11Y_ACTION_BUBBLE,
UpdateSource.A11Y_ACTION_EXP_VIEW,
+ UpdateSource.APP_ICON_DRAG
)
@Retention(AnnotationRetention.SOURCE)
annotation class UpdateSource {
@@ -91,6 +92,9 @@ enum class BubbleBarLocation : Parcelable {
/** Location changed via a11y action on the expanded view */
const val A11Y_ACTION_EXP_VIEW = 6
+
+ /** Location changed from dragging the application icon to the bubble bar */
+ const val APP_ICON_DRAG = 7
}
}
}
diff --git a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/BubbleDropTargetBoundsProvider.kt b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/BubbleDropTargetBoundsProvider.kt
new file mode 100644
index 000000000000..9bee11a92430
--- /dev/null
+++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/BubbleDropTargetBoundsProvider.kt
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.shared.bubbles
+
+import android.graphics.Rect
+
+/**
+ * Provide bounds for Bubbles drop targets that are shown when dragging over drag zones
+ */
+interface BubbleDropTargetBoundsProvider {
+ /**
+ * Get bubble bar expanded view visual drop target bounds on screen
+ */
+ fun getBubbleBarExpandedViewDropTargetBounds(onLeft: Boolean): Rect
+} \ No newline at end of file
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/DeviceConfig.kt b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DeviceConfig.kt
index 929330918174..f479da051e06 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/DeviceConfig.kt
+++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DeviceConfig.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.wm.shell.bubbles
+package com.android.wm.shell.shared.bubbles
import android.content.Context
import android.content.res.Configuration
diff --git a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DragZone.kt b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DragZone.kt
new file mode 100644
index 000000000000..5d346c047123
--- /dev/null
+++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DragZone.kt
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.shared.bubbles
+
+import android.graphics.Rect
+
+/**
+ * Represents an invisible area on the screen that determines what happens to a dragged object if it
+ * is released in that area.
+ *
+ * [bounds] are the bounds of the drag zone. Drag zones have an associated drop target that serves
+ * as visual feedback hinting what would happen if the object is released. When a dragged object is
+ * dragged into a drag zone, the associated drop target will be displayed. Not all drag zones have
+ * drop targets; only those that are made visible by Bubbles do.
+ */
+sealed interface DragZone {
+
+ /** The bounds of this drag zone. */
+ val bounds: Rect
+
+ fun contains(x: Int, y: Int) = bounds.contains(x, y)
+
+ /** Represents the bubble drag area on the screen. */
+ sealed class Bubble(override val bounds: Rect) : DragZone {
+ data class Left(override val bounds: Rect, val dropTarget: Rect) : Bubble(bounds)
+ data class Right(override val bounds: Rect, val dropTarget: Rect) : Bubble(bounds)
+ }
+
+ /** Represents dragging to Desktop Window. */
+ data class DesktopWindow(override val bounds: Rect, val dropTarget: Rect) : DragZone
+
+ /** Represents dragging to Full Screen. */
+ data class FullScreen(override val bounds: Rect, val dropTarget: Rect) : DragZone
+
+ /** Represents dragging to dismiss. */
+ data class Dismiss(override val bounds: Rect) : DragZone
+
+ /** Represents dragging to enter Split or replace a Split app. */
+ sealed class Split(override val bounds: Rect) : DragZone {
+ data class Left(override val bounds: Rect) : Split(bounds)
+ data class Right(override val bounds: Rect) : Split(bounds)
+ data class Top(override val bounds: Rect) : Split(bounds)
+ data class Bottom(override val bounds: Rect) : Split(bounds)
+ }
+}
diff --git a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DragZoneFactory.kt b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DragZoneFactory.kt
new file mode 100644
index 000000000000..aa523f57c469
--- /dev/null
+++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DragZoneFactory.kt
@@ -0,0 +1,470 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.shared.bubbles
+
+import android.graphics.Rect
+import com.android.wm.shell.shared.bubbles.DragZoneFactory.SplitScreenModeChecker.SplitScreenMode
+
+/** A class for creating drag zones for dragging bubble objects or dragging into bubbles. */
+class DragZoneFactory(
+ private val deviceConfig: DeviceConfig,
+ private val splitScreenModeChecker: SplitScreenModeChecker,
+ private val desktopWindowModeChecker: DesktopWindowModeChecker,
+) {
+
+ private val windowBounds: Rect
+ get() = deviceConfig.windowBounds
+
+ // TODO b/393172431: move these to xml
+ private val dismissDragZoneSize = if (deviceConfig.isSmallTablet) 140 else 200
+ private val bubbleDragZoneTabletSize = 200
+ private val bubbleDragZoneFoldableSize = 140
+ private val fullScreenDragZoneWidth = 512
+ private val fullScreenDragZoneHeight = 44
+ private val desktopWindowDragZoneWidth = 880
+ private val desktopWindowDragZoneHeight = 300
+ private val desktopWindowFromExpandedViewDragZoneWidth = 200
+ private val desktopWindowFromExpandedViewDragZoneHeight = 350
+ private val splitFromBubbleDragZoneHeight = 100
+ private val splitFromBubbleDragZoneWidth = 60
+ private val hSplitFromExpandedViewDragZoneWidth = 60
+ private val vSplitFromExpandedViewDragZoneWidth = 200
+ private val vSplitFromExpandedViewDragZoneHeightTablet = 285
+ private val vSplitFromExpandedViewDragZoneHeightFoldTall = 150
+ private val vSplitFromExpandedViewDragZoneHeightFoldShort = 100
+
+ /**
+ * Creates the list of drag zones for the dragged object.
+ *
+ * Drag zones may have overlap, but the list is sorted by priority where the first drag zone has
+ * the highest priority so it should be checked first.
+ */
+ fun createSortedDragZones(draggedObject: DraggedObject): List<DragZone> {
+ val dragZones = mutableListOf<DragZone>()
+ when (draggedObject) {
+ is DraggedObject.BubbleBar -> {
+ dragZones.add(createDismissDragZone())
+ dragZones.addAll(createBubbleDragZones())
+ }
+ is DraggedObject.Bubble -> {
+ dragZones.add(createDismissDragZone())
+ dragZones.addAll(createBubbleDragZones())
+ dragZones.add(createFullScreenDragZone())
+ if (shouldShowDesktopWindowDragZones()) {
+ dragZones.add(createDesktopWindowDragZoneForBubble())
+ }
+ dragZones.addAll(createSplitScreenDragZonesForBubble())
+ }
+ is DraggedObject.ExpandedView -> {
+ dragZones.add(createDismissDragZone())
+ dragZones.add(createFullScreenDragZone())
+ if (shouldShowDesktopWindowDragZones()) {
+ dragZones.add(createDesktopWindowDragZoneForExpandedView())
+ }
+ if (deviceConfig.isSmallTablet) {
+ dragZones.addAll(createSplitScreenDragZonesForExpandedViewOnFoldable())
+ } else {
+ dragZones.addAll(createSplitScreenDragZonesForExpandedViewOnTablet())
+ }
+ createBubbleDragZonesForExpandedView()
+ }
+ }
+ return dragZones
+ }
+
+ private fun createDismissDragZone(): DragZone {
+ return DragZone.Dismiss(
+ bounds =
+ Rect(
+ windowBounds.right / 2 - dismissDragZoneSize / 2,
+ windowBounds.bottom - dismissDragZoneSize,
+ windowBounds.right / 2 + dismissDragZoneSize / 2,
+ windowBounds.bottom
+ )
+ )
+ }
+
+ private fun createBubbleDragZones(): List<DragZone> {
+ val dragZoneSize =
+ if (deviceConfig.isSmallTablet) {
+ bubbleDragZoneFoldableSize
+ } else {
+ bubbleDragZoneTabletSize
+ }
+ return listOf(
+ DragZone.Bubble.Left(
+ bounds =
+ Rect(0, windowBounds.bottom - dragZoneSize, dragZoneSize, windowBounds.bottom),
+ dropTarget = Rect(0, 0, 0, 0),
+ ),
+ DragZone.Bubble.Right(
+ bounds =
+ Rect(
+ windowBounds.right - dragZoneSize,
+ windowBounds.bottom - dragZoneSize,
+ windowBounds.right,
+ windowBounds.bottom,
+ ),
+ dropTarget = Rect(0, 0, 0, 0),
+ )
+ )
+ }
+
+ private fun createBubbleDragZonesForExpandedView(): List<DragZone> {
+ return listOf(
+ DragZone.Bubble.Left(
+ bounds = Rect(0, 0, windowBounds.right / 2, windowBounds.bottom),
+ dropTarget = Rect(0, 0, 0, 0),
+ ),
+ DragZone.Bubble.Right(
+ bounds =
+ Rect(
+ windowBounds.right / 2,
+ 0,
+ windowBounds.right,
+ windowBounds.bottom,
+ ),
+ dropTarget = Rect(0, 0, 0, 0),
+ )
+ )
+ }
+
+ private fun createFullScreenDragZone(): DragZone {
+ return DragZone.FullScreen(
+ bounds =
+ Rect(
+ windowBounds.right / 2 - fullScreenDragZoneWidth / 2,
+ 0,
+ windowBounds.right / 2 + fullScreenDragZoneWidth / 2,
+ fullScreenDragZoneHeight
+ ),
+ dropTarget = Rect(0, 0, 0, 0)
+ )
+ }
+
+ private fun shouldShowDesktopWindowDragZones() =
+ !deviceConfig.isSmallTablet && desktopWindowModeChecker.isSupported()
+
+ private fun createDesktopWindowDragZoneForBubble(): DragZone {
+ return DragZone.DesktopWindow(
+ bounds =
+ if (deviceConfig.isLandscape) {
+ Rect(
+ windowBounds.right / 2 - desktopWindowDragZoneWidth / 2,
+ windowBounds.bottom / 2 - desktopWindowDragZoneHeight / 2,
+ windowBounds.right / 2 + desktopWindowDragZoneWidth / 2,
+ windowBounds.bottom / 2 + desktopWindowDragZoneHeight / 2
+ )
+ } else {
+ Rect(
+ 0,
+ windowBounds.bottom / 2 - desktopWindowDragZoneHeight / 2,
+ windowBounds.right,
+ windowBounds.bottom / 2 + desktopWindowDragZoneHeight / 2
+ )
+ },
+ dropTarget = Rect(0, 0, 0, 0)
+ )
+ }
+
+ private fun createDesktopWindowDragZoneForExpandedView(): DragZone {
+ return DragZone.DesktopWindow(
+ bounds =
+ Rect(
+ windowBounds.right / 2 - desktopWindowFromExpandedViewDragZoneWidth / 2,
+ windowBounds.bottom / 2 - desktopWindowFromExpandedViewDragZoneHeight / 2,
+ windowBounds.right / 2 + desktopWindowFromExpandedViewDragZoneWidth / 2,
+ windowBounds.bottom / 2 + desktopWindowFromExpandedViewDragZoneHeight / 2
+ ),
+ dropTarget = Rect(0, 0, 0, 0)
+ )
+ }
+
+ private fun createSplitScreenDragZonesForBubble(): List<DragZone> {
+ // for foldables in landscape mode or tables in portrait modes we have vertical split drag
+ // zones. otherwise we have horizontal split drag zones.
+ val isVerticalSplit = deviceConfig.isSmallTablet == deviceConfig.isLandscape
+ return if (isVerticalSplit) {
+ when (splitScreenModeChecker.getSplitScreenMode()) {
+ SplitScreenMode.SPLIT_50_50,
+ SplitScreenMode.NONE ->
+ listOf(
+ DragZone.Split.Top(
+ bounds = Rect(0, 0, windowBounds.right, windowBounds.bottom / 2),
+ ),
+ DragZone.Split.Bottom(
+ bounds =
+ Rect(
+ 0,
+ windowBounds.bottom / 2,
+ windowBounds.right,
+ windowBounds.bottom
+ ),
+ )
+ )
+ SplitScreenMode.SPLIT_90_10 -> {
+ listOf(
+ DragZone.Split.Top(
+ bounds =
+ Rect(
+ 0,
+ 0,
+ windowBounds.right,
+ windowBounds.bottom - splitFromBubbleDragZoneHeight
+ ),
+ ),
+ DragZone.Split.Bottom(
+ bounds =
+ Rect(
+ 0,
+ windowBounds.bottom - splitFromBubbleDragZoneHeight,
+ windowBounds.right,
+ windowBounds.bottom
+ ),
+ )
+ )
+ }
+ SplitScreenMode.SPLIT_10_90 -> {
+ listOf(
+ DragZone.Split.Top(
+ bounds = Rect(0, 0, windowBounds.right, splitFromBubbleDragZoneHeight),
+ ),
+ DragZone.Split.Bottom(
+ bounds =
+ Rect(
+ 0,
+ splitFromBubbleDragZoneHeight,
+ windowBounds.right,
+ windowBounds.bottom
+ ),
+ )
+ )
+ }
+ }
+ } else {
+ when (splitScreenModeChecker.getSplitScreenMode()) {
+ SplitScreenMode.SPLIT_50_50,
+ SplitScreenMode.NONE ->
+ listOf(
+ DragZone.Split.Left(
+ bounds = Rect(0, 0, windowBounds.right / 2, windowBounds.bottom),
+ ),
+ DragZone.Split.Right(
+ bounds =
+ Rect(
+ windowBounds.right / 2,
+ 0,
+ windowBounds.right,
+ windowBounds.bottom
+ ),
+ )
+ )
+ SplitScreenMode.SPLIT_90_10 ->
+ listOf(
+ DragZone.Split.Left(
+ bounds =
+ Rect(
+ 0,
+ 0,
+ windowBounds.right - splitFromBubbleDragZoneWidth,
+ windowBounds.bottom
+ ),
+ ),
+ DragZone.Split.Right(
+ bounds =
+ Rect(
+ windowBounds.right - splitFromBubbleDragZoneWidth,
+ 0,
+ windowBounds.right,
+ windowBounds.bottom
+ ),
+ )
+ )
+ SplitScreenMode.SPLIT_10_90 ->
+ listOf(
+ DragZone.Split.Left(
+ bounds = Rect(0, 0, splitFromBubbleDragZoneWidth, windowBounds.bottom),
+ ),
+ DragZone.Split.Right(
+ bounds =
+ Rect(
+ splitFromBubbleDragZoneWidth,
+ 0,
+ windowBounds.right,
+ windowBounds.bottom
+ ),
+ )
+ )
+ }
+ }
+ }
+
+ private fun createSplitScreenDragZonesForExpandedViewOnTablet(): List<DragZone> {
+ return if (deviceConfig.isLandscape) {
+ createHorizontalSplitDragZonesForExpandedView()
+ } else {
+ // for tablets in portrait mode, split drag zones appear below the full screen drag zone
+ // for the top split zone, and above the dismiss zone. Both are horizontally centered.
+ val splitZoneLeft = windowBounds.right / 2 - vSplitFromExpandedViewDragZoneWidth / 2
+ val splitZoneRight = splitZoneLeft + vSplitFromExpandedViewDragZoneWidth
+ val bottomSplitZoneBottom = windowBounds.bottom - dismissDragZoneSize
+ listOf(
+ DragZone.Split.Top(
+ bounds =
+ Rect(
+ splitZoneLeft,
+ fullScreenDragZoneHeight,
+ splitZoneRight,
+ fullScreenDragZoneHeight + vSplitFromExpandedViewDragZoneHeightTablet
+ ),
+ ),
+ DragZone.Split.Bottom(
+ bounds =
+ Rect(
+ splitZoneLeft,
+ bottomSplitZoneBottom - vSplitFromExpandedViewDragZoneHeightTablet,
+ splitZoneRight,
+ bottomSplitZoneBottom
+ ),
+ )
+ )
+ }
+ }
+
+ private fun createSplitScreenDragZonesForExpandedViewOnFoldable(): List<DragZone> {
+ return if (deviceConfig.isLandscape) {
+ // vertical split drag zones are aligned with the full screen drag zone width
+ val splitZoneLeft = windowBounds.right / 2 - fullScreenDragZoneWidth / 2
+ when (splitScreenModeChecker.getSplitScreenMode()) {
+ SplitScreenMode.SPLIT_50_50,
+ SplitScreenMode.NONE ->
+ listOf(
+ DragZone.Split.Top(
+ bounds =
+ Rect(
+ splitZoneLeft,
+ fullScreenDragZoneHeight,
+ splitZoneLeft + fullScreenDragZoneWidth,
+ fullScreenDragZoneHeight +
+ vSplitFromExpandedViewDragZoneHeightFoldTall
+ ),
+ ),
+ DragZone.Split.Bottom(
+ bounds =
+ Rect(
+ splitZoneLeft,
+ windowBounds.bottom / 2,
+ splitZoneLeft + fullScreenDragZoneWidth,
+ windowBounds.bottom / 2 +
+ vSplitFromExpandedViewDragZoneHeightFoldTall
+ ),
+ )
+ )
+ SplitScreenMode.SPLIT_10_90 ->
+ listOf(
+ DragZone.Split.Top(
+ bounds =
+ Rect(
+ 0,
+ 0,
+ windowBounds.right,
+ vSplitFromExpandedViewDragZoneHeightFoldShort
+ ),
+ ),
+ DragZone.Split.Bottom(
+ bounds =
+ Rect(
+ splitZoneLeft,
+ vSplitFromExpandedViewDragZoneHeightFoldShort,
+ splitZoneLeft + fullScreenDragZoneWidth,
+ vSplitFromExpandedViewDragZoneHeightFoldShort +
+ vSplitFromExpandedViewDragZoneHeightFoldTall
+ ),
+ )
+ )
+ SplitScreenMode.SPLIT_90_10 ->
+ listOf(
+ DragZone.Split.Top(
+ bounds =
+ Rect(
+ splitZoneLeft,
+ fullScreenDragZoneHeight,
+ splitZoneLeft + fullScreenDragZoneWidth,
+ fullScreenDragZoneHeight +
+ vSplitFromExpandedViewDragZoneHeightFoldTall
+ ),
+ ),
+ DragZone.Split.Bottom(
+ bounds =
+ Rect(
+ 0,
+ windowBounds.bottom -
+ vSplitFromExpandedViewDragZoneHeightFoldShort,
+ windowBounds.right,
+ windowBounds.bottom
+ ),
+ )
+ )
+ }
+ } else {
+ // horizontal split drag zones
+ createHorizontalSplitDragZonesForExpandedView()
+ }
+ }
+
+ private fun createHorizontalSplitDragZonesForExpandedView(): List<DragZone> {
+ // horizontal split drag zones for expanded view appear on the edges of the screen from the
+ // top down until the dismiss drag zone height
+ return listOf(
+ DragZone.Split.Left(
+ bounds =
+ Rect(
+ 0,
+ 0,
+ hSplitFromExpandedViewDragZoneWidth,
+ windowBounds.bottom - dismissDragZoneSize
+ ),
+ ),
+ DragZone.Split.Right(
+ bounds =
+ Rect(
+ windowBounds.right - hSplitFromExpandedViewDragZoneWidth,
+ 0,
+ windowBounds.right,
+ windowBounds.bottom - dismissDragZoneSize
+ ),
+ )
+ )
+ }
+
+ /** Checks the current split screen mode. */
+ fun interface SplitScreenModeChecker {
+ enum class SplitScreenMode {
+ NONE,
+ SPLIT_50_50,
+ SPLIT_10_90,
+ SPLIT_90_10
+ }
+
+ fun getSplitScreenMode(): SplitScreenMode
+ }
+
+ /** Checks if desktop window mode is supported. */
+ fun interface DesktopWindowModeChecker {
+ fun isSupported(): Boolean
+ }
+}
diff --git a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DraggedObject.kt b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DraggedObject.kt
new file mode 100644
index 000000000000..028622798f34
--- /dev/null
+++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DraggedObject.kt
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.shared.bubbles
+
+/** A Bubble object being dragged. */
+sealed interface DraggedObject {
+ /** The initial location of the object at the start of the drag gesture. */
+ val initialLocation: BubbleBarLocation
+
+ data class Bubble(override val initialLocation: BubbleBarLocation) : DraggedObject
+ data class BubbleBar(override val initialLocation: BubbleBarLocation) : DraggedObject
+ data class ExpandedView(override val initialLocation: BubbleBarLocation) : DraggedObject
+}
diff --git a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeCompatPolicy.kt b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeCompatPolicy.kt
index 0ea3c2a80fb4..f234ff5c2c84 100644
--- a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeCompatPolicy.kt
+++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeCompatPolicy.kt
@@ -18,22 +18,28 @@ package com.android.wm.shell.shared.desktopmode
import android.app.TaskInfo
import android.content.Context
+import android.content.pm.ActivityInfo
+import android.content.pm.ActivityInfo.INSETS_DECOUPLED_CONFIGURATION_ENFORCED
+import android.content.pm.ActivityInfo.OVERRIDE_ENABLE_INSETS_DECOUPLED_CONFIGURATION
import android.window.DesktopModeFlags
import com.android.internal.R
+import com.android.window.flags.Flags
/**
* Class to decide whether to apply app compat policies in desktop mode.
*/
// TODO(b/347289970): Consider replacing with API
-class DesktopModeCompatPolicy(context: Context) {
+class DesktopModeCompatPolicy(private val context: Context) {
private val systemUiPackage: String = context.resources.getString(R.string.config_systemUi)
+ private val defaultHomePackage: String?
+ get() = context.getPackageManager().getHomeActivities(ArrayList())?.packageName
/**
* If the top activity should be exempt from desktop windowing and forced back to fullscreen.
- * Currently includes all system ui activities and modal dialogs. However if the top activity is
- * not being displayed, regardless of its configuration, we will not exempt it as to remain in
- * the desktop windowing environment.
+ * Currently includes all system ui, default home and transparent stack activities. However if
+ * the top activity is not being displayed, regardless of its configuration, we will not exempt
+ * it as to remain in the desktop windowing environment.
*/
fun isTopActivityExemptFromDesktopWindowing(task: TaskInfo) =
isTopActivityExemptFromDesktopWindowing(task.baseActivity?.packageName,
@@ -43,10 +49,26 @@ class DesktopModeCompatPolicy(context: Context) {
numActivities: Int, isTopActivityNoDisplay: Boolean, isActivityStackTransparent: Boolean) =
DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_MODALS_POLICY.isTrue
&& ((isSystemUiTask(packageName)
+ || isPartOfDefaultHomePackage(packageName)
|| isTransparentTask(isActivityStackTransparent, numActivities))
&& !isTopActivityNoDisplay)
/**
+ * Whether the caption insets should be excluded from configuration for system to handle.
+ *
+ * The treatment is enabled when all the of the following is true:
+ * * Any flags to forcibly consume caption insets are enabled.
+ * * Top activity have configuration coupled with insets.
+ * * Task is not resizeable.
+ */
+ fun shouldExcludeCaptionFromAppBounds(taskInfo: TaskInfo): Boolean =
+ Flags.excludeCaptionFromAppBounds()
+ && isAnyForceConsumptionFlagsEnabled()
+ && taskInfo.topActivityInfo?.let {
+ isInsetsCoupledWithConfiguration(it) && !taskInfo.isResizeable
+ } ?: false
+
+ /**
* Returns true if all activities in a tasks stack are transparent. If there are no activities
* will return false.
*/
@@ -57,4 +79,18 @@ class DesktopModeCompatPolicy(context: Context) {
isActivityStackTransparent && numActivities > 0
private fun isSystemUiTask(packageName: String?) = packageName == systemUiPackage
+
+ /**
+ * Returns true if the tasks base activity is part of the default home package.
+ */
+ private fun isPartOfDefaultHomePackage(packageName: String?) =
+ packageName != null && packageName == defaultHomePackage
+
+ private fun isAnyForceConsumptionFlagsEnabled(): Boolean =
+ DesktopModeFlags.ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION_ALWAYS.isTrue
+ || DesktopModeFlags.ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION.isTrue
+
+ private fun isInsetsCoupledWithConfiguration(info: ActivityInfo): Boolean =
+ !(info.isChangeEnabled(OVERRIDE_ENABLE_INSETS_DECOUPLED_CONFIGURATION)
+ || info.isChangeEnabled(INSETS_DECOUPLED_CONFIGURATION_ENFORCED))
}
diff --git a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatus.java b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatus.java
index e196880aad0f..2586bd6d86cb 100644
--- a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatus.java
+++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatus.java
@@ -18,6 +18,8 @@ package com.android.wm.shell.shared.desktopmode;
import static android.hardware.display.DisplayManager.DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED;
+import static com.android.wm.shell.shared.bubbles.BubbleAnythingFlagHelper.enableBubbleToFullscreen;
+
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
@@ -187,7 +189,7 @@ public class DesktopModeStatus {
* there should be no pooling.
*/
public static int getWindowDecorScvhPoolSize(@NonNull Context context) {
- if (!Flags.enableDesktopWindowingScvhCacheBugFix()) return 0;
+ if (!DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_SCVH_CACHE.isTrue()) return 0;
final int maxTaskLimit = getMaxTaskLimit(context);
if (maxTaskLimit > 0) {
return maxTaskLimit;
@@ -206,8 +208,7 @@ public class DesktopModeStatus {
/**
* Return {@code true} if the current device supports desktop mode.
*/
- @VisibleForTesting
- public static boolean isDesktopModeSupported(@NonNull Context context) {
+ private static boolean isDesktopModeSupported(@NonNull Context context) {
return context.getResources().getBoolean(R.bool.config_isDesktopModeSupported);
}
@@ -230,7 +231,7 @@ public class DesktopModeStatus {
* Return {@code true} if desktop mode dev option should be shown on current device
*/
public static boolean canShowDesktopExperienceDevOption(@NonNull Context context) {
- return Flags.showDesktopExperienceDevOption();
+ return Flags.showDesktopExperienceDevOption() && isDeviceEligibleForDesktopMode(context);
}
/** Returns if desktop mode dev option should be enabled if there is no user override. */
@@ -270,7 +271,8 @@ public class DesktopModeStatus {
* necessarily enabling desktop mode
*/
public static boolean overridesShowAppHandle(@NonNull Context context) {
- return Flags.showAppHandleLargeScreens() && deviceHasLargeScreen(context);
+ return (Flags.showAppHandleLargeScreens() || enableBubbleToFullscreen())
+ && deviceHasLargeScreen(context);
}
/**
diff --git a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/pip/PipContentOverlay.java b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/pip/PipContentOverlay.java
index 62ca5c687a2a..b1bc6e81e1bd 100644
--- a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/pip/PipContentOverlay.java
+++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/pip/PipContentOverlay.java
@@ -28,6 +28,7 @@ import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
+import android.hardware.HardwareBuffer;
import android.util.TypedValue;
import android.view.SurfaceControl;
import android.window.TaskSnapshot;
@@ -225,12 +226,17 @@ public abstract class PipContentOverlay {
@Override
public void attach(SurfaceControl.Transaction tx, SurfaceControl parentLeash) {
+ final HardwareBuffer buffer = mBitmap.getHardwareBuffer();
tx.show(mLeash);
tx.setLayer(mLeash, Integer.MAX_VALUE);
- tx.setBuffer(mLeash, mBitmap.getHardwareBuffer());
+ tx.setBuffer(mLeash, buffer);
tx.setAlpha(mLeash, 0f);
tx.reparent(mLeash, parentLeash);
tx.apply();
+ // Cleanup the bitmap and buffer after setting up the leash
+ mBitmap.recycle();
+ mBitmap = null;
+ buffer.close();
}
@Override
@@ -253,14 +259,6 @@ public abstract class PipContentOverlay {
.setAlpha(mLeash, fraction < 0.5f ? 0 : (fraction - 0.5f) * 2);
}
- @Override
- public void detach(SurfaceControl.Transaction tx) {
- super.detach(tx);
- if (mBitmap != null && !mBitmap.isRecycled()) {
- mBitmap.recycle();
- }
- }
-
private void prepareAppIconOverlay(Drawable appIcon) {
final Canvas canvas = new Canvas();
canvas.setBitmap(mBitmap);
@@ -282,7 +280,9 @@ public abstract class PipContentOverlay {
mOverlayHalfSize + mAppIconSizePx / 2);
appIcon.setBounds(appIconBounds);
appIcon.draw(canvas);
+ Bitmap oldBitmap = mBitmap;
mBitmap = mBitmap.copy(Bitmap.Config.HARDWARE, false /* mutable */);
+ oldBitmap.recycle();
}
}
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java
index b4ef9f0fc2ac..55ed5fa4b56f 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingController.java
@@ -168,7 +168,8 @@ public class ActivityEmbeddingController implements Transitions.TransitionHandle
@Override
public void mergeAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
- @NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget,
+ @NonNull SurfaceControl.Transaction startT, @NonNull SurfaceControl.Transaction finishT,
+ @NonNull IBinder mergeTarget,
@NonNull Transitions.TransitionFinishCallback finishCallback) {
mAnimationRunner.cancelAnimationFromMerge();
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java
index 8dabd54a01ff..d1c7f7d7dcad 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java
@@ -1463,7 +1463,9 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont
@Override
public void mergeAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
- @NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget,
+ @NonNull SurfaceControl.Transaction startT,
+ @NonNull SurfaceControl.Transaction finishT,
+ @NonNull IBinder mergeTarget,
@NonNull Transitions.TransitionFinishCallback finishCallback) {
if (mClosePrepareTransition == transition) {
mClosePrepareTransition = null;
@@ -1476,7 +1478,7 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont
if (info.getType() == TRANSIT_CLOSE_PREPARE_BACK_NAVIGATION
&& !mCloseTransitionRequested && info.getChanges().isEmpty() && mApps == null) {
finishCallback.onTransitionFinished(null);
- t.apply();
+ startT.apply();
applyFinishOpenTransition();
return;
}
@@ -1489,7 +1491,7 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont
}
// Handle the commit transition if this handler is running the open transition.
finishCallback.onTransitionFinished(null);
- t.apply();
+ startT.apply();
if (mCloseTransitionRequested) {
if (mApps == null || mApps.length == 0) {
// animation was done
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BadgedImageView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BadgedImageView.java
index c1dadada505a..5bd8d86f1144 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BadgedImageView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BadgedImageView.java
@@ -357,9 +357,9 @@ public class BadgedImageView extends ConstraintLayout {
void showBadge() {
Bitmap appBadgeBitmap = mBubble.getAppBadge();
- final boolean isAppLaunchIntent = (mBubble instanceof Bubble)
- && ((Bubble) mBubble).isAppLaunchIntent();
- if (appBadgeBitmap == null || isAppLaunchIntent) {
+ final boolean showAppBadge = (mBubble instanceof Bubble)
+ && ((Bubble) mBubble).showAppBadge();
+ if (appBadgeBitmap == null || !showAppBadge) {
mAppIcon.setVisibility(GONE);
return;
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java
index c40a276cb7bd..ddcdf9f8c617 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java
@@ -56,7 +56,6 @@ import com.android.wm.shell.bubbles.bar.BubbleBarExpandedView;
import com.android.wm.shell.bubbles.bar.BubbleBarLayerView;
import com.android.wm.shell.shared.annotations.ShellBackgroundThread;
import com.android.wm.shell.shared.annotations.ShellMainThread;
-import com.android.wm.shell.shared.bubbles.BubbleAnythingFlagHelper;
import com.android.wm.shell.shared.bubbles.BubbleInfo;
import com.android.wm.shell.shared.bubbles.ParcelableFlyoutMessage;
import com.android.wm.shell.taskview.TaskView;
@@ -72,11 +71,25 @@ import java.util.concurrent.Executor;
public class Bubble implements BubbleViewProvider {
private static final String TAG = "Bubble";
- /** A string suffix used in app bubbles' {@link #mKey}. */
+ /** A string prefix used in app bubbles' {@link #mKey}. */
public static final String KEY_APP_BUBBLE = "key_app_bubble";
- /** Whether the bubble is an app bubble. */
- private final boolean mIsAppBubble;
+ /** A string prefix used in note bubbles' {@link #mKey}. */
+ public static final String KEY_NOTE_BUBBLE = "key_note_bubble";
+
+ /** The possible types a bubble may be. */
+ public enum BubbleType {
+ /** Chat is from a notification. */
+ TYPE_CHAT,
+ /** Notes are from the note taking API. */
+ TYPE_NOTE,
+ /** Shortcuts from bubble anything, based on {@link ShortcutInfo}. */
+ TYPE_SHORTCUT,
+ /** Apps are from bubble anything. */
+ TYPE_APP,
+ }
+
+ private final BubbleType mType;
private final String mKey;
@Nullable
@@ -186,10 +199,10 @@ public class Bubble implements BubbleViewProvider {
* that bubble being added back to the stack anyways.
*/
@Nullable
- private PendingIntent mIntent;
- private boolean mIntentActive;
+ private PendingIntent mPendingIntent;
+ private boolean mPendingIntentActive;
@Nullable
- private PendingIntent.CancelListener mIntentCancelListener;
+ private PendingIntent.CancelListener mPendingIntentCancelListener;
/**
* Sent when the bubble & notification are no longer visible to the user (i.e. no
@@ -199,12 +212,10 @@ public class Bubble implements BubbleViewProvider {
private PendingIntent mDeleteIntent;
/**
- * Used only for a special bubble in the stack that has {@link #mIsAppBubble} set to true.
- * There can only be one of these bubbles in the stack and this intent will be populated for
- * that bubble.
+ * Used for app & note bubbles.
*/
@Nullable
- private Intent mAppIntent;
+ private Intent mIntent;
/**
* Set while preparing a transition for animation. Several steps are needed before animation
@@ -217,7 +228,6 @@ public class Bubble implements BubbleViewProvider {
* Create a bubble with limited information based on given {@link ShortcutInfo}.
* Note: Currently this is only being used when the bubble is persisted to disk.
*/
- @VisibleForTesting(visibility = PRIVATE)
public Bubble(@NonNull final String key, @NonNull final ShortcutInfo shortcutInfo,
final int desiredHeight, final int desiredHeightResId, @Nullable final String title,
int taskId, @Nullable final String locus, boolean isDismissable,
@@ -244,14 +254,15 @@ public class Bubble implements BubbleViewProvider {
mBgExecutor = bgExecutor;
mTaskId = taskId;
mBubbleMetadataFlagListener = listener;
- mIsAppBubble = false;
+ // TODO (b/394085999) read/write type to xml
+ mType = BubbleType.TYPE_CHAT;
}
private Bubble(
Intent intent,
UserHandle user,
@Nullable Icon icon,
- boolean isAppBubble,
+ BubbleType type,
String key,
@ShellMainThread Executor mainExecutor,
@ShellBackgroundThread Executor bgExecutor) {
@@ -260,13 +271,13 @@ public class Bubble implements BubbleViewProvider {
mFlags = 0;
mUser = user;
mIcon = icon;
- mIsAppBubble = isAppBubble;
+ mType = type;
mKey = key;
mShowBubbleUpdateDot = false;
mMainExecutor = mainExecutor;
mBgExecutor = bgExecutor;
mTaskId = INVALID_TASK_ID;
- mAppIntent = intent;
+ mIntent = intent;
mDesiredHeight = Integer.MAX_VALUE;
mPackageName = intent.getPackage();
}
@@ -278,13 +289,13 @@ public class Bubble implements BubbleViewProvider {
mFlags = 0;
mUser = info.getUserHandle();
mIcon = info.getIcon();
- mIsAppBubble = false;
+ mType = BubbleType.TYPE_SHORTCUT;
mKey = getBubbleKeyForShortcut(info);
mShowBubbleUpdateDot = false;
mMainExecutor = mainExecutor;
mBgExecutor = bgExecutor;
mTaskId = INVALID_TASK_ID;
- mAppIntent = null;
+ mIntent = null;
mDesiredHeight = Integer.MAX_VALUE;
mPackageName = info.getPackage();
mShortcutInfo = info;
@@ -302,17 +313,27 @@ public class Bubble implements BubbleViewProvider {
mFlags = 0;
mUser = user;
mIcon = icon;
- mIsAppBubble = true;
+ mType = BubbleType.TYPE_APP;
mKey = key;
mShowBubbleUpdateDot = false;
mMainExecutor = mainExecutor;
mBgExecutor = bgExecutor;
mTaskId = task.taskId;
- mAppIntent = null;
+ mIntent = null;
mDesiredHeight = Integer.MAX_VALUE;
mPackageName = task.baseActivity.getPackageName();
}
+ /** Creates a note taking bubble. */
+ public static Bubble createNotesBubble(Intent intent, UserHandle user, @Nullable Icon icon,
+ @ShellMainThread Executor mainExecutor, @ShellBackgroundThread Executor bgExecutor) {
+ return new Bubble(intent,
+ user,
+ icon,
+ BubbleType.TYPE_NOTE,
+ getNoteBubbleKeyForApp(intent.getPackage(), user),
+ mainExecutor, bgExecutor);
+ }
/** Creates an app bubble. */
public static Bubble createAppBubble(Intent intent, UserHandle user, @Nullable Icon icon,
@@ -320,8 +341,8 @@ public class Bubble implements BubbleViewProvider {
return new Bubble(intent,
user,
icon,
- /* isAppBubble= */ true,
- /* key= */ getAppBubbleKeyForApp(intent.getPackage(), user),
+ BubbleType.TYPE_APP,
+ getAppBubbleKeyForApp(intent.getPackage(), user),
mainExecutor, bgExecutor);
}
@@ -353,6 +374,16 @@ public class Bubble implements BubbleViewProvider {
}
/**
+ * Returns the key for a note bubble from an app with package name, {@code packageName} on an
+ * Android user, {@code user}.
+ */
+ public static String getNoteBubbleKeyForApp(String packageName, UserHandle user) {
+ Objects.requireNonNull(packageName);
+ Objects.requireNonNull(user);
+ return KEY_NOTE_BUBBLE + ":" + user.getIdentifier() + ":" + packageName;
+ }
+
+ /**
* Returns the key for a shortcut bubble using {@code packageName}, {@code user}, and the
* {@code shortcutInfo} id.
*/
@@ -369,19 +400,22 @@ public class Bubble implements BubbleViewProvider {
return KEY_APP_BUBBLE + ":" + taskInfo.taskId;
}
+ /**
+ * Creates a chat bubble based on a notification (contents of {@link BubbleEntry}.
+ */
@VisibleForTesting(visibility = PRIVATE)
public Bubble(@NonNull final BubbleEntry entry,
final Bubbles.BubbleMetadataFlagListener listener,
final Bubbles.PendingIntentCanceledListener intentCancelListener,
@ShellMainThread Executor mainExecutor, @ShellBackgroundThread Executor bgExecutor) {
- mIsAppBubble = false;
+ mType = BubbleType.TYPE_CHAT;
mKey = entry.getKey();
mGroupKey = entry.getGroupKey();
mLocusId = entry.getLocusId();
mBubbleMetadataFlagListener = listener;
- mIntentCancelListener = intent -> {
- if (mIntent != null) {
- mIntent.unregisterCancelListener(mIntentCancelListener);
+ mPendingIntentCancelListener = intent -> {
+ if (mPendingIntent != null) {
+ mPendingIntent.unregisterCancelListener(mPendingIntentCancelListener);
}
mainExecutor.execute(() -> {
intentCancelListener.onPendingIntentCanceled(this);
@@ -404,7 +438,7 @@ public class Bubble implements BubbleViewProvider {
getTitle(),
getAppName(),
isImportantConversation(),
- !isAppLaunchIntent(),
+ showAppBadge(),
getParcelableFlyoutMessage());
}
@@ -567,10 +601,10 @@ public class Bubble implements BubbleViewProvider {
if (cleanupTaskView) {
cleanupTaskView();
}
- if (mIntent != null) {
- mIntent.unregisterCancelListener(mIntentCancelListener);
+ if (mPendingIntent != null) {
+ mPendingIntent.unregisterCancelListener(mPendingIntentCancelListener);
}
- mIntentActive = false;
+ mPendingIntentActive = false;
}
/** Cleans-up the taskview associated with this bubble (possibly removing the task from wm) */
@@ -641,7 +675,6 @@ public class Bubble implements BubbleViewProvider {
* @param expandedViewManager the bubble expanded view manager.
* @param taskViewFactory the task view factory used to create the task view for the bubble.
* @param positioner the bubble positioner.
- * @param bubbleLogger log bubble metrics.
* @param stackView the view the bubble is added to, iff showing as floating.
* @param layerView the layer the bubble is added to, iff showing in the bubble bar.
* @param iconFactory the icon factory used to create images for the bubble.
@@ -651,7 +684,6 @@ public class Bubble implements BubbleViewProvider {
BubbleExpandedViewManager expandedViewManager,
BubbleTaskViewFactory taskViewFactory,
BubblePositioner positioner,
- BubbleLogger bubbleLogger,
@Nullable BubbleStackView stackView,
@Nullable BubbleBarLayerView layerView,
BubbleIconFactory iconFactory,
@@ -666,7 +698,6 @@ public class Bubble implements BubbleViewProvider {
expandedViewManager,
taskViewFactory,
positioner,
- bubbleLogger,
stackView,
layerView,
iconFactory,
@@ -688,7 +719,6 @@ public class Bubble implements BubbleViewProvider {
expandedViewManager,
taskViewFactory,
positioner,
- bubbleLogger,
stackView,
layerView,
iconFactory,
@@ -840,19 +870,19 @@ public class Bubble implements BubbleViewProvider {
mDesiredHeightResId = entry.getBubbleMetadata().getDesiredHeightResId();
mIcon = entry.getBubbleMetadata().getIcon();
- if (!mIntentActive || mIntent == null) {
- if (mIntent != null) {
- mIntent.unregisterCancelListener(mIntentCancelListener);
+ if (!mPendingIntentActive || mPendingIntent == null) {
+ if (mPendingIntent != null) {
+ mPendingIntent.unregisterCancelListener(mPendingIntentCancelListener);
}
- mIntent = entry.getBubbleMetadata().getIntent();
- if (mIntent != null) {
- mIntent.registerCancelListener(mIntentCancelListener);
+ mPendingIntent = entry.getBubbleMetadata().getIntent();
+ if (mPendingIntent != null) {
+ mPendingIntent.registerCancelListener(mPendingIntentCancelListener);
}
- } else if (mIntent != null && entry.getBubbleMetadata().getIntent() == null) {
+ } else if (mPendingIntent != null && entry.getBubbleMetadata().getIntent() == null) {
// Was an intent bubble now it's a shortcut bubble... still unregister the listener
- mIntent.unregisterCancelListener(mIntentCancelListener);
- mIntentActive = false;
- mIntent = null;
+ mPendingIntent.unregisterCancelListener(mPendingIntentCancelListener);
+ mPendingIntentActive = false;
+ mPendingIntent = null;
}
mDeleteIntent = entry.getBubbleMetadata().getDeleteIntent();
}
@@ -892,12 +922,15 @@ public class Bubble implements BubbleViewProvider {
* Sets if the intent used for this bubble is currently active (i.e. populating an
* expanded view, expanded or not).
*/
- void setIntentActive() {
- mIntentActive = true;
+ void setPendingIntentActive() {
+ mPendingIntentActive = true;
}
- boolean isIntentActive() {
- return mIntentActive;
+ /**
+ * Whether the pending intent of this bubble is active (i.e. has been sent).
+ */
+ boolean isPendingIntentActive() {
+ return mPendingIntentActive;
}
public InstanceId getInstanceId() {
@@ -970,13 +1003,6 @@ public class Bubble implements BubbleViewProvider {
}
/**
- * Whether this bubble is conversation
- */
- public boolean isConversation() {
- return null != mShortcutInfo;
- }
-
- /**
* Sets whether this notification should be suppressed in the shade.
*/
@VisibleForTesting
@@ -1084,48 +1110,70 @@ public class Bubble implements BubbleViewProvider {
}
}
+ /**
+ * Returns the pending intent used to populate the bubble.
+ */
@Nullable
- PendingIntent getBubbleIntent() {
- return mIntent;
+ PendingIntent getPendingIntent() {
+ return mPendingIntent;
}
/**
- * Whether this bubble represents the full app, i.e. the intent used is the launch
- * intent for an app. In this case we don't show a badge on the icon.
+ * Whether an app badge should be shown for this bubble.
*/
- public boolean isAppLaunchIntent() {
- if (BubbleAnythingFlagHelper.enableCreateAnyBubble() && mAppIntent != null) {
- return mAppIntent.hasCategory("android.intent.category.LAUNCHER");
- }
- return false;
+ public boolean showAppBadge() {
+ return isChat() || isShortcut() || isNote();
}
+ /**
+ * Returns the pending intent to send when a bubble is dismissed (set via the notification API).
+ */
@Nullable
PendingIntent getDeleteIntent() {
return mDeleteIntent;
}
+ /**
+ * Returns the intent used to populate the bubble.
+ */
@Nullable
- @VisibleForTesting
- public Intent getAppBubbleIntent() {
- return mAppIntent;
+ public Intent getIntent() {
+ return mIntent;
}
/**
- * Sets the intent for a bubble that is an app bubble (one for which {@link #mIsAppBubble} is
- * true).
- *
- * @param appIntent The intent to set for the app bubble.
+ * Sets the intent used to populate the bubble.
+ */
+ void setIntent(Intent intent) {
+ mIntent = intent;
+ }
+
+ /**
+ * Returns whether this bubble is a conversation from the notification API.
+ */
+ public boolean isChat() {
+ return mType == BubbleType.TYPE_CHAT;
+ }
+
+ /**
+ * Returns whether this bubble is a note from the note taking API.
+ */
+ public boolean isNote() {
+ return mType == BubbleType.TYPE_NOTE;
+ }
+
+ /**
+ * Returns whether this bubble is a shortcut.
*/
- void setAppBubbleIntent(Intent appIntent) {
- mAppIntent = appIntent;
+ public boolean isShortcut() {
+ return mType == BubbleType.TYPE_SHORTCUT;
}
/**
- * Returns whether this bubble is from an app versus a notification.
+ * Returns whether this bubble is an app.
*/
- public boolean isAppBubble() {
- return mIsAppBubble;
+ public boolean isApp() {
+ return mType == BubbleType.TYPE_APP;
}
/** Creates open app settings intent */
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java
index e3f8e0c321a4..b93b7b86e661 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java
@@ -49,7 +49,6 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.content.pm.ActivityInfo;
import android.content.pm.LauncherApps;
import android.content.pm.PackageManager;
import android.content.pm.ShortcutInfo;
@@ -94,8 +93,8 @@ import com.android.launcher3.icons.BubbleIconFactory;
import com.android.wm.shell.Flags;
import com.android.wm.shell.R;
import com.android.wm.shell.ShellTaskOrganizer;
+import com.android.wm.shell.bubbles.bar.BubbleBarDragListener;
import com.android.wm.shell.bubbles.bar.BubbleBarLayerView;
-import com.android.wm.shell.bubbles.properties.BubbleProperties;
import com.android.wm.shell.bubbles.shortcut.BubbleShortcutHelper;
import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.DisplayImeController;
@@ -117,6 +116,8 @@ import com.android.wm.shell.shared.annotations.ShellMainThread;
import com.android.wm.shell.shared.bubbles.BubbleAnythingFlagHelper;
import com.android.wm.shell.shared.bubbles.BubbleBarLocation;
import com.android.wm.shell.shared.bubbles.BubbleBarUpdate;
+import com.android.wm.shell.shared.bubbles.BubbleDropTargetBoundsProvider;
+import com.android.wm.shell.shared.bubbles.DeviceConfig;
import com.android.wm.shell.sysui.ConfigurationChangeListener;
import com.android.wm.shell.sysui.ShellCommandHandler;
import com.android.wm.shell.sysui.ShellController;
@@ -149,7 +150,8 @@ import java.util.function.IntConsumer;
* The controller manages addition, removal, and visible state of bubbles on screen.
*/
public class BubbleController implements ConfigurationChangeListener,
- RemoteCallable<BubbleController>, Bubbles.SysuiProxy.Provider {
+ RemoteCallable<BubbleController>, Bubbles.SysuiProxy.Provider,
+ BubbleBarDragListener {
private static final String TAG = TAG_WITH_CLASS_NAME ? "BubbleController" : TAG_BUBBLES;
@@ -205,9 +207,9 @@ public class BubbleController implements ConfigurationChangeListener,
private final ShellController mShellController;
private final ShellCommandHandler mShellCommandHandler;
private final IWindowManager mWmService;
- private final BubbleProperties mBubbleProperties;
private final BubbleTaskViewFactory mBubbleTaskViewFactory;
private final BubbleExpandedViewManager mExpandedViewManager;
+ private final ResizabilityChecker mResizabilityChecker;
// Used to post to main UI thread
private final ShellExecutor mMainExecutor;
@@ -323,7 +325,7 @@ public class BubbleController implements ConfigurationChangeListener,
Transitions transitions,
SyncTransactionQueue syncQueue,
IWindowManager wmService,
- BubbleProperties bubbleProperties) {
+ ResizabilityChecker resizabilityChecker) {
mContext = context;
mShellCommandHandler = shellCommandHandler;
mShellController = shellController;
@@ -372,7 +374,6 @@ public class BubbleController implements ConfigurationChangeListener,
mDragAndDropController = dragAndDropController;
mSyncQueue = syncQueue;
mWmService = wmService;
- mBubbleProperties = bubbleProperties;
shellInit.addInitCallback(this::onInit, this);
mBubbleTaskViewFactory = new BubbleTaskViewFactory() {
@Override
@@ -385,6 +386,7 @@ public class BubbleController implements ConfigurationChangeListener,
}
};
mExpandedViewManager = BubbleExpandedViewManager.fromBubbleController(this);
+ mResizabilityChecker = resizabilityChecker;
}
private void registerOneHandedState(OneHandedController oneHanded) {
@@ -417,12 +419,12 @@ public class BubbleController implements ConfigurationChangeListener,
mBubbleData.setListener(mBubbleDataListener);
mBubbleData.setSuppressionChangedListener(this::onBubbleMetadataFlagChanged);
mDataRepository.setSuppressionChangedListener(this::onBubbleMetadataFlagChanged);
-
mBubbleData.setPendingIntentCancelledListener(bubble -> {
- if (bubble.getBubbleIntent() == null) {
+ if (bubble.getPendingIntent() == null) {
return;
}
- if (bubble.isIntentActive() || mBubbleData.hasBubbleInStackWithKey(bubble.getKey())) {
+ if (bubble.isPendingIntentActive()
+ || mBubbleData.hasBubbleInStackWithKey(bubble.getKey())) {
bubble.setPendingIntentCanceled();
return;
}
@@ -590,8 +592,7 @@ public class BubbleController implements ConfigurationChangeListener,
* <p>If bubble bar is supported, bubble views will be updated to switch to bar mode.
*/
public void registerBubbleStateListener(Bubbles.BubbleStateListener listener) {
- mBubbleProperties.refresh();
- if (canShowAsBubbleBar() && listener != null) {
+ if (Flags.enableBubbleBar() && mBubblePositioner.isLargeScreen() && listener != null) {
// Only set the listener if we can show the bubble bar.
mBubbleStateListener = listener;
setUpBubbleViewsForMode();
@@ -608,7 +609,6 @@ public class BubbleController implements ConfigurationChangeListener,
* will be updated accordingly.
*/
public void unregisterBubbleStateListener() {
- mBubbleProperties.refresh();
if (mBubbleStateListener != null) {
mBubbleStateListener = null;
setUpBubbleViewsForMode();
@@ -766,14 +766,11 @@ public class BubbleController implements ConfigurationChangeListener,
}
}
- /** Whether bubbles are showing in the bubble bar. */
+ /** Whether bubbles would be shown with the bubble bar UI. */
public boolean isShowingAsBubbleBar() {
- return canShowAsBubbleBar() && mBubbleStateListener != null;
- }
-
- /** Whether the current configuration supports showing as bubble bar. */
- private boolean canShowAsBubbleBar() {
- return mBubbleProperties.isBubbleBarEnabled() && mBubblePositioner.isLargeScreen();
+ return Flags.enableBubbleBar()
+ && mBubblePositioner.isLargeScreen()
+ && mBubbleStateListener != null;
}
/**
@@ -782,7 +779,7 @@ public class BubbleController implements ConfigurationChangeListener,
*/
@Nullable
public BubbleBarLocation getBubbleBarLocation() {
- if (canShowAsBubbleBar()) {
+ if (isShowingAsBubbleBar()) {
return mBubblePositioner.getBubbleBarLocation();
}
return null;
@@ -793,7 +790,7 @@ public class BubbleController implements ConfigurationChangeListener,
*/
public void setBubbleBarLocation(BubbleBarLocation bubbleBarLocation,
@BubbleBarLocation.UpdateSource int source) {
- if (canShowAsBubbleBar()) {
+ if (isShowingAsBubbleBar()) {
BubbleBarLocation previousLocation = mBubblePositioner.getBubbleBarLocation();
mBubblePositioner.setBubbleBarLocation(bubbleBarLocation);
if (mLayerView != null && !mLayerView.isExpandedViewDragged()) {
@@ -835,6 +832,10 @@ public class BubbleController implements ConfigurationChangeListener,
case BubbleBarLocation.UpdateSource.A11Y_ACTION_EXP_VIEW:
// TODO(b/349845968): move logging from BubbleBarLayerView to here
break;
+ case BubbleBarLocation.UpdateSource.APP_ICON_DRAG:
+ mLogger.log(onLeft ? BubbleLogger.Event.BUBBLE_BAR_MOVED_LEFT_APP_ICON_DROP
+ : BubbleLogger.Event.BUBBLE_BAR_MOVED_RIGHT_APP_ICON_DROP);
+ break;
}
}
@@ -845,11 +846,62 @@ public class BubbleController implements ConfigurationChangeListener,
* {@link #setBubbleBarLocation(BubbleBarLocation, int)}.
*/
public void animateBubbleBarLocation(BubbleBarLocation bubbleBarLocation) {
- if (canShowAsBubbleBar()) {
+ if (isShowingAsBubbleBar()) {
mBubbleStateListener.animateBubbleBarLocation(bubbleBarLocation);
}
}
+ @Override
+ public void onDragItemOverBubbleBarDragZone(@Nullable BubbleBarLocation bubbleBarLocation) {
+ if (bubbleBarLocation == null) return;
+ if (isShowingAsBubbleBar() && BubbleAnythingFlagHelper.enableCreateAnyBubble()) {
+ mBubbleStateListener.onDragItemOverBubbleBarDragZone(bubbleBarLocation);
+ ensureBubbleViewsAndWindowCreated();
+ if (mLayerView != null) {
+ mLayerView.showBubbleBarExtendedViewDropTarget(bubbleBarLocation);
+ }
+ }
+ }
+
+ @Override
+ public void onItemDraggedOutsideBubbleBarDropZone() {
+ if (isShowingAsBubbleBar() && BubbleAnythingFlagHelper.enableCreateAnyBubble()) {
+ mBubbleStateListener.onItemDraggedOutsideBubbleBarDropZone();
+ hideBubbleBarExpandedViewDropTarget();
+ }
+ }
+
+ @Override
+ public void onItemDroppedOverBubbleBarDragZone(BubbleBarLocation location, Intent appIntent,
+ UserHandle userHandle) {
+ if (isShowingAsBubbleBar() && BubbleAnythingFlagHelper.enableCreateAnyBubble()) {
+ hideBubbleBarExpandedViewDropTarget();
+ expandStackAndSelectBubble(appIntent, userHandle, location);
+ }
+ }
+
+ @Override
+ public Map<BubbleBarLocation, Rect> getBubbleBarDropZones(int l, int t, int r, int b) {
+ Map<BubbleBarLocation, Rect> result = new HashMap<>();
+ if (isShowingAsBubbleBar() && BubbleAnythingFlagHelper.enableCreateAnyBubble()) {
+ // TODO(b/393172431) : Utilise DragZoneFactory once it is ready
+ final int bubbleBarDropZoneSideSize = getContext().getResources().getDimensionPixelSize(
+ R.dimen.bubble_bar_drop_zone_side_size);
+ int top = t - bubbleBarDropZoneSideSize;
+ result.put(BubbleBarLocation.LEFT,
+ new Rect(l, top, l + bubbleBarDropZoneSideSize, b));
+ result.put(BubbleBarLocation.RIGHT,
+ new Rect(r - bubbleBarDropZoneSideSize, top, r, b));
+ }
+ return result;
+ }
+
+ private void hideBubbleBarExpandedViewDropTarget() {
+ if (mLayerView != null) {
+ mLayerView.hideBubbleBarExpandedViewDropTarget();
+ }
+ }
+
/** Whether this userId belongs to the current user. */
private boolean isCurrentProfile(int userId) {
return userId == UserHandle.USER_ALL
@@ -888,6 +940,11 @@ public class BubbleController implements ConfigurationChangeListener,
return mBubblePositioner;
}
+ /** Provides bounds for drag zone drop targets */
+ public BubbleDropTargetBoundsProvider getBubbleDropTargetBoundsProvider() {
+ return mBubblePositioner;
+ }
+
BubbleIconFactory getIconFactory() {
return mBubbleIconFactory;
}
@@ -971,7 +1028,7 @@ public class BubbleController implements ConfigurationChangeListener,
registerBroadcastReceiver();
if (isShowingAsBubbleBar()) {
mBubbleData.getOverflow().initializeForBubbleBar(
- mExpandedViewManager, mBubblePositioner, mLogger);
+ mExpandedViewManager, mBubblePositioner);
} else {
mBubbleData.getOverflow().initialize(
mExpandedViewManager, mStackView, mBubblePositioner);
@@ -1179,7 +1236,6 @@ public class BubbleController implements ConfigurationChangeListener,
mExpandedViewManager,
mBubbleTaskViewFactory,
mBubblePositioner,
- mLogger,
mStackView,
mLayerView,
mBubbleIconFactory,
@@ -1191,7 +1247,6 @@ public class BubbleController implements ConfigurationChangeListener,
mExpandedViewManager,
mBubbleTaskViewFactory,
mBubblePositioner,
- mLogger,
mStackView,
mLayerView,
mBubbleIconFactory,
@@ -1469,8 +1524,14 @@ public class BubbleController implements ConfigurationChangeListener,
*
* @param intent the intent for the bubble.
*/
- public void expandStackAndSelectBubble(Intent intent, UserHandle user) {
+ public void expandStackAndSelectBubble(Intent intent, UserHandle user,
+ @Nullable BubbleBarLocation bubbleBarLocation) {
if (!BubbleAnythingFlagHelper.enableCreateAnyBubble()) return;
+ if (bubbleBarLocation != null) {
+ //TODO (b/388894910) combine location update with the setSelectedBubbleAndExpandStack &
+ // fix bubble bar flicking
+ setBubbleBarLocation(bubbleBarLocation, BubbleBarLocation.UpdateSource.APP_ICON_DRAG);
+ }
Bubble b = mBubbleData.getOrCreateBubble(intent, user); // Removes from overflow
ProtoLog.v(WM_SHELL_BUBBLES, "expandStackAndSelectBubble - intent=%s", intent);
if (b.isInflated()) {
@@ -1497,7 +1558,7 @@ public class BubbleController implements ConfigurationChangeListener,
// Lazy init stack view when a bubble is created
ensureBubbleViewsAndWindowCreated();
mBubbleTransitions.startConvertToBubble(b, taskInfo, mExpandedViewManager,
- mBubbleTaskViewFactory, mBubblePositioner, mLogger, mStackView, mLayerView,
+ mBubbleTaskViewFactory, mBubblePositioner, mStackView, mLayerView,
mBubbleIconFactory, mInflateSynchronously);
}
}
@@ -1560,78 +1621,80 @@ public class BubbleController implements ConfigurationChangeListener,
/**
* This method has different behavior depending on:
- * - if an app bubble exists
- * - if an app bubble is expanded
+ * - if a notes bubble exists
+ * - if a notes bubble is expanded
*
- * If no app bubble exists, this will add and expand a bubble with the provided intent. The
+ * If no notes bubble exists, this will add and expand a bubble with the provided intent. The
* intent must be explicit (i.e. include a package name or fully qualified component class name)
* and the activity for it should be resizable.
*
- * If an app bubble exists, this will toggle the visibility of it, i.e. if the app bubble is
- * expanded, calling this method will collapse it. If the app bubble is not expanded, calling
+ * If a notes bubble exists, this will toggle the visibility of it, i.e. if the notes bubble is
+ * expanded, calling this method will collapse it. If the notes bubble is not expanded, calling
* this method will expand it.
*
* These bubbles are <b>not</b> backed by a notification and remain until the user dismisses
* the bubble or bubble stack.
*
- * Some notes:
- * - Only one app bubble is supported at a time, regardless of users. Multi-users support is
- * tracked in b/273533235.
- * - Calling this method with a different intent than the existing app bubble will do nothing
+ * Some details:
+ * - Calling this method with a different intent than the existing bubble will do nothing
*
* @param intent the intent to display in the bubble expanded view.
* @param user the {@link UserHandle} of the user to start this activity for.
* @param icon the {@link Icon} to use for the bubble view.
*/
- public void showOrHideAppBubble(Intent intent, UserHandle user, @Nullable Icon icon) {
+ public void showOrHideNotesBubble(Intent intent, UserHandle user, @Nullable Icon icon) {
if (intent == null || intent.getPackage() == null) {
- Log.w(TAG, "App bubble failed to show, invalid intent: " + intent
+ Log.w(TAG, "Notes bubble failed to show, invalid intent: " + intent
+ ((intent != null) ? " with package: " + intent.getPackage() : " "));
return;
}
- String appBubbleKey = Bubble.getAppBubbleKeyForApp(intent.getPackage(), user);
+ String noteBubbleKey = Bubble.getNoteBubbleKeyForApp(intent.getPackage(), user);
PackageManager packageManager = getPackageManagerForUser(mContext, user.getIdentifier());
- if (!isResizableActivity(intent, packageManager, appBubbleKey)) return; // logs errors
+ if (!mResizabilityChecker.isResizableActivity(intent, packageManager, noteBubbleKey)) {
+ // resize check logs any errors
+ return;
+ }
- Bubble existingAppBubble = mBubbleData.getBubbleInStackWithKey(appBubbleKey);
+ Bubble existingNotebubble = mBubbleData.getBubbleInStackWithKey(noteBubbleKey);
ProtoLog.d(WM_SHELL_BUBBLES,
- "showOrHideAppBubble, key=%s existingAppBubble=%s stackVisibility=%s "
+ "showOrHideNotesBubble, key=%s existingAppBubble=%s stackVisibility=%s "
+ "statusBarShade=%s",
- appBubbleKey, existingAppBubble,
+ noteBubbleKey, existingNotebubble,
(mStackView != null ? mStackView.getVisibility() : "null"),
mIsStatusBarShade);
- if (existingAppBubble != null) {
+ if (existingNotebubble != null) {
BubbleViewProvider selectedBubble = mBubbleData.getSelectedBubble();
if (isStackExpanded()) {
- if (selectedBubble != null && appBubbleKey.equals(selectedBubble.getKey())) {
- ProtoLog.d(WM_SHELL_BUBBLES, "collapseStack for %s", appBubbleKey);
- // App bubble is expanded, lets collapse
+ if (selectedBubble != null && noteBubbleKey.equals(selectedBubble.getKey())) {
+ ProtoLog.d(WM_SHELL_BUBBLES, "collapseStack for %s", noteBubbleKey);
+ // Notes bubble is expanded, lets collapse
collapseStack();
} else {
- ProtoLog.d(WM_SHELL_BUBBLES, "setSelected for %s", appBubbleKey);
- // App bubble is not selected, select it
- mBubbleData.setSelectedBubble(existingAppBubble);
+ ProtoLog.d(WM_SHELL_BUBBLES, "setSelected for %s", noteBubbleKey);
+ // Notes bubble is not selected, select it
+ mBubbleData.setSelectedBubble(existingNotebubble);
}
} else {
- ProtoLog.d(WM_SHELL_BUBBLES, "setSelectedBubbleAndExpandStack %s", appBubbleKey);
- // App bubble is not selected, select it & expand
- mBubbleData.setSelectedBubbleAndExpandStack(existingAppBubble);
+ ProtoLog.d(WM_SHELL_BUBBLES, "setSelectedBubbleAndExpandStack %s", noteBubbleKey);
+ // Notes bubble is not selected, select it & expand
+ mBubbleData.setSelectedBubbleAndExpandStack(existingNotebubble);
}
} else {
// Check if it exists in the overflow
- Bubble b = mBubbleData.getOverflowBubbleWithKey(appBubbleKey);
+ Bubble b = mBubbleData.getOverflowBubbleWithKey(noteBubbleKey);
if (b != null) {
// It's in the overflow, so remove it & reinflate
- mBubbleData.dismissBubbleWithKey(appBubbleKey, Bubbles.DISMISS_NOTIF_CANCEL);
+ mBubbleData.dismissBubbleWithKey(noteBubbleKey, Bubbles.DISMISS_NOTIF_CANCEL);
// Update the bubble entry in the overflow with the latest intent.
- b.setAppBubbleIntent(intent);
+ b.setIntent(intent);
} else {
- // App bubble does not exist, lets add and expand it
- b = Bubble.createAppBubble(intent, user, icon, mMainExecutor, mBackgroundExecutor);
+ // Notes bubble does not exist, lets add and expand it
+ b = Bubble.createNotesBubble(intent, user, icon, mMainExecutor,
+ mBackgroundExecutor);
}
- ProtoLog.d(WM_SHELL_BUBBLES, "inflateAndAdd %s", appBubbleKey);
+ ProtoLog.d(WM_SHELL_BUBBLES, "inflateAndAdd %s", noteBubbleKey);
b.setShouldAutoExpand(true);
inflateAndAdd(b, /* suppressFlyout= */ true, /* showInShade= */ false);
}
@@ -1679,9 +1742,9 @@ public class BubbleController implements ConfigurationChangeListener,
}
}
- /** Sets the app bubble's taskId which is cached for SysUI. */
- public void setAppBubbleTaskId(String key, int taskId) {
- mImpl.mCachedState.setAppBubbleTaskId(key, taskId);
+ /** Sets the note bubble's taskId which is cached for SysUI. */
+ public void setNoteBubbleTaskId(String key, int taskId) {
+ mImpl.mCachedState.setNoteBubbleTaskId(key, taskId);
}
/**
@@ -1706,7 +1769,6 @@ public class BubbleController implements ConfigurationChangeListener,
mExpandedViewManager,
mBubbleTaskViewFactory,
mBubblePositioner,
- mLogger,
mStackView,
mLayerView,
mBubbleIconFactory,
@@ -1770,7 +1832,6 @@ public class BubbleController implements ConfigurationChangeListener,
mExpandedViewManager,
mBubbleTaskViewFactory,
mBubblePositioner,
- mLogger,
mStackView,
mLayerView,
mBubbleIconFactory,
@@ -1852,7 +1913,6 @@ public class BubbleController implements ConfigurationChangeListener,
mExpandedViewManager,
mBubbleTaskViewFactory,
mBubblePositioner,
- mLogger,
mStackView,
mLayerView,
mBubbleIconFactory,
@@ -2539,7 +2599,7 @@ public class BubbleController implements ConfigurationChangeListener,
* @param context the context to use.
* @param entry the entry to bubble.
*/
- static boolean canLaunchInTaskView(Context context, BubbleEntry entry) {
+ boolean canLaunchInTaskView(Context context, BubbleEntry entry) {
if (BubbleAnythingFlagHelper.enableCreateAnyBubble()) return true;
PendingIntent intent = entry.getBubbleMetadata() != null
? entry.getBubbleMetadata().getIntent()
@@ -2554,26 +2614,8 @@ public class BubbleController implements ConfigurationChangeListener,
}
PackageManager packageManager = getPackageManagerForUser(
context, entry.getStatusBarNotification().getUser().getIdentifier());
- return isResizableActivity(intent.getIntent(), packageManager, entry.getKey());
- }
-
- static boolean isResizableActivity(Intent intent, PackageManager packageManager, String key) {
- if (intent == null) {
- Log.w(TAG, "Unable to send as bubble: " + key + " null intent");
- return false;
- }
- ActivityInfo info = intent.resolveActivityInfo(packageManager, 0);
- if (info == null) {
- Log.w(TAG, "Unable to send as bubble: " + key
- + " couldn't find activity info for intent: " + intent);
- return false;
- }
- if (!ActivityInfo.isResizeableMode(info.resizeMode)) {
- Log.w(TAG, "Unable to send as bubble: " + key
- + " activity is not resizable for intent: " + intent);
- return false;
- }
- return true;
+ return mResizabilityChecker.isResizableActivity(intent.getIntent(), packageManager,
+ entry.getKey());
}
static PackageManager getPackageManagerForUser(Context context, int userId) {
@@ -2719,7 +2761,8 @@ public class BubbleController implements ConfigurationChangeListener,
@Override
public void showAppBubble(Intent intent, UserHandle user) {
- mMainExecutor.execute(() -> mController.expandStackAndSelectBubble(intent, user));
+ mMainExecutor.execute(() -> mController.expandStackAndSelectBubble(intent,
+ user, /* bubbleBarLocation = */ null));
}
@Override
@@ -2805,7 +2848,7 @@ public class BubbleController implements ConfigurationChangeListener,
private HashMap<String, String> mSuppressedGroupToNotifKeys = new HashMap<>();
private HashMap<String, Bubble> mShortcutIdToBubble = new HashMap<>();
- private HashMap<String, Integer> mAppBubbleTaskIds = new HashMap();
+ private HashMap<String, Integer> mNoteBubbleTaskIds = new HashMap();
private ArrayList<Bubble> mTmpBubbles = new ArrayList<>();
@@ -2837,20 +2880,20 @@ public class BubbleController implements ConfigurationChangeListener,
mSuppressedBubbleKeys.clear();
mShortcutIdToBubble.clear();
- mAppBubbleTaskIds.clear();
+ mNoteBubbleTaskIds.clear();
for (Bubble b : mTmpBubbles) {
mShortcutIdToBubble.put(b.getShortcutId(), b);
updateBubbleSuppressedState(b);
- if (b.isAppBubble()) {
- mAppBubbleTaskIds.put(b.getKey(), b.getTaskId());
+ if (b.isNote()) {
+ mNoteBubbleTaskIds.put(b.getKey(), b.getTaskId());
}
}
}
- /** Sets the app bubble's taskId which is cached for SysUI. */
- synchronized void setAppBubbleTaskId(String key, int taskId) {
- mAppBubbleTaskIds.put(key, taskId);
+ /** Sets the note bubble's taskId which is cached for SysUI. */
+ synchronized void setNoteBubbleTaskId(String key, int taskId) {
+ mNoteBubbleTaskIds.put(key, taskId);
}
/**
@@ -2902,7 +2945,7 @@ public class BubbleController implements ConfigurationChangeListener,
pw.println(" suppressing: " + key);
}
- pw.println("mAppBubbleTaskIds: " + mAppBubbleTaskIds.values());
+ pw.println("mNoteBubbleTaskIds: " + mNoteBubbleTaskIds.values());
}
}
@@ -2953,14 +2996,14 @@ public class BubbleController implements ConfigurationChangeListener,
}
@Override
- public void showOrHideAppBubble(Intent intent, UserHandle user, @Nullable Icon icon) {
+ public void showOrHideNoteBubble(Intent intent, UserHandle user, @Nullable Icon icon) {
mMainExecutor.execute(
- () -> BubbleController.this.showOrHideAppBubble(intent, user, icon));
+ () -> BubbleController.this.showOrHideNotesBubble(intent, user, icon));
}
@Override
- public boolean isAppBubbleTaskId(int taskId) {
- return mCachedState.mAppBubbleTaskIds.values().contains(taskId);
+ public boolean isNoteBubbleTaskId(int taskId) {
+ return mCachedState.mNoteBubbleTaskIds.values().contains(taskId);
}
@Override
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleEducationController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleEducationController.kt
index bd4708259b50..ed23986d0f64 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleEducationController.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleEducationController.kt
@@ -83,4 +83,4 @@ class BubbleEducationController(private val context: Context) {
/** Convenience extension method to check if the bubble is a conversation bubble */
private val BubbleViewProvider.isConversationBubble: Boolean
- get() = if (this is Bubble) isConversation else false
+ get() = if (this is Bubble) isChat else false
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
index 97b03a9f58e4..3f607a9c52ef 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
@@ -227,18 +227,18 @@ public class BubbleExpandedView extends LinearLayout {
MODE_BACKGROUND_ACTIVITY_START_ALLOW_ALWAYS);
final boolean isShortcutBubble = (mBubble.hasMetadataShortcutId()
- || (mBubble.getShortcutInfo() != null
+ || (mBubble.isShortcut()
&& BubbleAnythingFlagHelper.enableCreateAnyBubble()));
- if (mBubble.isAppBubble()) {
+ // TODO - currently based on type, really it's what the "launch item" is.
+ if (mBubble.isApp() || mBubble.isNote()) {
Context context =
mContext.createContextAsUser(
mBubble.getUser(), Context.CONTEXT_RESTRICTED);
PendingIntent pi = PendingIntent.getActivity(
context,
/* requestCode= */ 0,
- mBubble.getAppBubbleIntent()
- .addFlags(FLAG_ACTIVITY_MULTIPLE_TASK),
+ mBubble.getIntent().addFlags(FLAG_ACTIVITY_MULTIPLE_TASK),
PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT,
/* options= */ null);
mTaskView.startActivity(pi, /* fillInIntent= */ null, options,
@@ -252,7 +252,7 @@ public class BubbleExpandedView extends LinearLayout {
} else {
options.setLaunchedFromBubble(true);
if (mBubble != null) {
- mBubble.setIntentActive();
+ mBubble.setPendingIntentActive();
}
final Intent fillInIntent = new Intent();
// Apply flags to make behaviour match documentLaunchMode=always.
@@ -285,9 +285,9 @@ public class BubbleExpandedView extends LinearLayout {
// The taskId is saved to use for removeTask, preventing appearance in recent tasks.
mTaskId = taskId;
- if (mBubble != null && mBubble.isAppBubble()) {
+ if (mBubble != null && mBubble.isNote()) {
// Let the controller know sooner what the taskId is.
- mManager.setAppBubbleTaskId(mBubble.getKey(), mTaskId);
+ mManager.setNoteBubbleTaskId(mBubble.getKey(), mTaskId);
}
// With the task org, the taskAppeared callback will only happen once the task has
@@ -920,7 +920,7 @@ public class BubbleExpandedView extends LinearLayout {
});
if (isNew) {
- mPendingIntent = mBubble.getBubbleIntent();
+ mPendingIntent = mBubble.getPendingIntent();
if ((mPendingIntent != null || mBubble.hasMetadataShortcutId())
&& mTaskView != null) {
setContentVisibility(false);
@@ -947,7 +947,7 @@ public class BubbleExpandedView extends LinearLayout {
*/
private boolean didBackingContentChange(Bubble newBubble) {
boolean prevWasIntentBased = mBubble != null && mPendingIntent != null;
- boolean newIsIntentBased = newBubble.getBubbleIntent() != null;
+ boolean newIsIntentBased = newBubble.getPendingIntent() != null;
return prevWasIntentBased != newIsIntentBased;
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedViewManager.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedViewManager.kt
index a02623138f1e..6be49ddc549a 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedViewManager.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedViewManager.kt
@@ -28,7 +28,7 @@ interface BubbleExpandedViewManager {
fun promoteBubbleFromOverflow(bubble: Bubble)
fun removeBubble(key: String, reason: Int)
fun dismissBubble(bubble: Bubble, reason: Int)
- fun setAppBubbleTaskId(key: String, taskId: Int)
+ fun setNoteBubbleTaskId(key: String, taskId: Int)
fun isStackExpanded(): Boolean
fun isShowingAsBubbleBar(): Boolean
fun hideCurrentInputMethod()
@@ -73,8 +73,8 @@ interface BubbleExpandedViewManager {
controller.dismissBubble(bubble, reason)
}
- override fun setAppBubbleTaskId(key: String, taskId: Int) {
- controller.setAppBubbleTaskId(key, taskId)
+ override fun setNoteBubbleTaskId(key: String, taskId: Int) {
+ controller.setNoteBubbleTaskId(key, taskId)
}
override fun isStackExpanded(): Boolean = controller.isStackExpanded
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleLogger.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleLogger.java
index 347df330c4b3..831f2271d500 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleLogger.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleLogger.java
@@ -20,6 +20,8 @@ import com.android.internal.logging.UiEvent;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.util.FrameworkStatsLog;
+import javax.inject.Inject;
+
/**
* Implementation of UiEventLogger for logging bubble UI events.
*
@@ -145,8 +147,14 @@ public class BubbleLogger {
@UiEvent(doc = "bubble promoted from overflow back to bubble bar")
BUBBLE_BAR_OVERFLOW_REMOVE_BACK_TO_BAR(1949),
+ @UiEvent(doc = "application icon is dropped in the BubbleBar left drop zone")
+ BUBBLE_BAR_MOVED_LEFT_APP_ICON_DROP(2082),
+
+ @UiEvent(doc = "application icon is dropped in the BubbleBar right drop zone")
+ BUBBLE_BAR_MOVED_RIGHT_APP_ICON_DROP(2083),
+
@UiEvent(doc = "while bubble bar is expanded, switch to another/existing bubble")
- BUBBLE_BAR_BUBBLE_SWITCHED(1977)
+ BUBBLE_BAR_BUBBLE_SWITCHED(1977),
// endregion
;
@@ -163,6 +171,7 @@ public class BubbleLogger {
}
}
+ @Inject
public BubbleLogger(UiEventLogger uiEventLogger) {
mUiEventLogger = uiEventLogger;
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleOverflow.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleOverflow.kt
index 086c91985ae3..d94f8440d3c9 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleOverflow.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleOverflow.kt
@@ -73,13 +73,11 @@ class BubbleOverflow(private val context: Context, private val positioner: Bubbl
fun initializeForBubbleBar(
expandedViewManager: BubbleExpandedViewManager,
positioner: BubblePositioner,
- bubbleLogger: BubbleLogger,
) {
createBubbleBarExpandedView()
.initialize(
expandedViewManager,
positioner,
- bubbleLogger,
/* isOverflow= */ true,
/* bubbleTaskView= */ null,
/* mainExecutor= */ null,
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java
index a725e04d3f8a..5273a7cf2432 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java
@@ -27,18 +27,21 @@ import android.graphics.RectF;
import android.view.Surface;
import android.view.WindowManager;
+import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import com.android.internal.protolog.ProtoLog;
import com.android.launcher3.icons.IconNormalizer;
import com.android.wm.shell.R;
import com.android.wm.shell.shared.bubbles.BubbleBarLocation;
+import com.android.wm.shell.shared.bubbles.BubbleDropTargetBoundsProvider;
+import com.android.wm.shell.shared.bubbles.DeviceConfig;
/**
* Keeps track of display size, configuration, and specific bubble sizes. One place for all
* placement and positioning calculations to refer to.
*/
-public class BubblePositioner {
+public class BubblePositioner implements BubbleDropTargetBoundsProvider {
/** The screen edge the bubble stack is pinned to */
public enum StackPinnedEdge {
@@ -99,6 +102,7 @@ public class BubblePositioner {
private int mManageButtonHeight;
private int mOverflowHeight;
private int mMinimumFlyoutWidthLargeScreen;
+ private int mBubbleBarExpandedViewDropTargetPadding;
private PointF mRestingStackPosition;
@@ -163,6 +167,8 @@ public class BubblePositioner {
res.getDimensionPixelSize(R.dimen.bubble_bar_expanded_view_width),
mPositionRect.width() - 2 * mExpandedViewPadding
);
+ mBubbleBarExpandedViewDropTargetPadding = res.getDimensionPixelSize(
+ R.dimen.bubble_bar_expanded_view_drop_target_padding);
if (mShowingInBubbleBar) {
mExpandedViewLargeScreenWidth = mExpandedViewBubbleBarWidth;
@@ -758,20 +764,20 @@ public class BubblePositioner {
* is being shown, for a normal bubble.
*/
public PointF getDefaultStartPosition() {
- return getDefaultStartPosition(false /* isAppBubble */);
+ return getDefaultStartPosition(false /* isNoteBubble */);
}
/**
* The stack position to use if we don't have a saved location or if user education
* is being shown.
*
- * @param isAppBubble whether this start position is for an app bubble or not.
+ * @param isNoteBubble whether this start position is for a note bubble or not.
*/
- public PointF getDefaultStartPosition(boolean isAppBubble) {
+ public PointF getDefaultStartPosition(boolean isNoteBubble) {
// Normal bubbles start on the left if we're in LTR, right otherwise.
// TODO (b/294284894): update language around "app bubble" here
// App bubbles start on the right in RTL, left otherwise.
- final boolean startOnLeft = isAppBubble ? mDeviceConfig.isRtl() : !mDeviceConfig.isRtl();
+ final boolean startOnLeft = isNoteBubble ? mDeviceConfig.isRtl() : !mDeviceConfig.isRtl();
return getStartPosition(startOnLeft ? StackPinnedEdge.LEFT : StackPinnedEdge.RIGHT);
}
@@ -964,4 +970,14 @@ public class BubblePositioner {
int top = getExpandedViewBottomForBubbleBar() - height;
out.offsetTo(left, top);
}
+
+ @NonNull
+ @Override
+ public Rect getBubbleBarExpandedViewDropTargetBounds(boolean onLeft) {
+ Rect bounds = new Rect();
+ getBubbleBarExpandedViewBounds(onLeft, false, bounds);
+ bounds.inset(mBubbleBarExpandedViewDropTargetPadding,
+ mBubbleBarExpandedViewDropTargetPadding);
+ return bounds;
+ }
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleResizabilityChecker.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleResizabilityChecker.kt
new file mode 100644
index 000000000000..6ca08215152f
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleResizabilityChecker.kt
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.bubbles
+
+import android.content.Intent
+import android.content.pm.ActivityInfo
+import android.content.pm.PackageManager
+import android.util.Log
+
+/**
+ * Checks if an intent is resizable to display in a bubble.
+ */
+class BubbleResizabilityChecker : ResizabilityChecker {
+
+ override fun isResizableActivity(
+ intent: Intent?,
+ packageManager: PackageManager, key: String
+ ): Boolean {
+ if (intent == null) {
+ Log.w(TAG, "Unable to send as bubble: $key null intent")
+ return false
+ }
+ val info = intent.resolveActivityInfo(packageManager, 0)
+ if (info == null) {
+ Log.w(
+ TAG, ("Unable to send as bubble: " + key
+ + " couldn't find activity info for intent: " + intent)
+ )
+ return false
+ }
+ if (!ActivityInfo.isResizeableMode(info.resizeMode)) {
+ Log.w(
+ TAG, ("Unable to send as bubble: " + key
+ + " activity is not resizable for intent: " + intent)
+ )
+ return false
+ }
+ return true
+ }
+
+ companion object {
+ private const val TAG = "BubbleResizeChecker"
+ }
+} \ No newline at end of file
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java
index f1f49eda75b6..dad627f85d95 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java
@@ -91,6 +91,7 @@ import com.android.wm.shell.common.FloatingContentCoordinator;
import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.shared.animation.Interpolators;
import com.android.wm.shell.shared.animation.PhysicsAnimator;
+import com.android.wm.shell.shared.bubbles.DeviceConfig;
import com.android.wm.shell.shared.bubbles.DismissView;
import com.android.wm.shell.shared.bubbles.RelativeTouchListener;
import com.android.wm.shell.shared.magnetictarget.MagnetizedObject;
@@ -1384,16 +1385,16 @@ public class BubbleStackView extends FrameLayout
/**
* Whether the selected bubble is conversation bubble
*/
- private boolean isConversationBubble() {
+ private boolean isChat() {
BubbleViewProvider bubble = mBubbleData.getSelectedBubble();
- return bubble instanceof Bubble && ((Bubble) bubble).isConversation();
+ return bubble instanceof Bubble && ((Bubble) bubble).isChat();
}
/**
* Whether the educational view should show for the expanded view "manage" menu.
*/
private boolean shouldShowManageEdu() {
- if (!isConversationBubble()) {
+ if (!isChat()) {
// We only show user education for conversation bubbles right now
return false;
}
@@ -1440,7 +1441,7 @@ public class BubbleStackView extends FrameLayout
* Whether education view should show for the collapsed stack.
*/
private boolean shouldShowStackEdu() {
- if (!isConversationBubble()) {
+ if (!isChat()) {
// We only show user education for conversation bubbles right now
return false;
}
@@ -1975,12 +1976,11 @@ public class BubbleStackView extends FrameLayout
return;
}
- if (firstBubble && bubble.isAppBubble() && !mPositioner.hasUserModifiedDefaultPosition()) {
- // TODO (b/294284894): update language around "app bubble" here
- // If it's an app bubble and we don't have a previous resting position, update the
- // controllers to use the default position for the app bubble (it'd be different from
+ if (firstBubble && bubble.isNote() && !mPositioner.hasUserModifiedDefaultPosition()) {
+ // If it's an note bubble and we don't have a previous resting position, update the
+ // controllers to use the default position for the note bubble (it'd be different from
// the position initialized with the controllers originally).
- PointF startPosition = mPositioner.getDefaultStartPosition(true /* isAppBubble */);
+ PointF startPosition = mPositioner.getDefaultStartPosition(true /* isNoteBubble */);
mStackOnLeftOrWillBe = mPositioner.isStackOnLeft(startPosition);
mStackAnimationController.setStackPosition(startPosition);
mExpandedAnimationController.setCollapsePoint(startPosition);
@@ -3322,20 +3322,16 @@ public class BubbleStackView extends FrameLayout
// name and icon.
if (show) {
final Bubble bubble = mBubbleData.getBubbleInStackWithKey(mExpandedBubble.getKey());
- if (bubble != null && !bubble.isAppBubble()) {
- // Setup options for non app bubbles
+ if (bubble != null && bubble.isChat()) {
+ // Setup options for chat bubbles
mManageDontBubbleView.setVisibility(VISIBLE);
mManageSettingsIcon.setImageBitmap(bubble.getRawAppBadge());
mManageSettingsText.setText(getResources().getString(
R.string.bubbles_app_settings, bubble.getAppName()));
mManageSettingsView.setVisibility(VISIBLE);
} else {
- // Setup options for app bubbles
- // App bubbles have no conversations
- // so we don't show the option to not bubble conversation
+ // Not a chat bubble, so don't show conversation / notification settings
mManageDontBubbleView.setVisibility(GONE);
- // App bubbles are not notification based
- // so we don't show the option to go to notification settings
mManageSettingsView.setVisibility(GONE);
}
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTaskViewHelper.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTaskViewHelper.java
index a6b858500dcb..4a0eee861d21 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTaskViewHelper.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTaskViewHelper.java
@@ -100,6 +100,7 @@ public class BubbleTaskViewHelper {
// TODO: I notice inconsistencies in lifecycle
// Post to keep the lifecycle normal
+ // TODO - currently based on type, really it's what the "launch item" is.
mParentView.post(() -> {
ProtoLog.d(WM_SHELL_BUBBLES, "onInitialized: calling startActivity, bubble=%s",
getBubbleKey());
@@ -108,18 +109,18 @@ public class BubbleTaskViewHelper {
options.setPendingIntentBackgroundActivityStartMode(
MODE_BACKGROUND_ACTIVITY_START_ALLOW_ALWAYS);
final boolean isShortcutBubble = (mBubble.hasMetadataShortcutId()
- || (mBubble.getShortcutInfo() != null
+ || (mBubble.isShortcut()
&& BubbleAnythingFlagHelper.enableCreateAnyBubble()));
if (mBubble.getPreparingTransition() != null) {
mBubble.getPreparingTransition().surfaceCreated();
- } else if (mBubble.isAppBubble()) {
+ } else if (mBubble.isApp() || mBubble.isNote()) {
Context context =
mContext.createContextAsUser(
mBubble.getUser(), Context.CONTEXT_RESTRICTED);
PendingIntent pi = PendingIntent.getActivity(
context,
/* requestCode= */ 0,
- mBubble.getAppBubbleIntent()
+ mBubble.getIntent()
.addFlags(FLAG_ACTIVITY_MULTIPLE_TASK),
PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT,
/* options= */ null);
@@ -133,7 +134,7 @@ public class BubbleTaskViewHelper {
} else {
options.setLaunchedFromBubble(true);
if (mBubble != null) {
- mBubble.setIntentActive();
+ mBubble.setPendingIntentActive();
}
final Intent fillInIntent = new Intent();
// Apply flags to make behaviour match documentLaunchMode=always.
@@ -167,9 +168,9 @@ public class BubbleTaskViewHelper {
// The taskId is saved to use for removeTask, preventing appearance in recent tasks.
mTaskId = taskId;
- if (mBubble != null && mBubble.isAppBubble()) {
+ if (mBubble != null && mBubble.isNote()) {
// Let the controller know sooner what the taskId is.
- mExpandedViewManager.setAppBubbleTaskId(mBubble.getKey(), mTaskId);
+ mExpandedViewManager.setNoteBubbleTaskId(mBubble.getKey(), mTaskId);
}
// With the task org, the taskAppeared callback will only happen once the task has
@@ -231,7 +232,7 @@ public class BubbleTaskViewHelper {
boolean isNew = mBubble == null || didBackingContentChange(bubble);
mBubble = bubble;
if (isNew) {
- mPendingIntent = mBubble.getBubbleIntent();
+ mPendingIntent = mBubble.getPendingIntent();
return true;
}
return false;
@@ -276,7 +277,7 @@ public class BubbleTaskViewHelper {
*/
private boolean didBackingContentChange(Bubble newBubble) {
boolean prevWasIntentBased = mBubble != null && mPendingIntent != null;
- boolean newIsIntentBased = newBubble.getBubbleIntent() != null;
+ boolean newIsIntentBased = newBubble.getPendingIntent() != null;
return prevWasIntentBased != newIsIntentBased;
}
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTransitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTransitions.java
index 29fb1a23017c..df8b4fd12540 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTransitions.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleTransitions.java
@@ -90,13 +90,12 @@ public class BubbleTransitions {
*/
public BubbleTransition startConvertToBubble(Bubble bubble, TaskInfo taskInfo,
BubbleExpandedViewManager expandedViewManager, BubbleTaskViewFactory factory,
- BubblePositioner positioner, BubbleLogger logger, BubbleStackView stackView,
+ BubblePositioner positioner, BubbleStackView stackView,
BubbleBarLayerView layerView, BubbleIconFactory iconFactory,
boolean inflateSync) {
- ConvertToBubble convert = new ConvertToBubble(bubble, taskInfo, mContext,
- expandedViewManager, factory, positioner, logger, stackView, layerView, iconFactory,
+ return new ConvertToBubble(bubble, taskInfo, mContext,
+ expandedViewManager, factory, positioner, stackView, layerView, iconFactory,
inflateSync);
- return convert;
}
/**
@@ -182,7 +181,7 @@ public class BubbleTransitions {
ConvertToBubble(Bubble bubble, TaskInfo taskInfo, Context context,
BubbleExpandedViewManager expandedViewManager, BubbleTaskViewFactory factory,
- BubblePositioner positioner, BubbleLogger logger, BubbleStackView stackView,
+ BubblePositioner positioner, BubbleStackView stackView,
BubbleBarLayerView layerView, BubbleIconFactory iconFactory, boolean inflateSync) {
mBubble = bubble;
mTaskInfo = taskInfo;
@@ -195,7 +194,6 @@ public class BubbleTransitions {
expandedViewManager,
factory,
positioner,
- logger,
stackView,
layerView,
iconFactory,
@@ -248,7 +246,9 @@ public class BubbleTransitions {
@Override
public void mergeAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
- @NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget,
+ @NonNull SurfaceControl.Transaction startT,
+ @NonNull SurfaceControl.Transaction finishT,
+ @NonNull IBinder mergeTarget,
@NonNull Transitions.TransitionFinishCallback finishCallback) {
}
@@ -423,7 +423,9 @@ public class BubbleTransitions {
@Override
public void mergeAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
- @NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget,
+ @NonNull SurfaceControl.Transaction startT,
+ @NonNull SurfaceControl.Transaction finishT,
+ @NonNull IBinder mergeTarget,
@NonNull Transitions.TransitionFinishCallback finishCallback) {
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleViewInfoTask.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleViewInfoTask.java
index 96b6043059d2..d78f459c6f5f 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleViewInfoTask.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleViewInfoTask.java
@@ -73,7 +73,6 @@ public class BubbleViewInfoTask {
private final WeakReference<BubbleExpandedViewManager> mExpandedViewManager;
private final WeakReference<BubbleTaskViewFactory> mTaskViewFactory;
private final WeakReference<BubblePositioner> mPositioner;
- private final WeakReference<BubbleLogger> mBubbleLogger;
private final WeakReference<BubbleStackView> mStackView;
private final WeakReference<BubbleBarLayerView> mLayerView;
private final BubbleIconFactory mIconFactory;
@@ -95,7 +94,6 @@ public class BubbleViewInfoTask {
BubbleExpandedViewManager expandedViewManager,
BubbleTaskViewFactory taskViewFactory,
BubblePositioner positioner,
- BubbleLogger bubbleLogger,
@Nullable BubbleStackView stackView,
@Nullable BubbleBarLayerView layerView,
BubbleIconFactory factory,
@@ -108,7 +106,6 @@ public class BubbleViewInfoTask {
mExpandedViewManager = new WeakReference<>(expandedViewManager);
mTaskViewFactory = new WeakReference<>(taskViewFactory);
mPositioner = new WeakReference<>(positioner);
- mBubbleLogger = new WeakReference<>(bubbleLogger);
mStackView = new WeakReference<>(stackView);
mLayerView = new WeakReference<>(layerView);
mIconFactory = factory;
@@ -224,7 +221,7 @@ public class BubbleViewInfoTask {
ProtoLog.v(WM_SHELL_BUBBLES, "Task initializing bubble bar expanded view key=%s",
mBubble.getKey());
viewInfo.bubbleBarExpandedView.initialize(mExpandedViewManager.get(),
- mPositioner.get(), mBubbleLogger.get(), false /* isOverflow */,
+ mPositioner.get(), false /* isOverflow */,
viewInfo.taskView, mMainExecutor, mBgExecutor,
new RegionSamplingProvider() {
@Override
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleViewInfoTaskLegacy.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleViewInfoTaskLegacy.java
index c1da94cc470f..06e02a1a4cf8 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleViewInfoTaskLegacy.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleViewInfoTaskLegacy.java
@@ -78,7 +78,6 @@ public class BubbleViewInfoTaskLegacy extends
private WeakReference<BubbleExpandedViewManager> mExpandedViewManager;
private WeakReference<BubbleTaskViewFactory> mTaskViewFactory;
private WeakReference<BubblePositioner> mPositioner;
- private WeakReference<BubbleLogger> mBubbleLogger;
private WeakReference<BubbleStackView> mStackView;
private WeakReference<BubbleBarLayerView> mLayerView;
private BubbleIconFactory mIconFactory;
@@ -96,7 +95,6 @@ public class BubbleViewInfoTaskLegacy extends
BubbleExpandedViewManager expandedViewManager,
BubbleTaskViewFactory taskViewFactory,
BubblePositioner positioner,
- BubbleLogger bubbleLogger,
@Nullable BubbleStackView stackView,
@Nullable BubbleBarLayerView layerView,
BubbleIconFactory factory,
@@ -109,7 +107,6 @@ public class BubbleViewInfoTaskLegacy extends
mExpandedViewManager = new WeakReference<>(expandedViewManager);
mTaskViewFactory = new WeakReference<>(taskViewFactory);
mPositioner = new WeakReference<>(positioner);
- mBubbleLogger = new WeakReference<>(bubbleLogger);
mStackView = new WeakReference<>(stackView);
mLayerView = new WeakReference<>(layerView);
mIconFactory = factory;
@@ -127,9 +124,8 @@ public class BubbleViewInfoTaskLegacy extends
}
if (mLayerView.get() != null) {
return BubbleViewInfo.populateForBubbleBar(mContext.get(), mExpandedViewManager.get(),
- mTaskViewFactory.get(), mPositioner.get(), mBubbleLogger.get(),
- mLayerView.get(), mIconFactory, mBubble, mSkipInflation, mMainExecutor,
- mBackgroundExecutor);
+ mTaskViewFactory.get(), mPositioner.get(), mLayerView.get(), mIconFactory,
+ mBubble, mSkipInflation, mMainExecutor, mBackgroundExecutor);
} else {
return BubbleViewInfo.populate(mContext.get(), mExpandedViewManager.get(),
mTaskViewFactory.get(), mPositioner.get(), mStackView.get(), mIconFactory,
@@ -191,7 +187,6 @@ public class BubbleViewInfoTaskLegacy extends
BubbleExpandedViewManager expandedViewManager,
BubbleTaskViewFactory taskViewFactory,
BubblePositioner positioner,
- BubbleLogger bubbleLogger,
BubbleBarLayerView layerView,
BubbleIconFactory iconFactory,
Bubble b,
@@ -205,7 +200,7 @@ public class BubbleViewInfoTaskLegacy extends
LayoutInflater inflater = LayoutInflater.from(c);
info.bubbleBarExpandedView = (BubbleBarExpandedView) inflater.inflate(
R.layout.bubble_bar_expanded_view, layerView, false /* attachToRoot */);
- info.bubbleBarExpandedView.initialize(expandedViewManager, positioner, bubbleLogger,
+ info.bubbleBarExpandedView.initialize(expandedViewManager, positioner,
false /* isOverflow */, bubbleTaskView, mainExecutor, backgroundExecutor,
new RegionSamplingProvider() {
@Override
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java
index 4297fac0f6a8..44ae74479949 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java
@@ -135,33 +135,31 @@ public interface Bubbles {
/**
* This method has different behavior depending on:
- * - if an app bubble exists
- * - if an app bubble is expanded
+ * - if a notes bubble exists
+ * - if a notes bubble is expanded
*
- * If no app bubble exists, this will add and expand a bubble with the provided intent. The
+ * If no notes bubble exists, this will add and expand a bubble with the provided intent. The
* intent must be explicit (i.e. include a package name or fully qualified component class name)
* and the activity for it should be resizable.
*
- * If an app bubble exists, this will toggle the visibility of it, i.e. if the app bubble is
- * expanded, calling this method will collapse it. If the app bubble is not expanded, calling
+ * If a notes bubble exists, this will toggle the visibility of it, i.e. if the notes bubble is
+ * expanded, calling this method will collapse it. If the notes bubble is not expanded, calling
* this method will expand it.
*
* These bubbles are <b>not</b> backed by a notification and remain until the user dismisses
* the bubble or bubble stack.
*
- * Some notes:
- * - Only one app bubble is supported at a time, regardless of users. Multi-users support is
- * tracked in b/273533235.
- * - Calling this method with a different intent than the existing app bubble will do nothing
+ * Some details:
+ * - Calling this method with a different intent than the existing bubble will do nothing
*
* @param intent the intent to display in the bubble expanded view.
- * @param user the {@link UserHandle} of the user to start this activity for.
- * @param icon the {@link Icon} to use for the bubble view.
+ * @param user the {@link UserHandle} of the user to start this activity for.
+ * @param icon the {@link Icon} to use for the bubble view.
*/
- void showOrHideAppBubble(Intent intent, UserHandle user, @Nullable Icon icon);
+ void showOrHideNoteBubble(Intent intent, UserHandle user, @Nullable Icon icon);
/** @return true if the specified {@code taskId} corresponds to app bubble's taskId. */
- boolean isAppBubbleTaskId(int taskId);
+ boolean isNoteBubbleTaskId(int taskId);
/**
` * @return a {@link SynchronousScreenCaptureListener} after performing a screenshot that may
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/ResizabilityChecker.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/ResizabilityChecker.kt
new file mode 100644
index 000000000000..6b3a72f567b9
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/ResizabilityChecker.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.bubbles
+
+import android.content.Intent
+import android.content.pm.PackageManager
+
+/**
+ * Interface to check whether the activity backed by a specific intent is resizable.
+ */
+fun interface ResizabilityChecker {
+
+ /**
+ * Returns whether the provided intent represents a resizable activity.
+ *
+ * @param intent the intent to check
+ * @param packageManager the package manager to use to do the look up
+ * @param key a key representing thing being checked (used for error logging)
+ */
+ fun isResizableActivity(intent: Intent?, packageManager: PackageManager, key: String): Boolean
+} \ No newline at end of file
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarDragListener.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarDragListener.kt
new file mode 100644
index 000000000000..afe5c87604d9
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarDragListener.kt
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.bubbles.bar
+
+import android.content.Intent
+import android.graphics.Rect
+import android.os.UserHandle
+import com.android.wm.shell.shared.bubbles.BubbleBarLocation
+
+/** Controller that takes care of the bubble bar drag events. */
+interface BubbleBarDragListener {
+
+ /** Called when the drag event is over the bubble bar drop zone. */
+ fun onDragItemOverBubbleBarDragZone(location: BubbleBarLocation)
+
+ /** Called when the drag event leaves the bubble bar drop zone. */
+ fun onItemDraggedOutsideBubbleBarDropZone()
+
+ /** Called when the drop event happens over the bubble bar drop zone. */
+ fun onItemDroppedOverBubbleBarDragZone(
+ location: BubbleBarLocation,
+ intent: Intent,
+ userHandle: UserHandle
+ )
+
+ /**
+ * Returns mapping of the bubble bar locations to the corresponding
+ * [rect][android.graphics.Rect] zone.
+ */
+ fun getBubbleBarDropZones(l: Int, t: Int, r: Int, b: Int): Map<BubbleBarLocation, Rect>
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedView.java
index ac5b9c9866ed..78c6cf377d8e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedView.java
@@ -53,6 +53,8 @@ import com.android.wm.shell.taskview.TaskView;
import java.util.concurrent.Executor;
import java.util.function.Supplier;
+import javax.inject.Inject;
+
/** Expanded view of a bubble when it's part of the bubble bar. */
public class BubbleBarExpandedView extends FrameLayout implements BubbleTaskViewHelper.Listener {
/**
@@ -107,7 +109,6 @@ public class BubbleBarExpandedView extends FrameLayout implements BubbleTaskView
private Bubble mBubble;
private BubbleExpandedViewManager mManager;
private BubblePositioner mPositioner;
- private BubbleLogger mBubbleLogger;
private boolean mIsOverflow;
private BubbleTaskViewHelper mBubbleTaskViewHelper;
private BubbleBarMenuViewController mMenuViewController;
@@ -177,6 +178,11 @@ public class BubbleBarExpandedView extends FrameLayout implements BubbleTaskView
VISIBLE
}
+ // Ideally this would be package private, but we have to set this in a fake for test and we
+ // don't yet have dagger set up for tests, so have to set manually
+ @Inject
+ public BubbleLogger bubbleLogger;
+
public BubbleBarExpandedView(Context context) {
this(context, null);
}
@@ -218,7 +224,6 @@ public class BubbleBarExpandedView extends FrameLayout implements BubbleTaskView
/** Initializes the view, must be called before doing anything else. */
public void initialize(BubbleExpandedViewManager expandedViewManager,
BubblePositioner positioner,
- BubbleLogger bubbleLogger,
boolean isOverflow,
@Nullable BubbleTaskView bubbleTaskView,
@Nullable Executor mainExecutor,
@@ -226,7 +231,6 @@ public class BubbleBarExpandedView extends FrameLayout implements BubbleTaskView
@Nullable RegionSamplingProvider regionSamplingProvider) {
mManager = expandedViewManager;
mPositioner = positioner;
- mBubbleLogger = bubbleLogger;
mIsOverflow = isOverflow;
mMainExecutor = mainExecutor;
mBackgroundExecutor = backgroundExecutor;
@@ -290,20 +294,20 @@ public class BubbleBarExpandedView extends FrameLayout implements BubbleTaskView
if (mListener != null) {
mListener.onUnBubbleConversation(bubble.getKey());
}
- mBubbleLogger.log(bubble, BubbleLogger.Event.BUBBLE_BAR_APP_MENU_OPT_OUT);
+ bubbleLogger.log(bubble, BubbleLogger.Event.BUBBLE_BAR_APP_MENU_OPT_OUT);
}
@Override
public void onOpenAppSettings(Bubble bubble) {
mManager.collapseStack();
mContext.startActivityAsUser(bubble.getSettingsIntent(mContext), bubble.getUser());
- mBubbleLogger.log(bubble, BubbleLogger.Event.BUBBLE_BAR_APP_MENU_GO_TO_SETTINGS);
+ bubbleLogger.log(bubble, BubbleLogger.Event.BUBBLE_BAR_APP_MENU_GO_TO_SETTINGS);
}
@Override
public void onDismissBubble(Bubble bubble) {
mManager.dismissBubble(bubble, Bubbles.DISMISS_USER_GESTURE);
- mBubbleLogger.log(bubble, BubbleLogger.Event.BUBBLE_BAR_BUBBLE_DISMISSED_APP_MENU);
+ bubbleLogger.log(bubble, BubbleLogger.Event.BUBBLE_BAR_BUBBLE_DISMISSED_APP_MENU);
}
@Override
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java
index f3f8d6f96a42..aa42de67152a 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java
@@ -45,11 +45,11 @@ import com.android.wm.shell.bubbles.BubbleLogger;
import com.android.wm.shell.bubbles.BubbleOverflow;
import com.android.wm.shell.bubbles.BubblePositioner;
import com.android.wm.shell.bubbles.BubbleViewProvider;
-import com.android.wm.shell.bubbles.DeviceConfig;
import com.android.wm.shell.bubbles.DismissViewUtils;
import com.android.wm.shell.bubbles.bar.BubbleBarExpandedViewDragController.DragListener;
import com.android.wm.shell.shared.bubbles.BaseBubblePinController;
import com.android.wm.shell.shared.bubbles.BubbleBarLocation;
+import com.android.wm.shell.shared.bubbles.DeviceConfig;
import com.android.wm.shell.shared.bubbles.DismissView;
import kotlin.Unit;
@@ -128,6 +128,16 @@ public class BubbleBarLayerView extends FrameLayout
setOnClickListener(view -> hideModalOrCollapse());
}
+ /** Hides the expanded view drop target. */
+ public void hideBubbleBarExpandedViewDropTarget() {
+ mBubbleExpandedViewPinController.hideDropTarget();
+ }
+
+ /** Shows the expanded view drop target at the requested {@link BubbleBarLocation location} */
+ public void showBubbleBarExtendedViewDropTarget(@NonNull BubbleBarLocation bubbleBarLocation) {
+ mBubbleExpandedViewPinController.showDropTarget(bubbleBarLocation);
+ }
+
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarMenuViewController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarMenuViewController.java
index 5f437d4af40f..b7761ec75782 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarMenuViewController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarMenuViewController.java
@@ -222,7 +222,7 @@ class BubbleBarMenuViewController {
Resources resources = mContext.getResources();
int tintColor = mContext.getColor(com.android.internal.R.color.materialColorOnSurface);
- if (bubble.isConversation()) {
+ if (bubble.isChat()) {
// Don't bubble conversation action
menuActions.add(new BubbleBarMenuView.MenuAction(
Icon.createWithResource(mContext, R.drawable.bubble_ic_stop_bubble),
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/properties/BubbleProperties.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/properties/BubbleProperties.kt
deleted file mode 100644
index 4206d9320b7d..000000000000
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/properties/BubbleProperties.kt
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.wm.shell.bubbles.properties
-
-/**
- * An interface for exposing bubble properties via flags which can be controlled easily in tests.
- */
-interface BubbleProperties {
- /**
- * Whether bubble bar is enabled.
- *
- * When this is `true`, depending on additional factors, such as screen size and taskbar state,
- * bubbles will be displayed in the bubble bar instead of floating.
- *
- * When this is `false`, bubbles will be floating.
- */
- val isBubbleBarEnabled: Boolean
-
- /** Refreshes the current value of [isBubbleBarEnabled]. */
- fun refresh()
-}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayController.java
index e69d60ddd6c6..4c3bde9b2b3a 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayController.java
@@ -39,6 +39,7 @@ import androidx.annotation.BinderThread;
import com.android.window.flags.Flags;
import com.android.wm.shell.common.DisplayChangeController.OnDisplayChangingListener;
import com.android.wm.shell.shared.annotations.ShellMainThread;
+import com.android.wm.shell.shared.desktopmode.DesktopModeStatus;
import com.android.wm.shell.sysui.ShellInit;
import java.util.ArrayList;
@@ -91,7 +92,8 @@ public class DisplayController {
onDisplayAdded(displayIds[i]);
}
- if (Flags.enableConnectedDisplaysWindowDrag()) {
+ if (Flags.enableConnectedDisplaysWindowDrag()
+ && DesktopModeStatus.canEnterDesktopMode(mContext)) {
mDisplayManager.registerTopologyListener(mMainExecutor,
this::onDisplayTopologyChanged);
onDisplayTopologyChanged(mDisplayManager.getDisplayTopology());
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/InputChannelSupplier.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/common/InputChannelSupplier.kt
new file mode 100644
index 000000000000..41382047945b
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/InputChannelSupplier.kt
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.common
+
+import android.view.InputChannel
+import com.android.wm.shell.dagger.WMSingleton
+import java.util.function.Supplier
+import javax.inject.Inject
+
+/**
+ * An Injectable [Supplier<InputChannel>]. This can be used in place of kotlin default
+ * parameters values [builder = ::InputChannel] which requires the [@JvmOverloads] annotation to
+ * make this available in Java.
+ * This can be used every time a component needs the dependency to the default [Supplier] for
+ * [InputChannel]s.
+ */
+@WMSingleton
+class InputChannelSupplier @Inject constructor() : Supplier<InputChannel> {
+ override fun get(): InputChannel = InputChannel()
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/UserProfileContexts.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/common/UserProfileContexts.kt
index 0577f9e625ca..16938647001b 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/UserProfileContexts.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/UserProfileContexts.kt
@@ -25,6 +25,7 @@ import android.util.SparseArray
import com.android.wm.shell.sysui.ShellController
import com.android.wm.shell.sysui.ShellInit
import com.android.wm.shell.sysui.UserChangeListener
+import androidx.core.util.size
/** Creates and manages contexts for all the profiles of the current user. */
class UserProfileContexts(
@@ -35,6 +36,8 @@ class UserProfileContexts(
// Contexts for all the profiles of the current user.
private val currentProfilesContext = SparseArray<Context>()
+ private val shellUserId = baseContext.userId
+
lateinit var userContext: Context
private set
@@ -49,6 +52,9 @@ class UserProfileContexts(
currentProfilesContext.clear()
this@UserProfileContexts.userContext = userContext
currentProfilesContext.put(newUserId, userContext)
+ if (newUserId != shellUserId) {
+ currentProfilesContext.put(shellUserId, baseContext)
+ }
}
override fun onUserProfilesChanged(profiles: List<UserInfo>) {
@@ -69,9 +75,9 @@ class UserProfileContexts(
currentProfilesContext.put(profile.id, profileContext)
}
val profilesToRemove = buildList<Int> {
- for (i in 0..<currentProfilesContext.size()) {
+ for (i in 0..<currentProfilesContext.size) {
val userId = currentProfilesContext.keyAt(i)
- if (profiles.none { it.id == userId }) {
+ if (userId != shellUserId && profiles.none { it.id == userId }) {
add(userId)
}
}
@@ -80,4 +86,12 @@ class UserProfileContexts(
}
operator fun get(userId: Int): Context? = currentProfilesContext.get(userId)
+
+ fun getOrCreate(userId: Int): Context {
+ val context = currentProfilesContext[userId]
+ if (context != null) return context
+ return baseContext.createContextAsUser(UserHandle.of(userId), /* flags= */ 0).also {
+ currentProfilesContext[userId] = it
+ }
+ }
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/WindowSessionSupplier.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/common/WindowSessionSupplier.kt
new file mode 100644
index 000000000000..2c66e97f03e1
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/WindowSessionSupplier.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.common
+
+import android.view.IWindowSession
+import android.view.WindowManagerGlobal
+import com.android.wm.shell.dagger.WMSingleton
+import java.util.function.Supplier
+import javax.inject.Inject
+
+/**
+ * An Injectable [Supplier<IWindowSession>]. This can be used in place of kotlin default
+ * parameters values [builder = WindowManagerGlobal::getWindowSession] which requires the
+ * [@JvmOverloads] annotation to make this available in Java.
+ * This can be used every time a component needs the dependency to the default [Supplier] for
+ * [IWindowSession]s.
+ */
+@WMSingleton
+class WindowSessionSupplier @Inject constructor() : Supplier<IWindowSession> {
+ override fun get(): IWindowSession = WindowManagerGlobal.getWindowSession()
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipDesktopState.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipDesktopState.java
new file mode 100644
index 000000000000..c10c2c905c97
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipDesktopState.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.common.pip;
+
+import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
+import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
+
+import android.app.ActivityManager;
+import android.window.DisplayAreaInfo;
+import android.window.WindowContainerToken;
+import android.window.WindowContainerTransaction;
+
+import com.android.window.flags.Flags;
+import com.android.wm.shell.RootTaskDisplayAreaOrganizer;
+import com.android.wm.shell.desktopmode.DesktopRepository;
+import com.android.wm.shell.desktopmode.DesktopUserRepositories;
+import com.android.wm.shell.desktopmode.desktopwallpaperactivity.DesktopWallpaperActivityTokenProvider;
+import com.android.wm.shell.pip2.phone.PipTransition;
+
+import java.util.Optional;
+
+/** Helper class for PiP on Desktop Mode. */
+public class PipDesktopState {
+ private final PipDisplayLayoutState mPipDisplayLayoutState;
+ private final Optional<DesktopUserRepositories> mDesktopUserRepositoriesOptional;
+ private final Optional<DesktopWallpaperActivityTokenProvider>
+ mDesktopWallpaperActivityTokenProviderOptional;
+ private final RootTaskDisplayAreaOrganizer mRootTaskDisplayAreaOrganizer;
+
+ public PipDesktopState(PipDisplayLayoutState pipDisplayLayoutState,
+ Optional<DesktopUserRepositories> desktopUserRepositoriesOptional,
+ Optional<DesktopWallpaperActivityTokenProvider>
+ desktopWallpaperActivityTokenProviderOptional,
+ RootTaskDisplayAreaOrganizer rootTaskDisplayAreaOrganizer) {
+ mPipDisplayLayoutState = pipDisplayLayoutState;
+ mDesktopUserRepositoriesOptional = desktopUserRepositoriesOptional;
+ mDesktopWallpaperActivityTokenProviderOptional =
+ desktopWallpaperActivityTokenProviderOptional;
+ mRootTaskDisplayAreaOrganizer = rootTaskDisplayAreaOrganizer;
+ }
+
+ /**
+ * Returns whether PiP in Desktop Windowing is enabled by checking the following:
+ * - Desktop Windowing in PiP flag is enabled
+ * - DesktopWallpaperActivityTokenProvider is injected
+ * - DesktopUserRepositories is injected
+ */
+ public boolean isDesktopWindowingPipEnabled() {
+ return Flags.enableDesktopWindowingPip()
+ && mDesktopWallpaperActivityTokenProviderOptional.isPresent()
+ && mDesktopUserRepositoriesOptional.isPresent();
+ }
+
+ /** Returns whether PiP in Connected Displays is enabled by checking the flag. */
+ public boolean isConnectedDisplaysPipEnabled() {
+ return Flags.enableConnectedDisplaysPip();
+ }
+
+ /** Returns whether the display with the PiP task is in freeform windowing mode. */
+ private boolean isDisplayInFreeform() {
+ final DisplayAreaInfo tdaInfo = mRootTaskDisplayAreaOrganizer.getDisplayAreaInfo(
+ mPipDisplayLayoutState.getDisplayId());
+ if (tdaInfo != null) {
+ return tdaInfo.configuration.windowConfiguration.getWindowingMode()
+ == WINDOWING_MODE_FREEFORM;
+ }
+ return false;
+ }
+
+ /** Returns whether PiP is exiting while we're in a Desktop Mode session. */
+ private boolean isPipExitingToDesktopMode() {
+ // Early return if PiP in Desktop Windowing is not supported.
+ if (!isDesktopWindowingPipEnabled()) {
+ return false;
+ }
+ final int displayId = mPipDisplayLayoutState.getDisplayId();
+ return getDesktopRepository().getVisibleTaskCount(displayId) > 0
+ || getDesktopWallpaperActivityTokenProvider().isWallpaperActivityVisible(displayId)
+ || isDisplayInFreeform();
+ }
+
+ /** Returns whether {@param pipTask} would be entering in a Desktop Mode session. */
+ public boolean isPipEnteringInDesktopMode(ActivityManager.RunningTaskInfo pipTask) {
+ // Early return if PiP in Desktop Windowing is not supported.
+ if (!isDesktopWindowingPipEnabled()) {
+ return false;
+ }
+ final DesktopRepository desktopRepository = getDesktopRepository();
+ return desktopRepository.getVisibleTaskCount(pipTask.getDisplayId()) > 0
+ || desktopRepository.isMinimizedPipPresentInDisplay(pipTask.getDisplayId());
+ }
+
+ /**
+ * Invoked when an EXIT_PiP transition is detected in {@link PipTransition}.
+ * Returns whether the PiP exiting should also trigger the active Desktop Mode session to exit.
+ */
+ public boolean shouldExitPipExitDesktopMode() {
+ // Early return if PiP in Desktop Windowing is not supported.
+ if (!isDesktopWindowingPipEnabled()) {
+ return false;
+ }
+ final int displayId = mPipDisplayLayoutState.getDisplayId();
+ return getDesktopRepository().getVisibleTaskCount(displayId) == 0
+ && getDesktopWallpaperActivityTokenProvider().isWallpaperActivityVisible(displayId);
+ }
+
+ /**
+ * Returns a {@link WindowContainerTransaction} that reorders the {@link WindowContainerToken}
+ * of the DesktopWallpaperActivity for the display with the given {@param displayId}.
+ */
+ public WindowContainerTransaction getWallpaperActivityTokenWct(int displayId) {
+ return new WindowContainerTransaction().reorder(
+ getDesktopWallpaperActivityTokenProvider().getToken(displayId), /* onTop= */ false);
+ }
+
+ /**
+ * The windowing mode to restore to when resizing out of PIP direction.
+ * Defaults to undefined and can be overridden to restore to an alternate windowing mode.
+ */
+ public int getOutPipWindowingMode() {
+ // If we are exiting PiP while the device is in Desktop mode (the task should expand to
+ // freeform windowing mode):
+ // 1) If the display windowing mode is freeform, set windowing mode to UNDEFINED so it will
+ // resolve the windowing mode to the display's windowing mode.
+ // 2) If the display windowing mode is not FREEFORM, set windowing mode to FREEFORM.
+ if (isPipExitingToDesktopMode()) {
+ if (isDisplayInFreeform()) {
+ return WINDOWING_MODE_UNDEFINED;
+ } else {
+ return WINDOWING_MODE_FREEFORM;
+ }
+ }
+
+ // By default, or if the task is going to fullscreen, reset the windowing mode to undefined.
+ return WINDOWING_MODE_UNDEFINED;
+ }
+
+ private DesktopRepository getDesktopRepository() {
+ return mDesktopUserRepositoriesOptional.get().getCurrent();
+ }
+
+ private DesktopWallpaperActivityTokenProvider getDesktopWallpaperActivityTokenProvider() {
+ return mDesktopWallpaperActivityTokenProviderOptional.get();
+ }
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerView.java
index 2c418d34f09a..06044ccc1c61 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerView.java
@@ -125,11 +125,13 @@ public class DividerView extends FrameLayout implements View.OnTouchListener {
}
};
- private final AccessibilityDelegate mHandleDelegate = new AccessibilityDelegate() {
+ final AccessibilityDelegate mHandleDelegate = new AccessibilityDelegate() {
@Override
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(host, info);
final DividerSnapAlgorithm snapAlgorithm = mSplitLayout.mDividerSnapAlgorithm;
+ info.addAction(new AccessibilityAction(R.id.action_swap_apps,
+ mContext.getString(R.string.accessibility_action_divider_swap)));
if (mSplitLayout.isLeftRightSplit()) {
info.addAction(new AccessibilityAction(R.id.action_move_tl_full,
mContext.getString(R.string.accessibility_action_divider_left_full)));
@@ -172,6 +174,11 @@ public class DividerView extends FrameLayout implements View.OnTouchListener {
@Override
public boolean performAccessibilityAction(@NonNull View host, int action,
@Nullable Bundle args) {
+ if (action == R.id.action_swap_apps) {
+ mSplitLayout.onDoubleTappedDivider();
+ return true;
+ }
+
DividerSnapAlgorithm.SnapTarget nextTarget = null;
DividerSnapAlgorithm snapAlgorithm = mSplitLayout.mDividerSnapAlgorithm;
if (action == R.id.action_move_tl_full) {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/transition/SurfaceBuilderSupplier.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/common/transition/SurfaceBuilderSupplier.kt
new file mode 100644
index 000000000000..0b6c06ac5649
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/transition/SurfaceBuilderSupplier.kt
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.common.transition
+
+import android.view.SurfaceControl
+import com.android.wm.shell.dagger.WMSingleton
+import java.util.function.Supplier
+import javax.inject.Inject
+
+/**
+ * An Injectable [Supplier<SurfaceControl.Builder>]. This can be used in place of kotlin default
+ * parameters values [builder = ::SurfaceControl.Builder] which requires the [@JvmOverloads]
+ * annotation to make this available in Java.
+ * This can be used every time a component needs the dependency to the default builder for
+ * [SurfaceControl]s.
+ */
+@WMSingleton
+class SurfaceBuilderSupplier @Inject constructor() : Supplier<SurfaceControl.Builder> {
+ override fun get(): SurfaceControl.Builder = SurfaceControl.Builder()
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/transition/TransactionSupplier.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/common/transition/TransactionSupplier.kt
new file mode 100644
index 000000000000..2d9899b4fccf
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/transition/TransactionSupplier.kt
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.common.transition
+
+import android.view.SurfaceControl
+import com.android.wm.shell.dagger.WMSingleton
+import java.util.function.Supplier
+import javax.inject.Inject
+
+/**
+ * An Injectable [Supplier<SurfaceControl.Transaction>]. This can be used in place of kotlin default
+ * parameters values [builder = ::SurfaceControl.Transaction] which requires the [@JvmOverloads]
+ * annotation to make this available in Java.
+ * This can be used every time a component needs the dependency to the default builder for
+ * [SurfaceControl.Transaction]s.
+ */
+@WMSingleton
+class TransactionSupplier @Inject constructor() : Supplier<SurfaceControl.Transaction> {
+ override fun get(): SurfaceControl.Transaction = SurfaceControl.Transaction()
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/LetterboxGestureListener.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/LetterboxGestureListener.kt
new file mode 100644
index 000000000000..f7afbb5bdaef
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/LetterboxGestureListener.kt
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.compatui.letterbox
+
+import android.view.GestureDetector.OnContextClickListener
+import android.view.GestureDetector.OnDoubleTapListener
+import android.view.GestureDetector.OnGestureListener
+import android.view.MotionEvent
+
+/**
+ * Interface which unions all the interfaces related to gestures.
+ */
+interface LetterboxGestureListener : OnGestureListener, OnDoubleTapListener, OnContextClickListener
+
+/**
+ * Convenience class which provide an overrideable implementation of
+ * {@link LetterboxGestureListener}.
+ */
+object LetterboxGestureDelegate : LetterboxGestureListener {
+ override fun onDown(e: MotionEvent): Boolean = false
+
+ override fun onShowPress(e: MotionEvent) {
+ }
+
+ override fun onSingleTapUp(e: MotionEvent): Boolean = false
+
+ override fun onScroll(
+ e1: MotionEvent?,
+ e2: MotionEvent,
+ distanceX: Float,
+ distanceY: Float
+ ): Boolean = false
+
+ override fun onLongPress(e: MotionEvent) {
+ }
+
+ override fun onFling(
+ e1: MotionEvent?,
+ e2: MotionEvent,
+ velocityX: Float,
+ velocityY: Float
+ ): Boolean = false
+
+ override fun onSingleTapConfirmed(e: MotionEvent): Boolean = false
+
+ override fun onDoubleTap(e: MotionEvent): Boolean = false
+
+ override fun onDoubleTapEvent(e: MotionEvent): Boolean = false
+
+ override fun onContextClick(e: MotionEvent): Boolean = false
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/LetterboxInputController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/LetterboxInputController.kt
new file mode 100644
index 000000000000..afd8e1519d24
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/LetterboxInputController.kt
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.compatui.letterbox
+
+import android.content.Context
+import android.graphics.Rect
+import android.graphics.Region
+import android.os.Handler
+import android.view.SurfaceControl
+import android.view.SurfaceControl.Transaction
+import com.android.internal.protolog.ProtoLog
+import com.android.wm.shell.common.InputChannelSupplier
+import com.android.wm.shell.common.WindowSessionSupplier
+import com.android.wm.shell.compatui.letterbox.LetterboxUtils.Maps.runOnItem
+import com.android.wm.shell.dagger.WMSingleton
+import com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_APP_COMPAT
+import java.util.function.Supplier
+import javax.inject.Inject
+
+/**
+ * [LetterboxController] implementation responsible for handling the spy [SurfaceControl] we use
+ * to detect letterbox events.
+ */
+@WMSingleton
+class LetterboxInputController @Inject constructor(
+ private val context: Context,
+ private val handler: Handler,
+ private val inputSurfaceBuilder: LetterboxInputSurfaceBuilder,
+ private val listenerSupplier: Supplier<LetterboxGestureListener>,
+ private val windowSessionSupplier: WindowSessionSupplier,
+ private val inputChannelSupplier: InputChannelSupplier
+) : LetterboxController {
+
+ companion object {
+ @JvmStatic
+ private val TAG = "LetterboxInputController"
+ }
+
+ private val inputDetectorMap = mutableMapOf<LetterboxKey, LetterboxInputDetector>()
+
+ override fun createLetterboxSurface(
+ key: LetterboxKey,
+ transaction: Transaction,
+ parentLeash: SurfaceControl
+ ) {
+ inputDetectorMap.runOnItem(key, onMissed = { k, m ->
+ m[k] =
+ LetterboxInputDetector(
+ context,
+ handler,
+ listenerSupplier.get(),
+ inputSurfaceBuilder,
+ windowSessionSupplier,
+ inputChannelSupplier
+ ).apply {
+ start(transaction, parentLeash, key)
+ }
+ })
+ }
+
+ override fun destroyLetterboxSurface(
+ key: LetterboxKey,
+ transaction: Transaction
+ ) {
+ with(inputDetectorMap) {
+ runOnItem(key, onFound = { item ->
+ item.stop(transaction)
+ })
+ remove(key)
+ }
+ }
+
+ override fun updateLetterboxSurfaceVisibility(
+ key: LetterboxKey,
+ transaction: Transaction,
+ visible: Boolean
+ ) {
+ with(inputDetectorMap) {
+ runOnItem(key, onFound = { item ->
+ item.updateVisibility(transaction, visible)
+ })
+ }
+ }
+
+ override fun updateLetterboxSurfaceBounds(
+ key: LetterboxKey,
+ transaction: Transaction,
+ taskBounds: Rect,
+ activityBounds: Rect
+ ) {
+ inputDetectorMap.runOnItem(key, onFound = { item ->
+ item.updateTouchableRegion(transaction, Region(taskBounds))
+ })
+ }
+
+ override fun dump() {
+ ProtoLog.v(WM_SHELL_APP_COMPAT, "%s: %s", TAG, "${inputDetectorMap.keys}")
+ }
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/LetterboxInputDetector.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/LetterboxInputDetector.kt
new file mode 100644
index 000000000000..812cc0161aae
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/LetterboxInputDetector.kt
@@ -0,0 +1,230 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.compatui.letterbox
+
+import android.content.Context
+import android.graphics.Region
+import android.os.Binder
+import android.os.Handler
+import android.os.IBinder
+import android.os.RemoteException
+import android.view.GestureDetector
+import android.view.IWindowSession
+import android.view.InputChannel
+import android.view.InputEvent
+import android.view.InputEventReceiver
+import android.view.MotionEvent
+import android.view.SurfaceControl
+import android.view.SurfaceControl.Transaction
+import android.view.WindowManager
+import android.window.InputTransferToken
+import com.android.internal.protolog.ProtoLog
+import com.android.wm.shell.common.InputChannelSupplier
+import com.android.wm.shell.common.WindowSessionSupplier
+import com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_APP_COMPAT
+
+/**
+ * This is responsible for detecting events on a given [SurfaceControl].
+ */
+class LetterboxInputDetector(
+ private val context: Context,
+ private val handler: Handler,
+ private val listener: LetterboxGestureListener,
+ private val inputSurfaceBuilder: LetterboxInputSurfaceBuilder,
+ private val windowSessionSupplier: WindowSessionSupplier,
+ private val inputChannelSupplier: InputChannelSupplier
+) {
+
+ companion object {
+ @JvmStatic
+ private val TAG = "LetterboxInputDetector"
+ }
+
+ private var state: InputDetectorState? = null
+
+ fun start(tx: Transaction, source: SurfaceControl, key: LetterboxKey) {
+ if (!isRunning()) {
+ val tmpState =
+ InputDetectorState(
+ context,
+ handler,
+ source,
+ key.displayId,
+ listener,
+ inputSurfaceBuilder,
+ windowSessionSupplier.get(),
+ inputChannelSupplier
+ )
+ if (tmpState.start(tx)) {
+ state = tmpState
+ } else {
+ ProtoLog.v(
+ WM_SHELL_APP_COMPAT,
+ "%s not started for %s on %s",
+ TAG,
+ "$source",
+ "$key"
+ )
+ }
+ }
+ }
+
+ fun updateTouchableRegion(tx: Transaction, region: Region) {
+ if (isRunning()) {
+ state?.setTouchableRegion(tx, region)
+ }
+ }
+
+ fun isRunning() = state != null
+
+ fun updateVisibility(tx: Transaction, visible: Boolean) {
+ if (isRunning()) {
+ state?.updateVisibility(tx, visible)
+ }
+ }
+
+ fun stop(tx: Transaction) {
+ if (isRunning()) {
+ state!!.stop(tx)
+ state = null
+ }
+ }
+
+ /**
+ * The state for a {@link SurfaceControl} for a given displayId.
+ */
+ private class InputDetectorState(
+ val context: Context,
+ val handler: Handler,
+ val source: SurfaceControl,
+ val displayId: Int,
+ val listener: LetterboxGestureListener,
+ val inputSurfaceBuilder: LetterboxInputSurfaceBuilder,
+ val windowSession: IWindowSession,
+ inputChannelSupplier: InputChannelSupplier
+ ) {
+
+ private val inputToken: IBinder
+ private val inputChannel: InputChannel
+ private var receiver: EventReceiver? = null
+ private var inputSurface: SurfaceControl? = null
+
+ init {
+ inputToken = Binder()
+ inputChannel = inputChannelSupplier.get()
+ }
+
+ fun start(tx: Transaction): Boolean {
+ val inputTransferToken = InputTransferToken()
+ try {
+ inputSurface =
+ inputSurfaceBuilder.createInputSurface(
+ tx,
+ source,
+ "Sink for $source",
+ "$TAG creation"
+ )
+ windowSession.grantInputChannel(
+ displayId,
+ inputSurface,
+ inputToken,
+ null,
+ WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
+ WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY,
+ WindowManager.LayoutParams.INPUT_FEATURE_SPY,
+ WindowManager.LayoutParams.TYPE_INPUT_CONSUMER,
+ null,
+ inputTransferToken,
+ "$TAG of $source",
+ inputChannel
+ )
+
+ receiver = EventReceiver(context, inputChannel, handler, listener)
+ return true
+ } catch (e: RemoteException) {
+ e.rethrowFromSystemServer()
+ }
+ return false
+ }
+
+ fun setTouchableRegion(tx: Transaction, region: Region) {
+ try {
+ tx.setWindowCrop(inputSurface, region.bounds.width(), region.bounds.height())
+
+ windowSession.updateInputChannel(
+ inputChannel.token,
+ displayId,
+ inputSurface,
+ WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
+ WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY,
+ WindowManager.LayoutParams.INPUT_FEATURE_SPY,
+ region
+ )
+ } catch (e: RemoteException) {
+ e.rethrowFromSystemServer()
+ }
+ }
+
+ fun updateVisibility(tx: Transaction, visible: Boolean) {
+ inputSurface?.let {
+ tx.setVisibility(it, visible)
+ }
+ }
+
+ fun stop(tx: Transaction) {
+ receiver?.dispose()
+ receiver = null
+ inputChannel.dispose()
+ windowSession.removeToken(inputToken)
+ inputSurface?.let { s ->
+ tx.remove(s)
+ }
+ }
+
+ // Removes the provided token
+ private fun IWindowSession.removeToken(token: IBinder) {
+ try {
+ remove(token)
+ } catch (e: RemoteException) {
+ e.rethrowFromSystemServer()
+ }
+ }
+ }
+
+ /**
+ * Reads from the provided {@link InputChannel} and identifies a specific event.
+ */
+ private class EventReceiver(
+ context: Context,
+ inputChannel: InputChannel,
+ uiHandler: Handler,
+ listener: LetterboxGestureListener
+ ) : InputEventReceiver(inputChannel, uiHandler.looper) {
+ private val eventDetector: GestureDetector
+
+ init {
+ eventDetector = GestureDetector(
+ context, listener,
+ uiHandler
+ )
+ }
+
+ override fun onInputEvent(event: InputEvent) {
+ finishInputEvent(event, eventDetector.onTouchEvent(event as MotionEvent))
+ }
+ }
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/LetterboxInputSurfaceBuilder.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/LetterboxInputSurfaceBuilder.kt
new file mode 100644
index 000000000000..fd8d86576115
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/LetterboxInputSurfaceBuilder.kt
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.compatui.letterbox
+
+import android.view.SurfaceControl
+import android.view.SurfaceControl.Transaction
+import com.android.wm.shell.common.transition.SurfaceBuilderSupplier
+import com.android.wm.shell.dagger.WMSingleton
+import javax.inject.Inject
+
+/**
+ * Component responsible for the actual creation of the Letterbox surfaces.
+ */
+@WMSingleton
+class LetterboxInputSurfaceBuilder @Inject constructor(
+ private val surfaceBuilderSupplier: SurfaceBuilderSupplier
+) {
+
+ companion object {
+ /*
+ * Letterbox spy surfaces need to stay above the activity layer which is 0.
+ */
+ // TODO(b/378673153): Consider adding this to [TaskConstants].
+ @JvmStatic
+ private val TASK_CHILD_LAYER_LETTERBOX_SPY = 1000
+ }
+
+ fun createInputSurface(
+ tx: Transaction,
+ parentLeash: SurfaceControl,
+ surfaceName: String,
+ callSite: String
+ ) = surfaceBuilderSupplier.get()
+ .setName(surfaceName)
+ .setContainerLayer()
+ .setParent(parentLeash)
+ .setCallsite(callSite)
+ .build().apply {
+ tx.setLayer(this, TASK_CHILD_LAYER_LETTERBOX_SPY)
+ .setTrustedOverlay(this, true)
+ .show(this)
+ .apply()
+ }
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/OWNERS b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/OWNERS
index 752d2fd721a5..8ab53eaa5eea 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/OWNERS
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/OWNERS
@@ -1,2 +1,3 @@
# WM Shell sub-module dagger owners
-jorgegil@google.com \ No newline at end of file
+jorgegil@google.com
+madym@google.com \ No newline at end of file
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMComponent.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMComponent.java
index 151dc438702d..ed5bebbb6a29 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMComponent.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMComponent.java
@@ -23,6 +23,7 @@ import androidx.annotation.Nullable;
import com.android.wm.shell.appzoomout.AppZoomOut;
import com.android.wm.shell.back.BackAnimation;
import com.android.wm.shell.bubbles.Bubbles;
+import com.android.wm.shell.bubbles.bar.BubbleBarExpandedView;
import com.android.wm.shell.desktopmode.DesktopMode;
import com.android.wm.shell.displayareahelper.DisplayAreaHelper;
import com.android.wm.shell.keyguard.KeyguardTransitions;
@@ -72,6 +73,8 @@ public interface WMComponent {
getShell().onInit();
}
+ // Interfaces provided to SysUI
+
@WMSingleton
ShellInterface getShell();
@@ -116,4 +119,9 @@ public interface WMComponent {
@WMSingleton
Optional<AppZoomOut> getAppZoomOut();
+
+ // Injector methods to support field injection
+
+ /** Injector method for {@link BubbleBarExpandedView}. */
+ void inject(BubbleBarExpandedView bubbleBarExpandedView);
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java
index 43f1a1037cab..0e6481b1c0ac 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java
@@ -581,12 +581,15 @@ public abstract class WMShellBaseModule {
ShellTaskOrganizer shellTaskOrganizer,
SyncTransactionQueue syncQueue,
Optional<RecentTasksController> recentTasksOptional,
- Optional<WindowDecorViewModel> windowDecorViewModelOptional) {
+ Optional<WindowDecorViewModel> windowDecorViewModelOptional,
+ Optional<DesktopWallpaperActivityTokenProvider>
+ desktopWallpaperActivityTokenProviderOptional) {
if (fullscreenTaskListener.isPresent()) {
return fullscreenTaskListener.get();
} else {
return new FullscreenTaskListener(shellInit, shellTaskOrganizer, syncQueue,
- recentTasksOptional, windowDecorViewModelOptional);
+ recentTasksOptional, windowDecorViewModelOptional,
+ desktopWallpaperActivityTokenProviderOptional);
}
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellConcurrencyModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellConcurrencyModule.java
index d7ddbdeaa6da..ee3e39e71558 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellConcurrencyModule.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellConcurrencyModule.java
@@ -37,6 +37,7 @@ import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.shared.annotations.ExternalMainThread;
import com.android.wm.shell.shared.annotations.ShellAnimationThread;
import com.android.wm.shell.shared.annotations.ShellBackgroundThread;
+import com.android.wm.shell.shared.annotations.ShellDesktopThread;
import com.android.wm.shell.shared.annotations.ShellMainThread;
import com.android.wm.shell.shared.annotations.ShellSplashscreenThread;
@@ -193,13 +194,26 @@ public abstract class WMShellConcurrencyModule {
}
/**
+ * Provides a Shell desktop thread Executor
+ */
+ @WMSingleton
+ @Provides
+ @ShellDesktopThread
+ public static ShellExecutor provideDesktopModeMiscExecutor() {
+ HandlerThread shellDesktopThread = new HandlerThread("wmshell.desktop",
+ THREAD_PRIORITY_TOP_APP_BOOST);
+ shellDesktopThread.start();
+ return new HandlerExecutor(shellDesktopThread.getThreadHandler());
+ }
+
+ /**
* Provides a Shell background thread Handler for low priority background tasks.
*/
@WMSingleton
@Provides
@ShellBackgroundThread
public static Handler provideSharedBackgroundHandler() {
- HandlerThread shellBackgroundThread = new HandlerThread("wmshell.background",
+ final HandlerThread shellBackgroundThread = new HandlerThread("wmshell.background",
THREAD_PRIORITY_BACKGROUND);
shellBackgroundThread.start();
return shellBackgroundThread.getThreadHandler();
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java
index c81838f56a74..b2b99d648bf4 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java
@@ -59,7 +59,8 @@ import com.android.wm.shell.bubbles.BubbleDataRepository;
import com.android.wm.shell.bubbles.BubbleEducationController;
import com.android.wm.shell.bubbles.BubbleLogger;
import com.android.wm.shell.bubbles.BubblePositioner;
-import com.android.wm.shell.bubbles.properties.ProdBubbleProperties;
+import com.android.wm.shell.bubbles.BubbleResizabilityChecker;
+import com.android.wm.shell.bubbles.bar.BubbleBarDragListener;
import com.android.wm.shell.bubbles.storage.BubblePersistentRepository;
import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.DisplayImeController;
@@ -80,9 +81,9 @@ import com.android.wm.shell.dagger.pip.PipModule;
import com.android.wm.shell.desktopmode.CloseDesktopTaskTransitionHandler;
import com.android.wm.shell.desktopmode.DefaultDragToDesktopTransitionHandler;
import com.android.wm.shell.desktopmode.DesktopActivityOrientationChangeHandler;
-import com.android.wm.shell.desktopmode.DesktopBackNavigationTransitionHandler;
import com.android.wm.shell.desktopmode.DesktopDisplayEventHandler;
import com.android.wm.shell.desktopmode.DesktopImmersiveController;
+import com.android.wm.shell.desktopmode.DesktopMinimizationTransitionHandler;
import com.android.wm.shell.desktopmode.DesktopMixedTransitionHandler;
import com.android.wm.shell.desktopmode.DesktopModeDragAndDropTransitionHandler;
import com.android.wm.shell.desktopmode.DesktopModeEventLogger;
@@ -111,6 +112,7 @@ import com.android.wm.shell.desktopmode.education.AppToWebEducationFilter;
import com.android.wm.shell.desktopmode.education.data.AppHandleEducationDatastoreRepository;
import com.android.wm.shell.desktopmode.education.data.AppToWebEducationDatastoreRepository;
import com.android.wm.shell.desktopmode.multidesks.DesksOrganizer;
+import com.android.wm.shell.desktopmode.multidesks.DesksTransitionObserver;
import com.android.wm.shell.desktopmode.multidesks.RootTaskDesksOrganizer;
import com.android.wm.shell.desktopmode.persistence.DesktopPersistentRepository;
import com.android.wm.shell.desktopmode.persistence.DesktopRepositoryInitializer;
@@ -293,7 +295,7 @@ public abstract class WMShellModule {
transitions,
syncQueue,
wmService,
- ProdBubbleProperties.INSTANCE);
+ new BubbleResizabilityChecker());
}
//
@@ -760,6 +762,7 @@ public abstract class WMShellModule {
Optional<BubbleController> bubbleController,
OverviewToDesktopTransitionObserver overviewToDesktopTransitionObserver,
DesksOrganizer desksOrganizer,
+ DesksTransitionObserver desksTransitionObserver,
UserProfileContexts userProfileContexts,
DesktopModeCompatPolicy desktopModeCompatPolicy) {
return new DesktopTasksController(
@@ -797,6 +800,7 @@ public abstract class WMShellModule {
bubbleController,
overviewToDesktopTransitionObserver,
desksOrganizer,
+ desksTransitionObserver,
userProfileContexts,
desktopModeCompatPolicy);
}
@@ -1069,11 +1073,11 @@ public abstract class WMShellModule {
@WMSingleton
@Provides
- static DesktopBackNavigationTransitionHandler provideDesktopBackNavigationTransitionHandler(
+ static DesktopMinimizationTransitionHandler provideDesktopMinimizationTransitionHandler(
@ShellMainThread ShellExecutor mainExecutor,
@ShellAnimationThread ShellExecutor animExecutor,
DisplayController displayController) {
- return new DesktopBackNavigationTransitionHandler(mainExecutor, animExecutor,
+ return new DesktopMinimizationTransitionHandler(mainExecutor, animExecutor,
displayController);
}
@@ -1134,6 +1138,7 @@ public abstract class WMShellModule {
Optional<DesktopMixedTransitionHandler> desktopMixedTransitionHandler,
Optional<BackAnimationController> backAnimationController,
DesktopWallpaperActivityTokenProvider desktopWallpaperActivityTokenProvider,
+ @NonNull DesksTransitionObserver desksTransitionObserver,
ShellInit shellInit) {
return desktopUserRepositories.flatMap(
repository ->
@@ -1146,11 +1151,21 @@ public abstract class WMShellModule {
desktopMixedTransitionHandler.get(),
backAnimationController.get(),
desktopWallpaperActivityTokenProvider,
+ desksTransitionObserver,
shellInit)));
}
@WMSingleton
@Provides
+ static DesksTransitionObserver provideDesksTransitionObserver(
+ @NonNull @DynamicOverride DesktopUserRepositories desktopUserRepositories,
+ @NonNull DesksOrganizer desksOrganizer
+ ) {
+ return new DesksTransitionObserver(desktopUserRepositories, desksOrganizer);
+ }
+
+ @WMSingleton
+ @Provides
static Optional<DesktopMixedTransitionHandler> provideDesktopMixedTransitionHandler(
Context context,
Transitions transitions,
@@ -1158,7 +1173,7 @@ public abstract class WMShellModule {
FreeformTaskTransitionHandler freeformTaskTransitionHandler,
CloseDesktopTaskTransitionHandler closeDesktopTaskTransitionHandler,
Optional<DesktopImmersiveController> desktopImmersiveController,
- DesktopBackNavigationTransitionHandler desktopBackNavigationTransitionHandler,
+ DesktopMinimizationTransitionHandler desktopMinimizationTransitionHandler,
InteractionJankMonitor interactionJankMonitor,
@ShellMainThread Handler handler,
ShellInit shellInit,
@@ -1176,7 +1191,7 @@ public abstract class WMShellModule {
freeformTaskTransitionHandler,
closeDesktopTaskTransitionHandler,
desktopImmersiveController.get(),
- desktopBackNavigationTransitionHandler,
+ desktopMinimizationTransitionHandler,
interactionJankMonitor,
handler,
shellInit,
@@ -1398,6 +1413,7 @@ public abstract class WMShellModule {
IconProvider iconProvider,
GlobalDragListener globalDragListener,
Transitions transitions,
+ Lazy<BubbleController> bubbleControllerLazy,
@ShellMainThread ShellExecutor mainExecutor) {
return new DragAndDropController(
context,
@@ -1410,6 +1426,12 @@ public abstract class WMShellModule {
iconProvider,
globalDragListener,
transitions,
+ new Lazy<>() {
+ @Override
+ public BubbleBarDragListener get() {
+ return bubbleControllerLazy.get();
+ }
+ },
mainExecutor);
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip2Module.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip2Module.java
index 413300612f7d..e7c76bbd91b2 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip2Module.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip2Module.java
@@ -31,6 +31,7 @@ import com.android.wm.shell.common.TaskStackListenerImpl;
import com.android.wm.shell.common.pip.PipAppOpsListener;
import com.android.wm.shell.common.pip.PipBoundsAlgorithm;
import com.android.wm.shell.common.pip.PipBoundsState;
+import com.android.wm.shell.common.pip.PipDesktopState;
import com.android.wm.shell.common.pip.PipDisplayLayoutState;
import com.android.wm.shell.common.pip.PipMediaController;
import com.android.wm.shell.common.pip.PipPerfHintController;
@@ -84,14 +85,11 @@ public abstract class Pip2Module {
@NonNull PipDisplayLayoutState pipDisplayLayoutState,
@NonNull PipUiStateChangeController pipUiStateChangeController,
DisplayController displayController,
- Optional<DesktopUserRepositories> desktopUserRepositoriesOptional,
- Optional<DesktopWallpaperActivityTokenProvider>
- desktopWallpaperActivityTokenProviderOptional) {
+ PipDesktopState pipDesktopState) {
return new PipTransition(context, shellInit, shellTaskOrganizer, transitions,
pipBoundsState, null, pipBoundsAlgorithm, pipTaskListener,
pipScheduler, pipStackListenerController, pipDisplayLayoutState,
- pipUiStateChangeController, displayController, desktopUserRepositoriesOptional,
- desktopWallpaperActivityTokenProviderOptional);
+ pipUiStateChangeController, displayController, pipDesktopState);
}
@WMSingleton
@@ -142,13 +140,9 @@ public abstract class Pip2Module {
PipBoundsState pipBoundsState,
@ShellMainThread ShellExecutor mainExecutor,
PipTransitionState pipTransitionState,
- Optional<DesktopUserRepositories> desktopUserRepositoriesOptional,
- Optional<DesktopWallpaperActivityTokenProvider>
- desktopWallpaperActivityTokenProviderOptional,
- RootTaskDisplayAreaOrganizer rootTaskDisplayAreaOrganizer) {
+ PipDesktopState pipDesktopState) {
return new PipScheduler(context, pipBoundsState, mainExecutor, pipTransitionState,
- desktopUserRepositoriesOptional, desktopWallpaperActivityTokenProviderOptional,
- rootTaskDisplayAreaOrganizer);
+ pipDesktopState);
}
@WMSingleton
@@ -233,4 +227,17 @@ public abstract class Pip2Module {
return new PipTaskListener(context, shellTaskOrganizer, pipTransitionState,
pipScheduler, pipBoundsState, pipBoundsAlgorithm, mainExecutor);
}
+
+ @WMSingleton
+ @Provides
+ static PipDesktopState providePipDesktopState(
+ PipDisplayLayoutState pipDisplayLayoutState,
+ Optional<DesktopUserRepositories> desktopUserRepositoriesOptional,
+ Optional<DesktopWallpaperActivityTokenProvider>
+ desktopWallpaperActivityTokenProviderOptional,
+ RootTaskDisplayAreaOrganizer rootTaskDisplayAreaOrganizer
+ ) {
+ return new PipDesktopState(pipDisplayLayoutState, desktopUserRepositoriesOptional,
+ desktopWallpaperActivityTokenProviderOptional, rootTaskDisplayAreaOrganizer);
+ }
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopImmersiveController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopImmersiveController.kt
index a4620d5a4dfe..c3da1548bb8e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopImmersiveController.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopImmersiveController.kt
@@ -23,6 +23,7 @@ import android.os.IBinder
import android.view.SurfaceControl
import android.view.WindowManager.TRANSIT_CHANGE
import android.view.animation.DecelerateInterpolator
+import android.window.DesktopModeFlags
import android.window.DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS
import android.window.TransitionInfo
import android.window.TransitionRequestInfo
@@ -152,7 +153,7 @@ class DesktopImmersiveController(
displayId: Int,
reason: ExitReason,
) {
- if (!Flags.enableFullyImmersiveInDesktop()) return
+ if (!DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue) return
val result = exitImmersiveIfApplicable(wct, displayId, excludeTaskId = null, reason)
result.asExit()?.runOnTransitionStart?.invoke(transition)
}
@@ -171,7 +172,7 @@ class DesktopImmersiveController(
excludeTaskId: Int? = null,
reason: ExitReason,
): ExitResult {
- if (!Flags.enableFullyImmersiveInDesktop()) return ExitResult.NoExit
+ if (!DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue) return ExitResult.NoExit
val immersiveTask =
desktopUserRepositories.current.getTaskInFullImmersiveState(displayId)
?: return ExitResult.NoExit
@@ -213,7 +214,7 @@ class DesktopImmersiveController(
taskInfo: RunningTaskInfo,
reason: ExitReason,
): ExitResult {
- if (!Flags.enableFullyImmersiveInDesktop()) return ExitResult.NoExit
+ if (!DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue) return ExitResult.NoExit
if (desktopUserRepositories.current.isTaskInFullImmersiveState(taskInfo.taskId)) {
// A full immersive task is being minimized, make sure the immersive state is broken
// (i.e. resize back to max bounds).
@@ -396,7 +397,7 @@ class DesktopImmersiveController(
taskId = taskId,
immersive = pendingTransition.direction == Direction.ENTER,
)
- if (Flags.enableRestoreToPreviousSizeFromDesktopImmersive()) {
+ if (DesktopModeFlags.ENABLE_RESTORE_TO_PREVIOUS_SIZE_FROM_DESKTOP_IMMERSIVE.isTrue) {
when (pendingTransition.direction) {
Direction.EXIT -> {
desktopRepository.removeBoundsBeforeFullImmersive(taskId)
@@ -457,7 +458,7 @@ class DesktopImmersiveController(
val displayLayout =
displayController.getDisplayLayout(taskInfo.displayId)
?: error("Expected non-null display layout for displayId: ${taskInfo.displayId}")
- return if (Flags.enableRestoreToPreviousSizeFromDesktopImmersive()) {
+ return if (DesktopModeFlags.ENABLE_RESTORE_TO_PREVIOUS_SIZE_FROM_DESKTOP_IMMERSIVE.isTrue) {
desktopUserRepositories.current.removeBoundsBeforeFullImmersive(taskInfo.taskId)
?: if (ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isTrue()) {
calculateInitialBounds(displayLayout, taskInfo)
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopBackNavigationTransitionHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandler.kt
index 56c50ff484d4..728638d9bbd3 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopBackNavigationTransitionHandler.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandler.kt
@@ -31,10 +31,13 @@ import com.android.wm.shell.shared.animation.MinimizeAnimator.create
import com.android.wm.shell.transition.Transitions
/**
- * The [Transitions.TransitionHandler] that handles transitions for tasks that are closing or going
- * to back as part of back navigation. This handler is used only for animating transitions.
+ * The [Transitions.TransitionHandler] that handles transitions for tasks that are:
+ * - Closing or going to back as part of back navigation
+ * - Going to back as part of minimization button usage.
+ *
+ * Note that this handler is used only for animating transitions.
*/
-class DesktopBackNavigationTransitionHandler(
+class DesktopMinimizationTransitionHandler(
private val mainExecutor: ShellExecutor,
private val animExecutor: ShellExecutor,
private val displayController: DisplayController,
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMixedTransitionHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMixedTransitionHandler.kt
index 9666ca95bcc6..c9b3ec0d3a11 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMixedTransitionHandler.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMixedTransitionHandler.kt
@@ -33,7 +33,6 @@ import android.window.WindowContainerTransaction
import androidx.annotation.VisibleForTesting
import com.android.internal.jank.InteractionJankMonitor
import com.android.internal.protolog.ProtoLog
-import com.android.window.flags.Flags
import com.android.wm.shell.RootTaskDisplayAreaOrganizer
import com.android.wm.shell.freeform.FreeformTaskTransitionHandler
import com.android.wm.shell.freeform.FreeformTaskTransitionStarter
@@ -53,7 +52,7 @@ class DesktopMixedTransitionHandler(
private val freeformTaskTransitionHandler: FreeformTaskTransitionHandler,
private val closeDesktopTaskTransitionHandler: CloseDesktopTaskTransitionHandler,
private val desktopImmersiveController: DesktopImmersiveController,
- private val desktopBackNavigationTransitionHandler: DesktopBackNavigationTransitionHandler,
+ private val desktopMinimizationTransitionHandler: DesktopMinimizationTransitionHandler,
private val interactionJankMonitor: InteractionJankMonitor,
@ShellMainThread private val handler: Handler,
shellInit: ShellInit,
@@ -105,7 +104,7 @@ class DesktopMixedTransitionHandler(
exitingImmersiveTask: Int? = null,
): IBinder {
if (
- !Flags.enableFullyImmersiveInDesktop() &&
+ !DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue &&
!DesktopModeFlags.ENABLE_DESKTOP_APP_LAUNCH_TRANSITIONS_BUGFIX.isTrue
) {
return transitions.startTransition(transitionType, wct, /* handler= */ null)
@@ -317,8 +316,8 @@ class DesktopMixedTransitionHandler(
)
}
- // Animate minimizing desktop task transition with [DesktopBackNavigationTransitionHandler].
- return desktopBackNavigationTransitionHandler.startAnimation(
+ // Animate minimizing desktop task transition with [DesktopMinimizationTransitionHandler].
+ return desktopMinimizationTransitionHandler.startAnimation(
transition,
info,
startTransaction,
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt
index 164d04bbde65..03bc42f08d59 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt
@@ -57,7 +57,7 @@ class DesktopModeShellCommandHandler(private val controller: DesktopTasksControl
return false
}
if (!Flags.enableMultipleDesktopsBackend()) {
- return controller.moveTaskToDesktop(taskId, transitionSource = UNKNOWN)
+ return controller.moveTaskToDefaultDeskAndActivate(taskId, transitionSource = UNKNOWN)
}
if (args.size < 3) {
pw.println("Error: desk id should be provided as arguments")
@@ -70,8 +70,9 @@ class DesktopModeShellCommandHandler(private val controller: DesktopTasksControl
pw.println("Error: desk id should be an integer")
return false
}
+ controller.moveTaskToDesk(taskId = taskId, deskId = deskId, transitionSource = UNKNOWN)
pw.println("Not implemented.")
- return false
+ return true
}
private fun runMoveToNextDisplay(args: Array<String>, pw: PrintWriter): Boolean {
@@ -131,8 +132,8 @@ class DesktopModeShellCommandHandler(private val controller: DesktopTasksControl
pw.println("Error: desk id should be an integer")
return false
}
- pw.println("Not implemented.")
- return false
+ controller.activateDesk(deskId)
+ return true
}
private fun runRemoveDesk(args: Array<String>, pw: PrintWriter): Boolean {
@@ -152,8 +153,8 @@ class DesktopModeShellCommandHandler(private val controller: DesktopTasksControl
pw.println("Error: desk id should be an integer")
return false
}
- pw.println("Not implemented.")
- return false
+ controller.removeDesk(deskId)
+ return true
}
private fun runRemoveAllDesks(args: Array<String>, pw: PrintWriter): Boolean {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeUtils.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeUtils.kt
index 90191345147c..9b850de6fede 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeUtils.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeUtils.kt
@@ -18,8 +18,10 @@
package com.android.wm.shell.desktopmode
+import android.annotation.DimenRes
import android.app.ActivityManager.RunningTaskInfo
import android.app.TaskInfo
+import android.content.Context
import android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
import android.content.pm.ActivityInfo.isFixedOrientationLandscape
import android.content.pm.ActivityInfo.isFixedOrientationPortrait
@@ -28,6 +30,7 @@ import android.content.res.Configuration.ORIENTATION_PORTRAIT
import android.graphics.Rect
import android.os.SystemProperties
import android.util.Size
+import com.android.wm.shell.R
import com.android.wm.shell.common.DisplayController
import com.android.wm.shell.common.DisplayLayout
@@ -53,10 +56,12 @@ fun calculateDefaultDesktopTaskBounds(displayLayout: DisplayLayout): Rect {
* aspect ratio, orientation and resizability to calculate an area this is compatible with the
* applications previous configuration.
*/
+@JvmOverloads
fun calculateInitialBounds(
displayLayout: DisplayLayout,
taskInfo: RunningTaskInfo,
scale: Float = DESKTOP_MODE_INITIAL_BOUNDS_SCALE,
+ captionInsets: Int = 0,
): Rect {
val screenBounds = Rect(0, 0, displayLayout.width(), displayLayout.height())
val appAspectRatio = calculateAspectRatio(taskInfo)
@@ -92,7 +97,7 @@ fun calculateInitialBounds(
} else {
// If activity is unresizeable, regardless of orientation, calculate maximum
// size (within the ideal size) maintaining original aspect ratio.
- maximizeSizeGivenAspectRatio(taskInfo, idealSize, appAspectRatio)
+ maximizeSizeGivenAspectRatio(taskInfo, idealSize, appAspectRatio, captionInsets)
}
}
ORIENTATION_PORTRAIT -> {
@@ -119,11 +124,17 @@ fun calculateInitialBounds(
taskInfo,
Size(customPortraitWidthForLandscapeApp, idealSize.height),
appAspectRatio,
+ captionInsets,
)
} else {
// For portrait unresizeable activities, calculate maximum size (within the
// ideal size) maintaining original aspect ratio.
- maximizeSizeGivenAspectRatio(taskInfo, idealSize, appAspectRatio)
+ maximizeSizeGivenAspectRatio(
+ taskInfo,
+ idealSize,
+ appAspectRatio,
+ captionInsets,
+ )
}
}
}
@@ -148,11 +159,16 @@ fun calculateMaximizeBounds(displayLayout: DisplayLayout, taskInfo: RunningTaskI
} else {
// if non-resizable then calculate max bounds according to aspect ratio
val activityAspectRatio = calculateAspectRatio(taskInfo)
+ val captionInsets =
+ taskInfo.configuration.windowConfiguration.appBounds?.let {
+ it.top - taskInfo.configuration.windowConfiguration.bounds.top
+ } ?: 0
val newSize =
maximizeSizeGivenAspectRatio(
taskInfo,
Size(stableBounds.width(), stableBounds.height()),
activityAspectRatio,
+ captionInsets,
)
return centerInArea(newSize, stableBounds, stableBounds.left, stableBounds.top)
}
@@ -166,8 +182,9 @@ fun maximizeSizeGivenAspectRatio(
taskInfo: RunningTaskInfo,
targetArea: Size,
aspectRatio: Float,
+ captionInsets: Int = 0,
): Size {
- val targetHeight = targetArea.height
+ val targetHeight = targetArea.height - captionInsets
val targetWidth = targetArea.width
val finalHeight: Int
val finalWidth: Int
@@ -191,13 +208,18 @@ fun maximizeSizeGivenAspectRatio(
finalHeight = (finalWidth / aspectRatio).toInt()
}
}
- return Size(finalWidth, finalHeight)
+ return Size(finalWidth, finalHeight + captionInsets)
}
/** Calculates the aspect ratio of an activity from its fullscreen bounds. */
fun calculateAspectRatio(taskInfo: RunningTaskInfo): Float {
- if (taskInfo.appCompatTaskInfo.topActivityAppBounds.isEmpty) return 1f
- val appBounds = taskInfo.appCompatTaskInfo.topActivityAppBounds
+ val appBounds =
+ if (taskInfo.appCompatTaskInfo.topActivityAppBounds.isEmpty) {
+ taskInfo.configuration.windowConfiguration.appBounds
+ ?: taskInfo.configuration.windowConfiguration.bounds
+ } else {
+ taskInfo.appCompatTaskInfo.topActivityAppBounds
+ }
return maxOf(appBounds.height(), appBounds.width()) /
minOf(appBounds.height(), appBounds.width()).toFloat()
}
@@ -233,6 +255,13 @@ fun isTaskBoundsEqual(taskBounds: Rect, stableBounds: Rect): Boolean {
return taskBounds == stableBounds
}
+/** Returns the app header height in desktop mode in pixels. */
+fun getAppHeaderHeight(context: Context): Int =
+ context.resources.getDimensionPixelSize(getAppHeaderHeightId())
+
+/** Returns the resource id of the app header height in desktop mode. */
+@DimenRes fun getAppHeaderHeightId(): Int = R.dimen.desktop_mode_freeform_decor_caption_height
+
/**
* Calculates the desired initial bounds for applications in desktop windowing. This is done as a
* scale of the screen bounds.
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeVisualIndicator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeVisualIndicator.java
index 32ee319a053b..27aed17762ff 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeVisualIndicator.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeVisualIndicator.java
@@ -59,6 +59,9 @@ import com.android.wm.shell.RootTaskDisplayAreaOrganizer;
import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.DisplayLayout;
import com.android.wm.shell.common.SyncTransactionQueue;
+import com.android.wm.shell.shared.bubbles.BubbleAnythingFlagHelper;
+import com.android.wm.shell.shared.bubbles.BubbleDropTargetBoundsProvider;
+import com.android.wm.shell.shared.desktopmode.DesktopModeStatus;
/**
* Animated visual indicator for Desktop Mode windowing transitions.
@@ -74,7 +77,11 @@ public class DesktopModeVisualIndicator {
/** Indicates impending transition into split select on the left side */
TO_SPLIT_LEFT_INDICATOR,
/** Indicates impending transition into split select on the right side */
- TO_SPLIT_RIGHT_INDICATOR
+ TO_SPLIT_RIGHT_INDICATOR,
+ /** Indicates impending transition into bubble on the left side */
+ TO_BUBBLE_LEFT_INDICATOR,
+ /** Indicates impending transition into bubble on the right side */
+ TO_BUBBLE_RIGHT_INDICATOR
}
/**
@@ -113,6 +120,7 @@ public class DesktopModeVisualIndicator {
private final RootTaskDisplayAreaOrganizer mRootTdaOrganizer;
private final ActivityManager.RunningTaskInfo mTaskInfo;
private final SurfaceControl mTaskSurface;
+ private final @Nullable BubbleDropTargetBoundsProvider mBubbleBoundsProvider;
private SurfaceControl mLeash;
private final SyncTransactionQueue mSyncQueue;
@@ -127,13 +135,15 @@ public class DesktopModeVisualIndicator {
ActivityManager.RunningTaskInfo taskInfo, DisplayController displayController,
Context context, SurfaceControl taskSurface,
RootTaskDisplayAreaOrganizer taskDisplayAreaOrganizer,
- DragStartState dragStartState) {
+ DragStartState dragStartState,
+ @Nullable BubbleDropTargetBoundsProvider bubbleBoundsProvider) {
mSyncQueue = syncQueue;
mTaskInfo = taskInfo;
mDisplayController = displayController;
mContext = context;
mTaskSurface = taskSurface;
mRootTdaOrganizer = taskDisplayAreaOrganizer;
+ mBubbleBoundsProvider = bubbleBoundsProvider;
mCurrentType = NO_INDICATOR;
mDragStartState = dragStartState;
}
@@ -149,12 +159,19 @@ public class DesktopModeVisualIndicator {
// left, and split right for the right edge. This is universal across all drag event types.
if (inputCoordinates.x < 0) return TO_SPLIT_LEFT_INDICATOR;
if (inputCoordinates.x > layout.width()) return TO_SPLIT_RIGHT_INDICATOR;
- // If we are in freeform, we don't want a visible indicator in the "freeform" drag zone.
- // In drags not originating on a freeform caption, we should default to a TO_DESKTOP
- // indicator.
- IndicatorType result = mDragStartState == DragStartState.FROM_FREEFORM
- ? NO_INDICATOR
- : TO_DESKTOP_INDICATOR;
+ IndicatorType result;
+ if (BubbleAnythingFlagHelper.enableBubbleToFullscreen()
+ && !DesktopModeStatus.canEnterDesktopMode(mContext)) {
+ // If desktop is not available, default to "no indicator"
+ result = NO_INDICATOR;
+ } else {
+ // If we are in freeform, we don't want a visible indicator in the "freeform" drag zone.
+ // In drags not originating on a freeform caption, we should default to a TO_DESKTOP
+ // indicator.
+ result = mDragStartState == DragStartState.FROM_FREEFORM
+ ? NO_INDICATOR
+ : TO_DESKTOP_INDICATOR;
+ }
final int transitionAreaWidth = mContext.getResources().getDimensionPixelSize(
com.android.wm.shell.R.dimen.desktop_mode_transition_region_thickness);
// Because drags in freeform use task position for indicator calculation, we need to
@@ -166,15 +183,24 @@ public class DesktopModeVisualIndicator {
captionHeight);
final Region splitRightRegion = calculateSplitRightRegion(layout, transitionAreaWidth,
captionHeight);
- if (fullscreenRegion.contains((int) inputCoordinates.x, (int) inputCoordinates.y)) {
+ final int x = (int) inputCoordinates.x;
+ final int y = (int) inputCoordinates.y;
+ if (fullscreenRegion.contains(x, y)) {
result = TO_FULLSCREEN_INDICATOR;
}
- if (splitLeftRegion.contains((int) inputCoordinates.x, (int) inputCoordinates.y)) {
+ if (splitLeftRegion.contains(x, y)) {
result = IndicatorType.TO_SPLIT_LEFT_INDICATOR;
}
- if (splitRightRegion.contains((int) inputCoordinates.x, (int) inputCoordinates.y)) {
+ if (splitRightRegion.contains(x, y)) {
result = IndicatorType.TO_SPLIT_RIGHT_INDICATOR;
}
+ if (BubbleAnythingFlagHelper.enableBubbleToFullscreen()) {
+ if (calculateBubbleLeftRegion(layout).contains(x, y)) {
+ result = IndicatorType.TO_BUBBLE_LEFT_INDICATOR;
+ } else if (calculateBubbleRightRegion(layout).contains(x, y)) {
+ result = IndicatorType.TO_BUBBLE_RIGHT_INDICATOR;
+ }
+ }
if (mDragStartState != DragStartState.DRAGGED_INTENT) {
transitionIndicator(result);
}
@@ -238,6 +264,25 @@ public class DesktopModeVisualIndicator {
return region;
}
+ @VisibleForTesting
+ Region calculateBubbleLeftRegion(DisplayLayout layout) {
+ int regionWidth = mContext.getResources().getDimensionPixelSize(
+ com.android.wm.shell.R.dimen.bubble_transform_area_width);
+ int regionHeight = mContext.getResources().getDimensionPixelSize(
+ com.android.wm.shell.R.dimen.bubble_transform_area_height);
+ return new Region(0, layout.height() - regionHeight, regionWidth, layout.height());
+ }
+
+ @VisibleForTesting
+ Region calculateBubbleRightRegion(DisplayLayout layout) {
+ int regionWidth = mContext.getResources().getDimensionPixelSize(
+ com.android.wm.shell.R.dimen.bubble_transform_area_width);
+ int regionHeight = mContext.getResources().getDimensionPixelSize(
+ com.android.wm.shell.R.dimen.bubble_transform_area_height);
+ return new Region(layout.width() - regionWidth, layout.height() - regionHeight,
+ layout.width(), layout.height());
+ }
+
/**
* Create a fullscreen indicator with no animation
*/
@@ -288,6 +333,11 @@ public class DesktopModeVisualIndicator {
});
}
+ @VisibleForTesting
+ Rect getIndicatorBounds() {
+ return mView.getBackground().getBounds();
+ }
+
/**
* Fade indicator in as provided type. Animator fades it in while expanding the bounds outwards.
*/
@@ -295,7 +345,8 @@ public class DesktopModeVisualIndicator {
mView.setBackgroundResource(R.drawable.desktop_windowing_transition_background);
final VisualIndicatorAnimator animator = VisualIndicatorAnimator
.fadeBoundsIn(mView, type,
- mDisplayController.getDisplayLayout(mTaskInfo.displayId));
+ mDisplayController.getDisplayLayout(mTaskInfo.displayId),
+ mBubbleBoundsProvider);
animator.start();
mCurrentType = type;
}
@@ -314,7 +365,8 @@ public class DesktopModeVisualIndicator {
}
final VisualIndicatorAnimator animator = VisualIndicatorAnimator
.fadeBoundsOut(mView, mCurrentType,
- mDisplayController.getDisplayLayout(mTaskInfo.displayId));
+ mDisplayController.getDisplayLayout(mTaskInfo.displayId),
+ mBubbleBoundsProvider);
animator.start();
if (finishCallback != null) {
animator.addListener(new AnimatorListenerAdapter() {
@@ -342,7 +394,7 @@ public class DesktopModeVisualIndicator {
} else {
final VisualIndicatorAnimator animator = VisualIndicatorAnimator.animateIndicatorType(
mView, mDisplayController.getDisplayLayout(mTaskInfo.displayId), mCurrentType,
- newType);
+ newType, mBubbleBoundsProvider);
mCurrentType = newType;
animator.start();
}
@@ -397,8 +449,9 @@ public class DesktopModeVisualIndicator {
}
private static VisualIndicatorAnimator fadeBoundsIn(
- @NonNull View view, IndicatorType type, @NonNull DisplayLayout displayLayout) {
- final Rect endBounds = getIndicatorBounds(displayLayout, type);
+ @NonNull View view, IndicatorType type, @NonNull DisplayLayout displayLayout,
+ @Nullable BubbleDropTargetBoundsProvider bubbleBoundsProvider) {
+ final Rect endBounds = getIndicatorBounds(displayLayout, type, bubbleBoundsProvider);
final Rect startBounds = getMinBounds(endBounds);
view.getBackground().setBounds(startBounds);
@@ -410,8 +463,9 @@ public class DesktopModeVisualIndicator {
}
private static VisualIndicatorAnimator fadeBoundsOut(
- @NonNull View view, IndicatorType type, @NonNull DisplayLayout displayLayout) {
- final Rect startBounds = getIndicatorBounds(displayLayout, type);
+ @NonNull View view, IndicatorType type, @NonNull DisplayLayout displayLayout,
+ @Nullable BubbleDropTargetBoundsProvider bubbleBoundsProvider) {
+ final Rect startBounds = getIndicatorBounds(displayLayout, type, bubbleBoundsProvider);
final Rect endBounds = getMinBounds(startBounds);
view.getBackground().setBounds(startBounds);
@@ -426,16 +480,19 @@ public class DesktopModeVisualIndicator {
* Create animator for visual indicator changing type (i.e., fullscreen to freeform,
* freeform to split, etc.)
*
- * @param view the view for this indicator
- * @param displayLayout information about the display the transitioning task is currently on
- * @param origType the original indicator type
- * @param newType the new indicator type
+ * @param view the view for this indicator
+ * @param displayLayout information about the display the transitioning task is
+ * currently on
+ * @param origType the original indicator type
+ * @param newType the new indicator type
+ * @param bubbleBoundsProvider provides bounds for bubbles indicators
*/
private static VisualIndicatorAnimator animateIndicatorType(@NonNull View view,
- @NonNull DisplayLayout displayLayout, IndicatorType origType,
- IndicatorType newType) {
- final Rect startBounds = getIndicatorBounds(displayLayout, origType);
- final Rect endBounds = getIndicatorBounds(displayLayout, newType);
+ @NonNull DisplayLayout displayLayout, IndicatorType origType, IndicatorType newType,
+ @Nullable BubbleDropTargetBoundsProvider bubbleBoundsProvider) {
+ final Rect startBounds = getIndicatorBounds(displayLayout, origType,
+ bubbleBoundsProvider);
+ final Rect endBounds = getIndicatorBounds(displayLayout, newType, bubbleBoundsProvider);
final VisualIndicatorAnimator animator = new VisualIndicatorAnimator(
view, startBounds, endBounds);
animator.setInterpolator(new DecelerateInterpolator());
@@ -444,7 +501,8 @@ public class DesktopModeVisualIndicator {
}
/** Calculates the bounds the indicator should have when fully faded in. */
- private static Rect getIndicatorBounds(DisplayLayout layout, IndicatorType type) {
+ private static Rect getIndicatorBounds(DisplayLayout layout, IndicatorType type,
+ @Nullable BubbleDropTargetBoundsProvider bubbleBoundsProvider) {
final Rect desktopStableBounds = new Rect();
layout.getStableBounds(desktopStableBounds);
final int padding = desktopStableBounds.top;
@@ -472,6 +530,18 @@ public class DesktopModeVisualIndicator {
return new Rect(desktopStableBounds.width() / 2 + padding, padding,
desktopStableBounds.width() - padding,
desktopStableBounds.height());
+ case TO_BUBBLE_LEFT_INDICATOR:
+ if (bubbleBoundsProvider == null) {
+ return new Rect();
+ }
+ return bubbleBoundsProvider.getBubbleBarExpandedViewDropTargetBounds(
+ /* onLeft= */ true);
+ case TO_BUBBLE_RIGHT_INDICATOR:
+ if (bubbleBoundsProvider == null) {
+ return new Rect();
+ }
+ return bubbleBoundsProvider.getBubbleBarExpandedViewDropTargetBounds(
+ /* onLeft= */ false);
default:
throw new IllegalArgumentException("Invalid indicator type provided.");
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt
index 4ff1a5f1be31..4777e7f93bc9 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt
@@ -174,6 +174,9 @@ class DesktopRepository(
/** Returns the number of desks in the given display. */
fun getNumberOfDesks(displayId: Int) = desktopData.getNumberOfDesks(displayId)
+ /** Returns the display the given desk is in. */
+ fun getDisplayForDesk(deskId: Int) = desktopData.getDisplayForDesk(deskId)
+
/** Adds [regionListener] to inform about changes to exclusion regions for all Desktop tasks. */
fun setExclusionRegionListener(regionListener: Consumer<Region>, executor: Executor) {
desktopGestureExclusionListener = regionListener
@@ -207,6 +210,14 @@ class DesktopRepository(
desktopData.createDesk(displayId, deskId)
}
+ /** Returns the ids of the existing desks in the given display. */
+ @VisibleForTesting
+ fun getDeskIds(displayId: Int): Set<Int> =
+ desktopData.desksSequence(displayId).map { desk -> desk.deskId }.toSet()
+
+ /** Returns the id of the default desk in the given display. */
+ fun getDefaultDeskId(displayId: Int): Int? = getDefaultDesk(displayId)?.deskId
+
/** Returns the default desk in the given display. */
private fun getDefaultDesk(displayId: Int): Desk? = desktopData.getDefaultDesk(displayId)
@@ -215,31 +226,42 @@ class DesktopRepository(
desktopData.setActiveDesk(displayId = displayId, deskId = deskId)
}
+ /** Returns the id of the active desk in the given display, if any. */
+ @VisibleForTesting
+ fun getActiveDeskId(displayId: Int): Int? = desktopData.getActiveDesk(displayId)?.deskId
+
/**
* Adds task with [taskId] to the list of freeform tasks on [displayId]'s active desk.
*
* TODO: b/389960283 - add explicit [deskId] argument.
*/
fun addTask(displayId: Int, taskId: Int, isVisible: Boolean) {
- addOrMoveFreeformTaskToTop(displayId, taskId)
- addActiveTask(displayId, taskId)
- updateTask(displayId, taskId, isVisible)
+ val activeDesk =
+ checkNotNull(desktopData.getDefaultDesk(displayId)) {
+ "Expected desk in display: $displayId"
+ }
+ addTaskToDesk(displayId = displayId, deskId = activeDesk.deskId, taskId = taskId, isVisible)
}
- /**
- * Adds task with [taskId] to the list of active tasks on [displayId]'s active desk.
- *
- * TODO: b/389960283 - add explicit [deskId] argument.
- */
- private fun addActiveTask(displayId: Int, taskId: Int) {
- val activeDesk = desktopData.getDefaultDesk(displayId)
- checkNotNull(activeDesk) { "Expected desk in display: $displayId" }
+ fun addTaskToDesk(displayId: Int, deskId: Int, taskId: Int, isVisible: Boolean) {
+ addOrMoveTaskToTopOfDesk(displayId = displayId, deskId = deskId, taskId = taskId)
+ addActiveTaskToDesk(displayId = displayId, deskId = deskId, taskId = taskId)
+ updateTaskInDesk(
+ displayId = displayId,
+ deskId = deskId,
+ taskId = taskId,
+ isVisible = isVisible,
+ )
+ }
- // Removes task if it is active on another desk excluding [activeDesk].
- removeActiveTask(taskId, excludedDeskId = activeDesk.deskId)
+ private fun addActiveTaskToDesk(displayId: Int, deskId: Int, taskId: Int) {
+ val desk = checkNotNull(desktopData.getDesk(deskId)) { "Did not find desk: $deskId" }
- if (activeDesk.activeTasks.add(taskId)) {
- logD("Adds active task=%d displayId=%d deskId=%d", taskId, displayId, activeDesk.deskId)
+ // Removes task if it is active on another desk excluding this desk.
+ removeActiveTask(taskId, excludedDeskId = deskId)
+
+ if (desk.activeTasks.add(taskId)) {
+ logD("Adds active task=%d displayId=%d deskId=%d", taskId, displayId, deskId)
updateActiveTasksListeners(displayId)
}
}
@@ -390,10 +412,10 @@ class DesktopRepository(
emptySet()
}
- /** Removes task from visible tasks of all displays except [excludedDisplayId]. */
- private fun removeVisibleTask(taskId: Int, excludedDisplayId: Int? = null) {
+ /** Removes task from visible tasks of all desks except [excludedDeskId]. */
+ private fun removeVisibleTask(taskId: Int, excludedDeskId: Int? = null) {
desktopData.forAllDesks { displayId, desk ->
- if (displayId != excludedDisplayId && desk.visibleTasks.remove(taskId)) {
+ if (desk.deskId != excludedDeskId && desk.visibleTasks.remove(taskId)) {
notifyVisibleTaskListeners(displayId, desk.visibleTasks.size)
}
}
@@ -408,30 +430,58 @@ class DesktopRepository(
* TODO: b/389960283 - add explicit [deskId] argument.
*/
fun updateTask(displayId: Int, taskId: Int, isVisible: Boolean) {
- logD("updateTask taskId=%d, displayId=%d, isVisible=%b", taskId, displayId, isVisible)
+ val validDisplayId =
+ if (displayId == INVALID_DISPLAY) {
+ // When a task vanishes it doesn't have a displayId. Find the display of the task.
+ getDisplayIdForTask(taskId)
+ } else {
+ displayId
+ }
+ if (validDisplayId == null) {
+ logW("No display id found for task: taskId=%d", taskId)
+ return
+ }
+ val desk =
+ checkNotNull(desktopData.getDefaultDesk(validDisplayId)) {
+ "Expected a desk in display: $validDisplayId"
+ }
+ updateTaskInDesk(
+ displayId = validDisplayId,
+ deskId = desk.deskId,
+ taskId = taskId,
+ isVisible,
+ )
+ }
+
+ private fun updateTaskInDesk(displayId: Int, deskId: Int, taskId: Int, isVisible: Boolean) {
+ check(displayId != INVALID_DISPLAY) { "Display must be valid" }
+ logD(
+ "updateTaskInDesk taskId=%d, deskId=%d, displayId=%d, isVisible=%b",
+ taskId,
+ deskId,
+ displayId,
+ isVisible,
+ )
if (isVisible) {
- // If task is visible, remove it from any other display besides [displayId].
- removeVisibleTask(taskId, excludedDisplayId = displayId)
- } else if (displayId == INVALID_DISPLAY) {
- // Task has vanished. Check which display to remove the task from.
- removeVisibleTask(taskId)
- return
+ // If task is visible, remove it from any other desk besides [deskId].
+ removeVisibleTask(taskId, excludedDeskId = deskId)
}
- val prevCount = getVisibleTaskCount(displayId)
+ val desk = checkNotNull(desktopData.getDesk(deskId)) { "Did not find desk: $deskId" }
+ val prevCount = getVisibleTaskCountInDesk(deskId)
if (isVisible) {
- desktopData.getDefaultDesk(displayId)?.visibleTasks?.add(taskId)
- ?: error("Expected non-null desk in display $displayId")
+ desk.visibleTasks.add(taskId)
unminimizeTask(displayId, taskId)
} else {
- desktopData.getActiveDesk(displayId)?.visibleTasks?.remove(taskId)
+ desk.visibleTasks.remove(taskId)
}
- val newCount = getVisibleTaskCount(displayId)
+ val newCount = getVisibleTaskCount(deskId)
if (prevCount != newCount) {
logD(
- "Update task visibility taskId=%d visible=%b displayId=%d",
+ "Update task visibility taskId=%d visible=%b deskId=%d displayId=%d",
taskId,
isVisible,
+ deskId,
displayId,
)
logD("VisibleTaskCount has changed from %d to %d", prevCount, newCount)
@@ -591,33 +641,32 @@ class DesktopRepository(
/**
* Gets number of visible freeform tasks on given [displayId]'s active desk.
*
- * TODO: b/389960283 - add explicit [deskId] argument.
+ * TODO: b/389960283 - migrate callers to [getVisibleTaskCountInDesk].
*/
fun getVisibleTaskCount(displayId: Int): Int =
(desktopData.getActiveDesk(displayId)?.visibleTasks?.size ?: 0).also {
logD("getVisibleTaskCount=$it")
}
+ /** Gets the number of visible tasks on the given desk. */
+ fun getVisibleTaskCountInDesk(deskId: Int): Int =
+ desktopData.getDesk(deskId)?.visibleTasks?.size ?: 0
+
/**
* Adds task (or moves if it already exists) to the top of the ordered list.
*
* Unminimizes the task if it is minimized.
- *
- * TODO: b/389960283 - add explicit [deskId] argument.
*/
- private fun addOrMoveFreeformTaskToTop(displayId: Int, taskId: Int) {
- val desk = getDefaultDesk(displayId) ?: error("Expected a desk in display: $displayId")
- logD(
- "Add or move task to top: display=%d taskId=%d deskId=%d",
- taskId,
- displayId,
- desk.deskId,
- )
+ private fun addOrMoveTaskToTopOfDesk(displayId: Int, deskId: Int, taskId: Int) {
+ val desk = desktopData.getDesk(deskId) ?: error("Could not find desk: $deskId")
+ logD("addOrMoveTaskToTopOfDesk: display=%d deskId=%d taskId=%d", displayId, deskId, taskId)
desktopData.forAllDesks { _, desk1 -> desk1.freeformTasksInZOrder.remove(taskId) }
desk.freeformTasksInZOrder.add(0, taskId)
+ // TODO: double check minimization logic.
// Unminimize the task if it is minimized.
unminimizeTask(displayId, taskId)
if (DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_PERSISTENCE.isTrue()) {
+ // TODO: can probably just update the desk.
updatePersistentRepository(displayId)
}
}
@@ -633,6 +682,7 @@ class DesktopRepository(
// mark it as minimized.
getDisplayIdForTask(taskId)?.let { minimizeTask(it, taskId) }
?: logW("Minimize task: No display id found for task: taskId=%d", taskId)
+ return
} else {
logD("Minimize Task: display=%d, task=%d", displayId, taskId)
desktopData.getActiveDesk(displayId)?.minimizedTasks?.add(taskId)
@@ -665,7 +715,7 @@ class DesktopRepository(
private fun getDisplayIdForTask(taskId: Int): Int? {
var displayForTask: Int? = null
desktopData.forAllDesks { displayId, desk ->
- if (taskId in desk.freeformTasksInZOrder) {
+ if (taskId in desk.activeTasks) {
displayForTask = displayId
}
}
@@ -716,17 +766,13 @@ class DesktopRepository(
}
}
- /**
- * Removes the active desk for the given [displayId] and returns the active tasks on that desk.
- *
- * TODO: b/389960283 - add explicit [deskId] argument.
- */
- fun removeDesk(displayId: Int): ArraySet<Int> {
- val desk = desktopData.getActiveDesk(displayId)
- if (desk == null) {
- logW("Could not find desk to remove: displayId=%d", displayId)
- return ArraySet()
- }
+ /** Removes the given desk and returns the active tasks in that desk. */
+ fun removeDesk(deskId: Int): Set<Int> {
+ val desk =
+ desktopData.getDesk(deskId)
+ ?: return emptySet<Int>().also {
+ logW("Could not find desk to remove: deskId=%d", deskId)
+ }
val activeTasks = ArraySet(desk.activeTasks)
desktopData.remove(desk.deskId)
return activeTasks
@@ -1066,7 +1112,7 @@ class DesktopRepository(
}
override fun getDisplayForDesk(deskId: Int): Int =
- getAllActiveDesks().find { it.deskId == deskId }?.displayId
+ desksSequence().find { it.deskId == deskId }?.displayId
?: error("Display for desk=$deskId not found")
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
index 10f87058b527..3c7780711a14 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
@@ -41,7 +41,6 @@ import android.os.Handler
import android.os.IBinder
import android.os.SystemProperties
import android.os.UserHandle
-import android.util.Size
import android.view.Display.DEFAULT_DISPLAY
import android.view.DragEvent
import android.view.MotionEvent
@@ -103,7 +102,9 @@ import com.android.wm.shell.desktopmode.ExitDesktopTaskTransitionHandler.FULLSCR
import com.android.wm.shell.desktopmode.common.ToggleTaskSizeInteraction
import com.android.wm.shell.desktopmode.desktopwallpaperactivity.DesktopWallpaperActivityTokenProvider
import com.android.wm.shell.desktopmode.minimize.DesktopWindowLimitRemoteHandler
+import com.android.wm.shell.desktopmode.multidesks.DeskTransition
import com.android.wm.shell.desktopmode.multidesks.DesksOrganizer
+import com.android.wm.shell.desktopmode.multidesks.DesksTransitionObserver
import com.android.wm.shell.desktopmode.multidesks.OnDeskRemovedListener
import com.android.wm.shell.draganddrop.DragAndDropController
import com.android.wm.shell.freeform.FreeformTaskTransitionStarter
@@ -148,6 +149,7 @@ import java.util.Optional
import java.util.concurrent.Executor
import java.util.concurrent.TimeUnit
import java.util.function.Consumer
+import kotlin.jvm.optionals.getOrNull
/** Handles moving tasks in and out of desktop */
class DesktopTasksController(
@@ -185,6 +187,7 @@ class DesktopTasksController(
private val bubbleController: Optional<BubbleController>,
private val overviewToDesktopTransitionObserver: OverviewToDesktopTransitionObserver,
private val desksOrganizer: DesksOrganizer,
+ private val desksTransitionObserver: DesksTransitionObserver,
private val userProfileContexts: UserProfileContexts,
private val desktopModeCompatPolicy: DesktopModeCompatPolicy,
) :
@@ -312,24 +315,10 @@ class DesktopTasksController(
}
/** Show all tasks, that are part of the desktop, on top of launcher */
+ @Deprecated("Use activateDesk() instead.", ReplaceWith("activateDesk()"))
fun showDesktopApps(displayId: Int, remoteTransition: RemoteTransition? = null) {
logV("showDesktopApps")
- val wct = WindowContainerTransaction()
- bringDesktopAppsToFront(displayId, wct)
-
- val transitionType = transitionType(remoteTransition)
- val handler =
- remoteTransition?.let {
- OneShotRemoteHandler(transitions.mainExecutor, remoteTransition)
- }
- transitions.startTransition(transitionType, wct, handler).also { t ->
- handler?.setTransition(t)
- }
-
- // launch from recent DesktopTaskView
- desktopModeEnterExitTransitionListener?.onEnterDesktopModeTransitionStarted(
- FREEFORM_ANIMATION_DURATION
- )
+ activateDefaultDeskInDisplay(displayId, remoteTransition)
}
/** Gets number of visible freeform tasks in [displayId]. */
@@ -368,15 +357,15 @@ class DesktopTasksController(
0 -> return
// Full screen case
1 ->
- moveRunningTaskToDesktop(
- allFocusedTasks.single(),
+ moveTaskToDefaultDeskAndActivate(
+ allFocusedTasks.single().taskId,
transitionSource = transitionSource,
)
// Split-screen case where there are two focused tasks, then we find the child
// task to move to desktop.
2 ->
- moveRunningTaskToDesktop(
- getSplitFocusedTask(allFocusedTasks[0], allFocusedTasks[1]),
+ moveTaskToDefaultDeskAndActivate(
+ getSplitFocusedTask(allFocusedTasks[0], allFocusedTasks[1]).taskId,
transitionSource = transitionSource,
)
else ->
@@ -439,15 +428,57 @@ class DesktopTasksController(
/** Moves task to desktop mode if task is running, else launches it in desktop mode. */
@JvmOverloads
- fun moveTaskToDesktop(
+ fun moveTaskToDefaultDeskAndActivate(
+ taskId: Int,
+ wct: WindowContainerTransaction = WindowContainerTransaction(),
+ transitionSource: DesktopModeTransitionSource,
+ remoteTransition: RemoteTransition? = null,
+ callback: IMoveToDesktopCallback? = null,
+ ): Boolean {
+ val runningTask = shellTaskOrganizer.getRunningTaskInfo(taskId)
+ val backgroundTask = recentTasksController?.findTaskInBackground(taskId)
+ if (runningTask == null && backgroundTask == null) {
+ logW("moveTaskToDefaultDeskAndActivate taskId=%d not found", taskId)
+ return false
+ }
+ // TODO(342378842): Instead of using default display, support multiple displays
+ val displayId = runningTask?.displayId ?: DEFAULT_DISPLAY
+ val deskId =
+ checkNotNull(taskRepository.getDefaultDeskId(displayId)) {
+ "Expected a default desk to exist"
+ }
+ return moveTaskToDesk(
+ taskId = taskId,
+ deskId = deskId,
+ wct = wct,
+ transitionSource = transitionSource,
+ remoteTransition = remoteTransition,
+ )
+ }
+
+ /** Moves task to desktop mode if task is running, else launches it in desktop mode. */
+ fun moveTaskToDesk(
taskId: Int,
+ deskId: Int,
wct: WindowContainerTransaction = WindowContainerTransaction(),
transitionSource: DesktopModeTransitionSource,
remoteTransition: RemoteTransition? = null,
callback: IMoveToDesktopCallback? = null,
): Boolean {
val runningTask = shellTaskOrganizer.getRunningTaskInfo(taskId)
- if (runningTask == null) {
+ if (runningTask != null) {
+ moveRunningTaskToDesk(
+ task = runningTask,
+ deskId = deskId,
+ wct = wct,
+ transitionSource = transitionSource,
+ remoteTransition = remoteTransition,
+ callback = callback,
+ )
+ }
+ val backgroundTask = recentTasksController?.findTaskInBackground(taskId)
+ if (backgroundTask != null) {
+ // TODO: b/391484662 - add support for |deskId|.
return moveBackgroundTaskToDesktop(
taskId,
wct,
@@ -456,8 +487,8 @@ class DesktopTasksController(
callback,
)
}
- moveRunningTaskToDesktop(runningTask, wct, transitionSource, remoteTransition, callback)
- return true
+ logW("moveTaskToDesk taskId=%d not found", taskId)
+ return false
}
private fun moveBackgroundTaskToDesktop(
@@ -511,8 +542,9 @@ class DesktopTasksController(
}
/** Moves a running task to desktop. */
- fun moveRunningTaskToDesktop(
+ private fun moveRunningTaskToDesk(
task: RunningTaskInfo,
+ deskId: Int,
wct: WindowContainerTransaction = WindowContainerTransaction(),
transitionSource: DesktopModeTransitionSource,
remoteTransition: RemoteTransition? = null,
@@ -522,20 +554,29 @@ class DesktopTasksController(
logW("Cannot enter desktop for taskId %d, ineligible top activity found", task.taskId)
return
}
- logV("moveRunningTaskToDesktop taskId=%d", task.taskId)
+ val displayId = taskRepository.getDisplayForDesk(deskId)
+ logV(
+ "moveRunningTaskToDesk taskId=%d deskId=%d displayId=%d",
+ task.taskId,
+ deskId,
+ displayId,
+ )
exitSplitIfApplicable(wct, task)
val exitResult =
desktopImmersiveController.exitImmersiveIfApplicable(
wct = wct,
- displayId = task.displayId,
+ displayId = displayId,
excludeTaskId = task.taskId,
reason = DesktopImmersiveController.ExitReason.TASK_LAUNCH,
)
- // Bring other apps to front first
val taskIdToMinimize =
- bringDesktopAppsToFrontBeforeShowingNewTask(task.displayId, wct, task.taskId)
- addMoveToDesktopChanges(wct, task)
+ prepareMoveTaskToDeskAndActivate(
+ wct = wct,
+ displayId = displayId,
+ deskId = deskId,
+ task = task,
+ )
val transition: IBinder
if (remoteTransition != null) {
@@ -554,6 +595,60 @@ class DesktopTasksController(
addPendingMinimizeTransition(transition, it, MinimizeReason.TASK_LIMIT)
}
exitResult.asExit()?.runOnTransitionStart?.invoke(transition)
+ if (Flags.enableMultipleDesktopsBackend()) {
+ desksTransitionObserver.addPendingTransition(
+ DeskTransition.ActiveDeskWithTask(
+ token = transition,
+ displayId = displayId,
+ deskId = deskId,
+ enterTaskId = task.taskId,
+ )
+ )
+ } else {
+ taskRepository.setActiveDesk(displayId = displayId, deskId = deskId)
+ }
+ }
+
+ /**
+ * Applies the necessary changes and operations to [wct] to move a task into a desk and
+ * activating that desk. This includes showing pre-existing tasks of that desk behind the new
+ * task (but minimizing one of them if needed) and showing Home and the desktop wallpaper.
+ *
+ * @return the id of the task that is being minimized, if any.
+ */
+ private fun prepareMoveTaskToDeskAndActivate(
+ wct: WindowContainerTransaction,
+ displayId: Int,
+ deskId: Int,
+ task: RunningTaskInfo,
+ ): Int? {
+ val taskIdToMinimize =
+ if (Flags.enableMultipleDesktopsBackend()) {
+ // Activate the desk first.
+ prepareForDeskActivation(displayId, wct)
+ desksOrganizer.activateDesk(wct, deskId)
+ if (DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_PERSISTENCE.isTrue()) {
+ // TODO: b/362720497 - do non-running tasks need to be restarted with
+ // |wct#startTask|?
+ }
+ taskbarDesktopTaskListener?.onTaskbarCornerRoundingUpdate(
+ doesAnyTaskRequireTaskbarRounding(displayId)
+ )
+ // TODO: b/362720497 - activating a desk with the intention to move a new task to
+ // it means we may need to minimize something in the activating desk. Do so here
+ // similar to how it's done in #bringDesktopAppsToFrontBeforeShowingNewTask
+ // instead of returning null.
+ null
+ } else {
+ // Bring other apps to front first.
+ bringDesktopAppsToFrontBeforeShowingNewTask(displayId, wct, task.taskId)
+ }
+ if (Flags.enableMultipleDesktopsBackend()) {
+ prepareMoveTaskToDesk(wct, task, deskId)
+ } else {
+ addMoveToDesktopChanges(wct, task)
+ }
+ return taskIdToMinimize
}
private fun invokeCallbackToOverview(transition: IBinder, callback: IMoveToDesktopCallback?) {
@@ -595,21 +690,34 @@ class DesktopTasksController(
* [startDragToDesktop].
*/
private fun finalizeDragToDesktop(taskInfo: RunningTaskInfo) {
+ val deskId =
+ checkNotNull(taskRepository.getDefaultDeskId(taskInfo.displayId)) {
+ "Expected a default desk to exist"
+ }
ProtoLog.v(
WM_SHELL_DESKTOP_MODE,
- "DesktopTasksController: finalizeDragToDesktop taskId=%d",
+ "DesktopTasksController: finalizeDragToDesktop taskId=%d deskId=%d",
taskInfo.taskId,
+ deskId,
)
val wct = WindowContainerTransaction()
exitSplitIfApplicable(wct, taskInfo)
- if (Flags.enablePerDisplayDesktopWallpaperActivity()) {
- moveHomeTask(wct, toTop = true, taskInfo.displayId)
- } else {
- moveHomeTask(wct, toTop = true)
+ if (!Flags.enableMultipleDesktopsBackend()) {
+ // |moveHomeTask| is also called in |bringDesktopAppsToFrontBeforeShowingNewTask|, so
+ // this shouldn't be necessary at all.
+ if (Flags.enablePerDisplayDesktopWallpaperActivity()) {
+ moveHomeTask(taskInfo.displayId, wct)
+ } else {
+ moveHomeTask(context.displayId, wct)
+ }
}
val taskIdToMinimize =
- bringDesktopAppsToFrontBeforeShowingNewTask(taskInfo.displayId, wct, taskInfo.taskId)
- addMoveToDesktopChanges(wct, taskInfo)
+ prepareMoveTaskToDeskAndActivate(
+ wct = wct,
+ displayId = taskInfo.displayId,
+ deskId = deskId,
+ task = taskInfo,
+ )
val exitResult =
desktopImmersiveController.exitImmersiveIfApplicable(
wct = wct,
@@ -626,6 +734,18 @@ class DesktopTasksController(
addPendingMinimizeTransition(it, taskId, MinimizeReason.TASK_LIMIT)
}
exitResult.asExit()?.runOnTransitionStart?.invoke(transition)
+ if (Flags.enableMultipleDesktopsBackend()) {
+ desksTransitionObserver.addPendingTransition(
+ DeskTransition.ActiveDeskWithTask(
+ token = transition,
+ displayId = taskInfo.displayId,
+ deskId = deskId,
+ enterTaskId = taskInfo.taskId,
+ )
+ )
+ } else {
+ taskRepository.setActiveDesk(displayId = taskInfo.displayId, deskId = deskId)
+ }
}
}
@@ -777,7 +897,7 @@ class DesktopTasksController(
// We are moving a freeform task to fullscreen, put the home task under the fullscreen task.
if (!forceEnterDesktop(task.displayId)) {
- moveHomeTask(wct, toTop = true, task.displayId)
+ moveHomeTask(task.displayId, wct)
wct.reorder(task.token, /* onTop= */ true)
}
@@ -1015,6 +1135,23 @@ class DesktopTasksController(
}
val wct = WindowContainerTransaction()
+
+ // check if the task is part of splitscreen
+ if (
+ Flags.enableNonDefaultDisplaySplit() &&
+ Flags.enableMoveToNextDisplayShortcut() &&
+ splitScreenController.isTaskInSplitScreen(task.taskId)
+ ) {
+ val stageCoordinatorRootTaskToken =
+ splitScreenController.multiDisplayProvider.getDisplayRootForDisplayId(
+ DEFAULT_DISPLAY
+ )
+
+ wct.reparent(stageCoordinatorRootTaskToken, displayAreaInfo.token, true /* onTop */)
+ transitions.startTransition(TRANSIT_CHANGE, wct, /* handler= */ null)
+ return
+ }
+
if (!task.isFreeform) {
addMoveToDesktopChanges(wct, task, displayId)
} else if (Flags.enableMoveToNextDisplayShortcut()) {
@@ -1034,6 +1171,10 @@ class DesktopTasksController(
task.displayId,
wct,
forceToFullscreen = false,
+ // TODO: b/371096166 - Temporary turing home relaunch off to prevent home stealing
+ // display focus. Remove shouldEndUpAtHome = false when home focus handling
+ // with connected display is implemented in wm core.
+ shouldEndUpAtHome = false,
)
}
@@ -1081,7 +1222,6 @@ class DesktopTasksController(
// and toggle to the stable bounds.
desktopTilingDecorViewModel.removeTaskIfTiled(taskInfo.displayId, taskInfo.taskId)
taskRepository.saveBoundsBeforeMaximize(taskInfo.taskId, currentTaskBounds)
-
destinationBounds.set(calculateMaximizeBounds(displayLayout, taskInfo))
}
@@ -1146,23 +1286,6 @@ class DesktopTasksController(
)
}
- private fun getMaximizeBounds(taskInfo: RunningTaskInfo, stableBounds: Rect): Rect {
- if (taskInfo.isResizeable) {
- // if resizable then expand to entire stable bounds (full display minus insets)
- return Rect(stableBounds)
- } else {
- // if non-resizable then calculate max bounds according to aspect ratio
- val activityAspectRatio = calculateAspectRatio(taskInfo)
- val newSize =
- maximizeSizeGivenAspectRatio(
- taskInfo,
- Size(stableBounds.width(), stableBounds.height()),
- activityAspectRatio,
- )
- return centerInArea(newSize, stableBounds, stableBounds.left, stableBounds.top)
- }
- }
-
private fun isMaximizedToStableBoundsEdges(
taskInfo: RunningTaskInfo,
stableBounds: Rect,
@@ -1413,33 +1536,36 @@ class DesktopTasksController(
?: WINDOWING_MODE_UNDEFINED
}
+ private fun prepareForDeskActivation(displayId: Int, wct: WindowContainerTransaction) {
+ // Move home to front, ensures that we go back home when all desktop windows are closed
+ val useParamDisplayId =
+ Flags.enableMultipleDesktopsBackend() ||
+ Flags.enablePerDisplayDesktopWallpaperActivity()
+ moveHomeTask(displayId = if (useParamDisplayId) displayId else context.displayId, wct = wct)
+ // Currently, we only handle the desktop on the default display really.
+ if (
+ (displayId == DEFAULT_DISPLAY || Flags.enablePerDisplayDesktopWallpaperActivity()) &&
+ ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY.isTrue()
+ ) {
+ // Add translucent wallpaper activity to show the wallpaper underneath.
+ addWallpaperActivity(displayId, wct)
+ }
+ }
+
private fun bringDesktopAppsToFrontBeforeShowingNewTask(
displayId: Int,
wct: WindowContainerTransaction,
newTaskIdInFront: Int,
): Int? = bringDesktopAppsToFront(displayId, wct, newTaskIdInFront)
+ @Deprecated("Use activeDesk() instead.", ReplaceWith("activateDesk()"))
private fun bringDesktopAppsToFront(
displayId: Int,
wct: WindowContainerTransaction,
newTaskIdInFront: Int? = null,
): Int? {
logV("bringDesktopAppsToFront, newTaskId=%d", newTaskIdInFront)
- // Move home to front, ensures that we go back home when all desktop windows are closed
- if (Flags.enablePerDisplayDesktopWallpaperActivity()) {
- moveHomeTask(wct, toTop = true, displayId)
- } else {
- moveHomeTask(wct, toTop = true)
- }
-
- // Currently, we only handle the desktop on the default display really.
- if (
- (displayId == DEFAULT_DISPLAY || Flags.enablePerDisplayDesktopWallpaperActivity()) &&
- ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY.isTrue()
- ) {
- // Add translucent wallpaper activity to show the wallpaper underneath
- addWallpaperActivity(displayId, wct)
- }
+ prepareForDeskActivation(displayId, wct)
val expandedTasksOrderedFrontToBack = taskRepository.getExpandedTasksOrdered(displayId)
// If we're adding a new Task we might need to minimize an old one
@@ -1483,15 +1609,11 @@ class DesktopTasksController(
return taskIdToMinimize
}
- private fun moveHomeTask(
- wct: WindowContainerTransaction,
- toTop: Boolean,
- displayId: Int = DEFAULT_DISPLAY,
- ) {
+ private fun moveHomeTask(displayId: Int, wct: WindowContainerTransaction) {
shellTaskOrganizer
.getRunningTasks(displayId)
.firstOrNull { task -> task.activityType == ACTIVITY_TYPE_HOME }
- ?.let { homeTask -> wct.reorder(homeTask.getToken(), /* onTop= */ toTop) }
+ ?.let { homeTask -> wct.reorder(homeTask.getToken(), /* onTop= */ true) }
}
private fun addLaunchHomePendingIntent(wct: WindowContainerTransaction, displayId: Int) {
@@ -1525,16 +1647,11 @@ class DesktopTasksController(
private fun addWallpaperActivity(displayId: Int, wct: WindowContainerTransaction) {
logV("addWallpaperActivity")
if (ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER.isTrue()) {
-
- // If the wallpaper activity for this display already exists, let's reorder it to top.
- val wallpaperActivityToken = desktopWallpaperActivityTokenProvider.getToken(displayId)
- if (wallpaperActivityToken != null) {
- wct.reorder(wallpaperActivityToken, /* onTop= */ true)
- return
- }
-
val intent = Intent(context, DesktopWallpaperActivity::class.java)
- if (Flags.enablePerDisplayDesktopWallpaperActivity()) {
+ if (
+ desktopWallpaperActivityTokenProvider.getToken(displayId) == null &&
+ Flags.enablePerDisplayDesktopWallpaperActivity()
+ ) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
}
@@ -1748,7 +1865,7 @@ class DesktopTasksController(
/** Whether the given [change] in the [transition] is a known desktop change. */
fun isDesktopChange(transition: IBinder, change: TransitionInfo.Change): Boolean {
// Only the immersive controller is currently involved in mixed transitions.
- return Flags.enableFullyImmersiveInDesktop() &&
+ return DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue &&
desktopImmersiveController.isImmersiveChange(transition, change)
}
@@ -1759,7 +1876,7 @@ class DesktopTasksController(
*/
fun shouldPlayDesktopAnimation(info: TransitionRequestInfo): Boolean {
// Only immersive mixed transition are currently supported.
- if (!Flags.enableFullyImmersiveInDesktop()) return false
+ if (!DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue) return false
val triggerTask = info.triggerTask ?: return false
if (!isDesktopModeShowing(triggerTask.displayId)) {
return false
@@ -1875,9 +1992,10 @@ class DesktopTasksController(
// need updates in some cases.
val baseActivity = callingTaskInfo.baseActivity ?: return
val fillIn: Intent =
- userProfileContexts[callingTaskInfo.userId]
- ?.packageManager
- ?.getLaunchIntentForPackage(baseActivity.packageName) ?: return
+ userProfileContexts
+ .getOrCreate(callingTaskInfo.userId)
+ .packageManager
+ .getLaunchIntentForPackage(baseActivity.packageName) ?: return
fillIn.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
val launchIntent =
PendingIntent.getActivity(
@@ -2151,6 +2269,7 @@ class DesktopTasksController(
* different [displayId] if the task should be moved to a different display.
*/
@VisibleForTesting
+ @Deprecated("Deprecated with multiple desks", ReplaceWith("prepareMoveTaskToDesk()"))
fun addMoveToDesktopChanges(
wct: WindowContainerTransaction,
taskInfo: RunningTaskInfo,
@@ -2178,6 +2297,24 @@ class DesktopTasksController(
}
}
+ private fun prepareMoveTaskToDesk(
+ wct: WindowContainerTransaction,
+ taskInfo: RunningTaskInfo,
+ deskId: Int,
+ ) {
+ if (!Flags.enableMultipleDesktopsBackend()) return
+ val displayId = taskRepository.getDisplayForDesk(deskId)
+ val displayLayout = displayController.getDisplayLayout(displayId) ?: return
+ val initialBounds = getInitialBounds(displayLayout, taskInfo, displayId)
+ if (canChangeTaskPosition(taskInfo)) {
+ wct.setBounds(taskInfo.token, initialBounds)
+ }
+ desksOrganizer.moveTaskToDesk(wct, deskId = deskId, task = taskInfo)
+ if (useDesktopOverrideDensity()) {
+ wct.setDensityDpi(taskInfo.token, DESKTOP_DENSITY_OVERRIDE)
+ }
+ }
+
/**
* Apply changes to move a freeform task from one display to another, which includes handling
* density changes between displays.
@@ -2229,7 +2366,16 @@ class DesktopTasksController(
): Rect {
val bounds =
if (ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isTrue) {
- calculateInitialBounds(displayLayout, taskInfo)
+ // If caption insets should be excluded from app bounds, ensure caption insets
+ // are excluded from the ideal initial bounds when scaling non-resizeable apps.
+ // Caption insets stay fixed and don't scale with bounds.
+ val captionInsets =
+ if (desktopModeCompatPolicy.shouldExcludeCaptionFromAppBounds(taskInfo)) {
+ getAppHeaderHeight(context)
+ } else {
+ 0
+ }
+ calculateInitialBounds(displayLayout, taskInfo, captionInsets = captionInsets)
} else {
calculateDefaultDesktopTaskBounds(displayLayout)
}
@@ -2373,20 +2519,113 @@ class DesktopTasksController(
)
}
- fun removeDesktop(displayId: Int) {
- if (!DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION.isTrue()) return
+ private fun activateDefaultDeskInDisplay(
+ displayId: Int,
+ remoteTransition: RemoteTransition? = null,
+ ) {
+ val deskId =
+ checkNotNull(taskRepository.getDefaultDeskId(displayId)) {
+ "Expected a default desk to exist"
+ }
+ activateDesk(deskId, remoteTransition)
+ }
- val tasksToRemove = taskRepository.removeDesk(displayId)
+ /** Activates the given desk. */
+ fun activateDesk(deskId: Int, remoteTransition: RemoteTransition? = null) {
+ val displayId = taskRepository.getDisplayForDesk(deskId)
val wct = WindowContainerTransaction()
- tasksToRemove.forEach {
- val task = shellTaskOrganizer.getRunningTaskInfo(it)
- if (task != null) {
- wct.removeTask(task.token)
+ if (Flags.enableMultipleDesktopsBackend()) {
+ prepareForDeskActivation(displayId, wct)
+ desksOrganizer.activateDesk(wct, deskId)
+ if (DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_PERSISTENCE.isTrue()) {
+ // TODO: 362720497 - do non-running tasks need to be restarted with |wct#startTask|?
+ }
+ taskbarDesktopTaskListener?.onTaskbarCornerRoundingUpdate(
+ doesAnyTaskRequireTaskbarRounding(displayId)
+ )
+ } else {
+ bringDesktopAppsToFront(displayId, wct)
+ }
+
+ val transitionType = transitionType(remoteTransition)
+ val handler =
+ remoteTransition?.let {
+ OneShotRemoteHandler(transitions.mainExecutor, remoteTransition)
+ }
+
+ val transition = transitions.startTransition(transitionType, wct, handler)
+ handler?.setTransition(transition)
+ if (Flags.enableMultipleDesktopsBackend()) {
+ desksTransitionObserver.addPendingTransition(
+ DeskTransition.ActivateDesk(
+ token = transition,
+ displayId = displayId,
+ deskId = deskId,
+ )
+ )
+ }
+
+ desktopModeEnterExitTransitionListener?.onEnterDesktopModeTransitionStarted(
+ FREEFORM_ANIMATION_DURATION
+ )
+ }
+
+ /** Removes the default desk in the given display. */
+ @Deprecated("Deprecated with multi-desks.", ReplaceWith("removeDesk()"))
+ fun removeDefaultDeskInDisplay(displayId: Int) {
+ val deskId =
+ checkNotNull(taskRepository.getDefaultDeskId(displayId)) {
+ "Expected a default desk to exist"
+ }
+ removeDesk(displayId = displayId, deskId = deskId)
+ }
+
+ /** Removes the given desk. */
+ fun removeDesk(deskId: Int) {
+ val displayId = taskRepository.getDisplayForDesk(deskId)
+ removeDesk(displayId = displayId, deskId = deskId)
+ }
+
+ private fun removeDesk(displayId: Int, deskId: Int) {
+ if (!DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION.isTrue()) return
+ logV("removeDesk deskId=%d from displayId=%d", deskId, displayId)
+
+ val tasksToRemove =
+ if (Flags.enableMultipleDesktopsBackend()) {
+ taskRepository.getActiveTaskIdsInDesk(deskId)
} else {
- recentTasksController?.removeBackgroundTask(it)
+ // TODO: 362720497 - make sure minimized windows are also removed in WM
+ // and the repository.
+ taskRepository.removeDesk(deskId)
}
+
+ val wct = WindowContainerTransaction()
+ if (!Flags.enableMultipleDesktopsBackend()) {
+ tasksToRemove.forEach {
+ val task = shellTaskOrganizer.getRunningTaskInfo(it)
+ if (task != null) {
+ wct.removeTask(task.token)
+ } else {
+ recentTasksController?.removeBackgroundTask(it)
+ }
+ }
+ } else {
+ // TODO: 362720497 - double check background tasks are also removed.
+ desksOrganizer.removeDesk(wct, deskId)
+ }
+ if (!Flags.enableMultipleDesktopsBackend() && wct.isEmpty) return
+ val transition = transitions.startTransition(TRANSIT_CLOSE, wct, /* handler= */ null)
+ if (Flags.enableMultipleDesktopsBackend()) {
+ desksTransitionObserver.addPendingTransition(
+ DeskTransition.RemoveDesk(
+ token = transition,
+ displayId = displayId,
+ deskId = deskId,
+ tasks = tasksToRemove,
+ onDeskRemovedListener = onDeskRemovedListener,
+ )
+ )
}
- if (!wct.isEmpty) transitions.startTransition(TRANSIT_CLOSE, wct, null)
}
/** Enter split by using the focused desktop task in given `displayId`. */
@@ -2505,6 +2744,7 @@ class DesktopTasksController(
taskSurface,
rootTaskDisplayAreaOrganizer,
dragStartState,
+ bubbleController.getOrNull()?.bubbleDropTargetBoundsProvider,
)
if (visualIndicator == null) visualIndicator = indicator
return indicator.updateIndicatorType(PointF(inputX, taskTop))
@@ -2587,7 +2827,11 @@ class DesktopTasksController(
desktopModeWindowDecoration,
)
}
- IndicatorType.NO_INDICATOR -> {
+ IndicatorType.NO_INDICATOR,
+ IndicatorType.TO_BUBBLE_LEFT_INDICATOR,
+ IndicatorType.TO_BUBBLE_RIGHT_INDICATOR -> {
+ // TODO(b/391928049): add support fof dragging desktop apps to a bubble
+
// Create a copy so that we can animate from the current bounds if we end up having
// to snap the surface back without a WCT change.
val destinationBounds = Rect(currentDragBounds)
@@ -2714,6 +2958,11 @@ class DesktopTasksController(
)
requestSplit(taskInfo, leftOrTop = false)
}
+ IndicatorType.TO_BUBBLE_LEFT_INDICATOR,
+ IndicatorType.TO_BUBBLE_RIGHT_INDICATOR -> {
+ // TODO(b/388851898): move to bubble
+ cancelDragToDesktop(taskInfo)
+ }
}
return indicatorType
}
@@ -2859,7 +3108,7 @@ class DesktopTasksController(
/** Called when a task's info changes. */
fun onTaskInfoChanged(taskInfo: RunningTaskInfo) {
- if (!Flags.enableFullyImmersiveInDesktop()) return
+ if (!DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue) return
val inImmersive = taskRepository.isTaskInFullImmersiveState(taskInfo.taskId)
val requestingImmersive = taskInfo.requestingImmersive
if (
@@ -3079,7 +3328,7 @@ class DesktopTasksController(
callback: IMoveToDesktopCallback?,
) {
executeRemoteCallWithTaskPermission(controller, "moveTaskToDesktop") { c ->
- c.moveTaskToDesktop(
+ c.moveTaskToDefaultDeskAndActivate(
taskId,
transitionSource = transitionSource,
remoteTransition = remoteTransition,
@@ -3090,7 +3339,7 @@ class DesktopTasksController(
override fun removeDesktop(displayId: Int) {
executeRemoteCallWithTaskPermission(controller, "removeDesktop") { c ->
- c.removeDesktop(displayId)
+ c.removeDefaultDeskInDisplay(displayId)
}
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserver.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserver.kt
index b3648699ed0b..3ada988ba2a3 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserver.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserver.kt
@@ -37,6 +37,7 @@ import com.android.wm.shell.ShellTaskOrganizer
import com.android.wm.shell.back.BackAnimationController
import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.isExitDesktopModeTransition
import com.android.wm.shell.desktopmode.desktopwallpaperactivity.DesktopWallpaperActivityTokenProvider
+import com.android.wm.shell.desktopmode.multidesks.DesksTransitionObserver
import com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE
import com.android.wm.shell.shared.TransitionUtil
import com.android.wm.shell.shared.desktopmode.DesktopModeStatus
@@ -58,6 +59,7 @@ class DesktopTasksTransitionObserver(
private val desktopMixedTransitionHandler: DesktopMixedTransitionHandler,
private val backAnimationController: BackAnimationController,
private val desktopWallpaperActivityTokenProvider: DesktopWallpaperActivityTokenProvider,
+ private val desksTransitionObserver: DesksTransitionObserver,
shellInit: ShellInit,
) : Transitions.TransitionObserver {
@@ -87,6 +89,7 @@ class DesktopTasksTransitionObserver(
finishTransaction: SurfaceControl.Transaction,
) {
// TODO: b/332682201 Update repository state
+ desksTransitionObserver.onTransitionReady(transition, info)
if (
DesktopModeFlags.INCLUDE_TOP_TRANSPARENT_FULLSCREEN_TASK_IN_DESKTOP_HEURISTIC
.isTrue() && DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_MODALS_POLICY.isTrue()
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DisplayDeskState.aidl b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DisplayDeskState.aidl
new file mode 100644
index 000000000000..59add47fc79d
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DisplayDeskState.aidl
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.desktopmode;
+
+/**
+ * Defines the state of desks on a display whose ID is `displayId`, which is:
+ * - `canCreateDesks`: whether it's possible to create new desks on this display.
+ * - `activeDeskId`: the currently active desk Id, or `-1` if none is active.
+ * - `deskId`: the list of desk Ids of the available desks on this display.
+ */
+parcelable DisplayDeskState {
+ int displayId;
+ boolean canCreateDesk;
+ int activeDeskId;
+ int[] deskIds;
+}
+
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandler.kt
index 91f10dc4faf5..2ac76f319d32 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandler.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandler.kt
@@ -458,7 +458,8 @@ sealed class DragToDesktopTransitionHandler(
override fun mergeAnimation(
transition: IBinder,
info: TransitionInfo,
- t: SurfaceControl.Transaction,
+ startT: SurfaceControl.Transaction,
+ finishT: SurfaceControl.Transaction,
mergeTarget: IBinder,
finishCallback: Transitions.TransitionFinishCallback,
) {
@@ -488,18 +489,18 @@ sealed class DragToDesktopTransitionHandler(
if (isEndTransition) {
setupEndDragToDesktop(
info,
- startTransaction = t,
+ startTransaction = startT,
finishTransaction = startTransactionFinishT,
)
// Call finishCallback to merge animation before startTransitionFinishCb is called
finishCallback.onTransitionFinished(/* wct= */ null)
- animateEndDragToDesktop(startTransaction = t, startTransitionFinishCb)
+ animateEndDragToDesktop(startTransaction = startT, startTransitionFinishCb)
} else if (isCancelTransition) {
info.changes.forEach { change ->
- t.show(change.leash)
+ startT.show(change.leash)
startTransactionFinishT.show(change.leash)
}
- t.apply()
+ startT.apply()
finishCallback.onTransitionFinished(/* wct= */ null)
startTransitionFinishCb.onTransitionFinished(/* wct= */ null)
clearState()
@@ -958,9 +959,16 @@ constructor(
super.setupEndDragToDesktop(info, startTransaction, finishTransaction)
val state = requireTransitionState()
- val homeLeash = state.homeChange?.leash ?: error("Expects home leash to be non-null")
- // Hide home on finish to prevent flickering when wallpaper activity flag is enabled
- finishTransaction.hide(homeLeash)
+ val homeLeash = state.homeChange?.leash
+ if (homeLeash == null) {
+ ProtoLog.e(
+ ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE,
+ "DragToDesktop: home leash is null",
+ )
+ } else {
+ // Hide home on finish to prevent flickering when wallpaper activity flag is enabled
+ finishTransaction.hide(homeLeash)
+ }
// Setup freeform tasks before animation
state.freeformTaskChanges.forEach { change ->
val startScale = FREEFORM_TASKS_INITIAL_SCALE
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/IDesktopTaskListener.aidl b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/IDesktopTaskListener.aidl
index 6002a4dfe0d9..7ed1581cdfdb 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/IDesktopTaskListener.aidl
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/IDesktopTaskListener.aidl
@@ -16,27 +16,56 @@
package com.android.wm.shell.desktopmode;
+import com.android.wm.shell.desktopmode.DisplayDeskState;
+
/**
* Allows external processes to register a listener in WMShell to get updates about desktop task
* state.
*/
-interface IDesktopTaskListener {
+oneway interface IDesktopTaskListener {
+
+ /**
+ * Called once when the listener first gets connected to initialize it with the current state of
+ * desks in Shell.
+ */
+ void onListenerConnected(in DisplayDeskState[] displayDeskStates);
/** Desktop tasks visibility has changed. Visible if at least 1 task is visible. */
- oneway void onTasksVisibilityChanged(int displayId, int visibleTasksCount);
+ void onTasksVisibilityChanged(int displayId, int visibleTasksCount);
/** @deprecated this is no longer supported. */
- oneway void onStashedChanged(int displayId, boolean stashed);
+ void onStashedChanged(int displayId, boolean stashed);
/**
* Shows taskbar corner radius when running desktop tasks are updated if
* [hasTasksRequiringTaskbarRounding] is true.
*/
- oneway void onTaskbarCornerRoundingUpdate(boolean hasTasksRequiringTaskbarRounding);
+ void onTaskbarCornerRoundingUpdate(boolean hasTasksRequiringTaskbarRounding);
/** Entering desktop mode transition is started, send the signal with transition duration. */
- oneway void onEnterDesktopModeTransitionStarted(int transitionDuration);
+ void onEnterDesktopModeTransitionStarted(int transitionDuration);
/** Exiting desktop mode transition is started, send the signal with transition duration. */
- oneway void onExitDesktopModeTransitionStarted(int transitionDuration);
+ void onExitDesktopModeTransitionStarted(int transitionDuration);
+
+ /**
+ * Called when the conditions that allow the creation of a new desk on the display whose ID is
+ * `displayId` changes to `canCreateDesks`. It's also called when a new display is added.
+ */
+ void onCanCreateDesksChanged(int displayId, boolean canCreateDesks);
+
+ /** Called when a desk whose ID is `deskId` is added to the display whose ID is `displayId`. */
+ void onDeskAdded(int displayId, int deskId);
+
+ /**
+ * Called when a desk whose ID is `deskId` is removed from the display whose ID is `displayId`.
+ */
+ void onDeskRemoved(int displayId, int deskId);
+
+ /**
+ * Called when the active desk changes on the display whose ID is `displayId`.
+ * If `newActiveDesk` is -1, it means a desk is no longer active on the display.
+ * If `oldActiveDesk` is -1, it means a desk was not active on the display.
+ */
+ void onActiveDeskChanged(int displayId, int newActiveDesk, int oldActiveDesk);
} \ No newline at end of file
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/OWNERS b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/OWNERS
index afdda8ff865e..47b3ae8fc11b 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/OWNERS
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/OWNERS
@@ -3,7 +3,6 @@ atsjenk@google.com
jorgegil@google.com
madym@google.com
pbdr@google.com
-tkachenkoi@google.com
vaniadesmonda@google.com
pragyabajoria@google.com
uysalorhan@google.com
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/desktopwallpaperactivity/DesktopWallpaperActivityTokenProvider.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/desktopwallpaperactivity/DesktopWallpaperActivityTokenProvider.kt
index 2bd7a9873a5e..2a8a3475c2a5 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/desktopwallpaperactivity/DesktopWallpaperActivityTokenProvider.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/desktopwallpaperactivity/DesktopWallpaperActivityTokenProvider.kt
@@ -20,6 +20,9 @@ import android.util.SparseArray
import android.util.SparseBooleanArray
import android.view.Display.DEFAULT_DISPLAY
import android.window.WindowContainerToken
+import androidx.core.util.forEach
+import com.android.internal.protolog.ProtoLog
+import com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE
/** Provides per display window container tokens for [DesktopWallpaperActivity]. */
class DesktopWallpaperActivityTokenProvider {
@@ -28,6 +31,7 @@ class DesktopWallpaperActivityTokenProvider {
private val wallpaperActivityVisByDisplayId = SparseBooleanArray()
fun setToken(token: WindowContainerToken, displayId: Int = DEFAULT_DISPLAY) {
+ logV("Setting desktop wallpaper activity token for display %s", displayId)
wallpaperActivityTokenByDisplayId[displayId] = token
}
@@ -36,9 +40,19 @@ class DesktopWallpaperActivityTokenProvider {
}
fun removeToken(displayId: Int = DEFAULT_DISPLAY) {
+ logV("Remove desktop wallpaper activity token for display %s", displayId)
wallpaperActivityTokenByDisplayId.delete(displayId)
}
+ fun removeToken(token: WindowContainerToken) {
+ wallpaperActivityTokenByDisplayId.forEach { displayId, value ->
+ if (value == token) {
+ logV("Remove desktop wallpaper activity token for display %s", displayId)
+ wallpaperActivityTokenByDisplayId.delete(displayId)
+ }
+ }
+ }
+
fun setWallpaperActivityIsVisible(
isVisible: Boolean = false,
displayId: Int = DEFAULT_DISPLAY,
@@ -50,4 +64,12 @@ class DesktopWallpaperActivityTokenProvider {
return wallpaperActivityTokenByDisplayId[displayId] != null &&
wallpaperActivityVisByDisplayId.get(displayId, false)
}
+
+ private fun logV(msg: String, vararg arguments: Any?) {
+ ProtoLog.v(WM_SHELL_DESKTOP_MODE, "%s: $msg", TAG, *arguments)
+ }
+
+ companion object {
+ private const val TAG = "DesktopWallpaperActivityTokenProvider"
+ }
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/education/data/AppHandleEducationDatastoreRepository.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/education/data/AppHandleEducationDatastoreRepository.kt
index d061e03b9be5..3af52b35bed7 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/education/data/AppHandleEducationDatastoreRepository.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/education/data/AppHandleEducationDatastoreRepository.kt
@@ -22,6 +22,7 @@ import androidx.datastore.core.CorruptionException
import androidx.datastore.core.DataStore
import androidx.datastore.core.DataStoreFactory
import androidx.datastore.core.Serializer
+import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler
import androidx.datastore.dataStoreFile
import com.android.framework.protobuf.InvalidProtocolBufferException
import com.android.internal.annotations.VisibleForTesting
@@ -48,6 +49,10 @@ constructor(private val dataStore: DataStore<WindowingEducationProto>) {
DataStoreFactory.create(
serializer = WindowingEducationProtoSerializer,
produceFile = { context.dataStoreFile(APP_HANDLE_EDUCATION_DATASTORE_FILEPATH) },
+ corruptionHandler =
+ ReplaceFileCorruptionHandler(
+ produceNewData = { WindowingEducationProto.getDefaultInstance() }
+ ),
)
)
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/education/data/AppToWebEducationDatastoreRepository.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/education/data/AppToWebEducationDatastoreRepository.kt
index e5ad901d1435..f16428dfb90b 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/education/data/AppToWebEducationDatastoreRepository.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/education/data/AppToWebEducationDatastoreRepository.kt
@@ -22,6 +22,7 @@ import androidx.datastore.core.CorruptionException
import androidx.datastore.core.DataStore
import androidx.datastore.core.DataStoreFactory
import androidx.datastore.core.Serializer
+import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler
import androidx.datastore.dataStoreFile
import com.android.framework.protobuf.InvalidProtocolBufferException
import com.android.internal.annotations.VisibleForTesting
@@ -42,6 +43,10 @@ constructor(private val dataStore: DataStore<WindowingEducationProto>) {
DataStoreFactory.create(
serializer = WindowingEducationProtoSerializer,
produceFile = { context.dataStoreFile(APP_TO_WEB_EDUCATION_DATASTORE_FILEPATH) },
+ corruptionHandler =
+ ReplaceFileCorruptionHandler(
+ produceNewData = { WindowingEducationProto.getDefaultInstance() }
+ ),
)
)
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/DeskTransition.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/DeskTransition.kt
new file mode 100644
index 000000000000..8c4fd9db050f
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/DeskTransition.kt
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.wm.shell.desktopmode.multidesks
+
+import android.os.IBinder
+
+/** Represents shell-started transitions involving desks. */
+sealed class DeskTransition {
+ /** The transition token. */
+ abstract val token: IBinder
+
+ /** A transition to remove a desk and its tasks from a display. */
+ data class RemoveDesk(
+ override val token: IBinder,
+ val displayId: Int,
+ val deskId: Int,
+ val tasks: Set<Int>,
+ val onDeskRemovedListener: OnDeskRemovedListener?,
+ ) : DeskTransition()
+
+ /** A transition to activate a desk in its display. */
+ data class ActivateDesk(override val token: IBinder, val displayId: Int, val deskId: Int) :
+ DeskTransition()
+
+ /** A transition to activate a desk by moving an outside task to it. */
+ data class ActiveDeskWithTask(
+ override val token: IBinder,
+ val displayId: Int,
+ val deskId: Int,
+ val enterTaskId: Int,
+ ) : DeskTransition()
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/DesksOrganizer.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/DesksOrganizer.kt
index 5cbb59fbf323..547890a6200a 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/DesksOrganizer.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/DesksOrganizer.kt
@@ -43,6 +43,9 @@ interface DesksOrganizer {
*/
fun getDeskAtEnd(change: TransitionInfo.Change): Int?
+ /** Whether the desk is activate according to the given change at the end of a transition. */
+ fun isDeskActiveAtEnd(change: TransitionInfo.Change, deskId: Int): Boolean
+
/** A callback that is invoked when the desk container is created. */
fun interface OnCreateCallback {
/** Calls back when the [deskId] has been created. */
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/DesksTransitionObserver.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/DesksTransitionObserver.kt
new file mode 100644
index 000000000000..6d88c3310a63
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/DesksTransitionObserver.kt
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.wm.shell.desktopmode.multidesks
+
+import android.os.IBinder
+import android.view.WindowManager.TRANSIT_CLOSE
+import android.window.TransitionInfo
+import com.android.window.flags.Flags
+import com.android.wm.shell.desktopmode.DesktopUserRepositories
+
+/**
+ * Observer of desk-related transitions, such as adding, removing or activating a whole desk. It
+ * tracks pending transitions and updates repository state once they finish.
+ */
+class DesksTransitionObserver(
+ private val desktopUserRepositories: DesktopUserRepositories,
+ private val desksOrganizer: DesksOrganizer,
+) {
+ private val deskTransitions = mutableMapOf<IBinder, DeskTransition>()
+
+ /** Adds a pending desk transition to be tracked. */
+ fun addPendingTransition(transition: DeskTransition) {
+ if (!Flags.enableMultipleDesktopsBackend()) return
+ deskTransitions[transition.token] = transition
+ }
+
+ /**
+ * Called when any transition is ready, which may include transitions not tracked by this
+ * observer.
+ */
+ fun onTransitionReady(transition: IBinder, info: TransitionInfo) {
+ if (!Flags.enableMultipleDesktopsBackend()) return
+ val deskTransition = deskTransitions.remove(transition) ?: return
+ val desktopRepository = desktopUserRepositories.current
+ when (deskTransition) {
+ is DeskTransition.RemoveDesk -> {
+ check(info.type == TRANSIT_CLOSE) { "Expected close transition for desk removal" }
+ // TODO: b/362720497 - consider verifying the desk was actually removed through the
+ // DesksOrganizer. The transition info won't have changes if the desk was not
+ // visible, such as when dismissing from Overview.
+ val deskId = deskTransition.deskId
+ val displayId = deskTransition.displayId
+ desktopRepository.removeDesk(deskTransition.deskId)
+ deskTransition.onDeskRemovedListener?.onDeskRemoved(displayId, deskId)
+ }
+ is DeskTransition.ActivateDesk -> {
+ val activeDeskChange =
+ info.changes.find { change ->
+ desksOrganizer.isDeskActiveAtEnd(change, deskTransition.deskId)
+ }
+ activeDeskChange?.let {
+ desktopRepository.setActiveDesk(
+ displayId = deskTransition.displayId,
+ deskId = deskTransition.deskId,
+ )
+ }
+ }
+ is DeskTransition.ActiveDeskWithTask -> {
+ val withTask =
+ info.changes.find { change ->
+ change.taskInfo?.taskId == deskTransition.enterTaskId &&
+ change.taskInfo?.isVisibleRequested == true &&
+ desksOrganizer.getDeskAtEnd(change) == deskTransition.deskId
+ }
+ withTask?.let {
+ desktopRepository.setActiveDesk(
+ displayId = deskTransition.displayId,
+ deskId = deskTransition.deskId,
+ )
+ desktopRepository.addTaskToDesk(
+ displayId = deskTransition.displayId,
+ deskId = deskTransition.deskId,
+ taskId = deskTransition.enterTaskId,
+ isVisible = true,
+ )
+ }
+ }
+ }
+ }
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/RootTaskDesksOrganizer.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/RootTaskDesksOrganizer.kt
index 79c48c5e9594..5cda76e2f3e0 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/RootTaskDesksOrganizer.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/RootTaskDesksOrganizer.kt
@@ -22,6 +22,7 @@ import android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM
import android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED
import android.util.SparseArray
import android.view.SurfaceControl
+import android.view.WindowManager.TRANSIT_TO_FRONT
import android.window.TransitionInfo
import android.window.WindowContainerTransaction
import androidx.core.util.forEach
@@ -88,12 +89,18 @@ class RootTaskDesksOrganizer(
task: RunningTaskInfo,
) {
val root = roots[deskId] ?: error("Root not found for desk: $deskId")
+ wct.setWindowingMode(task.token, WINDOWING_MODE_UNDEFINED)
wct.reparent(task.token, root.taskInfo.token, /* onTop= */ true)
}
override fun getDeskAtEnd(change: TransitionInfo.Change): Int? =
change.taskInfo?.parentTaskId?.takeIf { it in roots }
+ override fun isDeskActiveAtEnd(change: TransitionInfo.Change, deskId: Int): Boolean =
+ change.taskInfo?.taskId == deskId &&
+ change.taskInfo?.isVisibleRequested == true &&
+ change.mode == TRANSIT_TO_FRONT
+
override fun onTaskAppeared(taskInfo: RunningTaskInfo, leash: SurfaceControl) {
if (taskInfo.parentTaskId in roots) {
val deskId = taskInfo.parentTaskId
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/persistence/DesktopPersistentRepository.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/persistence/DesktopPersistentRepository.kt
index 9e41270c21f8..1566544f5303 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/persistence/DesktopPersistentRepository.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/persistence/DesktopPersistentRepository.kt
@@ -24,6 +24,7 @@ import androidx.datastore.core.CorruptionException
import androidx.datastore.core.DataStore
import androidx.datastore.core.DataStoreFactory
import androidx.datastore.core.Serializer
+import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler
import androidx.datastore.dataStoreFile
import com.android.framework.protobuf.InvalidProtocolBufferException
import com.android.wm.shell.shared.annotations.ShellBackgroundThread
@@ -49,6 +50,10 @@ class DesktopPersistentRepository(private val dataStore: DataStore<DesktopPersis
serializer = DesktopPersistentRepositoriesSerializer,
produceFile = { context.dataStoreFile(DESKTOP_REPOSITORIES_DATASTORE_FILE) },
scope = bgCoroutineScope,
+ corruptionHandler =
+ ReplaceFileCorruptionHandler(
+ produceNewData = { DesktopPersistentRepositories.getDefaultInstance() }
+ ),
)
)
@@ -127,7 +132,10 @@ class DesktopPersistentRepository(private val dataStore: DataStore<DesktopPersis
.toBuilder()
.putDesktopRepoByUser(
userId,
- currentRepository.toBuilder().putDesktop(desktopId, desktop.build()).build(),
+ currentRepository
+ .toBuilder()
+ .putDesktop(desktopId, desktop.build())
+ .build(),
)
.build()
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/changes.md b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/changes.md
index faa97ac4512f..f50d253ddf42 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/changes.md
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/changes.md
@@ -1,4 +1,5 @@
# Making changes in the Shell
+[Back to home](README.md)
---
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/dagger.md b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/dagger.md
index 7070dead9957..9b09904527bf 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/dagger.md
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/dagger.md
@@ -1,4 +1,5 @@
# Usage of Dagger in the Shell library
+[Back to home](README.md)
---
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/debugging.md b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/debugging.md
index 09e627c0e02c..dd5827af97d9 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/debugging.md
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/debugging.md
@@ -1,4 +1,5 @@
# Debugging in the Shell
+[Back to home](README.md)
---
@@ -50,6 +51,11 @@ adb shell wm shell protolog enable-text TAG
adb shell wm shell protolog disable-text TAG
```
+### R8 optimizations & ProtoLog
+
+If the APK that the Shell library is included into has R8 optimizations enabled, then you may need
+to update the proguard flags to keep the generated protolog classes (ie. AOSP SystemUI's [proguard.flags](base/packages/SystemUI/proguard_common.flags)).
+
## Winscope Tracing
The Winscope tool is extremely useful in determining what is happening on-screen in both
@@ -57,25 +63,42 @@ WindowManager and SurfaceFlinger. Follow [go/winscope](http://go/winscope-help)
use the tool. This trace will contain all the information about the windows/activities/surfaces on
screen.
-## WindowManager/SurfaceFlinger hierarchy dump
+## WindowManager/SurfaceFlinger/InputDispatcher information
A quick way to view the WindowManager hierarchy without a winscope trace is via the wm dumps:
```shell
adb shell dumpsys activity containers
+# The output lists the containers in the hierarchy from top -> bottom in z-order
+```
+
+To get more information about windows on the screen:
+```shell
+# All windows in WM
+adb shell dumpsys window -a
+# The windows are listed from top -> bottom in z-order
+
+# Visible windows only
+adb shell dumpsys window -a visible
```
Likewise, the SurfaceFlinger hierarchy can be dumped for inspection by running:
```shell
adb shell dumpsys SurfaceFlinger
-# Search output for "Layer Hierarchy"
+# Search output for "Layer Hierarchy", the surfaces in the table are listed bottom -> top in z-order
+```
+
+And the visible input windows can be dumped via:
+```shell
+adb shell dumpsys input
+# Search output for "Windows:", they are ordered top -> bottom in z-order
```
## Tracing global SurfaceControl transaction updates
While Winscope traces are very useful, it sometimes doesn't give you enough information about which
part of the code is initiating the transaction updates. In such cases, it can be helpful to get
-stack traces when specific surface transaction calls are made, which is possible by enabling the
-following system properties for example:
+stack traces when specific surface transaction calls are made (regardless of process), which is
+possible by enabling the following system properties for example:
```shell
# Enabling
adb shell setprop persist.wm.debug.sc.tx.log_match_call setAlpha,setPosition # matches the name of the SurfaceControlTransaction methods
@@ -94,9 +117,16 @@ properties.
It is not necessary to set both `log_match_call` and `log_match_name`, but note logs can be quite
noisy if unfiltered.
-It can sometimes be useful to trace specific logs and when they are applied (sometimes we build
-transactions that can be applied later). You can do this by adding the "merge" and "apply" calls to
-the set of requested calls:
+### Tracing transaction merge & apply
+
+Tracing the method calls on SurfaceControl.Transaction tells you where a change is requested, but
+the changes are not actually committed until the transaction itself is applied. And because
+transactions can be passed across processes, or prepared in advance for later application (ie.
+when restoring state after a Transition), the ordering of the change logs is not always clear
+by itself.
+
+In such cases, you can also enable the "merge" and "apply" calls to get additional information
+about how/when transactions are respectively merged/applied:
```shell
# Enabling
adb shell setprop persist.wm.debug.sc.tx.log_match_call setAlpha,merge,apply # apply will dump logs of each setAlpha or merge call on that tx
@@ -104,6 +134,11 @@ adb reboot
adb logcat -s "SurfaceControlRegistry"
```
+Using those logs, you can first look at where the desired change is called, note the transaction
+id, and then search the logs for where that transaction id is used. If it is merged into another
+transaction, you can continue the search using the merged transaction until you find the final
+transaction which is applied.
+
## Tracing activity starts & finishes in the app process
It's sometimes useful to know when to see a stack trace of when an activity starts in the app code
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/extending.md b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/extending.md
index 061ae00e2b25..f7707da33189 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/extending.md
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/extending.md
@@ -1,4 +1,5 @@
# Extending the Shell for Products/OEMs
+[Back to home](README.md)
---
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/overview.md b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/overview.md
index b489fe8ea1a9..bed0fba453d0 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/overview.md
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/overview.md
@@ -1,4 +1,5 @@
# What is the WindowManager Shell
+[Back to home](README.md)
---
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/sysui.md b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/sysui.md
index 5e92010d4b68..47383b0a81a0 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/sysui.md
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/sysui.md
@@ -1,4 +1,5 @@
# Shell & SystemUI
+[Back to home](README.md)
---
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/testing.md b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/testing.md
index 98af930c4486..b4553131284b 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/testing.md
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/testing.md
@@ -1,4 +1,5 @@
# Testing
+[Back to home](README.md)
---
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/threading.md b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/threading.md
index 837a6dd32ff2..bde722357308 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/docs/threading.md
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/docs/threading.md
@@ -1,4 +1,5 @@
# Threading
+[Back to home](README.md)
---
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropController.java
index e8996bc03eeb..a67557bd7bd0 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropController.java
@@ -62,6 +62,7 @@ import com.android.internal.protolog.ProtoLog;
import com.android.launcher3.icons.IconProvider;
import com.android.wm.shell.R;
import com.android.wm.shell.ShellTaskOrganizer;
+import com.android.wm.shell.bubbles.bar.BubbleBarDragListener;
import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.ExternalInterfaceBinder;
import com.android.wm.shell.common.RemoteCallable;
@@ -80,6 +81,8 @@ import java.util.ArrayList;
import java.util.function.Consumer;
import java.util.function.Function;
+import dagger.Lazy;
+
/**
* Handles the global drag and drop handling for the Shell.
*/
@@ -101,6 +104,7 @@ public class DragAndDropController implements RemoteCallable<DragAndDropControll
private final GlobalDragListener mGlobalDragListener;
private final Transitions mTransitions;
private SplitScreenController mSplitScreen;
+ private Lazy<BubbleBarDragListener> mBubbleBarDragController;
private ShellExecutor mMainExecutor;
private ArrayList<DragAndDropListener> mListeners = new ArrayList<>();
@@ -143,6 +147,7 @@ public class DragAndDropController implements RemoteCallable<DragAndDropControll
IconProvider iconProvider,
GlobalDragListener globalDragListener,
Transitions transitions,
+ Lazy<BubbleBarDragListener> bubbleBarDragController,
ShellExecutor mainExecutor) {
mContext = context;
mShellController = shellController;
@@ -153,6 +158,7 @@ public class DragAndDropController implements RemoteCallable<DragAndDropControll
mIconProvider = iconProvider;
mGlobalDragListener = globalDragListener;
mTransitions = transitions;
+ mBubbleBarDragController = bubbleBarDragController;
mMainExecutor = mainExecutor;
shellInit.addInitCallback(this::onInit, this);
}
@@ -246,7 +252,8 @@ public class DragAndDropController implements RemoteCallable<DragAndDropControll
R.layout.global_drop_target, null);
rootView.setOnDragListener(this);
rootView.setVisibility(View.INVISIBLE);
- DragLayoutProvider dragLayout = new DragLayout(context, mSplitScreen, mIconProvider);
+ DragLayoutProvider dragLayout = new DragLayout(context, mSplitScreen,
+ mBubbleBarDragController.get(), mIconProvider);
dragLayout.addDraggingView(rootView);
try {
wm.addView(rootView, layoutParams);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragLayout.java b/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragLayout.java
index 5c72cb7f71a6..2571e0e36cd9 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragLayout.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragLayout.java
@@ -38,16 +38,16 @@ import android.annotation.SuppressLint;
import android.app.ActivityManager;
import android.app.StatusBarManager;
import android.content.Context;
+import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.Insets;
import android.graphics.Point;
import android.graphics.Rect;
-import android.graphics.RectF;
import android.graphics.Region;
import android.graphics.drawable.Drawable;
-import android.util.Log;
+import android.os.UserHandle;
import android.view.DragEvent;
import android.view.SurfaceControl;
import android.view.View;
@@ -66,9 +66,11 @@ import com.android.internal.logging.InstanceId;
import com.android.internal.protolog.ProtoLog;
import com.android.launcher3.icons.IconProvider;
import com.android.wm.shell.R;
+import com.android.wm.shell.bubbles.bar.BubbleBarDragListener;
import com.android.wm.shell.common.split.SplitScreenUtils;
import com.android.wm.shell.protolog.ShellProtoLogGroup;
import com.android.wm.shell.shared.animation.Interpolators;
+import com.android.wm.shell.shared.bubbles.BubbleBarLocation;
import com.android.wm.shell.splitscreen.SplitScreenController;
import java.io.PrintWriter;
@@ -106,9 +108,11 @@ public class DragLayout extends LinearLayout
private boolean mIsLeftRightSplit;
private SplitDragPolicy.Target mCurrentTarget = null;
+ private final BubbleBarDragListener mBubbleBarDragListener;
+ private final Map<BubbleBarLocation, Rect> mBubbleBarLocations = new HashMap<>();
+ private BubbleBarLocation mCurrentBubbleBarTarget = null;
private DropZoneView mDropZoneView1;
private DropZoneView mDropZoneView2;
-
private int mDisplayMargin;
private int mDividerSize;
private int mLaunchIntentEdgeMargin;
@@ -128,11 +132,14 @@ public class DragLayout extends LinearLayout
// Used with enableFlexibleSplit() flag
@SuppressLint("WrongConstant")
- public DragLayout(Context context, SplitScreenController splitScreenController,
+ public DragLayout(Context context,
+ SplitScreenController splitScreenController,
+ BubbleBarDragListener bubbleBarDragListener,
IconProvider iconProvider) {
super(context);
mSplitScreenController = splitScreenController;
mIconProvider = iconProvider;
+ mBubbleBarDragListener = bubbleBarDragListener;
mPolicy = new SplitDragPolicy(context, splitScreenController, this);
mStatusBarManager = context.getSystemService(StatusBarManager.class);
mLastConfiguration.setTo(context.getResources().getConfiguration());
@@ -188,6 +195,12 @@ public class DragLayout extends LinearLayout
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
updateTouchableRegion();
+ updateBubbleBarRegions(l, t, r, b);
+ }
+
+ private void updateBubbleBarRegions(int l, int t, int r, int b) {
+ mBubbleBarLocations.clear();
+ mBubbleBarLocations.putAll(mBubbleBarDragListener.getBubbleBarDropZones(l, t, r, b));
}
/**
@@ -400,6 +413,8 @@ public class DragLayout extends LinearLayout
}
private void updateDropZoneSizesForSingleTask() {
+ resetDropZoneTranslations();
+
final LinearLayout.LayoutParams dropZoneView1 =
(LayoutParams) mDropZoneView1.getLayoutParams();
final LinearLayout.LayoutParams dropZoneView2 =
@@ -414,6 +429,19 @@ public class DragLayout extends LinearLayout
mDropZoneView2.setLayoutParams(dropZoneView2);
}
+ /** Zeroes out translationX and translationY on all drop zone views. */
+ void resetDropZoneTranslations() {
+ setDropZoneTranslations(0, 0);
+ }
+
+ /** Sets translationX and translationY on all drop zone views. */
+ void setDropZoneTranslations(int x, int y) {
+ mDropZoneView1.setTranslationX(x);
+ mDropZoneView1.setTranslationY(y);
+ mDropZoneView2.setTranslationX(x);
+ mDropZoneView2.setTranslationY(y);
+ }
+
/**
* Sets the size of the two drop zones based on the provided bounds. The divider sits between
* the views and its size is included in the calculations.
@@ -422,6 +450,15 @@ public class DragLayout extends LinearLayout
* @param bounds2 bounds to apply to the second dropzone view, null if split in half.
*/
private void updateDropZoneSizes(Rect bounds1, Rect bounds2) {
+ if (bounds1 == null || bounds2 == null) {
+ // We're entering 50:50 split screen from a single app, no need for any translations.
+ resetDropZoneTranslations();
+ } else {
+ // We're already in split, so align our drop zones to match the left/top app edge. This
+ // is necessary because the left/top app can be offscreen.
+ setDropZoneTranslations(bounds1.left, bounds1.top);
+ }
+
final int halfDivider = mDividerSize / 2;
final LinearLayout.LayoutParams dropZoneView1 =
(LayoutParams) mDropZoneView1.getLayoutParams();
@@ -514,17 +551,18 @@ public class DragLayout extends LinearLayout
if (mHasDropped) {
return;
}
+ // if event is over the bubble don't let split handle it
+ if (interceptBubbleBarEvent(x, y)) {
+ mLastPosition.set(x, y);
+ return;
+ }
// Find containing region, if the same as mCurrentRegion, then skip, otherwise, animate the
// visibility of the current region
SplitDragPolicy.Target target = mPolicy.getTargetAtLocation(x, y);
if (mCurrentTarget != target) {
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_DRAG_AND_DROP, "Current target: %s", target);
if (target == null) {
- // Animating to no target
- animateSplitContainers(false, null /* animCompleteCallback */);
- if (enableFlexibleSplit()) {
- animateHighlight(target);
- }
+ animateToNoTarget();
} else if (mCurrentTarget == null) {
if (mPolicy.getNumTargets() == 1) {
animateFullscreenContainer(true);
@@ -565,6 +603,51 @@ public class DragLayout extends LinearLayout
mLastPosition.set(x, y);
}
+ private boolean interceptBubbleBarEvent(int x, int y) {
+ BubbleBarLocation bubbleBarLocation = getBubbleBarLocation(x, y);
+ boolean isOverTheBubbleBar = bubbleBarLocation != null;
+ if (mCurrentBubbleBarTarget != bubbleBarLocation) {
+ ProtoLog.v(ShellProtoLogGroup.WM_SHELL_DRAG_AND_DROP, "Current bubble bar location: %s",
+ isOverTheBubbleBar);
+ mCurrentBubbleBarTarget = bubbleBarLocation;
+ if (isOverTheBubbleBar) {
+ mBubbleBarDragListener.onDragItemOverBubbleBarDragZone(bubbleBarLocation);
+ if (mCurrentTarget != null) {
+ animateToNoTarget();
+ mCurrentTarget = null;
+ }
+ } else {
+ mBubbleBarDragListener.onItemDraggedOutsideBubbleBarDropZone();
+ }
+ //TODO(b/388894910): handle accessibility
+ }
+ return isOverTheBubbleBar;
+ }
+
+ @Nullable
+ private BubbleBarLocation getBubbleBarLocation(int x, int y) {
+ Intent appData = mSession.appData;
+ if (appData == null || appData.getExtra(Intent.EXTRA_INTENT) == null
+ || appData.getExtra(Intent.EXTRA_USER) == null) {
+ // there is no app data, so drop event over the bubble bar can not be handled
+ return null;
+ }
+ for (BubbleBarLocation location : mBubbleBarLocations.keySet()) {
+ if (mBubbleBarLocations.get(location).contains(x, y)) {
+ return location;
+ }
+ }
+ return null;
+ }
+
+ private void animateToNoTarget() {
+ // Animating to no target
+ animateSplitContainers(false, null /* animCompleteCallback */);
+ if (enableFlexibleSplit()) {
+ animateHighlight(null);
+ }
+ }
+
/**
* Hides the drag layout and animates out the visible drop targets.
*/
@@ -596,11 +679,19 @@ public class DragLayout extends LinearLayout
*/
public boolean drop(DragEvent event, @NonNull SurfaceControl dragSurface,
@Nullable WindowContainerToken hideTaskToken, Runnable dropCompleteCallback) {
- final boolean handledDrop = mCurrentTarget != null;
+ final boolean handledDrop = mCurrentTarget != null || mCurrentBubbleBarTarget != null;
mHasDropped = true;
-
- // Process the drop
- mPolicy.onDropped(mCurrentTarget, hideTaskToken);
+ Intent appData = mSession.appData;
+
+ // Process the drop exclusive by DropTarget OR by the BubbleBar
+ if (mCurrentTarget != null) {
+ mPolicy.onDropped(mCurrentTarget, hideTaskToken);
+ } else if (appData != null && mCurrentBubbleBarTarget != null) {
+ Intent appIntent = (Intent) appData.getExtra(Intent.EXTRA_INTENT);
+ UserHandle user = (UserHandle) appData.getExtra(Intent.EXTRA_USER);
+ mBubbleBarDragListener.onItemDroppedOverBubbleBarDragZone(mCurrentBubbleBarTarget,
+ appIntent, user);
+ }
// Start animating the drop UI out with the drag surface
hide(event, dropCompleteCallback);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionHandler.java
index 52b6c62b0721..31715f0444a9 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionHandler.java
@@ -175,7 +175,9 @@ public class FreeformTaskTransitionHandler
@Override
public void mergeAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
- @NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget,
+ @NonNull SurfaceControl.Transaction startT,
+ @NonNull SurfaceControl.Transaction finishT,
+ @NonNull IBinder mergeTarget,
@NonNull Transitions.TransitionFinishCallback finishCallback) {
ArrayList<Animator> animations = mAnimations.get(mergeTarget);
if (animations == null) return;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionObserver.java b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionObserver.java
index b6d19b657705..8059b94685ba 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionObserver.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionObserver.java
@@ -21,13 +21,13 @@ import android.content.Context;
import android.os.IBinder;
import android.view.SurfaceControl;
import android.view.WindowManager;
+import android.window.DesktopModeFlags;
import android.window.TransitionInfo;
import android.window.WindowContainerToken;
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
-import com.android.window.flags.Flags;
import com.android.wm.shell.desktopmode.DesktopImmersiveController;
import com.android.wm.shell.sysui.ShellInit;
import com.android.wm.shell.transition.FocusTransitionObserver;
@@ -85,7 +85,7 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs
@NonNull TransitionInfo info,
@NonNull SurfaceControl.Transaction startT,
@NonNull SurfaceControl.Transaction finishT) {
- if (Flags.enableFullyImmersiveInDesktop()) {
+ if (DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue()) {
// TODO(b/367268953): Remove when DesktopTaskListener is introduced and the repository
// is updated from there **before** the |mWindowDecorViewModel| methods are invoked.
// Otherwise window decoration relayout won't run with the immersive state up to date.
@@ -191,7 +191,7 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs
@Override
public void onTransitionStarting(@NonNull IBinder transition) {
- if (Flags.enableFullyImmersiveInDesktop()) {
+ if (DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue()) {
// TODO(b/367268953): Remove when DesktopTaskListener is introduced.
mDesktopImmersiveController.ifPresent(h -> h.onTransitionStarting(transition));
}
@@ -199,7 +199,7 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs
@Override
public void onTransitionMerged(@NonNull IBinder merged, @NonNull IBinder playing) {
- if (Flags.enableFullyImmersiveInDesktop()) {
+ if (DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue()) {
// TODO(b/367268953): Remove when DesktopTaskListener is introduced.
mDesktopImmersiveController.ifPresent(h -> h.onTransitionMerged(merged, playing));
}
@@ -224,7 +224,7 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs
@Override
public void onTransitionFinished(@NonNull IBinder transition, boolean aborted) {
- if (Flags.enableFullyImmersiveInDesktop()) {
+ if (DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue()) {
// TODO(b/367268953): Remove when DesktopTaskListener is introduced.
mDesktopImmersiveController.ifPresent(h -> h.onTransitionFinished(transition, aborted));
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/OWNERS b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/OWNERS
index 83b5bf658459..44d46eea9c55 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/OWNERS
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/OWNERS
@@ -4,7 +4,6 @@ jorgegil@google.com
madym@google.com
nmusgrave@google.com
pbdr@google.com
-tkachenkoi@google.com
vaniadesmonda@google.com
pragyabajoria@google.com
uysalorhan@google.com
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/fullscreen/FullscreenTaskListener.java b/libs/WindowManager/Shell/src/com/android/wm/shell/fullscreen/FullscreenTaskListener.java
index d2ceb67030fc..ef216b1ae987 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/fullscreen/FullscreenTaskListener.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/fullscreen/FullscreenTaskListener.java
@@ -30,6 +30,8 @@ import androidx.annotation.NonNull;
import com.android.internal.protolog.ProtoLog;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.common.SyncTransactionQueue;
+import com.android.wm.shell.desktopmode.DesktopWallpaperActivity;
+import com.android.wm.shell.desktopmode.desktopwallpaperactivity.DesktopWallpaperActivityTokenProvider;
import com.android.wm.shell.protolog.ShellProtoLogGroup;
import com.android.wm.shell.recents.RecentTasksController;
import com.android.wm.shell.sysui.ShellInit;
@@ -57,23 +59,30 @@ public class FullscreenTaskListener implements ShellTaskOrganizer.TaskListener {
private final SyncTransactionQueue mSyncQueue;
private final Optional<RecentTasksController> mRecentTasksOptional;
private final Optional<WindowDecorViewModel> mWindowDecorViewModelOptional;
+ private final Optional<DesktopWallpaperActivityTokenProvider>
+ mDesktopWallpaperActivityTokenProviderOptional;
+
/**
* This constructor is used by downstream products.
*/
public FullscreenTaskListener(SyncTransactionQueue syncQueue) {
this(null /* shellInit */, null /* shellTaskOrganizer */, syncQueue, Optional.empty(),
- Optional.empty());
+ Optional.empty(), Optional.empty());
}
public FullscreenTaskListener(ShellInit shellInit,
ShellTaskOrganizer shellTaskOrganizer,
SyncTransactionQueue syncQueue,
Optional<RecentTasksController> recentTasksOptional,
- Optional<WindowDecorViewModel> windowDecorViewModelOptional) {
+ Optional<WindowDecorViewModel> windowDecorViewModelOptional,
+ Optional<DesktopWallpaperActivityTokenProvider>
+ desktopWallpaperActivityTokenProviderOptional) {
mShellTaskOrganizer = shellTaskOrganizer;
mSyncQueue = syncQueue;
mRecentTasksOptional = recentTasksOptional;
mWindowDecorViewModelOptional = windowDecorViewModelOptional;
+ mDesktopWallpaperActivityTokenProviderOptional =
+ desktopWallpaperActivityTokenProviderOptional;
// Note: Some derivative FullscreenTaskListener implementations do not use ShellInit
if (shellInit != null) {
shellInit.addInitCallback(this::onInit, this);
@@ -162,6 +171,12 @@ public class FullscreenTaskListener implements ShellTaskOrganizer.TaskListener {
taskInfo.taskId);
mTasks.remove(taskInfo.taskId);
mWindowDecorViewModelOptional.ifPresent(v -> v.onTaskVanished(taskInfo));
+ mDesktopWallpaperActivityTokenProviderOptional.ifPresent(
+ provider -> {
+ if (DesktopWallpaperActivity.isWallpaperTask(taskInfo)) {
+ provider.removeToken(taskInfo.getToken());
+ }
+ });
if (Transitions.ENABLE_SHELL_TRANSITIONS) return;
if (mWindowDecorViewModelOptional.isPresent()) {
mWindowDecorViewModelOptional.get().destroyWindowDecoration(taskInfo);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitionHandler.java
index f8e6285b0493..d666126b91ba 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitionHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitionHandler.java
@@ -277,7 +277,8 @@ public class KeyguardTransitionHandler
@Override
public void mergeAnimation(@NonNull IBinder nextTransition, @NonNull TransitionInfo nextInfo,
- @NonNull SurfaceControl.Transaction nextT, @NonNull IBinder currentTransition,
+ @NonNull SurfaceControl.Transaction nextT, @NonNull SurfaceControl.Transaction finishT,
+ @NonNull IBinder currentTransition,
@NonNull TransitionFinishCallback nextFinishCallback) {
final StartedTransition playing = mStartedTransitions.get(currentTransition);
if (playing == null) {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java
index 2f3c15208621..f0e6ae45c389 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java
@@ -372,7 +372,9 @@ public class PipTransition extends PipTransitionController {
@Override
public void mergeAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
- @NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget,
+ @NonNull SurfaceControl.Transaction startT,
+ @NonNull SurfaceControl.Transaction finishT,
+ @NonNull IBinder mergeTarget,
@NonNull Transitions.TransitionFinishCallback finishCallback) {
end();
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java
index f4c2a33079ba..ac94dac0e6a3 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java
@@ -909,10 +909,6 @@ public class PipTouchHandler {
&& mMenuState != MENU_STATE_FULL) {
// If using pinch to zoom, double-tap functions as resizing between max/min size
if (mPipResizeGestureHandler.isUsingPinchToZoom()) {
- final boolean toExpand = mPipBoundsState.getBounds().width()
- < mPipBoundsState.getMaxSize().x
- && mPipBoundsState.getBounds().height()
- < mPipBoundsState.getMaxSize().y;
if (mMenuController.isMenuVisible()) {
mMenuController.hideMenu(ANIM_TYPE_NONE, false /* resize */);
}
@@ -931,6 +927,7 @@ public class PipTouchHandler {
} else {
animateToUnexpandedState(getUserResizeBounds());
}
+ mPipBoundsState.setHasUserResizedPip(true);
} else {
// Expand to fullscreen if this is a double tap
// the PiP should be frozen until the transition ends
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuController.java
index e74870d4d139..5894ea8d0b5c 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuController.java
@@ -32,6 +32,7 @@ import android.view.View;
import android.view.ViewRootImpl;
import android.view.WindowManager;
import android.view.WindowManagerGlobal;
+import android.view.accessibility.AccessibilityManager;
import android.window.SurfaceSyncGroup;
import androidx.annotation.Nullable;
@@ -63,6 +64,8 @@ public class TvPipMenuController implements PipMenuController, TvPipMenuView.Lis
private TvPipMenuView mPipMenuView;
private TvPipBackgroundView mPipBackgroundView;
+ private final AccessibilityManager mA11yManager;
+
private boolean mIsReloading;
private static final int PIP_MENU_FORCE_CLOSE_DELAY_MS = 10_000;
private final Runnable mClosePipMenuRunnable = this::closeMenu;
@@ -107,6 +110,8 @@ public class TvPipMenuController implements PipMenuController, TvPipMenuView.Lis
mSystemWindows = systemWindows;
mMainHandler = mainHandler;
+ mA11yManager = context.getSystemService(AccessibilityManager.class);
+
// We need to "close" the menu the platform call for all the system dialogs to close (for
// example, on the Home button press).
final BroadcastReceiver closeSystemDialogsBroadcastReceiver = new BroadcastReceiver() {
@@ -499,7 +504,9 @@ public class TvPipMenuController implements PipMenuController, TvPipMenuView.Lis
switchToMenuMode(menuMode);
} else {
if (isMenuOpen(menuMode)) {
- mMainHandler.postDelayed(mClosePipMenuRunnable, PIP_MENU_FORCE_CLOSE_DELAY_MS);
+ if (!mA11yManager.isEnabled()) {
+ mMainHandler.postDelayed(mClosePipMenuRunnable, PIP_MENU_FORCE_CLOSE_DELAY_MS);
+ }
mMenuModeOnFocus = menuMode;
}
// Send a request to gain window focus if the menu is open, or lose window focus
@@ -594,8 +601,10 @@ public class TvPipMenuController implements PipMenuController, TvPipMenuView.Lis
public void onUserInteracting() {
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
"%s: onUserInteracting - mCurrentMenuMode=%s", TAG, getMenuModeString());
- mMainHandler.removeCallbacks(mClosePipMenuRunnable);
- mMainHandler.postDelayed(mClosePipMenuRunnable, PIP_MENU_FORCE_CLOSE_DELAY_MS);
+ if (mMainHandler.hasCallbacks(mClosePipMenuRunnable)) {
+ mMainHandler.removeCallbacks(mClosePipMenuRunnable);
+ mMainHandler.postDelayed(mClosePipMenuRunnable, PIP_MENU_FORCE_CLOSE_DELAY_MS);
+ }
}
@Override
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipTransition.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipTransition.java
index d3ae411469cc..0fa6a116350e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipTransition.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipTransition.java
@@ -653,7 +653,9 @@ public class TvPipTransition extends PipTransitionController {
@Override
public void mergeAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
- @NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget,
+ @NonNull SurfaceControl.Transaction startT,
+ @NonNull SurfaceControl.Transaction finishT,
+ @NonNull IBinder mergeTarget,
@NonNull Transitions.TransitionFinishCallback finishCallback) {
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE, "%s: merge animation", TAG);
if (mCurrentAnimator != null && mCurrentAnimator.isRunning()) {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/PipSurfaceTransactionHelper.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/PipSurfaceTransactionHelper.java
index 026482004d51..c4d065f158a4 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/PipSurfaceTransactionHelper.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/PipSurfaceTransactionHelper.java
@@ -19,7 +19,6 @@ package com.android.wm.shell.pip2;
import android.content.Context;
import android.graphics.Matrix;
import android.graphics.Rect;
-import android.graphics.RectF;
import android.view.Choreographer;
import android.view.SurfaceControl;
@@ -29,99 +28,19 @@ import com.android.wm.shell.R;
* Abstracts the common operations on {@link SurfaceControl.Transaction} for PiP transition.
*/
public class PipSurfaceTransactionHelper {
- /** for {@link #scale(SurfaceControl.Transaction, SurfaceControl, Rect, Rect)} operation */
private final Matrix mTmpTransform = new Matrix();
private final float[] mTmpFloat9 = new float[9];
- private final RectF mTmpSourceRectF = new RectF();
- private final RectF mTmpDestinationRectF = new RectF();
private final Rect mTmpDestinationRect = new Rect();
- private int mCornerRadius;
- private int mShadowRadius;
+ private final int mCornerRadius;
+ private final int mShadowRadius;
public PipSurfaceTransactionHelper(Context context) {
- onDensityOrFontScaleChanged(context);
- }
-
- /**
- * Called when display size or font size of settings changed
- *
- * @param context the current context
- */
- public void onDensityOrFontScaleChanged(Context context) {
mCornerRadius = context.getResources().getDimensionPixelSize(R.dimen.pip_corner_radius);
mShadowRadius = context.getResources().getDimensionPixelSize(R.dimen.pip_shadow_radius);
}
/**
- * Operates the alpha on a given transaction and leash
- * @return same {@link PipSurfaceTransactionHelper} instance for method chaining
- */
- public PipSurfaceTransactionHelper alpha(SurfaceControl.Transaction tx, SurfaceControl leash,
- float alpha) {
- tx.setAlpha(leash, alpha);
- return this;
- }
-
- /**
- * Operates the crop (and position) on a given transaction and leash
- * @return same {@link PipSurfaceTransactionHelper} instance for method chaining
- */
- public PipSurfaceTransactionHelper crop(SurfaceControl.Transaction tx, SurfaceControl leash,
- Rect destinationBounds) {
- tx.setWindowCrop(leash, destinationBounds.width(), destinationBounds.height())
- .setPosition(leash, destinationBounds.left, destinationBounds.top);
- return this;
- }
-
- /**
- * Operates the scale (setMatrix) on a given transaction and leash
- * @return same {@link PipSurfaceTransactionHelper} instance for method chaining
- */
- public PipSurfaceTransactionHelper scale(SurfaceControl.Transaction tx, SurfaceControl leash,
- Rect sourceBounds, Rect destinationBounds) {
- mTmpDestinationRectF.set(destinationBounds);
- return scale(tx, leash, sourceBounds, mTmpDestinationRectF, 0 /* degrees */);
- }
-
- /**
- * Operates the scale (setMatrix) on a given transaction and leash
- * @return same {@link PipSurfaceTransactionHelper} instance for method chaining
- */
- public PipSurfaceTransactionHelper scale(SurfaceControl.Transaction tx, SurfaceControl leash,
- Rect sourceBounds, RectF destinationBounds) {
- return scale(tx, leash, sourceBounds, destinationBounds, 0 /* degrees */);
- }
-
- /**
- * Operates the scale (setMatrix) on a given transaction and leash
- * @return same {@link PipSurfaceTransactionHelper} instance for method chaining
- */
- public PipSurfaceTransactionHelper scale(SurfaceControl.Transaction tx, SurfaceControl leash,
- Rect sourceBounds, Rect destinationBounds, float degrees) {
- mTmpDestinationRectF.set(destinationBounds);
- return scale(tx, leash, sourceBounds, mTmpDestinationRectF, degrees);
- }
-
- /**
- * Operates the scale (setMatrix) on a given transaction and leash, along with a rotation.
- * @return same {@link PipSurfaceTransactionHelper} instance for method chaining
- */
- public PipSurfaceTransactionHelper scale(SurfaceControl.Transaction tx, SurfaceControl leash,
- Rect sourceBounds, RectF destinationBounds, float degrees) {
- mTmpSourceRectF.set(sourceBounds);
- // We want the matrix to position the surface relative to the screen coordinates so offset
- // the source to 0,0
- mTmpSourceRectF.offsetTo(0, 0);
- mTmpDestinationRectF.set(destinationBounds);
- mTmpTransform.setRectToRect(mTmpSourceRectF, mTmpDestinationRectF, Matrix.ScaleToFit.FILL);
- mTmpTransform.postRotate(degrees,
- mTmpDestinationRectF.centerX(), mTmpDestinationRectF.centerY());
- tx.setMatrix(leash, mTmpTransform, mTmpFloat9);
- return this;
- }
-
- /**
* Operates the scale (setMatrix) on a given transaction and leash
* @return same {@link PipSurfaceTransactionHelper} instance for method chaining
*/
@@ -205,19 +124,6 @@ public class PipSurfaceTransactionHelper {
}
/**
- * Resets the scale (setMatrix) on a given transaction and leash if there's any
- *
- * @return same {@link PipSurfaceTransactionHelper} instance for method chaining
- */
- public PipSurfaceTransactionHelper resetScale(SurfaceControl.Transaction tx,
- SurfaceControl leash,
- Rect destinationBounds) {
- tx.setMatrix(leash, Matrix.IDENTITY_MATRIX, mTmpFloat9)
- .setPosition(leash, destinationBounds.left, destinationBounds.top);
- return this;
- }
-
- /**
* Operates the round corner radius on a given transaction and leash
* @return same {@link PipSurfaceTransactionHelper} instance for method chaining
*/
@@ -228,18 +134,6 @@ public class PipSurfaceTransactionHelper {
}
/**
- * Operates the round corner radius on a given transaction and leash, scaled by bounds
- * @return same {@link PipSurfaceTransactionHelper} instance for method chaining
- */
- public PipSurfaceTransactionHelper round(SurfaceControl.Transaction tx, SurfaceControl leash,
- Rect fromBounds, Rect toBounds) {
- final float scale = (float) (Math.hypot(fromBounds.width(), fromBounds.height())
- / Math.hypot(toBounds.width(), toBounds.height()));
- tx.setCornerRadius(leash, mCornerRadius * scale);
- return this;
- }
-
- /**
* Operates the shadow radius on a given transaction and leash
* @return same {@link PipSurfaceTransactionHelper} instance for method chaining
*/
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java
index 21b0820f523a..e17587ff18bc 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java
@@ -16,14 +16,10 @@
package com.android.wm.shell.pip2.phone;
-import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
-import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
-
import android.content.Context;
import android.graphics.Matrix;
import android.graphics.Rect;
import android.view.SurfaceControl;
-import android.window.DisplayAreaInfo;
import android.window.WindowContainerToken;
import android.window.WindowContainerTransaction;
@@ -32,20 +28,14 @@ import androidx.annotation.Nullable;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.protolog.ProtoLog;
-import com.android.window.flags.Flags;
-import com.android.wm.shell.RootTaskDisplayAreaOrganizer;
import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.pip.PipBoundsState;
-import com.android.wm.shell.desktopmode.DesktopUserRepositories;
-import com.android.wm.shell.desktopmode.desktopwallpaperactivity.DesktopWallpaperActivityTokenProvider;
+import com.android.wm.shell.common.pip.PipDesktopState;
import com.android.wm.shell.pip.PipTransitionController;
import com.android.wm.shell.pip2.PipSurfaceTransactionHelper;
import com.android.wm.shell.pip2.animation.PipAlphaAnimator;
import com.android.wm.shell.protolog.ShellProtoLogGroup;
-import java.util.Objects;
-import java.util.Optional;
-
/**
* Scheduler for Shell initiated PiP transitions and animations.
*/
@@ -56,10 +46,7 @@ public class PipScheduler {
private final PipBoundsState mPipBoundsState;
private final ShellExecutor mMainExecutor;
private final PipTransitionState mPipTransitionState;
- private final Optional<DesktopUserRepositories> mDesktopUserRepositoriesOptional;
- private final Optional<DesktopWallpaperActivityTokenProvider>
- mDesktopWallpaperActivityTokenProviderOptional;
- private final RootTaskDisplayAreaOrganizer mRootTaskDisplayAreaOrganizer;
+ private final PipDesktopState mPipDesktopState;
private PipTransitionController mPipTransitionController;
private PipSurfaceTransactionHelper.SurfaceControlTransactionFactory
mSurfaceControlTransactionFactory;
@@ -72,18 +59,12 @@ public class PipScheduler {
PipBoundsState pipBoundsState,
ShellExecutor mainExecutor,
PipTransitionState pipTransitionState,
- Optional<DesktopUserRepositories> desktopUserRepositoriesOptional,
- Optional<DesktopWallpaperActivityTokenProvider>
- desktopWallpaperActivityTokenProviderOptional,
- RootTaskDisplayAreaOrganizer rootTaskDisplayAreaOrganizer) {
+ PipDesktopState pipDesktopState) {
mContext = context;
mPipBoundsState = pipBoundsState;
mMainExecutor = mainExecutor;
mPipTransitionState = pipTransitionState;
- mDesktopUserRepositoriesOptional = desktopUserRepositoriesOptional;
- mDesktopWallpaperActivityTokenProviderOptional =
- desktopWallpaperActivityTokenProviderOptional;
- mRootTaskDisplayAreaOrganizer = rootTaskDisplayAreaOrganizer;
+ mPipDesktopState = pipDesktopState;
mSurfaceControlTransactionFactory =
new PipSurfaceTransactionHelper.VsyncSurfaceControlTransactionFactory();
@@ -105,7 +86,7 @@ public class PipScheduler {
wct.setBounds(pipTaskToken, null);
// if we are hitting a multi-activity case
// windowing mode change will reparent to original host task
- wct.setWindowingMode(pipTaskToken, getOutPipWindowingMode());
+ wct.setWindowingMode(pipTaskToken, mPipDesktopState.getOutPipWindowingMode());
return wct;
}
@@ -235,55 +216,6 @@ public class PipScheduler {
maybeUpdateMovementBounds();
}
- /** Returns whether the display is in freeform windowing mode. */
- private boolean isDisplayInFreeform() {
- final DisplayAreaInfo tdaInfo = mRootTaskDisplayAreaOrganizer.getDisplayAreaInfo(
- Objects.requireNonNull(mPipTransitionState.getPipTaskInfo()).displayId);
- if (tdaInfo != null) {
- return tdaInfo.configuration.windowConfiguration.getWindowingMode()
- == WINDOWING_MODE_FREEFORM;
- }
- return false;
- }
-
- /** Returns whether PiP is exiting while we're in desktop mode. */
- private boolean isPipExitingToDesktopMode() {
- // Early return if PiP in Desktop Windowing is not supported.
- if (!Flags.enableDesktopWindowingPip() || mDesktopUserRepositoriesOptional.isEmpty()
- || mDesktopWallpaperActivityTokenProviderOptional.isEmpty()) {
- return false;
- }
- final int displayId = Objects.requireNonNull(
- mPipTransitionState.getPipTaskInfo()).displayId;
- return mDesktopUserRepositoriesOptional.get().getCurrent().getVisibleTaskCount(displayId)
- > 0
- || mDesktopWallpaperActivityTokenProviderOptional.get().isWallpaperActivityVisible(
- displayId)
- || isDisplayInFreeform();
- }
-
- /**
- * The windowing mode to restore to when resizing out of PIP direction. Defaults to undefined
- * and can be overridden to restore to an alternate windowing mode.
- */
- private int getOutPipWindowingMode() {
- // If we are exiting PiP while the device is in Desktop mode (the task should expand to
- // freeform windowing mode):
- // 1) If the display windowing mode is freeform, set windowing mode to undefined so it will
- // resolve the windowing mode to the display's windowing mode.
- // 2) If the display windowing mode is not freeform, set windowing mode to freeform.
- if (isPipExitingToDesktopMode()) {
- if (isDisplayInFreeform()) {
- return WINDOWING_MODE_UNDEFINED;
- } else {
- return WINDOWING_MODE_FREEFORM;
- }
- }
-
- // By default, or if the task is going to fullscreen, reset the windowing mode to undefined.
- return WINDOWING_MODE_UNDEFINED;
- }
-
@VisibleForTesting
void setSurfaceControlTransactionFactory(
@NonNull PipSurfaceTransactionHelper.SurfaceControlTransactionFactory factory) {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTaskListener.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTaskListener.java
index d735375b0fc9..dbcbf3663827 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTaskListener.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTaskListener.java
@@ -132,8 +132,9 @@ public class PipTaskListener implements ShellTaskOrganizer.TaskListener,
"onTaskInfoChanged: %s, state=%s oldParams=%s newParams=%s",
taskInfo.topActivity, mPipTransitionState, mPictureInPictureParams, params);
setPictureInPictureParams(params);
+ // Note: params is nullable while mPictureInPictureParams is never null
float newAspectRatio = mPictureInPictureParams.getAspectRatioFloat();
- if (params.hasSetAspectRatio()
+ if (mPictureInPictureParams.hasSetAspectRatio()
&& mPipBoundsAlgorithm.isValidPictureInPictureAspectRatio(newAspectRatio)
&& PipUtils.aspectRatioChanged(newAspectRatio, mPipBoundsState.getAspectRatio())) {
mPipTransitionState.setOnIdlePipTransitionStateRunnable(() -> {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTouchHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTouchHandler.java
index 35cd1a2e681f..e405f3339054 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTouchHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTouchHandler.java
@@ -987,6 +987,7 @@ public class PipTouchHandler implements PipTransitionState.PipTransitionStateCha
} else {
animateToUnexpandedState(getUserResizeBounds());
}
+ mPipBoundsState.setHasUserResizedPip(true);
} else {
// Expand to fullscreen if this is a double tap
// the PiP should be frozen until the transition ends
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java
index 229962488acf..bb9b479524e5 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java
@@ -56,19 +56,16 @@ import android.window.WindowContainerTransaction;
import androidx.annotation.Nullable;
import com.android.internal.util.Preconditions;
-import com.android.window.flags.Flags;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.common.ComponentUtils;
import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.DisplayLayout;
import com.android.wm.shell.common.pip.PipBoundsAlgorithm;
import com.android.wm.shell.common.pip.PipBoundsState;
+import com.android.wm.shell.common.pip.PipDesktopState;
import com.android.wm.shell.common.pip.PipDisplayLayoutState;
import com.android.wm.shell.common.pip.PipMenuController;
import com.android.wm.shell.common.pip.PipUtils;
-import com.android.wm.shell.desktopmode.DesktopRepository;
-import com.android.wm.shell.desktopmode.DesktopUserRepositories;
-import com.android.wm.shell.desktopmode.desktopwallpaperactivity.DesktopWallpaperActivityTokenProvider;
import com.android.wm.shell.pip.PipTransitionController;
import com.android.wm.shell.pip2.PipSurfaceTransactionHelper;
import com.android.wm.shell.pip2.animation.PipAlphaAnimator;
@@ -79,8 +76,6 @@ import com.android.wm.shell.shared.pip.PipContentOverlay;
import com.android.wm.shell.sysui.ShellInit;
import com.android.wm.shell.transition.Transitions;
-import java.util.Optional;
-
/**
* Implementation of transitions for PiP on phone.
*/
@@ -117,9 +112,7 @@ public class PipTransition extends PipTransitionController implements
private final PipDisplayLayoutState mPipDisplayLayoutState;
private final DisplayController mDisplayController;
private final PipSurfaceTransactionHelper mPipSurfaceTransactionHelper;
- private final Optional<DesktopUserRepositories> mDesktopUserRepositoriesOptional;
- private final Optional<DesktopWallpaperActivityTokenProvider>
- mDesktopWallpaperActivityTokenProviderOptional;
+ private final PipDesktopState mPipDesktopState;
//
// Transition caches
@@ -159,9 +152,7 @@ public class PipTransition extends PipTransitionController implements
PipDisplayLayoutState pipDisplayLayoutState,
PipUiStateChangeController pipUiStateChangeController,
DisplayController displayController,
- Optional<DesktopUserRepositories> desktopUserRepositoriesOptional,
- Optional<DesktopWallpaperActivityTokenProvider>
- desktopWallpaperActivityTokenProviderOptional) {
+ PipDesktopState pipDesktopState) {
super(shellInit, shellTaskOrganizer, transitions, pipBoundsState, pipMenuController,
pipBoundsAlgorithm);
@@ -174,9 +165,7 @@ public class PipTransition extends PipTransitionController implements
mPipDisplayLayoutState = pipDisplayLayoutState;
mDisplayController = displayController;
mPipSurfaceTransactionHelper = new PipSurfaceTransactionHelper(mContext);
- mDesktopUserRepositoriesOptional = desktopUserRepositoriesOptional;
- mDesktopWallpaperActivityTokenProviderOptional =
- desktopWallpaperActivityTokenProviderOptional;
+ mPipDesktopState = pipDesktopState;
}
@Override
@@ -247,7 +236,9 @@ public class PipTransition extends PipTransitionController implements
@Override
public void mergeAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
- @NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget,
+ @NonNull SurfaceControl.Transaction startT,
+ @NonNull SurfaceControl.Transaction finishT,
+ @NonNull IBinder mergeTarget,
@NonNull Transitions.TransitionFinishCallback finishCallback) {
// Just jump-cut the current animation if any, but do not merge.
if (info.getType() == TRANSIT_EXIT_PIP) {
@@ -800,7 +791,7 @@ public class PipTransition extends PipTransitionController implements
&& getFixedRotationDelta(info, pipTaskChange) == ROTATION_90) {
adjustedSourceRectHint.offset(cutoutInsets.left, cutoutInsets.top);
}
- if (Flags.enableDesktopWindowingPip()) {
+ if (mPipDesktopState.isDesktopWindowingPipEnabled()) {
adjustedSourceRectHint.offset(-pipActivityChange.getStartAbsBounds().left,
-pipActivityChange.getStartAbsBounds().top);
}
@@ -860,7 +851,7 @@ public class PipTransition extends PipTransitionController implements
// If PiP is enabled on Connected Displays, update PipDisplayLayoutState to have the correct
// display info that PiP is entering in.
- if (Flags.enableConnectedDisplaysPip()) {
+ if (mPipDesktopState.isConnectedDisplaysPipEnabled()) {
final DisplayLayout displayLayout = mDisplayController.getDisplayLayout(
pipTask.displayId);
if (displayLayout != null) {
@@ -908,12 +899,7 @@ public class PipTransition extends PipTransitionController implements
// Since opening a new task while in Desktop Mode always first open in Fullscreen
// until DesktopMode Shell code resolves it to Freeform, PipTransition will get a
// possibility to handle it also. In this case return false to not have it enter PiP.
- final boolean isInDesktopSession = !mDesktopUserRepositoriesOptional.isEmpty()
- && (mDesktopUserRepositoriesOptional.get().getCurrent().getVisibleTaskCount(
- pipTask.displayId) > 0
- || mDesktopUserRepositoriesOptional.get().getCurrent()
- .isMinimizedPipPresentInDisplay(pipTask.displayId));
- if (isInDesktopSession) {
+ if (mPipDesktopState.isPipEnteringInDesktopMode(pipTask)) {
return false;
}
@@ -1087,26 +1073,13 @@ public class PipTransition extends PipTransitionController implements
"Unexpected bundle for " + mPipTransitionState);
break;
case PipTransitionState.EXITED_PIP:
- final TaskInfo pipTask = mPipTransitionState.getPipTaskInfo();
- final boolean desktopPipEnabled = Flags.enableDesktopWindowingPip()
- && mDesktopUserRepositoriesOptional.isPresent()
- && mDesktopWallpaperActivityTokenProviderOptional.isPresent();
- if (desktopPipEnabled && pipTask != null) {
- final DesktopRepository desktopRepository =
- mDesktopUserRepositoriesOptional.get().getCurrent();
- final boolean wallpaperIsVisible =
- mDesktopWallpaperActivityTokenProviderOptional.get()
- .isWallpaperActivityVisible(pipTask.displayId);
- if (desktopRepository.getVisibleTaskCount(pipTask.displayId) == 0
- && wallpaperIsVisible) {
- mTransitions.startTransition(
- TRANSIT_TO_BACK,
- new WindowContainerTransaction().reorder(
- mDesktopWallpaperActivityTokenProviderOptional.get()
- .getToken(pipTask.displayId), /* onTop= */ false),
- null
- );
- }
+ if (mPipDesktopState.shouldExitPipExitDesktopMode()) {
+ mTransitions.startTransition(
+ TRANSIT_TO_BACK,
+ mPipDesktopState.getWallpaperActivityTokenWct(
+ mPipTransitionState.getPipTaskInfo().getDisplayId()),
+ null /* firstHandler */
+ );
}
mPipTransitionState.setPinnedTaskLeash(null);
mPipTransitionState.setPipTaskInfo(null);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java
index 55133780f517..8ad2e1d3c7c9 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java
@@ -307,7 +307,9 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler,
@Override
public void mergeAnimation(IBinder transition, TransitionInfo info,
- SurfaceControl.Transaction t, IBinder mergeTarget,
+ @NonNull SurfaceControl.Transaction startT,
+ @NonNull SurfaceControl.Transaction finishT,
+ IBinder mergeTarget,
Transitions.TransitionFinishCallback finishCallback) {
final RecentsController controller = findController(mergeTarget);
if (controller == null) {
@@ -315,7 +317,7 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler,
"RecentsTransitionHandler.mergeAnimation: no controller found");
return;
}
- controller.merge(info, t, mergeTarget, finishCallback);
+ controller.merge(info, startT, mergeTarget, finishCallback);
}
@Override
diff --git a/packages/CrashRecovery/framework/java/android/service/watchdog/IExplicitHealthCheckService.aidl b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitMultiDisplayProvider.java
index 90965092ac2b..d2e57e51762b 100644
--- a/packages/CrashRecovery/framework/java/android/service/watchdog/IExplicitHealthCheckService.aidl
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitMultiDisplayProvider.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2019 The Android Open Source Project
+ * Copyright (C) 2025 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,19 +14,16 @@
* limitations under the License.
*/
-package android.service.watchdog;
+package com.android.wm.shell.splitscreen;
-import android.os.RemoteCallback;
+import android.window.WindowContainerToken;
-/**
- * @hide
- */
-@PermissionManuallyEnforced
-oneway interface IExplicitHealthCheckService
-{
- void setCallback(in @nullable RemoteCallback callback);
- void request(String packageName);
- void cancel(String packageName);
- void getSupportedPackages(in RemoteCallback callback);
- void getRequestedPackages(in RemoteCallback callback);
+public interface SplitMultiDisplayProvider {
+ /**
+ * Returns the WindowContainerToken for the root of the given display ID.
+ *
+ * @param displayId The ID of the display.
+ * @return The {@link WindowContainerToken} associated with the display's root task.
+ */
+ WindowContainerToken getDisplayRootForDisplayId(int displayId);
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java
index ae0159263364..e9f8a4a86d27 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java
@@ -321,6 +321,10 @@ public class SplitScreenController implements SplitDragPolicy.Starter,
return mStageCoordinator;
}
+ public SplitMultiDisplayProvider getMultiDisplayProvider() {
+ return mStageCoordinator;
+ }
+
@Nullable
public ActivityManager.RunningTaskInfo getTaskInfo(@SplitPosition int splitPosition) {
if (!isSplitScreenVisible() || splitPosition == SPLIT_POSITION_UNDEFINED) {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java
index 3091be574a53..fed336b17f19 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java
@@ -461,12 +461,14 @@ class SplitScreenTransitions {
return transition;
}
- void mergeAnimation(IBinder transition, TransitionInfo info, SurfaceControl.Transaction t,
+ void mergeAnimation(IBinder transition, TransitionInfo info,
+ SurfaceControl.Transaction startT, SurfaceControl.Transaction finishT,
IBinder mergeTarget, Transitions.TransitionFinishCallback finishCallback) {
if (mergeTarget != mAnimatingTransition) return;
if (mActiveRemoteHandler != null) {
- mActiveRemoteHandler.mergeAnimation(transition, info, t, mergeTarget, finishCallback);
+ mActiveRemoteHandler.mergeAnimation(transition, info, startT,
+ finishT, mergeTarget, finishCallback);
} else {
for (int i = mAnimations.size() - 1; i >= 0; --i) {
final Animator anim = mAnimations.get(i);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
index 2174017996a8..aff21cbe0ae6 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
@@ -34,6 +34,8 @@ import static android.view.WindowManager.TRANSIT_TO_FRONT;
import static android.window.TransitionInfo.FLAG_IS_DISPLAY;
import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_REORDER;
+import static com.android.window.flags.Flags.enableFullScreenWindowOnRemovingSplitScreenStageBugfix;
+import static com.android.window.flags.Flags.enableNonDefaultDisplaySplit;
import static com.android.wm.shell.Flags.enableFlexibleSplit;
import static com.android.wm.shell.Flags.enableFlexibleTwoAppSplit;
import static com.android.wm.shell.common.split.SplitLayout.PARALLAX_ALIGN_CENTER;
@@ -189,7 +191,8 @@ import java.util.function.Predicate;
*/
public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
DisplayController.OnDisplaysChangedListener, Transitions.TransitionHandler,
- ShellTaskOrganizer.TaskListener, StageTaskListener.StageListenerCallbacks {
+ ShellTaskOrganizer.TaskListener, StageTaskListener.StageListenerCallbacks,
+ SplitMultiDisplayProvider {
private static final String TAG = StageCoordinator.class.getSimpleName();
@@ -287,6 +290,16 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
mSplitTransitions.registerSplitAnimListener(listener, executor);
}
+ @Override
+ public WindowContainerToken getDisplayRootForDisplayId(int displayId) {
+ if (displayId == DEFAULT_DISPLAY) {
+ return mRootTaskInfo != null ? mRootTaskInfo.token : null;
+ }
+
+ // TODO(b/393217881): support different root task on external displays.
+ return null; // Return null for unknown display IDs
+ }
+
class SplitRequest {
@SplitPosition
int mActivatePosition;
@@ -896,6 +909,11 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
}
options = options != null ? options : new Bundle();
addActivityOptions(options, null);
+ ActivityManager.RunningTaskInfo taskInfo = mTaskOrganizer.getRunningTaskInfo(taskId);
+ if (enableFullScreenWindowOnRemovingSplitScreenStageBugfix() && taskInfo != null
+ && taskInfo.getWindowingMode() == WINDOWING_MODE_FREEFORM) {
+ prepareTasksForSplitScreen(new int[] {taskId}, wct);
+ }
wct.startTask(taskId, options);
mSplitTransitions.startFullscreenTransition(wct, remoteTransition);
}
@@ -1686,6 +1704,13 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
wct.setWindowingMode(taskInfo.token, targetWindowingMode);
});
}
+ // Reparent root task to default display if non default display split is enabled.
+ if (enableNonDefaultDisplaySplit() && mRootTaskInfo.displayId != DEFAULT_DISPLAY) {
+ DisplayAreaInfo displayAreaInfo = mRootTDAOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY);
+ if (displayAreaInfo != null) {
+ wct.reparent(mRootTaskInfo.token, displayAreaInfo.token, false /* onTop */);
+ }
+ }
deactivateSplit(wct, stageToTop);
mSplitState.exit();
}
@@ -2977,10 +3002,13 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
@Override
public void mergeAnimation(IBinder transition, TransitionInfo info,
- SurfaceControl.Transaction t, IBinder mergeTarget,
+ @NonNull SurfaceControl.Transaction startT,
+ @NonNull SurfaceControl.Transaction finishT,
+ IBinder mergeTarget,
Transitions.TransitionFinishCallback finishCallback) {
ProtoLog.d(WM_SHELL_SPLIT_SCREEN, "mergeAnimation: transition=%d", info.getDebugId());
- mSplitTransitions.mergeAnimation(transition, info, t, mergeTarget, finishCallback);
+ mSplitTransitions.mergeAnimation(transition, info, startT, finishT, mergeTarget,
+ finishCallback);
}
/** Jump the current transition animation to the end. */
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTransitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTransitions.java
index 9af23080351f..a6f872634ee9 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTransitions.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTransitions.java
@@ -52,6 +52,7 @@ import com.android.wm.shell.Flags;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.common.SyncTransactionQueue;
import com.android.wm.shell.shared.TransitionUtil;
+import com.android.wm.shell.shared.bubbles.BubbleAnythingFlagHelper;
import com.android.wm.shell.transition.Transitions;
import java.util.ArrayList;
@@ -571,7 +572,7 @@ public class TaskViewTransitions implements Transitions.TransitionHandler, TaskV
@NonNull SurfaceControl.Transaction startTransaction,
@NonNull SurfaceControl.Transaction finishTransaction,
@NonNull Transitions.TransitionFinishCallback finishCallback) {
- PendingTransition pending = findPending(transition);
+ final PendingTransition pending = findPending(transition);
if (pending != null) {
mPending.remove(pending);
}
@@ -586,10 +587,11 @@ public class TaskViewTransitions implements Transitions.TransitionHandler, TaskV
WindowContainerTransaction wct = null;
for (int i = 0; i < info.getChanges().size(); ++i) {
final TransitionInfo.Change chg = info.getChanges().get(i);
- if (chg.getTaskInfo() == null) continue;
+ final ActivityManager.RunningTaskInfo taskInfo = chg.getTaskInfo();
+ if (taskInfo == null) continue;
if (TransitionUtil.isClosingType(chg.getMode())) {
final boolean isHide = chg.getMode() == TRANSIT_TO_BACK;
- TaskViewTaskController tv = findTaskView(chg.getTaskInfo());
+ TaskViewTaskController tv = findTaskView(taskInfo);
if (tv == null && !isHide) {
// TaskView can be null when closing
changesHandled++;
@@ -599,7 +601,7 @@ public class TaskViewTransitions implements Transitions.TransitionHandler, TaskV
if (pending != null) {
Slog.w(TAG, "Found a non-TaskView task in a TaskView Transition. This "
+ "shouldn't happen, so there may be a visual artifact: "
- + chg.getTaskInfo().taskId);
+ + taskInfo.taskId);
}
continue;
}
@@ -615,40 +617,51 @@ public class TaskViewTransitions implements Transitions.TransitionHandler, TaskV
}
changesHandled++;
} else if (TransitionUtil.isOpeningType(chg.getMode())) {
- final boolean taskIsNew = chg.getMode() == TRANSIT_OPEN;
- final TaskViewTaskController tv;
- if (taskIsNew) {
- if (pending == null
- || !chg.getTaskInfo().containsLaunchCookie(pending.mLaunchCookie)) {
+ boolean isNewInTaskView = false;
+ TaskViewTaskController tv;
+ if (chg.getMode() == TRANSIT_OPEN) {
+ isNewInTaskView = true;
+ if (pending == null || !taskInfo.containsLaunchCookie(pending.mLaunchCookie)) {
Slog.e(TAG, "Found a launching TaskView in the wrong transition. All "
+ "TaskView launches should be initiated by shell and in their "
- + "own transition: " + chg.getTaskInfo().taskId);
+ + "own transition: " + taskInfo.taskId);
continue;
}
stillNeedsMatchingLaunch = false;
tv = pending.mTaskView;
} else {
- tv = findTaskView(chg.getTaskInfo());
- if (tv == null) {
- if (pending != null) {
- Slog.w(TAG, "Found a non-TaskView task in a TaskView Transition. This "
- + "shouldn't happen, so there may be a visual artifact: "
- + chg.getTaskInfo().taskId);
+ tv = findTaskView(taskInfo);
+ if (tv == null && pending != null) {
+ if (BubbleAnythingFlagHelper.enableCreateAnyBubble()
+ && chg.getMode() == TRANSIT_TO_FRONT
+ && pending.mTaskView.getPendingInfo() != null
+ && pending.mTaskView.getPendingInfo().taskId == taskInfo.taskId) {
+ // In this case an existing task, not currently in TaskView, is
+ // brought to the front to be moved into TaskView. This is still
+ // "new" from TaskView's perspective. (e.g. task being moved into a
+ // bubble)
+ isNewInTaskView = true;
+ stillNeedsMatchingLaunch = false;
+ tv = pending.mTaskView;
+ } else {
+ Slog.w(TAG, "Found a non-TaskView task in a TaskView Transition. "
+ + "This shouldn't happen, so there may be a visual "
+ + "artifact: " + taskInfo.taskId);
}
- continue;
}
+ if (tv == null) continue;
}
if (wct == null) wct = new WindowContainerTransaction();
- prepareOpenAnimation(tv, taskIsNew, startTransaction, finishTransaction,
- chg.getTaskInfo(), chg.getLeash(), wct);
+ prepareOpenAnimation(tv, isNewInTaskView, startTransaction, finishTransaction,
+ taskInfo, chg.getLeash(), wct);
changesHandled++;
} else if (chg.getMode() == TRANSIT_CHANGE) {
- TaskViewTaskController tv = findTaskView(chg.getTaskInfo());
+ TaskViewTaskController tv = findTaskView(taskInfo);
if (tv == null) {
if (pending != null) {
Slog.w(TAG, "Found a non-TaskView task in a TaskView Transition. This "
+ "shouldn't happen, so there may be a visual artifact: "
- + chg.getTaskInfo().taskId);
+ + taskInfo.taskId);
}
continue;
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java
index d8e7c2ccb15f..743bd052995e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java
@@ -176,7 +176,9 @@ public class DefaultMixedHandler implements MixedTransitionHandler,
abstract void mergeAnimation(
@NonNull IBinder transition, @NonNull TransitionInfo info,
- @NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget,
+ @NonNull SurfaceControl.Transaction startT,
+ @NonNull SurfaceControl.Transaction finishT,
+ @NonNull IBinder mergeTarget,
@NonNull Transitions.TransitionFinishCallback finishCallback);
abstract void onTransitionConsumed(
@@ -691,7 +693,9 @@ public class DefaultMixedHandler implements MixedTransitionHandler,
@Override
public void mergeAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
- @NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget,
+ @NonNull SurfaceControl.Transaction startT,
+ @NonNull SurfaceControl.Transaction finishT,
+ @NonNull IBinder mergeTarget,
@NonNull Transitions.TransitionFinishCallback finishCallback) {
for (int i = 0; i < mActiveTransitions.size(); ++i) {
if (mActiveTransitions.get(i).mTransition != mergeTarget) continue;
@@ -701,7 +705,7 @@ public class DefaultMixedHandler implements MixedTransitionHandler,
// Already done, so no need to end it.
return;
}
- mixed.mergeAnimation(transition, info, t, mergeTarget, finishCallback);
+ mixed.mergeAnimation(transition, info, startT, finishT, mergeTarget, finishCallback);
}
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedTransition.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedTransition.java
index 29a58d7f75dc..1853ffa96dfc 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedTransition.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedTransition.java
@@ -384,7 +384,8 @@ class DefaultMixedTransition extends DefaultMixedHandler.MixedTransition {
@Override
void mergeAnimation(
@NonNull IBinder transition, @NonNull TransitionInfo info,
- @NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget,
+ @NonNull SurfaceControl.Transaction startT, @NonNull SurfaceControl.Transaction finishT,
+ @NonNull IBinder mergeTarget,
@NonNull Transitions.TransitionFinishCallback finishCallback) {
switch (mType) {
case TYPE_DISPLAY_AND_SPLIT_CHANGE:
@@ -394,7 +395,7 @@ class DefaultMixedTransition extends DefaultMixedHandler.MixedTransition {
case TYPE_ENTER_PIP_FROM_ACTIVITY_EMBEDDING:
mPipHandler.end();
mActivityEmbeddingController.mergeAnimation(
- transition, info, t, mergeTarget, finishCallback);
+ transition, info, startT, finishT, mergeTarget, finishCallback);
return;
case TYPE_ENTER_PIP_FROM_SPLIT:
if (mAnimType == ANIM_TYPE_GOING_HOME) {
@@ -405,26 +406,28 @@ class DefaultMixedTransition extends DefaultMixedHandler.MixedTransition {
mPipHandler.end();
if (mLeftoversHandler != null) {
mLeftoversHandler.mergeAnimation(
- transition, info, t, mergeTarget, finishCallback);
+ transition, info, startT, finishT, mergeTarget, finishCallback);
}
}
return;
case TYPE_KEYGUARD:
- mKeyguardHandler.mergeAnimation(transition, info, t, mergeTarget, finishCallback);
+ mKeyguardHandler.mergeAnimation(transition, info, startT, finishT, mergeTarget,
+ finishCallback);
return;
case TYPE_OPTIONS_REMOTE_AND_PIP_OR_DESKTOP_CHANGE:
mPipHandler.end();
if (mLeftoversHandler != null) {
mLeftoversHandler.mergeAnimation(
- transition, info, t, mergeTarget, finishCallback);
+ transition, info, startT, finishT, mergeTarget, finishCallback);
}
return;
case TYPE_UNFOLD:
- mUnfoldHandler.mergeAnimation(transition, info, t, mergeTarget, finishCallback);
+ mUnfoldHandler.mergeAnimation(transition, info, startT, finishT, mergeTarget,
+ finishCallback);
return;
case TYPE_OPEN_IN_DESKTOP:
mDesktopTasksController.mergeAnimation(
- transition, info, t, mergeTarget, finishCallback);
+ transition, info, startT, finishT, mergeTarget, finishCallback);
return;
default:
throw new IllegalStateException("Playing a default mixed transition with unknown or"
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java
index ac6e4c5cd69e..0689205a1110 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java
@@ -451,6 +451,17 @@ public class DefaultTransitionHandler implements Transitions.TransitionHandler {
final int type = getTransitionTypeFromInfo(info);
Animation a = loadAnimation(type, info, change, wallpaperTransit, isDreamTransition);
if (a != null) {
+ final int displayId = isTask ? change.getTaskInfo().displayId
+ : info.getRoot(TransitionUtil.rootIndexFor(change, info))
+ .getDisplayId();
+ final Context displayContext =
+ mDisplayController.getDisplayContext(displayId);
+ if (displayContext != null
+ && displayContext.getResources().getConfiguration().isScreenRound()) {
+ // ensure that any animation on a round display is using rounded corners
+ a.setHasRoundedCorners(true);
+ }
+
if (isTask) {
final boolean isTranslucent = (change.getFlags() & FLAG_TRANSLUCENT) != 0;
if (!isTranslucent && TransitionUtil.isOpenOrCloseMode(mode)
@@ -504,11 +515,6 @@ public class DefaultTransitionHandler implements Transitions.TransitionHandler {
final float cornerRadius;
if (a.hasRoundedCorners()) {
- final int displayId = isTask ? change.getTaskInfo().displayId
- : info.getRoot(TransitionUtil.rootIndexFor(change, info))
- .getDisplayId();
- final Context displayContext =
- mDisplayController.getDisplayContext(displayId);
cornerRadius = displayContext == null ? 0
: ScreenDecorationsUtils.getWindowCornerRadius(displayContext);
} else {
@@ -708,7 +714,9 @@ public class DefaultTransitionHandler implements Transitions.TransitionHandler {
@Override
public void mergeAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
- @NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget,
+ @NonNull SurfaceControl.Transaction startT,
+ @NonNull SurfaceControl.Transaction finishT,
+ @NonNull IBinder mergeTarget,
@NonNull Transitions.TransitionFinishCallback finishCallback) {
ArrayList<Animator> anims = mAnimations.get(mergeTarget);
if (anims == null) return;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/OneShotRemoteHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/OneShotRemoteHandler.java
index 209fc39b096a..ec737389c351 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/OneShotRemoteHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/OneShotRemoteHandler.java
@@ -96,7 +96,9 @@ public class OneShotRemoteHandler implements Transitions.TransitionHandler {
@Override
public void mergeAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
- @NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget,
+ @NonNull SurfaceControl.Transaction startT,
+ @NonNull SurfaceControl.Transaction finishT,
+ @NonNull IBinder mergeTarget,
@NonNull Transitions.TransitionFinishCallback finishCallback) {
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, "Merging registered One-shot remote"
+ " transition %s for (#%d).", mRemote, info.getDebugId());
@@ -111,7 +113,7 @@ public class OneShotRemoteHandler implements Transitions.TransitionHandler {
// process won't be cleared if the remote applied it. We don't actually know if the
// remote applied the transaction, but applying twice will break surfaceflinger
// so just assume the worst-case and clear the local transaction.
- t.clear();
+ startT.clear();
mMainExecutor.execute(() -> {
finishCallback.onTransitionFinished(wct);
});
@@ -121,8 +123,8 @@ public class OneShotRemoteHandler implements Transitions.TransitionHandler {
// If the remote is actually in the same process, then make a copy of parameters since
// remote impls assume that they have to clean-up native references.
final SurfaceControl.Transaction remoteT =
- RemoteTransitionHandler.copyIfLocal(t, mRemote.getRemoteTransition());
- final TransitionInfo remoteInfo = remoteT == t ? info : info.localRemoteCopy();
+ RemoteTransitionHandler.copyIfLocal(startT, mRemote.getRemoteTransition());
+ final TransitionInfo remoteInfo = remoteT == startT ? info : info.localRemoteCopy();
mRemote.getRemoteTransition().mergeAnimation(
transition, remoteInfo, remoteT, mergeTarget, cb);
} catch (RemoteException e) {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/RecentsMixedTransition.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/RecentsMixedTransition.java
index 1847af07f275..f40dc8ad93b5 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/RecentsMixedTransition.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/RecentsMixedTransition.java
@@ -193,21 +193,24 @@ class RecentsMixedTransition extends DefaultMixedHandler.MixedTransition {
@Override
void mergeAnimation(
@NonNull IBinder transition, @NonNull TransitionInfo info,
- @NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget,
+ @NonNull SurfaceControl.Transaction startT, @NonNull SurfaceControl.Transaction finishT,
+ @NonNull IBinder mergeTarget,
@NonNull Transitions.TransitionFinishCallback finishCallback) {
switch (mType) {
case TYPE_RECENTS_DURING_DESKTOP:
- mLeftoversHandler.mergeAnimation(transition, info, t, mergeTarget, finishCallback);
+ mLeftoversHandler.mergeAnimation(transition, info, startT, finishT, mergeTarget,
+ finishCallback);
return;
case TYPE_RECENTS_DURING_KEYGUARD:
if ((info.getFlags() & TRANSIT_FLAG_KEYGUARD_UNOCCLUDING) != 0) {
- handoverTransitionLeashes(mInfo, info, t, mFinishT);
+ handoverTransitionLeashes(mInfo, info, startT, finishT);
if (animateKeyguard(
- this, info, t, mFinishT, mFinishCB, mKeyguardHandler, mPipHandler)) {
+ this, info, startT, finishT, mFinishCB, mKeyguardHandler,
+ mPipHandler)) {
finishCallback.onTransitionFinished(null);
}
}
- mLeftoversHandler.mergeAnimation(transition, info, t, mergeTarget,
+ mLeftoversHandler.mergeAnimation(transition, info, startT, finishT, mergeTarget,
finishCallback);
return;
case TYPE_RECENTS_DURING_SPLIT:
@@ -216,7 +219,8 @@ class RecentsMixedTransition extends DefaultMixedHandler.MixedTransition {
// another pair.
mAnimType = DefaultMixedHandler.MixedTransition.ANIM_TYPE_PAIR_TO_PAIR;
}
- mLeftoversHandler.mergeAnimation(transition, info, t, mergeTarget, finishCallback);
+ mLeftoversHandler.mergeAnimation(transition, info, startT, finishT, mergeTarget,
+ finishCallback);
return;
default:
throw new IllegalStateException("Playing a Recents mixed transition with unknown or"
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/RemoteTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/RemoteTransitionHandler.java
index dec28fefd789..c4a410b0e28a 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/RemoteTransitionHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/RemoteTransitionHandler.java
@@ -211,7 +211,9 @@ public class RemoteTransitionHandler implements Transitions.TransitionHandler {
@Override
public void mergeAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
- @NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget,
+ @NonNull SurfaceControl.Transaction startT,
+ @NonNull SurfaceControl.Transaction finishT,
+ @NonNull IBinder mergeTarget,
@NonNull Transitions.TransitionFinishCallback finishCallback) {
final RemoteTransition remoteTransition = mRequestedRemotes.get(mergeTarget);
if (remoteTransition == null) return;
@@ -230,7 +232,7 @@ public class RemoteTransitionHandler implements Transitions.TransitionHandler {
// process won't be cleared if the remote applied it. We don't actually know if the
// remote applied the transaction, but applying twice will break surfaceflinger
// so just assume the worst-case and clear the local transaction.
- t.clear();
+ startT.clear();
mMainExecutor.execute(() -> {
if (!mRequestedRemotes.containsKey(mergeTarget)) {
Log.e(TAG, "Merged transition finished after it's mergeTarget (the "
@@ -245,8 +247,8 @@ public class RemoteTransitionHandler implements Transitions.TransitionHandler {
try {
// If the remote is actually in the same process, then make a copy of parameters since
// remote impls assume that they have to clean-up native references.
- final SurfaceControl.Transaction remoteT = copyIfLocal(t, remote);
- final TransitionInfo remoteInfo = remoteT == t ? info : info.localRemoteCopy();
+ final SurfaceControl.Transaction remoteT = copyIfLocal(startT, remote);
+ final TransitionInfo remoteInfo = remoteT == startT ? info : info.localRemoteCopy();
remote.mergeAnimation(transition, remoteInfo, remoteT, mergeTarget, cb);
} catch (RemoteException e) {
Log.e(Transitions.TAG, "Error attempting to merge remote transition.", e);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java
index b83b7e2f07a3..c90f6cf62b7e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java
@@ -193,6 +193,9 @@ public class Transitions implements RemoteCallable<Transitions>,
/** Transition to end the recents transition */
public static final int TRANSIT_END_RECENTS_TRANSITION = TRANSIT_FIRST_CUSTOM + 22;
+ /** Transition type for app compat reachability. */
+ public static final int TRANSIT_MOVE_LETTERBOX_REACHABILITY = TRANSIT_FIRST_CUSTOM + 23;
+
/** Transition type for desktop mode transitions. */
public static final int TRANSIT_DESKTOP_MODE_TYPES =
WindowManager.TRANSIT_FIRST_CUSTOM + 100;
@@ -922,7 +925,7 @@ public class Transitions implements RemoteCallable<Transitions>,
+ " %s is still animating. Notify the animating transition"
+ " in case they can be merged", ready, playing);
mTransitionTracer.logMergeRequested(ready.mInfo.getDebugId(), playing.mInfo.getDebugId());
- playing.mHandler.mergeAnimation(ready.mToken, ready.mInfo, ready.mStartT,
+ playing.mHandler.mergeAnimation(ready.mToken, ready.mInfo, ready.mStartT, ready.mFinishT,
playing.mToken, (wct) -> onMerged(playingToken, readyToken));
}
@@ -1356,7 +1359,7 @@ public class Transitions implements RemoteCallable<Transitions>,
// fast-forward.
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, " Attempt to merge sync %s"
+ " into %s via a SLEEP proxy", nextSync, playing);
- playing.mHandler.mergeAnimation(nextSync.mToken, dummyInfo, dummyT,
+ playing.mHandler.mergeAnimation(nextSync.mToken, dummyInfo, dummyT, dummyT,
playing.mToken, (wct) -> {});
// it's possible to complete immediately. If that happens, just repeat the signal
// loop until we either finish everything or start playing an animation that isn't
@@ -1404,7 +1407,9 @@ public class Transitions implements RemoteCallable<Transitions>,
* @param finishTransaction the transaction given to the handler to be applied after the
* transition animation. Unlike startTransaction, the handler is NOT
* expected to apply this transaction. The Transition system will
- * apply it when finishCallback is called.
+ * apply it when finishCallback is called. If additional transitions
+ * are merged, then the finish transactions for those transitions
+ * will be applied after this transaction.
* @param finishCallback Call this when finished. This MUST be called on main thread.
* @return true if transition was handled, false if not (falls-back to default).
*/
@@ -1414,6 +1419,17 @@ public class Transitions implements RemoteCallable<Transitions>,
@NonNull TransitionFinishCallback finishCallback);
/**
+ * See {@link #mergeAnimation(IBinder, TransitionInfo, SurfaceControl.Transaction, SurfaceControl.Transaction, IBinder, TransitionFinishCallback)}
+ *
+ * This deprecated method header is provided until downstream implementation can migrate to
+ * the call that takes both start & finish transactions.
+ */
+ @Deprecated
+ default void mergeAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
+ @NonNull SurfaceControl.Transaction startTransaction,
+ @NonNull IBinder mergeTarget, @NonNull TransitionFinishCallback finishCallback) { }
+
+ /**
* Attempts to merge a different transition's animation into an animation that this handler
* is currently playing. If a merge is not possible/supported, this should be a no-op.
*
@@ -1430,14 +1446,25 @@ public class Transitions implements RemoteCallable<Transitions>,
*
* @param transition This is the transition that wants to be merged.
* @param info Information about what is changing in the transition.
- * @param t Contains surface changes that resulted from the transition.
+ * @param startTransaction The start transaction containing surface changes that resulted
+ * from the incoming transition. This should be applied by this
+ * active handler only if it chooses to merge the transition.
+ * @param finishTransaction The finish transaction for the incoming transition. Unlike
+ * startTransaction, the handler is NOT expected to apply this
+ * transaction. If the transition is merged, the Transition system
+ * will apply after finishCallback is called following the finish
+ * transaction provided in `#startAnimation()`.
* @param mergeTarget This is the transition that we are attempting to merge with (ie. the
* one this handler is currently already animating).
* @param finishCallback Call this if merged. This MUST be called on main thread.
*/
default void mergeAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
- @NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget,
- @NonNull TransitionFinishCallback finishCallback) { }
+ @NonNull SurfaceControl.Transaction startTransaction,
+ @NonNull SurfaceControl.Transaction finishTransaction,
+ @NonNull IBinder mergeTarget, @NonNull TransitionFinishCallback finishCallback) {
+ // Call the legacy implementation by default
+ mergeAnimation(transition, info, startTransaction, mergeTarget, finishCallback);
+ }
/**
* Checks whether this handler is capable of taking over a transition matching `info`.
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/unfold/UnfoldTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/unfold/UnfoldTransitionHandler.java
index 3e0e15afc53a..7fd19a7d2a88 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/unfold/UnfoldTransitionHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/unfold/UnfoldTransitionHandler.java
@@ -225,7 +225,9 @@ public class UnfoldTransitionHandler implements TransitionHandler, UnfoldListene
@Override
public void mergeAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
- @NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget,
+ @NonNull SurfaceControl.Transaction startT,
+ @NonNull SurfaceControl.Transaction finishT,
+ @NonNull IBinder mergeTarget,
@NonNull TransitionFinishCallback finishCallback) {
if (info.getType() != TRANSIT_CHANGE) {
return;
@@ -246,7 +248,7 @@ public class UnfoldTransitionHandler implements TransitionHandler, UnfoldListene
}
}
// Apply changes happening during the unfold animation immediately
- t.apply();
+ startT.apply();
finishCallback.onTransitionFinished(null);
if (getDefaultDisplayChange(info) == DefaultDisplayChange.DEFAULT_DISPLAY_FOLD) {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopHeaderManageWindowsMenu.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopHeaderManageWindowsMenu.kt
index 575aac381c42..02a5433147ca 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopHeaderManageWindowsMenu.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopHeaderManageWindowsMenu.kt
@@ -25,11 +25,11 @@ import android.view.SurfaceControlViewHost
import android.view.WindowInsets.Type.systemBars
import android.view.WindowManager
import android.view.WindowlessWindowManager
+import android.window.DesktopModeFlags
import android.window.TaskConstants
import android.window.TaskSnapshot
import androidx.compose.ui.graphics.toArgb
import com.android.internal.annotations.VisibleForTesting
-import com.android.window.flags.Flags
import com.android.wm.shell.RootTaskDisplayAreaOrganizer
import com.android.wm.shell.common.DisplayController
import com.android.wm.shell.desktopmode.DesktopUserRepositories
@@ -76,7 +76,7 @@ class DesktopHeaderManageWindowsMenu(
val flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
val desktopRepository = desktopUserRepositories.getProfile(callerTaskInfo.userId)
- menuViewContainer = if (Flags.enableFullyImmersiveInDesktop()
+ menuViewContainer = if (DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue
&& desktopRepository.isTaskInFullImmersiveState(callerTaskInfo.taskId)) {
// Use system view container so that forcibly shown system bars take effect in
// immersive.
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java
index 195e8195089f..1cc04b421132 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java
@@ -50,7 +50,6 @@ import android.app.ActivityManager.RunningTaskInfo;
import android.app.ActivityTaskManager;
import android.app.IActivityManager;
import android.app.IActivityTaskManager;
-import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.graphics.Point;
@@ -132,6 +131,7 @@ import com.android.wm.shell.recents.RecentsTransitionStateListener;
import com.android.wm.shell.shared.FocusTransitionListener;
import com.android.wm.shell.shared.annotations.ShellBackgroundThread;
import com.android.wm.shell.shared.annotations.ShellMainThread;
+import com.android.wm.shell.shared.bubbles.BubbleAnythingFlagHelper;
import com.android.wm.shell.shared.desktopmode.DesktopModeCompatPolicy;
import com.android.wm.shell.shared.desktopmode.DesktopModeStatus;
import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource;
@@ -755,7 +755,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
// App sometimes draws before the insets from WindowDecoration#relayout have
// been added, so they must be added here
decoration.addCaptionInset(wct);
- mDesktopTasksController.moveTaskToDesktop(taskId, wct, source,
+ mDesktopTasksController.moveTaskToDefaultDeskAndActivate(taskId, wct, source,
/* remoteTransition= */ null, /* moveToDesktopCallback */ null);
decoration.closeHandleMenu();
@@ -904,13 +904,14 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
* Whether to pilfer the next motion event to send cancellations to the windows below.
* Useful when the caption window is spy and the gesture should be handled by the system
* instead of by the app for their custom header content.
- * Should not have any effect when {@link Flags#enableAccessibleCustomHeaders()}, because
- * a spy window is not used then.
+ * Should not have any effect when
+ * {@link DesktopModeFlags#ENABLE_ACCESSIBLE_CUSTOM_HEADERS}, because a spy window is not
+ * used then.
*/
private boolean mIsCustomHeaderGesture;
private boolean mIsResizeGesture;
private boolean mIsDragging;
- private boolean mTouchscreenInUse;
+ private boolean mLongClickDisabled;
private int mDragPointerId = -1;
private MotionEvent mMotionEvent;
@@ -974,7 +975,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
// should shared with the maximize menu's maximize/restore actions.
final DesktopRepository desktopRepository = mDesktopUserRepositories.getProfile(
decoration.mTaskInfo.userId);
- if (Flags.enableFullyImmersiveInDesktop()
+ if (DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue()
&& desktopRepository.isTaskInFullImmersiveState(
decoration.mTaskInfo.taskId)) {
// Task is in immersive and should exit.
@@ -996,10 +997,12 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
mMotionEvent = e;
final int id = v.getId();
final DesktopModeWindowDecoration decoration = mWindowDecorByTaskId.get(mTaskId);
- if ((e.getSource() & SOURCE_TOUCHSCREEN) == SOURCE_TOUCHSCREEN) {
- mTouchscreenInUse = e.getActionMasked() != ACTION_UP
- && e.getActionMasked() != ACTION_CANCEL;
- }
+ final boolean touchscreenSource =
+ (e.getSource() & SOURCE_TOUCHSCREEN) == SOURCE_TOUCHSCREEN;
+ // Disable long click during events from a non-touchscreen source
+ mLongClickDisabled = !touchscreenSource && e.getActionMasked() != ACTION_UP
+ && e.getActionMasked() != ACTION_CANCEL;
+
if (id != R.id.caption_handle && id != R.id.desktop_mode_caption
&& id != R.id.open_menu_button && id != R.id.close_window
&& id != R.id.maximize_window && id != R.id.minimize_window) {
@@ -1047,7 +1050,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
return false;
}
if (mInputManager != null
- && !Flags.enableAccessibleCustomHeaders()) {
+ && !DesktopModeFlags.ENABLE_ACCESSIBLE_CUSTOM_HEADERS.isTrue()) {
ViewRootImpl viewRootImpl = v.getViewRootImpl();
if (viewRootImpl != null) {
// Pilfer so that windows below receive cancellations for this gesture.
@@ -1069,7 +1072,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
@Override
public boolean onLongClick(View v) {
final int id = v.getId();
- if (id == R.id.maximize_window && mTouchscreenInUse) {
+ if (id == R.id.maximize_window && !mLongClickDisabled) {
final DesktopModeWindowDecoration decoration = mWindowDecorByTaskId.get(mTaskId);
moveTaskToFront(decoration.mTaskInfo);
if (decoration.isMaximizeMenuActive()) {
@@ -1440,13 +1443,17 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
mDragToDesktopAnimationStartBounds.set(
relevantDecor.mTaskInfo.configuration.windowConfiguration.getBounds());
boolean dragFromStatusBarAllowed = false;
+ final int windowingMode = relevantDecor.mTaskInfo.getWindowingMode();
if (DesktopModeStatus.canEnterDesktopMode(mContext)) {
// In proto2 any full screen or multi-window task can be dragged to
// freeform.
- final int windowingMode = relevantDecor.mTaskInfo.getWindowingMode();
dragFromStatusBarAllowed = windowingMode == WINDOWING_MODE_FULLSCREEN
|| windowingMode == WINDOWING_MODE_MULTI_WINDOW;
}
+ if (BubbleAnythingFlagHelper.enableBubbleToFullscreen()) {
+ // TODO(b/388851898): add support for split screen (multi-window wm mode)
+ dragFromStatusBarAllowed = windowingMode == WINDOWING_MODE_FULLSCREEN;
+ }
final boolean shouldStartTransitionDrag =
relevantDecor.checkTouchEventInFocusedCaptionHandle(ev)
|| DesktopModeFlags.ENABLE_HANDLE_INPUT_FIX.isTrue();
@@ -1654,11 +1661,9 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
if (mDesktopModeCompatPolicy.isTopActivityExemptFromDesktopWindowing(taskInfo)) {
return false;
}
- if (isPartOfDefaultHomePackage(taskInfo)) {
- return false;
- }
- final boolean isOnLargeScreen = taskInfo.getConfiguration().smallestScreenWidthDp
- >= WindowManager.LARGE_SCREEN_SMALLEST_SCREEN_WIDTH_DP;
+ final boolean isOnLargeScreen =
+ mDisplayController.getDisplay(taskInfo.displayId).getMinSizeDimensionDp()
+ >= WindowManager.LARGE_SCREEN_SMALLEST_SCREEN_WIDTH_DP;
if (!DesktopModeStatus.canEnterDesktopMode(mContext)
&& DesktopModeStatus.overridesShowAppHandle(mContext) && !isOnLargeScreen) {
// Devices with multiple screens may enable the app handle but it should not show on
@@ -1672,14 +1677,6 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
&& !taskInfo.configuration.windowConfiguration.isAlwaysOnTop();
}
- private boolean isPartOfDefaultHomePackage(RunningTaskInfo taskInfo) {
- final ComponentName currentDefaultHome =
- mContext.getPackageManager().getHomeActivities(new ArrayList<>());
- return currentDefaultHome != null && taskInfo.baseActivity != null
- && currentDefaultHome.getPackageName()
- .equals(taskInfo.baseActivity.getPackageName());
- }
-
private void createWindowDecoration(
ActivityManager.RunningTaskInfo taskInfo,
SurfaceControl taskSurface,
@@ -1717,7 +1714,8 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
mWindowDecorViewHostSupplier,
mMultiInstanceHelper,
mWindowDecorCaptionHandleRepository,
- mDesktopModeEventLogger);
+ mDesktopModeEventLogger,
+ mDesktopModeCompatPolicy);
mWindowDecorByTaskId.put(taskInfo.taskId, windowDecoration);
final TaskPositioner taskPositioner = mTaskPositionerFactory.create(
@@ -1998,7 +1996,8 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel,
continue;
}
if (decor.mTaskInfo.displayId == displayId
- && Flags.enableDesktopWindowingImmersiveHandleHiding()) {
+ && DesktopModeFlags
+ .ENABLE_DESKTOP_WINDOWING_IMMERSIVE_HANDLE_HIDING.isTrue()) {
decor.onInsetsStateChanged(insetsState);
}
if (!DesktopModeFlags.ENABLE_HANDLE_INPUT_FIX.isTrue()) {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java
index b6765c477485..3fb94630eab3 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java
@@ -94,6 +94,7 @@ import com.android.wm.shell.desktopmode.DesktopUserRepositories;
import com.android.wm.shell.desktopmode.WindowDecorCaptionHandleRepository;
import com.android.wm.shell.shared.annotations.ShellBackgroundThread;
import com.android.wm.shell.shared.annotations.ShellMainThread;
+import com.android.wm.shell.shared.desktopmode.DesktopModeCompatPolicy;
import com.android.wm.shell.shared.desktopmode.DesktopModeStatus;
import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource;
import com.android.wm.shell.shared.multiinstance.ManageWindowsViewContainer;
@@ -111,14 +112,14 @@ import kotlin.Unit;
import kotlin.jvm.functions.Function0;
import kotlin.jvm.functions.Function1;
+import kotlinx.coroutines.CoroutineScope;
+import kotlinx.coroutines.MainCoroutineDispatcher;
+
import java.util.List;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Supplier;
-import kotlinx.coroutines.CoroutineScope;
-import kotlinx.coroutines.MainCoroutineDispatcher;
-
/**
* Defines visuals and behaviors of a window decoration of a caption bar and shadows. It works with
* {@link DesktopModeWindowDecorViewModel}.
@@ -191,6 +192,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
private final HandleMenuFactory mHandleMenuFactory;
private final AppToWebGenericLinksParser mGenericLinksParser;
private final AssistContentRequester mAssistContentRequester;
+ private final DesktopModeCompatPolicy mDesktopModeCompatPolicy;
// Hover state for the maximize menu and button. The menu will remain open as long as either of
// these is true. See {@link #onMaximizeHoverStateChanged()}.
@@ -232,7 +234,8 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
@NonNull WindowDecorViewHostSupplier<WindowDecorViewHost> windowDecorViewHostSupplier,
MultiInstanceHelper multiInstanceHelper,
WindowDecorCaptionHandleRepository windowDecorCaptionHandleRepository,
- DesktopModeEventLogger desktopModeEventLogger) {
+ DesktopModeEventLogger desktopModeEventLogger,
+ DesktopModeCompatPolicy desktopModeCompatPolicy) {
this (context, userContext, displayController, taskResourceLoader, splitScreenController,
desktopUserRepositories, taskOrganizer, taskInfo, taskSurface, handler,
mainExecutor, mainDispatcher, bgScope, bgExecutor, choreographer, syncQueue,
@@ -245,7 +248,8 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
windowDecorViewHostSupplier,
DefaultMaximizeMenuFactory.INSTANCE,
DefaultHandleMenuFactory.INSTANCE, multiInstanceHelper,
- windowDecorCaptionHandleRepository, desktopModeEventLogger);
+ windowDecorCaptionHandleRepository, desktopModeEventLogger,
+ desktopModeCompatPolicy);
}
DesktopModeWindowDecoration(
@@ -280,7 +284,8 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
HandleMenuFactory handleMenuFactory,
MultiInstanceHelper multiInstanceHelper,
WindowDecorCaptionHandleRepository windowDecorCaptionHandleRepository,
- DesktopModeEventLogger desktopModeEventLogger) {
+ DesktopModeEventLogger desktopModeEventLogger,
+ DesktopModeCompatPolicy desktopModeCompatPolicy) {
super(context, userContext, displayController, taskOrganizer, taskInfo,
taskSurface, surfaceControlBuilderSupplier, surfaceControlTransactionSupplier,
windowContainerTransactionSupplier, surfaceControlSupplier,
@@ -305,6 +310,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
mDesktopUserRepositories = desktopUserRepositories;
mTaskResourceLoader = taskResourceLoader;
mTaskResourceLoader.onWindowDecorCreated(taskInfo);
+ mDesktopModeCompatPolicy = desktopModeCompatPolicy;
}
/**
@@ -483,7 +489,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
boolean hasGlobalFocus, @NonNull Region displayExclusionRegion) {
Trace.beginSection("DesktopModeWindowDecoration#relayout");
- if (Flags.enableDesktopWindowingAppToWeb()) {
+ if (DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_APP_TO_WEB.isTrue()) {
setCapturedLink(taskInfo.capturedLink, taskInfo.capturedLinkTimestamp);
}
@@ -507,7 +513,8 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
applyStartTransactionOnDraw, shouldSetTaskVisibilityPositionAndCrop,
mIsStatusBarVisible, mIsKeyguardVisibleAndOccluded, inFullImmersive,
mDisplayController.getInsetsState(taskInfo.displayId), hasGlobalFocus,
- displayExclusionRegion, mIsRecentsTransitionRunning);
+ displayExclusionRegion, mIsRecentsTransitionRunning,
+ mDesktopModeCompatPolicy.shouldExcludeCaptionFromAppBounds(taskInfo));
final WindowDecorLinearLayout oldRootView = mResult.mRootView;
final SurfaceControl oldDecorationSurface = mDecorationContainerSurface;
@@ -731,11 +738,14 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
} else {
// App header is visible since `mWindowDecorViewHolder` is of type
// [AppHeaderViewHolder].
- ((AppHeaderViewHolder) mWindowDecorViewHolder).runOnAppChipGlobalLayout(
- () -> {
- notifyAppHeaderStateChanged();
- return Unit.INSTANCE;
- });
+ final AppHeaderViewHolder appHeader = asAppHeader(mWindowDecorViewHolder);
+ if (appHeader != null) {
+ appHeader.runOnAppChipGlobalLayout(
+ () -> {
+ notifyAppHeaderStateChanged();
+ return Unit.INSTANCE;
+ });
+ }
}
}
@@ -766,11 +776,11 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
}
private void notifyAppHeaderStateChanged() {
- if (isAppHandle(mWindowDecorViewHolder) || mWindowDecorViewHolder == null) {
+ final AppHeaderViewHolder appHeader = asAppHeader(mWindowDecorViewHolder);
+ if (appHeader == null) {
return;
}
- final Rect appChipPositionInWindow =
- ((AppHeaderViewHolder) mWindowDecorViewHolder).getAppChipLocationInWindow();
+ final Rect appChipPositionInWindow = appHeader.getAppChipLocationInWindow();
final Rect taskBounds = mTaskInfo.configuration.windowConfiguration.getBounds();
final Rect appChipGlobalPosition = new Rect(
taskBounds.left + appChipPositionInWindow.left,
@@ -888,7 +898,8 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
@NonNull InsetsState displayInsetsState,
boolean hasGlobalFocus,
@NonNull Region displayExclusionRegion,
- boolean shouldIgnoreCornerRadius) {
+ boolean shouldIgnoreCornerRadius,
+ boolean shouldExcludeCaptionFromAppBounds) {
final int captionLayoutId = getDesktopModeWindowDecorLayoutId(taskInfo.getWindowingMode());
final boolean isAppHeader =
captionLayoutId == R.layout.desktop_mode_app_header;
@@ -906,7 +917,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
relayoutParams.mAsyncViewHost = isAppHandle;
final boolean showCaption;
- if (Flags.enableFullyImmersiveInDesktop()) {
+ if (DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue()) {
if (inFullImmersiveMode) {
showCaption = isStatusBarVisible && !isKeyguardVisibleAndOccluded;
} else {
@@ -935,7 +946,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
// The app is requesting to customize the caption bar, which means input on
// customizable/exclusion regions must go to the app instead of to the system.
// This may be accomplished with spy windows or custom touchable regions:
- if (Flags.enableAccessibleCustomHeaders()) {
+ if (DesktopModeFlags.ENABLE_ACCESSIBLE_CUSTOM_HEADERS.isTrue()) {
// Set the touchable region of the caption to only the areas where input should
// be handled by the system (i.e. non custom-excluded areas). The region will
// be calculated based on occluding caption elements and exclusion areas
@@ -948,17 +959,26 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
}
} else {
if (ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION.isTrue()) {
- // Force-consume the caption bar insets when the app tries to hide the caption.
- // This improves app compatibility of immersive apps.
- relayoutParams.mInsetSourceFlags |= FLAG_FORCE_CONSUMING;
+ if (shouldExcludeCaptionFromAppBounds) {
+ relayoutParams.mShouldSetAppBounds = true;
+ } else {
+ // Force-consume the caption bar insets when the app tries to hide the
+ // caption. This improves app compatibility of immersive apps.
+ relayoutParams.mInsetSourceFlags |= FLAG_FORCE_CONSUMING;
+ }
}
}
if (ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION_ALWAYS.isTrue()) {
- // Always force-consume the caption bar insets for maximum app compatibility,
- // including non-immersive apps that just don't handle caption insets properly.
- relayoutParams.mInsetSourceFlags |= FLAG_FORCE_CONSUMING_OPAQUE_CAPTION_BAR;
+ if (shouldExcludeCaptionFromAppBounds) {
+ relayoutParams.mShouldSetAppBounds = true;
+ } else {
+ // Always force-consume the caption bar insets for maximum app compatibility,
+ // including non-immersive apps that just don't handle caption insets properly.
+ relayoutParams.mInsetSourceFlags |= FLAG_FORCE_CONSUMING_OPAQUE_CAPTION_BAR;
+ }
}
- if (Flags.enableFullyImmersiveInDesktop() && inFullImmersiveMode) {
+ if (DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue()
+ && inFullImmersiveMode) {
final Insets systemBarInsets = displayInsetsState.calculateInsets(
taskInfo.getConfiguration().windowConfiguration.getBounds(),
WindowInsets.Type.systemBars() & ~WindowInsets.Type.captionBar(),
@@ -1050,7 +1070,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
}
private int calculateMaximizeMenuWidth() {
- final boolean showImmersive = Flags.enableFullyImmersiveInDesktop()
+ final boolean showImmersive = DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue()
&& TaskInfoKt.getRequestingImmersive(mTaskInfo);
final boolean showMaximize = true;
final boolean showSnaps = mTaskInfo.isResizeable;
@@ -1094,8 +1114,10 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
final float menuRight = menuLeft + menuWidth;
final float menuBottom = menuTop + menuHeight;
- // If the menu is out of screen bounds, shift it up/left as needed
- if (menuRight > displayWidth) {
+ // If the menu is out of screen bounds, shift it as needed
+ if (menuLeft < 0) {
+ menuLeft = 0;
+ } else if (menuRight > displayWidth) {
menuLeft = (displayWidth - menuWidth);
}
if (menuBottom > displayHeight) {
@@ -1278,11 +1300,13 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
calculateMaximizeMenuPosition(menuWidth), mSurfaceControlTransactionSupplier);
mMaximizeMenu.show(
- /* isTaskInImmersiveMode= */ Flags.enableFullyImmersiveInDesktop()
+ /* isTaskInImmersiveMode= */
+ DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue()
&& mDesktopUserRepositories.getProfile(mTaskInfo.userId)
.isTaskInFullImmersiveState(mTaskInfo.taskId),
/* menuWidth= */ menuWidth,
- /* showImmersiveOption= */ Flags.enableFullyImmersiveInDesktop()
+ /* showImmersiveOption= */
+ DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue()
&& TaskInfoKt.getRequestingImmersive(mTaskInfo),
/* showSnapOptions= */ mTaskInfo.isResizeable,
mOnMaximizeOrRestoreClickListener,
@@ -1364,7 +1388,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
updateGenericLink();
final boolean supportsMultiInstance = mMultiInstanceHelper
.supportsMultiInstanceSplit(mTaskInfo.baseActivity, mTaskInfo.userId)
- && Flags.enableDesktopWindowingMultiInstanceFeatures();
+ && DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_MULTI_INSTANCE_FEATURES.isTrue();
final boolean shouldShowManageWindowsButton = supportsMultiInstance
&& mMinimumInstancesFound;
final boolean shouldShowChangeAspectRatioButton = HandleMenu.Companion
@@ -1739,7 +1763,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
private static int getCaptionHeightIdStatic(@WindowingMode int windowingMode) {
return windowingMode == WINDOWING_MODE_FULLSCREEN
? com.android.internal.R.dimen.status_bar_height_default
- : R.dimen.desktop_mode_freeform_decor_caption_height;
+ : DesktopModeUtils.getAppHeaderHeightId();
}
private int getCaptionHeight(@WindowingMode int windowingMode) {
@@ -1790,7 +1814,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
}
private boolean canOpenMaximizeMenu(boolean animatingTaskResizeOrReposition) {
- if (!Flags.enableFullyImmersiveInDesktop()) {
+ if (!DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue()) {
return !animatingTaskResizeOrReposition;
}
final boolean inImmersiveAndRequesting =
@@ -1837,7 +1861,8 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
windowDecorViewHostSupplier,
MultiInstanceHelper multiInstanceHelper,
WindowDecorCaptionHandleRepository windowDecorCaptionHandleRepository,
- DesktopModeEventLogger desktopModeEventLogger) {
+ DesktopModeEventLogger desktopModeEventLogger,
+ DesktopModeCompatPolicy desktopModeCompatPolicy) {
return new DesktopModeWindowDecoration(
context,
userContext,
@@ -1862,7 +1887,8 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
windowDecorViewHostSupplier,
multiInstanceHelper,
windowDecorCaptionHandleRepository,
- desktopModeEventLogger);
+ desktopModeEventLogger,
+ desktopModeCompatPolicy);
}
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/FixedAspectRatioTaskPositionerDecorator.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/FixedAspectRatioTaskPositionerDecorator.kt
index ab30d617af54..cfd068860589 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/FixedAspectRatioTaskPositionerDecorator.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/FixedAspectRatioTaskPositionerDecorator.kt
@@ -20,6 +20,7 @@ import android.app.ActivityManager.RunningTaskInfo
import android.graphics.PointF
import android.graphics.Rect
import com.android.internal.annotations.VisibleForTesting
+import com.android.wm.shell.desktopmode.calculateAspectRatio
import com.android.wm.shell.windowdecor.DragPositioningCallback.CTRL_TYPE_BOTTOM
import com.android.wm.shell.windowdecor.DragPositioningCallback.CTRL_TYPE_LEFT
import com.android.wm.shell.windowdecor.DragPositioningCallback.CTRL_TYPE_RIGHT
@@ -27,8 +28,6 @@ import com.android.wm.shell.windowdecor.DragPositioningCallback.CTRL_TYPE_TOP
import com.android.wm.shell.windowdecor.DragPositioningCallback.CTRL_TYPE_UNDEFINED
import com.android.wm.shell.windowdecor.DragPositioningCallback.CtrlType
import kotlin.math.abs
-import kotlin.math.max
-import kotlin.math.min
/**
* [AbstractTaskPositionerDecorator] implementation for validating the coordinates associated with a
@@ -59,8 +58,7 @@ class FixedAspectRatioTaskPositionerDecorator (
lastValidPoint.set(x, y)
val startingBoundWidth = lastRepositionedBounds.width()
val startingBoundHeight = lastRepositionedBounds.height()
- startingAspectRatio = max(startingBoundWidth, startingBoundHeight).toFloat() /
- min(startingBoundWidth, startingBoundHeight).toFloat()
+ startingAspectRatio = calculateAspectRatio(windowDecoration.mTaskInfo)
isTaskPortrait = startingBoundWidth <= startingBoundHeight
lastRepositionedBounds.set(
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.kt
index 32a2f8294877..1d9564948772 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.kt
@@ -252,6 +252,7 @@ class HandleMenu(
view = handleMenuView.rootView,
forciblyShownTypes = if (forceShowSystemBars) { systemBars() } else { 0 },
ignoreCutouts = Flags.showAppHandleLargeScreens()
+ || BubbleAnythingFlagHelper.enableBubbleToFullscreen()
)
} else {
parentDecor.addWindow(
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MaximizeButtonView.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MaximizeButtonView.kt
index e23ebe6634ff..581d1867ddf0 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MaximizeButtonView.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MaximizeButtonView.kt
@@ -53,6 +53,10 @@ class MaximizeButtonView(
(stubProgressBarContainer.inflate() as FrameLayout)
.requireViewById(R.id.progress_bar)
}
+ private val maximizeButtonText =
+ context.resources.getString(R.string.desktop_mode_maximize_menu_maximize_button_text)
+ private val restoreButtonText =
+ context.resources.getString(R.string.desktop_mode_maximize_menu_restore_button_text)
init {
LayoutInflater.from(context).inflate(R.layout.maximize_menu_button, this, true)
@@ -154,6 +158,12 @@ class MaximizeButtonView(
/** Set the drawable resource to use for the maximize button. */
fun setIcon(@DrawableRes icon: Int) {
maximizeWindow.setImageResource(icon)
+ when (icon) {
+ R.drawable.decor_desktop_mode_immersive_or_maximize_exit_button_dark ->
+ maximizeWindow.contentDescription = restoreButtonText
+ R.drawable.decor_desktop_mode_maximize_button_dark ->
+ maximizeWindow.contentDescription = maximizeButtonText
+ }
}
companion object {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MaximizeMenu.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MaximizeMenu.kt
index be3ea4e7b71e..38accce82999 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MaximizeMenu.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MaximizeMenu.kt
@@ -291,13 +291,24 @@ class MaximizeMenu(
requireViewById(R.id.maximize_menu_snap_container) as View
private val snapWindowText =
requireViewById(R.id.maximize_menu_snap_window_text) as TextView
- private val snapRightButton =
- requireViewById(R.id.maximize_menu_snap_right_button) as Button
- private val snapLeftButton =
- requireViewById(R.id.maximize_menu_snap_left_button) as Button
private val snapButtonsLayout =
requireViewById(R.id.maximize_menu_snap_menu_layout)
+ // If layout direction is RTL, maximize menu will be mirrored, switching the order of the
+ // snap right/left buttons.
+ val isRtl: Boolean =
+ (context.resources.configuration.layoutDirection == View.LAYOUT_DIRECTION_RTL)
+ private val snapRightButton = if (isRtl) {
+ requireViewById(R.id.maximize_menu_snap_left_button) as Button
+ } else {
+ requireViewById(R.id.maximize_menu_snap_right_button) as Button
+ }
+ private val snapLeftButton = if (isRtl) {
+ requireViewById(R.id.maximize_menu_snap_right_button) as Button
+ } else {
+ requireViewById(R.id.maximize_menu_snap_left_button) as Button
+ }
+
private val decorThemeUtil = DecorThemeUtil(context)
private val outlineRadius = context.resources
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MultiDisplayVeiledResizeTaskPositioner.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MultiDisplayVeiledResizeTaskPositioner.kt
index 07496eb0e526..a9c2e68e62a6 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MultiDisplayVeiledResizeTaskPositioner.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MultiDisplayVeiledResizeTaskPositioner.kt
@@ -199,7 +199,7 @@ class MultiDisplayVeiledResizeTaskPositioner(
// TODO(b/383069173): Render drag indicator(s)
t.setPosition(
- desktopWindowDecoration.mTaskSurface,
+ desktopWindowDecoration.leash,
repositionTaskBounds.left.toFloat(),
repositionTaskBounds.top.toFloat(),
)
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java
index 3fcb09349033..76005c22972a 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java
@@ -302,7 +302,11 @@ public abstract class WindowDecoration<T extends View & TaskFocusStateConsumer>
Trace.endSection();
Trace.beginSection("WindowDecoration#relayout-updateViewHost");
- outResult.mRootView.setPadding(0, params.mCaptionTopPadding, 0, 0);
+ outResult.mRootView.setPadding(
+ outResult.mRootView.getPaddingLeft(),
+ params.mCaptionTopPadding,
+ outResult.mRootView.getPaddingRight(),
+ outResult.mRootView.getPaddingBottom());
final Rect localCaptionBounds = new Rect(
outResult.mCaptionX,
outResult.mCaptionY,
@@ -470,8 +474,8 @@ public abstract class WindowDecoration<T extends View & TaskFocusStateConsumer>
}
final WindowDecorationInsets newInsets = new WindowDecorationInsets(
- mTaskInfo.token, mOwner, captionInsetsRect, boundingRects,
- params.mInsetSourceFlags, params.mIsInsetSource);
+ mTaskInfo.token, mOwner, captionInsetsRect, taskBounds, boundingRects,
+ params.mInsetSourceFlags, params.mIsInsetSource, params.mShouldSetAppBounds);
if (!newInsets.equals(mWindowDecorationInsets)) {
// Add or update this caption as an insets source.
mWindowDecorationInsets = newInsets;
@@ -793,8 +797,8 @@ public abstract class WindowDecoration<T extends View & TaskFocusStateConsumer>
final int captionHeight = loadDimensionPixelSize(mContext.getResources(), captionHeightId);
final Rect captionInsets = new Rect(0, 0, 0, captionHeight);
final WindowDecorationInsets newInsets = new WindowDecorationInsets(mTaskInfo.token,
- mOwner, captionInsets, null /* boundingRets */, 0 /* flags */,
- true /* shouldAddCaptionInset */);
+ mOwner, captionInsets, null /* taskFrame */, null /* boundingRects */,
+ 0 /* flags */, true /* shouldAddCaptionInset */, false /* excludedFromAppBounds */);
if (!newInsets.equals(mWindowDecorationInsets)) {
mWindowDecorationInsets = newInsets;
mWindowDecorationInsets.update(wct);
@@ -825,6 +829,7 @@ public abstract class WindowDecoration<T extends View & TaskFocusStateConsumer>
boolean mApplyStartTransactionOnDraw;
boolean mSetTaskVisibilityPositionAndCrop;
boolean mHasGlobalFocus;
+ boolean mShouldSetAppBounds;
void reset() {
mLayoutResId = Resources.ID_NULL;
@@ -848,6 +853,7 @@ public abstract class WindowDecoration<T extends View & TaskFocusStateConsumer>
mWindowDecorConfig = null;
mAsyncViewHost = false;
mHasGlobalFocus = false;
+ mShouldSetAppBounds = false;
}
boolean hasInputFeatureSpy() {
@@ -921,19 +927,23 @@ public abstract class WindowDecoration<T extends View & TaskFocusStateConsumer>
private final WindowContainerToken mToken;
private final Binder mOwner;
private final Rect mFrame;
+ private final Rect mTaskFrame;
private final Rect[] mBoundingRects;
private final @InsetsSource.Flags int mFlags;
private final boolean mShouldAddCaptionInset;
+ private final boolean mExcludedFromAppBounds;
private WindowDecorationInsets(WindowContainerToken token, Binder owner, Rect frame,
- Rect[] boundingRects, @InsetsSource.Flags int flags,
- boolean shouldAddCaptionInset) {
+ Rect taskFrame, Rect[] boundingRects, @InsetsSource.Flags int flags,
+ boolean shouldAddCaptionInset, boolean excludedFromAppBounds) {
mToken = token;
mOwner = owner;
mFrame = frame;
+ mTaskFrame = taskFrame;
mBoundingRects = boundingRects;
mFlags = flags;
mShouldAddCaptionInset = shouldAddCaptionInset;
+ mExcludedFromAppBounds = excludedFromAppBounds;
}
void update(WindowContainerTransaction wct) {
@@ -942,12 +952,20 @@ public abstract class WindowDecoration<T extends View & TaskFocusStateConsumer>
mFlags);
wct.addInsetsSource(mToken, mOwner, INDEX, mandatorySystemGestures(), mFrame,
mBoundingRects, 0 /* flags */);
+ if (mExcludedFromAppBounds) {
+ final Rect appBounds = new Rect(mTaskFrame);
+ appBounds.top += mFrame.height();
+ wct.setAppBounds(mToken, appBounds);
+ }
}
}
void remove(WindowContainerTransaction wct) {
wct.removeInsetsSource(mToken, mOwner, INDEX, captionBar());
wct.removeInsetsSource(mToken, mOwner, INDEX, mandatorySystemGestures());
+ if (mExcludedFromAppBounds) {
+ wct.setAppBounds(mToken, new Rect());
+ }
}
@Override
@@ -956,9 +974,11 @@ public abstract class WindowDecoration<T extends View & TaskFocusStateConsumer>
if (!(o instanceof WindowDecoration.WindowDecorationInsets that)) return false;
return Objects.equals(mToken, that.mToken) && Objects.equals(mOwner,
that.mOwner) && Objects.equals(mFrame, that.mFrame)
+ && Objects.equals(mTaskFrame, that.mTaskFrame)
&& Objects.deepEquals(mBoundingRects, that.mBoundingRects)
&& mFlags == that.mFlags
- && mShouldAddCaptionInset == that.mShouldAddCaptionInset;
+ && mShouldAddCaptionInset == that.mShouldAddCaptionInset
+ && mExcludedFromAppBounds == that.mExcludedFromAppBounds;
}
@Override
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/common/WindowDecorTaskResourceLoader.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/common/WindowDecorTaskResourceLoader.kt
index 1bc48f89ea6d..801048adda4d 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/common/WindowDecorTaskResourceLoader.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/common/WindowDecorTaskResourceLoader.kt
@@ -153,9 +153,7 @@ class WindowDecorTaskResourceLoader(
private fun loadAppResources(taskInfo: RunningTaskInfo): AppResources {
Trace.beginSection("$TAG#loadAppResources")
try {
- val pm = checkNotNull(userProfilesContexts[taskInfo.userId]?.packageManager) {
- "Could not get context for user ${taskInfo.userId}"
- }
+ val pm = userProfilesContexts.getOrCreate(taskInfo.userId).packageManager
val activityInfo = getActivityInfo(taskInfo, pm)
val appName = pm.getApplicationLabel(activityInfo.applicationInfo)
val appIconDrawable = iconProvider.getIcon(activityInfo)
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHandleViewHolder.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHandleViewHolder.kt
index 1264c013faf5..2948fdaf16af 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHandleViewHolder.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHandleViewHolder.kt
@@ -41,6 +41,7 @@ import com.android.internal.policy.SystemBarUtils
import com.android.window.flags.Flags
import com.android.wm.shell.R
import com.android.wm.shell.shared.animation.Interpolators
+import com.android.wm.shell.shared.bubbles.BubbleAnythingFlagHelper
import com.android.wm.shell.windowdecor.WindowManagerWrapper
import com.android.wm.shell.windowdecor.additionalviewcontainer.AdditionalSystemViewContainer
@@ -146,6 +147,7 @@ internal class AppHandleViewHolder(
taskInfo.taskId, handlePosition.x, handlePosition.y, handleWidth, handleHeight,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
ignoreCutouts = Flags.showAppHandleLargeScreens()
+ || BubbleAnythingFlagHelper.enableBubbleToFullscreen()
)
val view = statusBarInputLayer?.view ?: error("Unable to find statusBarInputLayer View")
val lp = statusBarInputLayer?.lp ?: error("Unable to find statusBarInputLayer " +
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt
index db12f899f42f..bc2be901d320 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt
@@ -49,7 +49,6 @@ import com.android.internal.R.color.materialColorSecondaryContainer
import com.android.internal.R.color.materialColorSurfaceContainerHigh
import com.android.internal.R.color.materialColorSurfaceContainerLow
import com.android.internal.R.color.materialColorSurfaceDim
-import com.android.window.flags.Flags
import com.android.wm.shell.R
import android.window.DesktopModeFlags
import androidx.core.view.ViewCompat
@@ -463,7 +462,8 @@ class AppHeaderViewHolder(
private fun shouldShowExitFullImmersiveOrMaximizeIcon(
isTaskMaximized: Boolean,
inFullImmersiveState: Boolean
- ): Boolean = (Flags.enableFullyImmersiveInDesktop() && inFullImmersiveState) || isTaskMaximized
+ ): Boolean = (DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue && inFullImmersiveState)
+ || isTaskMaximized
private fun getHeaderStyle(header: Header): HeaderStyle {
return HeaderStyle(
diff --git a/libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/Android.bp b/libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/Android.bp
index 50581f7e01f3..7585c977809e 100644
--- a/libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/Android.bp
+++ b/libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/Android.bp
@@ -33,6 +33,7 @@ android_test {
"WMShellFlickerTestsBase",
"WMShellScenariosDesktopMode",
"WMShellTestUtils",
+ "ui-trace-collector",
],
data: ["trace_config/*"],
}
diff --git a/libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/AndroidManifest.xml b/libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/AndroidManifest.xml
index 1bbbefadaa03..8fc974d4381e 100644
--- a/libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/AndroidManifest.xml
+++ b/libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/AndroidManifest.xml
@@ -47,6 +47,8 @@
<uses-permission android:name="android.permission.STATUS_BAR_SERVICE" />
<!-- Allow the test to connect to perfetto trace processor -->
<uses-permission android:name="android.permission.INTERNET"/>
+ <!-- Use trusted virtual displays to emulate an external display -->
+ <uses-permission android:name="android.permission.ADD_TRUSTED_DISPLAY"/>
<!-- Allow the test to write directly to /sdcard/ and connect to trace processor -->
<application android:requestLegacyExternalStorage="true"
diff --git a/libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/src/com/android/wm/shell/flicker/DesktopModeFlickerScenarios.kt b/libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/src/com/android/wm/shell/flicker/DesktopModeFlickerScenarios.kt
index ab1ac1a0efa3..4c443d7501f7 100644
--- a/libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/src/com/android/wm/shell/flicker/DesktopModeFlickerScenarios.kt
+++ b/libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/src/com/android/wm/shell/flicker/DesktopModeFlickerScenarios.kt
@@ -19,7 +19,7 @@ package com.android.wm.shell.flicker
import android.tools.PlatformConsts.DESKTOP_MODE_MINIMUM_WINDOW_HEIGHT
import android.tools.PlatformConsts.DESKTOP_MODE_MINIMUM_WINDOW_WIDTH
import android.tools.flicker.AssertionInvocationGroup
-import android.tools.flicker.assertors.assertions.AppLayerIncreasesInSize
+import android.tools.flicker.assertors.assertions.ResizeVeilKeepsIncreasingInSize
import android.tools.flicker.assertors.assertions.AppLayerIsInvisibleAtEnd
import android.tools.flicker.assertors.assertions.AppLayerIsVisibleAlways
import android.tools.flicker.assertors.assertions.AppLayerIsVisibleAtStart
@@ -168,9 +168,11 @@ class DesktopModeFlickerScenarios {
TaggedCujTransitionMatcher(associatedTransitionRequired = false)
)
.build(),
- // TODO(373638597) Add AppLayerIncreasesInSize assertion
- assertions = AssertionTemplates.DESKTOP_MODE_APP_VISIBILITY_ASSERTIONS
- )
+ assertions = AssertionTemplates.DESKTOP_MODE_APP_VISIBILITY_ASSERTIONS +
+ listOf(
+ ResizeVeilKeepsIncreasingInSize(DESKTOP_MODE_APP),
+ ).associateBy({ it }, { AssertionInvocationGroup.BLOCKING })
+ )
val EDGE_RESIZE =
FlickerConfigEntry(
@@ -184,7 +186,7 @@ class DesktopModeFlickerScenarios {
.build(),
assertions = AssertionTemplates.DESKTOP_MODE_APP_VISIBILITY_ASSERTIONS +
listOf(
- AppLayerIncreasesInSize(DESKTOP_MODE_APP),
+ ResizeVeilKeepsIncreasingInSize(DESKTOP_MODE_APP),
).associateBy({ it }, { AssertionInvocationGroup.BLOCKING }),
)
@@ -223,9 +225,9 @@ class DesktopModeFlickerScenarios {
assertions =
AssertionTemplates.DESKTOP_MODE_APP_VISIBILITY_ASSERTIONS +
listOf(
- // TODO(373638597) Add AppLayerIncreasesInSize assertion
AppWindowHasMaxDisplayHeight(DESKTOP_MODE_APP),
- AppWindowHasMaxDisplayWidth(DESKTOP_MODE_APP)
+ AppWindowHasMaxDisplayWidth(DESKTOP_MODE_APP),
+ ResizeVeilKeepsIncreasingInSize(DESKTOP_MODE_APP),
).associateBy({ it }, { AssertionInvocationGroup.BLOCKING }),
)
@@ -368,7 +370,7 @@ class DesktopModeFlickerScenarios {
),
assertions = AssertionTemplates.DESKTOP_MODE_APP_VISIBILITY_ASSERTIONS +
listOf(
- AppLayerIncreasesInSize(DESKTOP_MODE_APP),
+ ResizeVeilKeepsIncreasingInSize(DESKTOP_MODE_APP),
AppWindowHasMaxDisplayHeight(DESKTOP_MODE_APP),
AppWindowHasMaxDisplayWidth(DESKTOP_MODE_APP)
).associateBy({ it }, { AssertionInvocationGroup.BLOCKING }),
@@ -393,7 +395,7 @@ class DesktopModeFlickerScenarios {
assertions =
AssertionTemplates.DESKTOP_MODE_APP_VISIBILITY_ASSERTIONS +
listOf(
- AppLayerIncreasesInSize(DESKTOP_MODE_APP),
+ ResizeVeilKeepsIncreasingInSize(DESKTOP_MODE_APP),
AppWindowMaintainsAspectRatioAlways(DESKTOP_MODE_APP),
AppWindowHasMaxBoundsInOnlyOneDimension(DESKTOP_MODE_APP)
).associateBy({ it }, { AssertionInvocationGroup.BLOCKING }),
@@ -541,5 +543,29 @@ class DesktopModeFlickerScenarios {
AppWindowBecomesPinned(DESKTOP_MODE_APP),
).associateBy({ it }, { AssertionInvocationGroup.BLOCKING })
)
+
+ val OPEN_APP_WHEN_EXTERNAL_DISPLAY_CONNECTED =
+ FlickerConfigEntry(
+ scenarioId = ScenarioId("OPEN_APP_WHEN_EXTERNAL_DISPLAY_CONNECTED"),
+ extractor =
+ ShellTransitionScenarioExtractor(
+ transitionMatcher =
+ object : ITransitionMatcher {
+ override fun findAll(
+ transitions: Collection<Transition>
+ ): Collection<Transition> {
+ return listOf(transitions
+ .filter { it.type == TransitionType.OPEN }
+ .maxByOrNull { it.id }!!)
+ }
+ }
+ ),
+ assertions =
+ listOf(
+ AppWindowBecomesVisible(DESKTOP_MODE_APP),
+ AppWindowOnTopAtEnd(DESKTOP_MODE_APP),
+ AppWindowBecomesVisible(DESKTOP_WALLPAPER),
+ ).associateBy({ it }, { AssertionInvocationGroup.BLOCKING }),
+ )
}
}
diff --git a/libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/src/com/android/wm/shell/flicker/OpenAppWithExternalDisplayConnected.kt b/libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/src/com/android/wm/shell/flicker/OpenAppWithExternalDisplayConnected.kt
new file mode 100644
index 000000000000..66d2ea95c67f
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/src/com/android/wm/shell/flicker/OpenAppWithExternalDisplayConnected.kt
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.flicker
+
+import android.tools.flicker.FlickerConfig
+import android.tools.flicker.annotation.ExpectedScenarios
+import android.tools.flicker.annotation.FlickerConfigProvider
+import android.tools.flicker.config.FlickerConfig
+import android.tools.flicker.config.FlickerServiceConfig
+import android.tools.flicker.junit.FlickerServiceJUnit4ClassRunner
+import com.android.wm.shell.flicker.DesktopModeFlickerScenarios.Companion.OPEN_APP_WHEN_EXTERNAL_DISPLAY_CONNECTED
+import com.android.wm.shell.scenarios.OpenAppWithExternalDisplayConnected
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/**
+ * Open an app on the default display when an external display is connected.
+ *
+ * Assert that the app launches in desktop mode.
+ */
+@RunWith(FlickerServiceJUnit4ClassRunner::class)
+class OpenAppWithExternalDisplayConnected : OpenAppWithExternalDisplayConnected() {
+ @ExpectedScenarios(["OPEN_APP_WHEN_EXTERNAL_DISPLAY_CONNECTED"])
+ @Test
+ override fun openAppWithExternalDisplayConnected() = super.openAppWithExternalDisplayConnected()
+
+ companion object {
+ @JvmStatic
+ @FlickerConfigProvider
+ fun flickerConfigProvider(): FlickerConfig =
+ FlickerConfig()
+ .use(FlickerServiceConfig.DEFAULT)
+ .use(OPEN_APP_WHEN_EXTERNAL_DISPLAY_CONNECTED)
+ }
+}
diff --git a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/functional/OpenAppWithExternalDisplayConnectedTest.kt b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/functional/OpenAppWithExternalDisplayConnectedTest.kt
new file mode 100644
index 000000000000..cc9a799fb50c
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/functional/OpenAppWithExternalDisplayConnectedTest.kt
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.functional
+
+import android.platform.test.annotations.Postsubmit
+import com.android.wm.shell.scenarios.OpenAppWithExternalDisplayConnected
+import org.junit.runner.RunWith
+import org.junit.runners.BlockJUnit4ClassRunner
+
+/* Functional test for [OpenAppWithExternalDisplayConnected]. */
+@RunWith(BlockJUnit4ClassRunner::class)
+@Postsubmit
+class OpenAppWithExternalDisplayConnectedTest : OpenAppWithExternalDisplayConnected()
diff --git a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/EnterDesktopWithDrag.kt b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/EnterDesktopWithDrag.kt
index 8d04749d76a5..2115f70faad0 100644
--- a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/EnterDesktopWithDrag.kt
+++ b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/EnterDesktopWithDrag.kt
@@ -50,7 +50,7 @@ constructor(
@Test
open fun enterDesktopWithDrag() {
// By default this method uses drag to desktop
- testApp.enterDesktopMode(wmHelper, device)
+ testApp.enterDesktopMode(wmHelper, device, shouldUseDragToDesktop = true)
}
@After
diff --git a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/EnterDesktopWithDragExistingWindows.kt b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/EnterDesktopWithDragExistingWindows.kt
index 814478af67c1..9a1919304675 100644
--- a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/EnterDesktopWithDragExistingWindows.kt
+++ b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/EnterDesktopWithDragExistingWindows.kt
@@ -62,7 +62,7 @@ constructor(
@Test
open fun reenterDesktopWithDrag() {
// By default this method uses drag to desktop
- testApp.enterDesktopMode(wmHelper, device)
+ testApp.enterDesktopMode(wmHelper, device, shouldUseDragToDesktop = true)
}
@After
diff --git a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/MinimizeAutoPipAppWindow.kt b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/MinimizeAutoPipAppWindow.kt
index d6c3266e915c..b5d4dbaa6f37 100644
--- a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/MinimizeAutoPipAppWindow.kt
+++ b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/MinimizeAutoPipAppWindow.kt
@@ -54,6 +54,7 @@ abstract class MinimizeAutoPipAppWindow {
fun setup() {
Assume.assumeTrue(Flags.enableDesktopWindowingMode() && tapl.isTablet)
Assume.assumeTrue(Flags.enableMinimizeButton())
+ Assume.assumeTrue(com.android.wm.shell.Flags.enablePip2())
testApp.enterDesktopMode(wmHelper, device)
pipApp.launchViaIntent(wmHelper)
pipApp.enableAutoEnterForPipActivity()
diff --git a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/OpenAppWithExternalDisplayConnected.kt b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/OpenAppWithExternalDisplayConnected.kt
new file mode 100644
index 000000000000..81c46f13b384
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/OpenAppWithExternalDisplayConnected.kt
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.scenarios
+
+import android.app.Instrumentation
+import android.content.Context
+import android.hardware.display.DisplayManager
+import android.hardware.display.VirtualDisplay
+import android.tools.NavBar
+import android.tools.Rotation
+import android.tools.flicker.rules.ChangeDisplayOrientationRule
+import android.tools.traces.parsers.WindowManagerStateHelper
+import android.util.DisplayMetrics
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.uiautomator.UiDevice
+import com.android.launcher3.tapl.LauncherInstrumentation
+import com.android.server.wm.flicker.helpers.DesktopModeAppHelper
+import com.android.server.wm.flicker.helpers.SimpleAppHelper
+import com.android.window.flags.Flags
+import com.android.wm.shell.ExtendedDisplaySettingsSession
+import com.android.wm.shell.Utils
+import org.junit.After
+import org.junit.Assume
+import org.junit.Before
+import org.junit.Ignore
+import org.junit.Rule
+import org.junit.Test
+
+/**
+ * Base scenario test for launching an app in desktop mode by default when an external display is
+ * connected.
+ */
+@Ignore("Test Base Class")
+abstract class OpenAppWithExternalDisplayConnected
+constructor(private val rotation: Rotation = Rotation.ROTATION_0) {
+ private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation()
+ private val tapl = LauncherInstrumentation()
+ private val wmHelper = WindowManagerStateHelper(instrumentation)
+ private val device = UiDevice.getInstance(instrumentation)
+ private val testApp = DesktopModeAppHelper(SimpleAppHelper(instrumentation))
+ private val displayManager =
+ instrumentation.getContext().getSystemService(Context.DISPLAY_SERVICE) as DisplayManager
+ private var virtualDisplay: VirtualDisplay? = null
+
+ private val extendedDisplaySettingsSession =
+ ExtendedDisplaySettingsSession(instrumentation.context.contentResolver)
+
+ @Rule @JvmField val testSetupRule = Utils.testSetupRule(NavBar.MODE_GESTURAL, rotation)
+
+ @Before
+ fun setup() {
+ Assume.assumeTrue(Flags.enableDesktopWindowingMode() && tapl.isTablet)
+ Assume.assumeTrue(Flags.enableDisplayWindowingModeSwitching())
+ tapl.setEnableRotation(true)
+ tapl.setExpectedRotation(rotation.value)
+ ChangeDisplayOrientationRule.setRotation(rotation)
+ extendedDisplaySettingsSession.open()
+ virtualDisplay = displayManager.createVirtualDisplay(
+ /* displayName= */ DISPLAY_NAME,
+ /* width= */ DISPLAY_WIDTH,
+ /* height= */ DISPLAY_HEIGHT,
+ /* densityDpi= */ DisplayMetrics.DENSITY_DEFAULT,
+ /* surface= */ null,
+ /* flags= */ DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC or
+ DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY or
+ DisplayManager.VIRTUAL_DISPLAY_FLAG_TRUSTED
+ )
+ }
+
+ @Test
+ open fun openAppWithExternalDisplayConnected() {
+ testApp.open()
+ }
+
+ @After
+ fun teardown() {
+ testApp.exit(wmHelper)
+ virtualDisplay?.let {
+ it.release()
+ }
+ extendedDisplaySettingsSession.close()
+ }
+
+ companion object {
+ const val DISPLAY_NAME = "testVirtualDisplay"
+ const val DISPLAY_HEIGHT = 600
+ const val DISPLAY_WIDTH = 800
+ }
+}
diff --git a/libs/WindowManager/Shell/tests/e2e/utils/src/com/android/wm/shell/ExtendedDisplaySettingsSession.kt b/libs/WindowManager/Shell/tests/e2e/utils/src/com/android/wm/shell/ExtendedDisplaySettingsSession.kt
new file mode 100644
index 000000000000..0b2aacd00aa6
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/e2e/utils/src/com/android/wm/shell/ExtendedDisplaySettingsSession.kt
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell
+
+import android.content.ContentResolver
+import android.provider.Settings
+import android.provider.Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS
+
+class ExtendedDisplaySettingsSession(private val contentResolver: ContentResolver) {
+ private val settingName = DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS
+ private val initialValue = Settings.Global.getInt(contentResolver, settingName, 0)
+
+ fun open() {
+ Settings.Global.putInt(contentResolver, settingName, 1)
+ }
+
+ fun close() {
+ Settings.Global.putInt(contentResolver, settingName, initialValue)
+ }
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/Android.bp b/libs/WindowManager/Shell/tests/unittest/Android.bp
index 91be5f58b1f7..bf5e374c7607 100644
--- a/libs/WindowManager/Shell/tests/unittest/Android.bp
+++ b/libs/WindowManager/Shell/tests/unittest/Android.bp
@@ -64,6 +64,7 @@ android_test {
"platform-test-annotations",
"flag-junit",
"platform-parametric-runner-lib",
+ "platform-compat-test-rules",
],
libs: [
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingControllerTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingControllerTests.java
index 56948d4e2429..9f29ef71930a 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingControllerTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/activityembedding/ActivityEmbeddingControllerTests.java
@@ -271,7 +271,9 @@ public class ActivityEmbeddingControllerTests extends ActivityEmbeddingAnimation
mController.startAnimation(mTransition, info, mStartTransaction,
mFinishTransaction, mFinishCallback);
verify(mFinishCallback, never()).onTransitionFinished(any());
- mController.mergeAnimation(mTransition, info, new SurfaceControl.Transaction(),
+ mController.mergeAnimation(mTransition, info,
+ new SurfaceControl.Transaction(),
+ new SurfaceControl.Transaction(),
mTransition, (wct) -> {});
verify(mFinishCallback).onTransitionFinished(any());
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java
index e63db9a329f3..05750a54f566 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java
@@ -666,7 +666,7 @@ public class BackAnimationControllerTest extends ShellTestCase {
Transitions.TransitionFinishCallback mergeCallback =
mock(Transitions.TransitionFinishCallback.class);
mBackTransitionHandler.mergeAnimation(
- mock(IBinder.class), tInfo2, st, mock(IBinder.class), mergeCallback);
+ mock(IBinder.class), tInfo2, st, ft, mock(IBinder.class), mergeCallback);
mBackTransitionHandler.onAnimationFinished();
verify(callback).onTransitionFinished(any());
verify(mergeCallback).onTransitionFinished(any());
@@ -701,7 +701,7 @@ public class BackAnimationControllerTest extends ShellTestCase {
mBackTransitionHandler.mClosePrepareTransition = mock(IBinder.class);
mergeCallback = mock(Transitions.TransitionFinishCallback.class);
mBackTransitionHandler.mergeAnimation(mBackTransitionHandler.mClosePrepareTransition,
- tInfo2, st, mock(IBinder.class), mergeCallback);
+ tInfo2, st, ft, mock(IBinder.class), mergeCallback);
assertTrue("Change should be consumed", tInfo2.getChanges().isEmpty());
verify(callback).onTransitionFinished(any());
}
@@ -747,7 +747,7 @@ public class BackAnimationControllerTest extends ShellTestCase {
final TransitionInfo closeInfo = createTransitionInfo(TRANSIT_CLOSE, close);
Transitions.TransitionFinishCallback mergeCallback =
mock(Transitions.TransitionFinishCallback.class);
- mBackTransitionHandler.mergeAnimation(mock(IBinder.class), closeInfo, ft,
+ mBackTransitionHandler.mergeAnimation(mock(IBinder.class), closeInfo, st, ft,
mock(IBinder.class), mergeCallback);
verify(callback2).onTransitionFinished(any());
verify(mergeCallback, never()).onTransitionFinished(any());
@@ -766,7 +766,7 @@ public class BackAnimationControllerTest extends ShellTestCase {
openTaskId2, TRANSIT_OPEN, FLAG_MOVED_TO_TOP);
final TransitionInfo openInfo = createTransitionInfo(TRANSIT_OPEN, open2, close);
mergeCallback = mock(Transitions.TransitionFinishCallback.class);
- mBackTransitionHandler.mergeAnimation(mock(IBinder.class), openInfo, ft,
+ mBackTransitionHandler.mergeAnimation(mock(IBinder.class), openInfo, st, ft,
mock(IBinder.class), mergeCallback);
verify(callback3).onTransitionFinished(any());
verify(mergeCallback, never()).onTransitionFinished(any());
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleOverflowTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleOverflowTest.java
index a1d4a1a301bd..094af9652ea3 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleOverflowTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleOverflowTest.java
@@ -26,7 +26,6 @@ import android.view.WindowManager;
import androidx.test.filters.SmallTest;
-import com.android.internal.logging.testing.UiEventLoggerFake;
import com.android.wm.shell.ShellTestCase;
import org.junit.Before;
@@ -46,7 +45,6 @@ public class BubbleOverflowTest extends ShellTestCase {
private TestableBubblePositioner mPositioner;
private BubbleOverflow mOverflow;
private BubbleExpandedViewManager mExpandedViewManager;
- private BubbleLogger mBubbleLogger;
@Mock
private BubbleController mBubbleController;
@@ -60,7 +58,6 @@ public class BubbleOverflowTest extends ShellTestCase {
mExpandedViewManager = BubbleExpandedViewManager.fromBubbleController(mBubbleController);
mPositioner = new TestableBubblePositioner(mContext,
mContext.getSystemService(WindowManager.class));
- mBubbleLogger = new BubbleLogger(new UiEventLoggerFake());
when(mBubbleController.getPositioner()).thenReturn(mPositioner);
when(mBubbleController.getStackView()).thenReturn(mBubbleStackView);
@@ -80,7 +77,7 @@ public class BubbleOverflowTest extends ShellTestCase {
@Test
public void test_initialize_forBubbleBar() {
- mOverflow.initializeForBubbleBar(mExpandedViewManager, mPositioner, mBubbleLogger);
+ mOverflow.initializeForBubbleBar(mExpandedViewManager, mPositioner);
assertThat(mOverflow.getBubbleBarExpandedView()).isNotNull();
assertThat(mOverflow.getExpandedView()).isNull();
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleTest.java
index dca5fc4c2fe0..2c0ced4fd8de 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleTest.java
@@ -22,18 +22,22 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doReturn;
+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.app.Notification;
import android.app.PendingIntent;
+import android.app.TaskInfo;
+import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.ShortcutInfo;
import android.content.res.Resources;
import android.graphics.drawable.Icon;
import android.os.Bundle;
import android.os.UserHandle;
+import android.service.notification.NotificationListenerService;
import android.service.notification.StatusBarNotification;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
@@ -60,13 +64,17 @@ public class BubbleTest extends ShellTestCase {
@Mock
private StatusBarNotification mSbn;
@Mock
+ private NotificationListenerService.Ranking mRanking;
+ @Mock
private ShellExecutor mMainExecutor;
@Mock
private ShellExecutor mBgExecutor;
- private BubbleEntry mBubbleEntry;
private Bundle mExtras;
- private Bubble mBubble;
+
+ // This entry / bubble are set up with PendingIntent / Icon API for chat
+ private BubbleEntry mBubbleEntry;
+ private Bubble mChatBubble;
@Mock
private Bubbles.BubbleMetadataFlagListener mBubbleMetadataFlagListener;
@@ -83,11 +91,16 @@ public class BubbleTest extends ShellTestCase {
PendingIntent.getActivity(mContext, 0, target, PendingIntent.FLAG_MUTABLE),
Icon.createWithResource(mContext, R.drawable.bubble_ic_create_bubble))
.build();
+ ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(mContext)
+ .setId("shortcutId")
+ .build();
when(mSbn.getNotification()).thenReturn(mNotif);
when(mNotif.getBubbleMetadata()).thenReturn(metadata);
when(mSbn.getKey()).thenReturn("mock");
- mBubbleEntry = new BubbleEntry(mSbn, null, true, false, false, false);
- mBubble = new Bubble(mBubbleEntry, mBubbleMetadataFlagListener, null, mMainExecutor,
+ when(mRanking.getConversationShortcutInfo()).thenReturn(shortcutInfo);
+
+ mBubbleEntry = new BubbleEntry(mSbn, mRanking, true, false, false, false);
+ mChatBubble = new Bubble(mBubbleEntry, mBubbleMetadataFlagListener, null, mMainExecutor,
mBgExecutor);
}
@@ -152,42 +165,113 @@ public class BubbleTest extends ShellTestCase {
@Test
public void testBubbleMetadataFlagListener_change_notified() {
- assertThat(mBubble.showInShade()).isTrue();
+ assertThat(mChatBubble.showInShade()).isTrue();
- mBubble.setSuppressNotification(true);
+ mChatBubble.setSuppressNotification(true);
- assertThat(mBubble.showInShade()).isFalse();
+ assertThat(mChatBubble.showInShade()).isFalse();
- verify(mBubbleMetadataFlagListener).onBubbleMetadataFlagChanged(mBubble);
+ verify(mBubbleMetadataFlagListener).onBubbleMetadataFlagChanged(mChatBubble);
}
@Test
public void testBubbleMetadataFlagListener_noChange_doesntNotify() {
- assertThat(mBubble.showInShade()).isTrue();
+ assertThat(mChatBubble.showInShade()).isTrue();
- mBubble.setSuppressNotification(false);
+ mChatBubble.setSuppressNotification(false);
verify(mBubbleMetadataFlagListener, never()).onBubbleMetadataFlagChanged(any());
}
@Test
- public void testBubbleIsConversation_hasConversationShortcut() {
- Bubble bubble = createBubbleWithShortcut();
- assertThat(bubble.getShortcutInfo()).isNotNull();
- assertThat(bubble.isConversation()).isTrue();
+ public void testBubbleType_conversationShortcut() {
+ Bubble bubble = createChatBubble(true /* useShortcut */);
+ assertThat(bubble.isChat()).isTrue();
}
@Test
- public void testBubbleIsConversation_hasNoShortcut() {
- Bubble bubble = new Bubble(mBubbleEntry, mBubbleMetadataFlagListener, null, mMainExecutor,
- mBgExecutor);
- assertThat(bubble.getShortcutInfo()).isNull();
- assertThat(bubble.isConversation()).isFalse();
+ public void testBubbleType_conversationPendingIntent() {
+ Bubble bubble = createChatBubble(false /* useShortcut */);
+ assertThat(bubble.isChat()).isTrue();
+ }
+
+ @Test
+ public void testBubbleType_note() {
+ Bubble bubble = Bubble.createNotesBubble(createIntent(), UserHandle.of(0),
+ mock(Icon.class),
+ mMainExecutor, mBgExecutor);
+ assertThat(bubble.isNote()).isTrue();
+ }
+
+ @Test
+ public void testBubbleType_shortcut() {
+ ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(mContext)
+ .setId("mockShortcutId")
+ .build();
+ Bubble bubble = Bubble.createShortcutBubble(shortcutInfo, mMainExecutor, mBgExecutor);
+ assertThat(bubble.isShortcut()).isTrue();
+ }
+
+ @Test
+ public void testBubbleType_intent() {
+ Bubble bubble = Bubble.createAppBubble(createIntent(), UserHandle.of(0),
+ mock(Icon.class),
+ mMainExecutor, mBgExecutor);
+ assertThat(bubble.isApp()).isTrue();
+ }
+
+ @Test
+ public void testBubbleType_taskId() {
+ TaskInfo info = mock(TaskInfo.class);
+ ComponentName componentName = mock(ComponentName.class);
+ when(componentName.getPackageName()).thenReturn(mContext.getPackageName());
+ info.taskId = 1;
+ info.baseActivity = componentName;
+ Bubble bubble = Bubble.createTaskBubble(info, UserHandle.of(0),
+ mock(Icon.class),
+ mMainExecutor, mBgExecutor);
+ assertThat(bubble.isApp()).isTrue();
+ }
+
+ @Test
+ public void testShowAppBadge_chat() {
+ Bubble bubble = createChatBubble(true /* useShortcut */);
+ assertThat(bubble.isChat()).isTrue();
+ assertThat(bubble.showAppBadge()).isTrue();
+ }
+
+ @Test
+ public void testShowAppBadge_note() {
+ Bubble bubble = Bubble.createNotesBubble(createIntent(), UserHandle.of(0),
+ mock(Icon.class),
+ mMainExecutor, mBgExecutor);
+ assertThat(bubble.isNote()).isTrue();
+ assertThat(bubble.showAppBadge()).isTrue();
+ }
+
+ @Test
+ public void testShowAppBadge_app() {
+ Bubble bubble = Bubble.createAppBubble(createIntent(), UserHandle.of(0),
+ mock(Icon.class),
+ mMainExecutor, mBgExecutor);
+ assertThat(bubble.isApp()).isTrue();
+ assertThat(bubble.showAppBadge()).isFalse();
+ }
+
+ @Test
+ public void testShowAppBadge_shortcut() {
+ ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(mContext)
+ .setId("mockShortcutId")
+ .build();
+ Bubble bubble = Bubble.createShortcutBubble(shortcutInfo,
+ mMainExecutor, mBgExecutor);
+ assertThat(bubble.isShortcut()).isTrue();
+ assertThat(bubble.showAppBadge()).isTrue();
}
@Test
public void testBubbleAsBubbleBarBubble_withShortcut() {
- Bubble bubble = createBubbleWithShortcut();
+ Bubble bubble = createChatBubble(true /* useShortcut */);
BubbleInfo bubbleInfo = bubble.asBubbleBarBubble();
assertThat(bubble.getShortcutInfo()).isNotNull();
@@ -199,7 +283,7 @@ public class BubbleTest extends ShellTestCase {
}
@Test
- public void testBubbleAsBubbleBarBubble_withoutShortcut() {
+ public void testBubbleAsBubbleBarBubble_withIntent() {
Intent intent = new Intent(mContext, BubblesTestActivity.class);
intent.setPackage(mContext.getPackageName());
Bubble bubble = Bubble.createAppBubble(intent, new UserHandle(1 /* userId */),
@@ -213,12 +297,23 @@ public class BubbleTest extends ShellTestCase {
assertThat(bubbleInfo.getPackageName()).isEqualTo(bubble.getPackageName());
}
- private Bubble createBubbleWithShortcut() {
- ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(mContext)
- .setId("mockShortcutId")
- .build();
- return new Bubble("mockKey", shortcutInfo, 10, Resources.ID_NULL,
- "mockTitle", 0 /* taskId */, "mockLocus", true /* isDismissible */,
- mMainExecutor, mBgExecutor, mBubbleMetadataFlagListener);
+ private Intent createIntent() {
+ Intent intent = new Intent(mContext, BubblesTestActivity.class);
+ intent.setPackage(mContext.getPackageName());
+ return intent;
+ }
+
+ private Bubble createChatBubble(boolean useShortcut) {
+ if (useShortcut) {
+ ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(mContext)
+ .setId("mockShortcutId")
+ .build();
+ return new Bubble("mockKey", shortcutInfo, 10, Resources.ID_NULL,
+ "mockTitle", 0 /* taskId */, "mockLocus", true /* isDismissible */,
+ mMainExecutor, mBgExecutor, mBubbleMetadataFlagListener);
+ } else {
+ return new Bubble(mBubbleEntry, mBubbleMetadataFlagListener, null, mMainExecutor,
+ mBgExecutor);
+ }
}
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleTransitionsTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleTransitionsTest.java
index 9d0ddbc6de12..4198f5904566 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleTransitionsTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleTransitionsTest.java
@@ -78,8 +78,6 @@ public class BubbleTransitionsTest extends ShellTestCase {
@Mock
private BubblePositioner mBubblePositioner;
@Mock
- private BubbleLogger mBubbleLogger;
- @Mock
private BubbleStackView mStackView;
@Mock
private BubbleBarLayerView mLayerView;
@@ -139,7 +137,7 @@ public class BubbleTransitionsTest extends ShellTestCase {
ActivityManager.RunningTaskInfo taskInfo = setupBubble();
final BubbleTransitions.BubbleTransition bt = mBubbleTransitions.startConvertToBubble(
mBubble, taskInfo, mExpandedViewManager, mTaskViewFactory, mBubblePositioner,
- mBubbleLogger, mStackView, mLayerView, mIconFactory, false);
+ mStackView, mLayerView, mIconFactory, false);
final BubbleTransitions.ConvertToBubble ctb = (BubbleTransitions.ConvertToBubble) bt;
ctb.onInflated(mBubble);
when(mLayerView.canExpandView(any())).thenReturn(true);
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleViewInfoTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleViewInfoTest.kt
index 417b43a9c6c0..22cc65d8ffaf 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleViewInfoTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleViewInfoTest.kt
@@ -34,7 +34,6 @@ import com.android.wm.shell.ShellTaskOrganizer
import com.android.wm.shell.ShellTestCase
import com.android.wm.shell.TestShellExecutor
import com.android.wm.shell.bubbles.bar.BubbleBarLayerView
-import com.android.wm.shell.bubbles.properties.BubbleProperties
import com.android.wm.shell.common.DisplayController
import com.android.wm.shell.common.DisplayImeController
import com.android.wm.shell.common.DisplayInsetsController
@@ -143,7 +142,7 @@ class BubbleViewInfoTest : ShellTestCase() {
mock<Transitions>(),
mock<SyncTransactionQueue>(),
mock<IWindowManager>(),
- mock<BubbleProperties>()
+ BubbleResizabilityChecker()
)
val bubbleStackViewManager = BubbleStackViewManager.fromBubbleController(bubbleController)
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/InputChannelSupplierTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/InputChannelSupplierTest.kt
new file mode 100644
index 000000000000..09c2faaa2670
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/InputChannelSupplierTest.kt
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.common
+
+import android.testing.AndroidTestingRunner
+import android.view.InputChannel
+import androidx.test.filters.SmallTest
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/**
+ * Tests for [InputChannelSupplier].
+ *
+ * Build/Install/Run:
+ * atest WMShellUnitTests:InputChannelSupplierTest
+ */
+@RunWith(AndroidTestingRunner::class)
+@SmallTest
+class InputChannelSupplierTest {
+
+ @Test
+ fun `InputChannelSupplier supplies an InputChannel`() {
+ val supplier = InputChannelSupplier()
+ SuppliersUtilsTest.assertSupplierProvidesValue(supplier) {
+ it is InputChannel
+ }
+ }
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/SuppliersUtilsTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/SuppliersUtilsTest.kt
new file mode 100644
index 000000000000..8468c636542e
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/SuppliersUtilsTest.kt
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.common
+
+import java.util.function.Supplier
+
+/**
+ * Utility class we can use to test a []Supplier<T>] of any parameters type [T].
+ */
+class SuppliersUtilsTest {
+
+ companion object {
+ /**
+ * Allows to check that the object supplied is asserts what in [assertion].
+ */
+ fun <T> assertSupplierProvidesValue(supplier: Supplier<T>, assertion: (Any?) -> Boolean) {
+ assert(assertion(supplier.get())) { "Supplier didn't provided what is expected" }
+ }
+ }
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/UserProfileContextsTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/UserProfileContextsTest.kt
index ef0b8ab14c81..56d401779654 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/UserProfileContextsTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/UserProfileContextsTest.kt
@@ -69,6 +69,7 @@ class UserProfileContextsTest : ShellTestCase() {
}
.whenever(baseContext)
.createContextAsUser(any<UserHandle>(), anyInt())
+ doReturn(DEFAULT_USER).whenever(baseContext).userId
// Define users and profiles
val currentUser = ActivityManager.getCurrentUser()
whenever(userManager.getProfiles(eq(currentUser)))
@@ -136,6 +137,25 @@ class UserProfileContextsTest : ShellTestCase() {
assertThat(userProfilesContexts[SECOND_PROFILE]?.userId).isEqualTo(SECOND_PROFILE)
}
+ @Test
+ fun onUserProfilesChanged_keepDefaultUser() {
+ val userChangeListener = retrieveUserChangeListener()
+ val newUserContext = createContextForUser(SECOND_USER)
+
+ userChangeListener.onUserChanged(SECOND_USER, newUserContext)
+ userChangeListener.onUserProfilesChanged(SECOND_PROFILES)
+
+ assertThat(userProfilesContexts[DEFAULT_USER]).isEqualTo(baseContext)
+ }
+
+ @Test
+ fun getOrCreate_newUser_shouldCreateTheUser() {
+ val newContext = userProfilesContexts.getOrCreate(SECOND_USER)
+
+ assertThat(newContext).isNotNull()
+ assertThat(userProfilesContexts[SECOND_USER]).isEqualTo(newContext)
+ }
+
private fun retrieveUserChangeListener(): UserChangeListener {
val captor = argumentCaptor<UserChangeListener>()
@@ -155,6 +175,7 @@ class UserProfileContextsTest : ShellTestCase() {
const val MAIN_PROFILE = 11
const val SECOND_PROFILE = 15
const val SECOND_PROFILE_2 = 17
+ const val DEFAULT_USER = 25
val SECOND_PROFILES =
listOf(
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/WindowSessionSupplierTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/WindowSessionSupplierTest.kt
new file mode 100644
index 000000000000..33e8d78d6a15
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/WindowSessionSupplierTest.kt
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.common
+
+import android.testing.AndroidTestingRunner
+import android.view.IWindowSession
+import androidx.test.filters.SmallTest
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/**
+ * Tests for [WindowSessionSupplier].
+ *
+ * Build/Install/Run:
+ * atest WMShellUnitTests:WindowSessionSupplierTest
+ */
+@RunWith(AndroidTestingRunner::class)
+@SmallTest
+class WindowSessionSupplierTest {
+
+ @Test
+ fun `InputChannelSupplier supplies an InputChannel`() {
+ val supplier = WindowSessionSupplier()
+ SuppliersUtilsTest.assertSupplierProvidesValue(supplier) {
+ it is IWindowSession
+ }
+ }
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/pip/PipDesktopStateTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/pip/PipDesktopStateTest.java
new file mode 100644
index 000000000000..75ad621e1cad
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/pip/PipDesktopStateTest.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.common.pip;
+
+import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
+import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
+
+import static com.android.window.flags.Flags.FLAG_ENABLE_CONNECTED_DISPLAYS_PIP;
+import static com.android.window.flags.Flags.FLAG_ENABLE_DESKTOP_WINDOWING_PIP;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertFalse;
+import static junit.framework.Assert.assertTrue;
+
+import static org.mockito.Mockito.when;
+
+import android.app.ActivityManager;
+import android.platform.test.annotations.EnableFlags;
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper;
+import android.window.DisplayAreaInfo;
+import android.window.WindowContainerToken;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.wm.shell.RootTaskDisplayAreaOrganizer;
+import com.android.wm.shell.desktopmode.DesktopRepository;
+import com.android.wm.shell.desktopmode.DesktopUserRepositories;
+import com.android.wm.shell.desktopmode.desktopwallpaperactivity.DesktopWallpaperActivityTokenProvider;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+
+import java.util.Optional;
+
+/**
+ * Unit test against {@link PipDesktopState}.
+ */
+@SmallTest
+@TestableLooper.RunWithLooper
+@RunWith(AndroidTestingRunner.class)
+@EnableFlags(FLAG_ENABLE_DESKTOP_WINDOWING_PIP)
+public class PipDesktopStateTest {
+ @Mock private PipDisplayLayoutState mMockPipDisplayLayoutState;
+ @Mock private Optional<DesktopUserRepositories> mMockDesktopUserRepositoriesOptional;
+ @Mock private Optional<DesktopWallpaperActivityTokenProvider>
+ mMockDesktopWallpaperActivityTokenProviderOptional;
+ @Mock private DesktopUserRepositories mMockDesktopUserRepositories;
+ @Mock private DesktopWallpaperActivityTokenProvider mMockDesktopWallpaperActivityTokenProvider;
+ @Mock private DesktopRepository mMockDesktopRepository;
+ @Mock private RootTaskDisplayAreaOrganizer mMockRootTaskDisplayAreaOrganizer;
+ @Mock private ActivityManager.RunningTaskInfo mMockTaskInfo;
+
+ private static final int DISPLAY_ID = 1;
+ private DisplayAreaInfo mDefaultTda;
+ private PipDesktopState mPipDesktopState;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ when(mMockDesktopUserRepositoriesOptional.get()).thenReturn(mMockDesktopUserRepositories);
+ when(mMockDesktopWallpaperActivityTokenProviderOptional.get()).thenReturn(
+ mMockDesktopWallpaperActivityTokenProvider);
+ when(mMockDesktopUserRepositories.getCurrent()).thenReturn(mMockDesktopRepository);
+ when(mMockDesktopUserRepositoriesOptional.isPresent()).thenReturn(true);
+ when(mMockDesktopWallpaperActivityTokenProviderOptional.isPresent()).thenReturn(true);
+
+ when(mMockTaskInfo.getDisplayId()).thenReturn(DISPLAY_ID);
+ when(mMockPipDisplayLayoutState.getDisplayId()).thenReturn(DISPLAY_ID);
+
+ mDefaultTda = new DisplayAreaInfo(Mockito.mock(WindowContainerToken.class), DISPLAY_ID, 0);
+ when(mMockRootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DISPLAY_ID)).thenReturn(
+ mDefaultTda);
+
+ mPipDesktopState = new PipDesktopState(mMockPipDisplayLayoutState,
+ mMockDesktopUserRepositoriesOptional,
+ mMockDesktopWallpaperActivityTokenProviderOptional,
+ mMockRootTaskDisplayAreaOrganizer);
+ }
+
+ @Test
+ public void isDesktopWindowingPipEnabled_returnsTrue() {
+ assertTrue(mPipDesktopState.isDesktopWindowingPipEnabled());
+ }
+
+ @Test
+ public void isDesktopWindowingPipEnabled_desktopRepositoryEmpty_returnsFalse() {
+ when(mMockDesktopUserRepositoriesOptional.isPresent()).thenReturn(false);
+
+ assertFalse(mPipDesktopState.isDesktopWindowingPipEnabled());
+ }
+
+ @Test
+ public void isDesktopWindowingPipEnabled_desktopWallpaperEmpty_returnsFalse() {
+ when(mMockDesktopWallpaperActivityTokenProviderOptional.isPresent()).thenReturn(false);
+
+ assertFalse(mPipDesktopState.isDesktopWindowingPipEnabled());
+ }
+
+ @Test
+ @EnableFlags(FLAG_ENABLE_CONNECTED_DISPLAYS_PIP)
+ public void isConnectedDisplaysPipEnabled_returnsTrue() {
+ assertTrue(mPipDesktopState.isConnectedDisplaysPipEnabled());
+ }
+
+ @Test
+ public void isPipEnteringInDesktopMode_visibleCountZero_minimizedPipPresent_returnsTrue() {
+ when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(0);
+ when(mMockDesktopRepository.isMinimizedPipPresentInDisplay(DISPLAY_ID)).thenReturn(true);
+
+ assertTrue(mPipDesktopState.isPipEnteringInDesktopMode(mMockTaskInfo));
+ }
+
+ @Test
+ public void isPipEnteringInDesktopMode_visibleCountNonzero_minimizedPipAbsent_returnsTrue() {
+ when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(1);
+ when(mMockDesktopRepository.isMinimizedPipPresentInDisplay(DISPLAY_ID)).thenReturn(false);
+
+ assertTrue(mPipDesktopState.isPipEnteringInDesktopMode(mMockTaskInfo));
+ }
+
+ @Test
+ public void isPipEnteringInDesktopMode_visibleCountZero_minimizedPipAbsent_returnsFalse() {
+ when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(0);
+ when(mMockDesktopRepository.isMinimizedPipPresentInDisplay(DISPLAY_ID)).thenReturn(false);
+
+ assertFalse(mPipDesktopState.isPipEnteringInDesktopMode(mMockTaskInfo));
+ }
+
+ @Test
+ public void shouldExitPipExitDesktopMode_visibleCountZero_wallpaperInvisible_returnsFalse() {
+ when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(0);
+ when(mMockDesktopWallpaperActivityTokenProvider.isWallpaperActivityVisible(
+ DISPLAY_ID)).thenReturn(false);
+
+ assertFalse(mPipDesktopState.shouldExitPipExitDesktopMode());
+ }
+
+ @Test
+ public void shouldExitPipExitDesktopMode_visibleCountNonzero_wallpaperVisible_returnsFalse() {
+ when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(1);
+ when(mMockDesktopWallpaperActivityTokenProvider.isWallpaperActivityVisible(
+ DISPLAY_ID)).thenReturn(true);
+
+ assertFalse(mPipDesktopState.shouldExitPipExitDesktopMode());
+ }
+
+ @Test
+ public void shouldExitPipExitDesktopMode_visibleCountZero_wallpaperVisible_returnsTrue() {
+ when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(0);
+ when(mMockDesktopWallpaperActivityTokenProvider.isWallpaperActivityVisible(
+ DISPLAY_ID)).thenReturn(true);
+
+ assertTrue(mPipDesktopState.shouldExitPipExitDesktopMode());
+ }
+
+ @Test
+ public void getOutPipWindowingMode_exitToDesktop_displayFreeform_returnsUndefined() {
+ // Set visible task count to 1 so isPipExitingToDesktopMode returns true
+ when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(1);
+ setDisplayWindowingMode(WINDOWING_MODE_FREEFORM);
+
+ assertEquals(WINDOWING_MODE_UNDEFINED, mPipDesktopState.getOutPipWindowingMode());
+ }
+
+ @Test
+ public void getOutPipWindowingMode_exitToDesktop_displayFullscreen_returnsFreeform() {
+ // Set visible task count to 1 so isPipExitingToDesktopMode returns true
+ when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(1);
+ setDisplayWindowingMode(WINDOWING_MODE_FULLSCREEN);
+
+ assertEquals(WINDOWING_MODE_FREEFORM, mPipDesktopState.getOutPipWindowingMode());
+ }
+
+ @Test
+ public void getOutPipWindowingMode_exitToFullscreen_displayFullscreen_returnsUndefined() {
+ setDisplayWindowingMode(WINDOWING_MODE_FULLSCREEN);
+
+ assertEquals(WINDOWING_MODE_UNDEFINED, mPipDesktopState.getOutPipWindowingMode());
+ }
+
+ private void setDisplayWindowingMode(int windowingMode) {
+ mDefaultTda.configuration.windowConfiguration.setWindowingMode(windowingMode);
+ }
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/split/DividerViewTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/split/DividerViewTest.java
index fd3d3b5b6e2f..8c34c1946702 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/split/DividerViewTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/split/DividerViewTest.java
@@ -36,6 +36,7 @@ import androidx.test.annotation.UiThreadTest;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
+import com.android.wm.shell.R;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.ShellTestCase;
import com.android.wm.shell.common.DisplayController;
@@ -66,9 +67,9 @@ public class DividerViewTest extends ShellTestCase {
public void setup() {
MockitoAnnotations.initMocks(this);
Configuration configuration = getConfiguration();
- mSplitLayout = new SplitLayout("TestSplitLayout", mContext, configuration,
+ mSplitLayout = spy(new SplitLayout("TestSplitLayout", mContext, configuration,
mSplitLayoutHandler, mCallbacks, mDisplayController, mDisplayImeController,
- mTaskOrganizer, SplitLayout.PARALLAX_NONE, mSplitState, mHandler);
+ mTaskOrganizer, SplitLayout.PARALLAX_NONE, mSplitState, mHandler));
SplitWindowManager splitWindowManager = new SplitWindowManager("TestSplitWindowManager",
mContext,
configuration, mCallbacks);
@@ -98,6 +99,14 @@ public class DividerViewTest extends ShellTestCase {
"false", false);
}
+ @Test
+ public void swapDividerActionForA11y() {
+ mDividerView.setAccessibilityDelegate(mDividerView.mHandleDelegate);
+ mDividerView.getAccessibilityDelegate().performAccessibilityAction(mDividerView,
+ R.id.action_swap_apps, null);
+ verify(mSplitLayout, times(1)).onDoubleTappedDivider();
+ }
+
private static MotionEvent getMotionEvent(long eventTime, int action, float x, float y) {
MotionEvent.PointerProperties properties = new MotionEvent.PointerProperties();
properties.id = 0;
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/transition/SurfaceBuilderSupplierTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/transition/SurfaceBuilderSupplierTest.kt
new file mode 100644
index 000000000000..f88f72356759
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/transition/SurfaceBuilderSupplierTest.kt
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.common.transition
+
+import android.testing.AndroidTestingRunner
+import android.view.SurfaceControl
+import androidx.test.filters.SmallTest
+import com.android.wm.shell.common.SuppliersUtilsTest
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/**
+ * Tests for [SurfaceBuilderSupplier].
+ *
+ * Build/Install/Run:
+ * atest WMShellUnitTests:SurfaceBuilderSupplierTest
+ */
+@RunWith(AndroidTestingRunner::class)
+@SmallTest
+class SurfaceBuilderSupplierTest {
+
+ @Test
+ fun `SurfaceBuilderSupplier supplies an SurfaceControl Builder`() {
+ val supplier = SurfaceBuilderSupplier()
+ SuppliersUtilsTest.assertSupplierProvidesValue(supplier) {
+ it is SurfaceControl.Builder
+ }
+ }
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/transition/TransactionSupplierTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/transition/TransactionSupplierTest.kt
new file mode 100644
index 000000000000..12b4d8b5f96b
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/transition/TransactionSupplierTest.kt
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.common.transition
+
+import android.testing.AndroidTestingRunner
+import android.view.SurfaceControl
+import androidx.test.filters.SmallTest
+import com.android.wm.shell.common.SuppliersUtilsTest
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/**
+ * Tests for [TransactionSupplier].
+ *
+ * Build/Install/Run:
+ * atest WMShellUnitTests:TransactionSupplierTest
+ */
+@RunWith(AndroidTestingRunner::class)
+@SmallTest
+class TransactionSupplierTest {
+
+ @Test
+ fun `SurfaceBuilderSupplier supplies a Transaction`() {
+ val supplier = TransactionSupplier()
+ SuppliersUtilsTest.assertSupplierProvidesValue(supplier) {
+ it is SurfaceControl.Transaction
+ }
+ }
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIControllerTest.java
index b5c9fa151dac..2264adec9a19 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIControllerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIControllerTest.java
@@ -49,6 +49,7 @@ import androidx.test.filters.SmallTest;
import com.android.window.flags.Flags;
import com.android.wm.shell.ShellTaskOrganizer;
+import com.android.wm.shell.ShellTestCase;
import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.DisplayImeController;
import com.android.wm.shell.common.DisplayInsetsController;
@@ -85,7 +86,7 @@ import org.mockito.MockitoAnnotations;
*/
@RunWith(AndroidTestingRunner.class)
@SmallTest
-public class CompatUIControllerTest extends CompatUIShellTestCase {
+public class CompatUIControllerTest extends ShellTestCase {
private static final int DISPLAY_ID = 0;
private static final int TASK_ID = 12;
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUILayoutTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUILayoutTest.java
index 2117b062bf57..c567b5fbbb70 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUILayoutTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUILayoutTest.java
@@ -38,6 +38,7 @@ import androidx.test.filters.SmallTest;
import com.android.window.flags.Flags;
import com.android.wm.shell.R;
import com.android.wm.shell.ShellTaskOrganizer;
+import com.android.wm.shell.ShellTestCase;
import com.android.wm.shell.common.DisplayLayout;
import com.android.wm.shell.common.SyncTransactionQueue;
import com.android.wm.shell.compatui.CompatUIController.CompatUIHintsState;
@@ -62,7 +63,7 @@ import java.util.function.Consumer;
*/
@RunWith(AndroidTestingRunner.class)
@SmallTest
-public class CompatUILayoutTest extends CompatUIShellTestCase {
+public class CompatUILayoutTest extends ShellTestCase {
private static final int TASK_ID = 1;
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIStatusManagerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIStatusManagerTest.java
index 0b37648faeec..8fd7c0ec3099 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIStatusManagerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIStatusManagerTest.java
@@ -27,6 +27,8 @@ import android.testing.AndroidTestingRunner;
import androidx.test.filters.SmallTest;
+import com.android.wm.shell.ShellTestCase;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -42,7 +44,7 @@ import java.util.function.IntSupplier;
*/
@RunWith(AndroidTestingRunner.class)
@SmallTest
-public class CompatUIStatusManagerTest extends CompatUIShellTestCase {
+public class CompatUIStatusManagerTest extends ShellTestCase {
private FakeCompatUIStatusManagerTest mTestState;
private CompatUIStatusManager mStatusManager;
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIWindowManagerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIWindowManagerTest.java
index 010474e42195..0562bb835671 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIWindowManagerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIWindowManagerTest.java
@@ -53,6 +53,7 @@ import androidx.test.filters.SmallTest;
import com.android.window.flags.Flags;
import com.android.wm.shell.ShellTaskOrganizer;
+import com.android.wm.shell.ShellTestCase;
import com.android.wm.shell.common.DisplayLayout;
import com.android.wm.shell.common.SyncTransactionQueue;
import com.android.wm.shell.compatui.CompatUIController.CompatUIHintsState;
@@ -77,7 +78,7 @@ import java.util.function.Consumer;
*/
@RunWith(AndroidTestingRunner.class)
@SmallTest
-public class CompatUIWindowManagerTest extends CompatUIShellTestCase {
+public class CompatUIWindowManagerTest extends ShellTestCase {
private static final int TASK_ID = 1;
private static final int TASK_WIDTH = 2000;
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/LetterboxEduDialogLayoutTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/LetterboxEduDialogLayoutTest.java
index e786fef1855c..c6884ea17302 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/LetterboxEduDialogLayoutTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/LetterboxEduDialogLayoutTest.java
@@ -32,6 +32,7 @@ import android.view.View;
import androidx.test.filters.SmallTest;
import com.android.wm.shell.R;
+import com.android.wm.shell.ShellTestCase;
import org.junit.Before;
import org.junit.Test;
@@ -47,7 +48,7 @@ import org.mockito.MockitoAnnotations;
*/
@RunWith(AndroidTestingRunner.class)
@SmallTest
-public class LetterboxEduDialogLayoutTest extends CompatUIShellTestCase {
+public class LetterboxEduDialogLayoutTest extends ShellTestCase {
@Mock
private Runnable mDismissCallback;
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/LetterboxEduWindowManagerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/LetterboxEduWindowManagerTest.java
index 09fc082a63e3..cbf5d1bb65dd 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/LetterboxEduWindowManagerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/LetterboxEduWindowManagerTest.java
@@ -62,6 +62,7 @@ import androidx.test.filters.SmallTest;
import com.android.window.flags.Flags;
import com.android.wm.shell.R;
import com.android.wm.shell.ShellTaskOrganizer;
+import com.android.wm.shell.ShellTestCase;
import com.android.wm.shell.TestShellExecutor;
import com.android.wm.shell.common.DisplayLayout;
import com.android.wm.shell.common.DockStateReader;
@@ -90,7 +91,7 @@ import java.util.function.Consumer;
*/
@RunWith(AndroidTestingRunner.class)
@SmallTest
-public class LetterboxEduWindowManagerTest extends CompatUIShellTestCase {
+public class LetterboxEduWindowManagerTest extends ShellTestCase {
private static final int USER_ID_1 = 1;
private static final int USER_ID_2 = 2;
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/ReachabilityEduLayoutTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/ReachabilityEduLayoutTest.java
index 02c099b3cfb2..31ea8f76359f 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/ReachabilityEduLayoutTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/ReachabilityEduLayoutTest.java
@@ -34,6 +34,7 @@ import android.view.View;
import androidx.test.filters.SmallTest;
import com.android.wm.shell.R;
+import com.android.wm.shell.ShellTestCase;
import org.junit.Before;
import org.junit.Test;
@@ -50,7 +51,7 @@ import org.mockito.MockitoAnnotations;
@RunWith(AndroidTestingRunner.class)
@SmallTest
@TestableLooper.RunWithLooper(setAsMainLooper = true)
-public class ReachabilityEduLayoutTest extends CompatUIShellTestCase {
+public class ReachabilityEduLayoutTest extends ShellTestCase {
private ReachabilityEduLayout mLayout;
private View mMoveUpButton;
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/ReachabilityEduWindowManagerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/ReachabilityEduWindowManagerTest.java
index fa04e070250e..1b2c0944777e 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/ReachabilityEduWindowManagerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/ReachabilityEduWindowManagerTest.java
@@ -30,6 +30,7 @@ import android.testing.AndroidTestingRunner;
import androidx.test.filters.SmallTest;
import com.android.wm.shell.ShellTaskOrganizer;
+import com.android.wm.shell.ShellTestCase;
import com.android.wm.shell.TestShellExecutor;
import com.android.wm.shell.common.DisplayLayout;
import com.android.wm.shell.common.SyncTransactionQueue;
@@ -52,7 +53,7 @@ import java.util.function.BiConsumer;
*/
@RunWith(AndroidTestingRunner.class)
@SmallTest
-public class ReachabilityEduWindowManagerTest extends CompatUIShellTestCase {
+public class ReachabilityEduWindowManagerTest extends ShellTestCase {
@Mock
private SyncTransactionQueue mSyncTransactionQueue;
@Mock
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/RestartDialogLayoutTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/RestartDialogLayoutTest.java
index 2cded9d9776c..5075453d8c73 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/RestartDialogLayoutTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/RestartDialogLayoutTest.java
@@ -34,6 +34,7 @@ import android.widget.CheckBox;
import androidx.test.filters.SmallTest;
import com.android.wm.shell.R;
+import com.android.wm.shell.ShellTestCase;
import org.junit.Before;
import org.junit.Test;
@@ -51,7 +52,7 @@ import java.util.function.Consumer;
*/
@RunWith(AndroidTestingRunner.class)
@SmallTest
-public class RestartDialogLayoutTest extends CompatUIShellTestCase {
+public class RestartDialogLayoutTest extends ShellTestCase {
@Mock private Runnable mDismissCallback;
@Mock private Consumer<Boolean> mRestartCallback;
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/RestartDialogWindowManagerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/RestartDialogWindowManagerTest.java
index ebd0f412a0a1..779a5ca10648 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/RestartDialogWindowManagerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/RestartDialogWindowManagerTest.java
@@ -28,6 +28,7 @@ import android.util.Pair;
import androidx.test.filters.SmallTest;
import com.android.wm.shell.ShellTaskOrganizer;
+import com.android.wm.shell.ShellTestCase;
import com.android.wm.shell.common.DisplayLayout;
import com.android.wm.shell.common.SyncTransactionQueue;
import com.android.wm.shell.transition.Transitions;
@@ -50,7 +51,7 @@ import java.util.function.Consumer;
*/
@RunWith(AndroidTestingRunner.class)
@SmallTest
-public class RestartDialogWindowManagerTest extends CompatUIShellTestCase {
+public class RestartDialogWindowManagerTest extends ShellTestCase {
@Mock
private SyncTransactionQueue mSyncTransactionQueue;
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/UserAspectRatioSettingsLayoutTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/UserAspectRatioSettingsLayoutTest.java
index c6532e13f3cc..2b4d5f125783 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/UserAspectRatioSettingsLayoutTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/UserAspectRatioSettingsLayoutTest.java
@@ -38,6 +38,7 @@ import androidx.test.filters.SmallTest;
import com.android.wm.shell.R;
import com.android.wm.shell.ShellTaskOrganizer;
+import com.android.wm.shell.ShellTestCase;
import com.android.wm.shell.TestShellExecutor;
import com.android.wm.shell.common.DisplayLayout;
import com.android.wm.shell.common.SyncTransactionQueue;
@@ -62,7 +63,7 @@ import java.util.function.BiConsumer;
*/
@RunWith(AndroidTestingRunner.class)
@SmallTest
-public class UserAspectRatioSettingsLayoutTest extends CompatUIShellTestCase {
+public class UserAspectRatioSettingsLayoutTest extends ShellTestCase {
private static final int TASK_ID = 1;
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/UserAspectRatioSettingsWindowManagerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/UserAspectRatioSettingsWindowManagerTest.java
index 096e900199ba..af7c1f5d7692 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/UserAspectRatioSettingsWindowManagerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/UserAspectRatioSettingsWindowManagerTest.java
@@ -54,6 +54,7 @@ import android.view.View;
import androidx.test.filters.SmallTest;
import com.android.wm.shell.ShellTaskOrganizer;
+import com.android.wm.shell.ShellTestCase;
import com.android.wm.shell.TestShellExecutor;
import com.android.wm.shell.common.DisplayLayout;
import com.android.wm.shell.common.SyncTransactionQueue;
@@ -83,7 +84,7 @@ import java.util.function.Supplier;
@RunWith(AndroidTestingRunner.class)
@RunWithLooper
@SmallTest
-public class UserAspectRatioSettingsWindowManagerTest extends CompatUIShellTestCase {
+public class UserAspectRatioSettingsWindowManagerTest extends ShellTestCase {
private static final int TASK_ID = 1;
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxControllerRobotTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxControllerRobotTest.kt
index 88cc981dd30c..e34884b103f6 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxControllerRobotTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxControllerRobotTest.kt
@@ -33,10 +33,10 @@ abstract class LetterboxControllerRobotTest {
companion object {
@JvmStatic
- private val DISPLAY_ID = 1
+ val DISPLAY_ID = 1
@JvmStatic
- private val TASK_ID = 20
+ val TASK_ID = 20
}
lateinit var letterboxController: LetterboxController
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxGestureDelegateTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxGestureDelegateTest.kt
new file mode 100644
index 000000000000..bc3416a88918
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxGestureDelegateTest.kt
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.compatui.letterbox
+
+import android.testing.AndroidTestingRunner
+import androidx.test.filters.SmallTest
+import com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn
+import com.android.wm.shell.compatui.letterbox.LetterboxEvents.motionEventAt
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.kotlin.verify
+
+/**
+ * Tests for [LetterboxGestureDelegate].
+ *
+ * Build/Install/Run:
+ * atest WMShellUnitTests:LetterboxGestureDelegateTest
+ */
+@RunWith(AndroidTestingRunner::class)
+@SmallTest
+class LetterboxGestureDelegateTest {
+
+ class DelegateTest : LetterboxGestureListener by LetterboxGestureDelegate
+
+ val delegate = DelegateTest()
+
+ @Before
+ fun setUp() {
+ spyOn(LetterboxGestureDelegate)
+ }
+
+ @Test
+ fun `When delegating all methods are invoked`() {
+ val event = motionEventAt(0f, 0f)
+ with(delegate) {
+ onDown(event)
+ onShowPress(event)
+ onSingleTapUp(event)
+ onScroll(event, event, 0f, 0f)
+ onFling(event, event, 0f, 0f)
+ onLongPress(event)
+ onSingleTapConfirmed(event)
+ onDoubleTap(event)
+ onDoubleTapEvent(event)
+ onContextClick(event)
+ }
+ with(LetterboxGestureDelegate) {
+ verify(this).onDown(event)
+ verify(this).onShowPress(event)
+ verify(this).onSingleTapUp(event)
+ verify(this).onScroll(event, event, 0f, 0f)
+ verify(this).onFling(event, event, 0f, 0f)
+ verify(this).onLongPress(event)
+ verify(this).onSingleTapConfirmed(event)
+ verify(this).onDoubleTap(event)
+ verify(this).onDoubleTapEvent(event)
+ verify(this).onContextClick(event)
+ }
+ }
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxInputControllerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxInputControllerTest.kt
new file mode 100644
index 000000000000..fa95faee4b6e
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxInputControllerTest.kt
@@ -0,0 +1,203 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.compatui.letterbox
+
+import android.content.Context
+import android.graphics.Rect
+import android.graphics.Region
+import android.os.Handler
+import android.os.Looper
+import android.testing.AndroidTestingRunner
+import android.view.IWindowSession
+import android.view.InputChannel
+import androidx.test.filters.SmallTest
+import com.android.wm.shell.ShellTestCase
+import com.android.wm.shell.common.InputChannelSupplier
+import com.android.wm.shell.common.WindowSessionSupplier
+import com.android.wm.shell.compatui.letterbox.LetterboxMatchers.asAnyMode
+import com.android.wm.shell.windowdecor.DesktopModeWindowDecorViewModelTestsBase.Companion.TAG
+import java.util.function.Consumer
+import java.util.function.Supplier
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.kotlin.any
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.times
+import org.mockito.kotlin.verify
+
+/**
+ * Tests for [LetterboxInputController].
+ *
+ * Build/Install/Run:
+ * atest WMShellUnitTests:LetterboxInputControllerTest
+ */
+@RunWith(AndroidTestingRunner::class)
+@SmallTest
+class LetterboxInputControllerTest : ShellTestCase() {
+
+ @Test
+ fun `When creation is requested the surface is created if not present`() {
+ runTestScenario { r ->
+ r.sendCreateSurfaceRequest()
+
+ r.checkInputSurfaceBuilderInvoked()
+ }
+ }
+
+ @Test
+ fun `When creation is requested multiple times the input surface is created once`() {
+ runTestScenario { r ->
+ r.sendCreateSurfaceRequest()
+ r.sendCreateSurfaceRequest()
+ r.sendCreateSurfaceRequest()
+ r.sendCreateSurfaceRequest()
+
+ r.checkInputSurfaceBuilderInvoked(times = 1)
+ }
+ }
+
+ @Test
+ fun `A different input surface is created for every key`() {
+ runTestScenario { r ->
+ r.sendCreateSurfaceRequest()
+ r.sendCreateSurfaceRequest()
+ r.sendCreateSurfaceRequest(displayId = 2)
+ r.sendCreateSurfaceRequest(displayId = 2, taskId = 2)
+ r.sendCreateSurfaceRequest(displayId = 2)
+ r.sendCreateSurfaceRequest(displayId = 2, taskId = 2)
+
+ r.checkInputSurfaceBuilderInvoked(times = 3)
+ }
+ }
+
+ @Test
+ fun `Created spy surface is removed once`() {
+ runTestScenario { r ->
+ r.sendCreateSurfaceRequest()
+ r.checkInputSurfaceBuilderInvoked()
+
+ r.sendDestroySurfaceRequest()
+ r.sendDestroySurfaceRequest()
+ r.sendDestroySurfaceRequest()
+
+ r.checkTransactionRemovedInvoked()
+ }
+ }
+ @Test
+ fun `Only existing surfaces receive visibility update`() {
+ runTestScenario { r ->
+ r.sendCreateSurfaceRequest()
+ r.sendUpdateSurfaceVisibilityRequest(visible = true)
+ r.sendUpdateSurfaceVisibilityRequest(visible = true, displayId = 20)
+
+ r.checkVisibilityUpdated(expectedVisibility = true)
+ }
+ }
+
+ @Test
+ fun `Only existing surfaces receive taskBounds update`() {
+ runTestScenario { r ->
+ r.sendUpdateSurfaceBoundsRequest(
+ taskBounds = Rect(0, 0, 2000, 1000),
+ activityBounds = Rect(500, 0, 1500, 1000)
+ )
+
+ r.checkUpdateSessionRegion(times = 0, region = Region(0, 0, 2000, 1000))
+ r.checkSurfaceSizeUpdated(times = 0, expectedWidth = 2000, expectedHeight = 1000)
+
+ r.resetTransitionTest()
+
+ r.sendCreateSurfaceRequest()
+ r.sendUpdateSurfaceBoundsRequest(
+ taskBounds = Rect(0, 0, 2000, 1000),
+ activityBounds = Rect(500, 0, 1500, 1000)
+ )
+ r.checkUpdateSessionRegion(region = Region(0, 0, 2000, 1000))
+ r.checkSurfaceSizeUpdated(expectedWidth = 2000, expectedHeight = 1000)
+ }
+ }
+
+ /**
+ * Runs a test scenario providing a Robot.
+ */
+ fun runTestScenario(consumer: Consumer<InputLetterboxControllerRobotTest>) {
+ consumer.accept(InputLetterboxControllerRobotTest(mContext).apply { initController() })
+ }
+
+ class InputLetterboxControllerRobotTest(private val context: Context) :
+ LetterboxControllerRobotTest() {
+
+ private val inputSurfaceBuilder: LetterboxInputSurfaceBuilder
+ private val handler = Handler(Looper.getMainLooper())
+ private val listener: LetterboxGestureListener
+ private val listenerSupplier: Supplier<LetterboxGestureListener>
+ private val windowSessionSupplier: WindowSessionSupplier
+ private val windowSession: IWindowSession
+ private val inputChannelSupplier: InputChannelSupplier
+
+ init {
+ inputSurfaceBuilder = getLetterboxInputSurfaceBuilderMock()
+ listener = mock<LetterboxGestureListener>()
+ listenerSupplier = mock<Supplier<LetterboxGestureListener>>()
+ doReturn(LetterboxGestureDelegate).`when`(listenerSupplier).get()
+ windowSessionSupplier = mock<WindowSessionSupplier>()
+ windowSession = mock<IWindowSession>()
+ doReturn(windowSession).`when`(windowSessionSupplier).get()
+ inputChannelSupplier = mock<InputChannelSupplier>()
+ val inputChannels = InputChannel.openInputChannelPair(TAG)
+ inputChannels.first().dispose()
+ doReturn(inputChannels[1]).`when`(inputChannelSupplier).get()
+ }
+
+ override fun buildController(): LetterboxController =
+ LetterboxInputController(
+ context,
+ handler,
+ inputSurfaceBuilder,
+ listenerSupplier,
+ windowSessionSupplier,
+ inputChannelSupplier
+ )
+
+ fun checkInputSurfaceBuilderInvoked(
+ times: Int = 1,
+ name: String = "",
+ callSite: String = ""
+ ) {
+ verify(inputSurfaceBuilder, times(times)).createInputSurface(
+ eq(transaction),
+ eq(parentLeash),
+ name.asAnyMode(),
+ callSite.asAnyMode()
+ )
+ }
+
+ fun checkUpdateSessionRegion(times: Int = 1, displayId: Int = DISPLAY_ID, region: Region) {
+ verify(windowSession, times(times)).updateInputChannel(
+ any(),
+ eq(displayId),
+ any(),
+ any(),
+ any(),
+ any(),
+ eq(region)
+ )
+ }
+ }
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxTestUtils.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxTestUtils.kt
index 2c06dfda7917..3ce1fec32a16 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxTestUtils.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/LetterboxTestUtils.kt
@@ -16,6 +16,8 @@
package com.android.wm.shell.compatui.letterbox
+import android.view.MotionEvent.ACTION_DOWN
+import android.view.MotionEvent.obtain
import android.view.SurfaceControl
import org.mockito.kotlin.any
import org.mockito.kotlin.anyOrNull
@@ -37,6 +39,18 @@ fun getTransactionMock(): SurfaceControl.Transaction = mock<SurfaceControl.Trans
doReturn(this).`when`(this).setWindowCrop(anyOrNull(), any(), any())
}
+/**
+ * @return A [LetterboxInputSurfaceBuilder] mock to use in tests.
+ */
+fun getLetterboxInputSurfaceBuilderMock() = mock<LetterboxInputSurfaceBuilder>().apply {
+ doReturn(SurfaceControl()).`when`(this).createInputSurface(
+ any(),
+ any(),
+ any(),
+ any()
+ )
+}
+
// Utility to make verification mode depending on a [Boolean].
fun Boolean.asMode(): VerificationMode = if (this) times(1) else never()
@@ -47,5 +61,10 @@ object LetterboxMatchers {
fun String.asAnyMode() = asAnyMode { this.isEmpty() }
}
+object LetterboxEvents {
+ fun motionEventAt(x: Float, y: Float) =
+ obtain(0, 10, ACTION_DOWN, x, y, 0)
+}
+
private inline fun <reified T : Any> T.asAnyMode(condition: () -> Boolean) =
(if (condition()) any() else eq(this))
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopActivityOrientationChangeHandlerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopActivityOrientationChangeHandlerTest.kt
index 09ffd946ea19..d6b13610c9c1 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopActivityOrientationChangeHandlerTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopActivityOrientationChangeHandlerTest.kt
@@ -113,7 +113,7 @@ class DesktopActivityOrientationChangeHandlerTest : ShellTestCase() {
.strictness(Strictness.LENIENT)
.spyStatic(DesktopModeStatus::class.java)
.startMocking()
- doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+ doReturn(true).`when` { DesktopModeStatus.isDeviceEligibleForDesktopMode(any()) }
testScope = CoroutineScope(Dispatchers.Unconfined + SupervisorJob())
shellInit = spy(ShellInit(testExecutor))
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopBackNavigationTransitionHandlerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandlerTest.kt
index c705f5a5ac87..4c3325d4d1de 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopBackNavigationTransitionHandlerTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandlerTest.kt
@@ -45,18 +45,18 @@ import org.mockito.kotlin.whenever
@SmallTest
@RunWithLooper
@RunWith(AndroidTestingRunner::class)
-class DesktopBackNavigationTransitionHandlerTest : ShellTestCase() {
+class DesktopMinimizationTransitionHandlerTest : ShellTestCase() {
private val testExecutor = mock<ShellExecutor>()
private val closingTaskLeash = mock<SurfaceControl>()
private val displayController = mock<DisplayController>()
- private lateinit var handler: DesktopBackNavigationTransitionHandler
+ private lateinit var handler: DesktopMinimizationTransitionHandler
@Before
fun setUp() {
handler =
- DesktopBackNavigationTransitionHandler(testExecutor, testExecutor, displayController)
+ DesktopMinimizationTransitionHandler(testExecutor, testExecutor, displayController)
whenever(displayController.getDisplayContext(any())).thenReturn(mContext)
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopMixedTransitionHandlerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopMixedTransitionHandlerTest.kt
index f48bc99a8cfa..0b41952a89d7 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopMixedTransitionHandlerTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopMixedTransitionHandlerTest.kt
@@ -84,8 +84,7 @@ class DesktopMixedTransitionHandlerTest : ShellTestCase() {
@Mock lateinit var userRepositories: DesktopUserRepositories
@Mock lateinit var freeformTaskTransitionHandler: FreeformTaskTransitionHandler
@Mock lateinit var closeDesktopTaskTransitionHandler: CloseDesktopTaskTransitionHandler
- @Mock
- lateinit var desktopBackNavigationTransitionHandler: DesktopBackNavigationTransitionHandler
+ @Mock lateinit var desktopMinimizationTransitionHandler: DesktopMinimizationTransitionHandler
@Mock lateinit var desktopImmersiveController: DesktopImmersiveController
@Mock lateinit var interactionJankMonitor: InteractionJankMonitor
@Mock lateinit var mockHandler: Handler
@@ -108,7 +107,7 @@ class DesktopMixedTransitionHandlerTest : ShellTestCase() {
freeformTaskTransitionHandler,
closeDesktopTaskTransitionHandler,
desktopImmersiveController,
- desktopBackNavigationTransitionHandler,
+ desktopMinimizationTransitionHandler,
interactionJankMonitor,
mockHandler,
shellInit,
@@ -642,12 +641,12 @@ class DesktopMixedTransitionHandlerTest : ShellTestCase() {
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION)
- fun startAnimation_withMinimizingDesktopTask_callsBackNavigationHandler() {
+ fun startAnimation_withMinimizingDesktopTask_callsMinimizationHandler() {
val minimizingTask = createTask(WINDOWING_MODE_FREEFORM)
val transition = Binder()
whenever(desktopRepository.getExpandedTaskCount(any())).thenReturn(2)
whenever(
- desktopBackNavigationTransitionHandler.startAnimation(
+ desktopMinimizationTransitionHandler.startAnimation(
any(),
any(),
any(),
@@ -675,7 +674,7 @@ class DesktopMixedTransitionHandlerTest : ShellTestCase() {
)
assertTrue("Should delegate animation to back navigation transition handler", started)
- verify(desktopBackNavigationTransitionHandler)
+ verify(desktopMinimizationTransitionHandler)
.startAnimation(
eq(transition),
argThat { info -> info.changes.contains(minimizingTaskChange) },
@@ -692,7 +691,7 @@ class DesktopMixedTransitionHandlerTest : ShellTestCase() {
val transition = Binder()
whenever(desktopRepository.getExpandedTaskCount(any())).thenReturn(2)
whenever(
- desktopBackNavigationTransitionHandler.startAnimation(
+ desktopMinimizationTransitionHandler.startAnimation(
any(),
any(),
any(),
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeKeyGestureHandlerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeKeyGestureHandlerTest.kt
index 470c110fd49b..403d468a7034 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeKeyGestureHandlerTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeKeyGestureHandlerTest.kt
@@ -112,7 +112,7 @@ class DesktopModeKeyGestureHandlerTest : ShellTestCase() {
.strictness(Strictness.LENIENT)
.spyStatic(DesktopModeStatus::class.java)
.startMocking()
- doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+ doReturn(true).`when` { DesktopModeStatus.isDeviceEligibleForDesktopMode(any()) }
testScope = CoroutineScope(Dispatchers.Unconfined + SupervisorJob())
shellInit = spy(ShellInit(testExecutor))
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeVisualIndicatorTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeVisualIndicatorTest.kt
index e46d2c7147ed..8f45cf4d08fc 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeVisualIndicatorTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeVisualIndicatorTest.kt
@@ -16,25 +16,32 @@
package com.android.wm.shell.desktopmode
+import android.animation.AnimatorTestRule
import android.app.ActivityManager.RunningTaskInfo
import android.graphics.PointF
import android.graphics.Rect
+import android.platform.test.annotations.EnableFlags
import android.testing.AndroidTestingRunner
+import android.testing.TestableLooper.RunWithLooper
import android.view.SurfaceControl
import androidx.test.filters.SmallTest
import com.android.internal.policy.SystemBarUtils
+import com.android.window.flags.Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE
import com.android.wm.shell.R
import com.android.wm.shell.RootTaskDisplayAreaOrganizer
import com.android.wm.shell.ShellTestCase
import com.android.wm.shell.common.DisplayController
import com.android.wm.shell.common.DisplayLayout
import com.android.wm.shell.common.SyncTransactionQueue
+import com.android.wm.shell.shared.bubbles.BubbleDropTargetBoundsProvider
import com.google.common.truth.Truth.assertThat
import org.junit.Before
+import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mock
+import org.mockito.kotlin.any
import org.mockito.kotlin.whenever
/**
@@ -43,14 +50,20 @@ import org.mockito.kotlin.whenever
* Usage: atest WMShellUnitTests:DesktopModeVisualIndicatorTest
*/
@SmallTest
+@RunWithLooper
@RunWith(AndroidTestingRunner::class)
+@EnableFlags(FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
class DesktopModeVisualIndicatorTest : ShellTestCase() {
- @Mock private lateinit var taskInfo: RunningTaskInfo
+
+ @JvmField @Rule val animatorTestRule = AnimatorTestRule(this)
+
+ private lateinit var taskInfo: RunningTaskInfo
@Mock private lateinit var syncQueue: SyncTransactionQueue
@Mock private lateinit var displayController: DisplayController
@Mock private lateinit var taskSurface: SurfaceControl
@Mock private lateinit var taskDisplayAreaOrganizer: RootTaskDisplayAreaOrganizer
@Mock private lateinit var displayLayout: DisplayLayout
+ @Mock private lateinit var bubbleBoundsProvider: BubbleDropTargetBoundsProvider
private lateinit var visualIndicator: DesktopModeVisualIndicator
@@ -60,6 +73,10 @@ class DesktopModeVisualIndicatorTest : ShellTestCase() {
whenever(displayLayout.height()).thenReturn(DISPLAY_BOUNDS.height())
whenever(displayLayout.stableInsets()).thenReturn(STABLE_INSETS)
whenever(displayController.getDisplayLayout(anyInt())).thenReturn(displayLayout)
+ whenever(displayController.getDisplay(anyInt())).thenReturn(mContext.display)
+ whenever(bubbleBoundsProvider.getBubbleBarExpandedViewDropTargetBounds(any()))
+ .thenReturn(Rect())
+ taskInfo = DesktopTestHelpers.createFullscreenTask()
}
@Test
@@ -173,6 +190,40 @@ class DesktopModeVisualIndicatorTest : ShellTestCase() {
}
@Test
+ fun testBubbleLeftRegionCalculation() {
+ val bubbleRegionWidth =
+ context.resources.getDimensionPixelSize(R.dimen.bubble_transform_area_width)
+ val bubbleRegionHeight =
+ context.resources.getDimensionPixelSize(R.dimen.bubble_transform_area_height)
+ val expectedRect = Rect(0, 1600 - bubbleRegionHeight, bubbleRegionWidth, 1600)
+
+ createVisualIndicator(DesktopModeVisualIndicator.DragStartState.FROM_FULLSCREEN)
+ var testRegion = visualIndicator.calculateBubbleLeftRegion(displayLayout)
+ assertThat(testRegion.bounds).isEqualTo(expectedRect)
+
+ createVisualIndicator(DesktopModeVisualIndicator.DragStartState.FROM_SPLIT)
+ testRegion = visualIndicator.calculateBubbleLeftRegion(displayLayout)
+ assertThat(testRegion.bounds).isEqualTo(expectedRect)
+ }
+
+ @Test
+ fun testBubbleRightRegionCalculation() {
+ val bubbleRegionWidth =
+ context.resources.getDimensionPixelSize(R.dimen.bubble_transform_area_width)
+ val bubbleRegionHeight =
+ context.resources.getDimensionPixelSize(R.dimen.bubble_transform_area_height)
+ val expectedRect = Rect(2400 - bubbleRegionWidth, 1600 - bubbleRegionHeight, 2400, 1600)
+
+ createVisualIndicator(DesktopModeVisualIndicator.DragStartState.FROM_FULLSCREEN)
+ var testRegion = visualIndicator.calculateBubbleRightRegion(displayLayout)
+ assertThat(testRegion.bounds).isEqualTo(expectedRect)
+
+ createVisualIndicator(DesktopModeVisualIndicator.DragStartState.FROM_SPLIT)
+ testRegion = visualIndicator.calculateBubbleRightRegion(displayLayout)
+ assertThat(testRegion.bounds).isEqualTo(expectedRect)
+ }
+
+ @Test
fun testDefaultIndicators() {
createVisualIndicator(DesktopModeVisualIndicator.DragStartState.FROM_FULLSCREEN)
var result = visualIndicator.updateIndicatorType(PointF(-10000f, 500f))
@@ -190,6 +241,94 @@ class DesktopModeVisualIndicatorTest : ShellTestCase() {
assertThat(result).isEqualTo(DesktopModeVisualIndicator.IndicatorType.NO_INDICATOR)
}
+ @Test
+ @EnableFlags(
+ com.android.wm.shell.Flags.FLAG_ENABLE_BUBBLE_TO_FULLSCREEN,
+ com.android.wm.shell.Flags.FLAG_ENABLE_CREATE_ANY_BUBBLE,
+ )
+ fun testDefaultIndicatorWithNoDesktop() {
+ mContext.orCreateTestableResources.addOverride(
+ com.android.internal.R.bool.config_isDesktopModeSupported,
+ false,
+ )
+ mContext.orCreateTestableResources.addOverride(
+ com.android.internal.R.bool.config_isDesktopModeDevOptionSupported,
+ false,
+ )
+
+ // Fullscreen to center, no desktop indicator
+ createVisualIndicator(DesktopModeVisualIndicator.DragStartState.FROM_FULLSCREEN)
+ var result = visualIndicator.updateIndicatorType(PointF(500f, 500f))
+ assertThat(result).isEqualTo(DesktopModeVisualIndicator.IndicatorType.NO_INDICATOR)
+ // Fullscreen to split
+ result = visualIndicator.updateIndicatorType(PointF(10000f, 500f))
+ assertThat(result)
+ .isEqualTo(DesktopModeVisualIndicator.IndicatorType.TO_SPLIT_RIGHT_INDICATOR)
+ result = visualIndicator.updateIndicatorType(PointF(-10000f, 500f))
+ assertThat(result)
+ .isEqualTo(DesktopModeVisualIndicator.IndicatorType.TO_SPLIT_LEFT_INDICATOR)
+ // Fullscreen to bubble
+ result = visualIndicator.updateIndicatorType(PointF(100f, 1500f))
+ assertThat(result)
+ .isEqualTo(DesktopModeVisualIndicator.IndicatorType.TO_BUBBLE_LEFT_INDICATOR)
+ result = visualIndicator.updateIndicatorType(PointF(2300f, 1500f))
+ assertThat(result)
+ .isEqualTo(DesktopModeVisualIndicator.IndicatorType.TO_BUBBLE_RIGHT_INDICATOR)
+ // Split to center, no desktop indicator
+ createVisualIndicator(DesktopModeVisualIndicator.DragStartState.FROM_SPLIT)
+ result = visualIndicator.updateIndicatorType(PointF(500f, 500f))
+ assertThat(result).isEqualTo(DesktopModeVisualIndicator.IndicatorType.NO_INDICATOR)
+ // Split to fullscreen
+ result = visualIndicator.updateIndicatorType(PointF(500f, 0f))
+ assertThat(result)
+ .isEqualTo(DesktopModeVisualIndicator.IndicatorType.TO_FULLSCREEN_INDICATOR)
+ // Split to bubble
+ result = visualIndicator.updateIndicatorType(PointF(100f, 1500f))
+ assertThat(result)
+ .isEqualTo(DesktopModeVisualIndicator.IndicatorType.TO_BUBBLE_LEFT_INDICATOR)
+ result = visualIndicator.updateIndicatorType(PointF(2300f, 1500f))
+ assertThat(result)
+ .isEqualTo(DesktopModeVisualIndicator.IndicatorType.TO_BUBBLE_RIGHT_INDICATOR)
+ // Drag app to center, no desktop indicator
+ createVisualIndicator(DesktopModeVisualIndicator.DragStartState.DRAGGED_INTENT)
+ result = visualIndicator.updateIndicatorType(PointF(500f, 500f))
+ assertThat(result).isEqualTo(DesktopModeVisualIndicator.IndicatorType.NO_INDICATOR)
+ }
+
+ @Test
+ @EnableFlags(
+ com.android.wm.shell.Flags.FLAG_ENABLE_BUBBLE_TO_FULLSCREEN,
+ com.android.wm.shell.Flags.FLAG_ENABLE_CREATE_ANY_BUBBLE,
+ )
+ fun testBubbleLeftVisualIndicatorSize() {
+ val dropTargetBounds = Rect(100, 100, 500, 1500)
+ whenever(bubbleBoundsProvider.getBubbleBarExpandedViewDropTargetBounds(/* onLeft= */ true))
+ .thenReturn(dropTargetBounds)
+ createVisualIndicator(DesktopModeVisualIndicator.DragStartState.FROM_FULLSCREEN)
+ visualIndicator.updateIndicatorType(PointF(100f, 1500f))
+
+ animatorTestRule.advanceTimeBy(200)
+
+ assertThat(visualIndicator.indicatorBounds).isEqualTo(dropTargetBounds)
+ }
+
+ @Test
+ @EnableFlags(
+ com.android.wm.shell.Flags.FLAG_ENABLE_BUBBLE_TO_FULLSCREEN,
+ com.android.wm.shell.Flags.FLAG_ENABLE_CREATE_ANY_BUBBLE,
+ )
+ fun testBubbleRightVisualIndicatorSize() {
+ val dropTargetBounds = Rect(1900, 100, 2300, 1500)
+ whenever(bubbleBoundsProvider.getBubbleBarExpandedViewDropTargetBounds(/* onLeft= */ false))
+ .thenReturn(dropTargetBounds)
+ createVisualIndicator(DesktopModeVisualIndicator.DragStartState.FROM_FULLSCREEN)
+ visualIndicator.updateIndicatorType(PointF(2300f, 1500f))
+
+ animatorTestRule.advanceTimeBy(200)
+
+ assertThat(visualIndicator.indicatorBounds).isEqualTo(dropTargetBounds)
+ }
+
private fun createVisualIndicator(dragStartState: DesktopModeVisualIndicator.DragStartState) {
visualIndicator =
DesktopModeVisualIndicator(
@@ -200,6 +339,7 @@ class DesktopModeVisualIndicatorTest : ShellTestCase() {
taskSurface,
taskDisplayAreaOrganizer,
dragStartState,
+ bubbleBoundsProvider,
)
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopRepositoryTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopRepositoryTest.kt
index 90f342f91a38..8510441c0557 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopRepositoryTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopRepositoryTest.kt
@@ -27,6 +27,7 @@ import androidx.test.filters.SmallTest
import com.android.window.flags.Flags
import com.android.window.flags.Flags.FLAG_ENABLE_DESKTOP_WINDOWING_PERSISTENCE
import com.android.window.flags.Flags.FLAG_ENABLE_DESKTOP_WINDOWING_PIP
+import com.android.window.flags.Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND
import com.android.wm.shell.ShellTestCase
import com.android.wm.shell.TestShellExecutor
import com.android.wm.shell.common.ShellExecutor
@@ -35,6 +36,7 @@ import com.android.wm.shell.desktopmode.persistence.DesktopPersistentRepository
import com.android.wm.shell.sysui.ShellInit
import com.google.common.truth.Truth.assertThat
import junit.framework.Assert.fail
+import kotlin.test.assertEquals
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -45,6 +47,7 @@ import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.runTest
import kotlinx.coroutines.test.setMain
import org.junit.After
+import org.junit.Assert.assertThrows
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -161,6 +164,69 @@ class DesktopRepositoryTest(flags: FlagsParameterization) : ShellTestCase() {
}
@Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun addTask_deskDoesNotExist_throws() {
+ repo.removeDesk(deskId = 0)
+
+ assertThrows(Exception::class.java) {
+ repo.addTask(displayId = DEFAULT_DISPLAY, taskId = 5, isVisible = true)
+ }
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun addTaskToDesk_deskDoesNotExist_throws() {
+ repo.removeDesk(deskId = 2)
+
+ assertThrows(Exception::class.java) {
+ repo.addTaskToDesk(
+ displayId = DEFAULT_DISPLAY,
+ deskId = 2,
+ taskId = 4,
+ isVisible = true,
+ )
+ }
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun addTaskToDesk_addsToZOrderList() {
+ repo.addDesk(DEFAULT_DISPLAY, deskId = 2)
+ repo.addDesk(DEFAULT_DISPLAY, deskId = 3)
+ repo.addTaskToDesk(displayId = DEFAULT_DISPLAY, deskId = 2, taskId = 5, isVisible = true)
+ repo.addTaskToDesk(displayId = DEFAULT_DISPLAY, deskId = 2, taskId = 6, isVisible = true)
+ repo.addTaskToDesk(displayId = DEFAULT_DISPLAY, deskId = 2, taskId = 7, isVisible = true)
+ repo.addTaskToDesk(displayId = DEFAULT_DISPLAY, deskId = 3, taskId = 8, isVisible = true)
+
+ val orderedTasks = repo.getFreeformTasksIdsInDeskInZOrder(deskId = 2)
+ assertThat(orderedTasks[0]).isEqualTo(7)
+ assertThat(orderedTasks[1]).isEqualTo(6)
+ assertThat(orderedTasks[2]).isEqualTo(5)
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun addTaskToDesk_visible_addsToVisible() {
+ repo.addDesk(DEFAULT_DISPLAY, deskId = 2)
+
+ repo.addTaskToDesk(displayId = DEFAULT_DISPLAY, deskId = 2, taskId = 5, isVisible = true)
+
+ assertThat(repo.isVisibleTask(5)).isTrue()
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun addTaskToDesk_removesFromAllOtherDesks() {
+ repo.addDesk(DEFAULT_DISPLAY, deskId = 2)
+ repo.addDesk(DEFAULT_DISPLAY, deskId = 3)
+ repo.addTaskToDesk(displayId = DEFAULT_DISPLAY, deskId = 2, taskId = 7, isVisible = true)
+
+ repo.addTaskToDesk(displayId = DEFAULT_DISPLAY, deskId = 3, taskId = 7, isVisible = true)
+
+ assertThat(repo.getActiveTaskIdsInDesk(2)).doesNotContain(7)
+ }
+
+ @Test
fun removeActiveTask_notifiesActiveTaskListener() {
val listener = TestListener()
repo.addActiveTaskListener(listener)
@@ -465,8 +531,8 @@ class DesktopRepositoryTest(flags: FlagsParameterization) : ShellTestCase() {
val listener = TestVisibilityListener()
val executor = TestShellExecutor()
repo.addVisibleTasksListener(listener, executor)
- repo.updateTask(DEFAULT_DISPLAY, taskId = 1, isVisible = true)
- repo.updateTask(DEFAULT_DISPLAY, taskId = 2, isVisible = true)
+ repo.addTask(DEFAULT_DISPLAY, taskId = 1, isVisible = true)
+ repo.addTask(DEFAULT_DISPLAY, taskId = 2, isVisible = true)
executor.flushAll()
assertThat(listener.visibleTasksCountOnDefaultDisplay).isEqualTo(2)
@@ -1076,13 +1142,37 @@ class DesktopRepositoryTest(flags: FlagsParameterization) : ShellTestCase() {
repo.addTask(displayId = DEFAULT_DISPLAY, taskId = 1, isVisible = true)
repo.minimizeTask(displayId = DEFAULT_DISPLAY, taskId = 2)
- val tasksBeforeRemoval = repo.removeDesk(displayId = DEFAULT_DISPLAY)
+ val tasksBeforeRemoval = repo.removeDesk(deskId = DEFAULT_DISPLAY)
assertThat(tasksBeforeRemoval).containsExactly(1, 2, 3).inOrder()
assertThat(repo.getActiveTasks(displayId = DEFAULT_DISPLAY)).isEmpty()
}
@Test
+ @EnableFlags(FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun removeDesk_multipleDesks_active_removes() {
+ repo.addDesk(displayId = DEFAULT_DISPLAY, deskId = 2)
+ repo.addDesk(displayId = DEFAULT_DISPLAY, deskId = 3)
+ repo.setActiveDesk(displayId = DEFAULT_DISPLAY, deskId = 3)
+
+ repo.removeDesk(deskId = 3)
+
+ assertThat(repo.getDeskIds(displayId = DEFAULT_DISPLAY)).doesNotContain(3)
+ }
+
+ @Test
+ @EnableFlags(FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun removeDesk_multipleDesks_inactive_removes() {
+ repo.addDesk(displayId = DEFAULT_DISPLAY, deskId = 2)
+ repo.addDesk(displayId = DEFAULT_DISPLAY, deskId = 3)
+ repo.setActiveDesk(displayId = DEFAULT_DISPLAY, deskId = 3)
+
+ repo.removeDesk(deskId = 2)
+
+ assertThat(repo.getDeskIds(displayId = DEFAULT_DISPLAY)).doesNotContain(2)
+ }
+
+ @Test
fun getTaskInFullImmersiveState_byDisplay() {
repo.addDesk(displayId = SECOND_DISPLAY, deskId = SECOND_DISPLAY)
repo.setActiveDesk(displayId = SECOND_DISPLAY, deskId = SECOND_DISPLAY)
@@ -1164,6 +1254,26 @@ class DesktopRepositoryTest(flags: FlagsParameterization) : ShellTestCase() {
assertThat(repo.getActiveTaskIdsInDesk(999)).contains(6)
}
+ @Test
+ @DisableFlags(FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun getDisplayForDesk() {
+ repo.addDesk(SECOND_DISPLAY, SECOND_DISPLAY)
+
+ assertEquals(SECOND_DISPLAY, repo.getDisplayForDesk(deskId = SECOND_DISPLAY))
+ }
+
+ @Test
+ @EnableFlags(FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun getDisplayForDesk_multipleDesks() {
+ repo.addDesk(DEFAULT_DISPLAY, deskId = 6)
+ repo.addDesk(DEFAULT_DISPLAY, deskId = 7)
+ repo.addDesk(SECOND_DISPLAY, deskId = 8)
+ repo.addDesk(SECOND_DISPLAY, deskId = 9)
+
+ assertEquals(DEFAULT_DISPLAY, repo.getDisplayForDesk(deskId = 7))
+ assertEquals(SECOND_DISPLAY, repo.getDisplayForDesk(deskId = 8))
+ }
+
class TestListener : DesktopRepository.ActiveTasksListener {
var activeChangesOnDefaultDisplay = 0
var activeChangesOnSecondaryDisplay = 0
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
index e7fe57d5f2cd..edb9b2d2fede 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
@@ -35,6 +35,8 @@ import android.content.pm.ActivityInfo.CONFIG_DENSITY
import android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
import android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
import android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
+import android.content.pm.ApplicationInfo
+import android.content.pm.PackageManager
import android.content.res.Configuration.ORIENTATION_LANDSCAPE
import android.content.res.Configuration.ORIENTATION_PORTRAIT
import android.content.res.Resources
@@ -65,6 +67,7 @@ import android.widget.Toast
import android.window.DisplayAreaInfo
import android.window.IWindowContainerToken
import android.window.RemoteTransition
+import android.window.TransitionInfo
import android.window.TransitionRequestInfo
import android.window.WindowContainerToken
import android.window.WindowContainerTransaction
@@ -117,7 +120,9 @@ import com.android.wm.shell.desktopmode.ExitDesktopTaskTransitionHandler.FULLSCR
import com.android.wm.shell.desktopmode.common.ToggleTaskSizeInteraction
import com.android.wm.shell.desktopmode.desktopwallpaperactivity.DesktopWallpaperActivityTokenProvider
import com.android.wm.shell.desktopmode.minimize.DesktopWindowLimitRemoteHandler
+import com.android.wm.shell.desktopmode.multidesks.DeskTransition
import com.android.wm.shell.desktopmode.multidesks.DesksOrganizer
+import com.android.wm.shell.desktopmode.multidesks.DesksTransitionObserver
import com.android.wm.shell.desktopmode.persistence.Desktop
import com.android.wm.shell.desktopmode.persistence.DesktopPersistentRepository
import com.android.wm.shell.desktopmode.persistence.DesktopRepositoryInitializer
@@ -179,6 +184,7 @@ import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import org.mockito.kotlin.any
import org.mockito.kotlin.anyOrNull
+import org.mockito.kotlin.argThat
import org.mockito.kotlin.argumentCaptor
import org.mockito.kotlin.atLeastOnce
import org.mockito.kotlin.capture
@@ -250,6 +256,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
private lateinit var overviewToDesktopTransitionObserver: OverviewToDesktopTransitionObserver
@Mock private lateinit var desksOrganizer: DesksOrganizer
@Mock private lateinit var userProfileContexts: UserProfileContexts
+ @Mock private lateinit var desksTransitionsObserver: DesksTransitionObserver
private lateinit var controller: DesktopTasksController
private lateinit var shellInit: ShellInit
@@ -285,7 +292,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
.spyStatic(DesktopModeStatus::class.java)
.spyStatic(Toast::class.java)
.startMocking()
- doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+ doReturn(true).`when` { DesktopModeStatus.isDeviceEligibleForDesktopMode(any()) }
testScope = CoroutineScope(Dispatchers.Unconfined + SupervisorJob())
shellInit = spy(ShellInit(testExecutor))
@@ -309,7 +316,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
mContext,
mockHandler,
)
- desktopModeCompatPolicy = DesktopModeCompatPolicy(context)
+ desktopModeCompatPolicy = spy(DesktopModeCompatPolicy(context))
whenever(shellTaskOrganizer.getRunningTasks(anyInt())).thenAnswer { runningTasks }
whenever(transitions.startTransition(anyInt(), any(), isNull())).thenAnswer { Binder() }
@@ -347,6 +354,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
.thenReturn(ExitResult.NoExit)
whenever(desktopWallpaperActivityTokenProvider.getToken()).thenReturn(wallpaperToken)
whenever(userProfileContexts[anyInt()]).thenReturn(context)
+ whenever(userProfileContexts.getOrCreate(anyInt())).thenReturn(context)
controller = createController()
controller.setSplitScreenController(splitScreenController)
@@ -404,6 +412,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
Optional.of(bubbleController),
overviewToDesktopTransitionObserver,
desksOrganizer,
+ desksTransitionsObserver,
userProfileContexts,
desktopModeCompatPolicy,
)
@@ -512,7 +521,10 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
}
@Test
- @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+ @DisableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
+ Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
+ )
fun showDesktopApps_allAppsInvisible_bringsToFront_desktopWallpaperDisabled() {
val homeTask = setUpHomeTask()
val task1 = setUpFreeformTask()
@@ -533,8 +545,8 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+ @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
fun showDesktopApps_allAppsInvisible_bringsToFront_desktopWallpaperEnabled() {
- whenever(desktopWallpaperActivityTokenProvider.getToken()).thenReturn(null)
val task1 = setUpFreeformTask()
val task2 = setUpFreeformTask()
markTaskHidden(task1)
@@ -552,6 +564,29 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
}
@Test
+ @EnableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
+ Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
+ )
+ fun showDesktopApps_deskInactive_bringsToFront_multipleDesksEnabled() {
+ whenever(transitions.startTransition(eq(TRANSIT_TO_FRONT), any(), anyOrNull()))
+ .thenReturn(Binder())
+ val deskId = 0
+ // Make desk inactive by activating another desk.
+ taskRepository.addDesk(DEFAULT_DISPLAY, deskId = 1)
+ taskRepository.setActiveDesk(DEFAULT_DISPLAY, deskId = 1)
+
+ controller.activateDesk(deskId, RemoteTransition(TestRemoteTransition()))
+
+ val wct =
+ getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
+ // Wallpaper is moved to front.
+ wct.assertPendingIntentAt(index = 0, desktopWallpaperIntent)
+ // Desk is activated.
+ verify(desksOrganizer).activateDesk(wct, deskId)
+ }
+
+ @Test
fun isDesktopModeShowing_noTasks_returnsFalse() {
assertThat(controller.isDesktopModeShowing(displayId = 0)).isFalse()
}
@@ -625,58 +660,83 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
Flags.FLAG_ENABLE_PER_DISPLAY_DESKTOP_WALLPAPER_ACTIVITY,
)
- @DisableFlags(
- /** TODO: b/362720497 - re-enable when activation is implemented. */
- Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND
- )
- fun showDesktopApps_onSecondaryDisplay_desktopWallpaperEnabled_perDisplayWallpaperEnabled_shouldShowWallpaper() {
+ @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun showDesktopApps_onSecondaryDisplay_desktopWallpaperEnabled_perDisplayWallpaperEnabled_bringsTasksToFront() {
taskRepository.addDesk(displayId = SECOND_DISPLAY, deskId = SECOND_DISPLAY)
- val homeTask = setUpHomeTask(SECOND_DISPLAY)
+ setUpHomeTask(SECOND_DISPLAY)
val task1 = setUpFreeformTask(SECOND_DISPLAY)
val task2 = setUpFreeformTask(SECOND_DISPLAY)
markTaskHidden(task1)
markTaskHidden(task2)
+ assertThat(taskRepository.getExpandedTasksOrdered(SECOND_DISPLAY)).contains(task1.taskId)
+ assertThat(taskRepository.getExpandedTasksOrdered(SECOND_DISPLAY)).contains(task2.taskId)
controller.showDesktopApps(SECOND_DISPLAY, RemoteTransition(TestRemoteTransition()))
val wct =
getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
- assertThat(wct.hierarchyOps).hasSize(4)
- // Expect order to be from bottom: home, wallpaperIntent, task1, task2
- wct.assertReorderAt(index = 0, homeTask)
- wct.assertPendingIntentAt(index = 1, desktopWallpaperIntent)
- wct.assertReorderAt(index = 2, task1)
- wct.assertReorderAt(index = 3, task2)
+ wct.assertReorder(task1)
+ wct.assertReorder(task2)
}
@Test
- @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
- @DisableFlags(
+ @EnableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
Flags.FLAG_ENABLE_PER_DISPLAY_DESKTOP_WALLPAPER_ACTIVITY,
- /** TODO: b/362720497 - re-enable when activation is implemented. */
Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
)
+ fun showDesktopApps_onSecondaryDisplay_desktopWallpaperEnabled_perDisplayWallpaperEnabled_multipleDesksEnabled_bringsDeskToFront() {
+ whenever(transitions.startTransition(eq(TRANSIT_TO_FRONT), any(), anyOrNull()))
+ .thenReturn(Binder())
+ taskRepository.addDesk(displayId = SECOND_DISPLAY, deskId = 2)
+ setUpHomeTask(SECOND_DISPLAY)
+
+ controller.showDesktopApps(SECOND_DISPLAY, RemoteTransition(TestRemoteTransition()))
+
+ val wct =
+ getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
+ verify(desksOrganizer).activateDesk(wct, deskId = 2)
+ }
+
+ @Test
+ @EnableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
+ Flags.FLAG_ENABLE_PER_DISPLAY_DESKTOP_WALLPAPER_ACTIVITY,
+ )
+ fun showDesktopApps_onSecondaryDisplay_desktopWallpaperEnabled_perDisplayWallpaperEnabled_shouldShowWallpaper() {
+ whenever(transitions.startTransition(eq(TRANSIT_TO_FRONT), any(), anyOrNull()))
+ .thenReturn(Binder())
+ taskRepository.addDesk(displayId = SECOND_DISPLAY, deskId = SECOND_DISPLAY)
+ setUpHomeTask(SECOND_DISPLAY)
+
+ controller.showDesktopApps(SECOND_DISPLAY, RemoteTransition(TestRemoteTransition()))
+
+ val wct =
+ getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
+ wct.assertPendingIntent(desktopWallpaperIntent)
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+ @DisableFlags(Flags.FLAG_ENABLE_PER_DISPLAY_DESKTOP_WALLPAPER_ACTIVITY)
fun showDesktopApps_onSecondaryDisplay_desktopWallpaperEnabled_shouldNotShowWallpaper() {
+ whenever(transitions.startTransition(eq(TRANSIT_TO_FRONT), any(), anyOrNull()))
+ .thenReturn(Binder())
taskRepository.addDesk(displayId = SECOND_DISPLAY, deskId = SECOND_DISPLAY)
val homeTask = setUpHomeTask(SECOND_DISPLAY)
- val task1 = setUpFreeformTask(SECOND_DISPLAY)
- val task2 = setUpFreeformTask(SECOND_DISPLAY)
- markTaskHidden(task1)
- markTaskHidden(task2)
controller.showDesktopApps(SECOND_DISPLAY, RemoteTransition(TestRemoteTransition()))
val wct =
getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
- assertThat(wct.hierarchyOps).hasSize(3)
- // Expect order to be from bottom: home, task1, task2 (no wallpaper intent)
- wct.assertReorderAt(index = 0, homeTask)
- wct.assertReorderAt(index = 1, task1)
- wct.assertReorderAt(index = 2, task2)
+ wct.assertWithoutPendingIntent(desktopWallpaperIntent)
}
@Test
- @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+ @DisableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
+ Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
+ )
fun showDesktopApps_appsAlreadyVisible_bringsToFront_desktopWallpaperDisabled() {
val homeTask = setUpHomeTask()
val task1 = setUpFreeformTask()
@@ -698,7 +758,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
@Test
@DisableFlags(
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
- /** TODO: b/362720497 - re-enable when activation is implemented. */
Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
)
fun showDesktopApps_onSecondaryDisplay_desktopWallpaperDisabled_shouldNotMoveLauncher() {
@@ -722,8 +781,8 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+ @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
fun showDesktopApps_appsAlreadyVisible_bringsToFront_desktopWallpaperEnabled() {
- whenever(desktopWallpaperActivityTokenProvider.getToken()).thenReturn(null)
val task1 = setUpFreeformTask()
val task2 = setUpFreeformTask()
markTaskVisible(task1)
@@ -741,7 +800,10 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
}
@Test
- @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+ @DisableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
+ Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
+ )
fun showDesktopApps_someAppsInvisible_reordersAll_desktopWallpaperDisabled() {
val homeTask = setUpHomeTask()
val task1 = setUpFreeformTask()
@@ -762,8 +824,8 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
- fun showDesktopApps_someAppsInvisible_desktopWallpaperEnabled_reordersOnlyFreeformTasks() {
- whenever(desktopWallpaperActivityTokenProvider.getToken()).thenReturn(null)
+ @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun showDesktopApps_someAppsInvisible_reordersAll_desktopWallpaperEnabled() {
val task1 = setUpFreeformTask()
val task2 = setUpFreeformTask()
markTaskHidden(task1)
@@ -780,26 +842,11 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
wct.assertReorderAt(index = 2, task2)
}
- @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
- fun showDesktopApps_someAppsInvisible_desktopWallpaperEnabled_reordersAll() {
- val task1 = setUpFreeformTask()
- val task2 = setUpFreeformTask()
- markTaskHidden(task1)
- markTaskVisible(task2)
-
- controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
-
- val wct =
- getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
- assertThat(wct.hierarchyOps).hasSize(3)
- // Expect order to be from bottom: wallpaper intent, task1, task2
- wct.assertReorderAt(index = 0, wallpaperToken)
- wct.assertReorderAt(index = 1, task1)
- wct.assertReorderAt(index = 2, task2)
- }
-
@Test
- @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+ @DisableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
+ Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
+ )
fun showDesktopApps_noActiveTasks_reorderHomeToTop_desktopWallpaperDisabled() {
val homeTask = setUpHomeTask()
@@ -813,9 +860,9 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
- fun showDesktopApps_noActiveTasks_desktopWallpaperEnabled_addsDesktopWallpaper() {
- whenever(desktopWallpaperActivityTokenProvider.getToken()).thenReturn(null)
-
+ fun showDesktopApps_noActiveTasks_addDesktopWallpaper_desktopWallpaperEnabled() {
+ whenever(transitions.startTransition(eq(TRANSIT_TO_FRONT), any(), anyOrNull()))
+ .thenReturn(Binder())
controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
val wct =
@@ -824,17 +871,10 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
}
@Test
- @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
- fun showDesktopApps_noActiveTasks_desktopWallpaperEnabled_reordersDesktopWallpaper() {
- controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
-
- val wct =
- getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
- wct.assertReorderAt(index = 0, wallpaperToken)
- }
-
- @Test
- @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+ @DisableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
+ Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
+ )
fun showDesktopApps_twoDisplays_bringsToFrontOnlyOneDisplay_desktopWallpaperDisabled() {
taskRepository.addDesk(displayId = SECOND_DISPLAY, deskId = SECOND_DISPLAY)
val homeTaskDefaultDisplay = setUpHomeTask(DEFAULT_DISPLAY)
@@ -857,7 +897,8 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
fun showDesktopApps_twoDisplays_bringsToFrontOnlyOneDisplay_desktopWallpaperEnabled() {
- whenever(desktopWallpaperActivityTokenProvider.getToken()).thenReturn(null)
+ whenever(transitions.startTransition(eq(TRANSIT_TO_FRONT), any(), anyOrNull()))
+ .thenReturn(Binder())
taskRepository.addDesk(displayId = SECOND_DISPLAY, deskId = SECOND_DISPLAY)
val homeTaskDefaultDisplay = setUpHomeTask(DEFAULT_DISPLAY)
val taskDefaultDisplay = setUpFreeformTask(DEFAULT_DISPLAY)
@@ -870,17 +911,63 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
val wct =
getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
- assertThat(wct.hierarchyOps).hasSize(3)
// Move home to front
wct.assertReorderAt(index = 0, homeTaskDefaultDisplay)
// Add desktop wallpaper activity
wct.assertPendingIntentAt(index = 1, desktopWallpaperIntent)
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+ @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun showDesktopApps_twoDisplays_bringsToFrontOnlyOneDisplayTasks_desktopWallpaperEnabled_multiDesksDisabled() {
+ whenever(transitions.startTransition(eq(TRANSIT_TO_FRONT), any(), anyOrNull()))
+ .thenReturn(Binder())
+ taskRepository.addDesk(displayId = SECOND_DISPLAY, deskId = SECOND_DISPLAY)
+ val homeTaskDefaultDisplay = setUpHomeTask(DEFAULT_DISPLAY)
+ val taskDefaultDisplay = setUpFreeformTask(DEFAULT_DISPLAY)
+ setUpHomeTask(SECOND_DISPLAY)
+ val taskSecondDisplay = setUpFreeformTask(SECOND_DISPLAY)
+ markTaskHidden(taskDefaultDisplay)
+ markTaskHidden(taskSecondDisplay)
+
+ controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
+
+ val wct =
+ getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
// Move freeform task to front
wct.assertReorderAt(index = 2, taskDefaultDisplay)
}
@Test
- @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+ @EnableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
+ Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
+ )
+ fun showDesktopApps_twoDisplays_bringsToFrontOnlyOneDisplayTasks_desktopWallpaperEnabled_multiDesksEnabled() {
+ whenever(transitions.startTransition(eq(TRANSIT_TO_FRONT), any(), anyOrNull()))
+ .thenReturn(Binder())
+ taskRepository.addDesk(displayId = SECOND_DISPLAY, deskId = SECOND_DISPLAY)
+ val homeTaskDefaultDisplay = setUpHomeTask(DEFAULT_DISPLAY)
+ val taskDefaultDisplay = setUpFreeformTask(DEFAULT_DISPLAY)
+ setUpHomeTask(SECOND_DISPLAY)
+ val taskSecondDisplay = setUpFreeformTask(SECOND_DISPLAY)
+ markTaskHidden(taskDefaultDisplay)
+ markTaskHidden(taskSecondDisplay)
+
+ controller.showDesktopApps(DEFAULT_DISPLAY, RemoteTransition(TestRemoteTransition()))
+
+ val wct =
+ getLatestWct(type = TRANSIT_TO_FRONT, handlerClass = OneShotRemoteHandler::class.java)
+ // Move desktop tasks to front
+ verify(desksOrganizer).activateDesk(wct, deskId = DEFAULT_DISPLAY)
+ }
+
+ @Test
+ @DisableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
+ Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
+ )
fun showDesktopApps_desktopWallpaperDisabled_dontReorderMinimizedTask() {
val homeTask = setUpHomeTask()
val freeformTask = setUpFreeformTask()
@@ -901,8 +988,9 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+ /** TODO: b/362720497 - add multi-desk version when minimization is implemented. */
+ @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
fun showDesktopApps_desktopWallpaperEnabled_dontReorderMinimizedTask() {
- whenever(desktopWallpaperActivityTokenProvider.getToken()).thenReturn(null)
val homeTask = setUpHomeTask()
val freeformTask = setUpFreeformTask()
val minimizedTask = setUpFreeformTask()
@@ -1216,6 +1304,50 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
}
@Test
+ fun addMoveToDesktopChanges_excludeCaptionFromAppBounds_nonResizableLandscape() {
+ setUpLandscapeDisplay()
+ val task =
+ setUpFullscreenTask(
+ isResizable = false,
+ screenOrientation = SCREEN_ORIENTATION_LANDSCAPE,
+ )
+ whenever(desktopModeCompatPolicy.shouldExcludeCaptionFromAppBounds(task)).thenReturn(true)
+ val initialAspectRatio = calculateAspectRatio(task)
+ val wct = WindowContainerTransaction()
+ controller.addMoveToDesktopChanges(wct, task)
+
+ val finalBounds = findBoundsChange(wct, task)
+ val captionInsets = getAppHeaderHeight(context)
+ finalBounds!!.top += captionInsets
+ val finalAspectRatio =
+ maxOf(finalBounds.height(), finalBounds.width()) /
+ minOf(finalBounds.height(), finalBounds.width()).toFloat()
+ assertThat(finalAspectRatio).isWithin(FLOAT_TOLERANCE).of(initialAspectRatio)
+ }
+
+ @Test
+ fun addMoveToDesktopChanges_excludeCaptionFromAppBounds_nonResizablePortrait() {
+ setUpLandscapeDisplay()
+ val task =
+ setUpFullscreenTask(
+ isResizable = false,
+ screenOrientation = SCREEN_ORIENTATION_PORTRAIT,
+ )
+ whenever(desktopModeCompatPolicy.shouldExcludeCaptionFromAppBounds(task)).thenReturn(true)
+ val initialAspectRatio = calculateAspectRatio(task)
+ val wct = WindowContainerTransaction()
+ controller.addMoveToDesktopChanges(wct, task)
+
+ val finalBounds = findBoundsChange(wct, task)
+ val captionInsets = getAppHeaderHeight(context)
+ finalBounds!!.top += captionInsets
+ val finalAspectRatio =
+ maxOf(finalBounds.height(), finalBounds.width()) /
+ minOf(finalBounds.height(), finalBounds.width()).toFloat()
+ assertThat(finalAspectRatio).isWithin(FLOAT_TOLERANCE).of(initialAspectRatio)
+ }
+
+ @Test
fun launchIntent_taskInDesktopMode_transitionStarted() {
setUpLandscapeDisplay()
val freeformTask = setUpFreeformTask()
@@ -1318,11 +1450,12 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
}
@Test
+ @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
fun moveToDesktop_tdaFullscreen_windowingModeSetToFreeform() {
val task = setUpFullscreenTask()
val tda = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY)!!
tda.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FULLSCREEN
- controller.moveRunningTaskToDesktop(task, transitionSource = UNKNOWN)
+ controller.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = UNKNOWN)
val wct = getLatestEnterDesktopWct()
assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
.isEqualTo(WINDOWING_MODE_FREEFORM)
@@ -1331,11 +1464,12 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
}
@Test
+ @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
fun moveRunningTaskToDesktop_tdaFreeform_windowingModeSetToUndefined() {
val task = setUpFullscreenTask()
val tda = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY)!!
tda.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FREEFORM
- controller.moveRunningTaskToDesktop(task, transitionSource = UNKNOWN)
+ controller.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = UNKNOWN)
val wct = getLatestEnterDesktopWct()
assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
.isEqualTo(WINDOWING_MODE_UNDEFINED)
@@ -1344,11 +1478,78 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
}
@Test
- fun moveTaskToDesktop_nonExistentTask_doesNothing() {
- controller.moveTaskToDesktop(999, transitionSource = UNKNOWN)
- verifyEnterDesktopWCTNotExecuted()
- verify(desktopModeEnterExitTransitionListener, times(0))
- .onEnterDesktopModeTransitionStarted(anyInt())
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun moveRunningTaskToDesktop_movesTaskToDefaultDesk() {
+ val task = setUpFullscreenTask(displayId = DEFAULT_DISPLAY)
+
+ controller.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = UNKNOWN)
+
+ val wct = getLatestEnterDesktopWct()
+ verify(desksOrganizer).moveTaskToDesk(wct, deskId = 0, task)
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun moveRunningTaskToDesktop_activatesDesk() {
+ val task = setUpFullscreenTask(displayId = DEFAULT_DISPLAY)
+
+ controller.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = UNKNOWN)
+
+ val wct = getLatestEnterDesktopWct()
+ verify(desksOrganizer).activateDesk(wct, deskId = 0)
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun moveRunningTaskToDesktop_triggersEnterDesktopListener() {
+ val task = setUpFullscreenTask(displayId = DEFAULT_DISPLAY)
+
+ controller.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = UNKNOWN)
+
+ verify(desktopModeEnterExitTransitionListener)
+ .onEnterDesktopModeTransitionStarted(FREEFORM_ANIMATION_DURATION)
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun moveTaskToDesk_nonDefaultDesk_movesTaskToDesk() {
+ val transition = Binder()
+ whenever(enterDesktopTransitionHandler.moveToDesktop(any(), any())).thenReturn(transition)
+ taskRepository.addDesk(DEFAULT_DISPLAY, deskId = 3)
+ val task = setUpFullscreenTask(displayId = DEFAULT_DISPLAY)
+ task.isVisible = true
+
+ controller.moveTaskToDesk(taskId = task.taskId, deskId = 3, transitionSource = UNKNOWN)
+
+ val wct = getLatestEnterDesktopWct()
+ verify(desksOrganizer).moveTaskToDesk(wct, deskId = 3, task)
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun moveTaskToDesk_nonDefaultDesk_activatesDesk() {
+ val transition = Binder()
+ whenever(enterDesktopTransitionHandler.moveToDesktop(any(), any())).thenReturn(transition)
+ taskRepository.addDesk(DEFAULT_DISPLAY, deskId = 3)
+ val task = setUpFullscreenTask(displayId = DEFAULT_DISPLAY)
+ task.isVisible = true
+
+ controller.moveTaskToDesk(taskId = task.taskId, deskId = 3, transitionSource = UNKNOWN)
+
+ val wct = getLatestEnterDesktopWct()
+ verify(desksOrganizer).activateDesk(wct, deskId = 3)
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun moveTaskToDesk_nonDefaultDesk_triggersEnterDesktopListener() {
+ taskRepository.addDesk(DEFAULT_DISPLAY, deskId = 3)
+ val task = setUpFullscreenTask(displayId = DEFAULT_DISPLAY)
+
+ controller.moveTaskToDesk(taskId = task.taskId, deskId = 3, transitionSource = UNKNOWN)
+
+ verify(desktopModeEnterExitTransitionListener)
+ .onEnterDesktopModeTransitionStarted(FREEFORM_ANIMATION_DURATION)
}
@Test
@@ -1358,7 +1559,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
whenever(shellTaskOrganizer.getRunningTaskInfo(anyInt())).thenReturn(null)
whenever(recentTasksController.findTaskInBackground(anyInt())).thenReturn(task)
- controller.moveTaskToDesktop(task.taskId, transitionSource = UNKNOWN)
+ controller.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = UNKNOWN)
with(getLatestEnterDesktopWct()) {
assertLaunchTaskAt(0, task.taskId, WINDOWING_MODE_FREEFORM)
@@ -1368,12 +1569,11 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
fun moveTaskToDesktop_desktopWallpaperEnabled_nonRunningTask_launchesInFreeform() {
- whenever(desktopWallpaperActivityTokenProvider.getToken()).thenReturn(null)
val task = createTaskInfo(1)
whenever(shellTaskOrganizer.getRunningTaskInfo(anyInt())).thenReturn(null)
whenever(recentTasksController.findTaskInBackground(anyInt())).thenReturn(task)
- controller.moveTaskToDesktop(task.taskId, transitionSource = UNKNOWN)
+ controller.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = UNKNOWN)
with(getLatestEnterDesktopWct()) {
// Add desktop wallpaper activity
@@ -1385,7 +1585,8 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
- fun moveRunningTaskToDesktop_topActivityTranslucentWithoutDisplay_taskIsMovedToDesktop() {
+ @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun moveRunningTaskToDesktop_topActivityTranslucentWithoutDisplay_taskIsMovedToDesktop_multiDesksDisabled() {
val task =
setUpFullscreenTask().apply {
isActivityStackTransparent = true
@@ -1393,7 +1594,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
numActivities = 1
}
- controller.moveRunningTaskToDesktop(task, transitionSource = UNKNOWN)
+ controller.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = UNKNOWN)
val wct = getLatestEnterDesktopWct()
assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
.isEqualTo(WINDOWING_MODE_FREEFORM)
@@ -1402,6 +1603,26 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
}
@Test
+ @EnableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY,
+ Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
+ )
+ fun moveRunningTaskToDesktop_topActivityTranslucentWithoutDisplay_taskIsMovedToDesktop_multiDesksEnabled() {
+ val task =
+ setUpFullscreenTask().apply {
+ isActivityStackTransparent = true
+ isTopActivityNoDisplay = true
+ numActivities = 1
+ }
+
+ controller.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = UNKNOWN)
+ val wct = getLatestEnterDesktopWct()
+ verify(desksOrganizer).moveTaskToDesk(wct, deskId = 0, task = task)
+ verify(desktopModeEnterExitTransitionListener)
+ .onEnterDesktopModeTransitionStarted(FREEFORM_ANIMATION_DURATION)
+ }
+
+ @Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
fun moveRunningTaskToDesktop_topActivityTranslucentWithDisplay_doesNothing() {
val task =
@@ -1411,7 +1632,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
numActivities = 1
}
- controller.moveRunningTaskToDesktop(task, transitionSource = UNKNOWN)
+ controller.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = UNKNOWN)
verifyEnterDesktopWCTNotExecuted()
verify(desktopModeEnterExitTransitionListener, times(0))
.onEnterDesktopModeTransitionStarted(FREEFORM_ANIMATION_DURATION)
@@ -1430,13 +1651,14 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
isTopActivityNoDisplay = false
}
- controller.moveRunningTaskToDesktop(task, transitionSource = UNKNOWN)
+ controller.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = UNKNOWN)
verifyEnterDesktopWCTNotExecuted()
}
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
- fun moveRunningTaskToDesktop_systemUIActivityWithoutDisplay_doesNothing() {
+ @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun moveRunningTaskToDesktop_systemUIActivityWithoutDisplay_doesNothing_multiDesksDisabled() {
// Set task as systemUI package
val systemUIPackageName =
context.resources.getString(com.android.internal.R.string.config_systemUi)
@@ -1447,7 +1669,42 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
isTopActivityNoDisplay = true
}
- controller.moveRunningTaskToDesktop(task, transitionSource = UNKNOWN)
+ controller.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = UNKNOWN)
+
+ val wct = getLatestEnterDesktopWct()
+ assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
+ .isEqualTo(WINDOWING_MODE_FREEFORM)
+ }
+
+ @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
+ fun moveRunningTaskToDesktop_defaultHomePackageWithDisplay_doesNothing() {
+ val packageManager: PackageManager = org.mockito.kotlin.mock()
+ val homeActivities = ComponentName("defaultHomePackage", /* class */ "")
+ val task =
+ setUpFullscreenTask().apply {
+ baseActivity = homeActivities
+ isTopActivityNoDisplay = false
+ }
+ mContext.setMockPackageManager(packageManager)
+ whenever(packageManager.getHomeActivities(any())).thenReturn(homeActivities)
+
+ controller.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = UNKNOWN)
+ verifyEnterDesktopWCTNotExecuted()
+ }
+
+ @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
+ fun moveRunningTaskToDesktop_defaultHomePackageWithoutDisplay_doesNothing() {
+ val packageManager: PackageManager = org.mockito.kotlin.mock()
+ val homeActivities = ComponentName("defaultHomePackage", /* class */ "")
+ val task =
+ setUpFullscreenTask().apply {
+ baseActivity = homeActivities
+ isTopActivityNoDisplay = false
+ }
+ mContext.setMockPackageManager(packageManager)
+ whenever(packageManager.getHomeActivities(any())).thenReturn(homeActivities)
+
+ controller.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = UNKNOWN)
val wct = getLatestEnterDesktopWct()
assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
@@ -1455,6 +1712,28 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
}
@Test
+ @EnableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY,
+ Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
+ )
+ fun moveRunningTaskToDesktop_systemUIActivityWithoutDisplay_doesNothing_multiDesksEnabled() {
+ // Set task as systemUI package
+ val systemUIPackageName =
+ context.resources.getString(com.android.internal.R.string.config_systemUi)
+ val baseComponent = ComponentName(systemUIPackageName, /* cls= */ "")
+ val task =
+ setUpFullscreenTask().apply {
+ baseActivity = baseComponent
+ isTopActivityNoDisplay = true
+ }
+
+ controller.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = UNKNOWN)
+
+ val wct = getLatestEnterDesktopWct()
+ verify(desksOrganizer).moveTaskToDesk(wct, deskId = 0, task = task)
+ }
+
+ @Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
fun moveBackgroundTaskToDesktop_remoteTransition_usesOneShotHandler() {
val transitionHandlerArgCaptor = ArgumentCaptor.forClass(TransitionHandler::class.java)
@@ -1464,7 +1743,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
val task = createTaskInfo(1)
whenever(shellTaskOrganizer.getRunningTaskInfo(anyInt())).thenReturn(null)
whenever(recentTasksController.findTaskInBackground(anyInt())).thenReturn(task)
- controller.moveTaskToDesktop(
+ controller.moveTaskToDefaultDeskAndActivate(
taskId = task.taskId,
transitionSource = UNKNOWN,
remoteTransition = RemoteTransition(spy(TestRemoteTransition())),
@@ -1481,8 +1760,8 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
whenever(transitions.startTransition(anyInt(), any(), transitionHandlerArgCaptor.capture()))
.thenReturn(Binder())
- controller.moveRunningTaskToDesktop(
- task = setUpFullscreenTask(),
+ controller.moveTaskToDefaultDeskAndActivate(
+ taskId = setUpFullscreenTask().taskId,
transitionSource = UNKNOWN,
remoteTransition = RemoteTransition(spy(TestRemoteTransition())),
)
@@ -1493,14 +1772,20 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
}
@Test
- @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+ @DisableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
+ Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
+ )
fun moveRunningTaskToDesktop_otherFreeformTasksBroughtToFront_desktopWallpaperDisabled() {
val homeTask = setUpHomeTask()
val freeformTask = setUpFreeformTask()
val fullscreenTask = setUpFullscreenTask()
markTaskHidden(freeformTask)
- controller.moveRunningTaskToDesktop(fullscreenTask, transitionSource = UNKNOWN)
+ controller.moveTaskToDefaultDeskAndActivate(
+ fullscreenTask.taskId,
+ transitionSource = UNKNOWN,
+ )
with(getLatestEnterDesktopWct()) {
// Operations should include home task, freeform task
@@ -1515,13 +1800,16 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+ @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
fun moveRunningTaskToDesktop_otherFreeformTasksBroughtToFront_desktopWallpaperEnabled() {
- whenever(desktopWallpaperActivityTokenProvider.getToken()).thenReturn(null)
val freeformTask = setUpFreeformTask()
val fullscreenTask = setUpFullscreenTask()
markTaskHidden(freeformTask)
- controller.moveRunningTaskToDesktop(fullscreenTask, transitionSource = UNKNOWN)
+ controller.moveTaskToDefaultDeskAndActivate(
+ fullscreenTask.taskId,
+ transitionSource = UNKNOWN,
+ )
with(getLatestEnterDesktopWct()) {
// Operations should include wallpaper intent, freeform task, fullscreen task
@@ -1537,6 +1825,43 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
}
@Test
+ @EnableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
+ Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
+ )
+ fun moveRunningTaskToDesktop_desktopWallpaperEnabled_multiDesksEnabled() {
+ val freeformTask = setUpFreeformTask()
+ val fullscreenTask = setUpFullscreenTask()
+ markTaskHidden(freeformTask)
+
+ controller.moveTaskToDefaultDeskAndActivate(
+ fullscreenTask.taskId,
+ transitionSource = UNKNOWN,
+ )
+
+ val wct = getLatestEnterDesktopWct()
+ wct.assertPendingIntentAt(index = 0, desktopWallpaperIntent)
+ verify(desksOrganizer).moveTaskToDesk(wct, deskId = 0, fullscreenTask)
+ verify(desksOrganizer).activateDesk(wct, deskId = 0)
+ verify(desktopModeEnterExitTransitionListener)
+ .onEnterDesktopModeTransitionStarted(FREEFORM_ANIMATION_DURATION)
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+ @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun moveRunningTaskToDesktop_activatesDesk_desktopWallpaperEnabled_multiDesksDisabled() {
+ val fullscreenTask = setUpFullscreenTask()
+
+ controller.moveTaskToDefaultDeskAndActivate(
+ fullscreenTask.taskId,
+ transitionSource = UNKNOWN,
+ )
+
+ assertThat(taskRepository.getActiveDeskId(DEFAULT_DISPLAY)).isEqualTo(DEFAULT_DISPLAY)
+ }
+
+ @Test
fun moveRunningTaskToDesktop_onlyFreeformTasksFromCurrentDisplayBroughtToFront() {
setUpHomeTask(displayId = DEFAULT_DISPLAY)
val freeformTaskDefault = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
@@ -1548,7 +1873,10 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
val freeformTaskSecond = setUpFreeformTask(displayId = SECOND_DISPLAY)
markTaskHidden(freeformTaskSecond)
- controller.moveRunningTaskToDesktop(fullscreenTaskDefault, transitionSource = UNKNOWN)
+ controller.moveTaskToDefaultDeskAndActivate(
+ fullscreenTaskDefault.taskId,
+ transitionSource = UNKNOWN,
+ )
with(getLatestEnterDesktopWct()) {
// Check that hierarchy operations do not include tasks from second display
@@ -1562,9 +1890,10 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
}
@Test
- fun moveRunningTaskToDesktop_splitTaskExitsSplit() {
+ @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun moveRunningTaskToDesktop_splitTaskExitsSplit_multiDesksDisabled() {
val task = setUpSplitScreenTask()
- controller.moveRunningTaskToDesktop(task, transitionSource = UNKNOWN)
+ controller.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = UNKNOWN)
val wct = getLatestEnterDesktopWct()
assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
.isEqualTo(WINDOWING_MODE_FREEFORM)
@@ -1579,12 +1908,27 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
}
@Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun moveRunningTaskToDesktop_splitTaskExitsSplit_multiDesksEnabled() {
+ val task = setUpSplitScreenTask()
+ controller.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = UNKNOWN)
+ val wct = getLatestEnterDesktopWct()
+ verify(desksOrganizer).moveTaskToDesk(wct, deskId = 0, task)
+ verify(desktopModeEnterExitTransitionListener)
+ .onEnterDesktopModeTransitionStarted(FREEFORM_ANIMATION_DURATION)
+ verify(splitScreenController)
+ .prepareExitSplitScreen(
+ any(),
+ anyInt(),
+ eq(SplitScreenController.EXIT_REASON_DESKTOP_MODE),
+ )
+ }
+
+ @Test
fun moveRunningTaskToDesktop_fullscreenTaskDoesNotExitSplit() {
val task = setUpFullscreenTask()
- controller.moveRunningTaskToDesktop(task, transitionSource = UNKNOWN)
+ controller.moveTaskToDefaultDeskAndActivate(task.taskId, transitionSource = UNKNOWN)
val wct = getLatestEnterDesktopWct()
- assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
- .isEqualTo(WINDOWING_MODE_FREEFORM)
verify(desktopModeEnterExitTransitionListener)
.onEnterDesktopModeTransitionStarted(FREEFORM_ANIMATION_DURATION)
verify(splitScreenController, never())
@@ -1596,13 +1940,16 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
}
@Test
- @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+ @DisableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
+ Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
+ )
fun moveRunningTaskToDesktop_desktopWallpaperDisabled_bringsTasksOver_dontShowBackTask() {
val freeformTasks = (1..MAX_TASK_LIMIT).map { _ -> setUpFreeformTask() }
val newTask = setUpFullscreenTask()
val homeTask = setUpHomeTask()
- controller.moveRunningTaskToDesktop(newTask, transitionSource = UNKNOWN)
+ controller.moveTaskToDefaultDeskAndActivate(newTask.taskId, transitionSource = UNKNOWN)
val wct = getLatestEnterDesktopWct()
verify(desktopModeEnterExitTransitionListener)
@@ -1618,13 +1965,13 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
+ @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
fun moveRunningTaskToDesktop_desktopWallpaperEnabled_bringsTasksOverLimit_dontShowBackTask() {
- whenever(desktopWallpaperActivityTokenProvider.getToken()).thenReturn(null)
val freeformTasks = (1..MAX_TASK_LIMIT).map { _ -> setUpFreeformTask() }
val newTask = setUpFullscreenTask()
val homeTask = setUpHomeTask()
- controller.moveRunningTaskToDesktop(newTask, transitionSource = UNKNOWN)
+ controller.moveTaskToDefaultDeskAndActivate(newTask.taskId, transitionSource = UNKNOWN)
val wct = getLatestEnterDesktopWct()
verify(desktopModeEnterExitTransitionListener)
@@ -2640,7 +2987,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
fun handleRequest_fullscreenTask_noTasks_enforceDesktop_freeformDisplay_returnFreeformWCT() {
- whenever(desktopWallpaperActivityTokenProvider.getToken()).thenReturn(null)
whenever(DesktopModeStatus.enterDesktopByDefaultOnFreeformDisplay(context)).thenReturn(true)
val tda = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY)!!
tda.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FREEFORM
@@ -2772,7 +3118,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
fun handleRequest_freeformTask_desktopWallpaperEnabled_freeformNotVisible_reorderedToTop() {
- whenever(desktopWallpaperActivityTokenProvider.getToken()).thenReturn(null)
val freeformTask1 = setUpFreeformTask()
val freeformTask2 = createFreeformTask()
@@ -2807,9 +3152,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
fun handleRequest_freeformTask_desktopWallpaperEnabled_noOtherTasks_reorderedToTop() {
- whenever(desktopWallpaperActivityTokenProvider.getToken()).thenReturn(null)
val task = createFreeformTask()
-
val result = controller.handleRequest(Binder(), createTransition(task))
assertNotNull(result, "Should handle request")
@@ -2837,7 +3180,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
fun handleRequest_freeformTask_dskWallpaperEnabled_freeformOnOtherDisplayOnly_reorderedToTop() {
- whenever(desktopWallpaperActivityTokenProvider.getToken()).thenReturn(null)
val taskDefaultDisplay = createFreeformTask(displayId = DEFAULT_DISPLAY)
// Second display task
createFreeformTask(displayId = SECOND_DISPLAY)
@@ -3091,6 +3433,46 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
.isEqualTo(WINDOWING_MODE_FREEFORM)
}
+ @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
+ fun handleRequest_defaultHomePackageWithDisplay_returnSwitchToFullscreenWCT() {
+ val freeformTask = setUpFreeformTask()
+ markTaskVisible(freeformTask)
+
+ val packageManager: PackageManager = org.mockito.kotlin.mock()
+ val homeActivities = ComponentName("defaultHomePackage", /* class */ "")
+ val task =
+ setUpFullscreenTask().apply {
+ baseActivity = homeActivities
+ isTopActivityNoDisplay = false
+ }
+ mContext.setMockPackageManager(packageManager)
+ whenever(packageManager.getHomeActivities(any())).thenReturn(homeActivities)
+
+ val result = controller.handleRequest(Binder(), createTransition(task))
+ assertThat(result?.changes?.get(task.token.asBinder())?.windowingMode)
+ .isEqualTo(WINDOWING_MODE_FREEFORM)
+ }
+
+ @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
+ fun handleRequest_defaultHomePackageWithoutDisplay_returnSwitchToFreeformWCT() {
+ val freeformTask = setUpFreeformTask()
+ markTaskVisible(freeformTask)
+
+ val packageManager: PackageManager = org.mockito.kotlin.mock()
+ val homeActivities = ComponentName("defaultHomePackage", /* class */ "")
+ val task =
+ setUpFullscreenTask().apply {
+ baseActivity = homeActivities
+ isTopActivityNoDisplay = false
+ }
+ mContext.setMockPackageManager(packageManager)
+ whenever(packageManager.getHomeActivities(any())).thenReturn(homeActivities)
+
+ val result = controller.handleRequest(Binder(), createTransition(task))
+ assertThat(result?.changes?.get(task.token.asBinder())?.windowingMode)
+ .isEqualTo(WINDOWING_MODE_FREEFORM)
+ }
+
@Test
fun handleRequest_systemUIActivityWithDisplay_returnSwitchToFullscreenWCT_enforcedDesktop() {
whenever(DesktopModeStatus.enterDesktopByDefaultOnFreeformDisplay(context)).thenReturn(true)
@@ -3410,7 +3792,8 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
}
@Test
- fun moveFocusedTaskToDesktop_fullscreenTaskIsMovedToDesktop() {
+ @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun moveFocusedTaskToDesktop_fullscreenTaskIsMovedToDesktop_multiDesksDisabled() {
val task1 = setUpFullscreenTask()
val task2 = setUpFullscreenTask()
val task3 = setUpFullscreenTask()
@@ -3427,7 +3810,25 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
}
@Test
- fun moveFocusedTaskToDesktop_splitScreenTaskIsMovedToDesktop() {
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun moveFocusedTaskToDesktop_fullscreenTaskIsMovedToDesktop_multiDesksEnabled() {
+ val task1 = setUpFullscreenTask()
+ val task2 = setUpFullscreenTask()
+ val task3 = setUpFullscreenTask()
+
+ task1.isFocused = true
+ task2.isFocused = false
+ task3.isFocused = false
+
+ controller.moveFocusedTaskToDesktop(DEFAULT_DISPLAY, transitionSource = UNKNOWN)
+
+ val wct = getLatestEnterDesktopWct()
+ verify(desksOrganizer).moveTaskToDesk(wct, deskId = 0, task1)
+ }
+
+ @Test
+ @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun moveFocusedTaskToDesktop_splitScreenTaskIsMovedToDesktop_multiDesksDisabled() {
val task1 = setUpSplitScreenTask()
val task2 = setUpFullscreenTask()
val task3 = setUpFullscreenTask()
@@ -3454,6 +3855,33 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
}
@Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun moveFocusedTaskToDesktop_splitScreenTaskIsMovedToDesktop_multiDesksEnabled() {
+ val task1 = setUpSplitScreenTask()
+ val task2 = setUpFullscreenTask()
+ val task3 = setUpFullscreenTask()
+ val task4 = setUpSplitScreenTask()
+
+ task1.isFocused = true
+ task2.isFocused = false
+ task3.isFocused = false
+ task4.isFocused = true
+
+ task4.parentTaskId = task1.taskId
+
+ controller.moveFocusedTaskToDesktop(DEFAULT_DISPLAY, transitionSource = UNKNOWN)
+
+ val wct = getLatestEnterDesktopWct()
+ verify(desksOrganizer).moveTaskToDesk(wct, deskId = 0, task4)
+ verify(splitScreenController)
+ .prepareExitSplitScreen(
+ any(),
+ anyInt(),
+ eq(SplitScreenController.EXIT_REASON_DESKTOP_MODE),
+ )
+ }
+
+ @Test
fun moveFocusedTaskToFullscreen() {
val task1 = setUpFreeformTask()
val task2 = setUpFreeformTask()
@@ -3542,13 +3970,14 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION)
- fun removeDesktop_multipleTasks_removesAll() {
+ @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun removeDesk_multipleTasks_removesAll() {
val task1 = setUpFreeformTask()
val task2 = setUpFreeformTask()
val task3 = setUpFreeformTask()
taskRepository.minimizeTask(DEFAULT_DISPLAY, task2.taskId)
- controller.removeDesktop(displayId = DEFAULT_DISPLAY)
+ controller.removeDefaultDeskInDisplay(displayId = DEFAULT_DISPLAY)
val wct = getLatestWct(TRANSIT_CLOSE)
assertThat(wct.hierarchyOps).hasSize(3)
@@ -3559,14 +3988,15 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION)
- fun removeDesktop_multipleTasksWithBackgroundTask_removesAll() {
+ @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun removeDesk_multipleTasksWithBackgroundTask_removesAll() {
val task1 = setUpFreeformTask()
val task2 = setUpFreeformTask()
val task3 = setUpFreeformTask()
taskRepository.minimizeTask(DEFAULT_DISPLAY, task2.taskId)
whenever(shellTaskOrganizer.getRunningTaskInfo(task3.taskId)).thenReturn(null)
- controller.removeDesktop(displayId = DEFAULT_DISPLAY)
+ controller.removeDefaultDeskInDisplay(displayId = DEFAULT_DISPLAY)
val wct = getLatestWct(TRANSIT_CLOSE)
assertThat(wct.hierarchyOps).hasSize(2)
@@ -3576,6 +4006,83 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
}
@Test
+ @EnableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION,
+ Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
+ )
+ fun removeDesk_multipleDesks_addsPendingTransition() {
+ val transition = Binder()
+ whenever(transitions.startTransition(eq(TRANSIT_CLOSE), any(), anyOrNull()))
+ .thenReturn(transition)
+ taskRepository.addDesk(DEFAULT_DISPLAY, deskId = 2)
+
+ controller.removeDesk(deskId = 2)
+
+ verify(desksOrganizer).removeDesk(any(), eq(2))
+ verify(desksTransitionsObserver)
+ .addPendingTransition(
+ argThat {
+ this is DeskTransition.RemoveDesk &&
+ this.token == transition &&
+ this.deskId == 2
+ }
+ )
+ }
+
+ @Test
+ @EnableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION,
+ Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
+ )
+ fun activateDesk_multipleDesks_addsPendingTransition() {
+ val deskId = 0
+ val transition = Binder()
+ val deskChange = mock(TransitionInfo.Change::class.java)
+ whenever(transitions.startTransition(eq(TRANSIT_TO_FRONT), any(), anyOrNull()))
+ .thenReturn(transition)
+ whenever(desksOrganizer.isDeskActiveAtEnd(deskChange, deskId)).thenReturn(true)
+ // Make desk inactive by activating another desk.
+ taskRepository.addDesk(DEFAULT_DISPLAY, deskId = 1)
+ taskRepository.setActiveDesk(DEFAULT_DISPLAY, deskId = 1)
+
+ controller.activateDesk(deskId, RemoteTransition(TestRemoteTransition()))
+
+ verify(desksTransitionsObserver)
+ .addPendingTransition(
+ argThat {
+ this is DeskTransition.ActivateDesk &&
+ this.token == transition &&
+ this.deskId == 0
+ }
+ )
+ }
+
+ @Test
+ @EnableFlags(
+ Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION,
+ Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
+ )
+ fun moveTaskToDesk_multipleDesks_addsPendingTransition() {
+ val transition = Binder()
+ whenever(enterDesktopTransitionHandler.moveToDesktop(any(), any())).thenReturn(transition)
+ taskRepository.addDesk(DEFAULT_DISPLAY, deskId = 3)
+ val task = setUpFullscreenTask(displayId = DEFAULT_DISPLAY)
+ task.isVisible = true
+
+ controller.moveTaskToDesk(taskId = task.taskId, deskId = 3, transitionSource = UNKNOWN)
+
+ verify(desksTransitionsObserver)
+ .addPendingTransition(
+ argThat {
+ this is DeskTransition.ActiveDeskWithTask &&
+ this.token == transition &&
+ this.deskId == 3 &&
+ this.enterTaskId == task.taskId
+ }
+ )
+ }
+
+ @Test
@EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
fun dragToDesktop_landscapeDevice_resizable_undefinedOrientation_defaultLandscapeBounds() {
val spyController = spy(controller)
@@ -3662,7 +4169,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
shouldLetterbox = true,
)
setUpLandscapeDisplay()
-
spyController.onDragPositioningEndThroughStatusBar(PointF(800f, 1280f), task, mockSurface)
val wct = getLatestDragToDesktopWct()
assertThat(findBoundsChange(wct, task)).isEqualTo(UNRESIZABLE_PORTRAIT_BOUNDS)
@@ -3769,6 +4275,76 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
}
@Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun dragToDesktop_movesTaskToDesk() {
+ val spyController = spy(controller)
+ whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
+ whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull()))
+ .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
+ val task = setUpFullscreenTask(displayId = DEFAULT_DISPLAY)
+
+ spyController.onDragPositioningEndThroughStatusBar(PointF(200f, 200f), task, mockSurface)
+
+ val wct = getLatestDragToDesktopWct()
+ verify(desksOrganizer).moveTaskToDesk(wct, deskId = 0, task)
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun dragToDesktop_activatesDesk() {
+ val spyController = spy(controller)
+ whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
+ whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull()))
+ .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
+ val task = setUpFullscreenTask(displayId = DEFAULT_DISPLAY)
+
+ spyController.onDragPositioningEndThroughStatusBar(PointF(200f, 200f), task, mockSurface)
+
+ val wct = getLatestDragToDesktopWct()
+ verify(desksOrganizer).activateDesk(wct, deskId = 0)
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun dragToDesktop_triggersEnterDesktopListener() {
+ val spyController = spy(controller)
+ whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
+ whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull()))
+ .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
+ val task = setUpFullscreenTask(displayId = DEFAULT_DISPLAY)
+
+ spyController.onDragPositioningEndThroughStatusBar(PointF(200f, 200f), task, mockSurface)
+
+ verify(desktopModeEnterExitTransitionListener)
+ .onEnterDesktopModeTransitionStarted(FREEFORM_ANIMATION_DURATION)
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun dragToDesktop_multipleDesks_addsPendingTransition() {
+ val transition = Binder()
+ val spyController = spy(controller)
+ whenever(dragToDesktopTransitionHandler.finishDragToDesktopTransition(any()))
+ .thenReturn(transition)
+ whenever(spyController.getVisualIndicator()).thenReturn(desktopModeVisualIndicator)
+ whenever(desktopModeVisualIndicator.updateIndicatorType(anyOrNull()))
+ .thenReturn(DesktopModeVisualIndicator.IndicatorType.TO_DESKTOP_INDICATOR)
+ val task = setUpFullscreenTask(displayId = DEFAULT_DISPLAY)
+
+ spyController.onDragPositioningEndThroughStatusBar(PointF(200f, 200f), task, mockSurface)
+
+ verify(desksTransitionsObserver)
+ .addPendingTransition(
+ argThat {
+ this is DeskTransition.ActiveDeskWithTask &&
+ this.token == transition &&
+ this.deskId == 0 &&
+ this.enterTaskId == task.taskId
+ }
+ )
+ }
+
+ @Test
fun onDesktopDragMove_endsOutsideValidDragArea_snapsToValidBounds() {
val task = setUpFreeformTask()
val spyController = spy(controller)
@@ -4626,11 +5202,10 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
val bounds = Rect(0, 0, 200, 100)
val task =
setUpFreeformTask(DEFAULT_DISPLAY, bounds).apply {
- topActivityInfo =
- ActivityInfo().apply {
- screenOrientation = SCREEN_ORIENTATION_LANDSCAPE
- configuration.windowConfiguration.appBounds = bounds
- }
+ topActivityInfo.apply {
+ this?.screenOrientation = SCREEN_ORIENTATION_LANDSCAPE
+ configuration.windowConfiguration.appBounds = bounds
+ }
appCompatTaskInfo.topActivityAppBounds.set(0, 0, bounds.width(), bounds.height())
isResizeable = false
}
@@ -4946,7 +5521,11 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
.thenReturn(ExitResult.Exit(exitingTask = 5, runOnTransitionStart = runOnStartTransit))
whenever(enterDesktopTransitionHandler.moveToDesktop(wct, UNKNOWN)).thenReturn(transition)
- controller.moveTaskToDesktop(taskId = task.taskId, wct = wct, transitionSource = UNKNOWN)
+ controller.moveTaskToDefaultDeskAndActivate(
+ taskId = task.taskId,
+ wct = wct,
+ transitionSource = UNKNOWN,
+ )
verify(mMockDesktopImmersiveController)
.exitImmersiveIfApplicable(eq(wct), eq(task.displayId), eq(task.taskId), any())
@@ -4970,7 +5549,11 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
.thenReturn(ExitResult.Exit(exitingTask = 5, runOnTransitionStart = runOnStartTransit))
whenever(enterDesktopTransitionHandler.moveToDesktop(wct, UNKNOWN)).thenReturn(transition)
- controller.moveTaskToDesktop(taskId = task.taskId, wct = wct, transitionSource = UNKNOWN)
+ controller.moveTaskToDefaultDeskAndActivate(
+ taskId = task.taskId,
+ wct = wct,
+ transitionSource = UNKNOWN,
+ )
verify(mMockDesktopImmersiveController)
.exitImmersiveIfApplicable(eq(wct), eq(task.displayId), eq(task.taskId), any())
@@ -5320,6 +5903,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
): RunningTaskInfo {
val task = createFreeformTask(displayId, bounds)
val activityInfo = ActivityInfo()
+ activityInfo.applicationInfo = ApplicationInfo()
task.topActivityInfo = activityInfo
if (background) {
whenever(shellTaskOrganizer.getRunningTaskInfo(task.taskId)).thenReturn(null)
@@ -5365,6 +5949,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
val activityInfo = ActivityInfo()
activityInfo.screenOrientation = screenOrientation
activityInfo.windowLayout = ActivityInfo.WindowLayout(0, 0F, 0, 0F, gravity, 0, 0)
+ activityInfo.applicationInfo = ApplicationInfo()
with(task) {
topActivityInfo = activityInfo
isResizeable = isResizable
@@ -5538,6 +6123,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
val STABLE_BOUNDS = Rect(0, 0, 1000, 1000)
const val MAX_TASK_LIMIT = 6
private const val TASKBAR_FRAME_HEIGHT = 200
+ private const val FLOAT_TOLERANCE = 0.005f
@JvmStatic
@Parameters(name = "{0}")
@@ -5552,6 +6138,29 @@ private fun WindowContainerTransaction.assertIndexInBounds(index: Int) {
.isGreaterThan(index)
}
+private fun WindowContainerTransaction.assertHop(
+ predicate: (WindowContainerTransaction.HierarchyOp) -> Boolean
+) {
+ assertThat(hierarchyOps.any(predicate)).isTrue()
+}
+
+private fun WindowContainerTransaction.assertWithoutHop(
+ predicate: (WindowContainerTransaction.HierarchyOp) -> Boolean
+) {
+ assertThat(hierarchyOps.none(predicate)).isTrue()
+}
+
+private fun WindowContainerTransaction.assertReorder(
+ task: RunningTaskInfo,
+ toTop: Boolean? = null,
+) {
+ assertHop { hop ->
+ hop.type == HIERARCHY_OP_TYPE_REORDER &&
+ (toTop == null || hop.toTop == toTop) &&
+ hop.container == task.token.asBinder()
+ }
+}
+
private fun WindowContainerTransaction.assertReorderAt(
index: Int,
task: RunningTaskInfo,
@@ -5613,6 +6222,20 @@ private fun WindowContainerTransaction.hasRemoveAt(index: Int, token: WindowCont
assertThat(op.container).isEqualTo(token.asBinder())
}
+private fun WindowContainerTransaction.assertPendingIntent(intent: Intent) {
+ assertHop { hop ->
+ hop.type == HIERARCHY_OP_TYPE_PENDING_INTENT &&
+ hop.pendingIntent?.intent?.component == intent.component
+ }
+}
+
+private fun WindowContainerTransaction.assertWithoutPendingIntent(intent: Intent) {
+ assertWithoutHop { hop ->
+ hop.type == HIERARCHY_OP_TYPE_PENDING_INTENT &&
+ hop.pendingIntent?.intent?.component == intent.component
+ }
+}
+
private fun WindowContainerTransaction.assertPendingIntentAt(index: Int, intent: Intent) {
assertIndexInBounds(index)
val op = hierarchyOps[index]
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserverTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserverTest.kt
index 091159c67db5..c29edece5537 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserverTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserverTest.kt
@@ -47,11 +47,13 @@ import com.android.wm.shell.back.BackAnimationController
import com.android.wm.shell.common.ShellExecutor
import com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.TRANSIT_EXIT_DESKTOP_MODE_TASK_DRAG
import com.android.wm.shell.desktopmode.desktopwallpaperactivity.DesktopWallpaperActivityTokenProvider
+import com.android.wm.shell.desktopmode.multidesks.DesksTransitionObserver
import com.android.wm.shell.shared.desktopmode.DesktopModeStatus
import com.android.wm.shell.sysui.ShellInit
import com.android.wm.shell.transition.Transitions
import com.android.wm.shell.transition.Transitions.TRANSIT_EXIT_PIP
import com.android.wm.shell.transition.Transitions.TRANSIT_REMOVE_PIP
+import com.android.wm.shell.util.StubTransaction
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
import org.junit.Before
@@ -92,6 +94,7 @@ class DesktopTasksTransitionObserverTest {
private val backAnimationController = mock<BackAnimationController>()
private val desktopWallpaperActivityTokenProvider =
mock<DesktopWallpaperActivityTokenProvider>()
+ private val desksTransitionObserver = mock<DesksTransitionObserver>()
private val wallpaperToken = MockToken().token()
private lateinit var transitionObserver: DesktopTasksTransitionObserver
@@ -115,6 +118,7 @@ class DesktopTasksTransitionObserverTest {
mixedHandler,
backAnimationController,
desktopWallpaperActivityTokenProvider,
+ desksTransitionObserver,
shellInit,
)
}
@@ -411,6 +415,21 @@ class DesktopTasksTransitionObserverTest {
verify(taskRepository).setTaskInPip(task.displayId, task.taskId, enterPip = false)
}
+ @Test
+ fun onTransitionReady_forwardsToDesksTransitionObserver() {
+ val transition = Binder()
+ val info = TransitionInfo(TRANSIT_CLOSE, /* flags= */ 0)
+
+ transitionObserver.onTransitionReady(
+ transition = transition,
+ info = info,
+ StubTransaction(),
+ StubTransaction(),
+ )
+
+ verify(desksTransitionObserver).onTransitionReady(transition, info)
+ }
+
private fun createBackNavigationTransition(
task: RunningTaskInfo?,
type: Int = TRANSIT_TO_BACK,
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandlerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandlerTest.kt
index bf9cf00050dc..25246d9984c3 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandlerTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandlerTest.kt
@@ -284,6 +284,7 @@ class DragToDesktopTransitionHandlerTest : ShellTestCase() {
cancelToken,
TransitionInfo(TRANSIT_DESKTOP_MODE_CANCEL_DRAG_TO_DESKTOP, 0),
mock<SurfaceControl.Transaction>(),
+ mock<SurfaceControl.Transaction>(),
startToken,
mock<Transitions.TransitionFinishCallback>(),
)
@@ -385,21 +386,23 @@ class DragToDesktopTransitionHandlerTest : ShellTestCase() {
@Test
fun mergeAnimation_otherTransition_doesNotMerge() {
- val transaction = mock<SurfaceControl.Transaction>()
+ val mergedStartTransaction = mock<SurfaceControl.Transaction>()
+ val mergedFinishTransaction = mock<SurfaceControl.Transaction>()
val finishCallback = mock<Transitions.TransitionFinishCallback>()
val task = createTask()
startDrag(defaultHandler, task)
defaultHandler.mergeAnimation(
- transition = mock(),
+ transition = mock<IBinder>(),
info = createTransitionInfo(type = TRANSIT_OPEN, draggedTask = task),
- t = transaction,
- mergeTarget = mock(),
+ startT = mergedStartTransaction,
+ finishT = mergedFinishTransaction,
+ mergeTarget = mock<IBinder>(),
finishCallback = finishCallback,
)
// Should NOT have any transaction changes
- verifyZeroInteractions(transaction)
+ verifyZeroInteractions(mergedStartTransaction)
// Should NOT merge animation
verify(finishCallback, never()).onTransitionFinished(any())
}
@@ -408,6 +411,7 @@ class DragToDesktopTransitionHandlerTest : ShellTestCase() {
fun mergeAnimation_endTransition_mergesAnimation() {
val playingFinishTransaction = mock<SurfaceControl.Transaction>()
val mergedStartTransaction = mock<SurfaceControl.Transaction>()
+ val mergedFinishTransaction = mock<SurfaceControl.Transaction>()
val finishCallback = mock<Transitions.TransitionFinishCallback>()
val task = createTask()
val startTransition =
@@ -415,13 +419,14 @@ class DragToDesktopTransitionHandlerTest : ShellTestCase() {
defaultHandler.onTaskResizeAnimationListener = mock()
defaultHandler.mergeAnimation(
- transition = mock(),
+ transition = mock<IBinder>(),
info =
createTransitionInfo(
type = TRANSIT_DESKTOP_MODE_END_DRAG_TO_DESKTOP,
draggedTask = task,
),
- t = mergedStartTransaction,
+ startT = mergedStartTransaction,
+ finishT = mergedFinishTransaction,
mergeTarget = startTransition,
finishCallback = finishCallback,
)
@@ -440,6 +445,7 @@ class DragToDesktopTransitionHandlerTest : ShellTestCase() {
whenever(dragAnimator.computeCurrentVelocity()).thenReturn(PointF())
val playingFinishTransaction = mock<SurfaceControl.Transaction>()
val mergedStartTransaction = mock<SurfaceControl.Transaction>()
+ val mergedFinishTransaction = mock<SurfaceControl.Transaction>()
val finishCallback = mock<Transitions.TransitionFinishCallback>()
val task = createTask()
val startTransition =
@@ -447,13 +453,14 @@ class DragToDesktopTransitionHandlerTest : ShellTestCase() {
springHandler.onTaskResizeAnimationListener = mock()
springHandler.mergeAnimation(
- transition = mock(),
+ transition = mock<IBinder>(),
info =
createTransitionInfo(
type = TRANSIT_DESKTOP_MODE_END_DRAG_TO_DESKTOP,
draggedTask = task,
),
- t = mergedStartTransaction,
+ startT = mergedStartTransaction,
+ finishT = mergedFinishTransaction,
mergeTarget = startTransition,
finishCallback = finishCallback,
)
@@ -470,6 +477,40 @@ class DragToDesktopTransitionHandlerTest : ShellTestCase() {
}
@Test
+ fun mergeAnimation_endTransition_springHandler_noStartHomeChange_doesntCrash() {
+ whenever(dragAnimator.computeCurrentVelocity()).thenReturn(PointF())
+ val playingFinishTransaction = mock<SurfaceControl.Transaction>()
+ val mergedStartTransaction = mock<SurfaceControl.Transaction>()
+ val mergedFinishTransaction = mock<SurfaceControl.Transaction>()
+ val finishCallback = mock<Transitions.TransitionFinishCallback>()
+ val task = createTask()
+ val startTransition = startDrag(
+ springHandler, task, finishTransaction = playingFinishTransaction, homeChange = null)
+ springHandler.onTaskResizeAnimationListener = mock()
+
+ springHandler.mergeAnimation(
+ transition = mock<IBinder>(),
+ info =
+ createTransitionInfo(
+ type = TRANSIT_DESKTOP_MODE_END_DRAG_TO_DESKTOP,
+ draggedTask = task,
+ ),
+ startT = mergedStartTransaction,
+ finishT = mergedFinishTransaction,
+ mergeTarget = startTransition,
+ finishCallback = finishCallback,
+ )
+
+ // Should show dragged task layer in start and finish transaction
+ verify(mergedStartTransaction).show(draggedTaskLeash)
+ verify(playingFinishTransaction).show(draggedTaskLeash)
+ // Should update the dragged task layer
+ verify(mergedStartTransaction).setLayer(eq(draggedTaskLeash), anyInt())
+ // Should merge animation
+ verify(finishCallback).onTransitionFinished(null)
+ }
+
+ @Test
fun propertyValue_returnsSystemPropertyValue() {
val name = "property_name"
val value = 10f
@@ -564,7 +605,8 @@ class DragToDesktopTransitionHandlerTest : ShellTestCase() {
type = TRANSIT_DESKTOP_MODE_END_DRAG_TO_DESKTOP,
draggedTask = task,
),
- t = mock<SurfaceControl.Transaction>(),
+ startT = mock<SurfaceControl.Transaction>(),
+ finishT = mock<SurfaceControl.Transaction>(),
mergeTarget = startTransition,
finishCallback = mock<Transitions.TransitionFinishCallback>(),
)
@@ -581,6 +623,7 @@ class DragToDesktopTransitionHandlerTest : ShellTestCase() {
handler: DragToDesktopTransitionHandler,
task: RunningTaskInfo = createTask(),
finishTransaction: SurfaceControl.Transaction = mock(),
+ homeChange: TransitionInfo.Change? = createHomeChange(),
): IBinder {
whenever(dragAnimator.position).thenReturn(PointF())
// Simulate transition is started and is ready to animate.
@@ -591,6 +634,7 @@ class DragToDesktopTransitionHandlerTest : ShellTestCase() {
createTransitionInfo(
type = TRANSIT_DESKTOP_MODE_START_DRAG_TO_DESKTOP,
draggedTask = task,
+ homeChange = homeChange,
),
startTransaction = mock(),
finishTransaction = finishTransaction,
@@ -676,16 +720,12 @@ class DragToDesktopTransitionHandlerTest : ShellTestCase() {
}
}
- private fun createTransitionInfo(type: Int, draggedTask: RunningTaskInfo) =
+ private fun createTransitionInfo(
+ type: Int,
+ draggedTask: RunningTaskInfo,
+ homeChange: TransitionInfo.Change? = createHomeChange()) =
TransitionInfo(type, /* flags= */ 0).apply {
- addChange( // Home.
- TransitionInfo.Change(mock(), homeTaskLeash).apply {
- parent = null
- taskInfo =
- TestRunningTaskInfoBuilder().setActivityType(ACTIVITY_TYPE_HOME).build()
- flags = flags or FLAG_IS_WALLPAPER
- }
- )
+ homeChange?.let { addChange(it) }
addChange( // Dragged Task.
TransitionInfo.Change(mock(), draggedTaskLeash).apply {
parent = null
@@ -701,6 +741,12 @@ class DragToDesktopTransitionHandlerTest : ShellTestCase() {
)
}
+ private fun createHomeChange() = TransitionInfo.Change(mock(), homeTaskLeash).apply {
+ parent = null
+ taskInfo = TestRunningTaskInfoBuilder().setActivityType(ACTIVITY_TYPE_HOME).build()
+ flags = flags or FLAG_IS_WALLPAPER
+ }
+
private fun systemPropertiesKey(name: String) =
"${SpringDragToDesktopTransitionHandler.SYSTEM_PROPERTIES_GROUP}.$name"
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/multidesks/DesksTransitionObserverTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/multidesks/DesksTransitionObserverTest.kt
new file mode 100644
index 000000000000..9f09e3f57927
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/multidesks/DesksTransitionObserverTest.kt
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.wm.shell.desktopmode.multidesks
+
+import android.os.Binder
+import android.platform.test.annotations.EnableFlags
+import android.platform.test.flag.junit.SetFlagsRule
+import android.testing.AndroidTestingRunner
+import android.view.Display.DEFAULT_DISPLAY
+import android.view.WindowManager.TRANSIT_CLOSE
+import android.view.WindowManager.TRANSIT_TO_FRONT
+import android.window.TransitionInfo
+import android.window.TransitionInfo.Change
+import androidx.test.filters.SmallTest
+import com.android.window.flags.Flags
+import com.android.wm.shell.ShellTestCase
+import com.android.wm.shell.TestShellExecutor
+import com.android.wm.shell.desktopmode.DesktopRepository
+import com.android.wm.shell.desktopmode.DesktopTestHelpers.createFreeformTask
+import com.android.wm.shell.desktopmode.DesktopUserRepositories
+import com.android.wm.shell.sysui.ShellInit
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.test.TestScope
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.whenever
+
+/**
+ * Tests for [DesksTransitionObserver].
+ *
+ * Build/Install/Run: atest WMShellUnitTests:DesksTransitionObserverTest
+ */
+@SmallTest
+@RunWith(AndroidTestingRunner::class)
+class DesksTransitionObserverTest : ShellTestCase() {
+
+ @JvmField @Rule val setFlagsRule = SetFlagsRule()
+
+ private val mockDesksOrganizer = mock<DesksOrganizer>()
+ val testScope = TestScope()
+
+ private lateinit var desktopUserRepositories: DesktopUserRepositories
+ private lateinit var observer: DesksTransitionObserver
+
+ private val repository: DesktopRepository
+ get() = desktopUserRepositories.current
+
+ @Before
+ fun setUp() {
+ desktopUserRepositories =
+ DesktopUserRepositories(
+ context,
+ ShellInit(TestShellExecutor()),
+ /* shellController= */ mock(),
+ /* persistentRepository= */ mock(),
+ /* repositoryInitializer= */ mock(),
+ testScope,
+ /* userManager= */ mock(),
+ )
+ observer = DesksTransitionObserver(desktopUserRepositories, mockDesksOrganizer)
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun onTransitionReady_removeDesk_removesFromRepository() {
+ val transition = Binder()
+ val removeTransition =
+ DeskTransition.RemoveDesk(
+ transition,
+ displayId = DEFAULT_DISPLAY,
+ deskId = 5,
+ tasks = setOf(10, 11),
+ onDeskRemovedListener = null,
+ )
+ repository.addDesk(DEFAULT_DISPLAY, deskId = 5)
+
+ observer.addPendingTransition(removeTransition)
+ observer.onTransitionReady(
+ transition = transition,
+ info = TransitionInfo(TRANSIT_CLOSE, /* flags= */ 0),
+ )
+
+ assertThat(repository.getDeskIds(DEFAULT_DISPLAY)).doesNotContain(5)
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun onTransitionReady_removeDesk_invokesOnRemoveListener() {
+ class FakeOnDeskRemovedListener : OnDeskRemovedListener {
+ var lastDeskRemoved: Int? = null
+
+ override fun onDeskRemoved(lastDisplayId: Int, deskId: Int) {
+ lastDeskRemoved = deskId
+ }
+ }
+ val transition = Binder()
+ val removeListener = FakeOnDeskRemovedListener()
+ val removeTransition =
+ DeskTransition.RemoveDesk(
+ transition,
+ displayId = DEFAULT_DISPLAY,
+ deskId = 5,
+ tasks = setOf(10, 11),
+ onDeskRemovedListener = removeListener,
+ )
+ repository.addDesk(DEFAULT_DISPLAY, deskId = 5)
+
+ observer.addPendingTransition(removeTransition)
+ observer.onTransitionReady(
+ transition = transition,
+ info = TransitionInfo(TRANSIT_CLOSE, /* flags= */ 0),
+ )
+
+ assertThat(removeListener.lastDeskRemoved).isEqualTo(5)
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun onTransitionReady_activateDesk_updatesRepository() {
+ val transition = Binder()
+ val change = Change(mock(), mock())
+ whenever(mockDesksOrganizer.isDeskActiveAtEnd(change, deskId = 5)).thenReturn(true)
+ val activateTransition =
+ DeskTransition.ActivateDesk(transition, displayId = DEFAULT_DISPLAY, deskId = 5)
+ repository.addDesk(DEFAULT_DISPLAY, deskId = 5)
+
+ observer.addPendingTransition(activateTransition)
+ observer.onTransitionReady(
+ transition = transition,
+ info = TransitionInfo(TRANSIT_TO_FRONT, /* flags= */ 0).apply { addChange(change) },
+ )
+
+ assertThat(repository.getActiveDeskId(DEFAULT_DISPLAY)).isEqualTo(5)
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ fun onTransitionReady_activateDeskWithTask_updatesRepository() =
+ testScope.runTest {
+ val deskId = 5
+ val task = createFreeformTask(DEFAULT_DISPLAY).apply { isVisibleRequested = true }
+ val transition = Binder()
+ val change = Change(mock(), mock()).apply { taskInfo = task }
+ whenever(mockDesksOrganizer.getDeskAtEnd(change)).thenReturn(deskId)
+ val activateTransition =
+ DeskTransition.ActiveDeskWithTask(
+ transition,
+ displayId = DEFAULT_DISPLAY,
+ deskId = deskId,
+ enterTaskId = task.taskId,
+ )
+ repository.addDesk(DEFAULT_DISPLAY, deskId = deskId)
+
+ observer.addPendingTransition(activateTransition)
+ observer.onTransitionReady(
+ transition = transition,
+ info = TransitionInfo(TRANSIT_TO_FRONT, /* flags= */ 0).apply { addChange(change) },
+ )
+
+ assertThat(repository.getActiveDeskId(DEFAULT_DISPLAY)).isEqualTo(deskId)
+ assertThat(repository.getActiveTaskIdsInDesk(deskId)).contains(task.taskId)
+ }
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/multidesks/RootTaskDesksOrganizerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/multidesks/RootTaskDesksOrganizerTest.kt
index a07203d86b75..4d4b15389eca 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/multidesks/RootTaskDesksOrganizerTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/multidesks/RootTaskDesksOrganizerTest.kt
@@ -15,9 +15,11 @@
*/
package com.android.wm.shell.desktopmode.multidesks
+import android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED
import android.testing.AndroidTestingRunner
import android.view.Display
import android.view.SurfaceControl
+import android.view.WindowManager.TRANSIT_TO_FRONT
import android.window.TransitionInfo
import android.window.WindowContainerTransaction
import android.window.WindowContainerTransaction.HierarchyOp
@@ -216,6 +218,13 @@ class RootTaskDesksOrganizerTest : ShellTestCase() {
}
)
.isTrue()
+ assertThat(
+ wct.changes.any { change ->
+ change.key == desktopTask.token.asBinder() &&
+ change.value.windowingMode == WINDOWING_MODE_UNDEFINED
+ }
+ )
+ .isTrue()
}
@Test
@@ -244,6 +253,26 @@ class RootTaskDesksOrganizerTest : ShellTestCase() {
assertThat(endDesk).isEqualTo(freeformRoot.taskId)
}
+ @Test
+ fun testIsDeskActiveAtEnd() {
+ organizer.createDesk(Display.DEFAULT_DISPLAY, FakeOnCreateCallback())
+ val freeformRoot = createFreeformTask().apply { parentTaskId = -1 }
+ freeformRoot.isVisibleRequested = true
+ organizer.onTaskAppeared(freeformRoot, SurfaceControl())
+
+ val isActive =
+ organizer.isDeskActiveAtEnd(
+ change =
+ TransitionInfo.Change(freeformRoot.token, SurfaceControl()).apply {
+ taskInfo = freeformRoot
+ mode = TRANSIT_TO_FRONT
+ },
+ deskId = freeformRoot.taskId,
+ )
+
+ assertThat(isActive).isTrue()
+ }
+
private class FakeOnCreateCallback : DesksOrganizer.OnCreateCallback {
var deskId: Int? = null
val created: Boolean
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/draganddrop/DragAndDropControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/draganddrop/DragAndDropControllerTest.java
index 1b1a5a909220..06dcd8812350 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/draganddrop/DragAndDropControllerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/draganddrop/DragAndDropControllerTest.java
@@ -47,6 +47,7 @@ import com.android.internal.logging.UiEventLogger;
import com.android.launcher3.icons.IconProvider;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.ShellTestCase;
+import com.android.wm.shell.bubbles.bar.BubbleBarDragListener;
import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.sysui.ShellCommandHandler;
@@ -60,6 +61,8 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import dagger.Lazy;
+
/**
* Tests for the drag and drop controller.
*/
@@ -91,6 +94,8 @@ public class DragAndDropControllerTest extends ShellTestCase {
private Transitions mTransitions;
@Mock
private GlobalDragListener mGlobalDragListener;
+ @Mock
+ private Lazy<BubbleBarDragListener> mBubbleBarDragControllerLazy;
private DragAndDropController mController;
@@ -99,7 +104,8 @@ public class DragAndDropControllerTest extends ShellTestCase {
MockitoAnnotations.initMocks(this);
mController = new DragAndDropController(mContext, mShellInit, mShellController,
mShellCommandHandler, mShellTaskOrganizer, mDisplayController, mUiEventLogger,
- mIconProvider, mGlobalDragListener, mTransitions, mMainExecutor);
+ mIconProvider, mGlobalDragListener, mTransitions, mBubbleBarDragControllerLazy,
+ mMainExecutor);
mController.onInit();
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/PipSurfaceTransactionHelperTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/PipSurfaceTransactionHelperTest.java
new file mode 100644
index 000000000000..a2253cfc95d9
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/PipSurfaceTransactionHelperTest.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.pip2;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyFloat;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper;
+import android.view.SurfaceControl;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.wm.shell.R;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+/**
+ * Unit test against {@link PipSurfaceTransactionHelper}.
+ */
+@SmallTest
+@TestableLooper.RunWithLooper
+@RunWith(AndroidTestingRunner.class)
+public class PipSurfaceTransactionHelperTest {
+
+ private static final int CORNER_RADIUS = 10;
+ private static final int SHADOW_RADIUS = 20;
+
+ @Mock private Context mMockContext;
+ @Mock private Resources mMockResources;
+ @Mock private SurfaceControl.Transaction mMockTransaction;
+
+ private PipSurfaceTransactionHelper mPipSurfaceTransactionHelper;
+ private SurfaceControl mTestLeash;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ when(mMockContext.getResources()).thenReturn(mMockResources);
+ when(mMockResources.getDimensionPixelSize(eq(R.dimen.pip_corner_radius)))
+ .thenReturn(CORNER_RADIUS);
+ when(mMockResources.getDimensionPixelSize(eq(R.dimen.pip_shadow_radius)))
+ .thenReturn(SHADOW_RADIUS);
+ when(mMockTransaction.setCornerRadius(any(SurfaceControl.class), anyFloat()))
+ .thenReturn(mMockTransaction);
+ when(mMockTransaction.setShadowRadius(any(SurfaceControl.class), anyFloat()))
+ .thenReturn(mMockTransaction);
+
+ mPipSurfaceTransactionHelper = new PipSurfaceTransactionHelper(mMockContext);
+ mTestLeash = new SurfaceControl.Builder()
+ .setContainerLayer()
+ .setName("PipSurfaceTransactionHelperTest")
+ .setCallsite("PipSurfaceTransactionHelperTest")
+ .build();
+ }
+
+ @Test
+ public void round_doNotApply_setZeroCornerRadius() {
+ mPipSurfaceTransactionHelper.round(mMockTransaction, mTestLeash, false /* apply */);
+
+ verify(mMockTransaction).setCornerRadius(eq(mTestLeash), eq(0f));
+ }
+
+ @Test
+ public void round_doApply_setExactCornerRadius() {
+ mPipSurfaceTransactionHelper.round(mMockTransaction, mTestLeash, true /* apply */);
+
+ verify(mMockTransaction).setCornerRadius(eq(mTestLeash), eq((float) CORNER_RADIUS));
+ }
+
+ @Test
+ public void shadow_doNotApply_setZeroShadowRadius() {
+ mPipSurfaceTransactionHelper.shadow(mMockTransaction, mTestLeash, false /* apply */);
+
+ verify(mMockTransaction).setShadowRadius(eq(mTestLeash), eq(0f));
+ }
+
+ @Test
+ public void shadow_doApply_setExactShadowRadius() {
+ mPipSurfaceTransactionHelper.shadow(mMockTransaction, mTestLeash, true /* apply */);
+
+ verify(mMockTransaction).setShadowRadius(eq(mTestLeash), eq((float) SHADOW_RADIUS));
+ }
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipSchedulerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipSchedulerTest.java
index bd857c7dcd45..8e0381e4f933 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipSchedulerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipSchedulerTest.java
@@ -26,7 +26,6 @@ import static org.mockito.kotlin.MatchersKt.eq;
import static org.mockito.kotlin.VerificationKt.times;
import static org.mockito.kotlin.VerificationKt.verify;
-import android.app.TaskInfo;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Matrix;
@@ -39,12 +38,9 @@ import android.window.WindowContainerTransaction;
import androidx.test.filters.SmallTest;
-import com.android.wm.shell.RootTaskDisplayAreaOrganizer;
import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.pip.PipBoundsState;
-import com.android.wm.shell.desktopmode.DesktopRepository;
-import com.android.wm.shell.desktopmode.DesktopUserRepositories;
-import com.android.wm.shell.desktopmode.desktopwallpaperactivity.DesktopWallpaperActivityTokenProvider;
+import com.android.wm.shell.common.pip.PipDesktopState;
import com.android.wm.shell.pip.PipTransitionController;
import com.android.wm.shell.pip2.PipSurfaceTransactionHelper;
import com.android.wm.shell.pip2.animation.PipAlphaAnimator;
@@ -55,11 +51,8 @@ import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
-import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
-import java.util.Optional;
-
/**
* Unit test against {@link PipScheduler}
*/
@@ -77,16 +70,13 @@ public class PipSchedulerTest {
@Mock private PipBoundsState mMockPipBoundsState;
@Mock private ShellExecutor mMockMainExecutor;
@Mock private PipTransitionState mMockPipTransitionState;
+ @Mock private PipDesktopState mMockPipDesktopState;
@Mock private PipTransitionController mMockPipTransitionController;
@Mock private Runnable mMockUpdateMovementBoundsRunnable;
@Mock private WindowContainerToken mMockPipTaskToken;
@Mock private PipSurfaceTransactionHelper.SurfaceControlTransactionFactory mMockFactory;
@Mock private SurfaceControl.Transaction mMockTransaction;
@Mock private PipAlphaAnimator mMockAlphaAnimator;
- @Mock private DesktopUserRepositories mMockDesktopUserRepositories;
- @Mock private DesktopWallpaperActivityTokenProvider mMockDesktopWallpaperActivityTokenProvider;
- @Mock private RootTaskDisplayAreaOrganizer mRootTaskDisplayAreaOrganizer;
-
@Captor private ArgumentCaptor<Runnable> mRunnableArgumentCaptor;
@Captor private ArgumentCaptor<WindowContainerTransaction> mWctArgumentCaptor;
@@ -101,14 +91,9 @@ public class PipSchedulerTest {
when(mMockFactory.getTransaction()).thenReturn(mMockTransaction);
when(mMockTransaction.setMatrix(any(SurfaceControl.class), any(Matrix.class), any()))
.thenReturn(mMockTransaction);
- when(mMockDesktopUserRepositories.getCurrent())
- .thenReturn(Mockito.mock(DesktopRepository.class));
- when(mMockPipTransitionState.getPipTaskInfo()).thenReturn(Mockito.mock(TaskInfo.class));
mPipScheduler = new PipScheduler(mMockContext, mMockPipBoundsState, mMockMainExecutor,
- mMockPipTransitionState, Optional.of(mMockDesktopUserRepositories),
- Optional.of(mMockDesktopWallpaperActivityTokenProvider),
- mRootTaskDisplayAreaOrganizer);
+ mMockPipTransitionState, mMockPipDesktopState);
mPipScheduler.setPipTransitionController(mMockPipTransitionController);
mPipScheduler.setSurfaceControlTransactionFactory(mMockFactory);
mPipScheduler.setPipAlphaAnimatorSupplier((context, leash, startTx, finishTx, direction) ->
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipTaskListenerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipTaskListenerTest.java
index 3923a1ef5633..1b462c30e017 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipTaskListenerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipTaskListenerTest.java
@@ -165,6 +165,25 @@ public class PipTaskListenerTest {
}
@Test
+ public void onTaskInfoChanged_withNullPipParams_doNothing() {
+ mPipTaskListener = new PipTaskListener(mMockContext, mMockShellTaskOrganizer,
+ mMockPipTransitionState, mMockPipScheduler, mMockPipBoundsState,
+ mMockPipBoundsAlgorithm, mMockShellExecutor);
+ mPipTaskListener.addParamsChangedListener(mMockPipParamsChangedCallback);
+ Rational aspectRatio = new Rational(4, 3);
+ when(mMockPipBoundsState.getAspectRatio()).thenReturn(aspectRatio.toFloat());
+ String action1 = "action1";
+ mPipTaskListener.onTaskInfoChanged(getTaskInfo(aspectRatio, action1));
+
+ clearInvocations(mMockPipParamsChangedCallback);
+ mPipTaskListener.onTaskInfoChanged(new ActivityManager.RunningTaskInfo());
+
+ verifyZeroInteractions(mMockPipParamsChangedCallback);
+ verify(mMockPipTransitionState, times(0))
+ .setOnIdlePipTransitionStateRunnable(any(Runnable.class));
+ }
+
+ @Test
public void onTaskInfoChanged_withActionsChanged_callbackActionsChanged() {
mPipTaskListener = new PipTaskListener(mMockContext, mMockShellTaskOrganizer,
mMockPipTransitionState, mMockPipScheduler, mMockPipBoundsState,
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/bubbles/DragZoneFactoryTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/bubbles/DragZoneFactoryTest.kt
new file mode 100644
index 000000000000..e28d6ff8bf7f
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/bubbles/DragZoneFactoryTest.kt
@@ -0,0 +1,249 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.shared.bubbles
+
+import android.graphics.Insets
+import android.graphics.Rect
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.wm.shell.shared.bubbles.DragZoneFactory.DesktopWindowModeChecker
+import com.android.wm.shell.shared.bubbles.DragZoneFactory.SplitScreenModeChecker
+import com.android.wm.shell.shared.bubbles.DragZoneFactory.SplitScreenModeChecker.SplitScreenMode
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+/** Unit tests for [DragZoneFactory]. */
+class DragZoneFactoryTest {
+
+ private lateinit var dragZoneFactory: DragZoneFactory
+ private val tabletPortrait =
+ DeviceConfig(
+ windowBounds = Rect(0, 0, 1000, 2000),
+ isLargeScreen = true,
+ isSmallTablet = false,
+ isLandscape = false,
+ isRtl = false,
+ insets = Insets.of(0, 0, 0, 0)
+ )
+ private val tabletLandscape =
+ tabletPortrait.copy(windowBounds = Rect(0, 0, 2000, 1000), isLandscape = true)
+ private val foldablePortrait =
+ tabletPortrait.copy(windowBounds = Rect(0, 0, 800, 900), isSmallTablet = true)
+ private val foldableLandscape =
+ foldablePortrait.copy(windowBounds = Rect(0, 0, 900, 800), isLandscape = true)
+ private val splitScreenModeChecker = SplitScreenModeChecker { SplitScreenMode.NONE }
+ private var isDesktopWindowModeSupported = true
+ private val desktopWindowModeChecker = DesktopWindowModeChecker { isDesktopWindowModeSupported }
+
+ @Test
+ fun dragZonesForBubbleBar_tablet() {
+ dragZoneFactory =
+ DragZoneFactory(tabletPortrait, splitScreenModeChecker, desktopWindowModeChecker)
+ val dragZones =
+ dragZoneFactory.createSortedDragZones(DraggedObject.BubbleBar(BubbleBarLocation.LEFT))
+ val expectedZones: List<Class<out DragZone>> =
+ listOf(
+ DragZone.Dismiss::class.java,
+ DragZone.Bubble::class.java,
+ DragZone.Bubble::class.java,
+ )
+ dragZones.zip(expectedZones).forEach { (zone, expectedType) ->
+ assertThat(zone).isInstanceOf(expectedType)
+ }
+ }
+
+ @Test
+ fun dragZonesForBubble_tablet_portrait() {
+ dragZoneFactory =
+ DragZoneFactory(tabletPortrait, splitScreenModeChecker, desktopWindowModeChecker)
+ val dragZones =
+ dragZoneFactory.createSortedDragZones(DraggedObject.Bubble(BubbleBarLocation.LEFT))
+ val expectedZones: List<Class<out DragZone>> =
+ listOf(
+ DragZone.Dismiss::class.java,
+ DragZone.Bubble.Left::class.java,
+ DragZone.Bubble.Right::class.java,
+ DragZone.FullScreen::class.java,
+ DragZone.DesktopWindow::class.java,
+ DragZone.Split.Top::class.java,
+ DragZone.Split.Bottom::class.java,
+ )
+ dragZones.zip(expectedZones).forEach { (zone, expectedType) ->
+ assertThat(zone).isInstanceOf(expectedType)
+ }
+ }
+
+ @Test
+ fun dragZonesForBubble_tablet_landscape() {
+ dragZoneFactory = DragZoneFactory(tabletLandscape, splitScreenModeChecker, desktopWindowModeChecker)
+ val dragZones =
+ dragZoneFactory.createSortedDragZones(DraggedObject.Bubble(BubbleBarLocation.LEFT))
+ val expectedZones: List<Class<out DragZone>> =
+ listOf(
+ DragZone.Dismiss::class.java,
+ DragZone.Bubble.Left::class.java,
+ DragZone.Bubble.Right::class.java,
+ DragZone.FullScreen::class.java,
+ DragZone.DesktopWindow::class.java,
+ DragZone.Split.Left::class.java,
+ DragZone.Split.Right::class.java,
+ )
+ dragZones.zip(expectedZones).forEach { (zone, expectedType) ->
+ assertThat(zone).isInstanceOf(expectedType)
+ }
+ }
+
+ @Test
+ fun dragZonesForBubble_foldable_portrait() {
+ dragZoneFactory = DragZoneFactory(foldablePortrait, splitScreenModeChecker, desktopWindowModeChecker)
+ val dragZones =
+ dragZoneFactory.createSortedDragZones(DraggedObject.Bubble(BubbleBarLocation.LEFT))
+ val expectedZones: List<Class<out DragZone>> =
+ listOf(
+ DragZone.Dismiss::class.java,
+ DragZone.Bubble.Left::class.java,
+ DragZone.Bubble.Right::class.java,
+ DragZone.FullScreen::class.java,
+ DragZone.Split.Left::class.java,
+ DragZone.Split.Right::class.java,
+ )
+ dragZones.zip(expectedZones).forEach { (zone, expectedType) ->
+ assertThat(zone).isInstanceOf(expectedType)
+ }
+ }
+
+ @Test
+ fun dragZonesForBubble_foldable_landscape() {
+ dragZoneFactory = DragZoneFactory(foldableLandscape, splitScreenModeChecker, desktopWindowModeChecker)
+ val dragZones =
+ dragZoneFactory.createSortedDragZones(DraggedObject.Bubble(BubbleBarLocation.LEFT))
+ val expectedZones: List<Class<out DragZone>> =
+ listOf(
+ DragZone.Dismiss::class.java,
+ DragZone.Bubble.Left::class.java,
+ DragZone.Bubble.Right::class.java,
+ DragZone.FullScreen::class.java,
+ DragZone.Split.Top::class.java,
+ DragZone.Split.Bottom::class.java,
+ )
+ dragZones.zip(expectedZones).forEach { (zone, expectedType) ->
+ assertThat(zone).isInstanceOf(expectedType)
+ }
+ }
+
+ @Test
+ fun dragZonesForExpandedView_tablet_portrait() {
+ dragZoneFactory =
+ DragZoneFactory(tabletPortrait, splitScreenModeChecker, desktopWindowModeChecker)
+ val dragZones =
+ dragZoneFactory.createSortedDragZones(
+ DraggedObject.ExpandedView(BubbleBarLocation.LEFT)
+ )
+ val expectedZones: List<Class<out DragZone>> =
+ listOf(
+ DragZone.Dismiss::class.java,
+ DragZone.FullScreen::class.java,
+ DragZone.DesktopWindow::class.java,
+ DragZone.Split.Top::class.java,
+ DragZone.Split.Bottom::class.java,
+ DragZone.Bubble.Left::class.java,
+ DragZone.Bubble.Right::class.java,
+ )
+ dragZones.zip(expectedZones).forEach { (zone, expectedType) ->
+ assertThat(zone).isInstanceOf(expectedType)
+ }
+ }
+
+ @Test
+ fun dragZonesForExpandedView_tablet_landscape() {
+ dragZoneFactory = DragZoneFactory(tabletLandscape, splitScreenModeChecker, desktopWindowModeChecker)
+ val dragZones =
+ dragZoneFactory.createSortedDragZones(DraggedObject.ExpandedView(BubbleBarLocation.LEFT))
+ val expectedZones: List<Class<out DragZone>> =
+ listOf(
+ DragZone.Dismiss::class.java,
+ DragZone.FullScreen::class.java,
+ DragZone.DesktopWindow::class.java,
+ DragZone.Split.Left::class.java,
+ DragZone.Split.Right::class.java,
+ DragZone.Bubble.Left::class.java,
+ DragZone.Bubble.Right::class.java,
+ )
+ dragZones.zip(expectedZones).forEach { (zone, expectedType) ->
+ assertThat(zone).isInstanceOf(expectedType)
+ }
+ }
+
+ @Test
+ fun dragZonesForExpandedView_foldable_portrait() {
+ dragZoneFactory = DragZoneFactory(foldablePortrait, splitScreenModeChecker, desktopWindowModeChecker)
+ val dragZones =
+ dragZoneFactory.createSortedDragZones(DraggedObject.ExpandedView(BubbleBarLocation.LEFT))
+ val expectedZones: List<Class<out DragZone>> =
+ listOf(
+ DragZone.Dismiss::class.java,
+ DragZone.FullScreen::class.java,
+ DragZone.Split.Left::class.java,
+ DragZone.Split.Right::class.java,
+ DragZone.Bubble.Left::class.java,
+ DragZone.Bubble.Right::class.java,
+ )
+ dragZones.zip(expectedZones).forEach { (zone, expectedType) ->
+ assertThat(zone).isInstanceOf(expectedType)
+ }
+ }
+
+ @Test
+ fun dragZonesForExpandedView_foldable_landscape() {
+ dragZoneFactory = DragZoneFactory(foldableLandscape, splitScreenModeChecker, desktopWindowModeChecker)
+ val dragZones =
+ dragZoneFactory.createSortedDragZones(DraggedObject.ExpandedView(BubbleBarLocation.LEFT))
+ val expectedZones: List<Class<out DragZone>> =
+ listOf(
+ DragZone.Dismiss::class.java,
+ DragZone.FullScreen::class.java,
+ DragZone.Split.Top::class.java,
+ DragZone.Split.Bottom::class.java,
+ DragZone.Bubble.Left::class.java,
+ DragZone.Bubble.Right::class.java,
+ )
+ dragZones.zip(expectedZones).forEach { (zone, expectedType) ->
+ assertThat(zone).isInstanceOf(expectedType)
+ }
+ }
+
+ @Test
+ fun dragZonesForBubble_tablet_desktopModeDisabled() {
+ isDesktopWindowModeSupported = false
+ dragZoneFactory = DragZoneFactory(foldableLandscape, splitScreenModeChecker, desktopWindowModeChecker)
+ val dragZones =
+ dragZoneFactory.createSortedDragZones(DraggedObject.Bubble(BubbleBarLocation.LEFT))
+ assertThat(dragZones.filterIsInstance<DragZone.DesktopWindow>()).isEmpty()
+ }
+
+ @Test
+ fun dragZonesForExpandedView_tablet_desktopModeDisabled() {
+ isDesktopWindowModeSupported = false
+ dragZoneFactory = DragZoneFactory(foldableLandscape, splitScreenModeChecker, desktopWindowModeChecker)
+ val dragZones =
+ dragZoneFactory.createSortedDragZones(DraggedObject.ExpandedView(BubbleBarLocation.LEFT))
+ assertThat(dragZones.filterIsInstance<DragZone.DesktopWindow>()).isEmpty()
+ }
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeCompatPolicyTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeCompatPolicyTest.kt
index 8c78debdc19f..55e9de5eff5f 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeCompatPolicyTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeCompatPolicyTest.kt
@@ -16,17 +16,31 @@
package com.android.wm.shell.shared.desktopmode
+import android.app.TaskInfo
+import android.compat.testing.PlatformCompatChangeRule
import android.content.ComponentName
+import android.content.pm.ActivityInfo
+import android.content.pm.ApplicationInfo
+import android.content.pm.PackageManager
+import android.os.Process
+import android.platform.test.annotations.EnableFlags
import android.testing.AndroidTestingRunner
import androidx.test.filters.SmallTest
import com.android.internal.R
-import com.android.wm.shell.compatui.CompatUIShellTestCase
+import com.android.window.flags.Flags
+import com.android.wm.shell.ShellTestCase
import com.android.wm.shell.desktopmode.DesktopTestHelpers.createFreeformTask
+import libcore.junit.util.compat.CoreCompatChangeRule.DisableCompatChanges
+import libcore.junit.util.compat.CoreCompatChangeRule.EnableCompatChanges
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Before
+import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
+import org.mockito.kotlin.any
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.whenever
/**
* Tests for [@link DesktopModeCompatPolicy].
@@ -35,7 +49,8 @@ import org.junit.runner.RunWith
*/
@RunWith(AndroidTestingRunner::class)
@SmallTest
-class DesktopModeCompatPolicyTest : CompatUIShellTestCase() {
+class DesktopModeCompatPolicyTest : ShellTestCase() {
+ @get:Rule val compatRule = PlatformCompatChangeRule()
private lateinit var desktopModeCompatPolicy: DesktopModeCompatPolicy
@Before
@@ -110,4 +125,75 @@ class DesktopModeCompatPolicyTest : CompatUIShellTestCase() {
isTopActivityNoDisplay = true
}))
}
+
+ @Test
+ fun testIsTopActivityExemptFromDesktopWindowing_defaultHomePackage() {
+ val packageManager: PackageManager = mock()
+ val homeActivities = ComponentName("defaultHomePackage", /* class */ "")
+ whenever(packageManager.getHomeActivities(any())).thenReturn(homeActivities)
+ mContext.setMockPackageManager(packageManager)
+ assertTrue(desktopModeCompatPolicy.isTopActivityExemptFromDesktopWindowing(
+ createFreeformTask(/* displayId */ 0)
+ .apply {
+ baseActivity = homeActivities
+ isTopActivityNoDisplay = false
+ }))
+ }
+
+ @Test
+ fun testIsTopActivityExemptFromDesktopWindowing_defaultHomePackage_notDisplayed() {
+ val packageManager: PackageManager = mock()
+ val homeActivities = ComponentName("defaultHomePackage", /* class */ "")
+ whenever(packageManager.getHomeActivities(any())).thenReturn(homeActivities)
+ mContext.setMockPackageManager(packageManager)
+ assertFalse(desktopModeCompatPolicy.isTopActivityExemptFromDesktopWindowing(
+ createFreeformTask(/* displayId */ 0)
+ .apply {
+ baseActivity = homeActivities
+ isTopActivityNoDisplay = true
+ }))
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_EXCLUDE_CAPTION_FROM_APP_BOUNDS)
+ @DisableCompatChanges(ActivityInfo.INSETS_DECOUPLED_CONFIGURATION_ENFORCED)
+ fun testShouldExcludeCaptionFromAppBounds_resizeable_false() {
+ assertFalse(desktopModeCompatPolicy.shouldExcludeCaptionFromAppBounds(
+ setUpFreeformTask().apply { isResizeable = true })
+ )
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_EXCLUDE_CAPTION_FROM_APP_BOUNDS)
+ @DisableCompatChanges(ActivityInfo.INSETS_DECOUPLED_CONFIGURATION_ENFORCED)
+ fun testShouldExcludeCaptionFromAppBounds_nonResizeable_true() {
+ assertTrue(desktopModeCompatPolicy.shouldExcludeCaptionFromAppBounds(
+ setUpFreeformTask().apply { isResizeable = false })
+ )
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_EXCLUDE_CAPTION_FROM_APP_BOUNDS)
+ @EnableCompatChanges(ActivityInfo.INSETS_DECOUPLED_CONFIGURATION_ENFORCED)
+ fun testShouldExcludeCaptionFromAppBounds_nonResizeable_sdk35_false() {
+ assertFalse(desktopModeCompatPolicy.shouldExcludeCaptionFromAppBounds(
+ setUpFreeformTask().apply { isResizeable = false })
+ )
+ }
+
+ fun setUpFreeformTask(): TaskInfo =
+ createFreeformTask().apply {
+ val componentName =
+ ComponentName.createRelative(
+ mContext,
+ DesktopModeCompatPolicyTest::class.java.simpleName
+ )
+ baseActivity = componentName
+ topActivityInfo = ActivityInfo().apply {
+ applicationInfo = ApplicationInfo().apply {
+ packageName = componentName.packageName
+ uid = Process.myUid()
+ }
+ }
+ }
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatusTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatusTest.kt
index 4dac99b14aaf..33f14acd0f02 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatusTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatusTest.kt
@@ -39,6 +39,9 @@ import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever
+/**
+ * Test class for [DesktopModeStatus].
+ */
@SmallTest
@Presubmit
@EnableFlags(Flags.FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION)
@@ -56,6 +59,7 @@ class DesktopModeStatusTest : ShellTestCase() {
doReturn(false).whenever(mockResources).getBoolean(
eq(R.bool.config_isDesktopModeDevOptionSupported)
)
+ setDeviceEligibleForDesktopMode(false)
doReturn(context.contentResolver).whenever(mockContext).contentResolver
resetDesktopModeFlagsCache()
resetEnforceDeviceRestriction()
@@ -74,7 +78,7 @@ class DesktopModeStatusTest : ShellTestCase() {
Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION
)
@Test
- fun canEnterDesktopMode_DWFlagDisabled_configsOff_returnsFalse() {
+ fun canEnterDesktopMode_DWFlagDisabled_deviceNotEligible_returnsFalse() {
assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isFalse()
}
@@ -83,8 +87,8 @@ class DesktopModeStatusTest : ShellTestCase() {
Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION
)
@Test
- fun canEnterDesktopMode_DWFlagDisabled_configsOn_disableDeviceRestrictions_returnsFalse() {
- doReturn(true).whenever(mockResources).getBoolean(eq(R.bool.config_isDesktopModeSupported))
+ fun canEnterDesktopMode_DWFlagDisabled_deviceEligible_configDevOptionOn_returnsFalse() {
+ setDeviceEligibleForDesktopMode(true)
doReturn(true).whenever(mockResources).getBoolean(
eq(R.bool.config_isDesktopModeDevOptionSupported)
)
@@ -98,7 +102,7 @@ class DesktopModeStatusTest : ShellTestCase() {
Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION
)
@Test
- fun canEnterDesktopMode_DWFlagDisabled_configDevOptionOn_returnsFalse() {
+ fun canEnterDesktopMode_DWFlagDisabled_deviceNotEligible_configDevOptionOn_returnsFalse() {
doReturn(true).whenever(mockResources).getBoolean(
eq(R.bool.config_isDesktopModeDevOptionSupported)
)
@@ -111,7 +115,7 @@ class DesktopModeStatusTest : ShellTestCase() {
Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION
)
@Test
- fun canEnterDesktopMode_DWFlagDisabled_configDevOptionOn_flagOverrideOn_returnsTrue() {
+ fun canEnterDesktopMode_DWFlagDisabled_deviceNotEligible_forceUsingDevOption_returnsTrue() {
doReturn(true).whenever(mockResources).getBoolean(
eq(R.bool.config_isDesktopModeDevOptionSupported)
)
@@ -123,14 +127,7 @@ class DesktopModeStatusTest : ShellTestCase() {
@DisableFlags(Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION)
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
@Test
- fun canEnterDesktopMode_DWFlagEnabled_configsOff_returnsFalse() {
- assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isFalse()
- }
-
- @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION)
- @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
- @Test
- fun canEnterDesktopMode_DWFlagEnabled_configDesktopModeOff_returnsFalse() {
+ fun canEnterDesktopMode_DWFlagEnabled_deviceNotEligible_returnsFalse() {
doReturn(true).whenever(mockResources).getBoolean(
eq(R.bool.config_isDesktopModeDevOptionSupported)
)
@@ -141,17 +138,8 @@ class DesktopModeStatusTest : ShellTestCase() {
@DisableFlags(Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION)
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
@Test
- fun canEnterDesktopMode_DWFlagEnabled_configDesktopModeOn_returnsTrue() {
- doReturn(true).whenever(mockResources).getBoolean(eq(R.bool.config_isDesktopModeSupported))
-
- assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isTrue()
- }
-
- @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION)
- @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
- @Test
- fun canEnterDesktopMode_DWFlagEnabled_configsOff_disableDeviceRestrictions_returnsTrue() {
- disableEnforceDeviceRestriction()
+ fun canEnterDesktopMode_DWFlagEnabled_deviceEligible_returnsTrue() {
+ setDeviceEligibleForDesktopMode(true)
assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isTrue()
}
@@ -159,7 +147,7 @@ class DesktopModeStatusTest : ShellTestCase() {
@DisableFlags(Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION)
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
@Test
- fun canEnterDesktopMode_DWFlagEnabled_configDevOptionOn_flagOverrideOn_returnsTrue() {
+ fun canEnterDesktopMode_DWFlagEnabled_deviceNotEligible_forceUsingDevOption_returnsTrue() {
doReturn(true).whenever(mockResources).getBoolean(
eq(R.bool.config_isDesktopModeDevOptionSupported)
)
@@ -198,6 +186,28 @@ class DesktopModeStatusTest : ShellTestCase() {
assertThat(DesktopModeStatus.isDeviceEligibleForDesktopMode(mockContext)).isTrue()
}
+ @DisableFlags(Flags.FLAG_SHOW_DESKTOP_EXPERIENCE_DEV_OPTION)
+ @Test
+ fun canShowDesktopExperienceDevOption_flagDisabled_returnsFalse() {
+ setDeviceEligibleForDesktopMode(true)
+
+ assertThat(DesktopModeStatus.canShowDesktopExperienceDevOption(mockContext)).isFalse()
+ }
+
+ @EnableFlags(Flags.FLAG_SHOW_DESKTOP_EXPERIENCE_DEV_OPTION)
+ @Test
+ fun canShowDesktopExperienceDevOption_flagEnabled_deviceNotEligible_returnsFalse() {
+ assertThat(DesktopModeStatus.canShowDesktopExperienceDevOption(mockContext)).isFalse()
+ }
+
+ @EnableFlags(Flags.FLAG_SHOW_DESKTOP_EXPERIENCE_DEV_OPTION)
+ @Test
+ fun canShowDesktopExperienceDevOption_flagEnabled_deviceEligible_returnsTrue() {
+ setDeviceEligibleForDesktopMode(true)
+
+ assertThat(DesktopModeStatus.canShowDesktopExperienceDevOption(mockContext)).isTrue()
+ }
+
private fun resetEnforceDeviceRestriction() {
setEnforceDeviceRestriction(true)
}
@@ -232,4 +242,10 @@ class DesktopModeStatusTest : ShellTestCase() {
DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, override.setting
)
}
+
+ private fun setDeviceEligibleForDesktopMode(eligible: Boolean) {
+ val deviceRestrictions = DesktopModeStatus::class.java.getDeclaredField("ENFORCE_DEVICE_RESTRICTIONS")
+ deviceRestrictions.isAccessible = true
+ deviceRestrictions.setBoolean(/* obj= */ null, /* z= */ !eligible)
+ }
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java
index 5851cbf9b933..10c28626dc9f 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java
@@ -22,6 +22,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.view.Display.DEFAULT_DISPLAY;
+import static com.android.wm.shell.shared.split.SplitScreenConstants.SNAP_TO_2_50_50;
import static com.android.wm.shell.shared.split.SplitScreenConstants.SPLIT_INDEX_UNDEFINED;
import static com.android.wm.shell.shared.split.SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT;
import static com.android.wm.shell.shared.split.SplitScreenConstants.SPLIT_POSITION_TOP_OR_LEFT;
@@ -61,6 +62,9 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
import android.view.SurfaceControl;
import android.window.DisplayAreaInfo;
import android.window.RemoteTransition;
@@ -71,6 +75,8 @@ import androidx.test.annotation.UiThreadTest;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
+import com.android.internal.logging.InstanceId;
+import com.android.window.flags.Flags;
import com.android.wm.shell.MockToken;
import com.android.wm.shell.RootTaskDisplayAreaOrganizer;
import com.android.wm.shell.ShellTaskOrganizer;
@@ -96,6 +102,7 @@ import com.android.wm.shell.transition.HomeTransitionObserver;
import com.android.wm.shell.transition.Transitions;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
@@ -111,6 +118,9 @@ import java.util.function.Consumer;
@SmallTest
@RunWith(AndroidJUnit4.class)
public class StageCoordinatorTests extends ShellTestCase {
+ @Rule
+ public final SetFlagsRule setFlagsRule = new SetFlagsRule();
+
@Mock
private ShellTaskOrganizer mTaskOrganizer;
@Mock
@@ -141,12 +151,15 @@ public class StageCoordinatorTests extends ShellTestCase {
private final Rect mBounds1 = new Rect(10, 20, 30, 40);
private final Rect mBounds2 = new Rect(5, 10, 15, 20);
private final Rect mRootBounds = new Rect(0, 0, 45, 60);
+ private final int mTaskId = 18;
- private SurfaceControl mRootLeash;
- private SurfaceControl mDividerLeash;
private ActivityManager.RunningTaskInfo mRootTask;
private StageCoordinator mStageCoordinator;
- private Transitions mTransitions;
+ private SplitScreenTransitions mSplitScreenTransitions;
+ private SplitScreenListener mSplitScreenListener;
+ private IBinder mBinder;
+ private ActivityManager.RunningTaskInfo mRunningTaskInfo;
+ private RemoteTransition mRemoteTransition;
private final TestShellExecutor mMainExecutor = new TestShellExecutor();
private final ShellExecutor mAnimExecutor = new TestShellExecutor();
private final Handler mMainHandler = new Handler(Looper.getMainLooper());
@@ -154,19 +167,35 @@ public class StageCoordinatorTests extends ShellTestCase {
DEFAULT_DISPLAY, 0);
private final ActivityManager.RunningTaskInfo mMainChildTaskInfo =
new TestRunningTaskInfoBuilder().setVisible(true).build();
+ private final ArgumentCaptor<WindowContainerTransaction> mWctCaptor =
+ ArgumentCaptor.forClass(WindowContainerTransaction.class);
+ private final WindowContainerTransaction mWct = spy(new WindowContainerTransaction());
@Before
@UiThreadTest
public void setup() {
MockitoAnnotations.initMocks(this);
- mTransitions = createTestTransitions();
+ Transitions transitions = createTestTransitions();
+ WindowContainerToken token = mock(WindowContainerToken.class);
+ SurfaceControl dividerLeash = new SurfaceControl.Builder().setName("fakeDivider").build();
+
mStageCoordinator = spy(new StageCoordinator(mContext, DEFAULT_DISPLAY, mSyncQueue,
mTaskOrganizer, mMainStage, mSideStage, mDisplayController, mDisplayImeController,
- mDisplayInsetsController, mSplitLayout, mTransitions, mTransactionPool,
+ mDisplayInsetsController, mSplitLayout, transitions, mTransactionPool,
mMainExecutor, mMainHandler, Optional.empty(), mLaunchAdjacentController,
Optional.empty(), mSplitState, Optional.empty(), mRootTDAOrganizer));
-
- mDividerLeash = new SurfaceControl.Builder().setName("fakeDivider").build();
+ mSplitScreenTransitions = spy(mStageCoordinator.getSplitTransitions());
+ mSplitScreenListener = mock(SplitScreenListener.class);
+ mStageCoordinator.setSplitTransitions(mSplitScreenTransitions);
+ mBinder = mock(IBinder.class);
+ mRunningTaskInfo = mock(ActivityManager.RunningTaskInfo.class);
+ mRemoteTransition = mock(RemoteTransition.class);
+ mRunningTaskInfo.token = token;
+
+ when(mRemoteTransition.getDebugName()).thenReturn("");
+ when(token.asBinder()).thenReturn(mBinder);
+ when(mRunningTaskInfo.getToken()).thenReturn(token);
+ when(mTaskOrganizer.getRunningTaskInfo(mTaskId)).thenReturn(mRunningTaskInfo);
when(mRootTDAOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY)).thenReturn(mDisplayAreaInfo);
when(mSplitLayout.getTopLeftBounds()).thenReturn(mBounds1);
@@ -174,11 +203,11 @@ public class StageCoordinatorTests extends ShellTestCase {
when(mSplitLayout.getRootBounds()).thenReturn(mRootBounds);
when(mSplitLayout.isLeftRightSplit()).thenReturn(false);
when(mSplitLayout.applyTaskChanges(any(), any(), any())).thenReturn(true);
- when(mSplitLayout.getDividerLeash()).thenReturn(mDividerLeash);
+ when(mSplitLayout.getDividerLeash()).thenReturn(dividerLeash);
mRootTask = new TestRunningTaskInfoBuilder().build();
- mRootLeash = new SurfaceControl.Builder().setName("test").build();
- mStageCoordinator.onTaskAppeared(mRootTask, mRootLeash);
+ SurfaceControl rootLeash = new SurfaceControl.Builder().setName("test").build();
+ mStageCoordinator.onTaskAppeared(mRootTask, rootLeash);
mSideStage.mRootTaskInfo = new TestRunningTaskInfoBuilder().build();
mMainStage.mRootTaskInfo = new TestRunningTaskInfoBuilder().build();
@@ -196,14 +225,12 @@ public class StageCoordinatorTests extends ShellTestCase {
public void testMoveToStage_splitActiveBackground() {
when(mStageCoordinator.isSplitActive()).thenReturn(true);
- final ActivityManager.RunningTaskInfo task = new TestRunningTaskInfoBuilder().build();
- final WindowContainerTransaction wct = spy(new WindowContainerTransaction());
+ mStageCoordinator.moveToStage(mRootTask, SPLIT_POSITION_BOTTOM_OR_RIGHT, mWct);
- mStageCoordinator.moveToStage(task, SPLIT_POSITION_BOTTOM_OR_RIGHT, wct);
// TODO(b/349828130) Address this once we remove index_undefined called
- verify(mStageCoordinator).prepareEnterSplitScreen(eq(wct), eq(task),
+ verify(mStageCoordinator).prepareEnterSplitScreen(eq(mWct), eq(mRootTask),
eq(SPLIT_POSITION_BOTTOM_OR_RIGHT), eq(false), eq(SPLIT_INDEX_UNDEFINED));
- verify(mMainStage).reparentTopTask(eq(wct));
+ verify(mMainStage).reparentTopTask(eq(mWct));
assertEquals(SPLIT_POSITION_BOTTOM_OR_RIGHT, mStageCoordinator.getSideStagePosition());
assertEquals(SPLIT_POSITION_TOP_OR_LEFT, mStageCoordinator.getMainStagePosition());
}
@@ -215,25 +242,21 @@ public class StageCoordinatorTests extends ShellTestCase {
// Assume current side stage is top or left.
mStageCoordinator.setSideStagePosition(SPLIT_POSITION_TOP_OR_LEFT, null);
- final ActivityManager.RunningTaskInfo task = new TestRunningTaskInfoBuilder().build();
- final WindowContainerTransaction wct = new WindowContainerTransaction();
+ mStageCoordinator.moveToStage(mRootTask, SPLIT_POSITION_BOTTOM_OR_RIGHT, mWct);
- mStageCoordinator.moveToStage(task, SPLIT_POSITION_BOTTOM_OR_RIGHT, wct);
// TODO(b/349828130) Address this once we remove index_undefined called
- verify(mStageCoordinator).prepareEnterSplitScreen(eq(wct), eq(task),
+ verify(mStageCoordinator).prepareEnterSplitScreen(eq(mWct), eq(mRootTask),
eq(SPLIT_POSITION_BOTTOM_OR_RIGHT), eq(false), eq(SPLIT_INDEX_UNDEFINED));
assertEquals(SPLIT_POSITION_BOTTOM_OR_RIGHT, mStageCoordinator.getMainStagePosition());
assertEquals(SPLIT_POSITION_TOP_OR_LEFT, mStageCoordinator.getSideStagePosition());
}
@Test
- public void testMoveToStage_splitInctive() {
- final ActivityManager.RunningTaskInfo task = new TestRunningTaskInfoBuilder().build();
- final WindowContainerTransaction wct = new WindowContainerTransaction();
+ public void testMoveToStage_splitInactive() {
+ mStageCoordinator.moveToStage(mRootTask, SPLIT_POSITION_BOTTOM_OR_RIGHT, mWct);
- mStageCoordinator.moveToStage(task, SPLIT_POSITION_BOTTOM_OR_RIGHT, wct);
// TODO(b/349828130) Address this once we remove index_undefined called
- verify(mStageCoordinator).prepareEnterSplitScreen(eq(wct), eq(task),
+ verify(mStageCoordinator).prepareEnterSplitScreen(eq(mWct), eq(mRootTask),
eq(SPLIT_POSITION_BOTTOM_OR_RIGHT), eq(false), eq(SPLIT_INDEX_UNDEFINED));
assertEquals(SPLIT_POSITION_BOTTOM_OR_RIGHT, mStageCoordinator.getSideStagePosition());
}
@@ -248,25 +271,23 @@ public class StageCoordinatorTests extends ShellTestCase {
@Test
public void testLayoutChanged_topLeftSplitPosition_updatesUnfoldStageBounds() {
mStageCoordinator.setSideStagePosition(SPLIT_POSITION_TOP_OR_LEFT, null);
- final SplitScreenListener listener = mock(SplitScreenListener.class);
- mStageCoordinator.registerSplitScreenListener(listener);
- clearInvocations(listener);
+ mStageCoordinator.registerSplitScreenListener(mSplitScreenListener);
+ clearInvocations(mSplitScreenListener);
mStageCoordinator.onLayoutSizeChanged(mSplitLayout);
- verify(listener).onSplitBoundsChanged(mRootBounds, mBounds2, mBounds1);
+ verify(mSplitScreenListener).onSplitBoundsChanged(mRootBounds, mBounds2, mBounds1);
}
@Test
public void testLayoutChanged_bottomRightSplitPosition_updatesUnfoldStageBounds() {
mStageCoordinator.setSideStagePosition(SPLIT_POSITION_BOTTOM_OR_RIGHT, null);
- final SplitScreenListener listener = mock(SplitScreenListener.class);
- mStageCoordinator.registerSplitScreenListener(listener);
- clearInvocations(listener);
+ mStageCoordinator.registerSplitScreenListener(mSplitScreenListener);
+ clearInvocations(mSplitScreenListener);
mStageCoordinator.onLayoutSizeChanged(mSplitLayout);
- verify(listener).onSplitBoundsChanged(mRootBounds, mBounds1, mBounds2);
+ verify(mSplitScreenListener).onSplitBoundsChanged(mRootBounds, mBounds1, mBounds2);
}
@Test
@@ -367,13 +388,8 @@ public class StageCoordinatorTests extends ShellTestCase {
@Test
public void testSplitIntentAndTaskWithPippedApp_launchFullscreen() {
int taskId = 9;
- SplitScreenTransitions splitScreenTransitions =
- spy(mStageCoordinator.getSplitTransitions());
- mStageCoordinator.setSplitTransitions(splitScreenTransitions);
mStageCoordinator.setMixedHandler(mDefaultMixedHandler);
PendingIntent pendingIntent = mock(PendingIntent.class);
- RemoteTransition remoteTransition = mock(RemoteTransition.class);
- when(remoteTransition.getDebugName()).thenReturn("");
// Test launching second task full screen
when(mDefaultMixedHandler.isIntentInPip(pendingIntent)).thenReturn(true);
mStageCoordinator.startIntentAndTask(
@@ -384,9 +400,9 @@ public class StageCoordinatorTests extends ShellTestCase {
null /*option2*/,
0 /*splitPosition*/,
1 /*snapPosition*/,
- remoteTransition /*remoteTransition*/,
+ mRemoteTransition /*remoteTransition*/,
null /*instanceId*/);
- verify(splitScreenTransitions, times(1))
+ verify(mSplitScreenTransitions, times(1))
.startFullscreenTransition(any(), any());
// Test launching first intent fullscreen
@@ -400,22 +416,17 @@ public class StageCoordinatorTests extends ShellTestCase {
null /*option2*/,
0 /*splitPosition*/,
1 /*snapPosition*/,
- remoteTransition /*remoteTransition*/,
+ mRemoteTransition /*remoteTransition*/,
null /*instanceId*/);
- verify(splitScreenTransitions, times(2))
+ verify(mSplitScreenTransitions, times(2))
.startFullscreenTransition(any(), any());
}
@Test
public void testSplitIntentsWithPippedApp_launchFullscreen() {
- SplitScreenTransitions splitScreenTransitions =
- spy(mStageCoordinator.getSplitTransitions());
- mStageCoordinator.setSplitTransitions(splitScreenTransitions);
mStageCoordinator.setMixedHandler(mDefaultMixedHandler);
PendingIntent pendingIntent = mock(PendingIntent.class);
PendingIntent pendingIntent2 = mock(PendingIntent.class);
- RemoteTransition remoteTransition = mock(RemoteTransition.class);
- when(remoteTransition.getDebugName()).thenReturn("");
// Test launching second task full screen
when(mDefaultMixedHandler.isIntentInPip(pendingIntent)).thenReturn(true);
mStageCoordinator.startIntents(
@@ -429,9 +440,9 @@ public class StageCoordinatorTests extends ShellTestCase {
new Bundle(),
0 /*splitPosition*/,
1 /*snapPosition*/,
- remoteTransition /*remoteTransition*/,
+ mRemoteTransition /*remoteTransition*/,
null /*instanceId*/);
- verify(splitScreenTransitions, times(1))
+ verify(mSplitScreenTransitions, times(1))
.startFullscreenTransition(any(), any());
// Test launching first intent fullscreen
@@ -448,35 +459,54 @@ public class StageCoordinatorTests extends ShellTestCase {
new Bundle(),
0 /*splitPosition*/,
1 /*snapPosition*/,
- remoteTransition /*remoteTransition*/,
+ mRemoteTransition /*remoteTransition*/,
null /*instanceId*/);
- verify(splitScreenTransitions, times(2))
+ verify(mSplitScreenTransitions, times(2))
.startFullscreenTransition(any(), any());
}
-
@Test
public void startTask_ensureWindowingModeCleared() {
- SplitScreenTransitions splitScreenTransitions =
- spy(mStageCoordinator.getSplitTransitions());
- mStageCoordinator.setSplitTransitions(splitScreenTransitions);
- ArgumentCaptor<WindowContainerTransaction> wctCaptor =
- ArgumentCaptor.forClass(WindowContainerTransaction.class);
- int taskId = 18;
- IBinder binder = mock(IBinder.class);
- ActivityManager.RunningTaskInfo rti = mock(ActivityManager.RunningTaskInfo.class);
- WindowContainerToken mockToken = mock(WindowContainerToken.class);
- when(mockToken.asBinder()).thenReturn(binder);
- when(rti.getToken()).thenReturn(mockToken);
- when(mTaskOrganizer.getRunningTaskInfo(taskId)).thenReturn(rti);
- mStageCoordinator.startTask(taskId, SPLIT_POSITION_TOP_OR_LEFT, null /*options*/,
+ mStageCoordinator.startTask(mTaskId, SPLIT_POSITION_TOP_OR_LEFT, null /*options*/,
null, SPLIT_INDEX_UNDEFINED);
- verify(splitScreenTransitions).startEnterTransition(anyInt(),
- wctCaptor.capture(), any(), any(), anyInt(), anyBoolean());
+ verify(mSplitScreenTransitions).startEnterTransition(anyInt(),
+ mWctCaptor.capture(), any(), any(), anyInt(), anyBoolean());
+
+ int windowingMode = mWctCaptor.getValue().getChanges().get(mBinder).getWindowingMode();
+ assertEquals(windowingMode, WINDOWING_MODE_UNDEFINED);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_FULL_SCREEN_WINDOW_ON_REMOVING_SPLIT_SCREEN_STAGE_BUGFIX)
+ public void startTasksOnSingleFreeformWindow_ensureWindowingModeClearedAndLaunchFullScreen() {
+ mDisplayAreaInfo.configuration.windowConfiguration.setWindowingMode(
+ WINDOWING_MODE_FREEFORM);
+ when(mRunningTaskInfo.getWindowingMode()).thenReturn(WINDOWING_MODE_FREEFORM);
+
+ mStageCoordinator.startTasks(mTaskId, null, INVALID_TASK_ID, null,
+ SPLIT_POSITION_TOP_OR_LEFT, SNAP_TO_2_50_50, mRemoteTransition,
+ InstanceId.fakeInstanceId(0));
- int windowingMode = wctCaptor.getValue().getChanges().get(binder).getWindowingMode();
+ verify(mSplitScreenTransitions).startFullscreenTransition(mWctCaptor.capture(), any());
+ int windowingMode = mWctCaptor.getValue().getChanges().get(mBinder).getWindowingMode();
assertEquals(windowingMode, WINDOWING_MODE_UNDEFINED);
}
+
+ @Test
+ @DisableFlags(Flags.FLAG_ENABLE_FULL_SCREEN_WINDOW_ON_REMOVING_SPLIT_SCREEN_STAGE_BUGFIX)
+ public void startTasksOnSingleFreeformWindow_flagDisabled_noChangeToWindowingModeInWct() {
+ mDisplayAreaInfo.configuration.windowConfiguration.setWindowingMode(
+ WINDOWING_MODE_FREEFORM);
+ when(mRunningTaskInfo.getWindowingMode()).thenReturn(WINDOWING_MODE_FREEFORM);
+
+ mStageCoordinator.startTasks(mTaskId, null, INVALID_TASK_ID, null,
+ SPLIT_POSITION_TOP_OR_LEFT, SNAP_TO_2_50_50, mRemoteTransition,
+ InstanceId.fakeInstanceId(0));
+
+ verify(mSplitScreenTransitions).startFullscreenTransition(mWctCaptor.capture(), any());
+ assertThat(mWctCaptor.getValue().getChanges()).isEmpty();
+ }
+
@Test
public void testDismiss_freeformDisplay() {
mDisplayAreaInfo.configuration.windowConfiguration.setWindowingMode(
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/DefaultTransitionHandlerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/DefaultTransitionHandlerTest.java
index e540322a96a1..82392e0e3bc0 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/DefaultTransitionHandlerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/DefaultTransitionHandlerTest.java
@@ -292,6 +292,7 @@ public class DefaultTransitionHandlerTest extends ShellTestCase {
new Binder(),
new TransitionInfoBuilder(TRANSIT_SLEEP, FLAG_SYNC).build(),
MockTransactionPool.create(),
+ MockTransactionPool.create(),
token,
mock(Transitions.TransitionFinishCallback.class));
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java
index efbc5332363b..6f73db0bacc3 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java
@@ -1759,7 +1759,9 @@ public class ShellTransitionTests extends ShellTestCase {
@Override
public void mergeAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
- @NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget,
+ @NonNull SurfaceControl.Transaction startT,
+ @NonNull SurfaceControl.Transaction finishT,
+ @NonNull IBinder mergeTarget,
@NonNull Transitions.TransitionFinishCallback finishCallback) {
if (mFinishOnSync && info.getType() == TRANSIT_SLEEP) {
for (int i = 0; i < mFinishes.size(); ++i) {
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/unfold/UnfoldTransitionHandlerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/unfold/UnfoldTransitionHandlerTest.java
index 5ba2f189ae17..aad18cba4436 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/unfold/UnfoldTransitionHandlerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/unfold/UnfoldTransitionHandlerTest.java
@@ -170,7 +170,8 @@ public class UnfoldTransitionHandlerTest extends ShellTestCase {
// Send fold transition request
TransitionFinishCallback mergeFinishCallback = mock(TransitionFinishCallback.class);
mUnfoldTransitionHandler.mergeAnimation(new Binder(), createFoldTransitionInfo(),
- mock(SurfaceControl.Transaction.class), mTransition, mergeFinishCallback);
+ mock(SurfaceControl.Transaction.class), mock(SurfaceControl.Transaction.class),
+ mTransition, mergeFinishCallback);
mTestLooper.dispatchAll();
// Verify that fold transition is merged into unfold and that unfold is finished
@@ -388,6 +389,7 @@ public class UnfoldTransitionHandlerTest extends ShellTestCase {
new Binder(),
new TransitionInfoBuilder(TRANSIT_CHANGE, TRANSIT_FLAG_KEYGUARD_GOING_AWAY).build(),
mock(SurfaceControl.Transaction.class),
+ mock(SurfaceControl.Transaction.class),
mTransition,
mergeCallback);
verify(finishCallback, never()).onTransitionFinished(any());
@@ -397,6 +399,7 @@ public class UnfoldTransitionHandlerTest extends ShellTestCase {
new Binder(),
new TransitionInfoBuilder(TRANSIT_CHANGE).build(),
mock(SurfaceControl.Transaction.class),
+ mock(SurfaceControl.Transaction.class),
mTransition,
mergeCallback);
verify(mergeCallback).onTransitionFinished(any());
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelAppHandleOnlyTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelAppHandleOnlyTest.kt
index 8b4cf6d1fabe..53ae967e7bbf 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelAppHandleOnlyTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelAppHandleOnlyTest.kt
@@ -25,6 +25,7 @@ import android.content.pm.ActivityInfo
import android.platform.test.annotations.EnableFlags
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper.RunWithLooper
+import android.view.Display
import android.view.Display.DEFAULT_DISPLAY
import android.view.SurfaceControl
import androidx.test.filters.SmallTest
@@ -38,10 +39,13 @@ import junit.framework.Assert.assertTrue
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
+import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mockito.times
import org.mockito.kotlin.any
import org.mockito.kotlin.argumentCaptor
+import org.mockito.kotlin.mock
import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
import org.mockito.quality.Strictness
/**
@@ -59,6 +63,8 @@ import org.mockito.quality.Strictness
class DesktopModeWindowDecorViewModelAppHandleOnlyTest :
DesktopModeWindowDecorViewModelTestsBase() {
+ protected val mockDisplay = mock<Display>()
+
@Before
fun setUp() {
mockitoSession =
@@ -67,9 +73,10 @@ class DesktopModeWindowDecorViewModelAppHandleOnlyTest :
.spyStatic(DesktopModeStatus::class.java)
.spyStatic(DragPositioningCallbackUtility::class.java)
.startMocking()
- doReturn(false).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+ doReturn(false).`when` { DesktopModeStatus.isDeviceEligibleForDesktopMode(any()) }
doReturn(true).`when` { DesktopModeStatus.overridesShowAppHandle(any())}
setUpCommon()
+ whenever(mockDisplayController.getDisplay(anyInt())).thenReturn(mockDisplay)
}
@Test
@@ -156,7 +163,7 @@ class DesktopModeWindowDecorViewModelAppHandleOnlyTest :
assertTrue(windowDecorByTaskIdSpy.contains(task.taskId))
- task.setOnLargeScreen(false)
+ setLargeScreen(false)
setUpMockDecorationForTask(task)
onTaskChanging(task, taskSurface)
assertFalse(windowDecorByTaskIdSpy.contains(task.taskId))
@@ -172,11 +179,12 @@ class DesktopModeWindowDecorViewModelAppHandleOnlyTest :
): RunningTaskInfo {
val task = createTask(
displayId, windowingMode, activityType, activityInfo, requestingImmersive)
- task.setOnLargeScreen(shouldShowAspectRatioButton)
+ setLargeScreen(shouldShowAspectRatioButton)
return task
}
- private fun RunningTaskInfo.setOnLargeScreen(large: Boolean) {
- configuration.smallestScreenWidthDp = if (large) 1000 else 100
+ private fun setLargeScreen(large: Boolean) {
+ val size: Float = if (large) 1000f else 100f
+ whenever(mockDisplay.getMinSizeDimensionDp()).thenReturn(size)
}
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt
index baccbee0893d..f15418adf1e3 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt
@@ -28,6 +28,7 @@ import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.content.Intent.ACTION_MAIN
+import android.content.pm.PackageManager
import android.graphics.Rect
import android.graphics.Region
import android.hardware.display.DisplayManager
@@ -96,7 +97,6 @@ import org.mockito.kotlin.whenever
import org.mockito.quality.Strictness
import java.util.function.Consumer
-
/**
* Tests of [DesktopModeWindowDecorViewModel]
* Usage: atest WMShellUnitTests:DesktopModeWindowDecorViewModelTests
@@ -116,7 +116,7 @@ class DesktopModeWindowDecorViewModelTests : DesktopModeWindowDecorViewModelTest
.spyStatic(DragPositioningCallbackUtility::class.java)
.startMocking()
- doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(Mockito.any()) }
+ doReturn(true).`when` { DesktopModeStatus.isDeviceEligibleForDesktopMode(Mockito.any()) }
doReturn(false).`when` { DesktopModeStatus.overridesShowAppHandle(Mockito.any()) }
setUpCommon()
@@ -307,6 +307,23 @@ class DesktopModeWindowDecorViewModelTests : DesktopModeWindowDecorViewModelTest
}
@Test
+ @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
+ fun testDecorationIsNotCreatedForDefaultHomePackage() {
+ val packageManager: PackageManager = org.mockito.kotlin.mock()
+ val homeActivities = ComponentName("defaultHomePackage", /* class */ "")
+ val task = createTask(windowingMode = WINDOWING_MODE_FULLSCREEN).apply {
+ baseActivity = homeActivities
+ isTopActivityNoDisplay = false
+ }
+ mContext.setMockPackageManager(packageManager)
+ whenever(packageManager.getHomeActivities(any())).thenReturn(homeActivities)
+
+ onTaskOpening(task)
+
+ assertFalse(windowDecorByTaskIdSpy.contains(task.taskId))
+ }
+
+ @Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_IMMERSIVE_HANDLE_HIDING)
fun testInsetsStateChanged_notifiesAllDecorsInDisplay() {
val task1 = createTask(windowingMode = WINDOWING_MODE_FREEFORM, displayId = 1)
@@ -362,37 +379,21 @@ class DesktopModeWindowDecorViewModelTests : DesktopModeWindowDecorViewModelTest
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
- fun testWindowDecor_desktopModeUnsupportedOnDevice_deviceRestrictionsOverridden_decorCreated() {
- // Simulate enforce device restrictions system property overridden to false
- whenever(DesktopModeStatus.enforceDeviceRestrictions()).thenReturn(false)
- // Simulate device that doesn't support desktop mode
- doReturn(false).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
-
- val task = createTask(windowingMode = WINDOWING_MODE_FULLSCREEN)
- setUpMockDecorationsForTasks(task)
-
- onTaskOpening(task)
- assertTrue(windowDecorByTaskIdSpy.contains(task.taskId))
- }
-
- @Test
- @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
- fun testWindowDecor_deviceSupportsDesktopMode_decorCreated() {
+ fun testWindowDecor_deviceEligibleForDesktopMode_decorCreated() {
// Simulate default enforce device restrictions system property
whenever(DesktopModeStatus.enforceDeviceRestrictions()).thenReturn(true)
val task = createTask(windowingMode = WINDOWING_MODE_FULLSCREEN)
- doReturn(true).`when` { DesktopModeStatus.isDesktopModeSupported(any()) }
+ doReturn(true).`when` { DesktopModeStatus.isDeviceEligibleForDesktopMode(any()) }
setUpMockDecorationsForTasks(task)
onTaskOpening(task)
- assertTrue(windowDecorByTaskIdSpy.contains(task.taskId))
+ assertTrue(task.taskId in windowDecorByTaskIdSpy)
}
@Test
fun testOnDecorMaximizedOrRestored_togglesTaskSize_maximize() {
- val maxOrRestoreListenerCaptor = forClass(Function0::class.java)
- as ArgumentCaptor<Function0<Unit>>
+ val maxOrRestoreListenerCaptor = forClass(Function0::class.java as Class<Function0<Unit>>)
val decor = createOpenTaskDecoration(
windowingMode = WINDOWING_MODE_FREEFORM,
onMaxOrRestoreListenerCaptor = maxOrRestoreListenerCaptor
@@ -638,7 +639,7 @@ class DesktopModeWindowDecorViewModelTests : DesktopModeWindowDecorViewModelTest
toDesktopListenerCaptor.value.accept(DesktopModeTransitionSource.APP_HANDLE_MENU_BUTTON)
- verify(mockDesktopTasksController).moveTaskToDesktop(
+ verify(mockDesktopTasksController).moveTaskToDefaultDeskAndActivate(
eq(decor.mTaskInfo.taskId),
any(),
eq(DesktopModeTransitionSource.APP_HANDLE_MENU_BUTTON),
@@ -876,7 +877,7 @@ class DesktopModeWindowDecorViewModelTests : DesktopModeWindowDecorViewModelTest
)
verify(mockDesktopTasksController, times(1))
- .moveTaskToDesktop(any(), any(), any(), anyOrNull(), anyOrNull())
+ .moveTaskToDefaultDeskAndActivate(any(), any(), any(), anyOrNull(), anyOrNull())
}
@Test
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTestsBase.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTestsBase.kt
index 541b19cf00c9..9f106da9f4b9 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTestsBase.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTestsBase.kt
@@ -150,7 +150,6 @@ open class DesktopModeWindowDecorViewModelTestsBase : ShellTestCase() {
val display = mock<Display>()
protected lateinit var spyContext: TestableContext
private lateinit var desktopModeEventLogger: DesktopModeEventLogger
- private lateinit var desktopModeCompatPolicy: DesktopModeCompatPolicy
private val transactionFactory = Supplier<SurfaceControl.Transaction> {
SurfaceControl.Transaction()
@@ -165,6 +164,7 @@ open class DesktopModeWindowDecorViewModelTestsBase : ShellTestCase() {
DisplayChangeController.OnDisplayChangingListener
internal lateinit var desktopModeOnKeyguardChangedListener: DesktopModeKeyguardChangeListener
protected lateinit var desktopModeWindowDecorViewModel: DesktopModeWindowDecorViewModel
+ protected lateinit var desktopModeCompatPolicy: DesktopModeCompatPolicy
fun setUpCommon() {
spyContext = spy(mContext)
@@ -310,7 +310,7 @@ open class DesktopModeWindowDecorViewModelTestsBase : ShellTestCase() {
mockDesktopModeWindowDecorFactory.create(
any(), any(), any(), any(), any(), any(), any(), eq(task), any(), any(), any(),
any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(),
- any(), any())
+ any(), any(), any())
).thenReturn(decoration)
decoration.mTaskInfo = task
whenever(decoration.user).thenReturn(mockUserHandle)
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorationTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorationTests.java
index 18a780bbb07c..71c821dd9b71 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorationTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorationTests.java
@@ -108,6 +108,7 @@ import com.android.wm.shell.desktopmode.DesktopModeEventLogger;
import com.android.wm.shell.desktopmode.DesktopRepository;
import com.android.wm.shell.desktopmode.DesktopUserRepositories;
import com.android.wm.shell.desktopmode.WindowDecorCaptionHandleRepository;
+import com.android.wm.shell.shared.desktopmode.DesktopModeCompatPolicy;
import com.android.wm.shell.shared.desktopmode.DesktopModeStatus;
import com.android.wm.shell.splitscreen.SplitScreenController;
import com.android.wm.shell.windowdecor.WindowDecoration.RelayoutParams;
@@ -167,6 +168,7 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase {
private static final boolean DEFAULT_IS_IN_FULL_IMMERSIVE_MODE = false;
private static final boolean DEFAULT_HAS_GLOBAL_FOCUS = true;
private static final boolean DEFAULT_SHOULD_IGNORE_CORNER_RADIUS = false;
+ private static final boolean DEFAULT_SHOULD_EXCLUDE_CAPTION_FROM_APP_BOUNDS = false;
@Mock
private DisplayController mMockDisplayController;
@@ -236,6 +238,8 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase {
private DesktopRepository mDesktopRepository;
@Mock
private WindowDecorTaskResourceLoader mMockTaskResourceLoader;
+ @Mock
+ private DesktopModeCompatPolicy mDesktopModeCompatPolicy;
@Captor
private ArgumentCaptor<Function1<Boolean, Unit>> mOnMaxMenuHoverChangeListener;
@Captor
@@ -413,7 +417,8 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase {
new InsetsState(),
DEFAULT_HAS_GLOBAL_FOCUS,
mExclusionRegion,
- /* shouldIgnoreCornerRadius= */ true);
+ /* shouldIgnoreCornerRadius= */ true,
+ DEFAULT_SHOULD_EXCLUDE_CAPTION_FROM_APP_BOUNDS);
assertThat(relayoutParams.mCornerRadius).isEqualTo(INVALID_CORNER_RADIUS);
}
@@ -592,6 +597,73 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase {
}
@Test
+ @EnableFlags({Flags.FLAG_ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION,
+ Flags.FLAG_ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION_ALWAYS})
+ public void updateRelayoutParams_excludeCaptionTrue_forceConsumptionFalse() {
+ final ActivityManager.RunningTaskInfo taskInfo = createTaskInfo(/* visible= */ true);
+ taskInfo.configuration.windowConfiguration.setWindowingMode(WINDOWING_MODE_FREEFORM);
+ taskInfo.taskDescription.setTopOpaqueSystemBarsAppearance(0);
+ final RelayoutParams relayoutParams = new RelayoutParams();
+
+ DesktopModeWindowDecoration.updateRelayoutParams(
+ relayoutParams,
+ mTestableContext,
+ taskInfo,
+ mMockSplitScreenController,
+ DEFAULT_APPLY_START_TRANSACTION_ON_DRAW,
+ DEFAULT_SHOULD_SET_TASK_POSITIONING_AND_CROP,
+ DEFAULT_IS_STATUSBAR_VISIBLE,
+ DEFAULT_IS_KEYGUARD_VISIBLE_AND_OCCLUDED,
+ DEFAULT_IS_IN_FULL_IMMERSIVE_MODE,
+ new InsetsState(),
+ DEFAULT_HAS_GLOBAL_FOCUS,
+ mExclusionRegion,
+ DEFAULT_SHOULD_IGNORE_CORNER_RADIUS,
+ /* shouldExcludeCaptionFromAppBounds */ true);
+
+ // Force consuming flags are disabled.
+ assertThat((relayoutParams.mInsetSourceFlags & FLAG_FORCE_CONSUMING) == 0).isTrue();
+ assertThat(
+ (relayoutParams.mInsetSourceFlags & FLAG_FORCE_CONSUMING_OPAQUE_CAPTION_BAR) == 0)
+ .isTrue();
+ // Exclude caption from app bounds is true.
+ assertThat(relayoutParams.mShouldSetAppBounds).isTrue();
+ }
+
+ @Test
+ @EnableFlags({Flags.FLAG_ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION,
+ Flags.FLAG_ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION_ALWAYS})
+ public void updateRelayoutParams_excludeCaptionFalse_forceConsumptionTrue() {
+ final ActivityManager.RunningTaskInfo taskInfo = createTaskInfo(/* visible= */ true);
+ taskInfo.configuration.windowConfiguration.setWindowingMode(WINDOWING_MODE_FREEFORM);
+ taskInfo.taskDescription.setTopOpaqueSystemBarsAppearance(0);
+ final RelayoutParams relayoutParams = new RelayoutParams();
+
+ DesktopModeWindowDecoration.updateRelayoutParams(
+ relayoutParams,
+ mTestableContext,
+ taskInfo,
+ mMockSplitScreenController,
+ DEFAULT_APPLY_START_TRANSACTION_ON_DRAW,
+ DEFAULT_SHOULD_SET_TASK_POSITIONING_AND_CROP,
+ DEFAULT_IS_STATUSBAR_VISIBLE,
+ DEFAULT_IS_KEYGUARD_VISIBLE_AND_OCCLUDED,
+ DEFAULT_IS_IN_FULL_IMMERSIVE_MODE,
+ new InsetsState(),
+ DEFAULT_HAS_GLOBAL_FOCUS,
+ mExclusionRegion,
+ DEFAULT_SHOULD_IGNORE_CORNER_RADIUS,
+ DEFAULT_SHOULD_EXCLUDE_CAPTION_FROM_APP_BOUNDS);
+
+ assertThat((relayoutParams.mInsetSourceFlags & FLAG_FORCE_CONSUMING) != 0).isTrue();
+ assertThat(
+ (relayoutParams.mInsetSourceFlags & FLAG_FORCE_CONSUMING_OPAQUE_CAPTION_BAR) != 0)
+ .isTrue();
+ // Exclude caption from app bounds is false.
+ assertThat(relayoutParams.mShouldSetAppBounds).isFalse();
+ }
+
+ @Test
@EnableFlags(Flags.FLAG_ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION_ALWAYS)
public void updateRelayoutParams_header_addsForceConsumingCaptionBar() {
final ActivityManager.RunningTaskInfo taskInfo = createTaskInfo(/* visible= */ true);
@@ -658,7 +730,8 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase {
insetsState,
DEFAULT_HAS_GLOBAL_FOCUS,
mExclusionRegion,
- DEFAULT_SHOULD_IGNORE_CORNER_RADIUS);
+ DEFAULT_SHOULD_IGNORE_CORNER_RADIUS,
+ DEFAULT_SHOULD_EXCLUDE_CAPTION_FROM_APP_BOUNDS);
// Takes status bar inset as padding, ignores caption bar inset.
assertThat(relayoutParams.mCaptionTopPadding).isEqualTo(50);
@@ -684,7 +757,8 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase {
new InsetsState(),
DEFAULT_HAS_GLOBAL_FOCUS,
mExclusionRegion,
- DEFAULT_SHOULD_IGNORE_CORNER_RADIUS);
+ DEFAULT_SHOULD_IGNORE_CORNER_RADIUS,
+ DEFAULT_SHOULD_EXCLUDE_CAPTION_FROM_APP_BOUNDS);
assertThat(relayoutParams.mIsInsetSource).isFalse();
}
@@ -709,7 +783,8 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase {
new InsetsState(),
DEFAULT_HAS_GLOBAL_FOCUS,
mExclusionRegion,
- DEFAULT_SHOULD_IGNORE_CORNER_RADIUS);
+ DEFAULT_SHOULD_IGNORE_CORNER_RADIUS,
+ DEFAULT_SHOULD_EXCLUDE_CAPTION_FROM_APP_BOUNDS);
// Header is always shown because it's assumed the status bar is always visible.
assertThat(relayoutParams.mIsCaptionVisible).isTrue();
@@ -734,7 +809,8 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase {
new InsetsState(),
DEFAULT_HAS_GLOBAL_FOCUS,
mExclusionRegion,
- DEFAULT_SHOULD_IGNORE_CORNER_RADIUS);
+ DEFAULT_SHOULD_IGNORE_CORNER_RADIUS,
+ DEFAULT_SHOULD_EXCLUDE_CAPTION_FROM_APP_BOUNDS);
assertThat(relayoutParams.mIsCaptionVisible).isTrue();
}
@@ -758,7 +834,8 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase {
new InsetsState(),
DEFAULT_HAS_GLOBAL_FOCUS,
mExclusionRegion,
- DEFAULT_SHOULD_IGNORE_CORNER_RADIUS);
+ DEFAULT_SHOULD_IGNORE_CORNER_RADIUS,
+ DEFAULT_SHOULD_EXCLUDE_CAPTION_FROM_APP_BOUNDS);
assertThat(relayoutParams.mIsCaptionVisible).isFalse();
}
@@ -782,7 +859,8 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase {
new InsetsState(),
DEFAULT_HAS_GLOBAL_FOCUS,
mExclusionRegion,
- DEFAULT_SHOULD_IGNORE_CORNER_RADIUS);
+ DEFAULT_SHOULD_IGNORE_CORNER_RADIUS,
+ DEFAULT_SHOULD_EXCLUDE_CAPTION_FROM_APP_BOUNDS);
assertThat(relayoutParams.mIsCaptionVisible).isFalse();
}
@@ -807,7 +885,8 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase {
new InsetsState(),
DEFAULT_HAS_GLOBAL_FOCUS,
mExclusionRegion,
- DEFAULT_SHOULD_IGNORE_CORNER_RADIUS);
+ DEFAULT_SHOULD_IGNORE_CORNER_RADIUS,
+ DEFAULT_SHOULD_EXCLUDE_CAPTION_FROM_APP_BOUNDS);
assertThat(relayoutParams.mIsCaptionVisible).isTrue();
@@ -824,7 +903,8 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase {
new InsetsState(),
DEFAULT_HAS_GLOBAL_FOCUS,
mExclusionRegion,
- DEFAULT_SHOULD_IGNORE_CORNER_RADIUS);
+ DEFAULT_SHOULD_IGNORE_CORNER_RADIUS,
+ DEFAULT_SHOULD_EXCLUDE_CAPTION_FROM_APP_BOUNDS);
assertThat(relayoutParams.mIsCaptionVisible).isFalse();
}
@@ -849,7 +929,8 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase {
new InsetsState(),
DEFAULT_HAS_GLOBAL_FOCUS,
mExclusionRegion,
- DEFAULT_SHOULD_IGNORE_CORNER_RADIUS);
+ DEFAULT_SHOULD_IGNORE_CORNER_RADIUS,
+ DEFAULT_SHOULD_EXCLUDE_CAPTION_FROM_APP_BOUNDS);
assertThat(relayoutParams.mIsCaptionVisible).isFalse();
}
@@ -1513,7 +1594,8 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase {
new InsetsState(),
DEFAULT_HAS_GLOBAL_FOCUS,
mExclusionRegion,
- DEFAULT_SHOULD_IGNORE_CORNER_RADIUS);
+ DEFAULT_SHOULD_IGNORE_CORNER_RADIUS,
+ DEFAULT_SHOULD_EXCLUDE_CAPTION_FROM_APP_BOUNDS);
}
private DesktopModeWindowDecoration createWindowDecoration(
@@ -1561,7 +1643,8 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase {
WindowContainerTransaction::new, SurfaceControl::new,
new WindowManagerWrapper(mMockWindowManager), mMockSurfaceControlViewHostFactory,
mMockWindowDecorViewHostSupplier, maximizeMenuFactory, mMockHandleMenuFactory,
- mMockMultiInstanceHelper, mMockCaptionHandleRepository, mDesktopModeEventLogger);
+ mMockMultiInstanceHelper, mMockCaptionHandleRepository, mDesktopModeEventLogger,
+ mDesktopModeCompatPolicy);
windowDecor.setCaptionListeners(mMockTouchEventListener, mMockTouchEventListener,
mMockTouchEventListener, mMockTouchEventListener);
windowDecor.setExclusionRegionListener(mMockExclusionRegionListener);
@@ -1592,6 +1675,7 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase {
"DesktopModeWindowDecorationTests");
taskInfo.baseActivity = new ComponentName("com.android.wm.shell.windowdecor",
"DesktopModeWindowDecorationTests");
+ taskInfo.topActivityInfo = createActivityInfo();
return taskInfo;
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/MultiDisplayVeiledResizeTaskPositionerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/MultiDisplayVeiledResizeTaskPositionerTest.kt
index 0615c1d677ba..63babc5e1c3c 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/MultiDisplayVeiledResizeTaskPositionerTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/MultiDisplayVeiledResizeTaskPositionerTest.kt
@@ -51,11 +51,10 @@ import com.android.wm.shell.windowdecor.DragPositioningCallback.CTRL_TYPE_UNDEFI
import java.util.function.Supplier
import junit.framework.Assert
import org.junit.Before
-import org.junit.Ignore
import org.junit.Test
import org.junit.runner.RunWith
+import org.mockito.kotlin.any
import org.mockito.Mock
-import org.mockito.Mockito.any
import org.mockito.Mockito.argThat
import org.mockito.Mockito.doAnswer
import org.mockito.Mockito.eq
@@ -93,6 +92,8 @@ class MultiDisplayVeiledResizeTaskPositionerTest : ShellTestCase() {
@Mock private lateinit var mockFinishCallback: TransitionFinishCallback
@Mock private lateinit var mockTransitions: Transitions
@Mock private lateinit var mockInteractionJankMonitor: InteractionJankMonitor
+ @Mock private lateinit var mockSurfaceControl: SurfaceControl
+
private lateinit var resources: TestableResources
private lateinit var spyDisplayLayout0: DisplayLayout
private lateinit var spyDisplayLayout1: DisplayLayout
@@ -145,6 +146,8 @@ class MultiDisplayVeiledResizeTaskPositionerTest : ShellTestCase() {
.`when`(spyDisplayLayout0)
.getStableBounds(any())
`when`(mockTransactionFactory.get()).thenReturn(mockTransaction)
+ `when`(mockDesktopWindowDecoration.leash).thenReturn(mockSurfaceControl)
+ `when`(mockTransaction.setPosition(any(), any(), any())).thenReturn(mockTransaction)
mockDesktopWindowDecoration.mTaskInfo =
ActivityManager.RunningTaskInfo().apply {
taskId = TASK_ID
@@ -207,7 +210,6 @@ class MultiDisplayVeiledResizeTaskPositionerTest : ShellTestCase() {
}
@Test
- @Ignore("Causing presubmit failure b/391717499")
fun testDragResize_movesTask_doesNotShowResizeVeil() = runOnUiThread {
taskPositioner.onDragPositioningStart(
CTRL_TYPE_UNDEFINED,
@@ -247,7 +249,6 @@ class MultiDisplayVeiledResizeTaskPositionerTest : ShellTestCase() {
}
@Test
- @Ignore("Causing presubmit failure b/391717499")
fun testDragResize_movesTaskToNewDisplay() = runOnUiThread {
taskPositioner.onDragPositioningStart(
CTRL_TYPE_UNDEFINED,
@@ -373,7 +374,6 @@ class MultiDisplayVeiledResizeTaskPositionerTest : ShellTestCase() {
}
@Test
- @Ignore("Causing presubmit failure b/391717499")
fun testDragResize_drag_setBoundsNotRunIfDragEndsInDisallowedEndArea() = runOnUiThread {
taskPositioner.onDragPositioningStart(
CTRL_TYPE_UNDEFINED, // drag
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java
index 3a8dcd674b74..aa1f82e3e4d8 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java
@@ -831,6 +831,54 @@ public class WindowDecorationTests extends ShellTestCase {
}
@Test
+ public void testRelayout_setAppBoundsIfNeeded() {
+ final Display defaultDisplay = mock(Display.class);
+ doReturn(defaultDisplay).when(mMockDisplayController).getDisplay(Display.DEFAULT_DISPLAY);
+ final WindowContainerToken token = TestRunningTaskInfoBuilder.createMockWCToken();
+ final TestRunningTaskInfoBuilder builder = new TestRunningTaskInfoBuilder()
+ .setDisplayId(Display.DEFAULT_DISPLAY)
+ .setVisible(true);
+
+ final ActivityManager.RunningTaskInfo taskInfo =
+ builder.setToken(token).setBounds(TASK_BOUNDS).build();
+ final TestWindowDecoration windowDecor = createWindowDecoration(taskInfo);
+ mRelayoutParams.mIsCaptionVisible = true;
+ mRelayoutParams.mShouldSetAppBounds = true;
+
+ windowDecor.relayout(taskInfo, true /* hasGlobalFocus */);
+ final Rect appBounds = new Rect(TASK_BOUNDS);
+ appBounds.top += WindowDecoration.loadDimensionPixelSize(
+ windowDecor.mDecorWindowContext.getResources(), mRelayoutParams.mCaptionHeightId);
+ verify(mMockWindowContainerTransaction).setAppBounds(eq(token), eq(appBounds));
+ }
+
+ @Test
+ public void testRelayout_setAppBoundsIfNeeded_reset() {
+ final Display defaultDisplay = mock(Display.class);
+ doReturn(defaultDisplay).when(mMockDisplayController).getDisplay(Display.DEFAULT_DISPLAY);
+ final WindowContainerToken token = TestRunningTaskInfoBuilder.createMockWCToken();
+ final TestRunningTaskInfoBuilder builder = new TestRunningTaskInfoBuilder()
+ .setDisplayId(Display.DEFAULT_DISPLAY)
+ .setVisible(true);
+
+ final ActivityManager.RunningTaskInfo taskInfo =
+ builder.setToken(token).setBounds(TASK_BOUNDS).build();
+ final TestWindowDecoration windowDecor = createWindowDecoration(taskInfo);
+
+ mRelayoutParams.mIsCaptionVisible = true;
+ mRelayoutParams.mIsInsetSource = true;
+ mRelayoutParams.mShouldSetAppBounds = true;
+ windowDecor.relayout(taskInfo, true /* hasGlobalFocus */);
+
+ mRelayoutParams.mIsCaptionVisible = true;
+ mRelayoutParams.mIsInsetSource = false;
+ mRelayoutParams.mShouldSetAppBounds = false;
+ windowDecor.relayout(taskInfo, true /* hasGlobalFocus */);
+
+ verify(mMockWindowContainerTransaction).setAppBounds(eq(token), eq(new Rect()));
+ }
+
+ @Test
public void testTaskPositionAndCropNotSetWhenFalse() {
final Display defaultDisplay = mock(Display.class);
doReturn(defaultDisplay).when(mMockDisplayController)
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/common/WindowDecorTaskResourceLoaderTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/common/WindowDecorTaskResourceLoaderTest.kt
index 431de896f433..c61e0eb3b5af 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/common/WindowDecorTaskResourceLoaderTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/common/WindowDecorTaskResourceLoaderTest.kt
@@ -86,6 +86,7 @@ class WindowDecorTaskResourceLoaderTest : ShellTestCase() {
spyContext.setMockPackageManager(mockPackageManager)
doReturn(spyContext).whenever(spyContext).createContextAsUser(any(), anyInt())
doReturn(spyContext).whenever(mMockUserProfileContexts)[anyInt()]
+ doReturn(spyContext).whenever(mMockUserProfileContexts).getOrCreate(anyInt())
loader =
WindowDecorTaskResourceLoader(
shellInit = shellInit,
diff --git a/libs/androidfw/Android.bp b/libs/androidfw/Android.bp
index 12b1dd794a03..3dc53c5051e9 100644
--- a/libs/androidfw/Android.bp
+++ b/libs/androidfw/Android.bp
@@ -288,6 +288,7 @@ cc_benchmark {
"tests/AttributeResolution_bench.cpp",
"tests/CursorWindow_bench.cpp",
"tests/Generic_bench.cpp",
+ "tests/LocaleDataLookup_bench.cpp",
"tests/SparseEntry_bench.cpp",
"tests/Theme_bench.cpp",
],
diff --git a/libs/androidfw/LocaleDataLookup.cpp b/libs/androidfw/LocaleDataLookup.cpp
index 6e751a77f355..ea9e9a2d4280 100644
--- a/libs/androidfw/LocaleDataLookup.cpp
+++ b/libs/androidfw/LocaleDataLookup.cpp
@@ -7518,6 +7518,13 @@ const char* lookupLikelyScript(uint32_t packed_lang_region) {
}
}
+/*
+ * TODO: Consider turning the below switch statement into binary search
+ * to save the disk space when the table is larger in the future.
+ * Disassembled code shows that the jump table emitted by clang can be
+ * 4x larger than the data in disk size, but it depends on the optimization option.
+ * However, a switch statement will benefit from the future of compiler improvement.
+ */
bool isLocaleRepresentative(uint32_t language_and_region, const char* script) {
const uint64_t packed_locale =
((static_cast<uint64_t>(language_and_region)) << 32u) |
diff --git a/libs/androidfw/TypeWrappers.cpp b/libs/androidfw/TypeWrappers.cpp
index 970463492c1a..2a20106b6ee1 100644
--- a/libs/androidfw/TypeWrappers.cpp
+++ b/libs/androidfw/TypeWrappers.cpp
@@ -18,8 +18,11 @@
namespace android {
-TypeVariant::TypeVariant(const ResTable_type* data) : data(data), mLength(dtohl(data->entryCount)) {
- if (data->flags & ResTable_type::FLAG_SPARSE) {
+TypeVariant::TypeVariant(const ResTable_type* data)
+ : data(data)
+ , mLength(dtohl(data->entryCount))
+ , mSparse(data->flags & ResTable_type::FLAG_SPARSE) {
+ if (mSparse) {
const uint32_t entryCount = dtohl(data->entryCount);
const uintptr_t containerEnd = reinterpret_cast<uintptr_t>(data) + dtohl(data->header.size);
const uint32_t* const entryIndices = reinterpret_cast<const uint32_t*>(
@@ -40,18 +43,18 @@ TypeVariant::iterator& TypeVariant::iterator::operator++() {
mIndex = mTypeVariant->mLength;
}
- const ResTable_type* type = mTypeVariant->data;
- if ((type->flags & ResTable_type::FLAG_SPARSE) == 0) {
+ if (!mTypeVariant->mSparse) {
return *this;
}
// Need to adjust |mSparseIndex| as well if we've passed its current element.
+ const ResTable_type* type = mTypeVariant->data;
const uint32_t entryCount = dtohl(type->entryCount);
- const auto entryIndices = reinterpret_cast<const uint32_t*>(
- reinterpret_cast<uintptr_t>(type) + dtohs(type->header.headerSize));
if (mSparseIndex >= entryCount) {
return *this; // done
}
+ const auto entryIndices = reinterpret_cast<const uint32_t*>(
+ reinterpret_cast<uintptr_t>(type) + dtohs(type->header.headerSize));
const auto element = (const ResTable_sparseTypeEntry*)(entryIndices + mSparseIndex);
if (mIndex > dtohs(element->idx)) {
++mSparseIndex;
@@ -79,7 +82,7 @@ const ResTable_entry* TypeVariant::iterator::operator*() const {
}
uint32_t entryOffset;
- if (type->flags & ResTable_type::FLAG_SPARSE) {
+ if (mTypeVariant->mSparse) {
if (mSparseIndex >= entryCount) {
return nullptr;
}
diff --git a/libs/androidfw/include/androidfw/TypeWrappers.h b/libs/androidfw/include/androidfw/TypeWrappers.h
index db641b78a4e4..d901af3c908b 100644
--- a/libs/androidfw/include/androidfw/TypeWrappers.h
+++ b/libs/androidfw/include/androidfw/TypeWrappers.h
@@ -14,8 +14,7 @@
* limitations under the License.
*/
-#ifndef __TYPE_WRAPPERS_H
-#define __TYPE_WRAPPERS_H
+#pragma once
#include <androidfw/ResourceTypes.h>
#include <utils/ByteOrder.h>
@@ -54,7 +53,7 @@ struct TypeVariant {
enum class Kind { Begin, End };
iterator(const TypeVariant* tv, Kind kind)
: mTypeVariant(tv) {
- mSparseIndex = mIndex = kind == Kind::Begin ? 0 : tv->mLength;
+ mSparseIndex = mIndex = (kind == Kind::Begin ? 0 : tv->mLength);
// mSparseIndex here is technically past the number of sparse entries, but it is still
// ok as it is enough to infer that this is the end iterator.
}
@@ -75,9 +74,11 @@ struct TypeVariant {
const ResTable_type* data;
private:
- size_t mLength;
+ // For a dense table, this is the number of the elements.
+ // For a sparse table, this is the index of the last element + 1.
+ // In both cases, it can be used for iteration as the upper loop bound as in |i < mLength|.
+ uint32_t mLength;
+ bool mSparse;
};
} // namespace android
-
-#endif // __TYPE_WRAPPERS_H
diff --git a/libs/androidfw/tests/LocaleDataLookup_bench.cpp b/libs/androidfw/tests/LocaleDataLookup_bench.cpp
new file mode 100644
index 000000000000..60ce3b944551
--- /dev/null
+++ b/libs/androidfw/tests/LocaleDataLookup_bench.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "benchmark/benchmark.h"
+
+#include "androidfw/LocaleDataLookup.h"
+
+namespace android {
+
+static void BM_LocaleDataLookupIsLocaleRepresentative(benchmark::State& state) {
+ for (auto&& _ : state) {
+ isLocaleRepresentative(packLocale("en", "US"), "Latn");
+ isLocaleRepresentative(packLocale("es", "ES"), "Latn");
+ isLocaleRepresentative(packLocale("zh", "CN"), "Hans");
+ isLocaleRepresentative(packLocale("pt", "BR"), "Latn");
+ isLocaleRepresentative(packLocale("ar", "EG"), "Arab");
+ isLocaleRepresentative(packLocale("hi", "IN"), "Deva");
+ isLocaleRepresentative(packLocale("jp", "JP"), "Jpan");
+ }
+}
+BENCHMARK(BM_LocaleDataLookupIsLocaleRepresentative);
+
+static void BM_LocaleDataLookupLikelyScript(benchmark::State& state) {
+ for (auto&& _ : state) {
+ lookupLikelyScript(packLocale("en", ""));
+ lookupLikelyScript(packLocale("es", ""));
+ lookupLikelyScript(packLocale("zh", ""));
+ lookupLikelyScript(packLocale("pt", ""));
+ lookupLikelyScript(packLocale("ar", ""));
+ lookupLikelyScript(packLocale("hi", ""));
+ lookupLikelyScript(packLocale("jp", ""));
+ lookupLikelyScript(packLocale("en", "US"));
+ lookupLikelyScript(packLocale("es", "ES"));
+ lookupLikelyScript(packLocale("zh", "CN"));
+ lookupLikelyScript(packLocale("pt", "BR"));
+ lookupLikelyScript(packLocale("ar", "EG"));
+ lookupLikelyScript(packLocale("hi", "IN"));
+ lookupLikelyScript(packLocale("jp", "JP"));
+ }
+}
+BENCHMARK(BM_LocaleDataLookupLikelyScript);
+
+
+} // namespace android
diff --git a/libs/androidfw/tests/TypeWrappers_test.cpp b/libs/androidfw/tests/TypeWrappers_test.cpp
index d66e05805484..69c24c5d8956 100644
--- a/libs/androidfw/tests/TypeWrappers_test.cpp
+++ b/libs/androidfw/tests/TypeWrappers_test.cpp
@@ -121,6 +121,7 @@ TEST(TypeVariantIteratorTest, shouldIterateOverTypeWithoutErrors) {
values.push_back(std::nullopt);
values.push_back(std::nullopt);
values.push_back(Res_value{ sizeof(Res_value), 0, Res_value::TYPE_STRING, 0x87654321});
+ values.push_back(std::nullopt);
// test for combinations of compact_entry and short_offsets
for (size_t i = 0; i < 8; i++) {
@@ -191,6 +192,17 @@ TEST(TypeVariantIteratorTest, shouldIterateOverTypeWithoutErrors) {
++iter;
+ ASSERT_EQ(uint32_t(9), iter.index());
+ ASSERT_TRUE(NULL == *iter);
+ if (sparse) {
+ // Sparse iterator doesn't know anything beyond the last entry.
+ ASSERT_EQ(v.endEntries(), iter);
+ } else {
+ ASSERT_NE(v.endEntries(), iter);
+ }
+
+ ++iter;
+
ASSERT_EQ(v.endEntries(), iter);
}
}
diff --git a/libs/appfunctions/api/current.txt b/libs/appfunctions/api/current.txt
index 139ccfd22b0e..7280b12aaca9 100644
--- a/libs/appfunctions/api/current.txt
+++ b/libs/appfunctions/api/current.txt
@@ -24,8 +24,8 @@ package com.android.extensions.appfunctions {
public final class AppFunctionManager {
ctor public AppFunctionManager(android.content.Context);
- method @RequiresPermission(anyOf={android.Manifest.permission.EXECUTE_APP_FUNCTIONS_TRUSTED, android.Manifest.permission.EXECUTE_APP_FUNCTIONS}, conditional=true) public void executeAppFunction(@NonNull com.android.extensions.appfunctions.ExecuteAppFunctionRequest, @NonNull java.util.concurrent.Executor, @NonNull android.os.CancellationSignal, @NonNull android.os.OutcomeReceiver<com.android.extensions.appfunctions.ExecuteAppFunctionResponse,com.android.extensions.appfunctions.AppFunctionException>);
- method @RequiresPermission(anyOf={android.Manifest.permission.EXECUTE_APP_FUNCTIONS_TRUSTED, android.Manifest.permission.EXECUTE_APP_FUNCTIONS}, conditional=true) public void isAppFunctionEnabled(@NonNull String, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Boolean,java.lang.Exception>);
+ method @RequiresPermission(android.Manifest.permission.EXECUTE_APP_FUNCTIONS) public void executeAppFunction(@NonNull com.android.extensions.appfunctions.ExecuteAppFunctionRequest, @NonNull java.util.concurrent.Executor, @NonNull android.os.CancellationSignal, @NonNull android.os.OutcomeReceiver<com.android.extensions.appfunctions.ExecuteAppFunctionResponse,com.android.extensions.appfunctions.AppFunctionException>);
+ method @RequiresPermission(android.Manifest.permission.EXECUTE_APP_FUNCTIONS) public void isAppFunctionEnabled(@NonNull String, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Boolean,java.lang.Exception>);
method public void isAppFunctionEnabled(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Boolean,java.lang.Exception>);
method public void setAppFunctionEnabled(@NonNull String, int, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,java.lang.Exception>);
field public static final int APP_FUNCTION_STATE_DEFAULT = 0; // 0x0
diff --git a/libs/appfunctions/java/com/android/extensions/appfunctions/AppFunctionManager.java b/libs/appfunctions/java/com/android/extensions/appfunctions/AppFunctionManager.java
index 9eb66a33fedc..1e31390854b8 100644
--- a/libs/appfunctions/java/com/android/extensions/appfunctions/AppFunctionManager.java
+++ b/libs/appfunctions/java/com/android/extensions/appfunctions/AppFunctionManager.java
@@ -104,12 +104,7 @@ public final class AppFunctionManager {
* <p>See {@link android.app.appfunctions.AppFunctionManager#executeAppFunction} for the
* documented behaviour of this method.
*/
- @RequiresPermission(
- anyOf = {
- Manifest.permission.EXECUTE_APP_FUNCTIONS_TRUSTED,
- Manifest.permission.EXECUTE_APP_FUNCTIONS
- },
- conditional = true)
+ @RequiresPermission(Manifest.permission.EXECUTE_APP_FUNCTIONS)
public void executeAppFunction(
@NonNull ExecuteAppFunctionRequest sidecarRequest,
@NonNull @CallbackExecutor Executor executor,
@@ -150,12 +145,7 @@ public final class AppFunctionManager {
* <p>See {@link android.app.appfunctions.AppFunctionManager#isAppFunctionEnabled} for the
* documented behaviour of this method.
*/
- @RequiresPermission(
- anyOf = {
- Manifest.permission.EXECUTE_APP_FUNCTIONS_TRUSTED,
- Manifest.permission.EXECUTE_APP_FUNCTIONS
- },
- conditional = true)
+ @RequiresPermission(Manifest.permission.EXECUTE_APP_FUNCTIONS)
public void isAppFunctionEnabled(
@NonNull String functionIdentifier,
@NonNull String targetPackage,
diff --git a/libs/hwui/Android.bp b/libs/hwui/Android.bp
index 53d3b77f1ba2..bb2a53bc04d6 100644
--- a/libs/hwui/Android.bp
+++ b/libs/hwui/Android.bp
@@ -779,6 +779,7 @@ cc_test {
"tests/unit/CommonPoolTests.cpp",
"tests/unit/DamageAccumulatorTests.cpp",
"tests/unit/DeferredLayerUpdaterTests.cpp",
+ "tests/unit/DrawTextFunctorTest.cpp",
"tests/unit/EglManagerTests.cpp",
"tests/unit/FatVectorTests.cpp",
"tests/unit/GraphicsStatsServiceTests.cpp",
diff --git a/libs/hwui/hwui/DrawTextFunctor.h b/libs/hwui/hwui/DrawTextFunctor.h
index 008b693edf02..b782837bb4ee 100644
--- a/libs/hwui/hwui/DrawTextFunctor.h
+++ b/libs/hwui/hwui/DrawTextFunctor.h
@@ -76,6 +76,41 @@ static void simplifyPaint(int color, Paint* paint) {
paint->setBlendMode(SkBlendMode::kSrcOver);
}
+namespace {
+
+static bool shouldDarkenTextForHighContrast(const uirenderer::Lab& lab) {
+ // LINT.IfChange(hct_darken)
+ return lab.L <= 50;
+ // LINT.ThenChange(/core/java/android/text/Layout.java:hct_darken)
+}
+
+} // namespace
+
+static void adjustHighContrastInnerTextColor(uirenderer::Lab* lab) {
+ bool darken = shouldDarkenTextForHighContrast(*lab);
+ bool isGrayscale = abs(lab->a) < 10 && abs(lab->b) < 10;
+ if (isGrayscale) {
+ // For near-grayscale text we first remove all color.
+ lab->a = lab->b = 0;
+ if (lab->L > 40 && lab->L < 60) {
+ // Text near "middle gray" is pushed to a more contrasty gray.
+ lab->L = darken ? 20 : 80;
+ } else {
+ // Other grayscale text is pushed completely white or black.
+ lab->L = darken ? 0 : 100;
+ }
+ } else {
+ // For color text we ensure the text is bright enough (for light text)
+ // or dark enough (for dark text) to stand out against the background,
+ // without touching the A and B components so we retain color.
+ if (darken && lab->L > 20.f) {
+ lab->L = 20.0f;
+ } else if (!darken && lab->L < 90.f) {
+ lab->L = 90.0f;
+ }
+ }
+}
+
class DrawTextFunctor {
public:
/**
@@ -114,10 +149,8 @@ public:
if (CC_UNLIKELY(canvas->isHighContrastText() && paint.getAlpha() != 0)) {
// high contrast draw path
int color = paint.getColor();
- // LINT.IfChange(hct_darken)
uirenderer::Lab lab = uirenderer::sRGBToLab(color);
- bool darken = lab.L <= 50;
- // LINT.ThenChange(/core/java/android/text/Layout.java:hct_darken)
+ bool darken = shouldDarkenTextForHighContrast(lab);
// outline
gDrawTextBlobMode = DrawTextBlobMode::HctOutline;
@@ -130,20 +163,7 @@ public:
gDrawTextBlobMode = DrawTextBlobMode::HctInner;
Paint innerPaint(paint);
if (flags::high_contrast_text_inner_text_color()) {
- // Preserve some color information while still ensuring sufficient contrast.
- // Thus we increase the lightness to make the color stand out against a black
- // background, and vice-versa. For grayscale, we retain some gray to indicate
- // states like disabled or to distinguish links.
- bool isGrayscale = abs(lab.a) < 1 && abs(lab.b) < 1;
- if (isGrayscale) {
- if (darken) {
- lab.L = lab.L < 40 ? 0 : 20;
- } else {
- lab.L = lab.L > 60 ? 100 : 80;
- }
- } else {
- lab.L = darken ? 20 : 90;
- }
+ adjustHighContrastInnerTextColor(&lab);
simplifyPaint(uirenderer::LabToSRGB(lab, SK_AlphaOPAQUE), &innerPaint);
} else {
simplifyPaint(darken ? SK_ColorBLACK : SK_ColorWHITE, &innerPaint);
diff --git a/libs/hwui/tests/unit/DrawTextFunctorTest.cpp b/libs/hwui/tests/unit/DrawTextFunctorTest.cpp
new file mode 100644
index 000000000000..c5361a0833c4
--- /dev/null
+++ b/libs/hwui/tests/unit/DrawTextFunctorTest.cpp
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <gtest/gtest.h>
+
+#include "hwui/DrawTextFunctor.h"
+
+using namespace android;
+
+namespace {
+
+void testHighContrastInnerTextColor(float originalL, float originalA, float originalB,
+ float expectedL, float expectedA, float expectedB) {
+ uirenderer::Lab color = {originalL, originalA, originalB};
+ adjustHighContrastInnerTextColor(&color);
+ EXPECT_FLOAT_EQ(color.L, expectedL);
+ EXPECT_FLOAT_EQ(color.a, expectedA);
+ EXPECT_FLOAT_EQ(color.b, expectedB);
+}
+
+TEST(DrawTextFunctorTest, BlackUnaffected) {
+ testHighContrastInnerTextColor(0, 0, 0, 0, 0, 0);
+}
+
+TEST(DrawTextFunctorTest, WhiteUnaffected) {
+ testHighContrastInnerTextColor(100, 0, 0, 100, 0, 0);
+}
+
+TEST(DrawTextFunctorTest, DarkGrayPushedToWhite) {
+ testHighContrastInnerTextColor(10, 0, 0, 0, 0, 0);
+ testHighContrastInnerTextColor(20, 0, 0, 0, 0, 0);
+}
+
+TEST(DrawTextFunctorTest, LightGrayPushedToWhite) {
+ testHighContrastInnerTextColor(80, 0, 0, 100, 0, 0);
+ testHighContrastInnerTextColor(90, 0, 0, 100, 0, 0);
+}
+
+TEST(DrawTextFunctorTest, MiddleDarkGrayPushedToDarkGray) {
+ testHighContrastInnerTextColor(41, 0, 0, 20, 0, 0);
+ testHighContrastInnerTextColor(49, 0, 0, 20, 0, 0);
+}
+
+TEST(DrawTextFunctorTest, MiddleLightGrayPushedToLightGray) {
+ testHighContrastInnerTextColor(51, 0, 0, 80, 0, 0);
+ testHighContrastInnerTextColor(59, 0, 0, 80, 0, 0);
+}
+
+TEST(DrawTextFunctorTest, PaleColorTreatedAsGrayscaleAndPushedToWhite) {
+ testHighContrastInnerTextColor(75, 5, -5, 100, 0, 0);
+ testHighContrastInnerTextColor(85, -6, 8, 100, 0, 0);
+}
+
+TEST(DrawTextFunctorTest, PaleColorTreatedAsGrayscaleAndPushedToBlack) {
+ testHighContrastInnerTextColor(25, 5, -5, 0, 0, 0);
+ testHighContrastInnerTextColor(35, -6, 8, 0, 0, 0);
+}
+
+TEST(DrawTextFunctorTest, ColorfulColorIsLightened) {
+ testHighContrastInnerTextColor(70, 100, -100, 90, 100, -100);
+}
+
+TEST(DrawTextFunctorTest, ColorfulLightColorIsUntouched) {
+ testHighContrastInnerTextColor(95, 100, -100, 95, 100, -100);
+}
+
+TEST(DrawTextFunctorTest, ColorfulColorIsDarkened) {
+ testHighContrastInnerTextColor(30, 100, -100, 20, 100, -100);
+}
+
+TEST(DrawTextFunctorTest, ColorfulDarkColorIsUntouched) {
+ testHighContrastInnerTextColor(5, 100, -100, 5, 100, -100);
+}
+
+} // namespace
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java
index 71013f7f4e34..5dc49a07a6d6 100644
--- a/media/java/android/media/AudioManager.java
+++ b/media/java/android/media/AudioManager.java
@@ -10406,6 +10406,23 @@ public class AudioManager {
}
}
+ /**
+ * Enable strict audio hardening (background) enforcement, regardless of release or temporary
+ * exemptions for debugging purposes.
+ * Enforced hardening can be found in the audio dumpsys with the API being restricted and the
+ * level of restriction which was encountered.
+ * @hide
+ */
+ @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED)
+ public void setEnableHardening(boolean shouldEnable) {
+ final IAudioService service = getService();
+ try {
+ service.setEnableHardening(shouldEnable);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
//====================================================================
// Mute await connection
diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl
index 2a740f85aa72..7b8d6663c957 100644
--- a/media/java/android/media/IAudioService.aidl
+++ b/media/java/android/media/IAudioService.aidl
@@ -819,4 +819,8 @@ interface IAudioService {
@EnforcePermission("QUERY_AUDIO_STATE")
@JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.QUERY_AUDIO_STATE)")
boolean shouldNotificationSoundPlay(in AudioAttributes aa);
+
+ @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED")
+ @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED)")
+ void setEnableHardening(in boolean shouldEnable);
}
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java
index c4886836f451..fb1b5b57cce6 100644
--- a/media/java/android/media/MediaCodec.java
+++ b/media/java/android/media/MediaCodec.java
@@ -48,6 +48,7 @@ import android.os.IHwBinder;
import android.os.Looper;
import android.os.Message;
import android.os.PersistableBundle;
+import android.os.Trace;
import android.view.Surface;
import java.io.IOException;
@@ -3107,6 +3108,7 @@ final public class MediaCodec {
int index,
int offset, int size, long presentationTimeUs, int flags)
throws CryptoException {
+ Trace.traceBegin(Trace.TRACE_TAG_VIDEO, "MediaCodec::queueInputBuffer#java");
if ((flags & BUFFER_FLAG_DECODE_ONLY) != 0
&& (flags & BUFFER_FLAG_END_OF_STREAM) != 0) {
throw new InvalidBufferFlagsException(EOS_AND_DECODE_ONLY_ERROR_MESSAGE);
@@ -3126,6 +3128,8 @@ final public class MediaCodec {
} catch (CryptoException | IllegalStateException e) {
revalidateByteBuffer(mCachedInputBuffers, index, true /* input */);
throw e;
+ } finally {
+ Trace.traceEnd(Trace.TRACE_TAG_VIDEO);
}
}
@@ -3167,6 +3171,7 @@ final public class MediaCodec {
public final void queueInputBuffers(
int index,
@NonNull ArrayDeque<BufferInfo> bufferInfos) {
+ Trace.traceBegin(Trace.TRACE_TAG_VIDEO, "MediaCodec::queueInputBuffers#java");
synchronized(mBufferLock) {
if (mBufferMode == BUFFER_MODE_BLOCK) {
throw new IncompatibleWithBlockModelException("queueInputBuffers() "
@@ -3182,6 +3187,8 @@ final public class MediaCodec {
} catch (CryptoException | IllegalStateException | IllegalArgumentException e) {
revalidateByteBuffer(mCachedInputBuffers, index, true /* input */);
throw e;
+ } finally {
+ Trace.traceEnd(Trace.TRACE_TAG_VIDEO);
}
}
@@ -3442,6 +3449,7 @@ final public class MediaCodec {
@NonNull CryptoInfo info,
long presentationTimeUs,
int flags) throws CryptoException {
+ Trace.traceBegin(Trace.TRACE_TAG_VIDEO, "MediaCodec::queueSecureInputBuffer#java");
if ((flags & BUFFER_FLAG_DECODE_ONLY) != 0
&& (flags & BUFFER_FLAG_END_OF_STREAM) != 0) {
throw new InvalidBufferFlagsException(EOS_AND_DECODE_ONLY_ERROR_MESSAGE);
@@ -3461,6 +3469,8 @@ final public class MediaCodec {
} catch (CryptoException | IllegalStateException e) {
revalidateByteBuffer(mCachedInputBuffers, index, true /* input */);
throw e;
+ } finally {
+ Trace.traceEnd(Trace.TRACE_TAG_VIDEO);
}
}
@@ -3491,6 +3501,7 @@ final public class MediaCodec {
int index,
@NonNull ArrayDeque<BufferInfo> bufferInfos,
@NonNull ArrayDeque<CryptoInfo> cryptoInfos) {
+ Trace.traceBegin(Trace.TRACE_TAG_VIDEO, "MediaCodec::queueSecureInputBuffers#java");
synchronized(mBufferLock) {
if (mBufferMode == BUFFER_MODE_BLOCK) {
throw new IncompatibleWithBlockModelException("queueSecureInputBuffers() "
@@ -3506,6 +3517,8 @@ final public class MediaCodec {
} catch (CryptoException | IllegalStateException | IllegalArgumentException e) {
revalidateByteBuffer(mCachedInputBuffers, index, true /* input */);
throw e;
+ } finally {
+ Trace.traceEnd(Trace.TRACE_TAG_VIDEO);
}
}
@@ -3533,6 +3546,7 @@ final public class MediaCodec {
* @throws MediaCodec.CodecException upon codec error.
*/
public final int dequeueInputBuffer(long timeoutUs) {
+ Trace.traceBegin(Trace.TRACE_TAG_VIDEO, "MediaCodec::dequeueInputBuffer#java");
synchronized (mBufferLock) {
if (mBufferMode == BUFFER_MODE_BLOCK) {
throw new IncompatibleWithBlockModelException("dequeueInputBuffer() "
@@ -3546,6 +3560,7 @@ final public class MediaCodec {
validateInputByteBufferLocked(mCachedInputBuffers, res);
}
}
+ Trace.traceEnd(Trace.TRACE_TAG_VIDEO);
return res;
}
@@ -3873,7 +3888,9 @@ final public class MediaCodec {
/**
* Set a hardware graphic buffer to this queue request. Exactly one buffer must
- * be set for a queue request before calling {@link #queue}.
+ * be set for a queue request before calling {@link #queue}. Ownership of the
+ * hardware buffer is not transferred to this queue request, nor will it be transferred
+ * to the codec once {@link #queue} is called.
* <p>
* Note: buffers should have format {@link HardwareBuffer#YCBCR_420_888},
* a single layer, and an appropriate usage ({@link HardwareBuffer#USAGE_CPU_READ_OFTEN}
diff --git a/media/java/android/media/RoutingSessionInfo.java b/media/java/android/media/RoutingSessionInfo.java
index 3b8cf3fb2909..d27d7fc72a38 100644
--- a/media/java/android/media/RoutingSessionInfo.java
+++ b/media/java/android/media/RoutingSessionInfo.java
@@ -85,8 +85,7 @@ public final class RoutingSessionInfo implements Parcelable {
@Retention(RetentionPolicy.SOURCE)
public @interface TransferReason {}
- @NonNull
- final String mId;
+ @NonNull final String mOriginalId;
@Nullable
final CharSequence mName;
@Nullable
@@ -120,7 +119,7 @@ public final class RoutingSessionInfo implements Parcelable {
RoutingSessionInfo(@NonNull Builder builder) {
Objects.requireNonNull(builder, "builder must not be null.");
- mId = builder.mId;
+ mOriginalId = builder.mOriginalId;
mName = builder.mName;
mOwnerPackageName = builder.mOwnerPackageName;
mClientPackageName = builder.mClientPackageName;
@@ -148,8 +147,8 @@ public final class RoutingSessionInfo implements Parcelable {
}
RoutingSessionInfo(@NonNull Parcel src) {
- mId = src.readString();
- Preconditions.checkArgument(!TextUtils.isEmpty(mId));
+ mOriginalId = src.readString();
+ Preconditions.checkArgument(!TextUtils.isEmpty(mOriginalId));
mName = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(src);
mOwnerPackageName = src.readString();
@@ -221,9 +220,9 @@ public final class RoutingSessionInfo implements Parcelable {
@NonNull
public String getId() {
if (!TextUtils.isEmpty(mProviderId)) {
- return MediaRouter2Utils.toUniqueId(mProviderId, mId);
+ return MediaRouter2Utils.toUniqueId(mProviderId, mOriginalId);
} else {
- return mId;
+ return mOriginalId;
}
}
@@ -236,12 +235,16 @@ public final class RoutingSessionInfo implements Parcelable {
}
/**
- * Gets the original id set by {@link Builder#Builder(String, String)}.
+ * Gets the original id as assigned by the {@link MediaRoute2ProviderService route provider}.
+ *
+ * <p>This may be different from {@link #getId()}, which may convert this original id into a
+ * unique one by adding information about the provider that created this session info.
+ *
* @hide
*/
@NonNull
public String getOriginalId() {
- return mId;
+ return mOriginalId;
}
/**
@@ -423,7 +426,7 @@ public final class RoutingSessionInfo implements Parcelable {
@Override
public void writeToParcel(@NonNull Parcel dest, int flags) {
- dest.writeString(mId);
+ dest.writeString(mOriginalId);
dest.writeCharSequence(mName);
dest.writeString(mOwnerPackageName);
dest.writeString(mClientPackageName);
@@ -454,7 +457,7 @@ public final class RoutingSessionInfo implements Parcelable {
String indent = prefix + " ";
- pw.println(indent + "mId=" + mId);
+ pw.println(indent + "mOriginalId=" + mOriginalId);
pw.println(indent + "mName=" + mName);
pw.println(indent + "mOwnerPackageName=" + mOwnerPackageName);
pw.println(indent + "mClientPackageName=" + mClientPackageName);
@@ -485,7 +488,7 @@ public final class RoutingSessionInfo implements Parcelable {
}
RoutingSessionInfo other = (RoutingSessionInfo) obj;
- return Objects.equals(mId, other.mId)
+ return Objects.equals(mOriginalId, other.mOriginalId)
&& Objects.equals(mName, other.mName)
&& Objects.equals(mOwnerPackageName, other.mOwnerPackageName)
&& Objects.equals(mClientPackageName, other.mClientPackageName)
@@ -500,13 +503,13 @@ public final class RoutingSessionInfo implements Parcelable {
&& (mTransferReason == other.mTransferReason)
&& Objects.equals(mTransferInitiatorUserHandle, other.mTransferInitiatorUserHandle)
&& Objects.equals(
- mTransferInitiatorPackageName, other.mTransferInitiatorPackageName);
+ mTransferInitiatorPackageName, other.mTransferInitiatorPackageName);
}
@Override
public int hashCode() {
return Objects.hash(
- mId,
+ mOriginalId,
mName,
mOwnerPackageName,
mClientPackageName,
@@ -585,8 +588,7 @@ public final class RoutingSessionInfo implements Parcelable {
* Builder class for {@link RoutingSessionInfo}.
*/
public static final class Builder {
- @NonNull
- private final String mId;
+ @NonNull private final String mOriginalId;
@Nullable
private CharSequence mName;
@Nullable
@@ -616,23 +618,22 @@ public final class RoutingSessionInfo implements Parcelable {
/**
* Constructor for builder to create {@link RoutingSessionInfo}.
- * <p>
- * In order to ensure ID uniqueness in {@link MediaRouter2} side, the value of
- * {@link RoutingSessionInfo#getId()} can be different from what was set in
- * {@link MediaRoute2ProviderService}.
- * </p>
*
- * @param id ID of the session. Must not be empty.
- * @param clientPackageName package name of the client app which uses this session.
- * If is is unknown, then just use an empty string.
+ * <p>In order to ensure ID uniqueness in {@link MediaRouter2} side, the value of {@link
+ * RoutingSessionInfo#getId()} can be different from what was set in {@link
+ * MediaRoute2ProviderService}.
+ *
+ * @param originalId ID of the session. Must not be empty.
+ * @param clientPackageName package name of the client app which uses this session. If is is
+ * unknown, then just use an empty string.
* @see MediaRoute2Info#getId()
*/
- public Builder(@NonNull String id, @NonNull String clientPackageName) {
- if (TextUtils.isEmpty(id)) {
+ public Builder(@NonNull String originalId, @NonNull String clientPackageName) {
+ if (TextUtils.isEmpty(originalId)) {
throw new IllegalArgumentException("id must not be empty");
}
- mId = id;
+ mOriginalId = originalId;
mClientPackageName =
Objects.requireNonNull(clientPackageName, "clientPackageName must not be null");
mSelectedRoutes = new ArrayList<>();
@@ -648,9 +649,19 @@ public final class RoutingSessionInfo implements Parcelable {
* @param sessionInfo the existing instance to copy data from.
*/
public Builder(@NonNull RoutingSessionInfo sessionInfo) {
+ this(sessionInfo, sessionInfo.getOriginalId());
+ }
+
+ /**
+ * Builds upon the given {@code sessionInfo}, using the given {@link #getOriginalId()} for
+ * the id.
+ *
+ * @hide
+ */
+ public Builder(@NonNull RoutingSessionInfo sessionInfo, String originalId) {
Objects.requireNonNull(sessionInfo, "sessionInfo must not be null");
- mId = sessionInfo.mId;
+ mOriginalId = originalId;
mName = sessionInfo.mName;
mClientPackageName = sessionInfo.mClientPackageName;
mProviderId = sessionInfo.mProviderId;
diff --git a/media/java/android/media/flags/media_better_together.aconfig b/media/java/android/media/flags/media_better_together.aconfig
index 94454cf9ab9b..2a6919c5e03d 100644
--- a/media/java/android/media/flags/media_better_together.aconfig
+++ b/media/java/android/media/flags/media_better_together.aconfig
@@ -21,6 +21,16 @@ flag {
}
flag {
+ name: "disable_transfer_when_apps_do_not_support"
+ namespace: "media_better_together"
+ description: "Fixes a bug causing output switcher routes to be incorrectly enabled for media transfer."
+ bug: "373404114"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
+flag {
name: "enable_audio_input_device_routing_and_volume_control"
namespace: "media_better_together"
description: "Allows audio input devices routing and volume control via system settings."
@@ -125,6 +135,16 @@ flag {
}
flag {
+ name: "enable_output_switcher_session_grouping"
+ namespace: "media_better_together"
+ description: "Enables selected items in Output Switcher to be grouped together."
+ bug: "388347018"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
+flag {
name: "enable_prevention_of_keep_alive_route_providers"
namespace: "media_solutions"
description: "Enables mechanisms to prevent route providers from keeping malicious apps alive."
diff --git a/media/java/android/media/quality/MediaQualityContract.java b/media/java/android/media/quality/MediaQualityContract.java
index e558209420e0..e4de3e4420fe 100644
--- a/media/java/android/media/quality/MediaQualityContract.java
+++ b/media/java/android/media/quality/MediaQualityContract.java
@@ -341,6 +341,13 @@ public class MediaQualityContract {
public static final String PARAMETER_FILM_MODE = "film_mode";
/**
+ * Enable/disable black color auto stretch
+ *
+ * @hide
+ */
+ public static final String PARAMETER_BLACK_STRETCH = "black_stretch";
+
+ /**
* Enable/disable blue color auto stretch
*
* <p>Type: BOOLEAN
@@ -457,6 +464,27 @@ public class MediaQualityContract {
* @hide
*
*/
+ public static final String PARAMETER_COLOR_TEMPERATURE_RED_GAIN =
+ "color_temperature_red_gain";
+
+ /**
+ * @hide
+ *
+ */
+ public static final String PARAMETER_COLOR_TEMPERATURE_GREEN_GAIN =
+ "color_temperature_green_gain";
+
+ /**
+ * @hide
+ *
+ */
+ public static final String PARAMETER_COLOR_TEMPERATURE_BLUE_GAIN =
+ "color_temperature_blue_gain";
+
+ /**
+ * @hide
+ *
+ */
public static final String PARAMETER_COLOR_TEMPERATURE_RED_OFFSET =
"color_temperature_red_offset";
diff --git a/media/java/android/media/session/MediaSessionManager.java b/media/java/android/media/session/MediaSessionManager.java
index 371b47fe3421..22f4182ee37b 100644
--- a/media/java/android/media/session/MediaSessionManager.java
+++ b/media/java/android/media/session/MediaSessionManager.java
@@ -155,11 +155,6 @@ public final class MediaSessionManager {
}
/**
- * This API is not generally intended for third party application developers.
- * Use the <a href="{@docRoot}jetpack/androidx.html">AndroidX</a>
- * <a href="{@docRoot}reference/androidx/media2/session/package-summary.html">Media2 session
- * Library</a> for consistent behavior across all devices.
- * <p>
* Notifies that a new {@link MediaSession2} with type {@link Session2Token#TYPE_SESSION} is
* created.
* <p>
@@ -283,16 +278,16 @@ public final class MediaSessionManager {
}
/**
- * This API is not generally intended for third party application developers.
- * Use the <a href="{@docRoot}jetpack/androidx.html">AndroidX</a>
- * <a href="{@docRoot}reference/androidx/media2/session/package-summary.html">Media2 session
- * Library</a> for consistent behavior across all devices.
- * <p>
* Gets a list of {@link Session2Token} with type {@link Session2Token#TYPE_SESSION} for the
* current user.
* <p>
* Although this API can be used without any restriction, each session owners can accept or
* reject your uses of {@link MediaSession2}.
+ * <p>
+ * This API is not generally intended for third party application developers. Apps wanting media
+ * session functionality should use the
+ * <a href="{@docRoot}reference/androidx/media3/session/package-summary.html">AndroidX Media3
+ * Session Library</a>.
*
* @return A list of {@link Session2Token}.
*/
@@ -417,12 +412,12 @@ public final class MediaSessionManager {
}
/**
- * This API is not generally intended for third party application developers.
- * Use the <a href="{@docRoot}jetpack/androidx.html">AndroidX</a>
- * <a href="{@docRoot}reference/androidx/media2/session/package-summary.html">Media2 session
- * Library</a> for consistent behavior across all devices.
- * <p>
* Adds a listener to be notified when the {@link #getSession2Tokens()} changes.
+ * <p>
+ * This API is not generally intended for third party application developers. Apps wanting media
+ * session functionality should use the
+ * <a href="{@docRoot}reference/androidx/media3/session/package-summary.html">AndroidX Media3
+ * Session Library</a>.
*
* @param listener The listener to add
*/
@@ -433,12 +428,12 @@ public final class MediaSessionManager {
}
/**
- * This API is not generally intended for third party application developers.
- * Use the <a href="{@docRoot}jetpack/androidx.html">AndroidX</a>
- * <a href="{@docRoot}reference/androidx/media2/session/package-summary.html">Media2 session
- * Library</a> for consistent behavior across all devices.
- * <p>
* Adds a listener to be notified when the {@link #getSession2Tokens()} changes.
+ * <p>
+ * This API is not generally intended for third party application developers. Apps wanting media
+ * session functionality should use the
+ * <a href="{@docRoot}reference/androidx/media3/session/package-summary.html">AndroidX Media3
+ * Session Library</a>.
*
* @param listener The listener to add
* @param handler The handler to call listener on.
@@ -451,16 +446,16 @@ public final class MediaSessionManager {
}
/**
- * This API is not generally intended for third party application developers.
- * Use the <a href="{@docRoot}jetpack/androidx.html">AndroidX</a>
- * <a href="{@docRoot}reference/androidx/media2/session/package-summary.html">Media2 session
- * Library</a> for consistent behavior across all devices.
- * <p>
* Adds a listener to be notified when the {@link #getSession2Tokens()} changes.
* <p>
* The calling application needs to hold the
* {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} permission in order to
* add listeners for user ids that do not belong to current process.
+ * <p>
+ * This API is not generally intended for third party application developers. Apps wanting media
+ * session functionality should use the
+ * <a href="{@docRoot}reference/androidx/media3/session/package-summary.html">AndroidX Media3
+ * Session Library</a>.
*
* @param userHandle The userHandle to listen for changes on
* @param listener The listener to add
@@ -496,12 +491,12 @@ public final class MediaSessionManager {
}
/**
- * This API is not generally intended for third party application developers.
- * Use the <a href="{@docRoot}jetpack/androidx.html">AndroidX</a>
- * <a href="{@docRoot}reference/androidx/media2/session/package-summary.html">Media2 session
- * Library</a> for consistent behavior across all devices.
- * <p>
* Removes the {@link OnSession2TokensChangedListener} to stop receiving session token updates.
+ * <p>
+ * This API is not generally intended for third party application developers. Apps wanting media
+ * session functionality should use the
+ * <a href="{@docRoot}reference/androidx/media3/session/package-summary.html">AndroidX Media3
+ * Session Library</a>.
*
* @param listener The listener to remove.
*/
@@ -1061,13 +1056,13 @@ public final class MediaSessionManager {
}
/**
- * This API is not generally intended for third party application developers.
- * Use the <a href="{@docRoot}jetpack/androidx.html">AndroidX</a>
- * <a href="{@docRoot}reference/androidx/media2/session/package-summary.html">Media2 session
- * Library</a> for consistent behavior across all devices.
- * <p>
* Listens for changes to the {@link #getSession2Tokens()}. This can be added
* using {@link #addOnSession2TokensChangedListener(OnSession2TokensChangedListener, Handler)}.
+ * <p>
+ * This API is not generally intended for third party application developers. Apps wanting media
+ * session functionality should use the
+ * <a href="{@docRoot}reference/androidx/media3/session/package-summary.html">AndroidX Media3
+ * Session Library</a>.
*/
public interface OnSession2TokensChangedListener {
/**
diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp
index 8419ce761a4a..61c287b9633c 100644
--- a/media/jni/android_media_MediaCodec.cpp
+++ b/media/jni/android_media_MediaCodec.cpp
@@ -16,7 +16,9 @@
//#define LOG_NDEBUG 0
#define LOG_TAG "MediaCodec-JNI"
+#define ATRACE_TAG ATRACE_TAG_VIDEO
#include <utils/Log.h>
+#include <utils/Trace.h>
#include <type_traits>
@@ -1230,63 +1232,73 @@ static void AMessageToCryptoInfo(JNIEnv * env, const jobject & obj,
sp<ABuffer> ivBuffer;
CryptoPlugin::Mode mode;
CryptoPlugin::Pattern pattern;
- CHECK(msg->findInt32("mode", (int*)&mode));
- CHECK(msg->findSize("numSubSamples", &numSubSamples));
- CHECK(msg->findBuffer("subSamples", &subSamplesBuffer));
- CHECK(msg->findInt32("encryptBlocks", (int32_t *)&pattern.mEncryptBlocks));
- CHECK(msg->findInt32("skipBlocks", (int32_t *)&pattern.mSkipBlocks));
- CHECK(msg->findBuffer("iv", &ivBuffer));
- CHECK(msg->findBuffer("key", &keyBuffer));
-
- // subsamples
+ CryptoPlugin::SubSample *samplesArray = nullptr;
+ ScopedLocalRef<jbyteArray> keyArray(env, env->NewByteArray(16));
+ ScopedLocalRef<jbyteArray> ivArray(env, env->NewByteArray(16));
+ jboolean isCopy;
+ sp<RefBase> cryptoInfosObj;
+ if (msg->findObject("cryptoInfos", &cryptoInfosObj)) {
+ sp<CryptoInfosWrapper> cryptoInfos((CryptoInfosWrapper*)cryptoInfosObj.get());
+ CHECK(!cryptoInfos->value.empty() && (cryptoInfos->value[0] != nullptr));
+ std::unique_ptr<CodecCryptoInfo> &info = cryptoInfos->value[0];
+ mode = info->mMode;
+ numSubSamples = info->mNumSubSamples;
+ samplesArray = info->mSubSamples;
+ pattern = info->mPattern;
+ if (info->mKey != nullptr) {
+ jbyte * dstKey = env->GetByteArrayElements(keyArray.get(), &isCopy);
+ memcpy(dstKey, info->mKey, 16);
+ env->ReleaseByteArrayElements(keyArray.get(), dstKey, 0);
+ }
+ if (info->mIv != nullptr) {
+ jbyte * dstIv = env->GetByteArrayElements(ivArray.get(), &isCopy);
+ memcpy(dstIv, info->mIv, 16);
+ env->ReleaseByteArrayElements(ivArray.get(), dstIv, 0);
+ }
+ } else {
+ CHECK(msg->findInt32("mode", (int*)&mode));
+ CHECK(msg->findSize("numSubSamples", &numSubSamples));
+ CHECK(msg->findBuffer("subSamples", &subSamplesBuffer));
+ CHECK(msg->findInt32("encryptBlocks", (int32_t *)&pattern.mEncryptBlocks));
+ CHECK(msg->findInt32("skipBlocks", (int32_t *)&pattern.mSkipBlocks));
+ CHECK(msg->findBuffer("iv", &ivBuffer));
+ CHECK(msg->findBuffer("key", &keyBuffer));
+ samplesArray =
+ (CryptoPlugin::SubSample*)(subSamplesBuffer.get()->data());
+ if (keyBuffer.get() != nullptr && keyBuffer->size() > 0) {
+ jbyte * dstKey = env->GetByteArrayElements(keyArray.get(), &isCopy);
+ memcpy(dstKey, keyBuffer->data(), keyBuffer->size());
+ env->ReleaseByteArrayElements(keyArray.get(), dstKey, 0);
+ }
+ if (ivBuffer.get() != nullptr && ivBuffer->size() > 0) {
+ jbyte * dstIv = env->GetByteArrayElements(ivArray.get(), &isCopy);
+ memcpy(dstIv, ivBuffer->data(), ivBuffer->size());
+ env->ReleaseByteArrayElements(ivArray.get(), dstIv, 0);
+ }
+ }
ScopedLocalRef<jintArray> samplesOfEncryptedDataArr(env, env->NewIntArray(numSubSamples));
ScopedLocalRef<jintArray> samplesOfClearDataArr(env, env->NewIntArray(numSubSamples));
- jboolean isCopy;
- jint *dstEncryptedSamples =
- env->GetIntArrayElements(samplesOfEncryptedDataArr.get(), &isCopy);
- jint * dstClearSamples =
- env->GetIntArrayElements(samplesOfClearDataArr.get(), &isCopy);
-
- CryptoPlugin::SubSample * samplesArray =
- (CryptoPlugin::SubSample*)(subSamplesBuffer.get()->data());
-
- for(int i = 0 ; i < numSubSamples ; i++) {
- dstEncryptedSamples[i] = samplesArray[i].mNumBytesOfEncryptedData;
- dstClearSamples[i] = samplesArray[i].mNumBytesOfClearData;
- }
- env->ReleaseIntArrayElements(samplesOfEncryptedDataArr.get(), dstEncryptedSamples, 0);
- env->ReleaseIntArrayElements(samplesOfClearDataArr.get(), dstClearSamples, 0);
- // key and iv
- jbyteArray keyArray = NULL;
- jbyteArray ivArray = NULL;
- if (keyBuffer.get() != nullptr && keyBuffer->size() > 0) {
- keyArray = env->NewByteArray(keyBuffer->size());
- jbyte * dstKey = env->GetByteArrayElements(keyArray, &isCopy);
- memcpy(dstKey, keyBuffer->data(), keyBuffer->size());
- env->ReleaseByteArrayElements(keyArray,dstKey,0);
- }
- if (ivBuffer.get() != nullptr && ivBuffer->size() > 0) {
- ivArray = env->NewByteArray(ivBuffer->size());
- jbyte *dstIv = env->GetByteArrayElements(ivArray, &isCopy);
- memcpy(dstIv, ivBuffer->data(), ivBuffer->size());
- env->ReleaseByteArrayElements(ivArray, dstIv,0);
- }
- // set samples, key and iv
+ if (numSubSamples > 0) {
+ jint *dstEncryptedSamples =
+ env->GetIntArrayElements(samplesOfEncryptedDataArr.get(), &isCopy);
+ jint * dstClearSamples =
+ env->GetIntArrayElements(samplesOfClearDataArr.get(), &isCopy);
+ for(int i = 0 ; i < numSubSamples ; i++) {
+ dstEncryptedSamples[i] = samplesArray[i].mNumBytesOfEncryptedData;
+ dstClearSamples[i] = samplesArray[i].mNumBytesOfClearData;
+ }
+ env->ReleaseIntArrayElements(samplesOfEncryptedDataArr.get(), dstEncryptedSamples, 0);
+ env->ReleaseIntArrayElements(samplesOfClearDataArr.get(), dstClearSamples, 0);
+ }
env->CallVoidMethod(
obj,
gFields.cryptoInfoSetID,
(jint)numSubSamples,
samplesOfClearDataArr.get(),
samplesOfEncryptedDataArr.get(),
- keyArray,
- ivArray,
+ keyArray.get(),
+ ivArray.get(),
mode);
- if (keyArray != NULL) {
- env->DeleteLocalRef(keyArray);
- }
- if (ivArray != NULL) {
- env->DeleteLocalRef(ivArray);
- }
// set pattern
env->CallVoidMethod(
obj,
@@ -2106,7 +2118,7 @@ static void android_media_MediaCodec_queueInputBuffer(
jlong timestampUs,
jint flags) {
ALOGV("android_media_MediaCodec_queueInputBuffer");
-
+ ScopedTrace trace(ATRACE_TAG, "MediaCodec::queueInputBuffer#jni");
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
if (codec == NULL || codec->initCheck() != OK) {
@@ -2192,6 +2204,7 @@ static void android_media_MediaCodec_queueInputBuffers(
jint index,
jobjectArray objArray) {
ALOGV("android_media_MediaCodec_queueInputBuffers");
+ ScopedTrace trace(ATRACE_TAG, "MediaCodec::queueInputBuffers#jni");
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
if (codec == NULL || codec->initCheck() != OK || objArray == NULL) {
throwExceptionAsNecessary(env, INVALID_OPERATION, codec);
@@ -2431,6 +2444,7 @@ static void android_media_MediaCodec_queueSecureInputBuffer(
jobject cryptoInfoObj,
jlong timestampUs,
jint flags) {
+ ScopedTrace trace(ATRACE_TAG, "MediaCodec::queueSecureInputBuffer#jni");
ALOGV("android_media_MediaCodec_queueSecureInputBuffer");
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
@@ -2641,6 +2655,7 @@ static void android_media_MediaCodec_queueSecureInputBuffers(
jint index,
jobjectArray bufferInfosObjs,
jobjectArray cryptoInfoObjs) {
+ ScopedTrace trace(ATRACE_TAG, "MediaCodec::queueSecureInputBuffers#jni");
ALOGV("android_media_MediaCodec_queueSecureInputBuffers");
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
@@ -2685,6 +2700,7 @@ static void android_media_MediaCodec_queueSecureInputBuffers(
}
static jobject android_media_MediaCodec_mapHardwareBuffer(JNIEnv *env, jclass, jobject bufferObj) {
+ ScopedTrace trace(ATRACE_TAG, "MediaCodec::mapHardwareBuffer#jni");
ALOGV("android_media_MediaCodec_mapHardwareBuffer");
AHardwareBuffer *hardwareBuffer = android_hardware_HardwareBuffer_getNativeHardwareBuffer(
env, bufferObj);
@@ -3028,6 +3044,7 @@ static void extractBufferFromContext(
static void android_media_MediaCodec_native_queueLinearBlock(
JNIEnv *env, jobject thiz, jint index, jobject bufferObj,
jobjectArray cryptoInfoArray, jobjectArray objArray, jobject keys, jobject values) {
+ ScopedTrace trace(ATRACE_TAG, "MediaCodec::queueLinearBlock#jni");
ALOGV("android_media_MediaCodec_native_queueLinearBlock");
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
@@ -3145,6 +3162,7 @@ static void android_media_MediaCodec_native_queueHardwareBuffer(
JNIEnv *env, jobject thiz, jint index, jobject bufferObj,
jlong presentationTimeUs, jint flags, jobject keys, jobject values) {
ALOGV("android_media_MediaCodec_native_queueHardwareBuffer");
+ ScopedTrace trace(ATRACE_TAG, "MediaCodec::queueHardwareBuffer#jni");
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
diff --git a/media/tests/aidltests/src/com/android/media/AidlConversionUnitTests.java b/media/tests/aidltests/src/com/android/media/AidlConversionUnitTests.java
index d9a1221e529c..06cf6096f4e5 100644
--- a/media/tests/aidltests/src/com/android/media/AidlConversionUnitTests.java
+++ b/media/tests/aidltests/src/com/android/media/AidlConversionUnitTests.java
@@ -472,6 +472,19 @@ public final class AidlConversionUnitTests {
}
@Test
+ public void testAudioDeviceAttributesConversion_MultichannelGroup() {
+ AudioDeviceAttributes attributes =
+ new AudioDeviceAttributes(AudioSystem.DEVICE_OUT_MULTICHANNEL_GROUP, "myAddress");
+ AudioPort port = AidlConversion.api2aidl_AudioDeviceAttributes_AudioPort(attributes);
+ assertEquals("", port.name);
+ assertEquals(0, port.extraAudioDescriptors.length);
+ assertEquals("myAddress", port.ext.getDevice().device.address.getId());
+ assertEquals(AudioDeviceDescription.CONNECTION_VIRTUAL,
+ port.ext.getDevice().device.type.connection);
+ assertEquals(AudioDeviceType.OUT_MULTICHANNEL_GROUP, port.ext.getDevice().device.type.type);
+ }
+
+ @Test
public void testAudioDeviceAttributesConversion() {
AudioDescriptor audioDescriptor1 =
AidlConversion.aidl2api_ExtraAudioDescriptor_AudioDescriptor(
diff --git a/nfc-non-updatable/flags/flags.aconfig b/nfc-non-updatable/flags/flags.aconfig
index 54ded0cddffa..eb30bbe1bfe7 100644
--- a/nfc-non-updatable/flags/flags.aconfig
+++ b/nfc-non-updatable/flags/flags.aconfig
@@ -198,10 +198,6 @@ flag {
bug: "380892385"
}
-flag {
- name: "nfc_hce_latency_events"
- is_exported: true
- namespace: "wallet_integration"
- description: "Enables tracking latency for HCE"
- bug: "379849603"
-}
+# Unless you are adding a flag for a file under nfc-non-updatable, you should
+# not add a flag here for Android 16+ targeting features. Use the flags
+# in com.android.nfc.module.flags (packages/modules/Nfc/flags) instead.
diff --git a/nfc-non-updatable/java/android/nfc/cardemulation/ApduServiceInfo.java b/nfc-non-updatable/java/android/nfc/cardemulation/ApduServiceInfo.java
index 93d6eb73dcae..e83b9f1afddb 100644
--- a/nfc-non-updatable/java/android/nfc/cardemulation/ApduServiceInfo.java
+++ b/nfc-non-updatable/java/android/nfc/cardemulation/ApduServiceInfo.java
@@ -572,8 +572,10 @@ public final class ApduServiceInfo implements Parcelable {
if (mAutoTransact.getOrDefault(plf.toUpperCase(Locale.ROOT), false)) {
return true;
}
- List<Pattern> patternMatches = mAutoTransactPatterns.keySet().stream()
- .filter(p -> p.matcher(plf).matches()).toList();
+ boolean isPattern = plf.contains("?") || plf.contains("*");
+ List<Pattern> patternMatches = mAutoTransactPatterns.keySet().stream().filter(
+ p -> isPattern ? p.toString().equals(plf) : p.matcher(plf).matches()).toList();
+
if (patternMatches == null || patternMatches.size() == 0) {
return false;
}
diff --git a/packages/CompanionDeviceManager/res/layout/activity_confirmation.xml b/packages/CompanionDeviceManager/res/layout/activity_confirmation.xml
index 40a786ed560b..0ad7f5f6dfa5 100644
--- a/packages/CompanionDeviceManager/res/layout/activity_confirmation.xml
+++ b/packages/CompanionDeviceManager/res/layout/activity_confirmation.xml
@@ -74,7 +74,7 @@
<TextView
android:id="@+id/timeout_message"
android:layout_width="match_parent"
- android:layout_height="100dp"
+ android:layout_height="match_parent"
android:visibility="gone"
style="@style/TimeoutMessage" />
@@ -98,6 +98,10 @@
<ProgressBar
android:id="@+id/progress_bar"
+ android:importantForAccessibility="no"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
style="@style/HorizontalProgressBar" />
<View
diff --git a/packages/CompanionDeviceManager/res/values-ne/strings.xml b/packages/CompanionDeviceManager/res/values-ne/strings.xml
index b363c4bdcfbb..694abdd20814 100644
--- a/packages/CompanionDeviceManager/res/values-ne/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ne/strings.xml
@@ -65,7 +65,7 @@
<string name="permission_nearby_devices" msgid="7530973297737123481">"नजिकैका डिभाइसहरू"</string>
<string name="permission_media_routing_control" msgid="5498639511586715253">"मिडिया आउटपुट बदल्नुहोस्"</string>
<string name="permission_storage" msgid="6831099350839392343">"फोटो र मिडिया"</string>
- <string name="permission_notifications" msgid="4099418516590632909">"सूचनाहरू"</string>
+ <string name="permission_notifications" msgid="4099418516590632909">"नोटिफिकेसनहरू"</string>
<string name="permission_phone_summary" msgid="8246321093970051702">"फोन कल गर्ने र व्यवस्थापन गर्ने"</string>
<string name="permission_call_logs_summary" msgid="7545243592757693321">"फोन कलको लग रिड र राइट गर्ने"</string>
<string name="permission_sms_summary" msgid="8499509535410068616">"SMS म्यासेज पठाउने र हेर्ने"</string>
diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceResources.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceResources.java
index fd771640ec09..f756a6235c14 100644
--- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceResources.java
+++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceResources.java
@@ -23,6 +23,7 @@ import static android.companion.AssociationRequest.DEVICE_PROFILE_GLASSES;
import static android.companion.AssociationRequest.DEVICE_PROFILE_NEARBY_DEVICE_STREAMING;
import static android.companion.AssociationRequest.DEVICE_PROFILE_SENSOR_DEVICE_STREAMING;
import static android.companion.AssociationRequest.DEVICE_PROFILE_WATCH;
+import static android.companion.AssociationRequest.DEVICE_PROFILE_WEARABLE_SENSING;
import static android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE;
import static java.util.Collections.unmodifiableMap;
@@ -210,6 +211,7 @@ final class CompanionDeviceResources {
set.add(DEVICE_PROFILE_AUTOMOTIVE_PROJECTION);
set.add(DEVICE_PROFILE_NEARBY_DEVICE_STREAMING);
set.add(DEVICE_PROFILE_SENSOR_DEVICE_STREAMING);
+ set.add(DEVICE_PROFILE_WEARABLE_SENSING);
set.add(null);
SUPPORTED_SELF_MANAGED_PROFILES = unmodifiableSet(set);
diff --git a/packages/CrashRecovery/framework/java/android/service/watchdog/ExplicitHealthCheckService.java b/packages/CrashRecovery/framework/java/android/service/watchdog/ExplicitHealthCheckService.java
deleted file mode 100644
index fdb0fc538fdf..000000000000
--- a/packages/CrashRecovery/framework/java/android/service/watchdog/ExplicitHealthCheckService.java
+++ /dev/null
@@ -1,359 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.service.watchdog;
-
-import static android.os.Parcelable.Creator;
-
-import android.annotation.CallbackExecutor;
-import android.annotation.FlaggedApi;
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.SdkConstant;
-import android.annotation.SuppressLint;
-import android.annotation.SystemApi;
-import android.app.Service;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.crashrecovery.flags.Flags;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.Looper;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.os.RemoteCallback;
-import android.os.RemoteException;
-import android.util.Log;
-
-import com.android.internal.util.Preconditions;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.concurrent.Executor;
-import java.util.concurrent.TimeUnit;
-import java.util.function.Consumer;
-
-/**
- * A service to provide packages supporting explicit health checks and route checks to these
- * packages on behalf of the package watchdog.
- *
- * <p>To extend this class, you must declare the service in your manifest file with the
- * {@link android.Manifest.permission#BIND_EXPLICIT_HEALTH_CHECK_SERVICE} permission,
- * and include an intent filter with the {@link #SERVICE_INTERFACE} action. In adddition,
- * your implementation must live in
- * {@link PackageManager#getServicesSystemSharedLibraryPackageName()}.
- * For example:</p>
- * <pre>
- * &lt;service android:name=".FooExplicitHealthCheckService"
- * android:exported="true"
- * android:priority="100"
- * android:permission="android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE"&gt;
- * &lt;intent-filter&gt;
- * &lt;action android:name="android.service.watchdog.ExplicitHealthCheckService" /&gt;
- * &lt;/intent-filter&gt;
- * &lt;/service&gt;
- * </pre>
- * @hide
- */
-@SystemApi
-public abstract class ExplicitHealthCheckService extends Service {
-
- private static final String TAG = "ExplicitHealthCheckService";
-
- /**
- * {@link Bundle} key for a {@link List} of {@link PackageConfig} value.
- *
- * {@hide}
- */
- public static final String EXTRA_SUPPORTED_PACKAGES =
- "android.service.watchdog.extra.supported_packages";
-
- /**
- * {@link Bundle} key for a {@link List} of {@link String} value.
- *
- * {@hide}
- */
- public static final String EXTRA_REQUESTED_PACKAGES =
- "android.service.watchdog.extra.requested_packages";
-
- /**
- * {@link Bundle} key for a {@link String} value.
- */
- @FlaggedApi(Flags.FLAG_ENABLE_CRASHRECOVERY)
- public static final String EXTRA_HEALTH_CHECK_PASSED_PACKAGE =
- "android.service.watchdog.extra.HEALTH_CHECK_PASSED_PACKAGE";
-
- /**
- * The Intent action that a service must respond to. Add it to the intent filter of the service
- * in its manifest.
- */
- @SdkConstant(SdkConstant.SdkConstantType.SERVICE_ACTION)
- public static final String SERVICE_INTERFACE =
- "android.service.watchdog.ExplicitHealthCheckService";
-
- /**
- * The permission that a service must require to ensure that only Android system can bind to it.
- * If this permission is not enforced in the AndroidManifest of the service, the system will
- * skip that service.
- */
- public static final String BIND_PERMISSION =
- "android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE";
-
- private final ExplicitHealthCheckServiceWrapper mWrapper =
- new ExplicitHealthCheckServiceWrapper();
-
- /**
- * Called when the system requests an explicit health check for {@code packageName}.
- *
- * <p> When {@code packageName} passes the check, implementors should call
- * {@link #notifyHealthCheckPassed} to inform the system.
- *
- * <p> It could take many hours before a {@code packageName} passes a check and implementors
- * should never drop requests unless {@link onCancel} is called or the service dies.
- *
- * <p> Requests should not be queued and additional calls while expecting a result for
- * {@code packageName} should have no effect.
- */
- public abstract void onRequestHealthCheck(@NonNull String packageName);
-
- /**
- * Called when the system cancels the explicit health check request for {@code packageName}.
- * Should do nothing if there are is no active request for {@code packageName}.
- */
- public abstract void onCancelHealthCheck(@NonNull String packageName);
-
- /**
- * Called when the system requests for all the packages supporting explicit health checks. The
- * system may request an explicit health check for any of these packages with
- * {@link #onRequestHealthCheck}.
- *
- * @return all packages supporting explicit health checks
- */
- @NonNull public abstract List<PackageConfig> onGetSupportedPackages();
-
- /**
- * Called when the system requests for all the packages that it has currently requested
- * an explicit health check for.
- *
- * @return all packages expecting an explicit health check result
- */
- @NonNull public abstract List<String> onGetRequestedPackages();
-
- private final Handler mHandler = Handler.createAsync(Looper.getMainLooper());
- @Nullable private Consumer<Bundle> mHealthCheckResultCallback;
- @Nullable private Executor mCallbackExecutor;
-
- @Override
- @NonNull
- public final IBinder onBind(@NonNull Intent intent) {
- return mWrapper;
- }
-
- /**
- * Sets a callback to be invoked when an explicit health check passes for a package.
- * <p>
- * The callback will receive a {@link Bundle} containing the package name that passed the
- * health check, identified by the key {@link #EXTRA_HEALTH_CHECK_PASSED_PACKAGE}.
- * <p>
- * <b>Note:</b> This API is primarily intended for testing purposes. Calling this outside of a
- * test environment will override the default callback mechanism used to notify the system
- * about health check results. Use with caution in production code.
- *
- * @param executor The executor on which the callback should be invoked. If {@code null}, the
- * callback will be executed on the main thread.
- * @param callback A callback that receives a {@link Bundle} containing the package name that
- * passed the health check.
- */
- @FlaggedApi(Flags.FLAG_ENABLE_CRASHRECOVERY)
- public final void setHealthCheckPassedCallback(@CallbackExecutor @Nullable Executor executor,
- @Nullable Consumer<Bundle> callback) {
- mCallbackExecutor = executor;
- mHealthCheckResultCallback = callback;
- }
-
- private void executeCallback(@NonNull String packageName) {
- if (mHealthCheckResultCallback != null) {
- Objects.requireNonNull(packageName,
- "Package passing explicit health check must be non-null");
- Bundle bundle = new Bundle();
- bundle.putString(EXTRA_HEALTH_CHECK_PASSED_PACKAGE, packageName);
- mHealthCheckResultCallback.accept(bundle);
- } else {
- Log.wtf(TAG, "System missed explicit health check result for " + packageName);
- }
- }
-
- /**
- * Implementors should call this to notify the system when explicit health check passes
- * for {@code packageName};
- */
- public final void notifyHealthCheckPassed(@NonNull String packageName) {
- if (mCallbackExecutor != null) {
- mCallbackExecutor.execute(() -> executeCallback(packageName));
- } else {
- mHandler.post(() -> executeCallback(packageName));
- }
- }
-
- /**
- * A PackageConfig contains a package supporting explicit health checks and the
- * timeout in {@link System#uptimeMillis} across reboots after which health
- * check requests from clients are failed.
- *
- * @hide
- */
- @SystemApi
- public static final class PackageConfig implements Parcelable {
- private static final long DEFAULT_HEALTH_CHECK_TIMEOUT_MILLIS = TimeUnit.HOURS.toMillis(1);
-
- private final String mPackageName;
- private final long mHealthCheckTimeoutMillis;
-
- /**
- * Creates a new instance.
- *
- * @param packageName the package name
- * @param durationMillis the duration in milliseconds, must be greater than or
- * equal to 0. If it is 0, it will use a system default value.
- */
- public PackageConfig(@NonNull String packageName, long healthCheckTimeoutMillis) {
- mPackageName = Preconditions.checkNotNull(packageName);
- if (healthCheckTimeoutMillis == 0) {
- mHealthCheckTimeoutMillis = DEFAULT_HEALTH_CHECK_TIMEOUT_MILLIS;
- } else {
- mHealthCheckTimeoutMillis = Preconditions.checkArgumentNonnegative(
- healthCheckTimeoutMillis);
- }
- }
-
- private PackageConfig(Parcel parcel) {
- mPackageName = parcel.readString();
- mHealthCheckTimeoutMillis = parcel.readLong();
- }
-
- /**
- * Gets the package name.
- *
- * @return the package name
- */
- public @NonNull String getPackageName() {
- return mPackageName;
- }
-
- /**
- * Gets the timeout in milliseconds to evaluate an explicit health check result after a
- * request.
- *
- * @return the duration in {@link System#uptimeMillis} across reboots
- */
- public long getHealthCheckTimeoutMillis() {
- return mHealthCheckTimeoutMillis;
- }
-
- @NonNull
- @Override
- public String toString() {
- return "PackageConfig{" + mPackageName + ", " + mHealthCheckTimeoutMillis + "}";
- }
-
- @Override
- public boolean equals(@Nullable Object other) {
- if (other == this) {
- return true;
- }
- if (!(other instanceof PackageConfig)) {
- return false;
- }
-
- PackageConfig otherInfo = (PackageConfig) other;
- return Objects.equals(otherInfo.getHealthCheckTimeoutMillis(),
- mHealthCheckTimeoutMillis)
- && Objects.equals(otherInfo.getPackageName(), mPackageName);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(mPackageName, mHealthCheckTimeoutMillis);
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @Override
- public void writeToParcel(@SuppressLint({"MissingNullability"}) Parcel parcel, int flags) {
- parcel.writeString(mPackageName);
- parcel.writeLong(mHealthCheckTimeoutMillis);
- }
-
- public static final @NonNull Creator<PackageConfig> CREATOR = new Creator<PackageConfig>() {
- @Override
- public PackageConfig createFromParcel(Parcel source) {
- return new PackageConfig(source);
- }
-
- @Override
- public PackageConfig[] newArray(int size) {
- return new PackageConfig[size];
- }
- };
- }
-
-
- private class ExplicitHealthCheckServiceWrapper extends IExplicitHealthCheckService.Stub {
- @Override
- public void setCallback(RemoteCallback callback) throws RemoteException {
- mHandler.post(() -> mHealthCheckResultCallback = callback::sendResult);
- }
-
- @Override
- public void request(String packageName) throws RemoteException {
- mHandler.post(() -> ExplicitHealthCheckService.this.onRequestHealthCheck(packageName));
- }
-
- @Override
- public void cancel(String packageName) throws RemoteException {
- mHandler.post(() -> ExplicitHealthCheckService.this.onCancelHealthCheck(packageName));
- }
-
- @Override
- public void getSupportedPackages(RemoteCallback callback) throws RemoteException {
- mHandler.post(() -> {
- List<PackageConfig> packages =
- ExplicitHealthCheckService.this.onGetSupportedPackages();
- Objects.requireNonNull(packages, "Supported package list must be non-null");
- Bundle bundle = new Bundle();
- bundle.putParcelableArrayList(EXTRA_SUPPORTED_PACKAGES, new ArrayList<>(packages));
- callback.sendResult(bundle);
- });
- }
-
- @Override
- public void getRequestedPackages(RemoteCallback callback) throws RemoteException {
- mHandler.post(() -> {
- List<String> packages =
- ExplicitHealthCheckService.this.onGetRequestedPackages();
- Objects.requireNonNull(packages, "Requested package list must be non-null");
- Bundle bundle = new Bundle();
- bundle.putStringArrayList(EXTRA_REQUESTED_PACKAGES, new ArrayList<>(packages));
- callback.sendResult(bundle);
- });
- }
- }
-}
diff --git a/packages/CrashRecovery/framework/java/android/service/watchdog/OWNERS b/packages/CrashRecovery/framework/java/android/service/watchdog/OWNERS
deleted file mode 100644
index 1c045e10c0ec..000000000000
--- a/packages/CrashRecovery/framework/java/android/service/watchdog/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-narayan@google.com
-nandana@google.com
-olilan@google.com
diff --git a/packages/CrashRecovery/services/module/java/com/android/server/ExplicitHealthCheckController.java b/packages/CrashRecovery/services/module/java/com/android/server/ExplicitHealthCheckController.java
deleted file mode 100644
index da9a13961f79..000000000000
--- a/packages/CrashRecovery/services/module/java/com/android/server/ExplicitHealthCheckController.java
+++ /dev/null
@@ -1,447 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server;
-
-import static android.service.watchdog.ExplicitHealthCheckService.EXTRA_HEALTH_CHECK_PASSED_PACKAGE;
-import static android.service.watchdog.ExplicitHealthCheckService.EXTRA_REQUESTED_PACKAGES;
-import static android.service.watchdog.ExplicitHealthCheckService.EXTRA_SUPPORTED_PACKAGES;
-import static android.service.watchdog.ExplicitHealthCheckService.PackageConfig;
-
-import android.Manifest;
-import android.annotation.MainThread;
-import android.annotation.Nullable;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.ServiceConnection;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.content.pm.ServiceInfo;
-import android.os.IBinder;
-import android.os.RemoteCallback;
-import android.os.RemoteException;
-import android.os.UserHandle;
-import android.service.watchdog.ExplicitHealthCheckService;
-import android.service.watchdog.IExplicitHealthCheckService;
-import android.text.TextUtils;
-import android.util.ArraySet;
-import android.util.Slog;
-
-import com.android.internal.annotations.GuardedBy;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
-import java.util.function.Consumer;
-
-// TODO(b/120598832): Add tests
-/**
- * Controls the connections with {@link ExplicitHealthCheckService}.
- */
-class ExplicitHealthCheckController {
- private static final String TAG = "ExplicitHealthCheckController";
- private final Object mLock = new Object();
- private final Context mContext;
-
- // Called everytime a package passes the health check, so the watchdog is notified of the
- // passing check. In practice, should never be null after it has been #setEnabled.
- // To prevent deadlocks between the controller and watchdog threads, we have
- // a lock invariant to ALWAYS acquire the PackageWatchdog#mLock before #mLock in this class.
- // It's easier to just NOT hold #mLock when calling into watchdog code on this consumer.
- @GuardedBy("mLock") @Nullable private Consumer<String> mPassedConsumer;
- // Called everytime after a successful #syncRequest call, so the watchdog can receive packages
- // supporting health checks and update its internal state. In practice, should never be null
- // after it has been #setEnabled.
- // To prevent deadlocks between the controller and watchdog threads, we have
- // a lock invariant to ALWAYS acquire the PackageWatchdog#mLock before #mLock in this class.
- // It's easier to just NOT hold #mLock when calling into watchdog code on this consumer.
- @GuardedBy("mLock") @Nullable private Consumer<List<PackageConfig>> mSupportedConsumer;
- // Called everytime we need to notify the watchdog to sync requests between itself and the
- // health check service. In practice, should never be null after it has been #setEnabled.
- // To prevent deadlocks between the controller and watchdog threads, we have
- // a lock invariant to ALWAYS acquire the PackageWatchdog#mLock before #mLock in this class.
- // It's easier to just NOT hold #mLock when calling into watchdog code on this runnable.
- @GuardedBy("mLock") @Nullable private Runnable mNotifySyncRunnable;
- // Actual binder object to the explicit health check service.
- @GuardedBy("mLock") @Nullable private IExplicitHealthCheckService mRemoteService;
- // Connection to the explicit health check service, necessary to unbind.
- // We should only try to bind if mConnection is null, non-null indicates we
- // are connected or at least connecting.
- @GuardedBy("mLock") @Nullable private ServiceConnection mConnection;
- // Bind state of the explicit health check service.
- @GuardedBy("mLock") private boolean mEnabled;
-
- ExplicitHealthCheckController(Context context) {
- mContext = context;
- }
-
- /** Enables or disables explicit health checks. */
- public void setEnabled(boolean enabled) {
- synchronized (mLock) {
- Slog.i(TAG, "Explicit health checks " + (enabled ? "enabled." : "disabled."));
- mEnabled = enabled;
- }
- }
-
- /**
- * Sets callbacks to listen to important events from the controller.
- *
- * <p> Should be called once at initialization before any other calls to the controller to
- * ensure a happens-before relationship of the set parameters and visibility on other threads.
- */
- public void setCallbacks(Consumer<String> passedConsumer,
- Consumer<List<PackageConfig>> supportedConsumer, Runnable notifySyncRunnable) {
- synchronized (mLock) {
- if (mPassedConsumer != null || mSupportedConsumer != null
- || mNotifySyncRunnable != null) {
- Slog.wtf(TAG, "Resetting health check controller callbacks");
- }
-
- mPassedConsumer = Objects.requireNonNull(passedConsumer);
- mSupportedConsumer = Objects.requireNonNull(supportedConsumer);
- mNotifySyncRunnable = Objects.requireNonNull(notifySyncRunnable);
- }
- }
-
- /**
- * Calls the health check service to request or cancel packages based on
- * {@code newRequestedPackages}.
- *
- * <p> Supported packages in {@code newRequestedPackages} that have not been previously
- * requested will be requested while supported packages not in {@code newRequestedPackages}
- * but were previously requested will be cancelled.
- *
- * <p> This handles binding and unbinding to the health check service as required.
- *
- * <p> Note, calling this may modify {@code newRequestedPackages}.
- *
- * <p> Note, this method is not thread safe, all calls should be serialized.
- */
- public void syncRequests(Set<String> newRequestedPackages) {
- boolean enabled;
- synchronized (mLock) {
- enabled = mEnabled;
- }
-
- if (!enabled) {
- Slog.i(TAG, "Health checks disabled, no supported packages");
- // Call outside lock
- mSupportedConsumer.accept(Collections.emptyList());
- return;
- }
-
- getSupportedPackages(supportedPackageConfigs -> {
- // Notify the watchdog without lock held
- mSupportedConsumer.accept(supportedPackageConfigs);
- getRequestedPackages(previousRequestedPackages -> {
- synchronized (mLock) {
- // Hold lock so requests and cancellations are sent atomically.
- // It is important we don't mix requests from multiple threads.
-
- Set<String> supportedPackages = new ArraySet<>();
- for (PackageConfig config : supportedPackageConfigs) {
- supportedPackages.add(config.getPackageName());
- }
- // Note, this may modify newRequestedPackages
- newRequestedPackages.retainAll(supportedPackages);
-
- // Cancel packages no longer requested
- actOnDifference(previousRequestedPackages,
- newRequestedPackages, p -> cancel(p));
- // Request packages not yet requested
- actOnDifference(newRequestedPackages,
- previousRequestedPackages, p -> request(p));
-
- if (newRequestedPackages.isEmpty()) {
- Slog.i(TAG, "No more health check requests, unbinding...");
- unbindService();
- return;
- }
- }
- });
- });
- }
-
- private void actOnDifference(Collection<String> collection1, Collection<String> collection2,
- Consumer<String> action) {
- Iterator<String> iterator = collection1.iterator();
- while (iterator.hasNext()) {
- String packageName = iterator.next();
- if (!collection2.contains(packageName)) {
- action.accept(packageName);
- }
- }
- }
-
- /**
- * Requests an explicit health check for {@code packageName}.
- * After this request, the callback registered on {@link #setCallbacks} can receive explicit
- * health check passed results.
- */
- private void request(String packageName) {
- synchronized (mLock) {
- if (!prepareServiceLocked("request health check for " + packageName)) {
- return;
- }
-
- Slog.i(TAG, "Requesting health check for package " + packageName);
- try {
- mRemoteService.request(packageName);
- } catch (RemoteException e) {
- Slog.w(TAG, "Failed to request health check for package " + packageName, e);
- }
- }
- }
-
- /**
- * Cancels all explicit health checks for {@code packageName}.
- * After this request, the callback registered on {@link #setCallbacks} can no longer receive
- * explicit health check passed results.
- */
- private void cancel(String packageName) {
- synchronized (mLock) {
- if (!prepareServiceLocked("cancel health check for " + packageName)) {
- return;
- }
-
- Slog.i(TAG, "Cancelling health check for package " + packageName);
- try {
- mRemoteService.cancel(packageName);
- } catch (RemoteException e) {
- // Do nothing, if the service is down, when it comes up, we will sync requests,
- // if there's some other error, retrying wouldn't fix anyways.
- Slog.w(TAG, "Failed to cancel health check for package " + packageName, e);
- }
- }
- }
-
- /**
- * Returns the packages that we can request explicit health checks for.
- * The packages will be returned to the {@code consumer}.
- */
- private void getSupportedPackages(Consumer<List<PackageConfig>> consumer) {
- synchronized (mLock) {
- if (!prepareServiceLocked("get health check supported packages")) {
- return;
- }
-
- Slog.d(TAG, "Getting health check supported packages");
- try {
- mRemoteService.getSupportedPackages(new RemoteCallback(result -> {
- List<PackageConfig> packages =
- result.getParcelableArrayList(EXTRA_SUPPORTED_PACKAGES, android.service.watchdog.ExplicitHealthCheckService.PackageConfig.class);
- Slog.i(TAG, "Explicit health check supported packages " + packages);
- consumer.accept(packages);
- }));
- } catch (RemoteException e) {
- // Request failed, treat as if all observed packages are supported, if any packages
- // expire during this period, we may incorrectly treat it as failing health checks
- // even if we don't support health checks for the package.
- Slog.w(TAG, "Failed to get health check supported packages", e);
- }
- }
- }
-
- /**
- * Returns the packages for which health checks are currently in progress.
- * The packages will be returned to the {@code consumer}.
- */
- private void getRequestedPackages(Consumer<List<String>> consumer) {
- synchronized (mLock) {
- if (!prepareServiceLocked("get health check requested packages")) {
- return;
- }
-
- Slog.d(TAG, "Getting health check requested packages");
- try {
- mRemoteService.getRequestedPackages(new RemoteCallback(result -> {
- List<String> packages = result.getStringArrayList(EXTRA_REQUESTED_PACKAGES);
- Slog.i(TAG, "Explicit health check requested packages " + packages);
- consumer.accept(packages);
- }));
- } catch (RemoteException e) {
- // Request failed, treat as if we haven't requested any packages, if any packages
- // were actually requested, they will not be cancelled now. May be cancelled later
- Slog.w(TAG, "Failed to get health check requested packages", e);
- }
- }
- }
-
- /**
- * Binds to the explicit health check service if the controller is enabled and
- * not already bound.
- */
- private void bindService() {
- synchronized (mLock) {
- if (!mEnabled || mConnection != null || mRemoteService != null) {
- if (!mEnabled) {
- Slog.i(TAG, "Not binding to service, service disabled");
- } else if (mRemoteService != null) {
- Slog.i(TAG, "Not binding to service, service already connected");
- } else {
- Slog.i(TAG, "Not binding to service, service already connecting");
- }
- return;
- }
- ComponentName component = getServiceComponentNameLocked();
- if (component == null) {
- Slog.wtf(TAG, "Explicit health check service not found");
- return;
- }
-
- Intent intent = new Intent();
- intent.setComponent(component);
- mConnection = new ServiceConnection() {
- @Override
- public void onServiceConnected(ComponentName name, IBinder service) {
- Slog.i(TAG, "Explicit health check service is connected " + name);
- initState(service);
- }
-
- @Override
- @MainThread
- public void onServiceDisconnected(ComponentName name) {
- // Service crashed or process was killed, #onServiceConnected will be called.
- // Don't need to re-bind.
- Slog.i(TAG, "Explicit health check service is disconnected " + name);
- synchronized (mLock) {
- mRemoteService = null;
- }
- }
-
- @Override
- public void onBindingDied(ComponentName name) {
- // Application hosting service probably got updated
- // Need to re-bind.
- Slog.i(TAG, "Explicit health check service binding is dead. Rebind: " + name);
- unbindService();
- bindService();
- }
-
- @Override
- public void onNullBinding(ComponentName name) {
- // Should never happen. Service returned null from #onBind.
- Slog.wtf(TAG, "Explicit health check service binding is null?? " + name);
- }
- };
-
- mContext.bindServiceAsUser(intent, mConnection,
- Context.BIND_AUTO_CREATE, UserHandle.SYSTEM);
- Slog.i(TAG, "Explicit health check service is bound");
- }
- }
-
- /** Unbinds the explicit health check service. */
- private void unbindService() {
- synchronized (mLock) {
- if (mRemoteService != null) {
- mContext.unbindService(mConnection);
- mRemoteService = null;
- mConnection = null;
- }
- Slog.i(TAG, "Explicit health check service is unbound");
- }
- }
-
- @GuardedBy("mLock")
- @Nullable
- private ServiceInfo getServiceInfoLocked() {
- final Intent intent = new Intent(ExplicitHealthCheckService.SERVICE_INTERFACE);
- final ResolveInfo resolveInfo = mContext.getPackageManager().resolveService(intent,
- PackageManager.GET_SERVICES | PackageManager.GET_META_DATA
- | PackageManager.MATCH_SYSTEM_ONLY);
- if (resolveInfo == null || resolveInfo.serviceInfo == null) {
- Slog.w(TAG, "No valid components found.");
- return null;
- }
- return resolveInfo.serviceInfo;
- }
-
- @GuardedBy("mLock")
- @Nullable
- private ComponentName getServiceComponentNameLocked() {
- final ServiceInfo serviceInfo = getServiceInfoLocked();
- if (serviceInfo == null) {
- return null;
- }
-
- final ComponentName name = new ComponentName(serviceInfo.packageName, serviceInfo.name);
- if (!Manifest.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE
- .equals(serviceInfo.permission)) {
- Slog.w(TAG, name.flattenToShortString() + " does not require permission "
- + Manifest.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE);
- return null;
- }
- return name;
- }
-
- private void initState(IBinder service) {
- synchronized (mLock) {
- if (!mEnabled) {
- Slog.w(TAG, "Attempting to connect disabled service?? Unbinding...");
- // Very unlikely, but we disabled the service after binding but before we connected
- unbindService();
- return;
- }
- mRemoteService = IExplicitHealthCheckService.Stub.asInterface(service);
- try {
- mRemoteService.setCallback(new RemoteCallback(result -> {
- String packageName = result.getString(EXTRA_HEALTH_CHECK_PASSED_PACKAGE);
- if (!TextUtils.isEmpty(packageName)) {
- if (mPassedConsumer == null) {
- Slog.wtf(TAG, "Health check passed for package " + packageName
- + "but no consumer registered.");
- } else {
- // Call without lock held
- mPassedConsumer.accept(packageName);
- }
- } else {
- Slog.wtf(TAG, "Empty package passed explicit health check?");
- }
- }));
- Slog.i(TAG, "Service initialized, syncing requests");
- } catch (RemoteException e) {
- Slog.wtf(TAG, "Could not setCallback on explicit health check service");
- }
- }
- // Calling outside lock
- mNotifySyncRunnable.run();
- }
-
- /**
- * Prepares the health check service to receive requests.
- *
- * @return {@code true} if it is ready and we can proceed with a request,
- * {@code false} otherwise. If it is not ready, and the service is enabled,
- * we will bind and the request should be automatically attempted later.
- */
- @GuardedBy("mLock")
- private boolean prepareServiceLocked(String action) {
- if (mRemoteService != null && mEnabled) {
- return true;
- }
- Slog.i(TAG, "Service not ready to " + action
- + (mEnabled ? ". Binding..." : ". Disabled"));
- if (mEnabled) {
- bindService();
- }
- return false;
- }
-}
diff --git a/packages/CrashRecovery/services/module/java/com/android/server/PackageWatchdog.java b/packages/CrashRecovery/services/module/java/com/android/server/PackageWatchdog.java
deleted file mode 100644
index e4f07f9fc213..000000000000
--- a/packages/CrashRecovery/services/module/java/com/android/server/PackageWatchdog.java
+++ /dev/null
@@ -1,2253 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server;
-
-import static android.content.Intent.ACTION_REBOOT;
-import static android.content.Intent.ACTION_SHUTDOWN;
-import static android.service.watchdog.ExplicitHealthCheckService.PackageConfig;
-import static android.util.Xml.Encoding.UTF_8;
-
-import static com.android.server.crashrecovery.CrashRecoveryUtils.dumpCrashRecoveryEvents;
-
-import static java.lang.annotation.RetentionPolicy.SOURCE;
-
-import android.annotation.CallbackExecutor;
-import android.annotation.FlaggedApi;
-import android.annotation.IntDef;
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.SuppressLint;
-import android.annotation.SystemApi;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.VersionedPackage;
-import android.crashrecovery.flags.Flags;
-import android.os.Environment;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Process;
-import android.os.SystemProperties;
-import android.provider.DeviceConfig;
-import android.sysprop.CrashRecoveryProperties;
-import android.text.TextUtils;
-import android.util.ArrayMap;
-import android.util.ArraySet;
-import android.util.AtomicFile;
-import android.util.EventLog;
-import android.util.IndentingPrintWriter;
-import android.util.LongArrayQueue;
-import android.util.Slog;
-import android.util.Xml;
-import android.util.XmlUtils;
-
-import com.android.internal.annotations.GuardedBy;
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.FastXmlSerializer;
-import com.android.modules.utils.BackgroundThread;
-
-import libcore.io.IoUtils;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-import org.xmlpull.v1.XmlSerializer;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.PrintWriter;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
-import java.util.concurrent.Executor;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Monitors the health of packages on the system and notifies interested observers when packages
- * fail. On failure, the registered observer with the least user impacting mitigation will
- * be notified.
- * @hide
- */
-@FlaggedApi(Flags.FLAG_ENABLE_CRASHRECOVERY)
-@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
-public class PackageWatchdog {
- private static final String TAG = "PackageWatchdog";
-
- static final String PROPERTY_WATCHDOG_TRIGGER_DURATION_MILLIS =
- "watchdog_trigger_failure_duration_millis";
- static final String PROPERTY_WATCHDOG_TRIGGER_FAILURE_COUNT =
- "watchdog_trigger_failure_count";
- static final String PROPERTY_WATCHDOG_EXPLICIT_HEALTH_CHECK_ENABLED =
- "watchdog_explicit_health_check_enabled";
-
- // TODO: make the following values configurable via DeviceConfig
- private static final long NATIVE_CRASH_POLLING_INTERVAL_MILLIS =
- TimeUnit.SECONDS.toMillis(30);
- private static final long NUMBER_OF_NATIVE_CRASH_POLLS = 10;
-
-
- /** Reason for package failure could not be determined. */
- public static final int FAILURE_REASON_UNKNOWN = 0;
-
- /** The package had a native crash. */
- public static final int FAILURE_REASON_NATIVE_CRASH = 1;
-
- /** The package failed an explicit health check. */
- public static final int FAILURE_REASON_EXPLICIT_HEALTH_CHECK = 2;
-
- /** The app crashed. */
- public static final int FAILURE_REASON_APP_CRASH = 3;
-
- /** The app was not responding. */
- public static final int FAILURE_REASON_APP_NOT_RESPONDING = 4;
-
- /** The device was boot looping. */
- public static final int FAILURE_REASON_BOOT_LOOP = 5;
-
- /** @hide */
- @IntDef(prefix = { "FAILURE_REASON_" }, value = {
- FAILURE_REASON_UNKNOWN,
- FAILURE_REASON_NATIVE_CRASH,
- FAILURE_REASON_EXPLICIT_HEALTH_CHECK,
- FAILURE_REASON_APP_CRASH,
- FAILURE_REASON_APP_NOT_RESPONDING,
- FAILURE_REASON_BOOT_LOOP
- })
- @Retention(RetentionPolicy.SOURCE)
- public @interface FailureReasons {}
-
- // Duration to count package failures before it resets to 0
- @VisibleForTesting
- static final int DEFAULT_TRIGGER_FAILURE_DURATION_MS =
- (int) TimeUnit.MINUTES.toMillis(1);
- // Number of package failures within the duration above before we notify observers
- @VisibleForTesting
- static final int DEFAULT_TRIGGER_FAILURE_COUNT = 5;
- @VisibleForTesting
- static final long DEFAULT_OBSERVING_DURATION_MS = TimeUnit.DAYS.toMillis(2);
- // Sliding window for tracking how many mitigation calls were made for a package.
- @VisibleForTesting
- static final long DEFAULT_DEESCALATION_WINDOW_MS = TimeUnit.HOURS.toMillis(1);
- // Whether explicit health checks are enabled or not
- private static final boolean DEFAULT_EXPLICIT_HEALTH_CHECK_ENABLED = true;
-
- @VisibleForTesting
- static final int DEFAULT_BOOT_LOOP_TRIGGER_COUNT = 5;
-
- static final long DEFAULT_BOOT_LOOP_TRIGGER_WINDOW_MS = TimeUnit.MINUTES.toMillis(10);
-
- // Time needed to apply mitigation
- private static final String MITIGATION_WINDOW_MS =
- "persist.device_config.configuration.mitigation_window_ms";
- @VisibleForTesting
- static final long DEFAULT_MITIGATION_WINDOW_MS = TimeUnit.SECONDS.toMillis(5);
-
- // Threshold level at which or above user might experience significant disruption.
- private static final String MAJOR_USER_IMPACT_LEVEL_THRESHOLD =
- "persist.device_config.configuration.major_user_impact_level_threshold";
- private static final int DEFAULT_MAJOR_USER_IMPACT_LEVEL_THRESHOLD =
- PackageHealthObserverImpact.USER_IMPACT_LEVEL_71;
-
- // Comma separated list of all packages exempt from user impact level threshold. If a package
- // in the list is crash looping, all the mitigations including factory reset will be performed.
- private static final String PACKAGES_EXEMPT_FROM_IMPACT_LEVEL_THRESHOLD =
- "persist.device_config.configuration.packages_exempt_from_impact_level_threshold";
-
- // Comma separated list of default packages exempt from user impact level threshold.
- private static final String DEFAULT_PACKAGES_EXEMPT_FROM_IMPACT_LEVEL_THRESHOLD =
- "com.android.systemui";
-
- private long mNumberOfNativeCrashPollsRemaining;
-
- private static final int DB_VERSION = 1;
- private static final String TAG_PACKAGE_WATCHDOG = "package-watchdog";
- private static final String TAG_PACKAGE = "package";
- private static final String TAG_OBSERVER = "observer";
- private static final String ATTR_VERSION = "version";
- private static final String ATTR_NAME = "name";
- private static final String ATTR_DURATION = "duration";
- private static final String ATTR_EXPLICIT_HEALTH_CHECK_DURATION = "health-check-duration";
- private static final String ATTR_PASSED_HEALTH_CHECK = "passed-health-check";
- private static final String ATTR_MITIGATION_CALLS = "mitigation-calls";
- private static final String ATTR_MITIGATION_COUNT = "mitigation-count";
-
- // A file containing information about the current mitigation count in the case of a boot loop.
- // This allows boot loop information to persist in the case of an fs-checkpoint being
- // aborted.
- private static final String METADATA_FILE = "/metadata/watchdog/mitigation_count.txt";
-
- /**
- * EventLog tags used when logging into the event log. Note the values must be sync with
- * frameworks/base/services/core/java/com/android/server/EventLogTags.logtags to get correct
- * name translation.
- */
- private static final int LOG_TAG_RESCUE_NOTE = 2900;
-
- private static final Object sPackageWatchdogLock = new Object();
- @GuardedBy("sPackageWatchdogLock")
- private static PackageWatchdog sPackageWatchdog;
-
- private static final Object sLock = new Object();
- // System server context
- private final Context mContext;
- // Handler to run short running tasks
- private final Handler mShortTaskHandler;
- // Handler for processing IO and long running tasks
- private final Handler mLongTaskHandler;
- // Contains (observer-name -> observer-handle) that have ever been registered from
- // previous boots. Observers with all packages expired are periodically pruned.
- // It is saved to disk on system shutdown and repouplated on startup so it survives reboots.
- @GuardedBy("sLock")
- private final ArrayMap<String, ObserverInternal> mAllObservers = new ArrayMap<>();
- // File containing the XML data of monitored packages /data/system/package-watchdog.xml
- private final AtomicFile mPolicyFile;
- private final ExplicitHealthCheckController mHealthCheckController;
- private final Runnable mSyncRequests = this::syncRequests;
- private final Runnable mSyncStateWithScheduledReason = this::syncStateWithScheduledReason;
- private final Runnable mSaveToFile = this::saveToFile;
- private final SystemClock mSystemClock;
- private final BootThreshold mBootThreshold;
- private final DeviceConfig.OnPropertiesChangedListener
- mOnPropertyChangedListener = this::onPropertyChanged;
-
- private final Set<String> mPackagesExemptFromImpactLevelThreshold = new ArraySet<>();
-
- // The set of packages that have been synced with the ExplicitHealthCheckController
- @GuardedBy("sLock")
- private Set<String> mRequestedHealthCheckPackages = new ArraySet<>();
- @GuardedBy("sLock")
- private boolean mIsPackagesReady;
- // Flag to control whether explicit health checks are supported or not
- @GuardedBy("sLock")
- private boolean mIsHealthCheckEnabled = DEFAULT_EXPLICIT_HEALTH_CHECK_ENABLED;
- @GuardedBy("sLock")
- private int mTriggerFailureDurationMs = DEFAULT_TRIGGER_FAILURE_DURATION_MS;
- @GuardedBy("sLock")
- private int mTriggerFailureCount = DEFAULT_TRIGGER_FAILURE_COUNT;
- // SystemClock#uptimeMillis when we last executed #syncState
- // 0 if no prune is scheduled.
- @GuardedBy("sLock")
- private long mUptimeAtLastStateSync;
- // If true, sync explicit health check packages with the ExplicitHealthCheckController.
- @GuardedBy("sLock")
- private boolean mSyncRequired = false;
-
- @GuardedBy("sLock")
- private long mLastMitigation = -1000000;
-
- @FunctionalInterface
- @VisibleForTesting
- interface SystemClock {
- long uptimeMillis();
- }
-
- private PackageWatchdog(Context context) {
- // Needs to be constructed inline
- this(context, new AtomicFile(
- new File(new File(Environment.getDataDirectory(), "system"),
- "package-watchdog.xml")),
- new Handler(Looper.myLooper()), BackgroundThread.getHandler(),
- new ExplicitHealthCheckController(context),
- android.os.SystemClock::uptimeMillis);
- }
-
- /**
- * Creates a PackageWatchdog that allows injecting dependencies.
- */
- @VisibleForTesting
- PackageWatchdog(Context context, AtomicFile policyFile, Handler shortTaskHandler,
- Handler longTaskHandler, ExplicitHealthCheckController controller,
- SystemClock clock) {
- mContext = context;
- mPolicyFile = policyFile;
- mShortTaskHandler = shortTaskHandler;
- mLongTaskHandler = longTaskHandler;
- mHealthCheckController = controller;
- mSystemClock = clock;
- mNumberOfNativeCrashPollsRemaining = NUMBER_OF_NATIVE_CRASH_POLLS;
- mBootThreshold = new BootThreshold(DEFAULT_BOOT_LOOP_TRIGGER_COUNT,
- DEFAULT_BOOT_LOOP_TRIGGER_WINDOW_MS);
-
- loadFromFile();
- sPackageWatchdog = this;
- }
-
- /**
- * Creates or gets singleton instance of PackageWatchdog.
- *
- * @param context The system server context.
- */
- public static @NonNull PackageWatchdog getInstance(@NonNull Context context) {
- synchronized (sPackageWatchdogLock) {
- if (sPackageWatchdog == null) {
- new PackageWatchdog(context);
- }
- return sPackageWatchdog;
- }
- }
-
- /**
- * Called during boot to notify when packages are ready on the device so we can start
- * binding.
- * @hide
- */
- public void onPackagesReady() {
- synchronized (sLock) {
- mIsPackagesReady = true;
- mHealthCheckController.setCallbacks(packageName -> onHealthCheckPassed(packageName),
- packages -> onSupportedPackages(packages),
- this::onSyncRequestNotified);
- setPropertyChangedListenerLocked();
- updateConfigs();
- }
- }
-
- /**
- * Registers {@code observer} to listen for package failures. Add a new ObserverInternal for
- * this observer if it does not already exist.
- * For executing mitigations observers will receive callback on the given executor.
- *
- * <p>Observers are expected to call this on boot. It does not specify any packages but
- * it will resume observing any packages requested from a previous boot.
- *
- * @param observer instance of {@link PackageHealthObserver} for observing package failures
- * and boot loops.
- * @param executor Executor for the thread on which observers would receive callbacks
- */
- public void registerHealthObserver(@NonNull @CallbackExecutor Executor executor,
- @NonNull PackageHealthObserver observer) {
- synchronized (sLock) {
- ObserverInternal internalObserver = mAllObservers.get(observer.getUniqueIdentifier());
- if (internalObserver != null) {
- internalObserver.registeredObserver = observer;
- internalObserver.observerExecutor = executor;
- } else {
- internalObserver = new ObserverInternal(observer.getUniqueIdentifier(),
- new ArrayList<>());
- internalObserver.registeredObserver = observer;
- internalObserver.observerExecutor = executor;
- mAllObservers.put(observer.getUniqueIdentifier(), internalObserver);
- syncState("added new observer");
- }
- }
- }
-
- /**
- * Starts observing the health of the {@code packages} for {@code observer}.
- * Note: Observer needs to be registered with {@link #registerHealthObserver} before calling
- * this API.
- *
- * <p>If monitoring a package supporting explicit health check, at the end of the monitoring
- * duration if {@link #onHealthCheckPassed} was never called,
- * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} will be called as if the
- * package failed.
- *
- * <p>If {@code observer} is already monitoring a package in {@code packageNames},
- * the monitoring window of that package will be reset to {@code durationMs} and the health
- * check state will be reset to a default.
- *
- * <p>The {@code observer} must be registered with {@link #registerHealthObserver} before
- * calling this method.
- *
- * @param packageNames The list of packages to check. If this is empty, the call will be a
- * no-op.
- *
- * @param timeoutMs The timeout after which Explicit Health Checks would not run. If this is
- * less than 1, a default monitoring duration 2 days will be used.
- *
- * @throws IllegalStateException if the observer was not previously registered
- */
- public void startExplicitHealthCheck(@NonNull List<String> packageNames, long timeoutMs,
- @NonNull PackageHealthObserver observer) {
- synchronized (sLock) {
- if (!mAllObservers.containsKey(observer.getUniqueIdentifier())) {
- Slog.wtf(TAG, "No observer found, need to register the observer: "
- + observer.getUniqueIdentifier());
- throw new IllegalStateException("Observer not registered");
- }
- }
- if (packageNames.isEmpty()) {
- Slog.wtf(TAG, "No packages to observe, " + observer.getUniqueIdentifier());
- return;
- }
- if (timeoutMs < 1) {
- Slog.wtf(TAG, "Invalid duration " + timeoutMs + "ms for observer "
- + observer.getUniqueIdentifier() + ". Not observing packages " + packageNames);
- timeoutMs = DEFAULT_OBSERVING_DURATION_MS;
- }
-
- List<MonitoredPackage> packages = new ArrayList<>();
- for (int i = 0; i < packageNames.size(); i++) {
- // Health checks not available yet so health check state will start INACTIVE
- MonitoredPackage pkg = newMonitoredPackage(packageNames.get(i), timeoutMs, false);
- if (pkg != null) {
- packages.add(pkg);
- } else {
- Slog.w(TAG, "Failed to create MonitoredPackage for pkg=" + packageNames.get(i));
- }
- }
-
- if (packages.isEmpty()) {
- return;
- }
-
- // Sync before we add the new packages to the observers. This will #pruneObservers,
- // causing any elapsed time to be deducted from all existing packages before we add new
- // packages. This maintains the invariant that the elapsed time for ALL (new and existing)
- // packages is the same.
- mLongTaskHandler.post(() -> {
- syncState("observing new packages");
-
- synchronized (sLock) {
- ObserverInternal oldObserver = mAllObservers.get(observer.getUniqueIdentifier());
- if (oldObserver == null) {
- Slog.d(TAG, observer.getUniqueIdentifier() + " started monitoring health "
- + "of packages " + packageNames);
- mAllObservers.put(observer.getUniqueIdentifier(),
- new ObserverInternal(observer.getUniqueIdentifier(), packages));
- } else {
- Slog.d(TAG, observer.getUniqueIdentifier() + " added the following "
- + "packages to monitor " + packageNames);
- oldObserver.updatePackagesLocked(packages);
- }
- }
-
- // Sync after we add the new packages to the observers. We may have received packges
- // requiring an earlier schedule than we are currently scheduled for.
- syncState("updated observers");
- });
-
- }
-
- /**
- * Unregisters {@code observer} from listening to package failure.
- * Additionally, this stops observing any packages that may have previously been observed
- * even from a previous boot.
- */
- public void unregisterHealthObserver(@NonNull PackageHealthObserver observer) {
- mLongTaskHandler.post(() -> {
- synchronized (sLock) {
- mAllObservers.remove(observer.getUniqueIdentifier());
- }
- syncState("unregistering observer: " + observer.getUniqueIdentifier());
- });
- }
-
- /**
- * Called when a process fails due to a crash, ANR or explicit health check.
- *
- * <p>For each package contained in the process, one registered observer with the least user
- * impact will be notified for mitigation.
- *
- * <p>This method could be called frequently if there is a severe problem on the device.
- */
- public void notifyPackageFailure(@NonNull List<VersionedPackage> packages,
- @FailureReasons int failureReason) {
- if (packages == null) {
- Slog.w(TAG, "Could not resolve a list of failing packages");
- return;
- }
- synchronized (sLock) {
- final long now = mSystemClock.uptimeMillis();
- if (Flags.recoverabilityDetection()) {
- if (now >= mLastMitigation
- && (now - mLastMitigation) < getMitigationWindowMs()) {
- Slog.i(TAG, "Skipping notifyPackageFailure mitigation");
- return;
- }
- }
- }
- mLongTaskHandler.post(() -> {
- synchronized (sLock) {
- if (mAllObservers.isEmpty()) {
- return;
- }
- boolean requiresImmediateAction = (failureReason == FAILURE_REASON_NATIVE_CRASH
- || failureReason == FAILURE_REASON_EXPLICIT_HEALTH_CHECK);
- if (requiresImmediateAction) {
- handleFailureImmediately(packages, failureReason);
- } else {
- for (int pIndex = 0; pIndex < packages.size(); pIndex++) {
- VersionedPackage versionedPackage = packages.get(pIndex);
- // Observer that will receive failure for versionedPackage
- ObserverInternal currentObserverToNotify = null;
- int currentObserverImpact = Integer.MAX_VALUE;
- MonitoredPackage currentMonitoredPackage = null;
-
- // Find observer with least user impact
- for (int oIndex = 0; oIndex < mAllObservers.size(); oIndex++) {
- ObserverInternal observer = mAllObservers.valueAt(oIndex);
- PackageHealthObserver registeredObserver = observer.registeredObserver;
- if (registeredObserver != null
- && observer.notifyPackageFailureLocked(
- versionedPackage.getPackageName())) {
- MonitoredPackage p = observer.getMonitoredPackage(
- versionedPackage.getPackageName());
- int mitigationCount = 1;
- if (p != null) {
- mitigationCount = p.getMitigationCountLocked() + 1;
- }
- int impact = registeredObserver.onHealthCheckFailed(
- versionedPackage, failureReason, mitigationCount);
- if (impact != PackageHealthObserverImpact.USER_IMPACT_LEVEL_0
- && impact < currentObserverImpact) {
- currentObserverToNotify = observer;
- currentObserverImpact = impact;
- currentMonitoredPackage = p;
- }
- }
- }
-
- // Execute action with least user impact
- if (currentObserverToNotify != null) {
- int mitigationCount;
- if (currentMonitoredPackage != null) {
- currentMonitoredPackage.noteMitigationCallLocked();
- mitigationCount =
- currentMonitoredPackage.getMitigationCountLocked();
- } else {
- mitigationCount = 1;
- }
- if (Flags.recoverabilityDetection()) {
- maybeExecute(currentObserverToNotify, versionedPackage,
- failureReason, currentObserverImpact, mitigationCount);
- } else {
- PackageHealthObserver registeredObserver =
- currentObserverToNotify.registeredObserver;
- currentObserverToNotify.observerExecutor.execute(() ->
- registeredObserver.onExecuteHealthCheckMitigation(
- versionedPackage, failureReason, mitigationCount));
- }
- }
- }
- }
- }
- });
- }
-
- /**
- * For native crashes or explicit health check failures, call directly into each observer to
- * mitigate the error without going through failure threshold logic.
- */
- @GuardedBy("sLock")
- private void handleFailureImmediately(List<VersionedPackage> packages,
- @FailureReasons int failureReason) {
- VersionedPackage failingPackage = packages.size() > 0 ? packages.get(0) : null;
- ObserverInternal currentObserverToNotify = null;
- int currentObserverImpact = Integer.MAX_VALUE;
- for (ObserverInternal observer: mAllObservers.values()) {
- PackageHealthObserver registeredObserver = observer.registeredObserver;
- if (registeredObserver != null) {
- int impact = registeredObserver.onHealthCheckFailed(
- failingPackage, failureReason, 1);
- if (impact != PackageHealthObserverImpact.USER_IMPACT_LEVEL_0
- && impact < currentObserverImpact) {
- currentObserverToNotify = observer;
- currentObserverImpact = impact;
- }
- }
- }
- if (currentObserverToNotify != null) {
- if (Flags.recoverabilityDetection()) {
- maybeExecute(currentObserverToNotify, failingPackage, failureReason,
- currentObserverImpact, /*mitigationCount=*/ 1);
- } else {
- PackageHealthObserver registeredObserver =
- currentObserverToNotify.registeredObserver;
- currentObserverToNotify.observerExecutor.execute(() ->
- registeredObserver.onExecuteHealthCheckMitigation(failingPackage,
- failureReason, 1));
-
- }
- }
- }
-
- private void maybeExecute(ObserverInternal currentObserverToNotify,
- VersionedPackage versionedPackage,
- @FailureReasons int failureReason,
- int currentObserverImpact,
- int mitigationCount) {
- if (allowMitigations(currentObserverImpact, versionedPackage)) {
- PackageHealthObserver registeredObserver;
- synchronized (sLock) {
- mLastMitigation = mSystemClock.uptimeMillis();
- registeredObserver = currentObserverToNotify.registeredObserver;
- }
- currentObserverToNotify.observerExecutor.execute(() ->
- registeredObserver.onExecuteHealthCheckMitigation(versionedPackage,
- failureReason, mitigationCount));
- }
- }
-
- private boolean allowMitigations(int currentObserverImpact,
- VersionedPackage versionedPackage) {
- return currentObserverImpact < getUserImpactLevelLimit()
- || getPackagesExemptFromImpactLevelThreshold().contains(
- versionedPackage.getPackageName());
- }
-
- private long getMitigationWindowMs() {
- return SystemProperties.getLong(MITIGATION_WINDOW_MS, DEFAULT_MITIGATION_WINDOW_MS);
- }
-
-
- /**
- * Called when the system server boots. If the system server is detected to be in a boot loop,
- * query each observer and perform the mitigation action with the lowest user impact.
- *
- * Note: PackageWatchdog considers system_server restart loop as bootloop. Full reboots
- * are not counted in bootloop.
- * @hide
- */
- @SuppressWarnings("GuardedBy")
- public void noteBoot() {
- synchronized (sLock) {
- // if boot count has reached threshold, start mitigation.
- // We wait until threshold number of restarts only for the first time. Perform
- // mitigations for every restart after that.
- boolean mitigate = mBootThreshold.incrementAndTest();
- if (mitigate) {
- if (!Flags.recoverabilityDetection()) {
- mBootThreshold.reset();
- }
- int mitigationCount = mBootThreshold.getMitigationCount() + 1;
- ObserverInternal currentObserverToNotify = null;
- int currentObserverImpact = Integer.MAX_VALUE;
- for (int i = 0; i < mAllObservers.size(); i++) {
- final ObserverInternal observer = mAllObservers.valueAt(i);
- PackageHealthObserver registeredObserver = observer.registeredObserver;
- if (registeredObserver != null) {
- int impact = Flags.recoverabilityDetection()
- ? registeredObserver.onBootLoop(
- observer.getBootMitigationCount() + 1)
- : registeredObserver.onBootLoop(mitigationCount);
- if (impact != PackageHealthObserverImpact.USER_IMPACT_LEVEL_0
- && impact < currentObserverImpact) {
- currentObserverToNotify = observer;
- currentObserverImpact = impact;
- }
- }
- }
-
- if (currentObserverToNotify != null) {
- PackageHealthObserver registeredObserver =
- currentObserverToNotify.registeredObserver;
- if (Flags.recoverabilityDetection()) {
- int currentObserverMitigationCount =
- currentObserverToNotify.getBootMitigationCount() + 1;
- currentObserverToNotify.setBootMitigationCount(
- currentObserverMitigationCount);
- saveAllObserversBootMitigationCountToMetadata(METADATA_FILE);
- currentObserverToNotify.observerExecutor
- .execute(() -> registeredObserver.onExecuteBootLoopMitigation(
- currentObserverMitigationCount));
- } else {
- mBootThreshold.setMitigationCount(mitigationCount);
- mBootThreshold.saveMitigationCountToMetadata();
- currentObserverToNotify.observerExecutor
- .execute(() -> registeredObserver.onExecuteBootLoopMitigation(
- mitigationCount));
-
- }
- }
- }
- }
- }
-
- // TODO(b/120598832): Optimize write? Maybe only write a separate smaller file? Also
- // avoid holding lock?
- // This currently adds about 7ms extra to shutdown thread
- /** @hide Writes the package information to file during shutdown. */
- public void writeNow() {
- synchronized (sLock) {
- // Must only run synchronous tasks as this runs on the ShutdownThread and no other
- // thread is guaranteed to run during shutdown.
- if (!mAllObservers.isEmpty()) {
- mLongTaskHandler.removeCallbacks(mSaveToFile);
- pruneObserversLocked();
- saveToFile();
- Slog.i(TAG, "Last write to update package durations");
- }
- }
- }
-
- /**
- * Enables or disables explicit health checks.
- * <p> If explicit health checks are enabled, the health check service is started.
- * <p> If explicit health checks are disabled, pending explicit health check requests are
- * passed and the health check service is stopped.
- */
- private void setExplicitHealthCheckEnabled(boolean enabled) {
- synchronized (sLock) {
- mIsHealthCheckEnabled = enabled;
- mHealthCheckController.setEnabled(enabled);
- mSyncRequired = true;
- // Prune to update internal state whenever health check is enabled/disabled
- syncState("health check state " + (enabled ? "enabled" : "disabled"));
- }
- }
-
- /**
- * This method should be only called on mShortTaskHandler, since it modifies
- * {@link #mNumberOfNativeCrashPollsRemaining}.
- */
- private void checkAndMitigateNativeCrashes() {
- mNumberOfNativeCrashPollsRemaining--;
- // Check if native watchdog reported a crash
- if ("1".equals(SystemProperties.get("sys.init.updatable_crashing"))) {
- // We rollback all available low impact rollbacks when crash is unattributable
- notifyPackageFailure(Collections.EMPTY_LIST, FAILURE_REASON_NATIVE_CRASH);
- // we stop polling after an attempt to execute rollback, regardless of whether the
- // attempt succeeds or not
- } else {
- if (mNumberOfNativeCrashPollsRemaining > 0) {
- mShortTaskHandler.postDelayed(() -> checkAndMitigateNativeCrashes(),
- NATIVE_CRASH_POLLING_INTERVAL_MILLIS);
- }
- }
- }
-
- /**
- * Since this method can eventually trigger a rollback, it should be called
- * only once boot has completed {@code onBootCompleted} and not earlier, because the install
- * session must be entirely completed before we try to rollback.
- * @hide
- */
- public void scheduleCheckAndMitigateNativeCrashes() {
- Slog.i(TAG, "Scheduling " + mNumberOfNativeCrashPollsRemaining + " polls to check "
- + "and mitigate native crashes");
- mShortTaskHandler.post(()->checkAndMitigateNativeCrashes());
- }
-
- private int getUserImpactLevelLimit() {
- return SystemProperties.getInt(MAJOR_USER_IMPACT_LEVEL_THRESHOLD,
- DEFAULT_MAJOR_USER_IMPACT_LEVEL_THRESHOLD);
- }
-
- private Set<String> getPackagesExemptFromImpactLevelThreshold() {
- if (mPackagesExemptFromImpactLevelThreshold.isEmpty()) {
- String packageNames = SystemProperties.get(PACKAGES_EXEMPT_FROM_IMPACT_LEVEL_THRESHOLD,
- DEFAULT_PACKAGES_EXEMPT_FROM_IMPACT_LEVEL_THRESHOLD);
- return Set.of(packageNames.split("\\s*,\\s*"));
- }
- return mPackagesExemptFromImpactLevelThreshold;
- }
-
- /**
- * Indicates that a mitigation was successfully triggered or executed during
- * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} or
- * {@link PackageHealthObserver#onExecuteBootLoopMitigation}.
- */
- public static final int MITIGATION_RESULT_SUCCESS =
- ObserverMitigationResult.MITIGATION_RESULT_SUCCESS;
-
- /**
- * Indicates that a mitigation executed during
- * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} or
- * {@link PackageHealthObserver#onExecuteBootLoopMitigation} was skipped.
- */
- public static final int MITIGATION_RESULT_SKIPPED =
- ObserverMitigationResult.MITIGATION_RESULT_SKIPPED;
-
-
- /**
- * Possible return values of the for mitigations executed during
- * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} and
- * {@link PackageHealthObserver#onExecuteBootLoopMitigation}.
- * @hide
- */
- @Retention(SOURCE)
- @IntDef(prefix = "MITIGATION_RESULT_", value = {
- ObserverMitigationResult.MITIGATION_RESULT_SUCCESS,
- ObserverMitigationResult.MITIGATION_RESULT_SKIPPED,
- })
- public @interface ObserverMitigationResult {
- int MITIGATION_RESULT_SUCCESS = 1;
- int MITIGATION_RESULT_SKIPPED = 2;
- }
-
- /**
- * The minimum value that can be returned by any observer.
- * It represents that no mitigations were available.
- */
- public static final int USER_IMPACT_THRESHOLD_NONE =
- PackageHealthObserverImpact.USER_IMPACT_LEVEL_0;
-
- /**
- * The mitigation impact beyond which the user will start noticing the mitigations.
- */
- public static final int USER_IMPACT_THRESHOLD_MEDIUM =
- PackageHealthObserverImpact.USER_IMPACT_LEVEL_20;
-
- /**
- * The mitigation impact beyond which the user impact is severely high.
- */
- public static final int USER_IMPACT_THRESHOLD_HIGH =
- PackageHealthObserverImpact.USER_IMPACT_LEVEL_71;
-
- /**
- * Possible severity values of the user impact of a
- * {@link PackageHealthObserver#onExecuteHealthCheckMitigation}.
- * @hide
- */
- @Retention(SOURCE)
- @IntDef(value = {PackageHealthObserverImpact.USER_IMPACT_LEVEL_0,
- PackageHealthObserverImpact.USER_IMPACT_LEVEL_10,
- PackageHealthObserverImpact.USER_IMPACT_LEVEL_20,
- PackageHealthObserverImpact.USER_IMPACT_LEVEL_30,
- PackageHealthObserverImpact.USER_IMPACT_LEVEL_40,
- PackageHealthObserverImpact.USER_IMPACT_LEVEL_50,
- PackageHealthObserverImpact.USER_IMPACT_LEVEL_70,
- PackageHealthObserverImpact.USER_IMPACT_LEVEL_71,
- PackageHealthObserverImpact.USER_IMPACT_LEVEL_75,
- PackageHealthObserverImpact.USER_IMPACT_LEVEL_80,
- PackageHealthObserverImpact.USER_IMPACT_LEVEL_90,
- PackageHealthObserverImpact.USER_IMPACT_LEVEL_100})
- public @interface PackageHealthObserverImpact {
- /** No action to take. */
- int USER_IMPACT_LEVEL_0 = 0;
- /* Action has low user impact, user of a device will barely notice. */
- int USER_IMPACT_LEVEL_10 = 10;
- /* Actions having medium user impact, user of a device will likely notice. */
- int USER_IMPACT_LEVEL_20 = 20;
- int USER_IMPACT_LEVEL_30 = 30;
- int USER_IMPACT_LEVEL_40 = 40;
- int USER_IMPACT_LEVEL_50 = 50;
- int USER_IMPACT_LEVEL_70 = 70;
- /* Action has high user impact, a last resort, user of a device will be very frustrated. */
- int USER_IMPACT_LEVEL_71 = 71;
- int USER_IMPACT_LEVEL_75 = 75;
- int USER_IMPACT_LEVEL_80 = 80;
- int USER_IMPACT_LEVEL_90 = 90;
- int USER_IMPACT_LEVEL_100 = 100;
- }
-
- /** Register instances of this interface to receive notifications on package failure. */
- @SuppressLint({"CallbackName"})
- public interface PackageHealthObserver {
- /**
- * Called when health check fails for the {@code versionedPackage}.
- * Note: if the returned user impact is higher than {@link #USER_IMPACT_THRESHOLD_HIGH},
- * then {@link #onExecuteHealthCheckMitigation} would be called only in severe device
- * conditions like boot-loop or network failure.
- *
- * @param versionedPackage the package that is failing. This may be null if a native
- * service is crashing.
- * @param failureReason the type of failure that is occurring.
- * @param mitigationCount the number of times mitigation has been called for this package
- * (including this time).
- *
- * @return any value greater than {@link #USER_IMPACT_THRESHOLD_NONE} to express
- * the impact of mitigation on the user in {@link #onExecuteHealthCheckMitigation}.
- * Returning {@link #USER_IMPACT_THRESHOLD_NONE} would indicate no mitigations available.
- */
- @PackageHealthObserverImpact int onHealthCheckFailed(
- @Nullable VersionedPackage versionedPackage,
- @FailureReasons int failureReason,
- int mitigationCount);
-
- /**
- * This would be called after {@link #onHealthCheckFailed}.
- * This is called only if current observer returned least impact mitigation for failed
- * health check.
- *
- * @param versionedPackage the package that is failing. This may be null if a native
- * service is crashing.
- * @param failureReason the type of failure that is occurring.
- * @param mitigationCount the number of times mitigation has been called for this package
- * (including this time).
- * @return {@link #MITIGATION_RESULT_SUCCESS} if the mitigation was successful,
- * or {@link #MITIGATION_RESULT_SKIPPED} if the mitigation was skipped.
- */
- @ObserverMitigationResult int onExecuteHealthCheckMitigation(
- @Nullable VersionedPackage versionedPackage,
- @FailureReasons int failureReason, int mitigationCount);
-
-
- /**
- * Called when the system server has booted several times within a window of time, defined
- * by {@link #mBootThreshold}
- *
- * @param mitigationCount the number of times mitigation has been attempted for this
- * boot loop (including this time).
- *
- * @return any value greater than {@link #USER_IMPACT_THRESHOLD_NONE} to express
- * the impact of mitigation on the user in {@link #onExecuteBootLoopMitigation}.
- * Returning {@link #USER_IMPACT_THRESHOLD_NONE} would indicate no mitigations available.
- */
- default @PackageHealthObserverImpact int onBootLoop(int mitigationCount) {
- return PackageHealthObserverImpact.USER_IMPACT_LEVEL_0;
- }
-
- /**
- * This would be called after {@link #onBootLoop}.
- * This is called only if current observer returned least impact mitigation for fixing
- * boot loop.
- *
- * @param mitigationCount the number of times mitigation has been attempted for this
- * boot loop (including this time).
- *
- * @return {@link #MITIGATION_RESULT_SUCCESS} if the mitigation was successful,
- * or {@link #MITIGATION_RESULT_SKIPPED} if the mitigation was skipped.
- */
- default @ObserverMitigationResult int onExecuteBootLoopMitigation(int mitigationCount) {
- return ObserverMitigationResult.MITIGATION_RESULT_SKIPPED;
- }
-
- // TODO(b/120598832): Ensure uniqueness?
- /**
- * Identifier for the observer, should not change across device updates otherwise the
- * watchdog may drop observing packages with the old name.
- */
- @NonNull String getUniqueIdentifier();
-
- /**
- * An observer will not be pruned if this is set, even if the observer is not explicitly
- * monitoring any packages.
- */
- default boolean isPersistent() {
- return false;
- }
-
- /**
- * Returns {@code true} if this observer wishes to observe the given package, {@code false}
- * otherwise.
- * Any failing package can be passed on to the observer. Currently the packages that have
- * ANRs and perform {@link android.service.watchdog.ExplicitHealthCheckService} are being
- * passed to observers in these API.
- *
- * <p> A persistent observer may choose to start observing certain failing packages, even if
- * it has not explicitly asked to watch the package with {@link #startExplicitHealthCheck}.
- */
- default boolean mayObservePackage(@NonNull String packageName) {
- return false;
- }
- }
-
- @VisibleForTesting
- long getTriggerFailureCount() {
- synchronized (sLock) {
- return mTriggerFailureCount;
- }
- }
-
- @VisibleForTesting
- long getTriggerFailureDurationMs() {
- synchronized (sLock) {
- return mTriggerFailureDurationMs;
- }
- }
-
- /**
- * Serializes and syncs health check requests with the {@link ExplicitHealthCheckController}.
- */
- private void syncRequestsAsync() {
- mShortTaskHandler.removeCallbacks(mSyncRequests);
- mShortTaskHandler.post(mSyncRequests);
- }
-
- /**
- * Syncs health check requests with the {@link ExplicitHealthCheckController}.
- * Calls to this must be serialized.
- *
- * @see #syncRequestsAsync
- */
- private void syncRequests() {
- boolean syncRequired = false;
- synchronized (sLock) {
- if (mIsPackagesReady) {
- Set<String> packages = getPackagesPendingHealthChecksLocked();
- if (mSyncRequired || !packages.equals(mRequestedHealthCheckPackages)
- || packages.isEmpty()) {
- syncRequired = true;
- mRequestedHealthCheckPackages = packages;
- }
- } // else, we will sync requests when packages become ready
- }
-
- // Call outside lock to avoid holding lock when calling into the controller.
- if (syncRequired) {
- Slog.i(TAG, "Syncing health check requests for packages: "
- + mRequestedHealthCheckPackages);
- mHealthCheckController.syncRequests(mRequestedHealthCheckPackages);
- mSyncRequired = false;
- }
- }
-
- /**
- * Updates the observers monitoring {@code packageName} that explicit health check has passed.
- *
- * <p> This update is strictly for registered observers at the time of the call
- * Observers that register after this signal will have no knowledge of prior signals and will
- * effectively behave as if the explicit health check hasn't passed for {@code packageName}.
- *
- * <p> {@code packageName} can still be considered failed if reported by
- * {@link #notifyPackageFailureLocked} before the package expires.
- *
- * <p> Triggered by components outside the system server when they are fully functional after an
- * update.
- */
- private void onHealthCheckPassed(String packageName) {
- Slog.i(TAG, "Health check passed for package: " + packageName);
- boolean isStateChanged = false;
-
- synchronized (sLock) {
- for (int observerIdx = 0; observerIdx < mAllObservers.size(); observerIdx++) {
- ObserverInternal observer = mAllObservers.valueAt(observerIdx);
- MonitoredPackage monitoredPackage = observer.getMonitoredPackage(packageName);
-
- if (monitoredPackage != null) {
- int oldState = monitoredPackage.getHealthCheckStateLocked();
- int newState = monitoredPackage.tryPassHealthCheckLocked();
- isStateChanged |= oldState != newState;
- }
- }
- }
-
- if (isStateChanged) {
- syncState("health check passed for " + packageName);
- }
- }
-
- private void onSupportedPackages(List<PackageConfig> supportedPackages) {
- boolean isStateChanged = false;
-
- Map<String, Long> supportedPackageTimeouts = new ArrayMap<>();
- Iterator<PackageConfig> it = supportedPackages.iterator();
- while (it.hasNext()) {
- PackageConfig info = it.next();
- supportedPackageTimeouts.put(info.getPackageName(), info.getHealthCheckTimeoutMillis());
- }
-
- synchronized (sLock) {
- Slog.d(TAG, "Received supported packages " + supportedPackages);
- Iterator<ObserverInternal> oit = mAllObservers.values().iterator();
- while (oit.hasNext()) {
- Iterator<MonitoredPackage> pit = oit.next().getMonitoredPackages()
- .values().iterator();
- while (pit.hasNext()) {
- MonitoredPackage monitoredPackage = pit.next();
- String packageName = monitoredPackage.getName();
- int oldState = monitoredPackage.getHealthCheckStateLocked();
- int newState;
-
- if (supportedPackageTimeouts.containsKey(packageName)) {
- // Supported packages become ACTIVE if currently INACTIVE
- newState = monitoredPackage.setHealthCheckActiveLocked(
- supportedPackageTimeouts.get(packageName));
- } else {
- // Unsupported packages are marked as PASSED unless already FAILED
- newState = monitoredPackage.tryPassHealthCheckLocked();
- }
- isStateChanged |= oldState != newState;
- }
- }
- }
-
- if (isStateChanged) {
- syncState("updated health check supported packages " + supportedPackages);
- }
- }
-
- private void onSyncRequestNotified() {
- synchronized (sLock) {
- mSyncRequired = true;
- syncRequestsAsync();
- }
- }
-
- @GuardedBy("sLock")
- private Set<String> getPackagesPendingHealthChecksLocked() {
- Set<String> packages = new ArraySet<>();
- Iterator<ObserverInternal> oit = mAllObservers.values().iterator();
- while (oit.hasNext()) {
- ObserverInternal observer = oit.next();
- Iterator<MonitoredPackage> pit =
- observer.getMonitoredPackages().values().iterator();
- while (pit.hasNext()) {
- MonitoredPackage monitoredPackage = pit.next();
- String packageName = monitoredPackage.getName();
- if (monitoredPackage.isPendingHealthChecksLocked()) {
- packages.add(packageName);
- }
- }
- }
- return packages;
- }
-
- /**
- * Syncs the state of the observers.
- *
- * <p> Prunes all observers, saves new state to disk, syncs health check requests with the
- * health check service and schedules the next state sync.
- */
- private void syncState(String reason) {
- synchronized (sLock) {
- Slog.i(TAG, "Syncing state, reason: " + reason);
- pruneObserversLocked();
-
- saveToFileAsync();
- syncRequestsAsync();
-
- // Done syncing state, schedule the next state sync
- scheduleNextSyncStateLocked();
- }
- }
-
- private void syncStateWithScheduledReason() {
- syncState("scheduled");
- }
-
- @GuardedBy("sLock")
- private void scheduleNextSyncStateLocked() {
- long durationMs = getNextStateSyncMillisLocked();
- mShortTaskHandler.removeCallbacks(mSyncStateWithScheduledReason);
- if (durationMs == Long.MAX_VALUE) {
- Slog.i(TAG, "Cancelling state sync, nothing to sync");
- mUptimeAtLastStateSync = 0;
- } else {
- mUptimeAtLastStateSync = mSystemClock.uptimeMillis();
- mShortTaskHandler.postDelayed(mSyncStateWithScheduledReason, durationMs);
- }
- }
-
- /**
- * Returns the next duration in millis to sync the watchdog state.
- *
- * @returns Long#MAX_VALUE if there are no observed packages.
- */
- @GuardedBy("sLock")
- private long getNextStateSyncMillisLocked() {
- long shortestDurationMs = Long.MAX_VALUE;
- for (int oIndex = 0; oIndex < mAllObservers.size(); oIndex++) {
- ArrayMap<String, MonitoredPackage> packages = mAllObservers.valueAt(oIndex)
- .getMonitoredPackages();
- for (int pIndex = 0; pIndex < packages.size(); pIndex++) {
- MonitoredPackage mp = packages.valueAt(pIndex);
- long duration = mp.getShortestScheduleDurationMsLocked();
- if (duration < shortestDurationMs) {
- shortestDurationMs = duration;
- }
- }
- }
- return shortestDurationMs;
- }
-
- /**
- * Removes {@code elapsedMs} milliseconds from all durations on monitored packages
- * and updates other internal state.
- */
- @GuardedBy("sLock")
- private void pruneObserversLocked() {
- long elapsedMs = mUptimeAtLastStateSync == 0
- ? 0 : mSystemClock.uptimeMillis() - mUptimeAtLastStateSync;
- if (elapsedMs <= 0) {
- Slog.i(TAG, "Not pruning observers, elapsed time: " + elapsedMs + "ms");
- return;
- }
-
- Iterator<ObserverInternal> it = mAllObservers.values().iterator();
- while (it.hasNext()) {
- ObserverInternal observer = it.next();
- Set<MonitoredPackage> failedPackages =
- observer.prunePackagesLocked(elapsedMs);
- if (!failedPackages.isEmpty()) {
- onHealthCheckFailed(observer, failedPackages);
- }
- if (observer.getMonitoredPackages().isEmpty() && (observer.registeredObserver == null
- || !observer.registeredObserver.isPersistent())) {
- Slog.i(TAG, "Discarding observer " + observer.name + ". All packages expired");
- it.remove();
- }
- }
- }
-
- private void onHealthCheckFailed(ObserverInternal observer,
- Set<MonitoredPackage> failedPackages) {
- mLongTaskHandler.post(() -> {
- synchronized (sLock) {
- PackageHealthObserver registeredObserver = observer.registeredObserver;
- if (registeredObserver != null) {
- Iterator<MonitoredPackage> it = failedPackages.iterator();
- while (it.hasNext()) {
- VersionedPackage versionedPkg = getVersionedPackage(it.next().getName());
- if (versionedPkg != null) {
- Slog.i(TAG,
- "Explicit health check failed for package " + versionedPkg);
- observer.observerExecutor.execute(() ->
- registeredObserver.onExecuteHealthCheckMitigation(versionedPkg,
- PackageWatchdog.FAILURE_REASON_EXPLICIT_HEALTH_CHECK,
- 1));
- }
- }
- }
- }
- });
- }
-
- /**
- * Gets PackageInfo for the given package. Matches any user and apex.
- *
- * @throws PackageManager.NameNotFoundException if no such package is installed.
- */
- private PackageInfo getPackageInfo(String packageName)
- throws PackageManager.NameNotFoundException {
- PackageManager pm = mContext.getPackageManager();
- try {
- // The MATCH_ANY_USER flag doesn't mix well with the MATCH_APEX
- // flag, so make two separate attempts to get the package info.
- // We don't need both flags at the same time because we assume
- // apex files are always installed for all users.
- return pm.getPackageInfo(packageName, PackageManager.MATCH_ANY_USER);
- } catch (PackageManager.NameNotFoundException e) {
- return pm.getPackageInfo(packageName, PackageManager.MATCH_APEX);
- }
- }
-
- @Nullable
- private VersionedPackage getVersionedPackage(String packageName) {
- final PackageManager pm = mContext.getPackageManager();
- if (pm == null || TextUtils.isEmpty(packageName)) {
- return null;
- }
- try {
- final long versionCode = getPackageInfo(packageName).getLongVersionCode();
- return new VersionedPackage(packageName, versionCode);
- } catch (PackageManager.NameNotFoundException e) {
- return null;
- }
- }
-
- /**
- * Loads mAllObservers from file.
- *
- * <p>Note that this is <b>not</b> thread safe and should only called be called
- * from the constructor.
- */
- private void loadFromFile() {
- InputStream infile = null;
- mAllObservers.clear();
- try {
- infile = mPolicyFile.openRead();
- final XmlPullParser parser = Xml.newPullParser();
- parser.setInput(infile, UTF_8.name());
- XmlUtils.beginDocument(parser, TAG_PACKAGE_WATCHDOG);
- int outerDepth = parser.getDepth();
- while (XmlUtils.nextElementWithin(parser, outerDepth)) {
- ObserverInternal observer = ObserverInternal.read(parser, this);
- if (observer != null) {
- mAllObservers.put(observer.name, observer);
- }
- }
- } catch (FileNotFoundException e) {
- // Nothing to monitor
- } catch (Exception e) {
- Slog.wtf(TAG, "Unable to read monitored packages, deleting file", e);
- mPolicyFile.delete();
- } finally {
- IoUtils.closeQuietly(infile);
- }
- }
-
- private void onPropertyChanged(DeviceConfig.Properties properties) {
- try {
- updateConfigs();
- } catch (Exception ignore) {
- Slog.w(TAG, "Failed to reload device config changes");
- }
- }
-
- /** Adds a {@link DeviceConfig#OnPropertiesChangedListener}. */
- private void setPropertyChangedListenerLocked() {
- DeviceConfig.addOnPropertiesChangedListener(
- DeviceConfig.NAMESPACE_ROLLBACK,
- mContext.getMainExecutor(),
- mOnPropertyChangedListener);
- }
-
- @VisibleForTesting
- void removePropertyChangedListener() {
- DeviceConfig.removeOnPropertiesChangedListener(mOnPropertyChangedListener);
- }
-
- /**
- * Health check is enabled or disabled after reading the flags
- * from DeviceConfig.
- */
- @VisibleForTesting
- void updateConfigs() {
- synchronized (sLock) {
- mTriggerFailureCount = DeviceConfig.getInt(
- DeviceConfig.NAMESPACE_ROLLBACK,
- PROPERTY_WATCHDOG_TRIGGER_FAILURE_COUNT,
- DEFAULT_TRIGGER_FAILURE_COUNT);
- if (mTriggerFailureCount <= 0) {
- mTriggerFailureCount = DEFAULT_TRIGGER_FAILURE_COUNT;
- }
-
- mTriggerFailureDurationMs = DeviceConfig.getInt(
- DeviceConfig.NAMESPACE_ROLLBACK,
- PROPERTY_WATCHDOG_TRIGGER_DURATION_MILLIS,
- DEFAULT_TRIGGER_FAILURE_DURATION_MS);
- if (mTriggerFailureDurationMs <= 0) {
- mTriggerFailureDurationMs = DEFAULT_TRIGGER_FAILURE_DURATION_MS;
- }
-
- setExplicitHealthCheckEnabled(DeviceConfig.getBoolean(
- DeviceConfig.NAMESPACE_ROLLBACK,
- PROPERTY_WATCHDOG_EXPLICIT_HEALTH_CHECK_ENABLED,
- DEFAULT_EXPLICIT_HEALTH_CHECK_ENABLED));
- }
- }
-
- /**
- * Persists mAllObservers to file. Threshold information is ignored.
- */
- private boolean saveToFile() {
- Slog.i(TAG, "Saving observer state to file");
- synchronized (sLock) {
- FileOutputStream stream;
- try {
- stream = mPolicyFile.startWrite();
- } catch (IOException e) {
- Slog.w(TAG, "Cannot update monitored packages", e);
- return false;
- }
-
- try {
- XmlSerializer out = new FastXmlSerializer();
- out.setOutput(stream, UTF_8.name());
- out.startDocument(null, true);
- out.startTag(null, TAG_PACKAGE_WATCHDOG);
- out.attribute(null, ATTR_VERSION, Integer.toString(DB_VERSION));
- for (int oIndex = 0; oIndex < mAllObservers.size(); oIndex++) {
- mAllObservers.valueAt(oIndex).writeLocked(out);
- }
- out.endTag(null, TAG_PACKAGE_WATCHDOG);
- out.endDocument();
- mPolicyFile.finishWrite(stream);
- return true;
- } catch (IOException e) {
- Slog.w(TAG, "Failed to save monitored packages, restoring backup", e);
- mPolicyFile.failWrite(stream);
- return false;
- }
- }
- }
-
- private void saveToFileAsync() {
- if (!mLongTaskHandler.hasCallbacks(mSaveToFile)) {
- mLongTaskHandler.post(mSaveToFile);
- }
- }
-
- /** @hide Convert a {@code LongArrayQueue} to a String of comma-separated values. */
- public static String longArrayQueueToString(LongArrayQueue queue) {
- if (queue.size() > 0) {
- StringBuilder sb = new StringBuilder();
- sb.append(queue.get(0));
- for (int i = 1; i < queue.size(); i++) {
- sb.append(",");
- sb.append(queue.get(i));
- }
- return sb.toString();
- }
- return "";
- }
-
- /** @hide Parse a comma-separated String of longs into a LongArrayQueue. */
- public static LongArrayQueue parseLongArrayQueue(String commaSeparatedValues) {
- LongArrayQueue result = new LongArrayQueue();
- if (!TextUtils.isEmpty(commaSeparatedValues)) {
- String[] values = commaSeparatedValues.split(",");
- for (String value : values) {
- result.addLast(Long.parseLong(value));
- }
- }
- return result;
- }
-
-
- /** Dump status of every observer in mAllObservers. */
- public void dump(@NonNull PrintWriter pw) {
- if (Flags.synchronousRebootInRescueParty() && isRecoveryTriggeredReboot()) {
- dumpInternal(pw);
- } else {
- synchronized (sLock) {
- dumpInternal(pw);
- }
- }
- }
-
- /**
- * Check if we're currently attempting to reboot during mitigation. This method must return
- * true if triggered reboot early during a boot loop, since the device will not be fully booted
- * at this time.
- */
- public static boolean isRecoveryTriggeredReboot() {
- return isFactoryResetPropertySet() || isRebootPropertySet();
- }
-
- private static boolean isFactoryResetPropertySet() {
- return CrashRecoveryProperties.attemptingFactoryReset().orElse(false);
- }
-
- private static boolean isRebootPropertySet() {
- return CrashRecoveryProperties.attemptingReboot().orElse(false);
- }
-
- private void dumpInternal(@NonNull PrintWriter pw) {
- IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ");
- ipw.println("Package Watchdog status");
- ipw.increaseIndent();
- synchronized (sLock) {
- for (String observerName : mAllObservers.keySet()) {
- ipw.println("Observer name: " + observerName);
- ipw.increaseIndent();
- ObserverInternal observerInternal = mAllObservers.get(observerName);
- observerInternal.dump(ipw);
- ipw.decreaseIndent();
- }
- }
- ipw.decreaseIndent();
- dumpCrashRecoveryEvents(ipw);
- }
-
- @VisibleForTesting
- @GuardedBy("sLock")
- void registerObserverInternal(ObserverInternal observerInternal) {
- mAllObservers.put(observerInternal.name, observerInternal);
- }
-
- /**
- * Represents an observer monitoring a set of packages along with the failure thresholds for
- * each package.
- *
- * <p> Note, the PackageWatchdog#sLock must always be held when reading or writing
- * instances of this class.
- */
- static class ObserverInternal {
- public final String name;
- @GuardedBy("sLock")
- private final ArrayMap<String, MonitoredPackage> mPackages = new ArrayMap<>();
- @Nullable
- @GuardedBy("sLock")
- public PackageHealthObserver registeredObserver;
- public Executor observerExecutor;
- private int mMitigationCount;
-
- ObserverInternal(String name, List<MonitoredPackage> packages) {
- this(name, packages, /*mitigationCount=*/ 0);
- }
-
- ObserverInternal(String name, List<MonitoredPackage> packages, int mitigationCount) {
- this.name = name;
- updatePackagesLocked(packages);
- this.mMitigationCount = mitigationCount;
- }
-
- /**
- * Writes important {@link MonitoredPackage} details for this observer to file.
- * Does not persist any package failure thresholds.
- */
- @GuardedBy("sLock")
- public boolean writeLocked(XmlSerializer out) {
- try {
- out.startTag(null, TAG_OBSERVER);
- out.attribute(null, ATTR_NAME, name);
- if (Flags.recoverabilityDetection()) {
- out.attribute(null, ATTR_MITIGATION_COUNT, Integer.toString(mMitigationCount));
- }
- for (int i = 0; i < mPackages.size(); i++) {
- MonitoredPackage p = mPackages.valueAt(i);
- p.writeLocked(out);
- }
- out.endTag(null, TAG_OBSERVER);
- return true;
- } catch (IOException e) {
- Slog.w(TAG, "Cannot save observer", e);
- return false;
- }
- }
-
- public int getBootMitigationCount() {
- return mMitigationCount;
- }
-
- public void setBootMitigationCount(int mitigationCount) {
- mMitigationCount = mitigationCount;
- }
-
- @GuardedBy("sLock")
- public void updatePackagesLocked(List<MonitoredPackage> packages) {
- for (int pIndex = 0; pIndex < packages.size(); pIndex++) {
- MonitoredPackage p = packages.get(pIndex);
- MonitoredPackage existingPackage = getMonitoredPackage(p.getName());
- if (existingPackage != null) {
- existingPackage.updateHealthCheckDuration(p.mDurationMs);
- } else {
- putMonitoredPackage(p);
- }
- }
- }
-
- /**
- * Reduces the monitoring durations of all packages observed by this observer by
- * {@code elapsedMs}. If any duration is less than 0, the package is removed from
- * observation. If any health check duration is less than 0, the health check result
- * is evaluated.
- *
- * @return a {@link Set} of packages that were removed from the observer without explicit
- * health check passing, or an empty list if no package expired for which an explicit health
- * check was still pending
- */
- @GuardedBy("sLock")
- private Set<MonitoredPackage> prunePackagesLocked(long elapsedMs) {
- Set<MonitoredPackage> failedPackages = new ArraySet<>();
- Iterator<MonitoredPackage> it = mPackages.values().iterator();
- while (it.hasNext()) {
- MonitoredPackage p = it.next();
- int oldState = p.getHealthCheckStateLocked();
- int newState = p.handleElapsedTimeLocked(elapsedMs);
- if (oldState != HealthCheckState.FAILED
- && newState == HealthCheckState.FAILED) {
- Slog.i(TAG, "Package " + p.getName() + " failed health check");
- failedPackages.add(p);
- }
- if (p.isExpiredLocked()) {
- it.remove();
- }
- }
- return failedPackages;
- }
-
- /**
- * Increments failure counts of {@code packageName}.
- * @returns {@code true} if failure threshold is exceeded, {@code false} otherwise
- * @hide
- */
- @GuardedBy("sLock")
- public boolean notifyPackageFailureLocked(String packageName) {
- if (getMonitoredPackage(packageName) == null && registeredObserver.isPersistent()
- && registeredObserver.mayObservePackage(packageName)) {
- putMonitoredPackage(sPackageWatchdog.newMonitoredPackage(
- packageName, DEFAULT_OBSERVING_DURATION_MS, false));
- }
- MonitoredPackage p = getMonitoredPackage(packageName);
- if (p != null) {
- return p.onFailureLocked();
- }
- return false;
- }
-
- /**
- * Returns the map of packages monitored by this observer.
- *
- * @return a mapping of package names to {@link MonitoredPackage} objects.
- */
- @GuardedBy("sLock")
- public ArrayMap<String, MonitoredPackage> getMonitoredPackages() {
- return mPackages;
- }
-
- /**
- * Returns the {@link MonitoredPackage} associated with a given package name if the
- * package is being monitored by this observer.
- *
- * @param packageName: the name of the package.
- * @return the {@link MonitoredPackage} object associated with the package name if one
- * exists, {@code null} otherwise.
- */
- @GuardedBy("sLock")
- @Nullable
- public MonitoredPackage getMonitoredPackage(String packageName) {
- return mPackages.get(packageName);
- }
-
- /**
- * Associates a {@link MonitoredPackage} with the observer.
- *
- * @param p: the {@link MonitoredPackage} to store.
- */
- @GuardedBy("sLock")
- public void putMonitoredPackage(MonitoredPackage p) {
- mPackages.put(p.getName(), p);
- }
-
- /**
- * Returns one ObserverInternal from the {@code parser} and advances its state.
- *
- * <p>Note that this method is <b>not</b> thread safe. It should only be called from
- * #loadFromFile which in turn is only called on construction of the
- * singleton PackageWatchdog.
- **/
- public static ObserverInternal read(XmlPullParser parser, PackageWatchdog watchdog) {
- String observerName = null;
- int observerMitigationCount = 0;
- if (TAG_OBSERVER.equals(parser.getName())) {
- observerName = parser.getAttributeValue(null, ATTR_NAME);
- if (TextUtils.isEmpty(observerName)) {
- Slog.wtf(TAG, "Unable to read observer name");
- return null;
- }
- }
- List<MonitoredPackage> packages = new ArrayList<>();
- int innerDepth = parser.getDepth();
- try {
- if (Flags.recoverabilityDetection()) {
- try {
- observerMitigationCount = Integer.parseInt(
- parser.getAttributeValue(null, ATTR_MITIGATION_COUNT));
- } catch (Exception e) {
- Slog.i(
- TAG,
- "ObserverInternal mitigation count was not present.");
- }
- }
- while (XmlUtils.nextElementWithin(parser, innerDepth)) {
- if (TAG_PACKAGE.equals(parser.getName())) {
- try {
- MonitoredPackage pkg = watchdog.parseMonitoredPackage(parser);
- if (pkg != null) {
- packages.add(pkg);
- }
- } catch (NumberFormatException e) {
- Slog.wtf(TAG, "Skipping package for observer " + observerName, e);
- continue;
- }
- }
- }
- } catch (XmlPullParserException | IOException e) {
- Slog.wtf(TAG, "Unable to read observer " + observerName, e);
- return null;
- }
- if (packages.isEmpty()) {
- return null;
- }
- return new ObserverInternal(observerName, packages, observerMitigationCount);
- }
-
- /** Dumps information about this observer and the packages it watches. */
- public void dump(IndentingPrintWriter pw) {
- boolean isPersistent = registeredObserver != null && registeredObserver.isPersistent();
- pw.println("Persistent: " + isPersistent);
- for (String packageName : mPackages.keySet()) {
- MonitoredPackage p = getMonitoredPackage(packageName);
- pw.println(packageName + ": ");
- pw.increaseIndent();
- pw.println("# Failures: " + p.mFailureHistory.size());
- pw.println("Monitoring duration remaining: " + p.mDurationMs + "ms");
- pw.println("Explicit health check duration: " + p.mHealthCheckDurationMs + "ms");
- pw.println("Health check state: " + p.toString(p.mHealthCheckState));
- pw.decreaseIndent();
- }
- }
- }
-
- /** @hide */
- @Retention(SOURCE)
- @IntDef(value = {
- HealthCheckState.ACTIVE,
- HealthCheckState.INACTIVE,
- HealthCheckState.PASSED,
- HealthCheckState.FAILED})
- public @interface HealthCheckState {
- // The package has not passed health check but has requested a health check
- int ACTIVE = 0;
- // The package has not passed health check and has not requested a health check
- int INACTIVE = 1;
- // The package has passed health check
- int PASSED = 2;
- // The package has failed health check
- int FAILED = 3;
- }
-
- MonitoredPackage newMonitoredPackage(
- String name, long durationMs, boolean hasPassedHealthCheck) {
- return newMonitoredPackage(name, durationMs, Long.MAX_VALUE, hasPassedHealthCheck,
- new LongArrayQueue());
- }
-
- MonitoredPackage newMonitoredPackage(String name, long durationMs, long healthCheckDurationMs,
- boolean hasPassedHealthCheck, LongArrayQueue mitigationCalls) {
- return new MonitoredPackage(name, durationMs, healthCheckDurationMs,
- hasPassedHealthCheck, mitigationCalls);
- }
-
- MonitoredPackage parseMonitoredPackage(XmlPullParser parser)
- throws XmlPullParserException {
- String packageName = parser.getAttributeValue(null, ATTR_NAME);
- long duration = Long.parseLong(parser.getAttributeValue(null, ATTR_DURATION));
- long healthCheckDuration = Long.parseLong(parser.getAttributeValue(null,
- ATTR_EXPLICIT_HEALTH_CHECK_DURATION));
- boolean hasPassedHealthCheck = Boolean.parseBoolean(parser.getAttributeValue(null,
- ATTR_PASSED_HEALTH_CHECK));
- LongArrayQueue mitigationCalls = parseLongArrayQueue(
- parser.getAttributeValue(null, ATTR_MITIGATION_CALLS));
- return newMonitoredPackage(packageName,
- duration, healthCheckDuration, hasPassedHealthCheck, mitigationCalls);
- }
-
- /**
- * Represents a package and its health check state along with the time
- * it should be monitored for.
- *
- * <p> Note, the PackageWatchdog#sLock must always be held when reading or writing
- * instances of this class.
- */
- class MonitoredPackage {
- private final String mPackageName;
- // Times when package failures happen sorted in ascending order
- @GuardedBy("sLock")
- private final LongArrayQueue mFailureHistory = new LongArrayQueue();
- // Times when an observer was called to mitigate this package's failure. Sorted in
- // ascending order.
- @GuardedBy("sLock")
- private final LongArrayQueue mMitigationCalls;
- // One of STATE_[ACTIVE|INACTIVE|PASSED|FAILED]. Updated on construction and after
- // methods that could change the health check state: handleElapsedTimeLocked and
- // tryPassHealthCheckLocked
- private int mHealthCheckState = HealthCheckState.INACTIVE;
- // Whether an explicit health check has passed.
- // This value in addition with mHealthCheckDurationMs determines the health check state
- // of the package, see #getHealthCheckStateLocked
- @GuardedBy("sLock")
- private boolean mHasPassedHealthCheck;
- // System uptime duration to monitor package.
- @GuardedBy("sLock")
- private long mDurationMs;
- // System uptime duration to check the result of an explicit health check
- // Initially, MAX_VALUE until we get a value from the health check service
- // and request health checks.
- // This value in addition with mHasPassedHealthCheck determines the health check state
- // of the package, see #getHealthCheckStateLocked
- @GuardedBy("sLock")
- private long mHealthCheckDurationMs = Long.MAX_VALUE;
-
- MonitoredPackage(String packageName, long durationMs,
- long healthCheckDurationMs, boolean hasPassedHealthCheck,
- LongArrayQueue mitigationCalls) {
- mPackageName = packageName;
- mDurationMs = durationMs;
- mHealthCheckDurationMs = healthCheckDurationMs;
- mHasPassedHealthCheck = hasPassedHealthCheck;
- mMitigationCalls = mitigationCalls;
- updateHealthCheckStateLocked();
- }
-
- /** Writes the salient fields to disk using {@code out}.
- * @hide
- */
- @GuardedBy("sLock")
- public void writeLocked(XmlSerializer out) throws IOException {
- out.startTag(null, TAG_PACKAGE);
- out.attribute(null, ATTR_NAME, getName());
- out.attribute(null, ATTR_DURATION, Long.toString(mDurationMs));
- out.attribute(null, ATTR_EXPLICIT_HEALTH_CHECK_DURATION,
- Long.toString(mHealthCheckDurationMs));
- out.attribute(null, ATTR_PASSED_HEALTH_CHECK, Boolean.toString(mHasPassedHealthCheck));
- LongArrayQueue normalizedCalls = normalizeMitigationCalls();
- out.attribute(null, ATTR_MITIGATION_CALLS, longArrayQueueToString(normalizedCalls));
- out.endTag(null, TAG_PACKAGE);
- }
-
- /**
- * Increment package failures or resets failure count depending on the last package failure.
- *
- * @return {@code true} if failure count exceeds a threshold, {@code false} otherwise
- */
- @GuardedBy("sLock")
- public boolean onFailureLocked() {
- // Sliding window algorithm: find out if there exists a window containing failures >=
- // mTriggerFailureCount.
- final long now = mSystemClock.uptimeMillis();
- mFailureHistory.addLast(now);
- while (now - mFailureHistory.peekFirst() > mTriggerFailureDurationMs) {
- // Prune values falling out of the window
- mFailureHistory.removeFirst();
- }
- boolean failed = mFailureHistory.size() >= mTriggerFailureCount;
- if (failed) {
- mFailureHistory.clear();
- }
- return failed;
- }
-
- /**
- * Notes the timestamp of a mitigation call into the observer.
- */
- @GuardedBy("sLock")
- public void noteMitigationCallLocked() {
- mMitigationCalls.addLast(mSystemClock.uptimeMillis());
- }
-
- /**
- * Prunes any mitigation calls outside of the de-escalation window, and returns the
- * number of calls that are in the window afterwards.
- *
- * @return the number of mitigation calls made in the de-escalation window.
- */
- @GuardedBy("sLock")
- public int getMitigationCountLocked() {
- try {
- final long now = mSystemClock.uptimeMillis();
- while (now - mMitigationCalls.peekFirst() > DEFAULT_DEESCALATION_WINDOW_MS) {
- mMitigationCalls.removeFirst();
- }
- } catch (NoSuchElementException ignore) {
- }
-
- return mMitigationCalls.size();
- }
-
- /**
- * Before writing to disk, make the mitigation call timestamps relative to the current
- * system uptime. This is because they need to be relative to the uptime which will reset
- * at the next boot.
- *
- * @return a LongArrayQueue of the mitigation calls relative to the current system uptime.
- */
- @GuardedBy("sLock")
- public LongArrayQueue normalizeMitigationCalls() {
- LongArrayQueue normalized = new LongArrayQueue();
- final long now = mSystemClock.uptimeMillis();
- for (int i = 0; i < mMitigationCalls.size(); i++) {
- normalized.addLast(mMitigationCalls.get(i) - now);
- }
- return normalized;
- }
-
- /**
- * Sets the initial health check duration.
- *
- * @return the new health check state
- */
- @GuardedBy("sLock")
- public int setHealthCheckActiveLocked(long initialHealthCheckDurationMs) {
- if (initialHealthCheckDurationMs <= 0) {
- Slog.wtf(TAG, "Cannot set non-positive health check duration "
- + initialHealthCheckDurationMs + "ms for package " + getName()
- + ". Using total duration " + mDurationMs + "ms instead");
- initialHealthCheckDurationMs = mDurationMs;
- }
- if (mHealthCheckState == HealthCheckState.INACTIVE) {
- // Transitions to ACTIVE
- mHealthCheckDurationMs = initialHealthCheckDurationMs;
- }
- return updateHealthCheckStateLocked();
- }
-
- /**
- * Updates the monitoring durations of the package.
- *
- * @return the new health check state
- */
- @GuardedBy("sLock")
- public int handleElapsedTimeLocked(long elapsedMs) {
- if (elapsedMs <= 0) {
- Slog.w(TAG, "Cannot handle non-positive elapsed time for package " + getName());
- return mHealthCheckState;
- }
- // Transitions to FAILED if now <= 0 and health check not passed
- mDurationMs -= elapsedMs;
- if (mHealthCheckState == HealthCheckState.ACTIVE) {
- // We only update health check durations if we have #setHealthCheckActiveLocked
- // This ensures we don't leave the INACTIVE state for an unexpected elapsed time
- // Transitions to FAILED if now <= 0 and health check not passed
- mHealthCheckDurationMs -= elapsedMs;
- }
- return updateHealthCheckStateLocked();
- }
-
- /** Explicitly update the monitoring duration of the package. */
- @GuardedBy("sLock")
- public void updateHealthCheckDuration(long newDurationMs) {
- mDurationMs = newDurationMs;
- }
-
- /**
- * Marks the health check as passed and transitions to {@link HealthCheckState.PASSED}
- * if not yet {@link HealthCheckState.FAILED}.
- *
- * @return the new {@link HealthCheckState health check state}
- */
- @GuardedBy("sLock")
- @HealthCheckState
- public int tryPassHealthCheckLocked() {
- if (mHealthCheckState != HealthCheckState.FAILED) {
- // FAILED is a final state so only pass if we haven't failed
- // Transition to PASSED
- mHasPassedHealthCheck = true;
- }
- return updateHealthCheckStateLocked();
- }
-
- /** Returns the monitored package name. */
- private String getName() {
- return mPackageName;
- }
-
- /**
- * Returns the current {@link HealthCheckState health check state}.
- */
- @GuardedBy("sLock")
- @HealthCheckState
- public int getHealthCheckStateLocked() {
- return mHealthCheckState;
- }
-
- /**
- * Returns the shortest duration before the package should be scheduled for a prune.
- *
- * @return the duration or {@link Long#MAX_VALUE} if the package should not be scheduled
- */
- @GuardedBy("sLock")
- public long getShortestScheduleDurationMsLocked() {
- // Consider health check duration only if #isPendingHealthChecksLocked is true
- return Math.min(toPositive(mDurationMs),
- isPendingHealthChecksLocked()
- ? toPositive(mHealthCheckDurationMs) : Long.MAX_VALUE);
- }
-
- /**
- * Returns {@code true} if the total duration left to monitor the package is less than or
- * equal to 0 {@code false} otherwise.
- */
- @GuardedBy("sLock")
- public boolean isExpiredLocked() {
- return mDurationMs <= 0;
- }
-
- /**
- * Returns {@code true} if the package, {@link #getName} is expecting health check results
- * {@code false} otherwise.
- */
- @GuardedBy("sLock")
- public boolean isPendingHealthChecksLocked() {
- return mHealthCheckState == HealthCheckState.ACTIVE
- || mHealthCheckState == HealthCheckState.INACTIVE;
- }
-
- /**
- * Updates the health check state based on {@link #mHasPassedHealthCheck}
- * and {@link #mHealthCheckDurationMs}.
- *
- * @return the new {@link HealthCheckState health check state}
- */
- @GuardedBy("sLock")
- @HealthCheckState
- private int updateHealthCheckStateLocked() {
- int oldState = mHealthCheckState;
- if (mHasPassedHealthCheck) {
- // Set final state first to avoid ambiguity
- mHealthCheckState = HealthCheckState.PASSED;
- } else if (mHealthCheckDurationMs <= 0 || mDurationMs <= 0) {
- // Set final state first to avoid ambiguity
- mHealthCheckState = HealthCheckState.FAILED;
- } else if (mHealthCheckDurationMs == Long.MAX_VALUE) {
- mHealthCheckState = HealthCheckState.INACTIVE;
- } else {
- mHealthCheckState = HealthCheckState.ACTIVE;
- }
-
- if (oldState != mHealthCheckState) {
- Slog.i(TAG, "Updated health check state for package " + getName() + ": "
- + toString(oldState) + " -> " + toString(mHealthCheckState));
- }
- return mHealthCheckState;
- }
-
- /** Returns a {@link String} representation of the current health check state. */
- private String toString(@HealthCheckState int state) {
- switch (state) {
- case HealthCheckState.ACTIVE:
- return "ACTIVE";
- case HealthCheckState.INACTIVE:
- return "INACTIVE";
- case HealthCheckState.PASSED:
- return "PASSED";
- case HealthCheckState.FAILED:
- return "FAILED";
- default:
- return "UNKNOWN";
- }
- }
-
- /** Returns {@code value} if it is greater than 0 or {@link Long#MAX_VALUE} otherwise. */
- private long toPositive(long value) {
- return value > 0 ? value : Long.MAX_VALUE;
- }
-
- /** Compares the equality of this object with another {@link MonitoredPackage}. */
- @VisibleForTesting
- boolean isEqualTo(MonitoredPackage pkg) {
- return (getName().equals(pkg.getName()))
- && mDurationMs == pkg.mDurationMs
- && mHasPassedHealthCheck == pkg.mHasPassedHealthCheck
- && mHealthCheckDurationMs == pkg.mHealthCheckDurationMs
- && (mMitigationCalls.toString()).equals(pkg.mMitigationCalls.toString());
- }
- }
-
- @GuardedBy("sLock")
- @SuppressWarnings("GuardedBy")
- void saveAllObserversBootMitigationCountToMetadata(String filePath) {
- HashMap<String, Integer> bootMitigationCounts = new HashMap<>();
- for (int i = 0; i < mAllObservers.size(); i++) {
- final ObserverInternal observer = mAllObservers.valueAt(i);
- bootMitigationCounts.put(observer.name, observer.getBootMitigationCount());
- }
-
- FileOutputStream fileStream = null;
- ObjectOutputStream objectStream = null;
- try {
- fileStream = new FileOutputStream(new File(filePath));
- objectStream = new ObjectOutputStream(fileStream);
- objectStream.writeObject(bootMitigationCounts);
- objectStream.flush();
- } catch (Exception e) {
- Slog.i(TAG, "Could not save observers metadata to file: " + e);
- return;
- } finally {
- IoUtils.closeQuietly(objectStream);
- IoUtils.closeQuietly(fileStream);
- }
- }
-
- /**
- * Handles the thresholding logic for system server boots.
- */
- class BootThreshold {
-
- private final int mBootTriggerCount;
- private final long mTriggerWindow;
-
- BootThreshold(int bootTriggerCount, long triggerWindow) {
- this.mBootTriggerCount = bootTriggerCount;
- this.mTriggerWindow = triggerWindow;
- }
-
- public void reset() {
- setStart(0);
- setCount(0);
- }
-
- protected int getCount() {
- return CrashRecoveryProperties.rescueBootCount().orElse(0);
- }
-
- protected void setCount(int count) {
- CrashRecoveryProperties.rescueBootCount(count);
- }
-
- public long getStart() {
- return CrashRecoveryProperties.rescueBootStart().orElse(0L);
- }
-
- public int getMitigationCount() {
- return CrashRecoveryProperties.bootMitigationCount().orElse(0);
- }
-
- public void setStart(long start) {
- CrashRecoveryProperties.rescueBootStart(getStartTime(start));
- }
-
- public void setMitigationStart(long start) {
- CrashRecoveryProperties.bootMitigationStart(getStartTime(start));
- }
-
- public long getMitigationStart() {
- return CrashRecoveryProperties.bootMitigationStart().orElse(0L);
- }
-
- public void setMitigationCount(int count) {
- CrashRecoveryProperties.bootMitigationCount(count);
- }
-
- private static long constrain(long amount, long low, long high) {
- return amount < low ? low : (amount > high ? high : amount);
- }
-
- public long getStartTime(long start) {
- final long now = mSystemClock.uptimeMillis();
- return constrain(start, 0, now);
- }
-
- public void saveMitigationCountToMetadata() {
- try (BufferedWriter writer = new BufferedWriter(new FileWriter(METADATA_FILE))) {
- writer.write(String.valueOf(getMitigationCount()));
- } catch (Exception e) {
- Slog.e(TAG, "Could not save metadata to file: " + e);
- }
- }
-
- public void readMitigationCountFromMetadataIfNecessary() {
- File bootPropsFile = new File(METADATA_FILE);
- if (bootPropsFile.exists()) {
- try (BufferedReader reader = new BufferedReader(new FileReader(METADATA_FILE))) {
- String mitigationCount = reader.readLine();
- setMitigationCount(Integer.parseInt(mitigationCount));
- bootPropsFile.delete();
- } catch (Exception e) {
- Slog.i(TAG, "Could not read metadata file: " + e);
- }
- }
- }
-
-
- /** Increments the boot counter, and returns whether the device is bootlooping. */
- @GuardedBy("sLock")
- public boolean incrementAndTest() {
- if (Flags.recoverabilityDetection()) {
- readAllObserversBootMitigationCountIfNecessary(METADATA_FILE);
- } else {
- readMitigationCountFromMetadataIfNecessary();
- }
-
- final long now = mSystemClock.uptimeMillis();
- if (now - getStart() < 0) {
- Slog.e(TAG, "Window was less than zero. Resetting start to current time.");
- setStart(now);
- setMitigationStart(now);
- }
- if (now - getMitigationStart() > DEFAULT_DEESCALATION_WINDOW_MS) {
- setMitigationStart(now);
- if (Flags.recoverabilityDetection()) {
- resetAllObserversBootMitigationCount();
- } else {
- setMitigationCount(0);
- }
- }
- final long window = now - getStart();
- if (window >= mTriggerWindow) {
- setCount(1);
- setStart(now);
- return false;
- } else {
- int count = getCount() + 1;
- setCount(count);
- EventLog.writeEvent(LOG_TAG_RESCUE_NOTE, Process.ROOT_UID, count, window);
- if (Flags.recoverabilityDetection()) {
- // After a reboot (e.g. by WARM_REBOOT or mainline rollback) we apply
- // mitigations without waiting for DEFAULT_BOOT_LOOP_TRIGGER_COUNT.
- return (count >= mBootTriggerCount)
- || (performedMitigationsDuringWindow() && count > 1);
- }
- return count >= mBootTriggerCount;
- }
- }
-
- @GuardedBy("sLock")
- private boolean performedMitigationsDuringWindow() {
- for (ObserverInternal observerInternal: mAllObservers.values()) {
- if (observerInternal.getBootMitigationCount() > 0) {
- return true;
- }
- }
- return false;
- }
-
- @GuardedBy("sLock")
- private void resetAllObserversBootMitigationCount() {
- for (int i = 0; i < mAllObservers.size(); i++) {
- final ObserverInternal observer = mAllObservers.valueAt(i);
- observer.setBootMitigationCount(0);
- }
- saveAllObserversBootMitigationCountToMetadata(METADATA_FILE);
- }
-
- @GuardedBy("sLock")
- @SuppressWarnings("GuardedBy")
- void readAllObserversBootMitigationCountIfNecessary(String filePath) {
- File metadataFile = new File(filePath);
- if (metadataFile.exists()) {
- FileInputStream fileStream = null;
- ObjectInputStream objectStream = null;
- HashMap<String, Integer> bootMitigationCounts = null;
- try {
- fileStream = new FileInputStream(metadataFile);
- objectStream = new ObjectInputStream(fileStream);
- bootMitigationCounts =
- (HashMap<String, Integer>) objectStream.readObject();
- } catch (Exception e) {
- Slog.i(TAG, "Could not read observer metadata file: " + e);
- return;
- } finally {
- IoUtils.closeQuietly(objectStream);
- IoUtils.closeQuietly(fileStream);
- }
-
- if (bootMitigationCounts == null || bootMitigationCounts.isEmpty()) {
- Slog.i(TAG, "No observer in metadata file");
- return;
- }
- for (int i = 0; i < mAllObservers.size(); i++) {
- final ObserverInternal observer = mAllObservers.valueAt(i);
- if (bootMitigationCounts.containsKey(observer.name)) {
- observer.setBootMitigationCount(
- bootMitigationCounts.get(observer.name));
- }
- }
- }
- }
- }
-
- /**
- * Register broadcast receiver for shutdown.
- * We would save the observer state to persist across boots.
- *
- * @hide
- */
- public void registerShutdownBroadcastReceiver() {
- BroadcastReceiver shutdownEventReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- // Only write if intent is relevant to device reboot or shutdown.
- String intentAction = intent.getAction();
- if (ACTION_REBOOT.equals(intentAction)
- || ACTION_SHUTDOWN.equals(intentAction)) {
- writeNow();
- }
- }
- };
-
- // Setup receiver for device reboots or shutdowns.
- IntentFilter filter = new IntentFilter(ACTION_REBOOT);
- filter.addAction(ACTION_SHUTDOWN);
- mContext.registerReceiverForAllUsers(shutdownEventReceiver, filter, null,
- /* run on main thread */ null);
- }
-}
diff --git a/packages/CrashRecovery/services/module/java/com/android/server/RescueParty.java b/packages/CrashRecovery/services/module/java/com/android/server/RescueParty.java
deleted file mode 100644
index 846da194b3c3..000000000000
--- a/packages/CrashRecovery/services/module/java/com/android/server/RescueParty.java
+++ /dev/null
@@ -1,861 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server;
-
-import static com.android.server.PackageWatchdog.MITIGATION_RESULT_SKIPPED;
-import static com.android.server.PackageWatchdog.MITIGATION_RESULT_SUCCESS;
-import static com.android.server.crashrecovery.CrashRecoveryUtils.logCrashRecoveryEvent;
-
-import android.annotation.IntDef;
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.VersionedPackage;
-import android.crashrecovery.flags.Flags;
-import android.os.Build;
-import android.os.PowerManager;
-import android.os.RecoverySystem;
-import android.os.SystemClock;
-import android.os.SystemProperties;
-import android.provider.Settings;
-import android.sysprop.CrashRecoveryProperties;
-import android.text.TextUtils;
-import android.util.EventLog;
-import android.util.FileUtils;
-import android.util.Log;
-import android.util.Slog;
-
-import com.android.internal.annotations.GuardedBy;
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.server.PackageWatchdog.FailureReasons;
-import com.android.server.PackageWatchdog.PackageHealthObserver;
-import com.android.server.PackageWatchdog.PackageHealthObserverImpact;
-import com.android.server.crashrecovery.proto.CrashRecoveryStatsLog;
-
-import java.io.File;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Utilities to help rescue the system from crash loops. Callers are expected to
- * report boot events and persistent app crashes, and if they happen frequently
- * enough this class will slowly escalate through several rescue operations
- * before finally rebooting and prompting the user if they want to wipe data as
- * a last resort.
- *
- * @hide
- */
-public class RescueParty {
- @VisibleForTesting
- static final String PROP_ENABLE_RESCUE = "persist.sys.enable_rescue";
- @VisibleForTesting
- static final int LEVEL_NONE = 0;
- @VisibleForTesting
- static final int LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS = 1;
- @VisibleForTesting
- static final int LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES = 2;
- @VisibleForTesting
- static final int LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS = 3;
- @VisibleForTesting
- static final int LEVEL_WARM_REBOOT = 4;
- @VisibleForTesting
- static final int LEVEL_FACTORY_RESET = 5;
- @VisibleForTesting
- static final int RESCUE_LEVEL_NONE = 0;
- @VisibleForTesting
- static final int RESCUE_LEVEL_SCOPED_DEVICE_CONFIG_RESET = 1;
- @VisibleForTesting
- static final int RESCUE_LEVEL_ALL_DEVICE_CONFIG_RESET = 2;
- @VisibleForTesting
- static final int RESCUE_LEVEL_WARM_REBOOT = 3;
- @VisibleForTesting
- static final int RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS = 4;
- @VisibleForTesting
- static final int RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES = 5;
- @VisibleForTesting
- static final int RESCUE_LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS = 6;
- @VisibleForTesting
- static final int RESCUE_LEVEL_FACTORY_RESET = 7;
-
- @IntDef(prefix = { "RESCUE_LEVEL_" }, value = {
- RESCUE_LEVEL_NONE,
- RESCUE_LEVEL_SCOPED_DEVICE_CONFIG_RESET,
- RESCUE_LEVEL_ALL_DEVICE_CONFIG_RESET,
- RESCUE_LEVEL_WARM_REBOOT,
- RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS,
- RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES,
- RESCUE_LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS,
- RESCUE_LEVEL_FACTORY_RESET
- })
- @Retention(RetentionPolicy.SOURCE)
- @interface RescueLevels {}
-
- @VisibleForTesting
- static final String RESCUE_NON_REBOOT_LEVEL_LIMIT = "persist.sys.rescue_non_reboot_level_limit";
- @VisibleForTesting
- static final int DEFAULT_RESCUE_NON_REBOOT_LEVEL_LIMIT = RESCUE_LEVEL_WARM_REBOOT - 1;
- @VisibleForTesting
- static final String TAG = "RescueParty";
- @VisibleForTesting
- static final long DEFAULT_OBSERVING_DURATION_MS = TimeUnit.DAYS.toMillis(2);
- @VisibleForTesting
- static final int DEVICE_CONFIG_RESET_MODE = Settings.RESET_MODE_TRUSTED_DEFAULTS;
- // The DeviceConfig namespace containing all RescueParty switches.
- @VisibleForTesting
- static final String NAMESPACE_CONFIGURATION = "configuration";
- @VisibleForTesting
- static final String NAMESPACE_TO_PACKAGE_MAPPING_FLAG =
- "namespace_to_package_mapping";
- @VisibleForTesting
- static final long DEFAULT_FACTORY_RESET_THROTTLE_DURATION_MIN = 1440;
-
- private static final String NAME = "rescue-party-observer";
-
- private static final String PROP_DISABLE_RESCUE = "persist.sys.disable_rescue";
- private static final String PROP_VIRTUAL_DEVICE = "ro.hardware.virtual_device";
- private static final String PROP_DEVICE_CONFIG_DISABLE_FLAG =
- "persist.device_config.configuration.disable_rescue_party";
- private static final String PROP_DISABLE_FACTORY_RESET_FLAG =
- "persist.device_config.configuration.disable_rescue_party_factory_reset";
- private static final String PROP_THROTTLE_DURATION_MIN_FLAG =
- "persist.device_config.configuration.rescue_party_throttle_duration_min";
-
- private static final int PERSISTENT_MASK = ApplicationInfo.FLAG_PERSISTENT
- | ApplicationInfo.FLAG_SYSTEM;
-
- /**
- * EventLog tags used when logging into the event log. Note the values must be sync with
- * frameworks/base/services/core/java/com/android/server/EventLogTags.logtags to get correct
- * name translation.
- */
- private static final int LOG_TAG_RESCUE_SUCCESS = 2902;
- private static final int LOG_TAG_RESCUE_FAILURE = 2903;
-
- /** Register the Rescue Party observer as a Package Watchdog health observer */
- public static void registerHealthObserver(Context context) {
- PackageWatchdog.getInstance(context).registerHealthObserver(
- context.getMainExecutor(), RescuePartyObserver.getInstance(context));
- }
-
- private static boolean isDisabled() {
- // Check if we're explicitly enabled for testing
- if (SystemProperties.getBoolean(PROP_ENABLE_RESCUE, false)) {
- return false;
- }
-
- // We're disabled if the DeviceConfig disable flag is set to true.
- // This is in case that an emergency rollback of the feature is needed.
- if (SystemProperties.getBoolean(PROP_DEVICE_CONFIG_DISABLE_FLAG, false)) {
- Slog.v(TAG, "Disabled because of DeviceConfig flag");
- return true;
- }
-
- // We're disabled on all engineering devices
- if (Build.TYPE.equals("eng")) {
- Slog.v(TAG, "Disabled because of eng build");
- return true;
- }
-
- // We're disabled on userdebug devices connected over USB, since that's
- // a decent signal that someone is actively trying to debug the device,
- // or that it's in a lab environment.
- if (Build.TYPE.equals("userdebug") && isUsbActive()) {
- Slog.v(TAG, "Disabled because of active USB connection");
- return true;
- }
-
- // One last-ditch check
- if (SystemProperties.getBoolean(PROP_DISABLE_RESCUE, false)) {
- Slog.v(TAG, "Disabled because of manual property");
- return true;
- }
-
- return false;
- }
-
- /**
- * Check if we're currently attempting to reboot for a factory reset. This method must
- * return true if RescueParty tries to reboot early during a boot loop, since the device
- * will not be fully booted at this time.
- */
- public static boolean isRecoveryTriggeredReboot() {
- return isFactoryResetPropertySet() || isRebootPropertySet();
- }
-
- static boolean isFactoryResetPropertySet() {
- return CrashRecoveryProperties.attemptingFactoryReset().orElse(false);
- }
-
- static boolean isRebootPropertySet() {
- return CrashRecoveryProperties.attemptingReboot().orElse(false);
- }
-
- protected static long getLastFactoryResetTimeMs() {
- return CrashRecoveryProperties.lastFactoryResetTimeMs().orElse(0L);
- }
-
- protected static int getMaxRescueLevelAttempted() {
- return CrashRecoveryProperties.maxRescueLevelAttempted().orElse(LEVEL_NONE);
- }
-
- protected static void setFactoryResetProperty(boolean value) {
- CrashRecoveryProperties.attemptingFactoryReset(value);
- }
- protected static void setRebootProperty(boolean value) {
- CrashRecoveryProperties.attemptingReboot(value);
- }
-
- protected static void setLastFactoryResetTimeMs(long value) {
- CrashRecoveryProperties.lastFactoryResetTimeMs(value);
- }
-
- protected static void setMaxRescueLevelAttempted(int level) {
- CrashRecoveryProperties.maxRescueLevelAttempted(level);
- }
-
- @VisibleForTesting
- static long getElapsedRealtime() {
- return SystemClock.elapsedRealtime();
- }
-
- private static int getMaxRescueLevel(boolean mayPerformReboot) {
- if (Flags.recoverabilityDetection()) {
- if (!mayPerformReboot
- || SystemProperties.getBoolean(PROP_DISABLE_FACTORY_RESET_FLAG, false)) {
- return SystemProperties.getInt(RESCUE_NON_REBOOT_LEVEL_LIMIT,
- DEFAULT_RESCUE_NON_REBOOT_LEVEL_LIMIT);
- }
- return RESCUE_LEVEL_FACTORY_RESET;
- } else {
- if (!mayPerformReboot
- || SystemProperties.getBoolean(PROP_DISABLE_FACTORY_RESET_FLAG, false)) {
- return LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS;
- }
- return LEVEL_FACTORY_RESET;
- }
- }
-
- private static int getMaxRescueLevel() {
- if (!SystemProperties.getBoolean(PROP_DISABLE_FACTORY_RESET_FLAG, false)) {
- return Level.factoryReset();
- }
- return Level.reboot();
- }
-
- /**
- * Get the rescue level to perform if this is the n-th attempt at mitigating failure.
- *
- * @param mitigationCount: the mitigation attempt number (1 = first attempt etc.)
- * @param mayPerformReboot: whether or not a reboot and factory reset may be performed
- * for the given failure.
- * @return the rescue level for the n-th mitigation attempt.
- */
- private static int getRescueLevel(int mitigationCount, boolean mayPerformReboot) {
- if (!Flags.deprecateFlagsAndSettingsResets()) {
- if (mitigationCount == 1) {
- return LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS;
- } else if (mitigationCount == 2) {
- return LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES;
- } else if (mitigationCount == 3) {
- return LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS;
- } else if (mitigationCount == 4) {
- return Math.min(getMaxRescueLevel(mayPerformReboot), LEVEL_WARM_REBOOT);
- } else if (mitigationCount >= 5) {
- return Math.min(getMaxRescueLevel(mayPerformReboot), LEVEL_FACTORY_RESET);
- } else {
- Slog.w(TAG, "Expected positive mitigation count, was " + mitigationCount);
- return LEVEL_NONE;
- }
- } else {
- if (mitigationCount == 1) {
- return Level.reboot();
- } else if (mitigationCount >= 2) {
- return Math.min(getMaxRescueLevel(), Level.factoryReset());
- } else {
- Slog.w(TAG, "Expected positive mitigation count, was " + mitigationCount);
- return LEVEL_NONE;
- }
- }
- }
-
- /**
- * Get the rescue level to perform if this is the n-th attempt at mitigating failure.
- * When failedPackage is null then 1st and 2nd mitigation counts are redundant (scoped and
- * all device config reset). Behaves as if one mitigation attempt was already done.
- *
- * @param mitigationCount the mitigation attempt number (1 = first attempt etc.).
- * @param mayPerformReboot whether or not a reboot and factory reset may be performed
- * for the given failure.
- * @param failedPackage in case of bootloop this is null.
- * @return the rescue level for the n-th mitigation attempt.
- */
- private static @RescueLevels int getRescueLevel(int mitigationCount, boolean mayPerformReboot,
- @Nullable VersionedPackage failedPackage) {
- // Skipping RESCUE_LEVEL_SCOPED_DEVICE_CONFIG_RESET since it's not defined without a failed
- // package.
- if (failedPackage == null && mitigationCount > 0) {
- mitigationCount += 1;
- }
- if (mitigationCount == 1) {
- return RESCUE_LEVEL_SCOPED_DEVICE_CONFIG_RESET;
- } else if (mitigationCount == 2) {
- return RESCUE_LEVEL_ALL_DEVICE_CONFIG_RESET;
- } else if (mitigationCount == 3) {
- return Math.min(getMaxRescueLevel(mayPerformReboot), RESCUE_LEVEL_WARM_REBOOT);
- } else if (mitigationCount == 4) {
- return Math.min(getMaxRescueLevel(mayPerformReboot),
- RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS);
- } else if (mitigationCount == 5) {
- return Math.min(getMaxRescueLevel(mayPerformReboot),
- RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES);
- } else if (mitigationCount == 6) {
- return Math.min(getMaxRescueLevel(mayPerformReboot),
- RESCUE_LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS);
- } else if (mitigationCount >= 7) {
- return Math.min(getMaxRescueLevel(mayPerformReboot), RESCUE_LEVEL_FACTORY_RESET);
- } else {
- return RESCUE_LEVEL_NONE;
- }
- }
-
- /**
- * Get the rescue level to perform if this is the n-th attempt at mitigating failure.
- *
- * @param mitigationCount the mitigation attempt number (1 = first attempt etc.).
- * @return the rescue level for the n-th mitigation attempt.
- */
- private static @RescueLevels int getRescueLevel(int mitigationCount) {
- if (mitigationCount == 1) {
- return Level.reboot();
- } else if (mitigationCount >= 2) {
- return Math.min(getMaxRescueLevel(), Level.factoryReset());
- } else {
- return Level.none();
- }
- }
-
- private static void executeRescueLevel(Context context, @Nullable String failedPackage,
- int level) {
- Slog.w(TAG, "Attempting rescue level " + levelToString(level));
- try {
- executeRescueLevelInternal(context, level, failedPackage);
- EventLog.writeEvent(LOG_TAG_RESCUE_SUCCESS, level);
- String successMsg = "Finished rescue level " + levelToString(level);
- if (!TextUtils.isEmpty(failedPackage)) {
- successMsg += " for package " + failedPackage;
- }
- logCrashRecoveryEvent(Log.DEBUG, successMsg);
- } catch (Throwable t) {
- logRescueException(level, failedPackage, t);
- }
- }
-
- private static void executeRescueLevelInternal(Context context, int level, @Nullable
- String failedPackage) throws Exception {
- if (Flags.recoverabilityDetection()) {
- executeRescueLevelInternalNew(context, level, failedPackage);
- } else {
- executeRescueLevelInternalOld(context, level, failedPackage);
- }
- }
-
- private static void executeRescueLevelInternalOld(Context context, int level, @Nullable
- String failedPackage) throws Exception {
- 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;
- switch (level) {
- case LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS:
- break;
- case LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES:
- break;
- case LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS:
- break;
- case LEVEL_WARM_REBOOT:
- executeWarmReboot(context, level, failedPackage);
- break;
- case LEVEL_FACTORY_RESET:
- // Before the completion of Reboot, if any crash happens then PackageWatchdog
- // escalates to next level i.e. factory reset, as they happen in separate threads.
- // Adding a check to prevent factory reset to execute before above reboot completes.
- // Note: this reboot property is not persistent resets after reboot is completed.
- if (isRebootPropertySet()) {
- return;
- }
- executeFactoryReset(context, level, failedPackage);
- break;
- }
-
- if (res != null) {
- throw res;
- }
- }
-
- private static void executeRescueLevelInternalNew(Context context, @RescueLevels int level,
- @Nullable String failedPackage) throws Exception {
- CrashRecoveryStatsLog.write(CrashRecoveryStatsLog.RESCUE_PARTY_RESET_REPORTED,
- level, levelToString(level));
- switch (level) {
- case RESCUE_LEVEL_SCOPED_DEVICE_CONFIG_RESET:
- break;
- case RESCUE_LEVEL_ALL_DEVICE_CONFIG_RESET:
- break;
- case RESCUE_LEVEL_WARM_REBOOT:
- executeWarmReboot(context, level, failedPackage);
- break;
- case RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS:
- // do nothing
- break;
- case RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES:
- // do nothing
- break;
- case RESCUE_LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS:
- // do nothing
- break;
- case RESCUE_LEVEL_FACTORY_RESET:
- // Before the completion of Reboot, if any crash happens then PackageWatchdog
- // escalates to next level i.e. factory reset, as they happen in separate threads.
- // Adding a check to prevent factory reset to execute before above reboot completes.
- // Note: this reboot property is not persistent resets after reboot is completed.
- if (isRebootPropertySet()) {
- return;
- }
- executeFactoryReset(context, level, failedPackage);
- break;
- }
- }
-
- private static void executeWarmReboot(Context context, int level,
- @Nullable String failedPackage) {
- if (Flags.deprecateFlagsAndSettingsResets()) {
- if (shouldThrottleReboot()) {
- return;
- }
- }
-
- // Request the reboot from a separate thread to avoid deadlock on PackageWatchdog
- // when device shutting down.
- setRebootProperty(true);
-
- if (Flags.synchronousRebootInRescueParty()) {
- try {
- PowerManager pm = context.getSystemService(PowerManager.class);
- if (pm != null) {
- pm.reboot(TAG);
- }
- } catch (Throwable t) {
- logRescueException(level, failedPackage, t);
- }
- } else {
- Runnable runnable = () -> {
- try {
- PowerManager pm = context.getSystemService(PowerManager.class);
- if (pm != null) {
- pm.reboot(TAG);
- }
- } catch (Throwable t) {
- logRescueException(level, failedPackage, t);
- }
- };
- Thread thread = new Thread(runnable);
- thread.start();
- }
- }
-
- private static void executeFactoryReset(Context context, int level,
- @Nullable String failedPackage) {
- if (Flags.deprecateFlagsAndSettingsResets()) {
- if (shouldThrottleReboot()) {
- return;
- }
- }
- setFactoryResetProperty(true);
- long now = System.currentTimeMillis();
- setLastFactoryResetTimeMs(now);
-
- if (Flags.synchronousRebootInRescueParty()) {
- try {
- RecoverySystem.rebootPromptAndWipeUserData(context, TAG + "," + failedPackage);
- } catch (Throwable t) {
- logRescueException(level, failedPackage, t);
- }
- } else {
- Runnable runnable = new Runnable() {
- @Override
- public void run() {
- try {
- RecoverySystem.rebootPromptAndWipeUserData(context,
- TAG + "," + failedPackage);
- } catch (Throwable t) {
- logRescueException(level, failedPackage, t);
- }
- }
- };
- Thread thread = new Thread(runnable);
- thread.start();
- }
- }
-
-
- private static String getCompleteMessage(Throwable t) {
- final StringBuilder builder = new StringBuilder();
- builder.append(t.getMessage());
- while ((t = t.getCause()) != null) {
- builder.append(": ").append(t.getMessage());
- }
- return builder.toString();
- }
-
- private static void logRescueException(int level, @Nullable String failedPackageName,
- Throwable t) {
- final String msg = getCompleteMessage(t);
- EventLog.writeEvent(LOG_TAG_RESCUE_FAILURE, level, msg);
- String failureMsg = "Failed rescue level " + levelToString(level);
- if (!TextUtils.isEmpty(failedPackageName)) {
- failureMsg += " for package " + failedPackageName;
- }
- logCrashRecoveryEvent(Log.ERROR, failureMsg + ": " + msg);
- }
-
- private static int mapRescueLevelToUserImpact(int rescueLevel) {
- if (Flags.recoverabilityDetection()) {
- switch (rescueLevel) {
- case RESCUE_LEVEL_SCOPED_DEVICE_CONFIG_RESET:
- return PackageHealthObserverImpact.USER_IMPACT_LEVEL_10;
- case RESCUE_LEVEL_ALL_DEVICE_CONFIG_RESET:
- return PackageHealthObserverImpact.USER_IMPACT_LEVEL_40;
- case RESCUE_LEVEL_WARM_REBOOT:
- return PackageHealthObserverImpact.USER_IMPACT_LEVEL_50;
- case RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS:
- return PackageHealthObserverImpact.USER_IMPACT_LEVEL_71;
- case RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES:
- return PackageHealthObserverImpact.USER_IMPACT_LEVEL_75;
- case RESCUE_LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS:
- return PackageHealthObserverImpact.USER_IMPACT_LEVEL_80;
- case RESCUE_LEVEL_FACTORY_RESET:
- return PackageHealthObserverImpact.USER_IMPACT_LEVEL_100;
- default:
- return PackageHealthObserverImpact.USER_IMPACT_LEVEL_0;
- }
- } else {
- switch (rescueLevel) {
- case LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS:
- case LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES:
- return PackageHealthObserverImpact.USER_IMPACT_LEVEL_10;
- case LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS:
- case LEVEL_WARM_REBOOT:
- return PackageHealthObserverImpact.USER_IMPACT_LEVEL_50;
- case LEVEL_FACTORY_RESET:
- return PackageHealthObserverImpact.USER_IMPACT_LEVEL_100;
- default:
- return PackageHealthObserverImpact.USER_IMPACT_LEVEL_0;
- }
- }
- }
-
- /**
- * Handle mitigation action for package failures. This observer will be register to Package
- * Watchdog and will receive calls about package failures. This observer is persistent so it
- * may choose to mitigate failures for packages it has not explicitly asked to observe.
- */
- public static class RescuePartyObserver implements PackageHealthObserver {
-
- private final Context mContext;
- private final Map<String, Set<String>> mCallingPackageNamespaceSetMap = new HashMap<>();
- private final Map<String, Set<String>> mNamespaceCallingPackageSetMap = new HashMap<>();
-
- @GuardedBy("RescuePartyObserver.class")
- static RescuePartyObserver sRescuePartyObserver;
-
- private RescuePartyObserver(Context context) {
- mContext = context;
- }
-
- /** Creates or gets singleton instance of RescueParty. */
- public static RescuePartyObserver getInstance(Context context) {
- synchronized (RescuePartyObserver.class) {
- if (sRescuePartyObserver == null) {
- sRescuePartyObserver = new RescuePartyObserver(context);
- }
- return sRescuePartyObserver;
- }
- }
-
- /** Gets singleton instance. It returns null if the instance is not created yet.*/
- @Nullable
- public static RescuePartyObserver getInstanceIfCreated() {
- synchronized (RescuePartyObserver.class) {
- return sRescuePartyObserver;
- }
- }
-
- @VisibleForTesting
- static void reset() {
- synchronized (RescuePartyObserver.class) {
- sRescuePartyObserver = null;
- }
- }
-
- @Override
- public int onHealthCheckFailed(@Nullable VersionedPackage failedPackage,
- @FailureReasons int failureReason, int mitigationCount) {
- int impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_0;
- if (!isDisabled() && (failureReason == PackageWatchdog.FAILURE_REASON_APP_CRASH
- || failureReason == PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING)) {
- if (Flags.recoverabilityDetection()) {
- if (!Flags.deprecateFlagsAndSettingsResets()) {
- impact = mapRescueLevelToUserImpact(getRescueLevel(mitigationCount,
- mayPerformReboot(failedPackage), failedPackage));
- } else {
- impact = mapRescueLevelToUserImpact(getRescueLevel(mitigationCount));
- }
- } else {
- impact = mapRescueLevelToUserImpact(getRescueLevel(mitigationCount,
- mayPerformReboot(failedPackage)));
- }
- }
-
- Slog.i(TAG, "Checking available remediations for health check failure."
- + " failedPackage: "
- + (failedPackage == null ? null : failedPackage.getPackageName())
- + " failureReason: " + failureReason
- + " available impact: " + impact);
- return impact;
- }
-
- @Override
- public int onExecuteHealthCheckMitigation(@Nullable VersionedPackage failedPackage,
- @FailureReasons int failureReason, int mitigationCount) {
- if (isDisabled()) {
- return MITIGATION_RESULT_SKIPPED;
- }
- Slog.i(TAG, "Executing remediation."
- + " failedPackage: "
- + (failedPackage == null ? null : failedPackage.getPackageName())
- + " failureReason: " + failureReason
- + " mitigationCount: " + mitigationCount);
- if (failureReason == PackageWatchdog.FAILURE_REASON_APP_CRASH
- || failureReason == PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING) {
- final int level;
- if (Flags.recoverabilityDetection()) {
- if (!Flags.deprecateFlagsAndSettingsResets()) {
- level = getRescueLevel(mitigationCount, mayPerformReboot(failedPackage),
- failedPackage);
- } else {
- level = getRescueLevel(mitigationCount);
- }
- } else {
- level = getRescueLevel(mitigationCount, mayPerformReboot(failedPackage));
- }
- executeRescueLevel(mContext,
- failedPackage == null ? null : failedPackage.getPackageName(), level);
- return MITIGATION_RESULT_SUCCESS;
- } else {
- return MITIGATION_RESULT_SKIPPED;
- }
- }
-
- @Override
- public boolean isPersistent() {
- return true;
- }
-
- @Override
- public boolean mayObservePackage(String packageName) {
- PackageManager pm = mContext.getPackageManager();
- try {
- // A package is a module if this is non-null
- if (pm.getModuleInfo(packageName, 0) != null) {
- return true;
- }
- } catch (PackageManager.NameNotFoundException | IllegalStateException ignore) {
- }
-
- return isPersistentSystemApp(packageName);
- }
-
- @Override
- public int onBootLoop(int mitigationCount) {
- if (isDisabled()) {
- return PackageHealthObserverImpact.USER_IMPACT_LEVEL_0;
- }
- if (Flags.recoverabilityDetection()) {
- if (!Flags.deprecateFlagsAndSettingsResets()) {
- return mapRescueLevelToUserImpact(getRescueLevel(mitigationCount,
- true, /*failedPackage=*/ null));
- } else {
- return mapRescueLevelToUserImpact(getRescueLevel(mitigationCount));
- }
- } else {
- return mapRescueLevelToUserImpact(getRescueLevel(mitigationCount, true));
- }
- }
-
- @Override
- public int onExecuteBootLoopMitigation(int mitigationCount) {
- if (isDisabled()) {
- return MITIGATION_RESULT_SKIPPED;
- }
- boolean mayPerformReboot = !shouldThrottleReboot();
- final int level;
- if (Flags.recoverabilityDetection()) {
- if (!Flags.deprecateFlagsAndSettingsResets()) {
- level = getRescueLevel(mitigationCount, mayPerformReboot,
- /*failedPackage=*/ null);
- } else {
- level = getRescueLevel(mitigationCount);
- }
- } else {
- level = getRescueLevel(mitigationCount, mayPerformReboot);
- }
- executeRescueLevel(mContext, /*failedPackage=*/ null, level);
- return MITIGATION_RESULT_SUCCESS;
- }
-
- @Override
- public String getUniqueIdentifier() {
- return NAME;
- }
-
- /**
- * Returns {@code true} if the failing package is non-null and performing a reboot or
- * prompting a factory reset is an acceptable mitigation strategy for the package's
- * failure, {@code false} otherwise.
- */
- private boolean mayPerformReboot(@Nullable VersionedPackage failingPackage) {
- if (failingPackage == null) {
- return false;
- }
- if (shouldThrottleReboot()) {
- return false;
- }
-
- return isPersistentSystemApp(failingPackage.getPackageName());
- }
-
- private boolean isPersistentSystemApp(@NonNull String packageName) {
- PackageManager pm = mContext.getPackageManager();
- try {
- ApplicationInfo info = pm.getApplicationInfo(packageName, 0);
- return (info.flags & PERSISTENT_MASK) == PERSISTENT_MASK;
- } catch (PackageManager.NameNotFoundException e) {
- return false;
- }
- }
-
- private synchronized Set<String> getCallingPackagesSet(String namespace) {
- return mNamespaceCallingPackageSetMap.get(namespace);
- }
- }
-
- /**
- * Returns {@code true} if Rescue Party is allowed to attempt a reboot or factory reset.
- * Will return {@code false} if a factory reset was already offered recently.
- */
- private static boolean shouldThrottleReboot() {
- Long lastResetTime = getLastFactoryResetTimeMs();
- long now = System.currentTimeMillis();
- long throttleDurationMin = SystemProperties.getLong(PROP_THROTTLE_DURATION_MIN_FLAG,
- DEFAULT_FACTORY_RESET_THROTTLE_DURATION_MIN);
- return now < lastResetTime + TimeUnit.MINUTES.toMillis(throttleDurationMin);
- }
-
- /**
- * Hacky test to check if the device has an active USB connection, which is
- * a good proxy for someone doing local development work.
- */
- private static boolean isUsbActive() {
- if (SystemProperties.getBoolean(PROP_VIRTUAL_DEVICE, false)) {
- Slog.v(TAG, "Assuming virtual device is connected over USB");
- return true;
- }
- try {
- final String state = FileUtils
- .readTextFile(new File("/sys/class/android_usb/android0/state"), 128, "");
- return "CONFIGURED".equals(state.trim());
- } catch (Throwable t) {
- Slog.w(TAG, "Failed to determine if device was on USB", t);
- return false;
- }
- }
-
- private static class Level {
- static int none() {
- return Flags.recoverabilityDetection() ? RESCUE_LEVEL_NONE : LEVEL_NONE;
- }
-
- static int reboot() {
- return Flags.recoverabilityDetection() ? RESCUE_LEVEL_WARM_REBOOT : LEVEL_WARM_REBOOT;
- }
-
- static int factoryReset() {
- return Flags.recoverabilityDetection()
- ? RESCUE_LEVEL_FACTORY_RESET
- : LEVEL_FACTORY_RESET;
- }
- }
-
- private static String levelToString(int level) {
- if (Flags.recoverabilityDetection()) {
- switch (level) {
- case RESCUE_LEVEL_NONE:
- return "NONE";
- case RESCUE_LEVEL_SCOPED_DEVICE_CONFIG_RESET:
- return "SCOPED_DEVICE_CONFIG_RESET";
- case RESCUE_LEVEL_ALL_DEVICE_CONFIG_RESET:
- return "ALL_DEVICE_CONFIG_RESET";
- case RESCUE_LEVEL_WARM_REBOOT:
- return "WARM_REBOOT";
- case RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS:
- return "RESET_SETTINGS_UNTRUSTED_DEFAULTS";
- case RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES:
- return "RESET_SETTINGS_UNTRUSTED_CHANGES";
- case RESCUE_LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS:
- return "RESET_SETTINGS_TRUSTED_DEFAULTS";
- case RESCUE_LEVEL_FACTORY_RESET:
- return "FACTORY_RESET";
- default:
- return Integer.toString(level);
- }
- } else {
- switch (level) {
- case LEVEL_NONE:
- return "NONE";
- case LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS:
- return "RESET_SETTINGS_UNTRUSTED_DEFAULTS";
- case LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES:
- return "RESET_SETTINGS_UNTRUSTED_CHANGES";
- case LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS:
- return "RESET_SETTINGS_TRUSTED_DEFAULTS";
- case LEVEL_WARM_REBOOT:
- return "WARM_REBOOT";
- case LEVEL_FACTORY_RESET:
- return "FACTORY_RESET";
- default:
- return Integer.toString(level);
- }
- }
- }
-}
diff --git a/packages/CrashRecovery/services/module/java/com/android/server/crashrecovery/CrashRecoveryModule.java b/packages/CrashRecovery/services/module/java/com/android/server/crashrecovery/CrashRecoveryModule.java
deleted file mode 100644
index 8a81aaa1e636..000000000000
--- a/packages/CrashRecovery/services/module/java/com/android/server/crashrecovery/CrashRecoveryModule.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.crashrecovery;
-
-import android.content.Context;
-
-import com.android.server.PackageWatchdog;
-import com.android.server.RescueParty;
-import com.android.server.SystemService;
-
-
-/** This class encapsulate the lifecycle methods of CrashRecovery module.
- *
- * @hide
- */
-public class CrashRecoveryModule {
- private static final String TAG = "CrashRecoveryModule";
-
- /** Lifecycle definition for CrashRecovery module. */
- public static class Lifecycle extends SystemService {
- private Context mSystemContext;
- private PackageWatchdog mPackageWatchdog;
-
- public Lifecycle(Context context) {
- super(context);
- mSystemContext = context;
- mPackageWatchdog = PackageWatchdog.getInstance(context);
- }
-
- @Override
- public void onStart() {
- RescueParty.registerHealthObserver(mSystemContext);
- mPackageWatchdog.registerShutdownBroadcastReceiver();
- mPackageWatchdog.noteBoot();
- }
-
- @Override
- public void onBootPhase(int phase) {
- if (phase == PHASE_THIRD_PARTY_APPS_CAN_START) {
- mPackageWatchdog.onPackagesReady();
- }
- }
- }
-}
diff --git a/packages/CrashRecovery/services/module/java/com/android/server/crashrecovery/CrashRecoveryUtils.java b/packages/CrashRecovery/services/module/java/com/android/server/crashrecovery/CrashRecoveryUtils.java
deleted file mode 100644
index 2e2a93776f9d..000000000000
--- a/packages/CrashRecovery/services/module/java/com/android/server/crashrecovery/CrashRecoveryUtils.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.crashrecovery;
-
-import android.os.Environment;
-import android.util.IndentingPrintWriter;
-import android.util.Log;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-
-/**
- * Class containing helper methods for the CrashRecoveryModule.
- *
- * @hide
- */
-public class CrashRecoveryUtils {
- private static final String TAG = "CrashRecoveryUtils";
- private static final long MAX_CRITICAL_INFO_DUMP_SIZE = 1000 * 1000; // ~1MB
- private static final Object sFileLock = new Object();
-
- /** Persist recovery related events in crashrecovery events file.**/
- public static void logCrashRecoveryEvent(int priority, String msg) {
- Log.println(priority, TAG, msg);
- try {
- File fname = getCrashRecoveryEventsFile();
- synchronized (sFileLock) {
- FileOutputStream out = new FileOutputStream(fname, true);
- PrintWriter pw = new PrintWriter(out);
- String dateString = LocalDateTime.now(ZoneId.systemDefault()).toString();
- pw.println(dateString + ": " + msg);
- pw.close();
- }
- } catch (IOException e) {
- Log.e(TAG, "Unable to log CrashRecoveryEvents " + e.getMessage());
- }
- }
-
- /** Dump recovery related events from crashrecovery events file.**/
- public static void dumpCrashRecoveryEvents(IndentingPrintWriter pw) {
- pw.println("CrashRecovery Events: ");
- pw.increaseIndent();
- final File file = getCrashRecoveryEventsFile();
- final long skipSize = file.length() - MAX_CRITICAL_INFO_DUMP_SIZE;
- synchronized (sFileLock) {
- try (BufferedReader in = new BufferedReader(new FileReader(file))) {
- if (skipSize > 0) {
- in.skip(skipSize);
- }
- String line;
- while ((line = in.readLine()) != null) {
- pw.println(line);
- }
- } catch (IOException e) {
- Log.e(TAG, "Unable to dump CrashRecoveryEvents " + e.getMessage());
- }
- }
- pw.decreaseIndent();
- }
-
- private static File getCrashRecoveryEventsFile() {
- File systemDir = new File(Environment.getDataDirectory(), "system");
- return new File(systemDir, "crashrecovery-events.txt");
- }
-}
diff --git a/packages/CrashRecovery/services/module/java/com/android/server/rollback/RollbackPackageHealthObserver.java b/packages/CrashRecovery/services/module/java/com/android/server/rollback/RollbackPackageHealthObserver.java
deleted file mode 100644
index 4978df491c62..000000000000
--- a/packages/CrashRecovery/services/module/java/com/android/server/rollback/RollbackPackageHealthObserver.java
+++ /dev/null
@@ -1,785 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.rollback;
-
-import static com.android.server.PackageWatchdog.MITIGATION_RESULT_SKIPPED;
-import static com.android.server.PackageWatchdog.MITIGATION_RESULT_SUCCESS;
-import static com.android.server.crashrecovery.CrashRecoveryUtils.logCrashRecoveryEvent;
-
-import android.annotation.AnyThread;
-import android.annotation.FlaggedApi;
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.SuppressLint;
-import android.annotation.SystemApi;
-import android.annotation.WorkerThread;
-import android.app.PendingIntent;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.VersionedPackage;
-import android.content.rollback.PackageRollbackInfo;
-import android.content.rollback.RollbackInfo;
-import android.content.rollback.RollbackManager;
-import android.crashrecovery.flags.Flags;
-import android.os.Environment;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.PowerManager;
-import android.os.SystemProperties;
-import android.sysprop.CrashRecoveryProperties;
-import android.util.ArraySet;
-import android.util.FileUtils;
-import android.util.Log;
-import android.util.Slog;
-import android.util.SparseArray;
-
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.Preconditions;
-import com.android.server.PackageWatchdog;
-import com.android.server.PackageWatchdog.FailureReasons;
-import com.android.server.PackageWatchdog.PackageHealthObserver;
-import com.android.server.PackageWatchdog.PackageHealthObserverImpact;
-import com.android.server.crashrecovery.proto.CrashRecoveryStatsLog;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Set;
-import java.util.function.Consumer;
-
-/**
- * {@link PackageHealthObserver} for {@link RollbackManagerService}.
- * This class monitors crashes and triggers RollbackManager rollback accordingly.
- * It also monitors native crashes for some short while after boot.
- *
- * @hide
- */
-@FlaggedApi(Flags.FLAG_ENABLE_CRASHRECOVERY)
-@SuppressLint({"CallbackName"})
-@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
-public final class RollbackPackageHealthObserver implements PackageHealthObserver {
- private static final String TAG = "RollbackPackageHealthObserver";
- private static final String NAME = "rollback-observer";
- private static final String CLASS_NAME = RollbackPackageHealthObserver.class.getName();
-
- private static final int PERSISTENT_MASK = ApplicationInfo.FLAG_PERSISTENT
- | ApplicationInfo.FLAG_SYSTEM;
-
- private static final String PROP_DISABLE_HIGH_IMPACT_ROLLBACK_FLAG =
- "persist.device_config.configuration.disable_high_impact_rollback";
-
- private final Context mContext;
- private final Handler mHandler;
- private final File mLastStagedRollbackIdsFile;
- private final File mTwoPhaseRollbackEnabledFile;
- // Staged rollback ids that have been committed but their session is not yet ready
- private final Set<Integer> mPendingStagedRollbackIds = new ArraySet<>();
- // True if needing to roll back only rebootless apexes when native crash happens
- private boolean mTwoPhaseRollbackEnabled;
-
- @VisibleForTesting
- public RollbackPackageHealthObserver(@NonNull Context context) {
- mContext = context;
- HandlerThread handlerThread = new HandlerThread("RollbackPackageHealthObserver");
- handlerThread.start();
- mHandler = new Handler(handlerThread.getLooper());
- File dataDir = new File(Environment.getDataDirectory(), "rollback-observer");
- dataDir.mkdirs();
- mLastStagedRollbackIdsFile = new File(dataDir, "last-staged-rollback-ids");
- mTwoPhaseRollbackEnabledFile = new File(dataDir, "two-phase-rollback-enabled");
- PackageWatchdog.getInstance(mContext).registerHealthObserver(context.getMainExecutor(),
- this);
-
- if (SystemProperties.getBoolean("sys.boot_completed", false)) {
- // Load the value from the file if system server has crashed and restarted
- mTwoPhaseRollbackEnabled = readBoolean(mTwoPhaseRollbackEnabledFile);
- } else {
- // Disable two-phase rollback for a normal reboot. We assume the rebootless apex
- // installed before reboot is stable if native crash didn't happen.
- mTwoPhaseRollbackEnabled = false;
- writeBoolean(mTwoPhaseRollbackEnabledFile, false);
- }
- }
-
- @Override
- public int onHealthCheckFailed(@Nullable VersionedPackage failedPackage,
- @FailureReasons int failureReason, int mitigationCount) {
- int impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_0;
- if (Flags.recoverabilityDetection()) {
- List<RollbackInfo> availableRollbacks = getAvailableRollbacks();
- List<RollbackInfo> lowImpactRollbacks = getRollbacksAvailableForImpactLevel(
- availableRollbacks, PackageManager.ROLLBACK_USER_IMPACT_LOW);
- if (!lowImpactRollbacks.isEmpty()) {
- if (failureReason == PackageWatchdog.FAILURE_REASON_NATIVE_CRASH) {
- // For native crashes, we will directly roll back any available rollbacks at low
- // impact level
- impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_30;
- } else if (getRollbackForPackage(failedPackage, lowImpactRollbacks) != null) {
- // Rollback is available for crashing low impact package
- impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_30;
- } else {
- impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_70;
- }
- }
- } else {
- boolean anyRollbackAvailable = !mContext.getSystemService(RollbackManager.class)
- .getAvailableRollbacks().isEmpty();
-
- if (failureReason == PackageWatchdog.FAILURE_REASON_NATIVE_CRASH
- && anyRollbackAvailable) {
- // For native crashes, we will directly roll back any available rollbacks
- // Note: For non-native crashes the rollback-all step has higher impact
- impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_30;
- } else if (getAvailableRollback(failedPackage) != null) {
- // Rollback is available, we may get a callback into #onExecuteHealthCheckMitigation
- impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_30;
- } else if (anyRollbackAvailable) {
- // If any rollbacks are available, we will commit them
- impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_70;
- }
- }
-
- Slog.i(TAG, "Checking available remediations for health check failure."
- + " failedPackage: "
- + (failedPackage == null ? null : failedPackage.getPackageName())
- + " failureReason: " + failureReason
- + " available impact: " + impact);
- return impact;
- }
-
- @Override
- public int onExecuteHealthCheckMitigation(@Nullable VersionedPackage failedPackage,
- @FailureReasons int rollbackReason, int mitigationCount) {
- Slog.i(TAG, "Executing remediation."
- + " failedPackage: "
- + (failedPackage == null ? null : failedPackage.getPackageName())
- + " rollbackReason: " + rollbackReason
- + " mitigationCount: " + mitigationCount);
- if (Flags.recoverabilityDetection()) {
- List<RollbackInfo> availableRollbacks = getAvailableRollbacks();
- if (rollbackReason == PackageWatchdog.FAILURE_REASON_NATIVE_CRASH) {
- mHandler.post(() -> rollbackAllLowImpact(availableRollbacks, rollbackReason));
- return MITIGATION_RESULT_SUCCESS;
- }
-
- List<RollbackInfo> lowImpactRollbacks = getRollbacksAvailableForImpactLevel(
- availableRollbacks, PackageManager.ROLLBACK_USER_IMPACT_LOW);
- RollbackInfo rollback = getRollbackForPackage(failedPackage, lowImpactRollbacks);
- if (rollback != null) {
- mHandler.post(() -> rollbackPackage(rollback, failedPackage, rollbackReason));
- } else if (!lowImpactRollbacks.isEmpty()) {
- // Apply all available low impact rollbacks.
- mHandler.post(() -> rollbackAllLowImpact(availableRollbacks, rollbackReason));
- }
- } else {
- if (rollbackReason == PackageWatchdog.FAILURE_REASON_NATIVE_CRASH) {
- mHandler.post(() -> rollbackAll(rollbackReason));
- return MITIGATION_RESULT_SUCCESS;
- }
-
- RollbackInfo rollback = getAvailableRollback(failedPackage);
- if (rollback != null) {
- mHandler.post(() -> rollbackPackage(rollback, failedPackage, rollbackReason));
- } else {
- mHandler.post(() -> rollbackAll(rollbackReason));
- }
- }
-
- // Assume rollbacks executed successfully
- return MITIGATION_RESULT_SUCCESS;
- }
-
- @Override
- public int onBootLoop(int mitigationCount) {
- int impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_0;
- if (Flags.recoverabilityDetection()) {
- List<RollbackInfo> availableRollbacks = getAvailableRollbacks();
- if (!availableRollbacks.isEmpty()) {
- impact = getUserImpactBasedOnRollbackImpactLevel(availableRollbacks);
- }
- }
- return impact;
- }
-
- @Override
- public int onExecuteBootLoopMitigation(int mitigationCount) {
- if (Flags.recoverabilityDetection()) {
- List<RollbackInfo> availableRollbacks = getAvailableRollbacks();
-
- triggerLeastImpactLevelRollback(availableRollbacks,
- PackageWatchdog.FAILURE_REASON_BOOT_LOOP);
- return MITIGATION_RESULT_SUCCESS;
- }
- return MITIGATION_RESULT_SKIPPED;
- }
-
- @Override
- @NonNull
- public String getUniqueIdentifier() {
- return NAME;
- }
-
- @Override
- public boolean isPersistent() {
- return true;
- }
-
- @Override
- public boolean mayObservePackage(@NonNull String packageName) {
- if (getAvailableRollbacks().isEmpty()) {
- return false;
- }
- return isPersistentSystemApp(packageName);
- }
-
- private List<RollbackInfo> getAvailableRollbacks() {
- return mContext.getSystemService(RollbackManager.class).getAvailableRollbacks();
- }
-
- private boolean isPersistentSystemApp(@NonNull String packageName) {
- PackageManager pm = mContext.getPackageManager();
- try {
- ApplicationInfo info = pm.getApplicationInfo(packageName, 0);
- return (info.flags & PERSISTENT_MASK) == PERSISTENT_MASK;
- } catch (PackageManager.NameNotFoundException e) {
- return false;
- }
- }
-
- private void assertInWorkerThread() {
- Preconditions.checkState(mHandler.getLooper().isCurrentThread());
- }
-
- @AnyThread
- @NonNull
- public void notifyRollbackAvailable(@NonNull RollbackInfo rollback) {
- mHandler.post(() -> {
- // Enable two-phase rollback when a rebootless apex rollback is made available.
- // We assume the rebootless apex is stable and is less likely to be the cause
- // if native crash doesn't happen before reboot. So we will clear the flag and disable
- // two-phase rollback after reboot.
- if (isRebootlessApex(rollback)) {
- mTwoPhaseRollbackEnabled = true;
- writeBoolean(mTwoPhaseRollbackEnabledFile, true);
- }
- });
- }
-
- private static boolean isRebootlessApex(RollbackInfo rollback) {
- if (!rollback.isStaged()) {
- for (PackageRollbackInfo info : rollback.getPackages()) {
- if (info.isApex()) {
- return true;
- }
- }
- }
- return false;
- }
-
- /** Verifies the rollback state after a reboot and schedules polling for sometime after reboot
- * to check for native crashes and mitigate them if needed.
- */
- @AnyThread
- public void onBootCompletedAsync() {
- mHandler.post(()->onBootCompleted());
- }
-
- @WorkerThread
- private void onBootCompleted() {
- assertInWorkerThread();
-
- RollbackManager rollbackManager = mContext.getSystemService(RollbackManager.class);
- if (!rollbackManager.getAvailableRollbacks().isEmpty()) {
- // TODO(gavincorkery): Call into Package Watchdog from outside the observer
- PackageWatchdog.getInstance(mContext).scheduleCheckAndMitigateNativeCrashes();
- }
-
- SparseArray<String> rollbackIds = popLastStagedRollbackIds();
- for (int i = 0; i < rollbackIds.size(); i++) {
- WatchdogRollbackLogger.logRollbackStatusOnBoot(mContext,
- rollbackIds.keyAt(i), rollbackIds.valueAt(i),
- rollbackManager.getRecentlyCommittedRollbacks());
- }
- }
-
- @AnyThread
- private RollbackInfo getAvailableRollback(VersionedPackage failedPackage) {
- RollbackManager rollbackManager = mContext.getSystemService(RollbackManager.class);
- for (RollbackInfo rollback : rollbackManager.getAvailableRollbacks()) {
- for (PackageRollbackInfo packageRollback : rollback.getPackages()) {
- if (packageRollback.getVersionRolledBackFrom().equals(failedPackage)) {
- return rollback;
- }
- // TODO(b/147666157): Extract version number of apk-in-apex so that we don't have
- // to rely on complicated reasoning as below
-
- // Due to b/147666157, for apk in apex, we do not know the version we are rolling
- // back from. But if a package X is embedded in apex A exclusively (not embedded in
- // any other apex), which is not guaranteed, then it is sufficient to check only
- // package names here, as the version of failedPackage and the PackageRollbackInfo
- // can't be different. If failedPackage has a higher version, then it must have
- // been updated somehow. There are two ways: it was updated by an update of apex A
- // or updated directly as apk. In both cases, this rollback would have gotten
- // expired when onPackageReplaced() was called. Since the rollback exists, it has
- // same version as failedPackage.
- if (packageRollback.isApkInApex()
- && packageRollback.getVersionRolledBackFrom().getPackageName()
- .equals(failedPackage.getPackageName())) {
- return rollback;
- }
- }
- }
- return null;
- }
-
- @AnyThread
- private RollbackInfo getRollbackForPackage(@Nullable VersionedPackage failedPackage,
- List<RollbackInfo> availableRollbacks) {
- if (failedPackage == null) {
- return null;
- }
-
- for (RollbackInfo rollback : availableRollbacks) {
- for (PackageRollbackInfo packageRollback : rollback.getPackages()) {
- if (packageRollback.getVersionRolledBackFrom().equals(failedPackage)) {
- return rollback;
- }
- // TODO(b/147666157): Extract version number of apk-in-apex so that we don't have
- // to rely on complicated reasoning as below
-
- // Due to b/147666157, for apk in apex, we do not know the version we are rolling
- // back from. But if a package X is embedded in apex A exclusively (not embedded in
- // any other apex), which is not guaranteed, then it is sufficient to check only
- // package names here, as the version of failedPackage and the PackageRollbackInfo
- // can't be different. If failedPackage has a higher version, then it must have
- // been updated somehow. There are two ways: it was updated by an update of apex A
- // or updated directly as apk. In both cases, this rollback would have gotten
- // expired when onPackageReplaced() was called. Since the rollback exists, it has
- // same version as failedPackage.
- if (packageRollback.isApkInApex()
- && packageRollback.getVersionRolledBackFrom().getPackageName()
- .equals(failedPackage.getPackageName())) {
- return rollback;
- }
- }
- }
- return null;
- }
-
- /**
- * Returns {@code true} if staged session associated with {@code rollbackId} was marked
- * as handled, {@code false} if already handled.
- */
- @WorkerThread
- private boolean markStagedSessionHandled(int rollbackId) {
- assertInWorkerThread();
- return mPendingStagedRollbackIds.remove(rollbackId);
- }
-
- /**
- * Returns {@code true} if all pending staged rollback sessions were marked as handled,
- * {@code false} if there is any left.
- */
- @WorkerThread
- private boolean isPendingStagedSessionsEmpty() {
- assertInWorkerThread();
- return mPendingStagedRollbackIds.isEmpty();
- }
-
- private static boolean readBoolean(File file) {
- try (FileInputStream fis = new FileInputStream(file)) {
- return fis.read() == 1;
- } catch (IOException ignore) {
- return false;
- }
- }
-
- private static void writeBoolean(File file, boolean value) {
- try (FileOutputStream fos = new FileOutputStream(file)) {
- fos.write(value ? 1 : 0);
- fos.flush();
- FileUtils.sync(fos);
- } catch (IOException ignore) {
- }
- }
-
- @WorkerThread
- private void saveStagedRollbackId(int stagedRollbackId, @Nullable VersionedPackage logPackage) {
- assertInWorkerThread();
- writeStagedRollbackId(mLastStagedRollbackIdsFile, stagedRollbackId, logPackage);
- }
-
- static void writeStagedRollbackId(File file, int stagedRollbackId,
- @Nullable VersionedPackage logPackage) {
- try {
- FileOutputStream fos = new FileOutputStream(file, true);
- PrintWriter pw = new PrintWriter(fos);
- String logPackageName = logPackage != null ? logPackage.getPackageName() : "";
- pw.append(String.valueOf(stagedRollbackId)).append(",").append(logPackageName);
- pw.println();
- pw.flush();
- FileUtils.sync(fos);
- pw.close();
- } catch (IOException e) {
- Slog.e(TAG, "Failed to save last staged rollback id", e);
- file.delete();
- }
- }
-
- @WorkerThread
- private SparseArray<String> popLastStagedRollbackIds() {
- assertInWorkerThread();
- try {
- return readStagedRollbackIds(mLastStagedRollbackIdsFile);
- } finally {
- mLastStagedRollbackIdsFile.delete();
- }
- }
-
- static SparseArray<String> readStagedRollbackIds(File file) {
- SparseArray<String> result = new SparseArray<>();
- try {
- String line;
- BufferedReader reader = new BufferedReader(new FileReader(file));
- while ((line = reader.readLine()) != null) {
- // Each line is of the format: "id,logging_package"
- String[] values = line.trim().split(",");
- String rollbackId = values[0];
- String logPackageName = "";
- if (values.length > 1) {
- logPackageName = values[1];
- }
- result.put(Integer.parseInt(rollbackId), logPackageName);
- }
- } catch (Exception ignore) {
- return new SparseArray<>();
- }
- return result;
- }
-
-
- /**
- * Returns true if the package name is the name of a module.
- */
- @AnyThread
- private boolean isModule(String packageName) {
- // Check if the package is listed among the system modules or is an
- // APK inside an updatable APEX.
- try {
- PackageManager pm = mContext.getPackageManager();
- final PackageInfo pkg = pm.getPackageInfo(packageName, 0 /* flags */);
- String apexPackageName = pkg.getApexPackageName();
- if (apexPackageName != null) {
- packageName = apexPackageName;
- }
-
- return pm.getModuleInfo(packageName, 0 /* flags */) != null;
- } catch (PackageManager.NameNotFoundException e) {
- return false;
- }
- }
-
- /**
- * Rolls back the session that owns {@code failedPackage}
- *
- * @param rollback {@code rollbackInfo} of the {@code failedPackage}
- * @param failedPackage the package that needs to be rolled back
- */
- @WorkerThread
- private void rollbackPackage(RollbackInfo rollback, VersionedPackage failedPackage,
- @FailureReasons int rollbackReason) {
- assertInWorkerThread();
- String failedPackageName = (failedPackage == null ? null : failedPackage.getPackageName());
-
- Slog.i(TAG, "Rolling back package. RollbackId: " + rollback.getRollbackId()
- + " failedPackage: " + failedPackageName
- + " rollbackReason: " + rollbackReason);
- logCrashRecoveryEvent(Log.DEBUG, String.format("Rolling back %s. Reason: %s",
- failedPackageName, rollbackReason));
- final RollbackManager rollbackManager = mContext.getSystemService(RollbackManager.class);
- int reasonToLog = WatchdogRollbackLogger.mapFailureReasonToMetric(rollbackReason);
- final String failedPackageToLog;
- if (rollbackReason == PackageWatchdog.FAILURE_REASON_NATIVE_CRASH) {
- failedPackageToLog = SystemProperties.get(
- "sys.init.updatable_crashing_process_name", "");
- } else {
- failedPackageToLog = failedPackage.getPackageName();
- }
- VersionedPackage logPackageTemp = null;
- if (isModule(failedPackage.getPackageName())) {
- logPackageTemp = WatchdogRollbackLogger.getLogPackage(mContext, failedPackage);
- }
-
- final VersionedPackage logPackage = logPackageTemp;
- WatchdogRollbackLogger.logEvent(logPackage,
- CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_INITIATE,
- reasonToLog, failedPackageToLog);
-
- Consumer<Intent> onResult = result -> {
- assertInWorkerThread();
- int status = result.getIntExtra(RollbackManager.EXTRA_STATUS,
- RollbackManager.STATUS_FAILURE);
- if (status == RollbackManager.STATUS_SUCCESS) {
- if (rollback.isStaged()) {
- int rollbackId = rollback.getRollbackId();
- saveStagedRollbackId(rollbackId, logPackage);
- WatchdogRollbackLogger.logEvent(logPackage,
- CrashRecoveryStatsLog
- .WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_BOOT_TRIGGERED,
- reasonToLog, failedPackageToLog);
-
- } else {
- WatchdogRollbackLogger.logEvent(logPackage,
- CrashRecoveryStatsLog
- .WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS,
- reasonToLog, failedPackageToLog);
- }
- } else {
- WatchdogRollbackLogger.logEvent(logPackage,
- CrashRecoveryStatsLog
- .WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE,
- reasonToLog, failedPackageToLog);
- }
- if (rollback.isStaged()) {
- markStagedSessionHandled(rollback.getRollbackId());
- // Wait for all pending staged sessions to get handled before rebooting.
- if (isPendingStagedSessionsEmpty()) {
- CrashRecoveryProperties.attemptingReboot(true);
- mContext.getSystemService(PowerManager.class).reboot("Rollback staged install");
- }
- }
- };
-
- // Define a BroadcastReceiver to handle the result
- BroadcastReceiver rollbackReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent result) {
- mHandler.post(() -> onResult.accept(result));
- }
- };
-
- String intentActionName = CLASS_NAME + rollback.getRollbackId();
- // Register the BroadcastReceiver
- mContext.registerReceiver(rollbackReceiver,
- new IntentFilter(intentActionName),
- Context.RECEIVER_NOT_EXPORTED);
-
- Intent intentReceiver = new Intent(intentActionName);
- intentReceiver.putExtra("rollbackId", rollback.getRollbackId());
- intentReceiver.setPackage(mContext.getPackageName());
- intentReceiver.setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
-
- PendingIntent rollbackPendingIntent = PendingIntent.getBroadcast(mContext,
- rollback.getRollbackId(),
- intentReceiver,
- PendingIntent.FLAG_MUTABLE);
-
- rollbackManager.commitRollback(rollback.getRollbackId(),
- Collections.singletonList(failedPackage),
- rollbackPendingIntent.getIntentSender());
- }
-
- /**
- * Two-phase rollback:
- * 1. roll back rebootless apexes first
- * 2. roll back all remaining rollbacks if native crash doesn't stop after (1) is done
- *
- * This approach gives us a better chance to correctly attribute native crash to rebootless
- * apex update without rolling back Mainline updates which might contains critical security
- * fixes.
- */
- @WorkerThread
- private boolean useTwoPhaseRollback(List<RollbackInfo> rollbacks) {
- assertInWorkerThread();
- if (!mTwoPhaseRollbackEnabled) {
- return false;
- }
-
- Slog.i(TAG, "Rolling back all rebootless APEX rollbacks");
- boolean found = false;
- for (RollbackInfo rollback : rollbacks) {
- if (isRebootlessApex(rollback)) {
- VersionedPackage firstRollback =
- rollback.getPackages().get(0).getVersionRolledBackFrom();
- rollbackPackage(rollback, firstRollback,
- PackageWatchdog.FAILURE_REASON_NATIVE_CRASH);
- found = true;
- }
- }
- return found;
- }
-
- /**
- * Rollback the package that has minimum rollback impact level.
- * @param availableRollbacks all available rollbacks
- * @param rollbackReason reason to rollback
- */
- private void triggerLeastImpactLevelRollback(List<RollbackInfo> availableRollbacks,
- @FailureReasons int rollbackReason) {
- int minRollbackImpactLevel = getMinRollbackImpactLevel(availableRollbacks);
-
- if (minRollbackImpactLevel == PackageManager.ROLLBACK_USER_IMPACT_LOW) {
- // Apply all available low impact rollbacks.
- mHandler.post(() -> rollbackAllLowImpact(availableRollbacks, rollbackReason));
- } else if (minRollbackImpactLevel == PackageManager.ROLLBACK_USER_IMPACT_HIGH) {
- // Check disable_high_impact_rollback device config before performing rollback
- if (SystemProperties.getBoolean(PROP_DISABLE_HIGH_IMPACT_ROLLBACK_FLAG, false)) {
- return;
- }
- // Rollback one package at a time. If that doesn't resolve the issue, rollback
- // next with same impact level.
- mHandler.post(() -> rollbackHighImpact(availableRollbacks, rollbackReason));
- }
- }
-
- /**
- * sort the available high impact rollbacks by first package name to have a deterministic order.
- * Apply the first available rollback.
- * @param availableRollbacks all available rollbacks
- * @param rollbackReason reason to rollback
- */
- @WorkerThread
- private void rollbackHighImpact(List<RollbackInfo> availableRollbacks,
- @FailureReasons int rollbackReason) {
- assertInWorkerThread();
- List<RollbackInfo> highImpactRollbacks =
- getRollbacksAvailableForImpactLevel(
- availableRollbacks, PackageManager.ROLLBACK_USER_IMPACT_HIGH);
-
- // sort rollbacks based on package name of the first package. This is to have a
- // deterministic order of rollbacks.
- List<RollbackInfo> sortedHighImpactRollbacks = highImpactRollbacks.stream().sorted(
- Comparator.comparing(a -> a.getPackages().get(0).getPackageName())).toList();
- VersionedPackage firstRollback =
- sortedHighImpactRollbacks
- .get(0)
- .getPackages()
- .get(0)
- .getVersionRolledBackFrom();
- Slog.i(TAG, "Rolling back high impact rollback for package: "
- + firstRollback.getPackageName());
- rollbackPackage(sortedHighImpactRollbacks.get(0), firstRollback, rollbackReason);
- }
-
- @WorkerThread
- private void rollbackAll(@FailureReasons int rollbackReason) {
- assertInWorkerThread();
- RollbackManager rollbackManager = mContext.getSystemService(RollbackManager.class);
- List<RollbackInfo> rollbacks = rollbackManager.getAvailableRollbacks();
- if (useTwoPhaseRollback(rollbacks)) {
- return;
- }
-
- Slog.i(TAG, "Rolling back all available rollbacks");
- // Add all rollback ids to mPendingStagedRollbackIds, so that we do not reboot before all
- // pending staged rollbacks are handled.
- for (RollbackInfo rollback : rollbacks) {
- if (rollback.isStaged()) {
- mPendingStagedRollbackIds.add(rollback.getRollbackId());
- }
- }
-
- for (RollbackInfo rollback : rollbacks) {
- VersionedPackage firstRollback =
- rollback.getPackages().get(0).getVersionRolledBackFrom();
- rollbackPackage(rollback, firstRollback, rollbackReason);
- }
- }
-
- /**
- * Rollback all available low impact rollbacks
- * @param availableRollbacks all available rollbacks
- * @param rollbackReason reason to rollbacks
- */
- @WorkerThread
- private void rollbackAllLowImpact(
- List<RollbackInfo> availableRollbacks, @FailureReasons int rollbackReason) {
- assertInWorkerThread();
-
- List<RollbackInfo> lowImpactRollbacks = getRollbacksAvailableForImpactLevel(
- availableRollbacks,
- PackageManager.ROLLBACK_USER_IMPACT_LOW);
- if (useTwoPhaseRollback(lowImpactRollbacks)) {
- return;
- }
-
- Slog.i(TAG, "Rolling back all available low impact rollbacks");
- logCrashRecoveryEvent(Log.DEBUG, "Rolling back all available. Reason: " + rollbackReason);
- // Add all rollback ids to mPendingStagedRollbackIds, so that we do not reboot before all
- // pending staged rollbacks are handled.
- for (RollbackInfo rollback : lowImpactRollbacks) {
- if (rollback.isStaged()) {
- mPendingStagedRollbackIds.add(rollback.getRollbackId());
- }
- }
-
- for (RollbackInfo rollback : lowImpactRollbacks) {
- VersionedPackage firstRollback =
- rollback.getPackages().get(0).getVersionRolledBackFrom();
- rollbackPackage(rollback, firstRollback, rollbackReason);
- }
- }
-
- private List<RollbackInfo> getRollbacksAvailableForImpactLevel(
- List<RollbackInfo> availableRollbacks, int impactLevel) {
- return availableRollbacks.stream()
- .filter(rollbackInfo -> rollbackInfo.getRollbackImpactLevel() == impactLevel)
- .toList();
- }
-
- private int getMinRollbackImpactLevel(List<RollbackInfo> availableRollbacks) {
- return availableRollbacks.stream()
- .mapToInt(RollbackInfo::getRollbackImpactLevel)
- .min()
- .orElse(-1);
- }
-
- private int getUserImpactBasedOnRollbackImpactLevel(List<RollbackInfo> availableRollbacks) {
- int impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_0;
- int minImpact = getMinRollbackImpactLevel(availableRollbacks);
- switch (minImpact) {
- case PackageManager.ROLLBACK_USER_IMPACT_LOW:
- impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_70;
- break;
- case PackageManager.ROLLBACK_USER_IMPACT_HIGH:
- if (!SystemProperties.getBoolean(PROP_DISABLE_HIGH_IMPACT_ROLLBACK_FLAG, false)) {
- impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_90;
- }
- break;
- default:
- impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_0;
- }
- return impact;
- }
-
- @VisibleForTesting
- Handler getHandler() {
- return mHandler;
- }
-}
diff --git a/packages/CrashRecovery/services/module/java/com/android/server/rollback/WatchdogRollbackLogger.java b/packages/CrashRecovery/services/module/java/com/android/server/rollback/WatchdogRollbackLogger.java
deleted file mode 100644
index 9cfed02f9355..000000000000
--- a/packages/CrashRecovery/services/module/java/com/android/server/rollback/WatchdogRollbackLogger.java
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.rollback;
-
-import static com.android.server.crashrecovery.CrashRecoveryUtils.logCrashRecoveryEvent;
-import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_CRASH;
-import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_NOT_RESPONDING;
-import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_BOOT_LOOPING;
-import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_EXPLICIT_HEALTH_CHECK;
-import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_NATIVE_CRASH;
-import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_NATIVE_CRASH_DURING_BOOT;
-import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN;
-import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_BOOT_TRIGGERED;
-import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE;
-import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_INITIATE;
-import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInstaller;
-import android.content.pm.PackageManager;
-import android.content.pm.VersionedPackage;
-import android.content.rollback.PackageRollbackInfo;
-import android.content.rollback.RollbackInfo;
-import android.os.SystemProperties;
-import android.text.TextUtils;
-import android.util.Log;
-import android.util.Slog;
-
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.server.PackageWatchdog;
-import com.android.server.crashrecovery.proto.CrashRecoveryStatsLog;
-
-import java.util.List;
-
-/**
- * This class handles the logic for logging Watchdog-triggered rollback events.
- * @hide
- */
-public final class WatchdogRollbackLogger {
- private static final String TAG = "WatchdogRollbackLogger";
-
- private static final String LOGGING_PARENT_KEY = "android.content.pm.LOGGING_PARENT";
-
- private WatchdogRollbackLogger() {
- }
-
- @Nullable
- private static String getLoggingParentName(Context context, @NonNull String packageName) {
- PackageManager packageManager = context.getPackageManager();
- try {
- int flags = PackageManager.MATCH_APEX | PackageManager.GET_META_DATA;
- ApplicationInfo ai = packageManager.getPackageInfo(packageName, flags).applicationInfo;
- if (ai.metaData == null) {
- return null;
- }
- return ai.metaData.getString(LOGGING_PARENT_KEY);
- } catch (Exception e) {
- Slog.w(TAG, "Unable to discover logging parent package: " + packageName, e);
- return null;
- }
- }
-
- /**
- * Returns the logging parent of a given package if it exists, {@code null} otherwise.
- *
- * The logging parent is defined by the {@code android.content.pm.LOGGING_PARENT} field in the
- * metadata of a package's AndroidManifest.xml.
- */
- @VisibleForTesting
- @Nullable
- static VersionedPackage getLogPackage(Context context,
- @NonNull VersionedPackage failingPackage) {
- String logPackageName;
- VersionedPackage loggingParent;
- logPackageName = getLoggingParentName(context, failingPackage.getPackageName());
- if (logPackageName == null) {
- return null;
- }
- try {
- loggingParent = new VersionedPackage(logPackageName, context.getPackageManager()
- .getPackageInfo(logPackageName, 0 /* flags */).getLongVersionCode());
- } catch (PackageManager.NameNotFoundException e) {
- return null;
- }
- return loggingParent;
- }
-
- static void logRollbackStatusOnBoot(Context context, int rollbackId, String logPackageName,
- List<RollbackInfo> recentlyCommittedRollbacks) {
- PackageInstaller packageInstaller = context.getPackageManager().getPackageInstaller();
-
- RollbackInfo rollback = null;
- for (RollbackInfo info : recentlyCommittedRollbacks) {
- if (rollbackId == info.getRollbackId()) {
- rollback = info;
- break;
- }
- }
-
- if (rollback == null) {
- Slog.e(TAG, "rollback info not found for last staged rollback: " + rollbackId);
- return;
- }
-
- // Use the version of the logging parent that was installed before
- // we rolled back for logging purposes.
- VersionedPackage oldLoggingPackage = null;
- if (!TextUtils.isEmpty(logPackageName)) {
- for (PackageRollbackInfo packageRollback : rollback.getPackages()) {
- if (logPackageName.equals(packageRollback.getPackageName())) {
- oldLoggingPackage = packageRollback.getVersionRolledBackFrom();
- break;
- }
- }
- }
-
- int sessionId = rollback.getCommittedSessionId();
- PackageInstaller.SessionInfo sessionInfo = packageInstaller.getSessionInfo(sessionId);
- if (sessionInfo == null) {
- Slog.e(TAG, "On boot completed, could not load session id " + sessionId);
- return;
- }
-
- if (sessionInfo.isStagedSessionApplied()) {
- logEvent(oldLoggingPackage,
- WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS,
- WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN, "");
- } else if (sessionInfo.isStagedSessionFailed()) {
- logEvent(oldLoggingPackage,
- WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE,
- WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN, "");
- }
- }
-
- /**
- * Log a Watchdog rollback event to statsd.
- *
- * @param logPackage the package to associate the rollback with.
- * @param type the state of the rollback.
- * @param rollbackReason the reason Watchdog triggered a rollback, if known.
- * @param failingPackageName the failing package or process which triggered the rollback.
- */
- public static void logEvent(@Nullable VersionedPackage logPackage, int type,
- int rollbackReason, @NonNull String failingPackageName) {
- String logMsg = "Watchdog event occurred with type: " + rollbackTypeToString(type)
- + " logPackage: " + logPackage
- + " rollbackReason: " + rollbackReasonToString(rollbackReason)
- + " failedPackageName: " + failingPackageName;
- Slog.i(TAG, logMsg);
- if (logPackage != null) {
- CrashRecoveryStatsLog.write(
- CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED,
- type,
- logPackage.getPackageName(),
- logPackage.getVersionCode(),
- rollbackReason,
- failingPackageName,
- new byte[]{});
- } else {
- // In the case that the log package is null, still log an empty string as an
- // indication that retrieving the logging parent failed.
- CrashRecoveryStatsLog.write(
- CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED,
- type,
- "",
- 0,
- rollbackReason,
- failingPackageName,
- new byte[]{});
- }
-
- logTestProperties(logMsg);
- }
-
- /**
- * Writes properties which will be used by rollback tests to check if particular rollback
- * events have occurred.
- */
- private static void logTestProperties(String logMsg) {
- // This property should be on only during the tests
- if (!SystemProperties.getBoolean("persist.sys.rollbacktest.enabled", false)) {
- return;
- }
- logCrashRecoveryEvent(Log.DEBUG, logMsg);
- }
-
- @VisibleForTesting
- static int mapFailureReasonToMetric(@PackageWatchdog.FailureReasons int failureReason) {
- switch (failureReason) {
- case PackageWatchdog.FAILURE_REASON_NATIVE_CRASH:
- return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_NATIVE_CRASH;
- case PackageWatchdog.FAILURE_REASON_EXPLICIT_HEALTH_CHECK:
- return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_EXPLICIT_HEALTH_CHECK;
- case PackageWatchdog.FAILURE_REASON_APP_CRASH:
- return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_CRASH;
- case PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING:
- return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_NOT_RESPONDING;
- case PackageWatchdog.FAILURE_REASON_BOOT_LOOP:
- return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_BOOT_LOOPING;
- default:
- return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN;
- }
- }
-
- private static String rollbackTypeToString(int type) {
- switch (type) {
- case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_INITIATE:
- return "ROLLBACK_INITIATE";
- case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS:
- return "ROLLBACK_SUCCESS";
- case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE:
- return "ROLLBACK_FAILURE";
- case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_BOOT_TRIGGERED:
- return "ROLLBACK_BOOT_TRIGGERED";
- default:
- return "UNKNOWN";
- }
- }
-
- private static String rollbackReasonToString(int reason) {
- switch (reason) {
- case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_NATIVE_CRASH:
- return "REASON_NATIVE_CRASH";
- case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_EXPLICIT_HEALTH_CHECK:
- return "REASON_EXPLICIT_HEALTH_CHECK";
- case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_CRASH:
- return "REASON_APP_CRASH";
- case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_NOT_RESPONDING:
- return "REASON_APP_NOT_RESPONDING";
- case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_NATIVE_CRASH_DURING_BOOT:
- return "REASON_NATIVE_CRASH_DURING_BOOT";
- case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_BOOT_LOOPING:
- return "REASON_BOOT_LOOP";
- default:
- return "UNKNOWN";
- }
- }
-}
diff --git a/packages/CrashRecovery/services/module/java/com/android/util/ArrayUtils.java b/packages/CrashRecovery/services/module/java/com/android/util/ArrayUtils.java
deleted file mode 100644
index 29ff7cced897..000000000000
--- a/packages/CrashRecovery/services/module/java/com/android/util/ArrayUtils.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.util;
-
-import android.annotation.Nullable;
-
-/**
- * Copied over from frameworks/base/core/java/com/android/internal/util/ArrayUtils.java
- *
- * @hide
- */
-public class ArrayUtils {
- private ArrayUtils() { /* cannot be instantiated */ }
-
- /**
- * Checks if given array is null or has zero elements.
- */
- public static boolean isEmpty(@Nullable int[] array) {
- return array == null || array.length == 0;
- }
-
- /**
- * True if the byte array is null or has length 0.
- */
- public static boolean isEmpty(@Nullable byte[] array) {
- return array == null || array.length == 0;
- }
-}
diff --git a/packages/CrashRecovery/services/module/java/com/android/util/FileUtils.java b/packages/CrashRecovery/services/module/java/com/android/util/FileUtils.java
deleted file mode 100644
index d60a9b9847ca..000000000000
--- a/packages/CrashRecovery/services/module/java/com/android/util/FileUtils.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.util;
-
-import android.annotation.Nullable;
-
-import java.io.BufferedInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * Bits and pieces copied from hidden API of android.os.FileUtils.
- *
- * @hide
- */
-public class FileUtils {
- /**
- * Read a text file into a String, optionally limiting the length.
- *
- * @param file to read (will not seek, so things like /proc files are OK)
- * @param max length (positive for head, negative of tail, 0 for no limit)
- * @param ellipsis to add of the file was truncated (can be null)
- * @return the contents of the file, possibly truncated
- * @throws IOException if something goes wrong reading the file
- * @hide
- */
- public static @Nullable String readTextFile(@Nullable File file, @Nullable int max,
- @Nullable String ellipsis) throws IOException {
- InputStream input = new FileInputStream(file);
- // wrapping a BufferedInputStream around it because when reading /proc with unbuffered
- // input stream, bytes read not equal to buffer size is not necessarily the correct
- // indication for EOF; but it is true for BufferedInputStream due to its implementation.
- BufferedInputStream bis = new BufferedInputStream(input);
- try {
- long size = file.length();
- if (max > 0 || (size > 0 && max == 0)) { // "head" mode: read the first N bytes
- if (size > 0 && (max == 0 || size < max)) max = (int) size;
- byte[] data = new byte[max + 1];
- int length = bis.read(data);
- if (length <= 0) return "";
- if (length <= max) return new String(data, 0, length);
- if (ellipsis == null) return new String(data, 0, max);
- return new String(data, 0, max) + ellipsis;
- } else if (max < 0) { // "tail" mode: keep the last N
- int len;
- boolean rolled = false;
- byte[] last = null;
- byte[] data = null;
- do {
- if (last != null) rolled = true;
- byte[] tmp = last;
- last = data;
- data = tmp;
- if (data == null) data = new byte[-max];
- len = bis.read(data);
- } while (len == data.length);
-
- if (last == null && len <= 0) return "";
- if (last == null) return new String(data, 0, len);
- if (len > 0) {
- rolled = true;
- System.arraycopy(last, len, last, 0, last.length - len);
- System.arraycopy(data, 0, last, last.length - len, len);
- }
- if (ellipsis == null || !rolled) return new String(last);
- return ellipsis + new String(last);
- } else { // "cat" mode: size unknown, read it all in streaming fashion
- ByteArrayOutputStream contents = new ByteArrayOutputStream();
- int len;
- byte[] data = new byte[1024];
- do {
- len = bis.read(data);
- if (len > 0) contents.write(data, 0, len);
- } while (len == data.length);
- return contents.toString();
- }
- } finally {
- bis.close();
- input.close();
- }
- }
-
- /**
- * Perform an fsync on the given FileOutputStream. The stream at this
- * point must be flushed but not yet closed.
- *
- * @hide
- */
- public static boolean sync(FileOutputStream stream) {
- try {
- if (stream != null) {
- stream.getFD().sync();
- }
- return true;
- } catch (IOException e) {
- }
- return false;
- }
-}
diff --git a/packages/CrashRecovery/services/module/java/com/android/util/LongArrayQueue.java b/packages/CrashRecovery/services/module/java/com/android/util/LongArrayQueue.java
deleted file mode 100644
index 9a24ada8b69a..000000000000
--- a/packages/CrashRecovery/services/module/java/com/android/util/LongArrayQueue.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.util;
-
-import libcore.util.EmptyArray;
-
-import java.util.NoSuchElementException;
-
-/**
- * Copied from frameworks/base/core/java/android/util/LongArrayQueue.java
- *
- * @hide
- */
-public class LongArrayQueue {
-
- private long[] mValues;
- private int mSize;
- private int mHead;
- private int mTail;
-
- private long[] newUnpaddedLongArray(int num) {
- return new long[num];
- }
- /**
- * Initializes a queue with the given starting capacity.
- *
- * @param initialCapacity the capacity.
- */
- public LongArrayQueue(int initialCapacity) {
- if (initialCapacity == 0) {
- mValues = EmptyArray.LONG;
- } else {
- mValues = newUnpaddedLongArray(initialCapacity);
- }
- mSize = 0;
- mHead = mTail = 0;
- }
-
- /**
- * Initializes a queue with default starting capacity.
- */
- public LongArrayQueue() {
- this(16);
- }
-
- /** @hide */
- public static int growSize(int currentSize) {
- return currentSize <= 4 ? 8 : currentSize * 2;
- }
-
- private void grow() {
- if (mSize < mValues.length) {
- throw new IllegalStateException("Queue not full yet!");
- }
- final int newSize = growSize(mSize);
- final long[] newArray = newUnpaddedLongArray(newSize);
- final int r = mValues.length - mHead; // Number of elements on and to the right of head.
- System.arraycopy(mValues, mHead, newArray, 0, r);
- System.arraycopy(mValues, 0, newArray, r, mHead);
- mValues = newArray;
- mHead = 0;
- mTail = mSize;
- }
-
- /**
- * Returns the number of elements in the queue.
- */
- public int size() {
- return mSize;
- }
-
- /**
- * Removes all elements from this queue.
- */
- public void clear() {
- mSize = 0;
- mHead = mTail = 0;
- }
-
- /**
- * Adds a value to the tail of the queue.
- *
- * @param value the value to be added.
- */
- public void addLast(long value) {
- if (mSize == mValues.length) {
- grow();
- }
- mValues[mTail] = value;
- mTail = (mTail + 1) % mValues.length;
- mSize++;
- }
-
- /**
- * Removes an element from the head of the queue.
- *
- * @return the element at the head of the queue.
- * @throws NoSuchElementException if the queue is empty.
- */
- public long removeFirst() {
- if (mSize == 0) {
- throw new NoSuchElementException("Queue is empty!");
- }
- final long ret = mValues[mHead];
- mHead = (mHead + 1) % mValues.length;
- mSize--;
- return ret;
- }
-
- /**
- * Returns the element at the given position from the head of the queue, where 0 represents the
- * head of the queue.
- *
- * @param position the position from the head of the queue.
- * @return the element found at the given position.
- * @throws IndexOutOfBoundsException if {@code position} < {@code 0} or
- * {@code position} >= {@link #size()}
- */
- public long get(int position) {
- if (position < 0 || position >= mSize) {
- throw new IndexOutOfBoundsException("Index " + position
- + " not valid for a queue of size " + mSize);
- }
- final int index = (mHead + position) % mValues.length;
- return mValues[index];
- }
-
- /**
- * Returns the element at the head of the queue, without removing it.
- *
- * @return the element at the head of the queue.
- * @throws NoSuchElementException if the queue is empty
- */
- public long peekFirst() {
- if (mSize == 0) {
- throw new NoSuchElementException("Queue is empty!");
- }
- return mValues[mHead];
- }
-
- /**
- * Returns the element at the tail of the queue.
- *
- * @return the element at the tail of the queue.
- * @throws NoSuchElementException if the queue is empty.
- */
- public long peekLast() {
- if (mSize == 0) {
- throw new NoSuchElementException("Queue is empty!");
- }
- final int index = (mTail == 0) ? mValues.length - 1 : mTail - 1;
- return mValues[index];
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String toString() {
- if (mSize <= 0) {
- return "{}";
- }
-
- final StringBuilder buffer = new StringBuilder(mSize * 64);
- buffer.append('{');
- buffer.append(get(0));
- for (int i = 1; i < mSize; i++) {
- buffer.append(", ");
- buffer.append(get(i));
- }
- buffer.append('}');
- return buffer.toString();
- }
-}
diff --git a/packages/CrashRecovery/services/module/java/com/android/util/XmlUtils.java b/packages/CrashRecovery/services/module/java/com/android/util/XmlUtils.java
deleted file mode 100644
index 488b531c2b8a..000000000000
--- a/packages/CrashRecovery/services/module/java/com/android/util/XmlUtils.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.util;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.IOException;
-
-/**
- * Bits and pieces copied from hidden API of
- * frameworks/base/core/java/com/android/internal/util/XmlUtils.java
- *
- * @hide
- */
-public class XmlUtils {
-
- /** @hide */
- public static final void beginDocument(XmlPullParser parser, String firstElementName)
- throws XmlPullParserException, IOException {
- int type;
- while ((type = parser.next()) != parser.START_TAG
- && type != parser.END_DOCUMENT) {
- // Do nothing
- }
-
- if (type != parser.START_TAG) {
- throw new XmlPullParserException("No start tag found");
- }
-
- if (!parser.getName().equals(firstElementName)) {
- throw new XmlPullParserException("Unexpected start tag: found " + parser.getName()
- + ", expected " + firstElementName);
- }
- }
-
- /** @hide */
- public static boolean nextElementWithin(XmlPullParser parser, int outerDepth)
- throws IOException, XmlPullParserException {
- for (;;) {
- int type = parser.next();
- if (type == XmlPullParser.END_DOCUMENT
- || (type == XmlPullParser.END_TAG && parser.getDepth() == outerDepth)) {
- return false;
- }
- if (type == XmlPullParser.START_TAG
- && parser.getDepth() == outerDepth + 1) {
- return true;
- }
- }
- }
-}
diff --git a/packages/NeuralNetworks/framework/module/java/android/app/ondeviceintelligence/InferenceInfo.java b/packages/NeuralNetworks/framework/module/java/android/app/ondeviceintelligence/InferenceInfo.java
index cae8db27a435..428997e0c446 100644
--- a/packages/NeuralNetworks/framework/module/java/android/app/ondeviceintelligence/InferenceInfo.java
+++ b/packages/NeuralNetworks/framework/module/java/android/app/ondeviceintelligence/InferenceInfo.java
@@ -19,6 +19,7 @@ package android.app.ondeviceintelligence;
import static android.app.ondeviceintelligence.flags.Flags.FLAG_ENABLE_ON_DEVICE_INTELLIGENCE_MODULE;
import android.annotation.CurrentTimeMillisLong;
+import android.annotation.DurationMillisLong;
import android.annotation.FlaggedApi;
import android.annotation.NonNull;
import android.annotation.SystemApi;
@@ -51,7 +52,8 @@ public final class InferenceInfo implements Parcelable {
private final long endTimeMs;
/**
- * Suspended time in milliseconds.
+ * The total duration of the period(s) during which the inference was
+ * suspended (i.e. not running), in milliseconds.
*/
private final long suspendedTimeMs;
@@ -61,7 +63,7 @@ public final class InferenceInfo implements Parcelable {
* @param uid Uid for the caller app.
* @param startTimeMs Inference start time (milliseconds from the epoch time).
* @param endTimeMs Inference end time (milliseconds from the epoch time).
- * @param suspendedTimeMs Suspended time in milliseconds.
+ * @param suspendedTimeMs Suspended duration, in milliseconds.
*/
InferenceInfo(int uid, long startTimeMs, long endTimeMs,
long suspendedTimeMs) {
@@ -128,11 +130,12 @@ public final class InferenceInfo implements Parcelable {
}
/**
- * Returns the suspended time in milliseconds.
+ * Returns the suspended duration, in milliseconds.
*
- * @return the suspended time in milliseconds.
+ * @return the total duration of the period(s) during which the inference
+ * was suspended (i.e. not running), in milliseconds.
*/
- @CurrentTimeMillisLong
+ @DurationMillisLong
public long getSuspendedTimeMillis() {
return suspendedTimeMs;
}
@@ -197,12 +200,14 @@ public final class InferenceInfo implements Parcelable {
}
/**
- * Sets the suspended time in milliseconds.
+ * Sets the suspended duration, in milliseconds.
*
- * @param suspendedTimeMs the suspended time in milliseconds.
+ * @param suspendedTimeMs the total duration of the period(s) in which
+ * the request was suspended (i.e. not running),
+ * in milliseconds.
* @return the Builder instance.
*/
- public @NonNull Builder setSuspendedTimeMillis(@CurrentTimeMillisLong long suspendedTimeMs) {
+ public @NonNull Builder setSuspendedTimeMillis(@DurationMillisLong long suspendedTimeMs) {
this.suspendedTimeMs = suspendedTimeMs;
return this;
}
diff --git a/packages/NeuralNetworks/framework/platform/java/android/app/ondeviceintelligence/InferenceInfo.java b/packages/NeuralNetworks/framework/platform/java/android/app/ondeviceintelligence/InferenceInfo.java
index cae8db27a435..64524fb096cb 100644
--- a/packages/NeuralNetworks/framework/platform/java/android/app/ondeviceintelligence/InferenceInfo.java
+++ b/packages/NeuralNetworks/framework/platform/java/android/app/ondeviceintelligence/InferenceInfo.java
@@ -19,6 +19,7 @@ package android.app.ondeviceintelligence;
import static android.app.ondeviceintelligence.flags.Flags.FLAG_ENABLE_ON_DEVICE_INTELLIGENCE_MODULE;
import android.annotation.CurrentTimeMillisLong;
+import android.annotation.DurationMillisLong;
import android.annotation.FlaggedApi;
import android.annotation.NonNull;
import android.annotation.SystemApi;
@@ -50,8 +51,9 @@ public final class InferenceInfo implements Parcelable {
*/
private final long endTimeMs;
- /**
- * Suspended time in milliseconds.
+ /**
+ * The total duration of the period(s) during which the inference was
+ * suspended (i.e. not running), in milliseconds.
*/
private final long suspendedTimeMs;
@@ -61,7 +63,7 @@ public final class InferenceInfo implements Parcelable {
* @param uid Uid for the caller app.
* @param startTimeMs Inference start time (milliseconds from the epoch time).
* @param endTimeMs Inference end time (milliseconds from the epoch time).
- * @param suspendedTimeMs Suspended time in milliseconds.
+ * @param suspendedTimeMs Suspended duration, in milliseconds.
*/
InferenceInfo(int uid, long startTimeMs, long endTimeMs,
long suspendedTimeMs) {
@@ -128,11 +130,12 @@ public final class InferenceInfo implements Parcelable {
}
/**
- * Returns the suspended time in milliseconds.
+ * Returns the suspended duration, in milliseconds.
*
- * @return the suspended time in milliseconds.
+ * @return the total duration of the period(s) during which the inference
+ * was suspended (i.e. not running), in milliseconds.
*/
- @CurrentTimeMillisLong
+ @DurationMillisLong
public long getSuspendedTimeMillis() {
return suspendedTimeMs;
}
@@ -197,12 +200,14 @@ public final class InferenceInfo implements Parcelable {
}
/**
- * Sets the suspended time in milliseconds.
+ * Sets the suspended duration, in milliseconds.
*
- * @param suspendedTimeMs the suspended time in milliseconds.
+ * @param suspendedTimeMs the total duration of the period(s) in which
+ * the request was suspended (i.e. not running),
+ * in milliseconds.
* @return the Builder instance.
*/
- public @NonNull Builder setSuspendedTimeMillis(@CurrentTimeMillisLong long suspendedTimeMs) {
+ public @NonNull Builder setSuspendedTimeMillis(@DurationMillisLong long suspendedTimeMs) {
this.suspendedTimeMs = suspendedTimeMs;
return this;
}
diff --git a/packages/PackageInstaller/res/values-sk/strings.xml b/packages/PackageInstaller/res/values-sk/strings.xml
index ce186f247b20..fcc06ca3c82f 100644
--- a/packages/PackageInstaller/res/values-sk/strings.xml
+++ b/packages/PackageInstaller/res/values-sk/strings.xml
@@ -96,7 +96,7 @@
<string name="app_name_unknown" msgid="6881210203354323926">"Neznáma"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Váš tablet momentálne nemôže z bezpečnostných dôvodov inštalovať neznáme aplikácie z tohto zdroja. Môžete to zmeniť v Nastaveniach."</string>
<string name="untrusted_external_source_warning" product="tv" msgid="7057271609532508035">"Váš televízor momentálne nemôže z bezpečnostných dôvodov inštalovať neznáme aplikácie z tohto zdroja. Môžete to zmeniť v Nastaveniach."</string>
- <string name="untrusted_external_source_warning" product="watch" msgid="7195163388090818636">"Z bezpečnostných dôvodov momentálne nemôžete v hodnikách inštalovať neznáme aplikácie z tohto zdroja. Môžete to zmeniť v Nastaveniach."</string>
+ <string name="untrusted_external_source_warning" product="watch" msgid="7195163388090818636">"Z bezpečnostných dôvodov momentálne nemôžete v hodinkách inštalovať neznáme aplikácie z tohto zdroja. Môžete to zmeniť v Nastaveniach."</string>
<string name="untrusted_external_source_warning" product="default" msgid="8444191224459138919">"Váš telefón momentálne nemôže z bezpečnostných dôvodov inštalovať neznáme aplikácie z tohto zdroja. Môžete to zmeniť v nastaveniach."</string>
<string name="anonymous_source_warning" product="default" msgid="2784902545920822500">"Váš telefón a osobné údaje sú zraniteľnejšie voči útoku z neznámych aplikácií. Inštaláciou tejto aplikácie vyjadrujete súhlas s tým, že nesiete zodpovednosť za akékoľvek poškodenie telefónu alebo stratu údajov, ktoré by mohli nastať pri jej používaní."</string>
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Váš tablet a osobné dáta sú náchylnejšie na útok z neznámych aplikácií. Inštaláciou tejto aplikácie vyjadrujete súhlas s tým, že nesiete zodpovednosť za akékoľvek poškodenie tabletu alebo stratu dát, ktoré by mohli nastať pri jej používaní."</string>
diff --git a/packages/PrintSpooler/res/values-es-rUS/strings.xml b/packages/PrintSpooler/res/values-es-rUS/strings.xml
index 9f88f144a77e..bfe5bb3c8de7 100644
--- a/packages/PrintSpooler/res/values-es-rUS/strings.xml
+++ b/packages/PrintSpooler/res/values-es-rUS/strings.xml
@@ -32,7 +32,7 @@
<string name="template_page_range" msgid="428638530038286328">"Rango de <xliff:g id="PAGE_COUNT">%1$s</xliff:g>"</string>
<string name="pages_range_example" msgid="8558694453556945172">"Ej.: 1-5, 8, 11-13"</string>
<string name="print_preview" msgid="8010217796057763343">"Vista previa de impresión"</string>
- <string name="install_for_print_preview" msgid="6366303997385509332">"Instalar visualizador de PDF para vista previa"</string>
+ <string name="install_for_print_preview" msgid="6366303997385509332">"Instalar lector de PDF para obtener vista previa"</string>
<string name="printing_app_crashed" msgid="854477616686566398">"La aplicación de impresión falló"</string>
<string name="generating_print_job" msgid="3119608742651698916">"Generando trabajo de impresión"</string>
<string name="save_as_pdf" msgid="5718454119847596853">"Guardar como PDF"</string>
diff --git a/packages/SettingsLib/BannerMessagePreference/src/com/android/settingslib/widget/BannerMessagePreference.java b/packages/SettingsLib/BannerMessagePreference/src/com/android/settingslib/widget/BannerMessagePreference.java
index 60a9ebd6f98b..c82829d6ccea 100644
--- a/packages/SettingsLib/BannerMessagePreference/src/com/android/settingslib/widget/BannerMessagePreference.java
+++ b/packages/SettingsLib/BannerMessagePreference/src/com/android/settingslib/widget/BannerMessagePreference.java
@@ -116,8 +116,8 @@ public class BannerMessagePreference extends Preference implements GroupSectionD
// Default attention level is High.
private AttentionLevel mAttentionLevel = AttentionLevel.HIGH;
- private String mSubtitle;
- private String mHeader;
+ private CharSequence mSubtitle;
+ private CharSequence mHeader;
private int mButtonOrientation;
public BannerMessagePreference(Context context) {
@@ -351,7 +351,7 @@ public class BannerMessagePreference extends Preference implements GroupSectionD
/**
* Sets the text to be displayed in positive button.
*/
- public BannerMessagePreference setPositiveButtonText(String positiveButtonText) {
+ public BannerMessagePreference setPositiveButtonText(CharSequence positiveButtonText) {
if (!TextUtils.equals(positiveButtonText, mPositiveButtonInfo.mText)) {
mPositiveButtonInfo.mText = positiveButtonText;
notifyChanged();
@@ -369,7 +369,7 @@ public class BannerMessagePreference extends Preference implements GroupSectionD
/**
* Sets the text to be displayed in negative button.
*/
- public BannerMessagePreference setNegativeButtonText(String negativeButtonText) {
+ public BannerMessagePreference setNegativeButtonText(CharSequence negativeButtonText) {
if (!TextUtils.equals(negativeButtonText, mNegativeButtonInfo.mText)) {
mNegativeButtonInfo.mText = negativeButtonText;
notifyChanged();
@@ -401,7 +401,7 @@ public class BannerMessagePreference extends Preference implements GroupSectionD
* Sets the subtitle.
*/
@RequiresApi(Build.VERSION_CODES.S)
- public BannerMessagePreference setSubtitle(String subtitle) {
+ public BannerMessagePreference setSubtitle(CharSequence subtitle) {
if (!TextUtils.equals(subtitle, mSubtitle)) {
mSubtitle = subtitle;
notifyChanged();
@@ -421,8 +421,8 @@ public class BannerMessagePreference extends Preference implements GroupSectionD
* Sets the header.
*/
@RequiresApi(Build.VERSION_CODES.VANILLA_ICE_CREAM)
- public BannerMessagePreference setHeader(String header) {
- if (!TextUtils.equals(header, mSubtitle)) {
+ public BannerMessagePreference setHeader(CharSequence header) {
+ if (!TextUtils.equals(header, mHeader)) {
mHeader = header;
notifyChanged();
}
diff --git a/packages/SettingsLib/BannerMessagePreference/src/com/android/settingslib/widget/BannerMessagePreferenceGroup.kt b/packages/SettingsLib/BannerMessagePreference/src/com/android/settingslib/widget/BannerMessagePreferenceGroup.kt
index 75455635fca1..8dd169b1ca86 100644
--- a/packages/SettingsLib/BannerMessagePreference/src/com/android/settingslib/widget/BannerMessagePreferenceGroup.kt
+++ b/packages/SettingsLib/BannerMessagePreference/src/com/android/settingslib/widget/BannerMessagePreferenceGroup.kt
@@ -23,7 +23,6 @@ import android.view.View
import androidx.preference.Preference
import androidx.preference.PreferenceGroup
import androidx.preference.PreferenceViewHolder
-
import com.android.settingslib.widget.preference.banner.R
/**
@@ -68,6 +67,11 @@ class BannerMessagePreferenceGroup @JvmOverloads constructor(
}
childPreferences.add(preference)
+ expandPreference?.let {
+ it.count = childPreferences.size - 1
+ }
+ updateExpandCollapsePreference()
+ updateChildrenVisibility()
return super.addPreference(preference)
}
@@ -76,18 +80,40 @@ class BannerMessagePreferenceGroup @JvmOverloads constructor(
return false
}
childPreferences.remove(preference)
+ expandPreference?.let {
+ it.count = childPreferences.size - 1
+ }
+ updateChildrenVisibility()
+ updateExpandCollapsePreference()
return super.removePreference(preference)
}
+ override fun removePreferenceRecursively(key: CharSequence): Boolean {
+ val preference = findPreference<Preference>(key) ?: return false
+
+ if (preference !is BannerMessagePreference) {
+ return false
+ }
+
+ childPreferences.remove(preference)
+ expandPreference?.let {
+ it.count = childPreferences.size - 1
+ }
+ updateChildrenVisibility()
+ updateExpandCollapsePreference()
+ return super.removePreferenceRecursively(key)
+ }
+
override fun onBindViewHolder(holder: PreferenceViewHolder) {
super.onBindViewHolder(holder)
- if (childPreferences.size >= MAX_CHILDREN - 1) {
+ if (childPreferences.size >= 2) {
if (expandPreference == null) {
expandPreference = NumberButtonPreference(context).apply {
key = expandKey
title = expandTitle
count = childPreferences.size - 1
btnContentDescription = expandContentDescription
+ order = EXPAND_ORDER
clickListener = View.OnClickListener {
toggleExpansion()
}
@@ -100,6 +126,7 @@ class BannerMessagePreferenceGroup @JvmOverloads constructor(
key = collapseKey
title = collapseTitle
icon = collapseIcon
+ order = COLLAPSE_ORDER
setOnClickListener {
toggleExpansion()
}
@@ -112,14 +139,20 @@ class BannerMessagePreferenceGroup @JvmOverloads constructor(
}
private fun updateExpandCollapsePreference() {
- expandPreference?.isVisible = !isExpanded
- collapsePreference?.isVisible = isExpanded
+ expandPreference?.isVisible = !isExpanded && childPreferences.size > 1
+ collapsePreference?.isVisible = isExpanded && childPreferences.size > 1
}
private fun updateChildrenVisibility() {
- for (i in 1 until childPreferences.size) {
+ for (i in 0 until childPreferences.size) {
val child = childPreferences[i]
- child.isVisible = isExpanded
+ if (i == 0) {
+ // Make this explicitly visible when e.g. the first BannerMessagePreference
+ // in the group is dismissed
+ child.isVisible = true
+ } else {
+ child.isVisible = isExpanded
+ }
}
}
@@ -145,5 +178,9 @@ class BannerMessagePreferenceGroup @JvmOverloads constructor(
companion object {
private const val MAX_CHILDREN = 3
+ // Arbitrary large order numbers for the two preferences
+ // needed to make sure any Banners are added above them
+ private const val EXPAND_ORDER = 99
+ private const val COLLAPSE_ORDER = 100
}
} \ No newline at end of file
diff --git a/packages/SettingsLib/Graph/graph.proto b/packages/SettingsLib/Graph/graph.proto
index a834947144a0..ec287c1b65b7 100644
--- a/packages/SettingsLib/Graph/graph.proto
+++ b/packages/SettingsLib/Graph/graph.proto
@@ -93,6 +93,8 @@ message PreferenceProto {
optional PermissionsProto read_permissions = 17;
// The required permissions to write preference value.
optional PermissionsProto write_permissions = 18;
+ // Tag constants associated with the preference.
+ repeated string tags = 19;
// Target of an Intent
message ActionTarget {
diff --git a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt
index 4290437b0d02..e511bf1c175d 100644
--- a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt
+++ b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt
@@ -412,6 +412,7 @@ fun PreferenceMetadata.toProto(
}
metadata.intent(context)?.let { actionTarget = it.toActionTarget(context) }
screenMetadata.getLaunchIntent(context, metadata)?.let { launchIntent = it.toProto() }
+ for (tag in metadata.tags(context)) addTags(tag)
}
persistent = metadata.isPersistent(context)
if (persistent) {
diff --git a/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/IllustrationPreference.java b/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/IllustrationPreference.java
index 4b407c50bbd5..af40c647e805 100644
--- a/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/IllustrationPreference.java
+++ b/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/IllustrationPreference.java
@@ -73,6 +73,7 @@ public class IllustrationPreference extends Preference implements GroupSectionDi
private boolean mLottieDynamicColor;
private CharSequence mContentDescription;
private boolean mIsTablet;
+ private boolean mIsAnimationPaused;
/**
* Interface to listen in on when {@link #onBindViewHolder(PreferenceViewHolder)} occurs.
@@ -143,6 +144,16 @@ public class IllustrationPreference extends Preference implements GroupSectionDi
(FrameLayout) holder.findViewById(R.id.middleground_layout);
final LottieAnimationView illustrationView =
(LottieAnimationView) holder.findViewById(R.id.lottie_view);
+ // Pause and resume animation
+ illustrationFrame.setOnClickListener(v -> {
+ mIsAnimationPaused = !mIsAnimationPaused;
+ if (mIsAnimationPaused) {
+ illustrationView.pauseAnimation();
+ } else {
+ illustrationView.resumeAnimation();
+ }
+ });
+
if (illustrationView != null && !TextUtils.isEmpty(mContentDescription)) {
illustrationView.setContentDescription(mContentDescription);
illustrationView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES);
diff --git a/packages/SettingsLib/Ipc/src/com/android/settingslib/ipc/ApiHandler.kt b/packages/SettingsLib/Ipc/src/com/android/settingslib/ipc/ApiHandler.kt
index 6d746e020243..33f1c3d11fa1 100644
--- a/packages/SettingsLib/Ipc/src/com/android/settingslib/ipc/ApiHandler.kt
+++ b/packages/SettingsLib/Ipc/src/com/android/settingslib/ipc/ApiHandler.kt
@@ -17,6 +17,7 @@
package com.android.settingslib.ipc
import android.app.Application
+import android.content.pm.PackageManager.PERMISSION_GRANTED
import android.os.Bundle
/**
@@ -77,8 +78,20 @@ fun interface ApiPermissionChecker<R> {
companion object {
private val ALWAYS_ALLOW = ApiPermissionChecker<Any> { _, _, _, _ -> true }
+ /** Returns [ApiPermissionChecker] that allows all the request. */
@Suppress("UNCHECKED_CAST")
fun <T> alwaysAllow(): ApiPermissionChecker<T> = ALWAYS_ALLOW as ApiPermissionChecker<T>
+
+ /**
+ * Returns [ApiPermissionChecker] that checks if calling app has given [permission].
+ *
+ * Use [AppOpApiPermissionChecker] if the [permission] is app-op.
+ */
+ fun <T> of(permission: String) =
+ ApiPermissionChecker<T> { application, callingPid, callingUid, _ ->
+ application.checkPermission(permission, callingPid, callingUid) ==
+ PERMISSION_GRANTED
+ }
}
}
diff --git a/packages/SettingsLib/Ipc/src/com/android/settingslib/ipc/AppOpApiPermissionChecker.kt b/packages/SettingsLib/Ipc/src/com/android/settingslib/ipc/AppOpApiPermissionChecker.kt
new file mode 100644
index 000000000000..4509c1e30305
--- /dev/null
+++ b/packages/SettingsLib/Ipc/src/com/android/settingslib/ipc/AppOpApiPermissionChecker.kt
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settingslib.ipc
+
+import android.app.AppOpsManager
+import android.app.Application
+import android.content.Context
+import android.content.pm.PackageManager
+
+/** [ApiPermissionChecker] that checks if calling app has given app-op permission. */
+class AppOpApiPermissionChecker<T>(private val op: Int, private val permission: String) :
+ ApiPermissionChecker<T> {
+
+ @Suppress("DEPRECATION")
+ override fun hasPermission(
+ application: Application,
+ callingPid: Int,
+ callingUid: Int,
+ request: T,
+ ): Boolean {
+ val appOpsManager =
+ application.getSystemService(Context.APP_OPS_SERVICE) as? AppOpsManager ?: return false
+ val pkg = application.packageManager.getNameForUid(callingUid) ?: return false
+ return when (appOpsManager.noteOp(op, callingUid, pkg)) {
+ AppOpsManager.MODE_ALLOWED -> true
+ AppOpsManager.MODE_DEFAULT ->
+ application.checkPermission(permission, callingPid, callingUid) ==
+ PackageManager.PERMISSION_GRANTED
+ else -> false
+ }
+ }
+}
diff --git a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceMetadata.kt b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceMetadata.kt
index 1e70a32cb38b..a8939ab0d902 100644
--- a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceMetadata.kt
+++ b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceMetadata.kt
@@ -89,11 +89,25 @@ interface PreferenceMetadata {
/**
* Return the extras Bundle object associated with this preference.
*
- * It is used to provide more information for metadata.
+ * It is used to provide more *internal* information for metadata. External app is not expected
+ * to use this information as it could be changed in future. Consider [tags] for external usage.
*/
fun extras(context: Context): Bundle? = null
/**
+ * Returns the tags associated with this preference.
+ *
+ * Unlike [extras], tags are exposed for external usage. The returned tag list must be constants
+ * and **append only**. Do not edit/delete existing tag strings as it can cause backward
+ * compatibility issue.
+ *
+ * Use cases:
+ * - identify a specific preference
+ * - identify a group of preferences related to network settings
+ */
+ fun tags(context: Context): Array<String> = arrayOf()
+
+ /**
* Returns if preference is indexable, default value is `true`.
*
* Return `false` only when the preference is always unavailable on current device. If it is
diff --git a/packages/SettingsLib/SettingsSpinner/res/layout/settings_spinner_preference.xml b/packages/SettingsLib/SettingsSpinner/res/layout/settings_spinner_preference.xml
index 526ce1479c68..414a1c3a7b6f 100644
--- a/packages/SettingsLib/SettingsSpinner/res/layout/settings_spinner_preference.xml
+++ b/packages/SettingsLib/SettingsSpinner/res/layout/settings_spinner_preference.xml
@@ -19,8 +19,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
- android:layout_marginStart="?android:attr/listPreferredItemPaddingStart"
- android:layout_marginEnd="?android:attr/listPreferredItemPaddingEnd">
+ android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+ android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
<Spinner
android:id="@+id/spinner"
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/enterprise/RestrictedMode.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/enterprise/RestrictedMode.kt
index a140eb8424a8..a8483308556d 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/enterprise/RestrictedMode.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/enterprise/RestrictedMode.kt
@@ -35,6 +35,7 @@ interface BlockedByAdmin : RestrictedMode {
interface BlockedByEcm : RestrictedMode {
fun showRestrictedSettingsDetails()
+ fun isBlockedByPhoneCall() = false
}
internal data class BlockedByAdminImpl(
@@ -72,8 +73,13 @@ internal data class BlockedByEcmImpl(
private val context: Context,
private val intent: Intent,
) : BlockedByEcm {
+ private val reasonPhoneState = "phone_state"
override fun showRestrictedSettingsDetails() {
context.startActivity(intent)
}
+
+ override fun isBlockedByPhoneCall(): Boolean {
+ return intent.getStringExtra(Intent.EXTRA_REASON) == reasonPhoneState
+ }
}
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/preference/RestrictedSwitchPreferenceModel.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/preference/RestrictedSwitchPreferenceModel.kt
index 0bb92ce72595..fb4880f10d3e 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/preference/RestrictedSwitchPreferenceModel.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/preference/RestrictedSwitchPreferenceModel.kt
@@ -163,9 +163,11 @@ internal class RestrictedSwitchPreferenceModel(
is BlockedByAdmin ->
restrictedMode.getSummary(checkedIfBlockedByAdmin ?: checkedIfNoRestricted())
- is BlockedByEcm ->
+ is BlockedByEcm -> if (restrictedMode.isBlockedByPhoneCall()) {
+ context.getString(com.android.settingslib.R.string.disabled_in_phone_call_text)
+ } else {
context.getString(com.android.settingslib.R.string.disabled)
-
+ }
null -> context.getPlaceholder()
}
}
diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml
index 6a169e984e37..f6364ffb9116 100644
--- a/packages/SettingsLib/res/values-af/strings.xml
+++ b/packages/SettingsLib/res/values-af/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Laai vinnig"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Beheer deur administrateur"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Beheer deur Beperkte Instellings"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Gedeaktiveer"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Toegelaat"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Nie toegelaat nie"</string>
diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml
index be2daa217b10..d374a9a10b3e 100644
--- a/packages/SettingsLib/res/values-am/strings.xml
+++ b/packages/SettingsLib/res/values-am/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"ፈጣን መሙያ"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"በአስተዳዳሪ ቁጥጥር የተደረገበት"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"በተገደበ ቅንብር ቁጥጥር የሚደረግበት"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"ቦዝኗል"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"ይፈቀዳል"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"አይፈቀድም"</string>
diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml
index f334f99fa17f..675a6a6077ba 100644
--- a/packages/SettingsLib/res/values-ar/strings.xml
+++ b/packages/SettingsLib/res/values-ar/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"جارٍ الشحن السريع"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"إعدادات يتحكم فيها المشرف"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"يتحكّم فيه إعداد محظور"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"غير متاح أثناء المكالمات"</string>
<string name="disabled" msgid="8017887509554714950">"غير مفعّل"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"تطبيق مسموح به"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"تطبيق غير مسموح به"</string>
diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml
index 6e676456eb59..c98d3dec33f1 100644
--- a/packages/SettingsLib/res/values-as/strings.xml
+++ b/packages/SettingsLib/res/values-as/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"দ্ৰুত চাৰ্জিং"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"এডমিনৰ দ্বাৰা নিয়ন্ত্ৰিত"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"প্ৰতিবন্ধিত ছেটিঙৰ দ্বাৰা নিয়ন্ত্ৰিত"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"নিষ্ক্ৰিয়"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"অনুমতি দিয়া হৈছে"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"অনুমতি দিয়া হোৱা নাই"</string>
diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml
index b8e75827c6d7..db7d162b9ccd 100644
--- a/packages/SettingsLib/res/values-az/strings.xml
+++ b/packages/SettingsLib/res/values-az/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Sürətli şarj"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Admin tərəfindən nəzarət olunur"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Məhdudlaşdırılmış Ayar ilə nəzarət edilir"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Deaktiv"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"İcazə verilib"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"İcazə verilməyib"</string>
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
index 295dd8369af0..7a00b96e0ed7 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Brzo punjenje"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Kontroliše administrator"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Kontrolišu ograničena podešavanja"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"Nedostupno tokom poziva"</string>
<string name="disabled" msgid="8017887509554714950">"Onemogućeno"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Dozvoljeno"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Nije dozvoljeno"</string>
diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml
index 90ed686f32e3..eb6e0a559ce4 100644
--- a/packages/SettingsLib/res/values-be/strings.xml
+++ b/packages/SettingsLib/res/values-be/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Ідзе хуткая зарадка"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Кантралюецца адміністратарам"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Пад кіраваннем Абмежаванага наладжвання"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Адключанае"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Дазволена"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Забаронена"</string>
diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml
index d45068762aac..ede0a3a69a1a 100644
--- a/packages/SettingsLib/res/values-bg/strings.xml
+++ b/packages/SettingsLib/res/values-bg/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Зарежда се бързо"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Контролира се от администратор"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Управлява се чрез ограничена настройка"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Деактивирано"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Има разрешение"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Няма разрешение"</string>
diff --git a/packages/SettingsLib/res/values-bn/arrays.xml b/packages/SettingsLib/res/values-bn/arrays.xml
index 2b939d0ceee4..6d5da27f3c36 100644
--- a/packages/SettingsLib/res/values-bn/arrays.xml
+++ b/packages/SettingsLib/res/values-bn/arrays.xml
@@ -232,7 +232,7 @@
<item msgid="2464080977843960236">"অ্যানিমেশন স্কেল ১০x"</item>
</string-array>
<string-array name="overlay_display_devices_entries">
- <item msgid="4497393944195787240">"কোনো কিছুই নয়"</item>
+ <item msgid="4497393944195787240">"কোনও কিছুই নয়"</item>
<item msgid="8461943978957133391">"480p"</item>
<item msgid="6923083594932909205">"480p (নিরাপদ)"</item>
<item msgid="1226941831391497335">"720p"</item>
diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml
index 8cb1542c39c2..ab9c34ac6f73 100644
--- a/packages/SettingsLib/res/values-bn/strings.xml
+++ b/packages/SettingsLib/res/values-bn/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"ফাস্ট চার্জিং"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"প্রশাসকের দ্বারা নিয়ন্ত্রিত"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"এটি বিধিনিষেধ সেটিং থেকে নিয়ন্ত্রণ করা হয়"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"অক্ষম হয়েছে"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"অনুমোদিত"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"অনুমোদিত নয়"</string>
diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml
index 1847a4669a07..98e07b9e8749 100644
--- a/packages/SettingsLib/res/values-bs/strings.xml
+++ b/packages/SettingsLib/res/values-bs/strings.xml
@@ -359,7 +359,7 @@
<string name="enable_terminal_title" msgid="3834790541986303654">"Lokalni terminal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Omogući terminalnu aplik. koja nudi pristup lok. kom. okruženju"</string>
<string name="enable_linux_terminal_title" msgid="5076044866895670637">"Linuxovo okruženje za razvoj"</string>
- <string name="enable_linux_terminal_summary" msgid="2029479880888108902">"(Eksperimentalno) Pokreni Linux terminal na Androidu"</string>
+ <string name="enable_linux_terminal_summary" msgid="2029479880888108902">"(Eksperimentalno) Pokreni Linux terminal u Androidu"</string>
<string name="disable_linux_terminal_disclaimer" msgid="3054320531778388231">"Ako onemogućite ovo, podaci Linux terminala će se obrisati"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP provjera"</string>
<string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"Postavke HDCP provjere"</string>
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Brzo punjenje"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Pod kontrolom administratora"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Kontrolira ograničena postavka"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"Nije dostupno tijekom poziva"</string>
<string name="disabled" msgid="8017887509554714950">"Onemogućeno"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Dozvoljeno"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Nije dozvoljeno"</string>
diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml
index ad9cc351c788..ef2920d2a28e 100644
--- a/packages/SettingsLib/res/values-ca/strings.xml
+++ b/packages/SettingsLib/res/values-ca/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Càrrega ràpida"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Controlat per l\'administrador"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Controlat per l\'opció de configuració restringida"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Desactivat"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Amb permís"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Sense permís"</string>
diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml
index 867ddfdaf394..a774a1d9bffc 100644
--- a/packages/SettingsLib/res/values-cs/strings.xml
+++ b/packages/SettingsLib/res/values-cs/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Rychlé nabíjení"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Spravováno administrátorem"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Spravováno omezeným nastavením"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"Při volání nedostupné"</string>
<string name="disabled" msgid="8017887509554714950">"Deaktivováno"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Povoleno"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Není povoleno"</string>
diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml
index 43e9cfdc7d7f..71c6be17eb94 100644
--- a/packages/SettingsLib/res/values-da/strings.xml
+++ b/packages/SettingsLib/res/values-da/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Lynopladning"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Kontrolleret af administratoren"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Styres af en begrænset indstilling"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Deaktiveret"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Tilladt"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Ikke tilladt"</string>
diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml
index 62aa4a7214b9..1955da0b80e0 100644
--- a/packages/SettingsLib/res/values-de/strings.xml
+++ b/packages/SettingsLib/res/values-de/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Schnelles Laden"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Durch den Administrator verwaltet"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Gesteuert durch eingeschränkte Einstellung"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Deaktiviert"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Zugelassen"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Nicht zugelassen"</string>
diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml
index ab75a9b42f02..7f9f646b0eaf 100644
--- a/packages/SettingsLib/res/values-el/strings.xml
+++ b/packages/SettingsLib/res/values-el/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Γρήγορη φόρτιση"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Ελέγχονται από το διαχειριστή"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Ελέγχεται από τη Ρύθμιση με περιορισμό"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Απενεργοποιημένη"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Επιτρέπεται"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Δεν επιτρέπεται"</string>
diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml
index 7573543ece11..58bb7d8b951a 100644
--- a/packages/SettingsLib/res/values-en-rAU/strings.xml
+++ b/packages/SettingsLib/res/values-en-rAU/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Fast charging"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Controlled by admin"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Controlled by restricted setting"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Disabled"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Allowed"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Not allowed"</string>
diff --git a/packages/SettingsLib/res/values-en-rCA/strings.xml b/packages/SettingsLib/res/values-en-rCA/strings.xml
index 3d5d5c7a58b6..748d7b11d7ed 100644
--- a/packages/SettingsLib/res/values-en-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-en-rCA/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Fast charging"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Controlled by admin"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Controlled by Restricted Setting"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"Unavailable during calls"</string>
<string name="disabled" msgid="8017887509554714950">"Disabled"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Allowed"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Not allowed"</string>
diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml
index 7573543ece11..58bb7d8b951a 100644
--- a/packages/SettingsLib/res/values-en-rGB/strings.xml
+++ b/packages/SettingsLib/res/values-en-rGB/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Fast charging"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Controlled by admin"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Controlled by restricted setting"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Disabled"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Allowed"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Not allowed"</string>
diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml
index 7573543ece11..58bb7d8b951a 100644
--- a/packages/SettingsLib/res/values-en-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-en-rIN/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Fast charging"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Controlled by admin"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Controlled by restricted setting"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Disabled"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Allowed"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Not allowed"</string>
diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml
index bb38f8f103c4..acd67908dfba 100644
--- a/packages/SettingsLib/res/values-es-rUS/strings.xml
+++ b/packages/SettingsLib/res/values-es-rUS/strings.xml
@@ -249,9 +249,9 @@
<string name="apn_settings_not_available" msgid="1147111671403342300">"La configuración del nombre de punto de acceso no está disponible para este usuario."</string>
<string name="enable_adb" msgid="8072776357237289039">"Depuración por USB"</string>
<string name="enable_adb_summary" msgid="3711526030096574316">"Modo de depuración cuando se conecta el USB"</string>
- <string name="clear_adb_keys" msgid="3010148733140369917">"Revocar autorizaciones de depur. USB"</string>
+ <string name="clear_adb_keys" msgid="3010148733140369917">"Revocar autorizaciones de depuración por USB"</string>
<string name="enable_adb_wireless" msgid="6973226350963971018">"Depuración inalámbrica"</string>
- <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Modo de depuración cuando la conexión Wi‑Fi está activada"</string>
+ <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Modo de depuración cuando haya conexión Wi‑Fi"</string>
<string name="adb_wireless_error" msgid="721958772149779856">"Error"</string>
<string name="adb_wireless_settings" msgid="2295017847215680229">"Depuración inalámbrica"</string>
<string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Para ver y usar los dispositivos disponibles, activa la depuración inalámbrica"</string>
@@ -288,7 +288,7 @@
<string name="oem_unlock_enable_summary" msgid="5857388174390953829">"Permitir que el cargador de inicio se desbloquee"</string>
<string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"¿Permitir desbloqueo de OEM?"</string>
<string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"ADVERTENCIA: Las funciones de protección de dispositivos no funcionarán en este dispositivo mientras esta configuración esté activada."</string>
- <string name="mock_location_app" msgid="6269380172542248304">"Seleccionar aplicación de ubicación de prueba"</string>
+ <string name="mock_location_app" msgid="6269380172542248304">"Seleccionar app de ubicación ficticia"</string>
<string name="mock_location_app_not_set" msgid="6972032787262831155">"No se configuró aplicación de ubicación de prueba."</string>
<string name="mock_location_app_set" msgid="4706722469342913843">"Aplicación de ubicación de prueba: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="debug_networking_category" msgid="6829757985772659599">"Redes"</string>
@@ -424,7 +424,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala de animación de transición"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala de duración de animador"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simular pantallas secundarias"</string>
- <string name="shade_display_awareness_title" msgid="8000009404669495876">"Posición de visualización de la sombra"</string>
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Posición del panel en la pantalla"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Aplicaciones"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Eliminar actividades"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Descartar todas las actividades en cuanto el usuario las abandona"</string>
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Carga rápida"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Controlada por el administrador"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Función controlada por configuración restringida"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"No disponible durante llamadas"</string>
<string name="disabled" msgid="8017887509554714950">"Inhabilitada"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Con permiso"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"No permitida"</string>
@@ -615,7 +616,7 @@
<string name="help_label" msgid="3528360748637781274">"Ayuda y comentarios"</string>
<string name="storage_category" msgid="2287342585424631813">"Almacenamiento"</string>
<string name="shared_data_title" msgid="1017034836800864953">"Datos compartidos"</string>
- <string name="shared_data_summary" msgid="5516326713822885652">"Ver y modificar los datos compartidos"</string>
+ <string name="shared_data_summary" msgid="5516326713822885652">"Consulta y modifica los datos compartidos"</string>
<string name="shared_data_no_blobs_text" msgid="3108114670341737434">"No hay datos compartidos para este usuario."</string>
<string name="shared_data_query_failure_text" msgid="3489828881998773687">"Se produjo un error al recuperar los datos compartidos. Vuelve a intentarlo."</string>
<string name="blob_id_text" msgid="8680078988996308061">"ID de datos compartidos: <xliff:g id="BLOB_ID">%d</xliff:g>"</string>
@@ -681,7 +682,7 @@
<string name="guest_exit_quick_settings_button" msgid="1912362095913765471">"Salir del modo de invitado"</string>
<string name="guest_notification_ephemeral" msgid="7263252466950923871">"Cuando salgas, se borrará toda la actividad"</string>
<string name="guest_notification_non_ephemeral" msgid="6843799963012259330">"Puedes guardar o borrar la actividad cuando salgas"</string>
- <string name="guest_notification_non_ephemeral_non_first_login" msgid="8009307983766934876">"Restablece la sesión para eliminar la actividad ahora; o guarda o borra la actividad cuando salgas"</string>
+ <string name="guest_notification_non_ephemeral_non_first_login" msgid="8009307983766934876">"Restablece la sesión para eliminar la actividad ahora, o guarda o borra la actividad cuando salgas"</string>
<string name="user_image_photo_selector" msgid="433658323306627093">"Seleccionar foto"</string>
<string name="failed_attempts_now_wiping_device" msgid="4016329172216428897">"Hubo demasiados intentos incorrectos. Se borrarán los datos de este dispositivo."</string>
<string name="failed_attempts_now_wiping_user" msgid="469060411789668050">"Hubo demasiados intentos incorrectos. Se borrará este usuario."</string>
diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml
index eb03083c3377..b881994d911f 100644
--- a/packages/SettingsLib/res/values-es/strings.xml
+++ b/packages/SettingsLib/res/values-es/strings.xml
@@ -359,7 +359,7 @@
<string name="enable_terminal_title" msgid="3834790541986303654">"Terminal local"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Habilitar aplicación de terminal que ofrece acceso a shell local"</string>
<string name="enable_linux_terminal_title" msgid="5076044866895670637">"Entorno de desarrollo de Linux"</string>
- <string name="enable_linux_terminal_summary" msgid="2029479880888108902">"(Experimental) Ejecutar un terminal de Linux en Android"</string>
+ <string name="enable_linux_terminal_summary" msgid="2029479880888108902">"(Experimental) Ejecuta un terminal de Linux en Android"</string>
<string name="disable_linux_terminal_disclaimer" msgid="3054320531778388231">"Si la inhabilitas, se borrarán los datos del terminal de Linux"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Comprobación de HDCP"</string>
<string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"Establecer comprobación HDCP"</string>
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Carga rápida"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Controlada por el administrador"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Controlado por ajustes restringidos"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Inhabilitada"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Autorizadas"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"No autorizadas"</string>
diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml
index 0628ba37e02e..b442ed3c6578 100644
--- a/packages/SettingsLib/res/values-et/strings.xml
+++ b/packages/SettingsLib/res/values-et/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Kiirlaadimine"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Juhib administraator"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Haldavad piiranguga seaded"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"Pole kõnede ajal saadaval"</string>
<string name="disabled" msgid="8017887509554714950">"Keelatud"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Lubatud"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Pole lubatud"</string>
diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml
index b257dd160325..a5235cf5336a 100644
--- a/packages/SettingsLib/res/values-eu/strings.xml
+++ b/packages/SettingsLib/res/values-eu/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Kargatze bizkorra"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Administratzaileak kontrolatzen du"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Ezarpen mugatuak kontrolatzen du"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Desgaituta"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Baimenduta"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Baimendu gabe"</string>
diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml
index 60121ccf0055..6d5e42b976f5 100644
--- a/packages/SettingsLib/res/values-fa/strings.xml
+++ b/packages/SettingsLib/res/values-fa/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"درحال شارژ سریع"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"توسط سرپرست سیستم کنترل می‌شود"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"با تنظیم «حالت محدود» کنترل می‌شود"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"غیر فعال شد"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"مجاز بودن"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"مجاز نبودن"</string>
diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml
index d0d90379b2c0..1e2db99f14d7 100644
--- a/packages/SettingsLib/res/values-fi/strings.xml
+++ b/packages/SettingsLib/res/values-fi/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Nopea lataus"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Järjestelmänvalvoja hallinnoi tätä asetusta."</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Rajoitettujen asetusten mukaisesti"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Pois päältä"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Sallittu"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Ei sallittu"</string>
diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml
index 27e4906f3d79..f2a3454268c0 100644
--- a/packages/SettingsLib/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml
@@ -359,7 +359,7 @@
<string name="enable_terminal_title" msgid="3834790541986303654">"Terminal local"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Activer l\'appli Terminal permettant l\'accès au shell local"</string>
<string name="enable_linux_terminal_title" msgid="5076044866895670637">"Environnement de développement Linux"</string>
- <string name="enable_linux_terminal_summary" msgid="2029479880888108902">"(Expérimental) Exécutez le terminal Linux sur Android"</string>
+ <string name="enable_linux_terminal_summary" msgid="2029479880888108902">"(Expérimental) Exécuter le terminal Linux sur Android"</string>
<string name="disable_linux_terminal_disclaimer" msgid="3054320531778388231">"La désactivation effacera les données du terminal Linux"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Vérification HDCP"</string>
<string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"Configurer vérification HDCP"</string>
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Recharge rapide"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Contrôlé par l\'administrateur"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Contrôlé par les paramètres restreints"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Désactivée"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Autorisée"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Non autorisée"</string>
diff --git a/packages/SettingsLib/res/values-fr/arrays.xml b/packages/SettingsLib/res/values-fr/arrays.xml
index 970e21719a87..36eb52d66ef2 100644
--- a/packages/SettingsLib/res/values-fr/arrays.xml
+++ b/packages/SettingsLib/res/values-fr/arrays.xml
@@ -296,7 +296,7 @@
<string-array name="shade_display_awareness_summaries">
<item msgid="2964753205732912921">"Afficher le volet sur l\'écran de l\'appareil uniquement"</item>
<item msgid="7795034287069726554">"Afficher l\'appareil sur un seul écran externe"</item>
- <item msgid="5280431949814340475">"Afficher l\'appareil sur le dernier écran sélectionné"</item>
+ <item msgid="5280431949814340475">"Afficher l\'appareil sur le dernier écran avec lequel l\'utilisateur a interagi"</item>
</string-array>
<string-array name="shade_display_awareness_values">
<item msgid="3055776101992426514">"default_display"</item>
diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml
index 87d768a65761..a017fa74e658 100644
--- a/packages/SettingsLib/res/values-fr/strings.xml
+++ b/packages/SettingsLib/res/values-fr/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Recharge rapide"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Contrôlé par l\'administrateur"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Contrôlé par les paramètres restreints"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Désactivée"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Autorisé"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Non autorisé"</string>
@@ -681,7 +683,7 @@
<string name="guest_exit_quick_settings_button" msgid="1912362095913765471">"Quitter la session Invité"</string>
<string name="guest_notification_ephemeral" msgid="7263252466950923871">"Toute l\'activité sera supprimée à la fin de la session"</string>
<string name="guest_notification_non_ephemeral" msgid="6843799963012259330">"Vous pouvez enregistrer ou supprimer l\'activité en quittant"</string>
- <string name="guest_notification_non_ephemeral_non_first_login" msgid="8009307983766934876">"Réinitialisez la session pour supprimer immédiatement l\'activité. Vous pourrez aussi l\'enregistrer ou la supprimer en quittant la session."</string>
+ <string name="guest_notification_non_ephemeral_non_first_login" msgid="8009307983766934876">"Réinitialisez pour supprimer immédiatement l\'activité de la session, ou choisissez d\'enregistrer ou de supprimer l\'activité à la fin de la session."</string>
<string name="user_image_photo_selector" msgid="433658323306627093">"Sélectionner une photo"</string>
<string name="failed_attempts_now_wiping_device" msgid="4016329172216428897">"Trop de tentatives incorrectes. Les données de cet appareil vont être supprimées."</string>
<string name="failed_attempts_now_wiping_user" msgid="469060411789668050">"Trop de tentatives incorrectes. Ce compte utilisateur va être supprimé."</string>
diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml
index 4e90b53286ca..6b2801938173 100644
--- a/packages/SettingsLib/res/values-gl/strings.xml
+++ b/packages/SettingsLib/res/values-gl/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Carga rápida"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Opción controlada polo administrador"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Baixo o control de opcións restrinxidas"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Desactivada"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Permiso concedido"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Permiso non concedido"</string>
diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml
index 9b8f6277410b..fbf9afc0a8a4 100644
--- a/packages/SettingsLib/res/values-gu/strings.xml
+++ b/packages/SettingsLib/res/values-gu/strings.xml
@@ -223,7 +223,7 @@
<string name="tts_engine_preference_section_title" msgid="3861562305498624904">"મનપસંદ એન્જિન"</string>
<string name="tts_general_section_title" msgid="8919671529502364567">"સામાન્ય"</string>
<string name="tts_reset_speech_pitch_title" msgid="7149398585468413246">"સ્પીચની પિચ ફરીથી સેટ કરો"</string>
- <string name="tts_reset_speech_pitch_summary" msgid="6822904157021406449">"ટેક્સ્ટ બોલાયેલ છે તે પિચને ડિફોલ્ટ પર ફરીથી સેટ કરો."</string>
+ <string name="tts_reset_speech_pitch_summary" msgid="6822904157021406449">"ટેક્સ્ટ બોલાયેલી છે તે પિચને ડિફૉલ્ટ પર રીસેટ કરો."</string>
<string-array name="tts_rate_entries">
<item msgid="4563475121751694801">"60%"</item>
<item msgid="6323184326270638754">"80%"</item>
@@ -446,7 +446,7 @@
<string name="local_backup_password_toast_validation_failure" msgid="714669442363647122">"નિષ્ફળતા સેટિંગ બેકઅપ પાસવર્ડ"</string>
<string name="loading_injected_setting_summary" msgid="8394446285689070348">"લોડ થઈ રહ્યું છે…"</string>
<string-array name="color_mode_names">
- <item msgid="3836559907767149216">"વાઇબ્રન્ટ (ડિફોલ્ટ)"</item>
+ <item msgid="3836559907767149216">"વાઇબ્રન્ટ (ડિફૉલ્ટ)"</item>
<item msgid="9112200311983078311">"કુદરતી"</item>
<item msgid="6564241960833766170">"સ્ટૅન્ડર્ડ"</item>
</string-array>
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"ઝડપી ચાર્જિંગ"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"વ્યવસ્થાપક દ્વારા નિયંત્રિત"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"પ્રતિબંધિત સેટિંગ દ્વારા નિયંત્રિત"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"બંધ કરી"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"મંજૂરી છે"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"મંજૂરી નથી"</string>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index 1923a72e8898..e883615477fe 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -506,7 +506,7 @@
<string name="power_charging_future_paused" msgid="1809543660923642799">"<xliff:g id="LEVEL">%1$s</xliff:g> - चार्ज हो रही है"</string>
<string name="power_fast_charging_duration_v2" msgid="3797735998640359490">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATUS">%2$s</xliff:g> - बैटरी <xliff:g id="TIME">%3$s</xliff:g> में पूरी चार्ज हो जाएगी"</string>
<string name="power_charging_duration_v2" msgid="2938998284074003248">"<xliff:g id="LEVEL">%1$s</xliff:g> - बैटरी <xliff:g id="TIME">%2$s</xliff:g> में पूरी चार्ज हो जाएगी"</string>
- <string name="power_remaining_charging_duration_only_v2" msgid="5358176435722950193">"बैटरी <xliff:g id="TIME">%1$s</xliff:g> में पूरी चार्ज हो जाएगी"</string>
+ <string name="power_remaining_charging_duration_only_v2" msgid="5358176435722950193">"बैटरी <xliff:g id="TIME">%1$s</xliff:g> तक पूरी चार्ज हो जाएगी"</string>
<string name="power_remaining_fast_charging_duration_only_v2" msgid="6270950195810579563">"बैटरी <xliff:g id="TIME">%1$s</xliff:g> तक पूरी चार्ज हो जाएगी"</string>
<string name="battery_info_status_unknown" msgid="268625384868401114">"अज्ञात"</string>
<string name="battery_info_status_charging" msgid="4279958015430387405">"चार्ज हो रही है"</string>
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"फ़ास्ट चार्जिंग"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"इसका नियंत्रण एडमिन के पास है"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"इसे पाबंदी मोड वाली सेटिंग से कंट्रोल किया जाता है"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"बंद किया गया"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"अनुमति है"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"अनुमति नहीं है"</string>
diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml
index 4c743a9c6219..131195e42e48 100644
--- a/packages/SettingsLib/res/values-hr/strings.xml
+++ b/packages/SettingsLib/res/values-hr/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Brzo punjenje"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Kontrolira administrator"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Kontrolira ograničena postavka"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"Nije dostupno tijekom poziva"</string>
<string name="disabled" msgid="8017887509554714950">"Onemogućeno"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Dopušteno"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Nije dopušteno"</string>
diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml
index b17dfff697e4..6627cb140777 100644
--- a/packages/SettingsLib/res/values-hu/strings.xml
+++ b/packages/SettingsLib/res/values-hu/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Gyors töltés…"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Rendszergazda által irányítva"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Korlátozott beállítás vezérli"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Letiltva"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Engedélyezett"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Nem engedélyezett"</string>
diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml
index abca57c3ca7b..2248b7bd59f0 100644
--- a/packages/SettingsLib/res/values-hy/strings.xml
+++ b/packages/SettingsLib/res/values-hy/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Արագ լիցքավորում"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Վերահսկվում է ադմինիստրատորի կողմից"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Կառավարվում է սահմանափակ ռեժիմի կարգավորումներով"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Կասեցված է"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Թույլատրված է"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Արգելված"</string>
diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml
index 784a7582f962..5798f8d4931b 100644
--- a/packages/SettingsLib/res/values-in/strings.xml
+++ b/packages/SettingsLib/res/values-in/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Pengisian daya cepat"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Dikontrol oleh admin"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Dikontrol oleh Setelan Terbatas"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Dinonaktifkan"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Diizinkan"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Tidak diizinkan"</string>
diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml
index 88f657a17b9d..e8e49d072ef7 100644
--- a/packages/SettingsLib/res/values-is/strings.xml
+++ b/packages/SettingsLib/res/values-is/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Hraðhleðsla"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Stjórnað af kerfisstjóra"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Stýrt af takmarkaði stillingu"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Óvirkt"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Heimilað"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Ekki heimilað"</string>
diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml
index a604e5bf40cc..b2404cf7a305 100644
--- a/packages/SettingsLib/res/values-it/strings.xml
+++ b/packages/SettingsLib/res/values-it/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Ricarica rapida"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Gestita dall\'amministratore"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Gestita tramite impostazioni con restrizioni"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Disattivato"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Autorizzazione concessa"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Autorizzazione non concessa"</string>
diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml
index be26f71621c4..b5201058a439 100644
--- a/packages/SettingsLib/res/values-iw/strings.xml
+++ b/packages/SettingsLib/res/values-iw/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"טעינה מהירה"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"נמצא בשליטת מנהל מערכת"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"בשליטה של הגדרה מוגבלת"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"מושבת"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"מורשה"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"לא מורשה"</string>
diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml
index 10f142743dff..320c707a92a0 100644
--- a/packages/SettingsLib/res/values-ja/strings.xml
+++ b/packages/SettingsLib/res/values-ja/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"急速充電中"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"管理者により管理されています"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"制限付き設定によって管理されています"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"通話中は利用できません"</string>
<string name="disabled" msgid="8017887509554714950">"無効"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"許可"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"許可しない"</string>
@@ -666,7 +667,7 @@
<string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"削除"</string>
<string name="guest_resetting" msgid="7822120170191509566">"ゲストをリセットしています…"</string>
<string name="guest_reset_and_restart_dialog_title" msgid="3396657008451616041">"ゲスト セッションをリセットしますか?"</string>
- <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"新しいゲスト セッションが開始し、現在のセッションのすべてのアプリとデータが削除されます"</string>
+ <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"新しいゲスト セッションが開始され、現在のセッションのすべてのアプリとデータが削除されます"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"ゲストモードを終了しますか?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"現在のゲスト セッションからすべてのアプリとデータが削除されます"</string>
<string name="grant_admin" msgid="4323199171790522574">"はい、管理者にします"</string>
diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml
index 4473216657ee..6503795b3634 100644
--- a/packages/SettingsLib/res/values-ka/strings.xml
+++ b/packages/SettingsLib/res/values-ka/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"სწრაფი დატენა"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"იმართება ადმინისტრატორის მიერ"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"კონტროლდება შეზღუდული რეჟიმის პარამეტრით"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"მიუწვდომელია ზარების განხორციელებისას"</string>
<string name="disabled" msgid="8017887509554714950">"გამორთული"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"დაშვებულია"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"დაუშვებელია"</string>
diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml
index a0a91c8089eb..ebb723ce87c2 100644
--- a/packages/SettingsLib/res/values-kk/strings.xml
+++ b/packages/SettingsLib/res/values-kk/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Жылдам зарядтау"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Әкімші басқарады"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Шектелген параметрлер арқылы басқарылады."</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Өшірілген"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Рұқсат берілген"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Рұқсат етілмеген"</string>
diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml
index bee7772db42b..3cc214e91f9a 100644
--- a/packages/SettingsLib/res/values-km/strings.xml
+++ b/packages/SettingsLib/res/values-km/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"ការសាកថ្មរហ័ស"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"គ្រប់គ្រងដោយអ្នកគ្រប់គ្រង"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"គ្រប់គ្រងដោយការកំណត់ដែលបានរឹតបន្តឹង"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"មិនអាច​ប្រើបានទេ​អំឡុងពេល​ហៅទូរសព្ទ"</string>
<string name="disabled" msgid="8017887509554714950">"បិទ"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"បាន​អនុញ្ញាត"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"មិន​បានអនុញ្ញាត​"</string>
diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml
index f11dff5b10c8..b0b6fcac6cf9 100644
--- a/packages/SettingsLib/res/values-kn/strings.xml
+++ b/packages/SettingsLib/res/values-kn/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"ಫಾಸ್ಟ್ ಚಾರ್ಜಿಂಗ್"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"ನಿರ್ವಾಹಕರ ಮೂಲಕ ನಿಯಂತ್ರಿಸಲಾಗಿದೆ"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"ನಿರ್ಬಂಧಿಸಲಾದ ಸೆಟ್ಟಿಂಗ್ ಮೂಲಕ ನಿಯಂತ್ರಿಸಲಾಗುತ್ತದೆ"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"ಅನುಮತಿಸಲಾಗಿದೆ"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"ಅನುಮತಿ ಇಲ್ಲ"</string>
diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml
index 672ad8c1d0a3..9a2af376bdc6 100644
--- a/packages/SettingsLib/res/values-ko/strings.xml
+++ b/packages/SettingsLib/res/values-ko/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"급속 충전"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"관리자가 제어"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"제한된 설정으로 제어됨"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"사용 안함"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"허용됨"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"허용되지 않음"</string>
diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml
index a9b4a1e7100d..a756d57b1e96 100644
--- a/packages/SettingsLib/res/values-ky/strings.xml
+++ b/packages/SettingsLib/res/values-ky/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Ыкчам кубаттоо"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Администратор тарабынан көзөмөлдөнөт"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Чектелген параметр аркылуу көзөмөлдөнөт"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Өчүрүлгөн"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Уруксат берилген"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Тыюу салынган"</string>
@@ -690,7 +692,7 @@
<string name="cached_apps_freezer_device_default" msgid="2616594131750144342">"Түзмөктүн демейки параметри"</string>
<string name="cached_apps_freezer_disabled" msgid="4816382260660472042">"Өчүк"</string>
<string name="cached_apps_freezer_enabled" msgid="8866703500183051546">"Күйүк"</string>
- <string name="cached_apps_freezer_reboot_dialog_text" msgid="695330563489230096">"Бул өзгөрүү күчүнө кириши үчүн, түзмөктү өчүрүп күйгүзүңүз. Азыр же кийинчерээк өчүрүп күйгүзсөңүз болот."</string>
+ <string name="cached_apps_freezer_reboot_dialog_text" msgid="695330563489230096">"Бул өзгөрүү күчүнө кириши үчүн түзмөктү өчүрүп күйгүзүңүз. Азыр же кийинчерээк кылсаңыз болот."</string>
<string name="media_transfer_wired_headphone_name" msgid="8698668536022665254">"Зымдуу гарнитура"</string>
<string name="media_transfer_headphone_name" msgid="1157798825650178478">"Зымдуу аудио түзмөк"</string>
<string name="media_transfer_usb_audio_name" msgid="1789292056757821355">"USB аудио"</string>
diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml
index cc8e42ca9d8a..3046b4fab03e 100644
--- a/packages/SettingsLib/res/values-lo/strings.xml
+++ b/packages/SettingsLib/res/values-lo/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"ກຳລັງສາກໄວ"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"ຄວບຄຸມໂດຍຜູ້ເບິ່ງແຍງ"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"ຄວບຄຸມໂດຍການຕັ້ງຄ່າທີ່ຈຳກັດໄວ້"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"ບໍ່ສາມາດໃຊ້ໄດ້ລະຫວ່າງການໂທ"</string>
<string name="disabled" msgid="8017887509554714950">"ປິດການນຳໃຊ້"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"ອະນຸຍາດແລ້ວ"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"ບໍ່ອະນຸຍາດ"</string>
diff --git a/packages/SettingsLib/res/values-lt/arrays.xml b/packages/SettingsLib/res/values-lt/arrays.xml
index cf9b8d870b43..6129af9b5a15 100644
--- a/packages/SettingsLib/res/values-lt/arrays.xml
+++ b/packages/SettingsLib/res/values-lt/arrays.xml
@@ -207,7 +207,7 @@
<string-array name="window_animation_scale_entries">
<item msgid="2675263395797191850">"Animacija išjungta"</item>
<item msgid="5790132543372767872">"Animacijos mastelis 0,5x"</item>
- <item msgid="2529692189302148746">"Animacijos mastelis 1x"</item>
+ <item msgid="2529692189302148746">"Animacijos mastelis 1 x"</item>
<item msgid="8072785072237082286">"Animacijos mastelis 1,5x"</item>
<item msgid="3531560925718232560">"Animacijos mastelis 2x"</item>
<item msgid="4542853094898215187">"Animacijos mastelis 5x"</item>
diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml
index f81d52777743..caa5b18855a8 100644
--- a/packages/SettingsLib/res/values-lt/strings.xml
+++ b/packages/SettingsLib/res/values-lt/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Spartusis įkrovimas"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Valdo administratorius"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Valdoma pagal apribotą nustatymą"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Neleidžiama"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Leidžiama"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Neleidžiama"</string>
diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml
index 2738a4072efc..84bf6929ca03 100644
--- a/packages/SettingsLib/res/values-lv/strings.xml
+++ b/packages/SettingsLib/res/values-lv/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Ātrā uzlāde"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Kontrolē administrators"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Kontrolē ierobežots iestatījums"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Atspējots"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Atļauts"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Nav atļauts"</string>
diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml
index 9ec3bac71b65..a06da85e0041 100644
--- a/packages/SettingsLib/res/values-mk/strings.xml
+++ b/packages/SettingsLib/res/values-mk/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Се полни брзо"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Контролирано од администраторот"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Контролирано со ограничени поставки"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Оневозможено"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Со дозвола"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Без дозвола"</string>
diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml
index fd8861f09674..3e59d9f0b586 100644
--- a/packages/SettingsLib/res/values-ml/strings.xml
+++ b/packages/SettingsLib/res/values-ml/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"അതിവേഗ ചാർജിംഗ്"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"അഡ്‌മിൻ നിയന്ത്രിക്കുന്നത്"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"നിയന്ത്രിത ക്രമീകരണം ഉപയോഗിച്ച് നിയന്ത്രിക്കുന്നത്"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"കോളുകൾ ചെയ്യുമ്പോൾ ലഭ്യമല്ല"</string>
<string name="disabled" msgid="8017887509554714950">"പ്രവർത്തനരഹിതമാക്കി"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"അനുവദനീയം"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"അനുവദിച്ചിട്ടില്ല"</string>
diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml
index a1ab4f3b8671..c165213214da 100644
--- a/packages/SettingsLib/res/values-mn/strings.xml
+++ b/packages/SettingsLib/res/values-mn/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Шуурхай цэнэглэх"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Админ удирдсан"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Хязгаарлагдсан тохиргоогоор хянадаг"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Идэвхгүйжүүлсэн"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Зөвшөөрсөн"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Зөвшөөрөөгүй"</string>
diff --git a/packages/SettingsLib/res/values-mr/arrays.xml b/packages/SettingsLib/res/values-mr/arrays.xml
index 2fd20581b248..959499c931f3 100644
--- a/packages/SettingsLib/res/values-mr/arrays.xml
+++ b/packages/SettingsLib/res/values-mr/arrays.xml
@@ -232,7 +232,7 @@
<item msgid="2464080977843960236">"ॲनिमेशन स्केल 10x"</item>
</string-array>
<string-array name="overlay_display_devices_entries">
- <item msgid="4497393944195787240">"काहीही नाही"</item>
+ <item msgid="4497393944195787240">"काेणताही नाही"</item>
<item msgid="8461943978957133391">"480p"</item>
<item msgid="6923083594932909205">"480p (सुरक्षित)"</item>
<item msgid="1226941831391497335">"720p"</item>
diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml
index 1af92867b9ab..d47f8ffd3c99 100644
--- a/packages/SettingsLib/res/values-mr/strings.xml
+++ b/packages/SettingsLib/res/values-mr/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"फास्ट चार्जिंग"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"प्रशासकाने नियंत्रित केलेले"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"प्रतिबंधित केलेल्या सेटिंग द्वारे नियंत्रित"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"अक्षम"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"अनुमती आहे"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"अनुमती नाही"</string>
diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml
index 97a7b43e0200..412100c07009 100644
--- a/packages/SettingsLib/res/values-ms/strings.xml
+++ b/packages/SettingsLib/res/values-ms/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Pengecasan pantas"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Dikawal oleh pentadbir"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Dikawal oleh Tetapan Terhad"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"Tidak tersedia semasa panggilan berlangsung"</string>
<string name="disabled" msgid="8017887509554714950">"Dilumpuhkan"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Dibenarkan"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Tidak dibenarkan"</string>
diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml
index 4a31a1216325..4ba82fdd8a1d 100644
--- a/packages/SettingsLib/res/values-my/strings.xml
+++ b/packages/SettingsLib/res/values-my/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"အမြန်အားသွင်းခြင်း"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"စီမံခန့်ခွဲသူမှ ထိန်းချုပ်ပါသည်"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"ကန့်သတ်ဆက်တင်ဖြင့် ထိန်းချုပ်ထားသည်"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"ပိတ်ထားပြီး"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"ခွင့်ပြုထားသည်"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"ခွင့်မပြုပါ"</string>
diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml
index 94a701b3f8e2..f6de3466a816 100644
--- a/packages/SettingsLib/res/values-nb/strings.xml
+++ b/packages/SettingsLib/res/values-nb/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Hurtiglading"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Kontrollert av administratoren"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Kontrollert av en begrenset innstilling"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Deaktivert"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Tillatt"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Ikke tillatt"</string>
diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml
index a2ee640ef55e..28d02a14c484 100644
--- a/packages/SettingsLib/res/values-ne/strings.xml
+++ b/packages/SettingsLib/res/values-ne/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"फास्ट चार्जिङ"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"प्रशासकद्वारा नियन्त्रित"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"प्रतिबन्धित सेटिङले नियन्त्रण गरेको"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"असक्षम पारियो"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"अनुमति छ"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"अनुमति छैन"</string>
@@ -615,7 +617,7 @@
<string name="help_label" msgid="3528360748637781274">"मद्दत र प्रतिक्रिया"</string>
<string name="storage_category" msgid="2287342585424631813">"भण्डारण"</string>
<string name="shared_data_title" msgid="1017034836800864953">"सेयर गरिएको डेटा"</string>
- <string name="shared_data_summary" msgid="5516326713822885652">"साझा डेटा हेर्नुहोस् र परिमार्जन गर्नुहोस्"</string>
+ <string name="shared_data_summary" msgid="5516326713822885652">"सेयर गरिएको डेटा हेर्नुहोस् र परिमार्जन गर्नुहोस्"</string>
<string name="shared_data_no_blobs_text" msgid="3108114670341737434">"यो प्रयोगकर्तासँग कुनै पनि डेटा सेयर गरिएको छैन।"</string>
<string name="shared_data_query_failure_text" msgid="3489828881998773687">"सेयर गरिएको डेटा प्राप्त गर्ने क्रममा कुनै त्रुटि भयो। फेरि प्रयास गर्नुहोस्।"</string>
<string name="blob_id_text" msgid="8680078988996308061">"साझा डेटाको ID: <xliff:g id="BLOB_ID">%d</xliff:g>"</string>
@@ -690,7 +692,7 @@
<string name="cached_apps_freezer_device_default" msgid="2616594131750144342">"डिफल्ट डिभाइस"</string>
<string name="cached_apps_freezer_disabled" msgid="4816382260660472042">"असक्षम पारिएको छ"</string>
<string name="cached_apps_freezer_enabled" msgid="8866703500183051546">"सक्षम पारिएको छ"</string>
- <string name="cached_apps_freezer_reboot_dialog_text" msgid="695330563489230096">"यो परिवर्तन लागू गर्न तपाईंको यन्त्र अनिवार्य रूपमा रिबुट गर्नु पर्छ। अहिले रिबुट गर्नुहोस् वा रद्द गर्नुहोस्।"</string>
+ <string name="cached_apps_freezer_reboot_dialog_text" msgid="695330563489230096">"यो परिवर्तन लागू गर्न तपाईंको डिभाइस अनिवार्य रूपमा रिबुट गर्नु पर्छ। अहिले नै रिबुट गर्नुहोस् वा रद्द गर्नुहोस्।"</string>
<string name="media_transfer_wired_headphone_name" msgid="8698668536022665254">"तारयुक्त हेडफोन"</string>
<string name="media_transfer_headphone_name" msgid="1157798825650178478">"तारयुक्त अडियो"</string>
<string name="media_transfer_usb_audio_name" msgid="1789292056757821355">"USB अडियो"</string>
diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml
index 63014b60d718..481479e21f74 100644
--- a/packages/SettingsLib/res/values-nl/strings.xml
+++ b/packages/SettingsLib/res/values-nl/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Snel opladen"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Ingesteld door beheerder"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Beheerd door beperkte instelling"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"Niet beschikbaar tijdens gesprekken"</string>
<string name="disabled" msgid="8017887509554714950">"Uitgezet"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Toegestaan"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Niet toegestaan"</string>
diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml
index 869d9a1d1757..69d57a6803d0 100644
--- a/packages/SettingsLib/res/values-or/strings.xml
+++ b/packages/SettingsLib/res/values-or/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"ଫାଷ୍ଟ ଚାର୍ଜିଂ"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"ଆଡ୍‌ମିନ୍‌ ଦ୍ୱାରା ନିୟନ୍ତ୍ରିତ"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"ପ୍ରତିବନ୍ଧିତ ସେଟିଂ ଦ୍ୱାରା ନିୟନ୍ତ୍ରଣ କରାଯାଇଛି"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"ଅକ୍ଷମ ହୋଇଛି"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"ଅନୁମତି ଦିଆଯାଇଛି"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"ଅନୁମତି ନାହିଁ"</string>
diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml
index 6c0ce86a6f8e..e12c2c01e6ae 100644
--- a/packages/SettingsLib/res/values-pa/strings.xml
+++ b/packages/SettingsLib/res/values-pa/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"ਤੇਜ਼ ਚਾਰਜਿੰਗ"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਕੰਟਰੋਲ ਕੀਤੀ ਗਈ"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"ਪ੍ਰਤਿਬੰਧਿਤ ਸੈਟਿੰਗ ਰਾਹੀਂ ਕੰਟਰੋਲ ਕੀਤੀ ਜਾਂਦੀ ਹੈ"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"ਕਾਲਾਂ ਦੌਰਾਨ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
<string name="disabled" msgid="8017887509554714950">"ਅਯੋਗ ਬਣਾਇਆ"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"ਮਨਜ਼ੂਰਸ਼ੁਦਾ"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"ਗੈਰ-ਮਨਜ਼ੂਰਸ਼ੁਦਾ"</string>
diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml
index d789c6407812..9fc2765ba59c 100644
--- a/packages/SettingsLib/res/values-pl/strings.xml
+++ b/packages/SettingsLib/res/values-pl/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Szybkie ładowanie"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Kontrolowane przez administratora"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Obowiązują ustawienia z ograniczonym dostępem"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Wyłączona"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Dozwolone"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Niedozwolone"</string>
diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml
index bd08415acdea..1e45965df421 100644
--- a/packages/SettingsLib/res/values-pt-rBR/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml
@@ -279,7 +279,7 @@
<string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Conecte-se a uma rede Wi-Fi"</string>
<string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string>
<string name="bugreport_in_power" msgid="8664089072534638709">"Atalho para relatório de bugs"</string>
- <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Mostrar um botão para gerar relatórios de bugs no menu do botão liga/desliga"</string>
+ <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Mostra um botão para gerar relatórios de bugs no menu do botão liga/desliga"</string>
<string name="keep_screen_on" msgid="1187161672348797558">"Permanecer ativo"</string>
<string name="keep_screen_on_summary" msgid="1510731514101925829">"A tela nunca entra em suspensão enquanto está carregando"</string>
<string name="bt_hci_snoop_log" msgid="7291287955649081448">"Ativar registro de rastreamento de HCI Bluetooth"</string>
@@ -428,11 +428,11 @@
<string name="debug_applications_category" msgid="5394089406638954196">"Apps"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Não manter atividades"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Destruir todas as atividades quando o usuário sair"</string>
- <string name="app_process_limit_title" msgid="8361367869453043007">"Limite do processamento em 2º plano"</string>
+ <string name="app_process_limit_title" msgid="8361367869453043007">"Limite de processos em 2º plano"</string>
<string name="show_all_anrs" msgid="9160563836616468726">"Mostrar ANRs em 2º plano"</string>
<string name="show_all_anrs_summary" msgid="8562788834431971392">"Exibir a caixa de diálogo \"App não responde\" para apps em segundo plano"</string>
<string name="show_notification_channel_warnings" msgid="3448282400127597331">"Mostrar avisos de notificações"</string>
- <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Exibir aviso na tela quando um app posta uma notificação sem um canal válido"</string>
+ <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Exibe aviso na tela quando um app posta notificação sem canal válido"</string>
<string name="force_allow_on_external" msgid="9187902444231637880">"Forçar permissão de apps em armazenamento externo"</string>
<string name="force_allow_on_external_summary" msgid="8525425782530728238">"Qualificar apps para gravação em armazenamento externo, independentemente dos valores do manifesto"</string>
<string name="force_resizable_activities" msgid="7143612144399959606">"Forçar atividades a serem redimensionáveis"</string>
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Carregamento rápido"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Controlada pelo admin"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Controlada pelas configurações restritas"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Desativado"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Permitido"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Não permitido"</string>
@@ -665,8 +667,8 @@
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Redefinir"</string>
<string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Remover"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Redefinindo visitante…"</string>
- <string name="guest_reset_and_restart_dialog_title" msgid="3396657008451616041">"Redefinir Sessão de visitante?"</string>
- <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Essa ação vai iniciar uma nova Sessão de visitante e excluir todos os apps e dados da sessão atual"</string>
+ <string name="guest_reset_and_restart_dialog_title" msgid="3396657008451616041">"Redefinir sessão de visitante?"</string>
+ <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Essa ação vai iniciar uma nova sessão de visitante e excluir todos os apps e dados da sessão atual"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Sair do modo visitante?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Essa ação vai excluir apps e dados da Sessão de visitante atual"</string>
<string name="grant_admin" msgid="4323199171790522574">"Sim, tornar esse usuário um administrador"</string>
@@ -690,7 +692,7 @@
<string name="cached_apps_freezer_device_default" msgid="2616594131750144342">"Padrão do dispositivo"</string>
<string name="cached_apps_freezer_disabled" msgid="4816382260660472042">"Desativado"</string>
<string name="cached_apps_freezer_enabled" msgid="8866703500183051546">"Ativado"</string>
- <string name="cached_apps_freezer_reboot_dialog_text" msgid="695330563489230096">"É necessário reinicializar o dispositivo para que a mudança seja aplicada. Faça isso agora ou cancele."</string>
+ <string name="cached_apps_freezer_reboot_dialog_text" msgid="695330563489230096">"É necessário reiniciar o dispositivo para que a mudança seja aplicada. Faça isso agora ou cancele."</string>
<string name="media_transfer_wired_headphone_name" msgid="8698668536022665254">"Fones de ouvido com fio"</string>
<string name="media_transfer_headphone_name" msgid="1157798825650178478">"Áudio com fio"</string>
<string name="media_transfer_usb_audio_name" msgid="1789292056757821355">"Áudio USB"</string>
diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml
index 457aacdcee14..d09caadb6328 100644
--- a/packages/SettingsLib/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Carregamento rápido"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Controlado pelo gestor"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Controlado por uma definição restrita"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"Indisponível durante as chamadas"</string>
<string name="disabled" msgid="8017887509554714950">"Desativada"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Autorizada"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Não autorizada"</string>
diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml
index bd08415acdea..1e45965df421 100644
--- a/packages/SettingsLib/res/values-pt/strings.xml
+++ b/packages/SettingsLib/res/values-pt/strings.xml
@@ -279,7 +279,7 @@
<string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Conecte-se a uma rede Wi-Fi"</string>
<string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string>
<string name="bugreport_in_power" msgid="8664089072534638709">"Atalho para relatório de bugs"</string>
- <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Mostrar um botão para gerar relatórios de bugs no menu do botão liga/desliga"</string>
+ <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Mostra um botão para gerar relatórios de bugs no menu do botão liga/desliga"</string>
<string name="keep_screen_on" msgid="1187161672348797558">"Permanecer ativo"</string>
<string name="keep_screen_on_summary" msgid="1510731514101925829">"A tela nunca entra em suspensão enquanto está carregando"</string>
<string name="bt_hci_snoop_log" msgid="7291287955649081448">"Ativar registro de rastreamento de HCI Bluetooth"</string>
@@ -428,11 +428,11 @@
<string name="debug_applications_category" msgid="5394089406638954196">"Apps"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Não manter atividades"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Destruir todas as atividades quando o usuário sair"</string>
- <string name="app_process_limit_title" msgid="8361367869453043007">"Limite do processamento em 2º plano"</string>
+ <string name="app_process_limit_title" msgid="8361367869453043007">"Limite de processos em 2º plano"</string>
<string name="show_all_anrs" msgid="9160563836616468726">"Mostrar ANRs em 2º plano"</string>
<string name="show_all_anrs_summary" msgid="8562788834431971392">"Exibir a caixa de diálogo \"App não responde\" para apps em segundo plano"</string>
<string name="show_notification_channel_warnings" msgid="3448282400127597331">"Mostrar avisos de notificações"</string>
- <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Exibir aviso na tela quando um app posta uma notificação sem um canal válido"</string>
+ <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Exibe aviso na tela quando um app posta notificação sem canal válido"</string>
<string name="force_allow_on_external" msgid="9187902444231637880">"Forçar permissão de apps em armazenamento externo"</string>
<string name="force_allow_on_external_summary" msgid="8525425782530728238">"Qualificar apps para gravação em armazenamento externo, independentemente dos valores do manifesto"</string>
<string name="force_resizable_activities" msgid="7143612144399959606">"Forçar atividades a serem redimensionáveis"</string>
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Carregamento rápido"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Controlada pelo admin"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Controlada pelas configurações restritas"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Desativado"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Permitido"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Não permitido"</string>
@@ -665,8 +667,8 @@
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Redefinir"</string>
<string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Remover"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Redefinindo visitante…"</string>
- <string name="guest_reset_and_restart_dialog_title" msgid="3396657008451616041">"Redefinir Sessão de visitante?"</string>
- <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Essa ação vai iniciar uma nova Sessão de visitante e excluir todos os apps e dados da sessão atual"</string>
+ <string name="guest_reset_and_restart_dialog_title" msgid="3396657008451616041">"Redefinir sessão de visitante?"</string>
+ <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Essa ação vai iniciar uma nova sessão de visitante e excluir todos os apps e dados da sessão atual"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Sair do modo visitante?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Essa ação vai excluir apps e dados da Sessão de visitante atual"</string>
<string name="grant_admin" msgid="4323199171790522574">"Sim, tornar esse usuário um administrador"</string>
@@ -690,7 +692,7 @@
<string name="cached_apps_freezer_device_default" msgid="2616594131750144342">"Padrão do dispositivo"</string>
<string name="cached_apps_freezer_disabled" msgid="4816382260660472042">"Desativado"</string>
<string name="cached_apps_freezer_enabled" msgid="8866703500183051546">"Ativado"</string>
- <string name="cached_apps_freezer_reboot_dialog_text" msgid="695330563489230096">"É necessário reinicializar o dispositivo para que a mudança seja aplicada. Faça isso agora ou cancele."</string>
+ <string name="cached_apps_freezer_reboot_dialog_text" msgid="695330563489230096">"É necessário reiniciar o dispositivo para que a mudança seja aplicada. Faça isso agora ou cancele."</string>
<string name="media_transfer_wired_headphone_name" msgid="8698668536022665254">"Fones de ouvido com fio"</string>
<string name="media_transfer_headphone_name" msgid="1157798825650178478">"Áudio com fio"</string>
<string name="media_transfer_usb_audio_name" msgid="1789292056757821355">"Áudio USB"</string>
diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml
index 1b6614591624..af09734842c1 100644
--- a/packages/SettingsLib/res/values-ro/strings.xml
+++ b/packages/SettingsLib/res/values-ro/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Încărcare rapidă"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Controlată de administrator"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Controlată de setarea restricționată"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Dezactivată"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Permise"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Nepermise"</string>
diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml
index 56748fbaef63..bf92e20fe4d7 100644
--- a/packages/SettingsLib/res/values-ru/strings.xml
+++ b/packages/SettingsLib/res/values-ru/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Быстрая зарядка"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Контролируется администратором"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Контролируется настройками с ограниченным доступом"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"Недоступно во время вызовов"</string>
<string name="disabled" msgid="8017887509554714950">"Отключено"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Разрешено"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Запрещено"</string>
diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml
index 5030450771a5..1b02d28e8685 100644
--- a/packages/SettingsLib/res/values-si/strings.xml
+++ b/packages/SettingsLib/res/values-si/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"වේගවත් ආරෝපණය"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"පරිපාලක විසින් පාලනය කරන ලදී"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"සීමා කළ සැකසීම මගින් පාලනය වේ"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"අබල කර ඇත"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"ඉඩ දුන්"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"ඉඩ නොදෙන"</string>
diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml
index b4787f2fd337..6170ac53255e 100644
--- a/packages/SettingsLib/res/values-sk/strings.xml
+++ b/packages/SettingsLib/res/values-sk/strings.xml
@@ -288,8 +288,8 @@
<string name="oem_unlock_enable_summary" msgid="5857388174390953829">"Povoliť odblokovanie ponuky bootloader"</string>
<string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"Povoliť odblokovanie OEM?"</string>
<string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"UPOZORNENIE: Dokiaľ bude toto nastavenie zapnuté, funkcie ochrany zariadenia nebudú na tomto zariadení fungovať."</string>
- <string name="mock_location_app" msgid="6269380172542248304">"Vybrať aplikáciu na simuláciu polohy"</string>
- <string name="mock_location_app_not_set" msgid="6972032787262831155">"Žiadna aplikácia na simuláciu polohy"</string>
+ <string name="mock_location_app" msgid="6269380172542248304">"Vybrať aplikáciu so skúšobnou polohou"</string>
+ <string name="mock_location_app_not_set" msgid="6972032787262831155">"Žiadna aplikácia so skúšobnou polohou"</string>
<string name="mock_location_app_set" msgid="4706722469342913843">"Aplikácia na simuláciu polohy: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="debug_networking_category" msgid="6829757985772659599">"Siete"</string>
<string name="wifi_display_certification" msgid="1805579519992520381">"Certifikácia bezdrôtového zobrazenia"</string>
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Nabíja sa rýchlo"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Ovládané správcom"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Ovládané obmedzeným nastavením"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"Počas hovorov nie je k dispozícii"</string>
<string name="disabled" msgid="8017887509554714950">"Deaktivované"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Povolené"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Nie je povolené"</string>
@@ -673,7 +674,7 @@
<string name="not_grant_admin" msgid="3557849576157702485">"Nie, nenastaviť ako správcu"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Ukončiť"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Chcete uložiť aktivitu hosťa?"</string>
- <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Môžte uložiť aktivitu aktuálnej relácie alebo odstrániť všetky aplikácie a údaje"</string>
+ <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Môžete uložiť aktivitu aktuálnej relácie alebo odstrániť všetky aplikácie a údaje"</string>
<string name="guest_exit_clear_data_button" msgid="3425812652180679014">"Odstrániť"</string>
<string name="guest_exit_save_data_button" msgid="3690974510644963547">"Uložiť"</string>
<string name="guest_exit_button" msgid="5774985819191803960">"Ukončiť režim pre hostí"</string>
diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml
index b6eacf879c0f..39b61d9c331f 100644
--- a/packages/SettingsLib/res/values-sl/strings.xml
+++ b/packages/SettingsLib/res/values-sl/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Hitro polnjenje"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Nadzira skrbnik"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Pod nadzorom omejene nastavitve"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"Ni na voljo med klici"</string>
<string name="disabled" msgid="8017887509554714950">"Onemogočeno"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Dovoljene"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Ni dovoljeno"</string>
diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml
index ee31c29300d1..e98046ea9a8b 100644
--- a/packages/SettingsLib/res/values-sq/strings.xml
+++ b/packages/SettingsLib/res/values-sq/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Karikim i shpejtë"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Kontrolluar nga administratori"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Kontrollohet nga \"Cilësimet e kufizuara\""</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Çaktivizuar"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Lejohet"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Nuk lejohet"</string>
diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml
index fcf1e4ffe2ec..c053094f3915 100644
--- a/packages/SettingsLib/res/values-sr/strings.xml
+++ b/packages/SettingsLib/res/values-sr/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Брзо пуњење"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Контролише администратор"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Контролишу ограничена подешавања"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"Недоступно током позива"</string>
<string name="disabled" msgid="8017887509554714950">"Онемогућено"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Дозвољено"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Није дозвољено"</string>
diff --git a/packages/SettingsLib/res/values-sv/arrays.xml b/packages/SettingsLib/res/values-sv/arrays.xml
index c69f01e8691c..b5ae7ddf7a31 100644
--- a/packages/SettingsLib/res/values-sv/arrays.xml
+++ b/packages/SettingsLib/res/values-sv/arrays.xml
@@ -288,12 +288,16 @@
<item msgid="3753634915787796632">"2"</item>
<item msgid="4779928470672877922">"3"</item>
</string-array>
- <!-- no translation found for shade_display_awareness_entries:0 (816770658383209617) -->
- <!-- no translation found for shade_display_awareness_entries:1 (9161645858025071955) -->
- <!-- no translation found for shade_display_awareness_entries:2 (114384731934682483) -->
- <!-- no translation found for shade_display_awareness_summaries:0 (2964753205732912921) -->
- <!-- no translation found for shade_display_awareness_summaries:1 (7795034287069726554) -->
- <!-- no translation found for shade_display_awareness_summaries:2 (5280431949814340475) -->
+ <string-array name="shade_display_awareness_entries">
+ <item msgid="816770658383209617">"Endast enhetens skärm (standard)"</item>
+ <item msgid="9161645858025071955">"Extern skärm"</item>
+ <item msgid="114384731934682483">"Fokusbaserad"</item>
+ </string-array>
+ <string-array name="shade_display_awareness_summaries">
+ <item msgid="2964753205732912921">"Visa endast skugga på enhetens skärm"</item>
+ <item msgid="7795034287069726554">"Visa skugga på en enda extern skärm"</item>
+ <item msgid="5280431949814340475">"Visa enheten på skärmen som sist var i fokus"</item>
+ </string-array>
<string-array name="shade_display_awareness_values">
<item msgid="3055776101992426514">"default_display"</item>
<item msgid="774789415968826925">"any_external_display"</item>
diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml
index 49d520eda21c..4f8ea1e03219 100644
--- a/packages/SettingsLib/res/values-sv/strings.xml
+++ b/packages/SettingsLib/res/values-sv/strings.xml
@@ -424,8 +424,7 @@
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Skala – övergångsanimering"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Längdskala för Animator"</string>
<string name="overlay_display_devices_title" msgid="5411894622334469607">"Simulera sekundär skärm"</string>
- <!-- no translation found for shade_display_awareness_title (8000009404669495876) -->
- <skip />
+ <string name="shade_display_awareness_title" msgid="8000009404669495876">"Panelens placering på skärmen"</string>
<string name="debug_applications_category" msgid="5394089406638954196">"Appar"</string>
<string name="immediately_destroy_activities" msgid="1826287490705167403">"Behåll inte aktiviteter"</string>
<string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Förstör aktiviteter så fort användaren lämnar dem"</string>
@@ -507,7 +506,7 @@
<string name="power_charging_future_paused" msgid="1809543660923642799">"<xliff:g id="LEVEL">%1$s</xliff:g> – laddas"</string>
<string name="power_fast_charging_duration_v2" msgid="3797735998640359490">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATUS">%2$s</xliff:g> – fulladdad till <xliff:g id="TIME">%3$s</xliff:g>"</string>
<string name="power_charging_duration_v2" msgid="2938998284074003248">"<xliff:g id="LEVEL">%1$s</xliff:g> – fulladdad till <xliff:g id="TIME">%2$s</xliff:g>"</string>
- <string name="power_remaining_charging_duration_only_v2" msgid="5358176435722950193">"Fulladdad till <xliff:g id="TIME">%1$s</xliff:g>"</string>
+ <string name="power_remaining_charging_duration_only_v2" msgid="5358176435722950193">"Fulladdad kl. <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_fast_charging_duration_only_v2" msgid="6270950195810579563">"Fulladdad till <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="battery_info_status_unknown" msgid="268625384868401114">"Okänd"</string>
<string name="battery_info_status_charging" msgid="4279958015430387405">"Laddar"</string>
@@ -524,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Snabbladdning"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Strys av administratören"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Styrs av spärrad inställning"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Inaktiverad"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Tillåts"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Tillåts inte"</string>
diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml
index d84d3555526c..2b175f5939a6 100644
--- a/packages/SettingsLib/res/values-sw/strings.xml
+++ b/packages/SettingsLib/res/values-sw/strings.xml
@@ -523,10 +523,12 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Inachaji kwa kasi"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Imedhibitiwa na msimamizi"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Imedhibitiwa na Mpangilio wenye Mipaka"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Imezimwa"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Imeruhusiwa"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Hairuhusiwi"</string>
- <string name="install_other_apps" msgid="3232595082023199454">"Kusakinisha programu zisizojulikana"</string>
+ <string name="install_other_apps" msgid="3232595082023199454">"Kuweka programu zisizojulikana"</string>
<string name="home" msgid="973834627243661438">"Ukurasa wa Kwanza wa Mipangilio"</string>
<string-array name="battery_labels">
<item msgid="7878690469765357158">"0%"</item>
diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml
index b0c25d05138e..dd5a5a4b7d8f 100644
--- a/packages/SettingsLib/res/values-ta/strings.xml
+++ b/packages/SettingsLib/res/values-ta/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"விரைவு சார்ஜிங்"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"நிர்வாகி கட்டுப்படுத்துகிறார்"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"வரையறுக்கப்பட்ட அமைப்பால் கட்டுப்படுத்தப்படுகிறது"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"முடக்கப்பட்டது"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"அனுமதிக்கப்பட்டது"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"அனுமதிக்கப்படவில்லை"</string>
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index d0b76341c7d5..12e45c2b824d 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"ఫాస్ట్ ఛార్జింగ్"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"నిర్వాహకుని ద్వారా నియంత్రించబడింది"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"పరిమితం చేసిన సెట్టింగ్ ద్వారా నియంత్రించబడుతుంది"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"డిజేబుల్ చేయబడింది"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"అనుమతించినవి"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"అనుమతించబడలేదు"</string>
diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml
index a228e6b24150..9b4d408c4cf1 100644
--- a/packages/SettingsLib/res/values-th/strings.xml
+++ b/packages/SettingsLib/res/values-th/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"ชาร์จเร็ว"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"ผู้ดูแลระบบเป็นผู้ควบคุม"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"ควบคุมโดยการตั้งค่าที่จำกัด"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"ใช้งานไม่ได้ขณะสนทนาโทรศัพท์"</string>
<string name="disabled" msgid="8017887509554714950">"ปิดอยู่"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"อนุญาต"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"ไม่อนุญาต"</string>
diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml
index 655347904b66..4cd2f5f3c675 100644
--- a/packages/SettingsLib/res/values-tl/strings.xml
+++ b/packages/SettingsLib/res/values-tl/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Fast charging"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Pinapamahalaan ng admin"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Kinokontrol ng Pinaghihigpitang Setting"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"Hindi available habang may tawag"</string>
<string name="disabled" msgid="8017887509554714950">"Naka-disable"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Pinapayagan"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Hindi pinapayagan"</string>
@@ -614,8 +615,8 @@
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Wired na audio device"</string>
<string name="help_label" msgid="3528360748637781274">"Tulong at feedback"</string>
<string name="storage_category" msgid="2287342585424631813">"Storage"</string>
- <string name="shared_data_title" msgid="1017034836800864953">"Pinaghahatiang data"</string>
- <string name="shared_data_summary" msgid="5516326713822885652">"Tingnan at baguhin ang pinaghahatiang data"</string>
+ <string name="shared_data_title" msgid="1017034836800864953">"Naka-share na data"</string>
+ <string name="shared_data_summary" msgid="5516326713822885652">"Tingnan at baguhin ang naka-share na data"</string>
<string name="shared_data_no_blobs_text" msgid="3108114670341737434">"Walang nakabahaging data para sa user na ito."</string>
<string name="shared_data_query_failure_text" msgid="3489828881998773687">"Nagka-error sa pag-fetch ng nakabahaging data. Subukan ulit."</string>
<string name="blob_id_text" msgid="8680078988996308061">"ID ng pinaghahatiang data: <xliff:g id="BLOB_ID">%d</xliff:g>"</string>
diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml
index 6a8158bae647..8dcc48f556fd 100644
--- a/packages/SettingsLib/res/values-tr/strings.xml
+++ b/packages/SettingsLib/res/values-tr/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Hızlı şarj"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Yönetici tarafından denetleniyor"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Kısıtlanmış ayar tarafından kontrol ediliyor"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Devre dışı"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"İzin verildi"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"İzin verilmiyor"</string>
diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml
index d599fb4cb82b..259cf6c3a0f0 100644
--- a/packages/SettingsLib/res/values-uk/strings.xml
+++ b/packages/SettingsLib/res/values-uk/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Швидке заряджання"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Керується адміністратором"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Керується налаштуваннями з обмеженнями"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Вимкнено"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Дозволено"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Заборонено"</string>
diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml
index f0588efc1bad..425a0ede22a3 100644
--- a/packages/SettingsLib/res/values-ur/strings.xml
+++ b/packages/SettingsLib/res/values-ur/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"فاسٹ چارجنگ"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"کنٹرول کردہ بذریعہ منتظم"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"محدود کردہ ترتیب کے زیر انتظام ہے"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"غیر فعال"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"اجازت ہے"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"اجازت نہیں ہے"</string>
diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml
index 6930278ac13b..04bd7fccefaa 100644
--- a/packages/SettingsLib/res/values-uz/strings.xml
+++ b/packages/SettingsLib/res/values-uz/strings.xml
@@ -523,6 +523,7 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Tezkor quvvatlash"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Administrator tomonidan boshqariladi"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Cheklangan sozlama tomonidan boshqariladi"</string>
+ <string name="disabled_in_phone_call_text" msgid="6568931334337318320">"Chaqiruv vaqtida ishlamaydi"</string>
<string name="disabled" msgid="8017887509554714950">"Oʻchiq"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Ruxsat berilgan"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Ruxsat berilmagan"</string>
@@ -660,12 +661,12 @@
<string name="guest_new_guest" msgid="3482026122932643557">"Mehmon kiritish"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"Mehmonni olib tashlash"</string>
<string name="guest_reset_guest" msgid="6110013010356013758">"Mehmon seansini tiklash"</string>
- <string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Mehmon seansi tiklansinmi?"</string>
+ <string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Mehmon seansi tozalansinmi?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Mehmon olib tashlansinmi?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Tiklash"</string>
<string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Olib tashlash"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Mehmon seansi tiklanmoqda…"</string>
- <string name="guest_reset_and_restart_dialog_title" msgid="3396657008451616041">"Mehmon seansi tiklansinmi?"</string>
+ <string name="guest_reset_and_restart_dialog_title" msgid="3396657008451616041">"Mehmon seansi tozalansinmi?"</string>
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Bunda yangi mehmon seansi ishga tushadi va joriy seans ilova va maʼlumotlari tozalanadi"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Mehmon rejimidan chiqasizmi?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Bunda joriy mehmon seansidagi ilova va ularning maʼlumotlari tozalanadi"</string>
diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml
index ffdd479f1bd4..59d4b4d587ce 100644
--- a/packages/SettingsLib/res/values-vi/strings.xml
+++ b/packages/SettingsLib/res/values-vi/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Đang sạc nhanh"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Do quản trị viên kiểm soát"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Do chế độ Cài đặt hạn chế kiểm soát"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Đã tắt"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Được phép"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Không được phép"</string>
diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml
index 3b42efd2443e..08e931b80e1b 100644
--- a/packages/SettingsLib/res/values-zh-rCN/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"正在快速充电"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"由管理员控制"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"由受限设置控制"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"已停用"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"允许"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"不允许"</string>
@@ -681,7 +683,7 @@
<string name="guest_exit_quick_settings_button" msgid="1912362095913765471">"退出访客模式"</string>
<string name="guest_notification_ephemeral" msgid="7263252466950923871">"退出时所有活动记录都将被删除"</string>
<string name="guest_notification_non_ephemeral" msgid="6843799963012259330">"您可以在退出时保存或删除您的活动"</string>
- <string name="guest_notification_non_ephemeral_non_first_login" msgid="8009307983766934876">"请立即重置以删除会话活动记录;或者,您也可以在退出时保存或删除活动记录"</string>
+ <string name="guest_notification_non_ephemeral_non_first_login" msgid="8009307983766934876">"重置可立即删除会话活动记录,您也可以在退出时保存或删除活动记录"</string>
<string name="user_image_photo_selector" msgid="433658323306627093">"选择照片"</string>
<string name="failed_attempts_now_wiping_device" msgid="4016329172216428897">"错误次数过多。系统将删除此设备上的数据。"</string>
<string name="failed_attempts_now_wiping_user" msgid="469060411789668050">"错误次数过多。系统将删除此用户。"</string>
diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml
index a6de0d982cd9..8cc65c86cc3e 100644
--- a/packages/SettingsLib/res/values-zh-rHK/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"快速充電"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"已由管理員停用"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"由「受限設定」控制"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"已停用"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"允許"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"不允許"</string>
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index e4d95e831137..d639e71f1a06 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"快速充電"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"已由管理員停用"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"由受限制的設定控管"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"已停用"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"允許"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"不允許"</string>
diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml
index 1f9eca4dd2e5..4fd2c8d1e843 100644
--- a/packages/SettingsLib/res/values-zu/strings.xml
+++ b/packages/SettingsLib/res/values-zu/strings.xml
@@ -523,6 +523,8 @@
<string name="battery_info_status_charging_fast_v2" msgid="1825439848151256589">"Ishaja ngokushesha"</string>
<string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Kulawulwa umqondisi"</string>
<string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Kulawulwe Isethingi Elikhawulelwe"</string>
+ <!-- no translation found for disabled_in_phone_call_text (6568931334337318320) -->
+ <skip />
<string name="disabled" msgid="8017887509554714950">"Akusebenzi"</string>
<string name="external_source_trusted" msgid="1146522036773132905">"Kuvumelekile"</string>
<string name="external_source_untrusted" msgid="5037891688911672227">"Akuvumelekile"</string>
diff --git a/packages/SettingsLib/res/values/arrays.xml b/packages/SettingsLib/res/values/arrays.xml
index 3d3dad379417..53c9658414c7 100644
--- a/packages/SettingsLib/res/values/arrays.xml
+++ b/packages/SettingsLib/res/values/arrays.xml
@@ -671,14 +671,16 @@
<string-array name="shade_display_awareness_entries" >
<item>Device display only (Default)</item>
<item>External display</item>
+ <item>Latest status bar touch</item>
<item>Focus-based</item>
</string-array>
<!-- Options for showing shade on external display for developers -->
<string-array name="shade_display_awareness_summaries" >
<item>Show shade on device display only </item>
- <item>Show device on single external display</item>
- <item>Show device on last focused display</item>
+ <item>Show shade on single external display</item>
+ <item>Show shade on display which last had its status bar interacted with</item>
+ <item>Show shade on last focused display</item>
</string-array>
<!-- Values for showing shade on external display for developers -->
@@ -686,6 +688,7 @@
<item>default_display</item>
<item>any_external_display</item>
<item>status_bar_latest_touch</item>
+ <item>focused_display</item>
</string-array>
</resources>
diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml
index 3da2271431f8..a3e42f1d1e51 100644
--- a/packages/SettingsLib/res/values/strings.xml
+++ b/packages/SettingsLib/res/values/strings.xml
@@ -1228,6 +1228,8 @@
<!-- Summary for settings preference disabled by app ops [CHAR LIMIT=50] -->
<string name="disabled_by_app_ops_text">Controlled by Restricted Setting</string>
+ <!-- Summary for settings preference disabled while the device is in a phone call [CHAR LIMIT=50] -->
+ <string name="disabled_in_phone_call_text">Unavailable during calls</string>
<!-- [CHAR LIMIT=25] Manage applications, text telling using an application is disabled. -->
<string name="disabled">Disabled</string>
diff --git a/packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java b/packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java
index 212e43aa4044..1044750bae25 100644
--- a/packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java
+++ b/packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java
@@ -44,6 +44,8 @@ import androidx.preference.PreferenceViewHolder;
public class RestrictedPreferenceHelper {
private static final String TAG = "RestrictedPreferenceHelper";
+ private static final String REASON_PHONE_STATE = "phone_state";
+
private final Context mContext;
private final Preference mPreference;
String packageName;
@@ -121,7 +123,7 @@ public class RestrictedPreferenceHelper {
if (mDisabledByAdmin) {
summaryView.setText(disabledText);
} else if (mDisabledByEcm) {
- summaryView.setText(R.string.disabled_by_app_ops_text);
+ summaryView.setText(getEcmTextResId());
} else if (TextUtils.equals(disabledText, summaryView.getText())) {
// It's previously set to disabled text, clear it.
summaryView.setText(null);
@@ -323,7 +325,16 @@ public class RestrictedPreferenceHelper {
}
if (!isEnabled && mDisabledByEcm) {
- mPreference.setSummary(R.string.disabled_by_app_ops_text);
+ mPreference.setSummary(getEcmTextResId());
+ }
+ }
+
+ private int getEcmTextResId() {
+ if (mDisabledByEcmIntent != null && REASON_PHONE_STATE.equals(
+ mDisabledByEcmIntent.getStringExtra(Intent.EXTRA_REASON))) {
+ return R.string.disabled_in_phone_call_text;
+ } else {
+ return R.string.disabled_by_app_ops_text;
}
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/AmbientVolumeUiController.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/AmbientVolumeUiController.java
index ce392b12516f..e7ddc46093e3 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/AmbientVolumeUiController.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/AmbientVolumeUiController.java
@@ -459,7 +459,7 @@ public class AmbientVolumeUiController implements
}
/** Checks if any device in the same set has valid ambient control points */
- private boolean isAmbientControlAvailable() {
+ public boolean isAmbientControlAvailable() {
for (BluetoothDevice device : mSideToDeviceMap.values()) {
if (mShowUiWhenLocalDataExist) {
// Found local ambient data
diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryKey.java b/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryKey.java
index 96e875b9bdcb..fb384ff9fdd0 100644
--- a/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryKey.java
+++ b/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryKey.java
@@ -72,6 +72,8 @@ public final class CategoryKey {
"com.android.settings.category.ia.communal";
public static final String CATEGORY_MORE_SECURITY_PRIVACY_SETTINGS =
"com.android.settings.category.ia.more_security_privacy_settings";
+ public static final String CATEGORY_SUPERVISION =
+ "com.android.settings.category.ia.supervision";
public static final Map<String, String> KEY_COMPAT_MAP;
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java
index ad196b8c1f7b..69e41a36f48f 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java
@@ -16,8 +16,6 @@
package com.android.settingslib.media;
import static android.media.MediaRoute2Info.TYPE_AUX_LINE;
-import static android.media.MediaRoute2Info.TYPE_LINE_ANALOG;
-import static android.media.MediaRoute2Info.TYPE_LINE_DIGITAL;
import static android.media.MediaRoute2Info.TYPE_BLE_HEADSET;
import static android.media.MediaRoute2Info.TYPE_BLUETOOTH_A2DP;
import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER;
@@ -27,6 +25,8 @@ import static android.media.MediaRoute2Info.TYPE_HDMI;
import static android.media.MediaRoute2Info.TYPE_HDMI_ARC;
import static android.media.MediaRoute2Info.TYPE_HDMI_EARC;
import static android.media.MediaRoute2Info.TYPE_HEARING_AID;
+import static android.media.MediaRoute2Info.TYPE_LINE_ANALOG;
+import static android.media.MediaRoute2Info.TYPE_LINE_DIGITAL;
import static android.media.MediaRoute2Info.TYPE_REMOTE_AUDIO_VIDEO_RECEIVER;
import static android.media.MediaRoute2Info.TYPE_REMOTE_CAR;
import static android.media.MediaRoute2Info.TYPE_REMOTE_COMPUTER;
@@ -254,6 +254,10 @@ public abstract class InfoMediaManager {
protected abstract List<MediaRoute2Info> getSelectableRoutes(@NonNull RoutingSessionInfo info);
@NonNull
+ protected abstract List<MediaRoute2Info> getTransferableRoutes(
+ @NonNull RoutingSessionInfo info);
+
+ @NonNull
protected abstract List<MediaRoute2Info> getDeselectableRoutes(
@NonNull RoutingSessionInfo info);
@@ -519,6 +523,22 @@ public abstract class InfoMediaManager {
}
/**
+ * Returns the list of {@link MediaDevice media devices} that can be transferred to with the
+ * current {@link RoutingSessionInfo routing session} by the media route provider.
+ */
+ @NonNull
+ List<MediaDevice> getTransferableMediaDevices() {
+ final RoutingSessionInfo info = getActiveRoutingSession();
+
+ final List<MediaDevice> deviceList = new ArrayList<>();
+ for (MediaRoute2Info route : getTransferableRoutes(info)) {
+ deviceList.add(
+ new InfoMediaDevice(mContext, route, mPreferenceItemMap.get(route.getId())));
+ }
+ return deviceList;
+ }
+
+ /**
* Returns the list of {@link MediaDevice media devices} that can be deselected from the current
* {@link RoutingSessionInfo routing session}.
*/
@@ -598,6 +618,7 @@ public abstract class InfoMediaManager {
return getActiveRoutingSession().getVolume();
}
+ @Nullable
CharSequence getSessionName() {
return getActiveRoutingSession().getName();
}
@@ -658,12 +679,9 @@ public abstract class InfoMediaManager {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
RouteListingPreference routeListingPreference = getRouteListingPreference();
if (routeListingPreference != null) {
- final List<RouteListingPreference.Item> preferenceRouteListing =
- Api34Impl.composePreferenceRouteListing(
- routeListingPreference);
availableRoutes = Api34Impl.arrangeRouteListByPreference(selectedRoutes,
getAvailableRoutesFromRouter(),
- preferenceRouteListing);
+ routeListingPreference);
}
return Api34Impl.filterDuplicatedIds(availableRoutes);
} else {
@@ -760,11 +778,15 @@ public abstract class InfoMediaManager {
@DoNotInline
static List<RouteListingPreference.Item> composePreferenceRouteListing(
RouteListingPreference routeListingPreference) {
+ boolean preferRouteListingOrdering =
+ com.android.media.flags.Flags.enableOutputSwitcherSessionGrouping()
+ && preferRouteListingOrdering(routeListingPreference);
List<RouteListingPreference.Item> finalizedItemList = new ArrayList<>();
List<RouteListingPreference.Item> itemList = routeListingPreference.getItems();
for (RouteListingPreference.Item item : itemList) {
// Put suggested devices on the top first before further organization
- if ((item.getFlags() & RouteListingPreference.Item.FLAG_SUGGESTED) != 0) {
+ if (!preferRouteListingOrdering
+ && (item.getFlags() & RouteListingPreference.Item.FLAG_SUGGESTED) != 0) {
finalizedItemList.add(0, item);
} else {
finalizedItemList.add(item);
@@ -792,7 +814,7 @@ public abstract class InfoMediaManager {
* Returns an ordered list of available devices based on the provided {@code
* routeListingPreferenceItems}.
*
- * <p>The result has the following order:
+ * <p>The resulting order if enableOutputSwitcherSessionGrouping is disabled is:
*
* <ol>
* <li>Selected routes.
@@ -800,22 +822,53 @@ public abstract class InfoMediaManager {
* <li>Not-selected, non-system, available routes sorted by route listing preference.
* </ol>
*
+ * <p>The resulting order if enableOutputSwitcherSessionGrouping is enabled is:
+ *
+ * <ol>
+ * <li>Selected routes sorted by route listing preference.
+ * <li>Selected routes not defined by route listing preference.
+ * <li>Not-selected system routes.
+ * <li>Not-selected, non-system, available routes sorted by route listing preference.
+ * </ol>
+ *
+ *
* @param selectedRoutes List of currently selected routes.
* @param availableRoutes List of available routes that match the app's requested route
* features.
- * @param routeListingPreferenceItems Ordered list of {@link RouteListingPreference.Item} to
- * sort routes with.
+ * @param routeListingPreference Preferences provided by the app to determine route order.
*/
@DoNotInline
static List<MediaRoute2Info> arrangeRouteListByPreference(
List<MediaRoute2Info> selectedRoutes,
List<MediaRoute2Info> availableRoutes,
- List<RouteListingPreference.Item> routeListingPreferenceItems) {
+ RouteListingPreference routeListingPreference) {
+ final List<RouteListingPreference.Item> routeListingPreferenceItems =
+ Api34Impl.composePreferenceRouteListing(routeListingPreference);
+
Set<String> sortedRouteIds = new LinkedHashSet<>();
+ boolean addSelectedRlpItemsFirst =
+ com.android.media.flags.Flags.enableOutputSwitcherSessionGrouping()
+ && preferRouteListingOrdering(routeListingPreference);
+ Set<String> selectedRouteIds = new HashSet<>();
+
+ if (addSelectedRlpItemsFirst) {
+ // Add selected RLP items first
+ for (MediaRoute2Info selectedRoute : selectedRoutes) {
+ selectedRouteIds.add(selectedRoute.getId());
+ }
+ for (RouteListingPreference.Item item: routeListingPreferenceItems) {
+ if (selectedRouteIds.contains(item.getRouteId())) {
+ sortedRouteIds.add(item.getRouteId());
+ }
+ }
+ }
+
// Add selected routes first.
- for (MediaRoute2Info selectedRoute : selectedRoutes) {
- sortedRouteIds.add(selectedRoute.getId());
+ if (sortedRouteIds.size() != selectedRoutes.size()) {
+ for (MediaRoute2Info selectedRoute : selectedRoutes) {
+ sortedRouteIds.add(selectedRoute.getId());
+ }
}
// Add not-yet-added system routes.
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java
index fe6659d1dc4f..ed58c96b33c7 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java
@@ -352,6 +352,17 @@ public class LocalMediaManager implements BluetoothCallback {
}
/**
+ * Gets the MediaDevice list that can be transferred to with the current media session by the
+ * media route provider.
+ *
+ * @return list of MediaDevice
+ */
+ @NonNull
+ public List<MediaDevice> getTransferableMediaDevices() {
+ return mInfoMediaManager.getTransferableMediaDevices();
+ }
+
+ /**
* Get the MediaDevice list that can be removed from current media session.
*
* @return list of MediaDevice
@@ -433,6 +444,7 @@ public class LocalMediaManager implements BluetoothCallback {
*
* @return current name of the session, and return {@code null} if not found.
*/
+ @Nullable
public CharSequence getSessionName() {
return mInfoMediaManager.getSessionName();
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/ManagerInfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/ManagerInfoMediaManager.java
index 82b197682459..9e511ffb4e34 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/ManagerInfoMediaManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/ManagerInfoMediaManager.java
@@ -117,6 +117,12 @@ public class ManagerInfoMediaManager extends InfoMediaManager {
@Override
@NonNull
+ protected List<MediaRoute2Info> getTransferableRoutes(@NonNull RoutingSessionInfo info) {
+ return mRouterManager.getTransferableRoutes(info);
+ }
+
+ @Override
+ @NonNull
protected List<MediaRoute2Info> getDeselectableRoutes(@NonNull RoutingSessionInfo info) {
return mRouterManager.getDeselectableRoutes(info);
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java
index b01b7c9048ba..d018d1404623 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java
@@ -15,6 +15,7 @@
*/
package com.android.settingslib.media;
+import static android.media.MediaRoute2Info.TYPE_AUX_LINE;
import static android.media.MediaRoute2Info.TYPE_BLE_HEADSET;
import static android.media.MediaRoute2Info.TYPE_BLUETOOTH_A2DP;
import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER;
@@ -24,6 +25,8 @@ import static android.media.MediaRoute2Info.TYPE_HDMI;
import static android.media.MediaRoute2Info.TYPE_HDMI_ARC;
import static android.media.MediaRoute2Info.TYPE_HDMI_EARC;
import static android.media.MediaRoute2Info.TYPE_HEARING_AID;
+import static android.media.MediaRoute2Info.TYPE_LINE_ANALOG;
+import static android.media.MediaRoute2Info.TYPE_LINE_DIGITAL;
import static android.media.MediaRoute2Info.TYPE_REMOTE_AUDIO_VIDEO_RECEIVER;
import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER;
import static android.media.MediaRoute2Info.TYPE_REMOTE_TV;
@@ -33,9 +36,6 @@ import static android.media.MediaRoute2Info.TYPE_USB_DEVICE;
import static android.media.MediaRoute2Info.TYPE_USB_HEADSET;
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADPHONES;
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET;
-import static android.media.MediaRoute2Info.TYPE_LINE_DIGITAL;
-import static android.media.MediaRoute2Info.TYPE_LINE_ANALOG;
-import static android.media.MediaRoute2Info.TYPE_AUX_LINE;
import static android.media.RouteListingPreference.Item.FLAG_ONGOING_SESSION;
import static android.media.RouteListingPreference.Item.FLAG_ONGOING_SESSION_MANAGED;
import static android.media.RouteListingPreference.Item.FLAG_SUGGESTED;
@@ -244,6 +244,11 @@ public abstract class MediaDevice implements Comparable<MediaDevice> {
*/
public abstract String getId();
+ /** Returns {@code true} if the device has a non-null {@link RouteListingPreference.Item}. */
+ public boolean hasRouteListingPreferenceItem() {
+ return mItem != null;
+ }
+
/**
* Get selection behavior of device
*
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/NoOpInfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/NoOpInfoMediaManager.java
index 2c7ec9302117..9fe5b1d58752 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/NoOpInfoMediaManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/NoOpInfoMediaManager.java
@@ -114,6 +114,12 @@ import java.util.List;
@NonNull
@Override
+ protected List<MediaRoute2Info> getTransferableRoutes(@NonNull RoutingSessionInfo info) {
+ return Collections.emptyList();
+ }
+
+ @NonNull
+ @Override
protected List<MediaRoute2Info> getDeselectableRoutes(@NonNull RoutingSessionInfo info) {
return Collections.emptyList();
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/OWNERS b/packages/SettingsLib/src/com/android/settingslib/media/OWNERS
index d58add4bb5eb..a34876dd1e0e 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/OWNERS
+++ b/packages/SettingsLib/src/com/android/settingslib/media/OWNERS
@@ -3,5 +3,8 @@ ethibodeau@google.com
michaelmikhil@google.com
apotapov@google.com
+# Output Switcher OWNERS
+file:/packages/SystemUI/src/com/android/systemui/media/dialog/OWNERS
+
#Android Media - For minor changes and renames only.
aquilescanta@google.com #{LAST_RESORT_SUGGESTION}
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/RouterInfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/RouterInfoMediaManager.java
index eced7b3a116b..6a2da182dbb1 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/RouterInfoMediaManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/RouterInfoMediaManager.java
@@ -203,6 +203,13 @@ public final class RouterInfoMediaManager extends InfoMediaManager {
@NonNull
@Override
+ protected List<MediaRoute2Info> getTransferableRoutes(@NonNull RoutingSessionInfo info) {
+ RoutingController controller = getControllerForSession(info);
+ return getTransferableRoutes(controller);
+ }
+
+ @NonNull
+ @Override
protected List<MediaRoute2Info> getSelectedRoutes(@NonNull RoutingSessionInfo info) {
RoutingController controller = getControllerForSession(info);
if (controller == null) {
@@ -272,22 +279,27 @@ public final class RouterInfoMediaManager extends InfoMediaManager {
protected List<MediaRoute2Info> getTransferableRoutes(@NonNull String packageName) {
List<RoutingController> controllers = mRouter.getControllers();
RoutingController activeController = controllers.get(controllers.size() - 1);
- HashMap<String, MediaRoute2Info> transferableRoutes = new HashMap<>();
-
- activeController
- .getTransferableRoutes()
- .forEach(route -> transferableRoutes.put(route.getId(), route));
+ return getTransferableRoutes(activeController);
+ }
- if (activeController.getRoutingSessionInfo().isSystemSession()) {
- mRouter.getRoutes().stream()
- .filter(route -> !route.isSystemRoute())
- .forEach(route -> transferableRoutes.put(route.getId(), route));
- } else {
- mRouter.getRoutes().stream()
- .filter(route -> route.isSystemRoute())
+ @NonNull
+ private List<MediaRoute2Info> getTransferableRoutes(@Nullable RoutingController controller) {
+ HashMap<String, MediaRoute2Info> transferableRoutes = new HashMap<>();
+ if (controller != null) {
+ controller
+ .getTransferableRoutes()
.forEach(route -> transferableRoutes.put(route.getId(), route));
- }
+ if (controller.getRoutingSessionInfo().isSystemSession()) {
+ mRouter.getRoutes().stream()
+ .filter(route -> !route.isSystemRoute())
+ .forEach(route -> transferableRoutes.put(route.getId(), route));
+ } else {
+ mRouter.getRoutes().stream()
+ .filter(route -> route.isSystemRoute())
+ .forEach(route -> transferableRoutes.put(route.getId(), route));
+ }
+ }
return new ArrayList<>(transferableRoutes.values());
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/notification/modes/TestModeBuilder.java b/packages/SettingsLib/src/com/android/settingslib/notification/modes/TestModeBuilder.java
index 64a2de5025de..ecea5fd35150 100644
--- a/packages/SettingsLib/src/com/android/settingslib/notification/modes/TestModeBuilder.java
+++ b/packages/SettingsLib/src/com/android/settingslib/notification/modes/TestModeBuilder.java
@@ -33,10 +33,12 @@ import android.service.notification.ZenPolicy;
import androidx.annotation.DrawableRes;
import androidx.annotation.Nullable;
-import java.util.Random;
+import java.util.concurrent.atomic.AtomicInteger;
public class TestModeBuilder {
+ private static final AtomicInteger sNextId = new AtomicInteger(0);
+
private String mId;
private AutomaticZenRule mRule;
private ZenModeConfig.ZenRule mConfigZenRule;
@@ -47,7 +49,7 @@ public class TestModeBuilder {
public TestModeBuilder() {
// Reasonable defaults
- int id = new Random().nextInt(1000);
+ int id = sNextId.incrementAndGet();
mId = "rule_" + id;
mRule = new AutomaticZenRule.Builder("Test Rule #" + id, Uri.parse("rule://" + id))
.setPackage("some_package")
diff --git a/packages/SettingsLib/src/com/android/settingslib/supervision/OWNERS b/packages/SettingsLib/src/com/android/settingslib/supervision/OWNERS
new file mode 100644
index 000000000000..04e7058b4384
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/supervision/OWNERS
@@ -0,0 +1 @@
+file:platform/frameworks/base:/core/java/android/app/supervision/OWNERS
diff --git a/packages/SettingsLib/src/com/android/settingslib/supervision/SupervisionIntentProvider.kt b/packages/SettingsLib/src/com/android/settingslib/supervision/SupervisionIntentProvider.kt
new file mode 100644
index 000000000000..749c2edba4d4
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/supervision/SupervisionIntentProvider.kt
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settingslib.supervision
+
+import android.app.supervision.SupervisionManager
+import android.content.Context
+import android.content.Intent
+
+/** Helper class meant to provide an intent to launch the supervision settings page. */
+object SupervisionIntentProvider {
+ private const val ACTION_SHOW_PARENTAL_CONTROLS = "android.settings.SHOW_PARENTAL_CONTROLS"
+
+ /**
+ * Returns an [Intent] to the supervision settings page or null if supervision is disabled or
+ * the intent is not resolvable.
+ */
+ @JvmStatic
+ fun getSettingsIntent(context: Context): Intent? {
+ val supervisionManager = context.getSystemService(SupervisionManager::class.java)
+ val supervisionAppPackage = supervisionManager?.activeSupervisionAppPackage ?: return null
+
+ val intent =
+ Intent(ACTION_SHOW_PARENTAL_CONTROLS)
+ .setPackage(supervisionAppPackage)
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ val activities =
+ context.packageManager.queryIntentActivitiesAsUser(intent, 0, context.userId)
+ return if (activities.isNotEmpty()) intent else null
+ }
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/volume/MediaSessions.java b/packages/SettingsLib/src/com/android/settingslib/volume/MediaSessions.java
deleted file mode 100644
index 89f3cf5e9aab..000000000000
--- a/packages/SettingsLib/src/com/android/settingslib/volume/MediaSessions.java
+++ /dev/null
@@ -1,402 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settingslib.volume;
-
-import android.app.PendingIntent;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.pm.ResolveInfo;
-import android.media.MediaMetadata;
-import android.media.session.MediaController;
-import android.media.session.MediaController.PlaybackInfo;
-import android.media.session.MediaSession;
-import android.media.session.MediaSession.QueueItem;
-import android.media.session.MediaSession.Token;
-import android.media.session.MediaSessionManager;
-import android.media.session.MediaSessionManager.OnActiveSessionsChangedListener;
-import android.media.session.MediaSessionManager.RemoteSessionCallback;
-import android.media.session.PlaybackState;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.HandlerExecutor;
-import android.os.Looper;
-import android.os.Message;
-import android.util.Log;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import java.io.PrintWriter;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-
-/**
- * Convenience client for all media session updates. Provides a callback interface for events
- * related to remote media sessions.
- */
-public class MediaSessions {
- private static final String TAG = Util.logTag(MediaSessions.class);
-
- private static final boolean USE_SERVICE_LABEL = false;
-
- private final Context mContext;
- private final H mHandler;
- private final HandlerExecutor mHandlerExecutor;
- private final MediaSessionManager mMgr;
- private final Map<Token, MediaControllerRecord> mRecords = new HashMap<>();
- private final Callbacks mCallbacks;
-
- private boolean mInit;
-
- public MediaSessions(Context context, Looper looper, Callbacks callbacks) {
- mContext = context;
- mHandler = new H(looper);
- mHandlerExecutor = new HandlerExecutor(mHandler);
- mMgr = (MediaSessionManager) context.getSystemService(Context.MEDIA_SESSION_SERVICE);
- mCallbacks = callbacks;
- }
-
- /**
- * Dump to {@code writer}
- */
- public void dump(PrintWriter writer) {
- writer.println(getClass().getSimpleName() + " state:");
- writer.print(" mInit: ");
- writer.println(mInit);
- writer.print(" mRecords.size: ");
- writer.println(mRecords.size());
- int i = 0;
- for (MediaControllerRecord r : mRecords.values()) {
- dump(++i, writer, r.controller);
- }
- }
-
- /**
- * init MediaSessions
- */
- public void init() {
- if (D.BUG) Log.d(TAG, "init");
- // will throw if no permission
- mMgr.addOnActiveSessionsChangedListener(mSessionsListener, null, mHandler);
- mInit = true;
- postUpdateSessions();
- mMgr.registerRemoteSessionCallback(mHandlerExecutor,
- mRemoteSessionCallback);
- }
-
- protected void postUpdateSessions() {
- if (!mInit) return;
- mHandler.sendEmptyMessage(H.UPDATE_SESSIONS);
- }
-
- /**
- * Destroy MediaSessions
- */
- public void destroy() {
- if (D.BUG) Log.d(TAG, "destroy");
- mInit = false;
- mMgr.removeOnActiveSessionsChangedListener(mSessionsListener);
- mMgr.unregisterRemoteSessionCallback(mRemoteSessionCallback);
- }
-
- /**
- * Set volume {@code level} to remote media {@code token}
- */
- public void setVolume(Token token, int level) {
- final MediaControllerRecord r = mRecords.get(token);
- if (r == null) {
- Log.w(TAG, "setVolume: No record found for token " + token);
- return;
- }
- if (D.BUG) Log.d(TAG, "Setting level to " + level);
- r.controller.setVolumeTo(level, 0);
- }
-
- private void onRemoteVolumeChangedH(Token sessionToken, int flags) {
- final MediaController controller = new MediaController(mContext, sessionToken);
- if (D.BUG) {
- Log.d(TAG, "remoteVolumeChangedH " + controller.getPackageName() + " "
- + Util.audioManagerFlagsToString(flags));
- }
- final Token token = controller.getSessionToken();
- mCallbacks.onRemoteVolumeChanged(token, flags);
- }
-
- private void onUpdateRemoteSessionListH(Token sessionToken) {
- final MediaController controller =
- sessionToken != null ? new MediaController(mContext, sessionToken) : null;
- final String pkg = controller != null ? controller.getPackageName() : null;
- if (D.BUG) Log.d(TAG, "onUpdateRemoteSessionListH " + pkg);
- // this may be our only indication that a remote session is changed, refresh
- postUpdateSessions();
- }
-
- protected void onActiveSessionsUpdatedH(List<MediaController> controllers) {
- if (D.BUG) Log.d(TAG, "onActiveSessionsUpdatedH n=" + controllers.size());
- final Set<Token> toRemove = new HashSet<Token>(mRecords.keySet());
- for (MediaController controller : controllers) {
- final Token token = controller.getSessionToken();
- final PlaybackInfo pi = controller.getPlaybackInfo();
- toRemove.remove(token);
- if (!mRecords.containsKey(token)) {
- final MediaControllerRecord r = new MediaControllerRecord(controller);
- r.name = getControllerName(controller);
- mRecords.put(token, r);
- controller.registerCallback(r, mHandler);
- }
- final MediaControllerRecord r = mRecords.get(token);
- final boolean remote = isRemote(pi);
- if (remote) {
- updateRemoteH(token, r.name, pi);
- r.sentRemote = true;
- }
- }
- for (Token t : toRemove) {
- final MediaControllerRecord r = mRecords.get(t);
- r.controller.unregisterCallback(r);
- mRecords.remove(t);
- if (D.BUG) Log.d(TAG, "Removing " + r.name + " sentRemote=" + r.sentRemote);
- if (r.sentRemote) {
- mCallbacks.onRemoteRemoved(t);
- r.sentRemote = false;
- }
- }
- }
-
- private static boolean isRemote(PlaybackInfo pi) {
- return pi != null && pi.getPlaybackType() == PlaybackInfo.PLAYBACK_TYPE_REMOTE;
- }
-
- protected String getControllerName(MediaController controller) {
- final PackageManager pm = mContext.getPackageManager();
- final String pkg = controller.getPackageName();
- try {
- if (USE_SERVICE_LABEL) {
- final List<ResolveInfo> ris = pm.queryIntentServices(
- new Intent("android.media.MediaRouteProviderService").setPackage(pkg), 0);
- if (ris != null) {
- for (ResolveInfo ri : ris) {
- if (ri.serviceInfo == null) continue;
- if (pkg.equals(ri.serviceInfo.packageName)) {
- final String serviceLabel =
- Objects.toString(ri.serviceInfo.loadLabel(pm), "").trim();
- if (serviceLabel.length() > 0) {
- return serviceLabel;
- }
- }
- }
- }
- }
- final ApplicationInfo ai = pm.getApplicationInfo(pkg, 0);
- final String appLabel = Objects.toString(ai.loadLabel(pm), "").trim();
- if (appLabel.length() > 0) {
- return appLabel;
- }
- } catch (NameNotFoundException e) {
- }
- return pkg;
- }
-
- private void updateRemoteH(Token token, String name, PlaybackInfo pi) {
- if (mCallbacks != null) {
- mCallbacks.onRemoteUpdate(token, name, pi);
- }
- }
-
- private static void dump(int n, PrintWriter writer, MediaController c) {
- writer.println(" Controller " + n + ": " + c.getPackageName());
- final Bundle extras = c.getExtras();
- final long flags = c.getFlags();
- final MediaMetadata mm = c.getMetadata();
- final PlaybackInfo pi = c.getPlaybackInfo();
- final PlaybackState playbackState = c.getPlaybackState();
- final List<QueueItem> queue = c.getQueue();
- final CharSequence queueTitle = c.getQueueTitle();
- final int ratingType = c.getRatingType();
- final PendingIntent sessionActivity = c.getSessionActivity();
-
- writer.println(" PlaybackState: " + Util.playbackStateToString(playbackState));
- writer.println(" PlaybackInfo: " + Util.playbackInfoToString(pi));
- if (mm != null) {
- writer.println(" MediaMetadata.desc=" + mm.getDescription());
- }
- writer.println(" RatingType: " + ratingType);
- writer.println(" Flags: " + flags);
- if (extras != null) {
- writer.println(" Extras:");
- for (String key : extras.keySet()) {
- writer.println(" " + key + "=" + extras.get(key));
- }
- }
- if (queueTitle != null) {
- writer.println(" QueueTitle: " + queueTitle);
- }
- if (queue != null && !queue.isEmpty()) {
- writer.println(" Queue:");
- for (QueueItem qi : queue) {
- writer.println(" " + qi);
- }
- }
- if (pi != null) {
- writer.println(" sessionActivity: " + sessionActivity);
- }
- }
-
- private final class MediaControllerRecord extends MediaController.Callback {
- public final MediaController controller;
-
- public boolean sentRemote;
- public String name;
-
- private MediaControllerRecord(MediaController controller) {
- this.controller = controller;
- }
-
- private String cb(String method) {
- return method + " " + controller.getPackageName() + " ";
- }
-
- @Override
- public void onAudioInfoChanged(@NonNull PlaybackInfo info) {
- if (D.BUG) {
- Log.d(TAG, cb("onAudioInfoChanged") + Util.playbackInfoToString(info)
- + " sentRemote=" + sentRemote);
- }
- final boolean remote = isRemote(info);
- if (!remote && sentRemote) {
- mCallbacks.onRemoteRemoved(controller.getSessionToken());
- sentRemote = false;
- } else if (remote) {
- updateRemoteH(controller.getSessionToken(), name, info);
- sentRemote = true;
- }
- }
-
- @Override
- public void onExtrasChanged(Bundle extras) {
- if (D.BUG) Log.d(TAG, cb("onExtrasChanged") + extras);
- }
-
- @Override
- public void onMetadataChanged(MediaMetadata metadata) {
- if (D.BUG) Log.d(TAG, cb("onMetadataChanged") + Util.mediaMetadataToString(metadata));
- }
-
- @Override
- public void onPlaybackStateChanged(PlaybackState state) {
- if (D.BUG) Log.d(TAG, cb("onPlaybackStateChanged") + Util.playbackStateToString(state));
- }
-
- @Override
- public void onQueueChanged(List<QueueItem> queue) {
- if (D.BUG) Log.d(TAG, cb("onQueueChanged") + queue);
- }
-
- @Override
- public void onQueueTitleChanged(CharSequence title) {
- if (D.BUG) Log.d(TAG, cb("onQueueTitleChanged") + title);
- }
-
- @Override
- public void onSessionDestroyed() {
- if (D.BUG) Log.d(TAG, cb("onSessionDestroyed"));
- }
-
- @Override
- public void onSessionEvent(String event, Bundle extras) {
- if (D.BUG) Log.d(TAG, cb("onSessionEvent") + "event=" + event + " extras=" + extras);
- }
- }
-
- private final OnActiveSessionsChangedListener mSessionsListener =
- new OnActiveSessionsChangedListener() {
- @Override
- public void onActiveSessionsChanged(List<MediaController> controllers) {
- onActiveSessionsUpdatedH(controllers);
- }
- };
-
- private final RemoteSessionCallback mRemoteSessionCallback =
- new RemoteSessionCallback() {
- @Override
- public void onVolumeChanged(@NonNull MediaSession.Token sessionToken,
- int flags) {
- mHandler.obtainMessage(H.REMOTE_VOLUME_CHANGED, flags, 0,
- sessionToken).sendToTarget();
- }
-
- @Override
- public void onDefaultRemoteSessionChanged(
- @Nullable MediaSession.Token sessionToken) {
- mHandler.obtainMessage(H.UPDATE_REMOTE_SESSION_LIST,
- sessionToken).sendToTarget();
- }
- };
-
- private final class H extends Handler {
- private static final int UPDATE_SESSIONS = 1;
- private static final int REMOTE_VOLUME_CHANGED = 2;
- private static final int UPDATE_REMOTE_SESSION_LIST = 3;
-
- private H(Looper looper) {
- super(looper);
- }
-
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case UPDATE_SESSIONS:
- onActiveSessionsUpdatedH(mMgr.getActiveSessions(null));
- break;
- case REMOTE_VOLUME_CHANGED:
- onRemoteVolumeChangedH((Token) msg.obj, msg.arg1);
- break;
- case UPDATE_REMOTE_SESSION_LIST:
- onUpdateRemoteSessionListH((Token) msg.obj);
- break;
- }
- }
- }
-
- /**
- * Callback for remote media sessions
- */
- public interface Callbacks {
- /**
- * Invoked when remote media session is updated
- */
- void onRemoteUpdate(Token token, String name, PlaybackInfo pi);
-
- /**
- * Invoked when remote media session is removed
- */
- void onRemoteRemoved(Token t);
-
- /**
- * Invoked when remote volume is changed
- */
- void onRemoteVolumeChanged(Token token, int flags);
- }
-
-}
diff --git a/packages/SettingsLib/src/com/android/settingslib/volume/MediaSessions.kt b/packages/SettingsLib/src/com/android/settingslib/volume/MediaSessions.kt
new file mode 100644
index 000000000000..10156c404ebf
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/volume/MediaSessions.kt
@@ -0,0 +1,364 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settingslib.volume
+
+import android.content.Context
+import android.content.Intent
+import android.content.pm.PackageManager
+import android.media.MediaMetadata
+import android.media.session.MediaController
+import android.media.session.MediaSession
+import android.media.session.MediaSessionManager
+import android.media.session.PlaybackState
+import android.os.Bundle
+import android.os.Handler
+import android.os.HandlerExecutor
+import android.os.Looper
+import android.os.Message
+import android.util.Log
+import java.io.PrintWriter
+import java.util.Objects
+
+/**
+ * Convenience client for all media session updates. Provides a callback interface for events
+ * related to remote media sessions.
+ */
+class MediaSessions(context: Context, looper: Looper, callbacks: Callbacks) {
+
+ private val mContext = context
+ private val mHandler: H = H(looper)
+ private val mHandlerExecutor: HandlerExecutor = HandlerExecutor(mHandler)
+ private val mMgr: MediaSessionManager =
+ mContext.getSystemService(Context.MEDIA_SESSION_SERVICE) as MediaSessionManager
+ private val mRecords: MutableMap<MediaSession.Token, MediaControllerRecord> = HashMap()
+ private val mCallbacks: Callbacks = callbacks
+ private val mSessionsListener =
+ MediaSessionManager.OnActiveSessionsChangedListener { controllers ->
+ onActiveSessionsUpdatedH(controllers!!)
+ }
+
+ private val mRemoteSessionCallback: MediaSessionManager.RemoteSessionCallback =
+ object : MediaSessionManager.RemoteSessionCallback {
+ override fun onVolumeChanged(sessionToken: MediaSession.Token, flags: Int) {
+ mHandler.obtainMessage(REMOTE_VOLUME_CHANGED, flags, 0, sessionToken).sendToTarget()
+ }
+
+ override fun onDefaultRemoteSessionChanged(sessionToken: MediaSession.Token?) {
+ mHandler.obtainMessage(UPDATE_REMOTE_SESSION_LIST, sessionToken).sendToTarget()
+ }
+ }
+
+ private var mInit = false
+
+ /** Dump to `writer` */
+ fun dump(writer: PrintWriter) {
+ writer.println(javaClass.simpleName + " state:")
+ writer.print(" mInit: ")
+ writer.println(mInit)
+ writer.print(" mRecords.size: ")
+ writer.println(mRecords.size)
+ for ((i, r) in mRecords.values.withIndex()) {
+ r.controller.dump(i + 1, writer)
+ }
+ }
+
+ /** init MediaSessions */
+ fun init() {
+ if (D.BUG) {
+ Log.d(TAG, "init")
+ }
+ // will throw if no permission
+ mMgr.addOnActiveSessionsChangedListener(mSessionsListener, null, mHandler)
+ mInit = true
+ postUpdateSessions()
+ mMgr.registerRemoteSessionCallback(mHandlerExecutor, mRemoteSessionCallback)
+ }
+
+ /** Destroy MediaSessions */
+ fun destroy() {
+ if (D.BUG) {
+ Log.d(TAG, "destroy")
+ }
+ mInit = false
+ mMgr.removeOnActiveSessionsChangedListener(mSessionsListener)
+ mMgr.unregisterRemoteSessionCallback(mRemoteSessionCallback)
+ }
+
+ /** Set volume `level` to remote media `token` */
+ fun setVolume(token: MediaSession.Token, level: Int) {
+ val record = mRecords[token]
+ if (record == null) {
+ Log.w(TAG, "setVolume: No record found for token $token")
+ return
+ }
+ if (D.BUG) {
+ Log.d(TAG, "Setting level to $level")
+ }
+ record.controller.setVolumeTo(level, 0)
+ }
+
+ private fun onRemoteVolumeChangedH(sessionToken: MediaSession.Token, flags: Int) {
+ val controller = MediaController(mContext, sessionToken)
+ if (D.BUG) {
+ Log.d(
+ TAG,
+ "remoteVolumeChangedH " +
+ controller.packageName +
+ " " +
+ Util.audioManagerFlagsToString(flags),
+ )
+ }
+ val token = controller.sessionToken
+ mCallbacks.onRemoteVolumeChanged(token, flags)
+ }
+
+ private fun onUpdateRemoteSessionListH(sessionToken: MediaSession.Token?) {
+ if (D.BUG) {
+ Log.d(
+ TAG,
+ "onUpdateRemoteSessionListH ${sessionToken?.let {MediaController(mContext, it)}?.packageName}",
+ )
+ }
+ // this may be our only indication that a remote session is changed, refresh
+ postUpdateSessions()
+ }
+
+ private fun postUpdateSessions() {
+ if (mInit) {
+ mHandler.sendEmptyMessage(UPDATE_SESSIONS)
+ }
+ }
+
+ private fun onActiveSessionsUpdatedH(controllers: List<MediaController>) {
+ if (D.BUG) {
+ Log.d(TAG, "onActiveSessionsUpdatedH n=" + controllers.size)
+ }
+ val toRemove: MutableSet<MediaSession.Token> = HashSet(mRecords.keys)
+ for (controller in controllers) {
+ val token = controller.sessionToken
+ val playbackInfo = controller.playbackInfo
+ toRemove.remove(token)
+ if (!mRecords.containsKey(token)) {
+ val record = MediaControllerRecord(controller)
+ record.name = getControllerName(controller)
+ mRecords[token] = record
+ controller.registerCallback(record, mHandler)
+ }
+ val record = mRecords[token]
+ val remote = isRemote(playbackInfo)
+ if (remote) {
+ updateRemoteH(token, record!!.name, playbackInfo)
+ record.sentRemote = true
+ }
+ }
+ for (token in toRemove) {
+ val record = mRecords[token]!!
+ record.controller.unregisterCallback(record)
+ mRecords.remove(token)
+ if (D.BUG) {
+ Log.d(TAG, "Removing " + record.name + " sentRemote=" + record.sentRemote)
+ }
+ if (record.sentRemote) {
+ mCallbacks.onRemoteRemoved(token)
+ record.sentRemote = false
+ }
+ }
+ }
+
+ private fun getControllerName(controller: MediaController): String {
+ val pm = mContext.packageManager
+ val pkg = controller.packageName
+ try {
+ if (USE_SERVICE_LABEL) {
+ val services =
+ pm.queryIntentServices(
+ Intent("android.media.MediaRouteProviderService").setPackage(pkg),
+ 0,
+ )
+ if (services != null) {
+ for (ri in services) {
+ if (ri.serviceInfo == null) continue
+ if (pkg == ri.serviceInfo.packageName) {
+ val serviceLabel =
+ Objects.toString(ri.serviceInfo.loadLabel(pm), "").trim()
+ if (serviceLabel.isNotEmpty()) {
+ return serviceLabel
+ }
+ }
+ }
+ }
+ }
+ val ai = pm.getApplicationInfo(pkg, 0)
+ val appLabel = Objects.toString(ai.loadLabel(pm), "").trim { it <= ' ' }
+ if (appLabel.isNotEmpty()) {
+ return appLabel
+ }
+ } catch (_: PackageManager.NameNotFoundException) {}
+ return pkg
+ }
+
+ private fun updateRemoteH(
+ token: MediaSession.Token,
+ name: String?,
+ pi: MediaController.PlaybackInfo,
+ ) = mCallbacks.onRemoteUpdate(token, name, pi)
+
+ private inner class MediaControllerRecord(val controller: MediaController) :
+ MediaController.Callback() {
+ var sentRemote: Boolean = false
+ var name: String? = null
+
+ fun cb(method: String): String {
+ return method + " " + controller.packageName + " "
+ }
+
+ override fun onAudioInfoChanged(info: MediaController.PlaybackInfo) {
+ if (D.BUG) {
+ Log.d(
+ TAG,
+ (cb("onAudioInfoChanged") +
+ Util.playbackInfoToString(info) +
+ " sentRemote=" +
+ sentRemote),
+ )
+ }
+ val remote = isRemote(info)
+ if (!remote && sentRemote) {
+ mCallbacks.onRemoteRemoved(controller.sessionToken)
+ sentRemote = false
+ } else if (remote) {
+ updateRemoteH(controller.sessionToken, name, info)
+ sentRemote = true
+ }
+ }
+
+ override fun onExtrasChanged(extras: Bundle?) {
+ if (D.BUG) {
+ Log.d(TAG, cb("onExtrasChanged") + extras)
+ }
+ }
+
+ override fun onMetadataChanged(metadata: MediaMetadata?) {
+ if (D.BUG) {
+ Log.d(TAG, cb("onMetadataChanged") + Util.mediaMetadataToString(metadata))
+ }
+ }
+
+ override fun onPlaybackStateChanged(state: PlaybackState?) {
+ if (D.BUG) {
+ Log.d(TAG, cb("onPlaybackStateChanged") + Util.playbackStateToString(state))
+ }
+ }
+
+ override fun onQueueChanged(queue: List<MediaSession.QueueItem>?) {
+ if (D.BUG) {
+ Log.d(TAG, cb("onQueueChanged") + queue)
+ }
+ }
+
+ override fun onQueueTitleChanged(title: CharSequence?) {
+ if (D.BUG) {
+ Log.d(TAG, cb("onQueueTitleChanged") + title)
+ }
+ }
+
+ override fun onSessionDestroyed() {
+ if (D.BUG) {
+ Log.d(TAG, cb("onSessionDestroyed"))
+ }
+ }
+
+ override fun onSessionEvent(event: String, extras: Bundle?) {
+ if (D.BUG) {
+ Log.d(TAG, cb("onSessionEvent") + "event=" + event + " extras=" + extras)
+ }
+ }
+ }
+
+ private inner class H(looper: Looper) : Handler(looper) {
+
+ override fun handleMessage(msg: Message) {
+ when (msg.what) {
+ UPDATE_SESSIONS -> onActiveSessionsUpdatedH(mMgr.getActiveSessions(null))
+ REMOTE_VOLUME_CHANGED ->
+ onRemoteVolumeChangedH(msg.obj as MediaSession.Token, msg.arg1)
+ UPDATE_REMOTE_SESSION_LIST ->
+ onUpdateRemoteSessionListH(msg.obj as MediaSession.Token?)
+ }
+ }
+ }
+
+ /** Callback for remote media sessions */
+ interface Callbacks {
+ /** Invoked when remote media session is updated */
+ fun onRemoteUpdate(
+ token: MediaSession.Token?,
+ name: String?,
+ pi: MediaController.PlaybackInfo?,
+ )
+
+ /** Invoked when remote media session is removed */
+ fun onRemoteRemoved(token: MediaSession.Token?)
+
+ /** Invoked when remote volume is changed */
+ fun onRemoteVolumeChanged(token: MediaSession.Token?, flags: Int)
+ }
+
+ companion object {
+ private val TAG: String = Util.logTag(MediaSessions::class.java)
+
+ const val UPDATE_SESSIONS: Int = 1
+ const val REMOTE_VOLUME_CHANGED: Int = 2
+ const val UPDATE_REMOTE_SESSION_LIST: Int = 3
+
+ private const val USE_SERVICE_LABEL = false
+
+ private fun isRemote(pi: MediaController.PlaybackInfo?): Boolean =
+ pi != null && pi.playbackType == MediaController.PlaybackInfo.PLAYBACK_TYPE_REMOTE
+ }
+}
+
+private fun MediaController.dump(n: Int, writer: PrintWriter) {
+ writer.println(" Controller $n: $packageName")
+
+ writer.println(" PlaybackState: ${Util.playbackStateToString(playbackState)}")
+ writer.println(" PlaybackInfo: ${Util.playbackInfoToString(playbackInfo)}")
+ val metadata = this.metadata
+ if (metadata != null) {
+ writer.println(" MediaMetadata.desc=${metadata.description}")
+ }
+ writer.println(" RatingType: $ratingType")
+ writer.println(" Flags: $flags")
+
+ writer.println(" Extras:")
+ val extras = this.extras
+ if (extras == null) {
+ writer.println(" <null>")
+ } else {
+ for (key in extras.keySet()) {
+ writer.println(" $key=${extras[key]}")
+ }
+ }
+ writer.println(" QueueTitle: $queueTitle")
+ val queue = this.queue
+ if (!queue.isNullOrEmpty()) {
+ writer.println(" Queue:")
+ for (qi in queue) {
+ writer.println(" $qi")
+ }
+ }
+ writer.println(" sessionActivity: $sessionActivity")
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioSharingRepository.kt b/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioSharingRepository.kt
index 01bf0c8335d1..8771ba05a6a8 100644
--- a/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioSharingRepository.kt
+++ b/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioSharingRepository.kt
@@ -150,27 +150,13 @@ class AudioSharingRepositoryImpl(
BluetoothCsipSetCoordinator.GROUP_ID_INVALID
)
- override val secondaryGroupId: StateFlow<Int> =
- secondaryDevice
- .map { BluetoothUtils.getGroupId(it) }
- .onEach { logger.onSecondaryGroupIdChanged(it) }
- .flowOn(backgroundCoroutineContext)
- .stateIn(
- coroutineScope,
- SharingStarted.WhileSubscribed(),
- BluetoothCsipSetCoordinator.GROUP_ID_INVALID
- )
+ override val primaryDevice: StateFlow<CachedBluetoothDevice?> =
+ primaryGroupId
+ .map { getCachedDeviceFromGroupId(it) }
+ .stateIn(coroutineScope, SharingStarted.WhileSubscribed(), null)
- override val primaryDevice: StateFlow<CachedBluetoothDevice?>
- get() = primaryGroupId.map { getCachedDeviceFromGroupId(it) }
- .stateIn(
- coroutineScope,
- SharingStarted.WhileSubscribed(),
- null
- )
-
- override val secondaryDevice: StateFlow<CachedBluetoothDevice?>
- get() = merge(
+ override val secondaryDevice: StateFlow<CachedBluetoothDevice?> =
+ merge(
isAudioSharingProfilesReady.flatMapLatest { ready ->
if (ready) {
btManager.profileManager.leAudioBroadcastAssistantProfile
@@ -196,6 +182,17 @@ class AudioSharingRepositoryImpl(
null
)
+ override val secondaryGroupId: StateFlow<Int> =
+ secondaryDevice
+ .map { BluetoothUtils.getGroupId(it) }
+ .onEach { logger.onSecondaryGroupIdChanged(it) }
+ .flowOn(backgroundCoroutineContext)
+ .stateIn(
+ coroutineScope,
+ SharingStarted.WhileSubscribed(),
+ BluetoothCsipSetCoordinator.GROUP_ID_INVALID
+ )
+
override val volumeMap: StateFlow<GroupIdToVolumes> =
inAudioSharing.flatMapLatest { isSharing ->
if (isSharing) {
diff --git a/packages/SettingsLib/tests/robotests/Android.bp b/packages/SettingsLib/tests/robotests/Android.bp
index 117ca85c2761..54fe40ad14c4 100644
--- a/packages/SettingsLib/tests/robotests/Android.bp
+++ b/packages/SettingsLib/tests/robotests/Android.bp
@@ -46,16 +46,17 @@ android_robolectric_test {
"src/**/*.kt",
],
static_libs: [
- "Settings_robolectric_meta_service_file",
"Robolectric_shadows_androidx_fragment_upstream",
"SettingsLib-robo-testutils",
+ "Settings_robolectric_meta_service_file",
+ "androidx.core_core",
"androidx.fragment_fragment",
"androidx.test.core",
- "androidx.core_core",
- "kotlinx_coroutines_test",
+ "androidx.test.ext.junit",
"flag-junit",
- "settingslib_media_flags_lib",
+ "kotlinx_coroutines_test",
"settingslib_illustrationpreference_flags_lib",
+ "settingslib_media_flags_lib",
"settingslib_selectorwithwidgetpreference_flags_lib",
"testng", // TODO: remove once JUnit on Android provides assertThrows
],
@@ -87,8 +88,8 @@ java_library {
"testutils/com/android/settingslib/testutils/**/*.java",
],
javacflags: [
- "-Aorg.robolectric.annotation.processing.shadowPackage=com.android.settingslib.testutils.shadow",
"-Aorg.robolectric.annotation.processing.sdkCheckMode=ERROR",
+ "-Aorg.robolectric.annotation.processing.shadowPackage=com.android.settingslib.testutils.shadow",
// Uncomment the below to debug annotation processors not firing.
//"-verbose",
//"-XprintRounds",
@@ -97,9 +98,9 @@ java_library {
//"-J-verbose",
],
plugins: [
- "auto_value_plugin_1.9",
- "auto_value_builder_plugin_1.9",
"Robolectric_processor",
+ "auto_value_builder_plugin_1.9",
+ "auto_value_plugin_1.9",
],
libs: [
"Robolectric_all-target",
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/CategoryKeyTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/CategoryKeyTest.java
index c9dc1ba5d5d7..c36f32ac5d3c 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/CategoryKeyTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/CategoryKeyTest.java
@@ -61,8 +61,9 @@ public class CategoryKeyTest {
allKeys.add(CategoryKey.CATEGORY_NIGHT_DISPLAY);
allKeys.add(CategoryKey.CATEGORY_SMART_BATTERY_SETTINGS);
allKeys.add(CategoryKey.CATEGORY_COMMUNAL_SETTINGS);
+ allKeys.add(CategoryKey.CATEGORY_SUPERVISION);
// DO NOT REMOVE ANYTHING ABOVE
- assertThat(allKeys.size()).isEqualTo(20);
+ assertThat(allKeys.size()).isEqualTo(21);
}
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java
index e1447dc8410c..93ebc84374b2 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java
@@ -48,19 +48,25 @@ import android.media.RouteListingPreference;
import android.media.RoutingSessionInfo;
import android.media.session.MediaSessionManager;
import android.os.Build;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
+import com.android.media.flags.Flags;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import com.android.settingslib.media.InfoMediaManager.Api34Impl;
import com.android.settingslib.testutils.shadow.ShadowRouter2Manager;
import com.google.common.collect.ImmutableList;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
@@ -73,6 +79,7 @@ import java.util.Set;
@RunWith(RobolectricTestRunner.class)
@Config(shadows = {ShadowRouter2Manager.class})
public class InfoMediaManagerTest {
+ @Rule public final MockitoRule mockito = MockitoJUnit.rule();
private static final String TEST_PACKAGE_NAME = "com.test.packagename";
private static final String TEST_PACKAGE_NAME_2 = "com.test.packagename2";
@@ -122,6 +129,8 @@ public class InfoMediaManagerTest {
.addFeature(MediaRoute2Info.FEATURE_LIVE_AUDIO)
.build();
+ @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
@Mock
private MediaRouter2Manager mRouterManager;
@Mock
@@ -139,7 +148,6 @@ public class InfoMediaManagerTest {
@Before
public void setUp() {
- MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
doReturn(mMediaSessionManager).when(mContext).getSystemService(
@@ -377,21 +385,26 @@ public class InfoMediaManagerTest {
}
private RouteListingPreference setUpPreferenceList(String packageName) {
+ return setUpPreferenceList(packageName, false);
+ }
+
+ private RouteListingPreference setUpPreferenceList(
+ String packageName, boolean useSystemOrdering) {
ReflectionHelpers.setStaticField(Build.VERSION.class, "SDK_INT",
Build.VERSION_CODES.UPSIDE_DOWN_CAKE);
final List<RouteListingPreference.Item> preferenceItemList = new ArrayList<>();
- RouteListingPreference.Item item1 =
+ RouteListingPreference.Item item1 = new RouteListingPreference.Item.Builder(
+ TEST_ID_3).build();
+ RouteListingPreference.Item item2 =
new RouteListingPreference.Item.Builder(TEST_ID_4)
.setFlags(RouteListingPreference.Item.FLAG_SUGGESTED)
.build();
- RouteListingPreference.Item item2 = new RouteListingPreference.Item.Builder(
- TEST_ID_3).build();
preferenceItemList.add(item1);
preferenceItemList.add(item2);
RouteListingPreference routeListingPreference =
new RouteListingPreference.Builder().setItems(
- preferenceItemList).setUseSystemOrdering(false).build();
+ preferenceItemList).setUseSystemOrdering(useSystemOrdering).build();
when(mRouterManager.getRouteListingPreference(packageName))
.thenReturn(routeListingPreference);
return routeListingPreference;
@@ -651,6 +664,26 @@ public class InfoMediaManagerTest {
}
@Test
+ public void getTransferableMediaDevice_checkList() {
+ final List<MediaRoute2Info> mediaRoute2Infos = new ArrayList<>();
+ final MediaRoute2Info mediaRoute2Info = mock(MediaRoute2Info.class);
+ mediaRoute2Infos.add(mediaRoute2Info);
+ mShadowRouter2Manager.setTransferableRoutes(mediaRoute2Infos);
+ when(mediaRoute2Info.getName()).thenReturn(TEST_NAME);
+ when(mediaRoute2Info.getId()).thenReturn(TEST_ID);
+ mInfoMediaManager.mRouterManager = mRouterManager;
+ when(mRouterManager.getRoutingSessions(TEST_PACKAGE_NAME))
+ .thenReturn(List.of(TEST_REMOTE_ROUTING_SESSION));
+ when(mRouterManager.getTransferableRoutes(any(RoutingSessionInfo.class)))
+ .thenReturn(mediaRoute2Infos);
+
+ final List<MediaDevice> mediaDevices = mInfoMediaManager.getTransferableMediaDevices();
+
+ assertThat(mediaDevices.size()).isEqualTo(1);
+ assertThat(mediaDevices.get(0).getName()).isEqualTo(TEST_NAME);
+ }
+
+ @Test
public void getDeselectableMediaDevice_checkList() {
final List<RoutingSessionInfo> routingSessionInfos = new ArrayList<>();
final RoutingSessionInfo info = mock(RoutingSessionInfo.class);
@@ -908,4 +941,83 @@ public class InfoMediaManagerTest {
assertThat(device.getState()).isEqualTo(STATE_SELECTED);
assertThat(mInfoMediaManager.getCurrentConnectedDevice()).isEqualTo(device);
}
+
+ @EnableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_SESSION_GROUPING)
+ @Test
+ public void composePreferenceRouteListing_useSystemOrderingIsFalse() {
+ RouteListingPreference routeListingPreference =
+ setUpPreferenceList(TEST_PACKAGE_NAME, false);
+
+ List<RouteListingPreference.Item> routeOrder =
+ Api34Impl.composePreferenceRouteListing(routeListingPreference);
+
+ assertThat(routeOrder.get(0).getRouteId()).isEqualTo(TEST_ID_3);
+ assertThat(routeOrder.get(1).getRouteId()).isEqualTo(TEST_ID_4);
+ }
+
+ @EnableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_SESSION_GROUPING)
+ @Test
+ public void composePreferenceRouteListing_useSystemOrderingIsTrue() {
+ RouteListingPreference routeListingPreference =
+ setUpPreferenceList(TEST_PACKAGE_NAME, true);
+
+ List<RouteListingPreference.Item> routeOrder =
+ Api34Impl.composePreferenceRouteListing(routeListingPreference);
+
+ assertThat(routeOrder.get(0).getRouteId()).isEqualTo(TEST_ID_4);
+ assertThat(routeOrder.get(1).getRouteId()).isEqualTo(TEST_ID_3);
+ }
+
+ @EnableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_SESSION_GROUPING)
+ @Test
+ public void arrangeRouteListByPreference_useSystemOrderingIsFalse() {
+ RouteListingPreference routeListingPreference =
+ setUpPreferenceList(TEST_PACKAGE_NAME, false);
+ List<MediaRoute2Info> routes = setAvailableRoutesList(TEST_PACKAGE_NAME);
+ when(mRouterManager.getSelectedRoutes(any())).thenReturn(routes);
+
+ List<MediaRoute2Info> routeOrder =
+ Api34Impl.arrangeRouteListByPreference(
+ routes, routes, routeListingPreference);
+
+ assertThat(routeOrder.get(0).getId()).isEqualTo(TEST_ID_3);
+ assertThat(routeOrder.get(1).getId()).isEqualTo(TEST_ID_4);
+ assertThat(routeOrder.get(2).getId()).isEqualTo(TEST_ID_2);
+ assertThat(routeOrder.get(3).getId()).isEqualTo(TEST_ID_1);
+ }
+
+ @EnableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_SESSION_GROUPING)
+ @Test
+ public void arrangeRouteListByPreference_useSystemOrderingIsTrue() {
+ RouteListingPreference routeListingPreference =
+ setUpPreferenceList(TEST_PACKAGE_NAME, true);
+ List<MediaRoute2Info> routes = setAvailableRoutesList(TEST_PACKAGE_NAME);
+ when(mRouterManager.getSelectedRoutes(any())).thenReturn(routes);
+
+ List<MediaRoute2Info> routeOrder =
+ Api34Impl.arrangeRouteListByPreference(
+ routes, routes, routeListingPreference);
+
+ assertThat(routeOrder.get(0).getId()).isEqualTo(TEST_ID_2);
+ assertThat(routeOrder.get(1).getId()).isEqualTo(TEST_ID_3);
+ assertThat(routeOrder.get(2).getId()).isEqualTo(TEST_ID_4);
+ assertThat(routeOrder.get(3).getId()).isEqualTo(TEST_ID_1);
+ }
+
+ @Test
+ public void selectedRouteAppearsFirst() {
+ RouteListingPreference routeListingPreference =
+ setUpPreferenceList(TEST_PACKAGE_NAME, true);
+ List<MediaRoute2Info> routes = setAvailableRoutesList(TEST_PACKAGE_NAME);
+ List<MediaRoute2Info> selectedRoutes = List.of(routes.get(2));
+
+ List<MediaRoute2Info> routeOrder =
+ Api34Impl.arrangeRouteListByPreference(
+ selectedRoutes, routes, routeListingPreference);
+
+ assertThat(routeOrder.stream().map(MediaRoute2Info::getId).toArray())
+ .asList()
+ .containsExactly(TEST_ID_4, TEST_ID_1, TEST_ID_3)
+ .inOrder();
+ }
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/supervision/SupervisionIntentProviderTest.kt b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/supervision/SupervisionIntentProviderTest.kt
new file mode 100644
index 000000000000..2ceed2875cb4
--- /dev/null
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/supervision/SupervisionIntentProviderTest.kt
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.settingslib.supervision
+
+import android.app.supervision.SupervisionManager
+import android.content.Context
+import android.content.ContextWrapper
+import android.content.pm.PackageManager
+import android.content.pm.ResolveInfo
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.platform.app.InstrumentationRegistry
+import com.google.common.truth.Truth.assertThat
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.ArgumentMatchers.any
+import org.mockito.ArgumentMatchers.anyInt
+import org.mockito.Mock
+import org.mockito.Mockito.`when`
+import org.mockito.junit.MockitoJUnit
+import org.mockito.junit.MockitoRule
+
+/**
+ * Unit tests for [SupervisionIntentProvider].
+ *
+ * Run with `atest SupervisionIntentProviderTest`.
+ */
+@RunWith(AndroidJUnit4::class)
+class SupervisionIntentProviderTest {
+ @get:Rule val mocks: MockitoRule = MockitoJUnit.rule()
+
+ @Mock private lateinit var mockPackageManager: PackageManager
+
+ @Mock private lateinit var mockSupervisionManager: SupervisionManager
+
+ private lateinit var context: Context
+
+ @Before
+ fun setUp() {
+ context =
+ object : ContextWrapper(InstrumentationRegistry.getInstrumentation().context) {
+ override fun getPackageManager() = mockPackageManager
+
+ override fun getSystemService(name: String) =
+ when (name) {
+ Context.SUPERVISION_SERVICE -> mockSupervisionManager
+ else -> super.getSystemService(name)
+ }
+ }
+ }
+
+ @Test
+ fun getSettingsIntent_nullSupervisionPackage() {
+ `when`(mockSupervisionManager.activeSupervisionAppPackage).thenReturn(null)
+
+ val intent = SupervisionIntentProvider.getSettingsIntent(context)
+
+ assertThat(intent).isNull()
+ }
+
+ @Test
+ fun getSettingsIntent_unresolvedIntent() {
+ `when`(mockSupervisionManager.activeSupervisionAppPackage)
+ .thenReturn(SUPERVISION_APP_PACKAGE)
+ `when`(mockPackageManager.queryIntentActivitiesAsUser(any(), anyInt(), anyInt()))
+ .thenReturn(emptyList())
+
+ val intent = SupervisionIntentProvider.getSettingsIntent(context)
+
+ assertThat(intent).isNull()
+ }
+
+ @Test
+ fun getSettingsIntent_resolvedIntent() {
+ `when`(mockSupervisionManager.activeSupervisionAppPackage)
+ .thenReturn(SUPERVISION_APP_PACKAGE)
+ `when`(mockPackageManager.queryIntentActivitiesAsUser(any(), anyInt(), anyInt()))
+ .thenReturn(listOf(ResolveInfo()))
+
+ val intent = SupervisionIntentProvider.getSettingsIntent(context)
+
+ assertThat(intent).isNotNull()
+ assertThat(intent?.action).isEqualTo("android.settings.SHOW_PARENTAL_CONTROLS")
+ assertThat(intent?.`package`).isEqualTo(SUPERVISION_APP_PACKAGE)
+ }
+
+ private companion object {
+ const val SUPERVISION_APP_PACKAGE = "app.supervision"
+ }
+}
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java
index c0e266fa269f..4c6a1ba7db0a 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java
@@ -177,7 +177,7 @@ public class GlobalSettingsValidators {
VALIDATORS.put(Global.REQUIRE_PASSWORD_TO_DECRYPT, BOOLEAN_VALIDATOR);
VALIDATORS.put(Global.DEVICE_DEMO_MODE, BOOLEAN_VALIDATOR);
VALIDATORS.put(Global.AWARE_ALLOWED, BOOLEAN_VALIDATOR);
- VALIDATORS.put(Global.POWER_BUTTON_SHORT_PRESS, new InclusiveIntegerRangeValidator(0, 7));
+ VALIDATORS.put(Global.POWER_BUTTON_SHORT_PRESS, new InclusiveIntegerRangeValidator(0, 8));
VALIDATORS.put(Global.POWER_BUTTON_DOUBLE_PRESS, new InclusiveIntegerRangeValidator(0, 3));
VALIDATORS.put(Global.POWER_BUTTON_TRIPLE_PRESS, new InclusiveIntegerRangeValidator(0, 3));
VALIDATORS.put(Global.POWER_BUTTON_LONG_PRESS, new InclusiveIntegerRangeValidator(0, 5));
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
index 8dca39fdc107..9591b4354678 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
@@ -28,7 +28,7 @@ import static android.provider.settings.validators.SettingsValidators.COMMA_SEPA
import static android.provider.settings.validators.SettingsValidators.COMPONENT_NAME_VALIDATOR;
import static android.provider.settings.validators.SettingsValidators.CREDENTIAL_SERVICE_VALIDATOR;
import static android.provider.settings.validators.SettingsValidators.JSON_OBJECT_VALIDATOR;
-import static android.provider.settings.validators.SettingsValidators.LOCALE_VALIDATOR;
+import static android.provider.settings.validators.SettingsValidators.LOCALE_LOOSE_VALIDATOR;
import static android.provider.settings.validators.SettingsValidators.NONE_NEGATIVE_LONG_VALIDATOR;
import static android.provider.settings.validators.SettingsValidators.NON_NEGATIVE_INTEGER_VALIDATOR;
import static android.provider.settings.validators.SettingsValidators.NULLABLE_COMPONENT_NAME_VALIDATOR;
@@ -96,7 +96,7 @@ public class SecureSettingsValidators {
Secure.ACCESSIBILITY_CAPTIONING_PRESET,
new DiscreteValueValidator(new String[] {"-1", "0", "1", "2", "3", "4"}));
VALIDATORS.put(Secure.ACCESSIBILITY_CAPTIONING_ENABLED, BOOLEAN_VALIDATOR);
- VALIDATORS.put(Secure.ACCESSIBILITY_CAPTIONING_LOCALE, LOCALE_VALIDATOR);
+ VALIDATORS.put(Secure.ACCESSIBILITY_CAPTIONING_LOCALE, LOCALE_LOOSE_VALIDATOR);
VALIDATORS.put(Secure.ACCESSIBILITY_CAPTIONING_BACKGROUND_COLOR, ANY_INTEGER_VALIDATOR);
VALIDATORS.put(Secure.ACCESSIBILITY_CAPTIONING_FOREGROUND_COLOR, ANY_INTEGER_VALIDATOR);
VALIDATORS.put(
@@ -109,7 +109,7 @@ public class SecureSettingsValidators {
new String[] {"DEFAULT", "MONOSPACE", "SANS_SERIF", "SERIF"}));
VALIDATORS.put(
Secure.ACCESSIBILITY_CAPTIONING_FONT_SCALE,
- new InclusiveFloatRangeValidator(0.5f, 2.0f));
+ new InclusiveFloatRangeValidator(0.25f, 2.0f));
VALIDATORS.put(Secure.ACCESSIBILITY_CAPTIONING_WINDOW_COLOR, ANY_INTEGER_VALIDATOR);
VALIDATORS.put(Secure.FONT_WEIGHT_ADJUSTMENT, ANY_INTEGER_VALIDATOR);
VALIDATORS.put(Secure.REDUCE_BRIGHT_COLORS_LEVEL, PERCENTAGE_INTEGER_VALIDATOR);
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SettingsValidators.java
index 255b1ad3b3d2..3d6befbc6d96 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/SettingsValidators.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/SettingsValidators.java
@@ -188,6 +188,38 @@ public class SettingsValidators {
}
};
+ /**
+ * Similar to {@link #LOCALE_VALIDATOR} but allows loose/subset matches against the list
+ * from {@link Locale#getAvailableLocales()}.
+ *
+ * <p>Expects that the string is '_'-separated with 1 to 3 parts. Then checks the parts against
+ * the locale list, returning true if any available locale matches the parts provided using
+ * case insensitive string comparison.
+ * <li>Part 1: match against {@link Locale#getLanguage()}</li>
+ * <li>Part 2, if present: match against {@link Locale#getCountry()}</li>
+ * <li>Part 3, if present: match against {@link Locale#getVariant()}</li>
+ */
+ public static final Validator LOCALE_LOOSE_VALIDATOR = value -> {
+ if (value == null) {
+ return true;
+ }
+ String[] parts = value.split("_", 3);
+ Locale[] validLocales = Locale.getAvailableLocales();
+ for (Locale locale : validLocales) {
+ if (!parts[0].equalsIgnoreCase(locale.getLanguage())) {
+ continue;
+ }
+ if (parts.length >= 2 && !parts[1].equalsIgnoreCase(locale.getCountry())) {
+ continue;
+ }
+ if (parts.length == 3 && !parts[2].equalsIgnoreCase(locale.getVariant())) {
+ continue;
+ }
+ return true;
+ }
+ return false;
+ };
+
/** {@link Validator} that checks whether a value is a valid {@link JSONObject}. */
public static final Validator JSON_OBJECT_VALIDATOR = (value) -> {
if (value == null) {
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/WritableNamespaces.java b/packages/SettingsProvider/src/com/android/providers/settings/WritableNamespaces.java
index 292aa51db18f..0c5e7376bcfe 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/WritableNamespaces.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/WritableNamespaces.java
@@ -39,10 +39,12 @@ final class WritableNamespaces {
"captive_portal_login",
"connectivity",
"exo",
+ "location",
"nearby",
"netd_native",
"network_security",
"on_device_personalization",
+ "testing",
"tethering",
"tethering_u_or_later_native",
"thread_network"
diff --git a/packages/SettingsProvider/test/src/android/provider/settings/validators/SettingsValidatorsTest.java b/packages/SettingsProvider/test/src/android/provider/settings/validators/SettingsValidatorsTest.java
index 3b3bf8ca15f7..e1aca10243c5 100644
--- a/packages/SettingsProvider/test/src/android/provider/settings/validators/SettingsValidatorsTest.java
+++ b/packages/SettingsProvider/test/src/android/provider/settings/validators/SettingsValidatorsTest.java
@@ -125,6 +125,19 @@ public class SettingsValidatorsTest {
}
@Test
+ public void testLocaleLooseValidator() {
+ assertTrue(SettingsValidators.LOCALE_LOOSE_VALIDATOR.validate(null));
+ assertTrue(SettingsValidators.LOCALE_LOOSE_VALIDATOR.validate("en_US"));
+ assertTrue(SettingsValidators.LOCALE_LOOSE_VALIDATOR.validate("en_us"));
+ assertTrue(SettingsValidators.LOCALE_LOOSE_VALIDATOR.validate("es"));
+ assertTrue(SettingsValidators.LOCALE_LOOSE_VALIDATOR.validate("zh_TW"));
+ assertTrue(SettingsValidators.LOCALE_LOOSE_VALIDATOR.validate("en_US_POSIX"));
+ assertFalse(SettingsValidators.LOCALE_LOOSE_VALIDATOR.validate("en_FAKE"));
+ assertFalse(SettingsValidators.LOCALE_LOOSE_VALIDATOR.validate("en_US_FAKE"));
+ assertFalse(SettingsValidators.LOCALE_LOOSE_VALIDATOR.validate("rectangle"));
+ }
+
+ @Test
public void testPackageNameValidator() {
assertTrue(SettingsValidators.PACKAGE_NAME_VALIDATOR.validate(
"com.google.android"));
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index 2b4e65f2415c..55f7317f25e4 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -952,7 +952,6 @@
<uses-permission android:name="android.permission.SETUP_FSVERITY" />
<!-- Permissions required for CTS test - AppFunctionManagerTest -->
- <uses-permission android:name="android.permission.EXECUTE_APP_FUNCTIONS_TRUSTED" />
<uses-permission android:name="android.permission.EXECUTE_APP_FUNCTIONS" />
<!-- Permission required for CTS test - CtsNfcTestCases -->
@@ -998,6 +997,12 @@
<uses-permission android:name="android.permission.health.READ_SKIN_TEMPERATURE"
android:featureFlag="android.permission.flags.replace_body_sensor_permission_enabled"/>
+ <!-- Permissions required for CTS test - CtsHealthFitnessDeviceTestCases-->
+ <uses-permission android:name="android.permission.BACKUP_HEALTH_CONNECT_DATA_AND_SETTINGS"
+ android:featureFlag="android.permission.flags.health_connect_backup_restore_permission_enabled"/>
+ <uses-permission android:name="android.permission.RESTORE_HEALTH_CONNECT_DATA_AND_SETTINGS"
+ android:featureFlag="android.permission.flags.health_connect_backup_restore_permission_enabled"/>
+
<!-- Permission for TestClassifier tests to get access to classifier by type -->
<uses-permission android:name="android.permission.ACCESS_TEXT_CLASSIFIER_BY_TYPE"
android:featureFlag="android.permission.flags.text_classifier_choice_api_enabled"/>
@@ -1010,6 +1015,9 @@
<uses-permission android:name="android.permission.MANAGE_GLOBAL_SOUND_QUALITY_SERVICE" />
<uses-permission android:name="android.permission.READ_COLOR_ZONES" />
+ <!-- Permission required for trade-in mode testing -->
+ <uses-permission android:name="android.permission.ENTER_TRADE_IN_MODE" />
+
<application
android:label="@string/app_label"
android:theme="@android:style/Theme.DeviceDefault.DayNight"
diff --git a/packages/SoundPicker/res/values-gu/strings.xml b/packages/SoundPicker/res/values-gu/strings.xml
index 209769fd7f57..d80963837896 100644
--- a/packages/SoundPicker/res/values-gu/strings.xml
+++ b/packages/SoundPicker/res/values-gu/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="ringtone_default" msgid="798836092118824500">"ડિફોલ્ટ રિંગટોન"</string>
+ <string name="ringtone_default" msgid="798836092118824500">"ડિફૉલ્ટ રિંગટોન"</string>
<string name="notification_sound_default" msgid="8133121186242636840">"ડિફૉલ્ટ નોટિફિકેશન સાઉન્ડ"</string>
<string name="alarm_sound_default" msgid="4787646764557462649">"ડિફૉલ્ટ અલાર્મ સાઉન્ડ"</string>
<string name="add_ringtone_text" msgid="6642389991738337529">"રિંગટોન ઉમેરો"</string>
diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp
index 0a7d880677d8..744388f47d0e 100644
--- a/packages/SystemUI/Android.bp
+++ b/packages/SystemUI/Android.bp
@@ -314,6 +314,7 @@ filegroup {
"tests/src/**/systemui/statusbar/policy/WalletControllerImplTest.kt",
"tests/src/**/keyguard/ClockEventControllerTest.kt",
"tests/src/**/systemui/bluetooth/qsdialog/BluetoothStateInteractorTest.kt",
+ "tests/src/**/systemui/bluetooth/qsdialog/BluetoothDetailsContentManagerTest.kt",
"tests/src/**/systemui/bluetooth/qsdialog/BluetoothTileDialogDelegateTest.kt",
"tests/src/**/systemui/bluetooth/qsdialog/BluetoothTileDialogRepositoryTest.kt",
"tests/src/**/systemui/bluetooth/qsdialog/BluetoothTileDialogViewModelTest.kt",
@@ -424,7 +425,6 @@ android_library {
manifest: "AndroidManifest-res.xml",
flags_packages: [
"android.app.flags-aconfig",
- "com_android_systemui_flags",
],
}
diff --git a/packages/SystemUI/OWNERS b/packages/SystemUI/OWNERS
index 33e9919f06eb..236654deefb5 100644
--- a/packages/SystemUI/OWNERS
+++ b/packages/SystemUI/OWNERS
@@ -13,7 +13,6 @@ alexflo@google.com
andonian@google.com
amiko@google.com
austindelgado@google.com
-aroederer@google.com
arteiro@google.com
asc@google.com
awickham@google.com
@@ -104,7 +103,6 @@ stwu@google.com
syeonlee@google.com
sunnygoyal@google.com
thiruram@google.com
-tkachenkoi@google.com
tracyzhou@google.com
tsuji@google.com
twickham@google.com
diff --git a/packages/SystemUI/aconfig/accessibility.aconfig b/packages/SystemUI/aconfig/accessibility.aconfig
index fb21be4c3bd1..3cb30258fcb1 100644
--- a/packages/SystemUI/aconfig/accessibility.aconfig
+++ b/packages/SystemUI/aconfig/accessibility.aconfig
@@ -120,6 +120,16 @@ flag {
}
flag {
+ name: "update_window_magnifier_bottom_boundary"
+ namespace: "accessibility"
+ description: "Update the window magnifier boundary at the bottom to the top of the system gesture inset."
+ bug: "380320995"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
+flag {
name: "hearing_devices_dialog_related_tools"
namespace: "accessibility"
description: "Shows the related tools for hearing devices dialog."
diff --git a/packages/SystemUI/aconfig/biometrics_framework.aconfig b/packages/SystemUI/aconfig/biometrics_framework.aconfig
index 9692aa5d1a4c..63497e5a9b6e 100644
--- a/packages/SystemUI/aconfig/biometrics_framework.aconfig
+++ b/packages/SystemUI/aconfig/biometrics_framework.aconfig
@@ -4,6 +4,13 @@ container: "system"
# NOTE: Keep alphabetized to help limit merge conflicts from multiple simultaneous editors.
flag {
+ name: "bp_colors"
+ namespace: "biometrics_framework"
+ description: "Updates colors in biometric prompt"
+ bug: "389744739"
+}
+
+flag {
name: "cont_auth_plugin"
namespace: "biometrics_framework"
description: "Plugin and related API hooks for contextual auth plugins"
diff --git a/packages/SystemUI/aconfig/systemui.aconfig b/packages/SystemUI/aconfig/systemui.aconfig
index bb0d5d7755cf..5b989cb6abc4 100644
--- a/packages/SystemUI/aconfig/systemui.aconfig
+++ b/packages/SystemUI/aconfig/systemui.aconfig
@@ -282,13 +282,6 @@ flag {
}
flag {
- name: "dual_shade"
- namespace: "systemui"
- description: "Enables Dual Shade (go/dual-shade-design-doc)."
- bug: "337259436"
-}
-
-flag {
name: "device_entry_udfps_refactor"
namespace: "systemui"
description: "Refactoring device entry UDFPS icon to use modern architecture and "
@@ -1697,13 +1690,6 @@ flag {
}
flag {
- name: "magic_portrait_wallpapers"
- namespace: "systemui"
- description: "Magic Portrait related changes in systemui"
- bug: "370863642"
-}
-
-flag {
name: "notes_role_qs_tile"
namespace: "systemui"
description: "Enables notes role qs tile which opens default notes role app in app bubbles"
@@ -2020,3 +2006,17 @@ flag {
description: "Show a Locked by your watch indicator on the keyguard when the device is locked by the watch."
bug: "387322459"
}
+
+flag {
+ name: "decouple_view_controller_in_animlib"
+ namespace: "systemui"
+ description: "Decouple view and controller in AnimLib."
+ bug: "393241010"
+}
+
+flag {
+ name: "clock_fidget_animation"
+ namespace: "systemui"
+ description: "Enables the clock fidget animation"
+ bug: "364664389"
+}
diff --git a/packages/SystemUI/animation/res/values/ids.xml b/packages/SystemUI/animation/res/values/ids.xml
index 1a224ac7c1f7..f6bb95a42fce 100644
--- a/packages/SystemUI/animation/res/values/ids.xml
+++ b/packages/SystemUI/animation/res/values/ids.xml
@@ -26,4 +26,7 @@
<item type="id" name="tag_override_left"/>
<item type="id" name="tag_override_right"/>
<item type="id" name="tag_override_top"/>
-</resources> \ No newline at end of file
+
+ <!-- ViewTransitionRegistry -->
+ <item type="id" name="tag_view_transition_token"/>
+</resources>
diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityTransitionAnimator.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityTransitionAnimator.kt
index c8d3430bf54b..f03bd3d9a2a7 100644
--- a/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityTransitionAnimator.kt
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityTransitionAnimator.kt
@@ -73,6 +73,9 @@ import com.android.wm.shell.shared.ShellTransitions
import com.android.wm.shell.shared.TransitionUtil
import java.util.concurrent.Executor
import kotlin.math.roundToInt
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.withTimeoutOrNull
private const val TAG = "ActivityTransitionAnimator"
@@ -241,7 +244,7 @@ constructor(
override fun onTransitionAnimationProgress(linearProgress: Float) {
LinkedHashSet(listeners).forEach {
- it.onTransitionAnimationProgress(linearProgress)
+ it.onTransitionAnimationProgress(linearProgress)
}
}
@@ -494,15 +497,19 @@ constructor(
/**
* Create a new animation [Runner] controlled by the [Controller] that [controllerFactory] can
- * create based on [forLaunch].
+ * create based on [forLaunch] and within the given [scope].
*
* This method must only be used for long-lived registrations. Otherwise, use
* [createEphemeralRunner].
*/
@VisibleForTesting
- fun createLongLivedRunner(controllerFactory: ControllerFactory, forLaunch: Boolean): Runner {
+ fun createLongLivedRunner(
+ controllerFactory: ControllerFactory,
+ scope: CoroutineScope,
+ forLaunch: Boolean,
+ ): Runner {
assertLongLivedReturnAnimations()
- return Runner(callback!!, transitionAnimator, lifecycleListener) {
+ return Runner(scope, callback!!, transitionAnimator, lifecycleListener) {
controllerFactory.createController(forLaunch)
}
}
@@ -564,7 +571,7 @@ constructor(
* Creates a [Controller] for launching or returning from the activity linked to [cookie]
* and [component].
*/
- abstract fun createController(forLaunch: Boolean): Controller
+ abstract suspend fun createController(forLaunch: Boolean): Controller
}
/**
@@ -691,9 +698,14 @@ constructor(
* animations.
*
* The [Controller]s created by [controllerFactory] will only be used for transitions matching
- * the [cookie], or the [ComponentName] defined within it if the cookie matching fails.
+ * the [cookie], or the [ComponentName] defined within it if the cookie matching fails. These
+ * [Controller]s can only be created within [scope].
*/
- fun register(cookie: TransitionCookie, controllerFactory: ControllerFactory) {
+ fun register(
+ cookie: TransitionCookie,
+ controllerFactory: ControllerFactory,
+ scope: CoroutineScope,
+ ) {
assertLongLivedReturnAnimations()
if (transitionRegister == null) {
@@ -725,7 +737,7 @@ constructor(
}
val launchRemoteTransition =
RemoteTransition(
- OriginTransition(createLongLivedRunner(controllerFactory, forLaunch = true)),
+ OriginTransition(createLongLivedRunner(controllerFactory, scope, forLaunch = true)),
"${cookie}_launchTransition",
)
transitionRegister.register(launchFilter, launchRemoteTransition, includeTakeover = true)
@@ -749,7 +761,9 @@ constructor(
}
val returnRemoteTransition =
RemoteTransition(
- OriginTransition(createLongLivedRunner(controllerFactory, forLaunch = false)),
+ OriginTransition(
+ createLongLivedRunner(controllerFactory, scope, forLaunch = false)
+ ),
"${cookie}_returnTransition",
)
transitionRegister.register(returnFilter, returnRemoteTransition, includeTakeover = true)
@@ -952,7 +966,9 @@ constructor(
* Reusable factory to generate single-use controllers. In case of an ephemeral [Runner],
* this must be null and [controller] must be defined instead.
*/
- private val controllerFactory: (() -> Controller)?,
+ private val controllerFactory: (suspend () -> Controller)?,
+ /** The scope to use when this runner is based on [controllerFactory]. */
+ private val scope: CoroutineScope? = null,
private val callback: Callback,
/** The animator to use to animate the window transition. */
private val transitionAnimator: TransitionAnimator,
@@ -973,13 +989,15 @@ constructor(
)
constructor(
+ scope: CoroutineScope,
callback: Callback,
transitionAnimator: TransitionAnimator,
listener: Listener? = null,
- controllerFactory: () -> Controller,
+ controllerFactory: suspend () -> Controller,
) : this(
controller = null,
controllerFactory = controllerFactory,
+ scope = scope,
callback = callback,
transitionAnimator = transitionAnimator,
listener = listener,
@@ -994,12 +1012,12 @@ constructor(
assert((controller != null).xor(controllerFactory != null))
delegate = null
- if (controller != null) {
+ controller?.let {
// Ephemeral launches bundle the runner with the launch request (instead of being
// registered ahead of time for later use). This means that there could be a timeout
// between creation and invocation, so the delegate needs to exist from the
// beginning in order to handle such timeout.
- createDelegate()
+ createDelegate(it)
}
}
@@ -1040,49 +1058,79 @@ constructor(
finishedCallback: IRemoteAnimationFinishedCallback?,
performAnimation: (AnimationDelegate) -> Unit,
) {
- maybeSetUp()
- val delegate = delegate
- mainExecutor.execute {
- if (delegate == null) {
- Log.i(TAG, "onAnimationStart called after completion")
- // Animation started too late and timed out already. We need to still
- // signal back that we're done with it.
- finishedCallback?.onAnimationFinished()
- } else {
- performAnimation(delegate)
+ val controller = controller
+ val controllerFactory = controllerFactory
+
+ if (controller != null) {
+ maybeSetUp(controller)
+ val success = startAnimation(performAnimation)
+ if (!success) finishedCallback?.onAnimationFinished()
+ } else if (controllerFactory != null) {
+ scope?.launch {
+ val success =
+ withTimeoutOrNull(TRANSITION_TIMEOUT) {
+ setUp(controllerFactory)
+ startAnimation(performAnimation)
+ } ?: false
+ if (!success) finishedCallback?.onAnimationFinished()
}
+ } else {
+ // This should never happen, as either the controller or factory should always be
+ // defined. This final call is for safety in case something goes wrong.
+ Log.wtf(TAG, "initAndRun with neither a controller nor factory")
+ finishedCallback?.onAnimationFinished()
+ }
+ }
+
+ /** Tries to start the animation on the main thread and returns whether it succeeded. */
+ @BinderThread
+ private fun startAnimation(performAnimation: (AnimationDelegate) -> Unit): Boolean {
+ val delegate = delegate
+ return if (delegate != null) {
+ mainExecutor.execute { performAnimation(delegate) }
+ true
+ } else {
+ // Animation started too late and timed out already.
+ Log.i(TAG, "startAnimation called after completion")
+ false
}
}
@BinderThread
override fun onAnimationCancelled() {
val delegate = delegate
- mainExecutor.execute {
- delegate ?: Log.wtf(TAG, "onAnimationCancelled called after completion")
- delegate?.onAnimationCancelled()
+ if (delegate != null) {
+ mainExecutor.execute { delegate.onAnimationCancelled() }
+ } else {
+ Log.wtf(TAG, "onAnimationCancelled called after completion")
}
}
+ /**
+ * Posts the default animation timeouts. Since this only applies to ephemeral launches, this
+ * method is a no-op if [controller] is not defined.
+ */
@VisibleForTesting
@UiThread
fun postTimeouts() {
- maybeSetUp()
+ controller?.let { maybeSetUp(it) }
delegate?.postTimeouts()
}
@AnyThread
- private fun maybeSetUp() {
- if (controllerFactory == null || delegate != null) return
- createDelegate()
+ private fun maybeSetUp(controller: Controller) {
+ if (delegate != null) return
+ createDelegate(controller)
}
@AnyThread
- private fun createDelegate() {
- var controller = controller
- val factory = controllerFactory
- if (controller == null && factory == null) return
+ private suspend fun setUp(createController: suspend () -> Controller) {
+ val controller = createController()
+ createDelegate(controller)
+ }
- controller = controller ?: factory!!.invoke()
+ @AnyThread
+ private fun createDelegate(controller: Controller) {
delegate =
AnimationDelegate(
mainExecutor,
diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/FontInterpolator.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/FontInterpolator.kt
index a137891f2d01..f8bcb81dc073 100644
--- a/packages/SystemUI/animation/src/com/android/systemui/animation/FontInterpolator.kt
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/FontInterpolator.kt
@@ -24,6 +24,7 @@ import android.util.MathUtils
import androidx.annotation.VisibleForTesting
import java.lang.Float.max
import java.lang.Float.min
+import kotlin.math.roundToInt
private const val TAG_WGHT = "wght"
private const val TAG_ITAL = "ital"
@@ -89,7 +90,7 @@ class FontCacheImpl(override val animationFrameCount: Int = DEFAULT_FONT_CACHE_M
/** Provide interpolation of two fonts by adjusting font variation settings. */
class FontInterpolator(val fontCache: FontCache = FontCacheImpl()) {
/** Linear interpolate the font variation settings. */
- fun lerp(start: Font, end: Font, progress: Float): Font {
+ fun lerp(start: Font, end: Font, progress: Float, linearProgress: Float): Font {
if (progress == 0f) {
return start
} else if (progress == 1f) {
@@ -105,7 +106,8 @@ class FontInterpolator(val fontCache: FontCache = FontCacheImpl()) {
// Check we already know the result. This is commonly happens since we draws the different
// text chunks with the same font.
- val iKey = InterpKey(start, end, (progress * fontCache.animationFrameCount).toInt())
+ val iKey =
+ InterpKey(start, end, (linearProgress * fontCache.animationFrameCount).roundToInt())
fontCache.get(iKey)?.let {
if (DEBUG) {
Log.d(LOG_TAG, "[$progress] Interp. cache hit for $iKey")
diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/TextAnimator.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/TextAnimator.kt
index eef26b67614b..b9f9bc7e2daa 100644
--- a/packages/SystemUI/animation/src/com/android/systemui/animation/TextAnimator.kt
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/TextAnimator.kt
@@ -25,9 +25,8 @@ import android.graphics.Typeface
import android.graphics.fonts.Font
import android.graphics.fonts.FontVariationAxis
import android.text.Layout
-import android.util.LruCache
-import kotlin.math.roundToInt
import android.util.Log
+import android.util.LruCache
private const val DEFAULT_ANIMATION_DURATION: Long = 300
private const val TYPEFACE_CACHE_MAX_ENTRIES = 5
@@ -37,6 +36,7 @@ typealias GlyphCallback = (TextAnimator.PositionedGlyph, Float) -> Unit
interface TypefaceVariantCache {
val fontCache: FontCache
val animationFrameCount: Int
+
fun getTypefaceForVariant(fvar: String?): Typeface?
companion object {
@@ -45,24 +45,25 @@ interface TypefaceVariantCache {
return baseTypeface
}
- val axes = FontVariationAxis.fromFontVariationSettings(fVar)
- ?.toMutableList()
- ?: mutableListOf()
+ val axes =
+ FontVariationAxis.fromFontVariationSettings(fVar)?.toMutableList()
+ ?: mutableListOf()
axes.removeIf { !baseTypeface.isSupportedAxes(it.getOpenTypeTagValue()) }
+
if (axes.isEmpty()) {
return baseTypeface
+ } else {
+ return Typeface.createFromTypefaceWithVariation(baseTypeface, axes)
}
- return Typeface.createFromTypefaceWithVariation(baseTypeface, axes)
}
}
}
-class TypefaceVariantCacheImpl(
- var baseTypeface: Typeface,
- override val animationFrameCount: Int,
-) : TypefaceVariantCache {
+class TypefaceVariantCacheImpl(var baseTypeface: Typeface, override val animationFrameCount: Int) :
+ TypefaceVariantCache {
private val cache = LruCache<String, Typeface>(TYPEFACE_CACHE_MAX_ENTRIES)
override val fontCache = FontCacheImpl(animationFrameCount)
+
override fun getTypefaceForVariant(fvar: String?): Typeface? {
if (fvar == null) {
return baseTypeface
@@ -113,29 +114,20 @@ class TextAnimator(
ValueAnimator.ofFloat(1f).apply {
duration = DEFAULT_ANIMATION_DURATION
addUpdateListener {
- textInterpolator.progress =
- calculateProgress(it.animatedValue as Float, typefaceCache.animationFrameCount)
+ textInterpolator.progress = it.animatedValue as Float
+ textInterpolator.linearProgress =
+ it.currentPlayTime.toFloat() / it.duration.toFloat()
invalidateCallback()
}
addListener(
object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator) = textInterpolator.rebase()
+
override fun onAnimationCancel(animation: Animator) = textInterpolator.rebase()
}
)
}
- private fun calculateProgress(animProgress: Float, numberOfAnimationSteps: Int?): Float {
- if (numberOfAnimationSteps != null) {
- // This clamps the progress to the nearest value of "numberOfAnimationSteps"
- // discrete values between 0 and 1f.
- return (animProgress * numberOfAnimationSteps).roundToInt() /
- numberOfAnimationSteps.toFloat()
- }
-
- return animProgress
- }
-
sealed class PositionedGlyph {
/** Mutable X coordinate of the glyph position relative from drawing offset. */
var x: Float = 0f
@@ -209,12 +201,14 @@ class TextAnimator(
*
* Here is an example of font runs: "fin. 終わり"
*
+ * ```
* Characters : f i n . _ 終 わ り
* Code Points: \u0066 \u0069 \u006E \u002E \u0020 \u7D42 \u308F \u308A
* Font Runs : <-- Roboto-Regular.ttf --><-- NotoSans-CJK.otf -->
* runStart = 0, runLength = 5 runStart = 5, runLength = 3
* Glyph IDs : 194 48 7 8 4367 1039 1002
* Glyph Index: 0 1 2 3 0 1 2
+ * ```
*
* In this example, the "fi" is converted into ligature form, thus the single glyph ID is
* assigned for two characters, f and i.
@@ -246,22 +240,24 @@ class TextAnimator(
/**
* Set text style with animation.
*
+ * ```
* By passing -1 to weight, the view preserve the current weight.
* By passing -1 to textSize, the view preserve the current text size.
- * Bu passing -1 to duration, the default text animation, 1000ms, is used.
+ * By passing -1 to duration, the default text animation, 1000ms, is used.
* By passing false to animate, the text will be updated without animation.
+ * ```
*
* @param fvar an optional text fontVariationSettings.
* @param textSize an optional font size.
- * @param colors an optional colors array that must be the same size as numLines passed to
- * the TextInterpolator
+ * @param colors an optional colors array that must be the same size as numLines passed to the
+ * TextInterpolator
* @param strokeWidth an optional paint stroke width
* @param animate an optional boolean indicating true for showing style transition as animation,
- * false for immediate style transition. True by default.
+ * false for immediate style transition. True by default.
* @param duration an optional animation duration in milliseconds. This is ignored if animate is
- * false.
+ * false.
* @param interpolator an optional time interpolator. If null is passed, last set interpolator
- * will be used. This is ignored if animate is false.
+ * will be used. This is ignored if animate is false.
*/
fun setTextStyle(
fvar: String? = "",
@@ -273,8 +269,20 @@ class TextAnimator(
interpolator: TimeInterpolator? = null,
delay: Long = 0,
onAnimationEnd: Runnable? = null,
- ) = setTextStyleInternal(fvar, textSize, color, strokeWidth, animate, duration,
- interpolator, delay, onAnimationEnd, updateLayoutOnFailure = true)
+ ) {
+ setTextStyleInternal(
+ fvar,
+ textSize,
+ color,
+ strokeWidth,
+ animate,
+ duration,
+ interpolator,
+ delay,
+ onAnimationEnd,
+ updateLayoutOnFailure = true,
+ )
+ }
private fun setTextStyleInternal(
fvar: String?,
@@ -310,24 +318,21 @@ class TextAnimator(
if (animate) {
animator.startDelay = delay
- animator.duration =
- if (duration == -1L) {
- DEFAULT_ANIMATION_DURATION
- } else {
- duration
- }
+ animator.duration = if (duration == -1L) DEFAULT_ANIMATION_DURATION else duration
interpolator?.let { animator.interpolator = it }
if (onAnimationEnd != null) {
- val listener = object : AnimatorListenerAdapter() {
- override fun onAnimationEnd(animation: Animator) {
- onAnimationEnd.run()
- animator.removeListener(this)
- }
- override fun onAnimationCancel(animation: Animator) {
- animator.removeListener(this)
+ animator.addListener(
+ object : AnimatorListenerAdapter() {
+ override fun onAnimationEnd(animation: Animator) {
+ onAnimationEnd.run()
+ animator.removeListener(this)
+ }
+
+ override fun onAnimationCancel(animation: Animator) {
+ animator.removeListener(this)
+ }
}
- }
- animator.addListener(listener)
+ )
}
animator.start()
} else {
@@ -338,11 +343,26 @@ class TextAnimator(
}
} catch (ex: IllegalArgumentException) {
if (updateLayoutOnFailure) {
- Log.e(TAG, "setTextStyleInternal: Exception caught but retrying. This is usually" +
- " due to the layout having changed unexpectedly without being notified.", ex)
+ Log.e(
+ TAG,
+ "setTextStyleInternal: Exception caught but retrying. This is usually" +
+ " due to the layout having changed unexpectedly without being notified.",
+ ex,
+ )
+
updateLayout(textInterpolator.layout)
- setTextStyleInternal(fvar, textSize, color, strokeWidth, animate, duration,
- interpolator, delay, onAnimationEnd, updateLayoutOnFailure = false)
+ setTextStyleInternal(
+ fvar,
+ textSize,
+ color,
+ strokeWidth,
+ animate,
+ duration,
+ interpolator,
+ delay,
+ onAnimationEnd,
+ updateLayoutOnFailure = false,
+ )
} else {
throw ex
}
@@ -351,6 +371,8 @@ class TextAnimator(
/**
* Set text style with animation. Similar as
+ *
+ * ```
* fun setTextStyle(
* fvar: String? = "",
* textSize: Float = -1f,
@@ -362,6 +384,7 @@ class TextAnimator(
* delay: Long = 0,
* onAnimationEnd: Runnable? = null
* )
+ * ```
*
* @param weight an optional style value for `wght` in fontVariationSettings.
* @param width an optional style value for `wdth` in fontVariationSettings.
@@ -380,14 +403,16 @@ class TextAnimator(
duration: Long = -1L,
interpolator: TimeInterpolator? = null,
delay: Long = 0,
- onAnimationEnd: Runnable? = null
- ) = setTextStyleInternal(
- fvar = fontVariationUtils.updateFontVariation(
- weight = weight,
- width = width,
- opticalSize = opticalSize,
- roundness = roundness,
- ),
+ onAnimationEnd: Runnable? = null,
+ ) {
+ setTextStyleInternal(
+ fvar =
+ fontVariationUtils.updateFontVariation(
+ weight = weight,
+ width = width,
+ opticalSize = opticalSize,
+ roundness = roundness,
+ ),
textSize = textSize,
color = color,
strokeWidth = strokeWidth,
@@ -398,6 +423,7 @@ class TextAnimator(
onAnimationEnd = onAnimationEnd,
updateLayoutOnFailure = true,
)
+ }
companion object {
private val TAG = TextAnimator::class.simpleName!!
diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/TextInterpolator.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/TextInterpolator.kt
index 9c0c0ffc8d41..457f45388062 100644
--- a/packages/SystemUI/animation/src/com/android/systemui/animation/TextInterpolator.kt
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/TextInterpolator.kt
@@ -98,6 +98,9 @@ class TextInterpolator(layout: Layout, var typefaceCache: TypefaceVariantCache)
*/
var progress: Float = 0f
+ /** Linear progress value (not interpolated) */
+ var linearProgress: Float = 0f
+
/**
* The layout used for drawing text.
*
@@ -217,7 +220,12 @@ class TextInterpolator(layout: Layout, var typefaceCache: TypefaceVariantCache)
}
run.fontRuns.forEach { fontRun ->
fontRun.baseFont =
- fontInterpolator.lerp(fontRun.baseFont, fontRun.targetFont, progress)
+ fontInterpolator.lerp(
+ fontRun.baseFont,
+ fontRun.targetFont,
+ progress,
+ linearProgress,
+ )
val fvar = FontVariationAxis.toFontVariationSettings(fontRun.baseFont.axes)
basePaint.typeface = typefaceCache.getTypefaceForVariant(fvar)
}
@@ -358,7 +366,7 @@ class TextInterpolator(layout: Layout, var typefaceCache: TypefaceVariantCache)
// Draws single font run.
private fun drawFontRun(c: Canvas, line: Run, run: FontRun, lineNo: Int, paint: Paint) {
var arrayIndex = 0
- val font = fontInterpolator.lerp(run.baseFont, run.targetFont, progress)
+ val font = fontInterpolator.lerp(run.baseFont, run.targetFont, progress, linearProgress)
val glyphFilter = glyphFilter
if (glyphFilter == null) {
diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/ViewTransitionRegistry.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/ViewTransitionRegistry.kt
new file mode 100644
index 000000000000..58c2a1c98ec4
--- /dev/null
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/ViewTransitionRegistry.kt
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.animation
+
+import android.os.Trace
+import android.view.View
+import java.lang.ref.WeakReference
+
+/**
+ * A registry to temporarily store the view being transitioned into a Dialog (using
+ * [DialogTransitionAnimator]) or an Activity (using [ActivityTransitionAnimator])
+ */
+class ViewTransitionRegistry {
+
+ /**
+ * A map of a unique token to a WeakReference of the View being transitioned. WeakReference
+ * ensures that Views are garbage collected whenever they become eligible and avoid any
+ * memory leaks
+ */
+ private val registry by lazy { mutableMapOf<ViewTransitionToken, WeakReference<View>>() }
+
+ /**
+ * A [View.OnAttachStateChangeListener] to be attached to all views stored in the registry to
+ * ensure that views (and their corresponding entry) is automatically removed when the view is
+ * detached from the Window
+ */
+ private val listener by lazy {
+ object : View.OnAttachStateChangeListener {
+ override fun onViewAttachedToWindow(view: View) {
+ // empty
+ }
+
+ override fun onViewDetachedFromWindow(view: View) {
+ (view.getTag(R.id.tag_view_transition_token)
+ as? ViewTransitionToken)?.let { token -> unregister(token) }
+ }
+ }
+ }
+
+ /**
+ * Creates an entry of a unique "token" mapped to "transitioning view" in the registry
+ *
+ * @param token unique token associated with the transitioning view
+ * @param view view undergoing transitions
+ */
+ fun register(token: ViewTransitionToken, view: View) {
+ // token embedded as a view tag enables to use a single listener for all views
+ view.setTag(R.id.tag_view_transition_token, token)
+ view.addOnAttachStateChangeListener(listener)
+ registry[token] = WeakReference(view)
+ emitCountForTrace()
+ }
+
+ /**
+ * Removes the entry associated with the unique "token" in the registry
+ *
+ * @param token unique token associated with the transitioning view
+ */
+ fun unregister(token: ViewTransitionToken) {
+ registry.remove(token)?.let {
+ it.get()?.let { view ->
+ view.removeOnAttachStateChangeListener(listener)
+ view.setTag(R.id.tag_view_transition_token, null)
+ }
+ it.clear()
+ }
+ emitCountForTrace()
+ }
+
+ /**
+ * Access a view from registry using unique "token" associated with it
+ * WARNING - this returns a StrongReference to the View stored in the registry
+ */
+ fun getView(token: ViewTransitionToken): View? {
+ return registry[token]?.get()
+ }
+
+ /**
+ * Utility function to emit number of non-null views in the registry whenever the registry is
+ * updated (via [register] or [unregister])
+ */
+ private fun emitCountForTrace() {
+ Trace.setCounter("transition_registry_view_count", registry.count().toLong())
+ }
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/properties/ProdBubbleProperties.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/ViewTransitionToken.kt
index 33b61b164988..c211a8ed1de2 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/properties/ProdBubbleProperties.kt
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/ViewTransitionToken.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2023 The Android Open Source Project
+ * Copyright (C) 2025 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,22 +14,19 @@
* limitations under the License.
*/
-package com.android.wm.shell.bubbles.properties
+package com.android.systemui.animation
-import android.os.SystemProperties
-import com.android.wm.shell.Flags
-
-/** Provides bubble properties in production. */
-object ProdBubbleProperties : BubbleProperties {
-
- private var _isBubbleBarEnabled = Flags.enableBubbleBar() ||
- SystemProperties.getBoolean("persist.wm.debug.bubble_bar", false)
-
- override val isBubbleBarEnabled
- get() = _isBubbleBarEnabled
-
- override fun refresh() {
- _isBubbleBarEnabled = Flags.enableBubbleBar() ||
- SystemProperties.getBoolean("persist.wm.debug.bubble_bar", false)
- }
+/**
+ * A token uniquely mapped to a View in [ViewTransitionRegistry]. This token is guaranteed to be
+ * unique as timestamp is appended to the token string
+ *
+ * @constructor creates an instance of [ViewTransitionToken] with token as "timestamp" or
+ * "ClassName_timestamp"
+ *
+ * @property token String value of a unique token
+ */
+@JvmInline
+value class ViewTransitionToken private constructor(val token: String) {
+ constructor() : this(token = System.currentTimeMillis().toString())
+ constructor(clazz: Class<*>) : this(token = clazz.simpleName + "_${System.currentTimeMillis()}")
}
diff --git a/packages/SystemUI/compose/core/src/com/android/compose/animation/ExpandableController.kt b/packages/SystemUI/compose/core/src/com/android/compose/animation/ExpandableController.kt
index 103a9b5cf5f4..c5d2802c8941 100644
--- a/packages/SystemUI/compose/core/src/com/android/compose/animation/ExpandableController.kt
+++ b/packages/SystemUI/compose/core/src/com/android/compose/animation/ExpandableController.kt
@@ -319,7 +319,7 @@ internal class ExpandableControllerImpl(
override fun onTransitionAnimationStart(isExpandingFullyAbove: Boolean) {
delegate.onTransitionAnimationStart(isExpandingFullyAbove)
- overlay.value = composeViewRoot.rootView.overlay as ViewGroupOverlay
+ overlay.value = transitionContainer.overlay as ViewGroupOverlay
cujType?.let { InteractionJankMonitor.getInstance().begin(composeViewRoot, it) }
}
diff --git a/packages/SystemUI/compose/core/src/com/android/compose/gesture/NestedDraggable.kt b/packages/SystemUI/compose/core/src/com/android/compose/gesture/NestedDraggable.kt
index 195b060932eb..959f28f2d99e 100644
--- a/packages/SystemUI/compose/core/src/com/android/compose/gesture/NestedDraggable.kt
+++ b/packages/SystemUI/compose/core/src/com/android/compose/gesture/NestedDraggable.kt
@@ -137,9 +137,18 @@ fun Modifier.nestedDraggable(
orientation: Orientation,
overscrollEffect: OverscrollEffect? = null,
enabled: Boolean = true,
+ nestedDragsEnabled: Boolean = true,
): Modifier {
return this.thenIf(overscrollEffect != null) { Modifier.overscroll(overscrollEffect) }
- .then(NestedDraggableElement(draggable, orientation, overscrollEffect, enabled))
+ .then(
+ NestedDraggableElement(
+ draggable,
+ orientation,
+ overscrollEffect,
+ enabled,
+ nestedDragsEnabled,
+ )
+ )
}
private data class NestedDraggableElement(
@@ -147,13 +156,20 @@ private data class NestedDraggableElement(
private val orientation: Orientation,
private val overscrollEffect: OverscrollEffect?,
private val enabled: Boolean,
+ private val nestedDragsEnabled: Boolean,
) : ModifierNodeElement<NestedDraggableRootNode>() {
override fun create(): NestedDraggableRootNode {
- return NestedDraggableRootNode(draggable, orientation, overscrollEffect, enabled)
+ return NestedDraggableRootNode(
+ draggable,
+ orientation,
+ overscrollEffect,
+ enabled,
+ nestedDragsEnabled,
+ )
}
override fun update(node: NestedDraggableRootNode) {
- node.update(draggable, orientation, overscrollEffect, enabled)
+ node.update(draggable, orientation, overscrollEffect, enabled, nestedDragsEnabled)
}
}
@@ -166,15 +182,17 @@ private class NestedDraggableRootNode(
orientation: Orientation,
overscrollEffect: OverscrollEffect?,
enabled: Boolean,
+ nestedDragsEnabled: Boolean,
) : DelegatingNode() {
private var delegateNode =
- if (enabled) create(draggable, orientation, overscrollEffect) else null
+ if (enabled) create(draggable, orientation, overscrollEffect, nestedDragsEnabled) else null
fun update(
draggable: NestedDraggable,
orientation: Orientation,
overscrollEffect: OverscrollEffect?,
enabled: Boolean,
+ nestedDragsEnabled: Boolean,
) {
// Disabled.
if (!enabled) {
@@ -186,20 +204,23 @@ private class NestedDraggableRootNode(
// Disabled => Enabled.
val nullableDelegate = delegateNode
if (nullableDelegate == null) {
- delegateNode = create(draggable, orientation, overscrollEffect)
+ delegateNode = create(draggable, orientation, overscrollEffect, nestedDragsEnabled)
return
}
// Enabled => Enabled (update).
- nullableDelegate.update(draggable, orientation, overscrollEffect)
+ nullableDelegate.update(draggable, orientation, overscrollEffect, nestedDragsEnabled)
}
private fun create(
draggable: NestedDraggable,
orientation: Orientation,
overscrollEffect: OverscrollEffect?,
+ nestedDragsEnabled: Boolean,
): NestedDraggableNode {
- return delegate(NestedDraggableNode(draggable, orientation, overscrollEffect))
+ return delegate(
+ NestedDraggableNode(draggable, orientation, overscrollEffect, nestedDragsEnabled)
+ )
}
}
@@ -207,6 +228,7 @@ private class NestedDraggableNode(
private var draggable: NestedDraggable,
override var orientation: Orientation,
private var overscrollEffect: OverscrollEffect?,
+ private var nestedDragsEnabled: Boolean,
) :
DelegatingNode(),
PointerInputModifierNode,
@@ -247,18 +269,12 @@ private class NestedDraggableNode(
draggable: NestedDraggable,
orientation: Orientation,
overscrollEffect: OverscrollEffect?,
+ nestedDragsEnabled: Boolean,
) {
- if (
- draggable == this.draggable &&
- orientation == this.orientation &&
- overscrollEffect == this.overscrollEffect
- ) {
- return
- }
-
this.draggable = draggable
this.orientation = orientation
this.overscrollEffect = overscrollEffect
+ this.nestedDragsEnabled = nestedDragsEnabled
trackWheelScroll.resetPointerInputHandler()
trackDownPositionDelegate.resetPointerInputHandler()
@@ -296,13 +312,6 @@ private class NestedDraggableNode(
awaitEachGesture {
val down = awaitFirstDown(requireUnconsumed = false)
- check(down.position == lastFirstDown) {
- "Position from detectDrags() is not the same as position in trackDownPosition()"
- }
- check(pointersDown.size == 1 && pointersDown.keys.first() == down.id) {
- "pointersDown should only contain $down but it contains $pointersDown"
- }
-
var overSlop = 0f
val onTouchSlopReached = { change: PointerInputChange, over: Float ->
if (draggable.shouldStartDrag(change)) {
@@ -342,7 +351,12 @@ private class NestedDraggableNode(
check(pointersDown.size > 0) { "pointersDown is empty" }
val controller =
- draggable.onDragStarted(down.position, sign, pointersDown.size, drag.type)
+ draggable.onDragStarted(
+ down.position,
+ sign,
+ pointersDown.size.coerceAtLeast(1),
+ drag.type,
+ )
if (overSlop != 0f) {
onDrag(controller, drag, overSlop, velocityTracker)
}
@@ -547,7 +561,8 @@ private class NestedDraggableNode(
val sign = offset.sign
if (
- nestedScrollController == null &&
+ nestedDragsEnabled &&
+ nestedScrollController == null &&
// TODO(b/388231324): Remove this.
!lastEventWasScrollWheel &&
draggable.shouldConsumeNestedScroll(sign) &&
diff --git a/packages/SystemUI/compose/core/src/com/android/compose/gesture/effect/ContentOverscrollEffect.kt b/packages/SystemUI/compose/core/src/com/android/compose/gesture/effect/ContentOverscrollEffect.kt
index 49e510791929..cb713ece12a5 100644
--- a/packages/SystemUI/compose/core/src/com/android/compose/gesture/effect/ContentOverscrollEffect.kt
+++ b/packages/SystemUI/compose/core/src/com/android/compose/gesture/effect/ContentOverscrollEffect.kt
@@ -18,6 +18,8 @@ package com.android.compose.gesture.effect
import androidx.compose.animation.core.Animatable
import androidx.compose.animation.core.AnimationSpec
+import androidx.compose.animation.core.SpringSpec
+import androidx.compose.animation.core.spring
import androidx.compose.foundation.OverscrollEffect
import androidx.compose.foundation.gestures.Orientation
import androidx.compose.ui.geometry.Offset
@@ -46,7 +48,7 @@ open class BaseContentOverscrollEffect(
private val animationSpec: AnimationSpec<Float>,
) : ContentOverscrollEffect {
/** The [Animatable] that holds the current overscroll value. */
- private val animatable = Animatable(initialValue = 0f, visibilityThreshold = 0.5f)
+ private val animatable = Animatable(initialValue = 0f)
private var lastConverter: SpaceVectorConverter? = null
override val overscrollDistance: Float
@@ -131,11 +133,29 @@ open class BaseContentOverscrollEffect(
launch {
val consumed = performFling(velocity)
val remaining = velocity - consumed
- animatable.animateTo(0f, animationSpec, remaining.toFloat())
+ animatable.animateTo(
+ 0f,
+ animationSpec.withVisibilityThreshold(1f),
+ remaining.toFloat(),
+ )
}
}
}
+ private fun <T> AnimationSpec<T>.withVisibilityThreshold(
+ visibilityThreshold: T
+ ): AnimationSpec<T> {
+ return when (this) {
+ is SpringSpec ->
+ spring(
+ stiffness = stiffness,
+ dampingRatio = dampingRatio,
+ visibilityThreshold = visibilityThreshold,
+ )
+ else -> this
+ }
+ }
+
protected fun requireConverter(): SpaceVectorConverter {
return checkNotNull(lastConverter) {
"lastConverter is null, make sure to call requireConverter() only when " +
diff --git a/packages/SystemUI/compose/core/src/com/android/compose/modifiers/MeasureTracing.kt b/packages/SystemUI/compose/core/src/com/android/compose/modifiers/MeasureTracing.kt
deleted file mode 100644
index 9ce6cd11a2b0..000000000000
--- a/packages/SystemUI/compose/core/src/com/android/compose/modifiers/MeasureTracing.kt
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.compose.modifiers
-
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.layout.layout
-import androidx.compose.ui.unit.IntOffset
-import com.android.app.tracing.traceSection
-
-/** Adds perfetto markers for the measure + layout stages. */
-inline fun Modifier.measureTracer(crossinline traceNameProducer: () -> String): Modifier {
- return layout { measurable, constraints ->
- traceSection(traceNameProducer) {
- val placeable = measurable.measure(constraints)
- layout(placeable.width, placeable.height) { placeable.placeRelative(IntOffset.Zero) }
- }
- }
-}
diff --git a/packages/SystemUI/compose/core/tests/src/com/android/compose/gesture/NestedDraggableTest.kt b/packages/SystemUI/compose/core/tests/src/com/android/compose/gesture/NestedDraggableTest.kt
index 19d28cc2d626..d8e46ad34c37 100644
--- a/packages/SystemUI/compose/core/tests/src/com/android/compose/gesture/NestedDraggableTest.kt
+++ b/packages/SystemUI/compose/core/tests/src/com/android/compose/gesture/NestedDraggableTest.kt
@@ -173,6 +173,27 @@ class NestedDraggableTest(override val orientation: Orientation) : OrientationAw
}
@Test
+ fun nestedScrollable_disabled() {
+ val draggable = TestDraggable()
+ val effect = TestOverscrollEffect(orientation) { 0f }
+ val touchSlop =
+ rule.setContentWithTouchSlop {
+ Box(
+ Modifier.fillMaxSize()
+ .nestedDraggable(draggable, orientation, effect, nestedDragsEnabled = false)
+ .nestedScrollable(rememberScrollState())
+ )
+ }
+
+ rule.onRoot().performTouchInput {
+ down(center)
+ moveBy((-touchSlop - 10f).toOffset())
+ }
+
+ assertThat(draggable.onDragStartedCalled).isFalse()
+ }
+
+ @Test
fun onDragStoppedIsCalledWhenDraggableIsUpdatedAndReset() {
val draggable = TestDraggable()
val effect = TestOverscrollEffect(orientation) { 0f }
diff --git a/packages/SystemUI/compose/facade/enabled/src/com/android/systemui/scene/LockscreenSceneModule.kt b/packages/SystemUI/compose/facade/enabled/src/com/android/systemui/scene/LockscreenSceneModule.kt
index f490968b7a7c..8af131d975f1 100644
--- a/packages/SystemUI/compose/facade/enabled/src/com/android/systemui/scene/LockscreenSceneModule.kt
+++ b/packages/SystemUI/compose/facade/enabled/src/com/android/systemui/scene/LockscreenSceneModule.kt
@@ -17,6 +17,7 @@
package com.android.systemui.scene
import android.view.View
+import com.android.internal.jank.InteractionJankMonitor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.KeyguardViewConfigurator
import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor
@@ -62,12 +63,14 @@ interface LockscreenSceneModule {
notificationScrimViewModelFactory: NotificationLockscreenScrimViewModel.Factory,
blueprints: Set<@JvmSuppressWildcards ComposableLockscreenSceneBlueprint>,
clockInteractor: KeyguardClockInteractor,
+ interactionJankMonitor: InteractionJankMonitor,
): LockscreenContent {
return LockscreenContent(
viewModelFactory,
notificationScrimViewModelFactory,
blueprints,
clockInteractor,
+ interactionJankMonitor,
)
}
}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/common/ui/compose/ContentDescription.kt b/packages/SystemUI/compose/features/src/com/android/systemui/common/ui/compose/ContentDescription.kt
index 4a5ad6554dc6..b254963cc5e9 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/common/ui/compose/ContentDescription.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/common/ui/compose/ContentDescription.kt
@@ -17,11 +17,13 @@
package com.android.systemui.common.ui.compose
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.ReadOnlyComposable
import androidx.compose.ui.res.stringResource
import com.android.systemui.common.shared.model.ContentDescription
/** Returns the loaded [String] or `null` if there isn't one. */
@Composable
+@ReadOnlyComposable
fun ContentDescription.load(): String? {
return when (this) {
is ContentDescription.Loaded -> description
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/common/ui/compose/Icon.kt b/packages/SystemUI/compose/features/src/com/android/systemui/common/ui/compose/Icon.kt
index 82d14369f239..8b0c00535262 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/common/ui/compose/Icon.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/common/ui/compose/Icon.kt
@@ -21,9 +21,8 @@ import androidx.compose.material3.LocalContentColor
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.asImageBitmap
import androidx.compose.ui.res.painterResource
-import androidx.core.graphics.drawable.toBitmap
+import com.android.compose.ui.graphics.painter.rememberDrawablePainter
import com.android.systemui.common.shared.model.Icon
/**
@@ -36,7 +35,7 @@ fun Icon(icon: Icon, modifier: Modifier = Modifier, tint: Color = LocalContentCo
val contentDescription = icon.contentDescription?.load()
when (icon) {
is Icon.Loaded -> {
- Icon(icon.drawable.toBitmap().asImageBitmap(), contentDescription, modifier, tint)
+ Icon(rememberDrawablePainter(icon.drawable), contentDescription, modifier, tint)
}
is Icon.Resource -> Icon(painterResource(icon.res), contentDescription, modifier, tint)
}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/common/ui/compose/TextExt.kt b/packages/SystemUI/compose/features/src/com/android/systemui/common/ui/compose/TextExt.kt
index 4e8121f14e4b..19adba0f39de 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/common/ui/compose/TextExt.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/common/ui/compose/TextExt.kt
@@ -19,6 +19,7 @@ package com.android.systemui.common.ui.compose
import android.content.Context
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.ReadOnlyComposable
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString
import com.android.systemui.common.shared.model.Text
@@ -26,6 +27,7 @@ import com.android.systemui.common.shared.model.Text.Companion.loadText
/** Returns the loaded [String] or `null` if there isn't one. */
@Composable
+@ReadOnlyComposable
fun Text.load(): String? {
return when (this) {
is Text.Loaded -> text
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContainer.kt b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContainer.kt
index 3ffbabb09710..4a4607b6e8fc 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContainer.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContainer.kt
@@ -159,8 +159,7 @@ fun CommunalContainer(
content: CommunalContent,
) {
val coroutineScope = rememberCoroutineScope()
- val currentSceneKey: SceneKey by
- viewModel.currentScene.collectAsStateWithLifecycle(CommunalScenes.Blank)
+ val currentSceneKey: SceneKey by viewModel.currentScene.collectAsStateWithLifecycle()
val touchesAllowed by viewModel.touchesAllowed.collectAsStateWithLifecycle()
val backgroundType by
viewModel.communalBackground.collectAsStateWithLifecycle(
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContent.kt b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContent.kt
index 31aebc28d072..2c6d09a4593a 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContent.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContent.kt
@@ -19,13 +19,11 @@ package com.android.systemui.communal.ui.compose
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.Layout
import androidx.compose.ui.layout.Measurable
-import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.Constraints
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.IntRect
@@ -35,6 +33,7 @@ import com.android.compose.animation.scene.ContentScope
import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor
import com.android.systemui.communal.smartspace.SmartspaceInteractionHandler
import com.android.systemui.communal.ui.compose.section.AmbientStatusBarSection
+import com.android.systemui.communal.ui.compose.section.CommunalLockSection
import com.android.systemui.communal.ui.compose.section.CommunalPopupSection
import com.android.systemui.communal.ui.compose.section.CommunalToDreamButtonSection
import com.android.systemui.communal.ui.compose.section.HubOnboardingSection
@@ -43,7 +42,6 @@ import com.android.systemui.communal.ui.viewmodel.CommunalViewModel
import com.android.systemui.keyguard.ui.composable.blueprint.BlueprintAlignmentLines
import com.android.systemui.keyguard.ui.composable.section.BottomAreaSection
import com.android.systemui.keyguard.ui.composable.section.LockSection
-import com.android.systemui.res.R
import com.android.systemui.statusbar.phone.SystemUIDialogFactory
import javax.inject.Inject
import kotlin.math.min
@@ -58,6 +56,7 @@ constructor(
private val communalSettingsInteractor: CommunalSettingsInteractor,
private val dialogFactory: SystemUIDialogFactory,
private val lockSection: LockSection,
+ private val communalLockSection: CommunalLockSection,
private val bottomAreaSection: BottomAreaSection,
private val ambientStatusBarSection: AmbientStatusBarSection,
private val communalPopupSection: CommunalPopupSection,
@@ -88,12 +87,9 @@ constructor(
with(hubOnboardingSection) { BottomSheet() }
}
if (communalSettingsInteractor.isV2FlagEnabled()) {
- Icon(
- painter = painterResource(id = R.drawable.ic_lock),
- contentDescription = null,
- tint = MaterialTheme.colorScheme.onPrimaryContainer,
- modifier = Modifier.element(Communal.Elements.LockIcon),
- )
+ with(communalLockSection) {
+ LockIcon(modifier = Modifier.element(Communal.Elements.LockIcon))
+ }
} else {
with(lockSection) {
LockIcon(
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/ResponsiveLazyHorizontalGrid.kt b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/ResponsiveLazyHorizontalGrid.kt
index 44c375d6ac5e..62aa31b49870 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/ResponsiveLazyHorizontalGrid.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/ResponsiveLazyHorizontalGrid.kt
@@ -48,6 +48,9 @@ import androidx.compose.ui.unit.coerceAtMost
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.times
import androidx.window.layout.WindowMetricsCalculator
+import com.android.systemui.communal.util.WindowSizeUtils.COMPACT_HEIGHT
+import com.android.systemui.communal.util.WindowSizeUtils.COMPACT_WIDTH
+import com.android.systemui.communal.util.WindowSizeUtils.MEDIUM_WIDTH
/**
* Renders a responsive [LazyHorizontalGrid] with dynamic columns and rows. Each cell will maintain
@@ -266,14 +269,14 @@ fun calculateWindowSize(): DpSize {
private fun calculateNumCellsWidth(width: Dp) =
// See https://developer.android.com/develop/ui/views/layout/use-window-size-classes
when {
- width >= 840.dp -> 3
- width >= 600.dp -> 2
+ width >= MEDIUM_WIDTH -> 3
+ width >= COMPACT_WIDTH -> 2
else -> 1
}
private fun calculateNumCellsHeight(height: Dp) =
when {
height >= 1000.dp -> 3
- height >= 480.dp -> 2
+ height >= COMPACT_HEIGHT -> 2
else -> 1
}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/section/CommunalLockSection.kt b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/section/CommunalLockSection.kt
new file mode 100644
index 000000000000..8c681e2a9ba8
--- /dev/null
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/section/CommunalLockSection.kt
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.communal.ui.compose.section
+
+import android.content.Context
+import android.util.DisplayMetrics
+import android.view.WindowManager
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.layout.layout
+import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.unit.Constraints
+import androidx.compose.ui.unit.IntOffset
+import androidx.compose.ui.unit.IntRect
+import androidx.compose.ui.viewinterop.AndroidView
+import com.android.compose.animation.scene.ContentScope
+import com.android.compose.animation.scene.ElementKey
+import com.android.systemui.biometrics.AuthController
+import com.android.systemui.communal.ui.binder.CommunalLockIconViewBinder
+import com.android.systemui.communal.ui.viewmodel.CommunalLockIconViewModel
+import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.flags.FeatureFlagsClassic
+import com.android.systemui.flags.Flags
+import com.android.systemui.keyguard.ui.composable.blueprint.BlueprintAlignmentLines
+import com.android.systemui.keyguard.ui.view.DeviceEntryIconView
+import com.android.systemui.log.LogBuffer
+import com.android.systemui.log.TouchHandlingViewLogger
+import com.android.systemui.log.dagger.LongPressTouchLog
+import com.android.systemui.plugins.FalsingManager
+import com.android.systemui.res.R
+import com.android.systemui.statusbar.VibratorHelper
+import dagger.Lazy
+import javax.inject.Inject
+import kotlinx.coroutines.CoroutineScope
+
+class CommunalLockSection
+@Inject
+constructor(
+ @Application private val applicationScope: CoroutineScope,
+ private val windowManager: WindowManager,
+ private val authController: AuthController,
+ private val viewModel: Lazy<CommunalLockIconViewModel>,
+ private val falsingManager: Lazy<FalsingManager>,
+ private val vibratorHelper: Lazy<VibratorHelper>,
+ private val featureFlags: FeatureFlagsClassic,
+ @LongPressTouchLog private val logBuffer: LogBuffer,
+) {
+ @Composable
+ fun ContentScope.LockIcon(modifier: Modifier = Modifier) {
+ val context = LocalContext.current
+
+ AndroidView(
+ factory = { context ->
+ DeviceEntryIconView(
+ context,
+ null,
+ logger = TouchHandlingViewLogger(logBuffer, tag = TAG),
+ )
+ .apply {
+ id = R.id.device_entry_icon_view
+ CommunalLockIconViewBinder.bind(
+ applicationScope,
+ this,
+ viewModel.get(),
+ falsingManager.get(),
+ vibratorHelper.get(),
+ )
+ }
+ },
+ modifier =
+ modifier.element(LockIconElementKey).layout { measurable, _ ->
+ val lockIconBounds = lockIconBounds(context)
+ val placeable =
+ measurable.measure(
+ Constraints.fixed(
+ width = lockIconBounds.width,
+ height = lockIconBounds.height,
+ )
+ )
+ layout(
+ width = placeable.width,
+ height = placeable.height,
+ alignmentLines =
+ mapOf(
+ BlueprintAlignmentLines.LockIcon.Left to lockIconBounds.left,
+ BlueprintAlignmentLines.LockIcon.Top to lockIconBounds.top,
+ BlueprintAlignmentLines.LockIcon.Right to lockIconBounds.right,
+ BlueprintAlignmentLines.LockIcon.Bottom to lockIconBounds.bottom,
+ ),
+ ) {
+ placeable.place(0, 0)
+ }
+ },
+ )
+ }
+
+ /** Returns the bounds of the lock icon, in window view coordinates. */
+ private fun lockIconBounds(context: Context): IntRect {
+ val windowViewBounds = windowManager.currentWindowMetrics.bounds
+ var widthPx = windowViewBounds.right.toFloat()
+ if (featureFlags.isEnabled(Flags.LOCKSCREEN_ENABLE_LANDSCAPE)) {
+ val insets = windowManager.currentWindowMetrics.windowInsets
+ // Assumed to be initially neglected as there are no left or right insets in portrait.
+ // However, on landscape, these insets need to included when calculating the midpoint.
+ @Suppress("DEPRECATION")
+ widthPx -= (insets.systemWindowInsetLeft + insets.systemWindowInsetRight).toFloat()
+ }
+ val defaultDensity =
+ DisplayMetrics.DENSITY_DEVICE_STABLE.toFloat() /
+ DisplayMetrics.DENSITY_DEFAULT.toFloat()
+ val lockIconRadiusPx = (defaultDensity * 36).toInt()
+
+ val scaleFactor = authController.scaleFactor
+ val bottomPaddingPx =
+ context.resources.getDimensionPixelSize(
+ com.android.systemui.customization.R.dimen.lock_icon_margin_bottom
+ )
+ val heightPx = windowViewBounds.bottom.toFloat()
+ val (center, radius) =
+ Pair(
+ IntOffset(
+ x = (widthPx / 2).toInt(),
+ y = (heightPx - ((bottomPaddingPx + lockIconRadiusPx) * scaleFactor)).toInt(),
+ ),
+ (lockIconRadiusPx * scaleFactor).toInt(),
+ )
+
+ return IntRect(center, radius)
+ }
+
+ companion object {
+ private const val TAG = "CommunalLockSection"
+ }
+}
+
+private val LockIconElementKey = ElementKey("CommunalLockIcon")
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/section/CommunalToDreamButtonSection.kt b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/section/CommunalToDreamButtonSection.kt
index 13d551aef4c2..a840a6f0476f 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/section/CommunalToDreamButtonSection.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/section/CommunalToDreamButtonSection.kt
@@ -39,6 +39,7 @@ import androidx.compose.ui.graphics.Outline
import androidx.compose.ui.graphics.Path
import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.input.pointer.pointerInput
+import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.Density
import androidx.compose.ui.unit.Dp
@@ -71,6 +72,8 @@ constructor(
return
}
+ val buttonSize = dimensionResource(R.dimen.communal_to_dream_button_size)
+
if (viewModel.shouldShowTooltip) {
Column(
modifier =
@@ -96,7 +99,6 @@ constructor(
}
companion object {
- private val buttonSize = 64.dp
private val tooltipMaxWidth = 350.dp
}
}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/section/HubOnboardingSection.kt b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/section/HubOnboardingSection.kt
index 6943e9b00ed8..6989dcbaa0d5 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/section/HubOnboardingSection.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/section/HubOnboardingSection.kt
@@ -34,6 +34,7 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
+import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
@@ -52,6 +53,8 @@ import com.android.systemui.statusbar.phone.ComponentSystemUIDialog
import com.android.systemui.statusbar.phone.SystemUIDialogFactory
import com.android.systemui.statusbar.phone.createBottomSheet
import javax.inject.Inject
+import kotlin.time.Duration.Companion.milliseconds
+import kotlinx.coroutines.delay
class HubOnboardingSection
@Inject
@@ -69,10 +72,23 @@ constructor(
return
}
- HubOnboardingBottomSheet(shouldShowBottomSheet = true, dialogFactory = dialogFactory) {
- viewModel.onDismissed()
+ var show by remember { mutableStateOf(false) }
+
+ LaunchedEffect(Unit) {
+ delay(SHOW_BOTTOMSHEET_DELAY_MS)
+ show = true
+ }
+
+ if (show) {
+ HubOnboardingBottomSheet(shouldShowBottomSheet = true, dialogFactory = dialogFactory) {
+ viewModel.onDismissed()
+ }
}
}
+
+ companion object {
+ val SHOW_BOTTOMSHEET_DELAY_MS = 1000.milliseconds
+ }
}
@Composable
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/AlternateBouncer.kt b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/AlternateBouncer.kt
index 500527f4a508..69ac69d8a551 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/AlternateBouncer.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/AlternateBouncer.kt
@@ -55,7 +55,7 @@ import com.android.systemui.keyguard.ui.view.DeviceEntryIconView
import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerDependencies
import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerMessageAreaViewModel
import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerUdfpsIconViewModel
-import com.android.systemui.log.LongPressHandlingViewLogger
+import com.android.systemui.log.TouchHandlingViewLogger
import com.android.systemui.res.R
@Composable
@@ -156,7 +156,7 @@ private fun StatusMessage(
@Composable
private fun DeviceEntryIcon(
viewModel: AlternateBouncerUdfpsIconViewModel,
- logger: LongPressHandlingViewLogger,
+ logger: TouchHandlingViewLogger,
modifier: Modifier = Modifier,
) {
AndroidView(
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/LockscreenContent.kt b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/LockscreenContent.kt
index 7b2f9dc76158..ba85f9570d09 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/LockscreenContent.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/LockscreenContent.kt
@@ -16,6 +16,7 @@
package com.android.systemui.keyguard.ui.composable
+import android.view.View
import androidx.compose.foundation.layout.Box
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
@@ -25,8 +26,13 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalView
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.compose.animation.scene.ContentScope
+import com.android.internal.jank.Cuj
+import com.android.internal.jank.Cuj.CujType
+import com.android.internal.jank.InteractionJankMonitor
import com.android.systemui.compose.modifiers.sysuiResTag
import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor
+import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.keyguard.shared.transition.KeyguardTransitionAnimationCallback
import com.android.systemui.keyguard.ui.composable.blueprint.ComposableLockscreenSceneBlueprint
import com.android.systemui.keyguard.ui.viewmodel.LockscreenContentViewModel
import com.android.systemui.lifecycle.rememberViewModel
@@ -44,6 +50,7 @@ class LockscreenContent(
private val notificationScrimViewModelFactory: NotificationLockscreenScrimViewModel.Factory,
private val blueprints: Set<@JvmSuppressWildcards ComposableLockscreenSceneBlueprint>,
private val clockInteractor: KeyguardClockInteractor,
+ private val interactionJankMonitor: InteractionJankMonitor,
) {
private val blueprintByBlueprintId: Map<String, ComposableLockscreenSceneBlueprint> by lazy {
blueprints.associateBy { it.id }
@@ -51,8 +58,14 @@ class LockscreenContent(
@Composable
fun ContentScope.Content(modifier: Modifier = Modifier) {
+ val view = LocalView.current
val viewModel =
- rememberViewModel("LockscreenContent-viewModel") { viewModelFactory.create() }
+ rememberViewModel("LockscreenContent-viewModel") {
+ viewModelFactory.create(
+ keyguardTransitionAnimationCallback =
+ KeyguardTransitionAnimationCallbackImpl(view, interactionJankMonitor)
+ )
+ }
val notificationLockscreenScrimViewModel =
rememberViewModel("LockscreenContent-scrimViewModel") {
notificationScrimViewModelFactory.create()
@@ -69,7 +82,6 @@ class LockscreenContent(
val coroutineScope = rememberCoroutineScope()
val blueprintId by viewModel.blueprintId(coroutineScope).collectAsStateWithLifecycle()
- val view = LocalView.current
DisposableEffect(view) {
clockInteractor.clockEventController.registerListeners(view)
@@ -83,3 +95,30 @@ class LockscreenContent(
}
}
}
+
+private class KeyguardTransitionAnimationCallbackImpl(
+ private val view: View,
+ private val interactionJankMonitor: InteractionJankMonitor,
+) : KeyguardTransitionAnimationCallback {
+
+ override fun onAnimationStarted(from: KeyguardState, to: KeyguardState) {
+ cujOrNull(from, to)?.let { cuj -> interactionJankMonitor.begin(view, cuj) }
+ }
+
+ override fun onAnimationEnded(from: KeyguardState, to: KeyguardState) {
+ cujOrNull(from, to)?.let { cuj -> interactionJankMonitor.end(cuj) }
+ }
+
+ override fun onAnimationCanceled(from: KeyguardState, to: KeyguardState) {
+ cujOrNull(from, to)?.let { cuj -> interactionJankMonitor.cancel(cuj) }
+ }
+
+ @CujType
+ private fun cujOrNull(from: KeyguardState, to: KeyguardState): Int? {
+ return when {
+ from == KeyguardState.AOD -> Cuj.CUJ_LOCKSCREEN_TRANSITION_FROM_AOD
+ to == KeyguardState.AOD -> Cuj.CUJ_LOCKSCREEN_TRANSITION_TO_AOD
+ else -> null
+ }
+ }
+}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/DefaultBlueprint.kt b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/DefaultBlueprint.kt
index d3417022565b..6e25c8a5bc42 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/DefaultBlueprint.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/DefaultBlueprint.kt
@@ -109,19 +109,30 @@ constructor(
}
if (isShadeLayoutWide && !isBypassEnabled) {
with(notificationSection) {
- Notifications(
- areNotificationsVisible = areNotificationsVisible,
- isShadeLayoutWide = true,
- burnInParams = null,
- modifier =
- Modifier.fillMaxWidth(0.5f)
- .fillMaxHeight()
- .align(alignment = Alignment.TopEnd),
- )
+ Box(modifier = Modifier.fillMaxHeight()) {
+ AodPromotedNotificationArea(
+ modifier =
+ Modifier.fillMaxWidth(0.5f)
+ .align(alignment = Alignment.TopEnd)
+ )
+ Notifications(
+ areNotificationsVisible = areNotificationsVisible,
+ isShadeLayoutWide = true,
+ burnInParams = null,
+ modifier =
+ Modifier.fillMaxWidth(0.5f)
+ .fillMaxHeight()
+ .align(alignment = Alignment.TopEnd),
+ )
+ }
}
}
}
+ // Not a mistake; reusing below_clock_padding_start_icons as AOD RON top
+ // padding for now.
+ val aodPromotedNotifTopPadding: Dp =
+ dimensionResource(R.dimen.below_clock_padding_start_icons)
val aodIconPadding: Dp =
dimensionResource(R.dimen.below_clock_padding_start_icons)
@@ -129,7 +140,10 @@ constructor(
if (!isShadeLayoutWide && !isBypassEnabled) {
Box(modifier = Modifier.weight(weight = 1f)) {
Column(Modifier.align(alignment = Alignment.TopStart)) {
- AodPromotedNotificationArea()
+ AodPromotedNotificationArea(
+ modifier =
+ Modifier.padding(top = aodPromotedNotifTopPadding)
+ )
AodNotificationIcons(
modifier = Modifier.padding(start = aodIconPadding)
)
@@ -142,9 +156,21 @@ constructor(
}
} else {
Column {
- AodPromotedNotificationArea()
+ if (!isShadeLayoutWide) {
+ AodPromotedNotificationArea(
+ modifier =
+ Modifier.padding(top = aodPromotedNotifTopPadding)
+ )
+ }
AodNotificationIcons(
- modifier = Modifier.padding(start = aodIconPadding)
+ modifier =
+ Modifier.padding(
+ top =
+ dimensionResource(
+ R.dimen.keyguard_status_view_bottom_margin
+ ),
+ start = aodIconPadding,
+ )
)
}
}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/DefaultClockSection.kt b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/DefaultClockSection.kt
index 34c0bcaca997..ae541dda6eeb 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/DefaultClockSection.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/DefaultClockSection.kt
@@ -26,8 +26,8 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
+import androidx.compose.runtime.key
import androidx.compose.ui.Modifier
-import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.viewinterop.AndroidView
import androidx.core.view.contains
@@ -46,6 +46,28 @@ import com.android.systemui.keyguard.ui.viewmodel.BurnInParameters
import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel
import javax.inject.Inject
+@Composable
+fun ClockView(view: View?, modifier: Modifier = Modifier) {
+ AndroidView(
+ factory = {
+ FrameLayout(it).apply {
+ // Clip nothing. The clock views at times render outside their bounds. Compose does
+ // not clip by default, so only this layer needs clipping to be explicitly disabled.
+ clipChildren = false
+ clipToPadding = false
+ }
+ },
+ update = { parent ->
+ view?.let {
+ parent.removeAllViews()
+ (view.parent as? ViewGroup)?.removeView(view)
+ parent.addView(view)
+ } ?: run { parent.removeAllViews() }
+ },
+ modifier = modifier,
+ )
+}
+
/** Provides small clock and large clock composables for the default clock face. */
class DefaultClockSection
@Inject
@@ -67,14 +89,9 @@ constructor(
if (currentClock?.smallClock?.view == null) {
return
}
- val context = LocalContext.current
- AndroidView(
- factory = { context ->
- FrameLayout(context).apply {
- ensureClockViewExists(checkNotNull(currentClock).smallClock.view)
- }
- },
- update = { it.ensureClockViewExists(checkNotNull(currentClock).smallClock.view) },
+
+ ClockView(
+ checkNotNull(currentClock).smallClock.view,
modifier =
modifier
.height(dimensionResource(R.dimen.small_clock_height))
@@ -116,25 +133,8 @@ constructor(
Element(key = largeClockElementKey, modifier = modifier) {
content {
- AndroidView(
- factory = { context ->
- FrameLayout(context).apply {
- // By default, ViewGroups like FrameLayout clip their children. Turning
- // off the clipping allows the child view to render outside of its
- // bounds - letting the step animation of the clock push the digits out
- // when needed.
- //
- // Note that, in Compose, clipping is actually disabled by default so
- // there's no need to propagate this up the composable hierarchy.
- clipChildren = false
- clipToPadding = false
-
- ensureClockViewExists(checkNotNull(currentClock).largeClock.view)
- }
- },
- update = {
- it.ensureClockViewExists(checkNotNull(currentClock).largeClock.view)
- },
+ ClockView(
+ checkNotNull(currentClock).largeClock.view,
modifier =
Modifier.fillMaxSize()
.burnInAware(
@@ -147,15 +147,6 @@ constructor(
}
}
- private fun FrameLayout.ensureClockViewExists(clockView: View) {
- if (contains(clockView)) {
- return
- }
- removeAllViews()
- (clockView.parent as? ViewGroup)?.removeView(clockView)
- addView(clockView)
- }
-
fun getClockCenteringDistance(): Float {
return Resources.getSystem().displayMetrics.widthPixels / 4f
}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/LockSection.kt b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/LockSection.kt
index 4795e7cef87c..0db2bb51c971 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/LockSection.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/LockSection.kt
@@ -42,7 +42,7 @@ import com.android.systemui.keyguard.ui.viewmodel.DeviceEntryBackgroundViewModel
import com.android.systemui.keyguard.ui.viewmodel.DeviceEntryForegroundViewModel
import com.android.systemui.keyguard.ui.viewmodel.DeviceEntryIconViewModel
import com.android.systemui.log.LogBuffer
-import com.android.systemui.log.LongPressHandlingViewLogger
+import com.android.systemui.log.TouchHandlingViewLogger
import com.android.systemui.log.dagger.LongPressTouchLog
import com.android.systemui.plugins.FalsingManager
import com.android.systemui.res.R
@@ -74,7 +74,7 @@ constructor(
DeviceEntryIconView(
context,
null,
- logger = LongPressHandlingViewLogger(logBuffer, tag = TAG),
+ logger = TouchHandlingViewLogger(logBuffer, tag = TAG),
)
.apply {
id = R.id.device_entry_icon_view
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/WeatherClockSection.kt b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/WeatherClockSection.kt
index 6250da379402..4fcb5ca42df2 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/WeatherClockSection.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/WeatherClockSection.kt
@@ -16,8 +16,6 @@
package com.android.systemui.keyguard.ui.composable.section
-import android.view.View
-import android.view.ViewGroup
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.IntrinsicSize
import androidx.compose.foundation.layout.Row
@@ -26,10 +24,10 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.key
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.dimensionResource
-import androidx.compose.ui.viewinterop.AndroidView
import com.android.compose.animation.scene.ContentScope
import com.android.compose.animation.scene.ElementKey
import com.android.systemui.customization.R as customR
@@ -112,21 +110,11 @@ constructor(
) {
Element(key = elementKey, modifier) {
content {
- AndroidView(
- factory = {
- try {
- val view =
- clock.largeClock.layout.views.first {
- it.id == weatherClockElementViewId
- }
- (view.parent as? ViewGroup)?.removeView(view)
- view
- } catch (e: NoSuchElementException) {
- View(it)
- }
+ ClockView(
+ clock.largeClock.layout.views.firstOrNull {
+ it.id == weatherClockElementViewId
},
- update = {},
- modifier = modifier,
+ modifier,
)
}
}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt b/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt
index a6918a7c5ffe..d7d4e1714aa6 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt
@@ -91,6 +91,7 @@ import com.android.compose.animation.scene.ElementKey
import com.android.compose.animation.scene.LowestZIndexContentPicker
import com.android.compose.animation.scene.SceneTransitionLayoutState
import com.android.compose.animation.scene.content.state.TransitionState
+import com.android.compose.gesture.NestedScrollableBound
import com.android.compose.modifiers.thenIf
import com.android.systemui.common.ui.compose.windowinsets.LocalScreenCornerRadius
import com.android.systemui.res.R
@@ -579,6 +580,7 @@ fun ContentScope.NotificationScrollingStack(
Modifier.nestedScroll(scrimNestedScrollConnection)
}
.stackVerticalOverscroll(coroutineScope) { scrollState.canScrollForward }
+ .disableSwipesWhenScrolling(NestedScrollableBound.BottomRight)
.verticalScroll(scrollState)
.padding(top = stackTopPadding, bottom = stackBottomPadding)
.fillMaxWidth()
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationsShadeOverlay.kt b/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationsShadeOverlay.kt
index 931134795a53..7c50d6f8af12 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationsShadeOverlay.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationsShadeOverlay.kt
@@ -29,7 +29,6 @@ import com.android.compose.animation.scene.ContentScope
import com.android.compose.animation.scene.ElementKey
import com.android.compose.animation.scene.UserAction
import com.android.compose.animation.scene.UserActionResult
-import com.android.systemui.battery.BatteryMeterViewController
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor
import com.android.systemui.keyguard.ui.composable.blueprint.rememberBurnIn
@@ -44,10 +43,7 @@ import com.android.systemui.scene.ui.composable.Overlay
import com.android.systemui.shade.ui.composable.OverlayShade
import com.android.systemui.shade.ui.composable.OverlayShadeHeader
import com.android.systemui.shade.ui.composable.SingleShadeMeasurePolicy
-import com.android.systemui.statusbar.notification.icon.ui.viewbinder.NotificationIconContainerStatusBarViewBinder
import com.android.systemui.statusbar.notification.stack.ui.view.NotificationScrollView
-import com.android.systemui.statusbar.phone.ui.StatusBarIconController
-import com.android.systemui.statusbar.phone.ui.TintedIconManager
import dagger.Lazy
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
@@ -58,11 +54,6 @@ class NotificationsShadeOverlay
constructor(
private val actionsViewModelFactory: NotificationsShadeOverlayActionsViewModel.Factory,
private val contentViewModelFactory: NotificationsShadeOverlayContentViewModel.Factory,
- private val tintedIconManagerFactory: TintedIconManager.Factory,
- private val batteryMeterViewControllerFactory: BatteryMeterViewController.Factory,
- private val statusBarIconController: StatusBarIconController,
- private val notificationIconContainerStatusBarViewBinder:
- NotificationIconContainerStatusBarViewBinder,
private val shadeSession: SaveableSession,
private val stackScrollView: Lazy<NotificationScrollView>,
private val clockSection: DefaultClockSection,
@@ -94,18 +85,17 @@ constructor(
}
OverlayShade(
- isShadeLayoutWide = viewModel.isShadeLayoutWide,
+ panelElement = NotificationsShade.Elements.Panel,
panelAlignment = Alignment.TopStart,
modifier = modifier,
onScrimClicked = viewModel::onScrimClicked,
header = {
+ val headerViewModel =
+ rememberViewModel("NotificationsShadeOverlayHeader") {
+ viewModel.shadeHeaderViewModelFactory.create()
+ }
OverlayShadeHeader(
- viewModelFactory = viewModel.shadeHeaderViewModelFactory,
- createTintedIconManager = tintedIconManagerFactory::create,
- createBatteryMeterViewController = batteryMeterViewControllerFactory::create,
- statusBarIconController = statusBarIconController,
- notificationIconContainerStatusBarViewBinder =
- notificationIconContainerStatusBarViewBinder,
+ viewModel = headerViewModel,
modifier =
Modifier.element(NotificationsShade.Elements.StatusBar)
.layoutId(SingleShadeMeasurePolicy.LayoutId.ShadeHeader),
@@ -114,7 +104,7 @@ constructor(
) {
Box {
Column {
- if (viewModel.showHeader) {
+ if (viewModel.showClock) {
val burnIn = rememberBurnIn(clockInteractor)
with(clockSection) {
@@ -140,8 +130,7 @@ constructor(
modifier = Modifier.fillMaxWidth(),
)
}
- // Communicates the bottom position of the drawable area within the shade to
- // NSSL.
+ // Communicates the bottom position of the drawable area within the shade to NSSL.
NotificationStackCutoffGuideline(
stackScrollView = stackScrollView.get(),
viewModel = placeholderViewModel,
@@ -156,6 +145,7 @@ constructor(
object NotificationsShade {
object Elements {
- val StatusBar = ElementKey("NotificationsShadeStatusBar")
+ val Panel = ElementKey("NotificationsShadeOverlayPanel")
+ val StatusBar = ElementKey("NotificationsShadeOverlayStatusBar")
}
}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt
index 4bfbb3a908fa..62a8cc5a7fe3 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt
@@ -16,7 +16,6 @@
package com.android.systemui.qs.ui.composable
-import android.view.ViewGroup
import androidx.activity.compose.BackHandler
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.core.animateDpAsState
@@ -76,7 +75,6 @@ import com.android.compose.animation.scene.animateSceneFloatAsState
import com.android.compose.animation.scene.content.state.TransitionState
import com.android.compose.modifiers.thenIf
import com.android.compose.windowsizeclass.LocalWindowSizeClass
-import com.android.systemui.battery.BatteryMeterViewController
import com.android.systemui.common.ui.compose.windowinsets.CutoutLocation
import com.android.systemui.common.ui.compose.windowinsets.LocalDisplayCutout
import com.android.systemui.compose.modifiers.sysuiResTag
@@ -100,15 +98,14 @@ import com.android.systemui.res.R
import com.android.systemui.scene.session.ui.composable.SaveableSession
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.ui.composable.Scene
+import com.android.systemui.settings.brightness.ui.viewModel.BrightnessMirrorViewModel
import com.android.systemui.shade.ui.composable.CollapsedShadeHeader
import com.android.systemui.shade.ui.composable.ExpandedShadeHeader
import com.android.systemui.shade.ui.composable.Shade
import com.android.systemui.shade.ui.composable.ShadeHeader
+import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel
import com.android.systemui.statusbar.notification.stack.ui.view.NotificationScrollView
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.NotificationsPlaceholderViewModel
-import com.android.systemui.statusbar.phone.StatusBarLocation
-import com.android.systemui.statusbar.phone.ui.StatusBarIconController
-import com.android.systemui.statusbar.phone.ui.TintedIconManager
import dagger.Lazy
import javax.inject.Inject
import javax.inject.Named
@@ -125,9 +122,6 @@ constructor(
private val notificationsPlaceholderViewModelFactory: NotificationsPlaceholderViewModel.Factory,
private val actionsViewModelFactory: QuickSettingsUserActionsViewModel.Factory,
private val contentViewModelFactory: QuickSettingsSceneContentViewModel.Factory,
- private val tintedIconManagerFactory: TintedIconManager.Factory,
- private val batteryMeterViewControllerFactory: BatteryMeterViewController.Factory,
- private val statusBarIconController: StatusBarIconController,
private val mediaCarouselController: MediaCarouselController,
@Named(MediaModule.QS_PANEL) private val mediaHost: MediaHost,
) : ExclusiveActivatable(), Scene {
@@ -145,16 +139,26 @@ constructor(
@Composable
override fun ContentScope.Content(modifier: Modifier) {
+ val viewModel =
+ rememberViewModel("QuickSettingsScene-viewModel") { contentViewModelFactory.create() }
+ val headerViewModel =
+ rememberViewModel("QuickSettingsScene-headerViewModel") {
+ viewModel.shadeHeaderViewModelFactory.create()
+ }
+ val brightnessMirrorViewModel =
+ rememberViewModel("QuickSettingsScene-brightnessMirrorViewModel") {
+ viewModel.brightnessMirrorViewModelFactory.create()
+ }
+ val notificationsPlaceholderViewModel =
+ rememberViewModel("QuickSettingsScene-notifPlaceholderViewModel") {
+ notificationsPlaceholderViewModelFactory.create()
+ }
QuickSettingsScene(
notificationStackScrollView = notificationStackScrollView.get(),
- viewModelFactory = contentViewModelFactory,
- notificationsPlaceholderViewModel =
- rememberViewModel("QuickSettingsScene-notifPlaceholderViewModel") {
- notificationsPlaceholderViewModelFactory.create()
- },
- createTintedIconManager = tintedIconManagerFactory::create,
- createBatteryMeterViewController = batteryMeterViewControllerFactory::create,
- statusBarIconController = statusBarIconController,
+ viewModel = viewModel,
+ headerViewModel = headerViewModel,
+ brightnessMirrorViewModel = brightnessMirrorViewModel,
+ notificationsPlaceholderViewModel = notificationsPlaceholderViewModel,
mediaCarouselController = mediaCarouselController,
mediaHost = mediaHost,
modifier = modifier,
@@ -166,23 +170,16 @@ constructor(
@Composable
private fun ContentScope.QuickSettingsScene(
notificationStackScrollView: NotificationScrollView,
- viewModelFactory: QuickSettingsSceneContentViewModel.Factory,
+ viewModel: QuickSettingsSceneContentViewModel,
+ headerViewModel: ShadeHeaderViewModel,
+ brightnessMirrorViewModel: BrightnessMirrorViewModel,
notificationsPlaceholderViewModel: NotificationsPlaceholderViewModel,
- createTintedIconManager: (ViewGroup, StatusBarLocation) -> TintedIconManager,
- createBatteryMeterViewController: (ViewGroup, StatusBarLocation) -> BatteryMeterViewController,
- statusBarIconController: StatusBarIconController,
mediaCarouselController: MediaCarouselController,
mediaHost: MediaHost,
modifier: Modifier = Modifier,
shadeSession: SaveableSession,
) {
val cutoutLocation = LocalDisplayCutout.current.location
-
- val viewModel = rememberViewModel("QuickSettingsScene-viewModel") { viewModelFactory.create() }
- val brightnessMirrorViewModel =
- rememberViewModel("QuickSettingsScene-brightnessMirrorViewModel") {
- viewModel.brightnessMirrorViewModelFactory.create()
- }
val brightnessMirrorShowing by brightnessMirrorViewModel.isShowing.collectAsStateWithLifecycle()
val contentAlpha by
animateFloatAsState(
@@ -222,8 +219,7 @@ private fun ContentScope.QuickSettingsScene(
.graphicsLayer { alpha = contentAlpha }
.thenIf(shouldPunchHoleBehindScrim) {
// Render the scene to an offscreen buffer so that BlendMode.DstOut only clears
- // this
- // scene (and not the one under it) during a scene transition.
+ // this scene (and not the one under it) during a scene transition.
Modifier.graphicsLayer(compositingStrategy = CompositingStrategy.Offscreen)
}
.thenIf(cutoutLocation != CutoutLocation.CENTER) { Modifier.displayCutoutPadding() }
@@ -348,21 +344,11 @@ private fun ContentScope.QuickSettingsScene(
fadeOut(tween(customizingAnimationDuration)),
) {
ExpandedShadeHeader(
- viewModelFactory = viewModel.shadeHeaderViewModelFactory,
- createTintedIconManager = createTintedIconManager,
- createBatteryMeterViewController =
- createBatteryMeterViewController,
- statusBarIconController = statusBarIconController,
+ viewModel = headerViewModel,
modifier = Modifier.padding(horizontal = 16.dp),
)
}
- else ->
- CollapsedShadeHeader(
- viewModelFactory = viewModel.shadeHeaderViewModelFactory,
- createTintedIconManager = createTintedIconManager,
- createBatteryMeterViewController = createBatteryMeterViewController,
- statusBarIconController = statusBarIconController,
- )
+ else -> CollapsedShadeHeader(viewModel = headerViewModel)
}
Spacer(modifier = Modifier.height(16.dp))
// This view has its own horizontal padding
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsShadeOverlay.kt b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsShadeOverlay.kt
index 3ec14a23421c..cc58b8e13744 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsShadeOverlay.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsShadeOverlay.kt
@@ -17,6 +17,7 @@
package com.android.systemui.qs.ui.composable
import androidx.compose.animation.AnimatedContent
+import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.animation.core.tween
import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut
@@ -35,7 +36,7 @@ import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.layout.boundsInWindow
import androidx.compose.ui.layout.layoutId
import androidx.compose.ui.layout.onPlaced
@@ -43,14 +44,13 @@ import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.compose.animation.scene.ContentScope
+import com.android.compose.animation.scene.ElementKey
import com.android.compose.animation.scene.UserAction
import com.android.compose.animation.scene.UserActionResult
-import com.android.systemui.battery.BatteryMeterViewController
import com.android.systemui.brightness.ui.compose.BrightnessSliderContainer
import com.android.systemui.compose.modifiers.sysuiResTag
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.lifecycle.rememberViewModel
-import com.android.systemui.notifications.ui.composable.NotificationsShade
import com.android.systemui.notifications.ui.composable.SnoozeableHeadsUpNotificationSpace
import com.android.systemui.qs.composefragment.ui.GridAnchor
import com.android.systemui.qs.flags.QsDetailedView
@@ -67,13 +67,10 @@ import com.android.systemui.shade.ui.composable.OverlayShade
import com.android.systemui.shade.ui.composable.OverlayShadeHeader
import com.android.systemui.shade.ui.composable.QuickSettingsOverlayHeader
import com.android.systemui.shade.ui.composable.SingleShadeMeasurePolicy
-import com.android.systemui.statusbar.notification.icon.ui.viewbinder.NotificationIconContainerStatusBarViewBinder
import com.android.systemui.statusbar.notification.stack.shared.model.ShadeScrimBounds
import com.android.systemui.statusbar.notification.stack.shared.model.ShadeScrimShape
import com.android.systemui.statusbar.notification.stack.ui.view.NotificationScrollView
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.NotificationsPlaceholderViewModel
-import com.android.systemui.statusbar.phone.ui.StatusBarIconController
-import com.android.systemui.statusbar.phone.ui.TintedIconManager
import dagger.Lazy
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
@@ -84,11 +81,7 @@ class QuickSettingsShadeOverlay
constructor(
private val actionsViewModelFactory: QuickSettingsShadeOverlayActionsViewModel.Factory,
private val contentViewModelFactory: QuickSettingsShadeOverlayContentViewModel.Factory,
- private val tintedIconManagerFactory: TintedIconManager.Factory,
- private val batteryMeterViewControllerFactory: BatteryMeterViewController.Factory,
- private val statusBarIconController: StatusBarIconController,
- private val notificationIconContainerStatusBarViewBinder:
- NotificationIconContainerStatusBarViewBinder,
+ private val quickSettingsContainerViewModelFactory: QuickSettingsContainerViewModel.Factory,
private val notificationStackScrollView: Lazy<NotificationScrollView>,
private val notificationsPlaceholderViewModelFactory: NotificationsPlaceholderViewModel.Factory,
) : Overlay {
@@ -107,43 +100,47 @@ constructor(
@Composable
override fun ContentScope.Content(modifier: Modifier) {
- val viewModel =
- rememberViewModel("QuickSettingsShadeOverlay") { contentViewModelFactory.create() }
+ val contentViewModel =
+ rememberViewModel("QuickSettingsShadeOverlayContent") {
+ contentViewModelFactory.create()
+ }
+ val quickSettingsContainerViewModel =
+ rememberViewModel("QuickSettingsShadeOverlayContainer") {
+ quickSettingsContainerViewModelFactory.create(supportsBrightnessMirroring = true)
+ }
val panelCornerRadius =
with(LocalDensity.current) { OverlayShade.Dimensions.PanelCornerRadius.toPx().toInt() }
+ val showBrightnessMirror =
+ quickSettingsContainerViewModel.brightnessSliderViewModel.showMirror
+ val contentAlphaFromBrightnessMirror by
+ animateFloatAsState(if (showBrightnessMirror) 0f else 1f)
- // set the bounds to null when the QuickSettings overlay disappears
- DisposableEffect(Unit) { onDispose { viewModel.onPanelShapeChanged(null) } }
+ // Set the bounds to null when the QuickSettings overlay disappears.
+ DisposableEffect(Unit) { onDispose { contentViewModel.onPanelShapeChanged(null) } }
- Box(modifier = modifier) {
+ Box(modifier = modifier.graphicsLayer { alpha = contentAlphaFromBrightnessMirror }) {
SnoozeableHeadsUpNotificationSpace(
stackScrollView = notificationStackScrollView.get(),
viewModel =
- rememberViewModel("QuickSettingsShadeOverlay") {
+ rememberViewModel("QuickSettingsShadeOverlayPlaceholder") {
notificationsPlaceholderViewModelFactory.create()
},
)
OverlayShade(
- isShadeLayoutWide = viewModel.isShadeLayoutWide,
+ panelElement = QuickSettingsShade.Elements.Panel,
panelAlignment = Alignment.TopEnd,
- onScrimClicked = viewModel::onScrimClicked,
+ onScrimClicked = contentViewModel::onScrimClicked,
header = {
OverlayShadeHeader(
- viewModelFactory = viewModel.shadeHeaderViewModelFactory,
- createTintedIconManager = tintedIconManagerFactory::create,
- createBatteryMeterViewController =
- batteryMeterViewControllerFactory::create,
- statusBarIconController = statusBarIconController,
- notificationIconContainerStatusBarViewBinder =
- notificationIconContainerStatusBarViewBinder,
+ viewModel = quickSettingsContainerViewModel.shadeHeaderViewModel,
modifier =
- Modifier.element(NotificationsShade.Elements.StatusBar)
+ Modifier.element(QuickSettingsShade.Elements.StatusBar)
.layoutId(SingleShadeMeasurePolicy.LayoutId.ShadeHeader),
)
},
) {
ShadeBody(
- viewModel = viewModel.quickSettingsContainerViewModel,
+ viewModel = quickSettingsContainerViewModel,
modifier =
Modifier.onPlaced { coordinates ->
val boundsInWindow = coordinates.boundsInWindow()
@@ -160,16 +157,15 @@ constructor(
topRadius = 0,
bottomRadius = panelCornerRadius,
)
- viewModel.onPanelShapeChanged(shape)
+ contentViewModel.onPanelShapeChanged(shape)
},
header = {
- if (viewModel.isShadeLayoutWide) {
+ if (quickSettingsContainerViewModel.showHeader) {
QuickSettingsOverlayHeader(
- viewModelFactory = viewModel.shadeHeaderViewModelFactory,
- createBatteryMeterViewController =
- batteryMeterViewControllerFactory::create,
+ viewModel = quickSettingsContainerViewModel.shadeHeaderViewModel,
modifier =
- Modifier.padding(top = QuickSettingsShade.Dimensions.Padding),
+ Modifier.element(QuickSettingsShade.Elements.Header)
+ .padding(top = QuickSettingsShade.Dimensions.Padding),
)
}
},
@@ -260,7 +256,7 @@ fun ContentScope.QuickSettingsLayout(
) {
BrightnessSliderContainer(
viewModel = viewModel.brightnessSliderViewModel,
- containerColor = Color.Transparent,
+ containerColor = OverlayShade.Colors.PanelBackground,
modifier =
Modifier.fillMaxWidth()
.height(QuickSettingsShade.Dimensions.BrightnessSliderHeight),
@@ -277,6 +273,11 @@ fun ContentScope.QuickSettingsLayout(
}
object QuickSettingsShade {
+ object Elements {
+ val StatusBar = ElementKey("QuickSettingsShadeOverlayStatusBar")
+ val Panel = ElementKey("QuickSettingsShadeOverlayPanel")
+ val Header = ElementKey("QuickSettingsShadeOverlayHeader")
+ }
object Dimensions {
val Padding = 16.dp
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/ribbon/ui/composable/Ribbon.kt b/packages/SystemUI/compose/features/src/com/android/systemui/ribbon/ui/composable/Ribbon.kt
index daa15929b9ce..377bebc404e7 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/ribbon/ui/composable/Ribbon.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/ribbon/ui/composable/Ribbon.kt
@@ -20,8 +20,12 @@ import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.drawWithCache
import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.ColorFilter
+import androidx.compose.ui.graphics.ColorMatrix
import androidx.compose.ui.graphics.graphicsLayer
+import androidx.compose.ui.graphics.layer.drawLayer
import androidx.compose.ui.layout.layout
import com.android.compose.modifiers.thenIf
import kotlin.math.PI
@@ -39,6 +43,9 @@ import kotlin.math.tan
* The background color of the strip can be modified by passing a value to the [backgroundColor] or
* `null` to remove the strip background.
*
+ * The [colorSaturation] is a function that returns that amount of color saturation to apply to the
+ * entire ribbon. If it's `1`, the full color will be used, if it's `0` it will be greyscale.
+ *
* Note: this function assumes that it's been placed at the bottom right of its parent by its
* caller. It's the caller's responsibility to meet that assumption by actually placing this
* composable element at the bottom right.
@@ -49,6 +56,7 @@ fun BottomRightCornerRibbon(
modifier: Modifier = Modifier,
degrees: Int = 45,
alpha: Float = 0.6f,
+ colorSaturation: () -> Float = { 1f },
backgroundColor: Color? = Color.Red,
) {
check(degrees in 1..89)
@@ -73,6 +81,22 @@ fun BottomRightCornerRibbon(
translationY = (h - w * sine + h * cosine) / 2f
rotationZ = 360f - degrees
}
+ .drawWithCache {
+ val layer =
+ obtainGraphicsLayer().apply {
+ record {
+ colorFilter =
+ ColorFilter.colorMatrix(
+ colorMatrix =
+ ColorMatrix().apply {
+ setToSaturation(colorSaturation())
+ }
+ )
+ drawContent()
+ }
+ }
+ onDrawWithContent { drawLayer(layer) }
+ }
.thenIf(backgroundColor != null) { Modifier.background(backgroundColor!!) }
.layout { measurable, constraints ->
val placeable = measurable.measure(constraints)
@@ -87,6 +111,6 @@ fun BottomRightCornerRibbon(
) {
placeable.place(leftPadding, 0)
}
- }
+ },
)
}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainer.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainer.kt
index 6c0c5c7e49b9..da4e5824eb3e 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainer.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainer.kt
@@ -34,13 +34,13 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.platform.LocalHapticFeedback
import androidx.compose.ui.platform.LocalView
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.compose.animation.scene.ContentKey
import com.android.compose.animation.scene.OverlayKey
import com.android.compose.animation.scene.SceneKey
import com.android.compose.animation.scene.SceneTransitionLayout
-import com.android.compose.animation.scene.SceneTransitions
import com.android.compose.animation.scene.UserAction
import com.android.compose.animation.scene.UserActionResult
import com.android.compose.animation.scene.observableTransitionState
@@ -85,7 +85,7 @@ fun SceneContainer(
sceneByKey: Map<SceneKey, Scene>,
overlayByKey: Map<OverlayKey, Overlay>,
initialSceneKey: SceneKey,
- sceneTransitions: SceneTransitions,
+ transitionsBuilder: SceneContainerTransitionsBuilder,
dataSourceDelegator: SceneDataSourceDelegator,
qsSceneAdapter: Provider<QSSceneAdapter>,
sceneJankMonitorFactory: SceneJankMonitor.Factory,
@@ -97,6 +97,12 @@ fun SceneContainer(
val sceneJankMonitor =
rememberActivated(traceName = "sceneJankMonitor") { sceneJankMonitorFactory.create() }
+ val hapticFeedback = LocalHapticFeedback.current
+ val sceneTransitions =
+ remember(hapticFeedback) {
+ transitionsBuilder.build(viewModel.hapticsViewModel.getRevealHaptics(hapticFeedback))
+ }
+
val state =
rememberMutableSceneTransitionLayoutState(
initialScene = initialSceneKey,
@@ -161,7 +167,7 @@ fun SceneContainer(
if (isFullWidthShade()) stretchOverscrollEffectFactory else offsetOverscrollEffectFactory
// Inflate qsView here so that shade has the correct qqs height in the first measure pass after
- // rebooting
+ // rebooting.
if (
viewModel.allContentKeys.contains(Scenes.QuickSettings) ||
viewModel.allContentKeys.contains(Scenes.Shade)
@@ -232,6 +238,7 @@ fun SceneContainer(
BottomRightCornerRibbon(
content = { Text(text = "flexi\uD83E\uDD43", color = Color.White) },
+ colorSaturation = { viewModel.ribbonColorSaturation },
modifier = Modifier.align(Alignment.BottomEnd),
)
}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt
index 22556777c40f..2ad9b7a10ad1 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt
@@ -1,6 +1,8 @@
package com.android.systemui.scene.ui.composable
+import com.android.compose.animation.scene.SceneTransitions
import com.android.compose.animation.scene.TransitionKey
+import com.android.compose.animation.scene.reveal.ContainerRevealHaptics
import com.android.compose.animation.scene.transitions
import com.android.internal.jank.Cuj
import com.android.systemui.notifications.ui.composable.Notifications
@@ -32,7 +34,7 @@ import com.android.systemui.scene.ui.composable.transitions.toQuickSettingsShade
import com.android.systemui.shade.ui.composable.Shade
/**
- * Comprehensive definition of all transitions between scenes in [SceneContainer].
+ * Comprehensive definition of all transitions between scenes and overlays in [SceneContainer].
*
* Transitions are automatically reversible, so define only one transition per scene pair. By\
* convention, use the more common transition direction when defining the pair order, e.g.
@@ -43,163 +45,199 @@ import com.android.systemui.shade.ui.composable.Shade
*
* Please keep the list sorted alphabetically.
*/
-val SceneContainerTransitions = transitions {
- interruptionHandler = SceneContainerInterruptionHandler
+class SceneContainerTransitions : SceneContainerTransitionsBuilder {
+ override fun build(revealHaptics: ContainerRevealHaptics): SceneTransitions {
+ return transitions {
+ interruptionHandler = SceneContainerInterruptionHandler
- // Scene transitions
+ // Scene transitions
- from(Scenes.Bouncer, to = Scenes.Gone) { bouncerToGoneTransition() }
- from(Scenes.Dream, to = Scenes.Bouncer) { dreamToBouncerTransition() }
- from(Scenes.Dream, to = Scenes.Communal) { dreamToCommunalTransition() }
- from(Scenes.Dream, to = Scenes.Gone) { dreamToGoneTransition() }
- from(Scenes.Dream, to = Scenes.Shade, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE) {
- dreamToShadeTransition()
- }
- from(Scenes.Gone, to = Scenes.Shade, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE) {
- goneToShadeTransition()
- }
- from(
- Scenes.Gone,
- to = Scenes.Shade,
- key = ToSplitShade,
- cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE,
- ) {
- goneToSplitShadeTransition()
- }
- from(
- Scenes.Gone,
- to = Scenes.Shade,
- key = SlightlyFasterShadeCollapse,
- cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE,
- ) {
- goneToShadeTransition(durationScale = 0.9)
- }
- from(
- Scenes.Gone,
- to = Scenes.QuickSettings,
- cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE,
- ) {
- goneToQuickSettingsTransition()
- }
- from(
- Scenes.Gone,
- to = Scenes.QuickSettings,
- key = SlightlyFasterShadeCollapse,
- cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE,
- ) {
- goneToQuickSettingsTransition(durationScale = 0.9)
- }
+ from(Scenes.Bouncer, to = Scenes.Gone) { bouncerToGoneTransition() }
+ from(Scenes.Dream, to = Scenes.Bouncer) { dreamToBouncerTransition() }
+ from(Scenes.Dream, to = Scenes.Communal) { dreamToCommunalTransition() }
+ from(Scenes.Dream, to = Scenes.Gone) { dreamToGoneTransition() }
+ from(
+ Scenes.Dream,
+ to = Scenes.Shade,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ dreamToShadeTransition()
+ }
+ from(
+ Scenes.Gone,
+ to = Scenes.Shade,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ goneToShadeTransition()
+ }
+ from(
+ Scenes.Gone,
+ to = Scenes.Shade,
+ key = ToSplitShade,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ goneToSplitShadeTransition()
+ }
+ from(
+ Scenes.Gone,
+ to = Scenes.Shade,
+ key = SlightlyFasterShadeCollapse,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ goneToShadeTransition(durationScale = 0.9)
+ }
+ from(
+ Scenes.Gone,
+ to = Scenes.QuickSettings,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ goneToQuickSettingsTransition()
+ }
+ from(
+ Scenes.Gone,
+ to = Scenes.QuickSettings,
+ key = SlightlyFasterShadeCollapse,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ goneToQuickSettingsTransition(durationScale = 0.9)
+ }
- from(Scenes.Lockscreen, to = Scenes.Bouncer) { lockscreenToBouncerTransition() }
- from(
- Scenes.Lockscreen,
- to = Scenes.Bouncer,
- key = TransitionKey.PredictiveBack,
- reversePreview = { bouncerToLockscreenPreview() },
- ) {
- lockscreenToBouncerTransition()
- }
- from(Scenes.Lockscreen, to = Scenes.Communal) { lockscreenToCommunalTransition() }
- from(Scenes.Lockscreen, to = Scenes.Dream) { lockscreenToDreamTransition() }
- from(Scenes.Lockscreen, to = Scenes.Shade, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE) {
- lockscreenToShadeTransition()
- }
- from(
- Scenes.Lockscreen,
- to = Scenes.Shade,
- key = ToSplitShade,
- cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE,
- ) {
- lockscreenToSplitShadeTransition()
- sharedElement(Shade.Elements.BackgroundScrim, enabled = false)
- }
- from(
- Scenes.Lockscreen,
- to = Scenes.Shade,
- key = SlightlyFasterShadeCollapse,
- cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE,
- ) {
- lockscreenToShadeTransition(durationScale = 0.9)
- }
- from(
- Scenes.Lockscreen,
- to = Scenes.QuickSettings,
- cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE,
- ) {
- lockscreenToQuickSettingsTransition()
- }
- from(Scenes.Lockscreen, to = Scenes.Gone) { lockscreenToGoneTransition() }
- from(
- Scenes.QuickSettings,
- to = Scenes.Shade,
- cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE,
- ) {
- reversed { shadeToQuickSettingsTransition() }
- sharedElement(Notifications.Elements.HeadsUpNotificationPlaceholder, enabled = false)
- }
- from(
- Scenes.Shade,
- to = Scenes.QuickSettings,
- cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE,
- ) {
- shadeToQuickSettingsTransition()
- }
- from(Scenes.Shade, to = Scenes.Lockscreen, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE) {
- reversed { lockscreenToShadeTransition() }
- sharedElement(Notifications.Elements.NotificationStackPlaceholder, enabled = false)
- sharedElement(Notifications.Elements.HeadsUpNotificationPlaceholder, enabled = false)
- }
- from(
- Scenes.Shade,
- to = Scenes.Lockscreen,
- key = ToSplitShade,
- cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE,
- ) {
- reversed { lockscreenToSplitShadeTransition() }
- }
- from(Scenes.Communal, to = Scenes.Shade, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE) {
- communalToShadeTransition()
- }
- from(Scenes.Communal, to = Scenes.Bouncer) { communalToBouncerTransition() }
+ from(Scenes.Lockscreen, to = Scenes.Bouncer) { lockscreenToBouncerTransition() }
+ from(
+ Scenes.Lockscreen,
+ to = Scenes.Bouncer,
+ key = TransitionKey.PredictiveBack,
+ reversePreview = { bouncerToLockscreenPreview() },
+ ) {
+ lockscreenToBouncerTransition()
+ }
+ from(Scenes.Lockscreen, to = Scenes.Communal) { lockscreenToCommunalTransition() }
+ from(Scenes.Lockscreen, to = Scenes.Dream) { lockscreenToDreamTransition() }
+ from(
+ Scenes.Lockscreen,
+ to = Scenes.Shade,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ lockscreenToShadeTransition()
+ }
+ from(
+ Scenes.Lockscreen,
+ to = Scenes.Shade,
+ key = ToSplitShade,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ lockscreenToSplitShadeTransition()
+ sharedElement(Shade.Elements.BackgroundScrim, enabled = false)
+ }
+ from(
+ Scenes.Lockscreen,
+ to = Scenes.Shade,
+ key = SlightlyFasterShadeCollapse,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ lockscreenToShadeTransition(durationScale = 0.9)
+ }
+ from(
+ Scenes.Lockscreen,
+ to = Scenes.QuickSettings,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ lockscreenToQuickSettingsTransition()
+ }
+ from(Scenes.Lockscreen, to = Scenes.Gone) { lockscreenToGoneTransition() }
+ from(
+ Scenes.QuickSettings,
+ to = Scenes.Shade,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ reversed { shadeToQuickSettingsTransition() }
+ sharedElement(
+ Notifications.Elements.HeadsUpNotificationPlaceholder,
+ enabled = false,
+ )
+ }
+ from(
+ Scenes.Shade,
+ to = Scenes.QuickSettings,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ shadeToQuickSettingsTransition()
+ }
+ from(
+ Scenes.Shade,
+ to = Scenes.Lockscreen,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ reversed { lockscreenToShadeTransition() }
+ sharedElement(Notifications.Elements.NotificationStackPlaceholder, enabled = false)
+ sharedElement(
+ Notifications.Elements.HeadsUpNotificationPlaceholder,
+ enabled = false,
+ )
+ }
+ from(
+ Scenes.Shade,
+ to = Scenes.Lockscreen,
+ key = ToSplitShade,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ reversed { lockscreenToSplitShadeTransition() }
+ }
+ from(
+ Scenes.Communal,
+ to = Scenes.Shade,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ communalToShadeTransition()
+ }
+ from(Scenes.Communal, to = Scenes.Bouncer) { communalToBouncerTransition() }
- // Overlay transitions
+ // Overlay transitions
- to(Overlays.NotificationsShade, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE) {
- toNotificationsShadeTransition()
- }
- to(Overlays.QuickSettingsShade, cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE) {
- toQuickSettingsShadeTransition()
- }
- from(
- Scenes.Gone,
- to = Overlays.NotificationsShade,
- key = SlightlyFasterShadeCollapse,
- cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE,
- ) {
- toNotificationsShadeTransition(durationScale = 0.9)
- }
- from(
- Scenes.Gone,
- to = Overlays.QuickSettingsShade,
- key = SlightlyFasterShadeCollapse,
- cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE,
- ) {
- toQuickSettingsShadeTransition(durationScale = 0.9)
- }
- from(
- Scenes.Lockscreen,
- to = Overlays.NotificationsShade,
- key = SlightlyFasterShadeCollapse,
- cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE,
- ) {
- toNotificationsShadeTransition(durationScale = 0.9)
- }
- from(
- Scenes.Lockscreen,
- to = Overlays.QuickSettingsShade,
- key = SlightlyFasterShadeCollapse,
- cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE,
- ) {
- toQuickSettingsShadeTransition(durationScale = 0.9)
+ to(
+ Overlays.NotificationsShade,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ toNotificationsShadeTransition(revealHaptics = revealHaptics)
+ }
+ to(
+ Overlays.QuickSettingsShade,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ toQuickSettingsShadeTransition(revealHaptics = revealHaptics)
+ }
+ from(
+ Scenes.Gone,
+ to = Overlays.NotificationsShade,
+ key = SlightlyFasterShadeCollapse,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ toNotificationsShadeTransition(durationScale = 0.9, revealHaptics = revealHaptics)
+ }
+ from(
+ Scenes.Gone,
+ to = Overlays.QuickSettingsShade,
+ key = SlightlyFasterShadeCollapse,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ toQuickSettingsShadeTransition(durationScale = 0.9, revealHaptics = revealHaptics)
+ }
+ from(
+ Scenes.Lockscreen,
+ to = Overlays.NotificationsShade,
+ key = SlightlyFasterShadeCollapse,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ toNotificationsShadeTransition(durationScale = 0.9, revealHaptics = revealHaptics)
+ }
+ from(
+ Scenes.Lockscreen,
+ to = Overlays.QuickSettingsShade,
+ key = SlightlyFasterShadeCollapse,
+ cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE, // NOTYPO
+ ) {
+ toQuickSettingsShadeTransition(durationScale = 0.9, revealHaptics = revealHaptics)
+ }
+ }
}
}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitionsBuilder.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitionsBuilder.kt
new file mode 100644
index 000000000000..13d3456baa74
--- /dev/null
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitionsBuilder.kt
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.scene.ui.composable
+
+import com.android.compose.animation.scene.SceneTransitions
+import com.android.compose.animation.scene.reveal.ContainerRevealHaptics
+import com.android.compose.animation.scene.transitions
+
+/**
+ * Builder of the comprehensive definition of all transitions between scenes and overlays in the
+ * scene container.
+ */
+interface SceneContainerTransitionsBuilder {
+
+ /** Build the [SceneContainer] transitions spec. */
+ fun build(revealHaptics: ContainerRevealHaptics): SceneTransitions
+}
+
+/**
+ * Implementation of [SceneContainerTransitionsBuilder] that returns a constant [SceneTransitions]
+ * instance, ignoring any parameters passed to [build].
+ */
+class ConstantSceneContainerTransitionsBuilder(
+ private val transitions: SceneTransitions = transitions { /* No transitions */ }
+) : SceneContainerTransitionsBuilder {
+ override fun build(revealHaptics: ContainerRevealHaptics): SceneTransitions = transitions
+}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/ToNotificationsShadeTransition.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/ToNotificationsShadeTransition.kt
index b4c60037b426..722af6ae4f34 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/ToNotificationsShadeTransition.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/ToNotificationsShadeTransition.kt
@@ -17,45 +17,31 @@
package com.android.systemui.scene.ui.composable.transitions
import androidx.compose.animation.core.tween
-import com.android.compose.animation.scene.ContentKey
-import com.android.compose.animation.scene.Edge
import com.android.compose.animation.scene.TransitionBuilder
-import com.android.compose.animation.scene.UserActionDistance
-import com.android.compose.animation.scene.UserActionDistanceScope
+import com.android.compose.animation.scene.reveal.ContainerRevealHaptics
+import com.android.compose.animation.scene.reveal.verticalContainerReveal
import com.android.systemui.keyguard.ui.composable.blueprint.ClockElementKeys
-import com.android.systemui.notifications.ui.composable.Notifications
import com.android.systemui.notifications.ui.composable.NotificationsShade
import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.shade.ui.composable.OverlayShade
import kotlin.time.Duration.Companion.milliseconds
-fun TransitionBuilder.toNotificationsShadeTransition(durationScale: Double = 1.0) {
+fun TransitionBuilder.toNotificationsShadeTransition(
+ durationScale: Double = 1.0,
+ revealHaptics: ContainerRevealHaptics,
+) {
spec = tween(durationMillis = (DefaultDuration * durationScale).inWholeMilliseconds.toInt())
- distance = UserActionDistance { _, shadeContentKey, _ ->
- calculateShadePanelTargetPositionY(shadeContentKey)
- }
// Ensure the clock isn't clipped by the shade outline during the transition from lockscreen.
sharedElement(
ClockElementKeys.smallClockElementKey,
elevateInContent = Overlays.NotificationsShade,
)
- scaleSize(OverlayShade.Elements.Panel, height = 0f)
- // Avoid translating the status bar with the shade panel.
- translate(NotificationsShade.Elements.StatusBar)
- // Slide in the shade panel from the top edge.
- translate(OverlayShade.Elements.Panel, Edge.Top)
- fractionRange(end = .5f) { fade(OverlayShade.Elements.Scrim) }
- fractionRange(start = .5f) { fade(Notifications.Elements.NotificationScrim) }
-}
+ verticalContainerReveal(NotificationsShade.Elements.Panel, revealHaptics)
-/** Returns the Y position of the bottom of the shade container panel within [shadeOverlayKey]. */
-fun UserActionDistanceScope.calculateShadePanelTargetPositionY(shadeOverlayKey: ContentKey): Float {
- val marginTop = OverlayShade.Elements.Panel.targetOffset(shadeOverlayKey)?.y ?: 0f
- val panelHeight =
- OverlayShade.Elements.Panel.targetSize(shadeOverlayKey)?.height?.toFloat() ?: 0f
- return marginTop + panelHeight
+ fractionRange(end = .5f) { fade(OverlayShade.Elements.Scrim) }
+ fractionRange(start = .5f) { fade(NotificationsShade.Elements.StatusBar) }
}
private val DefaultDuration = 300.milliseconds
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/ToQuickSettingsShadeTransition.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/ToQuickSettingsShadeTransition.kt
index c9fbb4da9ffb..3cce99740e47 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/ToQuickSettingsShadeTransition.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/ToQuickSettingsShadeTransition.kt
@@ -17,21 +17,23 @@
package com.android.systemui.scene.ui.composable.transitions
import androidx.compose.animation.core.tween
-import com.android.compose.animation.scene.Edge
import com.android.compose.animation.scene.TransitionBuilder
-import com.android.compose.animation.scene.UserActionDistance
+import com.android.compose.animation.scene.reveal.ContainerRevealHaptics
+import com.android.compose.animation.scene.reveal.verticalContainerReveal
+import com.android.systemui.qs.ui.composable.QuickSettingsShade
import com.android.systemui.shade.ui.composable.OverlayShade
import kotlin.time.Duration.Companion.milliseconds
-fun TransitionBuilder.toQuickSettingsShadeTransition(durationScale: Double = 1.0) {
+fun TransitionBuilder.toQuickSettingsShadeTransition(
+ durationScale: Double = 1.0,
+ revealHaptics: ContainerRevealHaptics,
+) {
spec = tween(durationMillis = (DefaultDuration * durationScale).inWholeMilliseconds.toInt())
- distance = UserActionDistance { _, shadeContentKey, _ ->
- calculateShadePanelTargetPositionY(shadeContentKey)
- }
- translate(OverlayShade.Elements.Panel, Edge.Top)
+ verticalContainerReveal(QuickSettingsShade.Elements.Panel, revealHaptics)
fractionRange(end = .5f) { fade(OverlayShade.Elements.Scrim) }
+ fractionRange(start = .5f) { fade(QuickSettingsShade.Elements.StatusBar) }
}
private val DefaultDuration = 300.milliseconds
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/OverlayShade.kt b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/OverlayShade.kt
index fc59d40ec443..5dcec5b8836d 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/OverlayShade.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/OverlayShade.kt
@@ -58,29 +58,32 @@ import com.android.systemui.res.R
/** Renders a lightweight shade UI container, as an overlay. */
@Composable
fun ContentScope.OverlayShade(
- isShadeLayoutWide: Boolean,
+ panelElement: ElementKey,
panelAlignment: Alignment,
onScrimClicked: () -> Unit,
modifier: Modifier = Modifier,
header: @Composable () -> Unit,
content: @Composable () -> Unit,
) {
+ val isFullWidth = isFullWidthShade()
Box(modifier) {
Scrim(onClicked = onScrimClicked)
- Box(modifier = Modifier.fillMaxSize().panelPadding(), contentAlignment = panelAlignment) {
+ Box(
+ modifier = Modifier.fillMaxSize().panelContainerPadding(isFullWidth),
+ contentAlignment = panelAlignment,
+ ) {
Panel(
- isShadeLayoutWide = isShadeLayoutWide,
modifier =
Modifier.overscroll(verticalOverscrollEffect)
- .element(OverlayShade.Elements.Panel)
- .panelSize(),
- header = header,
+ .element(panelElement)
+ .panelWidth(isFullWidth),
+ header = header.takeIf { isFullWidth },
content = content,
)
}
- if (isShadeLayoutWide) {
+ if (!isFullWidth) {
header()
}
}
@@ -100,12 +103,14 @@ private fun ContentScope.Scrim(onClicked: () -> Unit, modifier: Modifier = Modif
@Composable
private fun ContentScope.Panel(
- isShadeLayoutWide: Boolean,
modifier: Modifier = Modifier,
- header: @Composable () -> Unit,
+ header: (@Composable () -> Unit)?,
content: @Composable () -> Unit,
) {
- Box(modifier = modifier.clip(OverlayShade.Shapes.RoundedCornerPanel)) {
+ Box(
+ modifier =
+ modifier.clip(OverlayShade.Shapes.RoundedCornerPanel).disableSwipesWhenScrolling()
+ ) {
Spacer(
modifier =
Modifier.element(OverlayShade.Elements.PanelBackground)
@@ -117,9 +122,7 @@ private fun ContentScope.Panel(
)
Column {
- if (!isShadeLayoutWide) {
- header()
- }
+ header?.invoke()
// This content is intentionally rendered as a separate element from the background in
// order to allow for more flexibility when defining transitions.
@@ -129,14 +132,12 @@ private fun ContentScope.Panel(
}
@Composable
-private fun Modifier.panelSize(): Modifier {
- return this.then(
- if (isFullWidthShade()) {
- Modifier.fillMaxWidth()
- } else {
- Modifier.width(dimensionResource(id = R.dimen.shade_panel_width))
- }
- )
+private fun Modifier.panelWidth(isFullWidthPanel: Boolean): Modifier {
+ return if (isFullWidthPanel) {
+ fillMaxWidth()
+ } else {
+ width(dimensionResource(id = R.dimen.shade_panel_width))
+ }
}
@Composable
@@ -146,27 +147,23 @@ internal fun isFullWidthShade(): Boolean {
}
@Composable
-private fun Modifier.panelPadding(): Modifier {
- val widthSizeClass = LocalWindowSizeClass.current.widthSizeClass
+private fun Modifier.panelContainerPadding(isFullWidthPanel: Boolean): Modifier {
+ if (isFullWidthPanel) {
+ return this
+ }
val systemBars = WindowInsets.systemBarsIgnoringVisibility
val displayCutout = WindowInsets.displayCutout
val waterfall = WindowInsets.waterfall
val horizontalPadding =
PaddingValues(horizontal = dimensionResource(id = R.dimen.shade_panel_margin_horizontal))
-
- val combinedPadding =
+ return padding(
combinePaddings(
systemBars.asPaddingValues(),
displayCutout.asPaddingValues(),
waterfall.asPaddingValues(),
horizontalPadding,
)
-
- return if (widthSizeClass == WindowWidthSizeClass.Compact) {
- padding(bottom = combinedPadding.calculateBottomPadding())
- } else {
- padding(combinedPadding)
- }
+ )
}
/** Creates a union of [paddingValues] by using the max padding of each edge. */
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeHeader.kt b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeHeader.kt
index c5d28adce601..02de78bc84ce 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeHeader.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeHeader.kt
@@ -74,23 +74,20 @@ import com.android.systemui.common.ui.compose.windowinsets.CutoutLocation
import com.android.systemui.common.ui.compose.windowinsets.LocalDisplayCutout
import com.android.systemui.common.ui.compose.windowinsets.LocalScreenCornerRadius
import com.android.systemui.compose.modifiers.sysuiResTag
-import com.android.systemui.lifecycle.rememberViewModel
import com.android.systemui.privacy.OngoingPrivacyChip
import com.android.systemui.res.R
import com.android.systemui.scene.shared.model.Scenes
-import com.android.systemui.shade.shared.flag.DualShade
import com.android.systemui.shade.ui.composable.ShadeHeader.Colors.chipBackground
import com.android.systemui.shade.ui.composable.ShadeHeader.Colors.chipHighlighted
import com.android.systemui.shade.ui.composable.ShadeHeader.Colors.onScrimDim
import com.android.systemui.shade.ui.composable.ShadeHeader.Dimensions.CollapsedHeight
import com.android.systemui.shade.ui.composable.ShadeHeader.Values.ClockScale
import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel
+import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel.HeaderChipHighlight
import com.android.systemui.statusbar.notification.icon.ui.viewbinder.NotificationIconContainerStatusBarViewBinder
import com.android.systemui.statusbar.phone.NotificationIconContainer
import com.android.systemui.statusbar.phone.StatusBarLocation
import com.android.systemui.statusbar.phone.StatusIconContainer
-import com.android.systemui.statusbar.phone.ui.StatusBarIconController
-import com.android.systemui.statusbar.phone.ui.TintedIconManager
import com.android.systemui.statusbar.pipeline.mobile.ui.view.ModernShadeCarrierGroupMobileView
import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.ShadeCarrierGroupMobileIconViewModel
import com.android.systemui.statusbar.policy.Clock
@@ -137,14 +134,9 @@ object ShadeHeader {
/** The status bar that appears above the Shade scene on small screens */
@Composable
fun ContentScope.CollapsedShadeHeader(
- viewModelFactory: ShadeHeaderViewModel.Factory,
- createTintedIconManager: (ViewGroup, StatusBarLocation) -> TintedIconManager,
- createBatteryMeterViewController: (ViewGroup, StatusBarLocation) -> BatteryMeterViewController,
- statusBarIconController: StatusBarIconController,
+ viewModel: ShadeHeaderViewModel,
modifier: Modifier = Modifier,
) {
- val viewModel = rememberViewModel("CollapsedShadeHeader") { viewModelFactory.create() }
-
val cutoutLocation = LocalDisplayCutout.current.location
val horizontalPadding =
max(LocalScreenCornerRadius.current / 2f, Shade.Dimensions.HorizontalPadding)
@@ -157,12 +149,14 @@ fun ContentScope.CollapsedShadeHeader(
}
}
+ val longerDateText by viewModel.longerDateText.collectAsStateWithLifecycle()
+ val shorterDateText by viewModel.shorterDateText.collectAsStateWithLifecycle()
+
val isShadeLayoutWide = viewModel.isShadeLayoutWide
val isPrivacyChipVisible by viewModel.isPrivacyChipVisible.collectAsStateWithLifecycle()
- // This layout assumes it is globally positioned at (0, 0) and is the
- // same size as the screen.
+ // This layout assumes it is globally positioned at (0, 0) and is the same size as the screen.
CutoutAwareShadeHeader(
modifier = modifier.sysuiResTag(ShadeHeader.TestTags.Root),
startContent = {
@@ -171,9 +165,11 @@ fun ContentScope.CollapsedShadeHeader(
horizontalArrangement = Arrangement.spacedBy(5.dp),
modifier = Modifier.padding(horizontal = horizontalPadding),
) {
- Clock(scale = 1f, viewModel = viewModel)
+ Clock(scale = 1f, onClick = viewModel::onClockClicked)
VariableDayDate(
- viewModel = viewModel,
+ longerDateText = longerDateText,
+ shorterDateText = shorterDateText,
+ chipHighlight = viewModel.notificationsChipHighlight,
modifier = Modifier.element(ShadeHeader.Elements.CollapsedContentStart),
)
}
@@ -202,17 +198,17 @@ fun ContentScope.CollapsedShadeHeader(
if (isShadeLayoutWide) {
ShadeCarrierGroup(viewModel = viewModel)
}
- SystemIconChip(viewModel = viewModel, isClickable = isShadeLayoutWide) {
+ SystemIconChip(
+ onClick = viewModel::onSystemIconChipClicked.takeIf { isShadeLayoutWide }
+ ) {
StatusIcons(
viewModel = viewModel,
- createTintedIconManager = createTintedIconManager,
- statusBarIconController = statusBarIconController,
useExpandedFormat = useExpandedTextFormat,
modifier = Modifier.padding(end = 6.dp).weight(1f, fill = false),
)
BatteryIcon(
- viewModel = viewModel,
- createBatteryMeterViewController = createBatteryMeterViewController,
+ createBatteryMeterViewController =
+ viewModel.createBatteryMeterViewController,
useExpandedFormat = useExpandedTextFormat,
modifier = Modifier.padding(vertical = 8.dp),
)
@@ -226,18 +222,15 @@ fun ContentScope.CollapsedShadeHeader(
/** The status bar that appears above the Quick Settings scene on small screens */
@Composable
fun ContentScope.ExpandedShadeHeader(
- viewModelFactory: ShadeHeaderViewModel.Factory,
- createTintedIconManager: (ViewGroup, StatusBarLocation) -> TintedIconManager,
- createBatteryMeterViewController: (ViewGroup, StatusBarLocation) -> BatteryMeterViewController,
- statusBarIconController: StatusBarIconController,
+ viewModel: ShadeHeaderViewModel,
modifier: Modifier = Modifier,
) {
- val viewModel = rememberViewModel("ExpandedShadeHeader") { viewModelFactory.create() }
-
val useExpandedFormat by remember {
derivedStateOf { shouldUseExpandedFormat(layoutState.transitionState) }
}
+ val longerDateText by viewModel.longerDateText.collectAsStateWithLifecycle()
+ val shorterDateText by viewModel.shorterDateText.collectAsStateWithLifecycle()
val isPrivacyChipVisible by viewModel.isPrivacyChipVisible.collectAsStateWithLifecycle()
Box(modifier = modifier.sysuiResTag(ShadeHeader.TestTags.Root)) {
@@ -256,7 +249,7 @@ fun ContentScope.ExpandedShadeHeader(
Box {
Clock(
scale = 2.57f,
- viewModel = viewModel,
+ onClick = viewModel::onClockClicked,
modifier = Modifier.align(Alignment.CenterStart),
)
}
@@ -275,20 +268,23 @@ fun ContentScope.ExpandedShadeHeader(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.element(ShadeHeader.Elements.ExpandedContent),
) {
- VariableDayDate(viewModel = viewModel, modifier = Modifier.widthIn(max = 90.dp))
+ VariableDayDate(
+ longerDateText = longerDateText,
+ shorterDateText = shorterDateText,
+ chipHighlight = viewModel.notificationsChipHighlight,
+ modifier = Modifier.widthIn(max = 90.dp),
+ )
Spacer(modifier = Modifier.weight(1f))
- SystemIconChip(viewModel = viewModel) {
+ SystemIconChip {
StatusIcons(
viewModel = viewModel,
- createTintedIconManager = createTintedIconManager,
- statusBarIconController = statusBarIconController,
useExpandedFormat = useExpandedFormat,
modifier = Modifier.padding(end = 6.dp).weight(1f, fill = false),
)
BatteryIcon(
- viewModel = viewModel,
useExpandedFormat = useExpandedFormat,
- createBatteryMeterViewController = createBatteryMeterViewController,
+ createBatteryMeterViewController =
+ viewModel.createBatteryMeterViewController,
)
}
}
@@ -302,15 +298,9 @@ fun ContentScope.ExpandedShadeHeader(
*/
@Composable
fun ContentScope.OverlayShadeHeader(
- viewModelFactory: ShadeHeaderViewModel.Factory,
- createTintedIconManager: (ViewGroup, StatusBarLocation) -> TintedIconManager,
- createBatteryMeterViewController: (ViewGroup, StatusBarLocation) -> BatteryMeterViewController,
- statusBarIconController: StatusBarIconController,
- notificationIconContainerStatusBarViewBinder: NotificationIconContainerStatusBarViewBinder,
+ viewModel: ShadeHeaderViewModel,
modifier: Modifier = Modifier,
) {
- val viewModel = rememberViewModel("OverlayShadeHeader") { viewModelFactory.create() }
-
val horizontalPadding =
max(LocalScreenCornerRadius.current / 2f, Shade.Dimensions.HorizontalPadding)
@@ -318,8 +308,7 @@ fun ContentScope.OverlayShadeHeader(
val isPrivacyChipVisible by viewModel.isPrivacyChipVisible.collectAsStateWithLifecycle()
- // This layout assumes it is globally positioned at (0, 0) and is the
- // same size as the screen.
+ // This layout assumes it is globally positioned at (0, 0) and is the same size as the screen.
CutoutAwareShadeHeader(
modifier = modifier.sysuiResTag(ShadeHeader.TestTags.Root),
startContent = {
@@ -330,21 +319,32 @@ fun ContentScope.OverlayShadeHeader(
if (isShadeLayoutWide) {
Clock(
scale = 1f,
- viewModel = viewModel,
+ onClick = viewModel::onClockClicked,
modifier = Modifier.padding(horizontal = 4.dp),
)
Spacer(modifier = Modifier.width(5.dp))
}
- NotificationIconChip(viewModel = viewModel) {
+ val chipHighlight = viewModel.notificationsChipHighlight
+ NotificationIconChip(
+ chipHighlight = chipHighlight,
+ onClick = viewModel::onNotificationIconChipClicked,
+ ) {
if (isShadeLayoutWide) {
NotificationIcons(
- viewModel = viewModel,
+ chipHighlight = chipHighlight,
notificationIconContainerStatusBarViewBinder =
- notificationIconContainerStatusBarViewBinder,
+ viewModel.notificationIconContainerStatusBarViewBinder,
modifier = Modifier.width(IntrinsicSize.Min).height(20.dp),
)
} else {
- VariableDayDate(viewModel = viewModel)
+ val longerDateText by viewModel.longerDateText.collectAsStateWithLifecycle()
+ val shorterDateText by
+ viewModel.shorterDateText.collectAsStateWithLifecycle()
+ VariableDayDate(
+ longerDateText = longerDateText,
+ shorterDateText = shorterDateText,
+ chipHighlight = viewModel.notificationsChipHighlight,
+ )
}
}
}
@@ -355,20 +355,22 @@ fun ContentScope.OverlayShadeHeader(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.padding(horizontal = horizontalPadding),
) {
- SystemIconChip(viewModel = viewModel, isClickable = true, showBackground = true) {
+ val chipHighlight = viewModel.quickSettingsChipHighlight
+ SystemIconChip(
+ chipHighlight = chipHighlight,
+ onClick = viewModel::onSystemIconChipClicked,
+ ) {
StatusIcons(
viewModel = viewModel,
- createTintedIconManager = createTintedIconManager,
- statusBarIconController = statusBarIconController,
useExpandedFormat = false,
- highlightable = true,
modifier = Modifier.padding(end = 6.dp).weight(1f, fill = false),
+ chipHighlight = chipHighlight,
)
BatteryIcon(
- viewModel = viewModel,
- createBatteryMeterViewController = createBatteryMeterViewController,
+ createBatteryMeterViewController =
+ viewModel.createBatteryMeterViewController,
useExpandedFormat = false,
- highlightable = true,
+ chipHighlight = chipHighlight,
)
}
if (isPrivacyChipVisible) {
@@ -391,13 +393,7 @@ fun ContentScope.OverlayShadeHeader(
/** The header that appears at the top of the Quick Settings shade overlay. */
@Composable
-fun ContentScope.QuickSettingsOverlayHeader(
- viewModelFactory: ShadeHeaderViewModel.Factory,
- createBatteryMeterViewController: (ViewGroup, StatusBarLocation) -> BatteryMeterViewController,
- modifier: Modifier = Modifier,
-) {
- val viewModel = rememberViewModel("QuickSettingsOverlayHeader") { viewModelFactory.create() }
-
+fun QuickSettingsOverlayHeader(viewModel: ShadeHeaderViewModel, modifier: Modifier = Modifier) {
Row(
horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically,
@@ -405,8 +401,7 @@ fun ContentScope.QuickSettingsOverlayHeader(
) {
ShadeCarrierGroup(viewModel = viewModel)
BatteryIcon(
- viewModel = viewModel,
- createBatteryMeterViewController = createBatteryMeterViewController,
+ createBatteryMeterViewController = viewModel.createBatteryMeterViewController,
useExpandedFormat = true,
)
}
@@ -468,11 +463,7 @@ private fun CutoutAwareShadeHeader(
}
@Composable
-private fun ContentScope.Clock(
- scale: Float,
- viewModel: ShadeHeaderViewModel,
- modifier: Modifier = Modifier,
-) {
+private fun ContentScope.Clock(scale: Float, onClick: () -> Unit, modifier: Modifier = Modifier) {
val layoutDirection = LocalLayoutDirection.current
Element(key = ShadeHeader.Elements.Clock, modifier = modifier) {
@@ -500,18 +491,17 @@ private fun ContentScope.Clock(
0.5f,
)
}
- .clickable { viewModel.onClockClicked() },
+ .clickable { onClick() },
)
}
}
@Composable
private fun BatteryIcon(
- viewModel: ShadeHeaderViewModel,
createBatteryMeterViewController: (ViewGroup, StatusBarLocation) -> BatteryMeterViewController,
useExpandedFormat: Boolean,
- highlightable: Boolean = false,
modifier: Modifier = Modifier,
+ chipHighlight: HeaderChipHighlight = HeaderChipHighlight.None,
) {
val localContext = LocalContext.current
val themedContext =
@@ -521,8 +511,6 @@ private fun BatteryIcon(
val inverseColor =
Utils.getColorAttrDefaultColor(themedContext, android.R.attr.textColorPrimaryInverse)
- val isHighlighted = viewModel.highlightQuickSettingsIcons
-
AndroidView(
factory = { context ->
val batteryIcon = BatteryMeterView(context, null)
@@ -544,18 +532,12 @@ private fun BatteryIcon(
// TODO(b/298525212): use MODE_ESTIMATE in collapsed view when the screen
// has no center cutout. See [QsBatteryModeController.getBatteryMode]
batteryIcon.setPercentShowMode(
- if (useExpandedFormat) {
- BatteryMeterView.MODE_ESTIMATE
- } else {
- BatteryMeterView.MODE_ON
- }
+ if (useExpandedFormat) BatteryMeterView.MODE_ESTIMATE else BatteryMeterView.MODE_ON
)
- if (highlightable) {
- if (isHighlighted) {
- batteryIcon.updateColors(primaryColor, inverseColor, inverseColor)
- } else {
- batteryIcon.updateColors(primaryColor, inverseColor, primaryColor)
- }
+ if (chipHighlight is HeaderChipHighlight.Strong) {
+ batteryIcon.updateColors(primaryColor, inverseColor, inverseColor)
+ } else if (chipHighlight is HeaderChipHighlight.Weak) {
+ batteryIcon.updateColors(primaryColor, inverseColor, primaryColor)
}
},
modifier = modifier,
@@ -590,14 +572,12 @@ private fun ShadeCarrierGroup(viewModel: ShadeHeaderViewModel, modifier: Modifie
@Composable
private fun NotificationIcons(
- viewModel: ShadeHeaderViewModel,
+ chipHighlight: HeaderChipHighlight,
notificationIconContainerStatusBarViewBinder: NotificationIconContainerStatusBarViewBinder,
modifier: Modifier = Modifier,
) {
val scope = rememberCoroutineScope()
- val isHighlighted = viewModel.highlightNotificationIcons
-
AndroidView(
factory = { context ->
NotificationIconContainer(context, null).also { view ->
@@ -610,7 +590,7 @@ private fun NotificationIcons(
}
}
},
- update = { it.setUseInverseOverrideIconColor(isHighlighted) },
+ update = { it.setUseInverseOverrideIconColor(chipHighlight is HeaderChipHighlight.Strong) },
modifier = modifier,
)
}
@@ -618,11 +598,9 @@ private fun NotificationIcons(
@Composable
private fun ContentScope.StatusIcons(
viewModel: ShadeHeaderViewModel,
- createTintedIconManager: (ViewGroup, StatusBarLocation) -> TintedIconManager,
- statusBarIconController: StatusBarIconController,
useExpandedFormat: Boolean,
- highlightable: Boolean = false,
modifier: Modifier = Modifier,
+ chipHighlight: HeaderChipHighlight = HeaderChipHighlight.None,
) {
val localContext = LocalContext.current
val themedContext =
@@ -632,8 +610,6 @@ private fun ContentScope.StatusIcons(
val inverseColor =
Utils.getColorAttrDefaultColor(themedContext, android.R.attr.textColorPrimaryInverse)
- val isHighlighted = viewModel.highlightQuickSettingsIcons
-
val carrierIconSlots =
listOf(stringResource(id = com.android.internal.R.string.status_bar_mobile))
val cameraSlot = stringResource(id = com.android.internal.R.string.status_bar_camera)
@@ -648,12 +624,14 @@ private fun ContentScope.StatusIcons(
viewModel.isLocationIndicationEnabled.collectAsStateWithLifecycle()
val iconContainer = remember { StatusIconContainer(themedContext, null) }
- val iconManager = remember { createTintedIconManager(iconContainer, StatusBarLocation.QS) }
+ val iconManager = remember {
+ viewModel.createTintedIconManager(iconContainer, StatusBarLocation.QS)
+ }
AndroidView(
factory = { context ->
iconManager.setTint(primaryColor, inverseColor)
- statusBarIconController.addIconGroup(iconManager)
+ viewModel.statusBarIconController.addIconGroup(iconManager)
iconContainer
},
@@ -686,12 +664,10 @@ private fun ContentScope.StatusIcons(
iconContainer.removeIgnoredSlot(locationSlot)
}
- if (highlightable) {
- if (isHighlighted) {
- iconManager.setTint(inverseColor, primaryColor)
- } else {
- iconManager.setTint(primaryColor, inverseColor)
- }
+ if (chipHighlight is HeaderChipHighlight.Strong) {
+ iconManager.setTint(inverseColor, primaryColor)
+ } else if (chipHighlight is HeaderChipHighlight.Weak) {
+ iconManager.setTint(primaryColor, inverseColor)
}
},
modifier = modifier,
@@ -700,15 +676,12 @@ private fun ContentScope.StatusIcons(
@Composable
private fun NotificationIconChip(
- viewModel: ShadeHeaderViewModel,
+ chipHighlight: HeaderChipHighlight,
+ onClick: () -> Unit,
modifier: Modifier = Modifier,
content: @Composable RowScope.() -> Unit,
) {
val interactionSource = remember { MutableInteractionSource() }
- val backgroundColor =
- if (viewModel.highlightNotificationIcons) MaterialTheme.colorScheme.chipHighlighted
- else MaterialTheme.colorScheme.chipBackground
-
Box(modifier = modifier) {
Row(
modifier =
@@ -716,16 +689,15 @@ private fun NotificationIconChip(
.clickable(
interactionSource = interactionSource,
indication = null,
- onClick = { viewModel.onNotificationIconChipClicked() },
+ onClick = { onClick() },
)
- .thenIf(DualShade.isEnabled) {
- Modifier.graphicsLayer {
- shape = RoundedCornerShape(25.dp)
- clip = true
- }
- .background(backgroundColor)
- .padding(horizontal = 8.dp, vertical = 4.dp)
- }
+ .clip(RoundedCornerShape(25.dp))
+ .background(
+ if (chipHighlight is HeaderChipHighlight.Strong)
+ MaterialTheme.colorScheme.chipHighlighted
+ else MaterialTheme.colorScheme.chipBackground
+ )
+ .padding(horizontal = 8.dp, vertical = 4.dp)
) {
content()
}
@@ -734,10 +706,9 @@ private fun NotificationIconChip(
@Composable
private fun SystemIconChip(
- viewModel: ShadeHeaderViewModel,
- isClickable: Boolean = false,
- showBackground: Boolean = false,
modifier: Modifier = Modifier,
+ chipHighlight: HeaderChipHighlight = HeaderChipHighlight.None,
+ onClick: (() -> Unit)? = null,
content: @Composable RowScope.() -> Unit,
) {
val interactionSource = remember { MutableInteractionSource() }
@@ -746,14 +717,14 @@ private fun SystemIconChip(
Modifier.clip(RoundedCornerShape(CollapsedHeight / 4))
.background(MaterialTheme.colorScheme.onScrimDim)
val backgroundColor =
- if (viewModel.highlightQuickSettingsIcons) MaterialTheme.colorScheme.chipHighlighted
+ if (chipHighlight is HeaderChipHighlight.Strong) MaterialTheme.colorScheme.chipHighlighted
else MaterialTheme.colorScheme.chipBackground
Row(
verticalAlignment = Alignment.CenterVertically,
modifier =
modifier
- .thenIf(showBackground) {
+ .thenIf(chipHighlight !is HeaderChipHighlight.None) {
Modifier.graphicsLayer {
shape = RoundedCornerShape(25.dp)
clip = true
@@ -761,11 +732,11 @@ private fun SystemIconChip(
.background(backgroundColor)
.padding(horizontal = 8.dp, vertical = 4.dp)
}
- .thenIf(isClickable) {
+ .thenIf(onClick != null) {
Modifier.clickable(
interactionSource = interactionSource,
indication = null,
- onClick = { viewModel.onSystemIconChipClicked() },
+ onClick = { onClick?.invoke() },
)
}
.thenIf(isHovered) { hoverModifier },
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeScene.kt b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeScene.kt
index f829a0d6facf..5040490da8f6 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeScene.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeScene.kt
@@ -101,6 +101,7 @@ import com.android.systemui.scene.session.ui.composable.SaveableSession
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.ui.composable.Scene
import com.android.systemui.shade.shared.model.ShadeMode
+import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel
import com.android.systemui.shade.ui.viewmodel.ShadeSceneContentViewModel
import com.android.systemui.shade.ui.viewmodel.ShadeUserActionsViewModel
import com.android.systemui.statusbar.notification.stack.ui.view.NotificationScrollView
@@ -124,8 +125,6 @@ object Shade {
object Dimensions {
val HorizontalPadding = 16.dp
- val ScrimOverscrollLimit = 32.dp
- const val ScrimVisibilityThreshold = 5f
}
}
@@ -160,15 +159,22 @@ constructor(
override val userActions: Flow<Map<UserAction, UserActionResult>> = actionsViewModel.actions
@Composable
- override fun ContentScope.Content(modifier: Modifier) =
+ override fun ContentScope.Content(modifier: Modifier) {
+ val viewModel =
+ rememberViewModel("ShadeScene-viewModel") { contentViewModelFactory.create() }
+ val headerViewModel =
+ rememberViewModel("ShadeScene-headerViewModel") {
+ viewModel.shadeHeaderViewModelFactory.create()
+ }
+ val notificationsPlaceholderViewModel =
+ rememberViewModel("ShadeScene-notifPlaceholderViewModel") {
+ notificationsPlaceholderViewModelFactory.create()
+ }
ShadeScene(
notificationStackScrollView.get(),
- viewModel =
- rememberViewModel("ShadeScene-viewModel") { contentViewModelFactory.create() },
- notificationsPlaceholderViewModel =
- rememberViewModel("ShadeScene-notifPlaceholderViewModel") {
- notificationsPlaceholderViewModelFactory.create()
- },
+ viewModel = viewModel,
+ headerViewModel = headerViewModel,
+ notificationsPlaceholderViewModel = notificationsPlaceholderViewModel,
createTintedIconManager = tintedIconManagerFactory::create,
createBatteryMeterViewController = batteryMeterViewControllerFactory::create,
statusBarIconController = statusBarIconController,
@@ -180,6 +186,7 @@ constructor(
usingCollapsedLandscapeMedia =
Utils.useCollapsedMediaInLandscape(LocalContext.current.resources),
)
+ }
init {
qqsMediaHost.expansion = EXPANDED
@@ -196,6 +203,7 @@ constructor(
private fun ContentScope.ShadeScene(
notificationStackScrollView: NotificationScrollView,
viewModel: ShadeSceneContentViewModel,
+ headerViewModel: ShadeHeaderViewModel,
notificationsPlaceholderViewModel: NotificationsPlaceholderViewModel,
createTintedIconManager: (ViewGroup, StatusBarLocation) -> TintedIconManager,
createBatteryMeterViewController: (ViewGroup, StatusBarLocation) -> BatteryMeterViewController,
@@ -207,13 +215,13 @@ private fun ContentScope.ShadeScene(
shadeSession: SaveableSession,
usingCollapsedLandscapeMedia: Boolean,
) {
-
val shadeMode by viewModel.shadeMode.collectAsStateWithLifecycle()
when (shadeMode) {
is ShadeMode.Single ->
SingleShade(
notificationStackScrollView = notificationStackScrollView,
viewModel = viewModel,
+ headerViewModel = headerViewModel,
notificationsPlaceholderViewModel = notificationsPlaceholderViewModel,
createTintedIconManager = createTintedIconManager,
createBatteryMeterViewController = createBatteryMeterViewController,
@@ -228,10 +236,8 @@ private fun ContentScope.ShadeScene(
SplitShade(
notificationStackScrollView = notificationStackScrollView,
viewModel = viewModel,
+ headerViewModel = headerViewModel,
notificationsPlaceholderViewModel = notificationsPlaceholderViewModel,
- createTintedIconManager = createTintedIconManager,
- createBatteryMeterViewController = createBatteryMeterViewController,
- statusBarIconController = statusBarIconController,
mediaCarouselController = mediaCarouselController,
mediaHost = qsMediaHost,
modifier = modifier,
@@ -245,6 +251,7 @@ private fun ContentScope.ShadeScene(
private fun ContentScope.SingleShade(
notificationStackScrollView: NotificationScrollView,
viewModel: ShadeSceneContentViewModel,
+ headerViewModel: ShadeHeaderViewModel,
notificationsPlaceholderViewModel: NotificationsPlaceholderViewModel,
createTintedIconManager: (ViewGroup, StatusBarLocation) -> TintedIconManager,
createBatteryMeterViewController: (ViewGroup, StatusBarLocation) -> BatteryMeterViewController,
@@ -332,10 +339,7 @@ private fun ContentScope.SingleShade(
},
content = {
CollapsedShadeHeader(
- viewModelFactory = viewModel.shadeHeaderViewModelFactory,
- createTintedIconManager = createTintedIconManager,
- createBatteryMeterViewController = createBatteryMeterViewController,
- statusBarIconController = statusBarIconController,
+ viewModel = headerViewModel,
modifier = Modifier.layoutId(SingleShadeMeasurePolicy.LayoutId.ShadeHeader),
)
@@ -413,10 +417,8 @@ private fun ContentScope.SingleShade(
private fun ContentScope.SplitShade(
notificationStackScrollView: NotificationScrollView,
viewModel: ShadeSceneContentViewModel,
+ headerViewModel: ShadeHeaderViewModel,
notificationsPlaceholderViewModel: NotificationsPlaceholderViewModel,
- createTintedIconManager: (ViewGroup, StatusBarLocation) -> TintedIconManager,
- createBatteryMeterViewController: (ViewGroup, StatusBarLocation) -> BatteryMeterViewController,
- statusBarIconController: StatusBarIconController,
mediaCarouselController: MediaCarouselController,
mediaHost: MediaHost,
modifier: Modifier = Modifier,
@@ -509,10 +511,7 @@ private fun ContentScope.SplitShade(
Column(modifier = Modifier.fillMaxSize()) {
CollapsedShadeHeader(
- viewModelFactory = viewModel.shadeHeaderViewModelFactory,
- createTintedIconManager = createTintedIconManager,
- createBatteryMeterViewController = createBatteryMeterViewController,
- statusBarIconController = statusBarIconController,
+ viewModel = headerViewModel,
modifier =
Modifier.then(brightnessMirrorShowingModifier)
.padding(horizontal = { unfoldTranslationXForStartSide.roundToInt() }),
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/VariableDayDate.kt b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/VariableDayDate.kt
index 93eca86e15cf..64aada52626b 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/VariableDayDate.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/VariableDayDate.kt
@@ -5,17 +5,19 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.Layout
-import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.compose.theme.colorAttr
-import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel
+import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel.HeaderChipHighlight
@Composable
-fun VariableDayDate(viewModel: ShadeHeaderViewModel, modifier: Modifier = Modifier) {
- val longerText = viewModel.longerDateText.collectAsStateWithLifecycle()
- val shorterText = viewModel.shorterDateText.collectAsStateWithLifecycle()
-
+fun VariableDayDate(
+ longerDateText: String,
+ shorterDateText: String,
+ chipHighlight: HeaderChipHighlight,
+ modifier: Modifier = Modifier,
+) {
val textColor =
- if (viewModel.highlightNotificationIcons) colorAttr(android.R.attr.textColorPrimaryInverse)
+ if (chipHighlight is HeaderChipHighlight.Strong)
+ colorAttr(android.R.attr.textColorPrimaryInverse)
else colorAttr(android.R.attr.textColorPrimary)
Layout(
@@ -23,7 +25,7 @@ fun VariableDayDate(viewModel: ShadeHeaderViewModel, modifier: Modifier = Modifi
listOf(
{
Text(
- text = longerText.value,
+ text = longerDateText,
style = MaterialTheme.typography.bodyMedium,
color = textColor,
maxLines = 1,
@@ -31,7 +33,7 @@ fun VariableDayDate(viewModel: ShadeHeaderViewModel, modifier: Modifier = Modifi
},
{
Text(
- text = shorterText.value,
+ text = shorterDateText,
style = MaterialTheme.typography.bodyMedium,
color = textColor,
maxLines = 1,
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/mediaoutput/MediaOutputModule.kt b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/mediaoutput/MediaOutputModule.kt
index c73656eb1ec5..f1cc71bc59af 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/mediaoutput/MediaOutputModule.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/mediaoutput/MediaOutputModule.kt
@@ -16,9 +16,9 @@
package com.android.systemui.volume.panel.component.mediaoutput
-import com.android.systemui.volume.panel.component.mediaoutput.domain.MediaOutputAvailabilityCriteria
import com.android.systemui.volume.panel.component.mediaoutput.ui.composable.MediaOutputComponent
import com.android.systemui.volume.panel.component.shared.model.VolumePanelComponents
+import com.android.systemui.volume.panel.domain.AlwaysAvailableCriteria
import com.android.systemui.volume.panel.domain.ComponentAvailabilityCriteria
import com.android.systemui.volume.panel.shared.model.VolumePanelUiComponent
import dagger.Binds
@@ -39,6 +39,6 @@ interface MediaOutputModule {
@IntoMap
@StringKey(VolumePanelComponents.MEDIA_OUTPUT)
fun bindComponentAvailabilityCriteria(
- criteria: MediaOutputAvailabilityCriteria
+ criteria: AlwaysAvailableCriteria
): ComponentAvailabilityCriteria
}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/volume/ui/composable/VolumeSlider.kt b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/volume/ui/composable/VolumeSlider.kt
index 4e10ff689b19..b11c83c778f4 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/volume/ui/composable/VolumeSlider.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/volume/ui/composable/VolumeSlider.kt
@@ -67,6 +67,7 @@ import com.android.systemui.Flags
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.common.ui.compose.Icon
import com.android.systemui.compose.modifiers.sysuiResTag
+import com.android.systemui.haptics.slider.SliderHapticFeedbackFilter
import com.android.systemui.haptics.slider.compose.ui.SliderHapticsViewModel
import com.android.systemui.lifecycle.rememberViewModel
import com.android.systemui.res.R
@@ -104,7 +105,13 @@ fun VolumeSlider(
val value by valueState(state)
val interactionSource = remember { MutableInteractionSource() }
val hapticsViewModel: SliderHapticsViewModel? =
- setUpHapticsViewModel(value, state.valueRange, interactionSource, hapticsViewModelFactory)
+ setUpHapticsViewModel(
+ value,
+ state.valueRange,
+ state.hapticFilter,
+ interactionSource,
+ hapticsViewModelFactory,
+ )
Column(modifier = modifier.animateContentSize(), verticalArrangement = Arrangement.Top) {
Row(
@@ -220,7 +227,13 @@ private fun LegacyVolumeSlider(
val value by valueState(state)
val interactionSource = remember { MutableInteractionSource() }
val hapticsViewModel: SliderHapticsViewModel? =
- setUpHapticsViewModel(value, state.valueRange, interactionSource, hapticsViewModelFactory)
+ setUpHapticsViewModel(
+ value,
+ state.valueRange,
+ state.hapticFilter,
+ interactionSource,
+ hapticsViewModelFactory,
+ )
PlatformSlider(
modifier =
@@ -338,6 +351,7 @@ private fun SliderIcon(
fun setUpHapticsViewModel(
value: Float,
valueRange: ClosedFloatingPointRange<Float>,
+ hapticFilter: SliderHapticFeedbackFilter,
interactionSource: MutableInteractionSource,
hapticsViewModelFactory: SliderHapticsViewModel.Factory?,
): SliderHapticsViewModel? {
@@ -347,7 +361,10 @@ fun setUpHapticsViewModel(
interactionSource,
valueRange,
Orientation.Horizontal,
- VolumeHapticsConfigsProvider.sliderHapticFeedbackConfig(valueRange),
+ VolumeHapticsConfigsProvider.sliderHapticFeedbackConfig(
+ valueRange,
+ hapticFilter,
+ ),
VolumeHapticsConfigsProvider.seekableSliderTrackerConfig,
)
}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/ui/composable/VerticalVolumePanelContent.kt b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/ui/composable/VerticalVolumePanelContent.kt
index bc3013239289..6349c1406a12 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/ui/composable/VerticalVolumePanelContent.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/ui/composable/VerticalVolumePanelContent.kt
@@ -37,17 +37,18 @@ fun VolumePanelComposeScope.VerticalVolumePanelContent(
layout: ComponentsLayout,
modifier: Modifier = Modifier,
) {
- Column(modifier = modifier, verticalArrangement = Arrangement.spacedBy(20.dp)) {
+ Column(
+ modifier = modifier.verticalScroll(rememberScrollState()),
+ verticalArrangement = Arrangement.spacedBy(20.dp),
+ ) {
for (component in layout.headerComponents) {
AnimatedVisibility(component.isVisible) {
with(component.component as ComposeVolumePanelUiComponent) { Content(Modifier) }
}
}
- Column(Modifier.verticalScroll(rememberScrollState())) {
- for (component in layout.contentComponents) {
- AnimatedVisibility(component.isVisible) {
- with(component.component as ComposeVolumePanelUiComponent) { Content(Modifier) }
- }
+ for (component in layout.contentComponents) {
+ AnimatedVisibility(component.isVisible) {
+ with(component.component as ComposeVolumePanelUiComponent) { Content(Modifier) }
}
}
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt
index 70ff47baa7a9..1360611ed814 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt
@@ -458,10 +458,6 @@ internal class Swipes(val upOrLeft: Swipe.Resolved, val downOrRight: Swipe.Resol
* @return The best matching [UserActionResult], or `null` if no match is found.
*/
private fun Content.findActionResultBestMatch(swipe: Swipe.Resolved): UserActionResult? {
- if (!areSwipesAllowed()) {
- return null
- }
-
var bestPoints = Int.MIN_VALUE
var bestMatch: UserActionResult? = null
userActions.forEach { (actionSwipe, actionResult) ->
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Element.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Element.kt
index a5dba0f64583..907b5bc2143a 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Element.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Element.kt
@@ -285,7 +285,9 @@ internal class ElementNode(
val elementState = Element.State(contents)
element.stateByContent[content.key] = elementState
- layoutImpl.ancestors.fastForEach { element.stateByContent[it.inContent] = elementState }
+ layoutImpl.ancestors.fastForEach {
+ element.stateByContent.putIfAbsent(it.inContent, elementState)
+ }
}
}
@@ -402,6 +404,7 @@ internal class ElementNode(
doNotPlace(measurable, constraints)
}
}
+ syncAncestorElementState()
val transition = elementState as? TransitionState.Transition
@@ -539,6 +542,75 @@ internal class ElementNode(
}
/**
+ * This method makes sure that the ancestor element state is *roughly* in sync. Assume we have
+ * the following nested scenes:
+ * ```
+ * / \
+ * P1 P2
+ * / \
+ * C1 C2
+ * ```
+ *
+ * We write the state of the shared element into its parent P1 even though P1 does not contain
+ * the element directly but it's part of its NestedSTL instead. This value is used to
+ * interpolate transitions on higher levels, e.g. between P1 and P2. Technically the best
+ * solution would be to always write the fully interpolated state into P1 but because this
+ * interferes with `computeValue` computations of other transitions this solution requires more
+ * sophistication and additional invocations of `computeValue`. We might want to aim for such a
+ * solution in the future when we allocate resources to that feature. For now, we only roughly
+ * set the state of P1 to either C1 or C2 based on heuristics.
+ *
+ * If we assign the P1 state just on attach/detach of a scene like we do for C1 and C2, this
+ * leads to problems where P1 can either become stale or is erased. This leads to situations
+ * where a shared element is not animated anymore.
+ *
+ * With this solution we track the transition state of the local transition at all times and set
+ * P1 based on the currentScene or overlay. In certain sequences of transition this may create
+ * jump cuts of a shared element mainly because of two reasons:
+ *
+ * a) P1 state is modified during a transition of P1 and X. Due to the new value it may jump cut
+ * when the interruption system is not triggered correctly. b) A dominant parent transition ends
+ * (P1 - X) but a local transition is still running, resulting in a different state of the
+ * element.
+ *
+ * Both issues can be addressed by interpolating P1 in the future.
+ */
+ private fun syncAncestorElementState() {
+ // every nested STL syncs only the level above it
+ layoutImpl.ancestors.lastOrNull()?.also { ancestor ->
+ val localTransition =
+ localElementState(
+ currentTransitionStates.last(),
+ isInContent = { it in element.stateByContent },
+ )
+ when (localTransition) {
+ is TransitionState.Idle ->
+ assignState(ancestor.inContent, localTransition.currentScene)
+ is TransitionState.Transition.ChangeScene ->
+ assignState(ancestor.inContent, localTransition.currentScene)
+ is TransitionState.Transition.ReplaceOverlay ->
+ assignState(ancestor.inContent, localTransition.effectivelyShownOverlay)
+ is TransitionState.Transition.ShowOrHideOverlay ->
+ if (localTransition.isEffectivelyShown) {
+ assignState(ancestor.inContent, localTransition.overlay)
+ } else {
+ assignState(ancestor.inContent, localTransition.fromOrToScene)
+ }
+ null -> {}
+ }
+ }
+ }
+
+ private fun assignState(toContent: ContentKey, fromContent: ContentKey) {
+ val fromState = element.stateByContent[fromContent]
+ if (fromState != null) {
+ element.stateByContent[toContent] = fromState
+ } else {
+ element.stateByContent.remove(toContent)
+ }
+ }
+
+ /**
* Recursively clear the last placement values on this node and all descendants ElementNodes.
* This should be called when this node is not placed anymore, so that we correctly clear values
* for the descendants for which approachMeasure() won't be called.
@@ -661,22 +733,31 @@ internal inline fun elementState(
}
}
} else {
- // the last state of the list, is the state of the local STL
- val lastState = states.last()
- if (lastState is TransitionState.Idle) {
- check(states.size == 1)
- return lastState
- }
+ return localElementState(states, isInContent)
+ }
+ }
+ return null
+}
- // Find the last transition with a content that contains the element.
- states.fastForEachReversed { state ->
- val transition = state as TransitionState.Transition
- if (isInContent(transition.fromContent) || isInContent(transition.toContent)) {
- return transition
- }
- }
+private inline fun localElementState(
+ states: List<TransitionState>,
+ isInContent: (ContentKey) -> Boolean,
+): TransitionState? {
+ // the last state of the list is the state of the local STL
+ val lastState = states.last()
+ if (lastState is TransitionState.Idle) {
+ check(states.size == 1)
+ return lastState
+ }
+
+ // Find the last transition with a content that contains the element.
+ states.fastForEachReversed { state ->
+ val transition = state as TransitionState.Transition
+ if (isInContent(transition.fromContent) || isInContent(transition.toContent)) {
+ return transition
}
}
+
// We are running a transition where both from and to don't contain the element. The element
// may still be rendered as e.g. it can be part of a idle scene where two overlays are currently
// transitioning above it.
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SwipeToScene.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SwipeToScene.kt
index 19f707df91e0..e036114ce358 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SwipeToScene.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SwipeToScene.kt
@@ -27,16 +27,19 @@ import com.android.compose.gesture.nestedDraggable
*/
@Stable
internal fun Modifier.swipeToScene(draggableHandler: DraggableHandler): Modifier {
+ val contentForSwipes = draggableHandler.contentForSwipes()
+ val enabled = draggableHandler.enabled(contentForSwipes)
return this.nestedDraggable(
draggable = draggableHandler,
orientation = draggableHandler.orientation,
overscrollEffect = draggableHandler.overscrollEffect,
- enabled = draggableHandler.enabled(),
+ enabled = enabled,
+ nestedDragsEnabled = enabled && contentForSwipes.areNestedSwipesAllowed(),
)
}
-internal fun DraggableHandler.enabled(): Boolean {
- return isDrivingTransition || contentForSwipes().shouldEnableSwipes(orientation)
+internal fun DraggableHandler.enabled(contentForSwipes: Content = contentForSwipes()): Boolean {
+ return isDrivingTransition || contentForSwipes.shouldEnableSwipes(orientation)
}
private fun DraggableHandler.contentForSwipes(): Content {
@@ -45,7 +48,7 @@ private fun DraggableHandler.contentForSwipes(): Content {
/** Whether swipe should be enabled in the given [orientation]. */
private fun Content.shouldEnableSwipes(orientation: Orientation): Boolean {
- if (userActions.isEmpty() || !areSwipesAllowed()) {
+ if (userActions.isEmpty()) {
return false
}
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/Content.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/Content.kt
index b7daaf4075ed..95d6440d585e 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/Content.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/Content.kt
@@ -179,7 +179,7 @@ internal sealed class Content(
}
}
- fun areSwipesAllowed(): Boolean = nestedScrollControlState.isOuterScrollAllowed
+ fun areNestedSwipesAllowed(): Boolean = nestedScrollControlState.isOuterScrollAllowed
fun maybeUpdateEffects(effectFactory: OverscrollFactory) {
if (effectFactory != lastFactory) {
diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ContentTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ContentTest.kt
index dc694269b7af..e09a04b618e4 100644
--- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ContentTest.kt
+++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ContentTest.kt
@@ -23,11 +23,14 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
+import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.platform.LocalViewConfiguration
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onRoot
import androidx.compose.ui.test.performTouchInput
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.compose.animation.scene.TestScenes.SceneA
+import com.android.compose.animation.scene.TestScenes.SceneB
import com.google.common.truth.Truth.assertThat
import org.junit.Rule
import org.junit.Test
@@ -56,14 +59,51 @@ class ContentTest {
}
val content = layoutImpl.content(SceneA)
- assertThat(content.areSwipesAllowed()).isTrue()
+ assertThat(content.areNestedSwipesAllowed()).isTrue()
rule.onRoot().performTouchInput {
down(topLeft)
moveBy(bottomLeft)
}
- assertThat(content.areSwipesAllowed()).isFalse()
+ assertThat(content.areNestedSwipesAllowed()).isFalse()
rule.onRoot().performTouchInput { up() }
- assertThat(content.areSwipesAllowed()).isTrue()
+ assertThat(content.areNestedSwipesAllowed()).isTrue()
+ }
+
+ @Test
+ fun disableSwipesWhenScrolling_outerDragDisabled() {
+ val state = rule.runOnUiThread { MutableSceneTransitionLayoutStateForTests(SceneA) }
+ var consumeScrolls = true
+ var touchSlop = 0f
+
+ rule.setContent {
+ touchSlop = LocalViewConfiguration.current.touchSlop
+ SceneTransitionLayout(state) {
+ scene(SceneA, mapOf(Swipe.Down to SceneB)) {
+ Box(
+ Modifier.fillMaxSize()
+ .disableSwipesWhenScrolling()
+ .scrollable(
+ rememberScrollableState { if (consumeScrolls) it else 0f },
+ Orientation.Vertical,
+ )
+ )
+ }
+ scene(SceneB) { Box(Modifier.fillMaxSize()) }
+ }
+ }
+
+ // Draw down. The whole drag is consumed by the scrollable and the STL should still be idle.
+ rule.onRoot().performTouchInput {
+ down(center)
+ moveBy(Offset(0f, touchSlop + 10f))
+ }
+ assertThat(state.currentTransition).isNull()
+
+ // Continue dragging down but don't consume the scrolls. The STL should still be idle given
+ // that we use disableSwipesWhenScrolling().
+ consumeScrolls = false
+ rule.onRoot().performTouchInput { moveBy(Offset(0f, 10f)) }
+ assertThat(state.currentTransition).isNull()
}
}
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ClockRegistry.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ClockRegistry.kt
index 12b20a53df81..b59b4ab34c80 100644
--- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ClockRegistry.kt
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ClockRegistry.kt
@@ -145,7 +145,6 @@ open class ClockRegistry(
var isCurrentClock = false
var isClockListChanged = false
for (metadata in knownClocks) {
- isCurrentClock = isCurrentClock || currentClockId == metadata.clockId
val id = metadata.clockId
val info =
availableClocks.concurrentGetOrPut(id, ClockInfo(metadata, null, manager)) {
@@ -156,15 +155,17 @@ open class ClockRegistry(
if (manager != info.manager) {
logger.e({
"Clock Id conflict on attach: " +
- "$str1 is double registered by $str2 and $str3"
+ "$str1 is double registered by $str2 and $str3. " +
+ "Using $str2 since it was attached first."
}) {
str1 = id
- str2 = info.manager.toString()
+ str2 = info.manager?.toString() ?: info.provider?.toString()
str3 = manager.toString()
}
continue
}
+ isCurrentClock = isCurrentClock || currentClockId == metadata.clockId
info.provider = null
}
@@ -197,10 +198,11 @@ open class ClockRegistry(
if (manager != info.manager) {
logger.e({
"Clock Id conflict on load: " +
- "$str1 is double registered by $str2 and $str3"
+ "$str1 is double registered by $str2 and $str3. " +
+ "Using $str2 since it was attached first."
}) {
str1 = id
- str2 = info.manager.toString()
+ str2 = info.manager?.toString() ?: info.provider?.toString()
str3 = manager.toString()
}
manager.unloadPlugin()
@@ -227,10 +229,11 @@ open class ClockRegistry(
if (info?.manager != manager) {
logger.e({
"Clock Id conflict on unload: " +
- "$str1 is double registered by $str2 and $str3"
+ "$str1 is double registered by $str2 and $str3. " +
+ "Using $str2 since it was attached first."
}) {
str1 = id
- str2 = info?.manager.toString()
+ str2 = info?.manager?.toString() ?: info?.provider?.toString()
str3 = manager.toString()
}
continue
@@ -299,8 +302,7 @@ open class ClockRegistry(
Settings.Secure.LOCK_SCREEN_CUSTOM_CLOCK_FACE,
)
}
-
- ClockSettings.fromJson(JSONObject(json))
+ json?.let { ClockSettings.fromJson(JSONObject(it)) }
} catch (ex: Exception) {
logger.e("Failed to parse clock settings", ex)
null
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ComposedDigitalLayerController.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ComposedDigitalLayerController.kt
index 9fb60c75b046..f90552796e9f 100644
--- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ComposedDigitalLayerController.kt
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ComposedDigitalLayerController.kt
@@ -47,7 +47,7 @@ class ComposedDigitalLayerController(private val clockCtx: ClockContext) :
init {
fun createController(cfg: LayerConfig) {
- val controller = SimpleDigitalHandLayerController(clockCtx, cfg)
+ val controller = SimpleDigitalHandLayerController(clockCtx, cfg, isLargeClock = true)
view.addView(controller.view)
layerControllers.add(controller)
}
@@ -55,31 +55,20 @@ class ComposedDigitalLayerController(private val clockCtx: ClockContext) :
val layerCfg =
LayerConfig(
style = FontTextStyle(lineHeight = 147.25f),
+ timespec = DigitalTimespec.DIGIT_PAIR,
+ alignment = DigitalAlignment(HorizontalAlignment.CENTER, VerticalAlignment.CENTER),
aodStyle =
FontTextStyle(
transitionInterpolator = Interpolators.EMPHASIZED,
transitionDuration = 750,
),
- alignment =
- DigitalAlignment(HorizontalAlignment.CENTER, VerticalAlignment.BASELINE),
- // Placeholders
- timespec = DigitalTimespec.TIME_FULL_FORMAT,
+ // Placeholder
dateTimeFormat = "hh:mm",
)
- createController(
- layerCfg.copy(timespec = DigitalTimespec.FIRST_DIGIT, dateTimeFormat = "hh")
- )
- createController(
- layerCfg.copy(timespec = DigitalTimespec.SECOND_DIGIT, dateTimeFormat = "hh")
- )
- createController(
- layerCfg.copy(timespec = DigitalTimespec.FIRST_DIGIT, dateTimeFormat = "mm")
- )
- createController(
- layerCfg.copy(timespec = DigitalTimespec.SECOND_DIGIT, dateTimeFormat = "mm")
- )
+ createController(layerCfg.copy(dateTimeFormat = "hh"))
+ createController(layerCfg.copy(dateTimeFormat = "mm"))
}
private fun refreshTime() {
@@ -148,6 +137,10 @@ class ComposedDigitalLayerController(private val clockCtx: ClockContext) :
override fun onPositionUpdated(distance: Float, fraction: Float) {}
override fun onPickerCarouselSwiping(swipingFraction: Float) {}
+
+ override fun onFidgetTap(x: Float, y: Float) {
+ view.animateFidget(x, y)
+ }
}
override val faceEvents =
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/DefaultClockController.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/DefaultClockController.kt
index 74d595ce65e6..f24ad1c10c4a 100644
--- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/DefaultClockController.kt
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/DefaultClockController.kt
@@ -284,6 +284,8 @@ class DefaultClockController(
override fun onPositionUpdated(fromLeft: Int, direction: Int, fraction: Float) {}
override fun onPositionUpdated(distance: Float, fraction: Float) {}
+
+ override fun onFidgetTap(x: Float, y: Float) {}
}
inner class LargeClockAnimations(
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/DefaultClockProvider.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/DefaultClockProvider.kt
index 6cc281ace481..3fd796a9481a 100644
--- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/DefaultClockProvider.kt
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/DefaultClockProvider.kt
@@ -17,21 +17,21 @@ import android.content.Context
import android.content.res.Resources
import android.graphics.Typeface
import android.view.LayoutInflater
-import com.android.systemui.animation.GSFAxes
import com.android.systemui.customization.R
import com.android.systemui.log.core.MessageBuffer
import com.android.systemui.plugins.clocks.ClockController
-import com.android.systemui.plugins.clocks.ClockFontAxis
-import com.android.systemui.plugins.clocks.ClockFontAxisSetting
+import com.android.systemui.plugins.clocks.ClockFontAxis.Companion.merge
import com.android.systemui.plugins.clocks.ClockLogger
import com.android.systemui.plugins.clocks.ClockMessageBuffers
import com.android.systemui.plugins.clocks.ClockMetadata
import com.android.systemui.plugins.clocks.ClockPickerConfig
import com.android.systemui.plugins.clocks.ClockProvider
import com.android.systemui.plugins.clocks.ClockSettings
+import com.android.systemui.shared.clocks.FlexClockController.Companion.getDefaultAxes
private val TAG = DefaultClockProvider::class.simpleName
const val DEFAULT_CLOCK_ID = "DEFAULT"
+const val FLEX_CLOCK_ID = "DIGITAL_CLOCK_FLEX"
data class ClockContext(
val context: Context,
@@ -55,16 +55,20 @@ class DefaultClockProvider(
messageBuffers = buffers
}
- override fun getClocks(): List<ClockMetadata> = listOf(ClockMetadata(DEFAULT_CLOCK_ID))
+ override fun getClocks(): List<ClockMetadata> {
+ var clocks = listOf(ClockMetadata(DEFAULT_CLOCK_ID))
+ if (isClockReactiveVariantsEnabled) clocks += ClockMetadata(FLEX_CLOCK_ID)
+ return clocks
+ }
override fun createClock(settings: ClockSettings): ClockController {
- if (settings.clockId != DEFAULT_CLOCK_ID) {
+ if (getClocks().all { it.clockId != settings.clockId }) {
throw IllegalArgumentException("${settings.clockId} is unsupported by $TAG")
}
return if (isClockReactiveVariantsEnabled) {
val buffers = messageBuffers ?: ClockMessageBuffers(ClockLogger.DEFAULT_MESSAGE_BUFFER)
- val fontAxes = ClockFontAxis.merge(FlexClockController.FONT_AXES, settings.axes)
+ val fontAxes = getDefaultAxes(settings).merge(settings.axes)
val clockSettings = settings.copy(axes = fontAxes.map { it.toSetting() })
val typefaceCache =
TypefaceCache(buffers.infraMessageBuffer, NUM_CLOCK_FONT_ANIMATION_STEPS) {
@@ -86,15 +90,15 @@ class DefaultClockProvider(
}
override fun getClockPickerConfig(settings: ClockSettings): ClockPickerConfig {
- if (settings.clockId != DEFAULT_CLOCK_ID) {
+ if (getClocks().all { it.clockId != settings.clockId }) {
throw IllegalArgumentException("${settings.clockId} is unsupported by $TAG")
}
val fontAxes =
if (!isClockReactiveVariantsEnabled) listOf()
- else ClockFontAxis.merge(FlexClockController.FONT_AXES, settings.axes)
+ else getDefaultAxes(settings).merge(settings.axes)
return ClockPickerConfig(
- DEFAULT_CLOCK_ID,
+ settings.clockId ?: DEFAULT_CLOCK_ID,
resources.getString(R.string.clock_default_name),
resources.getString(R.string.clock_default_description),
resources.getDrawable(R.drawable.clock_default_thumbnail, null),
@@ -104,24 +108,9 @@ class DefaultClockProvider(
}
companion object {
- const val NUM_CLOCK_FONT_ANIMATION_STEPS = 30
-
- // TODO(b/364681643): Variations for retargetted DIGITAL_CLOCK_FLEX
- val LEGACY_FLEX_LS_VARIATION =
- listOf(
- ClockFontAxisSetting(GSFAxes.WEIGHT, 600f),
- ClockFontAxisSetting(GSFAxes.WIDTH, 100f),
- ClockFontAxisSetting(GSFAxes.ROUND, 100f),
- ClockFontAxisSetting(GSFAxes.SLANT, 0f),
- )
-
- val LEGACY_FLEX_AOD_VARIATION =
- listOf(
- ClockFontAxisSetting(GSFAxes.WEIGHT, 74f),
- ClockFontAxisSetting(GSFAxes.WIDTH, 43f),
- ClockFontAxisSetting(GSFAxes.ROUND, 100f),
- ClockFontAxisSetting(GSFAxes.SLANT, 0f),
- )
+ // 750ms @ 120hz -> 90 frames of animation
+ // In practice, 45 looks good enough
+ const val NUM_CLOCK_FONT_ANIMATION_STEPS = 45
val FLEX_TYPEFACE by lazy {
// TODO(b/364680873): Move constant to config_clockFontFamily when shipping
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockController.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockController.kt
index cc3769e0a568..004d1aa1fe93 100644
--- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockController.kt
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockController.kt
@@ -24,7 +24,9 @@ import com.android.systemui.plugins.clocks.ClockConfig
import com.android.systemui.plugins.clocks.ClockController
import com.android.systemui.plugins.clocks.ClockEvents
import com.android.systemui.plugins.clocks.ClockFontAxis
+import com.android.systemui.plugins.clocks.ClockFontAxis.Companion.merge
import com.android.systemui.plugins.clocks.ClockFontAxisSetting
+import com.android.systemui.plugins.clocks.ClockSettings
import com.android.systemui.plugins.clocks.WeatherData
import com.android.systemui.plugins.clocks.ZenData
import com.android.systemui.shared.clocks.view.FlexClockView
@@ -94,7 +96,7 @@ class FlexClockController(private val clockCtx: ClockContext) : ClockController
}
override fun onFontAxesChanged(axes: List<ClockFontAxisSetting>) {
- val fontAxes = ClockFontAxis.merge(FONT_AXES, axes).map { it.toSetting() }
+ val fontAxes = getDefaultAxes(clockCtx.settings).merge(axes).map { it.toSetting() }
smallClock.events.onFontAxesChanged(fontAxes)
largeClock.events.onFontAxesChanged(fontAxes)
}
@@ -120,7 +122,13 @@ class FlexClockController(private val clockCtx: ClockContext) : ClockController
override fun dump(pw: PrintWriter) {}
companion object {
- val FONT_AXES =
+ fun getDefaultAxes(settings: ClockSettings): List<ClockFontAxis> {
+ return if (settings.clockId == FLEX_CLOCK_ID) {
+ FONT_AXES.merge(LEGACY_FLEX_SETTINGS)
+ } else FONT_AXES
+ }
+
+ private val FONT_AXES =
listOf(
ClockFontAxis(
key = GSFAxes.WEIGHT,
@@ -135,7 +143,7 @@ class FlexClockController(private val clockCtx: ClockContext) : ClockController
key = GSFAxes.WIDTH,
type = AxisType.Float,
minValue = 25f,
- currentValue = 100f,
+ currentValue = 85f,
maxValue = 151f,
name = "Width",
description = "Glyph Width",
@@ -159,5 +167,13 @@ class FlexClockController(private val clockCtx: ClockContext) : ClockController
description = "Glyph Slant",
),
)
+
+ private val LEGACY_FLEX_SETTINGS =
+ listOf(
+ ClockFontAxisSetting(GSFAxes.WEIGHT, 600f),
+ ClockFontAxisSetting(GSFAxes.WIDTH, 100f),
+ ClockFontAxisSetting(GSFAxes.ROUND, 100f),
+ ClockFontAxisSetting(GSFAxes.SLANT, 0f),
+ )
}
}
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockFaceController.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockFaceController.kt
index e2bbe0fef3c0..b2dbd6552955 100644
--- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockFaceController.kt
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockFaceController.kt
@@ -37,6 +37,7 @@ import com.android.systemui.plugins.clocks.WeatherData
import com.android.systemui.plugins.clocks.ZenData
import com.android.systemui.shared.clocks.view.FlexClockView
import com.android.systemui.shared.clocks.view.HorizontalAlignment
+import com.android.systemui.shared.clocks.view.VerticalAlignment
import java.util.Locale
import java.util.TimeZone
import kotlin.math.max
@@ -59,7 +60,7 @@ class FlexClockFaceController(clockCtx: ClockContext, private val isLargeClock:
init {
layerController =
if (isLargeClock) ComposedDigitalLayerController(clockCtx)
- else SimpleDigitalHandLayerController(clockCtx, SMALL_LAYER_CONFIG)
+ else SimpleDigitalHandLayerController(clockCtx, SMALL_LAYER_CONFIG, isLargeClock)
layerController.view.layoutParams =
FrameLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT).apply { gravity = Gravity.CENTER }
@@ -147,21 +148,6 @@ class FlexClockFaceController(clockCtx: ClockContext, private val isLargeClock:
* keyguard_large_clock_top_margin from default clock
*/
override fun onTargetRegionChanged(targetRegion: Rect?) {
- // When a clock needs to be aligned with screen, like weather clock
- // it needs to offset back the translation of keyguard_large_clock_top_margin
- if (isLargeClock && (view as FlexClockView).isAlignedWithScreen()) {
- val topMargin = keyguardLargeClockTopMargin
- targetRegion?.let {
- val (_, yDiff) = computeLayoutDiff(view, it, isLargeClock)
- // In LS, we use yDiff to counter translate
- // the translation of KeyguardLargeClockTopMargin
- // With the targetRegion passed from picker,
- // we will have yDiff = 0, no translation is needed for weather clock
- if (yDiff.toInt() != 0) view.translationY = yDiff - topMargin / 2
- }
- return
- }
-
var maxWidth = 0f
var maxHeight = 0f
@@ -230,7 +216,7 @@ class FlexClockFaceController(clockCtx: ClockContext, private val isLargeClock:
}
override fun onPickerCarouselSwiping(swipingFraction: Float) {
- if (isLargeClock && !(view as FlexClockView).isAlignedWithScreen()) {
+ if (isLargeClock) {
view.translationY = keyguardLargeClockTopMargin / 2F * swipingFraction
}
layerController.animations.onPickerCarouselSwiping(swipingFraction)
@@ -244,18 +230,22 @@ class FlexClockFaceController(clockCtx: ClockContext, private val isLargeClock:
override fun onPositionUpdated(distance: Float, fraction: Float) {
layerController.animations.onPositionUpdated(distance, fraction)
- // TODO(b/378128811) port stepping animation
+ }
+
+ override fun onFidgetTap(x: Float, y: Float) {
+ layerController.animations.onFidgetTap(x, y)
}
}
companion object {
val SMALL_CLOCK_MAX_WDTH = 120f
+
val SMALL_LAYER_CONFIG =
LayerConfig(
timespec = DigitalTimespec.TIME_FULL_FORMAT,
style = FontTextStyle(fontSizeScale = 0.98f),
aodStyle = FontTextStyle(),
- alignment = DigitalAlignment(HorizontalAlignment.LEFT, null),
+ alignment = DigitalAlignment(HorizontalAlignment.LEFT, VerticalAlignment.CENTER),
dateTimeFormat = "h:mm",
)
}
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/SimpleDigitalHandLayerController.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/SimpleDigitalHandLayerController.kt
index 82fc35012dbc..a5adfa2a1ac6 100644
--- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/SimpleDigitalHandLayerController.kt
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/SimpleDigitalHandLayerController.kt
@@ -71,6 +71,7 @@ data class FontTextStyle(
enum class DigitalTimespec {
TIME_FULL_FORMAT,
+ DIGIT_PAIR,
FIRST_DIGIT,
SECOND_DIGIT,
}
@@ -78,8 +79,9 @@ enum class DigitalTimespec {
open class SimpleDigitalHandLayerController(
private val clockCtx: ClockContext,
private val layerCfg: LayerConfig,
+ isLargeClock: Boolean,
) : SimpleClockLayerController {
- override val view = SimpleDigitalClockTextView(clockCtx)
+ override val view = SimpleDigitalClockTextView(clockCtx, isLargeClock)
private val logger = Logger(clockCtx.messageBuffer, TAG)
val timespec = DigitalTimespecHandler(layerCfg.timespec, layerCfg.dateTimeFormat)
@@ -120,6 +122,28 @@ open class SimpleDigitalHandLayerController(
}
}
+ private fun applyLayout() {
+ // TODO: Remove NO-OP
+ if (view.layoutParams is RelativeLayout.LayoutParams) {
+ val lp = view.layoutParams as RelativeLayout.LayoutParams
+ lp.addRule(RelativeLayout.TEXT_ALIGNMENT_CENTER)
+ when (view.id) {
+ R.id.HOUR_DIGIT_PAIR -> {
+ lp.addRule(RelativeLayout.CENTER_VERTICAL)
+ lp.addRule(RelativeLayout.ALIGN_PARENT_START)
+ }
+ R.id.MINUTE_DIGIT_PAIR -> {
+ lp.addRule(RelativeLayout.CENTER_VERTICAL)
+ lp.addRule(RelativeLayout.END_OF, R.id.HOUR_DIGIT_PAIR)
+ }
+ else -> {
+ throw Exception("cannot apply two pairs layout to view ${view.id}")
+ }
+ }
+ view.layoutParams = lp
+ }
+ }
+
override val events =
object : ClockEvents {
override var isReactiveTouchInteractionEnabled = false
@@ -154,6 +178,7 @@ open class SimpleDigitalHandLayerController(
override val animations =
object : ClockAnimations {
override fun enter() {
+ applyLayout()
refreshTime()
}
@@ -169,6 +194,7 @@ open class SimpleDigitalHandLayerController(
}
override fun fold(fraction: Float) {
+ applyLayout()
refreshTime()
}
@@ -181,6 +207,10 @@ open class SimpleDigitalHandLayerController(
override fun onPositionUpdated(fromLeft: Int, direction: Int, fraction: Float) {}
override fun onPositionUpdated(distance: Float, fraction: Float) {}
+
+ override fun onFidgetTap(x: Float, y: Float) {
+ view.animateFidget(x, y)
+ }
}
override val faceEvents =
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/TimespecHandler.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/TimespecHandler.kt
index 37db783aba53..8b3b92921ee0 100644
--- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/TimespecHandler.kt
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/TimespecHandler.kt
@@ -106,19 +106,16 @@ class DigitalTimespecHandler(
)
}
- private fun getSingleDigit(): String {
- val isFirstDigit = timespec == DigitalTimespec.FIRST_DIGIT
+ private fun getSingleDigit(offset: Int): String {
val text = dateFormat.format(cal.time).toString()
- return text.substring(
- if (isFirstDigit) 0 else text.length - 1,
- if (isFirstDigit) text.length - 1 else text.length,
- )
+ return text.substring(offset, offset + 1)
}
fun getDigitString(): String {
return when (timespec) {
- DigitalTimespec.FIRST_DIGIT,
- DigitalTimespec.SECOND_DIGIT -> getSingleDigit()
+ DigitalTimespec.FIRST_DIGIT -> getSingleDigit(0)
+ DigitalTimespec.SECOND_DIGIT -> getSingleDigit(1)
+ DigitalTimespec.DIGIT_PAIR -> dateFormat.format(cal.time).toString()
DigitalTimespec.TIME_FULL_FORMAT -> dateFormat.format(cal.time).toString()
}
}
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/FlexClockView.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/FlexClockView.kt
index 55750b5e0925..a9f91e077651 100644
--- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/FlexClockView.kt
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/FlexClockView.kt
@@ -87,7 +87,7 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) {
protected fun calculateSize(widthMeasureSpec: Int, heightMeasureSpec: Int): Point? {
maxSingleDigitSize = Point(-1, -1)
- val bottomLocation: (textView: SimpleDigitalClockTextView) -> Int = { textView ->
+ val viewHeight: (textView: SimpleDigitalClockTextView) -> Int = { textView ->
if (isMonoVerticalNumericLineSpacing) {
maxSingleDigitSize.y
} else {
@@ -98,9 +98,15 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) {
digitalClockTextViewMap.forEach { (_, textView) ->
textView.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED)
maxSingleDigitSize.x = max(maxSingleDigitSize.x, textView.measuredWidth)
- maxSingleDigitSize.y = max(bottomLocation(textView), textView.measuredHeight)
+ maxSingleDigitSize.y = max(viewHeight(textView), textView.measuredHeight)
}
aodTranslate = Point(0, 0)
+ // TODO(b/364680879): Cleanup
+ /*
+ aodTranslate = Point(
+ (maxSingleDigitSize.x * AOD_HORIZONTAL_TRANSLATE_RATIO).toInt(),
+ (maxSingleDigitSize.y * AOD_VERTICAL_TRANSLATE_RATIO).toInt())
+ */
return Point(
((maxSingleDigitSize.x + abs(aodTranslate.x)) * 2),
((maxSingleDigitSize.y + abs(aodTranslate.y)) * 2),
@@ -112,6 +118,10 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) {
digitLeftTopMap[R.id.HOUR_SECOND_DIGIT] = Point(maxSingleDigitSize.x, 0)
digitLeftTopMap[R.id.MINUTE_FIRST_DIGIT] = Point(0, maxSingleDigitSize.y)
digitLeftTopMap[R.id.MINUTE_SECOND_DIGIT] = Point(maxSingleDigitSize)
+ digitLeftTopMap[R.id.HOUR_DIGIT_PAIR] = Point(maxSingleDigitSize.x / 2, 0)
+ // Add a small vertical buffer for the second digit pair
+ digitLeftTopMap[R.id.MINUTE_DIGIT_PAIR] =
+ Point(maxSingleDigitSize.x / 2, (maxSingleDigitSize.y * 1.05f).toInt())
digitLeftTopMap.forEach { (_, point) ->
point.x += abs(aodTranslate.x)
point.y += abs(aodTranslate.y)
@@ -179,9 +189,9 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) {
// save canvas location in anticipation of restoration later
canvas.save()
val xTranslateAmount =
- digitOffsets.getOrDefault(id, 0f) + digitLeftTopMap[id]!!.x.toFloat()
+ digitOffsets.getOrDefault(id, 0f) + (digitLeftTopMap[id]?.x?.toFloat() ?: 0f)
// move canvas to location that the textView would like
- canvas.translate(xTranslateAmount, digitLeftTopMap[id]!!.y.toFloat())
+ canvas.translate(xTranslateAmount, digitLeftTopMap[id]?.y?.toFloat() ?: 0f)
// draw the textView at the location of the canvas above
textView.draw(canvas)
// reset the canvas location back to 0 without drawing
@@ -189,8 +199,6 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) {
}
}
- fun isAlignedWithScreen(): Boolean = false
-
fun onLocaleChanged(locale: Locale) {
updateLocale(locale)
requestLayout()
@@ -273,6 +281,10 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) {
}
}
+ fun animateFidget(x: Float, y: Float) {
+ digitalClockTextViewMap.forEach { _, view -> view.animateFidget(x, y) }
+ }
+
private fun updateLocale(locale: Locale) {
isMonoVerticalNumericLineSpacing =
!NON_MONO_VERTICAL_NUMERIC_LINE_SPACING_LANGUAGES.any {
@@ -302,23 +314,17 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) {
clockMoveDirection: Int,
moveFraction: Float,
) {
+ // TODO(b/393577936): The step animation isn't correct with the two pairs approach
val isMovingToCenter = if (isLayoutRtl) clockMoveDirection < 0 else clockMoveDirection > 0
// The sign of moveAmountDeltaForDigit is already set here
// we can interpret (left - clockStartLeft) as (destinationPosition - originPosition)
// so we no longer need to multiply direct sign to moveAmountDeltaForDigit
val currentMoveAmount = left - clockStartLeft
- for (i in 0 until NUM_DIGITS) {
- val mapIndexToId =
- when (i) {
- 0 -> R.id.HOUR_FIRST_DIGIT
- 1 -> R.id.HOUR_SECOND_DIGIT
- 2 -> R.id.MINUTE_FIRST_DIGIT
- 3 -> R.id.MINUTE_SECOND_DIGIT
- else -> -1
- }
+ var index = 0
+ digitalClockTextViewMap.forEach { id, _ ->
val digitFraction =
getDigitFraction(
- digit = i,
+ digit = index++,
isMovingToCenter = isMovingToCenter,
fraction = moveFraction,
)
@@ -326,7 +332,7 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) {
val moveAmountForDigit = currentMoveAmount * digitFraction
var moveAmountDeltaForDigit = moveAmountForDigit - currentMoveAmount
if (isMovingToCenter && moveAmountForDigit < 0) moveAmountDeltaForDigit *= -1
- digitOffsets[mapIndexToId] = moveAmountDeltaForDigit
+ digitOffsets[id] = moveAmountDeltaForDigit
invalidate()
}
}
@@ -347,7 +353,8 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) {
/* rangeMin= */ 0.0f,
/* rangeMax= */ 1.0f,
/* valueMin= */ digitInitialDelay,
- /* valueMax= */ digitInitialDelay + AVAILABLE_ANIMATION_TIME,
+ /* valueMax= */ digitInitialDelay +
+ availableAnimationTime(digitalClockTextViewMap.size),
/* value= */ fraction,
)
)
@@ -357,12 +364,8 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) {
val AOD_TRANSITION_DURATION = 750L
val CHARGING_TRANSITION_DURATION = 300L
- // Calculate the positions of all of the digits...
- // Offset each digit by, say, 0.1
- // This means that each digit needs to move over a slice of "fractions", i.e. digit 0 should
- // move from 0.0 - 0.7, digit 1 from 0.1 - 0.8, digit 2 from 0.2 - 0.9, and digit 3
- // from 0.3 - 1.0.
- private const val NUM_DIGITS = 4
+ val AOD_HORIZONTAL_TRANSLATE_RATIO = -0.15F
+ val AOD_VERTICAL_TRANSLATE_RATIO = 0.075F
// Delays. Each digit's animation should have a slight delay, so we get a nice
// "stepping" effect. When moving right, the second digit of the hour should move first.
@@ -387,7 +390,9 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) {
// Total available transition time for each digit, taking into account the step. If step is
// 0.1, then digit 0 would animate over 0.0 - 0.7, making availableTime 0.7.
- private const val AVAILABLE_ANIMATION_TIME = 1.0f - MOVE_DIGIT_STEP * (NUM_DIGITS - 1)
+ private fun availableAnimationTime(numDigits: Int): Float {
+ return 1.0f - MOVE_DIGIT_STEP * (numDigits.toFloat() - 1)
+ }
// Add language tags below that do not have vertically mono spaced numerals
private val NON_MONO_VERTICAL_NUMERIC_LINE_SPACING_LANGUAGES =
@@ -415,6 +420,14 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) {
outPoint.x *= 1
outPoint.y *= 1
}
+ R.id.HOUR_DIGIT_PAIR -> {
+ outPoint.x *= -1
+ outPoint.y *= -1
+ }
+ R.id.MINUTE_DIGIT_PAIR -> {
+ outPoint.x *= -1
+ outPoint.y *= 1
+ }
}
return outPoint
}
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt
index db39162205b2..c6d31a58bc7d 100644
--- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt
@@ -38,10 +38,13 @@ import com.android.systemui.animation.GSFAxes
import com.android.systemui.animation.TextAnimator
import com.android.systemui.customization.R
import com.android.systemui.plugins.clocks.ClockFontAxisSetting
+import com.android.systemui.plugins.clocks.ClockFontAxisSetting.Companion.replace
+import com.android.systemui.plugins.clocks.ClockFontAxisSetting.Companion.toFVar
import com.android.systemui.plugins.clocks.ClockLogger
import com.android.systemui.shared.clocks.ClockContext
import com.android.systemui.shared.clocks.DigitTranslateAnimator
import com.android.systemui.shared.clocks.DimensionParser
+import com.android.systemui.shared.clocks.FLEX_CLOCK_ID
import com.android.systemui.shared.clocks.FontTextStyle
import java.lang.Thread
import kotlin.math.max
@@ -63,14 +66,32 @@ enum class HorizontalAlignment {
}
@SuppressLint("AppCompatCustomView")
-open class SimpleDigitalClockTextView(clockCtx: ClockContext, attrs: AttributeSet? = null) :
- TextView(clockCtx.context, attrs) {
+open class SimpleDigitalClockTextView(
+ clockCtx: ClockContext,
+ isLargeClock: Boolean,
+ attrs: AttributeSet? = null,
+) : TextView(clockCtx.context, attrs) {
val lockScreenPaint = TextPaint()
lateinit var textStyle: FontTextStyle
lateinit var aodStyle: FontTextStyle
- private var lsFontVariation = ClockFontAxisSetting.toFVar(DEFAULT_LS_VARIATION)
- private var aodFontVariation = ClockFontAxisSetting.toFVar(DEFAULT_AOD_VARIATION)
+ private val isLegacyFlex = clockCtx.settings.clockId == FLEX_CLOCK_ID
+ private val fixedAodAxes =
+ when {
+ !isLegacyFlex -> listOf(AOD_WEIGHT_AXIS, WIDTH_AXIS)
+ isLargeClock -> listOf(FLEX_AOD_LARGE_WEIGHT_AXIS, FLEX_AOD_WIDTH_AXIS)
+ else -> listOf(FLEX_AOD_SMALL_WEIGHT_AXIS, FLEX_AOD_WIDTH_AXIS)
+ }
+
+ private var lsFontVariation =
+ if (!isLegacyFlex) listOf(LS_WEIGHT_AXIS, WIDTH_AXIS, ROUND_AXIS, SLANT_AXIS).toFVar()
+ else listOf(FLEX_LS_WEIGHT_AXIS, FLEX_LS_WIDTH_AXIS, FLEX_ROUND_AXIS, SLANT_AXIS).toFVar()
+
+ private var aodFontVariation = run {
+ val roundAxis = if (!isLegacyFlex) ROUND_AXIS else FLEX_ROUND_AXIS
+ (fixedAodAxes + listOf(roundAxis, SLANT_AXIS)).toFVar()
+ }
+
private val parser = DimensionParser(clockCtx.context)
var maxSingleDigitHeight = -1
var maxSingleDigitWidth = -1
@@ -129,8 +150,14 @@ open class SimpleDigitalClockTextView(clockCtx: ClockContext, attrs: AttributeSe
invalidate()
}
- fun updateAxes(axes: List<ClockFontAxisSetting>) {
- lsFontVariation = ClockFontAxisSetting.toFVar(axes + OPTICAL_SIZE_AXIS)
+ fun updateAxes(lsAxes: List<ClockFontAxisSetting>) {
+ lsFontVariation = lsAxes.toFVar()
+ aodFontVariation = lsAxes.replace(fixedAodAxes).toFVar()
+ logger.i({ "updateAxes(LS = $str1, AOD = $str2)" }) {
+ str1 = lsFontVariation
+ str2 = aodFontVariation
+ }
+
lockScreenPaint.typeface = typefaceCache.getTypefaceForVariant(lsFontVariation)
typeface = lockScreenPaint.typeface
@@ -277,6 +304,11 @@ open class SimpleDigitalClockTextView(clockCtx: ClockContext, attrs: AttributeSe
updateTextBoundsForTextAnimator()
}
+ fun animateFidget(x: Float, y: Float) {
+ // TODO(b/374306512): Implement Fidget Animation
+ logger.animateFidget(x, y)
+ }
+
fun refreshText() {
lockScreenPaint.getTextBounds(text, 0, text.length, textBounds)
if (this::textAnimator.isInitialized) {
@@ -287,6 +319,7 @@ open class SimpleDigitalClockTextView(clockCtx: ClockContext, attrs: AttributeSe
targetTextBounds,
)
}
+
if (layout == null) {
requestLayout()
} else {
@@ -501,22 +534,18 @@ open class SimpleDigitalClockTextView(clockCtx: ClockContext, attrs: AttributeSe
Paint().also { it.xfermode = PorterDuffXfermode(PorterDuff.Mode.DST_OUT) }
val AOD_COLOR = Color.WHITE
- val OPTICAL_SIZE_AXIS = ClockFontAxisSetting(GSFAxes.OPTICAL_SIZE, 144f)
- val DEFAULT_LS_VARIATION =
- listOf(
- OPTICAL_SIZE_AXIS,
- ClockFontAxisSetting(GSFAxes.WEIGHT, 400f),
- ClockFontAxisSetting(GSFAxes.WIDTH, 100f),
- ClockFontAxisSetting(GSFAxes.ROUND, 0f),
- ClockFontAxisSetting(GSFAxes.SLANT, 0f),
- )
- val DEFAULT_AOD_VARIATION =
- listOf(
- OPTICAL_SIZE_AXIS,
- ClockFontAxisSetting(GSFAxes.WEIGHT, 200f),
- ClockFontAxisSetting(GSFAxes.WIDTH, 100f),
- ClockFontAxisSetting(GSFAxes.ROUND, 0f),
- ClockFontAxisSetting(GSFAxes.SLANT, 0f),
- )
+ val LS_WEIGHT_AXIS = ClockFontAxisSetting(GSFAxes.WEIGHT, 400f)
+ val AOD_WEIGHT_AXIS = ClockFontAxisSetting(GSFAxes.WEIGHT, 200f)
+ val WIDTH_AXIS = ClockFontAxisSetting(GSFAxes.WIDTH, 85f)
+ val ROUND_AXIS = ClockFontAxisSetting(GSFAxes.ROUND, 0f)
+ val SLANT_AXIS = ClockFontAxisSetting(GSFAxes.SLANT, 0f)
+
+ // Axes for Legacy version of the Flex Clock
+ val FLEX_LS_WEIGHT_AXIS = ClockFontAxisSetting(GSFAxes.WEIGHT, 600f)
+ val FLEX_AOD_LARGE_WEIGHT_AXIS = ClockFontAxisSetting(GSFAxes.WEIGHT, 74f)
+ val FLEX_AOD_SMALL_WEIGHT_AXIS = ClockFontAxisSetting(GSFAxes.WEIGHT, 133f)
+ val FLEX_LS_WIDTH_AXIS = ClockFontAxisSetting(GSFAxes.WIDTH, 100f)
+ val FLEX_AOD_WIDTH_AXIS = ClockFontAxisSetting(GSFAxes.WIDTH, 43f)
+ val FLEX_ROUND_AXIS = ClockFontAxisSetting(GSFAxes.ROUND, 100f)
}
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardDisplayManagerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardDisplayManagerTest.kt
index cea1e9600741..3be92280a983 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardDisplayManagerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardDisplayManagerTest.kt
@@ -31,7 +31,6 @@ import com.android.systemui.settings.FakeDisplayTracker
import com.android.systemui.shade.data.repository.FakeShadeDisplayRepository
import com.android.systemui.statusbar.policy.KeyguardStateController
import java.util.concurrent.Executor
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.advanceUntilIdle
@@ -52,7 +51,6 @@ import org.mockito.kotlin.whenever
@SmallTest
@RunWith(AndroidJUnit4::class)
@RunWithLooper
-@OptIn(ExperimentalCoroutinesApi::class)
class KeyguardDisplayManagerTest : SysuiTestCase() {
@Mock private val navigationBarController = mock(NavigationBarController::class.java)
@Mock
diff --git a/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt
index d2b61c0ab745..fe665e658feb 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt
@@ -13,8 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.keyguard
import android.app.admin.DevicePolicyManager
@@ -88,7 +86,6 @@ import com.android.systemui.util.settings.GlobalSettings
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth
import junit.framework.Assert
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runCurrent
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/AccessibilityRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/AccessibilityRepositoryTest.kt
index c4a92bf18283..84cbef85e9c0 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/AccessibilityRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/AccessibilityRepositoryTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.accessibility.data.repository
import android.view.accessibility.AccessibilityManager
@@ -26,7 +24,6 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.mockito.withArgCaptor
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Rule
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/CaptioningRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/CaptioningRepositoryTest.kt
index fc57757c9a8c..2cacea4ad908 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/CaptioningRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/CaptioningRepositoryTest.kt
@@ -27,7 +27,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.user.data.repository.userRepository
import com.android.systemui.user.utils.FakeUserScopedService
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -41,7 +40,6 @@ import org.mockito.Mockito.verify
import org.mockito.Mockito.`when`
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class CaptioningRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/ColorCorrectionRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/ColorCorrectionRepositoryImplTest.kt
index 801d3599ac10..e5be3440ce8c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/ColorCorrectionRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/ColorCorrectionRepositoryImplTest.kt
@@ -28,14 +28,12 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class ColorCorrectionRepositoryImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/ColorInversionRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/ColorInversionRepositoryImplTest.kt
index 2f457be8a81b..0ed3dbca2d90 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/ColorInversionRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/ColorInversionRepositoryImplTest.kt
@@ -28,14 +28,12 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class ColorInversionRepositoryImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/NightDisplayRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/NightDisplayRepositoryTest.kt
index 54dbed8407d0..e1db4c931247 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/NightDisplayRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/NightDisplayRepositoryTest.kt
@@ -39,7 +39,6 @@ import com.android.systemui.util.settings.fakeSettings
import com.android.systemui.utils.leaks.FakeLocationController
import com.google.common.truth.Truth.assertThat
import java.time.LocalTime
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
@@ -47,7 +46,6 @@ import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers
import org.mockito.Mockito.verify
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class NightDisplayRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/OneHandedModeRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/OneHandedModeRepositoryImplTest.kt
index 729d356e2be1..b66b64a6c69b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/OneHandedModeRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/OneHandedModeRepositoryImplTest.kt
@@ -27,13 +27,11 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class OneHandedModeRepositoryImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/extradim/ExtraDimDialogDelegateTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/extradim/ExtraDimDialogDelegateTest.kt
index b80836d80e12..cde42bd00ba5 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/extradim/ExtraDimDialogDelegateTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/extradim/ExtraDimDialogDelegateTest.kt
@@ -31,7 +31,6 @@ import com.android.systemui.model.SysUiState
import com.android.systemui.res.R
import com.android.systemui.settings.UserTracker
import com.android.systemui.statusbar.phone.SystemUIDialog
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.advanceUntilIdle
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -51,7 +50,6 @@ import org.mockito.kotlin.eq
import org.mockito.kotlin.verify
/** Tests for [ExtraDimDialogDelegate]. */
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@TestableLooper.RunWithLooper(setAsMainLooper = true)
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/animation/ViewTransitionRegistryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/animation/ViewTransitionRegistryTest.kt
new file mode 100644
index 000000000000..ef91c793a2f3
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/animation/ViewTransitionRegistryTest.kt
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.animation
+
+import android.view.View
+import android.widget.FrameLayout
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.google.common.truth.Truth.assertThat
+import org.junit.Before
+import org.junit.runner.RunWith
+import org.mockito.kotlin.argumentCaptor
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.verify
+import kotlin.test.Test
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class ViewTransitionRegistryTest : SysuiTestCase() {
+
+ private lateinit var view: View
+ private lateinit var underTest: ViewTransitionRegistry
+ private var token: ViewTransitionToken = ViewTransitionToken()
+
+ @Before
+ fun setup() {
+ view = FrameLayout(mContext)
+ underTest = ViewTransitionRegistry()
+ token = ViewTransitionToken()
+ }
+
+ @Test
+ fun testSuccessfulRegisterInViewTransitionRegistry() {
+ underTest.register(token, view)
+ assertThat(underTest.getView(token)).isNotNull()
+ }
+
+ @Test
+ fun testSuccessfulUnregisterInViewTransitionRegistry() {
+ underTest.register(token, view)
+ assertThat(underTest.getView(token)).isNotNull()
+
+ underTest.unregister(token)
+ assertThat(underTest.getView(token)).isNull()
+ }
+
+ @Test
+ fun testSuccessfulUnregisterOnViewDetachedFromWindow() {
+ val view: View = mock {
+ on { getTag(R.id.tag_view_transition_token) } doReturn token
+ }
+
+ underTest.register(token, view)
+ assertThat(underTest.getView(token)).isNotNull()
+
+ argumentCaptor<View.OnAttachStateChangeListener>()
+ .apply { verify(view).addOnAttachStateChangeListener(capture()) }
+ .firstValue
+ .onViewDetachedFromWindow(view)
+
+ assertThat(underTest.getView(token)).isNull()
+ }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/assist/data/repository/AssistRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/assist/data/repository/AssistRepositoryTest.kt
index 80077a21f985..2abc44ca04e0 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/assist/data/repository/AssistRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/assist/data/repository/AssistRepositoryTest.kt
@@ -23,13 +23,11 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class AssistRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/assist/domain/interactor/AssistInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/assist/domain/interactor/AssistInteractorTest.kt
index c12f1aca350a..6c00ed89b343 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/assist/domain/interactor/AssistInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/assist/domain/interactor/AssistInteractorTest.kt
@@ -25,13 +25,11 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
@SmallTest
class AssistInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/authentication/data/repository/AuthenticationRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/authentication/data/repository/AuthenticationRepositoryTest.kt
index f82c8b0e56e0..75ca375f287f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/authentication/data/repository/AuthenticationRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/authentication/data/repository/AuthenticationRepositoryTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.authentication.data.repository
import android.app.admin.DevicePolicyManager
@@ -40,7 +38,6 @@ import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import java.util.function.Function
import kotlin.time.Duration.Companion.seconds
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/authentication/domain/interactor/AuthenticationInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/authentication/domain/interactor/AuthenticationInteractorTest.kt
index 080b48af2af1..ae771cce5976 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/authentication/domain/interactor/AuthenticationInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/authentication/domain/interactor/AuthenticationInteractorTest.kt
@@ -36,7 +36,6 @@ import com.android.systemui.user.data.repository.FakeUserRepository
import com.android.systemui.user.data.repository.fakeUserRepository
import com.google.common.truth.Truth.assertThat
import kotlin.time.Duration.Companion.seconds
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.currentTime
import kotlinx.coroutines.test.runCurrent
@@ -44,7 +43,6 @@ import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class AuthenticationInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/back/domain/interactor/BackActionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/back/domain/interactor/BackActionInteractorTest.kt
index cbb6f81a015d..4d238ac3798d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/back/domain/interactor/BackActionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/back/domain/interactor/BackActionInteractorTest.kt
@@ -61,7 +61,6 @@ import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import junit.framework.Assert.assertFalse
import junit.framework.Assert.assertTrue
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import org.junit.Before
import org.junit.Rule
@@ -76,7 +75,6 @@ import org.mockito.junit.MockitoJUnit
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class BackActionInteractorTest : SysuiTestCase() {
private val kosmos = Kosmos()
private val testScope = kosmos.testScope
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt
index b8d4bb4b8e77..50762edc1179 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt
@@ -16,7 +16,6 @@
package com.android.systemui.biometrics
import android.app.ActivityTaskManager
-import android.app.admin.DevicePolicyManager
import android.content.pm.PackageManager
import android.content.res.Configuration
import android.hardware.biometrics.BiometricAuthenticator
@@ -43,6 +42,8 @@ import androidx.test.filters.SmallTest
import com.android.app.viewcapture.ViewCapture
import com.android.internal.jank.InteractionJankMonitor
import com.android.internal.widget.LockPatternUtils
+import com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PATTERN
+import com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PIN
import com.android.launcher3.icons.IconProvider
import com.android.systemui.SysuiTestCase
import com.android.systemui.biometrics.data.repository.FakeBiometricStatusRepository
@@ -432,8 +433,7 @@ open class AuthContainerViewTest : SysuiTestCase() {
.setMoreOptionsButtonListener(fakeExecutor) { _, _ -> isButtonClicked = true }
.build()
- val container =
- initializeFingerprintContainer(contentViewWithMoreOptionsButton = contentView)
+ val container = initializeFingerprintContainer()
waitForIdleSync()
@@ -488,8 +488,7 @@ open class AuthContainerViewTest : SysuiTestCase() {
.build()
val container =
initializeFingerprintContainer(
- authenticators = BiometricManager.Authenticators.DEVICE_CREDENTIAL,
- contentViewWithMoreOptionsButton = contentView,
+ authenticators = BiometricManager.Authenticators.DEVICE_CREDENTIAL
)
waitForIdleSync()
@@ -500,8 +499,8 @@ open class AuthContainerViewTest : SysuiTestCase() {
@Test
fun testCredentialViewUsesEffectiveUserId() {
whenever(userManager.getCredentialOwnerProfile(anyInt())).thenReturn(200)
- whenever(lockPatternUtils.getKeyguardStoredPasswordQuality(eq(200)))
- .thenReturn(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING)
+ whenever(lockPatternUtils.getCredentialTypeForUser(eq(200)))
+ .thenReturn(CREDENTIAL_TYPE_PATTERN)
val container =
initializeFingerprintContainer(
@@ -578,8 +577,7 @@ open class AuthContainerViewTest : SysuiTestCase() {
addToView: Boolean = true
): TestAuthContainerView {
whenever(userManager.getCredentialOwnerProfile(anyInt())).thenReturn(20)
- whenever(lockPatternUtils.getKeyguardStoredPasswordQuality(eq(20)))
- .thenReturn(DevicePolicyManager.PASSWORD_QUALITY_NUMERIC)
+ whenever(lockPatternUtils.getCredentialTypeForUser(eq(20))).thenReturn(CREDENTIAL_TYPE_PIN)
// In the credential view, clicking on the background (to cancel authentication) is not
// valid. Thus, the listener should be null, and it should not be in the accessibility
@@ -599,7 +597,6 @@ open class AuthContainerViewTest : SysuiTestCase() {
authenticators: Int = BiometricManager.Authenticators.BIOMETRIC_WEAK,
addToView: Boolean = true,
verticalListContentView: PromptVerticalListContentView? = null,
- contentViewWithMoreOptionsButton: PromptContentViewWithMoreOptionsButton? = null,
) =
initializeContainer(
TestAuthContainerView(
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/BiometricTestExtensions.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/BiometricTestExtensions.kt
index 194b41fbeaea..002ed17af890 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/BiometricTestExtensions.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/BiometricTestExtensions.kt
@@ -35,7 +35,6 @@ import com.android.systemui.bouncer.data.repository.keyguardBouncerRepository
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.res.R
import com.android.systemui.util.mockito.whenever
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -157,7 +156,6 @@ internal fun promptInfo(
return info
}
-@OptIn(ExperimentalCoroutinesApi::class)
internal fun TestScope.updateSfpsIndicatorRequests(
kosmos: Kosmos,
mContext: SysuiTestableContext,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/BiometricStatusRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/BiometricStatusRepositoryTest.kt
index d2150471744e..881ee1038826 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/BiometricStatusRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/BiometricStatusRepositoryTest.kt
@@ -40,7 +40,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.withArgCaptor
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -52,7 +51,6 @@ import org.mockito.Mockito.verify
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class BiometricStatusRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/DisplayStateRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/DisplayStateRepositoryTest.kt
index d9b71619992f..7a9f3ec457ab 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/DisplayStateRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/DisplayStateRepositoryTest.kt
@@ -35,7 +35,6 @@ import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -45,7 +44,6 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito.spy
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class DisplayStateRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/FacePropertyRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/FacePropertyRepositoryImplTest.kt
index 9c114054bcfb..05312e906725 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/FacePropertyRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/FacePropertyRepositoryImplTest.kt
@@ -37,7 +37,6 @@ import com.android.systemui.res.R
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import java.util.concurrent.Executor
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestDispatcher
import kotlinx.coroutines.test.TestScope
@@ -55,7 +54,6 @@ import org.mockito.Mockito.verify
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class FacePropertyRepositoryImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/FaceSettingsRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/FaceSettingsRepositoryImplTest.kt
index 0209ab803368..756442be037a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/FaceSettingsRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/FaceSettingsRepositoryImplTest.kt
@@ -29,7 +29,6 @@ import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.mockito.withArgCaptor
import com.android.systemui.util.settings.SecureSettings
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -45,7 +44,6 @@ import org.mockito.kotlin.any
private const val USER_ID = 8
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class FaceSettingsRepositoryImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/FingerprintRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/FingerprintRepositoryImplTest.kt
index ff5a419faf35..ffabc83ab6fe 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/FingerprintRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/FingerprintRepositoryImplTest.kt
@@ -30,7 +30,6 @@ import com.android.systemui.biometrics.shared.model.FingerprintSensorType
import com.android.systemui.biometrics.shared.model.SensorStrength
import com.android.systemui.coroutines.collectLastValue
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -45,7 +44,6 @@ import org.mockito.Mock
import org.mockito.Mockito.verify
import org.mockito.junit.MockitoJUnit
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class FingerprintRepositoryImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/PromptRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/PromptRepositoryImplTest.kt
index 22971bcf799e..12607718ed5e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/PromptRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/data/repository/PromptRepositoryImplTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.mockito.withArgCaptor
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.TestScope
@@ -49,7 +48,6 @@ private const val WRONG_REQUEST_ID = 10L
private const val CHALLENGE = 90L
private const val OP_PACKAGE_NAME = "biometric.testapp"
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class PromptRepositoryImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/BiometricStatusInteractorImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/BiometricStatusInteractorImplTest.kt
index 5d2d20ce88e9..4622cbec735a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/BiometricStatusInteractorImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/BiometricStatusInteractorImplTest.kt
@@ -32,7 +32,6 @@ import com.android.systemui.keyguard.shared.model.AcquiredFingerprintAuthenticat
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -41,7 +40,6 @@ import org.junit.runner.RunWith
import org.mockito.Mockito
import org.mockito.Mockito.`when`
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class BiometricStatusInteractorImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/CredentialInteractorImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/CredentialInteractorImplTest.kt
index 58fe2c9cbe57..15816fdcb8fa 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/CredentialInteractorImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/CredentialInteractorImplTest.kt
@@ -21,7 +21,6 @@ import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -40,7 +39,6 @@ private const val PASSWORD_ID = 30
private const val OPERATION_ID = 100L
private const val MAX_ATTEMPTS = 5
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class CredentialInteractorImplTest : SysuiTestCase() {
@@ -135,9 +133,9 @@ class CredentialInteractorImplTest : SysuiTestCase() {
private fun pinCredential(result: VerifyCredentialResponse, credentialOwner: Int = USER_ID) =
runTest {
val usedAttempts = 1
- whenever(lockPatternUtils.getCurrentFailedPasswordAttempts(eq(USER_ID)))
+ whenever(lockPatternUtils.getCurrentFailedPasswordAttempts(eq(credentialOwner)))
.thenReturn(usedAttempts)
- whenever(lockPatternUtils.verifyCredential(any(), eq(USER_ID), anyInt()))
+ whenever(lockPatternUtils.verifyCredential(any(), eq(credentialOwner), anyInt()))
.thenReturn(result)
whenever(lockPatternUtils.verifyTiedProfileChallenge(any(), eq(USER_ID), anyInt()))
.thenReturn(result)
@@ -170,7 +168,7 @@ class CredentialInteractorImplTest : SysuiTestCase() {
assertThat(successfulResult).isNotNull()
assertThat(successfulResult!!.hat).isEqualTo(result.gatekeeperHAT)
- verify(lockPatternUtils).userPresent(eq(USER_ID))
+ verify(lockPatternUtils).userPresent(eq(credentialOwner))
verify(lockPatternUtils)
.removeGatekeeperPasswordHandle(eq(result.gatekeeperPasswordHandle))
} else {
@@ -190,13 +188,13 @@ class CredentialInteractorImplTest : SysuiTestCase() {
.hasSize(statusList.size)
verify(lockPatternUtils)
- .setLockoutAttemptDeadline(eq(USER_ID), eq(result.timeout))
+ .setLockoutAttemptDeadline(eq(credentialOwner), eq(result.timeout))
} else { // failed
assertThat(failedResult.error)
.matches(Regex("(.*)try again(.*)", RegexOption.IGNORE_CASE).toPattern())
assertThat(statusList).isEmpty()
- verify(lockPatternUtils).reportFailedPasswordAttempt(eq(USER_ID))
+ verify(lockPatternUtils).reportFailedPasswordAttempt(eq(credentialOwner))
}
}
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/DisplayStateInteractorImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/DisplayStateInteractorImplTest.kt
index f40b6b046187..f3d5dfb636a6 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/DisplayStateInteractorImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/DisplayStateInteractorImplTest.kt
@@ -14,7 +14,6 @@ import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.withArgCaptor
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -27,7 +26,6 @@ import org.mockito.Mock
import org.mockito.Mockito.verify
import org.mockito.junit.MockitoJUnit
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class DisplayStateInteractorImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/FingerprintPropertyInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/FingerprintPropertyInteractorTest.kt
index 970ce1f09909..353d2b120199 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/FingerprintPropertyInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/FingerprintPropertyInteractorTest.kt
@@ -29,13 +29,11 @@ import com.android.systemui.display.data.repository.displayRepository
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class FingerprintPropertyInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/LogContextInteractorImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/LogContextInteractorImplTest.kt
index 30207bb310ba..40928faf6f8f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/LogContextInteractorImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/LogContextInteractorImplTest.kt
@@ -41,7 +41,6 @@ import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -50,7 +49,6 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.junit.MockitoJUnit
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class LogContextInteractorImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/PromptCredentialInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/PromptCredentialInteractorTest.kt
index 5a3637668cfe..136dfefc9ae1 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/PromptCredentialInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/PromptCredentialInteractorTest.kt
@@ -16,7 +16,6 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.flowOf
@@ -37,7 +36,6 @@ private const val REQUEST_ID = 22L
private const val OPERATION_ID = 100L
private const val OP_PACKAGE_NAME = "biometric.testapp"
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class PromptCredentialInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractorImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractorImplTest.kt
index b39a888dad91..97d5944afbf0 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractorImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractorImplTest.kt
@@ -41,7 +41,6 @@ import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -51,7 +50,6 @@ import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.junit.MockitoJUnit
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class PromptSelectorInteractorImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/SideFpsSensorInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/SideFpsSensorInteractorTest.kt
index a862112b56e8..4d967d686bab 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/SideFpsSensorInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/SideFpsSensorInteractorTest.kt
@@ -55,7 +55,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import java.util.Optional
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -69,7 +68,6 @@ import org.mockito.Mockito.mock
import org.mockito.Mockito.spy
import org.mockito.junit.MockitoJUnit
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class SideFpsSensorInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/UdfpsOverlayInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/UdfpsOverlayInteractorTest.kt
index 297aee5c84c0..63b9d4fdf66f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/UdfpsOverlayInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/domain/interactor/UdfpsOverlayInteractorTest.kt
@@ -33,7 +33,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.res.R
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -50,7 +49,6 @@ import org.mockito.Mockito.verify
import org.mockito.Mockito.`when` as whenever
import org.mockito.junit.MockitoJUnit
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class UdfpsOverlayInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt
index 57df66207380..4d027088ca1a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt
@@ -37,7 +37,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.res.R
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.eq
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -59,7 +58,6 @@ import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
import org.mockito.kotlin.firstValue
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/CredentialViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/CredentialViewModelTest.kt
index e4c5cd456f03..3e1050739ce0 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/CredentialViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/CredentialViewModelTest.kt
@@ -10,7 +10,6 @@ import com.android.systemui.biometrics.domain.interactor.PromptCredentialInterac
import com.android.systemui.biometrics.promptInfo
import com.android.systemui.biometrics.shared.model.PromptKind
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.launch
@@ -25,7 +24,6 @@ private const val USER_ID = 9
private const val REQUEST_ID = 9L
private const val OPERATION_ID = 10L
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class CredentialViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/DefaultUdfpsTouchOverlayViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/DefaultUdfpsTouchOverlayViewModelTest.kt
index 0d01472b45c7..a194c8ec9d3b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/DefaultUdfpsTouchOverlayViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/DefaultUdfpsTouchOverlayViewModelTest.kt
@@ -33,7 +33,6 @@ import com.android.systemui.statusbar.phone.SystemUIDialogManager
import com.android.systemui.statusbar.phone.systemUIDialogManager
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -46,7 +45,6 @@ import org.mockito.MockitoAnnotations
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
class DefaultUdfpsTouchOverlayViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/DeviceEntryUdfpsTouchOverlayViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/DeviceEntryUdfpsTouchOverlayViewModelTest.kt
index 77ddd3183b00..ce43c5f775aa 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/DeviceEntryUdfpsTouchOverlayViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/DeviceEntryUdfpsTouchOverlayViewModelTest.kt
@@ -29,7 +29,6 @@ import com.android.systemui.statusbar.phone.SystemUIDialogManager
import com.android.systemui.statusbar.phone.systemUIDialogManager
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -40,7 +39,6 @@ import org.mockito.Captor
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class DeviceEntryUdfpsTouchOverlayViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt
index 66f44babdf5f..b6c63479990e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt
@@ -77,7 +77,6 @@ import com.android.systemui.res.R
import com.android.systemui.util.mockito.withArgCaptor
import com.google.android.msdl.data.model.MSDLToken
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.TestScope
@@ -107,7 +106,6 @@ private const val OP_PACKAGE_NAME_WITH_APP_LOGO = "biometric.testapp"
private const val OP_PACKAGE_NAME_NO_LOGO_INFO = "biometric.testapp.nologoinfo"
private const val OP_PACKAGE_NAME_CAN_NOT_BE_FOUND = "can.not.be.found"
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
internal class PromptViewModelTest(private val testCase: TestCase) : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModelTest.kt
index 831012c88f7b..e59d46ce3d82 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModelTest.kt
@@ -22,6 +22,8 @@ import android.graphics.Color
import android.graphics.Rect
import android.hardware.biometrics.SensorLocationInternal
import android.hardware.display.DisplayManagerGlobal
+import android.platform.test.annotations.DisableFlags
+import android.platform.test.annotations.EnableFlags
import android.view.Display
import android.view.DisplayInfo
import android.view.WindowInsets
@@ -30,6 +32,7 @@ import android.view.windowManager
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.airbnb.lottie.model.KeyPath
+import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
import com.android.systemui.biometrics.FingerprintInteractiveToAuthProvider
import com.android.systemui.biometrics.data.repository.fingerprintPropertyRepository
@@ -48,7 +51,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.unfold.compat.ScreenSizeFoldProvider
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -63,7 +65,6 @@ import org.mockito.Mockito.spy
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class SideFpsOverlayViewModelTest : SysuiTestCase() {
@@ -76,15 +77,18 @@ class SideFpsOverlayViewModelTest : SysuiTestCase() {
private val contextDisplayInfo = DisplayInfo()
- private val indicatorColor = context.getColor(
- com.android.internal.R.color.materialColorPrimaryFixed,
- )
- private val outerRimColor = context.getColor(
- com.android.internal.R.color.materialColorPrimaryFixedDim,
- )
- private val chevronFill = context.getColor(
- com.android.internal.R.color.materialColorOnPrimaryFixed,
- )
+ private val indicatorColor =
+ context.getColor(com.android.internal.R.color.materialColorPrimaryFixed)
+ private val outerRimColor =
+ context.getColor(com.android.internal.R.color.materialColorPrimaryFixedDim)
+ private val chevronFill =
+ context.getColor(com.android.internal.R.color.materialColorOnPrimaryFixed)
+ private val dynamicIndicatorColor =
+ context.getColor(com.android.internal.R.color.materialColorPrimary)
+ private val dynamicOuterRimColor =
+ context.getColor(com.android.internal.R.color.materialColorPrimary)
+ private val dynamicChevronFill =
+ context.getColor(com.android.internal.R.color.materialColorOnPrimary)
private val color_blue400 =
context.getColor(com.android.settingslib.color.R.color.settingslib_color_blue400)
@@ -269,6 +273,7 @@ class SideFpsOverlayViewModelTest : SysuiTestCase() {
}
@Test
+ @DisableFlags(Flags.FLAG_BP_COLORS)
fun updatesLottieCallbacks_onShowIndicatorForDeviceEntry() {
kosmos.testScope.runTest {
val lottieCallbacks by collectLastValue(kosmos.sideFpsOverlayViewModel.lottieCallbacks)
@@ -286,6 +291,25 @@ class SideFpsOverlayViewModelTest : SysuiTestCase() {
}
@Test
+ @EnableFlags(Flags.FLAG_BP_COLORS)
+ fun updatesLottieCallbacks_dynamicSfps() {
+ kosmos.testScope.runTest {
+ val lottieCallbacks by collectLastValue(kosmos.sideFpsOverlayViewModel.lottieCallbacks)
+
+ updateSfpsIndicatorRequests(kosmos, mContext, primaryBouncerRequest = true)
+ runCurrent()
+
+ assertThat(lottieCallbacks)
+ .contains(LottieCallback(KeyPath(".blue600", "**"), dynamicIndicatorColor))
+ assertThat(lottieCallbacks)
+ .contains(LottieCallback(KeyPath(".blue400", "**"), dynamicOuterRimColor))
+ assertThat(lottieCallbacks)
+ .contains(LottieCallback(KeyPath(".black", "**"), dynamicChevronFill))
+ }
+ }
+
+ @Test
+ @DisableFlags(Flags.FLAG_BP_COLORS)
fun updatesLottieCallbacks_onShowIndicatorForSystemServer_inDarkMode() {
kosmos.testScope.runTest {
val lottieCallbacks by collectLastValue(kosmos.sideFpsOverlayViewModel.lottieCallbacks)
@@ -302,6 +326,7 @@ class SideFpsOverlayViewModelTest : SysuiTestCase() {
}
@Test
+ @DisableFlags(Flags.FLAG_BP_COLORS)
fun updatesLottieCallbacks_onShowIndicatorForSystemServer_inLightMode() {
kosmos.testScope.runTest {
val lottieCallbacks by collectLastValue(kosmos.sideFpsOverlayViewModel.lottieCallbacks)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingDialogDelegateTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingDialogDelegateTest.kt
index 9f0c7e1ba660..b4200b6850c8 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingDialogDelegateTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingDialogDelegateTest.kt
@@ -27,7 +27,6 @@ import com.android.systemui.res.R
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.runCurrent
@@ -45,7 +44,6 @@ import org.mockito.kotlin.whenever
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
-@OptIn(ExperimentalCoroutinesApi::class)
class AudioSharingDialogDelegateTest : SysuiTestCase() {
@get:Rule val mockitoRule: MockitoRule = MockitoJUnit.rule()
private val kosmos = testKosmos()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingDialogViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingDialogViewModelTest.kt
index 32606e09a1ac..3bb023f1daeb 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingDialogViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingDialogViewModelTest.kt
@@ -30,7 +30,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.res.R
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.UnconfinedTestDispatcher
@@ -50,7 +49,6 @@ import org.mockito.kotlin.whenever
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
-@OptIn(ExperimentalCoroutinesApi::class)
class AudioSharingDialogViewModelTest : SysuiTestCase() {
@get:Rule val mockitoRule: MockitoRule = MockitoJUnit.rule()
private val kosmos = testKosmos().apply { testDispatcher = UnconfinedTestDispatcher() }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingInteractorTest.kt
index cebd05d92537..682ad0c5c48b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingInteractorTest.kt
@@ -27,7 +27,6 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -48,7 +47,6 @@ import org.mockito.kotlin.whenever
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
-@OptIn(ExperimentalCoroutinesApi::class)
class AudioSharingInteractorTest : SysuiTestCase() {
@get:Rule val mockito: MockitoRule = MockitoJUnit.rule()
private val kosmos = testKosmos()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingRepositoryTest.kt
index f0746064f67f..587f3cc8357c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingRepositoryTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.android.systemui.volume.data.repository.audioSharingRepository
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -44,7 +43,6 @@ import org.mockito.kotlin.never
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/BluetoothDeviceMetadataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/BluetoothDeviceMetadataInteractorTest.kt
index cee17c32925e..5b108c855aaa 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/BluetoothDeviceMetadataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/BluetoothDeviceMetadataInteractorTest.kt
@@ -31,7 +31,6 @@ import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runCurrent
@@ -52,7 +51,6 @@ import org.mockito.kotlin.times
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
@SmallTest
@TestableLooper.RunWithLooper(setAsMainLooper = true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/DeviceItemActionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/DeviceItemActionInteractorTest.kt
index ad0337e5ce86..9803bb95dab3 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/DeviceItemActionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bluetooth/qsdialog/DeviceItemActionInteractorTest.kt
@@ -24,7 +24,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -40,7 +39,6 @@ import org.mockito.kotlin.whenever
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
-@OptIn(ExperimentalCoroutinesApi::class)
class DeviceItemActionInteractorTest : SysuiTestCase() {
@get:Rule val mockitoRule: MockitoRule = MockitoJUnit.rule()
private val kosmos = testKosmos().apply { testDispatcher = UnconfinedTestDispatcher() }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/data/repository/EmergencyServicesRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/data/repository/EmergencyServicesRepositoryImplTest.kt
index d317aeb08e1e..1aa9c197b999 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/data/repository/EmergencyServicesRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/data/repository/EmergencyServicesRepositoryImplTest.kt
@@ -26,7 +26,6 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -34,7 +33,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@android.platform.test.annotations.EnabledOnRavenwood
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/data/repository/SimBouncerRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/data/repository/SimBouncerRepositoryTest.kt
index b391b5a45799..3fbb0221e85e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/data/repository/SimBouncerRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/data/repository/SimBouncerRepositoryTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.statusbar.pipeline.mobile.util.FakeSubscriptionManag
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
@@ -176,7 +175,6 @@ class SimBouncerRepositoryTest : SysuiTestCase() {
}
/** Emits a new sim card state and collects the last value of the flow argument. */
- @OptIn(ExperimentalCoroutinesApi::class)
private fun <T> TestScope.emitSubscriptionIdAndCollectLastValue(
flow: Flow<T>,
subId: Int = 1,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/BouncerActionButtonInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/BouncerActionButtonInteractorTest.kt
index 10bf5233e61e..f376e932e70b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/BouncerActionButtonInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/BouncerActionButtonInteractorTest.kt
@@ -43,7 +43,6 @@ import com.android.systemui.user.domain.interactor.SelectedUserInteractor
import com.android.systemui.util.mockito.whenever
import com.android.telecom.telecomManager
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -55,7 +54,6 @@ import org.mockito.Mockito.never
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@EnableSceneContainer
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/BouncerInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/BouncerInteractorTest.kt
index 521b34671be4..dd4af7bb780e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/BouncerInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/BouncerInteractorTest.kt
@@ -46,7 +46,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.settings.fakeGlobalSettings
import com.google.common.truth.Truth.assertThat
import kotlin.time.Duration.Companion.seconds
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -55,7 +54,6 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@EnableSceneContainer
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/BouncerMessageInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/BouncerMessageInteractorTest.kt
index 65c9b72a3665..d098f2801ef6 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/BouncerMessageInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/BouncerMessageInteractorTest.kt
@@ -53,7 +53,6 @@ import com.android.systemui.user.data.repository.fakeUserRepository
import com.android.systemui.util.mockito.KotlinArgumentCaptor
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -67,7 +66,6 @@ import org.mockito.Mock
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@TestableLooper.RunWithLooper(setAsMainLooper = true)
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/SimBouncerInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/SimBouncerInteractorTest.kt
index bd1403a6aa26..3b50e4b077ea 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/SimBouncerInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/SimBouncerInteractorTest.kt
@@ -35,7 +35,6 @@ import com.android.systemui.statusbar.pipeline.mobile.data.repository.mobileConn
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -52,7 +51,6 @@ import org.mockito.MockitoAnnotations
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class SimBouncerInteractorTest : SysuiTestCase() {
@Mock lateinit var telephonyManager: TelephonyManager
@Mock lateinit var keyguardUpdateMonitor: KeyguardUpdateMonitor
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/composable/BouncerPredictiveBackTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/composable/BouncerPredictiveBackTest.kt
index a6ed37ead7ae..d8a9719d2058 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/composable/BouncerPredictiveBackTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/composable/BouncerPredictiveBackTest.kt
@@ -63,12 +63,12 @@ import com.android.systemui.qs.ui.viewmodel.fakeQsSceneAdapter
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.domain.startable.sceneContainerStartable
import com.android.systemui.scene.sceneContainerViewModelFactory
+import com.android.systemui.scene.sceneTransitionsBuilder
import com.android.systemui.scene.shared.model.SceneContainerConfig
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.shared.model.sceneDataSourceDelegator
import com.android.systemui.scene.ui.composable.Scene
import com.android.systemui.scene.ui.composable.SceneContainer
-import com.android.systemui.scene.ui.composable.SceneContainerTransitions
import com.android.systemui.scene.ui.view.sceneJankMonitorFactory
import com.android.systemui.testKosmos
import kotlin.time.Duration.Companion.seconds
@@ -96,6 +96,7 @@ import platform.test.motion.golden.FeatureCapture
import platform.test.motion.golden.UnknownTypeException
import platform.test.screenshot.DeviceEmulationSpec
import platform.test.screenshot.Displays.Phone
+import kotlin.test.Ignore
/** MotionTest for the Bouncer Predictive Back animation */
@LargeTest
@@ -120,9 +121,9 @@ class BouncerPredictiveBackTest : SysuiTestCase() {
SceneContainerConfig(
sceneKeys,
initialSceneKey,
- SceneContainerTransitions,
emptyList(),
navigationDistances,
+ sceneTransitionsBuilder,
)
}
private val view = mock<View>()
@@ -172,6 +173,7 @@ class BouncerPredictiveBackTest : SysuiTestCase() {
}
@Test
+ @Ignore("b/394049206: Update the goldens and re-enable this test.")
fun bouncerPredictiveBackMotion() =
motionTestRule.runTest(timeout = 30.seconds) {
val motion =
@@ -190,7 +192,7 @@ class BouncerPredictiveBackTest : SysuiTestCase() {
Scenes.Bouncer to bouncerScene,
),
initialSceneKey = Scenes.Bouncer,
- sceneTransitions = SceneContainerTransitions,
+ transitionsBuilder = kosmos.sceneTransitionsBuilder,
overlayByKey = emptyMap(),
dataSourceDelegator = kosmos.sceneDataSourceDelegator,
qsSceneAdapter = { kosmos.fakeQsSceneAdapter },
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/AuthMethodBouncerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/AuthMethodBouncerViewModelTest.kt
index 9552564cf1a2..edd115fa0e51 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/AuthMethodBouncerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/AuthMethodBouncerViewModelTest.kt
@@ -33,7 +33,6 @@ import com.android.systemui.lifecycle.activateIn
import com.android.systemui.testKosmos
import com.google.android.msdl.data.model.MSDLToken
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -90,7 +89,6 @@ class AuthMethodBouncerViewModelTest : SysuiTestCase() {
assertThat(animateFailure).isFalse()
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
@EnableFlags(Flags.FLAG_MSDL_FEEDBACK)
fun onAuthenticationResult_playUnlockTokenIfSuccessful() =
@@ -109,7 +107,6 @@ class AuthMethodBouncerViewModelTest : SysuiTestCase() {
assertThat(msdlPlayer.latestPropertiesPlayed).isEqualTo(authInteractionProperties)
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
@EnableFlags(Flags.FLAG_MSDL_FEEDBACK)
fun onAuthenticationResult_playFailureTokenIfFailure() =
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerMessageViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerMessageViewModelTest.kt
index 8c8faee99139..482a067a11f5 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerMessageViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerMessageViewModelTest.kt
@@ -59,7 +59,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.user.data.repository.fakeUserRepository
import com.google.common.truth.Truth.assertThat
import kotlin.time.Duration.Companion.seconds
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.currentTime
@@ -69,7 +68,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@EnableFlags(Flags.FLAG_COMPOSE_BOUNCER)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerSceneContentViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerSceneContentViewModelTest.kt
index 94f6769ba406..eef8d9f40458 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerSceneContentViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerSceneContentViewModelTest.kt
@@ -46,7 +46,6 @@ import com.android.systemui.scene.domain.startable.sceneContainerStartable
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.launchIn
@@ -59,7 +58,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@EnableSceneContainer
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerUserActionsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerUserActionsViewModelTest.kt
index d3715926932c..e12fabfd199d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerUserActionsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerUserActionsViewModelTest.kt
@@ -32,14 +32,12 @@ import com.android.systemui.scene.shared.model.fakeSceneDataSource
import com.android.systemui.testKosmos
import com.android.systemui.truth.containsEntriesExactly
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@EnableSceneContainer
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/KeyguardBouncerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/KeyguardBouncerViewModelTest.kt
index 1a435013e7a9..61c74cc27bee 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/KeyguardBouncerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/KeyguardBouncerViewModelTest.kt
@@ -51,7 +51,6 @@ import org.mockito.MockitoAnnotations
@SmallTest
@RunWith(AndroidJUnit4::class)
-@kotlinx.coroutines.ExperimentalCoroutinesApi
class KeyguardBouncerViewModelTest : SysuiTestCase() {
@Mock lateinit var bouncerView: BouncerView
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PasswordBouncerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PasswordBouncerViewModelTest.kt
index 29ee87466f1a..b2d245858196 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PasswordBouncerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PasswordBouncerViewModelTest.kt
@@ -47,7 +47,6 @@ import com.android.systemui.user.domain.interactor.selectedUserInteractor
import com.google.common.truth.Truth.assertThat
import java.util.UUID
import kotlin.time.Duration.Companion.seconds
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceTimeBy
@@ -57,7 +56,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class PasswordBouncerViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PatternBouncerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PatternBouncerViewModelTest.kt
index 0490a26019e1..ec7d1c3bea3e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PatternBouncerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PatternBouncerViewModelTest.kt
@@ -41,7 +41,6 @@ import com.android.systemui.testKosmos
import com.google.android.msdl.data.model.MSDLToken
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.test.TestScope
@@ -51,7 +50,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class PatternBouncerViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PinBouncerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PinBouncerViewModelTest.kt
index af5f2acb444d..705e8341ff80 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PinBouncerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PinBouncerViewModelTest.kt
@@ -49,7 +49,6 @@ import com.google.common.truth.Truth.assertThat
import kotlin.random.Random
import kotlin.random.nextInt
import kotlin.test.assertTrue
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.test.TestScope
@@ -59,7 +58,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class PinBouncerViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/brightness/data/repository/ScreenBrightnessDisplayManagerRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/brightness/data/repository/ScreenBrightnessDisplayManagerRepositoryTest.kt
index 2e8efdb8c84b..8c748f07f859 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/brightness/data/repository/ScreenBrightnessDisplayManagerRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/brightness/data/repository/ScreenBrightnessDisplayManagerRepositoryTest.kt
@@ -38,7 +38,6 @@ import com.android.systemui.util.mockito.capture
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -53,7 +52,6 @@ import org.mockito.Mockito.verify
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class ScreenBrightnessDisplayManagerRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/brightness/domain/interactor/ScreenBrightnessInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/brightness/domain/interactor/ScreenBrightnessInteractorTest.kt
index 18e7a7e28b4d..39146d279d63 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/brightness/domain/interactor/ScreenBrightnessInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/brightness/domain/interactor/ScreenBrightnessInteractorTest.kt
@@ -30,13 +30,11 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.log.table.logcatTableLogBuffer
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class ScreenBrightnessInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/brightness/ui/viewmodel/BrightnessSliderViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/brightness/ui/viewmodel/BrightnessSliderViewModelTest.kt
index 2d093bf1630b..6deb5257e726 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/brightness/ui/viewmodel/BrightnessSliderViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/brightness/ui/viewmodel/BrightnessSliderViewModelTest.kt
@@ -26,10 +26,8 @@ import com.android.systemui.brightness.domain.interactor.screenBrightnessInterac
import com.android.systemui.brightness.shared.model.GammaBrightness
import com.android.systemui.brightness.shared.model.LinearBrightness
import com.android.systemui.classifier.domain.interactor.falsingInteractor
-import com.android.systemui.common.shared.model.ContentDescription
-import com.android.systemui.common.shared.model.Icon
-import com.android.systemui.common.shared.model.Text
import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.graphics.imageLoader
import com.android.systemui.haptics.slider.sliderHapticsViewModelFactory
import com.android.systemui.kosmos.testScope
import com.android.systemui.lifecycle.activateIn
@@ -38,14 +36,12 @@ import com.android.systemui.settings.brightness.domain.interactor.brightnessMirr
import com.android.systemui.settings.brightness.ui.brightnessWarningToast
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class BrightnessSliderViewModelTest : SysuiTestCase() {
@@ -65,6 +61,7 @@ class BrightnessSliderViewModelTest : SysuiTestCase() {
falsingInteractor,
supportsMirroring = true,
brightnessWarningToast,
+ imageLoader,
)
}
}
@@ -162,20 +159,21 @@ class BrightnessSliderViewModelTest : SysuiTestCase() {
}
@Test
- fun label() {
- assertThat(underTest.label)
- .isEqualTo(Text.Resource(R.string.quick_settings_brightness_dialog_title))
- }
-
- @Test
fun icon() {
- assertThat(underTest.icon)
- .isEqualTo(
- Icon.Resource(
- R.drawable.ic_brightness_full,
- ContentDescription.Resource(underTest.label.res),
- )
- )
+ assertThat(BrightnessSliderViewModel.getIconForPercentage(0f))
+ .isEqualTo(R.drawable.ic_brightness_low)
+ assertThat(BrightnessSliderViewModel.getIconForPercentage(20f))
+ .isEqualTo(R.drawable.ic_brightness_low)
+ assertThat(BrightnessSliderViewModel.getIconForPercentage(20.1f))
+ .isEqualTo(R.drawable.ic_brightness_medium)
+ assertThat(BrightnessSliderViewModel.getIconForPercentage(50f))
+ .isEqualTo(R.drawable.ic_brightness_medium)
+ assertThat(BrightnessSliderViewModel.getIconForPercentage(79.9f))
+ .isEqualTo(R.drawable.ic_brightness_medium)
+ assertThat(BrightnessSliderViewModel.getIconForPercentage(80f))
+ .isEqualTo(R.drawable.ic_brightness_full)
+ assertThat(BrightnessSliderViewModel.getIconForPercentage(100f))
+ .isEqualTo(R.drawable.ic_brightness_full)
}
@Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/camera/data/repository/CameraAutoRotateRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/camera/data/repository/CameraAutoRotateRepositoryImplTest.kt
index 667d364ddc69..648d74d20cc5 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/camera/data/repository/CameraAutoRotateRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/camera/data/repository/CameraAutoRotateRepositoryImplTest.kt
@@ -26,13 +26,11 @@ import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.testScope
import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class CameraAutoRotateRepositoryImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/camera/data/repository/CameraSensorPrivacyRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/camera/data/repository/CameraSensorPrivacyRepositoryImplTest.kt
index 29de58e2b28f..b73a212c9bd1 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/camera/data/repository/CameraSensorPrivacyRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/camera/data/repository/CameraSensorPrivacyRepositoryImplTest.kt
@@ -26,7 +26,6 @@ import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.testScope
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
@@ -35,7 +34,6 @@ import org.mockito.ArgumentCaptor
import org.mockito.ArgumentMatchers
import org.mockito.Mockito
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@android.platform.test.annotations.EnabledOnRavenwood
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/camera/data/repository/FakeCameraAutoRotateRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/camera/data/repository/FakeCameraAutoRotateRepositoryTest.kt
index f75e036d78d4..6c8097ed7166 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/camera/data/repository/FakeCameraAutoRotateRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/camera/data/repository/FakeCameraAutoRotateRepositoryTest.kt
@@ -23,13 +23,11 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectValues
import com.android.systemui.kosmos.Kosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@android.platform.test.annotations.EnabledOnRavenwood
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/camera/data/repository/FakeCameraSensorPrivacyRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/camera/data/repository/FakeCameraSensorPrivacyRepositoryTest.kt
index 7fa1be3d20ff..7161c2c13a60 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/camera/data/repository/FakeCameraSensorPrivacyRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/camera/data/repository/FakeCameraSensorPrivacyRepositoryTest.kt
@@ -23,13 +23,11 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectValues
import com.android.systemui.kosmos.Kosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@android.platform.test.annotations.EnabledOnRavenwood
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/common/coroutine/CoroutineResultTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/common/coroutine/CoroutineResultTest.kt
index de07cda21e75..51286507503e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/common/coroutine/CoroutineResultTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/common/coroutine/CoroutineResultTest.kt
@@ -19,14 +19,12 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.CancellationException
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.cancel
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
/** atest SystemUITests:CoroutineResultTest */
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class CoroutineResultTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/common/data/repository/PackageInstallerMonitorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/common/data/repository/PackageInstallerMonitorTest.kt
index 4c908dd895c7..781e416e6374 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/common/data/repository/PackageInstallerMonitorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/common/data/repository/PackageInstallerMonitorTest.kt
@@ -36,7 +36,6 @@ import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.mockito.withArgCaptor
import com.google.common.truth.Correspondence
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -48,7 +47,6 @@ import org.mockito.Mockito.never
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class PackageInstallerMonitorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/common/data/repository/PackageUpdateMonitorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/common/data/repository/PackageUpdateMonitorTest.kt
index 35d9d3f21c8f..3e0c19e903ac 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/common/data/repository/PackageUpdateMonitorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/common/data/repository/PackageUpdateMonitorTest.kt
@@ -34,7 +34,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.time.fakeSystemClock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.launchIn
@@ -47,7 +46,6 @@ import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.MockitoAnnotations
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class PackageUpdateMonitorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/common/domain/interactor/PackageChangeInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/common/domain/interactor/PackageChangeInteractorTest.kt
index a164e7cbc0ec..19bc04bfdbb5 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/common/domain/interactor/PackageChangeInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/common/domain/interactor/PackageChangeInteractorTest.kt
@@ -31,7 +31,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.user.data.repository.fakeUserRepository
import com.android.systemui.user.domain.interactor.selectedUserInteractor
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -39,7 +38,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class PackageChangeInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/data/repository/ConfigurationRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/data/repository/ConfigurationRepositoryImplTest.kt
index 205f94434970..a2c647d85330 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/data/repository/ConfigurationRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/data/repository/ConfigurationRepositoryImplTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.mockito.withArgCaptor
import com.android.systemui.util.wrapper.DisplayUtilsWrapper
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -42,7 +41,6 @@ import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
import org.mockito.kotlin.clearInvocations
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class ConfigurationRepositoryImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorTest.kt
index 5994afa948c7..4a960fee603a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorTest.kt
@@ -27,7 +27,6 @@ import com.android.systemui.common.ui.data.repository.FakeConfigurationRepositor
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.coroutines.collectValues
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -38,7 +37,6 @@ import org.mockito.MockitoAnnotations
import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class ConfigurationInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/view/LongPressHandlingViewInteractionHandlerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/view/TouchHandlingViewInteractionHandlerTest.kt
index f06cd6aec8e0..0f400892f988 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/view/LongPressHandlingViewInteractionHandlerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/common/ui/view/TouchHandlingViewInteractionHandlerTest.kt
@@ -21,15 +21,14 @@ import android.view.ViewConfiguration
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
-import com.android.systemui.common.ui.view.LongPressHandlingViewInteractionHandler.MotionEventModel
-import com.android.systemui.common.ui.view.LongPressHandlingViewInteractionHandler.MotionEventModel.Down
-import com.android.systemui.common.ui.view.LongPressHandlingViewInteractionHandler.MotionEventModel.Move
-import com.android.systemui.common.ui.view.LongPressHandlingViewInteractionHandler.MotionEventModel.Up
+import com.android.systemui.common.ui.view.TouchHandlingViewInteractionHandler.MotionEventModel
+import com.android.systemui.common.ui.view.TouchHandlingViewInteractionHandler.MotionEventModel.Down
+import com.android.systemui.common.ui.view.TouchHandlingViewInteractionHandler.MotionEventModel.Move
+import com.android.systemui.common.ui.view.TouchHandlingViewInteractionHandler.MotionEventModel.Up
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.DisposableHandle
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
@@ -39,16 +38,15 @@ import org.mockito.Mockito.never
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
-class LongPressHandlingViewInteractionHandlerTest : SysuiTestCase() {
+class TouchHandlingViewInteractionHandlerTest : SysuiTestCase() {
@Mock private lateinit var postDelayed: (Runnable, Long) -> DisposableHandle
@Mock private lateinit var onLongPressDetected: (Int, Int) -> Unit
- @Mock private lateinit var onSingleTapDetected: () -> Unit
+ @Mock private lateinit var onSingleTapDetected: (Int, Int) -> Unit
- private lateinit var underTest: LongPressHandlingViewInteractionHandler
+ private lateinit var underTest: TouchHandlingViewInteractionHandler
private var isAttachedToWindow: Boolean = true
private var delayedRunnable: Runnable? = null
@@ -62,7 +60,7 @@ class LongPressHandlingViewInteractionHandlerTest : SysuiTestCase() {
}
underTest =
- LongPressHandlingViewInteractionHandler(
+ TouchHandlingViewInteractionHandler(
postDelayed = postDelayed,
isAttachedToWindow = { isAttachedToWindow },
onLongPressDetected = onLongPressDetected,
@@ -78,74 +76,51 @@ class LongPressHandlingViewInteractionHandlerTest : SysuiTestCase() {
val downX = 123
val downY = 456
dispatchTouchEvents(
- Down(
- x = downX,
- y = downY,
- ),
- Move(
- distanceMoved = ViewConfiguration.getTouchSlop() - 0.1f,
- ),
+ Down(x = downX, y = downY),
+ Move(distanceMoved = ViewConfiguration.getTouchSlop() - 0.1f),
)
delayedRunnable?.run()
verify(onLongPressDetected).invoke(downX, downY)
- verify(onSingleTapDetected, never()).invoke()
+ verify(onSingleTapDetected, never()).invoke(any(), any())
}
@Test
fun longPressButFeatureNotEnabled() = runTest {
underTest.isLongPressHandlingEnabled = false
- dispatchTouchEvents(
- Down(
- x = 123,
- y = 456,
- ),
- )
+ dispatchTouchEvents(Down(x = 123, y = 456))
assertThat(delayedRunnable).isNull()
verify(onLongPressDetected, never()).invoke(any(), any())
- verify(onSingleTapDetected, never()).invoke()
+ verify(onSingleTapDetected, never()).invoke(any(), any())
}
@Test
fun longPressButViewNotAttached() = runTest {
isAttachedToWindow = false
- dispatchTouchEvents(
- Down(
- x = 123,
- y = 456,
- ),
- )
+ dispatchTouchEvents(Down(x = 123, y = 456))
delayedRunnable?.run()
verify(onLongPressDetected, never()).invoke(any(), any())
- verify(onSingleTapDetected, never()).invoke()
+ verify(onSingleTapDetected, never()).invoke(any(), any())
}
@Test
fun draggedTooFarToBeConsideredAlongPress() = runTest {
dispatchTouchEvents(
- Down(
- x = 123,
- y = 456,
- ),
- Move(
- distanceMoved = ViewConfiguration.getTouchSlop() + 0.1f,
- ),
+ Down(x = 123, y = 456),
+ Move(distanceMoved = ViewConfiguration.getTouchSlop() + 0.1f),
)
assertThat(delayedRunnable).isNull()
verify(onLongPressDetected, never()).invoke(any(), any())
- verify(onSingleTapDetected, never()).invoke()
+ verify(onSingleTapDetected, never()).invoke(any(), any())
}
@Test
fun heldDownTooBrieflyToBeConsideredAlongPress() = runTest {
dispatchTouchEvents(
- Down(
- x = 123,
- y = 456,
- ),
+ Down(x = 123, y = 456),
Up(
distanceMoved = ViewConfiguration.getTouchSlop().toFloat(),
gestureDuration = ViewConfiguration.getLongPressTimeout() - 1L,
@@ -154,12 +129,10 @@ class LongPressHandlingViewInteractionHandlerTest : SysuiTestCase() {
assertThat(delayedRunnable).isNull()
verify(onLongPressDetected, never()).invoke(any(), any())
- verify(onSingleTapDetected).invoke()
+ verify(onSingleTapDetected).invoke(123, 456)
}
- private fun dispatchTouchEvents(
- vararg models: MotionEventModel,
- ) {
+ private fun dispatchTouchEvents(vararg models: MotionEventModel) {
models.forEach { model -> underTest.onTouchEvent(model) }
}
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalDreamStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalDreamStartableTest.kt
index 00d5afe26f0a..ad7df9e97c83 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalDreamStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalDreamStartableTest.kt
@@ -42,7 +42,6 @@ import com.android.systemui.power.domain.interactor.powerInteractor
import com.android.systemui.power.shared.model.ScreenPowerState
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.whenever
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -54,7 +53,6 @@ import org.mockito.Mockito.verify
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnableFlags(Flags.FLAG_COMMUNAL_HUB)
@RunWith(ParameterizedAndroidJunit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalOngoingContentStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalOngoingContentStartableTest.kt
index 9113617095e2..e53155de653d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalOngoingContentStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalOngoingContentStartableTest.kt
@@ -32,14 +32,12 @@ import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnableFlags(FLAG_COMMUNAL_HUB)
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalSceneStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalSceneStartableTest.kt
index 68f4acde7609..6f2082b35fa7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalSceneStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalSceneStartableTest.kt
@@ -58,7 +58,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth.assertThat
import kotlin.time.Duration.Companion.milliseconds
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceTimeBy
@@ -72,7 +71,6 @@ import org.mockito.kotlin.whenever
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
@EnableFlags(FLAG_COMMUNAL_HUB)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/db/DefaultWidgetPopulationTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/db/DefaultWidgetPopulationTest.kt
index f1c58a2aeac9..3eb08004ae61 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/db/DefaultWidgetPopulationTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/db/DefaultWidgetPopulationTest.kt
@@ -30,7 +30,6 @@ import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.kosmos.testScope
import com.android.systemui.log.logcatLogBuffer
import com.android.systemui.testKosmos
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -45,7 +44,6 @@ import org.mockito.kotlin.never
import org.mockito.kotlin.verify
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class DefaultWidgetPopulationTest : SysuiTestCase() {
private val kosmos = testKosmos()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalMediaRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalMediaRepositoryImplTest.kt
index 2b0928ffd396..c6196d4861b8 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalMediaRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalMediaRepositoryImplTest.kt
@@ -27,7 +27,6 @@ import com.android.systemui.media.controls.shared.model.MediaData
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -37,7 +36,6 @@ import org.mockito.Mockito.verify
import org.mockito.kotlin.argumentCaptor
import org.mockito.kotlin.mock
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@android.platform.test.annotations.EnabledOnRavenwood
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalPrefsRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalPrefsRepositoryImplTest.kt
index b6359c7f8da5..3682dcec8dfd 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalPrefsRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalPrefsRepositoryImplTest.kt
@@ -34,7 +34,6 @@ import com.android.systemui.settings.UserFileManager
import com.android.systemui.settings.fakeUserFileManager
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
@@ -44,7 +43,6 @@ import org.mockito.Mockito.clearInvocations
import org.mockito.Mockito.verify
import org.mockito.kotlin.spy
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class CommunalPrefsRepositoryImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSceneRepositoryImplTest.kt
index fd0bf4dae198..293d32471713 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSceneRepositoryImplTest.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2023 The Android Open Source Project
+ * Copyright (C) 2025 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,34 +21,44 @@ import androidx.test.filters.SmallTest
import com.android.compose.animation.scene.ObservableTransitionState
import com.android.systemui.SysuiTestCase
import com.android.systemui.communal.shared.model.CommunalScenes
-import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
+import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
-import com.android.systemui.kosmos.testScope
-import com.android.systemui.scene.shared.model.sceneDataSource
+import com.android.systemui.kosmos.backgroundScope
+import com.android.systemui.kosmos.collectLastValue
+import com.android.systemui.kosmos.runTest
+import com.android.systemui.kosmos.useUnconfinedTestDispatcher
+import com.android.systemui.scene.shared.model.SceneDataSource
+import com.android.systemui.scene.shared.model.SceneDataSourceDelegator
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.flow.flowOf
-import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
+import org.mockito.kotlin.argumentCaptor
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.verify
@SmallTest
@RunWith(AndroidJUnit4::class)
-class CommunalRepositoryImplTest : SysuiTestCase() {
+class CommunalSceneRepositoryImplTest : SysuiTestCase() {
+ private val kosmos = testKosmos().useUnconfinedTestDispatcher()
- private val kosmos = testKosmos()
- private val testScope = kosmos.testScope
- private val underTest by lazy {
- CommunalSceneRepositoryImpl(
- kosmos.applicationCoroutineScope,
- kosmos.applicationCoroutineScope,
- kosmos.sceneDataSource,
- )
- }
+ private val delegator = mock<SceneDataSourceDelegator> {}
+
+ private val Kosmos.underTest by
+ Kosmos.Fixture {
+ CommunalSceneRepositoryImpl(
+ applicationScope = applicationCoroutineScope,
+ backgroundScope = backgroundScope,
+ sceneDataSource = delegator,
+ delegator = delegator,
+ )
+ }
@Test
fun transitionState_idleByDefault() =
- testScope.runTest {
+ kosmos.runTest {
val transitionState by collectLastValue(underTest.transitionState)
assertThat(transitionState)
.isEqualTo(ObservableTransitionState.Idle(CommunalScenes.Default))
@@ -56,7 +66,7 @@ class CommunalRepositoryImplTest : SysuiTestCase() {
@Test
fun transitionState_setTransitionState_returnsNewValue() =
- testScope.runTest {
+ kosmos.runTest {
val expectedSceneKey = CommunalScenes.Communal
underTest.setTransitionState(flowOf(ObservableTransitionState.Idle(expectedSceneKey)))
@@ -66,7 +76,7 @@ class CommunalRepositoryImplTest : SysuiTestCase() {
@Test
fun transitionState_setNullTransitionState_returnsDefaultValue() =
- testScope.runTest {
+ kosmos.runTest {
// Set a value for the transition state flow.
underTest.setTransitionState(
flowOf(ObservableTransitionState.Idle(CommunalScenes.Communal))
@@ -80,4 +90,18 @@ class CommunalRepositoryImplTest : SysuiTestCase() {
assertThat(transitionState)
.isEqualTo(ObservableTransitionState.Idle(CommunalScenes.Default))
}
+
+ @Test
+ fun showHubFromPowerButton() =
+ kosmos.runTest {
+ fakeKeyguardRepository.setKeyguardShowing(false)
+
+ underTest.showHubFromPowerButton()
+
+ argumentCaptor<SceneDataSource>().apply {
+ verify(delegator).setDelegate(capture())
+
+ assertThat(firstValue.currentScene.value).isEqualTo(CommunalScenes.Communal)
+ }
+ }
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSettingsRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSettingsRepositoryImplTest.kt
index eb1f1d9c52f4..5c983656225e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSettingsRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSettingsRepositoryImplTest.kt
@@ -51,6 +51,7 @@ import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
+import org.junit.After
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -78,6 +79,32 @@ class CommunalSettingsRepositoryImplTest(flags: FlagsParameterization?) : SysuiT
setKeyguardFeaturesDisabled(PRIMARY_USER, KEYGUARD_DISABLE_FEATURES_NONE)
setKeyguardFeaturesDisabled(SECONDARY_USER, KEYGUARD_DISABLE_FEATURES_NONE)
setKeyguardFeaturesDisabled(WORK_PROFILE, KEYGUARD_DISABLE_FEATURES_NONE)
+
+ mContext.orCreateTestableResources.addOverride(
+ com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault,
+ false,
+ )
+ mContext.orCreateTestableResources.addOverride(
+ com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault,
+ false,
+ )
+ mContext.orCreateTestableResources.addOverride(
+ com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault,
+ false,
+ )
+ }
+
+ @After
+ fun tearDown() {
+ mContext.orCreateTestableResources.removeOverride(
+ com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault
+ )
+ mContext.orCreateTestableResources.removeOverride(
+ com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault
+ )
+ mContext.orCreateTestableResources.removeOverride(
+ com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault
+ )
}
@EnableFlags(FLAG_COMMUNAL_HUB)
@@ -334,6 +361,18 @@ class CommunalSettingsRepositoryImplTest(flags: FlagsParameterization?) : SysuiT
}
@Test
+ fun whenToDream_charging_defaultValue() =
+ kosmos.runTest {
+ mContext.orCreateTestableResources.addOverride(
+ com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault,
+ true,
+ )
+
+ val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER))
+ assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_CHARGING)
+ }
+
+ @Test
fun whenToDream_docked() =
kosmos.runTest {
val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER))
@@ -348,6 +387,18 @@ class CommunalSettingsRepositoryImplTest(flags: FlagsParameterization?) : SysuiT
}
@Test
+ fun whenToDream_docked_defaultValue() =
+ kosmos.runTest {
+ mContext.orCreateTestableResources.addOverride(
+ com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault,
+ true,
+ )
+
+ val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER))
+ assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_DOCKED)
+ }
+
+ @Test
fun whenToDream_postured() =
kosmos.runTest {
val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER))
@@ -362,6 +413,18 @@ class CommunalSettingsRepositoryImplTest(flags: FlagsParameterization?) : SysuiT
}
@Test
+ fun whenToDream_postured_defaultValue() =
+ kosmos.runTest {
+ mContext.orCreateTestableResources.addOverride(
+ com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault,
+ true,
+ )
+
+ val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER))
+ assertThat(whenToDreamState).isEqualTo(WhenToDream.WHILE_POSTURED)
+ }
+
+ @Test
fun whenToDream_default() =
kosmos.runTest {
val whenToDreamState by collectLastValue(underTest.getWhenToDreamState(PRIMARY_USER))
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSmartspaceRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSmartspaceRepositoryImplTest.kt
index 1a426d6ebce2..4e12a169d00f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSmartspaceRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSmartspaceRepositoryImplTest.kt
@@ -33,7 +33,6 @@ import com.android.systemui.plugins.BcSmartspaceDataPlugin.SmartspaceTargetListe
import com.android.systemui.testKosmos
import com.android.systemui.util.time.fakeSystemClock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -47,7 +46,6 @@ import org.mockito.kotlin.never
import org.mockito.kotlin.verify
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class CommunalSmartspaceRepositoryImplTest : SysuiTestCase() {
private val kosmos = testKosmos()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalBackActionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalBackActionInteractorTest.kt
index c365f1cb3872..70f38f7bc94e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalBackActionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalBackActionInteractorTest.kt
@@ -29,12 +29,10 @@ import com.android.systemui.kosmos.runCurrent
import com.android.systemui.kosmos.runTest
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import org.junit.Test
import org.junit.runner.RunWith
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class CommunalBackActionInteractorTest : SysuiTestCase() {
private val kosmos = testKosmos()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalInteractorCommunalDisabledTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalInteractorCommunalDisabledTest.kt
index cebcbc98bbaa..beec184b80e7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalInteractorCommunalDisabledTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalInteractorCommunalDisabledTest.kt
@@ -31,7 +31,6 @@ import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -42,7 +41,6 @@ import org.junit.runner.RunWith
* This class is a variation of the [CommunalInteractorTest] for cases where communal is disabled.
*/
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class CommunalInteractorCommunalDisabledTest : SysuiTestCase() {
private val kosmos = testKosmos()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalInteractorTest.kt
index c9e7a5d7df05..c3cc3e66f81f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalInteractorTest.kt
@@ -21,6 +21,7 @@ import android.app.admin.DevicePolicyManager
import android.app.admin.devicePolicyManager
import android.content.Intent
import android.content.pm.UserInfo
+import android.content.res.mainResources
import android.os.UserHandle
import android.os.UserManager
import android.os.userManager
@@ -85,6 +86,7 @@ import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.advanceTimeBy
+import org.junit.After
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -106,7 +108,10 @@ class CommunalInteractorTest(flags: FlagsParameterization) : SysuiTestCase() {
UserInfo(/* id= */ 0, /* name= */ "primary user", /* flags= */ UserInfo.FLAG_MAIN)
private val secondaryUser = UserInfo(/* id= */ 1, /* name= */ "secondary user", /* flags= */ 0)
- private val kosmos = testKosmos().useUnconfinedTestDispatcher()
+ private val kosmos =
+ testKosmos()
+ .apply { mainResources = mContext.orCreateTestableResources.resources }
+ .useUnconfinedTestDispatcher()
private val Kosmos.underTest by Kosmos.Fixture { communalInteractor }
@@ -122,6 +127,32 @@ class CommunalInteractorTest(flags: FlagsParameterization) : SysuiTestCase() {
kosmos.fakeFeatureFlagsClassic.set(Flags.COMMUNAL_SERVICE_ENABLED, true)
mSetFlagsRule.enableFlags(FLAG_COMMUNAL_HUB)
+
+ mContext.orCreateTestableResources.addOverride(
+ com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault,
+ false,
+ )
+ mContext.orCreateTestableResources.addOverride(
+ com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault,
+ false,
+ )
+ mContext.orCreateTestableResources.addOverride(
+ com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault,
+ false,
+ )
+ }
+
+ @After
+ fun tearDown() {
+ mContext.orCreateTestableResources.removeOverride(
+ com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault
+ )
+ mContext.orCreateTestableResources.removeOverride(
+ com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault
+ )
+ mContext.orCreateTestableResources.removeOverride(
+ com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault
+ )
}
@Test
@@ -398,6 +429,7 @@ class CommunalInteractorTest(flags: FlagsParameterization) : SysuiTestCase() {
}
@Test
+ @DisableFlags(FLAG_GLANCEABLE_HUB_V2)
fun ctaTile_showsByDefault() =
kosmos.runTest {
fakeCommunalTutorialRepository.setTutorialSettingState(HUB_MODE_TUTORIAL_COMPLETED)
@@ -412,6 +444,7 @@ class CommunalInteractorTest(flags: FlagsParameterization) : SysuiTestCase() {
}
@Test
+ @DisableFlags(FLAG_GLANCEABLE_HUB_V2)
fun ctaTile_afterDismiss_doesNotShow() =
kosmos.runTest {
// Set to main user, so we can dismiss the tile for the main user.
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalSceneInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalSceneInteractorTest.kt
index 6a9b9beaa614..77d7091e463a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalSceneInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalSceneInteractorTest.kt
@@ -35,7 +35,6 @@ import com.android.systemui.scene.initialSceneKey
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.advanceTimeBy
@@ -126,7 +125,6 @@ class CommunalSceneInteractorTest(flags: FlagsParameterization) : SysuiTestCase(
assertThat(currentScene).isEqualTo(CommunalScenes.Communal)
}
- @OptIn(ExperimentalCoroutinesApi::class)
@DisableFlags(FLAG_SCENE_CONTAINER)
@Test
fun snapToSceneWithDelay() =
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalSceneTransitionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalSceneTransitionInteractorTest.kt
index d5020a580d00..ff722bf602bc 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalSceneTransitionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalSceneTransitionInteractorTest.kt
@@ -51,7 +51,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import kotlin.time.Duration.Companion.seconds
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
@@ -63,7 +62,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@EnableFlags(FLAG_COMMUNAL_HUB, FLAG_COMMUNAL_SCENE_KTF_REFACTOR)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalTutorialInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalTutorialInteractorTest.kt
index 8a9c42d9b64e..feee9e3d62d2 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalTutorialInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalTutorialInteractorTest.kt
@@ -36,7 +36,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.user.data.repository.FakeUserRepository
import com.android.systemui.user.data.repository.fakeUserRepository
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -44,7 +43,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class CommunalTutorialInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/WidgetTrampolineInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/WidgetTrampolineInteractorTest.kt
index d6734e85ed77..d15ec2ff193e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/WidgetTrampolineInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/WidgetTrampolineInteractorTest.kt
@@ -38,7 +38,6 @@ import com.android.systemui.util.time.fakeSystemClock
import kotlin.time.Duration
import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.seconds
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceTimeBy
@@ -56,7 +55,6 @@ import org.mockito.kotlin.never
import org.mockito.kotlin.times
import org.mockito.kotlin.verify
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class WidgetTrampolineInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/log/CommunalLoggerStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/log/CommunalLoggerStartableTest.kt
index 28ad269776f9..358cae7c9cdb 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/log/CommunalLoggerStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/log/CommunalLoggerStartableTest.kt
@@ -31,7 +31,6 @@ import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.flowOf
@@ -48,7 +47,6 @@ import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class CommunalLoggerStartableTest : SysuiTestCase() {
@Mock private lateinit var uiEventLogger: UiEventLogger
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModelTest.kt
index 0084e18f519f..1a3606e413cc 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/CommunalTransitionViewModelTest.kt
@@ -35,7 +35,6 @@ import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -45,7 +44,6 @@ import org.junit.runner.RunWith
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
class CommunalTransitionViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModelTest.kt
index 5510710b9b3f..c158baf5a80c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModelTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.communal.ui.viewmodel
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -46,7 +44,6 @@ import com.android.systemui.shade.domain.interactor.enableSplitShade
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/ResizeableItemFrameViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/ResizeableItemFrameViewModelTest.kt
index bea1010d8887..3ad798139107 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/ResizeableItemFrameViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/viewmodel/ResizeableItemFrameViewModelTest.kt
@@ -26,7 +26,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.lifecycle.activateIn
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -34,7 +33,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class ResizeableItemFrameViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/widgets/CommunalAppWidgetHostTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/widgets/CommunalAppWidgetHostTest.kt
index 18513fc496b4..30c41c8f7ec6 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/widgets/CommunalAppWidgetHostTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/ui/widgets/CommunalAppWidgetHostTest.kt
@@ -32,7 +32,6 @@ import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -42,7 +41,6 @@ import org.mockito.Mockito.clearInvocations
import org.mockito.Mockito.never
import org.mockito.Mockito.verify
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWithLooper(setAsMainLooper = true)
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalLockIconViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalLockIconViewModelTest.kt
new file mode 100644
index 000000000000..c535831a27e7
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalLockIconViewModelTest.kt
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.communal.view.viewmodel
+
+import android.platform.test.flag.junit.FlagsParameterization
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.accessibility.domain.interactor.accessibilityInteractor
+import com.android.systemui.authentication.data.repository.FakeAuthenticationRepository
+import com.android.systemui.authentication.domain.interactor.AuthenticationResult
+import com.android.systemui.authentication.domain.interactor.authenticationInteractor
+import com.android.systemui.common.ui.domain.interactor.configurationInteractor
+import com.android.systemui.communal.ui.viewmodel.CommunalLockIconViewModel
+import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor
+import com.android.systemui.deviceentry.domain.interactor.deviceEntrySourceInteractor
+import com.android.systemui.deviceentry.domain.interactor.deviceUnlockedInteractor
+import com.android.systemui.flags.andSceneContainer
+import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
+import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
+import com.android.systemui.keyguard.ui.view.DeviceEntryIconView
+import com.android.systemui.keyguard.ui.viewmodel.DeviceEntryIconViewModel
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.backgroundScope
+import com.android.systemui.kosmos.collectLastValue
+import com.android.systemui.kosmos.runTest
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.kosmos.useUnconfinedTestDispatcher
+import com.android.systemui.scene.shared.flag.SceneContainerFlag
+import com.android.systemui.statusbar.phone.statusBarKeyguardViewManager
+import com.android.systemui.testKosmos
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.test.advanceTimeBy
+import org.junit.Test
+import org.junit.runner.RunWith
+import platform.test.runner.parameterized.ParameterizedAndroidJunit4
+import platform.test.runner.parameterized.Parameters
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@SmallTest
+@RunWith(ParameterizedAndroidJunit4::class)
+class CommunalLockIconViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
+ companion object {
+ @JvmStatic
+ @Parameters(name = "{0}")
+ fun getParams(): List<FlagsParameterization> {
+ return FlagsParameterization.allCombinationsOf().andSceneContainer()
+ }
+ }
+
+ init {
+ mSetFlagsRule.setFlagsParameterization(flags)
+ }
+
+ private val kosmos = testKosmos().useUnconfinedTestDispatcher()
+
+ private val Kosmos.underTest by
+ Kosmos.Fixture {
+ CommunalLockIconViewModel(
+ context = context,
+ configurationInteractor = configurationInteractor,
+ deviceEntryInteractor = deviceEntryInteractor,
+ keyguardInteractor = keyguardInteractor,
+ keyguardViewController = { statusBarKeyguardViewManager },
+ deviceEntrySourceInteractor = deviceEntrySourceInteractor,
+ accessibilityInteractor = accessibilityInteractor,
+ )
+ }
+
+ @Test
+ fun isLongPressEnabled_unlocked() =
+ kosmos.runTest {
+ val isLongPressEnabled by collectLastValue(underTest.isLongPressEnabled)
+ setLockscreenDismissible()
+ assertThat(isLongPressEnabled).isTrue()
+ }
+
+ @Test
+ fun isLongPressEnabled_lock() =
+ kosmos.runTest {
+ val isLongPressEnabled by collectLastValue(underTest.isLongPressEnabled)
+ if (!SceneContainerFlag.isEnabled) {
+ fakeKeyguardRepository.setKeyguardDismissible(false)
+ }
+ assertThat(isLongPressEnabled).isFalse()
+ }
+
+ @Test
+ fun iconType_locked() =
+ kosmos.runTest {
+ val viewAttributes by collectLastValue(underTest.viewAttributes)
+ if (!SceneContainerFlag.isEnabled) {
+ fakeKeyguardRepository.setKeyguardDismissible(false)
+ }
+ assertThat(viewAttributes?.type).isEqualTo(DeviceEntryIconView.IconType.LOCK)
+ }
+
+ @Test
+ fun iconType_unlocked() =
+ kosmos.runTest {
+ val viewAttributes by collectLastValue(underTest.viewAttributes)
+ setLockscreenDismissible()
+ assertThat(viewAttributes?.type).isEqualTo(DeviceEntryIconView.IconType.UNLOCK)
+ }
+
+ private suspend fun Kosmos.setLockscreenDismissible() {
+ if (SceneContainerFlag.isEnabled) {
+ // Need to set up a collection for the authentication to be propagated.
+ backgroundScope.launch { kosmos.deviceUnlockedInteractor.deviceUnlockStatus.collect {} }
+ assertThat(
+ kosmos.authenticationInteractor.authenticate(
+ FakeAuthenticationRepository.DEFAULT_PIN
+ )
+ )
+ .isEqualTo(AuthenticationResult.SUCCEEDED)
+ } else {
+ fakeKeyguardRepository.setKeyguardDismissible(true)
+ }
+ testScope.advanceTimeBy(
+ DeviceEntryIconViewModel.UNLOCKED_DELAY_MS * 2
+ ) // wait for unlocked delay
+ }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt
index b70f46c4b01c..dbdd7fb2773a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt
@@ -29,6 +29,7 @@ import com.android.systemui.Flags.FLAG_BOUNCER_UI_REVAMP
import com.android.systemui.Flags.FLAG_COMMUNAL_HUB
import com.android.systemui.Flags.FLAG_COMMUNAL_RESPONSIVE_GRID
import com.android.systemui.Flags.FLAG_GLANCEABLE_HUB_DIRECT_EDIT_MODE
+import com.android.systemui.Flags.FLAG_GLANCEABLE_HUB_V2
import com.android.systemui.SysuiTestCase
import com.android.systemui.bouncer.data.repository.fakeKeyguardBouncerRepository
import com.android.systemui.communal.data.model.CommunalSmartspaceTimer
@@ -94,7 +95,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.user.data.repository.FakeUserRepository
import com.android.systemui.user.data.repository.fakeUserRepository
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.runCurrent
@@ -116,7 +116,6 @@ import org.mockito.kotlin.whenever
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
class CommunalViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
@@ -219,6 +218,7 @@ class CommunalViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
}
@Test
+ @DisableFlags(FLAG_GLANCEABLE_HUB_V2)
fun ordering_smartspaceBeforeUmoBeforeWidgetsBeforeCtaTile() =
testScope.runTest {
tutorialRepository.setTutorialSettingState(Settings.Secure.HUB_MODE_TUTORIAL_COMPLETED)
@@ -258,7 +258,7 @@ class CommunalViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
/** TODO(b/378171351): Handle ongoing content in responsive grid. */
@Test
- @DisableFlags(FLAG_COMMUNAL_RESPONSIVE_GRID)
+ @DisableFlags(FLAG_COMMUNAL_RESPONSIVE_GRID, FLAG_GLANCEABLE_HUB_V2)
fun ongoingContent_umoAndOneTimer_sizedAppropriately() =
testScope.runTest {
// Widgets available.
@@ -296,7 +296,7 @@ class CommunalViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
/** TODO(b/378171351): Handle ongoing content in responsive grid. */
@Test
- @DisableFlags(FLAG_COMMUNAL_RESPONSIVE_GRID)
+ @DisableFlags(FLAG_COMMUNAL_RESPONSIVE_GRID, FLAG_GLANCEABLE_HUB_V2)
fun ongoingContent_umoAndTwoTimers_sizedAppropriately() =
testScope.runTest {
// Widgets available.
@@ -342,6 +342,7 @@ class CommunalViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
}
@Test
+ @DisableFlags(FLAG_GLANCEABLE_HUB_V2)
fun communalContent_mediaHostVisible_umoIncluded() =
testScope.runTest {
// Media playing.
@@ -353,6 +354,7 @@ class CommunalViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
}
@Test
+ @DisableFlags(FLAG_GLANCEABLE_HUB_V2)
fun communalContent_mediaHostVisible_umoExcluded() =
testScope.runTest {
whenever(mediaHost.visible).thenReturn(false)
@@ -408,6 +410,7 @@ class CommunalViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
}
@Test
+ @DisableFlags(FLAG_GLANCEABLE_HUB_V2)
fun dismissCta_hidesCtaTileAndShowsPopup_thenHidesPopupAfterTimeout() =
testScope.runTest {
setIsMainUser(true)
@@ -734,6 +737,7 @@ class CommunalViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
}
@Test
+ @DisableFlags(FLAG_GLANCEABLE_HUB_V2)
fun communalContent_emitsFrozenContent_whenFrozen() =
testScope.runTest {
val communalContent by collectLastValue(underTest.communalContent)
@@ -790,6 +794,7 @@ class CommunalViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
}
@Test
+ @DisableFlags(FLAG_GLANCEABLE_HUB_V2)
fun communalContent_emitsLatestContent_whenNotFrozen() =
testScope.runTest {
val communalContent by collectLastValue(underTest.communalContent)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/CommunalAppWidgetHostStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/CommunalAppWidgetHostStartableTest.kt
index 9ef2b190fdd7..95681941a1c1 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/CommunalAppWidgetHostStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/CommunalAppWidgetHostStartableTest.kt
@@ -41,7 +41,6 @@ import com.android.systemui.user.data.repository.fakeUserRepository
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -53,7 +52,6 @@ import org.mockito.Mockito.never
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class CommunalAppWidgetHostStartableTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/CommunalTransitionAnimatorControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/CommunalTransitionAnimatorControllerTest.kt
index a052b078167d..a4261b0ea844 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/CommunalTransitionAnimatorControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/CommunalTransitionAnimatorControllerTest.kt
@@ -26,7 +26,6 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.runTest
import org.junit.Assert.assertFalse
@@ -37,7 +36,6 @@ import org.junit.runner.RunWith
import org.mockito.kotlin.mock
import org.mockito.kotlin.verify
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class CommunalTransitionAnimatorControllerTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/EditWidgetsActivityControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/EditWidgetsActivityControllerTest.kt
index 3ba86254d2f4..9525496e1472 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/EditWidgetsActivityControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/EditWidgetsActivityControllerTest.kt
@@ -22,7 +22,6 @@ import android.os.Bundle
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.argumentCaptor
@@ -32,7 +31,6 @@ import org.mockito.kotlin.never
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class EditWidgetsActivityControllerTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/EditWidgetsActivityStarterTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/EditWidgetsActivityStarterTest.kt
index 48b42d551d60..807023cbd59d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/EditWidgetsActivityStarterTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/EditWidgetsActivityStarterTest.kt
@@ -25,7 +25,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
@@ -37,7 +36,6 @@ import org.mockito.kotlin.mock
import org.mockito.kotlin.times
import org.mockito.kotlin.verify
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class EditWidgetsActivityStarterTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/GlanceableHubWidgetManagerServiceTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/GlanceableHubWidgetManagerServiceTest.kt
index c3c958ca0e94..a2f702c672ff 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/GlanceableHubWidgetManagerServiceTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/GlanceableHubWidgetManagerServiceTest.kt
@@ -39,7 +39,6 @@ import com.android.systemui.log.logcatLogBuffer
import com.android.systemui.testKosmos
import com.android.systemui.utils.coroutines.flow.conflatedCallbackFlow
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -54,7 +53,6 @@ import org.mockito.kotlin.never
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@TestableLooper.RunWithLooper(setAsMainLooper = true)
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/WidgetConfigurationControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/WidgetConfigurationControllerTest.kt
index e1bdf1c42c9a..8ad9048742c1 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/WidgetConfigurationControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/WidgetConfigurationControllerTest.kt
@@ -31,7 +31,6 @@ import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.async
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -47,7 +46,6 @@ import org.mockito.kotlin.mock
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class WidgetConfigurationControllerTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/WidgetInteractionHandlerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/WidgetInteractionHandlerTest.kt
index 9c308a60d3f0..ed4e73a40979 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/WidgetInteractionHandlerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/widgets/WidgetInteractionHandlerTest.kt
@@ -36,7 +36,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.log.logcatLogBuffer
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.testKosmos
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Assert.assertFalse
@@ -52,7 +51,6 @@ import org.mockito.kotlin.mock
import org.mockito.kotlin.refEq
import org.mockito.kotlin.verify
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class WidgetInteractionHandlerTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/complication/ComplicationHostViewControllerTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/complication/ComplicationHostViewControllerTest.java
index 2ae611d236e9..3e5e72deb208 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/complication/ComplicationHostViewControllerTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/complication/ComplicationHostViewControllerTest.java
@@ -22,8 +22,12 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.content.res.Configuration;
+import android.graphics.Rect;
import android.os.UserHandle;
import android.provider.Settings;
+import android.testing.TestableLooper;
+import android.testing.ViewUtils;
import android.view.View;
import androidx.constraintlayout.widget.ConstraintLayout;
@@ -35,6 +39,7 @@ import androidx.test.filters.SmallTest;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.dreams.DreamOverlayStateController;
+import com.android.systemui.kosmos.KosmosJavaAdapter;
import com.android.systemui.util.settings.FakeSettings;
import com.android.systemui.util.settings.SecureSettings;
@@ -52,8 +57,8 @@ import java.util.HashSet;
@SmallTest
@RunWith(AndroidJUnit4.class)
+@TestableLooper.RunWithLooper(setAsMainLooper = true)
public class ComplicationHostViewControllerTest extends SysuiTestCase {
- @Mock
ConstraintLayout mComplicationHostView;
@Mock
@@ -99,6 +104,10 @@ public class ComplicationHostViewControllerTest extends SysuiTestCase {
private SecureSettings mSecureSettings;
+ private KosmosJavaAdapter mKosmos;
+
+ private TestableLooper mLooper;
+
private static final int CURRENT_USER_ID = UserHandle.USER_SYSTEM;
@Before
@@ -113,9 +122,12 @@ public class ComplicationHostViewControllerTest extends SysuiTestCase {
when(mViewHolder.getLayoutParams()).thenReturn(mComplicationLayoutParams);
when(mComplicationView.getParent()).thenReturn(mComplicationHostView);
+ mLooper = TestableLooper.get(this);
+ mKosmos = new KosmosJavaAdapter(this);
mSecureSettings = new FakeSettings();
+ mComplicationHostView = new ConstraintLayout(getContext());
mSecureSettings.putFloatForUser(
- Settings.Global.ANIMATOR_DURATION_SCALE, 1.0f, CURRENT_USER_ID);
+ Settings.Global.ANIMATOR_DURATION_SCALE, 1.0f, CURRENT_USER_ID);
mController = new ComplicationHostViewController(
mComplicationHostView,
@@ -123,12 +135,35 @@ public class ComplicationHostViewControllerTest extends SysuiTestCase {
mDreamOverlayStateController,
mLifecycleOwner,
mViewModel,
- mSecureSettings);
+ mSecureSettings,
+ mKosmos.getConfigurationInteractor(),
+ mKosmos.getTestDispatcher()
+ );
mController.init();
}
/**
+ * Ensures layout engine update is called on configuration change.
+ */
+ @Test
+ public void testUpdateLayoutEngineOnConfigurationChange() {
+ mController.onViewAttached();
+ // Attach the complication host view so flows collecting on it start running.
+ ViewUtils.attachView(mComplicationHostView);
+ mLooper.processAllMessages();
+
+ // emit configuration change
+ Rect bounds = new Rect(0, 0, 2000, 2000);
+ Configuration config = new Configuration();
+ config.windowConfiguration.setMaxBounds(bounds);
+ mKosmos.getConfigurationRepository().onConfigurationChange(config);
+ mKosmos.getTestScope().getTestScheduler().runCurrent();
+
+ verify(mLayoutEngine).updateLayoutEngine(bounds);
+ }
+
+ /**
* Ensures the lifecycle of complications is properly handled.
*/
@Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/complication/ComplicationLayoutEngineTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/complication/ComplicationLayoutEngineTest.java
index 383e0fab73ff..35eb2527bd1d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/complication/ComplicationLayoutEngineTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/complication/ComplicationLayoutEngineTest.java
@@ -18,10 +18,12 @@ package com.android.systemui.complication;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.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.graphics.Rect;
import android.view.View;
import androidx.constraintlayout.widget.ConstraintLayout;
@@ -56,12 +58,14 @@ public class ComplicationLayoutEngineTest extends SysuiTestCase {
@Mock
TouchInsetManager.TouchInsetSession mTouchSession;
+ Margins mMargins = new Margins(0, 0, 0, 0);
+
ComplicationLayoutEngine createComplicationLayoutEngine() {
return createComplicationLayoutEngine(0);
}
ComplicationLayoutEngine createComplicationLayoutEngine(int spacing) {
- return new ComplicationLayoutEngine(mLayout, spacing, 0, 0, 0, 0, mTouchSession, 0, 0);
+ return new ComplicationLayoutEngine(mLayout, spacing, () -> mMargins, mTouchSession, 0, 0);
}
@Before
@@ -84,7 +88,7 @@ public class ComplicationLayoutEngineTest extends SysuiTestCase {
ConstraintLayout layout) {
this.lp = params;
this.category = category;
- this.view = Mockito.mock(View.class);
+ this.view = mock(View.class);
this.id = sFactory.getNextId();
when(view.getId()).thenReturn(sNextId++);
when(view.getParent()).thenReturn(layout);
@@ -131,15 +135,10 @@ public class ComplicationLayoutEngineTest extends SysuiTestCase {
@Test
public void testComplicationMarginPosition() {
final Random rand = new Random();
- final int startMargin = rand.nextInt();
- final int topMargin = rand.nextInt();
- final int endMargin = rand.nextInt();
- final int bottomMargin = rand.nextInt();
final int spacing = rand.nextInt();
-
- final ComplicationLayoutEngine engine = new ComplicationLayoutEngine(mLayout, spacing,
- startMargin, topMargin, endMargin, bottomMargin, mTouchSession, 0, 0);
-
+ mMargins = new Margins(rand.nextInt(), rand.nextInt(), rand.nextInt(),
+ rand.nextInt());
+ final ComplicationLayoutEngine engine = createComplicationLayoutEngine(spacing);
final ViewInfo firstViewInfo = new ViewInfo(
new ComplicationLayoutParams(
100,
@@ -167,17 +166,67 @@ public class ComplicationLayoutEngineTest extends SysuiTestCase {
addComplication(engine, secondViewInfo);
-
// The first added view should have margins from both directions from the corner position.
verifyChange(firstViewInfo, false, lp -> {
- assertThat(lp.topMargin).isEqualTo(topMargin);
- assertThat(lp.getMarginEnd()).isEqualTo(endMargin);
+ assertThat(lp.topMargin).isEqualTo(mMargins.top);
+ assertThat(lp.getMarginEnd()).isEqualTo(mMargins.end);
});
// The second view should be spaced below the first view and have the side end margin.
verifyChange(secondViewInfo, false, lp -> {
assertThat(lp.topMargin).isEqualTo(spacing);
- assertThat(lp.getMarginEnd()).isEqualTo(endMargin);
+ assertThat(lp.getMarginEnd()).isEqualTo(mMargins.end);
+ });
+ }
+
+ @Test
+ public void testComplicationMarginsOnScreenSizeChange() {
+ final Random rand = new Random();
+ final int spacing = rand.nextInt();
+ final ComplicationLayoutEngine engine = createComplicationLayoutEngine(spacing);
+ final ViewInfo firstViewInfo = new ViewInfo(
+ new ComplicationLayoutParams(
+ 100,
+ 100,
+ ComplicationLayoutParams.POSITION_TOP
+ | ComplicationLayoutParams.POSITION_END,
+ ComplicationLayoutParams.DIRECTION_DOWN,
+ 0),
+ Complication.CATEGORY_SYSTEM,
+ mLayout);
+
+ addComplication(engine, firstViewInfo);
+
+ final ViewInfo secondViewInfo = new ViewInfo(
+ new ComplicationLayoutParams(
+ 100,
+ 100,
+ ComplicationLayoutParams.POSITION_TOP
+ | ComplicationLayoutParams.POSITION_END,
+ ComplicationLayoutParams.DIRECTION_DOWN,
+ 0),
+ Complication.CATEGORY_STANDARD,
+ mLayout);
+
+ addComplication(engine, secondViewInfo);
+
+ firstViewInfo.clearInvocations();
+ secondViewInfo.clearInvocations();
+
+ // Triggers an update to the layout engine with new margins.
+ final int newTopMargin = rand.nextInt();
+ final int newEndMargin = rand.nextInt();
+ mMargins = new Margins(0, newTopMargin, newEndMargin, 0);
+ engine.updateLayoutEngine(new Rect(0, 0, 800, 1000));
+
+ // Ensure complication view have new margins
+ verifyChange(firstViewInfo, false, lp -> {
+ assertThat(lp.topMargin).isEqualTo(newTopMargin);
+ assertThat(lp.getMarginEnd()).isEqualTo(newEndMargin);
+ });
+ verifyChange(secondViewInfo, false, lp -> {
+ assertThat(lp.topMargin).isEqualTo(spacing);
+ assertThat(lp.getMarginEnd()).isEqualTo(newEndMargin);
});
}
@@ -241,7 +290,6 @@ public class ComplicationLayoutEngineTest extends SysuiTestCase {
@Test
public void testDirectionLayout() {
final ComplicationLayoutEngine engine = createComplicationLayoutEngine();
-
final ViewInfo firstViewInfo = new ViewInfo(
new ComplicationLayoutParams(
100,
@@ -289,7 +337,6 @@ public class ComplicationLayoutEngineTest extends SysuiTestCase {
@Test
public void testPositionLayout() {
final ComplicationLayoutEngine engine = createComplicationLayoutEngine();
-
final ViewInfo firstViewInfo = new ViewInfo(
new ComplicationLayoutParams(
100,
@@ -376,7 +423,6 @@ public class ComplicationLayoutEngineTest extends SysuiTestCase {
public void testDefaultMargin() {
final int margin = 5;
final ComplicationLayoutEngine engine = createComplicationLayoutEngine(margin);
-
final ViewInfo firstViewInfo = new ViewInfo(
new ComplicationLayoutParams(
100,
@@ -452,7 +498,6 @@ public class ComplicationLayoutEngineTest extends SysuiTestCase {
final int defaultMargin = 5;
final int complicationMargin = 10;
final ComplicationLayoutEngine engine = createComplicationLayoutEngine(defaultMargin);
-
final ViewInfo firstViewInfo = new ViewInfo(
new ComplicationLayoutParams(
100,
@@ -518,7 +563,6 @@ public class ComplicationLayoutEngineTest extends SysuiTestCase {
public void testWidthConstraint() {
final int maxWidth = 20;
final ComplicationLayoutEngine engine = createComplicationLayoutEngine();
-
final ViewInfo viewStartDirection = new ViewInfo(
new ComplicationLayoutParams(
100,
@@ -566,7 +610,6 @@ public class ComplicationLayoutEngineTest extends SysuiTestCase {
public void testHeightConstraint() {
final int maxHeight = 20;
final ComplicationLayoutEngine engine = createComplicationLayoutEngine();
-
final ViewInfo viewUpDirection = new ViewInfo(
new ComplicationLayoutParams(
100,
@@ -613,7 +656,6 @@ public class ComplicationLayoutEngineTest extends SysuiTestCase {
@Test
public void testConstraintNotSetWhenNotSpecified() {
final ComplicationLayoutEngine engine = createComplicationLayoutEngine();
-
final ViewInfo view = new ViewInfo(
new ComplicationLayoutParams(
100,
@@ -641,7 +683,6 @@ public class ComplicationLayoutEngineTest extends SysuiTestCase {
@Test
public void testRemoval() {
final ComplicationLayoutEngine engine = createComplicationLayoutEngine();
-
final ViewInfo firstViewInfo = new ViewInfo(
new ComplicationLayoutParams(
100,
@@ -687,7 +728,6 @@ public class ComplicationLayoutEngineTest extends SysuiTestCase {
@Test
public void testDoubleRemoval() {
final ComplicationLayoutEngine engine = createComplicationLayoutEngine();
-
final ViewInfo firstViewInfo = new ViewInfo(
new ComplicationLayoutParams(
100,
@@ -716,7 +756,6 @@ public class ComplicationLayoutEngineTest extends SysuiTestCase {
@Test
public void testGetViews() {
final ComplicationLayoutEngine engine = createComplicationLayoutEngine();
-
final ViewInfo topEndView = new ViewInfo(
new ComplicationLayoutParams(
100,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/complication/DreamClockTimeComplicationTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/complication/DreamClockTimeComplicationTest.java
index 22ab4994f026..92ccf1294554 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/complication/DreamClockTimeComplicationTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/complication/DreamClockTimeComplicationTest.java
@@ -23,7 +23,7 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
-import android.view.View;
+import android.widget.TextClock;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
@@ -41,6 +41,8 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import java.util.Locale;
+
@SmallTest
@RunWith(AndroidJUnit4.class)
public class DreamClockTimeComplicationTest extends SysuiTestCase {
@@ -68,7 +70,7 @@ public class DreamClockTimeComplicationTest extends SysuiTestCase {
private ComplicationViewModel mComplicationViewModel;
@Mock
- private View mView;
+ private TextClock mView;
@Mock
private ComplicationLayoutParams mLayoutParams;
@@ -86,6 +88,7 @@ public class DreamClockTimeComplicationTest extends SysuiTestCase {
MockitoAnnotations.initMocks(this);
when(mComponentFactory.create()).thenReturn(mComponent);
when(mComponent.getViewHolder()).thenReturn(mDreamClockTimeViewHolder);
+ when(mView.getTextLocale()).thenReturn(Locale.US);
mMonitor = SelfExecutingMonitor.createInstance();
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/controls/panels/SelectedComponentRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/controls/panels/SelectedComponentRepositoryTest.kt
index 86e3481ff263..0545665dd2ca 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/controls/panels/SelectedComponentRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/controls/panels/SelectedComponentRepositoryTest.kt
@@ -33,7 +33,6 @@ import com.android.systemui.util.FakeSharedPreferences
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import java.io.File
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.advanceUntilIdle
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -42,7 +41,6 @@ import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.MockitoAnnotations
-@ExperimentalCoroutinesApi
@RunWith(AndroidJUnit4::class)
@SmallTest
class SelectedComponentRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/controls/settings/ControlsSettingsRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/controls/settings/ControlsSettingsRepositoryImplTest.kt
index 3bdd5cf8cfe7..43945fa72ea0 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/controls/settings/ControlsSettingsRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/controls/settings/ControlsSettingsRepositoryImplTest.kt
@@ -25,7 +25,6 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.user.data.repository.FakeUserRepository
import com.android.systemui.util.settings.FakeSettings
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.TestScope
@@ -37,7 +36,6 @@ import org.junit.runner.RunWith
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class ControlsSettingsRepositoryImplTest : SysuiTestCase() {
companion object {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/controls/start/ControlsStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/controls/start/ControlsStartableTest.kt
index 0d8312e7f264..11c6fed5f0c1 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/controls/start/ControlsStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/controls/start/ControlsStartableTest.kt
@@ -57,7 +57,6 @@ import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import java.util.Optional
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -73,7 +72,6 @@ import org.mockito.Mockito.verifyNoMoreInteractions
import org.mockito.Mockito.`when`
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class ControlsStartableTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/coroutines/FlowTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/coroutines/FlowTest.kt
index 23da3f1d3ac0..7a77f0d6eb9b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/coroutines/FlowTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/coroutines/FlowTest.kt
@@ -4,13 +4,11 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class FlowTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/demomode/DemoModeControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/demomode/DemoModeControllerTest.kt
index 4793a52f3497..014a4189a340 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/demomode/DemoModeControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/demomode/DemoModeControllerTest.kt
@@ -27,7 +27,6 @@ import com.android.systemui.demomode.DemoMode.COMMAND_STATUS
import com.android.systemui.dump.DumpManager
import com.android.systemui.util.settings.FakeGlobalSettings
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
@@ -39,7 +38,6 @@ import org.mockito.Mock
import org.mockito.MockitoAnnotations
@Suppress("EXPERIMENTAL_IS_NOT_ENABLED")
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper
@SmallTest
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceconfig/data/repository/DeviceConfigRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceconfig/data/repository/DeviceConfigRepositoryTest.kt
index 79115ae2ebdd..844c9bf8c97c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceconfig/data/repository/DeviceConfigRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceconfig/data/repository/DeviceConfigRepositoryTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.deviceconfig.data.repository
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -27,7 +25,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.android.systemui.util.fakeDeviceConfigProxy
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepositoryTest.kt
index 71abed78e557..f6016c6479ac 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepositoryTest.kt
@@ -93,7 +93,6 @@ import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import java.io.PrintWriter
import java.io.StringWriter
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.TestScope
@@ -116,7 +115,6 @@ import org.mockito.Mockito.verify
import org.mockito.Mockito.verifyNoMoreInteractions
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class DeviceEntryFaceAuthRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/data/repository/DeviceEntryRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/data/repository/DeviceEntryRepositoryTest.kt
index 73373d553560..89ad668f1e2f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/data/repository/DeviceEntryRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/data/repository/DeviceEntryRepositoryTest.kt
@@ -13,7 +13,6 @@ import com.android.systemui.user.data.repository.FakeUserRepository
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.mockito.withArgCaptor
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -24,7 +23,6 @@ import org.mockito.Mock
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@android.platform.test.annotations.EnabledOnRavenwood
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/AuthRippleInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/AuthRippleInteractorTest.kt
index 3005d0b0d160..5e2e07c88f24 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/AuthRippleInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/AuthRippleInteractorTest.kt
@@ -27,13 +27,11 @@ import com.android.systemui.keyguard.shared.model.BiometricUnlockSource
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class AuthRippleInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractorTest.kt
index 6fd866066879..f44b9fea3437 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractorTest.kt
@@ -45,14 +45,12 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyInt
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class BiometricMessageInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryBiometricSettingsInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryBiometricSettingsInteractorTest.kt
index 4a7757ba1820..2d69227bb4a7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryBiometricSettingsInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryBiometricSettingsInteractorTest.kt
@@ -24,12 +24,10 @@ import com.android.systemui.keyguard.data.repository.biometricSettingsRepository
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class DeviceEntryBiometricSettingsInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryBiometricsAllowedInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryBiometricsAllowedInteractorTest.kt
index 295a626d2028..46b2986c376d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryBiometricsAllowedInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryBiometricsAllowedInteractorTest.kt
@@ -30,12 +30,10 @@ import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintA
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class DeviceEntryBiometricsAllowedInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthInteractorTest.kt
index a0c56b4a27a6..329627af8ec2 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthInteractorTest.kt
@@ -61,7 +61,6 @@ import com.android.systemui.user.data.model.SelectionStatus
import com.android.systemui.user.data.repository.fakeUserRepository
import com.android.systemui.util.mockito.eq
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.TestScope
@@ -74,7 +73,6 @@ import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mockito.never
import org.mockito.Mockito.verify
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class DeviceEntryFaceAuthInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthStatusInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthStatusInteractorTest.kt
index 6022d9cfcbfd..886351c4bad6 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthStatusInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthStatusInteractorTest.kt
@@ -33,7 +33,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.res.R
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -42,7 +41,6 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito.mock
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class DeviceEntryFaceAuthStatusInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryHapticsInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryHapticsInteractorTest.kt
index 5fd480f90ac9..e0515000b232 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryHapticsInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryHapticsInteractorTest.kt
@@ -56,7 +56,6 @@ import com.android.systemui.statusbar.phone.dozeScrimController
import com.android.systemui.statusbar.phone.screenOffAnimationController
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceTimeBy
@@ -68,7 +67,6 @@ import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyBoolean
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class DeviceEntryHapticsInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorTest.kt
index 1bb5c9afdc33..84f08f14a86a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorTest.kt
@@ -49,7 +49,6 @@ import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.statusbar.sysuiStatusBarStateController
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -58,7 +57,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@EnableSceneContainer
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntrySourceInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntrySourceInteractorTest.kt
index b3c891dc9ac6..a5c0da52d86d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntrySourceInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntrySourceInteractorTest.kt
@@ -52,7 +52,6 @@ import com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POST
import com.android.systemui.statusbar.policy.devicePostureController
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -62,7 +61,6 @@ import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyBoolean
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class DeviceEntrySourceInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryUdfpsInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryUdfpsInteractorTest.kt
index d5839b502625..db594a553712 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryUdfpsInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryUdfpsInteractorTest.kt
@@ -31,13 +31,11 @@ import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintA
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class DeviceEntryUdfpsInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractorTest.kt
index 030233625027..1ce2bc9da7de 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractorTest.kt
@@ -49,7 +49,6 @@ import com.android.systemui.user.data.repository.fakeUserRepository
import com.android.systemui.user.domain.interactor.selectedUserInteractor
import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceTimeBy
@@ -59,7 +58,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class DeviceUnlockedInteractorTest : SysuiTestCase() {
@@ -570,7 +568,7 @@ class DeviceUnlockedInteractorTest : SysuiTestCase() {
unlockDevice()
assertThat(isUnlocked).isTrue()
- underTest.lockNow()
+ underTest.lockNow("test")
runCurrent()
assertThat(isUnlocked).isFalse()
@@ -597,6 +595,62 @@ class DeviceUnlockedInteractorTest : SysuiTestCase() {
assertThat(deviceUnlockStatus?.isUnlocked).isFalse()
}
+ @Test
+ fun deviceUnlockStatus_staysUnlocked_whenDeviceGoesToSleep_whileIsTrusted() =
+ testScope.runTest {
+ setLockAfterScreenTimeout(5000)
+ kosmos.fakeAuthenticationRepository.powerButtonInstantlyLocks = false
+ val deviceUnlockStatus by collectLastValue(underTest.deviceUnlockStatus)
+
+ kosmos.fakeTrustRepository.setCurrentUserTrusted(true)
+
+ kosmos.fakeDeviceEntryFingerprintAuthRepository.setAuthenticationStatus(
+ SuccessFingerprintAuthenticationStatus(0, true)
+ )
+ runCurrent()
+ assertThat(deviceUnlockStatus?.isUnlocked).isTrue()
+
+ kosmos.powerInteractor.setAsleepForTest(
+ sleepReason = PowerManager.GO_TO_SLEEP_REASON_SLEEP_BUTTON
+ )
+ runCurrent()
+
+ assertThat(deviceUnlockStatus?.isUnlocked).isTrue()
+ }
+
+ @Test
+ fun deviceUnlockStatus_staysUnlocked_whileIsTrusted() =
+ testScope.runTest {
+ val deviceUnlockStatus by collectLastValue(underTest.deviceUnlockStatus)
+ kosmos.fakeTrustRepository.setCurrentUserTrusted(true)
+ unlockDevice()
+
+ kosmos.powerInteractor.setAsleepForTest(
+ sleepReason = PowerManager.GO_TO_SLEEP_REASON_SLEEP_BUTTON
+ )
+ runCurrent()
+
+ assertThat(deviceUnlockStatus?.isUnlocked).isTrue()
+ }
+
+ @Test
+ fun deviceUnlockStatus_becomesLocked_whenNoLongerTrusted_whileAsleep() =
+ testScope.runTest {
+ val deviceUnlockStatus by collectLastValue(underTest.deviceUnlockStatus)
+ kosmos.fakeTrustRepository.setCurrentUserTrusted(true)
+ unlockDevice()
+ kosmos.powerInteractor.setAsleepForTest(
+ sleepReason = PowerManager.GO_TO_SLEEP_REASON_SLEEP_BUTTON
+ )
+ runCurrent()
+ assertThat(deviceUnlockStatus?.isUnlocked).isTrue()
+
+ kosmos.fakeTrustRepository.setCurrentUserTrusted(false)
+ runCurrent()
+
+ assertThat(deviceUnlockStatus?.isUnlocked).isFalse()
+ }
+
private fun TestScope.unlockDevice() {
val deviceUnlockStatus by collectLastValue(underTest.deviceUnlockStatus)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/OccludingAppDeviceEntryInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/OccludingAppDeviceEntryInteractorTest.kt
index a981e2083312..f14ab530017f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/OccludingAppDeviceEntryInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/OccludingAppDeviceEntryInteractorTest.kt
@@ -47,7 +47,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -61,7 +60,6 @@ import org.mockito.Mockito.never
import org.mockito.Mockito.verify
import org.mockito.kotlin.mock
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class OccludingAppDeviceEntryInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/ui/binder/LiftToRunFaceAuthBinderTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/ui/binder/LiftToRunFaceAuthBinderTest.kt
index 11cade20bcb9..6b3136fa3991 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/ui/binder/LiftToRunFaceAuthBinderTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/ui/binder/LiftToRunFaceAuthBinderTest.kt
@@ -35,7 +35,6 @@ import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.capture
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.sensors.asyncSensorManager
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -49,7 +48,6 @@ import org.mockito.Mockito.never
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/ui/viewmodel/UdfpsAccessibilityOverlayViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/ui/viewmodel/UdfpsAccessibilityOverlayViewModelTest.kt
index 2d54337def13..90500839c8ad 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/ui/viewmodel/UdfpsAccessibilityOverlayViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/ui/viewmodel/UdfpsAccessibilityOverlayViewModelTest.kt
@@ -41,7 +41,6 @@ import com.android.systemui.shade.shadeTestUtil
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.After
@@ -50,7 +49,6 @@ import org.junit.runner.RunWith
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
class UdfpsAccessibilityOverlayViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DeviceStateRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DeviceStateRepositoryTest.kt
index bec8a30320e7..64571841f019 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DeviceStateRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DeviceStateRepositoryTest.kt
@@ -40,7 +40,6 @@ import com.android.systemui.util.mockito.mock
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
@@ -53,7 +52,6 @@ import android.hardware.devicestate.DeviceState as PlatformDeviceState
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
class DeviceStateRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DisplayMetricsRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DisplayMetricsRepositoryTest.kt
index d79db5cc32eb..c3759ca08e17 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DisplayMetricsRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DisplayMetricsRepositoryTest.kt
@@ -27,7 +27,6 @@ import com.android.systemui.statusbar.policy.FakeConfigurationController
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -37,7 +36,6 @@ import org.junit.Test
import org.junit.runner.RunWith
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class DisplayMetricsRepositoryTest : SysuiTestCase() {
private lateinit var underTest: DisplayMetricsRepository
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DisplayRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DisplayRepositoryTest.kt
index c585d5c56a4e..dfea78458b9d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DisplayRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DisplayRepositoryTest.kt
@@ -34,7 +34,6 @@ import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.android.systemui.utils.os.FakeHandler
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
@@ -50,7 +49,6 @@ import org.mockito.kotlin.eq
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
class DisplayRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/display/domain/interactor/ConnectedDisplayInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/display/domain/interactor/ConnectedDisplayInteractorTest.kt
index a2b50fd2ec17..92ea01ed298f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/display/domain/interactor/ConnectedDisplayInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/display/domain/interactor/ConnectedDisplayInteractorTest.kt
@@ -39,7 +39,6 @@ import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.test.TestScope
@@ -53,7 +52,6 @@ import org.mockito.Mockito.anyInt
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
class ConnectedDisplayInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/DreamOverlayServiceTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/DreamOverlayServiceTest.kt
index 0df584ff4dc1..526510a98e37 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/DreamOverlayServiceTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/DreamOverlayServiceTest.kt
@@ -83,7 +83,6 @@ import com.android.systemui.touch.TouchInsetManager
import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -107,7 +106,6 @@ import org.mockito.kotlin.whenever
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@TestableLooper.RunWithLooper(setAsMainLooper = true)
@RunWith(ParameterizedAndroidJunit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsComponentInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsComponentInteractorTest.kt
index c950523f7854..f347668aae77 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsComponentInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsComponentInteractorTest.kt
@@ -39,7 +39,6 @@ import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.mockito.withArgCaptor
import com.google.common.truth.Truth.assertThat
import java.util.Optional
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -48,7 +47,6 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito.verify
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class HomeControlsComponentInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamServiceTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamServiceTest.kt
index 4317b9f27da6..e56bd0a4cc3b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamServiceTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamServiceTest.kt
@@ -40,7 +40,6 @@ import com.android.systemui.util.time.fakeSystemClock
import com.android.systemui.util.wakelock.WakeLockFake
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.advanceUntilIdle
import kotlinx.coroutines.test.resetMain
import kotlinx.coroutines.test.runCurrent
@@ -60,7 +59,6 @@ import org.mockito.kotlin.never
import org.mockito.kotlin.times
import org.mockito.kotlin.verify
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class HomeControlsDreamServiceTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamStartableTest.kt
index ef02817eb4ac..0b6b97655b59 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamStartableTest.kt
@@ -44,7 +44,6 @@ import com.android.systemui.settings.userTracker
import com.android.systemui.testKosmos
import com.android.systemui.user.data.repository.fakeUserRepository
import java.util.Optional
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -59,7 +58,6 @@ import org.mockito.kotlin.whenever
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
class HomeControlsDreamStartableTest(flags: FlagsParameterization) : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/service/HomeControlsRemoteProxyTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/service/HomeControlsRemoteProxyTest.kt
index e57776f4db1b..38f1902d77c4 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/service/HomeControlsRemoteProxyTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/service/HomeControlsRemoteProxyTest.kt
@@ -25,14 +25,12 @@ import com.android.systemui.dreams.homecontrols.shared.model.HomeControlsCompone
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class HomeControlsRemoteProxyTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/service/RemoteHomeControlsDataSourceDelegatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/service/RemoteHomeControlsDataSourceDelegatorTest.kt
index 400217503299..2b86f6ba84e0 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/service/RemoteHomeControlsDataSourceDelegatorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/service/RemoteHomeControlsDataSourceDelegatorTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.service.ObservableServiceConnection
import com.android.systemui.util.service.PersistentConnectionManager
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -44,7 +43,6 @@ import org.mockito.kotlin.stub
import org.mockito.kotlin.times
import org.mockito.kotlin.verify
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class RemoteHomeControlsDataSourceDelegatorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/system/HomeControlsRemoteServiceBinderTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/system/HomeControlsRemoteServiceBinderTest.kt
index b343def58e29..a2ff5b410a9a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/system/HomeControlsRemoteServiceBinderTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/system/HomeControlsRemoteServiceBinderTest.kt
@@ -46,7 +46,6 @@ import com.android.systemui.user.data.repository.fakeUserRepository
import com.android.systemui.util.mockito.withArgCaptor
import com.google.common.truth.Truth.assertThat
import java.util.Optional
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -56,7 +55,6 @@ import org.junit.runner.RunWith
import org.mockito.Mockito
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class HomeControlsRemoteServiceBinderTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelTest.kt
index e5670627735c..1c93b3c66e32 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.dreams.ui.viewmodel
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -46,7 +44,6 @@ import com.android.systemui.shade.domain.interactor.enableSplitShade
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/dump/DumpHandlerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/dump/DumpHandlerTest.kt
index 597629219634..09c4231b7178 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/dump/DumpHandlerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/dump/DumpHandlerTest.kt
@@ -275,7 +275,9 @@ class DumpHandlerTest : SysuiTestCase() {
@Test
fun testDumpAllProtoDumpables() {
+ @Suppress("DEPRECATION")
dumpManager.registerDumpable("protoDumpable1", protoDumpable1)
+ @Suppress("DEPRECATION")
dumpManager.registerDumpable("protoDumpable2", protoDumpable2)
val args = arrayOf(DumpHandler.PROTO)
@@ -287,7 +289,9 @@ class DumpHandlerTest : SysuiTestCase() {
@Test
fun testDumpSingleProtoDumpable() {
+ @Suppress("DEPRECATION")
dumpManager.registerDumpable("protoDumpable1", protoDumpable1)
+ @Suppress("DEPRECATION")
dumpManager.registerDumpable("protoDumpable2", protoDumpable2)
val args = arrayOf(DumpHandler.PROTO, "protoDumpable1")
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadEduInteractorParameterizedTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadEduInteractorParameterizedTest.kt
index 6899d23bcfd7..e126b4d7265c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadEduInteractorParameterizedTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadEduInteractorParameterizedTest.kt
@@ -57,7 +57,6 @@ import platform.test.runner.parameterized.Parameters
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
-@kotlinx.coroutines.ExperimentalCoroutinesApi
class KeyboardTouchpadEduInteractorParameterizedTest(private val gestureType: GestureType) :
SysuiTestCase() {
private val kosmos = testKosmos()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadEduInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadEduInteractorTest.kt
index dc393c01dce1..adcd849db49a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadEduInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadEduInteractorTest.kt
@@ -50,7 +50,6 @@ import org.mockito.kotlin.verify
@SmallTest
@RunWith(AndroidJUnit4::class)
-@kotlinx.coroutines.ExperimentalCoroutinesApi
class KeyboardTouchpadEduInteractorTest : SysuiTestCase() {
private val kosmos = testKosmos()
private val testScope = kosmos.testScope
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/education/domain/ui/view/ContextualEduUiCoordinatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/education/domain/ui/view/ContextualEduUiCoordinatorTest.kt
index 248b922bcc77..6cb6fed978b8 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/education/domain/ui/view/ContextualEduUiCoordinatorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/education/domain/ui/view/ContextualEduUiCoordinatorTest.kt
@@ -63,7 +63,6 @@ import platform.test.runner.parameterized.Parameters
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
-@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)
class ContextualEduUiCoordinatorTest(private val gestureType: GestureType) : SysuiTestCase() {
private val kosmos = testKosmos()
private val testScope = kosmos.testScope
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/flags/NotOccludedConditionTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/flags/NotOccludedConditionTest.kt
index 46b4c4b80481..ae2c483d843e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/flags/NotOccludedConditionTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/flags/NotOccludedConditionTest.kt
@@ -22,7 +22,6 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestDispatcher
@@ -39,7 +38,6 @@ import org.mockito.MockitoAnnotations
/**
* Be careful with the {FeatureFlagsReleaseRestarter} in this test. It has a call to System.exit()!
*/
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class NotOccludedConditionTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/globalactions/data/repository/GlobalActionsRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/globalactions/data/repository/GlobalActionsRepositoryTest.kt
index e437c10c7b73..e46bfb7040cc 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/globalactions/data/repository/GlobalActionsRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/globalactions/data/repository/GlobalActionsRepositoryTest.kt
@@ -23,14 +23,12 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class GlobalActionsRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/globalactions/domain/interactor/GlobalActionsInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/globalactions/domain/interactor/GlobalActionsInteractorTest.kt
index 9275512009b2..afb9bd378707 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/globalactions/domain/interactor/GlobalActionsInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/globalactions/domain/interactor/GlobalActionsInteractorTest.kt
@@ -23,14 +23,12 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class GlobalActionsInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/msdl/qs/TileHapticsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/msdl/qs/TileHapticsViewModelTest.kt
index f6a6e5465e1b..891d6f960d4e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/msdl/qs/TileHapticsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/msdl/qs/TileHapticsViewModelTest.kt
@@ -30,7 +30,6 @@ import com.android.systemui.qs.panels.ui.viewmodel.tileViewModel
import com.android.systemui.testKosmos
import com.google.android.msdl.data.model.MSDLToken
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -39,7 +38,6 @@ import org.junit.Test
import org.junit.runner.RunWith
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class TileHapticsViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/slider/HapticSliderPluginTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/slider/HapticSliderPluginTest.kt
index 088101054220..5030d1e49da0 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/slider/HapticSliderPluginTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/slider/HapticSliderPluginTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.time.fakeSystemClock
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.advanceTimeBy
@@ -44,7 +43,6 @@ import org.mockito.junit.MockitoRule
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class HapticSliderPluginTest : SysuiTestCase() {
private val kosmos = Kosmos()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/slider/SliderStateTrackerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/slider/SliderStateTrackerTest.kt
index 2e9d993c99a9..8060f7b5fe48 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/slider/SliderStateTrackerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/slider/SliderStateTrackerTest.kt
@@ -21,7 +21,6 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.runTest
@@ -35,7 +34,6 @@ import org.mockito.Mockito.verifyNoMoreInteractions
import org.mockito.MockitoAnnotations
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class SliderStateTrackerTest : SysuiTestCase() {
@@ -102,7 +100,6 @@ class SliderStateTrackerTest : SysuiTestCase() {
// Tests on the WAIT state
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun waitCompletes_onWait_movesToHandleAcquired() = runTest {
val config = SeekableSliderTrackerConfig()
@@ -716,7 +713,6 @@ class SliderStateTrackerTest : SysuiTestCase() {
assertThat(mSliderStateTracker.currentState).isEqualTo(SliderState.IDLE)
}
- @OptIn(ExperimentalCoroutinesApi::class)
private fun initTracker(
scope: CoroutineScope,
config: SeekableSliderTrackerConfig = SeekableSliderTrackerConfig(),
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/slider/compose/ui/SliderHapticsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/slider/compose/ui/SliderHapticsViewModelTest.kt
index 8693f6b1d927..895ef9cd74ae 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/slider/compose/ui/SliderHapticsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/haptics/slider/compose/ui/SliderHapticsViewModelTest.kt
@@ -30,7 +30,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.lifecycle.activateIn
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.test.runCurrent
@@ -39,7 +38,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class SliderHapticsViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/data/repository/UserInputDeviceRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/data/repository/UserInputDeviceRepositoryTest.kt
index f2e43fcb8e2c..798c5ab817a5 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/data/repository/UserInputDeviceRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/data/repository/UserInputDeviceRepositoryTest.kt
@@ -38,7 +38,6 @@ import org.junit.runner.RunWith
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)
class UserInputDeviceRepositoryTest : SysuiTestCase() {
private lateinit var underTest: UserInputDeviceRepository
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/tutorial/domain/interactor/TutorialNotificationCoordinatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/tutorial/domain/interactor/TutorialNotificationCoordinatorTest.kt
index 886aa51360b0..e0082dadee26 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/tutorial/domain/interactor/TutorialNotificationCoordinatorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/tutorial/domain/interactor/TutorialNotificationCoordinatorTest.kt
@@ -35,7 +35,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.touchpad.data.repository.FakeTouchpadRepository
import com.google.common.truth.Truth.assertThat
import kotlin.time.Duration.Companion.hours
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -51,7 +50,6 @@ import org.mockito.kotlin.eq
import org.mockito.kotlin.never
import org.mockito.kotlin.verify
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class TutorialNotificationCoordinatorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/tutorial/domain/interactor/TutorialSchedulerInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/tutorial/domain/interactor/TutorialSchedulerInteractorTest.kt
index 722451e158e4..e87aca48392c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/tutorial/domain/interactor/TutorialSchedulerInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/tutorial/domain/interactor/TutorialSchedulerInteractorTest.kt
@@ -30,7 +30,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.touchpad.data.repository.FakeTouchpadRepository
import com.google.common.truth.Truth.assertThat
import kotlin.time.Duration.Companion.hours
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.advanceTimeBy
@@ -39,7 +38,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class TutorialSchedulerInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/tutorial/ui/viewmodel/KeyboardTouchpadTutorialViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/tutorial/ui/viewmodel/KeyboardTouchpadTutorialViewModelTest.kt
index 1de38ee3a04e..57bcc1407e24 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/tutorial/ui/viewmodel/KeyboardTouchpadTutorialViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/inputdevice/tutorial/ui/viewmodel/KeyboardTouchpadTutorialViewModelTest.kt
@@ -44,7 +44,6 @@ import com.android.systemui.touchpad.tutorial.touchpadGesturesInteractor
import com.android.systemui.util.coroutines.MainDispatcherRule
import com.google.common.truth.Truth.assertThat
import java.util.Optional
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.TestScope
@@ -55,7 +54,6 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.mock
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class KeyboardTouchpadTutorialViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/backlight/domain/interactor/KeyboardBacklightInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/backlight/domain/interactor/KeyboardBacklightInteractorTest.kt
index 64cd09128373..92d3dbaed616 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/backlight/domain/interactor/KeyboardBacklightInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/backlight/domain/interactor/KeyboardBacklightInteractorTest.kt
@@ -24,14 +24,12 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.keyboard.data.repository.FakeKeyboardRepository
import com.android.systemui.keyboard.shared.model.BacklightModel
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class KeyboardBacklightInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/backlight/ui/KeyboardBacklightDialogCoordinatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/backlight/ui/KeyboardBacklightDialogCoordinatorTest.kt
index 47261a935725..cd5e54b419c4 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/backlight/ui/KeyboardBacklightDialogCoordinatorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/backlight/ui/KeyboardBacklightDialogCoordinatorTest.kt
@@ -29,7 +29,6 @@ import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceTimeBy
@@ -44,7 +43,6 @@ import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class KeyboardBacklightDialogCoordinatorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/data/repository/KeyboardRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/data/repository/KeyboardRepositoryTest.kt
index 8b1341114c68..4976fce5e992 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/data/repository/KeyboardRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/data/repository/KeyboardRepositoryTest.kt
@@ -36,7 +36,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.utils.os.FakeHandler
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.CoroutineDispatcher
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.test.StandardTestDispatcher
@@ -54,7 +53,6 @@ import org.mockito.MockitoAnnotations
import org.mockito.kotlin.any
import org.mockito.kotlin.anyOrNull
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@TestableLooper.RunWithLooper
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/ShortcutHelperCoreStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/ShortcutHelperCoreStartableTest.kt
index b417616425c4..25b5972aff45 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/ShortcutHelperCoreStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/ShortcutHelperCoreStartableTest.kt
@@ -26,7 +26,6 @@ import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.plugins.activityStarter
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
@@ -37,7 +36,6 @@ import org.mockito.kotlin.whenever
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class ShortcutHelperCoreStartableTest : SysuiTestCase() {
private val kosmos = testKosmos()
private val repo = kosmos.shortcutHelperStateRepository
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/data/repository/DefaultShortcutCategoriesRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/data/repository/DefaultShortcutCategoriesRepositoryTest.kt
index cd05980385e0..e5991e89d198 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/data/repository/DefaultShortcutCategoriesRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/data/repository/DefaultShortcutCategoriesRepositoryTest.kt
@@ -62,7 +62,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.res.R
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -72,7 +71,6 @@ import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mockito.mock
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class DefaultShortcutCategoriesRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/domain/interactor/ShortcutHelperCategoriesInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/domain/interactor/ShortcutHelperCategoriesInteractorTest.kt
index 61490986f4a9..800886b2a845 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/domain/interactor/ShortcutHelperCategoriesInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/domain/interactor/ShortcutHelperCategoriesInteractorTest.kt
@@ -51,7 +51,6 @@ import com.android.systemui.settings.FakeUserTracker
import com.android.systemui.settings.userTracker
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -69,7 +68,6 @@ class ShortcutHelperCategoriesInteractorTest : SysuiTestCase() {
private val systemShortcutsSource = FakeKeyboardShortcutGroupsSource()
private val multitaskingShortcutsSource = FakeKeyboardShortcutGroupsSource()
- @OptIn(ExperimentalCoroutinesApi::class)
private val kosmos =
testKosmos().also {
it.testDispatcher = UnconfinedTestDispatcher()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/ui/ShortcutHelperDialogStarterTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/ui/ShortcutHelperDialogStarterTest.kt
index 7a343351ef64..1bb4805d4f16 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/ui/ShortcutHelperDialogStarterTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/ui/ShortcutHelperDialogStarterTest.kt
@@ -44,7 +44,6 @@ import com.android.systemui.settings.FakeUserTracker
import com.android.systemui.settings.userTracker
import com.android.systemui.statusbar.phone.systemUIDialogFactory
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -53,7 +52,6 @@ import org.junit.runner.RunWith
import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class ShortcutHelperDialogStarterTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/ui/viewmodel/ShortcutHelperViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/ui/viewmodel/ShortcutHelperViewModelTest.kt
index cf38072912e9..766744885077 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/ui/viewmodel/ShortcutHelperViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/shortcut/ui/viewmodel/ShortcutHelperViewModelTest.kt
@@ -66,7 +66,6 @@ import com.android.systemui.settings.userTracker
import com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SHORTCUT_HELPER_SHOWING
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -77,7 +76,6 @@ import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class ShortcutHelperViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/stickykeys/ui/StickyKeysIndicatorCoordinatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/stickykeys/ui/StickyKeysIndicatorCoordinatorTest.kt
index 727481e0637d..be9e93c64053 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/stickykeys/ui/StickyKeysIndicatorCoordinatorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/stickykeys/ui/StickyKeysIndicatorCoordinatorTest.kt
@@ -30,7 +30,6 @@ import com.android.systemui.kosmos.Kosmos
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -40,7 +39,6 @@ import org.junit.runner.RunWith
import org.mockito.Mockito.verify
import org.mockito.Mockito.verifyNoMoreInteractions
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class StickyKeysIndicatorCoordinatorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/stickykeys/ui/viewmodel/StickyKeysIndicatorViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/stickykeys/ui/viewmodel/StickyKeysIndicatorViewModelTest.kt
index 7ec53dfbdd10..9daf0ffd34b4 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/stickykeys/ui/viewmodel/StickyKeysIndicatorViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyboard/stickykeys/ui/viewmodel/StickyKeysIndicatorViewModelTest.kt
@@ -43,7 +43,6 @@ import com.android.systemui.util.mockito.mock
import com.android.systemui.util.settings.data.repository.userAwareSecureSettingsRepository
import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -54,7 +53,6 @@ import org.mockito.ArgumentCaptor
import org.mockito.Mockito.verify
import org.mockito.Mockito.verifyNoMoreInteractions
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class StickyKeysIndicatorViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ResourceTrimmerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ResourceTrimmerTest.kt
index 6b49d3a095d8..32a631b191bf 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ResourceTrimmerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ResourceTrimmerTest.kt
@@ -21,7 +21,6 @@ import com.android.systemui.scene.data.repository.setSceneTransition
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.android.systemui.utils.GlobalWindowManager
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -34,7 +33,6 @@ import org.mockito.Mockito.verify
import org.mockito.Mockito.verifyNoMoreInteractions
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
@SmallTest
class ResourceTrimmerTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/CameraQuickAffordanceConfigTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/CameraQuickAffordanceConfigTest.kt
index 56e8185ab580..577f2222238c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/CameraQuickAffordanceConfigTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/CameraQuickAffordanceConfigTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.camera.CameraGestureHelper
import com.android.systemui.settings.UserTracker
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runTest
@@ -40,7 +39,6 @@ import org.mockito.Mock
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@android.platform.test.annotations.EnabledOnRavenwood
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/DoNotDisturbQuickAffordanceConfigTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/DoNotDisturbQuickAffordanceConfigTest.kt
index 451ebf32c367..e999c16ada34 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/DoNotDisturbQuickAffordanceConfigTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/DoNotDisturbQuickAffordanceConfigTest.kt
@@ -52,7 +52,6 @@ import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth.assertThat
import java.time.Duration
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Assert.assertEquals
@@ -67,7 +66,6 @@ import org.mockito.Mock
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class DoNotDisturbQuickAffordanceConfigTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/FlashlightQuickAffordanceConfigTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/FlashlightQuickAffordanceConfigTest.kt
index 77e0f4ef2c5f..11590493fce2 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/FlashlightQuickAffordanceConfigTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/FlashlightQuickAffordanceConfigTest.kt
@@ -26,7 +26,6 @@ import com.android.systemui.keyguard.shared.quickaffordance.ActivationState
import com.android.systemui.statusbar.policy.FlashlightController
import com.android.systemui.utils.leaks.FakeFlashlightController
import com.android.systemui.utils.leaks.LeakCheckedTest
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.UnconfinedTestDispatcher
@@ -39,7 +38,6 @@ import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@android.platform.test.annotations.EnabledOnRavenwood
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceHapticViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceHapticViewModelTest.kt
index 18946f9d7e07..11401af7bec6 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceHapticViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceHapticViewModelTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.shared.keyguard.shared.model.KeyguardQuickAffordanceSlots
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -37,7 +36,6 @@ import org.junit.Test
import org.junit.runner.RunWith
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class KeyguardQuickAffordanceHapticViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceLegacySettingSyncerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceLegacySettingSyncerTest.kt
index 8c54ca1a629d..c787a8b0dcdf 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceLegacySettingSyncerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceLegacySettingSyncerTest.kt
@@ -23,7 +23,6 @@ import android.provider.Settings
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
-import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.kosmos.testScope
import com.android.systemui.kosmos.useUnconfinedTestDispatcher
@@ -37,7 +36,6 @@ import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.advanceUntilIdle
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -48,7 +46,6 @@ import org.mockito.ArgumentMatchers.anyString
import org.mockito.Mock
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class KeyguardQuickAffordanceLegacySettingSyncerTest : SysuiTestCase() {
@@ -85,7 +82,6 @@ class KeyguardQuickAffordanceLegacySettingSyncerTest : SysuiTestCase() {
.thenReturn(FakeSharedPreferences())
},
userTracker = FakeUserTracker(),
- communalSettingsInteractor = kosmos.communalSettingsInteractor,
broadcastDispatcher = fakeBroadcastDispatcher,
)
settings.putInt(Settings.Secure.LOCKSCREEN_SHOW_CONTROLS, 0)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceLocalUserSelectionManagerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceLocalUserSelectionManagerTest.kt
index bc2c2d24fd2a..d93b77bac9b9 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceLocalUserSelectionManagerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceLocalUserSelectionManagerTest.kt
@@ -20,22 +20,17 @@ package com.android.systemui.keyguard.data.quickaffordance
import android.content.Intent
import android.content.SharedPreferences
import android.content.pm.UserInfo
-import android.platform.test.annotations.EnableFlags
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
-import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
import com.android.systemui.backup.BackupHelper
-import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
import com.android.systemui.res.R
import com.android.systemui.settings.FakeUserTracker
import com.android.systemui.settings.UserFileManager
-import com.android.systemui.testKosmos
import com.android.systemui.util.FakeSharedPreferences
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.UnconfinedTestDispatcher
@@ -54,11 +49,9 @@ import org.mockito.Mockito.clearInvocations
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class KeyguardQuickAffordanceLocalUserSelectionManagerTest : SysuiTestCase() {
- private val kosmos = testKosmos()
@Mock private lateinit var userFileManager: UserFileManager
@@ -85,7 +78,6 @@ class KeyguardQuickAffordanceLocalUserSelectionManagerTest : SysuiTestCase() {
context = context,
userFileManager = userFileManager,
userTracker = userTracker,
- communalSettingsInteractor = kosmos.communalSettingsInteractor,
broadcastDispatcher = fakeBroadcastDispatcher,
)
}
@@ -315,27 +307,6 @@ class KeyguardQuickAffordanceLocalUserSelectionManagerTest : SysuiTestCase() {
)
}
- @EnableFlags(Flags.FLAG_GLANCEABLE_HUB_V2)
- @Test
- fun getSelections_returnsSelectionsIfHubV2Enabled() = runTest {
- overrideResource(R.bool.custom_lockscreen_shortcuts_enabled, false)
- overrideResource(com.android.internal.R.bool.config_glanceableHubEnabled, true)
-
- overrideResource(R.array.config_keyguardQuickAffordanceDefaults, arrayOf<String>())
- val affordanceIdsBySlotId = mutableListOf<Map<String, List<String>>>()
- val job =
- launch(UnconfinedTestDispatcher()) {
- underTest.selections.toList(affordanceIdsBySlotId)
- }
- val slotId1 = "slot1"
- val affordanceId1 = "affordance1"
-
- underTest.setSelections(slotId = slotId1, affordanceIds = listOf(affordanceId1))
- assertSelections(affordanceIdsBySlotId.last(), mapOf(slotId1 to listOf(affordanceId1)))
-
- job.cancel()
- }
-
private fun assertSelections(
observed: Map<String, List<String>>?,
expected: Map<String, List<String>>,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceRemoteUserSelectionManagerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceRemoteUserSelectionManagerTest.kt
index a1c9f87ee7bc..2e7131021d0a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceRemoteUserSelectionManagerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceRemoteUserSelectionManagerTest.kt
@@ -27,7 +27,6 @@ import com.android.systemui.shared.customization.data.content.FakeCustomizationP
import com.android.systemui.shared.keyguard.shared.model.KeyguardQuickAffordanceSlots
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.StandardTestDispatcher
@@ -41,7 +40,6 @@ import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class KeyguardQuickAffordanceRemoteUserSelectionManagerTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/MuteQuickAffordanceConfigTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/MuteQuickAffordanceConfigTest.kt
index 173b4e56075c..115055d97029 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/MuteQuickAffordanceConfigTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/MuteQuickAffordanceConfigTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.util.RingerModeTracker
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.whenever
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestDispatcher
import kotlinx.coroutines.test.TestScope
@@ -43,7 +42,6 @@ import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class MuteQuickAffordanceConfigTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/MuteQuickAffordanceCoreStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/MuteQuickAffordanceCoreStartableTest.kt
index 42b3463c052e..3e67b89f7b36 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/MuteQuickAffordanceCoreStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/MuteQuickAffordanceCoreStartableTest.kt
@@ -33,7 +33,6 @@ import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.cancelChildren
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.StandardTestDispatcher
@@ -51,7 +50,6 @@ import org.mockito.Mockito.verify
import org.mockito.Mockito.verifyNoMoreInteractions
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class MuteQuickAffordanceCoreStartableTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/VideoCameraQuickAffordanceConfigTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/VideoCameraQuickAffordanceConfigTest.kt
index a9b9c9011636..ee5188e224b0 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/VideoCameraQuickAffordanceConfigTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/VideoCameraQuickAffordanceConfigTest.kt
@@ -30,7 +30,6 @@ import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runTest
@@ -42,7 +41,6 @@ import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mock
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class VideoCameraQuickAffordanceConfigTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/BiometricSettingsRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/BiometricSettingsRepositoryTest.kt
index 4e8a2a349283..8e484cc8ad37 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/BiometricSettingsRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/BiometricSettingsRepositoryTest.kt
@@ -59,7 +59,6 @@ import com.android.systemui.user.data.repository.FakeUserRepository
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestDispatcher
import kotlinx.coroutines.test.TestScope
@@ -79,10 +78,10 @@ import org.mockito.Mockito.clearInvocations
import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
+import org.mockito.kotlin.doAnswer
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.stub
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@TestableLooper.RunWithLooper(setAsMainLooper = true)
@RunWith(AndroidJUnit4::class)
@@ -473,6 +472,51 @@ class BiometricSettingsRepositoryTest : SysuiTestCase() {
}
@Test
+ @EnableFlags(com.android.settings.flags.Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION)
+ fun registerEnabledOnKeyguardCallback_multipleUsers_shouldSendAllUpdates() =
+ testScope.runTest {
+
+ // Simulate call to register callback when in multiple users setup
+ biometricManager.stub {
+ on { registerEnabledOnKeyguardCallback(any()) } doAnswer
+ { invocation ->
+ val callback =
+ invocation.arguments[0] as IBiometricEnabledOnKeyguardCallback
+ callback.onChanged(true, PRIMARY_USER_ID, TYPE_FACE)
+ callback.onChanged(true, PRIMARY_USER_ID, TYPE_FINGERPRINT)
+ callback.onChanged(true, ANOTHER_USER_ID, TYPE_FACE)
+ callback.onChanged(true, ANOTHER_USER_ID, TYPE_FINGERPRINT)
+ }
+ }
+ authController.stub {
+ on { isFingerprintEnrolled(anyInt()) } doReturn true
+ on { isFaceAuthEnrolled(anyInt()) } doReturn true
+ }
+
+ // Check primary user status
+ createBiometricSettingsRepository()
+ var fingerprintAllowed = collectLastValue(underTest.isFingerprintEnrolledAndEnabled)
+ var faceAllowed = collectLastValue(underTest.isFaceAuthEnrolledAndEnabled)
+ runCurrent()
+
+ enrollmentChange(UNDER_DISPLAY_FINGERPRINT, PRIMARY_USER_ID, true)
+ enrollmentChange(FACE, PRIMARY_USER_ID, true)
+ assertThat(fingerprintAllowed()).isTrue()
+ assertThat(faceAllowed()).isTrue()
+
+ // Check secondary user status
+ userRepository.setSelectedUserInfo(ANOTHER_USER)
+ fingerprintAllowed = collectLastValue(underTest.isFingerprintEnrolledAndEnabled)
+ faceAllowed = collectLastValue(underTest.isFaceAuthEnrolledAndEnabled)
+ runCurrent()
+
+ enrollmentChange(UNDER_DISPLAY_FINGERPRINT, ANOTHER_USER_ID, true)
+ enrollmentChange(FACE, ANOTHER_USER_ID, true)
+ assertThat(fingerprintAllowed()).isTrue()
+ assertThat(faceAllowed()).isTrue()
+ }
+
+ @Test
fun devicePolicyControlsFaceAuthenticationEnabledState() =
testScope.runTest {
faceAuthIsEnrolled()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/DeviceEntryFingerprintAuthRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/DeviceEntryFingerprintAuthRepositoryTest.kt
index 9bcc19defbd5..f3f9fa785c75 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/DeviceEntryFingerprintAuthRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/DeviceEntryFingerprintAuthRepositoryTest.kt
@@ -32,7 +32,6 @@ import com.android.systemui.keyguard.shared.model.HelpFingerprintAuthenticationS
import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.filterIsInstance
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
@@ -48,7 +47,6 @@ import org.mockito.Mockito.atLeastOnce
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@android.platform.test.annotations.EnabledOnRavenwood
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/DevicePostureRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/DevicePostureRepositoryTest.kt
index a0b85423b9f2..f40555f8301d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/DevicePostureRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/DevicePostureRepositoryTest.kt
@@ -24,7 +24,6 @@ import com.android.systemui.keyguard.shared.model.DevicePosture
import com.android.systemui.statusbar.policy.DevicePostureController
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
@@ -37,7 +36,6 @@ import org.mockito.Mock
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@android.platform.test.annotations.EnabledOnRavenwood
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyEventRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyEventRepositoryTest.kt
index bbe45c1b3cd9..c7f1525e2946 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyEventRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyEventRepositoryTest.kt
@@ -25,7 +25,6 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.keyevent.data.repository.KeyEventRepositoryImpl
import com.android.systemui.statusbar.CommandQueue
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -39,7 +38,6 @@ import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class KeyEventRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryTest.kt
index 972ca02548ec..13d09e8a1162 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryTest.kt
@@ -15,8 +15,6 @@
*
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.keyguard.data.repository
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -31,7 +29,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.android.systemui.util.ThreadAssert
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runTest
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardQuickAffordanceRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardQuickAffordanceRepositoryTest.kt
index a1018187df86..b0e07bef0763 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardQuickAffordanceRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardQuickAffordanceRepositoryTest.kt
@@ -22,7 +22,6 @@ import android.os.UserHandle
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
-import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.keyguard.data.quickaffordance.FakeKeyguardQuickAffordanceConfig
import com.android.systemui.keyguard.data.quickaffordance.FakeKeyguardQuickAffordanceProviderClientFactory
@@ -46,7 +45,6 @@ import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth.assertThat
import java.util.Locale
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.After
import org.junit.Before
@@ -55,7 +53,6 @@ import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.ArgumentMatchers.anyString
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class KeyguardQuickAffordanceRepositoryTest : SysuiTestCase() {
@@ -89,7 +86,6 @@ class KeyguardQuickAffordanceRepositoryTest : SysuiTestCase() {
.thenReturn(FakeSharedPreferences())
},
userTracker = userTracker,
- communalSettingsInteractor = kosmos.communalSettingsInteractor,
broadcastDispatcher = fakeBroadcastDispatcher,
)
client1 = FakeCustomizationProviderClient()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardRepositoryImplTest.kt
index 6805a133459f..ec7031aec3d9 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardRepositoryImplTest.kt
@@ -45,7 +45,6 @@ import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.mockito.withArgCaptor
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.test.StandardTestDispatcher
@@ -62,7 +61,6 @@ import org.mockito.Mockito.atLeastOnce
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@android.platform.test.annotations.EnabledOnRavenwood
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardSurfaceBehindRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardSurfaceBehindRepositoryImplTest.kt
index bed959f1a3f0..368bf9ee2a72 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardSurfaceBehindRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/KeyguardSurfaceBehindRepositoryImplTest.kt
@@ -21,7 +21,6 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectValues
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -29,7 +28,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class KeyguardSurfaceBehindRepositoryImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/LightRevealScrimRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/LightRevealScrimRepositoryTest.kt
index 0bfcd548881b..3a8603d747bf 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/LightRevealScrimRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/LightRevealScrimRepositoryTest.kt
@@ -36,7 +36,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.mock
import junit.framework.Assert.assertEquals
import junit.framework.Assert.assertFalse
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -47,7 +46,6 @@ import org.junit.runner.RunWith
import org.mockito.MockitoAnnotations
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class LightRevealScrimRepositoryTest : SysuiTestCase() {
private val kosmos = testKosmos()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/TrustRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/TrustRepositoryTest.kt
index 2d121502650e..8a1afe4c2c6b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/TrustRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/TrustRepositoryTest.kt
@@ -29,7 +29,6 @@ import com.android.systemui.log.LogcatEchoTracker
import com.android.systemui.user.data.repository.FakeUserRepository
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -44,7 +43,6 @@ import org.mockito.Mockito.mock
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@android.platform.test.annotations.EnabledOnRavenwood
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/BurnInInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/BurnInInteractorTest.kt
index 0bd541c7a704..3dd2ecd2469f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/BurnInInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/BurnInInteractorTest.kt
@@ -32,7 +32,6 @@ import com.android.systemui.res.R
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
@@ -42,7 +41,6 @@ import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mock
import org.mockito.MockitoAnnotations
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class BurnInInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractorTest.kt
index b5ea305544ff..425079d7b5d7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractorTest.kt
@@ -48,7 +48,6 @@ import com.android.systemui.user.domain.interactor.SelectedUserInteractor
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -61,7 +60,6 @@ import org.mockito.Mockito.mock
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class DeviceEntrySideFpsOverlayInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromAlternateBouncerTransitionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromAlternateBouncerTransitionInteractorTest.kt
index 047d8c2b31a9..2feabf8221ad 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromAlternateBouncerTransitionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromAlternateBouncerTransitionInteractorTest.kt
@@ -51,7 +51,6 @@ import com.android.systemui.power.data.repository.fakePowerRepository
import com.android.systemui.power.shared.model.WakeSleepReason
import com.android.systemui.power.shared.model.WakefulnessState
import com.android.systemui.testKosmos
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -60,7 +59,6 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito.reset
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class FromAlternateBouncerTransitionInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorTest.kt
index 3f2e78cdfb52..208abf39611d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorTest.kt
@@ -63,7 +63,6 @@ import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.statusbar.domain.interactor.keyguardOcclusionInteractor
import com.android.systemui.testKosmos
import junit.framework.Assert.assertEquals
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.runCurrent
@@ -73,7 +72,6 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito.reset
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class FromAodTransitionInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractorTest.kt
index df44425d4b49..e13f3f12c55a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractorTest.kt
@@ -33,21 +33,24 @@ import com.android.systemui.communal.data.repository.communalSceneRepository
import com.android.systemui.communal.data.repository.fakeCommunalSceneRepository
import com.android.systemui.communal.domain.interactor.setCommunalAvailable
import com.android.systemui.communal.shared.model.CommunalScenes
-import com.android.systemui.coroutines.collectLastValue
-import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepositorySpy
import com.android.systemui.keyguard.data.repository.keyguardOcclusionRepository
import com.android.systemui.keyguard.data.repository.keyguardTransitionRepository
import com.android.systemui.keyguard.shared.model.BiometricUnlockMode
+import com.android.systemui.keyguard.shared.model.DozeStateModel
+import com.android.systemui.keyguard.shared.model.DozeTransitionModel
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.KeyguardState.GONE
import com.android.systemui.keyguard.shared.model.KeyguardState.LOCKSCREEN
import com.android.systemui.keyguard.shared.model.TransitionState
import com.android.systemui.keyguard.util.KeyguardTransitionRepositorySpySubject.Companion.assertThat
+import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
+import com.android.systemui.kosmos.collectLastValue
+import com.android.systemui.kosmos.runTest
import com.android.systemui.kosmos.testScope
-import com.android.systemui.power.domain.interactor.PowerInteractor
+import com.android.systemui.kosmos.useUnconfinedTestDispatcher
import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAsleepForTest
import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest
import com.android.systemui.power.domain.interactor.powerInteractor
@@ -55,12 +58,9 @@ import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.google.common.truth.Truth
import junit.framework.Assert.assertEquals
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.test.advanceTimeBy
-import kotlinx.coroutines.test.runCurrent
-import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -73,24 +73,21 @@ import org.mockito.kotlin.whenever
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
@EnableFlags(FLAG_COMMUNAL_HUB)
class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiTestCase() {
private val kosmos =
- testKosmos().apply {
+ testKosmos().useUnconfinedTestDispatcher().apply {
this.keyguardTransitionRepository = fakeKeyguardTransitionRepositorySpy
this.fakeCommunalSceneRepository =
spy(FakeCommunalSceneRepository(applicationScope = applicationCoroutineScope))
}
- private val testScope = kosmos.testScope
- private lateinit var underTest: FromDozingTransitionInteractor
+ private val Kosmos.underTest by Kosmos.Fixture { fromDozingTransitionInteractor }
- private lateinit var powerInteractor: PowerInteractor
- private lateinit var transitionRepository: FakeKeyguardTransitionRepository
- private lateinit var keyguardInteractor: KeyguardInteractor
+ private val Kosmos.transitionRepository by
+ Kosmos.Fixture { fakeKeyguardTransitionRepositorySpy }
companion object {
@JvmStatic
@@ -106,32 +103,26 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
@Before
fun setup() {
- powerInteractor = kosmos.powerInteractor
- keyguardInteractor = kosmos.keyguardInteractor
- transitionRepository = kosmos.fakeKeyguardTransitionRepositorySpy
- underTest = kosmos.fromDozingTransitionInteractor
-
- underTest.start()
+ kosmos.underTest.start()
// Transition to DOZING and set the power interactor asleep.
- powerInteractor.setAsleepForTest()
+ kosmos.powerInteractor.setAsleepForTest()
runBlocking {
- transitionRepository.sendTransitionSteps(
+ kosmos.transitionRepository.sendTransitionSteps(
from = KeyguardState.LOCKSCREEN,
to = KeyguardState.DOZING,
- testScope,
+ kosmos.testScope,
)
kosmos.fakeKeyguardRepository.setBiometricUnlockState(BiometricUnlockMode.NONE)
- reset(transitionRepository)
+ reset(kosmos.transitionRepository)
}
}
@Test
@EnableFlags(FLAG_KEYGUARD_WM_STATE_REFACTOR)
fun testTransitionToLockscreen_onWakeup() =
- testScope.runTest {
+ kosmos.runTest {
powerInteractor.setAwakeForTest()
- runCurrent()
// Under default conditions, we should transition to LOCKSCREEN when waking up.
assertThat(transitionRepository)
@@ -141,28 +132,41 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
@Test
@DisableFlags(FLAG_KEYGUARD_WM_STATE_REFACTOR)
fun testTransitionToGone_onWakeup_whenGoingAway() =
- testScope.runTest {
+ kosmos.runTest {
keyguardInteractor.setIsKeyguardGoingAway(true)
- runCurrent()
powerInteractor.setAwakeForTest()
- advanceTimeBy(60L)
+ testScope.advanceTimeBy(60L)
assertThat(transitionRepository)
.startedTransition(from = KeyguardState.DOZING, to = KeyguardState.GONE)
}
@Test
+ fun testTransitionToDreaming() =
+ kosmos.runTest {
+ // Ensure dozing is off
+ fakeKeyguardRepository.setDozeTransitionModel(
+ DozeTransitionModel(from = DozeStateModel.DOZE, to = DozeStateModel.FINISH)
+ )
+ testScope.advanceTimeBy(600L)
+
+ keyguardInteractor.setDreaming(true)
+ testScope.advanceTimeBy(60L)
+
+ assertThat(transitionRepository)
+ .startedTransition(from = KeyguardState.DOZING, to = KeyguardState.DREAMING)
+ }
+
+ @Test
@EnableFlags(FLAG_KEYGUARD_WM_STATE_REFACTOR)
@DisableFlags(FLAG_COMMUNAL_SCENE_KTF_REFACTOR)
fun testTransitionToLockscreen_onWake_canDream_glanceableHubAvailable() =
- testScope.runTest {
- whenever(kosmos.dreamManager.canStartDreaming(anyBoolean())).thenReturn(true)
- kosmos.setCommunalAvailable(true)
- runCurrent()
+ kosmos.runTest {
+ whenever(dreamManager.canStartDreaming(anyBoolean())).thenReturn(true)
+ setCommunalAvailable(true)
powerInteractor.setAwakeForTest()
- runCurrent()
// If dreaming is possible and communal is available, then we should transition to
// GLANCEABLE_HUB when waking up due to power button press.
@@ -173,30 +177,25 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
@Test
@EnableFlags(FLAG_KEYGUARD_WM_STATE_REFACTOR, FLAG_COMMUNAL_SCENE_KTF_REFACTOR)
fun testTransitionToLockscreen_onWake_canDream_ktfRefactor() =
- testScope.runTest {
- whenever(kosmos.dreamManager.canStartDreaming(anyBoolean())).thenReturn(true)
- kosmos.setCommunalAvailable(true)
- runCurrent()
- clearInvocations(kosmos.fakeCommunalSceneRepository)
+ kosmos.runTest {
+ setCommunalAvailable(true)
+ whenever(dreamManager.canStartDreaming(anyBoolean())).thenReturn(true)
+ clearInvocations(fakeCommunalSceneRepository)
powerInteractor.setAwakeForTest()
- runCurrent()
// If dreaming is possible and communal is available, then we should transition to
// GLANCEABLE_HUB when waking up due to power button press.
- verify(kosmos.fakeCommunalSceneRepository).snapToScene(CommunalScenes.Communal)
+ verify(fakeCommunalSceneRepository).snapToScene(CommunalScenes.Communal)
}
@Test
@EnableFlags(FLAG_KEYGUARD_WM_STATE_REFACTOR)
fun testTransitionToLockscreen_onWake_canNotDream_glanceableHubAvailable() =
- testScope.runTest {
- whenever(kosmos.dreamManager.canStartDreaming(anyBoolean())).thenReturn(false)
- kosmos.setCommunalAvailable(true)
- runCurrent()
-
+ kosmos.runTest {
+ whenever(dreamManager.canStartDreaming(anyBoolean())).thenReturn(false)
+ setCommunalAvailable(true)
powerInteractor.setAwakeForTest()
- runCurrent()
// If dreaming is NOT possible but communal is available, then we should transition to
// LOCKSCREEN when waking up due to power button press.
@@ -207,13 +206,11 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
@Test
@EnableFlags(FLAG_KEYGUARD_WM_STATE_REFACTOR)
fun testTransitionToLockscreen_onWake_canNDream_glanceableHubNotAvailable() =
- testScope.runTest {
- whenever(kosmos.dreamManager.canStartDreaming(anyBoolean())).thenReturn(true)
- kosmos.setCommunalAvailable(false)
- runCurrent()
+ kosmos.runTest {
+ whenever(dreamManager.canStartDreaming(anyBoolean())).thenReturn(true)
+ setCommunalAvailable(false)
powerInteractor.setAwakeForTest()
- runCurrent()
// If dreaming is possible but communal is NOT available, then we should transition to
// LOCKSCREEN when waking up due to power button press.
@@ -225,14 +222,12 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
@EnableFlags(FLAG_KEYGUARD_WM_STATE_REFACTOR)
@DisableFlags(FLAG_COMMUNAL_SCENE_KTF_REFACTOR)
fun testTransitionToGlanceableHub_onWakeup_ifIdleOnCommunal_noOccludingActivity() =
- testScope.runTest {
- kosmos.fakeCommunalSceneRepository.setTransitionState(
+ kosmos.runTest {
+ fakeCommunalSceneRepository.setTransitionState(
flowOf(ObservableTransitionState.Idle(CommunalScenes.Communal))
)
- runCurrent()
powerInteractor.setAwakeForTest()
- runCurrent()
// Under default conditions, we should transition to LOCKSCREEN when waking up.
assertThat(transitionRepository)
@@ -243,19 +238,16 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
@DisableFlags(FLAG_KEYGUARD_WM_STATE_REFACTOR, FLAG_SCENE_CONTAINER)
@EnableFlags(FLAG_COMMUNAL_SCENE_KTF_REFACTOR)
fun testTransitionToGlanceableHub_onWakeup_ifAvailable() =
- testScope.runTest {
- // Hub is available.
- whenever(kosmos.dreamManager.canStartDreaming(anyBoolean())).thenReturn(true)
- kosmos.setCommunalAvailable(true)
- runCurrent()
+ kosmos.runTest {
+ setCommunalAvailable(true)
+ whenever(dreamManager.canStartDreaming(anyBoolean())).thenReturn(true)
// Device turns on.
powerInteractor.setAwakeForTest()
- advanceTimeBy(50L)
- runCurrent()
+ testScope.advanceTimeBy(51L)
// We transition to the hub when waking up.
- Truth.assertThat(kosmos.communalSceneRepository.currentScene.value)
+ Truth.assertThat(communalSceneRepository.currentScene.value)
.isEqualTo(CommunalScenes.Communal)
// No transitions are directly started by this interactor.
assertThat(transitionRepository).noTransitionsStarted()
@@ -264,10 +256,9 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
@Test
@EnableFlags(FLAG_KEYGUARD_WM_STATE_REFACTOR)
fun testTransitionToOccluded_onWakeup_whenOccludingActivityOnTop() =
- testScope.runTest {
- kosmos.keyguardOcclusionRepository.setShowWhenLockedActivityInfo(true)
+ kosmos.runTest {
+ keyguardOcclusionRepository.setShowWhenLockedActivityInfo(true)
powerInteractor.setAwakeForTest()
- runCurrent()
// Waking with a SHOW_WHEN_LOCKED activity on top should transition to OCCLUDED.
assertThat(transitionRepository)
@@ -277,15 +268,13 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
@Test
@EnableFlags(FLAG_KEYGUARD_WM_STATE_REFACTOR)
fun testTransitionToOccluded_onWakeup_whenOccludingActivityOnTop_evenIfIdleOnCommunal() =
- testScope.runTest {
- kosmos.fakeCommunalSceneRepository.setTransitionState(
+ kosmos.runTest {
+ fakeCommunalSceneRepository.setTransitionState(
flowOf(ObservableTransitionState.Idle(CommunalScenes.Communal))
)
- runCurrent()
- kosmos.keyguardOcclusionRepository.setShowWhenLockedActivityInfo(true)
+ keyguardOcclusionRepository.setShowWhenLockedActivityInfo(true)
powerInteractor.setAwakeForTest()
- runCurrent()
// Waking with a SHOW_WHEN_LOCKED activity on top should transition to OCCLUDED.
assertThat(transitionRepository)
@@ -296,10 +285,9 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
@EnableFlags(FLAG_KEYGUARD_WM_STATE_REFACTOR)
@Suppress("ktlint:standard:max-line-length")
fun testTransitionToOccluded_onWakeUp_ifPowerButtonGestureDetected_fromAod_nonDismissableKeyguard() =
- testScope.runTest {
+ kosmos.runTest {
powerInteractor.onCameraLaunchGestureDetected()
powerInteractor.setAwakeForTest()
- runCurrent()
// We should head back to GONE since we started there.
assertThat(transitionRepository)
@@ -309,11 +297,10 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
@Test
@EnableFlags(FLAG_KEYGUARD_WM_STATE_REFACTOR)
fun testTransitionToGone_onWakeUp_ifPowerButtonGestureDetected_fromAod_dismissableKeyguard() =
- testScope.runTest {
- kosmos.fakeKeyguardRepository.setKeyguardDismissible(true)
+ kosmos.runTest {
+ fakeKeyguardRepository.setKeyguardDismissible(true)
powerInteractor.onCameraLaunchGestureDetected()
powerInteractor.setAwakeForTest()
- runCurrent()
// We should head back to GONE since we started there.
assertThat(transitionRepository)
@@ -323,25 +310,21 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
@Test
@EnableFlags(FLAG_KEYGUARD_WM_STATE_REFACTOR)
fun testTransitionToGone_onWakeUp_ifPowerButtonGestureDetected_fromGone() =
- testScope.runTest {
+ kosmos.runTest {
val isGone by
- collectLastValue(
- kosmos.keyguardTransitionInteractor.isFinishedIn(Scenes.Gone, GONE)
- )
+ collectLastValue(keyguardTransitionInteractor.isFinishedIn(Scenes.Gone, GONE))
powerInteractor.setAwakeForTest()
transitionRepository.sendTransitionSteps(
from = KeyguardState.DOZING,
to = KeyguardState.GONE,
testScope,
)
- runCurrent()
// Make sure we're GONE.
assertEquals(true, isGone)
// Get part way to AOD.
powerInteractor.onStartedGoingToSleep(PowerManager.GO_TO_SLEEP_REASON_MIN)
- runCurrent()
transitionRepository.sendTransitionSteps(
from = KeyguardState.GONE,
@@ -351,11 +334,10 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
)
// Detect a power gesture and then wake up.
- kosmos.fakeKeyguardRepository.setKeyguardDismissible(true)
+ fakeKeyguardRepository.setKeyguardDismissible(true)
reset(transitionRepository)
powerInteractor.onCameraLaunchGestureDetected()
powerInteractor.setAwakeForTest()
- runCurrent()
// We should head back to GONE since we started there.
assertThat(transitionRepository)
@@ -366,7 +348,7 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
@EnableFlags(FLAG_KEYGUARD_WM_STATE_REFACTOR)
@Suppress("ktlint:standard:max-line-length")
fun testTransitionToOccluded_onWakeUp_ifPowerButtonGestureDetectedAfterFinishedInAod_fromGone() =
- testScope.runTest {
+ kosmos.runTest {
val isGone by
collectLastValue(
kosmos.keyguardTransitionInteractor.isFinishedIn(Scenes.Gone, GONE)
@@ -377,7 +359,6 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
to = KeyguardState.GONE,
testScope,
)
- runCurrent()
// Make sure we're GONE.
assertEquals(true, isGone)
@@ -394,7 +375,6 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
reset(transitionRepository)
powerInteractor.onCameraLaunchGestureDetected()
powerInteractor.setAwakeForTest()
- runCurrent()
// We should go to OCCLUDED - we came from GONE, but we finished in AOD, so this is no
// longer an insecure camera launch and it would be bad if we unlocked now.
@@ -405,7 +385,7 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
@Test
@EnableFlags(FLAG_KEYGUARD_WM_STATE_REFACTOR)
fun testTransitionToOccluded_onWakeUp_ifPowerButtonGestureDetected_fromLockscreen() =
- testScope.runTest {
+ kosmos.runTest {
val isLockscreen by
collectLastValue(
kosmos.keyguardTransitionInteractor.isFinishedIn(Scenes.Lockscreen, LOCKSCREEN)
@@ -416,14 +396,12 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
to = KeyguardState.LOCKSCREEN,
testScope,
)
- runCurrent()
// Make sure we're in LOCKSCREEN.
assertEquals(true, isLockscreen)
// Get part way to AOD.
powerInteractor.onStartedGoingToSleep(PowerManager.GO_TO_SLEEP_REASON_MIN)
- runCurrent()
transitionRepository.sendTransitionSteps(
from = KeyguardState.LOCKSCREEN,
@@ -436,7 +414,6 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
reset(transitionRepository)
powerInteractor.onCameraLaunchGestureDetected()
powerInteractor.setAwakeForTest()
- runCurrent()
// We should head back to GONE since we started there.
assertThat(transitionRepository)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractorTest.kt
index e9e3e1b37776..8e1068226431 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractorTest.kt
@@ -38,17 +38,17 @@ import com.android.systemui.keyguard.data.repository.keyguardTransitionRepositor
import com.android.systemui.keyguard.shared.model.BiometricUnlockMode
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.util.KeyguardTransitionRepositorySpySubject.Companion.assertThat
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.runTest
import com.android.systemui.kosmos.testScope
+import com.android.systemui.kosmos.useUnconfinedTestDispatcher
import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest
import com.android.systemui.power.domain.interactor.powerInteractor
import com.android.systemui.statusbar.domain.interactor.keyguardOcclusionInteractor
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.test.advanceTimeBy
-import kotlinx.coroutines.test.runCurrent
-import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Ignore
import org.junit.Test
@@ -59,7 +59,6 @@ import org.mockito.kotlin.whenever
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
class FromDreamingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiTestCase() {
@@ -77,7 +76,7 @@ class FromDreamingTransitionInteractorTest(flags: FlagsParameterization?) : Sysu
}
private val kosmos =
- testKosmos().apply {
+ testKosmos().useUnconfinedTestDispatcher().apply {
this.fakeKeyguardTransitionRepository =
FakeKeyguardTransitionRepository(
// This test sends transition steps manually in the test cases.
@@ -88,44 +87,40 @@ class FromDreamingTransitionInteractorTest(flags: FlagsParameterization?) : Sysu
this.keyguardTransitionRepository = fakeKeyguardTransitionRepositorySpy
}
- private val testScope = kosmos.testScope
- private val underTest by lazy { kosmos.fromDreamingTransitionInteractor }
-
- private val powerInteractor = kosmos.powerInteractor
- private val transitionRepository = kosmos.fakeKeyguardTransitionRepositorySpy
+ private val Kosmos.underTest by Kosmos.Fixture { fromDreamingTransitionInteractor }
+ private val Kosmos.transitionRepository by
+ Kosmos.Fixture { fakeKeyguardTransitionRepositorySpy }
@Before
fun setup() {
runBlocking {
- transitionRepository.sendTransitionSteps(
+ kosmos.transitionRepository.sendTransitionSteps(
from = KeyguardState.LOCKSCREEN,
to = KeyguardState.DREAMING,
- testScope,
+ kosmos.testScope,
)
- reset(transitionRepository)
+ reset(kosmos.transitionRepository)
kosmos.setCommunalAvailable(true)
}
- underTest.start()
+ kosmos.underTest.start()
}
@Test
@EnableFlags(Flags.FLAG_KEYGUARD_WM_STATE_REFACTOR)
@Ignore("Until b/349837588 is fixed")
fun testTransitionToOccluded_ifDreamEnds_occludingActivityOnTop() =
- testScope.runTest {
- kosmos.fakeKeyguardRepository.setDreaming(true)
+ kosmos.runTest {
+ fakeKeyguardRepository.setDreaming(true)
transitionRepository.sendTransitionSteps(
from = KeyguardState.LOCKSCREEN,
to = KeyguardState.DREAMING,
- testScope,
+ kosmos.testScope,
)
- runCurrent()
reset(transitionRepository)
- kosmos.keyguardOcclusionRepository.setShowWhenLockedActivityInfo(onTop = true)
- kosmos.fakeKeyguardRepository.setDreaming(false)
- runCurrent()
+ keyguardOcclusionRepository.setShowWhenLockedActivityInfo(onTop = true)
+ fakeKeyguardRepository.setDreaming(false)
assertThat(transitionRepository)
.startedTransition(from = KeyguardState.DREAMING, to = KeyguardState.OCCLUDED)
@@ -134,19 +129,15 @@ class FromDreamingTransitionInteractorTest(flags: FlagsParameterization?) : Sysu
@Test
@EnableFlags(Flags.FLAG_KEYGUARD_WM_STATE_REFACTOR)
fun testDoesNotTransitionToOccluded_occludingActivityOnTop_whileStillDreaming() =
- testScope.runTest {
- kosmos.fakeKeyguardRepository.setDreaming(true)
+ kosmos.runTest {
+ fakeKeyguardRepository.setDreaming(true)
transitionRepository.sendTransitionSteps(
from = KeyguardState.LOCKSCREEN,
to = KeyguardState.DREAMING,
testScope,
)
- runCurrent()
-
reset(transitionRepository)
-
- kosmos.keyguardOcclusionRepository.setShowWhenLockedActivityInfo(onTop = true)
- runCurrent()
+ keyguardOcclusionRepository.setShowWhenLockedActivityInfo(onTop = true)
assertThat(transitionRepository).noTransitionsStarted()
}
@@ -154,11 +145,9 @@ class FromDreamingTransitionInteractorTest(flags: FlagsParameterization?) : Sysu
@Test
@EnableFlags(Flags.FLAG_KEYGUARD_WM_STATE_REFACTOR)
fun testTransitionsToLockscreen_whenOccludingActivityEnds() =
- testScope.runTest {
- runCurrent()
-
- kosmos.fakeKeyguardRepository.setDreaming(true)
- kosmos.keyguardOcclusionInteractor.setWmNotifiedShowWhenLockedActivityOnTop(true)
+ kosmos.runTest {
+ fakeKeyguardRepository.setDreaming(true)
+ keyguardOcclusionInteractor.setWmNotifiedShowWhenLockedActivityOnTop(true)
// Transition to DREAMING and set the power interactor awake
powerInteractor.setAwakeForTest()
@@ -167,15 +156,15 @@ class FromDreamingTransitionInteractorTest(flags: FlagsParameterization?) : Sysu
to = KeyguardState.DREAMING,
testScope,
)
- kosmos.fakeKeyguardRepository.setBiometricUnlockState(BiometricUnlockMode.NONE)
+ fakeKeyguardRepository.setBiometricUnlockState(BiometricUnlockMode.NONE)
// Get past initial setup
- advanceTimeBy(600L)
+ testScope.advanceTimeBy(600L)
reset(transitionRepository)
- kosmos.keyguardOcclusionRepository.setShowWhenLockedActivityInfo(onTop = false)
- kosmos.fakeKeyguardRepository.setDreaming(false)
- advanceTimeBy(60L)
+ keyguardOcclusionRepository.setShowWhenLockedActivityInfo(onTop = false)
+ fakeKeyguardRepository.setDreaming(false)
+ testScope.advanceTimeBy(60L)
assertThat(transitionRepository)
.startedTransition(from = KeyguardState.DREAMING, to = KeyguardState.LOCKSCREEN)
@@ -183,7 +172,7 @@ class FromDreamingTransitionInteractorTest(flags: FlagsParameterization?) : Sysu
@Test
fun testTransitionToAlternateBouncer() =
- testScope.runTest {
+ kosmos.runTest {
transitionRepository.sendTransitionSteps(
from = KeyguardState.LOCKSCREEN,
to = KeyguardState.DREAMING,
@@ -191,8 +180,7 @@ class FromDreamingTransitionInteractorTest(flags: FlagsParameterization?) : Sysu
)
reset(transitionRepository)
- kosmos.fakeKeyguardBouncerRepository.setAlternateVisible(true)
- runCurrent()
+ fakeKeyguardBouncerRepository.setAlternateVisible(true)
assertThat(transitionRepository)
.startedTransition(
@@ -205,7 +193,7 @@ class FromDreamingTransitionInteractorTest(flags: FlagsParameterization?) : Sysu
@EnableFlags(FLAG_COMMUNAL_SCENE_KTF_REFACTOR)
@DisableFlags(Flags.FLAG_SCENE_CONTAINER)
fun testTransitionToGlanceableHubOnWake() =
- testScope.runTest {
+ kosmos.runTest {
transitionRepository.sendTransitionSteps(
from = KeyguardState.LOCKSCREEN,
to = KeyguardState.DREAMING,
@@ -213,17 +201,15 @@ class FromDreamingTransitionInteractorTest(flags: FlagsParameterization?) : Sysu
)
reset(transitionRepository)
- whenever(kosmos.dreamManager.canStartDreaming(anyBoolean())).thenReturn(true)
- kosmos.setCommunalAvailable(true)
- runCurrent()
+ setCommunalAvailable(true)
+ whenever(dreamManager.canStartDreaming(anyBoolean())).thenReturn(true)
// Device wakes up.
powerInteractor.setAwakeForTest()
- advanceTimeBy(150L)
- runCurrent()
+ testScope.advanceTimeBy(150L)
// We transition to the hub when waking up.
- assertThat(kosmos.communalSceneRepository.currentScene.value)
+ assertThat(communalSceneRepository.currentScene.value)
.isEqualTo(CommunalScenes.Communal)
// No transitions are directly started by this interactor.
assertThat(transitionRepository).noTransitionsStarted()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractorTest.kt
index 9e8713be3f5e..63960abcfd23 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractorTest.kt
@@ -40,7 +40,6 @@ import com.android.systemui.shade.data.repository.FlingInfo
import com.android.systemui.shade.data.repository.fakeShadeRepository
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -49,7 +48,6 @@ import org.junit.runner.RunWith
import org.mockito.Mockito.reset
import org.mockito.Mockito.spy
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class FromLockscreenTransitionInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromOccludedTransitionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromOccludedTransitionInteractorTest.kt
index 4a90722274bd..63ed0402b633 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromOccludedTransitionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromOccludedTransitionInteractorTest.kt
@@ -51,7 +51,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest
import com.android.systemui.power.domain.interactor.powerInteractor
import com.android.systemui.testKosmos
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.test.runCurrent
@@ -61,7 +60,6 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito.reset
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class FromOccludedTransitionInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractorTest.kt
index a7da23065dec..63bb1001c873 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractorTest.kt
@@ -37,7 +37,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.android.systemui.user.domain.interactor.selectedUserInteractor
import junit.framework.Assert.assertEquals
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -45,7 +44,6 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito.reset
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class FromPrimaryBouncerTransitionInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/InWindowLauncherUnlockAnimationInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/InWindowLauncherUnlockAnimationInteractorTest.kt
index ea5a41f6fd5c..6241865ed9b9 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/InWindowLauncherUnlockAnimationInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/InWindowLauncherUnlockAnimationInteractorTest.kt
@@ -44,7 +44,6 @@ import org.mockito.MockitoAnnotations
@SmallTest
@RunWith(AndroidJUnit4::class)
-@kotlinx.coroutines.ExperimentalCoroutinesApi
class InWindowLauncherUnlockAnimationInteractorTest : SysuiTestCase() {
private val kosmos = testKosmos()
private val underTest =
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardBlueprintInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardBlueprintInteractorTest.kt
index 84b7f5c28265..3acb9c68d4bb 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardBlueprintInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardBlueprintInteractorTest.kt
@@ -39,7 +39,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.advanceUntilIdle
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -52,7 +51,6 @@ import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class KeyguardBlueprintInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissActionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissActionInteractorTest.kt
index dadcf71a4723..c63f6f65c631 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissActionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissActionInteractorTest.kt
@@ -45,7 +45,6 @@ import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.TestScope
@@ -56,7 +55,6 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnableSceneContainer
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorTest.kt
index fabed03bc18c..4eb5ea086870 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorTest.kt
@@ -34,7 +34,6 @@ import com.android.systemui.power.data.repository.fakePowerRepository
import com.android.systemui.testKosmos
import com.android.systemui.user.data.repository.fakeUserRepository
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestDispatcher
import kotlinx.coroutines.test.TestScope
@@ -45,7 +44,6 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class KeyguardDismissInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt
index c44f27ef348b..0718d0d32812 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt
@@ -52,7 +52,6 @@ import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.data.repository.shadeRepository
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.advanceTimeBy
@@ -62,7 +61,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class KeyguardInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardKeyEventInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardKeyEventInteractorTest.kt
index fbdab7d40c9b..6704d63395ad 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardKeyEventInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardKeyEventInteractorTest.kt
@@ -36,7 +36,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import org.junit.Before
import org.junit.Rule
import org.junit.Test
@@ -49,7 +48,6 @@ import org.mockito.Mockito.verify
import org.mockito.junit.MockitoJUnit
import org.mockito.kotlin.isNull
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class KeyguardKeyEventInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardOcclusionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardOcclusionInteractorTest.kt
index ae2a5c5fe501..8f60e6bbff1d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardOcclusionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardOcclusionInteractorTest.kt
@@ -30,8 +30,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.keyguard.domain.interactor
import android.provider.Settings
@@ -66,7 +64,6 @@ import com.android.systemui.util.settings.data.repository.userAwareSecureSetting
import com.google.common.truth.Truth.assertThat
import junit.framework.Assert.assertFalse
import junit.framework.Assert.assertTrue
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.runCurrent
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorTest.kt
index 88c8b1fbb4ce..868b3cee4953 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.common.shared.model.ContentDescription
import com.android.systemui.common.shared.model.Icon
-import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.coroutines.collectValues
import com.android.systemui.dock.DockManager
@@ -67,7 +66,6 @@ import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -79,7 +77,6 @@ import org.mockito.ArgumentMatchers.anyString
import org.mockito.Mock
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {
@@ -150,7 +147,6 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {
.thenReturn(FakeSharedPreferences())
},
userTracker = userTracker,
- communalSettingsInteractor = kosmos.communalSettingsInteractor,
broadcastDispatcher = fakeBroadcastDispatcher,
)
val remoteUserSelectionManager =
@@ -200,7 +196,6 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {
biometricSettingsRepository = biometricSettingsRepository,
backgroundDispatcher = kosmos.testDispatcher,
appContext = context,
- communalSettingsInteractor = kosmos.communalSettingsInteractor,
accessibilityManager = accessibilityManager,
sceneInteractor = { kosmos.sceneInteractor },
)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardLockWhileAwakeInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardShowWhileAwakeInteractorTest.kt
index bef995fa5225..cfe382696414 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardLockWhileAwakeInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardShowWhileAwakeInteractorTest.kt
@@ -40,42 +40,38 @@ import org.mockito.kotlin.whenever
@SmallTest
@RunWith(AndroidJUnit4::class)
@kotlinx.coroutines.ExperimentalCoroutinesApi
-class KeyguardLockWhileAwakeInteractorTest : SysuiTestCase() {
+class KeyguardShowWhileAwakeInteractorTest : SysuiTestCase() {
private val kosmos = testKosmos()
private val testScope = kosmos.testScope
- private lateinit var underTest: KeyguardLockWhileAwakeInteractor
+ private lateinit var underTest: KeyguardShowWhileAwakeInteractor
@Before
fun setup() {
- underTest = kosmos.keyguardLockWhileAwakeInteractor
+ underTest = kosmos.keyguardShowWhileAwakeInteractor
}
@Test
fun emitsMultipleTimeoutEvents() =
testScope.runTest {
- val values by collectValues(underTest.lockWhileAwakeEvents)
+ val values by collectValues(underTest.showWhileAwakeEvents)
kosmos.keyguardEnabledInteractor.notifyKeyguardEnabled(true)
runCurrent()
- kosmos.keyguardServiceLockNowInteractor.onKeyguardServiceDoKeyguardTimeout(
- options = null
- )
+ kosmos.keyguardServiceShowLockscreenInteractor.onKeyguardServiceDoKeyguardTimeout()
runCurrent()
assertThat(values)
- .containsExactly(LockWhileAwakeReason.KEYGUARD_TIMEOUT_WHILE_SCREEN_ON)
+ .containsExactly(ShowWhileAwakeReason.KEYGUARD_TIMEOUT_WHILE_SCREEN_ON)
advanceTimeBy(1000)
- kosmos.keyguardServiceLockNowInteractor.onKeyguardServiceDoKeyguardTimeout(
- options = null
- )
+ kosmos.keyguardServiceShowLockscreenInteractor.onKeyguardServiceDoKeyguardTimeout()
runCurrent()
assertThat(values)
.containsExactly(
- LockWhileAwakeReason.KEYGUARD_TIMEOUT_WHILE_SCREEN_ON,
- LockWhileAwakeReason.KEYGUARD_TIMEOUT_WHILE_SCREEN_ON,
+ ShowWhileAwakeReason.KEYGUARD_TIMEOUT_WHILE_SCREEN_ON,
+ ShowWhileAwakeReason.KEYGUARD_TIMEOUT_WHILE_SCREEN_ON,
)
}
@@ -89,7 +85,7 @@ class KeyguardLockWhileAwakeInteractorTest : SysuiTestCase() {
@Test
fun emitsWhenKeyguardReenabled_onlyIfShowingWhenDisabled() =
testScope.runTest {
- val values by collectValues(underTest.lockWhileAwakeEvents)
+ val values by collectValues(underTest.showWhileAwakeEvents)
kosmos.biometricSettingsRepository.setIsUserInLockdown(false)
runCurrent()
@@ -102,7 +98,7 @@ class KeyguardLockWhileAwakeInteractorTest : SysuiTestCase() {
kosmos.keyguardEnabledInteractor.notifyKeyguardEnabled(true)
runCurrent()
- assertThat(values).containsExactly(LockWhileAwakeReason.KEYGUARD_REENABLED)
+ assertThat(values).containsExactly(ShowWhileAwakeReason.KEYGUARD_REENABLED)
kosmos.fakeKeyguardTransitionRepository.sendTransitionSteps(
from = KeyguardState.LOCKSCREEN,
@@ -113,7 +109,7 @@ class KeyguardLockWhileAwakeInteractorTest : SysuiTestCase() {
kosmos.keyguardEnabledInteractor.notifyKeyguardEnabled(true)
runCurrent()
- assertThat(values).containsExactly(LockWhileAwakeReason.KEYGUARD_REENABLED)
+ assertThat(values).containsExactly(ShowWhileAwakeReason.KEYGUARD_REENABLED)
}
/**
@@ -123,7 +119,7 @@ class KeyguardLockWhileAwakeInteractorTest : SysuiTestCase() {
@Test
fun doesNotEmit_keyguardNoLongerSuppressed() =
testScope.runTest {
- val values by collectValues(underTest.lockWhileAwakeEvents)
+ val values by collectValues(underTest.showWhileAwakeEvents)
// Enable keyguard and then suppress it.
kosmos.keyguardEnabledInteractor.notifyKeyguardEnabled(true)
@@ -145,14 +141,14 @@ class KeyguardLockWhileAwakeInteractorTest : SysuiTestCase() {
@Test
fun doesNotEmit_fromLockdown_orFromLockNow_ifEnabledButSuppressed() =
testScope.runTest {
- val values by collectValues(underTest.lockWhileAwakeEvents)
+ val values by collectValues(underTest.showWhileAwakeEvents)
// Set keyguard enabled, but then disable lockscreen (suppress it).
kosmos.keyguardEnabledInteractor.notifyKeyguardEnabled(true)
whenever(kosmos.lockPatternUtils.isLockScreenDisabled(anyInt())).thenReturn(true)
runCurrent()
- kosmos.keyguardServiceLockNowInteractor.onKeyguardServiceDoKeyguardTimeout(null)
+ kosmos.keyguardServiceShowLockscreenInteractor.onKeyguardServiceDoKeyguardTimeout()
runCurrent()
kosmos.biometricSettingsRepository.setIsUserInLockdown(true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractorTest.kt
index c9871f1e4e1e..6d53e6c138c7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardSurfaceBehindInteractorTest.kt
@@ -50,7 +50,6 @@ import org.junit.runner.RunWith
@SmallTest
@RunWith(AndroidJUnit4::class)
-@kotlinx.coroutines.ExperimentalCoroutinesApi
class KeyguardSurfaceBehindInteractorTest : SysuiTestCase() {
private val kosmos = testKosmos()
private lateinit var testScope: TestScope
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTouchHandlingInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTouchHandlingInteractorTest.kt
index 16f02c5dc9ea..e203a276a2f2 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTouchHandlingInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTouchHandlingInteractorTest.kt
@@ -40,7 +40,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.runCurrent
@@ -53,7 +52,6 @@ import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class KeyguardTouchHandlingInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorTest.kt
index 635f80262348..29e95cd911f8 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorTest.kt
@@ -55,7 +55,6 @@ import org.junit.runner.RunWith
@SmallTest
@RunWith(AndroidJUnit4::class)
-@kotlinx.coroutines.ExperimentalCoroutinesApi
class KeyguardTransitionInteractorTest : SysuiTestCase() {
val kosmos = testKosmos()
val underTest = kosmos.keyguardTransitionInteractor
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt
index abcbdb153e80..d057f7a0e8f2 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt
@@ -65,7 +65,6 @@ import com.android.systemui.shade.shadeTestUtil
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.whenever
import kotlin.time.Duration.Companion.milliseconds
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.cancelChildren
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
@@ -88,7 +87,6 @@ import platform.test.runner.parameterized.Parameters
* Class for testing user journeys through the interactors. They will all be activated during setup,
* to ensure the expected transitions are still triggered.
*/
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
class KeyguardTransitionScenariosTest(flags: FlagsParameterization?) : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardWakeDirectlyToGoneInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardWakeDirectlyToGoneInteractorTest.kt
index 98e3c68e6e33..561eee7db50b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardWakeDirectlyToGoneInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardWakeDirectlyToGoneInteractorTest.kt
@@ -44,7 +44,6 @@ import com.android.systemui.power.domain.interactor.powerInteractor
import com.android.systemui.testKosmos
import com.android.systemui.util.settings.fakeSettings
import junit.framework.Assert.assertEquals
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
@@ -58,7 +57,6 @@ import org.mockito.kotlin.mock
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class KeyguardWakeDirectlyToGoneInteractorTest : SysuiTestCase() {
@@ -187,7 +185,7 @@ class KeyguardWakeDirectlyToGoneInteractorTest : SysuiTestCase() {
canWake,
)
- kosmos.keyguardServiceLockNowInteractor.onKeyguardServiceDoKeyguardTimeout(null)
+ kosmos.keyguardServiceShowLockscreenInteractor.onKeyguardServiceDoKeyguardTimeout()
runCurrent()
assertEquals(
@@ -211,7 +209,7 @@ class KeyguardWakeDirectlyToGoneInteractorTest : SysuiTestCase() {
canWake,
)
- kosmos.keyguardServiceLockNowInteractor.onKeyguardServiceDoKeyguardTimeout(null)
+ kosmos.keyguardServiceShowLockscreenInteractor.onKeyguardServiceDoKeyguardTimeout()
runCurrent()
assertEquals(
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/LightRevealScrimInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/LightRevealScrimInteractorTest.kt
index e24bb0432ed5..96db0149d71c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/LightRevealScrimInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/LightRevealScrimInteractorTest.kt
@@ -38,7 +38,6 @@ import com.android.systemui.statusbar.LightRevealEffect
import com.android.systemui.statusbar.LightRevealScrim
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Assert.assertEquals
@@ -47,7 +46,6 @@ import org.junit.runner.RunWith
import org.mockito.Mockito
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class LightRevealScrimInteractorTest : SysuiTestCase() {
val kosmos =
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/SwipeToDismissInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/SwipeToDismissInteractorTest.kt
index d77519d4b755..d36b45e79fcc 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/SwipeToDismissInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/SwipeToDismissInteractorTest.kt
@@ -36,7 +36,6 @@ import org.junit.runner.RunWith
@SmallTest
@RunWith(AndroidJUnit4::class)
-@kotlinx.coroutines.ExperimentalCoroutinesApi
class SwipeToDismissInteractorTest : SysuiTestCase() {
private val kosmos = testKosmos()
private val testScope = kosmos.testScope
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/UdfpsKeyguardInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/UdfpsKeyguardInteractorTest.kt
index 309e3a8be14a..be81f31498f7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/UdfpsKeyguardInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/UdfpsKeyguardInteractorTest.kt
@@ -49,7 +49,6 @@ import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -62,7 +61,6 @@ import org.mockito.MockitoAnnotations
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
class UdfpsKeyguardInteractorTest(flags: FlagsParameterization) : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractorTest.kt
index 5f5d80c01292..b7c162b4d6eb 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractorTest.kt
@@ -60,7 +60,6 @@ import org.junit.runner.RunWith
@SmallTest
@RunWith(AndroidJUnit4::class)
-@kotlinx.coroutines.ExperimentalCoroutinesApi
class WindowManagerLockscreenVisibilityInteractorTest : SysuiTestCase() {
private val lockscreenSurfaceVisibilityFlow = MutableStateFlow<Boolean?>(false)
private val primaryBouncerSurfaceVisibilityFlow = MutableStateFlow<Boolean?>(false)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/shared/transition/FakeKeyguardTransitionAnimationCallbackTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/shared/transition/FakeKeyguardTransitionAnimationCallbackTest.kt
new file mode 100644
index 000000000000..6e44bc708e74
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/shared/transition/FakeKeyguardTransitionAnimationCallbackTest.kt
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.shared.transition
+
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.kosmos.runTest
+import com.android.systemui.kosmos.useUnconfinedTestDispatcher
+import com.android.systemui.testKosmos
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class FakeKeyguardTransitionAnimationCallbackTest : SysuiTestCase() {
+
+ private val kosmos = testKosmos().useUnconfinedTestDispatcher()
+
+ val underTest = FakeKeyguardTransitionAnimationCallback()
+
+ @Test
+ fun onAnimationStarted() =
+ kosmos.runTest {
+ assertThat(underTest.activeAnimations).isEmpty()
+
+ underTest.onAnimationStarted(KeyguardState.LOCKSCREEN, KeyguardState.AOD)
+ assertThat(underTest.activeAnimations).hasSize(1)
+
+ underTest.onAnimationStarted(KeyguardState.AOD, KeyguardState.ALTERNATE_BOUNCER)
+ assertThat(underTest.activeAnimations).hasSize(2)
+ }
+
+ @Test
+ fun onAnimationEnded() =
+ kosmos.runTest {
+ underTest.onAnimationStarted(KeyguardState.LOCKSCREEN, KeyguardState.AOD)
+ underTest.onAnimationStarted(KeyguardState.AOD, KeyguardState.ALTERNATE_BOUNCER)
+ assertThat(underTest.activeAnimations).hasSize(2)
+
+ underTest.onAnimationEnded(KeyguardState.AOD, KeyguardState.ALTERNATE_BOUNCER)
+ assertThat(underTest.activeAnimations).hasSize(1)
+
+ underTest.onAnimationEnded(KeyguardState.LOCKSCREEN, KeyguardState.AOD)
+ assertThat(underTest.activeAnimations).isEmpty()
+ }
+
+ @Test
+ fun onAnimationCanceled() =
+ kosmos.runTest {
+ underTest.onAnimationStarted(KeyguardState.LOCKSCREEN, KeyguardState.AOD)
+ underTest.onAnimationStarted(KeyguardState.AOD, KeyguardState.ALTERNATE_BOUNCER)
+ assertThat(underTest.activeAnimations).hasSize(2)
+
+ underTest.onAnimationCanceled(KeyguardState.AOD, KeyguardState.ALTERNATE_BOUNCER)
+ assertThat(underTest.activeAnimations).hasSize(1)
+
+ underTest.onAnimationCanceled(KeyguardState.LOCKSCREEN, KeyguardState.AOD)
+ assertThat(underTest.activeAnimations).isEmpty()
+ }
+
+ @Test(expected = IllegalStateException::class)
+ fun onAnimationEnded_throwsWhenNoSuchAnimation() =
+ kosmos.runTest {
+ underTest.onAnimationStarted(KeyguardState.LOCKSCREEN, KeyguardState.AOD)
+ underTest.onAnimationStarted(KeyguardState.AOD, KeyguardState.ALTERNATE_BOUNCER)
+ assertThat(underTest.activeAnimations).hasSize(2)
+
+ underTest.onAnimationEnded(KeyguardState.AOD, KeyguardState.LOCKSCREEN)
+ }
+
+ @Test(expected = IllegalStateException::class)
+ fun onAnimationCanceled_throwsWhenNoSuchAnimation() =
+ kosmos.runTest {
+ underTest.onAnimationStarted(KeyguardState.LOCKSCREEN, KeyguardState.AOD)
+ underTest.onAnimationStarted(KeyguardState.AOD, KeyguardState.ALTERNATE_BOUNCER)
+ assertThat(underTest.activeAnimations).hasSize(2)
+
+ underTest.onAnimationCanceled(KeyguardState.AOD, KeyguardState.LOCKSCREEN)
+ }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/binder/InWindowLauncherUnlockAnimationManagerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/binder/InWindowLauncherUnlockAnimationManagerTest.kt
index 0cfc20d7bbd8..0e9f5e715146 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/binder/InWindowLauncherUnlockAnimationManagerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/binder/InWindowLauncherUnlockAnimationManagerTest.kt
@@ -41,7 +41,6 @@ import org.mockito.MockitoAnnotations
@SmallTest
@RunWith(AndroidJUnit4::class)
-@kotlinx.coroutines.ExperimentalCoroutinesApi
class InWindowLauncherUnlockAnimationManagerTest : SysuiTestCase() {
private val kosmos = testKosmos()
private lateinit var underTest: InWindowLauncherUnlockAnimationManager
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/binder/KeyguardClockViewBinderTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/binder/KeyguardClockViewBinderTest.kt
index 4e3d18c80a4f..5131b603f762 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/binder/KeyguardClockViewBinderTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/binder/KeyguardClockViewBinderTest.kt
@@ -40,7 +40,6 @@ import org.mockito.MockitoAnnotations
@SmallTest
@RunWith(AndroidJUnit4::class)
-@kotlinx.coroutines.ExperimentalCoroutinesApi
class KeyguardClockViewBinderTest : SysuiTestCase() {
@Mock private lateinit var rootView: ConstraintLayout
@Mock private lateinit var burnInLayer: Layer
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/binder/KeyguardSurfaceBehindParamsApplierTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/binder/KeyguardSurfaceBehindParamsApplierTest.kt
index 9055495b9f23..7a614fd34402 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/binder/KeyguardSurfaceBehindParamsApplierTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/binder/KeyguardSurfaceBehindParamsApplierTest.kt
@@ -43,7 +43,6 @@ import org.mockito.MockitoAnnotations
@SmallTest
@RunWithLooper(setAsMainLooper = true)
-@kotlinx.coroutines.ExperimentalCoroutinesApi
@RunWith(AndroidJUnit4::class)
class KeyguardSurfaceBehindParamsApplierTest : SysuiTestCase() {
@get:Rule val animatorTestRule = AnimatorTestRule(this)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/binder/WindowManagerLockscreenVisibilityManagerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/binder/WindowManagerLockscreenVisibilityManagerTest.kt
index bafabe07d370..97c746c49cba 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/binder/WindowManagerLockscreenVisibilityManagerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/binder/WindowManagerLockscreenVisibilityManagerTest.kt
@@ -50,7 +50,6 @@ import org.mockito.kotlin.whenever
@SmallTest
@RunWith(AndroidJUnit4::class)
-@kotlinx.coroutines.ExperimentalCoroutinesApi
class WindowManagerLockscreenVisibilityManagerTest : SysuiTestCase() {
@get:Rule val checkFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprintTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprintTest.kt
index 810ca4960a57..3a016ff7152a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprintTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprintTest.kt
@@ -43,7 +43,6 @@ import com.android.systemui.keyguard.ui.view.layout.sections.SmartspaceSection
import com.android.systemui.keyguard.ui.view.layout.sections.SplitShadeGuidelines
import com.android.systemui.util.mockito.whenever
import java.util.Optional
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -55,7 +54,6 @@ import org.mockito.MockitoAnnotations
@RunWith(AndroidJUnit4::class)
@RunWithLooper(setAsMainLooper = true)
-@ExperimentalCoroutinesApi
@SmallTest
class DefaultKeyguardBlueprintTest : SysuiTestCase() {
private lateinit var underTest: DefaultKeyguardBlueprint
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSectionTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSectionTest.kt
index 1cf45f8f8b8e..2ef86e66a2aa 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSectionTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSectionTest.kt
@@ -47,7 +47,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.advanceUntilIdle
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -58,7 +57,6 @@ import org.mockito.ArgumentMatchers.anyString
import org.mockito.MockitoAnnotations
import org.mockito.kotlin.mock
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
@SmallTest
class ClockSectionTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AccessibilityActionsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AccessibilityActionsViewModelTest.kt
index d0f434ad9b4f..708257a90667 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AccessibilityActionsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AccessibilityActionsViewModelTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.keyguard.ui.viewmodel
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -31,7 +29,6 @@ import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerMessageAreaViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerMessageAreaViewModelTest.kt
index 87d1cd571e3c..1716fe09525c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerMessageAreaViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerMessageAreaViewModelTest.kt
@@ -33,7 +33,6 @@ import com.android.systemui.keyguard.shared.model.FailFingerprintAuthenticationS
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -41,7 +40,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class AlternateBouncerMessageAreaViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToAodTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToAodTransitionViewModelTest.kt
index df8afdbcf7a8..9dd14290f773 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToAodTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToAodTransitionViewModelTest.kt
@@ -38,13 +38,11 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.collect.Range
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class AlternateBouncerToAodTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToDozingTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToDozingTransitionViewModelTest.kt
index f8a6fc795b42..a75f27c984da 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToDozingTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToDozingTransitionViewModelTest.kt
@@ -33,13 +33,11 @@ import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class AlternateBouncerToDozingTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToGoneTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToGoneTransitionViewModelTest.kt
index 692ffee3fa31..1e91845825d5 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToGoneTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToGoneTransitionViewModelTest.kt
@@ -33,13 +33,11 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.statusbar.sysuiStatusBarStateController
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class AlternateBouncerToGoneTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToLockscreenTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToLockscreenTransitionViewModelTest.kt
index f74b74a9f618..e0ba826436aa 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToLockscreenTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToLockscreenTransitionViewModelTest.kt
@@ -30,13 +30,11 @@ import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class AlternateBouncerToLockscreenTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToOccludedTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToOccludedTransitionViewModelTest.kt
index 288dc489c1bd..06c224f16bac 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToOccludedTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToOccludedTransitionViewModelTest.kt
@@ -30,12 +30,10 @@ import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class AlternateBouncerToOccludedTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModelTest.kt
index e93ed39274fb..bbbdeff5a043 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModelTest.kt
@@ -36,12 +36,10 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.shade.shadeTestUtil
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class AlternateBouncerToPrimaryBouncerTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModelTest.kt
index 844a166be47b..e1323c166f6b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModelTest.kt
@@ -37,14 +37,12 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.any
import com.google.common.collect.Range
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito.mock
import org.mockito.Mockito.verify
-@ExperimentalCoroutinesApi
@RunWith(AndroidJUnit4::class)
@SmallTest
class AlternateBouncerViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerWindowViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerWindowViewModelTest.kt
index 5d9548057bae..7b000df1c715 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerWindowViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerWindowViewModelTest.kt
@@ -29,12 +29,10 @@ import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@RunWith(AndroidJUnit4::class)
@SmallTest
class AlternateBouncerWindowViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModelTest.kt
index be504cc0f704..eb8f1aac5cae 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModelTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.keyguard.ui.viewmodel
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -38,7 +36,6 @@ import com.android.systemui.plugins.clocks.ClockController
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.test.runCurrent
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodToGoneTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodToGoneTransitionViewModelTest.kt
index a3371d3d24f4..0e13d018ee5e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodToGoneTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodToGoneTransitionViewModelTest.kt
@@ -27,12 +27,10 @@ import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class AodToGoneTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodToLockscreenTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodToLockscreenTransitionViewModelTest.kt
index 4dbe7c8bdb5a..caf54f17294b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodToLockscreenTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodToLockscreenTransitionViewModelTest.kt
@@ -32,7 +32,6 @@ import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.shade.shadeTestUtil
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -41,7 +40,6 @@ import org.junit.runner.RunWith
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
class AodToLockscreenTransitionViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodToOccludedTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodToOccludedTransitionViewModelTest.kt
index db8fbf604430..e03086857e7f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodToOccludedTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodToOccludedTransitionViewModelTest.kt
@@ -27,12 +27,10 @@ import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class AodToOccludedTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodToPrimaryBouncerTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodToPrimaryBouncerTransitionViewModelTest.kt
index 01191cca87a1..52f7ca784d4f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodToPrimaryBouncerTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodToPrimaryBouncerTransitionViewModelTest.kt
@@ -32,13 +32,11 @@ import com.android.systemui.keyguard.ui.transitions.blurConfig
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class AodToPrimaryBouncerTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryBackgroundViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryBackgroundViewModelTest.kt
index 22677b2f8e3e..c8fade3fbf01 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryBackgroundViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryBackgroundViewModelTest.kt
@@ -30,13 +30,11 @@ import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class DeviceEntryBackgroundViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryForegroundViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryForegroundViewModelTest.kt
index d42b538cf355..eb4b373edcfa 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryForegroundViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryForegroundViewModelTest.kt
@@ -30,14 +30,12 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.res.R
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.After
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class DeviceEntryForegroundViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModelTest.kt
index b49e546c6e78..5bc4d5ebaf59 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModelTest.kt
@@ -39,7 +39,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.runCurrent
@@ -48,7 +47,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class DeviceEntryIconViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DozingToGoneTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DozingToGoneTransitionViewModelTest.kt
index bf3231e6e59d..61a50babbf3f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DozingToGoneTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DozingToGoneTransitionViewModelTest.kt
@@ -29,13 +29,11 @@ import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class DozingToGoneTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DozingToLockscreenTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DozingToLockscreenTransitionViewModelTest.kt
index 8e4876d3c6df..779c1cd7ec8a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DozingToLockscreenTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DozingToLockscreenTransitionViewModelTest.kt
@@ -27,12 +27,10 @@ import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class DozingToLockscreenTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DozingToPrimaryBouncerTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DozingToPrimaryBouncerTransitionViewModelTest.kt
index 28410d9e3be1..bafd41528b7b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DozingToPrimaryBouncerTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DozingToPrimaryBouncerTransitionViewModelTest.kt
@@ -34,14 +34,12 @@ import com.android.systemui.keyguard.ui.transitions.blurConfig
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class DozingToPrimaryBouncerTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToLockscreenTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToLockscreenTransitionViewModelTest.kt
index e34edb4c442e..eb5e1395d510 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToLockscreenTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToLockscreenTransitionViewModelTest.kt
@@ -36,13 +36,11 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.collect.Range
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class DreamingToLockscreenTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToLockscreenTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToLockscreenTransitionViewModelTest.kt
index 1dd435b413be..3ab920a46084 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToLockscreenTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToLockscreenTransitionViewModelTest.kt
@@ -35,13 +35,11 @@ import com.android.systemui.res.R
import com.android.systemui.testKosmos
import com.google.common.collect.Range
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class GlanceableHubToLockscreenTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToPrimaryBouncerTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToPrimaryBouncerTransitionViewModelTest.kt
index 54d20d203fc1..6b9e23abd9a4 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToPrimaryBouncerTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GlanceableHubToPrimaryBouncerTransitionViewModelTest.kt
@@ -29,11 +29,9 @@ import com.android.systemui.keyguard.ui.transitions.blurConfig
import com.android.systemui.kosmos.collectValues
import com.android.systemui.kosmos.runTest
import com.android.systemui.testKosmos
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class GlanceableHubToPrimaryBouncerTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GoneToAodTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GoneToAodTransitionViewModelTest.kt
index bab466a6c1d4..ce234ccb3194 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GoneToAodTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GoneToAodTransitionViewModelTest.kt
@@ -34,13 +34,11 @@ import com.android.systemui.power.shared.model.WakefulnessState
import com.android.systemui.testKosmos
import com.google.common.collect.Range
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class GoneToAodTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GoneToDozingTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GoneToDozingTransitionViewModelTest.kt
index 80a95324a185..c7c03699bc28 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GoneToDozingTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/GoneToDozingTransitionViewModelTest.kt
@@ -35,13 +35,11 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.collect.Range
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class GoneToDozingTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModelTest.kt
index bd892d588d8b..9c7f01495b58 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModelTest.kt
@@ -36,7 +36,6 @@ import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runTest
@@ -47,7 +46,6 @@ import org.mockito.kotlin.any
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
class KeyguardIndicationAreaViewModelTest() : SysuiTestCase() {
private val kosmos = testKosmos()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelTest.kt
index 789477e38b55..83bee7c66d31 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelTest.kt
@@ -15,8 +15,6 @@
*
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.keyguard.ui.viewmodel
import android.platform.test.flag.junit.FlagsParameterization
@@ -57,7 +55,6 @@ import com.android.systemui.util.ui.isAnimating
import com.android.systemui.util.ui.stopAnimating
import com.android.systemui.util.ui.value
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.flowOf
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelTest.kt
index 5436d7eee00c..af025273458f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.keyguard.ui.viewmodel
import android.platform.test.flag.junit.FlagsParameterization
@@ -23,13 +21,19 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.biometrics.authController
import com.android.systemui.common.ui.data.repository.fakeConfigurationRepository
-import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.flags.DisableSceneContainer
import com.android.systemui.flags.andSceneContainer
import com.android.systemui.keyguard.data.repository.fakeKeyguardClockRepository
+import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
import com.android.systemui.keyguard.data.repository.keyguardOcclusionRepository
import com.android.systemui.keyguard.shared.model.ClockSize
+import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.keyguard.shared.transition.fakeKeyguardTransitionAnimationCallback
+import com.android.systemui.keyguard.shared.transition.keyguardTransitionAnimationCallbackDelegator
import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.collectLastValue
+import com.android.systemui.kosmos.runCurrent
+import com.android.systemui.kosmos.runTest
import com.android.systemui.kosmos.testScope
import com.android.systemui.lifecycle.activateIn
import com.android.systemui.res.R
@@ -42,9 +46,7 @@ import com.android.systemui.unfold.fakeUnfoldTransitionProgressProvider
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import java.util.Locale
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.test.runCurrent
-import kotlinx.coroutines.test.runTest
+import kotlinx.coroutines.Job
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -57,7 +59,8 @@ class LockscreenContentViewModelTest(flags: FlagsParameterization) : SysuiTestCa
private val kosmos: Kosmos = testKosmos()
- lateinit var underTest: LockscreenContentViewModel
+ private lateinit var underTest: LockscreenContentViewModel
+ private val activationJob = Job()
companion object {
@JvmStatic
@@ -75,187 +78,207 @@ class LockscreenContentViewModelTest(flags: FlagsParameterization) : SysuiTestCa
fun setup() {
with(kosmos) {
shadeRepository.setShadeLayoutWide(false)
- underTest = lockscreenContentViewModel
- underTest.activateIn(testScope)
+ underTest =
+ lockscreenContentViewModelFactory.create(fakeKeyguardTransitionAnimationCallback)
+ underTest.activateIn(testScope, activationJob)
}
}
@Test
fun isUdfpsVisible_withUdfps_true() =
- with(kosmos) {
- testScope.runTest {
- whenever(authController.isUdfpsSupported).thenReturn(true)
- assertThat(underTest.isUdfpsVisible).isTrue()
- }
+ kosmos.runTest {
+ whenever(authController.isUdfpsSupported).thenReturn(true)
+ assertThat(underTest.isUdfpsVisible).isTrue()
}
@Test
fun isUdfpsVisible_withoutUdfps_false() =
- with(kosmos) {
- testScope.runTest {
- whenever(authController.isUdfpsSupported).thenReturn(false)
- assertThat(underTest.isUdfpsVisible).isFalse()
- }
+ kosmos.runTest {
+ whenever(authController.isUdfpsSupported).thenReturn(false)
+ assertThat(underTest.isUdfpsVisible).isFalse()
}
@Test
@DisableSceneContainer
fun clockSize_withLargeClock_true() =
- with(kosmos) {
- testScope.runTest {
- val clockSize by collectLastValue(underTest.clockSize)
- fakeKeyguardClockRepository.setClockSize(ClockSize.LARGE)
- assertThat(clockSize).isEqualTo(ClockSize.LARGE)
- }
+ kosmos.runTest {
+ val clockSize by collectLastValue(underTest.clockSize)
+ fakeKeyguardClockRepository.setClockSize(ClockSize.LARGE)
+ assertThat(clockSize).isEqualTo(ClockSize.LARGE)
}
@Test
@DisableSceneContainer
fun clockSize_withSmallClock_false() =
- with(kosmos) {
- testScope.runTest {
- val clockSize by collectLastValue(underTest.clockSize)
- fakeKeyguardClockRepository.setClockSize(ClockSize.SMALL)
- assertThat(clockSize).isEqualTo(ClockSize.SMALL)
- }
+ kosmos.runTest {
+ val clockSize by collectLastValue(underTest.clockSize)
+ fakeKeyguardClockRepository.setClockSize(ClockSize.SMALL)
+ assertThat(clockSize).isEqualTo(ClockSize.SMALL)
}
@Test
fun areNotificationsVisible_splitShadeTrue_true() =
- with(kosmos) {
- testScope.runTest {
- val areNotificationsVisible by collectLastValue(underTest.areNotificationsVisible())
- shadeRepository.setShadeLayoutWide(true)
- fakeKeyguardClockRepository.setClockSize(ClockSize.LARGE)
+ kosmos.runTest {
+ val areNotificationsVisible by collectLastValue(underTest.areNotificationsVisible())
+ shadeRepository.setShadeLayoutWide(true)
+ fakeKeyguardClockRepository.setClockSize(ClockSize.LARGE)
- assertThat(areNotificationsVisible).isTrue()
- }
+ assertThat(areNotificationsVisible).isTrue()
}
@Test
fun areNotificationsVisible_dualShadeWideOnLockscreen_true() =
- with(kosmos) {
- testScope.runTest {
- val areNotificationsVisible by collectLastValue(underTest.areNotificationsVisible())
- kosmos.enableDualShade()
- shadeRepository.setShadeLayoutWide(true)
- fakeKeyguardClockRepository.setClockSize(ClockSize.LARGE)
+ kosmos.runTest {
+ val areNotificationsVisible by collectLastValue(underTest.areNotificationsVisible())
+ kosmos.enableDualShade()
+ shadeRepository.setShadeLayoutWide(true)
+ fakeKeyguardClockRepository.setClockSize(ClockSize.LARGE)
- assertThat(areNotificationsVisible).isTrue()
- }
+ assertThat(areNotificationsVisible).isTrue()
}
@Test
@DisableSceneContainer
fun areNotificationsVisible_withSmallClock_true() =
- with(kosmos) {
- testScope.runTest {
- val areNotificationsVisible by collectLastValue(underTest.areNotificationsVisible())
- fakeKeyguardClockRepository.setClockSize(ClockSize.SMALL)
- assertThat(areNotificationsVisible).isTrue()
- }
+ kosmos.runTest {
+ val areNotificationsVisible by collectLastValue(underTest.areNotificationsVisible())
+ fakeKeyguardClockRepository.setClockSize(ClockSize.SMALL)
+ assertThat(areNotificationsVisible).isTrue()
}
@Test
@DisableSceneContainer
fun areNotificationsVisible_withLargeClock_false() =
- with(kosmos) {
- testScope.runTest {
- val areNotificationsVisible by collectLastValue(underTest.areNotificationsVisible())
- fakeKeyguardClockRepository.setClockSize(ClockSize.LARGE)
- assertThat(areNotificationsVisible).isFalse()
- }
+ kosmos.runTest {
+ val areNotificationsVisible by collectLastValue(underTest.areNotificationsVisible())
+ fakeKeyguardClockRepository.setClockSize(ClockSize.LARGE)
+ assertThat(areNotificationsVisible).isFalse()
}
@Test
fun isShadeLayoutWide_withConfigTrue_true() =
- with(kosmos) {
- testScope.runTest {
- val isShadeLayoutWide by collectLastValue(underTest.isShadeLayoutWide)
- shadeRepository.setShadeLayoutWide(true)
+ kosmos.runTest {
+ val isShadeLayoutWide by collectLastValue(underTest.isShadeLayoutWide)
+ shadeRepository.setShadeLayoutWide(true)
- assertThat(isShadeLayoutWide).isTrue()
- }
+ assertThat(isShadeLayoutWide).isTrue()
}
@Test
fun isShadeLayoutWide_withConfigFalse_false() =
- with(kosmos) {
- testScope.runTest {
- val isShadeLayoutWide by collectLastValue(underTest.isShadeLayoutWide)
- shadeRepository.setShadeLayoutWide(false)
+ kosmos.runTest {
+ val isShadeLayoutWide by collectLastValue(underTest.isShadeLayoutWide)
+ shadeRepository.setShadeLayoutWide(false)
- assertThat(isShadeLayoutWide).isFalse()
- }
+ assertThat(isShadeLayoutWide).isFalse()
}
@Test
fun unfoldTranslations() =
- with(kosmos) {
- testScope.runTest {
- val maxTranslation = prepareConfiguration()
- val translations by collectLastValue(underTest.unfoldTranslations)
-
- val unfoldProvider = fakeUnfoldTransitionProgressProvider
- unfoldProvider.onTransitionStarted()
- assertThat(translations?.start).isEqualTo(0f)
- assertThat(translations?.end).isEqualTo(-0f)
-
- repeat(10) { repetition ->
- val transitionProgress = 0.1f * (repetition + 1)
- unfoldProvider.onTransitionProgress(transitionProgress)
- assertThat(translations?.start)
- .isEqualTo((1 - transitionProgress) * maxTranslation)
- assertThat(translations?.end)
- .isEqualTo(-(1 - transitionProgress) * maxTranslation)
- }
-
- unfoldProvider.onTransitionFinishing()
- assertThat(translations?.start).isEqualTo(0f)
- assertThat(translations?.end).isEqualTo(-0f)
-
- unfoldProvider.onTransitionFinished()
- assertThat(translations?.start).isEqualTo(0f)
- assertThat(translations?.end).isEqualTo(-0f)
+ kosmos.runTest {
+ val maxTranslation = prepareConfiguration()
+ val translations by collectLastValue(underTest.unfoldTranslations)
+
+ val unfoldProvider = fakeUnfoldTransitionProgressProvider
+ unfoldProvider.onTransitionStarted()
+ assertThat(translations?.start).isEqualTo(0f)
+ assertThat(translations?.end).isEqualTo(-0f)
+
+ repeat(10) { repetition ->
+ val transitionProgress = 0.1f * (repetition + 1)
+ unfoldProvider.onTransitionProgress(transitionProgress)
+ assertThat(translations?.start).isEqualTo((1 - transitionProgress) * maxTranslation)
+ assertThat(translations?.end).isEqualTo(-(1 - transitionProgress) * maxTranslation)
}
+
+ unfoldProvider.onTransitionFinishing()
+ assertThat(translations?.start).isEqualTo(0f)
+ assertThat(translations?.end).isEqualTo(-0f)
+
+ unfoldProvider.onTransitionFinished()
+ assertThat(translations?.start).isEqualTo(0f)
+ assertThat(translations?.end).isEqualTo(-0f)
}
@Test
fun isContentVisible_whenNotOccluded_visible() =
- with(kosmos) {
- testScope.runTest {
- val isContentVisible by collectLastValue(underTest.isContentVisible)
+ kosmos.runTest {
+ val isContentVisible by collectLastValue(underTest.isContentVisible)
- keyguardOcclusionRepository.setShowWhenLockedActivityInfo(false, null)
- runCurrent()
- assertThat(isContentVisible).isTrue()
- }
+ keyguardOcclusionRepository.setShowWhenLockedActivityInfo(false, null)
+ runCurrent()
+ assertThat(isContentVisible).isTrue()
}
@Test
fun isContentVisible_whenOccluded_notVisible() =
- with(kosmos) {
- testScope.runTest {
- val isContentVisible by collectLastValue(underTest.isContentVisible)
-
- keyguardOcclusionRepository.setShowWhenLockedActivityInfo(true, null)
- runCurrent()
- assertThat(isContentVisible).isFalse()
- }
+ kosmos.runTest {
+ val isContentVisible by collectLastValue(underTest.isContentVisible)
+
+ keyguardOcclusionRepository.setShowWhenLockedActivityInfo(true, null)
+ fakeKeyguardTransitionRepository.transitionTo(
+ KeyguardState.LOCKSCREEN,
+ KeyguardState.OCCLUDED,
+ )
+ runCurrent()
+ assertThat(isContentVisible).isFalse()
}
@Test
fun isContentVisible_whenOccluded_notVisible_evenIfShadeShown() =
- with(kosmos) {
- testScope.runTest {
- val isContentVisible by collectLastValue(underTest.isContentVisible)
- keyguardOcclusionRepository.setShowWhenLockedActivityInfo(true, null)
- runCurrent()
-
- sceneInteractor.snapToScene(Scenes.Shade, "")
- runCurrent()
- assertThat(isContentVisible).isFalse()
- }
+ kosmos.runTest {
+ val isContentVisible by collectLastValue(underTest.isContentVisible)
+
+ keyguardOcclusionRepository.setShowWhenLockedActivityInfo(true, null)
+ fakeKeyguardTransitionRepository.transitionTo(
+ KeyguardState.LOCKSCREEN,
+ KeyguardState.OCCLUDED,
+ )
+ runCurrent()
+
+ sceneInteractor.snapToScene(Scenes.Shade, "")
+ runCurrent()
+ assertThat(isContentVisible).isFalse()
+ }
+
+ @Test
+ fun activate_setsDelegate_onKeyguardTransitionAnimationCallbackDelegator() =
+ kosmos.runTest {
+ runCurrent()
+ assertThat(keyguardTransitionAnimationCallbackDelegator.delegate)
+ .isSameInstanceAs(fakeKeyguardTransitionAnimationCallback)
+ }
+
+ @Test
+ fun deactivate_clearsDelegate_onKeyguardTransitionAnimationCallbackDelegator() =
+ kosmos.runTest {
+ activationJob.cancel()
+ runCurrent()
+ assertThat(keyguardTransitionAnimationCallbackDelegator.delegate).isNull()
+ }
+
+ @Test
+ fun isContentVisible_whenOccluded_notVisibleInOccluded_visibleInAod() =
+ kosmos.runTest {
+ val isContentVisible by collectLastValue(underTest.isContentVisible)
+ keyguardOcclusionRepository.setShowWhenLockedActivityInfo(true, null)
+ fakeKeyguardTransitionRepository.transitionTo(
+ KeyguardState.LOCKSCREEN,
+ KeyguardState.OCCLUDED,
+ )
+ runCurrent()
+
+ sceneInteractor.snapToScene(Scenes.Shade, "")
+ runCurrent()
+ assertThat(isContentVisible).isFalse()
+
+ fakeKeyguardTransitionRepository.transitionTo(KeyguardState.OCCLUDED, KeyguardState.AOD)
+ runCurrent()
+
+ sceneInteractor.snapToScene(Scenes.Lockscreen, "")
+ runCurrent()
+
+ assertThat(isContentVisible).isTrue()
}
private fun prepareConfiguration(): Int {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToAodTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToAodTransitionViewModelTest.kt
index bc381f2abc6d..28f57998c39d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToAodTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToAodTransitionViewModelTest.kt
@@ -37,7 +37,6 @@ import com.android.systemui.shade.shadeTestUtil
import com.android.systemui.testKosmos
import com.google.common.collect.Range
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -46,7 +45,6 @@ import org.junit.runner.RunWith
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
class LockscreenToAodTransitionViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToDozingTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToDozingTransitionViewModelTest.kt
index 0a0ded7ec861..9c42a64aa561 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToDozingTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToDozingTransitionViewModelTest.kt
@@ -33,14 +33,12 @@ import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class LockscreenToDozingTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToDreamingTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToDreamingTransitionViewModelTest.kt
index 933779312df5..4bec6bb63924 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToDreamingTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToDreamingTransitionViewModelTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.keyguard.ui.viewmodel
import android.platform.test.flag.junit.FlagsParameterization
@@ -40,7 +38,6 @@ import com.android.systemui.shade.shadeTestUtil
import com.android.systemui.testKosmos
import com.google.common.collect.Range
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGlanceableHubTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGlanceableHubTransitionViewModelTest.kt
index b5cee80c0bf6..aefa2eba3927 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGlanceableHubTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGlanceableHubTransitionViewModelTest.kt
@@ -35,13 +35,11 @@ import com.android.systemui.res.R
import com.android.systemui.testKosmos
import com.google.common.collect.Range
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class LockscreenToGlanceableHubTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGoneTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGoneTransitionViewModelTest.kt
index 26cb4856e571..a82d01f760af 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGoneTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToGoneTransitionViewModelTest.kt
@@ -29,12 +29,10 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.statusbar.sysuiStatusBarStateController
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class LockscreenToGoneTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModelTest.kt
index 576795d7e293..6d90c43837ab 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModelTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.keyguard.ui.viewmodel
import android.platform.test.flag.junit.FlagsParameterization
@@ -44,7 +42,6 @@ import com.android.systemui.shade.shadeTestUtil
import com.android.systemui.testKosmos
import com.google.common.collect.Range
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModelTest.kt
index aaca603ecf77..a31728ce5e18 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModelTest.kt
@@ -44,7 +44,6 @@ import com.android.systemui.shade.shadeTestUtil
import com.android.systemui.testKosmos
import com.google.common.collect.Range
import com.google.common.truth.Truth
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.test.runCurrent
@@ -55,7 +54,6 @@ import org.junit.runner.RunWith
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
class LockscreenToPrimaryBouncerTransitionViewModelTest(flags: FlagsParameterization) :
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModelTest.kt
index 97e67634cd2b..cf8123764928 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModelTest.kt
@@ -14,11 +14,8 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.keyguard.ui.viewmodel
-import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import android.testing.TestableLooper.RunWithLooper
import androidx.test.filters.SmallTest
@@ -47,10 +44,11 @@ import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.shared.model.TransitionKeys
import com.android.systemui.scene.ui.viewmodel.SceneContainerEdge
import com.android.systemui.shade.data.repository.shadeRepository
+import com.android.systemui.shade.domain.interactor.disableDualShade
+import com.android.systemui.shade.domain.interactor.enableDualShade
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import kotlin.math.pow
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runTest
import org.junit.BeforeClass
@@ -176,10 +174,10 @@ class LockscreenUserActionsViewModelTest : SysuiTestCase() {
@Test
@EnableFlags(Flags.FLAG_COMMUNAL_HUB)
- @DisableFlags(Flags.FLAG_DUAL_SHADE)
fun userActions_fullscreenShade() =
testScope.runTest {
underTest.activateIn(this)
+ kosmos.disableDualShade()
kosmos.fakeDeviceEntryRepository.setLockscreenEnabled(true)
kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
if (canSwipeToEnter) {
@@ -267,7 +265,7 @@ class LockscreenUserActionsViewModelTest : SysuiTestCase() {
}
@Test
- @EnableFlags(Flags.FLAG_COMMUNAL_HUB, Flags.FLAG_DUAL_SHADE)
+ @EnableFlags(Flags.FLAG_COMMUNAL_HUB)
fun userActions_dualShade() =
testScope.runTest {
underTest.activateIn(this)
@@ -280,7 +278,7 @@ class LockscreenUserActionsViewModelTest : SysuiTestCase() {
}
)
sceneInteractor.changeScene(Scenes.Lockscreen, "reason")
- kosmos.shadeRepository.setShadeLayoutWide(!isNarrowScreen)
+ kosmos.enableDualShade(wideLayout = !isNarrowScreen)
kosmos.setCommunalAvailable(isCommunalAvailable)
kosmos.fakePowerRepository.updateWakefulness(
rawState =
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToAodTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToAodTransitionViewModelTest.kt
index 1912987cc447..123ed0b91a79 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToAodTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToAodTransitionViewModelTest.kt
@@ -29,13 +29,11 @@ import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class OccludedToAodTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModelTest.kt
index 4c16a339d696..5357c284b43e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModelTest.kt
@@ -32,13 +32,11 @@ import com.android.systemui.res.R
import com.android.systemui.testKosmos
import com.google.common.collect.Range
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class OccludedToLockscreenTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModelTest.kt
index 0951df24c56f..8533134fd94e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModelTest.kt
@@ -30,7 +30,6 @@ import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.keyguard.ui.transitions.blurConfig
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
@@ -38,7 +37,6 @@ import org.junit.runner.RunWith
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
class OccludedToPrimaryBouncerTransitionViewModelTest(flags: FlagsParameterization) :
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OffToLockscreenTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OffToLockscreenTransitionViewModelTest.kt
index 0b7a38eb9ebd..715bd39b1c99 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OffToLockscreenTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OffToLockscreenTransitionViewModelTest.kt
@@ -29,7 +29,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.collect.Range
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
@@ -37,7 +36,6 @@ import org.junit.runner.RunWith
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
class OffToLockscreenTransitionViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToAodTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToAodTransitionViewModelTest.kt
index aa1e7ae9d509..db617a7ca140 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToAodTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToAodTransitionViewModelTest.kt
@@ -31,13 +31,11 @@ import com.android.systemui.keyguard.ui.transitions.blurConfig
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class PrimaryBouncerToAodTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToDozingTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToDozingTransitionViewModelTest.kt
index 766816b1ac26..90a918b6291e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToDozingTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToDozingTransitionViewModelTest.kt
@@ -34,13 +34,11 @@ import com.android.systemui.keyguard.ui.transitions.blurConfig
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class PrimaryBouncerToDozingTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGlanceableHubTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGlanceableHubTransitionViewModelTest.kt
index e4843bd88133..d64ae3f0b90c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGlanceableHubTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGlanceableHubTransitionViewModelTest.kt
@@ -29,11 +29,9 @@ import com.android.systemui.keyguard.ui.transitions.blurConfig
import com.android.systemui.kosmos.collectValues
import com.android.systemui.kosmos.runTest
import com.android.systemui.testKosmos
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class PrimaryBouncerToGlanceableHubTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGoneTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGoneTransitionViewModelTest.kt
index fd2e33504ec9..97709a76cb62 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGoneTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGoneTransitionViewModelTest.kt
@@ -66,11 +66,7 @@ class PrimaryBouncerToGoneTransitionViewModelTest : SysuiTestCase() {
runCurrent()
keyguardTransitionRepository.sendTransitionSteps(
- listOf(
- step(0f, TransitionState.STARTED),
- step(0.3f),
- step(0.6f),
- ),
+ listOf(step(0f, TransitionState.STARTED), step(0.3f), step(0.6f)),
testScope,
)
@@ -87,11 +83,7 @@ class PrimaryBouncerToGoneTransitionViewModelTest : SysuiTestCase() {
whenever(primaryBouncerInteractor.willRunDismissFromKeyguard()).thenReturn(true)
keyguardTransitionRepository.sendTransitionSteps(
- listOf(
- step(0f, TransitionState.STARTED),
- step(0.3f),
- step(0.6f),
- ),
+ listOf(step(0f, TransitionState.STARTED), step(0.3f), step(0.6f)),
testScope,
)
@@ -149,7 +141,8 @@ class PrimaryBouncerToGoneTransitionViewModelTest : SysuiTestCase() {
@Test
fun notificationAlpha() =
testScope.runTest {
- val values by collectValues(underTest.notificationAlpha)
+ val values by
+ collectValues(underTest.notificationAlpha(ViewStateAccessor(alpha = { 0.5f })))
runCurrent()
keyguardTransitionRepository.sendTransitionSteps(
@@ -158,7 +151,7 @@ class PrimaryBouncerToGoneTransitionViewModelTest : SysuiTestCase() {
testScope,
)
- assertThat(values[0]).isEqualTo(1f)
+ assertThat(values[0]).isEqualTo(0.5f)
assertThat(values[1]).isEqualTo(0f)
// Should always finish with 1f to show HUNs
assertThat(values[2]).isEqualTo(1f)
@@ -167,7 +160,7 @@ class PrimaryBouncerToGoneTransitionViewModelTest : SysuiTestCase() {
@Test
fun notificationAlpha_leaveShadeOpen() =
testScope.runTest {
- val values by collectValues(underTest.notificationAlpha)
+ val values by collectValues(underTest.notificationAlpha(ViewStateAccessor()))
runCurrent()
sysuiStatusBarStateController.setLeaveOpenOnKeyguardHide(true)
@@ -185,14 +178,14 @@ class PrimaryBouncerToGoneTransitionViewModelTest : SysuiTestCase() {
private fun step(
value: Float,
- state: TransitionState = TransitionState.RUNNING
+ state: TransitionState = TransitionState.RUNNING,
): TransitionStep {
return TransitionStep(
from = KeyguardState.PRIMARY_BOUNCER,
to = KeyguardState.GONE,
value = value,
transitionState = state,
- ownerName = "PrimaryBouncerToGoneTransitionViewModelTest"
+ ownerName = "PrimaryBouncerToGoneTransitionViewModelTest",
)
}
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModelTest.kt
index 8fefb8d40b71..6fd54f47b1f7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModelTest.kt
@@ -36,7 +36,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.collect.Range
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -45,7 +44,6 @@ import org.junit.runner.RunWith
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
class PrimaryBouncerToLockscreenTransitionViewModelTest(flags: FlagsParameterization) :
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModelTest.kt
index fd7fb9f863c8..cec624d2beb2 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModelTest.kt
@@ -28,12 +28,10 @@ import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.keyguard.ui.transitions.blurConfig
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class PrimaryBouncerToOccludedTransitionViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/SideFpsProgressBarViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/SideFpsProgressBarViewModelTest.kt
index 0588b1c90035..dfed1f0a135e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/SideFpsProgressBarViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/SideFpsProgressBarViewModelTest.kt
@@ -53,7 +53,6 @@ import com.android.systemui.statusbar.phone.dozeServiceHost
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -62,7 +61,6 @@ import org.junit.runner.RunWith
import org.mockito.Mockito.spy
import org.mockito.Mockito.verify
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@TestableLooper.RunWithLooper
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/lifecycle/ExclusiveActivatableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/lifecycle/ExclusiveActivatableTest.kt
index 81b91802ec28..397831240a42 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/lifecycle/ExclusiveActivatableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/lifecycle/ExclusiveActivatableTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.lifecycle
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -24,7 +22,6 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/log/echo/LogcatEchoTrackerDebugTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/log/echo/LogcatEchoTrackerDebugTest.kt
index a5f50af55a4b..f508df2cceba 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/log/echo/LogcatEchoTrackerDebugTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/log/echo/LogcatEchoTrackerDebugTest.kt
@@ -30,7 +30,6 @@ import com.android.systemui.statusbar.commandline.CommandRegistry
import com.android.systemui.util.settings.FakeGlobalSettings
import kotlin.test.assertEquals
import kotlin.test.assertNotNull
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceUntilIdle
@@ -44,7 +43,6 @@ import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class LogcatEchoTrackerDebugTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/log/table/LogDiffsForTableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/log/table/LogDiffsForTableTest.kt
index 030b1726bb73..d5d88d352415 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/log/table/LogDiffsForTableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/log/table/LogDiffsForTableTest.kt
@@ -25,7 +25,6 @@ import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import java.io.PrintWriter
import java.io.StringWriter
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.flow
@@ -39,7 +38,6 @@ import org.junit.Test
import org.junit.runner.RunWith
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class LogDiffsForTableTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/pipeline/Media3ActionFactoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/pipeline/Media3ActionFactoryTest.kt
index 466c9f96749f..460232c46676 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/pipeline/Media3ActionFactoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/pipeline/Media3ActionFactoryTest.kt
@@ -43,7 +43,6 @@ import com.android.systemui.util.concurrency.execution
import com.google.common.collect.ImmutableList
import com.google.common.truth.Truth.assertThat
import com.google.common.util.concurrent.ListenableFuture
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -63,7 +62,6 @@ private const val PACKAGE_NAME = "package_name"
private const val CUSTOM_ACTION_NAME = "Custom Action"
private const val CUSTOM_ACTION_COMMAND = "custom-action"
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWithLooper
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataLoaderTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataLoaderTest.kt
index cf503bbf1310..1f1a74b6c389 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataLoaderTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataLoaderTest.kt
@@ -47,7 +47,6 @@ import com.android.systemui.res.R
import com.android.systemui.statusbar.SbnBuilder
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.advanceUntilIdle
import kotlinx.coroutines.test.runTest
@@ -387,7 +386,6 @@ class MediaDataLoaderTest : SysuiTestCase() {
assertThat(result).isNotNull()
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun testLoadMediaDataInBg_cancelMultipleScheduledTasks() =
testScope.runTest {
@@ -416,7 +414,6 @@ class MediaDataLoaderTest : SysuiTestCase() {
verify(mockImageLoader, times(1)).loadBitmap(any(), anyInt(), anyInt(), anyInt())
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun testLoadMediaDataInBg_fromResumeToActive_doesNotCancelResumeToActiveTask() =
testScope.runTest {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/dialog/MediaOutputAdapterTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/dialog/MediaOutputAdapterTest.java
index 7478464772a4..8e8867b80dc2 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/dialog/MediaOutputAdapterTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/dialog/MediaOutputAdapterTest.java
@@ -26,6 +26,7 @@ import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECT
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
@@ -106,6 +107,9 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
when(mMediaSwitchingController.getDeviceIconCompat(mMediaDevice2)).thenReturn(mIconCompat);
when(mMediaSwitchingController.getCurrentConnectedMediaDevice()).thenReturn(mMediaDevice1);
when(mMediaSwitchingController.isActiveRemoteDevice(mMediaDevice1)).thenReturn(true);
+ when(mMediaSwitchingController.getSessionVolumeMax()).thenReturn(TEST_MAX_VOLUME);
+ when(mMediaSwitchingController.getSessionVolume()).thenReturn(TEST_CURRENT_VOLUME);
+ when(mMediaSwitchingController.getSessionName()).thenReturn(TEST_SESSION_NAME);
when(mIconCompat.toIcon(mContext)).thenReturn(mIcon);
when(mMediaDevice1.getName()).thenReturn(TEST_DEVICE_NAME_1);
when(mMediaDevice1.getId()).thenReturn(TEST_DEVICE_ID_1);
@@ -117,8 +121,8 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
LocalMediaManager.MediaDeviceState.STATE_DISCONNECTED);
mMediaDevices.add(mMediaDevice1);
mMediaDevices.add(mMediaDevice2);
- mMediaItems.add(MediaItem.createDeviceMediaItem(mMediaDevice1));
- mMediaItems.add(MediaItem.createDeviceMediaItem(mMediaDevice2));
+ mMediaItems.add(MediaItem.createDeviceMediaItem(mMediaDevice1, true));
+ mMediaItems.add(MediaItem.createDeviceMediaItem(mMediaDevice2, false));
mMediaOutputAdapter = new MediaOutputAdapter(mMediaSwitchingController);
mMediaOutputAdapter.updateItems();
@@ -162,6 +166,7 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
mContext.getText(R.string.media_output_dialog_pairing_new).toString());
}
+ @DisableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_SESSION_GROUPING)
@Test
public void onBindViewHolder_bindGroup_withSessionName_verifyView() {
when(mMediaSwitchingController.getSelectedMediaDevice())
@@ -183,6 +188,7 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.VISIBLE);
}
+ @DisableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_SESSION_GROUPING)
@Test
public void onBindViewHolder_bindGroup_noSessionName_verifyView() {
when(mMediaSwitchingController.getSelectedMediaDevice())
@@ -231,6 +237,7 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE);
}
+ @DisableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_SESSION_GROUPING)
@Test
public void onBindViewHolder_bindConnectedRemoteDevice_verifyView() {
when(mMediaSwitchingController.getSelectableMediaDevice())
@@ -245,6 +252,7 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
assertThat(mViewHolder.mSubTitleText.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mEndClickIcon.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.VISIBLE);
}
@@ -296,6 +304,7 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mEndClickIcon.getVisibility()).isEqualTo(View.VISIBLE);
}
@Test
@@ -311,12 +320,12 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_1);
assertThat(mViewHolder.mStatusIcon.getVisibility()).isEqualTo(View.GONE);
- assertThat(mViewHolder.mEndClickIcon.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mSubTitleText.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mEndClickIcon.getVisibility()).isEqualTo(View.VISIBLE);
}
@Test
@@ -326,6 +335,7 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_1);
@@ -341,6 +351,8 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mViewHolder.mContainerLayout.isFocusable()).isTrue();
assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_1);
@@ -382,7 +394,9 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
mMediaOutputAdapter.onBindViewHolder(mViewHolder, 1);
assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mEndClickIcon.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_2);
assertThat(mViewHolder.mContainerLayout.isFocusable()).isTrue();
@@ -617,6 +631,25 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
}
@Test
+ public void onItemClick_selectionBehaviorGoToApp_sendsLaunchIntent() {
+ when(mMediaSwitchingController.isCurrentOutputDeviceHasSessionOngoing()).thenReturn(true);
+ when(mMediaDevice2.getState()).thenReturn(
+ LocalMediaManager.MediaDeviceState.STATE_DISCONNECTED);
+ when(mMediaDevice2.getSelectionBehavior()).thenReturn(SELECTION_BEHAVIOR_GO_TO_APP);
+ mMediaOutputAdapter = new MediaOutputAdapter(mMediaSwitchingController);
+ mMediaOutputAdapter.updateItems();
+ mViewHolder = (MediaOutputAdapter.MediaDeviceViewHolder) mMediaOutputAdapter
+ .onCreateViewHolder(new LinearLayout(mContext), 0);
+ MediaOutputAdapter.MediaDeviceViewHolder spyMediaDeviceViewHolder = spy(mViewHolder);
+
+ mMediaOutputAdapter.onBindViewHolder(spyMediaDeviceViewHolder, 1);
+ spyMediaDeviceViewHolder.mContainerLayout.performClick();
+
+ verify(mMediaSwitchingController).tryToLaunchInAppRoutingIntent(TEST_DEVICE_ID_2,
+ mViewHolder.mContainerLayout);
+ }
+
+ @Test
public void onItemClick_clicksWithMutingExpectedDeviceExist_cancelsMuteAwaitConnection() {
when(mMediaSwitchingController.isAnyDeviceTransferring()).thenReturn(false);
when(mMediaSwitchingController.hasMutingExpectedDevice()).thenReturn(true);
@@ -643,6 +676,132 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
verify(mMediaSwitchingController).addDeviceToPlayMedia(mMediaDevice2);
}
+ @DisableFlags(Flags.FLAG_DISABLE_TRANSFER_WHEN_APPS_DO_NOT_SUPPORT)
+ @Test
+ public void clickFullItemOfSelectableDevice_flagOff_hasListingPreference_verifyConnectDevice() {
+ List<MediaDevice> mediaDevices = new ArrayList<>();
+ mediaDevices.add(mMediaDevice2);
+ when(mMediaDevice2.hasRouteListingPreferenceItem()).thenReturn(true);
+ when(mMediaSwitchingController.getSelectableMediaDevice()).thenReturn(mediaDevices);
+ when(mMediaSwitchingController.getTransferableMediaDevices()).thenReturn(List.of());
+ when(mMediaSwitchingController.isCurrentOutputDeviceHasSessionOngoing()).thenReturn(false);
+ mMediaOutputAdapter.onBindViewHolder(mViewHolder, 1);
+
+ assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_2);
+ assertThat(mViewHolder.mContainerLayout.isFocusable()).isTrue();
+
+ mViewHolder.mContainerLayout.performClick();
+
+ verify(mMediaSwitchingController).connectDevice(mMediaDevice2);
+ }
+
+ @EnableFlags(Flags.FLAG_DISABLE_TRANSFER_WHEN_APPS_DO_NOT_SUPPORT)
+ @Test
+ public void clickFullItemOfSelectableDevice_flagOn_hasListingPreference_verifyConnectDevice() {
+ List<MediaDevice> mediaDevices = new ArrayList<>();
+ mediaDevices.add(mMediaDevice2);
+ when(mMediaDevice2.hasRouteListingPreferenceItem()).thenReturn(true);
+ when(mMediaSwitchingController.getSelectableMediaDevice()).thenReturn(mediaDevices);
+ when(mMediaSwitchingController.getTransferableMediaDevices()).thenReturn(List.of());
+ when(mMediaSwitchingController.isCurrentOutputDeviceHasSessionOngoing()).thenReturn(false);
+ mMediaOutputAdapter.onBindViewHolder(mViewHolder, 1);
+
+ assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_2);
+ assertThat(mViewHolder.mContainerLayout.isFocusable()).isTrue();
+
+ mViewHolder.mContainerLayout.performClick();
+
+ verify(mMediaSwitchingController).connectDevice(mMediaDevice2);
+ }
+
+ @DisableFlags(Flags.FLAG_DISABLE_TRANSFER_WHEN_APPS_DO_NOT_SUPPORT)
+ @Test
+ public void clickFullItemOfSelectableDevice_flagOff_isTransferable_verifyConnectDevice() {
+ List<MediaDevice> mediaDevices = new ArrayList<>();
+ mediaDevices.add(mMediaDevice2);
+ when(mMediaDevice2.hasRouteListingPreferenceItem()).thenReturn(false);
+ when(mMediaSwitchingController.getSelectableMediaDevice()).thenReturn(mediaDevices);
+ when(mMediaSwitchingController.getTransferableMediaDevices()).thenReturn(mediaDevices);
+ when(mMediaSwitchingController.isCurrentOutputDeviceHasSessionOngoing()).thenReturn(false);
+ mMediaOutputAdapter.onBindViewHolder(mViewHolder, 1);
+
+ assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_2);
+ assertThat(mViewHolder.mContainerLayout.isFocusable()).isTrue();
+
+ mViewHolder.mContainerLayout.performClick();
+
+ verify(mMediaSwitchingController).connectDevice(mMediaDevice2);
+ }
+
+ @EnableFlags(Flags.FLAG_DISABLE_TRANSFER_WHEN_APPS_DO_NOT_SUPPORT)
+ @Test
+ public void clickFullItemOfSelectableDevice_flagOn_isTransferable_verifyConnectDevice() {
+ List<MediaDevice> mediaDevices = new ArrayList<>();
+ mediaDevices.add(mMediaDevice2);
+ when(mMediaDevice2.hasRouteListingPreferenceItem()).thenReturn(false);
+ when(mMediaSwitchingController.getSelectableMediaDevice()).thenReturn(mediaDevices);
+ when(mMediaSwitchingController.getTransferableMediaDevices()).thenReturn(mediaDevices);
+ when(mMediaSwitchingController.isCurrentOutputDeviceHasSessionOngoing()).thenReturn(false);
+ mMediaOutputAdapter.onBindViewHolder(mViewHolder, 1);
+
+ assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_2);
+ assertThat(mViewHolder.mContainerLayout.isFocusable()).isTrue();
+
+ mViewHolder.mContainerLayout.performClick();
+
+ verify(mMediaSwitchingController).connectDevice(mMediaDevice2);
+ }
+
+ @DisableFlags(Flags.FLAG_DISABLE_TRANSFER_WHEN_APPS_DO_NOT_SUPPORT)
+ @Test
+ public void clickFullItemOfSelectableDevice_flagOff_notTransferable_verifyConnectDevice() {
+ List<MediaDevice> mediaDevices = new ArrayList<>();
+ mediaDevices.add(mMediaDevice2);
+ when(mMediaDevice2.hasRouteListingPreferenceItem()).thenReturn(false);
+ when(mMediaSwitchingController.getSelectableMediaDevice()).thenReturn(mediaDevices);
+ when(mMediaSwitchingController.getTransferableMediaDevices()).thenReturn(List.of());
+ when(mMediaSwitchingController.isCurrentOutputDeviceHasSessionOngoing()).thenReturn(false);
+ mMediaOutputAdapter.onBindViewHolder(mViewHolder, 1);
+
+ assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_2);
+ assertThat(mViewHolder.mContainerLayout.isFocusable()).isTrue();
+
+ mViewHolder.mContainerLayout.performClick();
+
+ verify(mMediaSwitchingController).connectDevice(mMediaDevice2);
+ }
+
+ @EnableFlags(Flags.FLAG_DISABLE_TRANSFER_WHEN_APPS_DO_NOT_SUPPORT)
+ @Test
+ public void clickFullItemOfSelectableDevice_flagOn_notTransferable_verifyNotConnectDevice() {
+ List<MediaDevice> mediaDevices = new ArrayList<>();
+ mediaDevices.add(mMediaDevice2);
+ when(mMediaDevice2.hasRouteListingPreferenceItem()).thenReturn(false);
+ when(mMediaSwitchingController.getSelectableMediaDevice()).thenReturn(mediaDevices);
+ when(mMediaSwitchingController.getTransferableMediaDevices()).thenReturn(List.of());
+ when(mMediaSwitchingController.isCurrentOutputDeviceHasSessionOngoing()).thenReturn(false);
+ mMediaOutputAdapter.onBindViewHolder(mViewHolder, 1);
+
+ assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_2);
+ assertThat(mViewHolder.mContainerLayout.isFocusable()).isTrue();
+
+ mViewHolder.mContainerLayout.performClick();
+
+ verify(mMediaSwitchingController, never()).connectDevice(any(MediaDevice.class));
+ }
+
@Test
public void onGroupActionTriggered_clickSelectedRemoteDevice_triggerUngrouping() {
when(mMediaSwitchingController.getSelectableMediaDevice())
@@ -659,26 +818,22 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
verify(mMediaSwitchingController).removeDeviceFromPlayMedia(mMediaDevice1);
}
+ @DisableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_SESSION_GROUPING)
@Test
- public void onItemClick_onGroupActionTriggered_verifySeekbarDisabled() {
- when(mMediaSwitchingController.getSelectedMediaDevice())
- .thenReturn(
- mMediaItems.stream()
- .map((item) -> item.getMediaDevice().get())
- .collect(Collectors.toList()));
- mMediaOutputAdapter = new MediaOutputAdapter(mMediaSwitchingController);
- mMediaOutputAdapter.updateItems();
- mViewHolder = (MediaOutputAdapter.MediaDeviceViewHolder) mMediaOutputAdapter
- .onCreateViewHolder(new LinearLayout(mContext), 0);
- List<MediaDevice> selectableDevices = new ArrayList<>();
- selectableDevices.add(mMediaDevice1);
- when(mMediaSwitchingController.getSelectableMediaDevice()).thenReturn(selectableDevices);
+ public void onBindViewHolder_hasVolumeAdjustmentRestriction_verifySeekbarDisabled() {
+ when(mMediaSwitchingController.getSelectedMediaDevice()).thenReturn(
+ List.of(mMediaDevice1, mMediaDevice2));
+ when(mMediaSwitchingController.isCurrentConnectedDeviceRemote()).thenReturn(true);
when(mMediaSwitchingController.hasAdjustVolumeUserRestriction()).thenReturn(true);
- mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
+ mMediaOutputAdapter.updateItems();
- mViewHolder.mContainerLayout.performClick();
+ // Connected and selected device
+ mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
+ assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.GONE);
- assertThat(mViewHolder.mSeekBar.isEnabled()).isFalse();
+ // Selected device
+ mMediaOutputAdapter.onBindViewHolder(mViewHolder, 1);
+ assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.GONE);
}
@Test
@@ -779,4 +934,118 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
mViewHolder.getDrawableId(false /* isInputDevice */, false /* isMutedVolumeIcon */))
.isEqualTo(R.drawable.media_output_icon_volume);
}
+
+ @EnableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_SESSION_GROUPING)
+ @Test
+ public void multipleSelectedDevices_verifySessionView() {
+ initializeSession();
+
+ mViewHolder = (MediaOutputAdapter.MediaDeviceViewHolder) mMediaOutputAdapter
+ .onCreateViewHolder(
+ new LinearLayout(mContext), MediaItem.MediaItemType.TYPE_DEVICE);
+ mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
+
+ assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mSeekBar.getContentDescription()).isNotNull();
+ assertThat(mViewHolder.mContainerLayout.isFocusable()).isFalse();
+ assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mEndClickIcon.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_SESSION_NAME);
+ assertThat(mViewHolder.mSeekBar.getVolume()).isEqualTo(TEST_CURRENT_VOLUME);
+ }
+
+ @EnableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_SESSION_GROUPING)
+ @Test
+ public void multipleSelectedDevices_verifyCollapsedView() {
+ initializeSession();
+
+ mViewHolder = (MediaOutputAdapter.MediaDeviceViewHolder) mMediaOutputAdapter
+ .onCreateViewHolder(
+ new LinearLayout(mContext), MediaItem.MediaItemType.TYPE_DEVICE);
+ mMediaOutputAdapter.onBindViewHolder(mViewHolder, 1);
+
+ assertThat(mViewHolder.mItemLayout.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.GONE);
+ }
+
+ @EnableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_SESSION_GROUPING)
+ @Test
+ public void multipleSelectedDevices_expandIconClicked_verifyInitialView() {
+ initializeSession();
+ mViewHolder = (MediaOutputAdapter.MediaDeviceViewHolder) mMediaOutputAdapter
+ .onCreateViewHolder(
+ new LinearLayout(mContext), MediaItem.MediaItemType.TYPE_DEVICE);
+ mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
+
+ mViewHolder.mEndTouchArea.performClick();
+ mViewHolder = (MediaOutputAdapter.MediaDeviceViewHolder) mMediaOutputAdapter
+ .onCreateViewHolder(
+ new LinearLayout(mContext), MediaItem.MediaItemType.TYPE_DEVICE);
+ mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
+
+ assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mEndClickIcon.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_1);
+ }
+
+ @EnableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_SESSION_GROUPING)
+ @Test
+ public void multipleSelectedDevices_expandIconClicked_verifyCollapsedView() {
+ initializeSession();
+ mViewHolder = (MediaOutputAdapter.MediaDeviceViewHolder) mMediaOutputAdapter
+ .onCreateViewHolder(
+ new LinearLayout(mContext), MediaItem.MediaItemType.TYPE_DEVICE);
+ mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
+
+ mViewHolder.mEndTouchArea.performClick();
+ mViewHolder = (MediaOutputAdapter.MediaDeviceViewHolder) mMediaOutputAdapter
+ .onCreateViewHolder(
+ new LinearLayout(mContext), MediaItem.MediaItemType.TYPE_DEVICE);
+ mMediaOutputAdapter.onBindViewHolder(mViewHolder, 1);
+
+ assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mEndClickIcon.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_2);
+ }
+
+ @EnableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_SESSION_GROUPING)
+ @Test
+ public void deviceCanNotBeDeselected_verifyView() {
+ List<MediaDevice> selectedDevices = new ArrayList<>();
+ selectedDevices.add(mMediaDevice1);
+ when(mMediaSwitchingController.getSelectableMediaDevice()).thenReturn(selectedDevices);
+ when(mMediaSwitchingController.getSelectedMediaDevice()).thenReturn(selectedDevices);
+ when(mMediaSwitchingController.getDeselectableMediaDevice()).thenReturn(new ArrayList<>());
+
+ mViewHolder = (MediaOutputAdapter.MediaDeviceViewHolder) mMediaOutputAdapter
+ .onCreateViewHolder(
+ new LinearLayout(mContext), MediaItem.MediaItemType.TYPE_DEVICE);
+ mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
+
+ assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mViewHolder.mEndClickIcon.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_1);
+ }
+
+ private void initializeSession() {
+ List<MediaDevice> selectedDevices = new ArrayList<>();
+ selectedDevices.add(mMediaDevice1);
+ selectedDevices.add(mMediaDevice2);
+ when(mMediaSwitchingController.getSelectableMediaDevice()).thenReturn(selectedDevices);
+ when(mMediaSwitchingController.getSelectedMediaDevice()).thenReturn(selectedDevices);
+ when(mMediaSwitchingController.getDeselectableMediaDevice()).thenReturn(selectedDevices);
+
+ mMediaOutputAdapter.updateItems();
+ }
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/mediaprojection/appselector/data/ActivityTaskManagerThumbnailLoaderTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/mediaprojection/appselector/data/ActivityTaskManagerThumbnailLoaderTest.kt
index 9797c8c5b538..47ec5ec1e7e6 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/mediaprojection/appselector/data/ActivityTaskManagerThumbnailLoaderTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/mediaprojection/appselector/data/ActivityTaskManagerThumbnailLoaderTest.kt
@@ -17,7 +17,6 @@ import com.android.systemui.shared.system.ActivityManagerWrapper
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
@@ -26,7 +25,6 @@ import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
class ActivityTaskManagerThumbnailLoaderTest : SysuiTestCase() {
private val dispatcher = UnconfinedTestDispatcher()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionManagerRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionManagerRepositoryTest.kt
index ff00bfb540c6..63942072f3a3 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionManagerRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionManagerRepositoryTest.kt
@@ -17,6 +17,7 @@
package com.android.systemui.mediaprojection.data.repository
import android.hardware.display.displayManager
+import android.media.projection.MediaProjectionEvent
import android.media.projection.MediaProjectionInfo
import android.media.projection.StopReason
import android.os.Binder
@@ -32,8 +33,11 @@ import com.android.systemui.Flags.FLAG_STATUS_BAR_SHOW_AUDIO_ONLY_PROJECTION_CHI
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.applicationCoroutineScope
+import com.android.systemui.kosmos.collectLastValue
+import com.android.systemui.kosmos.runTest
import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.kosmos.testScope
+import com.android.systemui.kosmos.useUnconfinedTestDispatcher
import com.android.systemui.log.logcatLogBuffer
import com.android.systemui.mediaprojection.data.model.MediaProjectionState
import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createTask
@@ -42,7 +46,7 @@ import com.android.systemui.mediaprojection.taskswitcher.FakeMediaProjectionMana
import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeTasksRepository
import com.android.systemui.mediaprojection.taskswitcher.fakeActivityTaskManager
import com.android.systemui.mediaprojection.taskswitcher.fakeMediaProjectionManager
-import com.android.systemui.mediaprojection.taskswitcher.taskSwitcherKosmos
+import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.test.runTest
import org.junit.Test
@@ -55,7 +59,7 @@ import org.mockito.kotlin.whenever
@SmallTest
class MediaProjectionManagerRepositoryTest : SysuiTestCase() {
- private val kosmos = taskSwitcherKosmos()
+ private val kosmos = testKosmos().useUnconfinedTestDispatcher()
private val testScope = kosmos.testScope
private val fakeMediaProjectionManager = kosmos.fakeMediaProjectionManager
@@ -345,4 +349,40 @@ class MediaProjectionManagerRepositoryTest : SysuiTestCase() {
verify(fakeMediaProjectionManager.mediaProjectionManager)
.stopActiveProjection(StopReason.STOP_QS_TILE)
}
+
+ @Test
+ @EnableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun projectionStartedDuringCallAndActivePostCallEvent_flagEnabled_emitsUnit() =
+ kosmos.runTest {
+ val projectionStartedDuringCallAndActivePostCallEvent by
+ collectLastValue(repo.projectionStartedDuringCallAndActivePostCallEvent)
+
+ fakeMediaProjectionManager.dispatchEvent(
+ PROJECTION_STARTED_DURING_CALL_AND_ACTIVE_POST_CALL_EVENT
+ )
+
+ assertThat(projectionStartedDuringCallAndActivePostCallEvent).isEqualTo(Unit)
+ }
+
+ @Test
+ @DisableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun projectionStartedDuringCallAndActivePostCallEvent_flagDisabled_doesNotEmit() =
+ testScope.runTest {
+ val projectionStartedDuringCallAndActivePostCallEvent by
+ collectLastValue(repo.projectionStartedDuringCallAndActivePostCallEvent)
+
+ fakeMediaProjectionManager.dispatchEvent(
+ PROJECTION_STARTED_DURING_CALL_AND_ACTIVE_POST_CALL_EVENT
+ )
+
+ assertThat(projectionStartedDuringCallAndActivePostCallEvent).isNull()
+ }
+
+ companion object {
+ private val PROJECTION_STARTED_DURING_CALL_AND_ACTIVE_POST_CALL_EVENT =
+ MediaProjectionEvent(
+ MediaProjectionEvent.PROJECTION_STARTED_DURING_CALL_AND_ACTIVE_POST_CALL,
+ /* timestampMillis= */ 100L,
+ )
+ }
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/mediarouter/data/repository/MediaRouterRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/mediarouter/data/repository/MediaRouterRepositoryTest.kt
index 6ec38ba171c3..6bc8000b0519 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/mediarouter/data/repository/MediaRouterRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/mediarouter/data/repository/MediaRouterRepositoryTest.kt
@@ -27,13 +27,11 @@ import com.android.systemui.statusbar.policy.CastDevice
import com.android.systemui.statusbar.policy.fakeCastController
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.runner.RunWith
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class MediaRouterRepositoryTest : SysuiTestCase() {
val kosmos = Kosmos()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/notetask/FakeNoteTaskBubbleController.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/notetask/FakeNoteTaskBubbleController.kt
index ebc00c3897cb..9283455d3e54 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/notetask/FakeNoteTaskBubbleController.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/notetask/FakeNoteTaskBubbleController.kt
@@ -38,7 +38,7 @@ class FakeNoteTaskBubbleController(
) : NoteTaskBubblesController(unUsed1, unsUsed2) {
override suspend fun areBubblesAvailable() = optionalBubbles.isPresent
- override suspend fun showOrHideAppBubble(
+ override suspend fun showOrHideNoteBubble(
intent: Intent,
userHandle: UserHandle,
icon: Icon,
@@ -49,12 +49,12 @@ class FakeNoteTaskBubbleController(
if (
bubbleExpandBehavior == NoteTaskBubbleExpandBehavior.KEEP_IF_EXPANDED &&
bubbles.isBubbleExpanded(
- Bubble.getAppBubbleKeyForApp(intent.`package`, userHandle)
+ Bubble.getNoteBubbleKeyForApp(intent.`package`, userHandle)
)
) {
return@ifPresentOrElse
}
- bubbles.showOrHideAppBubble(intent, userHandle, icon)
+ bubbles.showOrHideNoteBubble(intent, userHandle, icon)
},
{ throw IllegalAccessException() },
)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/notetask/NoteTaskBubblesServiceTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/notetask/NoteTaskBubblesServiceTest.kt
index e55d6ad6c5a0..7b9af90ff228 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/notetask/NoteTaskBubblesServiceTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/notetask/NoteTaskBubblesServiceTest.kt
@@ -64,41 +64,41 @@ internal class NoteTaskBubblesServiceTest : SysuiTestCase() {
}
@Test
- fun showOrHideAppBubble_defaultExpandBehavior_shouldCallBubblesApi() {
+ fun showOrHideNoteBubble_defaultExpandBehavior_shouldCallBubblesApi() {
val intent = Intent()
val user = UserHandle.SYSTEM
val icon = Icon.createWithResource(context, R.drawable.ic_note_task_shortcut_widget)
val bubbleExpandBehavior = NoteTaskBubbleExpandBehavior.DEFAULT
whenever(bubbles.isBubbleExpanded(any())).thenReturn(false)
- createServiceBinder().showOrHideAppBubble(intent, user, icon, bubbleExpandBehavior)
+ createServiceBinder().showOrHideNoteBubble(intent, user, icon, bubbleExpandBehavior)
- verify(bubbles).showOrHideAppBubble(intent, user, icon)
+ verify(bubbles).showOrHideNoteBubble(intent, user, icon)
}
@Test
- fun showOrHideAppBubble_keepIfExpanded_bubbleShown_shouldNotCallBubblesApi() {
+ fun showOrHideNoteBubble_keepIfExpanded_bubbleShown_shouldNotCallBubblesApi() {
val intent = Intent().apply { setPackage("test") }
val user = UserHandle.SYSTEM
val icon = Icon.createWithResource(context, R.drawable.ic_note_task_shortcut_widget)
val bubbleExpandBehavior = NoteTaskBubbleExpandBehavior.KEEP_IF_EXPANDED
whenever(bubbles.isBubbleExpanded(any())).thenReturn(true)
- createServiceBinder().showOrHideAppBubble(intent, user, icon, bubbleExpandBehavior)
+ createServiceBinder().showOrHideNoteBubble(intent, user, icon, bubbleExpandBehavior)
- verify(bubbles, never()).showOrHideAppBubble(intent, user, icon)
+ verify(bubbles, never()).showOrHideNoteBubble(intent, user, icon)
}
@Test
- fun showOrHideAppBubble_keepIfExpanded_bubbleNotShown_shouldCallBubblesApi() {
+ fun showOrHideNoteBubble_keepIfExpanded_bubbleNotShown_shouldCallBubblesApi() {
val intent = Intent().apply { setPackage("test") }
val user = UserHandle.SYSTEM
val icon = Icon.createWithResource(context, R.drawable.ic_note_task_shortcut_widget)
val bubbleExpandBehavior = NoteTaskBubbleExpandBehavior.KEEP_IF_EXPANDED
whenever(bubbles.isBubbleExpanded(any())).thenReturn(false)
- createServiceBinder().showOrHideAppBubble(intent, user, icon, bubbleExpandBehavior)
+ createServiceBinder().showOrHideNoteBubble(intent, user, icon, bubbleExpandBehavior)
- verify(bubbles).showOrHideAppBubble(intent, user, icon)
+ verify(bubbles).showOrHideNoteBubble(intent, user, icon)
}
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModelTest.kt
index 675960832edc..26f5d9ea0996 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModelTest.kt
@@ -42,7 +42,6 @@ import com.android.systemui.statusbar.notification.data.repository.activeNotific
import com.android.systemui.statusbar.notification.data.repository.setActiveNotifs
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -50,7 +49,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper
@@ -124,35 +122,35 @@ class NotificationsShadeOverlayContentViewModelTest : SysuiTestCase() {
}
@Test
- fun showHeader_showsOnNarrowScreen() =
+ fun showClock_showsOnNarrowScreen() =
testScope.runTest {
kosmos.shadeRepository.setShadeLayoutWide(false)
// Shown when notifications are present.
kosmos.activeNotificationListRepository.setActiveNotifs(1)
runCurrent()
- assertThat(underTest.showHeader).isTrue()
+ assertThat(underTest.showClock).isTrue()
// Hidden when notifications are not present.
kosmos.activeNotificationListRepository.setActiveNotifs(0)
runCurrent()
- assertThat(underTest.showHeader).isFalse()
+ assertThat(underTest.showClock).isFalse()
}
@Test
- fun showHeader_hidesOnWideScreen() =
+ fun showClock_hidesOnWideScreen() =
testScope.runTest {
kosmos.shadeRepository.setShadeLayoutWide(true)
// Hidden when notifications are present.
kosmos.activeNotificationListRepository.setActiveNotifs(1)
runCurrent()
- assertThat(underTest.showHeader).isFalse()
+ assertThat(underTest.showClock).isFalse()
// Hidden when notifications are not present.
kosmos.activeNotificationListRepository.setActiveNotifs(0)
runCurrent()
- assertThat(underTest.showHeader).isFalse()
+ assertThat(underTest.showClock).isFalse()
}
private fun TestScope.lockDevice() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerBaseSceneContainerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerBaseSceneContainerTest.kt
index 07ec38e6ae6c..5c560caaae04 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerBaseSceneContainerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerBaseSceneContainerTest.kt
@@ -36,12 +36,12 @@ import com.android.systemui.lifecycle.InstantTaskExecutorRule
import com.android.systemui.media.controls.ui.view.MediaHost
import com.android.systemui.qs.customize.QSCustomizerController
import com.android.systemui.qs.logging.QSLogger
+import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.SplitShadeStateController
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import javax.inject.Provider
import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.test.resetMain
@@ -62,7 +62,6 @@ import org.mockito.kotlin.whenever
@RunWith(AndroidJUnit4::class)
@SmallTest
@RunWithLooper
-@OptIn(ExperimentalCoroutinesApi::class)
@EnableSceneContainer
class QSPanelControllerBaseSceneContainerTest : SysuiTestCase() {
@@ -82,6 +81,7 @@ class QSPanelControllerBaseSceneContainerTest : SysuiTestCase() {
private val configuration = Configuration()
@Mock private lateinit var viewTreeObserver: ViewTreeObserver
@Mock private lateinit var mediaHost: MediaHost
+ @Mock private lateinit var configurationController: ConfigurationController
private var isSplitShade = false
private val splitShadeStateController =
@@ -260,6 +260,7 @@ class QSPanelControllerBaseSceneContainerTest : SysuiTestCase() {
splitShadeStateController,
longPressEffectProvider,
mediaVisible,
+ configurationController,
)
}
@@ -274,7 +275,8 @@ class QSPanelControllerBaseSceneContainerTest : SysuiTestCase() {
dumpManager: DumpManager,
splitShadeStateController: SplitShadeStateController,
longPressEffectProvider: Provider<QSLongPressEffect>,
- private val mediaVisibleFlow: StateFlow<Boolean>
+ private val mediaVisibleFlow: StateFlow<Boolean>,
+ configurationController: ConfigurationController,
) :
QSPanelControllerBase<QSPanel>(
view,
@@ -287,12 +289,14 @@ class QSPanelControllerBaseSceneContainerTest : SysuiTestCase() {
qsLogger,
dumpManager,
splitShadeStateController,
- longPressEffectProvider
+ longPressEffectProvider,
+ configurationController,
) {
init {
whenever(view.dumpableTag).thenReturn(hashCode().toString())
}
+
override fun getMediaVisibleFlow(): StateFlow<Boolean> {
return mediaVisibleFlow
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java
index ff005c2b767a..0846b06cce03 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java
@@ -40,6 +40,7 @@ import static kotlinx.coroutines.flow.StateFlowKt.MutableStateFlow;
import android.content.res.Configuration;
import android.content.res.Resources;
+import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.FlagsParameterization;
import android.testing.TestableLooper.RunWithLooper;
import android.view.ContextThemeWrapper;
@@ -51,6 +52,7 @@ import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.logging.testing.UiEventLoggerFake;
+import com.android.systemui.Flags;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.flags.DisableSceneContainer;
@@ -64,6 +66,7 @@ import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.res.R;
import com.android.systemui.scene.shared.flag.SceneContainerFlag;
+import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ResourcesSplitShadeStateController;
import com.android.systemui.util.animation.DisappearParameters;
@@ -134,6 +137,8 @@ public class QSPanelControllerBaseTest extends SysuiTestCase {
Runnable mHorizontalLayoutListener;
@Mock
private ViewTreeObserver mViewTreeObserver;
+ @Mock
+ ConfigurationController mConfigurationController;
private boolean mPagedTileLayoutListening = false;
@@ -151,7 +156,7 @@ public class QSPanelControllerBaseTest extends SysuiTestCase {
super(view, host, qsCustomizerController, usingMediaPlayer(),
mediaHost, metricsLogger, uiEventLogger,
qsLogger, dumpManager, new ResourcesSplitShadeStateController(),
- mLongPressEffectProvider);
+ mLongPressEffectProvider, mConfigurationController);
}
private MutableStateFlow<Boolean> mMediaVisible = MutableStateFlow(false);
@@ -633,6 +638,19 @@ public class QSPanelControllerBaseTest extends SysuiTestCase {
);
}
+ @Test
+ @EnableFlags(Flags.FLAG_SHADE_WINDOW_GOES_AROUND)
+ public void onViewAttached_registersConfigListener() {
+ reset(mConfigurationController);
+ mController.onViewAttached();
+
+ verify(mConfigurationController).addCallback(any());
+
+ mController.onViewDetached();
+
+ verify(mConfigurationController).removeCallback(any());
+ }
+
private boolean usingMediaPlayer() {
return !SceneContainerFlag.isEnabled();
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerTest.kt
index 96f6a622e2f3..0d4bc8c7a4e1 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerTest.kt
@@ -22,6 +22,7 @@ import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.settings.brightness.BrightnessController
import com.android.systemui.settings.brightness.BrightnessSliderController
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager
+import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.ResourcesSplitShadeStateController
import com.android.systemui.tuner.TunerService
import com.google.common.truth.Truth.assertThat
@@ -66,6 +67,7 @@ class QSPanelControllerTest : SysuiTestCase() {
@Mock private lateinit var pagedTileLayout: PagedTileLayout
@Mock private lateinit var longPressEffectProvider: Provider<QSLongPressEffect>
@Mock private lateinit var mediaCarouselInteractor: MediaCarouselInteractor
+ @Mock private lateinit var configurationController: ConfigurationController
private val usingMediaPlayer: Boolean by lazy { !SceneContainerFlag.isEnabled }
@@ -108,6 +110,7 @@ class QSPanelControllerTest : SysuiTestCase() {
ResourcesSplitShadeStateController(),
longPressEffectProvider,
mediaCarouselInteractor,
+ configurationController,
)
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QuickQSPanelControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QuickQSPanelControllerTest.kt
index 7880aceb53be..896ca26e3e79 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QuickQSPanelControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QuickQSPanelControllerTest.kt
@@ -32,6 +32,7 @@ import com.android.systemui.plugins.qs.QSTile
import com.android.systemui.qs.customize.QSCustomizerController
import com.android.systemui.qs.logging.QSLogger
import com.android.systemui.res.R
+import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.ResourcesSplitShadeStateController
import com.android.systemui.util.leak.RotationUtils
import javax.inject.Provider
@@ -64,6 +65,7 @@ class QuickQSPanelControllerTest : SysuiTestCase() {
@Captor private lateinit var captor: ArgumentCaptor<QSPanel.OnConfigurationChangedListener>
@Mock private lateinit var longPressEffectProvider: Provider<QSLongPressEffect>
@Mock private lateinit var mediaCarouselInteractor: MediaCarouselInteractor
+ @Mock private lateinit var configurationController: ConfigurationController
private val usingMediaPlayer: Boolean
get() = false
@@ -100,6 +102,7 @@ class QuickQSPanelControllerTest : SysuiTestCase() {
dumpManager,
longPressEffectProvider,
mediaCarouselInteractor,
+ configurationController,
)
controller.init()
@@ -171,6 +174,7 @@ class QuickQSPanelControllerTest : SysuiTestCase() {
dumpManager: DumpManager,
longPressEffectProvider: Provider<QSLongPressEffect>,
mediaCarouselInteractor: MediaCarouselInteractor,
+ configurationController: ConfigurationController,
) :
QuickQSPanelController(
view,
@@ -186,6 +190,7 @@ class QuickQSPanelControllerTest : SysuiTestCase() {
ResourcesSplitShadeStateController(),
longPressEffectProvider,
mediaCarouselInteractor,
+ configurationController,
) {
private var rotation = RotationUtils.ROTATION_NONE
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/UserSettingObserverTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/UserSettingObserverTest.kt
index 0c2b59fed078..858ed6a6b54a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/UserSettingObserverTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/UserSettingObserverTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.util.settings.SecureSettings
import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth.assertThat
import junit.framework.Assert.fail
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.After
@@ -40,7 +39,6 @@ import platform.test.runner.parameterized.Parameters
private typealias Callback = (Int, Boolean) -> Unit
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
@TestableLooper.RunWithLooper
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/composefragment/viewmodel/AbstractQSFragmentComposeViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/composefragment/viewmodel/AbstractQSFragmentComposeViewModelTest.kt
index 87e2fefde989..dd5e89208238 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/composefragment/viewmodel/AbstractQSFragmentComposeViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/composefragment/viewmodel/AbstractQSFragmentComposeViewModelTest.kt
@@ -31,7 +31,6 @@ import com.android.systemui.media.controls.domain.pipeline.mediaDataManager
import com.android.systemui.qs.composefragment.dagger.usingMediaInComposeFragment
import com.android.systemui.testKosmos
import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestResult
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.resetMain
@@ -42,7 +41,6 @@ import org.junit.Before
import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
abstract class AbstractQSFragmentComposeViewModelTest : SysuiTestCase() {
protected val kosmos = testKosmos().apply { mediaDataManager = legacyMediaDataManagerImpl }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModelForceQSTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModelForceQSTest.kt
index d16da1c359fb..428d97482751 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModelForceQSTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModelForceQSTest.kt
@@ -23,7 +23,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.statusbar.StatusBarState
import com.android.systemui.statusbar.sysuiStatusBarStateController
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import org.junit.Test
import org.junit.runner.RunWith
@@ -33,7 +32,6 @@ import platform.test.runner.parameterized.Parameters
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
@RunWithLooper
-@OptIn(ExperimentalCoroutinesApi::class)
class QSFragmentComposeViewModelForceQSTest(private val testData: TestData) :
AbstractQSFragmentComposeViewModelTest() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModelTest.kt
index 4457d9b25ade..e3fe24ca37c1 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModelTest.kt
@@ -46,7 +46,6 @@ import com.android.systemui.statusbar.disableflags.shared.model.DisableFlagsMode
import com.android.systemui.statusbar.sysuiStatusBarStateController
import com.android.systemui.util.animation.DisappearParameters
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import org.junit.Test
@@ -56,7 +55,6 @@ import org.mockito.kotlin.whenever
@SmallTest
@RunWith(AndroidJUnit4::class)
@RunWithLooper
-@OptIn(ExperimentalCoroutinesApi::class)
class QSFragmentComposeViewModelTest : AbstractQSFragmentComposeViewModelTest() {
@Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/data/repository/PaginatedGridRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/data/repository/PaginatedGridRepositoryTest.kt
deleted file mode 100644
index e5bdc2e56b11..000000000000
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/data/repository/PaginatedGridRepositoryTest.kt
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.qs.panels.data.repository
-
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.android.systemui.SysuiTestCase
-import com.android.systemui.common.ui.data.repository.fakeConfigurationRepository
-import com.android.systemui.coroutines.collectLastValue
-import com.android.systemui.kosmos.testCase
-import com.android.systemui.kosmos.testScope
-import com.android.systemui.res.R
-import com.android.systemui.testKosmos
-import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.test.runTest
-import org.junit.Test
-import org.junit.runner.RunWith
-
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-class PaginatedGridRepositoryTest : SysuiTestCase() {
- private val kosmos = testKosmos()
-
- val underTest = kosmos.paginatedGridRepository
-
- @Test
- fun rows_followsConfig() =
- with(kosmos) {
- testScope.runTest {
- val rows by collectLastValue(underTest.rows)
-
- setRowsInConfig(3)
- assertThat(rows).isEqualTo(3)
-
- setRowsInConfig(6)
- assertThat(rows).isEqualTo(6)
- }
- }
-
- private fun setRowsInConfig(rows: Int) =
- with(kosmos) {
- testCase.context.orCreateTestableResources.addOverride(
- R.integer.quick_settings_paginated_grid_num_rows,
- rows,
- )
- fakeConfigurationRepository.onConfigurationChange()
- }
-}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/data/repository/QSPreferencesRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/data/repository/QSPreferencesRepositoryTest.kt
index 4dcbdfae6d4a..264eda5a07eb 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/data/repository/QSPreferencesRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/data/repository/QSPreferencesRepositoryTest.kt
@@ -30,6 +30,7 @@ import com.android.systemui.testKosmos
import com.android.systemui.user.data.repository.fakeUserRepository
import com.android.systemui.user.data.repository.userRepository
import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.flow.first
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
@@ -104,6 +105,114 @@ class QSPreferencesRepositoryTest : SysuiTestCase() {
}
}
+ @Test
+ fun setInitialTilesFromSettings_noLargeTiles_tilesSet() =
+ with(kosmos) {
+ testScope.runTest {
+ val largeTiles by collectLastValue(underTest.largeTilesSpecs)
+
+ fakeUserRepository.setUserInfos(USERS)
+ fakeUserRepository.setSelectedUserInfo(PRIMARY_USER)
+ val tiles = setOf("tileA", "tileB").toTileSpecs()
+
+ assertThat(getSharedPreferences().contains(LARGE_TILES_SPECS_KEY)).isFalse()
+
+ underTest.setInitialLargeTilesSpecs(tiles, PRIMARY_USER_ID)
+
+ assertThat(largeTiles).isEqualTo(tiles)
+ }
+ }
+
+ @Test
+ fun setInitialTilesFromSettings_alreadyLargeTiles_tilesNotSet() =
+ with(kosmos) {
+ testScope.runTest {
+ val largeTiles by collectLastValue(underTest.largeTilesSpecs)
+
+ fakeUserRepository.setUserInfos(USERS)
+ fakeUserRepository.setSelectedUserInfo(ANOTHER_USER)
+ setLargeTilesSpecsInSharedPreferences(setOf("tileC"))
+
+ underTest.setInitialLargeTilesSpecs(setOf("tileA").toTileSpecs(), ANOTHER_USER_ID)
+
+ assertThat(largeTiles).isEqualTo(setOf("tileC").toTileSpecs())
+ }
+ }
+
+ @Test
+ fun setInitialTilesFromSettings_emptyLargeTiles_tilesNotSet() =
+ with(kosmos) {
+ testScope.runTest {
+ val largeTiles by collectLastValue(underTest.largeTilesSpecs)
+
+ fakeUserRepository.setUserInfos(USERS)
+ fakeUserRepository.setSelectedUserInfo(ANOTHER_USER)
+ setLargeTilesSpecsInSharedPreferences(emptySet())
+
+ underTest.setInitialLargeTilesSpecs(setOf("tileA").toTileSpecs(), ANOTHER_USER_ID)
+
+ assertThat(largeTiles).isEmpty()
+ }
+ }
+
+ @Test
+ fun setInitialTilesFromSettings_nonCurrentUser_tilesSetForCorrectUser() =
+ with(kosmos) {
+ testScope.runTest {
+ val largeTiles by collectLastValue(underTest.largeTilesSpecs)
+
+ fakeUserRepository.setUserInfos(USERS)
+ fakeUserRepository.setSelectedUserInfo(PRIMARY_USER)
+
+ underTest.setInitialLargeTilesSpecs(setOf("tileA").toTileSpecs(), ANOTHER_USER_ID)
+
+ assertThat(largeTiles).isEqualTo(defaultLargeTilesRepository.defaultLargeTiles)
+
+ fakeUserRepository.setSelectedUserInfo(ANOTHER_USER)
+ assertThat(largeTiles).isEqualTo(setOf("tileA").toTileSpecs())
+ }
+ }
+
+ @Test
+ fun setInitialTiles_afterDefaultRead_noSetOnRepository_initialTilesCorrect() =
+ with(kosmos) {
+ testScope.runTest {
+ val largeTiles by collectLastValue(underTest.largeTilesSpecs)
+ fakeUserRepository.setUserInfos(USERS)
+ fakeUserRepository.setSelectedUserInfo(PRIMARY_USER)
+
+ val currentLargeTiles = underTest.largeTilesSpecs.first()
+
+ assertThat(currentLargeTiles).isNotEmpty()
+
+ val tiles = setOf("tileA", "tileB")
+ underTest.setInitialLargeTilesSpecs(tiles.toTileSpecs(), PRIMARY_USER_ID)
+
+ assertThat(largeTiles).isEqualTo(tiles.toTileSpecs())
+ }
+ }
+
+ @Test
+ fun setInitialTiles_afterDefaultRead_largeTilesSetOnRepository_initialTilesCorrect() =
+ with(kosmos) {
+ testScope.runTest {
+ val largeTiles by collectLastValue(underTest.largeTilesSpecs)
+ fakeUserRepository.setUserInfos(USERS)
+ fakeUserRepository.setSelectedUserInfo(PRIMARY_USER)
+
+ val currentLargeTiles = underTest.largeTilesSpecs.first()
+
+ assertThat(currentLargeTiles).isNotEmpty()
+
+ underTest.setLargeTilesSpecs(setOf(TileSpec.create("tileC")))
+
+ val tiles = setOf("tileA", "tileB")
+ underTest.setInitialLargeTilesSpecs(tiles.toTileSpecs(), PRIMARY_USER_ID)
+
+ assertThat(largeTiles).isEqualTo(setOf(TileSpec.create("tileC")))
+ }
+ }
+
private fun getSharedPreferences(): SharedPreferences =
with(kosmos) {
return userFileManager.getSharedPreferences(
@@ -121,20 +230,11 @@ class QSPreferencesRepositoryTest : SysuiTestCase() {
return getSharedPreferences().getStringSet(LARGE_TILES_SPECS_KEY, emptySet())!!
}
- private fun setShowLabelsInSharedPreferences(value: Boolean) {
- getSharedPreferences().edit().putBoolean(ICON_LABELS_KEY, value).apply()
- }
-
- private fun getShowLabelsFromSharedPreferences(defaultValue: Boolean): Boolean {
- return getSharedPreferences().getBoolean(ICON_LABELS_KEY, defaultValue)
- }
-
private fun Set<String>.toTileSpecs(): Set<TileSpec> {
return map { TileSpec.create(it) }.toSet()
}
companion object {
- private const val ICON_LABELS_KEY = "show_icon_labels"
private const val LARGE_TILES_SPECS_KEY = "large_tiles_specs"
private const val PRIMARY_USER_ID = 0
private val PRIMARY_USER = UserInfo(PRIMARY_USER_ID, "user 0", UserInfo.FLAG_MAIN)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/DynamicIconTilesInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/DynamicIconTilesInteractorTest.kt
index 75d4b91f25a9..c68300751c5a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/DynamicIconTilesInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/DynamicIconTilesInteractorTest.kt
@@ -29,7 +29,6 @@ import com.android.systemui.qs.pipeline.domain.interactor.currentTilesInteractor
import com.android.systemui.qs.pipeline.shared.TileSpec
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -57,7 +56,6 @@ class DynamicIconTilesInteractorTest : SysuiTestCase() {
}
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun removingTile_updatesSharedPreferences() =
with(kosmos) {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/IconTilesInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/IconTilesInteractorTest.kt
index ed28dc8304c3..79acfdaa415b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/IconTilesInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/IconTilesInteractorTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.qs.pipeline.domain.interactor.currentTilesInteractor
import com.android.systemui.qs.pipeline.shared.TileSpec
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
@@ -53,7 +52,6 @@ class IconTilesInteractorTest : SysuiTestCase() {
assertThat(underTest.isIconTile(smallTile)).isTrue()
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun isIconTile_updatesFromSharedPreferences() =
with(kosmos) {
@@ -76,7 +74,6 @@ class IconTilesInteractorTest : SysuiTestCase() {
}
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun resize_updatesSharedPreferences() =
with(kosmos) {
@@ -96,7 +93,6 @@ class IconTilesInteractorTest : SysuiTestCase() {
}
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun resizingNonCurrentTile_doesNothing() =
with(kosmos) {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/SizedTilesResetInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/SizedTilesResetInteractorTest.kt
index ee7a15eb7fa7..e6d78d927780 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/SizedTilesResetInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/SizedTilesResetInteractorTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.qs.pipeline.domain.interactor.currentTilesInteractor
import com.android.systemui.qs.pipeline.shared.TileSpec
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
@@ -47,7 +46,6 @@ class SizedTilesResetInteractorTest : SysuiTestCase() {
}
private val underTest = with(kosmos) { sizedTilesResetInteractor }
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun changeTiles_resetsCorrectly() {
with(kosmos) {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/DetailsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/DetailsViewModelTest.kt
index 98770c724126..68a591dd075f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/DetailsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/DetailsViewModelTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.qs.pipeline.domain.interactor.currentTilesInteractor
import com.android.systemui.qs.pipeline.shared.TileSpec
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -48,7 +47,6 @@ class DetailsViewModelTest : SysuiTestCase() {
underTest = kosmos.detailsViewModel
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun changeTileDetailsViewModel() = with(kosmos) {
testScope.runTest {
@@ -62,8 +60,8 @@ class DetailsViewModelTest : SysuiTestCase() {
val tiles = currentTilesInteractor.currentTiles.value
assertThat(currentTilesInteractor.currentTilesSpecs.size).isEqualTo(2)
- assertThat(tiles!![1].spec).isEqualTo(specNoDetails)
- (tiles!![1].tile as FakeQSTile).hasDetailsViewModel = false
+ assertThat(tiles[1].spec).isEqualTo(specNoDetails)
+ (tiles[1].tile as FakeQSTile).hasDetailsViewModel = false
assertThat(underTest.activeTileDetails).isNull()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/EditModeViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/EditModeViewModelTest.kt
index bbfa7e7a81ee..50229eb4348d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/EditModeViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/EditModeViewModelTest.kt
@@ -62,7 +62,6 @@ import com.android.systemui.qs.tiles.viewmodel.qSTileConfigProvider
import com.android.systemui.settings.userTracker
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runCurrent
@@ -501,7 +500,6 @@ class EditModeViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
}
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun currentTiles_moveTileDown() =
with(kosmos) {
@@ -527,7 +525,6 @@ class EditModeViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
}
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun currentTiles_moveTileUp() =
with(kosmos) {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/MediaInRowInLandscapeViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/MediaInRowInLandscapeViewModelTest.kt
index e686d4dde2f1..fdbf42c9afd8 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/MediaInRowInLandscapeViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/MediaInRowInLandscapeViewModelTest.kt
@@ -36,7 +36,6 @@ import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -44,7 +43,6 @@ import org.junit.runner.RunWith
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(ParameterizedAndroidJunit4::class)
@SmallTest
class MediaInRowInLandscapeViewModelTest(private val testData: TestData) : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/QuickQuickSettingsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/QuickQuickSettingsViewModelTest.kt
index 3d1265aec45e..69fc4cd45096 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/QuickQuickSettingsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/QuickQuickSettingsViewModelTest.kt
@@ -35,7 +35,6 @@ import com.android.systemui.qs.pipeline.shared.TileSpec
import com.android.systemui.res.R
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -43,7 +42,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class QuickQuickSettingsViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/AutoAddSettingsRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/AutoAddSettingsRepositoryTest.kt
index 1545e7444ffb..e1672ead0e9e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/AutoAddSettingsRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/AutoAddSettingsRepositoryTest.kt
@@ -26,7 +26,6 @@ import com.android.systemui.qs.pipeline.shared.TileSpec
import com.android.systemui.qs.pipeline.shared.logging.QSPipelineLogger
import com.android.systemui.util.settings.FakeSettings
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -37,7 +36,6 @@ import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/InstalledTilesComponentRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/InstalledTilesComponentRepositoryImplTest.kt
index a0dec8cb745d..0a8b1d195ece 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/InstalledTilesComponentRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/InstalledTilesComponentRepositoryImplTest.kt
@@ -43,7 +43,6 @@ import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -53,7 +52,6 @@ import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mock
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/QSSettingsRestoredBroadcastRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/QSSettingsRestoredBroadcastRepositoryTest.kt
index 39851b6f21a7..41b00bbaa1b2 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/QSSettingsRestoredBroadcastRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/QSSettingsRestoredBroadcastRepositoryTest.kt
@@ -10,7 +10,6 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.qs.pipeline.shared.logging.QSPipelineLogger
import com.android.systemui.statusbar.policy.FakeDeviceProvisionedController
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -22,7 +21,6 @@ import org.mockito.Mock
import org.mockito.MockitoAnnotations
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class QSSettingsRestoredBroadcastRepositoryTest : SysuiTestCase() {
private val dispatcher = StandardTestDispatcher()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/TileSpecSettingsRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/TileSpecSettingsRepositoryTest.kt
index 23056b2e1eab..4b8cd3742bff 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/TileSpecSettingsRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/TileSpecSettingsRepositoryTest.kt
@@ -22,13 +22,14 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.coroutines.collectValues
import com.android.systemui.qs.pipeline.shared.TileSpec
import com.android.systemui.qs.pipeline.shared.logging.QSPipelineLogger
import com.android.systemui.res.R
import com.android.systemui.retail.data.repository.FakeRetailModeRepository
import com.android.systemui.util.settings.FakeSettings
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.consumeAsFlow
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -42,7 +43,6 @@ import org.mockito.MockitoAnnotations
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class TileSpecSettingsRepositoryTest : SysuiTestCase() {
private lateinit var secureSettings: FakeSettings
@@ -92,6 +92,7 @@ class TileSpecSettingsRepositoryTest : SysuiTestCase() {
logger,
retailModeRepository,
userTileSpecRepositoryFactory,
+ testScope.backgroundScope,
)
}
@@ -233,6 +234,40 @@ class TileSpecSettingsRepositoryTest : SysuiTestCase() {
assertThat(tiles!!).containsExactlyElementsIn(DEFAULT_TILES.toTileSpecs())
}
+ @Test
+ fun readSettingsStored_emittedForUser() =
+ testScope.runTest {
+ val startingTiles = "a,b"
+ val userId = 10
+ storeTilesForUser(startingTiles, userId)
+
+ val tiles by collectLastValue(underTest.tilesSpecs(userId))
+ val tilesRead by collectLastValue(underTest.tilesReadFromSetting.consumeAsFlow())
+
+ assertThat(tilesRead).isEqualTo(startingTiles.toTileSpecs().toSet() to userId)
+ }
+
+ @Test
+ fun readSettingsStored_multipleUsers() =
+ testScope.runTest {
+ val startingTiles10 = "a"
+ val startingTiles11 = "b,c"
+ storeTilesForUser(startingTiles10, 10)
+ storeTilesForUser(startingTiles11, 11)
+
+ val tiles10 by collectLastValue(underTest.tilesSpecs(10))
+ val tiles11 by collectLastValue(underTest.tilesSpecs(11))
+
+ val tilesRead by collectValues(underTest.tilesReadFromSetting.consumeAsFlow())
+
+ assertThat(tilesRead).hasSize(2)
+ assertThat(tilesRead)
+ .containsExactly(
+ startingTiles10.toTileSpecs().toSet() to 10,
+ startingTiles11.toTileSpecs().toSet() to 11,
+ )
+ }
+
private fun TestScope.storeTilesForUser(specs: String, forUser: Int) {
secureSettings.putStringForUser(SETTING, specs, forUser)
runCurrent()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/UserAutoAddRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/UserAutoAddRepositoryTest.kt
index 1ca3c0637824..88da9ae0debd 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/UserAutoAddRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/UserAutoAddRepositoryTest.kt
@@ -12,7 +12,6 @@ import com.android.systemui.qs.pipeline.shared.logging.QSPipelineLogger
import com.android.systemui.util.settings.FakeSettings
import com.google.common.truth.Truth
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -23,7 +22,6 @@ import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/UserTileSpecRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/UserTileSpecRepositoryTest.kt
index b12fbc2066a2..1945f750efaf 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/UserTileSpecRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/repository/UserTileSpecRepositoryTest.kt
@@ -7,12 +7,13 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.qs.pipeline.data.model.RestoreData
+import com.android.systemui.qs.pipeline.data.repository.UserTileSpecRepositoryTest.Companion.toTilesSet
import com.android.systemui.qs.pipeline.shared.TileSpec
import com.android.systemui.qs.pipeline.shared.logging.QSPipelineLogger
import com.android.systemui.util.settings.FakeSettings
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.coroutineScope
+import kotlinx.coroutines.flow.consumeAsFlow
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -25,7 +26,6 @@ import org.mockito.MockitoAnnotations
@SmallTest
@EnabledOnRavenwood
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class UserTileSpecRepositoryTest : SysuiTestCase() {
private val secureSettings = FakeSettings()
@@ -314,11 +314,7 @@ class UserTileSpecRepositoryTest : SysuiTestCase() {
runCurrent()
val restoreData =
- RestoreData(
- restoredSpecs.toTileSpecs(),
- restoredAutoAdded.toTilesSet(),
- USER,
- )
+ RestoreData(restoredSpecs.toTileSpecs(), restoredAutoAdded.toTilesSet(), USER)
underTest.reconcileRestore(restoreData, autoAddedBeforeRestore.toTilesSet())
runCurrent()
@@ -353,6 +349,49 @@ class UserTileSpecRepositoryTest : SysuiTestCase() {
assertThat(tiles).isEqualTo(currentTiles)
}
+ @Test
+ fun noSettingsStored_noTilesReadFromSettings() =
+ testScope.runTest {
+ val tilesRead by collectLastValue(underTest.tilesReadFromSettings.consumeAsFlow())
+ val tiles by collectLastValue(underTest.tiles())
+
+ assertThat(tiles).isEqualTo(getDefaultTileSpecs())
+ assertThat(tilesRead).isEqualTo(null)
+ }
+
+ @Test
+ fun settingsStored_tilesReadFromSettings() =
+ testScope.runTest {
+ val storedTiles = "a,b"
+ storeTiles(storedTiles)
+ val tiles by collectLastValue(underTest.tiles())
+ val tilesRead by collectLastValue(underTest.tilesReadFromSettings.consumeAsFlow())
+
+ assertThat(tilesRead).isEqualTo(storedTiles.toTilesSet())
+ }
+
+ @Test
+ fun noSettingsStored_tilesChanged_tilesReadFromSettingsNotChanged() =
+ testScope.runTest {
+ val tilesRead by collectLastValue(underTest.tilesReadFromSettings.consumeAsFlow())
+ val tiles by collectLastValue(underTest.tiles())
+
+ underTest.addTile(TileSpec.create("a"))
+ assertThat(tilesRead).isEqualTo(null)
+ }
+
+ @Test
+ fun settingsStored_tilesChanged_tilesReadFromSettingsNotChanged() =
+ testScope.runTest {
+ val storedTiles = "a,b"
+ storeTiles(storedTiles)
+ val tiles by collectLastValue(underTest.tiles())
+ val tilesRead by collectLastValue(underTest.tilesReadFromSettings.consumeAsFlow())
+
+ underTest.addTile(TileSpec.create("c"))
+ assertThat(tilesRead).isEqualTo(storedTiles.toTilesSet())
+ }
+
private fun getDefaultTileSpecs(): List<TileSpec> {
return defaultTilesRepository.defaultTiles
}
@@ -372,6 +411,7 @@ class UserTileSpecRepositoryTest : SysuiTestCase() {
private const val SETTING = Settings.Secure.QS_TILES
private fun String.toTileSpecs() = TilesSettingConverter.toTilesList(this)
+
private fun String.toTilesSet() = TilesSettingConverter.toTilesSet(this)
}
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/restoreprocessors/WorkTileRestoreProcessorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/restoreprocessors/WorkTileRestoreProcessorTest.kt
index 57bb77f46e40..5abcb0cb6954 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/restoreprocessors/WorkTileRestoreProcessorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/data/restoreprocessors/WorkTileRestoreProcessorTest.kt
@@ -25,7 +25,6 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.qs.pipeline.data.model.RestoreData
import com.android.systemui.qs.pipeline.shared.TileSpec
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
@@ -34,7 +33,6 @@ import org.junit.runner.RunWith
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class WorkTileRestoreProcessorTest : SysuiTestCase() {
private val underTest = WorkTileRestoreProcessor()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/AutoAddableSettingTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/AutoAddableSettingTest.kt
index 561902234990..b0fd7eb74c1d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/AutoAddableSettingTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/AutoAddableSettingTest.kt
@@ -29,12 +29,10 @@ import com.android.systemui.qs.pipeline.shared.TileSpec
import com.android.systemui.testKosmos
import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class AutoAddableSettingTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/CallbackControllerAutoAddableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/CallbackControllerAutoAddableTest.kt
index ea8d87358172..3be8e3faf333 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/CallbackControllerAutoAddableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/CallbackControllerAutoAddableTest.kt
@@ -26,7 +26,6 @@ import com.android.systemui.qs.pipeline.domain.model.AutoAddTracking
import com.android.systemui.qs.pipeline.shared.TileSpec
import com.android.systemui.statusbar.policy.CallbackController
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.channels.ProducerScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.runCurrent
@@ -34,7 +33,6 @@ import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/CastAutoAddableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/CastAutoAddableTest.kt
index 8ad647dd4d26..a2629844b626 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/CastAutoAddableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/CastAutoAddableTest.kt
@@ -29,7 +29,6 @@ import com.android.systemui.statusbar.policy.CastDevice
import com.android.systemui.util.mockito.capture
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -41,7 +40,6 @@ import org.mockito.Mock
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/DataSaverAutoAddableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/DataSaverAutoAddableTest.kt
index b925b27bfcc3..c5788b586f5e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/DataSaverAutoAddableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/DataSaverAutoAddableTest.kt
@@ -27,7 +27,6 @@ import com.android.systemui.qs.tiles.DataSaverTile
import com.android.systemui.statusbar.policy.DataSaverController
import com.android.systemui.util.mockito.capture
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -39,7 +38,6 @@ import org.mockito.Mock
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/DeviceControlsAutoAddableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/DeviceControlsAutoAddableTest.kt
index 188c6a949104..ac32fa82d463 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/DeviceControlsAutoAddableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/DeviceControlsAutoAddableTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.qs.tiles.DeviceControlsTile
import com.android.systemui.statusbar.policy.DeviceControlsController
import com.android.systemui.util.mockito.capture
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.runCurrent
@@ -42,7 +41,6 @@ import org.mockito.Mock
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/HotspotAutoAddableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/HotspotAutoAddableTest.kt
index 02699ddad089..cc694d4a466f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/HotspotAutoAddableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/HotspotAutoAddableTest.kt
@@ -27,7 +27,6 @@ import com.android.systemui.qs.tiles.HotspotTile
import com.android.systemui.statusbar.policy.HotspotController
import com.android.systemui.util.mockito.capture
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -39,7 +38,6 @@ import org.mockito.Mock
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/NightDisplayAutoAddableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/NightDisplayAutoAddableTest.kt
index 20fd3601f9ef..ca7fa5f02b62 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/NightDisplayAutoAddableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/NightDisplayAutoAddableTest.kt
@@ -29,7 +29,6 @@ import com.android.systemui.qs.tiles.NightDisplayTile
import com.android.systemui.util.mockito.capture
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.TestResult
@@ -47,7 +46,6 @@ import org.mockito.Mockito.inOrder
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class NightDisplayAutoAddableTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/SafetyCenterAutoAddableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/SafetyCenterAutoAddableTest.kt
index 633e494b3195..9a3b0078c12e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/SafetyCenterAutoAddableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/SafetyCenterAutoAddableTest.kt
@@ -33,7 +33,6 @@ import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.capture
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.StandardTestDispatcher
@@ -50,7 +49,6 @@ import org.mockito.Mockito.never
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/WalletAutoAddableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/WalletAutoAddableTest.kt
index c5c76eb77152..d3fba4dc80e7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/WalletAutoAddableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/WalletAutoAddableTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.qs.tiles.QuickAccessWalletTile
import com.android.systemui.statusbar.policy.WalletController
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
@@ -36,7 +35,6 @@ import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/WorkTileAutoAddableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/WorkTileAutoAddableTest.kt
index bf34d6ee4435..00490427f80b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/WorkTileAutoAddableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/autoaddable/WorkTileAutoAddableTest.kt
@@ -37,14 +37,12 @@ import com.android.systemui.qs.pipeline.shared.TileSpec
import com.android.systemui.qs.tiles.WorkModeTile
import com.android.systemui.settings.FakeUserTracker
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class WorkTileAutoAddableTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/AccessibilityTilesInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/AccessibilityTilesInteractorTest.kt
index 6cd627c1d058..d9e2d82e5db6 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/AccessibilityTilesInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/AccessibilityTilesInteractorTest.kt
@@ -32,7 +32,6 @@ import com.android.systemui.qs.tiles.ColorInversionTile
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
@@ -45,7 +44,6 @@ import org.mockito.Mockito.mock
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class AccessibilityTilesInteractorTest : SysuiTestCase() {
private val USER_0_INFO = UserInfo(0, "zero", "", UserInfo.FLAG_ADMIN or UserInfo.FLAG_FULL)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/AutoAddInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/AutoAddInteractorTest.kt
index 167eff193147..c83f2f4f6ab7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/AutoAddInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/AutoAddInteractorTest.kt
@@ -33,7 +33,6 @@ import com.android.systemui.qs.pipeline.shared.logging.QSPipelineLogger
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -51,7 +50,6 @@ import org.mockito.MockitoAnnotations
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class AutoAddInteractorTest : SysuiTestCase() {
private val testScope = TestScope()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/CurrentTilesInteractorImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/CurrentTilesInteractorImplTest.kt
index 090e2e9e19a9..9b50f1bd735d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/CurrentTilesInteractorImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/CurrentTilesInteractorImplTest.kt
@@ -57,7 +57,6 @@ import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import com.google.protobuf.nano.MessageNano
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -74,7 +73,6 @@ import org.mockito.MockitoAnnotations
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class CurrentTilesInteractorImplTest : SysuiTestCase() {
private val tileSpecRepository: TileSpecRepository = FakeTileSpecRepository()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/NoLowNumberOfTilesTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/NoLowNumberOfTilesTest.kt
index 00c720475fb1..3a9c3d066b23 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/NoLowNumberOfTilesTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/NoLowNumberOfTilesTest.kt
@@ -40,7 +40,6 @@ import com.android.systemui.qs.qsTileFactory
import com.android.systemui.settings.fakeUserTracker
import com.android.systemui.settings.userTracker
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -52,7 +51,6 @@ import org.junit.runner.RunWith
* from a device that uses different specs for tiles, we may end up with empty (or mostly empty) QS.
* In that case, we want to prepend the default tiles instead.
*/
-@OptIn(ExperimentalCoroutinesApi::class)
@MediumTest
@RunWith(AndroidJUnit4::class)
class NoLowNumberOfTilesTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/WorkProfileAutoAddedAfterRestoreTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/WorkProfileAutoAddedAfterRestoreTest.kt
index 6bcaea47cab1..9d9bfda99bd9 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/WorkProfileAutoAddedAfterRestoreTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/WorkProfileAutoAddedAfterRestoreTest.kt
@@ -35,7 +35,6 @@ import com.android.systemui.qs.qsTileFactory
import com.android.systemui.settings.fakeUserTracker
import com.android.systemui.settings.userTracker
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -51,7 +50,6 @@ import org.junit.runner.RunWith
*/
@MediumTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class WorkProfileAutoAddedAfterRestoreTest : SysuiTestCase() {
private val kosmos by lazy { Kosmos().apply { fakeUserTracker.set(listOf(USER_0_INFO), 0) } }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/shared/QSSettingsPackageRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/shared/QSSettingsPackageRepositoryTest.kt
index 765c02afbb41..a727714a26ef 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/shared/QSSettingsPackageRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/shared/QSSettingsPackageRepositoryTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.android.systemui.user.data.repository.fakeUserRepository
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -42,7 +41,6 @@ import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class QSSettingsPackageRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/InternetTileNewImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/InternetTileNewImplTest.kt
index 4c834b396df6..64e6f4bd48b8 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/InternetTileNewImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/InternetTileNewImplTest.kt
@@ -17,8 +17,6 @@
package com.android.systemui.qs.tiles
import android.os.Handler
-import android.platform.test.annotations.DisableFlags
-import android.platform.test.annotations.EnableFlags
import android.platform.test.flag.junit.FlagsParameterization
import android.platform.test.flag.junit.FlagsParameterization.allCombinationsOf
import android.service.quicksettings.Tile
@@ -26,24 +24,19 @@ import android.testing.TestableLooper
import android.testing.TestableLooper.RunWithLooper
import androidx.test.filters.SmallTest
import com.android.internal.logging.MetricsLogger
-import com.android.systemui.Flags.FLAG_SCENE_CONTAINER
import com.android.systemui.SysuiTestCase
import com.android.systemui.classifier.FalsingManagerFake
-import com.android.systemui.keyguard.KeyguardWmStateRefactor
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.qs.QSHost
import com.android.systemui.qs.QsEventLogger
import com.android.systemui.qs.flags.QSComposeFragment
-import com.android.systemui.qs.flags.QsDetailedView
import com.android.systemui.qs.logging.QSLogger
import com.android.systemui.qs.tiles.dialog.InternetDetailsViewModel
import com.android.systemui.qs.tiles.dialog.InternetDialogManager
import com.android.systemui.qs.tiles.dialog.WifiStateWorker
import com.android.systemui.res.R
-import com.android.systemui.shade.shared.flag.DualShade
import com.android.systemui.statusbar.connectivity.AccessPointController
-import com.android.systemui.statusbar.notification.shared.NotificationThrottleHun
import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository
import com.android.systemui.statusbar.pipeline.ethernet.domain.EthernetInteractor
import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.FakeMobileIconsInteractor
@@ -58,7 +51,6 @@ import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiNetworkMode
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiScanEntry
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -76,7 +68,6 @@ import org.mockito.kotlin.whenever
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWithLooper(setAsMainLooper = true)
@RunWith(ParameterizedAndroidJunit4::class)
@@ -147,7 +138,7 @@ class InternetTileNewImplTest(flags: FlagsParameterization) : SysuiTestCase() {
dialogManager,
wifiStateWorker,
accessPointController,
- internetDetailsViewModelFactory
+ internetDetailsViewModelFactory,
)
underTest.initialize()
@@ -274,45 +265,6 @@ class InternetTileNewImplTest(flags: FlagsParameterization) : SysuiTestCase() {
verify(wifiStateWorker, times(1)).isWifiEnabled = eq(true)
}
- @Test
- @DisableFlags(QsDetailedView.FLAG_NAME)
- fun click_withQsDetailedViewDisabled() {
- underTest.click(null)
- looper.processAllMessages()
-
- verify(dialogManager, times(1))
- .create(
- aboveStatusBar = true,
- accessPointController.canConfigMobileData(),
- accessPointController.canConfigWifi(),
- null,
- )
- }
-
- @Test
- @EnableFlags(
- value =
- [
- QsDetailedView.FLAG_NAME,
- FLAG_SCENE_CONTAINER,
- KeyguardWmStateRefactor.FLAG_NAME,
- NotificationThrottleHun.FLAG_NAME,
- DualShade.FLAG_NAME,
- ]
- )
- fun click_withQsDetailedViewEnabled() {
- underTest.click(null)
- looper.processAllMessages()
-
- verify(dialogManager, times(0))
- .create(
- aboveStatusBar = true,
- accessPointController.canConfigMobileData(),
- accessPointController.canConfigWifi(),
- null,
- )
- }
-
companion object {
const val WIFI_SSID = "test ssid"
val ACTIVE_WIFI =
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/ModesTileTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/ModesTileTest.kt
index 7bb28dbabd5e..bbc0dbcad355 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/ModesTileTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/ModesTileTest.kt
@@ -28,6 +28,7 @@ import com.android.internal.logging.MetricsLogger
import com.android.systemui.SysuiTestCase
import com.android.systemui.classifier.FalsingManagerFake
import com.android.systemui.common.shared.model.asIcon
+import com.android.systemui.kosmos.mainCoroutineContext
import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.kosmos.testScope
import com.android.systemui.plugins.ActivityStarter
@@ -55,7 +56,6 @@ import com.android.systemui.util.mockito.any
import com.android.systemui.util.settings.FakeSettings
import com.android.systemui.util.settings.SecureSettings
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.After
@@ -66,7 +66,6 @@ import org.mockito.Mock
import org.mockito.MockitoAnnotations
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@EnableFlags(android.app.Flags.FLAG_MODES_UI)
@SmallTest
@RunWith(AndroidJUnit4::class)
@@ -126,6 +125,7 @@ class ModesTileTest : SysuiTestCase() {
userActionInteractor =
ModesTileUserActionInteractor(
+ kosmos.mainCoroutineContext,
inputHandler,
dialogDelegate,
kosmos.zenModeInteractor,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/base/viewmodel/QSTileViewModelImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/base/viewmodel/QSTileViewModelImplTest.kt
index c47a412e226a..fba615121a39 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/base/viewmodel/QSTileViewModelImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/base/viewmodel/QSTileViewModelImplTest.kt
@@ -37,7 +37,6 @@ import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import java.io.PrintWriter
import java.io.StringWriter
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
@@ -53,7 +52,6 @@ import org.mockito.junit.MockitoRule
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class QSTileViewModelImplTest : SysuiTestCase() {
@get:Rule val mockitoRule: MockitoRule = MockitoJUnit.rule()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/airplane/domain/interactor/AirplaneModeTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/airplane/domain/interactor/AirplaneModeTileDataInteractorTest.kt
index 67e2fba30822..fda75ca76cec 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/airplane/domain/interactor/AirplaneModeTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/airplane/domain/interactor/AirplaneModeTileDataInteractorTest.kt
@@ -26,7 +26,6 @@ import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger
import com.android.systemui.qs.tiles.impl.airplane.domain.model.AirplaneModeTileModel
import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.toCollection
import kotlinx.coroutines.test.runCurrent
@@ -34,7 +33,6 @@ import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/alarm/domain/interactor/AlarmTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/alarm/domain/interactor/AlarmTileDataInteractorTest.kt
index 990d74728052..afbc3e810743 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/alarm/domain/interactor/AlarmTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/alarm/domain/interactor/AlarmTileDataInteractorTest.kt
@@ -32,7 +32,6 @@ import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.time.DateFormatUtil
import com.android.systemui.utils.leaks.FakeNextAlarmController
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.toCollection
import kotlinx.coroutines.test.runCurrent
@@ -41,7 +40,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class AlarmTileDataInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/battery/doman/interactor/BatterySaverTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/battery/doman/interactor/BatterySaverTileDataInteractorTest.kt
index c80eb135f1a5..44c175ab7156 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/battery/doman/interactor/BatterySaverTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/battery/doman/interactor/BatterySaverTileDataInteractorTest.kt
@@ -29,7 +29,6 @@ import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger
import com.android.systemui.qs.tiles.impl.battery.domain.interactor.BatterySaverTileDataInteractor
import com.android.systemui.utils.leaks.FakeBatteryController
import com.google.common.truth.Truth
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.toCollection
import kotlinx.coroutines.test.runCurrent
@@ -37,7 +36,6 @@ import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/colorcorrection/domain/interactor/ColorCorrectionTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/colorcorrection/domain/interactor/ColorCorrectionTileDataInteractorTest.kt
index abaf808f3f91..4c156b77132b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/colorcorrection/domain/interactor/ColorCorrectionTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/colorcorrection/domain/interactor/ColorCorrectionTileDataInteractorTest.kt
@@ -26,7 +26,6 @@ import com.android.systemui.coroutines.collectValues
import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger
import com.android.systemui.qs.tiles.impl.colorcorrection.domain.model.ColorCorrectionTileModel
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.toCollection
import kotlinx.coroutines.test.runCurrent
@@ -34,7 +33,6 @@ import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/CustomTileDefaultsRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/CustomTileDefaultsRepositoryTest.kt
index 89ba69fce9ad..10530a25b06e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/CustomTileDefaultsRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/CustomTileDefaultsRepositoryTest.kt
@@ -32,7 +32,6 @@ import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.launchIn
@@ -50,7 +49,6 @@ import org.mockito.MockitoAnnotations
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class CustomTileDefaultsRepositoryTest : SysuiTestCase() {
@Mock private lateinit var sysuiContext: Context
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/CustomTilePackageUpdatesRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/CustomTilePackageUpdatesRepositoryTest.kt
index 2eeb75e3443b..835dba21ce05 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/CustomTilePackageUpdatesRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/CustomTilePackageUpdatesRepositoryTest.kt
@@ -35,7 +35,6 @@ import com.android.systemui.util.mockito.capture
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.nullable
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
@@ -50,7 +49,6 @@ import org.mockito.Mock
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@SuppressLint("UnspecifiedRegisterReceiverFlag") // Not needed in the test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/data/repository/CustomTileRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/data/repository/CustomTileRepositoryTest.kt
index c9869bdbf049..83e61d1b36bf 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/data/repository/CustomTileRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/data/repository/CustomTileRepositoryTest.kt
@@ -35,7 +35,6 @@ import com.android.systemui.qs.tiles.impl.custom.customTileStatePersister
import com.android.systemui.qs.tiles.impl.custom.data.entity.CustomTileDefaults
import com.android.systemui.qs.tiles.impl.custom.packageManagerAdapterFacade
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -44,7 +43,6 @@ import org.junit.runner.RunWith
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class CustomTileRepositoryTest : SysuiTestCase() {
private val kosmos = Kosmos().apply { customTileSpec = TileSpec.create(TEST_COMPONENT) }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/domain/interactor/CustomTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/domain/interactor/CustomTileDataInteractorTest.kt
index b5aaadcb7e0c..2cc3678c2065 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/domain/interactor/CustomTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/domain/interactor/CustomTileDataInteractorTest.kt
@@ -45,7 +45,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.user.data.repository.fakeUserRepository
import com.android.systemui.user.data.repository.userRepository
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.test.runCurrent
@@ -55,7 +54,6 @@ import org.junit.runner.RunWith
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class CustomTileDataInteractorTest : SysuiTestCase() {
private val kosmos =
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/domain/interactor/CustomTileInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/domain/interactor/CustomTileInteractorTest.kt
index 33299d9ce74c..a317dc525df9 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/domain/interactor/CustomTileInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/custom/domain/interactor/CustomTileInteractorTest.kt
@@ -36,7 +36,6 @@ import com.android.systemui.qs.tiles.impl.custom.customTileStatePersister
import com.android.systemui.qs.tiles.impl.custom.data.entity.CustomTileDefaults
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.advanceTimeBy
@@ -47,7 +46,6 @@ import org.junit.runner.RunWith
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class CustomTileInteractorTest : SysuiTestCase() {
private val kosmos = testKosmos().apply { customTileSpec = TileSpec.create(TEST_COMPONENT) }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/flashlight/domain/interactor/FlashlightTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/flashlight/domain/interactor/FlashlightTileDataInteractorTest.kt
index c5a8c70330a7..d42eb5ebc9ab 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/flashlight/domain/interactor/FlashlightTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/flashlight/domain/interactor/FlashlightTileDataInteractorTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger
import com.android.systemui.qs.tiles.impl.flashlight.domain.model.FlashlightTileModel
import com.android.systemui.utils.leaks.FakeFlashlightController
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -36,7 +35,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/fontscaling/domain/interactor/FontScalingTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/fontscaling/domain/interactor/FontScalingTileDataInteractorTest.kt
index 39bc8a6fa6a2..cd825045de44 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/fontscaling/domain/interactor/FontScalingTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/fontscaling/domain/interactor/FontScalingTileDataInteractorTest.kt
@@ -24,14 +24,12 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.coroutines.collectValues
import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger
import com.google.common.truth.Truth
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class FontScalingTileDataInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/hearingdevices/domain/interactor/HearingDevicesTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/hearingdevices/domain/interactor/HearingDevicesTileDataInteractorTest.kt
index 9099d3d911bc..4b9d11d2f706 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/hearingdevices/domain/interactor/HearingDevicesTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/hearingdevices/domain/interactor/HearingDevicesTileDataInteractorTest.kt
@@ -30,7 +30,6 @@ import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger
import com.android.systemui.qs.tiles.impl.hearingdevices.domain.model.HearingDevicesTileModel
import com.android.systemui.statusbar.policy.fakeBluetoothController
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -43,7 +42,6 @@ import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/internet/domain/interactor/InternetTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/internet/domain/interactor/InternetTileDataInteractorTest.kt
index 5259aa84b193..63607f1edd59 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/internet/domain/interactor/InternetTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/internet/domain/interactor/InternetTileDataInteractorTest.kt
@@ -57,14 +57,12 @@ import com.android.systemui.statusbar.policy.data.repository.FakeUserSetupReposi
import com.android.systemui.util.CarrierConfigTracker
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class InternetTileDataInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionTileDataInteractorTest.kt
index 75b07eedab95..228e99305926 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionTileDataInteractorTest.kt
@@ -26,7 +26,6 @@ import com.android.systemui.coroutines.collectValues
import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger
import com.android.systemui.qs.tiles.impl.inversion.domain.model.ColorInversionTileModel
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.toCollection
import kotlinx.coroutines.test.runCurrent
@@ -34,7 +33,6 @@ import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/irecording/IssueRecordingDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/irecording/IssueRecordingDataInteractorTest.kt
index f3fc0ab92c84..7562ac00e4a6 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/irecording/IssueRecordingDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/irecording/IssueRecordingDataInteractorTest.kt
@@ -31,7 +31,6 @@ import com.android.systemui.settings.fakeUserFileManager
import com.android.systemui.settings.userTracker
import com.android.systemui.util.settings.fakeGlobalSettings
import com.google.common.truth.Truth
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -64,7 +63,6 @@ class IssueRecordingDataInteractorTest : SysuiTestCase() {
underTest = IssueRecordingDataInteractor(state, kosmos.testScope.testScheduler)
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun emitsEvent_whenIsRecordingStatusChanges_correctly() {
kosmos.testScope.runTest {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/location/interactor/LocationTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/location/interactor/LocationTileDataInteractorTest.kt
index 9adf57ac458a..52ce95b1d742 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/location/interactor/LocationTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/location/interactor/LocationTileDataInteractorTest.kt
@@ -29,7 +29,6 @@ import com.android.systemui.qs.tiles.impl.location.domain.interactor.LocationTil
import com.android.systemui.qs.tiles.impl.location.domain.model.LocationTileModel
import com.android.systemui.utils.leaks.FakeLocationController
import com.google.common.truth.Truth
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -37,7 +36,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt
index 029a2f91a4ba..0b641cee29a2 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt
@@ -40,7 +40,6 @@ import com.android.systemui.statusbar.policy.data.repository.fakeZenModeReposito
import com.android.systemui.statusbar.policy.domain.interactor.zenModeInteractor
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.toCollection
import kotlinx.coroutines.test.runCurrent
@@ -49,7 +48,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class ModesTileDataInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractorTest.kt
index 89b8e9171076..24e4279642d8 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractorTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.qs.tiles.impl.modes.domain.interactor
import android.graphics.drawable.TestStubDrawable
@@ -30,6 +28,7 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.Expandable
import com.android.systemui.common.shared.model.asIcon
import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.kosmos.mainCoroutineContext
import com.android.systemui.kosmos.testScope
import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandlerSubject
import com.android.systemui.qs.tiles.base.actions.qsTileIntentUserInputHandler
@@ -41,7 +40,6 @@ import com.android.systemui.statusbar.policy.ui.dialog.mockModesDialogDelegate
import com.android.systemui.statusbar.policy.ui.dialog.modesDialogEventLogger
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
@@ -62,6 +60,7 @@ class ModesTileUserActionInteractorTest : SysuiTestCase() {
private val underTest =
ModesTileUserActionInteractor(
+ kosmos.mainCoroutineContext,
inputHandler,
mockDialogDelegate,
zenModeInteractor,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/notes/domain/interactor/NotesTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/notes/domain/interactor/NotesTileDataInteractorTest.kt
index 35d6d5adc3f4..4786fc40562a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/notes/domain/interactor/NotesTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/notes/domain/interactor/NotesTileDataInteractorTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.testScope
import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.toCollection
import kotlinx.coroutines.test.runCurrent
@@ -36,7 +35,6 @@ import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class NotesTileDataInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/onehanded/domain/interactor/OneHandedModeTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/onehanded/domain/interactor/OneHandedModeTileDataInteractorTest.kt
index 0761ee734830..59eb069a5f3b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/onehanded/domain/interactor/OneHandedModeTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/onehanded/domain/interactor/OneHandedModeTileDataInteractorTest.kt
@@ -27,14 +27,12 @@ import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger
import com.android.systemui.qs.tiles.impl.onehanded.domain.OneHandedModeTileDataInteractor
import com.android.wm.shell.onehanded.OneHanded
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class OneHandedModeTileDataInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileDataInteractorTest.kt
index a5f98a739b49..dc3248d42d62 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileDataInteractorTest.kt
@@ -28,14 +28,12 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger
import com.android.systemui.qs.tiles.impl.reducebrightness.domain.model.ReduceBrightColorsTileModel
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/rotation/domain/interactor/RotationLockTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/rotation/domain/interactor/RotationLockTileDataInteractorTest.kt
index 266875e9e12a..283fa601f8df 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/rotation/domain/interactor/RotationLockTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/rotation/domain/interactor/RotationLockTileDataInteractorTest.kt
@@ -36,7 +36,6 @@ import com.android.systemui.util.mockito.whenever
import com.android.systemui.utils.leaks.FakeBatteryController
import com.android.systemui.utils.leaks.FakeRotationLockController
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.toCollection
import kotlinx.coroutines.test.runCurrent
@@ -45,7 +44,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/saver/domain/interactor/DataSaverTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/saver/domain/interactor/DataSaverTileDataInteractorTest.kt
index daee22d0c45c..c286ea7a5062 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/saver/domain/interactor/DataSaverTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/saver/domain/interactor/DataSaverTileDataInteractorTest.kt
@@ -28,14 +28,12 @@ import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger
import com.android.systemui.qs.tiles.impl.saver.domain.model.DataSaverTileModel
import com.android.systemui.utils.leaks.FakeDataSaverController
import com.google.common.truth.Truth
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/screenrecord/domain/interactor/ScreenRecordTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/screenrecord/domain/interactor/ScreenRecordTileDataInteractorTest.kt
index 28f2a43c8f14..41174e7ca6af 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/screenrecord/domain/interactor/ScreenRecordTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/screenrecord/domain/interactor/ScreenRecordTileDataInteractorTest.kt
@@ -28,14 +28,12 @@ import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger
import com.android.systemui.screenrecord.data.model.ScreenRecordModel
import com.android.systemui.screenrecord.data.repository.screenRecordRepository
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/sensorprivacy/domain/interactor/SensorPrivacyToggleTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/sensorprivacy/domain/interactor/SensorPrivacyToggleTileDataInteractorTest.kt
index d0cd56fce778..6c7bb1b46c36 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/sensorprivacy/domain/interactor/SensorPrivacyToggleTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/sensorprivacy/domain/interactor/SensorPrivacyToggleTileDataInteractorTest.kt
@@ -32,7 +32,6 @@ import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.toCollection
import kotlinx.coroutines.test.runCurrent
@@ -42,7 +41,6 @@ import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.eq
import org.mockito.Mockito.verify
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class SensorPrivacyToggleTileDataInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/UiModeNightTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/UiModeNightTileDataInteractorTest.kt
index 46e1609b02ad..96538b730354 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/UiModeNightTileDataInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/UiModeNightTileDataInteractorTest.kt
@@ -39,7 +39,6 @@ import com.android.systemui.utils.leaks.FakeBatteryController
import com.android.systemui.utils.leaks.FakeLocationController
import com.google.common.truth.Truth.assertThat
import java.time.LocalTime
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -49,7 +48,6 @@ import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.verify
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class UiModeNightTileDataInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelTest.kt
index 2edb9c60711b..0598a8b9d058 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelTest.kt
@@ -37,7 +37,6 @@ import com.android.systemui.user.data.repository.FakeUserRepository
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
@@ -53,7 +52,6 @@ import org.mockito.MockitoAnnotations
@MediumTest
@EnabledOnRavenwood
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class QSTileViewModelTest : SysuiTestCase() {
@Mock private lateinit var qsTileLogger: QSTileLogger
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelUserInputTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelUserInputTest.kt
index 0219a4c58dcf..ece21e1bef66 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelUserInputTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelUserInputTest.kt
@@ -37,7 +37,6 @@ import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
@@ -54,7 +53,6 @@ import org.mockito.MockitoAnnotations
/** Tests all possible [QSTileUserAction]s. If you need */
@MediumTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class QSTileViewModelUserInputTest : SysuiTestCase() {
@Mock private lateinit var qsTileLogger: QSTileLogger
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt
index 8769022f3aa8..a8b005fb6554 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/adapter/QSSceneAdapterImplTest.kt
@@ -39,7 +39,7 @@ import com.android.systemui.qs.dagger.QSComponent
import com.android.systemui.qs.dagger.QSSceneComponent
import com.android.systemui.settings.brightness.MirrorController
import com.android.systemui.shade.data.repository.fakeShadeRepository
-import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.shade.domain.interactor.shadeModeInteractor
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.capture
@@ -50,7 +50,6 @@ import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import java.util.Locale
import javax.inject.Provider
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
@@ -64,7 +63,6 @@ import org.mockito.Mockito.verify
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class QSSceneAdapterImplTest : SysuiTestCase() {
private val kosmos = Kosmos().apply { testCase = this@QSSceneAdapterImplTest }
@@ -118,16 +116,14 @@ class QSSceneAdapterImplTest : SysuiTestCase() {
}
}
- private val shadeInteractor = kosmos.shadeInteractor
- private val displayStateInteractor = kosmos.displayStateInteractor
private val dumpManager = mock<DumpManager>()
private val underTest =
QSSceneAdapterImpl(
qsSceneComponentFactory,
qsImplProvider,
- shadeInteractor,
- displayStateInteractor,
+ kosmos.shadeModeInteractor,
+ kosmos.displayStateInteractor,
dumpManager,
testDispatcher,
testScope.backgroundScope,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModelTest.kt
new file mode 100644
index 000000000000..6e26fa119888
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModelTest.kt
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.qs.ui.viewmodel
+
+import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.flags.EnableSceneContainer
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.lifecycle.activateIn
+import com.android.systemui.qs.composefragment.dagger.usingMediaInComposeFragment
+import com.android.systemui.scene.domain.startable.sceneContainerStartable
+import com.android.systemui.shade.domain.interactor.enableDualShade
+import com.android.systemui.shade.domain.interactor.shadeModeInteractor
+import com.android.systemui.testKosmos
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+@TestableLooper.RunWithLooper
+@EnableSceneContainer
+class QuickSettingsContainerViewModelTest : SysuiTestCase() {
+
+ private val kosmos =
+ testKosmos().apply {
+ usingMediaInComposeFragment = false // This is not for the compose fragment
+ }
+ private val testScope = kosmos.testScope
+
+ private val shadeModeInteractor = kosmos.shadeModeInteractor
+
+ private val underTest by lazy {
+ kosmos.quickSettingsContainerViewModelFactory.create(supportsBrightnessMirroring = false)
+ }
+
+ @Before
+ fun setUp() {
+ kosmos.sceneContainerStartable.start()
+ kosmos.enableDualShade()
+ underTest.activateIn(testScope)
+ }
+
+ @Test
+ fun showHeader_showsOnNarrowScreen() =
+ testScope.runTest {
+ kosmos.enableDualShade(wideLayout = false)
+ val isShadeLayoutWide by collectLastValue(shadeModeInteractor.isShadeLayoutWide)
+ assertThat(isShadeLayoutWide).isFalse()
+
+ assertThat(underTest.showHeader).isTrue()
+ }
+
+ @Test
+ fun showHeader_hidesOnWideScreen() =
+ testScope.runTest {
+ kosmos.enableDualShade(wideLayout = true)
+ val isShadeLayoutWide by collectLastValue(shadeModeInteractor.isShadeLayoutWide)
+ assertThat(isShadeLayoutWide).isTrue()
+
+ assertThat(underTest.showHeader).isFalse()
+ }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneContentViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneContentViewModelTest.kt
index e2d33b6fd3cc..b36c111904b9 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneContentViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneContentViewModelTest.kt
@@ -16,7 +16,6 @@
package com.android.systemui.qs.ui.viewmodel
-import android.platform.test.annotations.DisableFlags
import android.testing.TestableLooper.RunWithLooper
import androidx.lifecycle.LifecycleOwner
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -39,13 +38,15 @@ import com.android.systemui.scene.domain.startable.sceneContainerStartable
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.settings.brightness.ui.viewmodel.brightnessMirrorViewModelFactory
import com.android.systemui.shade.data.repository.shadeRepository
-import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.shade.domain.interactor.disableDualShade
+import com.android.systemui.shade.domain.interactor.shadeModeInteractor
import com.android.systemui.shade.ui.viewmodel.shadeHeaderViewModelFactory
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -54,11 +55,11 @@ import org.junit.runner.RunWith
import org.mockito.Mockito.times
import org.mockito.Mockito.verify
+@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@RunWithLooper
@EnableSceneContainer
-@DisableFlags(com.android.systemui.Flags.FLAG_DUAL_SHADE)
class QuickSettingsSceneContentViewModelTest : SysuiTestCase() {
private val kosmos = testKosmos()
@@ -73,7 +74,6 @@ class QuickSettingsSceneContentViewModelTest : SysuiTestCase() {
private val sceneContainerStartable = kosmos.sceneContainerStartable
private val sceneInteractor by lazy { kosmos.sceneInteractor }
- private val shadeInteractor by lazy { kosmos.shadeInteractor }
private lateinit var underTest: QuickSettingsSceneContentViewModel
@@ -90,10 +90,11 @@ class QuickSettingsSceneContentViewModelTest : SysuiTestCase() {
footerActionsViewModelFactory = footerActionsViewModelFactory,
footerActionsController = footerActionsController,
mediaCarouselInteractor = kosmos.mediaCarouselInteractor,
- shadeInteractor = shadeInteractor,
+ shadeModeInteractor = kosmos.shadeModeInteractor,
sceneInteractor = sceneInteractor,
)
underTest.activateIn(testScope)
+ kosmos.disableDualShade()
}
@Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModelTest.kt
index 01714d7a4b87..ec0596515efd 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModelTest.kt
@@ -42,7 +42,6 @@ import com.android.systemui.statusbar.notification.stack.shared.model.ShadeScrim
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.notificationScrollViewModel
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -50,7 +49,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper
@@ -127,24 +125,6 @@ class QuickSettingsShadeOverlayContentViewModelTest : SysuiTestCase() {
}
@Test
- fun showHeader_showsOnNarrowScreen() =
- testScope.runTest {
- kosmos.enableDualShade(wideLayout = false)
- runCurrent()
-
- assertThat(underTest.showHeader).isTrue()
- }
-
- @Test
- fun showHeader_hidesOnWideScreen() =
- testScope.runTest {
- kosmos.enableDualShade(wideLayout = true)
- runCurrent()
-
- assertThat(underTest.showHeader).isFalse()
- }
-
- @Test
fun onPanelShapeChanged() =
testScope.runTest {
var actual: ShadeScrimShape? = null
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/recordissue/IssueRecordingServiceSessionTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/recordissue/IssueRecordingServiceSessionTest.kt
index f2e658dc3759..7bcaeabfee69 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/recordissue/IssueRecordingServiceSessionTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/recordissue/IssueRecordingServiceSessionTest.kt
@@ -38,6 +38,7 @@ import com.android.systemui.util.settings.fakeGlobalSettings
import com.android.traceur.TraceConfig
import com.google.common.truth.Truth
import org.junit.Before
+import org.junit.Ignore
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyInt
@@ -126,6 +127,7 @@ class IssueRecordingServiceSessionTest : SysuiTestCase() {
verify(iActivityManager).requestBugReportWithExtraAttachments(any())
}
+ @Ignore("b/392753499")
@Test
fun sharesTracesDirectly_afterReceivingShareCommand_withTakeBugreportFalse() {
underTest.takeBugReport = false
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/retail/data/repository/RetailModeSettingsRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/retail/data/repository/RetailModeSettingsRepositoryTest.kt
index 47bfda41c7ad..0d03247bcf59 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/retail/data/repository/RetailModeSettingsRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/retail/data/repository/RetailModeSettingsRepositoryTest.kt
@@ -24,7 +24,6 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.retail.data.repository.impl.RetailModeSettingsRepository
import com.android.systemui.util.settings.FakeGlobalSettings
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -32,7 +31,6 @@ import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class RetailModeSettingsRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt
index 3187cca6ca45..c5fac08a4b35 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.scene
import android.provider.Settings
@@ -70,7 +68,6 @@ import com.android.systemui.util.settings.data.repository.userAwareSecureSetting
import com.android.telecom.mockTelecomManager
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
@@ -98,7 +95,6 @@ import org.junit.runner.RunWith
* being used when the state is as required (e.g. cannot unlock an already unlocked device, cannot
* put to sleep a device that's already asleep, etc.).
*/
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@RunWithLooper
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/data/repository/SceneContainerRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/data/repository/SceneContainerRepositoryTest.kt
index 227b3a610188..4c6ab8b70ca3 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/data/repository/SceneContainerRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/data/repository/SceneContainerRepositoryTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.scene.data.repository
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -31,7 +29,6 @@ import com.android.systemui.scene.sceneKeys
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runTest
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneBackInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneBackInteractorTest.kt
index 405cfd38d49a..9cc6c0fa801a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneBackInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneBackInteractorTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.scene.domain.interactor
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -35,7 +33,6 @@ import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneContainerOcclusionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneContainerOcclusionInteractorTest.kt
index 707cd0493e36..0192b5bc6ac0 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneContainerOcclusionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneContainerOcclusionInteractorTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.scene.domain.interactor
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -41,7 +39,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.TestScope
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt
index de54e75281aa..fd485edec117 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.scene.domain.interactor
import android.app.StatusBarManager
@@ -50,7 +48,6 @@ import com.android.systemui.statusbar.disableflags.data.repository.fakeDisableFl
import com.android.systemui.statusbar.disableflags.shared.model.DisableFlagsModel
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.flowOf
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/KeyguardStateCallbackStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/KeyguardStateCallbackStartableTest.kt
index 695edafefdf3..590aaeec5f87 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/KeyguardStateCallbackStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/KeyguardStateCallbackStartableTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.scene.domain.startable
import android.content.pm.UserInfo
@@ -37,7 +35,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.user.data.repository.fakeUserRepository
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/SceneContainerStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/SceneContainerStartableTest.kt
index af30e435da73..33733103053e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/SceneContainerStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/SceneContainerStartableTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.scene.domain.startable
import android.app.StatusBarManager
@@ -124,7 +122,6 @@ import com.android.systemui.util.mockito.mock
import com.android.systemui.util.settings.data.repository.userAwareSecureSettingsRepository
import com.google.android.msdl.data.model.MSDLToken
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.map
@@ -2697,6 +2694,34 @@ class SceneContainerStartableTest : SysuiTestCase() {
assertThat(isVisible).isFalse()
}
+ @Test
+ fun deviceLocks_whenNoLongerTrusted_whileDeviceNotEntered() =
+ testScope.runTest {
+ prepareState(isDeviceUnlocked = true, initialSceneKey = Scenes.Gone)
+ underTest.start()
+
+ val isDeviceEntered by collectLastValue(kosmos.deviceEntryInteractor.isDeviceEntered)
+ val deviceUnlockStatus by
+ collectLastValue(kosmos.deviceUnlockedInteractor.deviceUnlockStatus)
+ val currentScene by collectLastValue(kosmos.sceneInteractor.currentScene)
+ assertThat(isDeviceEntered).isTrue()
+ assertThat(deviceUnlockStatus?.isUnlocked).isTrue()
+ assertThat(currentScene).isEqualTo(Scenes.Gone)
+ kosmos.fakeTrustRepository.setCurrentUserTrusted(true)
+ kosmos.sceneInteractor.changeScene(Scenes.Lockscreen, "reason")
+ runCurrent()
+ assertThat(isDeviceEntered).isFalse()
+ assertThat(deviceUnlockStatus?.isUnlocked).isTrue()
+ assertThat(currentScene).isEqualTo(Scenes.Lockscreen)
+
+ kosmos.fakeTrustRepository.setCurrentUserTrusted(false)
+ runCurrent()
+
+ assertThat(isDeviceEntered).isFalse()
+ assertThat(deviceUnlockStatus?.isUnlocked).isFalse()
+ assertThat(currentScene).isEqualTo(Scenes.Lockscreen)
+ }
+
private fun TestScope.emulateSceneTransition(
transitionStateFlow: MutableStateFlow<ObservableTransitionState>,
toScene: SceneKey,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/ScrimStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/ScrimStartableTest.kt
index 0e90afe2ebcd..572bc4dc4247 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/ScrimStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/ScrimStartableTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.scene.domain.startable
import androidx.test.filters.SmallTest
@@ -47,7 +45,6 @@ import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
import kotlin.reflect.full.memberProperties
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/StatusBarStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/StatusBarStartableTest.kt
index 9601f20add8e..99146d8b1267 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/StatusBarStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/StatusBarStartableTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.scene.domain.startable
import android.app.StatusBarManager
@@ -49,7 +47,6 @@ import com.android.systemui.util.fakeDeviceConfigProxy
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
import kotlin.reflect.full.memberProperties
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModelTest.kt
index 048dd66ae1da..0647db40e483 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModelTest.kt
@@ -33,17 +33,15 @@ import com.android.systemui.scene.shared.model.TransitionKeys.ToSplitShade
import com.android.systemui.shade.domain.interactor.enableDualShade
import com.android.systemui.shade.domain.interactor.enableSingleShade
import com.android.systemui.shade.domain.interactor.enableSplitShade
-import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.shade.domain.interactor.shadeModeInteractor
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper
@@ -56,7 +54,7 @@ class GoneUserActionsViewModelTest : SysuiTestCase() {
@Before
fun setUp() {
- underTest = GoneUserActionsViewModel(shadeInteractor = kosmos.shadeInteractor)
+ underTest = GoneUserActionsViewModel(shadeModeInteractor = kosmos.shadeModeInteractor)
underTest.activateIn(testScope)
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerHapticsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerHapticsViewModelTest.kt
index ca9500b5d74b..7330b517ba67 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerHapticsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerHapticsViewModelTest.kt
@@ -37,10 +37,11 @@ import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.sceneContainerHapticsViewModelFactory
import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.shade.domain.interactor.disableDualShade
+import com.android.systemui.shade.domain.interactor.enableDualShade
import com.android.systemui.testKosmos
import com.google.android.msdl.data.model.MSDLToken
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runCurrent
@@ -53,11 +54,10 @@ import org.mockito.kotlin.mock
import org.mockito.kotlin.verify
import org.mockito.kotlin.verifyNoMoreInteractions
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@EnableSceneContainer
-class SceneContainerHapticsViewModelTest() : SysuiTestCase() {
+class SceneContainerHapticsViewModelTest : SysuiTestCase() {
private val kosmos = testKosmos()
private val testScope = kosmos.testScope
@@ -74,10 +74,10 @@ class SceneContainerHapticsViewModelTest() : SysuiTestCase() {
}
@EnableFlags(Flags.FLAG_MSDL_FEEDBACK)
- @DisableFlags(Flags.FLAG_DUAL_SHADE)
@Test
fun onValidSceneTransition_withMSDL_playsMSDLShadePullHaptics() =
testScope.runTest {
+ kosmos.disableDualShade()
// GIVEN a valid scene transition to play haptics
val validTransition = createTransitionState(from = Scenes.Gone, to = Scenes.Shade)
@@ -91,10 +91,10 @@ class SceneContainerHapticsViewModelTest() : SysuiTestCase() {
}
@EnableFlags(Flags.FLAG_MSDL_FEEDBACK)
- @DisableFlags(Flags.FLAG_DUAL_SHADE)
@Test
fun onInValidSceneTransition_withMSDL_doesNotPlayMSDLShadePullHaptics() =
testScope.runTest {
+ kosmos.disableDualShade()
// GIVEN an invalid scene transition to play haptics
val invalidTransition = createTransitionState(from = Scenes.Shade, to = Scenes.Gone)
@@ -107,10 +107,11 @@ class SceneContainerHapticsViewModelTest() : SysuiTestCase() {
assertThat(msdlPlayer.latestPropertiesPlayed).isNull()
}
- @DisableFlags(Flags.FLAG_DUAL_SHADE, Flags.FLAG_MSDL_FEEDBACK)
+ @DisableFlags(Flags.FLAG_MSDL_FEEDBACK)
@Test
fun onValidSceneTransition_withoutMSDL_playsHapticConstantForShadePullHaptics() =
testScope.runTest {
+ kosmos.disableDualShade()
// GIVEN a valid scene transition to play haptics
val validTransition = createTransitionState(from = Scenes.Gone, to = Scenes.Shade)
@@ -122,10 +123,11 @@ class SceneContainerHapticsViewModelTest() : SysuiTestCase() {
verify(view).performHapticFeedback(eq(HapticFeedbackConstants.GESTURE_START))
}
- @DisableFlags(Flags.FLAG_DUAL_SHADE, Flags.FLAG_MSDL_FEEDBACK)
+ @DisableFlags(Flags.FLAG_MSDL_FEEDBACK)
@Test
fun onInValidSceneTransition_withoutMSDL_doesNotPlayHapticConstantForShadePullHaptics() =
testScope.runTest {
+ kosmos.disableDualShade()
// GIVEN an invalid scene transition to play haptics
val invalidTransition = createTransitionState(from = Scenes.Shade, to = Scenes.Gone)
@@ -137,10 +139,11 @@ class SceneContainerHapticsViewModelTest() : SysuiTestCase() {
verifyNoMoreInteractions(view)
}
- @EnableFlags(Flags.FLAG_MSDL_FEEDBACK, Flags.FLAG_DUAL_SHADE)
+ @EnableFlags(Flags.FLAG_MSDL_FEEDBACK)
@Test
fun onValidOverlayTransition_withMSDL_playsMSDLShadePullHaptics() =
testScope.runTest {
+ kosmos.enableDualShade()
// GIVEN a valid scene transition to play haptics
val validTransition =
createTransitionState(from = Scenes.Gone, to = Overlays.NotificationsShade)
@@ -154,10 +157,11 @@ class SceneContainerHapticsViewModelTest() : SysuiTestCase() {
assertThat(msdlPlayer.latestPropertiesPlayed).isNull()
}
- @EnableFlags(Flags.FLAG_MSDL_FEEDBACK, Flags.FLAG_DUAL_SHADE)
+ @EnableFlags(Flags.FLAG_MSDL_FEEDBACK)
@Test
fun onInValidOverlayTransition_withMSDL_doesNotPlayMSDLShadePullHaptics() =
testScope.runTest {
+ kosmos.enableDualShade()
// GIVEN an invalid scene transition to play haptics
val invalidTransition =
createTransitionState(from = Scenes.Bouncer, to = Overlays.NotificationsShade)
@@ -171,11 +175,11 @@ class SceneContainerHapticsViewModelTest() : SysuiTestCase() {
assertThat(msdlPlayer.latestPropertiesPlayed).isNull()
}
- @EnableFlags(Flags.FLAG_DUAL_SHADE)
@DisableFlags(Flags.FLAG_MSDL_FEEDBACK)
@Test
fun onValidOverlayTransition_withoutMSDL_playsHapticConstantForShadePullHaptics() =
testScope.runTest {
+ kosmos.enableDualShade()
// GIVEN a valid scene transition to play haptics
val validTransition =
createTransitionState(from = Scenes.Gone, to = Overlays.NotificationsShade)
@@ -188,11 +192,11 @@ class SceneContainerHapticsViewModelTest() : SysuiTestCase() {
verify(view).performHapticFeedback(eq(HapticFeedbackConstants.GESTURE_START))
}
- @EnableFlags(Flags.FLAG_DUAL_SHADE)
@DisableFlags(Flags.FLAG_MSDL_FEEDBACK)
@Test
fun onInValidOverlayTransition_withoutMSDL_doesNotPlayHapticConstantForShadePullHaptics() =
testScope.runTest {
+ kosmos.enableDualShade()
// GIVEN an invalid scene transition to play haptics
val invalidTransition =
createTransitionState(from = Scenes.Bouncer, to = Overlays.NotificationsShade)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModelTest.kt
index 399b48fb2fb9..30d9f73d7441 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModelTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.scene.ui.viewmodel
import android.view.MotionEvent
@@ -42,7 +40,7 @@ import com.android.systemui.scene.shared.model.fakeSceneDataSource
import com.android.systemui.shade.domain.interactor.enableDualShade
import com.android.systemui.shade.domain.interactor.enableSingleShade
import com.android.systemui.shade.domain.interactor.enableSplitShade
-import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.shade.domain.interactor.shadeMode
import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.statusbar.data.repository.fakeRemoteInputRepository
import com.android.systemui.testKosmos
@@ -50,7 +48,6 @@ import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -58,7 +55,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@EnableSceneContainer
@@ -324,7 +320,7 @@ class SceneContainerViewModelTest : SysuiTestCase() {
@Test
fun edgeDetector_singleShade_usesDefaultEdgeDetector() =
testScope.runTest {
- val shadeMode by collectLastValue(kosmos.shadeInteractor.shadeMode)
+ val shadeMode by collectLastValue(kosmos.shadeMode)
kosmos.enableSingleShade()
assertThat(shadeMode).isEqualTo(ShadeMode.Single)
@@ -334,7 +330,7 @@ class SceneContainerViewModelTest : SysuiTestCase() {
@Test
fun edgeDetector_splitShade_usesDefaultEdgeDetector() =
testScope.runTest {
- val shadeMode by collectLastValue(kosmos.shadeInteractor.shadeMode)
+ val shadeMode by collectLastValue(kosmos.shadeMode)
kosmos.enableSplitShade()
assertThat(shadeMode).isEqualTo(ShadeMode.Split)
@@ -344,7 +340,7 @@ class SceneContainerViewModelTest : SysuiTestCase() {
@Test
fun edgeDetector_dualShade_narrowScreen_usesSplitEdgeDetector() =
testScope.runTest {
- val shadeMode by collectLastValue(kosmos.shadeInteractor.shadeMode)
+ val shadeMode by collectLastValue(kosmos.shadeMode)
kosmos.enableDualShade(wideLayout = false)
assertThat(shadeMode).isEqualTo(ShadeMode.Dual)
@@ -354,7 +350,7 @@ class SceneContainerViewModelTest : SysuiTestCase() {
@Test
fun edgeDetector_dualShade_wideScreen_usesSplitEdgeDetector() =
testScope.runTest {
- val shadeMode by collectLastValue(kosmos.shadeInteractor.shadeMode)
+ val shadeMode by collectLastValue(kosmos.shadeMode)
kosmos.enableDualShade(wideLayout = true)
assertThat(shadeMode).isEqualTo(ShadeMode.Dual)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/UserActionsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/UserActionsViewModelTest.kt
index d5f57da40e5a..c42a46c0490e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/UserActionsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/UserActionsViewModelTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.scene.ui.viewmodel
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -31,7 +29,6 @@ import com.android.systemui.lifecycle.activateIn
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.runCurrent
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenrecord/data/repository/ScreenRecordRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/screenrecord/data/repository/ScreenRecordRepositoryTest.kt
index ade5941d010d..9724974e3044 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenrecord/data/repository/ScreenRecordRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/screenrecord/data/repository/ScreenRecordRepositoryTest.kt
@@ -26,7 +26,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.screenrecord.RecordingController
import com.android.systemui.screenrecord.data.model.ScreenRecordModel
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
@@ -38,7 +37,6 @@ import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class ScreenRecordRepositoryTest : SysuiTestCase() {
private val kosmos = Kosmos()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/MessageContainerControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/MessageContainerControllerTest.kt
index 4000d6cde2fd..0da01fc4e07c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/MessageContainerControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/MessageContainerControllerTest.kt
@@ -16,7 +16,6 @@ import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.whenever
import junit.framework.Assert.assertEquals
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
@@ -53,7 +52,6 @@ class MessageContainerControllerTest : SysuiTestCase() {
lateinit var workProfileData: WorkProfileMessageController.WorkProfileFirstRunData
@Before
- @ExperimentalCoroutinesApi
fun setup() {
MockitoAnnotations.initMocks(this)
messageContainer =
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/ScreenshotSoundControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/ScreenshotSoundControllerTest.kt
index 5987e74e02ec..ccf419f844f6 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/ScreenshotSoundControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/ScreenshotSoundControllerTest.kt
@@ -23,7 +23,6 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import java.lang.IllegalStateException
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.advanceUntilIdle
@@ -35,7 +34,6 @@ import org.mockito.Mockito.never
import org.mockito.Mockito.verify
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class ScreenshotSoundControllerTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/appclips/AppClipsServiceTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/appclips/AppClipsServiceTest.java
index d8897e9048c3..81301b3886f1 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/appclips/AppClipsServiceTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/appclips/AppClipsServiceTest.java
@@ -183,14 +183,14 @@ public final class AppClipsServiceTest extends SysuiTestCase {
when(mFeatureFlags.isEnabled(SCREENSHOT_APP_CLIPS)).thenReturn(true);
when(mOptionalBubbles.isEmpty()).thenReturn(false);
when(mOptionalBubbles.get()).thenReturn(mBubbles);
- when(mBubbles.isAppBubbleTaskId(eq((FAKE_TASK_ID)))).thenReturn(false);
+ when(mBubbles.isNoteBubbleTaskId(eq((FAKE_TASK_ID)))).thenReturn(false);
}
private void mockForScreenshotBlocked() {
when(mFeatureFlags.isEnabled(SCREENSHOT_APP_CLIPS)).thenReturn(true);
when(mOptionalBubbles.isEmpty()).thenReturn(false);
when(mOptionalBubbles.get()).thenReturn(mBubbles);
- when(mBubbles.isAppBubbleTaskId(eq((FAKE_TASK_ID)))).thenReturn(true);
+ when(mBubbles.isNoteBubbleTaskId(eq((FAKE_TASK_ID)))).thenReturn(true);
when(mDevicePolicyManager.getScreenCaptureDisabled(eq(null))).thenReturn(true);
}
@@ -199,7 +199,7 @@ public final class AppClipsServiceTest extends SysuiTestCase {
when(mFeatureFlags.isEnabled(SCREENSHOT_APP_CLIPS)).thenReturn(true);
when(mOptionalBubbles.isEmpty()).thenReturn(false);
when(mOptionalBubbles.get()).thenReturn(mBubbles);
- when(mBubbles.isAppBubbleTaskId(eq((FAKE_TASK_ID)))).thenReturn(true);
+ when(mBubbles.isNoteBubbleTaskId(eq((FAKE_TASK_ID)))).thenReturn(true);
when(mDevicePolicyManager.getScreenCaptureDisabled(eq(null))).thenReturn(false);
}
@@ -208,7 +208,7 @@ public final class AppClipsServiceTest extends SysuiTestCase {
when(mFeatureFlags.isEnabled(SCREENSHOT_APP_CLIPS)).thenReturn(true);
when(mOptionalBubbles.isEmpty()).thenReturn(false);
when(mOptionalBubbles.get()).thenReturn(mBubbles);
- when(mBubbles.isAppBubbleTaskId(eq((FAKE_TASK_ID)))).thenReturn(true);
+ when(mBubbles.isNoteBubbleTaskId(eq((FAKE_TASK_ID)))).thenReturn(true);
when(mDevicePolicyManager.getScreenCaptureDisabled(eq(null))).thenReturn(false);
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
index 62c360400582..79fc999e1b50 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
@@ -70,7 +70,7 @@ import com.android.systemui.SysuiTestCase;
import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor;
import com.android.systemui.classifier.FalsingCollectorFake;
import com.android.systemui.classifier.FalsingManagerFake;
-import com.android.systemui.common.ui.view.LongPressHandlingView;
+import com.android.systemui.common.ui.view.TouchHandlingView;
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryFaceAuthInteractor;
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryUdfpsInteractor;
import com.android.systemui.doze.DozeLog;
@@ -167,6 +167,7 @@ import com.android.systemui.user.domain.interactor.UserSwitcherInteractor;
import com.android.systemui.util.kotlin.JavaAdapter;
import com.android.systemui.util.time.FakeSystemClock;
import com.android.systemui.util.time.SystemClock;
+import com.android.systemui.wallpapers.ui.viewmodel.WallpaperFocalAreaViewModel;
import com.android.wm.shell.animation.FlingAnimationUtils;
import dagger.Lazy;
@@ -270,6 +271,7 @@ public class NotificationPanelViewControllerBaseTest extends SysuiTestCase {
mDreamingToLockscreenTransitionViewModel;
@Mock protected KeyguardTransitionInteractor mKeyguardTransitionInteractor;
@Mock protected KeyguardTouchHandlingViewModel mKeyuardTouchHandlingViewModel;
+ @Mock protected WallpaperFocalAreaViewModel mWallpaperFocalAreaViewModel;
@Mock protected AlternateBouncerInteractor mAlternateBouncerInteractor;
@Mock protected MotionEvent mDownMotionEvent;
@Mock protected CoroutineDispatcher mMainDispatcher;
@@ -375,7 +377,6 @@ public class NotificationPanelViewControllerBaseTest extends SysuiTestCase {
SystemClock systemClock = new FakeSystemClock();
mStatusBarStateController = new StatusBarStateControllerImpl(
mUiEventLogger,
- () -> mKosmos.getInteractionJankMonitor(),
mJavaAdapter,
() -> mKeyguardInteractor,
() -> mKeyguardTransitionInteractor,
@@ -456,7 +457,6 @@ public class NotificationPanelViewControllerBaseTest extends SysuiTestCase {
mock(HeadsUpManager.class),
new StatusBarStateControllerImpl(
new UiEventLoggerFake(),
- () -> mKosmos.getInteractionJankMonitor(),
mJavaAdapter,
() -> mKeyguardInteractor,
() -> mKeyguardTransitionInteractor,
@@ -518,12 +518,12 @@ public class NotificationPanelViewControllerBaseTest extends SysuiTestCase {
mMainHandler = new Handler(Looper.getMainLooper());
- LongPressHandlingView longPressHandlingView = mock(LongPressHandlingView.class);
+ TouchHandlingView touchHandlingView = mock(TouchHandlingView.class);
when(mView.requireViewById(R.id.keyguard_long_press))
- .thenReturn(longPressHandlingView);
+ .thenReturn(touchHandlingView);
Resources longPressHandlingViewRes = mock(Resources.class);
- when(longPressHandlingView.getResources()).thenReturn(longPressHandlingViewRes);
+ when(touchHandlingView.getResources()).thenReturn(longPressHandlingViewRes);
when(longPressHandlingViewRes.getString(anyInt())).thenReturn("");
mNotificationPanelViewController = new NotificationPanelViewController(
@@ -576,6 +576,7 @@ public class NotificationPanelViewControllerBaseTest extends SysuiTestCase {
mKeyguardTransitionInteractor,
mDumpManager,
mKeyuardTouchHandlingViewModel,
+ mWallpaperFocalAreaViewModel,
mKeyguardInteractor,
mActivityStarter,
mSharedNotificationContainerInteractor,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.kt
index 93d1f593e81f..a8b48363fe07 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.kt
@@ -75,7 +75,6 @@ import com.android.systemui.util.time.FakeSystemClock
import com.android.systemui.window.ui.viewmodel.WindowRootViewModel
import com.google.common.truth.Truth.assertThat
import java.util.Optional
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
@@ -93,7 +92,6 @@ import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
import org.mockito.kotlin.eq
-@ExperimentalCoroutinesApi
@RunWith(AndroidJUnit4::class)
@RunWithLooper(setAsMainLooper = true)
@SmallTest
@@ -251,15 +249,6 @@ class NotificationShadeWindowViewTest : SysuiTestCase() {
@Test
@EnableFlags(AConfigFlags.FLAG_SHADE_WINDOW_GOES_AROUND)
- fun onConfigurationChanged_configForwarderSet_propagatesConfig() {
- val config = Configuration()
- underTest.onConfigurationChanged(config)
-
- verify(configurationForwarder).onConfigurationChanged(eq(config))
- }
-
- @Test
- @EnableFlags(AConfigFlags.FLAG_SHADE_WINDOW_GOES_AROUND)
fun onMovedToDisplay_configForwarderSet_propagatesConfig() {
val config = Configuration()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/QuickSettingsControllerImplWithCoroutinesTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/QuickSettingsControllerImplWithCoroutinesTest.kt
index ee3f8016c410..6b5f17678f9e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/QuickSettingsControllerImplWithCoroutinesTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/QuickSettingsControllerImplWithCoroutinesTest.kt
@@ -21,7 +21,6 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.statusbar.disableflags.shared.model.DisableFlagsModel
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.cancelChildren
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -29,7 +28,6 @@ import org.junit.Test
import org.junit.runner.RunWith
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class QuickSettingsControllerImplWithCoroutinesTest : QuickSettingsControllerImplBaseTest() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ShadeControllerSceneImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ShadeControllerSceneImplTest.kt
index 420418b60d07..054c1b8207eb 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ShadeControllerSceneImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ShadeControllerSceneImplTest.kt
@@ -37,7 +37,6 @@ import com.android.systemui.shade.domain.interactor.shadeInteractor
import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -49,7 +48,6 @@ import org.mockito.Mockito.never
import org.mockito.Mockito.times
import org.mockito.Mockito.verify
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
@EnableSceneContainer
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ShadeDisplayChangeLatencyTrackerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ShadeDisplayChangeLatencyTrackerTest.kt
index 56356b4489f8..487f2c7dbd25 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ShadeDisplayChangeLatencyTrackerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ShadeDisplayChangeLatencyTrackerTest.kt
@@ -27,7 +27,6 @@ import com.android.systemui.kosmos.useUnconfinedTestDispatcher
import com.android.systemui.testKosmos
import kotlin.test.Test
import kotlin.time.Duration.Companion.seconds
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.runTest
import org.junit.runner.RunWith
@@ -61,7 +60,6 @@ class ShadeDisplayChangeLatencyTrackerTest : SysuiTestCase() {
verify(latencyTracker).onActionEnd(any())
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun onChange_doFrameTimesOut_previousCancelled() =
testScope.runTest {
@@ -77,7 +75,6 @@ class ShadeDisplayChangeLatencyTrackerTest : SysuiTestCase() {
verify(latencyTracker).onActionCancel(any())
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun onChange_onMovedToDisplayTimesOut_cancelled() =
testScope.runTest {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/data/repository/PrivacyChipRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/data/repository/PrivacyChipRepositoryTest.kt
index 613f256113f3..2f455267c7c0 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/data/repository/PrivacyChipRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/data/repository/PrivacyChipRepositoryTest.kt
@@ -36,7 +36,6 @@ import com.android.systemui.util.mockito.kotlinArgumentCaptor
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.mockito.withArgCaptor
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -47,7 +46,6 @@ import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations.initMocks
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class PrivacyChipRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/data/repository/ShadeDisplaysRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/data/repository/ShadeDisplaysRepositoryTest.kt
index 4f332d4bbed8..35368ca8734d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/data/repository/ShadeDisplaysRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/data/repository/ShadeDisplaysRepositoryTest.kt
@@ -32,6 +32,7 @@ import com.android.systemui.kosmos.useUnconfinedTestDispatcher
import com.android.systemui.shade.display.AnyExternalShadeDisplayPolicy
import com.android.systemui.shade.display.DefaultDisplayShadePolicy
import com.android.systemui.shade.display.FakeShadeDisplayPolicy
+import com.android.systemui.shade.display.FocusShadeDisplayPolicy
import com.android.systemui.shade.display.StatusBarTouchShadeDisplayPolicy
import com.android.systemui.testKosmos
import com.android.systemui.util.settings.fakeGlobalSettings
@@ -108,7 +109,7 @@ class ShadeDisplaysRepositoryTest : SysuiTestCase() {
}
@Test
- fun policy_updatesBasedOnSettingValue_focusBased() =
+ fun policy_updatesBasedOnSettingValue_lastStatusBarTouch() =
testScope.runTest {
val underTest = createUnderTest()
globalSettings.putString(DEVELOPMENT_SHADE_DISPLAY_AWARENESS, "status_bar_latest_touch")
@@ -118,6 +119,15 @@ class ShadeDisplaysRepositoryTest : SysuiTestCase() {
}
@Test
+ fun policy_updatesBasedOnSettingValue_focusBased() =
+ testScope.runTest {
+ val underTest = createUnderTest()
+ globalSettings.putString(DEVELOPMENT_SHADE_DISPLAY_AWARENESS, "focused_display")
+
+ assertThat(underTest.currentPolicy).isInstanceOf(FocusShadeDisplayPolicy::class.java)
+ }
+
+ @Test
fun displayId_afterKeyguardHides_goesBackToPreviousDisplay() =
testScope.runTest {
val underTest = createUnderTest(shadeOnDefaultDisplayWhenLocked = true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/PanelExpansionInteractorImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/PanelExpansionInteractorImplTest.kt
index ba559b59c92e..1859e250c6ad 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/PanelExpansionInteractorImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/PanelExpansionInteractorImplTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.shade.domain.interactor
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -39,7 +37,6 @@ import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.shared.model.fakeSceneDataSource
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.TestScope
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/PrivacyChipInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/PrivacyChipInteractorTest.kt
index f0293a8efc8a..14f0a45d8700 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/PrivacyChipInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/PrivacyChipInteractorTest.kt
@@ -33,7 +33,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -44,7 +43,6 @@ import org.mockito.Mockito.never
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations.initMocks
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class PrivacyChipInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeAnimationInteractorSceneContainerImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeAnimationInteractorSceneContainerImplTest.kt
index b917014d4798..ca039ad02d8c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeAnimationInteractorSceneContainerImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeAnimationInteractorSceneContainerImplTest.kt
@@ -26,7 +26,6 @@ import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.google.common.truth.Truth
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runCurrent
@@ -34,7 +33,6 @@ import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class ShadeAnimationInteractorSceneContainerImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImplTest.kt
index fa4da42fb958..61777a4f4b0f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImplTest.kt
@@ -35,7 +35,6 @@ import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shared.recents.utilities.Utilities
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.test.TestScope
@@ -46,7 +45,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@EnableSceneContainer
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractorTest.kt
index 246283c236fe..0ad60b617194 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractorTest.kt
@@ -184,4 +184,11 @@ class ShadeDisplaysInteractorTest : SysuiTestCase() {
verify(notificationStackRebindingHider).setVisible(eq(true), eq(true))
}
+
+ @Test
+ fun start_registersConfigChangeListener() {
+ underTest.start()
+
+ verify(shadeContext).registerComponentCallbacks(any())
+ }
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImplTest.kt
index da652c4e1b5e..4ee62001bdf4 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImplTest.kt
@@ -47,7 +47,6 @@ import com.android.systemui.user.data.model.UserSwitcherSettingsModel
import com.android.systemui.user.data.repository.fakeUserRepository
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -56,7 +55,6 @@ import org.junit.runner.RunWith
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
class ShadeInteractorImplTest(flags: FlagsParameterization) : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorLegacyImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorLegacyImplTest.kt
index 238a1c1348b5..1e46f784ff8d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorLegacyImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorLegacyImplTest.kt
@@ -32,14 +32,12 @@ import com.android.systemui.shade.shadeTestUtil
import com.android.systemui.testKosmos
import com.android.systemui.user.data.repository.fakeUserRepository
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Assert.assertThrows
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@DisableSceneContainer
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorSceneContainerImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorSceneContainerImplTest.kt
index 5c9cf82574a1..508836e3b48b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorSceneContainerImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorSceneContainerImplTest.kt
@@ -35,7 +35,6 @@ import com.android.systemui.shade.shadeTestUtil
import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.TestScope
@@ -44,7 +43,6 @@ import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@EnableSceneContainer
@@ -597,7 +595,7 @@ class ShadeInteractorSceneContainerImplTest : SysuiTestCase() {
fun expandNotificationsShade_dualShade_opensOverlay() =
testScope.runTest {
kosmos.enableDualShade()
- val shadeMode by collectLastValue(kosmos.shadeModeInteractor.shadeMode)
+ val shadeMode by collectLastValue(kosmos.shadeMode)
val currentScene by collectLastValue(sceneInteractor.currentScene)
val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
assertThat(shadeMode).isEqualTo(ShadeMode.Dual)
@@ -614,7 +612,7 @@ class ShadeInteractorSceneContainerImplTest : SysuiTestCase() {
fun expandNotificationsShade_singleShade_switchesToShadeScene() =
testScope.runTest {
kosmos.enableSingleShade()
- val shadeMode by collectLastValue(kosmos.shadeModeInteractor.shadeMode)
+ val shadeMode by collectLastValue(kosmos.shadeMode)
val currentScene by collectLastValue(sceneInteractor.currentScene)
val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
assertThat(shadeMode).isEqualTo(ShadeMode.Single)
@@ -631,7 +629,7 @@ class ShadeInteractorSceneContainerImplTest : SysuiTestCase() {
fun expandNotificationsShade_dualShadeQuickSettingsOpen_replacesOverlay() =
testScope.runTest {
kosmos.enableDualShade()
- val shadeMode by collectLastValue(kosmos.shadeModeInteractor.shadeMode)
+ val shadeMode by collectLastValue(kosmos.shadeMode)
val currentScene by collectLastValue(sceneInteractor.currentScene)
val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
assertThat(shadeMode).isEqualTo(ShadeMode.Dual)
@@ -649,7 +647,7 @@ class ShadeInteractorSceneContainerImplTest : SysuiTestCase() {
fun expandQuickSettingsShade_dualShade_opensOverlay() =
testScope.runTest {
kosmos.enableDualShade()
- val shadeMode by collectLastValue(kosmos.shadeModeInteractor.shadeMode)
+ val shadeMode by collectLastValue(kosmos.shadeMode)
val currentScene by collectLastValue(sceneInteractor.currentScene)
val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
assertThat(shadeMode).isEqualTo(ShadeMode.Dual)
@@ -666,7 +664,7 @@ class ShadeInteractorSceneContainerImplTest : SysuiTestCase() {
fun expandQuickSettingsShade_singleShade_switchesToQuickSettingsScene() =
testScope.runTest {
kosmos.enableSingleShade()
- val shadeMode by collectLastValue(kosmos.shadeModeInteractor.shadeMode)
+ val shadeMode by collectLastValue(kosmos.shadeMode)
val currentScene by collectLastValue(sceneInteractor.currentScene)
val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
assertThat(shadeMode).isEqualTo(ShadeMode.Single)
@@ -683,7 +681,7 @@ class ShadeInteractorSceneContainerImplTest : SysuiTestCase() {
fun expandQuickSettingsShade_splitShade_switchesToShadeScene() =
testScope.runTest {
kosmos.enableSplitShade()
- val shadeMode by collectLastValue(kosmos.shadeModeInteractor.shadeMode)
+ val shadeMode by collectLastValue(kosmos.shadeMode)
val currentScene by collectLastValue(sceneInteractor.currentScene)
val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
assertThat(shadeMode).isEqualTo(ShadeMode.Split)
@@ -700,7 +698,7 @@ class ShadeInteractorSceneContainerImplTest : SysuiTestCase() {
fun expandQuickSettingsShade_dualShadeNotificationsOpen_replacesOverlay() =
testScope.runTest {
kosmos.enableDualShade()
- val shadeMode by collectLastValue(kosmos.shadeModeInteractor.shadeMode)
+ val shadeMode by collectLastValue(kosmos.shadeMode)
val currentScene by collectLastValue(sceneInteractor.currentScene)
val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
assertThat(shadeMode).isEqualTo(ShadeMode.Dual)
@@ -732,7 +730,7 @@ class ShadeInteractorSceneContainerImplTest : SysuiTestCase() {
fun collapseNotificationsShade_singleShade_switchesToLockscreen() =
testScope.runTest {
kosmos.enableSingleShade()
- val shadeMode by collectLastValue(kosmos.shadeModeInteractor.shadeMode)
+ val shadeMode by collectLastValue(kosmos.shadeMode)
val currentScene by collectLastValue(sceneInteractor.currentScene)
val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
assertThat(shadeMode).isEqualTo(ShadeMode.Single)
@@ -764,7 +762,7 @@ class ShadeInteractorSceneContainerImplTest : SysuiTestCase() {
fun collapseQuickSettingsShadeNotBypassingShade_singleShade_switchesToShade() =
testScope.runTest {
kosmos.enableSingleShade()
- val shadeMode by collectLastValue(kosmos.shadeModeInteractor.shadeMode)
+ val shadeMode by collectLastValue(kosmos.shadeMode)
val currentScene by collectLastValue(sceneInteractor.currentScene)
val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
assertThat(shadeMode).isEqualTo(ShadeMode.Single)
@@ -786,7 +784,7 @@ class ShadeInteractorSceneContainerImplTest : SysuiTestCase() {
fun collapseQuickSettingsShadeNotBypassingShade_splitShade_switchesToLockscreen() =
testScope.runTest {
kosmos.enableSplitShade()
- val shadeMode by collectLastValue(kosmos.shadeModeInteractor.shadeMode)
+ val shadeMode by collectLastValue(kosmos.shadeMode)
val currentScene by collectLastValue(sceneInteractor.currentScene)
val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
assertThat(shadeMode).isEqualTo(ShadeMode.Split)
@@ -808,7 +806,7 @@ class ShadeInteractorSceneContainerImplTest : SysuiTestCase() {
fun collapseQuickSettingsShadeBypassingShade_singleShade_switchesToLockscreen() =
testScope.runTest {
kosmos.enableSingleShade()
- val shadeMode by collectLastValue(kosmos.shadeModeInteractor.shadeMode)
+ val shadeMode by collectLastValue(kosmos.shadeMode)
val currentScene by collectLastValue(sceneInteractor.currentScene)
val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
assertThat(shadeMode).isEqualTo(ShadeMode.Single)
@@ -844,7 +842,7 @@ class ShadeInteractorSceneContainerImplTest : SysuiTestCase() {
}
private fun TestScope.openShade(overlay: OverlayKey) {
- val shadeMode by collectLastValue(kosmos.shadeModeInteractor.shadeMode)
+ val shadeMode by collectLastValue(kosmos.shadeMode)
val isAnyExpanded by collectLastValue(underTest.isAnyExpanded)
val currentScene by collectLastValue(sceneInteractor.currentScene)
val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/startable/ShadeStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/startable/ShadeStartableTest.kt
index 0406c3e69b54..b8f66acf6413 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/startable/ShadeStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/startable/ShadeStartableTest.kt
@@ -39,7 +39,7 @@ import com.android.systemui.shade.ShadeExpansionChangeEvent
import com.android.systemui.shade.ShadeExpansionListener
import com.android.systemui.shade.domain.interactor.disableDualShade
import com.android.systemui.shade.domain.interactor.enableDualShade
-import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.shade.domain.interactor.shadeMode
import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.statusbar.notification.stack.notificationStackScrollLayoutController
import com.android.systemui.statusbar.phone.scrimController
@@ -48,7 +48,6 @@ import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.TestScope
@@ -60,13 +59,11 @@ import org.mockito.kotlin.verify
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
class ShadeStartableTest(flags: FlagsParameterization) : SysuiTestCase() {
private val kosmos = testKosmos()
private val testScope = kosmos.testScope
- private val shadeInteractor by lazy { kosmos.shadeInteractor }
private val sceneInteractor by lazy { kosmos.sceneInteractor }
private val shadeExpansionStateManager by lazy { kosmos.shadeExpansionStateManager }
private val fakeConfigurationRepository by lazy { kosmos.fakeConfigurationRepository }
@@ -91,7 +88,7 @@ class ShadeStartableTest(flags: FlagsParameterization) : SysuiTestCase() {
testScope.runTest {
overrideResource(R.bool.config_use_split_notification_shade, false)
kosmos.disableDualShade()
- val shadeMode by collectLastValue(shadeInteractor.shadeMode)
+ val shadeMode by collectLastValue(kosmos.shadeMode)
underTest.start()
assertThat(shadeMode).isEqualTo(ShadeMode.Single)
@@ -110,7 +107,7 @@ class ShadeStartableTest(flags: FlagsParameterization) : SysuiTestCase() {
testScope.runTest {
overrideResource(R.bool.config_use_split_notification_shade, false)
kosmos.enableDualShade()
- val shadeMode by collectLastValue(shadeInteractor.shadeMode)
+ val shadeMode by collectLastValue(kosmos.shadeMode)
underTest.start()
assertThat(shadeMode).isEqualTo(ShadeMode.Dual)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/NotificationShadeWindowModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/NotificationShadeWindowModelTest.kt
index f5022b9cff8b..2038adcfc21f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/NotificationShadeWindowModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/NotificationShadeWindowModelTest.kt
@@ -35,14 +35,12 @@ import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class NotificationShadeWindowModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelTest.kt
index 8ce20d2a05e9..061e04ef29f7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelTest.kt
@@ -23,12 +23,14 @@ import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.domain.interactor.disableDualShade
import com.android.systemui.shade.domain.interactor.enableDualShade
+import com.android.systemui.shade.domain.interactor.enableSingleShade
+import com.android.systemui.shade.domain.interactor.enableSplitShade
+import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel.HeaderChipHighlight
import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel
import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.fakeMobileIconsInteractor
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.argThat
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -41,7 +43,6 @@ import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@EnableSceneContainer
@@ -273,6 +274,116 @@ class ShadeHeaderViewModelTest : SysuiTestCase() {
assertThat(currentOverlays).doesNotContain(Overlays.QuickSettingsShade)
}
+ @Test
+ fun highlightChips_notifsOpenInSingleShade_bothNone() =
+ testScope.runTest {
+ kosmos.enableSingleShade()
+ val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
+ setScene(Scenes.Shade)
+ assertThat(currentScene).isEqualTo(Scenes.Shade)
+ assertThat(currentOverlays).isEmpty()
+
+ assertThat(underTest.notificationsChipHighlight).isEqualTo(HeaderChipHighlight.None)
+ assertThat(underTest.quickSettingsChipHighlight).isEqualTo(HeaderChipHighlight.None)
+ }
+
+ @Test
+ fun highlightChips_notifsOpenInSplitShade_bothNone() =
+ testScope.runTest {
+ kosmos.enableSplitShade()
+ val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
+ setScene(Scenes.Shade)
+ assertThat(currentScene).isEqualTo(Scenes.Shade)
+ assertThat(currentOverlays).isEmpty()
+
+ assertThat(underTest.notificationsChipHighlight).isEqualTo(HeaderChipHighlight.None)
+ assertThat(underTest.quickSettingsChipHighlight).isEqualTo(HeaderChipHighlight.None)
+ }
+
+ @Test
+ fun highlightChips_quickSettingsOpenInSingleShade_bothNone() =
+ testScope.runTest {
+ kosmos.enableSingleShade()
+ val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
+ setScene(Scenes.QuickSettings)
+ assertThat(currentScene).isEqualTo(Scenes.QuickSettings)
+ assertThat(currentOverlays).isEmpty()
+
+ assertThat(underTest.notificationsChipHighlight).isEqualTo(HeaderChipHighlight.None)
+ assertThat(underTest.quickSettingsChipHighlight).isEqualTo(HeaderChipHighlight.None)
+ }
+
+ @Test
+ fun highlightChips_notifsOpenInDualShade_notifsStrongQuickSettingsWeak() =
+ testScope.runTest {
+ kosmos.enableDualShade()
+ val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
+
+ // Test the lockscreen scenario.
+ setScene(Scenes.Lockscreen)
+ setOverlay(Overlays.NotificationsShade)
+ assertThat(underTest.notificationsChipHighlight).isEqualTo(HeaderChipHighlight.Strong)
+ assertThat(underTest.quickSettingsChipHighlight).isEqualTo(HeaderChipHighlight.Weak)
+
+ // Test the unlocked scenario.
+ setDeviceEntered(true)
+ setScene(Scenes.Gone)
+ setOverlay(Overlays.NotificationsShade)
+ assertThat(currentScene).isEqualTo(Scenes.Gone)
+ assertThat(currentOverlays).isNotEmpty()
+ assertThat(underTest.notificationsChipHighlight).isEqualTo(HeaderChipHighlight.Strong)
+ assertThat(underTest.quickSettingsChipHighlight).isEqualTo(HeaderChipHighlight.Weak)
+ }
+
+ @Test
+ fun highlightChips_quickSettingsOpenInDualShade_notifsWeakQuickSettingsStrong() =
+ testScope.runTest {
+ kosmos.enableDualShade()
+ val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
+
+ // Test the lockscreen scenario.
+ setScene(Scenes.Lockscreen)
+ setOverlay(Overlays.QuickSettingsShade)
+ assertThat(underTest.notificationsChipHighlight).isEqualTo(HeaderChipHighlight.Weak)
+ assertThat(underTest.quickSettingsChipHighlight).isEqualTo(HeaderChipHighlight.Strong)
+
+ // Test the unlocked scenario.
+ setDeviceEntered(true)
+ setScene(Scenes.Gone)
+ setOverlay(Overlays.QuickSettingsShade)
+ assertThat(currentScene).isEqualTo(Scenes.Gone)
+ assertThat(currentOverlays).isNotEmpty()
+ assertThat(underTest.notificationsChipHighlight).isEqualTo(HeaderChipHighlight.Weak)
+ assertThat(underTest.quickSettingsChipHighlight).isEqualTo(HeaderChipHighlight.Strong)
+ }
+
+ @Test
+ fun highlightChips_noOverlaysInDualShade_bothNone() =
+ testScope.runTest {
+ kosmos.enableDualShade()
+ val currentScene by collectLastValue(sceneInteractor.currentScene)
+ val currentOverlays by collectLastValue(sceneInteractor.currentOverlays)
+
+ // Test the lockscreen scenario.
+ setScene(Scenes.Lockscreen)
+ assertThat(currentOverlays).isEmpty()
+ assertThat(underTest.notificationsChipHighlight).isEqualTo(HeaderChipHighlight.None)
+ assertThat(underTest.quickSettingsChipHighlight).isEqualTo(HeaderChipHighlight.None)
+
+ // Test the unlocked scenario.
+ setDeviceEntered(true)
+ setScene(Scenes.Gone)
+ assertThat(currentScene).isEqualTo(Scenes.Gone)
+ assertThat(currentOverlays).isEmpty()
+ assertThat(underTest.notificationsChipHighlight).isEqualTo(HeaderChipHighlight.None)
+ assertThat(underTest.quickSettingsChipHighlight).isEqualTo(HeaderChipHighlight.None)
+ }
+
companion object {
private val SUB_1 =
SubscriptionModel(
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModelTest.kt
index 27faeb8574a8..623a0ebcaf2f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModelTest.kt
@@ -46,7 +46,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.unfold.fakeUnfoldTransitionProgressProvider
import com.google.common.truth.Truth.assertThat
import java.util.Locale
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.update
@@ -57,7 +56,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModelTest.kt
index 8f904f7fe132..9a4f8ea8ea28 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModelTest.kt
@@ -51,7 +51,6 @@ import com.android.systemui.shade.domain.startable.shadeStartable
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -60,7 +59,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/condition/ConditionExtensionsTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/condition/ConditionExtensionsTest.kt
index 6b2c4b260806..4bd02e0fab22 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/condition/ConditionExtensionsTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/condition/ConditionExtensionsTest.kt
@@ -4,7 +4,6 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.emptyFlow
@@ -16,7 +15,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class ConditionExtensionsTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/CommandQueueTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/CommandQueueTest.java
index 2020d0dcb041..3d3178793a09 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/CommandQueueTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/CommandQueueTest.java
@@ -460,17 +460,17 @@ public class CommandQueueTest extends SysuiTestCase {
}
@Test
- public void testOnDisplayReady() {
- mCommandQueue.onDisplayReady(DEFAULT_DISPLAY);
+ public void testonDisplayAddSystemDecorations() {
+ mCommandQueue.onDisplayAddSystemDecorations(DEFAULT_DISPLAY);
waitForIdleSync();
- verify(mCallbacks).onDisplayReady(eq(DEFAULT_DISPLAY));
+ verify(mCallbacks).onDisplayAddSystemDecorations(eq(DEFAULT_DISPLAY));
}
@Test
- public void testOnDisplayReadyForSecondaryDisplay() {
- mCommandQueue.onDisplayReady(SECONDARY_DISPLAY);
+ public void testonDisplayAddSystemDecorationsForSecondaryDisplay() {
+ mCommandQueue.onDisplayAddSystemDecorations(SECONDARY_DISPLAY);
waitForIdleSync();
- verify(mCallbacks).onDisplayReady(eq(SECONDARY_DISPLAY));
+ verify(mCallbacks).onDisplayAddSystemDecorations(eq(SECONDARY_DISPLAY));
}
@Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerTest.java
index baaf6c9a76ae..3eec1cd2d54c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerTest.java
@@ -92,6 +92,8 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntryB
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
import com.android.systemui.statusbar.notification.collection.render.NotificationVisibilityProvider;
import com.android.systemui.statusbar.notification.row.shared.LockscreenOtpRedaction;
+import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepository;
+import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiNetworkModel;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.concurrency.FakeExecutor;
@@ -113,15 +115,15 @@ import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
+import platform.test.runner.parameterized.ParameterizedAndroidJunit4;
+import platform.test.runner.parameterized.Parameters;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;
-import platform.test.runner.parameterized.ParameterizedAndroidJunit4;
-import platform.test.runner.parameterized.Parameters;
-
@SmallTest
@RunWith(ParameterizedAndroidJunit4.class)
public class NotificationLockscreenUserManagerTest extends SysuiTestCase {
@@ -169,8 +171,18 @@ public class NotificationLockscreenUserManagerTest extends SysuiTestCase {
private KeyguardStateController mKeyguardStateController;
@Mock
private Lazy<DeviceUnlockedInteractor> mDeviceUnlockedInteractorLazy;
+
+ @Mock
+ private Lazy<WifiRepository> mWifiRepositoryLazy;
@Mock
private DeviceUnlockedInteractor mDeviceUnlockedInteractor;
+
+ @Mock
+ private WifiRepository mWifiRepository;
+
+ @Mock
+ private StateFlow<WifiNetworkModel> mWifiStateFlow;
+
@Mock
private Lazy<KeyguardInteractor> mKeyguardInteractorLazy;
@Mock
@@ -266,6 +278,8 @@ public class NotificationLockscreenUserManagerTest extends SysuiTestCase {
when(mKeyguardInteractorLazy.get()).thenReturn(mKeyguardInteractor);
when(mKeyguardInteractor.isKeyguardDismissible())
.thenReturn(mock(StateFlow.class));
+ when(mWifiRepositoryLazy.get()).thenReturn(mWifiRepository);
+ when(mWifiRepository.getWifiNetwork()).thenReturn(mock(StateFlow.class));
mLockscreenUserManager = new TestNotificationLockscreenUserManager(mContext);
mLockscreenUserManager.setUpWithPresenter(mPresenter);
@@ -528,6 +542,9 @@ public class NotificationLockscreenUserManagerTest extends SysuiTestCase {
.set(mSensitiveNotifPostTime - TimeUnit.DAYS.toMillis(1));
// Device is not currently locked
mLockscreenUserManager.mLocked.set(false);
+ mLockscreenUserManager.mConnectedToWifi.set(false);
+ mLockscreenUserManager.mLastWifiConnectionTime.set(
+ mSensitiveNotifPostTime - TimeUnit.DAYS.toMillis(1));
// Sensitive Content notifications are always redacted
assertEquals(REDACTION_TYPE_NONE,
@@ -542,6 +559,9 @@ public class NotificationLockscreenUserManagerTest extends SysuiTestCase {
mCurrentUser.id);
changeSetting(LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS);
mLockscreenUserManager.mLocked.set(true);
+ mLockscreenUserManager.mConnectedToWifi.set(false);
+ mLockscreenUserManager.mLastWifiConnectionTime.set(
+ mSensitiveNotifPostTime - TimeUnit.DAYS.toMillis(1));
// Device was locked after this notification arrived
mLockscreenUserManager.mLastLockTime
.set(mSensitiveNotifPostTime + TimeUnit.DAYS.toMillis(1));
@@ -562,6 +582,51 @@ public class NotificationLockscreenUserManagerTest extends SysuiTestCase {
mLockscreenUserManager.mLastLockTime
.set(mSensitiveNotifPostTime - TimeUnit.SECONDS.toMillis(1));
mLockscreenUserManager.mLocked.set(true);
+ mLockscreenUserManager.mConnectedToWifi.set(false);
+ mLockscreenUserManager.mLastWifiConnectionTime.set(
+ mSensitiveNotifPostTime - TimeUnit.DAYS.toMillis(1));
+
+ // Sensitive Content notifications are always redacted
+ assertEquals(REDACTION_TYPE_NONE,
+ mLockscreenUserManager.getRedactionType(mSensitiveContentNotif));
+ }
+
+ @Test
+ @EnableFlags(LockscreenOtpRedaction.FLAG_NAME)
+ public void testHasSensitiveContent_notRedactedIfOnWifi() {
+ // Allow private notifications for this user
+ mSettings.putIntForUser(LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 1,
+ mCurrentUser.id);
+ changeSetting(LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS);
+ // Claim the device was last locked 1 day ago
+ mLockscreenUserManager.mLastLockTime
+ .set(mSensitiveNotifPostTime - TimeUnit.DAYS.toMillis(1));
+ mLockscreenUserManager.mLocked.set(true);
+ // We are currently connected to wifi
+ mLockscreenUserManager.mConnectedToWifi.set(true);
+ mLockscreenUserManager.mLastWifiConnectionTime.set(
+ mSensitiveNotifPostTime - TimeUnit.DAYS.toMillis(1));
+
+ // Sensitive Content notifications are always redacted
+ assertEquals(REDACTION_TYPE_NONE,
+ mLockscreenUserManager.getRedactionType(mSensitiveContentNotif));
+ }
+
+ @Test
+ @EnableFlags(LockscreenOtpRedaction.FLAG_NAME)
+ public void testHasSensitiveContent_notRedactedIfConnectedToWifiSinceReceiving() {
+ // Allow private notifications for this user
+ mSettings.putIntForUser(LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 1,
+ mCurrentUser.id);
+ changeSetting(LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS);
+ // Claim the device was last locked 1 day ago
+ mLockscreenUserManager.mLastLockTime
+ .set(mSensitiveNotifPostTime - TimeUnit.DAYS.toMillis(1));
+ mLockscreenUserManager.mLocked.set(true);
+ mLockscreenUserManager.mConnectedToWifi.set(false);
+ // We are not currently connected to wifi, but did connect after the notification came in
+ mLockscreenUserManager.mLastWifiConnectionTime.set(
+ mSensitiveNotifPostTime + TimeUnit.SECONDS.toMillis(1));
// Sensitive Content notifications are always redacted
assertEquals(REDACTION_TYPE_NONE,
@@ -570,7 +635,7 @@ public class NotificationLockscreenUserManagerTest extends SysuiTestCase {
@Test
@DisableFlags(LockscreenOtpRedaction.FLAG_NAME)
- public void testHasSensitiveContent_notRedactedFlagDisabled() {
+ public void testHasSensitiveContent_notRedactedIfFlagDisabled() {
// Allow private notifications for this user
mSettings.putIntForUser(LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 1,
mCurrentUser.id);
@@ -579,6 +644,7 @@ public class NotificationLockscreenUserManagerTest extends SysuiTestCase {
mLockscreenUserManager.mLastLockTime
.set(mSensitiveNotifPostTime - TimeUnit.DAYS.toMillis(1));
mLockscreenUserManager.mLocked.set(true);
+ mLockscreenUserManager.mConnectedToWifi.set(false);
// Sensitive Content notifications are always redacted
assertEquals(REDACTION_TYPE_NONE,
@@ -592,10 +658,11 @@ public class NotificationLockscreenUserManagerTest extends SysuiTestCase {
mSettings.putIntForUser(LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 1,
mCurrentUser.id);
changeSetting(LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS);
- when(mKeyguardManager.isDeviceLocked()).thenReturn(true);
+ mLockscreenUserManager.mLocked.set(true);
// Claim the device was last unlocked 1 day ago
mLockscreenUserManager.mLastLockTime
.set(mSensitiveNotifPostTime - TimeUnit.DAYS.toMillis(1));
+ mLockscreenUserManager.mConnectedToWifi.set(false);
// Sensitive Content notifications are always redacted
assertEquals(REDACTION_TYPE_SENSITIVE_CONTENT,
@@ -1155,6 +1222,7 @@ public class NotificationLockscreenUserManagerTest extends SysuiTestCase {
mFakeFeatureFlags,
mDeviceUnlockedInteractorLazy,
mKeyguardInteractorLazy,
+ mWifiRepositoryLazy,
null //CoroutineScope
);
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt
index 0a0564994e69..d2ea62da0940 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt
@@ -29,10 +29,12 @@ import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.ShadeInterpolation
import com.android.systemui.dump.DumpManager
+import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.kosmos.testScope
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.res.R
import com.android.systemui.shade.ShadeExpansionChangeEvent
+import com.android.systemui.shared.Flags as SharedFlags
import com.android.systemui.statusbar.phone.BiometricUnlockController
import com.android.systemui.statusbar.phone.DozeParameters
import com.android.systemui.statusbar.phone.ScrimController
@@ -45,6 +47,7 @@ import com.android.systemui.util.mockito.eq
import com.android.systemui.window.domain.interactor.WindowRootViewBlurInteractor
import com.android.wm.shell.appzoomout.AppZoomOut
import com.google.common.truth.Truth.assertThat
+import java.util.Optional
import java.util.function.Consumer
import org.junit.Before
import org.junit.Rule
@@ -66,7 +69,6 @@ import org.mockito.Mockito.reset
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when`
import org.mockito.junit.MockitoJUnit
-import java.util.Optional
@RunWith(AndroidJUnit4::class)
@RunWithLooper
@@ -80,6 +82,7 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() {
@Mock private lateinit var blurUtils: BlurUtils
@Mock private lateinit var biometricUnlockController: BiometricUnlockController
@Mock private lateinit var keyguardStateController: KeyguardStateController
+ @Mock private lateinit var keyguardInteractor: KeyguardInteractor
@Mock private lateinit var choreographer: Choreographer
@Mock private lateinit var wallpaperController: WallpaperController
@Mock private lateinit var notificationShadeWindowController: NotificationShadeWindowController
@@ -123,6 +126,7 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() {
blurUtils,
biometricUnlockController,
keyguardStateController,
+ keyguardInteractor,
choreographer,
wallpaperController,
notificationShadeWindowController,
@@ -150,24 +154,23 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() {
@Test
fun setupListeners() {
- verify(dumpManager).registerCriticalDumpable(
- anyString(), eq(notificationShadeDepthController)
- )
+ verify(dumpManager)
+ .registerCriticalDumpable(anyString(), eq(notificationShadeDepthController))
}
@Test
fun onPanelExpansionChanged_apliesBlur_ifShade() {
notificationShadeDepthController.onPanelExpansionChanged(
- ShadeExpansionChangeEvent(
- fraction = 1f, expanded = true, tracking = false))
+ ShadeExpansionChangeEvent(fraction = 1f, expanded = true, tracking = false)
+ )
verify(shadeAnimation).animateTo(eq(maxBlur))
}
@Test
fun onPanelExpansionChanged_animatesBlurIn_ifShade() {
notificationShadeDepthController.onPanelExpansionChanged(
- ShadeExpansionChangeEvent(
- fraction = 0.01f, expanded = false, tracking = false))
+ ShadeExpansionChangeEvent(fraction = 0.01f, expanded = false, tracking = false)
+ )
verify(shadeAnimation).animateTo(eq(maxBlur))
}
@@ -176,27 +179,27 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() {
onPanelExpansionChanged_animatesBlurIn_ifShade()
clearInvocations(shadeAnimation)
notificationShadeDepthController.onPanelExpansionChanged(
- ShadeExpansionChangeEvent(
- fraction = 0f, expanded = false, tracking = false))
+ ShadeExpansionChangeEvent(fraction = 0f, expanded = false, tracking = false)
+ )
verify(shadeAnimation).animateTo(eq(0))
}
@Test
fun onPanelExpansionChanged_animatesBlurOut_ifFlick() {
- val event =
- ShadeExpansionChangeEvent(
- fraction = 1f, expanded = true, tracking = false)
+ val event = ShadeExpansionChangeEvent(fraction = 1f, expanded = true, tracking = false)
onPanelExpansionChanged_apliesBlur_ifShade()
clearInvocations(shadeAnimation)
notificationShadeDepthController.onPanelExpansionChanged(event)
verify(shadeAnimation, never()).animateTo(anyInt())
notificationShadeDepthController.onPanelExpansionChanged(
- event.copy(fraction = 0.9f, tracking = true))
+ event.copy(fraction = 0.9f, tracking = true)
+ )
verify(shadeAnimation, never()).animateTo(anyInt())
notificationShadeDepthController.onPanelExpansionChanged(
- event.copy(fraction = 0.8f, tracking = false))
+ event.copy(fraction = 0.8f, tracking = false)
+ )
verify(shadeAnimation).animateTo(eq(0))
}
@@ -205,16 +208,14 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() {
onPanelExpansionChanged_animatesBlurOut_ifFlick()
clearInvocations(shadeAnimation)
notificationShadeDepthController.onPanelExpansionChanged(
- ShadeExpansionChangeEvent(
- fraction = 0.6f, expanded = true, tracking = true))
+ ShadeExpansionChangeEvent(fraction = 0.6f, expanded = true, tracking = true)
+ )
verify(shadeAnimation).animateTo(eq(maxBlur))
}
@Test
fun onPanelExpansionChanged_respectsMinPanelPullDownFraction() {
- val event =
- ShadeExpansionChangeEvent(
- fraction = 0.5f, expanded = true, tracking = true)
+ val event = ShadeExpansionChangeEvent(fraction = 0.5f, expanded = true, tracking = true)
notificationShadeDepthController.panelPullDownMinFraction = 0.5f
notificationShadeDepthController.onPanelExpansionChanged(event)
assertThat(notificationShadeDepthController.shadeExpansion).isEqualTo(0f)
@@ -241,8 +242,8 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() {
statusBarState = StatusBarState.KEYGUARD
notificationShadeDepthController.qsPanelExpansion = 1f
notificationShadeDepthController.onPanelExpansionChanged(
- ShadeExpansionChangeEvent(
- fraction = 1f, expanded = true, tracking = false))
+ ShadeExpansionChangeEvent(fraction = 1f, expanded = true, tracking = false)
+ )
notificationShadeDepthController.updateBlurCallback.doFrame(0)
verify(blurUtils).applyBlur(any(), eq(maxBlur), eq(false))
}
@@ -252,8 +253,8 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() {
statusBarState = StatusBarState.KEYGUARD
notificationShadeDepthController.qsPanelExpansion = 0.25f
notificationShadeDepthController.onPanelExpansionChanged(
- ShadeExpansionChangeEvent(
- fraction = 1f, expanded = true, tracking = false))
+ ShadeExpansionChangeEvent(fraction = 1f, expanded = true, tracking = false)
+ )
notificationShadeDepthController.updateBlurCallback.doFrame(0)
verify(wallpaperController)
.setNotificationShadeZoom(eq(ShadeInterpolation.getNotificationScrimAlpha(0.25f)))
@@ -264,8 +265,8 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() {
enableSplitShade()
notificationShadeDepthController.onPanelExpansionChanged(
- ShadeExpansionChangeEvent(
- fraction = 1f, expanded = true, tracking = false))
+ ShadeExpansionChangeEvent(fraction = 1f, expanded = true, tracking = false)
+ )
notificationShadeDepthController.updateBlurCallback.doFrame(0)
verify(wallpaperController).setNotificationShadeZoom(0f)
@@ -276,8 +277,8 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() {
disableSplitShade()
notificationShadeDepthController.onPanelExpansionChanged(
- ShadeExpansionChangeEvent(
- fraction = 1f, expanded = true, tracking = false))
+ ShadeExpansionChangeEvent(fraction = 1f, expanded = true, tracking = false)
+ )
notificationShadeDepthController.updateBlurCallback.doFrame(0)
verify(wallpaperController).setNotificationShadeZoom(floatThat { it > 0 })
@@ -311,6 +312,7 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() {
}
@Test
+ @DisableFlags(SharedFlags.FLAG_AMBIENT_AOD)
fun onDozeAmountChanged_appliesBlur() {
statusBarStateListener.onDozeAmountChanged(1f, 1f)
notificationShadeDepthController.updateBlurCallback.doFrame(0)
@@ -318,6 +320,14 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() {
}
@Test
+ @EnableFlags(SharedFlags.FLAG_AMBIENT_AOD)
+ fun onDozeAmountChanged_doesNotApplyBlurWithAmbientAod() {
+ statusBarStateListener.onDozeAmountChanged(1f, 1f)
+ notificationShadeDepthController.updateBlurCallback.doFrame(0)
+ verify(blurUtils).applyBlur(any(), eq(0), eq(false))
+ }
+
+ @Test
fun setFullShadeTransition_appliesBlur_onlyIfSupported() {
reset(blurUtils)
`when`(blurUtils.blurRadiusOfRatio(anyFloat())).then { answer ->
@@ -354,8 +364,8 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() {
@Test
fun updateBlurCallback_setsBlur_whenExpanded() {
notificationShadeDepthController.onPanelExpansionChanged(
- ShadeExpansionChangeEvent(
- fraction = 1f, expanded = true, tracking = false))
+ ShadeExpansionChangeEvent(fraction = 1f, expanded = true, tracking = false)
+ )
`when`(shadeAnimation.radius).thenReturn(maxBlur.toFloat())
notificationShadeDepthController.updateBlurCallback.doFrame(0)
verify(blurUtils).applyBlur(any(), eq(maxBlur), eq(false))
@@ -364,8 +374,8 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() {
@Test
fun updateBlurCallback_ignoreShadeBlurUntilHidden_overridesZoom() {
notificationShadeDepthController.onPanelExpansionChanged(
- ShadeExpansionChangeEvent(
- fraction = 1f, expanded = true, tracking = false))
+ ShadeExpansionChangeEvent(fraction = 1f, expanded = true, tracking = false)
+ )
`when`(shadeAnimation.radius).thenReturn(maxBlur.toFloat())
notificationShadeDepthController.blursDisabledForAppLaunch = true
notificationShadeDepthController.updateBlurCallback.doFrame(0)
@@ -373,7 +383,7 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() {
}
@Test
- @DisableFlags(Flags.FLAG_BOUNCER_UI_REVAMP)
+ @DisableFlags(Flags.FLAG_BOUNCER_UI_REVAMP, Flags.FLAG_GLANCEABLE_HUB_BLURRED_BACKGROUND)
fun ignoreShadeBlurUntilHidden_schedulesFrame() {
notificationShadeDepthController.blursDisabledForAppLaunch = true
verify(blurUtils).prepareBlur(any(), anyInt())
@@ -391,8 +401,8 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() {
@Test
fun ignoreBlurForUnlock_ignores() {
notificationShadeDepthController.onPanelExpansionChanged(
- ShadeExpansionChangeEvent(
- fraction = 1f, expanded = true, tracking = false))
+ ShadeExpansionChangeEvent(fraction = 1f, expanded = true, tracking = false)
+ )
`when`(shadeAnimation.radius).thenReturn(maxBlur.toFloat())
notificationShadeDepthController.blursDisabledForAppLaunch = false
@@ -408,8 +418,8 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() {
@Test
fun ignoreBlurForUnlock_doesNotIgnore() {
notificationShadeDepthController.onPanelExpansionChanged(
- ShadeExpansionChangeEvent(
- fraction = 1f, expanded = true, tracking = false))
+ ShadeExpansionChangeEvent(fraction = 1f, expanded = true, tracking = false)
+ )
`when`(shadeAnimation.radius).thenReturn(maxBlur.toFloat())
notificationShadeDepthController.blursDisabledForAppLaunch = false
@@ -435,14 +445,14 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() {
}
@Test
- @DisableFlags(Flags.FLAG_BOUNCER_UI_REVAMP)
+ @DisableFlags(Flags.FLAG_BOUNCER_UI_REVAMP, Flags.FLAG_GLANCEABLE_HUB_BLURRED_BACKGROUND)
fun brightnessMirror_hidesShadeBlur() {
// Brightness mirror is fully visible
`when`(brightnessSpring.ratio).thenReturn(1f)
// And shade is blurred
notificationShadeDepthController.onPanelExpansionChanged(
- ShadeExpansionChangeEvent(
- fraction = 1f, expanded = true, tracking = false))
+ ShadeExpansionChangeEvent(fraction = 1f, expanded = true, tracking = false)
+ )
`when`(shadeAnimation.radius).thenReturn(maxBlur.toFloat())
notificationShadeDepthController.updateBlurCallback.doFrame(0)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/OperatorNameViewControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/OperatorNameViewControllerTest.kt
index 72a2ce50ed9c..03dee3aeb75c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/OperatorNameViewControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/OperatorNameViewControllerTest.kt
@@ -40,7 +40,6 @@ import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import junit.framework.Assert.assertTrue
import kotlin.test.Test
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -49,7 +48,6 @@ import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class OperatorNameViewControllerTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt
index a51e0c0add37..7a982a30981f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar
import android.animation.ObjectAnimator
@@ -33,7 +31,6 @@ import com.android.systemui.deviceentry.domain.interactor.deviceUnlockedInteract
import com.android.systemui.flags.DisableSceneContainer
import com.android.systemui.flags.EnableSceneContainer
import com.android.systemui.flags.parameterizeSceneContainerFlag
-import com.android.systemui.jank.interactionJankMonitor
import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
import com.android.systemui.keyguard.domain.interactor.keyguardClockInteractor
@@ -59,7 +56,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.kotlin.JavaAdapter
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Assert.assertEquals
@@ -113,7 +109,6 @@ class StatusBarStateControllerImplTest(flags: FlagsParameterization) : SysuiTest
object :
StatusBarStateControllerImpl(
uiEventLogger,
- { kosmos.interactionJankMonitor },
JavaAdapter(testScope.backgroundScope),
{ kosmos.keyguardInteractor },
{ kosmos.keyguardTransitionInteractor },
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModelTest.kt
index 75262a4d058d..dbe8f8226d43 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModelTest.kt
@@ -24,9 +24,9 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.Expandable
+import com.android.systemui.common.shared.model.ContentDescription.Companion.loadContentDescription
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.coroutines.collectLastValue
-import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.testScope
import com.android.systemui.plugins.activityStarter
import com.android.systemui.res.R
@@ -47,6 +47,7 @@ import com.android.systemui.statusbar.phone.ongoingcall.StatusBarChipsModernizat
import com.android.systemui.statusbar.phone.ongoingcall.data.repository.ongoingCallRepository
import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallModel
import com.android.systemui.statusbar.phone.ongoingcall.shared.model.inCallModel
+import com.android.systemui.testKosmos
import com.android.systemui.util.time.fakeSystemClock
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
@@ -60,7 +61,7 @@ import org.mockito.kotlin.whenever
@SmallTest
@RunWith(AndroidJUnit4::class)
class CallChipViewModelTest : SysuiTestCase() {
- private val kosmos = Kosmos()
+ private val kosmos = testKosmos()
private val notificationListRepository = kosmos.activeNotificationListRepository
private val testScope = kosmos.testScope
private val repo = kosmos.ongoingCallRepository
@@ -87,7 +88,7 @@ class CallChipViewModelTest : SysuiTestCase() {
repo.setOngoingCallState(OngoingCallModel.NoCall)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
}
@Test
@@ -97,7 +98,7 @@ class CallChipViewModelTest : SysuiTestCase() {
repo.setOngoingCallState(inCallModel(startTimeMs = 0))
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown.IconOnly::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
}
@Test
@@ -107,7 +108,7 @@ class CallChipViewModelTest : SysuiTestCase() {
repo.setOngoingCallState(inCallModel(startTimeMs = -2))
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown.IconOnly::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
}
@Test
@@ -117,7 +118,7 @@ class CallChipViewModelTest : SysuiTestCase() {
repo.setOngoingCallState(inCallModel(startTimeMs = 345))
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown.Timer::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
}
@Test
@@ -134,7 +135,7 @@ class CallChipViewModelTest : SysuiTestCase() {
// started 2000ms ago (1000 - 3000). The OngoingActivityChipModel start time needs to be
// relative to elapsedRealtime, so it should be 2000ms before the elapsed realtime set
// on the clock.
- assertThat((latest as OngoingActivityChipModel.Shown.Timer).startTimeMs)
+ assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
.isEqualTo(398_000)
}
@@ -149,12 +150,12 @@ class CallChipViewModelTest : SysuiTestCase() {
inCallModel(startTimeMs = 1000, notificationIcon = null, notificationKey = notifKey)
)
- assertThat((latest as OngoingActivityChipModel.Shown).icon)
+ assertThat((latest as OngoingActivityChipModel.Active).icon)
.isInstanceOf(
OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon::class.java
)
val actualNotifKey =
- (((latest as OngoingActivityChipModel.Shown).icon)
+ (((latest as OngoingActivityChipModel.Active).icon)
as OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon)
.notificationKey
assertThat(actualNotifKey).isEqualTo(notifKey)
@@ -162,25 +163,34 @@ class CallChipViewModelTest : SysuiTestCase() {
@Test
@DisableFlags(StatusBarConnectedDisplays.FLAG_NAME)
- fun chip_zeroStartTime_cdFlagOff_iconIsNotifIcon() =
+ fun chip_zeroStartTime_cdFlagOff_iconIsNotifIcon_withContentDescription() =
testScope.runTest {
val latest by collectLastValue(underTest.chip)
val notifIcon = createStatusBarIconViewOrNull()
- repo.setOngoingCallState(inCallModel(startTimeMs = 0, notificationIcon = notifIcon))
+ repo.setOngoingCallState(
+ inCallModel(
+ startTimeMs = 0,
+ notificationIcon = notifIcon,
+ appName = "Fake app name",
+ )
+ )
- assertThat((latest as OngoingActivityChipModel.Shown).icon)
+ assertThat((latest as OngoingActivityChipModel.Active).icon)
.isInstanceOf(OngoingActivityChipModel.ChipIcon.StatusBarView::class.java)
val actualIcon =
- (((latest as OngoingActivityChipModel.Shown).icon)
- as OngoingActivityChipModel.ChipIcon.StatusBarView)
- .impl
- assertThat(actualIcon).isEqualTo(notifIcon)
+ (latest as OngoingActivityChipModel.Active).icon
+ as OngoingActivityChipModel.ChipIcon.StatusBarView
+ assertThat(actualIcon.impl).isEqualTo(notifIcon)
+ assertThat(actualIcon.contentDescription.loadContentDescription(context))
+ .contains("Ongoing call")
+ assertThat(actualIcon.contentDescription.loadContentDescription(context))
+ .contains("Fake app name")
}
@Test
@EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
- fun chip_zeroStartTime_cdFlagOn_iconIsNotifKeyIcon() =
+ fun chip_zeroStartTime_cdFlagOn_iconIsNotifKeyIcon_withContentDescription() =
testScope.runTest {
val latest by collectLastValue(underTest.chip)
@@ -189,11 +199,22 @@ class CallChipViewModelTest : SysuiTestCase() {
startTimeMs = 0,
notificationIcon = createStatusBarIconViewOrNull(),
notificationKey = "notifKey",
+ appName = "Fake app name",
)
)
- assertThat((latest as OngoingActivityChipModel.Shown).icon)
- .isEqualTo(OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon("notifKey"))
+ assertThat((latest as OngoingActivityChipModel.Active).icon)
+ .isInstanceOf(
+ OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon::class.java
+ )
+ val actualIcon =
+ (latest as OngoingActivityChipModel.Active).icon
+ as OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon
+ assertThat(actualIcon.notificationKey).isEqualTo("notifKey")
+ assertThat(actualIcon.contentDescription.loadContentDescription(context))
+ .contains("Ongoing call")
+ assertThat(actualIcon.contentDescription.loadContentDescription(context))
+ .contains("Fake app name")
}
@Test
@@ -204,10 +225,10 @@ class CallChipViewModelTest : SysuiTestCase() {
repo.setOngoingCallState(inCallModel(startTimeMs = 1000, notificationIcon = null))
- assertThat((latest as OngoingActivityChipModel.Shown).icon)
+ assertThat((latest as OngoingActivityChipModel.Active).icon)
.isInstanceOf(OngoingActivityChipModel.ChipIcon.SingleColorIcon::class.java)
val icon =
- (((latest as OngoingActivityChipModel.Shown).icon)
+ (((latest as OngoingActivityChipModel.Active).icon)
as OngoingActivityChipModel.ChipIcon.SingleColorIcon)
.impl as Icon.Resource
assertThat(icon.res).isEqualTo(com.android.internal.R.drawable.ic_phone)
@@ -216,7 +237,7 @@ class CallChipViewModelTest : SysuiTestCase() {
@Test
@EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
- fun chip_notifIconFlagOn_butNullNotifIcon_iconNotifKey() =
+ fun chip_notifIconFlagOn_butNullNotifIcon_cdFlagOn_iconIsNotifKeyIcon_withContentDescription() =
testScope.runTest {
val latest by collectLastValue(underTest.chip)
@@ -225,11 +246,22 @@ class CallChipViewModelTest : SysuiTestCase() {
startTimeMs = 1000,
notificationIcon = null,
notificationKey = "notifKey",
+ appName = "Fake app name",
)
)
- assertThat((latest as OngoingActivityChipModel.Shown).icon)
- .isEqualTo(OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon("notifKey"))
+ assertThat((latest as OngoingActivityChipModel.Active).icon)
+ .isInstanceOf(
+ OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon::class.java
+ )
+ val actualIcon =
+ (latest as OngoingActivityChipModel.Active).icon
+ as OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon
+ assertThat(actualIcon.notificationKey).isEqualTo("notifKey")
+ assertThat(actualIcon.contentDescription.loadContentDescription(context))
+ .contains("Ongoing call")
+ assertThat(actualIcon.contentDescription.loadContentDescription(context))
+ .contains("Fake app name")
}
@Test
@@ -239,7 +271,7 @@ class CallChipViewModelTest : SysuiTestCase() {
repo.setOngoingCallState(inCallModel(startTimeMs = 1000, promotedContent = null))
- assertThat((latest as OngoingActivityChipModel.Shown).colors)
+ assertThat((latest as OngoingActivityChipModel.Active).colors)
.isEqualTo(ColorsModel.Themed)
}
@@ -250,7 +282,7 @@ class CallChipViewModelTest : SysuiTestCase() {
repo.setOngoingCallState(inCallModel(startTimeMs = 0, promotedContent = null))
- assertThat((latest as OngoingActivityChipModel.Shown).colors)
+ assertThat((latest as OngoingActivityChipModel.Active).colors)
.isEqualTo(ColorsModel.Themed)
}
@@ -264,7 +296,7 @@ class CallChipViewModelTest : SysuiTestCase() {
inCallModel(startTimeMs = 1000, promotedContent = PROMOTED_CONTENT_WITH_COLOR)
)
- assertThat((latest as OngoingActivityChipModel.Shown).colors)
+ assertThat((latest as OngoingActivityChipModel.Active).colors)
.isEqualTo(ColorsModel.Themed)
}
@@ -278,7 +310,7 @@ class CallChipViewModelTest : SysuiTestCase() {
inCallModel(startTimeMs = 0, promotedContent = PROMOTED_CONTENT_WITH_COLOR)
)
- assertThat((latest as OngoingActivityChipModel.Shown).colors)
+ assertThat((latest as OngoingActivityChipModel.Active).colors)
.isEqualTo(ColorsModel.Themed)
}
@@ -292,7 +324,7 @@ class CallChipViewModelTest : SysuiTestCase() {
inCallModel(startTimeMs = 1000, promotedContent = PROMOTED_CONTENT_WITH_COLOR)
)
- assertThat((latest as OngoingActivityChipModel.Shown).colors)
+ assertThat((latest as OngoingActivityChipModel.Active).colors)
.isEqualTo(
ColorsModel.Custom(
backgroundColorInt = PROMOTED_BACKGROUND_COLOR,
@@ -311,7 +343,7 @@ class CallChipViewModelTest : SysuiTestCase() {
inCallModel(startTimeMs = 0, promotedContent = PROMOTED_CONTENT_WITH_COLOR)
)
- assertThat((latest as OngoingActivityChipModel.Shown).colors)
+ assertThat((latest as OngoingActivityChipModel.Active).colors)
.isEqualTo(
ColorsModel.Custom(
backgroundColorInt = PROMOTED_BACKGROUND_COLOR,
@@ -329,13 +361,13 @@ class CallChipViewModelTest : SysuiTestCase() {
// Start a call
repo.setOngoingCallState(inCallModel(startTimeMs = 1000))
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
- assertThat((latest as OngoingActivityChipModel.Shown.Timer).startTimeMs)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
+ assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
.isEqualTo(398_000)
// End the call
repo.setOngoingCallState(OngoingCallModel.NoCall)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
// Let 100_000ms elapse
kosmos.fakeSystemClock.setCurrentTimeMillis(103_000)
@@ -343,8 +375,8 @@ class CallChipViewModelTest : SysuiTestCase() {
// Start a new call, which started 1000ms ago
repo.setOngoingCallState(inCallModel(startTimeMs = 102_000))
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
- assertThat((latest as OngoingActivityChipModel.Shown.Timer).startTimeMs)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
+ assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
.isEqualTo(499_000)
}
@@ -356,7 +388,7 @@ class CallChipViewModelTest : SysuiTestCase() {
repo.setOngoingCallState(inCallModel(startTimeMs = 1000, intent = null))
- assertThat((latest as OngoingActivityChipModel.Shown).onClickListenerLegacy).isNull()
+ assertThat((latest as OngoingActivityChipModel.Active).onClickListenerLegacy).isNull()
}
@Test
@@ -367,7 +399,7 @@ class CallChipViewModelTest : SysuiTestCase() {
val pendingIntent = mock<PendingIntent>()
repo.setOngoingCallState(inCallModel(startTimeMs = 1000, intent = pendingIntent))
- val clickListener = (latest as OngoingActivityChipModel.Shown).onClickListenerLegacy
+ val clickListener = (latest as OngoingActivityChipModel.Active).onClickListenerLegacy
assertThat(clickListener).isNotNull()
clickListener!!.onClick(chipView)
@@ -385,7 +417,7 @@ class CallChipViewModelTest : SysuiTestCase() {
val pendingIntent = mock<PendingIntent>()
repo.setOngoingCallState(inCallModel(startTimeMs = 0, intent = pendingIntent))
- val clickListener = (latest as OngoingActivityChipModel.Shown).onClickListenerLegacy
+ val clickListener = (latest as OngoingActivityChipModel.Active).onClickListenerLegacy
assertThat(clickListener).isNotNull()
@@ -408,7 +440,7 @@ class CallChipViewModelTest : SysuiTestCase() {
intent = null,
)
- assertThat((latest as OngoingActivityChipModel.Shown).clickBehavior)
+ assertThat((latest as OngoingActivityChipModel.Active).clickBehavior)
.isInstanceOf(OngoingActivityChipModel.ClickBehavior.None::class.java)
}
@@ -425,7 +457,7 @@ class CallChipViewModelTest : SysuiTestCase() {
intent = pendingIntent,
)
- val clickBehavior = (latest as OngoingActivityChipModel.Shown).clickBehavior
+ val clickBehavior = (latest as OngoingActivityChipModel.Active).clickBehavior
assertThat(clickBehavior)
.isInstanceOf(OngoingActivityChipModel.ClickBehavior.ExpandAction::class.java)
(clickBehavior as OngoingActivityChipModel.ClickBehavior.ExpandAction).onClick(
@@ -450,7 +482,7 @@ class CallChipViewModelTest : SysuiTestCase() {
intent = pendingIntent,
)
- val clickBehavior = (latest as OngoingActivityChipModel.Shown).clickBehavior
+ val clickBehavior = (latest as OngoingActivityChipModel.Active).clickBehavior
assertThat(clickBehavior)
.isInstanceOf(OngoingActivityChipModel.ClickBehavior.ExpandAction::class.java)
(clickBehavior as OngoingActivityChipModel.ClickBehavior.ExpandAction).onClick(
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/domian/interactor/MediaRouterChipInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/domian/interactor/MediaRouterChipInteractorTest.kt
index dd0ac1cc4ce5..b2174c1b1d8c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/domian/interactor/MediaRouterChipInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/domian/interactor/MediaRouterChipInteractorTest.kt
@@ -28,14 +28,12 @@ import com.android.systemui.statusbar.chips.casttootherdevice.domain.model.Media
import com.android.systemui.statusbar.policy.CastDevice
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.runner.RunWith
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class MediaRouterChipInteractorTest : SysuiTestCase() {
val kosmos = Kosmos()
val testScope = kosmos.testScope
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndCastScreenToOtherDeviceDialogDelegateTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndCastScreenToOtherDeviceDialogDelegateTest.kt
index b297bed61ecb..274efbb50788 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndCastScreenToOtherDeviceDialogDelegateTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndCastScreenToOtherDeviceDialogDelegateTest.kt
@@ -16,8 +16,6 @@
package com.android.systemui.statusbar.chips.casttootherdevice.ui.view
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import org.junit.runner.RunWith
import android.content.ComponentName
import android.content.DialogInterface
import android.content.Intent
@@ -25,6 +23,11 @@ import android.content.applicationContext
import android.content.packageManager
import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
+import android.platform.test.annotations.DisableFlags
+import android.platform.test.annotations.EnableFlags
+import android.view.View
+import android.view.Window
+import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.kosmos.Kosmos
@@ -40,19 +43,19 @@ import com.android.systemui.statusbar.chips.mediaprojection.ui.view.endMediaProj
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
+import org.junit.runner.RunWith
import org.mockito.kotlin.any
import org.mockito.kotlin.argumentCaptor
import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
+import org.mockito.kotlin.never
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class EndCastScreenToOtherDeviceDialogDelegateTest : SysuiTestCase() {
private val kosmos = Kosmos().also { it.testCase = this }
private val sysuiDialog = mock<SystemUIDialog>()
@@ -250,6 +253,36 @@ class EndCastScreenToOtherDeviceDialogDelegateTest : SysuiTestCase() {
assertThat(kosmos.fakeMediaProjectionRepository.stopProjectingInvoked).isTrue()
}
+ @Test
+ @EnableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun accessibilityDataSensitive_flagEnabled_appliesSetting() {
+ createAndSetDelegate(ENTIRE_SCREEN)
+
+ val window = mock<Window>()
+ val decorView = mock<View>()
+ whenever(sysuiDialog.window).thenReturn(window)
+ whenever(window.decorView).thenReturn(decorView)
+
+ underTest.beforeCreate(sysuiDialog, /* savedInstanceState= */ null)
+
+ verify(decorView).setAccessibilityDataSensitive(View.ACCESSIBILITY_DATA_SENSITIVE_YES)
+ }
+
+ @Test
+ @DisableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun accessibilityDataSensitive_flagDisabled_doesNotApplySetting() {
+ createAndSetDelegate(ENTIRE_SCREEN)
+
+ val window = mock<Window>()
+ val decorView = mock<View>()
+ whenever(sysuiDialog.window).thenReturn(window)
+ whenever(window.decorView).thenReturn(decorView)
+
+ underTest.beforeCreate(sysuiDialog, /* savedInstanceState= */ null)
+
+ verify(decorView, never()).setAccessibilityDataSensitive(any())
+ }
+
private fun createAndSetDelegate(state: MediaProjectionState.Projecting) {
underTest =
EndCastScreenToOtherDeviceDialogDelegate(
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndGenericCastToOtherDeviceDialogDelegateTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndGenericCastToOtherDeviceDialogDelegateTest.kt
index 9e8f22e331ed..88207d1c61d8 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndGenericCastToOtherDeviceDialogDelegateTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndGenericCastToOtherDeviceDialogDelegateTest.kt
@@ -18,6 +18,10 @@ package com.android.systemui.statusbar.chips.casttootherdevice.ui.view
import android.content.DialogInterface
import android.content.applicationContext
+import android.platform.test.annotations.DisableFlags
+import android.platform.test.annotations.EnableFlags
+import android.view.View
+import android.view.Window
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
@@ -33,18 +37,19 @@ import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.statusbar.policy.CastDevice
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.runner.RunWith
+import org.mockito.kotlin.any
import org.mockito.kotlin.argumentCaptor
import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
+import org.mockito.kotlin.never
import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class EndGenericCastToOtherDeviceDialogDelegateTest : SysuiTestCase() {
private val kosmos = Kosmos().also { it.testCase = this }
private val sysuiDialog = mock<SystemUIDialog>()
@@ -132,7 +137,7 @@ class EndGenericCastToOtherDeviceDialogDelegateTest : SysuiTestCase() {
verify(sysuiDialog)
.setPositiveButton(
eq(R.string.cast_to_other_device_stop_dialog_button),
- clickListener.capture()
+ clickListener.capture(),
)
// Verify that clicking the button stops the recording
@@ -144,6 +149,36 @@ class EndGenericCastToOtherDeviceDialogDelegateTest : SysuiTestCase() {
assertThat(kosmos.fakeMediaRouterRepository.lastStoppedDevice).isEqualTo(device)
}
+ @Test
+ @EnableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun accessibilityDataSensitive_flagEnabled_appliesSetting() {
+ createAndSetDelegate()
+
+ val window = mock<Window>()
+ val decorView = mock<View>()
+ whenever(sysuiDialog.window).thenReturn(window)
+ whenever(window.decorView).thenReturn(decorView)
+
+ underTest.beforeCreate(sysuiDialog, /* savedInstanceState= */ null)
+
+ verify(decorView).setAccessibilityDataSensitive(View.ACCESSIBILITY_DATA_SENSITIVE_YES)
+ }
+
+ @Test
+ @DisableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun accessibilityDataSensitive_flagDisabled_doesNotApplySetting() {
+ createAndSetDelegate()
+
+ val window = mock<Window>()
+ val decorView = mock<View>()
+ whenever(sysuiDialog.window).thenReturn(window)
+ whenever(window.decorView).thenReturn(decorView)
+
+ underTest.beforeCreate(sysuiDialog, /* savedInstanceState= */ null)
+
+ verify(decorView, never()).setAccessibilityDataSensitive(any())
+ }
+
private fun createAndSetDelegate(deviceName: String? = null) {
underTest =
EndGenericCastToOtherDeviceDialogDelegate(
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModelTest.kt
index fcf8c834dc12..cd3c8cdcd6e9 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModelTest.kt
@@ -119,7 +119,7 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value = MediaProjectionState.NotProjecting
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
}
@Test
@@ -135,9 +135,9 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
createTask(taskId = 1),
)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown.Timer::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
val icon =
- (((latest as OngoingActivityChipModel.Shown).icon)
+ (((latest as OngoingActivityChipModel.Active).icon)
as OngoingActivityChipModel.ChipIcon.SingleColorIcon)
.impl as Icon.Resource
assertThat(icon.res).isEqualTo(R.drawable.ic_cast_connected)
@@ -157,9 +157,9 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
hostPackage = CAST_TO_OTHER_DEVICES_PACKAGE
)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown.IconOnly::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
val icon =
- (((latest as OngoingActivityChipModel.Shown).icon)
+ (((latest as OngoingActivityChipModel.Active).icon)
as OngoingActivityChipModel.ChipIcon.SingleColorIcon)
.impl as Icon.Resource
assertThat(icon.res).isEqualTo(R.drawable.ic_cast_connected)
@@ -177,9 +177,9 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(CAST_TO_OTHER_DEVICES_PACKAGE)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown.Timer::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
val icon =
- (((latest as OngoingActivityChipModel.Shown).icon)
+ (((latest as OngoingActivityChipModel.Active).icon)
as OngoingActivityChipModel.ChipIcon.SingleColorIcon)
.impl as Icon.Resource
assertThat(icon.res).isEqualTo(R.drawable.ic_cast_connected)
@@ -195,7 +195,7 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
mediaRouterRepo.castDevices.value = emptyList()
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
}
@Test
@@ -215,9 +215,9 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
)
)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown.IconOnly::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
val icon =
- (((latest as OngoingActivityChipModel.Shown).icon)
+ (((latest as OngoingActivityChipModel.Active).icon)
as OngoingActivityChipModel.ChipIcon.SingleColorIcon)
.impl as Icon.Resource
assertThat(icon.res).isEqualTo(R.drawable.ic_cast_connected)
@@ -245,9 +245,9 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
)
// Only the projection info will show a timer
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown.Timer::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
val icon =
- (((latest as OngoingActivityChipModel.Shown).icon)
+ (((latest as OngoingActivityChipModel.Active).icon)
as OngoingActivityChipModel.ChipIcon.SingleColorIcon)
.impl as Icon.Resource
assertThat(icon.res).isEqualTo(R.drawable.ic_cast_connected)
@@ -265,7 +265,7 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(CAST_TO_OTHER_DEVICES_PACKAGE)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
// WHEN the stop action on the dialog is clicked
val dialogStopAction =
@@ -279,13 +279,13 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
dialogStopAction.onClick(mock<DialogInterface>(), 0)
// THEN the chip is immediately hidden...
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
// ...even though the repo still says it's projecting
assertThat(mediaProjectionRepo.mediaProjectionState.value)
.isInstanceOf(MediaProjectionState.Projecting::class.java)
// AND we specify no animation
- assertThat((latest as OngoingActivityChipModel.Hidden).shouldAnimate).isFalse()
+ assertThat((latest as OngoingActivityChipModel.Inactive).shouldAnimate).isFalse()
}
@Test
@@ -304,7 +304,7 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
)
)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
// WHEN the stop action on the dialog is clicked
val dialogStopAction =
@@ -318,12 +318,12 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
dialogStopAction.onClick(mock<DialogInterface>(), 0)
// THEN the chip is immediately hidden...
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
// ...even though the repo still says it's projecting
assertThat(mediaRouterRepo.castDevices.value).isNotEmpty()
// AND we specify no animation
- assertThat((latest as OngoingActivityChipModel.Hidden).shouldAnimate).isFalse()
+ assertThat((latest as OngoingActivityChipModel.Inactive).shouldAnimate).isFalse()
}
@Test
@@ -334,7 +334,8 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(CAST_TO_OTHER_DEVICES_PACKAGE)
- assertThat((latest as OngoingActivityChipModel.Shown).colors).isEqualTo(ColorsModel.Red)
+ assertThat((latest as OngoingActivityChipModel.Active).colors)
+ .isEqualTo(ColorsModel.Red)
}
@Test
@@ -346,7 +347,7 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.NoScreen(NORMAL_PACKAGE)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
}
@Test
@@ -361,7 +362,7 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
createTask(taskId = 1),
)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
}
@Test
@@ -372,7 +373,7 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
}
@Test
@@ -384,11 +385,12 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(CAST_TO_OTHER_DEVICES_PACKAGE)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
- assertThat((latest as OngoingActivityChipModel.Shown.Timer).startTimeMs).isEqualTo(1234)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
+ assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
+ .isEqualTo(1234)
mediaProjectionRepo.mediaProjectionState.value = MediaProjectionState.NotProjecting
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
systemClock.setElapsedRealtime(5678)
mediaProjectionRepo.mediaProjectionState.value =
@@ -398,8 +400,9 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
createTask(taskId = 1),
)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
- assertThat((latest as OngoingActivityChipModel.Shown.Timer).startTimeMs).isEqualTo(5678)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
+ assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
+ .isEqualTo(5678)
}
@Test
@@ -421,7 +424,7 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
)
)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown.IconOnly::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
// Later, set MediaProjection to also have information
systemClock.setElapsedRealtime(5678)
@@ -429,8 +432,9 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
MediaProjectionState.Projecting.EntireScreen(CAST_TO_OTHER_DEVICES_PACKAGE)
// Verify the new time is used
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
- assertThat((latest as OngoingActivityChipModel.Shown.Timer).startTimeMs).isEqualTo(5678)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
+ assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
+ .isEqualTo(5678)
}
@Test
@@ -441,7 +445,7 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(CAST_TO_OTHER_DEVICES_PACKAGE)
- val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListenerLegacy)
+ val clickListener = ((latest as OngoingActivityChipModel.Active).onClickListenerLegacy)
assertThat(clickListener).isNotNull()
clickListener!!.onClick(chipView)
@@ -462,7 +466,7 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
createTask(taskId = 1),
)
- val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListenerLegacy)
+ val clickListener = ((latest as OngoingActivityChipModel.Active).onClickListenerLegacy)
assertThat(clickListener).isNotNull()
clickListener!!.onClick(chipView)
@@ -487,7 +491,7 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
)
)
- val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListenerLegacy)
+ val clickListener = ((latest as OngoingActivityChipModel.Active).onClickListenerLegacy)
assertThat(clickListener).isNotNull()
clickListener!!.onClick(chipView)
@@ -508,7 +512,7 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(CAST_TO_OTHER_DEVICES_PACKAGE)
- val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListenerLegacy)
+ val clickListener = ((latest as OngoingActivityChipModel.Active).onClickListenerLegacy)
clickListener!!.onClick(chipView)
val cujCaptor = argumentCaptor<DialogCuj>()
@@ -537,7 +541,7 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
)
)
- val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListenerLegacy)
+ val clickListener = ((latest as OngoingActivityChipModel.Active).onClickListenerLegacy)
clickListener!!.onClick(chipView)
val cujCaptor = argumentCaptor<DialogCuj>()
@@ -566,7 +570,7 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
)
)
- assertThat((latest as OngoingActivityChipModel.Shown).clickBehavior)
+ assertThat((latest as OngoingActivityChipModel.Active).clickBehavior)
.isInstanceOf(OngoingActivityChipModel.ClickBehavior.ExpandAction::class.java)
}
@@ -579,7 +583,7 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(CAST_TO_OTHER_DEVICES_PACKAGE)
- assertThat((latest as OngoingActivityChipModel.Shown).clickBehavior)
+ assertThat((latest as OngoingActivityChipModel.Active).clickBehavior)
.isInstanceOf(OngoingActivityChipModel.ClickBehavior.ExpandAction::class.java)
}
@@ -592,7 +596,7 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
MediaProjectionState.Projecting.EntireScreen(CAST_TO_OTHER_DEVICES_PACKAGE)
val expandAction =
- ((latest as OngoingActivityChipModel.Shown).clickBehavior
+ ((latest as OngoingActivityChipModel.Active).clickBehavior
as OngoingActivityChipModel.ClickBehavior.ExpandAction)
expandAction.onClick(mockExpandable)
@@ -614,7 +618,7 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
)
val expandAction =
- ((latest as OngoingActivityChipModel.Shown).clickBehavior
+ ((latest as OngoingActivityChipModel.Active).clickBehavior
as OngoingActivityChipModel.ClickBehavior.ExpandAction)
expandAction.onClick(mockExpandable)
@@ -640,7 +644,7 @@ class CastToOtherDeviceChipViewModelTest : SysuiTestCase() {
)
val expandAction =
- ((latest as OngoingActivityChipModel.Shown).clickBehavior
+ ((latest as OngoingActivityChipModel.Active).clickBehavior
as OngoingActivityChipModel.ClickBehavior.ExpandAction)
expandAction.onClick(mockExpandable)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/mediaprojection/domain/interactor/MediaProjectionChipInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/mediaprojection/domain/interactor/MediaProjectionChipInteractorTest.kt
index dea3d1f68ce5..0dc2759d9a4c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/mediaprojection/domain/interactor/MediaProjectionChipInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/mediaprojection/domain/interactor/MediaProjectionChipInteractorTest.kt
@@ -22,21 +22,26 @@ import android.content.packageManager
import android.content.pm.PackageManager
import android.content.pm.ResolveInfo
import android.platform.test.annotations.EnableFlags
+import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.Flags.FLAG_STATUS_BAR_SHOW_AUDIO_ONLY_PROJECTION_CHIP
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.Kosmos
-import com.android.systemui.kosmos.testCase
+import com.android.systemui.kosmos.collectLastValue
+import com.android.systemui.kosmos.runTest
import com.android.systemui.kosmos.testScope
+import com.android.systemui.kosmos.useUnconfinedTestDispatcher
import com.android.systemui.mediaprojection.data.model.MediaProjectionState
import com.android.systemui.mediaprojection.data.repository.fakeMediaProjectionRepository
import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createTask
import com.android.systemui.statusbar.chips.mediaprojection.domain.model.ProjectionChipModel
+import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
import kotlinx.coroutines.test.runTest
import org.junit.Before
+import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mockito.doAnswer
import org.mockito.kotlin.any
@@ -44,8 +49,9 @@ import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever
@SmallTest
+@RunWith(AndroidJUnit4::class)
class MediaProjectionChipInteractorTest : SysuiTestCase() {
- private val kosmos = Kosmos().also { it.testCase = this }
+ private val kosmos = testKosmos().useUnconfinedTestDispatcher()
private val testScope = kosmos.testScope
private val mediaProjectionRepo = kosmos.fakeMediaProjectionRepository
@@ -57,6 +63,26 @@ class MediaProjectionChipInteractorTest : SysuiTestCase() {
private val underTest = kosmos.mediaProjectionChipInteractor
@Test
+ fun projectionStartedDuringCallAndActivePostCallEvent_eventEmitted_isUnit() =
+ kosmos.runTest {
+ val latest by
+ collectLastValue(underTest.projectionStartedDuringCallAndActivePostCallEvent)
+
+ fakeMediaProjectionRepository.emitProjectionStartedDuringCallAndActivePostCallEvent()
+
+ assertThat(latest).isEqualTo(Unit)
+ }
+
+ @Test
+ fun projectionStartedDuringCallAndActivePostCallEvent_noEventEmitted_isNull() =
+ kosmos.runTest {
+ val latest by
+ collectLastValue(underTest.projectionStartedDuringCallAndActivePostCallEvent)
+
+ assertThat(latest).isNull()
+ }
+
+ @Test
fun projection_notProjectingState_isNotProjecting() =
testScope.runTest {
val latest by collectLastValue(underTest.projection)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/notification/domain/interactor/SingleNotificationChipInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/notification/domain/interactor/SingleNotificationChipInteractorTest.kt
index fe15eac46e2d..05f2585cfaa5 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/notification/domain/interactor/SingleNotificationChipInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/notification/domain/interactor/SingleNotificationChipInteractorTest.kt
@@ -49,6 +49,7 @@ class SingleNotificationChipInteractorTest : SysuiTestCase() {
val startingNotif =
activeNotificationModel(
key = "notif1",
+ appName = "Fake Name",
statusBarChipIcon = icon,
promotedContent = PROMOTED_CONTENT,
)
@@ -58,6 +59,7 @@ class SingleNotificationChipInteractorTest : SysuiTestCase() {
val latest by collectLastValue(underTest.notificationChip)
assertThat(latest!!.key).isEqualTo("notif1")
+ assertThat(latest!!.appName).isEqualTo("Fake Name")
assertThat(latest!!.statusBarChipIconView).isEqualTo(icon)
assertThat(latest!!.promotedContent).isEqualTo(PROMOTED_CONTENT)
}
@@ -70,6 +72,7 @@ class SingleNotificationChipInteractorTest : SysuiTestCase() {
factory.create(
activeNotificationModel(
key = "notif1",
+ appName = "Fake Name",
statusBarChipIcon = originalIconView,
promotedContent = PROMOTED_CONTENT,
),
@@ -82,12 +85,14 @@ class SingleNotificationChipInteractorTest : SysuiTestCase() {
underTest.setNotification(
activeNotificationModel(
key = "notif1",
+ appName = "New Name",
statusBarChipIcon = newIconView,
promotedContent = PROMOTED_CONTENT,
)
)
assertThat(latest!!.key).isEqualTo("notif1")
+ assertThat(latest!!.appName).isEqualTo("New Name")
assertThat(latest!!.statusBarChipIconView).isEqualTo(newIconView)
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModelTest.kt
index 942e6554e5d9..192ad879891f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModelTest.kt
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.chips.notification.ui.viewmodel
+import android.content.Context
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import android.view.View
@@ -23,6 +24,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.Flags.FLAG_PROMOTE_NOTIFICATIONS_AUTOMATICALLY
import com.android.systemui.SysuiTestCase
+import com.android.systemui.common.shared.model.ContentDescription.Companion.loadContentDescription
import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
import com.android.systemui.kosmos.collectLastValue
@@ -125,7 +127,7 @@ class NotifChipsViewModelTest : SysuiTestCase() {
@Test
@DisableFlags(FLAG_PROMOTE_NOTIFICATIONS_AUTOMATICALLY)
- fun chips_onePromotedNotif_statusBarIconViewMatches() =
+ fun chips_onePromotedNotif_connectedDisplaysFlagDisabled_statusBarIconViewMatches() =
kosmos.runTest {
val latest by collectLastValue(underTest.chips)
@@ -134,6 +136,7 @@ class NotifChipsViewModelTest : SysuiTestCase() {
listOf(
activeNotificationModel(
key = "notif",
+ appName = "Fake App Name",
statusBarChipIcon = icon,
promotedContent = PromotedNotificationContentModel.Builder("notif").build(),
)
@@ -142,7 +145,13 @@ class NotifChipsViewModelTest : SysuiTestCase() {
assertThat(latest).hasSize(1)
val chip = latest!![0]
- assertIsNotifChip(chip, icon, "notif")
+ assertIsNotifChip(
+ chip,
+ context,
+ icon,
+ expectedNotificationKey = "notif",
+ expectedContentDescriptionSubstrings = listOf("Ongoing", "Fake App Name"),
+ )
}
@Test
@@ -157,6 +166,7 @@ class NotifChipsViewModelTest : SysuiTestCase() {
listOf(
activeNotificationModel(
key = notifKey,
+ appName = "Fake App Name",
statusBarChipIcon = null,
promotedContent = PromotedNotificationContentModel.Builder(notifKey).build(),
)
@@ -165,9 +175,13 @@ class NotifChipsViewModelTest : SysuiTestCase() {
assertThat(latest).hasSize(1)
val chip = latest!![0]
- assertThat(chip).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
- assertThat(chip.icon)
- .isEqualTo(OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon(notifKey))
+ assertIsNotifChip(
+ chip,
+ context,
+ expectedIcon = null,
+ expectedNotificationKey = "notif",
+ expectedContentDescriptionSubstrings = listOf("Ongoing", "Fake App Name"),
+ )
}
@Test
@@ -230,8 +244,8 @@ class NotifChipsViewModelTest : SysuiTestCase() {
)
assertThat(latest).hasSize(2)
- assertIsNotifChip(latest!![0], firstIcon, "notif1")
- assertIsNotifChip(latest!![1], secondIcon, "notif2")
+ assertIsNotifChip(latest!![0], context, firstIcon, "notif1")
+ assertIsNotifChip(latest!![1], context, secondIcon, "notif2")
}
@Test
@@ -296,8 +310,8 @@ class NotifChipsViewModelTest : SysuiTestCase() {
)
assertThat(latest).hasSize(1)
- assertThat(latest!![0]).isInstanceOf(OngoingActivityChipModel.Shown.Text::class.java)
- assertThat((latest!![0] as OngoingActivityChipModel.Shown.Text).text)
+ assertThat(latest!![0]).isInstanceOf(OngoingActivityChipModel.Active.Text::class.java)
+ assertThat((latest!![0] as OngoingActivityChipModel.Active.Text).text)
.isEqualTo("Arrived")
}
@@ -321,7 +335,7 @@ class NotifChipsViewModelTest : SysuiTestCase() {
assertThat(latest).hasSize(1)
assertThat(latest!![0])
- .isInstanceOf(OngoingActivityChipModel.Shown.IconOnly::class.java)
+ .isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
}
@Test
@@ -351,7 +365,7 @@ class NotifChipsViewModelTest : SysuiTestCase() {
assertThat(latest).hasSize(1)
assertThat(latest!![0])
- .isInstanceOf(OngoingActivityChipModel.Shown.IconOnly::class.java)
+ .isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
}
@Test
@@ -381,7 +395,7 @@ class NotifChipsViewModelTest : SysuiTestCase() {
assertThat(latest).hasSize(1)
assertThat(latest!![0])
- .isInstanceOf(OngoingActivityChipModel.Shown.ShortTimeDelta::class.java)
+ .isInstanceOf(OngoingActivityChipModel.Active.ShortTimeDelta::class.java)
}
@Test
@@ -410,7 +424,7 @@ class NotifChipsViewModelTest : SysuiTestCase() {
assertThat(latest).hasSize(1)
assertThat(latest!![0])
- .isInstanceOf(OngoingActivityChipModel.Shown.ShortTimeDelta::class.java)
+ .isInstanceOf(OngoingActivityChipModel.Active.ShortTimeDelta::class.java)
}
@Test
@@ -438,7 +452,7 @@ class NotifChipsViewModelTest : SysuiTestCase() {
)
assertThat(latest).hasSize(1)
- assertThat(latest!![0]).isInstanceOf(OngoingActivityChipModel.Shown.Timer::class.java)
+ assertThat(latest!![0]).isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
}
@Test
@@ -466,7 +480,7 @@ class NotifChipsViewModelTest : SysuiTestCase() {
)
assertThat(latest).hasSize(1)
- assertThat(latest!![0]).isInstanceOf(OngoingActivityChipModel.Shown.Timer::class.java)
+ assertThat(latest!![0]).isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
}
@Test
@@ -498,7 +512,7 @@ class NotifChipsViewModelTest : SysuiTestCase() {
// THEN the chip shows the time
assertThat(latest!![0])
- .isInstanceOf(OngoingActivityChipModel.Shown.ShortTimeDelta::class.java)
+ .isInstanceOf(OngoingActivityChipModel.Active.ShortTimeDelta::class.java)
}
@Test
@@ -537,7 +551,7 @@ class NotifChipsViewModelTest : SysuiTestCase() {
// (In real life the chip won't show at all, but that's handled in a different part of
// the system. What we know here is that the chip shouldn't shrink to icon only.)
assertThat(latest!![0])
- .isInstanceOf(OngoingActivityChipModel.Shown.ShortTimeDelta::class.java)
+ .isInstanceOf(OngoingActivityChipModel.Active.ShortTimeDelta::class.java)
}
@Test
@@ -589,8 +603,9 @@ class NotifChipsViewModelTest : SysuiTestCase() {
// THEN the "notif" chip keeps showing time
val chip = latest!![0]
- assertThat(chip).isInstanceOf(OngoingActivityChipModel.Shown.ShortTimeDelta::class.java)
- assertIsNotifChip(chip, icon, "notif")
+ assertThat(chip)
+ .isInstanceOf(OngoingActivityChipModel.Active.ShortTimeDelta::class.java)
+ assertIsNotifChip(chip, context, icon, "notif")
}
@Test
@@ -627,7 +642,7 @@ class NotifChipsViewModelTest : SysuiTestCase() {
// THEN the chip shrinks to icon only
assertThat(latest!![0])
- .isInstanceOf(OngoingActivityChipModel.Shown.IconOnly::class.java)
+ .isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
}
@Test
@@ -705,24 +720,42 @@ class NotifChipsViewModelTest : SysuiTestCase() {
companion object {
fun assertIsNotifChip(
latest: OngoingActivityChipModel?,
+ context: Context,
expectedIcon: StatusBarIconView?,
- notificationKey: String,
+ expectedNotificationKey: String,
+ expectedContentDescriptionSubstrings: List<String> = emptyList(),
) {
- val shown = latest as OngoingActivityChipModel.Shown
+ val active = latest as OngoingActivityChipModel.Active
if (StatusBarConnectedDisplays.isEnabled) {
- assertThat(shown.icon)
- .isEqualTo(
- OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon(notificationKey)
+ assertThat(active.icon)
+ .isInstanceOf(
+ OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon::class.java
)
+ val icon =
+ active.icon as OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon
+
+ assertThat(icon.notificationKey).isEqualTo(expectedNotificationKey)
+ expectedContentDescriptionSubstrings.forEach {
+ assertThat(icon.contentDescription.loadContentDescription(context)).contains(it)
+ }
} else {
- assertThat(latest.icon)
- .isEqualTo(OngoingActivityChipModel.ChipIcon.StatusBarView(expectedIcon!!))
+ assertThat(active.icon)
+ .isInstanceOf(OngoingActivityChipModel.ChipIcon.StatusBarView::class.java)
+ val icon = active.icon as OngoingActivityChipModel.ChipIcon.StatusBarView
+ assertThat(icon.impl).isEqualTo(expectedIcon!!)
+ expectedContentDescriptionSubstrings.forEach {
+ assertThat(icon.contentDescription.loadContentDescription(context)).contains(it)
+ }
}
}
fun assertIsNotifKey(latest: OngoingActivityChipModel?, expectedKey: String) {
- assertThat((latest as OngoingActivityChipModel.Shown).icon)
- .isEqualTo(OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon(expectedKey))
+ assertThat(
+ ((latest as OngoingActivityChipModel.Active).icon
+ as OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon)
+ .notificationKey
+ )
+ .isEqualTo(expectedKey)
}
}
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/screenrecord/domain/interactor/ScreenRecordChipInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/screenrecord/domain/interactor/ScreenRecordChipInteractorTest.kt
index 11a125a21be0..538247e26a6b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/screenrecord/domain/interactor/ScreenRecordChipInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/screenrecord/domain/interactor/ScreenRecordChipInteractorTest.kt
@@ -34,7 +34,6 @@ import com.android.systemui.statusbar.chips.screenrecord.domain.model.ScreenReco
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -42,7 +41,6 @@ import org.junit.runner.RunWith
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class ScreenRecordChipInteractorTest : SysuiTestCase() {
private val kosmos = testKosmos().useUnconfinedTestDispatcher()
private val testScope = kosmos.testScope
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/screenrecord/ui/view/EndScreenRecordingDialogDelegateTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/screenrecord/ui/view/EndScreenRecordingDialogDelegateTest.kt
index 709e0b57c02a..f560ee7730ae 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/screenrecord/ui/view/EndScreenRecordingDialogDelegateTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/screenrecord/ui/view/EndScreenRecordingDialogDelegateTest.kt
@@ -23,6 +23,10 @@ import android.content.Intent
import android.content.applicationContext
import android.content.packageManager
import android.content.pm.ApplicationInfo
+import android.platform.test.annotations.DisableFlags
+import android.platform.test.annotations.EnableFlags
+import android.view.View
+import android.view.Window
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
@@ -37,7 +41,6 @@ import com.android.systemui.statusbar.chips.screenrecord.domain.interactor.scree
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.runner.RunWith
@@ -45,12 +48,12 @@ import org.mockito.kotlin.any
import org.mockito.kotlin.argumentCaptor
import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
+import org.mockito.kotlin.never
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class EndScreenRecordingDialogDelegateTest : SysuiTestCase() {
private val kosmos = Kosmos().also { it.testCase = this }
@@ -130,7 +133,7 @@ class EndScreenRecordingDialogDelegateTest : SysuiTestCase() {
verify(sysuiDialog)
.setPositiveButton(
eq(R.string.screenrecord_stop_dialog_button),
- clickListener.capture()
+ clickListener.capture(),
)
// Verify that clicking the button stops the recording
@@ -142,6 +145,36 @@ class EndScreenRecordingDialogDelegateTest : SysuiTestCase() {
assertThat(kosmos.screenRecordRepository.stopRecordingInvoked).isTrue()
}
+ @Test
+ @EnableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun accessibilityDataSensitive_flagEnabled_appliesSetting() {
+ createAndSetDelegate(recordedTask = null)
+
+ val window = mock<Window>()
+ val decorView = mock<View>()
+ whenever(sysuiDialog.window).thenReturn(window)
+ whenever(window.decorView).thenReturn(decorView)
+
+ underTest.beforeCreate(sysuiDialog, /* savedInstanceState= */ null)
+
+ verify(decorView).setAccessibilityDataSensitive(View.ACCESSIBILITY_DATA_SENSITIVE_YES)
+ }
+
+ @Test
+ @DisableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun accessibilityDataSensitive_flagDisabled_doesNotApplySetting() {
+ createAndSetDelegate(recordedTask = null)
+
+ val window = mock<Window>()
+ val decorView = mock<View>()
+ whenever(sysuiDialog.window).thenReturn(window)
+ whenever(window.decorView).thenReturn(decorView)
+
+ underTest.beforeCreate(sysuiDialog, /* savedInstanceState= */ null)
+
+ verify(decorView, never()).setAccessibilityDataSensitive(any())
+ }
+
private fun createAndSetDelegate(recordedTask: ActivityManager.RunningTaskInfo?) {
underTest =
EndScreenRecordingDialogDelegate(
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModelTest.kt
index 1f82dcd9c308..6cfad8540491 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModelTest.kt
@@ -101,7 +101,7 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
screenRecordRepo.screenRecordState.value = ScreenRecordModel.DoingNothing
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
}
@Test
@@ -111,9 +111,9 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
screenRecordRepo.screenRecordState.value = ScreenRecordModel.Starting(400)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown.Countdown::class.java)
- assertThat((latest as OngoingActivityChipModel.Shown).icon).isNull()
- assertThat((latest as OngoingActivityChipModel.Shown).onClickListenerLegacy).isNull()
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.Countdown::class.java)
+ assertThat((latest as OngoingActivityChipModel.Active).icon).isNull()
+ assertThat((latest as OngoingActivityChipModel.Active).onClickListenerLegacy).isNull()
}
// The millis we typically get from [ScreenRecordRepository] are around 2995, 1995, and 995.
@@ -124,7 +124,7 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
screenRecordRepo.screenRecordState.value = ScreenRecordModel.Starting(2995)
- assertThat((latest as OngoingActivityChipModel.Shown.Countdown).secondsUntilStarted)
+ assertThat((latest as OngoingActivityChipModel.Active.Countdown).secondsUntilStarted)
.isEqualTo(3)
}
@@ -135,7 +135,7 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
screenRecordRepo.screenRecordState.value = ScreenRecordModel.Starting(1995)
- assertThat((latest as OngoingActivityChipModel.Shown.Countdown).secondsUntilStarted)
+ assertThat((latest as OngoingActivityChipModel.Active.Countdown).secondsUntilStarted)
.isEqualTo(2)
}
@@ -146,7 +146,7 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
screenRecordRepo.screenRecordState.value = ScreenRecordModel.Starting(995)
- assertThat((latest as OngoingActivityChipModel.Shown.Countdown).secondsUntilStarted)
+ assertThat((latest as OngoingActivityChipModel.Active.Countdown).secondsUntilStarted)
.isEqualTo(1)
}
@@ -157,9 +157,9 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
screenRecordRepo.screenRecordState.value = ScreenRecordModel.Recording
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown.Timer::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
val icon =
- (((latest as OngoingActivityChipModel.Shown).icon)
+ (((latest as OngoingActivityChipModel.Active).icon)
as OngoingActivityChipModel.ChipIcon.SingleColorIcon)
.impl as Icon.Resource
assertThat(icon.res).isEqualTo(R.drawable.ic_screenrecord)
@@ -179,8 +179,8 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen("fake.package")
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
- assertThat(latestShareToApp).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
+ assertThat(latestShareToApp).isInstanceOf(OngoingActivityChipModel.Active::class.java)
// WHEN the stop action on the dialog is clicked
val dialogStopAction =
@@ -194,8 +194,8 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
dialogStopAction.onClick(mock<DialogInterface>(), 0)
// THEN both the screen record chip and the share-to-app chip are immediately hidden...
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
- assertThat(latestShareToApp).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
+ assertThat(latestShareToApp).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
// ...even though the repos still say it's recording
assertThat(screenRecordRepo.screenRecordState.value)
.isEqualTo(ScreenRecordModel.Recording)
@@ -203,7 +203,7 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
.isInstanceOf(MediaProjectionState.Projecting::class.java)
// AND we specify no animation
- assertThat((latest as OngoingActivityChipModel.Hidden).shouldAnimate).isFalse()
+ assertThat((latest as OngoingActivityChipModel.Inactive).shouldAnimate).isFalse()
}
@Test
@@ -213,7 +213,8 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
screenRecordRepo.screenRecordState.value = ScreenRecordModel.Starting(2000L)
- assertThat((latest as OngoingActivityChipModel.Shown).colors).isEqualTo(ColorsModel.Red)
+ assertThat((latest as OngoingActivityChipModel.Active).colors)
+ .isEqualTo(ColorsModel.Red)
}
@Test
@@ -223,7 +224,8 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
screenRecordRepo.screenRecordState.value = ScreenRecordModel.Recording
- assertThat((latest as OngoingActivityChipModel.Shown).colors).isEqualTo(ColorsModel.Red)
+ assertThat((latest as OngoingActivityChipModel.Active).colors)
+ .isEqualTo(ColorsModel.Red)
}
@Test
@@ -234,17 +236,19 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
systemClock.setElapsedRealtime(1234)
screenRecordRepo.screenRecordState.value = ScreenRecordModel.Recording
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
- assertThat((latest as OngoingActivityChipModel.Shown.Timer).startTimeMs).isEqualTo(1234)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
+ assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
+ .isEqualTo(1234)
screenRecordRepo.screenRecordState.value = ScreenRecordModel.DoingNothing
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
systemClock.setElapsedRealtime(5678)
screenRecordRepo.screenRecordState.value = ScreenRecordModel.Recording
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
- assertThat((latest as OngoingActivityChipModel.Shown.Timer).startTimeMs).isEqualTo(5678)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
+ assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
+ .isEqualTo(5678)
}
/** Regression test for b/349620526. */
@@ -258,8 +262,9 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
screenRecordRepo.screenRecordState.value = ScreenRecordModel.Recording
mediaProjectionRepo.mediaProjectionState.value = MediaProjectionState.NotProjecting
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
- assertThat((latest as OngoingActivityChipModel.Shown.Timer).startTimeMs).isEqualTo(1234)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
+ assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
+ .isEqualTo(1234)
// WHEN we receive the recording task info a few milliseconds later
systemClock.setElapsedRealtime(1240)
@@ -271,8 +276,9 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
)
// THEN the start time is still the old start time
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
- assertThat((latest as OngoingActivityChipModel.Shown.Timer).startTimeMs).isEqualTo(1234)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
+ assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
+ .isEqualTo(1234)
}
@Test
@@ -283,7 +289,7 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
screenRecordRepo.screenRecordState.value = ScreenRecordModel.Recording
mediaProjectionRepo.mediaProjectionState.value = MediaProjectionState.NotProjecting
- val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListenerLegacy)
+ val clickListener = ((latest as OngoingActivityChipModel.Active).onClickListenerLegacy)
assertThat(clickListener).isNotNull()
clickListener!!.onClick(chipView)
@@ -301,7 +307,7 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen("host.package")
- val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListenerLegacy)
+ val clickListener = ((latest as OngoingActivityChipModel.Active).onClickListenerLegacy)
assertThat(clickListener).isNotNull()
clickListener!!.onClick(chipView)
@@ -323,7 +329,7 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
FakeActivityTaskManager.createTask(taskId = 1),
)
- val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListenerLegacy)
+ val clickListener = ((latest as OngoingActivityChipModel.Active).onClickListenerLegacy)
assertThat(clickListener).isNotNull()
clickListener!!.onClick(chipView)
@@ -341,7 +347,7 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen("host.package")
- val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListenerLegacy)
+ val clickListener = ((latest as OngoingActivityChipModel.Active).onClickListenerLegacy)
clickListener!!.onClick(chipView)
val cujCaptor = argumentCaptor<DialogCuj>()
@@ -358,8 +364,8 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
testScope.runTest {
val latest by collectLastValue(underTest.chip)
screenRecordRepo.screenRecordState.value = ScreenRecordModel.Recording
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown.Timer::class.java)
- assertThat((latest as OngoingActivityChipModel.Shown).clickBehavior)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
+ assertThat((latest as OngoingActivityChipModel.Active).clickBehavior)
.isInstanceOf(OngoingActivityChipModel.ClickBehavior.ExpandAction::class.java)
}
@@ -372,7 +378,7 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value = MediaProjectionState.NotProjecting
val expandAction =
- ((latest as OngoingActivityChipModel.Shown).clickBehavior
+ ((latest as OngoingActivityChipModel.Active).clickBehavior
as OngoingActivityChipModel.ClickBehavior.ExpandAction)
expandAction.onClick(mockExpandable)
@@ -387,7 +393,7 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
screenRecordRepo.screenRecordState.value = ScreenRecordModel.Recording
val expandAction =
- ((latest as OngoingActivityChipModel.Shown).clickBehavior
+ ((latest as OngoingActivityChipModel.Active).clickBehavior
as OngoingActivityChipModel.ClickBehavior.ExpandAction)
expandAction.onClick(mockExpandable)
@@ -408,7 +414,7 @@ class ScreenRecordChipViewModelTest : SysuiTestCase() {
)
val expandAction =
- ((latest as OngoingActivityChipModel.Shown).clickBehavior
+ ((latest as OngoingActivityChipModel.Active).clickBehavior
as OngoingActivityChipModel.ClickBehavior.ExpandAction)
expandAction.onClick(mockExpandable)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndGenericShareToAppDialogDelegateTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndGenericShareToAppDialogDelegateTest.kt
index 411d306f163c..27ed0591dc36 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndGenericShareToAppDialogDelegateTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndGenericShareToAppDialogDelegateTest.kt
@@ -18,6 +18,11 @@ package com.android.systemui.statusbar.chips.sharetoapp.ui.view
import android.content.DialogInterface
import android.content.applicationContext
+import android.platform.test.annotations.DisableFlags
+import android.platform.test.annotations.EnableFlags
+import android.view.View
+import android.view.Window
+import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.kosmos.testScope
@@ -28,29 +33,27 @@ import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
+import org.junit.runner.RunWith
import org.mockito.kotlin.any
import org.mockito.kotlin.argumentCaptor
import org.mockito.kotlin.mock
+import org.mockito.kotlin.never
import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
+@RunWith(AndroidJUnit4::class)
class EndGenericShareToAppDialogDelegateTest : SysuiTestCase() {
private val kosmos = testKosmos()
private val sysuiDialog = mock<SystemUIDialog>()
- private val underTest =
- EndGenericShareToAppDialogDelegate(
- kosmos.endMediaProjectionDialogHelper,
- kosmos.applicationContext,
- stopAction = kosmos.mediaProjectionChipInteractor::stopProjecting,
- )
+ private lateinit var underTest: EndGenericShareToAppDialogDelegate
@Test
fun positiveButton_clickStopsRecording() =
kosmos.testScope.runTest {
+ createAndSetDelegate()
underTest.beforeCreate(sysuiDialog, /* savedInstanceState= */ null)
assertThat(kosmos.fakeMediaProjectionRepository.stopProjectingInvoked).isFalse()
@@ -62,4 +65,43 @@ class EndGenericShareToAppDialogDelegateTest : SysuiTestCase() {
assertThat(kosmos.fakeMediaProjectionRepository.stopProjectingInvoked).isTrue()
}
+
+ @Test
+ @EnableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun accessibilityDataSensitive_flagEnabled_appliesSetting() {
+ createAndSetDelegate()
+
+ val window = mock<Window>()
+ val decorView = mock<View>()
+ whenever(sysuiDialog.window).thenReturn(window)
+ whenever(window.decorView).thenReturn(decorView)
+
+ underTest.beforeCreate(sysuiDialog, /* savedInstanceState= */ null)
+
+ verify(decorView).setAccessibilityDataSensitive(View.ACCESSIBILITY_DATA_SENSITIVE_YES)
+ }
+
+ @Test
+ @DisableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun accessibilityDataSensitive_flagDisabled_doesNotApplySetting() {
+ createAndSetDelegate()
+
+ val window = mock<Window>()
+ val decorView = mock<View>()
+ whenever(sysuiDialog.window).thenReturn(window)
+ whenever(window.decorView).thenReturn(decorView)
+
+ underTest.beforeCreate(sysuiDialog, /* savedInstanceState= */ null)
+
+ verify(decorView, never()).setAccessibilityDataSensitive(any())
+ }
+
+ private fun createAndSetDelegate() {
+ underTest =
+ EndGenericShareToAppDialogDelegate(
+ kosmos.endMediaProjectionDialogHelper,
+ kosmos.applicationContext,
+ stopAction = kosmos.mediaProjectionChipInteractor::stopProjecting,
+ )
+ }
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndShareScreenToAppDialogDelegateTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndShareScreenToAppDialogDelegateTest.kt
index 6885a6bd7229..95aa6cd3250b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndShareScreenToAppDialogDelegateTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndShareScreenToAppDialogDelegateTest.kt
@@ -23,6 +23,11 @@ import android.content.applicationContext
import android.content.packageManager
import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
+import android.platform.test.annotations.DisableFlags
+import android.platform.test.annotations.EnableFlags
+import android.view.View
+import android.view.Window
+import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.kosmos.Kosmos
@@ -38,18 +43,19 @@ import com.android.systemui.statusbar.chips.mediaprojection.ui.view.endMediaProj
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
+import org.junit.runner.RunWith
import org.mockito.kotlin.any
import org.mockito.kotlin.argumentCaptor
import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
+import org.mockito.kotlin.never
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
+@RunWith(AndroidJUnit4::class)
class EndShareScreenToAppDialogDelegateTest : SysuiTestCase() {
private val kosmos = Kosmos().also { it.testCase = this }
private val sysuiDialog = mock<SystemUIDialog>()
@@ -193,6 +199,40 @@ class EndShareScreenToAppDialogDelegateTest : SysuiTestCase() {
assertThat(kosmos.fakeMediaProjectionRepository.stopProjectingInvoked).isTrue()
}
+ @Test
+ @EnableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun accessibilityDataSensitive_flagEnabled_appliesSetting() {
+ createAndSetDelegate(ENTIRE_SCREEN)
+ whenever(kosmos.packageManager.getApplicationInfo(eq(HOST_PACKAGE), any<Int>()))
+ .thenThrow(PackageManager.NameNotFoundException())
+
+ val window = mock<Window>()
+ val decorView = mock<View>()
+ whenever(sysuiDialog.window).thenReturn(window)
+ whenever(window.decorView).thenReturn(decorView)
+
+ underTest.beforeCreate(sysuiDialog, /* savedInstanceState= */ null)
+
+ verify(decorView).setAccessibilityDataSensitive(View.ACCESSIBILITY_DATA_SENSITIVE_YES)
+ }
+
+ @Test
+ @DisableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun accessibilityDataSensitive_flagDisabled_doesNotApplySetting() {
+ createAndSetDelegate(ENTIRE_SCREEN)
+ whenever(kosmos.packageManager.getApplicationInfo(eq(HOST_PACKAGE), any<Int>()))
+ .thenThrow(PackageManager.NameNotFoundException())
+
+ val window = mock<Window>()
+ val decorView = mock<View>()
+ whenever(sysuiDialog.window).thenReturn(window)
+ whenever(window.decorView).thenReturn(decorView)
+
+ underTest.beforeCreate(sysuiDialog, /* savedInstanceState= */ null)
+
+ verify(decorView, never()).setAccessibilityDataSensitive(any())
+ }
+
private fun createAndSetDelegate(state: MediaProjectionState.Projecting) {
underTest =
EndShareScreenToAppDialogDelegate(
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModelTest.kt
index 36fc5aa16407..e708382799c2 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModelTest.kt
@@ -31,9 +31,10 @@ import com.android.systemui.animation.mockDialogTransitionAnimator
import com.android.systemui.common.shared.model.ContentDescription
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.coroutines.collectLastValue
-import com.android.systemui.kosmos.Kosmos
-import com.android.systemui.kosmos.testCase
+import com.android.systemui.kosmos.collectLastValue
+import com.android.systemui.kosmos.runTest
import com.android.systemui.kosmos.testScope
+import com.android.systemui.kosmos.useUnconfinedTestDispatcher
import com.android.systemui.mediaprojection.data.model.MediaProjectionState
import com.android.systemui.mediaprojection.data.repository.fakeMediaProjectionRepository
import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createTask
@@ -41,6 +42,7 @@ import com.android.systemui.res.R
import com.android.systemui.statusbar.chips.mediaprojection.domain.interactor.MediaProjectionChipInteractorTest.Companion.CAST_TO_OTHER_DEVICES_PACKAGE
import com.android.systemui.statusbar.chips.mediaprojection.domain.interactor.MediaProjectionChipInteractorTest.Companion.NORMAL_PACKAGE
import com.android.systemui.statusbar.chips.mediaprojection.domain.interactor.MediaProjectionChipInteractorTest.Companion.setUpPackageManagerForMediaProjection
+import com.android.systemui.statusbar.chips.mediaprojection.domain.model.MediaProjectionStopDialogModel
import com.android.systemui.statusbar.chips.sharetoapp.ui.view.EndGenericShareToAppDialogDelegate
import com.android.systemui.statusbar.chips.sharetoapp.ui.view.EndShareScreenToAppDialogDelegate
import com.android.systemui.statusbar.chips.ui.model.ColorsModel
@@ -51,6 +53,7 @@ import com.android.systemui.statusbar.core.StatusBarRootModernization
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.statusbar.phone.mockSystemUIDialogFactory
import com.android.systemui.statusbar.phone.ongoingcall.StatusBarChipsModernization
+import com.android.systemui.testKosmos
import com.android.systemui.util.time.fakeSystemClock
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
@@ -58,6 +61,7 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyBoolean
+import org.mockito.Mockito.times
import org.mockito.kotlin.any
import org.mockito.kotlin.argumentCaptor
import org.mockito.kotlin.eq
@@ -68,7 +72,7 @@ import org.mockito.kotlin.whenever
@SmallTest
@RunWith(AndroidJUnit4::class)
class ShareToAppChipViewModelTest : SysuiTestCase() {
- private val kosmos = Kosmos().also { it.testCase = this }
+ private val kosmos = testKosmos().useUnconfinedTestDispatcher()
private val testScope = kosmos.testScope
private val mediaProjectionRepo = kosmos.fakeMediaProjectionRepository
private val systemClock = kosmos.fakeSystemClock
@@ -89,9 +93,11 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
mock<Expandable>().apply { whenever(dialogTransitionController(any())).thenReturn(mock()) }
private val underTest = kosmos.shareToAppChipViewModel
+ private val mockDialog = mock<SystemUIDialog>()
@Before
fun setUp() {
+ underTest.start()
setUpPackageManagerForMediaProjection(kosmos)
whenever(kosmos.mockSystemUIDialogFactory.create(any<EndShareScreenToAppDialogDelegate>()))
@@ -101,13 +107,230 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
}
@Test
+ @EnableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun chip_flagEnabled_projectionStartedDuringCallAndActivePostCallEventEmitted_chipHidden() =
+ kosmos.runTest {
+ val latestChip by collectLastValue(underTest.chip)
+
+ // Set mediaProjectionState to Projecting
+ mediaProjectionRepo.mediaProjectionState.value =
+ MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
+
+ // Verify the chip is initially shown
+ assertThat(latestChip).isInstanceOf(OngoingActivityChipModel.Active::class.java)
+
+ fakeMediaProjectionRepository.emitProjectionStartedDuringCallAndActivePostCallEvent()
+
+ // Verify the chip is hidden
+ assertThat(latestChip).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
+ }
+
+ @Test
+ @DisableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun chip_flagDisabled_projectionStartedDuringCallAndActivePostCallEventEmitted_chipRemainsVisible() =
+ kosmos.runTest {
+ val latestChip by collectLastValue(underTest.chip)
+
+ // Set mediaProjectionState to Projecting
+ mediaProjectionRepo.mediaProjectionState.value =
+ MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
+
+ // Verify the chip is initially shown
+ assertThat(latestChip).isInstanceOf(OngoingActivityChipModel.Active::class.java)
+
+ fakeMediaProjectionRepository.emitProjectionStartedDuringCallAndActivePostCallEvent()
+
+ // Chip is still shown
+ assertThat(latestChip).isInstanceOf(OngoingActivityChipModel.Active::class.java)
+ }
+
+ @Test
+ @EnableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun stopDialog_flagEnabled_initialState_isHidden() =
+ kosmos.runTest {
+ val latest by collectLastValue(underTest.stopDialogToShow)
+
+ assertThat(latest).isEqualTo(MediaProjectionStopDialogModel.Hidden)
+ }
+
+ @Test
+ @DisableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun stopDialog_flagDisabled_projectionStartedDuringCallAndActivePostCallEventEmitted_dialogRemainsHidden() =
+ kosmos.runTest {
+ val latestStopDialogModel by collectLastValue(underTest.stopDialogToShow)
+
+ // Set mediaProjectionRepo state to Projecting
+ mediaProjectionRepo.mediaProjectionState.value =
+ MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
+
+ fakeMediaProjectionRepository.emitProjectionStartedDuringCallAndActivePostCallEvent()
+
+ // Verify that no dialog is shown
+ assertThat(latestStopDialogModel).isEqualTo(MediaProjectionStopDialogModel.Hidden)
+ }
+
+ @Test
+ @EnableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun stopDialog_notProjectingState_flagEnabled_remainsHidden() =
+ kosmos.runTest {
+ val latest by collectLastValue(underTest.stopDialogToShow)
+
+ // Set the state to not projecting
+ mediaProjectionRepo.mediaProjectionState.value = MediaProjectionState.NotProjecting
+
+ fakeMediaProjectionRepository.emitProjectionStartedDuringCallAndActivePostCallEvent()
+
+ // Verify that the dialog remains hidden
+ assertThat(latest).isEqualTo(MediaProjectionStopDialogModel.Hidden)
+ }
+
+ @Test
+ @EnableFlags(
+ com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END,
+ FLAG_STATUS_BAR_SHOW_AUDIO_ONLY_PROJECTION_CHIP,
+ )
+ fun stopDialog_projectingAudio_flagEnabled_eventEmitted_showsGenericStopDialog() =
+ kosmos.runTest {
+ val latest by collectLastValue(underTest.stopDialogToShow)
+
+ // Set the state to projecting audio
+ mediaProjectionRepo.mediaProjectionState.value =
+ MediaProjectionState.Projecting.NoScreen(NORMAL_PACKAGE)
+
+ fakeMediaProjectionRepository.emitProjectionStartedDuringCallAndActivePostCallEvent()
+
+ // Verify that the generic dialog is shown
+ assertThat(latest).isInstanceOf(MediaProjectionStopDialogModel.Shown::class.java)
+ val dialogDelegate = (latest as MediaProjectionStopDialogModel.Shown).dialogDelegate
+ assertThat(dialogDelegate).isInstanceOf(EndGenericShareToAppDialogDelegate::class.java)
+ }
+
+ @Test
+ @EnableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun stopDialog_projectingEntireScreen_flagEnabled_eventEmitted_showsShareScreenToAppStopDialog() =
+ kosmos.runTest {
+ val latest by collectLastValue(underTest.stopDialogToShow)
+
+ // Set the state to projecting the entire screen
+ mediaProjectionRepo.mediaProjectionState.value =
+ MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
+
+ assertThat(latest).isInstanceOf(MediaProjectionStopDialogModel.Hidden::class.java)
+
+ fakeMediaProjectionRepository.emitProjectionStartedDuringCallAndActivePostCallEvent()
+
+ // Verify that the dialog is shown
+ assertThat(latest).isInstanceOf(MediaProjectionStopDialogModel.Shown::class.java)
+ val dialogDelegate = (latest as MediaProjectionStopDialogModel.Shown).dialogDelegate
+ assertThat(dialogDelegate).isInstanceOf(EndShareScreenToAppDialogDelegate::class.java)
+ }
+
+ @Test
+ @EnableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun stopDialog_projectingEntireScreen_eventEmitted_hasCancelBehaviour() =
+ kosmos.runTest {
+ val latestDialogModel by collectLastValue(underTest.stopDialogToShow)
+
+ mediaProjectionRepo.mediaProjectionState.value =
+ MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
+
+ fakeMediaProjectionRepository.emitProjectionStartedDuringCallAndActivePostCallEvent()
+
+ // Verify that the dialog is shown
+ assertThat(latestDialogModel)
+ .isInstanceOf(MediaProjectionStopDialogModel.Shown::class.java)
+
+ val dialogModel = latestDialogModel as MediaProjectionStopDialogModel.Shown
+
+ whenever(dialogModel.dialogDelegate.createDialog()).thenReturn(mockDialog)
+
+ dialogModel.createAndShowDialog()
+
+ // Verify dialog is shown
+ verify(mockDialog).show()
+
+ // Verify dialog is hidden when dialog is cancelled
+ argumentCaptor<DialogInterface.OnCancelListener>().apply {
+ verify(mockDialog).setOnCancelListener(capture())
+ firstValue.onCancel(mockDialog)
+ }
+ assertThat(underTest.stopDialogToShow.value)
+ .isEqualTo(MediaProjectionStopDialogModel.Hidden)
+
+ verify(mockDialog, times(1)).setOnCancelListener(any())
+ }
+
+ @Test
+ @EnableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun stopDialog_projectingEntireScreen_eventEmitted_hasDismissBehaviour() =
+ kosmos.runTest {
+ val latestDialogModel by collectLastValue(underTest.stopDialogToShow)
+
+ mediaProjectionRepo.mediaProjectionState.value =
+ MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
+
+ fakeMediaProjectionRepository.emitProjectionStartedDuringCallAndActivePostCallEvent()
+
+ // Verify that the dialog is shown
+ assertThat(latestDialogModel)
+ .isInstanceOf(MediaProjectionStopDialogModel.Shown::class.java)
+
+ val dialogModel = latestDialogModel as MediaProjectionStopDialogModel.Shown
+
+ whenever(dialogModel.dialogDelegate.createDialog()).thenReturn(mockDialog)
+
+ // Simulate showing the dialog
+ dialogModel.createAndShowDialog()
+
+ // Verify dialog is shown
+ verify(mockDialog).show()
+
+ // Verify dialog is hidden when dialog is dismissed
+ argumentCaptor<DialogInterface.OnDismissListener>().apply {
+ verify(mockDialog).setOnDismissListener(capture())
+ firstValue.onDismiss(mockDialog)
+ }
+ assertThat(underTest.stopDialogToShow.value)
+ .isEqualTo(MediaProjectionStopDialogModel.Hidden)
+
+ verify(mockDialog, times(1)).setOnDismissListener(any())
+ }
+
+ @Test
+ @EnableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun stopDialog_flagEnabled_eventEmitted_dialogCannotBeDismissedByTouchOutside() =
+ kosmos.runTest {
+ val latestDialogModel by collectLastValue(underTest.stopDialogToShow)
+
+ mediaProjectionRepo.mediaProjectionState.value =
+ MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
+
+ fakeMediaProjectionRepository.emitProjectionStartedDuringCallAndActivePostCallEvent()
+
+ // Verify that the dialog is shown
+ assertThat(latestDialogModel)
+ .isInstanceOf(MediaProjectionStopDialogModel.Shown::class.java)
+
+ val dialogModel = latestDialogModel as MediaProjectionStopDialogModel.Shown
+
+ whenever(dialogModel.dialogDelegate.createDialog()).thenReturn(mockDialog)
+
+ dialogModel.createAndShowDialog()
+
+ verify(mockDialog).show()
+
+ // Verify that setCanceledOnTouchOutside(false) is called
+ verify(mockDialog).setCanceledOnTouchOutside(false)
+ }
+
+ @Test
fun chip_notProjectingState_isHidden() =
testScope.runTest {
val latest by collectLastValue(underTest.chip)
mediaProjectionRepo.mediaProjectionState.value = MediaProjectionState.NotProjecting
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
}
@Test
@@ -122,7 +345,7 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
hostDeviceName = null,
)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
}
@Test
@@ -137,7 +360,7 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
createTask(taskId = 1),
)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
}
@Test
@@ -148,7 +371,7 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(CAST_TO_OTHER_DEVICES_PACKAGE)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
}
@Test
@@ -160,9 +383,9 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.NoScreen(NORMAL_PACKAGE, hostDeviceName = null)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown.IconOnly::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
val icon =
- (((latest as OngoingActivityChipModel.Shown).icon)
+ (((latest as OngoingActivityChipModel.Active).icon)
as OngoingActivityChipModel.ChipIcon.SingleColorIcon)
.impl as Icon.Resource
assertThat(icon.res).isEqualTo(R.drawable.ic_present_to_all)
@@ -183,9 +406,9 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
createTask(taskId = 1),
)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown.Timer::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
val icon =
- (((latest as OngoingActivityChipModel.Shown).icon)
+ (((latest as OngoingActivityChipModel.Active).icon)
as OngoingActivityChipModel.ChipIcon.SingleColorIcon)
.impl as Icon.Resource
assertThat(icon.res).isEqualTo(R.drawable.ic_present_to_all)
@@ -200,9 +423,9 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown.Timer::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
val icon =
- (((latest as OngoingActivityChipModel.Shown).icon)
+ (((latest as OngoingActivityChipModel.Active).icon)
as OngoingActivityChipModel.ChipIcon.SingleColorIcon)
.impl as Icon.Resource
assertThat(icon.res).isEqualTo(R.drawable.ic_present_to_all)
@@ -217,7 +440,7 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
// WHEN the stop action on the dialog is clicked
val dialogStopAction =
@@ -231,13 +454,13 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
dialogStopAction.onClick(mock<DialogInterface>(), 0)
// THEN the chip is immediately hidden...
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
// ...even though the repo still says it's projecting
assertThat(mediaProjectionRepo.mediaProjectionState.value)
.isInstanceOf(MediaProjectionState.Projecting::class.java)
// AND we specify no animation
- assertThat((latest as OngoingActivityChipModel.Hidden).shouldAnimate).isFalse()
+ assertThat((latest as OngoingActivityChipModel.Inactive).shouldAnimate).isFalse()
}
@Test
@@ -248,7 +471,8 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
- assertThat((latest as OngoingActivityChipModel.Shown).colors).isEqualTo(ColorsModel.Red)
+ assertThat((latest as OngoingActivityChipModel.Active).colors)
+ .isEqualTo(ColorsModel.Red)
}
@Test
@@ -260,11 +484,12 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
- assertThat((latest as OngoingActivityChipModel.Shown.Timer).startTimeMs).isEqualTo(1234)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
+ assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
+ .isEqualTo(1234)
mediaProjectionRepo.mediaProjectionState.value = MediaProjectionState.NotProjecting
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
systemClock.setElapsedRealtime(5678)
mediaProjectionRepo.mediaProjectionState.value =
@@ -274,8 +499,9 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
createTask(taskId = 1),
)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
- assertThat((latest as OngoingActivityChipModel.Shown.Timer).startTimeMs).isEqualTo(5678)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
+ assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
+ .isEqualTo(5678)
}
@Test
@@ -287,7 +513,7 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.NoScreen(NORMAL_PACKAGE)
- val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListenerLegacy)
+ val clickListener = ((latest as OngoingActivityChipModel.Active).onClickListenerLegacy)
assertThat(clickListener).isNotNull()
clickListener!!.onClick(chipView)
@@ -308,7 +534,7 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
- val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListenerLegacy)
+ val clickListener = ((latest as OngoingActivityChipModel.Active).onClickListenerLegacy)
assertThat(clickListener).isNotNull()
clickListener!!.onClick(chipView)
@@ -333,7 +559,7 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
createTask(taskId = 1),
)
- val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListenerLegacy)
+ val clickListener = ((latest as OngoingActivityChipModel.Active).onClickListenerLegacy)
assertThat(clickListener).isNotNull()
clickListener!!.onClick(chipView)
@@ -358,7 +584,7 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
createTask(taskId = 1),
)
- val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListenerLegacy)
+ val clickListener = ((latest as OngoingActivityChipModel.Active).onClickListenerLegacy)
clickListener!!.onClick(chipView)
val cujCaptor = argumentCaptor<DialogCuj>()
@@ -378,7 +604,7 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.NoScreen(NORMAL_PACKAGE)
- assertThat((latest as OngoingActivityChipModel.Shown).clickBehavior)
+ assertThat((latest as OngoingActivityChipModel.Active).clickBehavior)
.isInstanceOf(OngoingActivityChipModel.ClickBehavior.ExpandAction::class.java)
}
@@ -390,7 +616,7 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
mediaProjectionRepo.mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
- assertThat((latest as OngoingActivityChipModel.Shown).clickBehavior)
+ assertThat((latest as OngoingActivityChipModel.Active).clickBehavior)
.isInstanceOf(OngoingActivityChipModel.ClickBehavior.ExpandAction::class.java)
}
@@ -406,7 +632,7 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
createTask(taskId = 1),
)
- assertThat((latest as OngoingActivityChipModel.Shown).clickBehavior)
+ assertThat((latest as OngoingActivityChipModel.Active).clickBehavior)
.isInstanceOf(OngoingActivityChipModel.ClickBehavior.ExpandAction::class.java)
}
@@ -423,7 +649,7 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
MediaProjectionState.Projecting.NoScreen(NORMAL_PACKAGE)
val expandAction =
- ((latest as OngoingActivityChipModel.Shown).clickBehavior
+ ((latest as OngoingActivityChipModel.Active).clickBehavior
as OngoingActivityChipModel.ClickBehavior.ExpandAction)
expandAction.onClick(mockExpandable)
verify(kosmos.mockDialogTransitionAnimator)
@@ -439,7 +665,7 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
val expandAction =
- ((latest as OngoingActivityChipModel.Shown).clickBehavior
+ ((latest as OngoingActivityChipModel.Active).clickBehavior
as OngoingActivityChipModel.ClickBehavior.ExpandAction)
expandAction.onClick(mockExpandable)
verify(kosmos.mockDialogTransitionAnimator)
@@ -459,7 +685,7 @@ class ShareToAppChipViewModelTest : SysuiTestCase() {
)
val expandAction =
- ((latest as OngoingActivityChipModel.Shown).clickBehavior
+ ((latest as OngoingActivityChipModel.Active).clickBehavior
as OngoingActivityChipModel.ClickBehavior.ExpandAction)
expandAction.onClick(mockExpandable)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/ChipTransitionHelperTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/ChipTransitionHelperTest.kt
index d099e70c9bc5..60030ad4e428 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/ChipTransitionHelperTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/ChipTransitionHelperTest.kt
@@ -30,7 +30,6 @@ import com.android.systemui.statusbar.chips.ui.model.ColorsModel
import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.runCurrent
@@ -39,7 +38,6 @@ import org.junit.runner.RunWith
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class ChipTransitionHelperTest : SysuiTestCase() {
private val kosmos = Kosmos()
private val testScope = kosmos.testScope
@@ -49,11 +47,12 @@ class ChipTransitionHelperTest : SysuiTestCase() {
testScope.runTest {
val underTest = ChipTransitionHelper(kosmos.applicationCoroutineScope)
val inputChipFlow =
- MutableStateFlow<OngoingActivityChipModel>(OngoingActivityChipModel.Hidden())
+ MutableStateFlow<OngoingActivityChipModel>(OngoingActivityChipModel.Inactive())
val latest by collectLastValue(underTest.createChipFlow(inputChipFlow))
val newChip =
- OngoingActivityChipModel.Shown.Timer(
+ OngoingActivityChipModel.Active.Timer(
+ key = KEY,
icon = createIcon(R.drawable.ic_cake),
colors = ColorsModel.Themed,
startTimeMs = 100L,
@@ -66,7 +65,8 @@ class ChipTransitionHelperTest : SysuiTestCase() {
assertThat(latest).isEqualTo(newChip)
val newerChip =
- OngoingActivityChipModel.Shown.IconOnly(
+ OngoingActivityChipModel.Active.IconOnly(
+ key = KEY,
icon = createIcon(R.drawable.ic_hotspot),
colors = ColorsModel.Themed,
onClickListenerLegacy = null,
@@ -83,11 +83,12 @@ class ChipTransitionHelperTest : SysuiTestCase() {
testScope.runTest {
val underTest = ChipTransitionHelper(kosmos.applicationCoroutineScope)
val inputChipFlow =
- MutableStateFlow<OngoingActivityChipModel>(OngoingActivityChipModel.Hidden())
+ MutableStateFlow<OngoingActivityChipModel>(OngoingActivityChipModel.Inactive())
val latest by collectLastValue(underTest.createChipFlow(inputChipFlow))
- val shownChip =
- OngoingActivityChipModel.Shown.Timer(
+ val activeChip =
+ OngoingActivityChipModel.Active.Timer(
+ key = KEY,
icon = createIcon(R.drawable.ic_cake),
colors = ColorsModel.Themed,
startTimeMs = 100L,
@@ -95,28 +96,28 @@ class ChipTransitionHelperTest : SysuiTestCase() {
clickBehavior = OngoingActivityChipModel.ClickBehavior.None,
)
- inputChipFlow.value = shownChip
+ inputChipFlow.value = activeChip
- assertThat(latest).isEqualTo(shownChip)
+ assertThat(latest).isEqualTo(activeChip)
// WHEN #onActivityStopped is invoked
underTest.onActivityStoppedFromDialog()
runCurrent()
// THEN the chip is hidden and has no animation
- assertThat(latest).isEqualTo(OngoingActivityChipModel.Hidden(shouldAnimate = false))
+ assertThat(latest).isEqualTo(OngoingActivityChipModel.Inactive(shouldAnimate = false))
// WHEN only 250ms have elapsed
advanceTimeBy(250)
// THEN the chip is still hidden
- assertThat(latest).isEqualTo(OngoingActivityChipModel.Hidden(shouldAnimate = false))
+ assertThat(latest).isEqualTo(OngoingActivityChipModel.Inactive(shouldAnimate = false))
// WHEN over 500ms have elapsed
advanceTimeBy(251)
// THEN the chip returns to the original input flow value
- assertThat(latest).isEqualTo(shownChip)
+ assertThat(latest).isEqualTo(activeChip)
}
@Test
@@ -124,11 +125,12 @@ class ChipTransitionHelperTest : SysuiTestCase() {
testScope.runTest {
val underTest = ChipTransitionHelper(kosmos.applicationCoroutineScope)
val inputChipFlow =
- MutableStateFlow<OngoingActivityChipModel>(OngoingActivityChipModel.Hidden())
+ MutableStateFlow<OngoingActivityChipModel>(OngoingActivityChipModel.Inactive())
val latest by collectLastValue(underTest.createChipFlow(inputChipFlow))
- val shownChip =
- OngoingActivityChipModel.Shown.Timer(
+ val activeChip =
+ OngoingActivityChipModel.Active.Timer(
+ key = KEY,
icon = createIcon(R.drawable.ic_cake),
colors = ColorsModel.Themed,
startTimeMs = 100L,
@@ -136,16 +138,16 @@ class ChipTransitionHelperTest : SysuiTestCase() {
clickBehavior = OngoingActivityChipModel.ClickBehavior.None,
)
- inputChipFlow.value = shownChip
+ inputChipFlow.value = activeChip
- assertThat(latest).isEqualTo(shownChip)
+ assertThat(latest).isEqualTo(activeChip)
// WHEN #onActivityStopped is invoked
underTest.onActivityStoppedFromDialog()
runCurrent()
// THEN the chip is hidden and has no animation
- assertThat(latest).isEqualTo(OngoingActivityChipModel.Hidden(shouldAnimate = false))
+ assertThat(latest).isEqualTo(OngoingActivityChipModel.Inactive(shouldAnimate = false))
// WHEN 250ms have elapsed, get another stop event
advanceTimeBy(250)
@@ -153,15 +155,19 @@ class ChipTransitionHelperTest : SysuiTestCase() {
runCurrent()
// THEN the chip is still hidden for another 500ms afterwards
- assertThat(latest).isEqualTo(OngoingActivityChipModel.Hidden(shouldAnimate = false))
+ assertThat(latest).isEqualTo(OngoingActivityChipModel.Inactive(shouldAnimate = false))
advanceTimeBy(499)
- assertThat(latest).isEqualTo(OngoingActivityChipModel.Hidden(shouldAnimate = false))
+ assertThat(latest).isEqualTo(OngoingActivityChipModel.Inactive(shouldAnimate = false))
advanceTimeBy(2)
- assertThat(latest).isEqualTo(shownChip)
+ assertThat(latest).isEqualTo(activeChip)
}
private fun createIcon(@DrawableRes drawable: Int) =
OngoingActivityChipModel.ChipIcon.SingleColorIcon(
Icon.Resource(drawable, contentDescription = null)
)
+
+ companion object {
+ private const val KEY = "testKey"
+ }
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModelTest.kt
index a4b6a841d61b..626dcd5b0864 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModelTest.kt
@@ -40,6 +40,8 @@ import com.android.systemui.screenrecord.data.repository.screenRecordRepository
import com.android.systemui.statusbar.chips.mediaprojection.domain.interactor.MediaProjectionChipInteractorTest.Companion.NORMAL_PACKAGE
import com.android.systemui.statusbar.chips.mediaprojection.domain.interactor.MediaProjectionChipInteractorTest.Companion.setUpPackageManagerForMediaProjection
import com.android.systemui.statusbar.chips.notification.shared.StatusBarNotifChips
+import com.android.systemui.statusbar.chips.screenrecord.ui.viewmodel.ScreenRecordChipViewModel
+import com.android.systemui.statusbar.chips.sharetoapp.ui.viewmodel.ShareToAppChipViewModel
import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
import com.android.systemui.statusbar.chips.ui.view.ChipBackgroundContainer
import com.android.systemui.statusbar.core.StatusBarConnectedDisplays
@@ -52,7 +54,6 @@ import com.android.systemui.statusbar.phone.ongoingcall.shared.model.inCallModel
import com.android.systemui.testKosmos
import com.android.systemui.util.time.fakeSystemClock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.test.runCurrent
@@ -71,7 +72,6 @@ import org.mockito.kotlin.whenever
/** Tests for [OngoingActivityChipsViewModel] when the [StatusBarNotifChips] flag is disabled. */
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
@DisableFlags(StatusBarNotifChips.FLAG_NAME)
class OngoingActivityChipsViewModelTest : SysuiTestCase() {
private val kosmos = testKosmos()
@@ -118,7 +118,7 @@ class OngoingActivityChipsViewModelTest : SysuiTestCase() {
val latest by collectLastValue(underTest.primaryChip)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
}
@Test
@@ -266,7 +266,8 @@ class OngoingActivityChipsViewModelTest : SysuiTestCase() {
runCurrent()
- assertThat((latest as OngoingActivityChipModel.Shown.Timer).startTimeMs).isEqualTo(1234)
+ assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
+ .isEqualTo(1234)
// Stop subscribing to the chip flow
job1.cancel()
@@ -280,7 +281,8 @@ class OngoingActivityChipsViewModelTest : SysuiTestCase() {
runCurrent()
// THEN the old start time is still used
- assertThat((latest as OngoingActivityChipModel.Shown.Timer).startTimeMs).isEqualTo(1234)
+ assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
+ .isEqualTo(1234)
job2.cancel()
}
@@ -289,7 +291,11 @@ class OngoingActivityChipsViewModelTest : SysuiTestCase() {
fun primaryChip_screenRecordStoppedViaDialog_chipHiddenWithoutAnimation() =
testScope.runTest {
screenRecordState.value = ScreenRecordModel.Recording
- mediaProjectionState.value = MediaProjectionState.NotProjecting
+ mediaProjectionState.value =
+ MediaProjectionState.Projecting.EntireScreen(
+ NORMAL_PACKAGE,
+ hostDeviceName = "Recording Display",
+ )
callRepo.setOngoingCallState(OngoingCallModel.NoCall)
val latest by collectLastValue(underTest.primaryChip)
@@ -308,7 +314,7 @@ class OngoingActivityChipsViewModelTest : SysuiTestCase() {
dialogStopAction.onClick(mock<DialogInterface>(), 0)
// THEN the chip is immediately hidden with no animation
- assertThat(latest).isEqualTo(OngoingActivityChipModel.Hidden(shouldAnimate = false))
+ assertThat(latest).isEqualTo(OngoingActivityChipModel.Inactive(shouldAnimate = false))
}
@Test
@@ -335,7 +341,7 @@ class OngoingActivityChipsViewModelTest : SysuiTestCase() {
dialogStopAction.onClick(mock<DialogInterface>(), 0)
// THEN the chip is immediately hidden with no animation
- assertThat(latest).isEqualTo(OngoingActivityChipModel.Hidden(shouldAnimate = false))
+ assertThat(latest).isEqualTo(OngoingActivityChipModel.Inactive(shouldAnimate = false))
}
companion object {
@@ -368,13 +374,13 @@ class OngoingActivityChipsViewModelTest : SysuiTestCase() {
.thenThrow(PackageManager.NameNotFoundException())
if (StatusBarChipsModernization.isEnabled) {
- val clickBehavior = (latest as OngoingActivityChipModel.Shown).clickBehavior
+ val clickBehavior = (latest as OngoingActivityChipModel.Active).clickBehavior
(clickBehavior as OngoingActivityChipModel.ClickBehavior.ExpandAction).onClick(
expandable
)
} else {
val clickListener =
- ((latest as OngoingActivityChipModel.Shown).onClickListenerLegacy)
+ ((latest as OngoingActivityChipModel.Active).onClickListenerLegacy)
clickListener!!.onClick(chipView)
}
@@ -382,33 +388,36 @@ class OngoingActivityChipsViewModelTest : SysuiTestCase() {
}
fun assertIsScreenRecordChip(latest: OngoingActivityChipModel?) {
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
+ assertThat((latest as OngoingActivityChipModel.Active).key)
+ .isEqualTo(ScreenRecordChipViewModel.KEY)
val icon =
- (((latest as OngoingActivityChipModel.Shown).icon)
- as OngoingActivityChipModel.ChipIcon.SingleColorIcon)
- .impl as Icon.Resource
+ ((latest.icon) as OngoingActivityChipModel.ChipIcon.SingleColorIcon).impl
+ as Icon.Resource
assertThat(icon.res).isEqualTo(R.drawable.ic_screenrecord)
}
fun assertIsShareToAppChip(latest: OngoingActivityChipModel?) {
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
+ assertThat((latest as OngoingActivityChipModel.Active).key)
+ .isEqualTo(ShareToAppChipViewModel.KEY)
val icon =
- (((latest as OngoingActivityChipModel.Shown).icon)
- as OngoingActivityChipModel.ChipIcon.SingleColorIcon)
- .impl as Icon.Resource
+ ((latest.icon) as OngoingActivityChipModel.ChipIcon.SingleColorIcon).impl
+ as Icon.Resource
assertThat(icon.res).isEqualTo(R.drawable.ic_present_to_all)
}
fun assertIsCallChip(latest: OngoingActivityChipModel?, notificationKey: String) {
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown.Timer::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
+ assertThat((latest as OngoingActivityChipModel.Active).key).isEqualTo(notificationKey)
+
if (StatusBarConnectedDisplays.isEnabled) {
assertNotificationIcon(latest, notificationKey)
return
}
val icon =
- (((latest as OngoingActivityChipModel.Shown).icon)
- as OngoingActivityChipModel.ChipIcon.SingleColorIcon)
- .impl as Icon.Resource
+ ((latest.icon) as OngoingActivityChipModel.ChipIcon.SingleColorIcon).impl
+ as Icon.Resource
assertThat(icon.res).isEqualTo(com.android.internal.R.drawable.ic_phone)
}
@@ -416,9 +425,9 @@ class OngoingActivityChipsViewModelTest : SysuiTestCase() {
latest: OngoingActivityChipModel?,
notificationKey: String,
) {
- val shown = latest as OngoingActivityChipModel.Shown
+ val active = latest as OngoingActivityChipModel.Active
val notificationIcon =
- shown.icon as OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon
+ active.icon as OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon
assertThat(notificationIcon.notificationKey).isEqualTo(notificationKey)
}
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsWithNotifsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsWithNotifsViewModelTest.kt
index 28f360108e50..545d8460c623 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsWithNotifsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsWithNotifsViewModelTest.kt
@@ -18,15 +18,23 @@ package com.android.systemui.statusbar.chips.ui.viewmodel
import android.content.DialogInterface
import android.content.packageManager
+import android.content.res.Configuration
+import android.content.res.mainResources
import android.graphics.Bitmap
import android.graphics.drawable.BitmapDrawable
+import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import android.view.View
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.Expandable
-import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.common.ui.data.repository.fakeConfigurationRepository
+import com.android.systemui.display.data.repository.displayStateRepository
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.collectLastValue
+import com.android.systemui.kosmos.runCurrent
+import com.android.systemui.kosmos.runTest
import com.android.systemui.kosmos.testScope
import com.android.systemui.kosmos.useUnconfinedTestDispatcher
import com.android.systemui.mediaprojection.data.model.MediaProjectionState
@@ -48,26 +56,23 @@ import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsVie
import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.assertIsScreenRecordChip
import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.assertIsShareToAppChip
import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.getStopActionFromDialog
-import com.android.systemui.statusbar.commandline.commandRegistry
+import com.android.systemui.statusbar.core.StatusBarRootModernization
import com.android.systemui.statusbar.notification.data.model.activeNotificationModel
import com.android.systemui.statusbar.notification.data.repository.ActiveNotificationsStore
import com.android.systemui.statusbar.notification.data.repository.activeNotificationListRepository
import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel
import com.android.systemui.statusbar.notification.shared.ActiveNotificationModel
+import com.android.systemui.statusbar.notification.shared.CallType
import com.android.systemui.statusbar.phone.SystemUIDialog
+import com.android.systemui.statusbar.phone.ongoingcall.StatusBarChipsModernization
import com.android.systemui.statusbar.phone.ongoingcall.data.repository.ongoingCallRepository
import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallModel
import com.android.systemui.statusbar.phone.ongoingcall.shared.model.inCallModel
import com.android.systemui.testKosmos
import com.android.systemui.util.time.fakeSystemClock
import com.google.common.truth.Truth.assertThat
-import java.io.PrintWriter
-import java.io.StringWriter
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
-import kotlinx.coroutines.test.runCurrent
-import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Ignore
import org.junit.Test
@@ -79,21 +84,16 @@ import org.mockito.kotlin.whenever
/** Tests for [OngoingActivityChipsViewModel] when the [StatusBarNotifChips] flag is enabled. */
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
@EnableFlags(StatusBarNotifChips.FLAG_NAME)
class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
private val kosmos = testKosmos().useUnconfinedTestDispatcher()
- private val testScope = kosmos.testScope
private val systemClock = kosmos.fakeSystemClock
- private val commandRegistry = kosmos.commandRegistry
private val screenRecordState = kosmos.screenRecordRepository.screenRecordState
private val mediaProjectionState = kosmos.fakeMediaProjectionRepository.mediaProjectionState
private val callRepo = kosmos.ongoingCallRepository
private val activeNotificationListRepository = kosmos.activeNotificationListRepository
- private val pw = PrintWriter(StringWriter())
-
private val mockSystemUIDialog = mock<SystemUIDialog>()
private val chipBackgroundView = mock<ChipBackgroundContainer>()
private val chipView =
@@ -108,7 +108,7 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
private val mockExpandable: Expandable =
mock<Expandable>().apply { whenever(dialogTransitionController(any())).thenReturn(mock()) }
- private val underTest by lazy { kosmos.ongoingActivityChipsViewModel }
+ private val Kosmos.underTest by Kosmos.Fixture { ongoingActivityChipsViewModel }
@Before
fun setUp() {
@@ -127,32 +127,33 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
@Test
fun primaryChip_allHidden_hidden() =
- testScope.runTest {
+ kosmos.runTest {
screenRecordState.value = ScreenRecordModel.DoingNothing
mediaProjectionState.value = MediaProjectionState.NotProjecting
callRepo.setOngoingCallState(OngoingCallModel.NoCall)
val latest by collectLastValue(underTest.primaryChip)
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
}
@Test
fun chips_allHidden_bothPrimaryAndSecondaryHidden() =
- testScope.runTest {
+ kosmos.runTest {
screenRecordState.value = ScreenRecordModel.DoingNothing
mediaProjectionState.value = MediaProjectionState.NotProjecting
callRepo.setOngoingCallState(OngoingCallModel.NoCall)
val latest by collectLastValue(underTest.chips)
- assertThat(latest!!.primary).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
- assertThat(latest!!.secondary).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest!!.primary).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
+ assertThat(latest!!.secondary)
+ .isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
}
@Test
fun primaryChip_screenRecordShow_restHidden_screenRecordShown() =
- testScope.runTest {
+ kosmos.runTest {
screenRecordState.value = ScreenRecordModel.Recording
mediaProjectionState.value = MediaProjectionState.NotProjecting
callRepo.setOngoingCallState(OngoingCallModel.NoCall)
@@ -164,7 +165,7 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
@Test
fun chips_screenRecordShow_restHidden_primaryIsScreenRecordSecondaryIsHidden() =
- testScope.runTest {
+ kosmos.runTest {
screenRecordState.value = ScreenRecordModel.Recording
mediaProjectionState.value = MediaProjectionState.NotProjecting
callRepo.setOngoingCallState(OngoingCallModel.NoCall)
@@ -172,12 +173,13 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
val latest by collectLastValue(underTest.chips)
assertIsScreenRecordChip(latest!!.primary)
- assertThat(latest!!.secondary).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest!!.secondary)
+ .isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
}
@Test
fun primaryChip_screenRecordShowAndCallShow_screenRecordShown() =
- testScope.runTest {
+ kosmos.runTest {
screenRecordState.value = ScreenRecordModel.Recording
callRepo.setOngoingCallState(inCallModel(startTimeMs = 34))
@@ -188,7 +190,7 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
@Test
fun chips_screenRecordShowAndCallShow_primaryIsScreenRecordSecondaryIsCall() =
- testScope.runTest {
+ kosmos.runTest {
val callNotificationKey = "call"
screenRecordState.value = ScreenRecordModel.Recording
callRepo.setOngoingCallState(
@@ -202,8 +204,156 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
}
@Test
+ fun chips_oneChip_notSquished() =
+ kosmos.runTest {
+ callRepo.setOngoingCallState(inCallModel(startTimeMs = 34, notificationKey = "call"))
+
+ val latest by collectLastValue(underTest.chips)
+
+ // The call chip isn't squished (squished chips would be icon only)
+ assertThat(latest!!.primary)
+ .isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
+ }
+
+ @Test
+ @DisableFlags(StatusBarChipsModernization.FLAG_NAME, StatusBarRootModernization.FLAG_NAME)
+ fun chips_twoTimerChips_isSmallPortrait_andChipsModernizationDisabled_bothSquished() =
+ kosmos.runTest {
+ screenRecordState.value = ScreenRecordModel.Recording
+ callRepo.setOngoingCallState(inCallModel(startTimeMs = 34, notificationKey = "call"))
+
+ val latest by collectLastValue(underTest.chips)
+
+ // Squished chips are icon only
+ assertThat(latest!!.primary)
+ .isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
+ assertThat(latest!!.secondary)
+ .isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
+ }
+
+ @Test
+ @DisableFlags(StatusBarChipsModernization.FLAG_NAME, StatusBarRootModernization.FLAG_NAME)
+ fun chips_countdownChipAndTimerChip_countdownNotSquished_butTimerSquished() =
+ kosmos.runTest {
+ screenRecordState.value = ScreenRecordModel.Starting(millisUntilStarted = 2000)
+ callRepo.setOngoingCallState(inCallModel(startTimeMs = 34, notificationKey = "call"))
+
+ val latest by collectLastValue(underTest.chips)
+
+ // The screen record countdown isn't squished to icon-only
+ assertThat(latest!!.primary)
+ .isInstanceOf(OngoingActivityChipModel.Active.Countdown::class.java)
+ // But the call chip *is* squished
+ assertThat(latest!!.secondary)
+ .isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
+ }
+
+ @Test
+ @DisableFlags(StatusBarChipsModernization.FLAG_NAME, StatusBarRootModernization.FLAG_NAME)
+ fun chips_numberOfChipsChanges_chipsGetSquishedAndUnsquished() =
+ kosmos.runTest {
+ val latest by collectLastValue(underTest.chips)
+
+ // WHEN there's only one chip
+ screenRecordState.value = ScreenRecordModel.Recording
+ callRepo.setOngoingCallState(OngoingCallModel.NoCall)
+
+ // The screen record isn't squished because it's the only one
+ assertThat(latest!!.primary)
+ .isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
+ assertThat(latest!!.secondary)
+ .isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
+
+ // WHEN there's 2 chips
+ callRepo.setOngoingCallState(inCallModel(startTimeMs = 34, notificationKey = "call"))
+
+ // THEN they both become squished
+ assertThat(latest!!.primary)
+ .isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
+ // But the call chip *is* squished
+ assertThat(latest!!.secondary)
+ .isInstanceOf(OngoingActivityChipModel.Active.IconOnly::class.java)
+
+ // WHEN we go back down to 1 chip
+ screenRecordState.value = ScreenRecordModel.DoingNothing
+
+ // THEN the remaining chip unsquishes
+ assertThat(latest!!.primary)
+ .isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
+ assertThat(latest!!.secondary)
+ .isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
+ }
+
+ @Test
+ @DisableFlags(StatusBarChipsModernization.FLAG_NAME, StatusBarRootModernization.FLAG_NAME)
+ fun chips_twoChips_isLandscape_notSquished() =
+ kosmos.runTest {
+ screenRecordState.value = ScreenRecordModel.Recording
+ callRepo.setOngoingCallState(inCallModel(startTimeMs = 34, notificationKey = "call"))
+
+ // WHEN we're in landscape
+ val config =
+ Configuration(kosmos.mainResources.configuration).apply {
+ orientation = Configuration.ORIENTATION_LANDSCAPE
+ }
+ kosmos.fakeConfigurationRepository.onConfigurationChange(config)
+
+ val latest by collectLastValue(underTest.chips)
+
+ // THEN the chips aren't squished (squished chips would be icon only)
+ assertThat(latest!!.primary)
+ .isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
+ assertThat(latest!!.secondary)
+ .isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
+ }
+
+ @Test
+ @DisableFlags(StatusBarChipsModernization.FLAG_NAME, StatusBarRootModernization.FLAG_NAME)
+ fun chips_twoChips_isLargeScreen_notSquished() =
+ kosmos.runTest {
+ screenRecordState.value = ScreenRecordModel.Recording
+ callRepo.setOngoingCallState(inCallModel(startTimeMs = 34, notificationKey = "call"))
+
+ // WHEN we're on a large screen
+ kosmos.displayStateRepository.setIsLargeScreen(true)
+
+ val latest by collectLastValue(underTest.chips)
+
+ // THEN the chips aren't squished (squished chips would be icon only)
+ assertThat(latest!!.primary)
+ .isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
+ assertThat(latest!!.secondary)
+ .isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
+ }
+
+ @Test
+ @EnableFlags(StatusBarChipsModernization.FLAG_NAME, StatusBarRootModernization.FLAG_NAME)
+ fun chips_twoChips_chipsModernizationEnabled_notSquished() =
+ kosmos.runTest {
+ screenRecordState.value = ScreenRecordModel.Recording
+ setNotifs(
+ listOf(
+ activeNotificationModel(
+ key = "call",
+ statusBarChipIcon = createStatusBarIconViewOrNull(),
+ callType = CallType.Ongoing,
+ whenTime = 499,
+ )
+ )
+ )
+
+ val latest by collectLastValue(underTest.chips)
+
+ // Squished chips would be icon only
+ assertThat(latest!!.primary)
+ .isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
+ assertThat(latest!!.secondary)
+ .isInstanceOf(OngoingActivityChipModel.Active.Timer::class.java)
+ }
+
+ @Test
fun primaryChip_screenRecordShowAndShareToAppShow_screenRecordShown() =
- testScope.runTest {
+ kosmos.runTest {
screenRecordState.value = ScreenRecordModel.Recording
mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
@@ -216,7 +366,7 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
@Test
fun chips_screenRecordShowAndShareToAppShow_primaryIsScreenRecordSecondaryIsHidden() =
- testScope.runTest {
+ kosmos.runTest {
screenRecordState.value = ScreenRecordModel.Recording
mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
@@ -227,12 +377,13 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
assertIsScreenRecordChip(latest!!.primary)
// Even though share-to-app is active, we suppress it because this share-to-app is
// represented by screen record being active. See b/296461748.
- assertThat(latest!!.secondary).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest!!.secondary)
+ .isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
}
@Test
fun primaryChip_shareToAppShowAndCallShow_shareToAppShown() =
- testScope.runTest {
+ kosmos.runTest {
screenRecordState.value = ScreenRecordModel.DoingNothing
mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
@@ -245,7 +396,7 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
@Test
fun chips_shareToAppShowAndCallShow_primaryIsShareToAppSecondaryIsCall() =
- testScope.runTest {
+ kosmos.runTest {
val callNotificationKey = "call"
screenRecordState.value = ScreenRecordModel.DoingNothing
mediaProjectionState.value =
@@ -262,7 +413,7 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
@Test
fun primaryChip_onlyCallShown_callShown() =
- testScope.runTest {
+ kosmos.runTest {
screenRecordState.value = ScreenRecordModel.DoingNothing
// MediaProjection covers both share-to-app and cast-to-other-device
mediaProjectionState.value = MediaProjectionState.NotProjecting
@@ -279,7 +430,7 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
@Test
fun chips_onlyCallShown_primaryIsCallSecondaryIsHidden() =
- testScope.runTest {
+ kosmos.runTest {
val callNotificationKey = "call"
screenRecordState.value = ScreenRecordModel.DoingNothing
// MediaProjection covers both share-to-app and cast-to-other-device
@@ -292,12 +443,13 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
val latest by collectLastValue(underTest.chips)
assertIsCallChip(latest!!.primary, callNotificationKey)
- assertThat(latest!!.secondary).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest!!.secondary)
+ .isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
}
@Test
fun chips_singlePromotedNotif_primaryIsNotifSecondaryIsHidden() =
- testScope.runTest {
+ kosmos.runTest {
val latest by collectLastValue(underTest.chips)
val icon = createStatusBarIconViewOrNull()
@@ -311,13 +463,14 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
)
)
- assertIsNotifChip(latest!!.primary, icon, "notif")
- assertThat(latest!!.secondary).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertIsNotifChip(latest!!.primary, context, icon, "notif")
+ assertThat(latest!!.secondary)
+ .isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
}
@Test
fun chips_twoPromotedNotifs_primaryAndSecondaryAreNotifsInOrder() =
- testScope.runTest {
+ kosmos.runTest {
val latest by collectLastValue(underTest.chips)
val firstIcon = createStatusBarIconViewOrNull()
@@ -339,13 +492,13 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
)
)
- assertIsNotifChip(latest!!.primary, firstIcon, "firstNotif")
- assertIsNotifChip(latest!!.secondary, secondIcon, "secondNotif")
+ assertIsNotifChip(latest!!.primary, context, firstIcon, "firstNotif")
+ assertIsNotifChip(latest!!.secondary, context, secondIcon, "secondNotif")
}
@Test
fun chips_threePromotedNotifs_topTwoShown() =
- testScope.runTest {
+ kosmos.runTest {
val latest by collectLastValue(underTest.chips)
val firstIcon = createStatusBarIconViewOrNull()
@@ -374,13 +527,13 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
)
)
- assertIsNotifChip(latest!!.primary, firstIcon, "firstNotif")
- assertIsNotifChip(latest!!.secondary, secondIcon, "secondNotif")
+ assertIsNotifChip(latest!!.primary, context, firstIcon, "firstNotif")
+ assertIsNotifChip(latest!!.secondary, context, secondIcon, "secondNotif")
}
@Test
fun chips_callAndPromotedNotifs_primaryIsCallSecondaryIsNotif() =
- testScope.runTest {
+ kosmos.runTest {
val latest by collectLastValue(underTest.chips)
val callNotificationKey = "call"
@@ -407,12 +560,12 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
)
assertIsCallChip(latest!!.primary, callNotificationKey)
- assertIsNotifChip(latest!!.secondary, firstIcon, "firstNotif")
+ assertIsNotifChip(latest!!.secondary, context, firstIcon, "firstNotif")
}
@Test
fun chips_screenRecordAndCallAndPromotedNotifs_notifsNotShown() =
- testScope.runTest {
+ kosmos.runTest {
val callNotificationKey = "call"
val latest by collectLastValue(underTest.chips)
@@ -436,7 +589,7 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
@Test
fun primaryChip_higherPriorityChipAdded_lowerPriorityChipReplaced() =
- testScope.runTest {
+ kosmos.runTest {
val callNotificationKey = "call"
// Start with just the lowest priority chip shown
val notifIcon = createStatusBarIconViewOrNull()
@@ -456,7 +609,7 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
val latest by collectLastValue(underTest.primaryChip)
- assertIsNotifChip(latest, notifIcon, "notif")
+ assertIsNotifChip(latest, context, notifIcon, "notif")
// WHEN the higher priority call chip is added
callRepo.setOngoingCallState(
@@ -486,7 +639,7 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
@Test
fun primaryChip_highestPriorityChipRemoved_showsNextPriorityChip() =
- testScope.runTest {
+ kosmos.runTest {
val callNotificationKey = "call"
// WHEN all chips are active
screenRecordState.value = ScreenRecordModel.Recording
@@ -527,12 +680,12 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
callRepo.setOngoingCallState(OngoingCallModel.NoCall)
// THEN the lower priority notif is used
- assertIsNotifChip(latest, notifIcon, "notif")
+ assertIsNotifChip(latest, context, notifIcon, "notif")
}
@Test
fun chips_movesChipsAroundAccordingToPriority() =
- testScope.runTest {
+ kosmos.runTest {
val callNotificationKey = "call"
// Start with just the lowest priority chip shown
val notifIcon = createStatusBarIconViewOrNull()
@@ -552,8 +705,9 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
val latest by collectLastValue(underTest.chips)
- assertIsNotifChip(latest!!.primary, notifIcon, "notif")
- assertThat(latest!!.secondary).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertIsNotifChip(latest!!.primary, context, notifIcon, "notif")
+ assertThat(latest!!.secondary)
+ .isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
// WHEN the higher priority call chip is added
callRepo.setOngoingCallState(
@@ -563,7 +717,7 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
// THEN the higher priority call chip is used as primary and notif is demoted to
// secondary
assertIsCallChip(latest!!.primary, callNotificationKey)
- assertIsNotifChip(latest!!.secondary, notifIcon, "notif")
+ assertIsNotifChip(latest!!.secondary, context, notifIcon, "notif")
// WHEN the higher priority media projection chip is added
mediaProjectionState.value =
@@ -590,23 +744,24 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
// THEN media projection and notif remain
assertIsShareToAppChip(latest!!.primary)
- assertIsNotifChip(latest!!.secondary, notifIcon, "notif")
+ assertIsNotifChip(latest!!.secondary, context, notifIcon, "notif")
// WHEN media projection is dropped
mediaProjectionState.value = MediaProjectionState.NotProjecting
// THEN notif is promoted to primary
- assertIsNotifChip(latest!!.primary, notifIcon, "notif")
- assertThat(latest!!.secondary).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertIsNotifChip(latest!!.primary, context, notifIcon, "notif")
+ assertThat(latest!!.secondary)
+ .isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
}
/** Regression test for b/347726238. */
@Test
fun primaryChip_timerDoesNotResetAfterSubscribersRestart() =
- testScope.runTest {
+ kosmos.runTest {
var latest: OngoingActivityChipModel? = null
- val job1 = underTest.primaryChip.onEach { latest = it }.launchIn(this)
+ val job1 = underTest.primaryChip.onEach { latest = it }.launchIn(testScope)
// Start a chip with a timer
systemClock.setElapsedRealtime(1234)
@@ -614,7 +769,8 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
runCurrent()
- assertThat((latest as OngoingActivityChipModel.Shown.Timer).startTimeMs).isEqualTo(1234)
+ assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
+ .isEqualTo(1234)
// Stop subscribing to the chip flow
job1.cancel()
@@ -623,12 +779,13 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
systemClock.setElapsedRealtime(5678)
// WHEN we re-subscribe to the chip flow
- val job2 = underTest.primaryChip.onEach { latest = it }.launchIn(this)
+ val job2 = underTest.primaryChip.onEach { latest = it }.launchIn(testScope)
runCurrent()
// THEN the old start time is still used
- assertThat((latest as OngoingActivityChipModel.Shown.Timer).startTimeMs).isEqualTo(1234)
+ assertThat((latest as OngoingActivityChipModel.Active.Timer).startTimeMs)
+ .isEqualTo(1234)
job2.cancel()
}
@@ -636,10 +793,10 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
/** Regression test for b/347726238. */
@Test
fun chips_timerDoesNotResetAfterSubscribersRestart() =
- testScope.runTest {
+ kosmos.runTest {
var latest: MultipleOngoingActivityChipsModel? = null
- val job1 = underTest.chips.onEach { latest = it }.launchIn(this)
+ val job1 = underTest.chips.onEach { latest = it }.launchIn(testScope)
// Start a chip with a timer
systemClock.setElapsedRealtime(1234)
@@ -647,7 +804,7 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
runCurrent()
- val primaryChip = latest!!.primary as OngoingActivityChipModel.Shown.Timer
+ val primaryChip = latest!!.primary as OngoingActivityChipModel.Active.Timer
assertThat(primaryChip.startTimeMs).isEqualTo(1234)
// Stop subscribing to the chip flow
@@ -657,12 +814,12 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
systemClock.setElapsedRealtime(5678)
// WHEN we re-subscribe to the chip flow
- val job2 = underTest.chips.onEach { latest = it }.launchIn(this)
+ val job2 = underTest.chips.onEach { latest = it }.launchIn(testScope)
runCurrent()
// THEN the old start time is still used
- val newPrimaryChip = latest!!.primary as OngoingActivityChipModel.Shown.Timer
+ val newPrimaryChip = latest!!.primary as OngoingActivityChipModel.Active.Timer
assertThat(newPrimaryChip.startTimeMs).isEqualTo(1234)
job2.cancel()
@@ -671,7 +828,7 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
@Test
@Ignore("b/364653005") // We'll need to re-do the animation story when we implement RON chips
fun primaryChip_screenRecordStoppedViaDialog_chipHiddenWithoutAnimation() =
- testScope.runTest {
+ kosmos.runTest {
screenRecordState.value = ScreenRecordModel.Recording
mediaProjectionState.value = MediaProjectionState.NotProjecting
callRepo.setOngoingCallState(OngoingCallModel.NoCall)
@@ -692,12 +849,12 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
dialogStopAction.onClick(mock<DialogInterface>(), 0)
// THEN the chip is immediately hidden with no animation
- assertThat(latest).isEqualTo(OngoingActivityChipModel.Hidden(shouldAnimate = false))
+ assertThat(latest).isEqualTo(OngoingActivityChipModel.Inactive(shouldAnimate = false))
}
@Test
fun primaryChip_projectionStoppedViaDialog_chipHiddenWithoutAnimation() =
- testScope.runTest {
+ kosmos.runTest {
mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
screenRecordState.value = ScreenRecordModel.DoingNothing
@@ -719,7 +876,7 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
dialogStopAction.onClick(mock<DialogInterface>(), 0)
// THEN the chip is immediately hidden with no animation
- assertThat(latest).isEqualTo(OngoingActivityChipModel.Hidden(shouldAnimate = false))
+ assertThat(latest).isEqualTo(OngoingActivityChipModel.Inactive(shouldAnimate = false))
}
private fun setNotifs(notifs: List<ActiveNotificationModel>) {
@@ -727,6 +884,5 @@ class OngoingActivityChipsWithNotifsViewModelTest : SysuiTestCase() {
ActiveNotificationsStore.Builder()
.apply { notifs.forEach { addIndividualNotif(it) } }
.build()
- testScope.runCurrent()
}
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarStarterTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarStarterTest.kt
index c06da4bc5080..fee939df2cbb 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarStarterTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarStarterTest.kt
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.core
import android.platform.test.annotations.EnableFlags
import android.view.Display
+import android.view.mockIWindowManager
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
@@ -28,16 +29,16 @@ import com.android.systemui.statusbar.data.repository.fakePrivacyDotWindowContro
import com.android.systemui.testKosmos
import com.google.common.truth.Expect
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
+import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.never
import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@EnableFlags(StatusBarConnectedDisplays.FLAG_NAME)
@@ -51,75 +52,110 @@ class MultiDisplayStatusBarStarterTest : SysuiTestCase() {
private val fakeInitializerStore = kosmos.fakeStatusBarInitializerStore
private val fakePrivacyDotStore = kosmos.fakePrivacyDotWindowControllerStore
private val fakeLightBarStore = kosmos.fakeLightBarControllerStore
+ private val windowManager = kosmos.mockIWindowManager
+
// Lazy, so that @EnableFlags is set before initializer is instantiated.
private val underTest by lazy { kosmos.multiDisplayStatusBarStarter }
+ @Before
+ fun setup() {
+ whenever(windowManager.shouldShowSystemDecors(Display.DEFAULT_DISPLAY)).thenReturn(true)
+ whenever(windowManager.shouldShowSystemDecors(DISPLAY_1)).thenReturn(true)
+ whenever(windowManager.shouldShowSystemDecors(DISPLAY_2)).thenReturn(true)
+ whenever(windowManager.shouldShowSystemDecors(DISPLAY_3)).thenReturn(true)
+ whenever(windowManager.shouldShowSystemDecors(DISPLAY_4_NO_SYSTEM_DECOR)).thenReturn(false)
+ }
+
@Test
fun start_startsInitializersForCurrentDisplays() =
testScope.runTest {
- fakeDisplayRepository.addDisplay(displayId = 1)
- fakeDisplayRepository.addDisplay(displayId = 2)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_1)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_2)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR)
underTest.start()
runCurrent()
expect
- .that(fakeInitializerStore.forDisplay(displayId = 1).startedByCoreStartable)
+ .that(fakeInitializerStore.forDisplay(displayId = DISPLAY_1).startedByCoreStartable)
.isTrue()
expect
- .that(fakeInitializerStore.forDisplay(displayId = 2).startedByCoreStartable)
+ .that(fakeInitializerStore.forDisplay(displayId = DISPLAY_2).startedByCoreStartable)
.isTrue()
+ expect
+ .that(
+ fakeInitializerStore
+ .forDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR)
+ .startedByCoreStartable
+ )
+ .isFalse()
}
@Test
fun start_startsOrchestratorForCurrentDisplays() =
testScope.runTest {
- fakeDisplayRepository.addDisplay(displayId = 1)
- fakeDisplayRepository.addDisplay(displayId = 2)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_1)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_2)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR)
underTest.start()
runCurrent()
- verify(fakeOrchestratorFactory.createdOrchestratorForDisplay(displayId = 1)!!).start()
- verify(fakeOrchestratorFactory.createdOrchestratorForDisplay(displayId = 2)!!).start()
+ verify(fakeOrchestratorFactory.createdOrchestratorForDisplay(displayId = DISPLAY_1)!!)
+ .start()
+ verify(fakeOrchestratorFactory.createdOrchestratorForDisplay(displayId = DISPLAY_2)!!)
+ .start()
+ assertThat(
+ fakeOrchestratorFactory.createdOrchestratorForDisplay(
+ displayId = DISPLAY_4_NO_SYSTEM_DECOR
+ )
+ )
+ .isNull()
}
@Test
fun start_startsPrivacyDotForCurrentDisplays() =
testScope.runTest {
- fakeDisplayRepository.addDisplay(displayId = 1)
- fakeDisplayRepository.addDisplay(displayId = 2)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_1)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_2)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR)
underTest.start()
runCurrent()
- verify(fakePrivacyDotStore.forDisplay(displayId = 1)).start()
- verify(fakePrivacyDotStore.forDisplay(displayId = 2)).start()
+ verify(fakePrivacyDotStore.forDisplay(displayId = DISPLAY_1)).start()
+ verify(fakePrivacyDotStore.forDisplay(displayId = DISPLAY_2)).start()
+ verify(fakePrivacyDotStore.forDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR), never())
+ .start()
}
@Test
fun start_doesNotStartLightBarControllerForCurrentDisplays() =
testScope.runTest {
- fakeDisplayRepository.addDisplay(displayId = 1)
- fakeDisplayRepository.addDisplay(displayId = 2)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_1)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_2)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR)
underTest.start()
runCurrent()
- verify(fakeLightBarStore.forDisplay(displayId = 1), never()).start()
- verify(fakeLightBarStore.forDisplay(displayId = 2), never()).start()
+ verify(fakeLightBarStore.forDisplay(displayId = DISPLAY_1), never()).start()
+ verify(fakeLightBarStore.forDisplay(displayId = DISPLAY_2), never()).start()
+ verify(fakeLightBarStore.forDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR), never())
+ .start()
}
@Test
fun start_createsLightBarControllerForCurrentDisplays() =
testScope.runTest {
- fakeDisplayRepository.addDisplay(displayId = 1)
- fakeDisplayRepository.addDisplay(displayId = 2)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_1)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_2)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR)
underTest.start()
runCurrent()
- assertThat(fakeLightBarStore.perDisplayMocks.keys).containsExactly(1, 2)
+ assertThat(fakeLightBarStore.perDisplayMocks.keys).containsExactly(1, DISPLAY_2)
}
@Test
@@ -135,121 +171,174 @@ class MultiDisplayStatusBarStarterTest : SysuiTestCase() {
}
@Test
- fun displayAdded_orchestratorForNewDisplayIsStarted() =
+ fun displayAdded_orchestratorForNewDisplay() =
testScope.runTest {
underTest.start()
runCurrent()
- fakeDisplayRepository.addDisplay(displayId = 3)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_3)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR)
runCurrent()
- verify(fakeOrchestratorFactory.createdOrchestratorForDisplay(displayId = 3)!!).start()
+ verify(fakeOrchestratorFactory.createdOrchestratorForDisplay(displayId = DISPLAY_3)!!)
+ .start()
+ assertThat(
+ fakeOrchestratorFactory.createdOrchestratorForDisplay(
+ displayId = DISPLAY_4_NO_SYSTEM_DECOR
+ )
+ )
+ .isNull()
}
@Test
- fun displayAdded_initializerForNewDisplayIsStarted() =
+ fun displayAdded_initializerForNewDisplay() =
testScope.runTest {
underTest.start()
runCurrent()
- fakeDisplayRepository.addDisplay(displayId = 3)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_3)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR)
runCurrent()
expect
- .that(fakeInitializerStore.forDisplay(displayId = 3).startedByCoreStartable)
+ .that(fakeInitializerStore.forDisplay(displayId = DISPLAY_3).startedByCoreStartable)
.isTrue()
+ expect
+ .that(
+ fakeInitializerStore
+ .forDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR)
+ .startedByCoreStartable
+ )
+ .isFalse()
}
@Test
- fun displayAdded_privacyDotForNewDisplayIsStarted() =
+ fun displayAdded_privacyDotForNewDisplay() =
testScope.runTest {
underTest.start()
runCurrent()
- fakeDisplayRepository.addDisplay(displayId = 3)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_3)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR)
runCurrent()
- verify(fakePrivacyDotStore.forDisplay(displayId = 3)).start()
+ verify(fakePrivacyDotStore.forDisplay(displayId = DISPLAY_3)).start()
+ verify(fakePrivacyDotStore.forDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR), never())
+ .start()
}
@Test
- fun displayAdded_lightBarForNewDisplayIsCreated() =
+ fun displayAdded_lightBarForNewDisplayCreate() =
testScope.runTest {
underTest.start()
runCurrent()
- fakeDisplayRepository.addDisplay(displayId = 3)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_3)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR)
runCurrent()
- assertThat(fakeLightBarStore.perDisplayMocks.keys).containsExactly(3)
+ assertThat(fakeLightBarStore.perDisplayMocks.keys).containsExactly(DISPLAY_3)
}
@Test
- fun displayAdded_lightBarForNewDisplayIsNotStarted() =
+ fun displayAdded_lightBarForNewDisplayStart() =
testScope.runTest {
underTest.start()
runCurrent()
- fakeDisplayRepository.addDisplay(displayId = 3)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_3)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR)
runCurrent()
- verify(fakeLightBarStore.forDisplay(displayId = 3), never()).start()
+ verify(fakeLightBarStore.forDisplay(displayId = DISPLAY_3), never()).start()
+ verify(fakeLightBarStore.forDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR), never())
+ .start()
}
@Test
- fun displayAddedDuringStart_initializerForNewDisplayIsStarted() =
+ fun displayAddedDuringStart_initializerForNewDisplay() =
testScope.runTest {
underTest.start()
- fakeDisplayRepository.addDisplay(displayId = 3)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_3)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR)
runCurrent()
expect
- .that(fakeInitializerStore.forDisplay(displayId = 3).startedByCoreStartable)
+ .that(fakeInitializerStore.forDisplay(displayId = DISPLAY_3).startedByCoreStartable)
.isTrue()
+ expect
+ .that(
+ fakeInitializerStore
+ .forDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR)
+ .startedByCoreStartable
+ )
+ .isFalse()
}
@Test
- fun displayAddedDuringStart_orchestratorForNewDisplayIsStarted() =
+ fun displayAddedDuringStart_orchestratorForNewDisplay() =
testScope.runTest {
underTest.start()
- fakeDisplayRepository.addDisplay(displayId = 3)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_3)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR)
runCurrent()
- verify(fakeOrchestratorFactory.createdOrchestratorForDisplay(displayId = 3)!!).start()
+ verify(fakeOrchestratorFactory.createdOrchestratorForDisplay(displayId = DISPLAY_3)!!)
+ .start()
+ assertThat(
+ fakeOrchestratorFactory.createdOrchestratorForDisplay(
+ displayId = DISPLAY_4_NO_SYSTEM_DECOR
+ )
+ )
+ .isNull()
}
@Test
- fun displayAddedDuringStart_privacyDotForNewDisplayIsStarted() =
+ fun displayAddedDuringStart_privacyDotForNewDisplay() =
testScope.runTest {
underTest.start()
- fakeDisplayRepository.addDisplay(displayId = 3)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_3)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR)
runCurrent()
- verify(fakePrivacyDotStore.forDisplay(displayId = 3)).start()
+ verify(fakePrivacyDotStore.forDisplay(displayId = DISPLAY_3)).start()
+ verify(fakePrivacyDotStore.forDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR), never())
+ .start()
}
@Test
- fun displayAddedDuringStart_lightBarForNewDisplayIsCreated() =
+ fun displayAddedDuringStart_lightBarForNewDisplayCreate() =
testScope.runTest {
underTest.start()
- fakeDisplayRepository.addDisplay(displayId = 3)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_3)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR)
runCurrent()
- assertThat(fakeLightBarStore.perDisplayMocks.keys).containsExactly(3)
+ assertThat(fakeLightBarStore.perDisplayMocks.keys).containsExactly(DISPLAY_3)
}
@Test
- fun displayAddedDuringStart_lightBarForNewDisplayIsNotStarted() =
+ fun displayAddedDuringStart_lightBarForNewDisplayStart() =
testScope.runTest {
underTest.start()
- fakeDisplayRepository.addDisplay(displayId = 3)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_3)
+ fakeDisplayRepository.addDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR)
runCurrent()
- verify(fakeLightBarStore.forDisplay(displayId = 3), never()).start()
+ verify(fakeLightBarStore.forDisplay(displayId = DISPLAY_3), never()).start()
+ verify(fakeLightBarStore.forDisplay(displayId = DISPLAY_4_NO_SYSTEM_DECOR), never())
+ .start()
}
+
+ companion object {
+ const val DISPLAY_1 = 1
+ const val DISPLAY_2 = 2
+ const val DISPLAY_3 = 3
+ const val DISPLAY_4_NO_SYSTEM_DECOR = 4
+ }
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/RemoteInputRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/RemoteInputRepositoryImplTest.kt
index 3b720ef30db7..e48c17ce8663 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/RemoteInputRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/RemoteInputRepositoryImplTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.data.repository
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -25,7 +23,6 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.statusbar.NotificationRemoteInputManager
import com.android.systemui.util.mockito.withArgCaptor
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/disableflags/data/repository/DisableFlagsRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/disableflags/data/repository/DisableFlagsRepositoryTest.kt
index cd078211f934..45fbbac7f981 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/disableflags/data/repository/DisableFlagsRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/disableflags/data/repository/DisableFlagsRepositoryTest.kt
@@ -40,7 +40,6 @@ import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
@@ -50,7 +49,6 @@ import org.junit.runner.RunWith
import org.mockito.Mockito.verify
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class DisableFlagsRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/domain/interactor/RemoteInputInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/domain/interactor/RemoteInputInteractorTest.kt
index 60da53cebc80..e44eaaf24836 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/domain/interactor/RemoteInputInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/domain/interactor/RemoteInputInteractorTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.domain.interactor
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -26,7 +24,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.statusbar.data.repository.fakeRemoteInputRepository
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/events/SystemEventCoordinatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/events/SystemEventCoordinatorTest.kt
index 742494b769de..01e8dfe385b0 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/events/SystemEventCoordinatorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/events/SystemEventCoordinatorTest.kt
@@ -25,7 +25,6 @@ import com.android.systemui.privacy.PrivacyItemController
import com.android.systemui.statusbar.policy.BatteryController
import com.android.systemui.util.mockito.any
import com.android.systemui.util.time.FakeSystemClock
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.test.TestScope
@@ -43,7 +42,6 @@ import org.mockito.MockitoAnnotations
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
class SystemEventCoordinatorTest : SysuiTestCase() {
private val fakeSystemClock = FakeSystemClock()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationStackAppearanceIntegrationTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationStackAppearanceIntegrationTest.kt
index c3547bc5cc9b..0f1cdac05f7a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationStackAppearanceIntegrationTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationStackAppearanceIntegrationTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.notification
import android.testing.TestableLooper.RunWithLooper
@@ -41,7 +39,6 @@ import com.android.systemui.statusbar.notification.stack.ui.viewmodel.notificati
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.notificationsPlaceholderViewModel
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runCurrent
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinatorTest.kt
index 3abd6207338c..c987b6155f9d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinatorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinatorTest.kt
@@ -47,7 +47,6 @@ import com.android.systemui.statusbar.phone.ScreenOffAnimationController
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.withArgCaptor
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -65,7 +64,6 @@ import org.mockito.kotlin.whenever
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(ParameterizedAndroidJunit4::class)
@SmallTest
@TestableLooper.RunWithLooper(setAsMainLooper = true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/LockScreenMinimalismCoordinatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/LockScreenMinimalismCoordinatorTest.kt
index 14148cdc0f03..a90539413adb 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/LockScreenMinimalismCoordinatorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/LockScreenMinimalismCoordinatorTest.kt
@@ -13,8 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.notification.collection.coordinator
import android.app.Notification
@@ -52,7 +50,6 @@ import com.google.common.truth.StringSubject
import com.google.common.truth.Truth.assertThat
import kotlin.time.Duration.Companion.seconds
import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestCoroutineScheduler
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinatorTest.kt
index 5f154acbaca0..7781df1ad91f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinatorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinatorTest.kt
@@ -13,8 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.notification.collection.coordinator
import android.app.Notification
@@ -56,7 +54,6 @@ import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth.assertThat
import kotlin.time.Duration.Companion.seconds
import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestCoroutineScheduler
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinatorTest.kt
index 8f21ddff524c..ad4925c99901 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinatorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinatorTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.notification.collection.coordinator
import android.app.Notification
@@ -74,7 +72,6 @@ import com.android.systemui.statusbar.policy.mockSensitiveNotificationProtection
import com.android.systemui.statusbar.policy.sensitiveNotificationProtectionController
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.withArgCaptor
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/ActiveNotificationsInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/ActiveNotificationsInteractorTest.kt
index 83c61507a506..d3befa921e9e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/ActiveNotificationsInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/ActiveNotificationsInteractorTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.notification.domain.interactor
import android.platform.test.annotations.DisableFlags
@@ -35,7 +33,6 @@ import com.android.systemui.statusbar.notification.promoted.shared.model.Promote
import com.android.systemui.statusbar.notification.shared.CallType
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/HeadsUpNotificationInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/HeadsUpNotificationInteractorTest.kt
index fae7d515d305..a7ae35d72780 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/HeadsUpNotificationInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/HeadsUpNotificationInteractorTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.notification.domain.interactor
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -38,7 +36,6 @@ import com.android.systemui.statusbar.notification.stack.data.repository.headsUp
import com.android.systemui.statusbar.notification.stack.domain.interactor.headsUpNotificationInteractor
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/NotificationsSoundPolicyInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/NotificationsSoundPolicyInteractorTest.kt
index 0195e9d8418b..7f0f199aa9b3 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/NotificationsSoundPolicyInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/NotificationsSoundPolicyInteractorTest.kt
@@ -31,7 +31,6 @@ import com.android.systemui.statusbar.policy.data.repository.zenModeRepository
import com.android.systemui.testKosmos
import com.google.common.truth.Expect
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -39,7 +38,6 @@ import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class NotificationsSoundPolicyInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationsListInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationsListInteractorTest.kt
index 5d9aa71c5d89..35b19c19d5ce 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationsListInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationsListInteractorTest.kt
@@ -47,7 +47,7 @@ class RenderNotificationsListInteractorTest : SysuiTestCase() {
private val notifsRepository = kosmos.activeNotificationListRepository
private val notifsInteractor = kosmos.activeNotificationsInteractor
private val underTest =
- RenderNotificationListInteractor(notifsRepository, sectionStyleProvider = mock())
+ RenderNotificationListInteractor(notifsRepository, sectionStyleProvider = mock(), context)
@Test
fun setRenderedList_preservesOrdering() =
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/emptyshade/ui/viewmodel/EmptyShadeViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/emptyshade/ui/viewmodel/EmptyShadeViewModelTest.kt
index 163ae47ad78a..5ba972def76d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/emptyshade/ui/viewmodel/EmptyShadeViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/emptyshade/ui/viewmodel/EmptyShadeViewModelTest.kt
@@ -40,7 +40,6 @@ import com.android.systemui.statusbar.policy.data.repository.zenModeRepository
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import java.util.Locale
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.After
@@ -50,7 +49,6 @@ import org.junit.runner.RunWith
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(ParameterizedAndroidJunit4::class)
@SmallTest
class EmptyShadeViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/footer/ui/viewmodel/FooterViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/footer/ui/viewmodel/FooterViewModelTest.kt
index b3a60b052d08..cb2de88172ee 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/footer/ui/viewmodel/FooterViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/footer/ui/viewmodel/FooterViewModelTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.notification.footer.ui.viewmodel
import android.platform.test.annotations.DisableFlags
@@ -45,7 +43,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.ui.isAnimating
import com.android.systemui.util.ui.value
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/headsup/AvalancheControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/headsup/AvalancheControllerTest.kt
index 31a2bd0371aa..dc27859df421 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/headsup/AvalancheControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/headsup/AvalancheControllerTest.kt
@@ -234,32 +234,6 @@ class AvalancheControllerTest : SysuiTestCase() {
}
@Test
- fun testDelete_wasDropped_removedFromDropSet() {
- // Entry was dropped
- val headsUpEntry = createHeadsUpEntry(id = 0)
- mAvalancheController.debugDropSet.add(headsUpEntry)
-
- // Delete
- mAvalancheController.delete(headsUpEntry, runnableMock!!, "testLabel")
-
- // Entry was removed from dropSet
- assertThat(mAvalancheController.debugDropSet.contains(headsUpEntry)).isFalse()
- }
-
- @Test
- fun testDelete_wasDropped_runnableNotRun() {
- // Entry was dropped
- val headsUpEntry = createHeadsUpEntry(id = 0)
- mAvalancheController.debugDropSet.add(headsUpEntry)
-
- // Delete
- mAvalancheController.delete(headsUpEntry, runnableMock!!, "testLabel")
-
- // Runnable was not run
- Mockito.verify(runnableMock, Mockito.times(0)).run()
- }
-
- @Test
fun testDelete_isShowing_runnableRun() {
// Entry is showing
val headsUpEntry = createHeadsUpEntry(id = 0)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerImplTest.kt
index 9dfc922eb7d0..339f8fac3820 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerImplTest.kt
@@ -46,6 +46,7 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder
import com.android.systemui.statusbar.notification.collection.provider.visualStabilityProvider
import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager
+import com.android.systemui.statusbar.notification.promoted.PromotedNotificationUi
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.row.NotificationTestHelper
import com.android.systemui.statusbar.notification.shared.NotificationThrottleHun
@@ -678,25 +679,32 @@ class HeadsUpManagerImplTest(flags: FlagsParameterization) : SysuiTestCase() {
}
@Test
- @DisableFlags(StatusBarNotifChips.FLAG_NAME)
- fun testIsSticky_promotedAndExpanded_notifChipsFlagOff_true() {
- val notif = Notification.Builder(mContext, "").setSmallIcon(R.drawable.ic_person).build()
- notif.flags = FLAG_PROMOTED_ONGOING
- val notifEntry = HeadsUpManagerTestUtil.createEntry(/* id= */ 0, notif)
- val row = testHelper.createRow().apply { setPinnedStatus(PinnedStatus.PinnedBySystem) }
- notifEntry.row = row
-
- underTest.showNotification(notifEntry)
+ @DisableFlags(StatusBarNotifChips.FLAG_NAME, PromotedNotificationUi.FLAG_NAME)
+ fun testIsSticky_promotedAndExpanded_notifChipsFlagOff_promotedUiFlagOff_true() {
+ assertThat(getIsSticky_promotedAndExpanded()).isTrue()
+ }
- val headsUpEntry = underTest.getHeadsUpEntry(notifEntry.key)
- headsUpEntry!!.setExpanded(true)
+ @Test
+ @EnableFlags(StatusBarNotifChips.FLAG_NAME, PromotedNotificationUi.FLAG_NAME)
+ fun testIsSticky_promotedAndExpanded_notifChipsFlagOn_promotedUiFlagOn_false() {
+ assertThat(getIsSticky_promotedAndExpanded()).isFalse()
+ }
- assertThat(underTest.isSticky(notifEntry.key)).isTrue()
+ @Test
+ @EnableFlags(PromotedNotificationUi.FLAG_NAME)
+ @DisableFlags(StatusBarNotifChips.FLAG_NAME)
+ fun testIsSticky_promotedAndExpanded_promotedUiFlagOn_false() {
+ assertThat(getIsSticky_promotedAndExpanded()).isFalse()
}
@Test
@EnableFlags(StatusBarNotifChips.FLAG_NAME)
+ @DisableFlags(PromotedNotificationUi.FLAG_NAME)
fun testIsSticky_promotedAndExpanded_notifChipsFlagOn_false() {
+ assertThat(getIsSticky_promotedAndExpanded()).isFalse()
+ }
+
+ private fun getIsSticky_promotedAndExpanded(): Boolean {
val notif = Notification.Builder(mContext, "").setSmallIcon(R.drawable.ic_person).build()
notif.flags = FLAG_PROMOTED_ONGOING
val notifEntry = HeadsUpManagerTestUtil.createEntry(/* id= */ 0, notif)
@@ -708,7 +716,7 @@ class HeadsUpManagerImplTest(flags: FlagsParameterization) : SysuiTestCase() {
val headsUpEntry = underTest.getHeadsUpEntry(notifEntry.key)
headsUpEntry!!.setExpanded(true)
- assertThat(underTest.isSticky(notifEntry.key)).isFalse()
+ return underTest.isSticky(notifEntry.key)
}
@Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/icon/domain/interactor/NotificationIconsInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/icon/domain/interactor/NotificationIconsInteractorTest.kt
index f07303ed32e3..ee4d0990d38f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/icon/domain/interactor/NotificationIconsInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/icon/domain/interactor/NotificationIconsInteractorTest.kt
@@ -15,6 +15,7 @@
package com.android.systemui.statusbar.notification.icon.domain.interactor
+import android.platform.test.annotations.DisableFlags
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
@@ -24,6 +25,7 @@ import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor
import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.kosmos.testScope
import com.android.systemui.statusbar.data.repository.notificationListenerSettingsRepository
+import com.android.systemui.statusbar.headsup.shared.StatusBarNoHunBehavior
import com.android.systemui.statusbar.notification.data.model.activeNotificationModel
import com.android.systemui.statusbar.notification.data.repository.ActiveNotificationsStore
import com.android.systemui.statusbar.notification.data.repository.activeNotificationListRepository
@@ -44,7 +46,6 @@ import com.android.systemui.util.mockito.whenever
import com.android.wm.shell.bubbles.bubbles
import com.android.wm.shell.bubbles.bubblesOptional
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
@@ -63,7 +64,7 @@ class NotificationIconsInteractorTest : SysuiTestCase() {
kosmos.activeNotificationsInteractor,
kosmos.bubblesOptional,
kosmos.headsUpNotificationIconInteractor,
- kosmos.notificationsKeyguardViewStateRepository
+ kosmos.notificationsKeyguardViewStateRepository,
)
@Before
@@ -142,7 +143,6 @@ class NotificationIconsInteractorTest : SysuiTestCase() {
}
}
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class AlwaysOnDisplayNotificationIconsInteractorTest : SysuiTestCase() {
@@ -308,6 +308,7 @@ class StatusBarNotificationIconsInteractorTest : SysuiTestCase() {
}
@Test
+ @DisableFlags(StatusBarNoHunBehavior.FLAG_NAME)
fun filteredEntrySet_includesIsolatedIcon() =
testScope.runTest {
val filteredSet by collectLastValue(underTest.statusBarNotifs)
@@ -318,31 +319,11 @@ class StatusBarNotificationIconsInteractorTest : SysuiTestCase() {
private val testIcons =
listOf(
- activeNotificationModel(
- key = "notif1",
- ),
- activeNotificationModel(
- key = "notif2",
- isAmbient = true,
- ),
- activeNotificationModel(
- key = "notif3",
- isRowDismissed = true,
- ),
- activeNotificationModel(
- key = "notif4",
- isSilent = true,
- ),
- activeNotificationModel(
- key = "notif5",
- isLastMessageFromReply = true,
- ),
- activeNotificationModel(
- key = "notif6",
- isSuppressedFromStatusBar = true,
- ),
- activeNotificationModel(
- key = "notif7",
- isPulsing = true,
- ),
+ activeNotificationModel(key = "notif1"),
+ activeNotificationModel(key = "notif2", isAmbient = true),
+ activeNotificationModel(key = "notif3", isRowDismissed = true),
+ activeNotificationModel(key = "notif4", isSilent = true),
+ activeNotificationModel(key = "notif5", isLastMessageFromReply = true),
+ activeNotificationModel(key = "notif6", isSuppressedFromStatusBar = true),
+ activeNotificationModel(key = "notif7", isPulsing = true),
)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerAlwaysOnDisplayViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerAlwaysOnDisplayViewModelTest.kt
index 76390fddc529..fb734ac79dc8 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerAlwaysOnDisplayViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerAlwaysOnDisplayViewModelTest.kt
@@ -46,7 +46,6 @@ import com.android.systemui.statusbar.phone.dozeParameters
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -55,7 +54,6 @@ import org.junit.runner.RunWith
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
class NotificationIconContainerAlwaysOnDisplayViewModelTest(flags: FlagsParameterization) :
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorImplTest.kt
index abb1edf8cb27..a3fde5a06573 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorImplTest.kt
@@ -27,6 +27,7 @@ import android.app.Notification.ProgressStyle.Segment
import android.app.PendingIntent
import android.app.Person
import android.content.Intent
+import android.graphics.drawable.Icon
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -38,6 +39,7 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntryB
import com.android.systemui.statusbar.notification.promoted.AutomaticPromotionCoordinator.Companion.EXTRA_WAS_AUTOMATICALLY_PROMOTED
import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel
import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel.Style
+import com.android.systemui.statusbar.notification.row.RowImageInflater
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import org.junit.Test
@@ -49,6 +51,8 @@ class PromotedNotificationContentExtractorImplTest : SysuiTestCase() {
private val kosmos = testKosmos()
private val underTest = kosmos.promotedNotificationContentExtractor
+ private val rowImageInflater = RowImageInflater.newInstance(previousIndex = null)
+ private val imageModelProvider by lazy { rowImageInflater.useForContentModel() }
@Test
@DisableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME)
@@ -237,9 +241,9 @@ class PromotedNotificationContentExtractorImplTest : SysuiTestCase() {
assertThat(content).isNotNull()
assertThat(content?.style).isEqualTo(Style.Progress)
- assertThat(content?.progress).isNotNull()
- assertThat(content?.progress?.progress).isEqualTo(75)
- assertThat(content?.progress?.progressMax).isEqualTo(100)
+ assertThat(content?.newProgress).isNotNull()
+ assertThat(content?.newProgress?.progress).isEqualTo(75)
+ assertThat(content?.newProgress?.progressMax).isEqualTo(100)
}
@Test
@@ -255,16 +259,57 @@ class PromotedNotificationContentExtractorImplTest : SysuiTestCase() {
assertThat(content?.style).isEqualTo(Style.Ineligible)
}
+ @Test
+ @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME)
+ fun extractsContent_fromOldProgressDeterminate() {
+ val entry = createEntry {
+ setProgress(TEST_PROGRESS_MAX, TEST_PROGRESS, /* indeterminate= */ false)
+ }
+
+ val content = extractContent(entry)
+
+ assertThat(content).isNotNull()
+
+ val oldProgress = content?.oldProgress
+ assertThat(oldProgress).isNotNull()
+
+ assertThat(content).isNotNull()
+ assertThat(content?.oldProgress).isNotNull()
+ assertThat(content?.oldProgress?.progress).isEqualTo(TEST_PROGRESS)
+ assertThat(content?.oldProgress?.max).isEqualTo(TEST_PROGRESS_MAX)
+ assertThat(content?.oldProgress?.isIndeterminate).isFalse()
+ }
+
+ @Test
+ @EnableFlags(PromotedNotificationUi.FLAG_NAME, StatusBarNotifChips.FLAG_NAME)
+ fun extractsContent_fromOldProgressIndeterminate() {
+ val entry = createEntry {
+ setProgress(TEST_PROGRESS_MAX, TEST_PROGRESS, /* indeterminate= */ true)
+ }
+
+ val content = extractContent(entry)
+
+ assertThat(content).isNotNull()
+ assertThat(content?.oldProgress).isNotNull()
+ assertThat(content?.oldProgress?.progress).isEqualTo(TEST_PROGRESS)
+ assertThat(content?.oldProgress?.max).isEqualTo(TEST_PROGRESS_MAX)
+ assertThat(content?.oldProgress?.isIndeterminate).isTrue()
+ }
+
private fun extractContent(entry: NotificationEntry): PromotedNotificationContentModel? {
val recoveredBuilder = Notification.Builder(context, entry.sbn.notification)
- return underTest.extractContent(entry, recoveredBuilder)
+ return underTest.extractContent(entry, recoveredBuilder, imageModelProvider)
}
private fun createEntry(
promoted: Boolean = true,
builderBlock: Notification.Builder.() -> Unit = {},
): NotificationEntry {
- val notif = Notification.Builder(context, "channel").also(builderBlock).build()
+ val notif =
+ Notification.Builder(context, "channel")
+ .setSmallIcon(Icon.createWithContentUri("content://foo/bar"))
+ .also(builderBlock)
+ .build()
if (promoted) {
notif.flags = FLAG_PROMOTED_ONGOING
}
@@ -277,6 +322,9 @@ class PromotedNotificationContentExtractorImplTest : SysuiTestCase() {
private const val TEST_CONTENT_TEXT = "content text"
private const val TEST_SHORT_CRITICAL_TEXT = "short"
+ private const val TEST_PROGRESS = 50
+ private const val TEST_PROGRESS_MAX = 100
+
private const val TEST_PERSON_NAME = "person name"
private const val TEST_PERSON_KEY = "person key"
private val TEST_PERSON =
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/BigPictureIconManagerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/BigPictureIconManagerTest.kt
index da488336c7c3..99dcd6c9a798 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/BigPictureIconManagerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/BigPictureIconManagerTest.kt
@@ -30,7 +30,6 @@ import com.android.systemui.res.R
import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceTimeBy
@@ -47,7 +46,6 @@ import org.mockito.Mockito.verifyNoMoreInteractions
private const val FREE_IMAGE_DELAY_MS = 4000L
private const val MAX_IMAGE_SIZE = 512 // size of the test drawables in pixels
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWithLooper
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/BundleNotificationInfoTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/BundleNotificationInfoTest.java
deleted file mode 100644
index 66277e2d13a6..000000000000
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/BundleNotificationInfoTest.java
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.statusbar.notification.row;
-
-import static android.app.Notification.EXTRA_BUILDER_APPLICATION_INFO;
-import static android.app.NotificationManager.IMPORTANCE_LOW;
-import static android.print.PrintManager.PRINT_SPOOLER_PACKAGE_NAME;
-import static android.service.notification.NotificationAssistantService.ACTION_NOTIFICATION_ASSISTANT_FEEDBACK_SETTINGS;
-
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertNotNull;
-
-import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.anyBoolean;
-import static org.mockito.Mockito.anyInt;
-import static org.mockito.Mockito.atLeastOnce;
-import static org.mockito.Mockito.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.app.INotificationManager;
-import android.app.Notification;
-import android.app.NotificationChannel;
-import android.content.ComponentName;
-import android.content.Intent;
-import android.content.pm.ActivityInfo;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.os.UserHandle;
-import android.platform.test.annotations.EnableFlags;
-import android.service.notification.NotificationAssistantService;
-import android.service.notification.StatusBarNotification;
-import android.telecom.TelecomManager;
-import android.testing.TestableLooper;
-import android.view.LayoutInflater;
-import android.view.View;
-
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.filters.SmallTest;
-
-import com.android.internal.logging.MetricsLogger;
-import com.android.internal.logging.testing.UiEventLoggerFake;
-import com.android.systemui.Dependency;
-import com.android.systemui.SysuiTestCase;
-import com.android.systemui.res.R;
-import com.android.systemui.statusbar.notification.AssistantFeedbackController;
-import com.android.systemui.statusbar.notification.collection.NotificationEntry;
-import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnit;
-import org.mockito.junit.MockitoRule;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-
-@SmallTest
-@RunWith(AndroidJUnit4.class)
-@TestableLooper.RunWithLooper
-public class BundleNotificationInfoTest extends SysuiTestCase {
- private static final String TEST_PACKAGE_NAME = "test_package";
- private static final String TEST_SYSTEM_PACKAGE_NAME = PRINT_SPOOLER_PACKAGE_NAME;
- private static final int TEST_UID = 1;
- private static final String TEST_CHANNEL = "test_channel";
- private static final String TEST_CHANNEL_NAME = "TEST CHANNEL NAME";
-
- private TestableLooper mTestableLooper;
- private BundleNotificationInfo mInfo;
- private NotificationChannel mNotificationChannel;
- private StatusBarNotification mSbn;
- private NotificationEntry mEntry;
- private UiEventLoggerFake mUiEventLogger = new UiEventLoggerFake();
-
- @Rule
- public MockitoRule mockito = MockitoJUnit.rule();
- @Mock
- private MetricsLogger mMetricsLogger;
- @Mock
- private INotificationManager mMockINotificationManager;
- @Mock
- private PackageManager mMockPackageManager;
- @Mock
- private OnUserInteractionCallback mOnUserInteractionCallback;
- @Mock
- private ChannelEditorDialogController mChannelEditorDialogController;
- @Mock
- private AssistantFeedbackController mAssistantFeedbackController;
- @Mock
- private TelecomManager mTelecomManager;
-
- @Before
- public void setUp() throws Exception {
- mTestableLooper = TestableLooper.get(this);
-
- mContext.addMockSystemService(TelecomManager.class, mTelecomManager);
-
- mDependency.injectTestDependency(Dependency.BG_LOOPER, mTestableLooper.getLooper());
- // Inflate the layout
- final LayoutInflater layoutInflater = LayoutInflater.from(mContext);
- mInfo = (BundleNotificationInfo) layoutInflater.inflate(R.layout.bundle_notification_info,
- null);
- mInfo.setGutsParent(mock(NotificationGuts.class));
- // Our view is never attached to a window so the View#post methods in
- // BundleNotificationInfo never get called. Setting this will skip the post and do the
- // action immediately.
- mInfo.mSkipPost = true;
-
- // PackageManager must return a packageInfo and applicationInfo.
- final PackageInfo packageInfo = new PackageInfo();
- packageInfo.packageName = TEST_PACKAGE_NAME;
- when(mMockPackageManager.getPackageInfo(eq(TEST_PACKAGE_NAME), anyInt()))
- .thenReturn(packageInfo);
- final ApplicationInfo applicationInfo = new ApplicationInfo();
- applicationInfo.uid = TEST_UID; // non-zero
- final PackageInfo systemPackageInfo = new PackageInfo();
- systemPackageInfo.packageName = TEST_SYSTEM_PACKAGE_NAME;
- when(mMockPackageManager.getPackageInfo(eq(TEST_SYSTEM_PACKAGE_NAME), anyInt()))
- .thenReturn(systemPackageInfo);
- when(mMockPackageManager.getPackageInfo(eq("android"), anyInt()))
- .thenReturn(packageInfo);
-
- // Package has one channel by default.
- when(mMockINotificationManager.getNumNotificationChannelsForPackage(
- eq(TEST_PACKAGE_NAME), eq(TEST_UID), anyBoolean())).thenReturn(1);
-
- // Some test channels.
- mNotificationChannel = new NotificationChannel(
- TEST_CHANNEL, TEST_CHANNEL_NAME, IMPORTANCE_LOW);
- Notification notification = new Notification();
- notification.extras.putParcelable(EXTRA_BUILDER_APPLICATION_INFO, applicationInfo);
- mSbn = new StatusBarNotification(TEST_PACKAGE_NAME, TEST_PACKAGE_NAME, 0, null, TEST_UID, 0,
- notification, UserHandle.getUserHandleForUid(TEST_UID), null, 0);
- mEntry = new NotificationEntryBuilder().setSbn(mSbn).build();
- when(mAssistantFeedbackController.isFeedbackEnabled()).thenReturn(false);
- when(mAssistantFeedbackController.getInlineDescriptionResource(any()))
- .thenReturn(R.string.notification_channel_summary_automatic);
- }
-
- @Test
- @EnableFlags(android.app.Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI)
- public void testBindNotification_setsOnClickListenerForFeedback() throws Exception {
- // When Notification Assistant is available,
- when(mMockINotificationManager.getAllowedNotificationAssistant()).thenReturn(
- new ComponentName("assistantPkg", "assistantCls"));
-
- // ...and Package manager has an intent that matches.
- ArrayList<ResolveInfo> resolveInfos = new ArrayList<>();
- ResolveInfo info = new ResolveInfo();
- info.activityInfo = new ActivityInfo();
- info.activityInfo.packageName = "assistantPkg";
- info.activityInfo.name = "assistantCls";
- resolveInfos.add(info);
- when(mMockPackageManager.queryIntentActivities(any(), anyInt())).thenReturn(resolveInfos);
-
- // And we attempt to bind the notification to the Info object
- final CountDownLatch latch = new CountDownLatch(1);
- mInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- (View v, Intent intent) -> {
- // Assert that the intent action and package match.
- assertEquals(intent.getAction(),
- ACTION_NOTIFICATION_ASSISTANT_FEEDBACK_SETTINGS);
- assertEquals(intent.getPackage(), "assistantPkg");
- latch.countDown();
- },
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
- // and the feedback button is clicked,
- final View feedbackButton = mInfo.findViewById(R.id.notification_guts_bundle_feedback);
- feedbackButton.performClick();
-
- // then of the intents queried for is the feedback intent,
- ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
- verify(mMockPackageManager, atLeastOnce()).queryIntentActivities(captor.capture(),
- anyInt());
- List<Intent> capturedIntents = captor.getAllValues();
- Intent feedbackIntent = null;
- for (int i = 0; i < capturedIntents.size(); i++) {
- final Intent capturedIntent = capturedIntents.get(i);
- if (capturedIntent.getAction() == ACTION_NOTIFICATION_ASSISTANT_FEEDBACK_SETTINGS
- && capturedIntent.getPackage().equals("assistantPkg")) {
- feedbackIntent = capturedIntent;
- }
- }
- assertNotNull("feedbackIntent should be not null", feedbackIntent);
- assertEquals(mSbn.getKey(),
- feedbackIntent.getExtra(NotificationAssistantService.EXTRA_NOTIFICATION_KEY));
-
- // and verify that listener was triggered.
- assertEquals(0, latch.getCount());
- assertEquals(View.VISIBLE, feedbackButton.getVisibility());
- }
-
- @Test
- @EnableFlags(android.app.Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI)
- public void testBindNotification_hidesFeedbackButtonWhenNoNAS() throws Exception {
- // When the Notification Assistant is not available
- when(mMockINotificationManager.getAllowedNotificationAssistant()).thenReturn(null);
- final CountDownLatch latch = new CountDownLatch(1);
-
- mInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- (View v, Intent intent) -> {
- // Assert that the intent action and package match.
- assertEquals(intent.getAction(),
- ACTION_NOTIFICATION_ASSISTANT_FEEDBACK_SETTINGS);
- assertEquals(intent.getPackage(), "assistantPkg");
- latch.countDown();
- },
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
-
- final View feedbackButton = mInfo.findViewById(R.id.notification_guts_bundle_feedback);
- feedbackButton.performClick();
- // Listener was not triggered
- assertEquals(1, latch.getCount());
- assertEquals(View.GONE, feedbackButton.getVisibility());
- }
-
- @Test
- @EnableFlags(android.app.Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI)
- public void testBindNotification_hidesFeedbackButtonWhenNoIntent() throws Exception {
- // When the Notification Assistant is available,
- when(mMockINotificationManager.getAllowedNotificationAssistant()).thenReturn(
- new ComponentName("assistantPkg", "assistantCls"));
-
- // But the intent activity is null
- when(mMockPackageManager.queryIntentActivities(any(), anyInt())).thenReturn(null);
-
- final CountDownLatch latch = new CountDownLatch(1);
- mInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- (View v, Intent intent) -> {
- // Assert that the intent action and package match.
- assertEquals(intent.getAction(),
- ACTION_NOTIFICATION_ASSISTANT_FEEDBACK_SETTINGS);
- assertEquals(intent.getPackage(), "assistantPkg");
- latch.countDown();
- },
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
-
- final View feedbackButton = mInfo.findViewById(R.id.notification_guts_bundle_feedback);
- feedbackButton.performClick();
- // Listener was not triggered
- assertEquals(1, latch.getCount());
- assertEquals(View.GONE, feedbackButton.getVisibility());
- }
-}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.kt
index 28b2ee8dde06..d43cc78e20dc 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.kt
@@ -13,8 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.notification.row
import android.R
@@ -81,7 +79,6 @@ import com.android.systemui.wmshell.BubblesManager
import java.util.Optional
import kotlin.test.assertNotNull
import kotlin.test.fail
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Assert.assertEquals
@@ -522,6 +519,7 @@ class NotificationGutsManagerTest(flags: FlagsParameterization) : SysuiTestCase(
eq(entry),
any<NotificationInfo.OnSettingsClickListener>(),
any<NotificationInfo.OnAppSettingsClickListener>(),
+ any<NotificationInfo.OnFeedbackClickListener>(),
any<UiEventLogger>(),
/* isDeviceProvisioned = */ eq(false),
/* isNonblockable = */ eq(false),
@@ -559,6 +557,7 @@ class NotificationGutsManagerTest(flags: FlagsParameterization) : SysuiTestCase(
eq(entry),
any<NotificationInfo.OnSettingsClickListener>(),
any<NotificationInfo.OnAppSettingsClickListener>(),
+ any<NotificationInfo.OnFeedbackClickListener>(),
any<UiEventLogger>(),
/* isDeviceProvisioned = */ eq(true),
/* isNonblockable = */ eq(false),
@@ -594,44 +593,7 @@ class NotificationGutsManagerTest(flags: FlagsParameterization) : SysuiTestCase(
eq(entry),
any<NotificationInfo.OnSettingsClickListener>(),
any<NotificationInfo.OnAppSettingsClickListener>(),
- any<UiEventLogger>(),
- /* isDeviceProvisioned = */ eq(false),
- /* isNonblockable = */ eq(false),
- /* wasShownHighPriority = */ eq(false),
- eq(assistantFeedbackController),
- eq(metricsLogger),
- any<View.OnClickListener>(),
- )
- }
-
- @Test
- @Throws(Exception::class)
- fun testInitializeBundleNotificationInfoView() {
- val infoView: BundleNotificationInfo = mock()
- val row = spy(helper.createRow())
- val entry = row.entry
-
- // Modify the notification entry to have a channel that is in SYSTEM_RESERVED_IDS
- val channel = NotificationChannel(NotificationChannel.NEWS_ID, "name", 2)
- NotificationEntryHelper.modifyRanking(entry).setChannel(channel).build()
-
- whenever(row.isNonblockable).thenReturn(false)
- val statusBarNotification = entry.sbn
- // Can we change this to a call to bindGuts instead? We have the row,
- // we need a MenuItem that we can put the infoView into.
- gutsManager.initializeBundleNotificationInfo(row, infoView)
-
- verify(infoView)
- .bindNotification(
- any<PackageManager>(),
- any<INotificationManager>(),
- eq(onUserInteractionCallback),
- eq(channelEditorDialogController),
- eq(statusBarNotification.packageName),
- any<NotificationChannel>(),
- eq(entry),
- any<NotificationInfo.OnSettingsClickListener>(),
- any<NotificationInfo.OnAppSettingsClickListener>(),
+ any<NotificationInfo.OnFeedbackClickListener>(),
any<UiEventLogger>(),
/* isDeviceProvisioned = */ eq(false),
/* isNonblockable = */ eq(false),
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationInfoTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationInfoTest.java
index fdba7ba34855..a64339e20f7c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationInfoTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationInfoTest.java
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.notification.row;
import static android.app.Notification.EXTRA_BUILDER_APPLICATION_INFO;
+import static android.app.NotificationChannel.SOCIAL_MEDIA_ID;
import static android.app.NotificationChannel.USER_LOCKED_IMPORTANCE;
import static android.app.NotificationManager.IMPORTANCE_DEFAULT;
import static android.app.NotificationManager.IMPORTANCE_LOW;
@@ -41,18 +42,26 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.app.Flags;
import android.app.INotificationManager;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationChannelGroup;
import android.app.PendingIntent;
import android.app.Person;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
import android.graphics.drawable.Drawable;
import android.os.RemoteException;
import android.os.UserHandle;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
import android.service.notification.StatusBarNotification;
import android.telecom.TelecomManager;
import android.testing.TestableLooper;
@@ -69,6 +78,7 @@ import com.android.internal.logging.testing.UiEventLoggerFake;
import com.android.systemui.Dependency;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.res.R;
+import com.android.systemui.statusbar.RankingBuilder;
import com.android.systemui.statusbar.notification.AssistantFeedbackController;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
@@ -82,6 +92,8 @@ import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
+import java.util.List;
+import java.util.Optional;
import java.util.concurrent.CountDownLatch;
@SmallTest
@@ -98,6 +110,7 @@ public class NotificationInfoTest extends SysuiTestCase {
private NotificationInfo mNotificationInfo;
private NotificationChannel mNotificationChannel;
private NotificationChannel mDefaultNotificationChannel;
+ private NotificationChannel mClassifiedNotificationChannel;
private StatusBarNotification mSbn;
private NotificationEntry mEntry;
private UiEventLoggerFake mUiEventLogger = new UiEventLoggerFake();
@@ -119,6 +132,9 @@ public class NotificationInfoTest extends SysuiTestCase {
@Mock
private TelecomManager mTelecomManager;
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
@Before
public void setUp() throws Exception {
mTestableLooper = TestableLooper.get(this);
@@ -149,6 +165,14 @@ public class NotificationInfoTest extends SysuiTestCase {
when(mMockPackageManager.getPackageInfo(eq("android"), anyInt()))
.thenReturn(packageInfo);
+ ComponentName assistant = new ComponentName("package", "service");
+ when(mMockINotificationManager.getAllowedNotificationAssistant()).thenReturn(assistant);
+ ResolveInfo ri = new ResolveInfo();
+ ri.activityInfo = new ActivityInfo();
+ ri.activityInfo.packageName = assistant.getPackageName();
+ ri.activityInfo.name = "activity";
+ when(mMockPackageManager.queryIntentActivities(any(), anyInt())).thenReturn(List.of(ri));
+
// Package has one channel by default.
when(mMockINotificationManager.getNumNotificationChannelsForPackage(
eq(TEST_PACKAGE_NAME), eq(TEST_UID), anyBoolean())).thenReturn(1);
@@ -159,6 +183,9 @@ public class NotificationInfoTest extends SysuiTestCase {
mDefaultNotificationChannel = new NotificationChannel(
NotificationChannel.DEFAULT_CHANNEL_ID, TEST_CHANNEL_NAME,
IMPORTANCE_LOW);
+ mClassifiedNotificationChannel =
+ new NotificationChannel(SOCIAL_MEDIA_ID, "social", IMPORTANCE_LOW);
+
Notification notification = new Notification();
notification.extras.putParcelable(EXTRA_BUILDER_APPLICATION_INFO, applicationInfo);
mSbn = new StatusBarNotification(TEST_PACKAGE_NAME, TEST_PACKAGE_NAME, 0, null, TEST_UID, 0,
@@ -168,10 +195,8 @@ public class NotificationInfoTest extends SysuiTestCase {
when(mAssistantFeedbackController.getInlineDescriptionResource(any()))
.thenReturn(R.string.notification_channel_summary_automatic);
}
-
- @Test
- public void testBindNotification_SetsTextApplicationName() throws Exception {
- when(mMockPackageManager.getApplicationLabel(any())).thenReturn("App Name");
+
+ private void doStandardBind() throws Exception {
mNotificationInfo.bindNotification(
mMockPackageManager,
mMockINotificationManager,
@@ -182,12 +207,19 @@ public class NotificationInfoTest extends SysuiTestCase {
mEntry,
null,
null,
+ null,
mUiEventLogger,
true,
false,
true,
mAssistantFeedbackController,
mMetricsLogger, null);
+ }
+
+ @Test
+ public void testBindNotification_SetsTextApplicationName() throws Exception {
+ when(mMockPackageManager.getApplicationLabel(any())).thenReturn("App Name");
+ doStandardBind();
final TextView textView = mNotificationInfo.findViewById(R.id.pkg_name);
assertTrue(textView.getText().toString().contains("App Name"));
assertEquals(VISIBLE, mNotificationInfo.findViewById(R.id.header).getVisibility());
@@ -198,44 +230,14 @@ public class NotificationInfoTest extends SysuiTestCase {
final Drawable iconDrawable = mock(Drawable.class);
when(mMockPackageManager.getApplicationIcon(any(ApplicationInfo.class)))
.thenReturn(iconDrawable);
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger, null);
+ doStandardBind();
final ImageView iconView = mNotificationInfo.findViewById(R.id.pkg_icon);
assertEquals(iconDrawable, iconView.getDrawable());
}
@Test
public void testBindNotification_noDelegate() throws Exception {
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger, null);
+ doStandardBind();
final TextView nameView = mNotificationInfo.findViewById(R.id.delegate_name);
assertEquals(GONE, nameView.getVisibility());
}
@@ -261,6 +263,7 @@ public class NotificationInfoTest extends SysuiTestCase {
entry,
null,
null,
+ null,
mUiEventLogger,
true,
false,
@@ -274,22 +277,7 @@ public class NotificationInfoTest extends SysuiTestCase {
@Test
public void testBindNotification_GroupNameHiddenIfNoGroup() throws Exception {
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger, null);
+ doStandardBind();
final TextView groupNameView = mNotificationInfo.findViewById(R.id.group_name);
assertEquals(GONE, groupNameView.getVisibility());
}
@@ -302,22 +290,7 @@ public class NotificationInfoTest extends SysuiTestCase {
when(mMockINotificationManager.getNotificationChannelGroupForPackage(
eq("test_group_id"), eq(TEST_PACKAGE_NAME), eq(TEST_UID)))
.thenReturn(notificationChannelGroup);
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger, null);
+ doStandardBind();
final TextView groupNameView = mNotificationInfo.findViewById(R.id.group_name);
assertEquals(View.VISIBLE, groupNameView.getVisibility());
assertEquals("Test Group Name", groupNameView.getText());
@@ -325,22 +298,7 @@ public class NotificationInfoTest extends SysuiTestCase {
@Test
public void testBindNotification_SetsTextChannelName() throws Exception {
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger, null);
+ doStandardBind();
final TextView textView = mNotificationInfo.findViewById(R.id.channel_name);
assertEquals(TEST_CHANNEL_NAME, textView.getText());
}
@@ -357,6 +315,7 @@ public class NotificationInfoTest extends SysuiTestCase {
mEntry,
null,
null,
+ null,
mUiEventLogger,
true,
false,
@@ -383,6 +342,7 @@ public class NotificationInfoTest extends SysuiTestCase {
mEntry,
null,
null,
+ null,
mUiEventLogger,
true,
false,
@@ -406,13 +366,13 @@ public class NotificationInfoTest extends SysuiTestCase {
mEntry,
null,
null,
+ null,
mUiEventLogger,
true,
true,
true,
mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ mMetricsLogger, null);
final TextView textView = mNotificationInfo.findViewById(R.id.channel_name);
assertEquals(VISIBLE, textView.getVisibility());
}
@@ -433,6 +393,7 @@ public class NotificationInfoTest extends SysuiTestCase {
latch.countDown();
},
null,
+ null,
mUiEventLogger,
true,
false,
@@ -449,23 +410,7 @@ public class NotificationInfoTest extends SysuiTestCase {
@Test
public void testBindNotification_SettingsButtonInvisibleWhenNoClickListener() throws Exception {
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ doStandardBind();
final View settingsButton = mNotificationInfo.findViewById(R.id.info);
assertTrue(settingsButton.getVisibility() != View.VISIBLE);
}
@@ -485,6 +430,7 @@ public class NotificationInfoTest extends SysuiTestCase {
assertEquals(mNotificationChannel, c);
},
null,
+ null,
mUiEventLogger,
false,
false,
@@ -498,23 +444,7 @@ public class NotificationInfoTest extends SysuiTestCase {
@Test
public void testBindNotification_SettingsButtonReappearsAfterSecondBind() throws Exception {
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ doStandardBind();
mNotificationInfo.bindNotification(
mMockPackageManager,
mMockINotificationManager,
@@ -525,6 +455,7 @@ public class NotificationInfoTest extends SysuiTestCase {
mEntry,
(View v, NotificationChannel c, int appUid) -> { },
null,
+ null,
mUiEventLogger,
true,
false,
@@ -548,13 +479,13 @@ public class NotificationInfoTest extends SysuiTestCase {
mEntry,
null,
null,
+ null,
mUiEventLogger,
true,
true,
true,
mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ mMetricsLogger, null);
final TextView view = mNotificationInfo.findViewById(R.id.non_configurable_text);
assertEquals(View.VISIBLE, view.getVisibility());
assertEquals(mContext.getString(R.string.notification_unblockable_desc),
@@ -582,23 +513,7 @@ public class NotificationInfoTest extends SysuiTestCase {
mSbn = new StatusBarNotification(TEST_PACKAGE_NAME, TEST_PACKAGE_NAME, 0, null, TEST_UID, 0,
nb.build(), UserHandle.getUserHandleForUid(TEST_UID), null, 0);
mEntry.setSbn(mSbn);
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ doStandardBind();
final TextView view = mNotificationInfo.findViewById(R.id.non_configurable_call_text);
assertEquals(View.VISIBLE, view.getVisibility());
assertEquals(mContext.getString(R.string.notification_unblockable_call_desc),
@@ -613,9 +528,6 @@ public class NotificationInfoTest extends SysuiTestCase {
public void testBindNotification_whenCurrentlyInCall_notCall() throws Exception {
when(mMockINotificationManager.isInCall(anyString(), anyInt())).thenReturn(true);
- Person person = new Person.Builder()
- .setName("caller")
- .build();
Notification.Builder nb = new Notification.Builder(
mContext, mNotificationChannel.getId())
.setContentTitle("foo")
@@ -626,23 +538,7 @@ public class NotificationInfoTest extends SysuiTestCase {
mSbn = new StatusBarNotification(TEST_PACKAGE_NAME, TEST_PACKAGE_NAME, 0, null, TEST_UID, 0,
nb.build(), UserHandle.getUserHandleForUid(TEST_UID), null, 0);
mEntry.setSbn(mSbn);
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ doStandardBind();
assertEquals(GONE,
mNotificationInfo.findViewById(R.id.non_configurable_call_text).getVisibility());
assertEquals(VISIBLE,
@@ -654,46 +550,14 @@ public class NotificationInfoTest extends SysuiTestCase {
@Test
public void testBindNotification_automaticIsVisible() throws Exception {
when(mAssistantFeedbackController.isFeedbackEnabled()).thenReturn(true);
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ doStandardBind();
assertEquals(VISIBLE, mNotificationInfo.findViewById(R.id.automatic).getVisibility());
assertEquals(VISIBLE, mNotificationInfo.findViewById(R.id.automatic_summary).getVisibility());
}
@Test
public void testBindNotification_automaticIsGone() throws Exception {
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ doStandardBind();
assertEquals(GONE, mNotificationInfo.findViewById(R.id.automatic).getVisibility());
assertEquals(GONE, mNotificationInfo.findViewById(R.id.automatic_summary).getVisibility());
}
@@ -702,45 +566,13 @@ public class NotificationInfoTest extends SysuiTestCase {
public void testBindNotification_automaticIsSelected() throws Exception {
when(mAssistantFeedbackController.isFeedbackEnabled()).thenReturn(true);
mNotificationChannel.unlockFields(USER_LOCKED_IMPORTANCE);
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ doStandardBind();
assertTrue(mNotificationInfo.findViewById(R.id.automatic).isSelected());
}
@Test
public void testBindNotification_alertIsSelected() throws Exception {
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ doStandardBind();
assertTrue(mNotificationInfo.findViewById(R.id.alert).isSelected());
}
@@ -756,6 +588,7 @@ public class NotificationInfoTest extends SysuiTestCase {
mEntry,
null,
null,
+ null,
mUiEventLogger,
true,
false,
@@ -768,23 +601,7 @@ public class NotificationInfoTest extends SysuiTestCase {
@Test
public void testBindNotification_DoesNotUpdateNotificationChannel() throws Exception {
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ doStandardBind();
mTestableLooper.processAllMessages();
verify(mMockINotificationManager, never()).updateNotificationChannelForPackage(
anyString(), eq(TEST_UID), any());
@@ -792,23 +609,7 @@ public class NotificationInfoTest extends SysuiTestCase {
@Test
public void testBindNotification_LogsOpen() throws Exception {
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ doStandardBind();
assertEquals(1, mUiEventLogger.numLogs());
assertEquals(NotificationControlsEvent.NOTIFICATION_CONTROLS_OPEN.getId(),
mUiEventLogger.eventId(0));
@@ -827,6 +628,7 @@ public class NotificationInfoTest extends SysuiTestCase {
mEntry,
null,
null,
+ null,
mUiEventLogger,
true,
false,
@@ -845,23 +647,7 @@ public class NotificationInfoTest extends SysuiTestCase {
public void testDoesNotUpdateNotificationChannelAfterImportanceChangedSilenced()
throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_DEFAULT);
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ doStandardBind();
mNotificationInfo.findViewById(R.id.silence).performClick();
mTestableLooper.processAllMessages();
@@ -873,23 +659,7 @@ public class NotificationInfoTest extends SysuiTestCase {
public void testDoesNotUpdateNotificationChannelAfterImportanceChangedAutomatic()
throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_DEFAULT);
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ doStandardBind();
mNotificationInfo.findViewById(R.id.automatic).performClick();
mTestableLooper.processAllMessages();
@@ -902,23 +672,7 @@ public class NotificationInfoTest extends SysuiTestCase {
throws Exception {
when(mAssistantFeedbackController.isFeedbackEnabled()).thenReturn(true);
mNotificationChannel.unlockFields(USER_LOCKED_IMPORTANCE);
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ doStandardBind();
mNotificationInfo.handleCloseControls(true, false);
mTestableLooper.processAllMessages();
@@ -930,23 +684,7 @@ public class NotificationInfoTest extends SysuiTestCase {
public void testHandleCloseControls_DoesNotUpdateNotificationChannelIfUnchanged()
throws Exception {
int originalImportance = mNotificationChannel.getImportance();
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ doStandardBind();
mNotificationInfo.handleCloseControls(true, false);
mTestableLooper.processAllMessages();
@@ -966,23 +704,7 @@ public class NotificationInfoTest extends SysuiTestCase {
public void testHandleCloseControls_DoesNotUpdateNotificationChannelIfUnspecified()
throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_UNSPECIFIED);
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ doStandardBind();
mNotificationInfo.handleCloseControls(true, false);
@@ -995,23 +717,7 @@ public class NotificationInfoTest extends SysuiTestCase {
@Test
public void testSilenceCallsUpdateNotificationChannel() throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_DEFAULT);
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ doStandardBind();
mNotificationInfo.findViewById(R.id.silence).performClick();
mNotificationInfo.findViewById(R.id.done).performClick();
@@ -1047,6 +753,7 @@ public class NotificationInfoTest extends SysuiTestCase {
mEntry,
null,
null,
+ null,
mUiEventLogger,
true,
false,
@@ -1075,23 +782,7 @@ public class NotificationInfoTest extends SysuiTestCase {
when(mAssistantFeedbackController.isFeedbackEnabled()).thenReturn(true);
mNotificationChannel.setImportance(IMPORTANCE_DEFAULT);
mNotificationChannel.lockFields(USER_LOCKED_IMPORTANCE);
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ doStandardBind();
mNotificationInfo.findViewById(R.id.automatic).performClick();
mNotificationInfo.findViewById(R.id.done).performClick();
@@ -1108,23 +799,7 @@ public class NotificationInfoTest extends SysuiTestCase {
public void testSilenceCallsUpdateNotificationChannel_channelImportanceUnspecified()
throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_UNSPECIFIED);
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ doStandardBind();
mNotificationInfo.findViewById(R.id.silence).performClick();
mNotificationInfo.findViewById(R.id.done).performClick();
@@ -1155,6 +830,7 @@ public class NotificationInfoTest extends SysuiTestCase {
mEntry,
null,
null,
+ null,
mUiEventLogger,
true,
false,
@@ -1194,6 +870,7 @@ public class NotificationInfoTest extends SysuiTestCase {
mEntry,
null,
null,
+ null,
mUiEventLogger,
true,
false,
@@ -1226,6 +903,7 @@ public class NotificationInfoTest extends SysuiTestCase {
mEntry,
null,
null,
+ null,
mUiEventLogger,
true,
false,
@@ -1255,23 +933,7 @@ public class NotificationInfoTest extends SysuiTestCase {
@Test
public void testAdjustImportanceTemporarilyAllowsReordering() throws Exception {
mNotificationChannel.setImportance(IMPORTANCE_DEFAULT);
- mNotificationInfo.bindNotification(
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- null,
- null,
- mUiEventLogger,
- true,
- false,
- true,
- mAssistantFeedbackController,
- mMetricsLogger,
- null);
+ doStandardBind();
mNotificationInfo.findViewById(R.id.silence).performClick();
mNotificationInfo.findViewById(R.id.done).performClick();
@@ -1295,6 +957,7 @@ public class NotificationInfoTest extends SysuiTestCase {
mEntry,
null,
null,
+ null,
mUiEventLogger,
true,
false,
@@ -1327,6 +990,7 @@ public class NotificationInfoTest extends SysuiTestCase {
mEntry,
null,
null,
+ null,
mUiEventLogger,
true,
false,
@@ -1363,6 +1027,7 @@ public class NotificationInfoTest extends SysuiTestCase {
mEntry,
null,
null,
+ null,
mUiEventLogger,
true,
false,
@@ -1397,6 +1062,7 @@ public class NotificationInfoTest extends SysuiTestCase {
mEntry,
null,
null,
+ null,
mUiEventLogger,
true,
false,
@@ -1431,6 +1097,7 @@ public class NotificationInfoTest extends SysuiTestCase {
mEntry,
null,
null,
+ null,
mUiEventLogger,
true,
false,
@@ -1458,6 +1125,7 @@ public class NotificationInfoTest extends SysuiTestCase {
mEntry,
null,
null,
+ null,
mUiEventLogger,
true,
false,
@@ -1468,4 +1136,54 @@ public class NotificationInfoTest extends SysuiTestCase {
assertFalse(mNotificationInfo.willBeRemoved());
}
+
+
+ @Test
+ @DisableFlags(Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI)
+ public void testBindNotification_HidesFeedbackLink_flagOff() throws Exception {
+ doStandardBind();
+ assertEquals(GONE, mNotificationInfo.findViewById(R.id.feedback).getVisibility());
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI)
+ public void testBindNotification_SetsFeedbackLink_isReservedChannel() throws RemoteException {
+ mEntry.setRanking(new RankingBuilder(mEntry.getRanking())
+ .setSummarization("something").build());
+ final CountDownLatch latch = new CountDownLatch(1);
+ mNotificationInfo.bindNotification(
+ mMockPackageManager,
+ mMockINotificationManager,
+ mOnUserInteractionCallback,
+ mChannelEditorDialogController,
+ TEST_PACKAGE_NAME,
+ mClassifiedNotificationChannel,
+ mEntry,
+ null,
+ null,
+ (View v, Intent intent) -> {
+ latch.countDown();
+ },
+ mUiEventLogger,
+ true,
+ false,
+ false,
+ mAssistantFeedbackController,
+ mMetricsLogger,
+ null);
+
+ final View feedback = mNotificationInfo.findViewById(R.id.feedback);
+ assertEquals(VISIBLE, feedback.getVisibility());
+ feedback.performClick();
+ // Verify that listener was triggered.
+ assertEquals(0, latch.getCount());
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI)
+ public void testBindNotification_hidesFeedbackLink_notReservedChannel() throws Exception {
+ doStandardBind();
+
+ assertEquals(GONE, mNotificationInfo.findViewById(R.id.feedback).getVisibility());
+ }
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImplTest.kt
index 680b1bee72b2..c77b09aac2b9 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImplTest.kt
@@ -203,6 +203,7 @@ class NotificationRowContentBinderImplTest : SysuiTestCase() {
val result =
NotificationRowContentBinderImpl.InflationProgress(
packageContext = mContext,
+ rowImageInflater = RowImageInflater.newInstance(null),
remoteViews = NewRemoteViews(),
contentModel = NotificationContentModel(headsUpStatusBarModel),
promotedContent = null,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/PromotedNotificationInfoTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/PromotedNotificationInfoTest.java
index b33f93d5b523..acdbd6237733 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/PromotedNotificationInfoTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/PromotedNotificationInfoTest.java
@@ -138,6 +138,7 @@ public class PromotedNotificationInfoTest extends SysuiTestCase {
mEntry,
null,
null,
+ null,
mUiEventLogger,
true,
false,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/RowImageInflaterTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/RowImageInflaterTest.kt
new file mode 100644
index 000000000000..86689cb88569
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/RowImageInflaterTest.kt
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.systemui.statusbar.notification.row
+
+import android.graphics.drawable.Icon
+import android.platform.test.annotations.EnableFlags
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.statusbar.notification.promoted.PromotedNotificationUiAod
+import com.android.systemui.statusbar.notification.row.shared.ImageModel
+import com.android.systemui.statusbar.notification.row.shared.ImageModelProvider.ImageSizeClass.SmallSquare
+import com.google.common.truth.Truth.assertThat
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+@EnableFlags(PromotedNotificationUiAod.FLAG_NAME)
+class RowImageInflaterTest : SysuiTestCase() {
+ private lateinit var rowImageInflater: RowImageInflater
+
+ private val resIcon1 = Icon.createWithResource(context, android.R.drawable.ic_info)
+ private val resIcon2 = Icon.createWithResource(context, android.R.drawable.ic_delete)
+ private val badUriIcon = Icon.createWithContentUri("content://com.test/does_not_exist")
+
+ @Before
+ fun setUp() {
+ rowImageInflater = RowImageInflater.newInstance(null)
+ }
+
+ @Test
+ fun getNewImageIndex_returnsNullWhenUnused() {
+ assertThat(rowImageInflater.getNewImageIndex()).isNull()
+ }
+
+ @Test
+ fun getNewImageIndex_returnsEmptyIndexWhenZeroImagesLoaded() {
+ assertThat(getImageModelsForIcons()).isEmpty()
+ val result = rowImageInflater.getNewImageIndex()
+ assertThat(result).isNotNull()
+ assertThat(result?.contentsForTesting).isEmpty()
+ }
+
+ @Test
+ fun getNewImageIndex_returnsSingleImageWhenOneImageLoaded() {
+ assertThat(getImageModelsForIcons(resIcon1)).hasSize(1)
+ val result = rowImageInflater.getNewImageIndex()
+ assertThat(result).isNotNull()
+ assertThat(result?.contentsForTesting).hasSize(1)
+ }
+
+ @Test
+ fun exampleFirstGeneration() {
+ // GIVEN various models are required
+ val providedModels = getImageModelsForIcons(resIcon1, badUriIcon, resIcon1, resIcon2)
+
+ // VERIFY that we get 4 models, and the two with the same value are shared
+ assertThat(providedModels).hasSize(4)
+ assertThat(providedModels[0]).isNotSameInstanceAs(providedModels[1])
+ assertThat(providedModels[0]).isSameInstanceAs(providedModels[2])
+ assertThat(providedModels[0]).isNotSameInstanceAs(providedModels[3])
+
+ // THEN load images
+ rowImageInflater.loadImagesSynchronously(context)
+
+ // VERIFY that the valid drawables are loaded
+ assertThat(providedModels[0].drawable).isNotNull()
+ assertThat(providedModels[1].drawable).isNull()
+ assertThat(providedModels[2].drawable).isNotNull()
+ assertThat(providedModels[3].drawable).isNotNull()
+
+ // VERIFY the returned index has all 3 entries, 2 of which have drawables
+ val indexGen1 = rowImageInflater.getNewImageIndex()
+ assertThat(indexGen1).isNotNull()
+ assertThat(indexGen1?.contentsForTesting).hasSize(3)
+ assertThat(indexGen1?.contentsForTesting?.mapNotNull { it.drawable }).hasSize(2)
+ }
+
+ @Test
+ fun exampleSecondGeneration_whichLoadsNothing() {
+ exampleFirstGeneration()
+
+ // THEN start a new generation of the inflation
+ rowImageInflater = RowImageInflater.newInstance(rowImageInflater.getNewImageIndex())
+
+ getNewImageIndex_returnsEmptyIndexWhenZeroImagesLoaded()
+ }
+
+ @Test
+ fun exampleSecondGeneration_whichLoadsOneImage() {
+ exampleFirstGeneration()
+
+ // THEN start a new generation of the inflation
+ rowImageInflater = RowImageInflater.newInstance(rowImageInflater.getNewImageIndex())
+
+ getNewImageIndex_returnsSingleImageWhenOneImageLoaded()
+ }
+
+ private fun getImageModelsForIcons(vararg icons: Icon): List<ImageModel> {
+ val provider = rowImageInflater.useForContentModel()
+ return icons.map { icon ->
+ requireNotNull(provider.getImageModel(icon, SmallSquare)) { "null model for $icon" }
+ }
+ }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/ActivatableNotificationViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/ActivatableNotificationViewModelTest.kt
index 0dc871a523ee..961616c99cb1 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/ActivatableNotificationViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/ActivatableNotificationViewModelTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.notification.row.ui.viewmodel
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -25,7 +23,6 @@ import com.android.systemui.accessibility.data.repository.FakeAccessibilityRepos
import com.android.systemui.accessibility.domain.interactor.AccessibilityInteractor
import com.android.systemui.coroutines.collectLastValue
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/NotificationViewFlipperViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/NotificationViewFlipperViewModelTest.kt
index f88bd7ec60bb..c42b24deaccf 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/NotificationViewFlipperViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/NotificationViewFlipperViewModelTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.notification.row.ui.viewmodel
import android.platform.test.annotations.EnableFlags
@@ -31,7 +29,6 @@ import com.android.systemui.power.shared.model.WakefulnessState
import com.android.systemui.statusbar.notification.shared.NotificationViewFlipperPausing
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/shelf/domain/interactor/NotificationShelfInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/shelf/domain/interactor/NotificationShelfInteractorTest.kt
index 4c6e25a530a5..8eea2a8e6121 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/shelf/domain/interactor/NotificationShelfInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/shelf/domain/interactor/NotificationShelfInteractorTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.notification.shelf.domain.interactor
import android.os.PowerManager
@@ -34,7 +32,6 @@ import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/DisplaySwitchNotificationsHiderTrackerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/DisplaySwitchNotificationsHiderTrackerTest.kt
index 578950fa88b5..4aaf6fc60ddd 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/DisplaySwitchNotificationsHiderTrackerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/DisplaySwitchNotificationsHiderTrackerTest.kt
@@ -24,7 +24,6 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.TestScope
@@ -38,7 +37,6 @@ import org.mockito.Mockito.never
import org.mockito.Mockito.verify
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class DisplaySwitchNotificationsHiderTrackerTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImplTest.kt
index 8163a68bc76f..d14ff35f824a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImplTest.kt
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.notification.stack
import android.os.testableLooper
import android.testing.TestableLooper.RunWithLooper
+import androidx.dynamicanimation.animation.SpringForce
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
@@ -46,13 +47,14 @@ class MagneticNotificationRowManagerImplTest : SysuiTestCase() {
private val childrenNumber = 5
private val stackScrollLayout = mock<NotificationStackScrollLayout>()
private val sectionsManager = mock<NotificationSectionsManager>()
- private val swipedMultiplier = 0.5f
private val msdlPlayer = kosmos.fakeMSDLPlayer
+ private var canRowBeDismissed = true
private val underTest = kosmos.magneticNotificationRowManagerImpl
private lateinit var notificationTestHelper: NotificationTestHelper
private lateinit var children: NotificationChildrenContainer
+ private lateinit var swipedRow: ExpandableNotificationRow
@Before
fun setUp() {
@@ -60,14 +62,15 @@ class MagneticNotificationRowManagerImplTest : SysuiTestCase() {
notificationTestHelper =
NotificationTestHelper(mContext, mDependency, kosmos.testableLooper, featureFlags)
children = notificationTestHelper.createGroup(childrenNumber).childrenContainer
+ swipedRow = children.attachedChildren[childrenNumber / 2]
+ configureMagneticRowListener(swipedRow)
}
@Test
fun setMagneticAndRoundableTargets_onIdle_targetsGetSet() =
kosmos.testScope.runTest {
// WHEN the targets are set for a row
- val row = children.attachedChildren[childrenNumber / 2]
- setTargetsForRow(row)
+ setTargets()
// THEN the magnetic and roundable targets are defined and the state is TARGETS_SET
assertThat(underTest.currentState).isEqualTo(State.TARGETS_SET)
@@ -79,22 +82,34 @@ class MagneticNotificationRowManagerImplTest : SysuiTestCase() {
fun setMagneticRowTranslation_whenTargetsAreSet_startsPulling() =
kosmos.testScope.runTest {
// GIVEN targets are set
- val row = children.attachedChildren[childrenNumber / 2]
- setTargetsForRow(row)
+ setTargets()
// WHEN setting a translation for the swiped row
- underTest.setMagneticRowTranslation(row, translation = 100f)
+ underTest.setMagneticRowTranslation(swipedRow, translation = 100f)
// THEN the state moves to PULLING
assertThat(underTest.currentState).isEqualTo(State.PULLING)
}
@Test
+ fun setMagneticRowTranslation_whenIdle_doesNotSetMagneticTranslation() =
+ kosmos.testScope.runTest {
+ // GIVEN an IDLE state
+ // WHEN setting a translation for the swiped row
+ val row = children.attachedChildren[childrenNumber / 2]
+ underTest.setMagneticRowTranslation(row, translation = 100f)
+
+ // THEN no magnetic translations are set
+ val canSetMagneticTranslation =
+ underTest.setMagneticRowTranslation(row, translation = 100f)
+ assertThat(canSetMagneticTranslation).isFalse()
+ }
+
+ @Test
fun setMagneticRowTranslation_whenRowIsNotSwiped_doesNotSetMagneticTranslation() =
kosmos.testScope.runTest {
// GIVEN that targets are set
- val row = children.attachedChildren[childrenNumber / 2]
- setTargetsForRow(row)
+ setTargets()
// WHEN setting a translation for a row that is not being swiped
val differentRow = children.attachedChildren[childrenNumber / 2 - 1]
@@ -106,41 +121,61 @@ class MagneticNotificationRowManagerImplTest : SysuiTestCase() {
}
@Test
- fun setMagneticRowTranslation_belowThreshold_whilePulling_setsMagneticTranslations() =
+ fun setMagneticRowTranslation_whenDismissible_belowThreshold_whenPulling_setsTranslations() =
kosmos.testScope.runTest {
// GIVEN a threshold of 100 px
val threshold = 100f
underTest.setSwipeThresholdPx(threshold)
// GIVEN that targets are set and the rows are being pulled
- val row = children.attachedChildren[childrenNumber / 2]
- setTargetsForRow(row)
- underTest.setMagneticRowTranslation(row, translation = 100f)
+ setTargets()
+ underTest.setMagneticRowTranslation(swipedRow, translation = 100f)
// WHEN setting a translation that will fall below the threshold
- val translation = threshold / swipedMultiplier - 50f
- underTest.setMagneticRowTranslation(row, translation)
+ val translation = threshold / underTest.swipedRowMultiplier - 50f
+ underTest.setMagneticRowTranslation(swipedRow, translation)
// THEN the targets continue to be pulled and translations are set
assertThat(underTest.currentState).isEqualTo(State.PULLING)
- assertThat(row.translation).isEqualTo(swipedMultiplier * translation)
+ assertThat(swipedRow.translation).isEqualTo(underTest.swipedRowMultiplier * translation)
}
@Test
- fun setMagneticRowTranslation_aboveThreshold_whilePulling_detachesMagneticTargets() =
+ fun setMagneticRowTranslation_whenNotDismissible_belowThreshold_whenPulling_setsTranslations() =
kosmos.testScope.runTest {
// GIVEN a threshold of 100 px
val threshold = 100f
underTest.setSwipeThresholdPx(threshold)
// GIVEN that targets are set and the rows are being pulled
- val row = children.attachedChildren[childrenNumber / 2]
- setTargetsForRow(row)
- underTest.setMagneticRowTranslation(row, translation = 100f)
+ canRowBeDismissed = false
+ setTargets()
+ underTest.setMagneticRowTranslation(swipedRow, translation = 100f)
+
+ // WHEN setting a translation that will fall below the threshold
+ val translation = threshold / underTest.swipedRowMultiplier - 50f
+ underTest.setMagneticRowTranslation(swipedRow, translation)
+
+ // THEN the targets continue to be pulled and reduced translations are set
+ val expectedTranslation = getReducedTranslation(translation)
+ assertThat(underTest.currentState).isEqualTo(State.PULLING)
+ assertThat(swipedRow.translation).isEqualTo(expectedTranslation)
+ }
+
+ @Test
+ fun setMagneticRowTranslation_whenDismissible_aboveThreshold_whilePulling_detaches() =
+ kosmos.testScope.runTest {
+ // GIVEN a threshold of 100 px
+ val threshold = 100f
+ underTest.setSwipeThresholdPx(threshold)
+
+ // GIVEN that targets are set and the rows are being pulled
+ setTargets()
+ underTest.setMagneticRowTranslation(swipedRow, translation = 100f)
// WHEN setting a translation that will fall above the threshold
- val translation = threshold / swipedMultiplier + 50f
- underTest.setMagneticRowTranslation(row, translation)
+ val translation = threshold / underTest.swipedRowMultiplier + 50f
+ underTest.setMagneticRowTranslation(swipedRow, translation)
// THEN the swiped view detaches and the correct detach haptics play
assertThat(underTest.currentState).isEqualTo(State.DETACHED)
@@ -148,15 +183,36 @@ class MagneticNotificationRowManagerImplTest : SysuiTestCase() {
}
@Test
+ fun setMagneticRowTranslation_whenNotDismissible_aboveThreshold_whilePulling_doesNotDetach() =
+ kosmos.testScope.runTest {
+ // GIVEN a threshold of 100 px
+ val threshold = 100f
+ underTest.setSwipeThresholdPx(threshold)
+
+ // GIVEN that targets are set and the rows are being pulled
+ canRowBeDismissed = false
+ setTargets()
+ underTest.setMagneticRowTranslation(swipedRow, translation = 100f)
+
+ // WHEN setting a translation that will fall above the threshold
+ val translation = threshold / underTest.swipedRowMultiplier + 50f
+ underTest.setMagneticRowTranslation(swipedRow, translation)
+
+ // THEN the swiped view does not detach and the reduced translation is set
+ val expectedTranslation = getReducedTranslation(translation)
+ assertThat(underTest.currentState).isEqualTo(State.PULLING)
+ assertThat(swipedRow.translation).isEqualTo(expectedTranslation)
+ }
+
+ @Test
fun setMagneticRowTranslation_whileDetached_setsTranslationAndStaysDetached() =
kosmos.testScope.runTest {
// GIVEN that the swiped view has been detached
- val row = children.attachedChildren[childrenNumber / 2]
- setDetachedState(row)
+ setDetachedState()
// WHEN setting a new translation
val translation = 300f
- underTest.setMagneticRowTranslation(row, translation)
+ underTest.setMagneticRowTranslation(swipedRow, translation)
// THEN the swiped view continues to be detached
assertThat(underTest.currentState).isEqualTo(State.DETACHED)
@@ -166,14 +222,13 @@ class MagneticNotificationRowManagerImplTest : SysuiTestCase() {
fun onMagneticInteractionEnd_whilePulling_goesToIdle() =
kosmos.testScope.runTest {
// GIVEN targets are set
- val row = children.attachedChildren[childrenNumber / 2]
- setTargetsForRow(row)
+ setTargets()
// WHEN setting a translation for the swiped row
- underTest.setMagneticRowTranslation(row, translation = 100f)
+ underTest.setMagneticRowTranslation(swipedRow, translation = 100f)
// WHEN the interaction ends on the row
- underTest.onMagneticInteractionEnd(row, velocity = null)
+ underTest.onMagneticInteractionEnd(swipedRow, velocity = null)
// THEN the state resets
assertThat(underTest.currentState).isEqualTo(State.IDLE)
@@ -183,32 +238,56 @@ class MagneticNotificationRowManagerImplTest : SysuiTestCase() {
fun onMagneticInteractionEnd_whileDetached_goesToIdle() =
kosmos.testScope.runTest {
// GIVEN the swiped row is detached
- val row = children.attachedChildren[childrenNumber / 2]
- setDetachedState(row)
+ setDetachedState()
// WHEN the interaction ends on the row
- underTest.onMagneticInteractionEnd(row, velocity = null)
+ underTest.onMagneticInteractionEnd(swipedRow, velocity = null)
// THEN the state resets
assertThat(underTest.currentState).isEqualTo(State.IDLE)
}
- private fun setDetachedState(row: ExpandableNotificationRow) {
+ private fun setDetachedState() {
val threshold = 100f
underTest.setSwipeThresholdPx(threshold)
// Set the pulling state
- setTargetsForRow(row)
- underTest.setMagneticRowTranslation(row, translation = 100f)
+ setTargets()
+ underTest.setMagneticRowTranslation(swipedRow, translation = 100f)
// Set a translation that will fall above the threshold
- val translation = threshold / swipedMultiplier + 50f
- underTest.setMagneticRowTranslation(row, translation)
+ val translation = threshold / underTest.swipedRowMultiplier + 50f
+ underTest.setMagneticRowTranslation(swipedRow, translation)
assertThat(underTest.currentState).isEqualTo(State.DETACHED)
}
- private fun setTargetsForRow(row: ExpandableNotificationRow) {
- underTest.setMagneticAndRoundableTargets(row, stackScrollLayout, sectionsManager)
+ private fun setTargets() {
+ underTest.setMagneticAndRoundableTargets(swipedRow, stackScrollLayout, sectionsManager)
+ }
+
+ private fun getReducedTranslation(originalTranslation: Float) =
+ underTest.swipedRowMultiplier *
+ originalTranslation *
+ MagneticNotificationRowManagerImpl.MAGNETIC_REDUCTION
+
+ private fun configureMagneticRowListener(row: ExpandableNotificationRow) {
+ val listener =
+ object : MagneticRowListener {
+ override fun setMagneticTranslation(translation: Float) {
+ row.translation = translation
+ }
+
+ override fun triggerMagneticForce(
+ endTranslation: Float,
+ springForce: SpringForce,
+ startVelocity: Float,
+ ) {}
+
+ override fun cancelMagneticAnimations() {}
+
+ override fun canRowBeDismissed(): Boolean = canRowBeDismissed
+ }
+ row.magneticRowListener = listener
}
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt
index 39cff63f363e..01ba4df3a314 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt
@@ -30,7 +30,6 @@ import com.android.systemui.statusbar.notification.row.ExpandableView
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager
import com.google.common.truth.Expect
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import org.junit.Assume
import org.junit.Before
import org.junit.Rule
@@ -58,7 +57,6 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
private val notificationRow = mock<ExpandableNotificationRow>()
private val notificationEntry = mock<NotificationEntry>()
private val dumpManager = mock<DumpManager>()
- @OptIn(ExperimentalCoroutinesApi::class)
private val mStatusBarKeyguardViewManager = mock<StatusBarKeyguardViewManager>()
private val notificationShelf = mock<NotificationShelf>()
private val emptyShadeView =
@@ -66,7 +64,6 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
layout(/* l= */ 0, /* t= */ 0, /* r= */ 100, /* b= */ 100)
}
private val footerView = FooterView(context, /* attrs= */ null)
- @OptIn(ExperimentalCoroutinesApi::class)
private val ambientState =
AmbientState(
context,
@@ -499,7 +496,6 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
assertThat(notificationRow.viewState.alpha).isEqualTo(1f)
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun resetViewStates_expansionChanging_notificationBecomesTransparent() {
whenever(mStatusBarKeyguardViewManager.isPrimaryBouncerInTransit).thenReturn(false)
@@ -509,7 +505,6 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
)
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun resetViewStates_expansionChangingWhileBouncerInTransit_viewBecomesTransparent() {
whenever(mStatusBarKeyguardViewManager.isPrimaryBouncerInTransit).thenReturn(true)
@@ -519,7 +514,6 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
)
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun resetViewStates_expansionChanging_notificationAlphaUpdated() {
whenever(mStatusBarKeyguardViewManager.isPrimaryBouncerInTransit).thenReturn(false)
@@ -529,7 +523,6 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
)
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun resetViewStates_largeScreen_expansionChanging_alphaUpdated_largeScreenValue() {
val expansionFraction = 0.6f
@@ -545,7 +538,6 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() {
)
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun expansionChanging_largeScreen_bouncerInTransit_alphaUpdated_bouncerValues() {
ambientState.isSmallScreen = false
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorTest.kt
index d665b3166986..5db9bca6ae29 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorTest.kt
@@ -39,7 +39,6 @@ import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
import java.time.Duration
import java.util.Optional
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceTimeBy
@@ -50,7 +49,6 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
open class HideNotificationsInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationStackInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationStackInteractorTest.kt
index 1c6bda985a0e..d52f5deb3b5c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationStackInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationStackInteractorTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.notification.stack.domain.interactor
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -29,7 +27,6 @@ import com.android.systemui.power.data.repository.fakePowerRepository
import com.android.systemui.power.shared.model.WakefulnessState
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/SharedNotificationContainerInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/SharedNotificationContainerInteractorTest.kt
index 4176d1c1f6fd..21ebe7f9db61 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/SharedNotificationContainerInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/SharedNotificationContainerInteractorTest.kt
@@ -15,8 +15,6 @@
*
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.notification.stack.domain.interactor
import android.platform.test.flag.junit.FlagsParameterization
@@ -32,7 +30,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.res.R
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/view/NotificationStatsLoggerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/view/NotificationStatsLoggerTest.kt
index 13280f2caec7..80e9e36862dd 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/view/NotificationStatsLoggerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/view/NotificationStatsLoggerTest.kt
@@ -32,7 +32,6 @@ import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.eq
import com.google.common.truth.Truth.assertThat
import java.util.concurrent.Callable
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
@@ -42,7 +41,6 @@ import org.mockito.Mockito.spy
import org.mockito.Mockito.verify
import org.mockito.Mockito.verifyNoMoreInteractions
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class NotificationStatsLoggerTest : SysuiTestCase() {
@@ -172,6 +170,41 @@ class NotificationStatsLoggerTest : SysuiTestCase() {
}
@Test
+ fun onNotificationVisibilityChanged_thenShadeNotInteractive_noDuplicateLogs() =
+ testScope.runTest {
+ // GIVEN a visible Notifications is reported
+ val (ranks, locations) = fakeNotificationMaps("key0")
+ val callable = Callable { locations }
+ underTest.onNotificationLocationsChanged(callable, ranks)
+ runCurrent()
+ clearInvocations(mockStatusBarService, mockNotificationListenerService)
+
+ // WHEN the same Notification becomins invisible
+ val emptyCallable = Callable { emptyMap<String, Int>() }
+ underTest.onNotificationLocationsChanged(emptyCallable, ranks)
+ // AND notifications become non interactible
+ underTest.onLockscreenOrShadeNotInteractive(emptyList())
+ runCurrent()
+
+ // THEN visibility changes are reported
+ verify(mockStatusBarService)
+ .onNotificationVisibilityChanged(eq(emptyArray()), visibilityArrayCaptor.capture())
+ val noLongerVisible = visibilityArrayCaptor.value
+ assertThat(noLongerVisible).hasLength(1)
+ assertThat(noLongerVisible[0]).apply {
+ isKeyEqualTo("key0")
+ isRankEqualTo(0)
+ notVisible()
+ isInMainArea()
+ isCountEqualTo(1)
+ }
+
+ // AND nothing else is logged
+ verifyNoMoreInteractions(mockStatusBarService)
+ verifyNoMoreInteractions(mockNotificationListenerService)
+ }
+
+ @Test
fun onNotificationListUpdated_itemsChangedPositions_nothingLogged() =
testScope.runTest {
// GIVEN some visible Notifications are reported
@@ -255,14 +288,14 @@ class NotificationStatsLoggerTest : SysuiTestCase() {
activeNotificationModel(
key = "key0",
uid = 0,
- packageName = "com.android.first"
+ packageName = "com.android.first",
),
activeNotificationModel(
key = "key1",
uid = 1,
- packageName = "com.android.second"
+ packageName = "com.android.second",
),
- )
+ ),
)
runCurrent()
@@ -288,7 +321,7 @@ class NotificationStatsLoggerTest : SysuiTestCase() {
key = "key",
isExpanded = true,
location = ExpandableViewState.LOCATION_MAIN_AREA,
- isUserAction = true
+ isUserAction = true,
)
runCurrent()
@@ -298,7 +331,7 @@ class NotificationStatsLoggerTest : SysuiTestCase() {
/* key = */ "key",
/* userAction = */ true,
/* expanded = */ true,
- NotificationVisibility.NotificationLocation.LOCATION_MAIN_AREA.ordinal
+ NotificationVisibility.NotificationLocation.LOCATION_MAIN_AREA.ordinal,
)
}
@@ -310,7 +343,7 @@ class NotificationStatsLoggerTest : SysuiTestCase() {
key = "key",
isExpanded = true,
location = ExpandableViewState.LOCATION_MAIN_AREA,
- isUserAction = true
+ isUserAction = true,
)
runCurrent()
clearInvocations(mockStatusBarService)
@@ -320,7 +353,7 @@ class NotificationStatsLoggerTest : SysuiTestCase() {
key = "key",
isExpanded = true,
location = ExpandableViewState.LOCATION_MAIN_AREA,
- isUserAction = true
+ isUserAction = true,
)
runCurrent()
@@ -336,7 +369,7 @@ class NotificationStatsLoggerTest : SysuiTestCase() {
key = "key",
isExpanded = true,
location = ExpandableViewState.LOCATION_BOTTOM_STACK_HIDDEN,
- isUserAction = true
+ isUserAction = true,
)
runCurrent()
@@ -352,7 +385,7 @@ class NotificationStatsLoggerTest : SysuiTestCase() {
key = "key",
isExpanded = true,
location = ExpandableViewState.LOCATION_GONE,
- isUserAction = false
+ isUserAction = false,
)
runCurrent()
@@ -368,7 +401,7 @@ class NotificationStatsLoggerTest : SysuiTestCase() {
/* key = */ "key",
/* userAction = */ false,
/* expanded = */ true,
- NotificationVisibility.NotificationLocation.LOCATION_MAIN_AREA.ordinal
+ NotificationVisibility.NotificationLocation.LOCATION_MAIN_AREA.ordinal,
)
}
@@ -380,7 +413,7 @@ class NotificationStatsLoggerTest : SysuiTestCase() {
key = "key",
isExpanded = true,
location = ExpandableViewState.LOCATION_GONE,
- isUserAction = false
+ isUserAction = false,
)
runCurrent()
// AND we open the shade, so we log its events
@@ -406,7 +439,7 @@ class NotificationStatsLoggerTest : SysuiTestCase() {
/* key = */ "key",
/* userAction = */ false,
/* expanded = */ true,
- NotificationVisibility.NotificationLocation.LOCATION_MAIN_AREA.ordinal
+ NotificationVisibility.NotificationLocation.LOCATION_MAIN_AREA.ordinal,
)
}
@@ -418,7 +451,7 @@ class NotificationStatsLoggerTest : SysuiTestCase() {
key = "key",
isExpanded = false,
location = ExpandableViewState.LOCATION_MAIN_AREA,
- isUserAction = false
+ isUserAction = false,
)
runCurrent()
@@ -435,7 +468,7 @@ class NotificationStatsLoggerTest : SysuiTestCase() {
key = "key",
isExpanded = true,
location = ExpandableViewState.LOCATION_MAIN_AREA,
- isUserAction = true
+ isUserAction = true,
)
runCurrent()
@@ -445,7 +478,7 @@ class NotificationStatsLoggerTest : SysuiTestCase() {
/* key = */ "key",
/* userAction = */ true,
/* expanded = */ true,
- NotificationVisibility.NotificationLocation.LOCATION_MAIN_AREA.ordinal
+ NotificationVisibility.NotificationLocation.LOCATION_MAIN_AREA.ordinal,
)
// AND the Notification is expanded again
@@ -453,7 +486,7 @@ class NotificationStatsLoggerTest : SysuiTestCase() {
key = "key",
isExpanded = false,
location = ExpandableViewState.LOCATION_MAIN_AREA,
- isUserAction = true
+ isUserAction = true,
)
runCurrent()
@@ -463,7 +496,7 @@ class NotificationStatsLoggerTest : SysuiTestCase() {
/* key = */ "key",
/* userAction = */ true,
/* expanded = */ false,
- NotificationVisibility.NotificationLocation.LOCATION_MAIN_AREA.ordinal
+ NotificationVisibility.NotificationLocation.LOCATION_MAIN_AREA.ordinal,
)
}
@@ -475,14 +508,14 @@ class NotificationStatsLoggerTest : SysuiTestCase() {
key = "key1",
isExpanded = true,
location = ExpandableViewState.LOCATION_MAIN_AREA,
- isUserAction = true
+ isUserAction = true,
)
runCurrent()
underTest.onNotificationExpansionChanged(
key = "key2",
isExpanded = true,
location = ExpandableViewState.LOCATION_MAIN_AREA,
- isUserAction = true
+ isUserAction = true,
)
runCurrent()
clearInvocations(mockStatusBarService)
@@ -502,14 +535,14 @@ class NotificationStatsLoggerTest : SysuiTestCase() {
key = "key1",
isExpanded = true,
location = ExpandableViewState.LOCATION_MAIN_AREA,
- isUserAction = true
+ isUserAction = true,
)
runCurrent()
underTest.onNotificationExpansionChanged(
key = "key2",
isExpanded = true,
location = ExpandableViewState.LOCATION_MAIN_AREA,
- isUserAction = true
+ isUserAction = true,
)
runCurrent()
clearInvocations(mockStatusBarService)
@@ -537,10 +570,15 @@ class NotificationStatsLoggerTest : SysuiTestCase() {
private class NotificationVisibilitySubject(private val visibility: NotificationVisibility) {
fun isKeyEqualTo(key: String) = assertThat(visibility.key).isEqualTo(key)
+
fun isRankEqualTo(rank: Int) = assertThat(visibility.rank).isEqualTo(rank)
+
fun isCountEqualTo(count: Int) = assertThat(visibility.count).isEqualTo(count)
+
fun isVisible() = assertThat(this.visibility.visible).isTrue()
+
fun notVisible() = assertThat(this.visibility.visible).isFalse()
+
fun isInMainArea() =
assertThat(this.visibility.location)
.isEqualTo(NotificationVisibility.NotificationLocation.LOCATION_MAIN_AREA)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelTest.kt
index 1b4f9a79557d..911b1b5b04ba 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.notification.stack.ui.viewmodel
import android.platform.test.flag.junit.FlagsParameterization
@@ -48,7 +46,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.ui.isAnimating
import com.android.systemui.util.ui.value
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt
index 786b3590facb..21297e3e64b7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt
@@ -15,8 +15,6 @@
*
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.notification.stack.ui.viewmodel
import android.platform.test.flag.junit.FlagsParameterization
@@ -74,7 +72,6 @@ import com.android.systemui.window.ui.viewmodel.fakeBouncerTransitions
import com.google.common.collect.Range
import com.google.common.truth.Truth.assertThat
import kotlin.test.assertIs
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.TestScope
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ActivityStarterImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ActivityStarterImplTest.kt
index b0b80a9419e2..52c41a07198d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ActivityStarterImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ActivityStarterImplTest.kt
@@ -25,11 +25,14 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.ActivityTransitionAnimator
import com.android.systemui.flags.EnableSceneContainer
+import com.android.systemui.kosmos.testScope
import com.android.systemui.shared.Flags as SharedFlags
import com.android.systemui.statusbar.SysuiStatusBarStateController
+import com.android.systemui.testKosmos
import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -48,6 +51,7 @@ class ActivityStarterImplTest : SysuiTestCase() {
@Mock private lateinit var activityStarterInternal: ActivityStarterInternalImpl
@Mock private lateinit var statusBarStateController: SysuiStatusBarStateController
private lateinit var underTest: ActivityStarterImpl
+ private val kosmos = testKosmos()
private val mainExecutor = FakeExecutor(FakeSystemClock())
@Before
@@ -69,12 +73,18 @@ class ActivityStarterImplTest : SysuiTestCase() {
@EnableSceneContainer
@Test
fun registerTransition_forwardsTheRequest() {
- val cookie = mock(ActivityTransitionAnimator.TransitionCookie::class.java)
- val controllerFactory = mock(ActivityTransitionAnimator.ControllerFactory::class.java)
-
- underTest.registerTransition(cookie, controllerFactory)
-
- verify(activityStarterInternal).registerTransition(eq(cookie), eq(controllerFactory))
+ with(kosmos) {
+ testScope.runTest {
+ val cookie = mock(ActivityTransitionAnimator.TransitionCookie::class.java)
+ val controllerFactory =
+ mock(ActivityTransitionAnimator.ControllerFactory::class.java)
+
+ underTest.registerTransition(cookie, controllerFactory, testScope)
+
+ verify(activityStarterInternal)
+ .registerTransition(eq(cookie), eq(controllerFactory), eq(testScope))
+ }
+ }
}
@DisableFlags(
@@ -83,12 +93,17 @@ class ActivityStarterImplTest : SysuiTestCase() {
)
@Test
fun registerTransition_doesNotForwardTheRequest_whenFlaggedOff() {
- val cookie = mock(ActivityTransitionAnimator.TransitionCookie::class.java)
- val controllerFactory = mock(ActivityTransitionAnimator.ControllerFactory::class.java)
+ with(kosmos) {
+ testScope.runTest {
+ val cookie = mock(ActivityTransitionAnimator.TransitionCookie::class.java)
+ val controllerFactory =
+ mock(ActivityTransitionAnimator.ControllerFactory::class.java)
- underTest.registerTransition(cookie, controllerFactory)
+ underTest.registerTransition(cookie, controllerFactory, testScope)
- verify(activityStarterInternal, never()).registerTransition(any(), any())
+ verify(activityStarterInternal, never()).registerTransition(any(), any(), any())
+ }
+ }
}
@EnableFlags(
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacksTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacksTest.java
index f318c74e0584..7bc2bca3df02 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacksTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacksTest.java
@@ -43,6 +43,8 @@ import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.assist.AssistManager;
import com.android.systemui.emergency.EmergencyGestureModule.EmergencyGestureIntentFactory;
+import com.android.systemui.flags.DisableSceneContainer;
+import com.android.systemui.flags.EnableSceneContainer;
import com.android.systemui.keyguard.WakefulnessLifecycle;
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor;
import com.android.systemui.plugins.ActivityStarter;
@@ -55,10 +57,8 @@ import com.android.systemui.shade.CameraLauncher;
import com.android.systemui.shade.QuickSettingsController;
import com.android.systemui.shade.ShadeController;
import com.android.systemui.shade.ShadeHeaderController;
-import com.android.systemui.shade.ShadeViewController;
import com.android.systemui.shade.domain.interactor.PanelExpansionInteractor;
import com.android.systemui.shade.domain.interactor.ShadeInteractor;
-import com.android.systemui.shade.shared.flag.DualShade;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.notification.headsup.HeadsUpManager;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
@@ -67,6 +67,8 @@ import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
import com.android.systemui.wallet.controller.QuickAccessWalletController;
+import dagger.Lazy;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -76,8 +78,6 @@ import org.mockito.stubbing.Answer;
import java.util.Optional;
-import dagger.Lazy;
-
@SmallTest
@RunWith(AndroidJUnit4.class)
public class CentralSurfacesCommandQueueCallbacksTest extends SysuiTestCase {
@@ -87,7 +87,6 @@ public class CentralSurfacesCommandQueueCallbacksTest extends SysuiTestCase {
@Mock private ShadeController mShadeController;
@Mock private CommandQueue mCommandQueue;
@Mock private QuickSettingsController mQuickSettingsController;
- @Mock private ShadeViewController mShadeViewController;
@Mock private PanelExpansionInteractor mPanelExpansionInteractor;
@Mock private Lazy<ShadeInteractor> mShadeInteractorLazy;
@Mock private ShadeHeaderController mShadeHeaderController;
@@ -242,7 +241,8 @@ public class CentralSurfacesCommandQueueCallbacksTest extends SysuiTestCase {
}
@Test
- @DisableFlags(value = {QSComposeFragment.FLAG_NAME, DualShade.FLAG_NAME})
+ @DisableSceneContainer
+ @DisableFlags(QSComposeFragment.FLAG_NAME)
public void clickQsTile_flagsDisabled_callsQSPanelController() {
ComponentName c = new ComponentName("testpkg", "testcls");
@@ -251,7 +251,7 @@ public class CentralSurfacesCommandQueueCallbacksTest extends SysuiTestCase {
}
@Test
- @DisableFlags(DualShade.FLAG_NAME)
+ @DisableSceneContainer
@EnableFlags(QSComposeFragment.FLAG_NAME)
public void clickQsTile_onlyQSComposeFlag_callsQSHost() {
ComponentName c = new ComponentName("testpkg", "testcls");
@@ -262,9 +262,9 @@ public class CentralSurfacesCommandQueueCallbacksTest extends SysuiTestCase {
}
@Test
- @EnableFlags(DualShade.FLAG_NAME)
+ @EnableSceneContainer
@DisableFlags(QSComposeFragment.FLAG_NAME)
- public void clickQsTile_onlyDualShadeFlag_callsQSHost() {
+ public void clickQsTile_onlySceneContainerFlag_callsQSHost() {
ComponentName c = new ComponentName("testpkg", "testcls");
mSbcqCallbacks.clickTile(c);
@@ -273,8 +273,9 @@ public class CentralSurfacesCommandQueueCallbacksTest extends SysuiTestCase {
}
@Test
- @EnableFlags(value = {QSComposeFragment.FLAG_NAME, DualShade.FLAG_NAME})
- public void clickQsTile_qsComposeAndDualShadeFlags_callsQSHost() {
+ @EnableSceneContainer
+ @EnableFlags(QSComposeFragment.FLAG_NAME)
+ public void clickQsTile_qsComposeAndSceneContainerFlags_callsQSHost() {
ComponentName c = new ComponentName("testpkg", "testcls");
mSbcqCallbacks.clickTile(c);
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/DozeServiceHostCoroutinesTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/DozeServiceHostCoroutinesTest.kt
index 7bc6948edf31..52eda1c6fc77 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/DozeServiceHostCoroutinesTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/DozeServiceHostCoroutinesTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.phone
import android.testing.TestableLooper.RunWithLooper
@@ -32,7 +30,6 @@ import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardBypassControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardBypassControllerTest.kt
index cb40f72ff1af..d9577707531d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardBypassControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardBypassControllerTest.kt
@@ -42,7 +42,6 @@ import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.testKosmos
import com.android.systemui.tuner.TunerService
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.After
@@ -303,7 +302,6 @@ class KeyguardBypassControllerTest(flags: FlagsParameterization) : SysuiTestCase
assertThat(keyguardBypassController.bypassEnabled).isFalse()
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun qsExpansion_updates() {
testScope.runTest {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImplTest.kt
index 5406acf694ff..dffb64b4ab71 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImplTest.kt
@@ -42,6 +42,7 @@ import com.android.systemui.communal.domain.interactor.CommunalSettingsInteracto
import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
import com.android.systemui.keyguard.KeyguardViewMediator
import com.android.systemui.keyguard.WakefulnessLifecycle
+import com.android.systemui.kosmos.testScope
import com.android.systemui.plugins.ActivityStarter.OnDismissAction
import com.android.systemui.settings.UserTracker
import com.android.systemui.shade.ShadeController
@@ -58,12 +59,13 @@ import com.android.systemui.statusbar.policy.DeviceProvisionedController
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.statusbar.window.StatusBarWindowController
import com.android.systemui.statusbar.window.StatusBarWindowControllerStore
+import com.android.systemui.testKosmos
import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import java.util.Optional
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.test.runTest
import org.junit.Assert.assertThrows
import org.junit.Before
import org.junit.Test
@@ -82,7 +84,6 @@ import org.mockito.kotlin.never
import org.mockito.kotlin.times
import org.mockito.kotlin.verify
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class LegacyActivityStarterInternalImplTest : SysuiTestCase() {
@@ -109,6 +110,7 @@ class LegacyActivityStarterInternalImplTest : SysuiTestCase() {
@Mock private lateinit var communalSceneInteractor: CommunalSceneInteractor
@Mock private lateinit var communalSettingsInteractor: CommunalSettingsInteractor
private lateinit var underTest: LegacyActivityStarterInternalImpl
+ private val kosmos = testKosmos()
private val mainExecutor = FakeExecutor(FakeSystemClock())
private val shadeAnimationInteractor =
ShadeAnimationInteractorLegacyImpl(ShadeAnimationRepository(), FakeShadeRepository())
@@ -157,13 +159,18 @@ class LegacyActivityStarterInternalImplTest : SysuiTestCase() {
)
@Test
fun registerTransition_registers() {
- val cookie = mock(ActivityTransitionAnimator.TransitionCookie::class.java)
- val controllerFactory = mock(ActivityTransitionAnimator.ControllerFactory::class.java)
- `when`(controllerFactory.cookie).thenReturn(cookie)
+ with(kosmos) {
+ testScope.runTest {
+ val cookie = mock(ActivityTransitionAnimator.TransitionCookie::class.java)
+ val controllerFactory =
+ mock(ActivityTransitionAnimator.ControllerFactory::class.java)
+ `when`(controllerFactory.cookie).thenReturn(cookie)
- underTest.registerTransition(cookie, controllerFactory)
+ underTest.registerTransition(cookie, controllerFactory, testScope)
- verify(activityTransitionAnimator).register(eq(cookie), any())
+ verify(activityTransitionAnimator).register(eq(cookie), any(), eq(testScope))
+ }
+ }
}
@DisableFlags(
@@ -172,14 +179,19 @@ class LegacyActivityStarterInternalImplTest : SysuiTestCase() {
)
@Test
fun registerTransition_throws_whenFlagsAreDisabled() {
- val cookie = mock(ActivityTransitionAnimator.TransitionCookie::class.java)
- val controllerFactory = mock(ActivityTransitionAnimator.ControllerFactory::class.java)
+ with(kosmos) {
+ testScope.runTest {
+ val cookie = mock(ActivityTransitionAnimator.TransitionCookie::class.java)
+ val controllerFactory =
+ mock(ActivityTransitionAnimator.ControllerFactory::class.java)
- assertThrows(IllegalStateException::class.java) {
- underTest.registerTransition(cookie, controllerFactory)
- }
+ assertThrows(IllegalStateException::class.java) {
+ underTest.registerTransition(cookie, controllerFactory, testScope)
+ }
- verify(activityTransitionAnimator, never()).register(any(), any())
+ verify(activityTransitionAnimator, never()).register(any(), any(), any())
+ }
+ }
}
@EnableFlags(
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicyTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicyTest.kt
index 4313aea44326..4e414713abda 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicyTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicyTest.kt
@@ -67,7 +67,6 @@ import com.android.systemui.util.kotlin.JavaAdapter
import com.android.systemui.util.mockito.capture
import com.android.systemui.util.time.DateFormatUtil
import com.android.systemui.util.time.FakeSystemClock
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.runCurrent
@@ -93,7 +92,6 @@ import org.mockito.kotlin.reset
@RunWith(AndroidJUnit4::class)
@RunWithLooper
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
class PhoneStatusBarPolicyTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ShadeTouchableRegionManagerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ShadeTouchableRegionManagerTest.kt
index d82cb86406ec..b8b084c94252 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ShadeTouchableRegionManagerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ShadeTouchableRegionManagerTest.kt
@@ -31,7 +31,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.kotlin.getValue
import com.google.common.truth.Truth.assertThat
import dagger.Lazy
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -40,7 +39,6 @@ import org.junit.runner.RunWith
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class ShadeTouchableRegionManagerTest : SysuiTestCase() {
private val kosmos = testKosmos()
private val testScope = kosmos.testScope
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/SystemUIBottomSheetDialogTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/SystemUIBottomSheetDialogTest.kt
index 1ee8005fb7ab..03728960d818 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/SystemUIBottomSheetDialogTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/SystemUIBottomSheetDialogTest.kt
@@ -30,7 +30,6 @@ import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.capture
import com.android.systemui.util.mockito.mock
import kotlin.test.Test
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runTest
@@ -38,7 +37,6 @@ import org.junit.Before
import org.junit.runner.RunWith
import org.mockito.Mockito.verify
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@RunWithLooper(setAsMainLooper = true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/data/repository/KeyguardBypassRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/data/repository/KeyguardBypassRepositoryTest.kt
index a2fabf3b9baa..41fb4c1088bd 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/data/repository/KeyguardBypassRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/data/repository/KeyguardBypassRepositoryTest.kt
@@ -36,14 +36,12 @@ import com.android.systemui.statusbar.policy.devicePostureController
import com.android.systemui.testKosmos
import com.android.systemui.util.settings.data.repository.userAwareSecureSettingsRepository
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@EnableSceneContainer
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/domain/interactor/KeyguardBypassInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/domain/interactor/KeyguardBypassInteractorTest.kt
index 1cc55bf87b1a..091fbb65bcf9 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/domain/interactor/KeyguardBypassInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/domain/interactor/KeyguardBypassInteractorTest.kt
@@ -33,13 +33,11 @@ import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.shadeTestUtil
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@EnableSceneContainer
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt
index 02135f6a7836..eb95ddb39b40 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt
@@ -49,7 +49,6 @@ import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCall
import com.android.systemui.statusbar.window.StatusBarWindowController
import com.android.systemui.statusbar.window.StatusBarWindowControllerStore
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.After
@@ -69,7 +68,6 @@ import org.mockito.kotlin.whenever
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper
-@OptIn(ExperimentalCoroutinesApi::class)
@DisableFlags(StatusBarChipsModernization.FLAG_NAME)
class OngoingCallControllerTest : SysuiTestCase() {
private val kosmos = Kosmos()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractorTest.kt
index 14263c4b1b9b..73c191b32393 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractorTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.phone.ongoingcall.domain.interactor
import android.app.PendingIntent
@@ -40,7 +38,6 @@ import com.android.systemui.statusbar.notification.shared.CallType
import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallModel
import com.android.systemui.statusbar.window.fakeStatusBarWindowControllerStore
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/airplane/data/repository/AirplaneModeRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/airplane/data/repository/AirplaneModeRepositoryImplTest.kt
index 0641e173576d..ac92659bdff4 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/airplane/data/repository/AirplaneModeRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/airplane/data/repository/AirplaneModeRepositoryImplTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.settings.FakeGlobalSettings
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
@@ -41,7 +40,6 @@ import org.mockito.Mock
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class AirplaneModeRepositoryImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/airplane/domain/interactor/AirplaneModeInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/airplane/domain/interactor/AirplaneModeInteractorTest.kt
index 7901f47b19fd..8e03563620e5 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/airplane/domain/interactor/AirplaneModeInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/airplane/domain/interactor/AirplaneModeInteractorTest.kt
@@ -25,7 +25,6 @@ import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlo
import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnectivityRepository
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.test.runCurrent
@@ -33,7 +32,6 @@ import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class AirplaneModeInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/demo/DemoMobileConnectionParameterizedTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/demo/DemoMobileConnectionParameterizedTest.kt
index 7d320212750f..e4806e62a9e5 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/demo/DemoMobileConnectionParameterizedTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/demo/DemoMobileConnectionParameterizedTest.kt
@@ -34,7 +34,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
import kotlinx.coroutines.cancel
import kotlinx.coroutines.flow.MutableStateFlow
@@ -54,7 +53,6 @@ import platform.test.runner.parameterized.Parameters
* verifies that passing the given model to [DemoMobileConnectionsRepository] results in the correct
* flows emitting from the given connection.
*/
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
internal class DemoMobileConnectionParameterizedTest(private val testCase: TestCase) :
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/demo/DemoMobileConnectionsRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/demo/DemoMobileConnectionsRepositoryTest.kt
index 5017dda88d3b..25359c92c3f6 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/demo/DemoMobileConnectionsRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/demo/DemoMobileConnectionsRepositoryTest.kt
@@ -38,7 +38,6 @@ import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import junit.framework.Assert
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.launchIn
@@ -51,7 +50,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class DemoMobileConnectionsRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/CarrierMergedConnectionRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/CarrierMergedConnectionRepositoryTest.kt
index 715e3b472373..8e55f2e9a31a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/CarrierMergedConnectionRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/CarrierMergedConnectionRepositoryTest.kt
@@ -30,7 +30,6 @@ import com.android.systemui.statusbar.pipeline.wifi.data.repository.FakeWifiRepo
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiNetworkModel
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.test.TestScope
@@ -43,7 +42,6 @@ import org.mockito.Mock
import org.mockito.MockitoAnnotations
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class CarrierMergedConnectionRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractorTest.kt
index 39a1c106cfcf..4009144757f7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractorTest.kt
@@ -45,7 +45,6 @@ import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.test.TestScope
@@ -57,7 +56,6 @@ import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.ArgumentMatchers.anyString
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class MobileIconInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractorTest.kt
index 6efb9c77c131..d17abd7da05c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconsInteractorTest.kt
@@ -46,14 +46,12 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.CarrierConfigTracker
import com.google.common.truth.Truth.assertThat
import java.util.UUID
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.advanceTimeBy
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class MobileIconsInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/LocationBasedMobileIconViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/LocationBasedMobileIconViewModelTest.kt
index f99fcac28be6..cef0824e16d2 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/LocationBasedMobileIconViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/LocationBasedMobileIconViewModelTest.kt
@@ -41,7 +41,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.CarrierConfigTracker
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.test.TestScope
@@ -54,7 +53,6 @@ import org.mockito.Mock
import org.mockito.MockitoAnnotations
@Suppress("EXPERIMENTAL_IS_NOT_ENABLED")
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class LocationBasedMobileIconViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt
index bf1fbad074cd..61ed04c6b59d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt
@@ -58,7 +58,6 @@ import com.android.systemui.util.CarrierConfigTracker
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.filterIsInstance
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
@@ -73,7 +72,6 @@ import org.mockito.Mock
import org.mockito.MockitoAnnotations
@Suppress("EXPERIMENTAL_IS_NOT_ENABLED")
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class MobileIconViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModelTest.kt
index 31ba83752758..46777fa68486 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModelTest.kt
@@ -40,7 +40,6 @@ import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
import junit.framework.Assert.assertFalse
import junit.framework.Assert.assertTrue
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.isActive
@@ -54,7 +53,6 @@ import org.mockito.Mock
import org.mockito.MockitoAnnotations
@Suppress("EXPERIMENTAL_IS_NOT_ENABLED")
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class MobileIconsViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/satellite/data/DeviceBasedSatelliteRepositorySwitcherTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/satellite/data/DeviceBasedSatelliteRepositorySwitcherTest.kt
index 19d5a16deabd..30346caace55 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/satellite/data/DeviceBasedSatelliteRepositorySwitcherTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/satellite/data/DeviceBasedSatelliteRepositorySwitcherTest.kt
@@ -35,7 +35,6 @@ import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import java.util.Optional
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
@@ -95,7 +94,6 @@ class DeviceBasedSatelliteRepositorySwitcherTest : SysuiTestCase() {
testScope.backgroundScope,
)
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun switcherActiveRepo_updatesWhenDemoModeChanges() =
testScope.runTest {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/satellite/ui/viewmodel/DeviceBasedSatelliteViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/satellite/ui/viewmodel/DeviceBasedSatelliteViewModelTest.kt
index fe5b56a4e66d..c493c029a2a1 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/satellite/ui/viewmodel/DeviceBasedSatelliteViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/satellite/ui/viewmodel/DeviceBasedSatelliteViewModelTest.kt
@@ -36,7 +36,6 @@ import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiNetworkMode
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
import kotlin.time.Duration.Companion.seconds
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.runTest
@@ -45,7 +44,6 @@ import org.junit.runner.RunWith
import org.mockito.MockitoAnnotations
import org.mockito.kotlin.mock
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class DeviceBasedSatelliteViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/FakeHomeStatusBarViewBinder.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/FakeHomeStatusBarViewBinder.kt
index a2ca12c13a3e..5b5681e0faf4 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/FakeHomeStatusBarViewBinder.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/FakeHomeStatusBarViewBinder.kt
@@ -35,7 +35,7 @@ class FakeHomeStatusBarViewBinder : HomeStatusBarViewBinder {
viewModel: HomeStatusBarViewModel,
systemEventChipAnimateIn: ((View) -> Unit)?,
systemEventChipAnimateOut: ((View) -> Unit)?,
- listener: StatusBarVisibilityChangeListener,
+ listener: StatusBarVisibilityChangeListener?,
) {
this.listener = listener
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/FakeHomeStatusBarViewModel.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/FakeHomeStatusBarViewModel.kt
index a1c910d48cef..e4143a07d159 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/FakeHomeStatusBarViewModel.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/FakeHomeStatusBarViewModel.kt
@@ -20,6 +20,7 @@ import android.graphics.Color
import android.graphics.Rect
import android.view.View
import com.android.systemui.plugins.DarkIconDispatcher
+import com.android.systemui.statusbar.chips.mediaprojection.domain.model.MediaProjectionStopDialogModel
import com.android.systemui.statusbar.chips.ui.model.MultipleOngoingActivityChipsModel
import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
import com.android.systemui.statusbar.events.shared.model.SystemEventAnimationState.Idle
@@ -40,15 +41,16 @@ class FakeHomeStatusBarViewModel(
override val transitionFromLockscreenToDreamStartedEvent = MutableSharedFlow<Unit>()
override val primaryOngoingActivityChip: MutableStateFlow<OngoingActivityChipModel> =
- MutableStateFlow(OngoingActivityChipModel.Hidden())
+ MutableStateFlow(OngoingActivityChipModel.Inactive())
override val ongoingActivityChips = MutableStateFlow(MultipleOngoingActivityChipsModel())
override val statusBarPopupChips = MutableStateFlow(emptyList<PopupChipModel.Shown>())
- override val isHomeStatusBarAllowedByScene = MutableStateFlow(false)
+ override val mediaProjectionStopDialogDueToCallEndedState =
+ MutableStateFlow(MediaProjectionStopDialogModel.Hidden)
- override val shouldHomeStatusBarBeVisible = MutableStateFlow(false)
+ override val isHomeStatusBarAllowedByScene = MutableStateFlow(false)
override val shouldShowOperatorNameView = MutableStateFlow(false)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModelImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModelImplTest.kt
index e74d009bb909..eaee9d5d6db9 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModelImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModelImplTest.kt
@@ -44,21 +44,25 @@ import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.collectLastValue
import com.android.systemui.kosmos.collectValues
+import com.android.systemui.kosmos.runCurrent
import com.android.systemui.kosmos.runTest
-import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.kosmos.testScope
+import com.android.systemui.kosmos.useUnconfinedTestDispatcher
import com.android.systemui.log.assertLogsWtf
import com.android.systemui.mediaprojection.data.model.MediaProjectionState
import com.android.systemui.mediaprojection.data.repository.fakeMediaProjectionRepository
import com.android.systemui.plugins.DarkIconDispatcher
import com.android.systemui.scene.data.repository.sceneContainerRepository
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.screenrecord.data.model.ScreenRecordModel
import com.android.systemui.screenrecord.data.repository.screenRecordRepository
import com.android.systemui.shade.shadeTestUtil
import com.android.systemui.statusbar.chips.mediaprojection.domain.interactor.MediaProjectionChipInteractorTest.Companion.NORMAL_PACKAGE
import com.android.systemui.statusbar.chips.mediaprojection.domain.interactor.MediaProjectionChipInteractorTest.Companion.setUpPackageManagerForMediaProjection
+import com.android.systemui.statusbar.chips.mediaprojection.domain.model.MediaProjectionStopDialogModel
import com.android.systemui.statusbar.chips.notification.shared.StatusBarNotifChips
+import com.android.systemui.statusbar.chips.sharetoapp.ui.viewmodel.shareToAppChipViewModel
import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.assertIsScreenRecordChip
import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.assertIsShareToAppChip
@@ -86,21 +90,17 @@ import com.android.systemui.statusbar.pipeline.shared.domain.interactor.setHomeS
import com.android.systemui.statusbar.pipeline.shared.ui.model.VisibilityModel
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.runBlocking
-import kotlinx.coroutines.test.UnconfinedTestDispatcher
+import kotlinx.coroutines.test.runCurrent
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class HomeStatusBarViewModelImplTest : SysuiTestCase() {
- private val kosmos by lazy {
- testKosmos().also { it.testDispatcher = UnconfinedTestDispatcher() }
- }
+ private val kosmos = testKosmos().useUnconfinedTestDispatcher()
private val Kosmos.underTest by Kosmos.Fixture { kosmos.homeStatusBarViewModel }
@Before
@@ -112,6 +112,55 @@ class HomeStatusBarViewModelImplTest : SysuiTestCase() {
fun addDisplays() = runBlocking { kosmos.displayRepository.fake.addDisplay(DEFAULT_DISPLAY) }
@Test
+ @EnableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun mediaProjectionStopDialogDueToCallEndedState_initiallyHidden() =
+ kosmos.runTest {
+ shareToAppChipViewModel.start()
+ val latest by collectLastValue(underTest.mediaProjectionStopDialogDueToCallEndedState)
+
+ // Verify that the stop dialog is initially hidden
+ assertThat(latest).isInstanceOf(MediaProjectionStopDialogModel.Hidden::class.java)
+ }
+
+ @Test
+ @EnableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun mediaProjectionStopDialogDueToCallEndedState_flagEnabled_mediaIsProjecting_projectionStartedDuringCallAndActivePostCallEventEmitted_isShown() =
+ kosmos.runTest {
+ shareToAppChipViewModel.start()
+
+ val latest by
+ collectLastValue(
+ homeStatusBarViewModel.mediaProjectionStopDialogDueToCallEndedState
+ )
+
+ fakeMediaProjectionRepository.mediaProjectionState.value =
+ MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
+
+ fakeMediaProjectionRepository.emitProjectionStartedDuringCallAndActivePostCallEvent()
+
+ assertThat(latest).isInstanceOf(MediaProjectionStopDialogModel.Shown::class.java)
+ }
+
+ @Test
+ @DisableFlags(com.android.media.projection.flags.Flags.FLAG_SHOW_STOP_DIALOG_POST_CALL_END)
+ fun mediaProjectionStopDialogDueToCallEndedState_flagDisabled_mediaIsProjecting_projectionStartedDuringCallAndActivePostCallEventEmitted_isHidden() =
+ kosmos.runTest {
+ shareToAppChipViewModel.start()
+
+ val latest by
+ collectLastValue(
+ homeStatusBarViewModel.mediaProjectionStopDialogDueToCallEndedState
+ )
+
+ fakeMediaProjectionRepository.mediaProjectionState.value =
+ MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
+
+ fakeMediaProjectionRepository.emitProjectionStartedDuringCallAndActivePostCallEvent()
+
+ assertThat(latest).isInstanceOf(MediaProjectionStopDialogModel.Hidden::class.java)
+ }
+
+ @Test
fun isTransitioningFromLockscreenToOccluded_started_isTrue() =
kosmos.runTest {
val latest by collectLastValue(underTest.isTransitioningFromLockscreenToOccluded)
@@ -439,7 +488,7 @@ class HomeStatusBarViewModelImplTest : SysuiTestCase() {
kosmos.screenRecordRepository.screenRecordState.value = ScreenRecordModel.DoingNothing
- assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
kosmos.fakeMediaProjectionRepository.mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
@@ -510,6 +559,30 @@ class HomeStatusBarViewModelImplTest : SysuiTestCase() {
}
@Test
+ fun isHomeStatusBarAllowedByScene_sceneGoneWithNotificationsShadeOverlay_false() =
+ kosmos.runTest {
+ val latest by collectLastValue(underTest.isHomeStatusBarAllowedByScene)
+
+ kosmos.sceneContainerRepository.snapToScene(Scenes.Gone)
+ kosmos.sceneContainerRepository.showOverlay(Overlays.NotificationsShade)
+ runCurrent()
+
+ assertThat(latest).isFalse()
+ }
+
+ @Test
+ fun isHomeStatusBarAllowedByScene_sceneGoneWithQuickSettingsShadeOverlay_false() =
+ kosmos.runTest {
+ val latest by collectLastValue(underTest.isHomeStatusBarAllowedByScene)
+
+ kosmos.sceneContainerRepository.snapToScene(Scenes.Gone)
+ kosmos.sceneContainerRepository.showOverlay(Overlays.QuickSettingsShade)
+ runCurrent()
+
+ assertThat(latest).isFalse()
+ }
+
+ @Test
fun shouldShowOperatorNameView_allowedByInteractor_allowedByDisableFlags_visible() =
kosmos.runTest {
kosmos.setHomeStatusBarInteractorShowOperatorName(true)
@@ -602,98 +675,6 @@ class HomeStatusBarViewModelImplTest : SysuiTestCase() {
}
@Test
- fun shouldHomeStatusBarBeVisible_keyguardNotGone_noHun_false() =
- kosmos.runTest {
- // Do not transition from keyguard. i.e., we don't call transitionKeyguardToGone()
-
- // Nothing disabled
- fakeDisableFlagsRepository.disableFlags.value =
- DisableFlagsModel(DISABLE_NONE, DISABLE2_NONE)
-
- val latest by collectLastValue(underTest.shouldHomeStatusBarBeVisible)
- assertThat(latest).isFalse()
- }
-
- @Test
- fun shouldHomeStatusBarBeVisible_keyguardNotGone_hun_true() =
- kosmos.runTest {
- // Keyguard gone
- transitionKeyguardToGone()
-
- // Nothing disabled
- fakeDisableFlagsRepository.disableFlags.value =
- DisableFlagsModel(DISABLE_NONE, DISABLE2_NONE)
-
- // there is an active HUN
- headsUpNotificationRepository.setNotifications(
- UnconfinedFakeHeadsUpRowRepository(
- key = "key",
- pinnedStatus = MutableStateFlow(PinnedStatus.PinnedByUser),
- )
- )
-
- val latest by collectLastValue(underTest.shouldHomeStatusBarBeVisible)
- assertThat(latest).isTrue()
- }
-
- @Test
- fun shouldHomeStatusBarBeVisible_keyguardGone_noHun_notInCamera_true() =
- kosmos.runTest {
- // Keyguard gone
- transitionKeyguardToGone()
-
- // Nothing disabled
- fakeDisableFlagsRepository.disableFlags.value =
- DisableFlagsModel(DISABLE_NONE, DISABLE2_NONE)
-
- val latest by collectLastValue(underTest.shouldHomeStatusBarBeVisible)
- assertThat(latest).isTrue()
- }
-
- @Test
- fun shouldHomeStatusBarBeVisible_keyguardGone_hun_notInCamera_true() =
- kosmos.runTest {
- // Keyguard gone
- transitionKeyguardToGone()
-
- // Nothing disabled
- fakeDisableFlagsRepository.disableFlags.value =
- DisableFlagsModel(DISABLE_NONE, DISABLE2_NONE)
-
- // there is an active HUN
- headsUpNotificationRepository.setNotifications(
- UnconfinedFakeHeadsUpRowRepository(
- key = "key",
- pinnedStatus = MutableStateFlow(PinnedStatus.PinnedByUser),
- )
- )
-
- val latest by collectLastValue(underTest.shouldHomeStatusBarBeVisible)
- assertThat(latest).isTrue()
- }
-
- @Test
- fun shouldHomeStatusBarBeVisible_keyguardGone_noHun_inCamera_false() =
- kosmos.runTest {
- // Keyguard gone
- transitionKeyguardToGone()
-
- // Nothing disabled
- fakeDisableFlagsRepository.disableFlags.value =
- DisableFlagsModel(DISABLE_NONE, DISABLE2_NONE)
-
- fakeKeyguardTransitionRepository.sendTransitionSteps(
- from = KeyguardState.LOCKSCREEN,
- to = KeyguardState.OCCLUDED,
- testScope = testScope,
- )
- kosmos.keyguardInteractor.onCameraLaunchDetected(CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP)
-
- val latest by collectLastValue(underTest.shouldHomeStatusBarBeVisible)
- assertThat(latest).isFalse()
- }
-
- @Test
fun isClockVisible_allowedByDisableFlags_visible() =
kosmos.runTest {
val latest by collectLastValue(underTest.isClockVisible)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/WifiRepositorySwitcherTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/WifiRepositorySwitcherTest.kt
index 33223aef11ff..914d9f2173a7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/WifiRepositorySwitcherTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/WifiRepositorySwitcherTest.kt
@@ -38,7 +38,6 @@ import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.time.FakeSystemClock
import com.android.wifitrackerlib.WifiPickerTracker
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
@@ -52,7 +51,6 @@ import org.mockito.Mock
import org.mockito.Mockito
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@Suppress("EXPERIMENTAL_IS_NOT_ENABLED")
@SmallTest
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractorImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractorImplTest.kt
index c0a15922642e..2aecf5b9dacb 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractorImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractorImplTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.statusbar.pipeline.wifi.data.repository.FakeWifiRepo
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiNetworkModel
import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiScanEntry
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.test.TestScope
@@ -39,7 +38,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@Suppress("EXPERIMENTAL_IS_NOT_ENABLED")
@SmallTest
@RunWith(AndroidJUnit4::class)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/KeyguardQsUserSwitchControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/KeyguardQsUserSwitchControllerTest.kt
deleted file mode 100644
index 2e43e5273766..000000000000
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/KeyguardQsUserSwitchControllerTest.kt
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.systemui.statusbar.policy
-
-import android.testing.TestableLooper
-import android.testing.ViewUtils
-import android.view.LayoutInflater
-import android.view.View
-import android.widget.FrameLayout
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.android.internal.logging.UiEventLogger
-import com.android.systemui.SysuiTestCase
-import com.android.systemui.plugins.FalsingManager
-import com.android.systemui.qs.user.UserSwitchDialogController
-import com.android.systemui.res.R
-import com.android.systemui.statusbar.phone.DozeParameters
-import com.android.systemui.statusbar.phone.LockscreenGestureLogger
-import com.android.systemui.statusbar.phone.ScreenOffAnimationController
-import com.google.common.truth.Truth.assertThat
-import org.junit.After
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.mockito.Mock
-import org.mockito.Mockito.times
-import org.mockito.Mockito.verify
-import org.mockito.Mockito.`when`
-import org.mockito.MockitoAnnotations
-
-@SmallTest
-@TestableLooper.RunWithLooper
-@RunWith(AndroidJUnit4::class)
-class KeyguardQsUserSwitchControllerTest : SysuiTestCase() {
- @Mock private lateinit var userSwitcherController: UserSwitcherController
-
- @Mock private lateinit var keyguardStateController: KeyguardStateController
-
- @Mock private lateinit var falsingManager: FalsingManager
-
- @Mock private lateinit var configurationController: ConfigurationController
-
- @Mock private lateinit var dozeParameters: DozeParameters
-
- @Mock private lateinit var screenOffAnimationController: ScreenOffAnimationController
-
- @Mock private lateinit var userSwitchDialogController: UserSwitchDialogController
-
- @Mock private lateinit var uiEventLogger: UiEventLogger
-
- private lateinit var view: FrameLayout
- private lateinit var testableLooper: TestableLooper
- private lateinit var keyguardQsUserSwitchController: KeyguardQsUserSwitchController
-
- @Before
- fun setUp() {
- MockitoAnnotations.initMocks(this)
- testableLooper = TestableLooper.get(this)
-
- view =
- LayoutInflater.from(context).inflate(R.layout.keyguard_qs_user_switch, null)
- as FrameLayout
-
- keyguardQsUserSwitchController =
- KeyguardQsUserSwitchController(
- view,
- context,
- context.resources,
- userSwitcherController,
- keyguardStateController,
- falsingManager,
- configurationController,
- dozeParameters,
- screenOffAnimationController,
- userSwitchDialogController,
- uiEventLogger,
- )
-
- ViewUtils.attachView(view)
- testableLooper.processAllMessages()
- `when`(userSwitcherController.isKeyguardShowing).thenReturn(true)
- `when`(keyguardStateController.isShowing).thenReturn(true)
- `when`(keyguardStateController.isKeyguardGoingAway).thenReturn(false)
- keyguardQsUserSwitchController.init()
- }
-
- @After
- fun tearDown() {
- if (::view.isInitialized) {
- ViewUtils.detachView(view)
- }
- }
-
- @Test
- fun testUiEventLogged() {
- view.findViewById<View>(R.id.kg_multi_user_avatar)?.performClick()
- verify(uiEventLogger, times(1))
- .log(LockscreenGestureLogger.LockscreenUiEvent.LOCKSCREEN_SWITCH_USER_TAP)
- }
-
- @Test
- fun testAvatarExistsWhenKeyguardGoingAway() {
- `when`(keyguardStateController.isShowing).thenReturn(false)
- `when`(keyguardStateController.isKeyguardGoingAway).thenReturn(true)
- keyguardQsUserSwitchController.updateKeyguardShowing(true /* forceViewUpdate */)
- assertThat(keyguardQsUserSwitchController.mUserAvatarView.isEmpty).isFalse()
- }
-
- @Test
- fun testAvatarExistsWhenKeyguardShown() {
- `when`(keyguardStateController.isShowing).thenReturn(true)
- `when`(keyguardStateController.isKeyguardGoingAway).thenReturn(false)
- keyguardQsUserSwitchController.updateKeyguardShowing(true /* forceViewUpdate */)
- assertThat(keyguardQsUserSwitchController.mUserAvatarView.isEmpty).isFalse()
- }
-
- @Test
- fun testAvatarGoneWhenKeyguardGone() {
- `when`(keyguardStateController.isShowing).thenReturn(false)
- `when`(keyguardStateController.isKeyguardGoingAway).thenReturn(false)
- keyguardQsUserSwitchController.updateKeyguardShowing(true /* forceViewUpdate */)
- assertThat(keyguardQsUserSwitchController.mUserAvatarView.isEmpty).isTrue()
- }
-}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ZenModeControllerImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ZenModeControllerImplTest.kt
index 22250082944e..24fee19dbf58 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ZenModeControllerImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ZenModeControllerImplTest.kt
@@ -31,7 +31,6 @@ import com.android.systemui.util.settings.fakeGlobalSettings
import com.google.common.truth.Truth.assertThat
import java.util.concurrent.atomic.AtomicBoolean
import java.util.concurrent.atomic.AtomicInteger
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -42,7 +41,6 @@ import org.mockito.Mockito
import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@RunWithLooper
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ZenModesCleanupStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ZenModesCleanupStartableTest.kt
index fd8958166a6c..170a84b63dfb 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ZenModesCleanupStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ZenModesCleanupStartableTest.kt
@@ -26,7 +26,6 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.kosmos.backgroundCoroutineContext
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -40,7 +39,6 @@ import org.mockito.kotlin.never
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
@SmallTest
@EnableFlags(android.app.Flags.FLAG_MODES_UI)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/bluetooth/BluetoothRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/bluetooth/BluetoothRepositoryImplTest.kt
index 94f0d196fa21..23933f658ac9 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/bluetooth/BluetoothRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/bluetooth/BluetoothRepositoryImplTest.kt
@@ -24,7 +24,6 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestCoroutineScheduler
import kotlinx.coroutines.test.TestDispatcher
@@ -35,7 +34,6 @@ import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class BluetoothRepositoryImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/bluetooth/FakeBluetoothRepository.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/bluetooth/FakeBluetoothRepository.kt
index d8c0f777d4cc..cdaca51c9db5 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/bluetooth/FakeBluetoothRepository.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/bluetooth/FakeBluetoothRepository.kt
@@ -16,7 +16,6 @@ package com.android.systemui.statusbar.policy.bluetooth
import com.android.settingslib.bluetooth.CachedBluetoothDevice
import com.android.settingslib.bluetooth.LocalBluetoothManager
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestCoroutineScheduler
import kotlinx.coroutines.test.TestScope
@@ -28,7 +27,6 @@ import kotlinx.coroutines.test.TestScope
* [StandardTestDispatcher], etc. to create a test version of the repo. This class uses those test
* items under-the-hood so Java classes can indirectly access them.
*/
-@OptIn(ExperimentalCoroutinesApi::class)
class FakeBluetoothRepository(localBluetoothManager: LocalBluetoothManager) : BluetoothRepository {
private val scheduler = TestCoroutineScheduler()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/data/repository/DeviceProvisioningRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/data/repository/DeviceProvisioningRepositoryImplTest.kt
index 21ed3841c70b..703baa1be4ac 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/data/repository/DeviceProvisioningRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/data/repository/DeviceProvisioningRepositoryImplTest.kt
@@ -13,8 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.policy.data.repository
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -25,7 +23,6 @@ import com.android.systemui.statusbar.policy.DeviceProvisionedController
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.mockito.withArgCaptor
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/data/repository/UserSetupRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/data/repository/UserSetupRepositoryTest.kt
index 4c8bbe09a688..441b3306971f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/data/repository/UserSetupRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/data/repository/UserSetupRepositoryTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.policy.data.repository
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -34,7 +32,6 @@ import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.test.runCurrent
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ui/dialog/ModesDialogDelegateTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ui/dialog/ModesDialogDelegateTest.kt
index 2d6315014164..ffdebb3517e7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ui/dialog/ModesDialogDelegateTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ui/dialog/ModesDialogDelegateTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.policy.ui.dialog
import android.app.Dialog
@@ -37,7 +35,6 @@ import com.android.systemui.statusbar.phone.systemUIDialogFactory
import com.android.systemui.statusbar.policy.ui.dialog.viewmodel.modesDialogViewModel
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ui/dialog/viewmodel/ModesDialogViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ui/dialog/viewmodel/ModesDialogViewModelTest.kt
index 856de8ee1c80..bae61bb867e1 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ui/dialog/viewmodel/ModesDialogViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ui/dialog/viewmodel/ModesDialogViewModelTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.policy.ui.dialog.viewmodel
import android.app.AutomaticZenRule
@@ -41,7 +39,6 @@ import com.android.systemui.statusbar.policy.ui.dialog.mockModesDialogEventLogge
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import java.util.Calendar
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt
index 73e5004d47f0..381ac1519ce8 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt
@@ -32,6 +32,7 @@ import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.kosmos.testScope
import com.android.systemui.scene.data.repository.sceneContainerRepository
import com.android.systemui.scene.domain.interactor.sceneInteractor
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.statusbar.domain.interactor.keyguardStatusBarInteractor
import com.android.systemui.statusbar.headsup.shared.StatusBarNoHunBehavior
@@ -55,8 +56,8 @@ import org.mockito.Mockito.verify
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@SmallTest
@OptIn(ExperimentalCoroutinesApi::class)
+@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
class KeyguardStatusBarViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
private val kosmos = testKosmos()
@@ -98,6 +99,15 @@ class KeyguardStatusBarViewModelTest(flags: FlagsParameterization) : SysuiTestCa
}
@Test
+ fun isVisible_lockscreen_true() =
+ testScope.runTest {
+ val latest by collectLastValue(underTest.isVisible)
+ kosmos.sceneContainerRepository.snapToScene(Scenes.Lockscreen)
+
+ assertThat(latest).isTrue()
+ }
+
+ @Test
fun isVisible_dozing_false() =
testScope.runTest {
val latest by collectLastValue(underTest.isVisible)
@@ -119,6 +129,30 @@ class KeyguardStatusBarViewModelTest(flags: FlagsParameterization) : SysuiTestCa
}
@Test
+ fun isVisible_notificationsShadeOverlay_false() =
+ testScope.runTest {
+ val latest by collectLastValue(underTest.isVisible)
+
+ kosmos.sceneContainerRepository.snapToScene(Scenes.Lockscreen)
+ kosmos.sceneContainerRepository.showOverlay(Overlays.NotificationsShade)
+ runCurrent()
+
+ assertThat(latest).isFalse()
+ }
+
+ @Test
+ fun isVisible_quickSettingsShadeOverlay_false() =
+ testScope.runTest {
+ val latest by collectLastValue(underTest.isVisible)
+
+ kosmos.sceneContainerRepository.snapToScene(Scenes.Lockscreen)
+ kosmos.sceneContainerRepository.showOverlay(Overlays.QuickSettingsShade)
+ runCurrent()
+
+ assertThat(latest).isFalse()
+ }
+
+ @Test
fun isVisible_sceneBouncer_false() =
testScope.runTest {
val latest by collectLastValue(underTest.isVisible)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/window/data/repository/StatusBarWindowStatePerDisplayRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/window/data/repository/StatusBarWindowStatePerDisplayRepositoryTest.kt
index 42ebaf7e0c59..a132e4d40ae7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/window/data/repository/StatusBarWindowStatePerDisplayRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/window/data/repository/StatusBarWindowStatePerDisplayRepositoryTest.kt
@@ -31,7 +31,6 @@ import com.android.systemui.statusbar.commandQueue
import com.android.systemui.statusbar.window.shared.model.StatusBarWindowState
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
@@ -40,7 +39,6 @@ import org.mockito.Mockito.verify
import org.mockito.kotlin.argumentCaptor
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class StatusBarWindowStatePerDisplayRepositoryTest : SysuiTestCase() {
private val kosmos = testKosmos()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/window/data/repository/StatusBarWindowStateRepositoryStoreTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/window/data/repository/StatusBarWindowStateRepositoryStoreTest.kt
index e36178cb99d5..4734810a5526 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/window/data/repository/StatusBarWindowStateRepositoryStoreTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/window/data/repository/StatusBarWindowStateRepositoryStoreTest.kt
@@ -31,7 +31,6 @@ import com.android.systemui.statusbar.window.shared.model.StatusBarWindowState
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.runner.RunWith
@@ -40,7 +39,6 @@ import org.mockito.kotlin.argumentCaptor
import org.mockito.kotlin.reset
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class StatusBarWindowStateRepositoryStoreTest : SysuiTestCase() {
private val kosmos = testKosmos()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/DisplaySwitchLatencyTrackerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/DisplaySwitchLatencyTrackerTest.kt
index ea91b7a9d6e2..fecf1fd2f222 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/DisplaySwitchLatencyTrackerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/DisplaySwitchLatencyTrackerTest.kt
@@ -56,7 +56,6 @@ import com.android.systemui.util.mockito.capture
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import java.util.Optional
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.asExecutor
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.StandardTestDispatcher
@@ -75,7 +74,6 @@ import org.mockito.Mockito.`when` as whenever
import org.mockito.MockitoAnnotations
import org.mockito.kotlin.mock
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
@SmallTest
class DisplaySwitchLatencyTrackerTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/FoldLightRevealOverlayAnimationTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/FoldLightRevealOverlayAnimationTest.kt
index 665f55bfc2ec..dfc4d0f07df8 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/FoldLightRevealOverlayAnimationTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/FoldLightRevealOverlayAnimationTest.kt
@@ -37,7 +37,6 @@ import com.android.systemui.power.domain.interactor.powerInteractor
import com.android.systemui.power.shared.model.ScreenPowerState
import com.android.systemui.statusbar.LightRevealScrim
import com.android.systemui.util.animation.data.repository.fakeAnimationStatusRepository
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.runTest
@@ -59,7 +58,6 @@ import org.mockito.kotlin.whenever
@SmallTest
@TestableLooper.RunWithLooper(setAsMainLooper = true)
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class FoldLightRevealOverlayAnimationTest : SysuiTestCase() {
@get:Rule val animatorTestRule = AnimatorTestRule(this)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/domain/interactor/UnfoldTransitionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/domain/interactor/UnfoldTransitionInteractorTest.kt
index 12f08a343886..872c84d63eed 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/domain/interactor/UnfoldTransitionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/unfold/domain/interactor/UnfoldTransitionInteractorTest.kt
@@ -26,7 +26,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.unfold.fakeUnfoldTransitionProgressProvider
import com.google.common.truth.Truth.assertThat
import java.util.Locale
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.async
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.test.runCurrent
@@ -34,7 +33,6 @@ import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class UnfoldTransitionInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/user/data/repository/UserRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/user/data/repository/UserRepositoryImplTest.kt
index 8a4593032748..3ca1f5c0dd30 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/user/data/repository/UserRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/user/data/repository/UserRepositoryImplTest.kt
@@ -40,7 +40,6 @@ import com.android.systemui.util.settings.fakeGlobalSettings
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.test.runTest
@@ -52,7 +51,6 @@ import org.mockito.Mockito.mock
import org.mockito.Mockito.`when` as whenever
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class UserRepositoryImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/user/domain/interactor/UserLogoutInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/user/domain/interactor/UserLogoutInteractorTest.kt
index f70b42638cda..cf01ee164e0d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/user/domain/interactor/UserLogoutInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/user/domain/interactor/UserLogoutInteractorTest.kt
@@ -27,14 +27,12 @@ import com.android.systemui.kosmos.useUnconfinedTestDispatcher
import com.android.systemui.testKosmos
import com.android.systemui.user.data.repository.fakeUserRepository
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class UserLogoutInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/user/domain/interactor/UserSwitcherInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/user/domain/interactor/UserSwitcherInteractorTest.kt
index ccbdffa03cbf..3eada258f616 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/user/domain/interactor/UserSwitcherInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/user/domain/interactor/UserSwitcherInteractorTest.kt
@@ -68,7 +68,6 @@ import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import junit.framework.Assert.assertNotNull
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.test.runCurrent
@@ -87,7 +86,6 @@ import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class UserSwitcherInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/user/ui/viewmodel/StatusBarUserChipViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/user/ui/viewmodel/StatusBarUserChipViewModelTest.kt
index 99cdf731a765..5d51c6d16c5a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/user/ui/viewmodel/StatusBarUserChipViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/user/ui/viewmodel/StatusBarUserChipViewModelTest.kt
@@ -47,7 +47,6 @@ import com.android.systemui.user.domain.interactor.RefreshUsersScheduler
import com.android.systemui.user.domain.interactor.UserSwitcherInteractor
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.toList
@@ -66,7 +65,6 @@ import org.mockito.Mock
import org.mockito.Mockito.doAnswer
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class StatusBarUserChipViewModelTest : SysuiTestCase() {
@@ -265,7 +263,7 @@ class StatusBarUserChipViewModelTest : SysuiTestCase() {
guestUserInteractor = guestUserInteractor,
uiEventLogger = uiEventLogger,
userRestrictionChecker = mock(),
- processWrapper = ProcessWrapperFake()
+ processWrapper = ProcessWrapperFake(activityManager)
)
)
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/user/ui/viewmodel/UserSwitcherViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/user/ui/viewmodel/UserSwitcherViewModelTest.kt
index 917df619467d..8ff088f5d29b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/user/ui/viewmodel/UserSwitcherViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/user/ui/viewmodel/UserSwitcherViewModelTest.kt
@@ -51,7 +51,6 @@ import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
@@ -66,7 +65,6 @@ import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class UserSwitcherViewModelTest : SysuiTestCase() {
@@ -177,7 +175,7 @@ class UserSwitcherViewModelTest : SysuiTestCase() {
guestUserInteractor = guestUserInteractor,
uiEventLogger = uiEventLogger,
userRestrictionChecker = mock(),
- processWrapper = ProcessWrapperFake()
+ processWrapper = ProcessWrapperFake(activityManager)
),
guestUserInteractor = guestUserInteractor,
)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/util/WallpaperControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/util/WallpaperControllerTest.kt
index 6271904b2f04..9f2f60342d7c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/util/WallpaperControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/util/WallpaperControllerTest.kt
@@ -86,7 +86,7 @@ class WallpaperControllerTest : SysuiTestCase() {
@Test
fun setUnfoldTransitionZoom_defaultUnfoldTransitionIsDisabled_doesNotUpdateWallpaperZoom() {
- wallpaperRepository.wallpaperInfo.value = createWallpaperInfo(useDefaultTransition = false)
+ wallpaperRepository.setWallpaperInfo(createWallpaperInfo(useDefaultTransition = false))
wallaperController.setUnfoldTransitionZoom(0.5f)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/util/kotlin/FlowUtilTests.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/util/kotlin/FlowUtilTests.kt
index e2ce50ccb6da..9440280649dd 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/util/kotlin/FlowUtilTests.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/util/kotlin/FlowUtilTests.kt
@@ -22,7 +22,6 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow
@@ -244,7 +243,6 @@ class SampleFlowTest : SysuiTestCase() {
}
}
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class ThrottleFlowTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/SettingsProxyExtTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/SettingsProxyExtTest.kt
index e281894a93ab..29d2bf9e051e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/SettingsProxyExtTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/SettingsProxyExtTest.kt
@@ -26,7 +26,6 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.android.systemui.util.settings.SettingsProxyExt.observerFlow
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -42,7 +41,6 @@ import org.mockito.kotlin.verify
/** Tests for [SettingsProxyExt]. */
@RunWith(AndroidJUnit4::class)
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
class SettingsProxyExtTest : SysuiTestCase() {
private val kosmos = testKosmos()
private val testScope = kosmos.testScope
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/SettingsProxyTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/SettingsProxyTest.kt
index e25bf13c41f2..671ef5b95a79 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/SettingsProxyTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/SettingsProxyTest.kt
@@ -28,7 +28,6 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceUntilIdle
@@ -45,7 +44,6 @@ import org.mockito.kotlin.eq
@RunWith(AndroidJUnit4::class)
@SmallTest
@TestableLooper.RunWithLooper
-@OptIn(ExperimentalCoroutinesApi::class)
class SettingsProxyTest : SysuiTestCase() {
private val testDispatcher = StandardTestDispatcher()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/UserSettingsProxyTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/UserSettingsProxyTest.kt
index 5787f7dfc61f..7b71283a9931 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/UserSettingsProxyTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/UserSettingsProxyTest.kt
@@ -29,7 +29,6 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
@@ -194,7 +193,6 @@ class UserSettingsProxyTest : SysuiTestCase() {
)
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun registerContentObserverForUserAsync_callbackAfterRegister() =
testScope.runTest {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/repository/UserAwareSettingsRepositoryTestBase.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/repository/UserAwareSettingsRepositoryTestBase.kt
index 09db96f8ffb8..8b227176f858 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/repository/UserAwareSettingsRepositoryTestBase.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/util/settings/repository/UserAwareSettingsRepositoryTestBase.kt
@@ -25,13 +25,11 @@ import com.android.systemui.testKosmos
import com.android.systemui.user.data.repository.fakeUserRepository
import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
-@OptIn(ExperimentalCoroutinesApi::class)
abstract class UserAwareSettingsRepositoryTestBase : SysuiTestCase() {
protected val kosmos = testKosmos()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/util/ui/AnimatedValueTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/util/ui/AnimatedValueTest.kt
index 6637d5f8de92..80fd01589fd5 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/util/ui/AnimatedValueTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/util/ui/AnimatedValueTest.kt
@@ -13,8 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.util.ui
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -22,7 +20,6 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/CsdWarningDialogTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/CsdWarningDialogTest.java
index bebf1cfa86e7..ac4ef06cd53a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/CsdWarningDialogTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/CsdWarningDialogTest.java
@@ -18,16 +18,13 @@ package com.android.systemui.volume;
import static android.media.AudioManager.CSD_WARNING_DOSE_REACHED_1X;
import static android.media.AudioManager.CSD_WARNING_DOSE_REPEATED_5X;
-
import static com.google.common.truth.Truth.assertThat;
-
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-
import android.app.Notification;
import android.app.NotificationManager;
import android.content.Intent;
@@ -48,13 +45,12 @@ import com.android.systemui.plugins.VolumeDialog;
import com.android.systemui.util.concurrency.FakeExecutor;
import com.android.systemui.util.time.FakeSystemClock;
-import com.google.common.collect.ImmutableList;
-
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.util.Collections;
import java.util.List;
import java.util.Optional;
@@ -69,8 +65,8 @@ public class CsdWarningDialogTest extends SysuiTestCase {
private CsdWarningDialog mDialog;
private static final String DISMISS_CSD_NOTIFICATION =
"com.android.systemui.volume.DISMISS_CSD_NOTIFICATION";
- private final Optional<ImmutableList<CsdWarningAction>> mEmptyActions =
- Optional.of(ImmutableList.of());
+ private final Optional<List<CsdWarningAction>> mEmptyActions =
+ Optional.of(Collections.emptyList());
@Before
public void setup() {
@@ -84,7 +80,7 @@ public class CsdWarningDialogTest extends SysuiTestCase {
@Test
public void create1XCsdDialogAndWait_sendsNotification() {
- FakeExecutor executor = new FakeExecutor(new FakeSystemClock());
+ FakeExecutor executor = new FakeExecutor(new FakeSystemClock());
// instantiate directly instead of via factory; we don't want executor to be @Background
mDialog = new CsdWarningDialog(CSD_WARNING_DOSE_REACHED_1X, mContext,
mAudioManager, mNotificationManager, executor, null,
@@ -102,7 +98,7 @@ public class CsdWarningDialogTest extends SysuiTestCase {
@Test
public void create5XCsdDialogAndWait_willSendNotification() {
- FakeExecutor executor = new FakeExecutor(new FakeSystemClock());
+ FakeExecutor executor = new FakeExecutor(new FakeSystemClock());
mDialog = new CsdWarningDialog(CSD_WARNING_DOSE_REPEATED_5X, mContext,
mAudioManager, mNotificationManager, executor, null,
mEmptyActions,
@@ -122,7 +118,7 @@ public class CsdWarningDialogTest extends SysuiTestCase {
.setPackage(mContext.getPackageName());
mDialog = new CsdWarningDialog(CSD_WARNING_DOSE_REPEATED_5X, mContext,
mAudioManager, mNotificationManager, executor, null,
- Optional.of(ImmutableList.of(new CsdWarningAction("Undo", undoIntent, false))),
+ Optional.of(List.of(new CsdWarningAction("Undo", undoIntent, false))),
mFakeBroadcastDispatcher);
when(mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC)).thenReturn(25);
@@ -149,7 +145,7 @@ public class CsdWarningDialogTest extends SysuiTestCase {
.setPackage(mContext.getPackageName());
mDialog = new CsdWarningDialog(CSD_WARNING_DOSE_REPEATED_5X, mContext,
mAudioManager, mNotificationManager, executor, null,
- Optional.of(ImmutableList.of(new CsdWarningAction("Undo", undoIntent, false))),
+ Optional.of(List.of(new CsdWarningAction("Undo", undoIntent, false))),
mFakeBroadcastDispatcher);
Intent dismissIntent = new Intent(DISMISS_CSD_NOTIFICATION)
.setPackage(mContext.getPackageName());
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/VolumeControllerAdapterTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/VolumeControllerAdapterTest.kt
index c1403649efdd..d61a7daf6cb9 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/VolumeControllerAdapterTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/VolumeControllerAdapterTest.kt
@@ -25,7 +25,6 @@ import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.android.systemui.volume.data.repository.audioRepository
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -36,7 +35,6 @@ import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
import org.mockito.kotlin.verify
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
@SmallTest
class VolumeControllerAdapterTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/VolumeDialogControllerImplTestKt.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/VolumeDialogControllerImplTestKt.kt
index a9c352df9a26..95d6743a3c41 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/VolumeDialogControllerImplTestKt.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/VolumeDialogControllerImplTestKt.kt
@@ -53,7 +53,6 @@ import com.android.systemui.util.kotlin.JavaAdapter
import com.android.systemui.util.time.fakeSystemClock
import com.android.systemui.volume.data.repository.audioRepository
import com.android.systemui.volume.domain.interactor.FakeAudioSharingInteractor
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -66,7 +65,6 @@ import org.mockito.kotlin.mock
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
@SmallTest
@TestableLooper.RunWithLooper
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/data/repository/VolumeDialogRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/data/repository/VolumeDialogRepositoryTest.kt
index dcac85e7fb5b..240121422ef0 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/data/repository/VolumeDialogRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/data/repository/VolumeDialogRepositoryTest.kt
@@ -23,14 +23,12 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class VolumeDialogRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogVisibilityInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogVisibilityInteractorTest.kt
index 31d2eb37dead..d0cabec8332a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogVisibilityInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogVisibilityInteractorTest.kt
@@ -31,7 +31,6 @@ import com.android.systemui.volume.dialog.shared.model.VolumeDialogVisibilityMod
import com.google.common.truth.Truth.assertThat
import kotlin.time.Duration.Companion.days
import kotlin.time.Duration.Companion.seconds
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -41,7 +40,6 @@ import org.junit.runner.RunWith
private val dialogTimeoutDuration = 3.seconds
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/ringer/domain/VolumeDialogRingerInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/ringer/domain/VolumeDialogRingerInteractorTest.kt
index 12885a83a70b..4ce2e10b1247 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/ringer/domain/VolumeDialogRingerInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/ringer/domain/VolumeDialogRingerInteractorTest.kt
@@ -31,12 +31,10 @@ import com.android.systemui.kosmos.useUnconfinedTestDispatcher
import com.android.systemui.plugins.fakeVolumeDialogController
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelTest.kt
index 2dcfdd958df1..4e8a375b53bb 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelTest.kt
@@ -33,7 +33,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.time.fakeSystemClock
import com.android.systemui.volume.data.repository.audioSystemRepository
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -41,7 +40,6 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSliderInputEventsInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSliderInputEventsInteractorTest.kt
index 0a50722d8fed..4ed0d6ed4657 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSliderInputEventsInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSliderInputEventsInteractorTest.kt
@@ -32,7 +32,6 @@ import com.android.systemui.volume.dialog.sliders.shared.model.SliderInputEvent
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
import kotlin.time.Duration.Companion.seconds
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -41,7 +40,6 @@ import org.junit.runner.RunWith
private val volumeDialogTimeout = 3.seconds
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSlidersInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSlidersInteractorTest.kt
index 87d782e7815d..de81212900ea 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSlidersInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSlidersInteractorTest.kt
@@ -30,7 +30,6 @@ import com.android.systemui.plugins.fakeVolumeDialogController
import com.android.systemui.testKosmos
import com.android.systemui.volume.dialog.sliders.domain.model.VolumeDialogSliderType
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -40,7 +39,6 @@ import org.mockito.kotlin.whenever
private const val AUDIO_SHARING_STREAM = 99
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioModeInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioModeInteractorTest.kt
index fe34361540e1..6df0184cabcf 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioModeInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioModeInteractorTest.kt
@@ -23,7 +23,6 @@ import com.android.settingslib.volume.domain.interactor.AudioModeInteractor
import com.android.systemui.SysuiTestCase
import com.android.systemui.volume.data.repository.FakeAudioRepository
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.test.TestScope
@@ -32,7 +31,6 @@ import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
@SmallTest
class AudioModeInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioOutputInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioOutputInteractorTest.kt
index 7c55f7a91a76..3f1b3a6e5ee9 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioOutputInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioOutputInteractorTest.kt
@@ -38,7 +38,6 @@ import com.android.systemui.volume.localMediaRepository
import com.android.systemui.volume.mediaControllerRepository
import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.TestMediaDevicesFactory
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -51,7 +50,6 @@ import org.mockito.kotlin.whenever
private const val builtInDeviceName = "This phone"
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
@SmallTest
@TestableLooper.RunWithLooper(setAsMainLooper = true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractorTest.kt
index 09d6ac6589ed..1b4d7d02ae1c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractorTest.kt
@@ -31,7 +31,6 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.android.systemui.volume.data.repository.audioSharingRepository
import com.google.common.truth.Truth
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -40,7 +39,6 @@ import org.junit.runner.RunWith
import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
@SmallTest
class AudioSharingInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioVolumeInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioVolumeInteractorTest.kt
index 1ea8a6b8d9e5..35ad3a24e971 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioVolumeInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioVolumeInteractorTest.kt
@@ -32,14 +32,12 @@ import com.android.systemui.statusbar.policy.data.repository.zenModeRepository
import com.android.systemui.testKosmos
import com.android.systemui.volume.data.repository.audioRepository
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
@SmallTest
class AudioVolumeInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/VolumeDialogInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/VolumeDialogInteractorTest.kt
index 5c735e3c7842..784ff9aea35d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/VolumeDialogInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/VolumeDialogInteractorTest.kt
@@ -23,14 +23,12 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class VolumeDialogInteractorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/startable/AudioModeLoggerStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/startable/AudioModeLoggerStartableTest.kt
index 89acbc8f1abd..bbcbac7114a8 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/startable/AudioModeLoggerStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/startable/AudioModeLoggerStartableTest.kt
@@ -29,7 +29,6 @@ import com.android.systemui.volume.data.repository.audioRepository
import com.android.systemui.volume.domain.interactor.audioModeInteractor
import com.android.systemui.volume.panel.ui.VolumePanelUiEvent
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -39,7 +38,6 @@ import org.junit.runner.RunWith
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
@SmallTest
class AudioModeLoggerStartableTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/data/repository/AncSliceRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/data/repository/AncSliceRepositoryTest.kt
index 9a952742f735..3c9e45c6bbb0 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/data/repository/AncSliceRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/data/repository/AncSliceRepositoryTest.kt
@@ -28,7 +28,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.volume.panel.component.anc.FakeSliceFactory
import com.android.systemui.volume.panel.component.anc.sliceViewManager
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -38,7 +37,6 @@ import org.mockito.kotlin.any
import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/domain/AncAvailabilityCriteriaTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/domain/AncAvailabilityCriteriaTest.kt
index 8d052fe12a5a..1bb23f656696 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/domain/AncAvailabilityCriteriaTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/domain/AncAvailabilityCriteriaTest.kt
@@ -36,14 +36,12 @@ import com.android.systemui.volume.panel.component.anc.ancSliceRepository
import com.android.systemui.volume.panel.component.anc.sliceViewManager
import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.TestMediaDevicesFactory
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/domain/interactor/AncSliceInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/domain/interactor/AncSliceInteractorTest.kt
index 741671e6a8a3..b6590592cccc 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/domain/interactor/AncSliceInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/domain/interactor/AncSliceInteractorTest.kt
@@ -32,14 +32,12 @@ import com.android.systemui.volume.panel.component.anc.ancSliceRepository
import com.android.systemui.volume.panel.component.anc.domain.model.AncSlices
import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.TestMediaDevicesFactory
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/bottombar/ui/viewmodel/BottomBarViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/bottombar/ui/viewmodel/BottomBarViewModelTest.kt
index 254a967e480e..9055a117549c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/bottombar/ui/viewmodel/BottomBarViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/bottombar/ui/viewmodel/BottomBarViewModelTest.kt
@@ -34,7 +34,6 @@ import com.android.systemui.volume.panel.data.repository.volumePanelGlobalStateR
import com.android.systemui.volume.panel.ui.VolumePanelUiEvent
import com.android.systemui.volume.panel.ui.viewmodel.volumePanelViewModel
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Rule
@@ -45,7 +44,6 @@ import org.mockito.Captor
import org.mockito.Mockito.verify
import org.mockito.junit.MockitoJUnit
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class BottomBarViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/captioning/ui/viewmodel/CaptioningViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/captioning/ui/viewmodel/CaptioningViewModelTest.kt
index cb6dc193394e..7b8dc18a65d4 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/captioning/ui/viewmodel/CaptioningViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/captioning/ui/viewmodel/CaptioningViewModelTest.kt
@@ -27,14 +27,12 @@ import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class CaptioningViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteriaTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteriaTest.kt
deleted file mode 100644
index d0cc56860ce8..000000000000
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteriaTest.kt
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2025 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.volume.panel.component.mediaoutput.domain
-
-import android.content.mockedContext
-import android.content.packageManager
-import android.content.pm.PackageManager.FEATURE_PC
-import android.testing.TestableLooper
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.android.systemui.SysuiTestCase
-import com.android.systemui.kosmos.collectLastValue
-import com.android.systemui.kosmos.runTest
-import com.android.systemui.kosmos.testScope
-import com.android.systemui.testKosmos
-import com.android.systemui.util.mockito.whenever
-import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-
-@OptIn(ExperimentalCoroutinesApi::class)
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-@TestableLooper.RunWithLooper(setAsMainLooper = true)
-class MediaOutputAvailabilityCriteriaTest : SysuiTestCase() {
-
- private val kosmos = testKosmos()
- private val scope = kosmos.testScope
-
- private lateinit var underTest: MediaOutputAvailabilityCriteria
-
- @Before
- fun setup() {
- with(kosmos) {
- underTest = MediaOutputAvailabilityCriteria(kosmos.mockedContext, scope.backgroundScope)
- }
- }
-
- @Test
- fun isDesktop_unavailable() =
- kosmos.runTest {
- whenever(mockedContext.getPackageManager()).thenReturn(packageManager)
- whenever(packageManager.hasSystemFeature(FEATURE_PC)).thenReturn(true)
-
- val isAvailable by collectLastValue(underTest.isAvailable())
-
- assertThat(isAvailable).isFalse()
- }
-
- @Test
- fun notIsDesktop_available() =
- kosmos.runTest {
- whenever(mockedContext.getPackageManager()).thenReturn(packageManager)
- whenever(packageManager.hasSystemFeature(FEATURE_PC)).thenReturn(false)
-
- val isAvailable by collectLastValue(underTest.isAvailable())
-
- assertThat(isAvailable).isTrue()
- }
-}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaDeviceSessionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaDeviceSessionInteractorTest.kt
index 46df0c227f1c..3bf112a84403 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaDeviceSessionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaDeviceSessionInteractorTest.kt
@@ -30,14 +30,12 @@ import com.android.systemui.volume.mediaOutputInteractor
import com.android.systemui.volume.panel.shared.model.filterData
import com.android.systemui.volume.remoteMediaController
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputComponentInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputComponentInteractorTest.kt
index 449dc20656b7..a2dd1e7df431 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputComponentInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputComponentInteractorTest.kt
@@ -41,7 +41,6 @@ import com.android.systemui.volume.mediaControllerRepository
import com.android.systemui.volume.panel.component.mediaoutput.domain.model.MediaOutputComponentModel
import com.android.systemui.volume.panel.shared.model.filterData
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -51,7 +50,6 @@ import org.mockito.kotlin.whenever
private const val builtInDeviceName = "This phone"
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputInteractorTest.kt
index 9e86cedb6732..dacf4d4a41e8 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputInteractorTest.kt
@@ -42,14 +42,12 @@ import com.android.systemui.volume.remoteMediaController
import com.android.systemui.volume.remotePlaybackInfo
import com.android.systemui.volume.remotePlaybackStateBuilder
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/MediaOutputViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/MediaOutputViewModelTest.kt
index 86a20dccc8fa..6753ccb1ad04 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/MediaOutputViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/MediaOutputViewModelTest.kt
@@ -37,14 +37,12 @@ import com.android.systemui.volume.mediaControllerRepository
import com.android.systemui.volume.mediaOutputActionsInteractor
import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.mediaOutputComponentInteractor
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/spatial/domain/SpatialAudioAvailabilityCriteriaTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/spatial/domain/SpatialAudioAvailabilityCriteriaTest.kt
index ebc78d864494..4aaecabf71a7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/spatial/domain/SpatialAudioAvailabilityCriteriaTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/spatial/domain/SpatialAudioAvailabilityCriteriaTest.kt
@@ -41,14 +41,12 @@ import com.android.systemui.volume.localMediaRepository
import com.android.systemui.volume.mediaControllerRepository
import com.android.systemui.volume.panel.component.spatial.spatialAudioComponentInteractor
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@RunWithLooper(setAsMainLooper = true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/spatial/domain/interactor/SpatialAudioComponentInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/spatial/domain/interactor/SpatialAudioComponentInteractorTest.kt
index d5566adb1fdc..691d5e35e786 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/spatial/domain/interactor/SpatialAudioComponentInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/spatial/domain/interactor/SpatialAudioComponentInteractorTest.kt
@@ -48,7 +48,6 @@ import com.android.systemui.volume.panel.component.spatial.domain.model.SpatialA
import com.android.systemui.volume.panel.component.spatial.domain.model.SpatialAudioEnabledModel
import com.android.systemui.volume.panel.component.spatial.spatialAudioComponentInteractor
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -56,7 +55,6 @@ import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/volume/domain/interactor/AudioSlidersInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/volume/domain/interactor/AudioSlidersInteractorTest.kt
index 76a1269a1fe9..5a814fcfa621 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/volume/domain/interactor/AudioSlidersInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/volume/domain/interactor/AudioSlidersInteractorTest.kt
@@ -32,14 +32,12 @@ import com.android.systemui.volume.data.repository.audioRepository
import com.android.systemui.volume.data.repository.audioSystemRepository
import com.android.systemui.volume.panel.component.volume.domain.model.SliderType
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModelTest.kt
index b34d7b8ec17d..e484d8090c64 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModelTest.kt
@@ -31,7 +31,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.volume.data.repository.audioSharingRepository
import com.android.systemui.volume.domain.interactor.audioSharingInteractor
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -39,7 +38,6 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.mock
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class AudioSharingStreamSliderViewModelTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/ui/viewmodel/VolumePanelViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/ui/viewmodel/VolumePanelViewModelTest.kt
index fe6c7417032f..25eb3194fffe 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/ui/viewmodel/VolumePanelViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/ui/viewmodel/VolumePanelViewModelTest.kt
@@ -47,7 +47,6 @@ import com.google.common.truth.Truth.assertThat
import java.io.PrintWriter
import java.io.StringWriter
import javax.inject.Provider
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -56,7 +55,6 @@ import org.junit.runner.RunWith
@SmallTest
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class VolumePanelViewModelTest : SysuiTestCase() {
private val kosmos =
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/ui/navigation/VolumeNavigatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/ui/navigation/VolumeNavigatorTest.kt
index 7934b02126bd..dbd50a6f9fc5 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/ui/navigation/VolumeNavigatorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/ui/navigation/VolumeNavigatorTest.kt
@@ -30,7 +30,6 @@ import com.android.systemui.volume.domain.model.VolumePanelRoute
import com.android.systemui.volume.panel.domain.interactor.volumePanelGlobalStateInteractor
import com.android.systemui.volume.panel.ui.viewmodel.volumePanelViewModelFactory
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
@@ -41,7 +40,6 @@ import org.mockito.kotlin.any
import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class VolumeNavigatorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/wallet/controller/WalletContextualLocationsServiceTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/wallet/controller/WalletContextualLocationsServiceTest.kt
index 6f99cd90ffc6..eaf42acb7c5f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/wallet/controller/WalletContextualLocationsServiceTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/wallet/controller/WalletContextualLocationsServiceTest.kt
@@ -33,7 +33,6 @@ import org.mockito.MockitoAnnotations
@RunWith(AndroidJUnit4::class)
@SmallTest
-@kotlinx.coroutines.ExperimentalCoroutinesApi
class WalletContextualLocationsServiceTest : SysuiTestCase() {
@Mock private lateinit var controller: WalletContextualSuggestionsController
private var featureFlags = FakeFeatureFlags()
@@ -49,7 +48,6 @@ class WalletContextualLocationsServiceTest : SysuiTestCase() {
}
@Before
- @kotlinx.coroutines.ExperimentalCoroutinesApi
fun setUp() {
MockitoAnnotations.initMocks(this)
doReturn(fakeWalletCards).whenever(controller).allWalletCards
@@ -70,7 +68,6 @@ class WalletContextualLocationsServiceTest : SysuiTestCase() {
}
@Test
- @kotlinx.coroutines.ExperimentalCoroutinesApi
fun addListener() =
testScope.runTest {
underTest.addWalletCardsUpdatedListenerInternal(listener)
@@ -78,7 +75,6 @@ class WalletContextualLocationsServiceTest : SysuiTestCase() {
}
@Test
- @kotlinx.coroutines.ExperimentalCoroutinesApi
fun addStoreLocations() =
testScope.runTest {
underTest.onWalletContextualLocationsStateUpdatedInternal(ArrayList<String>())
@@ -86,7 +82,6 @@ class WalletContextualLocationsServiceTest : SysuiTestCase() {
}
@Test
- @kotlinx.coroutines.ExperimentalCoroutinesApi
fun updateListenerAndLocationsState() =
testScope.runTest {
// binds to the service and adds a listener
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/wallet/controller/WalletContextualSuggestionsControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/wallet/controller/WalletContextualSuggestionsControllerTest.kt
index 4e44c4a224d4..e5d7f596f1f1 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/wallet/controller/WalletContextualSuggestionsControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/wallet/controller/WalletContextualSuggestionsControllerTest.kt
@@ -37,7 +37,6 @@ import com.android.systemui.util.mockito.nullable
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -51,7 +50,6 @@ import org.mockito.Mockito.never
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class WalletContextualSuggestionsControllerTest : SysuiTestCase() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/wallpapers/data/repository/WallpaperRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/wallpapers/data/repository/WallpaperRepositoryImplTest.kt
index 115edd0d3bb0..d89516dea622 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/wallpapers/data/repository/WallpaperRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/wallpapers/data/repository/WallpaperRepositoryImplTest.kt
@@ -25,23 +25,21 @@ import android.platform.test.annotations.EnableFlags
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.internal.R
-import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
-import com.android.systemui.keyguard.data.repository.FakeKeyguardClockRepository
-import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
+import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
+import com.android.systemui.res.R as SysUIR
import com.android.systemui.shared.Flags as SharedFlags
import com.android.systemui.user.data.model.SelectedUserModel
import com.android.systemui.user.data.model.SelectionStatus
import com.android.systemui.user.data.repository.FakeUserRepository
-import com.android.systemui.wallpapers.data.repository.WallpaperRepositoryImpl.Companion.MAGIC_PORTRAIT_CLASSNAME
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
+import org.junit.Ignore
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.any
@@ -49,16 +47,15 @@ import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class WallpaperRepositoryImplTest : SysuiTestCase() {
private val testDispatcher = StandardTestDispatcher()
private val testScope = TestScope(testDispatcher)
private val userRepository = FakeUserRepository()
- private val keyguardClockRepository = FakeKeyguardClockRepository()
- private val keyguardRepository = FakeKeyguardRepository()
+ private val wallpaperFocalAreaRepository = FakeWallpaperFocalAreaRepository()
private val wallpaperManager: WallpaperManager = mock()
+ private val keyguardTransitionInteractor: KeyguardTransitionInteractor = mock()
private val underTest: WallpaperRepositoryImpl by lazy {
WallpaperRepositoryImpl(
@@ -66,15 +63,19 @@ class WallpaperRepositoryImplTest : SysuiTestCase() {
testDispatcher,
fakeBroadcastDispatcher,
userRepository,
- keyguardRepository,
+ wallpaperFocalAreaRepository,
wallpaperManager,
context,
+ keyguardTransitionInteractor,
)
}
+ lateinit var focalAreaTarget: String
+
@Before
fun setUp() {
whenever(wallpaperManager.isWallpaperSupported).thenReturn(true)
+ focalAreaTarget = context.resources.getString(SysUIR.string.focal_area_target)
}
@Test
@@ -248,17 +249,18 @@ class WallpaperRepositoryImplTest : SysuiTestCase() {
}
@Test
- @EnableFlags(Flags.FLAG_MAGIC_PORTRAIT_WALLPAPERS)
- fun shouldSendNotificationLayout_setMagicPortraitWallpaper_launchSendLayoutJob() =
+ @Ignore("ag/31591766")
+ @EnableFlags(SharedFlags.FLAG_EXTENDED_WALLPAPER_EFFECTS)
+ fun shouldSendNotificationLayout_setExtendedEffectsWallpaper_launchSendLayoutJob() =
testScope.runTest {
val latest by collectLastValue(underTest.shouldSendFocalArea)
- val magicPortraitWallpaper =
+ val extedendEffectsWallpaper =
mock<WallpaperInfo>().apply {
- whenever(this.component)
- .thenReturn(ComponentName(context, MAGIC_PORTRAIT_CLASSNAME))
+ whenever(this.component).thenReturn(ComponentName(context, focalAreaTarget))
}
+
whenever(wallpaperManager.getWallpaperInfoForUser(any()))
- .thenReturn(magicPortraitWallpaper)
+ .thenReturn(extedendEffectsWallpaper)
fakeBroadcastDispatcher.sendIntentToMatchingReceiversOnly(
context,
Intent(Intent.ACTION_WALLPAPER_CHANGED),
@@ -269,13 +271,17 @@ class WallpaperRepositoryImplTest : SysuiTestCase() {
}
@Test
- @EnableFlags(Flags.FLAG_MAGIC_PORTRAIT_WALLPAPERS)
- fun shouldSendNotificationLayout_setNotMagicPortraitWallpaper_cancelSendLayoutJob() =
+ @Ignore("ag/31591766")
+ @EnableFlags(SharedFlags.FLAG_EXTENDED_WALLPAPER_EFFECTS)
+ fun shouldSendNotificationLayout_setNotExtendedEffectsWallpaper_cancelSendLayoutJob() =
testScope.runTest {
val latest by collectLastValue(underTest.shouldSendFocalArea)
- val magicPortraitWallpaper = MAGIC_PORTRAIT_WP
+ val extendedEffectsWallpaper =
+ mock<WallpaperInfo>().apply {
+ whenever(this.component).thenReturn(ComponentName("", focalAreaTarget))
+ }
whenever(wallpaperManager.getWallpaperInfoForUser(any()))
- .thenReturn(magicPortraitWallpaper)
+ .thenReturn(extendedEffectsWallpaper)
fakeBroadcastDispatcher.sendIntentToMatchingReceiversOnly(
context,
Intent(Intent.ACTION_WALLPAPER_CHANGED),
@@ -284,9 +290,7 @@ class WallpaperRepositoryImplTest : SysuiTestCase() {
assertThat(underTest.sendLockscreenLayoutJob).isNotNull()
assertThat(underTest.sendLockscreenLayoutJob!!.isActive).isEqualTo(true)
- val nonMagicPortraitWallpaper = UNSUPPORTED_WP
- whenever(wallpaperManager.getWallpaperInfoForUser(any()))
- .thenReturn(nonMagicPortraitWallpaper)
+ whenever(wallpaperManager.getWallpaperInfoForUser(any())).thenReturn(UNSUPPORTED_WP)
fakeBroadcastDispatcher.sendIntentToMatchingReceiversOnly(
context,
Intent(Intent.ACTION_WALLPAPER_CHANGED),
@@ -303,10 +307,5 @@ class WallpaperRepositoryImplTest : SysuiTestCase() {
val USER_WITH_SUPPORTED_WP = UserInfo(/* id= */ 4, /* name= */ "user4", /* flags= */ 0)
val SUPPORTED_WP =
mock<WallpaperInfo>().apply { whenever(this.supportsAmbientMode()).thenReturn(true) }
-
- val MAGIC_PORTRAIT_WP =
- mock<WallpaperInfo>().apply {
- whenever(this.component).thenReturn(ComponentName("", MAGIC_PORTRAIT_CLASSNAME))
- }
}
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/wallpapers/domain/interactor/WallpaperFocalAreaInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/wallpapers/domain/interactor/WallpaperFocalAreaInteractorTest.kt
new file mode 100644
index 000000000000..cd6e18a69c4d
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/wallpapers/domain/interactor/WallpaperFocalAreaInteractorTest.kt
@@ -0,0 +1,312 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.wallpapers.domain.interactor
+
+import android.content.mockedContext
+import android.content.res.Resources
+import android.graphics.PointF
+import android.graphics.RectF
+import android.util.DisplayMetrics
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.kosmos.currentValue
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.res.R
+import com.android.systemui.shade.data.repository.ShadeRepository
+import com.android.systemui.shade.data.repository.shadeRepository
+import com.android.systemui.statusbar.notification.data.repository.activeNotificationListRepository
+import com.android.systemui.statusbar.notification.data.repository.setActiveNotifs
+import com.android.systemui.statusbar.notification.domain.interactor.activeNotificationsInteractor
+import com.android.systemui.testKosmos
+import com.android.systemui.wallpapers.data.repository.fakeWallpaperFocalAreaRepository
+import com.android.systemui.wallpapers.data.repository.wallpaperFocalAreaRepository
+import com.android.systemui.wallpapers.data.repository.wallpaperRepository
+import com.android.systemui.wallpapers.ui.viewmodel.wallpaperFocalAreaViewModel
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.advanceUntilIdle
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.MockitoAnnotations
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.whenever
+
+@ExperimentalCoroutinesApi
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class WallpaperFocalAreaInteractorTest : SysuiTestCase() {
+ private val kosmos = testKosmos()
+ private val testScope = kosmos.testScope
+ lateinit var shadeRepository: ShadeRepository
+ private lateinit var mockedResources: Resources
+ lateinit var underTest: WallpaperFocalAreaInteractor
+
+ @Before
+ fun setup() {
+ MockitoAnnotations.initMocks(this)
+ mockedResources = mock<Resources>()
+ whenever(kosmos.mockedContext.resources).thenReturn(mockedResources)
+ whenever(
+ mockedResources.getFloat(
+ Resources.getSystem()
+ .getIdentifier(
+ /* name= */ "config_wallpaperMaxScale",
+ /* defType= */ "dimen",
+ /* defPackage= */ "android",
+ )
+ )
+ )
+ .thenReturn(2f)
+ underTest =
+ WallpaperFocalAreaInteractor(
+ applicationScope = testScope.backgroundScope,
+ context = kosmos.mockedContext,
+ wallpaperFocalAreaRepository = kosmos.fakeWallpaperFocalAreaRepository,
+ shadeRepository = kosmos.shadeRepository,
+ activeNotificationsInteractor = kosmos.activeNotificationsInteractor,
+ wallpaperRepository = kosmos.wallpaperRepository,
+ )
+ }
+
+ private fun overrideMockedResources(overrideResources: OverrideResources) {
+ val displayMetrics =
+ DisplayMetrics().apply {
+ widthPixels = overrideResources.screenWidth
+ heightPixels = overrideResources.screenHeight
+ density = 2f
+ }
+ whenever(mockedResources.displayMetrics).thenReturn(displayMetrics)
+ whenever(mockedResources.getBoolean(R.bool.center_align_focal_area_shape))
+ .thenReturn(overrideResources.centerAlignFocalArea)
+ }
+
+ @Test
+ fun focalAreaBounds_withoutNotifications_inHandheldDevices() =
+ testScope.runTest {
+ overrideMockedResources(
+ OverrideResources(
+ screenWidth = 1000,
+ screenHeight = 2000,
+ centerAlignFocalArea = false,
+ )
+ )
+ val bounds by collectLastValue(underTest.wallpaperFocalAreaBounds)
+ kosmos.shadeRepository.setShadeLayoutWide(false)
+ kosmos.activeNotificationListRepository.setActiveNotifs(0)
+ kosmos.wallpaperFocalAreaRepository.setShortcutAbsoluteTop(1800F)
+ kosmos.wallpaperFocalAreaRepository.setNotificationDefaultTop(400F)
+ kosmos.wallpaperFocalAreaRepository.setNotificationStackAbsoluteBottom(400F)
+
+ assertThat(bounds).isEqualTo(RectF(250f, 700F, 750F, 1400F))
+ }
+
+ @Test
+ fun focalAreaBounds_withNotifications_inHandheldDevices() =
+ testScope.runTest {
+ overrideMockedResources(
+ OverrideResources(
+ screenWidth = 1000,
+ screenHeight = 2000,
+ centerAlignFocalArea = false,
+ )
+ )
+ val bounds by collectLastValue(underTest.wallpaperFocalAreaBounds)
+ kosmos.shadeRepository.setShadeLayoutWide(false)
+ kosmos.activeNotificationListRepository.setActiveNotifs(1)
+ kosmos.wallpaperFocalAreaRepository.setShortcutAbsoluteTop(1800F)
+ kosmos.wallpaperFocalAreaRepository.setNotificationDefaultTop(400F)
+ kosmos.wallpaperFocalAreaRepository.setNotificationStackAbsoluteBottom(600F)
+
+ assertThat(bounds).isEqualTo(RectF(250f, 800F, 750F, 1400F))
+ }
+
+ @Test
+ fun focalAreaBounds_withNotifications_inUnfoldLandscape() =
+ testScope.runTest {
+ overrideMockedResources(
+ OverrideResources(
+ screenWidth = 2000,
+ screenHeight = 1600,
+ centerAlignFocalArea = false,
+ )
+ )
+ val bounds by collectLastValue(underTest.wallpaperFocalAreaBounds)
+ kosmos.shadeRepository.setShadeLayoutWide(true)
+ kosmos.activeNotificationListRepository.setActiveNotifs(1)
+ kosmos.wallpaperFocalAreaRepository.setShortcutAbsoluteTop(1400F)
+ kosmos.wallpaperFocalAreaRepository.setNotificationDefaultTop(400F)
+ kosmos.wallpaperFocalAreaRepository.setNotificationStackAbsoluteBottom(600F)
+
+ assertThat(bounds).isEqualTo(RectF(500f, 600F, 1000F, 1100F))
+ }
+
+ @Test
+ fun focalAreaBounds_withoutNotifications_inUnfoldLandscape() =
+ testScope.runTest {
+ overrideMockedResources(
+ OverrideResources(
+ screenWidth = 2000,
+ screenHeight = 1600,
+ centerAlignFocalArea = false,
+ )
+ )
+ val bounds by collectLastValue(underTest.wallpaperFocalAreaBounds)
+ kosmos.shadeRepository.setShadeLayoutWide(true)
+ kosmos.activeNotificationListRepository.setActiveNotifs(0)
+ kosmos.wallpaperFocalAreaRepository.setShortcutAbsoluteTop(1400F)
+ kosmos.wallpaperFocalAreaRepository.setNotificationDefaultTop(400F)
+ kosmos.wallpaperFocalAreaRepository.setNotificationStackAbsoluteBottom(400F)
+
+ assertThat(bounds).isEqualTo(RectF(1000f, 600F, 1500F, 1100F))
+ }
+
+ @Test
+ fun focalAreaBounds_withNotifications_inUnfoldPortrait() =
+ testScope.runTest {
+ overrideMockedResources(
+ OverrideResources(
+ screenWidth = 1600,
+ screenHeight = 2000,
+ centerAlignFocalArea = false,
+ )
+ )
+ val bounds by collectLastValue(underTest.wallpaperFocalAreaBounds)
+ kosmos.shadeRepository.setShadeLayoutWide(false)
+ kosmos.activeNotificationListRepository.setActiveNotifs(1)
+ kosmos.wallpaperFocalAreaRepository.setShortcutAbsoluteTop(1800F)
+ kosmos.wallpaperFocalAreaRepository.setNotificationDefaultTop(400F)
+ kosmos.wallpaperFocalAreaRepository.setNotificationStackAbsoluteBottom(600F)
+
+ assertThat(bounds).isEqualTo(RectF(400f, 800F, 1200F, 1400F))
+ }
+
+ @Test
+ fun focalAreaBounds_withoutNotifications_inUnfoldPortrait() =
+ testScope.runTest {
+ overrideMockedResources(
+ OverrideResources(
+ screenWidth = 1600,
+ screenHeight = 2000,
+ centerAlignFocalArea = false,
+ )
+ )
+ val bounds by collectLastValue(underTest.wallpaperFocalAreaBounds)
+ kosmos.shadeRepository.setShadeLayoutWide(false)
+ kosmos.activeNotificationListRepository.setActiveNotifs(0)
+ kosmos.wallpaperFocalAreaRepository.setShortcutAbsoluteTop(1800F)
+ kosmos.wallpaperFocalAreaRepository.setNotificationDefaultTop(400F)
+ kosmos.wallpaperFocalAreaRepository.setNotificationStackAbsoluteBottom(600F)
+
+ assertThat(bounds).isEqualTo(RectF(400f, 800F, 1200F, 1400F))
+ }
+
+ @Test
+ fun focalAreaBounds_withNotifications_inTabletLandscape() =
+ testScope.runTest {
+ overrideMockedResources(
+ OverrideResources(
+ screenWidth = 3000,
+ screenHeight = 2000,
+ centerAlignFocalArea = true,
+ )
+ )
+ val bounds by collectLastValue(underTest.wallpaperFocalAreaBounds)
+ kosmos.shadeRepository.setShadeLayoutWide(true)
+ kosmos.activeNotificationListRepository.setActiveNotifs(1)
+ kosmos.wallpaperFocalAreaRepository.setShortcutAbsoluteTop(1800F)
+ kosmos.wallpaperFocalAreaRepository.setNotificationDefaultTop(200F)
+ kosmos.wallpaperFocalAreaRepository.setNotificationStackAbsoluteBottom(200F)
+
+ assertThat(bounds).isEqualTo(RectF(1000f, 600F, 2000F, 1400F))
+ }
+
+ @Test
+ fun focalAreaBounds_withoutNotifications_inTabletLandscape() =
+ testScope.runTest {
+ overrideMockedResources(
+ OverrideResources(
+ screenWidth = 3000,
+ screenHeight = 2000,
+ centerAlignFocalArea = true,
+ )
+ )
+ val bounds by collectLastValue(underTest.wallpaperFocalAreaBounds)
+ kosmos.shadeRepository.setShadeLayoutWide(true)
+ kosmos.activeNotificationListRepository.setActiveNotifs(0)
+ kosmos.wallpaperFocalAreaRepository.setShortcutAbsoluteTop(1800F)
+ kosmos.wallpaperFocalAreaRepository.setNotificationDefaultTop(400F)
+ kosmos.wallpaperFocalAreaRepository.setNotificationStackAbsoluteBottom(400F)
+
+ assertThat(bounds).isEqualTo(RectF(1000f, 600F, 2000F, 1400F))
+ }
+
+ @Test
+ fun onTap_inFocalBounds() =
+ testScope.runTest {
+ kosmos.wallpaperFocalAreaRepository.setTapPosition(PointF(0F, 0F))
+ overrideMockedResources(
+ OverrideResources(
+ screenWidth = 1000,
+ screenHeight = 2000,
+ centerAlignFocalArea = false,
+ )
+ )
+ kosmos.wallpaperFocalAreaRepository.setWallpaperFocalAreaBounds(
+ RectF(250f, 700F, 750F, 1400F)
+ )
+ advanceUntilIdle()
+ assertThat(currentValue(kosmos.wallpaperFocalAreaRepository.wallpaperFocalAreaBounds))
+ .isEqualTo(RectF(250f, 700F, 750F, 1400F))
+ underTest.setTapPosition(750F, 750F)
+ assertThat(
+ currentValue(kosmos.wallpaperFocalAreaRepository.wallpaperFocalAreaTapPosition)
+ )
+ .isEqualTo(PointF(625F, 875F))
+ }
+
+ @Test
+ fun onTap_outFocalBounds() =
+ testScope.runTest {
+ kosmos.wallpaperFocalAreaRepository.setTapPosition(PointF(0F, 0F))
+ overrideMockedResources(
+ OverrideResources(
+ screenWidth = 1000,
+ screenHeight = 2000,
+ centerAlignFocalArea = false,
+ )
+ )
+ kosmos.wallpaperFocalAreaViewModel = mock()
+ kosmos.wallpaperFocalAreaRepository.setWallpaperFocalAreaBounds(
+ RectF(500F, 500F, 1000F, 1000F)
+ )
+ underTest.setTapPosition(250F, 250F)
+ assertThat(
+ currentValue(kosmos.wallpaperFocalAreaRepository.wallpaperFocalAreaTapPosition)
+ )
+ .isEqualTo(PointF(0F, 0F))
+ }
+
+ data class OverrideResources(
+ val screenWidth: Int,
+ val screenHeight: Int,
+ val centerAlignFocalArea: Boolean,
+ )
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/window/domain/interactor/WindowRootViewBlurInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/window/domain/interactor/WindowRootViewBlurInteractorTest.kt
index bc16bec5d5cd..9ca2aea4e963 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/window/domain/interactor/WindowRootViewBlurInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/window/domain/interactor/WindowRootViewBlurInteractorTest.kt
@@ -20,16 +20,13 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.bouncer.data.repository.fakeKeyguardBouncerRepository
-import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class WindowRootViewBlurInteractorTest : SysuiTestCase() {
@@ -39,18 +36,6 @@ class WindowRootViewBlurInteractorTest : SysuiTestCase() {
val underTest by lazy { kosmos.windowRootViewBlurInteractor }
@Test
- fun bouncerBlurIsAppliedImmediately() =
- testScope.runTest {
- val blurRadius by collectLastValue(underTest.blurRadius)
- val isBlurOpaque by collectLastValue(underTest.isBlurOpaque)
-
- underTest.requestBlurForBouncer(10)
-
- assertThat(blurRadius).isEqualTo(10)
- assertThat(isBlurOpaque).isFalse()
- }
-
- @Test
fun shadeBlurIsNotAppliedWhenBouncerBlurIsActive() =
testScope.runTest {
kosmos.fakeKeyguardBouncerRepository.setPrimaryShow(true)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/window/ui/viewmodel/WindowRootViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/window/ui/viewmodel/WindowRootViewModelTest.kt
index b97fe5725285..61ee5e04afd9 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/window/ui/viewmodel/WindowRootViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/window/ui/viewmodel/WindowRootViewModelTest.kt
@@ -24,14 +24,12 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.lifecycle.activateIn
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class WindowRootViewModelTest : SysuiTestCase() {
@@ -48,12 +46,14 @@ class WindowRootViewModelTest : SysuiTestCase() {
@Test
fun bouncerTransitionChangesWindowBlurRadius() =
testScope.runTest {
- val blurState by collectLastValue(underTest.blurState)
+ val blurRadius by collectLastValue(underTest.blurRadius)
+ val isBlurOpaque by collectLastValue(underTest.isBlurOpaque)
runCurrent()
kosmos.fakeBouncerTransitions.first().windowBlurRadius.value = 30.0f
runCurrent()
- assertThat(blurState).isEqualTo(BlurState(radius = 30, isOpaque = false))
+ assertThat(blurRadius).isEqualTo(30)
+ assertThat(isBlurOpaque).isEqualTo(false)
}
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/wmshell/TestableBubbleController.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/wmshell/TestableBubbleController.java
index 75c174229564..ab6fbc3f47a2 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/wmshell/TestableBubbleController.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/wmshell/TestableBubbleController.java
@@ -30,7 +30,7 @@ import com.android.wm.shell.bubbles.BubbleData;
import com.android.wm.shell.bubbles.BubbleDataRepository;
import com.android.wm.shell.bubbles.BubbleLogger;
import com.android.wm.shell.bubbles.BubblePositioner;
-import com.android.wm.shell.bubbles.properties.BubbleProperties;
+import com.android.wm.shell.bubbles.ResizabilityChecker;
import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.DisplayImeController;
import com.android.wm.shell.common.DisplayInsetsController;
@@ -82,14 +82,14 @@ public class TestableBubbleController extends BubbleController {
Transitions transitions,
SyncTransactionQueue syncQueue,
IWindowManager wmService,
- BubbleProperties bubbleProperties) {
+ ResizabilityChecker resizabilityChecker) {
super(context, shellInit, shellCommandHandler, shellController, data, Runnable::run,
floatingContentCoordinator, dataRepository, statusBarService, windowManager,
displayInsetsController, displayImeController, userManager, launcherApps,
bubbleLogger, taskStackListener, shellTaskOrganizer, positioner, displayController,
oneHandedOptional, dragAndDropController, shellMainExecutor, shellMainHandler,
new SyncExecutor(), taskViewRepository, taskViewTransitions, transitions,
- syncQueue, wmService, bubbleProperties);
+ syncQueue, wmService, resizabilityChecker);
setInflateSynchronously(true);
onInit();
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/wmshell/WMShellTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/wmshell/WMShellTest.kt
index 61136577dad8..f362d80150e5 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/wmshell/WMShellTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/wmshell/WMShellTest.kt
@@ -65,7 +65,6 @@ import com.android.wm.shell.splitscreen.SplitScreen
import com.android.wm.shell.sysui.ShellInterface
import java.util.Optional
import java.util.concurrent.Executor
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -82,7 +81,6 @@ import org.mockito.MockitoAnnotations
*
* Build/Install/Run: atest SystemUITests:WMShellTest
*/
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class WMShellTest : SysuiTestCase() {
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/ActivityStarter.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/ActivityStarter.java
index ca98cbf20c3a..18891dba4b0d 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/ActivityStarter.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/ActivityStarter.java
@@ -25,6 +25,8 @@ import android.view.View;
import com.android.systemui.animation.ActivityTransitionAnimator;
import com.android.systemui.plugins.annotations.ProvidesInterface;
+import kotlinx.coroutines.CoroutineScope;
+
/**
* An interface to start activities. This is used as a callback from the views to
* {@link PhoneStatusBar} to allow custom handling for starting the activity, i.e. dismissing the
@@ -37,11 +39,12 @@ public interface ActivityStarter {
/**
* Registers the given {@link ActivityTransitionAnimator.ControllerFactory} for launching and
* closing transitions matching the {@link ActivityTransitionAnimator.TransitionCookie} and the
- * {@link ComponentName} that it contains.
+ * {@link ComponentName} that it contains, within the given {@link CoroutineScope}.
*/
void registerTransition(
ActivityTransitionAnimator.TransitionCookie cookie,
- ActivityTransitionAnimator.ControllerFactory controllerFactory);
+ ActivityTransitionAnimator.ControllerFactory controllerFactory,
+ CoroutineScope scope);
/**
* Unregisters the {@link ActivityTransitionAnimator.ControllerFactory} previously registered
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockAnimations.kt b/packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockAnimations.kt
index 2df14a86e77c..77c18eac289c 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockAnimations.kt
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockAnimations.kt
@@ -58,4 +58,7 @@ interface ClockAnimations {
* 0.0 -> clock is scaled down in the shade; previewRatio is previewSize / screenSize
*/
fun onPickerCarouselSwiping(swipingFraction: Float)
+
+ /** Runs when an animation when the view is tapped on the lockscreen */
+ fun onFidgetTap(x: Float, y: Float)
}
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockLogger.kt b/packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockLogger.kt
index 6a9bbca1d4e1..9a837446a802 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockLogger.kt
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockLogger.kt
@@ -90,6 +90,13 @@ class ClockLogger(private val view: View?, buffer: MessageBuffer, tag: String) :
}
}
+ fun animateFidget(x: Float, y: Float) {
+ d({ "animateFidget($str1, $str2)" }) {
+ str1 = x.toString()
+ str2 = y.toString()
+ }
+ }
+
companion object {
// Used when MessageBuffers are not provided by the host application
val DEFAULT_MESSAGE_BUFFER = LogcatOnlyMessageBuffer(LogLevel.INFO)
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockPickerConfig.kt b/packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockPickerConfig.kt
index 1bc9367ce3c5..6e4dc1485c7b 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockPickerConfig.kt
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockPickerConfig.kt
@@ -62,12 +62,11 @@ data class ClockFontAxis(
fun toSetting() = ClockFontAxisSetting(key, currentValue)
companion object {
- fun merge(
- fontAxes: List<ClockFontAxis>,
- axisSettings: List<ClockFontAxisSetting>,
+ fun List<ClockFontAxis>.merge(
+ axisSettings: List<ClockFontAxisSetting>
): List<ClockFontAxis> {
val result = mutableListOf<ClockFontAxis>()
- for (axis in fontAxes) {
+ for (axis in this) {
val setting = axisSettings.firstOrNull { axis.key == it.key }
val output = setting?.let { axis.copy(currentValue = it.value) } ?: axis
result.add(output)
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockSettings.kt b/packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockSettings.kt
index 6128c00f3843..e7b36626a810 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockSettings.kt
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockSettings.kt
@@ -98,13 +98,20 @@ data class ClockFontAxisSetting(
return result
}
- fun toFVar(settings: List<ClockFontAxisSetting>): String {
+ fun List<ClockFontAxisSetting>.toFVar(): String {
val sb = StringBuilder()
- for (axis in settings) {
+ for (axis in this) {
if (sb.length > 0) sb.append(", ")
sb.append("'${axis.key}' ${axis.value.toInt()}")
}
return sb.toString()
}
+
+ fun List<ClockFontAxisSetting>.replace(
+ replacements: List<ClockFontAxisSetting>
+ ): List<ClockFontAxisSetting> {
+ var remaining = this.filterNot { lhs -> replacements.any { rhs -> lhs.key == rhs.key } }
+ return remaining + replacements
+ }
}
}
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/TileDetailsViewModel.kt b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/TileDetailsViewModel.kt
index eab7d7913129..be0362fd7481 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/TileDetailsViewModel.kt
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/TileDetailsViewModel.kt
@@ -16,17 +16,10 @@
package com.android.systemui.plugins.qs
-import androidx.compose.runtime.Composable
-
/**
* The base view model class for rendering the Tile's TileDetailsView.
*/
abstract class TileDetailsViewModel {
-
- // The view content of this tile details view.
- @Composable
- abstract fun GetContentView()
-
// The callback when the settings button is clicked. Currently this is the same as the on tile
// long press callback
abstract fun clickOnSettingsButton()
diff --git a/packages/SystemUI/pods/com/android/systemui/util/settings/SettingsProxy.kt b/packages/SystemUI/pods/com/android/systemui/util/settings/SettingsProxy.kt
index 154d3cc9eda1..597276a66dfa 100644
--- a/packages/SystemUI/pods/com/android/systemui/util/settings/SettingsProxy.kt
+++ b/packages/SystemUI/pods/com/android/systemui/util/settings/SettingsProxy.kt
@@ -24,12 +24,10 @@ import androidx.annotation.AnyThread
import androidx.annotation.WorkerThread
import com.android.app.tracing.TraceUtils.trace
import com.android.app.tracing.coroutines.launchTraced as launch
-import com.android.app.tracing.coroutines.nameCoroutine
-import kotlin.coroutines.CoroutineContext
-import kotlin.coroutines.EmptyCoroutineContext
+import com.android.app.tracing.coroutines.withContextTraced as withContext
+import kotlin.coroutines.coroutineContext
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.withContext
/**
* Used to interact with mainly with Settings.Global, but can also be used for Settings.System and
@@ -53,9 +51,16 @@ interface SettingsProxy {
val settingsScope: CoroutineScope
@OptIn(ExperimentalStdlibApi::class)
- fun settingsDispatcherContext(name: String): CoroutineContext {
- return (settingsScope.coroutineContext[CoroutineDispatcher] ?: EmptyCoroutineContext) +
- nameCoroutine(name)
+ suspend fun executeOnSettingsScopeDispatcher(name: String, block: () -> Unit) {
+ val settingsDispatcher = settingsScope.coroutineContext[CoroutineDispatcher]
+ if (
+ settingsDispatcher != null &&
+ settingsDispatcher != coroutineContext[CoroutineDispatcher]
+ ) {
+ withContext(name, settingsDispatcher) { block() }
+ } else {
+ trace(name) { block() }
+ }
}
/**
@@ -87,7 +92,7 @@ interface SettingsProxy {
* wish to synchronize execution.
*/
suspend fun registerContentObserver(name: String, settingsObserver: ContentObserver) {
- withContext(settingsDispatcherContext("registerContentObserver-A")) {
+ executeOnSettingsScopeDispatcher("registerContentObserver-A") {
registerContentObserverSync(getUriFor(name), settingsObserver)
}
}
@@ -139,7 +144,7 @@ interface SettingsProxy {
* wish to synchronize execution.
*/
suspend fun registerContentObserver(uri: Uri, settingsObserver: ContentObserver) {
- withContext(settingsDispatcherContext("registerContentObserver-B")) {
+ executeOnSettingsScopeDispatcher("registerContentObserver-B") {
registerContentObserverSync(uri, settingsObserver)
}
}
@@ -197,7 +202,7 @@ interface SettingsProxy {
notifyForDescendants: Boolean,
settingsObserver: ContentObserver,
) {
- withContext(settingsDispatcherContext("registerContentObserver-C")) {
+ executeOnSettingsScopeDispatcher("registerContentObserver-C") {
registerContentObserverSync(getUriFor(name), notifyForDescendants, settingsObserver)
}
}
@@ -266,7 +271,7 @@ interface SettingsProxy {
notifyForDescendants: Boolean,
settingsObserver: ContentObserver,
) {
- withContext(settingsDispatcherContext("registerContentObserver-D")) {
+ executeOnSettingsScopeDispatcher("registerContentObserver-D") {
registerContentObserverSync(uri, notifyForDescendants, settingsObserver)
}
}
@@ -326,7 +331,7 @@ interface SettingsProxy {
* async block if they wish to synchronize execution.
*/
suspend fun unregisterContentObserver(settingsObserver: ContentObserver) {
- withContext(settingsDispatcherContext("unregisterContentObserver")) {
+ executeOnSettingsScopeDispatcher("unregisterContentObserver") {
unregisterContentObserverSync(settingsObserver)
}
}
diff --git a/packages/SystemUI/pods/com/android/systemui/util/settings/UserSettingsProxy.kt b/packages/SystemUI/pods/com/android/systemui/util/settings/UserSettingsProxy.kt
index 1a5517059ca4..3ccac9e374a2 100644
--- a/packages/SystemUI/pods/com/android/systemui/util/settings/UserSettingsProxy.kt
+++ b/packages/SystemUI/pods/com/android/systemui/util/settings/UserSettingsProxy.kt
@@ -28,7 +28,6 @@ import com.android.systemui.util.settings.SettingsProxy.Companion.parseFloat
import com.android.systemui.util.settings.SettingsProxy.Companion.parseFloatOrThrow
import com.android.systemui.util.settings.SettingsProxy.Companion.parseLongOrThrow
import com.android.systemui.util.settings.SettingsProxy.Companion.parseLongOrUseDefault
-import kotlinx.coroutines.withContext
/**
* Used to interact with per-user Settings.Secure and Settings.System settings (but not
@@ -71,7 +70,7 @@ interface UserSettingsProxy : SettingsProxy {
}
override suspend fun registerContentObserver(uri: Uri, settingsObserver: ContentObserver) {
- withContext(settingsDispatcherContext("registerContentObserver-A")) {
+ executeOnSettingsScopeDispatcher("registerContentObserver-A") {
registerContentObserverForUserSync(uri, settingsObserver, userId)
}
}
@@ -96,7 +95,7 @@ interface UserSettingsProxy : SettingsProxy {
notifyForDescendants: Boolean,
settingsObserver: ContentObserver,
) {
- withContext(settingsDispatcherContext("registerContentObserver-B")) {
+ executeOnSettingsScopeDispatcher("registerContentObserver-B") {
registerContentObserverForUserSync(uri, notifyForDescendants, settingsObserver, userId)
}
}
@@ -141,7 +140,7 @@ interface UserSettingsProxy : SettingsProxy {
settingsObserver: ContentObserver,
userHandle: Int,
) {
- withContext(settingsDispatcherContext("registerContentObserverForUser-A")) {
+ executeOnSettingsScopeDispatcher("registerContentObserverForUser-A") {
registerContentObserverForUserSync(name, settingsObserver, userHandle)
}
}
@@ -157,7 +156,11 @@ interface UserSettingsProxy : SettingsProxy {
userHandle: Int,
) =
settingsScope.launch("registerContentObserverForUserAsync-A") {
- registerContentObserverForUserSync(getUriFor(name), settingsObserver, userHandle)
+ try {
+ registerContentObserverForUserSync(getUriFor(name), settingsObserver, userHandle)
+ } catch (e: SecurityException) {
+ throw SecurityException("registerContentObserverForUserAsync-A, name: $name", e)
+ }
}
/** Convenience wrapper around [ContentResolver.registerContentObserver] */
@@ -182,7 +185,7 @@ interface UserSettingsProxy : SettingsProxy {
settingsObserver: ContentObserver,
userHandle: Int,
) {
- withContext(settingsDispatcherContext("registerContentObserverForUser-B")) {
+ executeOnSettingsScopeDispatcher("registerContentObserverForUser-B") {
registerContentObserverForUserSync(uri, settingsObserver, userHandle)
}
}
@@ -198,7 +201,11 @@ interface UserSettingsProxy : SettingsProxy {
userHandle: Int,
) =
settingsScope.launch("registerContentObserverForUserAsync-B") {
- registerContentObserverForUserSync(uri, settingsObserver, userHandle)
+ try {
+ registerContentObserverForUserSync(uri, settingsObserver, userHandle)
+ } catch (e: SecurityException) {
+ throw SecurityException("registerContentObserverForUserAsync-B, uri: $uri", e)
+ }
}
/**
@@ -215,7 +222,11 @@ interface UserSettingsProxy : SettingsProxy {
@WorkerThread registered: Runnable,
) =
settingsScope.launch("registerContentObserverForUserAsync-C") {
- registerContentObserverForUserSync(uri, settingsObserver, userHandle)
+ try {
+ registerContentObserverForUserSync(uri, settingsObserver, userHandle)
+ } catch (e: SecurityException) {
+ throw SecurityException("registerContentObserverForUserAsync-C, uri: $uri", e)
+ }
registered.run()
}
@@ -252,7 +263,7 @@ interface UserSettingsProxy : SettingsProxy {
settingsObserver: ContentObserver,
userHandle: Int,
) {
- withContext(settingsDispatcherContext("registerContentObserverForUser-C")) {
+ executeOnSettingsScopeDispatcher("registerContentObserverForUser-C") {
registerContentObserverForUserSync(
name,
notifyForDescendants,
@@ -274,12 +285,16 @@ interface UserSettingsProxy : SettingsProxy {
userHandle: Int,
) {
settingsScope.launch("registerContentObserverForUserAsync-D") {
- registerContentObserverForUserSync(
- getUriFor(name),
- notifyForDescendants,
- settingsObserver,
- userHandle,
- )
+ try {
+ registerContentObserverForUserSync(
+ getUriFor(name),
+ notifyForDescendants,
+ settingsObserver,
+ userHandle,
+ )
+ } catch (e: SecurityException) {
+ throw SecurityException("registerContentObserverForUserAsync-D, name: $name", e)
+ }
}
}
@@ -316,7 +331,7 @@ interface UserSettingsProxy : SettingsProxy {
settingsObserver: ContentObserver,
userHandle: Int,
) {
- withContext(settingsDispatcherContext("registerContentObserverForUser-D")) {
+ executeOnSettingsScopeDispatcher("registerContentObserverForUser-D") {
registerContentObserverForUserSync(
uri,
notifyForDescendants,
@@ -338,12 +353,16 @@ interface UserSettingsProxy : SettingsProxy {
userHandle: Int,
) =
settingsScope.launch("registerContentObserverForUserAsync-E") {
- registerContentObserverForUserSync(
- uri,
- notifyForDescendants,
- settingsObserver,
- userHandle,
- )
+ try {
+ registerContentObserverForUserSync(
+ uri,
+ notifyForDescendants,
+ settingsObserver,
+ userHandle,
+ )
+ } catch (e: SecurityException) {
+ throw SecurityException("registerContentObserverForUserAsync-E, uri: $uri", e)
+ }
}
/**
diff --git a/packages/SystemUI/res-keyguard/values-ar/strings.xml b/packages/SystemUI/res-keyguard/values-ar/strings.xml
index fe9036bb2252..1a49bbb27c8f 100644
--- a/packages/SystemUI/res-keyguard/values-ar/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ar/strings.xml
@@ -36,7 +36,7 @@
<string name="keyguard_plugged_in_charging_limited" msgid="5369697538556777542">"‫<xliff:g id="PERCENTAGE">%s</xliff:g> • الشحن معلّق لحماية البطارية"</string>
<string name="keyguard_plugged_in_incompatible_charger" msgid="6384203333154532125">"‫<xliff:g id="PERCENTAGE">%s</xliff:g> • يُرجى فحص ملحق الشحن."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"الشبكة مؤمّنة"</string>
- <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"‏لا تتوفر شريحة SIM."</string>
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"‏لا تتوفر شريحة SIM"</string>
<string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"‏شريحة SIM غير قابلة للاستخدام."</string>
<string name="keyguard_sim_locked_message" msgid="7095293254587575270">"‏شريحة SIM مُقفَلة."</string>
<string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"‏شريحة SIM مُقفَلة برمز PUK."</string>
diff --git a/packages/SystemUI/res-keyguard/values-es/strings.xml b/packages/SystemUI/res-keyguard/values-es/strings.xml
index 2d18c1c75057..33a7346b3769 100644
--- a/packages/SystemUI/res-keyguard/values-es/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-es/strings.xml
@@ -25,7 +25,7 @@
<string name="keyguard_enter_your_pattern" msgid="351503370332324745">"Introduce tu patrón"</string>
<string name="keyguard_enter_pattern" msgid="7616595160901084119">"Dibuja el patrón"</string>
<string name="keyguard_enter_your_password" msgid="7225626204122735501">"Introduce tu contraseña"</string>
- <string name="keyguard_enter_password" msgid="6483623792371009758">"Escribe la contraseña"</string>
+ <string name="keyguard_enter_password" msgid="6483623792371009758">"Introduce la contraseña"</string>
<string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Tarjeta no válida."</string>
<string name="keyguard_charged" msgid="5478247181205188995">"Cargado"</string>
<string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando sin cables"</string>
diff --git a/packages/SystemUI/res-keyguard/values-mk/strings.xml b/packages/SystemUI/res-keyguard/values-mk/strings.xml
index 6c57d89a36af..61a7f8ffde52 100644
--- a/packages/SystemUI/res-keyguard/values-mk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-mk/strings.xml
@@ -23,7 +23,7 @@
<string name="keyguard_enter_your_pin" msgid="5429932527814874032">"Внесете го PIN-кодот"</string>
<string name="keyguard_enter_pin" msgid="8114529922480276834">"Внесете PIN"</string>
<string name="keyguard_enter_your_pattern" msgid="351503370332324745">"Внесете ја шемата"</string>
- <string name="keyguard_enter_pattern" msgid="7616595160901084119">"Нацртај шема"</string>
+ <string name="keyguard_enter_pattern" msgid="7616595160901084119">"Нацртајте шема"</string>
<string name="keyguard_enter_your_password" msgid="7225626204122735501">"Внесете ја лозинката"</string>
<string name="keyguard_enter_password" msgid="6483623792371009758">"Внесете лозинка"</string>
<string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Неважечка картичка."</string>
diff --git a/packages/SystemUI/res-keyguard/values-sl/strings.xml b/packages/SystemUI/res-keyguard/values-sl/strings.xml
index c761799594b6..e5c3a35fee4f 100644
--- a/packages/SystemUI/res-keyguard/values-sl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sl/strings.xml
@@ -36,7 +36,7 @@
<string name="keyguard_plugged_in_charging_limited" msgid="5369697538556777542">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Zaradi zaščite baterije je polnjenje na čakanju"</string>
<string name="keyguard_plugged_in_incompatible_charger" msgid="6384203333154532125">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Preverite pripomoček za polnjenje"</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Omrežje je zaklenjeno"</string>
- <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Ni kartice SIM."</string>
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Ni kartice SIM"</string>
<string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Kartica SIM je neuporabna."</string>
<string name="keyguard_sim_locked_message" msgid="7095293254587575270">"Kartica SIM je zaklenjena."</string>
<string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"Kartica SIM je zaklenjena s kodo PUK."</string>
diff --git a/packages/SystemUI/res-keyguard/values/arrays.xml b/packages/SystemUI/res-keyguard/values/arrays.xml
index 26bc865bcaf7..b4c02f0fee1a 100644
--- a/packages/SystemUI/res-keyguard/values/arrays.xml
+++ b/packages/SystemUI/res-keyguard/values/arrays.xml
@@ -41,4 +41,13 @@
<item>@drawable/pin_dot_shape_5_avd</item>
<item>@drawable/pin_dot_shape_6_avd</item>
</integer-array>
+
+ <integer-array name="updated_bouncer_pin_shapes">
+ <item>@drawable/bouncer_shape_1</item>
+ <item>@drawable/bouncer_shape_2</item>
+ <item>@drawable/bouncer_shape_3</item>
+ <item>@drawable/bouncer_shape_4</item>
+ <item>@drawable/bouncer_shape_5</item>
+ <item>@drawable/bouncer_shape_6</item>
+ </integer-array>
</resources>
diff --git a/packages/SystemUI/res/drawable/bouncer_shape_1.xml b/packages/SystemUI/res/drawable/bouncer_shape_1.xml
new file mode 100644
index 000000000000..575d90525a3d
--- /dev/null
+++ b/packages/SystemUI/res/drawable/bouncer_shape_1.xml
@@ -0,0 +1,81 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="33" android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M-8.34 -3.45 C-7.46,-5.58 -5.58,-7.46 -3.45,-8.34 C-1.33,-9.22 1.33,-9.22 3.45,-8.34 C5.58,-7.46 7.46,-5.58 8.34,-3.45 C9.22,-1.33 9.22,1.33 8.34,3.45 C7.46,5.58 5.58,7.46 3.45,8.34 C1.33,9.22 -1.33,9.22 -3.45,8.34 C-5.58,7.46 -7.46,5.58 -8.34,3.45 C-9.22,1.33 -9.22,-1.33 -8.34,-3.45c "
+ android:valueTo="M-8.34 -3.45 C-7.46,-5.58 -5.58,-7.46 -3.45,-8.34 C-1.33,-9.22 1.33,-9.22 3.45,-8.34 C5.58,-7.46 7.46,-5.58 8.34,-3.45 C9.22,-1.33 9.22,1.33 8.34,3.45 C7.46,5.58 5.58,7.46 3.45,8.34 C1.33,9.22 -1.33,9.22 -3.45,8.34 C-5.58,7.46 -7.46,5.58 -8.34,3.45 C-9.22,1.33 -9.22,-1.33 -8.34,-3.45c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator
+ android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="33" android:propertyName="pathData"
+ android:startOffset="33"
+ android:valueFrom="M-8.34 -3.45 C-7.46,-5.58 -5.58,-7.46 -3.45,-8.34 C-1.33,-9.22 1.33,-9.22 3.45,-8.34 C5.58,-7.46 7.46,-5.58 8.34,-3.45 C9.22,-1.33 9.22,1.33 8.34,3.45 C7.46,5.58 5.58,7.46 3.45,8.34 C1.33,9.22 -1.33,9.22 -3.45,8.34 C-5.58,7.46 -7.46,5.58 -8.34,3.45 C-9.22,1.33 -9.22,-1.33 -8.34,-3.45c "
+ android:valueTo="M-13.65 -3.95 C-16.31,-10.09 -10.09,-16.31 -3.95,-13.65 C-0.76,-12.26 0.77,-12.23 3.95,-13.65 C9.91,-16.31 16.31,-10.09 13.65,-3.95 C12.26,-0.76 12.26,0.76 13.65,3.95 C16.31,10.09 9.91,16.31 3.95,13.65 C0.76,12.22 -0.76,12.26 -3.95,13.65 C-10.09,16.31 -16.31,10.09 -13.65,3.95 C-12.26,0.75 -12.25,-0.73 -13.65,-3.95c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator
+ android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="283" android:propertyName="pathData"
+ android:startOffset="67"
+ android:valueFrom="M-13.65 -3.95 C-16.31,-10.09 -10.09,-16.31 -3.95,-13.65 C-0.76,-12.26 0.77,-12.23 3.95,-13.65 C9.91,-16.31 16.31,-10.09 13.65,-3.95 C12.26,-0.76 12.26,0.76 13.65,3.95 C16.31,10.09 9.91,16.31 3.95,13.65 C0.76,12.22 -0.76,12.26 -3.95,13.65 C-10.09,16.31 -16.31,10.09 -13.65,3.95 C-12.26,0.75 -12.25,-0.73 -13.65,-3.95c "
+ android:valueTo="M-8.34 -3.45 C-7.46,-5.58 -5.58,-7.46 -3.45,-8.34 C-1.33,-9.22 1.33,-9.22 3.45,-8.34 C5.58,-7.46 7.46,-5.58 8.34,-3.45 C9.22,-1.33 9.22,1.33 8.34,3.45 C7.46,5.58 5.58,7.46 3.45,8.34 C1.33,9.22 -1.33,9.22 -3.45,8.34 C-5.58,7.46 -7.46,5.58 -8.34,3.45 C-9.22,1.33 -9.22,-1.33 -8.34,-3.45c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.7,0 0.6,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="67" android:propertyName="scaleX"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0.5,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="67" android:propertyName="scaleY"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0.5,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="500" android:propertyName="translateX"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector android:width="36dp" android:height="36dp" android:viewportHeight="36"
+ android:viewportWidth="36">
+ <group android:name="_R_G">
+ <group android:name="_R_G_L_0_G" android:scaleX="0" android:scaleY="0"
+ android:translateX="18" android:translateY="18">
+ <path android:name="_R_G_L_0_G_D_0_P_0" android:fillAlpha="1"
+ android:fillColor="#ffffff" android:fillType="nonZero"
+ android:pathData=" M-8.34 -3.45 C-7.46,-5.58 -5.58,-7.46 -3.45,-8.34 C-1.33,-9.22 1.33,-9.22 3.45,-8.34 C5.58,-7.46 7.46,-5.58 8.34,-3.45 C9.22,-1.33 9.22,1.33 8.34,3.45 C7.46,5.58 5.58,7.46 3.45,8.34 C1.33,9.22 -1.33,9.22 -3.45,8.34 C-5.58,7.46 -7.46,5.58 -8.34,3.45 C-9.22,1.33 -9.22,-1.33 -8.34,-3.45c " />
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/bouncer_shape_2.xml b/packages/SystemUI/res/drawable/bouncer_shape_2.xml
new file mode 100644
index 000000000000..b748d7f7a062
--- /dev/null
+++ b/packages/SystemUI/res/drawable/bouncer_shape_2.xml
@@ -0,0 +1,81 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="33" android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M9 0 C9,-2.3 7.99,-4.74 6.36,-6.36 C4.74,-7.99 2.3,-9 0,-9 C-2.3,-9 -4.74,-7.99 -6.36,-6.36 C-7.99,-4.74 -9,-2.3 -9,0 C-9,2.3 -7.99,4.74 -6.36,6.36 C-4.74,7.99 -2.3,9 0,9 C2.3,9 4.74,7.99 6.36,6.36 C7.99,4.74 9,2.3 9,0c "
+ android:valueTo="M9 0 C9,-2.3 7.99,-4.74 6.36,-6.36 C4.74,-7.99 2.3,-9 0,-9 C-2.3,-9 -4.74,-7.99 -6.36,-6.36 C-7.99,-4.74 -9,-2.3 -9,0 C-9,2.3 -7.99,4.74 -6.36,6.36 C-4.74,7.99 -2.3,9 0,9 C2.3,9 4.74,7.99 6.36,6.36 C7.99,4.74 9,2.3 9,0c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator
+ android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="33" android:propertyName="pathData"
+ android:startOffset="33"
+ android:valueFrom="M9 0 C9,-2.3 7.99,-4.74 6.36,-6.36 C4.74,-7.99 2.3,-9 0,-9 C-2.3,-9 -4.74,-7.99 -6.36,-6.36 C-7.99,-4.74 -9,-2.3 -9,0 C-9,2.3 -7.99,4.74 -6.36,6.36 C-4.74,7.99 -2.3,9 0,9 C2.3,9 4.74,7.99 6.36,6.36 C7.99,4.74 9,2.3 9,0c "
+ android:valueTo="M15.06 7.12 C15.06,7.12 5.57,-11.84 5.57,-11.84 C4.43,-14.13 2.23,-15.28 0.02,-15.28 C-2.18,-15.28 -4.39,-14.13 -5.53,-11.84 C-5.53,-11.84 -15.01,7.12 -15.01,7.12 C-17.62,12.34 -12.27,18.03 -6.91,15.56 C-3.18,13.84 -1.9,13.04 0.02,13.04 C1.94,13.04 4.59,14.43 6.96,15.56 C12.14,18.03 17.67,12.34 15.06,7.12c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator
+ android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="283" android:propertyName="pathData"
+ android:startOffset="67"
+ android:valueFrom="M15.06 7.12 C15.06,7.12 5.57,-11.84 5.57,-11.84 C4.43,-14.13 2.23,-15.28 0.02,-15.28 C-2.18,-15.28 -4.39,-14.13 -5.53,-11.84 C-5.53,-11.84 -15.01,7.12 -15.01,7.12 C-17.62,12.34 -12.27,18.03 -6.91,15.56 C-3.18,13.84 -1.9,13.04 0.02,13.04 C1.94,13.04 4.59,14.43 6.96,15.56 C12.14,18.03 17.67,12.34 15.06,7.12c "
+ android:valueTo="M9 0 C9,-2.3 7.99,-4.74 6.36,-6.36 C4.74,-7.99 2.3,-9 0,-9 C-2.3,-9 -4.74,-7.99 -6.36,-6.36 C-7.99,-4.74 -9,-2.3 -9,0 C-9,2.3 -7.99,4.74 -6.36,6.36 C-4.74,7.99 -2.3,9 0,9 C2.3,9 4.74,7.99 6.36,6.36 C7.99,4.74 9,2.3 9,0c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.7,0 0.6,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="67" android:propertyName="scaleX"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0.5,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="67" android:propertyName="scaleY"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0.5,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="500" android:propertyName="translateX"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector android:width="36dp" android:height="36dp" android:viewportHeight="36"
+ android:viewportWidth="36">
+ <group android:name="_R_G">
+ <group android:name="_R_G_L_0_G" android:scaleX="0" android:scaleY="0"
+ android:translateX="18" android:translateY="18">
+ <path android:name="_R_G_L_0_G_D_0_P_0" android:fillAlpha="1"
+ android:fillColor="#ffffff" android:fillType="nonZero"
+ android:pathData=" M9 0 C9,-2.3 7.99,-4.74 6.36,-6.36 C4.74,-7.99 2.3,-9 0,-9 C-2.3,-9 -4.74,-7.99 -6.36,-6.36 C-7.99,-4.74 -9,-2.3 -9,0 C-9,2.3 -7.99,4.74 -6.36,6.36 C-4.74,7.99 -2.3,9 0,9 C2.3,9 4.74,7.99 6.36,6.36 C7.99,4.74 9,2.3 9,0c " />
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/bouncer_shape_3.xml b/packages/SystemUI/res/drawable/bouncer_shape_3.xml
new file mode 100644
index 000000000000..0b71221f3ed0
--- /dev/null
+++ b/packages/SystemUI/res/drawable/bouncer_shape_3.xml
@@ -0,0 +1,81 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="33" android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M6.35 6.37 C2.84,9.88 -2.85,9.88 -6.36,6.37 C-6.36,6.37 -6.37,6.37 -6.37,6.37 C-9.88,2.85 -9.88,-2.84 -6.37,-6.35 C-2.85,-9.86 2.84,-9.86 6.35,-6.35 C6.35,-6.35 6.35,-6.34 6.35,-6.34 C9.86,-2.83 9.86,2.86 6.35,6.37c "
+ android:valueTo="M6.35 6.37 C2.84,9.88 -2.85,9.88 -6.36,6.37 C-6.36,6.37 -6.37,6.37 -6.37,6.37 C-9.88,2.85 -9.88,-2.84 -6.37,-6.35 C-2.85,-9.86 2.84,-9.86 6.35,-6.35 C6.35,-6.35 6.35,-6.34 6.35,-6.34 C9.86,-2.83 9.86,2.86 6.35,6.37c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator
+ android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="33" android:propertyName="pathData"
+ android:startOffset="33"
+ android:valueFrom="M6.35 6.37 C2.84,9.88 -2.85,9.88 -6.36,6.37 C-6.36,6.37 -6.37,6.37 -6.37,6.37 C-9.88,2.85 -9.88,-2.84 -6.37,-6.35 C-2.85,-9.86 2.84,-9.86 6.35,-6.35 C6.35,-6.35 6.35,-6.34 6.35,-6.34 C9.86,-2.83 9.86,2.86 6.35,6.37c "
+ android:valueTo="M11.96 11.96 C6.61,17.31 -2.06,17.31 -7.41,11.96 C-7.41,11.96 -11.96,7.42 -11.96,7.42 C-17.31,2.06 -17.31,-6.61 -11.96,-11.96 C-6.61,-17.31 2.06,-17.31 7.42,-11.96 C7.42,-11.96 11.96,-7.41 11.96,-7.41 C17.31,-2.06 17.31,6.61 11.96,11.96c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator
+ android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="283" android:propertyName="pathData"
+ android:startOffset="67"
+ android:valueFrom="M11.96 11.96 C6.61,17.31 -2.06,17.31 -7.41,11.96 C-7.41,11.96 -11.96,7.42 -11.96,7.42 C-17.31,2.06 -17.31,-6.61 -11.96,-11.96 C-6.61,-17.31 2.06,-17.31 7.42,-11.96 C7.42,-11.96 11.96,-7.41 11.96,-7.41 C17.31,-2.06 17.31,6.61 11.96,11.96c "
+ android:valueTo="M6.35 6.37 C2.84,9.88 -2.85,9.88 -6.36,6.37 C-6.36,6.37 -6.37,6.37 -6.37,6.37 C-9.88,2.85 -9.88,-2.84 -6.37,-6.35 C-2.85,-9.86 2.84,-9.86 6.35,-6.35 C6.35,-6.35 6.35,-6.34 6.35,-6.34 C9.86,-2.83 9.86,2.86 6.35,6.37c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.7,0 0.6,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="67" android:propertyName="scaleX"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0.5,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="67" android:propertyName="scaleY"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0.5,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="500" android:propertyName="translateX"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector android:width="36dp" android:height="36dp" android:viewportHeight="36"
+ android:viewportWidth="36">
+ <group android:name="_R_G">
+ <group android:name="_R_G_L_0_G" android:scaleX="0" android:scaleY="0"
+ android:translateX="18" android:translateY="18">
+ <path android:name="_R_G_L_0_G_D_0_P_0" android:fillAlpha="1"
+ android:fillColor="#ffffff" android:fillType="nonZero"
+ android:pathData=" M6.35 6.37 C2.84,9.88 -2.85,9.88 -6.36,6.37 C-6.36,6.37 -6.37,6.37 -6.37,6.37 C-9.88,2.85 -9.88,-2.84 -6.37,-6.35 C-2.85,-9.86 2.84,-9.86 6.35,-6.35 C6.35,-6.35 6.35,-6.34 6.35,-6.34 C9.86,-2.83 9.86,2.86 6.35,6.37c " />
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/bouncer_shape_4.xml b/packages/SystemUI/res/drawable/bouncer_shape_4.xml
new file mode 100644
index 000000000000..b923e1af1f9c
--- /dev/null
+++ b/packages/SystemUI/res/drawable/bouncer_shape_4.xml
@@ -0,0 +1,81 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="33" android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M8.98 -0.01 C9,-1.16 8.76,-2.33 8.32,-3.4 C7.86,-4.49 7.18,-5.52 6.35,-6.36 C5.55,-7.18 4.58,-7.84 3.53,-8.27 C2.42,-8.74 1.2,-9 0,-9 C-1.19,-9 -2.4,-8.74 -3.5,-8.29 C-4.56,-7.85 -5.54,-7.18 -6.35,-6.36 C-7.16,-5.56 -7.83,-4.58 -8.27,-3.52 C-8.73,-2.42 -8.96,-1.2 -8.98,-0.01 C-9,1.09 -8.8,2.21 -8.39,3.22 C-7.91,4.37 -7.22,5.45 -6.35,6.35 C-5.56,7.17 -4.56,7.83 -3.51,8.27 C-2.41,8.73 -1.19,8.97 0,8.98 C1.1,9 2.24,8.8 3.26,8.37 C4.39,7.9 5.45,7.2 6.35,6.35 C7.13,5.61 7.77,4.69 8.18,3.7 C8.67,2.53 8.96,1.26 8.98,-0.01c "
+ android:valueTo="M8.98 -0.01 C9,-1.16 8.76,-2.33 8.32,-3.4 C7.86,-4.49 7.18,-5.52 6.35,-6.36 C5.55,-7.18 4.58,-7.84 3.53,-8.27 C2.42,-8.74 1.2,-9 0,-9 C-1.19,-9 -2.4,-8.74 -3.5,-8.29 C-4.56,-7.85 -5.54,-7.18 -6.35,-6.36 C-7.16,-5.56 -7.83,-4.58 -8.27,-3.52 C-8.73,-2.42 -8.96,-1.2 -8.98,-0.01 C-9,1.09 -8.8,2.21 -8.39,3.22 C-7.91,4.37 -7.22,5.45 -6.35,6.35 C-5.56,7.17 -4.56,7.83 -3.51,8.27 C-2.41,8.73 -1.19,8.97 0,8.98 C1.1,9 2.24,8.8 3.26,8.37 C4.39,7.9 5.45,7.2 6.35,6.35 C7.13,5.61 7.77,4.69 8.18,3.7 C8.67,2.53 8.96,1.26 8.98,-0.01c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator
+ android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="33" android:propertyName="pathData"
+ android:startOffset="33"
+ android:valueFrom="M8.98 -0.01 C9,-1.16 8.76,-2.33 8.32,-3.4 C7.86,-4.49 7.18,-5.52 6.35,-6.36 C5.55,-7.18 4.58,-7.84 3.53,-8.27 C2.42,-8.74 1.2,-9 0,-9 C-1.19,-9 -2.4,-8.74 -3.5,-8.29 C-4.56,-7.85 -5.54,-7.18 -6.35,-6.36 C-7.16,-5.56 -7.83,-4.58 -8.27,-3.52 C-8.73,-2.42 -8.96,-1.2 -8.98,-0.01 C-9,1.09 -8.8,2.21 -8.39,3.22 C-7.91,4.37 -7.22,5.45 -6.35,6.35 C-5.56,7.17 -4.56,7.83 -3.51,8.27 C-2.41,8.73 -1.19,8.97 0,8.98 C1.1,9 2.24,8.8 3.26,8.37 C4.39,7.9 5.45,7.2 6.35,6.35 C7.13,5.61 7.77,4.69 8.18,3.7 C8.67,2.53 8.96,1.26 8.98,-0.01c "
+ android:valueTo="M15.94 0 C15.94,-2.68 12.74,-2.45 11.62,-4.58 C10.5,-6.72 13.17,-9.54 11.27,-11.27 C9.37,-13 6.84,-10.78 4.74,-11.54 C2.63,-12.3 2.77,-15.94 0,-15.94 C-2.77,-15.94 -2.85,-12.34 -4.73,-11.52 C-6.62,-10.71 -9.31,-13.21 -11.27,-11.27 C-13.23,-9.33 -10.95,-7.11 -11.55,-4.93 C-12.15,-2.77 -15.94,-2.78 -15.94,0 C-15.94,2.78 -12.4,2.92 -11.62,4.69 C-10.85,6.47 -13.32,9.29 -11.27,11.27 C-9.22,13.25 -6.57,10.83 -4.82,11.64 C-3.07,12.46 -2.63,15.94 0,15.94 C2.63,15.94 2.64,12.52 4.72,11.67 C6.8,10.82 9.66,13.2 11.27,11.27 C12.88,9.34 10.62,6.93 11.65,4.63 C12.68,2.34 15.94,2.68 15.94,0c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator
+ android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="283" android:propertyName="pathData"
+ android:startOffset="67"
+ android:valueFrom="M15.94 0 C15.94,-2.68 12.74,-2.45 11.62,-4.58 C10.5,-6.72 13.17,-9.54 11.27,-11.27 C9.37,-13 6.84,-10.78 4.74,-11.54 C2.63,-12.3 2.77,-15.94 0,-15.94 C-2.77,-15.94 -2.85,-12.34 -4.73,-11.52 C-6.62,-10.71 -9.31,-13.21 -11.27,-11.27 C-13.23,-9.33 -10.95,-7.11 -11.55,-4.93 C-12.15,-2.77 -15.94,-2.78 -15.94,0 C-15.94,2.78 -12.4,2.92 -11.62,4.69 C-10.85,6.47 -13.32,9.29 -11.27,11.27 C-9.22,13.25 -6.57,10.83 -4.82,11.64 C-3.07,12.46 -2.63,15.94 0,15.94 C2.63,15.94 2.64,12.52 4.72,11.67 C6.8,10.82 9.66,13.2 11.27,11.27 C12.88,9.34 10.62,6.93 11.65,4.63 C12.68,2.34 15.94,2.68 15.94,0c "
+ android:valueTo="M8.98 -0.01 C9,-1.16 8.76,-2.33 8.32,-3.4 C7.86,-4.49 7.18,-5.52 6.35,-6.36 C5.55,-7.18 4.58,-7.84 3.53,-8.27 C2.42,-8.74 1.2,-9 0,-9 C-1.19,-9 -2.4,-8.74 -3.5,-8.29 C-4.56,-7.85 -5.54,-7.18 -6.35,-6.36 C-7.16,-5.56 -7.83,-4.58 -8.27,-3.52 C-8.73,-2.42 -8.96,-1.2 -8.98,-0.01 C-9,1.09 -8.8,2.21 -8.39,3.22 C-7.91,4.37 -7.22,5.45 -6.35,6.35 C-5.56,7.17 -4.56,7.83 -3.51,8.27 C-2.41,8.73 -1.19,8.97 0,8.98 C1.1,9 2.24,8.8 3.26,8.37 C4.39,7.9 5.45,7.2 6.35,6.35 C7.13,5.61 7.77,4.69 8.18,3.7 C8.67,2.53 8.96,1.26 8.98,-0.01c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.7,0 0.6,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="67" android:propertyName="scaleX"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0.5,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="67" android:propertyName="scaleY"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0.5,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="500" android:propertyName="translateX"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector android:width="36dp" android:height="36dp" android:viewportHeight="36"
+ android:viewportWidth="36">
+ <group android:name="_R_G">
+ <group android:name="_R_G_L_0_G" android:scaleX="0" android:scaleY="0"
+ android:translateX="18" android:translateY="18">
+ <path android:name="_R_G_L_0_G_D_0_P_0" android:fillAlpha="1"
+ android:fillColor="#ffffff" android:fillType="nonZero"
+ android:pathData=" M8.98 -0.01 C9,-1.16 8.76,-2.33 8.32,-3.4 C7.86,-4.49 7.18,-5.52 6.35,-6.36 C5.55,-7.18 4.58,-7.84 3.53,-8.27 C2.42,-8.74 1.2,-9 0,-9 C-1.19,-9 -2.4,-8.74 -3.5,-8.29 C-4.56,-7.85 -5.54,-7.18 -6.35,-6.36 C-7.16,-5.56 -7.83,-4.58 -8.27,-3.52 C-8.73,-2.42 -8.96,-1.2 -8.98,-0.01 C-9,1.09 -8.8,2.21 -8.39,3.22 C-7.91,4.37 -7.22,5.45 -6.35,6.35 C-5.56,7.17 -4.56,7.83 -3.51,8.27 C-2.41,8.73 -1.19,8.97 0,8.98 C1.1,9 2.24,8.8 3.26,8.37 C4.39,7.9 5.45,7.2 6.35,6.35 C7.13,5.61 7.77,4.69 8.18,3.7 C8.67,2.53 8.96,1.26 8.98,-0.01c " />
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/bouncer_shape_5.xml b/packages/SystemUI/res/drawable/bouncer_shape_5.xml
new file mode 100644
index 000000000000..b1eff54b2230
--- /dev/null
+++ b/packages/SystemUI/res/drawable/bouncer_shape_5.xml
@@ -0,0 +1,81 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="33" android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M-2.78 -9.43 C-1.02,-10 1.02,-10 2.78,-9.43 C4.54,-8.85 6.19,-7.65 7.28,-6.15 C8.37,-4.65 9,-2.71 9,-0.86 C9,1 8.37,2.93 7.28,4.43 C6.19,5.94 4.55,7.13 2.78,7.71 C1.02,8.28 -1.02,8.28 -2.78,7.71 C-4.54,7.13 -6.19,5.94 -7.28,4.43 C-8.37,2.93 -9,1 -9,-0.86 C-9,-2.71 -8.37,-4.65 -7.28,-6.15 C-6.19,-7.65 -4.55,-8.85 -2.78,-9.43c "
+ android:valueTo="M-2.78 -9.43 C-1.02,-10 1.02,-10 2.78,-9.43 C4.54,-8.85 6.19,-7.65 7.28,-6.15 C8.37,-4.65 9,-2.71 9,-0.86 C9,1 8.37,2.93 7.28,4.43 C6.19,5.94 4.55,7.13 2.78,7.71 C1.02,8.28 -1.02,8.28 -2.78,7.71 C-4.54,7.13 -6.19,5.94 -7.28,4.43 C-8.37,2.93 -9,1 -9,-0.86 C-9,-2.71 -8.37,-4.65 -7.28,-6.15 C-6.19,-7.65 -4.55,-8.85 -2.78,-9.43c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator
+ android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="33" android:propertyName="pathData"
+ android:startOffset="33"
+ android:valueFrom="M-2.78 -9.43 C-1.02,-10 1.02,-10 2.78,-9.43 C4.54,-8.85 6.19,-7.65 7.28,-6.15 C8.37,-4.65 9,-2.71 9,-0.86 C9,1 8.37,2.93 7.28,4.43 C6.19,5.94 4.55,7.13 2.78,7.71 C1.02,8.28 -1.02,8.28 -2.78,7.71 C-4.54,7.13 -6.19,5.94 -7.28,4.43 C-8.37,2.93 -9,1 -9,-0.86 C-9,-2.71 -8.37,-4.65 -7.28,-6.15 C-6.19,-7.65 -4.55,-8.85 -2.78,-9.43c "
+ android:valueTo="M-3.08 -15.05 C-1.24,-16.37 1.24,-16.37 3.08,-15.05 C3.08,-15.05 13.71,-7.34 13.71,-7.34 C15.57,-5.99 16.34,-3.59 15.63,-1.4 C15.63,-1.4 11.59,11.01 11.59,11.01 C10.88,13.18 8.86,14.65 6.59,14.66 C6.59,14.66 -6.59,14.66 -6.59,14.66 C-8.86,14.65 -10.88,13.18 -11.59,11.01 C-11.59,11.01 -15.63,-1.4 -15.63,-1.4 C-16.34,-3.59 -15.57,-5.99 -13.71,-7.34 C-13.71,-7.34 -3.08,-15.05 -3.08,-15.05c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator
+ android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="283" android:propertyName="pathData"
+ android:startOffset="67"
+ android:valueFrom="M-3.08 -15.05 C-1.24,-16.37 1.24,-16.37 3.08,-15.05 C3.08,-15.05 13.71,-7.34 13.71,-7.34 C15.57,-5.99 16.34,-3.59 15.63,-1.4 C15.63,-1.4 11.59,11.01 11.59,11.01 C10.88,13.18 8.86,14.65 6.59,14.66 C6.59,14.66 -6.59,14.66 -6.59,14.66 C-8.86,14.65 -10.88,13.18 -11.59,11.01 C-11.59,11.01 -15.63,-1.4 -15.63,-1.4 C-16.34,-3.59 -15.57,-5.99 -13.71,-7.34 C-13.71,-7.34 -3.08,-15.05 -3.08,-15.05c "
+ android:valueTo="M-2.78 -9.43 C-1.02,-10 1.02,-10 2.78,-9.43 C4.54,-8.85 6.19,-7.65 7.28,-6.15 C8.37,-4.65 9,-2.71 9,-0.86 C9,1 8.37,2.93 7.28,4.43 C6.19,5.94 4.55,7.13 2.78,7.71 C1.02,8.28 -1.02,8.28 -2.78,7.71 C-4.54,7.13 -6.19,5.94 -7.28,4.43 C-8.37,2.93 -9,1 -9,-0.86 C-9,-2.71 -8.37,-4.65 -7.28,-6.15 C-6.19,-7.65 -4.55,-8.85 -2.78,-9.43c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.7,0 0.6,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="67" android:propertyName="scaleX"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0.5,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="67" android:propertyName="scaleY"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0.5,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="500" android:propertyName="translateX"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector android:width="36dp" android:height="36dp" android:viewportHeight="36"
+ android:viewportWidth="36">
+ <group android:name="_R_G">
+ <group android:name="_R_G_L_0_G" android:pivotY="-0.859" android:scaleX="0"
+ android:scaleY="0" android:translateX="18" android:translateY="18.859">
+ <path android:name="_R_G_L_0_G_D_0_P_0" android:fillAlpha="1"
+ android:fillColor="#ffffff" android:fillType="nonZero"
+ android:pathData=" M-2.78 -9.43 C-1.02,-10 1.02,-10 2.78,-9.43 C4.54,-8.85 6.19,-7.65 7.28,-6.15 C8.37,-4.65 9,-2.71 9,-0.86 C9,1 8.37,2.93 7.28,4.43 C6.19,5.94 4.55,7.13 2.78,7.71 C1.02,8.28 -1.02,8.28 -2.78,7.71 C-4.54,7.13 -6.19,5.94 -7.28,4.43 C-8.37,2.93 -9,1 -9,-0.86 C-9,-2.71 -8.37,-4.65 -7.28,-6.15 C-6.19,-7.65 -4.55,-8.85 -2.78,-9.43c " />
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/bouncer_shape_6.xml b/packages/SystemUI/res/drawable/bouncer_shape_6.xml
new file mode 100644
index 000000000000..c7ebfaa60d34
--- /dev/null
+++ b/packages/SystemUI/res/drawable/bouncer_shape_6.xml
@@ -0,0 +1,81 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="33" android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M8.33 -4.31 C7.45,-6.43 5.58,-8.31 3.45,-9.19 C1.33,-10.07 -1.33,-10.07 -3.45,-9.19 C-5.58,-8.31 -7.45,-6.43 -8.33,-4.31 C-9.21,-2.18 -9.21,0.47 -8.33,2.59 C-7.45,4.72 -5.58,6.59 -3.45,7.47 C-1.33,8.35 1.33,8.35 3.45,7.47 C5.58,6.59 7.45,4.72 8.33,2.59 C9.21,0.47 9.21,-2.18 8.33,-4.31c "
+ android:valueTo="M8.33 -4.31 C7.45,-6.43 5.58,-8.31 3.45,-9.19 C1.33,-10.07 -1.33,-10.07 -3.45,-9.19 C-5.58,-8.31 -7.45,-6.43 -8.33,-4.31 C-9.21,-2.18 -9.21,0.47 -8.33,2.59 C-7.45,4.72 -5.58,6.59 -3.45,7.47 C-1.33,8.35 1.33,8.35 3.45,7.47 C5.58,6.59 7.45,4.72 8.33,2.59 C9.21,0.47 9.21,-2.18 8.33,-4.31c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator
+ android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="33" android:propertyName="pathData"
+ android:startOffset="33"
+ android:valueFrom="M8.33 -4.31 C7.45,-6.43 5.58,-8.31 3.45,-9.19 C1.33,-10.07 -1.33,-10.07 -3.45,-9.19 C-5.58,-8.31 -7.45,-6.43 -8.33,-4.31 C-9.21,-2.18 -9.21,0.47 -8.33,2.59 C-7.45,4.72 -5.58,6.59 -3.45,7.47 C-1.33,8.35 1.33,8.35 3.45,7.47 C5.58,6.59 7.45,4.72 8.33,2.59 C9.21,0.47 9.21,-2.18 8.33,-4.31c "
+ android:valueTo="M14.18 -5.39 C14.18,-5.39 4.53,-15.04 4.53,-15.04 C2.03,-17.55 -2.03,-17.55 -4.53,-15.04 C-4.53,-15.04 -14.18,-5.39 -14.18,-5.39 C-16.69,-2.89 -16.69,1.17 -14.18,3.67 C-14.18,3.67 -4.53,13.32 -4.53,13.32 C-2.03,15.83 2.03,15.83 4.53,13.32 C4.53,13.32 14.18,3.67 14.18,3.67 C16.69,1.17 16.69,-2.89 14.18,-5.39c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator
+ android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="283" android:propertyName="pathData"
+ android:startOffset="67"
+ android:valueFrom="M14.18 -5.39 C14.18,-5.39 4.53,-15.04 4.53,-15.04 C2.03,-17.55 -2.03,-17.55 -4.53,-15.04 C-4.53,-15.04 -14.18,-5.39 -14.18,-5.39 C-16.69,-2.89 -16.69,1.17 -14.18,3.67 C-14.18,3.67 -4.53,13.32 -4.53,13.32 C-2.03,15.83 2.03,15.83 4.53,13.32 C4.53,13.32 14.18,3.67 14.18,3.67 C16.69,1.17 16.69,-2.89 14.18,-5.39c "
+ android:valueTo="M8.33 -4.31 C7.45,-6.43 5.58,-8.31 3.45,-9.19 C1.33,-10.07 -1.33,-10.07 -3.45,-9.19 C-5.58,-8.31 -7.45,-6.43 -8.33,-4.31 C-9.21,-2.18 -9.21,0.47 -8.33,2.59 C-7.45,4.72 -5.58,6.59 -3.45,7.47 C-1.33,8.35 1.33,8.35 3.45,7.47 C5.58,6.59 7.45,4.72 8.33,2.59 C9.21,0.47 9.21,-2.18 8.33,-4.31c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.7,0 0.6,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="67" android:propertyName="scaleX"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0.5,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="67" android:propertyName="scaleY"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.001,0 0.5,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="500" android:propertyName="translateX"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector android:width="36dp" android:height="36dp" android:viewportHeight="36"
+ android:viewportWidth="36">
+ <group android:name="_R_G">
+ <group android:name="_R_G_L_0_G" android:pivotY="-0.859" android:scaleX="0"
+ android:scaleY="0" android:translateX="18" android:translateY="18.859">
+ <path android:name="_R_G_L_0_G_D_0_P_0" android:fillAlpha="1"
+ android:fillColor="#ffffff" android:fillType="nonZero"
+ android:pathData=" M8.33 -4.31 C7.45,-6.43 5.58,-8.31 3.45,-9.19 C1.33,-10.07 -1.33,-10.07 -3.45,-9.19 C-5.58,-8.31 -7.45,-6.43 -8.33,-4.31 C-9.21,-2.18 -9.21,0.47 -8.33,2.59 C-7.45,4.72 -5.58,6.59 -3.45,7.47 C-1.33,8.35 1.33,8.35 3.45,7.47 C5.58,6.59 7.45,4.72 8.33,2.59 C9.21,0.47 9.21,-2.18 8.33,-4.31c " />
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/bouncer_shape_delete.xml b/packages/SystemUI/res/drawable/bouncer_shape_delete.xml
new file mode 100644
index 000000000000..78191c0bf3a5
--- /dev/null
+++ b/packages/SystemUI/res/drawable/bouncer_shape_delete.xml
@@ -0,0 +1,126 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="_R_G_L_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="150" android:propertyName="fillAlpha"
+ android:startOffset="0" android:valueFrom="1" android:valueTo="1"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator
+ android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="200" android:propertyName="fillAlpha"
+ android:startOffset="150" android:valueFrom="1" android:valueTo="0"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator
+ android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="150" android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M-13.54 -17.54 C-8.57,-17.54 -4.54,-13.51 -4.54,-8.54 C-4.54,-3.57 -8.57,0.46 -13.54,0.46 C-18.51,0.46 -22.54,-3.57 -22.54,-8.54 C-22.54,-13.51 -18.51,-17.54 -13.54,-17.54c "
+ android:valueTo="M-13.54 -11.54 C-11.88,-11.54 -10.54,-10.2 -10.54,-8.54 C-10.54,-6.88 -11.88,-5.54 -13.54,-5.54 C-15.2,-5.54 -16.54,-6.88 -16.54,-8.54 C-16.54,-10.2 -15.2,-11.54 -13.54,-11.54c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator
+ android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="200" android:propertyName="pathData"
+ android:startOffset="150"
+ android:valueFrom="M-13.54 -11.54 C-11.88,-11.54 -10.54,-10.2 -10.54,-8.54 C-10.54,-6.88 -11.88,-5.54 -13.54,-5.54 C-15.2,-5.54 -16.54,-6.88 -16.54,-8.54 C-16.54,-10.2 -15.2,-11.54 -13.54,-11.54c "
+ android:valueTo="M-13.54 -13.54 C-10.78,-13.54 -8.54,-11.3 -8.54,-8.54 C-8.54,-5.78 -10.78,-3.54 -13.54,-3.54 C-16.3,-3.54 -18.54,-5.78 -18.54,-8.54 C-18.54,-11.3 -16.3,-13.54 -13.54,-13.54c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator
+ android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_1_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="150" android:propertyName="strokeWidth"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="0"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator
+ android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="50" android:propertyName="strokeWidth"
+ android:startOffset="150" android:valueFrom="0" android:valueTo="3"
+ android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator
+ android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_1_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="150" android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M-13.54 -17.54 C-8.57,-17.54 -4.54,-13.51 -4.54,-8.54 C-4.54,-3.57 -8.57,0.46 -13.54,0.46 C-18.51,0.46 -22.54,-3.57 -22.54,-8.54 C-22.54,-13.51 -18.51,-17.54 -13.54,-17.54c "
+ android:valueTo="M-13.54 -11.54 C-11.88,-11.54 -10.54,-10.2 -10.54,-8.54 C-10.54,-6.88 -11.88,-5.54 -13.54,-5.54 C-15.2,-5.54 -16.54,-6.88 -16.54,-8.54 C-16.54,-10.2 -15.2,-11.54 -13.54,-11.54c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator
+ android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:duration="200" android:propertyName="pathData"
+ android:startOffset="150"
+ android:valueFrom="M-13.54 -11.54 C-11.88,-11.54 -10.54,-10.2 -10.54,-8.54 C-10.54,-6.88 -11.88,-5.54 -13.54,-5.54 C-15.2,-5.54 -16.54,-6.88 -16.54,-8.54 C-16.54,-10.2 -15.2,-11.54 -13.54,-11.54c "
+ android:valueTo="M-13.54 -13.54 C-10.78,-13.54 -8.54,-11.3 -8.54,-8.54 C-8.54,-5.78 -10.78,-3.54 -13.54,-3.54 C-16.3,-3.54 -18.54,-5.78 -18.54,-8.54 C-18.54,-11.3 -16.3,-13.54 -13.54,-13.54c "
+ android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator
+ android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="500" android:propertyName="translateX"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector android:width="36dp" android:height="36dp" android:viewportHeight="36"
+ android:viewportWidth="36">
+ <group android:name="_R_G">
+ <group android:name="_R_G_L_0_G" android:translateX="31.54"
+ android:translateY="26.54">
+ <path android:name="_R_G_L_0_G_D_0_P_0" android:fillAlpha="1"
+ android:fillColor="#ffffff" android:fillType="nonZero"
+ android:pathData=" M-13.54 -17.54 C-8.57,-17.54 -4.54,-13.51 -4.54,-8.54 C-4.54,-3.57 -8.57,0.46 -13.54,0.46 C-18.51,0.46 -22.54,-3.57 -22.54,-8.54 C-22.54,-13.51 -18.51,-17.54 -13.54,-17.54c " />
+ <path android:name="_R_G_L_0_G_D_1_P_0" android:pathData=" M-13.54 -17.54 C-8.57,-17.54 -4.54,-13.51 -4.54,-8.54 C-4.54,-3.57 -8.57,0.46 -13.54,0.46 C-18.51,0.46 -22.54,-3.57 -22.54,-8.54 C-22.54,-13.51 -18.51,-17.54 -13.54,-17.54c "
+ android:strokeAlpha="1" android:strokeColor="#ffffff"
+ android:strokeLineCap="round" android:strokeLineJoin="round"
+ android:strokeWidth="0" />
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/bouncer_shape_outline.xml b/packages/SystemUI/res/drawable/bouncer_shape_outline.xml
new file mode 100644
index 000000000000..72d6c74127a8
--- /dev/null
+++ b/packages/SystemUI/res/drawable/bouncer_shape_outline.xml
@@ -0,0 +1,27 @@
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:duration="500" android:propertyName="translateX"
+ android:startOffset="0" android:valueFrom="0" android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <aapt:attr name="android:drawable">
+ <vector android:width="36dp" android:height="36dp" android:viewportHeight="36"
+ android:viewportWidth="36">
+ <group android:name="_R_G">
+ <group android:name="_R_G_L_0_G" android:translateX="31.237000000000002"
+ android:translateY="26.112000000000002">
+ <path android:name="_R_G_L_0_G_D_0_P_0" android:pathData=" M-13.24 -13.11 C-10.48,-13.11 -8.24,-10.87 -8.24,-8.11 C-8.24,-5.35 -10.48,-3.11 -13.24,-3.11 C-16,-3.11 -18.24,-5.35 -18.24,-8.11 C-18.24,-10.87 -16,-13.11 -13.24,-13.11c "
+ android:strokeAlpha="1" android:strokeColor="#ffffff"
+ android:strokeLineCap="round" android:strokeLineJoin="round"
+ android:strokeWidth="3" />
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_rear_display_slider.xml b/packages/SystemUI/res/drawable/ic_rear_display_slider.xml
new file mode 100644
index 000000000000..8e5da81dd418
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_rear_display_slider.xml
@@ -0,0 +1,29 @@
+<!--
+ Copyright (C) 2025 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
+ android:viewportHeight="960"
+ android:viewportWidth="960">
+ <group
+ android:translateX="-0"
+ android:translateY="960">
+ <path
+ android:fillColor="?android:attr/colorPrimary"
+ android:pathData="M200 -120q-33 0 -56.5 -23.5T120 -200v-160h80v160h560v-560H200v160h-80v-160q0 -33 23.5 -56.5T200 -840h560q33 0 56.5 23.5T840 -760v560q0 33 -23.5 56.5T760 -120H200Zm220 -160l-56 -58 102 -102H120v-80h346L364 -622l56 -58 200 200 -200 200Z" />
+ </group>
+</vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/magic_action_button_background.xml b/packages/SystemUI/res/drawable/magic_action_button_background.xml
new file mode 100644
index 000000000000..7199b2dfbe5a
--- /dev/null
+++ b/packages/SystemUI/res/drawable/magic_action_button_background.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
+ android:color="@color/notification_ripple_untinted_color">
+ <item>
+ <inset
+ android:insetBottom="8dp"
+ android:insetLeft="0dp"
+ android:insetRight="0dp"
+ android:insetTop="8dp">
+ <shape android:shape="rectangle">
+ <corners android:radius="@dimen/magic_action_button_corner_radius" />
+ <solid android:color="@androidprv:color/materialColorPrimaryContainer" />
+ <stroke
+ android:width="@dimen/magic_action_button_outline_stroke_width"
+ android:color="@androidprv:color/materialColorOutlineVariant" />
+ </shape>
+ </inset>
+ </item>
+</ripple>
diff --git a/packages/SystemUI/res/drawable/media_output_item_background.xml b/packages/SystemUI/res/drawable/media_output_item_background.xml
index ea77f1be1053..b454b91e8886 100644
--- a/packages/SystemUI/res/drawable/media_output_item_background.xml
+++ b/packages/SystemUI/res/drawable/media_output_item_background.xml
@@ -17,6 +17,6 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
- android:radius="16dp"/>
+ android:radius="@dimen/media_output_dialog_background_radius"/>
<solid android:color="@color/media_dialog_item_background" />
</shape> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/media_output_item_expand_group.xml b/packages/SystemUI/res/drawable/media_output_item_expand_group.xml
new file mode 100644
index 000000000000..833843d9633a
--- /dev/null
+++ b/packages/SystemUI/res/drawable/media_output_item_expand_group.xml
@@ -0,0 +1,26 @@
+<!--
+ ~ Copyright (C) 2025 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24"
+ android:tint="?attr/colorControlNormal">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M12,15.4 L6,9.4l1.4,-1.4 4.6,4.6 4.6,-4.6 1.4,1.4 -6,6Z" />
+</vector>
diff --git a/packages/SystemUI/res/drawable/notif_footer_btn_settings.xml b/packages/SystemUI/res/drawable/notif_footer_btn_settings.xml
index 800060db7757..6533460a9c99 100644
--- a/packages/SystemUI/res/drawable/notif_footer_btn_settings.xml
+++ b/packages/SystemUI/res/drawable/notif_footer_btn_settings.xml
@@ -6,5 +6,5 @@
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
- android:pathData="M370,880L354,752Q341,747 329.5,740Q318,733 307,725L188,775L78,585L181,507Q180,500 180,493.5Q180,487 180,480Q180,473 180,466.5Q180,460 181,453L78,375L188,185L307,235Q318,227 330,220Q342,213 354,208L370,80L590,80L606,208Q619,213 630.5,220Q642,227 653,235L772,185L882,375L779,453Q780,460 780,466.5Q780,473 780,480Q780,487 780,493.5Q780,500 778,507L881,585L771,775L653,725Q642,733 630,740Q618,747 606,752L590,880L370,880ZM440,800L519,800L533,694Q564,686 590.5,670.5Q617,655 639,633L738,674L777,606L691,541Q696,527 698,511.5Q700,496 700,480Q700,464 698,448.5Q696,433 691,419L777,354L738,286L639,328Q617,305 590.5,289.5Q564,274 533,266L520,160L441,160L427,266Q396,274 369.5,289.5Q343,305 321,327L222,286L183,354L269,418Q264,433 262,448Q260,463 260,480Q260,496 262,511Q264,526 269,541L183,606L222,674L321,632Q343,655 369.5,670.5Q396,686 427,694L440,800ZM482,620Q540,620 581,579Q622,538 622,480Q622,422 581,381Q540,340 482,340Q423,340 382.5,381Q342,422 342,480Q342,538 382.5,579Q423,620 482,620ZM480,480L480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480L480,480Z"/>
+ android:pathData="M480,864q-30,0 -51,-21t-21,-51h144q0,30 -21,51t-51,21ZM192,744v-72h48v-240q0,-88 55.5,-155T439,196q-5,17 -7,34t-2,34q0,59 23.5,109.5T517,461q40,37 92,56t111,14v141h48v72L192,744ZM664,456 L652,400q-14,-5 -26.5,-11.5T602,372l-55,17 -32,-55 41,-40q-3,-14 -3,-29t3,-29l-41,-39 32,-56 54,16q11,-11 24,-18t27,-11l13,-56h64l13,56q14,5 27.5,11.5T793,157l54,-15 32,55 -40,38q3,14 2.5,29.5T838,294l41,39 -32,55 -55,-16q-11,10 -23.5,16.5T742,400l-14,56h-64ZM697,336q30,0 51,-21t21,-51q0,-30 -21,-51t-51,-21q-30,0 -51,21t-21,51q0,30 21,51t51,21Z"/>
</vector>
diff --git a/packages/SystemUI/res/drawable/rear_display_dialog_seekbar.xml b/packages/SystemUI/res/drawable/rear_display_dialog_seekbar.xml
new file mode 100644
index 000000000000..73704f823033
--- /dev/null
+++ b/packages/SystemUI/res/drawable/rear_display_dialog_seekbar.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ ~ Copyright (C) 2025 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<!-- SeekBar drawable for the rear display cancellation slider. -->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
+ android:paddingMode="stack">
+ <item android:gravity="center"
+ android:height="2dp"
+ android:width="@dimen/rear_display_progress_width">
+ <shape android:shape="rectangle">
+ <solid android:color="@androidprv:color/materialColorSurfaceContainer" />
+ </shape>
+ </item>
+ <item
+ android:id="@android:id/progress"
+ android:gravity="center_vertical|fill_horizontal">
+ <com.android.systemui.util.RoundedCornerProgressDrawable android:drawable="@drawable/rear_display_dialog_seekbar_progress" />
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/rear_display_dialog_seekbar_progress.xml b/packages/SystemUI/res/drawable/rear_display_dialog_seekbar_progress.xml
new file mode 100644
index 000000000000..e00bda0e91b4
--- /dev/null
+++ b/packages/SystemUI/res/drawable/rear_display_dialog_seekbar_progress.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2025 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<!-- SeekBar drawable for volume rows. This contains a background layer (with a solid round rect,
+ and a bottom-aligned icon) and a progress layer (with an accent-colored round rect and icon)
+ that moves up and down with the progress value. -->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
+ android:autoMirrored="true">
+ <item android:id="@+id/rear_display_dialog_progress_solid">
+ <shape>
+ <size android:height="@dimen/rear_display_dialog_slider_height" />
+ <solid android:color="?android:attr/colorAccent" />
+ <corners android:radius="@dimen/rear_display_dialog_slider_corner_radius"/>
+ </shape>
+ </item>
+ <item
+ android:id="@+id/rear_display_dialog_seekbar_progress_icon"
+ android:gravity="center_vertical|right"
+ android:height="@dimen/rounded_slider_icon_size"
+ android:width="@dimen/rounded_slider_icon_size"
+ android:right="@dimen/rear_display_dialog_slider_icon_inset">
+ <com.android.systemui.util.AlphaTintDrawableWrapper
+ android:drawable="@drawable/ic_rear_display_slider"
+ android:tint="?androidprv:attr/colorAccentPrimaryVariant" />
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/packages/SystemUI/res/layout/activity_rear_display_front_screen_on.xml b/packages/SystemUI/res/layout/activity_rear_display_enabled.xml
index a8d4d2ece07f..f900626b4da6 100644
--- a/packages/SystemUI/res/layout/activity_rear_display_front_screen_on.xml
+++ b/packages/SystemUI/res/layout/activity_rear_display_enabled.xml
@@ -52,27 +52,25 @@
android:text="@string/rear_display_unfolded_front_screen_on"
android:textAppearance="@style/TextAppearance.Dialog.Title"
android:lineSpacingExtra="2sp"
- android:translationY="-1.24sp"
+ android:paddingBottom="@dimen/rear_display_title_bottom_padding"
android:gravity="center_horizontal" />
- <!-- Buttons -->
- <LinearLayout
- android:layout_width="match_parent"
+ <TextView
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:layout_marginTop="36dp">
- <Space
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="1"/>
- <TextView
- android:id="@+id/button_cancel"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="0"
- android:layout_gravity="start"
- android:text="@string/cancel"
- style="@style/Widget.Dialog.Button.BorderButton" />
- </LinearLayout>
+ android:text="@string/rear_display_unfolded_front_screen_on_slide_to_cancel"
+ android:textAppearance="@style/TextAppearance.Dialog.Body"
+ android:lineSpacingExtra="2sp"
+ android:paddingBottom="@dimen/rear_display_title_bottom_padding"
+ android:gravity="center_horizontal" />
+
+ <SeekBar
+ android:id="@+id/seekbar"
+ android:layout_width="@dimen/rear_display_animation_width_opened"
+ android:layout_height="wrap_content"
+ android:progressDrawable="@drawable/rear_display_dialog_seekbar"
+ android:thumb="@null"
+ android:background="@null"
+ android:gravity="center_horizontal" />
</LinearLayout>
diff --git a/packages/SystemUI/res/layout/bundle_notification_info.xml b/packages/SystemUI/res/layout/bundle_notification_info.xml
deleted file mode 100644
index 745066a7bdbb..000000000000
--- a/packages/SystemUI/res/layout/bundle_notification_info.xml
+++ /dev/null
@@ -1,366 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright 2024, The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<com.android.systemui.statusbar.notification.row.BundleNotificationInfo
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
- android:id="@+id/notification_guts"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:focusable="true"
- android:clipChildren="false"
- android:clipToPadding="true"
- android:orientation="vertical"
- android:paddingStart="@dimen/notification_shade_content_margin_horizontal">
-
- <!-- Package Info -->
- <LinearLayout
- android:id="@+id/header"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_vertical"
- android:clipChildren="false"
- android:paddingTop="@dimen/notification_guts_header_top_padding"
- android:clipToPadding="true">
- <ImageView
- android:id="@+id/pkg_icon"
- android:layout_width="@dimen/notification_guts_conversation_icon_size"
- android:layout_height="@dimen/notification_guts_conversation_icon_size"
- android:layout_centerVertical="true"
- android:layout_alignParentStart="true"
- android:layout_marginEnd="15dp" />
- <LinearLayout
- android:id="@+id/names"
- android:layout_weight="1"
- android:layout_width="0dp"
- android:orientation="vertical"
- android:layout_height="wrap_content"
- android:minHeight="@dimen/notification_guts_conversation_icon_size"
- android:layout_centerVertical="true"
- android:gravity="center_vertical"
- android:layout_alignEnd="@id/pkg_icon"
- android:layout_toEndOf="@id/pkg_icon">
- <TextView
- android:id="@+id/channel_name"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:textDirection="locale"
- style="@style/TextAppearance.NotificationImportanceChannel"/>
- <TextView
- android:id="@+id/group_name"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:textDirection="locale"
- android:ellipsize="end"
- style="@style/TextAppearance.NotificationImportanceChannelGroup"/>
- <TextView
- android:id="@+id/pkg_name"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- style="@style/TextAppearance.NotificationImportanceApp"
- android:ellipsize="end"
- android:textDirection="locale"
- android:maxLines="1"/>
- <TextView
- android:id="@+id/delegate_name"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_centerVertical="true"
- style="@style/TextAppearance.NotificationImportanceHeader"
- android:layout_marginStart="2dp"
- android:layout_marginEnd="2dp"
- android:ellipsize="end"
- android:textDirection="locale"
- android:text="@string/notification_delegate_header"
- android:maxLines="1" />
-
- </LinearLayout>
-
- <!-- end aligned fields -->
- <!-- Optional link to app. Only appears if the channel is not disabled and the app
-asked for it -->
- <ImageButton
- android:id="@+id/app_settings"
- android:layout_width="@dimen/notification_importance_toggle_size"
- android:layout_height="@dimen/notification_importance_toggle_size"
- android:layout_centerVertical="true"
- android:visibility="gone"
- android:background="@drawable/ripple_drawable"
- android:contentDescription="@string/notification_app_settings"
- android:src="@drawable/ic_info"
- android:layout_toStartOf="@id/info"
- android:tint="@androidprv:color/materialColorPrimary"/>
- <ImageButton
- android:id="@+id/info"
- android:layout_width="@dimen/notification_importance_toggle_size"
- android:layout_height="@dimen/notification_importance_toggle_size"
- android:layout_centerVertical="true"
- android:contentDescription="@string/notification_more_settings"
- android:background="@drawable/ripple_drawable_20dp"
- android:src="@drawable/ic_settings"
- android:tint="@androidprv:color/materialColorPrimary"
- android:layout_alignParentEnd="true" />
-
- </LinearLayout>
-
- <LinearLayout
- android:id="@+id/inline_controls"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingEnd="@dimen/notification_shade_content_margin_horizontal"
- android:layout_marginTop="@dimen/notification_guts_option_vertical_padding"
- android:clipChildren="false"
- android:clipToPadding="false"
- android:orientation="vertical">
-
- <!-- Non configurable app/channel text. appears instead of @+id/interruptiveness_settings-->
- <TextView
- android:id="@+id/non_configurable_text"
- android:text="@string/notification_unblockable_desc"
- android:visibility="gone"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- style="@*android:style/TextAppearance.DeviceDefault.Notification" />
-
- <!-- Non configurable app/channel text. appears instead of @+id/interruptiveness_settings-->
- <TextView
- android:id="@+id/non_configurable_call_text"
- android:text="@string/notification_unblockable_call_desc"
- android:visibility="gone"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- style="@*android:style/TextAppearance.DeviceDefault.Notification" />
-
- <!-- Non configurable multichannel text. appears instead of @+id/interruptiveness_settings-->
- <TextView
- android:id="@+id/non_configurable_multichannel_text"
- android:text="@string/notification_multichannel_desc"
- android:visibility="gone"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- style="@*android:style/TextAppearance.DeviceDefault.Notification" />
-
- <LinearLayout
- android:id="@+id/interruptiveness_settings"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:orientation="vertical">
- <com.android.systemui.statusbar.notification.row.ButtonLinearLayout
- android:id="@+id/automatic"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="@dimen/notification_importance_button_separation"
- android:padding="@dimen/notification_importance_button_padding"
- android:clickable="true"
- android:focusable="true"
- android:background="@drawable/notification_guts_priority_button_bg"
- android:orientation="vertical"
- android:visibility="gone">
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:gravity="center"
- >
- <ImageView
- android:id="@+id/automatic_icon"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/ic_notifications_automatic"
- android:background="@android:color/transparent"
- android:tint="@color/notification_guts_priority_contents"
- android:clickable="false"
- android:focusable="false"/>
- <TextView
- android:id="@+id/automatic_label"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_marginStart="@dimen/notification_importance_drawable_padding"
- android:layout_weight="1"
- android:ellipsize="end"
- android:maxLines="1"
- android:clickable="false"
- android:focusable="false"
- android:textAppearance="@style/TextAppearance.NotificationImportanceButton"
- android:text="@string/notification_automatic_title"/>
- </LinearLayout>
- <TextView
- android:id="@+id/automatic_summary"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/notification_importance_button_description_top_margin"
- android:visibility="gone"
- android:text="@string/notification_channel_summary_automatic"
- android:clickable="false"
- android:focusable="false"
- android:ellipsize="end"
- android:maxLines="2"
- android:textAppearance="@style/TextAppearance.NotificationImportanceDetail"/>
- </com.android.systemui.statusbar.notification.row.ButtonLinearLayout>
-
- <com.android.systemui.statusbar.notification.row.ButtonLinearLayout
- android:id="@+id/alert"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:padding="@dimen/notification_importance_button_padding"
- android:clickable="true"
- android:focusable="true"
- android:background="@drawable/notification_guts_priority_button_bg"
- android:orientation="vertical">
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:gravity="center"
- >
- <ImageView
- android:id="@+id/alert_icon"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/ic_notifications_alert"
- android:background="@android:color/transparent"
- android:tint="@color/notification_guts_priority_contents"
- android:clickable="false"
- android:focusable="false"/>
- <TextView
- android:id="@+id/alert_label"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_marginStart="@dimen/notification_importance_drawable_padding"
- android:layout_weight="1"
- android:ellipsize="end"
- android:maxLines="1"
- android:clickable="false"
- android:focusable="false"
- android:textAppearance="@style/TextAppearance.NotificationImportanceButton"
- android:text="@string/notification_alert_title"/>
- </LinearLayout>
- <TextView
- android:id="@+id/alert_summary"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/notification_importance_button_description_top_margin"
- android:visibility="gone"
- android:text="@string/notification_channel_summary_default"
- android:clickable="false"
- android:focusable="false"
- android:ellipsize="end"
- android:maxLines="2"
- android:textAppearance="@style/TextAppearance.NotificationImportanceDetail"/>
- </com.android.systemui.statusbar.notification.row.ButtonLinearLayout>
-
- <com.android.systemui.statusbar.notification.row.ButtonLinearLayout
- android:id="@+id/silence"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/notification_importance_button_separation"
- android:padding="@dimen/notification_importance_button_padding"
- android:clickable="true"
- android:focusable="true"
- android:background="@drawable/notification_guts_priority_button_bg"
- android:orientation="vertical">
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:gravity="center"
- >
- <ImageView
- android:id="@+id/silence_icon"
- android:src="@drawable/ic_notifications_silence"
- android:background="@android:color/transparent"
- android:tint="@color/notification_guts_priority_contents"
- android:layout_gravity="center"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:clickable="false"
- android:focusable="false"/>
- <TextView
- android:id="@+id/silence_label"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:ellipsize="end"
- android:maxLines="1"
- android:clickable="false"
- android:focusable="false"
- android:layout_toEndOf="@id/silence_icon"
- android:layout_marginStart="@dimen/notification_importance_drawable_padding"
- android:textAppearance="@style/TextAppearance.NotificationImportanceButton"
- android:text="@string/notification_silence_title"/>
- </LinearLayout>
- <TextView
- android:id="@+id/silence_summary"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/notification_importance_button_description_top_margin"
- android:visibility="gone"
- android:text="@string/notification_channel_summary_low"
- android:clickable="false"
- android:focusable="false"
- android:ellipsize="end"
- android:maxLines="2"
- android:textAppearance="@style/TextAppearance.NotificationImportanceDetail"/>
- </com.android.systemui.statusbar.notification.row.ButtonLinearLayout>
-
- </LinearLayout>
-
- <TextView
- android:id="@+id/notification_guts_bundle_feedback"
- android:text="@string/notification_guts_bundle_feedback"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="start|center_vertical"
- android:minWidth="@dimen/notification_guts_bundle_feedback_size"
- android:minHeight="@dimen/notification_guts_bundle_feedback_size"
- android:maxWidth="200dp"
- style="@style/TextAppearance.NotificationInfo.Button"/>
-
- <RelativeLayout
- android:id="@+id/bottom_buttons"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:minHeight="60dp"
- android:gravity="center_vertical"
- android:paddingStart="4dp"
- android:paddingEnd="4dp"
- >
- <TextView
- android:id="@+id/turn_off_notifications"
- android:text="@string/inline_turn_off_notifications"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentStart="true"
- android:gravity="start|center_vertical"
- android:minWidth="@dimen/notification_importance_toggle_size"
- android:minHeight="@dimen/notification_importance_toggle_size"
- android:maxWidth="200dp"
- style="@style/TextAppearance.NotificationInfo.Button"/>
- <TextView
- android:id="@+id/done"
- android:text="@string/inline_ok_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentEnd="true"
- android:gravity="end|center_vertical"
- android:minWidth="@dimen/notification_importance_toggle_size"
- android:minHeight="@dimen/notification_importance_toggle_size"
- android:maxWidth="125dp"
- style="@style/TextAppearance.NotificationInfo.Button"/>
- </RelativeLayout>
- </LinearLayout>
-</com.android.systemui.statusbar.notification.row.BundleNotificationInfo>
diff --git a/packages/SystemUI/res/layout/magic_action_button.xml b/packages/SystemUI/res/layout/magic_action_button.xml
new file mode 100644
index 000000000000..82d8d7043ff0
--- /dev/null
+++ b/packages/SystemUI/res/layout/magic_action_button.xml
@@ -0,0 +1,16 @@
+<Button xmlns:android="http://schemas.android.com/apk/res/android"
+ style="@android:style/Widget.Material.Button"
+ android:layout_width="wrap_content"
+ android:layout_height="@dimen/magic_action_button_touch_target_height"
+ android:background="@drawable/magic_action_button_background"
+ android:drawablePadding="@dimen/magic_action_button_drawable_padding"
+ android:ellipsize="none"
+ android:fontFamily="google-sans-flex"
+ android:gravity="center"
+ android:minWidth="0dp"
+ android:paddingHorizontal="@dimen/magic_action_button_padding_horizontal"
+ android:paddingVertical="@dimen/magic_action_button_inset_vertical"
+ android:stateListAnimator="@null"
+ android:textColor="@color/magic_action_button_text_color"
+ android:textSize="@dimen/magic_action_button_font_size"
+ android:textStyle="normal" />
diff --git a/packages/SystemUI/res/layout/media_output_list_group_divider.xml b/packages/SystemUI/res/layout/media_output_list_group_divider.xml
index 5e96866c0a9a..c351912de295 100644
--- a/packages/SystemUI/res/layout/media_output_list_group_divider.xml
+++ b/packages/SystemUI/res/layout/media_output_list_group_divider.xml
@@ -26,7 +26,7 @@
android:layout_width="wrap_content"
android:layout_height="36dp"
android:layout_gravity="center_vertical|start"
- android:layout_marginStart="16dp"
+ android:layout_marginStart="@dimen/media_output_dialog_margin_horizontal"
android:layout_marginEnd="56dp"
android:ellipsize="end"
android:maxLines="1"
diff --git a/packages/SystemUI/res/layout/media_output_list_item_advanced.xml b/packages/SystemUI/res/layout/media_output_list_item_advanced.xml
index 69117cf7cf5d..d297ec46e1e1 100644
--- a/packages/SystemUI/res/layout/media_output_list_item_advanced.xml
+++ b/packages/SystemUI/res/layout/media_output_list_item_advanced.xml
@@ -15,18 +15,19 @@
~ limitations under the License.
-->
-<FrameLayout
+<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/device_container"
android:layout_width="match_parent"
- android:layout_height="wrap_content">
+ android:layout_height="wrap_content"
+ android:paddingHorizontal="@dimen/media_output_dialog_margin_horizontal"
+ android:baselineAligned="false">
<FrameLayout
- android:layout_width="match_parent"
- android:layout_height="64dp"
+ android:layout_weight="1"
+ android:layout_width="0dp"
+ android:layout_height="@dimen/media_output_dialog_item_height"
android:id="@+id/item_layout"
android:background="@drawable/media_output_item_background"
- android:layout_marginStart="16dp"
- android:layout_marginEnd="80dp"
android:layout_marginBottom="12dp">
<FrameLayout
android:layout_width="match_parent"
@@ -36,7 +37,7 @@
android:id="@+id/volume_seekbar"
android:splitTrack="false"
android:visibility="gone"
- android:paddingStart="64dp"
+ android:paddingStart="@dimen/media_output_dialog_item_height"
android:paddingEnd="0dp"
android:background="@null"
android:contentDescription="@string/media_output_dialog_accessibility_seekbar"
@@ -48,8 +49,8 @@
<FrameLayout
android:id="@+id/icon_area"
- android:layout_width="64dp"
- android:layout_height="64dp"
+ android:layout_width="@dimen/media_output_dialog_item_height"
+ android:layout_height="@dimen/media_output_dialog_item_height"
android:focusable="false"
android:importantForAccessibility="no"
android:layout_gravity="center_vertical|start">
@@ -131,11 +132,11 @@
</FrameLayout>
<FrameLayout
android:id="@+id/end_action_area"
- android:layout_width="64dp"
- android:layout_height="64dp"
+ android:layout_width="@dimen/media_output_dialog_item_height"
+ android:layout_height="@dimen/media_output_dialog_item_height"
android:visibility="gone"
android:layout_marginBottom="6dp"
- android:layout_marginEnd="8dp"
+ android:layout_marginStart="7dp"
android:layout_gravity="end|center"
android:gravity="center"
android:background="@drawable/media_output_item_background_active">
@@ -160,4 +161,4 @@
android:indeterminateOnly="true"
android:visibility="gone"/>
</FrameLayout>
-</FrameLayout> \ No newline at end of file
+</LinearLayout> \ No newline at end of file
diff --git a/packages/SystemUI/res/layout/notification_2025_hybrid.xml b/packages/SystemUI/res/layout/notification_2025_hybrid.xml
index 8c34cd4165e0..8fd10fb3ddb8 100644
--- a/packages/SystemUI/res/layout/notification_2025_hybrid.xml
+++ b/packages/SystemUI/res/layout/notification_2025_hybrid.xml
@@ -29,6 +29,7 @@
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Notification.Title"
+ android:textSize="@*android:dimen/notification_2025_title_text_size"
android:paddingEnd="4dp"
/>
<TextView
diff --git a/packages/SystemUI/res/layout/notification_2025_hybrid_conversation.xml b/packages/SystemUI/res/layout/notification_2025_hybrid_conversation.xml
index a338e4c70cfa..35f2ef901bdd 100644
--- a/packages/SystemUI/res/layout/notification_2025_hybrid_conversation.xml
+++ b/packages/SystemUI/res/layout/notification_2025_hybrid_conversation.xml
@@ -54,6 +54,7 @@
android:singleLine="true"
android:paddingEnd="4dp"
android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Notification.Title"
+ android:textSize="@*android:dimen/notification_2025_title_text_size"
/>
<TextView
diff --git a/packages/SystemUI/res/layout/notification_conversation_info.xml b/packages/SystemUI/res/layout/notification_conversation_info.xml
index cb9d8115d674..9560be0d6969 100644
--- a/packages/SystemUI/res/layout/notification_conversation_info.xml
+++ b/packages/SystemUI/res/layout/notification_conversation_info.xml
@@ -167,6 +167,17 @@
<!-- end aligned fields -->
<ImageButton
+ android:id="@+id/feedback"
+ android:layout_width="@dimen/notification_importance_toggle_size"
+ android:layout_height="@dimen/notification_importance_toggle_size"
+ android:layout_centerVertical="true"
+ android:visibility="gone"
+ android:background="@drawable/ripple_drawable"
+ android:contentDescription="@string/notification_guts_bundle_feedback"
+ android:src="@*android:drawable/ic_feedback"
+ android:layout_alignParentEnd="true"
+ android:tint="@androidprv:color/materialColorPrimary"/>
+ <ImageButton
android:id="@+id/info"
android:layout_width="@dimen/notification_importance_toggle_size"
android:layout_height="@dimen/notification_importance_toggle_size"
diff --git a/packages/SystemUI/res/layout/notification_info.xml b/packages/SystemUI/res/layout/notification_info.xml
index edca7e3a9940..089ceaee6ce3 100644
--- a/packages/SystemUI/res/layout/notification_info.xml
+++ b/packages/SystemUI/res/layout/notification_info.xml
@@ -91,6 +91,18 @@
</LinearLayout>
<!-- end aligned fields -->
+ <!-- feedback for notificationassistantservice -->
+ <ImageButton
+ android:id="@+id/feedback"
+ android:layout_width="@dimen/notification_importance_toggle_size"
+ android:layout_height="@dimen/notification_importance_toggle_size"
+ android:layout_centerVertical="true"
+ android:visibility="gone"
+ android:background="@drawable/ripple_drawable"
+ android:contentDescription="@string/notification_guts_bundle_feedback"
+ android:src="@*android:drawable/ic_feedback"
+ android:layout_toStartOf="@id/info"
+ android:tint="@androidprv:color/materialColorPrimary"/>
<!-- Optional link to app. Only appears if the channel is not disabled and the app
asked for it -->
<ImageButton
@@ -102,7 +114,7 @@ asked for it -->
android:background="@drawable/ripple_drawable"
android:contentDescription="@string/notification_app_settings"
android:src="@drawable/ic_info"
- android:layout_toStartOf="@id/info"
+ android:layout_toStartOf="@id/feedback"
android:tint="@androidprv:color/materialColorPrimary"/>
<ImageButton
android:id="@+id/info"
diff --git a/packages/SystemUI/res/layout/status_bar_expanded.xml b/packages/SystemUI/res/layout/status_bar_expanded.xml
index b106ad55fb3c..97c53e742f57 100644
--- a/packages/SystemUI/res/layout/status_bar_expanded.xml
+++ b/packages/SystemUI/res/layout/status_bar_expanded.xml
@@ -26,7 +26,7 @@
android:layout_height="match_parent"
android:background="@android:color/transparent">
- <com.android.systemui.common.ui.view.LongPressHandlingView
+ <com.android.systemui.common.ui.view.TouchHandlingView
android:id="@+id/keyguard_long_press"
android:layout_width="match_parent"
android:layout_height="match_parent" />
diff --git a/packages/SystemUI/res/layout/window_magnification_settings_view.xml b/packages/SystemUI/res/layout/window_magnification_settings_view.xml
index 7f7350472fa5..cb7bd1728077 100644
--- a/packages/SystemUI/res/layout/window_magnification_settings_view.xml
+++ b/packages/SystemUI/res/layout/window_magnification_settings_view.xml
@@ -23,6 +23,7 @@
android:orientation="vertical"
android:padding="@dimen/magnification_setting_background_padding"
android:focusable="true"
+ android:accessibilityPaneTitle="@string/accessibility_magnification_settings_panel_description"
android:contentDescription="@string/accessibility_magnification_settings_panel_description">
<LinearLayout
android:layout_width="match_parent"
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_fingerprint.json b/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_fingerprint.json
index fa6fc07c3fe6..dadf4cb9dd9e 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_fingerprint.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_fingerprint.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":240,"op":421,"w":150,"h":150,"nm":"BM_Prompt_Error-to-FP_0and180","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":240,"op":421,"w":150,"h":150,"nm":"BM_Prompt_Error-to-FP_0and180","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_fingerprint_180.json b/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_fingerprint_180.json
index 688ed7b3c57f..d217721f935c 100755
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_fingerprint_180.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_fingerprint_180.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":240,"op":421,"w":150,"h":150,"nm":"BM_Prompt_Error-to-FP_left","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[-64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[-43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[-43.5,43.5,100]},{"t":260,"s":[-64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":240,"op":421,"w":150,"h":150,"nm":"BM_Prompt_Error-to-FP_left","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[-64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[-43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[-43.5,43.5,100]},{"t":260,"s":[-64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_fingerprint_270.json b/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_fingerprint_270.json
index 477c489ad086..d916f25fc138 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_fingerprint_270.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_fingerprint_270.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":240,"op":421,"w":150,"h":150,"nm":"BM_Prompt_Error-to-FP_270","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":270,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":240,"op":421,"w":150,"h":150,"nm":"BM_Prompt_Error-to-FP_270","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":270,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_fingerprint_90.json b/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_fingerprint_90.json
index 9e6b4228c3e8..8b8b2e667646 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_fingerprint_90.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_fingerprint_90.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":240,"op":421,"w":150,"h":150,"nm":"BM_Prompt_Error-to-FP_90","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":240,"op":421,"w":150,"h":150,"nm":"BM_Prompt_Error-to-FP_90","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_success.json b/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_success.json
index 348e25df78c8..72017cdfb98a 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_success.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_success.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":240,"op":421,"w":150,"h":150,"nm":"Error-to-success","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".red400","cl":"red400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[43.5,43.5,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"green400","parent":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":240,"s":[0]},{"t":270,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":240,"op":1131,"st":231,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".green400","cl":"green400","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":240,"op":982,"st":82,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".grey400","cl":"grey400","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".grey600","cl":"grey600","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".grey600","cl":"grey600","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":6,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Nail","parent":17,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":"Matte","parent":6,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":"Finger","parent":6,"tt":1,"tp":16,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".black","cl":"black","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".blue400","cl":"blue400","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".blue401","cl":"blue401","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".blue400","cl":"blue400","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":240,"op":421,"w":150,"h":150,"nm":"Error-to-success","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".red400","cl":"red400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[43.5,43.5,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"green400","parent":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":240,"s":[0]},{"t":270,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":240,"op":1131,"st":231,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".green400","cl":"green400","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":240,"op":982,"st":82,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".grey400","cl":"grey400","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".grey600","cl":"grey600","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".grey600","cl":"grey600","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":6,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Nail","parent":17,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":"Matte","parent":6,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":"Finger","parent":6,"tt":1,"tp":16,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".black","cl":"black","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".primary","cl":"primary","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".primary","cl":"primary","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".primary","cl":"primary","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_unlock.json b/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_unlock.json
index ab52490c5fb0..de5804c79f10 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_unlock.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_error_to_unlock.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":240,"op":421,"w":150,"h":150,"nm":"BM_Prompt_Error-to-Unlock_0","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".blue400","cl":"blue400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".blue400","cl":"blue400","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[74.259,78.552,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[44,44,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":244,"s":[{"i":[[0,0],[0,0],[0.938,1.057],[1.355,0],[0.938,-1.057],[0,-1.527],[0,0],[-1.512,1.674],[-2.111,0],[-1.512,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[-0.938,-1.057],[-1.329,0],[-0.938,1.057],[0,0],[0,-2.408],[1.486,-1.703],[2.137,0],[1.486,1.674],[0,0],[0,0]],"v":[[-0.17,-6.078],[-0.17,-9.822],[-1.577,-13.699],[-5.017,-15.284],[-8.419,-13.699],[-9.826,-9.822],[-12.68,-9.822],[-10.412,-15.945],[-5.017,-18.5],[0.456,-15.945],[2.684,-9.822],[2.684,-6.078]],"c":true}]},{"t":259,"s":[{"i":[[0,0],[0,0],[-1.069,1.057],[-1.545,0],[-1.069,-1.057],[0,-1.527],[0,0],[1.723,1.674],[2.406,0],[1.723,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[1.069,-1.057],[1.515,0],[1.069,1.057],[0,0],[0,-2.408],[-1.693,-1.703],[-2.436,0],[-1.693,1.674],[0,0],[0,0]],"v":[[2.74,-6.079],[2.74,-9.823],[4.345,-13.699],[8.266,-15.285],[12.143,-13.699],[13.747,-9.823],[17,-9.823],[14.415,-15.945],[8.266,-18.5],[2.028,-15.945],[-0.512,-9.823],[-0.512,-6.079]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":94,"op":994,"st":94,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".blue400","cl":"blue400","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[74.259,78.552,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[44,44,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.266,15.285],[-13.747,15.285],[-13.747,-2.863],[8.266,-2.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.683,-0.675],[0.98,0],[0.683,0.675],[0,0.94],[-0.683,0.705],[-0.98,0],[-0.683,-0.705],[0,-0.94]],"o":[[-0.683,0.675],[-0.98,0],[-0.683,-0.675],[0,-0.94],[0.683,-0.705],[0.98,0],[0.683,0.705],[0,0.94]],"v":[[-0.245,8.677],[-2.74,9.69],[-5.236,8.677],[-6.261,6.255],[-5.236,3.788],[-2.74,2.731],[-0.245,3.788],[0.78,6.255]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.624,-0.646],[-0.891,0],[0,0],[-0.624,0.617],[0,0.881],[0,0],[0.654,0.617],[0.891,0],[0,0],[0,0],[0,0],[0.654,-0.646],[0,-0.881],[0,0]],"o":[[0.654,0.617],[0,0],[0.891,0],[0.654,-0.646],[0,0],[0,-0.881],[-0.624,-0.646],[0,0],[0,0],[0,0],[-0.891,0],[-0.624,0.617],[0,0],[0,0.881]],"v":[[-16.064,17.575],[-13.747,18.5],[8.266,18.5],[10.539,17.575],[11.519,15.285],[11.519,-2.863],[10.539,-5.11],[8.266,-6.079],[2.74,-6.079],[-0.512,-6.079],[-13.747,-6.079],[-16.064,-5.11],[-17,-2.863],[-17,15.285]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":94,"op":994,"st":94,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[43.5,43.5,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".red400","cl":"red400","parent":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".red400","cl":"red400","parent":5,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[{"tm":248,"cm":"","dr":0},{"tm":256,"cm":"","dr":0}]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":240,"op":421,"w":150,"h":150,"nm":"BM_Prompt_Error-to-Unlock_0","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[74.259,78.552,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[44,44,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":244,"s":[{"i":[[0,0],[0,0],[0.938,1.057],[1.355,0],[0.938,-1.057],[0,-1.527],[0,0],[-1.512,1.674],[-2.111,0],[-1.512,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[-0.938,-1.057],[-1.329,0],[-0.938,1.057],[0,0],[0,-2.408],[1.486,-1.703],[2.137,0],[1.486,1.674],[0,0],[0,0]],"v":[[-0.17,-6.078],[-0.17,-9.822],[-1.577,-13.699],[-5.017,-15.284],[-8.419,-13.699],[-9.826,-9.822],[-12.68,-9.822],[-10.412,-15.945],[-5.017,-18.5],[0.456,-15.945],[2.684,-9.822],[2.684,-6.078]],"c":true}]},{"t":259,"s":[{"i":[[0,0],[0,0],[-1.069,1.057],[-1.545,0],[-1.069,-1.057],[0,-1.527],[0,0],[1.723,1.674],[2.406,0],[1.723,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[1.069,-1.057],[1.515,0],[1.069,1.057],[0,0],[0,-2.408],[-1.693,-1.703],[-2.436,0],[-1.693,1.674],[0,0],[0,0]],"v":[[2.74,-6.079],[2.74,-9.823],[4.345,-13.699],[8.266,-15.285],[12.143,-13.699],[13.747,-9.823],[17,-9.823],[14.415,-15.945],[8.266,-18.5],[2.028,-15.945],[-0.512,-9.823],[-0.512,-6.079]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":94,"op":994,"st":94,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[74.259,78.552,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[44,44,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.266,15.285],[-13.747,15.285],[-13.747,-2.863],[8.266,-2.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.683,-0.675],[0.98,0],[0.683,0.675],[0,0.94],[-0.683,0.705],[-0.98,0],[-0.683,-0.705],[0,-0.94]],"o":[[-0.683,0.675],[-0.98,0],[-0.683,-0.675],[0,-0.94],[0.683,-0.705],[0.98,0],[0.683,0.705],[0,0.94]],"v":[[-0.245,8.677],[-2.74,9.69],[-5.236,8.677],[-6.261,6.255],[-5.236,3.788],[-2.74,2.731],[-0.245,3.788],[0.78,6.255]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.624,-0.646],[-0.891,0],[0,0],[-0.624,0.617],[0,0.881],[0,0],[0.654,0.617],[0.891,0],[0,0],[0,0],[0,0],[0.654,-0.646],[0,-0.881],[0,0]],"o":[[0.654,0.617],[0,0],[0.891,0],[0.654,-0.646],[0,0],[0,-0.881],[-0.624,-0.646],[0,0],[0,0],[0,0],[-0.891,0],[-0.624,0.617],[0,0],[0,0.881]],"v":[[-16.064,17.575],[-13.747,18.5],[8.266,18.5],[10.539,17.575],[11.519,15.285],[11.519,-2.863],[10.539,-5.11],[8.266,-6.079],[2.74,-6.079],[-0.512,-6.079],[-13.747,-6.079],[-16.064,-5.11],[-17,-2.863],[-17,15.285]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":94,"op":994,"st":94,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[43.5,43.5,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".red400","cl":"red400","parent":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".red400","cl":"red400","parent":5,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[{"tm":248,"cm":"","dr":0},{"tm":256,"cm":"","dr":0}]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_authenticating.json b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_authenticating.json
index 9db254353af1..368b29298b88 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_authenticating.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_authenticating.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":301,"w":150,"h":150,"nm":"BM_Prompt","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[64,64,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Nail","parent":8,"tt":1,"tp":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".blue401","cl":"blue401","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":301,"w":150,"h":150,"nm":"BM_Prompt","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[64,64,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Nail","parent":8,"tt":1,"tp":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_error.json b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_error.json
index 603760f1fbf8..1ad798d98ff1 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_error.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_error.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Error_0and180","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Error_0and180","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_error_180.json b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_error_180.json
index 4e66cfa2a40a..5e99cad85731 100755
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_error_180.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_error_180.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Error_left","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[-64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[-43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[-43.5,43.5,100]},{"t":260,"s":[-64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Error_left","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[-64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[-43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[-43.5,43.5,100]},{"t":260,"s":[-64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_error_270.json b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_error_270.json
index a1d2251b8e7a..b689e8580aad 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_error_270.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_error_270.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Error_270","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":270,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Error_270","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":270,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_error_90.json b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_error_90.json
index 59dc0d4c4c85..40500f57a263 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_error_90.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_error_90.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Error_90","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Error_90","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_success.json b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_success.json
index e2c850062985..8db1e0173dfe 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_success.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_success.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":211,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Success_0and180","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"green400","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":150,"s":[0]},{"t":180,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":150,"op":1041,"st":141,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".green400","cl":"green400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"t":166,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Nail","parent":10,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":9,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":211,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Success_0and180","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"green400","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":150,"s":[0]},{"t":180,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":150,"op":1041,"st":141,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".green400","cl":"green400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"t":166,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Nail","parent":10,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":9,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_success_180.json b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_success_180.json
index 21ee20d02d78..b96b7eb68e4c 100755
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_success_180.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_success_180.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":211,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Success_left","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[-64,64,100]},{"t":170,"s":[-43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"green400","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[-71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":150,"s":[0]},{"t":180,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":150,"op":1041,"st":141,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".green400","cl":"green400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"t":166,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Nail","parent":10,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":9,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":211,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Success_left","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[-64,64,100]},{"t":170,"s":[-43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"green400","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[-71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":150,"s":[0]},{"t":180,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":150,"op":1041,"st":141,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".green400","cl":"green400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"t":166,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Nail","parent":10,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":9,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_success_270.json b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_success_270.json
index 4c1a80955906..a76debecad6b 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_success_270.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_success_270.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":211,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Success_270","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"green400","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":150,"s":[0]},{"t":180,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":150,"op":1041,"st":141,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".green400","cl":"green400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"t":166,"s":[100]}],"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Nail","parent":10,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":9,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":211,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Success_270","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"green400","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":150,"s":[0]},{"t":180,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":150,"op":1041,"st":141,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".green400","cl":"green400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"t":166,"s":[100]}],"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Nail","parent":10,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":9,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_success_90.json b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_success_90.json
index 51e17f7c5fa3..b42f04221224 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_success_90.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_success_90.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":211,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Success_90","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"green400","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":150,"s":[0]},{"t":180,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":150,"op":1041,"st":141,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".green400","cl":"green400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"t":166,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Nail","parent":10,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":9,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":211,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Success_90","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"green400","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":150,"s":[0]},{"t":180,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":150,"op":1041,"st":141,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".green400","cl":"green400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"t":166,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Nail","parent":10,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":9,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_unlock.json b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_unlock.json
index c4db1e4b2ff6..be313898fead 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_unlock.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_unlock.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Unlock_0and180","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-1.704,8.166,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":150,"s":[{"i":[[0,0],[0,0],[0.938,1.057],[1.355,0],[0.938,-1.057],[0,-1.527],[0,0],[-1.512,1.674],[-2.111,0],[-1.512,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[-0.938,-1.057],[-1.329,0],[-0.938,1.057],[0,0],[0,-2.408],[1.486,-1.703],[2.137,0],[1.486,1.674],[0,0],[0,0]],"v":[[-0.17,-6.078],[-0.17,-9.822],[-1.577,-13.699],[-5.017,-15.284],[-8.419,-13.699],[-9.826,-9.822],[-12.68,-9.822],[-10.412,-15.945],[-5.017,-18.5],[0.456,-15.945],[2.684,-9.822],[2.684,-6.078]],"c":true}]},{"t":165,"s":[{"i":[[0,0],[0,0],[-1.069,1.057],[-1.545,0],[-1.069,-1.057],[0,-1.527],[0,0],[1.723,1.674],[2.406,0],[1.723,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[1.069,-1.057],[1.515,0],[1.069,1.057],[0,0],[0,-2.408],[-1.693,-1.703],[-2.436,0],[-1.693,1.674],[0,0],[0,0]],"v":[[2.74,-6.079],[2.74,-9.823],[4.345,-13.699],[8.266,-15.285],[12.143,-13.699],[13.747,-9.823],[17,-9.823],[14.415,-15.945],[8.266,-18.5],[2.028,-15.945],[-0.512,-9.823],[-0.512,-6.079]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-1.704,8.166,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.266,15.285],[-13.747,15.285],[-13.747,-2.863],[8.266,-2.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.683,-0.675],[0.98,0],[0.683,0.675],[0,0.94],[-0.683,0.705],[-0.98,0],[-0.683,-0.705],[0,-0.94]],"o":[[-0.683,0.675],[-0.98,0],[-0.683,-0.675],[0,-0.94],[0.683,-0.705],[0.98,0],[0.683,0.705],[0,0.94]],"v":[[-0.245,8.677],[-2.74,9.69],[-5.236,8.677],[-6.261,6.255],[-5.236,3.788],[-2.74,2.731],[-0.245,3.788],[0.78,6.255]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.624,-0.646],[-0.891,0],[0,0],[-0.624,0.617],[0,0.881],[0,0],[0.654,0.617],[0.891,0],[0,0],[0,0],[0,0],[0.654,-0.646],[0,-0.881],[0,0]],"o":[[0.654,0.617],[0,0],[0.891,0],[0.654,-0.646],[0,0],[0,-0.881],[-0.624,-0.646],[0,0],[0,0],[0,0],[-0.891,0],[-0.624,0.617],[0,0],[0,0.881]],"v":[[-16.064,17.575],[-13.747,18.5],[8.266,18.5],[10.539,17.575],[11.519,15.285],[11.519,-2.863],[10.539,-5.11],[8.266,-6.079],[2.74,-6.079],[-0.512,-6.079],[-13.747,-6.079],[-16.064,-5.11],[-17,-2.863],[-17,15.285]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"green400","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":240,"s":[0]},{"t":270,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":240,"op":1131,"st":231,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".green400","cl":"green400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":240,"op":982,"st":82,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".grey400","cl":"grey400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Nail","parent":14,"tt":1,"tp":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Finger","parent":3,"tt":1,"tp":13,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Unlock_0and180","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-1.704,8.166,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":150,"s":[{"i":[[0,0],[0,0],[0.938,1.057],[1.355,0],[0.938,-1.057],[0,-1.527],[0,0],[-1.512,1.674],[-2.111,0],[-1.512,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[-0.938,-1.057],[-1.329,0],[-0.938,1.057],[0,0],[0,-2.408],[1.486,-1.703],[2.137,0],[1.486,1.674],[0,0],[0,0]],"v":[[-0.17,-6.078],[-0.17,-9.822],[-1.577,-13.699],[-5.017,-15.284],[-8.419,-13.699],[-9.826,-9.822],[-12.68,-9.822],[-10.412,-15.945],[-5.017,-18.5],[0.456,-15.945],[2.684,-9.822],[2.684,-6.078]],"c":true}]},{"t":165,"s":[{"i":[[0,0],[0,0],[-1.069,1.057],[-1.545,0],[-1.069,-1.057],[0,-1.527],[0,0],[1.723,1.674],[2.406,0],[1.723,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[1.069,-1.057],[1.515,0],[1.069,1.057],[0,0],[0,-2.408],[-1.693,-1.703],[-2.436,0],[-1.693,1.674],[0,0],[0,0]],"v":[[2.74,-6.079],[2.74,-9.823],[4.345,-13.699],[8.266,-15.285],[12.143,-13.699],[13.747,-9.823],[17,-9.823],[14.415,-15.945],[8.266,-18.5],[2.028,-15.945],[-0.512,-9.823],[-0.512,-6.079]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-1.704,8.166,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.266,15.285],[-13.747,15.285],[-13.747,-2.863],[8.266,-2.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.683,-0.675],[0.98,0],[0.683,0.675],[0,0.94],[-0.683,0.705],[-0.98,0],[-0.683,-0.705],[0,-0.94]],"o":[[-0.683,0.675],[-0.98,0],[-0.683,-0.675],[0,-0.94],[0.683,-0.705],[0.98,0],[0.683,0.705],[0,0.94]],"v":[[-0.245,8.677],[-2.74,9.69],[-5.236,8.677],[-6.261,6.255],[-5.236,3.788],[-2.74,2.731],[-0.245,3.788],[0.78,6.255]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.624,-0.646],[-0.891,0],[0,0],[-0.624,0.617],[0,0.881],[0,0],[0.654,0.617],[0.891,0],[0,0],[0,0],[0,0],[0.654,-0.646],[0,-0.881],[0,0]],"o":[[0.654,0.617],[0,0],[0.891,0],[0.654,-0.646],[0,0],[0,-0.881],[-0.624,-0.646],[0,0],[0,0],[0,0],[-0.891,0],[-0.624,0.617],[0,0],[0,0.881]],"v":[[-16.064,17.575],[-13.747,18.5],[8.266,18.5],[10.539,17.575],[11.519,15.285],[11.519,-2.863],[10.539,-5.11],[8.266,-6.079],[2.74,-6.079],[-0.512,-6.079],[-13.747,-6.079],[-16.064,-5.11],[-17,-2.863],[-17,15.285]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"green400","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":240,"s":[0]},{"t":270,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":240,"op":1131,"st":231,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".green400","cl":"green400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":240,"op":982,"st":82,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".grey400","cl":"grey400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Nail","parent":14,"tt":1,"tp":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Finger","parent":3,"tt":1,"tp":13,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_unlock_180.json b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_unlock_180.json
index 56cd2adc14e3..6265f44358b0 100755
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_unlock_180.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_unlock_180.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Unlock_left","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1.704,8.166,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[-101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":150,"s":[{"i":[[0,0],[0,0],[0.938,1.057],[1.355,0],[0.938,-1.057],[0,-1.527],[0,0],[-1.512,1.674],[-2.111,0],[-1.512,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[-0.938,-1.057],[-1.329,0],[-0.938,1.057],[0,0],[0,-2.408],[1.486,-1.703],[2.137,0],[1.486,1.674],[0,0],[0,0]],"v":[[-0.17,-6.078],[-0.17,-9.822],[-1.577,-13.699],[-5.017,-15.284],[-8.419,-13.699],[-9.826,-9.822],[-12.68,-9.822],[-10.412,-15.945],[-5.017,-18.5],[0.456,-15.945],[2.684,-9.822],[2.684,-6.078]],"c":true}]},{"t":165,"s":[{"i":[[0,0],[0,0],[-1.069,1.057],[-1.545,0],[-1.069,-1.057],[0,-1.527],[0,0],[1.723,1.674],[2.406,0],[1.723,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[1.069,-1.057],[1.515,0],[1.069,1.057],[0,0],[0,-2.408],[-1.693,-1.703],[-2.436,0],[-1.693,1.674],[0,0],[0,0]],"v":[[2.74,-6.079],[2.74,-9.823],[4.345,-13.699],[8.266,-15.285],[12.143,-13.699],[13.747,-9.823],[17,-9.823],[14.415,-15.945],[8.266,-18.5],[2.028,-15.945],[-0.512,-9.823],[-0.512,-6.079]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1.704,8.166,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[-101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.266,15.285],[-13.747,15.285],[-13.747,-2.863],[8.266,-2.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.683,-0.675],[0.98,0],[0.683,0.675],[0,0.94],[-0.683,0.705],[-0.98,0],[-0.683,-0.705],[0,-0.94]],"o":[[-0.683,0.675],[-0.98,0],[-0.683,-0.675],[0,-0.94],[0.683,-0.705],[0.98,0],[0.683,0.705],[0,0.94]],"v":[[-0.245,8.677],[-2.74,9.69],[-5.236,8.677],[-6.261,6.255],[-5.236,3.788],[-2.74,2.731],[-0.245,3.788],[0.78,6.255]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.624,-0.646],[-0.891,0],[0,0],[-0.624,0.617],[0,0.881],[0,0],[0.654,0.617],[0.891,0],[0,0],[0,0],[0,0],[0.654,-0.646],[0,-0.881],[0,0]],"o":[[0.654,0.617],[0,0],[0.891,0],[0.654,-0.646],[0,0],[0,-0.881],[-0.624,-0.646],[0,0],[0,0],[0,0],[-0.891,0],[-0.624,0.617],[0,0],[0,0.881]],"v":[[-16.064,17.575],[-13.747,18.5],[8.266,18.5],[10.539,17.575],[11.519,15.285],[11.519,-2.863],[10.539,-5.11],[8.266,-6.079],[2.74,-6.079],[-0.512,-6.079],[-13.747,-6.079],[-16.064,-5.11],[-17,-2.863],[-17,15.285]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[-64,64,100]},{"t":170,"s":[-43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"green400","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":240,"s":[0]},{"t":270,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":240,"op":1131,"st":231,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".green400","cl":"green400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":240,"op":982,"st":82,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".grey400","cl":"grey400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Nail","parent":14,"tt":1,"tp":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Finger","parent":3,"tt":1,"tp":13,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Unlock_left","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1.704,8.166,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[-101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":150,"s":[{"i":[[0,0],[0,0],[0.938,1.057],[1.355,0],[0.938,-1.057],[0,-1.527],[0,0],[-1.512,1.674],[-2.111,0],[-1.512,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[-0.938,-1.057],[-1.329,0],[-0.938,1.057],[0,0],[0,-2.408],[1.486,-1.703],[2.137,0],[1.486,1.674],[0,0],[0,0]],"v":[[-0.17,-6.078],[-0.17,-9.822],[-1.577,-13.699],[-5.017,-15.284],[-8.419,-13.699],[-9.826,-9.822],[-12.68,-9.822],[-10.412,-15.945],[-5.017,-18.5],[0.456,-15.945],[2.684,-9.822],[2.684,-6.078]],"c":true}]},{"t":165,"s":[{"i":[[0,0],[0,0],[-1.069,1.057],[-1.545,0],[-1.069,-1.057],[0,-1.527],[0,0],[1.723,1.674],[2.406,0],[1.723,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[1.069,-1.057],[1.515,0],[1.069,1.057],[0,0],[0,-2.408],[-1.693,-1.703],[-2.436,0],[-1.693,1.674],[0,0],[0,0]],"v":[[2.74,-6.079],[2.74,-9.823],[4.345,-13.699],[8.266,-15.285],[12.143,-13.699],[13.747,-9.823],[17,-9.823],[14.415,-15.945],[8.266,-18.5],[2.028,-15.945],[-0.512,-9.823],[-0.512,-6.079]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1.704,8.166,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[-101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.266,15.285],[-13.747,15.285],[-13.747,-2.863],[8.266,-2.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.683,-0.675],[0.98,0],[0.683,0.675],[0,0.94],[-0.683,0.705],[-0.98,0],[-0.683,-0.705],[0,-0.94]],"o":[[-0.683,0.675],[-0.98,0],[-0.683,-0.675],[0,-0.94],[0.683,-0.705],[0.98,0],[0.683,0.705],[0,0.94]],"v":[[-0.245,8.677],[-2.74,9.69],[-5.236,8.677],[-6.261,6.255],[-5.236,3.788],[-2.74,2.731],[-0.245,3.788],[0.78,6.255]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.624,-0.646],[-0.891,0],[0,0],[-0.624,0.617],[0,0.881],[0,0],[0.654,0.617],[0.891,0],[0,0],[0,0],[0,0],[0.654,-0.646],[0,-0.881],[0,0]],"o":[[0.654,0.617],[0,0],[0.891,0],[0.654,-0.646],[0,0],[0,-0.881],[-0.624,-0.646],[0,0],[0,0],[0,0],[-0.891,0],[-0.624,0.617],[0,0],[0,0.881]],"v":[[-16.064,17.575],[-13.747,18.5],[8.266,18.5],[10.539,17.575],[11.519,15.285],[11.519,-2.863],[10.539,-5.11],[8.266,-6.079],[2.74,-6.079],[-0.512,-6.079],[-13.747,-6.079],[-16.064,-5.11],[-17,-2.863],[-17,15.285]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[-64,64,100]},{"t":170,"s":[-43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"green400","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":240,"s":[0]},{"t":270,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":240,"op":1131,"st":231,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".green400","cl":"green400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":240,"op":982,"st":82,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".grey400","cl":"grey400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Nail","parent":14,"tt":1,"tp":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Finger","parent":3,"tt":1,"tp":13,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_unlock_270.json b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_unlock_270.json
index 30bb2d9f4fa6..abbd64742784 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_unlock_270.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_unlock_270.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Unlock_270","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[8.166,1.704,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":150,"s":[{"i":[[0,0],[0,0],[0.938,1.057],[1.355,0],[0.938,-1.057],[0,-1.527],[0,0],[-1.512,1.674],[-2.111,0],[-1.512,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[-0.938,-1.057],[-1.329,0],[-0.938,1.057],[0,0],[0,-2.408],[1.486,-1.703],[2.137,0],[1.486,1.674],[0,0],[0,0]],"v":[[-0.17,-6.078],[-0.17,-9.822],[-1.577,-13.699],[-5.017,-15.284],[-8.419,-13.699],[-9.826,-9.822],[-12.68,-9.822],[-10.412,-15.945],[-5.017,-18.5],[0.456,-15.945],[2.684,-9.822],[2.684,-6.078]],"c":true}]},{"t":165,"s":[{"i":[[0,0],[0,0],[-1.069,1.057],[-1.545,0],[-1.069,-1.057],[0,-1.527],[0,0],[1.723,1.674],[2.406,0],[1.723,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[1.069,-1.057],[1.515,0],[1.069,1.057],[0,0],[0,-2.408],[-1.693,-1.703],[-2.436,0],[-1.693,1.674],[0,0],[0,0]],"v":[[2.74,-6.079],[2.74,-9.823],[4.345,-13.699],[8.266,-15.285],[12.143,-13.699],[13.747,-9.823],[17,-9.823],[14.415,-15.945],[8.266,-18.5],[2.028,-15.945],[-0.512,-9.823],[-0.512,-6.079]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[8.166,1.704,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.266,15.285],[-13.747,15.285],[-13.747,-2.863],[8.266,-2.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.683,-0.675],[0.98,0],[0.683,0.675],[0,0.94],[-0.683,0.705],[-0.98,0],[-0.683,-0.705],[0,-0.94]],"o":[[-0.683,0.675],[-0.98,0],[-0.683,-0.675],[0,-0.94],[0.683,-0.705],[0.98,0],[0.683,0.705],[0,0.94]],"v":[[-0.245,8.677],[-2.74,9.69],[-5.236,8.677],[-6.261,6.255],[-5.236,3.788],[-2.74,2.731],[-0.245,3.788],[0.78,6.255]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.624,-0.646],[-0.891,0],[0,0],[-0.624,0.617],[0,0.881],[0,0],[0.654,0.617],[0.891,0],[0,0],[0,0],[0,0],[0.654,-0.646],[0,-0.881],[0,0]],"o":[[0.654,0.617],[0,0],[0.891,0],[0.654,-0.646],[0,0],[0,-0.881],[-0.624,-0.646],[0,0],[0,0],[0,0],[-0.891,0],[-0.624,0.617],[0,0],[0,0.881]],"v":[[-16.064,17.575],[-13.747,18.5],[8.266,18.5],[10.539,17.575],[11.519,15.285],[11.519,-2.863],[10.539,-5.11],[8.266,-6.079],[2.74,-6.079],[-0.512,-6.079],[-13.747,-6.079],[-16.064,-5.11],[-17,-2.863],[-17,15.285]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"green400","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":240,"s":[0]},{"t":270,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":240,"op":1131,"st":231,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".green400","cl":"green400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":240,"op":982,"st":82,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".grey400","cl":"grey400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Nail","parent":14,"tt":1,"tp":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Finger","parent":3,"tt":1,"tp":13,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Unlock_270","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[8.166,1.704,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":150,"s":[{"i":[[0,0],[0,0],[0.938,1.057],[1.355,0],[0.938,-1.057],[0,-1.527],[0,0],[-1.512,1.674],[-2.111,0],[-1.512,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[-0.938,-1.057],[-1.329,0],[-0.938,1.057],[0,0],[0,-2.408],[1.486,-1.703],[2.137,0],[1.486,1.674],[0,0],[0,0]],"v":[[-0.17,-6.078],[-0.17,-9.822],[-1.577,-13.699],[-5.017,-15.284],[-8.419,-13.699],[-9.826,-9.822],[-12.68,-9.822],[-10.412,-15.945],[-5.017,-18.5],[0.456,-15.945],[2.684,-9.822],[2.684,-6.078]],"c":true}]},{"t":165,"s":[{"i":[[0,0],[0,0],[-1.069,1.057],[-1.545,0],[-1.069,-1.057],[0,-1.527],[0,0],[1.723,1.674],[2.406,0],[1.723,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[1.069,-1.057],[1.515,0],[1.069,1.057],[0,0],[0,-2.408],[-1.693,-1.703],[-2.436,0],[-1.693,1.674],[0,0],[0,0]],"v":[[2.74,-6.079],[2.74,-9.823],[4.345,-13.699],[8.266,-15.285],[12.143,-13.699],[13.747,-9.823],[17,-9.823],[14.415,-15.945],[8.266,-18.5],[2.028,-15.945],[-0.512,-9.823],[-0.512,-6.079]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[8.166,1.704,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.266,15.285],[-13.747,15.285],[-13.747,-2.863],[8.266,-2.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.683,-0.675],[0.98,0],[0.683,0.675],[0,0.94],[-0.683,0.705],[-0.98,0],[-0.683,-0.705],[0,-0.94]],"o":[[-0.683,0.675],[-0.98,0],[-0.683,-0.675],[0,-0.94],[0.683,-0.705],[0.98,0],[0.683,0.705],[0,0.94]],"v":[[-0.245,8.677],[-2.74,9.69],[-5.236,8.677],[-6.261,6.255],[-5.236,3.788],[-2.74,2.731],[-0.245,3.788],[0.78,6.255]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.624,-0.646],[-0.891,0],[0,0],[-0.624,0.617],[0,0.881],[0,0],[0.654,0.617],[0.891,0],[0,0],[0,0],[0,0],[0.654,-0.646],[0,-0.881],[0,0]],"o":[[0.654,0.617],[0,0],[0.891,0],[0.654,-0.646],[0,0],[0,-0.881],[-0.624,-0.646],[0,0],[0,0],[0,0],[-0.891,0],[-0.624,0.617],[0,0],[0,0.881]],"v":[[-16.064,17.575],[-13.747,18.5],[8.266,18.5],[10.539,17.575],[11.519,15.285],[11.519,-2.863],[10.539,-5.11],[8.266,-6.079],[2.74,-6.079],[-0.512,-6.079],[-13.747,-6.079],[-16.064,-5.11],[-17,-2.863],[-17,15.285]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"green400","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":240,"s":[0]},{"t":270,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":240,"op":1131,"st":231,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".green400","cl":"green400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":240,"op":982,"st":82,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".grey400","cl":"grey400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Nail","parent":14,"tt":1,"tp":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Finger","parent":3,"tt":1,"tp":13,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_unlock_90.json b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_unlock_90.json
index f9d13a6c64c2..5dab0b58ff5e 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_unlock_90.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_fingerprint_to_unlock_90.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Unlock_90","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[-8.166,-1.704,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":150,"s":[{"i":[[0,0],[0,0],[0.938,1.057],[1.355,0],[0.938,-1.057],[0,-1.527],[0,0],[-1.512,1.674],[-2.111,0],[-1.512,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[-0.938,-1.057],[-1.329,0],[-0.938,1.057],[0,0],[0,-2.408],[1.486,-1.703],[2.137,0],[1.486,1.674],[0,0],[0,0]],"v":[[-0.17,-6.078],[-0.17,-9.822],[-1.577,-13.699],[-5.017,-15.284],[-8.419,-13.699],[-9.826,-9.822],[-12.68,-9.822],[-10.412,-15.945],[-5.017,-18.5],[0.456,-15.945],[2.684,-9.822],[2.684,-6.078]],"c":true}]},{"t":165,"s":[{"i":[[0,0],[0,0],[-1.069,1.057],[-1.545,0],[-1.069,-1.057],[0,-1.527],[0,0],[1.723,1.674],[2.406,0],[1.723,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[1.069,-1.057],[1.515,0],[1.069,1.057],[0,0],[0,-2.408],[-1.693,-1.703],[-2.436,0],[-1.693,1.674],[0,0],[0,0]],"v":[[2.74,-6.079],[2.74,-9.823],[4.345,-13.699],[8.266,-15.285],[12.143,-13.699],[13.747,-9.823],[17,-9.823],[14.415,-15.945],[8.266,-18.5],[2.028,-15.945],[-0.512,-9.823],[-0.512,-6.079]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[-8.166,-1.704,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.266,15.285],[-13.747,15.285],[-13.747,-2.863],[8.266,-2.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.683,-0.675],[0.98,0],[0.683,0.675],[0,0.94],[-0.683,0.705],[-0.98,0],[-0.683,-0.705],[0,-0.94]],"o":[[-0.683,0.675],[-0.98,0],[-0.683,-0.675],[0,-0.94],[0.683,-0.705],[0.98,0],[0.683,0.705],[0,0.94]],"v":[[-0.245,8.677],[-2.74,9.69],[-5.236,8.677],[-6.261,6.255],[-5.236,3.788],[-2.74,2.731],[-0.245,3.788],[0.78,6.255]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.624,-0.646],[-0.891,0],[0,0],[-0.624,0.617],[0,0.881],[0,0],[0.654,0.617],[0.891,0],[0,0],[0,0],[0,0],[0.654,-0.646],[0,-0.881],[0,0]],"o":[[0.654,0.617],[0,0],[0.891,0],[0.654,-0.646],[0,0],[0,-0.881],[-0.624,-0.646],[0,0],[0,0],[0,0],[-0.891,0],[-0.624,0.617],[0,0],[0,0.881]],"v":[[-16.064,17.575],[-13.747,18.5],[8.266,18.5],[10.539,17.575],[11.519,15.285],[11.519,-2.863],[10.539,-5.11],[8.266,-6.079],[2.74,-6.079],[-0.512,-6.079],[-13.747,-6.079],[-16.064,-5.11],[-17,-2.863],[-17,15.285]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"green400","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":240,"s":[0]},{"t":270,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":240,"op":1131,"st":231,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".green400","cl":"green400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":240,"op":982,"st":82,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".grey400","cl":"grey400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Nail","parent":14,"tt":1,"tp":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Finger","parent":3,"tt":1,"tp":13,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Unlock_90","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[-8.166,-1.704,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":150,"s":[{"i":[[0,0],[0,0],[0.938,1.057],[1.355,0],[0.938,-1.057],[0,-1.527],[0,0],[-1.512,1.674],[-2.111,0],[-1.512,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[-0.938,-1.057],[-1.329,0],[-0.938,1.057],[0,0],[0,-2.408],[1.486,-1.703],[2.137,0],[1.486,1.674],[0,0],[0,0]],"v":[[-0.17,-6.078],[-0.17,-9.822],[-1.577,-13.699],[-5.017,-15.284],[-8.419,-13.699],[-9.826,-9.822],[-12.68,-9.822],[-10.412,-15.945],[-5.017,-18.5],[0.456,-15.945],[2.684,-9.822],[2.684,-6.078]],"c":true}]},{"t":165,"s":[{"i":[[0,0],[0,0],[-1.069,1.057],[-1.545,0],[-1.069,-1.057],[0,-1.527],[0,0],[1.723,1.674],[2.406,0],[1.723,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[1.069,-1.057],[1.515,0],[1.069,1.057],[0,0],[0,-2.408],[-1.693,-1.703],[-2.436,0],[-1.693,1.674],[0,0],[0,0]],"v":[[2.74,-6.079],[2.74,-9.823],[4.345,-13.699],[8.266,-15.285],[12.143,-13.699],[13.747,-9.823],[17,-9.823],[14.415,-15.945],[8.266,-18.5],[2.028,-15.945],[-0.512,-9.823],[-0.512,-6.079]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[-8.166,-1.704,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.266,15.285],[-13.747,15.285],[-13.747,-2.863],[8.266,-2.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.683,-0.675],[0.98,0],[0.683,0.675],[0,0.94],[-0.683,0.705],[-0.98,0],[-0.683,-0.705],[0,-0.94]],"o":[[-0.683,0.675],[-0.98,0],[-0.683,-0.675],[0,-0.94],[0.683,-0.705],[0.98,0],[0.683,0.705],[0,0.94]],"v":[[-0.245,8.677],[-2.74,9.69],[-5.236,8.677],[-6.261,6.255],[-5.236,3.788],[-2.74,2.731],[-0.245,3.788],[0.78,6.255]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.624,-0.646],[-0.891,0],[0,0],[-0.624,0.617],[0,0.881],[0,0],[0.654,0.617],[0.891,0],[0,0],[0,0],[0,0],[0.654,-0.646],[0,-0.881],[0,0]],"o":[[0.654,0.617],[0,0],[0.891,0],[0.654,-0.646],[0,0],[0,-0.881],[-0.624,-0.646],[0,0],[0,0],[0,0],[-0.891,0],[-0.624,0.617],[0,0],[0,0.881]],"v":[[-16.064,17.575],[-13.747,18.5],[8.266,18.5],[10.539,17.575],[11.519,15.285],[11.519,-2.863],[10.539,-5.11],[8.266,-6.079],[2.74,-6.079],[-0.512,-6.079],[-13.747,-6.079],[-16.064,-5.11],[-17,-2.863],[-17,15.285]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"green400","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":240,"s":[0]},{"t":270,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":240,"op":1131,"st":231,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".green400","cl":"green400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":240,"op":982,"st":82,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".grey400","cl":"grey400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Nail","parent":14,"tt":1,"tp":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Finger","parent":3,"tt":1,"tp":13,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_error_to_fingerprint.json b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_error_to_fingerprint.json
index 688ed7b3c57f..d217721f935c 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_error_to_fingerprint.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_error_to_fingerprint.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":240,"op":421,"w":150,"h":150,"nm":"BM_Prompt_Error-to-FP_left","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[-64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[-43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[-43.5,43.5,100]},{"t":260,"s":[-64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":240,"op":421,"w":150,"h":150,"nm":"BM_Prompt_Error-to-FP_left","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[-64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[-43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[-43.5,43.5,100]},{"t":260,"s":[-64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_error_to_fingerprint_180.json b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_error_to_fingerprint_180.json
index fa6fc07c3fe6..dadf4cb9dd9e 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_error_to_fingerprint_180.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_error_to_fingerprint_180.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":240,"op":421,"w":150,"h":150,"nm":"BM_Prompt_Error-to-FP_0and180","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":240,"op":421,"w":150,"h":150,"nm":"BM_Prompt_Error-to-FP_0and180","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_error_to_fingerprint_270.json b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_error_to_fingerprint_270.json
index 9e6b4228c3e8..8b8b2e667646 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_error_to_fingerprint_270.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_error_to_fingerprint_270.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":240,"op":421,"w":150,"h":150,"nm":"BM_Prompt_Error-to-FP_90","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":240,"op":421,"w":150,"h":150,"nm":"BM_Prompt_Error-to-FP_90","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_error_to_fingerprint_90.json b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_error_to_fingerprint_90.json
index 477c489ad086..d916f25fc138 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_error_to_fingerprint_90.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_error_to_fingerprint_90.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":240,"op":421,"w":150,"h":150,"nm":"BM_Prompt_Error-to-FP_270","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":270,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":240,"op":421,"w":150,"h":150,"nm":"BM_Prompt_Error-to-FP_270","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":270,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_authenticating.json b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_authenticating.json
index c68803767266..257e766c6100 100755
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_authenticating.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_authenticating.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":301,"w":150,"h":150,"nm":"BM_Prompt_180","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[-64,64,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Nail","parent":8,"tt":1,"tp":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".blue401","cl":"blue401","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":301,"w":150,"h":150,"nm":"BM_Prompt_180","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[-64,64,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Nail","parent":8,"tt":1,"tp":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_error.json b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_error.json
index 4e66cfa2a40a..5e99cad85731 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_error.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_error.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Error_left","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[-64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[-43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[-43.5,43.5,100]},{"t":260,"s":[-64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Error_left","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[-64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[-43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[-43.5,43.5,100]},{"t":260,"s":[-64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_error_180.json b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_error_180.json
index 603760f1fbf8..1ad798d98ff1 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_error_180.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_error_180.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Error_0and180","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Error_0and180","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_error_270.json b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_error_270.json
index 59dc0d4c4c85..40500f57a263 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_error_270.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_error_270.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Error_90","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Error_90","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_error_90.json b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_error_90.json
index a1d2251b8e7a..b689e8580aad 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_error_90.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_error_90.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Error_270","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":270,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Error_270","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[43.5,43.5,100]},{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":240,"s":[43.5,43.5,100]},{"t":260,"s":[64,64,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red400","cl":"red400","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,8.484,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.91,0.191,0],"ix":1,"l":2},"s":{"a":0,"k":[229.885,229.885,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,20],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,-7.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red400","cl":"red400","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.889,9.487,0],"ix":2,"l":2},"a":{"a":0,"k":[-3.889,7.487,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[4,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333396912,0.403921604156,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.91,7.491],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".red400","cl":"red400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":270,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":170,"s":[6]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":240,"s":[6]},{"t":260,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Matte 3","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Nail 2","parent":11,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Matte 2","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Finger 2","parent":1,"tt":1,"tp":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[43]},{"t":365,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":320,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":365,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":428,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Nail","parent":15,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":14,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":159,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":320,"s":[50]},{"t":390,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":290,"s":[0,0,100]},{"t":380,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":290,"op":391,"st":290,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":290,"s":[50]},{"t":360,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":260,"s":[0,0,100]},{"t":350,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":260,"op":391,"st":260,"ct":1,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":131,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":131,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":248,"s":[0]},{"t":256,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_success.json b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_success.json
index 21ee20d02d78..b96b7eb68e4c 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_success.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_success.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":211,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Success_left","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[-64,64,100]},{"t":170,"s":[-43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"green400","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[-71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":150,"s":[0]},{"t":180,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":150,"op":1041,"st":141,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".green400","cl":"green400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"t":166,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Nail","parent":10,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":9,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":211,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Success_left","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[-64,64,100]},{"t":170,"s":[-43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"green400","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[-71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":150,"s":[0]},{"t":180,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":150,"op":1041,"st":141,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".green400","cl":"green400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"t":166,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Nail","parent":10,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":9,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_success_180.json b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_success_180.json
index e2c850062985..8db1e0173dfe 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_success_180.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_success_180.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":211,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Success_0and180","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"green400","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":150,"s":[0]},{"t":180,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":150,"op":1041,"st":141,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".green400","cl":"green400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"t":166,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Nail","parent":10,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":9,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":211,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Success_0and180","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"green400","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":150,"s":[0]},{"t":180,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":150,"op":1041,"st":141,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".green400","cl":"green400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"t":166,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Nail","parent":10,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":9,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_success_270.json b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_success_270.json
index 51e17f7c5fa3..b42f04221224 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_success_270.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_success_270.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":211,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Success_90","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"green400","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":150,"s":[0]},{"t":180,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":150,"op":1041,"st":141,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".green400","cl":"green400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"t":166,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Nail","parent":10,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":9,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":211,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Success_90","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"green400","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":150,"s":[0]},{"t":180,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":150,"op":1041,"st":141,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".green400","cl":"green400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"t":166,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Nail","parent":10,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":9,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_success_90.json b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_success_90.json
index 4c1a80955906..a76debecad6b 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_success_90.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_success_90.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":211,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Success_270","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"green400","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":150,"s":[0]},{"t":180,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":150,"op":1041,"st":141,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".green400","cl":"green400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"t":166,"s":[100]}],"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Nail","parent":10,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":9,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".blue400","cl":"blue400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":211,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Success_270","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"green400","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":150,"s":[0]},{"t":180,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":150,"op":1041,"st":141,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".green400","cl":"green400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"t":166,"s":[100]}],"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey400","cl":"grey400","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey600","cl":"grey600","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Nail","parent":10,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Finger","parent":1,"tt":1,"tp":9,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.833,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_unlock.json b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_unlock.json
index 56cd2adc14e3..6265f44358b0 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_unlock.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_unlock.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Unlock_left","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1.704,8.166,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[-101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":150,"s":[{"i":[[0,0],[0,0],[0.938,1.057],[1.355,0],[0.938,-1.057],[0,-1.527],[0,0],[-1.512,1.674],[-2.111,0],[-1.512,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[-0.938,-1.057],[-1.329,0],[-0.938,1.057],[0,0],[0,-2.408],[1.486,-1.703],[2.137,0],[1.486,1.674],[0,0],[0,0]],"v":[[-0.17,-6.078],[-0.17,-9.822],[-1.577,-13.699],[-5.017,-15.284],[-8.419,-13.699],[-9.826,-9.822],[-12.68,-9.822],[-10.412,-15.945],[-5.017,-18.5],[0.456,-15.945],[2.684,-9.822],[2.684,-6.078]],"c":true}]},{"t":165,"s":[{"i":[[0,0],[0,0],[-1.069,1.057],[-1.545,0],[-1.069,-1.057],[0,-1.527],[0,0],[1.723,1.674],[2.406,0],[1.723,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[1.069,-1.057],[1.515,0],[1.069,1.057],[0,0],[0,-2.408],[-1.693,-1.703],[-2.436,0],[-1.693,1.674],[0,0],[0,0]],"v":[[2.74,-6.079],[2.74,-9.823],[4.345,-13.699],[8.266,-15.285],[12.143,-13.699],[13.747,-9.823],[17,-9.823],[14.415,-15.945],[8.266,-18.5],[2.028,-15.945],[-0.512,-9.823],[-0.512,-6.079]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1.704,8.166,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[-101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.266,15.285],[-13.747,15.285],[-13.747,-2.863],[8.266,-2.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.683,-0.675],[0.98,0],[0.683,0.675],[0,0.94],[-0.683,0.705],[-0.98,0],[-0.683,-0.705],[0,-0.94]],"o":[[-0.683,0.675],[-0.98,0],[-0.683,-0.675],[0,-0.94],[0.683,-0.705],[0.98,0],[0.683,0.705],[0,0.94]],"v":[[-0.245,8.677],[-2.74,9.69],[-5.236,8.677],[-6.261,6.255],[-5.236,3.788],[-2.74,2.731],[-0.245,3.788],[0.78,6.255]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.624,-0.646],[-0.891,0],[0,0],[-0.624,0.617],[0,0.881],[0,0],[0.654,0.617],[0.891,0],[0,0],[0,0],[0,0],[0.654,-0.646],[0,-0.881],[0,0]],"o":[[0.654,0.617],[0,0],[0.891,0],[0.654,-0.646],[0,0],[0,-0.881],[-0.624,-0.646],[0,0],[0,0],[0,0],[-0.891,0],[-0.624,0.617],[0,0],[0,0.881]],"v":[[-16.064,17.575],[-13.747,18.5],[8.266,18.5],[10.539,17.575],[11.519,15.285],[11.519,-2.863],[10.539,-5.11],[8.266,-6.079],[2.74,-6.079],[-0.512,-6.079],[-13.747,-6.079],[-16.064,-5.11],[-17,-2.863],[-17,15.285]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[-64,64,100]},{"t":170,"s":[-43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"green400","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":240,"s":[0]},{"t":270,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":240,"op":1131,"st":231,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".green400","cl":"green400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":240,"op":982,"st":82,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".grey400","cl":"grey400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Nail","parent":14,"tt":1,"tp":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Finger","parent":3,"tt":1,"tp":13,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Unlock_left","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1.704,8.166,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[-101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":150,"s":[{"i":[[0,0],[0,0],[0.938,1.057],[1.355,0],[0.938,-1.057],[0,-1.527],[0,0],[-1.512,1.674],[-2.111,0],[-1.512,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[-0.938,-1.057],[-1.329,0],[-0.938,1.057],[0,0],[0,-2.408],[1.486,-1.703],[2.137,0],[1.486,1.674],[0,0],[0,0]],"v":[[-0.17,-6.078],[-0.17,-9.822],[-1.577,-13.699],[-5.017,-15.284],[-8.419,-13.699],[-9.826,-9.822],[-12.68,-9.822],[-10.412,-15.945],[-5.017,-18.5],[0.456,-15.945],[2.684,-9.822],[2.684,-6.078]],"c":true}]},{"t":165,"s":[{"i":[[0,0],[0,0],[-1.069,1.057],[-1.545,0],[-1.069,-1.057],[0,-1.527],[0,0],[1.723,1.674],[2.406,0],[1.723,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[1.069,-1.057],[1.515,0],[1.069,1.057],[0,0],[0,-2.408],[-1.693,-1.703],[-2.436,0],[-1.693,1.674],[0,0],[0,0]],"v":[[2.74,-6.079],[2.74,-9.823],[4.345,-13.699],[8.266,-15.285],[12.143,-13.699],[13.747,-9.823],[17,-9.823],[14.415,-15.945],[8.266,-18.5],[2.028,-15.945],[-0.512,-9.823],[-0.512,-6.079]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1.704,8.166,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[-101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.266,15.285],[-13.747,15.285],[-13.747,-2.863],[8.266,-2.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.683,-0.675],[0.98,0],[0.683,0.675],[0,0.94],[-0.683,0.705],[-0.98,0],[-0.683,-0.705],[0,-0.94]],"o":[[-0.683,0.675],[-0.98,0],[-0.683,-0.675],[0,-0.94],[0.683,-0.705],[0.98,0],[0.683,0.705],[0,0.94]],"v":[[-0.245,8.677],[-2.74,9.69],[-5.236,8.677],[-6.261,6.255],[-5.236,3.788],[-2.74,2.731],[-0.245,3.788],[0.78,6.255]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.624,-0.646],[-0.891,0],[0,0],[-0.624,0.617],[0,0.881],[0,0],[0.654,0.617],[0.891,0],[0,0],[0,0],[0,0],[0.654,-0.646],[0,-0.881],[0,0]],"o":[[0.654,0.617],[0,0],[0.891,0],[0.654,-0.646],[0,0],[0,-0.881],[-0.624,-0.646],[0,0],[0,0],[0,0],[-0.891,0],[-0.624,0.617],[0,0],[0,0.881]],"v":[[-16.064,17.575],[-13.747,18.5],[8.266,18.5],[10.539,17.575],[11.519,15.285],[11.519,-2.863],[10.539,-5.11],[8.266,-6.079],[2.74,-6.079],[-0.512,-6.079],[-13.747,-6.079],[-16.064,-5.11],[-17,-2.863],[-17,15.285]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[-64,64,100]},{"t":170,"s":[-43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"green400","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":240,"s":[0]},{"t":270,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":240,"op":1131,"st":231,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".green400","cl":"green400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":240,"op":982,"st":82,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".grey400","cl":"grey400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Nail","parent":14,"tt":1,"tp":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Finger","parent":3,"tt":1,"tp":13,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_unlock_180.json b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_unlock_180.json
index c4db1e4b2ff6..be313898fead 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_unlock_180.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_unlock_180.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Unlock_0and180","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-1.704,8.166,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":150,"s":[{"i":[[0,0],[0,0],[0.938,1.057],[1.355,0],[0.938,-1.057],[0,-1.527],[0,0],[-1.512,1.674],[-2.111,0],[-1.512,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[-0.938,-1.057],[-1.329,0],[-0.938,1.057],[0,0],[0,-2.408],[1.486,-1.703],[2.137,0],[1.486,1.674],[0,0],[0,0]],"v":[[-0.17,-6.078],[-0.17,-9.822],[-1.577,-13.699],[-5.017,-15.284],[-8.419,-13.699],[-9.826,-9.822],[-12.68,-9.822],[-10.412,-15.945],[-5.017,-18.5],[0.456,-15.945],[2.684,-9.822],[2.684,-6.078]],"c":true}]},{"t":165,"s":[{"i":[[0,0],[0,0],[-1.069,1.057],[-1.545,0],[-1.069,-1.057],[0,-1.527],[0,0],[1.723,1.674],[2.406,0],[1.723,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[1.069,-1.057],[1.515,0],[1.069,1.057],[0,0],[0,-2.408],[-1.693,-1.703],[-2.436,0],[-1.693,1.674],[0,0],[0,0]],"v":[[2.74,-6.079],[2.74,-9.823],[4.345,-13.699],[8.266,-15.285],[12.143,-13.699],[13.747,-9.823],[17,-9.823],[14.415,-15.945],[8.266,-18.5],[2.028,-15.945],[-0.512,-9.823],[-0.512,-6.079]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-1.704,8.166,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.266,15.285],[-13.747,15.285],[-13.747,-2.863],[8.266,-2.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.683,-0.675],[0.98,0],[0.683,0.675],[0,0.94],[-0.683,0.705],[-0.98,0],[-0.683,-0.705],[0,-0.94]],"o":[[-0.683,0.675],[-0.98,0],[-0.683,-0.675],[0,-0.94],[0.683,-0.705],[0.98,0],[0.683,0.705],[0,0.94]],"v":[[-0.245,8.677],[-2.74,9.69],[-5.236,8.677],[-6.261,6.255],[-5.236,3.788],[-2.74,2.731],[-0.245,3.788],[0.78,6.255]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.624,-0.646],[-0.891,0],[0,0],[-0.624,0.617],[0,0.881],[0,0],[0.654,0.617],[0.891,0],[0,0],[0,0],[0,0],[0.654,-0.646],[0,-0.881],[0,0]],"o":[[0.654,0.617],[0,0],[0.891,0],[0.654,-0.646],[0,0],[0,-0.881],[-0.624,-0.646],[0,0],[0,0],[0,0],[-0.891,0],[-0.624,0.617],[0,0],[0,0.881]],"v":[[-16.064,17.575],[-13.747,18.5],[8.266,18.5],[10.539,17.575],[11.519,15.285],[11.519,-2.863],[10.539,-5.11],[8.266,-6.079],[2.74,-6.079],[-0.512,-6.079],[-13.747,-6.079],[-16.064,-5.11],[-17,-2.863],[-17,15.285]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"green400","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":240,"s":[0]},{"t":270,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":240,"op":1131,"st":231,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".green400","cl":"green400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":240,"op":982,"st":82,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".grey400","cl":"grey400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Nail","parent":14,"tt":1,"tp":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Finger","parent":3,"tt":1,"tp":13,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Unlock_0and180","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-1.704,8.166,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":150,"s":[{"i":[[0,0],[0,0],[0.938,1.057],[1.355,0],[0.938,-1.057],[0,-1.527],[0,0],[-1.512,1.674],[-2.111,0],[-1.512,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[-0.938,-1.057],[-1.329,0],[-0.938,1.057],[0,0],[0,-2.408],[1.486,-1.703],[2.137,0],[1.486,1.674],[0,0],[0,0]],"v":[[-0.17,-6.078],[-0.17,-9.822],[-1.577,-13.699],[-5.017,-15.284],[-8.419,-13.699],[-9.826,-9.822],[-12.68,-9.822],[-10.412,-15.945],[-5.017,-18.5],[0.456,-15.945],[2.684,-9.822],[2.684,-6.078]],"c":true}]},{"t":165,"s":[{"i":[[0,0],[0,0],[-1.069,1.057],[-1.545,0],[-1.069,-1.057],[0,-1.527],[0,0],[1.723,1.674],[2.406,0],[1.723,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[1.069,-1.057],[1.515,0],[1.069,1.057],[0,0],[0,-2.408],[-1.693,-1.703],[-2.436,0],[-1.693,1.674],[0,0],[0,0]],"v":[[2.74,-6.079],[2.74,-9.823],[4.345,-13.699],[8.266,-15.285],[12.143,-13.699],[13.747,-9.823],[17,-9.823],[14.415,-15.945],[8.266,-18.5],[2.028,-15.945],[-0.512,-9.823],[-0.512,-6.079]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-1.704,8.166,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.266,15.285],[-13.747,15.285],[-13.747,-2.863],[8.266,-2.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.683,-0.675],[0.98,0],[0.683,0.675],[0,0.94],[-0.683,0.705],[-0.98,0],[-0.683,-0.705],[0,-0.94]],"o":[[-0.683,0.675],[-0.98,0],[-0.683,-0.675],[0,-0.94],[0.683,-0.705],[0.98,0],[0.683,0.705],[0,0.94]],"v":[[-0.245,8.677],[-2.74,9.69],[-5.236,8.677],[-6.261,6.255],[-5.236,3.788],[-2.74,2.731],[-0.245,3.788],[0.78,6.255]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.624,-0.646],[-0.891,0],[0,0],[-0.624,0.617],[0,0.881],[0,0],[0.654,0.617],[0.891,0],[0,0],[0,0],[0,0],[0.654,-0.646],[0,-0.881],[0,0]],"o":[[0.654,0.617],[0,0],[0.891,0],[0.654,-0.646],[0,0],[0,-0.881],[-0.624,-0.646],[0,0],[0,0],[0,0],[-0.891,0],[-0.624,0.617],[0,0],[0,0.881]],"v":[[-16.064,17.575],[-13.747,18.5],[8.266,18.5],[10.539,17.575],[11.519,15.285],[11.519,-2.863],[10.539,-5.11],[8.266,-6.079],[2.74,-6.079],[-0.512,-6.079],[-13.747,-6.079],[-16.064,-5.11],[-17,-2.863],[-17,15.285]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"green400","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":240,"s":[0]},{"t":270,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":240,"op":1131,"st":231,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".green400","cl":"green400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":240,"op":982,"st":82,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".grey400","cl":"grey400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Nail","parent":14,"tt":1,"tp":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Finger","parent":3,"tt":1,"tp":13,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_unlock_270.json b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_unlock_270.json
index f9d13a6c64c2..5dab0b58ff5e 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_unlock_270.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_unlock_270.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Unlock_90","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[-8.166,-1.704,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":150,"s":[{"i":[[0,0],[0,0],[0.938,1.057],[1.355,0],[0.938,-1.057],[0,-1.527],[0,0],[-1.512,1.674],[-2.111,0],[-1.512,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[-0.938,-1.057],[-1.329,0],[-0.938,1.057],[0,0],[0,-2.408],[1.486,-1.703],[2.137,0],[1.486,1.674],[0,0],[0,0]],"v":[[-0.17,-6.078],[-0.17,-9.822],[-1.577,-13.699],[-5.017,-15.284],[-8.419,-13.699],[-9.826,-9.822],[-12.68,-9.822],[-10.412,-15.945],[-5.017,-18.5],[0.456,-15.945],[2.684,-9.822],[2.684,-6.078]],"c":true}]},{"t":165,"s":[{"i":[[0,0],[0,0],[-1.069,1.057],[-1.545,0],[-1.069,-1.057],[0,-1.527],[0,0],[1.723,1.674],[2.406,0],[1.723,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[1.069,-1.057],[1.515,0],[1.069,1.057],[0,0],[0,-2.408],[-1.693,-1.703],[-2.436,0],[-1.693,1.674],[0,0],[0,0]],"v":[[2.74,-6.079],[2.74,-9.823],[4.345,-13.699],[8.266,-15.285],[12.143,-13.699],[13.747,-9.823],[17,-9.823],[14.415,-15.945],[8.266,-18.5],[2.028,-15.945],[-0.512,-9.823],[-0.512,-6.079]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[-8.166,-1.704,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.266,15.285],[-13.747,15.285],[-13.747,-2.863],[8.266,-2.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.683,-0.675],[0.98,0],[0.683,0.675],[0,0.94],[-0.683,0.705],[-0.98,0],[-0.683,-0.705],[0,-0.94]],"o":[[-0.683,0.675],[-0.98,0],[-0.683,-0.675],[0,-0.94],[0.683,-0.705],[0.98,0],[0.683,0.705],[0,0.94]],"v":[[-0.245,8.677],[-2.74,9.69],[-5.236,8.677],[-6.261,6.255],[-5.236,3.788],[-2.74,2.731],[-0.245,3.788],[0.78,6.255]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.624,-0.646],[-0.891,0],[0,0],[-0.624,0.617],[0,0.881],[0,0],[0.654,0.617],[0.891,0],[0,0],[0,0],[0,0],[0.654,-0.646],[0,-0.881],[0,0]],"o":[[0.654,0.617],[0,0],[0.891,0],[0.654,-0.646],[0,0],[0,-0.881],[-0.624,-0.646],[0,0],[0,0],[0,0],[-0.891,0],[-0.624,0.617],[0,0],[0,0.881]],"v":[[-16.064,17.575],[-13.747,18.5],[8.266,18.5],[10.539,17.575],[11.519,15.285],[11.519,-2.863],[10.539,-5.11],[8.266,-6.079],[2.74,-6.079],[-0.512,-6.079],[-13.747,-6.079],[-16.064,-5.11],[-17,-2.863],[-17,15.285]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"green400","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":240,"s":[0]},{"t":270,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":240,"op":1131,"st":231,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".green400","cl":"green400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":240,"op":982,"st":82,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".grey400","cl":"grey400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Nail","parent":14,"tt":1,"tp":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Finger","parent":3,"tt":1,"tp":13,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Unlock_90","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[-8.166,-1.704,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":150,"s":[{"i":[[0,0],[0,0],[0.938,1.057],[1.355,0],[0.938,-1.057],[0,-1.527],[0,0],[-1.512,1.674],[-2.111,0],[-1.512,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[-0.938,-1.057],[-1.329,0],[-0.938,1.057],[0,0],[0,-2.408],[1.486,-1.703],[2.137,0],[1.486,1.674],[0,0],[0,0]],"v":[[-0.17,-6.078],[-0.17,-9.822],[-1.577,-13.699],[-5.017,-15.284],[-8.419,-13.699],[-9.826,-9.822],[-12.68,-9.822],[-10.412,-15.945],[-5.017,-18.5],[0.456,-15.945],[2.684,-9.822],[2.684,-6.078]],"c":true}]},{"t":165,"s":[{"i":[[0,0],[0,0],[-1.069,1.057],[-1.545,0],[-1.069,-1.057],[0,-1.527],[0,0],[1.723,1.674],[2.406,0],[1.723,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[1.069,-1.057],[1.515,0],[1.069,1.057],[0,0],[0,-2.408],[-1.693,-1.703],[-2.436,0],[-1.693,1.674],[0,0],[0,0]],"v":[[2.74,-6.079],[2.74,-9.823],[4.345,-13.699],[8.266,-15.285],[12.143,-13.699],[13.747,-9.823],[17,-9.823],[14.415,-15.945],[8.266,-18.5],[2.028,-15.945],[-0.512,-9.823],[-0.512,-6.079]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[-8.166,-1.704,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.266,15.285],[-13.747,15.285],[-13.747,-2.863],[8.266,-2.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.683,-0.675],[0.98,0],[0.683,0.675],[0,0.94],[-0.683,0.705],[-0.98,0],[-0.683,-0.705],[0,-0.94]],"o":[[-0.683,0.675],[-0.98,0],[-0.683,-0.675],[0,-0.94],[0.683,-0.705],[0.98,0],[0.683,0.705],[0,0.94]],"v":[[-0.245,8.677],[-2.74,9.69],[-5.236,8.677],[-6.261,6.255],[-5.236,3.788],[-2.74,2.731],[-0.245,3.788],[0.78,6.255]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.624,-0.646],[-0.891,0],[0,0],[-0.624,0.617],[0,0.881],[0,0],[0.654,0.617],[0.891,0],[0,0],[0,0],[0,0],[0.654,-0.646],[0,-0.881],[0,0]],"o":[[0.654,0.617],[0,0],[0.891,0],[0.654,-0.646],[0,0],[0,-0.881],[-0.624,-0.646],[0,0],[0,0],[0,0],[-0.891,0],[-0.624,0.617],[0,0],[0,0.881]],"v":[[-16.064,17.575],[-13.747,18.5],[8.266,18.5],[10.539,17.575],[11.519,15.285],[11.519,-2.863],[10.539,-5.11],[8.266,-6.079],[2.74,-6.079],[-0.512,-6.079],[-13.747,-6.079],[-16.064,-5.11],[-17,-2.863],[-17,15.285]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"green400","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":240,"s":[0]},{"t":270,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":240,"op":1131,"st":231,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".green400","cl":"green400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":240,"op":982,"st":82,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".grey400","cl":"grey400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Nail","parent":14,"tt":1,"tp":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Finger","parent":3,"tt":1,"tp":13,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_unlock_90.json b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_unlock_90.json
index 30bb2d9f4fa6..abbd64742784 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_unlock_90.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_rear_display_fingerprint_to_unlock_90.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Unlock_270","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[8.166,1.704,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":150,"s":[{"i":[[0,0],[0,0],[0.938,1.057],[1.355,0],[0.938,-1.057],[0,-1.527],[0,0],[-1.512,1.674],[-2.111,0],[-1.512,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[-0.938,-1.057],[-1.329,0],[-0.938,1.057],[0,0],[0,-2.408],[1.486,-1.703],[2.137,0],[1.486,1.674],[0,0],[0,0]],"v":[[-0.17,-6.078],[-0.17,-9.822],[-1.577,-13.699],[-5.017,-15.284],[-8.419,-13.699],[-9.826,-9.822],[-12.68,-9.822],[-10.412,-15.945],[-5.017,-18.5],[0.456,-15.945],[2.684,-9.822],[2.684,-6.078]],"c":true}]},{"t":165,"s":[{"i":[[0,0],[0,0],[-1.069,1.057],[-1.545,0],[-1.069,-1.057],[0,-1.527],[0,0],[1.723,1.674],[2.406,0],[1.723,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[1.069,-1.057],[1.515,0],[1.069,1.057],[0,0],[0,-2.408],[-1.693,-1.703],[-2.436,0],[-1.693,1.674],[0,0],[0,0]],"v":[[2.74,-6.079],[2.74,-9.823],[4.345,-13.699],[8.266,-15.285],[12.143,-13.699],[13.747,-9.823],[17,-9.823],[14.415,-15.945],[8.266,-18.5],[2.028,-15.945],[-0.512,-9.823],[-0.512,-6.079]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[8.166,1.704,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.266,15.285],[-13.747,15.285],[-13.747,-2.863],[8.266,-2.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.683,-0.675],[0.98,0],[0.683,0.675],[0,0.94],[-0.683,0.705],[-0.98,0],[-0.683,-0.705],[0,-0.94]],"o":[[-0.683,0.675],[-0.98,0],[-0.683,-0.675],[0,-0.94],[0.683,-0.705],[0.98,0],[0.683,0.705],[0,0.94]],"v":[[-0.245,8.677],[-2.74,9.69],[-5.236,8.677],[-6.261,6.255],[-5.236,3.788],[-2.74,2.731],[-0.245,3.788],[0.78,6.255]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.624,-0.646],[-0.891,0],[0,0],[-0.624,0.617],[0,0.881],[0,0],[0.654,0.617],[0.891,0],[0,0],[0,0],[0,0],[0.654,-0.646],[0,-0.881],[0,0]],"o":[[0.654,0.617],[0,0],[0.891,0],[0.654,-0.646],[0,0],[0,-0.881],[-0.624,-0.646],[0,0],[0,0],[0,0],[-0.891,0],[-0.624,0.617],[0,0],[0,0.881]],"v":[[-16.064,17.575],[-13.747,18.5],[8.266,18.5],[10.539,17.575],[11.519,15.285],[11.519,-2.863],[10.539,-5.11],[8.266,-6.079],[2.74,-6.079],[-0.512,-6.079],[-13.747,-6.079],[-16.064,-5.11],[-17,-2.863],[-17,15.285]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"green400","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":240,"s":[0]},{"t":270,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":240,"op":1131,"st":231,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".green400","cl":"green400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":240,"op":982,"st":82,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".grey400","cl":"grey400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Nail","parent":14,"tt":1,"tp":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Finger","parent":3,"tt":1,"tp":13,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":0,"op":181,"w":150,"h":150,"nm":"BM_Prompt_FP-to-Unlock_270","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[8.166,1.704,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":150,"s":[{"i":[[0,0],[0,0],[0.938,1.057],[1.355,0],[0.938,-1.057],[0,-1.527],[0,0],[-1.512,1.674],[-2.111,0],[-1.512,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[-0.938,-1.057],[-1.329,0],[-0.938,1.057],[0,0],[0,-2.408],[1.486,-1.703],[2.137,0],[1.486,1.674],[0,0],[0,0]],"v":[[-0.17,-6.078],[-0.17,-9.822],[-1.577,-13.699],[-5.017,-15.284],[-8.419,-13.699],[-9.826,-9.822],[-12.68,-9.822],[-10.412,-15.945],[-5.017,-18.5],[0.456,-15.945],[2.684,-9.822],[2.684,-6.078]],"c":true}]},{"t":165,"s":[{"i":[[0,0],[0,0],[-1.069,1.057],[-1.545,0],[-1.069,-1.057],[0,-1.527],[0,0],[1.723,1.674],[2.406,0],[1.723,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[1.069,-1.057],[1.515,0],[1.069,1.057],[0,0],[0,-2.408],[-1.693,-1.703],[-2.436,0],[-1.693,1.674],[0,0],[0,0]],"v":[[2.74,-6.079],[2.74,-9.823],[4.345,-13.699],[8.266,-15.285],[12.143,-13.699],[13.747,-9.823],[17,-9.823],[14.415,-15.945],[8.266,-18.5],[2.028,-15.945],[-0.512,-9.823],[-0.512,-6.079]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[8.166,1.704,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.266,15.285],[-13.747,15.285],[-13.747,-2.863],[8.266,-2.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.683,-0.675],[0.98,0],[0.683,0.675],[0,0.94],[-0.683,0.705],[-0.98,0],[-0.683,-0.705],[0,-0.94]],"o":[[-0.683,0.675],[-0.98,0],[-0.683,-0.675],[0,-0.94],[0.683,-0.705],[0.98,0],[0.683,0.705],[0,0.94]],"v":[[-0.245,8.677],[-2.74,9.69],[-5.236,8.677],[-6.261,6.255],[-5.236,3.788],[-2.74,2.731],[-0.245,3.788],[0.78,6.255]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.624,-0.646],[-0.891,0],[0,0],[-0.624,0.617],[0,0.881],[0,0],[0.654,0.617],[0.891,0],[0,0],[0,0],[0,0],[0.654,-0.646],[0,-0.881],[0,0]],"o":[[0.654,0.617],[0,0],[0.891,0],[0.654,-0.646],[0,0],[0,-0.881],[-0.624,-0.646],[0,0],[0,0],[0,0],[-0.891,0],[-0.624,0.617],[0,0],[0,0.881]],"v":[[-16.064,17.575],[-13.747,18.5],[8.266,18.5],[10.539,17.575],[11.519,15.285],[11.519,-2.863],[10.539,-5.11],[8.266,-6.079],[2.74,-6.079],[-0.512,-6.079],[-13.747,-6.079],[-16.064,-5.11],[-17,-2.863],[-17,15.285]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"green400","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":240,"s":[0]},{"t":270,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":240,"op":1131,"st":231,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".green400","cl":"green400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":240,"op":982,"st":82,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".grey400","cl":"grey400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Nail","parent":14,"tt":1,"tp":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Finger","parent":3,"tt":1,"tp":13,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/biometricprompt_sfps_unlock_to_success.json b/packages/SystemUI/res/raw/biometricprompt_sfps_unlock_to_success.json
index 141ebb763308..80f6a41dfbad 100644
--- a/packages/SystemUI/res/raw/biometricprompt_sfps_unlock_to_success.json
+++ b/packages/SystemUI/res/raw/biometricprompt_sfps_unlock_to_success.json
@@ -1 +1 @@
-{"v":"5.10.2","fr":60,"ip":240,"op":361,"w":150,"h":150,"nm":"BM_Prompt_FP_to_Unlock","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".blue403","cl":"blue403","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-1.704,8.166,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":150,"s":[{"i":[[0,0],[0,0],[0.938,1.057],[1.355,0],[0.938,-1.057],[0,-1.527],[0,0],[-1.512,1.674],[-2.111,0],[-1.512,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[-0.938,-1.057],[-1.329,0],[-0.938,1.057],[0,0],[0,-2.408],[1.486,-1.703],[2.137,0],[1.486,1.674],[0,0],[0,0]],"v":[[-0.17,-6.078],[-0.17,-9.822],[-1.577,-13.699],[-5.017,-15.284],[-8.419,-13.699],[-9.826,-9.822],[-12.68,-9.822],[-10.412,-15.945],[-5.017,-18.5],[0.456,-15.945],[2.684,-9.822],[2.684,-6.078]],"c":true}]},{"t":165,"s":[{"i":[[0,0],[0,0],[-1.069,1.057],[-1.545,0],[-1.069,-1.057],[0,-1.527],[0,0],[1.723,1.674],[2.406,0],[1.723,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[1.069,-1.057],[1.515,0],[1.069,1.057],[0,0],[0,-2.408],[-1.693,-1.703],[-2.436,0],[-1.693,1.674],[0,0],[0,0]],"v":[[2.74,-6.079],[2.74,-9.823],[4.345,-13.699],[8.266,-15.285],[12.143,-13.699],[13.747,-9.823],[17,-9.823],[14.415,-15.945],[8.266,-18.5],[2.028,-15.945],[-0.512,-9.823],[-0.512,-6.079]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".blue402","cl":"blue402","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-1.704,8.166,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.266,15.285],[-13.747,15.285],[-13.747,-2.863],[8.266,-2.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.683,-0.675],[0.98,0],[0.683,0.675],[0,0.94],[-0.683,0.705],[-0.98,0],[-0.683,-0.705],[0,-0.94]],"o":[[-0.683,0.675],[-0.98,0],[-0.683,-0.675],[0,-0.94],[0.683,-0.705],[0.98,0],[0.683,0.705],[0,0.94]],"v":[[-0.245,8.677],[-2.74,9.69],[-5.236,8.677],[-6.261,6.255],[-5.236,3.788],[-2.74,2.731],[-0.245,3.788],[0.78,6.255]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.624,-0.646],[-0.891,0],[0,0],[-0.624,0.617],[0,0.881],[0,0],[0.654,0.617],[0.891,0],[0,0],[0,0],[0,0],[0.654,-0.646],[0,-0.881],[0,0]],"o":[[0.654,0.617],[0,0],[0.891,0],[0.654,-0.646],[0,0],[0,-0.881],[-0.624,-0.646],[0,0],[0,0],[0,0],[-0.891,0],[-0.624,0.617],[0,0],[0,0.881]],"v":[[-16.064,17.575],[-13.747,18.5],[8.266,18.5],[10.539,17.575],[11.519,15.285],[11.519,-2.863],[10.539,-5.11],[8.266,-6.079],[2.74,-6.079],[-0.512,-6.079],[-13.747,-6.079],[-16.064,-5.11],[-17,-2.863],[-17,15.285]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"green400","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":240,"s":[0]},{"t":270,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":240,"op":1131,"st":231,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".green400","cl":"green400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":240,"op":982,"st":82,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".grey400","cl":"grey400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Nail","parent":14,"tt":1,"tp":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Finger","parent":3,"tt":1,"tp":13,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue401","cl":"blue401","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".blue400","cl":"blue400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.10.2","fr":60,"ip":240,"op":361,"w":150,"h":150,"nm":"BM_Prompt_FP_to_Unlock","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-1.704,8.166,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":150,"s":[{"i":[[0,0],[0,0],[0.938,1.057],[1.355,0],[0.938,-1.057],[0,-1.527],[0,0],[-1.512,1.674],[-2.111,0],[-1.512,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[-0.938,-1.057],[-1.329,0],[-0.938,1.057],[0,0],[0,-2.408],[1.486,-1.703],[2.137,0],[1.486,1.674],[0,0],[0,0]],"v":[[-0.17,-6.078],[-0.17,-9.822],[-1.577,-13.699],[-5.017,-15.284],[-8.419,-13.699],[-9.826,-9.822],[-12.68,-9.822],[-10.412,-15.945],[-5.017,-18.5],[0.456,-15.945],[2.684,-9.822],[2.684,-6.078]],"c":true}]},{"t":165,"s":[{"i":[[0,0],[0,0],[-1.069,1.057],[-1.545,0],[-1.069,-1.057],[0,-1.527],[0,0],[1.723,1.674],[2.406,0],[1.723,-1.703],[0,-2.408],[0,0]],"o":[[0,0],[0,-1.527],[1.069,-1.057],[1.515,0],[1.069,1.057],[0,0],[0,-2.408],[-1.693,-1.703],[-2.436,0],[-1.693,1.674],[0,0],[0,0]],"v":[[2.74,-6.079],[2.74,-9.823],[4.345,-13.699],[8.266,-15.285],[12.143,-13.699],[13.747,-9.823],[17,-9.823],[14.415,-15.945],[8.266,-18.5],[2.028,-15.945],[-0.512,-9.823],[-0.512,-6.079]],"c":true}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":154,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":162,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-1.704,8.166,0],"ix":2,"l":2},"a":{"a":0,"k":[-5.873,13.309,0],"ix":1,"l":2},"s":{"a":0,"k":[101.149,101.149,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.266,15.285],[-13.747,15.285],[-13.747,-2.863],[8.266,-2.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.683,-0.675],[0.98,0],[0.683,0.675],[0,0.94],[-0.683,0.705],[-0.98,0],[-0.683,-0.705],[0,-0.94]],"o":[[-0.683,0.675],[-0.98,0],[-0.683,-0.675],[0,-0.94],[0.683,-0.705],[0.98,0],[0.683,0.705],[0,0.94]],"v":[[-0.245,8.677],[-2.74,9.69],[-5.236,8.677],[-6.261,6.255],[-5.236,3.788],[-2.74,2.731],[-0.245,3.788],[0.78,6.255]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.624,-0.646],[-0.891,0],[0,0],[-0.624,0.617],[0,0.881],[0,0],[0.654,0.617],[0.891,0],[0,0],[0,0],[0,0],[0.654,-0.646],[0,-0.881],[0,0]],"o":[[0.654,0.617],[0,0],[0.891,0],[0.654,-0.646],[0,0],[0,-0.881],[-0.624,-0.646],[0,0],[0,0],[0,0],[-0.891,0],[-0.624,0.617],[0,0],[0,0.881]],"v":[[-16.064,17.575],[-13.747,18.5],[8.266,18.5],[10.539,17.575],[11.519,15.285],[11.519,-2.863],[10.539,-5.11],[8.266,-6.079],[2.74,-6.079],[-0.512,-6.079],[-13.747,-6.079],[-16.064,-5.11],[-17,-2.863],[-17,15.285]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[214.286,214.286],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"icon","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 29","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":150,"s":[64,64,100]},{"t":170,"s":[43.5,43.5,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":900,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"green400","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[71.264,71.264,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-52.056,-2.445],[-17.306,32.25],[52.194,-37.194]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":240,"s":[0]},{"t":270,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":240,"op":1131,"st":231,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".green400","cl":"green400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[0]},{"t":248,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":240,"op":982,"st":82,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":248,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".grey400","cl":"grey400","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158,"s":[100]},{"t":166,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":150,"s":[4]},{"t":170,"s":[6]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.422,1.727,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.148],[0,0],[2.171,0.019],[0,0]],"o":[[0,0],[0,2.148],[0,0],[2.171,0.084]],"v":[[1.504,-10.64],[1.504,10.641],[-2.285,14.585],[-2.285,-14.582]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".grey600","cl":"grey600","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.73,0.002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.503,-0.24],[0,0],[1.545,-0.103],[0,0]],"o":[[0,0],[-1.503,0.24],[0,0],[1.545,0.103]],"v":[[2.287,-49.365],[2.287,49.365],[-2.287,49.875],[-2.287,-49.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960813999,0.525490224361,0.54509806633,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Nail","parent":14,"tt":1,"tp":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.413,-32.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.537,-10.49],[3.914,3.121],[0.029,0.49],[-0.203,0.012]],"o":[[0,0],[-5.309,-4.235],[0.195,-0.025],[6.139,-0.367]],"v":[[5.837,9.643],[-1.02,8.379],[-5.837,-9.817],[-5.232,-9.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156875134,0.454901963472,0.376470595598,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Matte","parent":3,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-27.614,0],[0,27.614],[27.614,0],[0,-27.614]],"o":[[27.614,0],[0,-27.614],[-27.614,0],[0,27.614]],"v":[[0,50],[50,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Finger","parent":3,"tt":1,"tp":13,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[43]},{"t":105,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[53.57,92.052,0],"to":[-14.604,-5.758,0],"ti":[0.932,11.227,0]},{"t":105,"s":[29.227,68.052,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-0.948,45.138,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.392,-3.688],[0,0],[-1.205,-3.8],[-1.473,-3.596],[9.145,-3.485],[1.549,12.262],[-8.315,0.872]],"o":[[3.368,2.829],[0.954,3.951],[1.895,5.97],[-5.664,7.791],[-3.418,-14.412],[-2.036,-16.119],[0.029,0.49]],"v":[[-0.286,-13.646],[6.116,-11.991],[9.253,-0.135],[15.167,17.416],[-8.324,31.452],[-14.517,-6.098],[-5.559,-31.452]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.713725507259,0.384313732386,0.282352954149,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-11.782,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-1.716,3.431],[1.716,0],[-1.716,-3.431]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-13.268,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,8.054],[-8.054,0]],"o":[[-8.054,0],[0,-8.054],[0,0]],"v":[[7.292,14.583],[-7.292,0],[7.292,-14.583]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[50]},{"t":130,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":120,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":930,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".primary","cl":"primary","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":30,"s":[50]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-2.33,1.408,0],"ix":2,"l":2},"a":{"a":0,"k":[22.5,-0.242,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.7,0.7,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":90,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,16.658],[-16.658,0]],"o":[[-16.658,0],[0,-16.658],[0,0]],"v":[[15.081,30.161],[-15.081,0],[15.081,-30.161]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".black","cl":"black","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":150,"s":[100]},{"t":158,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-31.25,-2.604],[0,27.614],[0,0],[0,-27.614]],"o":[[0,-0.13],[0,-27.614],[-27.344,-0.651],[0,27.614]],"v":[[0,50],[1.172,0],[0,-50],[-50,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[150,150],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":900,"st":0,"ct":1,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/face_dialog_authenticating.json b/packages/SystemUI/res/raw/face_dialog_authenticating.json
index 896816ec2009..1d8828efb351 100644
--- a/packages/SystemUI/res/raw/face_dialog_authenticating.json
+++ b/packages/SystemUI/res/raw/face_dialog_authenticating.json
@@ -1 +1 @@
-{"v":"5.7.13","fr":60,"ip":0,"op":61,"w":68,"h":68,"nm":"face_dialog_authenticating","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".blue200","cl":"blue200","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[27.25,27.25,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":30,"s":[95,95,100]},{"t":60,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.243],[-1.244,0],[0,1.243],[1.242,0]],"o":[[0,1.243],[1.242,0],[0,-1.243],[-1.244,0]],"v":[[-2.249,0.001],[0.001,2.251],[2.249,0.001],[0.001,-2.251]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823529412,0.780392216701,0.980392216701,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[60]},{"t":60,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[15.1,20.495],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.243],[-1.242,0],[0,1.243],[1.242,0]],"o":[[0,1.243],[1.242,0],[0,-1.243],[-1.242,0]],"v":[[-2.249,0],[0.001,2.25],[2.249,0],[0.001,-2.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823529412,0.780392216701,0.980392216701,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[60]},{"t":60,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[39.4,20.495],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2.814,3.523],[-2.814,3.523],[-2.814,1.363],[0.652,1.363],[0.652,-3.523],[2.814,-3.523]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823529412,0.780392216701,0.980392216701,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[60]},{"t":60,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[27.791,28.479],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.154,0.15],[0,0],[0.117,-0.095],[0,0],[0.228,-0.121],[0.358,-0.103],[0.922,0.261],[0.3,0.16],[0.24,0.185],[0.14,0.139],[0.178,0.261],[0.143,0.451],[0,0],[0,0.494],[0,0],[-0.214,-0.676],[-0.392,-0.572],[-0.323,-0.317],[-0.228,-0.177],[-0.333,-0.179],[-0.503,-0.145],[-0.662,0],[-0.653,0.184],[-0.437,0.233],[-0.336,0.258],[0,0],[0,0]],"o":[[0,0],[-0.107,0.106],[0,0],[-0.24,0.185],[-0.301,0.16],[-0.92,0.261],[-0.357,-0.103],[-0.228,-0.121],[-0.158,-0.122],[-0.225,-0.221],[-0.272,-0.393],[0,0],[-0.147,-0.466],[0,0],[0,0.716],[0.206,0.656],[0.256,0.372],[0.204,0.201],[0.336,0.258],[0.436,0.233],[0.655,0.184],[0.662,0],[0.503,-0.145],[0.332,-0.179],[0,0],[0,0],[0.165,-0.136]],"v":[[6.094,1.465],[4.579,-0.076],[4.242,0.225],[4.124,0.315],[3.43,0.771],[2.439,1.165],[-0.342,1.165],[-1.331,0.771],[-2.027,0.315],[-2.48,-0.075],[-3.087,-0.801],[-3.712,-2.075],[-3.712,-2.075],[-3.934,-3.523],[-6.094,-3.523],[-5.771,-1.424],[-4.868,0.424],[-3.995,1.465],[-3.344,2.027],[-2.35,2.676],[-0.934,3.243],[1.049,3.523],[3.031,3.243],[4.449,2.676],[5.441,2.027],[5.482,1.997],[5.615,1.895]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823529412,0.780392216701,0.980392216701,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[60]},{"t":60,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[26.201,40.411],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-13.398,0],[0,-13.4],[13.398,0],[0,13.4]],"o":[[13.398,0],[0,13.4],[-13.398,0],[0,-13.4]],"v":[[0,-24.3],[24.3,0],[0,24.3],[-24.3,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[14.904,0],[0,-14.904],[-14.904,0],[0,14.904]],"o":[[-14.904,0],[0,14.904],[14.904,0],[0,-14.904]],"v":[[0,-27],[-27,0],[0,27],[27,0]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823529412,0.780392216701,0.980392216701,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[60]},{"t":60,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[27.25,27.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":4,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1200,"st":0,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.7.13","fr":60,"ip":0,"op":61,"w":68,"h":68,"nm":"face_dialog_authenticating","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[27.25,27.25,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":30,"s":[95,95,100]},{"t":60,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.243],[-1.244,0],[0,1.243],[1.242,0]],"o":[[0,1.243],[1.242,0],[0,-1.243],[-1.244,0]],"v":[[-2.249,0.001],[0.001,2.251],[2.249,0.001],[0.001,-2.251]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823529412,0.780392216701,0.980392216701,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[60]},{"t":60,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[15.1,20.495],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.243],[-1.242,0],[0,1.243],[1.242,0]],"o":[[0,1.243],[1.242,0],[0,-1.243],[-1.242,0]],"v":[[-2.249,0],[0.001,2.25],[2.249,0],[0.001,-2.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823529412,0.780392216701,0.980392216701,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[60]},{"t":60,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[39.4,20.495],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2.814,3.523],[-2.814,3.523],[-2.814,1.363],[0.652,1.363],[0.652,-3.523],[2.814,-3.523]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823529412,0.780392216701,0.980392216701,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[60]},{"t":60,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[27.791,28.479],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.154,0.15],[0,0],[0.117,-0.095],[0,0],[0.228,-0.121],[0.358,-0.103],[0.922,0.261],[0.3,0.16],[0.24,0.185],[0.14,0.139],[0.178,0.261],[0.143,0.451],[0,0],[0,0.494],[0,0],[-0.214,-0.676],[-0.392,-0.572],[-0.323,-0.317],[-0.228,-0.177],[-0.333,-0.179],[-0.503,-0.145],[-0.662,0],[-0.653,0.184],[-0.437,0.233],[-0.336,0.258],[0,0],[0,0]],"o":[[0,0],[-0.107,0.106],[0,0],[-0.24,0.185],[-0.301,0.16],[-0.92,0.261],[-0.357,-0.103],[-0.228,-0.121],[-0.158,-0.122],[-0.225,-0.221],[-0.272,-0.393],[0,0],[-0.147,-0.466],[0,0],[0,0.716],[0.206,0.656],[0.256,0.372],[0.204,0.201],[0.336,0.258],[0.436,0.233],[0.655,0.184],[0.662,0],[0.503,-0.145],[0.332,-0.179],[0,0],[0,0],[0.165,-0.136]],"v":[[6.094,1.465],[4.579,-0.076],[4.242,0.225],[4.124,0.315],[3.43,0.771],[2.439,1.165],[-0.342,1.165],[-1.331,0.771],[-2.027,0.315],[-2.48,-0.075],[-3.087,-0.801],[-3.712,-2.075],[-3.712,-2.075],[-3.934,-3.523],[-6.094,-3.523],[-5.771,-1.424],[-4.868,0.424],[-3.995,1.465],[-3.344,2.027],[-2.35,2.676],[-0.934,3.243],[1.049,3.523],[3.031,3.243],[4.449,2.676],[5.441,2.027],[5.482,1.997],[5.615,1.895]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823529412,0.780392216701,0.980392216701,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[60]},{"t":60,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[26.201,40.411],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-13.398,0],[0,-13.4],[13.398,0],[0,13.4]],"o":[[13.398,0],[0,13.4],[-13.398,0],[0,-13.4]],"v":[[0,-24.3],[24.3,0],[0,24.3],[-24.3,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[14.904,0],[0,-14.904],[-14.904,0],[0,14.904]],"o":[[-14.904,0],[0,14.904],[14.904,0],[0,-14.904]],"v":[[0,-27],[-27,0],[0,27],[27,0]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823529412,0.780392216701,0.980392216701,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[60]},{"t":60,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[27.25,27.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":4,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1200,"st":0,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/face_dialog_dark_to_checkmark.json b/packages/SystemUI/res/raw/face_dialog_dark_to_checkmark.json
index 512ca30cf40d..f6dffc02f4f9 100644
--- a/packages/SystemUI/res/raw/face_dialog_dark_to_checkmark.json
+++ b/packages/SystemUI/res/raw/face_dialog_dark_to_checkmark.json
@@ -1 +1 @@
-{"v":"5.7.13","fr":60,"ip":0,"op":23,"w":68,"h":68,"nm":"face_dialog_dark_to_checkmark","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".green100","cl":"green100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[106.667,106.667,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-116,-16.5],[-31.25,68.5],[108.75,-71.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.155],"y":[1]},"o":{"x":[0.292],"y":[0]},"t":2,"s":[0]},{"t":16,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.76862745098,0.933333333333,0.81568627451,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":20,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.1,30.083],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.537,0.537],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":2,"s":[8,8]},{"i":{"x":[0.533,0.533],"y":[1,1]},"o":{"x":[0.441,0.441],"y":[0,0]},"t":12,"s":[12.789,12.789]},{"i":{"x":[0.486,0.486],"y":[1,1]},"o":{"x":[0.424,0.424],"y":[0,0]},"t":18,"s":[12.241,12.241]},{"t":22,"s":[12.5,12.5]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Checkmark","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":23,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".green100","cl":"green100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[106.667,106.667,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.1,0],[0,-13.2],[-13.1,0],[0,13.2]],"o":[[-13.1,0],[0,13.2],[13.1,0],[0,-13.2]],"v":[[-0.05,-23.8],[-23.75,0],[-0.05,23.8],[23.75,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.768627464771,0.933333337307,0.815686285496,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":2,"s":[0]},{"t":7,"s":[100]}],"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.05,30],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Outline","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":23,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".blue200","cl":"blue200","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[106.667,106.667,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.1,0],[0,-13.2],[-13.1,0],[0,13.2]],"o":[[-13.1,0],[0,13.2],[13.1,0],[0,-13.2]],"v":[[-0.05,-23.8],[-23.75,0],[-0.05,23.8],[23.75,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.658823529412,0.780392156863,0.980392156863,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":2,"s":[100]},{"t":7,"s":[0]}],"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.05,30],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Outline","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":23,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".blue200","cl":"blue200","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[106.667,106.667,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2.6,3.25],[-2.6,3.25],[-2.6,1.25],[0.6,1.25],[0.6,-3.25],[2.6,-3.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"t":3,"s":[0]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30.727,31.703],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.287,0.287],"y":[0.12,0.12]},"t":0,"s":[100,100]},{"t":5,"s":[0,0]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Nose","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.2,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"t":3,"s":[0]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[18.6,23.8],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":0,"s":[100,100]},{"t":5,"s":[0,0]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_L","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.1,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"t":3,"s":[0]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[41.1,23.8],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":0,"s":[100,100]},{"t":5,"s":[0,0]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_R\r","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.534,0],[0,3.034]],"o":[[-0.996,1.015],[-3.033,0],[0,0]],"v":[[4.705,1.103],[0.787,2.747],[-4.705,-2.747]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[0]},{"t":5,"s":[50]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[100]},{"t":5,"s":[50]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"t":3,"s":[0]}],"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.094,31.756],"ix":2},"a":{"a":0,"k":[1.05,-9.891],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":0,"s":[100,100]},{"t":4,"s":[65,65]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mouth","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":23,"st":0,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.7.13","fr":60,"ip":0,"op":23,"w":68,"h":68,"nm":"face_dialog_dark_to_checkmark","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".green100","cl":"green100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[106.667,106.667,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-116,-16.5],[-31.25,68.5],[108.75,-71.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.155],"y":[1]},"o":{"x":[0.292],"y":[0]},"t":2,"s":[0]},{"t":16,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.76862745098,0.933333333333,0.81568627451,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":20,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.1,30.083],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.537,0.537],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":2,"s":[8,8]},{"i":{"x":[0.533,0.533],"y":[1,1]},"o":{"x":[0.441,0.441],"y":[0,0]},"t":12,"s":[12.789,12.789]},{"i":{"x":[0.486,0.486],"y":[1,1]},"o":{"x":[0.424,0.424],"y":[0,0]},"t":18,"s":[12.241,12.241]},{"t":22,"s":[12.5,12.5]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Checkmark","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":23,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".green100","cl":"green100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[106.667,106.667,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.1,0],[0,-13.2],[-13.1,0],[0,13.2]],"o":[[-13.1,0],[0,13.2],[13.1,0],[0,-13.2]],"v":[[-0.05,-23.8],[-23.75,0],[-0.05,23.8],[23.75,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.768627464771,0.933333337307,0.815686285496,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":2,"s":[0]},{"t":7,"s":[100]}],"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.05,30],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Outline","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":23,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[106.667,106.667,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.1,0],[0,-13.2],[-13.1,0],[0,13.2]],"o":[[-13.1,0],[0,13.2],[13.1,0],[0,-13.2]],"v":[[-0.05,-23.8],[-23.75,0],[-0.05,23.8],[23.75,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.658823529412,0.780392156863,0.980392156863,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":2,"s":[100]},{"t":7,"s":[0]}],"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.05,30],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Outline","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":23,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[106.667,106.667,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2.6,3.25],[-2.6,3.25],[-2.6,1.25],[0.6,1.25],[0.6,-3.25],[2.6,-3.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"t":3,"s":[0]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30.727,31.703],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.287,0.287],"y":[0.12,0.12]},"t":0,"s":[100,100]},{"t":5,"s":[0,0]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Nose","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.2,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"t":3,"s":[0]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[18.6,23.8],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":0,"s":[100,100]},{"t":5,"s":[0,0]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_L","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.1,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"t":3,"s":[0]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[41.1,23.8],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":0,"s":[100,100]},{"t":5,"s":[0,0]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_R\r","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.534,0],[0,3.034]],"o":[[-0.996,1.015],[-3.033,0],[0,0]],"v":[[4.705,1.103],[0.787,2.747],[-4.705,-2.747]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[0]},{"t":5,"s":[50]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[100]},{"t":5,"s":[50]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"t":3,"s":[0]}],"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.094,31.756],"ix":2},"a":{"a":0,"k":[1.05,-9.891],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":0,"s":[100,100]},{"t":4,"s":[65,65]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mouth","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":23,"st":0,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/face_dialog_dark_to_error.json b/packages/SystemUI/res/raw/face_dialog_dark_to_error.json
index 9578cb40ac71..ccb45cc29b29 100644
--- a/packages/SystemUI/res/raw/face_dialog_dark_to_error.json
+++ b/packages/SystemUI/res/raw/face_dialog_dark_to_error.json
@@ -1 +1 @@
-{"v":"5.7.13","fr":60,"ip":0,"op":20,"w":68,"h":68,"nm":"face_dialog_dark_to_error","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".red100","cl":"red100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[106.667,106.667,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2.6,3.25],[-2.6,3.25],[-2.6,1.25],[0.6,1.25],[0.6,-3.25],[2.6,-3.25]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":4,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.9,3.25],[-1.5,3.25],[-1.5,1.25],[-1.5,1.25],[-1.5,-3.25],[0.9,-3.25]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.9,3.25],[-1.5,3.25],[-1.5,1.25],[-1.5,1.25],[-1.5,-13.15],[0.9,-13.15]],"c":true}]},{"t":19,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.9,3.25],[-1.5,3.25],[-1.5,1.25],[-1.5,1.25],[-1.5,-11.712],[0.9,-11.712]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[0.658823549747,0.780392169952,0.980392158031,1]},{"t":4,"s":[0.949019610882,0.721568644047,0.709803938866,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":4,"s":[30.3,31.45],"to":[0,-0.373],"ti":[0,0.373]},{"t":13,"s":[30.3,29.215]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Nose","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.2,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[100]},{"t":4,"s":[0]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[18.6,23.8],"to":[0.568,-0.715],"ti":[-0.568,0.715]},{"t":4,"s":[22.005,19.51]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.999,0.999],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":0,"s":[100,100]},{"t":4,"s":[30,30]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_L","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.1,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[100]},{"t":4,"s":[0]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[41.1,23.8],"to":[-0.552,-0.712],"ti":[0.552,0.712]},{"t":4,"s":[37.788,19.53]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.999,0.999],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":0,"s":[100,100]},{"t":4,"s":[30,30]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_R\r","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[{"i":[[0,0],[1.534,0],[0,3.034]],"o":[[-0.996,1.015],[-3.033,0],[0,0]],"v":[[4.705,1.103],[0.787,2.747],[-4.705,-2.747]],"c":false}]},{"t":13,"s":[{"i":[[0,0],[1.534,0],[1.832,-0.006]],"o":[[-0.948,-0.005],[-3.033,0],[0,0]],"v":[[5.734,-2.889],[0.961,-2.894],[-4.74,-2.887]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[0]},{"t":13,"s":[34]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[100]},{"t":13,"s":[57]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[0.658823549747,0.780392169952,0.980392158031,1]},{"t":4,"s":[0.949019610882,0.721568644047,0.709803938866,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[2]},{"t":13,"s":[2.5]}],"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[29.044,41.646],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mouth","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.1,0],[0,-13.2],[-13.1,0],[0,13.2]],"o":[[-13.1,0],[0,13.2],[13.1,0],[0,-13.2]],"v":[[-0.05,-23.8],[-23.75,0],[-0.05,23.8],[23.75,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[0.658823549747,0.780392169952,0.980392158031,1]},{"t":4,"s":[0.949019610882,0.721568644047,0.709803938866,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.05,30],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Outline","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":4,"op":20,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".blue200","cl":"blue200","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[106.667,106.667,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2.6,3.25],[-2.6,3.25],[-2.6,1.25],[0.6,1.25],[0.6,-3.25],[2.6,-3.25]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":4,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.9,3.25],[-1.5,3.25],[-1.5,1.25],[-1.5,1.25],[-1.5,-3.25],[0.9,-3.25]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.9,3.25],[-1.5,3.25],[-1.5,1.25],[-1.5,1.25],[-1.5,-13.15],[0.9,-13.15]],"c":true}]},{"t":19,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.9,3.25],[-1.5,3.25],[-1.5,1.25],[-1.5,1.25],[-1.5,-11.712],[0.9,-11.712]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[0.658823549747,0.780392169952,0.980392158031,1]},{"t":4,"s":[0.949019610882,0.721568644047,0.709803938866,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":4,"s":[30.3,31.45],"to":[0,-0.373],"ti":[0,0.373]},{"t":13,"s":[30.3,29.215]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Nose","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.2,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[100]},{"t":4,"s":[0]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[18.6,23.8],"to":[0.568,-0.715],"ti":[-0.568,0.715]},{"t":4,"s":[22.005,19.51]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.999,0.999],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":0,"s":[100,100]},{"t":4,"s":[30,30]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_L","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.1,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[100]},{"t":4,"s":[0]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[41.1,23.8],"to":[-0.552,-0.712],"ti":[0.552,0.712]},{"t":4,"s":[37.788,19.53]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.999,0.999],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":0,"s":[100,100]},{"t":4,"s":[30,30]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_R\r","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[{"i":[[0,0],[1.534,0],[0,3.034]],"o":[[-0.996,1.015],[-3.033,0],[0,0]],"v":[[4.705,1.103],[0.787,2.747],[-4.705,-2.747]],"c":false}]},{"t":13,"s":[{"i":[[0,0],[1.534,0],[1.832,-0.006]],"o":[[-0.948,-0.005],[-3.033,0],[0,0]],"v":[[5.734,-2.889],[0.961,-2.894],[-4.74,-2.887]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[0]},{"t":13,"s":[34]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[100]},{"t":13,"s":[57]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[0.658823549747,0.780392169952,0.980392158031,1]},{"t":4,"s":[0.949019610882,0.721568644047,0.709803938866,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[2]},{"t":13,"s":[2.5]}],"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[29.044,41.646],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mouth","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.1,0],[0,-13.2],[-13.1,0],[0,13.2]],"o":[[-13.1,0],[0,13.2],[13.1,0],[0,-13.2]],"v":[[-0.05,-23.8],[-23.75,0],[-0.05,23.8],[23.75,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[0.658823549747,0.780392169952,0.980392158031,1]},{"t":4,"s":[0.949019610882,0.721568644047,0.709803938866,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.05,30],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Outline","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":4,"st":0,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.7.13","fr":60,"ip":0,"op":20,"w":68,"h":68,"nm":"face_dialog_dark_to_error","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".red100","cl":"red100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[106.667,106.667,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2.6,3.25],[-2.6,3.25],[-2.6,1.25],[0.6,1.25],[0.6,-3.25],[2.6,-3.25]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":4,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.9,3.25],[-1.5,3.25],[-1.5,1.25],[-1.5,1.25],[-1.5,-3.25],[0.9,-3.25]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.9,3.25],[-1.5,3.25],[-1.5,1.25],[-1.5,1.25],[-1.5,-13.15],[0.9,-13.15]],"c":true}]},{"t":19,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.9,3.25],[-1.5,3.25],[-1.5,1.25],[-1.5,1.25],[-1.5,-11.712],[0.9,-11.712]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[0.658823549747,0.780392169952,0.980392158031,1]},{"t":4,"s":[0.949019610882,0.721568644047,0.709803938866,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":4,"s":[30.3,31.45],"to":[0,-0.373],"ti":[0,0.373]},{"t":13,"s":[30.3,29.215]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Nose","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.2,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[100]},{"t":4,"s":[0]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[18.6,23.8],"to":[0.568,-0.715],"ti":[-0.568,0.715]},{"t":4,"s":[22.005,19.51]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.999,0.999],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":0,"s":[100,100]},{"t":4,"s":[30,30]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_L","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.1,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[100]},{"t":4,"s":[0]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[41.1,23.8],"to":[-0.552,-0.712],"ti":[0.552,0.712]},{"t":4,"s":[37.788,19.53]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.999,0.999],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":0,"s":[100,100]},{"t":4,"s":[30,30]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_R\r","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[{"i":[[0,0],[1.534,0],[0,3.034]],"o":[[-0.996,1.015],[-3.033,0],[0,0]],"v":[[4.705,1.103],[0.787,2.747],[-4.705,-2.747]],"c":false}]},{"t":13,"s":[{"i":[[0,0],[1.534,0],[1.832,-0.006]],"o":[[-0.948,-0.005],[-3.033,0],[0,0]],"v":[[5.734,-2.889],[0.961,-2.894],[-4.74,-2.887]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[0]},{"t":13,"s":[34]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[100]},{"t":13,"s":[57]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[0.658823549747,0.780392169952,0.980392158031,1]},{"t":4,"s":[0.949019610882,0.721568644047,0.709803938866,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[2]},{"t":13,"s":[2.5]}],"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[29.044,41.646],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mouth","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.1,0],[0,-13.2],[-13.1,0],[0,13.2]],"o":[[-13.1,0],[0,13.2],[13.1,0],[0,-13.2]],"v":[[-0.05,-23.8],[-23.75,0],[-0.05,23.8],[23.75,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[0.658823549747,0.780392169952,0.980392158031,1]},{"t":4,"s":[0.949019610882,0.721568644047,0.709803938866,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.05,30],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Outline","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":4,"op":20,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[106.667,106.667,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2.6,3.25],[-2.6,3.25],[-2.6,1.25],[0.6,1.25],[0.6,-3.25],[2.6,-3.25]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":4,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.9,3.25],[-1.5,3.25],[-1.5,1.25],[-1.5,1.25],[-1.5,-3.25],[0.9,-3.25]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.9,3.25],[-1.5,3.25],[-1.5,1.25],[-1.5,1.25],[-1.5,-13.15],[0.9,-13.15]],"c":true}]},{"t":19,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.9,3.25],[-1.5,3.25],[-1.5,1.25],[-1.5,1.25],[-1.5,-11.712],[0.9,-11.712]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[0.658823549747,0.780392169952,0.980392158031,1]},{"t":4,"s":[0.949019610882,0.721568644047,0.709803938866,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":4,"s":[30.3,31.45],"to":[0,-0.373],"ti":[0,0.373]},{"t":13,"s":[30.3,29.215]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Nose","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.2,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[100]},{"t":4,"s":[0]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[18.6,23.8],"to":[0.568,-0.715],"ti":[-0.568,0.715]},{"t":4,"s":[22.005,19.51]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.999,0.999],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":0,"s":[100,100]},{"t":4,"s":[30,30]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_L","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.1,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[100]},{"t":4,"s":[0]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[41.1,23.8],"to":[-0.552,-0.712],"ti":[0.552,0.712]},{"t":4,"s":[37.788,19.53]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.999,0.999],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":0,"s":[100,100]},{"t":4,"s":[30,30]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_R\r","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[{"i":[[0,0],[1.534,0],[0,3.034]],"o":[[-0.996,1.015],[-3.033,0],[0,0]],"v":[[4.705,1.103],[0.787,2.747],[-4.705,-2.747]],"c":false}]},{"t":13,"s":[{"i":[[0,0],[1.534,0],[1.832,-0.006]],"o":[[-0.948,-0.005],[-3.033,0],[0,0]],"v":[[5.734,-2.889],[0.961,-2.894],[-4.74,-2.887]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[0]},{"t":13,"s":[34]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[100]},{"t":13,"s":[57]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[0.658823549747,0.780392169952,0.980392158031,1]},{"t":4,"s":[0.949019610882,0.721568644047,0.709803938866,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[2]},{"t":13,"s":[2.5]}],"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[29.044,41.646],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mouth","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.1,0],[0,-13.2],[-13.1,0],[0,13.2]],"o":[[-13.1,0],[0,13.2],[13.1,0],[0,-13.2]],"v":[[-0.05,-23.8],[-23.75,0],[-0.05,23.8],[23.75,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[0.658823549747,0.780392169952,0.980392158031,1]},{"t":4,"s":[0.949019610882,0.721568644047,0.709803938866,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.05,30],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Outline","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":4,"st":0,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/face_dialog_error_to_idle.json b/packages/SystemUI/res/raw/face_dialog_error_to_idle.json
index f94431492565..7f0ca8270b23 100644
--- a/packages/SystemUI/res/raw/face_dialog_error_to_idle.json
+++ b/packages/SystemUI/res/raw/face_dialog_error_to_idle.json
@@ -1 +1 @@
-{"v":"5.7.13","fr":60,"ip":0,"op":14,"w":68,"h":68,"nm":"face_error_to_idle","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".blue200","cl":"blue200","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[106.329,106.329,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.67,"y":1},"o":{"x":0.321,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.9,3.25],[-1.5,3.25],[-1.5,1.25],[-1.5,1.25],[-1.5,-11.712],[0.9,-11.712]],"c":true}]},{"i":{"x":0.456,"y":1},"o":{"x":0.568,"y":0},"t":5,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.9,3.25],[-1.5,3.25],[-1.5,1.25],[-1.5,1.25],[-1.5,-3.25],[0.9,-3.25]],"c":true}]},{"t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2.6,3.25],[-2.6,3.25],[-2.6,1.25],[0.6,1.25],[0.6,-3.25],[2.6,-3.25]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[30.3,29.215],"to":[0,0.373],"ti":[0,-0.373]},{"t":9,"s":[30.3,31.45]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Nose","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.2,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[0]},{"t":6,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":3,"s":[22.005,19.51],"to":[-0.568,0.715],"ti":[0.568,-0.715]},{"t":13,"s":[18.6,23.8]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":3,"s":[30,30]},{"t":10,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_L","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.1,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[0]},{"t":6,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":3,"s":[37.788,19.53],"to":[0.552,0.712],"ti":[-0.552,-0.712]},{"t":13,"s":[41.1,23.8]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":3,"s":[30,30]},{"t":10,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_R\r","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[{"i":[[0,0],[1.534,0],[1.832,-0.006]],"o":[[-0.948,-0.005],[-3.033,0],[0,0]],"v":[[5.734,-2.889],[0.961,-2.894],[-4.74,-2.887]],"c":false}]},{"t":13,"s":[{"i":[[0,0],[1.534,0],[0,3.034]],"o":[[-0.996,1.015],[-3.033,0],[0,0]],"v":[[4.705,1.103],[0.787,2.747],[-4.705,-2.747]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[34]},{"t":13,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[57]},{"t":13,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[0.949019610882,0.721568644047,0.709803938866,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":6,"s":[0.741176486015,0.75686275959,0.776470601559,1]},{"t":7,"s":[0.658823549747,0.780392169952,0.980392158031,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[2.5]},{"t":13,"s":[2]}],"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[29.044,41.646],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mouth","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.1,0],[0,-13.2],[-13.1,0],[0,13.2]],"o":[[-13.1,0],[0,13.2],[13.1,0],[0,-13.2]],"v":[[-0.05,-23.8],[-23.75,0],[-0.05,23.8],[23.75,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[0.949019610882,0.721568644047,0.709803938866,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":6,"s":[0.741176486015,0.75686275959,0.776470601559,1]},{"t":7,"s":[0.658823549747,0.780392169952,0.980392158031,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.05,30],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Outline","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":6,"op":14,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red100","cl":"red100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[106.329,106.329,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.67,"y":1},"o":{"x":0.321,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.9,3.25],[-1.5,3.25],[-1.5,1.25],[-1.5,1.25],[-1.5,-11.712],[0.9,-11.712]],"c":true}]},{"i":{"x":0.456,"y":1},"o":{"x":0.568,"y":0},"t":5,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.9,3.25],[-1.5,3.25],[-1.5,1.25],[-1.5,1.25],[-1.5,-3.25],[0.9,-3.25]],"c":true}]},{"t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2.6,3.25],[-2.6,3.25],[-2.6,1.25],[0.6,1.25],[0.6,-3.25],[2.6,-3.25]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[0.949019610882,0.721568644047,0.709803938866,1]},{"t":6,"s":[0.741176486015,0.75686275959,0.776470601559,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[30.3,29.215],"to":[0,0.373],"ti":[0,-0.373]},{"t":9,"s":[30.3,31.45]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Nose","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.2,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[0]},{"t":6,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":3,"s":[22.005,19.51],"to":[-0.568,0.715],"ti":[0.568,-0.715]},{"t":13,"s":[18.6,23.8]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":3,"s":[30,30]},{"t":10,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_L","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.1,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[0]},{"t":6,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":3,"s":[37.788,19.53],"to":[0.552,0.712],"ti":[-0.552,-0.712]},{"t":13,"s":[41.1,23.8]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":3,"s":[30,30]},{"t":10,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_R\r","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[{"i":[[0,0],[1.534,0],[1.832,-0.006]],"o":[[-0.948,-0.005],[-3.033,0],[0,0]],"v":[[5.734,-2.889],[0.961,-2.894],[-4.74,-2.887]],"c":false}]},{"t":13,"s":[{"i":[[0,0],[1.534,0],[0,3.034]],"o":[[-0.996,1.015],[-3.033,0],[0,0]],"v":[[4.705,1.103],[0.787,2.747],[-4.705,-2.747]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[34]},{"t":13,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[57]},{"t":13,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[0.949019610882,0.721568644047,0.709803938866,1]},{"t":6,"s":[0.741176486015,0.75686275959,0.776470601559,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[2.5]},{"t":13,"s":[2]}],"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[29.044,41.646],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mouth","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.1,0],[0,-13.2],[-13.1,0],[0,13.2]],"o":[[-13.1,0],[0,13.2],[13.1,0],[0,-13.2]],"v":[[-0.05,-23.8],[-23.75,0],[-0.05,23.8],[23.75,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[0.949019610882,0.721568644047,0.709803938866,1]},{"t":6,"s":[0.741176486015,0.75686275959,0.776470601559,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.05,30],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Outline","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":6,"st":0,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.7.13","fr":60,"ip":0,"op":14,"w":68,"h":68,"nm":"face_error_to_idle","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[106.329,106.329,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.67,"y":1},"o":{"x":0.321,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.9,3.25],[-1.5,3.25],[-1.5,1.25],[-1.5,1.25],[-1.5,-11.712],[0.9,-11.712]],"c":true}]},{"i":{"x":0.456,"y":1},"o":{"x":0.568,"y":0},"t":5,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.9,3.25],[-1.5,3.25],[-1.5,1.25],[-1.5,1.25],[-1.5,-3.25],[0.9,-3.25]],"c":true}]},{"t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2.6,3.25],[-2.6,3.25],[-2.6,1.25],[0.6,1.25],[0.6,-3.25],[2.6,-3.25]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[30.3,29.215],"to":[0,0.373],"ti":[0,-0.373]},{"t":9,"s":[30.3,31.45]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Nose","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.2,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[0]},{"t":6,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":3,"s":[22.005,19.51],"to":[-0.568,0.715],"ti":[0.568,-0.715]},{"t":13,"s":[18.6,23.8]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":3,"s":[30,30]},{"t":10,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_L","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.1,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[0]},{"t":6,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":3,"s":[37.788,19.53],"to":[0.552,0.712],"ti":[-0.552,-0.712]},{"t":13,"s":[41.1,23.8]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":3,"s":[30,30]},{"t":10,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_R\r","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[{"i":[[0,0],[1.534,0],[1.832,-0.006]],"o":[[-0.948,-0.005],[-3.033,0],[0,0]],"v":[[5.734,-2.889],[0.961,-2.894],[-4.74,-2.887]],"c":false}]},{"t":13,"s":[{"i":[[0,0],[1.534,0],[0,3.034]],"o":[[-0.996,1.015],[-3.033,0],[0,0]],"v":[[4.705,1.103],[0.787,2.747],[-4.705,-2.747]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[34]},{"t":13,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[57]},{"t":13,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[0.949019610882,0.721568644047,0.709803938866,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":6,"s":[0.741176486015,0.75686275959,0.776470601559,1]},{"t":7,"s":[0.658823549747,0.780392169952,0.980392158031,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[2.5]},{"t":13,"s":[2]}],"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[29.044,41.646],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mouth","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.1,0],[0,-13.2],[-13.1,0],[0,13.2]],"o":[[-13.1,0],[0,13.2],[13.1,0],[0,-13.2]],"v":[[-0.05,-23.8],[-23.75,0],[-0.05,23.8],[23.75,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[0.949019610882,0.721568644047,0.709803938866,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":6,"s":[0.741176486015,0.75686275959,0.776470601559,1]},{"t":7,"s":[0.658823549747,0.780392169952,0.980392158031,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.05,30],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Outline","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":6,"op":14,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red100","cl":"red100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[106.329,106.329,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.67,"y":1},"o":{"x":0.321,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.9,3.25],[-1.5,3.25],[-1.5,1.25],[-1.5,1.25],[-1.5,-11.712],[0.9,-11.712]],"c":true}]},{"i":{"x":0.456,"y":1},"o":{"x":0.568,"y":0},"t":5,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.9,3.25],[-1.5,3.25],[-1.5,1.25],[-1.5,1.25],[-1.5,-3.25],[0.9,-3.25]],"c":true}]},{"t":13,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2.6,3.25],[-2.6,3.25],[-2.6,1.25],[0.6,1.25],[0.6,-3.25],[2.6,-3.25]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[0.949019610882,0.721568644047,0.709803938866,1]},{"t":6,"s":[0.741176486015,0.75686275959,0.776470601559,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[30.3,29.215],"to":[0,0.373],"ti":[0,-0.373]},{"t":9,"s":[30.3,31.45]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Nose","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.2,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[0]},{"t":6,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":3,"s":[22.005,19.51],"to":[-0.568,0.715],"ti":[0.568,-0.715]},{"t":13,"s":[18.6,23.8]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":3,"s":[30,30]},{"t":10,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_L","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.1,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741176486015,0.75686275959,0.776470601559,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[0]},{"t":6,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":3,"s":[37.788,19.53],"to":[0.552,0.712],"ti":[-0.552,-0.712]},{"t":13,"s":[41.1,23.8]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":3,"s":[30,30]},{"t":10,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_R\r","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":0,"s":[{"i":[[0,0],[1.534,0],[1.832,-0.006]],"o":[[-0.948,-0.005],[-3.033,0],[0,0]],"v":[[5.734,-2.889],[0.961,-2.894],[-4.74,-2.887]],"c":false}]},{"t":13,"s":[{"i":[[0,0],[1.534,0],[0,3.034]],"o":[[-0.996,1.015],[-3.033,0],[0,0]],"v":[[4.705,1.103],[0.787,2.747],[-4.705,-2.747]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[34]},{"t":13,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[57]},{"t":13,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[0.949019610882,0.721568644047,0.709803938866,1]},{"t":6,"s":[0.741176486015,0.75686275959,0.776470601559,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[2.5]},{"t":13,"s":[2]}],"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[29.044,41.646],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mouth","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.1,0],[0,-13.2],[-13.1,0],[0,13.2]],"o":[[-13.1,0],[0,13.2],[13.1,0],[0,-13.2]],"v":[[-0.05,-23.8],[-23.75,0],[-0.05,23.8],[23.75,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[0.949019610882,0.721568644047,0.709803938866,1]},{"t":6,"s":[0.741176486015,0.75686275959,0.776470601559,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.05,30],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Outline","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":6,"st":0,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/face_dialog_idle_static.json b/packages/SystemUI/res/raw/face_dialog_idle_static.json
index 2d3a7a46e8f2..dfa784b093e3 100644
--- a/packages/SystemUI/res/raw/face_dialog_idle_static.json
+++ b/packages/SystemUI/res/raw/face_dialog_idle_static.json
@@ -1 +1 @@
-{"v":"5.7.13","fr":60,"ip":0,"op":14,"w":68,"h":68,"nm":"face_dialog_idle_static","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".blue200","cl":"blue200","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[106.329,106.329,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2.6,3.25],[-2.6,3.25],[-2.6,1.25],[0.6,1.25],[0.6,-3.25],[2.6,-3.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30.3,31.45],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Nose","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.2,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[18.6,23.8],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_L","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.1,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[41.1,23.8],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_R\r","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.534,0],[0,3.034]],"o":[[-0.996,1.015],[-3.033,0],[0,0]],"v":[[4.705,1.103],[0.787,2.747],[-4.705,-2.747]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[29.044,41.646],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mouth","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.1,0],[0,-13.2],[-13.1,0],[0,13.2]],"o":[[-13.1,0],[0,13.2],[13.1,0],[0,-13.2]],"v":[[-0.05,-23.8],[-23.75,0],[-0.05,23.8],[23.75,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.05,30],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Outline","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":14,"st":0,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.7.13","fr":60,"ip":0,"op":14,"w":68,"h":68,"nm":"face_dialog_idle_static","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[106.329,106.329,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2.6,3.25],[-2.6,3.25],[-2.6,1.25],[0.6,1.25],[0.6,-3.25],[2.6,-3.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30.3,31.45],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Nose","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.2,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[18.6,23.8],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_L","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.1,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[41.1,23.8],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_R\r","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.534,0],[0,3.034]],"o":[[-0.996,1.015],[-3.033,0],[0,0]],"v":[[4.705,1.103],[0.787,2.747],[-4.705,-2.747]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[29.044,41.646],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mouth","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.1,0],[0,-13.2],[-13.1,0],[0,13.2]],"o":[[-13.1,0],[0,13.2],[13.1,0],[0,-13.2]],"v":[[-0.05,-23.8],[-23.75,0],[-0.05,23.8],[23.75,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.05,30],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Outline","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":14,"st":0,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/face_dialog_wink_from_dark.json b/packages/SystemUI/res/raw/face_dialog_wink_from_dark.json
index 05b55c99edc6..533c26ae077c 100644
--- a/packages/SystemUI/res/raw/face_dialog_wink_from_dark.json
+++ b/packages/SystemUI/res/raw/face_dialog_wink_from_dark.json
@@ -1 +1 @@
-{"v":"5.7.13","fr":60,"ip":0,"op":61,"w":68,"h":68,"nm":"face_dialog_wink_from_dark","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".blue200","cl":"blue200","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.5],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.305],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":26,"s":[-14]},{"t":45,"s":[0]}],"ix":10},"p":{"a":0,"k":[30,30,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.5,0.5,0.4],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.305,0.305,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":26,"s":[106,106,100]},{"t":45,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2.6,3.25],[-2.6,3.25],[-2.6,1.25],[0.6,1.25],[0.6,-3.25],[2.6,-3.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30.727,31.703],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Nose","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.2,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[18.6,23.8],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":0,"s":[100,100]},{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":26,"s":[100,26]},{"t":45,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_L","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.1,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[41.1,23.8],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_R\r","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.534,0],[0,3.034]],"o":[[-0.996,1.015],[-3.033,0],[0,0]],"v":[[4.705,1.103],[0.787,2.747],[-4.705,-2.747]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.658823529412,0.780392156863,0.980392156863,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.094,31.756],"ix":2},"a":{"a":0,"k":[1.05,-9.891],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mouth","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":80,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".blue200","cl":"blue200","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[106.329,106.329,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.1,0],[0,-13.2],[-13.1,0],[0,13.2]],"o":[[-13.1,0],[0,13.2],[13.1,0],[0,-13.2]],"v":[[-0.05,-23.8],[-23.75,0],[-0.05,23.8],[23.75,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.658823529412,0.780392156863,0.980392156863,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.05,30],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Outline","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":80,"st":0,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.7.13","fr":60,"ip":0,"op":61,"w":68,"h":68,"nm":"face_dialog_wink_from_dark","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.5],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.305],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":26,"s":[-14]},{"t":45,"s":[0]}],"ix":10},"p":{"a":0,"k":[30,30,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.5,0.5,0.4],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.305,0.305,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":26,"s":[106,106,100]},{"t":45,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2.6,3.25],[-2.6,3.25],[-2.6,1.25],[0.6,1.25],[0.6,-3.25],[2.6,-3.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30.727,31.703],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Nose","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.2,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[18.6,23.8],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":0,"s":[100,100]},{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":26,"s":[100,26]},{"t":45,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_L","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.2],[-1.2,0],[0,1.2],[1.2,0]],"o":[[0,1.2],[1.1,0],[0,-1.2],[-1.2,0]],"v":[[-2.1,0],[0,2.1],[2.1,0],[0,-2.1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.658823549747,0.780392169952,0.980392158031,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[41.1,23.8],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Eye_R\r","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.534,0],[0,3.034]],"o":[[-0.996,1.015],[-3.033,0],[0,0]],"v":[[4.705,1.103],[0.787,2.747],[-4.705,-2.747]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.658823529412,0.780392156863,0.980392156863,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.094,31.756],"ix":2},"a":{"a":0,"k":[1.05,-9.891],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mouth","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":80,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34,34,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[106.329,106.329,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.1,0],[0,-13.2],[-13.1,0],[0,13.2]],"o":[[-13.1,0],[0,13.2],[13.1,0],[0,-13.2]],"v":[[-0.05,-23.8],[-23.75,0],[-0.05,23.8],[23.75,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.658823529412,0.780392156863,0.980392156863,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[30.05,30],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Outline","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":80,"st":0,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/fingerprint_dialogue_error_to_fingerprint_lottie.json b/packages/SystemUI/res/raw/fingerprint_dialogue_error_to_fingerprint_lottie.json
index cc68a83c0653..19d8ddeb84b3 100644
--- a/packages/SystemUI/res/raw/fingerprint_dialogue_error_to_fingerprint_lottie.json
+++ b/packages/SystemUI/res/raw/fingerprint_dialogue_error_to_fingerprint_lottie.json
@@ -1 +1 @@
-{"v":"5.9.0","fr":60,"ip":0,"op":25,"w":80,"h":80,"nm":"error_to_fingerprint","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".colorAccentPrimary","cl":"colorAccentPrimary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[19.341,24.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.701,0.42],[-1.757,0],[-1.577,-0.381],[-1.485,-0.816]],"o":[[1.455,-0.799],[1.608,-0.397],[1.719,0],[1.739,0.42],[0,0]],"v":[[-9.818,1.227],[-5.064,-0.618],[0,-1.227],[4.96,-0.643],[9.818,1.227]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450990677,0.890196084976,0.992156863213,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,7.477],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Top","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-2.446,1.161],[-1.168,0.275],[-1.439,0],[-1.301,-0.304],[-1.225,-0.66],[-1.11,-1.844]],"o":[[1.23,-2.044],[1.024,-0.486],[1.312,-0.31],[1.425,0],[1.454,0.34],[2.122,1.143],[0,0]],"v":[[-13.091,3.273],[-7.438,-1.646],[-4.14,-2.797],[0,-3.273],[4.104,-2.805],[8.141,-1.29],[13.091,3.273]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,16.069],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mid Top","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-6.53,0],[0,-5.793],[0,0],[2.159,0],[0.59,1.489],[0,0],[1.587,0],[0,-2.16],[-0.81,-1.363],[-0.844,-0.674],[0,0]],"o":[[-0.753,-2.095],[0,-5.793],[6.529,0],[0,0],[0,2.16],[-1.604,0],[0,0],[-0.589,-1.489],[-2.161,0],[0,1.62],[0.54,0.909],[0,0],[0,0]],"v":[[-10.702,5.728],[-11.454,1.506],[0.001,-9],[11.454,1.506],[11.454,1.817],[7.544,5.728],[3.926,3.273],[2.618,0],[-0.997,-2.454],[-4.91,1.457],[-3.657,6.014],[-1.57,8.412],[-0.818,9]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,28.341],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Inside to dot ","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.307,-0.561],[0.894,-0.16],[0.706,0],[0.844,0.193],[0.728,0.334],[0.967,0.901]],"o":[[-1.038,0.967],[-0.817,0.351],[-0.673,0.12],[-0.9,0],[-0.794,-0.182],[-1.203,-0.551],[0,0]],"v":[[8.182,-1.636],[4.642,0.681],[2.07,1.453],[-0.001,1.636],[-2.621,1.341],[-4.909,0.563],[-8.182,-1.636]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,40.614],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bottom","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.299],"y":[1]},"o":{"x":[0.543],"y":[0]},"t":5,"s":[0]},{"t":20,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":5,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red200","cl":"red200","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[39.95,40,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[120,120,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.2,-7.5],[1.2,-7.5],[1.2,7.5],[-1.2,7.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019607843,0.721568627451,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30.002,32.488],"ix":2},"a":{"a":0,"k":[0.002,7.488],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.659,0.6],"y":[1,1]},"o":{"x":[0.8,0.8],"y":[0,0]},"t":0,"s":[100,100]},{"i":{"x":[0.6,0.92],"y":[1,1.096]},"o":{"x":[0.8,0.8],"y":[0,0]},"t":4,"s":[100,110]},{"t":10,"s":[100,0]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Top!","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.2,-1.25],[1.2,-1.25],[1.2,1.25],[-1.2,1.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019607843,0.721568627451,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30,38.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.853,0.853],"y":[0,0]},"t":0,"s":[100,100]},{"i":{"x":[0.92,0.92],"y":[1.06,1.06]},"o":{"x":[0.8,0.8],"y":[0,0]},"t":4,"s":[110,110]},{"t":10,"s":[0,0]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bottom!","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":-30,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red200","cl":"red200","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[100]},{"t":10,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[40.25,40.25,0],"ix":1,"l":2},"s":{"a":0,"k":[97.5,97.5,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.12,0],[0,-22.08],[-22.08,0],[0,22.08]],"o":[[-22.08,0],[0,22.08],[22.12,0],[0,-22.08]],"v":[[-0.04,-40],[-40,0],[-0.04,40],[40,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[40.25,40.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[100]},{"t":10,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.949019607843,0.721568627451,0.709803921569,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[100]},{"t":10,"s":[0]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[2.5]},{"t":10,"s":[0]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":10,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey700","cl":"grey700","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[40.25,40.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.12,0],[0,-22.08],[-22.08,0],[0,22.08]],"o":[[-22.08,0],[0,22.08],[22.12,0],[0,-22.08]],"v":[[-0.04,-40],[-40,0],[-0.04,40],[40,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.278431385756,0.278431385756,0.278431385756,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":4,"s":[0]},{"t":14,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[40.25,40.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.9.0","fr":60,"ip":0,"op":25,"w":80,"h":80,"nm":"error_to_fingerprint","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".onPrimary","cl":"onPrimary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[19.341,24.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.701,0.42],[-1.757,0],[-1.577,-0.381],[-1.485,-0.816]],"o":[[1.455,-0.799],[1.608,-0.397],[1.719,0],[1.739,0.42],[0,0]],"v":[[-9.818,1.227],[-5.064,-0.618],[0,-1.227],[4.96,-0.643],[9.818,1.227]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450990677,0.890196084976,0.992156863213,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,7.477],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Top","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-2.446,1.161],[-1.168,0.275],[-1.439,0],[-1.301,-0.304],[-1.225,-0.66],[-1.11,-1.844]],"o":[[1.23,-2.044],[1.024,-0.486],[1.312,-0.31],[1.425,0],[1.454,0.34],[2.122,1.143],[0,0]],"v":[[-13.091,3.273],[-7.438,-1.646],[-4.14,-2.797],[0,-3.273],[4.104,-2.805],[8.141,-1.29],[13.091,3.273]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,16.069],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mid Top","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-6.53,0],[0,-5.793],[0,0],[2.159,0],[0.59,1.489],[0,0],[1.587,0],[0,-2.16],[-0.81,-1.363],[-0.844,-0.674],[0,0]],"o":[[-0.753,-2.095],[0,-5.793],[6.529,0],[0,0],[0,2.16],[-1.604,0],[0,0],[-0.589,-1.489],[-2.161,0],[0,1.62],[0.54,0.909],[0,0],[0,0]],"v":[[-10.702,5.728],[-11.454,1.506],[0.001,-9],[11.454,1.506],[11.454,1.817],[7.544,5.728],[3.926,3.273],[2.618,0],[-0.997,-2.454],[-4.91,1.457],[-3.657,6.014],[-1.57,8.412],[-0.818,9]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,28.341],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Inside to dot ","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.307,-0.561],[0.894,-0.16],[0.706,0],[0.844,0.193],[0.728,0.334],[0.967,0.901]],"o":[[-1.038,0.967],[-0.817,0.351],[-0.673,0.12],[-0.9,0],[-0.794,-0.182],[-1.203,-0.551],[0,0]],"v":[[8.182,-1.636],[4.642,0.681],[2.07,1.453],[-0.001,1.636],[-2.621,1.341],[-4.909,0.563],[-8.182,-1.636]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,40.614],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bottom","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.299],"y":[1]},"o":{"x":[0.543],"y":[0]},"t":5,"s":[0]},{"t":20,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":5,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red200","cl":"red200","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[39.95,40,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[120,120,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.2,-7.5],[1.2,-7.5],[1.2,7.5],[-1.2,7.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019607843,0.721568627451,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30.002,32.488],"ix":2},"a":{"a":0,"k":[0.002,7.488],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.659,0.6],"y":[1,1]},"o":{"x":[0.8,0.8],"y":[0,0]},"t":0,"s":[100,100]},{"i":{"x":[0.6,0.92],"y":[1,1.096]},"o":{"x":[0.8,0.8],"y":[0,0]},"t":4,"s":[100,110]},{"t":10,"s":[100,0]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Top!","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.2,-1.25],[1.2,-1.25],[1.2,1.25],[-1.2,1.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019607843,0.721568627451,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30,38.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.853,0.853],"y":[0,0]},"t":0,"s":[100,100]},{"i":{"x":[0.92,0.92],"y":[1.06,1.06]},"o":{"x":[0.8,0.8],"y":[0,0]},"t":4,"s":[110,110]},{"t":10,"s":[0,0]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bottom!","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":25,"st":-30,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red200","cl":"red200","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[100]},{"t":10,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[40.25,40.25,0],"ix":1,"l":2},"s":{"a":0,"k":[97.5,97.5,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.12,0],[0,-22.08],[-22.08,0],[0,22.08]],"o":[[-22.08,0],[0,22.08],[22.12,0],[0,-22.08]],"v":[[-0.04,-40],[-40,0],[-0.04,40],[40,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[40.25,40.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[100]},{"t":10,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.949019607843,0.721568627451,0.709803921569,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[100]},{"t":10,"s":[0]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[2.5]},{"t":10,"s":[0]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":10,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[40.25,40.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.12,0],[0,-22.08],[-22.08,0],[0,22.08]],"o":[[-22.08,0],[0,22.08],[22.12,0],[0,-22.08]],"v":[[-0.04,-40],[-40,0],[-0.04,40],[40,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.278431385756,0.278431385756,0.278431385756,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":4,"s":[0]},{"t":14,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[40.25,40.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/fingerprint_dialogue_error_to_unlock_lottie.json b/packages/SystemUI/res/raw/fingerprint_dialogue_error_to_unlock_lottie.json
index aaf7e587eb6b..24d332d323d9 100644
--- a/packages/SystemUI/res/raw/fingerprint_dialogue_error_to_unlock_lottie.json
+++ b/packages/SystemUI/res/raw/fingerprint_dialogue_error_to_unlock_lottie.json
@@ -1 +1 @@
-{"v":"5.9.0","fr":60,"ip":0,"op":41,"w":80,"h":80,"nm":"error_to_unlock","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".colorAccentPrimary","cl":"colorAccentPrimary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40.091,40,0],"ix":2,"l":2},"a":{"a":0,"k":[19.341,24.25,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.1,0.1,0.1],"y":[1,1,1]},"o":{"x":[0.05,0.05,0.05],"y":[1.4,1.4,0]},"t":10,"s":[50,50,100]},{"t":30,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":14,"s":[{"i":[[0,0],[0,0],[-3.452,0],[0,-3.375],[0,0]],"o":[[0,0],[0,-3.375],[3.452,0],[0,0],[0,0]],"v":[[-6.217,12.558],[-6.234,6.669],[0.016,0.558],[6.266,6.669],[6.283,12.558]],"c":false}]},{"t":30,"s":[{"i":[[0,0],[0,0],[3.292,0.021],[0,-3.375],[0,0]],"o":[[0,0],[0,-3.375],[-3.393,-0.022],[0,0],[0,0]],"v":[[18.568,12.573],[18.552,6.684],[12.516,0.553],[6.266,6.669],[6.283,12.558]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450990677,0.890196084976,0.992156863213,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,7.477],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Top","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.307,0.352],[-0.601,0],[0,0],[0,-1.104],[0,0]],"o":[[0,0],[0,-0.503],[0.367,-0.42],[0,0],[1.104,0],[0,0],[0,0]],"v":[[-11.2,14.15],[-11.198,6.146],[-10.705,4.831],[-9.198,4.146],[9.302,4.146],[11.302,6.146],[11.3,14.07]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,16.069],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mid Top","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.736,0],[0,-0.741],[0,0],[0.243,0],[0.066,0.191],[0,0],[0.179,0],[0,-0.276],[-0.162,-0.273],[-0.755,0.357],[0,0]],"o":[[-1.273,-0.008],[0,-0.741],[0.736,0],[0,0],[0,0.276],[-0.181,0],[0,0],[-0.066,-0.191],[-0.243,0],[-0.002,0.139],[0.109,0.182],[0.727,-0.402],[0,0]],"v":[[0.082,3.187],[-1.235,1.986],[0.055,0.642],[1.346,1.986],[1.346,2.026],[0.905,2.527],[0.498,2.212],[0.35,1.794],[-0.057,1.479],[-0.733,1.951],[-0.58,2.686],[0.619,3.071],[1.351,2]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,28.341],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Inside to dot ","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.446,-0.367],[0.481,0],[0,0],[0,1.104],[0,0]],"o":[[0,0],[0,0.623],[-0.345,0.284],[0,0],[-1.104,0],[0,0],[0,0]],"v":[[11.302,-10.469],[11.302,-2.469],[10.57,-0.923],[9.302,-0.469],[-9.198,-0.469],[-11.198,-2.469],[-11.198,-10.469]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,40.614],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bottom","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":10,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red200","cl":"red200","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[39.95,40,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[120,120,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.2,-7.5],[1.2,-7.5],[1.2,7.5],[-1.2,7.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019607843,0.721568627451,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30.002,32.488],"ix":2},"a":{"a":0,"k":[0.002,7.488],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.659,0.6],"y":[1,1]},"o":{"x":[0.8,0.8],"y":[0,0]},"t":0,"s":[100,100]},{"i":{"x":[0.6,0.92],"y":[1,1.096]},"o":{"x":[0.8,0.8],"y":[0,0]},"t":4,"s":[100,110]},{"t":10,"s":[100,0]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Top!","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.2,-1.25],[1.2,-1.25],[1.2,1.25],[-1.2,1.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019607843,0.721568627451,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30,38.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.853,0.853],"y":[0,0]},"t":0,"s":[100,100]},{"i":{"x":[0.92,0.92],"y":[1.06,1.06]},"o":{"x":[0.8,0.8],"y":[0,0]},"t":4,"s":[110,110]},{"t":10,"s":[0,0]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bottom!","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":86,"st":-30,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red200","cl":"red200","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[100]},{"t":10,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[40.25,40.25,0],"ix":1,"l":2},"s":{"a":0,"k":[97.5,97.5,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.12,0],[0,-22.08],[-22.08,0],[0,22.08]],"o":[[-22.08,0],[0,22.08],[22.12,0],[0,-22.08]],"v":[[-0.04,-40],[-40,0],[-0.04,40],[40,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[40.25,40.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[100]},{"t":10,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.949019607843,0.721568627451,0.709803921569,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[100]},{"t":10,"s":[0]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[2.5]},{"t":10,"s":[0]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":10,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey700","cl":"grey700","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[40.25,40.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.12,0],[0,-22.08],[-22.08,0],[0,22.08]],"o":[[-22.08,0],[0,22.08],[22.12,0],[0,-22.08]],"v":[[-0.04,-40],[-40,0],[-0.04,40],[40,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.278431385756,0.278431385756,0.278431385756,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":4,"s":[0]},{"t":14,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[40.25,40.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.9.0","fr":60,"ip":0,"op":41,"w":80,"h":80,"nm":"error_to_unlock","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".onPrimary","cl":"onPrimary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40.091,40,0],"ix":2,"l":2},"a":{"a":0,"k":[19.341,24.25,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.1,0.1,0.1],"y":[1,1,1]},"o":{"x":[0.05,0.05,0.05],"y":[1.4,1.4,0]},"t":10,"s":[50,50,100]},{"t":30,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":14,"s":[{"i":[[0,0],[0,0],[-3.452,0],[0,-3.375],[0,0]],"o":[[0,0],[0,-3.375],[3.452,0],[0,0],[0,0]],"v":[[-6.217,12.558],[-6.234,6.669],[0.016,0.558],[6.266,6.669],[6.283,12.558]],"c":false}]},{"t":30,"s":[{"i":[[0,0],[0,0],[3.292,0.021],[0,-3.375],[0,0]],"o":[[0,0],[0,-3.375],[-3.393,-0.022],[0,0],[0,0]],"v":[[18.568,12.573],[18.552,6.684],[12.516,0.553],[6.266,6.669],[6.283,12.558]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450990677,0.890196084976,0.992156863213,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,7.477],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Top","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.307,0.352],[-0.601,0],[0,0],[0,-1.104],[0,0]],"o":[[0,0],[0,-0.503],[0.367,-0.42],[0,0],[1.104,0],[0,0],[0,0]],"v":[[-11.2,14.15],[-11.198,6.146],[-10.705,4.831],[-9.198,4.146],[9.302,4.146],[11.302,6.146],[11.3,14.07]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,16.069],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mid Top","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.736,0],[0,-0.741],[0,0],[0.243,0],[0.066,0.191],[0,0],[0.179,0],[0,-0.276],[-0.162,-0.273],[-0.755,0.357],[0,0]],"o":[[-1.273,-0.008],[0,-0.741],[0.736,0],[0,0],[0,0.276],[-0.181,0],[0,0],[-0.066,-0.191],[-0.243,0],[-0.002,0.139],[0.109,0.182],[0.727,-0.402],[0,0]],"v":[[0.082,3.187],[-1.235,1.986],[0.055,0.642],[1.346,1.986],[1.346,2.026],[0.905,2.527],[0.498,2.212],[0.35,1.794],[-0.057,1.479],[-0.733,1.951],[-0.58,2.686],[0.619,3.071],[1.351,2]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,28.341],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Inside to dot ","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.446,-0.367],[0.481,0],[0,0],[0,1.104],[0,0]],"o":[[0,0],[0,0.623],[-0.345,0.284],[0,0],[-1.104,0],[0,0],[0,0]],"v":[[11.302,-10.469],[11.302,-2.469],[10.57,-0.923],[9.302,-0.469],[-9.198,-0.469],[-11.198,-2.469],[-11.198,-10.469]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,40.614],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bottom","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":10,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red200","cl":"red200","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[39.95,40,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[120,120,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.2,-7.5],[1.2,-7.5],[1.2,7.5],[-1.2,7.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019607843,0.721568627451,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30.002,32.488],"ix":2},"a":{"a":0,"k":[0.002,7.488],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.659,0.6],"y":[1,1]},"o":{"x":[0.8,0.8],"y":[0,0]},"t":0,"s":[100,100]},{"i":{"x":[0.6,0.92],"y":[1,1.096]},"o":{"x":[0.8,0.8],"y":[0,0]},"t":4,"s":[100,110]},{"t":10,"s":[100,0]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Top!","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.2,-1.25],[1.2,-1.25],[1.2,1.25],[-1.2,1.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019607843,0.721568627451,0.709803921569,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30,38.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.853,0.853],"y":[0,0]},"t":0,"s":[100,100]},{"i":{"x":[0.92,0.92],"y":[1.06,1.06]},"o":{"x":[0.8,0.8],"y":[0,0]},"t":4,"s":[110,110]},{"t":10,"s":[0,0]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bottom!","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":86,"st":-30,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red200","cl":"red200","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[100]},{"t":10,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[40.25,40.25,0],"ix":1,"l":2},"s":{"a":0,"k":[97.5,97.5,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.12,0],[0,-22.08],[-22.08,0],[0,22.08]],"o":[[-22.08,0],[0,22.08],[22.12,0],[0,-22.08]],"v":[[-0.04,-40],[-40,0],[-0.04,40],[40,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[40.25,40.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[100]},{"t":10,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.949019607843,0.721568627451,0.709803921569,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[100]},{"t":10,"s":[0]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[2.5]},{"t":10,"s":[0]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":10,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[40.25,40.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.12,0],[0,-22.08],[-22.08,0],[0,22.08]],"o":[[-22.08,0],[0,22.08],[22.12,0],[0,-22.08]],"v":[[-0.04,-40],[-40,0],[-0.04,40],[40,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.278431385756,0.278431385756,0.278431385756,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":4,"s":[0]},{"t":14,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[40.25,40.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/fingerprint_dialogue_fingerprint_to_error_lottie.json b/packages/SystemUI/res/raw/fingerprint_dialogue_fingerprint_to_error_lottie.json
index 78bccba83ecb..13a8bf26493a 100644
--- a/packages/SystemUI/res/raw/fingerprint_dialogue_fingerprint_to_error_lottie.json
+++ b/packages/SystemUI/res/raw/fingerprint_dialogue_fingerprint_to_error_lottie.json
@@ -1 +1 @@
-{"v":"5.9.0","fr":60,"ip":0,"op":21,"w":80,"h":80,"nm":"fingerprint_to_error","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".colorAccentPrimary","cl":"colorAccentPrimary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[19.341,24.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.701,0.42],[-1.757,0],[-1.577,-0.381],[-1.485,-0.816]],"o":[[1.455,-0.799],[1.608,-0.397],[1.719,0],[1.739,0.42],[0,0]],"v":[[-9.818,1.227],[-5.064,-0.618],[0,-1.227],[4.96,-0.643],[9.818,1.227]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,7.477],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Top","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-2.446,1.161],[-1.168,0.275],[-1.439,0],[-1.301,-0.304],[-1.225,-0.66],[-1.11,-1.844]],"o":[[1.23,-2.044],[1.024,-0.486],[1.312,-0.31],[1.425,0],[1.454,0.34],[2.122,1.143],[0,0]],"v":[[-13.091,3.273],[-7.438,-1.646],[-4.14,-2.797],[0,-3.273],[4.104,-2.805],[8.141,-1.29],[13.091,3.273]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,16.069],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mid Top","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-6.53,0],[0,-5.793],[0,0],[2.159,0],[0.59,1.489],[0,0],[1.587,0],[0,-2.16],[-0.81,-1.363],[-0.844,-0.674],[0,0]],"o":[[-0.753,-2.095],[0,-5.793],[6.529,0],[0,0],[0,2.16],[-1.604,0],[0,0],[-0.589,-1.489],[-2.161,0],[0,1.62],[0.54,0.909],[0,0],[0,0]],"v":[[-10.702,5.728],[-11.454,1.506],[0.001,-9],[11.454,1.506],[11.454,1.817],[7.544,5.728],[3.926,3.273],[2.618,0],[-0.997,-2.454],[-4.91,1.457],[-3.657,6.014],[-1.57,8.412],[-0.818,9]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,28.341],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Inside to dot ","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.307,-0.561],[0.894,-0.16],[0.706,0],[0.844,0.193],[0.728,0.334],[0.967,0.901]],"o":[[-1.038,0.967],[-0.817,0.351],[-0.673,0.12],[-0.9,0],[-0.794,-0.182],[-1.203,-0.551],[0,0]],"v":[[8.182,-1.636],[4.642,0.681],[2.07,1.453],[-0.001,1.636],[-2.621,1.341],[-4.909,0.563],[-8.182,-1.636]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450990677,0.890196084976,0.992156863213,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,40.614],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bottom","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":0,"s":[0]},{"t":10,"s":[100]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":5,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red200","cl":"red200","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[39.95,40,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[120,120,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.2,-7.5],[1.2,-7.5],[1.2,7.5],[-1.2,7.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019610882,0.721568644047,0.709803938866,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30.002,32.488],"ix":2},"a":{"a":0,"k":[0.002,7.488],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.08],"y":[0,0.096]},"t":10,"s":[100,0]},{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.341,0.4],"y":[0,0]},"t":16,"s":[100,110]},{"t":20,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Top!","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.2,-1.25],[1.2,-1.25],[1.2,1.25],[-1.2,1.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019610882,0.721568644047,0.709803938866,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30,38.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.08,0.08],"y":[0.06,0.06]},"t":10,"s":[0,0]},{"i":{"x":[0.147,0.147],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":16,"s":[110,110]},{"t":20,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bottom!","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":21,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red200","cl":"red200","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":4,"s":[0]},{"t":9,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[40.25,40.25,0],"ix":1,"l":2},"s":{"a":0,"k":[97.5,97.5,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.12,0],[0,-22.08],[-22.08,0],[0,22.08]],"o":[[-22.08,0],[0,22.08],[22.12,0],[0,-22.08]],"v":[[-0.04,-40],[-40,0],[-0.04,40],[40,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[40.25,40.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":4,"s":[0]},{"t":9,"s":[100]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.949019607843,0.721568627451,0.709803921569,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":4,"s":[0]},{"t":9,"s":[100]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":4,"s":[0]},{"t":18,"s":[2.5]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":4,"op":600,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey700","cl":"grey700","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[40.25,40.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.12,0],[0,-22.08],[-22.08,0],[0,22.08]],"o":[[-22.08,0],[0,22.08],[22.12,0],[0,-22.08]],"v":[[-0.04,-40],[-40,0],[-0.04,40],[40,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.278431385756,0.278431385756,0.278431385756,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"t":5,"s":[0]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[40.25,40.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.9.0","fr":60,"ip":0,"op":21,"w":80,"h":80,"nm":"fingerprint_to_error","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".onPrimary","cl":"onPrimary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[19.341,24.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.701,0.42],[-1.757,0],[-1.577,-0.381],[-1.485,-0.816]],"o":[[1.455,-0.799],[1.608,-0.397],[1.719,0],[1.739,0.42],[0,0]],"v":[[-9.818,1.227],[-5.064,-0.618],[0,-1.227],[4.96,-0.643],[9.818,1.227]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,7.477],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Top","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-2.446,1.161],[-1.168,0.275],[-1.439,0],[-1.301,-0.304],[-1.225,-0.66],[-1.11,-1.844]],"o":[[1.23,-2.044],[1.024,-0.486],[1.312,-0.31],[1.425,0],[1.454,0.34],[2.122,1.143],[0,0]],"v":[[-13.091,3.273],[-7.438,-1.646],[-4.14,-2.797],[0,-3.273],[4.104,-2.805],[8.141,-1.29],[13.091,3.273]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,16.069],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mid Top","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-6.53,0],[0,-5.793],[0,0],[2.159,0],[0.59,1.489],[0,0],[1.587,0],[0,-2.16],[-0.81,-1.363],[-0.844,-0.674],[0,0]],"o":[[-0.753,-2.095],[0,-5.793],[6.529,0],[0,0],[0,2.16],[-1.604,0],[0,0],[-0.589,-1.489],[-2.161,0],[0,1.62],[0.54,0.909],[0,0],[0,0]],"v":[[-10.702,5.728],[-11.454,1.506],[0.001,-9],[11.454,1.506],[11.454,1.817],[7.544,5.728],[3.926,3.273],[2.618,0],[-0.997,-2.454],[-4.91,1.457],[-3.657,6.014],[-1.57,8.412],[-0.818,9]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,28.341],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Inside to dot ","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.307,-0.561],[0.894,-0.16],[0.706,0],[0.844,0.193],[0.728,0.334],[0.967,0.901]],"o":[[-1.038,0.967],[-0.817,0.351],[-0.673,0.12],[-0.9,0],[-0.794,-0.182],[-1.203,-0.551],[0,0]],"v":[[8.182,-1.636],[4.642,0.681],[2.07,1.453],[-0.001,1.636],[-2.621,1.341],[-4.909,0.563],[-8.182,-1.636]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450990677,0.890196084976,0.992156863213,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,40.614],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bottom","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":0,"s":[0]},{"t":10,"s":[100]}],"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":5,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".red200","cl":"red200","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[39.95,40,0],"ix":2,"l":2},"a":{"a":0,"k":[30,30,0],"ix":1,"l":2},"s":{"a":0,"k":[120,120,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.2,-7.5],[1.2,-7.5],[1.2,7.5],[-1.2,7.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019610882,0.721568644047,0.709803938866,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30.002,32.488],"ix":2},"a":{"a":0,"k":[0.002,7.488],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.08],"y":[0,0.096]},"t":10,"s":[100,0]},{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.341,0.4],"y":[0,0]},"t":16,"s":[100,110]},{"t":20,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Top!","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-1.2,-1.25],[1.2,-1.25],[1.2,1.25],[-1.2,1.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019610882,0.721568644047,0.709803938866,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30,38.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.08,0.08],"y":[0.06,0.06]},"t":10,"s":[0,0]},{"i":{"x":[0.147,0.147],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":16,"s":[110,110]},{"t":20,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bottom!","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":21,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".red200","cl":"red200","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":4,"s":[0]},{"t":9,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[40.25,40.25,0],"ix":1,"l":2},"s":{"a":0,"k":[97.5,97.5,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.12,0],[0,-22.08],[-22.08,0],[0,22.08]],"o":[[-22.08,0],[0,22.08],[22.12,0],[0,-22.08]],"v":[[-0.04,-40],[-40,0],[-0.04,40],[40,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[40.25,40.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":4,"s":[0]},{"t":9,"s":[100]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.949019607843,0.721568627451,0.709803921569,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":4,"s":[0]},{"t":9,"s":[100]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":4,"s":[0]},{"t":18,"s":[2.5]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":4,"op":600,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[40.25,40.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.12,0],[0,-22.08],[-22.08,0],[0,22.08]],"o":[[-22.08,0],[0,22.08],[22.12,0],[0,-22.08]],"v":[[-0.04,-40],[-40,0],[-0.04,40],[40,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.278431385756,0.278431385756,0.278431385756,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"t":5,"s":[0]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[40.25,40.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/fingerprint_dialogue_fingerprint_to_success_lottie.json b/packages/SystemUI/res/raw/fingerprint_dialogue_fingerprint_to_success_lottie.json
index 3eb95ef1a718..44e4d4bdbd01 100644
--- a/packages/SystemUI/res/raw/fingerprint_dialogue_fingerprint_to_success_lottie.json
+++ b/packages/SystemUI/res/raw/fingerprint_dialogue_fingerprint_to_success_lottie.json
@@ -1 +1 @@
-{"v":"5.9.0","fr":60,"ip":0,"op":21,"w":80,"h":80,"nm":"RearFPS_fingerprint_to_success","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".green200","cl":"green200","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[28,47,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-10.556,-9.889],[7.444,6.555],[34.597,-20.486]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.658823529412,0.854901960784,0.709803921569,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":10,"s":[0]},{"t":20,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":10,"op":910,"st":10,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".green200","cl":"green200","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[0]},{"t":15,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[40.25,40.25,0],"ix":1,"l":2},"s":{"a":0,"k":[93.5,93.5,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.12,0],[0,-22.08],[-22.08,0],[0,22.08]],"o":[[-22.08,0],[0,22.08],[22.12,0],[0,-22.08]],"v":[[-0.04,-40],[-40,0],[-0.04,40],[40,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[40.25,40.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.658823529412,0.854901960784,0.709803921569,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[0]},{"t":15,"s":[100]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[0]},{"t":20,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":10,"op":21,"st":10,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".colorAccentPrimary","cl":"colorAccentPrimary","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[100]},{"t":10,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40.091,40,0],"ix":2,"l":2},"a":{"a":0,"k":[19.341,24.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.701,0.42],[-1.757,0],[-1.577,-0.381],[-1.485,-0.816]],"o":[[1.455,-0.799],[1.608,-0.397],[1.719,0],[1.739,0.42],[0,0]],"v":[[-9.818,1.227],[-5.064,-0.618],[0,-1.227],[4.96,-0.643],[9.818,1.227]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,7.477],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Top","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-2.446,1.161],[-1.168,0.275],[-1.439,0],[-1.301,-0.304],[-1.225,-0.66],[-1.11,-1.844]],"o":[[1.23,-2.044],[1.024,-0.486],[1.312,-0.31],[1.425,0],[1.454,0.34],[2.122,1.143],[0,0]],"v":[[-13.091,3.273],[-7.438,-1.646],[-4.14,-2.797],[0,-3.273],[4.104,-2.805],[8.141,-1.29],[13.091,3.273]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,16.069],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mid Top","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-6.53,0],[0,-5.793],[0,0],[2.159,0],[0.59,1.489],[0,0],[1.587,0],[0,-2.16],[-0.81,-1.363],[-0.844,-0.674],[0,0]],"o":[[-0.753,-2.095],[0,-5.793],[6.529,0],[0,0],[0,2.16],[-1.604,0],[0,0],[-0.589,-1.489],[-2.161,0],[0,1.62],[0.54,0.909],[0,0],[0,0]],"v":[[-10.702,5.728],[-11.454,1.506],[0.001,-9],[11.454,1.506],[11.454,1.817],[7.544,5.728],[3.926,3.273],[2.618,0],[-0.997,-2.454],[-4.91,1.457],[-3.657,6.014],[-1.57,8.412],[-0.818,9]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,28.341],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Inside to dot ","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.307,-0.561],[0.894,-0.16],[0.706,0],[0.844,0.193],[0.728,0.334],[0.967,0.901]],"o":[[-1.038,0.967],[-0.817,0.351],[-0.673,0.12],[-0.9,0],[-0.794,-0.182],[-1.203,-0.551],[0,0]],"v":[[8.182,-0.386],[4.642,1.931],[2.07,2.703],[-0.001,2.886],[-2.621,2.591],[-4.909,1.813],[-8.182,-0.386]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,40.614],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bottom","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey700","cl":"grey700","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[40.25,40.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.12,0],[0,-22.08],[-22.08,0],[0,22.08]],"o":[[-22.08,0],[0,22.08],[22.12,0],[0,-22.08]],"v":[[-0.04,-40],[-40,0],[-0.04,40],[40,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.278431385756,0.278431385756,0.278431385756,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[100]},{"t":20,"s":[0]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[40.25,40.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file
+{"v":"5.9.0","fr":60,"ip":0,"op":21,"w":80,"h":80,"nm":"RearFPS_fingerprint_to_success","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".green200","cl":"green200","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[28,47,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-10.556,-9.889],[7.444,6.555],[34.597,-20.486]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.658823529412,0.854901960784,0.709803921569,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":10,"s":[0]},{"t":20,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":10,"op":910,"st":10,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".green200","cl":"green200","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[0]},{"t":15,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[40.25,40.25,0],"ix":1,"l":2},"s":{"a":0,"k":[93.5,93.5,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.12,0],[0,-22.08],[-22.08,0],[0,22.08]],"o":[[-22.08,0],[0,22.08],[22.12,0],[0,-22.08]],"v":[[-0.04,-40],[-40,0],[-0.04,40],[40,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[40.25,40.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.658823529412,0.854901960784,0.709803921569,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[0]},{"t":15,"s":[100]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[0]},{"t":20,"s":[4]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":10,"op":21,"st":10,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".onPrimary","cl":"onPrimary","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[100]},{"t":10,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40.091,40,0],"ix":2,"l":2},"a":{"a":0,"k":[19.341,24.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.701,0.42],[-1.757,0],[-1.577,-0.381],[-1.485,-0.816]],"o":[[1.455,-0.799],[1.608,-0.397],[1.719,0],[1.739,0.42],[0,0]],"v":[[-9.818,1.227],[-5.064,-0.618],[0,-1.227],[4.96,-0.643],[9.818,1.227]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,7.477],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Top","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-2.446,1.161],[-1.168,0.275],[-1.439,0],[-1.301,-0.304],[-1.225,-0.66],[-1.11,-1.844]],"o":[[1.23,-2.044],[1.024,-0.486],[1.312,-0.31],[1.425,0],[1.454,0.34],[2.122,1.143],[0,0]],"v":[[-13.091,3.273],[-7.438,-1.646],[-4.14,-2.797],[0,-3.273],[4.104,-2.805],[8.141,-1.29],[13.091,3.273]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,16.069],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mid Top","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-6.53,0],[0,-5.793],[0,0],[2.159,0],[0.59,1.489],[0,0],[1.587,0],[0,-2.16],[-0.81,-1.363],[-0.844,-0.674],[0,0]],"o":[[-0.753,-2.095],[0,-5.793],[6.529,0],[0,0],[0,2.16],[-1.604,0],[0,0],[-0.589,-1.489],[-2.161,0],[0,1.62],[0.54,0.909],[0,0],[0,0]],"v":[[-10.702,5.728],[-11.454,1.506],[0.001,-9],[11.454,1.506],[11.454,1.817],[7.544,5.728],[3.926,3.273],[2.618,0],[-0.997,-2.454],[-4.91,1.457],[-3.657,6.014],[-1.57,8.412],[-0.818,9]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,28.341],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Inside to dot ","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.307,-0.561],[0.894,-0.16],[0.706,0],[0.844,0.193],[0.728,0.334],[0.967,0.901]],"o":[[-1.038,0.967],[-0.817,0.351],[-0.673,0.12],[-0.9,0],[-0.794,-0.182],[-1.203,-0.551],[0,0]],"v":[[8.182,-0.386],[4.642,1.931],[2.07,2.703],[-0.001,2.886],[-2.621,2.591],[-4.909,1.813],[-8.182,-0.386]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,40.614],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bottom","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[40.25,40.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.12,0],[0,-22.08],[-22.08,0],[0,22.08]],"o":[[-22.08,0],[0,22.08],[22.12,0],[0,-22.08]],"v":[[-0.04,-40],[-40,0],[-0.04,40],[40,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.278431385756,0.278431385756,0.278431385756,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[100]},{"t":20,"s":[0]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[40.25,40.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file
diff --git a/packages/SystemUI/res/raw/fingerprint_dialogue_fingerprint_to_unlock_lottie.json b/packages/SystemUI/res/raw/fingerprint_dialogue_fingerprint_to_unlock_lottie.json
index 313c6c59539c..b84f22537935 100644
--- a/packages/SystemUI/res/raw/fingerprint_dialogue_fingerprint_to_unlock_lottie.json
+++ b/packages/SystemUI/res/raw/fingerprint_dialogue_fingerprint_to_unlock_lottie.json
@@ -1 +1 @@
-{"v":"5.9.0","fr":60,"ip":0,"op":31,"w":80,"h":80,"nm":"fingerprint_to_unlock","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":2,"ty":4,"nm":".colorAccentPrimary","cl":"colorAccentPrimary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40.107,46,0],"ix":2,"l":2},"a":{"a":0,"k":[2.75,2.75,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.43,0.43,0.2],"y":[1,1,1]},"o":{"x":[0.001,0.001,0.001],"y":[0,0,0]},"t":7.199,"s":[141.866,141.866,100]},{"t":15,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.381,0],[0,1.381],[1.381,0],[0,-1.381]],"o":[[1.381,0],[0,-1.381],[-1.381,0],[0,1.381]],"v":[[0,2.5],[2.5,0],[0,-2.5],[-2.5,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":7.199,"s":[0]},{"t":8.400390625,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.75,2.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".colorAccentPrimary","cl":"colorAccentPrimary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40.091,40,0],"ix":2,"l":2},"a":{"a":0,"k":[19.341,24.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.767},"o":{"x":0.541,"y":0},"t":0,"s":[{"i":[[0,0],[-1.701,0.42],[-1.757,0],[-1.577,-0.381],[-1.485,-0.816]],"o":[[1.455,-0.799],[1.608,-0.397],[1.719,0],[1.739,0.42],[0,0]],"v":[[-9.818,1.227],[-5.064,-0.618],[0,-1.227],[4.96,-0.643],[9.818,1.227]],"c":false}]},{"i":{"x":0.833,"y":0.767},"o":{"x":0.167,"y":0.233},"t":5.715,"s":[{"i":[[0,0],[-1.323,1.591],[-2.674,0],[-1.207,-1.781],[0,0]],"o":[[0,0],[1.298,-1.562],[2.657,0],[1.206,1.781],[0,0]],"v":[[-7.87,7.358],[-5.804,2.36],[0.009,-0.261],[5.845,2.706],[7.905,7.358]],"c":false}]},{"i":{"x":0.261,"y":1},"o":{"x":0.167,"y":0.233},"t":7.143,"s":[{"i":[[0,0],[-0.549,1.21],[-2.975,0],[-0.74,-2.398],[0,0]],"o":[[0,0],[0.796,-2.263],[2.964,0],[0.258,0.927],[0,0]],"v":[[-7.231,9.37],[-5.97,4.027],[0.012,0.056],[6.008,4.239],[7.277,9.37]],"c":false}]},{"i":{"x":0.23,"y":1},"o":{"x":0.123,"y":0},"t":12,"s":[{"i":[[0,0],[0,0],[-3.452,0],[0,-3.375],[0,0]],"o":[[0,0],[0,-3.375],[3.452,0],[0,0],[0,0]],"v":[[-6.217,12.558],[-6.234,6.669],[0.016,0.558],[6.266,6.669],[6.283,12.558]],"c":false}]},{"t":26,"s":[{"i":[[0,0],[0,0],[3.292,0.021],[0,-3.375],[0,0]],"o":[[0,0],[0,-3.375],[-3.393,-0.022],[0,0],[0,0]],"v":[[18.568,12.573],[18.552,6.684],[12.516,0.553],[6.266,6.669],[6.283,12.558]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,7.477],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Top","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.189,"y":1},"o":{"x":0.541,"y":0},"t":0,"s":[{"i":[[0,0],[-2.446,1.161],[-1.168,0.275],[-1.439,0],[-1.301,-0.304],[-1.225,-0.66],[-1.11,-1.844]],"o":[[1.23,-2.044],[1.024,-0.486],[1.312,-0.31],[1.425,0],[1.454,0.34],[2.122,1.143],[0,0]],"v":[[-13.091,3.273],[-7.438,-1.646],[-4.14,-2.797],[0,-3.273],[4.104,-2.805],[8.141,-1.29],[13.091,3.273]],"c":false}]},{"t":15,"s":[{"i":[[0,0],[0,0],[-0.307,0.352],[-0.601,0],[0,0],[0,-1.104],[0,0]],"o":[[0,0],[0,-0.503],[0.367,-0.42],[0,0],[1.104,0],[0,0],[0,0]],"v":[[-11.2,14.15],[-11.198,6.146],[-10.705,4.831],[-9.198,4.146],[9.302,4.146],[11.302,6.146],[11.3,14.07]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,16.069],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mid Top","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.767},"o":{"x":0.541,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[-6.53,0],[0,-5.793],[0,0],[2.159,0],[0.59,1.489],[0,0],[1.587,0],[0,-2.16],[-0.81,-1.363],[-0.844,-0.674],[0,0]],"o":[[-0.753,-2.095],[0,-5.793],[6.529,0],[0,0],[0,2.16],[-1.604,0],[0,0],[-0.589,-1.489],[-2.161,0],[0,1.62],[0.54,0.909],[0,0],[0,0]],"v":[[-10.702,5.728],[-11.454,1.506],[0.001,-9],[11.454,1.506],[11.454,1.817],[7.544,5.728],[3.926,3.273],[2.618,0],[-0.997,-2.454],[-4.91,1.457],[-3.657,6.014],[-1.57,8.412],[-0.818,9]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.233},"t":6.428,"s":[{"i":[[0,0],[0,0],[-1.576,0],[0,-1.474],[0,0],[1.541,0.347],[0.142,0.379],[0,0],[0.383,0],[0,-0.549],[-0.256,-0.431],[-0.768,0.207],[0,0]],"o":[[-1.823,0.497],[0,-1.474],[1.576,0],[0,0],[0,0.549],[-0.378,-0.085],[0,0],[-0.142,-0.379],[-0.521,0],[-0.002,0.353],[0.171,0.288],[0.622,-0.344],[0,0]],"v":[[-0.41,3.841],[-2.717,1.917],[0.047,-0.756],[2.811,1.917],[2.811,1.996],[0.225,3.848],[0.995,2.366],[0.679,1.534],[-0.193,0.909],[-1.338,1.879],[-1.026,3.169],[0.445,3.702],[1.036,3.015]],"c":false}]},{"t":12.857421875,"s":[{"i":[[0,0],[0,0],[-0.736,0],[0,-0.741],[0,0],[0.243,0],[0.066,0.191],[0,0],[0.179,0],[0,-0.276],[-0.162,-0.273],[-0.755,0.357],[0,0]],"o":[[-1.273,-0.008],[0,-0.741],[0.736,0],[0,0],[0,0.276],[-0.181,0],[0,0],[-0.066,-0.191],[-0.243,0],[-0.002,0.139],[0.109,0.182],[0.727,-0.402],[0,0]],"v":[[0.082,3.187],[-1.235,1.986],[0.055,0.642],[1.346,1.986],[1.346,2.026],[0.905,2.527],[0.498,2.212],[0.35,1.794],[-0.057,1.479],[-0.733,1.951],[-0.58,2.686],[0.619,3.071],[1.351,2]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":8.4,"s":[100]},{"t":11.3984375,"s":[0]}],"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,28.341],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Inside to dot ","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.767},"o":{"x":0.541,"y":0},"t":0,"s":[{"i":[[0,0],[1.307,-0.561],[0.894,-0.16],[0.706,0],[0.844,0.193],[0.728,0.334],[0.967,0.901]],"o":[[-1.038,0.967],[-0.817,0.351],[-0.673,0.12],[-0.9,0],[-0.794,-0.182],[-1.203,-0.551],[0,0]],"v":[[8.182,-1.636],[4.642,0.681],[2.07,1.453],[-0.001,1.636],[-2.621,1.341],[-4.909,0.563],[-8.182,-1.636]],"c":false}]},{"i":{"x":0.331,"y":1},"o":{"x":0.167,"y":0.233},"t":6.428,"s":[{"i":[[0,0],[0.313,-0.134],[0.554,-0.317],[0.535,0],[0.203,0.046],[0.175,0.919],[0.232,0.216]],"o":[[-0.249,0.232],[-0.196,0.557],[-0.424,0.245],[-0.216,0],[-1.03,-0.044],[-0.288,-0.132],[0,0]],"v":[[11.468,-8.353],[10.62,-1.716],[9.232,-0.353],[7.057,0.034],[-7.634,-0.037],[-10.453,-1.739],[-11.238,-8.347]],"c":false}]},{"t":15,"s":[{"i":[[0,0],[0,0],[0.446,-0.367],[0.481,0],[0,0],[0,1.104],[0,0]],"o":[[0,0],[0,0.623],[-0.345,0.284],[0,0],[-1.104,0],[0,0],[0,0]],"v":[[11.302,-10.469],[11.302,-2.469],[10.57,-0.923],[9.302,-0.469],[-9.198,-0.469],[-11.198,-2.469],[-11.198,-10.469]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,40.614],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bottom","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey700","cl":"grey700","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[40.25,40.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.12,0],[0,-22.08],[-22.08,0],[0,22.08]],"o":[[-22.08,0],[0,22.08],[22.12,0],[0,-22.08]],"v":[[-0.04,-40],[-40,0],[-0.04,40],[40,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.278431385756,0.278431385756,0.278431385756,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[40.25,40.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[{"tm":30,"cm":"1","dr":0},{"tm":51,"cm":"350ms\r","dr":0},{"tm":69,"cm":"650ms\r","dr":0}]} \ No newline at end of file
+{"v":"5.9.0","fr":60,"ip":0,"op":31,"w":80,"h":80,"nm":"fingerprint_to_unlock","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":2,"ty":4,"nm":".onPrimary","cl":"onPrimary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40.107,46,0],"ix":2,"l":2},"a":{"a":0,"k":[2.75,2.75,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.43,0.43,0.2],"y":[1,1,1]},"o":{"x":[0.001,0.001,0.001],"y":[0,0,0]},"t":7.199,"s":[141.866,141.866,100]},{"t":15,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.381,0],[0,1.381],[1.381,0],[0,-1.381]],"o":[[1.381,0],[0,-1.381],[-1.381,0],[0,1.381]],"v":[[0,2.5],[2.5,0],[0,-2.5],[-2.5,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":7.199,"s":[0]},{"t":8.400390625,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.75,2.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".onPrimary","cl":"onPrimary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40.091,40,0],"ix":2,"l":2},"a":{"a":0,"k":[19.341,24.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.767},"o":{"x":0.541,"y":0},"t":0,"s":[{"i":[[0,0],[-1.701,0.42],[-1.757,0],[-1.577,-0.381],[-1.485,-0.816]],"o":[[1.455,-0.799],[1.608,-0.397],[1.719,0],[1.739,0.42],[0,0]],"v":[[-9.818,1.227],[-5.064,-0.618],[0,-1.227],[4.96,-0.643],[9.818,1.227]],"c":false}]},{"i":{"x":0.833,"y":0.767},"o":{"x":0.167,"y":0.233},"t":5.715,"s":[{"i":[[0,0],[-1.323,1.591],[-2.674,0],[-1.207,-1.781],[0,0]],"o":[[0,0],[1.298,-1.562],[2.657,0],[1.206,1.781],[0,0]],"v":[[-7.87,7.358],[-5.804,2.36],[0.009,-0.261],[5.845,2.706],[7.905,7.358]],"c":false}]},{"i":{"x":0.261,"y":1},"o":{"x":0.167,"y":0.233},"t":7.143,"s":[{"i":[[0,0],[-0.549,1.21],[-2.975,0],[-0.74,-2.398],[0,0]],"o":[[0,0],[0.796,-2.263],[2.964,0],[0.258,0.927],[0,0]],"v":[[-7.231,9.37],[-5.97,4.027],[0.012,0.056],[6.008,4.239],[7.277,9.37]],"c":false}]},{"i":{"x":0.23,"y":1},"o":{"x":0.123,"y":0},"t":12,"s":[{"i":[[0,0],[0,0],[-3.452,0],[0,-3.375],[0,0]],"o":[[0,0],[0,-3.375],[3.452,0],[0,0],[0,0]],"v":[[-6.217,12.558],[-6.234,6.669],[0.016,0.558],[6.266,6.669],[6.283,12.558]],"c":false}]},{"t":26,"s":[{"i":[[0,0],[0,0],[3.292,0.021],[0,-3.375],[0,0]],"o":[[0,0],[0,-3.375],[-3.393,-0.022],[0,0],[0,0]],"v":[[18.568,12.573],[18.552,6.684],[12.516,0.553],[6.266,6.669],[6.283,12.558]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,7.477],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Top","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.189,"y":1},"o":{"x":0.541,"y":0},"t":0,"s":[{"i":[[0,0],[-2.446,1.161],[-1.168,0.275],[-1.439,0],[-1.301,-0.304],[-1.225,-0.66],[-1.11,-1.844]],"o":[[1.23,-2.044],[1.024,-0.486],[1.312,-0.31],[1.425,0],[1.454,0.34],[2.122,1.143],[0,0]],"v":[[-13.091,3.273],[-7.438,-1.646],[-4.14,-2.797],[0,-3.273],[4.104,-2.805],[8.141,-1.29],[13.091,3.273]],"c":false}]},{"t":15,"s":[{"i":[[0,0],[0,0],[-0.307,0.352],[-0.601,0],[0,0],[0,-1.104],[0,0]],"o":[[0,0],[0,-0.503],[0.367,-0.42],[0,0],[1.104,0],[0,0],[0,0]],"v":[[-11.2,14.15],[-11.198,6.146],[-10.705,4.831],[-9.198,4.146],[9.302,4.146],[11.302,6.146],[11.3,14.07]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,16.069],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mid Top","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.767},"o":{"x":0.541,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[-6.53,0],[0,-5.793],[0,0],[2.159,0],[0.59,1.489],[0,0],[1.587,0],[0,-2.16],[-0.81,-1.363],[-0.844,-0.674],[0,0]],"o":[[-0.753,-2.095],[0,-5.793],[6.529,0],[0,0],[0,2.16],[-1.604,0],[0,0],[-0.589,-1.489],[-2.161,0],[0,1.62],[0.54,0.909],[0,0],[0,0]],"v":[[-10.702,5.728],[-11.454,1.506],[0.001,-9],[11.454,1.506],[11.454,1.817],[7.544,5.728],[3.926,3.273],[2.618,0],[-0.997,-2.454],[-4.91,1.457],[-3.657,6.014],[-1.57,8.412],[-0.818,9]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.233},"t":6.428,"s":[{"i":[[0,0],[0,0],[-1.576,0],[0,-1.474],[0,0],[1.541,0.347],[0.142,0.379],[0,0],[0.383,0],[0,-0.549],[-0.256,-0.431],[-0.768,0.207],[0,0]],"o":[[-1.823,0.497],[0,-1.474],[1.576,0],[0,0],[0,0.549],[-0.378,-0.085],[0,0],[-0.142,-0.379],[-0.521,0],[-0.002,0.353],[0.171,0.288],[0.622,-0.344],[0,0]],"v":[[-0.41,3.841],[-2.717,1.917],[0.047,-0.756],[2.811,1.917],[2.811,1.996],[0.225,3.848],[0.995,2.366],[0.679,1.534],[-0.193,0.909],[-1.338,1.879],[-1.026,3.169],[0.445,3.702],[1.036,3.015]],"c":false}]},{"t":12.857421875,"s":[{"i":[[0,0],[0,0],[-0.736,0],[0,-0.741],[0,0],[0.243,0],[0.066,0.191],[0,0],[0.179,0],[0,-0.276],[-0.162,-0.273],[-0.755,0.357],[0,0]],"o":[[-1.273,-0.008],[0,-0.741],[0.736,0],[0,0],[0,0.276],[-0.181,0],[0,0],[-0.066,-0.191],[-0.243,0],[-0.002,0.139],[0.109,0.182],[0.727,-0.402],[0,0]],"v":[[0.082,3.187],[-1.235,1.986],[0.055,0.642],[1.346,1.986],[1.346,2.026],[0.905,2.527],[0.498,2.212],[0.35,1.794],[-0.057,1.479],[-0.733,1.951],[-0.58,2.686],[0.619,3.071],[1.351,2]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":8.4,"s":[100]},{"t":11.3984375,"s":[0]}],"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,28.341],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Inside to dot ","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.767},"o":{"x":0.541,"y":0},"t":0,"s":[{"i":[[0,0],[1.307,-0.561],[0.894,-0.16],[0.706,0],[0.844,0.193],[0.728,0.334],[0.967,0.901]],"o":[[-1.038,0.967],[-0.817,0.351],[-0.673,0.12],[-0.9,0],[-0.794,-0.182],[-1.203,-0.551],[0,0]],"v":[[8.182,-1.636],[4.642,0.681],[2.07,1.453],[-0.001,1.636],[-2.621,1.341],[-4.909,0.563],[-8.182,-1.636]],"c":false}]},{"i":{"x":0.331,"y":1},"o":{"x":0.167,"y":0.233},"t":6.428,"s":[{"i":[[0,0],[0.313,-0.134],[0.554,-0.317],[0.535,0],[0.203,0.046],[0.175,0.919],[0.232,0.216]],"o":[[-0.249,0.232],[-0.196,0.557],[-0.424,0.245],[-0.216,0],[-1.03,-0.044],[-0.288,-0.132],[0,0]],"v":[[11.468,-8.353],[10.62,-1.716],[9.232,-0.353],[7.057,0.034],[-7.634,-0.037],[-10.453,-1.739],[-11.238,-8.347]],"c":false}]},{"t":15,"s":[{"i":[[0,0],[0,0],[0.446,-0.367],[0.481,0],[0,0],[0,1.104],[0,0]],"o":[[0,0],[0,0.623],[-0.345,0.284],[0,0],[-1.104,0],[0,0],[0,0]],"v":[[11.302,-10.469],[11.302,-2.469],[10.57,-0.923],[9.302,-0.469],[-9.198,-0.469],[-11.198,-2.469],[-11.198,-10.469]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.827450980392,0.890196078431,0.992156862745,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.341,40.614],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bottom","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40,40,0],"ix":2,"l":2},"a":{"a":0,"k":[40.25,40.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.12,0],[0,-22.08],[-22.08,0],[0,22.08]],"o":[[-22.08,0],[0,22.08],[22.12,0],[0,-22.08]],"v":[[-0.04,-40],[-40,0],[-0.04,40],[40,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.278431385756,0.278431385756,0.278431385756,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[40.25,40.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[{"tm":30,"cm":"1","dr":0},{"tm":51,"cm":"350ms\r","dr":0},{"tm":69,"cm":"650ms\r","dr":0}]} \ No newline at end of file
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index e7efdba446a7..e1ad98fe6aab 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Batterypersentasie is onbekend."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Gekoppel aan <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Gekoppel aan <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Nie gekoppel nie."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Swerwing"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Af"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Om ’n app met ’n legstuk oop te maak, sal jy moet verifieer dat dit jy is. Hou ook in gedagte dat enigeen dit kan bekyk, selfs wanneer jou tablet gesluit is. Sommige legstukke is moontlik nie vir jou sluitskerm bedoel nie en dit kan onveilig wees om dit hier by te voeg."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Het dit"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Wys sluimerskermknoppie"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Verken sentrummodus"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Kry toegang tot jou gunstelinglegstukke en -skermbeskermers terwyl jy laai."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Kom ons begin"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Wissel gebruiker"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"aftrekkieslys"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Word aan die bokant van gesprekskennisgewings en as \'n profielfoto op sluitskerm gewys, verskyn as \'n borrel, onderbreek Moenie Steur Nie"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioriteit"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> steun nie gesprekskenmerke nie"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Maak toe"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Moenie weer wys nie"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Hierdie kennisgewings kan nie gewysig word nie."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Oproepkennisgewings kan nie gewysig word nie."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Hierdie groep kennisgewings kan nie hier opgestel word nie"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Kalender"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Sakrekenaar"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Wissel bonssleutels"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Wissel muissleutels"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Wissel taaisleutels"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Wissel stadige sleutels"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Wissel stemtoegang"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Wissel TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Wissel vergroting"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Aktiveer Hardoplees"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Moenie Steur Nie"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Volumeknoppieskortpad"</string>
<string name="battery" msgid="769686279459897127">"Battery"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Gebruik vingerafdruk om oop te maak"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Stawing word vereis. Raak die vingerafdruksensor om te staaf."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Oproep aan die gang"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobiele data"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Gekoppel"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Tydelik gekoppel"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Jy het die Bekyk Onlangse Apps-gebaar voltooi."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Swiep op en hou met drie vingers op jou raakpaneel om onlangse apps te bekyk"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Wissel apps"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Swiep regs met vier vingers op jou raakpaneel"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Uitstekende werk!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Jy het die “wissel tussen apps”-gebaar voltooi."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Swiep regs met vier vingers op jou raakpaneel om apps te wissel"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Bekyk alle apps"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Druk die handelingsleutel op jou sleutelbord"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Welgedaan!"</string>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 76a38c921b2d..feee18ff7219 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"የባትሪ መቶኛ አይታወቅም።"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"ከ<xliff:g id="BLUETOOTH">%s</xliff:g> ጋር ተገናኝቷል።"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"ከ<xliff:g id="CAST">%s</xliff:g> ጋር ተገናኝቷል።"</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"አልተገናኘም።"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"በማዛወር ላይ"</string>
<string name="cell_data_off" msgid="4886198950247099526">"ጠፍቷል"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ምግብር በመጠቀም መተግበሪያ ለመክፈት እርስዎ መሆንዎን ማረጋገጥ አለብዎት። እንዲሁም የእርስዎ ጡባዊ በተቆለፈበት ጊዜ እንኳን ማንኛውም ሰው እነሱን ማየት እንደሚችል ከግምት ውስጥ ያስገቡ። አንዳንድ ምግብሮች ለማያ ገፅ ቁልፍዎ የታሰቡ ላይሆኑ ይችላሉ እና እዚህ ለማከል አስተማማኝ ላይሆኑ ይችላሉ።"</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"ገባኝ"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"የገፀ ማያ አሳራፊ አዝራርን አሳይ"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"የመገናኛ ሁነታን ያስሱ"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"ኃይል በሚሞሉበት ወቅት የእርስዎን ተወዳጅ ምግብሮች እና ማያ ገፅ ቆጣቢዎችን ይድረሱ።"</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"እንሂድ"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ተጠቃሚ ቀይር"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ወደታች ተጎታች ምናሌ"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"በውይይት ማሳወቂያዎች አናት ላይ እና በማያ ገፅ መቆለፊያ ላይ እንደ መገለጫ ምስል ይታያል፣ እንደ አረፋ ሆኖ ይታያል፣ አትረብሽን ያቋርጣል"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"ቅድሚያ"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> የውይይት ባህሪያትን አይደግፍም"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"አሰናብት"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"ዳግም አታሳይ"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"እነዚህ ማሳወቂያዎች ሊሻሻሉ አይችሉም።"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"የጥሪ ማሳወቂያዎች ሊቀየሩ አይችሉም።"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"የማሳወቂያዎች ይህ ቡድን እዚህ ላይ ሊዋቀር አይችልም"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"የቀን መቁጠሪያ"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"ሒሳብ ማስያ"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"ካርታዎች"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"የወጡ ቁልፎችን ይቀያይሩ"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"የመዳፊት ቁልፎችን ይቀያይሩ"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"ተጣባቂ ቁልፎችን ይቀያይሩ"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"ቀርፋፋ ቁልፎችን ይቀያይሩ"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"የድምፅ መዳረሻን ይቀያይሩ"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"TalkBackን ይቀያይሩ"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"ማጉላት ይቀያይሩ"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"ለመናገር ምረጥን ያግብሩ"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"አትረብሽ"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"የድምፅ አዝራሮች አቋራጭ"</string>
<string name="battery" msgid="769686279459897127">"ባትሪ"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ለመክፈት የጣት አሻራ ይጠቀሙ"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"ማረጋገጥ ያስፈልጋል። ለማረጋገጥ የጣት አሻራ ዳሳሹን ይንኩ።"</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"እየተካሄደ ያለ ጥሪ"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"የተንቀሳቃሽ ስልክ ውሂብ"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"ተገናኝቷል"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"በጊዜያዊነት ተገናኝቷል"</string>
@@ -1457,7 +1460,7 @@
<string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"አቋራጮችን ያብጁ"</string>
<string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"አቋራጭ ይወገድ?"</string>
<string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"ወደ ነባሪ ዳግም ይጀመር?"</string>
- <string name="shortcut_customize_mode_add_shortcut_description" msgid="7636040209946696120">"ይህን አቋራጭ ለመፍጠር የእርምጃ ቁልፉን እና ላይ አንድ ወይም ከዚያ በላይ ሌሎቹ ቁልፎችን አንድ ላይ ይጫኑ"</string>
+ <string name="shortcut_customize_mode_add_shortcut_description" msgid="7636040209946696120">"ይህን አቋራጭ ለመፍጠር የእርምጃ ቁልፉን እና አንድ ወይም ከዚያ በላይ ሌሎቹ ቁልፎችን አንድ ላይ ይጫኑ"</string>
<string name="shortcut_customize_mode_remove_shortcut_description" msgid="6851287900585057128">"ይህ ብጁ አቋራጭዎን በቋሚነት ይሰርዛል።"</string>
<string name="shortcut_customize_mode_reset_shortcut_description" msgid="2081849715634358684">"ይህ ሁሉንም ብጁ አቋራጮችዎን በቋሚነት ይሰርዛል።"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"የፍለጋ አቋራጮች"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"የቅርብ ጊዜ መተግበሪያዎች አሳይ ምልክትን አጠናቅቀዋል።"</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"የቅርብ ጊዜ መተግበሪያዎችን ለማየት የመዳሰሻ ሰሌዳዎ ላይ ሦስት ጣቶችን በመጠቀም ወደላይ ያንሸራትቱ እና ይያዙ"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"መተግበሪያዎችን ይቀያይሩ"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"የመዳሰሻ ሰሌዳዎ ላይ አራት ጣቶችን በመጠቀም ወደ ቀኝ ያንሸራትቱ"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"ጥሩ ሠርተዋል!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"የመተግበሪያ ምልክቶችን ይቀይሩ የሚለወን አጠናቅቀዋል።"</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"መተግበሪያዎችን ለመቀያየር የመዳሰሻ ሰሌዳዎ ላይ አራት ጣቶችን በመጠቀም ወደ ቀኝ ያንሸራትቱ"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"ሁሉንም መተግበሪያዎች ይመልከቱ"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"በቁልፍ ሰሌዳዎ ላይ ያለውን የተግባር ቁልፍ ይጫኑ"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"ጥሩ ሠርተዋል!"</string>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 7db9a0d22ec6..31bbbb63f7ef 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -142,7 +142,7 @@
<string name="share_to_app_stop_dialog_title_generic" msgid="9079161538135843648">"هل تريد إيقاف المشاركة؟"</string>
<string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"تتم حاليًا مشاركة محتوى الشاشة بأكمله مع \"<xliff:g id="HOST_APP_NAME">%1$s</xliff:g>\""</string>
<string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"تتم حاليًا مشاركة محتوى الشاشة بأكمله مع تطبيق"</string>
- <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"تتم حاليًا مشاركة محتوى \"<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>\""</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"تتم حاليًا مشاركة شاشة تطبيق \"<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>\""</string>
<string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"تتم حاليًا مشاركة محتوى تطبيق"</string>
<string name="share_to_app_stop_dialog_message_generic" msgid="7622174291691249392">"تتم حاليًا مشاركة المحتوى مع تطبيق"</string>
<string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"إيقاف المشاركة"</string>
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"نسبة شحن البطارية غير معروفة."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"متصل بـ <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"تم الاتصال بـ <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"غير متصل."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"التجوال"</string>
<string name="cell_data_off" msgid="4886198950247099526">"غير مفعّلة"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"لفتح تطبيق باستخدام تطبيق مصغَّر، عليك إثبات هويتك. يُرجى ملاحظة أنّ أي شخص يمكنه الاطّلاع محتوى التطبيقات المصغَّرة، حتى وإن كان جهازك اللوحي مُقفلاً. بعض التطبيقات المصغّرة قد لا تكون مُصمَّمة لإضافتها إلى شاشة القفل، وقد يكون هذا الإجراء غير آمن."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"حسنًا"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"زر \"إظهار شاشة الاستراحة\""</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"التعرُّف على \"وضع الإرساء\""</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"يمكنك الاطّلاع على التطبيقات المصغّرة وشاشات الاستراحة المفضَّلة لديك أثناء شحن الجهاز."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"لنبدأ"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"تبديل المستخدم"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"القائمة المنسدلة"</string>
@@ -563,17 +566,17 @@
<string name="media_projection_sys_service_dialog_warning" msgid="2443872865267330320">"ستتمكن الخدمة التي تقدّم هذه الوظيفة من الوصول إلى كل المحتوى المعروض على شاشتك أو الذي يتم تشغيله على جهازك أثناء التسجيل أو البثّ. ويشمل ذلك معلومات، مثل كلمات المرور وتفاصيل الدفع والصور والرسائل والمقاطع الصوتية التي تشغِّلها."</string>
<string name="screen_share_generic_app_selector_title" msgid="8331515850599218288">"مشاركة محتوى تطبيق أو تسجيله"</string>
<string name="media_projection_entry_app_permission_dialog_title" msgid="4613857256721708062">"هل تريد مشاركة الشاشة مع تطبيق \"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>\"؟"</string>
- <string name="screen_share_permission_dialog_option_single_app" msgid="2974054871681567314">"مشاركة تطبيق واحد"</string>
+ <string name="screen_share_permission_dialog_option_single_app" msgid="2974054871681567314">"مشاركة شاشة تطبيق واحد"</string>
<!-- no translation found for media_projection_entry_app_permission_dialog_option_text_single_app (2308901434964846084) -->
<skip />
<string name="screen_share_permission_dialog_option_entire_screen" msgid="4493174362775038997">"مشاركة الشاشة بأكملها"</string>
<!-- no translation found for media_projection_entry_app_permission_dialog_option_text_entire_screen (5100078808078139706) -->
<skip />
<string name="media_projection_entry_app_permission_dialog_warning_entire_screen" msgid="5504288438067851086">"أثناء مشاركة محتوى الشاشة بالكامل، سيكون كل المحتوى المعروض على شاشتك مرئيًا لتطبيق \"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>\". لذا يُرجى توخي الحذر بشأن المعلومات، مثل كلمات المرور وتفاصيل الدفع والرسائل والصور وملفات الصوت والفيديو."</string>
- <string name="media_projection_entry_app_permission_dialog_warning_single_app" msgid="7094417930857938876">"أثناء مشاركة محتوى تطبيق، سيكون كل المحتوى المعروض أو الذي يتم تشغيله في ذلك التطبيق مرئيًا لتطبيق \"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>\". لذا يُرجى توخي الحذر بشأن المعلومات، مثل كلمات المرور وتفاصيل الدفع والرسائل والصور وملفات الصوت والفيديو."</string>
+ <string name="media_projection_entry_app_permission_dialog_warning_single_app" msgid="7094417930857938876">"ستتم مشاركة كل المحتوى المعروض أو المشغَّل على شاشة هذا التطبيق مع تطبيق \"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>\"، لذا يُرجى توخي الحذر بشأن المعلومات الظاهرة على الشاشة، مثل كلمات المرور وتفاصيل الدفع والرسائل والصور والمقاطع الصوتية والفيديوهات."</string>
<string name="media_projection_entry_app_permission_dialog_continue_entire_screen" msgid="1850848182344377579">"مشاركة الشاشة"</string>
<string name="media_projection_entry_app_permission_dialog_single_app_disabled" msgid="8999903044874669995">"تم إيقاف هذا الخيار من خلال تطبيق <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="media_projection_entry_share_app_selector_title" msgid="1419515119767501822">"اختيار تطبيق لمشاركة محتواه"</string>
+ <string name="media_projection_entry_share_app_selector_title" msgid="1419515119767501822">"يُرجى اختيار تطبيق لمشاركة محتواه"</string>
<string name="media_projection_entry_cast_permission_dialog_title" msgid="752756942658159416">"هل تريد بث محتوى الشاشة؟"</string>
<string name="media_projection_entry_cast_permission_dialog_option_text_single_app" msgid="6073353940838561981">"بث محتوى تطبيق واحد"</string>
<string name="media_projection_entry_cast_permission_dialog_option_text_entire_screen" msgid="8389508187954155307">"بث محتوى الشاشة بالكامل"</string>
@@ -753,8 +756,7 @@
<string name="qr_code_scanner_updating_secondary_label" msgid="8344598017007876352">"جارٍ تعديل الحالة"</string>
<string name="status_bar_work" msgid="5238641949837091056">"ملف العمل"</string>
<string name="status_bar_airplane" msgid="4848702508684541009">"وضع الطيران"</string>
- <!-- no translation found for status_bar_supervision (6735015942701134125) -->
- <skip />
+ <string name="status_bar_supervision" msgid="6735015942701134125">"أدوات رقابة الأهل"</string>
<string name="zen_alarm_warning" msgid="7844303238486849503">"لن تسمع المنبّه القادم في <xliff:g id="WHEN">%1$s</xliff:g>"</string>
<string name="alarm_template" msgid="2234991538018805736">"في <xliff:g id="WHEN">%1$s</xliff:g>"</string>
<string name="alarm_template_far" msgid="3561752195856839456">"يوم <xliff:g id="WHEN">%1$s</xliff:g>"</string>
@@ -805,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"تظهر في أعلى إشعارات المحادثات وكصورة ملف شخصي على شاشة القفل وتظهر على شكل فقاعة لمقاطعة ميزة \"عدم الإزعاج\"."</string>
<string name="notification_priority_title" msgid="2079708866333537093">"الأولوية"</string>
<string name="no_shortcut" msgid="8257177117568230126">"لا يدعم تطبيق <xliff:g id="APP_NAME">%1$s</xliff:g> ميزات المحادثات."</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"إغلاق"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"عدم الإظهار مرة أخرى"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"يتعذّر تعديل هذه الإشعارات."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"لا يمكن تعديل إشعارات المكالمات."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"يتعذّر ضبط مجموعة الإشعارات هذه هنا."</string>
@@ -919,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"‏تقويم Google"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"الآلة الحاسبة"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"‏خرائط Google"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"تفعيل ميزة \"تجاهُل النقرات المتكرّرة\" أو إيقافها"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"تفعيل ميزة \"مفاتيح الماوس\" أو إيقافها"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"تفعيل ميزة \"تثبيت المفاتيح\" أو إيقافها"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"تفعيل ميزة \"المفاتيح البطيئة\" أو إيقافها"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"‏تفعيل تطبيق Voice Access أو إيقافه"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"‏تفعيل ميزة TalkBack أو إيقافها"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"تفعيل ميزة \"التكبير\" أو إيقافها"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"تفعيل ميزة \"سماع الاختيار\""</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"عدم الإزعاج"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"اختصار أزرار مستوى الصوت"</string>
<string name="battery" msgid="769686279459897127">"البطارية"</string>
@@ -1308,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"يمكنك استخدام بصمة الإصبع للفتح"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"المصادقة مطلوبة. المس مستشعر بصمات الإصبع للمصادقة."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"مكالمة جارية"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"بيانات الجوّال"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"متصلة بالإنترنت"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"متصلة مؤقتًا"</string>
@@ -1420,7 +1422,7 @@
<string name="assistant_attention_content_description" msgid="4166330881435263596">"تم رصد تواجد المستخدم."</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"يمكنك ضبط تطبيق تدوين الملاحظات التلقائي في \"الإعدادات\"."</string>
<string name="install_app" msgid="5066668100199613936">"تثبيت التطبيق"</string>
- <string name="dismissible_keyguard_swipe" msgid="8377597870094949432">"التمرير سريعًا للأعلى للمتابعة"</string>
+ <string name="dismissible_keyguard_swipe" msgid="8377597870094949432">"مرِّر سريعًا للأعلى للمتابعة"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"هل تريد بث محتوى جهازك على الشاشة الخارجية؟"</string>
<string name="connected_display_dialog_dual_display_stop_warning" msgid="4174707498892447947">"سيتم النسخ المطابق لمحتوى الشاشة الداخلية، وإيقاف الشاشة الأمامية."</string>
<string name="mirror_display" msgid="2515262008898122928">"بث المحتوى على الشاشة"</string>
@@ -1449,8 +1451,7 @@
<string name="shortcut_helper_category_system_apps" msgid="6001757545472556810">"تطبيقات النظام"</string>
<string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"تعدُّد المهام"</string>
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"تقسيم الشاشة"</string>
- <!-- no translation found for shortcutHelper_category_accessibility (8068337792277570938) -->
- <skip />
+ <string name="shortcutHelper_category_accessibility" msgid="8068337792277570938">"خدمات تسهيل الاستخدام"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"الإدخال"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"اختصارات التطبيقات"</string>
<string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"التطبيق الحالي"</string>
@@ -1514,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"لقد أكملْت التدريب على إيماءة عرض التطبيقات المستخدَمة مؤخرًا."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"لعرض التطبيقات المستخدَمة مؤخرًا، يُرجى التمرير سريعًا للأعلى مع الاستمرار باستخدام ثلاثة أصابع على لوحة اللمس"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"التبديل بين التطبيقات"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"يُرجى التمرير سريعًا لليمين باستخدام أربعة أصابع على لوحة اللمس"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"أحسنت صنعًا."</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"أكملت التدريب على إيماءة التبديل بين التطبيقات."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"يُرجى التمرير سريعًا لليمين باستخدام أربعة أصابع على لوحة اللمس للتبديل بين التطبيقات"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"عرض جميع التطبيقات"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"اضغط على مفتاح الإجراء في لوحة المفاتيح"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"أحسنت!"</string>
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index 297b41059ebc..7d7e4f759bb7 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"বেটাৰীৰ চাৰ্জৰ শতাংশ অজ্ঞাত।"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>ৰ লগত সংযোগ কৰা হ’ল।"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g>ত সংযোগ হ’ল।"</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"গোট বিস্তাৰ কৰক।"</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"এপ্লিকেশ্বনটো খোলক।"</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"সংযোগ হৈ থকা নাই।"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"ৰ\'মিং"</string>
<string name="cell_data_off" msgid="4886198950247099526">"অফ অৱস্থাত আছে"</string>
@@ -536,12 +538,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"এটা ৱিজেট ব্যৱহাৰ কৰি কোনো এপ্ খুলিবলৈ, এয়া আপুনিয়েই বুলি সত্যাপন পৰীক্ষা কৰিব লাগিব। লগতে, মনত ৰাখিব যে যিকোনো লোকেই সেইবোৰ চাব পাৰে, আনকি আপোনাৰ টেবলেটটো লক হৈ থাকিলেও। কিছুমান ৱিজেট হয়তো আপোনাৰ লক স্ক্ৰীনৰ বাবে কৰা হোৱা নাই আৰু ইয়াত যোগ কৰাটো অসুৰক্ষিত হ’ব পাৰে।"</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"বুজি পালোঁ"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"স্ক্ৰীনছেভাৰৰ বুটাম দেখুৱাওক"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
- <skip />
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"হাব ম’ড অন্বেষণ কৰক"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"চাৰ্জ কৰি থাকোঁতে আপোনাৰ প্ৰিয় ৱিজেট আৰু স্ক্ৰীন ছেভাৰসমূহ এক্সেছ কৰক।"</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"আৰম্ভ কৰোঁ আহক"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"চাৰ্জ কৰাৰ সময়ত আপোনাৰ প্ৰিয় স্ক্ৰীনছেভাৰ দেখুৱাওক"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ব্যৱহাৰকাৰী সলনি কৰক"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"পুল-ডাউনৰ মেনু"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"এই ছেশ্বনৰ আটাইবোৰ এপ্ আৰু ডেটা মচা হ\'ব।"</string>
@@ -804,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"বাৰ্তালাপৰ জাননীৰ শীৰ্ষত আৰু প্ৰ’ফাইল চিত্ৰ হিচাপে লক স্ক্ৰীনত দেখুৱায়, এটা বাবল হিচাপে দেখা পোৱা যায়, অসুবিধা নিদিব ম’ডত ব্যাঘাত জন্মায়"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"অগ্ৰাধিকাৰ"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>এ বাৰ্তালাপৰ সুবিধাসমূহ সমৰ্থন নকৰে"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"অগ্ৰাহ্য কৰক"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"পুনৰাই নেদেখুৱাব"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"এই জাননীসমূহ সংশোধন কৰিব নোৱাৰি।"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"কলৰ জাননীসমূহ সংশোধন কৰিব নোৱাৰি।"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"এই ধৰণৰ জাননীবোৰ ইয়াত কনফিগাৰ কৰিব পৰা নাযায়"</string>
@@ -918,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"কেলকুলেটৰ"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"মেপ"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"বাউন্স কী ট’গল কৰক"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"মাউছ কীসমূহ ট’গল কৰক"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"ষ্টিকী কীসমূহ ট’গল কৰক"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"ধীৰ গতিৰ কী ট’গল কৰক"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Voice Access ট’গল কৰক"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"TalkBack ট’গল কৰক"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"বিবৰ্ধন ট’গল কৰক"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"কথা ক’বলৈ বাছনি কৰাৰ সুবিধা সক্ৰিয় কৰক"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"অসুবিধা নিদিব"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"ভলিউম বুটামসমূহৰ শ্বৰ্টকাট"</string>
<string name="battery" msgid="769686279459897127">"বেটাৰী"</string>
@@ -1307,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"খুলিবলৈ ফিংগাৰপ্ৰিণ্ট ব্যৱহাৰ কৰক"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"বিশ্বাসযোগ্যতা প্ৰমাণীকৰণৰ আৱশ্যক। বিশ্বাসযোগ্যতা প্ৰমাণীকৰণ কৰিবলৈ ফিংগাৰপ্ৰিণ্ট ছেন্সৰটো স্পৰ্শ কৰক।"</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"চলি থকা কল"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"চলিত"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"ম’বাইল ডেটা"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"সংযোজিত হৈ আছে"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"অস্থায়ীভাৱে সংযোগ কৰা হৈছে"</string>
@@ -1512,12 +1511,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"আপুনি শেহতীয়া এপ্ চোৱাৰ নিৰ্দেশনাটো সম্পূৰ্ণ কৰিছে।"</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"শেহতীয়া এপ্‌সমূহ চাবলৈ, আপোনাৰ টাচ্চপেডত তিনিটা আঙুলি ব্যৱহাৰ কৰি ওপৰলৈ ছোৱাইপ কৰি ধৰি ৰাখক"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"এপ্‌সমূহ সলনি কৰক"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"আপোনাৰ টাচ্চপেডত চাৰিটা আঙুলি ব্যৱহাৰ কৰি সোঁফাললৈ ছোৱাইপ কৰক"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"বঢ়িয়া!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"আপুনি এপ্‌ সলনি কৰাৰ নিৰ্দেশটো সম্পূৰ্ণ কৰিলে।"</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"এপ্‌সমূহ সালসলনিকৈ ব্যৱহাৰ কৰিবলৈ আপোনাৰ টাচ্চপেডত চাৰিটা আঙুলি ব্যৱহাৰ কৰি সোঁফাললৈ ছোৱাইপ কৰক"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"আটাইবোৰ এপ্ চাওক"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"আপোনাৰ কীব’ৰ্ডৰ কাৰ্য কীটোত টিপক"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"বঢ়িয়া!"</string>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index fb13ac4a3c64..2551d9cfafa0 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Batareyanın faizi naməlumdur."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> üzərindən qoşuldu."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> cihazına qoşulub."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Qoşulu deyil."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Rouminq"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Deaktiv"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Vidcetdən istifadə edərək tətbiqi açmaq üçün kimliyi doğrulamalısınız. Planşet kilidli olsa da, hər kəs vidcetlərə baxa bilər. Bəzi vidcetlər kilid ekranı üçün nəzərdə tutulmayıb və bura əlavə etmək təhlükəli ola bilər."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Anladım"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Ekran qoruyucu düyməsini göstərin"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Hab rejimini araşdırın"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Şarj edərkən sevimli vidcet və ekran qoruyucularınıza daxil olun."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Başlayaq"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"aşağı çəkilən menyu"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Söhbət bildirişlərinin yuxarısında və kilid ekranında profil şəkli kimi göstərilir, baloncuq kimi görünür, Narahat Etməyin rejimini kəsir"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioritet"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> söhbət funksiyalarını dəstəkləmir"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Rədd edin"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Yenidən göstərməyin"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Bu bildirişlər dəyişdirilə bilməz."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Zəng bildirişləri dəyişdirilə bilməz."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Bu bildiriş qrupunu burada konfiqurasiya etmək olmaz"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Təqvim"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Kalkulyator"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Xəritə"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Sıçrayan klavişləri aktiv/deaktiv edin"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Maus klavişlərini aktiv/deaktiv edin"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Əvəzedici düymələri aktiv/deaktiv edin"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Asta düymələri aktiv/deaktiv edin"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Səs girişini aktiv/deaktiv edin"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Talkback-i aktiv/deaktiv edin"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Böyütməni aktiv/deaktiv edin"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Basıb dinləyin funksiyasını aktivləşdirin"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Narahat Etməyin"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Səs düymələri qısayolu"</string>
<string name="battery" msgid="769686279459897127">"Batareya"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Açmaq üçün barmaq izindən istifadə edin"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Doğrulanma tələb olunur. Doğrulamaq üçün barmaq izi sensoruna toxunun."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Davam edən zəng"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobil data"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Qoşulub"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Müvəqqəti qoşulub"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Son tətbiqlərə baxmaq jestini tamamladınız."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Ən son tətbiqlərə baxmaq üçün taçpeddə üç barmağınızla yuxarı çəkin və saxlayın"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Başqa tətbiqə keçin"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Taçpeddə dörd barmaqla sağa çəkin"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Əla!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Tətbiqlərarası keçid jestini tamamladınız."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Tətbiqlər arasında keçid etmək üçün taçpeddə dörd barmaqla sağa çəkin"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Bütün tətbiqlərə baxın"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Klaviaturada fəaliyyət açarına basın"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Əla!"</string>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index be65e9e108c8..b01d83736dc0 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Procenat napunjenosti baterije nije poznat."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Povezani ste sa <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Povezani smo sa uređajem <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Proširite grupu."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Otvorite aplikaciju."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Nije povezano."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Isključeno"</string>
@@ -539,6 +541,7 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Istražite režim centra"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Pristupajte omiljenim vidžetima i čuvarima ekrana tokom punjenja."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Idemo"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Prikazujte omiljene čuvare ekrana tokom punjenja"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Zameni korisnika"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"padajući meni"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Sve aplikacije i podaci u ovoj sesiji će biti izbrisani."</string>
@@ -801,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Prikazuje se u vrhu obaveštenja o konverzacijama i kao slika profila na zaključanom ekranu, pojavljuje se kao oblačić, prekida režim Ne uznemiravaj"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioritetno"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ne podržava funkcije konverzacije"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Odbaci"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ne prikazuj ponovo"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ova obaveštenja ne mogu da se menjaju."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Obaveštenja o pozivima ne mogu da se menjaju."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ova grupa obaveštenja ne može da se konfiguriše ovde"</string>
@@ -915,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Kalendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Kalkulator"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Mape"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Uključi ili isključi duži odziv tastera"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Uključi ili isključi tastere miša"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Uključi ili isključi lepljive tastere"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Uključi ili isključi spore tastere"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Uključi ili isključi Pristup glasom"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Uključi ili isključi Talkback"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Uključi ili isključi Uvećanje"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Aktiviraj Izaberite za govor"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Ne uznemiravaj"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Prečica za dugmad za jačinu zvuka"</string>
<string name="battery" msgid="769686279459897127">"Baterija"</string>
@@ -1304,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Otvorite pomoću otiska prsta"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Potrebna je potvrda identiteta. Dodirnite senzor za otisak prsta da biste potvrdili identitet."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Poziv je u toku"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"Aktivno"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobilni podaci"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Povezano"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Privremeno povezano"</string>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index ae73144ed21c..8f1af5f6e944 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Працэнт зараду акумулятара невядомы."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Падлучаны да <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Ёсць падключэнне да <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Разгарнуць групу."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Адкрыць праграму."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Няма падключэння."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Роўмінг"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Выключана"</string>
@@ -536,12 +538,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Каб адкрыць праграму з дапамогай віджэта, вам неабходна будзе пацвердзіць сваю асобу. Таксама памятайце, што такія віджэты могуць пабачыць іншыя людзі, нават калі экран планшэта заблакіраваны. Некаторыя віджэты могуць не падыходзіць для выкарыстання на экране блакіроўкі, і дадаваць іх сюды можа быць небяспечна."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Зразумела"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Кнопка \"Паказаць застаўку\""</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
- <skip />
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Паспрабуйце рэжым хаба"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Доступ да любімых віджэтаў і заставак падчас зарадкі."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Пачаць"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Паказваць падчас зарадкі любімую застаўку"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Перайсці да іншага карыстальніка"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"высоўнае меню"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Усе праграмы і даныя гэтага сеанса будуць выдалены."</string>
@@ -804,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"З’яўляецца ўверсе раздзела размоў як усплывальнае апавяшчэнне, якое перарывае рэжым \"Не турбаваць\" і паказвае на экране блакіроўкі відарыс профілю"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Прыярытэт"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не падтрымлівае функцыі размовы"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Закрыць"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Больш не паказваць"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Гэтыя апавяшчэнні нельга змяніць."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Апавяшчэнні пра выклікі нельга змяніць."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Тут канфігурыраваць гэту групу апавяшчэнняў забаронена"</string>
@@ -918,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Каляндар"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Калькулятар"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Карты"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Уключыць/выключыць ігнараванне паўторнага націскання"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Уключыць/выключыць клавішы кіравання мышшу"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Уключыць/выключыць заліпанне клавіш"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Уключыць/выключыць запавольванне рэакцыі на націсканне"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Уключыць/выключыць Галасавы доступ"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Уключыць/выключыць TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Уключыць/выключыць павелічэнне"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Актываваць функцыю \"Чытаць уголас\""</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Не турбаваць"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Доступ праз кнопкі рэгулявання гучнасці"</string>
<string name="battery" msgid="769686279459897127">"Акумулятар"</string>
@@ -1307,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Каб адкрыць, скарыстайце адбітак пальца"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Патрабуецца аўтэнтыфікацыя. Дакраніцеся да сканера адбіткаў пальцаў."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Актыўны выклік"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"Бягучае дзеянне"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Мабільная перадача даных"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Падключана"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Падключана часова"</string>
@@ -1448,8 +1447,7 @@
<string name="shortcut_helper_category_system_apps" msgid="6001757545472556810">"Сістэмныя праграмы"</string>
<string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Шматзадачнасць"</string>
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Падзелены экран"</string>
- <!-- no translation found for shortcutHelper_category_accessibility (8068337792277570938) -->
- <skip />
+ <string name="shortcutHelper_category_accessibility" msgid="8068337792277570938">"Спецыяльныя магчымасці"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Увод"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Ярлыкі праграм"</string>
<string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Бягучая праграма"</string>
@@ -1513,12 +1511,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Вы скончылі вывучэнне жэсту для прагляду нядаўніх праграм."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Каб праглядзець нядаўнія праграмы, правядзіце трыма пальцамі ўверх па сэнсарным экране і затрымайце пальцы"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Пераключэнне праграм"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Правядзіце па сэнсарнай панэлі чатырма пальцамі ўправа"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Выдатная праца!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Вы навучыліся рабіць жэст пераключэння праграм."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Каб пераключыцца паміж праграмамі, правядзіце па сэнсарнай панэлі чатырма пальцамі ўправа"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Глядзець усе праграмы"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Націсніце клавішу дзеяння на клавіятуры"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Выдатна!"</string>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index db253db73138..353815293907 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Процентът на батерията е неизвестен."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Има връзка с <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Установена е връзка с/ъс <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Няма връзка."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Роуминг"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Изключени"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"За да отворите дадено приложение посредством приспособление, ще трябва да потвърдите, че това сте вие. Също така имайте предвид, че всеки ще вижда приспособленията дори когато таблетът ви е заключен. Възможно е някои от тях да не са предназначени за заключения екран и добавянето им на него може да е опасно."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Разбрах"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Бутон за показване на скрийнсейвъра"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Разглеждане на режима „Контролен център“"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Използвайте любимите си приспособления и скрийнсейвъри по време на зареждане."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Начало"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Превключване между потребителите"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"падащо меню"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Показва се в горната част на известията за разговори и като снимка на потребителския профил на заключения екран, изглежда като балонче, прекъсва режима „Не безпокойте“"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Приоритет"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не поддържа функциите за разговор"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Отхвърляне"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Да не се показва отново"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Тези известия не могат да бъдат променяни."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Известията за обаждания не могат да бъдат променяни."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Тази група от известия не може да бъде конфигурирана тук"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Календар"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Калкулатор"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Карти"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Превключване на функцията за игнориране на многократното натискане"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Превключване на функцията за клавиши за мишката"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Превключване на функцията за фиксирани клавиши"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Превключване на функцията за забавяне на сигнала от клавишите"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Превключване на Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Превключване на TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Превключване на функцията за увеличение"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Активиране на „Прочитане на глас“"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Не безпокойте"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Пряк път към бутоните за силата на звука"</string>
<string name="battery" msgid="769686279459897127">"Батерия"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Използвайте отпечатък за отваряне"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Изисква се удостоверяване на самоличността. За целта докоснете сензора за отпечатъци."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Текущо обаждане"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Мобилни данни"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Свързано"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Установена е временна връзка"</string>
@@ -1450,16 +1453,16 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Разделен екран"</string>
<string name="shortcutHelper_category_accessibility" msgid="8068337792277570938">"Достъпност"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Въвеждане"</string>
- <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Преки пътища към приложения"</string>
+ <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Клавишни комбинации за приложения"</string>
<string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Текущо приложение"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Достъпност"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Клавишни комбинации"</string>
- <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Персонализиране на преките пътища"</string>
+ <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Персонализиране на клавишните комбинации"</string>
<string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Да се премахне ли клавишната комбинация?"</string>
<string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Да се възстановят ли стандартните настройки?"</string>
<string name="shortcut_customize_mode_add_shortcut_description" msgid="7636040209946696120">"За да създадете тази клавишна комбинация, натиснете клавиша за действия заедно с един или повече други клавиши"</string>
<string name="shortcut_customize_mode_remove_shortcut_description" msgid="6851287900585057128">"Това ще изтрие персонализираната клавишна комбинация за постоянно."</string>
- <string name="shortcut_customize_mode_reset_shortcut_description" msgid="2081849715634358684">"Това ще изтрие всичките ви персонализирани преки пътища за постоянно."</string>
+ <string name="shortcut_customize_mode_reset_shortcut_description" msgid="2081849715634358684">"Това ще изтрие всичките ви персонализирани клавишни комбинации за постоянно."</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Търсете клавишни комбинации"</string>
<string name="shortcut_helper_no_search_results" msgid="8554756497996692160">"Няма резултати от търсенето"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Икона за свиване"</string>
@@ -1474,7 +1477,7 @@
<string name="shortcut_helper_key_combinations_forward_slash" msgid="1238652537199346970">"наклонена черта"</string>
<string name="shortcut_helper_content_description_drag_handle" msgid="5092426406009848110">"Манипулатор за преместване с плъзгане"</string>
<string name="shortcut_helper_keyboard_settings_buttons_label" msgid="6720967595915985259">"Настройки на клавиатурата"</string>
- <string name="shortcut_helper_customize_dialog_set_shortcut_button_label" msgid="4754492225010429382">"Задаване на клавишна комбинация"</string>
+ <string name="shortcut_helper_customize_dialog_set_shortcut_button_label" msgid="4754492225010429382">"Клавишна комбинация"</string>
<string name="shortcut_helper_customize_dialog_remove_button_label" msgid="6546386970440176552">"Премахване"</string>
<string name="shortcut_helper_customize_dialog_reset_button_label" msgid="7645535254306312685">"Да, нулиране"</string>
<string name="shortcut_helper_customize_dialog_cancel_button_label" msgid="5595546460431741178">"Отказ"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Изпълнихте жеста за преглед на скорошните приложения."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"За да прегледате скорошните приложения, плъзнете три пръста нагоре по сензорния панел и задръжте"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Превключване на приложенията"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Прекарайте четири пръста надясно по сензорния панел"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Отлично!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Изпълнихте жеста за превключване между приложения."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Прекарайте четири пръста надясно по сензорния панел, за да превключите приложенията"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Преглед на всички приложения"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Натиснете клавиша за действия на клавиатурата си"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Браво!"</string>
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index 5e9860d4aa55..4d885942e779 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"ব্যাটারি কত শতাংশ আছে তা জানা যায়নি।"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>এ সংযুক্ত হয়ে আছে।"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> এর সাথে সংযুক্ত৷"</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"সংযুক্ত নয়৷"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"রোমিং"</string>
<string name="cell_data_off" msgid="4886198950247099526">"বন্ধ"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"উইজেট ব্যবহার করে কোনও অ্যাপ খুলতে, আপনাকে নিজের পরিচয় যাচাই করতে হবে। এছাড়াও, মনে রাখবেন, আপনার ট্যাবলেট লক থাকলেও যেকেউ তা দেখতে পারবেন। কিছু উইজেট আপনার লক স্ক্রিনের উদ্দেশ্যে তৈরি করা হয়নি এবং এখানে যোগ করা নিরাপদ নাও হতে পারে।"</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"বুঝেছি"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"স্ক্রিন সেভার বোতাম দেখুন"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"হাব মোড ঘুরে দেখুন"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"চার্জ করার সময় আপনার পছন্দের উইজেট এবং স্ক্রিন সেভার অ্যাক্সেস করুন।"</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"শুরু করা যাক"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ব্যবহারকারী পাল্টে দিন"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"পুলডাউন মেনু"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"কথোপকথনের বিজ্ঞপ্তির উপরের দিকে এবং প্রোফাইল ছবি হিসেবে লক স্ক্রিনে দেখানো হয়, বাবল হিসেবেও এটি দেখা যায় এবং এর ফলে \'বিরক্ত করবে না\' মোডে কাজ করতে অসুবিধা হয়"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"অগ্রাধিকার"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>-এ কথোপকথন ফিচার কাজ করে না"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"বাতিল করুন"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"আর দেখতে চাই না"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"এই বিজ্ঞপ্তিগুলি পরিবর্তন করা যাবে না।"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"কল বিজ্ঞপ্তি পরিবর্তন করা যাবে না।"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"এই সমস্ত বিজ্ঞপ্তিকে এখানে কনফিগার করা যাবে না"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"ক্যালকুলেটর"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"ম্যাপ"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"বাউন্স \'কী\' টগল করুন"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"মাউস \'কী\' টগল করুন"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"স্টিকি \'কী\' টগল করুন"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"স্লো \'কী\' টগল করুন"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Voice Access টগল করুন"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"\'টকব্যাক\' ফিচার টগল করুন"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"\'বড় করে দেখা\' ফিচার টগল করুন"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"\'বাছুন ও শুনুন\' ফিচার চালু করুন"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"বিরক্ত করবে না"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"ভলিউম বোতামের শর্টকাট"</string>
<string name="battery" msgid="769686279459897127">"ব্যাটারি"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"খুলতে ফিঙ্গারপ্রিন্ট ব্যবহার করুন"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"যাচাইকরণ করতে হবে। যাচাইকরণ করতে আঙুলের ছাপের সেন্সরে টাচ করুন।"</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"চালু থাকা কল"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"মোবাইল ডেটা"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"কানেক্ট করা আছে"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"সাময়িকভাবে কানেক্ট করা হয়েছে"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"সম্প্রতি ব্যবহার করা হয়েছে এমন অ্যাপের জেসচার দেখা সম্পূর্ণ করেছেন।"</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"সাম্প্রতিক অ্যাপ দেখতে, নিজের টাচপ্যাডে তিনটি আঙুল ব্যবহার করে উপরের দিকে সোয়াইপ করে হোল্ড করুন"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"অ্যাপ পরিবর্তন করুন"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"আপনার টাচপ্যাডে চারটি আঙুল ব্যবহার করে ডানদিকে সোয়াইপ করুন"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"অসাধারণ!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"আপনি অ্যাপ পরিবর্তন করার জেসচার সম্পূর্ণ করেছেন।"</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"অ্যাপ পরিবর্তন করতে, আপনার টাচপ্যাডে চারটি আঙুল ব্যবহার করে ডানদিকে সোয়াইপ করুন"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"সব অ্যাপ দেখুন"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"আপনার কীবোর্ডে অ্যাকশন কী প্রেস করুন"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"দারুণ!"</string>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index 1b79810e67b4..9e86aa96bab5 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Postotak napunjenosti baterije nije poznat"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Povezan na <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Povezan na <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Proširite grupu."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Otvorite aplikaciju."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Nije povezano."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Isključeno"</string>
@@ -536,9 +538,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Da otvorite aplikaciju pomoću vidžeta, morat ćete potvrditi identitet. Također imajte na umu da ih svako može pregledati, čak i ako je tablet zaključan. Neki vidžeti možda nisu namijenjeni za vaš zaključani ekran i njihovo dodavanje ovdje možda nije sigurno."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Razumijem"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Dugme za prikaz čuvara ekrana"</string>
- <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Istraži način Huba"</string>
- <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Pristupite omiljenim widgetima i čuvarima zaslona tijekom punjenja."</string>
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Istražite način rada središta"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Pristupajte svojim omiljenim vidžetima i čuvarima ekrana tokom punjenja."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Započnimo"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Prikaz vaših omiljenih čuvara zaslona tijekom punjenja"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Zamijeni korisnika"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"padajući meni"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Sve aplikacije i podaci iz ove sesije će se izbrisati."</string>
@@ -801,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Prikazuje se na vrhu obavještenja u razgovorima i kao slika profila na zaključanom ekranu, izgleda kao oblačić, prekida funkciju Ne ometaj"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioritetno"</string>
<string name="no_shortcut" msgid="8257177117568230126">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> ne podržava funkcije razgovora"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Odbaci"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ne prikazuj ponovo"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ta obavještenja se ne mogu izmijeniti."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Nije moguće izmijeniti obavještenja o pozivima."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ovu grupu obavještenja nije moguće konfigurirati ovdje"</string>
@@ -876,7 +879,7 @@
<string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Prikazivanje prečica koje otvaraju aplikacije"</string>
<string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Prikazivanje prečica za trenutnu aplikaciju"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Prikaz obavještenja"</string>
- <string name="group_system_full_screenshot" msgid="5742204844232667785">"Pravljenje snimka ekrana"</string>
+ <string name="group_system_full_screenshot" msgid="5742204844232667785">"Izrada snimka ekrana"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Prikaz prečica"</string>
<string name="group_system_go_back" msgid="2730322046244918816">"Nazad"</string>
<string name="group_system_access_home_screen" msgid="4130366993484706483">"Odlazak na početni ekran"</string>
@@ -915,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Kalendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Kalkulator"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Mape"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Uključivanje/isključivanje zanemarivanja slučajnih pritisaka tipki"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Uključivanje/isključivanje tipki za miš"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Uključivanje/isključivanje ljepljivih tipki"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Uključivanje/isključivanje sporog reagiranja tipki"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Uključivanje/isključivanje Pristupa glasom"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Uključivanje/isključivanje Talkbacka"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Uključivanje/isključivanje uvećavanja"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Aktiviranje funkcije Odaberite za govor"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Ne ometaj"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Prečica za dugmad za Jačinu zvuka"</string>
<string name="battery" msgid="769686279459897127">"Baterija"</string>
@@ -1304,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Otvorite pomoću otiska prsta"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Potrebna je autentifikacija. Dodirnite senzor za otisak prsta da autentificirate."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Poziv u toku"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"U tijeku"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Prijenos podataka na mobilnoj mreži"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Povezano"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Privremeno povezano"</string>
@@ -1509,10 +1511,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Izvršili ste pokret za prikaz nedavnih aplikacija."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Da pogledate nedavne aplikacije, prevucite nagore i zadržite s tri prsta na dodirnoj podlozi"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Promijenite aplikaciju"</string>
- <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Prijeđite udesno četirima prstima na dodirnoj podlozi"</string>
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Prevucite udesno s četiri prsta na dodirnoj podlozi"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Sjajno!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Izvršili ste pokret za promjenu aplikacije."</string>
- <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Prijeđite udesno četirima prstima na dodirnoj podlozi za prebacivanje između aplikacija"</string>
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Prevucite udesno s četiri prsta na dodirnoj podlozi da promijenite aplikaciju"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Pogledajte sve aplikacije"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Pritisnite tipku radnji na tastaturi"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Odlično!"</string>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index eae1b34f938c..25b236de53a0 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Es desconeix el percentatge de bateria."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"S\'ha connectat a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Està connectat amb <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Sense connexió."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Itinerància"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Desactivades"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Per obrir una aplicació utilitzant un widget, necessitaràs verificar la teva identitat. També has de tenir en compte que qualsevol persona pot veure els widgets, fins i tot quan la tauleta està bloquejada. És possible que alguns widgets no estiguin pensats per a la pantalla de bloqueig i que no sigui segur afegir-los-hi."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Entesos"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Botó Mostra l\'estalvi de pantalla"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Explora el mode Hub"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Accedeix als teus widgets i estalvis de pantalla preferits mentre es carrega."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Som-hi"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Canvia d\'usuari"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menú desplegable"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Es mostra a la part superior de les notificacions de les converses i com a foto de perfil a la pantalla de bloqueig, apareix com una bombolla, interromp el mode No molestis"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioritat"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> no admet les funcions de converses"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Ignora"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"No ho tornis a mostrar"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Aquestes notificacions no es poden modificar."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Les notificacions de trucades no es poden modificar."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Aquest grup de notificacions no es pot configurar aquí"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Calculadora"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Commuta les tecles de rebot"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Commuta les tecles del ratolí"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Commuta les tecles permanents"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Commuta les tecles lentes"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Commuta Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Commuta TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Commuta l\'ampliació"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Activa Escolta la selecció"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"No molestis"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Drecera per als botons de volum"</string>
<string name="battery" msgid="769686279459897127">"Bateria"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Utilitza l\'empremta digital per obrir"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Autenticació necessària. Toca el sensor d\'empremtes digitals per autenticar-te."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Trucada en curs"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Dades mòbils"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Connectat"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Connexió temporal"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Has completat el gest per veure les aplicacions recents."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Per veure les aplicacions recents, llisca cap amunt amb tres dits i mantén-los premuts al ratolí tàctil"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Canviar d\'aplicació"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Llisca cap a la dreta amb quatre dits al ratolí tàctil"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Ben fet!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Has completat el gest per canviar d\'aplicació."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Llisca cap a la dreta amb quatre dits al ratolí tàctil per canviar d\'aplicació"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Mostra totes les aplicacions"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Prem la tecla d\'acció al teclat"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Enhorabona!"</string>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 9422804b427b..26105c70ba2e 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Procento baterie není známé."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Připojeno k zařízení <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Jste připojeni k zařízení <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Nepřipojeno."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Vypnuto"</string>
@@ -539,6 +543,8 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Prozkoumejte Režim centra"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Mějte po ruce oblíbené widgety a spořiče obrazovky při nabíjení."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Jdeme na to"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Přepnout uživatele"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rozbalovací nabídka"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Veškeré aplikace a data v této relaci budou vymazána."</string>
@@ -750,8 +756,7 @@
<string name="qr_code_scanner_updating_secondary_label" msgid="8344598017007876352">"Probíhá aktualizace"</string>
<string name="status_bar_work" msgid="5238641949837091056">"Pracovní profil"</string>
<string name="status_bar_airplane" msgid="4848702508684541009">"Režim Letadlo"</string>
- <!-- no translation found for status_bar_supervision (6735015942701134125) -->
- <skip />
+ <string name="status_bar_supervision" msgid="6735015942701134125">"Rodičovská kontrola"</string>
<string name="zen_alarm_warning" msgid="7844303238486849503">"Svůj další budík <xliff:g id="WHEN">%1$s</xliff:g> neuslyšíte"</string>
<string name="alarm_template" msgid="2234991538018805736">"v <xliff:g id="WHEN">%1$s</xliff:g>"</string>
<string name="alarm_template_far" msgid="3561752195856839456">"<xliff:g id="WHEN">%1$s</xliff:g>"</string>
@@ -802,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Zobrazuje se v horní části sekce konverzací a na obrazovce uzamčení se objevuje jako profilová fotka, má podobu bubliny a deaktivuje režim Nerušit"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioritní"</string>
<string name="no_shortcut" msgid="8257177117568230126">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> funkce konverzace nepodporuje"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Zavřít"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Už nezobrazovat"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Tato oznámení nelze upravit."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Upozornění na hovor nelze upravit."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Tuto skupinu oznámení tady nelze nakonfigurovat"</string>
@@ -916,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Kalendář"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Kalkulačka"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Mapy"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Přepnout opakovaná stisknutí"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Přepnout klávesy myši"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Přepnout funkci Jedním prstem"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Přepnout zpomalení kláves"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Přepnout ovládání hlasem"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Přepnout TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Přepnout přiblížení"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Aktivovat poslech vybraného textu"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Nerušit"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Zkratka tlačítek hlasitosti"</string>
<string name="battery" msgid="769686279459897127">"Baterie"</string>
@@ -1305,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"K otevření použijte otisk prstu"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Je vyžadováno ověření. Dotkněte se snímače otisků prstů."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Probíhající hovor"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobilní data"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Připojeno"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Dočasně připojeno"</string>
@@ -1446,8 +1451,7 @@
<string name="shortcut_helper_category_system_apps" msgid="6001757545472556810">"Systémové aplikace"</string>
<string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitasking"</string>
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Rozdělená obrazovka"</string>
- <!-- no translation found for shortcutHelper_category_accessibility (8068337792277570938) -->
- <skip />
+ <string name="shortcutHelper_category_accessibility" msgid="8068337792277570938">"Přístupnost"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Vstup"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Zkratky aplikací"</string>
<string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Aktuální aplikace"</string>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index cb70b9a9dd67..2fe576f53f54 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Batteriniveauet er ukendt."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Forbundet med <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Forbundet til <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Udvid gruppe."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Åbn app."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Ikke tilsluttet."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Fra"</string>
@@ -536,12 +538,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Hvis du vil åbne en app ved hjælp af en widget, skal du verificere din identitet. Husk også, at alle kan se dem, også når din tablet er låst. Nogle widgets er muligvis ikke beregnet til låseskærmen, og det kan være usikkert at tilføje dem her."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Knappen Vis pauseskærm"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
- <skip />
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Udforsk i Hub-tilstand"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Få adgang til dine foretrukne widgets og pauseskærme under opladning."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Kom i gang"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Vis dine foretrukne pauseskærme under opladning"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Skift bruger"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rullemenu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Alle apps og data i denne session slettes."</string>
@@ -804,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Vises øverst i samtalenotifikationer og som et profilbillede på låseskærmen. Vises som en boble, der afbryder Forstyr ikke"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioritet"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> understøtter ikke samtalefunktioner"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Luk"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Vis ikke igen"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Disse notifikationer kan ikke redigeres."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Opkaldsnotifikationer kan ikke redigeres."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Du kan ikke konfigurere denne gruppe notifikationer her"</string>
@@ -918,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Kalender"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Lomme­regner"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Slå elastiktaster til/fra"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Slå musetaster til/fra"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Slå træge taster til/fra"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Slå langsomtaster til/fra"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Slå Stemmeadgang til/fra"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Slå TalkBack til/fra"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Slå forstørrelse til/fra"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Aktivér Tekstoplæsning"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Forstyr ikke"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Genvej til lydstyrkeknapper"</string>
<string name="battery" msgid="769686279459897127">"Batteri"</string>
@@ -1307,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Brug fingeraftryk for at åbne"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Godkendelse er påkrævet. Sæt fingeren på fingeraftrykssensoren for at godkende."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Igangværende opkald"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"I gang"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobildata"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Forbundet"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Midlertidigt forbundet"</string>
@@ -1512,12 +1511,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Du har udført bevægelsen for at se de seneste apps."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Du kan se nyligt brugte apps ved at stryge opad og holde tre fingre nede på touchpladen"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Skift mellem apps"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Stryg til højre med fire fingre på touchpladen"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Godt klaret!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Du har fuldført bevægelsen for at skifte mellem apps."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Stryg til højre med fire fingre på touchpladen for at skifte mellem apps"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Se alle apps"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Tryk på handlingstasten på dit tastatur"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Flot klaret!"</string>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 09c7067c301d..68f3a4101128 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Akkustand unbekannt."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Mit <xliff:g id="BLUETOOTH">%s</xliff:g> verbunden"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Verbunden mit <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Nicht verbunden"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Aus"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Wenn du eine App mit einem Widget öffnen möchtest, musst du deine Identität bestätigen. Beachte auch, dass jeder die Widgets sehen kann, auch wenn dein Tablet gesperrt ist. Einige Widgets sind möglicherweise nicht für den Sperrbildschirm vorgesehen, sodass es unsicher sein kann, sie hier hinzuzufügen."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Ok"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Schaltfläche „Bildschirmschoner anzeigen“"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Hub-Modus entdecken"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Du kannst während des Ladevorgangs auf deine bevorzugten Widgets und Bildschirmschoner zugreifen."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Los gehts"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Nutzer wechseln"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"Pull-down-Menü"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Wird oben im Bereich „Unterhaltungen“ sowie als Profilbild auf dem Sperrbildschirm angezeigt, erscheint als Bubble, unterbricht „Bitte nicht stören“"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Priorität"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> unterstützt keine Funktionen für Unterhaltungen"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Schließen"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Nicht mehr anzeigen"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Diese Benachrichtigungen können nicht geändert werden."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Anrufbenachrichtigungen können nicht geändert werden."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Die Benachrichtigungsgruppe kann hier nicht konfiguriert werden"</string>
@@ -878,7 +881,7 @@
<string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Tastenkombinationen für die Eingabe werden angezeigt"</string>
<string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Tastenkombinationen zum Öffnen von Apps werden angezeigt"</string>
<string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Tastenkombinationen für die aktuelle App werden angezeigt"</string>
- <string name="group_system_access_notification_shade" msgid="1619028907006553677">"Benachrichti­gun­gen ansehen"</string>
+ <string name="group_system_access_notification_shade" msgid="1619028907006553677">"Benach­richti­­gun­gen ansehen"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Screenshot erstellen"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Tasten­kürzel anzeigen"</string>
<string name="group_system_go_back" msgid="2730322046244918816">"Zurück"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Kalender"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Rechner"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Bounce-Tasten aktivieren/deaktivieren"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Tastaturmaus aktivieren/deaktivieren"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Einfingerbedienung aktivieren/deaktivieren"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Anschlagverzögerung aktivieren/deaktivieren"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Voice Access aktivieren/deaktivieren"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"TalkBack aktivieren/deaktivieren"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"„Vergrößerung“ aktivieren/deaktivieren"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"„Vorlesen“ aktivieren"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Bitte nicht stören"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Tastenkombination für Lautstärketasten"</string>
<string name="battery" msgid="769686279459897127">"Akku"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Mit Fingerabdruck öffnen"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Authentifizierung erforderlich. Tippe dazu einfach auf den Fingerabdrucksensor."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Aktiver Anruf"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobile Daten"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Verbunden"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Vorübergehend verbunden"</string>
@@ -1390,7 +1393,7 @@
<string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Abbrechen"</string>
<string name="rear_display_bottom_sheet_confirm" msgid="1507591562761552899">"Jetzt umdrehen"</string>
<string name="rear_display_folded_bottom_sheet_title" msgid="3930008746560711990">"Smartphone auffalten"</string>
- <string name="rear_display_unfolded_bottom_sheet_title" msgid="6291111173057304055">"Bildschirm wechseln?"</string>
+ <string name="rear_display_unfolded_bottom_sheet_title" msgid="6291111173057304055">"Display wechseln?"</string>
<string name="rear_display_folded_bottom_sheet_description" msgid="6842767125783222695">"Mit der Rückkamera lassen sich Fotos mit höherer Auflösung aufnehmen"</string>
<string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"Für höhere Auflösung Smartphone umdrehen"</string>
<string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Faltbares Gerät wird geöffnet"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Du hast das Tutorial für die Touch-Geste zum Aufrufen der zuletzt verwendeten Apps abgeschlossen."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Wenn du zuletzt verwendete Apps aufrufen möchtest, wische mit drei Fingern nach oben und halte das Touchpad gedrückt"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Zwischen Apps wechseln"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Wische mit vier Fingern auf dem Touchpad nach rechts"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Gut gemacht!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Du hast die Touch-Geste „Zwischen Apps wechseln\" abgeschlossen."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Wische mit vier Fingern auf dem Touchpad nach rechts, um zwischen Apps zu wechseln"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Alle Apps anzeigen"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Drücke die Aktionstaste auf deiner Tastatur"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Perfekt!"</string>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index cc4ce17737ec..412e3156f6c8 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Άγνωστο ποσοστό μπαταρίας."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Συνδέθηκε στο <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Συνδέθηκε σε <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Μη συνδεδεμένο"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Περιαγωγή"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Ανενεργά"</string>
@@ -539,6 +543,8 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Εξερεύνηση της λειτουργίας Hub"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Αποκτήστε πρόσβαση στα αγαπημένα σας γραφικά στοιχεία και τις προφυλάξεις οθόνης κατά τη φόρτιση."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Ας ξεκινήσουμε"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Εναλλαγή χρήστη"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"αναπτυσσόμενο μενού"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Όλες οι εφαρμογές και τα δεδομένα αυτής της περιόδου σύνδεσης θα διαγραφούν."</string>
@@ -801,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Εμφανίζεται στην κορυφή των ειδοποιήσεων συζήτησης και ως φωτογραφία προφίλ στην οθόνη κλειδώματος, εμφανίζεται ως συννεφάκι, διακόπτει τη λειτουργία Μην ενοχλείτε"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Προτεραιότητα"</string>
<string name="no_shortcut" msgid="8257177117568230126">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> δεν υποστηρίζει τις λειτουργίες συζήτησης"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Παράβλεψη"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Να μην εμφανιστεί ξανά"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Δεν είναι δυνατή η τροποποίηση αυτών των ειδοποιήσεων"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Δεν είναι δυνατή η τροποποίηση των ειδοποιήσεων κλήσεων."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Δεν είναι δυνατή η διαμόρφωση αυτής της ομάδας ειδοποιήσεων εδώ"</string>
@@ -915,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Ημερολόγιο"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Αριθμομηχανή"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Χάρτες"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Εναλλαγή ελαστικών πλήκτρων"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Εναλλαγή πλήκτρων ελέγχου ποντικιού"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Εναλλαγή ασύγχρονων πλήκτρων"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Εναλλαγή αργών πλήκτρων"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Εναλλαγή Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Εναλλαγή TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Εναλλαγή Μεγιστοποίησης"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Ενεργοποίηση της λειτουργίας Επιλέξτε για αυτόματη ανάγνωση"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Μην ενοχλείτε"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Συντόμευση κουμπιών έντασης ήχου"</string>
<string name="battery" msgid="769686279459897127">"Μπαταρία"</string>
@@ -1304,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Χρήση δακτυλικού αποτυπώματος για άνοιγμα"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Απαιτείται έλεγχος ταυτότητας. Αγγίξτε τον αισθητήρα δακτυλικών αποτυπωμάτων για έλεγχο ταυτότητας."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Κλήση σε εξέλιξη"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Δεδομένα κινητής τηλεφωνίας"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Συνδέθηκε"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Προσωρινή σύνδεση"</string>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index c7ee5c5156d2..d5c5666d6983 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Battery percentage unknown."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connected to <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Connected to <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Not connected."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Off"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"To open an app using a widget, you\'ll need to verify that it\'s you. Also, bear in mind that anyone can view them, even when your tablet\'s locked. Some widgets may not have been intended for your lock screen and may be unsafe to add here."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Got it"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Show screensaver button"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Explore Hub Mode"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Access your favourite widgets and screen savers while charging."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Let\'s go"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pulldown menu"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Shows at the top of conversation notifications and as a profile picture on lock screen, appears as a bubble, interrupts Do Not Disturb"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Priority"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> doesn’t support conversation features"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Dismiss"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Don\'t show again"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Call notifications can\'t be modified."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"This group of notifications cannot be configured here"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Calculator"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Toggle bounce keys"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Toggle mouse keys"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Toggle sticky keys"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Toggle slow keys"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Toggle Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Toggle Talkback"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Toggle magnification"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Activate Select to Speak"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Do Not Disturb"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Volume buttons shortcut"</string>
<string name="battery" msgid="769686279459897127">"Battery"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Use fingerprint to open"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Authentication required. Touch the fingerprint sensor to authenticate."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Ongoing call"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobile data"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Connected"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Temporarily connected"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"You completed the view recent apps gesture."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"To view recent apps, swipe up and hold using three fingers on your touchpad"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Switch apps"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Swipe right using four fingers on your touchpad"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Well done!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"You completed the switch apps gesture."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Swipe right using four fingers on your touchpad to switch apps"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"View all apps"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Press the action key on your keyboard"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Well done!"</string>
diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml
index c26bee1e5c91..b3010e2b7d1a 100644
--- a/packages/SystemUI/res/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Battery percentage unknown."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connected to <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Connected to <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Expand group."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Open application."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Not connected."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Off"</string>
@@ -539,6 +541,7 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Explore hub mode"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Access your favorite widgets and screen savers while charging."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Let’s go"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Show your favorite screensavers while charging"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pulldown menu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"All apps and data in this session will be deleted."</string>
@@ -801,6 +804,8 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Shows at the top of conversation notifications and as a profile picture on lock screen, appears as a bubble, interrupts Do Not Disturb"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Priority"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> doesn’t support conversation features"</string>
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
+ <skip />
<string name="notification_inline_dismiss" msgid="88423586921134258">"Dismiss"</string>
<string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Don\'t show again"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string>
@@ -913,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Calculator"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Toggle bounce keys"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Toggle mouse keys"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Toggle sticky keys"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Toggle slow keys"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Toggle Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Toggle Talkback"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Toggle Magnification"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Activate Select to Speak"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Do Not Disturb"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Volume buttons shortcut"</string>
<string name="battery" msgid="769686279459897127">"Battery"</string>
@@ -1302,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Use fingerprint to open"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Authentication required. Touch the fingerprint sensor to authenticate."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Ongoing call"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"Ongoing"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobile data"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Connected"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Temporarily connected"</string>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index c7ee5c5156d2..d5c5666d6983 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Battery percentage unknown."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connected to <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Connected to <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Not connected."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Off"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"To open an app using a widget, you\'ll need to verify that it\'s you. Also, bear in mind that anyone can view them, even when your tablet\'s locked. Some widgets may not have been intended for your lock screen and may be unsafe to add here."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Got it"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Show screensaver button"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Explore Hub Mode"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Access your favourite widgets and screen savers while charging."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Let\'s go"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pulldown menu"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Shows at the top of conversation notifications and as a profile picture on lock screen, appears as a bubble, interrupts Do Not Disturb"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Priority"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> doesn’t support conversation features"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Dismiss"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Don\'t show again"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Call notifications can\'t be modified."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"This group of notifications cannot be configured here"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Calculator"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Toggle bounce keys"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Toggle mouse keys"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Toggle sticky keys"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Toggle slow keys"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Toggle Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Toggle Talkback"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Toggle magnification"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Activate Select to Speak"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Do Not Disturb"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Volume buttons shortcut"</string>
<string name="battery" msgid="769686279459897127">"Battery"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Use fingerprint to open"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Authentication required. Touch the fingerprint sensor to authenticate."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Ongoing call"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobile data"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Connected"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Temporarily connected"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"You completed the view recent apps gesture."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"To view recent apps, swipe up and hold using three fingers on your touchpad"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Switch apps"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Swipe right using four fingers on your touchpad"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Well done!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"You completed the switch apps gesture."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Swipe right using four fingers on your touchpad to switch apps"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"View all apps"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Press the action key on your keyboard"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Well done!"</string>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index c7ee5c5156d2..d5c5666d6983 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Battery percentage unknown."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connected to <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Connected to <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Not connected."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Off"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"To open an app using a widget, you\'ll need to verify that it\'s you. Also, bear in mind that anyone can view them, even when your tablet\'s locked. Some widgets may not have been intended for your lock screen and may be unsafe to add here."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Got it"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Show screensaver button"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Explore Hub Mode"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Access your favourite widgets and screen savers while charging."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Let\'s go"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pulldown menu"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Shows at the top of conversation notifications and as a profile picture on lock screen, appears as a bubble, interrupts Do Not Disturb"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Priority"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> doesn’t support conversation features"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Dismiss"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Don\'t show again"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Call notifications can\'t be modified."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"This group of notifications cannot be configured here"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Calculator"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Toggle bounce keys"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Toggle mouse keys"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Toggle sticky keys"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Toggle slow keys"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Toggle Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Toggle Talkback"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Toggle magnification"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Activate Select to Speak"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Do Not Disturb"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Volume buttons shortcut"</string>
<string name="battery" msgid="769686279459897127">"Battery"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Use fingerprint to open"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Authentication required. Touch the fingerprint sensor to authenticate."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Ongoing call"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobile data"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Connected"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Temporarily connected"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"You completed the view recent apps gesture."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"To view recent apps, swipe up and hold using three fingers on your touchpad"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Switch apps"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Swipe right using four fingers on your touchpad"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Well done!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"You completed the switch apps gesture."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Swipe right using four fingers on your touchpad to switch apps"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"View all apps"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Press the action key on your keyboard"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Well done!"</string>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index 95ebbb25ff66..966c9f36cf3b 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Se desconoce el porcentaje de la batería."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Conectado a <xliff:g id="BLUETOOTH">%s</xliff:g>"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Conectado a <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Expandir grupo."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Abrir aplicación."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"No conectado"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Desactivados"</string>
@@ -536,12 +538,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Para abrir una app usando un widget, debes verificar tu identidad. Además, ten en cuenta que cualquier persona podrá verlo, incluso cuando la tablet esté bloqueada. Es posible que algunos widgets no se hayan diseñados para la pantalla de bloqueo y podría ser peligroso agregarlos allí."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Entendido"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Botón para mostrar el protector de pantalla"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
- <skip />
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Explora el modo Hub"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Accede a tus widgets y protectores de pantalla favoritos mientras se carga el dispositivo."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Comenzar"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Muestra tus protectores de pantalla favoritos mientras se carga el dispositivo"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambiar usuario"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menú expandible"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Se eliminarán las aplicaciones y los datos de esta sesión."</string>
@@ -804,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Aparece en forma de burbuja y como foto de perfil en la parte superior de las notificaciones de conversación, en la pantalla de bloqueo, y detiene el modo No interrumpir"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioritaria"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> no admite funciones de conversación"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Descartar"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"No volver a mostrar"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"No se pueden modificar estas notificaciones."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"No se pueden modificar las notificaciones de llamada."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"No se puede configurar aquí este grupo de notificaciones"</string>
@@ -918,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendario"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Calculadora"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Activar o desactivar el rechazo de teclas"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Activar o desactivar las teclas del mouse"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Activar o desactivar las teclas especiales"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Activar o desactivar las teclas lentas"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Activar o desactivar el Acceso por voz"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Activar o desactivar TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Activar o desactivar la ampliación"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Activar Seleccionar para pronunciar"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"No interrumpir"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Combinación de teclas de botones de volumen"</string>
<string name="battery" msgid="769686279459897127">"Batería"</string>
@@ -1307,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Usa la huella dactilar para abrir"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Se requiere de una autenticación. Toca el sensor de huellas dactilares para autenticarte."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Llamada en curso"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"En curso"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Datos móviles"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Conexión establecida"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Conectado temporalmente"</string>
@@ -1512,12 +1511,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Completaste el gesto para ver las apps recientes."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Para ver las apps recientes, desliza tres dedos hacia arriba y mantenlos presionados en el panel táctil"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Cambia de app"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Desliza hacia la derecha con cuatro dedos en el panel táctil"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"¡Bien hecho!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Completaste el gesto para cambiar de app."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Desliza hacia la derecha con cuatro dedos en el panel táctil para cambiar de app"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Ver todas las apps"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Presiona la tecla de acción en el teclado"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"¡Bien hecho!"</string>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index 2c88f8ead989..3c052beeb2b8 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -116,7 +116,7 @@
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Cuando grabas toda la pantalla, se graba todo lo que se muestre en ella. Debes tener cuidado con elementos como contraseñas, detalles de pagos, mensajes, fotos, audio y vídeo."</string>
<string name="screenrecord_permission_dialog_warning_single_app" msgid="3738199712880063924">"Cuando grabas una aplicación, se graba todo lo que se muestre o reproduzca en ella. Debes tener cuidado con elementos como contraseñas, detalles de pagos, mensajes, fotos, audio y vídeo."</string>
<string name="screenrecord_permission_dialog_continue_entire_screen" msgid="5557974446773486600">"Grabar pantalla"</string>
- <string name="screenrecord_app_selector_title" msgid="3854492366333954736">"Elegir una aplicación para grabar"</string>
+ <string name="screenrecord_app_selector_title" msgid="3854492366333954736">"Elige la aplicación que quieres grabar"</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"Grabar audio"</string>
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Audio del dispositivo"</string>
<string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Sonido de tu dispositivo, como música, llamadas y tonos de llamada"</string>
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Porcentaje de batería desconocido."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Conectado a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Conectado a <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"No conectado."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Desactivados"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Para abrir una aplicación usando un widget, deberás verificar que eres tú. Además, ten en cuenta que cualquier persona podrá verlos, incluso aunque tu tablet esté bloqueada. Es posible que algunos widgets no estén pensados para la pantalla de bloqueo y no sea seguro añadirlos aquí."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Entendido"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Botón para mostrar el salvapantallas"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Descubre el modo Base"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Accede a tus widgets y salvapantallas favoritos mientras se carga."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Vamos allá"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambiar de usuario"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menú desplegable"</string>
@@ -573,7 +576,7 @@
<string name="media_projection_entry_app_permission_dialog_warning_single_app" msgid="7094417930857938876">"Cuando compartes una aplicación, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> puede ver todo lo que se muestra o reproduce en ella. Debes tener cuidado con elementos como contraseñas, detalles de pagos, mensajes, fotos, audio y vídeo."</string>
<string name="media_projection_entry_app_permission_dialog_continue_entire_screen" msgid="1850848182344377579">"Compartir pantalla"</string>
<string name="media_projection_entry_app_permission_dialog_single_app_disabled" msgid="8999903044874669995">"<xliff:g id="APP_NAME">%1$s</xliff:g> ha inhabilitado esta opción"</string>
- <string name="media_projection_entry_share_app_selector_title" msgid="1419515119767501822">"Elegir una aplicación para compartir"</string>
+ <string name="media_projection_entry_share_app_selector_title" msgid="1419515119767501822">"Elige la aplicación que quieres compartir"</string>
<string name="media_projection_entry_cast_permission_dialog_title" msgid="752756942658159416">"¿Enviar tu pantalla?"</string>
<string name="media_projection_entry_cast_permission_dialog_option_text_single_app" msgid="6073353940838561981">"Enviar una aplicación"</string>
<string name="media_projection_entry_cast_permission_dialog_option_text_entire_screen" msgid="8389508187954155307">"Enviar toda la pantalla"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Se muestra encima de las notificaciones de conversaciones y como imagen de perfil en la pantalla de bloqueo, aparece como burbuja e interrumpe el modo No molestar"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioridad"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> no admite funciones de conversación"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Cerrar"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"No volver a mostrar"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Estas notificaciones no se pueden modificar."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Las notificaciones de llamada no se pueden modificar."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Este grupo de notificaciones no se puede configurar aquí"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendario"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Calculadora"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Activar/Desactivar teclas de rebote"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Activar/Desactivar teclas del ratón"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Activar/Desactivar teclas persistentes"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Activar/Desactivar teclas lentas"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Activar/Desactivar Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Activar/Desactivar TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Activar/Desactivar ampliación"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Activar Enunciar selección"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"No molestar"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Acceso directo de los botones de volumen"</string>
<string name="battery" msgid="769686279459897127">"Batería"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Usa la huella digital para abrir"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Autenticación obligatoria. Toca el sensor de huellas digitales para autenticarte."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Llamada en curso"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Datos móviles"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Conectado"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Conectada temporalmente"</string>
@@ -1454,13 +1457,13 @@
<string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Aplicación en uso"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accesibilidad"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Combinaciones de teclas"</string>
- <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Personalizar combinaciones de teclas"</string>
+ <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Personalizar combinaciones"</string>
<string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"¿Eliminar combinación de teclas?"</string>
<string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"¿Restablecer valores predeterminados?"</string>
<string name="shortcut_customize_mode_add_shortcut_description" msgid="7636040209946696120">"Para crear esta combinación de teclas, pulsa la tecla de acción y una o varias teclas a la vez"</string>
<string name="shortcut_customize_mode_remove_shortcut_description" msgid="6851287900585057128">"Se eliminará tu combinación de teclas personalizada de forma permanente."</string>
<string name="shortcut_customize_mode_reset_shortcut_description" msgid="2081849715634358684">"Se eliminarán todos tus accesos directos personalizados de forma permanente."</string>
- <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Buscar accesos directos"</string>
+ <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Buscar combinaciones de teclas"</string>
<string name="shortcut_helper_no_search_results" msgid="8554756497996692160">"No hay resultados de búsqueda"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Icono de contraer"</string>
<string name="shortcut_helper_content_description_meta_key" msgid="3989315044342124818">"Icono de la tecla de acción o de la tecla Meta"</string>
@@ -1474,7 +1477,7 @@
<string name="shortcut_helper_key_combinations_forward_slash" msgid="1238652537199346970">"barra inclinada"</string>
<string name="shortcut_helper_content_description_drag_handle" msgid="5092426406009848110">"Controlador de arrastre"</string>
<string name="shortcut_helper_keyboard_settings_buttons_label" msgid="6720967595915985259">"Ajustes del teclado"</string>
- <string name="shortcut_helper_customize_dialog_set_shortcut_button_label" msgid="4754492225010429382">"Establecer combinación de teclas"</string>
+ <string name="shortcut_helper_customize_dialog_set_shortcut_button_label" msgid="4754492225010429382">"Establecer combinación"</string>
<string name="shortcut_helper_customize_dialog_remove_button_label" msgid="6546386970440176552">"Eliminar"</string>
<string name="shortcut_helper_customize_dialog_reset_button_label" msgid="7645535254306312685">"Sí, restablecer"</string>
<string name="shortcut_helper_customize_dialog_cancel_button_label" msgid="5595546460431741178">"Cancelar"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Has completado el gesto para ver las aplicaciones recientes."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Para ver las aplicaciones recientes, desliza tres dedos hacia arriba y mantén pulsado en el panel táctil"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Cambiar de aplicación"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Desliza hacia la derecha con cuatro dedos en el panel táctil"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"¡Bien hecho!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Has completado el gesto para cambiar de aplicación."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Desliza hacia la derecha con cuatro dedos en el panel táctil para cambiar de aplicación"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Ver todas las aplicaciones"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Pulsa la tecla de acción de tu teclado"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"¡Muy bien!"</string>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index c96cc0473bb6..defaa77a0935 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Aku laetuse protsent on teadmata."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Ühendatud: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Ühendatud ülekandega <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Grupi laiendamine."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Rakenduse avamine."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Ühendus puudub."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Rändlus"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Väljas"</string>
@@ -536,12 +538,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Rakenduse avamiseks vidina abil peate kinnitama, et see olete teie. Samuti pidage meeles, et kõik saavad vidinaid vaadata, isegi kui teie tahvelarvuti on lukus. Mõni vidin ei pruugi olla ette nähtud teie lukustuskuva jaoks ja seda pole turvaline siia lisada."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Selge"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Nupp Kuva ekraanisäästja"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
- <skip />
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Tutvuge dokirežiimiga"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Saate laadimise ajal juurdepääsu oma lemmikumatele vidinatele ja ekraanisäästjatele."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Alustame"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Saate laadimise ajal kuvada oma lemmikekraanisäästjaid"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Kasutaja vahetamine"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rippmenüü"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Seansi kõik rakendused ja andmed kustutatakse."</string>
@@ -804,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Kuvatakse mullina vestluste märguannete ülaosas ja profiilipildina lukustuskuval ning katkestab režiimi Mitte segada"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioriteetne"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ei toeta vestlusfunktsioone"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Loobu"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ära enam näita"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Neid märguandeid ei saa muuta."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Kõnemärguandeid ei saa muuta."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Seda märguannete rühma ei saa siin seadistada"</string>
@@ -918,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Kalender"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Kalkulaator"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Põrkeklahvide vahetamine"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Hiireklahvide vahetamine"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Nakkeklahvide vahetamine"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Aeglaste klahvide vahetamine"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Voice Accessi vahetamine"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"TalkBacki lüliti"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Suurenduse lüliti"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Funktsiooni Vali ja kuula aktiveerimine"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Mitte segada"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Helitugevuse nuppude otsetee"</string>
<string name="battery" msgid="769686279459897127">"Aku"</string>
@@ -1307,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Kasutage avamiseks sõrmejälge"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Vajalik on autentimine. Puudutage autentimiseks sõrmejäljeandurit."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Käimasolev kõne"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"Pooleli"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobiilne andmeside"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Ühendatud"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Ajutiselt ühendatud"</string>
@@ -1512,12 +1511,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Tegite hiljutiste rakenduste vaatamise liigutuse."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Hiljutiste rakenduste kuvamiseks pühkige puuteplaadil kolme sõrmega üles ja hoidke sõrmi puuteplaadil"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Rakenduste vahetamine"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Pühkige puuteplaadil nelja sõrmega paremale"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Väga hea!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Tegite rakenduste vahetamise liigutuse."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Rakenduste vahetamiseks pühkige puuteplaadil nelja sõrmega paremale"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Kõigi rakenduste kuvamine"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Vajutage klaviatuuril toiminguklahvi"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Hästi tehtud!"</string>
diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml
index b8643a287d57..02da5a1619d2 100644
--- a/packages/SystemUI/res/values-eu/strings.xml
+++ b/packages/SystemUI/res/values-eu/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Bateriaren ehunekoa ezezaguna da."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> gailura konektatuta."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Hona konektatuta: <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Konektatu gabe."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Ibiltaritza"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Desaktibatuta"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Aplikazio bat widget baten bidez irekitzeko, zeu zarela egiaztatu beharko duzu. Gainera, kontuan izan edonork ikusi ahalko dituela halako widgetak, tableta blokeatuta badago ere. Baliteke widget batzuk pantaila blokeaturako egokiak ez izatea, eta agian ez da segurua haiek bertan gehitzea."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Ados"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Erakutsi pantaila-babeslearen botoia"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Arakatu kontrol-zentro modua"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Erabili gogoko dituzun widgetak eta pantaila-babesleak gailua kargatu bitartean."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Has gaitezen"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Aldatu erabiltzailea"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"zabaldu menua"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Elkarrizketen jakinarazpenen goialdean eta profileko argazki gisa agertzen da pantaila blokeatuan, burbuila batean, eta ez molestatzeko modua eteten du"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Lehentasuna"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioak ez ditu onartzen elkarrizketetarako eginbideak"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Baztertu"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ez erakutsi berriro"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Jakinarazpen horiek ezin dira aldatu."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Deien jakinarazpenak ezin dira aldatu."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Jakinarazpen talde hau ezin da konfiguratu hemen"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Kalkulagailua"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Aktibatu/Desaktibatu tekla-sakatze errepikatuak"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Aktibatu/Desaktibatu saguaren teklak"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Aktibatu/Desaktibatu tekla itsaskorrak"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Aktibatu/Desaktibatu tekla motelak"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Aktibatu/Desaktibatu Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Aktibatu edo desaktibatu Talkback"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Aktibatu edo desaktibatu lupa"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Aktibatu \"Hautatu ozen irakurtzeko\""</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Ez molestatzeko modua"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Bolumen-botoietarako lasterbidea"</string>
<string name="battery" msgid="769686279459897127">"Bateria"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Erabili hatz-marka irekitzeko"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Autentifikazioa behar da. Autentifikatzeko, ukitu hatz-marken sentsorea."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Deia abian"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Datu-konexioa"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Konektatuta"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Aldi baterako konektatuta"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Osatu duzu azkenaldiko aplikazioak ikusteko keinua."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Azkenaldiko aplikazioak ikusteko, pasatu 3 hatz gora eta eduki sakatuta ukipen-panelean"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Aldatu aplikazioa"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Pasatu 4 hatz eskuinera ukipen-panelean"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Bikain!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Ikasi duzu aplikazio batetik bestera aldatzeko keinua."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Pasatu 4 hatz eskuinera ukipen-panelean, aplikazioz aldatzeko"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Ikusi aplikazio guztiak"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Sakatu teklatuko ekintza-tekla"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Bikain!"</string>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index 2a3c3c02762f..52538971217e 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"درصد شارژ باتری مشخص نیست."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"به <xliff:g id="BLUETOOTH">%s</xliff:g> متصل شد."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"به <xliff:g id="CAST">%s</xliff:g> متصل شد."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"گروه را از هم باز می‌کند."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"برنامه را باز می‌کند."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"متصل نیست."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"فراگردی"</string>
<string name="cell_data_off" msgid="4886198950247099526">"خاموش"</string>
@@ -539,6 +541,7 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"کاوش کردن حالت متصل"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"در حین شارژ، به ابزاره‌ها و محافظ‌های صفحه‌نمایش دلخواهتان دسترسی داشته باشید."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"بیایید شروع کنیم"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"نمایش محافظ‌های صفحه‌نمایش دلخواه درحین شارژ"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"تغییر کاربر"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"منوی پایین‌پر"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"همه برنامه‌ها و داده‌های این جلسه حذف خواهد شد."</string>
@@ -801,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"در بالای اعلان‌های مکالمه و به‌صورت عکس نمایه در صفحه قفل نشان داده می‌شود، به‌صورت حبابک ظاهر می‌شود، در حالت «مزاحم نشوید» وقفه ایجاد می‌کند"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"اولویت"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> از ویژگی‌های مکالمه پشتیبانی نمی‌کند"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"بستن"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"دیگر نشان داده نشود"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"این اعلان‌ها قابل اصلاح نیستند."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"این اعلان‌ها قابل‌اصلاح نیستند."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"نمی‌توانید این گروه اعلان‌ها را در اینجا پیکربندی کنید"</string>
@@ -915,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"تقویم"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"ماشین‌حساب"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"تغییر وضعیت کلیدهای ضدتکرار"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"تغییر وضعیت کلیدهای موشواره"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"تغییر وضعیت کلیدهای چسبان"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"تغییر وضعیت کلیدهای آهسته"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"تغییر وضعیت «دسترسی صوتی»"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"‏روشن/خاموش کردن TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"روشن/خاموش کردن درشت‌نمایی"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"فعال کردن «انتخاب برای شنیدن»"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"مزاحم نشوید"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"میان‌بر دکمه‌های صدا"</string>
<string name="battery" msgid="769686279459897127">"باتری"</string>
@@ -1304,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"از اثر انگشت برای باز کردن قفل استفاده کنید"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"اصالت‌سنجی لازم است. برای اصالت‌سنجی، حسگر اثر انگشت را لمس کنید."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"تماس درحال انجام"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"درحال انجام"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"داده تلفن همراه"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"متصل است"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"موقتاً متصل است"</string>
@@ -1452,7 +1454,7 @@
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"دسترس‌پذیری"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"میان‌برهای صفحه‌کلید"</string>
<string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"سفارشی‌سازی میان‌برها"</string>
- <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"میان‌بر حذف شود؟"</string>
+ <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"میان‌بر برداشته شود؟"</string>
<string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"به تنظیم پیش‌فرض بازنشانی می‌کنید؟"</string>
<string name="shortcut_customize_mode_add_shortcut_description" msgid="7636040209946696120">"برای ایجاد این میان‌بر، دکمه «کنش» و یک یا چند دکمه دیگر را هم‌زمان فشار دهید."</string>
<string name="shortcut_customize_mode_remove_shortcut_description" msgid="6851287900585057128">"با این کار، میان‌بر سفارشی شما برای همیشه حذف می‌شود."</string>
@@ -1472,7 +1474,7 @@
<string name="shortcut_helper_content_description_drag_handle" msgid="5092426406009848110">"دستگیره کشاندن"</string>
<string name="shortcut_helper_keyboard_settings_buttons_label" msgid="6720967595915985259">"تنظیمات صفحه‌کلید"</string>
<string name="shortcut_helper_customize_dialog_set_shortcut_button_label" msgid="4754492225010429382">"تنظیم میان‌بر"</string>
- <string name="shortcut_helper_customize_dialog_remove_button_label" msgid="6546386970440176552">"حذف"</string>
+ <string name="shortcut_helper_customize_dialog_remove_button_label" msgid="6546386970440176552">"برداشتن"</string>
<string name="shortcut_helper_customize_dialog_reset_button_label" msgid="7645535254306312685">"بله، بازنشانی شود"</string>
<string name="shortcut_helper_customize_dialog_cancel_button_label" msgid="5595546460431741178">"لغو"</string>
<string name="shortcut_helper_add_shortcut_dialog_placeholder" msgid="9154297849458741995">"کلید را فشار دهید"</string>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index 67e0c283563f..1bd952eeff9d 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -252,6 +252,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Akun varaustaso ei tiedossa."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Yhteys: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Yhdistetty kohteeseen <xliff:g id="CAST">%s</xliff:g>"</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Ei yhteyttä."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Pois päältä"</string>
@@ -538,11 +542,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Jos haluat avata sovelluksen käyttämällä widgetiä, sinun täytyy vahvistaa henkilöllisyytesi. Muista myös, että widgetit näkyvät kaikille, vaikka tabletti olisi lukittuna. Jotkin widgetit on ehkä tarkoitettu lukitusnäytölle, ja niiden lisääminen tänne ei välttämättä ole turvallista."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Selvä"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Näytä näytönsäästäjän painike"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Tutustu hubitilaan"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Käytä suosikkiwidgetejä ja -näytönsäästäjiä latauksen aikana."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Aloitetaan"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Vaihda käyttäjää"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"alasvetovalikko"</string>
@@ -806,10 +809,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Näkyy keskusteluilmoitusten yläosassa ja profiilikuvana lukitusnäytöllä, näkyy kuplana, keskeyttää Älä häiritse ‑tilan"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Tärkeä"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ei tue keskusteluominaisuuksia"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Hylkää"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Älä näytä uudelleen"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Näitä ilmoituksia ei voi muokata"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Puheluilmoituksia ei voi muokata."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Tätä ilmoitusryhmää ei voi määrittää tässä"</string>
@@ -920,16 +923,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Kalenteri"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Laskin"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Laita toistuvien painallusten ohitus päälle/pois"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Laita hiiren painikkeet päälle/pois"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Laita päälle jäävät näppäimet päälle/pois"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Laita hitaat näppäimet päälle/pois"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Voice Access päälle/pois"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"TalkBack päälle/pois"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Suurennus päälle/pois"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Aktivoi Teksti puhuttuna"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Älä häiritse"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Äänenvoimakkuuspainikkeiden pikanäppäin"</string>
<string name="battery" msgid="769686279459897127">"Akku"</string>
@@ -1309,6 +1310,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Avaa sormenjäljellä"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Todennus vaaditaan. Todenna koskettamalla sormenjälkitunnistinta."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Käynnissä oleva puhelu"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobiilidata"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Yhdistetty"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Väliaikaisesti yhdistetty"</string>
@@ -1514,12 +1517,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Olet oppinut Katso viimeisimmät sovellukset ‑eleen."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Näet äskeiset sovellukset, kun pyyhkäiset ylös ja pidät kosketuslevyä painettuna kolmella sormella."</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Vaihda sovellusta"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Pyyhkäise kosketuslevyllä oikealle neljällä sormella"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Hienoa!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Olet oppinut sovelluksenvaihtoeleen."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Vaihda sovellusta pyyhkäisemällä kosketuslevyllä oikealle neljällä sormella"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Näytä kaikki sovellukset"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Paina näppäimistön toimintonäppäintä"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Hienoa!"</string>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index 5d0c67bafcb0..6360a12a4176 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Pourcentage de la pile inconnu."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connecté à : <xliff:g id="BLUETOOTH">%s</xliff:g>"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Connecté à <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Non connecté"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Itinérance"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Désactivé"</string>
@@ -539,6 +543,8 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Explorer le mode Console"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Accéder à vos widgets et écrans de veille préférés pendant le chargement."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Allons-y"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Changer d\'utilisateur"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu déroulant"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Toutes les applis et les données de cette session seront supprimées."</string>
@@ -801,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"S\'affiche dans le haut des notifications de conversation et comme photo de profil à l\'écran de verrouillage, s\'affiche comme bulle, interrompt le mode Ne pas déranger"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioritaire"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ne prend pas en charge les fonctionnalités de conversation"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Fermer"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ne plus afficher"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ces notifications ne peuvent pas être modifiées"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Les notifications d\'appel ne peuvent pas être modifiées."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ce groupe de notifications ne peut pas être configuré ici"</string>
@@ -915,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Agenda"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Calculatrice"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Activer/Désactiver les touches non répétées"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Activer/Désactiver les touches de souris"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Activer/Désactiver les touches rémanentes"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Activer/Désactiver les touches lentes"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Activer/Désactiver l\'Accès vocal"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Activer/Désactiver TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Activer/Désactiver l\'agrandissement"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Activer la fonctionnalité Sélectionner pour énoncer"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Ne pas déranger"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Raccourci des boutons de volume"</string>
<string name="battery" msgid="769686279459897127">"Pile"</string>
@@ -1304,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Servez-vous de votre empreinte digitale pour ouvrir"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Authentification requise. Touchez le capteur d\'empreintes digitales pour vous authentifier."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Appel en cours"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Données cellulaires"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Connexion active"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Connectée temporairement"</string>
@@ -1475,7 +1481,7 @@
<string name="shortcut_helper_customize_dialog_remove_button_label" msgid="6546386970440176552">"Supprimer"</string>
<string name="shortcut_helper_customize_dialog_reset_button_label" msgid="7645535254306312685">"Oui, réinitialiser"</string>
<string name="shortcut_helper_customize_dialog_cancel_button_label" msgid="5595546460431741178">"Annuler"</string>
- <string name="shortcut_helper_add_shortcut_dialog_placeholder" msgid="9154297849458741995">"Appuyez sur la touche"</string>
+ <string name="shortcut_helper_add_shortcut_dialog_placeholder" msgid="9154297849458741995">"Appuyez sur une ou des touches"</string>
<string name="shortcut_customizer_key_combination_in_use_error_message" msgid="3325858369539848162">"La combinaison de touches est déjà utilisée. Essayez une autre combinaison."</string>
<string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Le raccourci ne peut pas être défini."</string>
<string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 389957633c55..6d9760c48044 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -225,7 +225,7 @@
<string name="biometric_re_enroll_notification_content" msgid="8685925877186288180">"Ceci est obligatoire pour améliorer la sécurité et les performances"</string>
<string name="fingerprint_re_enroll_notification_title" msgid="4539432429683916604">"Reconfigurer le déverrouillage par empreinte digitale"</string>
<string name="fingerprint_re_enroll_notification_name" msgid="630798657797645704">"Empreinte digitale"</string>
- <string name="fingerprint_re_enroll_dialog_title" msgid="3526033128113925780">"Configurer le déverrouillage par empreinte digitale"</string>
+ <string name="fingerprint_re_enroll_dialog_title" msgid="3526033128113925780">"Configurez déverr. par empreinte digitale"</string>
<string name="fingerprint_re_enroll_dialog_content" msgid="4866561176695984879">"Pour reconfigurer le déverrouillage par empreinte digitale, les images et modèles actuels de votre empreinte digitale seront supprimés.\n\nAprès leur suppression, vous devrez reconfigurer le déverrouillage par empreinte digitale pour déverrouiller votre téléphone ou confirmer votre identité avec votre empreinte digitale."</string>
<string name="fingerprint_re_enroll_dialog_content_singular" msgid="3083663339787381218">"Pour reconfigurer le déverrouillage par empreinte digitale, les images et le modèle actuels de votre empreinte digitale seront supprimés.\n\nAprès leur suppression, vous devrez reconfigurer le déverrouillage par empreinte digitale pour déverrouiller votre téléphone ou confirmer votre identité avec votre empreinte digitale."</string>
<string name="fingerprint_reenroll_failure_dialog_content" msgid="4733768492747300666">"Impossible de configurer le déverrouillage par empreinte digitale. Accédez aux paramètres pour réessayer."</string>
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Pourcentage de la batterie inconnu."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connecté à : <xliff:g id="BLUETOOTH">%s</xliff:g>"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Connecté à <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Non connecté"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Itinérance"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Désactivées"</string>
@@ -539,6 +543,8 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Découvrir le mode Hub"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Accédez à vos widgets et économiseurs d\'écran préférés lorsque l\'appareil est en charge."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"C\'est parti"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Changer d\'utilisateur"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu déroulant"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Toutes les applications et les données de cette session seront supprimées."</string>
@@ -801,6 +807,8 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"S\'affiche en haut des notifications de conversation et en tant que photo de profil sur l\'écran de verrouillage, apparaît sous forme de bulle, interrompt le mode Ne pas déranger"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioritaire"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> n\'est pas compatible avec les fonctionnalités de conversation"</string>
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
+ <skip />
<string name="notification_inline_dismiss" msgid="88423586921134258">"Ignorer"</string>
<string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ne plus afficher"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Impossible de modifier ces notifications."</string>
@@ -880,7 +888,7 @@
<string name="group_system_access_home_screen" msgid="4130366993484706483">"Accéder à l\'écran d\'accueil"</string>
<string name="group_system_overview_open_apps" msgid="5659958952937994104">"Afficher les applis récentes"</string>
<string name="group_system_cycle_forward" msgid="5478663965957647805">"Faire défiler les applications récentes"</string>
- <string name="group_system_cycle_back" msgid="8194102916946802902">"Faire défiler les applications récentes à l\'envers"</string>
+ <string name="group_system_cycle_back" msgid="8194102916946802902">"Revenir en arrière dans les applications récentes"</string>
<string name="group_system_access_all_apps_search" msgid="1553588630154197469">"Ouvrir la liste d\'applications"</string>
<string name="group_system_access_system_settings" msgid="8731721963449070017">"Ouvrir les paramètres"</string>
<string name="group_system_access_google_assistant" msgid="7210074957915968110">"Ouvrir l\'Assistant"</string>
@@ -913,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Agenda"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Calculatrice"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Activer/Désactiver les touches filtres"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Activer/Désactiver les touches pour la souris"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Activer/Désactiver les touches rémanentes"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Activer/Désactiver les touches lentes"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Activer/Désactiver Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Activer/Désactiver TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Activer/Désactiver la loupe"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Activer Sélectionner pour écouter"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Ne pas déranger"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Raccourci des boutons de volume"</string>
<string name="battery" msgid="769686279459897127">"Batterie"</string>
@@ -1302,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Utilisez votre empreinte pour ouvrir"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Authentification requise. Appuyez sur le lecteur d\'empreintes digitales pour vous authentifier."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Appel en cours"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Données mobiles"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Connecté"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Connexion temporaire"</string>
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index 56323279fd6c..3195ff506213 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Descoñécese a porcentaxe da batería."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Conectado a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Dispositivo conectado: <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Despregar o grupo."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Abrir a aplicación."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Non conectada"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Itinerancia"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Desactivados"</string>
@@ -536,12 +538,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Para abrir unha aplicación mediante un widget, tes que verificar a túa identidade. Ten en conta que pode velos calquera persoa, mesmo coa tableta bloqueada. Pode ser que algúns widgets non estean pensados para a túa pantalla de bloqueo, polo que talvez non sexa seguro engadilos aquí."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Entendido"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Botón para mostrar o protector de pantalla"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
- <skip />
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Explorar o modo Hub"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Accede aos teus widgets e protectores de pantalla favoritos durante a carga."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Comezar"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Mostrar os teus protectores de pantalla favoritos durante a carga"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambiar usuario"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menú despregable"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Eliminaranse todas as aplicacións e datos desta sesión."</string>
@@ -804,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Móstrase na parte superior das notificacións das conversas e como imaxe do perfil na pantalla de bloqueo, aparece como unha burbulla e interrompe o modo Non molestar"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioridade"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> non admite funcións de conversa"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Pechar"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Non volver mostrar"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Estas notificacións non se poden modificar."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"As notificacións de chamadas non se poden modificar."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Aquí non se pode configurar este grupo de notificacións"</string>
@@ -918,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Calculadora"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Activar ou desactivar as teclas de rebote"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Activar ou desactivar as teclas do rato"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Activar ou desactivar as teclas presas"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Activar ou desactivar as teclas lentas"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Activar ou desactivar Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Activar ou desactivar Talkback"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Activar ou desactivar a ampliación"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Activa Escoitar selección"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Non molestar"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Atallo dos botóns de volume"</string>
<string name="battery" msgid="769686279459897127">"Batería"</string>
@@ -1307,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Usa a impresión dixital para abrir"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Requírese autenticación. Para autenticarte, toca o sensor de impresión dixital."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Chamada en curso"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"En curso"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Datos móbiles"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Conectada"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Conectada temporalmente"</string>
@@ -1512,12 +1511,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Completaches o titorial do xesto de consultar aplicacións recentes."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Para ver as aplicacións recentes, pasa tres dedos cara arriba e mantenos premidos no panel táctil"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Cambiar de aplicación"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Pasa catro dedos cara á dereita no panel táctil"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Bravo!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Completaches o xesto para cambiar de aplicación."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Pasa catro dedos cara á dereita no panel táctil para cambiar de aplicación"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Ver todas as aplicacións"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Preme a tecla de acción do teclado"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Ben feito!"</string>
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index 5c4142397bfb..7ad58e97ab7e 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"બૅટરીની ટકાવારી અજાણ છે."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> થી કનેક્ટ થયાં."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> થી કનેક્ટ કરેલ."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"કનેક્ટ થયેલું નથી."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"રોમિંગ"</string>
<string name="cell_data_off" msgid="4886198950247099526">"બંધ કરો"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"વિજેટનો ઉપયોગ કરીને ઍપ ખોલવા માટે, તમારે એ ચકાસણી કરવાની જરૂર રહેશે કે આ તમે જ છો. તે ઉપરાંત, ધ્યાનમાં રાખો કે તમારું ટૅબ્લેટ લૉક કરેલું હોય તો પણ કોઈપણ વ્યક્તિ તેમને જોઈ શકે છે. અમુક વિજેટ કદાચ તમારી લૉક સ્ક્રીન માટે બનાવવામાં આવ્યા ન હોઈ શકે છે અને તેમને અહીં ઉમેરવાનું અસલામત હોઈ શકે છે."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"સમજાઈ ગયું"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"સ્ક્રીનસેવર બટન બતાવો"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"હબ મોડ શોધખોળ કરો"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"ચાર્જ કરતી વખતે તમારા મનપસંદ વિજેટ અને સ્ક્રીન સેવર ઍક્સેસ કરો."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"ચાલો પ્રારંભ કરીએ"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"વપરાશકર્તા સ્વિચ કરો"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"પુલડાઉન મેનૂ"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"વાતચીતના નોટિફિકેશન વિભાગની ટોચ પર અને લૉક કરેલી સ્ક્રીન પર પ્રોફાઇલ ફોટો તરીકે બતાવે છે, બબલ તરીકે દેખાય છે, ખલેલ પાડશો નહીં મોડમાં વિક્ષેપ ઊભો કરે છે"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"પ્રાધાન્યતા"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> વાતચીતની સુવિધાઓને સપોર્ટ આપતી નથી"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"છોડી દો"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"ફરી બતાવશો નહીં"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"આ નોટિફિકેશનમાં કોઈ ફેરફાર થઈ શકશે નહીં."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"કૉલના નોટિફિકેશનમાં કોઈ ફેરફાર કરી શકાતો નથી."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"નોટિફિકેશનના આ ગ્રૂપની ગોઠવણી અહીં કરી શકાશે નહીં"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"કેલ્ક્યુલેટર"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"બાઉન્સ કીને ટૉગલ કરો"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"માઉસ કીને ટૉગલ કરો"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"સ્ટીકી કીને ટૉગલ કરો"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"ધીમી કીને ટૉગલ કરો"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Voice Accessને ટૉગલ કરો"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Talkbackની સુવિધાને ટૉગલ કરો"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"મોટું કરવાની સુવિધાને ટૉગલ કરો"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"\'સાંભળવા માટે પસંદ કરો\' સુવિધાને સક્રિય કરો"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"ખલેલ પાડશો નહીં"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"વૉલ્યૂમ બટન્સ શૉર્ટકટ"</string>
<string name="battery" msgid="769686279459897127">"બૅટરી"</string>
@@ -973,12 +974,12 @@
<string name="tuner_time" msgid="2450785840990529997">"સમય"</string>
<string-array name="clock_options">
<item msgid="3986445361435142273">"કલાક, મિનિટ અને સેકન્ડ બતાવો"</item>
- <item msgid="1271006222031257266">"કલાક અને મિનિટ બતાવો (ડિફોલ્ટ)"</item>
+ <item msgid="1271006222031257266">"કલાક અને મિનિટ બતાવો (ડિફૉલ્ટ)"</item>
<item msgid="6135970080453877218">"આ આઇકન બતાવશો નહીં"</item>
</string-array>
<string-array name="battery_options">
<item msgid="7714004721411852551">"હંમેશાં ટકાવારી બતાવો"</item>
- <item msgid="3805744470661798712">"ચાર્જ થાય ત્યારે ટકાવારી બતાવો (ડિફોલ્ટ)"</item>
+ <item msgid="3805744470661798712">"ચાર્જ થાય ત્યારે ટકાવારી બતાવો (ડિફૉલ્ટ)"</item>
<item msgid="8619482474544321778">"આ આઇકન બતાવશો નહીં"</item>
</string-array>
<string name="tuner_low_priority" msgid="8412666814123009820">"ઓછી પ્રાધાન્યતાનું નોટિફિકેશન આઇકન બતાવો"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ખોલવા માટે ફિંગરપ્રિન્ટનો ઉપયોગ કરો"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"પ્રમાણીકરણ આવશ્યક છે. પ્રમાણિત કરવા માટે ફિંગરપ્રિન્ટ સેન્સરને ટચ કરો."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"ચાલુ કૉલ"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"મોબાઇલ ડેટા"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"કનેક્ટ કરેલું"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"હંગામી રીતે કનેક્ટ કર્યું"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"તમે \'તાજેતરની ઍપ જુઓ\' સંકેત પૂર્ણ કર્યો."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"તાજેતરની ઍપ જોવા માટે, તમારા ટચપૅડ પર ત્રણ આંગળી વડે ઉપરની તરફ સ્વાઇપ કરો અને દબાવી રાખો"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"ઍપ સ્વિચ કરો"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"તમારા ટચપૅડ પર ચાર આંગળીઓનો ઉપયોગ કરીને જમણે સ્વાઇપ કરો"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"ખૂબ સરસ કામ!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"તમે ઍપ સ્વિચ કરવાનો સંકેત પૂર્ણ કર્યો છે."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"ઍપ સ્વિચ કરવા માટે, તમારા ટચપૅડ પર ચાર આંગળીઓનો ઉપયોગ કરીને જમણે સ્વાઇપ કરો"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"બધી ઍપ જુઓ"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"તમારા કીબોર્ડ પરની ઍક્શન કી દબાવો"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"વાહ!"</string>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index 221327ce2c3f..f629f221bdf5 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"इस बारे में जानकारी नहीं है कि अभी बैटरी कितने प्रतिशत चार्ज है."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> से कनेक्ट किया गया."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> से कनेक्ट है."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"कनेक्ट नहीं है."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"रोमिंग"</string>
<string name="cell_data_off" msgid="4886198950247099526">"बंद है"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"किसी विजेट से कोई ऐप्लिकेशन खोलने के लिए, आपको अपनी पहचान की पुष्टि करनी होगी. ध्यान रखें कि आपके टैबलेट के लॉक होने पर भी, कोई व्यक्ति विजेट देख सकता है. ऐसा हो सकता है कि कुछ विजेट, लॉक स्क्रीन पर दिखाने के लिए न बने हों. इन्हें लॉक स्क्रीन पर जोड़ना असुरक्षित हो सकता है."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"ठीक है"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"स्क्रीन सेवर दिखाने का बटन"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"हब मोड को एक्सप्लोर करें"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"चार्जिंग के दौरान, अपने पसंदीदा विजेट और स्क्रीन सेवर को ऐक्सेस करें."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"आइए शुरू करें"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"उपयोगकर्ता बदलें"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"पुलडाउन मेन्यू"</string>
@@ -731,7 +734,7 @@
<string name="volume_panel_hint_muted" msgid="1124844870181285320">"म्यूट किया गया"</string>
<string name="volume_panel_hint_vibrate" msgid="4136223145435914132">"वाइब्रेट"</string>
<string name="media_output_label_title" msgid="872824698593182505">"<xliff:g id="LABEL">%s</xliff:g> इस पर चल रहा है"</string>
- <string name="media_output_title_without_playing" msgid="3825663683169305013">"ऑडियो इस पर चलेगा"</string>
+ <string name="media_output_title_without_playing" msgid="3825663683169305013">"ऑडियो चलेगा"</string>
<string name="media_output_title_ongoing_call" msgid="208426888064112006">"कॉल चालू है"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"सिस्टम यूज़र इंटरफ़ेस (यूआई) ट्यूनर"</string>
<string name="status_bar" msgid="4357390266055077437">"स्टेटस बार"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"यह कई तरीकों से दिखती है, जैसे कि बातचीत वाली सूचनाओं में सबसे ऊपर, बबल के तौर पर, और लॉक स्क्रीन पर प्रोफ़ाइल फ़ोटो के तौर पर. साथ ही, यह \'परेशान न करें\' मोड को बायपास कर सकती है"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"प्राथमिकता"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> पर बातचीत की सुविधाएं काम नहीं करतीं"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"खारिज करें"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"फिर से न दिखाएं"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ये सूचनाएं नहीं बदली जा सकती हैं."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"कॉल से जुड़ी सूचनाओं को ब्लॉक नहीं किया जा सकता."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"सूचनाओं के इस समूह को यहां कॉन्फ़िगर नहीं किया जा सकता"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"कैलकुलेटर"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"मैप"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"बाउंस बटन को टॉगल करें"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"कीबोर्ड पर माउस के बटन को टॉगल करें"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"स्टिकी बटन को टॉगल करें"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"स्लो बटन को टॉगल करें"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Voice Access को टॉगल करें"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"TalkBack को टॉगल करें"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"ज़ूम करने की सुविधा टॉगल करें"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"\'चुनें और सुनें\' सुविधा चालू करें"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"परेशान न करें"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"वॉल्यूम बटन का शॉर्टकट"</string>
<string name="battery" msgid="769686279459897127">"बैटरी"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"खोलने के लिए, फ़िंगरप्रिंट का इस्तेमाल करें"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"पुष्टि करना ज़रूरी है. पुष्टि करने के लिए, फ़िंगरप्रिंट सेंसर को छुएं."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"पहले से जारी कॉल"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"मोबाइल डेटा"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"कनेक्ट हो गया"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"इंटरनेट कनेक्शन कुछ समय के लिए है"</string>
@@ -1454,9 +1457,9 @@
<string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"मौजूदा ऐप्लिकेशन"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"सुलभता"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"कीबोर्ड शॉर्टकट"</string>
- <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"पसंद के मुताबिक शॉर्टकट बनाएं"</string>
+ <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"शॉर्टकट पसंद के मुताबिक बनाएं"</string>
<string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"क्या आपको शॉर्टकट हटाना है?"</string>
- <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"क्या आपको फिर से डिफ़ॉल्ट सेटिंग चालू करनी है?"</string>
+ <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"क्या आपको फिर से डिफ़ॉल्ट शॉर्टकट चालू करने हैं?"</string>
<string name="shortcut_customize_mode_add_shortcut_description" msgid="7636040209946696120">"यह शॉर्टकट बनाने के लिए, ऐक्शन बटन और एक या उससे ज़्यादा अन्य बटन एक साथ दबाएं"</string>
<string name="shortcut_customize_mode_remove_shortcut_description" msgid="6851287900585057128">"ऐसा करने पर, पसंद के मुताबिक बनाया गया आपका शॉर्टकट हमेशा के लिए मिट जाएगा."</string>
<string name="shortcut_customize_mode_reset_shortcut_description" msgid="2081849715634358684">"ऐसा करने पर, पसंद के मुताबिक बनाए गए आपके सभी शॉर्टकट हमेशा के लिए मिट जाएंगे."</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"अब आपको हाथ के जेस्चर का इस्तेमाल करके, हाल ही में इस्तेमाल किए गए ऐप्लिकेशन देखने का तरीका पता चल गया है."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"हाल ही में इस्तेमाल किए गए ऐप्लिकेशन देखने के लिए, अपने टचपैड पर तीन उंगलियों से ऊपर की ओर स्वाइप करें और दबाकर रखें"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"ऐप्लिकेशन के बीच स्विच करें"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"अपने टचपैड पर चार उंगलियों से दाईं ओर स्वाइप करें"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"बहुत बढ़िया!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"आपने जान लिया है कि हाथ का जेस्चर इस्तेमाल करके ऐप्लिकेशन के बीच स्विच कैसे करें."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"ऐप्लिकेशन स्विच करने के लिए, अपने टचपैड पर चार उंगलियों से दाईं ओर स्वाइप करें"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"सभी ऐप्लिकेशन देखें"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"अपने कीबोर्ड पर ऐक्शन बटन दबाएं"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"बहुत खूब!"</string>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 60b39a4bf539..dd0a6c1e729e 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Postotak baterije nije poznat."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Spojen na <xliff:g id="BLUETOOTH">%s</xliff:g> ."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Povezani ste sa sljedećim uređajem: <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Proširite grupu."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Otvorite aplikaciju."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Nije povezano."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Isključeno"</string>
@@ -539,6 +541,7 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Istraži način Huba"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Pristupite omiljenim widgetima i čuvarima zaslona tijekom punjenja."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Započnimo"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Prikaz vaših omiljenih čuvara zaslona tijekom punjenja"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Promjena korisnika"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"padajući izbornik"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Izbrisat će se sve aplikacije i podaci u ovoj sesiji."</string>
@@ -801,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Prikazuje se pri vrhu obavijesti razgovora i kao profilna slika na zaključanom zaslonu, izgleda kao oblačić, prekida Ne uznemiravaj"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioritetno"</string>
<string name="no_shortcut" msgid="8257177117568230126">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> ne podržava značajke razgovora"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Odbaci"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ne prikazuj ponovo"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Te se obavijesti ne mogu izmijeniti."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Obavijesti o pozivima ne mogu se izmijeniti."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ta se grupa obavijesti ne može konfigurirati ovdje"</string>
@@ -915,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Kalendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Kalkulator"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Karte"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Uključivanje/isključivanje zanemarivanja slučajnih pritisaka tipki"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Uključivanje/isključivanje tipki za pokrete mišem"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Uključivanje/isključivanje ljepljivih tipki"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Uključivanje/isključivanje sporih tipki"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Uključivanje/isključivanje Glasovnog pristupa"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Uključi/isključi TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Uključi/isključi povećavanje"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Aktiviraj Odabir za govor"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Ne uznemiravaj"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Prečac tipki za glasnoću"</string>
<string name="battery" msgid="769686279459897127">"Baterija"</string>
@@ -1304,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Otvorite pomoću otiska prsta"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Potrebna je autentifikacija. Dodirnite senzor otiska prsta da biste se autentificirali."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Poziv u tijeku"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"U tijeku"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobilni podaci"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Povezano"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Privremeno povezano"</string>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 568c8725158b..56270b4062a9 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Az akkumulátor töltöttségi szintje ismeretlen."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Csatlakoztatva a következőhöz: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Csatlakozva a következőhöz: <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Nincs csatlakozva."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Ki"</string>
@@ -539,6 +543,8 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"A Hub mód felfedezése"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Töltés közben hozzáférhet kedvenc moduljaihoz és képernyőkímélőihez."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Kezdés"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Felhasználóváltás"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"lehúzható menü"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"A munkamenetben található összes alkalmazás és adat törlődni fog."</string>
@@ -801,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"A beszélgetésekre vonatkozó értesítések tetején, lebegő buborékként látható, megjeleníti a profilképet a lezárási képernyőn, és megszakítja a Ne zavarjanak funkciót"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioritás"</string>
<string name="no_shortcut" msgid="8257177117568230126">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> nem támogatja a beszélgetési funkciókat"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Elvetés"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ne jelenjen meg újra"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ezeket az értesítéseket nem lehet módosítani."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"A hívásértesítéseket nem lehet módosítani."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Az értesítések jelen csoportját itt nem lehet beállítani"</string>
@@ -915,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Naptár"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Számológép"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Térkép"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Billentyűblokkolás be- és kikapcsolása"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Egérgombok be- és kikapcsolása"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Beragadó billentyűk be- és kikapcsolása"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Lassú billentyűk be- és kikapcsolása"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Hangalapú hozzáférés be- és kikapcsolása"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"TalkBack be- vagy kikapcsolása"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Nagyítás bekapcsolása"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Felolvasás aktiválása"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Ne zavarjanak"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"A hangerőgombok gyorsbillentyűk"</string>
<string name="battery" msgid="769686279459897127">"Akkumulátor"</string>
@@ -1304,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Ujjlenyomat használata a megnyitáshoz"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Hitelesítés szükséges. Érintse meg az ujjlenyomat-érzékelőt a hitelesítéshez."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Hívás folyamatban"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobiladat"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Csatlakozva"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Ideiglenesen csatlakoztatva"</string>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index 60b445ff0eab..bb92212f0004 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Մարտկոցի լիցքի մակարդակն անհայտ է։"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Միացված է <xliff:g id="BLUETOOTH">%s</xliff:g>-ին:"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Միացված է <xliff:g id="CAST">%s</xliff:g>-ին:"</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Միացված չէ:"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Ռոումինգ"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Անջատված է"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Վիջեթի միջոցով հավելված բացելու համար դուք պետք է հաստատեք ձեր ինքնությունը։ Նաև նկատի ունեցեք, որ ցանկացած ոք կարող է դիտել վիջեթները, նույնիսկ երբ ձեր պլանշետը կողպված է։ Որոշ վիջեթներ կարող են նախատեսված չլինել ձեր կողպէկրանի համար, և այստեղ դրանց ավելացնելը կարող է վտանգավոր լինել։"</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Եղավ"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"«Ցույց տալ էկրանապահը» կոճակ"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Բացահայտեք հանգույցի ռեժիմը"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Օգտագործեք ձեր սիրած վիջեթները և էկրանապահները, մինչ ձեր սարքը լիցքավորվում է։"</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Սկսել"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Անջատել օգտվողին"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"իջնող ընտրացանկ"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Ցուցադրվում է զրույցների ծանուցումների վերևում, ինչպես նաև կողպէկրանին որպես պրոֆիլի նկար, հայտնվում է ամպիկի տեսքով, ընդհատում է «Չանհանգստացնել» ռեժիմը"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Կարևոր"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածը զրույցի գործառույթներ չի աջակցում"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Փակել"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Այլևս ցույց չտալ"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Այս ծանուցումները չեն կարող փոփոխվել:"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Զանգերի մասին ծանուցումները հնարավոր չէ փոփոխել։"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ծանուցումների տվյալ խումբը հնարավոր չէ կարգավորել այստեղ"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Օրացույց"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Հաշվիչ"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Քարտեզներ"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Միացնել/անջատել կրկնվող սեղմումների անտեսումը"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Միացնել/անջատել մկնիկի ստեղները"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Միացնել/անջատել կպչուն ստեղները"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Միացնել/անջատել ստեղների երկար սեղմումը"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Միացնել/անջատել Voice Access-ը"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Միացնել/անջատել TalkBack-ը"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Միացնել/անջատել խոշորացումը"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Ակտիվացնել «Ընտրեք և լսեք» գործառույթը"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Չանհանգստացնել"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Ձայնի կոճակների դյուրանցում"</string>
<string name="battery" msgid="769686279459897127">"Մարտկոց"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Բացելու համար օգտագործեք մատնահետքը"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Պահանջվում է նույնականացում։ Դրա համար մատը հպեք մատնահետքի սկաներին։"</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Ընթացիկ զանգ"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Բջջային ինտերնետ"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Միացած է"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Ժամանակավոր կապ"</string>
@@ -1448,8 +1451,7 @@
<string name="shortcut_helper_category_system_apps" msgid="6001757545472556810">"Համակարգային հավելվածներ"</string>
<string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Բազմա­խնդրու­թ­յուն"</string>
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Տրոհված էկրան"</string>
- <!-- no translation found for shortcutHelper_category_accessibility (8068337792277570938) -->
- <skip />
+ <string name="shortcutHelper_category_accessibility" msgid="8068337792277570938">"Հատուկ գործառույթներ"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Ներածում"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Հավելվածի դյուրանցումներ"</string>
<string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Այս հավելվածը"</string>
@@ -1513,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Դուք կատարեցիք վերջին օգտագործված հավելվածների դիտման ժեստը։"</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Վերջին հավելվածները տեսնելու համար երեք մատը սահեցրեք վերև և սեղմած պահեք հպահարթակին"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Անցում մեկ հավելվածից մյուսին"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Հպահարթակի վրա չորս մատով սահեցրեք աջ"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Կեցցե՛ք։"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Դուք սովորեցիք ուրիշ հավելված անցնելու ժեստը։"</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Մեկ հավելվածից մյուսին անցնելու համար հպահարթակի վրա չորս մատով սահեցրեք աջ"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Ինչպես դիտել բոլոր հավելվածները"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Սեղմեք գործողության ստեղնը ստեղնաշարի վրա"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Հիանալի՛ է"</string>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 0a6baca254b4..60f8ea7f60fa 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Persentase baterai tidak diketahui."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Terhubung ke <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Terhubung ke <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Tidak terhubung."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Nonaktif"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Untuk membuka aplikasi menggunakan widget, Anda perlu memverifikasi diri Anda. Selain itu, harap ingat bahwa siapa saja dapat melihatnya, bahkan saat tablet Anda terkunci. Beberapa widget mungkin tidak dirancang untuk layar kunci Anda dan mungkin tidak aman untuk ditambahkan di sini."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Oke"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Tampilkan tombol screensaver"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Jelajahi mode hub"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Akses widget dan screensaver favorit Anda saat mengisi daya."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Mulai"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Beralih pengguna"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu pulldown"</string>
@@ -718,7 +721,7 @@
<string name="volume_ringer_change" msgid="3574969197796055532">"Ketuk untuk mengubah mode pendering"</string>
<string name="volume_ringer_mode" msgid="6867838048430807128">"mode pendering"</string>
<string name="volume_ringer_drawer_closed_content_description" msgid="4737792429808781745">"<xliff:g id="VOLUME_RINGER_STATUS">%1$s</xliff:g>, ketuk untuk mengubah mode pendering"</string>
- <string name="volume_ringer_hint_mute" msgid="4263821214125126614">"Tanpa suara"</string>
+ <string name="volume_ringer_hint_mute" msgid="4263821214125126614">"bisukan"</string>
<string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"aktifkan"</string>
<string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"getar"</string>
<string name="volume_dialog_title" msgid="6502703403483577940">"%s kontrol volume"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Muncul teratas di notifikasi percakapan dan sebagai foto profil di layar kunci, ditampilkan sebagai balon, menimpa mode Jangan Ganggu"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioritas"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak mendukung fitur percakapan"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Tutup"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Jangan tampilkan lagi"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Notifikasi ini tidak dapat diubah."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Notifikasi panggilan tidak dapat diubah."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Grup notifikasi ini tidak dapat dikonfigurasi di sini"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Kalender"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Kalkulator"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Aktifkan/nonaktifkan tombol pantul"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Aktifkan/nonaktifkan tombol mouse"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Aktifkan/nonaktifkan tombol lekat"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Aktifkan/nonaktifkan tombol lambat"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Aktifkan/nonaktifkan Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Aktifkan/nonaktifkan TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Aktifkan/nonaktifkan Pembesaran"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Aktifkan fitur Klik untuk Diucapkan"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Jangan Ganggu"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Pintasan tombol volume"</string>
<string name="battery" msgid="769686279459897127">"Baterai"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Gunakan sidik jari untuk membuka"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Perlu autentikasi. Sentuh sensor sidik jari untuk melakukan autentikasi."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Panggilan sedang berlangsung"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Data seluler"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Terhubung"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Terhubung sementara"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Anda telah menyelesaikan gestur untuk melihat aplikasi terbaru."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Untuk melihat aplikasi terbaru, geser ke atas dan tahan menggunakan tiga jari di touchpad"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Beralih aplikasi"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Geser ke kanan menggunakan empat jari di touchpad"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Bagus!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Anda telah menyelesaikan gestur beralih aplikasi."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Geser ke kanan menggunakan empat jari di touchpad untuk beralih aplikasi"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Lihat semua aplikasi"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Tekan tombol tindakan di keyboard"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Oke!"</string>
diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml
index 46c8452374e7..68e395b3498d 100644
--- a/packages/SystemUI/res/values-is/strings.xml
+++ b/packages/SystemUI/res/values-is/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Staða rafhlöðu óþekkt."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Tengt við <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Tengt við <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Stækka hóp."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Opna forrit."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Engin tenging."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Reiki"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Slökkt"</string>
@@ -536,12 +538,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Þú þarft að staðfesta að þetta sért þú til að geta opnað forrit með græju. Hafðu einnig í huga að hver sem er getur skoðað þær, jafnvel þótt spjaldtölvan sé læst. Sumar græjur eru hugsanlega ekki ætlaðar fyrir lásskjá og því gæti verið óöruggt að bæta þeim við hér."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Ég skil"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Hnappurinn „Sýna skjávara“"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
- <skip />
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Kynntu þér dokkustillingu"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Hafðu aðgang að uppáhaldsgræjunum og -skjávörunum þínum á meðan tækið er í hleðslu."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Kýlum á þetta"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Sýna uppáhaldsskjávarana þína á meðan tækið er í hleðslu"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Skipta um notanda"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"Fellivalmynd"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Öllum forritum og gögnum í þessari lotu verður eytt."</string>
@@ -804,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Birtist efst í samtalstilkynningum og sem prófílmynd á lásskjánum. Birtist sem blaðra sem truflar „Ónáðið ekki“"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Forgangur"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> styður ekki samtalseiginleika"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Loka"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ekki sýna aftur"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ekki er hægt að breyta þessum tilkynningum."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Ekki er hægt að breyta tilkynningum um símtöl."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ekki er hægt að stilla þessar tilkynningar hér"</string>
@@ -918,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Dagatal"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Reiknivél"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Kort"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Velja/afvelja endurkastslykla"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Velja/afvelja músarlykla"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Velja/afvelja festilykla"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Velja/afvelja hæga lykla"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Velja/afvelja Raddskipanir"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Kveikja/slökkva á Talkback"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Kveikja/slökkva á stækkun"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Kveikja á textaupplestri"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Ónáðið ekki"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Flýtihnappar fyrir hljóðstyrk"</string>
<string name="battery" msgid="769686279459897127">"Rafhlaða"</string>
@@ -1307,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Opna með fingrafari"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Auðkenningar krafist. Auðkenndu með því að snerta fingrafaralesarann."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Símtal í gangi"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"Í gangi"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Farsímagögn"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Tengt"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Tímabundin tenging"</string>
@@ -1512,12 +1511,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Þú framkvæmdir bendinguna til að sjá nýleg forrit."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Strjúktu upp og haltu þremur fingrum inni á snertifletinum til að sjá nýleg forrit"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Að skipta á milli forrita"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Strjúktu til hægri á snertifletinum með fjórum fingrum"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Vel gert!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Þú framkvæmdir bendinguna til að skipta á milli forrita."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Strjúktu til hægri á snertifletinum með fjórum fingrum til að skipta á milli forrita"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Sjá öll forrit"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Ýttu á aðgerðalykilinn á lyklaborðinu"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Vel gert!"</string>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index 30ad41f6fc5a..c839a7b89106 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Percentuale della batteria sconosciuta."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connesso a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Connesso a: <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Espandi il gruppo."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Apri l\'applicazione."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Non connesso."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Off"</string>
@@ -536,12 +538,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Per aprire un\'app utilizzando un widget, dovrai verificare la tua identità. Inoltre tieni presente che chiunque può vederlo, anche quando il tablet è bloccato. Alcuni widget potrebbero non essere stati progettati per la schermata di blocco e potrebbe non essere sicuro aggiungerli qui."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Ok"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Pulsante Mostra salvaschermo"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
- <skip />
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Esplora la modalità Hub"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Accedi ai tuoi widget e salvaschermo preferiti durante la ricarica."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Iniziamo"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Mostra i tuoi salvaschermo preferiti durante la ricarica"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambio utente"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu a discesa"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Tutte le app e i dati di questa sessione verranno eliminati."</string>
@@ -804,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Appare in cima alle notifiche delle conversazioni, come immagine del profilo nella schermata di blocco e sotto forma di bolla, inoltre interrompe la modalità Non disturbare"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Priorità"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> non supporta le funzionalità delle conversazioni"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Ignora"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Non mostrare più"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Impossibile modificare queste notifiche."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Impossibile modificare gli avvisi di chiamata."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Qui non è possibile configurare questo gruppo di notifiche"</string>
@@ -881,7 +881,7 @@
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Visualizza notifiche"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Acquisisci screenshot"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Mostra scorciatoie"</string>
- <string name="group_system_go_back" msgid="2730322046244918816">"Indietro"</string>
+ <string name="group_system_go_back" msgid="2730322046244918816">"Torna indietro"</string>
<string name="group_system_access_home_screen" msgid="4130366993484706483">"Vai alla schermata Home"</string>
<string name="group_system_overview_open_apps" msgid="5659958952937994104">"Visualizza app recenti"</string>
<string name="group_system_cycle_forward" msgid="5478663965957647805">"Spostati avanti tra le app recenti"</string>
@@ -918,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendario"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Calcolatrice"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Attiva/disattiva antirimbalzo dei tasti"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Attiva/disattiva tasti mouse"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Attiva/disattiva tasti permanenti"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Attiva/disattiva tasti lenti"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Attiva/disattiva Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Attiva/disattiva TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Attiva/disattiva ingrandimento"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Attiva Seleziona per ascoltare"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Non disturbare"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Pulsanti del volume come scorciatoia"</string>
<string name="battery" msgid="769686279459897127">"Batteria"</string>
@@ -1307,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Usa l\'impronta per aprire"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Autenticazione obbligatoria. Eseguila toccando il sensore di impronte digitali."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Chiamata in corso"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"In corso"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Dati mobili"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Connessa"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Connessa temporaneamente"</string>
@@ -1512,12 +1511,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Hai completato il gesto Visualizza app recenti."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Per visualizzare le app recenti, scorri verso l\'alto e tieni premuto con tre dita sul touchpad"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Cambia app"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Scorri verso destra con quattro dita sul touchpad"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Ottimo lavoro."</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Hai completato il gesto Cambia app."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Scorri verso destra con quattro dita sul touchpad per cambiare app"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Visualizza tutte le app"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Premi il tasto azione sulla tastiera"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Ben fatto!"</string>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index df5614815789..fe5d6f3ebfed 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -231,7 +231,7 @@
<string name="fingerprint_reenroll_failure_dialog_content" msgid="4733768492747300666">"לא ניתן להגדיר ביטול נעילה בטביעת אצבע. יש לעבור להגדרות כדי לנסות שוב."</string>
<string name="face_re_enroll_notification_title" msgid="1850838867718410520">"הגדרה חוזרת של \'פתיחה ע\"י זיהוי הפנים\'"</string>
<string name="face_re_enroll_notification_name" msgid="7384545252206120659">"פתיחה בזיהוי פנים"</string>
- <string name="face_re_enroll_dialog_title" msgid="6392173708176069994">"להגדרת התכונה \'פתיחה ע\"י זיהוי הפנים\'"</string>
+ <string name="face_re_enroll_dialog_title" msgid="6392173708176069994">"הגדרת \"פתיחה בזיהוי פנים\""</string>
<string name="face_re_enroll_dialog_content" msgid="7353502359464038511">"כדי להגדיר שוב את התכונה \'פתיחה ע\"י זיהוי הפנים\', עליך למחוק את התבנית הנוכחית לזיהוי הפנים.\n\nיהיה צורך להגדיר את התכונה הזו שוב כדי להשתמש בזיהוי הפנים לביטול הנעילה של הטלפון."</string>
<string name="face_reenroll_failure_dialog_content" msgid="7073947334397236935">"לא ניתן להגדיר פתיחה ע\"י זיהוי הפנים. צריך לעבור להגדרות כדי לנסות שוב."</string>
<string name="fingerprint_dialog_touch_sensor" msgid="2817887108047658975">"צריך לגעת בחיישן טביעות האצבע"</string>
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"אחוז טעינת הסוללה לא ידוע."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"התבצע חיבור אל <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"מחובר אל <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"אין חיבור."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"נדידה"</string>
<string name="cell_data_off" msgid="4886198950247099526">"כבוי"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"כדי לפתוח אפליקציה באמצעות ווידג\'ט, עליך לאמת את זהותך. בנוסף, כדאי לזכור שכל אחד יכול לראות את הווידג\'טים גם כשהטאבלט שלך נעול. יכול להיות שחלק מהווידג\'טים לא נועדו למסך הנעילה ושלא בטוח להוסיף אותם לכאן."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"הבנתי"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"כפתור להצגת שומר המסך"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"‏האפשרויות במצב Hub"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"אפשר לגשת לווידג\'טים ולשומרי המסך בזמן הטעינה."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"שנתחיל?"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"החלפת משתמש"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"תפריט במשיכה למטה"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"מוצגת בחלק העליון של קטע התראות השיחה וכתמונת פרופיל במסך הנעילה, מופיעה בבועה צפה ומפריעה במצב \'נא לא להפריע\'"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"בעדיפות גבוהה"</string>
<string name="no_shortcut" msgid="8257177117568230126">"האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> לא תומכת בתכונות השיחה"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"סגירה"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"לא להציג את זה שוב"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"לא ניתן לשנות את ההתראות האלה."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"לא ניתן לשנות את התראות השיחה."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"לא ניתן להגדיר כאן את קבוצת ההתראות הזו"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"יומן"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"מחשבון"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"מפות"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"הפעלה או השבתה של סינון הקשות חוזרות"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"הפעלה או השבתה של שליטה בעכבר מהמקלדת"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"הפעלה או השבתה של מקשים \"דביקים\""</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"הפעלה או השבתה של מקשים איטיים"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"‏הפעלה או השבתה של Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"‏הפעלה או השבתה של TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"החלפת מצב ההגדלה"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"הפעלת ההקראה"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"נא לא להפריע"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"קיצור דרך לכפתורי עוצמת קול"</string>
<string name="battery" msgid="769686279459897127">"סוללה"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"שימוש בטביעת אצבע כדי לפתוח"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"נדרש אימות. יש לגעת בחיישן טביעות האצבע כדי לבצע אימות."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"שיחה פעילה"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"חבילת גלישה"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"מחובר"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"מחובר באופן זמני"</string>
@@ -1474,11 +1477,11 @@
<string name="shortcut_helper_key_combinations_forward_slash" msgid="1238652537199346970">"קו נטוי"</string>
<string name="shortcut_helper_content_description_drag_handle" msgid="5092426406009848110">"נקודת האחיזה לגרירה"</string>
<string name="shortcut_helper_keyboard_settings_buttons_label" msgid="6720967595915985259">"הגדרות המקלדת"</string>
- <string name="shortcut_helper_customize_dialog_set_shortcut_button_label" msgid="4754492225010429382">"הגדרה של מקש קיצור"</string>
+ <string name="shortcut_helper_customize_dialog_set_shortcut_button_label" msgid="4754492225010429382">"הגדרת מקש קיצור"</string>
<string name="shortcut_helper_customize_dialog_remove_button_label" msgid="6546386970440176552">"הסרה"</string>
<string name="shortcut_helper_customize_dialog_reset_button_label" msgid="7645535254306312685">"כן, לאפס"</string>
<string name="shortcut_helper_customize_dialog_cancel_button_label" msgid="5595546460431741178">"ביטול"</string>
- <string name="shortcut_helper_add_shortcut_dialog_placeholder" msgid="9154297849458741995">"יש ללחוץ על מקש"</string>
+ <string name="shortcut_helper_add_shortcut_dialog_placeholder" msgid="9154297849458741995">"צריך ללחוץ על מקש"</string>
<string name="shortcut_customizer_key_combination_in_use_error_message" msgid="3325858369539848162">"שילוב המקשים הזה תפוס. צריך לנסות שילוב אחר."</string>
<string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"לא ניתן להגדיר את קיצור הדרך."</string>
<string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"סיימת לתרגל את התנועה להצגת האפליקציות האחרונות."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"כדי לראות את האפליקציות האחרונות, צריך להחליק למעלה וללחוץ לחיצה ארוכה עם שלוש אצבעות על לוח המגע"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"מעבר בין אפליקציות"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"מחליקים ימינה עם ארבע אצבעות על לוח המגע"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"מעולה!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"השלמת את תנועת המעבר בין האפליקציות."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"כדי לעבור בין אפליקציות, מחליקים ימינה עם ארבע אצבעות על לוח המגע"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"צפייה בכל האפליקציות"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"צריך להקיש על מקש הפעולה במקלדת"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"כל הכבוד!"</string>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index d58859045a17..810fef9c3942 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"バッテリー残量は不明です。"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>に接続しました。"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g>に接続されています。"</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"グループを開きます。"</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"アプリを開きます。"</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"接続されていません。"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"ローミング"</string>
<string name="cell_data_off" msgid="4886198950247099526">"OFF"</string>
@@ -539,6 +541,7 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"ハブモードの詳細を見る"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"充電中にお気に入りのウィジェットやスクリーン セーバーにアクセスできます。"</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"使ってみる"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"お気に入りのスクリーンセーバーを充電中に表示"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ユーザーを切り替える"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"プルダウン メニュー"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"このセッションでのアプリとデータはすべて削除されます。"</string>
@@ -801,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"会話通知の一番上に表示されると同時に、ロック画面にプロフィール写真として表示されるほか、バブルとして表示され、サイレント モードが中断されます"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"優先"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>は会話機能に対応していません"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"閉じる"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"次回から表示しない"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"これらの通知は変更できません。"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"着信通知は変更できません。"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"このグループの通知はここでは設定できません"</string>
@@ -882,7 +885,7 @@
<string name="group_system_access_home_screen" msgid="4130366993484706483">"ホーム画面に移動する"</string>
<string name="group_system_overview_open_apps" msgid="5659958952937994104">"最近使ったアプリを表示する"</string>
<string name="group_system_cycle_forward" msgid="5478663965957647805">"最近使ったアプリを確認する"</string>
- <string name="group_system_cycle_back" msgid="8194102916946802902">"最近使ったアプリを確認する(逆方向)"</string>
+ <string name="group_system_cycle_back" msgid="8194102916946802902">"最近使ったアプリをさかのぼって確認する"</string>
<string name="group_system_access_all_apps_search" msgid="1553588630154197469">"アプリの一覧を開く"</string>
<string name="group_system_access_system_settings" msgid="8731721963449070017">"設定を開く"</string>
<string name="group_system_access_google_assistant" msgid="7210074957915968110">"アシスタントを開く"</string>
@@ -915,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"カレンダー"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"電卓"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"マップ"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"バウンスキーを切り替える"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"マウスキーを切り替える"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"固定キーを切り替える"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"スローキーを切り替える"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Voice Access を切り替える"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"TalkBack を切り替える"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"拡大を切り替える"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"「選択して読み上げ」を有効にする"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"サイレント モード"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"音量ボタンのショートカット"</string>
<string name="battery" msgid="769686279459897127">"バッテリー"</string>
@@ -1304,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"指紋を使って開いてください"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"認証が必要です。指紋認証センサーをタッチして認証してください。"</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"通話中"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"実行中"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"モバイルデータ"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"接続済み"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"一時的に接続されています"</string>
diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml
index 1a2d2be67b66..a8fd410b6dff 100644
--- a/packages/SystemUI/res/values-ka/strings.xml
+++ b/packages/SystemUI/res/values-ka/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"ბატარეის პროცენტული მაჩვენებელი უცნობია."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"დაკავშირებულია <xliff:g id="BLUETOOTH">%s</xliff:g>-თან."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"დაკავშირებულია მოწყობილობასთან: <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"არ არის დაკავშირებული."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"როუმინგი"</string>
<string name="cell_data_off" msgid="4886198950247099526">"გამორთული"</string>
@@ -539,6 +543,8 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"ჰაბის რეჟიმის დათვალიერება"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"დატენის დროს შეგიძლიათ თქვენს რჩეულ ვიჯეტებზე და ეკრანმზოგებზე წვდომა."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"დავიწყოთ"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"მომხმარებლის გადართვა"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ჩამოშლადი მენიუ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ამ სესიის ყველა აპი და მონაცემი წაიშლება."</string>
@@ -801,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"გამოჩნდება საუბრის შეტყობინებების თავში და პროფილის სურათის სახით ჩაკეტილ ეკრანზე, ჩნდება ბუშტის სახით, წყვეტს ფუნქციას „არ შემაწუხოთ“"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"პრიორიტეტი"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ს არ აქვს მიმოწერის ფუნქციების მხარდაჭერა"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"დახურვა"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"აღარ მაჩვენო"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ამ შეტყობინებების შეცვლა შეუძლებელია."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"ზარის შეტყობინებების შეცვლა შეუძლებელია."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"შეტყობინებების ამ ჯგუფის კონფიგურირება აქ შეუძლებელია"</string>
@@ -915,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"კალენდარი"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"კალკულატორი"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"კლავიშების ასხლეტის გადართვა"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"მაუსის კლავიშების გადართვა"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"კლავიშების ფიქსაციის გადართვა"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"ნელი კლავიშების გადართვა"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"ხმოვანი წვდომის გადართვა"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Talkback-ის გადართვა"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"გადიდების გადართვა"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"წარმოსათქმელად მონიშვნის გააქტიურება"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"არ შემაწუხოთ"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"ხმის ღილაკების მალსახმობი"</string>
<string name="battery" msgid="769686279459897127">"ბატარეა"</string>
@@ -1304,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"გასახსნელად გამოიყენეთ თითის ანაბეჭდი"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"საჭიროა ავტორიზაცია. ავტორიზაციისთვის შეეხეთ თითის ანაბეჭდის სენსორს."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"მიმდინარე ზარი"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"მობილური ინტერნეტი"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"დაკავშირებული"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"დროებით დაკავშირებული"</string>
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index 54fb72a70182..16569fe52a00 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Батарея зарядының мөлшері белгісіз."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> қосылған."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> трансляциясына қосылды."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Жалғанбаған."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Роуминг"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Өшірулі"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Қолданбаны виджет көмегімен ашу үшін жеке басыңызды растауыңыз керек. Сондай-ақ басқалар оларды планшетіңіз құлыптаулы кезде де көре алатынын ескеріңіз. Кейбір виджеттер құлып экранына арналмаған болады, сондықтан оларды мұнда қосу қауіпсіз болмауы мүмкін."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Түсінікті"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Скринсейвер түймесін көрсету"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Хаб режимін шолу"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Зарядтау кезінде өзіңіз ұнататын виджеттер мен скринсейверлерді пайдаланыңыз."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Бастайық"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Пайдаланушыны ауыстыру"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ашылмалы мәзір"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Әңгіме туралы хабарландырулардың жоғарғы жағында тұрады және құлыптаулы экранда профиль суреті болып көрсетіледі, қалқыма хабар түрінде шығады, Мазаламау режимін тоқтатады."</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Маңызды"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> әңгіме функцияларын қолдамайды."</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Жабу"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Қайта көрсетілмесін"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Бұл хабарландыруларды өзгерту мүмкін емес."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Қоңырау туралы хабарландыруларды өзгерту мүмкін емес."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Мұндай хабарландырулар бұл жерде конфигурацияланбайды."</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Күнтізбе"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Calculator"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Пернелердің қайта басылуын елемеуді қосу/өшіру"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Тінтуір пернелерін қосу/өшіру"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Жабысқан пернелерді қосу/өшіру"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Баяу пернелерді қосу/өшіру"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Voice Access мүмкіндігін қосу/өшіру"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"TalkBack-ті қосу/өшіру"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Ұлғайту функциясын қосу/өшіру"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Select to Speak функциясын қосу"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Мазаламау"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Дыбыс деңгейі түймелерінің төте жолы"</string>
<string name="battery" msgid="769686279459897127">"Батарея"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Ашу үшін саусақ ізін пайдаланыңыз."</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Аутентификациядан өту қажет. Ол үшін саусақ ізін оқу сканерін түртіңіз."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Ағымдағы қоңырау"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Мобильдік интернет"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Жалғанды"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Уақытша байланыс орнатылды."</string>
@@ -1454,7 +1457,7 @@
<string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Қолданыстағы қолданба"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Арнайы мүмкіндіктер"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Перне тіркесімдері"</string>
- <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Пернелер тіркесімін бейімдеу"</string>
+ <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Пернелер тіркесімдерін реттеу"</string>
<string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Тіркесімді өшіру керек пе?"</string>
<string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Әдепкі тіркесімге қайтару керек пе?"</string>
<string name="shortcut_customize_mode_add_shortcut_description" msgid="7636040209946696120">"Осы тіркесімді жасау үшін әрекет пернесін және басқа бір не бірнеше пернені бірге басыңыз."</string>
@@ -1474,7 +1477,7 @@
<string name="shortcut_helper_key_combinations_forward_slash" msgid="1238652537199346970">"қиғаш сызық"</string>
<string name="shortcut_helper_content_description_drag_handle" msgid="5092426406009848110">"Сүйрейтін тетік"</string>
<string name="shortcut_helper_keyboard_settings_buttons_label" msgid="6720967595915985259">"Пернетақта параметрлері"</string>
- <string name="shortcut_helper_customize_dialog_set_shortcut_button_label" msgid="4754492225010429382">"Жылдам пәрменді орнату"</string>
+ <string name="shortcut_helper_customize_dialog_set_shortcut_button_label" msgid="4754492225010429382">"Пернелер тіркесімін орнату"</string>
<string name="shortcut_helper_customize_dialog_remove_button_label" msgid="6546386970440176552">"Өшіру"</string>
<string name="shortcut_helper_customize_dialog_reset_button_label" msgid="7645535254306312685">"Иә, қайтару"</string>
<string name="shortcut_helper_customize_dialog_cancel_button_label" msgid="5595546460431741178">"Бас тарту"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Соңғы қолданбаларды көру қимылын орындадыңыз."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Соңғы қолданбаларды көру үшін сенсорлық тақтада үш саусақпен жоғары сырғытып, ұстап тұрыңыз."</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Қолданба ауыстыру"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Сенсорлық тақтада төрт саусақпен оңға сырғытыңыз."</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Жарайсыз!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Қолданба ауыстыру қимылын аяқтадыңыз."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Қолданбаларды ауыстыру үшін сенсорлық тақтада төрт саусақпен оңға сырғытыңыз."</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Барлық қолданбаны көру"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Пернетақтадағы әрекет пернесін басыңыз."</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Жарайсыз!"</string>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index e827fc7989ab..1cf437c9e949 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"មិនដឹងអំពី​ភាគរយថ្មទេ។"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"បាន​ភ្ជាប់​ទៅ <xliff:g id="BLUETOOTH">%s</xliff:g> ។"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"បានភ្ជាប់ទៅ <xliff:g id="CAST">%s</xliff:g>"</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"ពង្រីកក្រុម។"</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"បើកកម្មវិធី។"</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"មិន​បាន​តភ្ជាប់​។"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"រ៉ូ​មីង"</string>
<string name="cell_data_off" msgid="4886198950247099526">"បិទ"</string>
@@ -536,12 +538,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ដើម្បីបើកកម្មវិធីដោយប្រើធាតុ​ក្រាហ្វិក អ្នកនឹងត្រូវផ្ទៀងផ្ទាត់ថាជាអ្នក។ ទន្ទឹមនឹងនេះ សូមចងចាំថា នរណាក៏អាចមើលធាតុក្រាហ្វិកបាន សូម្បីពេលថេប្លេតរបស់អ្នកជាប់សោក៏ដោយ។ ធាតុ​ក្រាហ្វិកមួយចំនួនប្រហែលមិនត្រូវបានរចនាឡើងសម្រាប់អេក្រង់ចាក់សោរបស់អ្នកទេ និងមិនមានសុវត្ថិភាពឡើយ បើបញ្ចូលទៅទីនេះ។"</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"យល់ហើយ"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"បង្ហាញប៊ូតុងធាតុ​រក្សា​អេក្រង់"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
- <skip />
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"រុករកមុខងារមណ្ឌល"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"ចូលប្រើប្រាស់ធាតុ​ក្រាហ្វិក និងធាតុរក្សាអេក្រង់ដែលអ្នកពេញចិត្តពេលសាកថ្ម។"</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"ចាប់ផ្ដើម"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"បង្ហាញធាតុ​រក្សា​អេក្រង់សំណព្វរបស់អ្នក ពេលកំពុងសាកថ្ម"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ប្ដូរ​អ្នក​ប្រើ"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ម៉ឺនុយ​ទាញចុះ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"កម្មវិធី និងទិន្នន័យ​ទាំងអស់​ក្នុង​វគ្គ​នេះ​នឹង​ត្រូវ​លុប។"</string>
@@ -804,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"បង្ហាញនៅខាងលើ​ការជូនដំណឹងអំពីការសន្ទនា និងជារូបភាព​កម្រង​ព័ត៌មាននៅលើអេក្រង់ចាក់សោ បង្ហាញជាពពុះ បង្អាក់មុខងារកុំ​រំខាន"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"អាទិភាព"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> មិនអាចប្រើ​មុខងារ​សន្ទនា​បានទេ"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"ច្រានចោល"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"កុំបង្ហាញម្ដងទៀត"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"មិនអាច​កែប្រែ​ការជូនដំណឹង​ទាំងនេះ​បានទេ។"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"មិនអាច​កែប្រែ​ការជូនដំណឹងអំពីការហៅទូរសព្ទបានទេ។"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"មិនអាច​កំណត់​រចនាសម្ព័ន្ធ​ក្រុមការជូនដំណឹងនេះ​នៅទីនេះ​បានទេ"</string>
@@ -918,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"ប្រតិទិន"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"ម៉ាស៊ីនគិតលេខ"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"ផែនទី"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"បិទ/បើកគ្រាប់ចុចឡង"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"បិទ/បើកគ្រាប់ចុចម៉ៅស៍"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"បិទ/បើកគ្រាប់ចុចស្អិត"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"បិទ/បើកគ្រាប់ចុចយឺត"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"បិទ/បើកការចូល​ប្រើប្រាស់តាមរយៈ​សំឡេង"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"បិទ/បើក TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"បើក/បិទ​ការ​ពង្រីក"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"បើកដំណើរការ \"ជ្រើសរើសដើម្បីអាន\""</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"កុំ​រំខាន"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"ផ្លូវកាត់ប៊ូតុងកម្រិតសំឡេង"</string>
<string name="battery" msgid="769686279459897127">"ថ្ម"</string>
@@ -1307,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ប្រើស្នាមម្រាមដៃ ដើម្បីបើក"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"តម្រូវឱ្យ​មាន​ការផ្ទៀងផ្ទាត់។ សូមចុច​ឧបករណ៍​ចាប់ស្នាមម្រាមដៃ ដើម្បី​ផ្ទៀងផ្ទាត់​។"</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"ការ​ហៅដែលកំពុងដំណើរការ"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"កំពុងដំណើរការ"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"ទិន្នន័យ​ទូរសព្ទចល័ត"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"បានភ្ជាប់"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"បានភ្ជាប់ជាបណ្ដោះអាសន្ន"</string>
@@ -1512,12 +1511,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"អ្នកបានបញ្ចប់ការមើលចលនាកម្មវិធីថ្មីៗ។"</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"ដើម្បីមើលកម្មវិធីថ្មីៗ សូមអូសឡើងលើ រួចសង្កត់ឱ្យជាប់លើផ្ទាំងប៉ះរបស់អ្នក ដោយប្រើម្រាមដៃបី"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"ប្ដូរ​កម្មវិធី"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"អូសទៅស្ដាំដោយប្រើ​ម្រាមដៃបួននៅលើផ្ទាំងប៉ះរបស់អ្នក"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"ធ្វើបានល្អ!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"អ្នក​បានបញ្ចប់​ចលនា​ប្ដូរកម្មវិធី​ហើយ។"</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"អូសទៅស្ដាំដោយប្រើ​ម្រាមដៃបួននៅលើផ្ទាំងប៉ះរបស់អ្នក ដើម្បីប្ដូរកម្មវិធី"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"មើល​កម្មវិធី​ទាំងអស់"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"ចុចគ្រាប់ចុចសកម្មភាពលើក្ដារចុចរបស់អ្នក"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"ធ្វើបាន​ល្អ!"</string>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index bfc9d7506952..5cfb42cf5091 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"ಬ್ಯಾಟರಿ ಶೇಕಡಾವಾರು ತಿಳಿದಿಲ್ಲ."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> ಗೆ ಸಂಪರ್ಕಪಡಿಸಲಾಗಿದೆ."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಲಾಗಿದೆ."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"ಗುಂಪು ವಿಸ್ತರಿಸಿ."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"ಅಪ್ಲಿಕೇಶನ್ ತೆರೆಯಿರಿ."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"ಸಂಪರ್ಕಗೊಂಡಿಲ್ಲ."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"ರೋಮಿಂಗ್"</string>
<string name="cell_data_off" msgid="4886198950247099526">"ಆಫ್"</string>
@@ -539,6 +541,7 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"ಹಬ್ ಮೋಡ್ ಅನ್ನು ಎಕ್ಸ್‌ಪ್ಲೋರ್ ಮಾಡಿ"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"ಚಾರ್ಜ್ ಮಾಡುವಾಗ ನಿಮ್ಮ ನೆಚ್ಚಿನ ವಿಜೆಟ್‌ಗಳು ಮತ್ತು ಸ್ಕ್ರೀನ್ ಸೇವರ್‌ಗಳನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಿ."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"ಪ್ರಾರಂಭಿಸೋಣ"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"ಚಾರ್ಜ್ ಮಾಡುವಾಗ ನಿಮ್ಮ ನೆಚ್ಚಿನ ಸ್ಕ್ರೀನ್‌ಸೇವರ್‌ಗಳನ್ನು ತೋರಿಸಿ"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ಬಳಕೆದಾರರನ್ನು ಬದಲಿಸಿ"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ಪುಲ್‌ಡೌನ್ ಮೆನು"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ಈ ಸೆಶನ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ ಆ್ಯಪ್‌ಗಳು ಮತ್ತು ಡೇಟಾವನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ."</string>
@@ -801,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"ಸಂಭಾಷಣೆ ಅಧಿಸೂಚನೆಗಳ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಹಾಗೂ ಲಾಕ್ ಸ್ಕ್ರೀನ್‌ನ ಮೇಲೆ ಪ್ರೊಫೈಲ್ ಚಿತ್ರವಾಗಿ ತೋರಿಸುತ್ತದೆ, ಬಬಲ್‌ನಂತೆ ಗೋಚರಿಸುತ್ತದೆ, ಅಡಚಣೆ ಮಾಡಬೇಡ ಮೋಡ್‌ಗೆ ಅಡ್ಡಿಯುಂಟುಮಾಡುತ್ತದೆ"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"ಆದ್ಯತೆ"</string>
<string name="no_shortcut" msgid="8257177117568230126">"ಸಂವಾದ ಫೀಚರ್‌ಗಳನ್ನು <xliff:g id="APP_NAME">%1$s</xliff:g> ಬೆಂಬಲಿಸುವುದಿಲ್ಲ"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"ವಜಾಗೊಳಿಸಿ"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"ಮತ್ತೊಮ್ಮೆ ತೋರಿಸಬೇಡಿ"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ಈ ಅಧಿಸೂಚನೆಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"ಕರೆ ಅಧಿಸೂಚನೆಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"ಈ ಗುಂಪಿನ ಅಧಿಸೂಚನೆಗಳನ್ನು ಇಲ್ಲಿ ಕಾನ್ಫಿಗರ್‌ ಮಾಡಲಾಗಿರುವುದಿಲ್ಲ"</string>
@@ -915,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"ಕ್ಯಾಲ್ಕ್ಯುಲೇಟರ್"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"ಬೌನ್ಸ್ ಕೀಗಳನ್ನು ಟಾಗಲ್ ಮಾಡಿ"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"ಮೌಸ್ ಕೀಗಳನ್ನು ಟಾಗಲ್ ಮಾಡಿ"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"ಸ್ಟಿಕಿ ಕೀಗಳನ್ನು ಟಾಗಲ್ ಮಾಡಿ"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"ನಿಧಾನ ಕೀಗಳನ್ನು ಟಾಗಲ್ ಮಾಡಿ"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"ಧ್ವನಿ ಆ್ಯಕ್ಸೆಸ್ ಅನ್ನು ಟಾಗಲ್ ಮಾಡಿ"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"ಟಾಗಲ್ TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"ಟಾಗಲ್ ಮ್ಯಾಗ್ನಿಫಿಕೇಶನ್"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"\'ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಆಲಿಸಿ\' ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"ಅಡಚಣೆ ಮಾಡಬೇಡಿ"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"ವಾಲ್ಯೂಮ್ ಬಟನ್‌ಗಳ ಶಾರ್ಟ್‌ಕಟ್‌"</string>
<string name="battery" msgid="769686279459897127">"ಬ್ಯಾಟರಿ"</string>
@@ -1304,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ತೆರೆಯುವುದಕ್ಕಾಗಿ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಅನ್ನು ಬಳಸಿ"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"ದೃಢೀಕರಣದ ಅವಶ್ಯಕತೆಯಿದೆ. ದೃಢೀಕರಿಸಲು ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಸೆನ್ಸರ್ ಅನ್ನು ಸ್ಪರ್ಶಿಸಿ."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಕರೆ"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"ಚಾಲ್ತಿಯಲ್ಲಿದೆ"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"ಮೊಬೈಲ್ ಡೇಟಾ"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"ಕನೆಕ್ಟ್ ಆಗಿದೆ"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"ತಾತ್ಕಾಲಿಕವಾಗಿ ಕನೆಕ್ಟ್ ಮಾಡಲಾಗಿದೆ"</string>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index b4e3c14c93a0..78f87a2cdfa3 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"배터리 잔량을 알 수 없습니다."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>에 연결되었습니다."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g>에 연결됨"</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"연결되지 않았습니다."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"로밍"</string>
<string name="cell_data_off" msgid="4886198950247099526">"사용 안함"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"위젯을 사용하여 앱을 열려면 본인 인증을 해야 합니다. 또한 태블릿이 잠겨 있더라도 누구나 볼 수 있다는 점을 유의해야 합니다. 일부 위젯은 잠금 화면에 적합하지 않고 여기에 추가하기에 안전하지 않을 수 있습니다."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"확인"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"화면 보호기 버튼 표시"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"허브 모드 살펴보기"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"충전하는 동안 즐겨 찾는 위젯과 화면 보호기에 액세스하세요."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"시작"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"사용자 전환"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"풀다운 메뉴"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"대화 알림 상단에 표시, 잠금 화면에 프로필 사진으로 표시, 대화창으로 표시, 방해 금지 모드를 무시함"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"우선순위"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> 앱은 대화 기능을 지원하지 않습니다."</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"닫기"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"다시 표시하지 않음"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"이 알림은 수정할 수 없습니다."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"전화 알림은 수정할 수 없습니다."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"이 알림 그룹은 여기에서 설정할 수 없습니다."</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"계산기"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"지도"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"바운스 키 전환"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"마우스 키 전환"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"고정키 전환"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"느린 키 전환"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"음성 액세스 전환"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"TalkBack 전환"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"확대 전환"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"텍스트 읽어주기 활성화"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"방해 금지 모드"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"볼륨 버튼 단축키"</string>
<string name="battery" msgid="769686279459897127">"배터리"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"지문으로 열기"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"인증이 필요합니다. 지문 센서를 터치하여 인증하세요."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"진행 중인 통화"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"모바일 데이터"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"연결됨"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"일시적으로 연결됨"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"최근 앱 보기 동작을 완료했습니다."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"최근 앱을 보려면 터치패드에서 세 손가락을 사용해 위로 스와이프한 채로 유지하세요."</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"앱 전환"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"네 손가락을 사용해 터치패드에서 오른쪽으로 스와이프하세요."</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"잘하셨습니다"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"앱 전환 동작을 완료했습니다."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"앱을 전환하려면 네 손가락을 사용해 터치패드에서 오른쪽으로 스와이프하세요"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"모든 앱 보기"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"키보드의 작업 키를 누르세요."</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"잘하셨습니다"</string>
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index a3e20a41675a..bdbbf049376a 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Батареянын деңгээли белгисиз."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> менен туташкан."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> менен туташты."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Интернет жок."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Роуминг"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Өчүк"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Колдонмону виджет аркылуу ачуу үчүн өзүңүздү ырасташыңыз керек. Алар кулпуланган планшетиңизде да көрүнүп турат. Кээ бир виджеттерди кулпуланган экранда колдоно албайсыз, андыктан аларды ал жерге кошпой эле койгонуңуз оң."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Түшүндүм"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Көшөгө баскычын көрсөтүү"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Түйүн режимин колдонуп көрүңүз"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Кубатталып жатканда жактырган виджеттериңизди жана көшөгөлөрдү колдонуңуз."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Кеттик!"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Колдонуучуну которуу"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ылдый түшүүчү меню"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Cүйлөшүүлөр тууралуу билдирмелердин жогору жагында жана кулпуланган экранда профилдин сүрөтү, ошондой эле калкып чыкма билдирме түрүндө көрүнүп, \"Тынчымды алба\" режимин токтотот"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Маанилүүлүгү"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосунда оозеки сүйлөшкөнгө болбойт"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Жабуу"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Экинчи көрсөтүлбөсүн"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Бул билдирмелерди өзгөртүүгө болбойт."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Чалуу билдирмелерин өзгөртүүгө болбойт."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Бул билдирмелердин тобун бул жерде конфигурациялоого болбойт"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Жылнаама"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Эсептегич"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Карталар"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Кайтаруу баскычтарын өчүрүү/күйгүзүү"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Чычкандын баскычтарын өчүрүү/күйгүзүү"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Жабышма баскычтарды өчүрүү/күйгүзүү"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Жай баскычтарды өчүрүү/күйгүзүү"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Voice Access\'ти өчүрүү/күйгүзүү"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Talkback функциясын өчүрүү/күйгүзүү"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Чоңойтууну өчүрүү/күйгүзүү"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"\"Басып туруп угуңуз\" функциясын иштетүү"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Тынчымды алба"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Үндү көзөмөлдөөчү баскычтардын кыска жолдору"</string>
<string name="battery" msgid="769686279459897127">"Батарея"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Манжаңыздын изи менен ачыңыз"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Аныктыкты текшерүү талап кылынат. Аныктыгын текшерүү үчүн манжа изинин сенсоруна тийип коюңуз."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Учурдагы чалуу"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Мобилдик трафик"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Туташты"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Убактылуу туташып турат"</string>
@@ -1476,10 +1479,10 @@
<string name="shortcut_helper_keyboard_settings_buttons_label" msgid="6720967595915985259">"Баскычтоп параметрлери"</string>
<string name="shortcut_helper_customize_dialog_set_shortcut_button_label" msgid="4754492225010429382">"Ыкчам баскычты тууралоо"</string>
<string name="shortcut_helper_customize_dialog_remove_button_label" msgid="6546386970440176552">"Өчүрүү"</string>
- <string name="shortcut_helper_customize_dialog_reset_button_label" msgid="7645535254306312685">"Ооба, баштапкы абалга келтирилсин"</string>
+ <string name="shortcut_helper_customize_dialog_reset_button_label" msgid="7645535254306312685">"Ооба"</string>
<string name="shortcut_helper_customize_dialog_cancel_button_label" msgid="5595546460431741178">"Cancel"</string>
<string name="shortcut_helper_add_shortcut_dialog_placeholder" msgid="9154297849458741995">"Баскычты басыңыз"</string>
- <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="3325858369539848162">"Ачкычтардын айкалышы колдонулууда. Башка айкалышты колдонуп көрүңүз."</string>
+ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="3325858369539848162">"Баскычтардын мындай айкалышы бар. Башкасын колдонуп көрүңүз."</string>
<string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Ыкчам баскычты коюу мүмкүн эмес."</string>
<string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string>
<string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Ыкчам баскыч кошуу"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Акыркы колдонмолорду көрүү жаңсоосун аткардыңыз."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Соңку колдонмолорду көрүү үчүн сенсордук тактаны үч манжаңыз менен жогору сүрүп, кармап туруңуз"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Колдонмолорду которуштуруу"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Сенсордук тактаны төрт манжаңыз менен оңго сүрүңүз"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Азаматсыз!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"\"Башка колдонмого которулуу жаңсоосу боюнча үйрөткүчтү бүтүрдүңүз."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Колдонмолорду которуштуруу үчүн сенсордук тактаны төрт манжаңыз менен оңго сүрүңүз"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Бардык колдонмолорду көрүү"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Баскычтобуңуздагы аракет баскычын басыңыз"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Эң жакшы!"</string>
diff --git a/packages/SystemUI/res/values-ldrtl/dimens.xml b/packages/SystemUI/res/values-ldrtl/dimens.xml
index 0d99b617819b..345f0414e637 100644
--- a/packages/SystemUI/res/values-ldrtl/dimens.xml
+++ b/packages/SystemUI/res/values-ldrtl/dimens.xml
@@ -16,5 +16,5 @@
-->
<resources>
<dimen name="media_output_dialog_icon_left_radius">0dp</dimen>
- <dimen name="media_output_dialog_icon_right_radius">28dp</dimen>
+ <dimen name="media_output_dialog_icon_right_radius">@dimen/media_output_dialog_active_background_radius</dimen>
</resources> \ No newline at end of file
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
index eade9f17d175..1acb34a9cccb 100644
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ b/packages/SystemUI/res/values-lo/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"ບໍ່ຮູ້ເປີເຊັນແບັດເຕີຣີ."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"ເຊື່ອມ​ຕໍ່​ຫາ <xliff:g id="BLUETOOTH">%s</xliff:g> ແລ້ວ."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"ເຊື່ອມຕໍ່ຫາ <xliff:g id="CAST">%s</xliff:g> ແລ້ວ."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"ບໍ່ໄດ້ເຊື່ອມຕໍ່."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"ໂຣມມິງ"</string>
<string name="cell_data_off" msgid="4886198950247099526">"ປິດ"</string>
@@ -539,6 +543,8 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"ສຳຫຼວດໂໝດ Hub"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"ເຂົ້າເຖິງວິດເຈັດ ແລະ ພາບພັກໜ້າຈໍທີ່ທ່ານມັກໃນລະຫວ່າງທີ່ສາກ."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"ມາເລີ່ມກັນເລີຍ"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ສະຫຼັບຜູ້ໃຊ້"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ເມນູແບບດຶງລົງ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ແອັບຯ​ແລະ​ຂໍ້​ມູນ​ທັງ​ໝົດ​ໃນ​ເຊດ​ຊັນ​ນີ້​ຈະ​ຖືກ​ລຶບ​ອອກ."</string>
@@ -801,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"ສະແດງຢູ່ເທິງສຸດຂອງການແຈ້ງເຕືອນການສົນທະນາ ແລະ ເປັນຮູບໂປຣໄຟລ໌ຢູ່ໜ້າຈໍລັອກ, ປາກົດເປັນຟອງ, ສະແດງໃນໂໝດຫ້າມລົບກວນໄດ້"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"ສຳຄັນ"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ບໍ່ຮອງຮັບຄຸນສົມບັດການສົນທະນາ"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"ປິດໄວ້"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"ບໍ່ຕ້ອງສະແດງອີກ"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ບໍ່ສາມາດແກ້ໄຂການແຈ້ງເຕືອນເຫຼົ່ານີ້ໄດ້."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"ບໍ່ສາມາດແກ້ໄຂການແຈ້ງເຕືອນການໂທໄດ້."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"ບໍ່ສາມາດຕັ້ງຄ່າກຸ່ມການແຈ້ງເຕືອນນີ້ຢູ່ບ່ອນນີ້ໄດ້"</string>
@@ -915,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"ປະຕິທິນ"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"ຈັກຄິດໄລ່"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"ແຜນທີ່"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"ສະ​ຫຼັບການຍົກເລີກການກົດປຸ່ມຊໍ້າໆ"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"ສະ​ຫຼັບປຸ່ມເມົ້າ"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"ສະ​ຫຼັບປຸ່ມກົດຄ້າງ"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"ສະ​ຫຼັບປຸ່ມຊ້າ"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"ສະ​ຫຼັບການເຂົ້າເຖິງສຽງ"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"ເປີດ/ປິດ TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"ເປີດ/ປິດການຂະຫຍາຍໜ້າຈໍ"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"ເປີດນຳໃຊ້ການເລືອກເພື່ອເວົ້າ"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"ຫ້າມລົບກວນ"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"ທາງລັດປຸ່ມສຽງ"</string>
<string name="battery" msgid="769686279459897127">"ແບັດເຕີຣີ"</string>
@@ -1304,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ໃຊ້ລາຍນິ້ວມືເພື່ອເປີດ"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"ຕ້ອງພິສູດຢືນຢັນ. ແຕະໃສ່ເຊັນເຊີລາຍນິ້ວມືເພື່ອພິສູດຢືນຢັນ."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"ສາຍທີ່ສົນທະນາຢູ່"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"ອິນເຕີເນັດມືຖື"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"ເຊື່ອມຕໍ່ແລ້ວ"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"ເຊື່ອມຕໍ່ແລ້ວຊົ່ວຄາວ"</string>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 77c92d1293c3..dc182c7dea53 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Akumuliatoriaus energija procentais nežinoma."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Prisijungta prie „<xliff:g id="BLUETOOTH">%s</xliff:g>“."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Prisijungta prie <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Išskleisti grupę."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Atidaryti programą."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Neprijungta."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Tarptinklinis ryšys"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Išjungta"</string>
@@ -539,6 +541,7 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Naršymas centro režimu"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Įkraudami pasiekite mėgstamiausius valdiklius ir ekrano užsklandas."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Pirmyn"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Įkraunant rodyti mėgstamiausias ekrano užsklandas"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Perjungti naudotoją"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"išplečiamasis meniu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Bus ištrintos visos šios sesijos programos ir duomenys."</string>
@@ -801,6 +804,8 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Rodoma pokalbių pranešimų viršuje ir kaip profilio nuotrauka užrakinimo ekrane, burbule, pertraukia netrukdymo režimą"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioritetiniai"</string>
<string name="no_shortcut" msgid="8257177117568230126">"Programa „<xliff:g id="APP_NAME">%1$s</xliff:g>“ nepalaiko pokalbių funkcijų"</string>
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
+ <skip />
<string name="notification_inline_dismiss" msgid="88423586921134258">"Uždaryti"</string>
<string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Neberodyti"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Šių pranešimų keisti negalima."</string>
@@ -913,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Kalendorius"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Skaičiuotuvas"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Žemėlapiai"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Perjungti peradresavimo klavišus"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Perjungti pelės klavišus"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Perjungti atmeniuosius klavišus"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Perjungti lėtuosius klavišus"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Perjungti „Voice Access“"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Perjungti „TalkBack“"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Perjungti didinimą"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Suaktyvinti funkciją „Teksto ištarimas“"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Netrukdymo režimas"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Garsumo mygtukų spartusis klavišas"</string>
<string name="battery" msgid="769686279459897127">"Akumuliatorius"</string>
@@ -1302,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Naudokite kontrolinį kodą, kad atidarytumėte"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Reikia nustatyti tapatybę. Nustatykite tapatybę palietę kontrolinio kodo jutiklį."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Vykstantis skambutis"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"Vyksta"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobiliojo ryšio duomenys"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Prisijungta"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Laikinai prijungta"</string>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 244376931b9e..5d7d87a0ac70 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Akumulatora uzlādes līmenis procentos nav zināms."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Ir izveidots savienojum ar <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Savienots ar ierīci <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Savienojums nav izveidots."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Viesabonēšana"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Izslēgti"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Lai atvērtu lietotni, izmantojot logrīku, jums būs jāapstiprina sava identitāte. Turklāt ņemiet vērā, ka ikviens var skatīt logrīkus, pat ja planšetdators ir bloķēts. Iespējams, daži logrīki nav paredzēti izmantošanai bloķēšanas ekrānā, un var nebūt droši tos šeit pievienot."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Labi"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Poga “Rādīt ekrānsaudzētāju”"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Izpētiet centra režīmu"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Piekļūstiet iecienītajiem logrīkiem un ekrānsaudzētājiem uzlādes laikā."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Aiziet!"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Mainīt lietotāju"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"novelkamā izvēlne"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Parādās sarunu paziņojumu augšdaļā un kā profila attēls bloķēšanas ekrānā, arī kā burbulis, pārtrauc režīmu “Netraucēt”."</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioritārs"</string>
<string name="no_shortcut" msgid="8257177117568230126">"Lietotnē <xliff:g id="APP_NAME">%1$s</xliff:g> netiek atbalstītas sarunu funkcijas."</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Nerādīt"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Vairs nerādīt"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Šos paziņojumus nevar modificēt."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Paziņojumus par zvaniem nevar modificēt."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Šeit nevar konfigurēt šo paziņojumu grupu."</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Kalendārs"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Kalkulators"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Kartes"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Pārslēgt atlēcienu taustiņus"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Pārslēgt peles taustiņus"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Pārslēgt taustiņu ķēdi"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Pārslēgt lēnos taustiņus"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Pārslēgt lietotni “Balss piekļuve”"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Pārslēgt funkciju TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Pārslēgt funkciju Palielinājums"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Aktivizēt pakalpojumu “Atlasīt, lai izrunātu”"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Režīms “Netraucēt”"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Skaļuma pogu saīsne"</string>
<string name="battery" msgid="769686279459897127">"Akumulators"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Atvēršanai izmantojiet pirksta nospiedumu"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Nepieciešama autentifikācija. Pieskarieties pirksta nospieduma sensoram, lai veiktu autentificēšanu."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Notiekošs zvans"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobilie dati"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Ir izveidots savienojums"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Īslaicīgi izveidots savienojums"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Jūs sekmīgi veicāt nesen izmantoto lietotņu skatīšanas žestu."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Lai skatītu nesenās lietotnes, skārienpaliktnī ar trīs pirkstiem velciet augšup un turiet"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Pārslēgšanās starp lietotnēm"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Skārienpaliktnī ar četriem pirkstiem velciet pa labi."</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Lieliski!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Jūs sekmīgi veicāt pārslēgšanās starp lietotnēm žestu."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Lai pārslēgtos starp lietotnēm, skārienpaliktnī ar četriem pirkstiem velciet pa labi."</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Skatīt visas lietotnes"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Tastatūrā nospiediet darbību taustiņu."</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Lieliski!"</string>
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index a9aec1666e5a..22b5ff4823bf 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -110,7 +110,7 @@
<string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Се обработува снимка од екран"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Тековно известување за сесија за снимање на екранот"</string>
<string name="screenrecord_permission_dialog_title" msgid="7415261783188749730">"Да се снима екранот?"</string>
- <string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Снимање на една апликација"</string>
+ <string name="screenrecord_permission_dialog_option_text_single_app" msgid="1996450687814647583">"Снимање една апликација"</string>
<string name="screenrecord_permission_dialog_option_text_entire_screen" msgid="4882406311415082016">"Снимај го екранов"</string>
<string name="screenrecord_permission_dialog_option_text_entire_screen_for_display" msgid="4169494703993148253">"Снимај го екранот %s"</string>
<string name="screenrecord_permission_dialog_warning_entire_screen" msgid="1321758636709366068">"Додека го снимате целиот екран, сѐ што е прикажано на екранот се снима. Затоа, бидете внимателни со лозинките, деталите за плаќање, пораките, фотографиите и аудиото и видеото."</string>
@@ -126,7 +126,7 @@
<string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"Се снима екранот"</string>
<string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"Се снима екранот и аудиото"</string>
<string name="screenrecord_taps_label" msgid="1595690528298857649">"Прикажувај допири на екранот"</string>
- <string name="screenrecord_stop_label" msgid="72699670052087989">"Сопри"</string>
+ <string name="screenrecord_stop_label" msgid="72699670052087989">"Сопрете"</string>
<string name="screenrecord_share_label" msgid="5025590804030086930">"Сподели"</string>
<string name="screenrecord_save_title" msgid="1886652605520893850">"Снимката од екранот е зачувана"</string>
<string name="screenrecord_save_text" msgid="3008973099800840163">"Допрете за прегледување"</string>
@@ -145,7 +145,7 @@
<string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Во моментов ја споделувате <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
<string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Во моментов споделувате апликација"</string>
<string name="share_to_app_stop_dialog_message_generic" msgid="7622174291691249392">"Во моментов споделувате со апликација"</string>
- <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Сопри го споделувањето"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Сопрете го споделувањето"</string>
<string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Се емитува екранот"</string>
<string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Да се сопре емитувањето?"</string>
<string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Во моментов го емитувате целиот екран на <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Процентот на батеријата е непознат."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Поврзано со <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Поврзано со <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Не е поврзана"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Роаминг"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Исклучено"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"За да отворите апликација со помош на виџет, ќе треба да потврдите дека сте вие. Покрај тоа, имајте предвид дека секој може да ги гледа виџетите, дури и кога вашиот таблет е заклучен. Некои виџети можеби не се наменети за вашиот заклучен екран, па можеби не е безбедно да се додадат овде."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Сфатив"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Копче за прикажување на штедачот на екран"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Истражете го режимот Hub"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Пристапувајте до омилените виџети и штедачи на екран при полнење."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Ајде"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Промени го корисникот"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"паѓачко мени"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Се прикажува најгоре во известувањата за разговор и како профилна слика на заклучен екран, се појавува како балонче, го прекинува „Не вознемирувај“"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Приоритетно"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не поддржува функции за разговор"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Отфрли"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Не прикажувај повторно"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Овие известувања не може да се изменат"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Известувањата за повици не може да се изменат."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Оваа група известувања не може да се конфигурира тука"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Календар"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Калкулатор"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Карти"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Вклучи/исклучи „Игнорирање на повторено притискање“"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Вклучи/исклучи „Копчиња за глувче“"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Вклучи/исклучи „Лепливи копчиња“"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Вклучи/исклучи „Бавни копчиња“"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Вклучи/исклучи „Пристап со глас“"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Вклучете/исклучете TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Вклучете/исклучете зголемување"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Активирајте ја „Изберете за говор“"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Не вознемирувај"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Кратенка за копчињата за јачина на звук"</string>
<string name="battery" msgid="769686279459897127">"Батерија"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Користете отпечаток за да се отвори"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Потребна е проверка. Допрете го сензорот за отпечаток за да автентицирате."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Тековен повик"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Мобилен интернет"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Поврзано"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Привремено поврзано"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Го завршивте движењето за прегледување на неодамнешните апликации."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Повлечете нагоре со три прста на допирната подлога и задржете за да ги видите неодамнешните апликации"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Сменете ги апликациите"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Повлечете надесно со четири прста на допирната подлога"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Одлично!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Го завршивте движењето за менување апликации."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Повлечете надесно со четири прста на допирната подлога за да ги смените апликациите"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Прегледајте ги сите апликации"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Притиснете го копчето за дејство на тастатурата"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Браво!"</string>
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index 4c444f0d32f7..753b325df6b0 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"ബാറ്ററി ശതമാനം അജ്ഞാതമാണ്."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> എന്നതിലേക്ക് കണക്‌റ്റുചെയ്‌തു."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> എന്നതിലേക്ക് കണക്റ്റുചെയ്തു."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"ഗ്രൂപ്പ് വികസിപ്പിക്കുക."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"ആപ്പ് തുറക്കുക."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"കണക്റ്റുചെയ്‌തിട്ടില്ല."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"റോമിംഗ്"</string>
<string name="cell_data_off" msgid="4886198950247099526">"ഓഫ്"</string>
@@ -539,6 +541,7 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"ഹബ് മോഡ് അടുത്തറിയുക"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"ചാർജ് ചെയ്യുമ്പോൾ നിങ്ങളുടെ പ്രിയപ്പെട്ട വിജറ്റുകളും സ്‌ക്രീൻ സേവറുകളും ആക്‌സസ് ചെയ്യുക."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"തുടങ്ങാം"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"ചാർജ് ചെയ്യുമ്പോൾ നിങ്ങളുടെ പ്രിയപ്പെട്ട സ്ക്രീൻ സേവറുകൾ കാണിക്കുക"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ഉപയോക്താവ് മാറുക"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"പുൾഡൗൺ മെനു"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ഈ സെഷനിലെ എല്ലാ ആപ്പുകളും ഡാറ്റയും ഇല്ലാതാക്കും."</string>
@@ -801,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"സംഭാഷണ അറിയിപ്പുകളുടെ മുകളിലും സ്ക്രീൻ ലോക്കായിരിക്കുമ്പോൾ ഒരു പ്രൊഫൈൽ ചിത്രമായും ബബിൾ രൂപത്തിൽ ദൃശ്യമാകുന്നു, ശല്യപ്പെടുത്തരുത് മോഡ് തടസ്സപ്പെടുത്തുന്നു"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"മുൻഗണന"</string>
<string name="no_shortcut" msgid="8257177117568230126">"സംഭാഷണ ഫീച്ചറുകളെ <xliff:g id="APP_NAME">%1$s</xliff:g> പിന്തുണയ്‌ക്കുന്നില്ല"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"ഡിസ്‌മിസ് ചെയ്യുക"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"വീണ്ടും കാണിക്കരുത്"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ഈ അറിയിപ്പുകൾ പരിഷ്ക്കരിക്കാനാവില്ല."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"കോൾ അറിയിപ്പുകൾ പരിഷ്‌കരിക്കാനാകുന്നില്ല."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"അറിയിപ്പുകളുടെ ഈ ഗ്രൂപ്പ് ഇവിടെ കോണ്‍ഫിഗര്‍ ചെയ്യാൻ കഴിയില്ല"</string>
@@ -915,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"കാൽക്കുലേറ്റർ"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"ബൗൺസ് കീകൾ ടോഗിൾ ചെയ്യുക"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"മൗസ് കീകൾ ടോഗിൾ ചെയ്യുക"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"സ്‌റ്റിക്കി കീകൾ ടോഗിൾ ചെയ്യുക"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"സ്ലോ കീകൾ ടോഗിൾ ചെയ്യുക"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Voice Access ടോഗിൾ ചെയ്യുക"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"TalkBack ടോഗിൾ ചെയ്യുക"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"മാഗ്നിഫിക്കേഷൻ ടോഗിൾ ചെയ്യുക"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"\'വായിച്ചുകേൾക്കാൻ തിരഞ്ഞെടുക്കുക\' സജീവമാക്കുക"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"ശല്യപ്പെടുത്തരുത്"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"വോളിയം ബട്ടൺ കുറുക്കുവഴി"</string>
<string name="battery" msgid="769686279459897127">"ബാറ്ററി"</string>
@@ -1304,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"തുറക്കുന്നതിന് നിങ്ങളുടെ ഫിംഗർപ്രിന്റ് ഉപയോഗിക്കുക"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"പരിശോധിച്ചുറപ്പിക്കേണ്ടതുണ്ട്. പരിശോധിച്ചുറപ്പിക്കാൻ, വിരലടയാള സെൻസറിൽ സ്‌പർശിക്കുക."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"കോളിലാണ്"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"നടന്നുകൊണ്ടിരിക്കുന്നവ"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"മൊബൈൽ ഡാറ്റ"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"കണക്റ്റ് ചെയ്തു"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"താൽക്കാലികമായി കണക്റ്റ് ചെയ്തിരിക്കുന്നു"</string>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index 3666c0d34b7a..9ef7ebd66cb3 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Батарейн хувь тодорхойгүй байна."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>-тай холбогдсон."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g>-д холбогдсон."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Холбогдоогүй."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Роуминг"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Идэвхгүй"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Виджет ашиглан аппыг нээхийн тулд та өөрийгөө мөн болохыг баталгаажуулах шаардлагатай болно. Мөн таны таблет түгжээтэй байсан ч тэдгээрийг дурын хүн үзэж болохыг санаарай. Зарим виджет таны түгжээтэй дэлгэцэд зориулагдаагүй байж магадгүй ба энд нэмэхэд аюултай байж болзошгүй."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Ойлголоо"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Дэлгэц амраагчийг харуулах товч"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Hub горимыг судлах"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Цэнэглэж байхад дуртай виджет, дэлгэц амраагчдаа хандана уу."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"За эхэлцгээе"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Хэрэглэгчийг сэлгэх"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"эвхмэл цэс"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Харилцан ярианы мэдэгдлийн дээд талд болон түгжигдсэн дэлгэц дээр профайл зураг байдлаар харуулах бөгөөд бөмбөлөг хэлбэрээр харагдана. Бүү саад бол горимыг тасалдуулна"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Чухал"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> нь харилцан ярианы онцлогуудыг дэмждэггүй"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Хаах"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Дахиж бүү харуул"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Эдгээр мэдэгдлийг өөрчлөх боломжгүй."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Дуудлагын мэдэгдлийг өөрчлөх боломжгүй."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Энэ бүлэг мэдэгдлийг энд тохируулах боломжгүй байна"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Календарь"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Тооны машин"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Газрын зураг"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Ойх товчийг асаах/унтраах"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Хулганын товчийг асаах/унтраах"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Бэхэлсэн товчийг асаах/унтраах"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Удаан товчийг асаах/унтраах"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Voice Access-г асаах/унтраах"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"TalkBack-г асаах/унтраах"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Томруулахыг асаах/унтраах"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Ярихаар сонгохыг идэвхжүүлэх"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Бүү саад бол"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Дууны түвшний товчлуурын товчлол"</string>
<string name="battery" msgid="769686279459897127">"Батарей"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Нээхийн тулд хурууны хээг ашиглана уу"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Баталгаажуулалт шаардлагатай. Баталгаажуулахын тулд хурууны хээ мэдрэгчид хүрнэ үү."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Үргэлжилж буй дуудлага"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Мобайл дата"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Холбогдсон"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Түр зуур холбогдсон"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Та саяхны аппуудыг харах зангааг гүйцэтгэсэн."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Саяхны аппуудыг харахын тулд мэдрэгч самбар дээрээ гурван хуруугаараа дээш шудраад, удаан дарна уу"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Апп сэлгэх"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Мэдрэгч самбар дээрээ дөрвөн хуруугаараа баруун тийш шударна уу"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Үнэхээр сайн ажиллалаа!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Та апп хооронд сэлгэх зангааг гүйцэтгэлээ."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Апп сэлгэхийн тулд мэдрэгч самбар дээрээ дөрвөн хуруугаараа баруун тийш шударна уу"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Бүх аппыг харах"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Гар дээрх тусгай товчлуурыг дарна уу"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Сайн байна!"</string>
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index 73deadb8cae7..1327a48a1533 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"बॅटरीच्या चार्जिंगची टक्केवारी माहित नाही."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> शी कनेक्‍ट केले."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> शी कनेक्ट केले."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"कनेक्ट केले नाही."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"रोमिंग"</string>
<string name="cell_data_off" msgid="4886198950247099526">"बंद"</string>
@@ -539,6 +543,8 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"हब मोड एक्सप्लोर करा"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"चार्ज करत असताना तुमचे आवडते विजेट आणि स्क्रीन सेव्हर अ‍ॅक्सेस करा."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"चला सुरू करू या"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"वापरकर्ता स्विच करा"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"पुलडाउन मेनू"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"या सत्रातील सर्व अ‍ॅप्स आणि डेटा हटवला जाईल."</string>
@@ -801,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"संभाषण सूचनांच्या वरती आणि लॉक स्क्रीनवरील प्रोफाइल फोटो म्हणून दिसते, बबल म्हणून दिसते, व्यत्यय आणू नका यामध्ये अडथळा आणते"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"प्राधान्य"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> हे संभाषण वैशिष्ट्यांना सपोर्ट करत नाही"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"डिसमिस करा"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"पुन्हा दाखवू नका"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"या सूचनांमध्ये सुधारणा केली जाऊ शकत नाही."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"कॉलशी संबंधित सूचनांमध्ये फेरबदल केला जाऊ शकत नाही."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"या सूचनांचा संच येथे कॉन्फिगर केला जाऊ शकत नाही"</string>
@@ -915,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"कॅलेंडर"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Calculator"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"बाउन्स की टॉगल करा"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"माउस की टॉगल करा"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"स्टिकी की टॉगल करा"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"स्लो की टॉगल करा"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Voice Access टॉगल करा"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Talkback टॉगल करा"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"मॅग्निफिकेशन टॉगल करा"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"बोलण्यासाठी निवडा सुरू करा"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"व्यत्यय आणू नका"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"आवाजाच्या बटणांचा शार्टकट"</string>
<string name="battery" msgid="769686279459897127">"बॅटरी"</string>
@@ -1304,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"उघडण्यासाठी फिंगरप्रिंट वापरा"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"ऑथेंटिकेशन आवश्यक आहे. ऑथेंटिकेट करण्यासाठी फिंगरप्रिंट सेन्सरला स्पर्श करा."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"सुरू असलेला कॉल"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"मोबाइल डेटा"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"कनेक्ट केले आहे"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"तात्पुरते कनेक्ट केलेले"</string>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 77d2d2410878..91901145c731 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Peratusan kuasa bateri tidak diketahui."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Disambungkan kepada <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Disambungkan ke <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Kembangkan kumpulan."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Buka aplikasi."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Tidak disambungkan."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Perayauan"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Mati"</string>
@@ -539,6 +541,7 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Terokai mod hab"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Akses widget dan penyelamat skrin kegemaran anda semasa melakukan pengecasan."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Mari mulakan"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Paparkan penyelamat skrin kegemaran anda semasa pengecasan"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Tukar pengguna"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu tarik turun"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Semua apl dan data dalam sesi ini akan dipadam."</string>
@@ -801,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Ditunjukkan di bahagian atas pemberitahuan perbualan dan sebagai gambar profil pada skrin kunci, muncul sebagai gelembung, mengganggu Jangan Ganggu"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Keutamaan"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak menyokong ciri perbualan"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Ketepikan"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Jangan tunjukkan lagi"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Pemberitahuan ini tidak boleh diubah suai."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Pemberitahuan panggilan tidak boleh diubah suai."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Kumpulan pemberitahuan ini tidak boleh dikonfigurasikan di sini"</string>
@@ -915,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Kalendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Kalkulator"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Togol kekunci lantun"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Togol kekunci tetikus"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Togol kekunci lekit"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Togol kekunci perlahan"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Togol Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Togol Talkback"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Togol Pembesaran"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Aktifkan Pilih untuk Bercakap"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Jangan Ganggu"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Pintasan butang kelantangan"</string>
<string name="battery" msgid="769686279459897127">"Bateri"</string>
@@ -1304,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Gunakan cap jari untuk membuka"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Pengesahan diperlukan. Sentuh penderia cap jari untuk pengesahan."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Panggilan sedang berlangsung"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"Sedang berlangsung"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Data mudah alih"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Disambungkan"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Disambungkan buat sementara waktu"</string>
diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml
index 8f44cb0f88d3..43f545dc4fbe 100644
--- a/packages/SystemUI/res/values-my/strings.xml
+++ b/packages/SystemUI/res/values-my/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"ဘက်ထရီရာခိုင်နှုန်းကို မသိပါ။"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>သို့ ချိတ်ဆက်ထား"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> သို့ချိတ်ဆက်ထားပါသည်။"</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"ချိတ်ဆက်မထားပါ"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"ပြင်ပကွန်ရက်သုံးခြင်း"</string>
<string name="cell_data_off" msgid="4886198950247099526">"ပိတ်"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ဝိဂျက်သုံး၍ အက်ပ်ဖွင့်ရန်အတွက် သင်ဖြစ်ကြောင်း အတည်ပြုရန်လိုသည်။ ထို့ပြင် သင့်တက်ဘလက် လော့ခ်ချထားချိန်၌ပင် မည်သူမဆို ၎င်းတို့ကို ကြည့်နိုင်ကြောင်း သတိပြုပါ။ ဝိဂျက်အချို့ကို လော့ခ်မျက်နှာပြင်အတွက် ရည်ရွယ်ထားခြင်း မရှိသဖြင့် ဤနေရာတွင် ထည့်ပါက မလုံခြုံနိုင်ပါ။"</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"နားလည်ပြီ"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"စခရင်နားချိန်ပုံ ပြရန်ခလုတ်"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"ထိန်းချုပ်စင်တာမုဒ် လေ့လာခြင်း"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"အားသွင်းနေစဉ် အကြိုက်ဆုံးဝိဂျက်များ၊ စခရင်နားချိန်ပုံများ ကြည့်နိုင်သည်။"</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"စကြစို့"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"အသုံးပြုသူကို ပြောင်းလဲရန်"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ဆွဲချမီနူး"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"စကားဝိုင်း အကြောင်းကြားချက်များ၏ ထိပ်ပိုင်းနှင့် ပရိုဖိုင်ပုံအဖြစ် လော့ခ်မျက်နှာပြင်တွင် ပြသည်။ ပူဖောင်းကွက်အဖြစ် မြင်ရပြီး ‘မနှောင့်ယှက်ရ’ ကို ကြားဖြတ်သည်"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"ဦးစားပေး"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> က စကားဝိုင်းဝန်ဆောင်မှုများကို မပံ့ပိုးပါ"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"ပယ်ရန်"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"ထပ်မပြပါနှင့်"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ဤအကြောင်းကြားချက်များကို ပြုပြင်၍ မရပါ။"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"ခေါ်ဆိုမှုအကြောင်းကြားချက်များကို ပြင်၍မရပါ။"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"ဤအကြောင်းကြားချက်အုပ်စုကို ဤနေရာတွင် စီစဉ်သတ်မှတ်၍ မရပါ"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"ပြက္ခဒိန်"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"ဂဏန်းတွက်စက်"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"ကြိမ်ထပ်နှိပ်ခြင်းများ ပြောင်းရန်"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"မောက်စ်ကီးများ ပြောင်းရန်"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"ကပ်ခွာကီးများ ပြောင်းရန်"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"အနှေးကီးများ ပြောင်းရန်"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"အသံဖြင့်ထိန်းချုပ်ခြင်း ပြောင်းရန်"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Talkback ခလုတ်"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"ချဲ့ခြင်း ခလုတ်"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"စကားပြော ရွေးခြင်းကို စတင်ရန်"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"မနှောင့်ယှက်ရ"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"အသံထိန်းချုပ်သည့်ခလုတ် ဖြတ်လမ်း"</string>
<string name="battery" msgid="769686279459897127">"ဘက်ထရီ"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ဖွင့်ရန် လက်ဗွေကို သုံးပါ"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"အထောက်အထားစိစစ်ခြင်း လိုအပ်သည်။ အထောက်အထားစိစစ်ရန် လက်ဗွေ အာရုံခံကိရိယာကို ထိပါ။"</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"လက်ရှိခေါ်ဆိုမှု"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"မိုဘိုင်းဒေတာ"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"ချိတ်ဆက်ထားသည်"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"ယာယီချိတ်ဆက်ထားသည်"</string>
@@ -1448,8 +1451,7 @@
<string name="shortcut_helper_category_system_apps" msgid="6001757545472556810">"စနစ် အက်ပ်များ"</string>
<string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"တစ်ပြိုင်နက် များစွာလုပ်ခြင်း"</string>
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"မျက်နှာပြင် ခွဲ၍ပြသခြင်း"</string>
- <!-- no translation found for shortcutHelper_category_accessibility (8068337792277570938) -->
- <skip />
+ <string name="shortcutHelper_category_accessibility" msgid="8068337792277570938">"အများသုံးနိုင်မှု"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"ထည့်သွင်းမှု"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"အက်ပ်ဖြတ်လမ်းလင့်ခ်များ"</string>
<string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"လက်ရှိအက်ပ်"</string>
@@ -1513,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"မကြာသေးမီကအက်ပ်များကို ကြည့်ခြင်းလက်ဟန် သင်ခန်းစာပြီးပါပြီ။"</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"လတ်တလောအက်ပ်များကြည့်ရန် တာ့ချ်ပက်တွင် လက်သုံးချောင်းဖြင့် အပေါ်သို့ပွတ်ဆွဲပြီး ဖိထားပါ"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"အက်ပ်များကူးပြောင်းခြင်း"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"တာ့ချ်ပက်တွင် လက်လေးချောင်းဖြင့် ညာပွတ်ဆွဲပါ"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"တော်ပါပေသည်။"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"အက်ပ်ပြောင်းလက်ဟန် လုပ်ပြီးပါပြီ။"</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"အက်ပ်များကူးပြောင်းရန် တာ့ချ်ပက်တွင် လက်လေးချောင်းဖြင့် ညာပွတ်ဆွဲပါ"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"အက်ပ်အားလုံးကို ကြည့်ခြင်း"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"ကီးဘုတ်တွင် လုပ်ဆောင်ချက်ကီး နှိပ်ပါ"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"အလွန်ကောင်းပါသည်။"</string>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index a2647728c94c..cc0574cc78ff 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Batteriprosenten er ukjent."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Koblet til <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Koblet til <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Ikke tilkoblet."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Av"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"For å åpne en app ved hjelp av en modul må du bekrefte at det er deg. Husk også at hvem som helst kan se dem, selv om nettbrettet er låst. Noen moduler er kanskje ikke laget for å være på låseskjermen og kan være utrygge å legge til der."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Greit"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Knapp for å vise skjermspareren"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Utforsk Hub-modus"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Bruk moduler og skjermsparere mens du lader."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Sett i gang"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Bytt bruker"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rullegardinmeny"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Vises øverst på samtalevarsler og som et profilbilde på låseskjermen, vises som en boble, avbryter «Ikke forstyrr»"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioritet"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> støtter ikke samtalefunksjoner"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Lukk"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ikke vis igjen"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Disse varslene kan ikke endres."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Anropsvarsler kan ikke endres."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Denne varselgruppen kan ikke konfigureres her"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Kalender"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Kalkulator"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Slå filtertaster av eller på"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Slå musetaster av eller på"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Slå trege taster av eller på"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Slå hengende taster av eller på"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Slå taletilgang av eller på"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Slå TalkBack av/på"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Slå forstørrelse av/på"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Aktiver tekstopplesing"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Ikke forstyrr"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Hurtigtast for volumknappene"</string>
<string name="battery" msgid="769686279459897127">"Batteri"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Bruk fingeravtrykk for å åpne"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Autentisering kreves. Trykk på fingeravtrykkssensoren for å autentisere."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Aktiv samtale"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobildata"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Tilkoblet"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Koblet til midlertidig"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Du har fullført bevegelsen for å se nylige apper."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"For å se nylige apper, sveip opp og hold med tre fingre på styreflaten"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Bytt app"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Sveip til høyre med fire fingre på styreflaten"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Bra jobbet!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Du har fullført bytt-app-bevegelsen."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Sveip til høyre med fire fingre på styreflaten for å bytte app"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Se alle apper"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Trykk på handlingstasten på tastaturet"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Bra!"</string>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index ad7ffce27e26..cb0db8db416e 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"ब्याट्रीमा कति प्रतिशत चार्ज छ भन्ने कुराको जानाकरी छैन।"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> मा जडित।"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> मा कनेक्ट गरियो।"</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"जडान नगरिएको।"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"रोमिङ"</string>
<string name="cell_data_off" msgid="4886198950247099526">"निष्क्रिय पार्नु"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"विजेट प्रयोग गरी एप खोल्न तपाईंले आफ्नो पहिचान पुष्टि गर्नु पर्ने हुन्छ। साथै, तपाईंको ट्याब्लेट लक भएका बेला पनि सबै जनाले तिनलाई देख्न सक्छन् भन्ने कुरा ख्याल गर्नुहोस्। केही विजेटहरू लक स्क्रिनमा प्रयोग गर्ने उद्देश्यले नबनाइएका हुन सक्छन् र तिनलाई यहाँ हाल्नु सुरक्षित नहुन सक्छ।"</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"बुझेँ"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"स्क्रिनसेभर देखाउने बटन"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"हब मोडको अन्वेषण गर्नुहोस्"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"चार्ज गर्दै गर्दा आफूलाई मन पर्ने विजेट तथा स्क्रिन सेभर एक्सेस गर्नुहोस्।"</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"सुरु गरौँ"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"प्रयोगकर्ता फेर्नुहोस्"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"पुलडाउन मेनु"</string>
@@ -599,7 +602,7 @@
<string name="notification_history_button_description" msgid="1578657591405033383">"नोटिफिकेसनसम्बन्धी हिस्ट्री"</string>
<string name="notification_section_header_incoming" msgid="850925217908095197">"नयाँ"</string>
<string name="notification_section_header_gentle" msgid="6804099527336337197">"साइलेन्ट"</string>
- <string name="notification_section_header_alerting" msgid="5581175033680477651">"सूचनाहरू"</string>
+ <string name="notification_section_header_alerting" msgid="5581175033680477651">"नोटिफिकेसनहरू"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"वार्तालापहरू"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"सबै मौन सूचनाहरू हटाउनुहोस्"</string>
<string name="accessibility_notification_section_header_open_settings" msgid="6235202417954844004">"नोटिफिकेसन सेटिङ खोल्नुहोस्"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"यो वार्तालापका सूचनाहरूको सिरानमा, बबलका रूपमा र लक स्क्रिनमा प्रोफाइल फोटोका रूपमा देखिन्छ। साथै, यसले गर्दा \'बाधा नपुऱ्याउनुहोस्\' नामक सुविधामा अवरोध आउँछ"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"प्राथमिकता"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> मा वार्तालापसम्बन्धी सुविधा प्रयोग गर्न मिल्दैन"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"हटाउनुहोस्"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"फेरि नदेखाउनुहोस्"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"यी सूचनाहरू परिमार्जन गर्न मिल्दैन।"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"कलसम्बन्धी सूचनाहरू परिमार्जन गर्न मिल्दैन।"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"यहाँबाट सूचनाहरूको यो समूह कन्फिगर गर्न सकिँदैन"</string>
@@ -862,7 +865,7 @@
<string name="keyboard_shortcut_group_system_home" msgid="7465138628692109907">"गृह"</string>
<string name="keyboard_shortcut_group_system_recents" msgid="8628108256824616927">"हालैका"</string>
<string name="keyboard_shortcut_group_system_back" msgid="1055709713218453863">"पछाडि"</string>
- <string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"सूचनाहरू"</string>
+ <string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"नोटिफिकेसनहरू"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"किबोर्ड सर्टकटहरू"</string>
<string name="keyboard_shortcut_join" msgid="3578314570034512676">"वा"</string>
<string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"किवर्ड हटाउनुहोस्"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"पात्रो"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"क्याल्कुलेटर"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"नक्सा"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"बाउन्स कीहरू टगल गर्नुहोस्"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"माउस कीहरू टगल गर्नुहोस्"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"स्टिकी कीहरू टगल गर्नुहोस्"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"स्लो कीहरू टगल गर्नुहोस्"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Voice Access टगल गर्नुहोस्"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"TalkBack टगल गर्नुहोस्"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"जुम इन गर्ने सुविधा टगल गर्नुहोस्"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"सेलेक्ट टु स्पिक एक्टिभेट गर्नुहोस्"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"बाधा नपुऱ्याउनुहोस्"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"भोल्युम बटनका सर्टकट"</string>
<string name="battery" msgid="769686279459897127">"ब्याट्री"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"फिंगरप्रिन्ट प्रयोग गरी खोल्नुहोस्"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"पुष्टि गर्नु पर्ने हुन्छ। पुष्टि गर्न फिंगरप्रिन्ट सेन्सर छुनुहोस्।"</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"कल भइरहेको"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"मोबाइल डेटा"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"इन्टरनेटमा कनेक्ट गरिएको छ"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"यसमा केही समयका लागि कनेक्ट गरिएको हो"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"तपाईंले जेस्चर प्रयोग गरी हालसालै चलाइएका एपहरू हेर्ने तरिका सिक्नुभएको छ।"</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"हालसालैका एपहरू हेर्न तीन औँला प्रयोग गरी टचप्याडमा माथितिर स्वाइप गर्नुहोस् र होल्ड गर्नुहोस्"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"एपहरू बदल्नुहोस्"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"चार वटा औँला प्रयोग गरी टचप्याडमा दायाँतिर स्वाइप गर्नुहोस्"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"अद्भुत!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"तपाईंले एपहरू बदल्ने जेस्चर प्रयोग गर्ने तरिका सिक्नुभयो।"</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"एपहरू अदलबदल गर्न चार वटा औँला प्रयोग गरी टचप्याडमा दायाँतिर स्वाइप गर्नुहोस्"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"सबै एपहरू हेर्नुहोस्"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"आफ्नो किबोर्डमा भएको एक्सन की थिच्नुहोस्"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"स्याबास!"</string>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index b9b025ad619e..26b88a951632 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Batterijpercentage onbekend."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Verbonden met <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Verbonden met <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Groep uitvouwen."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"App openen."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Niet verbonden."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Uit"</string>
@@ -539,6 +541,7 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Hub-modus verkennen"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Krijg toegang tot je favoriete widgets en screensavers terwijl je apparaat wordt opgeladen."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Aan de slag"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Je favoriete screensavers tonen tijdens het opladen"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Gebruiker wijzigen"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pull-downmenu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Alle apps en gegevens in deze sessie worden verwijderd."</string>
@@ -801,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Wordt getoond bovenaan gespreksmeldingen en als profielfoto op het vergrendelscherm, verschijnt als bubbel, onderbreekt Niet storen"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioriteit"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ondersteunt geen gespreksfuncties"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Sluiten"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Niet meer tonen"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Deze meldingen kunnen niet worden aangepast."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Gespreksmeldingen kunnen niet worden aangepast."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Deze groep meldingen kan hier niet worden ingesteld"</string>
@@ -915,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Agenda"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Rekenmachine"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Stuitertoetsen aan-/uitzetten"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Muistoetsen aan-/uitzetten"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Plaktoetsen aan-/uitzetten"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Langzame toetsen aan-/uitzetten"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Spraaktoegang aan-/uitzetten"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"TalkBack aan-/uitzetten"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Vergroting aan-/uitzetten"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"\'Selecteer om voor te lezen\' activeren"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Niet storen"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Volumeknoppen als sneltoets"</string>
<string name="battery" msgid="769686279459897127">"Batterij"</string>
@@ -1304,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Gebruik vingerafdruk om te openen"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Verificatie vereist. Raak de vingerafdruksensor aan om de verificatie uit te voeren."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Actief gesprek"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"Actief"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobiele data"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Verbonden"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Tijdelijk verbonden"</string>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index c0081dec369d..768ab7acc026 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"ବ୍ୟାଟେରୀ ଶତକଡ଼ା ଅଜଣା ଅଟେ।"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> ସହ ସଂଯୁକ୍ତ"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> ସହିତ ସଂଯୁକ୍ତ।"</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"କନେକ୍ଟ ହୋଇନାହିଁ।"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"ରୋମିଙ୍ଗ"</string>
<string name="cell_data_off" msgid="4886198950247099526">"ବନ୍ଦ ଅଛି"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ଏକ ୱିଜେଟ ବ୍ୟବହାର କରି ଗୋଟିଏ ଆପ ଖୋଲିବା ପାଇଁ ଏହା ଆପଣ ଅଟନ୍ତି ବୋଲି ଆପଣଙ୍କୁ ଯାଞ୍ଚ କରିବାକୁ ହେବ। ଆହୁରି ମଧ୍ୟ, ଆପଣଙ୍କ ଟାବଲେଟ ଲକ ଥିଲେ ମଧ୍ୟ ଯେ କୌଣସି ବ୍ୟକ୍ତି ଏହାକୁ ଭ୍ୟୁ କରିପାରିବେ ବୋଲି ମନେ ରଖନ୍ତୁ। କିଛି ୱିଜେଟ ଆପଣଙ୍କ ଲକ ସ୍କ୍ରିନ ପାଇଁ ଉଦ୍ଦିଷ୍ଟ ହୋଇନଥାଇପାରେ ଏବଂ ଏଠାରେ ଯୋଗ କରିବା ଅସୁରକ୍ଷିତ ହୋଇପାରେ।"</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"ବୁଝିଗଲି"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"ସ୍କ୍ରିନସେଭର ବଟନ ଦେଖାନ୍ତୁ"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"ହବ ମୋଡକୁ ଏକ୍ସପ୍ଲୋର କରନ୍ତୁ"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"ଚାର୍ଜ କରିବା ସମୟରେ ଆପଣଙ୍କ ପସନ୍ଦର ୱିଜେଟ ଏବଂ ସ୍କ୍ରିନ ସେଭରଗୁଡ଼ିକୁ ଆକ୍ସେସ କରନ୍ତୁ।"</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"ଚାଲନ୍ତୁ ଆରମ୍ଭ କରିବା"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ୟୁଜର୍‍ ବଦଳାନ୍ତୁ"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ପୁଲଡାଉନ ମେନୁ"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"ବାର୍ତ୍ତାଳାପ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକର ଶୀର୍ଷରେ ଏବଂ ଲକ୍ ସ୍କ୍ରିନରେ ଏକ ପ୍ରୋଫାଇଲ୍ ଛବି ଭାବେ ଦେଖାଏ, ଏକ ବବଲ୍ ଭାବେ ଦେଖାଯାଏ, \'ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\'କୁ ବାଧା ଦିଏ"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"ପ୍ରାଥମିକତା"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ବାର୍ତ୍ତାଳାପ ଫିଚରଗୁଡ଼ିକୁ ସମର୍ଥନ କରେ ନାହିଁ"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"ଖାରଜ କରନ୍ତୁ"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"ପୁଣି ଶୋ କରନ୍ତୁ ନାହିଁ"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ଏହି ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ପରିବର୍ତ୍ତନ କରିହେବ ନାହିଁ।"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"କଲ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ପରିବର୍ତ୍ତନ କରାଯାଇପାରିବ ନାହିଁ।"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"ଏଠାରେ ଏହି ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକର ଗ୍ରୁପ୍ କନଫ୍ୟୁଗର୍ କରାଯାଇପାରିବ ନାହିଁ"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"କାଲକୁଲେଟର"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"ବାଉନ୍ସ କୀ ଟୋଗଲ କରନ୍ତୁ"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"ମାଉସ କୀ ଟୋଗଲ କରନ୍ତୁ"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"ଷ୍ଟିକି କୀ ଟୋଗଲ କରନ୍ତୁ"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"ଧିର କୀ ଟୋଗଲ କରନ୍ତୁ"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Voice Access ଟୋଗଲ କରନ୍ତୁ"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"TalkBack ଟୋଗଲ କରନ୍ତୁ"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"ମେଗ୍ନିଫିକେସନ ଟୋଗଲ କରନ୍ତୁ"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"ସିଲେକ୍ଟ ଟୁ ସ୍ପିକକୁ ସକ୍ରିୟ କରନ୍ତୁ"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"ଭଲ୍ୟୁମ ବଟନ୍‍ ଶର୍ଟକଟ୍‍"</string>
<string name="battery" msgid="769686279459897127">"ବେଟେରୀ"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ଖୋଲିବାକୁ ଟିପଚିହ୍ନ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"ପ୍ରମାଣୀକରଣ ଆବଶ୍ୟକ। ପ୍ରମାଣୀକରଣ କରିବାକୁ ଟିପଚିହ୍ନ ସେନ୍ସରକୁ ସ୍ପର୍ଶ କରନ୍ତୁ।"</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"ଚାଲିଥିବା କଲ"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"ମୋବାଇଲ ଡାଟା"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"ସଂଯୋଗ କରାଯାଇଛି"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"ଅସ୍ଥାୟୀ ରୂପେ କନେକ୍ଟ କରାଯାଇଛି"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"ଆପଣ ବର୍ତ୍ତମାନର ଆପ୍ସ ଜେଶ୍ଚରକୁ ଭ୍ୟୁ କରିବା ସମ୍ପୂର୍ଣ୍ଣ କରିଛନ୍ତି।"</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"ବର୍ତ୍ତମାନର ଆପ୍ସ ଭ୍ୟୁ କରିବାକୁ, ଆପଣଙ୍କ ଟଚପେଡରେ ତିନୋଟି ଆଙ୍ଗୁଠି ବ୍ୟବହାର କରି ଉପରକୁ ସ୍ୱାଇପ କରି ଧରି ରଖନ୍ତୁ"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"ଆପ୍ସକୁ ସୁଇଚ କରନ୍ତୁ"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"ଆପଣଙ୍କ ଟଚପେଡରେ ଚାରି ଆଙ୍ଗୁଠି ବ୍ୟବହାର କରି ଡାହାଣକୁ ସ୍ୱାଇପ କରନ୍ତୁ"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"ବଢ଼ିଆ କାମ!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"ଆପଣ ସୁଇଚ ଆପ୍ସ ଜେଶ୍ଚର ସମ୍ପୂର୍ଣ୍ଣ କରିଛନ୍ତି।"</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"ଆପ୍ସକୁ ସୁଇଚ କରିବାକୁ ଆପଣଙ୍କ ଟଚପେଡରେ ଚାରି ଆଙ୍ଗୁଠି ବ୍ୟବହାର କରି ଡାହାଣକୁ ସ୍ୱାଇପ କରନ୍ତୁ"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"ସବୁ ଆପ ଭ୍ୟୁ କରନ୍ତୁ"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"ଆପଣଙ୍କର କୀବୋର୍ଡରେ ଆକ୍ସନ କୀ\'କୁ ଦବାନ୍ତୁ"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"ବହୁତ ବଢ଼ିଆ!"</string>
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index 23a94b00aece..a61ea1a37a7f 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"ਬੈਟਰੀ ਪ੍ਰਤੀਸ਼ਤ ਅਗਿਆਤ ਹੈ।"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ।"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ ਗਿਆ।"</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"ਗਰੁੱਪ ਦਾ ਵਿਸਤਾਰ ਕਰੋ।"</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"ਐਪਲੀਕੇਸ਼ਨ ਖੋਲ੍ਹੋ।"</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ।"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"ਰੋਮਿੰਗ"</string>
<string name="cell_data_off" msgid="4886198950247099526">"ਬੰਦ"</string>
@@ -539,6 +541,7 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"ਹੱਬ ਮੋਡ ਦੀ ਪੜਚੋਲ ਕਰੋ"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"ਚਾਰਜ ਕਰਨ ਵੇਲੇ ਆਪਣੇ ਮਨਪਸੰਦ ਵਿਜੇਟਾਂ ਅਤੇ ਸਕ੍ਰੀਨ ਸੇਵਰਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰੋ।"</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"ਚਲੋ ਸ਼ੁਰੂ ਕਰੀਏ"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"ਚਾਰਜ ਕਰਦੇ ਸਮੇਂ ਆਪਣੇ ਮਨਪਸੰਦ ਸਕ੍ਰੀਨ-ਸੇਵਰ ਦਿਖਾਓ"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ਵਰਤੋਂਕਾਰ ਸਵਿੱਚ ਕਰੋ"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ਪੁੱਲਡਾਊਨ ਮੀਨੂ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ਇਸ ਸੈਸ਼ਨ ਵਿਚਲੀਆਂ ਸਾਰੀਆਂ ਐਪਾਂ ਅਤੇ ਡਾਟੇ ਨੂੰ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ।"</string>
@@ -801,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"ਗੱਲਬਾਤ ਸੂਚਨਾਵਾਂ ਦੇ ਸਿਖਰ \'ਤੇ ਅਤੇ ਲਾਕ ਸਕ੍ਰੀਨ \'ਤੇ ਪ੍ਰੋਫਾਈਲ ਤਸਵੀਰ ਵਜੋਂ ਦਿਖਾਈਆਂ ਜਾਂਦੀਆਂ ਹਨ, ਜੋ ਕਿ ਬਬਲ ਵਜੋਂ ਦਿਸਦੀਆਂ ਹਨ ਅਤੇ \'ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ\' ਸੁਵਿਧਾ ਵਿੱਚ ਵਿਘਨ ਵੀ ਪਾ ਸਕਦੀਆਂ ਹਨ"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"ਤਰਜੀਹ"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਐਪ ਗੱਲਬਾਤ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੀ"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"ਖਾਰਜ ਕਰੋ"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"ਦੁਬਾਰਾ ਨਾ ਦਿਖਾਓ"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ਇਹਨਾਂ ਸੂਚਨਾਵਾਂ ਨੂੰ ਸੋਧਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ।"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"ਕਾਲ ਸੰਬੰਧੀ ਸੂਚਨਾਵਾਂ ਨੂੰ ਸੋਧਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ।"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"ਇਹ ਸੂਚਨਾਵਾਂ ਦਾ ਗਰੁੱਪ ਇੱਥੇ ਸੰਰੂਪਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
@@ -915,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Calculator"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"ਨਕਸ਼ੇ"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"ਬਾਊਂਸ ਕੁੰਜੀਆਂ ਨੂੰ ਟੌਗਲ ਕਰੋ"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"ਮਾਊਸ ਕੁੰਜੀਆਂ ਨੂੰ ਟੌਗਲ ਕਰੋ"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"ਸਥਿਰ ਕੁੰਜੀਆਂ ਨੂੰ ਟੌਗਲ ਕਰੋ"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"ਧੀਮੀਆਂ ਕੁੰਜੀਆਂ ਨੂੰ ਟੌਗਲ ਕਰੋ"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Voice Access ਨੂੰ ਟੌਗਲ ਕਰੋ"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"TalkBack ਨੂੰ ਟੌਗਲ ਕਰੋ"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"ਵੱਡਦਰਸ਼ੀਕਰਨ ਨੂੰ ਟੌਗਲ ਕਰੋ"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"\'ਚੁਣੋ ਅਤੇ ਸੁਣੋ\' ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਕਰੋ"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"ਵੌਲਿਊਮ ਬਟਨ ਸ਼ਾਰਟਕੱਟ"</string>
<string name="battery" msgid="769686279459897127">"ਬੈਟਰੀ"</string>
@@ -1304,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ਖੋਲ੍ਹਣ ਲਈ ਫਿੰਗਰਪ੍ਰਿੰਟ ਵਰਤੋ"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"ਪ੍ਰਮਾਣੀਕਰਨ ਲੋੜੀਂਦਾ ਹੈ। ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਫਿੰਗਰਪ੍ਰਿੰਟ ਸੈਂਸਰ ਨੂੰ ਸਪਰਸ਼ ਕਰੋ।"</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"ਜਾਰੀ ਕਾਲ"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"ਜਾਰੀ"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"ਮੋਬਾਈਲ ਡਾਟਾ"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"ਕਨੈਕਟ ਹੈ"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"ਕੁਝ ਸਮੇਂ ਲਈ ਕਨੈਕਟ ਹੈ"</string>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index fd41419a5fea..2e2a3b4623c0 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Poziom naładowania baterii jest nieznany."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Połączono z <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Połączono z urządzeniem <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Nie połączono."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Wył."</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Aby otworzyć aplikację za pomocą widżetu, musisz potwierdzić swoją tożsamość. Pamiętaj też, że każdy będzie mógł wyświetlić widżety nawet wtedy, gdy tablet będzie zablokowany. Niektóre widżety mogą nie być przeznaczone do umieszczenia na ekranie blokady i ich dodanie w tym miejscu może być niebezpieczne."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Przycisk Pokaż wygaszacz ekranu"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Odkryj tryb centrali"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Podczas ładowania możesz korzystać z ulubionych widżetów i wygaszaczy ekranu."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Do dzieła"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Przełącz użytkownika"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Wyświetla się u góry powiadomień w rozmowach oraz jako zdjęcie profilowe na ekranie blokady, jako dymek, przerywa działanie trybu Nie przeszkadzać"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Priorytetowe"</string>
<string name="no_shortcut" msgid="8257177117568230126">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> nie obsługuje funkcji rozmów"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Zamknij"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Nie pokazuj ponownie"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Tych powiadomień nie można zmodyfikować."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Powiadomień o połączeniach nie można modyfikować."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Tej grupy powiadomień nie można tu skonfigurować"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Kalendarz"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Kalkulator"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Mapy"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Przełącz ustawienie klawiszy z filtrem powtórzeń"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Przełącz ustawienie klawiszy myszy"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Przełącz ustawienie klawiszy trwałych"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Przełącz ustawienie klawiszy powolnych"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Przełącz ustawienie aplikacji Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Przełącz TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Przełącz powiększenie"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Włącz funkcję Przeczytaj na głos"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Nie przeszkadzać"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Wł./wył. przyciskami głośności"</string>
<string name="battery" msgid="769686279459897127">"Bateria"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"By otworzyć, użyj odcisku palca"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Wymagane uwierzytelnienie. Dotknij czytnika liniii papilarnych, by uwierzytelnić."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Trwa rozmowa"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobilna transmisja danych"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Połączono"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Tymczasowe połączenie"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Znasz już gest wyświetlania ostatnio używanych aplikacji."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Aby wyświetlić ostatnie aplikacje, przesuń 3 palcami w górę na touchpadzie i przytrzymaj"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Przełączanie aplikacji"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Przesuń 4 palcami w prawo po touchpadzie"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Brawo!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Gest do przełączania aplikacji został opanowany."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Aby przełączać aplikacje, przesuwaj 4 palcami w prawo po touchpadzie"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Wyświetl wszystkie aplikacje"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Naciśnij klawisz działania na klawiaturze"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Brawo!"</string>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index b31296d14ec1..abba6885838b 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Porcentagem da bateria desconhecida."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Conectado a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Conectado a <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Expandir grupo."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Abrir aplicativo."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Sem conexão."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Desativados"</string>
@@ -536,12 +538,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Para abrir um app usando um widget, você precisa confirmar sua identidade. E não se esqueça que qualquer pessoa pode ver os widgets, mesmo com o tablet bloqueado. Além disso, alguns apps não foram criados para a tela de bloqueio, é melhor manter a segurança."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Entendi"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Botão \"Mostrar protetor de tela\""</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
- <skip />
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Conheça o modo Hub"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Acesse seus widgets e protetores de tela favoritos durante o carregamento."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Vamos lá"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Mostre seus protetores de tela favoritos durante o carregamento"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Trocar usuário"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu suspenso"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Todos os apps e dados nesta sessão serão excluídos."</string>
@@ -804,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Aparecem na parte superior das notificações de conversa, como uma foto do perfil na tela de bloqueio e como um balão. Interrompem o Não perturbe."</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioritárias"</string>
<string name="no_shortcut" msgid="8257177117568230126">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> não é compatível com recursos de conversa"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Dispensar"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Não mostrar novamente"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Não é possível modificar essas notificações."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Não é possível modificar as notificações de chamada."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Não é possível configurar esse grupo de notificações aqui"</string>
@@ -918,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Agenda"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Calculadora"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Mapas"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Alternar teclas de filtragem"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Alternar teclas do mouse"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Alternar teclas de aderência"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Alternar teclas lentas"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Alternar Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Alternar TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Alternar ampliação"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Ativar Selecionar para ouvir"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Não perturbe"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Atalho de botões de volume"</string>
<string name="battery" msgid="769686279459897127">"Bateria"</string>
@@ -1307,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Use a impressão digital para abrir"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Autenticação obrigatória. Toque no sensor de impressão digital para autenticar."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Chamada em andamento"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"Em andamento"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Dados móveis"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Conectado"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Temporariamente conectado"</string>
@@ -1512,12 +1511,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Você concluiu o gesto para ver os apps recentes."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Se quiser ver os apps recentes, deslize para cima e pressione o touchpad com três dedos"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Mudar de app"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Deslize para a direita com quatro dedos no touchpad"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Muito bem!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Você concluiu o gesto para mudar de app."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Deslize para a direita com quatro dedos no touchpad para mudar de app"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Ver todos os apps"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Pressione a tecla de ação no teclado"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Muito bem!"</string>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 9187391a15d6..833714c95e41 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Percentagem da bateria desconhecida."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Ligado a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Ligado a <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Expanda o grupo."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Abra a aplicação."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Sem ligação."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Desativado"</string>
@@ -539,6 +541,7 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Explore o modo Hub"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Aceda aos seus widgets e proteções de ecrã favoritos durante o carregamento."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Começar"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Mostre as suas proteções de ecrã favoritas durante o carregamento"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Mudar utilizador"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu pendente"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Todas as apps e dados desta sessão serão eliminados."</string>
@@ -801,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Aparece na parte superior das notificações de conversas e como uma imagem do perfil no ecrã de bloqueio, surge como um balão, interrompe o modo Não incomodar"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioridade"</string>
<string name="no_shortcut" msgid="8257177117568230126">"A app <xliff:g id="APP_NAME">%1$s</xliff:g> não suporta funcionalidades de conversa."</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Ignorar"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Não mostrar novamente"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Não é possível modificar estas notificações."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Não é possível modificar as notificações de chamadas."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Não é possível configurar este grupo de notificações aqui."</string>
@@ -915,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendário"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Calculadora"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Ativar/desativar a funcionalidade evitar pressão repetida"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Ativar/desativar teclas do rato"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Ativar/desativar teclas aderentes"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Ativar/desativar teclas lentas"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Ativar/desativar Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Ativar/desativar TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Ativar/desativar ampliação"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Ativar Selecionar para falar"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Não incomodar"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Atalho dos botões de volume"</string>
<string name="battery" msgid="769686279459897127">"Bateria"</string>
@@ -1304,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Utilize a impressão digital para abrir"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Autenticação necessária. Toque no sensor de impressões digitais para autenticar."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Chamada em curso"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"Em curso"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Dados móveis"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Ligado"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Ligado temporariamente"</string>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index b31296d14ec1..abba6885838b 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Porcentagem da bateria desconhecida."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Conectado a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Conectado a <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Expandir grupo."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Abrir aplicativo."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Sem conexão."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Desativados"</string>
@@ -536,12 +538,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Para abrir um app usando um widget, você precisa confirmar sua identidade. E não se esqueça que qualquer pessoa pode ver os widgets, mesmo com o tablet bloqueado. Além disso, alguns apps não foram criados para a tela de bloqueio, é melhor manter a segurança."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Entendi"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Botão \"Mostrar protetor de tela\""</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
- <skip />
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Conheça o modo Hub"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Acesse seus widgets e protetores de tela favoritos durante o carregamento."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Vamos lá"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Mostre seus protetores de tela favoritos durante o carregamento"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Trocar usuário"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu suspenso"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Todos os apps e dados nesta sessão serão excluídos."</string>
@@ -804,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Aparecem na parte superior das notificações de conversa, como uma foto do perfil na tela de bloqueio e como um balão. Interrompem o Não perturbe."</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioritárias"</string>
<string name="no_shortcut" msgid="8257177117568230126">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> não é compatível com recursos de conversa"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Dispensar"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Não mostrar novamente"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Não é possível modificar essas notificações."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Não é possível modificar as notificações de chamada."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Não é possível configurar esse grupo de notificações aqui"</string>
@@ -918,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Agenda"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Calculadora"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Mapas"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Alternar teclas de filtragem"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Alternar teclas do mouse"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Alternar teclas de aderência"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Alternar teclas lentas"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Alternar Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Alternar TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Alternar ampliação"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Ativar Selecionar para ouvir"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Não perturbe"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Atalho de botões de volume"</string>
<string name="battery" msgid="769686279459897127">"Bateria"</string>
@@ -1307,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Use a impressão digital para abrir"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Autenticação obrigatória. Toque no sensor de impressão digital para autenticar."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Chamada em andamento"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"Em andamento"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Dados móveis"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Conectado"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Temporariamente conectado"</string>
@@ -1512,12 +1511,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Você concluiu o gesto para ver os apps recentes."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Se quiser ver os apps recentes, deslize para cima e pressione o touchpad com três dedos"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Mudar de app"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Deslize para a direita com quatro dedos no touchpad"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Muito bem!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Você concluiu o gesto para mudar de app."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Deslize para a direita com quatro dedos no touchpad para mudar de app"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Ver todos os apps"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Pressione a tecla de ação no teclado"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Muito bem!"</string>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index fc23118a8c8c..3cfe7b83fff9 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Procentajul bateriei este necunoscut."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Conectat la <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"S-a stabilit conexiunea la <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Neconectat."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Dezactivate"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Pentru a deschide o aplicație folosind un widget, va trebui să-ți confirmi identitatea. În plus, reține că oricine poate să vadă widgeturile, chiar dacă tableta este blocată. Este posibil ca unele widgeturi să nu fi fost create pentru ecranul de blocare și poate fi nesigur să le adaugi aici."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Butonul Afișează screensaverul"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Explorează modul hub"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Accesează widgeturile și screensaverele preferate în timpul încărcării."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Să începem"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Schimbă utilizatorul"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"meniu vertical"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Se afișează în partea de sus a notificărilor pentru conversații și ca fotografie de profil pe ecranul de blocare, apare ca un balon, întrerupe funcția Nu deranja"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioritate"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> nu acceptă funcții pentru conversații"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Închide"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Nu mai afișa"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Aceste notificări nu pot fi modificate."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Notificările pentru apeluri nu pot fi modificate."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Acest grup de notificări nu poate fi configurat aici"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Calculator"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Comută evitarea apăsării repetate"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Comută tastele pentru mouse"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Comută tastele adezive"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Comută tastele lente"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Comută Accesul vocal"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Activează sau dezactivează TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Activează sau dezactivează Mărirea"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Activează Selectează și ascultă"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Nu deranja"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Comandă rapidă din butoanele de volum"</string>
<string name="battery" msgid="769686279459897127">"Baterie"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Folosește amprenta ca să deschizi"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Autentificare obligatorie. Atinge senzorul de amprentă pentru a te autentifica."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Apel în desfășurare"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Date mobile"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Conectat"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Conectat temporar"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Ai finalizat gestul pentru afișarea aplicațiilor recente."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Ca să vezi aplicațiile recente, glisează în sus și ține apăsat cu trei degete pe touchpad"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Comută între aplicații"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Glisează spre dreapta cu patru degete pe touchpad"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Excelent!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Ai finalizat gestul de trecere la altă aplicație."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Glisează la dreapta cu patru degete pe touchpad pentru a comuta între aplicații"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Vezi toate aplicațiile"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Apasă tasta de acțiuni de pe tastatură"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Felicitări!"</string>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index 5b0ce2e7da0e..7ec0513df942 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Уровень заряда батареи в процентах неизвестен."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>: подключено."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Подключено к: <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Развернуть группу."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Открыть приложение."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Не подключено"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Роуминг"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Отключен"</string>
@@ -536,12 +538,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Чтобы открыть приложение, используя виджет, вам нужно будет подтвердить свою личность. Обратите внимание, что виджеты видны всем, даже если планшет заблокирован. Некоторые виджеты не предназначены для использования на заблокированном экране. Добавлять их туда может быть небезопасно."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"ОК"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Кнопка \"Показать заставку\""</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
- <skip />
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Попробуйте режим домашнего центра"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Пока устройство заряжается, будут показываться любимые заставки и вы сможете пользоваться привычными виджетами."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Попробовать"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Показывать заставки во время зарядки"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Сменить пользователя."</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"раскрывающееся меню"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Все приложения и данные этого профиля будут удалены."</string>
@@ -804,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Появляется в верхней части уведомлений о сообщениях, в виде всплывающего чата, а также в качестве фото профиля на заблокированном экране, прерывает режим \"Не беспокоить\"."</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Приоритет"</string>
<string name="no_shortcut" msgid="8257177117568230126">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" не поддерживает функции разговоров."</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Закрыть"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Больше не показывать"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Эти уведомления нельзя изменить."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Уведомления о звонках нельзя изменить."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Эту группу уведомлений нельзя настроить здесь."</string>
@@ -918,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Календарь"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Калькулятор"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Карты"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Включить или отключить контроль повторного нажатия"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Включить или отключить управление указателем с клавиатуры"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Включить или отключить залипание клавиш"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Включить или отключить долгие нажатия клавиш"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Включить или отключить Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Включить или отключить TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Включить или отключить увеличение"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Включить Озвучивание при нажатии"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Не беспокоить"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Кнопки регулировки громкости"</string>
<string name="battery" msgid="769686279459897127">"Батарея"</string>
@@ -1290,7 +1288,7 @@
<string name="missed_call" msgid="4228016077700161689">"Пропущенный вызов"</string>
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Будьте в курсе последних сообщений, пропущенных вызовов и обновлений статуса."</string>
- <string name="people_tile_title" msgid="6589377493334871272">"Чат"</string>
+ <string name="people_tile_title" msgid="6589377493334871272">"Разговор"</string>
<string name="paused_by_dnd" msgid="7856941866433556428">"Приостановлено в режиме \"Не беспокоить\""</string>
<string name="new_notification_text_content_description" msgid="2915029960094389291">"Пользователь <xliff:g id="NAME">%1$s</xliff:g> отправил сообщение: <xliff:g id="NOTIFICATION">%2$s</xliff:g>"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"Пользователь <xliff:g id="NAME">%1$s</xliff:g> отправил изображение"</string>
@@ -1307,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Используйте отпечаток пальца для входа."</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Требуется аутентификация. Приложите палец к сканеру отпечатков."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Текущий вызов"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"Сейчас"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Мобильный интернет"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Подключено"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Временное подключение"</string>
@@ -1454,7 +1453,7 @@
<string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Это приложение"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Специальные возможности"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Сочетания клавиш"</string>
- <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Настройки сочетаний клавиш"</string>
+ <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Настройка сочетаний клавиш"</string>
<string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Удалить сочетание клавиш?"</string>
<string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Сбросить настройки?"</string>
<string name="shortcut_customize_mode_add_shortcut_description" msgid="7636040209946696120">"Чтобы сохранить сочетание клавиш, нажмите одновременно клавишу действия и одну или несколько дополнительных клавиш"</string>
@@ -1512,12 +1511,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Вы выполнили жест для просмотра недавних приложений."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Чтобы увидеть недавние приложения, проведите по сенсорной панели тремя пальцами вверх и удерживайте."</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Переход в другое приложение"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Проведите по сенсорной панели четырьмя пальцами вправо."</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Отлично!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Вы выполнили жест перехода в другое приложение."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Для перехода в другое приложение проведите по сенсорной панели четырьмя пальцами вправо."</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Все приложения"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Нажмите клавишу действия на клавиатуре."</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Блестяще!"</string>
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
index 1c250118299e..0a173cf0068f 100644
--- a/packages/SystemUI/res/values-si/strings.xml
+++ b/packages/SystemUI/res/values-si/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"බැටරි ප්‍රතිශතය නොදනී."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> වෙත සම්බන්ධ කරන ලදි."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> වෙත සම්බන්ධ විය."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"සමූහය දිගහැරීම"</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"යෙදුම විවෘත කරන්න."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"සම්බන්ධ වී නැත."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"රෝමිං"</string>
<string name="cell_data_off" msgid="4886198950247099526">"ක්‍රියාවිරහිතයි"</string>
@@ -536,12 +538,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"විජට් එකක් භාවිතයෙන් යෙදුමක් විවෘත කිරීමට, ඔබට ඒ ඔබ බව සත්‍යාපනය කිරීමට අවශ්‍ය වනු ඇත. එසේම, ඔබේ ටැබ්ලටය අගුළු දමා ඇති විට පවා ඕනෑම කෙනෙකුට ඒවා බැලිය හැකි බව මතක තබා ගන්න. සමහර විජට් ඔබේ අගුළු තිරය සඳහා අදහස් කර නොතිබිය හැකි අතර මෙහි එක් කිරීමට අනාරක්ෂිත විය හැක."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"තේරුණා"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"තිර සුරැකුම් බොත්තම පෙන්වන්න"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
- <skip />
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"හබ් ප්‍රකාරය ගවේෂණය කරන්න"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"ආරෝපණය කරන අතරේ ඔබේ ප්‍රියතම විජට් සහ තිර සුරැකුම් වෙත ප්‍රවේශ වන්න."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"යමු"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"ආරෝපණය කරන අතරතුර ඔබේ ප්‍රියතම තිර සුරැකුම් පෙන්වන්න"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"පරිශීලක මාරුව"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"නිපතන මෙනුව"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"මෙම සැසියේ සියළුම යෙදුම් සහ දත්ත මකාවී."</string>
@@ -804,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"සංවාද දැනුම්දීම්වල ඉහළින්ම සහ අගුලු තිරයේ ඇති පැතිකඩ පින්තූරයක් ලෙස පෙන්වයි, බුබුළක් ලෙස දිස් වේ, බාධා නොකරන්න සඳහා බාධා කරයි"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"ප්‍රමුඛතාව"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> සංවාද විශේෂාංගවලට සහාය නොදක්වයි"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"අස් කරන්න"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"නැවත නොපෙන්වන්න"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"මෙම දැනුම්දීම් වෙනස් කළ නොහැක."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"ඇමතුම් දැනුම්දීම් වෙනස් කළ නොහැකිය."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"මෙම දැනුම්දීම් සමූහය මෙහි වින්‍යාස කළ නොහැක"</string>
@@ -918,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"දින දර්ශනය"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"ගණකය"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"සිතියම්"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"උඩ පනින යතුරු ටොගල කරන්න"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"මූසික යතුරු ටොගල් කරන්න"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"ඇලෙන සුළු යතුරු ටොගල් කරන්න"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"මන්දගාමී යතුරු ටොගල් කරන්න"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"හඬ ප්‍රවේශය ටොගල් කරන්න"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Talkback ටොගල කරන්න"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"විශාලනය කිරීම ටොගල කරන්න"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"කථා කිරීමට තේරීම සක්‍රිය කරන්න"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"බාධා නොකරන්න"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"හඩ පරිමා බොත්තම් කෙටිමග"</string>
<string name="battery" msgid="769686279459897127">"බැටරිය"</string>
@@ -1307,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"විවෘත කිරීමට ඇඟිලි සලකුණ භාවිත කරන්න"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"සත්‍යාපනය අවශ්‍යයි. සත්‍යාපනය කිරීමට ඇඟිලි සලකුණු සංවේදකය ස්පර්ශ කරන්න."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"කර ගෙන යන ඇමතුම"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"දැනට පවතින"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"ජංගම දත්ත"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"සම්බන්ධයි"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"තාවකාලිකව සම්බන්ධ කළා"</string>
@@ -1454,7 +1453,7 @@
<string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"වත්මන් යෙදුම"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ප්‍රවේශ්‍යතාව"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"යතුරු පුවරු කෙටි මං"</string>
- <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"කෙටිමං අභිරුචිකරණය කරන්න"</string>
+ <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"කෙටිමං අභිරුචිකරණය"</string>
<string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"කෙටිමඟ ඉවත් කරන්න ද?"</string>
<string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"පෙරනිමියට යළි සකසන්න ද?"</string>
<string name="shortcut_customize_mode_add_shortcut_description" msgid="7636040209946696120">"මෙම කෙටිමඟ නිර්මාණය කිරීමට, ක්‍රියාකාරී යතුර සහ තවත් යතුරු එකක් හෝ කිහිපයක් එකවර ඔබන්න"</string>
@@ -1512,12 +1511,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"ඔබ මෑත යෙදුම් ඉංගිත බැලීම සම්පූර්ණ කර ඇත."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"මෑත කාලීන යෙදුම් බැලීමට, ඔබේ ස්පර්ශක පෑඩයේ ඇඟිලි තුනක් භාවිතයෙන් ඉහළට ස්වයිප් කරගෙන සිටින්න"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"යෙදුම් මාරු කරන්න"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"ඔබේ ස්පර්ශක පෑඩයේ ඇඟිලි හතරක් භාවිතයෙන් දකුණට ස්වයිප් කරන්න"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"අනර්ඝ වැඩක්!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"ඔබ යෙදුම් මාරු කිරීමේ ඉංගිතය සම්පූර්ණ කර ඇත."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"යෙදුම් මාරු කිරීමට ඔබේ ස්පර්ශක පෑඩයේ ඇඟිලි හතරක් භාවිතයෙන් දකුණට ස්වයිප් කරන්න"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"සියලු යෙදුම් බලන්න"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"ඔබේ යතුරු පුවරුවේ ක්‍රියාකාරී යතුර ඔබන්න"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"හොඳින් කළා!"</string>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index 07eb200d5bda..fbbc48c877f8 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Percento batérie nie je známe."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Pripojené k zariadeniu <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Pripojené k zariadeniu <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Rozbaliť skupinu"</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Otvoriť aplikáciu"</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Nepripojené."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Vypnuté"</string>
@@ -536,12 +538,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Ak chcete otvoriť aplikáciu pomocou miniaplikácie, budete musieť overiť svoju totožnosť. Pamätajte, že si miniaplikáciu môže pozrieť ktokoľvek, aj keď máte tablet uzamknutý. Niektoré miniaplikácie možno nie sú určené pre uzamknutú obrazovku a ich pridanie tu môže byť nebezpečné."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Dobre"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Zobraziť tlačidlo šetriča obrazovky"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
- <skip />
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Preskúmajte režim centra"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Počas nabíjania máte prístup k svojim obľúbeným miniaplikáciám a šetričom obrazovky."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Poďme na to"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Zobrazovať počas nabíjania obľúbené šetriče obrazovky"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Prepnutie používateľa"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rozbaľovacia ponuka"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Všetky aplikácie a údaje v tejto relácii budú odstránené."</string>
@@ -573,7 +573,7 @@
<string name="media_projection_entry_app_permission_dialog_warning_single_app" msgid="7094417930857938876">"Pri zdieľaní aplikácie vidí aplikácia <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> všetko, čo sa v zdieľanej aplikácii zobrazuje alebo prehráva. Preto zvýšte pozornosť v prípade položiek, ako sú heslá, platobné údaje, správy, fotky a zvuk či video."</string>
<string name="media_projection_entry_app_permission_dialog_continue_entire_screen" msgid="1850848182344377579">"Zdieľať obrazovku"</string>
<string name="media_projection_entry_app_permission_dialog_single_app_disabled" msgid="8999903044874669995">"Aplikácia <xliff:g id="APP_NAME">%1$s</xliff:g> túto možnosť zakázala"</string>
- <string name="media_projection_entry_share_app_selector_title" msgid="1419515119767501822">"Výber aplikácie na zdieľanie"</string>
+ <string name="media_projection_entry_share_app_selector_title" msgid="1419515119767501822">"Vyberte aplikáciu, do ktorej chcete zdieľať"</string>
<string name="media_projection_entry_cast_permission_dialog_title" msgid="752756942658159416">"Chcete prenášať obrazovku?"</string>
<string name="media_projection_entry_cast_permission_dialog_option_text_single_app" msgid="6073353940838561981">"Prenášať jednu aplikáciu"</string>
<string name="media_projection_entry_cast_permission_dialog_option_text_entire_screen" msgid="8389508187954155307">"Prenášať celú obrazovku"</string>
@@ -804,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Zobrazuje sa ako bublina v hornej časti upozornení konverzácie a profilová fotka na uzamknutej obrazovke, preruší režim bez vyrušení"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioritné"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> nepodporuje funkcie konverzácie"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Zavrieť"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Nabudúce nezobrazovať"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Tieto upozornenia sa nedajú upraviť."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Upozornenia na hovory sa nedajú upraviť."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Túto skupinu upozornení nejde na tomto mieste konfigurovať"</string>
@@ -881,12 +881,12 @@
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Zobrazenie upozornení"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Vytvorenie snímky obrazovky"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Zobrazenie skratiek"</string>
- <string name="group_system_go_back" msgid="2730322046244918816">"Prechod späť"</string>
- <string name="group_system_access_home_screen" msgid="4130366993484706483">"Prechod na plochu"</string>
- <string name="group_system_overview_open_apps" msgid="5659958952937994104">"Zobrazenie nedávnych aplikácií"</string>
- <string name="group_system_cycle_forward" msgid="5478663965957647805">"Cyklické prechádzanie dopredu nedávnymi aplikáciámi"</string>
- <string name="group_system_cycle_back" msgid="8194102916946802902">"Cyklické prechádzanie dozadu nedávnymi aplikáciami"</string>
- <string name="group_system_access_all_apps_search" msgid="1553588630154197469">"Otvorenie zoznamu aplikácií"</string>
+ <string name="group_system_go_back" msgid="2730322046244918816">"Späť"</string>
+ <string name="group_system_access_home_screen" msgid="4130366993484706483">"Prejsť na plochu"</string>
+ <string name="group_system_overview_open_apps" msgid="5659958952937994104">"Zobraziť nedávne aplikácie"</string>
+ <string name="group_system_cycle_forward" msgid="5478663965957647805">"Prechádzať nedávnymi aplikáciami"</string>
+ <string name="group_system_cycle_back" msgid="8194102916946802902">"Prechádzať nedávnymi aplikáciami opačne"</string>
+ <string name="group_system_access_all_apps_search" msgid="1553588630154197469">"Otvoriť zoznam aplikácií"</string>
<string name="group_system_access_system_settings" msgid="8731721963449070017">"Otvorenie nastavení"</string>
<string name="group_system_access_google_assistant" msgid="7210074957915968110">"Otvorenie Asistenta"</string>
<string name="group_system_lock_screen" msgid="7391191300363416543">"Uzamknutie obrazovky"</string>
@@ -918,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Kalendár"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Kalkulačka"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Mapy"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Prepnúť na opakované stlačenia"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Prepnúť na myš klávesnicou"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Prepnúť na režim uzamknutia klávesa"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Prepnúť na pomalé klávesy"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Prepnúť na Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Prepnúť TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Prepnúť zväčšenie"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Aktivovať počúvanie vybraného textu"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Režim bez vyrušení"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Skratka tlačidiel hlasitosti"</string>
<string name="battery" msgid="769686279459897127">"Batéria"</string>
@@ -1307,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Otvorte odtlačkom prsta"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Vyžaduje sa overenie. Dotknite sa senzora odtlačkov prstov."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Prebiehajúci hovor"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"Prebieha"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobilné dáta"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Pripojené"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Dočasne pripojené"</string>
@@ -1459,7 +1458,7 @@
<string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Chcete resetovať na predvolené nastavenie?"</string>
<string name="shortcut_customize_mode_add_shortcut_description" msgid="7636040209946696120">"Ak chcete vytvoriť túto skratku, stlačte súčasne akčný kláves a minimálne jeden ďalší kláves"</string>
<string name="shortcut_customize_mode_remove_shortcut_description" msgid="6851287900585057128">"Týmto natrvalo odstránite vlastnú skratku."</string>
- <string name="shortcut_customize_mode_reset_shortcut_description" msgid="2081849715634358684">"Týmto natrvalo odstránite všetky vlastné odkazy."</string>
+ <string name="shortcut_customize_mode_reset_shortcut_description" msgid="2081849715634358684">"Týmto natrvalo odstránite všetky vlastné skratky."</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Prehľadávať skratky"</string>
<string name="shortcut_helper_no_search_results" msgid="8554756497996692160">"Žiadne výsledky vyhľadávania"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikona zbalenia"</string>
@@ -1476,7 +1475,7 @@
<string name="shortcut_helper_keyboard_settings_buttons_label" msgid="6720967595915985259">"Nastavenia klávesnice"</string>
<string name="shortcut_helper_customize_dialog_set_shortcut_button_label" msgid="4754492225010429382">"Nastaviť skratku"</string>
<string name="shortcut_helper_customize_dialog_remove_button_label" msgid="6546386970440176552">"Odstrániť"</string>
- <string name="shortcut_helper_customize_dialog_reset_button_label" msgid="7645535254306312685">"Áno, resetovať"</string>
+ <string name="shortcut_helper_customize_dialog_reset_button_label" msgid="7645535254306312685">"Resetovať"</string>
<string name="shortcut_helper_customize_dialog_cancel_button_label" msgid="5595546460431741178">"Zrušiť"</string>
<string name="shortcut_helper_add_shortcut_dialog_placeholder" msgid="9154297849458741995">"Stlačte kláves"</string>
<string name="shortcut_customizer_key_combination_in_use_error_message" msgid="3325858369539848162">"Kombinácia klávesov sa už používa. Skúste inú kombináciu."</string>
@@ -1490,13 +1489,13 @@
<string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Naučte sa gestá touchpadu"</string>
<string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Pohybujte sa v systéme pomocou klávesnice a touchpadu"</string>
<string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Naučte sa gestá touchpadu, klávesové skratky a ďalšie funkcie"</string>
- <string name="touchpad_tutorial_back_gesture_button" msgid="3104716365403620315">"Prechod späť"</string>
+ <string name="touchpad_tutorial_back_gesture_button" msgid="3104716365403620315">"Späť"</string>
<string name="touchpad_tutorial_home_gesture_button" msgid="8023973153559885624">"Prejsť na plochu"</string>
- <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Zobrazenie nedávnych aplikácií"</string>
+ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Zobraziť nedávne aplikácie"</string>
<string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Prepínanie aplikácií"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Hotovo"</string>
<string name="gesture_error_title" msgid="469064941635578511">"Skúste to znova."</string>
- <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Prejdenie späť"</string>
+ <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Späť"</string>
<string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Potiahnite troma prstami na touchpade doľava alebo doprava"</string>
<string name="touchpad_back_gesture_success_title" msgid="7370719098633023496">"Výborne!"</string>
<string name="touchpad_back_gesture_success_body" msgid="2324724953720741719">"Použili ste gesto na prechod späť."</string>
@@ -1506,18 +1505,16 @@
<string name="touchpad_home_gesture_success_title" msgid="3648264553645798470">"Skvelé!"</string>
<string name="touchpad_home_gesture_success_body" msgid="2590690589194027059">"Použili ste gesto na prechod na plochu."</string>
<string name="touchpad_home_gesture_error_body" msgid="3810674109999513073">"Ak chcete prejsť na plochu, potiahnite troma prstami na touchpade"</string>
- <string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Zobrazenie nedávnych aplikácií"</string>
+ <string name="touchpad_recent_apps_gesture_action_title" msgid="934906836867137906">"Zobraziť nedávne aplikácie"</string>
<string name="touchpad_recent_apps_gesture_guidance" msgid="6304446013842271822">"Potiahnite troma prstami na touchpade nahor a pridržte"</string>
<string name="touchpad_recent_apps_gesture_success_title" msgid="8481920554139332593">"Skvelé!"</string>
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Použili ste gesto na zobrazenie nedávnych aplikácií."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Ak si chcete zobraziť nedávne aplikácie, potiahnite troma prstami na touchpade nahor a pridržte ich"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Prepínanie aplikácií"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Potiahnite na touchpade štyrmi prstami doprava"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Skvelé!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Dokončili ste gesto na prepnutie aplikácií."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Aplikácie prepnete tak, že potiahnete štyrmi prstami na touchpade doprava"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Zobrazenie všetkých aplikácií"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Stlačte na klávesnici akčný kláves"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Dobre!"</string>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index e0c65e34e038..4174934bfedd 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -59,7 +59,7 @@
<string name="hdmi_cec_set_menu_language_description" msgid="8176716678074126619">"Spremembo jezika sistema je zahtevala druga naprava."</string>
<string name="hdmi_cec_set_menu_language_accept" msgid="2513689457281009578">"Spremeni jezik"</string>
<string name="hdmi_cec_set_menu_language_decline" msgid="7650721096558646011">"Obdrži trenutni jezik"</string>
- <string name="share_wifi_button_text" msgid="1285273973812029240">"Delite omrežje Wi‑Fi"</string>
+ <string name="share_wifi_button_text" msgid="1285273973812029240">"Deli Wi‑Fi"</string>
<string name="wifi_debugging_title" msgid="7300007687492186076">"Ali dovolite brezžično odpravljanje napak v tem omrežju?"</string>
<string name="wifi_debugging_message" msgid="5461204211731802995">"Ime omrežja (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nNaslov omrežja Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
<string name="wifi_debugging_always" msgid="2968383799517975155">"Vedno dovoli v tem omrežju"</string>
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Neznan odstotek napolnjenosti baterije."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Povezava vzpostavljena z: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Vzpostavljena povezava: <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Razširitev skupine."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Odpiranje aplikacije."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Ni povezan."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Gostovanje"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Izklopljeno"</string>
@@ -539,6 +541,7 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Raziščite način središča"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Med polnjenjem dostopajte do priljubljenih pripomočkov in ohranjevalnikov zaslona."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Pa začnimo"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Prikaz priljubljenih ohranjevalnikov zaslona med polnjenjem"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Preklop med uporabniki"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"spustni meni"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Vse aplikacije in podatki v tej seji bodo izbrisani."</string>
@@ -801,6 +804,8 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Prikaz v obliki oblačka na vrhu razdelka z obvestili za pogovor in kot profilna slika na zaklenjenem zaslonu, preglasitev načina Ne moti."</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prednostno"</string>
<string name="no_shortcut" msgid="8257177117568230126">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> ne podpira pogovornih funkcij."</string>
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
+ <skip />
<string name="notification_inline_dismiss" msgid="88423586921134258">"Opusti"</string>
<string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Tega ne prikaži več"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Za ta obvestila ni mogoče spremeniti nastavitev."</string>
@@ -913,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Koledar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Računalo"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Zemljevidi"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Preklopi prezrtje hitrih zaporednih pritiskov tipk"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Preklopi tipke za miško"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Preklopi zaklepanje tipk"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Preklopi daljši pritisk tipk"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Preklopi Glasovni dostop"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Preklop funkcije TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Preklop povečave"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Aktiviranje storitve Izberite in poslušajte"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Ne moti"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Bližnjica z gumboma za glasnost"</string>
<string name="battery" msgid="769686279459897127">"Baterija"</string>
@@ -1302,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Odprite s prstnim odtisom"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Zahtevano je preverjanje pristnosti. Za preverjanje pristnosti se dotaknite tipala prstnih odtisov."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Aktivni klic"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"V teku"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Prenos podatkov v mobilnem omrežju"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Povezano"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Začasno vzpostavljena povezava"</string>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index f6bd8b5645c7..f2c6301e1a0c 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Përqindja e baterisë e panjohur."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Lidhur me <xliff:g id="BLUETOOTH">%s</xliff:g>"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Është lidhur me <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Nuk është i lidhur."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Joaktiv"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Për të hapur një aplikacion duke përdorur një miniaplikacion, do të duhet të verifikosh që je ti. Ki parasysh gjithashtu që çdo person mund t\'i shikojë, edhe kur tableti yt është i kyçur. Disa miniaplikacione mund të mos jenë planifikuar për ekranin tënd të kyçjes dhe mund të mos jetë e sigurt t\'i shtosh këtu."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"E kuptova"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Shfaq butonin e mbrojtësit të ekranit"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Eksploro në modalitetin Hub"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Qasu në mbrojtësit e ekranit dhe miniaplikacionet e tua të preferuara gjatë karikimit."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Fillojmë"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Ndërro përdorues"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menyja me tërheqje poshtë"</string>
@@ -753,8 +756,7 @@
<string name="qr_code_scanner_updating_secondary_label" msgid="8344598017007876352">"Po përditësohet"</string>
<string name="status_bar_work" msgid="5238641949837091056">"Profili i punës"</string>
<string name="status_bar_airplane" msgid="4848702508684541009">"Modaliteti i aeroplanit"</string>
- <!-- no translation found for status_bar_supervision (6735015942701134125) -->
- <skip />
+ <string name="status_bar_supervision" msgid="6735015942701134125">"Kontrollet prindërore"</string>
<string name="zen_alarm_warning" msgid="7844303238486849503">"Nuk do ta dëgjosh alarmin e radhës në <xliff:g id="WHEN">%1$s</xliff:g>"</string>
<string name="alarm_template" msgid="2234991538018805736">"në <xliff:g id="WHEN">%1$s</xliff:g>"</string>
<string name="alarm_template_far" msgid="3561752195856839456">"në <xliff:g id="WHEN">%1$s</xliff:g>"</string>
@@ -805,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Shfaqet në krye të njoftimeve të bisedës dhe si fotografia e profilit në ekranin e kyçjes, shfaqet si flluskë dhe ndërpret modalitetin \"Mos shqetëso\""</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Me përparësi"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> nuk mbështet veçoritë e bisedës"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Hiq"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Mos e shfaq më"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Këto njoftime nuk mund të modifikohen."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Njoftimet e telefonatave nuk mund të modifikohen."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ky grup njoftimesh nuk mund të konfigurohet këtu"</string>
@@ -919,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Kalendari"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Makina llogaritëse"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Aktivizo/çaktivizo tastet e përsëritura"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Aktivizo/çaktivizo tastet e miut"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Aktivizo/çaktivizo tastet e përhershme"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Aktivizo/çaktivizo tastet e ngadalta"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Aktivizo/çaktivizo \"Qasjen me zë\""</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Aktivizo/çaktivizo Talkback"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Aktivizo/çaktivizo \"Zmadhimin\""</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Aktivizo \"Zgjidh që të thuhet\""</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Mos shqetëso"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Shkurtorja e butonave të volumit"</string>
<string name="battery" msgid="769686279459897127">"Bateria"</string>
@@ -1308,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Përdor gjurmën e gishtit për ta hapur"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Kërkohet vërtetimi. Prek sensorin e gjurmës së gishtit për t\'u vërtetuar."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Telefonatë në vazhdim"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Të dhënat celulare"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Lidhur"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Lidhur përkohësisht"</string>
@@ -1513,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Përfundove gjestin për shikimin e aplikacioneve të fundit."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Për të shikuar aplikacionet e fundit, rrëshqit shpejt lart dhe mbaj shtypur me tre gishta në bllokun me prekje"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Ndërro aplikacionet"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Rrëshqit shpejt djathtas duke përdorur katër gishta në bllokun me prekje"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Punë e shkëlqyer!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"E ke përfunduar gjestin e ndërrimit të aplikacioneve."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Rrëshqit shpejt djathtas duke përdorur katër gishta në bllokun me prekje për të ndërruar aplikacionet"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Shiko të gjitha aplikacionet"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Shtyp tastin e veprimit në tastierë"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Shumë mirë!"</string>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 9232888a5d94..223242eb3cf9 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Проценат напуњености батерије није познат."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Повезани сте са <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Повезани смо са уређајем <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Проширите групу."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Отворите апликацију."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Није повезано."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Роминг"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Искључено"</string>
@@ -539,6 +541,7 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Истражите режим центра"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Приступајте омиљеним виџетима и чуварима екрана током пуњења."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Идемо"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Приказујте омиљене чуваре екрана током пуњења"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Замени корисника"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"падајући мени"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Све апликације и подаци у овој сесији ће бити избрисани."</string>
@@ -801,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Приказује се у врху обавештења о конверзацијама и као слика профила на закључаном екрану, појављује се као облачић, прекида режим Не узнемиравај"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Приоритетно"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не подржава функције конверзације"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Одбаци"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Не приказуј поново"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ова обавештења не могу да се мењају."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Обавештења о позивима не могу да се мењају."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ова група обавештења не може да се конфигурише овде"</string>
@@ -915,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Календар"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Калкулатор"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Мапе"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Укључи или искључи дужи одзив тастера"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Укључи или искључи тастере миша"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Укључи или искључи лепљиве тастере"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Укључи или искључи споре тастере"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Укључи или искључи Приступ гласом"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Укључи или искључи Talkback"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Укључи или искључи Увећање"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Активирај Изаберите за говор"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Не узнемиравај"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Пречица за дугмад за јачину звука"</string>
<string name="battery" msgid="769686279459897127">"Батерија"</string>
@@ -1304,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Отворите помоћу отиска прста"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Потребна је потврда идентитета. Додирните сензор за отисак прста да бисте потврдили идентитет."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Позив је у току"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"Активно"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Мобилни подаци"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Повезано"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Привремено повезано"</string>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index cfa9c0a4709c..b61353517e5c 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Okänd batterinivå."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Ansluten till <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Ansluten till <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Inte ansluten."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Av"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Du måste verifiera din identitet innan du öppnar en app med en widget. Tänk också på att alla kan se dem, även när surfplattan är låst. Vissa widgetar kanske inte är avsedda för låsskärmen och det kan vara osäkert att lägga till dem här."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Visa skärmsläckarknappen"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Utforska hubbläget"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Få åtkomst till dina favoritwidgetar och skärmsläckare under laddning."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Då kör vi"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Byt användare"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rullgardinsmeny"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Visas högst upp i konversationsaviseringarna och som profilbild på låsskärmen, visas som bubbla, åsidosätter Stör ej"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prioritet"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> har inte stöd för konversationsfunktioner"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Stäng"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Visa inte igen"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Det går inte att ändra de här aviseringarna."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Det går inte att ändra samtalsaviseringarna."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Den här aviseringsgruppen kan inte konfigureras här"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Kalender"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Kalkylator"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Kartor"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Aktivera/inaktivera studsande tangenter"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Aktivera/inaktivera mustangenter"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Aktivera/inaktivera låstangentsläget"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Aktivera/inaktivera långsamma tangenter"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Aktivera/inaktivera röststyrning"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Aktivera/inaktivera TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Aktivera/inaktivera förstoring"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Aktivera Textuppläsning"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Stör ej"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Genväg till volymknappar"</string>
<string name="battery" msgid="769686279459897127">"Batteri"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Öppna med fingeravtryck"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Autentisering krävs. Identifiera dig genom att trycka på fingeravtryckssensorn."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Pågående samtal"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobildata"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Ansluten"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Tillfälligt ansluten"</string>
@@ -1459,7 +1462,7 @@
<string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Vill du återställa till standardinställningarna?"</string>
<string name="shortcut_customize_mode_add_shortcut_description" msgid="7636040209946696120">"Skapa det här kortkommandot genom att trycka på åtgärdstangenten och en eller flera andra tangenter samtidigt"</string>
<string name="shortcut_customize_mode_remove_shortcut_description" msgid="6851287900585057128">"Det anpassade kortkommandot raderas permanent."</string>
- <string name="shortcut_customize_mode_reset_shortcut_description" msgid="2081849715634358684">"Alla anpassade genvägar raderas permanent."</string>
+ <string name="shortcut_customize_mode_reset_shortcut_description" msgid="2081849715634358684">"Alla anpassade kortkommandon raderas permanent."</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Sökgenvägar"</string>
<string name="shortcut_helper_no_search_results" msgid="8554756497996692160">"Inga sökresultat"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikonen Komprimera"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Du är klar med rörelsen för att se de senaste apparna."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Svep uppåt på styrplattan med tre fingrar och håll kvar för att se nyligen använda appar"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Byta app"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Svep åt höger med fyra fingrar på styrplattan"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Bra jobbat!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Du har slutfört rörelsen för att byta app"</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Svep åt höger med fyra fingrar på styrplattan för att byta app"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Visa alla appar"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Tryck på åtgärdstangenten på tangentbordet"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Bra gjort!"</string>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index 9ec763b3d9bd..cae856503bed 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Asilimia ya betri haijulikani."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Imeunganishwa kwenye <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Imeunganishwa kwenye <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Haijaunganishwa."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Mitandao ya ng\'ambo"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Zima"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Utahitaji kuthibitisha kuwa ni wewe ili ufungue programu ukitumia wijeti. Pia, kumbuka kuwa mtu yeyote anaweza kuziona, hata kishikwambi chako kikiwa kimefungwa. Huenda baadhi ya wijeti hazikukusudiwa kutumika kwenye skrini yako iliyofungwa na huenda si salama kuziweka hapa."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Nimeelewa"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Kitufe cha “Onyesha taswira ya skrini”"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Gundua hali ya kutumia ikiwa imepachikwa"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Fikia wijeti unazopenda na taswira za skrini wakati unachaji."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Anza"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Badili mtumiaji"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menyu ya kuvuta chini"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Huonyeshwa kwenye sehemu ya juu ya arifa za mazungumzo na kama picha ya wasifu kwenye skrini iliyofungwa. Huonekana kama kiputo na hukatiza kipengele cha Usinisumbue"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Kipaumbele"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> haitumii vipengele vya mazungumzo"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Ondoa"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Usionyeshe tena"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Arifa hizi haziwezi kubadilishwa."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Arifa za simu haziwezi kubadilishwa."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Kikundi hiki cha arifa hakiwezi kuwekewa mipangilio hapa"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Kalenda"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Kikokotoo"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Ramani"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Kugeuza mibofyo inayopuuzwa"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Kugeuza vitufe vya kipanya"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Kugeuza vitufe vinavyonata"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Kugeuza vitufe vya polepole"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Kugeuza Kufikia kwa Kutamka"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Washa/Zima Talkback"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Washa/Zima Kipengele cha Ukuzaji"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Washa kipengele cha Chagua ili Izungumze"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Usinisumbue"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Njia ya mkato ya vitufe vya sauti"</string>
<string name="battery" msgid="769686279459897127">"Betri"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Tumia alama ya kidole kufungua"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Uthibitishaji unahitajika. Gusa kitambua alama ya kidole ili uthibitishe."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Simu inayoendelea"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Data ya mtandao wa simu"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Imeunganishwa"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Imeunganishwa kwa muda"</string>
@@ -1454,7 +1457,7 @@
<string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Programu Inayotumika Sasa"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Ufikivu"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Mikato ya kibodi"</string>
- <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Kuweka mapendeleo ya njia za mkato"</string>
+ <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Mapendeleo ya njia za mkato"</string>
<string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Ungependa kuondoa njia ya mkato?"</string>
<string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Ungependa kurejesha njia za mkato chaguomsingi?"</string>
<string name="shortcut_customize_mode_add_shortcut_description" msgid="7636040209946696120">"Ili kuanzisha njia hii ya mkato, bonyeza kitufe cha Vitendo na ufunguo mmoja au zaidi kwa pamoja"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Umekamilisha mafunzo ya mguso wa kuangalia programu za hivi majuzi."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Telezesha vidole vitatu juu na ushikilie kwenye padi yako ya kugusa ili uangalie programu za hivi majuzi"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Badilisha programu"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Telezesha vidole vinne kulia kwenye padi yako ya kugusa"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Kazi nzuri!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Umekamilisha mafunzo kuhusu mguso wa kubadili programu."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Telezesha vidole vinne kulia kwenye padi yako ya kugusa ili ubadilishe programu"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Angalia programu zote"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Bonyeza kitufe cha vitendo kwenye kibodi yako"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Vizuri sana!"</string>
diff --git a/packages/SystemUI/res/values-sw600dp/config.xml b/packages/SystemUI/res/values-sw600dp/config.xml
index ab0f788dbb13..b4383156dc71 100644
--- a/packages/SystemUI/res/values-sw600dp/config.xml
+++ b/packages/SystemUI/res/values-sw600dp/config.xml
@@ -19,7 +19,7 @@
<!-- These resources are around just to allow their values to be customized
for different hardware and product builds. -->
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
+<resources>
<!-- The maximum number of rows in the QuickSettings -->
<integer name="quick_settings_max_rows">4</integer>
@@ -51,9 +51,7 @@
ignored. -->
<string-array name="config_keyguardQuickAffordanceDefaults" translatable="false">
<item>bottom_start:home</item>
- <!-- TODO(b/384119565): revisit decision on defaults -->
- <item android:featureFlag="!com.android.systemui.glanceable_hub_v2_resources">bottom_end:create_note</item>
- <item android:featureFlag="com.android.systemui.glanceable_hub_v2_resources">bottom_end:glanceable_hub</item>
+ <item>bottom_end:create_note</item>
</string-array>
<!-- Whether volume panel should use the large screen layout or not -->
diff --git a/packages/SystemUI/res/values-sw600dp/dimens.xml b/packages/SystemUI/res/values-sw600dp/dimens.xml
index 26f32ef60851..d22c8d910230 100644
--- a/packages/SystemUI/res/values-sw600dp/dimens.xml
+++ b/packages/SystemUI/res/values-sw600dp/dimens.xml
@@ -126,4 +126,6 @@
<dimen name="controls_content_padding">24dp</dimen>
<dimen name="control_list_vertical_spacing">8dp</dimen>
<dimen name="control_list_horizontal_spacing">16dp</dimen>
+
+ <dimen name="communal_to_dream_button_size">64dp</dimen>
</resources>
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index bca92d3834d1..d9781b6accc9 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"பேட்டரி சதவீதம் தெரியவில்லை."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>க்கு இணைக்கப்பட்டது."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> உடன் இணைக்கப்பட்டுள்ளது."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"இணைக்கப்படவில்லை."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"ரோமிங்"</string>
<string name="cell_data_off" msgid="4886198950247099526">"ஆஃப்"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"விட்ஜெட்டைப் பயன்படுத்தி ஆப்ஸைத் திறக்க, அது நீங்கள்தான் என்பதை உறுதிசெய்ய வேண்டும். அத்துடன், உங்கள் டேப்லெட் பூட்டப்பட்டிருந்தாலும்கூட அவற்றை யார் வேண்டுமானாலும் பார்க்கலாம் என்பதை நினைவில்கொள்ளுங்கள். சில விட்ஜெட்கள் உங்கள் பூட்டுத் திரைக்காக உருவாக்கப்பட்டவை அல்ல என்பதையும் அவற்றை இங்கே சேர்ப்பது பாதுகாப்பற்றதாக இருக்கக்கூடும் என்பதையும் நினைவில்கொள்ளுங்கள்."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"சரி"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"ஸ்கிரீன் சேவரைக் காட்டும் பட்டன்"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"ஹப் பயன்முறையைக் கண்டறியுங்கள்"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"சார்ஜிங்கின்போது உங்களுக்குப் பிடித்த விட்ஜெட்களையும் ஸ்கிரீன் சேவர்களையும் அணுகலாம்."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"தொடங்குக"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"பயனரை மாற்று"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"கீழ் இழுக்கும் மெனு"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"உரையாடல் அறிவிப்புகளின் மேற்பகுதியில் காட்டப்படும், திரை பூட்டப்பட்டிருக்கும்போது சுயவிவரப் படமாகக் காட்டப்படும், குமிழாகத் தோன்றும், தொந்தரவு செய்ய வேண்டாம் அம்சம் இயக்கப்பட்டிருக்கும்போதும் காட்டப்படும்"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"முன்னுரிமை"</string>
<string name="no_shortcut" msgid="8257177117568230126">"உரையாடல் அம்சங்களை <xliff:g id="APP_NAME">%1$s</xliff:g> ஆதரிக்காது"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"மூடுக"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"மீண்டும் காட்டாதே"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"இந்த அறிவிப்புகளை மாற்ற இயலாது."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"அழைப்பு அறிவிப்புகளை மாற்ற முடியாது."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"இந்த அறிவுப்புக் குழுக்களை இங்கே உள்ளமைக்க இயலாது"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"கால்குலேட்டர்"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"பவுன்ஸ் பட்டன்களை நிலைமாற்றுதல்"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"மவுஸ் பட்டன்களை நிலைமாற்றுதல்"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"ஸ்டிக்கி பட்டன்களை நிலைமாற்றுதல்"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"ஸ்லோ பட்டன்களை நிலைமாற்றுதல்"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"குரல் அணுகலை நிலைமாற்றுதல்"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Talkback அம்சத்தை நிலைமாற்றுதல்"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"பெரிதாக்கலை நிலைமாற்றுதல்"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"பேசும் திரையை இயக்குதல்"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"தொந்தரவு செய்ய வேண்டாம்"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"ஒலியளவுப் பொத்தான்களுக்கான ஷார்ட்கட்"</string>
<string name="battery" msgid="769686279459897127">"பேட்டரி"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"கைரேகையைப் பயன்படுத்தி திறந்திடுங்கள்"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"அங்கீகாரம் தேவை. கைரேகை சென்சாரைத் தொட்டு அங்கீகரியுங்கள்."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"செயலில் உள்ள அழைப்பு"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"மொபைல் டேட்டா"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"இணைக்கப்பட்டது"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"தற்காலிகமாக இணைக்கப்பட்டுள்ளது"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"சமீபத்தில் பயன்படுத்திய ஆப்ஸுக்கான சைகை பயிற்சியை நிறைவுசெய்துவிட்டீர்கள்."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"சமீபத்திய ஆப்ஸைப் பார்க்க, உங்கள் டச்பேடில் மூன்று விரல்களால் மேல்நோக்கி ஸ்வைப் செய்து பிடிக்கவும்"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"ஆப்ஸுக்கிடையில் மாறுங்கள்"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"டச்பேடில் நான்கு விரல்களால் வலதுபுறம் ஸ்வைப் செய்யவும்"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"அருமை!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"ஆப்ஸுக்கிடையில் மாறும் சைகைப் பயிற்சியை முடித்துவிட்டீர்கள்."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"ஆப்ஸுக்கிடையே மாற டச்பேடில் நான்கு விரல்களால் வலதுபுறம் ஸ்வைப் செய்யவும்"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"அனைத்து ஆப்ஸையும் காட்டு"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"உங்கள் கீபோர்டில் ஆக்‌ஷன் பட்டனை அழுத்தவும்"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"அருமை!"</string>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index c439e00b24a1..e31f8662b38e 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"బ్యాటరీ శాతం తెలియదు."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>కి కనెక్ట్ చేయబడింది."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g>కి కనెక్ట్ చేయబడింది."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"గ్రూప్‌ను విస్తరించండి."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"యాప్‌ను తెరవండి."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"కనెక్ట్ చేయబడలేదు."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"రోమింగ్"</string>
<string name="cell_data_off" msgid="4886198950247099526">"ఆఫ్ చేయండి"</string>
@@ -539,6 +541,7 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"హబ్ మోడ్‌ను అన్వేషించండి"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"ఛార్జింగ్ అయ్యే సమయంలో మీకు ఇష్టమైన విడ్జెట్‌లను, స్క్రీన్ సేవర్‌లను యాక్సెస్ చేయండి."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"ప్రారంభించండి"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"ఛార్జింగ్ చేసేటప్పుడు మీకు ఇష్టమైన స్క్రీన్ సేవర్‌లను చూపండి"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"వినియోగదారుని మార్చు"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"పుల్‌డౌన్ మెనూ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ఈ సెషన్‌లోని అన్ని యాప్‌లు మరియు డేటా తొలగించబడతాయి."</string>
@@ -801,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"సంభాషణ నోటిఫికేషన్‌ల ఎగువున, లాక్ స్క్రీన్‌లో ప్రొఫైల్ ఫోటో‌గా చూపిస్తుంది, బబుల్‌గా కనిపిస్తుంది, \'అంతరాయం కలిగించవద్దు\'ను అంతరాయం కలిగిస్తుంది"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"ప్రాధాన్యత"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> సంభాషణ ఫీచర్‌లను సపోర్ట్ చేయదు"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"విస్మరించండి"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"మళ్లీ చూపవద్దు"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ఈ నోటిఫికేషన్‌లను ఎడిట్ చేయడం వీలుపడదు."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"కాల్ నోటిఫికేషన్‌లను ఎడిట్ చేయడం సాధ్యం కాదు."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"ఈ నోటిఫికేషన్‌ల గ్రూప్‌ను ఇక్కడ కాన్ఫిగర్ చేయలేము"</string>
@@ -915,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"క్యాలిక్యులేటర్"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"బౌన్స్ కీలను టోగుల్ చేయండి"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"మౌస్ కీలను టోగుల్ చేయండి"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"స్టిక్కీ కీలను టోగుల్ చేయండి"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"నిదానంగా పనిచేసే కీలను టోగుల్ చేయండి"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Voice Accessను టోగుల్ చేయండి"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"TalkBackను టోగుల్ చేయండి"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"మ్యాగ్నిఫికేషన్‌ను టోగుల్ చేయండి"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"\'వినడానికి ఎంచుకోండి\'ని యాక్టివేట్ చేయండి"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"అంతరాయం కలిగించవద్దు"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"వాల్యూమ్ బటన్‌ల షార్ట్‌కట్"</string>
<string name="battery" msgid="769686279459897127">"బ్యాటరీ"</string>
@@ -1304,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"తెరవడానికి వేలిముద్రను ఉపయోగించండి"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"ప్రామాణీకరణ అవసరం. ప్రామాణీకరించడానికి వేలిముద్ర సెన్సార్‌ను తాకండి."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"కాల్ కొనసాగుతోంది"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"కొనసాగుతోంది"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"మొబైల్ డేటా"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"కనెక్ట్ చేయబడింది"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"తాత్కాలికంగా కనెక్ట్ చేయబడింది"</string>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 7eef44924533..8f34f8a2122e 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"ไม่ทราบเปอร์เซ็นต์แบตเตอรี่"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"เชื่อมต่อกับ <xliff:g id="BLUETOOTH">%s</xliff:g> แล้ว"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"เชื่อมต่อกับ <xliff:g id="CAST">%s</xliff:g>"</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"ขยายกลุ่ม"</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"เปิดแอปพลิเคชัน"</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"ไม่ได้เชื่อมต่อ"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"โรมมิ่ง"</string>
<string name="cell_data_off" msgid="4886198950247099526">"ปิด"</string>
@@ -539,6 +541,7 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"สำรวจโหมดฮับ"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"เข้าถึงวิดเจ็ตและภาพพักหน้าจอโปรดขณะชาร์จ"</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"มาเริ่มกันเลย"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"แสดงภาพพักหน้าจอโปรดขณะชาร์จ"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"สลับผู้ใช้"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"เมนูแบบเลื่อนลง"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ระบบจะลบแอปและข้อมูลทั้งหมดในเซสชันนี้"</string>
@@ -801,6 +804,8 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"แสดงที่ด้านบนของการแจ้งเตือนการสนทนาและเป็นรูปโปรไฟล์บนหน้าจอล็อก ปรากฏเป็นบับเบิล แสดงในโหมดห้ามรบกวน"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"สำคัญ"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ไม่รองรับฟีเจอร์การสนทนา"</string>
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
+ <skip />
<string name="notification_inline_dismiss" msgid="88423586921134258">"ปิด"</string>
<string name="notification_inline_disable_promotion" msgid="6880961831026048166">"ไม่ต้องแสดงอีก"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"แก้ไขการแจ้งเตือนเหล่านี้ไม่ได้"</string>
@@ -913,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"ปฏิทิน"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"เครื่องคิดเลข"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"แผนที่"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"เปิด/ปิดคีย์ตีกลับ"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"เปิด/ปิดแป้นเมาส์"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"เปิด/ปิดคีย์ติดหนึบ"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"เปิด/ปิดการเพิ่มระยะเวลาในการกดปุ่ม"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"เปิด/ปิดการเข้าถึงด้วยเสียง"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"เปิด/ปิด TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"เปิด/ปิดการขยาย"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"เปิดใช้งานการเลือกเพื่อให้อ่าน"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"ห้ามรบกวน"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"ทางลัดปุ่มปรับระดับเสียง"</string>
<string name="battery" msgid="769686279459897127">"แบตเตอรี่"</string>
@@ -1302,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ใช้ลายนิ้วมือเพื่อเปิด"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"ต้องมีการตรวจสอบสิทธิ์ แตะเซ็นเซอร์ลายนิ้วมือเพื่อตรวจสอบสิทธิ์"</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"สายที่สนทนาอยู่"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"ดำเนินอยู่"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"อินเทอร์เน็ตมือถือ"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"เชื่อมต่อแล้ว"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"เชื่อมต่อแล้วชั่วคราว"</string>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index 154ba651fffd..2c72bd80c031 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Hindi alam ang porsyento ng baterya."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Nakakonekta sa <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Nakakonekta sa <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"I-expand ang grupo."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Buksan ang application."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Hindi nakakonekta."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Naka-off"</string>
@@ -539,6 +541,7 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"I-explore ang hub mode"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"I-access ang mga paborito mong widget at screen saver habang nagcha-charge."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Tara na"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Ipakita ang mga paborito mong screensaver habang nagcha-charge"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Magpalit ng user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pulldown menu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Ide-delete ang lahat ng app at data sa session na ito."</string>
@@ -801,10 +804,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Makikita sa itaas ng mga notification ng pag-uusap at bilang larawan sa profile sa lock screen, lumalabas bilang bubble, naaabala ang Huwag Istorbohin"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Priyoridad"</string>
<string name="no_shortcut" msgid="8257177117568230126">"Hindi sinusuportahan ng <xliff:g id="APP_NAME">%1$s</xliff:g> ang mga feature ng pag-uusap"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"I-dismiss"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Huwag nang ipakita ulit"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Hindi puwedeng baguhin ang mga notification na ito."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Hindi mabago ang mga notification ng tawag."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Hindi mako-configure dito ang pangkat na ito ng mga notification"</string>
@@ -881,8 +884,8 @@
<string name="group_system_go_back" msgid="2730322046244918816">"Bumalik"</string>
<string name="group_system_access_home_screen" msgid="4130366993484706483">"Pumunta sa home screen"</string>
<string name="group_system_overview_open_apps" msgid="5659958952937994104">"Tingnan ang mga kamakailang app"</string>
- <string name="group_system_cycle_forward" msgid="5478663965957647805">"Mag-cycle pasulong sa mga kamakailang app"</string>
- <string name="group_system_cycle_back" msgid="8194102916946802902">"Mag-cycle pabalik sa mga kamakailang app"</string>
+ <string name="group_system_cycle_forward" msgid="5478663965957647805">"Mag-cycle forward sa mga kamakailang app"</string>
+ <string name="group_system_cycle_back" msgid="8194102916946802902">"Mag-cycle backward sa mga kamakailang app"</string>
<string name="group_system_access_all_apps_search" msgid="1553588630154197469">"Buksan ang listahan ng mga app"</string>
<string name="group_system_access_system_settings" msgid="8731721963449070017">"Buksan ang mga setting"</string>
<string name="group_system_access_google_assistant" msgid="7210074957915968110">"Buksan ang assistant"</string>
@@ -915,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Calendar"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Calculator"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Mga mapa"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"I-toggle ang mga bounce key"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"I-toggle ang mga mouse key"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"I-toggle ang mga sticky key"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"I-toggle ang mga slow key"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"I-toggle ang Pag-access gamit ang Boses"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"I-toggle ang Talkback"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"I-toggle ang Magnification"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"I-activate ang Select to Speak"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Huwag Istorbohin"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Shortcut ng mga button ng volume"</string>
<string name="battery" msgid="769686279459897127">"Baterya"</string>
@@ -1304,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Gamitin ang fingerprint para buksan"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Kailangan ng pag-authenticate. Pindutin ang sensor para sa fingerprint para mag-authenticate."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Kasalukuyang tawag"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"Kasalukuyan"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobile data"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Nakakonekta"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Pansamantalang nakakonekta"</string>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index d532bef9bf07..4ca73158c240 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Pil yüzdesi bilinmiyor."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> ile bağlı."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> bağlantısı kuruldu."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Bağlanmadı."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Dolaşım"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Kapalı"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Widget kullanarak bir uygulamayı açmak için kimliğinizi doğrulamanız gerekir. Ayrıca, tabletiniz kilitliyken bile widget\'ların herkes tarafından görüntülenebileceğini unutmayın. Bazı widget\'lar kilit ekranınız için tasarlanmamış olabileceğinden buraya eklenmeleri güvenli olmayabilir."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Anladım"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Ekran koruyucuyu göster düğmesi"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Hub Modu\'nu keşfedin"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Cihazınız şarj olurken en sevdiğiniz widget\'lara ve ekran koruyuculara erişin."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Başlayalım"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Kullanıcı değiştirme"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"açılır menü"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Görüşme bildirimlerinin üstünde ve kilit ekranında profil resmi olarak gösterilir, baloncuk olarak görünür, Rahatsız Etmeyin\'i kesintiye uğratır"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Öncelikli"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>, sohbet özelliklerini desteklemiyor"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Kapat"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Tekrar gösterme"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Bu bildirimler değiştirilemez."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Arama bildirimleri değiştirilemez."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Bu bildirim grubu burada yapılandırılamaz"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Takvim"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Hesap Makinesi"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Haritalar"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Tekrarlı basmayı yoksayma tuşlarını aç/kapat"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Fare tuşlarını aç/kapat"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Yapışkan tuşları aç/kapat"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Yavaş tuşları aç/kapat"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Sesli Erişim\'i aç/kapat"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"TalkBack\'i aç/kapat"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Büyüteci aç/kapat"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Seç ve Dinle\'yi etkinleştir"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Rahatsız Etmeyin"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Ses düğmeleri kısayolu"</string>
<string name="battery" msgid="769686279459897127">"Pil"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Açmak için parmak izi kullanın"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Kimlik doğrulaması gerekiyor. Kimlik doğrulaması için parmak izi sensörüne dokunun."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Devam eden arama"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobil veri"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Bağlı"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Geçici olarak bağlandı"</string>
@@ -1448,8 +1451,7 @@
<string name="shortcut_helper_category_system_apps" msgid="6001757545472556810">"Sistem uygulamaları"</string>
<string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Çoklu görev"</string>
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Bölünmüş ekran"</string>
- <!-- no translation found for shortcutHelper_category_accessibility (8068337792277570938) -->
- <skip />
+ <string name="shortcutHelper_category_accessibility" msgid="8068337792277570938">"Erişilebilirlik"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Giriş"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Uygulama kısayolları"</string>
<string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Mevcut Uygulama"</string>
@@ -1513,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Son uygulamaları görüntüleme hareketini tamamladınız."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Son kullanılan uygulamaları görüntülemek için dokunmatik alanda üç parmağınızla yukarı kaydırıp basılı tutun"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Uygulamalar arasında geçiş yapma"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Dokunmatik alanda dört parmağınızla sağa kaydırın"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Tebrikler!"</string>
- <string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Uygulamalar arasında geçiş yapma hareketini tamamladınız."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Uygulamalar arası geçiş hareketini tamamladınız."</string>
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Uygulamalar arasında geçiş yapmak için dokunmatik alanda dört parmağınızla sağa kaydırın"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Tüm uygulamaları göster"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Klavyenizde eylem tuşuna basın"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Tebrikler!"</string>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index c3a01f587145..bf4444ee8898 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Відсоток заряду акумулятора невідомий."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Підключено до <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Під’єднано до пристрою <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Не з’єднано."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Роумінг"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Вимкнено"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Щоб відкрити додаток за допомогою віджета, вам потрібно буде підтвердити особу. Пам’ятайте також, що бачити віджети можуть усі, навіть коли планшет заблоковано. Можливо, деякі віджети не призначені для заблокованого екрана, і додавати їх на нього може бути небезпечно."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Кнопка \"Показати заставку\""</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Представляємо режим центру керування"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Використовуйте улюблені віджети й заставки, поки пристрій заряджається."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Почати"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Змінити користувача"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"спадне меню"</string>
@@ -753,8 +756,7 @@
<string name="qr_code_scanner_updating_secondary_label" msgid="8344598017007876352">"Оновлення"</string>
<string name="status_bar_work" msgid="5238641949837091056">"Робочий профіль"</string>
<string name="status_bar_airplane" msgid="4848702508684541009">"Режим польоту"</string>
- <!-- no translation found for status_bar_supervision (6735015942701134125) -->
- <skip />
+ <string name="status_bar_supervision" msgid="6735015942701134125">"Батьківський контроль"</string>
<string name="zen_alarm_warning" msgid="7844303238486849503">"Наступний сигнал о <xliff:g id="WHEN">%1$s</xliff:g> не пролунає"</string>
<string name="alarm_template" msgid="2234991538018805736">"<xliff:g id="WHEN">%1$s</xliff:g>"</string>
<string name="alarm_template_far" msgid="3561752195856839456">"<xliff:g id="WHEN">%1$s</xliff:g>"</string>
@@ -805,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"З’являється вгорі сповіщень про розмови і як зображення профілю на заблокованому екрані, відображається як спливаючий чат, перериває режим \"Не турбувати\""</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Пріоритет"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не підтримує функції розмов"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Закрити"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Більше не показувати"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ці сповіщення не можна змінити."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Сповіщення про виклик не можна змінити."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Цю групу сповіщень не можна налаштувати тут"</string>
@@ -919,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Календар"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Калькулятор"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Карти"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Увімкнути або вимкнути ігнорування повторного натискання"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Увімкнути або вимкнути клавіші керування мишею"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Увімкнути або вимкнути залипання клавіш"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Увімкнути або вимкнути повільні клавіші"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Увімкнути або вимкнути Голосовий доступ"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Увімкнути або вимкнути TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Увімкнути або вимкнути збільшення"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Активувати функцію \"Читання з екрана\""</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Не турбувати"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Кнопки гучності на корпусі"</string>
<string name="battery" msgid="769686279459897127">"Акумулятор"</string>
@@ -1308,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Щоб відкрити, використайте відбиток пальця"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Пройдіть автентифікацію. Для цього торкніться сканера відбитків пальців."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Поточний дзвінок"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Мобільний трафік"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Підключено"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Тимчасово з’єднано"</string>
@@ -1449,14 +1451,13 @@
<string name="shortcut_helper_category_system_apps" msgid="6001757545472556810">"Системні додатки"</string>
<string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Багатозадачність"</string>
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Розділити екран"</string>
- <!-- no translation found for shortcutHelper_category_accessibility (8068337792277570938) -->
- <skip />
+ <string name="shortcutHelper_category_accessibility" msgid="8068337792277570938">"Функції доступності"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Введення"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Комбінації клавіш для додатків"</string>
<string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Поточний додаток"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Доступність"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Комбінації клавіш"</string>
- <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Налаштуйте комбінації клавіш"</string>
+ <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Комбінації клавіш"</string>
<string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Видалити комбінацію клавіш?"</string>
<string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Відновити комбінації клавіш за умовчанням?"</string>
<string name="shortcut_customize_mode_add_shortcut_description" msgid="7636040209946696120">"Щоб створити цю комбінацію, одночасно натисніть клавішу дії і одну чи кілька інших клавіш"</string>
@@ -1514,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Ви виконали жест для перегляду нещодавно відкритих додатків."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Щоб переглянути останні додатки, проведіть трьома пальцями вгору й утримуйте їх на сенсорній панелі"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Перемикання між додатками"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Проведіть чотирма пальцями вправо по сенсорній панелі"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Чудово!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Ви виконали жест перемикання додатків."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Щоб перемикати додатки, проводьте чотирма пальцями вправо по сенсорній панелі"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Переглянути всі додатки"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Натисніть клавішу дії на клавіатурі"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Чудово!"</string>
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index bbde3351188e..584375f8ac5f 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"بیٹری کی فیصد نامعلوم ہے۔"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> سے منسلک ہیں۔"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> سے منسلک ہے۔"</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"مربوط نہیں ہے۔"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"رومنگ"</string>
<string name="cell_data_off" msgid="4886198950247099526">"آف ہے"</string>
@@ -539,6 +543,8 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"ہب موڈ دریافت کریں"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"چارج کرتے وقت اپنے پسندیدہ ویجیٹس اور اسکرین سیورز تک رسائی حاصل کریں۔"</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"آئیے شروع کریں"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"صارف سوئچ کریں"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"پل ڈاؤن مینیو"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"اس سیشن میں موجود سبھی ایپس اور ڈیٹا کو حذف کر دیا جائے گا۔"</string>
@@ -801,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"یہ گفتگو کی اطلاعات کے اوپری حصّے پر اور مقفل اسکرین پر پروفائل کی تصویر کے بطور دکھائی دیتا ہے، بلبلے کے بطور ظاہر ہوتا ہے، \'ڈسٹرب نہ کریں\' میں مداخلت کرتا ہے"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"ترجیح"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ایپ گفتگو کی خصوصیات کو سپورٹ نہیں کرتی ہے"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"برخاست کریں"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"دوبارہ نہ دکھائیں"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ان اطلاعات کی ترمیم نہیں کی جا سکتی۔"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"کال کی اطلاعات میں ترمیم نہیں کی جا سکتی۔"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"اطلاعات کے اس گروپ کو یہاں کنفیگر نہیں کیا جا سکتا"</string>
@@ -915,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"کیلنڈر"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"کیلکولیٹر"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"باؤنس کلیدیں ٹوگل کریں"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"ماؤس کنٹرول کرنے کی کلیدیں ٹوگل کریں"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"دبی رہنے والی کلیدیں ٹوگل کریں"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"سست کلیدیں ٹوگل کریں"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"صوتی رسائی کو ٹوگل کریں"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"‏‫TalkBack کو ٹوگل کریں"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"میگنیفکیشن کو ٹوگل کریں"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"سننے کیلئے منتخب کریں کو فعال کریں"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"ڈسٹرب نہ کریں"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"والیوم بٹنز کے شارٹ کٹ"</string>
<string name="battery" msgid="769686279459897127">"بیٹری"</string>
@@ -1304,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"کھولنے کے لیے فنگر پرنٹ کا استعمال کریں"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"توثیق مطلوب ہے۔ توثیق کرنے کے لیے فنگر پرنٹ سینسر کو ٹچ کریں۔"</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"جاری کال"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"موبائل ڈیٹا"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"منسلک ہے"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"عارضی طور پر منسلک ہے"</string>
diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml
index ea4a7c7cad3a..c69346f95c5c 100644
--- a/packages/SystemUI/res/values-uz/strings.xml
+++ b/packages/SystemUI/res/values-uz/strings.xml
@@ -250,6 +250,8 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Batareya quvvati foizi nomaʼlum."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Ulangan: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Bunga ulangan: <xliff:g id="CAST">%s</xliff:g>."</string>
+ <string name="accessibility_expand_group" msgid="521237935987978624">"Guruhni yoying."</string>
+ <string name="accessibility_open_application" msgid="1749126077501259712">"Ilovani oching."</string>
<string name="accessibility_not_connected" msgid="4061305616351042142">"Ulanmagan."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Rouming"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Oʻchiq"</string>
@@ -539,6 +541,7 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Hub rejimi bilan tanishing"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Quvvatlash paytida sevimli vidjetlar va ekran lavhalaridan foydalaning."</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Boshlash"</string>
+ <string name="glanceable_hub_to_dream_button_tooltip" msgid="9018287673822335829">"Quvvatlash paytida sevimli ekran lavhalari koʻrsatilsin"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Foydalanuvchini almashtirish"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"tortib tushiriladigan menyu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Ushbu seansdagi barcha ilovalar va ma’lumotlar o‘chirib tashlanadi."</string>
@@ -801,6 +804,8 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Suhbat bildirishnomalari tepasida va ekran qulfida profil rasmi sifatida chiqariladi, bulutcha sifatida chiqadi, Bezovta qilinmasin rejimini bekor qiladi"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Muhim"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ilovasida suhbat funksiyalari ishlamaydi"</string>
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
+ <skip />
<string name="notification_inline_dismiss" msgid="88423586921134258">"Yopish"</string>
<string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Boshqa chiqmasin"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Bu bildirishnomalarni tahrirlash imkonsiz."</string>
@@ -877,7 +882,7 @@
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Skrinshot olish"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Yorliqlarni ochish"</string>
<string name="group_system_go_back" msgid="2730322046244918816">"Orqaga"</string>
- <string name="group_system_access_home_screen" msgid="4130366993484706483">"Bosh ekranni ochish"</string>
+ <string name="group_system_access_home_screen" msgid="4130366993484706483">"Bosh ekranga chiqish"</string>
<string name="group_system_overview_open_apps" msgid="5659958952937994104">"Oxirgi ilovalarni koʻrish"</string>
<string name="group_system_cycle_forward" msgid="5478663965957647805">"Oxirgi ilovalarni oldinga varaqlash"</string>
<string name="group_system_cycle_back" msgid="8194102916946802902">"Oxirgi ilovalarni orqaga varaqlash"</string>
@@ -913,16 +918,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Taqvim"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Kalkulyator"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Xaritalar"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Takror bosish nazoratini yoqish yoki oʻchirish"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Kursorni klaviaturadan boshqarishni yoqish yoki oʻchirish"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Yopishqoq tugmalarni yoqish yoki oʻchirish"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Tugmalar uzoq bosilishini yoqish yoki oʻchirish"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Ovozli boshqaruvni yoqish yoki oʻchirish"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Talkbackni yoqish"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Lupani yoqish"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Teginib tinglash funksiyasini yoqish"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Bezovta qilinmasin"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Ovoz balandligini boshqarish tugmalari"</string>
<string name="battery" msgid="769686279459897127">"Batareya"</string>
@@ -1302,6 +1305,7 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Ochish uchun barmoq izidan foydalaning"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Haqiqiylikni tekshirish talab etiladi. Autentifikatsiya uchun barmoq izi skaneriga tegining."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Joriy chaqiruv"</string>
+ <string name="ongoing_notification_extra_content_description" msgid="2098752668861351265">"Hali bajarilmagan"</string>
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobil internet"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Ulangan"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Vaqtincha ulangan"</string>
@@ -1445,17 +1449,17 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Ekranni ikkiga ajratish"</string>
<string name="shortcutHelper_category_accessibility" msgid="8068337792277570938">"Qulaylik"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Kiritish"</string>
- <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Ilova yorliqlari"</string>
+ <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Ilovalar"</string>
<string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Joriy ilova"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Qulayliklar"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Tezkor tugmalar"</string>
- <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Yorliqlarni moslash"</string>
+ <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Tezkor tugmalarni sozlash"</string>
<string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Tezkor tugma olib tashlansinmi?"</string>
<string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Asliga qaytarilsinmi?"</string>
<string name="shortcut_customize_mode_add_shortcut_description" msgid="7636040209946696120">"Bu tezkor tugmani yaratish uchun Amal tugmasi va bir yoki bir nechta tugmalarni birgalikda bosing"</string>
<string name="shortcut_customize_mode_remove_shortcut_description" msgid="6851287900585057128">"Bunda maxsus tezkor tugma butunlay oʻchirib tashlanadi."</string>
<string name="shortcut_customize_mode_reset_shortcut_description" msgid="2081849715634358684">"Bunda barcha maxsus yorliqlaringiz butunlay oʻchirib tashlanadi."</string>
- <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Tezkor tugmalar qidiruvi"</string>
+ <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Qidiruv"</string>
<string name="shortcut_helper_no_search_results" msgid="8554756497996692160">"Hech narsa topilmadi"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Yigʻish belgisi"</string>
<string name="shortcut_helper_content_description_meta_key" msgid="3989315044342124818">"Amal bajarish uchun Meta tugmasi belgisi"</string>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index 5380afa883c5..eee95832f1ab 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Tỷ lệ phần trăm pin không xác định."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Đã kết nối với <xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Đã kết nối với <xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Chưa được kết nối."</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Chuyển vùng"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Tắt"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Để dùng tiện ích mở một ứng dụng, bạn cần xác minh danh tính của mình. Ngoài ra, hãy lưu ý rằng bất kỳ ai cũng có thể xem các tiện ích này, ngay cả khi máy tính bảng của bạn được khoá. Một số tiện ích có thể không dành cho màn hình khoá và không an toàn khi thêm vào đây."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Tôi hiểu"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Hiện nút trình bảo vệ màn hình"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Khám phá chế độ thiết bị trung tâm"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Truy cập vào các tiện ích và trình bảo vệ màn hình mà bạn yêu thích trong khi sạc."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Bắt đầu"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Chuyển đổi người dùng"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"trình đơn kéo xuống"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Hiện ở đầu phần thông báo cuộc trò chuyện và ở dạng ảnh hồ sơ trên màn hình khóa, xuất hiện ở dạng bong bóng, làm gián đoạn chế độ Không làm phiền"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Mức độ ưu tiên"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> không hỗ trợ các tính năng trò chuyện"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Đóng"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Không hiện lại"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Không thể sửa đổi các thông báo này."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Không thể sửa đổi các thông báo cuộc gọi."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Không thể định cấu hình nhóm thông báo này tại đây"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Lịch"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Máy tính"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"Bản đồ"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Bật/tắt phím nảy"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Bật/tắt phím điều khiển chuột"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Bật/tắt phím cố định"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Bật/tắt phím chậm"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Bật/tắt tính năng Điều khiển bằng giọng nói"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Bật/tắt TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Bật/tắt tính năng thu phóng"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Kích hoạt tính năng Chọn để nói"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Không làm phiền"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Phím tắt các nút âm lượng"</string>
<string name="battery" msgid="769686279459897127">"Pin"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Dùng vân tay để mở"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Bạn cần phải xác thực. Hãy chạm vào cảm biến vân tay để xác thực."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Cuộc gọi đang diễn ra"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Dữ liệu di động"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Đã kết nối"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Tạm thời có kết nối"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Bạn đã hoàn tất cử chỉ xem ứng dụng gần đây."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Để xem các ứng dụng gần đây, hãy dùng 3 ngón tay vuốt lên và giữ trên bàn di chuột"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Chuyển đổi ứng dụng"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Dùng 4 ngón tay vuốt sang phải trên bàn di chuột"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Tuyệt vời!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Bạn đã thực hiện xong cử chỉ chuyển đổi ứng dụng."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Dùng 4 ngón tay vuốt sang phải trên bàn di chuột để chuyển đổi ứng dụng"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Xem tất cả các ứng dụng"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Nhấn phím hành động trên bàn phím"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Rất tốt!"</string>
diff --git a/packages/SystemUI/res/values-xlarge-land/config.xml b/packages/SystemUI/res/values-xlarge-land/config.xml
index 6d8b64ade259..4c77f30f2e69 100644
--- a/packages/SystemUI/res/values-xlarge-land/config.xml
+++ b/packages/SystemUI/res/values-xlarge-land/config.xml
@@ -16,5 +16,5 @@
<resources>
<item name="shortcut_helper_screen_width_fraction" format="float" type="dimen">0.8</item>
- <bool name="center_align_magic_portrait_shape">true</bool>
+ <bool name="center_align_focal_area_shape">true</bool>
</resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 4b29fb6865f7..81f1bffdf4ab 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"电池电量百分比未知。"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"已连接到<xliff:g id="BLUETOOTH">%s</xliff:g>。"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"已连接到 <xliff:g id="CAST">%s</xliff:g>。"</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"未连接。"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"漫游"</string>
<string name="cell_data_off" msgid="4886198950247099526">"已关闭"</string>
@@ -539,6 +543,8 @@
<string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"探索基座接入模式"</string>
<string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"充电时访问您喜爱的微件和屏保。"</string>
<string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"现在就试试吧"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"切换用户"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"下拉菜单"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"此会话中的所有应用和数据都将被删除。"</string>
@@ -801,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"以气泡形式显示在对话通知顶部(屏幕锁定时显示为个人资料照片),并且会中断勿扰模式"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"优先"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>不支持对话功能"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"关闭"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"不再显示"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"无法修改这些通知。"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"无法修改来电通知。"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"您无法在此处配置这组通知"</string>
@@ -915,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"日历"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"计算器"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"地图"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"开启/关闭防抖键"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"开启/关闭鼠标键"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"开启/关闭粘滞键"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"开启/关闭慢速键"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"开启/关闭语音操控"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"开启/关闭 TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"开启/关闭放大功能"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"启用“随选朗读”"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"勿扰"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"音量按钮快捷键"</string>
<string name="battery" msgid="769686279459897127">"电池"</string>
@@ -1304,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"使用指纹即可打开"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"需要进行身份验证。请轻触指纹传感器以验证身份。"</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"正在通话"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"移动数据网络"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"已连接"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"已暂时连接"</string>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index 1605840fe463..b21f13f8102c 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"電量百分比不明。"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"已連線至<xliff:g id="BLUETOOTH">%s</xliff:g>。"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"已連接至 <xliff:g id="CAST">%s</xliff:g>。"</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"未連線。"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"漫遊"</string>
<string name="cell_data_off" msgid="4886198950247099526">"關閉"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"如要使用小工具開啟應用程式,系統會要求你驗證身分。請注意,所有人都能查看小工具,即使平板電腦已鎖定亦然。部分小工具可能不適用於上鎖畫面,新增至這裡可能會有安全疑慮。"</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"知道了"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"顯示螢幕保護程式按鈕"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"探索插座模式"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"在充電時存取你喜愛的小工具和螢幕保護程式。"</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"立即開始"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"切換使用者"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"下拉式選單"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"以對話氣泡形式顯示在對話通知頂部 (在上鎖畫面會顯示為個人檔案相片),並會中斷「請勿打擾」模式"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"優先"</string>
<string name="no_shortcut" msgid="8257177117568230126">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」不支援對話功能"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"關閉"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"不要再顯示"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"無法修改這些通知。"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"無法修改通話通知。"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"無法在此設定這組通知"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"日曆"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"計算機"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"地圖"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"切換彈跳鍵"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"切換滑鼠鍵"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"切換相黏鍵"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"切換緩慢鍵"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"切換語音操控"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"切換 Talkback"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"切換放大模式"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"啟用「揀選朗讀內容」"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"請勿騷擾"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"音量按鈕快速鍵"</string>
<string name="battery" msgid="769686279459897127">"電池"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"使用指紋即可開啟"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"需要驗證。掂一下指紋感應器就可以驗證。"</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"通話中"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"流動數據"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"已連線"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"已暫時連線"</string>
@@ -1457,9 +1460,9 @@
<string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"自訂快速鍵"</string>
<string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"要移除快速鍵嗎?"</string>
<string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"要重設至預設捷徑嗎?"</string>
- <string name="shortcut_customize_mode_add_shortcut_description" msgid="7636040209946696120">"如要建立此快速鍵,請同時按下 Action 鍵及另外一個或多個鍵"</string>
- <string name="shortcut_customize_mode_remove_shortcut_description" msgid="6851287900585057128">"這將永久刪除你的自訂快速鍵。"</string>
- <string name="shortcut_customize_mode_reset_shortcut_description" msgid="2081849715634358684">"這將永久刪除你的所有自訂捷徑。"</string>
+ <string name="shortcut_customize_mode_add_shortcut_description" msgid="7636040209946696120">"如要建立此快速鍵,請同時按下快捷操作鍵及另外一個或多個鍵"</string>
+ <string name="shortcut_customize_mode_remove_shortcut_description" msgid="6851287900585057128">"此操作會永久刪除此自訂快速鍵。"</string>
+ <string name="shortcut_customize_mode_reset_shortcut_description" msgid="2081849715634358684">"此操作會永久刪除所有自訂快速鍵。"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"搜尋快速鍵"</string>
<string name="shortcut_helper_no_search_results" msgid="8554756497996692160">"沒有相符的搜尋結果"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"收合圖示"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"你已完成「查看最近使用的應用程式」手勢的教學課程。"</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"如要查看最近使用的應用程式,請用三隻手指在觸控板上向上滑動並按住"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"切換應用程式"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"在觸控板上用四隻手指向右滑動"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"做得好!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"你已完成「應用程式切換手勢」的教學課程。"</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"在觸控板上用四隻手指向右滑動,即可切換應用程式"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"查看所有應用程式"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"按下鍵盤上的快捷操作鍵"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"做得好!"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index cbdb641bf76f..f2b0b86411e7 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -250,6 +250,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"電池電量不明。"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"已連線至<xliff:g id="BLUETOOTH">%s</xliff:g>。"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"已連線至 <xliff:g id="CAST">%s</xliff:g>。"</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"尚未連線。"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"漫遊"</string>
<string name="cell_data_off" msgid="4886198950247099526">"關閉"</string>
@@ -536,11 +540,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"如要使用小工具開啟應用程式,需先驗證身分。請留意,即使平板電腦已鎖定,所有人都還是能查看小工具。某些小工具可能不適用於螢幕鎖定畫面,新增到此可能會有安全疑慮。"</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"我知道了"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"顯示螢幕保護程式按鈕"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"瞭解 Hub 模式"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"在充電時使用喜愛的小工具和螢幕保護程式。"</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"開始使用"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"切換使用者"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"下拉式選單"</string>
@@ -804,10 +807,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"以對話框的形式顯示在對話通知頂端 (螢幕鎖定時會顯示為個人資料相片),並會中斷「零打擾」模式"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"優先"</string>
<string name="no_shortcut" msgid="8257177117568230126">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」不支援對話功能"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"關閉"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"不要再顯示"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"無法修改這些通知。"</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"無法修改來電通知。"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"無法在這裡設定這個通知群組"</string>
@@ -918,16 +921,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"日曆"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"計算機"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"地圖"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"切換彈回鍵"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"切換滑鼠按鍵"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"切換相黏鍵"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"切換延遲感應鍵"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"切換 Voice Access"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"切換 TalkBack"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"切換放大功能"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"啟用隨選朗讀"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"零打擾"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"音量鍵快速鍵"</string>
<string name="battery" msgid="769686279459897127">"電池"</string>
@@ -1307,6 +1308,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"使用指紋即可開啟"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"需要驗證。輕觸指紋感應器即可進行驗證。"</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"通話中"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"行動數據"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"已連線"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"已暫時建立連線"</string>
@@ -1479,7 +1482,7 @@
<string name="shortcut_helper_customize_dialog_reset_button_label" msgid="7645535254306312685">"是,請重設"</string>
<string name="shortcut_helper_customize_dialog_cancel_button_label" msgid="5595546460431741178">"取消"</string>
<string name="shortcut_helper_add_shortcut_dialog_placeholder" msgid="9154297849458741995">"按下按鍵"</string>
- <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="3325858369539848162">"這組按鍵已在使用中,請試試其他組合。"</string>
+ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="3325858369539848162">"按鍵組合重複,請試試其他組合。"</string>
<string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"無法設定捷徑。"</string>
<string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string>
<string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"新增快速鍵"</string>
@@ -1512,12 +1515,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"你已完成「查看最近使用的應用程式」手勢教學課程。"</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"如要查看最近使用的應用程式,請在觸控板上用三指向上滑動並按住"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"切換應用程式"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"在觸控板上用四指向右滑動"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"太棒了!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"你已完成應用程式切換手勢的教學課程。"</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"在觸控板上用四指向右滑動,即可切換應用程式"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"查看所有應用程式"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"按下鍵盤上的快捷操作鍵"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"非常好!"</string>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index 16d223d858df..445bdc013dfb 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -252,6 +252,10 @@
<string name="accessibility_battery_unknown" msgid="1807789554617976440">"Iphesenti lebhethri alaziwa."</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Xhuma ku-<xliff:g id="BLUETOOTH">%s</xliff:g>."</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"Ixhumeke ku-<xliff:g id="CAST">%s</xliff:g>."</string>
+ <!-- no translation found for accessibility_expand_group (521237935987978624) -->
+ <skip />
+ <!-- no translation found for accessibility_open_application (1749126077501259712) -->
+ <skip />
<string name="accessibility_not_connected" msgid="4061305616351042142">"Akuxhunyiwe"</string>
<string name="data_connection_roaming" msgid="375650836665414797">"Iyazulazula"</string>
<string name="cell_data_off" msgid="4886198950247099526">"Valiwe"</string>
@@ -538,11 +542,10 @@
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Ukuze uvule i-app usebenzisa iwijethi, uzodinga ukuqinisekisa ukuthi nguwe. Futhi, khumbula ukuthi noma ubani angakwazi ukuzibuka, nanoma ithebhulethi yakho ikhiyiwe. Amanye amawijethi kungenzeka abengahloselwe ukukhiya isikrini sakho futhi kungenzeka awaphephile ukuthi angafakwa lapha."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Ngiyezwa"</string>
<string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"Bonisa inkinobho yesigcini sesikrini"</string>
- <!-- no translation found for hub_onboarding_bottom_sheet_title (162092881395529947) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_text (8589816797970240544) -->
- <skip />
- <!-- no translation found for hub_onboarding_bottom_sheet_action_button (6161983690157872829) -->
+ <string name="hub_onboarding_bottom_sheet_title" msgid="162092881395529947">"Hlola imodi yehabhu"</string>
+ <string name="hub_onboarding_bottom_sheet_text" msgid="8589816797970240544">"Finyelela amawijethi akho ayintandokazi nezigcinisikrini ngenkathi ushaja."</string>
+ <string name="hub_onboarding_bottom_sheet_action_button" msgid="6161983690157872829">"Asihambe"</string>
+ <!-- no translation found for glanceable_hub_to_dream_button_tooltip (9018287673822335829) -->
<skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Shintsha umsebenzisi"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"imenyu yokudonsela phansi"</string>
@@ -806,10 +809,10 @@
<string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Ivela phezu kwezaziso zengxoxo futhi njengesithombe sephrofayela esikrinini sokukhiya, ivela njengebhamuza, ukuphazamisa okuthi Ungaphazamisi"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Okubalulekile"</string>
<string name="no_shortcut" msgid="8257177117568230126">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> ayisekeli izici zengxoxo"</string>
- <!-- no translation found for notification_inline_dismiss (88423586921134258) -->
- <skip />
- <!-- no translation found for notification_inline_disable_promotion (6880961831026048166) -->
+ <!-- no translation found for notification_guts_bundle_feedback (7581587973879656500) -->
<skip />
+ <string name="notification_inline_dismiss" msgid="88423586921134258">"Chitha"</string>
+ <string name="notification_inline_disable_promotion" msgid="6880961831026048166">"Ungabonisi futhi"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Lezi zaziso azikwazi ukushintshwa."</string>
<string name="notification_unblockable_call_desc" msgid="5907328164696532169">"Izaziso zekholi azikwazi ukushintshwa."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Leli qembu lezaziso alikwazi ukulungiselelwa lapha"</string>
@@ -920,16 +923,14 @@
<string name="keyboard_shortcut_group_applications_calendar" msgid="4229602992120154157">"Ikhalenda"</string>
<string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"Isibali"</string>
<string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"I-Maps"</string>
- <!-- no translation found for group_accessibility_toggle_bounce_keys (4183584952493519179) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_mouse_keys (534757719357514361) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_sticky_keys (7722214637652104184) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_slow_keys (8569881436531795062) -->
- <skip />
- <!-- no translation found for group_accessibility_toggle_voice_access (5436708239015479017) -->
- <skip />
+ <string name="group_accessibility_toggle_bounce_keys" msgid="4183584952493519179">"Guqula okhiye abaphindwayo"</string>
+ <string name="group_accessibility_toggle_mouse_keys" msgid="534757719357514361">"Guqula okhiye bemawusi"</string>
+ <string name="group_accessibility_toggle_sticky_keys" msgid="7722214637652104184">"Guqula okhiye abanamathelayo"</string>
+ <string name="group_accessibility_toggle_slow_keys" msgid="8569881436531795062">"Guqula okhiye abanensayo"</string>
+ <string name="group_accessibility_toggle_voice_access" msgid="5436708239015479017">"Guqula Ukufinyelela Kwezwi"</string>
+ <string name="group_accessibility_toggle_talkback" msgid="5017967056006325713">"Guqula ITalkback"</string>
+ <string name="group_accessibility_toggle_magnification" msgid="3892267763383743128">"Guqula Ukukhuliswa"</string>
+ <string name="group_accessibility_activate_select_to_speak" msgid="9157775915495428592">"Sebenzisa okuthi Khetha ukuze Ukhulume"</string>
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"Ungaphazamisi"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"Izinqamuleli zezinkinobho zevolomu"</string>
<string name="battery" msgid="769686279459897127">"Ibhethri"</string>
@@ -1309,6 +1310,8 @@
<string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Sebenzisa izigxivizo zeminwe ukuvula"</string>
<string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Ukufakazela ubuqiniso budingekile. Thinta inzwa yezigxivizo zeminwe ukuze uqinisekise."</string>
<string name="ongoing_call_content_description" msgid="6394763878322348560">"Ikholi eqhubekayo"</string>
+ <!-- no translation found for ongoing_notification_extra_content_description (2098752668861351265) -->
+ <skip />
<string name="mobile_data_settings_title" msgid="3955246641380064901">"Idatha yeselula"</string>
<string name="mobile_data_connection_active" msgid="944490013299018227">"Ixhunyiwe"</string>
<string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Ixhume okwesikhashana"</string>
@@ -1514,12 +1517,10 @@
<string name="touchpad_recent_apps_gesture_success_body" msgid="4334263906697493273">"Uqedele ukubuka ukuthinta kwama-app akamuva."</string>
<string name="touchpad_recent_gesture_error_body" msgid="8695535720378462022">"Ukuze ubuke ama-app akamuva, swayiphela phezulu futhi ubambe usebenzisa iminwe emithathu kuphedi yakho yokuthinta"</string>
<string name="touchpad_switch_apps_gesture_action_title" msgid="6835222344612924512">"Shintsha ama-app"</string>
- <!-- no translation found for touchpad_switch_apps_gesture_guidance (2554844933805502538) -->
- <skip />
+ <string name="touchpad_switch_apps_gesture_guidance" msgid="2554844933805502538">"Swayiphela ngakwesokudla usebenzisa iminwe emine ephedini yokuthinta yakho"</string>
<string name="touchpad_switch_apps_gesture_success_title" msgid="4894947244328032458">"Umsebenzi omuhle!"</string>
<string name="touchpad_switch_apps_gesture_success_body" msgid="8151089866035126312">"Ukuqedile ukuthinta kokushintsha ama-app."</string>
- <!-- no translation found for touchpad_switch_gesture_error_body (5895231916964677918) -->
- <skip />
+ <string name="touchpad_switch_gesture_error_body" msgid="5895231916964677918">"Swayiphela ngakwesokudla usebenzisa iminwe emine ephedini yokuthinta yakho ukuze ushintshe ama-app"</string>
<string name="tutorial_action_key_title" msgid="8172535792469008169">"Buka wonke ama-app"</string>
<string name="tutorial_action_key_guidance" msgid="5040613427202799294">"Cindezela inkinobho yokufinyelela kukhibhodi yakho"</string>
<string name="tutorial_action_key_success_title" msgid="2371827347071979571">"Wenze kahle!"</string>
diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml
index 015e0e83e57d..5f8f77993245 100644
--- a/packages/SystemUI/res/values/colors.xml
+++ b/packages/SystemUI/res/values/colors.xml
@@ -145,6 +145,9 @@
<color name="smart_reply_button_background">#ffffffff</color>
<color name="smart_reply_button_stroke">@*android:color/accent_device_default</color>
+ <!-- Magic Action colors -->
+ <color name="magic_action_button_text_color">@androidprv:color/materialColorOnSurfaceVariant</color>
+
<!-- Biometric dialog colors -->
<color name="biometric_dialog_gray">#ff757575</color>
<color name="biometric_dialog_accent">@color/material_dynamic_primary40</color>
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 68e33f27aefa..9b8926e921c9 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -1107,7 +1107,7 @@
<!-- The dream component used when the device is low light environment. -->
<string translatable="false" name="config_lowLightDreamComponent"/>
- <!--Whether we should position magic portrait shape effects in the center of lockscreen
- it's false by default, and only be true in tablet landscape -->
- <bool name="center_align_magic_portrait_shape">false</bool>
+ <!-- Configuration for wallpaper focal area -->
+ <bool name="center_align_focal_area_shape">false</bool>
+ <string name="focal_area_target" translatable="false" />
</resources>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 42d66e23feb9..2d3c07b93cb1 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -951,6 +951,8 @@
<dimen name="communal_widget_picker_desired_width">360dp</dimen>
<dimen name="communal_widget_picker_desired_height">240dp</dimen>
+ <dimen name="communal_to_dream_button_size">48dp</dimen>
+
<!-- The width/height of the unlock icon view on keyguard. -->
<dimen name="keyguard_lock_height">42dp</dimen>
<dimen name="keyguard_lock_padding">20dp</dimen>
@@ -1127,6 +1129,17 @@
<dimen name="smart_action_button_icon_padding">8dp</dimen>
<dimen name="smart_action_button_outline_stroke_width">2dp</dimen>
+ <!-- Magic Action params. -->
+ <!-- Corner radius = half of min_height to create rounded sides. -->
+ <dimen name="magic_action_button_corner_radius">16dp</dimen>
+ <dimen name="magic_action_button_icon_size">20dp</dimen>
+ <dimen name="magic_action_button_outline_stroke_width">1dp</dimen>
+ <dimen name="magic_action_button_padding_horizontal">12dp</dimen>
+ <dimen name="magic_action_button_inset_vertical">8dp</dimen>
+ <dimen name="magic_action_button_drawable_padding">8dp</dimen>
+ <dimen name="magic_action_button_touch_target_height">48dp</dimen>
+ <dimen name="magic_action_button_font_size">12sp</dimen>
+
<!-- A reasonable upper bound for the height of the smart reply button. The measuring code
needs to start with a guess for the maximum size. Currently two-line smart reply buttons
add about 88dp of height to the notifications. -->
@@ -1521,11 +1534,11 @@
<dimen name="media_output_dialog_icon_corner_radius">16dp</dimen>
<dimen name="media_output_dialog_title_anim_y_delta">12.5dp</dimen>
<dimen name="media_output_dialog_background_radius">16dp</dimen>
- <dimen name="media_output_dialog_active_background_radius">30dp</dimen>
- <dimen name="media_output_dialog_default_margin_end">16dp</dimen>
- <dimen name="media_output_dialog_selectable_margin_end">80dp</dimen>
+ <dimen name="media_output_dialog_active_background_radius">32dp</dimen>
+ <dimen name="media_output_dialog_item_height">64dp</dimen>
+ <dimen name="media_output_dialog_margin_horizontal">16dp</dimen>
<dimen name="media_output_dialog_list_padding_top">8dp</dimen>
- <dimen name="media_output_dialog_icon_left_radius">28dp</dimen>
+ <dimen name="media_output_dialog_icon_left_radius">@dimen/media_output_dialog_active_background_radius</dimen>
<dimen name="media_output_dialog_icon_right_radius">0dp</dimen>
<!-- Distance that the full shade transition takes in order to complete by tapping on a button
@@ -1781,6 +1794,7 @@
<dimen name="wallet_button_vertical_padding">8dp</dimen>
<!-- Ongoing activity chip -->
+ <dimen name="ongoing_activity_chip_min_text_width">12dp</dimen>
<dimen name="ongoing_activity_chip_max_text_width">74dp</dimen>
<dimen name="ongoing_activity_chip_margin_start">5dp</dimen>
<!-- The activity chip side padding, used with the default phone icon. -->
@@ -1990,10 +2004,14 @@
</item>
<!-- The padding applied to the dream overlay container -->
- <dimen name="dream_overlay_container_padding_start">0dp</dimen>
- <dimen name="dream_overlay_container_padding_end">0dp</dimen>
+ <dimen name="dream_overlay_container_padding_start">40dp</dimen>
+ <dimen name="dream_overlay_container_padding_end">40dp</dimen>
<dimen name="dream_overlay_container_padding_top">0dp</dimen>
- <dimen name="dream_overlay_container_padding_bottom">0dp</dimen>
+ <dimen name="dream_overlay_container_padding_bottom">40dp</dimen>
+ <dimen name="dream_overlay_container_small_padding_start">32dp</dimen>
+ <dimen name="dream_overlay_container_small_padding_end">32dp</dimen>
+ <dimen name="dream_overlay_container_small_padding_top">0dp</dimen>
+ <dimen name="dream_overlay_container_small_padding_bottom">32dp</dimen>
<!-- The margin applied between complications -->
<dimen name="dream_overlay_complication_margin">0dp</dimen>
@@ -2154,4 +2172,14 @@
<!-- Gradient color wallpaper start -->
<dimen name="gradient_color_wallpaper_center_offset">128dp</dimen>
<!-- Gradient color wallpaper end -->
+
+ <!-- Rear display mode -->
+ <dimen name="rear_display_dialog_slider_height">42dp</dimen>
+ <dimen name="rear_display_dialog_slider_corner_radius">21dp</dimen>
+ <!-- (rear_display_dialog_slider_height - rounded_slider_icon_size) / 2 -->
+ <dimen name="rear_display_dialog_slider_icon_inset">11dp</dimen>
+ <!-- rear_display_animation_width_opened - 2 * rear_display_dialog_slider_corner_radius -->
+ <dimen name="rear_display_progress_width">231dp</dimen>
+ <!-- Rear display mode end -->
+
</resources>
diff --git a/packages/SystemUI/res/values/ids.xml b/packages/SystemUI/res/values/ids.xml
index dc089e707ca3..47a9bd638088 100644
--- a/packages/SystemUI/res/values/ids.xml
+++ b/packages/SystemUI/res/values/ids.xml
@@ -234,6 +234,7 @@
<item type="id" name="nssl_placeholder" />
<item type="id" name="nssl_placeholder_barrier_bottom" />
<item type="id" name="small_clock_guideline_top" />
+ <item type="id" name="smart_space_barrier_top" />
<item type="id" name="smart_space_barrier_bottom" />
<item type="id" name="split_shade_guideline" />
<item type="id" name="start_button" />
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 84c859ccd5a9..d18a90a17abe 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -588,6 +588,12 @@
<!-- Content description of the cast label showing what we are connected to. [CHAR LIMIT=NONE] -->
<string name="accessibility_cast_name">Connected to <xliff:g id="cast" example="TV">%s</xliff:g>.</string>
+ <!-- Content description of the button to expand the group of devices. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_expand_group">Expand group.</string>
+
+ <!-- Content description of the button to open the application . [CHAR LIMIT=NONE] -->
+ <string name="accessibility_open_application">Open application.</string>
+
<!-- Content description of an item with no signal and no connection for accessibility (not shown on the screen) [CHAR LIMIT=NONE] -->
<string name="accessibility_not_connected">Not connected.</string>
<!-- Content description of the roaming data connection type. [CHAR LIMIT=NONE] -->
@@ -2081,9 +2087,8 @@
<!-- Text shown in notification guts for conversation notifications that don't implement the full feature -->
<string name="no_shortcut"><xliff:g id="app_name" example="YouTube">%1$s</xliff:g> doesn\u2019t support conversation features</string>
- <!-- TODO: b/381099727 - Mark translatable once feedback layout is finalized. -->
<!-- [CHAR LIMIT=80] Text shown in feedback button in notification guts for a bundled notification -->
- <string name="notification_guts_bundle_feedback" translatable="false">Provide Bundle Feedback</string>
+ <string name="notification_guts_bundle_feedback">Feedback</string>
<!-- [CHAR LIMIT=30] Text shown in button used to dismiss this single notification. -->
<string name="notification_inline_dismiss">Dismiss</string>
@@ -3395,6 +3400,8 @@
<!-- Content description for a chip in the status bar showing that the user is currently on a call. [CHAR LIMIT=NONE] -->
<string name="ongoing_call_content_description">Ongoing call</string>
+ <!-- Content description for a chip in the status bar showing that the user currently has an ongoing activity. [CHAR LIMIT=NONE]-->
+ <string name="ongoing_notification_extra_content_description">Ongoing</string>
<!-- Provider Model: Default title of the mobile network in the mobile layout. [CHAR LIMIT=50] -->
<string name="mobile_data_settings_title">Mobile data</string>
@@ -3649,6 +3656,8 @@
<string name="rear_display_accessibility_unfolded_animation">Foldable device being flipped around</string>
<!-- Text for a dialog telling the user that the front screen is turned on. [CHAR_LIMIT=NONE] -->
<string name="rear_display_unfolded_front_screen_on">Front screen turned on</string>
+ <!-- Text for a dialog telling the user that sliding the progress bar cancels rear display mode, bringing the system contents back to the inner display. [CHAR_LIMIT=NONE] -->
+ <string name="rear_display_unfolded_front_screen_on_slide_to_cancel">Slide to use inner screen</string>
<!-- QuickSettings: Additional label for the auto-rotation quicksettings tile indicating that the setting corresponds to the folded posture for a foldable device [CHAR LIMIT=32] -->
<string name="quick_settings_rotation_posture_folded">folded</string>
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index fa6a41a74ca9..5ef4d4014ba6 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -819,11 +819,6 @@
<item name="android:textColor">?attr/onSurfaceVariant</item>
</style>
- <style name="TextAppearance.QSEditTitle" >
- <item name="android:fontFamily">"gsf-title-medium-emphasized"</item>
- <item name="android:textColor">?attr/onSurfaceVariant</item>
- </style>
-
<style name="QSCustomizeToolbar" parent="@*android:style/Widget.DeviceDefault.Toolbar">
<item name="android:textColor">?attr/onSurface</item>
<item name="android:elevation">10dp</item>
diff --git a/packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/Utils.kt b/packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/Utils.kt
index 870e6e6bf803..5b99a3f16fc2 100644
--- a/packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/Utils.kt
+++ b/packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/Utils.kt
@@ -17,13 +17,6 @@ package com.android.systemui.biometrics
import android.Manifest
import android.app.ActivityTaskManager
-import android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC
-import android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC
-import android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_COMPLEX
-import android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_MANAGED
-import android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_NUMERIC
-import android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX
-import android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_SOMETHING
import android.content.Context
import android.content.pm.PackageManager
import android.graphics.Bitmap
@@ -44,6 +37,9 @@ import android.view.WindowMetrics
import android.view.accessibility.AccessibilityEvent
import android.view.accessibility.AccessibilityManager
import com.android.internal.widget.LockPatternUtils
+import com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PASSWORD
+import com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PATTERN
+import com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PIN
import com.android.systemui.biometrics.shared.model.PromptKind
object Utils {
@@ -80,7 +76,7 @@ object Utils {
view.notifySubtreeAccessibilityStateChanged(
view,
view,
- AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE
+ AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE,
)
}
@@ -94,14 +90,10 @@ object Utils {
@JvmStatic
fun getCredentialType(utils: LockPatternUtils, userId: Int): PromptKind =
- when (utils.getKeyguardStoredPasswordQuality(userId)) {
- PASSWORD_QUALITY_SOMETHING -> PromptKind.Pattern
- PASSWORD_QUALITY_NUMERIC,
- PASSWORD_QUALITY_NUMERIC_COMPLEX -> PromptKind.Pin
- PASSWORD_QUALITY_ALPHABETIC,
- PASSWORD_QUALITY_ALPHANUMERIC,
- PASSWORD_QUALITY_COMPLEX,
- PASSWORD_QUALITY_MANAGED -> PromptKind.Password
+ when (utils.getCredentialTypeForUser(userId)) {
+ CREDENTIAL_TYPE_PATTERN -> PromptKind.Pattern
+ CREDENTIAL_TYPE_PIN -> PromptKind.Pin
+ CREDENTIAL_TYPE_PASSWORD -> PromptKind.Password
else -> PromptKind.Password
}
@@ -112,7 +104,7 @@ object Utils {
@JvmStatic
fun <T : SensorPropertiesInternal> findFirstSensorProperties(
properties: List<T>?,
- sensorIds: IntArray
+ sensorIds: IntArray,
): T? = properties?.firstOrNull { sensorIds.contains(it.sensorId) }
@JvmStatic
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ILauncherProxy.aidl b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ILauncherProxy.aidl
index b43ffc530289..10b930381c44 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ILauncherProxy.aidl
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ILauncherProxy.aidl
@@ -146,9 +146,9 @@ oneway interface ILauncherProxy {
void onUnbind(IRemoteCallback reply) = 35;
/**
- * Sent when {@link TaskbarDelegate#onDisplayReady} is called.
+ * Sent when {@link TaskbarDelegate#onDisplayAddSystemDecorations} is called.
*/
- void onDisplayReady(int displayId) = 36;
+ void onDisplayAddSystemDecorations(int displayId) = 36;
/**
* Sent when {@link TaskbarDelegate#onDisplayRemoved} is called.
diff --git a/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt b/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt
index 71b622aa0608..1b8282bf9b93 100644
--- a/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt
+++ b/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt
@@ -564,6 +564,17 @@ constructor(
}
}
+ fun handleFidgetTap(x: Float, y: Float) {
+ if (!com.android.systemui.Flags.clockFidgetAnimation()) {
+ return
+ }
+
+ clock?.run {
+ smallClock.animations.onFidgetTap(x, y)
+ largeClock.animations.onFidgetTap(x, y)
+ }
+ }
+
private fun handleDoze(doze: Float) {
dozeAmount = doze
clock?.run {
diff --git a/packages/SystemUI/src/com/android/keyguard/EmergencyButton.java b/packages/SystemUI/src/com/android/keyguard/EmergencyButton.java
index 6ef7de4a32b5..777a50f0936a 100644
--- a/packages/SystemUI/src/com/android/keyguard/EmergencyButton.java
+++ b/packages/SystemUI/src/com/android/keyguard/EmergencyButton.java
@@ -16,10 +16,9 @@
package com.android.keyguard;
-import static com.android.systemui.Flags.gsfBouncer;
-
import android.content.Context;
import android.graphics.Typeface;
+import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.MotionEvent;
@@ -28,6 +27,9 @@ import android.view.ViewConfiguration;
import android.widget.Button;
import com.android.internal.util.EmergencyAffordanceManager;
+import com.android.systemui.Flags;
+import com.android.systemui.FontStyles;
+import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants;
/**
* This class implements a smart emergency button that updates itself based
@@ -72,6 +74,17 @@ public class EmergencyButton extends Button {
return false;
});
}
+ if (Flags.bouncerUiRevamp2()) {
+ setTypeface(Typeface.create(FontStyles.GSF_TITLE_MEDIUM, Typeface.NORMAL));
+ Drawable background = getBackground();
+ int bgColor = mContext.getColor(KeyguardBouncerConstants.Color.actionButtonBg);
+ if (background != null) {
+ background.setTint(bgColor);
+ } else {
+ setBackgroundColor(bgColor);
+ }
+ setTextColor(mContext.getColor(KeyguardBouncerConstants.Color.actionButtonText));
+ }
}
@Override
@@ -125,9 +138,6 @@ public class EmergencyButton extends Button {
textId = com.android.internal.R.string.lockscreen_emergency_call;
}
setText(textId);
- if (gsfBouncer()) {
- setTypeface(Typeface.create("gsf-title-medium", Typeface.NORMAL));
- }
} else {
setVisibility(View.GONE);
}
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java
index 63d4fe3f1b01..335a910eb106 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java
@@ -32,7 +32,7 @@ import static androidx.constraintlayout.widget.ConstraintSet.START;
import static androidx.constraintlayout.widget.ConstraintSet.TOP;
import static androidx.constraintlayout.widget.ConstraintSet.WRAP_CONTENT;
-import static com.android.systemui.Flags.gsfBouncer;
+import static com.android.systemui.Flags.bouncerUiRevamp2;
import static com.android.systemui.plugins.FalsingManager.LOW_PENALTY;
import static java.lang.Integer.max;
@@ -99,6 +99,7 @@ import com.android.keyguard.KeyguardSecurityModel.SecurityMode;
import com.android.settingslib.Utils;
import com.android.settingslib.drawable.CircleFramedDrawable;
import com.android.systemui.Flags;
+import com.android.systemui.FontStyles;
import com.android.systemui.Gefingerpoken;
import com.android.systemui.classifier.FalsingA11yDelegate;
import com.android.systemui.plugins.FalsingManager;
@@ -1348,8 +1349,9 @@ public class KeyguardSecurityContainer extends ConstraintLayout {
true);
mUserSwitcherViewGroup = mView.findViewById(R.id.keyguard_bouncer_user_switcher);
mUserSwitcher = mView.findViewById(R.id.user_switcher_header);
- if (gsfBouncer()) {
- mUserSwitcher.setTypeface(Typeface.create("gsf-label-medium", Typeface.NORMAL));
+ if (bouncerUiRevamp2()) {
+ mUserSwitcher.setTypeface(
+ Typeface.create(FontStyles.GSF_LABEL_MEDIUM, Typeface.NORMAL));
}
}
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
index c266a5b47cff..f6d0f4e26d26 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -37,6 +37,7 @@ import static android.hardware.biometrics.BiometricSourceType.FINGERPRINT;
import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN;
import static android.os.BatteryManager.CHARGING_POLICY_DEFAULT;
import static android.telephony.SubscriptionManager.PROFILE_CLASS_PROVISIONING;
+import static android.telephony.SubscriptionManager.SUBSCRIPTION_TYPE_REMOTE_SIM;
import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST;
import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT;
@@ -145,6 +146,9 @@ import com.android.systemui.deviceentry.shared.model.HelpFaceAuthenticationStatu
import com.android.systemui.deviceentry.shared.model.SuccessFaceAuthenticationStatus;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.dump.DumpsysTableLogger;
+import com.android.systemui.keyguard.KeyguardWmStateRefactor;
+import com.android.systemui.keyguard.domain.interactor.KeyguardServiceShowLockscreenInteractor;
+import com.android.systemui.keyguard.domain.interactor.ShowWhileAwakeReason;
import com.android.systemui.keyguard.shared.constants.TrustAgentUiEvent;
import com.android.systemui.log.SessionTracker;
import com.android.systemui.plugins.clocks.WeatherData;
@@ -296,7 +300,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
private final Provider<JavaAdapter> mJavaAdapter;
private final Provider<SceneInteractor> mSceneInteractor;
private final Provider<AlternateBouncerInteractor> mAlternateBouncerInteractor;
- private final CommunalSceneInteractor mCommunalSceneInteractor;
+ private final Provider<CommunalSceneInteractor> mCommunalSceneInteractor;
+ private final KeyguardServiceShowLockscreenInteractor mKeyguardServiceShowLockscreenInteractor;
private final AuthController mAuthController;
private final UiEventLogger mUiEventLogger;
private final Set<String> mAllowFingerprintOnOccludingActivitiesFromPackage;
@@ -689,13 +694,16 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
* @return List of SubscriptionInfo records, maybe empty but never null.
*
* Note that this method will filter out any subscription which is PROFILE_CLASS_PROVISIONING
+ * and REMOTE SIMs. REMOTE SIMs use an invalid slot index (-1).
*/
public List<SubscriptionInfo> getSubscriptionInfo(boolean forceReload) {
List<SubscriptionInfo> sil = mSubscriptionInfo;
if (sil == null || forceReload) {
mSubscriptionInfo = mSubscriptionManager.getCompleteActiveSubscriptionInfoList()
.stream()
- .filter(subInfo -> subInfo.getProfileClass() != PROFILE_CLASS_PROVISIONING)
+ .filter(subInfo ->
+ subInfo.getProfileClass() != PROFILE_CLASS_PROVISIONING
+ && subInfo.getSubscriptionType() != SUBSCRIPTION_TYPE_REMOTE_SIM)
.toList();
}
@@ -2210,7 +2218,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
Provider<AlternateBouncerInteractor> alternateBouncerInteractor,
Provider<JavaAdapter> javaAdapter,
Provider<SceneInteractor> sceneInteractor,
- CommunalSceneInteractor communalSceneInteractor) {
+ Provider<CommunalSceneInteractor> communalSceneInteractor,
+ KeyguardServiceShowLockscreenInteractor keyguardServiceShowLockscreenInteractor) {
mContext = context;
mSubscriptionManager = subscriptionManager;
mUserTracker = userTracker;
@@ -2260,6 +2269,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
mJavaAdapter = javaAdapter;
mSceneInteractor = sceneInteractor;
mCommunalSceneInteractor = communalSceneInteractor;
+ mKeyguardServiceShowLockscreenInteractor = keyguardServiceShowLockscreenInteractor;
mHandler = new Handler(mainLooper) {
@Override
@@ -2541,9 +2551,16 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
);
}
+ if (KeyguardWmStateRefactor.isEnabled()) {
+ mJavaAdapter.get().alwaysCollectFlow(
+ mKeyguardServiceShowLockscreenInteractor.getShowNowEvents(),
+ this::onKeyguardServiceShowLockscreenNowEvents
+ );
+ }
+
if (glanceableHubV2()) {
mJavaAdapter.get().alwaysCollectFlow(
- mCommunalSceneInteractor.isCommunalVisible(),
+ mCommunalSceneInteractor.get().isCommunalVisible(),
this::onCommunalShowingChanged
);
}
@@ -2574,6 +2591,12 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
handlePrimaryBouncerChanged(primaryBouncerIsOrWillBeShowing, primaryBouncerFullyShown);
}
+ void onKeyguardServiceShowLockscreenNowEvents(ShowWhileAwakeReason reason) {
+ if (reason == ShowWhileAwakeReason.FOLDED_WITH_SWIPE_UP_TO_CONTINUE) {
+ mMainExecutor.execute(this::tryForceIsDismissibleKeyguard);
+ }
+ }
+
private void initializeSimState() {
// Set initial sim states values.
for (int slot = 0; slot < mTelephonyManager.getActiveModemCount(); slot++) {
diff --git a/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java b/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java
index dccf53a369ac..2f74158107f2 100644
--- a/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java
+++ b/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java
@@ -15,12 +15,6 @@
*/
package com.android.keyguard;
-import static com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.ColorId.NUM_PAD_BACKGROUND;
-import static com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.ColorId.NUM_PAD_BACKGROUND_PRESSED;
-import static com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.ColorId.NUM_PAD_BUTTON;
-import static com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.ColorId.NUM_PAD_KEY;
-import static com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.ColorId.NUM_PAD_PRESSED;
-
import android.animation.AnimatorSet;
import android.animation.ArgbEvaluator;
import android.animation.ValueAnimator;
@@ -35,7 +29,9 @@ import android.widget.TextView;
import androidx.annotation.StyleRes;
-import com.android.app.animation.Interpolators;
+import com.android.systemui.Flags;
+import com.android.systemui.bouncer.shared.constants.PinBouncerConstants.Animation;
+import com.android.systemui.bouncer.shared.constants.PinBouncerConstants.Color;
/**
* Provides background color and radius animations for key pad buttons.
@@ -58,11 +54,6 @@ class NumPadAnimator {
private int mHeight;
private int mWidth;
- private static final int EXPAND_ANIMATION_MS = 100;
- private static final int EXPAND_COLOR_ANIMATION_MS = 50;
- private static final int CONTRACT_ANIMATION_DELAY_MS = 33;
- private static final int CONTRACT_ANIMATION_MS = 417;
-
NumPadAnimator(Context context, final Drawable drawable,
@StyleRes int style, Drawable buttonImage) {
this(context, drawable, style, null, buttonImage);
@@ -122,44 +113,46 @@ class NumPadAnimator {
void reloadColors(Context context) {
boolean isNumPadKey = mImageButton == null;
- int[] customAttrs = {android.R.attr.colorControlNormal};
- ContextThemeWrapper ctw = new ContextThemeWrapper(context, mStyle);
- @SuppressLint("ResourceType") TypedArray a = ctw.obtainStyledAttributes(customAttrs);
+ if (!Flags.bouncerUiRevamp2()) {
+ int[] customAttrs = {android.R.attr.colorControlNormal};
+ ContextThemeWrapper ctw = new ContextThemeWrapper(context, mStyle);
+ @SuppressLint("ResourceType") TypedArray a = ctw.obtainStyledAttributes(customAttrs);
- mNormalBackgroundColor = a.getColor(0, context.getColor(NUM_PAD_BACKGROUND));
+ mNormalBackgroundColor = a.getColor(0, context.getColor(Color.digitBg));
- a.recycle();
+ a.recycle();
+ } else {
+ mNormalBackgroundColor = context.getColor(isNumPadKey ? Color.digitBg : Color.actionBg);
+ }
- mPressedBackgroundColor = context.getColor(NUM_PAD_BACKGROUND_PRESSED);
- mTextColorPressed = context.getColor(NUM_PAD_PRESSED);
+ mPressedBackgroundColor = context.getColor(Color.bgPressed);
+ mTextColorPressed = context.getColor(Color.digitPressed);
mBackground.setColor(mNormalBackgroundColor);
- mTextColorPrimary = isNumPadKey
- ? context.getColor(NUM_PAD_KEY)
- : context.getColor(NUM_PAD_BUTTON);
+ mTextColorPrimary = context.getColor(isNumPadKey ? Color.digit : Color.action);
createAnimators();
}
private void createAnimators() {
// Actual values will be updated later, usually during an onLayout() call
mExpandAnimator = ValueAnimator.ofFloat(0f, 1f);
- mExpandAnimator.setDuration(EXPAND_ANIMATION_MS);
- mExpandAnimator.setInterpolator(Interpolators.LINEAR);
+ mExpandAnimator.setDuration(Animation.expansionDuration);
+ mExpandAnimator.setInterpolator(Animation.expansionInterpolator);
mExpandAnimator.addUpdateListener(
anim -> mBackground.setCornerRadius((float) anim.getAnimatedValue()));
ValueAnimator expandBackgroundColorAnimator = ValueAnimator.ofObject(new ArgbEvaluator(),
mNormalBackgroundColor, mPressedBackgroundColor);
- expandBackgroundColorAnimator.setDuration(EXPAND_COLOR_ANIMATION_MS);
- expandBackgroundColorAnimator.setInterpolator(Interpolators.LINEAR);
+ expandBackgroundColorAnimator.setDuration(Animation.expansionColorDuration);
+ expandBackgroundColorAnimator.setInterpolator(Animation.expansionInterpolator);
expandBackgroundColorAnimator.addUpdateListener(
animator -> mBackground.setColor((int) animator.getAnimatedValue()));
ValueAnimator expandTextColorAnimator =
ValueAnimator.ofObject(new ArgbEvaluator(),
mTextColorPrimary, mTextColorPressed);
- expandTextColorAnimator.setInterpolator(Interpolators.LINEAR);
- expandTextColorAnimator.setDuration(EXPAND_COLOR_ANIMATION_MS);
+ expandTextColorAnimator.setInterpolator(Animation.expansionInterpolator);
+ expandTextColorAnimator.setDuration(Animation.expansionColorDuration);
expandTextColorAnimator.addUpdateListener(valueAnimator -> {
if (mDigitTextView != null) {
mDigitTextView.setTextColor((int) valueAnimator.getAnimatedValue());
@@ -174,25 +167,25 @@ class NumPadAnimator {
expandBackgroundColorAnimator, expandTextColorAnimator);
mContractAnimator = ValueAnimator.ofFloat(1f, 0f);
- mContractAnimator.setStartDelay(CONTRACT_ANIMATION_DELAY_MS);
- mContractAnimator.setDuration(CONTRACT_ANIMATION_MS);
- mContractAnimator.setInterpolator(Interpolators.FAST_OUT_SLOW_IN);
+ mContractAnimator.setStartDelay(Animation.contractionStartDelay);
+ mContractAnimator.setDuration(Animation.contractionDuration);
+ mContractAnimator.setInterpolator(Animation.contractionRadiusInterpolator);
mContractAnimator.addUpdateListener(
anim -> mBackground.setCornerRadius((float) anim.getAnimatedValue()));
ValueAnimator contractBackgroundColorAnimator = ValueAnimator.ofObject(new ArgbEvaluator(),
mPressedBackgroundColor, mNormalBackgroundColor);
- contractBackgroundColorAnimator.setInterpolator(Interpolators.LINEAR);
- contractBackgroundColorAnimator.setStartDelay(CONTRACT_ANIMATION_DELAY_MS);
- contractBackgroundColorAnimator.setDuration(CONTRACT_ANIMATION_MS);
+ contractBackgroundColorAnimator.setInterpolator(Animation.contractionColorInterpolator);
+ contractBackgroundColorAnimator.setStartDelay(Animation.contractionStartDelay);
+ contractBackgroundColorAnimator.setDuration(Animation.contractionDuration);
contractBackgroundColorAnimator.addUpdateListener(
animator -> mBackground.setColor((int) animator.getAnimatedValue()));
ValueAnimator contractTextColorAnimator =
ValueAnimator.ofObject(new ArgbEvaluator(), mTextColorPressed,
mTextColorPrimary);
- contractTextColorAnimator.setInterpolator(Interpolators.LINEAR);
- contractTextColorAnimator.setStartDelay(CONTRACT_ANIMATION_DELAY_MS);
- contractTextColorAnimator.setDuration(CONTRACT_ANIMATION_MS);
+ contractTextColorAnimator.setInterpolator(Animation.contractionColorInterpolator);
+ contractTextColorAnimator.setStartDelay(Animation.contractionStartDelay);
+ contractTextColorAnimator.setDuration(Animation.contractionDuration);
contractTextColorAnimator.addUpdateListener(valueAnimator -> {
if (mDigitTextView != null) {
mDigitTextView.setTextColor((int) valueAnimator.getAnimatedValue());
diff --git a/packages/SystemUI/src/com/android/keyguard/NumPadButton.java b/packages/SystemUI/src/com/android/keyguard/NumPadButton.java
index d7799bf505bd..0ff93236a856 100644
--- a/packages/SystemUI/src/com/android/keyguard/NumPadButton.java
+++ b/packages/SystemUI/src/com/android/keyguard/NumPadButton.java
@@ -15,9 +15,6 @@
*/
package com.android.keyguard;
-import static com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.ColorId.NUM_PAD_BUTTON;
-import static com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.ColorId.NUM_PAD_KEY;
-
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.Configuration;
@@ -30,6 +27,8 @@ import android.view.accessibility.AccessibilityNodeInfo;
import androidx.annotation.Nullable;
+import com.android.systemui.Flags;
+import com.android.systemui.bouncer.shared.constants.PinBouncerConstants.Color;
import com.android.systemui.res.R;
/**
@@ -99,7 +98,7 @@ public class NumPadButton extends AlphaOptimizedImageButton implements NumPadAni
public void reloadColors() {
if (mAnimator != null) mAnimator.reloadColors(getContext());
- int textColorResId = mIsTransparentMode ? NUM_PAD_KEY : NUM_PAD_BUTTON;
+ int textColorResId = mIsTransparentMode ? Color.actionWithAutoConfirm : Color.action;
int imageColor = getContext().getColor(textColorResId);
((VectorDrawable) getDrawable()).setTintList(ColorStateList.valueOf(imageColor));
}
@@ -126,7 +125,11 @@ public class NumPadButton extends AlphaOptimizedImageButton implements NumPadAni
if (isTransparentMode) {
setBackgroundColor(getResources().getColor(android.R.color.transparent));
} else {
- setBackground(getContext().getDrawable(R.drawable.num_pad_key_background));
+ Drawable bgDrawable = getContext().getDrawable(R.drawable.num_pad_key_background);
+ if (Flags.bouncerUiRevamp2() && bgDrawable != null) {
+ bgDrawable.setTint(Color.actionBg);
+ }
+ setBackground(bgDrawable);
}
setupAnimator();
reloadColors();
diff --git a/packages/SystemUI/src/com/android/keyguard/NumPadKey.java b/packages/SystemUI/src/com/android/keyguard/NumPadKey.java
index e8a702f5fca3..b152ff348e22 100644
--- a/packages/SystemUI/src/com/android/keyguard/NumPadKey.java
+++ b/packages/SystemUI/src/com/android/keyguard/NumPadKey.java
@@ -15,8 +15,7 @@
*/
package com.android.keyguard;
-import static com.android.systemui.Flags.gsfBouncer;
-import static com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.ColorId.NUM_PAD_KEY;
+import static com.android.systemui.Flags.bouncerUiRevamp2;
import android.content.Context;
import android.content.res.Configuration;
@@ -38,6 +37,8 @@ import android.widget.TextView;
import androidx.annotation.Nullable;
import com.android.settingslib.Utils;
+import com.android.systemui.FontStyles;
+import com.android.systemui.bouncer.shared.constants.PinBouncerConstants.Color;
import com.android.systemui.bouncer.ui.helper.BouncerHapticPlayer;
import com.android.systemui.res.R;
@@ -144,6 +145,11 @@ public class NumPadKey extends ViewGroup implements NumPadAnimationListener {
} else {
mAnimator = null;
}
+
+ if (bouncerUiRevamp2()) {
+ mDigitText.setTypeface(
+ Typeface.create(FontStyles.GSF_LABEL_LARGE_EMPHASIZED, Typeface.NORMAL));
+ }
}
@Override
@@ -155,13 +161,10 @@ public class NumPadKey extends ViewGroup implements NumPadAnimationListener {
* Reload colors from resources.
**/
public void reloadColors() {
- int textColor = getContext().getColor(NUM_PAD_KEY);
+ int textColor = getContext().getColor(Color.digit);
int klondikeColor = Utils.getColorAttr(getContext(), android.R.attr.textColorSecondary)
.getDefaultColor();
mDigitText.setTextColor(textColor);
- if (gsfBouncer()) {
- mDigitText.setTypeface(Typeface.create("gsf-label-large-emphasized", Typeface.NORMAL));
- }
mKlondikeText.setTextColor(klondikeColor);
if (mAnimator != null) mAnimator.reloadColors(getContext());
diff --git a/packages/SystemUI/src/com/android/keyguard/PinShapeAdapter.kt b/packages/SystemUI/src/com/android/keyguard/PinShapeAdapter.kt
index 8d1bbb29267b..3640d0dfeafa 100644
--- a/packages/SystemUI/src/com/android/keyguard/PinShapeAdapter.kt
+++ b/packages/SystemUI/src/com/android/keyguard/PinShapeAdapter.kt
@@ -17,7 +17,7 @@
package com.android.keyguard
import android.content.Context
-import com.android.systemui.res.R
+import com.android.systemui.bouncer.shared.constants.PinBouncerConstants
import kotlin.random.Random
class PinShapeAdapter {
@@ -25,7 +25,7 @@ class PinShapeAdapter {
val random = Random(System.currentTimeMillis())
constructor(context: Context) {
- val availableShapes = context.resources.obtainTypedArray(R.array.bouncer_pin_shapes)
+ val availableShapes = context.resources.obtainTypedArray(PinBouncerConstants.pinShapes)
for (i in 0 until availableShapes.length()) {
val shape = availableShapes.getResourceId(i, 0)
diff --git a/packages/SystemUI/src/com/android/keyguard/PinShapeHintingView.java b/packages/SystemUI/src/com/android/keyguard/PinShapeHintingView.java
index bac9dacef9e1..3480e5b56c80 100644
--- a/packages/SystemUI/src/com/android/keyguard/PinShapeHintingView.java
+++ b/packages/SystemUI/src/com/android/keyguard/PinShapeHintingView.java
@@ -28,6 +28,9 @@ import android.widget.LinearLayout;
import androidx.core.graphics.drawable.DrawableCompat;
+import com.android.systemui.Flags;
+import com.android.systemui.bouncer.shared.constants.PinBouncerConstants;
+import com.android.systemui.bouncer.shared.constants.PinBouncerConstants.Color;
import com.android.systemui.res.R;
/**
@@ -38,6 +41,7 @@ public class PinShapeHintingView extends LinearLayout implements PinShapeInput {
private int mPinLength;
private int mDotDiameter;
+ @Deprecated
private int mColor = getContext().getColor(PIN_SHAPES);
private int mPosition = 0;
private static final int DEFAULT_PIN_LENGTH = 6;
@@ -53,10 +57,10 @@ public class PinShapeHintingView extends LinearLayout implements PinShapeInput {
ImageView pinDot = new ImageView(context, attrs);
LayoutParams layoutParams = new LayoutParams(mDotDiameter, mDotDiameter);
pinDot.setLayoutParams(layoutParams);
- pinDot.setImageResource(R.drawable.pin_dot_avd);
+ pinDot.setImageResource(PinBouncerConstants.pinDotAvd);
if (pinDot.getDrawable() != null) {
Drawable drawable = DrawableCompat.wrap(pinDot.getDrawable());
- DrawableCompat.setTint(drawable, mColor);
+ DrawableCompat.setTint(drawable, getPinHintDotColor());
}
addView(pinDot);
}
@@ -67,7 +71,8 @@ public class PinShapeHintingView extends LinearLayout implements PinShapeInput {
if (mPosition == DEFAULT_PIN_LENGTH) {
return;
}
- setAnimatedDrawable(mPosition, mPinShapeAdapter.getShape(mPosition));
+ setAnimatedDrawable((ImageView) getChildAt(mPosition), mPinShapeAdapter.getShape(mPosition),
+ getPinShapeColor());
mPosition++;
}
@@ -77,7 +82,8 @@ public class PinShapeHintingView extends LinearLayout implements PinShapeInput {
return;
}
mPosition--;
- setAnimatedDrawable(mPosition, R.drawable.pin_dot_delete_avd);
+ setAnimatedDrawable((ImageView) getChildAt(mPosition), PinBouncerConstants.pinDeleteAvd,
+ getPinHintDotColor());
}
@Override
@@ -99,15 +105,32 @@ public class PinShapeHintingView extends LinearLayout implements PinShapeInput {
return this;
}
- private void setAnimatedDrawable(int position, int drawableResId) {
- ImageView pinDot = (ImageView) getChildAt(position);
+ private static void setAnimatedDrawable(ImageView pinDot, int drawableResId,
+ int drawableColor) {
pinDot.setImageResource(drawableResId);
if (pinDot.getDrawable() != null) {
Drawable drawable = DrawableCompat.wrap(pinDot.getDrawable());
- DrawableCompat.setTint(drawable, mColor);
+ DrawableCompat.setTint(drawable, drawableColor);
}
if (pinDot.getDrawable() instanceof AnimatedVectorDrawable) {
((AnimatedVectorDrawable) pinDot.getDrawable()).start();
}
}
+
+ private int getPinHintDotColor() {
+ if (Flags.bouncerUiRevamp2()) {
+ return mContext.getColor(Color.hintDot);
+ } else {
+ return mColor;
+ }
+ }
+
+ private int getPinShapeColor() {
+ if (Flags.bouncerUiRevamp2()) {
+ return mContext.getColor(Color.shape);
+ } else {
+ return mColor;
+ }
+ }
+
}
diff --git a/packages/SystemUI/src/com/android/keyguard/PinShapeNonHintingView.java b/packages/SystemUI/src/com/android/keyguard/PinShapeNonHintingView.java
index 26a774e991a0..8b991742d818 100644
--- a/packages/SystemUI/src/com/android/keyguard/PinShapeNonHintingView.java
+++ b/packages/SystemUI/src/com/android/keyguard/PinShapeNonHintingView.java
@@ -39,6 +39,8 @@ import android.widget.LinearLayout;
import androidx.core.graphics.drawable.DrawableCompat;
import com.android.app.animation.Interpolators;
+import com.android.systemui.Flags;
+import com.android.systemui.bouncer.shared.constants.PinBouncerConstants.Color;
import com.android.systemui.res.R;
/**
@@ -48,6 +50,7 @@ import com.android.systemui.res.R;
public class PinShapeNonHintingView extends LinearLayout implements PinShapeInput {
private static final int RESET_STAGGER_DELAY = 40;
private static final int RESET_MAX_DELAY = 200;
+ @Deprecated
private int mColor = getContext().getColor(PIN_SHAPES);
private int mPosition = 0;
private boolean mIsAnimatingReset = false;
@@ -88,7 +91,7 @@ public class PinShapeNonHintingView extends LinearLayout implements PinShapeInpu
pinDot.setImageResource(mPinShapeAdapter.getShape(mPosition));
if (pinDot.getDrawable() != null) {
Drawable wrappedDrawable = DrawableCompat.wrap(pinDot.getDrawable());
- DrawableCompat.setTint(wrappedDrawable, mColor);
+ DrawableCompat.setTint(wrappedDrawable, getPinShapeColor());
}
if (pinDot.getDrawable() instanceof AnimatedVectorDrawable) {
((AnimatedVectorDrawable) pinDot.getDrawable()).start();
@@ -216,4 +219,12 @@ public class PinShapeNonHintingView extends LinearLayout implements PinShapeInpu
return animator;
}
}
+
+ private int getPinShapeColor() {
+ if (Flags.bouncerUiRevamp2()) {
+ return mContext.getColor(Color.shape);
+ } else {
+ return mColor;
+ }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/BootCompleteCacheImpl.kt b/packages/SystemUI/src/com/android/systemui/BootCompleteCacheImpl.kt
index 3a9a238d90a6..cadef52ce4cc 100644
--- a/packages/SystemUI/src/com/android/systemui/BootCompleteCacheImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/BootCompleteCacheImpl.kt
@@ -41,7 +41,7 @@ class BootCompleteCacheImpl @Inject constructor(dumpManager: DumpManager) :
}
init {
- dumpManager.registerDumpable(TAG, this)
+ dumpManager.registerNormalDumpable(TAG, this)
}
@GuardedBy("listeners")
diff --git a/packages/SystemUI/src/com/android/systemui/FontStyles.kt b/packages/SystemUI/src/com/android/systemui/FontStyles.kt
index d8cd6c87a1ac..5315dcbc4790 100644
--- a/packages/SystemUI/src/com/android/systemui/FontStyles.kt
+++ b/packages/SystemUI/src/com/android/systemui/FontStyles.kt
@@ -18,11 +18,45 @@ package com.android.systemui
/** String tokens for the different GSF font families. */
object FontStyles {
+ // baseline
+ const val GSF_DISPLAY_LARGE = "variable-display-large"
+ const val GSF_DISPLAY_MEDIUM = "variable-display-medium"
+ const val GSF_DISPLAY_SMALL = "variable-display-small"
- const val GSF_LABEL_MEDIUM = "gsf-label-medium"
- const val GSF_LABEL_LARGE = "gsf-label-large"
+ const val GSF_HEADLINE_LARGE = "variable-headline-large"
+ const val GSF_HEADLINE_MEDIUM = "variable-headline-medium"
+ const val GSF_HEADLINE_SMALL = "variable-headline-small"
- const val GSF_BODY_MEDIUM = "gsf-body-medium"
+ const val GSF_TITLE_LARGE = "variable-title-large"
+ const val GSF_TITLE_MEDIUM = "variable-title-medium"
+ const val GSF_TITLE_SMALL = "variable-title-small"
- const val GSF_TITLE_SMALL_EMPHASIZED = "gsf-title-small-emphasized"
+ const val GSF_LABEL_LARGE = "variable-label-large"
+ const val GSF_LABEL_MEDIUM = "variable-label-medium"
+ const val GSF_LABEL_SMALL = "variable-label-small"
+
+ const val GSF_BODY_LARGE = "variable-body-large"
+ const val GSF_BODY_MEDIUM = "variable-body-medium"
+ const val GSF_BODY_SMALL = "variable-body-small"
+
+ // emphasized
+ const val GSF_DISPLAY_LARGE_EMPHASIZED = "variable-display-large-emphasized"
+ const val GSF_DISPLAY_MEDIUM_EMPHASIZED = "variable-display-medium-emphasized"
+ const val GSF_DISPLAY_SMALL_EMPHASIZED = "variable-display-small-emphasized"
+
+ const val GSF_HEADLINE_LARGE_EMPHASIZED = "variable-headline-large-emphasized"
+ const val GSF_HEADLINE_MEDIUM_EMPHASIZED = "variable-headline-medium-emphasized"
+ const val GSF_HEADLINE_SMALL_EMPHASIZED = "variable-headline-small-emphasized"
+
+ const val GSF_TITLE_LARGE_EMPHASIZED = "variable-title-large-emphasized"
+ const val GSF_TITLE_MEDIUM_EMPHASIZED = "variable-title-medium-emphasized"
+ const val GSF_TITLE_SMALL_EMPHASIZED = "variable-title-small-emphasized"
+
+ const val GSF_LABEL_LARGE_EMPHASIZED = "variable-label-large-emphasized"
+ const val GSF_LABEL_MEDIUM_EMPHASIZED = "variable-label-medium-emphasized"
+ const val GSF_LABEL_SMALL_EMPHASIZED = "variable-label-small-emphasized"
+
+ const val GSF_BODY_LARGE_EMPHASIZED = "variable-body-large-emphasized"
+ const val GSF_BODY_MEDIUM_EMPHASIZED = "variable-body-medium-emphasized"
+ const val GSF_BODY_SMALL_EMPHASIZED = "variable-body-small-emphasized"
}
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationAnimationController.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationAnimationController.java
index 615363da073a..db2ca1dbff02 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationAnimationController.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationAnimationController.java
@@ -203,8 +203,8 @@ class WindowMagnificationAnimationController implements ValueAnimator.AnimatorUp
return;
}
final float currentScale = mController.getScale();
- final float currentCenterX = mController.getCenterX();
- final float currentCenterY = mController.getCenterY();
+ final float currentCenterX = mController.getMagnificationFrameCenterX();
+ final float currentCenterY = mController.getMagnificationFrameCenterY();
if (mState == STATE_DISABLED) {
// We don't need to offset the center during the animation.
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java
index 1587ab16fc38..a67ec65cceda 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java
@@ -497,6 +497,9 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
if (configDiff == 0) {
return;
}
+ if (Flags.updateWindowMagnifierBottomBoundary()) {
+ updateSystemGestureInsetsTop();
+ }
if ((configDiff & ActivityInfo.CONFIG_ORIENTATION) != 0) {
onRotate();
}
@@ -542,8 +545,11 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
}
mWindowBounds.set(currentWindowBounds);
final Size windowFrameSize = restoreMagnificationWindowFrameIndexAndSizeIfPossible();
- final float newCenterX = (getCenterX()) * mWindowBounds.width() / oldWindowBounds.width();
- final float newCenterY = (getCenterY()) * mWindowBounds.height() / oldWindowBounds.height();
+ final float newCenterX =
+ (getMagnificationFrameCenterX()) * mWindowBounds.width() / oldWindowBounds.width();
+ final float newCenterY =
+ (getMagnificationFrameCenterY()) * mWindowBounds.height()
+ / oldWindowBounds.height();
setMagnificationFrame(windowFrameSize.getWidth(), windowFrameSize.getHeight(),
(int) newCenterX, (int) newCenterY);
@@ -672,8 +678,12 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
}
private void onWindowInsetChanged() {
- if (updateSystemGestureInsetsTop()) {
- updateSystemUIStateIfNeeded();
+ if (Flags.updateWindowMagnifierBottomBoundary()) {
+ updateSystemGestureInsetsTop();
+ } else {
+ if (updateSystemGestureInsetsTop()) {
+ updateSystemUIStateIfNeeded();
+ }
}
}
@@ -939,7 +949,9 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
final int x = MathUtils.clamp(mMagnificationFrame.left - mMirrorSurfaceMargin, minX, maxX);
final int minY = -mOuterBorderSize;
- final int maxY = mWindowBounds.bottom - height + mOuterBorderSize;
+ final int maxY = Flags.updateWindowMagnifierBottomBoundary()
+ ? mSystemGestureTop - height + mOuterBorderSize
+ : mWindowBounds.bottom - height + mOuterBorderSize;
final int y = MathUtils.clamp(mMagnificationFrame.top - mMirrorSurfaceMargin, minY, maxY);
if (computeWindowSize) {
@@ -1098,6 +1110,10 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
}
private void updateSysUIState(boolean force) {
+ if (Flags.updateWindowMagnifierBottomBoundary()) {
+ return;
+ }
+
final boolean overlap = isActivated() && mSystemGestureTop > 0
&& mMirrorViewBounds.bottom > mSystemGestureTop;
if (force || overlap != mOverlapWithGestureInsets) {
@@ -1313,7 +1329,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
*
* @return the X coordinate. {@link Float#NaN} if the window is invisible.
*/
- float getCenterX() {
+ float getMagnificationFrameCenterX() {
return isActivated() ? mMagnificationFrame.exactCenterX() : Float.NaN;
}
@@ -1322,10 +1338,30 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
*
* @return the Y coordinate. {@link Float#NaN} if the window is invisible.
*/
- float getCenterY() {
+ float getMagnificationFrameCenterY() {
return isActivated() ? mMagnificationFrame.exactCenterY() : Float.NaN;
}
+ /**
+ * Returns the screen-relative X coordinate of the center of the magnifier window.
+ * This could be different from the position of the magnification frame since the magnification
+ * frame could overlap with the bottom inset, but the magnifier window would not.
+ * @return the Y coordinate. {@link Float#NaN} if the window is invisible.
+ */
+ float getMagnifierWindowX() {
+ return isActivated() ? (float) mMirrorViewBounds.left : Float.NaN;
+ }
+
+ /**
+ * Returns the screen-relative Y coordinate of the center of the magnifier window.
+ * This could be different from the position of the magnification frame since the magnification
+ * frame could overlap with the bottom inset, but the magnifier window would not.
+ * @return the Y coordinate. {@link Float#NaN} if the window is invisible.
+ */
+ float getMagnifierWindowY() {
+ return isActivated() ? (float) mMirrorViewBounds.top : Float.NaN;
+ }
+
@VisibleForTesting
boolean isDiagonalScrollingEnabled() {
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationSettings.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationSettings.java
index 9d9f5691816e..c14d28d1c08d 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationSettings.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationSettings.java
@@ -392,15 +392,6 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
setSystemGestureExclusion();
mIsVisible = true;
mCallback.onSettingsPanelVisibilityChanged(/* shown= */ true);
-
- if (resetPosition) {
- // We could not put focus on the settings panel automatically
- // since it is an inactive window. Therefore, we announce the existence of
- // magnification settings for accessibility when it is opened.
- mSettingView.announceForAccessibility(
- mContext.getResources().getString(
- R.string.accessibility_magnification_settings_panel_description));
- }
}
mContext.registerReceiver(mScreenOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
}
diff --git a/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java b/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java
index c17055740166..e63472684585 100644
--- a/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java
+++ b/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java
@@ -19,7 +19,6 @@ import static android.provider.Settings.System.SHOW_BATTERY_PERCENT;
import static com.android.settingslib.flags.Flags.newStatusBarIcons;
import static com.android.systemui.DejankUtils.whitelistIpcs;
-import static com.android.systemui.Flags.gsfQuickSettings;
import static java.lang.annotation.RetentionPolicy.SOURCE;
@@ -34,7 +33,6 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Rect;
-import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.UserHandle;
import android.provider.Settings;
@@ -52,7 +50,6 @@ import androidx.annotation.VisibleForTesting;
import com.android.app.animation.Interpolators;
import com.android.systemui.DualToneHandler;
-import com.android.systemui.FontStyles;
import com.android.systemui.battery.unified.BatteryColors;
import com.android.systemui.battery.unified.BatteryDrawableState;
import com.android.systemui.battery.unified.BatteryLayersDrawable;
@@ -387,10 +384,6 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
}
float fontHeight = mBatteryPercentView.getPaint().getFontMetricsInt(null);
mBatteryPercentView.setLineHeight(TypedValue.COMPLEX_UNIT_PX, fontHeight);
- if (gsfQuickSettings()) {
- mBatteryPercentView.setTypeface(
- Typeface.create(FontStyles.GSF_LABEL_LARGE, Typeface.NORMAL));
- }
if (mTextColor != 0) mBatteryPercentView.setTextColor(mTextColor);
addView(mBatteryPercentView, new LayoutParams(
LayoutParams.WRAP_CONTENT,
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.kt b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.kt
index 21569c13fab4..64a46c0d7f00 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.kt
@@ -131,7 +131,7 @@ abstract class UdfpsAnimationViewController<T : UdfpsAnimationView>(
override fun onViewAttached() {
dialogManager.registerListener(dialogListener)
- dumpManager.registerDumpable(dumpTag, this)
+ dumpManager.registerNormalDumpable(dumpTag, this)
udfpsOverlayInteractor.setHandleTouches(shouldHandle = !shouldPauseAuth())
}
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/CredentialInteractor.kt b/packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/CredentialInteractor.kt
index 08b3e99fadd0..84d3d7f81c25 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/CredentialInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/CredentialInteractor.kt
@@ -72,10 +72,9 @@ constructor(
// Request LockSettingsService to return the Gatekeeper Password in the
// VerifyCredentialResponse so that we can request a Gatekeeper HAT with the
// Gatekeeper Password and operationId.
- var effectiveUserId = request.userInfo.deviceCredentialOwnerId
+ val effectiveUserId = request.userInfo.deviceCredentialOwnerId
val response =
if (Flags.privateSpaceBp() && effectiveUserId != request.userInfo.userId) {
- effectiveUserId = request.userInfo.userId
lockPatternUtils.verifyTiedProfileChallenge(
credential,
request.userInfo.userId,
@@ -101,7 +100,7 @@ constructor(
lockPatternUtils.verifyGatekeeperPasswordHandle(
pwHandle,
request.operationInfo.gatekeeperChallenge,
- effectiveUserId,
+ request.userInfo.userId,
)
val hat = gkResponse.gatekeeperHAT
lockPatternUtils.removeGatekeeperPasswordHandle(pwHandle)
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractor.kt b/packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractor.kt
index 008fb26424e2..a164ff483e47 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/PromptSelectorInteractor.kt
@@ -126,7 +126,12 @@ constructor(
is PromptKind.Biometric ->
BiometricPromptRequest.Biometric(
info = promptInfo,
- userInfo = BiometricUserInfo(userId = userId),
+ userInfo =
+ BiometricUserInfo(
+ userId = userId,
+ deviceCredentialOwnerId =
+ credentialInteractor.getCredentialOwnerOrSelfId(userId),
+ ),
operationInfo = BiometricOperationInfo(gatekeeperChallenge = challenge),
modalities = kind.activeModalities,
opPackageName = opPackageName,
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/CredentialPasswordViewBinder.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/CredentialPasswordViewBinder.kt
index e7a68ac2cfb9..8d5ea3c21e29 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/CredentialPasswordViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/CredentialPasswordViewBinder.kt
@@ -12,6 +12,7 @@ import android.window.OnBackInvokedDispatcher
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
+import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.systemui.biometrics.ui.CredentialPasswordView
import com.android.systemui.biometrics.ui.CredentialView
import com.android.systemui.biometrics.ui.IPinPad
@@ -21,7 +22,6 @@ import com.android.systemui.res.R
import kotlinx.coroutines.awaitCancellation
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.firstOrNull
-import com.android.app.tracing.coroutines.launchTraced as launch
/** Sub-binder for the [CredentialPasswordView]. */
object CredentialPasswordViewBinder {
@@ -42,7 +42,7 @@ object CredentialPasswordViewBinder {
view.repeatWhenAttached {
// the header info never changes - do it early
val header = viewModel.header.first()
- passwordField.setTextOperationUser(UserHandle.of(header.user.userIdForPasswordEntry))
+ passwordField.setTextOperationUser(UserHandle.of(header.user.deviceCredentialOwnerId))
viewModel.inputFlags.firstOrNull()?.let { flags -> passwordField.inputType = flags }
if (requestFocusForInput) {
passwordField.requestFocus()
@@ -65,7 +65,7 @@ object CredentialPasswordViewBinder {
if (attestation != null) {
imeManager.hideSoftInputFromWindow(
view.windowToken,
- 0 // flag
+ 0, // flag
)
host.onCredentialMatched(attestation)
} else {
@@ -79,7 +79,7 @@ object CredentialPasswordViewBinder {
launch {
onBackInvokedDispatcher.registerOnBackInvokedCallback(
OnBackInvokedDispatcher.PRIORITY_DEFAULT,
- onBackInvokedCallback
+ onBackInvokedCallback,
)
awaitCancellation()
}
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/PromptIconViewBinder.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/PromptIconViewBinder.kt
index f6cf3d57a609..b03fd3dab050 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/PromptIconViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/PromptIconViewBinder.kt
@@ -22,7 +22,9 @@ import android.util.Log
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.repeatOnLifecycle
import com.airbnb.lottie.LottieAnimationView
+import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.settingslib.widget.LottieColorUtils
+import com.android.systemui.Flags.bpColors
import com.android.systemui.biometrics.ui.viewmodel.PromptIconViewModel
import com.android.systemui.biometrics.ui.viewmodel.PromptIconViewModel.AuthType
import com.android.systemui.biometrics.ui.viewmodel.PromptViewModel
@@ -32,7 +34,6 @@ import com.android.systemui.util.kotlin.Quad
import com.android.systemui.util.kotlin.Utils.Companion.toQuint
import com.android.systemui.util.kotlin.sample
import kotlinx.coroutines.flow.combine
-import com.android.app.tracing.coroutines.launchTraced as launch
private const val TAG = "PromptIconViewBinder"
@@ -40,10 +41,7 @@ private const val TAG = "PromptIconViewBinder"
object PromptIconViewBinder {
/** Binds [BiometricPromptLayout.iconView] to [PromptIconViewModel]. */
@JvmStatic
- fun bind(
- iconView: LottieAnimationView,
- promptViewModel: PromptViewModel
- ) {
+ fun bind(iconView: LottieAnimationView, promptViewModel: PromptViewModel) {
val viewModel = promptViewModel.iconViewModel
iconView.repeatWhenAttached {
repeatOnLifecycle(Lifecycle.State.STARTED) {
@@ -57,9 +55,9 @@ object PromptIconViewBinder {
viewModel.shouldAnimateIconView,
viewModel.shouldLoopIconView,
viewModel.showingError,
- ::Quad
+ ::Quad,
),
- ::toQuint
+ ::toQuint,
)
.collect {
(
@@ -74,7 +72,7 @@ object PromptIconViewBinder {
iconAsset,
shouldAnimateIconView,
shouldLoopIconView,
- activeAuthType
+ activeAuthType,
)
viewModel.setPreviousIconWasError(showingError)
}
@@ -102,7 +100,7 @@ fun LottieAnimationView.updateAsset(
asset: Int,
shouldAnimateIconView: Boolean,
shouldLoopIconView: Boolean,
- activeAuthType: AuthType
+ activeAuthType: AuthType,
) {
setFailureListener(type, asset, activeAuthType)
pauseAnimation()
@@ -118,6 +116,9 @@ fun LottieAnimationView.updateAsset(
playAnimation()
}
LottieColorUtils.applyDynamicColors(context, this)
+ if (bpColors()) {
+ LottieColorUtils.applyMaterialColor(context, this)
+ }
}
private fun animatingFromSfpsAuthenticating(asset: Int): Boolean =
@@ -174,7 +175,7 @@ private fun LottieAnimationView.setFailureListener(type: String, asset: Int, aut
"activeAuthType = $authType | " +
"Invalid resource id: $asset, " +
"name $assetName",
- result
+ result,
)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModel.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModel.kt
index 19930efe468d..a796ecfe6901 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModel.kt
@@ -28,6 +28,7 @@ import android.view.WindowManager
import android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION
import android.view.WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY
import com.airbnb.lottie.model.KeyPath
+import com.android.systemui.Flags.bpColors
import com.android.systemui.biometrics.Utils
import com.android.systemui.biometrics.domain.interactor.DisplayStateInteractor
import com.android.systemui.biometrics.domain.interactor.SideFpsSensorInteractor
@@ -79,7 +80,7 @@ constructor(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL,
Utils.FINGERPRINT_OVERLAY_LAYOUT_PARAM_FLAGS,
- PixelFormat.TRANSLUCENT
+ PixelFormat.TRANSLUCENT,
)
.apply {
title = TAG
@@ -119,10 +120,7 @@ constructor(
.distinctUntilChanged()
private val overlayViewRotation: Flow<Float> =
- combine(
- displayRotation,
- sensorLocation,
- ) { rotation: DisplayRotation, sensorLocation ->
+ combine(displayRotation, sensorLocation) { rotation: DisplayRotation, sensorLocation ->
val yAligned = sensorLocation.isSensorVerticalInDefaultOrientation
when (rotation) {
DisplayRotation.ROTATION_90 -> if (yAligned) 0f else 180f
@@ -141,12 +139,10 @@ constructor(
/** LayoutParams for placement of overlayView (the side fingerprint sensor indicator view) */
val overlayViewParams: Flow<WindowManager.LayoutParams> =
- combine(
- _lottieBounds,
- sensorLocation,
- displayRotation,
- ) { bounds: Rect?, sensorLocation: SideFpsSensorLocation, displayRotation: DisplayRotation
- ->
+ combine(_lottieBounds, sensorLocation, displayRotation) {
+ bounds: Rect?,
+ sensorLocation: SideFpsSensorLocation,
+ displayRotation: DisplayRotation ->
val topLeft = Point(sensorLocation.left, sensorLocation.top)
defaultOverlayViewParams.apply {
@@ -161,13 +157,29 @@ constructor(
_,
showIndicatorForDeviceEntry: Boolean ->
val callbacks = mutableListOf<LottieCallback>()
- if (showIndicatorForDeviceEntry) {
- val indicatorColor = applicationContext.getColor(
- com.android.internal.R.color.materialColorPrimaryFixed)
- val outerRimColor = applicationContext.getColor(
- com.android.internal.R.color.materialColorPrimaryFixedDim)
- val chevronFill = applicationContext.getColor(
- com.android.internal.R.color.materialColorOnPrimaryFixed)
+ if (bpColors()) {
+ val indicatorColor =
+ applicationContext.getColor(com.android.internal.R.color.materialColorPrimary)
+ val outerRimColor =
+ applicationContext.getColor(com.android.internal.R.color.materialColorPrimary)
+ val chevronFill =
+ applicationContext.getColor(com.android.internal.R.color.materialColorOnPrimary)
+ callbacks.add(LottieCallback(KeyPath(".blue600", "**"), indicatorColor))
+ callbacks.add(LottieCallback(KeyPath(".blue400", "**"), outerRimColor))
+ callbacks.add(LottieCallback(KeyPath(".black", "**"), chevronFill))
+ } else if (showIndicatorForDeviceEntry) {
+ val indicatorColor =
+ applicationContext.getColor(
+ com.android.internal.R.color.materialColorPrimaryFixed
+ )
+ val outerRimColor =
+ applicationContext.getColor(
+ com.android.internal.R.color.materialColorPrimaryFixedDim
+ )
+ val chevronFill =
+ applicationContext.getColor(
+ com.android.internal.R.color.materialColorOnPrimaryFixed
+ )
callbacks.add(LottieCallback(KeyPath(".blue600", "**"), indicatorColor))
callbacks.add(LottieCallback(KeyPath(".blue400", "**"), outerRimColor))
callbacks.add(LottieCallback(KeyPath(".black", "**"), chevronFill))
diff --git a/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/AudioSharingDeviceItemActionInteractorImpl.kt b/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/AudioSharingDeviceItemActionInteractorImpl.kt
index 0303048436c9..94fca218c74f 100644
--- a/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/AudioSharingDeviceItemActionInteractorImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/AudioSharingDeviceItemActionInteractorImpl.kt
@@ -53,7 +53,7 @@ constructor(
private val deviceItemActionInteractorImpl: DeviceItemActionInteractorImpl,
) : DeviceItemActionInteractor {
- override suspend fun onClick(deviceItem: DeviceItem, dialog: SystemUIDialog) {
+ override suspend fun onClick(deviceItem: DeviceItem, dialog: SystemUIDialog?) {
withContext(backgroundDispatcher) {
if (!audioSharingInteractor.audioSharingAvailable()) {
return@withContext deviceItemActionInteractorImpl.onClick(deviceItem, dialog)
@@ -70,10 +70,18 @@ constructor(
DeviceItemType.AVAILABLE_AUDIO_SHARING_MEDIA_BLUETOOTH_DEVICE -> {
if (audioSharingInteractor.qsDialogImprovementAvailable()) {
withContext(mainDispatcher) {
- delegateFactory
- .create(deviceItem.cachedBluetoothDevice)
- .createDialog()
- .let { dialogTransitionAnimator.showFromDialog(it, dialog) }
+ val audioSharingDialog =
+ delegateFactory
+ .create(deviceItem.cachedBluetoothDevice)
+ .createDialog()
+
+ if (dialog != null) {
+ audioSharingDialog.let {
+ dialogTransitionAnimator.showFromDialog(it, dialog)
+ }
+ } else {
+ audioSharingDialog.show()
+ }
}
} else {
launchSettings(deviceItem.cachedBluetoothDevice.device, dialog)
@@ -141,7 +149,7 @@ constructor(
)
}
- private fun launchSettings(device: BluetoothDevice, dialog: SystemUIDialog) {
+ private fun launchSettings(device: BluetoothDevice, dialog: SystemUIDialog?) {
val intent =
Intent(Settings.ACTION_BLUETOOTH_SETTINGS).apply {
putExtra(
@@ -155,7 +163,8 @@ constructor(
activityStarter.postStartActivityDismissingKeyguard(
intent,
0,
- dialogTransitionAnimator.createActivityTransitionController(dialog),
+ if (dialog == null) null
+ else dialogTransitionAnimator.createActivityTransitionController(dialog),
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsContent.kt b/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsContent.kt
new file mode 100644
index 000000000000..710fde5c2130
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsContent.kt
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.bluetooth.qsdialog
+
+import android.view.LayoutInflater
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.viewinterop.AndroidView
+import com.android.systemui.res.R
+
+@Composable
+fun BluetoothDetailsContent(detailsContentViewModel: BluetoothTileDialogViewModel) {
+ AndroidView(
+ modifier = Modifier.fillMaxSize(),
+ factory = { context ->
+ // Inflate with the existing dialog xml layout
+ val view =
+ LayoutInflater.from(context)
+ .inflate(R.layout.bluetooth_tile_dialog, /* root= */ null)
+ detailsContentViewModel.showDetailsContent(/* expandable= */ null, view)
+ view
+ },
+ onRelease = { detailsContentViewModel.contentManager.releaseView() },
+ )
+}
diff --git a/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsContentManager.kt b/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsContentManager.kt
new file mode 100644
index 000000000000..d873f41309cc
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsContentManager.kt
@@ -0,0 +1,442 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.bluetooth.qsdialog
+
+import android.view.LayoutInflater
+import android.view.View
+import android.view.View.AccessibilityDelegate
+import android.view.View.GONE
+import android.view.View.INVISIBLE
+import android.view.View.VISIBLE
+import android.view.ViewGroup
+import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
+import android.view.accessibility.AccessibilityNodeInfo
+import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction
+import android.widget.Button
+import android.widget.ImageView
+import android.widget.ProgressBar
+import android.widget.Switch
+import android.widget.TextView
+import androidx.annotation.StringRes
+import androidx.recyclerview.widget.AsyncListDiffer
+import androidx.recyclerview.widget.DiffUtil
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.android.internal.R as InternalR
+import com.android.internal.logging.UiEventLogger
+import com.android.systemui.dagger.qualifiers.Main
+import com.android.systemui.res.R
+import com.android.systemui.util.time.SystemClock
+import dagger.assisted.Assisted
+import dagger.assisted.AssistedFactory
+import dagger.assisted.AssistedInject
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.asStateFlow
+import kotlinx.coroutines.isActive
+import kotlinx.coroutines.withContext
+
+data class DeviceItemClick(val deviceItem: DeviceItem, val clickedView: View, val target: Target) {
+ enum class Target {
+ ENTIRE_ROW,
+ ACTION_ICON,
+ }
+}
+
+/** View content manager for showing active, connected and saved bluetooth devices. */
+class BluetoothDetailsContentManager
+@AssistedInject
+constructor(
+ @Assisted private val initialUiProperties: BluetoothTileDialogViewModel.UiProperties,
+ @Assisted private val cachedContentHeight: Int,
+ @Assisted private val bluetoothTileDialogCallback: BluetoothTileDialogCallback,
+ @Assisted private val isInDialog: Boolean,
+ @Assisted private val doneButtonCallback: () -> Unit,
+ @Main private val mainDispatcher: CoroutineDispatcher,
+ private val systemClock: SystemClock,
+ private val uiEventLogger: UiEventLogger,
+ private val logger: BluetoothTileDialogLogger,
+) {
+
+ private val mutableBluetoothStateToggle: MutableStateFlow<Boolean?> = MutableStateFlow(null)
+ internal val bluetoothStateToggle
+ get() = mutableBluetoothStateToggle.asStateFlow()
+
+ private val mutableBluetoothAutoOnToggle: MutableStateFlow<Boolean?> = MutableStateFlow(null)
+ internal val bluetoothAutoOnToggle
+ get() = mutableBluetoothAutoOnToggle.asStateFlow()
+
+ private val mutableDeviceItemClick: MutableStateFlow<DeviceItemClick?> = MutableStateFlow(null)
+ internal val deviceItemClick
+ get() = mutableDeviceItemClick.asStateFlow()
+
+ private val mutableContentHeight: MutableStateFlow<Int?> = MutableStateFlow(null)
+ internal val contentHeight
+ get() = mutableContentHeight.asStateFlow()
+
+ private val deviceItemAdapter: Adapter = Adapter()
+
+ private var lastUiUpdateMs: Long = -1
+
+ private var lastItemRow: Int = -1
+
+ // UI Components
+ private lateinit var contentView: View
+ private lateinit var doneButton: Button
+ private lateinit var bluetoothToggle: Switch
+ private lateinit var subtitleTextView: TextView
+ private lateinit var seeAllButton: View
+ private lateinit var pairNewDeviceButton: View
+ private lateinit var deviceListView: RecyclerView
+ private lateinit var autoOnToggle: Switch
+ private lateinit var autoOnToggleLayout: View
+ private lateinit var autoOnToggleInfoTextView: TextView
+ private lateinit var audioSharingButton: Button
+ private lateinit var progressBarAnimation: ProgressBar
+ private lateinit var progressBarBackground: View
+ private lateinit var scrollViewContent: View
+
+ @AssistedFactory
+ interface Factory {
+ fun create(
+ initialUiProperties: BluetoothTileDialogViewModel.UiProperties,
+ cachedContentHeight: Int,
+ dialogCallback: BluetoothTileDialogCallback,
+ isInDialog: Boolean,
+ doneButtonCallback: () -> Unit,
+ ): BluetoothDetailsContentManager
+ }
+
+ fun bind(contentView: View) {
+ this.contentView = contentView
+
+ doneButton = contentView.requireViewById(R.id.done_button)
+ bluetoothToggle = contentView.requireViewById(R.id.bluetooth_toggle)
+ subtitleTextView = contentView.requireViewById(R.id.bluetooth_tile_dialog_subtitle)
+ seeAllButton = contentView.requireViewById(R.id.see_all_button)
+ pairNewDeviceButton = contentView.requireViewById(R.id.pair_new_device_button)
+ deviceListView = contentView.requireViewById(R.id.device_list)
+ autoOnToggle = contentView.requireViewById(R.id.bluetooth_auto_on_toggle)
+ autoOnToggleLayout = contentView.requireViewById(R.id.bluetooth_auto_on_toggle_layout)
+ autoOnToggleInfoTextView =
+ contentView.requireViewById(R.id.bluetooth_auto_on_toggle_info_text)
+ audioSharingButton = contentView.requireViewById(R.id.audio_sharing_button)
+ progressBarAnimation =
+ contentView.requireViewById(R.id.bluetooth_tile_dialog_progress_animation)
+ progressBarBackground =
+ contentView.requireViewById(R.id.bluetooth_tile_dialog_progress_background)
+ scrollViewContent = contentView.requireViewById(R.id.scroll_view)
+
+ setupToggle()
+ setupRecyclerView()
+ setupDoneButton()
+
+ subtitleTextView.text = contentView.context.getString(initialUiProperties.subTitleResId)
+ seeAllButton.setOnClickListener { bluetoothTileDialogCallback.onSeeAllClicked(it) }
+ pairNewDeviceButton.setOnClickListener {
+ bluetoothTileDialogCallback.onPairNewDeviceClicked(it)
+ }
+ audioSharingButton.apply {
+ setOnClickListener { bluetoothTileDialogCallback.onAudioSharingButtonClicked(it) }
+ accessibilityDelegate =
+ object : AccessibilityDelegate() {
+ override fun onInitializeAccessibilityNodeInfo(
+ host: View,
+ info: AccessibilityNodeInfo,
+ ) {
+ super.onInitializeAccessibilityNodeInfo(host, info)
+ info.addAction(
+ AccessibilityAction(
+ AccessibilityAction.ACTION_CLICK.id,
+ contentView.context.getString(
+ R.string
+ .quick_settings_bluetooth_audio_sharing_button_accessibility
+ ),
+ )
+ )
+ }
+ }
+ }
+ scrollViewContent.apply {
+ minimumHeight =
+ resources.getDimensionPixelSize(initialUiProperties.scrollViewMinHeightResId)
+ layoutParams.height = maxOf(cachedContentHeight, minimumHeight)
+ }
+ }
+
+ fun start() {
+ lastUiUpdateMs = systemClock.elapsedRealtime()
+ }
+
+ fun releaseView() {
+ mutableContentHeight.value = scrollViewContent.measuredHeight
+ }
+
+ internal suspend fun animateProgressBar(animate: Boolean) {
+ withContext(mainDispatcher) {
+ if (animate) {
+ showProgressBar()
+ } else {
+ delay(PROGRESS_BAR_ANIMATION_DURATION_MS)
+ hideProgressBar()
+ }
+ }
+ }
+
+ internal suspend fun onDeviceItemUpdated(
+ deviceItem: List<DeviceItem>,
+ showSeeAll: Boolean,
+ showPairNewDevice: Boolean,
+ ) {
+ withContext(mainDispatcher) {
+ val start = systemClock.elapsedRealtime()
+ val itemRow = deviceItem.size + showSeeAll.toInt() + showPairNewDevice.toInt()
+ // If not the first load, add a slight delay for smoother dialog height change
+ if (itemRow != lastItemRow && lastItemRow != -1) {
+ delay(MIN_HEIGHT_CHANGE_INTERVAL_MS - (start - lastUiUpdateMs))
+ }
+ if (isActive) {
+ deviceItemAdapter.refreshDeviceItemList(deviceItem) {
+ seeAllButton.visibility = if (showSeeAll) VISIBLE else GONE
+ pairNewDeviceButton.visibility = if (showPairNewDevice) VISIBLE else GONE
+ // Update the height after data is updated
+ scrollViewContent.layoutParams.height = WRAP_CONTENT
+ lastUiUpdateMs = systemClock.elapsedRealtime()
+ lastItemRow = itemRow
+ logger.logDeviceUiUpdate(lastUiUpdateMs - start)
+ }
+ }
+ }
+ }
+
+ internal fun onBluetoothStateUpdated(
+ isEnabled: Boolean,
+ uiProperties: BluetoothTileDialogViewModel.UiProperties,
+ ) {
+ bluetoothToggle.apply {
+ isChecked = isEnabled
+ setEnabled(true)
+ alpha = ENABLED_ALPHA
+ }
+ subtitleTextView.text = contentView.context.getString(uiProperties.subTitleResId)
+ autoOnToggleLayout.visibility = uiProperties.autoOnToggleVisibility
+ }
+
+ internal fun onBluetoothAutoOnUpdated(isEnabled: Boolean, @StringRes infoResId: Int) {
+ autoOnToggle.isChecked = isEnabled
+ autoOnToggleInfoTextView.text = contentView.context.getString(infoResId)
+ }
+
+ internal fun onAudioSharingButtonUpdated(visibility: Int, label: String?, isActive: Boolean) {
+ audioSharingButton.apply {
+ this.visibility = visibility
+ label?.let { text = it }
+ this.isActivated = isActive
+ }
+ }
+
+ private fun setupToggle() {
+ bluetoothToggle.setOnCheckedChangeListener { view, isChecked ->
+ mutableBluetoothStateToggle.value = isChecked
+ view.apply {
+ isEnabled = false
+ alpha = DISABLED_ALPHA
+ }
+ logger.logBluetoothState(BluetoothStateStage.USER_TOGGLED, isChecked.toString())
+ uiEventLogger.log(BluetoothTileDialogUiEvent.BLUETOOTH_TOGGLE_CLICKED)
+ }
+
+ autoOnToggleLayout.visibility = initialUiProperties.autoOnToggleVisibility
+ autoOnToggle.setOnCheckedChangeListener { _, isChecked ->
+ mutableBluetoothAutoOnToggle.value = isChecked
+ uiEventLogger.log(BluetoothTileDialogUiEvent.BLUETOOTH_AUTO_ON_TOGGLE_CLICKED)
+ }
+ }
+
+ private fun setupDoneButton() {
+ if (isInDialog) {
+ doneButton.setOnClickListener { doneButtonCallback() }
+ } else {
+ doneButton.visibility = GONE
+ }
+ }
+
+ private fun setupRecyclerView() {
+ deviceListView.apply {
+ layoutManager = LinearLayoutManager(contentView.context)
+ adapter = deviceItemAdapter
+ }
+ }
+
+ private fun showProgressBar() {
+ if (progressBarAnimation.visibility != VISIBLE) {
+ progressBarAnimation.visibility = VISIBLE
+ progressBarBackground.visibility = INVISIBLE
+ }
+ }
+
+ private fun hideProgressBar() {
+ if (progressBarAnimation.visibility != INVISIBLE) {
+ progressBarAnimation.visibility = INVISIBLE
+ progressBarBackground.visibility = VISIBLE
+ }
+ }
+
+ internal inner class Adapter : RecyclerView.Adapter<Adapter.DeviceItemViewHolder>() {
+
+ private val diffUtilCallback =
+ object : DiffUtil.ItemCallback<DeviceItem>() {
+ override fun areItemsTheSame(
+ deviceItem1: DeviceItem,
+ deviceItem2: DeviceItem,
+ ): Boolean {
+ return deviceItem1.cachedBluetoothDevice == deviceItem2.cachedBluetoothDevice
+ }
+
+ override fun areContentsTheSame(
+ deviceItem1: DeviceItem,
+ deviceItem2: DeviceItem,
+ ): Boolean {
+ return deviceItem1.type == deviceItem2.type &&
+ deviceItem1.cachedBluetoothDevice == deviceItem2.cachedBluetoothDevice &&
+ deviceItem1.deviceName == deviceItem2.deviceName &&
+ deviceItem1.connectionSummary == deviceItem2.connectionSummary &&
+ // Ignored the icon drawable
+ deviceItem1.iconWithDescription?.second ==
+ deviceItem2.iconWithDescription?.second &&
+ deviceItem1.background == deviceItem2.background &&
+ deviceItem1.isEnabled == deviceItem2.isEnabled &&
+ deviceItem1.actionAccessibilityLabel == deviceItem2.actionAccessibilityLabel
+ }
+ }
+
+ private val asyncListDiffer = AsyncListDiffer(this, diffUtilCallback)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DeviceItemViewHolder {
+ val view =
+ LayoutInflater.from(parent.context)
+ .inflate(R.layout.bluetooth_device_item, parent, false)
+ return DeviceItemViewHolder(view)
+ }
+
+ override fun getItemCount() = asyncListDiffer.currentList.size
+
+ override fun onBindViewHolder(holder: DeviceItemViewHolder, position: Int) {
+ val item = getItem(position)
+ holder.bind(item)
+ }
+
+ internal fun getItem(position: Int) = asyncListDiffer.currentList[position]
+
+ internal fun refreshDeviceItemList(updated: List<DeviceItem>, callback: () -> Unit) {
+ asyncListDiffer.submitList(updated, callback)
+ }
+
+ internal inner class DeviceItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ private val container = view.requireViewById<View>(R.id.bluetooth_device_row)
+ private val nameView = view.requireViewById<TextView>(R.id.bluetooth_device_name)
+ private val summaryView = view.requireViewById<TextView>(R.id.bluetooth_device_summary)
+ private val iconView = view.requireViewById<ImageView>(R.id.bluetooth_device_icon)
+ private val actionIcon = view.requireViewById<ImageView>(R.id.gear_icon_image)
+ private val actionIconView = view.requireViewById<View>(R.id.gear_icon)
+ private val divider = view.requireViewById<View>(R.id.divider)
+
+ internal fun bind(item: DeviceItem) {
+ container.apply {
+ isEnabled = item.isEnabled
+ background = item.background?.let { context.getDrawable(it) }
+ setOnClickListener {
+ mutableDeviceItemClick.value =
+ DeviceItemClick(item, it, DeviceItemClick.Target.ENTIRE_ROW)
+ uiEventLogger.log(BluetoothTileDialogUiEvent.DEVICE_CLICKED)
+ }
+
+ // updating icon colors
+ val tintColor =
+ context.getColor(
+ if (item.isActive) InternalR.color.materialColorOnPrimaryContainer
+ else InternalR.color.materialColorOnSurface
+ )
+
+ // update icons
+ iconView.apply {
+ item.iconWithDescription?.let {
+ setImageDrawable(it.first)
+ contentDescription = it.second
+ }
+ }
+
+ actionIcon.setImageResource(item.actionIconRes)
+ actionIcon.drawable?.setTint(tintColor)
+
+ divider.setBackgroundColor(tintColor)
+
+ // update text styles
+ nameView.setTextAppearance(
+ if (item.isActive) R.style.TextAppearance_BluetoothTileDialog_Active
+ else R.style.TextAppearance_BluetoothTileDialog
+ )
+ summaryView.setTextAppearance(
+ if (item.isActive) R.style.TextAppearance_BluetoothTileDialog_Active
+ else R.style.TextAppearance_BluetoothTileDialog
+ )
+
+ accessibilityDelegate =
+ object : AccessibilityDelegate() {
+ override fun onInitializeAccessibilityNodeInfo(
+ host: View,
+ info: AccessibilityNodeInfo,
+ ) {
+ super.onInitializeAccessibilityNodeInfo(host, info)
+ info.addAction(
+ AccessibilityAction(
+ AccessibilityAction.ACTION_CLICK.id,
+ item.actionAccessibilityLabel,
+ )
+ )
+ }
+ }
+ }
+ nameView.text = item.deviceName
+ summaryView.text = item.connectionSummary
+
+ actionIconView.setOnClickListener {
+ mutableDeviceItemClick.value =
+ DeviceItemClick(item, it, DeviceItemClick.Target.ACTION_ICON)
+ }
+ }
+ }
+ }
+
+ internal companion object {
+ const val MIN_HEIGHT_CHANGE_INTERVAL_MS = 800L
+ const val ACTION_BLUETOOTH_DEVICE_DETAILS =
+ "com.android.settings.BLUETOOTH_DEVICE_DETAIL_SETTINGS"
+ const val ACTION_PREVIOUSLY_CONNECTED_DEVICE =
+ "com.android.settings.PREVIOUSLY_CONNECTED_DEVICE"
+ const val ACTION_PAIR_NEW_DEVICE = "android.settings.BLUETOOTH_PAIRING_SETTINGS"
+ const val ACTION_AUDIO_SHARING = "com.android.settings.BLUETOOTH_AUDIO_SHARING_SETTINGS"
+ const val DISABLED_ALPHA = 0.3f
+ const val ENABLED_ALPHA = 1f
+ const val PROGRESS_BAR_ANIMATION_DURATION_MS = 1500L
+
+ private fun Boolean.toInt(): Int {
+ return if (this) 1 else 0
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsViewModel.kt b/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsViewModel.kt
index 9dd3b6de423e..44475318a61e 100644
--- a/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsViewModel.kt
@@ -16,32 +16,14 @@
package com.android.systemui.bluetooth.qsdialog
-import android.view.LayoutInflater
-import androidx.compose.foundation.layout.fillMaxHeight
-import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.viewinterop.AndroidView
import com.android.systemui.plugins.qs.TileDetailsViewModel
-import com.android.systemui.res.R
-
-class BluetoothDetailsViewModel(onLongClick: () -> Unit) : TileDetailsViewModel() {
- private val _onLongClick = onLongClick
-
- @Composable
- override fun GetContentView() {
- AndroidView(
- modifier = Modifier.fillMaxWidth().fillMaxHeight(),
- factory = { context ->
- // Inflate with the existing dialog xml layout
- LayoutInflater.from(context).inflate(R.layout.bluetooth_tile_dialog, null)
- // TODO: b/378513956 - Implement the bluetooth details view
- },
- )
- }
+class BluetoothDetailsViewModel(
+ private val onSettingsClick: () -> Unit,
+ val detailsContentViewModel: BluetoothTileDialogViewModel,
+) : TileDetailsViewModel() {
override fun clickOnSettingsButton() {
- _onLongClick()
+ onSettingsClick()
}
override fun getTitle(): String {
diff --git a/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogDelegate.kt
index 56caddfbd637..01be820a2fde 100644
--- a/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogDelegate.kt
@@ -18,93 +18,35 @@ package com.android.systemui.bluetooth.qsdialog
import android.os.Bundle
import android.view.LayoutInflater
-import android.view.View
-import android.view.View.AccessibilityDelegate
-import android.view.View.GONE
-import android.view.View.INVISIBLE
-import android.view.View.VISIBLE
-import android.view.ViewGroup
-import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
-import android.view.accessibility.AccessibilityNodeInfo
-import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction
-import android.widget.Button
-import android.widget.ImageView
-import android.widget.ProgressBar
-import android.widget.Switch
-import android.widget.TextView
-import androidx.annotation.StringRes
-import androidx.recyclerview.widget.AsyncListDiffer
-import androidx.recyclerview.widget.DiffUtil
-import androidx.recyclerview.widget.LinearLayoutManager
-import androidx.recyclerview.widget.RecyclerView
-import com.android.internal.R as InternalR
import com.android.internal.logging.UiEventLogger
-import com.android.systemui.dagger.qualifiers.Main
+import com.android.systemui.qs.flags.QsDetailedView
import com.android.systemui.res.R
import com.android.systemui.shade.domain.interactor.ShadeDialogContextInteractor
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.statusbar.phone.SystemUIDialog
-import com.android.systemui.util.time.SystemClock
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
-import kotlinx.coroutines.CoroutineDispatcher
-import kotlinx.coroutines.delay
-import kotlinx.coroutines.flow.MutableSharedFlow
-import kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.flow.asSharedFlow
-import kotlinx.coroutines.flow.asStateFlow
-import kotlinx.coroutines.isActive
-import kotlinx.coroutines.withContext
-
-data class DeviceItemClick(val deviceItem: DeviceItem, val clickedView: View, val target: Target) {
- enum class Target {
- ENTIRE_ROW,
- ACTION_ICON,
- }
-}
/** Dialog for showing active, connected and saved bluetooth devices. */
class BluetoothTileDialogDelegate
@AssistedInject
-internal constructor(
+constructor(
@Assisted private val initialUiProperties: BluetoothTileDialogViewModel.UiProperties,
@Assisted private val cachedContentHeight: Int,
@Assisted private val bluetoothTileDialogCallback: BluetoothTileDialogCallback,
@Assisted private val dismissListener: Runnable,
- @Main private val mainDispatcher: CoroutineDispatcher,
- private val systemClock: SystemClock,
private val uiEventLogger: UiEventLogger,
- private val logger: BluetoothTileDialogLogger,
private val systemuiDialogFactory: SystemUIDialog.Factory,
private val shadeDialogContextInteractor: ShadeDialogContextInteractor,
+ private val bluetoothDetailsContentManagerFactory: BluetoothDetailsContentManager.Factory,
+ private val shadeModeInteractor: ShadeModeInteractor,
) : SystemUIDialog.Delegate {
- private val mutableBluetoothStateToggle: MutableStateFlow<Boolean?> = MutableStateFlow(null)
- internal val bluetoothStateToggle
- get() = mutableBluetoothStateToggle.asStateFlow()
-
- private val mutableBluetoothAutoOnToggle: MutableStateFlow<Boolean?> = MutableStateFlow(null)
- internal val bluetoothAutoOnToggle
- get() = mutableBluetoothAutoOnToggle.asStateFlow()
-
- private val mutableDeviceItemClick: MutableSharedFlow<DeviceItemClick> =
- MutableSharedFlow(extraBufferCapacity = 1)
- internal val deviceItemClick
- get() = mutableDeviceItemClick.asSharedFlow()
-
- private val mutableContentHeight: MutableSharedFlow<Int> =
- MutableSharedFlow(extraBufferCapacity = 1)
- internal val contentHeight
- get() = mutableContentHeight.asSharedFlow()
-
- private val deviceItemAdapter: Adapter = Adapter()
-
- private var lastUiUpdateMs: Long = -1
-
- private var lastItemRow: Int = -1
+ lateinit var contentManager: BluetoothDetailsContentManager
@AssistedFactory
- internal interface Factory {
+ interface Factory {
fun create(
initialUiProperties: BluetoothTileDialogViewModel.UiProperties,
cachedContentHeight: Int,
@@ -114,6 +56,12 @@ internal constructor(
}
override fun createDialog(): SystemUIDialog {
+ // TODO (b/393628355): remove this after the details view is supported for single shade.
+ if (shadeModeInteractor.isDualShade) {
+ // If `QsDetailedView` is enabled, it should show the details view.
+ QsDetailedView.assertInLegacyMode()
+ }
+
return systemuiDialogFactory.create(this, shadeDialogContextInteractor.context)
}
@@ -127,362 +75,24 @@ internal constructor(
dialog.setContentView(this)
}
- setupToggle(dialog)
- setupRecyclerView(dialog)
-
- getSubtitleTextView(dialog).text = context.getString(initialUiProperties.subTitleResId)
- dialog.requireViewById<View>(R.id.done_button).setOnClickListener { dialog.dismiss() }
- getSeeAllButton(dialog).setOnClickListener {
- bluetoothTileDialogCallback.onSeeAllClicked(it)
- }
- getPairNewDeviceButton(dialog).setOnClickListener {
- bluetoothTileDialogCallback.onPairNewDeviceClicked(it)
- }
- getAudioSharingButtonView(dialog).apply {
- setOnClickListener { bluetoothTileDialogCallback.onAudioSharingButtonClicked(it) }
- accessibilityDelegate =
- object : AccessibilityDelegate() {
- override fun onInitializeAccessibilityNodeInfo(
- host: View,
- info: AccessibilityNodeInfo,
- ) {
- super.onInitializeAccessibilityNodeInfo(host, info)
- info.addAction(
- AccessibilityAction(
- AccessibilityAction.ACTION_CLICK.id,
- context.getString(
- R.string
- .quick_settings_bluetooth_audio_sharing_button_accessibility
- ),
- )
- )
- }
- }
- }
- getScrollViewContent(dialog).apply {
- minimumHeight =
- resources.getDimensionPixelSize(initialUiProperties.scrollViewMinHeightResId)
- layoutParams.height = maxOf(cachedContentHeight, minimumHeight)
- }
+ contentManager =
+ bluetoothDetailsContentManagerFactory.create(
+ initialUiProperties,
+ cachedContentHeight,
+ bluetoothTileDialogCallback,
+ /* isInDialog= */ true,
+ /* doneButtonCallback= */ fun() {
+ dialog.dismiss()
+ },
+ )
+ contentManager.bind(dialog.requireViewById(R.id.root))
}
override fun onStart(dialog: SystemUIDialog) {
- lastUiUpdateMs = systemClock.elapsedRealtime()
+ contentManager.start()
}
override fun onStop(dialog: SystemUIDialog) {
- mutableContentHeight.tryEmit(getScrollViewContent(dialog).measuredHeight)
- }
-
- internal suspend fun animateProgressBar(dialog: SystemUIDialog, animate: Boolean) {
- withContext(mainDispatcher) {
- if (animate) {
- showProgressBar(dialog)
- } else {
- delay(PROGRESS_BAR_ANIMATION_DURATION_MS)
- hideProgressBar(dialog)
- }
- }
- }
-
- internal suspend fun onDeviceItemUpdated(
- dialog: SystemUIDialog,
- deviceItem: List<DeviceItem>,
- showSeeAll: Boolean,
- showPairNewDevice: Boolean,
- ) {
- withContext(mainDispatcher) {
- val start = systemClock.elapsedRealtime()
- val itemRow = deviceItem.size + showSeeAll.toInt() + showPairNewDevice.toInt()
- // If not the first load, add a slight delay for smoother dialog height change
- if (itemRow != lastItemRow && lastItemRow != -1) {
- delay(MIN_HEIGHT_CHANGE_INTERVAL_MS - (start - lastUiUpdateMs))
- }
- if (isActive) {
- deviceItemAdapter.refreshDeviceItemList(deviceItem) {
- getSeeAllButton(dialog).visibility = if (showSeeAll) VISIBLE else GONE
- getPairNewDeviceButton(dialog).visibility =
- if (showPairNewDevice) VISIBLE else GONE
- // Update the height after data is updated
- getScrollViewContent(dialog).layoutParams.height = WRAP_CONTENT
- lastUiUpdateMs = systemClock.elapsedRealtime()
- lastItemRow = itemRow
- logger.logDeviceUiUpdate(lastUiUpdateMs - start)
- }
- }
- }
- }
-
- internal fun onBluetoothStateUpdated(
- dialog: SystemUIDialog,
- isEnabled: Boolean,
- uiProperties: BluetoothTileDialogViewModel.UiProperties,
- ) {
- getToggleView(dialog).apply {
- isChecked = isEnabled
- setEnabled(true)
- alpha = ENABLED_ALPHA
- }
- getSubtitleTextView(dialog).text = dialog.context.getString(uiProperties.subTitleResId)
- getAutoOnToggleView(dialog).visibility = uiProperties.autoOnToggleVisibility
- }
-
- internal fun onBluetoothAutoOnUpdated(
- dialog: SystemUIDialog,
- isEnabled: Boolean,
- @StringRes infoResId: Int,
- ) {
- getAutoOnToggle(dialog).isChecked = isEnabled
- getAutoOnToggleInfoTextView(dialog).text = dialog.context.getString(infoResId)
- }
-
- internal fun onAudioSharingButtonUpdated(
- dialog: SystemUIDialog,
- visibility: Int,
- label: String?,
- isActive: Boolean,
- ) {
- getAudioSharingButtonView(dialog).apply {
- this.visibility = visibility
- label?.let { text = it }
- this.isActivated = isActive
- }
- }
-
- private fun setupToggle(dialog: SystemUIDialog) {
- val toggleView = getToggleView(dialog)
- toggleView.setOnCheckedChangeListener { view, isChecked ->
- mutableBluetoothStateToggle.value = isChecked
- view.apply {
- isEnabled = false
- alpha = DISABLED_ALPHA
- }
- logger.logBluetoothState(BluetoothStateStage.USER_TOGGLED, isChecked.toString())
- uiEventLogger.log(BluetoothTileDialogUiEvent.BLUETOOTH_TOGGLE_CLICKED)
- }
-
- getAutoOnToggleView(dialog).visibility = initialUiProperties.autoOnToggleVisibility
- getAutoOnToggle(dialog).setOnCheckedChangeListener { _, isChecked ->
- mutableBluetoothAutoOnToggle.value = isChecked
- uiEventLogger.log(BluetoothTileDialogUiEvent.BLUETOOTH_AUTO_ON_TOGGLE_CLICKED)
- }
- }
-
- private fun getToggleView(dialog: SystemUIDialog): Switch {
- return dialog.requireViewById(R.id.bluetooth_toggle)
- }
-
- private fun getSubtitleTextView(dialog: SystemUIDialog): TextView {
- return dialog.requireViewById(R.id.bluetooth_tile_dialog_subtitle)
- }
-
- private fun getSeeAllButton(dialog: SystemUIDialog): View {
- return dialog.requireViewById(R.id.see_all_button)
- }
-
- private fun getPairNewDeviceButton(dialog: SystemUIDialog): View {
- return dialog.requireViewById(R.id.pair_new_device_button)
- }
-
- private fun getDeviceListView(dialog: SystemUIDialog): RecyclerView {
- return dialog.requireViewById(R.id.device_list)
- }
-
- private fun getAutoOnToggle(dialog: SystemUIDialog): Switch {
- return dialog.requireViewById(R.id.bluetooth_auto_on_toggle)
- }
-
- private fun getAudioSharingButtonView(dialog: SystemUIDialog): Button {
- return dialog.requireViewById(R.id.audio_sharing_button)
- }
-
- private fun getAutoOnToggleView(dialog: SystemUIDialog): View {
- return dialog.requireViewById(R.id.bluetooth_auto_on_toggle_layout)
- }
-
- private fun getAutoOnToggleInfoTextView(dialog: SystemUIDialog): TextView {
- return dialog.requireViewById(R.id.bluetooth_auto_on_toggle_info_text)
- }
-
- private fun getProgressBarAnimation(dialog: SystemUIDialog): ProgressBar {
- return dialog.requireViewById(R.id.bluetooth_tile_dialog_progress_animation)
- }
-
- private fun getProgressBarBackground(dialog: SystemUIDialog): View {
- return dialog.requireViewById(R.id.bluetooth_tile_dialog_progress_background)
- }
-
- private fun getScrollViewContent(dialog: SystemUIDialog): View {
- return dialog.requireViewById(R.id.scroll_view)
- }
-
- private fun setupRecyclerView(dialog: SystemUIDialog) {
- getDeviceListView(dialog).apply {
- layoutManager = LinearLayoutManager(dialog.context)
- adapter = deviceItemAdapter
- }
- }
-
- private fun showProgressBar(dialog: SystemUIDialog) {
- val progressBarAnimation = getProgressBarAnimation(dialog)
- val progressBarBackground = getProgressBarBackground(dialog)
- if (progressBarAnimation.visibility != VISIBLE) {
- progressBarAnimation.visibility = VISIBLE
- progressBarBackground.visibility = INVISIBLE
- }
- }
-
- private fun hideProgressBar(dialog: SystemUIDialog) {
- val progressBarAnimation = getProgressBarAnimation(dialog)
- val progressBarBackground = getProgressBarBackground(dialog)
- if (progressBarAnimation.visibility != INVISIBLE) {
- progressBarAnimation.visibility = INVISIBLE
- progressBarBackground.visibility = VISIBLE
- }
- }
-
- internal inner class Adapter : RecyclerView.Adapter<Adapter.DeviceItemViewHolder>() {
-
- private val diffUtilCallback =
- object : DiffUtil.ItemCallback<DeviceItem>() {
- override fun areItemsTheSame(
- deviceItem1: DeviceItem,
- deviceItem2: DeviceItem,
- ): Boolean {
- return deviceItem1.cachedBluetoothDevice == deviceItem2.cachedBluetoothDevice
- }
-
- override fun areContentsTheSame(
- deviceItem1: DeviceItem,
- deviceItem2: DeviceItem,
- ): Boolean {
- return deviceItem1.type == deviceItem2.type &&
- deviceItem1.cachedBluetoothDevice == deviceItem2.cachedBluetoothDevice &&
- deviceItem1.deviceName == deviceItem2.deviceName &&
- deviceItem1.connectionSummary == deviceItem2.connectionSummary &&
- // Ignored the icon drawable
- deviceItem1.iconWithDescription?.second ==
- deviceItem2.iconWithDescription?.second &&
- deviceItem1.background == deviceItem2.background &&
- deviceItem1.isEnabled == deviceItem2.isEnabled &&
- deviceItem1.actionAccessibilityLabel == deviceItem2.actionAccessibilityLabel
- }
- }
-
- private val asyncListDiffer = AsyncListDiffer(this, diffUtilCallback)
-
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DeviceItemViewHolder {
- val view =
- LayoutInflater.from(parent.context)
- .inflate(R.layout.bluetooth_device_item, parent, false)
- return DeviceItemViewHolder(view)
- }
-
- override fun getItemCount() = asyncListDiffer.currentList.size
-
- override fun onBindViewHolder(holder: DeviceItemViewHolder, position: Int) {
- val item = getItem(position)
- holder.bind(item)
- }
-
- internal fun getItem(position: Int) = asyncListDiffer.currentList[position]
-
- internal fun refreshDeviceItemList(updated: List<DeviceItem>, callback: () -> Unit) {
- asyncListDiffer.submitList(updated, callback)
- }
-
- internal inner class DeviceItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
- private val container = view.requireViewById<View>(R.id.bluetooth_device_row)
- private val nameView = view.requireViewById<TextView>(R.id.bluetooth_device_name)
- private val summaryView = view.requireViewById<TextView>(R.id.bluetooth_device_summary)
- private val iconView = view.requireViewById<ImageView>(R.id.bluetooth_device_icon)
- private val actionIcon = view.requireViewById<ImageView>(R.id.gear_icon_image)
- private val actionIconView = view.requireViewById<View>(R.id.gear_icon)
- private val divider = view.requireViewById<View>(R.id.divider)
-
- internal fun bind(item: DeviceItem) {
- container.apply {
- isEnabled = item.isEnabled
- background = item.background?.let { context.getDrawable(it) }
- setOnClickListener {
- mutableDeviceItemClick.tryEmit(
- DeviceItemClick(item, it, DeviceItemClick.Target.ENTIRE_ROW)
- )
- uiEventLogger.log(BluetoothTileDialogUiEvent.DEVICE_CLICKED)
- }
-
- // updating icon colors
- val tintColor =
- context.getColor(
- if (item.isActive) InternalR.color.materialColorOnPrimaryContainer
- else InternalR.color.materialColorOnSurface
- )
-
- // update icons
- iconView.apply {
- item.iconWithDescription?.let {
- setImageDrawable(it.first)
- contentDescription = it.second
- }
- }
-
- actionIcon.setImageResource(item.actionIconRes)
- actionIcon.drawable?.setTint(tintColor)
-
- divider.setBackgroundColor(tintColor)
-
- // update text styles
- nameView.setTextAppearance(
- if (item.isActive) R.style.TextAppearance_BluetoothTileDialog_Active
- else R.style.TextAppearance_BluetoothTileDialog
- )
- summaryView.setTextAppearance(
- if (item.isActive) R.style.TextAppearance_BluetoothTileDialog_Active
- else R.style.TextAppearance_BluetoothTileDialog
- )
-
- accessibilityDelegate =
- object : AccessibilityDelegate() {
- override fun onInitializeAccessibilityNodeInfo(
- host: View,
- info: AccessibilityNodeInfo,
- ) {
- super.onInitializeAccessibilityNodeInfo(host, info)
- info.addAction(
- AccessibilityAction(
- AccessibilityAction.ACTION_CLICK.id,
- item.actionAccessibilityLabel,
- )
- )
- }
- }
- }
- nameView.text = item.deviceName
- summaryView.text = item.connectionSummary
-
- actionIconView.setOnClickListener {
- mutableDeviceItemClick.tryEmit(
- DeviceItemClick(item, it, DeviceItemClick.Target.ACTION_ICON)
- )
- }
- }
- }
- }
-
- internal companion object {
- const val MIN_HEIGHT_CHANGE_INTERVAL_MS = 800L
- const val ACTION_BLUETOOTH_DEVICE_DETAILS =
- "com.android.settings.BLUETOOTH_DEVICE_DETAIL_SETTINGS"
- const val ACTION_PREVIOUSLY_CONNECTED_DEVICE =
- "com.android.settings.PREVIOUSLY_CONNECTED_DEVICE"
- const val ACTION_PAIR_NEW_DEVICE = "android.settings.BLUETOOTH_PAIRING_SETTINGS"
- const val ACTION_AUDIO_SHARING = "com.android.settings.BLUETOOTH_AUDIO_SHARING_SETTINGS"
- const val DISABLED_ALPHA = 0.3f
- const val ENABLED_ALPHA = 1f
- const val PROGRESS_BAR_ANIMATION_DURATION_MS = 1500L
-
- private fun Boolean.toInt(): Int {
- return if (this) 1 else 0
- }
+ contentManager.releaseView()
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogViewModel.kt b/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogViewModel.kt
index bf04897f6d10..308c9d10db93 100644
--- a/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogViewModel.kt
@@ -16,6 +16,7 @@
package com.android.systemui.bluetooth.qsdialog
+import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import android.os.Bundle
@@ -34,15 +35,16 @@ import com.android.systemui.Prefs
import com.android.systemui.animation.DialogCuj
import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.animation.Expandable
-import com.android.systemui.bluetooth.qsdialog.BluetoothTileDialogDelegate.Companion.ACTION_AUDIO_SHARING
-import com.android.systemui.bluetooth.qsdialog.BluetoothTileDialogDelegate.Companion.ACTION_PAIR_NEW_DEVICE
-import com.android.systemui.bluetooth.qsdialog.BluetoothTileDialogDelegate.Companion.ACTION_PREVIOUSLY_CONNECTED_DEVICE
+import com.android.systemui.bluetooth.qsdialog.BluetoothDetailsContentManager.Companion.ACTION_AUDIO_SHARING
+import com.android.systemui.bluetooth.qsdialog.BluetoothDetailsContentManager.Companion.ACTION_PAIR_NEW_DEVICE
+import com.android.systemui.bluetooth.qsdialog.BluetoothDetailsContentManager.Companion.ACTION_PREVIOUSLY_CONNECTED_DEVICE
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.res.R
+import com.android.systemui.statusbar.phone.SystemUIDialog
import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
@@ -57,9 +59,14 @@ import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.withContext
-/** ViewModel for Bluetooth Dialog after clicking on the Bluetooth QS tile. */
+/**
+ * ViewModel for Bluetooth Dialog or Bluetooth Details View after clicking on the Bluetooth QS tile.
+ *
+ * TODO: b/378513956 Rename this class to BluetoothDetailsContentViewModel, since it's not only used
+ * by the dialog view.
+ */
@SysUISingleton
-internal class BluetoothTileDialogViewModel
+class BluetoothTileDialogViewModel
@Inject
constructor(
private val deviceItemInteractor: DeviceItemInteractor,
@@ -78,36 +85,61 @@ constructor(
@Background private val backgroundDispatcher: CoroutineDispatcher,
@Main private val sharedPreferences: SharedPreferences,
private val bluetoothDialogDelegateFactory: BluetoothTileDialogDelegate.Factory,
+ private val bluetoothDetailsContentManagerFactory: BluetoothDetailsContentManager.Factory,
) : BluetoothTileDialogCallback {
+ lateinit var contentManager: BluetoothDetailsContentManager
private var job: Job? = null
/**
- * Shows the dialog.
+ * Shows the details content.
*
- * @param view The view from which the dialog is shown.
+ * @param view The view from which the dialog is shown. If view is null, it should show the
+ * bluetooth tile details view.
+ *
+ * TODO: b/378513956 Refactor this method into 2. One is called by the dialog to show the
+ * dialog, another is called by the details view model to bind the view.
*/
- fun showDialog(expandable: Expandable?) {
+ fun showDetailsContent(expandable: Expandable?, view: View?) {
cancelJob()
job =
coroutineScope.launch(context = mainDispatcher) {
var updateDeviceItemJob: Job?
var updateDialogUiJob: Job? = null
- val dialogDelegate = createBluetoothTileDialog()
- val dialog = dialogDelegate.createDialog()
- val context = dialog.context
-
- val controller =
- expandable?.dialogTransitionController(
- DialogCuj(
- InteractionJankMonitor.CUJ_SHADE_DIALOG_OPEN,
- INTERACTION_JANK_TAG,
+ val dialog: SystemUIDialog?
+ val context: Context
+
+ if (view == null) {
+ // Render with dialog
+ val dialogDelegate = createBluetoothTileDialog()
+ dialog = dialogDelegate.createDialog()
+ context = dialog.context
+
+ val controller =
+ expandable?.dialogTransitionController(
+ DialogCuj(
+ InteractionJankMonitor.CUJ_SHADE_DIALOG_OPEN,
+ INTERACTION_JANK_TAG,
+ )
)
- )
- controller?.let {
- dialogTransitionAnimator.show(dialog, it, animateBackgroundBoundsChange = true)
- } ?: dialog.show()
+ controller?.let {
+ dialogTransitionAnimator.show(
+ dialog,
+ it,
+ animateBackgroundBoundsChange = true,
+ )
+ } ?: dialog.show()
+ // contentManager is created after dialog.show
+ contentManager = dialogDelegate.contentManager
+ } else {
+ // Render with tile details view
+ dialog = null
+ context = view.context
+ contentManager = createContentManager()
+ contentManager.bind(view)
+ contentManager.start()
+ }
updateDeviceItemJob = launch {
deviceItemInteractor.updateDeviceItems(context, DeviceFetchTrigger.FIRST_LOAD)
@@ -121,15 +153,14 @@ constructor(
) { deviceItem, showSeeAll ->
updateDialogUiJob?.cancel()
updateDialogUiJob = launch {
- dialogDelegate.apply {
+ contentManager.apply {
onDeviceItemUpdated(
- dialog,
deviceItem,
showSeeAll,
showPairNewDevice =
bluetoothStateInteractor.isBluetoothEnabled(),
)
- animateProgressBar(dialog, false)
+ animateProgressBar(false)
}
}
}
@@ -150,7 +181,7 @@ constructor(
},
)
.onEach {
- dialogDelegate.animateProgressBar(dialog, true)
+ contentManager.animateProgressBar(true)
updateDeviceItemJob?.cancel()
updateDeviceItemJob = launch {
deviceItemInteractor.updateDeviceItems(
@@ -171,16 +202,14 @@ constructor(
.onEach {
when (it) {
is AudioSharingButtonState.Visible -> {
- dialogDelegate.onAudioSharingButtonUpdated(
- dialog,
+ contentManager.onAudioSharingButtonUpdated(
VISIBLE,
context.getString(it.resId),
it.isActive,
)
}
is AudioSharingButtonState.Gone -> {
- dialogDelegate.onAudioSharingButtonUpdated(
- dialog,
+ contentManager.onAudioSharingButtonUpdated(
GONE,
label = null,
isActive = false,
@@ -197,8 +226,7 @@ constructor(
// the device item list.
bluetoothStateInteractor.bluetoothStateUpdate
.onEach {
- dialogDelegate.onBluetoothStateUpdated(
- dialog,
+ contentManager.onBluetoothStateUpdated(
it,
UiProperties.build(it, isAutoOnToggleFeatureAvailable()),
)
@@ -214,16 +242,17 @@ constructor(
// bluetoothStateToggle is emitted when user toggles the bluetooth state switch,
// send the new value to the bluetoothStateInteractor and animate the progress bar.
- dialogDelegate.bluetoothStateToggle
+ contentManager.bluetoothStateToggle
.filterNotNull()
.onEach {
- dialogDelegate.animateProgressBar(dialog, true)
+ contentManager.animateProgressBar(true)
bluetoothStateInteractor.setBluetoothEnabled(it)
}
.launchIn(this)
// deviceItemClick is emitted when user clicked on a device item.
- dialogDelegate.deviceItemClick
+ contentManager.deviceItemClick
+ .filterNotNull()
.onEach {
when (it.target) {
DeviceItemClick.Target.ENTIRE_ROW -> {
@@ -245,7 +274,8 @@ constructor(
.launchIn(this)
// contentHeight is emitted when the dialog is dismissed.
- dialogDelegate.contentHeight
+ contentManager.contentHeight
+ .filterNotNull()
.onEach {
withContext(backgroundDispatcher) {
sharedPreferences.edit().putInt(CONTENT_HEIGHT_PREF_KEY, it).apply()
@@ -258,8 +288,7 @@ constructor(
// changed.
bluetoothAutoOnInteractor.isEnabled
.onEach {
- dialogDelegate.onBluetoothAutoOnUpdated(
- dialog,
+ contentManager.onBluetoothAutoOnUpdated(
it,
if (it) R.string.turn_on_bluetooth_auto_info_enabled
else R.string.turn_on_bluetooth_auto_info_disabled,
@@ -269,36 +298,48 @@ constructor(
// bluetoothAutoOnToggle is emitted when user toggles the bluetooth auto on
// switch, send the new value to the bluetoothAutoOnInteractor.
- dialogDelegate.bluetoothAutoOnToggle
+ contentManager.bluetoothAutoOnToggle
.filterNotNull()
.onEach { bluetoothAutoOnInteractor.setEnabled(it) }
.launchIn(this)
}
- produce<Unit> { awaitClose { dialog.cancel() } }
+ produce<Unit> { awaitClose { dialog?.cancel() } }
}
}
private suspend fun createBluetoothTileDialog(): BluetoothTileDialogDelegate {
- val cachedContentHeight =
- withContext(backgroundDispatcher) {
- sharedPreferences.getInt(
- CONTENT_HEIGHT_PREF_KEY,
- ViewGroup.LayoutParams.WRAP_CONTENT,
- )
- }
-
return bluetoothDialogDelegateFactory.create(
- UiProperties.build(
- bluetoothStateInteractor.isBluetoothEnabled(),
- isAutoOnToggleFeatureAvailable(),
- ),
- cachedContentHeight,
+ getUiProperties(),
+ getCachedContentHeight(),
this@BluetoothTileDialogViewModel,
{ cancelJob() },
)
}
+ private suspend fun createContentManager(): BluetoothDetailsContentManager {
+ return bluetoothDetailsContentManagerFactory.create(
+ getUiProperties(),
+ getCachedContentHeight(),
+ this@BluetoothTileDialogViewModel,
+ /* isInDialog= */ false,
+ /* doneButtonCallback= */ fun() {},
+ )
+ }
+
+ private suspend fun getUiProperties(): UiProperties {
+ return UiProperties.build(
+ bluetoothStateInteractor.isBluetoothEnabled(),
+ isAutoOnToggleFeatureAvailable(),
+ )
+ }
+
+ private suspend fun getCachedContentHeight(): Int {
+ return withContext(backgroundDispatcher) {
+ sharedPreferences.getInt(CONTENT_HEIGHT_PREF_KEY, ViewGroup.LayoutParams.WRAP_CONTENT)
+ }
+ }
+
override fun onSeeAllClicked(view: View) {
uiEventLogger.log(BluetoothTileDialogUiEvent.SEE_ALL_CLICKED)
startSettingsActivity(Intent(ACTION_PREVIOUSLY_CONNECTED_DEVICE), view)
@@ -355,7 +396,7 @@ constructor(
else R.string.bt_is_off
}
- internal data class UiProperties(
+ data class UiProperties(
@StringRes val subTitleResId: Int,
val autoOnToggleVisibility: Int,
@DimenRes val scrollViewMinHeightResId: Int,
diff --git a/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/DeviceItemActionInteractor.kt b/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/DeviceItemActionInteractor.kt
index cb4ec37a1a66..26996ac1db39 100644
--- a/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/DeviceItemActionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/bluetooth/qsdialog/DeviceItemActionInteractor.kt
@@ -27,7 +27,7 @@ import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.withContext
interface DeviceItemActionInteractor {
- suspend fun onClick(deviceItem: DeviceItem, dialog: SystemUIDialog)
+ suspend fun onClick(deviceItem: DeviceItem, dialog: SystemUIDialog?) {}
suspend fun onActionIconClick(deviceItem: DeviceItem, onIntent: (Intent) -> Unit)
}
@@ -40,7 +40,7 @@ constructor(
private val uiEventLogger: UiEventLogger,
) : DeviceItemActionInteractor {
- override suspend fun onClick(deviceItem: DeviceItem, dialog: SystemUIDialog) {
+ override suspend fun onClick(deviceItem: DeviceItem, dialog: SystemUIDialog?) {
withContext(backgroundDispatcher) {
deviceItem.cachedBluetoothDevice.apply {
when (deviceItem.type) {
diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/dagger/BouncerLoggerModule.kt b/packages/SystemUI/src/com/android/systemui/bouncer/dagger/BouncerLoggerModule.kt
index 8b253077a3dd..ab2ff2f84e65 100644
--- a/packages/SystemUI/src/com/android/systemui/bouncer/dagger/BouncerLoggerModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/bouncer/dagger/BouncerLoggerModule.kt
@@ -17,6 +17,7 @@
package com.android.systemui.bouncer.dagger
import com.android.systemui.CoreStartable
+import com.android.systemui.bouncer.domain.interactor.BouncerMessageAuditLogger
import com.android.systemui.bouncer.log.BouncerLoggerStartable
import dagger.Binds
import dagger.Module
@@ -30,4 +31,9 @@ interface BouncerLoggerModule {
@IntoMap
@ClassKey(BouncerLoggerStartable::class)
fun bindBouncerLoggerStartable(impl: BouncerLoggerStartable): CoreStartable
+
+ @Binds
+ @IntoMap
+ @ClassKey(BouncerMessageAuditLogger::class)
+ fun bind(impl: BouncerMessageAuditLogger): CoreStartable
}
diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/BouncerMessageAuditLogger.kt b/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/BouncerMessageAuditLogger.kt
index 355ce6a3798f..64d33b2648c2 100644
--- a/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/BouncerMessageAuditLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/BouncerMessageAuditLogger.kt
@@ -17,13 +17,13 @@
package com.android.systemui.bouncer.domain.interactor
import android.util.Log
+import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.systemui.CoreStartable
import com.android.systemui.bouncer.data.repository.BouncerMessageRepository
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
-import com.android.app.tracing.coroutines.launchTraced as launch
private val TAG = BouncerMessageAuditLogger::class.simpleName!!
diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/shared/constants/KeyguardBouncerConstants.kt b/packages/SystemUI/src/com/android/systemui/bouncer/shared/constants/KeyguardBouncerConstants.kt
index a286d16826cd..e949dc6a1935 100644
--- a/packages/SystemUI/src/com/android/systemui/bouncer/shared/constants/KeyguardBouncerConstants.kt
+++ b/packages/SystemUI/src/com/android/systemui/bouncer/shared/constants/KeyguardBouncerConstants.kt
@@ -16,6 +16,16 @@
package com.android.systemui.bouncer.shared.constants
+import com.android.app.animation.Interpolators
+import com.android.internal.R.color as colors
+import com.android.systemui.Flags
+import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.ColorId.NUM_PAD_BACKGROUND
+import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.ColorId.NUM_PAD_BACKGROUND_PRESSED
+import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.ColorId.NUM_PAD_BUTTON
+import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.ColorId.NUM_PAD_KEY
+import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.ColorId.NUM_PAD_PRESSED
+import com.android.systemui.res.R
+
object KeyguardBouncerConstants {
/**
* Values for the bouncer expansion represented as the panel expansion. Panel expansion 1f =
@@ -33,15 +43,88 @@ object KeyguardBouncerConstants {
const val DEFAULT_PIN_LENGTH = 6
object ColorId {
+ private const val DEPRECATION_MSG =
+ "Colors will not be used after bouncerUiRevamp2 flag is launched"
+
+ @Deprecated(DEPRECATION_MSG)
const val TITLE = com.android.internal.R.color.materialColorOnSurface
+
+ @Deprecated(DEPRECATION_MSG)
const val PIN_SHAPES = com.android.internal.R.color.materialColorOnSurfaceVariant
+
+ @Deprecated(DEPRECATION_MSG)
const val NUM_PAD_BACKGROUND =
com.android.internal.R.color.materialColorSurfaceContainerHigh
+
+ @Deprecated(DEPRECATION_MSG)
const val NUM_PAD_BACKGROUND_PRESSED =
com.android.internal.R.color.materialColorPrimaryFixed
+
+ @Deprecated(DEPRECATION_MSG)
const val NUM_PAD_PRESSED = com.android.internal.R.color.materialColorOnPrimaryFixed
+
+ @Deprecated(DEPRECATION_MSG)
const val NUM_PAD_KEY = com.android.internal.R.color.materialColorOnSurface
+
+ @Deprecated(DEPRECATION_MSG)
const val NUM_PAD_BUTTON = com.android.internal.R.color.materialColorOnSecondaryFixed
+
+ @Deprecated(DEPRECATION_MSG)
const val EMERGENCY_BUTTON = com.android.internal.R.color.materialColorTertiaryFixed
}
+
+ object Color {
+ @JvmField val actionButtonText = colors.materialColorOnSecondaryContainer
+ @JvmField val actionButtonBg = colors.materialColorSecondaryContainer
+ }
+}
+
+private fun <T> c(old: T, new: T): T {
+ return if (Flags.bouncerUiRevamp2()) {
+ new
+ } else {
+ old
+ }
+}
+
+object PinBouncerConstants {
+ @JvmField
+ val pinShapes = c(old = R.array.bouncer_pin_shapes, new = R.array.updated_bouncer_pin_shapes)
+ @JvmField
+ val pinDotAvd = c(old = R.drawable.pin_dot_avd, new = R.drawable.bouncer_shape_outline)
+ @JvmField
+ val pinDeleteAvd = c(old = R.drawable.pin_dot_delete_avd, new = R.drawable.bouncer_shape_delete)
+
+ object Color {
+ @JvmField val hintDot = colors.materialColorOnSurfaceVariant
+ @JvmField val shape = colors.materialColorPrimary
+ @JvmField val digit = c(old = NUM_PAD_KEY, new = colors.materialColorOnSurface)
+ @JvmField
+ val digitPressed = c(old = NUM_PAD_PRESSED, new = colors.materialColorOnPrimaryContainer)
+ @JvmField
+ val digitBg = c(old = NUM_PAD_BACKGROUND, colors.materialColorSurfaceContainerHigh)
+ @JvmField
+ val bgPressed = c(old = NUM_PAD_BACKGROUND_PRESSED, colors.materialColorPrimaryContainer)
+ @JvmField
+ val actionWithAutoConfirm = c(old = NUM_PAD_KEY, new = colors.materialColorOnSurface)
+ @JvmField val action = c(old = NUM_PAD_BUTTON, new = colors.materialColorOnSecondary)
+ @JvmField
+ val actionBg = c(old = colors.materialColorSecondaryFixedDim, colors.materialColorSecondary)
+ }
+
+ object Animation {
+ @JvmField val expansionDuration = c(old = 100, new = 33)
+ @JvmField val expansionColorDuration = c(old = 50, new = expansionDuration)
+ @JvmField
+ val expansionInterpolator = c(old = Interpolators.LINEAR, new = Interpolators.LINEAR)!!
+
+ @JvmField val contractionDuration = c(old = 417, new = 300)
+ @JvmField val contractionStartDelay = c(old = 33, new = 0)
+ @JvmField
+ val contractionRadiusInterpolator =
+ c(old = Interpolators.FAST_OUT_SLOW_IN, new = Interpolators.STANDARD)!!
+ @JvmField
+ val contractionColorInterpolator =
+ c(old = Interpolators.LINEAR, new = Interpolators.STANDARD)!!
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/ui/BouncerMessageView.kt b/packages/SystemUI/src/com/android/systemui/bouncer/ui/BouncerMessageView.kt
index ad49fd03c577..b463dd447f2b 100644
--- a/packages/SystemUI/src/com/android/systemui/bouncer/ui/BouncerMessageView.kt
+++ b/packages/SystemUI/src/com/android/systemui/bouncer/ui/BouncerMessageView.kt
@@ -24,6 +24,7 @@ import com.android.keyguard.BouncerKeyguardMessageArea
import com.android.keyguard.KeyguardMessageArea
import com.android.keyguard.KeyguardMessageAreaController
import com.android.systemui.Flags
+import com.android.systemui.FontStyles
import com.android.systemui.res.R
class BouncerMessageView : LinearLayout {
@@ -45,12 +46,12 @@ class BouncerMessageView : LinearLayout {
primaryMessageView = findViewById(R.id.bouncer_primary_message_area)
secondaryMessageView = findViewById(R.id.bouncer_secondary_message_area)
- if (Flags.gsfBouncer()) {
+ if (Flags.bouncerUiRevamp2()) {
primaryMessageView?.apply {
- typeface = Typeface.create("gsf-title-large-emphasized", Typeface.NORMAL)
+ typeface = Typeface.create(FontStyles.GSF_TITLE_LARGE_EMPHASIZED, Typeface.NORMAL)
}
secondaryMessageView?.apply {
- typeface = Typeface.create("gsf-title-medium-emphasized", Typeface.NORMAL)
+ typeface = Typeface.create(FontStyles.GSF_TITLE_MEDIUM_EMPHASIZED, Typeface.NORMAL)
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/brightness/ui/compose/BrightnessSlider.kt b/packages/SystemUI/src/com/android/systemui/brightness/ui/compose/BrightnessSlider.kt
index 6f2a2c4ccaaa..b13f6df3f4f5 100644
--- a/packages/SystemUI/src/com/android/systemui/brightness/ui/compose/BrightnessSlider.kt
+++ b/packages/SystemUI/src/com/android/systemui/brightness/ui/compose/BrightnessSlider.kt
@@ -16,49 +16,75 @@
package com.android.systemui.brightness.ui.compose
+import android.content.Context
import android.view.MotionEvent
+import androidx.annotation.VisibleForTesting
+import androidx.compose.animation.core.Animatable
+import androidx.compose.animation.core.AnimationVector1D
+import androidx.compose.animation.core.VectorConverter
import androidx.compose.animation.core.animateFloatAsState
+import androidx.compose.animation.core.tween
import androidx.compose.foundation.clickable
import androidx.compose.foundation.gestures.Orientation
import androidx.compose.foundation.interaction.DragInteraction
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.height
import androidx.compose.foundation.shape.CornerSize
+import androidx.compose.material3.ExperimentalMaterial3Api
+import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.Text
+import androidx.compose.material3.Slider
+import androidx.compose.material3.SliderDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.produceState
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
+import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.drawWithCache
+import androidx.compose.ui.draw.drawWithContent
import androidx.compose.ui.geometry.CornerRadius
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.geometry.Size
import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.ColorFilter
+import androidx.compose.ui.graphics.asImageBitmap
+import androidx.compose.ui.graphics.drawscope.DrawScope
+import androidx.compose.ui.graphics.drawscope.translate
+import androidx.compose.ui.graphics.painter.BitmapPainter
+import androidx.compose.ui.graphics.painter.ColorPainter
+import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.input.pointer.pointerInteropFilter
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.colorResource
-import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.app.tracing.coroutines.launchTraced as launch
-import com.android.compose.PlatformSlider
import com.android.compose.ui.graphics.drawInOverlay
import com.android.systemui.Flags
+import com.android.systemui.biometrics.Utils.toBitmap
import com.android.systemui.brightness.shared.model.GammaBrightness
+import com.android.systemui.brightness.ui.compose.AnimationSpecs.IconAppearSpec
+import com.android.systemui.brightness.ui.compose.AnimationSpecs.IconDisappearSpec
+import com.android.systemui.brightness.ui.compose.Dimensions.IconPadding
+import com.android.systemui.brightness.ui.compose.Dimensions.IconSize
+import com.android.systemui.brightness.ui.compose.Dimensions.SliderBackgroundFrameSize
+import com.android.systemui.brightness.ui.compose.Dimensions.SliderBackgroundRoundedCorner
+import com.android.systemui.brightness.ui.compose.Dimensions.SliderTrackRoundedCorner
+import com.android.systemui.brightness.ui.compose.Dimensions.ThumbTrackGapSize
import com.android.systemui.brightness.ui.viewmodel.BrightnessSliderViewModel
import com.android.systemui.brightness.ui.viewmodel.Drag
import com.android.systemui.common.shared.model.Icon
-import com.android.systemui.common.shared.model.Text
-import com.android.systemui.common.ui.compose.Icon
import com.android.systemui.compose.modifiers.sysuiResTag
import com.android.systemui.haptics.slider.SeekableSliderTrackerConfig
import com.android.systemui.haptics.slider.SliderHapticFeedbackConfig
@@ -67,27 +93,32 @@ import com.android.systemui.lifecycle.rememberViewModel
import com.android.systemui.qs.ui.compose.borderOnFocus
import com.android.systemui.res.R
import com.android.systemui.utils.PolicyRestriction
+import platform.test.motion.compose.values.MotionTestValueKey
+import platform.test.motion.compose.values.motionTestValues
+@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterial3ExpressiveApi::class)
@Composable
-private fun BrightnessSlider(
- viewModel: BrightnessSliderViewModel,
+@VisibleForTesting
+fun BrightnessSlider(
gammaValue: Int,
valueRange: IntRange,
- label: Text.Resource,
- icon: Icon,
+ iconResProvider: (Float) -> Int,
+ imageLoader: suspend (Int, Context) -> Icon.Loaded,
restriction: PolicyRestriction,
onRestrictedClick: (PolicyRestriction.Restricted) -> Unit,
onDrag: (Int) -> Unit,
onStop: (Int) -> Unit,
+ overriddenByAppState: Boolean,
modifier: Modifier = Modifier,
- formatter: (Int) -> String = { "$it" },
+ showToast: () -> Unit = {},
hapticsViewModelFactory: SliderHapticsViewModel.Factory,
) {
var value by remember(gammaValue) { mutableIntStateOf(gammaValue) }
val animatedValue by
animateFloatAsState(targetValue = value.toFloat(), label = "BrightnessSliderAnimatedValue")
val floatValueRange = valueRange.first.toFloat()..valueRange.last.toFloat()
- val isRestricted = remember(restriction) { restriction is PolicyRestriction.Restricted }
+ val isRestricted = restriction is PolicyRestriction.Restricted
+ val enabled = !isRestricted
val interactionSource = remember { MutableInteractionSource() }
val hapticsViewModel: SliderHapticsViewModel? =
if (Flags.hapticsForComposeSliders()) {
@@ -105,20 +136,56 @@ private fun BrightnessSlider(
} else {
null
}
+ val colors = SliderDefaults.colors()
- val overriddenByAppState by
- if (Flags.showToastWhenAppControlBrightness()) {
- viewModel.brightnessOverriddenByWindow.collectAsStateWithLifecycle()
- } else {
- remember { mutableStateOf(false) }
+ // The value state is recreated every time gammaValue changes, so we recreate this derivedState
+ // We have to use value as that's the value that changes when the user is dragging (gammaValue
+ // is always the starting value: actual (not temporary) brightness).
+ val iconRes by
+ remember(gammaValue, valueRange) {
+ derivedStateOf {
+ val percentage =
+ (value - valueRange.first) * 100f / (valueRange.last - valueRange.first)
+ iconResProvider(percentage)
+ }
+ }
+ val context = LocalContext.current
+ val painter: Painter by
+ produceState<Painter>(
+ initialValue = ColorPainter(Color.Transparent),
+ key1 = iconRes,
+ key2 = context,
+ ) {
+ val icon = imageLoader(iconRes, context)
+ // toBitmap is Drawable?.() -> Bitmap? and handles null internally.
+ val bitmap = icon.drawable.toBitmap()!!.asImageBitmap()
+ this@produceState.value = BitmapPainter(bitmap)
+ }
+
+ val activeIconColor = colors.activeTickColor
+ val inactiveIconColor = colors.inactiveTickColor
+ val trackIcon: DrawScope.(Offset, Color, Float) -> Unit =
+ remember(painter) {
+ { offset, color, alpha ->
+ translate(offset.x + IconPadding.toPx(), offset.y) {
+ with(painter) {
+ draw(
+ IconSize.toSize(),
+ colorFilter = ColorFilter.tint(color),
+ alpha = alpha,
+ )
+ }
+ }
+ }
}
- PlatformSlider(
+ Slider(
value = animatedValue,
valueRange = floatValueRange,
- enabled = !isRestricted,
+ enabled = enabled,
+ colors = colors,
onValueChange = {
- if (!isRestricted) {
+ if (enabled) {
if (!overriddenByAppState) {
hapticsViewModel?.onValueChange(it)
value = it.toInt()
@@ -127,7 +194,7 @@ private fun BrightnessSlider(
}
},
onValueChangeFinished = {
- if (!isRestricted) {
+ if (enabled) {
if (!overriddenByAppState) {
hapticsViewModel?.onValueChangeEnded()
onStop(value)
@@ -140,46 +207,117 @@ private fun BrightnessSlider(
onRestrictedClick(restriction)
}
},
- icon = { isDragging ->
- if (isDragging) {
- Text(text = formatter(value))
- } else {
- Icon(modifier = Modifier.size(24.dp), icon = icon)
- }
+ interactionSource = interactionSource,
+ thumb = {
+ SliderDefaults.Thumb(
+ interactionSource = interactionSource,
+ enabled = enabled,
+ thumbSize = DpSize(4.dp, 52.dp),
+ )
},
- label = {
- Text(
- text = stringResource(id = label.res),
- style = MaterialTheme.typography.titleMedium,
- maxLines = 1,
+ track = { sliderState ->
+ var showIconActive by remember { mutableStateOf(true) }
+ val iconActiveAlphaAnimatable = remember {
+ Animatable(
+ initialValue = 1f,
+ typeConverter = Float.VectorConverter,
+ label = "iconActiveAlpha",
+ )
+ }
+
+ val iconInactiveAlphaAnimatable = remember {
+ Animatable(
+ initialValue = 0f,
+ typeConverter = Float.VectorConverter,
+ label = "iconInactiveAlpha",
+ )
+ }
+
+ LaunchedEffect(iconActiveAlphaAnimatable, iconInactiveAlphaAnimatable, showIconActive) {
+ if (showIconActive) {
+ launch { iconActiveAlphaAnimatable.appear() }
+ launch { iconInactiveAlphaAnimatable.disappear() }
+ } else {
+ launch { iconActiveAlphaAnimatable.disappear() }
+ launch { iconInactiveAlphaAnimatable.appear() }
+ }
+ }
+
+ SliderDefaults.Track(
+ sliderState = sliderState,
+ modifier =
+ Modifier.motionTestValues {
+ (iconActiveAlphaAnimatable.isRunning ||
+ iconInactiveAlphaAnimatable.isRunning) exportAs
+ BrightnessSliderMotionTestKeys.AnimatingIcon
+
+ iconActiveAlphaAnimatable.value exportAs
+ BrightnessSliderMotionTestKeys.ActiveIconAlpha
+ iconInactiveAlphaAnimatable.value exportAs
+ BrightnessSliderMotionTestKeys.InactiveIconAlpha
+ }
+ .height(40.dp)
+ .drawWithContent {
+ drawContent()
+
+ val yOffset = size.height / 2 - IconSize.toSize().height / 2
+ val activeTrackStart = 0f
+ val activeTrackEnd =
+ size.width * sliderState.coercedValueAsFraction -
+ ThumbTrackGapSize.toPx()
+ val inactiveTrackStart = activeTrackEnd + ThumbTrackGapSize.toPx() * 2
+ val inactiveTrackEnd = size.width
+
+ val activeTrackWidth = activeTrackEnd - activeTrackStart
+ val inactiveTrackWidth = inactiveTrackEnd - inactiveTrackStart
+ if (
+ IconSize.toSize().width < activeTrackWidth - IconPadding.toPx() * 2
+ ) {
+ showIconActive = true
+ trackIcon(
+ Offset(activeTrackStart, yOffset),
+ activeIconColor,
+ iconActiveAlphaAnimatable.value,
+ )
+ } else if (
+ IconSize.toSize().width <
+ inactiveTrackWidth - IconPadding.toPx() * 2
+ ) {
+ showIconActive = false
+ trackIcon(
+ Offset(inactiveTrackStart, yOffset),
+ inactiveIconColor,
+ iconInactiveAlphaAnimatable.value,
+ )
+ }
+ },
+ trackCornerSize = SliderTrackRoundedCorner,
+ trackInsideCornerSize = 2.dp,
+ drawStopIndicator = null,
+ thumbTrackGapSize = ThumbTrackGapSize,
)
},
- interactionSource = interactionSource,
)
+
+ val currentShowToast by rememberUpdatedState(showToast)
// Showing the warning toast if the current running app window has controlled the
// brightness value.
if (Flags.showToastWhenAppControlBrightness()) {
- val context = LocalContext.current
LaunchedEffect(interactionSource) {
interactionSource.interactions.collect { interaction ->
if (interaction is DragInteraction.Start && overriddenByAppState) {
- viewModel.showToast(
- context,
- R.string.quick_settings_brightness_unable_adjust_msg,
- )
+ currentShowToast()
}
}
}
}
}
-private val sliderBackgroundFrameSize = 8.dp
-
private fun Modifier.sliderBackground(color: Color) = drawWithCache {
- val offsetAround = sliderBackgroundFrameSize.toPx()
- val newSize = Size(size.width + 2 * offsetAround, size.height + 2 * offsetAround)
- val offset = Offset(-offsetAround, -offsetAround)
- val cornerRadius = CornerRadius(offsetAround + size.height / 2)
+ val offsetAround = SliderBackgroundFrameSize.toSize()
+ val newSize = Size(size.width + 2 * offsetAround.width, size.height + 2 * offsetAround.height)
+ val offset = Offset(-offsetAround.width, -offsetAround.height)
+ val cornerRadius = CornerRadius(SliderBackgroundRoundedCorner.toPx())
onDrawBehind {
drawRoundRect(color = color, topLeft = offset, size = newSize, cornerRadius = cornerRadius)
}
@@ -192,21 +330,30 @@ fun BrightnessSliderContainer(
containerColor: Color = colorResource(R.color.shade_scrim_background_dark),
) {
val gamma = viewModel.currentBrightness.value
+ if (gamma == BrightnessSliderViewModel.initialValue.value) { // Ignore initial negative value.
+ return
+ }
+ val context = LocalContext.current
val coroutineScope = rememberCoroutineScope()
val restriction by
viewModel.policyRestriction.collectAsStateWithLifecycle(
initialValue = PolicyRestriction.NoRestriction
)
+ val overriddenByAppState by
+ if (Flags.showToastWhenAppControlBrightness()) {
+ viewModel.brightnessOverriddenByWindow.collectAsStateWithLifecycle()
+ } else {
+ remember { mutableStateOf(false) }
+ }
DisposableEffect(Unit) { onDispose { viewModel.setIsDragging(false) } }
Box(modifier = modifier.fillMaxWidth().sysuiResTag("brightness_slider")) {
BrightnessSlider(
- viewModel = viewModel,
gammaValue = gamma,
valueRange = viewModel.minBrightness.value..viewModel.maxBrightness.value,
- label = viewModel.label,
- icon = viewModel.icon,
+ iconResProvider = BrightnessSliderViewModel::getIconForPercentage,
+ imageLoader = viewModel::loadImage,
restriction = restriction,
onRestrictedClick = viewModel::showPolicyRestrictionDialog,
onDrag = {
@@ -220,7 +367,7 @@ fun BrightnessSliderContainer(
modifier =
Modifier.borderOnFocus(
color = MaterialTheme.colorScheme.secondary,
- cornerSize = CornerSize(32.dp),
+ cornerSize = CornerSize(SliderTrackRoundedCorner),
)
.then(if (viewModel.showMirror) Modifier.drawInOverlay() else Modifier)
.sliderBackground(containerColor)
@@ -234,8 +381,38 @@ fun BrightnessSliderContainer(
}
false
},
- formatter = viewModel::formatValue,
hapticsViewModelFactory = viewModel.hapticsViewModelFactory,
+ overriddenByAppState = overriddenByAppState,
+ showToast = {
+ viewModel.showToast(context, R.string.quick_settings_brightness_unable_adjust_msg)
+ },
)
}
}
+
+private object Dimensions {
+ val SliderBackgroundFrameSize = DpSize(10.dp, 6.dp)
+ val SliderBackgroundRoundedCorner = 24.dp
+ val SliderTrackRoundedCorner = 12.dp
+ val IconSize = DpSize(28.dp, 28.dp)
+ val IconPadding = 6.dp
+ val ThumbTrackGapSize = 6.dp
+}
+
+private object AnimationSpecs {
+ val IconAppearSpec = tween<Float>(durationMillis = 100, delayMillis = 33)
+ val IconDisappearSpec = tween<Float>(durationMillis = 50)
+}
+
+private suspend fun Animatable<Float, AnimationVector1D>.appear() =
+ animateTo(targetValue = 1f, animationSpec = IconAppearSpec)
+
+private suspend fun Animatable<Float, AnimationVector1D>.disappear() =
+ animateTo(targetValue = 0f, animationSpec = IconDisappearSpec)
+
+@VisibleForTesting
+object BrightnessSliderMotionTestKeys {
+ val AnimatingIcon = MotionTestValueKey<Boolean>("animatingIcon")
+ val ActiveIconAlpha = MotionTestValueKey<Float>("activeIconAlpha")
+ val InactiveIconAlpha = MotionTestValueKey<Float>("inactiveIconAlpha")
+}
diff --git a/packages/SystemUI/src/com/android/systemui/brightness/ui/viewmodel/BrightnessSliderViewModel.kt b/packages/SystemUI/src/com/android/systemui/brightness/ui/viewmodel/BrightnessSliderViewModel.kt
index 7df71550d43d..ed1cef3fccaf 100644
--- a/packages/SystemUI/src/com/android/systemui/brightness/ui/viewmodel/BrightnessSliderViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/brightness/ui/viewmodel/BrightnessSliderViewModel.kt
@@ -17,6 +17,8 @@
package com.android.systemui.brightness.ui.viewmodel
import android.content.Context
+import androidx.annotation.DrawableRes
+import androidx.annotation.FloatRange
import androidx.annotation.StringRes
import androidx.compose.runtime.getValue
import com.android.systemui.brightness.domain.interactor.BrightnessPolicyEnforcementInteractor
@@ -24,9 +26,9 @@ import com.android.systemui.brightness.domain.interactor.ScreenBrightnessInterac
import com.android.systemui.brightness.shared.model.GammaBrightness
import com.android.systemui.classifier.Classifier
import com.android.systemui.classifier.domain.interactor.FalsingInteractor
-import com.android.systemui.common.shared.model.ContentDescription
import com.android.systemui.common.shared.model.Icon
-import com.android.systemui.common.shared.model.Text
+import com.android.systemui.common.shared.model.asIcon
+import com.android.systemui.graphics.ImageLoader
import com.android.systemui.haptics.slider.compose.ui.SliderHapticsViewModel
import com.android.systemui.lifecycle.ExclusiveActivatable
import com.android.systemui.lifecycle.Hydrator
@@ -57,6 +59,7 @@ constructor(
private val falsingInteractor: FalsingInteractor,
@Assisted private val supportsMirroring: Boolean,
private val brightnessWarningToast: BrightnessWarningToast,
+ private val imageLoader: ImageLoader,
) : ExclusiveActivatable() {
private val hydrator = Hydrator("BrightnessSliderViewModel.hydrator")
@@ -64,17 +67,13 @@ constructor(
val currentBrightness by
hydrator.hydratedStateOf(
"currentBrightness",
- GammaBrightness(0),
+ initialValue,
screenBrightnessInteractor.gammaBrightness,
)
val maxBrightness = screenBrightnessInteractor.maxGammaBrightness
val minBrightness = screenBrightnessInteractor.minGammaBrightness
- val label = Text.Resource(R.string.quick_settings_brightness_dialog_title)
-
- val icon = Icon.Resource(R.drawable.ic_brightness_full, ContentDescription.Resource(label.res))
-
val policyRestriction = brightnessPolicyEnforcementInteractor.brightnessPolicyRestriction
fun showPolicyRestrictionDialog(restriction: PolicyRestriction.Restricted) {
@@ -94,6 +93,16 @@ constructor(
falsingInteractor.isFalseTouch(Classifier.BRIGHTNESS_SLIDER)
}
+ suspend fun loadImage(@DrawableRes resId: Int, context: Context): Icon.Loaded {
+ return imageLoader
+ .loadDrawable(
+ android.graphics.drawable.Icon.createWithResource(context, resId),
+ maxHeight = 200,
+ maxWidth = 200,
+ )!!
+ .asIcon(null, resId)
+ }
+
/**
* As a brightness slider is dragged, the corresponding events should be sent using this method.
*/
@@ -104,18 +113,6 @@ constructor(
}
}
- /**
- * Format the current value of brightness as a percentage between the minimum and maximum gamma.
- */
- fun formatValue(value: Int): String {
- val min = minBrightness.value
- val max = maxBrightness.value
- val coercedValue = value.coerceIn(min, max)
- val percentage = (coercedValue - min) * 100 / (max - min)
- // This is not finalized UI so using fixed string
- return "$percentage%"
- }
-
fun setIsDragging(dragging: Boolean) {
brightnessMirrorShowingInteractor.setMirrorShowing(dragging && supportsMirroring)
}
@@ -131,6 +128,26 @@ constructor(
interface Factory {
fun create(supportsMirroring: Boolean): BrightnessSliderViewModel
}
+
+ companion object {
+ val initialValue = GammaBrightness(-1)
+
+ private val icons =
+ BrightnessIcons(
+ brightnessLow = R.drawable.ic_brightness_low,
+ brightnessMid = R.drawable.ic_brightness_medium,
+ brightnessHigh = R.drawable.ic_brightness_full,
+ )
+
+ @DrawableRes
+ fun getIconForPercentage(@FloatRange(0.0, 100.0) percentage: Float): Int {
+ return when {
+ percentage <= 20f -> icons.brightnessLow
+ percentage >= 80f -> icons.brightnessHigh
+ else -> icons.brightnessMid
+ }
+ }
+ }
}
fun BrightnessSliderViewModel.Factory.create() = create(supportsMirroring = true)
@@ -143,3 +160,9 @@ sealed interface Drag {
@JvmInline value class Stopped(override val brightness: GammaBrightness) : Drag
}
+
+private data class BrightnessIcons(
+ @DrawableRes val brightnessLow: Int,
+ @DrawableRes val brightnessMid: Int,
+ @DrawableRes val brightnessHigh: Int,
+)
diff --git a/packages/SystemUI/src/com/android/systemui/common/ui/view/LongPressHandlingView.kt b/packages/SystemUI/src/com/android/systemui/common/ui/view/TouchHandlingView.kt
index 9c4736a13b46..42f1b738ec20 100644
--- a/packages/SystemUI/src/com/android/systemui/common/ui/view/LongPressHandlingView.kt
+++ b/packages/SystemUI/src/com/android/systemui/common/ui/view/TouchHandlingView.kt
@@ -27,7 +27,7 @@ import android.view.ViewConfiguration
import android.view.accessibility.AccessibilityNodeInfo
import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat
-import com.android.systemui.log.LongPressHandlingViewLogger
+import com.android.systemui.log.TouchHandlingViewLogger
import com.android.systemui.shade.TouchLogger
import kotlin.math.pow
import kotlin.math.sqrt
@@ -39,17 +39,13 @@ import kotlinx.coroutines.DisposableHandle
* The view will not handle any long pressed by default. To set it up, set up a listener and, when
* ready to start consuming long-presses, set [setLongPressHandlingEnabled] to `true`.
*/
-class LongPressHandlingView(
+class TouchHandlingView(
context: Context,
attrs: AttributeSet?,
longPressDuration: () -> Long,
allowedTouchSlop: Int = ViewConfiguration.getTouchSlop(),
- logger: LongPressHandlingViewLogger? = null,
-) :
- View(
- context,
- attrs,
- ) {
+ logger: TouchHandlingViewLogger? = null,
+) : View(context, attrs) {
init {
setupAccessibilityDelegate()
@@ -62,43 +58,32 @@ class LongPressHandlingView(
interface Listener {
/** Notifies that a long-press has been detected by the given view. */
- fun onLongPressDetected(
- view: View,
- x: Int,
- y: Int,
- isA11yAction: Boolean = false,
- )
+ fun onLongPressDetected(view: View, x: Int, y: Int, isA11yAction: Boolean = false)
/** Notifies that the gesture was too short for a long press, it is actually a click. */
- fun onSingleTapDetected(view: View) = Unit
+ fun onSingleTapDetected(view: View, x: Int, y: Int) = Unit
}
var listener: Listener? = null
var accessibilityHintLongPressAction: AccessibilityAction? = null
- private val interactionHandler: LongPressHandlingViewInteractionHandler by lazy {
- LongPressHandlingViewInteractionHandler(
+ private val interactionHandler: TouchHandlingViewInteractionHandler by lazy {
+ TouchHandlingViewInteractionHandler(
postDelayed = { block, timeoutMs ->
val dispatchToken = Any()
- handler.postDelayed(
- block,
- dispatchToken,
- timeoutMs,
- )
+ handler.postDelayed(block, dispatchToken, timeoutMs)
DisposableHandle { handler.removeCallbacksAndMessages(dispatchToken) }
},
isAttachedToWindow = ::isAttachedToWindow,
onLongPressDetected = { x, y ->
- listener?.onLongPressDetected(
- view = this,
- x = x,
- y = y,
- )
+ listener?.onLongPressDetected(view = this, x = x, y = y)
+ },
+ onSingleTapDetected = { x, y ->
+ listener?.onSingleTapDetected(this@TouchHandlingView, x = x, y = y)
},
- onSingleTapDetected = { listener?.onSingleTapDetected(this@LongPressHandlingView) },
longPressDuration = longPressDuration,
allowedTouchSlop = allowedTouchSlop,
logger = logger,
@@ -129,7 +114,7 @@ class LongPressHandlingView(
object : AccessibilityDelegate() {
override fun onInitializeAccessibilityNodeInfo(
v: View,
- info: AccessibilityNodeInfo
+ info: AccessibilityNodeInfo,
) {
super.onInitializeAccessibilityNodeInfo(v, info)
if (
@@ -143,17 +128,17 @@ class LongPressHandlingView(
override fun performAccessibilityAction(
host: View,
action: Int,
- args: Bundle?
+ args: Bundle?,
): Boolean {
return if (
interactionHandler.isLongPressHandlingEnabled &&
action == AccessibilityNodeInfoCompat.ACTION_LONG_CLICK
) {
- val longPressHandlingView = host as? LongPressHandlingView
- if (longPressHandlingView != null) {
+ val touchHandlingView = host as? TouchHandlingView
+ if (touchHandlingView != null) {
// the coordinates are not available as it is an a11y long press
listener?.onLongPressDetected(
- view = longPressHandlingView,
+ view = touchHandlingView,
x = 0,
y = 0,
isA11yAction = true,
@@ -170,24 +155,21 @@ class LongPressHandlingView(
}
}
-private fun MotionEvent.toModel(): LongPressHandlingViewInteractionHandler.MotionEventModel {
+private fun MotionEvent.toModel(): TouchHandlingViewInteractionHandler.MotionEventModel {
return when (actionMasked) {
MotionEvent.ACTION_DOWN ->
- LongPressHandlingViewInteractionHandler.MotionEventModel.Down(
- x = x.toInt(),
- y = y.toInt(),
- )
+ TouchHandlingViewInteractionHandler.MotionEventModel.Down(x = x.toInt(), y = y.toInt())
MotionEvent.ACTION_MOVE ->
- LongPressHandlingViewInteractionHandler.MotionEventModel.Move(
- distanceMoved = distanceMoved(),
+ TouchHandlingViewInteractionHandler.MotionEventModel.Move(
+ distanceMoved = distanceMoved()
)
MotionEvent.ACTION_UP ->
- LongPressHandlingViewInteractionHandler.MotionEventModel.Up(
+ TouchHandlingViewInteractionHandler.MotionEventModel.Up(
distanceMoved = distanceMoved(),
gestureDuration = gestureDuration(),
)
- MotionEvent.ACTION_CANCEL -> LongPressHandlingViewInteractionHandler.MotionEventModel.Cancel
- else -> LongPressHandlingViewInteractionHandler.MotionEventModel.Other
+ MotionEvent.ACTION_CANCEL -> TouchHandlingViewInteractionHandler.MotionEventModel.Cancel
+ else -> TouchHandlingViewInteractionHandler.MotionEventModel.Other
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/common/ui/view/LongPressHandlingViewInteractionHandler.kt b/packages/SystemUI/src/com/android/systemui/common/ui/view/TouchHandlingViewInteractionHandler.kt
index 4e38a4913fe6..5863fc644c8e 100644
--- a/packages/SystemUI/src/com/android/systemui/common/ui/view/LongPressHandlingViewInteractionHandler.kt
+++ b/packages/SystemUI/src/com/android/systemui/common/ui/view/TouchHandlingViewInteractionHandler.kt
@@ -17,11 +17,12 @@
package com.android.systemui.common.ui.view
-import com.android.systemui.log.LongPressHandlingViewLogger
+import android.graphics.Point
+import com.android.systemui.log.TouchHandlingViewLogger
import kotlinx.coroutines.DisposableHandle
-/** Encapsulates logic to handle complex touch interactions with a [LongPressHandlingView]. */
-class LongPressHandlingViewInteractionHandler(
+/** Encapsulates logic to handle complex touch interactions with a [TouchHandlingView]. */
+class TouchHandlingViewInteractionHandler(
/**
* Callback to run the given [Runnable] with the given delay, returning a [DisposableHandle]
* allowing the delayed runnable to be canceled before it is run.
@@ -32,7 +33,7 @@ class LongPressHandlingViewInteractionHandler(
/** Callback reporting the a long-press gesture was detected at the given coordinates. */
private val onLongPressDetected: (x: Int, y: Int) -> Unit,
/** Callback reporting the a single tap gesture was detected at the given coordinates. */
- private val onSingleTapDetected: () -> Unit,
+ private val onSingleTapDetected: (x: Int, y: Int) -> Unit,
/** Time for the touch to be considered a long-press in ms */
var longPressDuration: () -> Long,
/**
@@ -42,24 +43,16 @@ class LongPressHandlingViewInteractionHandler(
*/
val allowedTouchSlop: Int,
/** Optional logger that can be passed in to log touch events */
- val logger: LongPressHandlingViewLogger? = null,
+ val logger: TouchHandlingViewLogger? = null,
) {
sealed class MotionEventModel {
object Other : MotionEventModel()
- data class Down(
- val x: Int,
- val y: Int,
- ) : MotionEventModel()
+ data class Down(val x: Int, val y: Int) : MotionEventModel()
- data class Move(
- val distanceMoved: Float,
- ) : MotionEventModel()
+ data class Move(val distanceMoved: Float) : MotionEventModel()
- data class Up(
- val distanceMoved: Float,
- val gestureDuration: Long,
- ) : MotionEventModel()
+ data class Up(val distanceMoved: Float, val gestureDuration: Long) : MotionEventModel()
object Cancel : MotionEventModel()
}
@@ -67,14 +60,18 @@ class LongPressHandlingViewInteractionHandler(
var isLongPressHandlingEnabled: Boolean = false
var scheduledLongPressHandle: DisposableHandle? = null
+ /** Record coordinate for last DOWN event for single tap */
+ val lastEventDownCoordinate = Point(-1, -1)
+
fun onTouchEvent(event: MotionEventModel?): Boolean {
if (!isLongPressHandlingEnabled) {
return false
}
-
return when (event) {
is MotionEventModel.Down -> {
scheduleLongPress(event.x, event.y)
+ lastEventDownCoordinate.x = event.x
+ lastEventDownCoordinate.y = event.y
true
}
is MotionEventModel.Move -> {
@@ -92,7 +89,7 @@ class LongPressHandlingViewInteractionHandler(
event.gestureDuration < longPressDuration()
) {
logger?.dispatchingSingleTap()
- dispatchSingleTap()
+ dispatchSingleTap(lastEventDownCoordinate.x, lastEventDownCoordinate.y)
}
false
}
@@ -105,29 +102,20 @@ class LongPressHandlingViewInteractionHandler(
}
}
- private fun scheduleLongPress(
- x: Int,
- y: Int,
- ) {
+ private fun scheduleLongPress(x: Int, y: Int) {
val duration = longPressDuration()
logger?.schedulingLongPress(duration)
scheduledLongPressHandle =
postDelayed(
{
logger?.longPressTriggered()
- dispatchLongPress(
- x = x,
- y = y,
- )
+ dispatchLongPress(x = x, y = y)
},
duration,
)
}
- private fun dispatchLongPress(
- x: Int,
- y: Int,
- ) {
+ private fun dispatchLongPress(x: Int, y: Int) {
if (!isAttachedToWindow()) {
return
}
@@ -139,11 +127,11 @@ class LongPressHandlingViewInteractionHandler(
scheduledLongPressHandle?.dispose()
}
- private fun dispatchSingleTap() {
+ private fun dispatchSingleTap(x: Int, y: Int) {
if (!isAttachedToWindow()) {
return
}
- onSingleTapDetected()
+ onSingleTapDetected(x, y)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/communal/dagger/CommunalModule.kt b/packages/SystemUI/src/com/android/systemui/communal/dagger/CommunalModule.kt
index 8ddd1ed04f33..f01a6dbf568f 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/dagger/CommunalModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/dagger/CommunalModule.kt
@@ -47,6 +47,7 @@ import com.android.systemui.res.R
import com.android.systemui.scene.shared.model.SceneContainerConfig
import com.android.systemui.scene.shared.model.SceneDataSource
import com.android.systemui.scene.shared.model.SceneDataSourceDelegator
+import com.android.systemui.scene.ui.composable.ConstantSceneContainerTransitionsBuilder
import dagger.Binds
import dagger.Module
import dagger.Provides
@@ -114,9 +115,9 @@ interface CommunalModule {
SceneContainerConfig(
sceneKeys = listOf(CommunalScenes.Blank, CommunalScenes.Communal),
initialSceneKey = CommunalScenes.Blank,
- transitions = sceneTransitions,
navigationDistances =
mapOf(CommunalScenes.Blank to 0, CommunalScenes.Communal to 1),
+ transitionsBuilder = ConstantSceneContainerTransitionsBuilder(sceneTransitions),
)
return SceneDataSourceDelegator(applicationScope, config)
}
diff --git a/packages/SystemUI/src/com/android/systemui/communal/data/model/CommunalWidgetCategories.kt b/packages/SystemUI/src/com/android/systemui/communal/data/model/CommunalWidgetCategories.kt
index 75f0badfc7cb..31ffbbd9f713 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/data/model/CommunalWidgetCategories.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/data/model/CommunalWidgetCategories.kt
@@ -22,15 +22,24 @@ import android.appwidget.AppWidgetProviderInfo
* The widget categories to display on communal hub (where categories is a bitfield with values that
* match those in {@link AppWidgetProviderInfo}).
*/
-@JvmInline
-value class CommunalWidgetCategories(val categories: Int = defaultCategories) {
- fun contains(category: Int) = (categories and category) == category
+object CommunalWidgetCategories {
+ /**
+ * Categories that are allowed on communal hub.
+ * - Use "or" operator for including multiple categories.
+ */
+ val includedCategories: Int
+ get() {
+ return AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN or
+ AppWidgetProviderInfo.WIDGET_CATEGORY_KEYGUARD
+ }
- companion object {
- val defaultCategories: Int
- get() {
- return AppWidgetProviderInfo.WIDGET_CATEGORY_KEYGUARD or
- AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN
- }
- }
+ /**
+ * Categories to further filter included widgets by excluding certain opt-out categories.
+ * - WIDGET_CATEGORY_NOT_KEYGUARD: widgets opted out of displaying on keyguard like surfaces.
+ * - Use "and" operator for excluding multiple opt-out categories.
+ */
+ val excludedCategories: Int
+ get() {
+ return AppWidgetProviderInfo.WIDGET_CATEGORY_NOT_KEYGUARD.inv()
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalSceneRepository.kt b/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalSceneRepository.kt
index 643d185f1939..8b6322720118 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalSceneRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalSceneRepository.kt
@@ -16,7 +16,9 @@
package com.android.systemui.communal.data.repository
+import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.compose.animation.scene.ObservableTransitionState
+import com.android.compose.animation.scene.OverlayKey
import com.android.compose.animation.scene.SceneKey
import com.android.compose.animation.scene.TransitionKey
import com.android.systemui.communal.dagger.Communal
@@ -25,16 +27,17 @@ import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.scene.shared.model.SceneDataSource
+import com.android.systemui.scene.shared.model.SceneDataSourceDelegator
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.stateIn
-import com.android.app.tracing.coroutines.launchTraced as launch
/** Encapsulates the state of communal mode. */
interface CommunalSceneRepository {
@@ -52,6 +55,9 @@ interface CommunalSceneRepository {
/** Immediately snaps to the desired scene. */
fun snapToScene(toScene: SceneKey)
+ /** Shows the hub from a power button press. */
+ suspend fun showHubFromPowerButton()
+
/**
* Updates the transition state of the hub [SceneTransitionLayout].
*
@@ -67,6 +73,7 @@ constructor(
@Application private val applicationScope: CoroutineScope,
@Background backgroundScope: CoroutineScope,
@Communal private val sceneDataSource: SceneDataSource,
+ @Communal private val delegator: SceneDataSourceDelegator,
) : CommunalSceneRepository {
override val currentScene: StateFlow<SceneKey> = sceneDataSource.currentScene
@@ -98,6 +105,18 @@ constructor(
}
}
+ override suspend fun showHubFromPowerButton() {
+ // If keyguard is not showing yet, the hub view is not ready and the
+ // [SceneDataSourceDelegator] will still be using the default [NoOpSceneDataSource]
+ // and initial key, which is Blank. This means that when the hub container loads, it
+ // will default to not showing the hub. Attempting to set the scene in this state
+ // is simply ignored by the [NoOpSceneDataSource]. Instead, we temporarily override
+ // it with a new one that defaults to Communal. This delegate will be overwritten
+ // once the [CommunalContainer] loads.
+ // TODO(b/392969914): show the hub first instead of forcing the scene.
+ delegator.setDelegate(NoOpSceneDataSource(CommunalScenes.Communal))
+ }
+
/**
* Updates the transition state of the hub [SceneTransitionLayout].
*
@@ -106,4 +125,27 @@ constructor(
override fun setTransitionState(transitionState: Flow<ObservableTransitionState>?) {
_transitionState.value = transitionState
}
+
+ /** Noop implementation of a scene data source that always returns the initial [SceneKey]. */
+ private class NoOpSceneDataSource(initialSceneKey: SceneKey) : SceneDataSource {
+ override val currentScene: StateFlow<SceneKey> =
+ MutableStateFlow(initialSceneKey).asStateFlow()
+
+ override val currentOverlays: StateFlow<Set<OverlayKey>> =
+ MutableStateFlow(emptySet<OverlayKey>()).asStateFlow()
+
+ override fun changeScene(toScene: SceneKey, transitionKey: TransitionKey?) = Unit
+
+ override fun snapToScene(toScene: SceneKey) = Unit
+
+ override fun showOverlay(overlay: OverlayKey, transitionKey: TransitionKey?) = Unit
+
+ override fun hideOverlay(overlay: OverlayKey, transitionKey: TransitionKey?) = Unit
+
+ override fun replaceOverlay(
+ from: OverlayKey,
+ to: OverlayKey,
+ transitionKey: TransitionKey?,
+ ) = Unit
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalSettingsRepository.kt b/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalSettingsRepository.kt
index abd101693b43..4c291a0c5a2e 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalSettingsRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalSettingsRepository.kt
@@ -111,6 +111,18 @@ constructor(
@Named(DEFAULT_BACKGROUND_TYPE) private val defaultBackgroundType: CommunalBackgroundType,
) : CommunalSettingsRepository {
+ private val dreamsActivatedOnSleepByDefault by lazy {
+ resources.getBoolean(com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault)
+ }
+
+ private val dreamsActivatedOnDockByDefault by lazy {
+ resources.getBoolean(com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault)
+ }
+
+ private val dreamsActivatedOnPosturedByDefault by lazy {
+ resources.getBoolean(com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault)
+ }
+
override fun getFlagEnabled(): Boolean {
return if (getV2FlagEnabled()) {
true
@@ -178,27 +190,27 @@ constructor(
.emitOnStart()
.map {
if (
- secureSettings.getIntForUser(
+ secureSettings.getBoolForUser(
Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP,
- 0,
+ dreamsActivatedOnSleepByDefault,
user.id,
- ) == 1
+ )
) {
WhenToDream.WHILE_CHARGING
} else if (
- secureSettings.getIntForUser(
+ secureSettings.getBoolForUser(
Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK,
- 0,
+ dreamsActivatedOnDockByDefault,
user.id,
- ) == 1
+ )
) {
WhenToDream.WHILE_DOCKED
} else if (
- secureSettings.getIntForUser(
+ secureSettings.getBoolForUser(
Settings.Secure.SCREENSAVER_ACTIVATE_ON_POSTURED,
- 0,
+ dreamsActivatedOnPosturedByDefault,
user.id,
- ) == 1
+ )
) {
WhenToDream.WHILE_POSTURED
} else {
diff --git a/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalInteractor.kt b/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalInteractor.kt
index b4e6e9348b3d..de55c92e84f9 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalInteractor.kt
@@ -186,28 +186,32 @@ constructor(
* Whether communal hub should be shown automatically, depending on the user's [WhenToDream]
* state.
*/
- val shouldShowCommunal: Flow<Boolean> =
+ val shouldShowCommunal: StateFlow<Boolean> =
allOf(
- isCommunalAvailable,
- communalSettingsInteractor.whenToDream
- .flatMapLatest { whenToDream ->
- when (whenToDream) {
- WhenToDream.NEVER -> flowOf(false)
-
- WhenToDream.WHILE_CHARGING -> batteryInteractor.isDevicePluggedIn
-
- WhenToDream.WHILE_DOCKED ->
- allOf(
- batteryInteractor.isDevicePluggedIn,
- dockManager.retrieveIsDocked(),
- )
-
- WhenToDream.WHILE_POSTURED ->
- allOf(batteryInteractor.isDevicePluggedIn, posturingInteractor.postured)
+ isCommunalAvailable,
+ communalSettingsInteractor.whenToDream
+ .flatMapLatest { whenToDream ->
+ when (whenToDream) {
+ WhenToDream.NEVER -> flowOf(false)
+
+ WhenToDream.WHILE_CHARGING -> batteryInteractor.isDevicePluggedIn
+
+ WhenToDream.WHILE_DOCKED ->
+ allOf(
+ batteryInteractor.isDevicePluggedIn,
+ dockManager.retrieveIsDocked(),
+ )
+
+ WhenToDream.WHILE_POSTURED ->
+ allOf(
+ batteryInteractor.isDevicePluggedIn,
+ posturingInteractor.postured,
+ )
+ }
}
- }
- .flowOn(bgDispatcher),
- )
+ .flowOn(bgDispatcher),
+ )
+ .stateIn(scope = bgScope, started = SharingStarted.Eagerly, initialValue = false)
private val _isDisclaimerDismissed = MutableStateFlow(false)
val isDisclaimerDismissed: Flow<Boolean> = _isDisclaimerDismissed.asStateFlow()
@@ -541,10 +545,16 @@ constructor(
}
/** CTA tile to be displayed in the glanceable hub (view mode). */
- val ctaTileContent: Flow<List<CommunalContentModel.CtaTileInViewMode>> =
- communalPrefsInteractor.isCtaDismissed.map { isDismissed ->
- if (isDismissed) emptyList() else listOf(CommunalContentModel.CtaTileInViewMode())
+ val ctaTileContent: Flow<List<CommunalContentModel.CtaTileInViewMode>> by lazy {
+ if (communalSettingsInteractor.isV2FlagEnabled()) {
+ flowOf(listOf<CommunalContentModel.CtaTileInViewMode>())
+ } else {
+ communalPrefsInteractor.isCtaDismissed.map { isDismissed ->
+ if (isDismissed) listOf<CommunalContentModel.CtaTileInViewMode>()
+ else listOf(CommunalContentModel.CtaTileInViewMode())
+ }
}
+ }
/** A list of tutorial content to be displayed in the communal hub in tutorial mode. */
val tutorialContent: List<CommunalContentModel.Tutorial> =
diff --git a/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalSceneInteractor.kt b/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalSceneInteractor.kt
index 476493225857..3d9e93036dbc 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalSceneInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalSceneInteractor.kt
@@ -148,6 +148,29 @@ constructor(
}
}
+ fun showHubFromPowerButton() {
+ val loggingReason = "showing hub from power button"
+ applicationScope.launch("$TAG#showHubFromPowerButton") {
+ if (SceneContainerFlag.isEnabled) {
+ sceneInteractor.changeScene(
+ toScene = CommunalScenes.Communal.toSceneContainerSceneKey(),
+ loggingReason = loggingReason,
+ )
+ return@launch
+ }
+
+ if (currentScene.value == CommunalScenes.Communal) return@launch
+ logger.logSceneChangeRequested(
+ from = currentScene.value,
+ to = CommunalScenes.Communal,
+ reason = loggingReason,
+ isInstant = true,
+ )
+ notifyListeners(CommunalScenes.Communal, null)
+ repository.showHubFromPowerButton()
+ }
+ }
+
private fun notifyListeners(newScene: SceneKey, keyguardState: KeyguardState?) {
onSceneAboutToChangeListener.forEach { it.onSceneAboutToChange(newScene, keyguardState) }
}
diff --git a/packages/SystemUI/src/com/android/systemui/communal/ui/binder/CommunalLockIconViewBinder.kt b/packages/SystemUI/src/com/android/systemui/communal/ui/binder/CommunalLockIconViewBinder.kt
new file mode 100644
index 000000000000..1699911c6d8f
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/communal/ui/binder/CommunalLockIconViewBinder.kt
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package com.android.systemui.communal.ui.binder
+
+import android.annotation.SuppressLint
+import android.content.res.ColorStateList
+import android.util.Log
+import android.util.StateSet
+import android.view.HapticFeedbackConstants
+import android.view.View
+import androidx.core.view.isInvisible
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.repeatOnLifecycle
+import com.android.app.tracing.coroutines.launchTraced as launch
+import com.android.systemui.common.ui.view.TouchHandlingView
+import com.android.systemui.communal.ui.viewmodel.CommunalLockIconViewModel
+import com.android.systemui.keyguard.ui.view.DeviceEntryIconView
+import com.android.systemui.lifecycle.repeatWhenAttached
+import com.android.systemui.plugins.FalsingManager
+import com.android.systemui.res.R
+import com.android.systemui.statusbar.VibratorHelper
+import com.android.systemui.util.kotlin.DisposableHandles
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.DisposableHandle
+
+object CommunalLockIconViewBinder {
+ private const val TAG = "CommunalLockIconViewBinder"
+
+ /**
+ * Updates UI for:
+ * - device entry containing view (parent view for the below views)
+ * - long-press handling view (transparent, no UI)
+ * - foreground icon view (lock/unlock)
+ */
+ @SuppressLint("ClickableViewAccessibility")
+ @JvmStatic
+ fun bind(
+ applicationScope: CoroutineScope,
+ view: DeviceEntryIconView,
+ viewModel: CommunalLockIconViewModel,
+ falsingManager: FalsingManager,
+ vibratorHelper: VibratorHelper,
+ ): DisposableHandle {
+ val disposables = DisposableHandles()
+ val touchHandlingView = view.touchHandlingView
+ val fgIconView = view.iconView
+ val bgView = view.bgView
+ touchHandlingView.listener =
+ object : TouchHandlingView.Listener {
+ override fun onLongPressDetected(
+ view: View,
+ x: Int,
+ y: Int,
+ isA11yAction: Boolean,
+ ) {
+ if (
+ !isA11yAction && falsingManager.isFalseLongTap(FalsingManager.LOW_PENALTY)
+ ) {
+ Log.d(
+ TAG,
+ "Long press rejected because it is not a11yAction " +
+ "and it is a falseLongTap",
+ )
+ return
+ }
+ vibratorHelper.performHapticFeedback(view, HapticFeedbackConstants.CONFIRM)
+ applicationScope.launch {
+ view.clearFocus()
+ view.clearAccessibilityFocus()
+ viewModel.onUserInteraction()
+ }
+ }
+ }
+
+ touchHandlingView.isInvisible = false
+ view.isClickable = true
+ touchHandlingView.longPressDuration = {
+ view.resources.getInteger(R.integer.config_lockIconLongPress).toLong()
+ }
+ bgView.visibility = View.GONE
+
+ disposables +=
+ view.repeatWhenAttached {
+ repeatOnLifecycle(Lifecycle.State.CREATED) {
+ launch("$TAG#viewModel.isLongPressEnabled") {
+ viewModel.isLongPressEnabled.collect { isEnabled ->
+ touchHandlingView.setLongPressHandlingEnabled(isEnabled)
+ }
+ }
+ launch("$TAG#viewModel.accessibilityDelegateHint") {
+ viewModel.accessibilityDelegateHint.collect { hint ->
+ view.accessibilityHintType = hint
+ if (hint != DeviceEntryIconView.AccessibilityHintType.NONE) {
+ view.setOnClickListener {
+ vibratorHelper.performHapticFeedback(
+ view,
+ HapticFeedbackConstants.CONFIRM,
+ )
+ applicationScope.launch {
+ view.clearFocus()
+ view.clearAccessibilityFocus()
+ viewModel.onUserInteraction()
+ }
+ }
+ } else {
+ view.setOnClickListener(null)
+ }
+ }
+ }
+ }
+ }
+
+ disposables +=
+ fgIconView.repeatWhenAttached {
+ repeatOnLifecycle(Lifecycle.State.STARTED) {
+ // Start with an empty state
+ fgIconView.setImageState(StateSet.NOTHING, /* merge */ false)
+ launch("$TAG#fpIconView.viewModel") {
+ viewModel.viewAttributes.collect { attributes ->
+ if (attributes.type.contentDescriptionResId != -1) {
+ fgIconView.contentDescription =
+ fgIconView.resources.getString(
+ attributes.type.contentDescriptionResId
+ )
+ }
+ fgIconView.imageTintList = ColorStateList.valueOf(attributes.tint)
+ fgIconView.setPadding(
+ attributes.padding,
+ attributes.padding,
+ attributes.padding,
+ attributes.padding,
+ )
+ // Set image state at the end after updating other view state. This
+ // method forces the ImageView to recompute the bounds of the drawable.
+ fgIconView.setImageState(
+ view.getIconState(attributes.type, false),
+ /* merge */ false,
+ )
+ // Invalidate, just in case the padding changes just after icon changes
+ fgIconView.invalidate()
+ }
+ }
+ }
+ }
+ return disposables
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/BaseCommunalViewModel.kt b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/BaseCommunalViewModel.kt
index 099a85926020..49003a735fbd 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/BaseCommunalViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/BaseCommunalViewModel.kt
@@ -45,7 +45,7 @@ abstract class BaseCommunalViewModel(
val mediaHost: MediaHost,
val mediaCarouselController: MediaCarouselController,
) {
- val currentScene: Flow<SceneKey> = communalSceneInteractor.currentScene
+ val currentScene: StateFlow<SceneKey> = communalSceneInteractor.currentScene
/** Used to animate showing or hiding the communal content. */
open val isCommunalContentVisible: Flow<Boolean> = MutableStateFlow(false)
diff --git a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt
index 52bf0004cbe4..8aba11190623 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt
@@ -241,8 +241,9 @@ constructor(
)
putExtra(
AppWidgetManager.EXTRA_CATEGORY_FILTER,
- CommunalWidgetCategories.defaultCategories,
+ CommunalWidgetCategories.includedCategories,
)
+ putExtra(EXTRA_CATEGORY_EXCLUSION_FILTER, CommunalWidgetCategories.excludedCategories)
communalSettingsInteractor.workProfileUserDisallowedByDevicePolicy.value?.let {
putExtra(EXTRA_USER_ID_FILTER, arrayListOf(it.id))
@@ -281,6 +282,7 @@ constructor(
private const val EXTRA_DESIRED_WIDGET_WIDTH = "desired_widget_width"
private const val EXTRA_DESIRED_WIDGET_HEIGHT = "desired_widget_height"
+ private const val EXTRA_CATEGORY_EXCLUSION_FILTER = "category_exclusion_filter"
private const val EXTRA_PICKER_TITLE = "picker_title"
private const val EXTRA_PICKER_DESCRIPTION = "picker_description"
private const val EXTRA_UI_SURFACE_KEY = "ui_surface"
diff --git a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalLockIconViewModel.kt b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalLockIconViewModel.kt
new file mode 100644
index 000000000000..19eeabd98c88
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalLockIconViewModel.kt
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.communal.ui.viewmodel
+
+import android.content.Context
+import com.android.keyguard.KeyguardViewController
+import com.android.settingslib.Utils
+import com.android.systemui.accessibility.domain.interactor.AccessibilityInteractor
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
+import com.android.systemui.deviceentry.domain.interactor.DeviceEntrySourceInteractor
+import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
+import com.android.systemui.keyguard.ui.view.DeviceEntryIconView
+import com.android.systemui.keyguard.ui.viewmodel.DeviceEntryIconViewModel
+import com.android.systemui.keyguard.ui.viewmodel.toAccessibilityHintType
+import com.android.systemui.res.R
+import com.android.systemui.scene.shared.flag.SceneContainerFlag
+import com.android.systemui.shade.ShadeDisplayAware
+import com.android.systemui.util.kotlin.emitOnStart
+import dagger.Lazy
+import javax.inject.Inject
+import kotlin.math.roundToInt
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.combine
+import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.flatMapLatest
+import kotlinx.coroutines.flow.flow
+import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.flow.map
+
+/**
+ * Simpler implementation of [DeviceEntryIconViewModel] for use in glanceable hub, where fingerprint
+ * is not supported.
+ */
+@OptIn(ExperimentalCoroutinesApi::class)
+@SysUISingleton
+class CommunalLockIconViewModel
+@Inject
+constructor(
+ @ShadeDisplayAware val context: Context,
+ @ShadeDisplayAware configurationInteractor: ConfigurationInteractor,
+ private val deviceEntryInteractor: DeviceEntryInteractor,
+ keyguardInteractor: KeyguardInteractor,
+ private val keyguardViewController: Lazy<KeyguardViewController>,
+ private val deviceEntrySourceInteractor: DeviceEntrySourceInteractor,
+ accessibilityInteractor: AccessibilityInteractor,
+) {
+
+ private val isUnlocked: Flow<Boolean> =
+ if (SceneContainerFlag.isEnabled) {
+ deviceEntryInteractor.isUnlocked
+ } else {
+ keyguardInteractor.isKeyguardDismissible
+ }
+ .flatMapLatest { isUnlocked ->
+ if (!isUnlocked) {
+ flowOf(false)
+ } else {
+ flow {
+ // delay in case device ends up transitioning away from the lock screen;
+ // we don't want to animate to the unlocked icon and just let the
+ // icon fade with the transition to GONE
+ delay(DeviceEntryIconViewModel.UNLOCKED_DELAY_MS)
+ emit(true)
+ }
+ }
+ }
+
+ private val iconType: Flow<DeviceEntryIconView.IconType> =
+ isUnlocked.map { unlocked ->
+ if (unlocked) {
+ DeviceEntryIconView.IconType.UNLOCK
+ } else {
+ DeviceEntryIconView.IconType.LOCK
+ }
+ }
+
+ val isLongPressEnabled: Flow<Boolean> =
+ iconType.map { deviceEntryStatus ->
+ when (deviceEntryStatus) {
+ DeviceEntryIconView.IconType.UNLOCK -> true
+ DeviceEntryIconView.IconType.LOCK,
+ DeviceEntryIconView.IconType.FINGERPRINT,
+ DeviceEntryIconView.IconType.NONE -> false
+ }
+ }
+
+ val accessibilityDelegateHint: Flow<DeviceEntryIconView.AccessibilityHintType> =
+ accessibilityInteractor.isEnabled.flatMapLatest { touchExplorationEnabled ->
+ if (touchExplorationEnabled) {
+ iconType.map { it.toAccessibilityHintType() }
+ } else {
+ flowOf(DeviceEntryIconView.AccessibilityHintType.NONE)
+ }
+ }
+
+ private val padding: Flow<Int> =
+ configurationInteractor.scaleForResolution.map { scale ->
+ (context.resources.getDimensionPixelSize(R.dimen.lock_icon_padding) * scale)
+ .roundToInt()
+ }
+
+ private fun getColor() =
+ Utils.getColorAttrDefaultColor(context, R.attr.wallpaperTextColorAccent)
+
+ private val color: Flow<Int> =
+ configurationInteractor.onAnyConfigurationChange
+ .emitOnStart()
+ .map { getColor() }
+ .distinctUntilChanged()
+
+ suspend fun onUserInteraction() {
+ if (SceneContainerFlag.isEnabled) {
+ deviceEntryInteractor.attemptDeviceEntry()
+ } else {
+ keyguardViewController.get().showPrimaryBouncer(/* scrim */ true)
+ }
+ deviceEntrySourceInteractor.attemptEnterDeviceFromDeviceEntryIcon()
+ }
+
+ val viewAttributes: Flow<CommunalLockIconAttributes> =
+ combine(iconType, color, padding) { iconType, color, padding ->
+ CommunalLockIconAttributes(type = iconType, tint = color, padding = padding)
+ }
+}
+
+data class CommunalLockIconAttributes(
+ val type: DeviceEntryIconView.IconType,
+ val tint: Int,
+ val padding: Int,
+)
diff --git a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModel.kt b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModel.kt
index e35fdfe9087c..29d9cacdbc79 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModel.kt
@@ -24,6 +24,7 @@ import com.android.systemui.scene.shared.model.SceneFamilies
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.ui.viewmodel.UserActionsViewModel
import com.android.systemui.shade.domain.interactor.ShadeInteractor
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.shade.ui.viewmodel.dualShadeActions
import com.android.systemui.shade.ui.viewmodel.singleShadeActions
@@ -41,6 +42,7 @@ class CommunalUserActionsViewModel
constructor(
private val deviceUnlockedInteractor: DeviceUnlockedInteractor,
private val shadeInteractor: ShadeInteractor,
+ private val shadeModeInteractor: ShadeModeInteractor,
) : UserActionsViewModel() {
override suspend fun hydrateActions(setActions: (Map<UserAction, UserActionResult>) -> Unit) {
@@ -51,7 +53,7 @@ constructor(
} else {
combine(
deviceUnlockedInteractor.deviceUnlockStatus.map { it.isUnlocked },
- shadeInteractor.shadeMode,
+ shadeModeInteractor.shadeMode,
) { isDeviceUnlocked, shadeMode ->
buildList {
val bouncerOrGone =
diff --git a/packages/SystemUI/src/com/android/systemui/communal/util/WindowSizeUtils.kt b/packages/SystemUI/src/com/android/systemui/communal/util/WindowSizeUtils.kt
new file mode 100644
index 000000000000..7e62f0fdc821
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/communal/util/WindowSizeUtils.kt
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.communal.util
+
+import android.content.Context
+import androidx.compose.ui.unit.dp
+import androidx.window.layout.WindowMetricsCalculator
+
+/**
+ * [WindowSizeUtils] defines viewport breakpoints that helps create responsive mobile layout.
+ *
+ * @see https://developer.android.com/develop/ui/views/layout/use-window-size-classes
+ */
+object WindowSizeUtils {
+ /** Compact screen width breakpoint. */
+ val COMPACT_WIDTH = 600.dp
+ /** Medium screen width breakpoint. */
+ val MEDIUM_WIDTH = 840.dp
+ /** Compact screen height breakpoint. */
+ val COMPACT_HEIGHT = 480.dp
+ /** Expanded screen height breakpoint. */
+ val EXPANDED_HEIGHT = 900.dp
+
+ /** Whether the window size is compact, which reflects most mobile sizes in portrait. */
+ @JvmStatic
+ fun isCompactWindowSize(context: Context): Boolean {
+ val metrics = WindowMetricsCalculator.getOrCreate().computeCurrentWindowMetrics(context)
+ val width = metrics.bounds.width()
+ return width / metrics.density < COMPACT_WIDTH.value
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/complication/ComplicationHostViewController.java b/packages/SystemUI/src/com/android/systemui/complication/ComplicationHostViewController.java
index 35592a5d87d9..ee98a06371e9 100644
--- a/packages/SystemUI/src/com/android/systemui/complication/ComplicationHostViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/complication/ComplicationHostViewController.java
@@ -18,6 +18,7 @@ package com.android.systemui.complication;
import static com.android.systemui.complication.dagger.ComplicationHostViewModule.SCOPED_COMPLICATIONS_LAYOUT;
import static com.android.systemui.complication.dagger.ComplicationModule.SCOPED_COMPLICATIONS_MODEL;
+import static com.android.systemui.util.kotlin.JavaAdapterKt.collectFlow;
import android.graphics.Rect;
import android.graphics.Region;
@@ -32,10 +33,14 @@ import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.Observer;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor;
+import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dreams.DreamOverlayStateController;
import com.android.systemui.util.ViewController;
import com.android.systemui.util.settings.SecureSettings;
+import kotlinx.coroutines.CoroutineDispatcher;
+
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
@@ -77,7 +82,9 @@ public class ComplicationHostViewController extends ViewController<ConstraintLay
DreamOverlayStateController dreamOverlayStateController,
LifecycleOwner lifecycleOwner,
@Named(SCOPED_COMPLICATIONS_MODEL) ComplicationCollectionViewModel viewModel,
- SecureSettings secureSettings) {
+ SecureSettings secureSettings,
+ ConfigurationInteractor configurationInteractor,
+ @Main CoroutineDispatcher mainDispatcher) {
super(view);
mLayoutEngine = layoutEngine;
mLifecycleOwner = lifecycleOwner;
@@ -87,6 +94,13 @@ public class ComplicationHostViewController extends ViewController<ConstraintLay
// Whether animations are enabled.
mIsAnimationEnabled = secureSettings.getFloatForUser(
Settings.Global.ANIMATOR_DURATION_SCALE, 1.0f, UserHandle.USER_CURRENT) != 0.0f;
+ // Update layout on configuration change like rotation, fold etc.
+ collectFlow(
+ view,
+ configurationInteractor.getMaxBounds(),
+ mLayoutEngine::updateLayoutEngine,
+ mainDispatcher
+ );
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/complication/ComplicationLayoutEngine.java b/packages/SystemUI/src/com/android/systemui/complication/ComplicationLayoutEngine.java
index 15ec4d463163..d91fbab04f64 100644
--- a/packages/SystemUI/src/com/android/systemui/complication/ComplicationLayoutEngine.java
+++ b/packages/SystemUI/src/com/android/systemui/complication/ComplicationLayoutEngine.java
@@ -27,16 +27,15 @@ import static com.android.systemui.complication.ComplicationLayoutParams.POSITIO
import static com.android.systemui.complication.dagger.ComplicationHostViewModule.COMPLICATIONS_FADE_IN_DURATION;
import static com.android.systemui.complication.dagger.ComplicationHostViewModule.COMPLICATIONS_FADE_OUT_DURATION;
import static com.android.systemui.complication.dagger.ComplicationHostViewModule.COMPLICATION_DIRECTIONAL_SPACING_DEFAULT;
-import static com.android.systemui.complication.dagger.ComplicationHostViewModule.COMPLICATION_MARGIN_POSITION_BOTTOM;
-import static com.android.systemui.complication.dagger.ComplicationHostViewModule.COMPLICATION_MARGIN_POSITION_END;
-import static com.android.systemui.complication.dagger.ComplicationHostViewModule.COMPLICATION_MARGIN_POSITION_START;
-import static com.android.systemui.complication.dagger.ComplicationHostViewModule.COMPLICATION_MARGIN_POSITION_TOP;
+import static com.android.systemui.complication.dagger.ComplicationHostViewModule.COMPLICATION_MARGINS;
import static com.android.systemui.complication.dagger.ComplicationHostViewModule.SCOPED_COMPLICATIONS_LAYOUT;
+import android.graphics.Rect;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
+import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.constraintlayout.widget.Constraints;
@@ -52,11 +51,13 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import javax.inject.Inject;
import javax.inject.Named;
+import javax.inject.Provider;
/**
* {@link ComplicationLayoutEngine} arranges a collection of {@link ComplicationViewModel} based on
@@ -401,6 +402,16 @@ public class ComplicationLayoutEngine implements Complication.VisibilityControll
return mDirectionGroups.get(direction).add(entryBuilder);
}
+ public void updateDirectionalMargins(Map<Integer, Margins> directionalMargins) {
+ // the new map should have the same set of directional keys as the old map
+ if (!(directionalMargins.keySet())
+ .containsAll(mDirectionalMargins.keySet())) {
+ Log.e(TAG, "Directional margins map does not have the same keys");
+ return;
+ }
+ mDirectionalMargins.replaceAll((direction, v) -> directionalMargins.get(direction));
+ }
+
@Override
public void onEntriesChanged() {
// Whenever an entry is added/removed from a child {@link DirectionGroup}, it is vital
@@ -584,42 +595,36 @@ public class ComplicationLayoutEngine implements Complication.VisibilityControll
private final TouchInsetManager.TouchInsetSession mSession;
private final int mFadeInDuration;
private final int mFadeOutDuration;
- private final HashMap<Integer, HashMap<Integer, Margins>> mPositionDirectionMarginMapping;
-
+ private final HashMap<Integer, HashMap<Integer, Margins>> mPositionDirectionMarginMapping =
+ new HashMap<>();
+ private final Provider<Margins> mComplicationMarginsProvider;
+ private Rect mScreenBounds = new Rect();
/** */
@Inject
public ComplicationLayoutEngine(@Named(SCOPED_COMPLICATIONS_LAYOUT) ConstraintLayout layout,
@Named(COMPLICATION_DIRECTIONAL_SPACING_DEFAULT) int defaultDirectionalSpacing,
- @Named(COMPLICATION_MARGIN_POSITION_START) int complicationMarginPositionStart,
- @Named(COMPLICATION_MARGIN_POSITION_TOP) int complicationMarginPositionTop,
- @Named(COMPLICATION_MARGIN_POSITION_END) int complicationMarginPositionEnd,
- @Named(COMPLICATION_MARGIN_POSITION_BOTTOM) int complicationMarginPositionBottom,
+ @Named(COMPLICATION_MARGINS) Provider<Margins> complicationMarginsProvider,
TouchInsetManager.TouchInsetSession session,
@Named(COMPLICATIONS_FADE_IN_DURATION) int fadeInDuration,
- @Named(COMPLICATIONS_FADE_OUT_DURATION) int fadeOutDuration) {
+ @Named(COMPLICATIONS_FADE_OUT_DURATION) int fadeOutDuration
+ ) {
mLayout = layout;
mDefaultDirectionalSpacing = defaultDirectionalSpacing;
mSession = session;
mFadeInDuration = fadeInDuration;
mFadeOutDuration = fadeOutDuration;
- mPositionDirectionMarginMapping = generatePositionDirectionalMarginsMapping(
- complicationMarginPositionStart,
- complicationMarginPositionTop,
- complicationMarginPositionEnd,
- complicationMarginPositionBottom);
+ mComplicationMarginsProvider = complicationMarginsProvider;
+ updatePositionDirectionalMarginsMapping(mPositionDirectionMarginMapping,
+ mComplicationMarginsProvider.get());
}
- private static HashMap<Integer, HashMap<Integer, Margins>>
- generatePositionDirectionalMarginsMapping(int complicationMarginPositionStart,
- int complicationMarginPositionTop,
- int complicationMarginPositionEnd,
- int complicationMarginPositionBottom) {
- HashMap<Integer, HashMap<Integer, Margins>> mapping = new HashMap<>();
-
- final Margins startMargins = new Margins(complicationMarginPositionStart, 0, 0, 0);
- final Margins topMargins = new Margins(0, complicationMarginPositionTop, 0, 0);
- final Margins endMargins = new Margins(0, 0, complicationMarginPositionEnd, 0);
- final Margins bottomMargins = new Margins(0, 0, 0, complicationMarginPositionBottom);
+ private static void updatePositionDirectionalMarginsMapping(
+ Map<Integer, HashMap<Integer, Margins>> mapping,
+ Margins complicationMargins) {
+ final Margins startMargins = new Margins(complicationMargins.start, 0, 0, 0);
+ final Margins topMargins = new Margins(0, complicationMargins.top, 0, 0);
+ final Margins endMargins = new Margins(0, 0, complicationMargins.end, 0);
+ final Margins bottomMargins = new Margins(0, 0, 0, complicationMargins.bottom);
addToMapping(mapping, POSITION_START | POSITION_TOP, DIRECTION_END, topMargins);
addToMapping(mapping, POSITION_START | POSITION_TOP, DIRECTION_DOWN, startMargins);
@@ -632,11 +637,9 @@ public class ComplicationLayoutEngine implements Complication.VisibilityControll
addToMapping(mapping, POSITION_END | POSITION_BOTTOM, DIRECTION_START, bottomMargins);
addToMapping(mapping, POSITION_END | POSITION_BOTTOM, DIRECTION_UP, endMargins);
-
- return mapping;
}
- private static void addToMapping(HashMap<Integer, HashMap<Integer, Margins>> mapping,
+ private static void addToMapping(Map<Integer, HashMap<Integer, Margins>> mapping,
@Position int position, @Direction int direction, Margins margins) {
if (!mapping.containsKey(position)) {
mapping.put(position, new HashMap<>());
@@ -644,6 +647,28 @@ public class ComplicationLayoutEngine implements Complication.VisibilityControll
mapping.get(position).put(direction, margins);
}
+ /**
+ * Update margins on screen dimension change.
+ */
+ public void updateLayoutEngine(@NonNull Rect bounds) {
+ if (bounds.width() == mScreenBounds.width() && bounds.height() == mScreenBounds.height()) {
+ return;
+ }
+ mScreenBounds = bounds;
+ updatePositionDirectionalMarginsMapping(mPositionDirectionMarginMapping,
+ mComplicationMarginsProvider.get());
+
+ // update each position group and layout of entries
+ for (Integer position : mPositions.keySet()) {
+ PositionGroup positionGroup = mPositions.get(position);
+ positionGroup.updateDirectionalMargins(mPositionDirectionMarginMapping
+ .get(position));
+ positionGroup.onEntriesChanged();
+ }
+ Log.d(TAG, "Updated margins for complications as screen size changed to width = "
+ + bounds.width() + "px, height = " + bounds.height() + "px.");
+ }
+
@Override
public void setVisibility(int visibility) {
if (visibility == View.VISIBLE) {
diff --git a/packages/SystemUI/src/com/android/systemui/complication/DreamClockTimeComplication.java b/packages/SystemUI/src/com/android/systemui/complication/DreamClockTimeComplication.java
index c709e3436cd6..8e6848a87c7d 100644
--- a/packages/SystemUI/src/com/android/systemui/complication/DreamClockTimeComplication.java
+++ b/packages/SystemUI/src/com/android/systemui/complication/DreamClockTimeComplication.java
@@ -16,10 +16,13 @@
package com.android.systemui.complication;
+import static android.text.format.DateFormat.getBestDateTimePattern;
+
import static com.android.systemui.complication.dagger.DreamClockTimeComplicationComponent.DreamClockTimeComplicationModule.DREAM_CLOCK_TIME_COMPLICATION_VIEW;
import static com.android.systemui.complication.dagger.RegisteredComplicationsModule.DREAM_CLOCK_TIME_COMPLICATION_LAYOUT_PARAMS;
import android.view.View;
+import android.widget.TextClock;
import com.android.internal.logging.UiEventLogger;
import com.android.systemui.CoreStartable;
@@ -92,18 +95,24 @@ public class DreamClockTimeComplication implements Complication {
* {@link ViewHolder} to contain value/logic associated with {@link DreamClockTimeComplication}.
*/
public static class DreamClockTimeViewHolder implements ViewHolder {
- private final View mView;
+ private final TextClock mView;
private final ComplicationLayoutParams mLayoutParams;
@Inject
DreamClockTimeViewHolder(
- @Named(DREAM_CLOCK_TIME_COMPLICATION_VIEW) View view,
+ @Named(DREAM_CLOCK_TIME_COMPLICATION_VIEW) TextClock view,
@Named(DREAM_CLOCK_TIME_COMPLICATION_LAYOUT_PARAMS)
ComplicationLayoutParams layoutParams,
DreamClockTimeViewController viewController) {
mView = view;
mLayoutParams = layoutParams;
viewController.init();
+
+ // Support localized AM/PM marker for 12h mode in content description.
+ String formatSkeleton = view.is24HourModeEnabled() ? "Hm" : "hm";
+ String pattern = getBestDateTimePattern(view.getTextLocale(), formatSkeleton);
+ view.setContentDescriptionFormat12Hour(pattern);
+ view.setContentDescriptionFormat24Hour(pattern);
}
@Override
@@ -122,7 +131,7 @@ public class DreamClockTimeComplication implements Complication {
@Inject
DreamClockTimeViewController(
- @Named(DREAM_CLOCK_TIME_COMPLICATION_VIEW) View view,
+ @Named(DREAM_CLOCK_TIME_COMPLICATION_VIEW) TextClock view,
UiEventLogger uiEventLogger) {
super(view);
diff --git a/packages/SystemUI/src/com/android/systemui/complication/dagger/ComplicationHostViewModule.java b/packages/SystemUI/src/com/android/systemui/complication/dagger/ComplicationHostViewModule.java
index 9dd48eaa7551..e446fbf35543 100644
--- a/packages/SystemUI/src/com/android/systemui/complication/dagger/ComplicationHostViewModule.java
+++ b/packages/SystemUI/src/com/android/systemui/complication/dagger/ComplicationHostViewModule.java
@@ -16,12 +16,15 @@
package com.android.systemui.complication.dagger;
+import android.content.Context;
import android.content.res.Resources;
import android.view.LayoutInflater;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.android.internal.util.Preconditions;
+import com.android.systemui.communal.util.WindowSizeUtils;
+import com.android.systemui.complication.ComplicationLayoutEngine;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.res.R;
@@ -42,14 +45,7 @@ public abstract class ComplicationHostViewModule {
public static final String COMPLICATIONS_FADE_IN_DURATION = "complications_fade_in_duration";
public static final String COMPLICATIONS_RESTORE_TIMEOUT = "complication_restore_timeout";
public static final String COMPLICATIONS_FADE_OUT_DELAY = "complication_fade_out_delay";
- public static final String COMPLICATION_MARGIN_POSITION_START =
- "complication_margin_position_start";
- public static final String COMPLICATION_MARGIN_POSITION_TOP =
- "complication_margin_position_top";
- public static final String COMPLICATION_MARGIN_POSITION_END =
- "complication_margin_position_end";
- public static final String COMPLICATION_MARGIN_POSITION_BOTTOM =
- "complication_margin_position_bottom";
+ public static final String COMPLICATION_MARGINS = "complication_margins";
/**
* Generates a {@link ConstraintLayout}, which can host
@@ -72,28 +68,32 @@ public abstract class ComplicationHostViewModule {
return resources.getDimensionPixelSize(R.dimen.dream_overlay_complication_margin);
}
+ /**
+ * Use small margins for compact window width (mobile portrait), and regular margins for
+ * medium and expanded width (mobile landscape, tablet and large unfolded).
+ */
@Provides
- @Named(COMPLICATION_MARGIN_POSITION_START)
- static int providesComplicationMarginPositionStart(@Main Resources resources) {
- return resources.getDimensionPixelSize(R.dimen.dream_overlay_container_padding_start);
- }
-
- @Provides
- @Named(COMPLICATION_MARGIN_POSITION_TOP)
- static int providesComplicationMarginPositionTop(@Main Resources resources) {
- return resources.getDimensionPixelSize(R.dimen.dream_overlay_container_padding_top);
- }
-
- @Provides
- @Named(COMPLICATION_MARGIN_POSITION_END)
- static int providesComplicationMarginPositionEnd(@Main Resources resources) {
- return resources.getDimensionPixelSize(R.dimen.dream_overlay_container_padding_end);
- }
-
- @Provides
- @Named(COMPLICATION_MARGIN_POSITION_BOTTOM)
- static int providesComplicationMarginPositionBottom(@Main Resources resources) {
- return resources.getDimensionPixelSize(R.dimen.dream_overlay_container_padding_bottom);
+ @Named(COMPLICATION_MARGINS)
+ static ComplicationLayoutEngine.Margins providesComplicationMargins(@Main Resources resources,
+ Context context) {
+ return WindowSizeUtils.isCompactWindowSize(context)
+ ? new ComplicationLayoutEngine.Margins(resources.getDimensionPixelSize(
+ R.dimen.dream_overlay_container_small_padding_start),
+ resources.getDimensionPixelSize(
+ R.dimen.dream_overlay_container_small_padding_top),
+ resources.getDimensionPixelSize(
+ R.dimen.dream_overlay_container_small_padding_end),
+ resources.getDimensionPixelSize(
+ R.dimen.dream_overlay_container_small_padding_bottom)) :
+ new ComplicationLayoutEngine.Margins(resources.getDimensionPixelSize(
+ R.dimen.dream_overlay_container_padding_start),
+ resources.getDimensionPixelSize(
+ R.dimen.dream_overlay_container_padding_top),
+ resources.getDimensionPixelSize(
+ R.dimen.dream_overlay_container_padding_end),
+ resources.getDimensionPixelSize(
+ R.dimen.dream_overlay_container_padding_bottom)
+ );
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/complication/dagger/DreamClockTimeComplicationComponent.kt b/packages/SystemUI/src/com/android/systemui/complication/dagger/DreamClockTimeComplicationComponent.kt
index 4b9ac1d58b57..9d367c91c2c3 100644
--- a/packages/SystemUI/src/com/android/systemui/complication/dagger/DreamClockTimeComplicationComponent.kt
+++ b/packages/SystemUI/src/com/android/systemui/complication/dagger/DreamClockTimeComplicationComponent.kt
@@ -18,7 +18,6 @@
package com.android.systemui.complication.dagger
import android.view.LayoutInflater
-import android.view.View
import android.widget.TextClock
import com.android.internal.util.Preconditions
import com.android.systemui.Flags
@@ -64,7 +63,7 @@ interface DreamClockTimeComplicationComponent {
@Provides
@DreamClockTimeComplicationScope
@Named(DREAM_CLOCK_TIME_COMPLICATION_VIEW)
- fun provideComplicationView(layoutInflater: LayoutInflater): View {
+ fun provideComplicationView(layoutInflater: LayoutInflater): TextClock {
val view =
Preconditions.checkNotNull(
layoutInflater.inflate(
diff --git a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsListingControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsListingControllerImpl.kt
index a5f29aa658be..f3eff607dedd 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsListingControllerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsListingControllerImpl.kt
@@ -122,7 +122,7 @@ constructor(
init {
Log.d(TAG, "Initializing")
- dumpManager.registerDumpable(TAG, this)
+ dumpManager.registerNormalDumpable(TAG, this)
serviceListing.addCallback(serviceListingCallback)
serviceListing.setListening(true)
serviceListing.reload()
diff --git a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractor.kt b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractor.kt
index 5b6859761705..5fc924b14814 100644
--- a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractor.kt
@@ -16,7 +16,6 @@
package com.android.systemui.deviceentry.domain.interactor
-import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.internal.policy.IKeyguardDismissCallback
import com.android.systemui.authentication.domain.interactor.AuthenticationInteractor
import com.android.systemui.authentication.shared.model.AuthenticationMethodModel
@@ -36,11 +35,9 @@ import com.android.systemui.util.kotlin.pairwise
import com.android.systemui.utils.coroutines.flow.mapLatestConflated
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
-import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filter
@@ -285,32 +282,7 @@ constructor(
}
/** Locks the device instantly. */
- fun lockNow() {
- deviceUnlockedInteractor.lockNow()
- }
-
- suspend fun hydrateTableLogBuffer(tableLogBuffer: TableLogBuffer) {
- coroutineScope {
- launch {
- isDeviceEntered
- .logDiffsForTable(
- tableLogBuffer = tableLogBuffer,
- columnName = "isDeviceEntered",
- initialValue = isDeviceEntered.value,
- )
- .collect()
- }
-
- launch {
- canSwipeToEnter
- .map { it?.toString() ?: "" }
- .logDiffsForTable(
- tableLogBuffer = tableLogBuffer,
- columnName = "canSwipeToEnter",
- initialValue = canSwipeToEnter.value?.toString() ?: "",
- )
- .collect()
- }
- }
+ fun lockNow(debuggingReason: String) {
+ deviceUnlockedInteractor.lockNow(debuggingReason)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractor.kt b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractor.kt
index b1be9a209a0a..c6ae35317c72 100644
--- a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractor.kt
@@ -59,6 +59,7 @@ import kotlinx.coroutines.flow.distinctUntilChangedBy
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.flatMapLatest
+import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.receiveAsFlow
@@ -70,7 +71,7 @@ class DeviceUnlockedInteractor
constructor(
private val authenticationInteractor: AuthenticationInteractor,
private val repository: DeviceEntryRepository,
- trustInteractor: TrustInteractor,
+ private val trustInteractor: TrustInteractor,
faceAuthInteractor: DeviceEntryFaceAuthInteractor,
fingerprintAuthInteractor: DeviceEntryFingerprintAuthInteractor,
private val powerInteractor: PowerInteractor,
@@ -181,7 +182,8 @@ constructor(
val deviceUnlockStatus: StateFlow<DeviceUnlockStatus> =
repository.deviceUnlockStatus.asStateFlow()
- private val lockNowRequests = Channel<Unit>()
+ /** A [Channel] of "lock now" requests where the values are the debugging reasons. */
+ private val lockNowRequests = Channel<String>()
override suspend fun onActivated(): Nothing {
coroutineScope {
@@ -218,8 +220,8 @@ constructor(
}
/** Locks the device instantly. */
- fun lockNow() {
- lockNowRequests.trySend(Unit)
+ fun lockNow(debuggingReason: String) {
+ lockNowRequests.trySend(debuggingReason)
}
private suspend fun handleLockAndUnlockEvents() {
@@ -244,47 +246,70 @@ constructor(
private suspend fun handleLockEvents() {
merge(
- // Device wakefulness events.
- powerInteractor.detailedWakefulness
- .map { Pair(it.isAsleep(), it.lastSleepReason) }
- .distinctUntilChangedBy { it.first }
- .map { (isAsleep, lastSleepReason) ->
- if (isAsleep) {
- if (
- (lastSleepReason == WakeSleepReason.POWER_BUTTON) &&
- authenticationInteractor.getPowerButtonInstantlyLocks()
- ) {
- LockImmediately("locked instantly from power button")
- } else if (lastSleepReason == WakeSleepReason.SLEEP_BUTTON) {
- LockImmediately("locked instantly from sleep button")
- } else {
- LockWithDelay("entering sleep")
- }
- } else {
- CancelDelayedLock("waking up")
- }
- },
+ trustInteractor.isTrusted.flatMapLatestConflated { isTrusted ->
+ if (isTrusted) {
+ // When entering a trusted environment, power-related lock events are
+ // ignored.
+ Log.d(TAG, "In trusted environment, ignoring power-related lock events")
+ flowOf(CancelDelayedLock("in trusted environment"))
+ } else {
+ // When not in a trusted environment, power-related lock events are treated
+ // as normal.
+ Log.d(
+ TAG,
+ "Not in trusted environment, power-related lock events treated as" +
+ " normal",
+ )
+ merge(
+ // Device wakefulness events.
+ powerInteractor.detailedWakefulness
+ .map { Pair(it.isAsleep(), it.lastSleepReason) }
+ .distinctUntilChangedBy { it.first }
+ .map { (isAsleep, lastSleepReason) ->
+ if (isAsleep) {
+ if (
+ (lastSleepReason == WakeSleepReason.POWER_BUTTON) &&
+ authenticationInteractor
+ .getPowerButtonInstantlyLocks()
+ ) {
+ LockImmediately("locked instantly from power button")
+ } else if (
+ lastSleepReason == WakeSleepReason.SLEEP_BUTTON
+ ) {
+ LockImmediately("locked instantly from sleep button")
+ } else {
+ LockWithDelay("entering sleep")
+ }
+ } else {
+ CancelDelayedLock("waking up")
+ }
+ },
+ // Started dreaming
+ powerInteractor.isInteractive.flatMapLatestConflated { isInteractive ->
+ // Only respond to dream state changes while the device is
+ // interactive.
+ if (isInteractive) {
+ keyguardInteractor.isDreamingAny.distinctUntilChanged().map {
+ isDreaming ->
+ if (isDreaming) {
+ LockWithDelay("started dreaming")
+ } else {
+ CancelDelayedLock("stopped dreaming")
+ }
+ }
+ } else {
+ emptyFlow()
+ }
+ },
+ )
+ }
+ },
// Device enters lockdown.
isInLockdown
.distinctUntilChanged()
.filter { it }
.map { LockImmediately("lockdown") },
- // Started dreaming
- powerInteractor.isInteractive.flatMapLatestConflated { isInteractive ->
- // Only respond to dream state changes while the device is interactive.
- if (isInteractive) {
- keyguardInteractor.isDreamingAny.distinctUntilChanged().map { isDreaming ->
- if (isDreaming) {
- LockWithDelay("started dreaming")
- } else {
- CancelDelayedLock("stopped dreaming")
- }
- }
- } else {
- emptyFlow()
- }
- },
- lockNowRequests.receiveAsFlow().map { LockImmediately("lockNow") },
+ lockNowRequests.receiveAsFlow().map { reason -> LockImmediately(reason) },
)
.collectLatest(::onLockEvent)
}
diff --git a/packages/SystemUI/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModel.kt b/packages/SystemUI/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModel.kt
index 160574fa2244..9ce2ce0100a3 100644
--- a/packages/SystemUI/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModel.kt
@@ -24,6 +24,7 @@ import com.android.systemui.deviceentry.domain.interactor.DeviceUnlockedInteract
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.ui.viewmodel.UserActionsViewModel
import com.android.systemui.shade.domain.interactor.ShadeInteractor
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.shade.ui.viewmodel.dualShadeActions
import com.android.systemui.shade.ui.viewmodel.singleShadeActions
@@ -42,6 +43,7 @@ constructor(
private val communalInteractor: CommunalInteractor,
private val deviceUnlockedInteractor: DeviceUnlockedInteractor,
private val shadeInteractor: ShadeInteractor,
+ private val shadeModeInteractor: ShadeModeInteractor,
) : UserActionsViewModel() {
override suspend fun hydrateActions(setActions: (Map<UserAction, UserActionResult>) -> Unit) {
@@ -53,7 +55,7 @@ constructor(
combine(
deviceUnlockedInteractor.deviceUnlockStatus.map { it.isUnlocked },
communalInteractor.isCommunalAvailable,
- shadeInteractor.shadeMode,
+ shadeModeInteractor.shadeMode,
) { isDeviceUnlocked, isCommunalAvailable, shadeMode ->
buildList {
if (isCommunalAvailable) {
diff --git a/packages/SystemUI/src/com/android/systemui/dreams/ui/viewmodel/DreamViewModel.kt b/packages/SystemUI/src/com/android/systemui/dreams/ui/viewmodel/DreamViewModel.kt
index 02e1824dc7dd..a7c078f235b4 100644
--- a/packages/SystemUI/src/com/android/systemui/dreams/ui/viewmodel/DreamViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/dreams/ui/viewmodel/DreamViewModel.kt
@@ -20,6 +20,7 @@ import com.android.keyguard.KeyguardUpdateMonitor
import com.android.systemui.Flags.glanceableHubAllowKeyguardWhenDreaming
import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.communal.domain.interactor.CommunalInteractor
+import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dump.DumpManager
import com.android.systemui.keyguard.domain.interactor.FromDreamingTransitionInteractor
@@ -46,11 +47,12 @@ class DreamViewModel
constructor(
configurationInteractor: ConfigurationInteractor,
keyguardTransitionInteractor: KeyguardTransitionInteractor,
- fromGlanceableHubTransitionInteractor: GlanceableHubToDreamingTransitionViewModel,
+ fromGlanceableHubTransitionViewModel: GlanceableHubToDreamingTransitionViewModel,
toGlanceableHubTransitionViewModel: DreamingToGlanceableHubTransitionViewModel,
private val toLockscreenTransitionViewModel: DreamingToLockscreenTransitionViewModel,
private val fromDreamingTransitionInteractor: FromDreamingTransitionInteractor,
private val communalInteractor: CommunalInteractor,
+ private val communalSettingsInteractor: CommunalSettingsInteractor,
private val keyguardUpdateMonitor: KeyguardUpdateMonitor,
private val userTracker: UserTracker,
dumpManager: DumpManager,
@@ -58,8 +60,12 @@ constructor(
fun startTransitionFromDream() {
val showGlanceableHub =
- communalInteractor.isCommunalEnabled.value &&
- !keyguardUpdateMonitor.isEncryptedOrLockdown(userTracker.userId)
+ if (communalSettingsInteractor.isV2FlagEnabled()) {
+ communalInteractor.shouldShowCommunal.value
+ } else {
+ communalInteractor.isCommunalEnabled.value &&
+ !keyguardUpdateMonitor.isEncryptedOrLockdown(userTracker.userId)
+ }
fromDreamingTransitionInteractor.startToLockscreenOrGlanceableHubTransition(
showGlanceableHub && !glanceableHubAllowKeyguardWhenDreaming()
)
@@ -68,7 +74,7 @@ constructor(
val dreamOverlayTranslationX: Flow<Float> =
merge(
toGlanceableHubTransitionViewModel.dreamOverlayTranslationX,
- fromGlanceableHubTransitionInteractor.dreamOverlayTranslationX,
+ fromGlanceableHubTransitionViewModel.dreamOverlayTranslationX,
)
.distinctUntilChanged()
@@ -91,7 +97,7 @@ constructor(
merge(
toLockscreenTransitionViewModel.dreamOverlayAlpha,
toGlanceableHubTransitionViewModel.dreamOverlayAlpha,
- fromGlanceableHubTransitionInteractor.dreamOverlayAlpha,
+ fromGlanceableHubTransitionViewModel.dreamOverlayAlpha,
)
.distinctUntilChanged()
diff --git a/packages/SystemUI/src/com/android/systemui/flags/FlagDependencies.kt b/packages/SystemUI/src/com/android/systemui/flags/FlagDependencies.kt
index 200a751cf825..ebe228dab05a 100644
--- a/packages/SystemUI/src/com/android/systemui/flags/FlagDependencies.kt
+++ b/packages/SystemUI/src/com/android/systemui/flags/FlagDependencies.kt
@@ -26,7 +26,6 @@ import com.android.systemui.Flags.FLAG_COMMUNAL_HUB
import com.android.systemui.Flags.communalHub
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.scene.shared.flag.SceneContainerFlag
-import com.android.systemui.shade.shared.flag.DualShade
import com.android.systemui.statusbar.notification.collection.SortBySectionTimeFlag
import com.android.systemui.statusbar.notification.emptyshade.shared.ModesEmptyShadeFix
import com.android.systemui.statusbar.notification.interruption.VisualInterruptionRefactor
@@ -58,9 +57,6 @@ class FlagDependencies @Inject constructor(featureFlags: FeatureFlagsClassic, ha
// SceneContainer dependencies
SceneContainerFlag.getFlagDependencies().forEach { (alpha, beta) -> alpha dependsOn beta }
-
- // DualShade dependencies
- DualShade.token dependsOn SceneContainerFlag.getMainAconfigFlag()
}
private inline val politeNotifications
diff --git a/packages/SystemUI/src/com/android/systemui/haptics/slider/SliderHapticFeedbackConfig.kt b/packages/SystemUI/src/com/android/systemui/haptics/slider/SliderHapticFeedbackConfig.kt
index da124de358a8..7b97bbc0fd28 100644
--- a/packages/SystemUI/src/com/android/systemui/haptics/slider/SliderHapticFeedbackConfig.kt
+++ b/packages/SystemUI/src/com/android/systemui/haptics/slider/SliderHapticFeedbackConfig.kt
@@ -49,4 +49,6 @@ data class SliderHapticFeedbackConfig(
@FloatRange(from = 0.0, fromInclusive = false) val exponent: Float = 1f / 0.89f,
/** The step-size that defines the slider quantization. Zero represents a continuous slider */
@FloatRange(from = 0.0) val sliderStepSize: Float = 0f,
+ /** A filter that determines values for which haptics are triggered */
+ val filter: SliderHapticFeedbackFilter = SliderHapticFeedbackFilter(),
)
diff --git a/packages/SystemUI/src/com/android/systemui/haptics/slider/SliderHapticFeedbackFilter.kt b/packages/SystemUI/src/com/android/systemui/haptics/slider/SliderHapticFeedbackFilter.kt
new file mode 100644
index 000000000000..237775f8b097
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/haptics/slider/SliderHapticFeedbackFilter.kt
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.haptics.slider
+
+/**
+ * This filter is used by the [SliderHapticFeedbackProvider] to filter-out haptics if the slider
+ * state logic needs to avoid certain vibrations.
+ *
+ * @param[vibrateOnUpperBookend] Tell the provider if we should vibrate on the upper bookend.
+ * @param[vibrateOnLowerBookend] Tell the provider if we should vibrate on the lower bookend.
+ */
+data class SliderHapticFeedbackFilter(
+ var vibrateOnUpperBookend: Boolean = true,
+ var vibrateOnLowerBookend: Boolean = true,
+)
diff --git a/packages/SystemUI/src/com/android/systemui/haptics/slider/SliderHapticFeedbackProvider.kt b/packages/SystemUI/src/com/android/systemui/haptics/slider/SliderHapticFeedbackProvider.kt
index de6697bd8fea..82c284a57954 100644
--- a/packages/SystemUI/src/com/android/systemui/haptics/slider/SliderHapticFeedbackProvider.kt
+++ b/packages/SystemUI/src/com/android/systemui/haptics/slider/SliderHapticFeedbackProvider.kt
@@ -218,14 +218,14 @@ class SliderHapticFeedbackProvider(
}
override fun onLowerBookend() {
- if (!hasVibratedAtLowerBookend) {
+ if (!hasVibratedAtLowerBookend && config.filter.vibrateOnLowerBookend) {
vibrateOnEdgeCollision(abs(velocityProvider.getTrackedVelocity()))
hasVibratedAtLowerBookend = true
}
}
override fun onUpperBookend() {
- if (!hasVibratedAtUpperBookend) {
+ if (!hasVibratedAtUpperBookend && config.filter.vibrateOnUpperBookend) {
vibrateOnEdgeCollision(abs(velocityProvider.getTrackedVelocity()))
hasVibratedAtUpperBookend = true
}
diff --git a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/data/repository/TutorialSchedulerRepository.kt b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/data/repository/TutorialSchedulerRepository.kt
index 8b0accd65d7b..6d2d4ca5414f 100644
--- a/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/data/repository/TutorialSchedulerRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/data/repository/TutorialSchedulerRepository.kt
@@ -18,8 +18,10 @@ package com.android.systemui.inputdevice.tutorial.data.repository
import android.content.Context
import androidx.datastore.core.DataStore
+import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler
import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.core.edit
+import androidx.datastore.preferences.core.emptyPreferences
import androidx.datastore.preferences.core.longPreferencesKey
import androidx.datastore.preferences.preferencesDataStore
import com.android.systemui.dagger.SysUISingleton
@@ -45,7 +47,12 @@ class TutorialSchedulerRepository(
) : this(applicationContext, backgroundScope, dataStoreName = DATASTORE_NAME)
private val Context.dataStore: DataStore<Preferences> by
- preferencesDataStore(name = dataStoreName, scope = backgroundScope)
+ preferencesDataStore(
+ name = dataStoreName,
+ corruptionHandler =
+ ReplaceFileCorruptionHandler(produceNewData = { emptyPreferences() }),
+ scope = backgroundScope,
+ )
suspend fun setScheduledTutorialLaunchTime(device: DeviceType, time: Instant) {
updateData(key = getLaunchedKey(device), value = time.epochSecond)
diff --git a/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/ui/composable/ShortcutHelper.kt b/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/ui/composable/ShortcutHelper.kt
index 0054dd772659..b0e554540371 100644
--- a/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/ui/composable/ShortcutHelper.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/ui/composable/ShortcutHelper.kt
@@ -1 +1,1111 @@
-/* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.keyboard.shortcut.ui.composable import android.graphics.drawable.Icon import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.core.animateFloatAsState import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.focusable import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.collectIsFocusedAsState import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.FlowRowScope import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.OpenInNew import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.DeleteOutline import androidx.compose.material.icons.filled.ExpandMore import androidx.compose.material.icons.filled.Refresh import androidx.compose.material.icons.filled.Search import androidx.compose.material.icons.filled.Tune import androidx.compose.material3.CenterAlignedTopAppBar import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.LocalContentColor import androidx.compose.material3.MaterialTheme import androidx.compose.material3.NavigationDrawerItemColors import androidx.compose.material3.NavigationDrawerItemDefaults import androidx.compose.material3.SearchBar import androidx.compose.material3.SearchBarDefaults import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusDirection import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.RectangleShape import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.input.key.Key import androidx.compose.ui.input.key.key import androidx.compose.ui.input.key.onKeyEvent import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.hideFromAccessibility import androidx.compose.ui.semantics.isTraversalGroup import androidx.compose.ui.semantics.role import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.style.Hyphens import androidx.compose.ui.text.withStyle import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.util.fastFirstOrNull import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachIndexed import com.android.compose.modifiers.thenIf import com.android.compose.ui.graphics.painter.rememberDrawablePainter import com.android.systemui.keyboard.shortcut.shared.model.ShortcutCategoryType import com.android.systemui.keyboard.shortcut.shared.model.ShortcutCommand import com.android.systemui.keyboard.shortcut.shared.model.ShortcutCustomizationRequestInfo import com.android.systemui.keyboard.shortcut.shared.model.ShortcutIcon import com.android.systemui.keyboard.shortcut.shared.model.ShortcutKey import com.android.systemui.keyboard.shortcut.shared.model.ShortcutSubCategory import com.android.systemui.keyboard.shortcut.ui.model.IconSource import com.android.systemui.keyboard.shortcut.ui.model.ShortcutCategoryUi import com.android.systemui.keyboard.shortcut.ui.model.ShortcutsUiState import com.android.systemui.res.R import kotlinx.coroutines.delay import com.android.systemui.keyboard.shortcut.shared.model.Shortcut as ShortcutModel @Composable fun ShortcutHelper( onSearchQueryChanged: (String) -> Unit, onKeyboardSettingsClicked: () -> Unit, modifier: Modifier = Modifier, shortcutsUiState: ShortcutsUiState, useSinglePane: @Composable () -> Boolean = { shouldUseSinglePane() }, onCustomizationRequested: (ShortcutCustomizationRequestInfo) -> Unit = {}, ) { when (shortcutsUiState) { is ShortcutsUiState.Active -> { ActiveShortcutHelper( shortcutsUiState, useSinglePane, onSearchQueryChanged, modifier, onKeyboardSettingsClicked, onCustomizationRequested, ) } else -> { // No-op for now. } } } @Composable private fun ActiveShortcutHelper( shortcutsUiState: ShortcutsUiState.Active, useSinglePane: @Composable () -> Boolean, onSearchQueryChanged: (String) -> Unit, modifier: Modifier, onKeyboardSettingsClicked: () -> Unit, onCustomizationRequested: (ShortcutCustomizationRequestInfo) -> Unit = {}, ) { var selectedCategoryType by remember(shortcutsUiState.defaultSelectedCategory) { mutableStateOf(shortcutsUiState.defaultSelectedCategory) } if (useSinglePane()) { ShortcutHelperSinglePane( shortcutsUiState.searchQuery, onSearchQueryChanged, shortcutsUiState.shortcutCategories, selectedCategoryType, onCategorySelected = { selectedCategoryType = it }, onKeyboardSettingsClicked, modifier, ) } else { ShortcutHelperTwoPane( shortcutsUiState.searchQuery, onSearchQueryChanged, modifier, shortcutsUiState.shortcutCategories, selectedCategoryType, onCategorySelected = { selectedCategoryType = it }, onKeyboardSettingsClicked, shortcutsUiState.isShortcutCustomizerFlagEnabled, onCustomizationRequested, shortcutsUiState.shouldShowResetButton, ) } } @Composable private fun shouldUseSinglePane() = hasCompactWindowSize() @Composable private fun ShortcutHelperSinglePane( searchQuery: String, onSearchQueryChanged: (String) -> Unit, categories: List<ShortcutCategoryUi>, selectedCategoryType: ShortcutCategoryType?, onCategorySelected: (ShortcutCategoryType?) -> Unit, onKeyboardSettingsClicked: () -> Unit, modifier: Modifier = Modifier, ) { Column( modifier = modifier .fillMaxSize() .verticalScroll(rememberScrollState()) .padding(start = 16.dp, end = 16.dp, top = 26.dp) ) { TitleBar() Spacer(modifier = Modifier.height(6.dp)) ShortcutsSearchBar(onSearchQueryChanged) Spacer(modifier = Modifier.height(16.dp)) if (categories.isEmpty()) { Box(modifier = Modifier.weight(1f)) { NoSearchResultsText(horizontalPadding = 16.dp, fillHeight = true) } } else { CategoriesPanelSinglePane( searchQuery, categories, selectedCategoryType, onCategorySelected, ) Spacer(modifier = Modifier.weight(1f)) } KeyboardSettings( horizontalPadding = 16.dp, verticalPadding = 32.dp, onClick = onKeyboardSettingsClicked, ) } } @Composable private fun CategoriesPanelSinglePane( searchQuery: String, categories: List<ShortcutCategoryUi>, selectedCategoryType: ShortcutCategoryType?, onCategorySelected: (ShortcutCategoryType?) -> Unit, ) { Column(verticalArrangement = Arrangement.spacedBy(2.dp)) { categories.fastForEachIndexed { index, category -> val isExpanded = selectedCategoryType == category.type val itemShape = if (categories.size == 1) { ShortcutHelper.Shapes.singlePaneSingleCategory } else if (index == 0) { ShortcutHelper.Shapes.singlePaneFirstCategory } else if (index == categories.lastIndex) { ShortcutHelper.Shapes.singlePaneLastCategory } else { ShortcutHelper.Shapes.singlePaneCategory } CategoryItemSinglePane( searchQuery = searchQuery, category = category, isExpanded = isExpanded, onClick = { onCategorySelected( if (isExpanded) { null } else { category.type } ) }, shape = itemShape, ) } } } @Composable private fun CategoryItemSinglePane( searchQuery: String, category: ShortcutCategoryUi, isExpanded: Boolean, onClick: () -> Unit, shape: Shape, ) { Surface(color = MaterialTheme.colorScheme.surfaceBright, shape = shape, onClick = onClick) { Column { Row( verticalAlignment = Alignment.CenterVertically, modifier = Modifier.fillMaxWidth().heightIn(min = 88.dp).padding(horizontal = 16.dp), ) { ShortcutCategoryIcon(modifier = Modifier.size(24.dp), source = category.iconSource) Spacer(modifier = Modifier.width(16.dp)) Text(category.label) Spacer(modifier = Modifier.weight(1f)) RotatingExpandCollapseIcon(isExpanded) } AnimatedVisibility(visible = isExpanded) { ShortcutCategoryDetailsSinglePane(searchQuery, category) } } } } @Composable fun ShortcutCategoryIcon( source: IconSource, modifier: Modifier = Modifier, contentDescription: String? = null, tint: Color = LocalContentColor.current, ) { if (source.imageVector != null) { Icon(source.imageVector, contentDescription, modifier, tint) } else if (source.painter != null) { Image(source.painter, contentDescription, modifier) } } @Composable private fun RotatingExpandCollapseIcon(isExpanded: Boolean) { val expandIconRotationDegrees by animateFloatAsState( targetValue = if (isExpanded) { 180f } else { 0f }, label = "Expand icon rotation animation", ) Icon( modifier = Modifier.background( color = MaterialTheme.colorScheme.surfaceContainerHigh, shape = CircleShape, ) .graphicsLayer { rotationZ = expandIconRotationDegrees }, imageVector = Icons.Default.ExpandMore, contentDescription = if (isExpanded) { stringResource(R.string.shortcut_helper_content_description_collapse_icon) } else { stringResource(R.string.shortcut_helper_content_description_expand_icon) }, tint = MaterialTheme.colorScheme.onSurface, ) } @Composable private fun ShortcutCategoryDetailsSinglePane(searchQuery: String, category: ShortcutCategoryUi) { Column(Modifier.padding(horizontal = 16.dp)) { category.subCategories.fastForEach { subCategory -> ShortcutSubCategorySinglePane(searchQuery, subCategory) } } } @Composable private fun ShortcutSubCategorySinglePane(searchQuery: String, subCategory: ShortcutSubCategory) { // This @Composable is expected to be in a Column. SubCategoryTitle(subCategory.label) subCategory.shortcuts.fastForEachIndexed { index, shortcut -> if (index > 0) { HorizontalDivider(color = MaterialTheme.colorScheme.surfaceContainerHigh) } Shortcut(Modifier.padding(vertical = 24.dp), searchQuery, shortcut) } } @Composable private fun ShortcutHelperTwoPane( searchQuery: String, onSearchQueryChanged: (String) -> Unit, modifier: Modifier = Modifier, categories: List<ShortcutCategoryUi>, selectedCategoryType: ShortcutCategoryType?, onCategorySelected: (ShortcutCategoryType?) -> Unit, onKeyboardSettingsClicked: () -> Unit, isShortcutCustomizerFlagEnabled: Boolean, onCustomizationRequested: (ShortcutCustomizationRequestInfo) -> Unit = {}, shouldShowResetButton: Boolean, ) { val selectedCategory = categories.fastFirstOrNull { it.type == selectedCategoryType } var isCustomizing by remember { mutableStateOf(false) } Column(modifier = modifier.fillMaxSize().padding(horizontal = 24.dp)) { Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) { // Keep title centered whether customize button is visible or not. Box(modifier = Modifier.fillMaxWidth(), contentAlignment = Alignment.CenterEnd) { Box(modifier = Modifier.fillMaxWidth(), contentAlignment = Alignment.Center) { TitleBar(isCustomizing) } if (isShortcutCustomizerFlagEnabled) { CustomizationButtonsContainer( isCustomizing = isCustomizing, onToggleCustomizationMode = { isCustomizing = !isCustomizing }, onReset = { onCustomizationRequested(ShortcutCustomizationRequestInfo.Reset) }, shouldShowResetButton = shouldShowResetButton, ) } else { Spacer(modifier = Modifier.width(if (isCustomizing) 69.dp else 133.dp)) } } } Spacer(modifier = Modifier.height(12.dp)) Row(Modifier.fillMaxWidth()) { StartSidePanel( onSearchQueryChanged = onSearchQueryChanged, modifier = Modifier.width(240.dp).semantics { isTraversalGroup = true }, categories = categories, onKeyboardSettingsClicked = onKeyboardSettingsClicked, selectedCategory = selectedCategoryType, onCategoryClicked = { onCategorySelected(it.type) }, ) Spacer(modifier = Modifier.width(24.dp)) EndSidePanel( searchQuery, Modifier.fillMaxSize().padding(top = 8.dp).semantics { isTraversalGroup = true }, selectedCategory, isCustomizing = isCustomizing, onCustomizationRequested = onCustomizationRequested, ) } } } @Composable private fun CustomizationButtonsContainer( isCustomizing: Boolean, shouldShowResetButton: Boolean, onToggleCustomizationMode: () -> Unit, onReset: () -> Unit, ) { Row(horizontalArrangement = Arrangement.spacedBy(8.dp)) { if (isCustomizing) { if (shouldShowResetButton) { ResetButton(onClick = onReset) } DoneButton(onClick = onToggleCustomizationMode) } else { CustomizeButton(onClick = onToggleCustomizationMode) } } } @Composable private fun ResetButton(onClick: () -> Unit) { ShortcutHelperButton( modifier = Modifier.heightIn(40.dp), onClick = onClick, color = Color.Transparent, iconSource = IconSource(imageVector = Icons.Default.Refresh), text = stringResource(id = R.string.shortcut_helper_reset_button_text), contentColor = MaterialTheme.colorScheme.primary, border = BorderStroke(color = MaterialTheme.colorScheme.outlineVariant, width = 1.dp), ) } @Composable private fun CustomizeButton(onClick: () -> Unit) { ShortcutHelperButton( modifier = Modifier.heightIn(40.dp), onClick = onClick, color = MaterialTheme.colorScheme.secondaryContainer, iconSource = IconSource(imageVector = Icons.Default.Tune), text = stringResource(id = R.string.shortcut_helper_customize_button_text), contentColor = MaterialTheme.colorScheme.onSecondaryContainer, ) } @Composable private fun DoneButton(onClick: () -> Unit) { ShortcutHelperButton( modifier = Modifier.heightIn(40.dp), onClick = onClick, color = MaterialTheme.colorScheme.primary, text = stringResource(R.string.shortcut_helper_done_button_text), contentColor = MaterialTheme.colorScheme.onPrimary, ) } @Composable private fun EndSidePanel( searchQuery: String, modifier: Modifier, category: ShortcutCategoryUi?, isCustomizing: Boolean, onCustomizationRequested: (ShortcutCustomizationRequestInfo) -> Unit = {}, ) { val listState = rememberLazyListState() LaunchedEffect(key1 = category) { if (category != null) listState.animateScrollToItem(0) } if (category == null) { NoSearchResultsText(horizontalPadding = 24.dp, fillHeight = false) return } LazyColumn(modifier = modifier, state = listState) { items(category.subCategories) { subcategory -> SubCategoryContainerDualPane( searchQuery = searchQuery, subCategory = subcategory, isCustomizing = isCustomizing and category.type.includeInCustomization, onCustomizationRequested = { requestInfo -> when (requestInfo) { is ShortcutCustomizationRequestInfo.SingleShortcutCustomization.Add -> onCustomizationRequested(requestInfo.copy(categoryType = category.type)) is ShortcutCustomizationRequestInfo.SingleShortcutCustomization.Delete -> onCustomizationRequested(requestInfo.copy(categoryType = category.type)) ShortcutCustomizationRequestInfo.Reset -> onCustomizationRequested(requestInfo) } }, ) Spacer(modifier = Modifier.height(8.dp)) } } } @Composable private fun NoSearchResultsText(horizontalPadding: Dp, fillHeight: Boolean) { var modifier = Modifier.fillMaxWidth() if (fillHeight) { modifier = modifier.fillMaxHeight() } Text( stringResource(R.string.shortcut_helper_no_search_results), style = MaterialTheme.typography.bodyMedium, color = MaterialTheme.colorScheme.onSurface, modifier = modifier .padding(vertical = 8.dp) .background(MaterialTheme.colorScheme.surfaceBright, RoundedCornerShape(28.dp)) .padding(horizontal = horizontalPadding, vertical = 24.dp), ) } @Composable private fun SubCategoryContainerDualPane( searchQuery: String, subCategory: ShortcutSubCategory, isCustomizing: Boolean, onCustomizationRequested: (ShortcutCustomizationRequestInfo) -> Unit, ) { Surface( modifier = Modifier.fillMaxWidth(), shape = RoundedCornerShape(28.dp), color = MaterialTheme.colorScheme.surfaceBright, ) { Column(Modifier.padding(16.dp)) { SubCategoryTitle(subCategory.label) Spacer(Modifier.height(8.dp)) subCategory.shortcuts.fastForEachIndexed { index, shortcut -> if (index > 0) { HorizontalDivider( modifier = Modifier.padding(horizontal = 8.dp), color = MaterialTheme.colorScheme.surfaceContainerHigh, ) } Shortcut( modifier = Modifier.padding(vertical = 8.dp), searchQuery = searchQuery, shortcut = shortcut, isCustomizing = isCustomizing && shortcut.isCustomizable, onCustomizationRequested = { requestInfo -> when (requestInfo) { is ShortcutCustomizationRequestInfo.SingleShortcutCustomization.Add -> onCustomizationRequested( requestInfo.copy(subCategoryLabel = subCategory.label) ) is ShortcutCustomizationRequestInfo.SingleShortcutCustomization.Delete -> onCustomizationRequested( requestInfo.copy(subCategoryLabel = subCategory.label) ) ShortcutCustomizationRequestInfo.Reset -> onCustomizationRequested(requestInfo) } }, ) } } } } @Composable private fun SubCategoryTitle(title: String) { Text( title, style = MaterialTheme.typography.titleSmall, color = MaterialTheme.colorScheme.primary, ) } @Composable private fun Shortcut( modifier: Modifier, searchQuery: String, shortcut: ShortcutModel, isCustomizing: Boolean = false, onCustomizationRequested: (ShortcutCustomizationRequestInfo) -> Unit = {}, ) { val interactionSource = remember { MutableInteractionSource() } val isFocused by interactionSource.collectIsFocusedAsState() val focusColor = MaterialTheme.colorScheme.secondary Row( modifier .thenIf(isFocused) { Modifier.border(width = 3.dp, color = focusColor, shape = RoundedCornerShape(16.dp)) } .focusable(interactionSource = interactionSource) .padding(8.dp) .semantics(mergeDescendants = true) { contentDescription = shortcut.contentDescription } ) { Row( modifier = Modifier.width(128.dp).align(Alignment.CenterVertically).weight(0.333f).semantics { hideFromAccessibility() }, horizontalArrangement = Arrangement.spacedBy(16.dp), verticalAlignment = Alignment.CenterVertically, ) { if (shortcut.icon != null) { ShortcutIcon( shortcut.icon, modifier = Modifier.size(24.dp).semantics { hideFromAccessibility() }, ) } ShortcutDescriptionText( searchQuery = searchQuery, shortcut = shortcut, modifier = Modifier.semantics { hideFromAccessibility() }, ) } Spacer(modifier = Modifier.width(24.dp).semantics { hideFromAccessibility() }) ShortcutKeyCombinations( modifier = Modifier.weight(.666f).semantics { hideFromAccessibility() }, shortcut = shortcut, isCustomizing = isCustomizing, onAddShortcutRequested = { onCustomizationRequested( ShortcutCustomizationRequestInfo.SingleShortcutCustomization.Add( label = shortcut.label, shortcutCommand = shortcut.commands.first(), ) ) }, onDeleteShortcutRequested = { onCustomizationRequested( ShortcutCustomizationRequestInfo.SingleShortcutCustomization.Delete( label = shortcut.label, shortcutCommand = shortcut.commands.first(), ) ) }, ) } } @Composable fun ShortcutIcon( icon: ShortcutIcon, modifier: Modifier = Modifier, contentDescription: String? = null, ) { val context = LocalContext.current val drawable = remember(icon.packageName, icon.resourceId) { Icon.createWithResource(icon.packageName, icon.resourceId).loadDrawable(context) } ?: return Image( painter = rememberDrawablePainter(drawable), contentDescription = contentDescription, modifier = modifier, ) } @OptIn(ExperimentalLayoutApi::class) @Composable private fun ShortcutKeyCombinations( modifier: Modifier = Modifier, shortcut: ShortcutModel, isCustomizing: Boolean = false, onAddShortcutRequested: () -> Unit = {}, onDeleteShortcutRequested: () -> Unit = {}, ) { FlowRow( modifier = modifier, verticalArrangement = Arrangement.spacedBy(8.dp), itemVerticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.End, ) { shortcut.commands.forEachIndexed { index, command -> if (index > 0) { ShortcutOrSeparator(spacing = 16.dp) } ShortcutCommandContainer(showBackground = command.isCustom) { ShortcutCommand(command) } } if (isCustomizing) { Spacer(modifier = Modifier.width(16.dp)) if (shortcut.containsCustomShortcutCommands) { DeleteShortcutButton(onDeleteShortcutRequested) } else { AddShortcutButton(onAddShortcutRequested) } } } } @Composable private fun AddShortcutButton(onClick: () -> Unit) { ShortcutHelperButton( modifier = Modifier.size(32.dp), onClick = onClick, color = Color.Transparent, iconSource = IconSource(imageVector = Icons.Default.Add), contentColor = MaterialTheme.colorScheme.primary, contentPaddingVertical = 0.dp, contentPaddingHorizontal = 0.dp, contentDescription = stringResource(R.string.shortcut_helper_add_shortcut_button_label), shape = CircleShape, border = BorderStroke(width = 1.dp, color = MaterialTheme.colorScheme.outline) ) } @Composable private fun DeleteShortcutButton(onClick: () -> Unit) { ShortcutHelperButton( modifier = Modifier.size(32.dp), onClick = onClick, color = Color.Transparent, iconSource = IconSource(imageVector = Icons.Default.DeleteOutline), contentColor = MaterialTheme.colorScheme.primary, contentPaddingVertical = 0.dp, contentPaddingHorizontal = 0.dp, contentDescription = stringResource(R.string.shortcut_helper_delete_shortcut_button_label), shape = CircleShape, border = BorderStroke(width = 1.dp, color = MaterialTheme.colorScheme.outline) ) } @Composable private fun ShortcutCommandContainer(showBackground: Boolean, content: @Composable () -> Unit) { if (showBackground) { Box( modifier = Modifier.wrapContentSize() .background( color = MaterialTheme.colorScheme.outlineVariant, shape = RoundedCornerShape(16.dp), ) .padding(4.dp) ) { content() } } else { content() } } @Composable private fun ShortcutCommand(command: ShortcutCommand) { Row { command.keys.forEachIndexed { keyIndex, key -> if (keyIndex > 0) { Spacer(Modifier.width(4.dp)) } ShortcutKeyContainer { if (key is ShortcutKey.Text) { ShortcutTextKey(key) } else if (key is ShortcutKey.Icon) { ShortcutIconKey(key) } } } } } @Composable private fun ShortcutKeyContainer(shortcutKeyContent: @Composable BoxScope.() -> Unit) { Box( modifier = Modifier.height(36.dp) .background( color = MaterialTheme.colorScheme.surfaceContainer, shape = RoundedCornerShape(12.dp), ) ) { shortcutKeyContent() } } @Composable private fun BoxScope.ShortcutTextKey(key: ShortcutKey.Text) { Text( text = key.value, modifier = Modifier.align(Alignment.Center).padding(horizontal = 12.dp).semantics { hideFromAccessibility() }, style = MaterialTheme.typography.titleSmall, ) } @Composable private fun BoxScope.ShortcutIconKey(key: ShortcutKey.Icon) { Icon( painter = when (key) { is ShortcutKey.Icon.ResIdIcon -> painterResource(key.drawableResId) is ShortcutKey.Icon.DrawableIcon -> rememberDrawablePainter(drawable = key.drawable) }, contentDescription = null, modifier = Modifier.align(Alignment.Center).padding(6.dp), ) } @OptIn(ExperimentalLayoutApi::class) @Composable private fun FlowRowScope.ShortcutOrSeparator(spacing: Dp) { Spacer(Modifier.width(spacing)) Text( text = stringResource(R.string.shortcut_helper_key_combinations_or_separator), modifier = Modifier.align(Alignment.CenterVertically).semantics { hideFromAccessibility() }, style = MaterialTheme.typography.titleSmall, ) Spacer(Modifier.width(spacing)) } @Composable private fun ShortcutDescriptionText( searchQuery: String, shortcut: ShortcutModel, modifier: Modifier = Modifier, ) { Text( modifier = modifier, text = textWithHighlightedSearchQuery(shortcut.label, searchQuery), style = MaterialTheme.typography.titleSmall, color = MaterialTheme.colorScheme.onSurface, ) } @Composable private fun textWithHighlightedSearchQuery(text: String, searchValue: String) = buildAnnotatedString { val searchIndex = text.lowercase().indexOf(searchValue.trim().lowercase()) val postSearchIndex = searchIndex + searchValue.trim().length if (searchIndex > 0) { val preSearchText = text.substring(0, searchIndex) append(preSearchText) } if (searchIndex >= 0) { val searchText = text.substring(searchIndex, postSearchIndex) withStyle(style = SpanStyle(background = MaterialTheme.colorScheme.primaryContainer)) { append(searchText) } if (postSearchIndex < text.length) { val postSearchText = text.substring(postSearchIndex) append(postSearchText) } } else { append(text) } } @Composable private fun StartSidePanel( onSearchQueryChanged: (String) -> Unit, modifier: Modifier, categories: List<ShortcutCategoryUi>, onKeyboardSettingsClicked: () -> Unit, selectedCategory: ShortcutCategoryType?, onCategoryClicked: (ShortcutCategoryUi) -> Unit, ) { CompositionLocalProvider( // Restrict system font scale increases up to a max so categories display correctly. LocalDensity provides Density( density = LocalDensity.current.density, fontScale = LocalDensity.current.fontScale.coerceIn(1f, 1.5f), ) ) { Column(modifier) { ShortcutsSearchBar(onSearchQueryChanged) Spacer(modifier = Modifier.heightIn(8.dp)) CategoriesPanelTwoPane(categories, selectedCategory, onCategoryClicked) Spacer(modifier = Modifier.weight(1f)) KeyboardSettings( horizontalPadding = 24.dp, verticalPadding = 24.dp, onKeyboardSettingsClicked, ) } } } @Composable private fun CategoriesPanelTwoPane( categories: List<ShortcutCategoryUi>, selectedCategory: ShortcutCategoryType?, onCategoryClicked: (ShortcutCategoryUi) -> Unit, ) { Column { categories.fastForEach { CategoryItemTwoPane( label = it.label, iconSource = it.iconSource, selected = selectedCategory == it.type, onClick = { onCategoryClicked(it) }, ) } } } @Composable private fun CategoryItemTwoPane( label: String, iconSource: IconSource, selected: Boolean, onClick: () -> Unit, colors: NavigationDrawerItemColors = NavigationDrawerItemDefaults.colors(unselectedContainerColor = Color.Transparent), ) { SelectableShortcutSurface( selected = selected, onClick = onClick, modifier = Modifier.semantics { role = Role.Tab }.heightIn(min = 64.dp).fillMaxWidth(), shape = RoundedCornerShape(28.dp), color = colors.containerColor(selected).value, interactionsConfig = InteractionsConfig( hoverOverlayColor = MaterialTheme.colorScheme.onSurface, hoverOverlayAlpha = 0.11f, pressedOverlayColor = MaterialTheme.colorScheme.onSurface, pressedOverlayAlpha = 0.15f, focusOutlineColor = MaterialTheme.colorScheme.secondary, focusOutlineStrokeWidth = 3.dp, focusOutlinePadding = 2.dp, surfaceCornerRadius = 28.dp, focusOutlineCornerRadius = 33.dp, ), ) { Row(Modifier.padding(horizontal = 24.dp), verticalAlignment = Alignment.CenterVertically) { ShortcutCategoryIcon( modifier = Modifier.size(24.dp), source = iconSource, contentDescription = null, tint = colors.iconColor(selected).value, ) Spacer(Modifier.width(12.dp)) Box(Modifier.weight(1f)) { Text( fontSize = 18.sp, color = colors.textColor(selected).value, style = MaterialTheme.typography.titleSmall.copy(hyphens = Hyphens.Auto), text = label, ) } } } } @Composable @OptIn(ExperimentalMaterial3Api::class) private fun TitleBar(isCustomizing: Boolean = false) { val text = if (isCustomizing) { stringResource(R.string.shortcut_helper_customize_mode_title) } else { stringResource(R.string.shortcut_helper_title) } CenterAlignedTopAppBar( colors = TopAppBarDefaults.centerAlignedTopAppBarColors(containerColor = Color.Transparent), title = { Text( text = text, color = MaterialTheme.colorScheme.onSurface, style = MaterialTheme.typography.headlineSmall, ) }, windowInsets = WindowInsets(top = 0.dp, bottom = 0.dp, left = 0.dp, right = 0.dp), expandedHeight = 64.dp, ) } @Composable @OptIn(ExperimentalMaterial3Api::class) private fun ShortcutsSearchBar(onQueryChange: (String) -> Unit) { // Using an "internal query" to make sure the SearchBar is immediately updated, otherwise // the cursor moves to the wrong position sometimes, when waiting for the query to come back // from the ViewModel. var queryInternal by remember { mutableStateOf("") } val focusRequester = remember { FocusRequester() } val focusManager = LocalFocusManager.current LaunchedEffect(Unit) { // TODO(b/272065229): Added minor delay so TalkBack can take focus of search box by default, // remove when default a11y focus is fixed. delay(50) focusRequester.requestFocus() } SearchBar( modifier = Modifier.fillMaxWidth().focusRequester(focusRequester).onKeyEvent { if (it.key == Key.DirectionDown) { focusManager.moveFocus(FocusDirection.Down) return@onKeyEvent true } else { return@onKeyEvent false } }, colors = SearchBarDefaults.colors(containerColor = MaterialTheme.colorScheme.surfaceBright), query = queryInternal, active = false, onActiveChange = {}, onQueryChange = { queryInternal = it onQueryChange(it) }, onSearch = {}, leadingIcon = { Icon(Icons.Default.Search, contentDescription = null) }, placeholder = { Text(text = stringResource(R.string.shortcut_helper_search_placeholder)) }, windowInsets = WindowInsets(top = 0.dp, bottom = 0.dp, left = 0.dp, right = 0.dp), content = {}, ) } @Composable private fun KeyboardSettings(horizontalPadding: Dp, verticalPadding: Dp, onClick: () -> Unit) { ClickableShortcutSurface( onClick = onClick, shape = RoundedCornerShape(24.dp), color = Color.Transparent, modifier = Modifier.semantics { role = Role.Button }.fillMaxWidth().padding(horizontal = 12.dp), interactionsConfig = InteractionsConfig( hoverOverlayColor = MaterialTheme.colorScheme.onSurface, hoverOverlayAlpha = 0.11f, pressedOverlayColor = MaterialTheme.colorScheme.onSurface, pressedOverlayAlpha = 0.15f, focusOutlineColor = MaterialTheme.colorScheme.secondary, focusOutlinePadding = 8.dp, focusOutlineStrokeWidth = 3.dp, surfaceCornerRadius = 24.dp, focusOutlineCornerRadius = 28.dp, hoverPadding = 8.dp, ), ) { Row(verticalAlignment = Alignment.CenterVertically) { Text( text = stringResource(id = R.string.shortcut_helper_keyboard_settings_buttons_label), color = MaterialTheme.colorScheme.onSurfaceVariant, fontSize = 16.sp, style = MaterialTheme.typography.titleSmall, ) Spacer(modifier = Modifier.weight(1f)) Icon( imageVector = Icons.AutoMirrored.Default.OpenInNew, contentDescription = null, tint = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.size(24.dp), ) } } } object ShortcutHelper { object Shapes { val singlePaneFirstCategory = RoundedCornerShape( topStart = Dimensions.SinglePaneCategoryCornerRadius, topEnd = Dimensions.SinglePaneCategoryCornerRadius, ) val singlePaneLastCategory = RoundedCornerShape( bottomStart = Dimensions.SinglePaneCategoryCornerRadius, bottomEnd = Dimensions.SinglePaneCategoryCornerRadius, ) val singlePaneSingleCategory = RoundedCornerShape(size = Dimensions.SinglePaneCategoryCornerRadius) val singlePaneCategory = RectangleShape } object Dimensions { val SinglePaneCategoryCornerRadius = 28.dp } internal const val TAG = "ShortcutHelperUI" } \ No newline at end of file
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyboard.shortcut.ui.composable
+
+import android.graphics.drawable.Icon
+import androidx.compose.animation.AnimatedVisibility
+import androidx.compose.animation.core.animateFloatAsState
+import androidx.compose.foundation.BorderStroke
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.background
+import androidx.compose.foundation.border
+import androidx.compose.foundation.focusable
+import androidx.compose.foundation.interaction.MutableInteractionSource
+import androidx.compose.foundation.interaction.collectIsFocusedAsState
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.ExperimentalLayoutApi
+import androidx.compose.foundation.layout.FlowRow
+import androidx.compose.foundation.layout.FlowRowScope
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.WindowInsets
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.heightIn
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.layout.wrapContentSize
+import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.foundation.lazy.items
+import androidx.compose.foundation.lazy.rememberLazyListState
+import androidx.compose.foundation.rememberScrollState
+import androidx.compose.foundation.shape.CircleShape
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.foundation.verticalScroll
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.automirrored.filled.OpenInNew
+import androidx.compose.material.icons.filled.Add
+import androidx.compose.material.icons.filled.DeleteOutline
+import androidx.compose.material.icons.filled.ExpandMore
+import androidx.compose.material.icons.filled.Refresh
+import androidx.compose.material.icons.filled.Search
+import androidx.compose.material.icons.filled.Tune
+import androidx.compose.material3.CenterAlignedTopAppBar
+import androidx.compose.material3.ExperimentalMaterial3Api
+import androidx.compose.material3.HorizontalDivider
+import androidx.compose.material3.Icon
+import androidx.compose.material3.LocalContentColor
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.NavigationDrawerItemColors
+import androidx.compose.material3.NavigationDrawerItemDefaults
+import androidx.compose.material3.SearchBar
+import androidx.compose.material3.SearchBarDefaults
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
+import androidx.compose.material3.TopAppBarDefaults
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.focus.FocusDirection
+import androidx.compose.ui.focus.FocusRequester
+import androidx.compose.ui.focus.focusRequester
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.RectangleShape
+import androidx.compose.ui.graphics.Shape
+import androidx.compose.ui.graphics.graphicsLayer
+import androidx.compose.ui.input.key.Key
+import androidx.compose.ui.input.key.key
+import androidx.compose.ui.input.key.onKeyEvent
+import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.platform.LocalDensity
+import androidx.compose.ui.platform.LocalFocusManager
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.semantics.Role
+import androidx.compose.ui.semantics.contentDescription
+import androidx.compose.ui.semantics.hideFromAccessibility
+import androidx.compose.ui.semantics.isTraversalGroup
+import androidx.compose.ui.semantics.role
+import androidx.compose.ui.semantics.semantics
+import androidx.compose.ui.text.SpanStyle
+import androidx.compose.ui.text.buildAnnotatedString
+import androidx.compose.ui.text.style.Hyphens
+import androidx.compose.ui.text.style.TextAlign
+import androidx.compose.ui.text.style.TextOverflow
+import androidx.compose.ui.text.withStyle
+import androidx.compose.ui.unit.Density
+import androidx.compose.ui.unit.Dp
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+import androidx.compose.ui.util.fastFirstOrNull
+import androidx.compose.ui.util.fastForEach
+import androidx.compose.ui.util.fastForEachIndexed
+import com.android.compose.modifiers.thenIf
+import com.android.compose.ui.graphics.painter.rememberDrawablePainter
+import com.android.systemui.keyboard.shortcut.shared.model.Shortcut as ShortcutModel
+import com.android.systemui.keyboard.shortcut.shared.model.ShortcutCategoryType
+import com.android.systemui.keyboard.shortcut.shared.model.ShortcutCommand
+import com.android.systemui.keyboard.shortcut.shared.model.ShortcutCustomizationRequestInfo
+import com.android.systemui.keyboard.shortcut.shared.model.ShortcutIcon
+import com.android.systemui.keyboard.shortcut.shared.model.ShortcutKey
+import com.android.systemui.keyboard.shortcut.shared.model.ShortcutSubCategory
+import com.android.systemui.keyboard.shortcut.ui.model.IconSource
+import com.android.systemui.keyboard.shortcut.ui.model.ShortcutCategoryUi
+import com.android.systemui.keyboard.shortcut.ui.model.ShortcutsUiState
+import com.android.systemui.res.R
+import kotlinx.coroutines.delay
+
+@Composable
+fun ShortcutHelper(
+ onSearchQueryChanged: (String) -> Unit,
+ onKeyboardSettingsClicked: () -> Unit,
+ modifier: Modifier = Modifier,
+ shortcutsUiState: ShortcutsUiState,
+ useSinglePane: @Composable () -> Boolean = { shouldUseSinglePane() },
+ onCustomizationRequested: (ShortcutCustomizationRequestInfo) -> Unit = {},
+) {
+ when (shortcutsUiState) {
+ is ShortcutsUiState.Active -> {
+ ActiveShortcutHelper(
+ shortcutsUiState,
+ useSinglePane,
+ onSearchQueryChanged,
+ modifier,
+ onKeyboardSettingsClicked,
+ onCustomizationRequested,
+ )
+ }
+
+ else -> {
+ // No-op for now.
+ }
+ }
+}
+
+@Composable
+private fun ActiveShortcutHelper(
+ shortcutsUiState: ShortcutsUiState.Active,
+ useSinglePane: @Composable () -> Boolean,
+ onSearchQueryChanged: (String) -> Unit,
+ modifier: Modifier,
+ onKeyboardSettingsClicked: () -> Unit,
+ onCustomizationRequested: (ShortcutCustomizationRequestInfo) -> Unit = {},
+) {
+ var selectedCategoryType by
+ remember(shortcutsUiState.defaultSelectedCategory) {
+ mutableStateOf(shortcutsUiState.defaultSelectedCategory)
+ }
+ if (useSinglePane()) {
+ ShortcutHelperSinglePane(
+ shortcutsUiState.searchQuery,
+ onSearchQueryChanged,
+ shortcutsUiState.shortcutCategories,
+ selectedCategoryType,
+ onCategorySelected = { selectedCategoryType = it },
+ onKeyboardSettingsClicked,
+ modifier,
+ )
+ } else {
+ ShortcutHelperTwoPane(
+ shortcutsUiState.searchQuery,
+ onSearchQueryChanged,
+ modifier,
+ shortcutsUiState.shortcutCategories,
+ selectedCategoryType,
+ onCategorySelected = { selectedCategoryType = it },
+ onKeyboardSettingsClicked,
+ shortcutsUiState.isShortcutCustomizerFlagEnabled,
+ onCustomizationRequested,
+ shortcutsUiState.shouldShowResetButton,
+ )
+ }
+}
+
+@Composable private fun shouldUseSinglePane() = hasCompactWindowSize()
+
+@Composable
+private fun ShortcutHelperSinglePane(
+ searchQuery: String,
+ onSearchQueryChanged: (String) -> Unit,
+ categories: List<ShortcutCategoryUi>,
+ selectedCategoryType: ShortcutCategoryType?,
+ onCategorySelected: (ShortcutCategoryType?) -> Unit,
+ onKeyboardSettingsClicked: () -> Unit,
+ modifier: Modifier = Modifier,
+) {
+ Column(
+ modifier =
+ modifier
+ .fillMaxSize()
+ .verticalScroll(rememberScrollState())
+ .padding(start = 16.dp, end = 16.dp, top = 26.dp)
+ ) {
+ TitleBar()
+ Spacer(modifier = Modifier.height(6.dp))
+ ShortcutsSearchBar(onSearchQueryChanged)
+ Spacer(modifier = Modifier.height(16.dp))
+ if (categories.isEmpty()) {
+ Box(modifier = Modifier.weight(1f)) {
+ NoSearchResultsText(horizontalPadding = 16.dp, fillHeight = true)
+ }
+ } else {
+ CategoriesPanelSinglePane(
+ searchQuery,
+ categories,
+ selectedCategoryType,
+ onCategorySelected,
+ )
+ Spacer(modifier = Modifier.weight(1f))
+ }
+ KeyboardSettings(
+ horizontalPadding = 16.dp,
+ verticalPadding = 32.dp,
+ onClick = onKeyboardSettingsClicked,
+ )
+ }
+}
+
+@Composable
+private fun CategoriesPanelSinglePane(
+ searchQuery: String,
+ categories: List<ShortcutCategoryUi>,
+ selectedCategoryType: ShortcutCategoryType?,
+ onCategorySelected: (ShortcutCategoryType?) -> Unit,
+) {
+ Column(verticalArrangement = Arrangement.spacedBy(2.dp)) {
+ categories.fastForEachIndexed { index, category ->
+ val isExpanded = selectedCategoryType == category.type
+ val itemShape =
+ if (categories.size == 1) {
+ ShortcutHelper.Shapes.singlePaneSingleCategory
+ } else if (index == 0) {
+ ShortcutHelper.Shapes.singlePaneFirstCategory
+ } else if (index == categories.lastIndex) {
+ ShortcutHelper.Shapes.singlePaneLastCategory
+ } else {
+ ShortcutHelper.Shapes.singlePaneCategory
+ }
+ CategoryItemSinglePane(
+ searchQuery = searchQuery,
+ category = category,
+ isExpanded = isExpanded,
+ onClick = {
+ onCategorySelected(
+ if (isExpanded) {
+ null
+ } else {
+ category.type
+ }
+ )
+ },
+ shape = itemShape,
+ )
+ }
+ }
+}
+
+@Composable
+private fun CategoryItemSinglePane(
+ searchQuery: String,
+ category: ShortcutCategoryUi,
+ isExpanded: Boolean,
+ onClick: () -> Unit,
+ shape: Shape,
+) {
+ Surface(color = MaterialTheme.colorScheme.surfaceBright, shape = shape, onClick = onClick) {
+ Column {
+ Row(
+ verticalAlignment = Alignment.CenterVertically,
+ modifier = Modifier.fillMaxWidth().heightIn(min = 88.dp).padding(horizontal = 16.dp),
+ ) {
+ ShortcutCategoryIcon(modifier = Modifier.size(24.dp), source = category.iconSource)
+ Spacer(modifier = Modifier.width(16.dp))
+ Text(category.label)
+ Spacer(modifier = Modifier.weight(1f))
+ RotatingExpandCollapseIcon(isExpanded)
+ }
+ AnimatedVisibility(visible = isExpanded) {
+ ShortcutCategoryDetailsSinglePane(searchQuery, category)
+ }
+ }
+ }
+}
+
+@Composable
+fun ShortcutCategoryIcon(
+ source: IconSource,
+ modifier: Modifier = Modifier,
+ contentDescription: String? = null,
+ tint: Color = LocalContentColor.current,
+) {
+ if (source.imageVector != null) {
+ Icon(source.imageVector, contentDescription, modifier, tint)
+ } else if (source.painter != null) {
+ Image(source.painter, contentDescription, modifier)
+ }
+}
+
+@Composable
+private fun RotatingExpandCollapseIcon(isExpanded: Boolean) {
+ val expandIconRotationDegrees by
+ animateFloatAsState(
+ targetValue =
+ if (isExpanded) {
+ 180f
+ } else {
+ 0f
+ },
+ label = "Expand icon rotation animation",
+ )
+ Icon(
+ modifier =
+ Modifier.background(
+ color = MaterialTheme.colorScheme.surfaceContainerHigh,
+ shape = CircleShape,
+ )
+ .graphicsLayer { rotationZ = expandIconRotationDegrees },
+ imageVector = Icons.Default.ExpandMore,
+ contentDescription =
+ if (isExpanded) {
+ stringResource(R.string.shortcut_helper_content_description_collapse_icon)
+ } else {
+ stringResource(R.string.shortcut_helper_content_description_expand_icon)
+ },
+ tint = MaterialTheme.colorScheme.onSurface,
+ )
+}
+
+@Composable
+private fun ShortcutCategoryDetailsSinglePane(searchQuery: String, category: ShortcutCategoryUi) {
+ Column(Modifier.padding(horizontal = 16.dp)) {
+ category.subCategories.fastForEach { subCategory ->
+ ShortcutSubCategorySinglePane(searchQuery, subCategory)
+ }
+ }
+}
+
+@Composable
+private fun ShortcutSubCategorySinglePane(searchQuery: String, subCategory: ShortcutSubCategory) {
+ // This @Composable is expected to be in a Column.
+ SubCategoryTitle(subCategory.label)
+ subCategory.shortcuts.fastForEachIndexed { index, shortcut ->
+ if (index > 0) {
+ HorizontalDivider(color = MaterialTheme.colorScheme.surfaceContainerHigh)
+ }
+ Shortcut(Modifier.padding(vertical = 24.dp), searchQuery, shortcut)
+ }
+}
+
+@Composable
+private fun ShortcutHelperTwoPane(
+ searchQuery: String,
+ onSearchQueryChanged: (String) -> Unit,
+ modifier: Modifier = Modifier,
+ categories: List<ShortcutCategoryUi>,
+ selectedCategoryType: ShortcutCategoryType?,
+ onCategorySelected: (ShortcutCategoryType?) -> Unit,
+ onKeyboardSettingsClicked: () -> Unit,
+ isShortcutCustomizerFlagEnabled: Boolean,
+ onCustomizationRequested: (ShortcutCustomizationRequestInfo) -> Unit = {},
+ shouldShowResetButton: Boolean,
+) {
+ val selectedCategory = categories.fastFirstOrNull { it.type == selectedCategoryType }
+ var isCustomizing by remember { mutableStateOf(false) }
+
+ Column(modifier = modifier.fillMaxSize().padding(horizontal = 24.dp)) {
+ Row(
+ modifier = Modifier.fillMaxWidth(),
+ verticalAlignment = Alignment.CenterVertically,
+ horizontalArrangement = Arrangement.SpaceBetween,
+ ) {
+ // Keep title centered whether customize button is visible or not.
+ Spacer(modifier = Modifier.weight(1f))
+ Box(modifier = Modifier.width(412.dp), contentAlignment = Alignment.Center) {
+ TitleBar(isCustomizing)
+ }
+ if (isShortcutCustomizerFlagEnabled) {
+ CustomizationButtonsContainer(
+ modifier = Modifier.weight(1f),
+ isCustomizing = isCustomizing,
+ onToggleCustomizationMode = { isCustomizing = !isCustomizing },
+ onReset = { onCustomizationRequested(ShortcutCustomizationRequestInfo.Reset) },
+ shouldShowResetButton = shouldShowResetButton,
+ )
+ } else {
+ Spacer(modifier = Modifier.weight(1f))
+ }
+ }
+ Spacer(modifier = Modifier.height(12.dp))
+ Row(Modifier.fillMaxWidth()) {
+ StartSidePanel(
+ onSearchQueryChanged = onSearchQueryChanged,
+ modifier = Modifier.width(240.dp).semantics { isTraversalGroup = true },
+ categories = categories,
+ onKeyboardSettingsClicked = onKeyboardSettingsClicked,
+ selectedCategory = selectedCategoryType,
+ onCategoryClicked = { onCategorySelected(it.type) },
+ )
+ Spacer(modifier = Modifier.width(24.dp))
+ EndSidePanel(
+ searchQuery,
+ Modifier.fillMaxSize().padding(top = 8.dp).semantics { isTraversalGroup = true },
+ selectedCategory,
+ isCustomizing = isCustomizing,
+ onCustomizationRequested = onCustomizationRequested,
+ )
+ }
+ }
+}
+
+@Composable
+private fun CustomizationButtonsContainer(
+ isCustomizing: Boolean,
+ shouldShowResetButton: Boolean,
+ onToggleCustomizationMode: () -> Unit,
+ onReset: () -> Unit,
+ modifier: Modifier = Modifier,
+) {
+ Row(modifier = modifier, horizontalArrangement = Arrangement.End) {
+ if (isCustomizing) {
+ if (shouldShowResetButton) {
+ ResetButton(onClick = onReset)
+ Spacer(Modifier.width(8.dp))
+ }
+ DoneButton(onClick = onToggleCustomizationMode)
+ } else {
+ CustomizeButton(onClick = onToggleCustomizationMode)
+ }
+ }
+}
+
+@Composable
+private fun ResetButton(onClick: () -> Unit) {
+ ShortcutHelperButton(
+ modifier = Modifier.heightIn(40.dp),
+ onClick = onClick,
+ color = Color.Transparent,
+ iconSource = IconSource(imageVector = Icons.Default.Refresh),
+ text = stringResource(id = R.string.shortcut_helper_reset_button_text),
+ contentColor = MaterialTheme.colorScheme.primary,
+ border = BorderStroke(color = MaterialTheme.colorScheme.outlineVariant, width = 1.dp),
+ )
+}
+
+@Composable
+private fun CustomizeButton(onClick: () -> Unit) {
+ ShortcutHelperButton(
+ modifier = Modifier.heightIn(40.dp),
+ onClick = onClick,
+ color = MaterialTheme.colorScheme.secondaryContainer,
+ iconSource = IconSource(imageVector = Icons.Default.Tune),
+ text = stringResource(id = R.string.shortcut_helper_customize_button_text),
+ contentColor = MaterialTheme.colorScheme.onSecondaryContainer,
+ )
+}
+
+@Composable
+private fun DoneButton(onClick: () -> Unit) {
+ ShortcutHelperButton(
+ modifier = Modifier.heightIn(40.dp),
+ onClick = onClick,
+ color = MaterialTheme.colorScheme.primary,
+ text = stringResource(R.string.shortcut_helper_done_button_text),
+ contentColor = MaterialTheme.colorScheme.onPrimary,
+ )
+}
+
+@Composable
+private fun EndSidePanel(
+ searchQuery: String,
+ modifier: Modifier,
+ category: ShortcutCategoryUi?,
+ isCustomizing: Boolean,
+ onCustomizationRequested: (ShortcutCustomizationRequestInfo) -> Unit = {},
+) {
+ val listState = rememberLazyListState()
+ LaunchedEffect(key1 = category) { if (category != null) listState.animateScrollToItem(0) }
+ if (category == null) {
+ NoSearchResultsText(horizontalPadding = 24.dp, fillHeight = false)
+ return
+ }
+ LazyColumn(modifier = modifier, state = listState) {
+ items(category.subCategories) { subcategory ->
+ SubCategoryContainerDualPane(
+ searchQuery = searchQuery,
+ subCategory = subcategory,
+ isCustomizing = isCustomizing and category.type.includeInCustomization,
+ onCustomizationRequested = { requestInfo ->
+ when (requestInfo) {
+ is ShortcutCustomizationRequestInfo.SingleShortcutCustomization.Add ->
+ onCustomizationRequested(requestInfo.copy(categoryType = category.type))
+
+ is ShortcutCustomizationRequestInfo.SingleShortcutCustomization.Delete ->
+ onCustomizationRequested(requestInfo.copy(categoryType = category.type))
+
+ ShortcutCustomizationRequestInfo.Reset ->
+ onCustomizationRequested(requestInfo)
+ }
+ },
+ )
+ Spacer(modifier = Modifier.height(8.dp))
+ }
+ }
+}
+
+@Composable
+private fun NoSearchResultsText(horizontalPadding: Dp, fillHeight: Boolean) {
+ var modifier = Modifier.fillMaxWidth()
+ if (fillHeight) {
+ modifier = modifier.fillMaxHeight()
+ }
+ Text(
+ stringResource(R.string.shortcut_helper_no_search_results),
+ style = MaterialTheme.typography.bodyMedium,
+ color = MaterialTheme.colorScheme.onSurface,
+ modifier =
+ modifier
+ .padding(vertical = 8.dp)
+ .background(MaterialTheme.colorScheme.surfaceBright, RoundedCornerShape(28.dp))
+ .padding(horizontal = horizontalPadding, vertical = 24.dp),
+ )
+}
+
+@Composable
+private fun SubCategoryContainerDualPane(
+ searchQuery: String,
+ subCategory: ShortcutSubCategory,
+ isCustomizing: Boolean,
+ onCustomizationRequested: (ShortcutCustomizationRequestInfo) -> Unit,
+) {
+ Surface(
+ modifier = Modifier.fillMaxWidth(),
+ shape = RoundedCornerShape(28.dp),
+ color = MaterialTheme.colorScheme.surfaceBright,
+ ) {
+ Column(Modifier.padding(16.dp)) {
+ SubCategoryTitle(subCategory.label)
+ Spacer(Modifier.height(8.dp))
+ subCategory.shortcuts.fastForEachIndexed { index, shortcut ->
+ if (index > 0) {
+ HorizontalDivider(
+ modifier = Modifier.padding(horizontal = 8.dp),
+ color = MaterialTheme.colorScheme.surfaceContainerHigh,
+ )
+ }
+ Shortcut(
+ modifier = Modifier.padding(vertical = 8.dp),
+ searchQuery = searchQuery,
+ shortcut = shortcut,
+ isCustomizing = isCustomizing && shortcut.isCustomizable,
+ onCustomizationRequested = { requestInfo ->
+ when (requestInfo) {
+ is ShortcutCustomizationRequestInfo.SingleShortcutCustomization.Add ->
+ onCustomizationRequested(
+ requestInfo.copy(subCategoryLabel = subCategory.label)
+ )
+
+ is ShortcutCustomizationRequestInfo.SingleShortcutCustomization.Delete ->
+ onCustomizationRequested(
+ requestInfo.copy(subCategoryLabel = subCategory.label)
+ )
+
+ ShortcutCustomizationRequestInfo.Reset ->
+ onCustomizationRequested(requestInfo)
+ }
+ },
+ )
+ }
+ }
+ }
+}
+
+@Composable
+private fun SubCategoryTitle(title: String) {
+ Text(
+ title,
+ style = MaterialTheme.typography.titleSmall,
+ color = MaterialTheme.colorScheme.primary,
+ )
+}
+
+@Composable
+private fun Shortcut(
+ modifier: Modifier,
+ searchQuery: String,
+ shortcut: ShortcutModel,
+ isCustomizing: Boolean = false,
+ onCustomizationRequested: (ShortcutCustomizationRequestInfo) -> Unit = {},
+) {
+ val interactionSource = remember { MutableInteractionSource() }
+ val isFocused by interactionSource.collectIsFocusedAsState()
+ val focusColor = MaterialTheme.colorScheme.secondary
+ Row(
+ modifier
+ .thenIf(isFocused) {
+ Modifier.border(width = 3.dp, color = focusColor, shape = RoundedCornerShape(16.dp))
+ }
+ .focusable(interactionSource = interactionSource)
+ .padding(8.dp)
+ .semantics(mergeDescendants = true) { contentDescription = shortcut.contentDescription }
+ ) {
+ Row(
+ modifier =
+ Modifier.width(128.dp).align(Alignment.CenterVertically).weight(0.333f).semantics {
+ hideFromAccessibility()
+ },
+ horizontalArrangement = Arrangement.spacedBy(16.dp),
+ verticalAlignment = Alignment.CenterVertically,
+ ) {
+ if (shortcut.icon != null) {
+ ShortcutIcon(
+ shortcut.icon,
+ modifier = Modifier.size(24.dp).semantics { hideFromAccessibility() },
+ )
+ }
+ ShortcutDescriptionText(
+ searchQuery = searchQuery,
+ shortcut = shortcut,
+ modifier = Modifier.semantics { hideFromAccessibility() },
+ )
+ }
+ Spacer(modifier = Modifier.width(24.dp).semantics { hideFromAccessibility() })
+ ShortcutKeyCombinations(
+ modifier = Modifier.weight(.666f).semantics { hideFromAccessibility() },
+ shortcut = shortcut,
+ isCustomizing = isCustomizing,
+ onAddShortcutRequested = {
+ onCustomizationRequested(
+ ShortcutCustomizationRequestInfo.SingleShortcutCustomization.Add(
+ label = shortcut.label,
+ shortcutCommand = shortcut.commands.first(),
+ )
+ )
+ },
+ onDeleteShortcutRequested = {
+ onCustomizationRequested(
+ ShortcutCustomizationRequestInfo.SingleShortcutCustomization.Delete(
+ label = shortcut.label,
+ shortcutCommand = shortcut.commands.first(),
+ )
+ )
+ },
+ )
+ }
+}
+
+@Composable
+fun ShortcutIcon(
+ icon: ShortcutIcon,
+ modifier: Modifier = Modifier,
+ contentDescription: String? = null,
+) {
+ val context = LocalContext.current
+ val drawable =
+ remember(icon.packageName, icon.resourceId) {
+ Icon.createWithResource(icon.packageName, icon.resourceId).loadDrawable(context)
+ } ?: return
+ Image(
+ painter = rememberDrawablePainter(drawable),
+ contentDescription = contentDescription,
+ modifier = modifier,
+ )
+}
+
+@OptIn(ExperimentalLayoutApi::class)
+@Composable
+private fun ShortcutKeyCombinations(
+ modifier: Modifier = Modifier,
+ shortcut: ShortcutModel,
+ isCustomizing: Boolean = false,
+ onAddShortcutRequested: () -> Unit = {},
+ onDeleteShortcutRequested: () -> Unit = {},
+) {
+ FlowRow(
+ modifier = modifier,
+ verticalArrangement = Arrangement.spacedBy(8.dp),
+ itemVerticalAlignment = Alignment.CenterVertically,
+ horizontalArrangement = Arrangement.End,
+ ) {
+ shortcut.commands.forEachIndexed { index, command ->
+ if (index > 0) {
+ ShortcutOrSeparator(spacing = 16.dp)
+ }
+ ShortcutCommandContainer(showBackground = command.isCustom) { ShortcutCommand(command) }
+ }
+
+ if (isCustomizing) Spacer(modifier = Modifier.width(16.dp))
+
+ AnimatedVisibility(visible = isCustomizing) {
+ if (shortcut.containsCustomShortcutCommands) {
+ DeleteShortcutButton(onDeleteShortcutRequested)
+ } else {
+ AddShortcutButton(onAddShortcutRequested)
+ }
+ }
+ }
+}
+
+@Composable
+private fun AddShortcutButton(onClick: () -> Unit) {
+ ShortcutHelperButton(
+ modifier = Modifier.size(32.dp),
+ onClick = onClick,
+ color = Color.Transparent,
+ iconSource = IconSource(imageVector = Icons.Default.Add),
+ contentColor = MaterialTheme.colorScheme.primary,
+ contentPaddingVertical = 0.dp,
+ contentPaddingHorizontal = 0.dp,
+ contentDescription = stringResource(R.string.shortcut_helper_add_shortcut_button_label),
+ shape = CircleShape,
+ border = BorderStroke(width = 1.dp, color = MaterialTheme.colorScheme.outline),
+ )
+}
+
+@Composable
+private fun DeleteShortcutButton(onClick: () -> Unit) {
+ ShortcutHelperButton(
+ modifier = Modifier.size(32.dp),
+ onClick = onClick,
+ color = Color.Transparent,
+ iconSource = IconSource(imageVector = Icons.Default.DeleteOutline),
+ contentColor = MaterialTheme.colorScheme.primary,
+ contentPaddingVertical = 0.dp,
+ contentPaddingHorizontal = 0.dp,
+ contentDescription = stringResource(R.string.shortcut_helper_delete_shortcut_button_label),
+ shape = CircleShape,
+ border = BorderStroke(width = 1.dp, color = MaterialTheme.colorScheme.outline),
+ )
+}
+
+@Composable
+private fun ShortcutCommandContainer(showBackground: Boolean, content: @Composable () -> Unit) {
+ if (showBackground) {
+ Box(
+ modifier =
+ Modifier.wrapContentSize()
+ .background(
+ color = MaterialTheme.colorScheme.outlineVariant,
+ shape = RoundedCornerShape(16.dp),
+ )
+ .padding(4.dp)
+ ) {
+ content()
+ }
+ } else {
+ content()
+ }
+}
+
+@Composable
+private fun ShortcutCommand(command: ShortcutCommand) {
+ Row {
+ command.keys.forEachIndexed { keyIndex, key ->
+ if (keyIndex > 0) {
+ Spacer(Modifier.width(4.dp))
+ }
+ ShortcutKeyContainer {
+ if (key is ShortcutKey.Text) {
+ ShortcutTextKey(key)
+ } else if (key is ShortcutKey.Icon) {
+ ShortcutIconKey(key)
+ }
+ }
+ }
+ }
+}
+
+@Composable
+private fun ShortcutKeyContainer(shortcutKeyContent: @Composable BoxScope.() -> Unit) {
+ Box(
+ modifier =
+ Modifier.height(36.dp)
+ .background(
+ color = MaterialTheme.colorScheme.surfaceContainer,
+ shape = RoundedCornerShape(12.dp),
+ )
+ ) {
+ shortcutKeyContent()
+ }
+}
+
+@Composable
+private fun BoxScope.ShortcutTextKey(key: ShortcutKey.Text) {
+ Text(
+ text = key.value,
+ modifier =
+ Modifier.align(Alignment.Center).padding(horizontal = 12.dp).semantics {
+ hideFromAccessibility()
+ },
+ style = MaterialTheme.typography.titleSmall,
+ )
+}
+
+@Composable
+private fun BoxScope.ShortcutIconKey(key: ShortcutKey.Icon) {
+ Icon(
+ painter =
+ when (key) {
+ is ShortcutKey.Icon.ResIdIcon -> painterResource(key.drawableResId)
+ is ShortcutKey.Icon.DrawableIcon -> rememberDrawablePainter(drawable = key.drawable)
+ },
+ contentDescription = null,
+ modifier = Modifier.align(Alignment.Center).padding(6.dp),
+ )
+}
+
+@OptIn(ExperimentalLayoutApi::class)
+@Composable
+private fun FlowRowScope.ShortcutOrSeparator(spacing: Dp) {
+ Spacer(Modifier.width(spacing))
+ Text(
+ text = stringResource(R.string.shortcut_helper_key_combinations_or_separator),
+ modifier = Modifier.align(Alignment.CenterVertically).semantics { hideFromAccessibility() },
+ style = MaterialTheme.typography.titleSmall,
+ )
+ Spacer(Modifier.width(spacing))
+}
+
+@Composable
+private fun ShortcutDescriptionText(
+ searchQuery: String,
+ shortcut: ShortcutModel,
+ modifier: Modifier = Modifier,
+) {
+ Text(
+ modifier = modifier,
+ text = textWithHighlightedSearchQuery(shortcut.label, searchQuery),
+ style = MaterialTheme.typography.titleSmall,
+ color = MaterialTheme.colorScheme.onSurface,
+ )
+}
+
+@Composable
+private fun textWithHighlightedSearchQuery(text: String, searchValue: String) =
+ buildAnnotatedString {
+ val searchIndex = text.lowercase().indexOf(searchValue.trim().lowercase())
+ val postSearchIndex = searchIndex + searchValue.trim().length
+
+ if (searchIndex > 0) {
+ val preSearchText = text.substring(0, searchIndex)
+ append(preSearchText)
+ }
+ if (searchIndex >= 0) {
+ val searchText = text.substring(searchIndex, postSearchIndex)
+ withStyle(style = SpanStyle(background = MaterialTheme.colorScheme.primaryContainer)) {
+ append(searchText)
+ }
+ if (postSearchIndex < text.length) {
+ val postSearchText = text.substring(postSearchIndex)
+ append(postSearchText)
+ }
+ } else {
+ append(text)
+ }
+ }
+
+@Composable
+private fun StartSidePanel(
+ onSearchQueryChanged: (String) -> Unit,
+ modifier: Modifier,
+ categories: List<ShortcutCategoryUi>,
+ onKeyboardSettingsClicked: () -> Unit,
+ selectedCategory: ShortcutCategoryType?,
+ onCategoryClicked: (ShortcutCategoryUi) -> Unit,
+) {
+ CompositionLocalProvider(
+ // Restrict system font scale increases up to a max so categories display correctly.
+ LocalDensity provides
+ Density(
+ density = LocalDensity.current.density,
+ fontScale = LocalDensity.current.fontScale.coerceIn(1f, 1.5f),
+ )
+ ) {
+ Column(modifier) {
+ ShortcutsSearchBar(onSearchQueryChanged)
+ Spacer(modifier = Modifier.heightIn(8.dp))
+ CategoriesPanelTwoPane(categories, selectedCategory, onCategoryClicked)
+ Spacer(modifier = Modifier.weight(1f))
+ KeyboardSettings(
+ horizontalPadding = 24.dp,
+ verticalPadding = 24.dp,
+ onKeyboardSettingsClicked,
+ )
+ }
+ }
+}
+
+@Composable
+private fun CategoriesPanelTwoPane(
+ categories: List<ShortcutCategoryUi>,
+ selectedCategory: ShortcutCategoryType?,
+ onCategoryClicked: (ShortcutCategoryUi) -> Unit,
+) {
+ Column {
+ categories.fastForEach {
+ CategoryItemTwoPane(
+ label = it.label,
+ iconSource = it.iconSource,
+ selected = selectedCategory == it.type,
+ onClick = { onCategoryClicked(it) },
+ )
+ }
+ }
+}
+
+@Composable
+private fun CategoryItemTwoPane(
+ label: String,
+ iconSource: IconSource,
+ selected: Boolean,
+ onClick: () -> Unit,
+ colors: NavigationDrawerItemColors =
+ NavigationDrawerItemDefaults.colors(unselectedContainerColor = Color.Transparent),
+) {
+ SelectableShortcutSurface(
+ selected = selected,
+ onClick = onClick,
+ modifier = Modifier.semantics { role = Role.Tab }.heightIn(min = 64.dp).fillMaxWidth(),
+ shape = RoundedCornerShape(28.dp),
+ color = colors.containerColor(selected).value,
+ interactionsConfig =
+ InteractionsConfig(
+ hoverOverlayColor = MaterialTheme.colorScheme.onSurface,
+ hoverOverlayAlpha = 0.11f,
+ pressedOverlayColor = MaterialTheme.colorScheme.onSurface,
+ pressedOverlayAlpha = 0.15f,
+ focusOutlineColor = MaterialTheme.colorScheme.secondary,
+ focusOutlineStrokeWidth = 3.dp,
+ focusOutlinePadding = 2.dp,
+ surfaceCornerRadius = 28.dp,
+ focusOutlineCornerRadius = 33.dp,
+ ),
+ ) {
+ Row(Modifier.padding(horizontal = 24.dp), verticalAlignment = Alignment.CenterVertically) {
+ ShortcutCategoryIcon(
+ modifier = Modifier.size(24.dp),
+ source = iconSource,
+ contentDescription = null,
+ tint = colors.iconColor(selected).value,
+ )
+ Spacer(Modifier.width(12.dp))
+ Box(Modifier.weight(1f)) {
+ Text(
+ fontSize = 18.sp,
+ color = colors.textColor(selected).value,
+ style = MaterialTheme.typography.titleSmall.copy(hyphens = Hyphens.Auto),
+ text = label,
+ )
+ }
+ }
+ }
+}
+
+@Composable
+@OptIn(ExperimentalMaterial3Api::class)
+private fun TitleBar(isCustomizing: Boolean = false) {
+ val text =
+ if (isCustomizing) {
+ stringResource(R.string.shortcut_helper_customize_mode_title)
+ } else {
+ stringResource(R.string.shortcut_helper_title)
+ }
+ CenterAlignedTopAppBar(
+ colors = TopAppBarDefaults.centerAlignedTopAppBarColors(containerColor = Color.Transparent),
+ title = {
+ Text(
+ text = text,
+ color = MaterialTheme.colorScheme.onSurface,
+ style = MaterialTheme.typography.headlineSmall,
+ maxLines = 2,
+ overflow = TextOverflow.Ellipsis,
+ textAlign = TextAlign.Center,
+ )
+ },
+ windowInsets = WindowInsets(top = 0.dp, bottom = 0.dp, left = 0.dp, right = 0.dp),
+ expandedHeight = 64.dp,
+ )
+}
+
+@Composable
+@OptIn(ExperimentalMaterial3Api::class)
+private fun ShortcutsSearchBar(onQueryChange: (String) -> Unit) {
+ // Using an "internal query" to make sure the SearchBar is immediately updated, otherwise
+ // the cursor moves to the wrong position sometimes, when waiting for the query to come back
+ // from the ViewModel.
+ var queryInternal by remember { mutableStateOf("") }
+ val focusRequester = remember { FocusRequester() }
+ val focusManager = LocalFocusManager.current
+ LaunchedEffect(Unit) {
+ // TODO(b/272065229): Added minor delay so TalkBack can take focus of search box by default,
+ // remove when default a11y focus is fixed.
+ delay(50)
+ focusRequester.requestFocus()
+ }
+ SearchBar(
+ modifier =
+ Modifier.fillMaxWidth().focusRequester(focusRequester).onKeyEvent {
+ if (it.key == Key.DirectionDown) {
+ focusManager.moveFocus(FocusDirection.Down)
+ return@onKeyEvent true
+ } else {
+ return@onKeyEvent false
+ }
+ },
+ colors = SearchBarDefaults.colors(containerColor = MaterialTheme.colorScheme.surfaceBright),
+ query = queryInternal,
+ active = false,
+ onActiveChange = {},
+ onQueryChange = {
+ queryInternal = it
+ onQueryChange(it)
+ },
+ onSearch = {},
+ leadingIcon = { Icon(Icons.Default.Search, contentDescription = null) },
+ placeholder = { Text(text = stringResource(R.string.shortcut_helper_search_placeholder)) },
+ windowInsets = WindowInsets(top = 0.dp, bottom = 0.dp, left = 0.dp, right = 0.dp),
+ content = {},
+ )
+}
+
+@Composable
+private fun KeyboardSettings(horizontalPadding: Dp, verticalPadding: Dp, onClick: () -> Unit) {
+ ClickableShortcutSurface(
+ onClick = onClick,
+ shape = RoundedCornerShape(24.dp),
+ color = Color.Transparent,
+ modifier =
+ Modifier.semantics { role = Role.Button }.fillMaxWidth().padding(horizontal = 12.dp),
+ interactionsConfig =
+ InteractionsConfig(
+ hoverOverlayColor = MaterialTheme.colorScheme.onSurface,
+ hoverOverlayAlpha = 0.11f,
+ pressedOverlayColor = MaterialTheme.colorScheme.onSurface,
+ pressedOverlayAlpha = 0.15f,
+ focusOutlineColor = MaterialTheme.colorScheme.secondary,
+ focusOutlinePadding = 8.dp,
+ focusOutlineStrokeWidth = 3.dp,
+ surfaceCornerRadius = 24.dp,
+ focusOutlineCornerRadius = 28.dp,
+ hoverPadding = 8.dp,
+ ),
+ ) {
+ Row(verticalAlignment = Alignment.CenterVertically) {
+ Text(
+ text =
+ stringResource(id = R.string.shortcut_helper_keyboard_settings_buttons_label),
+ color = MaterialTheme.colorScheme.onSurfaceVariant,
+ fontSize = 16.sp,
+ style = MaterialTheme.typography.titleSmall,
+ modifier = Modifier.weight(1f),
+ )
+ Spacer(modifier = Modifier.width(8.dp))
+ Icon(
+ imageVector = Icons.AutoMirrored.Default.OpenInNew,
+ contentDescription = null,
+ tint = MaterialTheme.colorScheme.onSurfaceVariant,
+ modifier = Modifier.size(24.dp),
+ )
+ }
+ }
+}
+
+object ShortcutHelper {
+
+ object Shapes {
+ val singlePaneFirstCategory =
+ RoundedCornerShape(
+ topStart = Dimensions.SinglePaneCategoryCornerRadius,
+ topEnd = Dimensions.SinglePaneCategoryCornerRadius,
+ )
+ val singlePaneLastCategory =
+ RoundedCornerShape(
+ bottomStart = Dimensions.SinglePaneCategoryCornerRadius,
+ bottomEnd = Dimensions.SinglePaneCategoryCornerRadius,
+ )
+ val singlePaneSingleCategory =
+ RoundedCornerShape(size = Dimensions.SinglePaneCategoryCornerRadius)
+ val singlePaneCategory = RectangleShape
+ }
+
+ object Dimensions {
+ val SinglePaneCategoryCornerRadius = 28.dp
+ }
+
+ internal const val TAG = "ShortcutHelperUI"
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java
index 1d36076347bf..757464976261 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java
@@ -82,7 +82,7 @@ import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.keyguard.domain.interactor.KeyguardDismissInteractor;
import com.android.systemui.keyguard.domain.interactor.KeyguardEnabledInteractor;
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor;
-import com.android.systemui.keyguard.domain.interactor.KeyguardServiceLockNowInteractor;
+import com.android.systemui.keyguard.domain.interactor.KeyguardServiceShowLockscreenInteractor;
import com.android.systemui.keyguard.domain.interactor.KeyguardStateCallbackInteractor;
import com.android.systemui.keyguard.domain.interactor.KeyguardWakeDirectlyToGoneInteractor;
import com.android.systemui.keyguard.ui.binder.KeyguardSurfaceBehindParamsApplier;
@@ -331,7 +331,7 @@ public class KeyguardService extends Service {
return new FoldGracePeriodProvider();
}
};
- private final KeyguardServiceLockNowInteractor mKeyguardServiceLockNowInteractor;
+ private final KeyguardServiceShowLockscreenInteractor mKeyguardServiceShowLockscreenInteractor;
private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
@Inject
@@ -358,7 +358,7 @@ public class KeyguardService extends Service {
KeyguardDismissInteractor keyguardDismissInteractor,
Lazy<DeviceEntryInteractor> deviceEntryInteractorLazy,
KeyguardStateCallbackInteractor keyguardStateCallbackInteractor,
- KeyguardServiceLockNowInteractor keyguardServiceLockNowInteractor,
+ KeyguardServiceShowLockscreenInteractor keyguardServiceShowLockscreenInteractor,
KeyguardUpdateMonitor keyguardUpdateMonitor) {
super();
mKeyguardViewMediator = keyguardViewMediator;
@@ -391,7 +391,7 @@ public class KeyguardService extends Service {
mKeyguardEnabledInteractor = keyguardEnabledInteractor;
mKeyguardWakeDirectlyToGoneInteractor = keyguardWakeDirectlyToGoneInteractor;
mKeyguardDismissInteractor = keyguardDismissInteractor;
- mKeyguardServiceLockNowInteractor = keyguardServiceLockNowInteractor;
+ mKeyguardServiceShowLockscreenInteractor = keyguardServiceShowLockscreenInteractor;
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
}
@@ -671,9 +671,9 @@ public class KeyguardService extends Service {
checkPermission();
if (SceneContainerFlag.isEnabled()) {
- mDeviceEntryInteractorLazy.get().lockNow();
+ mDeviceEntryInteractorLazy.get().lockNow("doKeyguardTimeout");
} else if (KeyguardWmStateRefactor.isEnabled()) {
- mKeyguardServiceLockNowInteractor.onKeyguardServiceDoKeyguardTimeout(options);
+ mKeyguardServiceShowLockscreenInteractor.onKeyguardServiceDoKeyguardTimeout();
}
mKeyguardViewMediator.doKeyguardTimeout(options);
@@ -686,7 +686,12 @@ public class KeyguardService extends Service {
if (mFoldGracePeriodProvider.get().isEnabled()) {
mKeyguardInteractor.showDismissibleKeyguard();
}
- mKeyguardViewMediator.showDismissibleKeyguard();
+
+ if (KeyguardWmStateRefactor.isEnabled()) {
+ mKeyguardServiceShowLockscreenInteractor.onKeyguardServiceShowDismissibleKeyguard();
+ } else {
+ mKeyguardViewMediator.showDismissibleKeyguard();
+ }
if (SceneContainerFlag.isEnabled() && mFoldGracePeriodProvider.get().isEnabled()) {
mMainExecutor.execute(() -> mSceneInteractorLazy.get().changeScene(
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt
index df3633be4625..23be5c52ab5c 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt
@@ -27,14 +27,15 @@ import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryHapticsInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor
-import com.android.systemui.keyguard.domain.interactor.WallpaperFocalAreaInteractor
import com.android.systemui.keyguard.ui.binder.KeyguardBlueprintViewBinder
+import com.android.systemui.keyguard.ui.binder.KeyguardJankBinder
import com.android.systemui.keyguard.ui.binder.KeyguardRootViewBinder
import com.android.systemui.keyguard.ui.binder.LightRevealScrimViewBinder
import com.android.systemui.keyguard.ui.view.KeyguardIndicationArea
import com.android.systemui.keyguard.ui.view.KeyguardRootView
import com.android.systemui.keyguard.ui.viewmodel.KeyguardBlueprintViewModel
import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel
+import com.android.systemui.keyguard.ui.viewmodel.KeyguardJankViewModel
import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel
import com.android.systemui.keyguard.ui.viewmodel.KeyguardSmartspaceViewModel
import com.android.systemui.keyguard.ui.viewmodel.LightRevealScrimViewModel
@@ -51,6 +52,8 @@ import com.android.systemui.statusbar.VibratorHelper
import com.android.systemui.statusbar.phone.ScreenOffAnimationController
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager
import com.android.systemui.temporarydisplay.chipbar.ChipbarCoordinator
+import com.android.systemui.wallpapers.domain.interactor.WallpaperFocalAreaInteractor
+import com.android.systemui.wallpapers.ui.viewmodel.WallpaperFocalAreaViewModel
import com.android.systemui.wallpapers.ui.viewmodel.WallpaperViewModel
import com.google.android.msdl.domain.MSDLPlayer
import java.util.Optional
@@ -65,6 +68,7 @@ class KeyguardViewConfigurator
constructor(
private val keyguardRootView: KeyguardRootView,
private val keyguardRootViewModel: KeyguardRootViewModel,
+ private val keyguardJankViewModel: KeyguardJankViewModel,
private val screenOffAnimationController: ScreenOffAnimationController,
private val occludingAppDeviceEntryMessageViewModel: OccludingAppDeviceEntryMessageViewModel,
private val chipbarCoordinator: ChipbarCoordinator,
@@ -90,12 +94,15 @@ constructor(
@Main private val mainDispatcher: CoroutineDispatcher,
private val msdlPlayer: MSDLPlayer,
@KeyguardBlueprintLog private val blueprintLog: LogBuffer,
+ private val wallpaperFocalAreaViewModel: WallpaperFocalAreaViewModel,
) : CoreStartable {
private var rootViewHandle: DisposableHandle? = null
+ private var jankHandle: DisposableHandle? = null
override fun start() {
bindKeyguardRootView()
+ bindJankViewModel()
initializeViews()
if (lightRevealMigration()) {
@@ -143,17 +150,32 @@ constructor(
screenOffAnimationController,
shadeInteractor,
clockInteractor,
- wallpaperFocalAreaInteractor,
keyguardClockViewModel,
- interactionJankMonitor,
deviceEntryHapticsInteractor,
vibratorHelper,
falsingManager,
- keyguardViewMediator,
statusBarKeyguardViewManager,
mainDispatcher,
msdlPlayer,
blueprintLog,
+ wallpaperFocalAreaViewModel,
+ )
+ }
+
+ private fun bindJankViewModel() {
+ if (SceneContainerFlag.isEnabled) {
+ return
+ }
+
+ jankHandle?.dispose()
+ jankHandle =
+ KeyguardJankBinder.bind(
+ keyguardRootView,
+ keyguardJankViewModel,
+ interactionJankMonitor,
+ clockInteractor,
+ keyguardViewMediator,
+ mainDispatcher,
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
index 5baef915ea01..efa9c21f96b4 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@@ -16,6 +16,7 @@
package com.android.systemui.keyguard;
+import static android.app.KeyguardManager.LOCK_ON_USER_SWITCH_CALLBACK;
import static android.app.StatusBarManager.SESSION_KEYGUARD;
import static android.provider.Settings.Secure.LOCK_SCREEN_LOCK_AFTER_TIMEOUT;
import static android.provider.Settings.System.LOCKSCREEN_SOUNDS_ENABLED;
@@ -75,6 +76,7 @@ import android.os.Bundle;
import android.os.DeadObjectException;
import android.os.Handler;
import android.os.IBinder;
+import android.os.IRemoteCallback;
import android.os.Looper;
import android.os.Message;
import android.os.PowerManager;
@@ -116,6 +118,7 @@ import com.android.internal.jank.InteractionJankMonitor.Configuration;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.policy.IKeyguardDismissCallback;
import com.android.internal.policy.IKeyguardExitCallback;
+import com.android.internal.policy.IKeyguardService;
import com.android.internal.policy.IKeyguardStateCallback;
import com.android.internal.policy.ScreenDecorationsUtils;
import com.android.internal.statusbar.IStatusBarService;
@@ -137,6 +140,7 @@ import com.android.systemui.animation.ActivityTransitionAnimator;
import com.android.systemui.animation.TransitionAnimator;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.classifier.FalsingCollector;
+import com.android.systemui.communal.domain.interactor.CommunalSceneInteractor;
import com.android.systemui.communal.ui.viewmodel.CommunalTransitionViewModel;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dagger.qualifiers.UiBackground;
@@ -190,6 +194,8 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
import java.util.Objects;
import java.util.concurrent.Executor;
import java.util.function.Consumer;
@@ -252,6 +258,15 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
private static final String DELAYED_LOCK_PROFILE_ACTION =
"com.android.internal.policy.impl.PhoneWindowManager.DELAYED_LOCK";
+ /**
+ * String extra key passed in the bundle of {@link IKeyguardService#doKeyguardTimeout(Bundle)}
+ * if the value is {@code true}, indicates to keyguard that the device should show the
+ * glanceable hub upon locking. If the hub is already visible, the device should go to sleep.
+ *
+ * Mirrored from PhoneWindowManager which sends the extra.
+ */
+ public static final String EXTRA_TRIGGER_HUB = "extra_trigger_hub";
+
private static final String SYSTEMUI_PERMISSION = "com.android.systemui.permission.SELF";
// used for handler messages
@@ -271,6 +286,9 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
private static final int SYSTEM_READY = 18;
private static final int CANCEL_KEYGUARD_EXIT_ANIM = 19;
private static final int BOOT_INTERACTOR = 20;
+ private static final int BEFORE_USER_SWITCHING = 21;
+ private static final int USER_SWITCHING = 22;
+ private static final int USER_SWITCH_COMPLETE = 23;
/** Enum for reasons behind updating wakeAndUnlock state. */
@Retention(RetentionPolicy.SOURCE)
@@ -288,6 +306,8 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
int WAKE_AND_UNLOCK = 3;
}
+ private final List<LockNowCallback> mLockNowCallbacks = new ArrayList<>();
+
/**
* The default amount of time we stay awake (used for all key input)
*/
@@ -345,6 +365,12 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
private final ScreenOffAnimationController mScreenOffAnimationController;
private final Lazy<NotificationShadeDepthController> mNotificationShadeDepthController;
private final Lazy<ShadeController> mShadeController;
+ private final Lazy<CommunalSceneInteractor> mCommunalSceneInteractor;
+ /*
+ * Records the user id on request to go away, for validation when WM calls back to start the
+ * exit animation.
+ */
+ private int mGoingAwayRequestedForUserId = -1;
private boolean mSystemReady;
private boolean mBootCompleted;
@@ -352,7 +378,6 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
private boolean mShuttingDown;
private boolean mDozing;
private boolean mAnimatingScreenOff;
- private boolean mIgnoreDismiss;
private final Context mContext;
private final FalsingCollector mFalsingCollector;
@@ -615,41 +640,92 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
}
};
- KeyguardUpdateMonitorCallback mUpdateCallback = new KeyguardUpdateMonitorCallback() {
+ @VisibleForTesting
+ protected UserTracker.Callback mUserChangedCallback = new UserTracker.Callback() {
@Override
- public void onKeyguardVisibilityChanged(boolean visible) {
- synchronized (KeyguardViewMediator.this) {
- if (!visible && mPendingPinLock) {
- Log.i(TAG, "PIN lock requested, starting keyguard");
+ public void onBeforeUserSwitching(int newUser, @NonNull Runnable resultCallback) {
+ mHandler.sendMessage(mHandler.obtainMessage(BEFORE_USER_SWITCHING,
+ newUser, 0, resultCallback));
+ }
- // Bring the keyguard back in order to show the PIN lock
- mPendingPinLock = false;
- doKeyguardLocked(null);
- }
- }
+ @Override
+ public void onUserChanging(int newUser, @NonNull Context userContext,
+ @NonNull Runnable resultCallback) {
+ mHandler.sendMessage(mHandler.obtainMessage(USER_SWITCHING,
+ newUser, 0, resultCallback));
}
@Override
- public void onUserSwitching(int userId) {
- Log.d(TAG, String.format("onUserSwitching %d", userId));
- synchronized (KeyguardViewMediator.this) {
- mIgnoreDismiss = true;
- notifyTrustedChangedLocked(mUpdateMonitor.getUserHasTrust(userId));
- resetKeyguardDonePendingLocked();
+ public void onUserChanged(int newUser, Context userContext) {
+ mHandler.sendMessage(mHandler.obtainMessage(USER_SWITCH_COMPLETE,
+ newUser, 0));
+ }
+ };
+
+ /**
+ * Handle {@link #BEFORE_USER_SWITCHING}
+ */
+ @VisibleForTesting
+ void handleBeforeUserSwitching(int userId, Runnable resultCallback) {
+ Log.d(TAG, String.format("onBeforeUserSwitching %d", userId));
+ synchronized (KeyguardViewMediator.this) {
+ mHandler.removeMessages(DISMISS);
+ notifyTrustedChangedLocked(mUpdateMonitor.getUserHasTrust(userId));
+ resetKeyguardDonePendingLocked();
+ adjustStatusBarLocked();
+ mKeyguardStateController.notifyKeyguardGoingAway(false);
+ if (mLockPatternUtils.isSecure(userId) && !mShowing) {
+ doKeyguardLocked(null);
+ } else {
resetStateLocked();
- adjustStatusBarLocked();
}
+ resultCallback.run();
}
+ }
- @Override
- public void onUserSwitchComplete(int userId) {
- mIgnoreDismiss = false;
- Log.d(TAG, String.format("onUserSwitchComplete %d", userId));
+ /**
+ * Handle {@link #USER_SWITCHING}
+ */
+ @VisibleForTesting
+ void handleUserSwitching(int userId, Runnable resultCallback) {
+ Log.d(TAG, String.format("onUserSwitching %d", userId));
+ synchronized (KeyguardViewMediator.this) {
+ if (!mLockPatternUtils.isSecure(userId)) {
+ dismiss(null, null);
+ }
+ resultCallback.run();
+ }
+ }
+
+ /**
+ * Handle {@link #USER_SWITCH_COMPLETE}
+ */
+ @VisibleForTesting
+ void handleUserSwitchComplete(int userId) {
+ Log.d(TAG, String.format("onUserSwitchComplete %d", userId));
+ // Calling dismiss on a secure user will show the bouncer
+ if (mLockPatternUtils.isSecure(userId)) {
// We are calling dismiss with a delay as there are race conditions in some scenarios
// caused by async layout listeners
mHandler.postDelayed(() -> dismiss(null /* callback */, null /* message */), 500);
}
+ }
+
+ KeyguardUpdateMonitorCallback mUpdateCallback = new KeyguardUpdateMonitorCallback() {
+
+ @Override
+ public void onKeyguardVisibilityChanged(boolean visible) {
+ synchronized (KeyguardViewMediator.this) {
+ if (!visible && mPendingPinLock) {
+ Log.i(TAG, "PIN lock requested, starting keyguard");
+
+ // Bring the keyguard back in order to show the PIN lock
+ mPendingPinLock = false;
+ doKeyguardLocked(null);
+ }
+ }
+ }
@Override
public void onDeviceProvisioned() {
@@ -1492,6 +1568,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
SelectedUserInteractor selectedUserInteractor,
KeyguardInteractor keyguardInteractor,
KeyguardTransitionBootInteractor transitionBootInteractor,
+ Lazy<CommunalSceneInteractor> communalSceneInteractor,
WindowManagerOcclusionManager wmOcclusionManager) {
mContext = context;
mUserTracker = userTracker;
@@ -1533,6 +1610,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
mSelectedUserInteractor = selectedUserInteractor;
mKeyguardInteractor = keyguardInteractor;
mTransitionBootInteractor = transitionBootInteractor;
+ mCommunalSceneInteractor = communalSceneInteractor;
mStatusBarStateController = statusBarStateController;
statusBarStateController.addCallback(this);
@@ -1658,7 +1736,13 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
com.android.internal.R.anim.lock_screen_behind_enter);
mWorkLockController = new WorkLockActivityController(mContext, mUserTracker);
-
+ mUserTracker.addCallback(mUserChangedCallback, mContext.getMainExecutor());
+ // start() can be invoked in the middle of user switching, so check for this state and issue
+ // the call manually as that important event was missed.
+ if (mUserTracker.isUserSwitching()) {
+ handleBeforeUserSwitching(mUserTracker.getUserId(), () -> {});
+ handleUserSwitching(mUserTracker.getUserId(), () -> {});
+ }
mJavaAdapter.alwaysCollectFlow(
mWallpaperRepository.getWallpaperSupportsAmbientMode(),
this::setWallpaperSupportsAmbientMode);
@@ -1707,7 +1791,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
// System ready can be invoked in the middle of user switching, so check for this state
// and issue the call manually as that important event was missed.
if (mUserTracker.isUserSwitching()) {
- mUpdateCallback.onUserSwitching(mUserTracker.getUserId());
+ mUserChangedCallback.onUserChanging(mUserTracker.getUserId(), mContext, () -> {});
}
}
// Most services aren't available until the system reaches the ready state, so we
@@ -2341,12 +2425,30 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
* Enable the keyguard if the settings are appropriate.
*/
private void doKeyguardLocked(Bundle options) {
+ // If the power button behavior requests to open the glanceable hub.
+ if (options != null && options.getBoolean(EXTRA_TRIGGER_HUB)) {
+ // Set the hub to show immediately when the SysUI window shows, then continue to lock
+ // the device.
+ mCommunalSceneInteractor.get().showHubFromPowerButton();
+ }
+
+ int currentUserId = mSelectedUserInteractor.getSelectedUserId();
+ if (options != null && options.getBinder(LOCK_ON_USER_SWITCH_CALLBACK) != null) {
+ LockNowCallback callback = new LockNowCallback(currentUserId,
+ IRemoteCallback.Stub.asInterface(
+ options.getBinder(LOCK_ON_USER_SWITCH_CALLBACK)));
+ synchronized (mLockNowCallbacks) {
+ mLockNowCallbacks.add(callback);
+ }
+ Log.d(TAG, "LockNowCallback required for user: " + callback.mUserId);
+ }
+
// if another app is disabling us, don't show
if (!mExternallyEnabled
&& !mLockPatternUtils.isUserInLockdown(
mSelectedUserInteractor.getSelectedUserId())) {
if (DEBUG) Log.d(TAG, "doKeyguard: not showing because externally disabled");
-
+ notifyLockNowCallback();
mNeedToReshowWhenReenabled = true;
return;
}
@@ -2364,6 +2466,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
// We're removing "reset" in the refactor - "resetting" the views will happen
// as a reaction to the root cause of the "reset" signal.
if (KeyguardWmStateRefactor.isEnabled()) {
+ notifyLockNowCallback();
return;
}
@@ -2376,6 +2479,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
+ "previously hiding. It should be safe to short-circuit "
+ "here.");
resetStateLocked(/* hideBouncer= */ false);
+ notifyLockNowCallback();
return;
}
} else {
@@ -2402,6 +2506,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
Log.d(TAG, "doKeyguard: not showing because device isn't provisioned and the sim is"
+ " not locked or missing");
}
+ notifyLockNowCallback();
return;
}
@@ -2409,6 +2514,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
if (mLockPatternUtils.isLockScreenDisabled(mSelectedUserInteractor.getSelectedUserId())
&& !lockedOrMissing && !forceShow) {
if (DEBUG) Log.d(TAG, "doKeyguard: not showing because lockscreen is off");
+ notifyLockNowCallback();
return;
}
@@ -2456,11 +2562,6 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
}
public void dismiss(IKeyguardDismissCallback callback, CharSequence message) {
- if (mIgnoreDismiss) {
- android.util.Log.i(TAG, "Ignoring request to dismiss (user switch in progress?)");
- return;
- }
-
if (mKeyguardStateController.isKeyguardGoingAway()) {
Log.i(TAG, "Ignoring dismiss because we're already going away.");
return;
@@ -2478,7 +2579,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
}
private void resetStateLocked(boolean hideBouncer) {
- if (DEBUG) Log.e(TAG, "resetStateLocked");
+ if (DEBUG) Log.d(TAG, "resetStateLocked");
Message msg = mHandler.obtainMessage(RESET, hideBouncer ? 1 : 0, 0);
mHandler.sendMessage(msg);
}
@@ -2726,6 +2827,18 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
message = "BOOT_INTERACTOR";
handleBootInteractor();
break;
+ case BEFORE_USER_SWITCHING:
+ message = "BEFORE_USER_SWITCHING";
+ handleBeforeUserSwitching(msg.arg1, (Runnable) msg.obj);
+ break;
+ case USER_SWITCHING:
+ message = "USER_SWITCHING";
+ handleUserSwitching(msg.arg1, (Runnable) msg.obj);
+ break;
+ case USER_SWITCH_COMPLETE:
+ message = "USER_SWITCH_COMPLETE";
+ handleUserSwitchComplete(msg.arg1);
+ break;
}
Log.d(TAG, "KeyguardViewMediator queue processing message: " + message);
}
@@ -2867,6 +2980,9 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
mUiBgExecutor.execute(() -> {
Log.d(TAG, "updateActivityLockScreenState(" + showing + ", " + aodShowing + ", "
+ reason + ")");
+ if (showing) {
+ notifyLockNowCallback();
+ }
if (KeyguardWmStateRefactor.isEnabled()) {
// Handled in WmLockscreenVisibilityManager if flag is enabled.
@@ -2911,6 +3027,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
synchronized (KeyguardViewMediator.this) {
if (!mSystemReady) {
if (DEBUG) Log.d(TAG, "ignoring handleShow because system is not ready.");
+ notifyLockNowCallback();
return;
}
if (DEBUG) Log.d(TAG, "handleShow");
@@ -2969,12 +3086,11 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
}
}
- private final Runnable mKeyguardGoingAwayRunnable = new Runnable() {
+ final Runnable mKeyguardGoingAwayRunnable = new Runnable() {
@SuppressLint("MissingPermission")
@Override
public void run() {
Trace.beginSection("KeyguardViewMediator.mKeyGuardGoingAwayRunnable");
- Log.d(TAG, "keyguardGoingAwayRunnable");
mKeyguardViewControllerLazy.get().keyguardGoingAway();
int flags = 0;
@@ -3011,6 +3127,10 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
// Handled in WmLockscreenVisibilityManager if flag is enabled.
if (!KeyguardWmStateRefactor.isEnabled()) {
+ mGoingAwayRequestedForUserId = mSelectedUserInteractor.getSelectedUserId();
+ Log.d(TAG, "keyguardGoingAway requested for userId: "
+ + mGoingAwayRequestedForUserId);
+
// Don't actually hide the Keyguard at the moment, wait for window manager
// until it tells us it's safe to do so with startKeyguardExitAnimation.
// Posting to mUiOffloadThread to ensure that calls to ActivityTaskManager
@@ -3149,6 +3269,30 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
RemoteAnimationTarget[] nonApps, IRemoteAnimationFinishedCallback finishedCallback) {
Log.d(TAG, "handleStartKeyguardExitAnimation startTime=" + startTime
+ " fadeoutDuration=" + fadeoutDuration);
+ int currentUserId = mSelectedUserInteractor.getSelectedUserId();
+ if (!KeyguardWmStateRefactor.isEnabled() && mGoingAwayRequestedForUserId != currentUserId) {
+ Log.e(TAG, "Not executing handleStartKeyguardExitAnimationInner() due to userId "
+ + "mismatch. Requested: " + mGoingAwayRequestedForUserId + ", current: "
+ + currentUserId);
+ if (finishedCallback != null) {
+ // There will not execute animation, send a finish callback to ensure the remote
+ // animation won't hang there.
+ try {
+ finishedCallback.onAnimationFinished();
+ } catch (RemoteException e) {
+ Slog.w(TAG, "Failed to call onAnimationFinished", e);
+ }
+ }
+ mHiding = false;
+ if (mLockPatternUtils.isSecure(currentUserId)) {
+ doKeyguardLocked(null);
+ } else {
+ resetStateLocked();
+ dismiss(null, null);
+ }
+ return;
+ }
+
synchronized (KeyguardViewMediator.this) {
mIsKeyguardExitAnimationCanceled = false;
// Tell ActivityManager that we canceled the keyguard animation if
@@ -3393,6 +3537,13 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
* app transition before finishing the current RemoteAnimation, or the keyguard being re-shown).
*/
private void handleCancelKeyguardExitAnimation() {
+ if (!KeyguardWmStateRefactor.isEnabled()
+ && mGoingAwayRequestedForUserId != mSelectedUserInteractor.getSelectedUserId()) {
+ Log.e(TAG, "Setting pendingLock = true due to userId mismatch. Requested: "
+ + mGoingAwayRequestedForUserId + ", current: "
+ + mSelectedUserInteractor.getSelectedUserId());
+ setPendingLock(true);
+ }
if (mPendingLock) {
Log.d(TAG, "#handleCancelKeyguardExitAnimation: keyguard exit animation cancelled. "
+ "There's a pending lock, so we were cancelled because the device was locked "
@@ -3493,6 +3644,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
mSurfaceBehindRemoteAnimationRequested = true;
if (ENABLE_NEW_KEYGUARD_SHELL_TRANSITIONS && !KeyguardWmStateRefactor.isEnabled()) {
+ mGoingAwayRequestedForUserId = mSelectedUserInteractor.getSelectedUserId();
startKeyguardTransition(false /* keyguardShowing */, false /* aodShowing */);
return;
}
@@ -3513,6 +3665,9 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
if (!KeyguardWmStateRefactor.isEnabled()) {
// Handled in WmLockscreenVisibilityManager.
+ mGoingAwayRequestedForUserId = mSelectedUserInteractor.getSelectedUserId();
+ Log.d(TAG, "keyguardGoingAway requested for userId: "
+ + mGoingAwayRequestedForUserId);
mActivityTaskManagerService.keyguardGoingAway(flags);
}
} catch (RemoteException e) {
@@ -3594,12 +3749,13 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
// windows that appear on top, ever
int flags = StatusBarManager.DISABLE_NONE;
- // TODO (b/155663717) After restart, status bar will not properly hide home button
+ // TODO(b/155663717): After restart, status bar will not properly hide home button
// unless disable is called to show un-hide it once first
if (forceClearFlags) {
if (UserManager.isVisibleBackgroundUsersEnabled()
- && !mProcessWrapper.isSystemUser() && !mProcessWrapper.isForegroundUser()) {
- // TODO: b/341604160 - Support visible background users properly.
+ && !mProcessWrapper.isSystemUser()
+ && !mProcessWrapper.isForegroundUserOrProfile()) {
+ // TODO(b/341604160): Support visible background users properly.
if (DEBUG) {
Log.d(TAG, "Status bar manager is disabled for visible background users");
}
@@ -3635,8 +3791,9 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
if (!SceneContainerFlag.isEnabled()) {
if (UserManager.isVisibleBackgroundUsersEnabled()
- && !mProcessWrapper.isSystemUser() && !mProcessWrapper.isForegroundUser()) {
- // TODO: b/341604160 - Support visible background users properly.
+ && !mProcessWrapper.isSystemUser()
+ && !mProcessWrapper.isForegroundUserOrProfile()) {
+ // TODO(b/341604160): Support visible background users properly.
if (DEBUG) {
Log.d(TAG, "Status bar manager is disabled for visible background users");
}
@@ -3966,6 +4123,29 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
mUiBgExecutor.execute(mTrustManager::reportKeyguardShowingChanged);
}
+ private void notifyLockNowCallback() {
+ List<LockNowCallback> callbacks;
+ synchronized (mLockNowCallbacks) {
+ callbacks = new ArrayList<LockNowCallback>(mLockNowCallbacks);
+ mLockNowCallbacks.clear();
+ }
+ Iterator<LockNowCallback> iter = callbacks.listIterator();
+ while (iter.hasNext()) {
+ LockNowCallback callback = iter.next();
+ iter.remove();
+ if (callback.mUserId != mSelectedUserInteractor.getSelectedUserId()) {
+ Log.i(TAG, "Not notifying lockNowCallback due to user mismatch");
+ continue;
+ }
+ Log.i(TAG, "Notifying lockNowCallback");
+ try {
+ callback.mRemoteCallback.sendResult(null);
+ } catch (RemoteException e) {
+ Log.e(TAG, "Could not issue LockNowCallback sendResult", e);
+ }
+ }
+ }
+
private void notifyTrustedChangedLocked(boolean trusted) {
int size = mKeyguardStateCallbacks.size();
for (int i = size - 1; i >= 0; i--) {
@@ -4130,4 +4310,14 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
}
};
}
+
+ private class LockNowCallback {
+ final int mUserId;
+ final IRemoteCallback mRemoteCallback;
+
+ LockNowCallback(int userId, IRemoteCallback remoteCallback) {
+ mUserId = userId;
+ mRemoteCallback = remoteCallback;
+ }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java b/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java
index 905bbe226bb7..97ad2d7d36ff 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java
@@ -41,6 +41,7 @@ import com.android.systemui.bouncer.dagger.BouncerLoggerModule;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.classifier.FalsingCollector;
import com.android.systemui.classifier.FalsingModule;
+import com.android.systemui.communal.domain.interactor.CommunalSceneInteractor;
import com.android.systemui.communal.ui.viewmodel.CommunalTransitionViewModel;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
@@ -61,6 +62,7 @@ import com.android.systemui.keyguard.data.repository.KeyguardRepositoryModule;
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor;
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionBootInteractor;
import com.android.systemui.keyguard.domain.interactor.StartKeyguardTransitionModule;
+import com.android.systemui.keyguard.ui.binder.SideFpsProgressBarViewBinder;
import com.android.systemui.keyguard.ui.transitions.BlurConfig;
import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransitionModule;
import com.android.systemui.keyguard.ui.view.AlternateBouncerWindowViewBinder;
@@ -179,6 +181,7 @@ public interface KeyguardModule {
SelectedUserInteractor selectedUserInteractor,
KeyguardInteractor keyguardInteractor,
KeyguardTransitionBootInteractor transitionBootInteractor,
+ Lazy<CommunalSceneInteractor> communalSceneInteractor,
WindowManagerOcclusionManager windowManagerOcclusionManager) {
return new KeyguardViewMediator(
context,
@@ -230,6 +233,7 @@ public interface KeyguardModule {
selectedUserInteractor,
keyguardInteractor,
transitionBootInteractor,
+ communalSceneInteractor,
windowManagerOcclusionManager);
}
@@ -271,4 +275,10 @@ public interface KeyguardModule {
@IntoMap
@ClassKey(AlternateBouncerWindowViewBinder.class)
CoreStartable bindsAlternateBouncerWindowViewBinder(AlternateBouncerWindowViewBinder binder);
+
+ /** A silly lint rule made me write this, this is a self-documenting function! */
+ @Binds
+ @IntoMap
+ @ClassKey(SideFpsProgressBarViewBinder.class)
+ CoreStartable bindSideFpsProgressBarViewBinder(SideFpsProgressBarViewBinder impl);
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceLocalUserSelectionManager.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceLocalUserSelectionManager.kt
index 3968b49ee731..ad79177fdd76 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceLocalUserSelectionManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceLocalUserSelectionManager.kt
@@ -24,7 +24,6 @@ import com.android.systemui.backup.BackupHelper
import com.android.systemui.broadcast.BroadcastDispatcher
import com.android.systemui.common.coroutine.ChannelExt.trySendWithFailureLogging
import com.android.systemui.common.coroutine.ConflatedCallbackFlow.conflatedCallbackFlow
-import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.res.R
import com.android.systemui.settings.UserFileManager
@@ -49,7 +48,6 @@ constructor(
@ShadeDisplayAware private val context: Context,
private val userFileManager: UserFileManager,
private val userTracker: UserTracker,
- private val communalSettingsInteractor: CommunalSettingsInteractor,
broadcastDispatcher: BroadcastDispatcher,
) : KeyguardQuickAffordanceSelectionManager {
@@ -127,11 +125,7 @@ constructor(
override fun getSelections(): Map<String, List<String>> {
// If the custom shortcuts feature is not enabled, ignore prior selections and use defaults
- // TODO(b/383391342): remove isV2FlagEnabled check and just depend on the resource
- if (
- !(context.resources.getBoolean(R.bool.custom_lockscreen_shortcuts_enabled) ||
- communalSettingsInteractor.isV2FlagEnabled())
- ) {
+ if (!context.resources.getBoolean(R.bool.custom_lockscreen_shortcuts_enabled)) {
return defaults
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/BiometricSettingsRepository.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/BiometricSettingsRepository.kt
index dd2bec143292..0f5f31302670 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/BiometricSettingsRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/BiometricSettingsRepository.kt
@@ -55,6 +55,7 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.callbackFlow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filter
@@ -289,7 +290,7 @@ constructor(
}
private val areBiometricsEnabledForDeviceEntryFromUserSetting: Flow<Triple<Int, Boolean, Int>> =
- conflatedCallbackFlow {
+ callbackFlow {
val callback =
object : IBiometricEnabledOnKeyguardCallback.Stub() {
override fun onChanged(enabled: Boolean, userId: Int, modality: Int) {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardClockRepository.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardClockRepository.kt
index 9718e7508df2..a4b9135d708f 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardClockRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardClockRepository.kt
@@ -69,16 +69,11 @@ interface KeyguardClockRepository {
val previewClock: Flow<ClockController>
- /** top of notifications without bcsmartspace in small clock settings */
- val notificationDefaultTop: StateFlow<Float>
-
val clockEventController: ClockEventController
val shouldForceSmallClock: Boolean
fun setClockSize(size: ClockSize)
-
- fun setNotificationDefaultTop(top: Float)
}
@SysUISingleton
@@ -155,14 +150,6 @@ constructor(
clockRegistry.createCurrentClock()
}
- private val _notificationDefaultTop: MutableStateFlow<Float> = MutableStateFlow(0F)
-
- override val notificationDefaultTop: StateFlow<Float> = _notificationDefaultTop.asStateFlow()
-
- override fun setNotificationDefaultTop(top: Float) {
- _notificationDefaultTop.value = top
- }
-
override val shouldForceSmallClock: Boolean
get() =
featureFlags.isEnabled(Flags.LOCKSCREEN_ENABLE_LANDSCAPE) &&
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardQuickAffordanceRepository.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardQuickAffordanceRepository.kt
index aa28c5b90090..a9729eaad266 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardQuickAffordanceRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardQuickAffordanceRepository.kt
@@ -124,7 +124,7 @@ constructor(
init {
legacySettingSyncer.startSyncing()
- dumpManager.registerDumpable("KeyguardQuickAffordances", Dumpster())
+ dumpManager.registerNormalDumpable("KeyguardQuickAffordances", Dumpster())
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt
index 621cc4666d31..acb98ede3e80 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt
@@ -17,7 +17,6 @@
package com.android.systemui.keyguard.data.repository
import android.graphics.Point
-import android.graphics.RectF
import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.internal.widget.LockPatternUtils
import com.android.keyguard.KeyguardUpdateMonitor
@@ -79,6 +78,8 @@ interface KeyguardRepository {
val panelAlpha: MutableStateFlow<Float>
+ val zoomOut: StateFlow<Float>
+
/**
* Observable for whether the keyguard is showing.
*
@@ -253,13 +254,6 @@ interface KeyguardRepository {
*/
val isEncryptedOrLockdown: Flow<Boolean>
- /** The top of shortcut in screen, used by wallpaper to find remaining space in lockscreen */
- val shortcutAbsoluteTop: StateFlow<Float>
-
- val notificationStackAbsoluteBottom: StateFlow<Float>
-
- val wallpaperFocalAreaBounds: StateFlow<RectF>
-
/**
* Returns `true` if the keyguard is showing; `false` otherwise.
*
@@ -278,6 +272,9 @@ interface KeyguardRepository {
/** Temporary shim for fading out content when the brightness slider is used */
fun setPanelAlpha(alpha: Float)
+ /** Sets the zoom out scale of spatial model pushback from e.g. pulling down the shade. */
+ fun setZoomOut(zoomOutFromShadeRadius: Float)
+
/** Whether the device is actively dreaming */
fun setDreaming(isDreaming: Boolean)
@@ -323,16 +320,6 @@ interface KeyguardRepository {
* otherwise.
*/
fun isShowKeyguardWhenReenabled(): Boolean
-
- fun setShortcutAbsoluteTop(top: Float)
-
- /**
- * Set bottom of notifications from notification stack, and Magic Portrait will layout base on
- * this value
- */
- fun setNotificationStackAbsoluteBottom(bottom: Float)
-
- fun setWallpaperFocalAreaBounds(bounds: RectF)
}
/** Encapsulates application state for the keyguard. */
@@ -384,6 +371,7 @@ constructor(
override val onCameraLaunchDetected = MutableStateFlow(CameraLaunchSourceModel())
override val panelAlpha: MutableStateFlow<Float> = MutableStateFlow(1f)
+ override val zoomOut: MutableStateFlow<Float> = MutableStateFlow(0f)
override val topClippingBounds = MutableStateFlow<Int?>(null)
override val isKeyguardShowing: MutableStateFlow<Boolean> =
@@ -618,16 +606,6 @@ constructor(
private val _isQuickSettingsVisible = MutableStateFlow(false)
override val isQuickSettingsVisible: Flow<Boolean> = _isQuickSettingsVisible.asStateFlow()
- private val _shortcutAbsoluteTop = MutableStateFlow(0F)
- override val shortcutAbsoluteTop = _shortcutAbsoluteTop.asStateFlow()
-
- private val _notificationStackAbsoluteBottom = MutableStateFlow(0F)
- override val notificationStackAbsoluteBottom = _notificationStackAbsoluteBottom.asStateFlow()
-
- private val _wallpaperFocalAreaBounds = MutableStateFlow(RectF(0F, 0F, 0F, 0F))
- override val wallpaperFocalAreaBounds: StateFlow<RectF> =
- _wallpaperFocalAreaBounds.asStateFlow()
-
init {
val callback =
object : KeyguardStateController.Callback {
@@ -665,6 +643,10 @@ constructor(
panelAlpha.value = alpha
}
+ override fun setZoomOut(zoomOutFromShadeRadius: Float) {
+ zoomOut.value = zoomOutFromShadeRadius
+ }
+
override fun setDreaming(isDreaming: Boolean) {
this.isDreaming.value = isDreaming
}
@@ -698,18 +680,6 @@ constructor(
}
}
- override fun setShortcutAbsoluteTop(top: Float) {
- _shortcutAbsoluteTop.value = top
- }
-
- override fun setNotificationStackAbsoluteBottom(bottom: Float) {
- _notificationStackAbsoluteBottom.value = bottom
- }
-
- override fun setWallpaperFocalAreaBounds(bounds: RectF) {
- _wallpaperFocalAreaBounds.value = bounds
- }
-
private fun dozeMachineStateToModel(state: DozeMachine.State): DozeStateModel {
return when (state) {
DozeMachine.State.UNINITIALIZED -> DozeStateModel.UNINITIALIZED
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepositoryModule.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepositoryModule.kt
index 3956901aaa88..4411437188f2 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepositoryModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepositoryModule.kt
@@ -16,33 +16,32 @@
package com.android.systemui.keyguard.data.repository
-import com.android.systemui.CoreStartable
import com.android.systemui.bouncer.data.repository.BouncerMessageRepository
import com.android.systemui.bouncer.data.repository.BouncerMessageRepositoryImpl
import com.android.systemui.bouncer.data.repository.KeyguardBouncerRepository
import com.android.systemui.bouncer.data.repository.KeyguardBouncerRepositoryImpl
-import com.android.systemui.bouncer.domain.interactor.BouncerMessageAuditLogger
-import com.android.systemui.keyguard.ui.binder.SideFpsProgressBarViewBinder
+import com.android.systemui.keyguard.shared.transition.KeyguardTransitionAnimationCallback
+import com.android.systemui.keyguard.shared.transition.KeyguardTransitionAnimationCallbackDelegator
+import com.android.systemui.wallpapers.data.repository.WallpaperFocalAreaRepository
+import com.android.systemui.wallpapers.data.repository.WallpaperFocalAreaRepositoryImpl
import dagger.Binds
import dagger.Module
-import dagger.multibindings.ClassKey
-import dagger.multibindings.IntoMap
@Module
interface KeyguardRepositoryModule {
@Binds fun keyguardRepository(impl: KeyguardRepositoryImpl): KeyguardRepository
@Binds
- @IntoMap
- @ClassKey(SideFpsProgressBarViewBinder::class)
- fun bindSideFpsProgressBarViewBinder(viewBinder: SideFpsProgressBarViewBinder): CoreStartable
-
- @Binds
fun keyguardSurfaceBehindRepository(
impl: KeyguardSurfaceBehindRepositoryImpl
): KeyguardSurfaceBehindRepository
@Binds
+ fun keyguardTransitionAnimationCallback(
+ impl: KeyguardTransitionAnimationCallbackDelegator
+ ): KeyguardTransitionAnimationCallback
+
+ @Binds
fun keyguardTransitionRepository(
impl: KeyguardTransitionRepositoryImpl
): KeyguardTransitionRepository
@@ -68,11 +67,6 @@ interface KeyguardRepositoryModule {
@Binds
fun bouncerMessageRepository(impl: BouncerMessageRepositoryImpl): BouncerMessageRepository
- @Binds
- @IntoMap
- @ClassKey(BouncerMessageAuditLogger::class)
- fun bind(impl: BouncerMessageAuditLogger): CoreStartable
-
@Binds fun trustRepository(impl: TrustRepositoryImpl): TrustRepository
@Binds fun keyguardClockRepository(impl: KeyguardClockRepositoryImpl): KeyguardClockRepository
@@ -81,4 +75,9 @@ interface KeyguardRepositoryModule {
fun keyguardSmartspaceRepository(
impl: KeyguardSmartspaceRepositoryImpl
): KeyguardSmartspaceRepository
+
+ @Binds
+ fun bindWallpaperFocalAreaRepository(
+ impl: WallpaperFocalAreaRepositoryImpl
+ ): WallpaperFocalAreaRepository
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt
index 24f2493c626d..2a1cb12c153e 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt
@@ -33,6 +33,7 @@ import com.android.systemui.keyguard.shared.model.TransitionInfo
import com.android.systemui.keyguard.shared.model.TransitionModeOnCanceled
import com.android.systemui.keyguard.shared.model.TransitionState
import com.android.systemui.keyguard.shared.model.TransitionStep
+import com.android.systemui.keyguard.shared.transition.KeyguardTransitionAnimationCallback
import java.util.UUID
import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher
@@ -131,7 +132,10 @@ interface KeyguardTransitionRepository {
@SysUISingleton
class KeyguardTransitionRepositoryImpl
@Inject
-constructor(@Main val mainDispatcher: CoroutineDispatcher) : KeyguardTransitionRepository {
+constructor(
+ @Main private val mainDispatcher: CoroutineDispatcher,
+ private val transitionCallback: KeyguardTransitionAnimationCallback,
+) : KeyguardTransitionRepository {
/**
* Each transition between [KeyguardState]s will have an associated Flow. In order to collect
* these events, clients should call [transition].
@@ -252,16 +256,19 @@ constructor(@Main val mainDispatcher: CoroutineDispatcher) : KeyguardTransitionR
animatorListener =
object : AnimatorListenerAdapter() {
override fun onAnimationStart(animation: Animator) {
+ transitionCallback.onAnimationStarted(info.from, info.to)
emitTransition(
TransitionStep(info, startingValue, TransitionState.STARTED)
)
}
override fun onAnimationCancel(animation: Animator) {
+ transitionCallback.onAnimationCanceled(info.from, info.to)
endAnimation(lastStep.value, TransitionState.CANCELED)
}
override fun onAnimationEnd(animation: Animator) {
+ transitionCallback.onAnimationEnded(info.from, info.to)
endAnimation(1f, TransitionState.FINISHED)
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractor.kt
index 4291181d8336..f85a23c1f091 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractor.kt
@@ -75,6 +75,7 @@ constructor(
override fun start() {
listenForDozingToAny()
+ listenForDozingToDreaming()
listenForDozingToGoneViaBiometrics()
listenForWakeFromDozing()
listenForTransitionToCamera(scope, keyguardInteractor)
@@ -117,6 +118,18 @@ constructor(
@OptIn(FlowPreview::class)
@SuppressLint("MissingPermission")
+ private fun listenForDozingToDreaming() {
+ scope.launch {
+ keyguardInteractor.isAbleToDream
+ .filterRelevantKeyguardStateAnd { isAbleToDream -> isAbleToDream }
+ .collect {
+ startTransitionTo(KeyguardState.DREAMING, ownerReason = "isAbleToDream")
+ }
+ }
+ }
+
+ @OptIn(FlowPreview::class)
+ @SuppressLint("MissingPermission")
private fun listenForDozingToAny() {
if (KeyguardWmStateRefactor.isEnabled) {
return
@@ -268,6 +281,7 @@ constructor(
interpolator = Interpolators.LINEAR
duration =
when (toState) {
+ KeyguardState.DREAMING -> TO_DREAMING_DURATION
KeyguardState.GONE -> TO_GONE_DURATION
KeyguardState.GLANCEABLE_HUB -> TO_GLANCEABLE_HUB_DURATION
KeyguardState.LOCKSCREEN -> TO_LOCKSCREEN_DURATION
@@ -281,6 +295,7 @@ constructor(
companion object {
const val TAG = "FromDozingTransitionInteractor"
private val DEFAULT_DURATION = 500.milliseconds
+ val TO_DREAMING_DURATION = 300.milliseconds
val TO_GLANCEABLE_HUB_DURATION = DEFAULT_DURATION
val TO_GONE_DURATION = DEFAULT_DURATION
val TO_LOCKSCREEN_DURATION = DEFAULT_DURATION
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt
index bd9836f3489d..ca6a7907a8eb 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt
@@ -34,9 +34,6 @@ import javax.inject.Inject
import kotlin.time.Duration.Companion.milliseconds
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.flow.distinctUntilChanged
-import kotlinx.coroutines.flow.filter
-import com.android.app.tracing.coroutines.launchTraced as launch
@SysUISingleton
class FromGoneTransitionInteractor
@@ -52,7 +49,7 @@ constructor(
powerInteractor: PowerInteractor,
private val communalSceneInteractor: CommunalSceneInteractor,
keyguardOcclusionInteractor: KeyguardOcclusionInteractor,
- private val keyguardLockWhileAwakeInteractor: KeyguardLockWhileAwakeInteractor,
+ private val keyguardShowWhileAwakeInteractor: KeyguardShowWhileAwakeInteractor,
) :
TransitionInteractor(
fromState = KeyguardState.GONE,
@@ -101,7 +98,7 @@ constructor(
private fun listenForGoneToLockscreenOrHubOrOccluded() {
if (KeyguardWmStateRefactor.isEnabled) {
scope.launch {
- keyguardLockWhileAwakeInteractor.lockWhileAwakeEvents
+ keyguardShowWhileAwakeInteractor.showWhileAwakeEvents
.filterRelevantKeyguardState()
.sample(communalSceneInteractor.isIdleOnCommunalNotEditMode, ::Pair)
.collect { (lockReason, idleOnCommunal) ->
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardClockInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardClockInteractor.kt
index ab5fdd608d03..96e05cb7cd63 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardClockInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardClockInteractor.kt
@@ -37,6 +37,7 @@ import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.statusbar.notification.domain.interactor.ActiveNotificationsInteractor
import com.android.systemui.statusbar.notification.domain.interactor.HeadsUpNotificationInteractor
import com.android.systemui.util.kotlin.combine
+import com.android.systemui.wallpapers.domain.interactor.WallpaperFocalAreaInteractor
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
@@ -62,6 +63,7 @@ constructor(
headsUpNotificationInteractor: HeadsUpNotificationInteractor,
@Application private val applicationScope: CoroutineScope,
val keyguardClockRepository: KeyguardClockRepository,
+ private val wallpaperFocalAreaInteractor: WallpaperFocalAreaInteractor,
) {
private val isOnAod: Flow<Boolean> =
keyguardTransitionInteractor.currentKeyguardState.map { it == KeyguardState.AOD }
@@ -175,6 +177,14 @@ constructor(
}
}
+ fun handleFidgetTap(x: Float, y: Float) {
+ if (selectedClockSize.value == ClockSizeSetting.DYNAMIC) {
+ clockEventController.handleFidgetTap(x, y)
+ } else {
+ wallpaperFocalAreaInteractor.setTapPosition(x, y)
+ }
+ }
+
fun animateFoldToAod(foldFraction: Float) {
clock?.let { clock ->
clock.smallClock.animations.fold(foldFraction)
@@ -183,6 +193,6 @@ constructor(
}
fun setNotificationStackDefaultTop(top: Float) {
- keyguardClockRepository.setNotificationDefaultTop(top)
+ wallpaperFocalAreaInteractor.setNotificationDefaultTop(top)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
index 3739d17da6c4..f84d29f57cc7 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
@@ -52,6 +52,7 @@ import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.shade.data.repository.ShadeRepository
import com.android.systemui.util.kotlin.Utils.Companion.sample as sampleCombine
import com.android.systemui.util.kotlin.sample
+import com.android.systemui.wallpapers.data.repository.WallpaperFocalAreaRepository
import javax.inject.Inject
import javax.inject.Provider
import kotlinx.coroutines.CoroutineScope
@@ -85,6 +86,7 @@ class KeyguardInteractor
constructor(
private val repository: KeyguardRepository,
bouncerRepository: KeyguardBouncerRepository,
+ private val wallpaperFocalAreaRepository: WallpaperFocalAreaRepository,
@ShadeDisplayAware configurationInteractor: ConfigurationInteractor,
shadeRepository: ShadeRepository,
private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
@@ -337,6 +339,9 @@ constructor(
@Deprecated("SceneContainer uses NotificationStackAppearanceInteractor")
val panelAlpha: StateFlow<Float> = repository.panelAlpha.asStateFlow()
+ /** Sets the zoom out scale of spatial model pushback from e.g. pulling down the shade. */
+ val zoomOut: StateFlow<Float> = repository.zoomOut
+
/**
* When the lockscreen can be dismissed, emit an alpha value as the user swipes up. This is
* useful just before the code commits to moving to GONE.
@@ -475,6 +480,10 @@ constructor(
repository.setPanelAlpha(alpha)
}
+ fun setZoomOut(zoomOutFromShadeRadius: Float) {
+ repository.setZoomOut(zoomOutFromShadeRadius)
+ }
+
fun setAnimateDozingTransitions(animate: Boolean) {
repository.setAnimateDozingTransitions(animate)
}
@@ -525,7 +534,7 @@ constructor(
}
fun setShortcutAbsoluteTop(top: Float) {
- repository.setShortcutAbsoluteTop(top)
+ wallpaperFocalAreaRepository.setShortcutAbsoluteTop(top)
}
fun setIsKeyguardGoingAway(isGoingAway: Boolean) {
@@ -533,7 +542,7 @@ constructor(
}
fun setNotificationStackAbsoluteBottom(bottom: Float) {
- repository.setNotificationStackAbsoluteBottom(bottom)
+ wallpaperFocalAreaRepository.setNotificationStackAbsoluteBottom(bottom)
}
suspend fun hydrateTableLogBuffer(tableLogBuffer: TableLogBuffer) {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractor.kt
index 898b68d0f4b4..65ceb88ef73b 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractor.kt
@@ -29,7 +29,6 @@ import com.android.internal.widget.LockPatternUtils
import com.android.keyguard.logging.KeyguardQuickAffordancesLogger
import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.animation.Expandable
-import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.devicepolicy.areKeyguardShortcutsDisabled
@@ -90,7 +89,6 @@ constructor(
private val devicePolicyManager: DevicePolicyManager,
private val dockManager: DockManager,
private val biometricSettingsRepository: BiometricSettingsRepository,
- private val communalSettingsInteractor: CommunalSettingsInteractor,
private val accessibilityManager: AccessibilityManager,
@Background private val backgroundDispatcher: CoroutineDispatcher,
@ShadeDisplayAware private val appContext: Context,
@@ -467,10 +465,7 @@ constructor(
name = Contract.FlagsTable.FLAG_NAME_CUSTOM_LOCK_SCREEN_QUICK_AFFORDANCES_ENABLED,
value =
!isFeatureDisabledByDevicePolicy() &&
- // TODO(b/383391342): remove isV2FlagEnabled check once trunkfood is reached
- (appContext.resources.getBoolean(
- R.bool.custom_lockscreen_shortcuts_enabled
- ) || communalSettingsInteractor.isV2FlagEnabled()),
+ appContext.resources.getBoolean(R.bool.custom_lockscreen_shortcuts_enabled),
),
KeyguardPickerFlag(
name = Contract.FlagsTable.FLAG_NAME_CUSTOM_CLOCKS_ENABLED,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardServiceLockNowInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardServiceShowLockscreenInteractor.kt
index 9ed53ea74316..b55bb383c308 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardServiceLockNowInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardServiceShowLockscreenInteractor.kt
@@ -17,7 +17,6 @@
package com.android.systemui.keyguard.domain.interactor
import android.annotation.SuppressLint
-import android.os.Bundle
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import javax.inject.Inject
@@ -26,48 +25,53 @@ import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.launch
/**
- * Emitted when we receive a [KeyguardServiceLockNowInteractor.onKeyguardServiceDoKeyguardTimeout]
- * call.
- */
-data class KeyguardLockNowEvent(val options: Bundle?)
-
-/**
- * Logic around requests by [KeyguardService] to lock the device right now, even though the device
- * is awake and not going to sleep.
+ * Logic around requests by [KeyguardService] to show keyguard right now, even though the device is
+ * awake and not going to sleep.
*
- * This can happen if WM#lockNow() is called, or if the screen is forced to stay awake but the lock
- * timeout elapses.
+ * This can happen if WM#lockNow() is called, if KeyguardService#showDismissibleKeyguard is called
+ * because we're folding with "continue using apps on fold" set to "swipe up to continue", or if the
+ * screen is forced to stay awake but the lock timeout elapses.
*
* This is not the only way for the device to lock while the screen is on. The other cases, which do
- * not directly involve [KeyguardService], are handled in [KeyguardLockWhileAwakeInteractor].
+ * not directly involve [KeyguardService], are handled in [KeyguardShowWhileAwakeInteractor].
*/
@SysUISingleton
-class KeyguardServiceLockNowInteractor
+class KeyguardServiceShowLockscreenInteractor
@Inject
constructor(@Background val backgroundScope: CoroutineScope) {
/**
- * Emits whenever [KeyguardService] receives a call that indicates we should lock the device
+ * Emits whenever [KeyguardService] receives a call that indicates we should show the lockscreen
* right now, even though the device is awake and not going to sleep.
*
- * WARNING: This is only one of multiple reasons the device might need to lock while not going
+ * WARNING: This is only one of multiple reasons the keyguard might need to show while not going
* to sleep. Unless you're dealing with keyguard internals that specifically need to know that
- * we're locking due to a call to doKeyguardTimeout, use
- * [KeyguardLockWhileAwakeInteractor.lockWhileAwakeEvents].
+ * we're locking due to a call to doKeyguardTimeout or showDismissibleKeyguard, use
+ * [KeyguardShowWhileAwakeInteractor.showWhileAwakeEvents].
*
* This is fundamentally an event flow, hence the SharedFlow.
*/
@SuppressLint("SharedFlowCreation")
- val lockNowEvents: MutableSharedFlow<KeyguardLockNowEvent> = MutableSharedFlow()
+ val showNowEvents: MutableSharedFlow<ShowWhileAwakeReason> = MutableSharedFlow()
/**
* Called by [KeyguardService] when it receives a doKeyguardTimeout() call. This indicates that
* the device locked while the screen was on.
- *
- * [options] appears to be no longer used, but we'll keep it in this interactor in case that
- * turns out not to be true.
*/
- fun onKeyguardServiceDoKeyguardTimeout(options: Bundle?) {
- backgroundScope.launch { lockNowEvents.emit(KeyguardLockNowEvent(options = options)) }
+ fun onKeyguardServiceDoKeyguardTimeout() {
+ backgroundScope.launch {
+ showNowEvents.emit(ShowWhileAwakeReason.KEYGUARD_TIMEOUT_WHILE_SCREEN_ON)
+ }
+ }
+
+ /**
+ * Called by [KeyguardService] when it receives a showDismissibleKeyguard() call. This indicates
+ * that the device was folded with settings configured to show a dismissible keyguard on the
+ * outer display.
+ */
+ fun onKeyguardServiceShowDismissibleKeyguard() {
+ backgroundScope.launch {
+ showNowEvents.emit(ShowWhileAwakeReason.FOLDED_WITH_SWIPE_UP_TO_CONTINUE)
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardLockWhileAwakeInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardShowWhileAwakeInteractor.kt
index ce84e71a3562..a8000a568a6a 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardLockWhileAwakeInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardShowWhileAwakeInteractor.kt
@@ -26,8 +26,11 @@ import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.merge
-/** The reason we're locking while awake, used for logging. */
-enum class LockWhileAwakeReason(private val logReason: String) {
+/** The reason we're showing lockscreen while awake, used for logging. */
+enum class ShowWhileAwakeReason(private val logReason: String) {
+ FOLDED_WITH_SWIPE_UP_TO_CONTINUE(
+ "Folded with continue using apps on fold set to 'swipe up to continue'."
+ ),
LOCKDOWN("Lockdown initiated."),
KEYGUARD_REENABLED(
"Keyguard was re-enabled. We weren't unlocked when it was disabled, " +
@@ -43,60 +46,67 @@ enum class LockWhileAwakeReason(private val logReason: String) {
}
/**
- * Logic around cases where the device locks while still awake (transitioning from GONE ->
+ * Logic around cases where the we show the lockscreen while still awake (transition from GONE ->
* LOCKSCREEN), vs. the more common cases of a power button press or screen timeout, which result in
* the device going to sleep.
*
+ * This does not necessarily mean we lock the device (which does not happen if showing the
+ * lockscreen is triggered by [KeyguardService.showDismissibleKeyguard]). We'll show keyguard here
+ * and authentication logic will decide if that keyguard is dismissible or not.
+ *
* This is possible in the following situations:
* - The user initiates lockdown from the power menu.
* - Theft detection, etc. has requested lockdown.
* - The keyguard was disabled while visible, and has now been re-enabled, so it's re-showing.
* - Someone called WM#lockNow().
* - The screen timed out, but an activity with FLAG_ALLOW_LOCK_WHILE_SCREEN_ON is on top.
+ * - A foldable is folded with "Continue using apps on fold" set to "Swipe up to continue" (if set
+ * to "never", then lockscreen will be shown when the device goes to sleep, which is not tnohe
+ * concern of this interactor).
*/
@SysUISingleton
-class KeyguardLockWhileAwakeInteractor
+class KeyguardShowWhileAwakeInteractor
@Inject
constructor(
biometricSettingsRepository: BiometricSettingsRepository,
keyguardEnabledInteractor: KeyguardEnabledInteractor,
- keyguardServiceLockNowInteractor: KeyguardServiceLockNowInteractor,
+ keyguardServiceShowLockscreenInteractor: KeyguardServiceShowLockscreenInteractor,
) {
/** Emits whenever the current user is in lockdown mode. */
- private val inLockdown: Flow<LockWhileAwakeReason> =
+ private val inLockdown: Flow<ShowWhileAwakeReason> =
biometricSettingsRepository.isCurrentUserInLockdown
.distinctUntilChanged()
.filter { inLockdown -> inLockdown }
- .map { LockWhileAwakeReason.LOCKDOWN }
+ .map { ShowWhileAwakeReason.LOCKDOWN }
/**
* Emits whenever the keyguard is re-enabled, and we need to return to lockscreen due to the
* device being locked when the keyguard was originally disabled.
*/
- private val keyguardReenabled: Flow<LockWhileAwakeReason> =
+ private val keyguardReenabled: Flow<ShowWhileAwakeReason> =
keyguardEnabledInteractor.isKeyguardEnabled
.filter { enabled -> enabled }
.sample(keyguardEnabledInteractor.showKeyguardWhenReenabled)
.filter { reshow -> reshow }
- .map { LockWhileAwakeReason.KEYGUARD_REENABLED }
+ .map { ShowWhileAwakeReason.KEYGUARD_REENABLED }
- /** Emits whenever we should lock while the screen is on, for any reason. */
- val lockWhileAwakeEvents: Flow<LockWhileAwakeReason> =
+ /** Emits whenever we should show lockscreen while the screen is on, for any reason. */
+ val showWhileAwakeEvents: Flow<ShowWhileAwakeReason> =
merge(
// We're in lockdown, and the keyguard is enabled. If the keyguard is disabled, the
// lockdown button is hidden in the UI, but it's still possible to trigger lockdown in
// tests.
inLockdown
.filter { keyguardEnabledInteractor.isKeyguardEnabledAndNotSuppressed() }
- .map { LockWhileAwakeReason.LOCKDOWN },
+ .map { ShowWhileAwakeReason.LOCKDOWN },
// The keyguard was re-enabled, and it was showing when it was originally disabled.
// Tests currently expect that if the keyguard is re-enabled, it will show even if it's
// suppressed, so we don't check for isKeyguardEnabledAndNotSuppressed() on this flow.
- keyguardReenabled.map { LockWhileAwakeReason.KEYGUARD_REENABLED },
- // KeyguardService says we need to lock now, and the lockscreen is enabled.
- keyguardServiceLockNowInteractor.lockNowEvents
- .filter { keyguardEnabledInteractor.isKeyguardEnabledAndNotSuppressed() }
- .map { LockWhileAwakeReason.KEYGUARD_TIMEOUT_WHILE_SCREEN_ON },
+ keyguardReenabled.map { ShowWhileAwakeReason.KEYGUARD_REENABLED },
+ // KeyguardService says we need to show now, and the lockscreen is enabled.
+ keyguardServiceShowLockscreenInteractor.showNowEvents.filter {
+ keyguardEnabledInteractor.isKeyguardEnabledAndNotSuppressed()
+ },
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardWakeDirectlyToGoneInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardWakeDirectlyToGoneInteractor.kt
index 3bdc32dce6f5..ef1fe49372b2 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardWakeDirectlyToGoneInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardWakeDirectlyToGoneInteractor.kt
@@ -52,6 +52,7 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.distinctUntilChangedBy
+import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.onStart
@@ -89,7 +90,7 @@ constructor(
private val systemSettings: SystemSettings,
private val selectedUserInteractor: SelectedUserInteractor,
keyguardEnabledInteractor: KeyguardEnabledInteractor,
- keyguardServiceLockNowInteractor: KeyguardServiceLockNowInteractor,
+ keyguardServiceShowLockscreenInteractor: KeyguardServiceShowLockscreenInteractor,
keyguardInteractor: KeyguardInteractor,
) {
@@ -100,7 +101,15 @@ constructor(
* depend on that behavior, so for now, we'll replicate it here.
*/
private val shouldSuppressKeyguard =
- merge(powerInteractor.isAwake, keyguardServiceLockNowInteractor.lockNowEvents)
+ merge(
+ powerInteractor.isAwake,
+ // Update only when doKeyguardTimeout is called, not on fold or other events, to
+ // match
+ // pre-existing logic.
+ keyguardServiceShowLockscreenInteractor.showNowEvents.filter {
+ it == ShowWhileAwakeReason.KEYGUARD_TIMEOUT_WHILE_SCREEN_ON
+ },
+ )
.map { keyguardEnabledInteractor.isKeyguardSuppressed() }
// Default to false, so that flows that combine this one emit prior to the first
// wakefulness emission.
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/LightRevealScrimInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/LightRevealScrimInteractor.kt
index 8429c23d2018..0b116ded42da 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/LightRevealScrimInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/LightRevealScrimInteractor.kt
@@ -15,9 +15,11 @@
*/
package com.android.systemui.keyguard.domain.interactor
+import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.keyguard.logging.ScrimLogger
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.keyguard.data.repository.DEFAULT_REVEAL_DURATION
import com.android.systemui.keyguard.data.repository.LightRevealScrimRepository
import com.android.systemui.keyguard.shared.model.Edge
@@ -31,12 +33,13 @@ import com.android.systemui.util.kotlin.BooleanFlowOperators.anyOf
import com.android.systemui.util.kotlin.sample
import dagger.Lazy
import javax.inject.Inject
+import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.flowOf
-import com.android.app.tracing.coroutines.launchTraced as launch
+import kotlinx.coroutines.flow.flowOn
@SysUISingleton
class LightRevealScrimInteractor
@@ -47,6 +50,7 @@ constructor(
@Application private val scope: CoroutineScope,
private val scrimLogger: ScrimLogger,
private val powerInteractor: Lazy<PowerInteractor>,
+ @Background backgroundDispatcher: CoroutineDispatcher,
) {
init {
listenForStartedKeyguardTransitionStep()
@@ -113,6 +117,7 @@ constructor(
repository.maxAlpha
}
}
+ .flowOn(backgroundDispatcher)
val revealAmount =
repository.revealAmount.filter {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/StatusBarDisableFlagsInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/StatusBarDisableFlagsInteractor.kt
index d6a110a8fd55..c1e1259bf145 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/StatusBarDisableFlagsInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/StatusBarDisableFlagsInteractor.kt
@@ -22,7 +22,10 @@ import android.content.Context
import android.os.Binder
import android.os.IBinder
import android.os.RemoteException
+import android.os.UserManager
import android.provider.DeviceConfig
+import android.util.Log
+import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.internal.config.sysui.SystemUiDeviceConfigFlags
import com.android.internal.statusbar.IStatusBarService
import com.android.systemui.CoreStartable
@@ -39,6 +42,7 @@ import com.android.systemui.navigation.domain.interactor.NavigationInteractor
import com.android.systemui.power.domain.interactor.PowerInteractor
import com.android.systemui.power.shared.model.WakeSleepReason
import com.android.systemui.power.shared.model.WakefulnessModel
+import com.android.systemui.process.ProcessWrapper
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.user.domain.interactor.SelectedUserInteractor
@@ -49,9 +53,10 @@ import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.map
-import com.android.app.tracing.coroutines.launchTraced as launch
import kotlinx.coroutines.withContext
+private val TAG = StatusBarDisableFlagsInteractor::class.simpleName
+
/**
* Logic around StatusBarService#disableForUser, which is used to disable the home and recents
* button in certain device states.
@@ -67,6 +72,7 @@ constructor(
@Background private val backgroundDispatcher: CoroutineDispatcher,
private val deviceEntryFaceAuthInteractor: DeviceEntryFaceAuthInteractor,
private val statusBarService: IStatusBarService,
+ private val processWrapper: ProcessWrapper,
keyguardTransitionInteractor: KeyguardTransitionInteractor,
selectedUserInteractor: SelectedUserInteractor,
deviceConfigInteractor: DeviceConfigInteractor,
@@ -115,7 +121,15 @@ constructor(
var flags = StatusBarManager.DISABLE_NONE
if (hideHomeAndRecentsForBouncer || (isKeyguardShowing && !isOccluded)) {
- if (!isShowHomeOverLockscreen || !isGesturalMode) {
+ // Hide the home button/nav handle if we're on keyguard and either:
+ // - Going to AOD, in which case the handle should animate away.
+ // - Nav handle is configured not to show on lockscreen.
+ // - There is no nav handle.
+ if (
+ startedState == KeyguardState.AOD ||
+ !isShowHomeOverLockscreen ||
+ !isGesturalMode
+ ) {
flags = flags or StatusBarManager.DISABLE_HOME
}
flags = flags or StatusBarManager.DISABLE_RECENT
@@ -141,6 +155,24 @@ constructor(
return
}
+ // TODO(b/341604160): Remove this blocking logic once StatusBarManagerService supports
+ // visible background users properly.
+ if (
+ UserManager.isVisibleBackgroundUsersEnabled() &&
+ !processWrapper.isSystemUser() &&
+ !processWrapper.isForegroundUserOrProfile()
+ ) {
+ // Currently, only one SysUI process can register with IStatusBarService to listen
+ // for the CommandQueue events.
+ // In the Multi Display configuration with concurrent multi users (primarily used
+ // in Automotive), a visible background user (Automotive Multi Display passengers)
+ // could also access this code path. Given this limitation and we only allow the
+ // current user's SysUI process to register with IStatusBarService, we need to prevent
+ // calls into IStatusBarService from visible background users.
+ Log.d(TAG, "Status bar manager is disabled for visible background users")
+ return
+ }
+
scope.launch {
disableFlagsForUserId.collect { (selectedUserId, flags) ->
if (context.getSystemService(Context.STATUS_BAR_SERVICE) == null) {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/shared/transition/KeyguardTransitionAnimationCallback.kt b/packages/SystemUI/src/com/android/systemui/keyguard/shared/transition/KeyguardTransitionAnimationCallback.kt
new file mode 100644
index 000000000000..6ecc5d3abea3
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/shared/transition/KeyguardTransitionAnimationCallback.kt
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+package com.android.systemui.keyguard.shared.transition
+
+import com.android.systemui.keyguard.shared.model.KeyguardState
+
+/**
+ * Defines an interface for classes that can be notified when a keyguard transition starts, ends, or
+ * is canceled.
+ */
+interface KeyguardTransitionAnimationCallback {
+
+ /** Notifies that an animation from [from] to [to] has started. */
+ fun onAnimationStarted(from: KeyguardState, to: KeyguardState)
+
+ /** Notifies that an animation from [from] to [to] has ended. */
+ fun onAnimationEnded(from: KeyguardState, to: KeyguardState)
+
+ /** Notifies that an animation from [from] to [to] has been canceled. */
+ fun onAnimationCanceled(from: KeyguardState, to: KeyguardState)
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/shared/transition/KeyguardTransitionAnimationCallbackDelegator.kt b/packages/SystemUI/src/com/android/systemui/keyguard/shared/transition/KeyguardTransitionAnimationCallbackDelegator.kt
new file mode 100644
index 000000000000..5de9e326c0c2
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/shared/transition/KeyguardTransitionAnimationCallbackDelegator.kt
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+package com.android.systemui.keyguard.shared.transition
+
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.keyguard.shared.model.KeyguardState
+import javax.inject.Inject
+
+@SysUISingleton
+class KeyguardTransitionAnimationCallbackDelegator @Inject constructor() :
+ KeyguardTransitionAnimationCallback {
+
+ var delegate: KeyguardTransitionAnimationCallback? = null
+
+ override fun onAnimationStarted(from: KeyguardState, to: KeyguardState) {
+ delegate?.onAnimationStarted(from, to)
+ }
+
+ override fun onAnimationEnded(from: KeyguardState, to: KeyguardState) {
+ delegate?.onAnimationEnded(from, to)
+ }
+
+ override fun onAnimationCanceled(from: KeyguardState, to: KeyguardState) {
+ delegate?.onAnimationCanceled(from, to)
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/AlternateBouncerViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/AlternateBouncerViewBinder.kt
index fa64fc07aad9..b8b032719ef8 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/AlternateBouncerViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/AlternateBouncerViewBinder.kt
@@ -40,7 +40,7 @@ import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerDependencies
import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerUdfpsIconViewModel
import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerWindowViewModel
import com.android.systemui.lifecycle.repeatWhenAttached
-import com.android.systemui.log.LongPressHandlingViewLogger
+import com.android.systemui.log.TouchHandlingViewLogger
import com.android.systemui.res.R
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scrim.ScrimView
@@ -219,7 +219,7 @@ constructor(
private fun optionallyAddUdfpsViews(
view: ConstraintLayout,
- logger: LongPressHandlingViewLogger,
+ logger: TouchHandlingViewLogger,
udfpsIconViewModel: AlternateBouncerUdfpsIconViewModel,
udfpsA11yOverlayViewModel: Lazy<AlternateBouncerUdfpsAccessibilityOverlayViewModel>,
) {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/DeviceEntryIconViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/DeviceEntryIconViewBinder.kt
index e9a3bd62b9b3..17e14c3e83da 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/DeviceEntryIconViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/DeviceEntryIconViewBinder.kt
@@ -29,7 +29,7 @@ import androidx.core.view.isInvisible
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.repeatOnLifecycle
import com.android.app.tracing.coroutines.launchTraced as launch
-import com.android.systemui.common.ui.view.LongPressHandlingView
+import com.android.systemui.common.ui.view.TouchHandlingView
import com.android.systemui.keyguard.ui.view.DeviceEntryIconView
import com.android.systemui.keyguard.ui.viewmodel.DeviceEntryBackgroundViewModel
import com.android.systemui.keyguard.ui.viewmodel.DeviceEntryForegroundViewModel
@@ -41,7 +41,6 @@ import com.android.systemui.statusbar.VibratorHelper
import com.android.systemui.util.kotlin.DisposableHandles
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.DisposableHandle
-import com.android.app.tracing.coroutines.launchTraced as launch
object DeviceEntryIconViewBinder {
private const val TAG = "DeviceEntryIconViewBinder"
@@ -66,11 +65,11 @@ object DeviceEntryIconViewBinder {
overrideColor: Color? = null,
): DisposableHandle {
val disposables = DisposableHandles()
- val longPressHandlingView = view.longPressHandlingView
+ val touchHandlingView = view.touchHandlingView
val fgIconView = view.iconView
val bgView = view.bgView
- longPressHandlingView.listener =
- object : LongPressHandlingView.Listener {
+ touchHandlingView.listener =
+ object : TouchHandlingView.Listener {
override fun onLongPressDetected(
view: View,
x: Int,
@@ -104,18 +103,18 @@ object DeviceEntryIconViewBinder {
repeatOnLifecycle(Lifecycle.State.CREATED) {
launch("$TAG#viewModel.isVisible") {
viewModel.isVisible.collect { isVisible ->
- longPressHandlingView.isInvisible = !isVisible
+ touchHandlingView.isInvisible = !isVisible
view.isClickable = isVisible
}
}
launch("$TAG#viewModel.isLongPressEnabled") {
viewModel.isLongPressEnabled.collect { isEnabled ->
- longPressHandlingView.setLongPressHandlingEnabled(isEnabled)
+ touchHandlingView.setLongPressHandlingEnabled(isEnabled)
}
}
launch("$TAG#viewModel.isUdfpsSupported") {
viewModel.isUdfpsSupported.collect { udfpsSupported ->
- longPressHandlingView.longPressDuration =
+ touchHandlingView.longPressDuration =
if (udfpsSupported) {
{
view.resources
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardJankBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardJankBinder.kt
new file mode 100644
index 000000000000..0cb684a1aabe
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardJankBinder.kt
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.binder
+
+import android.view.ViewGroup
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.repeatOnLifecycle
+import com.android.app.tracing.coroutines.launchTraced as launch
+import com.android.internal.jank.Cuj.CUJ_LOCKSCREEN_TRANSITION_FROM_AOD
+import com.android.internal.jank.Cuj.CUJ_LOCKSCREEN_TRANSITION_TO_AOD
+import com.android.internal.jank.Cuj.CUJ_SCREEN_OFF_SHOW_AOD
+import com.android.internal.jank.InteractionJankMonitor
+import com.android.systemui.keyguard.KeyguardViewMediator
+import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor
+import com.android.systemui.keyguard.shared.model.TransitionState
+import com.android.systemui.keyguard.shared.model.TransitionStep
+import com.android.systemui.keyguard.ui.viewmodel.KeyguardJankViewModel
+import com.android.systemui.lifecycle.repeatWhenAttached
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.DisposableHandle
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+
+/** Jank monitoring related to keyguard and transitions. */
+@OptIn(ExperimentalCoroutinesApi::class)
+object KeyguardJankBinder {
+ @JvmStatic
+ fun bind(
+ view: ViewGroup,
+ viewModel: KeyguardJankViewModel,
+ jankMonitor: InteractionJankMonitor?,
+ clockInteractor: KeyguardClockInteractor,
+ keyguardViewMediator: KeyguardViewMediator?,
+ mainImmediateDispatcher: CoroutineDispatcher,
+ ): DisposableHandle? {
+ if (jankMonitor == null) {
+ return null
+ }
+
+ fun processStep(step: TransitionStep, cuj: Int) {
+ val clockId = clockInteractor.renderedClockId
+ when (step.transitionState) {
+ TransitionState.STARTED -> {
+ val builder =
+ InteractionJankMonitor.Configuration.Builder.withView(cuj, view)
+ .setTag(clockId)
+ jankMonitor.begin(builder)
+ }
+
+ TransitionState.CANCELED -> jankMonitor.cancel(cuj)
+
+ TransitionState.FINISHED -> jankMonitor.end(cuj)
+
+ TransitionState.RUNNING -> Unit
+ }
+ }
+
+ return view.repeatWhenAttached(mainImmediateDispatcher) {
+ repeatOnLifecycle(Lifecycle.State.CREATED) {
+ launch {
+ viewModel.goneToAodTransition.collect {
+ processStep(it, CUJ_SCREEN_OFF_SHOW_AOD)
+ if (it.transitionState == TransitionState.FINISHED) {
+ keyguardViewMediator?.maybeHandlePendingLock()
+ }
+ }
+ }
+
+ launch {
+ viewModel.lockscreenToAodTransition.collect {
+ processStep(it, CUJ_LOCKSCREEN_TRANSITION_TO_AOD)
+ }
+ }
+
+ launch {
+ viewModel.aodToLockscreenTransition.collect {
+ processStep(it, CUJ_LOCKSCREEN_TRANSITION_FROM_AOD)
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt
index 017fe169ca88..00710c97d00a 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt
@@ -37,8 +37,6 @@ import androidx.activity.setViewTreeOnBackPressedDispatcherOwner
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.repeatOnLifecycle
import com.android.app.tracing.coroutines.launchTraced as launch
-import com.android.internal.jank.InteractionJankMonitor
-import com.android.internal.jank.InteractionJankMonitor.CUJ_SCREEN_OFF_SHOW_AOD
import com.android.keyguard.AuthInteractionProperties
import com.android.systemui.Flags
import com.android.systemui.Flags.msdlFeedback
@@ -51,11 +49,8 @@ import com.android.systemui.common.ui.view.onLayoutChanged
import com.android.systemui.common.ui.view.onTouchListener
import com.android.systemui.customization.R as customR
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryHapticsInteractor
-import com.android.systemui.keyguard.KeyguardViewMediator
import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor
-import com.android.systemui.keyguard.domain.interactor.WallpaperFocalAreaInteractor
import com.android.systemui.keyguard.shared.model.KeyguardState
-import com.android.systemui.keyguard.shared.model.TransitionState
import com.android.systemui.keyguard.ui.view.layout.sections.AodPromotedNotificationSection
import com.android.systemui.keyguard.ui.viewmodel.BurnInParameters
import com.android.systemui.keyguard.ui.viewmodel.KeyguardBlueprintViewModel
@@ -84,6 +79,7 @@ import com.android.systemui.util.ui.AnimatedValue
import com.android.systemui.util.ui.isAnimating
import com.android.systemui.util.ui.stopAnimating
import com.android.systemui.util.ui.value
+import com.android.systemui.wallpapers.ui.viewmodel.WallpaperFocalAreaViewModel
import com.google.android.msdl.data.model.MSDLToken
import com.google.android.msdl.domain.MSDLPlayer
import kotlin.math.min
@@ -108,17 +104,15 @@ object KeyguardRootViewBinder {
screenOffAnimationController: ScreenOffAnimationController,
shadeInteractor: ShadeInteractor,
clockInteractor: KeyguardClockInteractor,
- wallpaperFocalAreaInteractor: WallpaperFocalAreaInteractor,
clockViewModel: KeyguardClockViewModel,
- interactionJankMonitor: InteractionJankMonitor?,
deviceEntryHapticsInteractor: DeviceEntryHapticsInteractor?,
vibratorHelper: VibratorHelper?,
falsingManager: FalsingManager?,
- keyguardViewMediator: KeyguardViewMediator?,
statusBarKeyguardViewManager: StatusBarKeyguardViewManager?,
mainImmediateDispatcher: CoroutineDispatcher,
msdlPlayer: MSDLPlayer?,
@KeyguardBlueprintLog blueprintLog: LogBuffer,
+ wallpaperFocalAreaViewModel: WallpaperFocalAreaViewModel,
): DisposableHandle {
val disposables = DisposableHandles()
val childViews = mutableMapOf<Int, View>()
@@ -178,6 +172,13 @@ object KeyguardRootViewBinder {
}
}
+ launch("$TAG#zoomOut") {
+ viewModel.scaleFromZoomOut.collect { scaleFromZoomOut ->
+ view.scaleX = scaleFromZoomOut
+ view.scaleY = scaleFromZoomOut
+ }
+ }
+
launch("$TAG#translationY") {
// When translation happens in burnInLayer, it won't be weather clock large
// clock isn't added to burnInLayer due to its scale transition so we also
@@ -308,35 +309,6 @@ object KeyguardRootViewBinder {
}
}
- interactionJankMonitor?.let { jankMonitor ->
- launch {
- viewModel.goneToAodTransition.collect {
- when (it.transitionState) {
- TransitionState.STARTED -> {
- val clockId = clockInteractor.renderedClockId
- val builder =
- InteractionJankMonitor.Configuration.Builder.withView(
- CUJ_SCREEN_OFF_SHOW_AOD,
- view,
- )
- .setTag(clockId)
- jankMonitor.begin(builder)
- }
-
- TransitionState.CANCELED ->
- jankMonitor.cancel(CUJ_SCREEN_OFF_SHOW_AOD)
-
- TransitionState.FINISHED -> {
- keyguardViewMediator?.maybeHandlePendingLock()
- jankMonitor.end(CUJ_SCREEN_OFF_SHOW_AOD)
- }
-
- TransitionState.RUNNING -> Unit
- }
- }
- }
- }
-
launch {
shadeInteractor.isAnyFullyExpanded.collect { isFullyAnyExpanded ->
view.visibility =
@@ -396,13 +368,11 @@ object KeyguardRootViewBinder {
disposables +=
view.repeatWhenAttached {
repeatOnLifecycle(Lifecycle.State.STARTED) {
- if (viewModel.shouldSendFocalArea.value) {
+ if (wallpaperFocalAreaViewModel.hasFocalArea.value) {
launch {
- wallpaperFocalAreaInteractor.wallpaperFocalAreaBounds
+ wallpaperFocalAreaViewModel.wallpaperFocalAreaBounds
.filterNotNull()
- .collect {
- wallpaperFocalAreaInteractor.setWallpaperFocalAreaBounds(it)
- }
+ .collect { wallpaperFocalAreaViewModel.setFocalAreaBounds(it) }
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardLongPressViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardTouchViewBinder.kt
index 2fd9818a38f0..195413a80f4b 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardLongPressViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardTouchViewBinder.kt
@@ -23,13 +23,13 @@ import androidx.core.view.accessibility.AccessibilityNodeInfoCompat
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.repeatOnLifecycle
import com.android.app.tracing.coroutines.launchTraced as launch
-import com.android.systemui.common.ui.view.LongPressHandlingView
+import com.android.systemui.common.ui.view.TouchHandlingView
import com.android.systemui.keyguard.ui.viewmodel.KeyguardTouchHandlingViewModel
import com.android.systemui.lifecycle.repeatWhenAttached
import com.android.systemui.plugins.FalsingManager
import com.android.systemui.res.R
-object KeyguardLongPressViewBinder {
+object KeyguardTouchViewBinder {
/**
* Drives UI for the lock screen long-press feature.
*
@@ -41,23 +41,23 @@ object KeyguardLongPressViewBinder {
*/
@JvmStatic
fun bind(
- view: LongPressHandlingView,
+ view: TouchHandlingView,
viewModel: KeyguardTouchHandlingViewModel,
- onSingleTap: () -> Unit,
+ onSingleTap: (x: Int, y: Int) -> Unit,
falsingManager: FalsingManager,
) {
view.accessibilityHintLongPressAction =
AccessibilityNodeInfo.AccessibilityAction(
AccessibilityNodeInfoCompat.ACTION_LONG_CLICK,
- view.resources.getString(R.string.lock_screen_settings)
+ view.resources.getString(R.string.lock_screen_settings),
)
view.listener =
- object : LongPressHandlingView.Listener {
+ object : TouchHandlingView.Listener {
override fun onLongPressDetected(
view: View,
x: Int,
y: Int,
- isA11yAction: Boolean
+ isA11yAction: Boolean,
) {
if (
!isA11yAction && falsingManager.isFalseLongTap(FalsingManager.LOW_PENALTY)
@@ -68,12 +68,12 @@ object KeyguardLongPressViewBinder {
viewModel.onLongPress(isA11yAction)
}
- override fun onSingleTapDetected(view: View) {
+ override fun onSingleTapDetected(view: View, x: Int, y: Int) {
if (falsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
return
}
- onSingleTap()
+ onSingleTap(x, y)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt
index cff5cebf2011..85eae6ed98b3 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt
@@ -55,7 +55,6 @@ import com.android.systemui.customization.R as customR
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
-import com.android.systemui.keyguard.domain.interactor.WallpaperFocalAreaInteractor
import com.android.systemui.keyguard.shared.model.ClockSizeSetting
import com.android.systemui.keyguard.ui.binder.KeyguardPreviewClockViewBinder
import com.android.systemui.keyguard.ui.binder.KeyguardPreviewSmartspaceViewBinder
@@ -82,6 +81,7 @@ import com.android.systemui.statusbar.KeyguardIndicationController
import com.android.systemui.statusbar.lockscreen.LockscreenSmartspaceController
import com.android.systemui.util.kotlin.DisposableHandles
import com.android.systemui.util.settings.SecureSettings
+import com.android.systemui.wallpapers.domain.interactor.WallpaperFocalAreaInteractor
import dagger.assisted.Assisted
import dagger.assisted.AssistedInject
import kotlinx.coroutines.CoroutineDispatcher
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/DeviceEntryIconView.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/DeviceEntryIconView.kt
index 8d2e939da032..13331a4da3f7 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/DeviceEntryIconView.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/DeviceEntryIconView.kt
@@ -31,8 +31,8 @@ import android.widget.ImageView
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat
import com.airbnb.lottie.LottieCompositionFactory
import com.airbnb.lottie.LottieDrawable
-import com.android.systemui.common.ui.view.LongPressHandlingView
-import com.android.systemui.log.LongPressHandlingViewLogger
+import com.android.systemui.common.ui.view.TouchHandlingView
+import com.android.systemui.log.TouchHandlingViewLogger
import com.android.systemui.res.R
class DeviceEntryIconView
@@ -41,11 +41,11 @@ constructor(
context: Context,
attrs: AttributeSet?,
defStyleAttrs: Int = 0,
- logger: LongPressHandlingViewLogger? = null,
+ logger: TouchHandlingViewLogger? = null,
) : FrameLayout(context, attrs, defStyleAttrs) {
- val longPressHandlingView: LongPressHandlingView =
- LongPressHandlingView(
+ val touchHandlingView: TouchHandlingView =
+ TouchHandlingView(
context = context,
attrs = attrs,
longPressDuration = { ViewConfiguration.getLongPressTimeout().toLong() },
@@ -68,7 +68,7 @@ constructor(
// bgView, iconView, longpressHandlingView overlay
addBgImageView()
addIconImageView()
- addLongpressHandlingView()
+ addTouchHandlingView()
}
private fun setupAccessibilityDelegate() {
@@ -77,17 +77,17 @@ constructor(
private val accessibilityBouncerHint =
AccessibilityNodeInfo.AccessibilityAction(
AccessibilityNodeInfoCompat.ACTION_CLICK,
- resources.getString(R.string.accessibility_bouncer)
+ resources.getString(R.string.accessibility_bouncer),
)
private val accessibilityEnterHint =
AccessibilityNodeInfo.AccessibilityAction(
AccessibilityNodeInfoCompat.ACTION_CLICK,
- resources.getString(R.string.accessibility_enter_hint)
+ resources.getString(R.string.accessibility_enter_hint),
)
override fun onInitializeAccessibilityNodeInfo(
v: View,
- info: AccessibilityNodeInfo
+ info: AccessibilityNodeInfo,
) {
super.onInitializeAccessibilityNodeInfo(v, info)
when (accessibilityHintType) {
@@ -232,12 +232,12 @@ constructor(
)
}
- private fun addLongpressHandlingView() {
- addView(longPressHandlingView)
- val lp = longPressHandlingView.layoutParams as LayoutParams
+ private fun addTouchHandlingView() {
+ addView(touchHandlingView)
+ val lp = touchHandlingView.layoutParams as LayoutParams
lp.height = ViewGroup.LayoutParams.MATCH_PARENT
lp.width = ViewGroup.LayoutParams.MATCH_PARENT
- longPressHandlingView.layoutParams = lp
+ touchHandlingView.layoutParams = lp
}
private fun addIconImageView() {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/SplitShadeKeyguardBlueprint.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/SplitShadeKeyguardBlueprint.kt
index 856e1d6ffdb7..8b213be02969 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/SplitShadeKeyguardBlueprint.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/SplitShadeKeyguardBlueprint.kt
@@ -23,6 +23,7 @@ import com.android.systemui.keyguard.shared.model.KeyguardSection
import com.android.systemui.keyguard.ui.view.layout.sections.AccessibilityActionsSection
import com.android.systemui.keyguard.ui.view.layout.sections.AodBurnInSection
import com.android.systemui.keyguard.ui.view.layout.sections.AodNotificationIconsSection
+import com.android.systemui.keyguard.ui.view.layout.sections.AodPromotedNotificationSection
import com.android.systemui.keyguard.ui.view.layout.sections.ClockSection
import com.android.systemui.keyguard.ui.view.layout.sections.DefaultDeviceEntrySection
import com.android.systemui.keyguard.ui.view.layout.sections.DefaultIndicationAreaSection
@@ -58,6 +59,7 @@ constructor(
defaultStatusBarSection: DefaultStatusBarSection,
splitShadeNotificationStackScrollLayoutSection: SplitShadeNotificationStackScrollLayoutSection,
splitShadeGuidelines: SplitShadeGuidelines,
+ aodPromotedNotificationSection: AodPromotedNotificationSection,
aodNotificationIconsSection: AodNotificationIconsSection,
aodBurnInSection: AodBurnInSection,
clockSection: ClockSection,
@@ -76,6 +78,7 @@ constructor(
defaultStatusBarSection,
splitShadeNotificationStackScrollLayoutSection,
splitShadeGuidelines,
+ aodPromotedNotificationSection,
aodNotificationIconsSection,
smartspaceSection,
aodBurnInSection,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodNotificationIconsSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodNotificationIconsSection.kt
index 4f4442350873..e268050234ab 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodNotificationIconsSection.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodNotificationIconsSection.kt
@@ -34,6 +34,7 @@ import com.android.systemui.keyguard.shared.model.KeyguardSection
import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel
import com.android.systemui.res.R
import com.android.systemui.shade.ShadeDisplayAware
+import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.statusbar.notification.icon.ui.viewbinder.AlwaysOnDisplayNotificationIconViewStore
import com.android.systemui.statusbar.notification.icon.ui.viewbinder.NotificationIconContainerViewBinder
import com.android.systemui.statusbar.notification.icon.ui.viewbinder.StatusBarIconViewBindingFailureTracker
@@ -55,6 +56,7 @@ constructor(
private val nicAodIconViewStore: AlwaysOnDisplayNotificationIconViewStore,
private val systemBarUtilsState: SystemBarUtilsState,
private val rootViewModel: KeyguardRootViewModel,
+ private val shadeInteractor: ShadeInteractor,
) : KeyguardSection() {
private var nicBindingDisposable: DisposableHandle? = null
@@ -93,34 +95,30 @@ constructor(
override fun applyConstraints(constraintSet: ConstraintSet) {
val bottomMargin =
context.resources.getDimensionPixelSize(R.dimen.keyguard_status_view_bottom_margin)
+ val horizontalMargin =
+ context.resources.getDimensionPixelSize(customR.dimen.status_view_margin_horizontal)
+ val height = context.resources.getDimensionPixelSize(R.dimen.notification_shelf_height)
val isVisible = rootViewModel.isNotifIconContainerVisible.value
+ val isShadeLayoutWide = shadeInteractor.isShadeLayoutWide.value
+
constraintSet.apply {
if (PromotedNotificationUiAod.isEnabled) {
connect(nicId, TOP, AodPromotedNotificationSection.viewId, BOTTOM, bottomMargin)
} else {
connect(nicId, TOP, R.id.smart_space_barrier_bottom, BOTTOM, bottomMargin)
}
+
setGoneMargin(nicId, BOTTOM, bottomMargin)
setVisibility(nicId, if (isVisible.value) VISIBLE else GONE)
- connect(
- nicId,
- START,
- PARENT_ID,
- START,
- context.resources.getDimensionPixelSize(customR.dimen.status_view_margin_horizontal),
- )
- connect(
- nicId,
- END,
- PARENT_ID,
- END,
- context.resources.getDimensionPixelSize(customR.dimen.status_view_margin_horizontal),
- )
- constrainHeight(
- nicId,
- context.resources.getDimensionPixelSize(R.dimen.notification_shelf_height),
- )
+ if (PromotedNotificationUiAod.isEnabled && isShadeLayoutWide) {
+ // Don't create a start constraint, so the icons can hopefully right-align.
+ } else {
+ connect(nicId, START, PARENT_ID, START, horizontalMargin)
+ }
+ connect(nicId, END, PARENT_ID, END, horizontalMargin)
+
+ constrainHeight(nicId, height)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodPromotedNotificationSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodPromotedNotificationSection.kt
index ed1bdb0e2922..2110c4027667 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodPromotedNotificationSection.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodPromotedNotificationSection.kt
@@ -16,6 +16,7 @@
package com.android.systemui.keyguard.ui.view.layout.sections
+import android.content.Context
import androidx.compose.ui.platform.ComposeView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintSet
@@ -26,6 +27,8 @@ import androidx.constraintlayout.widget.ConstraintSet.START
import androidx.constraintlayout.widget.ConstraintSet.TOP
import com.android.systemui.keyguard.shared.model.KeyguardSection
import com.android.systemui.res.R
+import com.android.systemui.shade.ShadeDisplayAware
+import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.statusbar.notification.promoted.AODPromotedNotification
import com.android.systemui.statusbar.notification.promoted.PromotedNotificationLogger
import com.android.systemui.statusbar.notification.promoted.PromotedNotificationUiAod
@@ -35,11 +38,17 @@ import javax.inject.Inject
class AodPromotedNotificationSection
@Inject
constructor(
+ @ShadeDisplayAware private val context: Context,
private val viewModelFactory: AODPromotedNotificationViewModel.Factory,
+ private val shadeInteractor: ShadeInteractor,
private val logger: PromotedNotificationLogger,
) : KeyguardSection() {
var view: ComposeView? = null
+ init {
+ logger.logSectionCreated(this)
+ }
+
override fun addViews(constraintLayout: ConstraintLayout) {
if (!PromotedNotificationUiAod.isEnabled) {
return
@@ -54,7 +63,7 @@ constructor(
constraintLayout.addView(this)
}
- logger.logSectionAddedViews()
+ logger.logSectionAddedViews(this)
}
override fun bindData(constraintLayout: ConstraintLayout) {
@@ -66,7 +75,7 @@ constructor(
// Do nothing; the binding happens in the AODPromotedNotification Composable.
- logger.logSectionBoundData()
+ logger.logSectionBoundData(this)
}
override fun applyConstraints(constraintSet: ConstraintSet) {
@@ -74,18 +83,39 @@ constructor(
return
}
- checkNotNull(view)
+ // view may have been created by a different instance of the section (!), and we don't
+ // actually *need* it to set constraints, so don't check for it here.
+
+ val topPadding =
+ context.resources.getDimensionPixelSize(R.dimen.below_clock_padding_start_icons)
constraintSet.apply {
- connect(viewId, TOP, R.id.smart_space_barrier_bottom, BOTTOM, 0)
- connect(viewId, START, PARENT_ID, START, 0)
- connect(viewId, END, PARENT_ID, END, 0)
+ val isShadeLayoutWide = shadeInteractor.isShadeLayoutWide.value
+
+ if (isShadeLayoutWide) {
+ // When in split shade, align with top of smart space:
+ connect(viewId, TOP, R.id.smart_space_barrier_top, TOP, 0)
+
+ // and occupy the right half of the screen:
+ connect(viewId, START, R.id.split_shade_guideline, START, 0)
+ connect(viewId, END, PARENT_ID, END, 0)
+
+ // TODO(b/369151941): Calculate proper right padding here (when in split shade, it's
+ // bigger than what the Composable applies!)
+ } else {
+ // When not in split shade, place below smart space:
+ connect(viewId, TOP, R.id.smart_space_barrier_bottom, BOTTOM, topPadding)
+
+ // and occupy the full width of the screen:
+ connect(viewId, START, PARENT_ID, START, 0)
+ connect(viewId, END, PARENT_ID, END, 0)
+ }
constrainWidth(viewId, ConstraintSet.MATCH_CONSTRAINT)
constrainHeight(viewId, ConstraintSet.WRAP_CONTENT)
}
- logger.logSectionAppliedConstraints()
+ logger.logSectionAppliedConstraints(this)
}
override fun removeViews(constraintLayout: ConstraintLayout) {
@@ -97,7 +127,7 @@ constructor(
view = null
- logger.logSectionRemovedViews()
+ logger.logSectionRemovedViews(this)
}
companion object {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultDeviceEntrySection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultDeviceEntrySection.kt
index 0c7e865a84a4..58d482b8a66f 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultDeviceEntrySection.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultDeviceEntrySection.kt
@@ -37,7 +37,7 @@ import com.android.systemui.keyguard.ui.viewmodel.DeviceEntryBackgroundViewModel
import com.android.systemui.keyguard.ui.viewmodel.DeviceEntryForegroundViewModel
import com.android.systemui.keyguard.ui.viewmodel.DeviceEntryIconViewModel
import com.android.systemui.log.LogBuffer
-import com.android.systemui.log.LongPressHandlingViewLogger
+import com.android.systemui.log.TouchHandlingViewLogger
import com.android.systemui.log.core.Logger
import com.android.systemui.log.dagger.KeyguardBlueprintLog
import com.android.systemui.log.dagger.LongPressTouchLog
@@ -78,7 +78,7 @@ constructor(
DeviceEntryIconView(
context,
null,
- logger = LongPressHandlingViewLogger(logBuffer = logBuffer, TAG),
+ logger = TouchHandlingViewLogger(logBuffer = logBuffer, TAG),
)
.apply { id = deviceEntryIconViewId }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSection.kt
index 9319bc890c6c..d6d03c7e02d1 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSection.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSection.kt
@@ -168,6 +168,13 @@ constructor(
}
createBarrier(
+ R.id.smart_space_barrier_top,
+ Barrier.TOP,
+ 0,
+ *intArrayOf(sharedR.id.bc_smartspace_view, sharedR.id.date_smartspace_view),
+ )
+
+ createBarrier(
R.id.smart_space_barrier_bottom,
Barrier.BOTTOM,
0,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerDependencies.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerDependencies.kt
index 848bcabb7767..29ee52482885 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerDependencies.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerDependencies.kt
@@ -19,7 +19,7 @@ package com.android.systemui.keyguard.ui.viewmodel
import com.android.systemui.deviceentry.ui.viewmodel.AlternateBouncerUdfpsAccessibilityOverlayViewModel
import com.android.systemui.keyguard.ui.SwipeUpAnywhereGestureHandler
import com.android.systemui.log.LogBuffer
-import com.android.systemui.log.LongPressHandlingViewLogger
+import com.android.systemui.log.TouchHandlingViewLogger
import com.android.systemui.log.dagger.LongPressTouchLog
import com.android.systemui.power.domain.interactor.PowerInteractor
import com.android.systemui.statusbar.gesture.TapGestureDetector
@@ -40,8 +40,8 @@ constructor(
val powerInteractor: PowerInteractor,
@LongPressTouchLog private val touchLogBuffer: LogBuffer,
) {
- val logger: LongPressHandlingViewLogger =
- LongPressHandlingViewLogger(logBuffer = touchLogBuffer, TAG)
+ val logger: TouchHandlingViewLogger = TouchHandlingViewLogger(logBuffer = touchLogBuffer, TAG)
+
companion object {
private const val TAG = "AlternateBouncer"
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModel.kt
index 84fdc6e3a433..13cd5839e1c8 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModel.kt
@@ -262,16 +262,6 @@ constructor(
deviceEntrySourceInteractor.attemptEnterDeviceFromDeviceEntryIcon()
}
- private fun DeviceEntryIconView.IconType.toAccessibilityHintType():
- DeviceEntryIconView.AccessibilityHintType {
- return when (this) {
- DeviceEntryIconView.IconType.FINGERPRINT,
- DeviceEntryIconView.IconType.LOCK -> DeviceEntryIconView.AccessibilityHintType.BOUNCER
- DeviceEntryIconView.IconType.UNLOCK -> DeviceEntryIconView.AccessibilityHintType.ENTER
- DeviceEntryIconView.IconType.NONE -> DeviceEntryIconView.AccessibilityHintType.NONE
- }
- }
-
companion object {
const val UNLOCKED_DELAY_MS = 50L
}
@@ -282,3 +272,13 @@ data class BurnInOffsets(
val y: Int, // current y burn in offset based on the aodTransitionAmount
val progress: Float, // current progress based on the aodTransitionAmount
)
+
+fun DeviceEntryIconView.IconType.toAccessibilityHintType():
+ DeviceEntryIconView.AccessibilityHintType {
+ return when (this) {
+ DeviceEntryIconView.IconType.FINGERPRINT,
+ DeviceEntryIconView.IconType.LOCK -> DeviceEntryIconView.AccessibilityHintType.BOUNCER
+ DeviceEntryIconView.IconType.UNLOCK -> DeviceEntryIconView.AccessibilityHintType.ENTER
+ DeviceEntryIconView.IconType.NONE -> DeviceEntryIconView.AccessibilityHintType.NONE
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DozingToDreamingTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DozingToDreamingTransitionViewModel.kt
new file mode 100644
index 000000000000..e6a85c6860c5
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DozingToDreamingTransitionViewModel.kt
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.keyguard.domain.interactor.FromDozingTransitionInteractor
+import com.android.systemui.keyguard.shared.model.Edge
+import com.android.systemui.keyguard.shared.model.KeyguardState.DOZING
+import com.android.systemui.keyguard.shared.model.KeyguardState.DREAMING
+import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow
+import javax.inject.Inject
+import kotlinx.coroutines.flow.Flow
+
+/**
+ * Breaks down DOZING->DREAMING transition into discrete steps for corresponding views to consume.
+ */
+@SysUISingleton
+class DozingToDreamingTransitionViewModel
+@Inject
+constructor(animationFlow: KeyguardTransitionAnimationFlow) {
+ private val transitionAnimation =
+ animationFlow.setup(
+ duration = FromDozingTransitionInteractor.TO_DREAMING_DURATION,
+ edge = Edge.create(from = DOZING, to = DREAMING),
+ )
+
+ val lockscreenAlpha: Flow<Float> = transitionAnimation.immediatelyTransitionTo(0f)
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardJankViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardJankViewModel.kt
new file mode 100644
index 000000000000..2642505b32cc
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardJankViewModel.kt
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
+import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
+import com.android.systemui.keyguard.shared.model.Edge
+import com.android.systemui.keyguard.shared.model.KeyguardState.AOD
+import com.android.systemui.keyguard.shared.model.KeyguardState.GONE
+import com.android.systemui.keyguard.shared.model.KeyguardState.LOCKSCREEN
+import com.android.systemui.scene.shared.model.Scenes
+import javax.inject.Inject
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@SysUISingleton
+class KeyguardJankViewModel
+@Inject
+constructor(
+ private val keyguardInteractor: KeyguardInteractor,
+ private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
+) {
+ val goneToAodTransition =
+ keyguardTransitionInteractor.transition(
+ edge = Edge.create(Scenes.Gone, AOD),
+ edgeWithoutSceneContainer = Edge.create(GONE, AOD),
+ )
+
+ val lockscreenToAodTransition =
+ keyguardTransitionInteractor.transition(
+ edge = Edge.create(Scenes.Lockscreen, AOD),
+ edgeWithoutSceneContainer = Edge.create(LOCKSCREEN, AOD),
+ )
+
+ val aodToLockscreenTransition =
+ keyguardTransitionInteractor.transition(
+ edge = Edge.create(AOD, Scenes.Lockscreen),
+ edgeWithoutSceneContainer = Edge.create(AOD, LOCKSCREEN),
+ )
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
index 11a509a4fa61..62a5ebab29e0 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
@@ -28,7 +28,6 @@ import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
import com.android.systemui.keyguard.domain.interactor.PulseExpansionInteractor
-import com.android.systemui.keyguard.domain.interactor.WallpaperFocalAreaInteractor
import com.android.systemui.keyguard.shared.model.Edge
import com.android.systemui.keyguard.shared.model.KeyguardState.AOD
import com.android.systemui.keyguard.shared.model.KeyguardState.DREAMING
@@ -54,6 +53,7 @@ import com.android.systemui.util.ui.AnimatableEvent
import com.android.systemui.util.ui.AnimatedValue
import com.android.systemui.util.ui.toAnimatedValueFlow
import com.android.systemui.util.ui.zip
+import com.android.systemui.wallpapers.domain.interactor.WallpaperFocalAreaInteractor
import javax.inject.Inject
import kotlin.math.max
import kotlinx.coroutines.CoroutineScope
@@ -96,6 +96,7 @@ constructor(
private val aodToLockscreenTransitionViewModel: AodToLockscreenTransitionViewModel,
private val aodToOccludedTransitionViewModel: AodToOccludedTransitionViewModel,
private val aodToPrimaryBouncerTransitionViewModel: AodToPrimaryBouncerTransitionViewModel,
+ private val dozingToDreamingTransitionViewModel: DozingToDreamingTransitionViewModel,
private val dozingToGoneTransitionViewModel: DozingToGoneTransitionViewModel,
private val dozingToLockscreenTransitionViewModel: DozingToLockscreenTransitionViewModel,
private val dozingToOccludedTransitionViewModel: DozingToOccludedTransitionViewModel,
@@ -247,6 +248,7 @@ constructor(
aodToLockscreenTransitionViewModel.lockscreenAlpha(viewState),
aodToOccludedTransitionViewModel.lockscreenAlpha(viewState),
aodToPrimaryBouncerTransitionViewModel.lockscreenAlpha,
+ dozingToDreamingTransitionViewModel.lockscreenAlpha,
dozingToGoneTransitionViewModel.lockscreenAlpha(viewState),
dozingToLockscreenTransitionViewModel.lockscreenAlpha,
dozingToOccludedTransitionViewModel.lockscreenAlpha(viewState),
@@ -287,6 +289,9 @@ constructor(
.distinctUntilChanged()
}
+ val scaleFromZoomOut: Flow<Float> =
+ keyguardInteractor.zoomOut.map { 1 - it * PUSHBACK_SCALE_FOR_LOCKSCREEN }
+
val translationY: Flow<Float> = aodBurnInViewModel.movement.map { it.translationY.toFloat() }
val translationX: Flow<StateToValue> =
@@ -372,8 +377,6 @@ constructor(
initialValue = AnimatedValue.NotAnimating(false),
)
- val shouldSendFocalArea = wallpaperFocalAreaInteractor.shouldSendFocalArea
-
fun onNotificationContainerBoundsChanged(top: Float, bottom: Float, animate: Boolean = false) {
keyguardInteractor.setNotificationContainerBounds(
NotificationContainerBounds(top = top, bottom = bottom, isAnimated = animate)
@@ -418,5 +421,6 @@ constructor(
companion object {
private const val TAG = "KeyguardRootViewModel"
+ private const val PUSHBACK_SCALE_FOR_LOCKSCREEN = 0.05f
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModel.kt
index ef6ae0dd6427..3e3a89a55f66 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModel.kt
@@ -24,12 +24,16 @@ import com.android.systemui.customization.R as customR
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardBlueprintInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor
+import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
import com.android.systemui.keyguard.shared.model.ClockSize
+import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.keyguard.shared.transition.KeyguardTransitionAnimationCallback
+import com.android.systemui.keyguard.shared.transition.KeyguardTransitionAnimationCallbackDelegator
import com.android.systemui.lifecycle.ExclusiveActivatable
import com.android.systemui.res.R
-import com.android.systemui.scene.domain.interactor.SceneContainerOcclusionInteractor
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.unfold.domain.interactor.UnfoldTransitionInteractor
+import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import kotlinx.coroutines.CoroutineScope
@@ -54,8 +58,11 @@ constructor(
val touchHandling: KeyguardTouchHandlingViewModel,
private val shadeInteractor: ShadeInteractor,
private val unfoldTransitionInteractor: UnfoldTransitionInteractor,
- private val occlusionInteractor: SceneContainerOcclusionInteractor,
private val deviceEntryInteractor: DeviceEntryInteractor,
+ private val transitionInteractor: KeyguardTransitionInteractor,
+ private val keyguardTransitionAnimationCallbackDelegator:
+ KeyguardTransitionAnimationCallbackDelegator,
+ @Assisted private val keyguardTransitionAnimationCallback: KeyguardTransitionAnimationCallback,
) : ExclusiveActivatable() {
@VisibleForTesting val clockSize = clockInteractor.clockSize
@@ -78,23 +85,36 @@ constructor(
override suspend fun onActivated(): Nothing {
coroutineScope {
- launch {
- combine(
- unfoldTransitionInteractor.unfoldTranslationX(isOnStartSide = true),
- unfoldTransitionInteractor.unfoldTranslationX(isOnStartSide = false),
- ) { start, end ->
- UnfoldTranslations(start = start, end = end)
- }
- .collect { _unfoldTranslations.value = it }
+ try {
+ keyguardTransitionAnimationCallbackDelegator.delegate =
+ keyguardTransitionAnimationCallback
+ launch {
+ combine(
+ unfoldTransitionInteractor.unfoldTranslationX(isOnStartSide = true),
+ unfoldTransitionInteractor.unfoldTranslationX(isOnStartSide = false),
+ ) { start, end ->
+ UnfoldTranslations(start = start, end = end)
+ }
+ .collect { _unfoldTranslations.value = it }
+ }
+
+ launch {
+ transitionInteractor
+ .transitionValue(KeyguardState.OCCLUDED)
+ .map { it > 0f }
+ .collect { fullyOrPartiallyOccluded ->
+ // Content is visible unless we're OCCLUDED. Currently, we don't have
+ // nice
+ // animations into and out of OCCLUDED, so the lockscreen/AOD content is
+ // hidden immediately upon entering/exiting OCCLUDED.
+ _isContentVisible.value = !fullyOrPartiallyOccluded
+ }
+ }
+
+ awaitCancellation()
+ } finally {
+ keyguardTransitionAnimationCallbackDelegator.delegate = null
}
-
- launch {
- occlusionInteractor.isOccludingActivityShown
- .map { !it }
- .collect { _isContentVisible.value = it }
- }
-
- awaitCancellation()
}
}
@@ -144,6 +164,8 @@ constructor(
@AssistedFactory
interface Factory {
- fun create(): LockscreenContentViewModel
+ fun create(
+ keyguardTransitionAnimationCallback: KeyguardTransitionAnimationCallback
+ ): LockscreenContentViewModel
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModel.kt
index b7e3e2b38732..3353983ab5a5 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModel.kt
@@ -25,23 +25,27 @@ import com.android.systemui.scene.domain.interactor.SceneContainerOcclusionInter
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.ui.viewmodel.UserActionsViewModel
import com.android.systemui.shade.domain.interactor.ShadeInteractor
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.shade.ui.viewmodel.dualShadeActions
import com.android.systemui.shade.ui.viewmodel.singleShadeActions
import com.android.systemui.shade.ui.viewmodel.splitShadeActions
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
+import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.flowOf
/** Models UI state and handles user input for the lockscreen scene. */
+@OptIn(ExperimentalCoroutinesApi::class)
class LockscreenUserActionsViewModel
@AssistedInject
constructor(
private val deviceEntryInteractor: DeviceEntryInteractor,
private val communalInteractor: CommunalInteractor,
private val shadeInteractor: ShadeInteractor,
+ private val shadeModeInteractor: ShadeModeInteractor,
private val occlusionInteractor: SceneContainerOcclusionInteractor,
) : UserActionsViewModel() {
@@ -55,7 +59,7 @@ constructor(
combine(
deviceEntryInteractor.isUnlocked,
communalInteractor.isCommunalAvailable,
- shadeInteractor.shadeMode,
+ shadeModeInteractor.shadeMode,
occlusionInteractor.isOccludingActivityShown,
) { isDeviceUnlocked, isCommunalAvailable, shadeMode, isOccluded ->
buildList {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGoneTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGoneTransitionViewModel.kt
index 34c87feb0a0d..9968bc95a5ba 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGoneTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGoneTransitionViewModel.kt
@@ -16,6 +16,7 @@
package com.android.systemui.keyguard.ui.viewmodel
+import android.util.MathUtils
import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor
import com.android.systemui.bouncer.shared.flag.ComposeBouncerFlags
import com.android.systemui.dagger.SysUISingleton
@@ -63,10 +64,12 @@ constructor(
val showAllNotifications: Flow<Boolean> =
bouncerToGoneFlows.showAllNotifications(TO_GONE_DURATION, PRIMARY_BOUNCER)
- val notificationAlpha: Flow<Float> =
- transitionAnimation.sharedFlow(
+ fun notificationAlpha(viewState: ViewStateAccessor): Flow<Float> {
+ var startAlpha = 1f
+ return transitionAnimation.sharedFlow(
duration = 200.milliseconds,
onStart = {
+ startAlpha = viewState.alpha()
leaveShadeOpen = statusBarStateController.leaveOpenOnKeyguardHide()
willRunDismissFromKeyguard = primaryBouncerInteractor.willRunDismissFromKeyguard()
},
@@ -74,11 +77,12 @@ constructor(
if (willRunDismissFromKeyguard || leaveShadeOpen) {
1f
} else {
- 1f - it
+ MathUtils.lerp(startAlpha, 0f, it)
}
},
onFinish = { 1f },
)
+ }
/** Bouncer container alpha */
val bouncerAlpha: Flow<Float> =
diff --git a/packages/SystemUI/src/com/android/systemui/log/SessionTracker.java b/packages/SystemUI/src/com/android/systemui/log/SessionTracker.java
index e8ded03e3b38..ad306694346e 100644
--- a/packages/SystemUI/src/com/android/systemui/log/SessionTracker.java
+++ b/packages/SystemUI/src/com/android/systemui/log/SessionTracker.java
@@ -116,8 +116,8 @@ public class SessionTracker implements CoreStartable {
mSessionToInstanceId.put(type, instanceId);
if (UserManager.isVisibleBackgroundUsersEnabled() && !mProcessWrapper.isSystemUser()
- && !mProcessWrapper.isForegroundUser()) {
- // TODO: b/341604160 - Support visible background users properly.
+ && !mProcessWrapper.isForegroundUserOrProfile()) {
+ // TODO(b/341604160): Support visible background users properly.
if (DEBUG) {
Log.d(TAG, "Status bar manager is disabled for visible background users");
}
@@ -155,8 +155,8 @@ public class SessionTracker implements CoreStartable {
mUiEventLogger.log(endSessionUiEvent, instanceId);
}
if (UserManager.isVisibleBackgroundUsersEnabled() && !mProcessWrapper.isSystemUser()
- && !mProcessWrapper.isForegroundUser()) {
- // TODO: b/341604160 - Support visible background users properly.
+ && !mProcessWrapper.isForegroundUserOrProfile()) {
+ // TODO(b/341604160): Support visible background users properly.
if (DEBUG) {
Log.d(TAG, "Status bar manager is disabled for visible background users");
}
diff --git a/packages/SystemUI/src/com/android/systemui/log/LongPressHandlingViewLogger.kt b/packages/SystemUI/src/com/android/systemui/log/TouchHandlingViewLogger.kt
index 4ff81184d045..90c063e195eb 100644
--- a/packages/SystemUI/src/com/android/systemui/log/LongPressHandlingViewLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/log/TouchHandlingViewLogger.kt
@@ -19,17 +19,17 @@ package com.android.systemui.log
import com.android.systemui.log.core.LogLevel.DEBUG
import com.google.errorprone.annotations.CompileTimeConstant
-data class LongPressHandlingViewLogger
+data class TouchHandlingViewLogger
constructor(
private val logBuffer: LogBuffer,
- @CompileTimeConstant private val tag: String = "LongPressHandlingViewLogger"
+ @CompileTimeConstant private val tag: String = "TouchHandlingViewLogger",
) {
fun schedulingLongPress(delay: Long) {
logBuffer.log(
tag,
DEBUG,
{ long1 = delay },
- { "on MotionEvent.Down: scheduling long press activation after $long1 ms" }
+ { "on MotionEvent.Down: scheduling long press activation after $long1 ms" },
)
}
@@ -58,7 +58,7 @@ constructor(
"on MotionEvent.Up: distanceMoved: $double1, " +
"allowedTouchSlop: $int1, " +
"eventDuration: $long1"
- }
+ },
)
}
@@ -74,7 +74,7 @@ constructor(
"on MotionEvent.Motion: May cancel long press due to movement: " +
"distanceMoved: $double1, " +
"allowedTouchSlop: $int1 "
- }
+ },
)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/lowlightclock/AmbientLightModeMonitor.kt b/packages/SystemUI/src/com/android/systemui/lowlightclock/AmbientLightModeMonitor.kt
index ece97bd27df7..9e32dd8d74ae 100644
--- a/packages/SystemUI/src/com/android/systemui/lowlightclock/AmbientLightModeMonitor.kt
+++ b/packages/SystemUI/src/com/android/systemui/lowlightclock/AmbientLightModeMonitor.kt
@@ -29,6 +29,7 @@ import java.io.PrintWriter
import java.util.Optional
import javax.inject.Inject
import javax.inject.Named
+import javax.inject.Provider
/**
* Monitors ambient light signals, applies a debouncing algorithm, and produces the current ambient
@@ -43,7 +44,7 @@ class AmbientLightModeMonitor
constructor(
private val algorithm: Optional<DebounceAlgorithm>,
private val sensorManager: AsyncSensorManager,
- @Named(LIGHT_SENSOR) private val lightSensor: Optional<Sensor>,
+ @Named(LIGHT_SENSOR) private val lightSensor: Optional<Provider<Sensor>>,
) : Dumpable {
companion object {
private const val TAG = "AmbientLightModeMonitor"
@@ -67,7 +68,7 @@ constructor(
fun start(callback: Callback) {
if (DEBUG) Log.d(TAG, "start monitoring ambient light mode")
- if (lightSensor.isEmpty) {
+ if (lightSensor.isEmpty || lightSensor.get().get() == null) {
if (DEBUG) Log.w(TAG, "light sensor not available")
return
}
@@ -80,7 +81,7 @@ constructor(
algorithm.get().start(callback)
sensorManager.registerListener(
mSensorEventListener,
- lightSensor.get(),
+ lightSensor.get().get(),
SensorManager.SENSOR_DELAY_NORMAL,
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/lowlightclock/dagger/LowLightModule.java b/packages/SystemUI/src/com/android/systemui/lowlightclock/dagger/LowLightModule.java
index c08be51c0699..8469cb4ab565 100644
--- a/packages/SystemUI/src/com/android/systemui/lowlightclock/dagger/LowLightModule.java
+++ b/packages/SystemUI/src/com/android/systemui/lowlightclock/dagger/LowLightModule.java
@@ -16,6 +16,7 @@
package com.android.systemui.lowlightclock.dagger;
+import android.annotation.Nullable;
import android.content.res.Resources;
import android.hardware.Sensor;
@@ -100,6 +101,7 @@ public abstract class LowLightModule {
abstract LowLightDisplayController bindsLowLightDisplayController();
@BindsOptionalOf
+ @Nullable
@Named(LIGHT_SENSOR)
abstract Sensor bindsLightSensor();
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImpl.kt b/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImpl.kt
index 3eac12d2b24c..ea5f81c75405 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImpl.kt
@@ -306,7 +306,7 @@ class LegacyMediaDataManagerImpl(
}
init {
- dumpManager.registerDumpable(TAG, this)
+ dumpManager.registerNormalDumpable(TAG, this)
// Initialize the internal processing pipeline. The listeners at the front of the pipeline
// are set as internal listeners so that they receive events. From there, events are
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/domain/resume/MediaResumeListener.kt b/packages/SystemUI/src/com/android/systemui/media/controls/domain/resume/MediaResumeListener.kt
index ad84a5eb74ab..0a70e78bf039 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/domain/resume/MediaResumeListener.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/domain/resume/MediaResumeListener.kt
@@ -141,7 +141,7 @@ constructor(
init {
if (useMediaResumption) {
- dumpManager.registerDumpable(TAG, this)
+ dumpManager.registerNormalDumpable(TAG, this)
val unlockFilter = IntentFilter()
unlockFilter.addAction(Intent.ACTION_USER_UNLOCKED)
broadcastDispatcher.registerReceiver(
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/animation/ColorSchemeTransition.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/animation/ColorSchemeTransition.kt
index 02b403786768..21407f3bd6d4 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/animation/ColorSchemeTransition.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/animation/ColorSchemeTransition.kt
@@ -27,7 +27,6 @@ import android.graphics.drawable.RippleDrawable
import com.android.internal.R
import com.android.internal.annotations.VisibleForTesting
import com.android.settingslib.Utils
-import com.android.systemui.Flags
import com.android.systemui.media.controls.ui.view.MediaViewHolder
import com.android.systemui.monet.ColorScheme
import com.android.systemui.surfaceeffects.loadingeffect.LoadingEffect
@@ -52,7 +51,7 @@ interface ColorTransition {
open class AnimatingColorTransition(
private val defaultColor: Int,
private val extractColor: (ColorScheme) -> Int,
- private val applyColor: (Int) -> Unit,
+ private val applyColor: (Int) -> Unit
) : AnimatorUpdateListener, ColorTransition {
private val argbEvaluator = ArgbEvaluator()
@@ -106,52 +105,35 @@ internal constructor(
private val mediaViewHolder: MediaViewHolder,
private val multiRippleController: MultiRippleController,
private val turbulenceNoiseController: TurbulenceNoiseController,
- animatingColorTransitionFactory: AnimatingColorTransitionFactory,
+ animatingColorTransitionFactory: AnimatingColorTransitionFactory
) {
constructor(
context: Context,
mediaViewHolder: MediaViewHolder,
multiRippleController: MultiRippleController,
- turbulenceNoiseController: TurbulenceNoiseController,
+ turbulenceNoiseController: TurbulenceNoiseController
) : this(
context,
mediaViewHolder,
multiRippleController,
turbulenceNoiseController,
- ::AnimatingColorTransition,
+ ::AnimatingColorTransition
)
-
var loadingEffect: LoadingEffect? = null
- val bgColor =
- if (Flags.mediaControlsUiUpdate()) {
- context.getColor(R.color.materialColorOnSurface)
- } else {
- context.getColor(com.google.android.material.R.color.material_dynamic_neutral20)
- }
-
- val textColor = context.getColor(R.color.materialColorInverseOnSurface)
- val buttonBgColor = context.getColor(R.color.materialColorPrimary)
- val insideButtonColor = context.getColor(R.color.materialColorOnPrimary)
-
+ val bgColor = context.getColor(com.google.android.material.R.color.material_dynamic_neutral20)
val surfaceColor =
animatingColorTransitionFactory(bgColor, ::surfaceFromScheme) { surfaceColor ->
val colorList = ColorStateList.valueOf(surfaceColor)
- mediaViewHolder.albumView.backgroundTintList = colorList
- mediaViewHolder.gutsViewHolder.setSurfaceColor(surfaceColor)
-
- if (Flags.mediaControlsUiUpdate()) return@animatingColorTransitionFactory
mediaViewHolder.seamlessIcon.imageTintList = colorList
mediaViewHolder.seamlessText.setTextColor(surfaceColor)
+ mediaViewHolder.albumView.backgroundTintList = colorList
+ mediaViewHolder.gutsViewHolder.setSurfaceColor(surfaceColor)
}
val accentPrimary =
animatingColorTransitionFactory(
- if (Flags.mediaControlsUiUpdate()) {
- buttonBgColor
- } else {
- loadDefaultColor(R.attr.textColorPrimary)
- },
- ::accentPrimaryFromScheme,
+ loadDefaultColor(R.attr.textColorPrimary),
+ ::accentPrimaryFromScheme
) { accentPrimary ->
val accentColorList = ColorStateList.valueOf(accentPrimary)
mediaViewHolder.actionPlayPause.backgroundTintList = accentColorList
@@ -163,12 +145,8 @@ internal constructor(
val accentSecondary =
animatingColorTransitionFactory(
- if (Flags.mediaControlsUiUpdate()) {
- buttonBgColor
- } else {
- loadDefaultColor(R.attr.textColorPrimary)
- },
- ::accentSecondaryFromScheme,
+ loadDefaultColor(R.attr.textColorPrimary),
+ ::accentSecondaryFromScheme
) { accentSecondary ->
val colorList = ColorStateList.valueOf(accentSecondary)
(mediaViewHolder.seamlessButton.background as? RippleDrawable)?.let {
@@ -179,11 +157,7 @@ internal constructor(
val colorSeamless =
animatingColorTransitionFactory(
- if (Flags.mediaControlsUiUpdate()) {
- buttonBgColor
- } else {
- loadDefaultColor(R.attr.textColorPrimary)
- },
+ loadDefaultColor(R.attr.textColorPrimary),
{ colorScheme: ColorScheme ->
// A1-100 dark in dark theme, A1-200 in light theme
if (
@@ -196,17 +170,13 @@ internal constructor(
{ seamlessColor: Int ->
val accentColorList = ColorStateList.valueOf(seamlessColor)
mediaViewHolder.seamlessButton.backgroundTintList = accentColorList
- },
+ }
)
val textPrimary =
animatingColorTransitionFactory(
- if (Flags.mediaControlsUiUpdate()) {
- textColor
- } else {
- loadDefaultColor(R.attr.textColorPrimary)
- },
- ::textPrimaryFromScheme,
+ loadDefaultColor(R.attr.textColorPrimary),
+ ::textPrimaryFromScheme
) { textPrimary ->
mediaViewHolder.titleText.setTextColor(textPrimary)
val textColorList = ColorStateList.valueOf(textPrimary)
@@ -222,41 +192,25 @@ internal constructor(
val textPrimaryInverse =
animatingColorTransitionFactory(
- if (Flags.mediaControlsUiUpdate()) {
- insideButtonColor
- } else {
- loadDefaultColor(R.attr.textColorPrimaryInverse)
- },
- ::textPrimaryInverseFromScheme,
+ loadDefaultColor(R.attr.textColorPrimaryInverse),
+ ::textPrimaryInverseFromScheme
) { textPrimaryInverse ->
- val colorList = ColorStateList.valueOf(textPrimaryInverse)
- mediaViewHolder.actionPlayPause.imageTintList = colorList
-
- if (!Flags.mediaControlsUiUpdate()) return@animatingColorTransitionFactory
- mediaViewHolder.seamlessIcon.imageTintList = colorList
- mediaViewHolder.seamlessText.setTextColor(textPrimaryInverse)
+ mediaViewHolder.actionPlayPause.imageTintList =
+ ColorStateList.valueOf(textPrimaryInverse)
}
val textSecondary =
animatingColorTransitionFactory(
- if (Flags.mediaControlsUiUpdate()) {
- textColor
- } else {
- loadDefaultColor(R.attr.textColorSecondary)
- },
- ::textSecondaryFromScheme,
+ loadDefaultColor(R.attr.textColorSecondary),
+ ::textSecondaryFromScheme
) { textSecondary ->
mediaViewHolder.artistText.setTextColor(textSecondary)
}
val textTertiary =
animatingColorTransitionFactory(
- if (Flags.mediaControlsUiUpdate()) {
- textColor
- } else {
- loadDefaultColor(R.attr.textColorTertiary)
- },
- ::textTertiaryFromScheme,
+ loadDefaultColor(R.attr.textColorTertiary),
+ ::textTertiaryFromScheme
) { textTertiary ->
mediaViewHolder.seekBar.progressBackgroundTintList =
ColorStateList.valueOf(textTertiary)
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaController.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaController.kt
index 520cc2365088..606f71a162d8 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaController.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaController.kt
@@ -29,6 +29,7 @@ import com.android.systemui.media.controls.ui.view.MediaHost
import com.android.systemui.media.controls.ui.view.MediaHostState
import com.android.systemui.media.dagger.MediaModule.KEYGUARD
import com.android.systemui.plugins.statusbar.StatusBarStateController
+import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.statusbar.StatusBarState
import com.android.systemui.statusbar.SysuiStatusBarStateController
import com.android.systemui.statusbar.notification.stack.MediaContainerView
@@ -53,7 +54,7 @@ constructor(
@param:Named(KEYGUARD) private val mediaHost: MediaHost,
private val bypassController: KeyguardBypassController,
private val statusBarStateController: SysuiStatusBarStateController,
- private val context: Context,
+ @ShadeDisplayAware private val context: Context,
configurationController: ConfigurationController,
private val splitShadeStateController: SplitShadeStateController,
private val logger: KeyguardMediaControllerLogger,
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt
index f05029b2d55f..173b600de06b 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt
@@ -343,7 +343,7 @@ constructor(
.stateIn(applicationScope, SharingStarted.Eagerly, true)
init {
- dumpManager.registerDumpable(TAG, this)
+ dumpManager.registerNormalDumpable(TAG, this)
mediaFrame = inflateMediaCarousel()
mediaCarousel = mediaFrame.requireViewById(R.id.media_carousel_scroller)
pageIndicator = mediaFrame.requireViewById(R.id.media_page_indicator)
@@ -1472,6 +1472,7 @@ constructor(
}
// This is a hosting view, let's remeasure our players
+ val prevLocation = this.desiredLocation
this.desiredLocation = desiredLocation
this.desiredHostState = it
currentlyExpanded = it.expansion > 0
@@ -1504,7 +1505,11 @@ constructor(
mediaPlayer.closeGuts(!animate)
}
- mediaPlayer.mediaViewController.onLocationPreChange(desiredLocation)
+ mediaPlayer.mediaViewController.onLocationPreChange(
+ mediaPlayer.mediaViewHolder,
+ desiredLocation,
+ prevLocation,
+ )
}
} else {
controllerById.values.forEach { controller ->
@@ -1515,7 +1520,11 @@ constructor(
controller.closeGuts(!animate)
}
- controller.onLocationPreChange(desiredLocation)
+ controller.onLocationPreChange(
+ controller.mediaViewHolder,
+ desiredLocation,
+ prevLocation,
+ )
}
}
mediaCarouselScrollHandler.showsSettingsButton = !it.showsOnlyActiveMedia
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt
index 1f70ac946da0..20593942148b 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt
@@ -53,6 +53,7 @@ import com.android.systemui.media.dream.MediaDreamComplication
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.res.R
import com.android.systemui.scene.shared.flag.SceneContainerFlag
+import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.statusbar.CrossFadeHelper
import com.android.systemui.statusbar.StatusBarState
@@ -102,7 +103,7 @@ val View.isShownNotFaded: Boolean
class MediaHierarchyManager
@Inject
constructor(
- private val context: Context,
+ @ShadeDisplayAware private val context: Context,
private val statusBarStateController: SysuiStatusBarStateController,
private val keyguardStateController: KeyguardStateController,
private val bypassController: KeyguardBypassController,
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt
index c00e14c5957e..c1778119a3fd 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt
@@ -23,6 +23,7 @@ import android.content.Context
import android.content.res.Configuration
import android.graphics.Color
import android.graphics.Paint
+import android.graphics.Typeface
import android.graphics.drawable.Drawable
import android.provider.Settings
import android.view.View
@@ -43,6 +44,10 @@ import com.android.systemui.media.controls.ui.controller.MediaCarouselController
import com.android.systemui.media.controls.ui.view.GutsViewHolder
import com.android.systemui.media.controls.ui.view.MediaHostState
import com.android.systemui.media.controls.ui.view.MediaViewHolder
+import com.android.systemui.media.controls.ui.view.MediaViewHolder.Companion.headlineSmallTF
+import com.android.systemui.media.controls.ui.view.MediaViewHolder.Companion.labelLargeTF
+import com.android.systemui.media.controls.ui.view.MediaViewHolder.Companion.labelMediumTF
+import com.android.systemui.media.controls.ui.view.MediaViewHolder.Companion.titleMediumTF
import com.android.systemui.media.controls.ui.view.RecommendationViewHolder
import com.android.systemui.media.controls.ui.viewmodel.MediaControlViewModel
import com.android.systemui.media.controls.ui.viewmodel.SeekBarViewModel
@@ -186,6 +191,9 @@ constructor(
var isSeekBarEnabled: Boolean = false
+ /** Whether font family should be updated. */
+ private var isFontUpdateAllowed: Boolean = true
+
/** Not visible value for previous button when scrubbing */
private var prevNotVisibleValue = ConstraintSet.GONE
private var isPrevButtonAvailable = false
@@ -983,13 +991,20 @@ constructor(
val overrideSize = mediaHostStatesManager.carouselSizes[location]
var overridden = false
overrideSize?.let {
- // To be safe we're using a maximum here. The override size should always be set
- // properly though.
- if (
+ if (SceneContainerFlag.isEnabled) {
+ result.measureWidth = widthInSceneContainerPx
+ result.measureHeight = heightInSceneContainerPx
+ overridden = true
+ } else if (
result.measureHeight != it.measuredHeight || result.measureWidth != it.measuredWidth
) {
+ // To be safe we're using a maximum here. The override size should always be set
+ // properly though.
result.measureHeight = Math.max(it.measuredHeight, result.measureHeight)
result.measureWidth = Math.max(it.measuredWidth, result.measureWidth)
+ overridden = true
+ }
+ if (overridden) {
// The measureHeight and the shown height should both be set to the overridden
// height
result.height = result.measureHeight
@@ -1001,7 +1016,6 @@ constructor(
state.width = result.width
}
}
- overridden = true
}
}
if (overridden && state != null && state.squishFraction <= 1f) {
@@ -1102,11 +1116,43 @@ constructor(
return viewState
}
+ private fun updateFontPerLocation(viewHolder: MediaViewHolder?, location: Int) {
+ when (location) {
+ MediaHierarchyManager.LOCATION_COMMUNAL_HUB ->
+ viewHolder?.updateFontFamily(headlineSmallTF, titleMediumTF, labelMediumTF)
+ else -> viewHolder?.updateFontFamily(titleMediumTF, labelLargeTF, labelMediumTF)
+ }
+ }
+
+ private fun MediaViewHolder.updateFontFamily(
+ titleTF: Typeface,
+ artistTF: Typeface,
+ menuTF: Typeface,
+ ) {
+ gutsViewHolder.gutsText.setTypeface(menuTF)
+ gutsViewHolder.dismissText.setTypeface(menuTF)
+ titleText.setTypeface(titleTF)
+ artistText.setTypeface(artistTF)
+ seamlessText.setTypeface(menuTF)
+ }
+
/**
* Notify that the location is changing right now and a [setCurrentState] change is imminent.
* This updates the width the view will me measured with.
*/
- fun onLocationPreChange(@MediaLocation newLocation: Int) {
+ fun onLocationPreChange(
+ viewHolder: MediaViewHolder?,
+ @MediaLocation newLocation: Int,
+ @MediaLocation prevLocation: Int,
+ ) {
+ isFontUpdateAllowed =
+ isFontUpdateAllowed ||
+ MediaHierarchyManager.LOCATION_COMMUNAL_HUB == newLocation ||
+ MediaHierarchyManager.LOCATION_COMMUNAL_HUB == prevLocation
+ if (Flags.mediaControlsUiUpdate() && isFontUpdateAllowed) {
+ updateFontPerLocation(viewHolder, newLocation)
+ isFontUpdateAllowed = false
+ }
obtainViewStateForLocation(newLocation)?.let { layoutController.setMeasureState(it) }
}
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/view/MediaViewHolder.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/view/MediaViewHolder.kt
index 35309ea65a4c..0e8e595f5b06 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/view/MediaViewHolder.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/view/MediaViewHolder.kt
@@ -16,6 +16,7 @@
package com.android.systemui.media.controls.ui.view
+import android.graphics.Typeface
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -139,7 +140,7 @@ class MediaViewHolder constructor(itemView: View) {
R.id.action4,
R.id.icon,
R.id.media_scrubbing_elapsed_time,
- R.id.media_scrubbing_total_time
+ R.id.media_scrubbing_total_time,
)
// Buttons used for notification-based actions
@@ -175,5 +176,10 @@ class MediaViewHolder constructor(itemView: View) {
R.id.loading_effect_view,
R.id.touch_ripple_view,
)
+
+ val headlineSmallTF: Typeface = Typeface.create("gsf-headline-small", Typeface.NORMAL)
+ val titleMediumTF: Typeface = Typeface.create("gsf-title-medium", Typeface.NORMAL)
+ val labelMediumTF: Typeface = Typeface.create("gsf-label-medium", Typeface.NORMAL)
+ val labelLargeTF: Typeface = Typeface.create("gsf-label-large", Typeface.NORMAL)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaItem.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaItem.java
index 4496b258bde4..7b1c62e2a0e5 100644
--- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaItem.java
+++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaItem.java
@@ -36,6 +36,7 @@ public class MediaItem {
private final String mTitle;
@MediaItemType
private final int mMediaItemType;
+ private final boolean mIsFirstDeviceInGroup;
@Retention(RetentionPolicy.SOURCE)
@IntDef({
@@ -54,7 +55,18 @@ public class MediaItem {
* name.
*/
public static MediaItem createDeviceMediaItem(@NonNull MediaDevice device) {
- return new MediaItem(device, device.getName(), MediaItemType.TYPE_DEVICE);
+ return new MediaItem(device, device.getName(), MediaItemType.TYPE_DEVICE, false);
+ }
+
+ /**
+ * Returns a new {@link MediaItemType#TYPE_DEVICE} {@link MediaItem} with its {@link
+ * #getMediaDevice() media device} set to {@code device} and its title set to {@code device}'s
+ * name.
+ */
+ public static MediaItem createDeviceMediaItem(
+ @NonNull MediaDevice device, boolean isFirstDeviceInGroup) {
+ return new MediaItem(
+ device, device.getName(), MediaItemType.TYPE_DEVICE, isFirstDeviceInGroup);
}
/**
@@ -63,7 +75,10 @@ public class MediaItem {
*/
public static MediaItem createPairNewDeviceMediaItem() {
return new MediaItem(
- /* device */ null, /* title */ null, MediaItemType.TYPE_PAIR_NEW_DEVICE);
+ /* device */ null,
+ /* title */ null,
+ MediaItemType.TYPE_PAIR_NEW_DEVICE,
+ /* mIsFirstDeviceInGroup */ false);
}
/**
@@ -71,14 +86,22 @@ public class MediaItem {
* title and a {@code null} {@link #getMediaDevice() media device}.
*/
public static MediaItem createGroupDividerMediaItem(@Nullable String title) {
- return new MediaItem(/* device */ null, title, MediaItemType.TYPE_GROUP_DIVIDER);
+ return new MediaItem(
+ /* device */ null,
+ title,
+ MediaItemType.TYPE_GROUP_DIVIDER,
+ /* misFirstDeviceInGroup */ false);
}
private MediaItem(
- @Nullable MediaDevice device, @Nullable String title, @MediaItemType int type) {
+ @Nullable MediaDevice device,
+ @Nullable String title,
+ @MediaItemType int type,
+ boolean isFirstDeviceInGroup) {
this.mMediaDeviceOptional = Optional.ofNullable(device);
this.mTitle = title;
this.mMediaItemType = type;
+ this.mIsFirstDeviceInGroup = isFirstDeviceInGroup;
}
public Optional<MediaDevice> getMediaDevice() {
@@ -106,4 +129,8 @@ public class MediaItem {
public int getMediaItemType() {
return mMediaItemType;
}
+
+ public boolean isFirstDeviceInGroup() {
+ return mIsFirstDeviceInGroup;
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java
index 53f3b3a7a59d..c9740811101b 100644
--- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java
+++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java
@@ -21,6 +21,7 @@ import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECT
import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECTION_BEHAVIOR_TRANSFER;
import android.annotation.DrawableRes;
+import android.annotation.StringRes;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.drawable.AnimatedVectorDrawable;
@@ -33,11 +34,13 @@ import android.widget.TextView;
import androidx.annotation.DoNotInline;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.core.widget.CompoundButtonCompat;
import androidx.recyclerview.widget.RecyclerView;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.media.flags.Flags;
import com.android.settingslib.media.LocalMediaManager.MediaDeviceState;
import com.android.settingslib.media.MediaDevice;
import com.android.systemui.res.R;
@@ -52,9 +55,10 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
private static final String TAG = "MediaOutputAdapter";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
- private static final float DEVICE_DISCONNECTED_ALPHA = 0.5f;
- private static final float DEVICE_CONNECTED_ALPHA = 1f;
+ private static final float DEVICE_DISABLED_ALPHA = 0.5f;
+ private static final float DEVICE_ACTIVE_ALPHA = 1f;
protected List<MediaItem> mMediaItemList = new CopyOnWriteArrayList<>();
+ private boolean mShouldGroupSelectedMediaItems = Flags.enableOutputSwitcherSessionGrouping();
public MediaOutputAdapter(MediaSwitchingController controller) {
super(controller);
@@ -65,6 +69,12 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
public void updateItems() {
mMediaItemList.clear();
mMediaItemList.addAll(mController.getMediaItemList());
+ if (mShouldGroupSelectedMediaItems) {
+ if (mController.getSelectedMediaDevice().size() == 1) {
+ // Don't group devices if initially there isn't more than one selected.
+ mShouldGroupSelectedMediaItems = false;
+ }
+ }
notifyDataSetChanged();
}
@@ -101,7 +111,7 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
break;
case MediaItem.MediaItemType.TYPE_DEVICE:
((MediaDeviceViewHolder) viewHolder).onBind(
- currentMediaItem.getMediaDevice().get(),
+ currentMediaItem,
position);
break;
default:
@@ -141,183 +151,197 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
super(view);
}
- @Override
- void onBind(MediaDevice device, int position) {
+ void onBind(MediaItem mediaItem, int position) {
+ MediaDevice device = mediaItem.getMediaDevice().get();
super.onBind(device, position);
boolean isMutingExpectedDeviceExist = mController.hasMutingExpectedDevice();
final boolean currentlyConnected = isCurrentlyConnected(device);
- boolean isCurrentSeekbarInvisible = mSeekBar.getVisibility() == View.GONE;
+ boolean isSelected = isDeviceIncluded(mController.getSelectedMediaDevice(), device);
+ boolean isDeselectable =
+ isDeviceIncluded(mController.getDeselectableMediaDevice(), device);
+ boolean isSelectable = isDeviceIncluded(mController.getSelectableMediaDevice(), device);
+ boolean isTransferable =
+ isDeviceIncluded(mController.getTransferableMediaDevices(), device);
+ boolean hasRouteListingPreferenceItem = device.hasRouteListingPreferenceItem();
+
+ if (DEBUG) {
+ Log.d(
+ TAG,
+ "["
+ + position
+ + "] "
+ + device.getName()
+ + " ["
+ + (isDeselectable ? "deselectable" : "")
+ + "] ["
+ + (isSelected ? "selected" : "")
+ + "] ["
+ + (isSelectable ? "selectable" : "")
+ + "] ["
+ + (isTransferable ? "transferable" : "")
+ + "] ["
+ + (hasRouteListingPreferenceItem ? "hasListingPreference" : "")
+ + "]");
+ }
+
+ boolean isDeviceGroup = false;
+ GroupStatus groupStatus = null;
+ OngoingSessionStatus ongoingSessionStatus = null;
+ ConnectionState connectionState = ConnectionState.DISCONNECTED;
+ boolean restrictVolumeAdjustment = mController.hasAdjustVolumeUserRestriction();
+ String subtitle = null;
+ Drawable deviceStatusIcon = null;
+ boolean deviceDisabled = false;
+ View.OnClickListener clickListener = null;
+
if (mCurrentActivePosition == position) {
mCurrentActivePosition = -1;
}
- mStatusIcon.setVisibility(View.GONE);
- enableFocusPropertyForView(mContainerLayout);
+ mItemLayout.setVisibility(View.VISIBLE);
if (mController.isAnyDeviceTransferring()) {
- if (device.getState() == MediaDeviceState.STATE_CONNECTING
- && !mController.hasAdjustVolumeUserRestriction()) {
- setUpDeviceIcon(device);
- updateProgressBarColor();
- setSingleLineLayout(device.getName(), false /* showSeekBar*/,
- true /* showProgressBar */, false /* showCheckBox */,
- false /* showEndTouchArea */);
- } else {
- setUpDeviceIcon(device);
- setSingleLineLayout(device.getName());
+ if (device.getState() == MediaDeviceState.STATE_CONNECTING) {
+ connectionState = ConnectionState.CONNECTING;
}
} else {
// Set different layout for each device
if (device.isMutingExpectedDevice()
&& !mController.isCurrentConnectedDeviceRemote()) {
- updateUnmutedVolumeIcon(device);
+ connectionState = ConnectionState.CONNECTED;
+ restrictVolumeAdjustment = true;
mCurrentActivePosition = position;
- updateFullItemClickListener(v -> onItemClick(v, device));
- setSingleLineLayout(device.getName());
- initFakeActiveDevice(device);
+ clickListener = v -> onItemClick(v, device);
+ } else if (mShouldGroupSelectedMediaItems
+ && mController.getSelectedMediaDevice().size() > 1
+ && isDeviceIncluded(mController.getSelectedMediaDevice(), device)) {
+ if (!mediaItem.isFirstDeviceInGroup()) {
+ mItemLayout.setVisibility(View.GONE);
+ return;
+ } else {
+ isDeviceGroup = true;
+ }
} else if (device.hasSubtext()) {
+ subtitle = device.getSubtextString();
boolean isActiveWithOngoingSession =
- (device.hasOngoingSession() && (currentlyConnected || isDeviceIncluded(
- mController.getSelectedMediaDevice(), device)));
- boolean isHost = device.isHostForOngoingSession()
- && isActiveWithOngoingSession;
+ device.hasOngoingSession() && (currentlyConnected || isSelected);
if (isActiveWithOngoingSession) {
mCurrentActivePosition = position;
- updateUnmutedVolumeIcon(device);
- mSubTitleText.setText(device.getSubtextString());
- updateContentAlpha(DEVICE_CONNECTED_ALPHA);
- updateEndClickAreaAsSessionEditing(device,
- isHost ? R.drawable.media_output_status_edit_session
- : R.drawable.ic_sound_bars_anim);
- setTwoLineLayout(device.getName() /* title */,
- true /* showSeekBar */, false /* showProgressBar */,
- true /* showSubtitle */, false /* showStatus */,
- true /* showEndTouchArea */);
- initSeekbar(device, isCurrentSeekbarInvisible);
+ ongoingSessionStatus = new OngoingSessionStatus(
+ device.isHostForOngoingSession());
+ connectionState = ConnectionState.CONNECTED;
} else {
if (currentlyConnected) {
mCurrentActivePosition = position;
- updateUnmutedVolumeIcon(device);
- } else {
- setUpDeviceIcon(device);
- }
- mSubTitleText.setText(device.getSubtextString());
- Drawable deviceStatusIcon =
- device.hasOngoingSession() ? mContext.getDrawable(
- R.drawable.ic_sound_bars_anim)
- : Api34Impl.getDeviceStatusIconBasedOnSelectionBehavior(
- device,
- mContext);
- if (deviceStatusIcon != null) {
- updateDeviceStatusIcon(deviceStatusIcon);
+ connectionState = ConnectionState.CONNECTED;
}
- updateContentAlpha(
- updateClickActionBasedOnSelectionBehavior(device)
- ? DEVICE_CONNECTED_ALPHA : DEVICE_DISCONNECTED_ALPHA);
- setTwoLineLayout(device.getName(),
- currentlyConnected /* showSeekBar */,
- false /* showProgressBar */, true /* showSubtitle */,
- deviceStatusIcon != null /* showStatus */);
+ clickListener = getClickListenerBasedOnSelectionBehavior(device);
+ deviceDisabled = clickListener == null;
+ deviceStatusIcon = getDeviceStatusIcon(device, device.hasOngoingSession());
}
} else if (device.getState() == MediaDeviceState.STATE_CONNECTING_FAILED) {
- setUpDeviceIcon(device);
- updateConnectionFailedStatusIcon();
- mSubTitleText.setText(R.string.media_output_dialog_connect_failed);
- updateFullItemClickListener(v -> onItemClick(v, device));
- setTwoLineLayout(device.getName(), false /* showSeekBar */,
- false /* showProgressBar */, true /* showSubtitle */,
- true /* showStatus */);
+ deviceStatusIcon = mContext.getDrawable(R.drawable.media_output_status_failed);
+ subtitle = mContext.getString(R.string.media_output_dialog_connect_failed);
+ clickListener = v -> onItemClick(v, device);
} else if (device.getState() == MediaDeviceState.STATE_GROUPING) {
- setUpDeviceIcon(device);
- updateProgressBarColor();
- setSingleLineLayout(device.getName(), false /* showSeekBar*/,
- true /* showProgressBar */, false /* showCheckBox */,
- false /* showEndTouchArea */);
- } else if (mController.getSelectedMediaDevice().size() > 1
- && isDeviceIncluded(mController.getSelectedMediaDevice(), device)) {
+ connectionState = ConnectionState.CONNECTING;
+ } else if (mController.getSelectedMediaDevice().size() > 1 && isSelected) {
// selected device in group
- boolean isDeviceDeselectable = isDeviceIncluded(
- mController.getDeselectableMediaDevice(), device);
- updateUnmutedVolumeIcon(device);
- updateGroupableCheckBox(true, isDeviceDeselectable, device);
- updateEndClickArea(device, isDeviceDeselectable);
- disableFocusPropertyForView(mContainerLayout);
- setUpContentDescriptionForView(mSeekBar, device);
- setSingleLineLayout(device.getName(), true /* showSeekBar */,
- false /* showProgressBar */, true /* showCheckBox */,
- true /* showEndTouchArea */);
- initSeekbar(device, isCurrentSeekbarInvisible);
- } else if (!mController.hasAdjustVolumeUserRestriction()
- && currentlyConnected) {
+ groupStatus = new GroupStatus(
+ true /* selected */,
+ isDeselectable /* deselectable */);
+ connectionState = ConnectionState.CONNECTED;
+ } else if (currentlyConnected) {
// single selected device
if (isMutingExpectedDeviceExist
&& !mController.isCurrentConnectedDeviceRemote()) {
// mark as disconnected and set special click listener
- setUpDeviceIcon(device);
- updateFullItemClickListener(v -> cancelMuteAwaitConnection());
- setSingleLineLayout(device.getName());
+ clickListener = v -> cancelMuteAwaitConnection();
} else if (device.hasOngoingSession()) {
mCurrentActivePosition = position;
- updateUnmutedVolumeIcon(device);
- updateEndClickAreaAsSessionEditing(device, device.isHostForOngoingSession()
- ? R.drawable.media_output_status_edit_session
- : R.drawable.ic_sound_bars_anim);
- mEndClickIcon.setVisibility(View.VISIBLE);
- setSingleLineLayout(device.getName(), true /* showSeekBar */,
- false /* showProgressBar */, false /* showCheckBox */,
- true /* showEndTouchArea */);
- initSeekbar(device, isCurrentSeekbarInvisible);
+ ongoingSessionStatus = new OngoingSessionStatus(
+ device.isHostForOngoingSession());
+ connectionState = ConnectionState.CONNECTED;
} else if (mController.isCurrentConnectedDeviceRemote()
&& !mController.getSelectableMediaDevice().isEmpty()) {
//If device is connected and there's other selectable devices, layout as
// one of selected devices.
- updateUnmutedVolumeIcon(device);
- boolean isDeviceDeselectable = isDeviceIncluded(
- mController.getDeselectableMediaDevice(), device);
- updateGroupableCheckBox(true, isDeviceDeselectable, device);
- updateEndClickArea(device, isDeviceDeselectable);
- disableFocusPropertyForView(mContainerLayout);
- setUpContentDescriptionForView(mSeekBar, device);
- setSingleLineLayout(device.getName(), true /* showSeekBar */,
- false /* showProgressBar */, true /* showCheckBox */,
- true /* showEndTouchArea */);
- initSeekbar(device, isCurrentSeekbarInvisible);
+ groupStatus = new GroupStatus(
+ true /* selected */,
+ isDeselectable /* isDeselectable */);
+ connectionState = ConnectionState.CONNECTED;
} else {
- updateUnmutedVolumeIcon(device);
- disableFocusPropertyForView(mContainerLayout);
- setUpContentDescriptionForView(mSeekBar, device);
mCurrentActivePosition = position;
- setSingleLineLayout(device.getName(), true /* showSeekBar */,
- false /* showProgressBar */, false /* showCheckBox */,
- false /* showEndTouchArea */);
- initSeekbar(device, isCurrentSeekbarInvisible);
+ connectionState = ConnectionState.CONNECTED;
}
- } else if (isDeviceIncluded(mController.getSelectableMediaDevice(), device)) {
+ } else if (isSelectable) {
//groupable device
- setUpDeviceIcon(device);
- updateGroupableCheckBox(false, true, device);
- updateEndClickArea(device, true);
- updateFullItemClickListener(v -> onItemClick(v, device));
- setSingleLineLayout(device.getName(), false /* showSeekBar */,
- false /* showProgressBar */, true /* showCheckBox */,
- true /* showEndTouchArea */);
- } else {
- setUpDeviceIcon(device);
- setSingleLineLayout(device.getName());
- Drawable deviceStatusIcon =
- device.hasOngoingSession() ? mContext.getDrawable(
- R.drawable.ic_sound_bars_anim)
- : Api34Impl.getDeviceStatusIconBasedOnSelectionBehavior(
- device,
- mContext);
- if (deviceStatusIcon != null) {
- updateDeviceStatusIcon(deviceStatusIcon);
- mStatusIcon.setVisibility(View.VISIBLE);
+ groupStatus = new GroupStatus(false /* selected */, true /* deselectable */);
+ if (!Flags.disableTransferWhenAppsDoNotSupport()
+ || isTransferable
+ || hasRouteListingPreferenceItem) {
+ clickListener = v -> onItemClick(v, device);
}
- updateContentAlpha(
- updateClickActionBasedOnSelectionBehavior(device)
- ? DEVICE_CONNECTED_ALPHA : DEVICE_DISCONNECTED_ALPHA);
+ deviceDisabled = clickListener == null;
+ } else {
+ deviceStatusIcon = getDeviceStatusIcon(device, device.hasOngoingSession());
+ clickListener = getClickListenerBasedOnSelectionBehavior(device);
+ deviceDisabled = clickListener == null;
}
}
+
+ if (isDeviceGroup) {
+ String sessionName = mController.getSessionName() == null ? ""
+ : mController.getSessionName().toString();
+ updateTitle(sessionName);
+ updateUnmutedVolumeIcon(null /* device */);
+ updateGroupSeekBar(getGroupItemContentDescription(sessionName));
+ updateEndAreaForDeviceGroup();
+ updateItemBackground(ConnectionState.CONNECTED);
+ } else {
+ updateTitle(device.getName());
+ updateTitleIcon(device, connectionState, restrictVolumeAdjustment);
+ updateSeekBar(device, connectionState, restrictVolumeAdjustment,
+ getDeviceItemContentDescription(device));
+ updateEndArea(device, connectionState, groupStatus, ongoingSessionStatus);
+ updateLoadingIndicator(connectionState);
+ updateFullItemClickListener(clickListener);
+ updateContentAlpha(deviceDisabled);
+ updateSubtitle(subtitle);
+ updateDeviceStatusIcon(deviceStatusIcon);
+ updateItemBackground(connectionState);
+ }
+ }
+
+ /** Renders the right side round pill button / checkbox. */
+ private void updateEndArea(@NonNull MediaDevice device, ConnectionState connectionState,
+ @Nullable GroupStatus groupStatus,
+ @Nullable OngoingSessionStatus ongoingSessionStatus) {
+ boolean showEndArea = false;
+ boolean isCheckbox = false;
+ // If both group status and the ongoing session status are present, only the ongoing
+ // session controls are displayed. The current layout design doesn't allow both group
+ // and ongoing session controls to be rendered simultaneously.
+ if (ongoingSessionStatus != null && connectionState == ConnectionState.CONNECTED) {
+ showEndArea = true;
+ updateEndAreaForOngoingSession(device, ongoingSessionStatus.host());
+ } else if (groupStatus != null && shouldShowGroupCheckbox(groupStatus)) {
+ showEndArea = true;
+ isCheckbox = true;
+ updateEndAreaForGroupCheckBox(device, groupStatus);
+ }
+ updateEndAreaVisibility(showEndArea, isCheckbox);
+ }
+
+ private boolean shouldShowGroupCheckbox(@NonNull GroupStatus groupStatus) {
+ if (Flags.enableOutputSwitcherSessionGrouping()) {
+ return isGroupCheckboxEnabled(groupStatus);
+ }
+ return true;
+ }
+
+ private boolean isGroupCheckboxEnabled(@NonNull GroupStatus groupStatus) {
+ boolean disabled = groupStatus.selected() && !groupStatus.deselectable();
+ return !disabled;
}
public void setCheckBoxColor(CheckBox checkBox, int color) {
@@ -327,85 +351,104 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
ColorStateList(states, colors));
}
- private void updateContentAlpha(float alphaValue) {
+ private void updateContentAlpha(boolean deviceDisabled) {
+ float alphaValue = deviceDisabled ? DEVICE_DISABLED_ALPHA : DEVICE_ACTIVE_ALPHA;
mTitleIcon.setAlpha(alphaValue);
mTitleText.setAlpha(alphaValue);
mSubTitleText.setAlpha(alphaValue);
mStatusIcon.setAlpha(alphaValue);
}
- private void updateEndClickAreaAsSessionEditing(MediaDevice device, @DrawableRes int id) {
- mEndClickIcon.setOnClickListener(null);
- mEndTouchArea.setOnClickListener(null);
- updateEndClickAreaColor(mController.getColorSeekbarProgress());
+ private void updateEndAreaForDeviceGroup() {
+ updateEndAreaWithIcon(
+ v -> {
+ mShouldGroupSelectedMediaItems = false;
+ notifyDataSetChanged();
+ },
+ R.drawable.media_output_item_expand_group,
+ R.string.accessibility_expand_group);
+ updateEndAreaVisibility(true /* showEndArea */, false /* isCheckbox */);
+ }
+
+ private void updateEndAreaForOngoingSession(@NonNull MediaDevice device, boolean isHost) {
+ updateEndAreaWithIcon(
+ v -> mController.tryToLaunchInAppRoutingIntent(device.getId(), v),
+ isHost ? R.drawable.media_output_status_edit_session
+ : R.drawable.ic_sound_bars_anim,
+ R.string.accessibility_open_application);
+ }
+
+ private void updateEndAreaWithIcon(View.OnClickListener clickListener,
+ @DrawableRes int iconDrawableId,
+ @StringRes int accessibilityStringId) {
+ updateEndAreaColor(mController.getColorSeekbarProgress());
mEndClickIcon.setImageTintList(
ColorStateList.valueOf(mController.getColorItemContent()));
- mEndClickIcon.setOnClickListener(
- v -> mController.tryToLaunchInAppRoutingIntent(device.getId(), v));
+ mEndClickIcon.setOnClickListener(clickListener);
mEndTouchArea.setOnClickListener(v -> mEndClickIcon.performClick());
- Drawable drawable = mContext.getDrawable(id);
+ Drawable drawable = mContext.getDrawable(iconDrawableId);
mEndClickIcon.setImageDrawable(drawable);
if (drawable instanceof AnimatedVectorDrawable) {
((AnimatedVectorDrawable) drawable).start();
}
+ if (Flags.enableOutputSwitcherSessionGrouping()) {
+ mEndClickIcon.setContentDescription(mContext.getString(accessibilityStringId));
+ }
}
- public void updateEndClickAreaColor(int color) {
+ public void updateEndAreaColor(int color) {
mEndTouchArea.setBackgroundTintList(
ColorStateList.valueOf(color));
}
- private boolean updateClickActionBasedOnSelectionBehavior(MediaDevice device) {
- View.OnClickListener clickListener = Api34Impl.getClickListenerBasedOnSelectionBehavior(
+ @Nullable
+ private View.OnClickListener getClickListenerBasedOnSelectionBehavior(
+ @NonNull MediaDevice device) {
+ return Api34Impl.getClickListenerBasedOnSelectionBehavior(
device, mController, v -> onItemClick(v, device));
- updateFullItemClickListener(clickListener);
- return clickListener != null;
}
- private void updateConnectionFailedStatusIcon() {
- mStatusIcon.setImageDrawable(
- mContext.getDrawable(R.drawable.media_output_status_failed));
- mStatusIcon.setImageTintList(
- ColorStateList.valueOf(mController.getColorItemContent()));
- }
-
- private void updateDeviceStatusIcon(Drawable drawable) {
- mStatusIcon.setImageDrawable(drawable);
- mStatusIcon.setImageTintList(
- ColorStateList.valueOf(mController.getColorItemContent()));
- if (drawable instanceof AnimatedVectorDrawable) {
- ((AnimatedVectorDrawable) drawable).start();
+ @Nullable
+ private Drawable getDeviceStatusIcon(MediaDevice device, boolean hasOngoingSession) {
+ if (hasOngoingSession) {
+ return mContext.getDrawable(R.drawable.ic_sound_bars_anim);
+ } else {
+ return Api34Impl.getDeviceStatusIconBasedOnSelectionBehavior(device, mContext);
}
}
- private void updateProgressBarColor() {
- mProgressBar.getIndeterminateDrawable().setTintList(
- ColorStateList.valueOf(mController.getColorItemContent()));
+ void updateDeviceStatusIcon(@Nullable Drawable deviceStatusIcon) {
+ if (deviceStatusIcon == null) {
+ mStatusIcon.setVisibility(View.GONE);
+ } else {
+ mStatusIcon.setImageDrawable(deviceStatusIcon);
+ mStatusIcon.setImageTintList(
+ ColorStateList.valueOf(mController.getColorItemContent()));
+ if (deviceStatusIcon instanceof AnimatedVectorDrawable) {
+ ((AnimatedVectorDrawable) deviceStatusIcon).start();
+ }
+ mStatusIcon.setVisibility(View.VISIBLE);
+ }
}
- public void updateEndClickArea(MediaDevice device, boolean isDeviceDeselectable) {
- mEndTouchArea.setOnClickListener(null);
+ public void updateEndAreaForGroupCheckBox(@NonNull MediaDevice device,
+ @NonNull GroupStatus groupStatus) {
+ boolean isEnabled = isGroupCheckboxEnabled(groupStatus);
mEndTouchArea.setOnClickListener(
- isDeviceDeselectable ? (v) -> mCheckBox.performClick() : null);
- mEndTouchArea.setImportantForAccessibility(
- View.IMPORTANT_FOR_ACCESSIBILITY_YES);
- mEndTouchArea.setBackgroundTintList(
- ColorStateList.valueOf(mController.getColorItemBackground()));
- setUpContentDescriptionForView(mEndTouchArea, device);
- }
-
- private void updateGroupableCheckBox(boolean isSelected, boolean isGroupable,
- MediaDevice device) {
- mCheckBox.setOnCheckedChangeListener(null);
- mCheckBox.setChecked(isSelected);
+ isEnabled ? (v) -> mCheckBox.performClick() : null);
+ mEndTouchArea.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
+ updateEndAreaColor(groupStatus.selected() ? mController.getColorSeekbarProgress()
+ : mController.getColorItemBackground());
+ mEndTouchArea.setContentDescription(getDeviceItemContentDescription(device));
+ mCheckBox.setChecked(groupStatus.selected());
mCheckBox.setOnCheckedChangeListener(
- isGroupable ? (buttonView, isChecked) -> onGroupActionTriggered(!isSelected,
- device) : null);
- mCheckBox.setEnabled(isGroupable);
+ isEnabled ? (buttonView, isChecked) -> onGroupActionTriggered(
+ !groupStatus.selected(), device) : null);
+ mCheckBox.setEnabled(isEnabled);
setCheckBoxColor(mCheckBox, mController.getColorItemContent());
}
- private void updateFullItemClickListener(View.OnClickListener listener) {
+ private void updateFullItemClickListener(@Nullable View.OnClickListener listener) {
mContainerLayout.setOnClickListener(listener);
updateIconAreaClickListener(listener);
}
@@ -414,7 +457,8 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
void onBindPairNewDevice() {
mTitleText.setTextColor(mController.getColorItemContent());
mCheckBox.setVisibility(View.GONE);
- setSingleLineLayout(mContext.getText(R.string.media_output_dialog_pairing_new));
+ updateTitle(mContext.getText(R.string.media_output_dialog_pairing_new));
+ updateItemBackground(ConnectionState.DISCONNECTED);
final Drawable addDrawable = mContext.getDrawable(R.drawable.ic_add);
mTitleIcon.setImageDrawable(addDrawable);
mTitleIcon.setImageTintList(
@@ -468,22 +512,15 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
notifyDataSetChanged();
}
- private void disableFocusPropertyForView(View view) {
- view.setFocusable(false);
- view.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
- }
-
- private void enableFocusPropertyForView(View view) {
- view.setFocusable(true);
- view.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO);
+ private String getDeviceItemContentDescription(@NonNull MediaDevice device) {
+ return mContext.getString(
+ device.getDeviceType() == MediaDevice.MediaDeviceType.TYPE_BLUETOOTH_DEVICE
+ ? R.string.accessibility_bluetooth_name
+ : R.string.accessibility_cast_name, device.getName());
}
- private void setUpContentDescriptionForView(View view, MediaDevice device) {
- view.setContentDescription(
- mContext.getString(device.getDeviceType()
- == MediaDevice.MediaDeviceType.TYPE_BLUETOOTH_DEVICE
- ? R.string.accessibility_bluetooth_name
- : R.string.accessibility_cast_name, device.getName()));
+ private String getGroupItemContentDescription(String sessionName) {
+ return mContext.getString(R.string.accessibility_cast_name, sessionName);
}
}
@@ -520,6 +557,7 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
}
@DoNotInline
+ @Nullable
static Drawable getDeviceStatusIconBasedOnSelectionBehavior(MediaDevice device,
Context context) {
switch (device.getSelectionBehavior()) {
diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java
index 9b24c69cac30..f97b3d3d5e38 100644
--- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java
+++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java
@@ -22,7 +22,6 @@ import android.app.WallpaperColors;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.drawable.ClipDrawable;
-import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.Icon;
import android.graphics.drawable.LayerDrawable;
@@ -39,9 +38,11 @@ import android.widget.SeekBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.recyclerview.widget.RecyclerView;
+import com.android.media.flags.Flags;
import com.android.settingslib.media.InputMediaDevice;
import com.android.settingslib.media.MediaDevice;
import com.android.settingslib.utils.ThreadUtils;
@@ -55,6 +56,16 @@ import java.util.List;
public abstract class MediaOutputBaseAdapter extends
RecyclerView.Adapter<RecyclerView.ViewHolder> {
+ record OngoingSessionStatus(boolean host) {}
+
+ record GroupStatus(Boolean selected, Boolean deselectable) {}
+
+ enum ConnectionState {
+ CONNECTED,
+ CONNECTING,
+ DISCONNECTED,
+ }
+
protected final MediaSwitchingController mController;
private static final int UNMUTE_DEFAULT_VOLUME = 2;
@@ -140,6 +151,8 @@ public abstract class MediaOutputBaseAdapter extends
final ImageView mEndClickIcon;
@VisibleForTesting
MediaOutputSeekbar mSeekBar;
+ private final float mInactiveRadius;
+ private final float mActiveRadius;
private String mDeviceId;
private ValueAnimator mCornerAnimator;
private ValueAnimator mVolumeAnimator;
@@ -160,6 +173,10 @@ public abstract class MediaOutputBaseAdapter extends
mEndClickIcon = view.requireViewById(R.id.media_output_item_end_click_icon);
mVolumeValueText = view.requireViewById(R.id.volume_value);
mIconAreaLayout = view.requireViewById(R.id.icon_area);
+ mInactiveRadius = mContext.getResources().getDimension(
+ R.dimen.media_output_dialog_background_radius);
+ mActiveRadius = mContext.getResources().getDimension(
+ R.dimen.media_output_dialog_active_background_radius);
initAnimator();
}
@@ -168,6 +185,7 @@ public abstract class MediaOutputBaseAdapter extends
mCheckBox.setVisibility(View.GONE);
mStatusIcon.setVisibility(View.GONE);
mEndTouchArea.setVisibility(View.GONE);
+ mEndClickIcon.setVisibility(View.GONE);
mEndTouchArea.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
mContainerLayout.setOnClickListener(null);
mContainerLayout.setContentDescription(null);
@@ -177,79 +195,96 @@ public abstract class MediaOutputBaseAdapter extends
mIconAreaLayout.setBackground(null);
mSeekBar.setProgressTintList(
ColorStateList.valueOf(mController.getColorSeekbarProgress()));
+ enableFocusPropertyForView(mContainerLayout);
}
- void setSingleLineLayout(CharSequence title) {
- setSingleLineLayout(title, false, false, false, false);
+ void updateTitle(CharSequence title) {
+ mTitleText.setText(title);
}
- void setSingleLineLayout(CharSequence title, boolean showSeekBar,
- boolean showProgressBar, boolean showCheckBox, boolean showEndTouchArea) {
- boolean isActive = showSeekBar || showProgressBar;
+ void updateSeekBar(@NonNull MediaDevice device, ConnectionState connectionState,
+ boolean restrictVolumeAdjustment, String contentDescription) {
+ boolean showSeekBar =
+ connectionState == ConnectionState.CONNECTED && !restrictVolumeAdjustment;
if (!mCornerAnimator.isRunning()) {
- final Drawable backgroundDrawable =
- showSeekBar
- ? mContext.getDrawable(
- R.drawable.media_output_item_background_active)
- .mutate() : mContext.getDrawable(
- R.drawable.media_output_item_background)
- .mutate();
- mItemLayout.setBackground(backgroundDrawable);
if (showSeekBar) {
updateSeekbarProgressBackground();
}
}
- mItemLayout.setBackgroundTintList(
- ColorStateList.valueOf(isActive ? mController.getColorConnectedItemBackground()
- : mController.getColorItemBackground()));
- mProgressBar.setVisibility(showProgressBar ? View.VISIBLE : View.GONE);
- mSeekBar.setAlpha(1);
+ boolean isCurrentSeekbarInvisible = mSeekBar.getVisibility() == View.GONE;
mSeekBar.setVisibility(showSeekBar ? View.VISIBLE : View.GONE);
- if (!showSeekBar) {
- mSeekBar.resetVolume();
+ if (showSeekBar) {
+ initSeekbar(device, isCurrentSeekbarInvisible);
+ disableFocusPropertyForView(mContainerLayout);
+ mSeekBar.setContentDescription(contentDescription);
+ } else {
+ enableFocusPropertyForView(mContainerLayout);
}
- mTitleText.setText(title);
- mCheckBox.setVisibility(showCheckBox ? View.VISIBLE : View.GONE);
- mEndTouchArea.setVisibility(showEndTouchArea ? View.VISIBLE : View.GONE);
- ViewGroup.MarginLayoutParams params =
- (ViewGroup.MarginLayoutParams) mItemLayout.getLayoutParams();
- params.rightMargin = showEndTouchArea ? mController.getItemMarginEndSelectable()
- : mController.getItemMarginEndDefault();
}
- void setTwoLineLayout(CharSequence title, boolean showSeekBar,
- boolean showProgressBar, boolean showSubtitle, boolean showStatus) {
- setTwoLineLayout(title, showSeekBar, showProgressBar, showSubtitle, showStatus, false);
+ void updateGroupSeekBar(String contentDescription) {
+ updateSeekbarProgressBackground();
+ boolean isCurrentSeekbarInvisible = mSeekBar.getVisibility() == View.GONE;
+ mSeekBar.setVisibility(View.VISIBLE);
+ initGroupSeekbar(isCurrentSeekbarInvisible);
+ disableFocusPropertyForView(mContainerLayout);
+ mSeekBar.setContentDescription(contentDescription);
}
- void setTwoLineLayout(CharSequence title,
- boolean showSeekBar, boolean showProgressBar, boolean showSubtitle,
- boolean showStatus , boolean showEndTouchArea) {
- mStatusIcon.setVisibility(showStatus ? View.VISIBLE : View.GONE);
- mSeekBar.setAlpha(1);
- mSeekBar.setVisibility(showSeekBar ? View.VISIBLE : View.GONE);
- final Drawable backgroundDrawable;
- backgroundDrawable = mContext.getDrawable(
- showSeekBar ? R.drawable.media_output_item_background_active
- : R.drawable.media_output_item_background).mutate();
- mItemLayout.setBackgroundTintList(ColorStateList.valueOf(
- showSeekBar ? mController.getColorConnectedItemBackground()
- : mController.getColorItemBackground()
- ));
- if (showSeekBar) {
- updateSeekbarProgressBackground();
+ private void disableFocusPropertyForView(View view) {
+ view.setFocusable(false);
+ view.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
+ }
+
+ private void enableFocusPropertyForView(View view) {
+ view.setFocusable(true);
+ view.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO);
+ }
+
+ void updateSubtitle(@Nullable String subtitle) {
+ if (subtitle == null) {
+ mSubTitleText.setVisibility(View.GONE);
+ } else {
+ mSubTitleText.setText(subtitle);
+ mSubTitleText.setVisibility(View.VISIBLE);
}
- //update end click area by isActive
+ }
+
+ protected void updateLoadingIndicator(ConnectionState connectionState) {
+ if (connectionState == ConnectionState.CONNECTING) {
+ mProgressBar.setVisibility(View.VISIBLE);
+ mProgressBar.getIndeterminateDrawable().setTintList(
+ ColorStateList.valueOf(mController.getColorItemContent()));
+ } else {
+ mProgressBar.setVisibility(View.GONE);
+ }
+ }
+
+ protected void updateItemBackground(ConnectionState connectionState) {
+ boolean isConnected = connectionState == ConnectionState.CONNECTED;
+ boolean isConnecting = connectionState == ConnectionState.CONNECTING;
+
+ // Increase corner radius for a connected state.
+ if (!mCornerAnimator.isRunning()) { // FIXME(b/387576145): This is always True.
+ int backgroundDrawableId =
+ isConnected ? R.drawable.media_output_item_background_active
+ : R.drawable.media_output_item_background;
+ mItemLayout.setBackground(mContext.getDrawable(backgroundDrawableId).mutate());
+ }
+
+ // Connected or connecting state has a darker background.
+ int backgroundColor = isConnected || isConnecting
+ ? mController.getColorConnectedItemBackground()
+ : mController.getColorItemBackground();
+ mItemLayout.setBackgroundTintList(ColorStateList.valueOf(backgroundColor));
+ }
+
+ protected void updateEndAreaVisibility(boolean showEndTouchArea, boolean isCheckbox) {
mEndTouchArea.setVisibility(showEndTouchArea ? View.VISIBLE : View.GONE);
- mEndClickIcon.setVisibility(showEndTouchArea ? View.VISIBLE : View.GONE);
- ViewGroup.MarginLayoutParams params =
- (ViewGroup.MarginLayoutParams) mItemLayout.getLayoutParams();
- params.rightMargin = showEndTouchArea ? mController.getItemMarginEndSelectable()
- : mController.getItemMarginEndDefault();
- mItemLayout.setBackground(backgroundDrawable);
- mProgressBar.setVisibility(showProgressBar ? View.VISIBLE : View.GONE);
- mSubTitleText.setVisibility(showSubtitle ? View.VISIBLE : View.GONE);
- mTitleText.setText(title);
+ if (showEndTouchArea) {
+ mCheckBox.setVisibility(isCheckbox ? View.VISIBLE : View.GONE);
+ mEndClickIcon.setVisibility(!isCheckbox ? View.VISIBLE : View.GONE);
+ }
}
void updateSeekbarProgressBackground() {
@@ -259,20 +294,15 @@ public abstract class MediaOutputBaseAdapter extends
final GradientDrawable progressDrawable =
(GradientDrawable) clipDrawable.getDrawable();
progressDrawable.setCornerRadii(
- new float[]{0, 0, mController.getActiveRadius(),
- mController.getActiveRadius(),
- mController.getActiveRadius(),
- mController.getActiveRadius(), 0, 0});
+ new float[]{0, 0, mActiveRadius,
+ mActiveRadius,
+ mActiveRadius,
+ mActiveRadius, 0, 0});
}
- void initSeekbar(MediaDevice device, boolean isCurrentSeekbarInvisible) {
- if (!mController.isVolumeControlEnabled(device)) {
- disableSeekBar();
- } else {
- enableSeekBar(device);
- }
- mSeekBar.setMaxVolume(device.getMaxVolume());
- final int currentVolume = device.getCurrentVolume();
+ private void initializeSeekbarVolume(
+ @Nullable MediaDevice device, int currentVolume,
+ boolean isCurrentSeekbarInvisible) {
if (!mIsDragging) {
if (mSeekBar.getVolume() != currentVolume && (mLatestUpdateVolume == -1
|| currentVolume == mLatestUpdateVolume)) {
@@ -307,72 +337,107 @@ public abstract class MediaOutputBaseAdapter extends
if (mIsInitVolumeFirstTime) {
mIsInitVolumeFirstTime = false;
}
- mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
- boolean mStartFromMute = false;
+ }
+
+ void initSeekbar(@NonNull MediaDevice device, boolean isCurrentSeekbarInvisible) {
+ SeekBarVolumeControl volumeControl = new SeekBarVolumeControl() {
@Override
- public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
- if (device == null || !fromUser) {
- return;
- }
+ public int getVolume() {
+ return device.getCurrentVolume();
+ }
+ @Override
+ public void setVolume(int volume) {
+ mController.adjustVolume(device, volume);
+ }
- final String percentageString = mContext.getResources().getString(
- R.string.media_output_dialog_volume_percentage,
- mSeekBar.getPercentage());
- mVolumeValueText.setText(percentageString);
+ @Override
+ public void onMute() {
+ mController.logInteractionUnmuteDevice(device);
+ }
+ };
- if (mStartFromMute) {
- updateUnmutedVolumeIcon(device);
- mStartFromMute = false;
- }
- int seekBarVolume = MediaOutputSeekbar.scaleProgressToVolume(progress);
- if (seekBarVolume != device.getCurrentVolume()) {
- mLatestUpdateVolume = seekBarVolume;
- mController.adjustVolume(device, seekBarVolume);
- }
+ if (!mController.isVolumeControlEnabled(device)) {
+ disableSeekBar();
+ } else {
+ enableSeekBar(volumeControl);
+ }
+ mSeekBar.setMaxVolume(device.getMaxVolume());
+ final int currentVolume = device.getCurrentVolume();
+ initializeSeekbarVolume(device, currentVolume, isCurrentSeekbarInvisible);
+
+ mSeekBar.setOnSeekBarChangeListener(new MediaSeekBarChangedListener(
+ device, volumeControl) {
+ @Override
+ public void onStopTrackingTouch(SeekBar seekbar) {
+ super.onStopTrackingTouch(seekbar);
+ mController.logInteractionAdjustVolume(device);
}
+ });
+ }
+ // Initializes the seekbar for a group of devices.
+ void initGroupSeekbar(boolean isCurrentSeekbarInvisible) {
+ SeekBarVolumeControl volumeControl = new SeekBarVolumeControl() {
@Override
- public void onStartTrackingTouch(SeekBar seekBar) {
- mTitleIcon.setVisibility(View.INVISIBLE);
- mVolumeValueText.setVisibility(View.VISIBLE);
- int currentVolume = MediaOutputSeekbar.scaleProgressToVolume(
- seekBar.getProgress());
- mStartFromMute = (currentVolume == 0);
- mIsDragging = true;
+ public int getVolume() {
+ return mController.getSessionVolume();
}
@Override
- public void onStopTrackingTouch(SeekBar seekBar) {
- int currentVolume = MediaOutputSeekbar.scaleProgressToVolume(
- seekBar.getProgress());
- if (currentVolume == 0) {
- seekBar.setProgress(0);
- updateMutedVolumeIcon(device);
- } else {
- updateUnmutedVolumeIcon(device);
- }
- mTitleIcon.setVisibility(View.VISIBLE);
- mVolumeValueText.setVisibility(View.GONE);
- mController.logInteractionAdjustVolume(device);
- mIsDragging = false;
+ public void setVolume(int volume) {
+ mController.adjustSessionVolume(volume);
+ }
+
+ @Override
+ public void onMute() {}
+ };
+
+ if (!mController.isVolumeControlEnabledForSession()) {
+ disableSeekBar();
+ } else {
+ enableSeekBar(volumeControl);
+ }
+ mSeekBar.setMaxVolume(mController.getSessionVolumeMax());
+
+ final int currentVolume = mController.getSessionVolume();
+ initializeSeekbarVolume(null, currentVolume, isCurrentSeekbarInvisible);
+ mSeekBar.setOnSeekBarChangeListener(new MediaSeekBarChangedListener(
+ null, volumeControl) {
+ @Override
+ protected boolean shouldHandleProgressChanged() {
+ return true;
}
});
}
- void updateMutedVolumeIcon(MediaDevice device) {
+ protected void updateTitleIcon(@NonNull MediaDevice device,
+ ConnectionState connectionState, boolean restrictVolumeAdjustment) {
+ if (connectionState == ConnectionState.CONNECTED) {
+ if (restrictVolumeAdjustment) {
+ // Volume icon without a background that makes it looks like part of a seekbar.
+ updateVolumeIcon(device, false /* isMutedIcon */);
+ } else {
+ updateUnmutedVolumeIcon(device);
+ }
+ } else {
+ setUpDeviceIcon(device);
+ }
+ }
+
+ void updateMutedVolumeIcon(@Nullable MediaDevice device) {
mIconAreaLayout.setBackground(
mContext.getDrawable(R.drawable.media_output_item_background_active));
- updateTitleIcon(device, true /* isMutedVolumeIcon */);
+ updateVolumeIcon(device, true /* isMutedVolumeIcon */);
}
- void updateUnmutedVolumeIcon(MediaDevice device) {
+ void updateUnmutedVolumeIcon(@Nullable MediaDevice device) {
mIconAreaLayout.setBackground(
mContext.getDrawable(R.drawable.media_output_title_icon_area)
);
- updateTitleIcon(device, false /* isMutedVolumeIcon */);
+ updateVolumeIcon(device, false /* isMutedVolumeIcon */);
}
- void updateTitleIcon(MediaDevice device, boolean isMutedVolumeIcon) {
+ void updateVolumeIcon(@Nullable MediaDevice device, boolean isMutedVolumeIcon) {
boolean isInputMediaDevice = device instanceof InputMediaDevice;
int id = getDrawableId(isInputMediaDevice, isMutedVolumeIcon);
mTitleIcon.setImageDrawable(mContext.getDrawable(id));
@@ -385,7 +450,7 @@ public abstract class MediaOutputBaseAdapter extends
int getDrawableId(boolean isInputDevice, boolean isMutedVolumeIcon) {
// Returns the microphone icon when the flag is enabled and the device is an input
// device.
- if (com.android.media.flags.Flags.enableAudioInputDeviceRoutingAndVolumeControl()
+ if (Flags.enableAudioInputDeviceRoutingAndVolumeControl()
&& isInputDevice) {
return isMutedVolumeIcon ? R.drawable.ic_mic_off : R.drawable.ic_mic_26dp;
}
@@ -394,25 +459,12 @@ public abstract class MediaOutputBaseAdapter extends
: R.drawable.media_output_icon_volume;
}
- void updateIconAreaClickListener(View.OnClickListener listener) {
+ void updateIconAreaClickListener(@Nullable View.OnClickListener listener) {
mIconAreaLayout.setOnClickListener(listener);
}
- void initFakeActiveDevice(MediaDevice device) {
- disableSeekBar();
- updateTitleIcon(device, false /* isMutedIcon */);
- final Drawable backgroundDrawable = mContext.getDrawable(
- R.drawable.media_output_item_background_active)
- .mutate();
- mItemLayout.setBackground(backgroundDrawable);
- mItemLayout.setBackgroundTintList(
- ColorStateList.valueOf(mController.getColorConnectedItemBackground()));
- mIconAreaLayout.setBackground(null);
- }
-
private void initAnimator() {
- mCornerAnimator = ValueAnimator.ofFloat(mController.getInactiveRadius(),
- mController.getActiveRadius());
+ mCornerAnimator = ValueAnimator.ofFloat(mInactiveRadius, mActiveRadius);
mCornerAnimator.setDuration(ANIM_DURATION);
mCornerAnimator.setInterpolator(new LinearInterpolator());
@@ -452,30 +504,31 @@ public abstract class MediaOutputBaseAdapter extends
updateIconAreaClickListener(null);
}
- private void enableSeekBar(MediaDevice device) {
+ private void enableSeekBar(SeekBarVolumeControl volumeControl) {
mSeekBar.setEnabled(true);
+
mSeekBar.setOnTouchListener((v, event) -> false);
updateIconAreaClickListener((v) -> {
- if (device.getCurrentVolume() == 0) {
- mController.logInteractionUnmuteDevice(device);
+ if (volumeControl.getVolume() == 0) {
mSeekBar.setVolume(UNMUTE_DEFAULT_VOLUME);
- mController.adjustVolume(device, UNMUTE_DEFAULT_VOLUME);
- updateUnmutedVolumeIcon(device);
+ volumeControl.setVolume(UNMUTE_DEFAULT_VOLUME);
+ updateUnmutedVolumeIcon(null);
mIconAreaLayout.setOnTouchListener(((iconV, event) -> false));
} else {
- mController.logInteractionMuteDevice(device);
+ volumeControl.onMute();
mSeekBar.resetVolume();
- mController.adjustVolume(device, 0);
- updateMutedVolumeIcon(device);
+ volumeControl.setVolume(0);
+ updateMutedVolumeIcon(null);
mIconAreaLayout.setOnTouchListener(((iconV, event) -> {
mSeekBar.dispatchTouchEvent(event);
return false;
}));
}
});
+
}
- protected void setUpDeviceIcon(MediaDevice device) {
+ protected void setUpDeviceIcon(@NonNull MediaDevice device) {
ThreadUtils.postOnBackgroundThread(() -> {
Icon icon = mController.getDeviceIconCompat(device).toIcon(mContext);
ThreadUtils.postOnMainThread(() -> {
@@ -488,5 +541,74 @@ public abstract class MediaOutputBaseAdapter extends
});
});
}
+
+ interface SeekBarVolumeControl {
+ int getVolume();
+ void setVolume(int volume);
+ void onMute();
+ }
+
+ private abstract class MediaSeekBarChangedListener
+ implements SeekBar.OnSeekBarChangeListener {
+ boolean mStartFromMute = false;
+ private MediaDevice mMediaDevice;
+ private SeekBarVolumeControl mVolumeControl;
+
+ MediaSeekBarChangedListener(MediaDevice device, SeekBarVolumeControl volumeControl) {
+ mMediaDevice = device;
+ mVolumeControl = volumeControl;
+ }
+
+ @Override
+ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+ if (!shouldHandleProgressChanged() || !fromUser) {
+ return;
+ }
+
+ final String percentageString = mContext.getResources().getString(
+ R.string.media_output_dialog_volume_percentage,
+ mSeekBar.getPercentage());
+ mVolumeValueText.setText(percentageString);
+
+ if (mStartFromMute) {
+ updateUnmutedVolumeIcon(mMediaDevice);
+ mStartFromMute = false;
+ }
+
+ int seekBarVolume = MediaOutputSeekbar.scaleProgressToVolume(progress);
+ if (seekBarVolume != mVolumeControl.getVolume()) {
+ mLatestUpdateVolume = seekBarVolume;
+ mVolumeControl.setVolume(seekBarVolume);
+ }
+ }
+
+ @Override
+ public void onStartTrackingTouch(SeekBar seekBar) {
+ mTitleIcon.setVisibility(View.INVISIBLE);
+ mVolumeValueText.setVisibility(View.VISIBLE);
+ int currentVolume = MediaOutputSeekbar.scaleProgressToVolume(
+ seekBar.getProgress());
+ mStartFromMute = (currentVolume == 0);
+ mIsDragging = true;
+ }
+
+ @Override
+ public void onStopTrackingTouch(SeekBar seekBar) {
+ int currentVolume = MediaOutputSeekbar.scaleProgressToVolume(
+ seekBar.getProgress());
+ if (currentVolume == 0) {
+ seekBar.setProgress(0);
+ updateMutedVolumeIcon(mMediaDevice);
+ } else {
+ updateUnmutedVolumeIcon(mMediaDevice);
+ }
+ mTitleIcon.setVisibility(View.VISIBLE);
+ mVolumeValueText.setVisibility(View.GONE);
+ mIsDragging = false;
+ }
+ protected boolean shouldHandleProgressChanged() {
+ return mMediaDevice != null;
+ }
+ };
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaSwitchingController.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaSwitchingController.java
index 15afd22a27d8..51437b3bbdaf 100644
--- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaSwitchingController.java
+++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaSwitchingController.java
@@ -171,10 +171,6 @@ public class MediaSwitchingController
private int mColorConnectedItemBackground;
private int mColorPositiveButtonText;
private int mColorDialogBackground;
- private int mItemMarginEndDefault;
- private int mItemMarginEndSelectable;
- private float mInactiveRadius;
- private float mActiveRadius;
private FeatureFlags mFeatureFlags;
private UserTracker mUserTracker;
private VolumePanelGlobalStateInteractor mVolumePanelGlobalStateInteractor;
@@ -246,16 +242,8 @@ public class MediaSwitchingController
R.color.media_dialog_connected_item_background);
mColorPositiveButtonText = Utils.getColorStateListDefaultColor(mContext,
R.color.media_dialog_solid_button_text);
- mInactiveRadius = mContext.getResources().getDimension(
- R.dimen.media_output_dialog_background_radius);
- mActiveRadius = mContext.getResources().getDimension(
- R.dimen.media_output_dialog_active_background_radius);
mColorDialogBackground = Utils.getColorStateListDefaultColor(mContext,
R.color.media_dialog_background);
- mItemMarginEndDefault = (int) mContext.getResources().getDimension(
- R.dimen.media_output_dialog_default_margin_end);
- mItemMarginEndSelectable = (int) mContext.getResources().getDimension(
- R.dimen.media_output_dialog_selectable_margin_end);
if (enableInputRouting()) {
mInputRouteManager = new InputRouteManager(mContext, audioManager);
@@ -638,22 +626,6 @@ public class MediaSwitchingController
return mColorItemBackground;
}
- public float getInactiveRadius() {
- return mInactiveRadius;
- }
-
- public float getActiveRadius() {
- return mActiveRadius;
- }
-
- public int getItemMarginEndDefault() {
- return mItemMarginEndDefault;
- }
-
- public int getItemMarginEndSelectable() {
- return mItemMarginEndSelectable;
- }
-
private void buildMediaItems(List<MediaDevice> devices) {
synchronized (mMediaDevicesLock) {
List<MediaItem> updatedMediaItems = buildMediaItems(mOutputMediaItemList, devices);
@@ -760,14 +732,26 @@ public class MediaSwitchingController
if (connectedMediaDevice != null) {
selectedDevicesIds.add(connectedMediaDevice.getId());
}
+ boolean groupSelectedDevices =
+ com.android.media.flags.Flags.enableOutputSwitcherSessionGrouping();
+ int nextSelectedItemIndex = 0;
boolean suggestedDeviceAdded = false;
boolean displayGroupAdded = false;
+ boolean selectedDeviceAdded = false;
for (MediaDevice device : devices) {
if (needToHandleMutingExpectedDevice && device.isMutingExpectedDevice()) {
finalMediaItems.add(0, MediaItem.createDeviceMediaItem(device));
+ nextSelectedItemIndex++;
} else if (!needToHandleMutingExpectedDevice && selectedDevicesIds.contains(
device.getId())) {
- finalMediaItems.add(0, MediaItem.createDeviceMediaItem(device));
+ if (groupSelectedDevices) {
+ finalMediaItems.add(
+ nextSelectedItemIndex++,
+ MediaItem.createDeviceMediaItem(device, !selectedDeviceAdded));
+ selectedDeviceAdded = true;
+ } else {
+ finalMediaItems.add(0, MediaItem.createDeviceMediaItem(device));
+ }
} else {
if (device.isSuggestedDevice() && !suggestedDeviceAdded) {
addSuggestedDeviceGroupDivider(finalMediaItems);
@@ -929,6 +913,10 @@ public class MediaSwitchingController
return mLocalMediaManager.getSelectableMediaDevice();
}
+ List<MediaDevice> getTransferableMediaDevices() {
+ return mLocalMediaManager.getTransferableMediaDevices();
+ }
+
public List<MediaDevice> getSelectedMediaDevice() {
if (!enableInputRouting()) {
return mLocalMediaManager.getSelectedMediaDevice();
@@ -960,6 +948,7 @@ public class MediaSwitchingController
return mLocalMediaManager.getSessionVolume();
}
+ @Nullable
CharSequence getSessionName() {
return mLocalMediaManager.getSessionName();
}
@@ -1331,6 +1320,10 @@ public class MediaSwitchingController
return !device.isVolumeFixed();
}
+ boolean isVolumeControlEnabledForSession() {
+ return mLocalMediaManager.isMediaSessionAvailableForVolumeControl();
+ }
+
private void startActivity(Intent intent, ActivityTransitionAnimator.Controller controller) {
// Media Output dialog can be shown from the volume panel. This makes sure the panel is
// closed when navigating to another activity, so it doesn't stays on top of it
diff --git a/packages/SystemUI/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionManagerRepository.kt b/packages/SystemUI/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionManagerRepository.kt
index ea0f63ca9721..d503fb7f94f7 100644
--- a/packages/SystemUI/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionManagerRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionManagerRepository.kt
@@ -18,6 +18,7 @@ package com.android.systemui.mediaprojection.data.repository
import android.app.ActivityManager.RunningTaskInfo
import android.hardware.display.DisplayManager
+import android.media.projection.MediaProjectionEvent
import android.media.projection.MediaProjectionInfo
import android.media.projection.MediaProjectionManager
import android.media.projection.StopReason
@@ -43,6 +44,9 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
+import kotlinx.coroutines.flow.filter
+import kotlinx.coroutines.flow.filterNot
+import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.mapLatest
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.withContext
@@ -83,48 +87,59 @@ constructor(
}
}
- override val mediaProjectionState: Flow<MediaProjectionState> =
- conflatedCallbackFlow {
- val callback =
- object : MediaProjectionManager.Callback() {
- override fun onStart(info: MediaProjectionInfo?) {
- logger.log(
- TAG,
- LogLevel.DEBUG,
- {},
- { "MediaProjectionManager.Callback#onStart" },
- )
- trySendWithFailureLogging(CallbackEvent.OnStart(info), TAG)
- }
+ private val callbackEventsFlow = conflatedCallbackFlow {
+ val callback =
+ object : MediaProjectionManager.Callback() {
+ override fun onStart(info: MediaProjectionInfo?) {
+ logger.log(TAG, LogLevel.DEBUG, {}, { "Callback#onStart" })
+ trySendWithFailureLogging(CallbackEvent.OnStart(info), TAG)
+ }
- override fun onStop(info: MediaProjectionInfo?) {
- logger.log(
- TAG,
- LogLevel.DEBUG,
- {},
- { "MediaProjectionManager.Callback#onStop" },
- )
- trySendWithFailureLogging(CallbackEvent.OnStop, TAG)
- }
+ override fun onStop(info: MediaProjectionInfo?) {
+ logger.log(TAG, LogLevel.DEBUG, {}, { "Callback#onStop" })
+ trySendWithFailureLogging(CallbackEvent.OnStop, TAG)
+ }
- override fun onRecordingSessionSet(
- info: MediaProjectionInfo,
- session: ContentRecordingSession?,
- ) {
- logger.log(
- TAG,
- LogLevel.DEBUG,
- { str1 = session.toString() },
- { "MediaProjectionManager.Callback#onSessionStarted: $str1" },
- )
- trySendWithFailureLogging(
- CallbackEvent.OnRecordingSessionSet(info, session),
- TAG,
- )
- }
+ override fun onRecordingSessionSet(
+ info: MediaProjectionInfo,
+ session: ContentRecordingSession?,
+ ) {
+ logger.log(
+ TAG,
+ LogLevel.DEBUG,
+ { str1 = session.toString() },
+ { "Callback#onSessionSet: $str1" },
+ )
+ trySendWithFailureLogging(
+ CallbackEvent.OnRecordingSessionSet(info, session),
+ TAG,
+ )
+ }
+
+ override fun onMediaProjectionEvent(
+ event: MediaProjectionEvent,
+ info: MediaProjectionInfo?,
+ session: ContentRecordingSession?,
+ ) {
+ if (com.android.media.projection.flags.Flags.showStopDialogPostCallEnd()) {
+ logger.log(
+ TAG,
+ LogLevel.DEBUG,
+ { str1 = event.toString() },
+ { "Callback#onMediaProjectionEvent : $str1" },
+ )
+ trySendWithFailureLogging(CallbackEvent.OnMediaProjectionEvent(event), TAG)
}
- mediaProjectionManager.addCallback(callback, handler)
- awaitClose { mediaProjectionManager.removeCallback(callback) }
+ }
+ }
+ mediaProjectionManager.addCallback(callback, handler)
+ awaitClose { mediaProjectionManager.removeCallback(callback) }
+ }
+
+ override val mediaProjectionState: Flow<MediaProjectionState> =
+ callbackEventsFlow
+ .filterNot {
+ it is CallbackEvent.OnMediaProjectionEvent // Exclude OnMediaProjectionEvent
}
// When we get an #onRecordingSessionSet event, we need to do some work in the
// background before emitting the right state value. But when we get an #onStop
@@ -159,6 +174,11 @@ constructor(
}
is CallbackEvent.OnStop -> MediaProjectionState.NotProjecting
is CallbackEvent.OnRecordingSessionSet -> stateForSession(it.info, it.session)
+ is CallbackEvent.OnMediaProjectionEvent ->
+ throw IllegalStateException(
+ "Unexpected OnMediaProjectionEvent in mediaProjectionState flow. It " +
+ "should have been filtered out."
+ )
}
}
.stateIn(
@@ -167,6 +187,16 @@ constructor(
initialValue = MediaProjectionState.NotProjecting,
)
+ override val projectionStartedDuringCallAndActivePostCallEvent: Flow<Unit> =
+ callbackEventsFlow
+ .filter {
+ com.android.media.projection.flags.Flags.showStopDialogPostCallEnd() &&
+ it is CallbackEvent.OnMediaProjectionEvent &&
+ it.event.eventType ==
+ MediaProjectionEvent.PROJECTION_STARTED_DURING_CALL_AND_ACTIVE_POST_CALL
+ }
+ .map {}
+
private suspend fun stateForSession(
info: MediaProjectionInfo,
session: ContentRecordingSession?,
@@ -206,6 +236,8 @@ constructor(
val info: MediaProjectionInfo,
val session: ContentRecordingSession?,
) : CallbackEvent
+
+ data class OnMediaProjectionEvent(val event: MediaProjectionEvent) : CallbackEvent
}
companion object {
diff --git a/packages/SystemUI/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionRepository.kt b/packages/SystemUI/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionRepository.kt
index a01d8c2c98de..826ee589e8ff 100644
--- a/packages/SystemUI/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionRepository.kt
@@ -32,4 +32,10 @@ interface MediaProjectionRepository {
/** Represents the current [MediaProjectionState]. */
val mediaProjectionState: Flow<MediaProjectionState>
+
+ /**
+ * Emits each time a call ends but media projection is still active and media projection was
+ * starting during the call.
+ */
+ val projectionStartedDuringCallAndActivePostCallEvent: Flow<Unit>
}
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerImpl.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerImpl.java
index ebda3765cf90..5fa0095d2329 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerImpl.java
@@ -284,7 +284,10 @@ public class NavigationBarControllerImpl implements
}
@Override
- public void onDisplayReady(int displayId) {
+ public void onDisplayAddSystemDecorations(int displayId) {
+ if (enableDisplayContentModeManagement()) {
+ mHasNavBar.put(displayId, true);
+ }
Display display = mDisplayManager.getDisplay(displayId);
mIsLargeScreen = isLargeScreen(mContext);
createNavigationBar(display, null /* savedState */, null /* result */);
@@ -315,13 +318,6 @@ public class NavigationBarControllerImpl implements
navBarView.showPinningEscapeToast();
}
}
-
- @Override
- public void setHasNavigationBar(int displayId, boolean hasNavigationBar) {
- if (enableDisplayContentModeManagement()) {
- mHasNavBar.put(displayId, hasNavigationBar);
- }
- }
};
/**
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java
index 9d8943052b38..c4d847f18269 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java
@@ -238,16 +238,16 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
}
@Override
- public void onDisplayReady(int displayId) {
- CommandQueue.Callbacks.super.onDisplayReady(displayId);
+ public void onDisplayAddSystemDecorations(int displayId) {
+ CommandQueue.Callbacks.super.onDisplayAddSystemDecorations(displayId);
if (mLauncherProxyService.getProxy() == null) {
return;
}
try {
- mLauncherProxyService.getProxy().onDisplayReady(displayId);
+ mLauncherProxyService.getProxy().onDisplayAddSystemDecorations(displayId);
} catch (RemoteException e) {
- Log.e(TAG, "onDisplayReady() failed", e);
+ Log.e(TAG, "onDisplayAddSystemDecorations() failed", e);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/notetask/INoteTaskBubblesService.aidl b/packages/SystemUI/src/com/android/systemui/notetask/INoteTaskBubblesService.aidl
index 7803f229dda7..d803ebed94e3 100644
--- a/packages/SystemUI/src/com/android/systemui/notetask/INoteTaskBubblesService.aidl
+++ b/packages/SystemUI/src/com/android/systemui/notetask/INoteTaskBubblesService.aidl
@@ -26,6 +26,6 @@ interface INoteTaskBubblesService {
boolean areBubblesAvailable();
- void showOrHideAppBubble(in Intent intent, in UserHandle userHandle, in Icon icon,
+ void showOrHideNoteBubble(in Intent intent, in UserHandle userHandle, in Icon icon,
in NoteTaskBubbleExpandBehavior bubbleExpandBehavior);
}
diff --git a/packages/SystemUI/src/com/android/systemui/notetask/NoteTaskBubblesController.kt b/packages/SystemUI/src/com/android/systemui/notetask/NoteTaskBubblesController.kt
index 169285f6742e..e20ccfa13e17 100644
--- a/packages/SystemUI/src/com/android/systemui/notetask/NoteTaskBubblesController.kt
+++ b/packages/SystemUI/src/com/android/systemui/notetask/NoteTaskBubblesController.kt
@@ -76,8 +76,8 @@ constructor(
}
}
- /** Calls the [Bubbles.showOrHideAppBubble] API as [UserHandle.USER_SYSTEM]. */
- open suspend fun showOrHideAppBubble(
+ /** Calls the [Bubbles.showOrHideNoteBubble] API as [UserHandle.USER_SYSTEM]. */
+ open suspend fun showOrHideNoteBubble(
intent: Intent,
userHandle: UserHandle,
icon: Icon,
@@ -85,7 +85,7 @@ constructor(
) {
withContext(bgDispatcher) {
serviceConnector
- .post { it.showOrHideAppBubble(intent, userHandle, icon, bubbleExpandBehavior) }
+ .post { it.showOrHideNoteBubble(intent, userHandle, icon, bubbleExpandBehavior) }
.whenComplete { _, error ->
if (error != null) {
debugLog(error = error) {
@@ -119,7 +119,7 @@ constructor(
return object : INoteTaskBubblesService.Stub() {
override fun areBubblesAvailable() = mOptionalBubbles.isPresent
- override fun showOrHideAppBubble(
+ override fun showOrHideNoteBubble(
intent: Intent,
userHandle: UserHandle,
icon: Icon,
@@ -131,12 +131,12 @@ constructor(
bubbleExpandBehavior ==
NoteTaskBubbleExpandBehavior.KEEP_IF_EXPANDED &&
bubbles.isBubbleExpanded(
- Bubble.getAppBubbleKeyForApp(intent.`package`, userHandle)
+ Bubble.getNoteBubbleKeyForApp(intent.`package`, userHandle)
)
) {
return@ifPresentOrElse
}
- bubbles.showOrHideAppBubble(intent, userHandle, icon)
+ bubbles.showOrHideNoteBubble(intent, userHandle, icon)
},
{
debugLog {
diff --git a/packages/SystemUI/src/com/android/systemui/notetask/NoteTaskController.kt b/packages/SystemUI/src/com/android/systemui/notetask/NoteTaskController.kt
index ad1f37070c9d..7e0128ab8f13 100644
--- a/packages/SystemUI/src/com/android/systemui/notetask/NoteTaskController.kt
+++ b/packages/SystemUI/src/com/android/systemui/notetask/NoteTaskController.kt
@@ -96,7 +96,7 @@ constructor(
val info = infoReference.getAndSet(null) ?: return
- if (key != Bubble.getAppBubbleKeyForApp(info.packageName, info.user)) return
+ if (key != Bubble.getNoteBubbleKeyForApp(info.packageName, info.user)) return
// Safe guard mechanism, this callback should only be called for app bubbles.
if (info.launchMode !is NoteTaskLaunchMode.AppBubble) return
@@ -219,7 +219,7 @@ constructor(
val intent = createNoteTaskIntent(info, useStylusMode)
val icon =
Icon.createWithResource(context, R.drawable.ic_note_task_shortcut_widget)
- noteTaskBubblesController.showOrHideAppBubble(
+ noteTaskBubblesController.showOrHideNoteBubble(
intent,
user,
icon,
diff --git a/packages/SystemUI/src/com/android/systemui/notetask/OWNERS b/packages/SystemUI/src/com/android/systemui/notetask/OWNERS
index 0ec996be72de..9b4902a9e7b2 100644
--- a/packages/SystemUI/src/com/android/systemui/notetask/OWNERS
+++ b/packages/SystemUI/src/com/android/systemui/notetask/OWNERS
@@ -6,5 +6,4 @@ madym@google.com
mgalhardo@google.com
petrcermak@google.com
stevenckng@google.com
-tkachenkoi@google.com
-vanjan@google.com \ No newline at end of file
+vanjan@google.com
diff --git a/packages/SystemUI/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModel.kt b/packages/SystemUI/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModel.kt
index 8aad61a8c7cb..c7b165415aea 100644
--- a/packages/SystemUI/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModel.kt
@@ -52,18 +52,11 @@ constructor(
private val hydrator = Hydrator("NotificationsShadeOverlayContentViewModel.hydrator")
- val isShadeLayoutWide: Boolean by
+ val showClock: Boolean by
hydrator.hydratedStateOf(
- traceName = "isShadeLayoutWide",
- initialValue = shadeInteractor.isShadeLayoutWide.value,
- source = shadeInteractor.isShadeLayoutWide,
- )
-
- val showHeader: Boolean by
- hydrator.hydratedStateOf(
- traceName = "showHeader",
+ traceName = "showClock",
initialValue =
- shouldShowHeader(
+ shouldShowClock(
isShadeLayoutWide = shadeInteractor.isShadeLayoutWide.value,
areAnyNotificationsPresent =
activeNotificationsInteractor.areAnyNotificationsPresentValue,
@@ -72,7 +65,7 @@ constructor(
combine(
shadeInteractor.isShadeLayoutWide,
activeNotificationsInteractor.areAnyNotificationsPresent,
- this::shouldShowHeader,
+ this::shouldShowClock,
),
)
@@ -110,7 +103,7 @@ constructor(
shadeInteractor.collapseNotificationsShade(loggingReason = "shade scrim clicked")
}
- private fun shouldShowHeader(
+ private fun shouldShowClock(
isShadeLayoutWide: Boolean,
areAnyNotificationsPresent: Boolean,
): Boolean {
diff --git a/packages/SystemUI/src/com/android/systemui/power/domain/interactor/PowerInteractor.kt b/packages/SystemUI/src/com/android/systemui/power/domain/interactor/PowerInteractor.kt
index f8d442de0f55..25d53e6d1f1f 100644
--- a/packages/SystemUI/src/com/android/systemui/power/domain/interactor/PowerInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/power/domain/interactor/PowerInteractor.kt
@@ -50,7 +50,7 @@ constructor(
@FalsingCollectorActual private val falsingCollector: FalsingCollector,
private val screenOffAnimationController: ScreenOffAnimationController,
private val statusBarStateController: StatusBarStateController,
- private val cameraGestureHelper: Provider<CameraGestureHelper>,
+ private val cameraGestureHelper: Provider<CameraGestureHelper?>,
) {
/** Whether the screen is on or off. */
val isInteractive: Flow<Boolean> = repository.isInteractive
@@ -154,8 +154,9 @@ constructor(
// or onFinishedGoingToSleep(), carry that state forward. It will be reset by the next
// onStartedGoingToSleep.
val powerButtonLaunchGestureTriggered =
- powerButtonLaunchGestureTriggeredOnWakeUp ||
- repository.wakefulness.value.powerButtonLaunchGestureTriggered
+ !isPowerButtonGestureSuppressed() &&
+ (powerButtonLaunchGestureTriggeredOnWakeUp ||
+ repository.wakefulness.value.powerButtonLaunchGestureTriggered)
repository.updateWakefulness(
rawState = WakefulnessState.STARTING_TO_WAKE,
@@ -204,8 +205,9 @@ constructor(
// If the launch gesture was previously detected via onCameraLaunchGestureDetected, carry
// that state forward. It will be reset by the next onStartedGoingToSleep.
val powerButtonLaunchGestureTriggered =
- powerButtonLaunchGestureTriggeredDuringSleep ||
- repository.wakefulness.value.powerButtonLaunchGestureTriggered
+ !isPowerButtonGestureSuppressed() &&
+ (powerButtonLaunchGestureTriggeredDuringSleep ||
+ repository.wakefulness.value.powerButtonLaunchGestureTriggered)
repository.updateWakefulness(
rawState = WakefulnessState.ASLEEP,
@@ -218,11 +220,7 @@ constructor(
}
fun onCameraLaunchGestureDetected() {
- if (
- cameraGestureHelper
- .get()
- .canCameraGestureBeLaunched(statusBarStateController.getState())
- ) {
+ if (!isPowerButtonGestureSuppressed()) {
repository.updateWakefulness(powerButtonLaunchGestureTriggered = true)
}
}
@@ -240,6 +238,16 @@ constructor(
.collect()
}
+ /**
+ * Whether the power button gesture isn't allowed to launch anything even if a double tap is
+ * detected.
+ */
+ private fun isPowerButtonGestureSuppressed(): Boolean {
+ return cameraGestureHelper
+ .get()
+ ?.canCameraGestureBeLaunched(statusBarStateController.state) == false
+ }
+
companion object {
private const val FSI_WAKE_WHY = "full_screen_intent"
diff --git a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyConfig.kt b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyConfig.kt
index 67d390d4f10d..79a513f24995 100644
--- a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyConfig.kt
+++ b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyConfig.kt
@@ -85,7 +85,7 @@ class PrivacyConfig @Inject constructor(
}
init {
- dumpManager.registerDumpable(TAG, this)
+ dumpManager.registerNormalDumpable(TAG, this)
deviceConfigProxy.addOnPropertiesChangedListener(
DeviceConfig.NAMESPACE_PRIVACY,
uiExecutor,
diff --git a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt
index eb8ef9bf3e50..f9a7205c56f5 100644
--- a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt
+++ b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt
@@ -98,7 +98,7 @@ class PrivacyItemController @Inject constructor(
}
init {
- dumpManager.registerDumpable(TAG, this)
+ dumpManager.registerNormalDumpable(TAG, this)
privacyConfig.addCallback(optionsCallback)
}
diff --git a/packages/SystemUI/src/com/android/systemui/process/ProcessWrapper.java b/packages/SystemUI/src/com/android/systemui/process/ProcessWrapper.java
index 294d0c75167a..f3a3a3a2ac4c 100644
--- a/packages/SystemUI/src/com/android/systemui/process/ProcessWrapper.java
+++ b/packages/SystemUI/src/com/android/systemui/process/ProcessWrapper.java
@@ -27,8 +27,12 @@ import javax.inject.Inject;
* providing a mockable target around these details.
*/
public class ProcessWrapper {
+ private final ActivityManager mActivityManager;
+
@Inject
- public ProcessWrapper() {}
+ public ProcessWrapper(ActivityManager activityManager) {
+ mActivityManager = activityManager;
+ }
/**
* Returns {@code true} if System User is running the current process.
@@ -38,10 +42,10 @@ public class ProcessWrapper {
}
/**
- * Returns {@code true} if the foreground user is running the current process.
+ * Returns {@code true} if the foreground user or profile is running the current process.
*/
- public boolean isForegroundUser() {
- return ActivityManager.getCurrentUser() == myUserHandle().getIdentifier();
+ public boolean isForegroundUserOrProfile() {
+ return mActivityManager.isProfileForeground(myUserHandle());
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFooterViewController.java b/packages/SystemUI/src/com/android/systemui/qs/QSFooterViewController.java
index e8ee4dd8ebce..d715f42ed499 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSFooterViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSFooterViewController.java
@@ -16,17 +16,13 @@
package com.android.systemui.qs;
-import static com.android.systemui.Flags.gsfQuickSettings;
-
import android.content.ClipData;
import android.content.ClipboardManager;
-import android.graphics.Typeface;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
-import com.android.systemui.FontStyles;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.qs.dagger.QSScope;
@@ -68,9 +64,6 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme
mRetailModeInteractor = retailModeInteractor;
mBuildText = mView.findViewById(R.id.build);
- if (gsfQuickSettings()) {
- mBuildText.setTypeface(Typeface.create(FontStyles.GSF_BODY_MEDIUM, Typeface.NORMAL));
- }
mPageIndicator = mView.findViewById(R.id.footer_page_indicator);
mEditButton = mView.findViewById(android.R.id.edit);
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java
index d5cd8dc55045..b8971d1fa797 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java
@@ -43,7 +43,9 @@ import com.android.systemui.settings.brightness.BrightnessController;
import com.android.systemui.settings.brightness.BrightnessMirrorHandler;
import com.android.systemui.settings.brightness.BrightnessSliderController;
import com.android.systemui.settings.brightness.MirrorController;
+import com.android.systemui.shade.ShadeDisplayAware;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
+import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.SplitShadeStateController;
import com.android.systemui.tuner.TunerService;
@@ -101,10 +103,11 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
StatusBarKeyguardViewManager statusBarKeyguardViewManager,
SplitShadeStateController splitShadeStateController,
Provider<QSLongPressEffect> longPRessEffectProvider,
- MediaCarouselInteractor mediaCarouselInteractor) {
+ MediaCarouselInteractor mediaCarouselInteractor,
+ @ShadeDisplayAware ConfigurationController configurationController) {
super(view, qsHost, qsCustomizerController, usingMediaPlayer, mediaHost,
metricsLogger, uiEventLogger, qsLogger, dumpManager, splitShadeStateController,
- longPRessEffectProvider);
+ longPRessEffectProvider, configurationController);
mTunerService = tunerService;
mQsCustomizerController = qsCustomizerController;
mQsTileRevealControllerFactory = qsTileRevealControllerFactory;
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java
index c8f7be6d80b2..b0b02fa28390 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java
@@ -41,6 +41,10 @@ import com.android.systemui.qs.external.CustomTile;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.tileimpl.QSTileViewImpl;
import com.android.systemui.scene.shared.flag.SceneContainerFlag;
+import com.android.systemui.shade.ShadeDisplayAware;
+import com.android.systemui.shade.shared.flag.ShadeWindowGoesAround;
+import com.android.systemui.statusbar.policy.ConfigurationController;
+import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
import com.android.systemui.statusbar.policy.SplitShadeStateController;
import com.android.systemui.util.ViewController;
import com.android.systemui.util.animation.DisappearParameters;
@@ -95,6 +99,7 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
private final QSHost.Callback mQSHostCallback = this::setTiles;
private SplitShadeStateController mSplitShadeStateController;
+ private final ConfigurationController mConfigurationController;
private final Provider<QSLongPressEffect> mLongPressEffectProvider;
@@ -111,39 +116,42 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
private boolean mLastListening;
+ private final ConfigurationListener mConfigurationListener = new ConfigurationListener() {
+ @Override
+ public void onConfigChanged(Configuration newConfig) {
+ final boolean previousSplitShadeState = mShouldUseSplitNotificationShade;
+ final int previousOrientation = mLastOrientation;
+ final int previousScreenLayout = mLastScreenLayout;
+ mShouldUseSplitNotificationShade = mSplitShadeStateController
+ .shouldUseSplitNotificationShade(getResources());
+ mLastOrientation = newConfig.orientation;
+ mLastScreenLayout = newConfig.screenLayout;
+
+ mQSLogger.logOnConfigurationChanged(
+ /* oldOrientation= */ previousOrientation,
+ /* newOrientation= */ mLastOrientation,
+ /* oldShouldUseSplitShade= */ previousSplitShadeState,
+ /* newShouldUseSplitShade= */ mShouldUseSplitNotificationShade,
+ /* oldScreenLayout= */ previousScreenLayout,
+ /* newScreenLayout= */ mLastScreenLayout,
+ /* containerName= */ mView.getDumpableTag());
+
+ if (SceneContainerFlag.isEnabled()) {
+ setLayoutForMediaInScene();
+ } else {
+ switchTileLayoutIfNeeded();
+ }
+ onConfigurationChanged();
+ if (previousSplitShadeState != mShouldUseSplitNotificationShade) {
+ onSplitShadeChanged(mShouldUseSplitNotificationShade);
+ }
+ }
+ };
+ /** When {@link ShadeWindowGoesAround} is enabled, this listener is not used anymore.*/
@VisibleForTesting
+ @Deprecated
protected final QSPanel.OnConfigurationChangedListener mOnConfigurationChangedListener =
- new QSPanel.OnConfigurationChangedListener() {
- @Override
- public void onConfigurationChange(Configuration newConfig) {
- final boolean previousSplitShadeState = mShouldUseSplitNotificationShade;
- final int previousOrientation = mLastOrientation;
- final int previousScreenLayout = mLastScreenLayout;
- mShouldUseSplitNotificationShade = mSplitShadeStateController
- .shouldUseSplitNotificationShade(getResources());
- mLastOrientation = newConfig.orientation;
- mLastScreenLayout = newConfig.screenLayout;
-
- mQSLogger.logOnConfigurationChanged(
- /* oldOrientation= */ previousOrientation,
- /* newOrientation= */ mLastOrientation,
- /* oldShouldUseSplitShade= */ previousSplitShadeState,
- /* newShouldUseSplitShade= */ mShouldUseSplitNotificationShade,
- /* oldScreenLayout= */ previousScreenLayout,
- /* newScreenLayout= */ mLastScreenLayout,
- /* containerName= */ mView.getDumpableTag());
-
- if (SceneContainerFlag.isEnabled()) {
- setLayoutForMediaInScene();
- } else {
- switchTileLayoutIfNeeded();
- }
- onConfigurationChanged();
- if (previousSplitShadeState != mShouldUseSplitNotificationShade) {
- onSplitShadeChanged(mShouldUseSplitNotificationShade);
- }
- }
- };
+ newConfig -> mConfigurationListener.onConfigChanged(newConfig);
protected void onConfigurationChanged() { }
@@ -173,7 +181,8 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
QSLogger qsLogger,
DumpManager dumpManager,
SplitShadeStateController splitShadeStateController,
- Provider<QSLongPressEffect> longPressEffectProvider
+ Provider<QSLongPressEffect> longPressEffectProvider,
+ @ShadeDisplayAware ConfigurationController configurationController
) {
super(view);
mHost = host;
@@ -185,6 +194,7 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
mQSLogger = qsLogger;
mDumpManager = dumpManager;
mSplitShadeStateController = splitShadeStateController;
+ mConfigurationController = configurationController;
mShouldUseSplitNotificationShade =
mSplitShadeStateController.shouldUseSplitNotificationShade(getResources());
mLongPressEffectProvider = longPressEffectProvider;
@@ -238,7 +248,11 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
if (!SceneContainerFlag.isEnabled()) {
mMediaHost.addVisibilityChangeListener(mMediaHostVisibilityListener);
}
- mView.addOnConfigurationChangedListener(mOnConfigurationChangedListener);
+ if (ShadeWindowGoesAround.isEnabled()) {
+ mConfigurationController.addCallback(mConfigurationListener);
+ } else {
+ mView.addOnConfigurationChangedListener(mOnConfigurationChangedListener);
+ }
// We were not attached and the configuration may have changed, trigger the listener.
if (mView.hadConfigurationChangeWhileDetached()) {
mOnConfigurationChangedListener.onConfigurationChange(
@@ -272,8 +286,11 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
@Override
protected void onViewDetached() {
mQSLogger.logOnViewDetached(mLastOrientation, mView.getDumpableTag());
- mView.removeOnConfigurationChangedListener(mOnConfigurationChangedListener);
-
+ if (ShadeWindowGoesAround.isEnabled()) {
+ mConfigurationController.removeCallback(mConfigurationListener);
+ } else {
+ mView.removeOnConfigurationChangedListener(mOnConfigurationChangedListener);
+ }
// Call directly so mLastListening is not modified. We want that to have the last actual
// value.
mView.getTileLayout().setListening(false, mUiEventLogger);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java
index bc695bdd4e05..75628a0e487c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java
@@ -35,6 +35,8 @@ import com.android.systemui.qs.dagger.QSScope;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.res.R;
import com.android.systemui.scene.shared.flag.SceneContainerFlag;
+import com.android.systemui.shade.ShadeDisplayAware;
+import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.SplitShadeStateController;
import com.android.systemui.util.leak.RotationUtils;
@@ -66,11 +68,12 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
MetricsLogger metricsLogger, UiEventLogger uiEventLogger, QSLogger qsLogger,
DumpManager dumpManager, SplitShadeStateController splitShadeStateController,
Provider<QSLongPressEffect> longPressEffectProvider,
- MediaCarouselInteractor mediaCarouselInteractor
+ MediaCarouselInteractor mediaCarouselInteractor,
+ @ShadeDisplayAware ConfigurationController configurationController
) {
super(view, qsHost, qsCustomizerController, usingMediaPlayer, mediaHost, metricsLogger,
uiEventLogger, qsLogger, dumpManager, splitShadeStateController,
- longPressEffectProvider);
+ longPressEffectProvider, configurationController);
mUsingCollapsedLandscapeMediaProvider = usingCollapsedLandscapeMediaProvider;
mMediaCarouselInteractor = mediaCarouselInteractor;
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt b/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt
index a3893bc3a54a..cf3b4969b07d 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt
@@ -311,7 +311,7 @@ constructor(
SceneTransitionLayout(state = sceneState, modifier = Modifier.fillMaxSize()) {
scene(QuickSettings) {
LaunchedEffect(Unit) { viewModel.onQSOpen() }
- QuickSettingsElement()
+ QuickSettingsElement(Modifier.element(QuickSettings.rootElementKey))
}
scene(QuickQuickSettings) {
@@ -573,8 +573,7 @@ constructor(
onDispose { qqsVisible.value = false }
}
val squishiness by
- viewModel.containerViewModel.quickQuickSettingsViewModel.squishinessViewModel
- .squishiness
+ viewModel.quickQuickSettingsViewModel.squishinessViewModel.squishiness
.collectAsStateWithLifecycle()
Column(modifier = modifier.sysuiResTag(ResIdTags.quickQsPanel)) {
@@ -607,9 +606,7 @@ constructor(
) {
val Tiles =
@Composable {
- QuickQuickSettings(
- viewModel = viewModel.containerViewModel.quickQuickSettingsViewModel
- )
+ QuickQuickSettings(viewModel = viewModel.quickQuickSettingsViewModel)
}
val Media =
@Composable {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModel.kt
index 219fc2fdc5ec..c09d319f82f5 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModel.kt
@@ -59,6 +59,7 @@ import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsViewModel
import com.android.systemui.qs.panels.domain.interactor.TileSquishinessInteractor
import com.android.systemui.qs.panels.ui.viewmodel.InFirstPageViewModel
import com.android.systemui.qs.panels.ui.viewmodel.MediaInRowInLandscapeViewModel
+import com.android.systemui.qs.panels.ui.viewmodel.QuickQuickSettingsViewModel
import com.android.systemui.qs.ui.viewmodel.QuickSettingsContainerViewModel
import com.android.systemui.res.R
import com.android.systemui.scene.shared.model.Scenes
@@ -94,7 +95,8 @@ class QSFragmentComposeViewModel
@AssistedInject
constructor(
containerViewModelFactory: QuickSettingsContainerViewModel.Factory,
- @Main private val resources: Resources,
+ @ShadeDisplayAware private val resources: Resources,
+ quickQuickSettingsViewModelFactory: QuickQuickSettingsViewModel.Factory,
footerActionsViewModelFactory: FooterActionsViewModel.Factory,
private val footerActionsController: FooterActionsController,
private val sysuiStatusBarStateController: SysuiStatusBarStateController,
@@ -102,7 +104,7 @@ constructor(
DisableFlagsInteractor: DisableFlagsInteractor,
keyguardTransitionInteractor: KeyguardTransitionInteractor,
private val largeScreenShadeInterpolator: LargeScreenShadeInterpolator,
- private val shadeInteractor: ShadeInteractor,
+ shadeInteractor: ShadeInteractor,
@ShadeDisplayAware configurationInteractor: ConfigurationInteractor,
private val largeScreenHeaderHelper: LargeScreenHeaderHelper,
private val squishinessInteractor: TileSquishinessInteractor,
@@ -118,6 +120,8 @@ constructor(
) : Dumpable, ExclusiveActivatable() {
val containerViewModel = containerViewModelFactory.create(true)
+ val quickQuickSettingsViewModel = quickQuickSettingsViewModelFactory.create()
+
private val qqsMediaInRowViewModel = mediaInRowInLandscapeViewModelFactory.create(LOCATION_QQS)
private val qsMediaInRowViewModel = mediaInRowInLandscapeViewModelFactory.create(LOCATION_QS)
@@ -475,6 +479,7 @@ constructor(
}
launch { hydrator.activate() }
launch { containerViewModel.activate() }
+ launch { quickQuickSettingsViewModel.activate() }
launch { qqsMediaInRowViewModel.activate() }
launch { qsMediaInRowViewModel.activate() }
awaitCancellation()
diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java
index 0e64820c984e..13eaa7fb7426 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java
@@ -15,8 +15,6 @@
*/
package com.android.systemui.qs.customize;
-import static com.android.systemui.Flags.gsfQuickSettings;
-
import android.animation.Animator;
import android.animation.Animator.AnimatorListener;
import android.animation.AnimatorListenerAdapter;
@@ -83,9 +81,6 @@ public class QSCustomizer extends LinearLayout {
mToolbar.getMenu().add(Menu.NONE, MENU_RESET, 0, com.android.internal.R.string.reset)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
mToolbar.setTitle(R.string.qs_edit);
- if (gsfQuickSettings()) {
- mToolbar.setTitleTextAppearance(context, R.style.TextAppearance_QSEditTitle);
- }
mRecyclerView = findViewById(android.R.id.list);
mTransparentView = findViewById(R.id.customizer_transparent_view);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
index e7fa27159e9e..34e641613da8 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
@@ -14,15 +14,12 @@
package com.android.systemui.qs.customize;
-import static com.android.systemui.Flags.gsfQuickSettings;
-
import android.content.ComponentName;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Rect;
-import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.view.LayoutInflater;
@@ -47,7 +44,6 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import com.android.internal.logging.UiEventLogger;
import com.android.systemui.FontSizeUtils;
-import com.android.systemui.FontStyles;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.qs.QSEditEvent;
@@ -313,10 +309,6 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta
if (viewType == TYPE_HEADER) {
View v = inflater.inflate(R.layout.qs_customize_header, parent, false);
v.setMinimumHeight(calculateHeaderMinHeight(context));
- if (gsfQuickSettings()) {
- ((TextView) v.findViewById(android.R.id.title)).setTypeface(
- Typeface.create(FontStyles.GSF_LABEL_LARGE, Typeface.NORMAL));
- }
return new Holder(v);
}
if (viewType == TYPE_DIVIDER) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/flags/QsDetailedView.kt b/packages/SystemUI/src/com/android/systemui/qs/flags/QsDetailedView.kt
index c302cb21f77f..3afaef5ea6a1 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/flags/QsDetailedView.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/flags/QsDetailedView.kt
@@ -20,7 +20,6 @@ import com.android.systemui.Flags
import com.android.systemui.flags.FlagToken
import com.android.systemui.flags.RefactorFlagUtils
import com.android.systemui.scene.shared.flag.SceneContainerFlag
-import com.android.systemui.shade.shared.flag.DualShade
/** Helper for reading or using the QS Detailed View flag state. */
@Suppress("NOTHING_TO_INLINE")
@@ -37,7 +36,6 @@ object QsDetailedView {
inline val isEnabled
get() =
Flags.qsTileDetailedView() && // mainAconfigFlag
- DualShade.isEnabled &&
SceneContainerFlag.isEnabled
// NOTE: Changes should also be made in getSecondaryFlags
@@ -47,10 +45,8 @@ object QsDetailedView {
/** The set of secondary flags which must be enabled for qs detailed view to work properly */
inline fun getSecondaryFlags(): Sequence<FlagToken> =
- sequenceOf(
- DualShade.token
- // NOTE: Changes should also be made in isEnabled
- ) + SceneContainerFlag.getAllRequirements()
+ // NOTE: Changes should also be made in isEnabled
+ SceneContainerFlag.getAllRequirements()
/** The full set of requirements for QsDetailedView */
inline fun getAllRequirements(): Sequence<FlagToken> {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/flags/QsInCompose.kt b/packages/SystemUI/src/com/android/systemui/qs/flags/QsInCompose.kt
index 3067ccbb7cea..3140df8d947a 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/flags/QsInCompose.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/flags/QsInCompose.kt
@@ -17,11 +17,11 @@
package com.android.systemui.qs.flags
import com.android.systemui.flags.RefactorFlagUtils
-import com.android.systemui.shade.shared.flag.DualShade
+import com.android.systemui.scene.shared.flag.SceneContainerFlag
/**
* Object to help check if the new QS ui should be used. This is true if either [QSComposeFragment]
- * or [DualShade] are enabled.
+ * or [SceneContainerFlag] are enabled.
*/
object QsInCompose {
@@ -29,11 +29,12 @@ object QsInCompose {
* This is not a real flag name, but a representation of the allowed flag names. Should not be
* used with test annotations.
*/
- private val flagName = "${QSComposeFragment.FLAG_NAME}|${DualShade.FLAG_NAME}"
+ private val flagName =
+ "${QSComposeFragment.FLAG_NAME}|${SceneContainerFlag.getMainAconfigFlag().name}"
@JvmStatic
inline val isEnabled: Boolean
- get() = QSComposeFragment.isEnabled || DualShade.isEnabled
+ get() = QSComposeFragment.isEnabled || SceneContainerFlag.isEnabled
@JvmStatic
fun isUnexpectedlyInLegacyMode() =
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/dagger/PanelsModule.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/dagger/PanelsModule.kt
index f4bf53cafd19..325c6cafc465 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/dagger/PanelsModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/dagger/PanelsModule.kt
@@ -16,6 +16,7 @@
package com.android.systemui.qs.panels.dagger
+import com.android.systemui.CoreStartable
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.log.LogBuffer
import com.android.systemui.log.LogBufferFactory
@@ -23,6 +24,7 @@ import com.android.systemui.qs.panels.data.repository.DefaultLargeTilesRepositor
import com.android.systemui.qs.panels.data.repository.DefaultLargeTilesRepositoryImpl
import com.android.systemui.qs.panels.domain.interactor.EditTilesResetInteractor
import com.android.systemui.qs.panels.domain.interactor.SizedTilesResetInteractor
+import com.android.systemui.qs.panels.domain.startable.QSPanelsCoreStartable
import com.android.systemui.qs.panels.shared.model.GridLayoutType
import com.android.systemui.qs.panels.shared.model.InfiniteGridLayoutType
import com.android.systemui.qs.panels.shared.model.PaginatedGridLayoutType
@@ -36,6 +38,8 @@ import com.android.systemui.qs.panels.ui.viewmodel.IconTilesViewModelImpl
import dagger.Binds
import dagger.Module
import dagger.Provides
+import dagger.multibindings.ClassKey
+import dagger.multibindings.IntoMap
import dagger.multibindings.IntoSet
import javax.inject.Named
@@ -57,6 +61,11 @@ interface PanelsModule {
@Binds @Named("Default") fun bindDefaultGridLayout(impl: PaginatedGridLayout): GridLayout
+ @Binds
+ @IntoMap
+ @ClassKey(QSPanelsCoreStartable::class)
+ fun bindQSPanelsCoreStartable(impl: QSPanelsCoreStartable): CoreStartable
+
companion object {
@Provides
@SysUISingleton
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/data/repository/PaginatedGridRepository.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/data/repository/PaginatedGridRepository.kt
deleted file mode 100644
index 6746efac4aa3..000000000000
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/data/repository/PaginatedGridRepository.kt
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.qs.panels.data.repository
-
-import android.content.res.Resources
-import com.android.systemui.common.ui.data.repository.ConfigurationRepository
-import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.res.R
-import com.android.systemui.shade.ShadeDisplayAware
-import com.android.systemui.util.kotlin.emitOnStart
-import javax.inject.Inject
-import kotlinx.coroutines.flow.map
-
-/**
- * Provides the number of [rows] to use with a paginated grid, by tracking the resource
- * [R.integer.quick_settings_max_rows].
- */
-@SysUISingleton
-class PaginatedGridRepository
-@Inject
-constructor(
- @ShadeDisplayAware private val resources: Resources,
- @ShadeDisplayAware configurationRepository: ConfigurationRepository,
-) {
- val rows =
- configurationRepository.onConfigurationChange.emitOnStart().map {
- resources.getInteger(R.integer.quick_settings_paginated_grid_num_rows)
- }
-}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/data/repository/QSPreferencesRepository.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/data/repository/QSPreferencesRepository.kt
index 19e4fd5b21b0..16dff7d11002 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/data/repository/QSPreferencesRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/data/repository/QSPreferencesRepository.kt
@@ -84,11 +84,33 @@ constructor(
/** Sets for the current user the set of [TileSpec] to display as large tiles. */
fun setLargeTilesSpecs(specs: Set<TileSpec>) {
- with(getSharedPrefs(userRepository.getSelectedUserInfo().id)) {
+ setLargeTilesSpecsForUser(specs, userRepository.getSelectedUserInfo().id)
+ }
+
+ private fun setLargeTilesSpecsForUser(specs: Set<TileSpec>, userId: Int) {
+ with(getSharedPrefs(userId)) {
edit().putStringSet(LARGE_TILES_SPECS_KEY, specs.map { it.spec }.toSet()).apply()
}
}
+ /**
+ * Sets the initial tiles as large, if there is no set in SharedPrefs for the [userId]. This is
+ * to be used when upgrading to a build that supports large/small tiles.
+ *
+ * Even if largeTilesSpec is read Eagerly before we know if we are in an initial state, because
+ * we are not writing the default values to the SharedPreferences, the file will not contain the
+ * key and this call will succeed, as long as there hasn't been any calls to setLargeTilesSpecs
+ * for that user before.
+ */
+ fun setInitialLargeTilesSpecs(specs: Set<TileSpec>, userId: Int) {
+ with(getSharedPrefs(userId)) {
+ if (!contains(LARGE_TILES_SPECS_KEY)) {
+ logger.i("Setting upgraded large tiles for user $userId: $specs")
+ setLargeTilesSpecsForUser(specs, userId)
+ }
+ }
+ }
+
private fun getSharedPrefs(userId: Int): SharedPreferences {
return userFileManager.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE, userId)
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/domain/interactor/IconTilesInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/domain/interactor/IconTilesInteractor.kt
index 23c79f576df5..482cd4014acf 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/domain/interactor/IconTilesInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/domain/interactor/IconTilesInteractor.kt
@@ -44,6 +44,7 @@ constructor(
@PanelsLog private val logBuffer: LogBuffer,
@Application private val applicationScope: CoroutineScope,
) {
+
val largeTilesSpecs =
preferencesInteractor.largeTilesSpecs
.onEach { logChange(it) }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/domain/interactor/QSColumnsInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/domain/interactor/QSColumnsInteractor.kt
index 2b2a63b1fded..e6b89fcf2d1f 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/domain/interactor/QSColumnsInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/domain/interactor/QSColumnsInteractor.kt
@@ -19,25 +19,27 @@ package com.android.systemui.qs.panels.domain.interactor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.qs.panels.data.repository.QSColumnsRepository
-import com.android.systemui.shade.domain.interactor.ShadeInteractor
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.shade.shared.model.ShadeMode
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.stateIn
+@OptIn(ExperimentalCoroutinesApi::class)
@SysUISingleton
class QSColumnsInteractor
@Inject
constructor(
@Application scope: CoroutineScope,
repo: QSColumnsRepository,
- shadeInteractor: ShadeInteractor,
+ shadeModeInteractor: ShadeModeInteractor,
) {
val columns: StateFlow<Int> =
- shadeInteractor.shadeMode
+ shadeModeInteractor.shadeMode
.flatMapLatest {
when (it) {
ShadeMode.Dual -> repo.dualShadeColumns
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/domain/interactor/QSPreferencesInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/domain/interactor/QSPreferencesInteractor.kt
index 22543b12b93c..86838b438bc6 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/domain/interactor/QSPreferencesInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/domain/interactor/QSPreferencesInteractor.kt
@@ -29,4 +29,8 @@ class QSPreferencesInteractor @Inject constructor(private val repo: QSPreference
fun setLargeTilesSpecs(specs: Set<TileSpec>) {
repo.setLargeTilesSpecs(specs)
}
+
+ fun setInitialLargeTilesSpecs(specs: Set<TileSpec>, user: Int) {
+ repo.setInitialLargeTilesSpecs(specs, user)
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/domain/startable/QSPanelsCoreStartable.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/domain/startable/QSPanelsCoreStartable.kt
new file mode 100644
index 000000000000..a8ac5c34d8f9
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/domain/startable/QSPanelsCoreStartable.kt
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.qs.panels.domain.startable
+
+import com.android.app.tracing.coroutines.launchTraced
+import com.android.systemui.CoreStartable
+import com.android.systemui.dagger.qualifiers.Background
+import com.android.systemui.qs.panels.domain.interactor.QSPreferencesInteractor
+import com.android.systemui.qs.pipeline.data.repository.TileSpecRepository
+import javax.inject.Inject
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.flow.receiveAsFlow
+
+class QSPanelsCoreStartable
+@Inject
+constructor(
+ private val tileSpecRepository: TileSpecRepository,
+ private val preferenceInteractor: QSPreferencesInteractor,
+ @Background private val backgroundApplicationScope: CoroutineScope,
+) : CoreStartable {
+ override fun start() {
+ backgroundApplicationScope.launchTraced("QSPanelsCoreStartable.startingLargeTiles") {
+ tileSpecRepository.tilesReadFromSetting.receiveAsFlow().collect { (tiles, userId) ->
+ preferenceInteractor.setInitialLargeTilesSpecs(tiles, userId)
+ }
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/PaginatedGridLayout.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/PaginatedGridLayout.kt
index c72381f45239..1a7ef62a2e7c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/PaginatedGridLayout.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/PaginatedGridLayout.kt
@@ -39,6 +39,7 @@ import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.pointer.pointerInteropFilter
+import androidx.compose.ui.res.integerResource
import androidx.compose.ui.unit.dp
import com.android.compose.animation.scene.ContentScope
import com.android.compose.modifiers.padding
@@ -54,6 +55,7 @@ import com.android.systemui.qs.panels.ui.viewmodel.PaginatedGridViewModel
import com.android.systemui.qs.panels.ui.viewmodel.TileViewModel
import com.android.systemui.qs.panels.ui.viewmodel.toolbar.EditModeButtonViewModel
import com.android.systemui.qs.ui.compose.borderOnFocus
+import com.android.systemui.res.R
import javax.inject.Inject
class PaginatedGridLayout
@@ -75,7 +77,7 @@ constructor(
onDispose { tiles.forEach { it.stopListening(token) } }
}
val columns = viewModel.columns
- val rows = viewModel.rows
+ val rows = integerResource(R.integer.quick_settings_paginated_grid_num_rows)
val pages =
remember(tiles, columns, rows) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/TileDetails.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/TileDetails.kt
index 30fb50db82a2..701f44e9981c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/TileDetails.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/TileDetails.kt
@@ -38,8 +38,17 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
+import com.android.systemui.bluetooth.qsdialog.BluetoothDetailsContent
+import com.android.systemui.bluetooth.qsdialog.BluetoothDetailsViewModel
+import com.android.systemui.plugins.qs.TileDetailsViewModel
import com.android.systemui.qs.flags.QsDetailedView
import com.android.systemui.qs.panels.ui.viewmodel.DetailsViewModel
+import com.android.systemui.qs.tiles.dialog.InternetDetailsContent
+import com.android.systemui.qs.tiles.dialog.InternetDetailsViewModel
+import com.android.systemui.qs.tiles.dialog.ModesDetailsContent
+import com.android.systemui.qs.tiles.dialog.ModesDetailsViewModel
+import com.android.systemui.qs.tiles.dialog.ScreenRecordDetailsContent
+import com.android.systemui.qs.tiles.dialog.ScreenRecordDetailsViewModel
@Composable
fun TileDetails(modifier: Modifier = Modifier, detailsViewModel: DetailsViewModel) {
@@ -107,7 +116,18 @@ fun TileDetails(modifier: Modifier = Modifier, detailsViewModel: DetailsViewMode
style = MaterialTheme.typography.titleSmall,
)
}
- tileDetailedViewModel.GetContentView()
+ MapTileDetailsContent(tileDetailedViewModel)
+ }
+}
+
+@Composable
+private fun MapTileDetailsContent(tileDetailsViewModel: TileDetailsViewModel) {
+ when (tileDetailsViewModel) {
+ is InternetDetailsViewModel -> InternetDetailsContent(tileDetailsViewModel)
+ is ScreenRecordDetailsViewModel -> ScreenRecordDetailsContent(tileDetailsViewModel)
+ is BluetoothDetailsViewModel ->
+ BluetoothDetailsContent(tileDetailsViewModel.detailsContentViewModel)
+ is ModesDetailsViewModel -> ModesDetailsContent(tileDetailsViewModel)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/TileGrid.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/TileGrid.kt
index bcc44d397eb2..fd10f917106b 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/TileGrid.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/TileGrid.kt
@@ -17,16 +17,14 @@
package com.android.systemui.qs.panels.ui.compose
import androidx.compose.runtime.Composable
-import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
-import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.compose.animation.scene.ContentScope
import com.android.systemui.qs.panels.ui.viewmodel.TileGridViewModel
@Composable
fun ContentScope.TileGrid(viewModel: TileGridViewModel, modifier: Modifier = Modifier) {
- val gridLayout by viewModel.gridLayout.collectAsStateWithLifecycle()
- val tiles by viewModel.tileViewModels.collectAsStateWithLifecycle(emptyList())
+ val gridLayout = viewModel.gridLayout
+ val tiles = viewModel.tileViewModels
with(gridLayout) { TileGrid(tiles, modifier) }
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/infinitegrid/EditTile.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/infinitegrid/EditTile.kt
index 1f4f9f98c5b2..7701b9087e23 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/infinitegrid/EditTile.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/infinitegrid/EditTile.kt
@@ -31,6 +31,7 @@ import androidx.compose.foundation.LocalOverscrollFactory
import androidx.compose.foundation.ScrollState
import androidx.compose.foundation.background
import androidx.compose.foundation.border
+import androidx.compose.foundation.clickable
import androidx.compose.foundation.clipScrollableContainer
import androidx.compose.foundation.gestures.Orientation
import androidx.compose.foundation.layout.Arrangement.spacedBy
@@ -49,7 +50,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.requiredHeightIn
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.wrapContentHeight
-import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyGridScope
import androidx.compose.foundation.lazy.grid.rememberLazyGridState
@@ -101,7 +101,6 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.CustomAccessibilityAction
import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.semantics.customActions
-import androidx.compose.ui.semantics.onClick
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.stateDescription
import androidx.compose.ui.text.style.TextAlign
@@ -138,7 +137,6 @@ import com.android.systemui.qs.panels.ui.compose.selection.ResizingState
import com.android.systemui.qs.panels.ui.compose.selection.ResizingState.ResizeOperation
import com.android.systemui.qs.panels.ui.compose.selection.ResizingState.ResizeOperation.FinalResizeOperation
import com.android.systemui.qs.panels.ui.compose.selection.ResizingState.ResizeOperation.TemporaryResizeOperation
-import com.android.systemui.qs.panels.ui.compose.selection.clearSelectionTile
import com.android.systemui.qs.panels.ui.compose.selection.rememberResizingState
import com.android.systemui.qs.panels.ui.compose.selection.rememberSelectionState
import com.android.systemui.qs.panels.ui.compose.selection.selectableTile
@@ -190,6 +188,7 @@ fun DefaultEditTileGrid(
columns: Int,
largeTilesSpan: Int,
modifier: Modifier,
+ onAddTile: (TileSpec) -> Unit,
onRemoveTile: (TileSpec) -> Unit,
onSetTiles: (List<TileSpec>) -> Unit,
onResize: (TileSpec, toIcon: Boolean) -> Unit,
@@ -230,20 +229,26 @@ fun DefaultEditTileGrid(
modifier
.fillMaxSize()
// Apply top padding before the scroll so the scrollable doesn't show under
- // the
- // top bar
+ // the top bar
.padding(top = innerPadding.calculateTopPadding())
.clipScrollableContainer(Orientation.Vertical)
.verticalScroll(scrollState),
) {
AnimatedContent(
- targetState = listState.dragInProgress,
- modifier = Modifier.wrapContentSize(),
+ targetState = listState.dragInProgress || selectionState.selected,
label = "QSEditHeader",
- ) { dragIsInProgress ->
- EditGridHeader(Modifier.dragAndDropRemoveZone(listState, onRemoveTile)) {
- if (dragIsInProgress) {
- RemoveTileTarget()
+ ) { showRemoveTarget ->
+ EditGridHeader(
+ Modifier.dragAndDropRemoveZone(listState, onRemoveTile)
+ .padding(bottom = 26.dp)
+ ) {
+ if (showRemoveTarget) {
+ RemoveTileTarget {
+ selectionState.selection?.let {
+ selectionState.unSelect()
+ onRemoveTile(it.tileSpec)
+ }
+ }
} else {
Text(text = stringResource(id = R.string.drag_to_rearrange_tiles))
}
@@ -283,7 +288,13 @@ fun DefaultEditTileGrid(
Text(text = stringResource(id = R.string.drag_to_add_tiles))
}
- AvailableTileGrid(otherTiles, selectionState, columns, listState)
+ AvailableTileGrid(
+ otherTiles,
+ selectionState,
+ columns,
+ onAddTile,
+ listState,
+ )
}
}
}
@@ -347,22 +358,18 @@ private fun EditGridHeader(
CompositionLocalProvider(
LocalContentColor provides MaterialTheme.colorScheme.onBackground.copy(alpha = .5f)
) {
- Box(
- contentAlignment = Alignment.Center,
- modifier = modifier.fillMaxWidth().wrapContentHeight(),
- ) {
- content()
- }
+ Box(contentAlignment = Alignment.Center, modifier = modifier.fillMaxWidth()) { content() }
}
}
@Composable
-private fun RemoveTileTarget() {
+private fun RemoveTileTarget(onClick: () -> Unit) {
Row(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = tileHorizontalArrangement(),
modifier =
Modifier.fillMaxHeight()
+ .clickable(onClick = onClick)
.border(1.dp, LocalContentColor.current, shape = CircleShape)
.padding(10.dp),
) {
@@ -441,6 +448,7 @@ private fun AvailableTileGrid(
tiles: List<SizedTile<EditTileViewModel>>,
selectionState: MutableSelectionState,
columns: Int,
+ onAddTile: (TileSpec) -> Unit,
dragAndDropState: DragAndDropState,
) {
// Available tiles aren't visible during drag and drop, so the row/col isn't needed
@@ -478,6 +486,7 @@ private fun AvailableTileGrid(
index = index,
dragAndDropState = dragAndDropState,
selectionState = selectionState,
+ onAddTile = onAddTile,
modifier = Modifier.weight(1f).fillMaxHeight(),
)
}
@@ -682,11 +691,16 @@ private fun AvailableTileGridCell(
index: Int,
dragAndDropState: DragAndDropState,
selectionState: MutableSelectionState,
+ onAddTile: (TileSpec) -> Unit,
modifier: Modifier = Modifier,
) {
val onClickActionName = stringResource(id = R.string.accessibility_qs_edit_tile_add_action)
val stateDescription = stringResource(id = R.string.accessibility_qs_edit_position, index + 1)
val colors = EditModeTileDefaults.editTileColors()
+ val onClick = {
+ onAddTile(cell.tile.tileSpec)
+ selectionState.select(cell.tile.tileSpec, manual = false)
+ }
// Displays the tile as an icon tile with the label underneath
Column(
@@ -697,11 +711,8 @@ private fun AvailableTileGridCell(
Box(
Modifier.fillMaxWidth()
.height(TileHeight)
- .clearSelectionTile(selectionState)
- .semantics(mergeDescendants = true) {
- onClick(onClickActionName) { false }
- this.stateDescription = stateDescription
- }
+ .clickable(onClick = onClick, onClickLabel = onClickActionName)
+ .semantics(mergeDescendants = true) { this.stateDescription = stateDescription }
.dragAndDropTileSource(
SizedTileImpl(cell.tile, cell.width),
dragAndDropState,
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/infinitegrid/InfiniteGridLayout.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/infinitegrid/InfiniteGridLayout.kt
index cc4c3af1dc63..1c540eed8aa0 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/infinitegrid/InfiniteGridLayout.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/infinitegrid/InfiniteGridLayout.kt
@@ -42,6 +42,7 @@ import com.android.systemui.qs.panels.ui.viewmodel.EditTileViewModel
import com.android.systemui.qs.panels.ui.viewmodel.IconTilesViewModel
import com.android.systemui.qs.panels.ui.viewmodel.InfiniteGridViewModel
import com.android.systemui.qs.panels.ui.viewmodel.TileViewModel
+import com.android.systemui.qs.pipeline.domain.interactor.CurrentTilesInteractor.Companion.POSITION_AT_END
import com.android.systemui.qs.pipeline.shared.TileSpec
import com.android.systemui.qs.shared.ui.ElementKeys.toElementKey
import com.android.systemui.res.R
@@ -155,6 +156,7 @@ constructor(
otherTiles = otherTiles,
columns = columns,
modifier = modifier,
+ onAddTile = { onAddTile(it, POSITION_AT_END) },
onRemoveTile = onRemoveTile,
onSetTiles = onSetTiles,
onResize = iconTilesViewModel::resize,
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/selection/MutableSelectionState.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/selection/MutableSelectionState.kt
index c6c6dcaa896c..26dfc7224ff9 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/selection/MutableSelectionState.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/compose/selection/MutableSelectionState.kt
@@ -21,6 +21,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.pointer.pointerInput
import com.android.systemui.qs.pipeline.shared.TileSpec
@@ -39,17 +40,19 @@ data class Selection(val tileSpec: TileSpec, val manual: Boolean)
/** Holds the state of the current selection. */
class MutableSelectionState {
- private var _selection = mutableStateOf<Selection?>(null)
-
/** The [Selection] if a tile is selected, null if not. */
- val selection by _selection
+ var selection by mutableStateOf<Selection?>(null)
+ private set
+
+ val selected: Boolean
+ get() = selection != null
fun select(tileSpec: TileSpec, manual: Boolean) {
- _selection.value = Selection(tileSpec, manual)
+ selection = Selection(tileSpec, manual)
}
fun unSelect() {
- _selection.value = null
+ selection = null
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/MediaInRowInLandscapeViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/MediaInRowInLandscapeViewModel.kt
index 2ed8fd20df8f..706d5a065234 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/MediaInRowInLandscapeViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/MediaInRowInLandscapeViewModel.kt
@@ -20,13 +20,13 @@ import android.content.res.Configuration
import android.content.res.Resources
import androidx.compose.runtime.getValue
import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
-import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.lifecycle.ExclusiveActivatable
import com.android.systemui.lifecycle.Hydrator
import com.android.systemui.media.controls.ui.controller.MediaHostStatesManager
import com.android.systemui.media.controls.ui.controller.MediaLocation
import com.android.systemui.media.controls.ui.view.MediaHostState
import com.android.systemui.qs.composefragment.dagger.QSFragmentComposeModule
+import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.utils.coroutines.flow.conflatedCallbackFlow
@@ -46,7 +46,7 @@ import kotlinx.coroutines.flow.onStart
class MediaInRowInLandscapeViewModel
@AssistedInject
constructor(
- @Main resources: Resources,
+ @ShadeDisplayAware resources: Resources,
configurationInteractor: ConfigurationInteractor,
shadeModeInteractor: ShadeModeInteractor,
private val mediaHostStatesManager: MediaHostStatesManager,
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/PaginatedGridViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/PaginatedGridViewModel.kt
index 3fcb2ab37b0f..fe5eec848dd8 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/PaginatedGridViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/PaginatedGridViewModel.kt
@@ -23,7 +23,6 @@ import com.android.systemui.development.ui.viewmodel.BuildNumberViewModel
import com.android.systemui.lifecycle.ExclusiveActivatable
import com.android.systemui.lifecycle.Hydrator
import com.android.systemui.media.controls.ui.controller.MediaHierarchyManager.Companion.LOCATION_QS
-import com.android.systemui.qs.panels.domain.interactor.PaginatedGridInteractor
import com.android.systemui.qs.panels.ui.viewmodel.toolbar.EditModeButtonViewModel
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
@@ -36,7 +35,6 @@ class PaginatedGridViewModel
constructor(
iconTilesViewModel: IconTilesViewModel,
columnsWithMediaViewModelFactory: QSColumnsViewModel.Factory,
- paginatedGridInteractor: PaginatedGridInteractor,
inFirstPageViewModel: InFirstPageViewModel,
val buildNumberViewModelFactory: BuildNumberViewModel.Factory,
val editModeButtonViewModelFactory: EditModeButtonViewModel.Factory,
@@ -46,13 +44,6 @@ constructor(
private val hydrator = Hydrator("PaginatedGridViewModel")
private val columnsWithMediaViewModel = columnsWithMediaViewModelFactory.create(LOCATION_QS)
- val rows by
- hydrator.hydratedStateOf(
- traceName = "rows",
- initialValue = paginatedGridInteractor.defaultRows,
- source = paginatedGridInteractor.rows,
- )
-
var inFirstPage by inFirstPageViewModel::inFirstPage
val columns: Int
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/TileGridViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/TileGridViewModel.kt
index 29832b9c272c..77faf3fb19e3 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/TileGridViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/TileGridViewModel.kt
@@ -16,38 +16,48 @@
package com.android.systemui.qs.panels.ui.viewmodel
-import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.dagger.qualifiers.Application
+import androidx.compose.runtime.getValue
+import com.android.systemui.lifecycle.ExclusiveActivatable
+import com.android.systemui.lifecycle.Hydrator
import com.android.systemui.qs.panels.domain.interactor.GridLayoutTypeInteractor
import com.android.systemui.qs.panels.shared.model.GridLayoutType
import com.android.systemui.qs.panels.ui.compose.GridLayout
import com.android.systemui.qs.pipeline.domain.interactor.CurrentTilesInteractor
-import javax.inject.Inject
+import dagger.assisted.AssistedFactory
+import dagger.assisted.AssistedInject
import javax.inject.Named
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.SharingStarted
-import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.flow.mapLatest
-import kotlinx.coroutines.flow.stateIn
-@SysUISingleton
class TileGridViewModel
-@Inject
+@AssistedInject
constructor(
gridLayoutTypeInteractor: GridLayoutTypeInteractor,
gridLayoutMap: Map<GridLayoutType, @JvmSuppressWildcards GridLayout>,
tilesInteractor: CurrentTilesInteractor,
@Named("Default") defaultGridLayout: GridLayout,
- @Application private val applicationScope: CoroutineScope
-) {
- val gridLayout: StateFlow<GridLayout> =
- gridLayoutTypeInteractor.layout
- .map { gridLayoutMap[it] ?: defaultGridLayout }
- .stateIn(applicationScope, SharingStarted.Eagerly, defaultGridLayout)
- val tileViewModels: Flow<List<TileViewModel>> =
- tilesInteractor.currentTiles.mapLatest { tiles ->
- tiles.map { TileViewModel(it.tile, it.spec) }
- }
+) : ExclusiveActivatable() {
+
+ private val hydrator = Hydrator("TileGridViewModel")
+
+ val gridLayout by
+ hydrator.hydratedStateOf(
+ traceName = "gridLayout",
+ source = gridLayoutTypeInteractor.layout.map { gridLayoutMap[it] ?: defaultGridLayout },
+ initialValue = defaultGridLayout,
+ )
+
+ private val tileModels by
+ hydrator.hydratedStateOf(traceName = "tileModels", source = tilesInteractor.currentTiles)
+
+ val tileViewModels: List<TileViewModel>
+ get() = tileModels.map { TileViewModel(it.tile, it.spec) }
+
+ override suspend fun onActivated(): Nothing {
+ hydrator.activate()
+ }
+
+ @AssistedFactory
+ interface Factory {
+ fun create(): TileGridViewModel
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/TileViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/TileViewModel.kt
index 9462321ad9fd..3ba7252f991c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/TileViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/panels/ui/viewmodel/TileViewModel.kt
@@ -28,7 +28,7 @@ import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.onStart
@Immutable
-class TileViewModel(private val tile: QSTile, val spec: TileSpec) {
+data class TileViewModel(private val tile: QSTile, val spec: TileSpec) {
val state: Flow<QSTile.State> =
conflatedCallbackFlow {
val callback = QSTile.Callback { trySend(it.copy()) }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/pipeline/dagger/BaseAutoAddableModule.kt b/packages/SystemUI/src/com/android/systemui/qs/pipeline/dagger/BaseAutoAddableModule.kt
index a6edb586776b..c9f6dcfe4293 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/pipeline/dagger/BaseAutoAddableModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/pipeline/dagger/BaseAutoAddableModule.kt
@@ -17,7 +17,6 @@
package com.android.systemui.qs.pipeline.dagger
import android.content.res.Resources
-import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.qs.pipeline.domain.autoaddable.A11yShortcutAutoAddable
import com.android.systemui.qs.pipeline.domain.autoaddable.A11yShortcutAutoAddableList
import com.android.systemui.qs.pipeline.domain.autoaddable.AutoAddableSetting
@@ -30,6 +29,7 @@ import com.android.systemui.qs.pipeline.domain.autoaddable.NightDisplayAutoAddab
import com.android.systemui.qs.pipeline.domain.autoaddable.WalletAutoAddable
import com.android.systemui.qs.pipeline.domain.autoaddable.WorkTileAutoAddable
import com.android.systemui.qs.pipeline.domain.model.AutoAddable
+import com.android.systemui.shade.ShadeDisplayAware
import dagger.Binds
import dagger.Module
import dagger.Provides
@@ -43,7 +43,7 @@ interface BaseAutoAddableModule {
@Provides
@ElementsIntoSet
fun providesAutoAddableSetting(
- @Main resources: Resources,
+ @ShadeDisplayAware resources: Resources,
autoAddableSettingFactory: AutoAddableSetting.Factory,
): Set<AutoAddable> {
return AutoAddableSettingList.parseSettingsResource(
diff --git a/packages/SystemUI/src/com/android/systemui/qs/pipeline/data/repository/TileSpecRepository.kt b/packages/SystemUI/src/com/android/systemui/qs/pipeline/data/repository/TileSpecRepository.kt
index 4e993786e343..6b7dd386bb46 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/pipeline/data/repository/TileSpecRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/pipeline/data/repository/TileSpecRepository.kt
@@ -19,7 +19,9 @@ package com.android.systemui.qs.pipeline.data.repository
import android.annotation.UserIdInt
import android.content.res.Resources
import android.util.SparseArray
+import com.android.app.tracing.coroutines.launchTraced
import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.qs.pipeline.data.model.RestoreData
import com.android.systemui.qs.pipeline.shared.TileSpec
import com.android.systemui.qs.pipeline.shared.logging.QSPipelineLogger
@@ -27,6 +29,9 @@ import com.android.systemui.res.R
import com.android.systemui.retail.data.repository.RetailModeRepository
import com.android.systemui.shade.ShadeDisplayAware
import javax.inject.Inject
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.channels.Channel
+import kotlinx.coroutines.channels.ReceiveChannel
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.flowOf
@@ -73,6 +78,8 @@ interface TileSpecRepository {
/** Reset the current set of tiles to the default list of tiles */
suspend fun resetToDefault(userId: Int)
+ val tilesReadFromSetting: ReceiveChannel<Pair<Set<TileSpec>, Int>>
+
companion object {
/** Position to indicate the end of the list */
const val POSITION_AT_END = -1
@@ -94,6 +101,7 @@ constructor(
private val logger: QSPipelineLogger,
private val retailModeRepository: RetailModeRepository,
private val userTileSpecRepositoryFactory: UserTileSpecRepository.Factory,
+ @Background private val applicationScope: CoroutineScope,
) : TileSpecRepository {
private val retailModeTiles by lazy {
@@ -104,12 +112,20 @@ constructor(
.filter { it !is TileSpec.Invalid }
}
+ private val _tilesReadFromSetting = Channel<Pair<Set<TileSpec>, Int>>(capacity = 5)
+ override val tilesReadFromSetting = _tilesReadFromSetting
+
private val userTileRepositories = SparseArray<UserTileSpecRepository>()
override suspend fun tilesSpecs(userId: Int): Flow<List<TileSpec>> {
if (userId !in userTileRepositories) {
val userTileRepository = userTileSpecRepositoryFactory.create(userId)
userTileRepositories.put(userId, userTileRepository)
+ applicationScope.launchTraced("TileSpecRepository.aggregateTilesPerUser") {
+ for (tilesFromSettings in userTileRepository.tilesReadFromSettings) {
+ _tilesReadFromSetting.send(tilesFromSettings to userId)
+ }
+ }
}
val realTiles = userTileRepositories.get(userId).tiles()
diff --git a/packages/SystemUI/src/com/android/systemui/qs/pipeline/data/repository/UserTileSpecRepository.kt b/packages/SystemUI/src/com/android/systemui/qs/pipeline/data/repository/UserTileSpecRepository.kt
index 64da853484ff..7b56cd92a081 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/pipeline/data/repository/UserTileSpecRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/pipeline/data/repository/UserTileSpecRepository.kt
@@ -3,6 +3,7 @@ package com.android.systemui.qs.pipeline.data.repository
import android.annotation.UserIdInt
import android.database.ContentObserver
import android.provider.Settings
+import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.systemui.common.coroutine.ConflatedCallbackFlow
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dagger.qualifiers.Background
@@ -15,6 +16,8 @@ import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.channels.Channel
+import kotlinx.coroutines.channels.ReceiveChannel
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableSharedFlow
@@ -23,7 +26,6 @@ import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.scan
import kotlinx.coroutines.flow.stateIn
-import com.android.app.tracing.coroutines.launchTraced as launch
import kotlinx.coroutines.withContext
/**
@@ -47,6 +49,9 @@ constructor(
@Background private val backgroundDispatcher: CoroutineDispatcher,
) {
+ private val _tilesReadFromSettings = Channel<Set<TileSpec>>(capacity = 2)
+ val tilesReadFromSettings: ReceiveChannel<Set<TileSpec>> = _tilesReadFromSettings
+
private val defaultTiles: List<TileSpec>
get() = defaultTilesRepository.defaultTiles
@@ -147,7 +152,11 @@ constructor(
}
private suspend fun loadTilesFromSettingsAndParse(userId: Int): List<TileSpec> {
- return parseTileSpecs(loadTilesFromSettings(userId), userId)
+ val loadedTiles = loadTilesFromSettings(userId)
+ if (loadedTiles.isNotEmpty()) {
+ _tilesReadFromSettings.send(loadedTiles.toSet())
+ }
+ return parseTileSpecs(loadedTiles, userId)
}
private suspend fun loadTilesFromSettings(userId: Int): List<TileSpec> {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt
index a98b8e5ffdda..fc0d0a22a3f0 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt
@@ -27,7 +27,6 @@ import android.content.res.Resources.ID_NULL
import android.graphics.Color
import android.graphics.PorterDuff
import android.graphics.Rect
-import android.graphics.Typeface
import android.graphics.drawable.Drawable
import android.graphics.drawable.GradientDrawable
import android.graphics.drawable.LayerDrawable
@@ -60,7 +59,6 @@ import com.android.app.tracing.traceSection
import com.android.settingslib.Utils
import com.android.systemui.Flags
import com.android.systemui.FontSizeUtils
-import com.android.systemui.FontStyles
import com.android.systemui.animation.Expandable
import com.android.systemui.animation.LaunchableView
import com.android.systemui.animation.LaunchableViewDelegate
@@ -310,16 +308,6 @@ constructor(
}
setLabelColor(getLabelColorForState(QSTile.State.DEFAULT_STATE))
setSecondaryLabelColor(getSecondaryLabelColorForState(QSTile.State.DEFAULT_STATE))
-
- if (Flags.gsfQuickSettings()) {
- label.apply {
- typeface = Typeface.create(FontStyles.GSF_TITLE_SMALL_EMPHASIZED, Typeface.NORMAL)
- }
- secondaryLabel.apply {
- typeface = Typeface.create(FontStyles.GSF_LABEL_MEDIUM, Typeface.NORMAL)
- }
- }
-
addView(labelContainer)
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
index 0109e70a467e..973265c6c9b1 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
@@ -133,7 +133,7 @@ public class BluetoothTile extends QSTileImpl<BooleanState> {
callback.accept(new BluetoothDetailsViewModel(() -> {
longClick(null);
return null;
- }))
+ }, mDialogViewModel))
);
return true;
}
@@ -158,7 +158,7 @@ public class BluetoothTile extends QSTileImpl<BooleanState> {
private void handleClickEvent(@Nullable Expandable expandable) {
if (mFeatureFlags.isEnabled(Flags.BLUETOOTH_QS_TILE_DIALOG)) {
- mDialogViewModel.showDialog(expandable);
+ mDialogViewModel.showDetailsContent(expandable, /* view= */ null);
} else {
// Secondary clicks are header clicks, just toggle.
toggleBluetooth();
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DreamTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DreamTile.java
index e37ed16133e5..a2cae6ad07e8 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DreamTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DreamTile.java
@@ -67,8 +67,10 @@ public class DreamTile extends QSTileImpl<QSTile.BooleanState> {
private static final String LOG_TAG = "QSDream";
private final IDreamManager mDreamManager;
private final BroadcastDispatcher mBroadcastDispatcher;
- private final UserSettingObserver mEnabledSettingObserver;
- private final UserSettingObserver mDreamSettingObserver;
+ @VisibleForTesting
+ final UserSettingObserver mEnabledSettingObserver;
+ @VisibleForTesting
+ final UserSettingObserver mDreamSettingObserver;
private final UserTracker mUserTracker;
private final boolean mDreamSupported;
private final boolean mDreamOnlyEnabledForDockUser;
@@ -180,6 +182,13 @@ public class DreamTile extends QSTileImpl<QSTile.BooleanState> {
state.expandedAccessibilityClassName = Switch.class.getName();
}
+ @Override
+ protected void handleUserSwitch(int newUserId) {
+ super.handleUserSwitch(newUserId);
+ mDreamSettingObserver.setUserId(newUserId);
+ mEnabledSettingObserver.setUserId(newUserId);
+ }
+
@Nullable
@Override
public Intent getLongClickIntent() {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTileNewImpl.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTileNewImpl.kt
index b1f99cccff70..4d0e80854853 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTileNewImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTileNewImpl.kt
@@ -32,7 +32,6 @@ import com.android.systemui.plugins.qs.TileDetailsViewModel
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.qs.QSHost
import com.android.systemui.qs.QsEventLogger
-import com.android.systemui.qs.flags.QsDetailedView
import com.android.systemui.qs.logging.QSLogger
import com.android.systemui.qs.tileimpl.QSTileImpl
import com.android.systemui.qs.tiles.dialog.InternetDetailsViewModel
@@ -94,9 +93,6 @@ constructor(
}
override fun handleClick(expandable: Expandable?) {
- if (QsDetailedView.isEnabled) {
- return
- }
mainHandler.post {
internetDialogManager.create(
aboveStatusBar = true,
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDetailsContent.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDetailsContent.kt
new file mode 100644
index 000000000000..7d396c58630e
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDetailsContent.kt
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.qs.tiles.dialog
+
+import android.view.LayoutInflater
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.rememberCoroutineScope
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.viewinterop.AndroidView
+import com.android.systemui.res.R
+
+@Composable
+fun InternetDetailsContent(viewModel: InternetDetailsViewModel) {
+ val coroutineScope = rememberCoroutineScope()
+ val context = LocalContext.current
+
+ val internetDetailsContentManager = remember {
+ viewModel.contentManagerFactory.create(
+ canConfigMobileData = viewModel.getCanConfigMobileData(),
+ canConfigWifi = viewModel.getCanConfigWifi(),
+ coroutineScope = coroutineScope,
+ context = context,
+ )
+ }
+
+ AndroidView(
+ modifier = Modifier.fillMaxSize(),
+ factory = { context ->
+ // Inflate with the existing dialog xml layout and bind it with the manager
+ val view =
+ LayoutInflater.from(context).inflate(R.layout.internet_connectivity_dialog, null)
+ internetDetailsContentManager.bind(view)
+
+ view
+ // TODO: b/377388104 - Polish the internet details view UI
+ },
+ onRelease = { internetDetailsContentManager.unBind() },
+ )
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDetailsViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDetailsViewModel.kt
index df4dddbca9e6..0ed56f62ee6c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDetailsViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDetailsViewModel.kt
@@ -16,18 +16,7 @@
package com.android.systemui.qs.tiles.dialog
-import android.util.Log
-import android.view.LayoutInflater
-import androidx.compose.foundation.layout.fillMaxHeight
-import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.remember
-import androidx.compose.runtime.rememberCoroutineScope
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.platform.LocalContext
-import androidx.compose.ui.viewinterop.AndroidView
import com.android.systemui.plugins.qs.TileDetailsViewModel
-import com.android.systemui.res.R
import com.android.systemui.statusbar.connectivity.AccessPointController
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
@@ -37,45 +26,9 @@ class InternetDetailsViewModel
@AssistedInject
constructor(
private val accessPointController: AccessPointController,
- private val contentManagerFactory: InternetDetailsContentManager.Factory,
+ val contentManagerFactory: InternetDetailsContentManager.Factory,
@Assisted private val onLongClick: () -> Unit,
) : TileDetailsViewModel() {
- private lateinit var internetDetailsContentManager: InternetDetailsContentManager
-
- @Composable
- override fun GetContentView() {
- val coroutineScope = rememberCoroutineScope()
- val context = LocalContext.current
-
- internetDetailsContentManager = remember {
- contentManagerFactory.create(
- canConfigMobileData = accessPointController.canConfigMobileData(),
- canConfigWifi = accessPointController.canConfigWifi(),
- coroutineScope = coroutineScope,
- context = context,
- )
- }
- AndroidView(
- modifier = Modifier.fillMaxWidth().fillMaxHeight(),
- factory = { context ->
- // Inflate with the existing dialog xml layout and bind it with the manager
- val view =
- LayoutInflater.from(context)
- .inflate(R.layout.internet_connectivity_dialog, null)
- internetDetailsContentManager.bind(view)
-
- view
- // TODO: b/377388104 - Polish the internet details view UI
- },
- onRelease = {
- internetDetailsContentManager.unBind()
- if (DEBUG) {
- Log.d(TAG, "onRelease")
- }
- },
- )
- }
-
override fun clickOnSettingsButton() {
onLongClick()
}
@@ -96,13 +49,16 @@ constructor(
return "Tab a network to connect"
}
+ fun getCanConfigMobileData(): Boolean {
+ return accessPointController.canConfigMobileData()
+ }
+
+ fun getCanConfigWifi(): Boolean {
+ return accessPointController.canConfigWifi()
+ }
+
@AssistedFactory
interface Factory {
fun create(onLongClick: () -> Unit): InternetDetailsViewModel
}
-
- companion object {
- private const val TAG = "InternetDetailsVModel"
- private val DEBUG: Boolean = Log.isLoggable(TAG, Log.DEBUG)
- }
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacy.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacy.java
index a418b2a71f50..c6bcab48fa68 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacy.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacy.java
@@ -74,6 +74,7 @@ import com.android.systemui.qs.flags.QsDetailedView;
import com.android.systemui.res.R;
import com.android.systemui.shade.ShadeDisplayAware;
import com.android.systemui.shade.domain.interactor.ShadeDialogContextInteractor;
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor;
import com.android.systemui.statusbar.phone.SystemUIDialog;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.wifitrackerlib.WifiEntry;
@@ -207,9 +208,13 @@ public class InternetDialogDelegateLegacy implements
@Background Executor executor,
KeyguardStateController keyguardStateController,
SystemUIDialog.Factory systemUIDialogFactory,
- ShadeDialogContextInteractor shadeDialogContextInteractor) {
- // If `QsDetailedView` is enabled, it should show the details view.
- QsDetailedView.assertInLegacyMode();
+ ShadeDialogContextInteractor shadeDialogContextInteractor,
+ ShadeModeInteractor shadeModeInteractor) {
+ // TODO (b/393628355): remove this after the details view is supported for single shade.
+ if (shadeModeInteractor.isDualShade()){
+ // If `QsDetailedView` is enabled, it should show the details view.
+ QsDetailedView.assertInLegacyMode();
+ }
mAboveStatusBar = aboveStatusBar;
mSystemUIDialogFactory = systemUIDialogFactory;
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogManager.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogManager.kt
index 5f82e60b63ec..27342f37f9fc 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogManager.kt
@@ -24,6 +24,7 @@ import com.android.systemui.coroutines.newTracingContext
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.qs.flags.QsDetailedView
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.statusbar.phone.SystemUIDialog
import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher
@@ -41,6 +42,7 @@ constructor(
private val dialogTransitionAnimator: DialogTransitionAnimator,
private val dialogFactory: InternetDialogDelegateLegacy.Factory,
@Background private val bgDispatcher: CoroutineDispatcher,
+ private val shadeModeInteractor: ShadeModeInteractor,
) {
private lateinit var coroutineScope: CoroutineScope
@@ -59,8 +61,10 @@ constructor(
canConfigWifi: Boolean,
expandable: Expandable?,
) {
- // If `QsDetailedView` is enabled, it should show the details view.
- QsDetailedView.assertInLegacyMode()
+ if (shadeModeInteractor.isDualShade) {
+ // If `QsDetailedView` is enabled, it should show the details view.
+ QsDetailedView.assertInLegacyMode()
+ }
if (dialog != null) {
if (DEBUG) {
Log.d(TAG, "InternetDialog is showing, do not create it twice.")
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/ModesDetailsContent.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/ModesDetailsContent.kt
new file mode 100644
index 000000000000..c5ecaffdf188
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/ModesDetailsContent.kt
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.qs.tiles.dialog
+
+import androidx.compose.runtime.Composable
+import com.android.systemui.statusbar.policy.ui.dialog.composable.ModeTileGrid
+
+@Composable
+fun ModesDetailsContent(viewModel: ModesDetailsViewModel) {
+ // TODO(b/378513940): Finish implementing this function.
+ ModeTileGrid(viewModel = viewModel.viewModel)
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/ModesDetailsViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/ModesDetailsViewModel.kt
index 511597d05d37..9a39c3c095ef 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/ModesDetailsViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/ModesDetailsViewModel.kt
@@ -16,22 +16,14 @@
package com.android.systemui.qs.tiles.dialog
-import androidx.compose.runtime.Composable
import com.android.systemui.plugins.qs.TileDetailsViewModel
-import com.android.systemui.statusbar.policy.ui.dialog.composable.ModeTileGrid
import com.android.systemui.statusbar.policy.ui.dialog.viewmodel.ModesDialogViewModel
/** The view model used for the modes details view in the Quick Settings */
class ModesDetailsViewModel(
private val onSettingsClick: () -> Unit,
- private val viewModel: ModesDialogViewModel,
+ val viewModel: ModesDialogViewModel,
) : TileDetailsViewModel() {
- @Composable
- override fun GetContentView() {
- // TODO(b/378513940): Finish implementing this function.
- ModeTileGrid(viewModel = viewModel)
- }
-
override fun clickOnSettingsButton() {
onSettingsClick()
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/ScreenRecordDetailsContent.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/ScreenRecordDetailsContent.kt
new file mode 100644
index 000000000000..bf1a51d8cd59
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/ScreenRecordDetailsContent.kt
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.qs.tiles.dialog
+
+import android.view.LayoutInflater
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.remember
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.viewinterop.AndroidView
+import com.android.systemui.res.R
+import com.android.systemui.screenrecord.ScreenRecordPermissionViewBinder
+
+@Composable
+fun ScreenRecordDetailsContent(viewModel: ScreenRecordDetailsViewModel) {
+ // TODO(b/378514312): Finish implementing this function.
+
+ if (viewModel.recordingController.isScreenCaptureDisabled) {
+ // TODO(b/388345506): Show disabled page here.
+ return
+ }
+
+ val viewBinder: ScreenRecordPermissionViewBinder = remember {
+ viewModel.recordingController.createScreenRecordPermissionViewBinder(
+ viewModel.onStartRecordingClicked
+ )
+ }
+
+ AndroidView(
+ modifier = Modifier.fillMaxWidth().fillMaxHeight(),
+ factory = { context ->
+ // Inflate with the existing dialog xml layout
+ val view = LayoutInflater.from(context).inflate(R.layout.screen_share_dialog, null)
+ viewBinder.bind(view)
+
+ view
+ // TODO(b/378514473): Revamp the details view according to the spec.
+ },
+ onRelease = { viewBinder.unbind() },
+ )
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/ScreenRecordDetailsViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/ScreenRecordDetailsViewModel.kt
index 54e4a521c239..c84ddb6fdb36 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/ScreenRecordDetailsViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/ScreenRecordDetailsViewModel.kt
@@ -16,49 +16,15 @@
package com.android.systemui.qs.tiles.dialog
-import android.view.LayoutInflater
-import androidx.compose.foundation.layout.fillMaxHeight
-import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.viewinterop.AndroidView
import com.android.systemui.plugins.qs.TileDetailsViewModel
-import com.android.systemui.res.R
import com.android.systemui.screenrecord.RecordingController
-import com.android.systemui.screenrecord.ScreenRecordPermissionViewBinder
/** The view model used for the screen record details view in the Quick Settings */
class ScreenRecordDetailsViewModel(
- private val recordingController: RecordingController,
- private val onStartRecordingClicked: Runnable,
+ val recordingController: RecordingController,
+ val onStartRecordingClicked: Runnable,
) : TileDetailsViewModel() {
- private var viewBinder: ScreenRecordPermissionViewBinder =
- recordingController.createScreenRecordPermissionViewBinder(onStartRecordingClicked)
-
- @Composable
- override fun GetContentView() {
- // TODO(b/378514312): Finish implementing this function.
-
- if (recordingController.isScreenCaptureDisabled) {
- // TODO(b/388345506): Show disabled page here.
- return
- }
-
- AndroidView(
- modifier = Modifier.fillMaxWidth().fillMaxHeight(),
- factory = { context ->
- // Inflate with the existing dialog xml layout
- val view = LayoutInflater.from(context).inflate(R.layout.screen_share_dialog, null)
- viewBinder.bind(view)
-
- view
- // TODO(b/378514473): Revamp the details view according to the spec.
- },
- onRelease = { viewBinder.unbind() },
- )
- }
-
override fun clickOnSettingsButton() {
// No settings button in this tile.
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractor.kt
index b5da044b886a..ab1326a8bafb 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractor.kt
@@ -21,6 +21,7 @@ import android.provider.Settings
import android.util.Log
import com.android.systemui.animation.Expandable
import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.qs.flags.QSComposeFragment
import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandler
import com.android.systemui.qs.tiles.base.interactor.QSTileInput
@@ -31,11 +32,14 @@ import com.android.systemui.statusbar.policy.domain.interactor.ZenModeInteractor
import com.android.systemui.statusbar.policy.ui.dialog.ModesDialogDelegate
import com.android.systemui.statusbar.policy.ui.dialog.ModesDialogEventLogger
import javax.inject.Inject
+import kotlin.coroutines.CoroutineContext
+import kotlinx.coroutines.withContext
@SysUISingleton
class ModesTileUserActionInteractor
@Inject
constructor(
+ @Main private val mainContext: CoroutineContext,
private val qsTileIntentUserInputHandler: QSTileIntentUserInputHandler,
// TODO(b/353896370): The domain layer should not have to depend on the UI layer.
private val dialogDelegate: ModesDialogDelegate,
@@ -65,7 +69,7 @@ constructor(
dialogDelegate.showDialog(expandable)
}
- fun handleToggleClick(modesTileModel: ModesTileModel) {
+ suspend fun handleToggleClick(modesTileModel: ModesTileModel) {
if (QSComposeFragment.isUnexpectedlyInLegacyMode()) {
return
}
@@ -83,9 +87,11 @@ constructor(
if (zenModeInteractor.shouldAskForZenDuration(dnd)) {
dialogEventLogger.logOpenDurationDialog(dnd)
- // NOTE: The dialog handles turning on the mode itself.
- val dialog = dialogDelegate.makeDndDurationDialog()
- dialog.show()
+ withContext(mainContext) {
+ // NOTE: The dialog handles turning on the mode itself.
+ val dialog = dialogDelegate.makeDndDurationDialog()
+ dialog.show()
+ }
} else {
dialogEventLogger.logModeOn(dnd)
zenModeInteractor.activateMode(dnd)
diff --git a/packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt b/packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt
index d4adcdd49f5c..a97bb6102b5d 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/ui/adapter/QSSceneAdapter.kt
@@ -38,7 +38,7 @@ import com.android.systemui.qs.dagger.QSSceneComponent
import com.android.systemui.res.R
import com.android.systemui.settings.brightness.MirrorController
import com.android.systemui.shade.ShadeDisplayAware
-import com.android.systemui.shade.domain.interactor.ShadeInteractor
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.util.kotlin.sample
import java.io.PrintWriter
@@ -202,7 +202,7 @@ class QSSceneAdapterImpl
constructor(
private val qsSceneComponentFactory: QSSceneComponent.Factory,
private val qsImplProvider: Provider<QSImpl>,
- shadeInteractor: ShadeInteractor,
+ shadeModeInteractor: ShadeModeInteractor,
displayStateInteractor: DisplayStateInteractor,
dumpManager: DumpManager,
@Main private val mainDispatcher: CoroutineDispatcher,
@@ -215,7 +215,7 @@ constructor(
constructor(
qsSceneComponentFactory: QSSceneComponent.Factory,
qsImplProvider: Provider<QSImpl>,
- shadeInteractor: ShadeInteractor,
+ shadeModeInteractor: ShadeModeInteractor,
displayStateInteractor: DisplayStateInteractor,
dumpManager: DumpManager,
@Main dispatcher: CoroutineDispatcher,
@@ -224,7 +224,7 @@ constructor(
) : this(
qsSceneComponentFactory,
qsImplProvider,
- shadeInteractor,
+ shadeModeInteractor,
displayStateInteractor,
dumpManager,
dispatcher,
@@ -331,8 +331,8 @@ constructor(
}
}
launch {
- shadeInteractor.shadeMode.collect {
- qsImpl.value?.setInSplitShade(it == ShadeMode.Split)
+ shadeModeInteractor.shadeMode.collect {
+ qsImpl.value?.setInSplitShade(it is ShadeMode.Split)
}
}
launch {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModel.kt
index c7db04a6b7b2..68fd2f5a85d4 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModel.kt
@@ -19,44 +19,56 @@ package com.android.systemui.qs.ui.viewmodel
import androidx.compose.runtime.getValue
import com.android.systemui.brightness.ui.viewmodel.BrightnessSliderViewModel
import com.android.systemui.lifecycle.ExclusiveActivatable
+import com.android.systemui.lifecycle.Hydrator
import com.android.systemui.qs.panels.ui.viewmodel.DetailsViewModel
import com.android.systemui.qs.panels.ui.viewmodel.EditModeViewModel
-import com.android.systemui.qs.panels.ui.viewmodel.QuickQuickSettingsViewModel
import com.android.systemui.qs.panels.ui.viewmodel.TileGridViewModel
import com.android.systemui.qs.panels.ui.viewmodel.toolbar.ToolbarViewModel
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import kotlinx.coroutines.awaitCancellation
import kotlinx.coroutines.coroutineScope
+import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch
class QuickSettingsContainerViewModel
@AssistedInject
constructor(
brightnessSliderViewModelFactory: BrightnessSliderViewModel.Factory,
- quickQuickSettingsViewModelFactory: QuickQuickSettingsViewModel.Factory,
shadeHeaderViewModelFactory: ShadeHeaderViewModel.Factory,
+ tileGridViewModelFactory: TileGridViewModel.Factory,
@Assisted supportsBrightnessMirroring: Boolean,
- val tileGridViewModel: TileGridViewModel,
val editModeViewModel: EditModeViewModel,
val detailsViewModel: DetailsViewModel,
val toolbarViewModelFactory: ToolbarViewModel.Factory,
+ shadeModeInteractor: ShadeModeInteractor,
) : ExclusiveActivatable() {
+ private val hydrator = Hydrator("QuickSettingsContainerViewModel.hydrator")
+
val brightnessSliderViewModel =
brightnessSliderViewModelFactory.create(supportsBrightnessMirroring)
- val quickQuickSettingsViewModel = quickQuickSettingsViewModelFactory.create()
-
val shadeHeaderViewModel = shadeHeaderViewModelFactory.create()
+ val tileGridViewModel = tileGridViewModelFactory.create()
+
+ val showHeader: Boolean by
+ hydrator.hydratedStateOf(
+ traceName = "showHeader",
+ initialValue = !shadeModeInteractor.isShadeLayoutWide.value,
+ source = shadeModeInteractor.isShadeLayoutWide.map { !it },
+ )
+
override suspend fun onActivated(): Nothing {
coroutineScope {
+ launch { hydrator.activate() }
launch { brightnessSliderViewModel.activate() }
- launch { quickQuickSettingsViewModel.activate() }
launch { shadeHeaderViewModel.activate() }
+ launch { tileGridViewModel.activate() }
awaitCancellation()
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneContentViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneContentViewModel.kt
index 06d3e4a9ad0e..acd091e507ed 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneContentViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneContentViewModel.kt
@@ -17,6 +17,7 @@
package com.android.systemui.qs.ui.viewmodel
import androidx.lifecycle.LifecycleOwner
+import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.systemui.lifecycle.ExclusiveActivatable
import com.android.systemui.media.controls.domain.pipeline.interactor.MediaCarouselInteractor
import com.android.systemui.qs.FooterActionsController
@@ -25,7 +26,7 @@ import com.android.systemui.qs.ui.adapter.QSSceneAdapter
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.settings.brightness.ui.viewModel.BrightnessMirrorViewModel
-import com.android.systemui.shade.domain.interactor.ShadeInteractor
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel
import dagger.assisted.AssistedFactory
@@ -34,7 +35,6 @@ import java.util.concurrent.atomic.AtomicBoolean
import kotlinx.coroutines.awaitCancellation
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.flow.StateFlow
-import com.android.app.tracing.coroutines.launchTraced as launch
/**
* Models UI state needed for rendering the content of the quick settings scene.
@@ -51,7 +51,7 @@ constructor(
private val footerActionsViewModelFactory: FooterActionsViewModel.Factory,
private val footerActionsController: FooterActionsController,
val mediaCarouselInteractor: MediaCarouselInteractor,
- private val shadeInteractor: ShadeInteractor,
+ private val shadeModeInteractor: ShadeModeInteractor,
private val sceneInteractor: SceneInteractor,
) : ExclusiveActivatable() {
@@ -69,8 +69,8 @@ constructor(
override suspend fun onActivated(): Nothing {
coroutineScope {
launch {
- shadeInteractor.shadeMode.collect { shadeMode ->
- if (shadeMode == ShadeMode.Split) {
+ shadeModeInteractor.shadeMode.collect { shadeMode ->
+ if (shadeMode is ShadeMode.Split) {
sceneInteractor.snapToScene(Scenes.Shade, "Unfold while on QS")
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModel.kt
index d9df1ef36847..0add3f515ebf 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModel.kt
@@ -16,13 +16,10 @@
package com.android.systemui.qs.ui.viewmodel
-import androidx.compose.runtime.getValue
import com.android.systemui.lifecycle.ExclusiveActivatable
-import com.android.systemui.lifecycle.Hydrator
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.domain.interactor.ShadeInteractor
-import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel
import com.android.systemui.statusbar.notification.stack.domain.interactor.NotificationStackAppearanceInteractor
import com.android.systemui.statusbar.notification.stack.shared.model.ShadeScrimShape
import dagger.assisted.AssistedFactory
@@ -31,7 +28,6 @@ import kotlinx.coroutines.awaitCancellation
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filter
-import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch
/**
@@ -46,39 +42,10 @@ constructor(
val shadeInteractor: ShadeInteractor,
val sceneInteractor: SceneInteractor,
val notificationStackAppearanceInteractor: NotificationStackAppearanceInteractor,
- val shadeHeaderViewModelFactory: ShadeHeaderViewModel.Factory,
- quickSettingsContainerViewModelFactory: QuickSettingsContainerViewModel.Factory,
) : ExclusiveActivatable() {
- private val hydrator = Hydrator("QuickSettingsContainerViewModel.hydrator")
-
- val isShadeLayoutWide: Boolean by
- hydrator.hydratedStateOf(
- traceName = "isShadeLayoutWide",
- initialValue = shadeInteractor.isShadeLayoutWide.value,
- source = shadeInteractor.isShadeLayoutWide,
- )
-
- val showHeader: Boolean by
- hydrator.hydratedStateOf(
- traceName = "showHeader",
- initialValue = !shadeInteractor.isShadeLayoutWide.value,
- source = shadeInteractor.isShadeLayoutWide.map { !it },
- )
-
- val quickSettingsContainerViewModel = quickSettingsContainerViewModelFactory.create(false)
-
- val showQuickSettingsOverlayHeader: Boolean by
- hydrator.hydratedStateOf(
- traceName = "showQuickSettingsOverlayHeader",
- initialValue = shadeInteractor.isShadeLayoutWide.value,
- source = shadeInteractor.isShadeLayoutWide,
- )
-
override suspend fun onActivated(): Nothing {
coroutineScope {
- launch { hydrator.activate() }
-
launch {
sceneInteractor.currentScene.collect { currentScene ->
when (currentScene) {
@@ -101,8 +68,6 @@ constructor(
)
}
}
-
- launch { quickSettingsContainerViewModel.activate() }
}
awaitCancellation()
diff --git a/packages/SystemUI/src/com/android/systemui/reardisplay/RearDisplayInnerDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/reardisplay/RearDisplayInnerDialogDelegate.kt
index 1355ba8bdfd4..f5facf42ee67 100644
--- a/packages/SystemUI/src/com/android/systemui/reardisplay/RearDisplayInnerDialogDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/reardisplay/RearDisplayInnerDialogDelegate.kt
@@ -16,11 +16,21 @@
package com.android.systemui.reardisplay
+import android.annotation.SuppressLint
import android.content.Context
import android.os.Bundle
-import android.view.View
+import android.view.MotionEvent
+import android.widget.SeekBar
+import com.android.systemui.haptics.slider.HapticSlider
+import com.android.systemui.haptics.slider.HapticSliderPlugin
+import com.android.systemui.haptics.slider.HapticSliderViewBinder
+import com.android.systemui.haptics.slider.SeekableSliderTrackerConfig
+import com.android.systemui.haptics.slider.SliderHapticFeedbackConfig
import com.android.systemui.res.R
+import com.android.systemui.statusbar.VibratorHelper
import com.android.systemui.statusbar.phone.SystemUIDialog
+import com.android.systemui.util.time.SystemClock
+import com.google.android.msdl.domain.MSDLPlayer
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
@@ -35,9 +45,38 @@ class RearDisplayInnerDialogDelegate
internal constructor(
private val systemUIDialogFactory: SystemUIDialog.Factory,
@Assisted private val rearDisplayContext: Context,
+ private val vibratorHelper: VibratorHelper,
+ private val msdlPlayer: MSDLPlayer,
+ private val systemClock: SystemClock,
@Assisted private val onCanceledRunnable: Runnable,
) : SystemUIDialog.Delegate {
+ private val sliderHapticFeedbackConfig =
+ SliderHapticFeedbackConfig(
+ /* velocityInterpolatorFactor = */ 1f,
+ /* progressInterpolatorFactor = */ 1f,
+ /* progressBasedDragMinScale = */ 0f,
+ /* progressBasedDragMaxScale = */ 0.2f,
+ /* additionalVelocityMaxBump = */ 0.25f,
+ /* deltaMillisForDragInterval = */ 0f,
+ /* deltaProgressForDragThreshold = */ 0.05f,
+ /* numberOfLowTicks = */ 5,
+ /* maxVelocityToScale = */ 200f,
+ /* velocityAxis = */ MotionEvent.AXIS_X,
+ /* upperBookendScale = */ 1f,
+ /* lowerBookendScale = */ 0.05f,
+ /* exponent = */ 1f / 0.89f,
+ /* sliderStepSize = */ 0f,
+ )
+
+ private val sliderTrackerConfig =
+ SeekableSliderTrackerConfig(
+ /* waitTimeMillis = */ 100,
+ /* jumpThreshold = */ 0.02f,
+ /* lowerBookendThreshold = */ 0.01f,
+ /* upperBookendThreshold = */ 0.99f,
+ )
+
@AssistedFactory
interface Factory {
fun create(
@@ -54,13 +93,79 @@ internal constructor(
)
}
+ @SuppressLint("ClickableViewAccessibility")
override fun onCreate(dialog: SystemUIDialog, savedInstanceState: Bundle?) {
dialog.apply {
- setContentView(R.layout.activity_rear_display_front_screen_on)
+ setContentView(R.layout.activity_rear_display_enabled)
setCanceledOnTouchOutside(false)
- requireViewById<View>(R.id.button_cancel).setOnClickListener {
+
+ requireViewById<SeekBar>(R.id.seekbar).let { it ->
+ // Create and bind the HapticSliderPlugin
+ val hapticSliderPlugin =
+ HapticSliderPlugin(
+ vibratorHelper,
+ msdlPlayer,
+ systemClock,
+ HapticSlider.SeekBar(it),
+ sliderHapticFeedbackConfig,
+ sliderTrackerConfig,
+ )
+ HapticSliderViewBinder.bind(it, hapticSliderPlugin)
+
+ // Send MotionEvents to the plugin, so that it can compute velocity, which is
+ // used during the computation of haptic effect
+ it.setOnTouchListener { _, motionEvent ->
+ hapticSliderPlugin.onTouchEvent(motionEvent)
+ false
+ }
+
+ // Respond to SeekBar events, for both:
+ // 1) Deciding if RDM should be terminated, etc, and
+ // 2) Sending SeekBar events to the HapticSliderPlugin, so that the events
+ // are also used to compute the haptic effect
+ it.setOnSeekBarChangeListener(
+ SeekBarListener(hapticSliderPlugin, onCanceledRunnable)
+ )
+ }
+ }
+ }
+
+ class SeekBarListener(
+ private val hapticSliderPlugin: HapticSliderPlugin,
+ private val onCanceledRunnable: Runnable,
+ ) : SeekBar.OnSeekBarChangeListener {
+
+ var lastProgress = 0
+ var secondLastProgress = 0
+
+ override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
+ hapticSliderPlugin.onProgressChanged(progress, fromUser)
+
+ // Simple heuristic checking that the user did in fact slide the
+ // SeekBar, instead of accidentally touching it at 100%
+ if (progress == 100 && lastProgress != 0) {
onCanceledRunnable.run()
}
+
+ secondLastProgress = lastProgress
+ lastProgress = progress
+ }
+
+ override fun onStartTrackingTouch(seekBar: SeekBar?) {
+ hapticSliderPlugin.onStartTrackingTouch()
+ }
+
+ override fun onStopTrackingTouch(seekBar: SeekBar?) {
+ hapticSliderPlugin.onStopTrackingTouch()
+
+ // If secondLastProgress is 0, it means the user immediately touched
+ // the 100% location. We need two last values, because
+ // onStopTrackingTouch is always after onProgressChanged
+ if (lastProgress < 100 || secondLastProgress == 0) {
+ lastProgress = 0
+ secondLastProgress = 0
+ seekBar?.progress = 0
+ }
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/scene/KeyguardlessSceneContainerFrameworkModule.kt b/packages/SystemUI/src/com/android/systemui/scene/KeyguardlessSceneContainerFrameworkModule.kt
index e36e40d312b5..a4949ad66109 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/KeyguardlessSceneContainerFrameworkModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/KeyguardlessSceneContainerFrameworkModule.kt
@@ -32,7 +32,6 @@ import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.ui.composable.SceneContainerTransitions
import com.android.systemui.scene.ui.viewmodel.SplitEdgeDetector
import com.android.systemui.shade.domain.interactor.ShadeInteractor
-import com.android.systemui.shade.shared.flag.DualShade
import dagger.Binds
import dagger.Module
import dagger.Provides
@@ -90,29 +89,14 @@ interface KeyguardlessSceneContainerFrameworkModule {
@Provides
fun containerConfig(): SceneContainerConfig {
return SceneContainerConfig(
- // Note that this list is in z-order. The first one is the bottom-most and the
- // last one is top-most.
- sceneKeys =
- listOfNotNull(
- Scenes.Gone,
- Scenes.QuickSettings.takeUnless { DualShade.isEnabled },
- Scenes.Shade.takeUnless { DualShade.isEnabled },
- ),
+ // Note that this list is in z-order. The first one is the bottom-most and the last
+ // one is top-most.
+ sceneKeys = listOf(Scenes.Gone, Scenes.QuickSettings, Scenes.Shade),
initialSceneKey = Scenes.Gone,
- transitions = SceneContainerTransitions,
- overlayKeys =
- listOfNotNull(
- Overlays.NotificationsShade.takeIf { DualShade.isEnabled },
- Overlays.QuickSettingsShade.takeIf { DualShade.isEnabled },
- ),
+ overlayKeys = listOf(Overlays.NotificationsShade, Overlays.QuickSettingsShade),
navigationDistances =
- mapOf(
- Scenes.Gone to 0,
- Scenes.Shade to 1.takeUnless { DualShade.isEnabled },
- Scenes.QuickSettings to 2.takeUnless { DualShade.isEnabled },
- )
- .filterValues { it != null }
- .mapValues { checkNotNull(it.value) },
+ mapOf(Scenes.Gone to 0, Scenes.Shade to 1, Scenes.QuickSettings to 2),
+ transitionsBuilder = SceneContainerTransitions(),
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/scene/SceneContainerFrameworkModule.kt b/packages/SystemUI/src/com/android/systemui/scene/SceneContainerFrameworkModule.kt
index fe014524e3da..a018283c3953 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/SceneContainerFrameworkModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/SceneContainerFrameworkModule.kt
@@ -32,7 +32,6 @@ import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.ui.composable.SceneContainerTransitions
import com.android.systemui.scene.ui.viewmodel.SplitEdgeDetector
import com.android.systemui.shade.domain.interactor.ShadeInteractor
-import com.android.systemui.shade.shared.flag.DualShade
import dagger.Binds
import dagger.Module
import dagger.Provides
@@ -103,28 +102,23 @@ interface SceneContainerFrameworkModule {
Scenes.Dream,
Scenes.Lockscreen,
Scenes.Bouncer,
- Scenes.QuickSettings.takeUnless { DualShade.isEnabled },
- Scenes.Shade.takeUnless { DualShade.isEnabled },
+ Scenes.QuickSettings,
+ Scenes.Shade,
),
initialSceneKey = Scenes.Lockscreen,
- transitions = SceneContainerTransitions,
overlayKeys =
- listOfNotNull(
- Overlays.NotificationsShade.takeIf { DualShade.isEnabled },
- Overlays.QuickSettingsShade.takeIf { DualShade.isEnabled },
- ),
+ listOfNotNull(Overlays.NotificationsShade, Overlays.QuickSettingsShade),
navigationDistances =
mapOf(
- Scenes.Gone to 0,
- Scenes.Lockscreen to 0,
- Scenes.Communal to 1,
- Scenes.Dream to 2,
- Scenes.Shade to 3.takeUnless { DualShade.isEnabled },
- Scenes.QuickSettings to 4.takeUnless { DualShade.isEnabled },
- Scenes.Bouncer to 5,
- )
- .filterValues { it != null }
- .mapValues { checkNotNull(it.value) },
+ Scenes.Gone to 0,
+ Scenes.Lockscreen to 0,
+ Scenes.Communal to 1,
+ Scenes.Dream to 2,
+ Scenes.Shade to 3,
+ Scenes.QuickSettings to 4,
+ Scenes.Bouncer to 5,
+ ),
+ transitionsBuilder = SceneContainerTransitions(),
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/scene/ShadelessSceneContainerFrameworkModule.kt b/packages/SystemUI/src/com/android/systemui/scene/ShadelessSceneContainerFrameworkModule.kt
index c1646b8f2060..8845bb7ceeb9 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/ShadelessSceneContainerFrameworkModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/ShadelessSceneContainerFrameworkModule.kt
@@ -45,14 +45,14 @@ object ShadelessSceneContainerFrameworkModule {
@Provides
fun containerConfig(): SceneContainerConfig {
return SceneContainerConfig(
- // Note that this list is in z-order. The first one is the bottom-most and the
- // last one is top-most.
+ // Note that this list is in z-order. The first one is the bottom-most and the last one
+ // is top-most.
sceneKeys = listOf(Scenes.Gone, Scenes.Lockscreen, Scenes.Bouncer),
initialSceneKey = Scenes.Lockscreen,
- transitions = SceneContainerTransitions,
overlayKeys = emptyList(),
navigationDistances =
mapOf(Scenes.Gone to 0, Scenes.Lockscreen to 0, Scenes.Bouncer to 1),
+ transitionsBuilder = SceneContainerTransitions(),
)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt
index 2fd584176220..94e32fcb9ac6 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt
@@ -44,6 +44,7 @@ import com.android.systemui.deviceentry.shared.model.DeviceUnlockSource
import com.android.systemui.keyguard.DismissCallbackRegistry
import com.android.systemui.keyguard.domain.interactor.KeyguardEnabledInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
+import com.android.systemui.keyguard.domain.interactor.TrustInteractor
import com.android.systemui.keyguard.domain.interactor.WindowManagerLockscreenVisibilityInteractor.Companion.keyguardScenes
import com.android.systemui.log.table.TableLogBuffer
import com.android.systemui.model.SceneContainerPlugin
@@ -148,6 +149,7 @@ constructor(
private val activityTransitionAnimator: ActivityTransitionAnimator,
private val shadeModeInteractor: ShadeModeInteractor,
@SceneFrameworkTableLog private val tableLogBuffer: TableLogBuffer,
+ private val trustInteractor: TrustInteractor,
) : CoreStartable {
private val centralSurfaces: CentralSurfaces?
get() = centralSurfacesOptLazy.get().getOrNull()
@@ -173,6 +175,7 @@ constructor(
notifyKeyguardDismissCancelledCallbacks()
refreshLockscreenEnabled()
hydrateActivityTransitionAnimationState()
+ lockWhenDeviceBecomesUntrusted()
} else {
sceneLogger.logFrameworkEnabled(
isEnabled = false,
@@ -998,6 +1001,18 @@ constructor(
)
}
+ private fun lockWhenDeviceBecomesUntrusted() {
+ applicationScope.launch {
+ trustInteractor.isTrusted.pairwise().collect { (wasTrusted, isTrusted) ->
+ if (wasTrusted && !isTrusted && !deviceEntryInteractor.isDeviceEntered.value) {
+ deviceEntryInteractor.lockNow(
+ "Exited trusted environment while not device not entered"
+ )
+ }
+ }
+ }
+ }
+
companion object {
private const val TAG = "SceneContainerStartable"
}
diff --git a/packages/SystemUI/src/com/android/systemui/scene/shared/model/SceneContainerConfig.kt b/packages/SystemUI/src/com/android/systemui/scene/shared/model/SceneContainerConfig.kt
index ce7be8311c68..c7ceea2e8b56 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/shared/model/SceneContainerConfig.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/shared/model/SceneContainerConfig.kt
@@ -18,7 +18,7 @@ package com.android.systemui.scene.shared.model
import com.android.compose.animation.scene.OverlayKey
import com.android.compose.animation.scene.SceneKey
-import com.android.compose.animation.scene.SceneTransitions
+import com.android.systemui.scene.ui.composable.SceneContainerTransitionsBuilder
/** Models the configuration of the scene container. */
data class SceneContainerConfig(
@@ -39,9 +39,6 @@ data class SceneContainerConfig(
*/
val initialSceneKey: SceneKey,
- /** Transition definitions to be used when animating between scene transitions. */
- val transitions: SceneTransitions,
-
/**
* The keys to all overlays in the container, sorted by z-order such that the last one renders
* on top of all previous ones. Overlay keys within the same container must not repeat but it's
@@ -66,6 +63,12 @@ data class SceneContainerConfig(
* of scenes in the [sceneKeys] list.
*/
val navigationDistances: Map<SceneKey, Int>,
+
+ /**
+ * Builds the comprehensive definition of all transitions between scenes and overlays in the
+ * scene container.
+ */
+ val transitionsBuilder: SceneContainerTransitionsBuilder,
) {
init {
check(sceneKeys.isNotEmpty()) { "A container must have at least one scene key." }
diff --git a/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootViewBinder.kt b/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootViewBinder.kt
index ffc82688ec95..7977387b03a0 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootViewBinder.kt
@@ -183,7 +183,7 @@ object SceneWindowRootViewBinder {
sceneByKey = sceneByKey,
overlayByKey = overlayByKey,
initialSceneKey = containerConfig.initialSceneKey,
- sceneTransitions = containerConfig.transitions,
+ transitionsBuilder = containerConfig.transitionsBuilder,
dataSourceDelegator = dataSourceDelegator,
qsSceneAdapter = qsSceneAdapter,
sceneJankMonitorFactory = sceneJankMonitorFactory,
diff --git a/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModel.kt b/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModel.kt
index fc172e8ca1d8..8eac63cb7cda 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModel.kt
@@ -18,7 +18,7 @@ package com.android.systemui.scene.ui.viewmodel
import com.android.compose.animation.scene.UserAction
import com.android.compose.animation.scene.UserActionResult
-import com.android.systemui.shade.domain.interactor.ShadeInteractor
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.shade.ui.viewmodel.dualShadeActions
import com.android.systemui.shade.ui.viewmodel.singleShadeActions
@@ -28,10 +28,10 @@ import dagger.assisted.AssistedInject
class GoneUserActionsViewModel
@AssistedInject
-constructor(private val shadeInteractor: ShadeInteractor) : UserActionsViewModel() {
+constructor(private val shadeModeInteractor: ShadeModeInteractor) : UserActionsViewModel() {
override suspend fun hydrateActions(setActions: (Map<UserAction, UserActionResult>) -> Unit) {
- shadeInteractor.shadeMode.collect { shadeMode ->
+ shadeModeInteractor.shadeMode.collect { shadeMode ->
setActions(
buildList {
addAll(
diff --git a/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerHapticsViewModel.kt b/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerHapticsViewModel.kt
index 4ef8e0fc3167..66ff6f9fd68e 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerHapticsViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerHapticsViewModel.kt
@@ -18,12 +18,16 @@ package com.android.systemui.scene.ui.viewmodel
import android.view.HapticFeedbackConstants
import android.view.View
+import androidx.compose.ui.hapticfeedback.HapticFeedback
+import androidx.compose.ui.hapticfeedback.HapticFeedbackType
import com.android.compose.animation.scene.ObservableTransitionState
+import com.android.compose.animation.scene.reveal.ContainerRevealHaptics
import com.android.systemui.Flags
import com.android.systemui.lifecycle.ExclusiveActivatable
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.scene.ui.composable.SceneContainer
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.google.android.msdl.data.model.MSDLToken
import com.google.android.msdl.domain.MSDLPlayer
@@ -34,6 +38,7 @@ import kotlinx.coroutines.awaitCancellation
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.filter
/**
* Models haptics UI state for the scene container.
@@ -60,16 +65,36 @@ constructor(
.distinctUntilChanged()
override suspend fun onActivated(): Nothing {
- isShadePullHapticsRequired.collect { playShadePullHaptics ->
- if (!playShadePullHaptics) return@collect
+ playShadePullHaptics()
+ awaitCancellation()
+ }
- if (Flags.msdlFeedback()) {
- msdlPlayer.playToken(MSDLToken.SWIPE_THRESHOLD_INDICATOR)
- } else {
- view.performHapticFeedback(HapticFeedbackConstants.GESTURE_START)
+ /**
+ * Returns a handler for reveal transition haptics in [SceneContainer] for the given
+ * [hapticFeedback] target.
+ */
+ fun getRevealHaptics(hapticFeedback: HapticFeedback): ContainerRevealHaptics {
+ return object : ContainerRevealHaptics {
+ override fun onRevealThresholdCrossed(revealed: Boolean) {
+ if (revealed) {
+ hapticFeedback.performHapticFeedback(
+ HapticFeedbackType.GestureThresholdActivate
+ )
+ }
}
}
- awaitCancellation()
+ }
+
+ private suspend fun playShadePullHaptics() {
+ isShadePullHapticsRequired
+ .filter { it }
+ .collect {
+ if (Flags.msdlFeedback()) {
+ msdlPlayer.playToken(MSDLToken.SWIPE_THRESHOLD_INDICATOR)
+ } else {
+ view.performHapticFeedback(HapticFeedbackConstants.GESTURE_START)
+ }
+ }
}
private fun ObservableTransitionState.isValidForShadePullHaptics(): Boolean {
diff --git a/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt b/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt
index 40e6d284cbc9..fbcd8ea9b9e4 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt
@@ -30,6 +30,7 @@ import com.android.compose.animation.scene.UserAction
import com.android.compose.animation.scene.UserActionResult
import com.android.systemui.classifier.Classifier
import com.android.systemui.classifier.domain.interactor.FalsingInteractor
+import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.keyguard.ui.viewmodel.LightRevealScrimViewModel
import com.android.systemui.lifecycle.ExclusiveActivatable
import com.android.systemui.lifecycle.Hydrator
@@ -38,7 +39,7 @@ import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.logger.SceneLogger
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.ui.composable.Overlay
-import com.android.systemui.shade.domain.interactor.ShadeInteractor
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.statusbar.domain.interactor.RemoteInputInteractor
import com.android.systemui.statusbar.notification.stack.ui.view.SharedNotificationContainer
@@ -59,13 +60,14 @@ constructor(
private val sceneInteractor: SceneInteractor,
private val falsingInteractor: FalsingInteractor,
private val powerInteractor: PowerInteractor,
- shadeInteractor: ShadeInteractor,
+ shadeModeInteractor: ShadeModeInteractor,
private val remoteInputInteractor: RemoteInputInteractor,
private val splitEdgeDetector: SplitEdgeDetector,
private val logger: SceneLogger,
hapticsViewModelFactory: SceneContainerHapticsViewModel.Factory,
val lightRevealScrim: LightRevealScrimViewModel,
val wallpaperViewModel: WallpaperViewModel,
+ keyguardInteractor: KeyguardInteractor,
@Assisted view: View,
@Assisted private val motionEventHandlerReceiver: (MotionEventHandler?) -> Unit,
) : ExclusiveActivatable() {
@@ -80,7 +82,7 @@ constructor(
val allContentKeys: List<ContentKey> = sceneInteractor.allContentKeys
- private val hapticsViewModel = hapticsViewModelFactory.create(view)
+ val hapticsViewModel: SceneContainerHapticsViewModel = hapticsViewModelFactory.create(view)
/**
* The [SwipeSourceDetector] to use for defining which edges of the screen can be defined in the
@@ -91,11 +93,19 @@ constructor(
traceName = "edgeDetector",
initialValue = DefaultEdgeDetector,
source =
- shadeInteractor.shadeMode.map {
+ shadeModeInteractor.shadeMode.map {
if (it is ShadeMode.Dual) splitEdgeDetector else DefaultEdgeDetector
},
)
+ /** Amount of color saturation for the Flexi🥃 ribbon. */
+ val ribbonColorSaturation: Float by
+ hydrator.hydratedStateOf(
+ traceName = "ribbonColorSaturation",
+ source = keyguardInteractor.dozeAmount.map { 1 - it },
+ initialValue = 1f,
+ )
+
override suspend fun onActivated(): Nothing {
try {
// Sends a MotionEventHandler to the owner of the view-model so they can report
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ActionIntentExecutor.kt b/packages/SystemUI/src/com/android/systemui/screenshot/ActionIntentExecutor.kt
index a365b7c5e9a1..d10103594d8b 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ActionIntentExecutor.kt
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ActionIntentExecutor.kt
@@ -132,6 +132,7 @@ constructor(
val connector = getCrossProfileConnector(user)
val completion = CompletableDeferred<Unit>()
connector.post {
+ intent.collectExtraIntentKeys()
it.launchIntent(intent, bundle)
completion.complete(Unit)
}
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/appclips/AppClipsService.java b/packages/SystemUI/src/com/android/systemui/screenshot/appclips/AppClipsService.java
index 3bca4e421cbd..1a91afcf6cac 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/appclips/AppClipsService.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/appclips/AppClipsService.java
@@ -152,8 +152,8 @@ public class AppClipsService extends Service {
return CAPTURE_CONTENT_FOR_NOTE_FAILED;
}
- if (!mOptionalBubbles.get().isAppBubbleTaskId(taskId)) {
- Log.d(TAG, String.format("Taskid %d is not app bubble task", taskId));
+ if (!mOptionalBubbles.get().isNoteBubbleTaskId(taskId)) {
+ Log.d(TAG, String.format("Taskid %d is not note bubble task", taskId));
return CAPTURE_CONTENT_FOR_NOTE_WINDOW_MODE_UNSUPPORTED;
}
diff --git a/packages/SystemUI/src/com/android/systemui/settings/UserTrackerImpl.kt b/packages/SystemUI/src/com/android/systemui/settings/UserTrackerImpl.kt
index a48d4d4d3b5f..1f02d5a2d0bc 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/UserTrackerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/settings/UserTrackerImpl.kt
@@ -151,7 +151,7 @@ internal constructor(
registerUserSwitchObserver()
- dumpManager.registerDumpable(TAG, this)
+ dumpManager.registerNormalDumpable(TAG, this)
}
override fun onReceive(context: Context, intent: Intent) {
diff --git a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessDialog.java b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessDialog.java
index 6844f053cd21..eae0ba66925d 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessDialog.java
@@ -16,6 +16,8 @@
package com.android.systemui.settings.brightness;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
+import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
import static android.content.Intent.EXTRA_BRIGHTNESS_DIALOG_IS_FULL_WIDTH;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
@@ -157,6 +159,7 @@ public class BrightnessDialog extends Activity {
}
void setBrightnessDialogViewAttributes(View container) {
+ Configuration configuration = getResources().getConfiguration();
// The brightness mirror container is INVISIBLE by default.
container.setVisibility(View.VISIBLE);
ViewGroup.MarginLayoutParams lp =
@@ -171,9 +174,16 @@ public class BrightnessDialog extends Activity {
R.dimen.notification_guts_option_vertical_padding);
lp.topMargin = verticalMargin;
+ // If in multi-window or freeform, increase the top margin so the brightness dialog
+ // doesn't get cut off.
+ final int windowingMode = configuration.windowConfiguration.getWindowingMode();
+ if (windowingMode == WINDOWING_MODE_MULTI_WINDOW
+ || windowingMode == WINDOWING_MODE_FREEFORM) {
+ lp.topMargin += 50;
+ }
+
lp.bottomMargin = verticalMargin;
- Configuration configuration = getResources().getConfiguration();
int orientation = configuration.orientation;
int windowWidth = getWindowAvailableWidth();
diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
index 28f5694c3332..c50c3dc07616 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
@@ -49,6 +49,7 @@ import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.Insets;
@@ -108,7 +109,7 @@ import com.android.systemui.keyguard.shared.model.ClockSize;
import com.android.systemui.keyguard.shared.model.Edge;
import com.android.systemui.keyguard.shared.model.TransitionState;
import com.android.systemui.keyguard.shared.model.TransitionStep;
-import com.android.systemui.keyguard.ui.binder.KeyguardLongPressViewBinder;
+import com.android.systemui.keyguard.ui.binder.KeyguardTouchViewBinder;
import com.android.systemui.keyguard.ui.viewmodel.DreamingToLockscreenTransitionViewModel;
import com.android.systemui.keyguard.ui.viewmodel.KeyguardTouchHandlingViewModel;
import com.android.systemui.media.controls.domain.pipeline.MediaDataManager;
@@ -187,6 +188,7 @@ import com.android.systemui.unfold.SysUIUnfoldComponent;
import com.android.systemui.util.Compile;
import com.android.systemui.util.Utils;
import com.android.systemui.util.time.SystemClock;
+import com.android.systemui.wallpapers.ui.viewmodel.WallpaperFocalAreaViewModel;
import com.android.wm.shell.animation.FlingAnimationUtils;
import dalvik.annotation.optimization.NeverCompile;
@@ -261,7 +263,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
private final ShadeLogger mShadeLog;
private final DozeParameters mDozeParameters;
private final NotificationStackScrollLayout.OnEmptySpaceClickListener
- mOnEmptySpaceClickListener = (x, y) -> onEmptySpaceClick();
+ mOnEmptySpaceClickListener = this::onEmptySpaceClick;
private final ShadeHeadsUpChangedListener mOnHeadsUpChangedListener =
new ShadeHeadsUpChangedListener();
private final ConfigurationListener mConfigurationListener = new ConfigurationListener();
@@ -459,6 +461,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
private final NotificationListContainer mNotificationListContainer;
private final NPVCDownEventState.Buffer mLastDownEvents;
private final KeyguardClockInteractor mKeyguardClockInteractor;
+ private final WallpaperFocalAreaViewModel mWallpaperFocalAreaViewModel;
private float mMinExpandHeight;
private boolean mPanelUpdateWhenAnimatorEnds;
private boolean mHasVibratedOnOpen = false;
@@ -527,6 +530,9 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
private final ActivityStarter mActivityStarter;
private final BrightnessMirrorShowingInteractor mBrightnessMirrorShowingInteractor;
+ @Nullable
+ private RenderEffect mBlurRenderEffect = null;
+
@Inject
public NotificationPanelViewController(NotificationPanelView view,
NotificationWakeUpCoordinator coordinator,
@@ -589,6 +595,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
KeyguardTransitionInteractor keyguardTransitionInteractor,
DumpManager dumpManager,
KeyguardTouchHandlingViewModel keyguardTouchHandlingViewModel,
+ WallpaperFocalAreaViewModel wallpaperFocalAreaViewModel,
KeyguardInteractor keyguardInteractor,
ActivityStarter activityStarter,
SharedNotificationContainerInteractor sharedNotificationContainerInteractor,
@@ -744,11 +751,12 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
SysUIUnfoldComponent::getKeyguardUnfoldTransition);
mKeyguardClockInteractor = keyguardClockInteractor;
- KeyguardLongPressViewBinder.bind(
+ mWallpaperFocalAreaViewModel = wallpaperFocalAreaViewModel;
+ KeyguardTouchViewBinder.bind(
mView.requireViewById(R.id.keyguard_long_press),
keyguardTouchHandlingViewModel,
- () -> {
- onEmptySpaceClick();
+ (x, y) -> {
+ onEmptySpaceClick(x, y);
return Unit.INSTANCE;
},
mFalsingManager);
@@ -912,13 +920,14 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
private void handleBouncerShowingChanged(Boolean isBouncerShowing) {
if (!com.android.systemui.Flags.bouncerUiRevamp()) return;
-
if (isBouncerShowing && isExpanded()) {
- float shadeBlurEffect = mDepthController.getMaxBlurRadiusPx();
- mView.setRenderEffect(RenderEffect.createBlurEffect(
- shadeBlurEffect,
- shadeBlurEffect,
- Shader.TileMode.CLAMP));
+ if (mBlurRenderEffect == null) {
+ mBlurRenderEffect = RenderEffect.createBlurEffect(
+ mDepthController.getMaxBlurRadiusPx(),
+ mDepthController.getMaxBlurRadiusPx(),
+ Shader.TileMode.CLAMP);
+ }
+ mView.setRenderEffect(mBlurRenderEffect);
} else {
mView.setRenderEffect(null);
}
@@ -2067,7 +2076,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
}
}
- private void onMiddleClicked() {
+ private void onMiddleClicked(float x, float y) {
switch (mBarState) {
case KEYGUARD:
if (!mDozingOnDown) {
@@ -2086,6 +2095,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
mLockscreenGestureLogger
.log(LockscreenUiEvent.LOCKSCREEN_LOCK_SHOW_HINT);
mKeyguardIndicationController.showActionToUnlock();
+ mKeyguardClockInteractor.handleFidgetTap(x, y);
}
}
break;
@@ -2830,7 +2840,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
} else if (!mCentralSurfaces.isBouncerShowing()
&& !mAlternateBouncerInteractor.isVisibleState()
&& !mKeyguardStateController.isKeyguardGoingAway()) {
- onEmptySpaceClick();
+ onEmptySpaceClick(x, y);
onTrackingStopped(true);
}
mVelocityTracker.clear();
@@ -3138,8 +3148,8 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
}
/** Called when the user performs a click anywhere in the empty area of the panel. */
- private void onEmptySpaceClick() {
- onMiddleClicked();
+ private void onEmptySpaceClick(float x, float y) {
+ onMiddleClicked(x, y);
}
@VisibleForTesting
@@ -3367,6 +3377,13 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
private final class ConfigurationListener implements
ConfigurationController.ConfigurationListener {
@Override
+ public void onConfigChanged(Configuration newConfig) {
+ if (ShadeWindowGoesAround.isEnabled()) {
+ updateResources();
+ }
+ }
+
+ @Override
public void onThemeChanged() {
debugLog("onThemeChanged");
reInflateViews();
diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java
index 48e374746bf5..1721700d2aaf 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java
@@ -187,10 +187,6 @@ public class NotificationShadeWindowView extends WindowRootView {
protected void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
ShadeTraceLogger.logOnConfigChanged(newConfig);
- if (mConfigurationForwarder != null) {
- ShadeWindowGoesAround.isUnexpectedlyInLegacyMode();
- mConfigurationForwarder.onConfigurationChanged(newConfig);
- }
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeStateTraceLogger.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeStateTraceLogger.kt
index 39703ab5602c..bd7796118038 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/ShadeStateTraceLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeStateTraceLogger.kt
@@ -21,10 +21,12 @@ import com.android.app.tracing.TrackGroupUtils.trackGroup
import com.android.app.tracing.coroutines.TrackTracer.Companion.instantForGroup
import com.android.app.tracing.coroutines.launchTraced
import com.android.systemui.CoreStartable
+import com.android.systemui.common.ui.data.repository.ConfigurationRepository
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.shade.data.repository.ShadeDisplaysRepository
import com.android.systemui.shade.domain.interactor.ShadeInteractor
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.shade.shared.flag.ShadeWindowGoesAround
import dagger.Lazy
import javax.inject.Inject
@@ -36,7 +38,9 @@ class ShadeStateTraceLogger
@Inject
constructor(
private val shadeInteractor: ShadeInteractor,
+ private val shadeModeInteractor: ShadeModeInteractor,
private val shadeDisplaysRepository: Lazy<ShadeDisplaysRepository>,
+ @ShadeDisplayAware private val configurationRepository: ConfigurationRepository,
@Application private val scope: CoroutineScope,
) : CoreStartable {
override fun start() {
@@ -47,7 +51,7 @@ constructor(
}
launch {
val stateLogger = createTraceStateLogger("shadeMode")
- shadeInteractor.shadeMode.collect { stateLogger.log(it.toString()) }
+ shadeModeInteractor.shadeMode.collect { stateLogger.log(it.toString()) }
}
launch {
shadeInteractor.shadeExpansion.collect {
@@ -61,6 +65,15 @@ constructor(
}
}
}
+ launch {
+ configurationRepository.configurationValues.collect {
+ instantForGroup(
+ TRACK_GROUP_NAME,
+ "configurationChange#smallestScreenWidthDp",
+ it.smallestScreenWidthDp,
+ )
+ }
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeTraceLogger.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeTraceLogger.kt
index 9a9fc467c53f..ed36204977f8 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/ShadeTraceLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeTraceLogger.kt
@@ -36,7 +36,10 @@ object ShadeTraceLogger {
@JvmStatic
fun logOnConfigChanged(config: Configuration) {
- t.instant { "onConfigurationChanged(dpi=${config.densityDpi})" }
+ t.instant {
+ "NotificationShadeWindowView#onConfigurationChanged(dpi=${config.densityDpi}, " +
+ "smallestWidthDp=${config.smallestScreenWidthDp})"
+ }
}
@JvmStatic
diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImpl.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImpl.kt
index 5a63034b5754..6eaedd73ea76 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImpl.kt
@@ -20,7 +20,6 @@ import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.model.SceneFamilies
import com.android.systemui.scene.shared.model.Scenes
-import com.android.systemui.shade.shared.model.ShadeMode
import javax.inject.Inject
/** Implementation of ShadeBackActionInteractor backed by scenes. */
@@ -28,13 +27,14 @@ class ShadeBackActionInteractorImpl
@Inject
constructor(
val shadeInteractor: ShadeInteractor,
+ val shadeModeInteractor: ShadeModeInteractor,
val sceneInteractor: SceneInteractor,
val deviceEntryInteractor: DeviceEntryInteractor,
) : ShadeBackActionInteractor {
override fun animateCollapseQs(fullyCollapse: Boolean) {
if (shadeInteractor.isQsExpanded.value) {
val key =
- if (fullyCollapse || shadeInteractor.shadeMode.value is ShadeMode.Dual) {
+ if (fullyCollapse || shadeModeInteractor.isDualShade) {
SceneFamilies.Home
} else {
Scenes.Shade
diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractor.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractor.kt
index b045db464674..e746274a39c1 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractor.kt
@@ -16,6 +16,8 @@
package com.android.systemui.shade.domain.interactor
+import android.content.ComponentCallbacks
+import android.content.res.Configuration
import android.util.Log
import android.window.WindowContext
import androidx.annotation.UiThread
@@ -36,6 +38,7 @@ import com.android.systemui.shade.shared.flag.ShadeWindowGoesAround
import com.android.systemui.statusbar.notification.domain.interactor.ActiveNotificationsInteractor
import com.android.systemui.statusbar.notification.row.NotificationRebindingTracker
import com.android.systemui.statusbar.notification.stack.NotificationStackRebindingHider
+import com.android.systemui.statusbar.phone.ConfigurationForwarder
import com.android.systemui.util.kotlin.getOrNull
import com.android.window.flags.Flags
import java.util.Optional
@@ -65,6 +68,7 @@ constructor(
private val activeNotificationsInteractor: ActiveNotificationsInteractor,
private val notificationRebindingTracker: NotificationRebindingTracker,
notificationStackRebindingHider: Optional<NotificationStackRebindingHider>,
+ @ShadeDisplayAware private val configForwarder: ConfigurationForwarder,
) : CoreStartable {
private val shadeExpandedInteractor = requireOptional(shadeExpandedInteractor)
@@ -75,6 +79,7 @@ constructor(
override fun start() {
ShadeWindowGoesAround.isUnexpectedlyInLegacyMode()
+ listenForWindowContextConfigChanges()
bgScope.launchTraced(TAG) {
shadePositionRepository.displayId.collectLatest { displayId ->
moveShadeWindowTo(displayId)
@@ -82,6 +87,18 @@ constructor(
}
}
+ private fun listenForWindowContextConfigChanges() {
+ shadeContext.registerComponentCallbacks(
+ object : ComponentCallbacks {
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ configForwarder.onConfigurationChanged(newConfig)
+ }
+
+ override fun onLowMemory() {}
+ }
+ )
+ }
+
/** Tries to move the shade. If anything wrong happens, fails gracefully without crashing. */
private suspend fun moveShadeWindowTo(destinationId: Int) {
Log.d(TAG, "Trying to move shade window to display with id $destinationId")
diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeExpandedStateInteractor.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeExpandedStateInteractor.kt
index aba5a6bceb10..c60a67f8c8d0 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeExpandedStateInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeExpandedStateInteractor.kt
@@ -22,7 +22,6 @@ import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.shade.ShadeTraceLogger.traceWaitForExpansion
import com.android.systemui.shade.domain.interactor.ShadeExpandedStateInteractor.ShadeElement
-import com.android.systemui.shade.shared.flag.DualShade
import com.android.systemui.util.kotlin.Utils.Companion.combineState
import javax.inject.Inject
import kotlin.coroutines.CoroutineContext
@@ -40,10 +39,9 @@ import kotlinx.coroutines.withTimeoutOrNull
* Wrapper around [ShadeInteractor] to facilitate expansion and collapse of Notifications and quick
* settings.
*
- * Specifially created to simplify [ShadeDisplaysInteractor] logic.
+ * Specifically created to simplify [ShadeDisplaysInteractor] logic.
*
- * NOTE: with [SceneContainerFlag] or [DualShade] disabled, [currentlyExpandedElement] will always
- * return null!
+ * NOTE: with [SceneContainerFlag] disabled, [currentlyExpandedElement] will always return `null`!
*/
interface ShadeExpandedStateInteractor {
/** Returns the expanded [ShadeElement]. If none is, returns null. */
@@ -99,7 +97,7 @@ private suspend fun StateFlow<Float>.waitUntil(f: Float, coroutineContext: Corou
?: Log.e(
"ShadeExpStateInteractor",
"Timed out after ${EXPAND_COLLAPSE_TIMEOUT.inWholeMilliseconds}ms while waiting " +
- "for expansion to match $f. Current one: $value",
+ "for expansion to match $f. Current one: $value",
)
}
}
@@ -112,13 +110,17 @@ constructor(
@Background private val bgContext: CoroutineContext,
) : ShadeElement() {
override suspend fun expand(reason: String) {
- shadeInteractor.expandNotificationsShade(reason)
- shadeInteractor.shadeExpansion.waitUntil(1f, bgContext)
+ if (SceneContainerFlag.isEnabled) {
+ shadeInteractor.expandNotificationsShade(reason)
+ shadeInteractor.shadeExpansion.waitUntil(1f, bgContext)
+ }
}
override suspend fun collapse(reason: String) {
- shadeInteractor.collapseNotificationsShade(reason)
- shadeInteractor.shadeExpansion.waitUntil(0f, bgContext)
+ if (SceneContainerFlag.isEnabled) {
+ shadeInteractor.collapseNotificationsShade(reason)
+ shadeInteractor.shadeExpansion.waitUntil(0f, bgContext)
+ }
}
}
@@ -130,12 +132,16 @@ constructor(
@Background private val bgContext: CoroutineContext,
) : ShadeElement() {
override suspend fun expand(reason: String) {
- shadeInteractor.expandQuickSettingsShade(reason)
- shadeInteractor.qsExpansion.waitUntil(1f, bgContext)
+ if (SceneContainerFlag.isEnabled) {
+ shadeInteractor.expandQuickSettingsShade(reason)
+ shadeInteractor.qsExpansion.waitUntil(1f, bgContext)
+ }
}
override suspend fun collapse(reason: String) {
- shadeInteractor.collapseQuickSettingsShade(reason)
- shadeInteractor.qsExpansion.waitUntil(0f, bgContext)
+ if (SceneContainerFlag.isEnabled) {
+ shadeInteractor.collapseQuickSettingsShade(reason)
+ shadeInteractor.qsExpansion.waitUntil(0f, bgContext)
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractor.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractor.kt
index f1765e775d65..c8ce316c41dd 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractor.kt
@@ -18,7 +18,6 @@ package com.android.systemui.shade.domain.interactor
import androidx.annotation.FloatRange
import com.android.compose.animation.scene.TransitionKey
-import com.android.systemui.shade.shared.model.ShadeMode
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
@@ -60,13 +59,6 @@ interface ShadeInteractor : BaseShadeInteractor {
val isExpandToQsEnabled: Flow<Boolean>
/**
- * The version of the shade layout to use.
- *
- * Note: Most likely, you want to read [isShadeLayoutWide] instead of this.
- */
- val shadeMode: StateFlow<ShadeMode>
-
- /**
* Whether the shade layout should be wide (true) or narrow (false).
*
* In a wide layout, notifications and quick settings each take up only half the screen width
diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorEmptyImpl.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorEmptyImpl.kt
index 322fca39a1df..b1129a94d833 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorEmptyImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorEmptyImpl.kt
@@ -18,7 +18,6 @@ package com.android.systemui.shade.domain.interactor
import com.android.compose.animation.scene.TransitionKey
import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.shade.shared.model.ShadeMode
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
@@ -47,7 +46,6 @@ class ShadeInteractorEmptyImpl @Inject constructor() : ShadeInteractor {
override val isUserInteracting: StateFlow<Boolean> = inactiveFlowBoolean
override val isShadeTouchable: Flow<Boolean> = inactiveFlowBoolean
override val isExpandToQsEnabled: Flow<Boolean> = inactiveFlowBoolean
- override val shadeMode: StateFlow<ShadeMode> = MutableStateFlow(ShadeMode.Single)
override val isShadeLayoutWide: StateFlow<Boolean> = inactiveFlowBoolean
override fun getTopEdgeSplitFraction(): Float = 0.5f
diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImpl.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImpl.kt
index b5e171043741..9d81be2091c2 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImpl.kt
@@ -42,7 +42,7 @@ import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.stateIn
-/** The non-empty SceneInteractor implementation. */
+/** The non-empty [ShadeInteractor] implementation. */
@SysUISingleton
class ShadeInteractorImpl
@Inject
@@ -100,30 +100,25 @@ constructor(
override val isShadeTouchable: Flow<Boolean> =
combine(
- powerInteractor.isAsleep
- .onEach { Log.d(TAG, "isShadeTouchable: upstream isAsleep=$it") },
+ powerInteractor.isAsleep.onEach {
+ Log.d(TAG, "isShadeTouchable: upstream isAsleep=$it")
+ },
keyguardTransitionInteractor
.isInTransition(Edge.create(to = KeyguardState.AOD))
- .onEach {
- Log.d(
- TAG,
- "isShadeTouchable: upstream isTransitioningToAod=$it",
- )
- },
+ .onEach { Log.d(TAG, "isShadeTouchable: upstream isTransitioningToAod=$it") },
keyguardRepository.dozeTransitionModel
.map { it.to == DozeStateModel.DOZE_PULSING }
- .onEach {
- Log.d(TAG, "isShadeTouchable: upstream isPulsing=$it")
- },
+ .onEach { Log.d(TAG, "isShadeTouchable: upstream isPulsing=$it") },
) { isAsleep, isTransitioningToAod, isPulsing ->
- val downstream = when {
- // If the device is transitioning to AOD, only accept touches if
- // still animating.
- isTransitioningToAod -> dozeParams.shouldControlScreenOff()
- // If the device is asleep, only accept touches if there's a pulse
- isAsleep -> isPulsing
- else -> true
- }
+ val downstream =
+ when {
+ // If the device is transitioning to AOD, only accept touches if
+ // still animating.
+ isTransitioningToAod -> dozeParams.shouldControlScreenOff()
+ // If the device is asleep, only accept touches if there's a pulse
+ isAsleep -> isPulsing
+ else -> true
+ }
Log.d(TAG, "isShadeTouchable emitting $downstream, values:")
Log.d(TAG, " isAsleep=$isAsleep")
Log.d(TAG, " isTransitioningToAod=$isTransitioningToAod")
diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorSceneContainerImpl.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorSceneContainerImpl.kt
index 661f2ae5132c..246177e0c46d 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorSceneContainerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorSceneContainerImpl.kt
@@ -35,6 +35,7 @@ import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.utils.coroutines.flow.flatMapLatestConflated
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
@@ -45,6 +46,7 @@ import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn
/** ShadeInteractor implementation for Scene Container. */
+@OptIn(ExperimentalCoroutinesApi::class)
@SysUISingleton
class ShadeInteractorSceneContainerImpl
@Inject
@@ -137,20 +139,18 @@ constructor(
override fun expandNotificationsShade(loggingReason: String, transitionKey: TransitionKey?) {
if (shadeModeInteractor.isDualShade) {
- if (Overlays.QuickSettingsShade in sceneInteractor.currentOverlays.value) {
- sceneInteractor.replaceOverlay(
- from = Overlays.QuickSettingsShade,
- to = Overlays.NotificationsShade,
- loggingReason = loggingReason,
- transitionKey = transitionKey,
- )
- } else {
- sceneInteractor.showOverlay(
- overlay = Overlays.NotificationsShade,
- loggingReason = loggingReason,
- transitionKey = transitionKey,
- )
- }
+ // Collapse the quick settings shade if it's expanded (no-op if it isn't).
+ sceneInteractor.hideOverlay(
+ overlay = Overlays.QuickSettingsShade,
+ loggingReason = loggingReason,
+ transitionKey = transitionKey,
+ )
+ // Expand the notifications shade.
+ sceneInteractor.showOverlay(
+ overlay = Overlays.NotificationsShade,
+ loggingReason = loggingReason,
+ transitionKey = transitionKey,
+ )
} else {
sceneInteractor.changeScene(
toScene = Scenes.Shade,
@@ -163,20 +163,18 @@ constructor(
override fun expandQuickSettingsShade(loggingReason: String, transitionKey: TransitionKey?) {
if (shadeModeInteractor.isDualShade) {
- if (Overlays.NotificationsShade in sceneInteractor.currentOverlays.value) {
- sceneInteractor.replaceOverlay(
- from = Overlays.NotificationsShade,
- to = Overlays.QuickSettingsShade,
- loggingReason = loggingReason,
- transitionKey = transitionKey,
- )
- } else {
- sceneInteractor.showOverlay(
- overlay = Overlays.QuickSettingsShade,
- loggingReason = loggingReason,
- transitionKey = transitionKey,
- )
- }
+ // Collapse the notifications shade if it's expanded (no-op if it isn't).
+ sceneInteractor.hideOverlay(
+ overlay = Overlays.NotificationsShade,
+ loggingReason = loggingReason,
+ transitionKey = transitionKey,
+ )
+ // Expand the quick settings shade.
+ sceneInteractor.showOverlay(
+ overlay = Overlays.QuickSettingsShade,
+ loggingReason = loggingReason,
+ transitionKey = transitionKey,
+ )
} else {
val isSplitShade = shadeModeInteractor.isSplitShade
sceneInteractor.changeScene(
@@ -199,12 +197,12 @@ constructor(
// TODO(b/356596436): Define instant transition instead of snapToScene().
sceneInteractor.snapToScene(
toScene = SceneFamilies.Home,
- loggingReason = loggingReason + " (collapseNotificationsShade)",
+ loggingReason = "$loggingReason (collapseNotificationsShade)",
)
} else {
sceneInteractor.changeScene(
toScene = SceneFamilies.Home,
- loggingReason = loggingReason + " (collapseNotificationsShade)",
+ loggingReason = "$loggingReason (collapseNotificationsShade)",
transitionKey =
transitionKey ?: ToSplitShade.takeIf { shadeModeInteractor.isSplitShade },
)
@@ -233,12 +231,12 @@ constructor(
// TODO(b/356596436): Define instant transition instead of snapToScene().
sceneInteractor.snapToScene(
toScene = targetScene,
- loggingReason = loggingReason + " (collapseQuickSettingsShade)",
+ loggingReason = "$loggingReason (collapseQuickSettingsShade)",
)
} else {
sceneInteractor.changeScene(
toScene = targetScene,
- loggingReason = loggingReason + " (collapseQuickSettingsShade)",
+ loggingReason = "$loggingReason (collapseQuickSettingsShade)",
transitionKey = transitionKey ?: ToSplitShade.takeIf { isSplitShade },
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeModeInteractor.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeModeInteractor.kt
index 01451502b859..8f4e8701cad8 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeModeInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeModeInteractor.kt
@@ -23,7 +23,6 @@ import com.android.systemui.log.table.TableLogBuffer
import com.android.systemui.log.table.logDiffsForTable
import com.android.systemui.scene.domain.SceneFrameworkTableLog
import com.android.systemui.shade.data.repository.ShadeRepository
-import com.android.systemui.shade.shared.flag.DualShade
import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.shared.settings.data.repository.SecureSettingsRepository
import javax.inject.Inject
@@ -116,11 +115,7 @@ constructor(
isShadeLayoutWide: Boolean,
): ShadeMode {
return when {
- isDualShadeEnabled ||
- // TODO(b/388793191): This ensures that the dual_shade aconfig flag can also enable
- // Dual Shade, to avoid breaking unit tests. Remove this once all references to the
- // flag are removed.
- DualShade.isEnabled -> ShadeMode.Dual
+ isDualShadeEnabled -> ShadeMode.Dual
isShadeLayoutWide -> ShadeMode.Split
else -> ShadeMode.Single
}
diff --git a/packages/SystemUI/src/com/android/systemui/shade/shared/flag/DualShade.kt b/packages/SystemUI/src/com/android/systemui/shade/shared/flag/DualShade.kt
deleted file mode 100644
index 4db40582def4..000000000000
--- a/packages/SystemUI/src/com/android/systemui/shade/shared/flag/DualShade.kt
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.shade.shared.flag
-
-import com.android.systemui.Flags
-import com.android.systemui.flags.FlagToken
-import com.android.systemui.flags.RefactorFlagUtils
-
-/** Helper for reading and using the Dual Shade feature flag. */
-object DualShade {
-
- /** The aconfig flag name. */
- const val FLAG_NAME = Flags.FLAG_DUAL_SHADE
-
- /** The flag description -- not an aconfig flag name. */
- const val DESCRIPTION = "DualShadeFlag"
-
- /** A token used for dependency declaration. */
- val token: FlagToken
- get() = FlagToken(FLAG_NAME, isEnabled)
-
- /** Whether the feature is enabled. */
- @JvmStatic
- inline val isEnabled
- get() = Flags.dualShade()
-
- /**
- * Called to ensure code is only run when the flag is enabled. This protects users from the
- * unintended behaviors caused by accidentally running new logic, while also crashing on an eng
- * build to ensure that the refactor author catches issues in testing.
- */
- @JvmStatic
- fun isUnexpectedlyInLegacyMode() =
- RefactorFlagUtils.isUnexpectedlyInLegacyMode(isEnabled, DESCRIPTION)
-
- /**
- * Called to ensure code is only run when the flag is disabled. This will throw an exception if
- * the flag is enabled to ensure that the refactor author catches issues in testing.
- */
- @JvmStatic
- fun assertInLegacyMode() = RefactorFlagUtils.assertInLegacyMode(isEnabled, DESCRIPTION)
-}
diff --git a/packages/SystemUI/src/com/android/systemui/shade/transition/ScrimShadeTransitionController.kt b/packages/SystemUI/src/com/android/systemui/shade/transition/ScrimShadeTransitionController.kt
index e38e53d67f61..e5349deaa811 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/transition/ScrimShadeTransitionController.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/transition/ScrimShadeTransitionController.kt
@@ -43,7 +43,7 @@ constructor(
shadeExpansionStateManager.addExpansionListener(this::onPanelExpansionChanged)
onPanelExpansionChanged(currentState)
shadeExpansionStateManager.addStateListener(this::onPanelStateChanged)
- dumpManager.registerDumpable(
+ dumpManager.registerNormalDumpable(
ScrimShadeTransitionController::class.java.simpleName,
this::dump
)
diff --git a/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModel.kt b/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModel.kt
index 96128df1b723..8c38d2e7550c 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModel.kt
@@ -23,8 +23,10 @@ import android.icu.text.DateFormat
import android.icu.text.DisplayContext
import android.os.UserHandle
import android.provider.Settings
+import android.view.ViewGroup
import androidx.compose.runtime.getValue
import com.android.app.tracing.coroutines.launchTraced as launch
+import com.android.systemui.battery.BatteryMeterViewController
import com.android.systemui.broadcast.BroadcastDispatcher
import com.android.systemui.lifecycle.ExclusiveActivatable
import com.android.systemui.lifecycle.Hydrator
@@ -39,7 +41,11 @@ import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.shade.domain.interactor.PrivacyChipInteractor
import com.android.systemui.shade.domain.interactor.ShadeHeaderClockInteractor
import com.android.systemui.shade.domain.interactor.ShadeInteractor
-import com.android.systemui.shade.shared.model.ShadeMode
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
+import com.android.systemui.statusbar.notification.icon.ui.viewbinder.NotificationIconContainerStatusBarViewBinder
+import com.android.systemui.statusbar.phone.StatusBarLocation
+import com.android.systemui.statusbar.phone.ui.StatusBarIconController
+import com.android.systemui.statusbar.phone.ui.TintedIconManager
import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.MobileIconsInteractor
import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.MobileIconsViewModel
import dagger.assisted.AssistedFactory
@@ -63,31 +69,51 @@ constructor(
private val activityStarter: ActivityStarter,
private val sceneInteractor: SceneInteractor,
private val shadeInteractor: ShadeInteractor,
+ private val shadeModeInteractor: ShadeModeInteractor,
private val mobileIconsInteractor: MobileIconsInteractor,
val mobileIconsViewModel: MobileIconsViewModel,
private val privacyChipInteractor: PrivacyChipInteractor,
private val clockInteractor: ShadeHeaderClockInteractor,
+ private val tintedIconManagerFactory: TintedIconManager.Factory,
+ private val batteryMeterViewControllerFactory: BatteryMeterViewController.Factory,
+ val statusBarIconController: StatusBarIconController,
+ val notificationIconContainerStatusBarViewBinder: NotificationIconContainerStatusBarViewBinder,
private val broadcastDispatcher: BroadcastDispatcher,
) : ExclusiveActivatable() {
private val hydrator = Hydrator("ShadeHeaderViewModel.hydrator")
- val highlightNotificationIcons: Boolean by
+ val createTintedIconManager: (ViewGroup, StatusBarLocation) -> TintedIconManager =
+ tintedIconManagerFactory::create
+
+ val createBatteryMeterViewController:
+ (ViewGroup, StatusBarLocation) -> BatteryMeterViewController =
+ batteryMeterViewControllerFactory::create
+
+ val notificationsChipHighlight: HeaderChipHighlight by
hydrator.hydratedStateOf(
- traceName = "highlightNotificationIcons",
- initialValue = false,
+ traceName = "notificationsChipHighlight",
+ initialValue = HeaderChipHighlight.None,
source =
sceneInteractor.currentOverlays.map { overlays ->
- Overlays.NotificationsShade in overlays
+ when {
+ Overlays.NotificationsShade in overlays -> HeaderChipHighlight.Strong
+ Overlays.QuickSettingsShade in overlays -> HeaderChipHighlight.Weak
+ else -> HeaderChipHighlight.None
+ }
},
)
- val highlightQuickSettingsIcons: Boolean by
+ val quickSettingsChipHighlight: HeaderChipHighlight by
hydrator.hydratedStateOf(
- traceName = "highlightQuickSettingsIcons",
- initialValue = false,
+ traceName = "quickSettingsChipHighlight",
+ initialValue = HeaderChipHighlight.None,
source =
sceneInteractor.currentOverlays.map { overlays ->
- Overlays.QuickSettingsShade in overlays
+ when {
+ Overlays.QuickSettingsShade in overlays -> HeaderChipHighlight.Strong
+ Overlays.NotificationsShade in overlays -> HeaderChipHighlight.Weak
+ else -> HeaderChipHighlight.None
+ }
},
)
@@ -181,7 +207,7 @@ constructor(
/** Notifies that the system icons container was clicked. */
fun onNotificationIconChipClicked() {
- if (shadeInteractor.shadeMode.value !is ShadeMode.Dual) {
+ if (!shadeModeInteractor.isDualShade) {
return
}
val loggingReason = "ShadeHeaderViewModel.onNotificationIconChipClicked"
@@ -199,7 +225,7 @@ constructor(
/** Notifies that the system icons container was clicked. */
fun onSystemIconChipClicked() {
val loggingReason = "ShadeHeaderViewModel.onSystemIconChipClicked"
- if (shadeInteractor.shadeMode.value is ShadeMode.Dual) {
+ if (shadeModeInteractor.isDualShade) {
val currentOverlays = sceneInteractor.currentOverlays.value
if (Overlays.QuickSettingsShade in currentOverlays) {
shadeInteractor.collapseQuickSettingsShade(
@@ -225,6 +251,15 @@ constructor(
)
}
+ /** Represents the background highlight of a header icons chip. */
+ sealed interface HeaderChipHighlight {
+ data object None : HeaderChipHighlight
+
+ data object Weak : HeaderChipHighlight
+
+ data object Strong : HeaderChipHighlight
+ }
+
private fun updateDateTexts(invalidateFormats: Boolean) {
if (invalidateFormats) {
longerDateFormat.value = getFormatFromPattern(longerPattern)
diff --git a/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModel.kt b/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModel.kt
index 7fd0e4e9d468..35031e39520c 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModel.kt
@@ -26,7 +26,7 @@ import com.android.systemui.qs.ui.adapter.QSSceneAdapter
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.settings.brightness.ui.viewModel.BrightnessMirrorViewModel
-import com.android.systemui.shade.domain.interactor.ShadeInteractor
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.statusbar.disableflags.domain.interactor.DisableFlagsInteractor
import com.android.systemui.unfold.domain.interactor.UnfoldTransitionInteractor
@@ -56,7 +56,7 @@ constructor(
val shadeHeaderViewModelFactory: ShadeHeaderViewModel.Factory,
val brightnessMirrorViewModelFactory: BrightnessMirrorViewModel.Factory,
val mediaCarouselInteractor: MediaCarouselInteractor,
- shadeInteractor: ShadeInteractor,
+ shadeModeInteractor: ShadeModeInteractor,
private val disableFlagsInteractor: DisableFlagsInteractor,
private val footerActionsViewModelFactory: FooterActionsViewModel.Factory,
private val footerActionsController: FooterActionsController,
@@ -65,7 +65,7 @@ constructor(
private val sceneInteractor: SceneInteractor,
) : ExclusiveActivatable() {
- val shadeMode: StateFlow<ShadeMode> = shadeInteractor.shadeMode
+ val shadeMode: StateFlow<ShadeMode> = shadeModeInteractor.shadeMode
private val _isEmptySpaceClickable =
MutableStateFlow(!deviceEntryInteractor.isDeviceEntered.value)
diff --git a/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModel.kt b/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModel.kt
index 7d6b1a3126dc..d0e0de9b8b96 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModel.kt
@@ -25,7 +25,7 @@ import com.android.systemui.scene.shared.model.SceneFamilies
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.shared.model.TransitionKeys.ToSplitShade
import com.android.systemui.scene.ui.viewmodel.UserActionsViewModel
-import com.android.systemui.shade.domain.interactor.ShadeInteractor
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.shade.shared.model.ShadeMode
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
@@ -42,13 +42,13 @@ class ShadeUserActionsViewModel
@AssistedInject
constructor(
private val qsSceneAdapter: QSSceneAdapter,
- private val shadeInteractor: ShadeInteractor,
+ private val shadeModeInteractor: ShadeModeInteractor,
private val sceneBackInteractor: SceneBackInteractor,
) : UserActionsViewModel() {
override suspend fun hydrateActions(setActions: (Map<UserAction, UserActionResult>) -> Unit) {
combine(
- shadeInteractor.shadeMode,
+ shadeModeInteractor.shadeMode,
qsSceneAdapter.isCustomizerShowing,
sceneBackInteractor.backScene
.filter { it != Scenes.Shade }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
index dcea8d85e10d..97de61969ffb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
@@ -111,7 +111,7 @@ public class CommandQueue extends IStatusBar.Stub implements
private static final int MSG_COLLAPSE_PANELS = 4 << MSG_SHIFT;
private static final int MSG_EXPAND_SETTINGS = 5 << MSG_SHIFT;
private static final int MSG_SYSTEM_BAR_CHANGED = 6 << MSG_SHIFT;
- private static final int MSG_DISPLAY_READY = 7 << MSG_SHIFT;
+ private static final int MSG_DISPLAY_ADD_SYSTEM_DECORATIONS = 7 << MSG_SHIFT;
private static final int MSG_SHOW_IME_BUTTON = 8 << MSG_SHIFT;
private static final int MSG_TOGGLE_RECENT_APPS = 9 << MSG_SHIFT;
private static final int MSG_PRELOAD_RECENT_APPS = 10 << MSG_SHIFT;
@@ -184,7 +184,6 @@ public class CommandQueue extends IStatusBar.Stub implements
private static final int MSG_SET_SPLITSCREEN_FOCUS = 81 << MSG_SHIFT;
private static final int MSG_TOGGLE_QUICK_SETTINGS_PANEL = 82 << MSG_SHIFT;
private static final int MSG_WALLET_ACTION_LAUNCH_GESTURE = 83 << MSG_SHIFT;
- private static final int MSG_SET_HAS_NAVIGATION_BAR = 84 << MSG_SHIFT;
private static final int MSG_DISPLAY_REMOVE_SYSTEM_DECORATIONS = 85 << MSG_SHIFT;
public static final int FLAG_EXCLUDE_NONE = 0;
public static final int FLAG_EXCLUDE_SEARCH_PANEL = 1 << 0;
@@ -415,9 +414,9 @@ public class CommandQueue extends IStatusBar.Stub implements
}
/**
- * @see IStatusBar#onDisplayReady(int)
+ * @see IStatusBar#onDisplayAddSystemDecorations(int)
*/
- default void onDisplayReady(int displayId) {
+ default void onDisplayAddSystemDecorations(int displayId) {
}
/**
@@ -588,12 +587,6 @@ public class CommandQueue extends IStatusBar.Stub implements
* @see IStatusBar#moveFocusedTaskToDesktop(int)
*/
default void moveFocusedTaskToDesktop(int displayId) {}
-
- /**
- * @see IStatusBar#setHasNavigationBar(int, boolean)
- */
- default void setHasNavigationBar(int displayId, boolean hasNavigationBar) {
- }
}
@VisibleForTesting
@@ -1205,9 +1198,9 @@ public class CommandQueue extends IStatusBar.Stub implements
}
@Override
- public void onDisplayReady(int displayId) {
+ public void onDisplayAddSystemDecorations(int displayId) {
synchronized (mLock) {
- mHandler.obtainMessage(MSG_DISPLAY_READY, displayId, 0).sendToTarget();
+ mHandler.obtainMessage(MSG_DISPLAY_ADD_SYSTEM_DECORATIONS, displayId, 0).sendToTarget();
}
}
@@ -1532,14 +1525,6 @@ public class CommandQueue extends IStatusBar.Stub implements
mHandler.obtainMessage(MSG_ENTER_DESKTOP, args).sendToTarget();
}
- @Override
- public void setHasNavigationBar(int displayId, boolean hasNavigationBar) {
- synchronized (mLock) {
- mHandler.obtainMessage(MSG_SET_HAS_NAVIGATION_BAR, displayId,
- hasNavigationBar ? 1 : 0).sendToTarget();
- }
- }
-
private final class H extends Handler {
private H(Looper l) {
@@ -1851,9 +1836,9 @@ public class CommandQueue extends IStatusBar.Stub implements
mCallbacks.get(i).showPinningEscapeToast();
}
break;
- case MSG_DISPLAY_READY:
+ case MSG_DISPLAY_ADD_SYSTEM_DECORATIONS:
for (int i = 0; i < mCallbacks.size(); i++) {
- mCallbacks.get(i).onDisplayReady(msg.arg1);
+ mCallbacks.get(i).onDisplayAddSystemDecorations(msg.arg1);
}
break;
case MSG_DISPLAY_REMOVE_SYSTEM_DECORATIONS:
@@ -2072,11 +2057,6 @@ public class CommandQueue extends IStatusBar.Stub implements
}
break;
}
- case MSG_SET_HAS_NAVIGATION_BAR:
- for (int i = 0; i < mCallbacks.size(); i++) {
- mCallbacks.get(i).setHasNavigationBar(msg.arg1, msg.arg2 != 0);
- }
- break;
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
index 4269f60e1c2a..657c86b10f16 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
@@ -211,6 +211,7 @@ public class KeyguardIndicationController {
protected boolean mPowerPluggedInDock;
protected int mChargingSpeed;
protected boolean mPowerCharged;
+ protected int mChargingStatus;
/** Whether the battery defender is triggered. */
private boolean mBatteryDefender;
@@ -1260,6 +1261,7 @@ public class KeyguardIndicationController {
pw.println(" mPowerCharged: " + mPowerCharged);
pw.println(" mChargingSpeed: " + mChargingSpeed);
pw.println(" mChargingWattage: " + mChargingWattage);
+ pw.println(" mChargingStatus: " + mChargingStatus);
pw.println(" mMessageToShowOnScreenOn: " + mBiometricErrorMessageToShowOnScreenOn);
pw.println(" mDozing: " + mDozing);
pw.println(" mTransientIndication: " + mTransientIndication);
@@ -1317,6 +1319,7 @@ public class KeyguardIndicationController {
mPowerCharged = status.isCharged();
mChargingWattage = status.maxChargingWattage;
mChargingSpeed = status.getChargingSpeed(mContext);
+ mChargingStatus = status.chargingStatus;
mBatteryLevel = status.level;
mBatteryPresent = status.present;
mBatteryDefender = isBatteryDefender(status);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeKeyguardTransitionController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeKeyguardTransitionController.kt
index 31e5df9e668a..891902edfa1c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeKeyguardTransitionController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeKeyguardTransitionController.kt
@@ -6,6 +6,7 @@ import android.util.MathUtils
import com.android.systemui.dump.DumpManager
import com.android.systemui.media.controls.ui.controller.MediaHierarchyManager
import com.android.systemui.res.R
+import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.shade.domain.interactor.ShadeLockscreenInteractor
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.SplitShadeStateController
@@ -19,7 +20,7 @@ class LockscreenShadeKeyguardTransitionController
constructor(
private val mediaHierarchyManager: MediaHierarchyManager,
@Assisted private val shadeLockscreenInteractor: ShadeLockscreenInteractor,
- context: Context,
+ @ShadeDisplayAware context: Context,
configurationController: ConfigurationController,
dumpManager: DumpManager,
splitShadeStateController: SplitShadeStateController,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeQsTransitionController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeQsTransitionController.kt
index adca3f2d25d6..233d8180d588 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeQsTransitionController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeQsTransitionController.kt
@@ -24,6 +24,7 @@ import androidx.annotation.Px
import com.android.systemui.dump.DumpManager
import com.android.systemui.plugins.qs.QS
import com.android.systemui.res.R
+import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.SplitShadeStateController
import dagger.assisted.Assisted
@@ -35,7 +36,7 @@ import kotlin.math.max
class LockscreenShadeQsTransitionController
@AssistedInject
constructor(
- context: Context,
+ @ShadeDisplayAware context: Context,
configurationController: ConfigurationController,
dumpManager: DumpManager,
@Assisted private val qsProvider: () -> QS?,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeScrimTransitionController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeScrimTransitionController.kt
index 77a09608dbd3..058ccbad37dc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeScrimTransitionController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeScrimTransitionController.kt
@@ -5,6 +5,7 @@ import android.util.IndentingPrintWriter
import android.util.MathUtils
import com.android.systemui.res.R
import com.android.systemui.dump.DumpManager
+import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.statusbar.phone.ScrimController
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.SplitShadeStateController
@@ -15,7 +16,7 @@ class LockscreenShadeScrimTransitionController
@Inject
constructor(
private val scrimController: ScrimController,
- context: Context,
+ @ShadeDisplayAware context: Context,
configurationController: ConfigurationController,
dumpManager: DumpManager,
splitShadeStateController: SplitShadeStateController
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt
index ba41a631a2c6..10f61c66c838 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt
@@ -29,6 +29,7 @@ import com.android.systemui.plugins.qs.QS
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.qs.ui.adapter.QSSceneAdapter
import com.android.systemui.res.R
+import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.shade.data.repository.ShadeRepository
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.shade.domain.interactor.ShadeLockscreenInteractor
@@ -67,7 +68,7 @@ constructor(
private val keyguardTransitionControllerFactory:
LockscreenShadeKeyguardTransitionController.Factory,
private val depthController: NotificationShadeDepthController,
- private val context: Context,
+ @ShadeDisplayAware private val context: Context,
private val splitShadeOverScrollerFactory: SplitShadeLockScreenOverScroller.Factory,
private val singleShadeOverScrollerFactory: SingleShadeLockScreenOverScroller.Factory,
private val activityStarter: ActivityStarter,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
index 382fc7058bf0..25ebc8c1ffa1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
@@ -61,7 +61,6 @@ import com.android.systemui.Dumpable;
import com.android.systemui.Flags;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dagger.SysUISingleton;
-import com.android.systemui.dagger.qualifiers.Application;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.deviceentry.domain.interactor.DeviceUnlockedInteractor;
@@ -77,6 +76,7 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
import com.android.systemui.statusbar.notification.collection.render.NotificationVisibilityProvider;
import com.android.systemui.statusbar.notification.row.shared.LockscreenOtpRedaction;
+import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepository;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.ListenerSet;
@@ -85,6 +85,8 @@ import com.android.systemui.util.settings.SecureSettings;
import dagger.Lazy;
+import kotlinx.coroutines.CoroutineScope;
+
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
@@ -97,8 +99,6 @@ import java.util.concurrent.atomic.AtomicLong;
import javax.inject.Inject;
-import kotlinx.coroutines.CoroutineScope;
-
/**
* Handles keeping track of the current user, profiles, and various things related to hiding
* contents, redacting notifications, and the lockscreen.
@@ -300,6 +300,12 @@ public class NotificationLockscreenUserManagerImpl implements
// Whether or not the device is locked
@VisibleForTesting
protected final AtomicBoolean mLocked = new AtomicBoolean(true);
+ // The last time the device connected to a wifi network
+ @VisibleForTesting
+ protected final AtomicLong mLastWifiConnectionTime = new AtomicLong(-1);
+ // Whether the device is connected to wifi
+ @VisibleForTesting
+ protected final AtomicBoolean mConnectedToWifi = new AtomicBoolean(false);
protected int mCurrentUserId = 0;
@@ -331,7 +337,8 @@ public class NotificationLockscreenUserManagerImpl implements
FeatureFlagsClassic featureFlags,
Lazy<DeviceUnlockedInteractor> deviceUnlockedInteractorLazy,
Lazy<KeyguardInteractor> keyguardInteractor,
- @Application CoroutineScope coroutineScope
+ Lazy<WifiRepository> wifiRepository,
+ @Background CoroutineScope coroutineScope
) {
mContext = context;
mMainExecutor = mainExecutor;
@@ -366,14 +373,29 @@ public class NotificationLockscreenUserManagerImpl implements
// To avoid dependency injection cycle, finish constructing this object before using the
// KeyguardInteractor. The CoroutineScope will only be null in tests.
if (LockscreenOtpRedaction.isEnabled() && coroutineScope != null) {
- mMainExecutor.execute(() -> JavaAdapterKt.collectFlow(coroutineScope,
+ mMainExecutor.execute(() -> {
+ JavaAdapterKt.collectFlow(coroutineScope,
keyguardInteractor.get().isKeyguardDismissible(),
unlocked -> {
if (!unlocked) {
mLastLockTime.set(System.currentTimeMillis());
}
mLocked.set(!unlocked);
- }));
+ notifyNotificationStateChanged();
+ });
+ JavaAdapterKt.collectFlow(coroutineScope, wifiRepository.get().getWifiNetwork(),
+ n -> {
+ boolean wasConnectedToWifi = mConnectedToWifi.get();
+ boolean isConnectedToWifi =
+ wifiRepository.get().isWifiConnectedWithValidSsid();
+ if (wasConnectedToWifi != isConnectedToWifi) {
+ // We are either connecting, or disconnecting from wifi
+ mLastWifiConnectionTime.set(System.currentTimeMillis());
+ mConnectedToWifi.set(isConnectedToWifi);
+ notifyNotificationStateChanged();
+ }
+ });
+ });
}
}
@@ -732,9 +754,11 @@ public class NotificationLockscreenUserManagerImpl implements
* We show the sensitive content redaction view if
* 1. The feature is enabled
* 2. The device is locked
- * 3. The notification has the `hasSensitiveContent` ranking variable set to true
- * 4. The device has been locked for at least LOCK_TIME_FOR_SENSITIVE_REDACTION_MS
- * 5. The notification arrived since the last lock time
+ * 3. The device is NOT connected to Wifi
+ * 4. The notification has the `hasSensitiveContent` ranking variable set to true
+ * 5. The device has not connected to Wifi since receiving the notification
+ * 6. The notification arrived at least LOCK_TIME_FOR_SENSITIVE_REDACTION_MS before the last
+ * lock time.
*/
private boolean shouldShowSensitiveContentRedactedView(NotificationEntry ent) {
if (!LockscreenOtpRedaction.isEnabled()) {
@@ -745,18 +769,27 @@ public class NotificationLockscreenUserManagerImpl implements
return false;
}
+ if (mConnectedToWifi.get()) {
+ return false;
+ }
+
if (ent.getRanking() == null || !ent.getRanking().hasSensitiveContent()) {
return false;
}
- long lastLockedTime = mLastLockTime.get();
- if (ent.getSbn().getNotification().getWhen() < lastLockedTime) {
+ long lastWifiConnectTime = mLastWifiConnectionTime.get();
+ // If the device has connected to wifi since receiving the notification, do not redact
+ if (ent.getSbn().getPostTime() < lastWifiConnectTime) {
return false;
}
- if ((System.currentTimeMillis() - lastLockedTime) < LOCK_TIME_FOR_SENSITIVE_REDACTION_MS) {
+ // If the lock screen was not already locked for LOCK_TIME_FOR_SENSITIVE_REDACTION_MS when
+ // this notification arrived, do not redact
+ long latestTimeForRedaction = mLastLockTime.get() + LOCK_TIME_FOR_SENSITIVE_REDACTION_MS;
+ if (ent.getSbn().getPostTime() < latestTimeForRedaction) {
return false;
}
+
return true;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java
index fdc1c0e4dd22..c0ee56bbf149 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java
@@ -54,6 +54,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.power.domain.interactor.PowerInteractor;
import com.android.systemui.res.R;
import com.android.systemui.scene.shared.flag.SceneContainerFlag;
+import com.android.systemui.shade.ShadeDisplayAware;
import com.android.systemui.shade.domain.interactor.ShadeInteractor;
import com.android.systemui.statusbar.dagger.CentralSurfacesDependenciesModule;
import com.android.systemui.statusbar.notification.NotifPipelineFlags;
@@ -260,7 +261,7 @@ public class NotificationRemoteInputManager implements CoreStartable {
*/
@Inject
public NotificationRemoteInputManager(
- Context context,
+ @ShadeDisplayAware Context context,
NotifPipelineFlags notifPipelineFlags,
NotificationLockscreenUserManager lockscreenUserManager,
SmartReplyController smartReplyController,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
index a2a840942f3c..3e761079bc49 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
@@ -40,7 +40,9 @@ import com.android.systemui.animation.ShadeInterpolation
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dump.DumpManager
+import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.plugins.statusbar.StatusBarStateController
+import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.shade.ShadeExpansionChangeEvent
import com.android.systemui.shade.ShadeExpansionListener
import com.android.systemui.shared.Flags.ambientAod
@@ -74,11 +76,12 @@ constructor(
private val blurUtils: BlurUtils,
private val biometricUnlockController: BiometricUnlockController,
private val keyguardStateController: KeyguardStateController,
+ private val keyguardInteractor: KeyguardInteractor,
private val choreographer: Choreographer,
private val wallpaperController: WallpaperController,
private val notificationShadeWindowController: NotificationShadeWindowController,
private val dozeParameters: DozeParameters,
- private val context: Context,
+ @ShadeDisplayAware private val context: Context,
private val splitShadeStateController: SplitShadeStateController,
private val windowRootViewBlurInteractor: WindowRootViewBlurInteractor,
@Application private val applicationScope: CoroutineScope,
@@ -281,6 +284,7 @@ constructor(
appZoomOutOptional.ifPresent { appZoomOut ->
appZoomOut.setProgress(zoomOutFromShadeRadius)
}
+ keyguardInteractor.setZoomOut(zoomOutFromShadeRadius)
}
listeners.forEach {
it.onWallpaperZoomOutChanged(zoomOutFromShadeRadius)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/RemoteInputNotificationRebuilder.java b/packages/SystemUI/src/com/android/systemui/statusbar/RemoteInputNotificationRebuilder.java
index 321b6084831e..df8b514d6dbc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/RemoteInputNotificationRebuilder.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/RemoteInputNotificationRebuilder.java
@@ -29,6 +29,7 @@ import android.text.TextUtils;
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.dagger.SysUISingleton;
+import com.android.systemui.shade.ShadeDisplayAware;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import java.util.ArrayList;
@@ -47,7 +48,7 @@ public class RemoteInputNotificationRebuilder {
private final Context mContext;
@Inject
- RemoteInputNotificationRebuilder(Context context) {
+ RemoteInputNotificationRebuilder(@ShadeDisplayAware Context context) {
mContext = context;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SplitShadeLockScreenOverScroller.kt b/packages/SystemUI/src/com/android/systemui/statusbar/SplitShadeLockScreenOverScroller.kt
index 612a365dbe8b..ef69399917f9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/SplitShadeLockScreenOverScroller.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/SplitShadeLockScreenOverScroller.kt
@@ -11,6 +11,7 @@ import com.android.systemui.res.R
import com.android.app.animation.Interpolators
import com.android.systemui.dump.DumpManager
import com.android.systemui.plugins.qs.QS
+import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
import com.android.systemui.statusbar.phone.ScrimController
import com.android.systemui.statusbar.policy.ConfigurationController
@@ -24,7 +25,7 @@ class SplitShadeLockScreenOverScroller
constructor(
configurationController: ConfigurationController,
dumpManager: DumpManager,
- private val context: Context,
+ @ShadeDisplayAware private val context: Context,
private val scrimController: ScrimController,
private val statusBarStateController: SysuiStatusBarStateController,
@Assisted private val qSProvider: () -> QS?,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java
index ead8f6a1123e..0dfc63ea8619 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java
@@ -16,13 +16,9 @@
package com.android.systemui.statusbar;
-import static com.android.internal.jank.InteractionJankMonitor.CUJ_LOCKSCREEN_TRANSITION_FROM_AOD;
-import static com.android.internal.jank.InteractionJankMonitor.CUJ_LOCKSCREEN_TRANSITION_TO_AOD;
import static com.android.systemui.keyguard.shared.model.KeyguardState.GONE;
import static com.android.systemui.util.kotlin.JavaAdapterKt.combineFlows;
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.os.SystemProperties;
@@ -30,7 +26,6 @@ import android.os.Trace;
import android.text.format.DateFormat;
import android.util.FloatProperty;
import android.util.Log;
-import android.view.Choreographer;
import android.view.View;
import android.view.animation.Interpolator;
@@ -42,8 +37,6 @@ import com.android.compose.animation.scene.OverlayKey;
import com.android.compose.animation.scene.SceneKey;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.jank.InteractionJankMonitor;
-import com.android.internal.jank.InteractionJankMonitor.Configuration;
import com.android.internal.logging.UiEventLogger;
import com.android.systemui.DejankUtils;
import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor;
@@ -54,7 +47,6 @@ import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor;
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor;
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
-import com.android.systemui.res.R;
import com.android.systemui.scene.data.model.SceneStack;
import com.android.systemui.scene.data.model.SceneStackKt;
import com.android.systemui.scene.domain.interactor.SceneBackInteractor;
@@ -113,7 +105,6 @@ public class StatusBarStateControllerImpl implements
private final ArrayList<RankedListener> mListeners = new ArrayList<>();
private final UiEventLogger mUiEventLogger;
- private final Lazy<InteractionJankMonitor> mInteractionJankMonitorLazy;
private final JavaAdapter mJavaAdapter;
private final Lazy<KeyguardInteractor> mKeyguardInteractorLazy;
private final Lazy<KeyguardTransitionInteractor> mKeyguardTransitionInteractorLazy;
@@ -184,7 +175,6 @@ public class StatusBarStateControllerImpl implements
@Inject
public StatusBarStateControllerImpl(
UiEventLogger uiEventLogger,
- Lazy<InteractionJankMonitor> interactionJankMonitorLazy,
JavaAdapter javaAdapter,
Lazy<KeyguardInteractor> keyguardInteractor,
Lazy<KeyguardTransitionInteractor> keyguardTransitionInteractor,
@@ -196,7 +186,6 @@ public class StatusBarStateControllerImpl implements
Lazy<SceneBackInteractor> sceneBackInteractorLazy,
Lazy<AlternateBouncerInteractor> alternateBouncerInteractorLazy) {
mUiEventLogger = uiEventLogger;
- mInteractionJankMonitorLazy = interactionJankMonitorLazy;
mJavaAdapter = javaAdapter;
mKeyguardInteractorLazy = keyguardInteractor;
mKeyguardTransitionInteractorLazy = keyguardTransitionInteractor;
@@ -470,22 +459,6 @@ public class StatusBarStateControllerImpl implements
this, SET_DARK_AMOUNT_PROPERTY, mDozeAmountTarget);
darkAnimator.setInterpolator(Interpolators.LINEAR);
darkAnimator.setDuration(StackStateAnimator.ANIMATION_DURATION_WAKEUP);
- darkAnimator.addListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationCancel(Animator animation) {
- cancelInteractionJankMonitor();
- }
-
- @Override
- public void onAnimationEnd(Animator animation) {
- endInteractionJankMonitor();
- }
-
- @Override
- public void onAnimationStart(Animator animation) {
- beginInteractionJankMonitor();
- }
- });
darkAnimator.start();
return darkAnimator;
}
@@ -511,42 +484,6 @@ public class StatusBarStateControllerImpl implements
return mKeyguardClockInteractorLazy.get().getRenderedClockId();
}
- private void beginInteractionJankMonitor() {
- final boolean shouldPost =
- (mIsDozing && mDozeAmount == 0) || (!mIsDozing && mDozeAmount == 1);
- InteractionJankMonitor monitor = mInteractionJankMonitorLazy.get();
- if (monitor != null && mView != null && mView.isAttachedToWindow()) {
- if (shouldPost) {
- Choreographer.getInstance().postCallback(
- Choreographer.CALLBACK_ANIMATION, this::beginInteractionJankMonitor, null);
- } else {
- Configuration.Builder builder = Configuration.Builder.withView(getCujType(), mView)
- .setTag(getClockId())
- .setDeferMonitorForAnimationStart(false);
- monitor.begin(builder);
- }
- }
- }
-
- private void endInteractionJankMonitor() {
- InteractionJankMonitor monitor = mInteractionJankMonitorLazy.get();
- if (monitor == null) {
- return;
- }
- monitor.end(getCujType());
- }
-
- private void cancelInteractionJankMonitor() {
- InteractionJankMonitor monitor = mInteractionJankMonitorLazy.get();
- if (monitor == null) {
- return;
- }
- monitor.cancel(getCujType());
- }
-
- private int getCujType() {
- return mIsDozing ? CUJ_LOCKSCREEN_TRANSITION_TO_AOD : CUJ_LOCKSCREEN_TRANSITION_FROM_AOD;
- }
@Override
public boolean goingToFullShade() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModel.kt
index 541a07c47df2..a2c0226addfa 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModel.kt
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.chips.call.ui.viewmodel
+import android.content.Context
import android.view.View
import com.android.internal.jank.Cuj
import com.android.systemui.animation.ActivityTransitionAnimator
@@ -23,6 +24,7 @@ import com.android.systemui.common.shared.model.ContentDescription
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.log.LogBuffer
import com.android.systemui.log.core.LogLevel
import com.android.systemui.plugins.ActivityStarter
@@ -52,6 +54,7 @@ import kotlinx.coroutines.flow.stateIn
open class CallChipViewModel
@Inject
constructor(
+ @Main private val context: Context,
@Application private val scope: CoroutineScope,
interactor: CallChipInteractor,
systemClock: SystemClock,
@@ -63,17 +66,21 @@ constructor(
.map { state ->
when (state) {
is OngoingCallModel.NoCall,
- is OngoingCallModel.InCallWithVisibleApp -> OngoingActivityChipModel.Hidden()
+ is OngoingCallModel.InCallWithVisibleApp -> OngoingActivityChipModel.Inactive()
is OngoingCallModel.InCall -> {
+ val key = state.notificationKey
+ val contentDescription = getContentDescription(state.appName)
val icon =
if (state.notificationIconView != null) {
StatusBarConnectedDisplays.assertInLegacyMode()
OngoingActivityChipModel.ChipIcon.StatusBarView(
- state.notificationIconView
+ state.notificationIconView,
+ contentDescription,
)
} else if (StatusBarConnectedDisplays.isEnabled) {
OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon(
- state.notificationKey
+ state.notificationKey,
+ contentDescription,
)
} else {
OngoingActivityChipModel.ChipIcon.SingleColorIcon(phoneIcon)
@@ -90,7 +97,8 @@ constructor(
if (state.startTimeMs <= 0L) {
// If the start time is invalid, don't show a timer and show just an
// icon. See b/192379214.
- OngoingActivityChipModel.Shown.IconOnly(
+ OngoingActivityChipModel.Active.IconOnly(
+ key = key,
icon = icon,
colors = colors,
onClickListenerLegacy = getOnClickListener(state),
@@ -100,7 +108,8 @@ constructor(
val startTimeInElapsedRealtime =
state.startTimeMs - systemClock.currentTimeMillis() +
systemClock.elapsedRealtime()
- OngoingActivityChipModel.Shown.Timer(
+ OngoingActivityChipModel.Active.Timer(
+ key = key,
icon = icon,
colors = colors,
startTimeMs = startTimeInElapsedRealtime,
@@ -111,7 +120,7 @@ constructor(
}
}
}
- .stateIn(scope, SharingStarted.WhileSubscribed(), OngoingActivityChipModel.Hidden())
+ .stateIn(scope, SharingStarted.WhileSubscribed(), OngoingActivityChipModel.Inactive())
private fun getOnClickListener(state: OngoingCallModel.InCall): View.OnClickListener? {
if (state.intent == null) {
@@ -155,6 +164,17 @@ constructor(
)
}
+ private fun getContentDescription(appName: String): ContentDescription {
+ val ongoingCallDescription = context.getString(R.string.ongoing_call_content_description)
+ return ContentDescription.Loaded(
+ context.getString(
+ R.string.accessibility_desc_notification_icon,
+ appName,
+ ongoingCallDescription,
+ )
+ )
+ }
+
companion object {
private val phoneIcon =
Icon.Resource(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndCastScreenToOtherDeviceDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndCastScreenToOtherDeviceDialogDelegate.kt
index 6ea72b97cb3a..521539866c9c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndCastScreenToOtherDeviceDialogDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndCastScreenToOtherDeviceDialogDelegate.kt
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.chips.casttootherdevice.ui.view
import android.content.Context
import android.os.Bundle
+import android.view.View
import com.android.systemui.mediaprojection.data.model.MediaProjectionState
import com.android.systemui.res.R
import com.android.systemui.statusbar.chips.casttootherdevice.ui.viewmodel.CastToOtherDeviceChipViewModel.Companion.CAST_TO_OTHER_DEVICE_ICON
@@ -48,6 +49,11 @@ class EndCastScreenToOtherDeviceDialogDelegate(
R.string.cast_to_other_device_stop_dialog_button,
endMediaProjectionDialogHelper.wrapStopAction(stopAction),
)
+ if (com.android.media.projection.flags.Flags.showStopDialogPostCallEnd()) {
+ window
+ ?.decorView
+ ?.setAccessibilityDataSensitive(View.ACCESSIBILITY_DATA_SENSITIVE_YES)
+ }
}
}
@@ -82,9 +88,7 @@ class EndCastScreenToOtherDeviceDialogDelegate(
hostDeviceName,
)
} else {
- context.getString(
- R.string.cast_to_other_device_stop_dialog_message_entire_screen,
- )
+ context.getString(R.string.cast_to_other_device_stop_dialog_message_entire_screen)
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndGenericCastToOtherDeviceDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndGenericCastToOtherDeviceDialogDelegate.kt
index b0c832172776..8644c53f7849 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndGenericCastToOtherDeviceDialogDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndGenericCastToOtherDeviceDialogDelegate.kt
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.chips.casttootherdevice.ui.view
import android.content.Context
import android.os.Bundle
+import android.view.View
import com.android.systemui.res.R
import com.android.systemui.statusbar.chips.casttootherdevice.ui.viewmodel.CastToOtherDeviceChipViewModel.Companion.CAST_TO_OTHER_DEVICE_ICON
import com.android.systemui.statusbar.chips.mediaprojection.ui.view.EndMediaProjectionDialogHelper
@@ -59,6 +60,11 @@ class EndGenericCastToOtherDeviceDialogDelegate(
R.string.cast_to_other_device_stop_dialog_button,
endMediaProjectionDialogHelper.wrapStopAction(stopAction),
)
+ if (com.android.media.projection.flags.Flags.showStopDialogPostCallEnd()) {
+ window
+ ?.decorView
+ ?.setAccessibilityDataSensitive(View.ACCESSIBILITY_DATA_SENSITIVE_YES)
+ }
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModel.kt
index baa8eec5f767..6ce350cb95f5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModel.kt
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.chips.casttootherdevice.ui.viewmodel
import android.content.Context
import androidx.annotation.DrawableRes
+import androidx.annotation.VisibleForTesting
import com.android.internal.jank.Cuj
import com.android.systemui.animation.DialogCuj
import com.android.systemui.animation.DialogTransitionAnimator
@@ -75,7 +76,7 @@ constructor(
mediaProjectionChipInteractor.projection
.map { projectionModel ->
when (projectionModel) {
- is ProjectionChipModel.NotProjecting -> OngoingActivityChipModel.Hidden()
+ is ProjectionChipModel.NotProjecting -> OngoingActivityChipModel.Inactive()
is ProjectionChipModel.Projecting -> {
when (projectionModel.receiver) {
ProjectionChipModel.Receiver.CastToOtherDevice -> {
@@ -87,19 +88,19 @@ constructor(
}
}
ProjectionChipModel.Receiver.ShareToApp ->
- OngoingActivityChipModel.Hidden()
+ OngoingActivityChipModel.Inactive()
}
}
}
}
// See b/347726238 for [SharingStarted.Lazily] reasoning.
- .stateIn(scope, SharingStarted.Lazily, OngoingActivityChipModel.Hidden())
+ .stateIn(scope, SharingStarted.Lazily, OngoingActivityChipModel.Inactive())
/**
* The cast chip to show, based only on MediaRouter API events.
*
- * This chip will be [OngoingActivityChipModel.Shown] when the user is casting their screen *or*
- * their audio.
+ * This chip will be [OngoingActivityChipModel.Active] when the user is casting their screen
+ * *or* their audio.
*
* The MediaProjection APIs are typically not invoked for casting *only audio* to another device
* because MediaProjection is only concerned with *screen* sharing (see b/342169876). We listen
@@ -117,7 +118,7 @@ constructor(
mediaRouterChipInteractor.mediaRouterCastingState
.map { routerModel ->
when (routerModel) {
- is MediaRouterCastModel.DoingNothing -> OngoingActivityChipModel.Hidden()
+ is MediaRouterCastModel.DoingNothing -> OngoingActivityChipModel.Inactive()
is MediaRouterCastModel.Casting -> {
// A consequence of b/269975671 is that MediaRouter will mark a device as
// casting before casting has actually started. To alleviate this bug a bit,
@@ -131,7 +132,7 @@ constructor(
}
}
}
- .stateIn(scope, SharingStarted.WhileSubscribed(), OngoingActivityChipModel.Hidden())
+ .stateIn(scope, SharingStarted.WhileSubscribed(), OngoingActivityChipModel.Inactive())
private val internalChip: StateFlow<OngoingActivityChipModel> =
combine(projectionChip, routerChip) { projection, router ->
@@ -150,24 +151,24 @@ constructor(
//
// 1. When the user chooses what device to cast to, the MediaRouter APIs mark the
// device as casting (even though casting hasn't actually started yet). At this
- // point, `routerChip` is [OngoingActivityChipModel.Shown] but `projectionChip` is
- // [OngoingActivityChipModel.Hidden], and we'll show the router chip.
+ // point, `routerChip` is [OngoingActivityChipModel.Active] but `projectionChip` is
+ // [OngoingActivityChipModel.Inactive], and we'll show the router chip.
//
// 2. Once casting has actually started, the MediaProjection APIs become aware of
// the device. At this point, both `routerChip` and `projectionChip` are
- // [OngoingActivityChipModel.Shown].
+ // [OngoingActivityChipModel.Active].
//
// Because the MediaProjection APIs have activated, we know that the user is screen
// casting (not audio casting). We need to switch to using `projectionChip` because
// that chip will show information specific to screen casting. The `projectionChip`
// will also show a timer, as opposed to `routerChip`'s icon-only display.
- if (projection is OngoingActivityChipModel.Shown) {
+ if (projection is OngoingActivityChipModel.Active) {
projection
} else {
router
}
}
- .stateIn(scope, SharingStarted.WhileSubscribed(), OngoingActivityChipModel.Hidden())
+ .stateIn(scope, SharingStarted.WhileSubscribed(), OngoingActivityChipModel.Inactive())
private val hideChipDuringDialogTransitionHelper = ChipTransitionHelper(scope)
@@ -190,8 +191,9 @@ constructor(
private fun createCastScreenToOtherDeviceChip(
state: ProjectionChipModel.Projecting
- ): OngoingActivityChipModel.Shown {
- return OngoingActivityChipModel.Shown.Timer(
+ ): OngoingActivityChipModel.Active {
+ return OngoingActivityChipModel.Active.Timer(
+ key = KEY,
icon =
OngoingActivityChipModel.ChipIcon.SingleColorIcon(
Icon.Resource(
@@ -227,8 +229,9 @@ constructor(
)
}
- private fun createIconOnlyCastChip(deviceName: String?): OngoingActivityChipModel.Shown {
- return OngoingActivityChipModel.Shown.IconOnly(
+ private fun createIconOnlyCastChip(deviceName: String?): OngoingActivityChipModel.Active {
+ return OngoingActivityChipModel.Active.IconOnly(
+ key = KEY,
icon =
OngoingActivityChipModel.ChipIcon.SingleColorIcon(
Icon.Resource(
@@ -276,6 +279,7 @@ constructor(
)
companion object {
+ @VisibleForTesting const val KEY = "CastToOtherDevice"
@DrawableRes val CAST_TO_OTHER_DEVICE_ICON = R.drawable.ic_cast_connected
private val DIALOG_CUJ =
DialogCuj(Cuj.CUJ_STATUS_BAR_LAUNCH_DIALOG_FROM_CHIP, tag = "Cast to other device")
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/mediaprojection/domain/interactor/MediaProjectionChipInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/mediaprojection/domain/interactor/MediaProjectionChipInteractor.kt
index 49c44798d2ea..49d69f26b538 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/mediaprojection/domain/interactor/MediaProjectionChipInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/mediaprojection/domain/interactor/MediaProjectionChipInteractor.kt
@@ -32,6 +32,7 @@ import com.android.systemui.statusbar.chips.StatusBarChipsLog
import com.android.systemui.statusbar.chips.mediaprojection.domain.model.ProjectionChipModel
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.map
@@ -53,6 +54,9 @@ constructor(
private val packageManager: PackageManager,
@StatusBarChipsLog private val logger: LogBuffer,
) {
+ val projectionStartedDuringCallAndActivePostCallEvent: Flow<Unit> =
+ mediaProjectionRepository.projectionStartedDuringCallAndActivePostCallEvent
+
val projection: StateFlow<ProjectionChipModel> =
mediaProjectionRepository.mediaProjectionState
.map { state ->
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/mediaprojection/domain/model/MediaProjectionStopDialogModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/mediaprojection/domain/model/MediaProjectionStopDialogModel.kt
new file mode 100644
index 000000000000..52f55fca55bb
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/mediaprojection/domain/model/MediaProjectionStopDialogModel.kt
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.chips.mediaprojection.domain.model
+
+import com.android.systemui.statusbar.phone.SystemUIDialog
+
+/** Represents the visibility state of a media projection stop dialog. */
+sealed interface MediaProjectionStopDialogModel {
+ /** The dialog is hidden and not visible to the user. */
+ data object Hidden : MediaProjectionStopDialogModel
+
+ /** The dialog is shown to the user. */
+ data class Shown(
+ val dialogDelegate: SystemUIDialog.Delegate,
+ private val onDismissAction: () -> Unit,
+ ) : MediaProjectionStopDialogModel {
+ /**
+ * Creates and shows the dialog. Ensures that onDismissAction callback is invoked when the
+ * dialog is canceled or dismissed.
+ */
+ fun createAndShowDialog() {
+ val dialog = dialogDelegate.createDialog()
+ // Prevents the dialog from being dismissed by tapping outside its boundary.
+ // This is specifically required for the stop dialog shown at call end (i.e.,
+ // PROJECTION_STARTED_DURING_CALL_AND_ACTIVE_POST_CALL event) to disallow remote
+ // dismissal by external devices. Other media projection stop dialogs do not require
+ // this since they are triggered explicitly by tapping the status bar chip, in which
+ // case the full screen containing the dialog is not remote dismissible.
+ dialog.setCanceledOnTouchOutside(/* cancel= */ false)
+ dialog.setOnCancelListener { onDismissAction.invoke() }
+ dialog.setOnDismissListener { onDismissAction.invoke() }
+ dialog.show()
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/notification/domain/interactor/SingleNotificationChipInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/notification/domain/interactor/SingleNotificationChipInteractor.kt
index cece52110567..a9338885d4c2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/notification/domain/interactor/SingleNotificationChipInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/notification/domain/interactor/SingleNotificationChipInteractor.kt
@@ -138,7 +138,7 @@ constructor(
}
}
- return NotificationChipModel(key, statusBarChipIconView, promotedContent)
+ return NotificationChipModel(key, appName, statusBarChipIconView, promotedContent)
}
@AssistedFactory
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/notification/domain/model/NotificationChipModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/notification/domain/model/NotificationChipModel.kt
index c6759da304bb..e7a90804a768 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/notification/domain/model/NotificationChipModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/notification/domain/model/NotificationChipModel.kt
@@ -22,6 +22,8 @@ import com.android.systemui.statusbar.notification.promoted.shared.model.Promote
/** Modeling all the data needed to render a status bar notification chip. */
data class NotificationChipModel(
val key: String,
+ /** The user-readable name of the app that posted the call notification. */
+ val appName: String,
val statusBarChipIconView: StatusBarIconView?,
val promotedContent: PromotedNotificationContentModel,
)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModel.kt
index 46456b841e3f..8357df42937e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModel.kt
@@ -16,10 +16,14 @@
package com.android.systemui.statusbar.chips.notification.ui.viewmodel
+import android.content.Context
import android.view.View
import com.android.systemui.Flags
+import com.android.systemui.common.shared.model.ContentDescription
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.dagger.qualifiers.Main
+import com.android.systemui.res.R
import com.android.systemui.statusbar.chips.notification.domain.interactor.StatusBarNotificationChipsInteractor
import com.android.systemui.statusbar.chips.notification.domain.model.NotificationChipModel
import com.android.systemui.statusbar.chips.notification.shared.StatusBarNotifChips
@@ -43,6 +47,7 @@ import kotlinx.coroutines.launch
class NotifChipsViewModel
@Inject
constructor(
+ @Main private val context: Context,
@Application private val applicationScope: CoroutineScope,
private val notifChipsInteractor: StatusBarNotificationChipsInteractor,
headsUpNotificationInteractor: HeadsUpNotificationInteractor,
@@ -51,7 +56,7 @@ constructor(
* A flow modeling the notification chips that should be shown. Emits an empty list if there are
* no notifications that should show a status bar chip.
*/
- val chips: Flow<List<OngoingActivityChipModel.Shown>> =
+ val chips: Flow<List<OngoingActivityChipModel.Active>> =
combine(
notifChipsInteractor.notificationChips,
headsUpNotificationInteractor.statusBarHeadsUpState,
@@ -63,15 +68,22 @@ constructor(
/** Converts the notification to the [OngoingActivityChipModel] object. */
private fun NotificationChipModel.toActivityChipModel(
headsUpState: TopPinnedState
- ): OngoingActivityChipModel.Shown {
+ ): OngoingActivityChipModel.Active {
StatusBarNotifChips.assertInNewMode()
+ val contentDescription = getContentDescription(this.appName)
val icon =
if (this.statusBarChipIconView != null) {
StatusBarConnectedDisplays.assertInLegacyMode()
- OngoingActivityChipModel.ChipIcon.StatusBarView(this.statusBarChipIconView)
+ OngoingActivityChipModel.ChipIcon.StatusBarView(
+ this.statusBarChipIconView,
+ contentDescription,
+ )
} else {
StatusBarConnectedDisplays.assertInNewMode()
- OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon(this.key)
+ OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon(
+ this.key,
+ contentDescription,
+ )
}
val colors = this.promotedContent.toCustomColorsModel()
@@ -79,6 +91,7 @@ constructor(
// The notification pipeline needs everything to run on the main thread, so keep
// this event on the main thread.
applicationScope.launch {
+ // TODO(b/364653005): Move accessibility focus to the HUN when chip is tapped.
notifChipsInteractor.onPromotedNotificationChipTapped(this@toActivityChipModel.key)
}
}
@@ -100,7 +113,8 @@ constructor(
if (isShowingHeadsUpFromChipTap) {
// If the user tapped this chip to show the HUN, we want to just show the icon because
// the HUN will show the rest of the information.
- return OngoingActivityChipModel.Shown.IconOnly(
+ return OngoingActivityChipModel.Active.IconOnly(
+ this.key,
icon,
colors,
onClickListenerLegacy,
@@ -109,7 +123,8 @@ constructor(
}
if (this.promotedContent.shortCriticalText != null) {
- return OngoingActivityChipModel.Shown.Text(
+ return OngoingActivityChipModel.Active.Text(
+ this.key,
icon,
colors,
this.promotedContent.shortCriticalText,
@@ -126,7 +141,8 @@ constructor(
// notification will likely just be set to the current time, which would cause the chip
// to always show "now". We don't want early testers to get that experience since it's
// not what will happen at launch, so just don't show any time.
- return OngoingActivityChipModel.Shown.IconOnly(
+ return OngoingActivityChipModel.Active.IconOnly(
+ this.key,
icon,
colors,
onClickListenerLegacy,
@@ -135,7 +151,8 @@ constructor(
}
if (this.promotedContent.time == null) {
- return OngoingActivityChipModel.Shown.IconOnly(
+ return OngoingActivityChipModel.Active.IconOnly(
+ this.key,
icon,
colors,
onClickListenerLegacy,
@@ -144,7 +161,8 @@ constructor(
}
when (this.promotedContent.time.mode) {
PromotedNotificationContentModel.When.Mode.BasicTime -> {
- return OngoingActivityChipModel.Shown.ShortTimeDelta(
+ return OngoingActivityChipModel.Active.ShortTimeDelta(
+ this.key,
icon,
colors,
time = this.promotedContent.time.time,
@@ -153,7 +171,8 @@ constructor(
)
}
PromotedNotificationContentModel.When.Mode.CountUp -> {
- return OngoingActivityChipModel.Shown.Timer(
+ return OngoingActivityChipModel.Active.Timer(
+ this.key,
icon,
colors,
startTimeMs = this.promotedContent.time.time,
@@ -163,7 +182,8 @@ constructor(
}
PromotedNotificationContentModel.When.Mode.CountDown -> {
// TODO(b/364653005): Support CountDown.
- return OngoingActivityChipModel.Shown.Timer(
+ return OngoingActivityChipModel.Active.Timer(
+ this.key,
icon,
colors,
startTimeMs = this.promotedContent.time.time,
@@ -173,4 +193,16 @@ constructor(
}
}
}
+
+ private fun getContentDescription(appName: String): ContentDescription {
+ val ongoingDescription =
+ context.getString(R.string.ongoing_notification_extra_content_description)
+ return ContentDescription.Loaded(
+ context.getString(
+ R.string.accessibility_desc_notification_icon,
+ appName,
+ ongoingDescription,
+ )
+ )
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/screenrecord/ui/view/EndScreenRecordingDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/screenrecord/ui/view/EndScreenRecordingDialogDelegate.kt
index 72656ca1934c..4e0117ea3709 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/screenrecord/ui/view/EndScreenRecordingDialogDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/screenrecord/ui/view/EndScreenRecordingDialogDelegate.kt
@@ -19,6 +19,7 @@ package com.android.systemui.statusbar.chips.screenrecord.ui.view
import android.app.ActivityManager
import android.content.Context
import android.os.Bundle
+import android.view.View
import com.android.systemui.res.R
import com.android.systemui.statusbar.chips.mediaprojection.ui.view.EndMediaProjectionDialogHelper
import com.android.systemui.statusbar.chips.screenrecord.ui.viewmodel.ScreenRecordChipViewModel
@@ -56,6 +57,11 @@ class EndScreenRecordingDialogDelegate(
R.string.screenrecord_stop_dialog_button,
endMediaProjectionDialogHelper.wrapStopAction(stopAction),
)
+ if (com.android.media.projection.flags.Flags.showStopDialogPostCallEnd()) {
+ window
+ ?.decorView
+ ?.setAccessibilityDataSensitive(View.ACCESSIBILITY_DATA_SENSITIVE_YES)
+ }
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModel.kt
index 7f2327a742e2..55c89a96422f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModel.kt
@@ -19,6 +19,7 @@ package com.android.systemui.statusbar.chips.screenrecord.ui.viewmodel
import android.app.ActivityManager
import android.content.Context
import androidx.annotation.DrawableRes
+import androidx.annotation.VisibleForTesting
import com.android.internal.jank.Cuj
import com.android.systemui.animation.DialogCuj
import com.android.systemui.animation.DialogTransitionAnimator
@@ -72,15 +73,17 @@ constructor(
interactor.screenRecordState
.map { state ->
when (state) {
- is ScreenRecordChipModel.DoingNothing -> OngoingActivityChipModel.Hidden()
+ is ScreenRecordChipModel.DoingNothing -> OngoingActivityChipModel.Inactive()
is ScreenRecordChipModel.Starting -> {
- OngoingActivityChipModel.Shown.Countdown(
+ OngoingActivityChipModel.Active.Countdown(
+ key = KEY,
colors = ColorsModel.Red,
secondsUntilStarted = state.millisUntilStarted.toCountdownSeconds(),
)
}
is ScreenRecordChipModel.Recording -> {
- OngoingActivityChipModel.Shown.Timer(
+ OngoingActivityChipModel.Active.Timer(
+ key = KEY,
icon =
OngoingActivityChipModel.ChipIcon.SingleColorIcon(
Icon.Resource(
@@ -115,7 +118,7 @@ constructor(
}
}
// See b/347726238 for [SharingStarted.Lazily] reasoning.
- .stateIn(scope, SharingStarted.Lazily, OngoingActivityChipModel.Hidden())
+ .stateIn(scope, SharingStarted.Lazily, OngoingActivityChipModel.Inactive())
/**
* The screen record chip to show that also ensures that the start time doesn't change once we
@@ -124,11 +127,11 @@ constructor(
*/
private val chipWithConsistentTimer: StateFlow<OngoingActivityChipModel> =
simpleChip
- .pairwise(initialValue = OngoingActivityChipModel.Hidden())
+ .pairwise(initialValue = OngoingActivityChipModel.Inactive())
.map { (old, new) ->
if (
- old is OngoingActivityChipModel.Shown.Timer &&
- new is OngoingActivityChipModel.Shown.Timer
+ old is OngoingActivityChipModel.Active.Timer &&
+ new is OngoingActivityChipModel.Active.Timer
) {
new.copy(startTimeMs = old.startTimeMs)
} else {
@@ -136,7 +139,7 @@ constructor(
}
}
// See b/347726238 for [SharingStarted.Lazily] reasoning.
- .stateIn(scope, SharingStarted.Lazily, OngoingActivityChipModel.Hidden())
+ .stateIn(scope, SharingStarted.Lazily, OngoingActivityChipModel.Inactive())
private val chipTransitionHelper = ChipTransitionHelper(scope)
@@ -162,6 +165,7 @@ constructor(
}
companion object {
+ @VisibleForTesting const val KEY = "ScreenRecord"
@DrawableRes val ICON = R.drawable.ic_screenrecord
private val DIALOG_CUJ =
DialogCuj(Cuj.CUJ_STATUS_BAR_LAUNCH_DIALOG_FROM_CHIP, tag = "Screen record")
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndGenericShareToAppDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndGenericShareToAppDialogDelegate.kt
index 8ec05677107e..b8db6136e4c4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndGenericShareToAppDialogDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndGenericShareToAppDialogDelegate.kt
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.chips.sharetoapp.ui.view
import android.content.Context
import android.os.Bundle
+import android.view.View
import com.android.systemui.res.R
import com.android.systemui.statusbar.chips.mediaprojection.ui.view.EndMediaProjectionDialogHelper
import com.android.systemui.statusbar.chips.sharetoapp.ui.viewmodel.ShareToAppChipViewModel.Companion.SHARE_TO_APP_ICON
@@ -49,6 +50,11 @@ class EndGenericShareToAppDialogDelegate(
R.string.share_to_app_stop_dialog_button,
endMediaProjectionDialogHelper.wrapStopAction(stopAction),
)
+ if (com.android.media.projection.flags.Flags.showStopDialogPostCallEnd()) {
+ window
+ ?.decorView
+ ?.setAccessibilityDataSensitive(View.ACCESSIBILITY_DATA_SENSITIVE_YES)
+ }
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndShareScreenToAppDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndShareScreenToAppDialogDelegate.kt
index 053016e3109d..11a15555aef1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndShareScreenToAppDialogDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndShareScreenToAppDialogDelegate.kt
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.chips.sharetoapp.ui.view
import android.content.Context
import android.os.Bundle
+import android.view.View
import com.android.systemui.mediaprojection.data.model.MediaProjectionState
import com.android.systemui.res.R
import com.android.systemui.statusbar.chips.mediaprojection.domain.model.ProjectionChipModel
@@ -48,6 +49,11 @@ class EndShareScreenToAppDialogDelegate(
R.string.share_to_app_stop_dialog_button,
endMediaProjectionDialogHelper.wrapStopAction(stopAction),
)
+ if (com.android.media.projection.flags.Flags.showStopDialogPostCallEnd()) {
+ window
+ ?.decorView
+ ?.setAccessibilityDataSensitive(View.ACCESSIBILITY_DATA_SENSITIVE_YES)
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModel.kt
index 6654d4a8f104..92e17bdd511a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModel.kt
@@ -18,7 +18,9 @@ package com.android.systemui.statusbar.chips.sharetoapp.ui.viewmodel
import android.content.Context
import androidx.annotation.DrawableRes
+import androidx.annotation.VisibleForTesting
import com.android.internal.jank.Cuj
+import com.android.systemui.CoreStartable
import com.android.systemui.animation.DialogCuj
import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.common.shared.model.ContentDescription
@@ -31,6 +33,7 @@ import com.android.systemui.res.R
import com.android.systemui.statusbar.chips.StatusBarChipLogTags.pad
import com.android.systemui.statusbar.chips.StatusBarChipsLog
import com.android.systemui.statusbar.chips.mediaprojection.domain.interactor.MediaProjectionChipInteractor
+import com.android.systemui.statusbar.chips.mediaprojection.domain.model.MediaProjectionStopDialogModel
import com.android.systemui.statusbar.chips.mediaprojection.domain.model.ProjectionChipModel
import com.android.systemui.statusbar.chips.mediaprojection.ui.view.EndMediaProjectionDialogHelper
import com.android.systemui.statusbar.chips.sharetoapp.ui.view.EndGenericShareToAppDialogDelegate
@@ -41,13 +44,18 @@ import com.android.systemui.statusbar.chips.ui.viewmodel.ChipTransitionHelper
import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipViewModel
import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipViewModel.Companion.createDialogLaunchOnClickCallback
import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipViewModel.Companion.createDialogLaunchOnClickListener
+import com.android.systemui.util.kotlin.sample
import com.android.systemui.util.time.SystemClock
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.asStateFlow
+import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn
+import kotlinx.coroutines.launch
/**
* View model for the share-to-app chip, shown when sharing your phone screen content to another app
@@ -64,12 +72,64 @@ constructor(
private val endMediaProjectionDialogHelper: EndMediaProjectionDialogHelper,
private val dialogTransitionAnimator: DialogTransitionAnimator,
@StatusBarChipsLog private val logger: LogBuffer,
-) : OngoingActivityChipViewModel {
+) : OngoingActivityChipViewModel, CoreStartable {
+
+ private val _stopDialogToShow: MutableStateFlow<MediaProjectionStopDialogModel> =
+ MutableStateFlow(MediaProjectionStopDialogModel.Hidden)
+
+ /**
+ * Represents the current state of the media projection stop dialog. Emits
+ * [MediaProjectionStopDialogModel.Shown] when the dialog should be displayed, and
+ * [MediaProjectionStopDialogModel.Hidden] when it is dismissed.
+ */
+ val stopDialogToShow: StateFlow<MediaProjectionStopDialogModel> =
+ _stopDialogToShow.asStateFlow()
+
+ /**
+ * Emits a [MediaProjectionStopDialogModel] based on the current projection state when a
+ * projectionStartedDuringCallAndActivePostCallEvent event is emitted. If projecting, determines
+ * the appropriate dialog type to show. Otherwise, emits a hidden dialog state.
+ */
+ private val stopDialogDueToCallEndedState: StateFlow<MediaProjectionStopDialogModel> =
+ mediaProjectionChipInteractor.projectionStartedDuringCallAndActivePostCallEvent
+ .sample(mediaProjectionChipInteractor.projection) { _, currentProjection ->
+ when (currentProjection) {
+ is ProjectionChipModel.NotProjecting -> MediaProjectionStopDialogModel.Hidden
+ is ProjectionChipModel.Projecting -> {
+ when (currentProjection.receiver) {
+ ProjectionChipModel.Receiver.ShareToApp -> {
+ when (currentProjection.contentType) {
+ ProjectionChipModel.ContentType.Screen ->
+ createShareScreenToAppStopDialog(currentProjection)
+ ProjectionChipModel.ContentType.Audio ->
+ createGenericShareScreenToAppStopDialog()
+ }
+ }
+ ProjectionChipModel.Receiver.CastToOtherDevice ->
+ MediaProjectionStopDialogModel.Hidden
+ }
+ }
+ }
+ }
+ .stateIn(scope, SharingStarted.WhileSubscribed(), MediaProjectionStopDialogModel.Hidden)
+
+ /**
+ * Initializes background flow collector during SysUI startup for events determining the
+ * visibility of media projection stop dialogs.
+ */
+ override fun start() {
+ if (com.android.media.projection.flags.Flags.showStopDialogPostCallEnd()) {
+ scope.launch {
+ stopDialogDueToCallEndedState.collect { event -> _stopDialogToShow.value = event }
+ }
+ }
+ }
+
private val internalChip =
mediaProjectionChipInteractor.projection
.map { projectionModel ->
when (projectionModel) {
- is ProjectionChipModel.NotProjecting -> OngoingActivityChipModel.Hidden()
+ is ProjectionChipModel.NotProjecting -> OngoingActivityChipModel.Inactive()
is ProjectionChipModel.Projecting -> {
when (projectionModel.receiver) {
ProjectionChipModel.Receiver.ShareToApp -> {
@@ -81,18 +141,36 @@ constructor(
}
}
ProjectionChipModel.Receiver.CastToOtherDevice ->
- OngoingActivityChipModel.Hidden()
+ OngoingActivityChipModel.Inactive()
}
}
}
}
// See b/347726238 for [SharingStarted.Lazily] reasoning.
- .stateIn(scope, SharingStarted.Lazily, OngoingActivityChipModel.Hidden())
+ .stateIn(scope, SharingStarted.Lazily, OngoingActivityChipModel.Inactive())
private val chipTransitionHelper = ChipTransitionHelper(scope)
override val chip: StateFlow<OngoingActivityChipModel> =
- chipTransitionHelper.createChipFlow(internalChip)
+ combine(chipTransitionHelper.createChipFlow(internalChip), stopDialogToShow) {
+ currentChip,
+ stopDialog ->
+ if (
+ com.android.media.projection.flags.Flags.showStopDialogPostCallEnd() &&
+ stopDialog is MediaProjectionStopDialogModel.Shown
+ ) {
+ logger.log(
+ TAG,
+ LogLevel.INFO,
+ {},
+ { "Hiding the chip as stop dialog is being shown" },
+ )
+ OngoingActivityChipModel.Inactive()
+ } else {
+ currentChip
+ }
+ }
+ .stateIn(scope, SharingStarted.WhileSubscribed(), OngoingActivityChipModel.Inactive())
/**
* Notifies this class that the user just stopped a screen recording from the dialog that's
@@ -108,6 +186,12 @@ constructor(
chipTransitionHelper.onActivityStoppedFromDialog()
}
+ /** Called when the stop dialog is dismissed or cancelled. */
+ private fun onStopDialogDismissed() {
+ logger.log(TAG, LogLevel.INFO, {}, { "The media projection stop dialog was dismissed" })
+ _stopDialogToShow.value = MediaProjectionStopDialogModel.Hidden
+ }
+
/** Stops the currently active projection. */
private fun stopProjectingFromDialog() {
logger.log(TAG, LogLevel.INFO, {}, { "Stop sharing requested from dialog" })
@@ -115,10 +199,29 @@ constructor(
mediaProjectionChipInteractor.stopProjecting()
}
+ private fun createShareScreenToAppStopDialog(
+ projectionModel: ProjectionChipModel.Projecting
+ ): MediaProjectionStopDialogModel {
+ val dialogDelegate = createShareScreenToAppDialogDelegate(projectionModel)
+ return MediaProjectionStopDialogModel.Shown(
+ dialogDelegate,
+ onDismissAction = ::onStopDialogDismissed,
+ )
+ }
+
+ private fun createGenericShareScreenToAppStopDialog(): MediaProjectionStopDialogModel {
+ val dialogDelegate = createGenericShareToAppDialogDelegate()
+ return MediaProjectionStopDialogModel.Shown(
+ dialogDelegate,
+ onDismissAction = ::onStopDialogDismissed,
+ )
+ }
+
private fun createShareScreenToAppChip(
state: ProjectionChipModel.Projecting
- ): OngoingActivityChipModel.Shown {
- return OngoingActivityChipModel.Shown.Timer(
+ ): OngoingActivityChipModel.Active {
+ return OngoingActivityChipModel.Active.Timer(
+ key = KEY,
icon =
OngoingActivityChipModel.ChipIcon.SingleColorIcon(
Icon.Resource(
@@ -151,8 +254,9 @@ constructor(
)
}
- private fun createIconOnlyShareToAppChip(): OngoingActivityChipModel.Shown {
- return OngoingActivityChipModel.Shown.IconOnly(
+ private fun createIconOnlyShareToAppChip(): OngoingActivityChipModel.Active {
+ return OngoingActivityChipModel.Active.IconOnly(
+ key = KEY,
icon =
OngoingActivityChipModel.ChipIcon.SingleColorIcon(
Icon.Resource(
@@ -200,6 +304,7 @@ constructor(
)
companion object {
+ @VisibleForTesting const val KEY = "ShareToApp"
@DrawableRes val SHARE_TO_APP_ICON = R.drawable.ic_present_to_all
private val DIALOG_CUJ =
DialogCuj(Cuj.CUJ_STATUS_BAR_LAUNCH_DIALOG_FROM_CHIP, tag = "Share to app")
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/binder/OngoingActivityChipBinder.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/binder/OngoingActivityChipBinder.kt
index f5764d59e6ff..456cd121a540 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/binder/OngoingActivityChipBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/binder/OngoingActivityChipBinder.kt
@@ -26,6 +26,8 @@ import android.widget.FrameLayout
import android.widget.ImageView
import android.widget.TextView
import androidx.annotation.UiThread
+import com.android.systemui.common.shared.model.ContentDescription
+import com.android.systemui.common.ui.binder.ContentDescriptionViewBinder
import com.android.systemui.common.ui.binder.IconViewBinder
import com.android.systemui.res.R
import com.android.systemui.statusbar.StatusBarIconView
@@ -52,7 +54,7 @@ object OngoingActivityChipBinder {
val chipBackgroundView = viewBinding.backgroundView
when (chipModel) {
- is OngoingActivityChipModel.Shown -> {
+ is OngoingActivityChipModel.Active -> {
// Data
setChipIcon(chipModel, chipBackgroundView, chipDefaultIconView, iconViewStore)
setChipMainContent(chipModel, chipTextView, chipTimeView, chipShortTimeDeltaView)
@@ -77,7 +79,7 @@ object OngoingActivityChipBinder {
(chipBackgroundView.background as GradientDrawable).color =
chipModel.colors.background(chipContext)
}
- is OngoingActivityChipModel.Hidden -> {
+ is OngoingActivityChipModel.Inactive -> {
// The Chronometer should be stopped to prevent leaks -- see b/192243808 and
// [Chronometer.start].
chipTimeView.stop()
@@ -108,12 +110,12 @@ object OngoingActivityChipBinder {
primaryChipViewBinding: OngoingActivityChipViewBinding,
currentPrimaryChipViewModel: OngoingActivityChipModel,
) {
- if (currentPrimaryChipViewModel is OngoingActivityChipModel.Hidden) {
+ if (currentPrimaryChipViewModel is OngoingActivityChipModel.Inactive) {
return
}
resetChipMainContentWidthRestrictions(
primaryChipViewBinding,
- currentPrimaryChipViewModel as OngoingActivityChipModel.Shown,
+ currentPrimaryChipViewModel as OngoingActivityChipModel.Active,
)
}
@@ -127,27 +129,27 @@ object OngoingActivityChipBinder {
secondaryChipViewBinding: OngoingActivityChipViewBinding,
currentSecondaryChipModel: OngoingActivityChipModel,
) {
- if (currentSecondaryChipModel is OngoingActivityChipModel.Hidden) {
+ if (currentSecondaryChipModel is OngoingActivityChipModel.Inactive) {
return
}
secondaryChipViewBinding.rootView.resetWidthRestriction()
resetChipMainContentWidthRestrictions(
secondaryChipViewBinding,
- currentSecondaryChipModel as OngoingActivityChipModel.Shown,
+ currentSecondaryChipModel as OngoingActivityChipModel.Active,
)
}
private fun resetChipMainContentWidthRestrictions(
viewBinding: OngoingActivityChipViewBinding,
- model: OngoingActivityChipModel.Shown,
+ model: OngoingActivityChipModel.Active,
) {
when (model) {
- is OngoingActivityChipModel.Shown.Text -> viewBinding.textView.resetWidthRestriction()
- is OngoingActivityChipModel.Shown.Timer -> viewBinding.timeView.resetWidthRestriction()
- is OngoingActivityChipModel.Shown.ShortTimeDelta ->
+ is OngoingActivityChipModel.Active.Text -> viewBinding.textView.resetWidthRestriction()
+ is OngoingActivityChipModel.Active.Timer -> viewBinding.timeView.resetWidthRestriction()
+ is OngoingActivityChipModel.Active.ShortTimeDelta ->
viewBinding.shortTimeDeltaView.resetWidthRestriction()
- is OngoingActivityChipModel.Shown.IconOnly,
- is OngoingActivityChipModel.Shown.Countdown -> {}
+ is OngoingActivityChipModel.Active.IconOnly,
+ is OngoingActivityChipModel.Active.Countdown -> {}
}
}
@@ -165,7 +167,7 @@ object OngoingActivityChipBinder {
}
private fun setChipIcon(
- chipModel: OngoingActivityChipModel.Shown,
+ chipModel: OngoingActivityChipModel.Active,
backgroundView: ChipBackgroundContainer,
defaultIconView: ImageView,
iconViewStore: IconViewStore?,
@@ -187,7 +189,13 @@ object OngoingActivityChipBinder {
}
is OngoingActivityChipModel.ChipIcon.StatusBarView -> {
StatusBarConnectedDisplays.assertInLegacyMode()
- setStatusBarIconView(defaultIconView, icon.impl, iconTint, backgroundView)
+ setStatusBarIconView(
+ defaultIconView,
+ icon.impl,
+ icon.contentDescription,
+ iconTint,
+ backgroundView,
+ )
}
is OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon -> {
StatusBarConnectedDisplays.assertInNewMode()
@@ -196,7 +204,13 @@ object OngoingActivityChipBinder {
// This means that the notification key doesn't exist anymore.
return
}
- setStatusBarIconView(defaultIconView, iconView, iconTint, backgroundView)
+ setStatusBarIconView(
+ defaultIconView,
+ iconView,
+ icon.contentDescription,
+ iconTint,
+ backgroundView,
+ )
}
}
}
@@ -215,6 +229,7 @@ object OngoingActivityChipBinder {
private fun setStatusBarIconView(
defaultIconView: ImageView,
iconView: StatusBarIconView,
+ iconContentDescription: ContentDescription,
iconTint: Int,
backgroundView: ChipBackgroundContainer,
) {
@@ -224,9 +239,12 @@ object OngoingActivityChipBinder {
// 1. Set up the right visual params.
with(iconView) {
id = CUSTOM_ICON_VIEW_ID
- // TODO(b/354930838): For RON chips, use the app name for the content description.
- contentDescription =
- context.resources.getString(R.string.ongoing_call_content_description)
+ if (StatusBarNotifChips.isEnabled) {
+ ContentDescriptionViewBinder.bind(iconContentDescription, this)
+ } else {
+ contentDescription =
+ context.resources.getString(R.string.ongoing_call_content_description)
+ }
tintView(iconTint)
}
@@ -260,34 +278,34 @@ object OngoingActivityChipBinder {
}
private fun setChipMainContent(
- chipModel: OngoingActivityChipModel.Shown,
+ chipModel: OngoingActivityChipModel.Active,
chipTextView: TextView,
chipTimeView: ChipChronometer,
chipShortTimeDeltaView: DateTimeView,
) {
when (chipModel) {
- is OngoingActivityChipModel.Shown.Countdown -> {
+ is OngoingActivityChipModel.Active.Countdown -> {
chipTextView.text = chipModel.secondsUntilStarted.toString()
chipTextView.visibility = View.VISIBLE
chipTimeView.hide()
chipShortTimeDeltaView.visibility = View.GONE
}
- is OngoingActivityChipModel.Shown.Text -> {
+ is OngoingActivityChipModel.Active.Text -> {
chipTextView.text = chipModel.text
chipTextView.visibility = View.VISIBLE
chipTimeView.hide()
chipShortTimeDeltaView.visibility = View.GONE
}
- is OngoingActivityChipModel.Shown.Timer -> {
+ is OngoingActivityChipModel.Active.Timer -> {
ChipChronometerBinder.bind(chipModel.startTimeMs, chipTimeView)
chipTimeView.visibility = View.VISIBLE
chipTextView.visibility = View.GONE
chipShortTimeDeltaView.visibility = View.GONE
}
- is OngoingActivityChipModel.Shown.ShortTimeDelta -> {
+ is OngoingActivityChipModel.Active.ShortTimeDelta -> {
chipShortTimeDeltaView.setTime(chipModel.time)
chipShortTimeDeltaView.visibility = View.VISIBLE
chipShortTimeDeltaView.isShowRelativeTime = true
@@ -301,7 +319,7 @@ object OngoingActivityChipBinder {
chipTextView.visibility = View.GONE
chipTimeView.hide()
}
- is OngoingActivityChipModel.Shown.IconOnly -> {
+ is OngoingActivityChipModel.Active.IconOnly -> {
chipTextView.visibility = View.GONE
chipShortTimeDeltaView.visibility = View.GONE
chipTimeView.hide()
@@ -317,7 +335,7 @@ object OngoingActivityChipBinder {
}
private fun updateChipPadding(
- chipModel: OngoingActivityChipModel.Shown,
+ chipModel: OngoingActivityChipModel.Active,
backgroundView: View,
chipTextView: TextView,
chipTimeView: ChipChronometer,
@@ -407,19 +425,19 @@ object OngoingActivityChipBinder {
}
private fun setChipAccessibility(
- chipModel: OngoingActivityChipModel.Shown,
+ chipModel: OngoingActivityChipModel.Active,
chipView: View,
chipBackgroundView: View,
) {
when (chipModel) {
- is OngoingActivityChipModel.Shown.Countdown -> {
+ is OngoingActivityChipModel.Active.Countdown -> {
// Set as assertive so talkback will announce the countdown
chipView.accessibilityLiveRegion = View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE
}
- is OngoingActivityChipModel.Shown.Timer,
- is OngoingActivityChipModel.Shown.Text,
- is OngoingActivityChipModel.Shown.ShortTimeDelta,
- is OngoingActivityChipModel.Shown.IconOnly -> {
+ is OngoingActivityChipModel.Active.Timer,
+ is OngoingActivityChipModel.Active.Text,
+ is OngoingActivityChipModel.Active.ShortTimeDelta,
+ is OngoingActivityChipModel.Active.IconOnly -> {
chipView.accessibilityLiveRegion = View.ACCESSIBILITY_LIVE_REGION_NONE
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/ChipContent.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/ChipContent.kt
index 375e02989a3d..32de0fbfd870 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/ChipContent.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/ChipContent.kt
@@ -16,12 +16,20 @@
package com.android.systemui.statusbar.chips.ui.compose
-import androidx.compose.foundation.layout.padding
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.drawWithCache
+import androidx.compose.ui.graphics.BlendMode
+import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.CompositingStrategy
+import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.layout.Measurable
import androidx.compose.ui.layout.MeasureResult
import androidx.compose.ui.layout.MeasureScope
@@ -29,20 +37,26 @@ import androidx.compose.ui.node.LayoutModifierNode
import androidx.compose.ui.node.ModifierNodeElement
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.dimensionResource
+import androidx.compose.ui.text.rememberTextMeasurer
import androidx.compose.ui.unit.Constraints
+import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.constrain
import androidx.compose.ui.unit.dp
import com.android.systemui.res.R
import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
import com.android.systemui.statusbar.chips.ui.viewmodel.rememberChronometerState
+import kotlin.math.min
@Composable
-fun ChipContent(viewModel: OngoingActivityChipModel.Shown, modifier: Modifier = Modifier) {
+fun ChipContent(viewModel: OngoingActivityChipModel.Active, modifier: Modifier = Modifier) {
val context = LocalContext.current
val isTextOnly = viewModel.icon == null
val hasEmbeddedIcon =
viewModel.icon is OngoingActivityChipModel.ChipIcon.StatusBarView ||
viewModel.icon is OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon
+ val textStyle = MaterialTheme.typography.labelLarge
+ val textColor = Color(viewModel.colors.text(context))
+ val maxTextWidth = dimensionResource(id = R.dimen.ongoing_activity_chip_max_text_width)
val startPadding =
if (isTextOnly || hasEmbeddedIcon) {
0.dp
@@ -57,46 +71,77 @@ fun ChipContent(viewModel: OngoingActivityChipModel.Shown, modifier: Modifier =
} else {
0.dp
}
- val textStyle = MaterialTheme.typography.labelLarge
- val textColor = Color(viewModel.colors.text(context))
+ val textMeasurer = rememberTextMeasurer()
when (viewModel) {
- is OngoingActivityChipModel.Shown.Timer -> {
+ is OngoingActivityChipModel.Active.Timer -> {
val timerState = rememberChronometerState(startTimeMillis = viewModel.startTimeMs)
+ val text = timerState.currentTimeText
Text(
- text = timerState.currentTimeText,
+ text = text,
style = textStyle,
color = textColor,
+ softWrap = false,
modifier =
- modifier.padding(start = startPadding, end = endPadding).neverDecreaseWidth(),
+ modifier
+ .customTextContentLayout(
+ maxTextWidth = maxTextWidth,
+ startPadding = startPadding,
+ endPadding = endPadding,
+ ) { constraintWidth ->
+ val intrinsicWidth =
+ textMeasurer.measure(text, textStyle, softWrap = false).size.width
+ intrinsicWidth <= constraintWidth
+ }
+ .neverDecreaseWidth(),
)
}
- is OngoingActivityChipModel.Shown.Countdown -> {
- ChipText(
- text = viewModel.secondsUntilStarted.toString(),
+ is OngoingActivityChipModel.Active.Countdown -> {
+ val text = viewModel.secondsUntilStarted.toString()
+ Text(
+ text = text,
style = textStyle,
color = textColor,
- modifier =
- modifier.padding(start = startPadding, end = endPadding).neverDecreaseWidth(),
- backgroundColor = Color(viewModel.colors.background(context).defaultColor),
+ softWrap = false,
+ modifier = modifier.neverDecreaseWidth(),
)
}
- is OngoingActivityChipModel.Shown.Text -> {
- ChipText(
- text = viewModel.text,
- style = textStyle,
+ is OngoingActivityChipModel.Active.Text -> {
+ var hasOverflow by remember { mutableStateOf(false) }
+ val text = viewModel.text
+ Text(
+ text = text,
color = textColor,
- modifier = modifier.padding(start = startPadding, end = endPadding),
- backgroundColor = Color(viewModel.colors.background(context).defaultColor),
+ style = textStyle,
+ softWrap = false,
+ modifier =
+ modifier
+ .customTextContentLayout(
+ maxTextWidth = maxTextWidth,
+ startPadding = startPadding,
+ endPadding = endPadding,
+ ) { constraintWidth ->
+ val intrinsicWidth =
+ textMeasurer.measure(text, textStyle, softWrap = false).size.width
+ hasOverflow = intrinsicWidth > constraintWidth
+ constraintWidth.toFloat() / intrinsicWidth.toFloat() > 0.5f
+ }
+ .overflowFadeOut(
+ hasOverflow = { hasOverflow },
+ fadeLength =
+ dimensionResource(
+ id = R.dimen.ongoing_activity_chip_text_fading_edge_length
+ ),
+ ),
)
}
- is OngoingActivityChipModel.Shown.ShortTimeDelta -> {
+ is OngoingActivityChipModel.Active.ShortTimeDelta -> {
// TODO(b/372657935): Implement ShortTimeDelta content in compose.
}
- is OngoingActivityChipModel.Shown.IconOnly -> {
+ is OngoingActivityChipModel.Active.IconOnly -> {
throw IllegalStateException("ChipContent should only be used if the chip shows text")
}
}
@@ -104,10 +149,10 @@ fun ChipContent(viewModel: OngoingActivityChipModel.Shown, modifier: Modifier =
/** A modifier that ensures the width of the content only increases and never decreases. */
private fun Modifier.neverDecreaseWidth(): Modifier {
- return this.then(neverDecreaseWidthElement)
+ return this.then(NeverDecreaseWidthElement)
}
-private data object neverDecreaseWidthElement : ModifierNodeElement<NeverDecreaseWidthNode>() {
+private data object NeverDecreaseWidthElement : ModifierNodeElement<NeverDecreaseWidthNode>() {
override fun create(): NeverDecreaseWidthNode {
return NeverDecreaseWidthNode()
}
@@ -133,3 +178,83 @@ private class NeverDecreaseWidthNode : Modifier.Node(), LayoutModifierNode {
return layout(width, height) { placeable.place(0, 0) }
}
}
+
+/**
+ * A custom layout modifier for text that ensures its text is only visible if a provided
+ * [shouldShow] callback returns true. Imposes a provided [maxTextWidthPx]. Also, accounts for
+ * provided padding values if provided and ensures its text is placed with the provided padding
+ * included around it.
+ */
+private fun Modifier.customTextContentLayout(
+ maxTextWidth: Dp,
+ startPadding: Dp = 0.dp,
+ endPadding: Dp = 0.dp,
+ shouldShow: (constraintWidth: Int) -> Boolean,
+): Modifier {
+ return this.then(
+ CustomTextContentLayoutElement(maxTextWidth, startPadding, endPadding, shouldShow)
+ )
+}
+
+private data class CustomTextContentLayoutElement(
+ val maxTextWidth: Dp,
+ val startPadding: Dp,
+ val endPadding: Dp,
+ val shouldShow: (constrainedWidth: Int) -> Boolean,
+) : ModifierNodeElement<CustomTextContentLayoutNode>() {
+ override fun create(): CustomTextContentLayoutNode {
+ return CustomTextContentLayoutNode(maxTextWidth, startPadding, endPadding, shouldShow)
+ }
+
+ override fun update(node: CustomTextContentLayoutNode) {
+ node.shouldShow = shouldShow
+ node.maxTextWidth = maxTextWidth
+ node.startPadding = startPadding
+ node.endPadding = endPadding
+ }
+}
+
+private class CustomTextContentLayoutNode(
+ var maxTextWidth: Dp,
+ var startPadding: Dp,
+ var endPadding: Dp,
+ var shouldShow: (constrainedWidth: Int) -> Boolean,
+) : Modifier.Node(), LayoutModifierNode {
+ override fun MeasureScope.measure(
+ measurable: Measurable,
+ constraints: Constraints,
+ ): MeasureResult {
+ val horizontalPadding = startPadding + endPadding
+ val maxWidth =
+ min(maxTextWidth.roundToPx(), (constraints.maxWidth - horizontalPadding.roundToPx()))
+ .coerceAtLeast(constraints.minWidth)
+ val placeable = measurable.measure(constraints.copy(maxWidth = maxWidth))
+
+ val height = placeable.height
+ val width = placeable.width
+ return if (shouldShow(maxWidth)) {
+ layout(width + horizontalPadding.roundToPx(), height) {
+ placeable.place(startPadding.roundToPx(), 0)
+ }
+ } else {
+ layout(0, 0) {}
+ }
+ }
+}
+
+private fun Modifier.overflowFadeOut(hasOverflow: () -> Boolean, fadeLength: Dp): Modifier {
+ return graphicsLayer(compositingStrategy = CompositingStrategy.Offscreen).drawWithCache {
+ val width = size.width
+ val start = (width - fadeLength.toPx()).coerceAtLeast(0f)
+ val gradient =
+ Brush.horizontalGradient(
+ colors = listOf(Color.Black, Color.Transparent),
+ startX = start,
+ endX = width,
+ )
+ onDrawWithContent {
+ drawContent()
+ if (hasOverflow()) drawRect(brush = gradient, blendMode = BlendMode.DstIn)
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/ChipText.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/ChipText.kt
deleted file mode 100644
index 3d768d2d3e1e..000000000000
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/ChipText.kt
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.statusbar.chips.ui.compose
-
-import androidx.compose.foundation.layout.sizeIn
-import androidx.compose.material3.LocalTextStyle
-import androidx.compose.material3.Text
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.remember
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.draw.drawWithContent
-import androidx.compose.ui.geometry.Offset
-import androidx.compose.ui.geometry.Size
-import androidx.compose.ui.graphics.Brush
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.platform.LocalDensity
-import androidx.compose.ui.res.dimensionResource
-import androidx.compose.ui.text.TextLayoutResult
-import androidx.compose.ui.text.TextStyle
-import androidx.compose.ui.text.rememberTextMeasurer
-import com.android.systemui.res.R
-
-/**
- * Renders text within a status bar chip. The text is only displayed if more than 50% of its width
- * can fit inside the bounds of the chip. If there is any overflow,
- * [R.dimen.ongoing_activity_chip_text_fading_edge_length] is used to fade out the edge of the text.
- */
-@Composable
-fun ChipText(
- text: String,
- backgroundColor: Color,
- modifier: Modifier = Modifier,
- color: Color = Color.Unspecified,
- style: TextStyle = LocalTextStyle.current,
- minimumVisibleRatio: Float = 0.5f,
-) {
- val density = LocalDensity.current
- val textMeasurer = rememberTextMeasurer()
-
- val textFadeLength =
- dimensionResource(id = R.dimen.ongoing_activity_chip_text_fading_edge_length)
- val maxTextWidthDp = dimensionResource(id = R.dimen.ongoing_activity_chip_max_text_width)
- val maxTextWidthPx = with(density) { maxTextWidthDp.toPx() }
-
- val textLayoutResult = remember(text, style) { textMeasurer.measure(text, style) }
- val willOverflowWidth = textLayoutResult.size.width > maxTextWidthPx
-
- if (isSufficientlyVisible(maxTextWidthPx, minimumVisibleRatio, textLayoutResult)) {
- Text(
- text = text,
- style = style,
- softWrap = false,
- color = color,
- modifier =
- modifier
- .sizeIn(maxWidth = maxTextWidthDp)
- .then(
- if (willOverflowWidth) {
- Modifier.overflowFadeOut(
- with(density) { textFadeLength.roundToPx() },
- backgroundColor,
- )
- } else {
- Modifier
- }
- ),
- )
- }
-}
-
-private fun Modifier.overflowFadeOut(fadeLength: Int, color: Color): Modifier = drawWithContent {
- drawContent()
-
- val brush =
- Brush.horizontalGradient(
- colors = listOf(Color.Transparent, color),
- startX = size.width - fadeLength,
- endX = size.width,
- )
- drawRect(
- brush = brush,
- topLeft = Offset(size.width - fadeLength, 0f),
- size = Size(fadeLength.toFloat(), size.height),
- )
-}
-
-/**
- * Returns `true` if at least [minimumVisibleRatio] of the text width fits within the given
- * [maxAvailableWidthPx].
- */
-@Composable
-private fun isSufficientlyVisible(
- maxAvailableWidthPx: Float,
- minimumVisibleRatio: Float,
- textLayoutResult: TextLayoutResult,
-): Boolean {
- val widthPx = textLayoutResult.size.width
-
- return (maxAvailableWidthPx / widthPx) > minimumVisibleRatio
-}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/OngoingActivityChip.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/OngoingActivityChip.kt
index 647f3bd469f1..c4506fba6ad9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/OngoingActivityChip.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/OngoingActivityChip.kt
@@ -35,19 +35,24 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Shape
+import androidx.compose.ui.layout.layout
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.dimensionResource
+import androidx.compose.ui.semantics.contentDescription
+import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.dp
import androidx.compose.ui.viewinterop.AndroidView
import com.android.compose.animation.Expandable
+import com.android.compose.modifiers.thenIf
import com.android.systemui.animation.Expandable
import com.android.systemui.common.ui.compose.Icon
+import com.android.systemui.common.ui.compose.load
import com.android.systemui.res.R
import com.android.systemui.statusbar.chips.ui.model.ColorsModel
import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
@Composable
-fun OngoingActivityChip(model: OngoingActivityChipModel.Shown, modifier: Modifier = Modifier) {
+fun OngoingActivityChip(model: OngoingActivityChipModel.Active, modifier: Modifier = Modifier) {
when (val clickBehavior = model.clickBehavior) {
is OngoingActivityChipModel.ClickBehavior.ExpandAction -> {
// Wrap the chip in an Expandable so we can animate the expand transition.
@@ -74,19 +79,43 @@ fun OngoingActivityChip(model: OngoingActivityChipModel.Shown, modifier: Modifie
@Composable
private fun ChipBody(
- model: OngoingActivityChipModel.Shown,
+ model: OngoingActivityChipModel.Active,
modifier: Modifier = Modifier,
- onClick: () -> Unit = {},
+ onClick: (() -> Unit)? = null,
) {
val context = LocalContext.current
- val isClickable = onClick != {}
+ val isClickable = onClick != null
val hasEmbeddedIcon = model.icon is OngoingActivityChipModel.ChipIcon.StatusBarView
-
+ val contentDescription =
+ when (val icon = model.icon) {
+ is OngoingActivityChipModel.ChipIcon.StatusBarView -> icon.contentDescription.load()
+ is OngoingActivityChipModel.ChipIcon.StatusBarNotificationIcon ->
+ icon.contentDescription.load()
+ is OngoingActivityChipModel.ChipIcon.SingleColorIcon -> null
+ null -> null
+ }
+ val chipSidePadding = dimensionResource(id = R.dimen.ongoing_activity_chip_side_padding)
+ val minWidth =
+ if (isClickable) {
+ dimensionResource(id = R.dimen.min_clickable_item_size)
+ } else if (model.icon != null) {
+ dimensionResource(id = R.dimen.ongoing_activity_chip_icon_size) + chipSidePadding
+ } else {
+ dimensionResource(id = R.dimen.ongoing_activity_chip_min_text_width) + chipSidePadding
+ }
// Use a Box with `fillMaxHeight` to create a larger click surface for the chip. The visible
// height of the chip is determined by the height of the background of the Row below.
Box(
contentAlignment = Alignment.Center,
- modifier = modifier.fillMaxHeight().clickable(enabled = isClickable, onClick = onClick),
+ modifier =
+ modifier
+ .fillMaxHeight()
+ .clickable(enabled = isClickable, onClick = onClick ?: {})
+ .semantics {
+ if (contentDescription != null) {
+ this.contentDescription = contentDescription
+ }
+ },
) {
Row(
horizontalArrangement = Arrangement.Center,
@@ -98,14 +127,15 @@ private fun ChipBody(
)
)
.height(dimensionResource(R.dimen.ongoing_appops_chip_height))
- .widthIn(
- min =
- if (isClickable) {
- dimensionResource(id = R.dimen.min_clickable_item_size)
- } else {
- 0.dp
+ .thenIf(isClickable) { Modifier.widthIn(min = minWidth) }
+ .layout { measurable, constraints ->
+ val placeable = measurable.measure(constraints)
+ layout(placeable.width, placeable.height) {
+ if (constraints.maxWidth >= minWidth.roundToPx()) {
+ placeable.place(0, 0)
}
- )
+ }
+ }
.background(Color(model.colors.background(context).defaultColor))
.padding(
horizontal =
@@ -118,7 +148,7 @@ private fun ChipBody(
) {
model.icon?.let { ChipIcon(viewModel = it, colors = model.colors) }
- val isIconOnly = model is OngoingActivityChipModel.Shown.IconOnly
+ val isIconOnly = model is OngoingActivityChipModel.Active.IconOnly
if (!isIconOnly) {
ChipContent(viewModel = model)
}
@@ -136,6 +166,8 @@ private fun ChipIcon(
when (viewModel) {
is OngoingActivityChipModel.ChipIcon.StatusBarView -> {
+ // TODO(b/364653005): If the notification updates their small icon, ensure it's updated
+ // in the chip.
val originalIcon = viewModel.impl
val iconSizePx =
context.resources.getDimensionPixelSize(
@@ -148,6 +180,15 @@ private fun ChipIcon(
layoutParams = ViewGroup.LayoutParams(iconSizePx, iconSizePx)
imageTintList = ColorStateList.valueOf(colors.text(context))
}
+
+ // If needed, remove the icon from its old parent (views can only be attached
+ // to 1 parent at a time)
+ (originalIcon.parent as? ViewGroup)?.apply {
+ this.removeView(originalIcon)
+ this.removeTransientView(originalIcon)
+ }
+
+ originalIcon
},
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/OngoingActivityChips.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/OngoingActivityChips.kt
index 85ea087f531b..17539fea0240 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/OngoingActivityChips.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/compose/OngoingActivityChips.kt
@@ -21,6 +21,7 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.key
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
@@ -37,11 +38,13 @@ fun OngoingActivityChips(chips: MultipleOngoingActivityChipsModel, modifier: Mod
) {
// TODO(b/372657935): Make sure chips are only shown when there is enough horizontal
// space.
- if (chips.primary is OngoingActivityChipModel.Shown) {
- OngoingActivityChip(model = chips.primary)
+ if (chips.primary is OngoingActivityChipModel.Active) {
+ val chip = chips.primary
+ key(chip.key) { OngoingActivityChip(model = chip) }
}
- if (chips.secondary is OngoingActivityChipModel.Shown) {
- OngoingActivityChip(model = chips.secondary)
+ if (chips.secondary is OngoingActivityChipModel.Active) {
+ val chip = chips.secondary
+ key(chip.key) { OngoingActivityChip(model = chip) }
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/MultipleOngoingActivityChipsModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/MultipleOngoingActivityChipsModel.kt
index d2555b0fe4a9..3bdf04d0f87d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/MultipleOngoingActivityChipsModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/MultipleOngoingActivityChipsModel.kt
@@ -19,19 +19,19 @@ package com.android.systemui.statusbar.chips.ui.model
/** Models multiple active ongoing activity chips at once. */
data class MultipleOngoingActivityChipsModel(
/** The primary chip to show. This will *always* be shown. */
- val primary: OngoingActivityChipModel = OngoingActivityChipModel.Hidden(),
+ val primary: OngoingActivityChipModel = OngoingActivityChipModel.Inactive(),
/**
* The secondary chip to show. If there's not enough room in the status bar, this chip will
* *not* be shown.
*/
- val secondary: OngoingActivityChipModel = OngoingActivityChipModel.Hidden(),
+ val secondary: OngoingActivityChipModel = OngoingActivityChipModel.Inactive(),
) {
init {
if (
- primary is OngoingActivityChipModel.Hidden &&
- secondary is OngoingActivityChipModel.Shown
+ primary is OngoingActivityChipModel.Inactive &&
+ secondary is OngoingActivityChipModel.Active
) {
- throw IllegalArgumentException("`secondary` cannot be Shown if `primary` is Hidden")
+ throw IllegalArgumentException("`secondary` cannot be Active if `primary` is Inactive")
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/OngoingActivityChipModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/OngoingActivityChipModel.kt
index e0c764570132..ba42eb4f3387 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/OngoingActivityChipModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/OngoingActivityChipModel.kt
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.chips.ui.model
import android.view.View
import com.android.systemui.animation.Expandable
+import com.android.systemui.common.shared.model.ContentDescription
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.statusbar.StatusBarIconView
import com.android.systemui.statusbar.chips.notification.shared.StatusBarNotifChips
@@ -31,16 +32,20 @@ sealed class OngoingActivityChipModel {
/**
* This chip shouldn't be shown.
*
- * @property shouldAnimate true if the transition from [Shown] to [Hidden] should be animated,
- * and false if that transition should *not* be animated (i.e. the chip view should
+ * @property shouldAnimate true if the transition from [Active] to [Inactive] should be
+ * animated, and false if that transition should *not* be animated (i.e. the chip view should
* immediately disappear).
*/
- data class Hidden(val shouldAnimate: Boolean = true) : OngoingActivityChipModel() {
- override val logName = "Hidden(anim=$shouldAnimate)"
+ data class Inactive(val shouldAnimate: Boolean = true) : OngoingActivityChipModel() {
+ override val logName = "Inactive(anim=$shouldAnimate)"
}
/** This chip should be shown with the given information. */
- sealed class Shown(
+ sealed class Active(
+ /**
+ * A key that uniquely identifies this chip. Used for better visual effects, like animation.
+ */
+ open val key: String,
/** The icon to show on the chip. If null, no icon will be shown. */
open val icon: ChipIcon?,
/** What colors to use for the chip. */
@@ -56,16 +61,18 @@ sealed class OngoingActivityChipModel {
/** This chip shows only an icon and nothing else. */
data class IconOnly(
+ override val key: String,
override val icon: ChipIcon,
override val colors: ColorsModel,
override val onClickListenerLegacy: View.OnClickListener?,
override val clickBehavior: ClickBehavior,
- ) : Shown(icon, colors, onClickListenerLegacy, clickBehavior) {
- override val logName = "Shown.Icon"
+ ) : Active(key, icon, colors, onClickListenerLegacy, clickBehavior) {
+ override val logName = "Active.Icon"
}
/** The chip shows a timer, counting up from [startTimeMs]. */
data class Timer(
+ override val key: String,
override val icon: ChipIcon,
override val colors: ColorsModel,
/**
@@ -80,8 +87,8 @@ sealed class OngoingActivityChipModel {
val startTimeMs: Long,
override val onClickListenerLegacy: View.OnClickListener?,
override val clickBehavior: ClickBehavior,
- ) : Shown(icon, colors, onClickListenerLegacy, clickBehavior) {
- override val logName = "Shown.Timer"
+ ) : Active(key, icon, colors, onClickListenerLegacy, clickBehavior) {
+ override val logName = "Active.Timer"
}
/**
@@ -89,18 +96,19 @@ sealed class OngoingActivityChipModel {
* "1hr ago".
*/
data class ShortTimeDelta(
+ override val key: String,
override val icon: ChipIcon,
override val colors: ColorsModel,
/** The time of the event that this chip represents. */
val time: Long,
override val onClickListenerLegacy: View.OnClickListener?,
override val clickBehavior: ClickBehavior,
- ) : Shown(icon, colors, onClickListenerLegacy, clickBehavior) {
+ ) : Active(key, icon, colors, onClickListenerLegacy, clickBehavior) {
init {
StatusBarNotifChips.assertInNewMode()
}
- override val logName = "Shown.ShortTimeDelta"
+ override val logName = "Active.ShortTimeDelta"
}
/**
@@ -108,29 +116,32 @@ sealed class OngoingActivityChipModel {
* event is about to start. Typically, a [Countdown] chip will turn into a [Timer] chip.
*/
data class Countdown(
+ override val key: String,
override val colors: ColorsModel,
/** The number of seconds until an event is started. */
val secondsUntilStarted: Long,
) :
- Shown(
+ Active(
+ key,
icon = null,
colors,
onClickListenerLegacy = null,
clickBehavior = ClickBehavior.None,
) {
- override val logName = "Shown.Countdown"
+ override val logName = "Active.Countdown"
}
/** This chip shows the specified [text] in the chip. */
data class Text(
+ override val key: String,
override val icon: ChipIcon,
override val colors: ColorsModel,
// TODO(b/361346412): Enforce a max length requirement?
val text: String,
override val onClickListenerLegacy: View.OnClickListener? = null,
override val clickBehavior: ClickBehavior,
- ) : Shown(icon, colors, onClickListenerLegacy, clickBehavior) {
- override val logName = "Shown.Text"
+ ) : Active(key, icon, colors, onClickListenerLegacy, clickBehavior) {
+ override val logName = "Active.Text"
}
}
@@ -140,7 +151,10 @@ sealed class OngoingActivityChipModel {
* The icon is a custom icon, which is set on [impl]. The icon was likely created by an
* external app.
*/
- data class StatusBarView(val impl: StatusBarIconView) : ChipIcon {
+ data class StatusBarView(
+ val impl: StatusBarIconView,
+ val contentDescription: ContentDescription,
+ ) : ChipIcon {
init {
StatusBarConnectedDisplays.assertInLegacyMode()
}
@@ -150,7 +164,10 @@ sealed class OngoingActivityChipModel {
* The icon is a custom icon, which is set on a notification, and can be looked up using the
* provided [notificationKey]. The icon was likely created by an external app.
*/
- data class StatusBarNotificationIcon(val notificationKey: String) : ChipIcon {
+ data class StatusBarNotificationIcon(
+ val notificationKey: String,
+ val contentDescription: ContentDescription,
+ ) : ChipIcon {
init {
StatusBarConnectedDisplays.assertInNewMode()
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/ChipTransitionHelper.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/ChipTransitionHelper.kt
index 823b910ca13b..3b47a5e0f770 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/ChipTransitionHelper.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/ChipTransitionHelper.kt
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.chips.ui.viewmodel
import android.annotation.SuppressLint
+import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
import kotlinx.coroutines.CoroutineScope
@@ -28,7 +29,6 @@ import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.flow.transformLatest
-import com.android.app.tracing.coroutines.launchTraced as launch
/**
* A class that can help [OngoingActivityChipViewModel] instances with various transition states.
@@ -76,20 +76,19 @@ class ChipTransitionHelper(@Application private val scope: CoroutineScope) {
* (see [onActivityStoppedFromDialog]). In general, this flow just uses value in [chip].
*/
fun createChipFlow(chip: Flow<OngoingActivityChipModel>): StateFlow<OngoingActivityChipModel> {
- return combine(
- chip,
- wasActivityRecentlyStoppedFromDialog,
- ) { chipModel, activityRecentlyStopped ->
+ return combine(chip, wasActivityRecentlyStoppedFromDialog) {
+ chipModel,
+ activityRecentlyStopped ->
if (activityRecentlyStopped) {
// There's a bit of a delay between when the user stops an activity via
// SysUI and when the system services notify SysUI that the activity has
// indeed stopped. Prevent the chip from showing during this delay by
// immediately hiding it without any animation.
- OngoingActivityChipModel.Hidden(shouldAnimate = false)
+ OngoingActivityChipModel.Inactive(shouldAnimate = false)
} else {
chipModel
}
}
- .stateIn(scope, SharingStarted.WhileSubscribed(), OngoingActivityChipModel.Hidden())
+ .stateIn(scope, SharingStarted.WhileSubscribed(), OngoingActivityChipModel.Inactive())
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModel.kt
index baa9d8b8b794..e7dcb74a735f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModel.kt
@@ -16,8 +16,11 @@
package com.android.systemui.statusbar.chips.ui.viewmodel
+import android.content.res.Configuration
+import com.android.systemui.biometrics.domain.interactor.DisplayStateInteractor
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.log.LogBuffer
import com.android.systemui.log.core.LogLevel
import com.android.systemui.statusbar.chips.StatusBarChipLogTags.pad
@@ -30,6 +33,7 @@ import com.android.systemui.statusbar.chips.screenrecord.ui.viewmodel.ScreenReco
import com.android.systemui.statusbar.chips.sharetoapp.ui.viewmodel.ShareToAppChipViewModel
import com.android.systemui.statusbar.chips.ui.model.MultipleOngoingActivityChipsModel
import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
+import com.android.systemui.statusbar.phone.ongoingcall.StatusBarChipsModernization
import com.android.systemui.util.kotlin.pairwise
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
@@ -37,7 +41,9 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.combine
+import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.stateIn
/**
@@ -50,14 +56,36 @@ import kotlinx.coroutines.flow.stateIn
class OngoingActivityChipsViewModel
@Inject
constructor(
- @Application scope: CoroutineScope,
+ @Background scope: CoroutineScope,
screenRecordChipViewModel: ScreenRecordChipViewModel,
shareToAppChipViewModel: ShareToAppChipViewModel,
castToOtherDeviceChipViewModel: CastToOtherDeviceChipViewModel,
callChipViewModel: CallChipViewModel,
notifChipsViewModel: NotifChipsViewModel,
+ displayStateInteractor: DisplayStateInteractor,
+ configurationInteractor: ConfigurationInteractor,
@StatusBarChipsLog private val logger: LogBuffer,
) {
+ private val isLandscape: Flow<Boolean> =
+ configurationInteractor.configurationValues
+ .map { it.isLandscape }
+ .stateIn(scope, SharingStarted.WhileSubscribed(), false)
+
+ private val isScreenReasonablyLarge: Flow<Boolean> =
+ combine(isLandscape, displayStateInteractor.isLargeScreen) { isLandscape, isLargeScreen ->
+ isLandscape || isLargeScreen
+ }
+ .distinctUntilChanged()
+ .onEach {
+ logger.log(
+ TAG,
+ LogLevel.DEBUG,
+ { bool1 = it },
+ { "isScreenReasonablyLarge: $bool1" },
+ )
+ }
+ .stateIn(scope, SharingStarted.WhileSubscribed(), false)
+
private enum class ChipType {
ScreenRecord,
ShareToApp,
@@ -72,28 +100,28 @@ constructor(
* Represents that we've internally decided to show the chip with type [type] with the given
* [model] information.
*/
- data class Shown(val type: ChipType, val model: OngoingActivityChipModel.Shown) :
+ data class Active(val type: ChipType, val model: OngoingActivityChipModel.Active) :
InternalChipModel
/**
* Represents that all chip types would like to be hidden. Each value specifies *how* that
* chip type should get hidden.
*/
- data class Hidden(
- val screenRecord: OngoingActivityChipModel.Hidden,
- val shareToApp: OngoingActivityChipModel.Hidden,
- val castToOtherDevice: OngoingActivityChipModel.Hidden,
- val call: OngoingActivityChipModel.Hidden,
- val notifs: OngoingActivityChipModel.Hidden,
+ data class Inactive(
+ val screenRecord: OngoingActivityChipModel.Inactive,
+ val shareToApp: OngoingActivityChipModel.Inactive,
+ val castToOtherDevice: OngoingActivityChipModel.Inactive,
+ val call: OngoingActivityChipModel.Inactive,
+ val notifs: OngoingActivityChipModel.Inactive,
) : InternalChipModel
}
private data class ChipBundle(
- val screenRecord: OngoingActivityChipModel = OngoingActivityChipModel.Hidden(),
- val shareToApp: OngoingActivityChipModel = OngoingActivityChipModel.Hidden(),
- val castToOtherDevice: OngoingActivityChipModel = OngoingActivityChipModel.Hidden(),
- val call: OngoingActivityChipModel = OngoingActivityChipModel.Hidden(),
- val notifs: List<OngoingActivityChipModel.Shown> = emptyList(),
+ val screenRecord: OngoingActivityChipModel = OngoingActivityChipModel.Inactive(),
+ val shareToApp: OngoingActivityChipModel = OngoingActivityChipModel.Inactive(),
+ val castToOtherDevice: OngoingActivityChipModel = OngoingActivityChipModel.Inactive(),
+ val call: OngoingActivityChipModel = OngoingActivityChipModel.Inactive(),
+ val notifs: List<OngoingActivityChipModel.Active> = emptyList(),
)
/** Bundles all the incoming chips into one object to easily pass to various flows. */
@@ -151,9 +179,9 @@ constructor(
*/
val primaryChip: StateFlow<OngoingActivityChipModel> =
internalChip
- .pairwise(initialValue = DEFAULT_INTERNAL_HIDDEN_MODEL)
+ .pairwise(initialValue = DEFAULT_INTERNAL_INACTIVE_MODEL)
.map { (old, new) -> createOutputModel(old, new) }
- .stateIn(scope, SharingStarted.Lazily, OngoingActivityChipModel.Hidden())
+ .stateIn(scope, SharingStarted.Lazily, OngoingActivityChipModel.Inactive())
/**
* Equivalent to [MultipleOngoingActivityChipsModel] but using the internal models to do some
@@ -165,22 +193,73 @@ constructor(
)
private val internalChips: Flow<InternalMultipleOngoingActivityChipsModel> =
- incomingChipBundle.map { bundle ->
+ combine(incomingChipBundle, isScreenReasonablyLarge) { bundle, isScreenReasonablyLarge ->
// First: Find the most important chip.
val primaryChipResult = pickMostImportantChip(bundle)
- val primaryChip = primaryChipResult.mostImportantChip
- if (primaryChip is InternalChipModel.Hidden) {
- // If the primary chip is hidden, the secondary chip will also be hidden, so just
- // pass the same Hidden model for both.
- InternalMultipleOngoingActivityChipsModel(primaryChip, primaryChip)
- } else {
- // Then: Find the next most important chip.
- val secondaryChip =
- pickMostImportantChip(primaryChipResult.remainingChips).mostImportantChip
- InternalMultipleOngoingActivityChipsModel(primaryChip, secondaryChip)
+ when (val primaryChip = primaryChipResult.mostImportantChip) {
+ is InternalChipModel.Inactive -> {
+ // If the primary chip is hidden, the secondary chip will also be hidden, so
+ // just pass the same Hidden model for both.
+ InternalMultipleOngoingActivityChipsModel(primaryChip, primaryChip)
+ }
+ is InternalChipModel.Active -> {
+ // Otherwise: Find the next most important chip.
+ val secondaryChip =
+ pickMostImportantChip(primaryChipResult.remainingChips).mostImportantChip
+ if (
+ secondaryChip is InternalChipModel.Active &&
+ StatusBarNotifChips.isEnabled &&
+ !StatusBarChipsModernization.isEnabled &&
+ !isScreenReasonablyLarge
+ ) {
+ // If we have two showing chips and we don't have a ton of room
+ // (!isScreenReasonablyLarge), then we want to make both of them as small as
+ // possible so that we have the highest chance of showing both chips (as
+ // opposed to showing the primary chip with a lot of text and completely
+ // hiding the secondary chip).
+ // Also: If StatusBarChipsModernization is enabled, then we'll do the
+ // squishing in Compose instead.
+ InternalMultipleOngoingActivityChipsModel(
+ primaryChip.squish(),
+ secondaryChip.squish(),
+ )
+ } else {
+ InternalMultipleOngoingActivityChipsModel(primaryChip, secondaryChip)
+ }
+ }
}
}
+ /** Squishes the chip down to the smallest content possible. */
+ private fun InternalChipModel.Active.squish(): InternalChipModel.Active {
+ return when (model) {
+ // Icon-only is already maximum squished
+ is OngoingActivityChipModel.Active.IconOnly -> this
+ // Countdown shows just a single digit, so already maximum squished
+ is OngoingActivityChipModel.Active.Countdown -> this
+ // The other chips have icon+text, so we should hide the text
+ is OngoingActivityChipModel.Active.Timer,
+ is OngoingActivityChipModel.Active.ShortTimeDelta,
+ is OngoingActivityChipModel.Active.Text ->
+ InternalChipModel.Active(this.type, this.model.toIconOnly())
+ }
+ }
+
+ private fun OngoingActivityChipModel.Active.toIconOnly(): OngoingActivityChipModel.Active {
+ // If this chip doesn't have an icon, then it only has text and we should continue showing
+ // its text. (This is theoretically impossible because
+ // [OngoingActivityChipModel.Active.Countdown] is the only chip without an icon, but protect
+ // against it just in case.)
+ val currentIcon = icon ?: return this
+ return OngoingActivityChipModel.Active.IconOnly(
+ key,
+ currentIcon,
+ colors,
+ onClickListenerLegacy,
+ clickBehavior,
+ )
+ }
+
/**
* A flow modeling the primary chip that should be shown in the status bar after accounting for
* possibly multiple ongoing activities and animation requirements.
@@ -196,13 +275,13 @@ constructor(
.map {
MultipleOngoingActivityChipsModel(
primary = it,
- secondary = OngoingActivityChipModel.Hidden(),
+ secondary = OngoingActivityChipModel.Inactive(),
)
}
.stateIn(scope, SharingStarted.Lazily, MultipleOngoingActivityChipsModel())
} else {
internalChips
- .pairwise(initialValue = DEFAULT_MULTIPLE_INTERNAL_HIDDEN_MODEL)
+ .pairwise(initialValue = DEFAULT_MULTIPLE_INTERNAL_INACTIVE_MODEL)
.map { (old, new) ->
val correctPrimary = createOutputModel(old.primary, new.primary)
val correctSecondary = createOutputModel(old.secondary, new.secondary)
@@ -226,13 +305,13 @@ constructor(
private fun pickMostImportantChip(bundle: ChipBundle): MostImportantChipResult {
// This `when` statement shows the priority order of the chips.
return when {
- bundle.screenRecord is OngoingActivityChipModel.Shown ->
+ bundle.screenRecord is OngoingActivityChipModel.Active ->
MostImportantChipResult(
mostImportantChip =
- InternalChipModel.Shown(ChipType.ScreenRecord, bundle.screenRecord),
+ InternalChipModel.Active(ChipType.ScreenRecord, bundle.screenRecord),
remainingChips =
bundle.copy(
- screenRecord = OngoingActivityChipModel.Hidden(),
+ screenRecord = OngoingActivityChipModel.Inactive(),
// Screen recording also activates the media projection APIs, which
// means that whenever the screen recording chip is active, the
// share-to-app chip would also be active. (Screen recording is a
@@ -242,52 +321,52 @@ constructor(
// case. If we did have screen recording as the primary chip, we need to
// suppress the share-to-app chip to make sure they don't both show.
// See b/296461748.
- shareToApp = OngoingActivityChipModel.Hidden(),
+ shareToApp = OngoingActivityChipModel.Inactive(),
),
)
- bundle.shareToApp is OngoingActivityChipModel.Shown ->
+ bundle.shareToApp is OngoingActivityChipModel.Active ->
MostImportantChipResult(
mostImportantChip =
- InternalChipModel.Shown(ChipType.ShareToApp, bundle.shareToApp),
- remainingChips = bundle.copy(shareToApp = OngoingActivityChipModel.Hidden()),
+ InternalChipModel.Active(ChipType.ShareToApp, bundle.shareToApp),
+ remainingChips = bundle.copy(shareToApp = OngoingActivityChipModel.Inactive()),
)
- bundle.castToOtherDevice is OngoingActivityChipModel.Shown ->
+ bundle.castToOtherDevice is OngoingActivityChipModel.Active ->
MostImportantChipResult(
mostImportantChip =
- InternalChipModel.Shown(
+ InternalChipModel.Active(
ChipType.CastToOtherDevice,
bundle.castToOtherDevice,
),
remainingChips =
- bundle.copy(castToOtherDevice = OngoingActivityChipModel.Hidden()),
+ bundle.copy(castToOtherDevice = OngoingActivityChipModel.Inactive()),
)
- bundle.call is OngoingActivityChipModel.Shown ->
+ bundle.call is OngoingActivityChipModel.Active ->
MostImportantChipResult(
- mostImportantChip = InternalChipModel.Shown(ChipType.Call, bundle.call),
- remainingChips = bundle.copy(call = OngoingActivityChipModel.Hidden()),
+ mostImportantChip = InternalChipModel.Active(ChipType.Call, bundle.call),
+ remainingChips = bundle.copy(call = OngoingActivityChipModel.Inactive()),
)
bundle.notifs.isNotEmpty() ->
MostImportantChipResult(
mostImportantChip =
- InternalChipModel.Shown(ChipType.Notification, bundle.notifs.first()),
+ InternalChipModel.Active(ChipType.Notification, bundle.notifs.first()),
remainingChips =
bundle.copy(notifs = bundle.notifs.subList(1, bundle.notifs.size)),
)
else -> {
// We should only get here if all chip types are hidden
- check(bundle.screenRecord is OngoingActivityChipModel.Hidden)
- check(bundle.shareToApp is OngoingActivityChipModel.Hidden)
- check(bundle.castToOtherDevice is OngoingActivityChipModel.Hidden)
- check(bundle.call is OngoingActivityChipModel.Hidden)
+ check(bundle.screenRecord is OngoingActivityChipModel.Inactive)
+ check(bundle.shareToApp is OngoingActivityChipModel.Inactive)
+ check(bundle.castToOtherDevice is OngoingActivityChipModel.Inactive)
+ check(bundle.call is OngoingActivityChipModel.Inactive)
check(bundle.notifs.isEmpty())
MostImportantChipResult(
mostImportantChip =
- InternalChipModel.Hidden(
+ InternalChipModel.Inactive(
screenRecord = bundle.screenRecord,
shareToApp = bundle.shareToApp,
castToOtherDevice = bundle.castToOtherDevice,
call = bundle.call,
- notifs = OngoingActivityChipModel.Hidden(),
+ notifs = OngoingActivityChipModel.Inactive(),
),
// All the chips are already hidden, so no need to filter anything out of the
// bundle.
@@ -301,14 +380,14 @@ constructor(
old: InternalChipModel,
new: InternalChipModel,
): OngoingActivityChipModel {
- return if (old is InternalChipModel.Shown && new is InternalChipModel.Hidden) {
+ return if (old is InternalChipModel.Active && new is InternalChipModel.Inactive) {
// If we're transitioning from showing the chip to hiding the chip, different
// chips require different animation behaviors. For example, the screen share
// chips shouldn't animate if the user stopped the screen share from the dialog
// (see b/353249803#comment4), but the call chip should always animate.
//
- // This `when` block makes sure that when we're transitioning from Shown to
- // Hidden, we check what chip type was previously showing and we use that chip
+ // This `when` block makes sure that when we're transitioning from Active to
+ // Inactive, we check what chip type was previously showing and we use that chip
// type's hide animation behavior.
return when (old.type) {
ChipType.ScreenRecord -> new.screenRecord
@@ -317,32 +396,35 @@ constructor(
ChipType.Call -> new.call
ChipType.Notification -> new.notifs
}
- } else if (new is InternalChipModel.Shown) {
+ } else if (new is InternalChipModel.Active) {
// If we have a chip to show, always show it.
new.model
} else {
// In the Hidden -> Hidden transition, it shouldn't matter which hidden model we
// choose because no animation should happen regardless.
- OngoingActivityChipModel.Hidden()
+ OngoingActivityChipModel.Inactive()
}
}
+ private val Configuration.isLandscape: Boolean
+ get() = orientation == Configuration.ORIENTATION_LANDSCAPE
+
companion object {
private val TAG = "ChipsViewModel".pad()
- private val DEFAULT_INTERNAL_HIDDEN_MODEL =
- InternalChipModel.Hidden(
- screenRecord = OngoingActivityChipModel.Hidden(),
- shareToApp = OngoingActivityChipModel.Hidden(),
- castToOtherDevice = OngoingActivityChipModel.Hidden(),
- call = OngoingActivityChipModel.Hidden(),
- notifs = OngoingActivityChipModel.Hidden(),
+ private val DEFAULT_INTERNAL_INACTIVE_MODEL =
+ InternalChipModel.Inactive(
+ screenRecord = OngoingActivityChipModel.Inactive(),
+ shareToApp = OngoingActivityChipModel.Inactive(),
+ castToOtherDevice = OngoingActivityChipModel.Inactive(),
+ call = OngoingActivityChipModel.Inactive(),
+ notifs = OngoingActivityChipModel.Inactive(),
)
- private val DEFAULT_MULTIPLE_INTERNAL_HIDDEN_MODEL =
+ private val DEFAULT_MULTIPLE_INTERNAL_INACTIVE_MODEL =
InternalMultipleOngoingActivityChipsModel(
- primary = DEFAULT_INTERNAL_HIDDEN_MODEL,
- secondary = DEFAULT_INTERNAL_HIDDEN_MODEL,
+ primary = DEFAULT_INTERNAL_INACTIVE_MODEL,
+ secondary = DEFAULT_INTERNAL_INACTIVE_MODEL,
)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarStarter.kt b/packages/SystemUI/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarStarter.kt
index b057fb0433fe..eeb7a4066eca 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarStarter.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarStarter.kt
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.core
import android.view.Display
+import android.view.IWindowManager
import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.systemui.CoreStartable
import com.android.systemui.dagger.SysUISingleton
@@ -54,6 +55,7 @@ constructor(
private val autoHideControllerStore: AutoHideControllerStore,
private val privacyDotWindowControllerStore: PrivacyDotWindowControllerStore,
private val lightBarControllerStore: LightBarControllerStore,
+ private val windowManager: IWindowManager,
) : CoreStartable {
init {
@@ -68,7 +70,13 @@ constructor(
}
.onStart { emit(displayRepository.displays.value) }
.collect { newDisplays ->
- newDisplays.forEach { createAndStartComponentsForDisplay(it) }
+ newDisplays.forEach {
+ // TODO(b/393191204): Split navbar, status bar, etc. functionality
+ // from WindowManager#shouldShowSystemDecors.
+ if (windowManager.shouldShowSystemDecors(it.displayId)) {
+ createAndStartComponentsForDisplay(it)
+ }
+ }
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/dagger/CentralSurfacesDependenciesModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/dagger/CentralSurfacesDependenciesModule.java
index d327fc23fd06..434eb7d3d410 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/dagger/CentralSurfacesDependenciesModule.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/dagger/CentralSurfacesDependenciesModule.java
@@ -38,6 +38,7 @@ import com.android.systemui.power.domain.interactor.PowerInteractor;
import com.android.systemui.scene.shared.flag.SceneContainerFlag;
import com.android.systemui.settings.DisplayTracker;
import com.android.systemui.shade.NotificationPanelViewController;
+import com.android.systemui.shade.ShadeDisplayAware;
import com.android.systemui.shade.ShadeSurface;
import com.android.systemui.shade.ShadeSurfaceImpl;
import com.android.systemui.shade.carrier.ShadeCarrierGroupController;
@@ -92,7 +93,7 @@ public interface CentralSurfacesDependenciesModule {
@SysUISingleton
@Provides
static NotificationMediaManager provideNotificationMediaManager(
- Context context,
+ @ShadeDisplayAware Context context,
NotificationVisibilityProvider visibilityProvider,
NotifPipeline notifPipeline,
NotifCollection notifCollection,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarModule.kt b/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarModule.kt
index 351cdc8e7f36..b5a781ecdfb8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarModule.kt
@@ -24,6 +24,7 @@ import com.android.systemui.SysUICutoutProviderImpl
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.log.LogBuffer
import com.android.systemui.log.LogBufferFactory
+import com.android.systemui.statusbar.chips.sharetoapp.ui.viewmodel.ShareToAppChipViewModel
import com.android.systemui.statusbar.core.StatusBarConnectedDisplays
import com.android.systemui.statusbar.data.StatusBarDataLayerModule
import com.android.systemui.statusbar.data.repository.LightBarControllerStore
@@ -140,6 +141,20 @@ interface StatusBarModule {
@Provides
@SysUISingleton
@IntoMap
+ @ClassKey(ShareToAppChipViewModel::class)
+ fun providesShareToAppChipViewModel(
+ shareToAppChipViewModelLazy: Lazy<ShareToAppChipViewModel>
+ ): CoreStartable {
+ return if (com.android.media.projection.flags.Flags.showStopDialogPostCallEnd()) {
+ shareToAppChipViewModelLazy.get()
+ } else {
+ CoreStartable.NOP
+ }
+ }
+
+ @Provides
+ @SysUISingleton
+ @IntoMap
@ClassKey(MultiDisplayStatusBarWindowControllerStore::class)
fun multiDisplayControllerStoreAsCoreStartable(
storeLazy: Lazy<MultiDisplayStatusBarWindowControllerStore>
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/layout/StatusBarContentInsetsProvider.kt b/packages/SystemUI/src/com/android/systemui/statusbar/layout/StatusBarContentInsetsProvider.kt
index 7358c513eaff..9d5d87f6db7c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/layout/StatusBarContentInsetsProvider.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/layout/StatusBarContentInsetsProvider.kt
@@ -185,7 +185,7 @@ constructor(
override fun start() {
configurationController.addCallback(this)
- dumpManager.registerDumpable(dumpableName, this)
+ dumpManager.registerNormalDumpable(dumpableName, this)
commandRegistry.registerCommand(commandName) {
StatusBarInsetsCommand(
object : StatusBarInsetsCommand.Callback {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt
index 85cd50565f88..7b5f5f6d8060 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt
@@ -61,6 +61,7 @@ import com.android.systemui.plugins.clocks.WeatherData
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.res.R
import com.android.systemui.settings.UserTracker
+import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.shared.regionsampling.RegionSampler
import com.android.systemui.smartspace.dagger.SmartspaceModule.Companion.DATE_SMARTSPACE_DATA_PLUGIN
import com.android.systemui.smartspace.dagger.SmartspaceModule.Companion.WEATHER_SMARTSPACE_DATA_PLUGIN
@@ -88,7 +89,7 @@ import javax.inject.Named
class LockscreenSmartspaceController
@Inject
constructor(
- private val context: Context,
+ @ShadeDisplayAware private val context: Context,
private val featureFlags: FeatureFlags,
private val activityStarter: ActivityStarter,
private val falsingManager: FalsingManager,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/ConversationNotifications.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/ConversationNotifications.kt
index b6ef95893036..89cb42056e87 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/ConversationNotifications.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/ConversationNotifications.kt
@@ -20,10 +20,17 @@ import android.app.Notification
import android.app.Notification.EXTRA_SUMMARIZED_CONTENT
import android.content.Context
import android.content.pm.LauncherApps
+import android.graphics.Typeface
import android.graphics.drawable.AnimatedImageDrawable
import android.os.Handler
import android.service.notification.NotificationListenerService.Ranking
import android.service.notification.NotificationListenerService.RankingMap
+import android.text.SpannableString
+import android.text.Spanned
+import android.text.TextUtils
+import android.text.style.ImageSpan
+import android.text.style.StyleSpan
+import com.android.internal.R
import com.android.internal.widget.ConversationLayout
import com.android.internal.widget.MessagingImageMessage
import com.android.internal.widget.MessagingLayout
@@ -49,6 +56,7 @@ import javax.inject.Inject
class ConversationNotificationProcessor
@Inject
constructor(
+ @ShadeDisplayAware private val context: Context,
private val launcherApps: LauncherApps,
private val conversationNotificationManager: ConversationNotificationManager,
) {
@@ -67,9 +75,38 @@ constructor(
messagingStyle.shortcutIcon = launcherApps.getShortcutIcon(shortcutInfo)
shortcutInfo.label?.let { label -> messagingStyle.conversationTitle = label }
}
- if (NmSummarizationUiFlag.isEnabled) {
+ if (NmSummarizationUiFlag.isEnabled && !TextUtils.isEmpty(entry.ranking.summarization)) {
+ val icon = context.getDrawable(R.drawable.ic_notification_summarization)?.mutate()
+ val imageSpan =
+ icon?.let {
+ it.setBounds(
+ /* left= */ 0,
+ /* top= */ 0,
+ icon.getIntrinsicWidth(),
+ icon.getIntrinsicHeight(),
+ )
+ ImageSpan(it, ImageSpan.ALIGN_CENTER)
+ }
+ val decoratedSummary =
+ SpannableString("x" + entry.ranking.summarization).apply {
+ setSpan(
+ /* what = */ imageSpan,
+ /* start = */ 0,
+ /* end = */ 1,
+ /* flags = */ Spanned.SPAN_INCLUSIVE_EXCLUSIVE,
+ )
+ entry.ranking.summarization?.let {
+ setSpan(
+ /* what = */ StyleSpan(Typeface.BOLD),
+ /* start = */ 1,
+ /* end = */ it.length,
+ /* flags = */ Spanned.SPAN_EXCLUSIVE_INCLUSIVE,
+ )
+ }
+ }
entry.sbn.notification.extras.putCharSequence(
- EXTRA_SUMMARIZED_CONTENT, entry.ranking.summarization
+ EXTRA_SUMMARIZED_CONTENT,
+ decoratedSummary,
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/OWNERS b/packages/SystemUI/src/com/android/systemui/statusbar/notification/OWNERS
index 0a7f08d5860b..d06f24fdb81b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/OWNERS
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/OWNERS
@@ -6,7 +6,6 @@ jeffdq@google.com
juliacr@google.com
aioana@google.com
-aroederer@google.com
asc@google.com
iyz@google.com
juliatuttle@google.com
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
index 5cc79df9130a..09cc3f23032e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
@@ -812,11 +812,6 @@ public final class NotificationEntry extends ListEntry {
return !mSbn.isOngoing() || !isLocked;
}
- public boolean canViewBeDismissed() {
- if (row == null) return true;
- return row.canViewBeDismissed();
- }
-
@VisibleForTesting
boolean isExemptFromDndVisualSuppression() {
if (isNotificationBlockedByPolicy(mSbn.getNotification())) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java
index 3dbf0698dce9..e10825bc52fe 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java
@@ -32,6 +32,7 @@ import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Application;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.res.R;
+import com.android.systemui.shade.ShadeDisplayAware;
import com.android.systemui.statusbar.NotificationListener;
import com.android.systemui.statusbar.notification.NotificationActivityStarter;
import com.android.systemui.statusbar.notification.NotificationLaunchAnimatorControllerProvider;
@@ -168,7 +169,7 @@ public interface NotificationsModule {
@SysUISingleton
@Provides
static NotificationsController provideNotificationsController(
- Context context,
+ @ShadeDisplayAware Context context,
Provider<NotificationsControllerImpl> realController,
Provider<NotificationsControllerStub> stubController) {
if (context.getResources().getBoolean(R.bool.config_renderNotifications)) {
@@ -322,7 +323,7 @@ public interface NotificationsModule {
if (PromotedNotificationContentModel.featureFlagEnabled()) {
return implProvider.get();
} else {
- return (entry, recoveredBuilder) -> null;
+ return (entry, recoveredBuilder, imageModelProvider) -> null;
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationListInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationListInteractor.kt
index fd5973e0ab3b..bde3c4d8c632 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationListInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationListInteractor.kt
@@ -21,10 +21,12 @@ import android.app.Notification.CallStyle.CALL_TYPE_SCREENING
import android.app.Notification.CallStyle.CALL_TYPE_UNKNOWN
import android.app.Notification.EXTRA_CALL_TYPE
import android.app.PendingIntent
+import android.content.Context
import android.graphics.drawable.Icon
import android.service.notification.StatusBarNotification
import android.util.ArrayMap
import com.android.app.tracing.traceSection
+import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.statusbar.StatusBarIconView
import com.android.systemui.statusbar.notification.collection.GroupEntry
import com.android.systemui.statusbar.notification.collection.ListEntry
@@ -50,6 +52,7 @@ class RenderNotificationListInteractor
constructor(
private val repository: ActiveNotificationListRepository,
private val sectionStyleProvider: SectionStyleProvider,
+ @Main private val context: Context,
) {
/**
* Sets the current list of rendered notification entries as displayed in the notification list.
@@ -57,7 +60,7 @@ constructor(
fun setRenderedList(entries: List<ListEntry>) {
traceSection("RenderNotificationListInteractor.setRenderedList") {
repository.activeNotifications.update { existingModels ->
- buildActiveNotificationsStore(existingModels, sectionStyleProvider) {
+ buildActiveNotificationsStore(existingModels, sectionStyleProvider, context) {
entries.forEach(::addListEntry)
setRankingsMap(entries)
}
@@ -69,13 +72,17 @@ constructor(
private fun buildActiveNotificationsStore(
existingModels: ActiveNotificationsStore,
sectionStyleProvider: SectionStyleProvider,
+ context: Context,
block: ActiveNotificationsStoreBuilder.() -> Unit,
): ActiveNotificationsStore =
- ActiveNotificationsStoreBuilder(existingModels, sectionStyleProvider).apply(block).build()
+ ActiveNotificationsStoreBuilder(existingModels, sectionStyleProvider, context)
+ .apply(block)
+ .build()
private class ActiveNotificationsStoreBuilder(
private val existingModels: ActiveNotificationsStore,
private val sectionStyleProvider: SectionStyleProvider,
+ private val context: Context,
) {
private val builder = ActiveNotificationsStore.Builder()
@@ -154,6 +161,7 @@ private class ActiveNotificationsStoreBuilder(
statusBarChipIconView = icons.statusBarChipIcon,
uid = sbn.uid,
packageName = sbn.packageName,
+ appName = sbn.notification.loadHeaderAppName(context),
contentIntent = sbn.notification.contentIntent,
instanceId = sbn.instanceId?.id,
isGroupSummary = sbn.notification.isGroupSummary,
@@ -180,6 +188,7 @@ private fun ActiveNotificationsStore.createOrReuse(
statusBarChipIconView: StatusBarIconView?,
uid: Int,
packageName: String,
+ appName: String,
contentIntent: PendingIntent?,
instanceId: Int?,
isGroupSummary: Boolean,
@@ -206,6 +215,7 @@ private fun ActiveNotificationsStore.createOrReuse(
instanceId = instanceId,
isGroupSummary = isGroupSummary,
packageName = packageName,
+ appName = appName,
contentIntent = contentIntent,
bucket = bucket,
callType = callType,
@@ -230,6 +240,7 @@ private fun ActiveNotificationsStore.createOrReuse(
instanceId = instanceId,
isGroupSummary = isGroupSummary,
packageName = packageName,
+ appName = appName,
contentIntent = contentIntent,
bucket = bucket,
callType = callType,
@@ -253,6 +264,7 @@ private fun ActiveNotificationModel.isCurrent(
statusBarChipIconView: StatusBarIconView?,
uid: Int,
packageName: String,
+ appName: String,
contentIntent: PendingIntent?,
instanceId: Int?,
isGroupSummary: Boolean,
@@ -278,6 +290,7 @@ private fun ActiveNotificationModel.isCurrent(
instanceId != this.instanceId -> false
isGroupSummary != this.isGroupSummary -> false
packageName != this.packageName -> false
+ appName != this.appName -> false
contentIntent != this.contentIntent -> false
bucket != this.bucket -> false
callType != this.callType -> false
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/domain/interactor/SeenNotificationsInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/domain/interactor/SeenNotificationsInteractor.kt
index 1babe47559e5..53b79d871bc4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/domain/interactor/SeenNotificationsInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/domain/interactor/SeenNotificationsInteractor.kt
@@ -83,19 +83,28 @@ constructor(
printSection("SeenNotificationsInteractor") {
print(
"hasFilteredOutSeenNotifications",
- notificationListRepository.hasFilteredOutSeenNotifications.value
+ notificationListRepository.hasFilteredOutSeenNotifications.value,
)
print(
"topOngoingNotificationKey",
- notificationListRepository.topOngoingNotificationKey.value
+ notificationListRepository.topOngoingNotificationKey.value,
)
print(
"topUnseenNotificationKey",
- notificationListRepository.topUnseenNotificationKey.value
+ notificationListRepository.topUnseenNotificationKey.value,
)
}
}
+ /**
+ * There are three states for LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS.
+ *
+ * 0: unset_off, default value for phones.
+ *
+ * 1: on, default value for tablets.
+ *
+ * 2: off.
+ */
fun isLockScreenShowOnlyUnseenNotificationsEnabled(): Flow<Boolean> =
secureSettings
// emit whenever the setting has changed
@@ -109,7 +118,7 @@ constructor(
.map {
secureSettings.getIntForUser(
name = Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS,
- default = 0,
+ default = 0, // 0 is unset_off, which should be treated as off
userHandle = UserHandle.USER_CURRENT,
) == 1
}
@@ -124,10 +133,7 @@ constructor(
fun isLockScreenNotificationMinimalismEnabled(): Flow<Boolean> =
secureSettings
// emit whenever the setting has changed
- .observerFlow(
- UserHandle.USER_ALL,
- Settings.Secure.LOCK_SCREEN_NOTIFICATION_MINIMALISM,
- )
+ .observerFlow(UserHandle.USER_ALL, Settings.Secure.LOCK_SCREEN_NOTIFICATION_MINIMALISM)
// perform a query immediately
.onStart { emit(Unit) }
// for each change, lookup the new value
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/emptyshade/ui/view/EmptyShadeView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/emptyshade/ui/view/EmptyShadeView.java
index 73477da247f4..1af78e7d8d2d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/emptyshade/ui/view/EmptyShadeView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/emptyshade/ui/view/EmptyShadeView.java
@@ -25,6 +25,7 @@ import android.content.res.Configuration;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
+import android.util.Log;
import android.view.View;
import android.widget.TextView;
@@ -42,6 +43,7 @@ import kotlin.Unit;
import java.util.Objects;
public class EmptyShadeView extends StackScrollerDecorView implements LaunchableView {
+ private static final String TAG = "EmptyShadeView";
private TextView mEmptyText;
private TextView mEmptyFooterText;
@@ -55,7 +57,7 @@ public class EmptyShadeView extends StackScrollerDecorView implements Launchable
private @Visibility int mFooterVisibility = View.GONE;
private int mSize;
- private LaunchableViewDelegate mLaunchableViewDelegate = new LaunchableViewDelegate(this,
+ private final LaunchableViewDelegate mLaunchableViewDelegate = new LaunchableViewDelegate(this,
visibility -> {
super.setVisibility(visibility);
return Unit.INSTANCE;
@@ -179,8 +181,12 @@ public class EmptyShadeView extends StackScrollerDecorView implements Launchable
if (icon == 0) {
drawable = null;
} else {
- drawable = getResources().getDrawable(icon);
- drawable.setBounds(0, 0, mSize, mSize);
+ drawable = getContext().getDrawable(icon);
+ if (drawable != null) {
+ drawable.setBounds(0, 0, mSize, mSize);
+ } else {
+ Log.w(TAG, "Invalid footer icon resource ID");
+ }
}
mEmptyFooterText.setCompoundDrawablesRelative(drawable, null, null, null);
}
@@ -224,8 +230,7 @@ public class EmptyShadeView extends StackScrollerDecorView implements Launchable
@Override
public void applyToView(View view) {
super.applyToView(view);
- if (view instanceof EmptyShadeView) {
- EmptyShadeView emptyShadeView = (EmptyShadeView) view;
+ if (view instanceof EmptyShadeView emptyShadeView) {
boolean visible = this.clipTopAmount <= mEmptyText.getPaddingTop() * 0.6f;
emptyShadeView.setContentVisibleAnimated(visible && emptyShadeView.isVisible());
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/emptyshade/ui/viewmodel/EmptyShadeViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/emptyshade/ui/viewmodel/EmptyShadeViewModel.kt
index fa0cea15c43f..7e6c6050d0b4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/emptyshade/ui/viewmodel/EmptyShadeViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/emptyshade/ui/viewmodel/EmptyShadeViewModel.kt
@@ -23,6 +23,7 @@ import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dump.DumpManager
import com.android.systemui.modes.shared.ModesUi
import com.android.systemui.res.R
+import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.shared.notifications.domain.interactor.NotificationSettingsInteractor
import com.android.systemui.statusbar.notification.NotificationActivityStarter.SettingsIntent
import com.android.systemui.statusbar.notification.domain.interactor.SeenNotificationsInteractor
@@ -50,7 +51,7 @@ import kotlinx.coroutines.flow.onStart
class EmptyShadeViewModel
@AssistedInject
constructor(
- private val context: Context,
+ @ShadeDisplayAware private val context: Context,
zenModeInteractor: ZenModeInteractor,
seenNotificationsInteractor: SeenNotificationsInteractor,
notificationSettingsInteractor: NotificationSettingsInteractor,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/AvalancheController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/AvalancheController.kt
index 5c7c020a3bd9..de113d365bd8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/AvalancheController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/AvalancheController.kt
@@ -34,6 +34,9 @@ import javax.inject.Inject
* Control when heads up notifications show during an avalanche where notifications arrive in fast
* succession, by delaying visual listener side effects and removal handling from
* [HeadsUpManagerImpl].
+ *
+ * Dev note: disable suppression so avoid 2min period of no HUNs after every build
+ * Settings > Notifications > General > Notification cooldown
*/
@SysUISingleton
class AvalancheController
@@ -46,7 +49,7 @@ constructor(
) : Dumpable {
private val tag = "AvalancheController"
- private val debug = Compile.IS_DEBUG && Log.isLoggable(tag, Log.DEBUG)
+ private val debug = Compile.IS_DEBUG
var baseEntryMapStr: () -> String = { "baseEntryMapStr not initialized" }
var enableAtRuntime = true
@@ -85,10 +88,6 @@ constructor(
// Map of Runnable to label for debugging only
private val debugRunnableLabelMap: MutableMap<Runnable, String> = HashMap()
- // HeadsUpEntry we did not show at all because they are not the top priority hun in their batch
- // For debugging only
- @VisibleForTesting var debugDropSet: MutableSet<HeadsUpEntry> = HashSet()
-
enum class ThrottleEvent(private val id: Int) : UiEventLogger.UiEventEnum {
@UiEvent(doc = "HUN was shown.") AVALANCHE_THROTTLING_HUN_SHOWN(1821),
@UiEvent(doc = "HUN was dropped to show higher priority HUNs.")
@@ -232,9 +231,6 @@ constructor(
if (entry in nextList) nextList.remove(entry)
uiEventLogger.log(ThrottleEvent.AVALANCHE_THROTTLING_HUN_REMOVED)
outcome = "remove from next. ${getStateStr()}"
- } else if (entry in debugDropSet) {
- debugDropSet.remove(entry)
- outcome = "remove from dropset. ${getStateStr()}"
} else if (isShowing(entry)) {
previousHunKey = getKey(headsUpEntryShowing)
// Show the next HUN before removing this one, so that we don't tell listeners
@@ -246,7 +242,8 @@ constructor(
outcome = "remove showing. ${getStateStr()}"
} else {
runnable.run()
- outcome = "run runnable for untracked shown HUN. ${getStateStr()}"
+ outcome = "run runnable for untracked HUN " +
+ "(was dropped or shown when AC was disabled). ${getStateStr()}"
}
headsUpManagerLogger.logAvalancheDelete(caller, isEnabled(), getKey(entry), outcome)
}
@@ -398,9 +395,13 @@ constructor(
debugRunnableLabelMap.remove(r)
}
}
- debugDropSet.addAll(listToDrop)
+ val queue = ArrayList<String>()
+ for (entry in listToDrop) {
+ queue.add("[${getKey(entry)}]")
+ }
+ val dropList = java.lang.String.join("\n", queue)
+ headsUpManagerLogger.logDroppedHuns(dropList)
}
-
clearNext()
showNow(headsUpEntryShowing!!, headsUpEntryShowingRunnableList)
}
@@ -435,20 +436,10 @@ constructor(
"\n\tprevious: [$previousHunKey]" +
"\n\tnext list: $nextListStr" +
"\n\tnext map: $nextMapStr" +
- "\n\tdropped: $dropSetStr" +
"\nBHUM.mHeadsUpEntryMap: " +
baseEntryMapStr()
}
- private val dropSetStr: String
- get() {
- val queue = ArrayList<String>()
- for (entry in debugDropSet) {
- queue.add("[${getKey(entry)}]")
- }
- return java.lang.String.join("\n", queue)
- }
-
private val nextListStr: String
get() {
val queue = ArrayList<String>()
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerLogger.kt
index e3ca7c81582f..65fb9ca558d7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerLogger.kt
@@ -323,6 +323,10 @@ constructor(@NotificationHeadsUpLog private val buffer: LogBuffer) {
fun logRemoveEntryAfterExpand(entry: NotificationEntry) {
buffer.log(TAG, VERBOSE, { str1 = entry.logKey }, { "remove entry after expand: $str1" })
}
+
+ fun logDroppedHuns(entryList: String) {
+ buffer.log(TAG, VERBOSE, { str1 = entryList }, { "[AC] Drop HUNs: $str1" })
+ }
}
private const val TAG = "HeadsUpManager"
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/AvalancheProvider.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/AvalancheProvider.kt
index a8fd082dd1e1..4953e648be4f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/AvalancheProvider.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/AvalancheProvider.kt
@@ -33,7 +33,6 @@ class AvalancheProvider
@Inject
constructor(
private val broadcastDispatcher: BroadcastDispatcher,
- private val logger: VisualInterruptionDecisionLogger,
private val uiEventLogger: UiEventLogger,
) {
val TAG = "AvalancheProvider"
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/CommonVisualInterruptionSuppressors.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/CommonVisualInterruptionSuppressors.kt
index caa6ccf9a5fa..d237bbf3552d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/CommonVisualInterruptionSuppressors.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/CommonVisualInterruptionSuppressors.kt
@@ -280,7 +280,6 @@ class AvalancheSuppressor(
private val uiEventLogger: UiEventLogger,
private val context: Context,
private val notificationManager: NotificationManager,
- private val logger: VisualInterruptionDecisionLogger,
private val systemSettings: SystemSettings,
) : VisualInterruptionFilter(types = setOf(PEEK, PULSE), reason = "avalanche") {
val TAG = "AvalancheSuppressor"
@@ -358,18 +357,15 @@ class AvalancheSuppressor(
override fun shouldSuppress(entry: NotificationEntry): Boolean {
if (!isCooldownEnabled()) {
- logger.logAvalancheAllow("cooldown OFF")
return false
}
val timeSinceAvalancheMs = systemClock.currentTimeMillis() - avalancheProvider.startTime
val timedOut = timeSinceAvalancheMs >= avalancheProvider.timeoutMs
if (timedOut) {
- logger.logAvalancheAllow("timedOut! timeSinceAvalancheMs=$timeSinceAvalancheMs")
return false
}
val state = calculateState(entry)
if (state != State.SUPPRESS) {
- logger.logAvalancheAllow("state=$state")
return false
}
if (shouldShowEdu()) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionLogger.kt
index 38cab820c133..1f76d5db6e15 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionLogger.kt
@@ -94,15 +94,6 @@ constructor(@NotificationInterruptLog val buffer: LogBuffer) {
)
}
- fun logAvalancheAllow(info: String) {
- buffer.log(
- TAG,
- INFO,
- { str1 = info },
- { "AvalancheSuppressor: $str1" }
- )
- }
-
fun logCooldownSetting(isEnabled: Boolean) {
buffer.log(
TAG,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionProviderImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionProviderImpl.kt
index b831b9457acd..8240a0abaa9d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionProviderImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionProviderImpl.kt
@@ -196,7 +196,6 @@ constructor(
uiEventLogger,
context,
notificationManager,
- logger,
systemSettings,
)
)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/AODPromotedNotification.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/AODPromotedNotification.kt
index cb9bd4a3fd35..7c75983885ea 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/AODPromotedNotification.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/AODPromotedNotification.kt
@@ -17,6 +17,8 @@
package com.android.systemui.statusbar.notification.promoted
import android.app.Flags
+import android.app.Notification
+import android.graphics.PorterDuff
import android.view.LayoutInflater
import android.view.View
import android.view.View.GONE
@@ -27,8 +29,19 @@ import android.widget.DateTimeView
import android.widget.ImageView
import android.widget.ProgressBar
import android.widget.TextView
+import androidx.compose.foundation.BorderStroke
+import androidx.compose.foundation.border
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.PaddingValues
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.runtime.Composable
import androidx.compose.runtime.key
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.SolidColor
+import androidx.compose.ui.res.dimensionResource
+import androidx.compose.ui.unit.dp
import androidx.compose.ui.viewinterop.AndroidView
import androidx.core.view.isVisible
import com.android.app.tracing.traceSection
@@ -38,16 +51,25 @@ import com.android.internal.widget.CachingIconView
import com.android.internal.widget.ImageFloatingTextView
import com.android.internal.widget.NotificationExpandButton
import com.android.internal.widget.NotificationProgressBar
+import com.android.internal.widget.NotificationProgressModel
import com.android.internal.widget.NotificationRowIconView
import com.android.systemui.lifecycle.rememberViewModel
import com.android.systemui.res.R as systemuiR
+import com.android.systemui.statusbar.notification.promoted.AodPromotedNotificationColor.Background
+import com.android.systemui.statusbar.notification.promoted.AodPromotedNotificationColor.PrimaryText
+import com.android.systemui.statusbar.notification.promoted.AodPromotedNotificationColor.SecondaryText
import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel
import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel.Style
import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel.When
import com.android.systemui.statusbar.notification.promoted.ui.viewmodel.AODPromotedNotificationViewModel
+import com.android.systemui.statusbar.notification.row.shared.ImageModel
+import com.android.systemui.statusbar.notification.row.shared.isNullOrEmpty
@Composable
-fun AODPromotedNotification(viewModelFactory: AODPromotedNotificationViewModel.Factory) {
+fun AODPromotedNotification(
+ viewModelFactory: AODPromotedNotificationViewModel.Factory,
+ modifier: Modifier = Modifier,
+) {
if (!PromotedNotificationUiAod.isEnabled) {
return
}
@@ -55,33 +77,58 @@ fun AODPromotedNotification(viewModelFactory: AODPromotedNotificationViewModel.F
val viewModel = rememberViewModel(traceName = "$TAG.viewModel") { viewModelFactory.create() }
val content = viewModel.content ?: return
+ val audiblyAlertedIconVisible = viewModel.audiblyAlertedIconVisible
key(content.identity) {
val layoutResource = content.layoutResource ?: return
- AndroidView(
- factory = { context ->
+ val sidePaddings = dimensionResource(systemuiR.dimen.notification_side_paddings)
+ val sidePaddingValues = PaddingValues(horizontal = sidePaddings, vertical = 0.dp)
+
+ val borderStroke = BorderStroke(1.dp, SecondaryText.brush)
+
+ val borderRadius = dimensionResource(systemuiR.dimen.notification_corner_radius)
+ val borderShape = RoundedCornerShape(borderRadius)
+
+ Box(modifier = modifier.padding(sidePaddingValues)) {
+ AODPromotedNotificationView(
+ layoutResource = layoutResource,
+ content = content,
+ audiblyAlertedIconVisible = audiblyAlertedIconVisible,
+ modifier = Modifier.border(borderStroke, borderShape),
+ )
+ }
+ }
+}
+
+@Composable
+fun AODPromotedNotificationView(
+ layoutResource: Int,
+ content: PromotedNotificationContentModel,
+ audiblyAlertedIconVisible: Boolean,
+ modifier: Modifier = Modifier,
+) {
+ AndroidView(
+ factory = { context ->
+ val view =
traceSection("$TAG.inflate") {
- LayoutInflater.from(context).inflate(layoutResource, /* root= */ null)
- }
- .apply {
- setTag(
- viewUpdaterTagId,
- traceSection("$TAG.findViews") {
- AODPromotedNotificationViewUpdater(this)
- },
- )
- }
- },
- update = { view ->
- traceSection("$TAG.update") {
- (view.getTag(viewUpdaterTagId) as AODPromotedNotificationViewUpdater).update(
- content
- )
+ LayoutInflater.from(context).inflate(layoutResource, /* root= */ null)
}
- },
- )
- }
+
+ val updater =
+ traceSection("$TAG.findViews") { AODPromotedNotificationViewUpdater(view) }
+
+ view.setTag(viewUpdaterTagId, updater)
+
+ view
+ },
+ update = { view ->
+ val updater = view.getTag(viewUpdaterTagId) as AODPromotedNotificationViewUpdater
+
+ traceSection("$TAG.update") { updater.update(content, audiblyAlertedIconVisible) }
+ },
+ modifier = modifier,
+ )
}
private val PromotedNotificationContentModel.layoutResource: Int?
@@ -108,7 +155,7 @@ private val PromotedNotificationContentModel.layoutResource: Int?
}
private class AODPromotedNotificationViewUpdater(root: View) {
- private val alertedIcon: View? = root.findViewById(R.id.alerted_icon)
+ private val alertedIcon: ImageView? = root.findViewById(R.id.alerted_icon)
private val alternateExpandTarget: View? = root.findViewById(R.id.alternate_expand_target)
private val appNameDivider: View? = root.findViewById(R.id.app_name_divider)
private val appNameText: TextView? = root.findViewById(R.id.app_name_text)
@@ -117,6 +164,8 @@ private class AODPromotedNotificationViewUpdater(root: View) {
private var chronometerStub: ViewStub? = root.findViewById(R.id.chronometer)
private var chronometer: Chronometer? = null
private val closeButton: View? = root.findViewById(R.id.close_button)
+ private val conversationIconContainer: View? =
+ root.findViewById(R.id.conversation_icon_container)
private val conversationText: TextView? = root.findViewById(R.id.conversation_text)
private val expandButton: NotificationExpandButton? = root.findViewById(R.id.expand_button)
private val headerText: TextView? = root.findViewById(R.id.header_text)
@@ -126,6 +175,7 @@ private class AODPromotedNotificationViewUpdater(root: View) {
root.findViewById(R.id.header_text_secondary_divider)
private val icon: NotificationRowIconView? = root.findViewById(R.id.icon)
private val leftIcon: ImageView? = root.findViewById(R.id.left_icon)
+ private val rightIcon: ImageView? = root.findViewById(R.id.right_icon)
private val notificationProgressEndIcon: CachingIconView? =
root.findViewById(R.id.notification_progress_end_icon)
private val notificationProgressStartIcon: CachingIconView? =
@@ -139,80 +189,134 @@ private class AODPromotedNotificationViewUpdater(root: View) {
private val verificationIcon: ImageView? = root.findViewById(R.id.verification_icon)
private val verificationText: TextView? = root.findViewById(R.id.verification_text)
- private var oldProgressStub = root.findViewById<View>(R.id.progress) as? ViewStub
- private var oldProgress: ProgressBar? = null
- private val newProgress = root.findViewById<View>(R.id.progress) as? NotificationProgressBar
+ private var oldProgressBarStub = root.findViewById<View>(R.id.progress) as? ViewStub
+ private var oldProgressBar: ProgressBar? = null
+ private val newProgressBar = root.findViewById<View>(R.id.progress) as? NotificationProgressBar
- fun update(content: PromotedNotificationContentModel) {
+ init {
+ // Hide views that are never visible in the skeleton promoted notification.
+ alternateExpandTarget?.visibility = GONE
+ bigPicture?.visibility = GONE
+ closeButton?.visibility = GONE
+ conversationIconContainer?.visibility = GONE
+ expandButton?.visibility = GONE
+ leftIcon?.visibility = GONE
+ notificationProgressEndIcon?.visibility = GONE
+ notificationProgressStartIcon?.visibility = GONE
+
+ // Make one-time changes needed for the skeleton promoted notification.
+ alertedIcon
+ ?.drawable
+ ?.mutate()
+ ?.setColorFilter(SecondaryText.colorInt, PorterDuff.Mode.SRC_IN)
+ }
+
+ fun update(content: PromotedNotificationContentModel, audiblyAlertedIconVisible: Boolean) {
when (content.style) {
Style.Base -> updateBase(content)
- Style.BigPicture -> updateBigPicture(content)
- Style.BigText -> updateBigText(content)
- Style.Call -> updateCall(content)
- Style.Progress -> updateProgress(content)
+ Style.BigPicture -> updateBigPictureStyle(content)
+ Style.BigText -> updateBigTextStyle(content)
+ Style.Call -> updateCallStyle(content)
+ Style.Progress -> updateProgressStyle(content)
Style.Ineligible -> {}
}
+
+ alertedIcon?.isVisible = audiblyAlertedIconVisible
}
private fun updateBase(
content: PromotedNotificationContentModel,
textView: ImageFloatingTextView? = null,
+ showOldProgress: Boolean = true,
) {
- updateHeader(content)
+ // Icon binding must be called in this order
+ updateImageView(icon, content.smallIcon)
+ icon?.setBackgroundColor(Background.colorInt)
+ icon?.originalIconColor = PrimaryText.colorInt
+
+ updateHeader(content, hideTitle = true)
updateTitle(title, content)
updateText(textView ?: text, content)
+ updateImageView(rightIcon, content.skeletonLargeIcon)
+
+ if (showOldProgress) {
+ updateOldProgressBar(content)
+ }
}
- private fun updateBigPicture(content: PromotedNotificationContentModel) {
+ private fun updateBigPictureStyle(content: PromotedNotificationContentModel) {
updateBase(content)
-
- bigPicture?.visibility = GONE
}
- private fun updateBigText(content: PromotedNotificationContentModel) {
+ private fun updateBigTextStyle(content: PromotedNotificationContentModel) {
updateBase(content, textView = bigText)
}
- private fun updateCall(content: PromotedNotificationContentModel) {
+ private fun updateCallStyle(content: PromotedNotificationContentModel) {
updateConversationHeader(content)
updateText(text, content)
}
- private fun updateProgress(content: PromotedNotificationContentModel) {
- updateBase(content)
+ private fun updateProgressStyle(content: PromotedNotificationContentModel) {
+ updateBase(content, showOldProgress = false)
updateNewProgressBar(content)
}
+ private fun updateOldProgressBar(content: PromotedNotificationContentModel) {
+ if (
+ content.oldProgress == null ||
+ content.oldProgress.max == 0 ||
+ content.oldProgress.isIndeterminate
+ ) {
+ oldProgressBar?.visibility = GONE
+ return
+ }
+
+ inflateOldProgressBar()
+
+ val oldProgressBar = oldProgressBar ?: return
+
+ oldProgressBar.progress = content.oldProgress.progress
+ oldProgressBar.max = content.oldProgress.max
+ oldProgressBar.isIndeterminate = content.oldProgress.isIndeterminate
+ oldProgressBar.visibility = VISIBLE
+ }
+
private fun updateNewProgressBar(content: PromotedNotificationContentModel) {
- notificationProgressStartIcon?.visibility = GONE
- notificationProgressEndIcon?.visibility = GONE
- content.progress?.let {
- newProgress?.setProgressModel(it.toBundle())
- newProgress?.visibility = VISIBLE
- } ?: run { newProgress?.visibility = GONE }
+ val newProgressBar = newProgressBar ?: return
+
+ if (content.newProgress != null && !content.newProgress.isIndeterminate) {
+ newProgressBar.setProgressModel(content.newProgress.toSkeleton().toBundle())
+ newProgressBar.visibility = VISIBLE
+ } else {
+ newProgressBar.visibility = GONE
+ }
}
- private fun updateHeader(content: PromotedNotificationContentModel) {
+ private fun updateHeader(
+ content: PromotedNotificationContentModel,
+ hideTitle: Boolean = false,
+ ) {
updateAppName(content)
updateTextView(headerTextSecondary, content.subText)
- updateTitle(headerText, content)
+ if (!hideTitle) {
+ updateTitle(headerText, content)
+ }
updateTimeAndChronometer(content)
- updateHeaderDividers(content)
-
- leftIcon?.visibility = GONE
- alternateExpandTarget?.visibility = GONE
- expandButton?.visibility = GONE
- closeButton?.visibility = GONE
+ updateHeaderDividers(content, hideTitle = hideTitle)
}
- private fun updateHeaderDividers(content: PromotedNotificationContentModel) {
+ private fun updateHeaderDividers(
+ content: PromotedNotificationContentModel,
+ hideTitle: Boolean = false,
+ ) {
val hasAppName = content.appName != null && content.appName.isNotEmpty()
val hasSubText = content.subText != null && content.subText.isNotEmpty()
- val hasHeader = content.title != null && content.title.isNotEmpty()
+ val hasHeader = content.title != null && content.title.isNotEmpty() && !hideTitle
val hasTimeOrChronometer = content.time != null
val hasTextBeforeSubText = hasAppName
@@ -232,17 +336,21 @@ private class AODPromotedNotificationViewUpdater(root: View) {
updateTitle(conversationText, content)
updateAppName(content)
updateTimeAndChronometer(content)
+ updateConversationHeaderDividers(content, hideTitle = true)
- updateConversationHeaderDividers(content)
-
+ updateImageView(verificationIcon, content.verificationIcon)
updateTextView(verificationText, content.verificationText)
}
- private fun updateConversationHeaderDividers(content: PromotedNotificationContentModel) {
- val hasTitle = content.title != null
+ private fun updateConversationHeaderDividers(
+ content: PromotedNotificationContentModel,
+ hideTitle: Boolean = false,
+ ) {
+ val hasTitle = content.title != null && !hideTitle
val hasAppName = content.appName != null
val hasTimeOrChronometer = content.time != null
- val hasVerification = content.verificationIcon != null || content.verificationText != null
+ val hasVerification =
+ !content.verificationIcon.isNullOrEmpty() || !content.verificationText.isNullOrEmpty()
val hasTextBeforeAppName = hasTitle
val hasTextBeforeTime = hasTitle || hasAppName
@@ -262,12 +370,12 @@ private class AODPromotedNotificationViewUpdater(root: View) {
}
private fun updateTitle(titleView: TextView?, content: PromotedNotificationContentModel) {
- updateTextView(titleView, content.title, color = Color.PrimaryText)
+ updateTextView(titleView, content.title, color = PrimaryText)
}
private fun updateTimeAndChronometer(content: PromotedNotificationContentModel) {
- setTextViewColor(time, Color.SecondaryText)
- setTextViewColor(chronometer, Color.SecondaryText)
+ setTextViewColor(time, SecondaryText)
+ setTextViewColor(chronometer, SecondaryText)
val timeValue = content.time
@@ -298,6 +406,15 @@ private class AODPromotedNotificationViewUpdater(root: View) {
chronometerStub = null
}
+ private fun inflateOldProgressBar() {
+ if (oldProgressBar != null) {
+ return
+ }
+
+ oldProgressBar = oldProgressBarStub?.inflate() as ProgressBar
+ oldProgressBarStub = null
+ }
+
private fun updateText(
view: ImageFloatingTextView?,
content: PromotedNotificationContentModel,
@@ -309,28 +426,67 @@ private class AODPromotedNotificationViewUpdater(root: View) {
private fun updateTextView(
view: TextView?,
text: CharSequence?,
- color: Color = Color.SecondaryText,
+ color: AodPromotedNotificationColor = SecondaryText,
) {
+ if (view == null) return
setTextViewColor(view, color)
- if (text != null && text.isNotEmpty()) {
- view?.text = text
- view?.visibility = VISIBLE
- } else {
- view?.text = ""
- view?.visibility = GONE
- }
+ view.text = text?.toSkeleton() ?: ""
+ view.isVisible = !text.isNullOrEmpty()
+ }
+
+ private fun updateImageView(view: ImageView?, model: ImageModel?) {
+ if (view == null) return
+ val drawable = model?.drawable
+ view.setImageDrawable(drawable)
+ view.isVisible = drawable != null
}
- private fun setTextViewColor(view: TextView?, color: Color) {
- view?.setTextColor(color.color.toInt())
+ private fun setTextViewColor(view: TextView?, color: AodPromotedNotificationColor) {
+ view?.setTextColor(color.colorInt)
}
+}
- private enum class Color(val color: UInt) {
- Background(0x00000000u),
- PrimaryText(0xFFFFFFFFu),
- SecondaryText(0xFFCCCCCCu),
+private fun CharSequence.toSkeleton(): CharSequence {
+ return this.toString()
+}
+
+private fun NotificationProgressModel.toSkeleton(): NotificationProgressModel {
+ if (isIndeterminate) {
+ return NotificationProgressModel(/* indeterminateColor= */ SecondaryText.colorInt)
}
+
+ return NotificationProgressModel(
+ listOf(Notification.ProgressStyle.Segment(progressMax).toSkeleton()),
+ points.map { it.toSkeleton() }.toList(),
+ progress,
+ /* isStyledByProgress = */ true,
+ /* segmentsFallbackColor = */ SecondaryText.colorInt,
+ )
+}
+
+private fun Notification.ProgressStyle.Segment.toSkeleton(): Notification.ProgressStyle.Segment {
+ return Notification.ProgressStyle.Segment(length).also {
+ it.id = id
+ it.color = SecondaryText.colorInt
+ }
+}
+
+private fun Notification.ProgressStyle.Point.toSkeleton(): Notification.ProgressStyle.Point {
+ return Notification.ProgressStyle.Point(position).also {
+ it.id = id
+ it.color = SecondaryText.colorInt
+ }
+}
+
+private enum class AodPromotedNotificationColor(colorUInt: UInt) {
+ Background(0xFF000000u),
+ PrimaryText(0xFFFFFFFFu),
+ SecondaryText(0xFFCCCCCCu);
+
+ val colorInt = colorUInt.toInt()
+ val color = Color(colorInt)
+ val brush = SolidColor(color)
}
private val viewUpdaterTagId = systemuiR.id.aod_promoted_notification_view_updater_tag
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractor.kt
index 24d071c83a5e..cd7872291801 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractor.kt
@@ -21,11 +21,17 @@ import android.app.Notification.BigPictureStyle
import android.app.Notification.BigTextStyle
import android.app.Notification.CallStyle
import android.app.Notification.EXTRA_CHRONOMETER_COUNT_DOWN
+import android.app.Notification.EXTRA_PROGRESS
+import android.app.Notification.EXTRA_PROGRESS_INDETERMINATE
+import android.app.Notification.EXTRA_PROGRESS_MAX
import android.app.Notification.EXTRA_SUB_TEXT
import android.app.Notification.EXTRA_TEXT
import android.app.Notification.EXTRA_TITLE
+import android.app.Notification.EXTRA_VERIFICATION_ICON
+import android.app.Notification.EXTRA_VERIFICATION_TEXT
import android.app.Notification.ProgressStyle
import android.content.Context
+import android.graphics.drawable.Icon
import com.android.systemui.Flags
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.shade.ShadeDisplayAware
@@ -34,14 +40,21 @@ import com.android.systemui.statusbar.notification.promoted.AutomaticPromotionCo
import com.android.systemui.statusbar.notification.promoted.AutomaticPromotionCoordinator.Companion.EXTRA_WAS_AUTOMATICALLY_PROMOTED
import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel
import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel.Companion.isPromotedForStatusBarChip
+import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel.OldProgress
import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel.Style
import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel.When
+import com.android.systemui.statusbar.notification.row.shared.ImageModel
+import com.android.systemui.statusbar.notification.row.shared.ImageModelProvider
+import com.android.systemui.statusbar.notification.row.shared.ImageModelProvider.ImageSizeClass.MediumSquare
+import com.android.systemui.statusbar.notification.row.shared.ImageModelProvider.ImageSizeClass.SmallSquare
+import com.android.systemui.statusbar.notification.row.shared.SkeletonImageTransform
import javax.inject.Inject
interface PromotedNotificationContentExtractor {
fun extractContent(
entry: NotificationEntry,
recoveredBuilder: Notification.Builder,
+ imageModelProvider: ImageModelProvider,
): PromotedNotificationContentModel?
}
@@ -50,11 +63,13 @@ class PromotedNotificationContentExtractorImpl
@Inject
constructor(
@ShadeDisplayAware private val context: Context,
+ private val skeletonImageTransform: SkeletonImageTransform,
private val logger: PromotedNotificationLogger,
) : PromotedNotificationContentExtractor {
override fun extractContent(
entry: NotificationEntry,
recoveredBuilder: Notification.Builder,
+ imageModelProvider: ImageModelProvider,
): PromotedNotificationContentModel? {
if (!PromotedNotificationContentModel.featureFlagEnabled()) {
logger.logExtractionSkipped(entry, "feature flags disabled")
@@ -80,7 +95,7 @@ constructor(
contentBuilder.wasPromotedAutomatically =
notification.extras.getBoolean(EXTRA_WAS_AUTOMATICALLY_PROMOTED, false)
- contentBuilder.skeletonSmallIcon = entry.icons.aodIcon?.sourceIcon
+ contentBuilder.smallIcon = notification.smallIconModel(imageModelProvider)
contentBuilder.appName = notification.loadHeaderAppName(context)
contentBuilder.subText = notification.subText()
contentBuilder.time = notification.extractWhen()
@@ -89,7 +104,8 @@ constructor(
contentBuilder.profileBadgeResId = null // TODO
contentBuilder.title = notification.title()
contentBuilder.text = notification.text()
- contentBuilder.skeletonLargeIcon = null // TODO
+ contentBuilder.skeletonLargeIcon = notification.skeletonLargeIcon(imageModelProvider)
+ contentBuilder.oldProgress = notification.oldProgress()
val colorsFromNotif = recoveredBuilder.getColors(/* header= */ false)
contentBuilder.colors =
@@ -98,98 +114,144 @@ constructor(
primaryTextColor = colorsFromNotif.primaryTextColor,
)
- recoveredBuilder.extractStyleContent(contentBuilder)
+ recoveredBuilder.extractStyleContent(notification, contentBuilder, imageModelProvider)
return contentBuilder.build().also { logger.logExtractionSucceeded(entry, it) }
}
-}
-private fun Notification.title(): CharSequence? = extras?.getCharSequence(EXTRA_TITLE)
+ private fun Notification.smallIconModel(imageModelProvider: ImageModelProvider): ImageModel? =
+ imageModelProvider.getImageModel(smallIcon, SmallSquare)
+
+ private fun Notification.title(): CharSequence? = extras?.getCharSequence(EXTRA_TITLE)
-private fun Notification.text(): CharSequence? = extras?.getCharSequence(EXTRA_TEXT)
+ private fun Notification.text(): CharSequence? = extras?.getCharSequence(EXTRA_TEXT)
-private fun Notification.subText(): String? = extras?.getString(EXTRA_SUB_TEXT)
+ private fun Notification.subText(): String? = extras?.getString(EXTRA_SUB_TEXT)
-private fun Notification.shortCriticalText(): String? {
- if (!android.app.Flags.apiRichOngoing()) {
+ private fun Notification.shortCriticalText(): String? {
+ if (!android.app.Flags.apiRichOngoing()) {
+ return null
+ }
+ if (this.shortCriticalText != null) {
+ return this.shortCriticalText
+ }
+ if (Flags.promoteNotificationsAutomatically()) {
+ return this.extras?.getString(EXTRA_AUTOMATICALLY_EXTRACTED_SHORT_CRITICAL_TEXT)
+ }
return null
}
- if (this.shortCriticalText != null) {
- return this.shortCriticalText
- }
- if (Flags.promoteNotificationsAutomatically()) {
- return this.extras?.getString(EXTRA_AUTOMATICALLY_EXTRACTED_SHORT_CRITICAL_TEXT)
+
+ private fun Notification.chronometerCountDown(): Boolean =
+ extras?.getBoolean(EXTRA_CHRONOMETER_COUNT_DOWN, /* defaultValue= */ false) ?: false
+
+ private fun Notification.skeletonLargeIcon(
+ imageModelProvider: ImageModelProvider
+ ): ImageModel? =
+ getLargeIcon()?.let {
+ imageModelProvider.getImageModel(it, MediumSquare, skeletonImageTransform)
+ }
+
+ private fun Notification.oldProgress(): OldProgress? {
+ val progress = progress() ?: return null
+ val max = progressMax() ?: return null
+ val isIndeterminate = progressIndeterminate() ?: return null
+
+ return OldProgress(progress = progress, max = max, isIndeterminate = isIndeterminate)
}
- return null
-}
-private fun Notification.chronometerCountDown(): Boolean =
- extras?.getBoolean(EXTRA_CHRONOMETER_COUNT_DOWN, /* defaultValue= */ false) ?: false
+ private fun Notification.progress(): Int? = extras?.getInt(EXTRA_PROGRESS)
+
+ private fun Notification.progressMax(): Int? = extras?.getInt(EXTRA_PROGRESS_MAX)
-private fun Notification.extractWhen(): When? {
- val time = `when`
- val showsTime = showsTime()
- val showsChronometer = showsChronometer()
- val countDown = chronometerCountDown()
+ private fun Notification.progressIndeterminate(): Boolean? =
+ extras?.getBoolean(EXTRA_PROGRESS_INDETERMINATE)
- return when {
- showsTime -> When(time, When.Mode.BasicTime)
- showsChronometer -> When(time, if (countDown) When.Mode.CountDown else When.Mode.CountUp)
- else -> null
+ private fun Notification.extractWhen(): When? {
+ val time = `when`
+ val showsTime = showsTime()
+ val showsChronometer = showsChronometer()
+ val countDown = chronometerCountDown()
+
+ return when {
+ showsTime -> When(time, When.Mode.BasicTime)
+ showsChronometer ->
+ When(time, if (countDown) When.Mode.CountDown else When.Mode.CountUp)
+ else -> null
+ }
}
-}
-private fun Notification.Builder.extractStyleContent(
- contentBuilder: PromotedNotificationContentModel.Builder
-) {
- val style = this.style
+ private fun Notification.skeletonVerificationIcon(
+ imageModelProvider: ImageModelProvider
+ ): ImageModel? =
+ extras.getParcelable(EXTRA_VERIFICATION_ICON, Icon::class.java)?.let {
+ imageModelProvider.getImageModel(it, SmallSquare, skeletonImageTransform)
+ }
- contentBuilder.style =
- when (style) {
- null -> Style.Base
+ private fun Notification.verificationText(): CharSequence? =
+ extras.getCharSequence(EXTRA_VERIFICATION_TEXT)
- is BigPictureStyle -> {
- style.extractContent(contentBuilder)
- Style.BigPicture
- }
+ private fun Notification.Builder.extractStyleContent(
+ notification: Notification,
+ contentBuilder: PromotedNotificationContentModel.Builder,
+ imageModelProvider: ImageModelProvider,
+ ) {
+ val style = this.style
- is BigTextStyle -> {
- style.extractContent(contentBuilder)
- Style.BigText
- }
+ contentBuilder.style =
+ when (style) {
+ null -> Style.Base
- is CallStyle -> {
- style.extractContent(contentBuilder)
- Style.Call
- }
+ is BigPictureStyle -> {
+ style.extractContent(contentBuilder)
+ Style.BigPicture
+ }
- is ProgressStyle -> {
- style.extractContent(contentBuilder)
- Style.Progress
- }
+ is BigTextStyle -> {
+ style.extractContent(contentBuilder)
+ Style.BigText
+ }
- else -> Style.Ineligible
- }
-}
+ is CallStyle -> {
+ style.extractContent(notification, contentBuilder, imageModelProvider)
+ Style.Call
+ }
-private fun BigPictureStyle.extractContent(
- contentBuilder: PromotedNotificationContentModel.Builder
-) {
- // TODO?
-}
+ is ProgressStyle -> {
+ style.extractContent(contentBuilder)
+ Style.Progress
+ }
-private fun BigTextStyle.extractContent(contentBuilder: PromotedNotificationContentModel.Builder) {
- // TODO?
-}
+ else -> Style.Ineligible
+ }
+ }
-private fun CallStyle.extractContent(contentBuilder: PromotedNotificationContentModel.Builder) {
- contentBuilder.personIcon = null // TODO
- contentBuilder.personName = null // TODO
- contentBuilder.verificationIcon = null // TODO
- contentBuilder.verificationText = null // TODO
-}
+ private fun BigPictureStyle.extractContent(
+ contentBuilder: PromotedNotificationContentModel.Builder
+ ) {
+ // TODO?
+ }
+
+ private fun BigTextStyle.extractContent(
+ contentBuilder: PromotedNotificationContentModel.Builder
+ ) {
+ // TODO?
+ }
+
+ private fun CallStyle.extractContent(
+ notification: Notification,
+ contentBuilder: PromotedNotificationContentModel.Builder,
+ imageModelProvider: ImageModelProvider,
+ ) {
+ contentBuilder.personIcon = null // TODO
+ contentBuilder.personName = null // TODO
+ contentBuilder.verificationIcon = notification.skeletonVerificationIcon(imageModelProvider)
+ contentBuilder.verificationText = notification.verificationText()
+ }
-private fun ProgressStyle.extractContent(contentBuilder: PromotedNotificationContentModel.Builder) {
- // TODO: Create NotificationProgressModel.toSkeleton, or something similar.
- contentBuilder.progress = createProgressModel(0xffffffff.toInt(), 0xff000000.toInt())
+ private fun ProgressStyle.extractContent(
+ contentBuilder: PromotedNotificationContentModel.Builder
+ ) {
+ // TODO: Create NotificationProgressModel.toSkeleton, or something similar.
+ contentBuilder.newProgress = createProgressModel(0xffffffff.toInt(), 0xff000000.toInt())
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationLogger.kt
index 4ccdc65ba91a..468934791525 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationLogger.kt
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.notification.promoted
import androidx.constraintlayout.widget.ConstraintSet
+import com.android.systemui.keyguard.ui.view.layout.sections.AodPromotedNotificationSection
import com.android.systemui.log.LogBuffer
import com.android.systemui.log.core.LogLevel.ERROR
import com.android.systemui.log.core.LogLevel.INFO
@@ -25,6 +26,7 @@ import com.android.systemui.statusbar.notification.logKey
import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel
import javax.inject.Inject
+@OptIn(ExperimentalStdlibApi::class)
class PromotedNotificationLogger
@Inject
constructor(@PromotedNotificationLog private val buffer: LogBuffer) {
@@ -92,20 +94,44 @@ constructor(@PromotedNotificationLog private val buffer: LogBuffer) {
buffer.log(AOD_VIEW_BINDER_TAG, INFO, "binder unbound notification")
}
- fun logSectionAddedViews() {
- buffer.log(AOD_SECTION_TAG, INFO, "section added views")
+ fun logSectionCreated(section: AodPromotedNotificationSection) {
+ buffer.log(
+ AOD_SECTION_TAG,
+ INFO,
+ "section ${System.identityHashCode(section).toHexString()} created",
+ )
}
- fun logSectionBoundData() {
- buffer.log(AOD_SECTION_TAG, INFO, "section bound data")
+ fun logSectionAddedViews(section: AodPromotedNotificationSection) {
+ buffer.log(
+ AOD_SECTION_TAG,
+ INFO,
+ "section ${System.identityHashCode(section).toHexString()} added views",
+ )
}
- fun logSectionAppliedConstraints() {
- buffer.log(AOD_SECTION_TAG, INFO, "section applied constraints")
+ fun logSectionBoundData(section: AodPromotedNotificationSection) {
+ buffer.log(
+ AOD_SECTION_TAG,
+ INFO,
+ "section ${System.identityHashCode(section).toHexString()} bound data",
+ )
}
- fun logSectionRemovedViews() {
- buffer.log(AOD_SECTION_TAG, INFO, "section removed views")
+ fun logSectionAppliedConstraints(section: AodPromotedNotificationSection) {
+ buffer.log(
+ AOD_SECTION_TAG,
+ INFO,
+ "section ${System.identityHashCode(section).toHexString()} applied constraints",
+ )
+ }
+
+ fun logSectionRemovedViews(section: AodPromotedNotificationSection) {
+ buffer.log(
+ AOD_SECTION_TAG,
+ INFO,
+ "section ${System.identityHashCode(section).toHexString()} removed views",
+ )
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/shared/model/PromotedNotificationContentModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/shared/model/PromotedNotificationContentModel.kt
index 3dacae2114b0..af5a8203c979 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/shared/model/PromotedNotificationContentModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/shared/model/PromotedNotificationContentModel.kt
@@ -19,11 +19,11 @@ package com.android.systemui.statusbar.notification.promoted.shared.model
import android.annotation.DrawableRes
import android.app.Notification
import android.app.Notification.FLAG_PROMOTED_ONGOING
-import android.graphics.drawable.Icon
import androidx.annotation.ColorInt
import com.android.internal.widget.NotificationProgressModel
import com.android.systemui.statusbar.chips.notification.shared.StatusBarNotifChips
import com.android.systemui.statusbar.notification.promoted.PromotedNotificationUi
+import com.android.systemui.statusbar.notification.row.shared.ImageModel
/**
* The content needed to render a promoted notification to surfaces besides the notification stack,
@@ -37,7 +37,7 @@ data class PromotedNotificationContentModel(
* True if this notification was automatically promoted - see [AutomaticPromotionCoordinator].
*/
val wasPromotedAutomatically: Boolean,
- val skeletonSmallIcon: Icon?, // TODO(b/377568176): Make into an IconModel.
+ val smallIcon: ImageModel?,
val appName: CharSequence?,
val subText: CharSequence?,
val shortCriticalText: String?,
@@ -50,22 +50,23 @@ data class PromotedNotificationContentModel(
@DrawableRes val profileBadgeResId: Int?,
val title: CharSequence?,
val text: CharSequence?,
- val skeletonLargeIcon: Icon?, // TODO(b/377568176): Make into an IconModel.
+ val skeletonLargeIcon: ImageModel?,
+ val oldProgress: OldProgress?,
val colors: Colors,
val style: Style,
// for CallStyle:
- val personIcon: Icon?, // TODO(b/377568176): Make into an IconModel.
+ val personIcon: ImageModel?,
val personName: CharSequence?,
- val verificationIcon: Icon?, // TODO(b/377568176): Make into an IconModel.
+ val verificationIcon: ImageModel?,
val verificationText: CharSequence?,
// for ProgressStyle:
- val progress: NotificationProgressModel?,
+ val newProgress: NotificationProgressModel?,
) {
class Builder(val key: String) {
var wasPromotedAutomatically: Boolean = false
- var skeletonSmallIcon: Icon? = null
+ var smallIcon: ImageModel? = null
var appName: CharSequence? = null
var subText: CharSequence? = null
var time: When? = null
@@ -74,24 +75,25 @@ data class PromotedNotificationContentModel(
@DrawableRes var profileBadgeResId: Int? = null
var title: CharSequence? = null
var text: CharSequence? = null
- var skeletonLargeIcon: Icon? = null
+ var skeletonLargeIcon: ImageModel? = null
+ var oldProgress: OldProgress? = null
var style: Style = Style.Ineligible
var colors: Colors = Colors(backgroundColor = 0, primaryTextColor = 0)
// for CallStyle:
- var personIcon: Icon? = null
+ var personIcon: ImageModel? = null
var personName: CharSequence? = null
- var verificationIcon: Icon? = null
+ var verificationIcon: ImageModel? = null
var verificationText: CharSequence? = null
// for ProgressStyle:
- var progress: NotificationProgressModel? = null
+ var newProgress: NotificationProgressModel? = null
fun build() =
PromotedNotificationContentModel(
identity = Identity(key, style),
wasPromotedAutomatically = wasPromotedAutomatically,
- skeletonSmallIcon = skeletonSmallIcon,
+ smallIcon = smallIcon,
appName = appName,
subText = subText,
shortCriticalText = shortCriticalText,
@@ -101,13 +103,14 @@ data class PromotedNotificationContentModel(
title = title,
text = text,
skeletonLargeIcon = skeletonLargeIcon,
+ oldProgress = oldProgress,
colors = colors,
style = style,
personIcon = personIcon,
personName = personName,
verificationIcon = verificationIcon,
verificationText = verificationText,
- progress = progress,
+ newProgress = newProgress,
)
}
@@ -129,6 +132,9 @@ data class PromotedNotificationContentModel(
/** The colors used to display the notification. */
data class Colors(@ColorInt val backgroundColor: Int, @ColorInt val primaryTextColor: Int)
+ /** The fields needed to render the old-style progress bar. */
+ data class OldProgress(val progress: Int, val max: Int, val isIndeterminate: Boolean)
+
/** The promotion-eligible style of a notification, or [Style.Ineligible] if not. */
enum class Style {
Base, // style == null
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/ui/viewmodel/AODPromotedNotificationViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/ui/viewmodel/AODPromotedNotificationViewModel.kt
index 3bbd217dcab4..7be5bdf09eaf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/ui/viewmodel/AODPromotedNotificationViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/ui/viewmodel/AODPromotedNotificationViewModel.kt
@@ -17,31 +17,103 @@
package com.android.systemui.statusbar.notification.promoted.ui.viewmodel
import androidx.compose.runtime.getValue
+import com.android.systemui.dump.DumpManager
import com.android.systemui.lifecycle.ExclusiveActivatable
import com.android.systemui.lifecycle.Hydrator
import com.android.systemui.statusbar.notification.promoted.domain.interactor.AODPromotedNotificationInteractor
import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel
+import com.android.systemui.util.kotlin.ActivatableFlowDumper
+import com.android.systemui.util.kotlin.ActivatableFlowDumperImpl
+import com.android.systemui.util.time.SystemClock
+import com.android.systemui.utils.coroutines.flow.transformLatestConflated
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
+import kotlin.time.Duration
+import kotlin.time.Duration.Companion.milliseconds
+import kotlin.time.Duration.Companion.seconds
+import kotlinx.coroutines.awaitCancellation
+import kotlinx.coroutines.coroutineScope
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.launch
class AODPromotedNotificationViewModel
@AssistedInject
-constructor(interactor: AODPromotedNotificationInteractor) : ExclusiveActivatable() {
+constructor(
+ interactor: AODPromotedNotificationInteractor,
+ systemClock: SystemClock,
+ dumpManager: DumpManager,
+) :
+ ExclusiveActivatable(),
+ ActivatableFlowDumper by ActivatableFlowDumperImpl(
+ dumpManager,
+ "AODPromotedNotificationViewModel",
+ ) {
private val hydrator = Hydrator("AODPromotedNotificationViewModel.hydrator")
+ private val contentFlow =
+ interactor.content.let {
+ if (DUMP_CONTENT) {
+ it.dumpWhileCollecting("content")
+ } else {
+ it
+ }
+ }
+
val content: PromotedNotificationContentModel? by
+ hydrator.hydratedStateOf(traceName = "content", initialValue = null, source = contentFlow)
+
+ private val audiblyAlertedIconVisibleUntil: Flow<Duration?> =
+ interactor.content
+ .map {
+ when (it) {
+ null -> null
+ else -> it.lastAudiblyAlertedMs.milliseconds + RECENTLY_ALERTED_THRESHOLD
+ }
+ }
+ .distinctUntilChanged()
+ .dumpWhileCollecting("audiblyAlertedIconVisibleUntil")
+
+ private val audiblyAlertedIconVisibleFlow: Flow<Boolean> =
+ audiblyAlertedIconVisibleUntil
+ .transformLatestConflated { until ->
+ val now = systemClock.currentTimeMillis().milliseconds
+
+ if (until != null && until > now) {
+ emit(true)
+ delay(until - now)
+ }
+ emit(false)
+ }
+ .distinctUntilChanged()
+ .dumpWhileCollecting("audiblyAlertedIconVisible")
+
+ val audiblyAlertedIconVisible: Boolean by
hydrator.hydratedStateOf(
- traceName = "content",
- initialValue = null,
- source = interactor.content,
+ traceName = "audiblyAlertedIconVisible",
+ initialValue = false,
+ source = audiblyAlertedIconVisibleFlow,
)
override suspend fun onActivated(): Nothing {
- hydrator.activate()
+ coroutineScope {
+ launch { activateFlowDumper() }
+ launch { hydrator.activate() }
+ awaitCancellation()
+ }
}
@AssistedFactory
interface Factory {
fun create(): AODPromotedNotificationViewModel
}
+
+ companion object {
+ private val RECENTLY_ALERTED_THRESHOLD = 30.seconds
+
+ // For local debugging only!
+ private const val DUMP_CONTENT = false
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/ui/viewmodel/PromotedNotificationViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/ui/viewmodel/PromotedNotificationViewModel.kt
deleted file mode 100644
index f265e0ff33f8..000000000000
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/promoted/ui/viewmodel/PromotedNotificationViewModel.kt
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.statusbar.notification.promoted.ui.viewmodel
-
-import android.graphics.drawable.Icon
-import com.android.internal.widget.NotificationProgressModel
-import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel
-import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel.Style
-import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel.When
-import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.map
-
-class PromotedNotificationViewModel(
- identity: PromotedNotificationContentModel.Identity,
- content: Flow<PromotedNotificationContentModel>,
-) {
- // for all styles:
-
- val key: String = identity.key
- val style: Style = identity.style
-
- val skeletonSmallIcon: Flow<Icon?> = content.map { it.skeletonSmallIcon }
- val appName: Flow<CharSequence?> = content.map { it.appName }
- val subText: Flow<CharSequence?> = content.map { it.subText }
-
- private val time: Flow<When?> = content.map { it.time }
- val whenTime: Flow<Long?> = time.map { it?.time }
- val whenMode: Flow<When.Mode?> = time.map { it?.mode }
-
- val lastAudiblyAlertedMs: Flow<Long> = content.map { it.lastAudiblyAlertedMs }
- val profileBadgeResId: Flow<Int?> = content.map { it.profileBadgeResId }
- val title: Flow<CharSequence?> = content.map { it.title }
- val text: Flow<CharSequence?> = content.map { it.text }
- val skeletonLargeIcon: Flow<Icon?> = content.map { it.skeletonLargeIcon }
-
- // for CallStyle:
- val personIcon: Flow<Icon?> = content.map { it.personIcon }
- val personName: Flow<CharSequence?> = content.map { it.personName }
- val verificationIcon: Flow<Icon?> = content.map { it.verificationIcon }
- val verificationText: Flow<CharSequence?> = content.map { it.verificationText }
-
- // for ProgressStyle:
- val progress: Flow<NotificationProgressModel?> = content.map { it.progress }
-}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/BundleNotificationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/BundleNotificationInfo.java
deleted file mode 100644
index 9c6e41c482b6..000000000000
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/BundleNotificationInfo.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.statusbar.notification.row;
-
-import android.app.INotificationManager;
-import android.app.NotificationChannel;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ActivityInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.os.RemoteException;
-import android.service.notification.NotificationAssistantService;
-import android.service.notification.StatusBarNotification;
-import android.util.AttributeSet;
-import android.view.View;
-
-import com.android.internal.logging.MetricsLogger;
-import com.android.internal.logging.UiEventLogger;
-import com.android.systemui.res.R;
-import com.android.systemui.statusbar.notification.AssistantFeedbackController;
-import com.android.systemui.statusbar.notification.collection.NotificationEntry;
-
-import java.util.List;
-
-/**
- * The guts of a notification revealed when performing a long press.
- */
-public class BundleNotificationInfo extends NotificationInfo {
- private static final String TAG = "BundleNotifInfoGuts";
-
- public BundleNotificationInfo(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- @Override
- public void bindNotification(
- PackageManager pm,
- INotificationManager iNotificationManager,
- OnUserInteractionCallback onUserInteractionCallback,
- ChannelEditorDialogController channelEditorDialogController,
- String pkg,
- NotificationChannel notificationChannel,
- NotificationEntry entry,
- OnSettingsClickListener onSettingsClick,
- OnAppSettingsClickListener onAppSettingsClick,
- UiEventLogger uiEventLogger,
- boolean isDeviceProvisioned,
- boolean isNonblockable,
- boolean wasShownHighPriority,
- AssistantFeedbackController assistantFeedbackController,
- MetricsLogger metricsLogger, OnClickListener onCloseClick) throws RemoteException {
- super.bindNotification(pm, iNotificationManager, onUserInteractionCallback,
- channelEditorDialogController, pkg, notificationChannel, entry, onSettingsClick,
- onAppSettingsClick, uiEventLogger, isDeviceProvisioned, isNonblockable,
- wasShownHighPriority, assistantFeedbackController, metricsLogger, onCloseClick);
-
- // Additionally, bind the feedback button.
- ComponentName assistant = iNotificationManager.getAllowedNotificationAssistant();
- bindFeedback(entry.getSbn(), pm, assistant, onAppSettingsClick);
- }
-
- protected void bindFeedback(StatusBarNotification sbn, PackageManager pm,
- ComponentName assistant,
- NotificationInfo.OnAppSettingsClickListener appSettingsClickListener) {
- View feedbackButton = findViewById(R.id.notification_guts_bundle_feedback);
- // If the assistant component is null, don't show the feedback button and finish.
- if (assistant == null) {
- feedbackButton.setVisibility(GONE);
- return;
- }
- // Otherwise we extract the assistant package name.
- String assistantPkg = assistant.getPackageName();
-
- feedbackButton.setOnClickListener(getBundleFeedbackClickListener(sbn, pm, assistantPkg,
- appSettingsClickListener));
- feedbackButton.setVisibility(feedbackButton.hasOnClickListeners() ? VISIBLE : GONE);
- }
-
- private OnClickListener getBundleFeedbackClickListener(StatusBarNotification sbn,
- PackageManager pm, String assistantPkg,
- NotificationInfo.OnAppSettingsClickListener appSettingsClickListener) {
- Intent feedbackIntent = getBundleFeedbackIntent(pm, assistantPkg, sbn.getKey());
- if (feedbackIntent != null) {
- return ((View view) -> {
- appSettingsClickListener.onClick(view, feedbackIntent);
- });
- }
- return null;
- }
-
- private Intent getBundleFeedbackIntent(PackageManager pm, String packageName, String key) {
- Intent intent = new Intent(
- NotificationAssistantService.ACTION_NOTIFICATION_ASSISTANT_FEEDBACK_SETTINGS)
- .setPackage(packageName);
- final List<ResolveInfo> resolveInfos = pm.queryIntentActivities(
- intent,
- PackageManager.MATCH_DEFAULT_ONLY
- );
- if (resolveInfos == null || resolveInfos.size() == 0 || resolveInfos.get(0) == null) {
- return null;
- }
- final ActivityInfo activityInfo = resolveInfos.get(0).activityInfo;
- intent.setClassName(activityInfo.packageName, activityInfo.name);
- intent.putExtra(NotificationAssistantService.EXTRA_NOTIFICATION_KEY, key);
- return intent;
- }
-}
-
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
index a6dde103e6ff..053b4f5cb2ba 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
@@ -71,7 +71,6 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.dynamicanimation.animation.FloatPropertyCompat;
import androidx.dynamicanimation.animation.SpringAnimation;
-import androidx.dynamicanimation.animation.SpringForce;
import com.android.app.animation.Interpolators;
import com.android.internal.annotations.VisibleForTesting;
@@ -172,6 +171,9 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
private boolean mIsPromotedOngoing = false;
+ @Nullable
+ public ImageModelIndex mImageModelIndex = null;
+
/**
* Listener for when {@link ExpandableNotificationRow} is laid out.
*/
@@ -361,39 +363,14 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
}
};
- private final SpringAnimation mMagneticAnimator = new SpringAnimation(
- this, FloatPropertyCompat.createFloatPropertyCompat(TRANSLATE_CONTENT));
-
- private final MagneticRowListener mMagneticRowListener = new MagneticRowListener() {
-
- @Override
- public void setMagneticTranslation(float translation) {
- if (mMagneticAnimator.isRunning()) {
- mMagneticAnimator.animateToFinalPosition(translation);
- } else {
- setTranslation(translation);
- }
- }
-
- @Override
- public void triggerMagneticForce(float endTranslation, @NonNull SpringForce springForce,
- float startVelocity) {
- cancelMagneticAnimations();
- mMagneticAnimator.setSpring(springForce);
- mMagneticAnimator.setStartVelocity(startVelocity);
- mMagneticAnimator.animateToFinalPosition(endTranslation);
- }
-
- @Override
- public void cancelMagneticAnimations() {
- cancelSnapBackAnimation();
- cancelTranslateAnimation();
- mMagneticAnimator.cancel();
- }
- };
+ @Override
+ protected void cancelTranslationAnimations() {
+ cancelSnapBackAnimation();
+ cancelTranslateAnimation();
+ }
private void cancelSnapBackAnimation() {
- PhysicsAnimator<ExpandableNotificationRow> animator =
+ PhysicsAnimator<ExpandableView> animator =
PhysicsAnimator.getInstanceIfExists(this /* target */);
if (animator != null) {
animator.cancel();
@@ -1497,9 +1474,6 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
items.add(NotificationMenuRow.createPartialConversationItem(mContext));
items.add(NotificationMenuRow.createInfoItem(mContext));
items.add(NotificationMenuRow.createSnoozeItem(mContext));
- if (android.app.Flags.notificationClassificationUi()) {
- items.add(NotificationMenuRow.createBundleItem(mContext));
- }
mMenuRow.setMenuItems(items);
}
if (existed) {
@@ -2047,6 +2021,8 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
new NotificationInlineImageCache());
float radius = getResources().getDimension(R.dimen.notification_corner_radius_small);
mSmallRoundness = radius / getMaxRadius();
+ mMagneticAnimator = new SpringAnimation(
+ this, FloatPropertyCompat.createFloatPropertyCompat(TRANSLATE_CONTENT));
initDimens();
}
@@ -3303,6 +3279,19 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
}
/**
+ * For the case of an {@link ExpandableNotificationRow}, the dismissibility of the row considers
+ * the exposure of guts, the state of the notification entry, and if the view itself is allowed
+ * to be dismissed.
+ */
+ @Override
+ public boolean canExpandableViewBeDismissed() {
+ if (areGutsExposed() || !mEntry.hasFinishedInitialization()) {
+ return false;
+ }
+ return canViewBeDismissed();
+ }
+
+ /**
* @return Whether this view is allowed to be dismissed. Only valid for visible notifications as
* otherwise some state might not be updated.
*/
@@ -4070,6 +4059,11 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
mLayouts = new NotificationContentView[]{mPrivateLayout, mPublicLayout};
}
+ @VisibleForTesting
+ public void setMagneticRowListener(MagneticRowListener listener) {
+ mMagneticRowListener = listener;
+ }
+
/**
* Equivalent to View.OnLongClickListener with coordinates
*/
@@ -4320,8 +4314,4 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
}
mLogger.logRemoveTransientRow(row.getEntry(), getEntry());
}
-
- public MagneticRowListener getMagneticRowListener() {
- return mMagneticRowListener;
- }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java
index f83a1d9b7833..76ba7f9ea901 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java
@@ -33,6 +33,9 @@ import android.widget.FrameLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.dynamicanimation.animation.DynamicAnimation;
+import androidx.dynamicanimation.animation.SpringAnimation;
+import androidx.dynamicanimation.animation.SpringForce;
import com.android.app.animation.Interpolators;
import com.android.systemui.Dumpable;
@@ -42,6 +45,7 @@ import com.android.systemui.statusbar.notification.Roundable;
import com.android.systemui.statusbar.notification.RoundableState;
import com.android.systemui.statusbar.notification.headsup.PinnedStatus;
import com.android.systemui.statusbar.notification.stack.ExpandableViewState;
+import com.android.systemui.statusbar.notification.stack.MagneticRowListener;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
import com.android.systemui.util.Compile;
import com.android.systemui.util.DumpUtilsKt;
@@ -85,6 +89,55 @@ public abstract class ExpandableView extends FrameLayout implements Dumpable, Ro
protected boolean mLastInSection;
protected boolean mFirstInSection;
+ protected SpringAnimation mMagneticAnimator = new SpringAnimation(
+ this /* object */, DynamicAnimation.TRANSLATION_X);
+
+ protected MagneticRowListener mMagneticRowListener = new MagneticRowListener() {
+
+ @Override
+ public void setMagneticTranslation(float translation) {
+ if (mMagneticAnimator.isRunning()) {
+ mMagneticAnimator.animateToFinalPosition(translation);
+ } else {
+ setTranslation(translation);
+ }
+ }
+
+ @Override
+ public void triggerMagneticForce(float endTranslation, @NonNull SpringForce springForce,
+ float startVelocity) {
+ cancelMagneticAnimations();
+ mMagneticAnimator.setSpring(springForce);
+ mMagneticAnimator.setStartVelocity(startVelocity);
+ mMagneticAnimator.animateToFinalPosition(endTranslation);
+ }
+
+ @Override
+ public void cancelMagneticAnimations() {
+ cancelTranslationAnimations();
+ mMagneticAnimator.cancel();
+ }
+
+ @Override
+ public boolean canRowBeDismissed() {
+ return canExpandableViewBeDismissed();
+ }
+ };
+
+ /**
+ * @return true if the ExpandableView can be dismissed. False otherwise.
+ */
+ public boolean canExpandableViewBeDismissed() {
+ return false;
+ }
+
+ /** Cancel any trailing animations on the translation of the view */
+ protected void cancelTranslationAnimations(){}
+
+ public MagneticRowListener getMagneticRowListener() {
+ return mMagneticRowListener;
+ }
+
public ExpandableView(Context context, AttributeSet attrs) {
super(context, attrs);
mViewState = createExpandableViewState();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/HybridConversationNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/HybridConversationNotificationView.java
index 92c10abff735..344d0f6d3741 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/HybridConversationNotificationView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/HybridConversationNotificationView.java
@@ -289,7 +289,7 @@ public class HybridConversationNotificationView extends HybridNotificationView {
CharSequence titleText,
CharSequence contentText,
CharSequence conversationSenderName,
- @Nullable String summarization
+ @Nullable CharSequence summarization
) {
if (AsyncHybridViewInflation.isUnexpectedlyInLegacyMode()) return;
if (summarization != null) {
@@ -304,9 +304,8 @@ public class HybridConversationNotificationView extends HybridNotificationView {
mConversationSenderName.setText(conversationSenderName);
}
}
- // TODO (b/217799515): super.bind() doesn't use contentView, remove the contentView
- // argument when the flag is removed
- super.bind(/* title = */ titleText, /* text = */ contentText, /* contentView = */ null);
+ super.bind(/* title = */ titleText, /* text = */ contentText,
+ /* stripSpans = */ TextUtils.isEmpty(summarization));
}
private static void setSize(View view, int size) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/HybridNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/HybridNotificationView.java
index 5c4c253d1f98..02dc805dcab4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/HybridNotificationView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/HybridNotificationView.java
@@ -121,6 +121,11 @@ public class HybridNotificationView extends AlphaOptimizedLinearLayout
public void bind(@Nullable CharSequence title, @Nullable CharSequence text,
@Nullable View contentView) {
+ bind(/* title = */ title, /* text = */ text, /* stripSpans */ true);
+ }
+
+ public void bind(@Nullable CharSequence title, @Nullable CharSequence text,
+ boolean stripSpans) {
mTitleView.setText(title != null ? title.toString() : title);
mTitleView.setVisibility(TextUtils.isEmpty(title) ? GONE : VISIBLE);
if (TextUtils.isEmpty(text)) {
@@ -128,7 +133,11 @@ public class HybridNotificationView extends AlphaOptimizedLinearLayout
mTextView.setText(null);
} else {
mTextView.setVisibility(VISIBLE);
- mTextView.setText(text.toString());
+ if (stripSpans) {
+ mTextView.setText(text.toString());
+ } else {
+ mTextView.setText(text);
+ }
}
requestLayout();
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java
index 13ed6c449797..c7e15fdb98c7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java
@@ -61,6 +61,7 @@ import com.android.systemui.statusbar.notification.promoted.PromotedNotification
import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel;
import com.android.systemui.statusbar.notification.row.shared.AsyncGroupHeaderViewInflation;
import com.android.systemui.statusbar.notification.row.shared.AsyncHybridViewInflation;
+import com.android.systemui.statusbar.notification.row.shared.ImageModelProvider;
import com.android.systemui.statusbar.notification.row.shared.LockscreenOtpRedaction;
import com.android.systemui.statusbar.notification.row.shared.NotificationRowContentBinderRefactor;
import com.android.systemui.statusbar.notification.row.ui.viewbinder.SingleLineViewBinder;
@@ -437,6 +438,9 @@ public class NotificationContentInflater implements NotificationRowContentBinder
InflationProgress result = new InflationProgress();
final NotificationEntry entryForLogging = row.getEntry();
+ // create an image inflater
+ result.mRowImageInflater = RowImageInflater.newInstance(row.mImageModelIndex);
+
if ((reInflateFlags & FLAG_CONTENT_VIEW_CONTRACTED) != 0) {
logger.logAsyncTaskProgress(entryForLogging, "creating contracted remote view");
result.newContentView = createContentView(builder, bindParams.isMinimized);
@@ -978,6 +982,9 @@ public class NotificationContentInflater implements NotificationRowContentBinder
NotificationContentView publicLayout = row.getPublicLayout();
logger.logAsyncTaskProgress(entry, "finishing");
+ // Put the new image index on the row
+ row.mImageModelIndex = result.mRowImageInflater.getNewImageIndex();
+
if (PromotedNotificationContentModel.featureFlagEnabled()) {
entry.setPromotedNotificationContentModel(result.mPromotedContent);
}
@@ -1363,15 +1370,20 @@ public class NotificationContentInflater implements NotificationRowContentBinder
if (PromotedNotificationContentModel.featureFlagEnabled()) {
mLogger.logAsyncTaskProgress(mEntry, "extracting promoted notification content");
+ final ImageModelProvider imageModelProvider =
+ result.mRowImageInflater.useForContentModel();
final PromotedNotificationContentModel promotedContent =
mPromotedNotificationContentExtractor.extractContent(mEntry,
- recoveredBuilder);
+ recoveredBuilder, imageModelProvider);
mLogger.logAsyncTaskProgress(mEntry, "extracted promoted notification content: "
+ promotedContent);
result.mPromotedContent = promotedContent;
}
+ mLogger.logAsyncTaskProgress(mEntry, "loading RON images");
+ inflationProgress.mRowImageInflater.loadImagesSynchronously(packageContext);
+
mLogger.logAsyncTaskProgress(mEntry,
"getting row image resolver (on wrong thread!)");
final NotificationInlineImageResolver imageResolver = mRow.getImageResolver();
@@ -1473,6 +1485,8 @@ public class NotificationContentInflater implements NotificationRowContentBinder
@VisibleForTesting
static class InflationProgress {
+ RowImageInflater mRowImageInflater;
+
PromotedNotificationContentModel mPromotedContent;
private RemoteViews newContentView;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java
index be9f60d4d5a1..3c7d9ef8e71d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java
@@ -70,6 +70,7 @@ import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.people.widget.PeopleSpaceWidgetManager;
import com.android.systemui.res.R;
import com.android.systemui.shade.ShadeController;
+import com.android.systemui.statusbar.notification.NmSummarizationUiFlag;
import com.android.systemui.statusbar.notification.NotificationChannelHelper;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
@@ -118,6 +119,7 @@ public class NotificationConversationInfo extends LinearLayout implements
private OnSettingsClickListener mOnSettingsClickListener;
private NotificationGuts mGutsContainer;
private OnConversationSettingsClickListener mOnConversationSettingsClickListener;
+ private NotificationInfo.OnFeedbackClickListener mFeedbackClickListener;
private UserManager mUm;
@@ -202,6 +204,7 @@ public class NotificationConversationInfo extends LinearLayout implements
NotificationEntry entry,
Notification.BubbleMetadata bubbleMetadata,
OnSettingsClickListener onSettingsClick,
+ NotificationInfo.OnFeedbackClickListener onFeedbackClickListener,
ConversationIconFactory conversationIconFactory,
Context userContext,
boolean isDeviceProvisioned,
@@ -234,6 +237,7 @@ public class NotificationConversationInfo extends LinearLayout implements
mBgHandler = bgHandler;
mShortcutManager = shortcutManager;
mShortcutInfo = entry.getRanking().getConversationShortcutInfo();
+ mFeedbackClickListener = onFeedbackClickListener;
if (mShortcutInfo == null) {
throw new IllegalArgumentException("Does not have required information");
}
@@ -288,6 +292,8 @@ public class NotificationConversationInfo extends LinearLayout implements
settingsButton.setOnClickListener(getSettingsOnClickListener());
settingsButton.setVisibility(settingsButton.hasOnClickListeners() ? VISIBLE : GONE);
+ bindFeedback();
+
updateToggleActions(mSelectedAction == -1 ? getPriority() : mSelectedAction,
false);
}
@@ -299,6 +305,25 @@ public class NotificationConversationInfo extends LinearLayout implements
bindDelegate();
}
+ private void bindFeedback() {
+ View feedbackButton = findViewById(R.id.feedback);
+ if (!NmSummarizationUiFlag.isEnabled()
+ || TextUtils.isEmpty(mEntry.getRanking().getSummarization())) {
+ feedbackButton.setVisibility(GONE);
+ } else {
+ Intent intent = NotificationInfo.getAssistantFeedbackIntent(
+ mINotificationManager, mPm, mEntry);
+ if (intent == null) {
+ feedbackButton.setVisibility(GONE);
+ } else {
+ feedbackButton.setVisibility(VISIBLE);
+ feedbackButton.setOnClickListener((View v) -> {
+ mFeedbackClickListener.onClick(v, intent);
+ });
+ }
+ }
+ }
+
private OnClickListener getSettingsOnClickListener() {
if (mAppUid >= 0 && mOnSettingsClickListener != null && mIsDeviceProvisioned) {
final int appUidF = mAppUid;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java
index 445cd010cd86..430e5e4f1520 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java
@@ -18,14 +18,22 @@ package com.android.systemui.statusbar.notification.row;
import static android.app.AppOpsManager.OP_CAMERA;
import static android.app.AppOpsManager.OP_RECORD_AUDIO;
import static android.app.AppOpsManager.OP_SYSTEM_ALERT_WINDOW;
+import static android.service.notification.Adjustment.KEY_SUMMARIZATION;
+import static android.service.notification.Adjustment.KEY_TYPE;
+import static android.service.notification.NotificationAssistantService.ACTION_NOTIFICATION_ASSISTANT_FEEDBACK_SETTINGS;
+import static android.service.notification.NotificationAssistantService.EXTRA_NOTIFICATION_ADJUSTMENT;
+import static android.service.notification.NotificationAssistantService.EXTRA_NOTIFICATION_KEY;
import android.annotation.FlaggedApi;
import android.app.INotificationManager;
import android.app.NotificationChannel;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.ActivityInfo;
import android.content.pm.LauncherApps;
import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
import android.content.pm.ShortcutManager;
import android.net.Uri;
import android.os.Bundle;
@@ -33,6 +41,7 @@ import android.os.Handler;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
+import android.service.notification.NotificationAssistantService;
import android.service.notification.StatusBarNotification;
import android.util.ArraySet;
import android.util.IconDrawableFactory;
@@ -78,6 +87,7 @@ import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.util.kotlin.JavaAdapter;
import com.android.systemui.wmshell.BubblesManager;
+import java.util.List;
import java.util.Optional;
import javax.inject.Inject;
@@ -325,9 +335,6 @@ public class NotificationGutsManager implements NotifGutsViewManager, CoreStarta
(PartialConversationInfo) gutsView);
} else if (gutsView instanceof FeedbackInfo) {
initializeFeedbackInfo(row, (FeedbackInfo) gutsView);
- } else if (android.app.Flags.notificationClassificationUi()
- && gutsView instanceof BundleNotificationInfo) {
- initializeBundleNotificationInfo(row, (BundleNotificationInfo) gutsView);
}
return true;
} catch (Exception e) {
@@ -412,60 +419,10 @@ public class NotificationGutsManager implements NotifGutsViewManager, CoreStarta
};
}
- notificationInfoView.bindNotification(
- pmUser,
- mNotificationManager,
- mOnUserInteractionCallback,
- mChannelEditorDialogController,
- packageName,
- row.getEntry().getChannel(),
- row.getEntry(),
- onSettingsClick,
- onAppSettingsClick,
- mUiEventLogger,
- mDeviceProvisionedController.isDeviceProvisioned(),
- row.getIsNonblockable(),
- mHighPriorityProvider.isHighPriority(row.getEntry()),
- mAssistantFeedbackController,
- mMetricsLogger,
- row.getCloseButtonOnClickListener(row));
- }
-
- /**
- * Sets up the {@link BundleNotificationInfo} inside the notification row's guts.
- * @param row view to set up the guts for
- * @param notificationInfoView view to set up/bind within {@code row}
- */
- @VisibleForTesting
- @FlaggedApi(android.app.Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI)
- void initializeBundleNotificationInfo(
- final ExpandableNotificationRow row,
- BundleNotificationInfo notificationInfoView) throws Exception {
- NotificationGuts guts = row.getGuts();
- StatusBarNotification sbn = row.getEntry().getSbn();
- String packageName = sbn.getPackageName();
- // Settings link is only valid for notifications that specify a non-system user
- NotificationInfo.OnSettingsClickListener onSettingsClick = null;
- UserHandle userHandle = sbn.getUser();
- PackageManager pmUser = CentralSurfaces.getPackageManagerForUser(
- mContext, userHandle.getIdentifier());
- final NotificationInfo.OnAppSettingsClickListener onAppSettingsClick =
- (View v, Intent intent) -> {
- mMetricsLogger.action(MetricsProto.MetricsEvent.ACTION_APP_NOTE_SETTINGS);
- guts.resetFalsingCheck();
- mNotificationActivityStarter.startNotificationGutsIntent(intent, sbn.getUid(),
- row);
- };
-
- if (!userHandle.equals(UserHandle.ALL)
- || mLockscreenUserManager.getCurrentUserId() == UserHandle.USER_SYSTEM) {
- onSettingsClick = (View v, NotificationChannel channel, int appUid) -> {
- mMetricsLogger.action(MetricsProto.MetricsEvent.ACTION_NOTE_INFO);
- guts.resetFalsingCheck();
- mOnSettingsClickListener.onSettingsClick(sbn.getKey());
- startAppNotificationSettingsActivity(packageName, appUid, channel, row);
- };
- }
+ NotificationInfo.OnFeedbackClickListener onNasFeedbackClick = (View v, Intent intent) -> {
+ guts.resetFalsingCheck();
+ mNotificationActivityStarter.startNotificationGutsIntent(intent, sbn.getUid(), row);
+ };
notificationInfoView.bindNotification(
pmUser,
@@ -477,6 +434,7 @@ public class NotificationGutsManager implements NotifGutsViewManager, CoreStarta
row.getEntry(),
onSettingsClick,
onAppSettingsClick,
+ onNasFeedbackClick,
mUiEventLogger,
mDeviceProvisionedController.isDeviceProvisioned(),
row.getIsNonblockable(),
@@ -572,6 +530,11 @@ public class NotificationGutsManager implements NotifGutsViewManager, CoreStarta
mContext.getResources().getDimensionPixelSize(
R.dimen.notification_guts_conversation_icon_size));
+ NotificationInfo.OnFeedbackClickListener onNasFeedbackClick = (View v, Intent intent) -> {
+ guts.resetFalsingCheck();
+ mNotificationActivityStarter.startNotificationGutsIntent(intent, sbn.getUid(), row);
+ };
+
notificationInfoView.bindNotification(
mShortcutManager,
pmUser,
@@ -584,6 +547,7 @@ public class NotificationGutsManager implements NotifGutsViewManager, CoreStarta
entry,
entry.getBubbleMetadata(),
onSettingsClick,
+ onNasFeedbackClick,
iconFactoryLoader,
mContextTracker.getUserContext(),
mDeviceProvisionedController.isDeviceProvisioned(),
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java
index 8d26f94ced21..bea14b2c003f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java
@@ -17,9 +17,12 @@
package com.android.systemui.statusbar.notification.row;
import static android.app.Notification.EXTRA_BUILDER_APPLICATION_INFO;
+import static android.app.NotificationChannel.SYSTEM_RESERVED_IDS;
import static android.app.NotificationManager.IMPORTANCE_DEFAULT;
import static android.app.NotificationManager.IMPORTANCE_LOW;
import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED;
+import static android.service.notification.Adjustment.KEY_SUMMARIZATION;
+import static android.service.notification.Adjustment.KEY_TYPE;
import static com.android.app.animation.Interpolators.FAST_OUT_SLOW_IN;
@@ -27,10 +30,12 @@ import static java.lang.annotation.RetentionPolicy.SOURCE;
import android.annotation.IntDef;
import android.annotation.Nullable;
+import android.app.Flags;
import android.app.INotificationManager;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationChannelGroup;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
@@ -41,6 +46,7 @@ import android.graphics.drawable.Drawable;
import android.metrics.LogMaker;
import android.os.Handler;
import android.os.RemoteException;
+import android.service.notification.NotificationAssistantService;
import android.service.notification.StatusBarNotification;
import android.text.Html;
import android.text.TextUtils;
@@ -50,6 +56,7 @@ import android.transition.TransitionManager;
import android.transition.TransitionSet;
import android.util.AttributeSet;
import android.util.Log;
+import android.util.Slog;
import android.view.View;
import android.view.accessibility.AccessibilityEvent;
import android.widget.ImageView;
@@ -63,6 +70,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.systemui.Dependency;
import com.android.systemui.res.R;
import com.android.systemui.statusbar.notification.AssistantFeedbackController;
+import com.android.systemui.statusbar.notification.NmSummarizationUiFlag;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import java.lang.annotation.Retention;
@@ -126,6 +134,7 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G
private OnSettingsClickListener mOnSettingsClickListener;
private OnAppSettingsClickListener mAppSettingsClickListener;
+ private OnFeedbackClickListener mFeedbackClickListener;
private NotificationGuts mGutsContainer;
private Drawable mPkgIcon;
private UiEventLogger mUiEventLogger;
@@ -187,6 +196,10 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G
void onClick(View v, Intent intent);
}
+ public interface OnFeedbackClickListener {
+ void onClick(View v, Intent intent);
+ }
+
public void bindNotification(
PackageManager pm,
INotificationManager iNotificationManager,
@@ -197,6 +210,7 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G
NotificationEntry entry,
OnSettingsClickListener onSettingsClick,
OnAppSettingsClickListener onAppSettingsClick,
+ OnFeedbackClickListener onFeedbackClickListener,
UiEventLogger uiEventLogger,
boolean isDeviceProvisioned,
boolean isNonblockable,
@@ -214,6 +228,7 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G
mSbn = entry.getSbn();
mPm = pm;
mAppSettingsClickListener = onAppSettingsClick;
+ mFeedbackClickListener = onFeedbackClickListener;
mAppName = mPackageName;
mOnSettingsClickListener = onSettingsClick;
mSingleNotificationChannel = notificationChannel;
@@ -318,19 +333,25 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G
// Delegate
bindDelegate();
- // Set up app settings link (i.e. Customize)
- View settingsLinkView = findViewById(R.id.app_settings);
- Intent settingsIntent = getAppSettingsIntent(mPm, mPackageName,
- mSingleNotificationChannel,
- mSbn.getId(), mSbn.getTag());
- if (settingsIntent != null
- && !TextUtils.isEmpty(mSbn.getNotification().getSettingsText())) {
- settingsLinkView.setVisibility(VISIBLE);
- settingsLinkView.setOnClickListener((View view) -> {
- mAppSettingsClickListener.onClick(view, settingsIntent);
- });
+
+ if (Flags.notificationClassificationUi() &&
+ SYSTEM_RESERVED_IDS.contains(mSingleNotificationChannel.getId())) {
+ bindFeedback();
} else {
- settingsLinkView.setVisibility(View.GONE);
+ // Set up app settings link (i.e. Customize)
+ View settingsLinkView = findViewById(R.id.app_settings);
+ Intent settingsIntent = getAppSettingsIntent(mPm, mPackageName,
+ mSingleNotificationChannel,
+ mSbn.getId(), mSbn.getTag());
+ if (settingsIntent != null
+ && !TextUtils.isEmpty(mSbn.getNotification().getSettingsText())) {
+ settingsLinkView.setVisibility(VISIBLE);
+ settingsLinkView.setOnClickListener((View view) -> {
+ mAppSettingsClickListener.onClick(view, settingsIntent);
+ });
+ } else {
+ settingsLinkView.setVisibility(View.GONE);
+ }
}
// System Settings button.
@@ -339,6 +360,51 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G
settingsButton.setVisibility(settingsButton.hasOnClickListeners() ? VISIBLE : GONE);
}
+ private void bindFeedback() {
+ View feedbackButton = findViewById(R.id.feedback);
+ Intent intent = getAssistantFeedbackIntent(mINotificationManager, mPm, mEntry);
+ if (!android.app.Flags.notificationClassificationUi() || intent == null) {
+ feedbackButton.setVisibility(GONE);
+ } else {
+ feedbackButton.setVisibility(VISIBLE);
+ feedbackButton.setOnClickListener((View v) -> {
+ if (mFeedbackClickListener != null) {
+ mFeedbackClickListener.onClick(v, intent);
+ }
+ });
+ }
+ }
+
+ public static Intent getAssistantFeedbackIntent(INotificationManager inm, PackageManager pm,
+ NotificationEntry entry) {
+ try {
+ ComponentName assistant = inm.getAllowedNotificationAssistant();
+ if (assistant == null) {
+ return null;
+ }
+ Intent intent = new Intent(
+ NotificationAssistantService.ACTION_NOTIFICATION_ASSISTANT_FEEDBACK_SETTINGS)
+ .setPackage(assistant.getPackageName());
+ final List<ResolveInfo> resolveInfos = pm.queryIntentActivities(
+ intent,
+ PackageManager.MATCH_DEFAULT_ONLY
+ );
+ if (resolveInfos == null || resolveInfos.size() == 0 || resolveInfos.get(0) == null) {
+ return null;
+ }
+ final ActivityInfo activityInfo = resolveInfos.get(0).activityInfo;
+ intent.setClassName(activityInfo.packageName, activityInfo.name);
+
+ intent.putExtra(NotificationAssistantService.EXTRA_NOTIFICATION_KEY, entry.getKey());
+ intent.putExtra(NotificationAssistantService.EXTRA_NOTIFICATION_ADJUSTMENT,
+ entry.getRanking().getSummarization() != null ? KEY_SUMMARIZATION : KEY_TYPE);
+ return intent;
+ } catch (Exception e) {
+ Slog.d(TAG, "no assistant?", e);
+ return null;
+ }
+ }
+
private OnClickListener getSettingsOnClickListener() {
if (mAppUid >= 0 && mOnSettingsClickListener != null && mIsDeviceProvisioned) {
final int appUidF = mAppUid;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationMenuRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationMenuRow.java
index d213c78a82c7..b96b224a7d2e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationMenuRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationMenuRow.java
@@ -263,12 +263,7 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl
mFeedbackItem = createFeedbackItem(mContext);
NotificationEntry entry = mParent.getEntry();
int personNotifType = mPeopleNotificationIdentifier.getPeopleNotificationType(entry);
- if (android.app.Flags.notificationClassificationUi()
- && entry.getChannel() != null
- && SYSTEM_RESERVED_IDS.contains(entry.getChannel().getId())) {
- // Bundled notification; create bundle-specific guts.
- mInfoItem = createBundleItem(mContext);
- } else if (personNotifType == PeopleNotificationIdentifier.TYPE_PERSON) {
+ if (personNotifType == PeopleNotificationIdentifier.TYPE_PERSON) {
mInfoItem = createPartialConversationItem(mContext);
} else if (personNotifType >= PeopleNotificationIdentifier.TYPE_FULL_PERSON) {
mInfoItem = createConversationItem(mContext);
@@ -698,16 +693,6 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl
R.drawable.ic_settings);
}
- static NotificationMenuItem createBundleItem(Context context) {
- Resources res = context.getResources();
- String infoDescription = res.getString(R.string.notification_menu_gear_description);
- BundleNotificationInfo infoContent =
- (BundleNotificationInfo) LayoutInflater.from(context).inflate(
- R.layout.bundle_notification_info, null, false);
- return new NotificationMenuItem(context, infoDescription, infoContent,
- R.drawable.ic_settings);
- }
-
static NotificationMenuItem createPartialConversationItem(Context context) {
Resources res = context.getResources();
String infoDescription = res.getString(R.string.notification_menu_gear_description);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImpl.kt
index f4aae6e288a7..20c3464536e9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImpl.kt
@@ -17,6 +17,7 @@ package com.android.systemui.statusbar.notification.row
import android.annotation.SuppressLint
import android.app.Notification
+import android.app.Notification.EXTRA_SUMMARIZED_CONTENT
import android.app.Notification.MessagingStyle
import android.content.Context
import android.content.ContextWrapper
@@ -490,6 +491,9 @@ constructor(
}
}
+ logger.logAsyncTaskProgress(entry, "loading RON images")
+ inflationProgress.rowImageInflater.loadImagesSynchronously(packageContext)
+
logger.logAsyncTaskProgress(entry, "getting row image resolver (on wrong thread!)")
val imageResolver = row.imageResolver
// wait for image resolver to finish preloading
@@ -582,6 +586,7 @@ constructor(
@VisibleForTesting
class InflationProgress(
@VisibleForTesting val packageContext: Context,
+ val rowImageInflater: RowImageInflater,
val remoteViews: NewRemoteViews,
val contentModel: NotificationContentModel,
val promotedContent: PromotedNotificationContentModel?,
@@ -674,15 +679,21 @@ constructor(
promotedNotificationContentExtractor: PromotedNotificationContentExtractor,
logger: NotificationRowContentBinderLogger,
): InflationProgress {
+ val rowImageInflater =
+ RowImageInflater.newInstance(previousIndex = row.mImageModelIndex)
+
val promotedContent =
if (PromotedNotificationContentModel.featureFlagEnabled()) {
logger.logAsyncTaskProgress(entry, "extracting promoted notification content")
- promotedNotificationContentExtractor.extractContent(entry, builder).also {
- logger.logAsyncTaskProgress(
- entry,
- "extracted promoted notification content: $it",
- )
- }
+ val imageModelProvider = rowImageInflater.useForContentModel()
+ promotedNotificationContentExtractor
+ .extractContent(entry, builder, imageModelProvider)
+ .also {
+ logger.logAsyncTaskProgress(
+ entry,
+ "extracted promoted notification content: $it",
+ )
+ }
} else {
null
}
@@ -719,7 +730,9 @@ constructor(
builder = builder,
systemUiContext = systemUiContext,
redactText = false,
- summarization = entry.ranking.summarization
+ summarization = entry.sbn.notification.extras.getCharSequence(
+ EXTRA_SUMMARIZED_CONTENT,
+ )
)
} else null
@@ -736,7 +749,7 @@ constructor(
builder = builder,
systemUiContext = systemUiContext,
redactText = true,
- summarization = null
+ summarization = null,
)
} else {
SingleLineViewInflater.inflateRedactedSingleLineViewModel(
@@ -761,6 +774,7 @@ constructor(
return InflationProgress(
packageContext = packageContext,
+ rowImageInflater = rowImageInflater,
remoteViews = remoteViews,
contentModel = contentModel,
promotedContent = promotedContent,
@@ -1474,6 +1488,9 @@ constructor(
}
logger.logAsyncTaskProgress(entry, "finishing")
+ // Put the new image index on the row
+ row.mImageModelIndex = result.rowImageInflater.getNewImageIndex()
+
entry.setContentModel(result.contentModel)
if (PromotedNotificationContentModel.featureFlagEnabled()) {
entry.promotedNotificationContentModel = result.promotedContent
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowLogger.kt
index a0b04155151c..9e1c974a60ca 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowLogger.kt
@@ -219,6 +219,21 @@ constructor(
{ "Failed to set magnetic and roundable targets for $str1 on state $str2." },
)
}
+
+ fun logMagneticRowTranslationNotSet(
+ state: MagneticNotificationRowManagerImpl.State,
+ entry: NotificationEntry,
+ ) {
+ buffer.log(
+ TAG,
+ LogLevel.ERROR,
+ {
+ str1 = entry.logKey
+ str2 = state.name
+ },
+ { "Failed to set magnetic row translation for $str1 on state $str2." },
+ )
+ }
}
private const val TAG = "NotifRow"
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/PromotedNotificationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/PromotedNotificationInfo.java
index e4a0fa5b534e..93b2a2d41691 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/PromotedNotificationInfo.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/PromotedNotificationInfo.java
@@ -56,6 +56,7 @@ public class PromotedNotificationInfo extends NotificationInfo {
NotificationEntry entry,
OnSettingsClickListener onSettingsClick,
OnAppSettingsClickListener onAppSettingsClick,
+ OnFeedbackClickListener feedbackClickListener,
UiEventLogger uiEventLogger,
boolean isDeviceProvisioned,
boolean isNonblockable,
@@ -64,8 +65,9 @@ public class PromotedNotificationInfo extends NotificationInfo {
MetricsLogger metricsLogger, OnClickListener onCloseClick) throws RemoteException {
super.bindNotification(pm, iNotificationManager, onUserInteractionCallback,
channelEditorDialogController, pkg, notificationChannel, entry, onSettingsClick,
- onAppSettingsClick, uiEventLogger, isDeviceProvisioned, isNonblockable,
- wasShownHighPriority, assistantFeedbackController, metricsLogger, onCloseClick);
+ onAppSettingsClick, feedbackClickListener, uiEventLogger, isDeviceProvisioned,
+ isNonblockable, wasShownHighPriority, assistantFeedbackController, metricsLogger,
+ onCloseClick);
mNotificationManager = iNotificationManager;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/RowImageInflater.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/RowImageInflater.kt
new file mode 100644
index 000000000000..95ef60fdcefe
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/RowImageInflater.kt
@@ -0,0 +1,216 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.notification.row
+
+import android.content.Context
+import android.graphics.drawable.Drawable
+import android.graphics.drawable.Icon
+import androidx.annotation.VisibleForTesting
+import com.android.app.tracing.traceSection
+import com.android.systemui.statusbar.notification.promoted.PromotedNotificationUiAod
+import com.android.systemui.statusbar.notification.row.shared.IconData
+import com.android.systemui.statusbar.notification.row.shared.ImageModel
+import com.android.systemui.statusbar.notification.row.shared.ImageModelProvider
+import com.android.systemui.statusbar.notification.row.shared.ImageModelProvider.ImageSizeClass
+import com.android.systemui.statusbar.notification.row.shared.ImageModelProvider.ImageTransform
+import java.util.Date
+
+/**
+ * A class used as part of the notification content inflation process to generate image models,
+ * resolve image content for active models, and manage a generational index of images to reduce
+ * image load overhead.
+ *
+ * Each round of inflation follows this process:
+ * 1. Instantiate a [newInstance] of this class using the current index.
+ * 2. Call [useForContentModel] and use that object to generate [ImageModel] objects.
+ * 3. [ImageModel] objects may be stored in a content model, which may be used in Flows or States.
+ * 4. On the background thread, call [loadImagesSynchronously] to ensure all models have images.
+ * 5. In case of success, call [getNewImageIndex] and if the result is not null, replace the
+ * original index with this one that is a generation newer. In case the inflation failed, the
+ * [RowImageInflater] can be discarded and while all newly resolved images will be discarded, no
+ * change will have been made to the previous index.
+ */
+interface RowImageInflater {
+ /**
+ * This returns an [ImageModelProvider] that can be used for getting models of images for use in
+ * a content model. Calling this method marks the inflater as being used, which means that
+ * instead of [getNewImageIndex] returning the previous index, it will now suddenly return
+ * nothing unless until other models are provided. This behavior allows the implicit absence of
+ * calls to evict unused images from the new index.
+ *
+ * NOTE: right now there is only one inflation process which uses this to access images. In the
+ * future we will likely have more. In that case, we will need this method and the
+ * [ImageModelIndex] to support the concept of different optional inflation lanes.
+ *
+ * Here's an example to illustrate why this would be necessary:
+ * 1. We inflate just the general content and save the index with 6 images.
+ * 2. Later, we inflate just the AOD RON content and save the index with 3 images, discarding
+ * the 3 from the general content.
+ * 3. Later, we reinflate the general content and have to reload 3 images that should've been in
+ * the index.
+ */
+ fun useForContentModel(): ImageModelProvider
+
+ /**
+ * Synchronously load all drawables that are not in the index, and ensure the [ImageModel]s
+ * previously returned by an [ImageModelProvider] all provide access to those drawables.
+ */
+ fun loadImagesSynchronously(context: Context)
+
+ /**
+ * Get the next generation of the [ImageModelIndex] for this row. This will return the previous
+ * index if this inflater was never used.
+ */
+ fun getNewImageIndex(): ImageModelIndex?
+
+ companion object {
+ @Suppress("NOTHING_TO_INLINE")
+ @JvmStatic
+ inline fun featureFlagEnabled() = PromotedNotificationUiAod.isEnabled
+
+ @JvmStatic
+ fun newInstance(previousIndex: ImageModelIndex?): RowImageInflater =
+ if (featureFlagEnabled()) {
+ RowImageInflaterImpl(previousIndex)
+ } else {
+ RowImageInflaterStub
+ }
+ }
+}
+
+/** A no-op implementation that does nothing */
+private object ImageModelProviderStub : ImageModelProvider {
+ override fun getImageModel(
+ icon: Icon,
+ sizeClass: ImageSizeClass,
+ transform: ImageTransform,
+ ): ImageModel? = null
+}
+
+/** A no-op implementation that does nothing */
+private object RowImageInflaterStub : RowImageInflater {
+ override fun useForContentModel(): ImageModelProvider = ImageModelProviderStub
+
+ override fun loadImagesSynchronously(context: Context) = Unit
+
+ override fun getNewImageIndex(): ImageModelIndex? = null
+}
+
+class RowImageInflaterImpl(private val previousIndex: ImageModelIndex?) : RowImageInflater {
+ private val providedImages = mutableListOf<LazyImage>()
+
+ /**
+ * For now there is only one way we use this, so we don't need to track which "model" it was
+ * used for. If in the future we use it for more models, then we can do that, and also track the
+ * parts of the index that should or shouldn't be copied.
+ */
+ private var wasUsed = false
+
+ /** Gets the ImageModelProvider that is used for inflating the content model. */
+ override fun useForContentModel(): ImageModelProvider {
+ wasUsed = true
+ return object : ImageModelProvider {
+ override fun getImageModel(
+ icon: Icon,
+ sizeClass: ImageSizeClass,
+ transform: ImageTransform,
+ ): ImageModel? {
+ val iconData = IconData.fromIcon(icon) ?: return null
+ // if we've already provided an equivalent image, return it again.
+ providedImages.firstOrNull(iconData, sizeClass, transform)?.let {
+ return it
+ }
+ // create and return a new entry
+ return LazyImage(iconData, sizeClass, transform).also { newImage ->
+ // ensure all entries are stored
+ providedImages.add(newImage)
+ // load the image result from the index into our new object
+ previousIndex?.findImage(iconData, sizeClass, transform)?.let {
+ // copy the result into our new object
+ newImage.result = it
+ }
+ }
+ }
+ }
+ }
+
+ override fun loadImagesSynchronously(context: Context) {
+ traceSection("RowImageInflater.loadImageDrawablesSync") {
+ providedImages.forEach { lazyImage ->
+ if (lazyImage.result == null) {
+ lazyImage.result = lazyImage.load(context)
+ }
+ }
+ }
+ }
+
+ private fun LazyImage.load(context: Context): ImageResult {
+ traceSection("LazyImage.load") {
+ // TODO: use the sizeClass to load the drawable into a correctly sized bitmap,
+ // and be sure to respect [lazyImage.transform.requiresSoftwareBitmapInput]
+ val iconDrawable =
+ icon.toIcon().loadDrawable(context)
+ ?: return ImageResult.Empty("Icon.loadDrawable() returned null for $icon")
+ return transform.transformDrawable(iconDrawable)?.let { ImageResult.Image(it) }
+ ?: return ImageResult.Empty("Transform ${transform.key} returned null")
+ }
+ }
+
+ override fun getNewImageIndex(): ImageModelIndex? =
+ if (wasUsed) ImageModelIndex(providedImages) else previousIndex
+}
+
+class ImageModelIndex internal constructor(data: Collection<LazyImage>) {
+ private val images = data.toMutableList()
+
+ fun findImage(
+ icon: IconData,
+ sizeClass: ImageSizeClass,
+ transform: ImageTransform,
+ ): ImageResult? = images.firstOrNull(icon, sizeClass, transform)?.result
+
+ @VisibleForTesting
+ val contentsForTesting: MutableList<LazyImage>
+ get() = images
+}
+
+private fun Collection<LazyImage>.firstOrNull(
+ icon: IconData,
+ sizeClass: ImageSizeClass,
+ transform: ImageTransform,
+): LazyImage? = firstOrNull {
+ it.sizeClass == sizeClass && it.icon == icon && it.transform == transform
+}
+
+data class LazyImage(
+ val icon: IconData,
+ val sizeClass: ImageSizeClass,
+ val transform: ImageTransform,
+ var result: ImageResult? = null,
+) : ImageModel {
+ override val drawable: Drawable?
+ get() = (result as? ImageResult.Image)?.drawable
+}
+
+/** The result of attempting to load an image. */
+sealed interface ImageResult {
+ /** Indicates a null result from the image loading process, with a reason for debugging */
+ data class Empty(val reason: String, val time: Date = Date()) : ImageResult
+
+ /** Stores the drawable result of loading an image */
+ data class Image(val drawable: Drawable) : ImageResult
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/SingleLineViewInflater.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/SingleLineViewInflater.kt
index c051513ef3b4..b3c8f2219f4d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/SingleLineViewInflater.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/SingleLineViewInflater.kt
@@ -61,7 +61,7 @@ internal object SingleLineViewInflater {
builder: Notification.Builder,
systemUiContext: Context,
redactText: Boolean,
- summarization: String?
+ summarization: CharSequence?
): SingleLineViewModel {
if (AsyncHybridViewInflation.isUnexpectedlyInLegacyMode()) {
return SingleLineViewModel(null, null, null)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/IconData.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/IconData.kt
new file mode 100644
index 000000000000..7120abcbaf24
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/IconData.kt
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.notification.row.shared
+
+import android.annotation.IdRes
+import android.annotation.SuppressLint
+import android.content.res.ColorStateList
+import android.graphics.Bitmap
+import android.graphics.BlendMode
+import android.graphics.drawable.Icon
+import android.net.Uri
+
+/**
+ * This is a representation of an [Icon] that supports the [equals] and [hashCode] semantics
+ * required for use as a map key, or for change detection.
+ */
+sealed class IconData {
+ abstract fun toIcon(): Icon
+
+ class BitmapIcon(val sourceBitmap: Bitmap, val isAdaptive: Boolean, val tint: IconTint?) :
+ IconData() {
+ override fun toIcon(): Icon =
+ if (isAdaptive) {
+ Icon.createWithAdaptiveBitmap(sourceBitmap)
+ } else {
+ Icon.createWithBitmap(sourceBitmap)
+ }
+ .withTint(tint)
+
+ override fun equals(other: Any?): Boolean =
+ when (other) {
+ null -> false
+ (other === this) -> true
+ !is BitmapIcon -> false
+ else ->
+ other.isAdaptive == isAdaptive &&
+ other.tint == tint &&
+ other.sourceBitmap.sameAs(sourceBitmap)
+ }
+
+ override fun hashCode(): Int {
+ var result = sourceBitmap.width
+ result = 31 * result + sourceBitmap.height
+ result = 31 * result + isAdaptive.hashCode()
+ result = 31 * result + (tint?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "BitmapIcon(sourceBitmap=$sourceBitmap, isAdaptive=$isAdaptive, tint=$tint)"
+ }
+
+ data class ResourceIcon(val packageName: String, @IdRes val resId: Int, val tint: IconTint?) :
+ IconData() {
+ @SuppressLint("ResourceType")
+ override fun toIcon(): Icon = Icon.createWithResource(packageName, resId).withTint(tint)
+ }
+
+ class DataIcon(val data: ByteArray, val tint: IconTint?) : IconData() {
+ override fun toIcon(): Icon = Icon.createWithData(data, 0, data.size).withTint(tint)
+
+ override fun equals(other: Any?): Boolean =
+ when (other) {
+ null -> false
+ (other === this) -> true
+ !is DataIcon -> false
+ else -> other.data.contentEquals(data) && other.tint == tint
+ }
+
+ override fun hashCode(): Int {
+ var result = data.contentHashCode()
+ result = 31 * result + (tint?.hashCode() ?: 0)
+ return result
+ }
+
+ override fun toString(): String =
+ "DataIcon(data.size=${data.size}, data.hashCode=${data.contentHashCode()}, tint=$tint)"
+ }
+
+ data class UriIcon(val uri: Uri, val isAdaptive: Boolean, val tint: IconTint?) : IconData() {
+
+ override fun toIcon(): Icon =
+ if (isAdaptive) {
+ Icon.createWithAdaptiveBitmapContentUri(uri)
+ } else {
+ Icon.createWithContentUri(uri)
+ }
+ .withTint(tint)
+ }
+
+ companion object {
+ fun fromIcon(icon: Icon): IconData? {
+ val tint = icon.tintList?.let { tintList -> IconTint(tintList, icon.tintBlendMode) }
+ return when (icon.type) {
+ Icon.TYPE_BITMAP ->
+ icon.bitmap?.let { bitmap -> BitmapIcon(bitmap, isAdaptive = false, tint) }
+ Icon.TYPE_ADAPTIVE_BITMAP ->
+ icon.bitmap?.let { bitmap -> BitmapIcon(bitmap, isAdaptive = true, tint) }
+ Icon.TYPE_URI -> UriIcon(icon.uri, isAdaptive = false, tint)
+ Icon.TYPE_URI_ADAPTIVE_BITMAP -> UriIcon(icon.uri, isAdaptive = true, tint)
+ Icon.TYPE_RESOURCE -> ResourceIcon(icon.resPackage, icon.resId, tint)
+ Icon.TYPE_DATA -> icon.safeData?.let { data -> DataIcon(data, tint) }
+ else -> null
+ }
+ }
+
+ private val Icon.safeData: ByteArray?
+ get() {
+ val dataBytes = dataBytes
+ val dataLength = dataLength
+ val dataOffset = dataOffset
+ if (dataOffset == 0 && dataLength == dataBytes.size) {
+ return dataBytes
+ }
+ if (dataLength < dataBytes.size - dataOffset) {
+ return null
+ }
+ return dataBytes.copyOfRange(dataOffset, dataOffset + dataLength)
+ }
+
+ private fun Icon.withTint(tint: IconTint?): Icon {
+ if (tint != null) {
+ tintList = tint.tintList
+ tintBlendMode = tint.blendMode
+ }
+ return this
+ }
+ }
+}
+
+data class IconTint(val tintList: ColorStateList, val blendMode: BlendMode)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/ImageModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/ImageModel.kt
new file mode 100644
index 000000000000..6a1533f97fca
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/ImageModel.kt
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.notification.row.shared
+
+import android.graphics.drawable.Drawable
+
+/**
+ * This object can provides access to a drawable in the future.
+ *
+ * Additionally, all implementations must provide stable equality which means that you can compare
+ * to other instances before the drawable has been resolved.
+ *
+ * This means you can use these in fields of a Model that is stored in State or StateFlow object to
+ * provide access to a drawable while still debouncing duplicates.
+ */
+interface ImageModel {
+ /** The image, once resolved. */
+ val drawable: Drawable?
+
+ /** Returns whether this model does not currently provide access to an image. */
+ fun isEmpty() = drawable == null
+
+ /** Returns whether this model currently provides access to an image. */
+ fun isNotEmpty() = drawable != null
+}
+
+/** Returns whether this model is null or does not currently provide access to an image. */
+fun ImageModel?.isNullOrEmpty() = this == null || this.isEmpty()
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/ImageModelProvider.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/ImageModelProvider.kt
new file mode 100644
index 000000000000..8eadf566d146
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/ImageModelProvider.kt
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.notification.row.shared
+
+import android.graphics.drawable.Drawable
+import android.graphics.drawable.Icon
+
+/**
+ * An interface which allows the background inflation process, when loading content from a
+ * notification, to acquire a [ImageModel] that can be used later in the inflation process to access
+ * the actual [Drawable] which it represents.
+ */
+interface ImageModelProvider {
+ /**
+ * Defines the rough size we expect the image to be. We use this abstraction to reduce memory
+ * footprint without coupling image loading to the view layer.
+ */
+ enum class ImageSizeClass {
+ /** Roughly 24dp */
+ SmallSquare,
+
+ /** Around 48dp */
+ MediumSquare,
+
+ /** About as wide as a notification. */
+ LargeWide,
+ }
+
+ /**
+ * This is the base class for an image transform that allows the loaded icon to be altered in
+ * some way (other than resizing) prior to being indexed. This transform will be used as part of
+ * the index key.
+ */
+ abstract class ImageTransform(val key: String) {
+ open val requiresSoftwareBitmapInput: Boolean = false
+
+ abstract fun transformDrawable(input: Drawable): Drawable?
+
+ final override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (other == null) return false
+ if (other !is ImageTransform) return false
+ return key == other.key
+ }
+
+ final override fun hashCode(): Int {
+ return key.hashCode()
+ }
+ }
+
+ /** The default passthrough transform for images */
+ object IdentityImageTransform : ImageTransform("Identity") {
+ override fun transformDrawable(input: Drawable) = input
+ }
+
+ /** Returns an [ImageModel] which will provide access to a [Drawable] in the future. */
+ fun getImageModel(
+ icon: Icon,
+ sizeClass: ImageSizeClass,
+ transform: ImageTransform = IdentityImageTransform,
+ ): ImageModel?
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/SkeletonImageTransform.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/SkeletonImageTransform.kt
new file mode 100644
index 000000000000..d69e546f640d
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/shared/SkeletonImageTransform.kt
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.notification.row.shared
+
+import android.content.Context
+import android.graphics.Color
+import android.graphics.drawable.Drawable
+import com.android.internal.util.ContrastColorUtil
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.shade.ShadeDisplayAware
+import javax.inject.Inject
+
+/**
+ * An [ImageModelProvider.ImageTransform] which acts as a filter to only return a drawable that is
+ * grayscale, and tints it to white for display on the AOD.
+ */
+@SysUISingleton
+class SkeletonImageTransform @Inject constructor(@ShadeDisplayAware context: Context) :
+ ImageModelProvider.ImageTransform("Skeleton") {
+
+ override val requiresSoftwareBitmapInput: Boolean = true
+
+ private val contrastColorUtil = ContrastColorUtil.getInstance(context)
+
+ override fun transformDrawable(input: Drawable): Drawable? {
+ return input
+ .takeIf { contrastColorUtil.isGrayscaleIcon(it) }
+ ?.mutate()
+ ?.apply { setTint(Color.WHITE) }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/SingleLineViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/SingleLineViewModel.kt
index 32ded25f18a1..bb5cff98c470 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/SingleLineViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/SingleLineViewModel.kt
@@ -46,7 +46,7 @@ data class SingleLineViewModel(
data class ConversationData(
val conversationSenderName: CharSequence?,
val avatar: ConversationAvatar,
- val summarization: String?
+ val summarization: CharSequence?
)
/**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/shared/ActiveNotificationModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/shared/ActiveNotificationModel.kt
index ab8be306ab5e..f00c3ae20e30 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/shared/ActiveNotificationModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/shared/ActiveNotificationModel.kt
@@ -68,6 +68,8 @@ data class ActiveNotificationModel(
val uid: Int,
/** The notifying app's packageName. */
val packageName: String,
+ /** The notifying app's display name. */
+ val appName: String,
/** The intent to execute if UI related to this notification is clicked. */
val contentIntent: PendingIntent?,
/** A small per-notification ID, used for statsd logging. */
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImpl.kt
index bddff12be280..3941700496f4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImpl.kt
@@ -57,7 +57,7 @@ constructor(
SpringForce().setStiffness(SNAP_BACK_STIFFNESS).setDampingRatio(SNAP_BACK_DAMPING_RATIO)
// Multiplier applied to the translation of a row while swiped
- private val swipedRowMultiplier =
+ val swipedRowMultiplier =
MAGNETIC_TRANSLATION_MULTIPLIERS[MAGNETIC_TRANSLATION_MULTIPLIERS.size / 2]
override fun setSwipeThresholdPx(thresholdPx: Float) {
@@ -111,48 +111,75 @@ constructor(
): Boolean {
if (!row.isSwipedTarget()) return false
+ val canTargetBeDismissed =
+ currentMagneticListeners.swipedListener()?.canRowBeDismissed() ?: false
when (currentState) {
+ State.IDLE -> {
+ logger.logMagneticRowTranslationNotSet(currentState, row.entry)
+ return false
+ }
State.TARGETS_SET -> {
- pullTargets(translation)
+ pullTargets(translation, canTargetBeDismissed)
currentState = State.PULLING
}
State.PULLING -> {
- val targetTranslation = swipedRowMultiplier * translation
- val crossedThreshold = abs(targetTranslation) >= magneticDetachThreshold
- if (crossedThreshold) {
- snapNeighborsBack()
- currentMagneticListeners.swipedListener()?.let { detach(it, translation) }
- currentState = State.DETACHED
+ if (canTargetBeDismissed) {
+ pullDismissibleRow(translation)
} else {
- pullTargets(translation)
+ pullTargets(translation, canSwipedBeDismissed = false)
}
}
State.DETACHED -> {
val swiped = currentMagneticListeners.swipedListener()
swiped?.setMagneticTranslation(translation)
}
- else -> {}
}
return true
}
- private fun pullTargets(translation: Float) {
+ private fun pullDismissibleRow(translation: Float) {
+ val targetTranslation = swipedRowMultiplier * translation
+ val crossedThreshold = abs(targetTranslation) >= magneticDetachThreshold
+ if (crossedThreshold) {
+ snapNeighborsBack()
+ currentMagneticListeners.swipedListener()?.let { detach(it, translation) }
+ currentState = State.DETACHED
+ } else {
+ pullTargets(translation, canSwipedBeDismissed = true)
+ }
+ }
+
+ private fun pullTargets(translation: Float, canSwipedBeDismissed: Boolean) {
var targetTranslation: Float
currentMagneticListeners.forEachIndexed { i, listener ->
- targetTranslation = MAGNETIC_TRANSLATION_MULTIPLIERS[i] * translation
- listener?.setMagneticTranslation(targetTranslation)
+ listener?.let {
+ if (!canSwipedBeDismissed || !it.canRowBeDismissed()) {
+ // Use a reduced translation if the target swiped can't be dismissed or if the
+ // target itself can't be dismissed
+ targetTranslation =
+ MAGNETIC_TRANSLATION_MULTIPLIERS[i] * translation * MAGNETIC_REDUCTION
+ } else {
+ targetTranslation = MAGNETIC_TRANSLATION_MULTIPLIERS[i] * translation
+ }
+ it.setMagneticTranslation(targetTranslation)
+ }
}
- playPullHaptics(mappedTranslation = swipedRowMultiplier * translation)
+ playPullHaptics(mappedTranslation = swipedRowMultiplier * translation, canSwipedBeDismissed)
}
- private fun playPullHaptics(mappedTranslation: Float) {
+ private fun playPullHaptics(mappedTranslation: Float, canSwipedBeDismissed: Boolean) {
val normalizedTranslation = abs(mappedTranslation) / magneticDetachThreshold
- val vibrationScale =
- (normalizedTranslation * MAX_VIBRATION_SCALE).pow(VIBRATION_PERCEPTION_EXPONENT)
+ val scaleFactor =
+ if (canSwipedBeDismissed) {
+ WEAK_VIBRATION_SCALE
+ } else {
+ STRONG_VIBRATION_SCALE
+ }
+ val vibrationScale = scaleFactor * normalizedTranslation
msdlPlayer.playToken(
MSDLToken.DRAG_INDICATOR_CONTINUOUS,
InteractionProperties.DynamicVibrationScale(
- scale = vibrationScale,
+ scale = vibrationScale.pow(VIBRATION_PERCEPTION_EXPONENT),
vibrationAttributes = VIBRATION_ATTRIBUTES_PIPELINING,
),
)
@@ -230,6 +257,8 @@ constructor(
*/
private val MAGNETIC_TRANSLATION_MULTIPLIERS = listOf(0.18f, 0.28f, 0.5f, 0.28f, 0.18f)
+ const val MAGNETIC_REDUCTION = 0.65f
+
/** Spring parameters for physics animators */
private const val DETACH_STIFFNESS = 800f
private const val DETACH_DAMPING_RATIO = 0.95f
@@ -241,7 +270,8 @@ constructor(
.setUsage(VibrationAttributes.USAGE_TOUCH)
.setFlags(VibrationAttributes.FLAG_PIPELINED_EFFECT)
.build()
- private const val MAX_VIBRATION_SCALE = 0.2f
private const val VIBRATION_PERCEPTION_EXPONENT = 1 / 0.89f
+ private const val WEAK_VIBRATION_SCALE = 0.2f
+ private const val STRONG_VIBRATION_SCALE = 0.45f
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticRowListener.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticRowListener.kt
index 8a1adfe95392..46036d4c1fad 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticRowListener.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticRowListener.kt
@@ -41,4 +41,7 @@ interface MagneticRowListener {
/** Cancel any animations related to the magnetic interactions of the row */
fun cancelMagneticAnimations()
+
+ /** Can the row be dismissed. */
+ fun canRowBeDismissed(): Boolean
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java
index ea397b61fe84..b548b5835e1e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java
@@ -970,7 +970,9 @@ public class NotificationChildrenContainer extends ViewGroup
if (mHeaderViewState != null) {
mHeaderViewState.applyToView(mGroupHeader);
}
- if (notificationsRedesignTemplates()) {
+ // Only apply the special viewState for the header's children if we're not currently showing
+ // the minimized header.
+ if (notificationsRedesignTemplates() && !showingAsLowPriority()) {
if (mTopLineViewState != null) {
mTopLineViewState.applyToView(mGroupHeader.getTopLineView());
}
@@ -1236,14 +1238,12 @@ public class NotificationChildrenContainer extends ViewGroup
}
}
- private ViewGroup calculateDesiredHeader() {
- ViewGroup desiredHeader;
+ private NotificationHeaderView calculateDesiredHeader() {
if (showingAsLowPriority()) {
- desiredHeader = mMinimizedGroupHeader;
+ return mMinimizedGroupHeader;
} else {
- desiredHeader = mGroupHeader;
+ return mGroupHeader;
}
- return desiredHeader;
}
private void startChildAlphaAnimations(boolean toVisible) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
index 876090101f6e..42d02e10ab8d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
@@ -6591,10 +6591,7 @@ public class NotificationStackScrollLayout
static boolean canChildBeDismissed(View v) {
if (v instanceof ExpandableNotificationRow row) {
- if (row.areGutsExposed() || !row.getEntry().hasFinishedInitialization()) {
- return false;
- }
- return row.canViewBeDismissed();
+ return row.canExpandableViewBeDismissed();
}
return false;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationTargetsHelper.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationTargetsHelper.kt
index 74e8b8ef29c2..b69b936ea9f0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationTargetsHelper.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationTargetsHelper.kt
@@ -3,7 +3,9 @@ package com.android.systemui.statusbar.notification.stack
import androidx.core.view.children
import androidx.core.view.isVisible
import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.statusbar.NotificationShelf
import com.android.systemui.statusbar.notification.Roundable
+import com.android.systemui.statusbar.notification.footer.ui.view.FooterView
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.row.ExpandableView
import javax.inject.Inject
@@ -129,6 +131,10 @@ class NotificationTargetsHelper @Inject constructor() {
magneticTargets[leftIndex] = leftElement.magneticRowListener
leftIndex--
} else {
+ if (leftElement.isValidMagneticBoundary()) {
+ // Add the boundary and then stop the iterating
+ magneticTargets[leftIndex] = leftElement?.magneticRowListener
+ }
canMoveLeft = false
}
}
@@ -138,12 +144,24 @@ class NotificationTargetsHelper @Inject constructor() {
magneticTargets[rightIndex] = rightElement.magneticRowListener
rightIndex++
} else {
+ if (rightElement.isValidMagneticBoundary()) {
+ // Add the boundary and then stop the iterating
+ magneticTargets[rightIndex] = rightElement?.magneticRowListener
+ }
canMoveRight = false
}
}
}
return magneticTargets
}
+
+ private fun ExpandableView?.isValidMagneticBoundary(): Boolean =
+ when (this) {
+ is FooterView,
+ is NotificationShelf,
+ is SectionHeaderView -> true
+ else -> false
+ }
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationStackAppearanceInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationStackAppearanceInteractor.kt
index 1bd44406507d..96af83336441 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationStackAppearanceInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationStackAppearanceInteractor.kt
@@ -19,7 +19,7 @@ package com.android.systemui.statusbar.notification.stack.domain.interactor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.scene.domain.interactor.SceneInteractor
-import com.android.systemui.shade.domain.interactor.ShadeInteractor
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.statusbar.notification.stack.data.repository.NotificationPlaceholderRepository
import com.android.systemui.statusbar.notification.stack.data.repository.NotificationViewHeightRepository
@@ -45,7 +45,7 @@ constructor(
private val viewHeightRepository: NotificationViewHeightRepository,
private val placeholderRepository: NotificationPlaceholderRepository,
sceneInteractor: SceneInteractor,
- shadeInteractor: ShadeInteractor,
+ shadeModeInteractor: ShadeModeInteractor,
) {
/** The bounds of the notification stack in the current scene. */
val notificationShadeScrimBounds: StateFlow<ShadeScrimBounds?> =
@@ -60,7 +60,7 @@ constructor(
/** The rounding of the notification stack. */
val shadeScrimRounding: Flow<ShadeScrimRounding> =
- combine(shadeInteractor.shadeMode, isExpandingFromHeadsUp) {
+ combine(shadeModeInteractor.shadeMode, isExpandingFromHeadsUp) {
shadeMode,
isExpandingFromHeadsUp ->
ShadeScrimRounding(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/view/NotificationStatsLoggerImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/view/NotificationStatsLoggerImpl.kt
index c8c798d00a06..5689230f6bed 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/view/NotificationStatsLoggerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/view/NotificationStatsLoggerImpl.kt
@@ -19,6 +19,7 @@ package com.android.systemui.statusbar.notification.stack.ui.view
import android.service.notification.NotificationListenerService
import androidx.annotation.VisibleForTesting
import com.android.app.tracing.coroutines.TrackTracer
+import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.internal.statusbar.IStatusBarService
import com.android.internal.statusbar.NotificationVisibility
import com.android.systemui.dagger.SysUISingleton
@@ -33,8 +34,9 @@ import java.util.concurrent.ConcurrentHashMap
import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Job
-import com.android.app.tracing.coroutines.launchTraced as launch
+import kotlinx.coroutines.channels.BufferOverflow
+import kotlinx.coroutines.channels.Channel
+import kotlinx.coroutines.channels.consumeEach
import kotlinx.coroutines.withContext
@VisibleForTesting const val UNKNOWN_RANK = -1
@@ -49,32 +51,56 @@ constructor(
private val notificationPanelLogger: NotificationPanelLogger,
private val statusBarService: IStatusBarService,
) : NotificationStatsLogger {
- private val lastLoggedVisibilities = mutableMapOf<String, VisibilityState>()
- private var logVisibilitiesJob: Job? = null
-
private val expansionStates: MutableMap<String, ExpansionState> =
ConcurrentHashMap<String, ExpansionState>()
@VisibleForTesting
val lastReportedExpansionValues: MutableMap<String, Boolean> =
ConcurrentHashMap<String, Boolean>()
+ private val visibilityLogger =
+ Channel<VisibilityAction>(capacity = 2, onBufferOverflow = BufferOverflow.DROP_OLDEST)
+
+ init {
+ applicationScope.launch { consumeVisibilityActions() }
+ }
+
+ private suspend fun consumeVisibilityActions() {
+ val lastLoggedVisibilities = mutableMapOf<String, VisibilityState>()
+
+ visibilityLogger.consumeEach { action ->
+ val newVisibilities =
+ when (action) {
+ is VisibilityAction.Change -> action.visibilities
+ is VisibilityAction.Clear -> emptyMap()
+ }
+
+ val newlyVisible = newVisibilities - lastLoggedVisibilities.keys
+ val noLongerVisible = lastLoggedVisibilities - newVisibilities.keys
+
+ maybeLogVisibilityChanges(newlyVisible, noLongerVisible, action.activeCount)
+ updateExpansionStates(newlyVisible, noLongerVisible)
+ TrackTracer.instantForGroup("Notifications", "Active", action.activeCount)
+ TrackTracer.instantForGroup("Notifications", "Visible", newVisibilities.size)
+
+ lastLoggedVisibilities.clear()
+ lastLoggedVisibilities.putAll(newVisibilities)
+ }
+ }
+
override fun onNotificationLocationsChanged(
locationsProvider: Callable<Map<String, Int>>,
notificationRanks: Map<String, Int>,
) {
- if (logVisibilitiesJob?.isActive == true) {
- return
- }
-
- logVisibilitiesJob =
- startLogVisibilitiesJob(
- newVisibilities =
+ visibilityLogger.trySend(
+ VisibilityAction.Change(
+ visibilities =
combine(
visibilities = locationsProvider.call(),
- rankingsMap = notificationRanks
+ rankingsMap = notificationRanks,
),
- activeNotifCount = notificationRanks.size,
+ activeCount = notificationRanks.size,
)
+ )
}
override fun onNotificationExpansionChanged(
@@ -125,7 +151,7 @@ constructor(
/* expanded = */ expansionState.isExpanded,
/* notificationLocation = */ expansionState.location
.toNotificationLocation()
- .ordinal
+ .ordinal,
)
}
}
@@ -138,7 +164,7 @@ constructor(
withContext(bgDispatcher) {
notificationPanelLogger.logPanelShown(
isOnLockScreen,
- activeNotifications.toNotificationProto()
+ activeNotifications.toNotificationProto(),
)
}
}
@@ -147,11 +173,7 @@ constructor(
override fun onLockscreenOrShadeNotInteractive(
activeNotifications: List<ActiveNotificationModel>
) {
- logVisibilitiesJob =
- startLogVisibilitiesJob(
- newVisibilities = emptyMap(),
- activeNotifCount = activeNotifications.size
- )
+ visibilityLogger.trySend(VisibilityAction.Clear(activeCount = activeNotifications.size))
}
override fun onNotificationRemoved(key: String) {
@@ -167,29 +189,12 @@ constructor(
private fun combine(
visibilities: Map<String, Int>,
- rankingsMap: Map<String, Int>
+ rankingsMap: Map<String, Int>,
): Map<String, VisibilityState> =
visibilities.mapValues { entry ->
VisibilityState(entry.key, entry.value, rankingsMap[entry.key] ?: UNKNOWN_RANK)
}
- private fun startLogVisibilitiesJob(
- newVisibilities: Map<String, VisibilityState>,
- activeNotifCount: Int,
- ) =
- applicationScope.launch {
- val newlyVisible = newVisibilities - lastLoggedVisibilities.keys
- val noLongerVisible = lastLoggedVisibilities - newVisibilities.keys
-
- maybeLogVisibilityChanges(newlyVisible, noLongerVisible, activeNotifCount)
- updateExpansionStates(newlyVisible, noLongerVisible)
- TrackTracer.instantForGroup("Notifications", "Active", activeNotifCount)
- TrackTracer.instantForGroup("Notifications", "Visible", newVisibilities.size)
-
- lastLoggedVisibilities.clear()
- lastLoggedVisibilities.putAll(newVisibilities)
- }
-
private suspend fun maybeLogVisibilityChanges(
newlyVisible: Map<String, VisibilityState>,
noLongerVisible: Map<String, VisibilityState>,
@@ -205,7 +210,7 @@ constructor(
val noLongerVisibleAr =
noLongerVisible.mapToNotificationVisibilitiesAr(
visible = false,
- count = activeNotifCount
+ count = activeNotifCount,
)
withContext(bgDispatcher) {
@@ -218,7 +223,7 @@ constructor(
private fun updateExpansionStates(
newlyVisible: Map<String, VisibilityState>,
- noLongerVisible: Map<String, VisibilityState>
+ noLongerVisible: Map<String, VisibilityState>,
) {
expansionStates.forEach { (key, expansionState) ->
if (newlyVisible.contains(key)) {
@@ -241,11 +246,16 @@ constructor(
}
}
- private data class VisibilityState(
- val key: String,
- val location: Int,
- val rank: Int,
- )
+ private sealed class VisibilityAction(open val activeCount: Int) {
+ data class Change(
+ val visibilities: Map<String, VisibilityState>,
+ override val activeCount: Int,
+ ) : VisibilityAction(activeCount)
+
+ data class Clear(override val activeCount: Int) : VisibilityAction(activeCount)
+ }
+
+ private data class VisibilityState(val key: String, val location: Int, val rank: Int)
private data class ExpansionState(
val key: String,
@@ -278,7 +288,7 @@ constructor(
/* rank = */ state.rank,
/* count = */ count,
/* visible = */ visible,
- /* location = */ state.location.toNotificationLocation()
+ /* location = */ state.location.toNotificationLocation(),
)
}
.toTypedArray()
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/SharedNotificationContainerBinder.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/SharedNotificationContainerBinder.kt
index f7401440cfcb..ece1803e14c3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/SharedNotificationContainerBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/SharedNotificationContainerBinder.kt
@@ -28,6 +28,7 @@ import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.keyguard.ui.viewmodel.ViewStateAccessor
import com.android.systemui.lifecycle.repeatWhenAttached
import com.android.systemui.scene.shared.flag.SceneContainerFlag
+import com.android.systemui.shared.Flags.extendedWallpaperEffects
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
import com.android.systemui.statusbar.notification.stack.NotificationStackSizeCalculator
import com.android.systemui.statusbar.notification.stack.ui.view.SharedNotificationContainer
@@ -143,7 +144,7 @@ constructor(
}
if (!SceneContainerFlag.isEnabled) {
- if (Flags.magicPortraitWallpapers()) {
+ if (extendedWallpaperEffects()) {
launch {
combine(
viewModel.getNotificationStackAbsoluteBottom(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationLockscreenScrimViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationLockscreenScrimViewModel.kt
index d68f769dffdf..4a28b545fae9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationLockscreenScrimViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationLockscreenScrimViewModel.kt
@@ -29,7 +29,7 @@ import com.android.systemui.lifecycle.ExclusiveActivatable
import com.android.systemui.lifecycle.Hydrator
import com.android.systemui.notifications.ui.composable.Notifications
import com.android.systemui.res.R
-import com.android.systemui.shade.domain.interactor.ShadeInteractor
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.shade.ui.composable.Shade
import com.android.systemui.statusbar.notification.stack.domain.interactor.NotificationStackAppearanceInteractor
@@ -46,7 +46,7 @@ class NotificationLockscreenScrimViewModel
@AssistedInject
constructor(
dumpManager: DumpManager,
- shadeInteractor: ShadeInteractor,
+ shadeModeInteractor: ShadeModeInteractor,
private val stackAppearanceInteractor: NotificationStackAppearanceInteractor,
) :
ActivatableFlowDumper by ActivatableFlowDumperImpl(dumpManager, "NotificationScrollViewModel"),
@@ -54,7 +54,7 @@ constructor(
private val hydrator = Hydrator("NotificationLockscreenScrimViewModel.hydrator")
- val shadeMode: StateFlow<ShadeMode> = shadeInteractor.shadeMode
+ val shadeMode: StateFlow<ShadeMode> = shadeModeInteractor.shadeMode
/** The [ElementKey] to use for the scrim. */
val element: ElementViewModel by
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationScrollViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationScrollViewModel.kt
index 20149826ceb9..7f016a1cbc2e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationScrollViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationScrollViewModel.kt
@@ -31,6 +31,7 @@ import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.domain.interactor.ShadeInteractor
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.statusbar.domain.interactor.RemoteInputInteractor
import com.android.systemui.statusbar.notification.stack.domain.interactor.NotificationStackAppearanceInteractor
@@ -63,6 +64,7 @@ constructor(
dumpManager: DumpManager,
private val stackAppearanceInteractor: NotificationStackAppearanceInteractor,
shadeInteractor: ShadeInteractor,
+ shadeModeInteractor: ShadeModeInteractor,
private val remoteInputInteractor: RemoteInputInteractor,
private val sceneInteractor: SceneInteractor,
// TODO(b/336364825) Remove Lazy when SceneContainerFlag is released -
@@ -151,10 +153,10 @@ constructor(
val expandFraction: Flow<Float> =
combine(
shadeInteractor.shadeExpansion,
- shadeInteractor.shadeMode,
shadeInteractor.qsExpansion,
+ shadeModeInteractor.shadeMode,
sceneInteractor.transitionState,
- ) { shadeExpansion, _, qsExpansion, transitionState ->
+ ) { shadeExpansion, qsExpansion, _, transitionState ->
when (transitionState) {
is Idle ->
if (
@@ -210,7 +212,8 @@ constructor(
sceneInteractor.isSceneInFamily(scene, this)
private val qsAllowsClipping: Flow<Boolean> =
- combine(shadeInteractor.shadeMode, shadeInteractor.qsExpansion) { shadeMode, qsExpansion ->
+ combine(shadeModeInteractor.shadeMode, shadeInteractor.qsExpansion) { shadeMode, qsExpansion
+ ->
when (shadeMode) {
is ShadeMode.Dual -> false
is ShadeMode.Split -> true
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModel.kt
index 8e12e081e861..000b3f643e9a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModel.kt
@@ -30,6 +30,7 @@ import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.domain.interactor.ShadeInteractor
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.statusbar.domain.interactor.RemoteInputInteractor
import com.android.systemui.statusbar.notification.domain.interactor.HeadsUpNotificationInteractor
@@ -58,6 +59,7 @@ constructor(
private val interactor: NotificationStackAppearanceInteractor,
private val sceneInteractor: SceneInteractor,
private val shadeInteractor: ShadeInteractor,
+ shadeModeInteractor: ShadeModeInteractor,
private val headsUpNotificationInteractor: HeadsUpNotificationInteractor,
remoteInputInteractor: RemoteInputInteractor,
featureFlags: FeatureFlagsClassic,
@@ -75,16 +77,16 @@ constructor(
val notificationsShadeContentKey: ContentKey by
hydrator.hydratedStateOf(
traceName = "notificationsShadeContentKey",
- initialValue = getNotificationsShadeContentKey(shadeInteractor.shadeMode.value),
- source = shadeInteractor.shadeMode.map { getNotificationsShadeContentKey(it) },
+ initialValue = getNotificationsShadeContentKey(shadeModeInteractor.shadeMode.value),
+ source = shadeModeInteractor.shadeMode.map { getNotificationsShadeContentKey(it) },
)
/** The content key to use for the quick settings shade. */
val quickSettingsShadeContentKey: ContentKey by
hydrator.hydratedStateOf(
traceName = "quickSettingsShadeContentKey",
- initialValue = getQuickSettingsShadeContentKey(shadeInteractor.shadeMode.value),
- source = shadeInteractor.shadeMode.map { getQuickSettingsShadeContentKey(it) },
+ initialValue = getQuickSettingsShadeContentKey(shadeModeInteractor.shadeMode.value),
+ source = shadeModeInteractor.shadeMode.map { getQuickSettingsShadeContentKey(it) },
)
/** DEBUG: whether the placeholder should be made slightly visible for positional debugging. */
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
index b6d89ecf29f2..75e89a676d19 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
@@ -76,6 +76,7 @@ import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.LargeScreenHeaderHelper
import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.shade.domain.interactor.ShadeInteractor
+import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.shade.shared.model.ShadeMode.Dual
import com.android.systemui.shade.shared.model.ShadeMode.Single
import com.android.systemui.shade.shared.model.ShadeMode.Split
@@ -90,6 +91,7 @@ import com.android.systemui.util.kotlin.sample
import dagger.Lazy
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.currentCoroutineContext
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
@@ -110,6 +112,7 @@ import kotlinx.coroutines.flow.transformWhile
import kotlinx.coroutines.isActive
/** View-model for the shared notification container, used by both the shade and keyguard spaces */
+@OptIn(ExperimentalCoroutinesApi::class)
@SysUISingleton
class SharedNotificationContainerViewModel
@Inject
@@ -122,7 +125,8 @@ constructor(
private val keyguardInteractor: KeyguardInteractor,
private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
private val shadeInteractor: ShadeInteractor,
- private val notificationStackAppearanceInteractor: NotificationStackAppearanceInteractor,
+ shadeModeInteractor: ShadeModeInteractor,
+ notificationStackAppearanceInteractor: NotificationStackAppearanceInteractor,
private val alternateBouncerToGoneTransitionViewModel:
AlternateBouncerToGoneTransitionViewModel,
private val alternateBouncerToPrimaryBouncerTransitionViewModel:
@@ -232,7 +236,7 @@ constructor(
if (SceneContainerFlag.isEnabled) {
combine(
shadeInteractor.isShadeLayoutWide,
- shadeInteractor.shadeMode,
+ shadeModeInteractor.shadeMode,
configurationInteractor.onAnyConfigurationChange,
) { isShadeLayoutWide, shadeMode, _ ->
with(context.resources) {
@@ -477,7 +481,7 @@ constructor(
*/
private val alphaForShadeAndQsExpansion: Flow<Float> =
if (SceneContainerFlag.isEnabled) {
- shadeInteractor.shadeMode.flatMapLatest { shadeMode ->
+ shadeModeInteractor.shadeMode.flatMapLatest { shadeMode ->
when (shadeMode) {
Single ->
combineTransform(
@@ -539,7 +543,7 @@ constructor(
private fun bouncerToGoneNotificationAlpha(viewState: ViewStateAccessor): Flow<Float> =
merge(
- primaryBouncerToGoneTransitionViewModel.notificationAlpha,
+ primaryBouncerToGoneTransitionViewModel.notificationAlpha(viewState),
alternateBouncerToGoneTransitionViewModel.notificationAlpha(viewState),
)
.sample(communalSceneInteractor.isCommunalVisible) { alpha, isCommunalVisible ->
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarterImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarterImpl.kt
index 5a63c0cd84e6..bd1d7f755a74 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarterImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarterImpl.kt
@@ -30,6 +30,7 @@ import com.android.systemui.statusbar.SysuiStatusBarStateController
import com.android.systemui.util.concurrency.DelayableExecutor
import dagger.Lazy
import javax.inject.Inject
+import kotlinx.coroutines.CoroutineScope
/** Handles start activity logic in SystemUI. */
@SysUISingleton
@@ -52,9 +53,10 @@ constructor(
override fun registerTransition(
cookie: ActivityTransitionAnimator.TransitionCookie,
controllerFactory: ActivityTransitionAnimator.ControllerFactory,
+ scope: CoroutineScope,
) {
if (!TransitionAnimator.longLivedReturnAnimationsEnabled()) return
- activityStarterInternal.registerTransition(cookie, controllerFactory)
+ activityStarterInternal.registerTransition(cookie, controllerFactory, scope)
}
override fun unregisterTransition(cookie: ActivityTransitionAnimator.TransitionCookie) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarterInternal.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarterInternal.kt
index 5e427fbf1f7e..015ec3052134 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarterInternal.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarterInternal.kt
@@ -25,15 +25,17 @@ import android.view.View
import com.android.systemui.ActivityIntentHelper
import com.android.systemui.animation.ActivityTransitionAnimator
import com.android.systemui.plugins.ActivityStarter
+import kotlinx.coroutines.CoroutineScope
interface ActivityStarterInternal {
/**
* Registers the given [controllerFactory] for launching and closing transitions matching the
- * [cookie] and the [ComponentName] that it contains.
+ * [cookie] and the [ComponentName] that it contains, within the given [scope].
*/
fun registerTransition(
cookie: ActivityTransitionAnimator.TransitionCookie,
controllerFactory: ActivityTransitionAnimator.ControllerFactory,
+ scope: CoroutineScope,
)
/**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarterInternalImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarterInternalImpl.kt
index 7289c2ed5897..6e82d7f7401a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarterInternalImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarterInternalImpl.kt
@@ -66,6 +66,7 @@ import com.android.systemui.util.kotlin.getOrNull
import dagger.Lazy
import java.util.Optional
import javax.inject.Inject
+import kotlinx.coroutines.CoroutineScope
/**
* Encapsulates the activity logic for activity starter when the SceneContainerFlag is enabled.
@@ -105,6 +106,7 @@ constructor(
override fun registerTransition(
cookie: ActivityTransitionAnimator.TransitionCookie,
controllerFactory: ActivityTransitionAnimator.ControllerFactory,
+ scope: CoroutineScope,
) {
check(TransitionAnimator.longLivedReturnAnimationsEnabled())
@@ -116,7 +118,7 @@ constructor(
controllerFactory.launchCujType,
controllerFactory.returnCujType,
) {
- override fun createController(
+ override suspend fun createController(
forLaunch: Boolean
): ActivityTransitionAnimator.Controller {
val baseController = controllerFactory.createController(forLaunch)
@@ -132,7 +134,7 @@ constructor(
}
}
- activityTransitionAnimator.register(cookie, factory)
+ activityTransitionAnimator.register(cookie, factory, scope)
}
override fun unregisterTransition(cookie: ActivityTransitionAnimator.TransitionCookie) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
index b146b92ed110..a9b3753b42cb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
@@ -21,15 +21,14 @@ import static android.app.StatusBarManager.WINDOW_STATE_HIDDEN;
import static android.app.StatusBarManager.WINDOW_STATE_SHOWING;
import static android.app.StatusBarManager.WindowVisibleState;
import static android.app.StatusBarManager.windowStateToString;
+import static android.service.quickaccesswallet.Flags.launchWalletOptionOnPowerDoubleTap;
+import static android.service.quickaccesswallet.Flags.launchWalletViaSysuiCallbacks;
import static android.view.View.IMPORTANT_FOR_ACCESSIBILITY_AUTO;
import static android.view.View.IMPORTANT_FOR_ACCESSIBILITY_NO;
import static android.view.View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS;
import static androidx.lifecycle.Lifecycle.State.RESUMED;
-import static android.service.quickaccesswallet.Flags.launchWalletOptionOnPowerDoubleTap;
-import static android.service.quickaccesswallet.Flags.launchWalletViaSysuiCallbacks;
-
import static com.android.systemui.Dependency.TIME_TICK_HANDLER_NAME;
import static com.android.systemui.Flags.keyboardShortcutHelperRewrite;
import static com.android.systemui.Flags.lightRevealMigration;
@@ -38,6 +37,7 @@ import static com.android.systemui.Flags.statusBarSignalPolicyRefactor;
import static com.android.systemui.charging.WirelessChargingAnimation.UNKNOWN_BATTERY_LEVEL;
import static com.android.systemui.flags.Flags.SHORTCUT_LIST_SEARCH_LAYOUT;
import static com.android.systemui.statusbar.StatusBarState.SHADE;
+
import android.annotation.Nullable;
import android.app.ActivityOptions;
import android.app.IWallpaperManager;
@@ -176,6 +176,7 @@ import com.android.systemui.shade.ShadeExpansionStateManager;
import com.android.systemui.shade.ShadeLogger;
import com.android.systemui.shade.ShadeSurface;
import com.android.systemui.shade.ShadeViewController;
+import com.android.systemui.shade.shared.flag.ShadeWindowGoesAround;
import com.android.systemui.shared.recents.utilities.Utilities;
import com.android.systemui.shared.statusbar.phone.BarTransitions;
import com.android.systemui.statusbar.AutoHideUiElement;
@@ -1974,17 +1975,15 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
* meantime, just update the things that we know change.
*/
void updateResources() {
- // TODO: b/374267505 - we shouldn't propagate this from here. Each class should be
- // listening at the correct configuration change. For example, shade window classes should
- // be listening at @ShadeDisplayAware configurations (as it can be on a different display.
-
- // Update the quick setting tiles
- if (mQSPanelController != null) {
- mQSPanelController.updateResources();
- }
+ if (!ShadeWindowGoesAround.isEnabled()) {
+ // Each class now subscribes to configuration changes by themselves.
+ if (mQSPanelController != null) {
+ mQSPanelController.updateResources();
+ }
- if (mShadeSurface != null) {
- mShadeSurface.updateResources();
+ if (mShadeSurface != null) {
+ mShadeSurface.updateResources();
+ }
}
if (mBrightnessMirrorController != null) {
mBrightnessMirrorController.updateResources();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
index 09531c3b18bd..01f2e9b8371d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
@@ -230,7 +230,11 @@ public final class DozeServiceHost implements DozeHost {
mDozingRequested = true;
updateDozing();
mDozeLog.traceDozing(mStatusBarStateController.isDozing());
- mCentralSurfaces.updateIsKeyguard();
+ // This is initialized in a CoreStartable, but binder calls from DreamManagerService can
+ // arrive earlier
+ if (mCentralSurfaces != null) {
+ mCentralSurfaces.updateIsKeyguard();
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImpl.kt
index d7a29c36f2ce..76f67dc6c146 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImpl.kt
@@ -64,6 +64,7 @@ import com.android.systemui.util.kotlin.getOrNull
import dagger.Lazy
import java.util.Optional
import javax.inject.Inject
+import kotlinx.coroutines.CoroutineScope
/** Encapsulates the activity logic for activity starter. */
@SysUISingleton
@@ -102,6 +103,7 @@ constructor(
override fun registerTransition(
cookie: ActivityTransitionAnimator.TransitionCookie,
controllerFactory: ActivityTransitionAnimator.ControllerFactory,
+ scope: CoroutineScope,
) {
check(TransitionAnimator.longLivedReturnAnimationsEnabled())
@@ -113,7 +115,7 @@ constructor(
controllerFactory.launchCujType,
controllerFactory.returnCujType,
) {
- override fun createController(
+ override suspend fun createController(
forLaunch: Boolean
): ActivityTransitionAnimator.Controller {
val baseController = controllerFactory.createController(forLaunch)
@@ -129,7 +131,7 @@ constructor(
}
}
- activityTransitionAnimator.register(cookie, factory)
+ activityTransitionAnimator.register(cookie, factory, scope)
}
override fun unregisterTransition(cookie: ActivityTransitionAnimator.TransitionCookie) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
index d5f456fea2a5..4d222fdb90ea 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
@@ -74,7 +74,6 @@ import com.android.systemui.scene.shared.flag.SceneContainerFlag;
import com.android.systemui.scene.shared.model.Scenes;
import com.android.systemui.scrim.ScrimView;
import com.android.systemui.shade.ShadeViewController;
-import com.android.systemui.shade.shared.flag.DualShade;
import com.android.systemui.shade.transition.LargeScreenShadeInterpolator;
import com.android.systemui.statusbar.notification.stack.ViewState;
import com.android.systemui.statusbar.policy.ConfigurationController;
@@ -956,7 +955,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
if (!mScreenOffAnimationController.shouldExpandNotifications()
&& !mAnimatingPanelExpansionOnUnlock
&& !occluding) {
- if (mTransparentScrimBackground || DualShade.isEnabled()) {
+ if (mTransparentScrimBackground) {
mBehindAlpha = 0;
mNotificationsAlpha = 0;
} else if (mClipsQsScrim) {
@@ -1015,12 +1014,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
behindAlpha = 0f;
}
mInFrontAlpha = mState.getFrontAlpha();
- if (DualShade.isEnabled() && mState == ScrimState.SHADE_LOCKED) {
- mBehindAlpha = 0;
- mNotificationsTint = Color.TRANSPARENT;
- mNotificationsAlpha = 0;
- mBehindTint = Color.TRANSPARENT;
- } else if (mClipsQsScrim) {
+ if (mClipsQsScrim) {
mNotificationsAlpha = behindAlpha;
mNotificationsTint = behindTint;
mBehindAlpha = 1;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt
index a29934fa3a16..949cb0a718d4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt
@@ -160,6 +160,7 @@ constructor(
notificationIconView = currentInfo.notificationIconView,
intent = currentInfo.intent,
notificationKey = currentInfo.key,
+ appName = currentInfo.appName,
promotedContent = currentInfo.promotedContent,
)
} else {
@@ -217,6 +218,7 @@ constructor(
notifModel.statusBarChipIconView,
notifModel.contentIntent,
notifModel.uid,
+ notifModel.appName,
notifModel.promotedContent,
isOngoing = true,
statusBarSwipedAway = callNotificationInfo?.statusBarSwipedAway ?: false,
@@ -337,6 +339,7 @@ constructor(
val notificationIconView: StatusBarIconView?,
val intent: PendingIntent?,
val uid: Int,
+ val appName: String,
/**
* If the call notification also meets promoted notification criteria, this field is filled
* in with the content related to promotion. Otherwise null.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractor.kt
index ba7628fb3c07..2fd7d82043a0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/domain/interactor/OngoingCallInteractor.kt
@@ -163,6 +163,7 @@ constructor(
notificationIconView = model.statusBarChipIconView,
intent = model.contentIntent,
notificationKey = model.key,
+ appName = model.appName,
promotedContent = model.promotedContent,
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/shared/model/OngoingCallModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/shared/model/OngoingCallModel.kt
index 7d00e9d58e5b..6507b727eb48 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/shared/model/OngoingCallModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/shared/model/OngoingCallModel.kt
@@ -42,6 +42,7 @@ sealed interface OngoingCallModel {
* @property notificationIconView the [android.app.Notification.getSmallIcon] that's set on the
* call notification. We may use this icon in the chip instead of the default phone icon.
* @property intent the intent associated with the call notification.
+ * @property appName the user-readable name of the app that posted the call notification.
* @property promotedContent if the call notification also meets promoted notification criteria,
* this field is filled in with the content related to promotion. Otherwise null.
*/
@@ -50,6 +51,7 @@ sealed interface OngoingCallModel {
val notificationIconView: StatusBarIconView?,
val intent: PendingIntent?,
val notificationKey: String,
+ val appName: String,
val promotedContent: PromotedNotificationContentModel?,
) : OngoingCallModel
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/binder/HomeStatusBarViewBinder.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/binder/HomeStatusBarViewBinder.kt
index 7e76d77abe61..2cfe01e0c68b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/binder/HomeStatusBarViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/binder/HomeStatusBarViewBinder.kt
@@ -28,6 +28,7 @@ import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.lifecycle.repeatWhenAttached
import com.android.systemui.res.R
import com.android.systemui.scene.shared.flag.SceneContainerFlag
+import com.android.systemui.statusbar.chips.mediaprojection.domain.model.MediaProjectionStopDialogModel
import com.android.systemui.statusbar.chips.notification.shared.StatusBarNotifChips
import com.android.systemui.statusbar.chips.ui.binder.OngoingActivityChipBinder
import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
@@ -66,7 +67,7 @@ interface HomeStatusBarViewBinder {
viewModel: HomeStatusBarViewModel,
systemEventChipAnimateIn: ((View) -> Unit)?,
systemEventChipAnimateOut: ((View) -> Unit)?,
- listener: StatusBarVisibilityChangeListener,
+ listener: StatusBarVisibilityChangeListener?,
)
}
@@ -82,8 +83,22 @@ constructor(
viewModel: HomeStatusBarViewModel,
systemEventChipAnimateIn: ((View) -> Unit)?,
systemEventChipAnimateOut: ((View) -> Unit)?,
- listener: StatusBarVisibilityChangeListener,
+ listener: StatusBarVisibilityChangeListener?,
) {
+ // Set some top-level views to gone before we get started
+ val primaryChipView: View = view.requireViewById(R.id.ongoing_activity_chip_primary)
+ val systemInfoView = view.requireViewById<View>(R.id.status_bar_end_side_content)
+ val clockView = view.requireViewById<View>(R.id.clock)
+ val notificationIconsArea = view.requireViewById<View>(R.id.notificationIcons)
+
+ // CollapsedStatusBarFragment doesn't need this
+ if (StatusBarRootModernization.isEnabled) {
+ primaryChipView.isVisible = false
+ systemInfoView.isVisible = false
+ clockView.isVisible = false
+ notificationIconsArea.isVisible = false
+ }
+
view.repeatWhenAttached {
repeatOnLifecycle(Lifecycle.State.CREATED) {
val iconViewStore =
@@ -94,15 +109,19 @@ constructor(
} else {
null
}
- launch {
- viewModel.isTransitioningFromLockscreenToOccluded.collect {
- listener.onStatusBarVisibilityMaybeChanged()
+ listener?.let { listener ->
+ launch {
+ viewModel.isTransitioningFromLockscreenToOccluded.collect {
+ listener.onStatusBarVisibilityMaybeChanged()
+ }
}
}
- launch {
- viewModel.transitionFromLockscreenToDreamStartedEvent.collect {
- listener.onTransitionFromLockscreenToDreamStarted()
+ listener?.let { listener ->
+ launch {
+ viewModel.transitionFromLockscreenToDreamStartedEvent.collect {
+ listener.onTransitionFromLockscreenToDreamStarted()
+ }
}
}
@@ -115,11 +134,20 @@ constructor(
}
}
+ if (com.android.media.projection.flags.Flags.showStopDialogPostCallEnd()) {
+ launch {
+ viewModel.mediaProjectionStopDialogDueToCallEndedState.collect { stopDialog
+ ->
+ if (stopDialog is MediaProjectionStopDialogModel.Shown) {
+ stopDialog.createAndShowDialog()
+ }
+ }
+ }
+ }
+
if (!StatusBarNotifChips.isEnabled && !StatusBarChipsModernization.isEnabled) {
val primaryChipViewBinding =
- OngoingActivityChipBinder.createBinding(
- view.requireViewById(R.id.ongoing_activity_chip_primary)
- )
+ OngoingActivityChipBinder.createBinding(primaryChipView)
launch {
viewModel.primaryOngoingActivityChip.collect { primaryChipModel ->
OngoingActivityChipBinder.bind(
@@ -129,12 +157,12 @@ constructor(
)
if (StatusBarRootModernization.isEnabled) {
when (primaryChipModel) {
- is OngoingActivityChipModel.Shown ->
+ is OngoingActivityChipModel.Active ->
primaryChipViewBinding.rootView.show(
shouldAnimateChange = true
)
- is OngoingActivityChipModel.Hidden ->
+ is OngoingActivityChipModel.Inactive ->
primaryChipViewBinding.rootView.hide(
state = View.GONE,
shouldAnimateChange = primaryChipModel.shouldAnimate,
@@ -142,15 +170,15 @@ constructor(
}
} else {
when (primaryChipModel) {
- is OngoingActivityChipModel.Shown ->
- listener.onOngoingActivityStatusChanged(
+ is OngoingActivityChipModel.Active ->
+ listener?.onOngoingActivityStatusChanged(
hasPrimaryOngoingActivity = true,
hasSecondaryOngoingActivity = false,
shouldAnimate = true,
)
- is OngoingActivityChipModel.Hidden ->
- listener.onOngoingActivityStatusChanged(
+ is OngoingActivityChipModel.Inactive ->
+ listener?.onOngoingActivityStatusChanged(
hasPrimaryOngoingActivity = false,
hasSecondaryOngoingActivity = false,
shouldAnimate = primaryChipModel.shouldAnimate,
@@ -165,9 +193,7 @@ constructor(
// Create view bindings here so we don't keep re-fetching child views each time
// the chip model changes.
val primaryChipViewBinding =
- OngoingActivityChipBinder.createBinding(
- view.requireViewById(R.id.ongoing_activity_chip_primary)
- )
+ OngoingActivityChipBinder.createBinding(primaryChipView)
val secondaryChipViewBinding =
OngoingActivityChipBinder.createBinding(
view.requireViewById(R.id.ongoing_activity_chip_secondary)
@@ -193,11 +219,11 @@ constructor(
chips.secondary.toVisibilityModel()
)
} else {
- listener.onOngoingActivityStatusChanged(
+ listener?.onOngoingActivityStatusChanged(
hasPrimaryOngoingActivity =
- chips.primary is OngoingActivityChipModel.Shown,
+ chips.primary is OngoingActivityChipModel.Active,
hasSecondaryOngoingActivity =
- chips.secondary is OngoingActivityChipModel.Shown,
+ chips.secondary is OngoingActivityChipModel.Active,
// TODO(b/364653005): Figure out the animation story here.
shouldAnimate = true,
)
@@ -219,15 +245,21 @@ constructor(
}
if (SceneContainerFlag.isEnabled) {
- launch {
- viewModel.isHomeStatusBarAllowedByScene.collect {
- listener.onIsHomeStatusBarAllowedBySceneChanged(it)
+ listener?.let { listener ->
+ launch {
+ viewModel.isHomeStatusBarAllowedByScene.collect {
+ listener.onIsHomeStatusBarAllowedBySceneChanged(it)
+ }
}
}
}
if (StatusBarRootModernization.isEnabled) {
+ // TODO(b/393445203): figure out the best story for this stub view. This crashes
+ // if we move it up to the top of [bind]
val operatorNameView = view.requireViewById<View>(R.id.operator_name_frame)
+ operatorNameView.isVisible = false
+
StatusBarOperatorNameViewBinder.bind(
operatorNameView,
viewModel.operatorNameViewModel,
@@ -239,19 +271,14 @@ constructor(
}
}
- val clockView = view.requireViewById<View>(R.id.clock)
launch { viewModel.isClockVisible.collect { clockView.adjustVisibility(it) } }
- val notificationIconsArea = view.requireViewById<View>(R.id.notificationIcons)
launch {
viewModel.isNotificationIconContainerVisible.collect {
notificationIconsArea.adjustVisibility(it)
}
}
- val systemInfoView =
- view.requireViewById<View>(R.id.status_bar_end_side_content)
- // TODO(b/364360986): Also handle operator name view.
launch {
viewModel.systemInfoCombinedVis.collect { (baseVis, animState) ->
// Broadly speaking, the baseVis controls the view.visibility, and
@@ -294,7 +321,7 @@ constructor(
private fun OngoingActivityChipModel.toVisibilityModel(): VisibilityModel {
return VisibilityModel(
- visibility = if (this is OngoingActivityChipModel.Shown) View.VISIBLE else View.GONE,
+ visibility = if (this is OngoingActivityChipModel.Active) View.VISIBLE else View.GONE,
// TODO(b/364653005): Figure out the animation story here.
shouldAnimateChange = true,
)
@@ -340,6 +367,9 @@ constructor(
// See CollapsedStatusBarFragment#hide.
private fun View.hide(state: Int = View.INVISIBLE, shouldAnimateChange: Boolean) {
+ if (visibility == View.INVISIBLE || visibility == View.GONE) {
+ return
+ }
val v = this
v.animate().cancel()
if (!shouldAnimateChange) {
@@ -358,6 +388,9 @@ constructor(
// See CollapsedStatusBarFragment#show.
private fun View.show(shouldAnimateChange: Boolean) {
+ if (visibility == View.VISIBLE) {
+ return
+ }
val v = this
v.animate().cancel()
v.visibility = View.VISIBLE
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/composable/StatusBarRoot.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/composable/StatusBarRoot.kt
index 9c1171fd1ebc..9d72daf01831 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/composable/StatusBarRoot.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/composable/StatusBarRoot.kt
@@ -25,16 +25,13 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
-import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.platform.ViewCompositionStrategy
import androidx.compose.ui.viewinterop.AndroidView
-import androidx.core.view.isVisible
import androidx.lifecycle.compose.collectAsStateWithLifecycle
-import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.compose.theme.PlatformTheme
import com.android.keyguard.AlphaOptimizedLinearLayout
import com.android.systemui.plugins.DarkIconDispatcher
@@ -56,7 +53,6 @@ import com.android.systemui.statusbar.phone.ui.DarkIconManager
import com.android.systemui.statusbar.phone.ui.StatusBarIconController
import com.android.systemui.statusbar.pipeline.shared.ui.binder.HomeStatusBarIconBlockListBinder
import com.android.systemui.statusbar.pipeline.shared.ui.binder.HomeStatusBarViewBinder
-import com.android.systemui.statusbar.pipeline.shared.ui.binder.StatusBarVisibilityChangeListener
import com.android.systemui.statusbar.pipeline.shared.ui.model.VisibilityModel
import com.android.systemui.statusbar.pipeline.shared.ui.viewmodel.HomeStatusBarViewModel
import com.android.systemui.statusbar.pipeline.shared.ui.viewmodel.HomeStatusBarViewModel.HomeStatusBarViewModelFactory
@@ -124,25 +120,6 @@ fun StatusBarRoot(
eventAnimationInteractor: SystemStatusEventAnimationInteractor,
onViewCreated: (ViewGroup) -> Unit,
) {
- // None of these methods are used when [StatusBarRootModernization] is on.
- // This can be deleted once the fragment is gone
- val nopVisibilityChangeListener =
- object : StatusBarVisibilityChangeListener {
- override fun onStatusBarVisibilityMaybeChanged() {}
-
- override fun onTransitionFromLockscreenToDreamStarted() {}
-
- override fun onOngoingActivityStatusChanged(
- hasPrimaryOngoingActivity: Boolean,
- hasSecondaryOngoingActivity: Boolean,
- shouldAnimate: Boolean,
- ) {}
-
- override fun onIsHomeStatusBarAllowedBySceneChanged(
- isHomeStatusBarAllowedByScene: Boolean
- ) {}
- }
-
Box(Modifier.fillMaxSize()) {
// TODO(b/364360986): remove this before rolling the flag forward
if (StatusBarRootModernization.SHOW_DISAMBIGUATION) {
@@ -150,9 +127,6 @@ fun StatusBarRoot(
}
Row(Modifier.fillMaxSize()) {
- val scope = rememberCoroutineScope()
- val visible =
- statusBarViewModel.shouldHomeStatusBarBeVisible.collectAsStateWithLifecycle(false)
AndroidView(
factory = { context ->
val inflater = LayoutInflater.from(context)
@@ -267,32 +241,23 @@ fun StatusBarRoot(
endSideContent.addView(composeView, 0)
}
- scope.launch {
- notificationIconsBinder.bindWhileAttached(
- notificationIconContainer,
- context.displayId,
- )
- }
+ notificationIconsBinder.bindWhileAttached(
+ notificationIconContainer,
+ context.displayId,
+ )
// This binder handles everything else
- scope.launch {
- statusBarViewBinder.bind(
- context.displayId,
- phoneStatusBarView,
- statusBarViewModel,
- eventAnimationInteractor::animateStatusBarContentForChipEnter,
- eventAnimationInteractor::animateStatusBarContentForChipExit,
- nopVisibilityChangeListener,
- )
- }
+ statusBarViewBinder.bind(
+ context.displayId,
+ phoneStatusBarView,
+ statusBarViewModel,
+ eventAnimationInteractor::animateStatusBarContentForChipEnter,
+ eventAnimationInteractor::animateStatusBarContentForChipExit,
+ listener = null,
+ )
onViewCreated(phoneStatusBarView)
phoneStatusBarView
- },
- update = { view ->
- // Show or hide the entire status bar. This is important so that we aren't
- // visible when first inflated
- view.isVisible = visible.value
- },
+ }
)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModel.kt
index a59d95f27c38..f28f62f24f9b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModel.kt
@@ -19,7 +19,7 @@ package com.android.systemui.statusbar.pipeline.shared.ui.viewmodel
import android.annotation.ColorInt
import android.graphics.Rect
import android.view.View
-import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
import com.android.systemui.keyguard.shared.model.Edge
@@ -34,9 +34,12 @@ import com.android.systemui.plugins.DarkIconDispatcher
import com.android.systemui.scene.domain.interactor.SceneContainerOcclusionInteractor
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.domain.interactor.ShadeInteractor
+import com.android.systemui.statusbar.chips.mediaprojection.domain.model.MediaProjectionStopDialogModel
import com.android.systemui.statusbar.chips.notification.shared.StatusBarNotifChips
+import com.android.systemui.statusbar.chips.sharetoapp.ui.viewmodel.ShareToAppChipViewModel
import com.android.systemui.statusbar.chips.ui.model.MultipleOngoingActivityChipsModel
import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModel
@@ -59,6 +62,7 @@ import com.android.systemui.statusbar.pipeline.shared.ui.model.VisibilityModel
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
+import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
@@ -69,6 +73,7 @@ import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn
@@ -83,9 +88,6 @@ import kotlinx.coroutines.flow.stateIn
* so that it's all in one place and easily testable outside of the fragment.
*/
interface HomeStatusBarViewModel {
- /** Should the entire status bar be hidden? */
- val shouldHomeStatusBarBeVisible: Flow<Boolean>
-
/**
* True if the device is currently transitioning from lockscreen to occluded and false
* otherwise.
@@ -96,6 +98,12 @@ interface HomeStatusBarViewModel {
val transitionFromLockscreenToDreamStartedEvent: Flow<Unit>
/**
+ * The current media projection stop dialog to be shown, or
+ * `MediaProjectionStopDialogModel.Hidden` if no dialog is visible.
+ */
+ val mediaProjectionStopDialogDueToCallEndedState: StateFlow<MediaProjectionStopDialogModel>
+
+ /**
* The ongoing activity chip that should be primarily shown on the left-hand side of the status
* bar. If there are multiple ongoing activity chips, this one should take priority.
*/
@@ -180,11 +188,13 @@ constructor(
sceneInteractor: SceneInteractor,
sceneContainerOcclusionInteractor: SceneContainerOcclusionInteractor,
shadeInteractor: ShadeInteractor,
+ shareToAppChipViewModel: ShareToAppChipViewModel,
ongoingActivityChipsViewModel: OngoingActivityChipsViewModel,
statusBarPopupChipsViewModel: StatusBarPopupChipsViewModel,
animations: SystemStatusEventAnimationInteractor,
statusBarContentInsetsViewModelStore: StatusBarContentInsetsViewModelStore,
- @Application coroutineScope: CoroutineScope,
+ @Background bgScope: CoroutineScope,
+ @Background bgDispatcher: CoroutineDispatcher,
) : HomeStatusBarViewModel {
val tableLogger = tableLoggerFactory.getOrCreate(tableLogBufferName(thisDisplayId), 200)
@@ -198,13 +208,17 @@ constructor(
columnName = COL_LOCK_TO_OCCLUDED,
initialValue = false,
)
- .stateIn(coroutineScope, SharingStarted.WhileSubscribed(), initialValue = false)
+ .stateIn(bgScope, SharingStarted.WhileSubscribed(), initialValue = false)
override val transitionFromLockscreenToDreamStartedEvent: Flow<Unit> =
keyguardTransitionInteractor
.transition(Edge.create(from = LOCKSCREEN, to = DREAMING))
.filter { it.transitionState == TransitionState.STARTED }
.map {}
+ .flowOn(bgDispatcher)
+
+ override val mediaProjectionStopDialogDueToCallEndedState =
+ shareToAppChipViewModel.stopDialogToShow
override val primaryOngoingActivityChip = ongoingActivityChipsViewModel.primaryChip
@@ -215,14 +229,19 @@ constructor(
override val isHomeStatusBarAllowedByScene: StateFlow<Boolean> =
combine(
sceneInteractor.currentScene,
+ sceneInteractor.currentOverlays,
sceneContainerOcclusionInteractor.invisibleDueToOcclusion,
- ) { currentScene, isOccluded ->
+ ) { currentScene, currentOverlays, isOccluded ->
// All scenes have their own status bars, so we should only show the home status bar
- // if we're not in a scene. The one exception: If the scene is occluded, then the
- // occluding app needs to show the status bar. (Fullscreen apps actually won't show
- // the status bar but that's handled with the rest of our fullscreen app logic,
- // which lives elsewhere.)
- currentScene == Scenes.Gone || isOccluded
+ // if we're not in a scene. There are two exceptions:
+ // 1) The shade (notifications or quick settings) is shown, because it has its own
+ // status-bar-like header.
+ // 2) If the scene is occluded, then the occluding app needs to show the status bar.
+ // (Fullscreen apps actually won't show the status bar but that's handled with the
+ // rest of our fullscreen app logic, which lives elsewhere.)
+ (currentScene == Scenes.Gone &&
+ Overlays.NotificationsShade !in currentOverlays &&
+ Overlays.QuickSettingsShade !in currentOverlays) || isOccluded
}
.distinctUntilChanged()
.logDiffsForTable(
@@ -230,7 +249,7 @@ constructor(
columnName = COL_ALLOWED_BY_SCENE,
initialValue = false,
)
- .stateIn(coroutineScope, SharingStarted.WhileSubscribed(), initialValue = false)
+ .stateIn(bgScope, SharingStarted.WhileSubscribed(), initialValue = false)
override val areNotificationsLightsOut: Flow<Boolean> =
if (NotificationsLiveDataStoreRefactor.isUnexpectedlyInLegacyMode()) {
@@ -249,6 +268,7 @@ constructor(
columnName = COL_NOTIF_LIGHTS_OUT,
initialValue = false,
)
+ .flowOn(bgDispatcher)
override val areaTint: Flow<StatusBarTintColor> =
darkIconInteractor
@@ -264,6 +284,7 @@ constructor(
}
.conflate()
.distinctUntilChanged()
+ .flowOn(bgDispatcher)
/**
* True if the current SysUI state can show the home status bar (aka this status bar), and false
@@ -285,7 +306,7 @@ constructor(
isHomeScreenStatusBarAllowedLegacy
}
- override val shouldHomeStatusBarBeVisible =
+ private val shouldHomeStatusBarBeVisible =
combine(
isHomeStatusBarAllowed,
keyguardInteractor.isSecureCameraActive,
@@ -306,12 +327,13 @@ constructor(
columnName = COL_VISIBLE,
initialValue = false,
)
+ .flowOn(bgDispatcher)
private val isAnyChipVisible =
if (StatusBarNotifChips.isEnabled) {
- ongoingActivityChips.map { it.primary is OngoingActivityChipModel.Shown }
+ ongoingActivityChips.map { it.primary is OngoingActivityChipModel.Active }
} else {
- primaryOngoingActivityChip.map { it is OngoingActivityChipModel.Shown }
+ primaryOngoingActivityChip.map { it is OngoingActivityChipModel.Active }
}
/**
@@ -349,6 +371,7 @@ constructor(
columnName = COL_SHOW_OPERATOR_NAME,
initialValue = false,
)
+ .flowOn(bgDispatcher)
override val isClockVisible: Flow<VisibilityModel> =
combine(
@@ -370,6 +393,7 @@ constructor(
columnPrefix = COL_PREFIX_CLOCK,
initialValue = VisibilityModel(false.toVisibleOrInvisible(), false),
)
+ .flowOn(bgDispatcher)
override val isNotificationIconContainerVisible: Flow<VisibilityModel> =
combine(
@@ -395,6 +419,7 @@ constructor(
columnPrefix = COL_PREFIX_NOTIF_CONTAINER,
initialValue = VisibilityModel(false.toVisibleOrInvisible(), false),
)
+ .flowOn(bgDispatcher)
private val isSystemInfoVisible =
combine(shouldHomeStatusBarBeVisible, homeStatusBarInteractor.visibilityViaDisableFlags) {
@@ -417,17 +442,17 @@ constructor(
SystemInfoCombinedVisibilityModel(VisibilityModel(View.VISIBLE, false), Idle),
)
.stateIn(
- coroutineScope,
+ bgScope,
SharingStarted.WhileSubscribed(),
SystemInfoCombinedVisibilityModel(VisibilityModel(View.VISIBLE, false), Idle),
)
override val iconBlockList: Flow<List<String>> =
- homeStatusBarIconBlockListInteractor.iconBlockList
+ homeStatusBarIconBlockListInteractor.iconBlockList.flowOn(bgDispatcher)
override val contentArea: Flow<Rect> =
statusBarContentInsetsViewModelStore.forDisplay(thisDisplayId)?.contentArea
- ?: flowOf(Rect(0, 0, 0, 0))
+ ?: flowOf(Rect(0, 0, 0, 0)).flowOn(bgDispatcher)
@View.Visibility
private fun Boolean.toVisibleOrGone(): Int {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/InternetTileViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/InternetTileViewModel.kt
index 6258a55c374f..34ba767c227e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/InternetTileViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/InternetTileViewModel.kt
@@ -22,7 +22,7 @@ import com.android.systemui.common.shared.model.ContentDescription
import com.android.systemui.common.shared.model.ContentDescription.Companion.loadContentDescription
import com.android.systemui.common.shared.model.Text
import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.qs.tileimpl.QSTileImpl
import com.android.systemui.qs.tileimpl.QSTileImpl.ResourceIcon
import com.android.systemui.res.R
@@ -61,7 +61,7 @@ constructor(
mobileIconsInteractor: MobileIconsInteractor,
wifiInteractor: WifiInteractor,
private val context: Context,
- @Application scope: CoroutineScope,
+ @Background scope: CoroutineScope,
) {
private val internetLabel: String = context.getString(R.string.quick_settings_internet_label)
@@ -111,17 +111,16 @@ constructor(
if (it == null) {
notConnectedFlow
} else {
- combine(
- it.networkName,
- it.signalLevelIcon,
- mobileDataContentName,
- ) { networkNameModel, signalIcon, dataContentDescription ->
+ combine(it.networkName, it.signalLevelIcon, mobileDataContentName) {
+ networkNameModel,
+ signalIcon,
+ dataContentDescription ->
when (signalIcon) {
is SignalIconModel.Cellular -> {
val secondary =
mobileDataContentConcat(
networkNameModel.name,
- dataContentDescription
+ dataContentDescription,
)
InternetTileModel.Active(
secondaryTitle = secondary,
@@ -147,7 +146,7 @@ constructor(
private fun mobileDataContentConcat(
networkName: String?,
- dataContentDescription: CharSequence?
+ dataContentDescription: CharSequence?,
): CharSequence {
if (dataContentDescription == null) {
return networkName ?: ""
@@ -160,9 +159,9 @@ constructor(
context.getString(
R.string.mobile_carrier_text_format,
networkName,
- dataContentDescription
+ dataContentDescription,
),
- 0
+ 0,
)
}
@@ -191,10 +190,9 @@ constructor(
}
private val notConnectedFlow: StateFlow<InternetTileModel> =
- combine(
- wifiInteractor.areNetworksAvailable,
- airplaneModeRepository.isAirplaneMode,
- ) { networksAvailable, isAirplaneMode ->
+ combine(wifiInteractor.areNetworksAvailable, airplaneModeRepository.isAirplaneMode) {
+ networksAvailable,
+ isAirplaneMode ->
when {
isAirplaneMode -> {
val secondary = context.getString(R.string.status_bar_airplane)
@@ -213,7 +211,7 @@ constructor(
iconId = R.drawable.ic_qs_no_internet_available,
stateDescription = null,
contentDescription =
- ContentDescription.Loaded("$internetLabel,$secondary")
+ ContentDescription.Loaded("$internetLabel,$secondary"),
)
}
else -> {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputQuickSettingsDisabler.kt b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputQuickSettingsDisabler.kt
index 67a8e3d0e345..ef09907609df 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputQuickSettingsDisabler.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputQuickSettingsDisabler.kt
@@ -19,6 +19,7 @@ import android.app.StatusBarManager
import android.content.Context
import android.content.res.Configuration
import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.statusbar.CommandQueue
import javax.inject.Inject
@@ -29,7 +30,7 @@ import javax.inject.Inject
*/
@SysUISingleton
class RemoteInputQuickSettingsDisabler @Inject constructor(
- private val context: Context,
+ @ShadeDisplayAware private val context: Context,
private val commandQueue: CommandQueue,
private val splitShadeStateController: SplitShadeStateController,
configController: ConfigurationController
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyStateInflater.kt b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyStateInflater.kt
index 520c5632370b..d3af1e5b65fe 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyStateInflater.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyStateInflater.kt
@@ -396,26 +396,20 @@ constructor(
action: Notification.Action,
delayOnClickListener: Boolean,
packageContext: Context,
- ): Button =
- (LayoutInflater.from(parent.context).inflate(R.layout.smart_action_button, parent, false)
+ ): Button {
+ val isMagicAction = Flags.notificationMagicActionsTreatment() &&
+ smartActions.fromAssistant &&
+ action.extras.getBoolean(Notification.Action.EXTRA_IS_MAGIC, false)
+ val layoutRes = if (isMagicAction) {
+ R.layout.magic_action_button
+ } else {
+ R.layout.smart_action_button
+ }
+ return (LayoutInflater.from(parent.context).inflate(layoutRes, parent, false)
as Button)
.apply {
text = action.title
- if (Flags.notificationMagicActionsTreatment()) {
- if (
- smartActions.fromAssistant &&
- action.extras.getBoolean(Notification.Action.EXTRA_IS_MAGIC, false)
- ) {
- background = MagicActionBackgroundDrawable(parent.context)
- val textColor =
- parent.context.getColor(
- com.android.internal.R.color.materialColorOnPrimaryContainer
- )
- setTextColor(textColor)
- }
- }
-
// We received the Icon from the application - so use the Context of the application
// to
// reference icon resources.
@@ -442,6 +436,8 @@ constructor(
(layoutParams as SmartReplyView.LayoutParams).mButtonType = SmartButtonType.ACTION
}
+ }
+
private fun onSmartActionClick(
entry: NotificationEntry,
smartActions: SmartActions,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ui/dialog/ModesDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ui/dialog/ModesDialogDelegate.kt
index db5f1301823b..2fc22867e702 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ui/dialog/ModesDialogDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ui/dialog/ModesDialogDelegate.kt
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.policy.ui.dialog
+import android.annotation.UiThread;
import android.app.Dialog
import android.content.Context
import android.content.Intent
@@ -205,6 +206,7 @@ constructor(
* Special dialog to ask the user for the duration of DND. Not to be confused with the modes
* dialog itself.
*/
+ @UiThread
fun makeDndDurationDialog(): Dialog {
val dialog =
EnableDndDialogFactory(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModel.kt
index 12ef68dafa64..7d9a7d49cf7f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModel.kt
@@ -22,6 +22,7 @@ import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
+import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.statusbar.domain.interactor.KeyguardStatusBarInteractor
import com.android.systemui.statusbar.headsup.shared.StatusBarNoHunBehavior
@@ -70,10 +71,15 @@ constructor(
val isVisible: StateFlow<Boolean> =
combine(
sceneInteractor.currentScene,
+ sceneInteractor.currentOverlays,
keyguardInteractor.isDozing,
showingHeadsUpStatusBar,
- ) { currentScene, isDozing, showHeadsUpStatusBar ->
- currentScene == Scenes.Lockscreen && !isDozing && !showHeadsUpStatusBar
+ ) { currentScene, currentOverlays, isDozing, showHeadsUpStatusBar ->
+ currentScene == Scenes.Lockscreen &&
+ Overlays.NotificationsShade !in currentOverlays &&
+ Overlays.QuickSettingsShade !in currentOverlays &&
+ !isDozing &&
+ !showHeadsUpStatusBar
}
.stateIn(scope, SharingStarted.WhileSubscribed(), false)
diff --git a/packages/SystemUI/src/com/android/systemui/volume/CsdWarningDialog.java b/packages/SystemUI/src/com/android/systemui/volume/CsdWarningDialog.java
index a63660ba2804..5c439262b02c 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/CsdWarningDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/CsdWarningDialog.java
@@ -46,14 +46,13 @@ import com.android.systemui.statusbar.phone.SystemUIDialog;
import com.android.systemui.util.NotificationChannels;
import com.android.systemui.util.concurrency.DelayableExecutor;
-import com.google.common.collect.ImmutableList;
+import java.util.List;
+import java.util.Optional;
import dagger.assisted.Assisted;
import dagger.assisted.AssistedFactory;
import dagger.assisted.AssistedInject;
-import java.util.Optional;
-
/**
* A class that implements the three Computed Sound Dose-related warnings defined in
* {@link AudioManager}:
@@ -108,7 +107,7 @@ public class CsdWarningDialog extends SystemUIDialog
private long mShowTime;
@VisibleForTesting public int mCachedMediaStreamVolume;
- private Optional<ImmutableList<CsdWarningAction>> mActionIntents;
+ private Optional<List<CsdWarningAction>> mActionIntents;
private final BroadcastDispatcher mBroadcastDispatcher;
/**
@@ -120,7 +119,7 @@ public class CsdWarningDialog extends SystemUIDialog
CsdWarningDialog create(
int csdWarning,
Runnable onCleanup,
- Optional<ImmutableList<CsdWarningAction>> actionIntents);
+ Optional<List<CsdWarningAction>> actionIntents);
}
@AssistedInject
@@ -131,7 +130,7 @@ public class CsdWarningDialog extends SystemUIDialog
NotificationManager notificationManager,
@Background DelayableExecutor delayableExecutor,
@Assisted Runnable onCleanup,
- @Assisted Optional<ImmutableList<CsdWarningAction>> actionIntents,
+ @Assisted Optional<List<CsdWarningAction>> actionIntents,
BroadcastDispatcher broadcastDispatcher) {
super(context);
mCsdWarning = csdWarning;
@@ -350,7 +349,7 @@ public class CsdWarningDialog extends SystemUIDialog
if (Flags.sounddoseCustomization()
&& mActionIntents.isPresent()
&& !mActionIntents.get().isEmpty()) {
- ImmutableList<CsdWarningAction> actionIntentsList = mActionIntents.get();
+ List<CsdWarningAction> actionIntentsList = mActionIntents.get();
for (CsdWarningAction action : actionIntentsList) {
if (action.getLabel() == null || action.getIntent() == null) {
Log.w(TAG, "Null action intent received. Skipping addition to notification");
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
index a4e46f667329..ae3756d390af 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
@@ -31,7 +31,6 @@ import static android.view.View.INVISIBLE;
import static android.view.View.LAYOUT_DIRECTION_RTL;
import static android.view.View.VISIBLE;
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
-
import static com.android.internal.jank.InteractionJankMonitor.CUJ_VOLUME_CONTROL;
import static com.android.internal.jank.InteractionJankMonitor.Configuration.Builder;
import static com.android.settingslib.flags.Flags.audioSharingDeveloperOption;
@@ -126,6 +125,7 @@ import com.android.systemui.haptics.slider.HapticSliderPlugin;
import com.android.systemui.haptics.slider.HapticSliderViewBinder;
import com.android.systemui.haptics.slider.SeekableSliderTrackerConfig;
import com.android.systemui.haptics.slider.SliderHapticFeedbackConfig;
+import com.android.systemui.haptics.slider.SliderHapticFeedbackFilter;
import com.android.systemui.media.dialog.MediaOutputDialogManager;
import com.android.systemui.plugins.VolumeDialog;
import com.android.systemui.plugins.VolumeDialogController;
@@ -144,18 +144,17 @@ import com.android.systemui.volume.domain.interactor.VolumeDialogInteractor;
import com.android.systemui.volume.domain.interactor.VolumePanelNavigationInteractor;
import com.android.systemui.volume.panel.shared.flag.VolumePanelFlag;
import com.android.systemui.volume.ui.navigation.VolumeNavigator;
-
import com.google.android.msdl.domain.MSDLPlayer;
-import com.google.common.collect.ImmutableList;
-
-import dagger.Lazy;
import java.io.PrintWriter;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.function.Consumer;
+import dagger.Lazy;
+
/**
* Visual presentation of the volume dialog.
*
@@ -326,8 +325,8 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable,
private final VolumePanelFlag mVolumePanelFlag;
private final VolumeDialogInteractor mInteractor;
// Optional actions for soundDose
- private Optional<ImmutableList<CsdWarningAction>>
- mCsdWarningNotificationActions = Optional.of(ImmutableList.of());
+ private Optional<List<CsdWarningAction>>
+ mCsdWarningNotificationActions = Optional.of(Collections.emptyList());
public VolumeDialogImpl(
Context context,
@@ -2237,7 +2236,7 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable,
}
public void setCsdWarningNotificationActionIntents(
- ImmutableList<CsdWarningAction> actionIntent) {
+ List<CsdWarningAction> actionIntent) {
mCsdWarningNotificationActions = Optional.of(actionIntent);
}
@@ -2700,7 +2699,8 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable,
/* upperBookendScale= */ 1f,
/* lowerBookendScale= */ 0.05f,
/* exponent= */ 1f / 0.89f,
- /* sliderStepSize = */ 0f);
+ /* sliderStepSize = */ 0f,
+ /* filter =*/new SliderHapticFeedbackFilter());
private static final SeekableSliderTrackerConfig sSliderTrackerConfig =
new SeekableSliderTrackerConfig(
/* waitTimeMillis= */100,
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dagger/VolumeModule.java b/packages/SystemUI/src/com/android/systemui/volume/dagger/VolumeModule.java
index 2009143859d3..94964bbafbd6 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dagger/VolumeModule.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/dagger/VolumeModule.java
@@ -43,13 +43,13 @@ import com.android.systemui.volume.VolumePanelDialogReceiver;
import com.android.systemui.volume.VolumeUI;
import com.android.systemui.volume.dialog.VolumeDialogPlugin;
import com.android.systemui.volume.dialog.dagger.VolumeDialogPluginComponent;
+import com.android.systemui.volume.dialog.dagger.factory.VolumeDialogPluginComponentFactory;
import com.android.systemui.volume.domain.interactor.VolumeDialogInteractor;
import com.android.systemui.volume.domain.interactor.VolumePanelNavigationInteractor;
import com.android.systemui.volume.panel.dagger.VolumePanelComponent;
import com.android.systemui.volume.panel.dagger.factory.VolumePanelComponentFactory;
import com.android.systemui.volume.panel.shared.flag.VolumePanelFlag;
import com.android.systemui.volume.ui.navigation.VolumeNavigator;
-
import com.google.android.msdl.domain.MSDLPlayer;
import dagger.Binds;
@@ -104,6 +104,10 @@ public interface VolumeModule {
@Binds
VolumePanelComponentFactory bindVolumePanelComponentFactory(VolumePanelComponent.Factory impl);
+ @Binds
+ VolumeDialogPluginComponentFactory bindVolumeDialogPluginComponentFactory(
+ VolumeDialogPluginComponent.Factory impl);
+
/** */
@Provides
static VolumeDialog provideVolumeDialog(
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/VolumeDialogPlugin.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/VolumeDialogPlugin.kt
index 5a69be5486a0..938e313771ad 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/VolumeDialogPlugin.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/VolumeDialogPlugin.kt
@@ -22,9 +22,13 @@ import com.android.app.tracing.coroutines.coroutineScopeTraced
import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.plugins.VolumeDialog
+import com.android.systemui.volume.CsdWarningAction
+import com.android.systemui.volume.CsdWarningDialog
import com.android.systemui.volume.SafetyWarningDialog
import com.android.systemui.volume.dialog.dagger.VolumeDialogPluginComponent
+import com.android.systemui.volume.dialog.dagger.factory.VolumeDialogPluginComponentFactory
import com.android.systemui.volume.dialog.ui.viewmodel.VolumeDialogPluginViewModel
+import java.util.Optional
import javax.inject.Inject
import kotlin.coroutines.resume
import kotlinx.coroutines.CoroutineScope
@@ -39,7 +43,8 @@ constructor(
@Application private val applicationCoroutineScope: CoroutineScope,
private val context: Context,
private val audioManager: AudioManager,
- private val volumeDialogPluginComponentFactory: VolumeDialogPluginComponent.Factory,
+ private val volumeDialogPluginComponentFactory: VolumeDialogPluginComponentFactory,
+ private val csdWarningDialogFactory: CsdWarningDialog.Factory,
) : VolumeDialog {
private var job: Job? = null
@@ -67,6 +72,16 @@ constructor(
}
}
.launchIn(this)
+
+ viewModel.csdWarning
+ .mapLatest { csdWarning ->
+ if (csdWarning != null) {
+ showCsdWarningDialog(csdWarning, viewModel.csdWarningConfigModel.actions) {
+ viewModel.onCsdWarningDismissed()
+ }
+ }
+ }
+ .launchIn(this)
}
override fun destroy() {
@@ -86,4 +101,23 @@ constructor(
dialog.show()
continuation.invokeOnCancellation { dialog.dismiss() }
}
+
+ private suspend fun showCsdWarningDialog(
+ warning: Int,
+ actions: List<CsdWarningAction>,
+ onDismissed: () -> Unit,
+ ) = suspendCancellableCoroutine { continuation ->
+ val dialog =
+ csdWarningDialogFactory.create(
+ warning,
+ {
+ onDismissed()
+ continuation.resume(Unit)
+ },
+ Optional.of(actions),
+ )
+
+ dialog.show()
+ continuation.invokeOnCancellation { dialog.dismiss() }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/dagger/VolumeDialogPluginComponent.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/dagger/VolumeDialogPluginComponent.kt
index 4e0098ccdf99..f0fe4a3b7ffd 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/dagger/VolumeDialogPluginComponent.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/dagger/VolumeDialogPluginComponent.kt
@@ -16,6 +16,7 @@
package com.android.systemui.volume.dialog.dagger
+import com.android.systemui.volume.dialog.dagger.factory.VolumeDialogPluginComponentFactory
import com.android.systemui.volume.dialog.dagger.module.VolumeDialogPluginModule
import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogPlugin
import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogPluginScope
@@ -35,9 +36,9 @@ interface VolumeDialogPluginComponent {
fun viewModel(): VolumeDialogPluginViewModel
@Subcomponent.Factory
- interface Factory {
+ interface Factory : VolumeDialogPluginComponentFactory {
- fun create(
+ override fun create(
@BindsInstance @VolumeDialogPlugin scope: CoroutineScope
): VolumeDialogPluginComponent
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/dagger/factory/VolumeDialogPluginComponentFactory.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/dagger/factory/VolumeDialogPluginComponentFactory.kt
new file mode 100644
index 000000000000..8edccd525f68
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/dagger/factory/VolumeDialogPluginComponentFactory.kt
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.volume.dialog.dagger.factory
+
+import com.android.systemui.volume.dialog.dagger.VolumeDialogPluginComponent
+import kotlinx.coroutines.CoroutineScope
+
+/** Common interface for all dagger Subcomponent.Factory providing [VolumeDialogPluginComponent]. */
+interface VolumeDialogPluginComponentFactory {
+
+ fun create(scope: CoroutineScope): VolumeDialogPluginComponent
+}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/dagger/module/VolumeDialogPluginModule.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/dagger/module/VolumeDialogPluginModule.kt
index cd8cdc8573bd..547c51d1cefd 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/dagger/module/VolumeDialogPluginModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/dagger/module/VolumeDialogPluginModule.kt
@@ -17,13 +17,22 @@
package com.android.systemui.volume.dialog.dagger.module
import com.android.systemui.volume.dialog.dagger.VolumeDialogComponent
+import com.android.systemui.volume.dialog.shared.model.CsdWarningConfigModel
import com.android.systemui.volume.dialog.utils.VolumeTracer
import com.android.systemui.volume.dialog.utils.VolumeTracerImpl
import dagger.Binds
import dagger.Module
+import dagger.Provides
@Module(subcomponents = [VolumeDialogComponent::class])
interface VolumeDialogPluginModule {
@Binds fun bindVolumeTracer(volumeTracer: VolumeTracerImpl): VolumeTracer
+
+ companion object {
+
+ @Provides
+ fun provideCsdWarningConfigModel(): CsdWarningConfigModel =
+ CsdWarningConfigModel(emptyList())
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogCsdWarningInteractor.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogCsdWarningInteractor.kt
new file mode 100644
index 000000000000..ef9def328d15
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogCsdWarningInteractor.kt
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.volume.dialog.domain.interactor
+
+import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogPluginScope
+import com.android.systemui.volume.dialog.shared.model.VolumeDialogCsdWarningModel
+import javax.inject.Inject
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.flatMapLatest
+import kotlinx.coroutines.flow.flow
+import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.flow.map
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@VolumeDialogPluginScope
+class VolumeDialogCsdWarningInteractor
+@Inject
+constructor(private val stateInteractor: VolumeDialogStateInteractor) {
+
+ /** Emits warning when the warning should be visible and null when it shouldn't */
+ val csdWarning: Flow<Int?> =
+ stateInteractor.volumeDialogState
+ .map { it.isShowingCsdWarning }
+ .flatMapLatest { model ->
+ when (model) {
+ is VolumeDialogCsdWarningModel.Visible ->
+ flow {
+ emit(model.warning)
+ delay(model.duration)
+ emit(null)
+ }
+ is VolumeDialogCsdWarningModel.Invisible -> flowOf(null)
+ }
+ }
+
+ fun onCsdWarningDismissed() {
+ stateInteractor.setCsdWarning(VolumeDialogCsdWarningModel.Invisible)
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogStateInteractor.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogStateInteractor.kt
index 26d2414acec1..b3c92f8cdbb9 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogStateInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogStateInteractor.kt
@@ -23,10 +23,12 @@ import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogPlugin
import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogPluginScope
import com.android.systemui.volume.dialog.data.repository.VolumeDialogStateRepository
import com.android.systemui.volume.dialog.domain.model.VolumeDialogEventModel
+import com.android.systemui.volume.dialog.shared.model.VolumeDialogCsdWarningModel
import com.android.systemui.volume.dialog.shared.model.VolumeDialogSafetyWarningModel
import com.android.systemui.volume.dialog.shared.model.VolumeDialogStateModel
import com.android.systemui.volume.dialog.shared.model.VolumeDialogStreamModel
import javax.inject.Inject
+import kotlin.time.Duration.Companion.milliseconds
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.launchIn
@@ -64,6 +66,14 @@ constructor(
is VolumeDialogEventModel.ShowSafetyWarning -> {
setSafetyWarning(VolumeDialogSafetyWarningModel.Visible(event.flags))
}
+ is VolumeDialogEventModel.ShowCsdWarning -> {
+ setCsdWarning(
+ VolumeDialogCsdWarningModel.Visible(
+ warning = event.csdWarning,
+ duration = event.durationMs.milliseconds,
+ )
+ )
+ }
is VolumeDialogEventModel.SubscribedToEvents -> {
volumeDialogController.getState()
}
@@ -81,6 +91,10 @@ constructor(
volumeDialogStateRepository.updateState { it.copy(isShowingSafetyWarning = model) }
}
+ fun setCsdWarning(model: VolumeDialogCsdWarningModel) {
+ volumeDialogStateRepository.updateState { it.copy(isShowingCsdWarning = model) }
+ }
+
/** Returns a copy of [model] filled with the values from [VolumeDialogController.State]. */
private fun VolumeDialogController.State.copyIntoModel(
model: VolumeDialogStateModel
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt
index 2af4b61ee6c4..3d0c7d64b2a4 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt
@@ -40,6 +40,7 @@ import com.android.systemui.volume.dialog.ringer.ui.viewmodel.RingerViewModel
import com.android.systemui.volume.dialog.ringer.ui.viewmodel.RingerViewModelState
import com.android.systemui.volume.dialog.ringer.ui.viewmodel.VolumeDialogRingerDrawerViewModel
import com.android.systemui.volume.dialog.ui.utils.suspendAnimate
+import com.android.systemui.volume.dialog.ui.viewmodel.VolumeDialogViewModel
import javax.inject.Inject
import kotlin.properties.Delegates
import kotlinx.coroutines.CoroutineScope
@@ -56,7 +57,10 @@ private const val BUTTON_MIN_VISIBLE_CHANGE = 0.05F
@VolumeDialogScope
class VolumeDialogRingerViewBinder
@Inject
-constructor(private val viewModel: VolumeDialogRingerDrawerViewModel) {
+constructor(
+ private val viewModel: VolumeDialogRingerDrawerViewModel,
+ private val dialogViewModel: VolumeDialogViewModel,
+) {
private val roundnessSpringForce =
SpringForce(1F).apply {
stiffness = 800F
@@ -116,6 +120,7 @@ constructor(private val viewModel: VolumeDialogRingerDrawerViewModel) {
drawerContainer.setTransitionListener(ringerDrawerTransitionListener)
volumeDialogBackgroundView.background = volumeDialogBackgroundView.background.mutate()
ringerBackgroundView.background = ringerBackgroundView.background.mutate()
+ launch { dialogViewModel.addTouchableBounds(drawerContainer) }
viewModel.ringerViewModel
.mapLatest { ringerState ->
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/settings/ui/binder/VolumeDialogSettingsButtonViewBinder.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/settings/ui/binder/VolumeDialogSettingsButtonViewBinder.kt
index 70e342f3eefb..a330685fc6bb 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/settings/ui/binder/VolumeDialogSettingsButtonViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/settings/ui/binder/VolumeDialogSettingsButtonViewBinder.kt
@@ -21,18 +21,24 @@ import android.widget.ImageButton
import com.android.systemui.res.R
import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogScope
import com.android.systemui.volume.dialog.settings.ui.viewmodel.VolumeDialogSettingsButtonViewModel
+import com.android.systemui.volume.dialog.ui.viewmodel.VolumeDialogViewModel
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
+import kotlinx.coroutines.launch
@VolumeDialogScope
class VolumeDialogSettingsButtonViewBinder
@Inject
-constructor(private val viewModel: VolumeDialogSettingsButtonViewModel) {
+constructor(
+ private val viewModel: VolumeDialogSettingsButtonViewModel,
+ private val dialogViewModel: VolumeDialogViewModel,
+) {
fun CoroutineScope.bind(view: View) {
val button = view.requireViewById<ImageButton>(R.id.volume_dialog_settings)
+ launch { dialogViewModel.addTouchableBounds(button) }
viewModel.isVisible
.onEach { isVisible -> button.visibility = if (isVisible) View.VISIBLE else View.GONE }
.launchIn(this)
diff --git a/packages/CrashRecovery/framework/java/android/service/watchdog/PackageConfig.aidl b/packages/SystemUI/src/com/android/systemui/volume/dialog/shared/model/CsdWarningConfigModel.kt
index 013158676f79..e6741bae6c26 100644
--- a/packages/CrashRecovery/framework/java/android/service/watchdog/PackageConfig.aidl
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/shared/model/CsdWarningConfigModel.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2019 The Android Open Source Project
+ * Copyright (C) 2025 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,9 +14,8 @@
* limitations under the License.
*/
-package android.service.watchdog;
+package com.android.systemui.volume.dialog.shared.model
-/**
- * @hide
- */
-parcelable PackageConfig;
+import com.android.systemui.volume.CsdWarningAction
+
+data class CsdWarningConfigModel(val actions: List<CsdWarningAction>)
diff --git a/packages/SystemUI/src/com/android/systemui/qs/panels/domain/interactor/PaginatedGridInteractor.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/shared/model/VolumeDialogCsdWarningModel.kt
index d7d1ce9797ee..219af7165534 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/panels/domain/interactor/PaginatedGridInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/shared/model/VolumeDialogCsdWarningModel.kt
@@ -14,17 +14,16 @@
* limitations under the License.
*/
-package com.android.systemui.qs.panels.domain.interactor
+package com.android.systemui.volume.dialog.shared.model
-import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.qs.panels.data.repository.PaginatedGridRepository
-import javax.inject.Inject
+import kotlin.time.Duration
-@SysUISingleton
-class PaginatedGridInteractor
-@Inject
-constructor(paginatedGridRepository: PaginatedGridRepository) {
- val rows = paginatedGridRepository.rows
+/** Models current CSD dialog state. */
+sealed interface VolumeDialogCsdWarningModel {
- val defaultRows = 4
+ /** CSD dialog is visible and has been shown with the [warning] for the [duration]. */
+ data class Visible(val warning: Int, val duration: Duration) : VolumeDialogCsdWarningModel
+
+ /** CSD dialog is invisible. */
+ data object Invisible : VolumeDialogCsdWarningModel
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/shared/model/VolumeDialogStateModel.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/shared/model/VolumeDialogStateModel.kt
index 838006d0adb2..89456fe2ac75 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/shared/model/VolumeDialogStateModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/shared/model/VolumeDialogStateModel.kt
@@ -23,6 +23,7 @@ data class VolumeDialogStateModel(
val shouldShowA11ySlider: Boolean = false,
val isShowingSafetyWarning: VolumeDialogSafetyWarningModel =
VolumeDialogSafetyWarningModel.Invisible,
+ val isShowingCsdWarning: VolumeDialogCsdWarningModel = VolumeDialogCsdWarningModel.Invisible,
val streamModels: Map<Int, VolumeDialogStreamModel> = mapOf(),
val ringerModeInternal: Int = 0,
val ringerModeExternal: Int = 0,
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt
index 21a392776235..a51e33ad05cc 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt
@@ -19,6 +19,7 @@ package com.android.systemui.volume.dialog.sliders.ui
import android.graphics.drawable.Drawable
import android.view.View
import androidx.compose.animation.AnimatedVisibility
+import androidx.compose.animation.core.Animatable
import androidx.compose.animation.core.tween
import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut
@@ -39,14 +40,15 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableFloatStateOf
import androidx.compose.runtime.remember
+import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
-import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
+import com.android.compose.theme.PlatformTheme
import com.android.compose.ui.graphics.painter.DrawablePainter
import com.android.systemui.haptics.slider.compose.ui.SliderHapticsViewModel
import com.android.systemui.lifecycle.rememberViewModel
@@ -59,12 +61,11 @@ import com.android.systemui.volume.haptics.ui.VolumeHapticsConfigsProvider
import javax.inject.Inject
import kotlin.math.round
import kotlin.math.roundToInt
+import kotlinx.coroutines.Job
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.currentCoroutineContext
-import kotlinx.coroutines.flow.distinctUntilChanged
-import kotlinx.coroutines.flow.filter
-import kotlinx.coroutines.flow.map
import kotlinx.coroutines.isActive
+import kotlinx.coroutines.launch
@VolumeDialogSliderScope
class VolumeDialogSliderViewBinder
@@ -77,16 +78,18 @@ constructor(
fun bind(view: View) {
val sliderComposeView: ComposeView = view.requireViewById(R.id.volume_dialog_slider)
sliderComposeView.setContent {
- VolumeDialogSlider(
- viewModel = viewModel,
- overscrollViewModel = overscrollViewModel,
- hapticsViewModelFactory =
- if (com.android.systemui.Flags.hapticsForComposeSliders()) {
- hapticsViewModelFactory
- } else {
- null
- },
- )
+ PlatformTheme {
+ VolumeDialogSlider(
+ viewModel = viewModel,
+ overscrollViewModel = overscrollViewModel,
+ hapticsViewModelFactory =
+ if (com.android.systemui.Flags.hapticsForComposeSliders()) {
+ hapticsViewModelFactory
+ } else {
+ null
+ },
+ )
+ }
}
}
}
@@ -99,7 +102,7 @@ private fun VolumeDialogSlider(
hapticsViewModelFactory: SliderHapticsViewModel.Factory?,
modifier: Modifier = Modifier,
) {
-
+ val coroutineScope = rememberCoroutineScope()
val colors =
SliderDefaults.colors(
thumbColor = MaterialTheme.colorScheme.primary,
@@ -108,8 +111,14 @@ private fun VolumeDialogSlider(
activeTrackColor = MaterialTheme.colorScheme.primary,
inactiveTrackColor = MaterialTheme.colorScheme.surfaceContainerHighest,
)
- val collectedSliderState by viewModel.state.collectAsStateWithLifecycle(null)
- val sliderState = collectedSliderState ?: return
+ val collectedSliderStateModel by viewModel.state.collectAsStateWithLifecycle(null)
+ val sliderStateModel = collectedSliderStateModel ?: return
+
+ val steps = with(sliderStateModel.valueRange) { endInclusive - start - 1 }.toInt()
+
+ var animateJob: Job? = null
+ val animatedSliderValue =
+ remember(sliderStateModel.value) { Animatable(sliderStateModel.value) }
val interactionSource = remember { MutableInteractionSource() }
val hapticsViewModel: SliderHapticsViewModel? =
@@ -117,56 +126,63 @@ private fun VolumeDialogSlider(
rememberViewModel(traceName = "SliderHapticsViewModel") {
it.create(
interactionSource,
- sliderState.valueRange,
+ sliderStateModel.valueRange,
Orientation.Vertical,
- VolumeHapticsConfigsProvider.sliderHapticFeedbackConfig(sliderState.valueRange),
+ VolumeHapticsConfigsProvider.sliderHapticFeedbackConfig(
+ sliderStateModel.valueRange
+ ),
VolumeHapticsConfigsProvider.seekableSliderTrackerConfig,
)
}
}
- val state =
- remember(sliderState.valueRange) {
+ val sliderState =
+ remember(steps, sliderStateModel.valueRange) {
SliderState(
- value = sliderState.value,
- valueRange = sliderState.valueRange,
- steps =
- (sliderState.valueRange.endInclusive - sliderState.valueRange.start - 1)
- .toInt(),
+ value = sliderStateModel.value,
+ valueRange = sliderStateModel.valueRange,
+ steps = steps,
)
- .apply {
- onValueChangeFinished = {
- viewModel.onStreamChangeFinished(value.roundToInt())
+ .also { sliderState ->
+ sliderState.onValueChangeFinished = {
+ viewModel.onStreamChangeFinished(sliderState.value.roundToInt())
hapticsViewModel?.onValueChangeEnded()
}
- setOnValueChangeListener {
- value = it
- hapticsViewModel?.addVelocityDataPoint(it)
+ sliderState.onValueChange = { newValue ->
+ if (newValue != animatedSliderValue.targetValue) {
+ animateJob?.cancel()
+ animateJob =
+ coroutineScope.launch {
+ animatedSliderValue.animateTo(newValue) {
+ sliderState.value = value
+ }
+ }
+ }
+
+ hapticsViewModel?.addVelocityDataPoint(newValue)
overscrollViewModel.setSlider(
- value = value,
- min = valueRange.start,
- max = valueRange.endInclusive,
+ value = sliderState.value,
+ min = sliderState.valueRange.start,
+ max = sliderState.valueRange.endInclusive,
)
- viewModel.setStreamVolume(it, true)
+ viewModel.setStreamVolume(newValue, true)
}
}
}
- var lastDiscreteStep by remember { mutableFloatStateOf(round(sliderState.value)) }
- LaunchedEffect(sliderState.value) {
- state.value = sliderState.value
- snapshotFlow { sliderState.value }
- .map { round(it) }
- .filter { it != lastDiscreteStep }
- .distinctUntilChanged()
- .collect { discreteStep ->
- lastDiscreteStep = discreteStep
- hapticsViewModel?.onValueChange(discreteStep)
- }
+
+ var lastDiscreteStep by remember { mutableFloatStateOf(round(sliderStateModel.value)) }
+ LaunchedEffect(sliderStateModel.value) {
+ val value = sliderStateModel.value
+ launch { animatedSliderValue.animateTo(value) }
+ if (value != lastDiscreteStep) {
+ lastDiscreteStep = value
+ hapticsViewModel?.onValueChange(value)
+ }
}
VerticalSlider(
- state = state,
- enabled = !sliderState.isDisabled,
+ state = sliderState,
+ enabled = !sliderStateModel.isDisabled,
reverseDirection = true,
colors = colors,
interactionSource = interactionSource,
@@ -183,14 +199,14 @@ private fun VolumeDialogSlider(
},
track = {
VolumeDialogSliderTrack(
- state,
+ sliderState,
colors = colors,
- isEnabled = !sliderState.isDisabled,
+ isEnabled = !sliderStateModel.isDisabled,
activeTrackEndIcon = { iconsState ->
- VolumeIcon(sliderState.icon, iconsState.isActiveTrackEndIconVisible)
+ VolumeIcon(sliderStateModel.icon, iconsState.isActiveTrackEndIconVisible)
},
inactiveTrackEndIcon = { iconsState ->
- VolumeIcon(sliderState.icon, !iconsState.isActiveTrackEndIconVisible)
+ VolumeIcon(sliderStateModel.icon, !iconsState.isActiveTrackEndIconVisible)
},
)
},
@@ -205,22 +221,10 @@ private fun BoxScope.VolumeIcon(
) {
AnimatedVisibility(
visible = isVisible,
- enter = fadeIn(animationSpec = tween(durationMillis = 50)),
+ enter = fadeIn(animationSpec = tween(delayMillis = 33, durationMillis = 100)),
exit = fadeOut(animationSpec = tween(durationMillis = 50)),
modifier = modifier.align(Alignment.Center).size(40.dp).padding(10.dp),
) {
Icon(painter = DrawablePainter(drawable), contentDescription = null)
}
}
-
-@OptIn(ExperimentalMaterial3Api::class)
-fun SliderState.setOnValueChangeListener(onValueChange: ((Float) -> Unit)?) {
- with(javaClass.getDeclaredField("onValueChange")) {
- val oldIsAccessible = isAccessible
- AutoCloseable { isAccessible = oldIsAccessible }
- .use {
- isAccessible = true
- set(this@setOnValueChangeListener, onValueChange)
- }
- }
-}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSlidersViewBinder.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSlidersViewBinder.kt
index c66955a0c187..7f58c835094f 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSlidersViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSlidersViewBinder.kt
@@ -25,15 +25,20 @@ import com.android.systemui.res.R
import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogScope
import com.android.systemui.volume.dialog.sliders.dagger.VolumeDialogSliderComponent
import com.android.systemui.volume.dialog.sliders.ui.viewmodel.VolumeDialogSlidersViewModel
+import com.android.systemui.volume.dialog.ui.viewmodel.VolumeDialogViewModel
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
+import kotlinx.coroutines.launch
@VolumeDialogScope
class VolumeDialogSlidersViewBinder
@Inject
-constructor(private val viewModel: VolumeDialogSlidersViewModel) {
+constructor(
+ private val viewModel: VolumeDialogSlidersViewModel,
+ private val dialogViewModel: VolumeDialogViewModel,
+) {
fun CoroutineScope.bind(view: View) {
val floatingSlidersContainer: ViewGroup =
@@ -44,6 +49,7 @@ constructor(private val viewModel: VolumeDialogSlidersViewModel) {
val settingsButton: View = view.requireViewById(R.id.volume_dialog_settings)
val ringerDrawer: View = view.requireViewById(R.id.volume_ringer_drawer)
+ launch { dialogViewModel.addTouchableBounds(mainSliderContainer, floatingSlidersContainer) }
viewModel.sliders
.onEach { uiModel ->
bindSlider(
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/binder/VolumeDialogViewBinder.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/binder/VolumeDialogViewBinder.kt
index b8c0fc048c28..f2d7d956291c 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/binder/VolumeDialogViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/binder/VolumeDialogViewBinder.kt
@@ -18,12 +18,8 @@ package com.android.systemui.volume.dialog.ui.binder
import android.app.Dialog
import android.content.res.Resources
-import android.graphics.Rect
-import android.graphics.Region
import android.view.View
-import android.view.ViewGroup
import android.view.ViewTreeObserver
-import android.view.ViewTreeObserver.InternalInsetsInfo
import android.view.WindowInsets
import androidx.constraintlayout.motion.widget.MotionLayout
import androidx.core.view.updatePadding
@@ -31,7 +27,6 @@ import com.android.internal.view.RotationPolicy
import com.android.systemui.common.ui.view.onApplyWindowInsets
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.res.R
-import com.android.systemui.util.children
import com.android.systemui.util.kotlin.awaitCancellationThenDispose
import com.android.systemui.volume.SystemUIInterpolators
import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogScope
@@ -45,6 +40,7 @@ import com.android.systemui.volume.dialog.ui.viewmodel.VolumeDialogViewModel
import com.android.systemui.volume.dialog.utils.VolumeTracer
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.launchIn
@@ -55,6 +51,7 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.suspendCancellableCoroutine
/** Binds the root view of the Volume Dialog. */
+@OptIn(ExperimentalCoroutinesApi::class)
@VolumeDialogScope
class VolumeDialogViewBinder
@Inject
@@ -90,7 +87,7 @@ constructor(
}
.launchIn(this)
- launch { root.viewTreeObserver.computeInternalInsetsListener(root) }
+ launch { root.viewTreeObserver.listenToComputeInternalInsets() }
launch {
root
@@ -177,28 +174,16 @@ constructor(
animator.suspendAnimate(jankListenerFactory.dismiss(this, duration))
}
- private suspend fun ViewTreeObserver.computeInternalInsetsListener(viewGroup: ViewGroup) =
+ private suspend fun ViewTreeObserver.listenToComputeInternalInsets() =
suspendCancellableCoroutine<Unit> { continuation ->
val listener =
ViewTreeObserver.OnComputeInternalInsetsListener { inoutInfo ->
- viewGroup.fillTouchableBounds(inoutInfo)
+ viewModel.fillTouchableBounds(inoutInfo)
}
addOnComputeInternalInsetsListener(listener)
continuation.invokeOnCancellation { removeOnComputeInternalInsetsListener(listener) }
}
- private fun ViewGroup.fillTouchableBounds(internalInsetsInfo: InternalInsetsInfo) {
- for (child in children) {
- val boundsRect = Rect()
- internalInsetsInfo.setTouchableInsets(InternalInsetsInfo.TOUCHABLE_INSETS_REGION)
-
- child.getBoundsInWindow(boundsRect, false)
- internalInsetsInfo.touchableRegion.op(boundsRect, Region.Op.UNION)
- }
- val boundsRect = Rect()
- getBoundsInWindow(boundsRect, false)
- }
-
private fun MotionLayout.transitionToState(newState: Int, animate: Boolean) {
if (animate) {
transitionToState(newState)
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogPluginViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogPluginViewModel.kt
index e7a2cf4eff08..1765f0111e08 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogPluginViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogPluginViewModel.kt
@@ -20,9 +20,11 @@ import com.android.systemui.volume.Events
import com.android.systemui.volume.dialog.VolumeDialog
import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogPlugin
import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogPluginScope
+import com.android.systemui.volume.dialog.domain.interactor.VolumeDialogCsdWarningInteractor
import com.android.systemui.volume.dialog.domain.interactor.VolumeDialogSafetyWarningInteractor
import com.android.systemui.volume.dialog.domain.interactor.VolumeDialogVisibilityInteractor
import com.android.systemui.volume.dialog.shared.VolumeDialogLogger
+import com.android.systemui.volume.dialog.shared.model.CsdWarningConfigModel
import com.android.systemui.volume.dialog.shared.model.VolumeDialogVisibilityModel
import javax.inject.Inject
import javax.inject.Provider
@@ -38,8 +40,10 @@ constructor(
@VolumeDialogPlugin private val coroutineScope: CoroutineScope,
private val dialogVisibilityInteractor: VolumeDialogVisibilityInteractor,
private val dialogSafetyWarningInteractor: VolumeDialogSafetyWarningInteractor,
+ private val dialogCsdWarningInteractor: VolumeDialogCsdWarningInteractor,
private val volumeDialogProvider: Provider<VolumeDialog>,
private val logger: VolumeDialogLogger,
+ val csdWarningConfigModel: CsdWarningConfigModel,
) {
fun launchVolumeDialog() {
@@ -61,11 +65,16 @@ constructor(
}
val isShowingSafetyWarning: Flow<Boolean> = dialogSafetyWarningInteractor.isShowingSafetyWarning
+ val csdWarning: Flow<Int?> = dialogCsdWarningInteractor.csdWarning
fun onSafetyWarningDismissed() {
dialogSafetyWarningInteractor.onSafetyWarningDismissed()
}
+ fun onCsdWarningDismissed() {
+ dialogCsdWarningInteractor.onCsdWarningDismissed()
+ }
+
private fun showDialog() {
volumeDialogProvider
.get()
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogViewModel.kt
index 7a6ede4c8b9c..e47b53177189 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogViewModel.kt
@@ -18,6 +18,10 @@ package com.android.systemui.volume.dialog.ui.viewmodel
import android.content.Context
import android.content.res.Configuration
+import android.graphics.Rect
+import android.graphics.Region
+import android.view.View
+import android.view.ViewTreeObserver.InternalInsetsInfo
import com.android.systemui.res.R
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.DevicePostureController
@@ -37,6 +41,7 @@ import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onStart
+import kotlinx.coroutines.suspendCancellableCoroutine
/** Provides a state for the Volume Dialog. */
@VolumeDialogScope
@@ -77,10 +82,27 @@ constructor(
}
.filterNotNull()
+ private val touchableBoundsViews: MutableCollection<View> = mutableSetOf()
+
/** @return true when the foldable device screen curve is in the way of the volume dialog */
private fun shouldOffsetVolumeDialog(devicePosture: Int, config: Configuration): Boolean {
val isLandscape = config.orientation == Configuration.ORIENTATION_LANDSCAPE
val isHalfOpen = devicePosture == DevicePostureController.DEVICE_POSTURE_HALF_OPENED
return isLandscape && isHalfOpen
}
+
+ fun fillTouchableBounds(internalInsetsInfo: InternalInsetsInfo) {
+ for (child in touchableBoundsViews) {
+ val boundsRect = Rect()
+ internalInsetsInfo.setTouchableInsets(InternalInsetsInfo.TOUCHABLE_INSETS_REGION)
+
+ child.getBoundsInWindow(boundsRect, false)
+ internalInsetsInfo.touchableRegion.op(boundsRect, Region.Op.UNION)
+ }
+ }
+
+ suspend fun addTouchableBounds(vararg views: View): Nothing = suspendCancellableCoroutine {
+ touchableBoundsViews.addAll(views)
+ it.invokeOnCancellation { touchableBoundsViews.removeAll(views.toSet()) }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/haptics/ui/VolumeHapticsConfigsProvider.kt b/packages/SystemUI/src/com/android/systemui/volume/haptics/ui/VolumeHapticsConfigsProvider.kt
index 92e9bf2d1ffc..863ae6262f72 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/haptics/ui/VolumeHapticsConfigsProvider.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/haptics/ui/VolumeHapticsConfigsProvider.kt
@@ -18,11 +18,13 @@ package com.android.systemui.volume.haptics.ui
import com.android.systemui.haptics.slider.SeekableSliderTrackerConfig
import com.android.systemui.haptics.slider.SliderHapticFeedbackConfig
+import com.android.systemui.haptics.slider.SliderHapticFeedbackFilter
object VolumeHapticsConfigsProvider {
fun sliderHapticFeedbackConfig(
- valueRange: ClosedFloatingPointRange<Float>
+ valueRange: ClosedFloatingPointRange<Float>,
+ filter: SliderHapticFeedbackFilter = SliderHapticFeedbackFilter(),
): SliderHapticFeedbackConfig {
val sliderStepSize = 1f / (valueRange.endInclusive - valueRange.start)
return SliderHapticFeedbackConfig(
@@ -33,6 +35,7 @@ object VolumeHapticsConfigsProvider {
additionalVelocityMaxBump = 0.2f,
maxVelocityToScale = 0.1f, /* slider progress(from 0 to 1) per sec */
sliderStepSize = sliderStepSize,
+ filter = filter,
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteria.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteria.kt
deleted file mode 100644
index bee45645bfdb..000000000000
--- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteria.kt
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2025 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.volume.panel.component.mediaoutput.domain
-
-import android.content.Context
-import com.android.settingslib.media.PhoneMediaDevice.isDesktop
-import com.android.systemui.dagger.qualifiers.Application
-import com.android.systemui.volume.panel.dagger.scope.VolumePanelScope
-import com.android.systemui.volume.panel.domain.ComponentAvailabilityCriteria
-import javax.inject.Inject
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.SharingStarted
-import kotlinx.coroutines.flow.flow
-import kotlinx.coroutines.flow.stateIn
-
-@VolumePanelScope
-class MediaOutputAvailabilityCriteria
-@Inject
-constructor(
- @Application private val context: Context,
- @VolumePanelScope private val scope: CoroutineScope,
-) : ComponentAvailabilityCriteria {
-
- private val availability =
- flow { emit(!isDesktop(context)) }.stateIn(scope, SharingStarted.WhileSubscribed(), false)
-
- override fun isAvailable(): Flow<Boolean> = availability
-}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModel.kt
index 5f20b4e27a80..e2d2f3f68c6b 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModel.kt
@@ -20,6 +20,7 @@ import android.content.Context
import com.android.internal.logging.UiEventLogger
import com.android.systemui.Flags
import com.android.systemui.common.shared.model.Icon
+import com.android.systemui.haptics.slider.SliderHapticFeedbackFilter
import com.android.systemui.haptics.slider.compose.ui.SliderHapticsViewModel
import com.android.systemui.res.R
import com.android.systemui.volume.domain.interactor.AudioSharingInteractor
@@ -102,6 +103,9 @@ constructor(
override val icon: Icon,
override val label: String,
) : SliderState {
+ override val hapticFilter: SliderHapticFeedbackFilter
+ get() = SliderHapticFeedbackFilter()
+
override val isEnabled: Boolean
get() = true
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModel.kt
index 4410cb156723..f9d776bc3aaf 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModel.kt
@@ -28,6 +28,7 @@ import com.android.settingslib.volume.shared.model.AudioStreamModel
import com.android.settingslib.volume.shared.model.RingerMode
import com.android.systemui.Flags
import com.android.systemui.common.shared.model.Icon
+import com.android.systemui.haptics.slider.SliderHapticFeedbackFilter
import com.android.systemui.haptics.slider.compose.ui.SliderHapticsViewModel
import com.android.systemui.modes.shared.ModesUiIcons
import com.android.systemui.res.R
@@ -159,6 +160,7 @@ constructor(
return State(
value = volume.toFloat(),
valueRange = volumeRange.first.toFloat()..volumeRange.last.toFloat(),
+ hapticFilter = createHapticFilter(ringerMode),
icon = icon,
label = label,
disabledMessage = disabledMessage,
@@ -198,6 +200,18 @@ constructor(
)
}
+ private fun AudioStreamModel.createHapticFilter(
+ ringerMode: RingerMode
+ ): SliderHapticFeedbackFilter =
+ when (audioStream.value) {
+ AudioManager.STREAM_RING -> SliderHapticFeedbackFilter(vibrateOnLowerBookend = false)
+ AudioManager.STREAM_NOTIFICATION ->
+ SliderHapticFeedbackFilter(
+ vibrateOnLowerBookend = ringerMode.value != AudioManager.RINGER_MODE_VIBRATE
+ )
+ else -> SliderHapticFeedbackFilter()
+ }
+
// TODO: b/372213356 - Figure out the correct messages for VOICE_CALL and RING.
// In fact, VOICE_CALL should not be affected by interruption filtering at all.
private fun streamDisabledMessage(): Flow<String> {
@@ -288,6 +302,7 @@ constructor(
private data class State(
override val value: Float,
override val valueRange: ClosedFloatingPointRange<Float>,
+ override val hapticFilter: SliderHapticFeedbackFilter,
override val icon: Icon,
override val label: String,
override val disabledMessage: String?,
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/CastVolumeSliderViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/CastVolumeSliderViewModel.kt
index 0d804525a68c..533276413ade 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/CastVolumeSliderViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/CastVolumeSliderViewModel.kt
@@ -21,6 +21,7 @@ import android.media.session.MediaController.PlaybackInfo
import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.systemui.Flags
import com.android.systemui.common.shared.model.Icon
+import com.android.systemui.haptics.slider.SliderHapticFeedbackFilter
import com.android.systemui.haptics.slider.compose.ui.SliderHapticsViewModel
import com.android.systemui.res.R
import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.MediaDeviceSessionInteractor
@@ -90,6 +91,9 @@ constructor(
override val isEnabled: Boolean,
override val a11yStep: Int,
) : SliderState {
+ override val hapticFilter: SliderHapticFeedbackFilter
+ get() = SliderHapticFeedbackFilter()
+
override val disabledMessage: String?
get() = null
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/SliderState.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/SliderState.kt
index c951928bb977..f1353713799d 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/SliderState.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/SliderState.kt
@@ -17,6 +17,7 @@
package com.android.systemui.volume.panel.component.volume.slider.ui.viewmodel
import com.android.systemui.common.shared.model.Icon
+import com.android.systemui.haptics.slider.SliderHapticFeedbackFilter
/**
* Models a state of a volume slider.
@@ -26,6 +27,8 @@ import com.android.systemui.common.shared.model.Icon
sealed interface SliderState {
val value: Float
val valueRange: ClosedFloatingPointRange<Float>
+ val hapticFilter: SliderHapticFeedbackFilter
+
val icon: Icon?
val isEnabled: Boolean
val label: String
@@ -42,6 +45,7 @@ sealed interface SliderState {
data object Empty : SliderState {
override val value: Float = 0f
override val valueRange: ClosedFloatingPointRange<Float> = 0f..1f
+ override val hapticFilter = SliderHapticFeedbackFilter()
override val icon: Icon? = null
override val label: String = ""
override val disabledMessage: String? = null
diff --git a/packages/SystemUI/src/com/android/systemui/wallpapers/data/repository/WallpaperFocalAreaRepository.kt b/packages/SystemUI/src/com/android/systemui/wallpapers/data/repository/WallpaperFocalAreaRepository.kt
new file mode 100644
index 000000000000..2c3491b06a90
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/wallpapers/data/repository/WallpaperFocalAreaRepository.kt
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.wallpapers.data.repository
+
+import android.graphics.PointF
+import android.graphics.RectF
+import com.android.systemui.dagger.SysUISingleton
+import javax.inject.Inject
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.asStateFlow
+
+interface WallpaperFocalAreaRepository {
+
+ /** The top of shortcut in screen, used by wallpaper to find remaining space in lockscreen */
+ val shortcutAbsoluteTop: StateFlow<Float>
+
+ val notificationStackAbsoluteBottom: StateFlow<Float>
+
+ val wallpaperFocalAreaBounds: StateFlow<RectF>
+
+ val wallpaperFocalAreaTapPosition: StateFlow<PointF>
+
+ /** top of notifications without bcsmartspace in small clock settings */
+ val notificationDefaultTop: StateFlow<Float>
+
+ fun setShortcutAbsoluteTop(top: Float)
+
+ /** Set bottom of notifications from notification stack, used as top for focal area bounds */
+ fun setNotificationStackAbsoluteBottom(bottom: Float)
+
+ fun setWallpaperFocalAreaBounds(bounds: RectF)
+
+ fun setNotificationDefaultTop(top: Float)
+
+ fun setTapPosition(tapPosition: PointF)
+}
+
+@SysUISingleton
+class WallpaperFocalAreaRepositoryImpl @Inject constructor() : WallpaperFocalAreaRepository {
+
+ private val _shortcutAbsoluteTop = MutableStateFlow(0F)
+ override val shortcutAbsoluteTop = _shortcutAbsoluteTop.asStateFlow()
+
+ private val _notificationStackAbsoluteBottom = MutableStateFlow(0F)
+ override val notificationStackAbsoluteBottom = _notificationStackAbsoluteBottom.asStateFlow()
+
+ private val _wallpaperFocalAreaBounds = MutableStateFlow(RectF(0F, 0F, 0F, 0F))
+ override val wallpaperFocalAreaBounds: StateFlow<RectF> =
+ _wallpaperFocalAreaBounds.asStateFlow()
+
+ private val _wallpaperFocalAreaTapPosition = MutableStateFlow(PointF(0F, 0F))
+ override val wallpaperFocalAreaTapPosition: StateFlow<PointF> =
+ _wallpaperFocalAreaTapPosition.asStateFlow()
+
+ private val _notificationDefaultTop = MutableStateFlow(0F)
+ override val notificationDefaultTop: StateFlow<Float> = _notificationDefaultTop.asStateFlow()
+
+ override fun setShortcutAbsoluteTop(top: Float) {
+ _shortcutAbsoluteTop.value = top
+ }
+
+ override fun setNotificationStackAbsoluteBottom(bottom: Float) {
+ _notificationStackAbsoluteBottom.value = bottom
+ }
+
+ override fun setNotificationDefaultTop(top: Float) {
+ _notificationDefaultTop.value = top
+ }
+
+ override fun setWallpaperFocalAreaBounds(bounds: RectF) {
+ _wallpaperFocalAreaBounds.value = bounds
+ }
+
+ override fun setTapPosition(point: PointF) {
+ _wallpaperFocalAreaTapPosition.value = point
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/wallpapers/data/repository/WallpaperRepository.kt b/packages/SystemUI/src/com/android/systemui/wallpapers/data/repository/WallpaperRepository.kt
index 9794c619041e..a34a2ddb7713 100644
--- a/packages/SystemUI/src/com/android/systemui/wallpapers/data/repository/WallpaperRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/wallpapers/data/repository/WallpaperRepository.kt
@@ -27,12 +27,17 @@ import android.view.View
import androidx.annotation.VisibleForTesting
import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.internal.R
-import com.android.systemui.Flags
import com.android.systemui.broadcast.BroadcastDispatcher
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
-import com.android.systemui.keyguard.data.repository.KeyguardRepository
+import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
+import com.android.systemui.keyguard.shared.model.Edge
+import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.keyguard.shared.model.TransitionState
+import com.android.systemui.res.R as SysUIR
+import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shared.Flags.ambientAod
+import com.android.systemui.shared.Flags.extendedWallpaperEffects
import com.android.systemui.user.data.model.SelectedUserModel
import com.android.systemui.user.data.model.SelectionStatus
import com.android.systemui.user.data.repository.UserRepository
@@ -66,7 +71,7 @@ interface WallpaperRepository {
/** Set rootView to get its windowToken afterwards */
var rootView: View?
- /** when we use magic portrait wallpapers, we should always get its bounds from keyguard */
+ /** some wallpapers require bounds to be sent from keyguard */
val shouldSendFocalArea: StateFlow<Boolean>
}
@@ -78,9 +83,10 @@ constructor(
@Background private val bgDispatcher: CoroutineDispatcher,
broadcastDispatcher: BroadcastDispatcher,
userRepository: UserRepository,
- keyguardRepository: KeyguardRepository,
+ wallpaperFocalAreaRepository: WallpaperFocalAreaRepository,
private val wallpaperManager: WallpaperManager,
- context: Context,
+ private val context: Context,
+ keyguardTransitionInteractor: KeyguardTransitionInteractor,
) : WallpaperRepository {
private val wallpaperChanged: Flow<Unit> =
broadcastDispatcher
@@ -100,6 +106,7 @@ constructor(
.filter { it.selectionStatus == SelectionStatus.SELECTION_COMPLETE }
@VisibleForTesting var sendLockscreenLayoutJob: Job? = null
+ @VisibleForTesting var sendTapInShapeEffectsJob: Job? = null
override val wallpaperInfo: StateFlow<WallpaperInfo?> =
if (!wallpaperManager.isWallpaperSupported) {
@@ -125,51 +132,80 @@ constructor(
override val shouldSendFocalArea =
wallpaperInfo
.map {
- val shouldSendNotificationLayout =
- it?.component?.className == MAGIC_PORTRAIT_CLASSNAME
+ val focalAreaTarget = context.resources.getString(SysUIR.string.focal_area_target)
+ val shouldSendNotificationLayout = it?.component?.className == focalAreaTarget
if (shouldSendNotificationLayout) {
sendLockscreenLayoutJob =
scope.launch {
- keyguardRepository.wallpaperFocalAreaBounds.collect {
- wallpaperFocalAreaBounds ->
+ combine(
+ wallpaperFocalAreaRepository.wallpaperFocalAreaBounds,
+ keyguardTransitionInteractor
+ .transition(
+ edge = Edge.create(to = Scenes.Lockscreen),
+ edgeWithoutSceneContainer =
+ Edge.create(to = KeyguardState.LOCKSCREEN),
+ )
+ .filter { transitionStep ->
+ transitionStep.transitionState ==
+ TransitionState.STARTED
+ },
+ ::Pair,
+ )
+ .map { (bounds, _) -> bounds }
+ .collect { wallpaperFocalAreaBounds ->
+ wallpaperManager.sendWallpaperCommand(
+ /* windowToken = */ rootView?.windowToken,
+ /* action = */ WallpaperManager
+ .COMMAND_LOCKSCREEN_LAYOUT_CHANGED,
+ /* x = */ 0,
+ /* y = */ 0,
+ /* z = */ 0,
+ /* extras = */ Bundle().apply {
+ putFloat(
+ "wallpaperFocalAreaLeft",
+ wallpaperFocalAreaBounds.left,
+ )
+ putFloat(
+ "wallpaperFocalAreaRight",
+ wallpaperFocalAreaBounds.right,
+ )
+ putFloat(
+ "wallpaperFocalAreaTop",
+ wallpaperFocalAreaBounds.top,
+ )
+ putFloat(
+ "wallpaperFocalAreaBottom",
+ wallpaperFocalAreaBounds.bottom,
+ )
+ },
+ )
+ }
+ }
+
+ sendTapInShapeEffectsJob =
+ scope.launch {
+ wallpaperFocalAreaRepository.wallpaperFocalAreaTapPosition.collect {
+ wallpaperFocalAreaTapPosition ->
wallpaperManager.sendWallpaperCommand(
/* windowToken = */ rootView?.windowToken,
- /* action = */ WallpaperManager
- .COMMAND_LOCKSCREEN_LAYOUT_CHANGED,
- /* x = */ 0,
- /* y = */ 0,
+ /* action = */ WallpaperManager.COMMAND_LOCKSCREEN_TAP,
+ /* x = */ wallpaperFocalAreaTapPosition.x.toInt(),
+ /* y = */ wallpaperFocalAreaTapPosition.y.toInt(),
/* z = */ 0,
- /* extras = */ Bundle().apply {
- putFloat(
- "wallpaperFocalAreaLeft",
- wallpaperFocalAreaBounds.left,
- )
- putFloat(
- "wallpaperFocalAreaRight",
- wallpaperFocalAreaBounds.right,
- )
- putFloat(
- "wallpaperFocalAreaTop",
- wallpaperFocalAreaBounds.top,
- )
- putFloat(
- "wallpaperFocalAreaBottom",
- wallpaperFocalAreaBounds.bottom,
- )
- },
+ /* extras = */ null,
)
}
}
} else {
sendLockscreenLayoutJob?.cancel()
+ sendTapInShapeEffectsJob?.cancel()
}
shouldSendNotificationLayout
}
.stateIn(
scope,
- // Always be listening for wallpaper changes when magic portrait flag is on
- if (Flags.magicPortraitWallpapers()) SharingStarted.Eagerly else WhileSubscribed(),
- initialValue = Flags.magicPortraitWallpapers(),
+ if (extendedWallpaperEffects()) SharingStarted.Eagerly else WhileSubscribed(),
+ initialValue = extendedWallpaperEffects(),
)
private suspend fun getWallpaper(selectedUser: SelectedUserModel): WallpaperInfo? {
@@ -177,9 +213,4 @@ constructor(
wallpaperManager.getWallpaperInfoForUser(selectedUser.userInfo.id)
}
}
-
- companion object {
- const val MAGIC_PORTRAIT_CLASSNAME =
- "com.google.android.apps.magicportrait.service.MagicPortraitWallpaperService"
- }
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/WallpaperFocalAreaInteractor.kt b/packages/SystemUI/src/com/android/systemui/wallpapers/domain/interactor/WallpaperFocalAreaInteractor.kt
index 934afe248a36..187d6c7801c0 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/WallpaperFocalAreaInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/wallpapers/domain/interactor/WallpaperFocalAreaInteractor.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2024 The Android Open Source Project
+ * Copyright (C) 2025 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,45 +14,43 @@
* limitations under the License.
*/
-package com.android.systemui.keyguard.domain.interactor
+package com.android.systemui.wallpapers.domain.interactor
import android.content.Context
import android.content.res.Resources
+import android.graphics.PointF
import android.graphics.RectF
import android.util.TypedValue
-import com.android.app.animation.MathUtils.max
+import androidx.annotation.VisibleForTesting
+import com.android.app.animation.MathUtils
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
-import com.android.systemui.keyguard.data.repository.KeyguardClockRepository
-import com.android.systemui.keyguard.data.repository.KeyguardRepository
import com.android.systemui.res.R
import com.android.systemui.shade.data.repository.ShadeRepository
import com.android.systemui.statusbar.notification.domain.interactor.ActiveNotificationsInteractor
+import com.android.systemui.wallpapers.data.repository.WallpaperFocalAreaRepository
import com.android.systemui.wallpapers.data.repository.WallpaperRepository
import javax.inject.Inject
import kotlin.math.min
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.SharingStarted
-import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.combine
-import kotlinx.coroutines.flow.stateIn
+import kotlinx.coroutines.flow.distinctUntilChanged
@SysUISingleton
class WallpaperFocalAreaInteractor
@Inject
constructor(
@Application private val applicationScope: CoroutineScope,
- context: Context,
- private val keyguardRepository: KeyguardRepository,
+ private val context: Context,
+ private val wallpaperFocalAreaRepository: WallpaperFocalAreaRepository,
shadeRepository: ShadeRepository,
activeNotificationsInteractor: ActiveNotificationsInteractor,
- keyguardClockRepository: KeyguardClockRepository,
- wallpaperRepository: WallpaperRepository,
+ val wallpaperRepository: WallpaperRepository,
) {
- // When there's notifications in splitshade, magic portrait shape effects should be left
- // aligned in foldable
- private val notificationInShadeWideLayout: Flow<Boolean> =
+ // When there's notifications in splitshade, the focal area should be left aligned
+ @VisibleForTesting
+ val notificationInShadeWideLayout: Flow<Boolean> =
combine(
shadeRepository.isShadeLayoutWide,
activeNotificationsInteractor.areAnyNotificationsPresent,
@@ -64,14 +62,15 @@ constructor(
}
}
- val shouldSendFocalArea = wallpaperRepository.shouldSendFocalArea
- val wallpaperFocalAreaBounds: StateFlow<RectF?> =
+ val hasFocalArea = wallpaperRepository.shouldSendFocalArea
+
+ val wallpaperFocalAreaBounds: Flow<RectF> =
combine(
shadeRepository.isShadeLayoutWide,
notificationInShadeWideLayout,
- keyguardRepository.notificationStackAbsoluteBottom,
- keyguardRepository.shortcutAbsoluteTop,
- keyguardClockRepository.notificationDefaultTop,
+ wallpaperFocalAreaRepository.notificationStackAbsoluteBottom,
+ wallpaperFocalAreaRepository.shortcutAbsoluteTop,
+ wallpaperFocalAreaRepository.notificationDefaultTop,
) {
isShadeLayoutWide,
notificationInShadeWideLayout,
@@ -81,6 +80,7 @@ constructor(
// Wallpaper will be zoomed in with config_wallpaperMaxScale in lockscreen
// so we need to give a bounds taking this scale in consideration
val wallpaperZoomedInScale = getSystemWallpaperMaximumScale(context)
+
val screenBounds =
RectF(
0F,
@@ -96,15 +96,17 @@ constructor(
screenBounds.centerX() + screenBounds.width() / 2F / wallpaperZoomedInScale,
screenBounds.centerY() + screenBounds.height() / 2F / wallpaperZoomedInScale,
)
+
val maxFocalAreaWidth =
TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
FOCAL_AREA_MAX_WIDTH_DP.toFloat(),
context.resources.displayMetrics,
)
+
val (left, right) =
// tablet landscape
- if (context.resources.getBoolean(R.bool.center_align_magic_portrait_shape)) {
+ if (context.resources.getBoolean(R.bool.center_align_focal_area_shape)) {
Pair(
scaledBounds.centerX() - maxFocalAreaWidth / 2F,
scaledBounds.centerX() + maxFocalAreaWidth / 2F,
@@ -129,7 +131,7 @@ constructor(
wallpaperZoomedInScale
val top =
// tablet landscape
- if (context.resources.getBoolean(R.bool.center_align_magic_portrait_shape)) {
+ if (context.resources.getBoolean(R.bool.center_align_focal_area_shape)) {
// no strict constraints for top, use bottom margin to make it symmetric
// vertically
scaledBounds.top + scaledBottomMargin
@@ -141,36 +143,52 @@ constructor(
// handheld / portrait
} else {
scaledBounds.top +
- max(notificationDefaultTop, notificationStackAbsoluteBottom) /
+ MathUtils.max(notificationDefaultTop, notificationStackAbsoluteBottom) /
wallpaperZoomedInScale
}
val bottom = scaledBounds.bottom - scaledBottomMargin
RectF(left, top, right, bottom)
}
- .stateIn(
- applicationScope,
- started = SharingStarted.WhileSubscribed(),
- initialValue = null,
- )
+ .distinctUntilChanged()
+
+ fun setFocalAreaBounds(bounds: RectF) {
+ wallpaperFocalAreaRepository.setWallpaperFocalAreaBounds(bounds)
+ }
- fun setWallpaperFocalAreaBounds(bounds: RectF) {
- keyguardRepository.setWallpaperFocalAreaBounds(bounds)
+ fun setNotificationDefaultTop(top: Float) {
+ wallpaperFocalAreaRepository.setNotificationDefaultTop(top)
+ }
+
+ fun setTapPosition(x: Float, y: Float) {
+ // Focal area should only react to touch event within its bounds
+ val wallpaperZoomedInScale = getSystemWallpaperMaximumScale(context)
+ // Because there's a scale applied on wallpaper in lockscreen
+ // we should map it to the unscaled position on wallpaper
+ val screenCenterX = context.resources.displayMetrics.widthPixels / 2F
+ val newX = (x - screenCenterX) / wallpaperZoomedInScale + screenCenterX
+ val screenCenterY = context.resources.displayMetrics.heightPixels / 2F
+ val newY = (y - screenCenterY) / wallpaperZoomedInScale + screenCenterY
+ if (wallpaperFocalAreaRepository.wallpaperFocalAreaBounds.value.contains(newX, newY)) {
+ wallpaperFocalAreaRepository.setTapPosition(PointF(newX, newY))
+ }
}
companion object {
fun getSystemWallpaperMaximumScale(context: Context): Float {
- return context.resources.getFloat(
- Resources.getSystem()
- .getIdentifier(
- /* name= */ "config_wallpaperMaxScale",
- /* defType= */ "dimen",
- /* defPackage= */ "android",
- )
- )
+ val scale =
+ context.resources.getFloat(
+ Resources.getSystem()
+ .getIdentifier(
+ /* name= */ "config_wallpaperMaxScale",
+ /* defType= */ "dimen",
+ /* defPackage= */ "android",
+ )
+ )
+ return if (scale == 0f) 1f else scale
}
- // A max width for magic portrait shape effects bounds, to avoid it going too large
- // in large screen portrait mode
+ // A max width for focal area shape effects bounds, to avoid
+ // it becoming too large in large screen portrait mode
const val FOCAL_AREA_MAX_WIDTH_DP = 500
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/wallpapers/ui/viewmodel/WallpaperFocalAreaViewModel.kt b/packages/SystemUI/src/com/android/systemui/wallpapers/ui/viewmodel/WallpaperFocalAreaViewModel.kt
new file mode 100644
index 000000000000..70a97d473c49
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/wallpapers/ui/viewmodel/WallpaperFocalAreaViewModel.kt
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.wallpapers.ui.viewmodel
+
+import android.graphics.RectF
+import com.android.systemui.wallpapers.domain.interactor.WallpaperFocalAreaInteractor
+import javax.inject.Inject
+
+class WallpaperFocalAreaViewModel
+@Inject
+constructor(private val wallpaperFocalAreaInteractor: WallpaperFocalAreaInteractor) {
+ val hasFocalArea = wallpaperFocalAreaInteractor.hasFocalArea
+
+ val wallpaperFocalAreaBounds = wallpaperFocalAreaInteractor.wallpaperFocalAreaBounds
+
+ fun setFocalAreaBounds(bounds: RectF) {
+ wallpaperFocalAreaInteractor.setFocalAreaBounds(bounds)
+ }
+
+ fun setTapPosition(x: Float, y: Float) {
+ wallpaperFocalAreaInteractor.setTapPosition(x, y)
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/window/domain/interactor/WindowRootViewBlurInteractor.kt b/packages/SystemUI/src/com/android/systemui/window/domain/interactor/WindowRootViewBlurInteractor.kt
index bfa349876c42..e21e0a1cadc7 100644
--- a/packages/SystemUI/src/com/android/systemui/window/domain/interactor/WindowRootViewBlurInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/window/domain/interactor/WindowRootViewBlurInteractor.kt
@@ -32,7 +32,9 @@ import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
+import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn
@@ -72,39 +74,29 @@ constructor(
/** Radius of blur to be applied on the window root view. */
val blurRadius: StateFlow<Int> = repository.blurRadius.asStateFlow()
- /** Whether the blur applied is opaque or transparent. */
- val isBlurOpaque: StateFlow<Boolean> = repository.isBlurOpaque.asStateFlow()
-
/**
* Emits the applied blur radius whenever blur is successfully applied to the window root view.
*/
val onBlurAppliedEvent: Flow<Int> = repository.onBlurApplied
- /**
- * Request to apply blur while on bouncer, this takes precedence over other blurs (from shade).
- */
- fun requestBlurForBouncer(blurRadius: Int) {
- repository.isBlurOpaque.value = false
- repository.blurRadius.value = blurRadius
- }
-
- /**
- * Request to apply blur while on glanceable hub, this takes precedence over other blurs (from
- * shade) except for bouncer.
- */
- fun requestBlurForGlanceableHub(blurRadius: Int): Boolean {
- if (keyguardInteractor.primaryBouncerShowing.value) {
- return false
+ /** Whether the blur applied is opaque or transparent. */
+ val isBlurOpaque: Flow<Boolean> =
+ combine(
+ if (Flags.bouncerUiRevamp()) {
+ keyguardInteractor.primaryBouncerShowing.or(isBouncerTransitionInProgress)
+ } else {
+ flowOf(false)
+ },
+ if (Flags.glanceableHubBlurredBackground()) {
+ communalInteractor.isCommunalBlurring
+ } else {
+ flowOf(false)
+ },
+ repository.isBlurOpaque,
+ ) { bouncerActive, ghActive, shadeBlurOpaque ->
+ if (bouncerActive || ghActive) false else shadeBlurOpaque
}
- Log.d(TAG, "requestBlurForGlanceableHub for $blurRadius")
-
- repository.isBlurOpaque.value = false
- repository.blurRadius.value = blurRadius
-
- return true
- }
-
/**
* Method that requests blur to be applied on window root view. It is applied only when other
* blurs are not applied.
@@ -119,10 +111,10 @@ constructor(
// We need to check either of these because they are two different sources of truth,
// primaryBouncerShowing changes early to true/false, but blur is
// coordinated by transition value.
- if (keyguardInteractor.primaryBouncerShowing.value || isBouncerTransitionInProgress.value) {
+ if (isBouncerTransitionInProgress()) {
return false
}
- if (communalInteractor.isCommunalBlurring.value) {
+ if (isGlanceableHubActive()) {
return false
}
Log.d(TAG, "requestingBlurForShade for $blurRadius $opaque")
@@ -131,6 +123,14 @@ constructor(
return true
}
+ private fun isGlanceableHubActive() = communalInteractor.isCommunalBlurring.value
+
+ private fun isBouncerTransitionInProgress() =
+ keyguardInteractor.primaryBouncerShowing.value || isBouncerTransitionInProgress.value
+
+ private fun Flow<Boolean>.or(anotherFlow: Flow<Boolean>): Flow<Boolean> =
+ this.combine(anotherFlow) { a, b -> a || b }
+
companion object {
const val TAG = "WindowRootViewBlurInteractor"
}
diff --git a/packages/SystemUI/src/com/android/systemui/window/ui/WindowRootViewBinder.kt b/packages/SystemUI/src/com/android/systemui/window/ui/WindowRootViewBinder.kt
index e09a74cd0ad3..153df7f29737 100644
--- a/packages/SystemUI/src/com/android/systemui/window/ui/WindowRootViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/window/ui/WindowRootViewBinder.kt
@@ -19,6 +19,8 @@ package com.android.systemui.window.ui
import android.util.Log
import android.view.Choreographer
import android.view.Choreographer.FrameCallback
+import com.android.app.tracing.coroutines.TrackTracer
+import com.android.app.tracing.coroutines.launchTraced
import com.android.systemui.Flags
import com.android.systemui.lifecycle.WindowLifecycleState
import com.android.systemui.lifecycle.repeatWhenAttached
@@ -28,8 +30,8 @@ import com.android.systemui.statusbar.BlurUtils
import com.android.systemui.window.ui.viewmodel.WindowRootViewModel
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.awaitCancellation
+import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.filter
-import kotlinx.coroutines.launch
/**
* View binder that wires up window level UI transformations like blur to the [WindowRootView]
@@ -50,7 +52,6 @@ object WindowRootViewBinder {
view.repeatWhenAttached(mainDispatcher) {
Log.d(TAG, "Binding root view")
- var frameCallbackPendingExecution: FrameCallback? = null
view.viewModel(
minWindowLifecycleState = WindowLifecycleState.ATTACHED,
factory = { viewModelFactory.create() },
@@ -58,24 +59,48 @@ object WindowRootViewBinder {
) { viewModel ->
try {
Log.d(TAG, "Launching coroutines that update window root view state")
- launch {
- viewModel.blurState
- .filter { it.radius >= 0 }
- .collect { blurState ->
- val newFrameCallback = FrameCallback {
- frameCallbackPendingExecution = null
- blurUtils.applyBlur(
- view.rootView?.viewRootImpl,
- blurState.radius,
- blurState.isOpaque,
- )
- viewModel.onBlurApplied(blurState.radius)
- }
- blurUtils.prepareBlur(view.rootView?.viewRootImpl, blurState.radius)
- if (frameCallbackPendingExecution != null) {
- choreographer.removeFrameCallback(frameCallbackPendingExecution)
+ launchTraced("WindowBlur") {
+ var wasUpdateScheduledForThisFrame = false
+ var lastScheduledBlurRadius = 0
+ var lastScheduleBlurOpaqueness = false
+
+ // Creating the callback once and not for every coroutine invocation
+ val newFrameCallback = FrameCallback {
+ wasUpdateScheduledForThisFrame = false
+ val blurRadiusToApply = lastScheduledBlurRadius
+ blurUtils.applyBlur(
+ view.rootView?.viewRootImpl,
+ blurRadiusToApply,
+ lastScheduleBlurOpaqueness,
+ )
+ TrackTracer.instantForGroup(
+ "windowBlur",
+ "appliedBlurRadius",
+ blurRadiusToApply,
+ )
+ viewModel.onBlurApplied(blurRadiusToApply)
+ }
+
+ combine(viewModel.blurRadius, viewModel.isBlurOpaque, ::Pair)
+ .filter { it.first >= 0 }
+ .collect { (blurRadius, isOpaque) ->
+ // Expectation is that we schedule only one blur radius value
+ // per frame
+ if (wasUpdateScheduledForThisFrame) {
+ return@collect
}
- frameCallbackPendingExecution = newFrameCallback
+ TrackTracer.instantForGroup(
+ "windowBlur",
+ "preparedBlurRadius",
+ blurRadius,
+ )
+ lastScheduledBlurRadius = blurRadius.toInt()
+ lastScheduleBlurOpaqueness = isOpaque
+ wasUpdateScheduledForThisFrame = true
+ blurUtils.prepareBlur(
+ view.rootView?.viewRootImpl,
+ lastScheduledBlurRadius,
+ )
choreographer.postFrameCallback(newFrameCallback)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/window/ui/viewmodel/WindowRootViewModel.kt b/packages/SystemUI/src/com/android/systemui/window/ui/viewmodel/WindowRootViewModel.kt
index 72cca75df92c..b18c39dcf5e0 100644
--- a/packages/SystemUI/src/com/android/systemui/window/ui/viewmodel/WindowRootViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/window/ui/viewmodel/WindowRootViewModel.kt
@@ -19,7 +19,7 @@ package com.android.systemui.window.ui.viewmodel
import android.os.Build
import android.util.Log
import com.android.app.tracing.coroutines.launchTraced
-import com.android.systemui.Flags.glanceableHubBlurredBackground
+import com.android.systemui.Flags
import com.android.systemui.keyguard.ui.transitions.GlanceableHubTransition
import com.android.systemui.keyguard.ui.transitions.PrimaryBouncerTransition
import com.android.systemui.lifecycle.ExclusiveActivatable
@@ -29,9 +29,9 @@ import dagger.assisted.AssistedInject
import kotlinx.coroutines.awaitCancellation
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.coroutineScope
-import kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.flow.asStateFlow
-import kotlinx.coroutines.flow.combine
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.onEach
@@ -41,14 +41,33 @@ typealias BlurAppliedUiEvent = Int
class WindowRootViewModel
@AssistedInject
constructor(
- private val primaryBouncerTransitions: Set<@JvmSuppressWildcards PrimaryBouncerTransition>,
- private val glanceableHubTransitions: Set<@JvmSuppressWildcards GlanceableHubTransition>,
+ primaryBouncerTransitions: Set<@JvmSuppressWildcards PrimaryBouncerTransition>,
+ glanceableHubTransitions: Set<@JvmSuppressWildcards GlanceableHubTransition>,
private val blurInteractor: WindowRootViewBlurInteractor,
) : ExclusiveActivatable() {
private val blurEvents = Channel<BlurAppliedUiEvent>(Channel.BUFFERED)
- private val _blurState = MutableStateFlow(BlurState(0, false))
- val blurState = _blurState.asStateFlow()
+
+ private val bouncerBlurRadiusFlows =
+ if (Flags.bouncerUiRevamp())
+ primaryBouncerTransitions.map { it.windowBlurRadius.logIfPossible(it.javaClass.name) }
+ else emptyList()
+
+ private val glanceableHubBlurRadiusFlows =
+ if (Flags.glanceableHubBlurredBackground())
+ glanceableHubTransitions.map { it.windowBlurRadius.logIfPossible(it.javaClass.name) }
+ else emptyList()
+
+ val blurRadius: Flow<Float> =
+ listOf(
+ *bouncerBlurRadiusFlows.toTypedArray(),
+ *glanceableHubBlurRadiusFlows.toTypedArray(),
+ blurInteractor.blurRadius.map { it.toFloat() }.logIfPossible("ShadeBlur"),
+ )
+ .merge()
+
+ val isBlurOpaque =
+ blurInteractor.isBlurOpaque.distinctUntilChanged().logIfPossible("isBlurOpaque")
override suspend fun onActivated(): Nothing {
coroutineScope {
@@ -60,49 +79,6 @@ constructor(
blurInteractor.onBlurApplied(event)
}
}
-
- launchTraced("WindowRootViewModel#blurState") {
- combine(blurInteractor.blurRadius, blurInteractor.isBlurOpaque, ::BlurState)
- .collect { _blurState.value = it }
- }
-
- launchTraced("WindowRootViewModel#bouncerTransitions") {
- primaryBouncerTransitions
- .map { transition ->
- transition.windowBlurRadius.onEach { blurRadius ->
- if (isLoggable) {
- Log.d(
- TAG,
- "${transition.javaClass.simpleName} windowBlurRadius $blurRadius",
- )
- }
- }
- }
- .merge()
- .collect { blurRadius ->
- blurInteractor.requestBlurForBouncer(blurRadius.toInt())
- }
- }
-
- if (glanceableHubBlurredBackground()) {
- launchTraced("WindowRootViewModel#glanceableHubTransitions") {
- glanceableHubTransitions
- .map { transition ->
- transition.windowBlurRadius.onEach { blurRadius ->
- if (isLoggable) {
- Log.d(
- TAG,
- "${transition.javaClass.simpleName} windowBlurRadius $blurRadius",
- )
- }
- }
- }
- .merge()
- .collect { blurRadius ->
- blurInteractor.requestBlurForGlanceableHub(blurRadius.toInt())
- }
- }
- }
}
awaitCancellation()
}
@@ -118,7 +94,11 @@ constructor(
private companion object {
const val TAG = "WindowRootViewModel"
- val isLoggable = Log.isLoggable(TAG, Log.DEBUG) || Build.isDebuggable()
+ val isLoggable = Log.isLoggable(TAG, Log.VERBOSE) || Build.isDebuggable()
+
+ fun <T> Flow<T>.logIfPossible(loggingInfo: String): Flow<T> {
+ return onEach { if (isLoggable) Log.v(TAG, "$loggingInfo $it") }
+ }
}
}
diff --git a/packages/SystemUI/tests/goldens/brightnessSlider_iconAlphaChanges.json b/packages/SystemUI/tests/goldens/brightnessSlider_iconAlphaChanges.json
new file mode 100644
index 000000000000..cefada71686c
--- /dev/null
+++ b/packages/SystemUI/tests/goldens/brightnessSlider_iconAlphaChanges.json
@@ -0,0 +1,168 @@
+{
+ "frame_ids": [
+ "before",
+ 0,
+ 16,
+ 32,
+ 48,
+ 64,
+ 80,
+ 96,
+ 112,
+ 128,
+ 144,
+ 160,
+ 176,
+ 192,
+ 208,
+ 224,
+ 240,
+ 256,
+ 272,
+ 288,
+ 304,
+ 320,
+ 336,
+ 352,
+ 368,
+ 384,
+ 400,
+ 416,
+ 432,
+ 448,
+ 464,
+ 480,
+ 496,
+ 512,
+ 528,
+ 544,
+ 560,
+ 576,
+ 592,
+ 608,
+ 624,
+ 640,
+ 656,
+ 672,
+ 688,
+ 704,
+ 720,
+ 736,
+ 752,
+ "after"
+ ],
+ "features": [
+ {
+ "name": "activeIconAlpha_activeIconAlpha",
+ "type": "float",
+ "data_points": [
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 0.5782508,
+ 0.09543866,
+ 8.595586E-4,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ]
+ },
+ {
+ "name": "inactiveIconAlpha_inactiveIconAlpha",
+ "type": "float",
+ "data_points": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0.065971695,
+ 0.3946195,
+ 0.7348632,
+ 0.8979182,
+ 0.97246534,
+ 0.9986459,
+ 1
+ ]
+ }
+ ]
+}
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt b/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt
index bac2c47f51c7..f822ee97807e 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt
@@ -95,7 +95,6 @@ import org.mockito.kotlin.clearInvocations
@RunWith(AndroidJUnit4::class)
@SmallTest
-@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)
class ClockEventControllerTest : SysuiTestCase() {
private val kosmos = testKosmos()
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
index 312d2ffd74e4..e2cfbc6f764c 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
@@ -18,7 +18,6 @@ package com.android.keyguard;
import static android.app.StatusBarManager.SESSION_KEYGUARD;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
-import static android.hardware.biometrics.BiometricAuthenticator.TYPE_ANY_BIOMETRIC;
import static android.hardware.biometrics.BiometricAuthenticator.TYPE_FACE;
import static android.hardware.biometrics.BiometricAuthenticator.TYPE_FINGERPRINT;
import static android.hardware.biometrics.BiometricFaceConstants.FACE_ERROR_LOCKOUT_PERMANENT;
@@ -150,6 +149,7 @@ import com.android.systemui.deviceentry.shared.model.FaceDetectionStatus;
import com.android.systemui.deviceentry.shared.model.FailedFaceAuthenticationStatus;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.flags.SceneContainerFlagParameterizationKt;
+import com.android.systemui.keyguard.domain.interactor.KeyguardServiceShowLockscreenInteractor;
import com.android.systemui.kosmos.KosmosJavaAdapter;
import com.android.systemui.log.SessionTracker;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
@@ -219,6 +219,9 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
TEST_CARRIER, TEST_CARRIER, NAME_SOURCE_CARRIER_ID, 0xFFFFFF, "",
DATA_ROAMING_DISABLE, null, null, null, null, false, null, "", false, TEST_GROUP_UUID,
TEST_CARRIER_ID, PROFILE_CLASS_PROVISIONING);
+ private static final SubscriptionInfo TEST_REMOTE_SIM =
+ new SubscriptionInfo.Builder(TEST_SUBSCRIPTION)
+ .setType(SubscriptionManager.SUBSCRIPTION_TYPE_REMOTE_SIM).build();
private static final int FINGERPRINT_SENSOR_ID = 1;
private KosmosJavaAdapter mKosmos;
@Mock
@@ -308,6 +311,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
private SceneInteractor mSceneInteractor;
@Mock
private CommunalSceneInteractor mCommunalSceneInteractor;
+ @Mock
+ private KeyguardServiceShowLockscreenInteractor mKeyguardServiceShowLockscreenInteractor;
@Captor
private ArgumentCaptor<FaceAuthenticationListener> mFaceAuthenticationListener;
@@ -1376,6 +1381,26 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
}
@Test
+ public void testActiveSubscriptionList_filtersRemoteSim() {
+ List<SubscriptionInfo> list = new ArrayList<>();
+ list.add(TEST_REMOTE_SIM);
+ when(mSubscriptionManager.getCompleteActiveSubscriptionInfoList()).thenReturn(list);
+ mKeyguardUpdateMonitor.mSubscriptionListener.onSubscriptionsChanged();
+
+ assertThat(mKeyguardUpdateMonitor.getSubscriptionInfo(true)).isEmpty();
+
+ SubscriptionInfo.Builder b = new SubscriptionInfo.Builder(TEST_REMOTE_SIM);
+ b.setType(SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM);
+ SubscriptionInfo validInfo = b.build();
+
+ list.clear();
+ list.add(validInfo);
+ mKeyguardUpdateMonitor.mSubscriptionListener.onSubscriptionsChanged();
+
+ assertThat(mKeyguardUpdateMonitor.getSubscriptionInfo(true)).hasSize(1);
+ }
+
+ @Test
public void testActiveSubscriptionList_filtersProvisioningNetworks_untilValid() {
List<SubscriptionInfo> list = new ArrayList<>();
list.add(TEST_SUBSCRIPTION_PROVISIONING);
@@ -2717,7 +2742,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
() -> mAlternateBouncerInteractor,
() -> mJavaAdapter,
() -> mSceneInteractor,
- mCommunalSceneInteractor);
+ () -> mCommunalSceneInteractor,
+ mKeyguardServiceShowLockscreenInteractor);
setAlternateBouncerVisibility(false);
setPrimaryBouncerVisibility(false);
setStrongAuthTracker(KeyguardUpdateMonitorTest.this.mStrongAuthTracker);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationAnimationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationAnimationControllerTest.java
index ad5f96044c4c..a0f5b2214f80 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationAnimationControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationAnimationControllerTest.java
@@ -242,8 +242,8 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
mWindowMagnificationAnimationController.enableWindowMagnification(targetScale,
targetCenterX, targetCenterY, mAnimationCallback2);
mCurrentScale.set(mController.getScale());
- mCurrentCenterX.set(mController.getCenterX());
- mCurrentCenterY.set(mController.getCenterY());
+ mCurrentCenterX.set(mController.getMagnificationFrameCenterX());
+ mCurrentCenterY.set(mController.getMagnificationFrameCenterY());
advanceTimeBy(mWaitAnimationDuration);
});
@@ -297,8 +297,8 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
mWindowMagnificationAnimationController.enableWindowMagnification(targetScale,
targetCenterX, targetCenterY, mAnimationCallback);
mCurrentScale.set(mController.getScale());
- mCurrentCenterX.set(mController.getCenterX());
- mCurrentCenterY.set(mController.getCenterY());
+ mCurrentCenterX.set(mController.getMagnificationFrameCenterX());
+ mCurrentCenterY.set(mController.getMagnificationFrameCenterY());
advanceTimeBy(mWaitAnimationDuration);
});
@@ -339,8 +339,8 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
mWindowMagnificationAnimationController.enableWindowMagnification(targetScale,
targetCenterX, targetCenterY, mAnimationCallback);
mCurrentScale.set(mController.getScale());
- mCurrentCenterX.set(mController.getCenterX());
- mCurrentCenterY.set(mController.getCenterY());
+ mCurrentCenterX.set(mController.getMagnificationFrameCenterX());
+ mCurrentCenterY.set(mController.getMagnificationFrameCenterY());
advanceTimeBy(mWaitAnimationDuration);
});
@@ -375,8 +375,8 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
mWindowMagnificationAnimationController.enableWindowMagnification(targetScale,
targetCenterX, targetCenterY, mAnimationCallback);
mCurrentScale.set(mController.getScale());
- mCurrentCenterX.set(mController.getCenterX());
- mCurrentCenterY.set(mController.getCenterY());
+ mCurrentCenterX.set(mController.getMagnificationFrameCenterX());
+ mCurrentCenterY.set(mController.getMagnificationFrameCenterY());
advanceTimeBy(mWaitAnimationDuration);
});
@@ -463,8 +463,8 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
mWindowMagnificationAnimationController.enableWindowMagnification(targetScale,
targetCenterX, targetCenterY, mAnimationCallback2);
mCurrentScale.set(mController.getScale());
- mCurrentCenterX.set(mController.getCenterX());
- mCurrentCenterY.set(mController.getCenterY());
+ mCurrentCenterX.set(mController.getMagnificationFrameCenterX());
+ mCurrentCenterY.set(mController.getMagnificationFrameCenterY());
});
// Current spec shouldn't match given spec.
@@ -548,8 +548,8 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
mWindowMagnificationAnimationController.enableWindowMagnification(targetScale,
targetCenterX, targetCenterY, mAnimationCallback2);
mCurrentScale.set(mController.getScale());
- mCurrentCenterX.set(mController.getCenterX());
- mCurrentCenterY.set(mController.getCenterY());
+ mCurrentCenterX.set(mController.getMagnificationFrameCenterX());
+ mCurrentCenterY.set(mController.getMagnificationFrameCenterY());
advanceTimeBy(mWaitAnimationDuration);
});
@@ -777,8 +777,8 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
mWindowMagnificationAnimationController.deleteWindowMagnification(
mAnimationCallback2);
mCurrentScale.set(mController.getScale());
- mCurrentCenterX.set(mController.getCenterX());
- mCurrentCenterY.set(mController.getCenterY());
+ mCurrentCenterX.set(mController.getMagnificationFrameCenterX());
+ mCurrentCenterY.set(mController.getMagnificationFrameCenterY());
// ValueAnimator.reverse() could not work correctly with the AnimatorTestRule since it
// is using SystemClock in reverse() (b/305731398). Therefore, we call end() on the
// animator directly to verify the result of animation is correct instead of querying
@@ -940,8 +940,8 @@ public class WindowMagnificationAnimationControllerTest extends SysuiTestCase {
private void verifyFinalSpec(float expectedScale, float expectedCenterX,
float expectedCenterY) {
assertEquals(expectedScale, mController.getScale(), 0f);
- assertEquals(expectedCenterX, mController.getCenterX(), 0f);
- assertEquals(expectedCenterY, mController.getCenterY(), 0f);
+ assertEquals(expectedCenterX, mController.getMagnificationFrameCenterX(), 0f);
+ assertEquals(expectedCenterY, mController.getMagnificationFrameCenterY(), 0f);
}
private void enableWindowMagnificationWithoutAnimation() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java
index 8552e48a2024..7cf93277bb5b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java
@@ -63,6 +63,8 @@ import android.graphics.Rect;
import android.os.Handler;
import android.os.RemoteException;
import android.os.SystemClock;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
import android.provider.Settings;
import android.testing.TestableLooper;
import android.testing.TestableResources;
@@ -88,6 +90,7 @@ import androidx.test.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.LargeTest;
+import com.android.systemui.Flags;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.animation.AnimatorTestRule;
import com.android.systemui.kosmos.KosmosJavaAdapter;
@@ -128,6 +131,7 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
public final AnimatorTestRule mAnimatorTestRule = new AnimatorTestRule(/* test= */ null);
private static final int LAYOUT_CHANGE_TIMEOUT_MS = 5000;
+ private static final int INSET_BOTTOM = 10;
@Mock
private MirrorWindowControl mMirrorWindowControl;
@Mock
@@ -329,9 +333,9 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
final ArgumentCaptor<Rect> sourceBoundsCaptor = ArgumentCaptor.forClass(Rect.class);
verify(mWindowMagnifierCallback, atLeast(2)).onSourceBoundsChanged(
(eq(mContext.getDisplayId())), sourceBoundsCaptor.capture());
- assertThat(mWindowMagnificationController.getCenterX())
+ assertThat(mWindowMagnificationController.getMagnificationFrameCenterX())
.isEqualTo(sourceBoundsCaptor.getValue().exactCenterX());
- assertThat(mWindowMagnificationController.getCenterY())
+ assertThat(mWindowMagnificationController.getMagnificationFrameCenterY())
.isEqualTo(sourceBoundsCaptor.getValue().exactCenterY());
}
@@ -382,6 +386,7 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
}
@Test
+ @DisableFlags(Flags.FLAG_UPDATE_WINDOW_MAGNIFIER_BOTTOM_BOUNDARY)
public void deleteWindowMagnification_enableAtTheBottom_overlapFlagIsFalse() {
final WindowManager wm = mContext.getSystemService(WindowManager.class);
final Rect bounds = wm.getCurrentWindowMetrics().getBounds();
@@ -457,12 +462,14 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
verify(mAnimationCallback, never()).onResult(eq(false));
verify(mWindowMagnifierCallback, timeout(LAYOUT_CHANGE_TIMEOUT_MS))
.onSourceBoundsChanged((eq(mContext.getDisplayId())), sourceBoundsCaptor.capture());
- assertThat(mWindowMagnificationController.getCenterX())
+ assertThat(mWindowMagnificationController.getMagnificationFrameCenterX())
.isEqualTo(sourceBoundsCaptor.getValue().exactCenterX());
- assertThat(mWindowMagnificationController.getCenterY())
+ assertThat(mWindowMagnificationController.getMagnificationFrameCenterY())
.isEqualTo(sourceBoundsCaptor.getValue().exactCenterY());
- assertThat(mWindowMagnificationController.getCenterX()).isEqualTo(targetCenterX);
- assertThat(mWindowMagnificationController.getCenterY()).isEqualTo(targetCenterY);
+ assertThat(mWindowMagnificationController.getMagnificationFrameCenterX())
+ .isEqualTo(targetCenterX);
+ assertThat(mWindowMagnificationController.getMagnificationFrameCenterY())
+ .isEqualTo(targetCenterY);
}
@Test
@@ -498,12 +505,14 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
verify(mAnimationCallback, times(3)).onResult(eq(false));
verify(mWindowMagnifierCallback, timeout(LAYOUT_CHANGE_TIMEOUT_MS))
.onSourceBoundsChanged((eq(mContext.getDisplayId())), sourceBoundsCaptor.capture());
- assertThat(mWindowMagnificationController.getCenterX())
+ assertThat(mWindowMagnificationController.getMagnificationFrameCenterX())
.isEqualTo(sourceBoundsCaptor.getValue().exactCenterX());
- assertThat(mWindowMagnificationController.getCenterY())
+ assertThat(mWindowMagnificationController.getMagnificationFrameCenterY())
.isEqualTo(sourceBoundsCaptor.getValue().exactCenterY());
- assertThat(mWindowMagnificationController.getCenterX()).isEqualTo(centerX + 40);
- assertThat(mWindowMagnificationController.getCenterY()).isEqualTo(centerY + 40);
+ assertThat(mWindowMagnificationController.getMagnificationFrameCenterX())
+ .isEqualTo(centerX + 40);
+ assertThat(mWindowMagnificationController.getMagnificationFrameCenterY())
+ .isEqualTo(centerY + 40);
}
@Test
@@ -545,8 +554,8 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
mWindowMagnificationController.updateWindowMagnificationInternal(Float.NaN,
magnifiedCenter.x, magnifiedCenter.y);
// Get the center again in case the center we set is out of screen.
- magnifiedCenter.set(mWindowMagnificationController.getCenterX(),
- mWindowMagnificationController.getCenterY());
+ magnifiedCenter.set(mWindowMagnificationController.getMagnificationFrameCenterX(),
+ mWindowMagnificationController.getMagnificationFrameCenterY());
});
// Rotate the window clockwise 90 degree.
windowBounds.set(windowBounds.top, windowBounds.left, windowBounds.bottom,
@@ -559,8 +568,9 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
assertThat(mWindowMagnificationController.mRotation).isEqualTo(newRotation);
final PointF expectedCenter = new PointF(magnifiedCenter.y,
displayWidth - magnifiedCenter.x);
- final PointF actualCenter = new PointF(mWindowMagnificationController.getCenterX(),
- mWindowMagnificationController.getCenterY());
+ final PointF actualCenter =
+ new PointF(mWindowMagnificationController.getMagnificationFrameCenterX(),
+ mWindowMagnificationController.getMagnificationFrameCenterY());
assertThat(actualCenter).isEqualTo(expectedCenter);
}
@@ -603,10 +613,10 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
});
// The ratio of center to window size should be the same.
- assertThat(mWindowMagnificationController.getCenterX() / testWindowBounds.width())
- .isEqualTo(expectedRatio);
- assertThat(mWindowMagnificationController.getCenterY() / testWindowBounds.height())
- .isEqualTo(expectedRatio);
+ assertThat(mWindowMagnificationController.getMagnificationFrameCenterX()
+ / testWindowBounds.width()).isEqualTo(expectedRatio);
+ assertThat(mWindowMagnificationController.getMagnificationFrameCenterY()
+ / testWindowBounds.height()).isEqualTo(expectedRatio);
}
@Test
@@ -1175,6 +1185,7 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
}
@Test
+ @DisableFlags(Flags.FLAG_UPDATE_WINDOW_MAGNIFIER_BOTTOM_BOUNDARY)
public void moveWindowMagnificationToTheBottom_enabledWithGestureInset_overlapFlagIsTrue() {
final Rect bounds = mWindowManager.getCurrentWindowMetrics().getBounds();
setSystemGestureInsets();
@@ -1191,6 +1202,30 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
}
@Test
+ @EnableFlags(Flags.FLAG_UPDATE_WINDOW_MAGNIFIER_BOTTOM_BOUNDARY)
+ public void moveWindowMagnificationToTheBottom_stopsAtSystemGestureTop() {
+ final Rect bounds = mWindowManager.getCurrentWindowMetrics().getBounds();
+ setSystemGestureInsets();
+ mInstrumentation.runOnMainSync(() -> {
+ mWindowMagnificationController.updateWindowMagnificationInternal(Float.NaN, Float.NaN,
+ Float.NaN);
+ });
+
+ ViewGroup.LayoutParams params = mSurfaceControlViewHost.getView().getLayoutParams();
+ final int mOuterBorderSize = mResources.getDimensionPixelSize(
+ R.dimen.magnification_outer_border_margin);
+
+ final float expectedY =
+ (float) (bounds.bottom - INSET_BOTTOM - params.height + mOuterBorderSize);
+
+ mInstrumentation.runOnMainSync(() -> {
+ mWindowMagnificationController.moveWindowMagnifier(0, bounds.height());
+ });
+
+ assertThat(mWindowMagnificationController.getMagnifierWindowY()).isEqualTo(expectedY);
+ }
+
+ @Test
public void moveWindowMagnificationToRightEdge_dragHandleMovesToLeftAndUpdatesTapExcludeRegion()
throws RemoteException {
final Rect bounds = mWindowManager.getCurrentWindowMetrics().getBounds();
@@ -1445,8 +1480,10 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
mInstrumentation.runOnMainSync(() -> {
mWindowMagnificationController.setWindowSizeAndCenter(minimumWindowSize,
minimumWindowSize, bounds.right, bounds.bottom);
- magnificationCenterX.set((int) mWindowMagnificationController.getCenterX());
- magnificationCenterY.set((int) mWindowMagnificationController.getCenterY());
+ magnificationCenterX.set(
+ (int) mWindowMagnificationController.getMagnificationFrameCenterX());
+ magnificationCenterY.set(
+ (int) mWindowMagnificationController.getMagnificationFrameCenterY());
});
assertThat(magnificationCenterX.get()).isLessThan(bounds.right);
@@ -1501,7 +1538,7 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
private void setSystemGestureInsets() {
final WindowInsets testInsets = new WindowInsets.Builder()
- .setInsets(systemGestures(), Insets.of(0, 0, 0, 10))
+ .setInsets(systemGestures(), Insets.of(0, 0, 0, INSET_BOTTOM))
.build();
mWindowManager.setWindowInsets(testInsets);
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/data/repository/AccessibilityQsShortcutsRepositoryImplForDeviceTest.kt b/packages/SystemUI/tests/src/com/android/systemui/accessibility/data/repository/AccessibilityQsShortcutsRepositoryImplForDeviceTest.kt
index 4e0ebae6a902..c6ede0c8c602 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/data/repository/AccessibilityQsShortcutsRepositoryImplForDeviceTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/data/repository/AccessibilityQsShortcutsRepositoryImplForDeviceTest.kt
@@ -36,7 +36,6 @@ import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.settings.FakeSettings
import com.android.systemui.utils.FieldSetter
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -55,7 +54,6 @@ import org.mockito.junit.MockitoRule
* can't mock the AccessibilityShortcutInfo for test. MultiValentTest doesn't compile when using
* newly introduced methods and constants.
*/
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class AccessibilityQsShortcutsRepositoryImplForDeviceTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/ActivityTransitionAnimatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/ActivityTransitionAnimatorTest.kt
index fd751d9cc7c3..845be0252581 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/animation/ActivityTransitionAnimatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/animation/ActivityTransitionAnimatorTest.kt
@@ -27,7 +27,10 @@ import android.window.WindowAnimationState
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
+import com.android.systemui.kosmos.runTest
+import com.android.systemui.kosmos.testScope
import com.android.systemui.shared.Flags
+import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.any
import com.android.wm.shell.shared.ShellTransitions
import com.google.common.truth.Truth.assertThat
@@ -38,6 +41,9 @@ import junit.framework.Assert.assertTrue
import junit.framework.AssertionFailedError
import kotlin.concurrent.thread
import kotlin.test.assertEquals
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.advanceUntilIdle
+import kotlinx.coroutines.test.runTest
import org.junit.After
import org.junit.Assert.assertThrows
import org.junit.Before
@@ -54,10 +60,12 @@ import org.mockito.Mockito.`when`
import org.mockito.Spy
import org.mockito.junit.MockitoJUnit
+@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@RunWithLooper
class ActivityTransitionAnimatorTest : SysuiTestCase() {
+ private val kosmos = testKosmos()
private val transitionContainer = LinearLayout(mContext)
private val mainExecutor = context.mainExecutor
private val testTransitionAnimator = fakeTransitionAnimator(mainExecutor)
@@ -67,12 +75,12 @@ class ActivityTransitionAnimatorTest : SysuiTestCase() {
@Spy private val controller = TestTransitionAnimatorController(transitionContainer)
@Mock lateinit var iCallback: IRemoteAnimationFinishedCallback
- private lateinit var activityTransitionAnimator: ActivityTransitionAnimator
+ private lateinit var underTest: ActivityTransitionAnimator
@get:Rule val rule = MockitoJUnit.rule()
@Before
fun setup() {
- activityTransitionAnimator =
+ underTest =
ActivityTransitionAnimator(
mainExecutor,
ActivityTransitionAnimator.TransitionRegister.fromShellTransitions(
@@ -82,17 +90,17 @@ class ActivityTransitionAnimatorTest : SysuiTestCase() {
testTransitionAnimator,
disableWmTimeout = true,
)
- activityTransitionAnimator.callback = callback
- activityTransitionAnimator.addListener(listener)
+ underTest.callback = callback
+ underTest.addListener(listener)
}
@After
fun tearDown() {
- activityTransitionAnimator.removeListener(listener)
+ underTest.removeListener(listener)
}
private fun startIntentWithAnimation(
- animator: ActivityTransitionAnimator = this.activityTransitionAnimator,
+ animator: ActivityTransitionAnimator = underTest,
controller: ActivityTransitionAnimator.Controller? = this.controller,
animate: Boolean = true,
intentStarter: (RemoteAnimationAdapter?) -> Int,
@@ -157,7 +165,7 @@ class ActivityTransitionAnimatorTest : SysuiTestCase() {
val willAnimateCaptor = ArgumentCaptor.forClass(Boolean::class.java)
var animationAdapter: RemoteAnimationAdapter? = null
- startIntentWithAnimation(activityTransitionAnimator) { adapter ->
+ startIntentWithAnimation(underTest) { adapter ->
animationAdapter = adapter
ActivityManager.START_DELIVERED_TO_TOP
}
@@ -185,9 +193,7 @@ class ActivityTransitionAnimatorTest : SysuiTestCase() {
fun registersReturnIffCookieIsPresent() {
`when`(callback.isOnKeyguard()).thenReturn(false)
- startIntentWithAnimation(activityTransitionAnimator, controller) { _ ->
- ActivityManager.START_DELIVERED_TO_TOP
- }
+ startIntentWithAnimation(underTest, controller) { ActivityManager.START_DELIVERED_TO_TOP }
waitForIdleSync()
assertTrue(testShellTransitions.remotes.isEmpty())
@@ -199,9 +205,7 @@ class ActivityTransitionAnimatorTest : SysuiTestCase() {
get() = ActivityTransitionAnimator.TransitionCookie("testCookie")
}
- startIntentWithAnimation(activityTransitionAnimator, controller) { _ ->
- ActivityManager.START_DELIVERED_TO_TOP
- }
+ startIntentWithAnimation(underTest, controller) { ActivityManager.START_DELIVERED_TO_TOP }
waitForIdleSync()
assertEquals(1, testShellTransitions.remotes.size)
@@ -214,13 +218,15 @@ class ActivityTransitionAnimatorTest : SysuiTestCase() {
)
@Test
fun registersLongLivedTransition() {
- var factory = controllerFactory()
- activityTransitionAnimator.register(factory.cookie, factory)
- assertEquals(2, testShellTransitions.remotes.size)
-
- factory = controllerFactory()
- activityTransitionAnimator.register(factory.cookie, factory)
- assertEquals(4, testShellTransitions.remotes.size)
+ kosmos.runTest {
+ var factory = controllerFactory()
+ underTest.register(factory.cookie, factory, testScope)
+ assertEquals(2, testShellTransitions.remotes.size)
+
+ factory = controllerFactory()
+ underTest.register(factory.cookie, factory, testScope)
+ assertEquals(4, testShellTransitions.remotes.size)
+ }
}
@EnableFlags(
@@ -229,49 +235,55 @@ class ActivityTransitionAnimatorTest : SysuiTestCase() {
)
@Test
fun registersLongLivedTransitionOverridingPreviousRegistration() {
- val cookie = ActivityTransitionAnimator.TransitionCookie("test_cookie")
- var factory = controllerFactory(cookie)
- activityTransitionAnimator.register(cookie, factory)
- val transitions = testShellTransitions.remotes.values.toList()
-
- factory = controllerFactory(cookie)
- activityTransitionAnimator.register(cookie, factory)
- assertEquals(2, testShellTransitions.remotes.size)
- for (transition in transitions) {
- assertThat(testShellTransitions.remotes.values).doesNotContain(transition)
+ kosmos.runTest {
+ val cookie = ActivityTransitionAnimator.TransitionCookie("test_cookie")
+ var factory = controllerFactory(cookie)
+ underTest.register(cookie, factory, testScope)
+ val transitions = testShellTransitions.remotes.values.toList()
+
+ factory = controllerFactory(cookie)
+ underTest.register(cookie, factory, testScope)
+ assertEquals(2, testShellTransitions.remotes.size)
+ for (transition in transitions) {
+ assertThat(testShellTransitions.remotes.values).doesNotContain(transition)
+ }
}
}
@DisableFlags(Flags.FLAG_RETURN_ANIMATION_FRAMEWORK_LONG_LIVED)
@Test
fun doesNotRegisterLongLivedTransitionIfFlagIsDisabled() {
- val factory = controllerFactory(component = null)
- assertThrows(IllegalStateException::class.java) {
- activityTransitionAnimator.register(factory.cookie, factory)
+ kosmos.runTest {
+ val factory = controllerFactory(component = null)
+ assertThrows(IllegalStateException::class.java) {
+ underTest.register(factory.cookie, factory, testScope)
+ }
}
}
@EnableFlags(Flags.FLAG_RETURN_ANIMATION_FRAMEWORK_LONG_LIVED)
@Test
fun doesNotRegisterLongLivedTransitionIfMissingRequiredProperties() {
- // No ComponentName
- var factory = controllerFactory(component = null)
- assertThrows(IllegalStateException::class.java) {
- activityTransitionAnimator.register(factory.cookie, factory)
- }
+ kosmos.runTest {
+ // No ComponentName
+ var factory = controllerFactory(component = null)
+ assertThrows(IllegalStateException::class.java) {
+ underTest.register(factory.cookie, factory, testScope)
+ }
- // No TransitionRegister
- activityTransitionAnimator =
- ActivityTransitionAnimator(
- mainExecutor,
- transitionRegister = null,
- testTransitionAnimator,
- testTransitionAnimator,
- disableWmTimeout = true,
- )
- factory = controllerFactory()
- assertThrows(IllegalStateException::class.java) {
- activityTransitionAnimator.register(factory.cookie, factory)
+ // No TransitionRegister
+ val activityTransitionAnimator =
+ ActivityTransitionAnimator(
+ mainExecutor,
+ transitionRegister = null,
+ testTransitionAnimator,
+ testTransitionAnimator,
+ disableWmTimeout = true,
+ )
+ factory = controllerFactory()
+ assertThrows(IllegalStateException::class.java) {
+ activityTransitionAnimator.register(factory.cookie, factory, testScope)
+ }
}
}
@@ -281,27 +293,29 @@ class ActivityTransitionAnimatorTest : SysuiTestCase() {
)
@Test
fun unregistersLongLivedTransition() {
- val cookies = arrayOfNulls<ActivityTransitionAnimator.TransitionCookie>(3)
+ kosmos.runTest {
+ val cookies = arrayOfNulls<ActivityTransitionAnimator.TransitionCookie>(3)
- for (index in 0 until 3) {
- cookies[index] = mock(ActivityTransitionAnimator.TransitionCookie::class.java)
- val factory = controllerFactory(cookies[index]!!)
- activityTransitionAnimator.register(factory.cookie, factory)
- }
+ for (index in 0 until 3) {
+ cookies[index] = mock(ActivityTransitionAnimator.TransitionCookie::class.java)
+ val factory = controllerFactory(cookies[index]!!)
+ underTest.register(factory.cookie, factory, testScope)
+ }
- activityTransitionAnimator.unregister(cookies[0]!!)
- assertEquals(4, testShellTransitions.remotes.size)
+ underTest.unregister(cookies[0]!!)
+ assertEquals(4, testShellTransitions.remotes.size)
- activityTransitionAnimator.unregister(cookies[2]!!)
- assertEquals(2, testShellTransitions.remotes.size)
+ underTest.unregister(cookies[2]!!)
+ assertEquals(2, testShellTransitions.remotes.size)
- activityTransitionAnimator.unregister(cookies[1]!!)
- assertThat(testShellTransitions.remotes).isEmpty()
+ underTest.unregister(cookies[1]!!)
+ assertThat(testShellTransitions.remotes).isEmpty()
+ }
}
@Test
fun doesNotStartIfAnimationIsCancelled() {
- val runner = activityTransitionAnimator.createEphemeralRunner(controller)
+ val runner = underTest.createEphemeralRunner(controller)
runner.onAnimationCancelled()
runner.onAnimationStart(TRANSIT_NONE, emptyArray(), emptyArray(), emptyArray(), iCallback)
@@ -315,7 +329,7 @@ class ActivityTransitionAnimatorTest : SysuiTestCase() {
@Test
fun cancelsIfNoOpeningWindowIsFound() {
- val runner = activityTransitionAnimator.createEphemeralRunner(controller)
+ val runner = underTest.createEphemeralRunner(controller)
runner.onAnimationStart(TRANSIT_NONE, emptyArray(), emptyArray(), emptyArray(), iCallback)
waitForIdleSync()
@@ -328,7 +342,7 @@ class ActivityTransitionAnimatorTest : SysuiTestCase() {
@Test
fun startsAnimationIfWindowIsOpening() {
- val runner = activityTransitionAnimator.createEphemeralRunner(controller)
+ val runner = underTest.createEphemeralRunner(controller)
runner.onAnimationStart(
TRANSIT_NONE,
arrayOf(fakeWindow()),
@@ -354,9 +368,11 @@ class ActivityTransitionAnimatorTest : SysuiTestCase() {
)
@Test
fun creatingRunnerWithLazyInitializationThrows_whenTheFlagsAreDisabled() {
- assertThrows(IllegalStateException::class.java) {
- val factory = controllerFactory()
- activityTransitionAnimator.createLongLivedRunner(factory, forLaunch = true)
+ kosmos.runTest {
+ assertThrows(IllegalStateException::class.java) {
+ val factory = controllerFactory()
+ underTest.createLongLivedRunner(factory, testScope, forLaunch = true)
+ }
}
}
@@ -365,44 +381,34 @@ class ActivityTransitionAnimatorTest : SysuiTestCase() {
Flags.FLAG_RETURN_ANIMATION_FRAMEWORK_LONG_LIVED,
)
@Test
- fun runnerCreatesDelegateLazily_whenPostingTimeouts() {
- val factory = controllerFactory()
- val runner = activityTransitionAnimator.createLongLivedRunner(factory, forLaunch = true)
- assertNull(runner.delegate)
- runner.postTimeouts()
- assertNotNull(runner.delegate)
- }
-
- @EnableFlags(
- Flags.FLAG_RETURN_ANIMATION_FRAMEWORK_LIBRARY,
- Flags.FLAG_RETURN_ANIMATION_FRAMEWORK_LONG_LIVED,
- )
- @Test
fun runnerCreatesDelegateLazily_onAnimationStart() {
- val factory = controllerFactory()
- val runner = activityTransitionAnimator.createLongLivedRunner(factory, forLaunch = true)
- assertNull(runner.delegate)
-
- var delegateInitialized = false
- activityTransitionAnimator.addListener(
- object : ActivityTransitionAnimator.Listener {
- override fun onTransitionAnimationStart() {
- // This is called iff the delegate was initialized, so it's a good proxy for
- // checking the initialization.
- delegateInitialized = true
+ kosmos.runTest {
+ val factory = controllerFactory()
+ val runner = underTest.createLongLivedRunner(factory, testScope, forLaunch = true)
+ assertNull(runner.delegate)
+
+ var delegateInitialized = false
+ underTest.addListener(
+ object : ActivityTransitionAnimator.Listener {
+ override fun onTransitionAnimationStart() {
+ // This is called iff the delegate was initialized, so it's a good proxy for
+ // checking the initialization.
+ delegateInitialized = true
+ }
}
- }
- )
- runner.onAnimationStart(
- TRANSIT_NONE,
- arrayOf(fakeWindow()),
- emptyArray(),
- emptyArray(),
- iCallback,
- )
+ )
+ runner.onAnimationStart(
+ TRANSIT_NONE,
+ arrayOf(fakeWindow()),
+ emptyArray(),
+ emptyArray(),
+ iCallback,
+ )
+ testScope.advanceUntilIdle()
+ waitForIdleSync()
- waitForIdleSync()
- assertTrue(delegateInitialized)
+ assertTrue(delegateInitialized)
+ }
}
@EnableFlags(
@@ -411,29 +417,32 @@ class ActivityTransitionAnimatorTest : SysuiTestCase() {
)
@Test
fun runnerCreatesDelegateLazily_onAnimationTakeover() {
- val factory = controllerFactory()
- val runner = activityTransitionAnimator.createLongLivedRunner(factory, forLaunch = false)
- assertNull(runner.delegate)
-
- var delegateInitialized = false
- activityTransitionAnimator.addListener(
- object : ActivityTransitionAnimator.Listener {
- override fun onTransitionAnimationStart() {
- // This is called iff the delegate was initialized, so it's a good proxy for
- // checking the initialization.
- delegateInitialized = true
+ kosmos.runTest {
+ val factory = controllerFactory()
+ val runner = underTest.createLongLivedRunner(factory, testScope, forLaunch = false)
+ assertNull(runner.delegate)
+
+ var delegateInitialized = false
+ underTest.addListener(
+ object : ActivityTransitionAnimator.Listener {
+ override fun onTransitionAnimationStart() {
+ // This is called iff the delegate was initialized, so it's a good proxy for
+ // checking the initialization.
+ delegateInitialized = true
+ }
}
- }
- )
- runner.takeOverAnimation(
- arrayOf(fakeWindow(MODE_CLOSING)),
- arrayOf(WindowAnimationState()),
- SurfaceControl.Transaction(),
- iCallback,
- )
+ )
+ runner.takeOverAnimation(
+ arrayOf(fakeWindow(MODE_CLOSING)),
+ arrayOf(WindowAnimationState()),
+ SurfaceControl.Transaction(),
+ iCallback,
+ )
+ testScope.advanceUntilIdle()
+ waitForIdleSync()
- waitForIdleSync()
- assertTrue(delegateInitialized)
+ assertTrue(delegateInitialized)
+ }
}
@DisableFlags(
@@ -442,7 +451,7 @@ class ActivityTransitionAnimatorTest : SysuiTestCase() {
)
@Test
fun animationTakeoverThrows_whenTheFlagsAreDisabled() {
- val runner = activityTransitionAnimator.createEphemeralRunner(controller)
+ val runner = underTest.createEphemeralRunner(controller)
assertThrows(IllegalStateException::class.java) {
runner.takeOverAnimation(
arrayOf(fakeWindow()),
@@ -459,7 +468,7 @@ class ActivityTransitionAnimatorTest : SysuiTestCase() {
)
@Test
fun disposeRunner_delegateDereferenced() {
- val runner = activityTransitionAnimator.createEphemeralRunner(controller)
+ val runner = underTest.createEphemeralRunner(controller)
assertNotNull(runner.delegate)
runner.dispose()
waitForIdleSync()
@@ -469,13 +478,13 @@ class ActivityTransitionAnimatorTest : SysuiTestCase() {
@Test
fun concurrentListenerModification_doesNotThrow() {
// Need a second listener to trigger the concurrent modification.
- activityTransitionAnimator.addListener(object : ActivityTransitionAnimator.Listener {})
+ underTest.addListener(object : ActivityTransitionAnimator.Listener {})
`when`(listener.onTransitionAnimationStart()).thenAnswer {
- activityTransitionAnimator.removeListener(listener)
+ underTest.removeListener(listener)
listener
}
- val runner = activityTransitionAnimator.createEphemeralRunner(controller)
+ val runner = underTest.createEphemeralRunner(controller)
runner.onAnimationStart(
TRANSIT_NONE,
arrayOf(fakeWindow()),
@@ -494,7 +503,7 @@ class ActivityTransitionAnimatorTest : SysuiTestCase() {
component: ComponentName? = mock(ComponentName::class.java),
): ActivityTransitionAnimator.ControllerFactory {
return object : ActivityTransitionAnimator.ControllerFactory(cookie, component) {
- override fun createController(forLaunch: Boolean) =
+ override suspend fun createController(forLaunch: Boolean) =
object : DelegateTransitionAnimatorController(controller) {
override val isLaunching: Boolean
get() = forLaunch
diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/FontInterpolatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/FontInterpolatorTest.kt
index 97abba7a4bcb..2e634390679a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/animation/FontInterpolatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/animation/FontInterpolatorTest.kt
@@ -58,9 +58,12 @@ class FontInterpolatorTest : SysuiTestCase() {
Font.Builder(sFont).setFontVariationSettings("'wght' 900, 'ital' 1, 'GRAD' 700").build()
val interp = FontInterpolator()
- assertSameAxes(startFont, interp.lerp(startFont, endFont, 0f))
- assertSameAxes(endFont, interp.lerp(startFont, endFont, 1f))
- assertSameAxes("'wght' 500, 'ital' 0.5, 'GRAD' 450", interp.lerp(startFont, endFont, 0.5f))
+ assertSameAxes(startFont, interp.lerp(startFont, endFont, 0f, 0f))
+ assertSameAxes(endFont, interp.lerp(startFont, endFont, 1f, 1f))
+ assertSameAxes(
+ "'wght' 500, 'ital' 0.5, 'GRAD' 450",
+ interp.lerp(startFont, endFont, 0.5f, 0.5f),
+ )
}
@Test
@@ -69,7 +72,7 @@ class FontInterpolatorTest : SysuiTestCase() {
val endFont = Font.Builder(sFont).setFontVariationSettings("'ital' 1").build()
val interp = FontInterpolator()
- assertSameAxes("'wght' 250, 'ital' 0.5", interp.lerp(startFont, endFont, 0.5f))
+ assertSameAxes("'wght' 250, 'ital' 0.5", interp.lerp(startFont, endFont, 0.5f, 0.5f))
}
@Test
@@ -78,8 +81,8 @@ class FontInterpolatorTest : SysuiTestCase() {
val endFont = Font.Builder(sFont).setFontVariationSettings("'ital' 1").build()
val interp = FontInterpolator()
- val resultFont = interp.lerp(startFont, endFont, 0.5f)
- val cachedFont = interp.lerp(startFont, endFont, 0.5f)
+ val resultFont = interp.lerp(startFont, endFont, 0.5f, 0.5f)
+ val cachedFont = interp.lerp(startFont, endFont, 0.5f, 0.5f)
assertThat(resultFont).isSameInstanceAs(cachedFont)
}
@@ -89,8 +92,8 @@ class FontInterpolatorTest : SysuiTestCase() {
val endFont = Font.Builder(sFont).setFontVariationSettings("'ital' 1").build()
val interp = FontInterpolator()
- val resultFont = interp.lerp(startFont, endFont, 0.5f)
- val reversedFont = interp.lerp(endFont, startFont, 0.5f)
+ val resultFont = interp.lerp(startFont, endFont, 0.5f, 0.5f)
+ val reversedFont = interp.lerp(endFont, startFont, 0.5f, 0.5f)
assertThat(resultFont).isSameInstanceAs(reversedFont)
}
@@ -100,14 +103,14 @@ class FontInterpolatorTest : SysuiTestCase() {
val startFont = Font.Builder(sFont).setFontVariationSettings("'wght' 100").build()
val endFont = Font.Builder(sFont).setFontVariationSettings("'wght' 1").build()
- val resultFont = interp.lerp(startFont, endFont, 0.5f)
+ val resultFont = interp.lerp(startFont, endFont, 0.5f, 0.5f)
for (i in 0..(interp.fontCache as FontCacheImpl).cacheMaxEntries + 1) {
val f1 = Font.Builder(sFont).setFontVariationSettings("'wght' ${i * 100}").build()
val f2 = Font.Builder(sFont).setFontVariationSettings("'wght' $i").build()
- interp.lerp(f1, f2, 0.5f)
+ interp.lerp(f1, f2, 0.5f, 0.5f)
}
- val cachedFont = interp.lerp(startFont, endFont, 0.5f)
+ val cachedFont = interp.lerp(startFont, endFont, 0.5f, 0.5f)
assertThat(resultFont).isNotSameInstanceAs(cachedFont)
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerOverlayTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerOverlayTest.kt
index 4baca713e19f..5249620dbdd0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerOverlayTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerOverlayTest.kt
@@ -63,7 +63,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.user.domain.interactor.SelectedUserInteractor
import com.google.common.truth.Truth.assertThat
import dagger.Lazy
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -89,7 +88,6 @@ private const val DISPLAY_HEIGHT = 1920
private const val SENSOR_WIDTH = 30
private const val SENSOR_HEIGHT = 60
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
@RunWithLooper(setAsMainLooper = true)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingButtonViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingButtonViewModelTest.kt
index 655b2cc2dece..f3aaa3d3c7aa 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingButtonViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingButtonViewModelTest.kt
@@ -32,7 +32,6 @@ import com.android.systemui.res.R
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.runCurrent
@@ -43,7 +42,6 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingDeviceItemActionInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingDeviceItemActionInteractorTest.kt
index e61acc4e1d0b..9ae57153f3ef 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingDeviceItemActionInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/AudioSharingDeviceItemActionInteractorTest.kt
@@ -33,7 +33,6 @@ import com.android.systemui.plugins.activityStarter
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
import org.junit.After
@@ -56,7 +55,6 @@ import org.mockito.kotlin.whenever
@SmallTest
@RunWith(AndroidTestingRunner::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
-@OptIn(ExperimentalCoroutinesApi::class)
class AudioSharingDeviceItemActionInteractorTest : SysuiTestCase() {
@get:Rule val mockitoRule: MockitoRule = MockitoJUnit.rule()
private val kosmos = testKosmos().apply { testDispatcher = UnconfinedTestDispatcher() }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsContentManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsContentManagerTest.kt
new file mode 100644
index 000000000000..6ed990d513cb
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothDetailsContentManagerTest.kt
@@ -0,0 +1,461 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.bluetooth.qsdialog
+
+import android.graphics.drawable.Drawable
+import android.testing.TestableLooper
+import android.view.LayoutInflater
+import android.view.View
+import android.view.View.GONE
+import android.view.View.VISIBLE
+import android.view.ViewGroup.LayoutParams.MATCH_PARENT
+import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.internal.logging.UiEventLogger
+import com.android.settingslib.bluetooth.CachedBluetoothDevice
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.animation.DialogTransitionAnimator
+import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.kosmos.testDispatcher
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.model.SysUiState
+import com.android.systemui.res.R
+import com.android.systemui.statusbar.phone.SystemUIDialog
+import com.android.systemui.statusbar.phone.SystemUIDialogManager
+import com.android.systemui.testKosmos
+import com.android.systemui.util.time.FakeSystemClock
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.test.runCurrent
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.ArgumentMatchers.anyBoolean
+import org.mockito.ArgumentMatchers.anyLong
+import org.mockito.junit.MockitoJUnit
+import org.mockito.junit.MockitoRule
+import org.mockito.kotlin.any
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.whenever
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+@TestableLooper.RunWithLooper(setAsMainLooper = true)
+class BluetoothDetailsContentManagerTest : SysuiTestCase() {
+ companion object {
+ const val DEVICE_NAME = "device"
+ const val DEVICE_CONNECTION_SUMMARY = "active"
+ const val ENABLED = true
+ const val CONTENT_HEIGHT = WRAP_CONTENT
+ }
+
+ @get:Rule val mockitoRule: MockitoRule = MockitoJUnit.rule()
+
+ private val cachedBluetoothDevice = mock<CachedBluetoothDevice>()
+
+ private val bluetoothTileDialogCallback = mock<BluetoothTileDialogCallback>()
+
+ private val drawable = mock<Drawable>()
+
+ private val uiEventLogger = mock<UiEventLogger>()
+
+ private val logger = mock<BluetoothTileDialogLogger>()
+
+ private val sysuiDialogFactory = mock<SystemUIDialog.Factory>()
+ private val dialogManager = mock<SystemUIDialogManager>()
+ private val sysuiState = mock<SysUiState>()
+ private val dialogTransitionAnimator = mock<DialogTransitionAnimator>()
+
+ private val fakeSystemClock = FakeSystemClock()
+
+ private val uiProperties =
+ BluetoothTileDialogViewModel.UiProperties.build(
+ isBluetoothEnabled = ENABLED,
+ isAutoOnToggleFeatureAvailable = ENABLED,
+ )
+
+ private lateinit var icon: Pair<Drawable, String>
+ private lateinit var mBluetoothDetailsContentManager: BluetoothDetailsContentManager
+ private lateinit var deviceItem: DeviceItem
+ private lateinit var contentView: View
+
+ private val kosmos = testKosmos()
+
+ @Before
+ fun setUp() {
+ with(kosmos) {
+ contentView =
+ LayoutInflater.from(mContext).inflate(R.layout.bluetooth_tile_dialog, null)
+
+ whenever(sysuiState.setFlag(anyLong(), anyBoolean())).thenReturn(sysuiState)
+
+ mBluetoothDetailsContentManager =
+ BluetoothDetailsContentManager(
+ uiProperties,
+ CONTENT_HEIGHT,
+ bluetoothTileDialogCallback,
+ /* isInDialog= */ true,
+ {},
+ testDispatcher,
+ fakeSystemClock,
+ uiEventLogger,
+ logger,
+ )
+
+ whenever(sysuiDialogFactory.create(any<SystemUIDialog.Delegate>(), any())).thenAnswer {
+ SystemUIDialog(
+ mContext,
+ 0,
+ SystemUIDialog.DEFAULT_DISMISS_ON_DEVICE_LOCK,
+ dialogManager,
+ sysuiState,
+ fakeBroadcastDispatcher,
+ dialogTransitionAnimator,
+ it.getArgument(0),
+ )
+ }
+
+ icon = Pair(drawable, DEVICE_NAME)
+ deviceItem =
+ DeviceItem(
+ type = DeviceItemType.AVAILABLE_MEDIA_BLUETOOTH_DEVICE,
+ cachedBluetoothDevice = cachedBluetoothDevice,
+ deviceName = DEVICE_NAME,
+ connectionSummary = DEVICE_CONNECTION_SUMMARY,
+ iconWithDescription = icon,
+ background = null,
+ )
+ whenever(cachedBluetoothDevice.isBusy).thenReturn(false)
+ }
+ }
+
+ @Test
+ fun testShowDialog_createRecyclerViewWithAdapter() {
+ mBluetoothDetailsContentManager.bind(contentView)
+ mBluetoothDetailsContentManager.start()
+
+ val recyclerView = contentView.requireViewById<RecyclerView>(R.id.device_list)
+
+ assertThat(recyclerView).isNotNull()
+ assertThat(recyclerView.visibility).isEqualTo(VISIBLE)
+ assertThat(recyclerView.adapter).isNotNull()
+ assertThat(recyclerView.layoutManager is LinearLayoutManager).isTrue()
+ mBluetoothDetailsContentManager.releaseView()
+ }
+
+ @Test
+ fun testShowDialog_displayBluetoothDevice() {
+ with(kosmos) {
+ testScope.runTest {
+ mBluetoothDetailsContentManager.bind(contentView)
+ mBluetoothDetailsContentManager.start()
+ fakeSystemClock.setElapsedRealtime(Long.MAX_VALUE)
+ mBluetoothDetailsContentManager.onDeviceItemUpdated(
+ listOf(deviceItem),
+ showSeeAll = false,
+ showPairNewDevice = false,
+ )
+
+ val recyclerView = contentView.requireViewById<RecyclerView>(R.id.device_list)
+ val adapter = recyclerView?.adapter as BluetoothDetailsContentManager.Adapter
+ assertThat(adapter.itemCount).isEqualTo(1)
+ assertThat(adapter.getItem(0).deviceName).isEqualTo(DEVICE_NAME)
+ assertThat(adapter.getItem(0).connectionSummary)
+ .isEqualTo(DEVICE_CONNECTION_SUMMARY)
+ assertThat(adapter.getItem(0).iconWithDescription).isEqualTo(icon)
+ mBluetoothDetailsContentManager.releaseView()
+ }
+ }
+ }
+
+ @Test
+ fun testDeviceItemViewHolder_cachedDeviceNotBusy() {
+ with(kosmos) {
+ testScope.runTest {
+ deviceItem.isEnabled = true
+
+ val view =
+ LayoutInflater.from(mContext)
+ .inflate(R.layout.bluetooth_device_item, null, false)
+ val viewHolder =
+ mBluetoothDetailsContentManager.Adapter().DeviceItemViewHolder(view)
+ viewHolder.bind(deviceItem)
+ val container = view.requireViewById<View>(R.id.bluetooth_device_row)
+
+ assertThat(container).isNotNull()
+ assertThat(container.isEnabled).isTrue()
+ assertThat(container.hasOnClickListeners()).isTrue()
+ val value by collectLastValue(mBluetoothDetailsContentManager.deviceItemClick)
+ runCurrent()
+ container.performClick()
+ runCurrent()
+ assertThat(value).isNotNull()
+ value?.let {
+ assertThat(it.target).isEqualTo(DeviceItemClick.Target.ENTIRE_ROW)
+ assertThat(it.clickedView).isEqualTo(container)
+ assertThat(it.deviceItem).isEqualTo(deviceItem)
+ }
+ }
+ }
+ }
+
+ @Test
+ fun testDeviceItemViewHolder_cachedDeviceBusy() {
+ with(kosmos) {
+ deviceItem.isEnabled = false
+
+ val view =
+ LayoutInflater.from(mContext).inflate(R.layout.bluetooth_device_item, null, false)
+ val viewHolder =
+ BluetoothDetailsContentManager(
+ uiProperties,
+ CONTENT_HEIGHT,
+ bluetoothTileDialogCallback,
+ /* isInDialog= */ true,
+ {},
+ testDispatcher,
+ fakeSystemClock,
+ uiEventLogger,
+ logger,
+ )
+ .Adapter()
+ .DeviceItemViewHolder(view)
+ viewHolder.bind(deviceItem)
+ val container = view.requireViewById<View>(R.id.bluetooth_device_row)
+
+ assertThat(container).isNotNull()
+ assertThat(container.isEnabled).isFalse()
+ assertThat(container.hasOnClickListeners()).isTrue()
+ }
+ }
+
+ @Test
+ fun testDeviceItemViewHolder_clickActionIcon() {
+ with(kosmos) {
+ testScope.runTest {
+ deviceItem.isEnabled = true
+
+ val view =
+ LayoutInflater.from(mContext)
+ .inflate(R.layout.bluetooth_device_item, null, false)
+ val viewHolder =
+ mBluetoothDetailsContentManager.Adapter().DeviceItemViewHolder(view)
+ viewHolder.bind(deviceItem)
+ val actionIconView = view.requireViewById<View>(R.id.gear_icon)
+
+ assertThat(actionIconView).isNotNull()
+ assertThat(actionIconView.hasOnClickListeners()).isTrue()
+ val value by collectLastValue(mBluetoothDetailsContentManager.deviceItemClick)
+ runCurrent()
+ actionIconView.performClick()
+ runCurrent()
+ assertThat(value).isNotNull()
+ value?.let {
+ assertThat(it.target).isEqualTo(DeviceItemClick.Target.ACTION_ICON)
+ assertThat(it.clickedView).isEqualTo(actionIconView)
+ assertThat(it.deviceItem).isEqualTo(deviceItem)
+ }
+ }
+ }
+ }
+
+ @Test
+ fun testOnDeviceUpdated_hideSeeAll_showPairNew() {
+ with(kosmos) {
+ testScope.runTest {
+ mBluetoothDetailsContentManager.bind(contentView)
+ mBluetoothDetailsContentManager.start()
+ fakeSystemClock.setElapsedRealtime(Long.MAX_VALUE)
+ mBluetoothDetailsContentManager.onDeviceItemUpdated(
+ listOf(deviceItem),
+ showSeeAll = false,
+ showPairNewDevice = true,
+ )
+
+ val seeAllButton = contentView.requireViewById<View>(R.id.see_all_button)
+ val pairNewButton = contentView.requireViewById<View>(R.id.pair_new_device_button)
+ val recyclerView = contentView.requireViewById<RecyclerView>(R.id.device_list)
+ val adapter = recyclerView?.adapter as BluetoothDetailsContentManager.Adapter
+ val scrollViewContent = contentView.requireViewById<View>(R.id.scroll_view)
+
+ assertThat(seeAllButton).isNotNull()
+ assertThat(seeAllButton.visibility).isEqualTo(GONE)
+ assertThat(pairNewButton).isNotNull()
+ assertThat(pairNewButton.visibility).isEqualTo(VISIBLE)
+ assertThat(adapter.itemCount).isEqualTo(1)
+ assertThat(scrollViewContent.layoutParams.height).isEqualTo(WRAP_CONTENT)
+ mBluetoothDetailsContentManager.releaseView()
+ }
+ }
+ }
+
+ @Test
+ fun testShowDialog_cachedHeightLargerThanMinHeight_displayFromCachedHeight() {
+ with(kosmos) {
+ testScope.runTest {
+ val cachedHeight = Int.MAX_VALUE
+ val contentManager =
+ BluetoothDetailsContentManager(
+ BluetoothTileDialogViewModel.UiProperties.build(ENABLED, ENABLED),
+ cachedHeight,
+ bluetoothTileDialogCallback,
+ /* isInDialog= */ true,
+ {},
+ testDispatcher,
+ fakeSystemClock,
+ uiEventLogger,
+ logger,
+ )
+ contentManager.bind(contentView)
+ contentManager.start()
+ assertThat(contentView.requireViewById<View>(R.id.scroll_view).layoutParams.height)
+ .isEqualTo(cachedHeight)
+ contentManager.releaseView()
+ }
+ }
+ }
+
+ @Test
+ fun testShowDialog_cachedHeightLessThanMinHeight_displayFromUiProperties() {
+ with(kosmos) {
+ testScope.runTest {
+ val contentManager =
+ BluetoothDetailsContentManager(
+ BluetoothTileDialogViewModel.UiProperties.build(ENABLED, ENABLED),
+ MATCH_PARENT,
+ bluetoothTileDialogCallback,
+ /* isInDialog= */ true,
+ {},
+ testDispatcher,
+ fakeSystemClock,
+ uiEventLogger,
+ logger,
+ )
+ contentManager.bind(contentView)
+ contentManager.start()
+ assertThat(contentView.requireViewById<View>(R.id.scroll_view).layoutParams.height)
+ .isGreaterThan(MATCH_PARENT)
+ contentManager.releaseView()
+ }
+ }
+ }
+
+ @Test
+ fun testShowDialog_bluetoothEnabled_autoOnToggleGone() {
+ with(kosmos) {
+ testScope.runTest {
+ val contentManager =
+ BluetoothDetailsContentManager(
+ BluetoothTileDialogViewModel.UiProperties.build(ENABLED, ENABLED),
+ MATCH_PARENT,
+ bluetoothTileDialogCallback,
+ /* isInDialog= */ true,
+ {},
+ testDispatcher,
+ fakeSystemClock,
+ uiEventLogger,
+ logger,
+ )
+ contentManager.bind(contentView)
+ contentManager.start()
+ assertThat(
+ contentView
+ .requireViewById<View>(R.id.bluetooth_auto_on_toggle_layout)
+ .visibility
+ )
+ .isEqualTo(GONE)
+ contentManager.releaseView()
+ }
+ }
+ }
+
+ @Test
+ fun testOnAudioSharingButtonUpdated_visibleActive_activateButton() {
+ with(kosmos) {
+ testScope.runTest {
+ mBluetoothDetailsContentManager.bind(contentView)
+ mBluetoothDetailsContentManager.start()
+ fakeSystemClock.setElapsedRealtime(Long.MAX_VALUE)
+ mBluetoothDetailsContentManager.onAudioSharingButtonUpdated(
+ visibility = VISIBLE,
+ label = null,
+ isActive = true,
+ )
+
+ val audioSharingButton =
+ contentView.requireViewById<View>(R.id.audio_sharing_button)
+
+ assertThat(audioSharingButton).isNotNull()
+ assertThat(audioSharingButton.visibility).isEqualTo(VISIBLE)
+ assertThat(audioSharingButton.isActivated).isTrue()
+ mBluetoothDetailsContentManager.releaseView()
+ }
+ }
+ }
+
+ @Test
+ fun testOnAudioSharingButtonUpdated_visibleNotActive_inactivateButton() {
+ with(kosmos) {
+ testScope.runTest {
+ mBluetoothDetailsContentManager.bind(contentView)
+ mBluetoothDetailsContentManager.start()
+ fakeSystemClock.setElapsedRealtime(Long.MAX_VALUE)
+ mBluetoothDetailsContentManager.onAudioSharingButtonUpdated(
+ visibility = VISIBLE,
+ label = null,
+ isActive = false,
+ )
+
+ val audioSharingButton =
+ contentView.requireViewById<View>(R.id.audio_sharing_button)
+
+ assertThat(audioSharingButton).isNotNull()
+ assertThat(audioSharingButton.visibility).isEqualTo(VISIBLE)
+ assertThat(audioSharingButton.isActivated).isFalse()
+ mBluetoothDetailsContentManager.releaseView()
+ }
+ }
+ }
+
+ @Test
+ fun testOnAudioSharingButtonUpdated_gone_inactivateButton() {
+ with(kosmos) {
+ testScope.runTest {
+ mBluetoothDetailsContentManager.bind(contentView)
+ mBluetoothDetailsContentManager.start()
+ fakeSystemClock.setElapsedRealtime(Long.MAX_VALUE)
+ mBluetoothDetailsContentManager.onAudioSharingButtonUpdated(
+ visibility = GONE,
+ label = null,
+ isActive = false,
+ )
+
+ val audioSharingButton =
+ contentView.requireViewById<View>(R.id.audio_sharing_button)
+
+ assertThat(audioSharingButton).isNotNull()
+ assertThat(audioSharingButton.visibility).isEqualTo(GONE)
+ assertThat(audioSharingButton.isActivated).isFalse()
+ mBluetoothDetailsContentManager.releaseView()
+ }
+ }
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogDelegateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogDelegateTest.kt
index 4396b0a42ae6..2788f1d95382 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogDelegateTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogDelegateTest.kt
@@ -16,53 +16,44 @@
package com.android.systemui.bluetooth.qsdialog
-import android.graphics.drawable.Drawable
+import android.platform.test.annotations.DisableFlags
import android.testing.TestableLooper
-import android.view.LayoutInflater
-import android.view.View
-import android.view.View.GONE
-import android.view.View.VISIBLE
-import android.view.ViewGroup.LayoutParams.MATCH_PARENT
import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
-import androidx.recyclerview.widget.LinearLayoutManager
-import androidx.recyclerview.widget.RecyclerView
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.internal.logging.UiEventLogger
-import com.android.settingslib.bluetooth.CachedBluetoothDevice
+import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.DialogTransitionAnimator
-import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.kosmos.testScope
import com.android.systemui.model.SysUiState
-import com.android.systemui.res.R
import com.android.systemui.shade.data.repository.shadeDialogContextInteractor
+import com.android.systemui.shade.domain.interactor.shadeModeInteractor
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.statusbar.phone.SystemUIDialogManager
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.whenever
-import com.android.systemui.util.time.FakeSystemClock
-import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.test.TestCoroutineScheduler
import kotlinx.coroutines.test.TestScope
-import kotlinx.coroutines.test.runCurrent
-import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyBoolean
+import org.mockito.ArgumentMatchers.anyInt
import org.mockito.ArgumentMatchers.anyLong
import org.mockito.Mock
-import org.mockito.Mockito.`when`
+import org.mockito.Mockito.verify
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
+@DisableFlags(Flags.FLAG_QS_TILE_DETAILED_VIEW)
class BluetoothTileDialogDelegateTest : SysuiTestCase() {
companion object {
const val DEVICE_NAME = "device"
@@ -73,33 +64,31 @@ class BluetoothTileDialogDelegateTest : SysuiTestCase() {
@get:Rule val mockitoRule: MockitoRule = MockitoJUnit.rule()
- @Mock private lateinit var cachedBluetoothDevice: CachedBluetoothDevice
+ @Mock
+ private lateinit var bluetoothDetailsContentManagerFactory:
+ BluetoothDetailsContentManager.Factory
- @Mock private lateinit var bluetoothTileDialogCallback: BluetoothTileDialogCallback
+ @Mock private lateinit var bluetoothDetailsContentManager: BluetoothDetailsContentManager
- @Mock private lateinit var drawable: Drawable
+ @Mock private lateinit var bluetoothTileDialogCallback: BluetoothTileDialogCallback
@Mock private lateinit var uiEventLogger: UiEventLogger
- @Mock private lateinit var logger: BluetoothTileDialogLogger
+ @Mock private lateinit var sysuiDialogFactory: SystemUIDialog.Factory
+ @Mock private lateinit var dialogManager: SystemUIDialogManager
+ @Mock private lateinit var sysuiState: SysUiState
+ @Mock private lateinit var dialogTransitionAnimator: DialogTransitionAnimator
private val uiProperties =
BluetoothTileDialogViewModel.UiProperties.build(
isBluetoothEnabled = ENABLED,
isAutoOnToggleFeatureAvailable = ENABLED,
)
- @Mock private lateinit var sysuiDialogFactory: SystemUIDialog.Factory
- @Mock private lateinit var dialogManager: SystemUIDialogManager
- @Mock private lateinit var sysuiState: SysUiState
- @Mock private lateinit var dialogTransitionAnimator: DialogTransitionAnimator
-
- private val fakeSystemClock = FakeSystemClock()
+ private lateinit var scheduler: TestCoroutineScheduler
private lateinit var dispatcher: CoroutineDispatcher
private lateinit var testScope: TestScope
- private lateinit var icon: Pair<Drawable, String>
private lateinit var mBluetoothTileDialogDelegate: BluetoothTileDialogDelegate
- private lateinit var deviceItem: DeviceItem
private val kosmos = testKosmos()
@@ -116,12 +105,11 @@ class BluetoothTileDialogDelegateTest : SysuiTestCase() {
CONTENT_HEIGHT,
bluetoothTileDialogCallback,
{},
- dispatcher,
- fakeSystemClock,
uiEventLogger,
- logger,
sysuiDialogFactory,
kosmos.shadeDialogContextInteractor,
+ bluetoothDetailsContentManagerFactory,
+ kosmos.shadeModeInteractor,
)
whenever(sysuiDialogFactory.create(any(SystemUIDialog.Delegate::class.java), any()))
@@ -138,17 +126,16 @@ class BluetoothTileDialogDelegateTest : SysuiTestCase() {
)
}
- icon = Pair(drawable, DEVICE_NAME)
- deviceItem =
- DeviceItem(
- type = DeviceItemType.AVAILABLE_MEDIA_BLUETOOTH_DEVICE,
- cachedBluetoothDevice = cachedBluetoothDevice,
- deviceName = DEVICE_NAME,
- connectionSummary = DEVICE_CONNECTION_SUMMARY,
- iconWithDescription = icon,
- background = null,
+ whenever(
+ bluetoothDetailsContentManagerFactory.create(
+ any(),
+ anyInt(),
+ any(),
+ anyBoolean(),
+ any(),
+ )
)
- `when`(cachedBluetoothDevice.isBusy).thenReturn(false)
+ .thenReturn(bluetoothDetailsContentManager)
}
@Test
@@ -156,287 +143,9 @@ class BluetoothTileDialogDelegateTest : SysuiTestCase() {
val dialog = mBluetoothTileDialogDelegate.createDialog()
dialog.show()
- val recyclerView = dialog.requireViewById<RecyclerView>(R.id.device_list)
-
- assertThat(recyclerView).isNotNull()
- assertThat(recyclerView.visibility).isEqualTo(VISIBLE)
- assertThat(recyclerView.adapter).isNotNull()
- assertThat(recyclerView.layoutManager is LinearLayoutManager).isTrue()
+ verify(bluetoothDetailsContentManager).bind(any())
+ verify(bluetoothDetailsContentManager).start()
dialog.dismiss()
- }
-
- @Test
- fun testShowDialog_displayBluetoothDevice() {
- testScope.runTest {
- val dialog = mBluetoothTileDialogDelegate.createDialog()
- dialog.show()
- fakeSystemClock.setElapsedRealtime(Long.MAX_VALUE)
- mBluetoothTileDialogDelegate.onDeviceItemUpdated(
- dialog,
- listOf(deviceItem),
- showSeeAll = false,
- showPairNewDevice = false,
- )
-
- val recyclerView = dialog.requireViewById<RecyclerView>(R.id.device_list)
- val adapter = recyclerView?.adapter as BluetoothTileDialogDelegate.Adapter
- assertThat(adapter.itemCount).isEqualTo(1)
- assertThat(adapter.getItem(0).deviceName).isEqualTo(DEVICE_NAME)
- assertThat(adapter.getItem(0).connectionSummary).isEqualTo(DEVICE_CONNECTION_SUMMARY)
- assertThat(adapter.getItem(0).iconWithDescription).isEqualTo(icon)
- dialog.dismiss()
- }
- }
-
- @Test
- fun testDeviceItemViewHolder_cachedDeviceNotBusy() {
- testScope.runTest {
- deviceItem.isEnabled = true
-
- val view =
- LayoutInflater.from(mContext).inflate(R.layout.bluetooth_device_item, null, false)
- val viewHolder = mBluetoothTileDialogDelegate.Adapter().DeviceItemViewHolder(view)
- viewHolder.bind(deviceItem)
- val container = view.requireViewById<View>(R.id.bluetooth_device_row)
-
- assertThat(container).isNotNull()
- assertThat(container.isEnabled).isTrue()
- assertThat(container.hasOnClickListeners()).isTrue()
- val value by collectLastValue(mBluetoothTileDialogDelegate.deviceItemClick)
- runCurrent()
- container.performClick()
- runCurrent()
- assertThat(value).isNotNull()
- value?.let {
- assertThat(it.target).isEqualTo(DeviceItemClick.Target.ENTIRE_ROW)
- assertThat(it.clickedView).isEqualTo(container)
- assertThat(it.deviceItem).isEqualTo(deviceItem)
- }
- }
- }
-
- @Test
- fun testDeviceItemViewHolder_cachedDeviceBusy() {
- deviceItem.isEnabled = false
-
- val view =
- LayoutInflater.from(mContext).inflate(R.layout.bluetooth_device_item, null, false)
- val viewHolder =
- BluetoothTileDialogDelegate(
- uiProperties,
- CONTENT_HEIGHT,
- bluetoothTileDialogCallback,
- {},
- dispatcher,
- fakeSystemClock,
- uiEventLogger,
- logger,
- sysuiDialogFactory,
- kosmos.shadeDialogContextInteractor,
- )
- .Adapter()
- .DeviceItemViewHolder(view)
- viewHolder.bind(deviceItem)
- val container = view.requireViewById<View>(R.id.bluetooth_device_row)
-
- assertThat(container).isNotNull()
- assertThat(container.isEnabled).isFalse()
- assertThat(container.hasOnClickListeners()).isTrue()
- }
-
- @Test
- fun testDeviceItemViewHolder_clickActionIcon() {
- testScope.runTest {
- deviceItem.isEnabled = true
-
- val view =
- LayoutInflater.from(mContext).inflate(R.layout.bluetooth_device_item, null, false)
- val viewHolder = mBluetoothTileDialogDelegate.Adapter().DeviceItemViewHolder(view)
- viewHolder.bind(deviceItem)
- val actionIconView = view.requireViewById<View>(R.id.gear_icon)
-
- assertThat(actionIconView).isNotNull()
- assertThat(actionIconView.hasOnClickListeners()).isTrue()
- val value by collectLastValue(mBluetoothTileDialogDelegate.deviceItemClick)
- runCurrent()
- actionIconView.performClick()
- runCurrent()
- assertThat(value).isNotNull()
- value?.let {
- assertThat(it.target).isEqualTo(DeviceItemClick.Target.ACTION_ICON)
- assertThat(it.clickedView).isEqualTo(actionIconView)
- assertThat(it.deviceItem).isEqualTo(deviceItem)
- }
- }
- }
-
- @Test
- fun testOnDeviceUpdated_hideSeeAll_showPairNew() {
- testScope.runTest {
- val dialog = mBluetoothTileDialogDelegate.createDialog()
- dialog.show()
- fakeSystemClock.setElapsedRealtime(Long.MAX_VALUE)
- mBluetoothTileDialogDelegate.onDeviceItemUpdated(
- dialog,
- listOf(deviceItem),
- showSeeAll = false,
- showPairNewDevice = true,
- )
-
- val seeAllButton = dialog.requireViewById<View>(R.id.see_all_button)
- val pairNewButton = dialog.requireViewById<View>(R.id.pair_new_device_button)
- val recyclerView = dialog.requireViewById<RecyclerView>(R.id.device_list)
- val adapter = recyclerView?.adapter as BluetoothTileDialogDelegate.Adapter
- val scrollViewContent = dialog.requireViewById<View>(R.id.scroll_view)
-
- assertThat(seeAllButton).isNotNull()
- assertThat(seeAllButton.visibility).isEqualTo(GONE)
- assertThat(pairNewButton).isNotNull()
- assertThat(pairNewButton.visibility).isEqualTo(VISIBLE)
- assertThat(adapter.itemCount).isEqualTo(1)
- assertThat(scrollViewContent.layoutParams.height).isEqualTo(WRAP_CONTENT)
- dialog.dismiss()
- }
- }
-
- @Test
- fun testShowDialog_cachedHeightLargerThanMinHeight_displayFromCachedHeight() {
- testScope.runTest {
- val cachedHeight = Int.MAX_VALUE
- val dialog =
- BluetoothTileDialogDelegate(
- BluetoothTileDialogViewModel.UiProperties.build(ENABLED, ENABLED),
- cachedHeight,
- bluetoothTileDialogCallback,
- {},
- dispatcher,
- fakeSystemClock,
- uiEventLogger,
- logger,
- sysuiDialogFactory,
- kosmos.shadeDialogContextInteractor,
- )
- .createDialog()
- dialog.show()
- assertThat(dialog.requireViewById<View>(R.id.scroll_view).layoutParams.height)
- .isEqualTo(cachedHeight)
- dialog.dismiss()
- }
- }
-
- @Test
- fun testShowDialog_cachedHeightLessThanMinHeight_displayFromUiProperties() {
- testScope.runTest {
- val dialog =
- BluetoothTileDialogDelegate(
- BluetoothTileDialogViewModel.UiProperties.build(ENABLED, ENABLED),
- MATCH_PARENT,
- bluetoothTileDialogCallback,
- {},
- dispatcher,
- fakeSystemClock,
- uiEventLogger,
- logger,
- sysuiDialogFactory,
- kosmos.shadeDialogContextInteractor,
- )
- .createDialog()
- dialog.show()
- assertThat(dialog.requireViewById<View>(R.id.scroll_view).layoutParams.height)
- .isGreaterThan(MATCH_PARENT)
- dialog.dismiss()
- }
- }
-
- @Test
- fun testShowDialog_bluetoothEnabled_autoOnToggleGone() {
- testScope.runTest {
- val dialog =
- BluetoothTileDialogDelegate(
- BluetoothTileDialogViewModel.UiProperties.build(ENABLED, ENABLED),
- MATCH_PARENT,
- bluetoothTileDialogCallback,
- {},
- dispatcher,
- fakeSystemClock,
- uiEventLogger,
- logger,
- sysuiDialogFactory,
- kosmos.shadeDialogContextInteractor,
- )
- .createDialog()
- dialog.show()
- assertThat(
- dialog.requireViewById<View>(R.id.bluetooth_auto_on_toggle_layout).visibility
- )
- .isEqualTo(GONE)
- dialog.dismiss()
- }
- }
-
- @Test
- fun testOnAudioSharingButtonUpdated_visibleActive_activateButton() {
- testScope.runTest {
- val dialog = mBluetoothTileDialogDelegate.createDialog()
- dialog.show()
- fakeSystemClock.setElapsedRealtime(Long.MAX_VALUE)
- mBluetoothTileDialogDelegate.onAudioSharingButtonUpdated(
- dialog,
- visibility = VISIBLE,
- label = null,
- isActive = true,
- )
-
- val audioSharingButton = dialog.requireViewById<View>(R.id.audio_sharing_button)
-
- assertThat(audioSharingButton).isNotNull()
- assertThat(audioSharingButton.visibility).isEqualTo(VISIBLE)
- assertThat(audioSharingButton.isActivated).isTrue()
- dialog.dismiss()
- }
- }
-
- @Test
- fun testOnAudioSharingButtonUpdated_visibleNotActive_inactivateButton() {
- testScope.runTest {
- val dialog = mBluetoothTileDialogDelegate.createDialog()
- dialog.show()
- fakeSystemClock.setElapsedRealtime(Long.MAX_VALUE)
- mBluetoothTileDialogDelegate.onAudioSharingButtonUpdated(
- dialog,
- visibility = VISIBLE,
- label = null,
- isActive = false,
- )
-
- val audioSharingButton = dialog.requireViewById<View>(R.id.audio_sharing_button)
-
- assertThat(audioSharingButton).isNotNull()
- assertThat(audioSharingButton.visibility).isEqualTo(VISIBLE)
- assertThat(audioSharingButton.isActivated).isFalse()
- dialog.dismiss()
- }
- }
-
- @Test
- fun testOnAudioSharingButtonUpdated_gone_inactivateButton() {
- testScope.runTest {
- val dialog = mBluetoothTileDialogDelegate.createDialog()
- dialog.show()
- fakeSystemClock.setElapsedRealtime(Long.MAX_VALUE)
- mBluetoothTileDialogDelegate.onAudioSharingButtonUpdated(
- dialog,
- visibility = GONE,
- label = null,
- isActive = false,
- )
-
- val audioSharingButton = dialog.requireViewById<View>(R.id.audio_sharing_button)
-
- assertThat(audioSharingButton).isNotNull()
- assertThat(audioSharingButton.visibility).isEqualTo(GONE)
- assertThat(audioSharingButton.isActivated).isFalse()
- dialog.dismiss()
- }
+ verify(bluetoothDetailsContentManager).releaseView()
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogViewModelTest.kt
index a56c2cb25542..47a834be9b9c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/bluetooth/qsdialog/BluetoothTileDialogViewModelTest.kt
@@ -45,7 +45,6 @@ import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.CoroutineDispatcher
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
@@ -67,7 +66,6 @@ import org.mockito.junit.MockitoRule
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
-@OptIn(ExperimentalCoroutinesApi::class)
@EnableFlags(Flags.FLAG_BLUETOOTH_QS_TILE_DIALOG_AUTO_ON_TOGGLE)
class BluetoothTileDialogViewModelTest : SysuiTestCase() {
@@ -78,8 +76,6 @@ class BluetoothTileDialogViewModelTest : SysuiTestCase() {
private lateinit var bluetoothTileDialogViewModel: BluetoothTileDialogViewModel
- @Mock private lateinit var bluetoothStateInteractor: BluetoothStateInteractor
-
@Mock private lateinit var bluetoothDeviceMetadataInteractor: BluetoothDeviceMetadataInteractor
@Mock private lateinit var deviceItemInteractor: DeviceItemInteractor
@@ -108,9 +104,16 @@ class BluetoothTileDialogViewModelTest : SysuiTestCase() {
@Mock private lateinit var bluetoothTileDialogDelegate: BluetoothTileDialogDelegate
+ @Mock
+ private lateinit var bluetoothDetailsContentManagerFactory:
+ BluetoothDetailsContentManager.Factory
+
+ @Mock private lateinit var bluetoothDetailsContentManager: BluetoothDetailsContentManager
+
@Mock private lateinit var sysuiDialog: SystemUIDialog
@Mock private lateinit var expandable: Expandable
@Mock private lateinit var controller: DialogTransitionAnimator.Controller
+ @Mock private lateinit var mockView: View
private val sharedPreferences = FakeSharedPreferences()
@@ -131,7 +134,7 @@ class BluetoothTileDialogViewModelTest : SysuiTestCase() {
localBluetoothManager,
bluetoothTileDialogLogger,
testScope.backgroundScope,
- dispatcher
+ dispatcher,
),
// TODO(b/316822488): Create FakeBluetoothAutoOnInteractor.
BluetoothAutoOnInteractor(
@@ -139,7 +142,7 @@ class BluetoothTileDialogViewModelTest : SysuiTestCase() {
localBluetoothManager,
bluetoothAdapter,
testScope.backgroundScope,
- dispatcher
+ dispatcher,
)
),
kosmos.audioSharingInteractor,
@@ -153,7 +156,8 @@ class BluetoothTileDialogViewModelTest : SysuiTestCase() {
dispatcher,
dispatcher,
sharedPreferences,
- mBluetoothTileDialogDelegateDelegateFactory
+ mBluetoothTileDialogDelegateDelegateFactory,
+ bluetoothDetailsContentManagerFactory,
)
whenever(deviceItemInteractor.deviceItemUpdate).thenReturn(MutableSharedFlow())
whenever(deviceItemInteractor.deviceItemUpdateRequest)
@@ -163,20 +167,34 @@ class BluetoothTileDialogViewModelTest : SysuiTestCase() {
whenever(mBluetoothTileDialogDelegateDelegateFactory.create(any(), anyInt(), any(), any()))
.thenReturn(bluetoothTileDialogDelegate)
whenever(bluetoothTileDialogDelegate.createDialog()).thenReturn(sysuiDialog)
+ whenever(bluetoothTileDialogDelegate.contentManager)
+ .thenReturn(bluetoothDetailsContentManager)
+ whenever(
+ bluetoothDetailsContentManagerFactory.create(
+ any(),
+ anyInt(),
+ any(),
+ anyBoolean(),
+ any(),
+ )
+ )
+ .thenReturn(bluetoothDetailsContentManager)
whenever(sysuiDialog.context).thenReturn(mContext)
- whenever(bluetoothTileDialogDelegate.bluetoothStateToggle)
+ whenever(bluetoothDetailsContentManager.bluetoothStateToggle)
.thenReturn(getMutableStateFlow(false))
- whenever(bluetoothTileDialogDelegate.deviceItemClick).thenReturn(MutableSharedFlow())
- whenever(bluetoothTileDialogDelegate.contentHeight).thenReturn(getMutableStateFlow(0))
- whenever(bluetoothTileDialogDelegate.bluetoothAutoOnToggle)
+ whenever(bluetoothDetailsContentManager.deviceItemClick)
+ .thenReturn(getMutableStateFlow(null))
+ whenever(bluetoothDetailsContentManager.contentHeight).thenReturn(getMutableStateFlow(0))
+ whenever(bluetoothDetailsContentManager.bluetoothAutoOnToggle)
.thenReturn(getMutableStateFlow(false))
whenever(expandable.dialogTransitionController(any())).thenReturn(controller)
+ whenever(mockView.context).thenReturn(mContext)
}
@Test
- fun testShowDialog_noAnimation() {
+ fun testShowDetailsContent_noAnimation() {
testScope.runTest {
- bluetoothTileDialogViewModel.showDialog(null)
+ bluetoothTileDialogViewModel.showDetailsContent(null, null)
runCurrent()
verify(mDialogTransitionAnimator, never()).show(any(), any(), any())
@@ -184,9 +202,9 @@ class BluetoothTileDialogViewModelTest : SysuiTestCase() {
}
@Test
- fun testShowDialog_animated() {
+ fun testShowDetailsContent_animated() {
testScope.runTest {
- bluetoothTileDialogViewModel.showDialog(expandable)
+ bluetoothTileDialogViewModel.showDetailsContent(expandable, null)
runCurrent()
verify(mDialogTransitionAnimator).show(any(), any(), anyBoolean())
@@ -194,10 +212,21 @@ class BluetoothTileDialogViewModelTest : SysuiTestCase() {
}
@Test
- fun testShowDialog_animated_callInBackgroundThread() {
+ fun testShowDetailsContent_animated_inDetailsView() {
+ testScope.runTest {
+ bluetoothTileDialogViewModel.showDetailsContent(expandable, mockView)
+ runCurrent()
+
+ verify(bluetoothDetailsContentManager).bind(mockView)
+ verify(bluetoothDetailsContentManager).start()
+ }
+ }
+
+ @Test
+ fun testShowDetailsContent_animated_callInBackgroundThread() {
testScope.runTest {
backgroundExecutor.execute {
- bluetoothTileDialogViewModel.showDialog(expandable)
+ bluetoothTileDialogViewModel.showDetailsContent(expandable, null)
runCurrent()
verify(mDialogTransitionAnimator).show(any(), any(), anyBoolean())
@@ -206,9 +235,22 @@ class BluetoothTileDialogViewModelTest : SysuiTestCase() {
}
@Test
- fun testShowDialog_fetchDeviceItem() {
+ fun testShowDetailsContent_animated_callInBackgroundThread_inDetailsView() {
+ testScope.runTest {
+ backgroundExecutor.execute {
+ bluetoothTileDialogViewModel.showDetailsContent(expandable, mockView)
+ runCurrent()
+
+ verify(bluetoothDetailsContentManager).bind(mockView)
+ verify(bluetoothDetailsContentManager).start()
+ }
+ }
+ }
+
+ @Test
+ fun testShowDetailsContent_fetchDeviceItem() {
testScope.runTest {
- bluetoothTileDialogViewModel.showDialog(null)
+ bluetoothTileDialogViewModel.showDetailsContent(null, null)
runCurrent()
verify(deviceItemInteractor).deviceItemUpdate
@@ -219,7 +261,7 @@ class BluetoothTileDialogViewModelTest : SysuiTestCase() {
fun testStartSettingsActivity_activityLaunched_dialogDismissed() {
testScope.runTest {
whenever(deviceItem.cachedBluetoothDevice).thenReturn(cachedBluetoothDevice)
- bluetoothTileDialogViewModel.showDialog(null)
+ bluetoothTileDialogViewModel.showDetailsContent(null, null)
runCurrent()
val clickedView = View(context)
@@ -236,7 +278,7 @@ class BluetoothTileDialogViewModelTest : SysuiTestCase() {
val actual =
BluetoothTileDialogViewModel.UiProperties.build(
isBluetoothEnabled = true,
- isAutoOnToggleFeatureAvailable = true
+ isAutoOnToggleFeatureAvailable = true,
)
assertThat(actual.autoOnToggleVisibility).isEqualTo(GONE)
}
@@ -248,7 +290,7 @@ class BluetoothTileDialogViewModelTest : SysuiTestCase() {
val actual =
BluetoothTileDialogViewModel.UiProperties.build(
isBluetoothEnabled = false,
- isAutoOnToggleFeatureAvailable = true
+ isAutoOnToggleFeatureAvailable = true,
)
assertThat(actual.autoOnToggleVisibility).isEqualTo(VISIBLE)
}
@@ -260,7 +302,7 @@ class BluetoothTileDialogViewModelTest : SysuiTestCase() {
val actual =
BluetoothTileDialogViewModel.UiProperties.build(
isBluetoothEnabled = false,
- isAutoOnToggleFeatureAvailable = false
+ isAutoOnToggleFeatureAvailable = false,
)
assertThat(actual.autoOnToggleVisibility).isEqualTo(GONE)
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/brightness/ui/compose/BrightnessSliderMotionTest.kt b/packages/SystemUI/tests/src/com/android/systemui/brightness/ui/compose/BrightnessSliderMotionTest.kt
new file mode 100644
index 000000000000..9dab9d735603
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/brightness/ui/compose/BrightnessSliderMotionTest.kt
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.brightness.ui.compose
+
+import android.platform.test.annotations.MotionTest
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.wrapContentHeight
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.test.SemanticsNodeInteractionsProvider
+import androidx.compose.ui.test.hasTestTag
+import androidx.compose.ui.test.swipeLeft
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.LargeTest
+import com.android.compose.theme.PlatformTheme
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.brightness.ui.viewmodel.BrightnessSliderViewModel
+import com.android.systemui.common.shared.model.asIcon
+import com.android.systemui.haptics.slider.sliderHapticsViewModelFactory
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.motion.createSysUiComposeMotionTestRule
+import com.android.systemui.utils.PolicyRestriction
+import kotlin.test.Test
+import kotlin.time.Duration.Companion.seconds
+import kotlinx.coroutines.async
+import kotlinx.coroutines.coroutineScope
+import kotlinx.coroutines.joinAll
+import org.junit.Rule
+import org.junit.runner.RunWith
+import platform.test.motion.compose.ComposeRecordingSpec
+import platform.test.motion.compose.MotionControl
+import platform.test.motion.compose.MotionControlScope
+import platform.test.motion.compose.feature
+import platform.test.motion.compose.motionTestValueOfNode
+import platform.test.motion.compose.recordMotion
+import platform.test.motion.compose.runTest
+import platform.test.motion.compose.values.MotionTestValueKey
+import platform.test.motion.golden.FeatureCapture
+import platform.test.motion.golden.TimeSeriesCaptureScope
+import platform.test.motion.golden.asDataPoint
+import platform.test.screenshot.DeviceEmulationSpec
+import platform.test.screenshot.Displays.Phone
+
+@RunWith(AndroidJUnit4::class)
+@LargeTest
+@MotionTest
+class BrightnessSliderMotionTest : SysuiTestCase() {
+
+ private val deviceSpec = DeviceEmulationSpec(Phone)
+ private val kosmos = Kosmos()
+
+ @get:Rule val motionTestRule = createSysUiComposeMotionTestRule(kosmos, deviceSpec)
+
+ @Composable
+ private fun BrightnessSliderUnderTest(startingValue: Int) {
+ PlatformTheme {
+ BrightnessSlider(
+ gammaValue = startingValue,
+ modifier = Modifier.wrapContentHeight().fillMaxWidth(),
+ valueRange = 0..100,
+ iconResProvider = BrightnessSliderViewModel::getIconForPercentage,
+ imageLoader = { resId, context -> context.getDrawable(resId)!!.asIcon(null) },
+ restriction = PolicyRestriction.NoRestriction,
+ onRestrictedClick = {},
+ onDrag = {},
+ onStop = {},
+ overriddenByAppState = false,
+ hapticsViewModelFactory = kosmos.sliderHapticsViewModelFactory,
+ )
+ }
+ }
+
+ @Test
+ fun iconAlphaChanges() {
+ motionTestRule.runTest(timeout = 30.seconds) {
+ val motion =
+ recordMotion(
+ content = { BrightnessSliderUnderTest(100) },
+ ComposeRecordingSpec(
+ MotionControl(delayReadyToPlay = { awaitCondition { !isAnimating } }) {
+ coroutineScope {
+ val gesture = async {
+ performTouchInputAsync(
+ onNode(hasTestTag("com.android.systemui:id/slider"))
+ ) {
+ swipeLeft(startX = right, endX = left, durationMillis = 500)
+ }
+ }
+ val animationEnd = async {
+ awaitCondition { isAnimating }
+ awaitCondition { !isAnimating }
+ }
+ joinAll(gesture, animationEnd)
+ }
+ }
+ ) {
+ featureFloat(BrightnessSliderMotionTestKeys.ActiveIconAlpha)
+ featureFloat(BrightnessSliderMotionTestKeys.InactiveIconAlpha)
+ },
+ )
+ assertThat(motion).timeSeriesMatchesGolden("brightnessSlider_iconAlphaChanges")
+ }
+ }
+
+ private companion object {
+
+ val MotionControlScope.isAnimating: Boolean
+ get() = motionTestValueOfNode(BrightnessSliderMotionTestKeys.AnimatingIcon)
+
+ fun TimeSeriesCaptureScope<SemanticsNodeInteractionsProvider>.featureFloat(
+ motionTestValueKey: MotionTestValueKey<Float>
+ ) {
+ feature(
+ motionTestValueKey = motionTestValueKey,
+ capture =
+ FeatureCapture(motionTestValueKey.semanticsPropertyKey.name) {
+ it.asDataPoint()
+ },
+ )
+ }
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/graphics/ImageLoaderContentProviderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/graphics/ImageLoaderContentProviderTest.kt
index 8d9fa6ad6e08..e50035d0067e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/graphics/ImageLoaderContentProviderTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/graphics/ImageLoaderContentProviderTest.kt
@@ -41,7 +41,6 @@ const val AUTHORITY = "exception.provider.authority"
val TEST_URI = Uri.Builder().scheme("content").authority(AUTHORITY).path("path").build()
@SmallTest
-@kotlinx.coroutines.ExperimentalCoroutinesApi
@RunWith(AndroidJUnit4::class)
class ImageLoaderContentProviderTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/graphics/ImageLoaderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/graphics/ImageLoaderTest.kt
index 76c3349c25ba..de70bca7e96c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/graphics/ImageLoaderTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/graphics/ImageLoaderTest.kt
@@ -29,7 +29,6 @@ import org.junit.Test
import org.junit.runner.RunWith
@SmallTest
-@kotlinx.coroutines.ExperimentalCoroutinesApi
@RunWith(AndroidJUnit4::class)
class ImageLoaderTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/CustomizationProviderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/CustomizationProviderTest.kt
index a3c3d2cdbb43..a6cf5e010f91 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/CustomizationProviderTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/CustomizationProviderTest.kt
@@ -34,7 +34,6 @@ import com.android.keyguard.logging.KeyguardQuickAffordancesLogger
import com.android.systemui.SystemUIAppComponentFactoryBase
import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.DialogTransitionAnimator
-import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
import com.android.systemui.dock.DockManagerFake
import com.android.systemui.flags.FakeFeatureFlags
import com.android.systemui.flags.Flags
@@ -70,7 +69,6 @@ import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -84,7 +82,6 @@ import org.mockito.Mock
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidTestingRunner::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
@@ -134,7 +131,6 @@ class CustomizationProviderTest : SysuiTestCase() {
.thenReturn(FakeSharedPreferences())
},
userTracker = userTracker,
- communalSettingsInteractor = kosmos.communalSettingsInteractor,
broadcastDispatcher = fakeBroadcastDispatcher,
)
val remoteUserSelectionManager =
@@ -206,7 +202,6 @@ class CustomizationProviderTest : SysuiTestCase() {
backgroundDispatcher = testDispatcher,
appContext = mContext,
accessibilityManager = mock(),
- communalSettingsInteractor = kosmos.communalSettingsInteractor,
sceneInteractor = { kosmos.sceneInteractor },
)
underTest.previewManager =
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java
index 38acd23d282c..e8054c07eac8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java
@@ -206,6 +206,7 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
private @Mock ShadeInteractor mShadeInteractor;
private @Mock ShadeWindowLogger mShadeWindowLogger;
private @Mock SelectedUserInteractor mSelectedUserInteractor;
+ private @Mock UserTracker.Callback mUserTrackerCallback;
private @Mock KeyguardInteractor mKeyguardInteractor;
private @Mock KeyguardTransitionBootInteractor mKeyguardTransitionBootInteractor;
private @Captor ArgumentCaptor<KeyguardStateController.Callback>
@@ -280,7 +281,7 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
() -> mShadeInteractor,
mShadeWindowLogger,
() -> mSelectedUserInteractor,
- mUserTracker,
+ mock(UserTracker.class),
mKosmos.getNotificationShadeWindowModel(),
mSecureSettings,
mKosmos::getCommunalInteractor,
@@ -318,7 +319,7 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
} catch (Exception e) {
// Just so we don't have to add the exception signature to every test.
- fail();
+ fail(e.getMessage());
}
}
@@ -330,18 +331,156 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
/* First test the default behavior: handleUserSwitching() is not invoked */
when(mUserTracker.isUserSwitching()).thenReturn(false);
- mViewMediator.mUpdateCallback = mock(KeyguardUpdateMonitorCallback.class);
mViewMediator.onSystemReady();
TestableLooper.get(this).processAllMessages();
- verify(mViewMediator.mUpdateCallback, never()).onUserSwitching(userId);
+ verify(mUserTrackerCallback, never()).onUserChanging(eq(userId), eq(mContext),
+ any(Runnable.class));
/* Next test user switching is already in progress when started */
when(mUserTracker.isUserSwitching()).thenReturn(true);
mViewMediator.onSystemReady();
TestableLooper.get(this).processAllMessages();
- verify(mViewMediator.mUpdateCallback).onUserSwitching(userId);
+ verify(mUserTrackerCallback).onUserChanging(eq(userId), eq(mContext),
+ any(Runnable.class));
+ }
+
+ @Test
+ @TestableLooper.RunWithLooper(setAsMainLooper = true)
+ public void testGoingAwayFollowedByBeforeUserSwitchDoesNotHideKeyguard() {
+ setCurrentUser(/* userId= */1099, /* isSecure= */false);
+
+ // Setup keyguard
+ mViewMediator.onSystemReady();
+ processAllMessagesAndBgExecutorMessages();
+ mViewMediator.setShowingLocked(true, "");
+
+ // Request keyguard going away
+ when(mKeyguardStateController.isKeyguardGoingAway()).thenReturn(true);
+ mViewMediator.mKeyguardGoingAwayRunnable.run();
+
+ // After the request, begin a switch to a new secure user
+ int nextUserId = 500;
+ setCurrentUser(nextUserId, /* isSecure= */true);
+ Runnable result = mock(Runnable.class);
+ mViewMediator.handleBeforeUserSwitching(nextUserId, result);
+ processAllMessagesAndBgExecutorMessages();
+ verify(result).run();
+
+ // After that request has begun, have WM tell us to exit keyguard
+ RemoteAnimationTarget[] apps = new RemoteAnimationTarget[]{
+ mock(RemoteAnimationTarget.class)
+ };
+ RemoteAnimationTarget[] wallpapers = new RemoteAnimationTarget[]{
+ mock(RemoteAnimationTarget.class)
+ };
+ IRemoteAnimationFinishedCallback callback = mock(IRemoteAnimationFinishedCallback.class);
+ mViewMediator.startKeyguardExitAnimation(TRANSIT_OLD_KEYGUARD_GOING_AWAY, apps, wallpapers,
+ null, callback);
+ processAllMessagesAndBgExecutorMessages();
+
+ // The call to exit should be rejected, and keyguard should still be visible
+ verify(mKeyguardUnlockAnimationController, never()).notifyStartSurfaceBehindRemoteAnimation(
+ any(), any(), any(), anyLong(), anyBoolean());
+ try {
+ assertATMSLockScreenShowing(true);
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+ assertTrue(mViewMediator.isShowingAndNotOccluded());
+ }
+
+ @Test
+ @TestableLooper.RunWithLooper(setAsMainLooper = true)
+ public void testUserSwitchToSecureUserShowsBouncer() {
+ setCurrentUser(/* userId= */1099, /* isSecure= */true);
+
+ // Setup keyguard
+ mViewMediator.onSystemReady();
+ processAllMessagesAndBgExecutorMessages();
+ mViewMediator.setShowingLocked(true, "");
+
+ // After the request, begin a switch to a new secure user
+ int nextUserId = 500;
+ setCurrentUser(nextUserId, /* isSecure= */true);
+
+ Runnable beforeResult = mock(Runnable.class);
+ mViewMediator.handleBeforeUserSwitching(nextUserId, beforeResult);
+ processAllMessagesAndBgExecutorMessages();
+ verify(beforeResult).run();
+
+ // Dismiss should not be called while user switch is in progress
+ Runnable onSwitchResult = mock(Runnable.class);
+ mViewMediator.handleUserSwitching(nextUserId, onSwitchResult);
+ processAllMessagesAndBgExecutorMessages();
+ verify(onSwitchResult).run();
+ verify(mStatusBarKeyguardViewManager, never()).dismissAndCollapse();
+
+ // The attempt to dismiss only comes on user switch complete, which will trigger a call to
+ // show the bouncer in StatusBarKeyguardViewManager
+ mViewMediator.handleUserSwitchComplete(nextUserId);
+ TestableLooper.get(this).moveTimeForward(600);
+ processAllMessagesAndBgExecutorMessages();
+
+ verify(mStatusBarKeyguardViewManager).dismissAndCollapse();
+ }
+
+ @Test
+ @TestableLooper.RunWithLooper(setAsMainLooper = true)
+ public void testUserSwitchToInsecureUserDismissesKeyguard() {
+ int userId = 1099;
+ when(mUserTracker.getUserId()).thenReturn(userId);
+
+ // Setup keyguard
+ mViewMediator.onSystemReady();
+ processAllMessagesAndBgExecutorMessages();
+ mViewMediator.setShowingLocked(true, "");
+
+ // After the request, begin a switch to an insecure user
+ int nextUserId = 500;
+ when(mLockPatternUtils.isSecure(nextUserId)).thenReturn(false);
+
+ Runnable beforeResult = mock(Runnable.class);
+ mViewMediator.handleBeforeUserSwitching(nextUserId, beforeResult);
+ processAllMessagesAndBgExecutorMessages();
+ verify(beforeResult).run();
+
+ // The call to dismiss comes during the user switch
+ Runnable onSwitchResult = mock(Runnable.class);
+ mViewMediator.handleUserSwitching(nextUserId, onSwitchResult);
+ processAllMessagesAndBgExecutorMessages();
+ verify(onSwitchResult).run();
+
+ verify(mStatusBarKeyguardViewManager).dismissAndCollapse();
+ }
+
+ @Test
+ @TestableLooper.RunWithLooper(setAsMainLooper = true)
+ public void testUserSwitchToSecureUserWhileKeyguardNotVisibleShowsKeyguard() {
+ setCurrentUser(/* userId= */1099, /* isSecure= */true);
+
+ // Setup keyguard as not visible
+ mViewMediator.onSystemReady();
+ processAllMessagesAndBgExecutorMessages();
+ mViewMediator.setShowingLocked(false, "");
+ processAllMessagesAndBgExecutorMessages();
+
+ // Begin a switch to a new secure user
+ int nextUserId = 500;
+ setCurrentUser(nextUserId, /* isSecure= */true);
+
+ Runnable beforeResult = mock(Runnable.class);
+ mViewMediator.handleBeforeUserSwitching(nextUserId, beforeResult);
+ processAllMessagesAndBgExecutorMessages();
+ verify(beforeResult).run();
+
+ try {
+ assertATMSLockScreenShowing(true);
+ } catch (Exception e) {
+ fail();
+ }
+ assertTrue(mViewMediator.isShowingAndNotOccluded());
}
@Test
@@ -1105,7 +1244,7 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
processAllMessagesAndBgExecutorMessages();
verify(mStatusBarKeyguardViewManager, never()).reset(anyBoolean());
- assertATMSAndKeyguardViewMediatorStatesMatch();
+
}
@Test
@@ -1149,6 +1288,7 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
IRemoteAnimationFinishedCallback callback = mock(IRemoteAnimationFinishedCallback.class);
when(mKeyguardStateController.isKeyguardGoingAway()).thenReturn(true);
+ mViewMediator.mKeyguardGoingAwayRunnable.run();
mViewMediator.startKeyguardExitAnimation(TRANSIT_OLD_KEYGUARD_GOING_AWAY, apps, wallpapers,
null, callback);
processAllMessagesAndBgExecutorMessages();
@@ -1203,13 +1343,6 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
// The captor will have the most recent setLockScreenShown call's value.
assertEquals(showing, showingCaptor.getValue());
-
- // We're now just after the last setLockScreenShown call. If we expect the lockscreen to be
- // showing, ensure that we didn't subsequently ask for it to go away.
- if (showing) {
- orderedSetLockScreenShownCalls.verify(mActivityTaskManagerService, never())
- .keyguardGoingAway(anyInt());
- }
}
/**
@@ -1369,7 +1502,9 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
mSelectedUserInteractor,
mKeyguardInteractor,
mKeyguardTransitionBootInteractor,
+ mKosmos::getCommunalSceneInteractor,
mock(WindowManagerOcclusionManager.class));
+ mViewMediator.mUserChangedCallback = mUserTrackerCallback;
mViewMediator.start();
mViewMediator.registerCentralSurfaces(mCentralSurfaces, null, null, null, null);
@@ -1383,4 +1518,10 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
private void captureKeyguardUpdateMonitorCallback() {
verify(mUpdateMonitor).registerCallback(mKeyguardUpdateMonitorCallbackCaptor.capture());
}
+
+ private void setCurrentUser(int userId, boolean isSecure) {
+ when(mUserTracker.getUserId()).thenReturn(userId);
+ when(mSelectedUserInteractor.getSelectedUserId()).thenReturn(userId);
+ when(mLockPatternUtils.isSecure(userId)).thenReturn(isSecure);
+ }
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTestKt.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTestKt.kt
new file mode 100644
index 000000000000..86f7966d4ada
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTestKt.kt
@@ -0,0 +1,177 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard
+
+import android.app.IActivityTaskManager
+import android.internal.statusbar.statusBarService
+import android.os.Bundle
+import android.os.PowerManager
+import android.os.powerManager
+import android.testing.AndroidTestingRunner
+import android.testing.TestableLooper
+import android.testing.TestableLooper.RunWithLooper
+import androidx.test.filters.SmallTest
+import com.android.internal.logging.uiEventLogger
+import com.android.internal.widget.lockPatternUtils
+import com.android.keyguard.KeyguardUpdateMonitor
+import com.android.keyguard.keyguardUnlockAnimationController
+import com.android.keyguard.mediator.ScreenOnCoordinator
+import com.android.keyguard.trustManager
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.animation.activityTransitionAnimator
+import com.android.systemui.broadcast.broadcastDispatcher
+import com.android.systemui.classifier.falsingCollector
+import com.android.systemui.communal.data.repository.communalSceneRepository
+import com.android.systemui.communal.domain.interactor.communalSceneInteractor
+import com.android.systemui.communal.shared.model.CommunalScenes
+import com.android.systemui.communal.ui.viewmodel.communalTransitionViewModel
+import com.android.systemui.concurrency.fakeExecutor
+import com.android.systemui.dreams.DreamOverlayStateController
+import com.android.systemui.dreams.ui.viewmodel.dreamViewModel
+import com.android.systemui.dump.dumpManager
+import com.android.systemui.flags.featureFlagsClassic
+import com.android.systemui.flags.systemPropertiesHelper
+import com.android.systemui.jank.interactionJankMonitor
+import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
+import com.android.systemui.keyguard.domain.interactor.keyguardTransitionBootInteractor
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.backgroundScope
+import com.android.systemui.kosmos.runTest
+import com.android.systemui.kosmos.testDispatcher
+import com.android.systemui.kosmos.useUnconfinedTestDispatcher
+import com.android.systemui.log.sessionTracker
+import com.android.systemui.navigationbar.navigationModeController
+import com.android.systemui.plugins.statusbar.statusBarStateController
+import com.android.systemui.process.processWrapper
+import com.android.systemui.settings.userTracker
+import com.android.systemui.shade.shadeController
+import com.android.systemui.statusbar.notificationShadeDepthController
+import com.android.systemui.statusbar.notificationShadeWindowController
+import com.android.systemui.statusbar.phone.dozeParameters
+import com.android.systemui.statusbar.phone.screenOffAnimationController
+import com.android.systemui.statusbar.phone.scrimController
+import com.android.systemui.statusbar.phone.statusBarKeyguardViewManager
+import com.android.systemui.statusbar.policy.keyguardStateController
+import com.android.systemui.statusbar.policy.userSwitcherController
+import com.android.systemui.testKosmos
+import com.android.systemui.user.domain.interactor.selectedUserInteractor
+import com.android.systemui.util.DeviceConfigProxy
+import com.android.systemui.util.kotlin.JavaAdapter
+import com.android.systemui.util.settings.fakeSettings
+import com.android.systemui.util.time.systemClock
+import com.android.systemui.wallpapers.data.repository.wallpaperRepository
+import com.android.wm.shell.keyguard.KeyguardTransitions
+import com.google.common.truth.Truth.assertThat
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.ArgumentMatchers.any
+import org.mockito.ArgumentMatchers.anyInt
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+
+/** Kotlin version of KeyguardViewMediatorTest to allow for coroutine testing. */
+@SmallTest
+@RunWithLooper(setAsMainLooper = true)
+@RunWith(AndroidTestingRunner::class)
+class KeyguardViewMediatorTestKt : SysuiTestCase() {
+ private val kosmos =
+ testKosmos().useUnconfinedTestDispatcher().also {
+ it.powerManager =
+ mock<PowerManager> {
+ on { newWakeLock(anyInt(), any()) } doReturn mock<PowerManager.WakeLock>()
+ }
+ }
+
+ private lateinit var testableLooper: TestableLooper
+
+ private val Kosmos.underTest by
+ Kosmos.Fixture {
+ KeyguardViewMediator(
+ mContext,
+ uiEventLogger,
+ sessionTracker,
+ userTracker,
+ falsingCollector,
+ lockPatternUtils,
+ broadcastDispatcher,
+ { statusBarKeyguardViewManager },
+ dismissCallbackRegistry,
+ mock<KeyguardUpdateMonitor>(),
+ dumpManager,
+ fakeExecutor,
+ powerManager,
+ trustManager,
+ userSwitcherController,
+ DeviceConfigProxy(),
+ navigationModeController,
+ keyguardDisplayManager,
+ dozeParameters,
+ statusBarStateController,
+ keyguardStateController,
+ { keyguardUnlockAnimationController },
+ screenOffAnimationController,
+ { notificationShadeDepthController },
+ mock<ScreenOnCoordinator>(),
+ mock<KeyguardTransitions>(),
+ interactionJankMonitor,
+ mock<DreamOverlayStateController>(),
+ JavaAdapter(backgroundScope),
+ wallpaperRepository,
+ { shadeController },
+ { notificationShadeWindowController },
+ { activityTransitionAnimator },
+ { scrimController },
+ mock<IActivityTaskManager>(),
+ statusBarService,
+ featureFlagsClassic,
+ fakeSettings,
+ fakeSettings,
+ systemClock,
+ processWrapper,
+ testDispatcher,
+ { dreamViewModel },
+ { communalTransitionViewModel },
+ systemPropertiesHelper,
+ { mock<WindowManagerLockscreenVisibilityManager>() },
+ selectedUserInteractor,
+ keyguardInteractor,
+ keyguardTransitionBootInteractor,
+ { communalSceneInteractor },
+ mock<WindowManagerOcclusionManager>(),
+ )
+ }
+
+ @Before
+ fun setUp() {
+ testableLooper = TestableLooper.get(this)
+ }
+
+ @Test
+ fun doKeyguardTimeout_changesCommunalScene() =
+ kosmos.runTest {
+ // doKeyguardTimeout message received.
+ val timeoutOptions = Bundle()
+ timeoutOptions.putBoolean(KeyguardViewMediator.EXTRA_TRIGGER_HUB, true)
+ underTest.doKeyguardTimeout(timeoutOptions)
+ testableLooper.processAllMessages()
+
+ // Hub scene is triggered.
+ assertThat(communalSceneRepository.currentScene.value)
+ .isEqualTo(CommunalScenes.Communal)
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepositoryTest.kt
index 77c40a1e8eef..f14a9f5a1885 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepositoryTest.kt
@@ -37,6 +37,7 @@ import com.android.systemui.keyguard.shared.model.TransitionInfo
import com.android.systemui.keyguard.shared.model.TransitionModeOnCanceled
import com.android.systemui.keyguard.shared.model.TransitionState
import com.android.systemui.keyguard.shared.model.TransitionStep
+import com.android.systemui.keyguard.shared.transition.keyguardTransitionAnimationCallback
import com.android.systemui.keyguard.util.FrameCallbackProvider
import com.android.systemui.keyguard.util.KeyguardTransitionRunner
import com.android.systemui.kosmos.testDispatcher
@@ -81,7 +82,11 @@ class KeyguardTransitionRepositoryTest : SysuiTestCase() {
@Before
fun setUp() {
- underTest = KeyguardTransitionRepositoryImpl(Dispatchers.Main)
+ underTest =
+ KeyguardTransitionRepositoryImpl(
+ Dispatchers.Main,
+ kosmos.keyguardTransitionAnimationCallback,
+ )
runBlocking {
callbackProvider = FrameCallbackProvider(testScope.backgroundScope)
withContext(Dispatchers.Main) {
@@ -411,7 +416,11 @@ class KeyguardTransitionRepositoryTest : SysuiTestCase() {
@Test
fun simulateRaceConditionIsProcessedInOrder() =
testScope.runTest {
- val ktr = KeyguardTransitionRepositoryImpl(kosmos.testDispatcher)
+ val ktr =
+ KeyguardTransitionRepositoryImpl(
+ kosmos.testDispatcher,
+ kosmos.keyguardTransitionAnimationCallback,
+ )
val steps by collectValues(ktr.transitions.dropWhile { step -> step.from == OFF })
// Add a delay to the first transition in order to attempt to have the second transition
@@ -448,7 +457,11 @@ class KeyguardTransitionRepositoryTest : SysuiTestCase() {
@Test
fun simulateRaceConditionIsProcessedInOrderUsingUpdateTransition() =
testScope.runTest {
- val ktr = KeyguardTransitionRepositoryImpl(kosmos.testDispatcher)
+ val ktr =
+ KeyguardTransitionRepositoryImpl(
+ kosmos.testDispatcher,
+ kosmos.keyguardTransitionAnimationCallback,
+ )
val steps by collectValues(ktr.transitions.dropWhile { step -> step.from == OFF })
// Begin a manual transition
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorParameterizedTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorParameterizedTest.kt
index ab691c630f97..0027a8bdf030 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorParameterizedTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorParameterizedTest.kt
@@ -29,7 +29,6 @@ import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.animation.Expandable
import com.android.systemui.common.shared.model.ContentDescription
import com.android.systemui.common.shared.model.Icon
-import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
import com.android.systemui.dock.DockManagerFake
import com.android.systemui.flags.DisableSceneContainer
import com.android.systemui.flags.FakeFeatureFlags
@@ -59,7 +58,6 @@ import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.settings.FakeSettings
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runTest
@@ -79,7 +77,6 @@ import platform.test.runner.parameterized.Parameter
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
@DisableSceneContainer
@@ -271,7 +268,6 @@ class KeyguardQuickAffordanceInteractorParameterizedTest : SysuiTestCase() {
.thenReturn(FakeSharedPreferences())
},
userTracker = userTracker,
- communalSettingsInteractor = kosmos.communalSettingsInteractor,
broadcastDispatcher = fakeBroadcastDispatcher,
)
val remoteUserSelectionManager =
@@ -321,7 +317,6 @@ class KeyguardQuickAffordanceInteractorParameterizedTest : SysuiTestCase() {
backgroundDispatcher = testDispatcher,
appContext = mContext,
accessibilityManager = mock(),
- communalSettingsInteractor = kosmos.communalSettingsInteractor,
sceneInteractor = { kosmos.sceneInteractor },
)
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorSceneContainerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorSceneContainerTest.kt
index caf08efc4b32..b274f1c2c6df 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorSceneContainerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorSceneContainerTest.kt
@@ -30,7 +30,6 @@ import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.animation.Expandable
import com.android.systemui.common.shared.model.ContentDescription
import com.android.systemui.common.shared.model.Icon
-import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
import com.android.systemui.dock.DockManagerFake
import com.android.systemui.flags.EnableSceneContainer
import com.android.systemui.flags.FakeFeatureFlags
@@ -60,7 +59,6 @@ import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.settings.FakeSettings
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runTest
@@ -79,7 +77,6 @@ import platform.test.runner.parameterized.Parameter
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@OptIn(ExperimentalCoroutinesApi::class)
@FlakyTest(
bugId = 292574995,
detail = "on certain architectures all permutations with startActivity=true is causing failures",
@@ -274,7 +271,6 @@ class KeyguardQuickAffordanceInteractorSceneContainerTest : SysuiTestCase() {
.thenReturn(FakeSharedPreferences())
},
userTracker = userTracker,
- communalSettingsInteractor = kosmos.communalSettingsInteractor,
broadcastDispatcher = fakeBroadcastDispatcher,
)
val remoteUserSelectionManager =
@@ -326,7 +322,6 @@ class KeyguardQuickAffordanceInteractorSceneContainerTest : SysuiTestCase() {
backgroundDispatcher = testDispatcher,
appContext = mContext,
accessibilityManager = mock(),
- communalSettingsInteractor = kosmos.communalSettingsInteractor,
sceneInteractor = { kosmos.sceneInteractor },
)
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultDeviceEntrySectionTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultDeviceEntrySectionTest.kt
index 418972055324..df24bff43c08 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultDeviceEntrySectionTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultDeviceEntrySectionTest.kt
@@ -38,7 +38,6 @@ import com.android.systemui.shade.NotificationPanelView
import com.android.systemui.statusbar.VibratorHelper
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.TestScope
import org.junit.Before
@@ -49,7 +48,6 @@ import org.mockito.Mock
import org.mockito.Mockito.mock
import org.mockito.MockitoAnnotations
-@ExperimentalCoroutinesApi
@RunWith(AndroidJUnit4::class)
@SmallTest
class DefaultDeviceEntrySectionTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardQuickAffordancesCombinedViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardQuickAffordancesCombinedViewModelTest.kt
index 051aba3d593f..62c82752b4b8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardQuickAffordancesCombinedViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardQuickAffordancesCombinedViewModelTest.kt
@@ -29,7 +29,6 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.animation.Expandable
import com.android.systemui.common.shared.model.Icon
-import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.dock.DockManagerFake
import com.android.systemui.flags.Flags
@@ -77,7 +76,6 @@ import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth
import kotlin.math.min
import kotlin.test.assertEquals
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.map
@@ -90,7 +88,6 @@ import org.mockito.Mock
import org.mockito.Mockito
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class KeyguardQuickAffordancesCombinedViewModelTest : SysuiTestCase() {
@@ -214,7 +211,6 @@ class KeyguardQuickAffordancesCombinedViewModelTest : SysuiTestCase() {
.thenReturn(FakeSharedPreferences())
},
userTracker = userTracker,
- communalSettingsInteractor = kosmos.communalSettingsInteractor,
broadcastDispatcher = fakeBroadcastDispatcher,
)
val remoteUserSelectionManager =
@@ -295,7 +291,6 @@ class KeyguardQuickAffordancesCombinedViewModelTest : SysuiTestCase() {
backgroundDispatcher = kosmos.testDispatcher,
appContext = mContext,
accessibilityManager = mock(),
- communalSettingsInteractor = kosmos.communalSettingsInteractor,
sceneInteractor = { kosmos.sceneInteractor },
),
keyguardInteractor = keyguardInteractor,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/lifecycle/RepeatWhenAttachedTest.kt b/packages/SystemUI/tests/src/com/android/systemui/lifecycle/RepeatWhenAttachedTest.kt
index e3aeaa85873d..fe5acb5668ac 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/lifecycle/RepeatWhenAttachedTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/lifecycle/RepeatWhenAttachedTest.kt
@@ -28,7 +28,6 @@ import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.DisposableHandle
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
import kotlinx.coroutines.awaitCancellation
import kotlinx.coroutines.launch
@@ -52,7 +51,6 @@ import org.mockito.junit.MockitoJUnit
import org.mockito.kotlin.KArgumentCaptor
import org.mockito.kotlin.argumentCaptor
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(JUnit4::class)
class RepeatWhenAttachedTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/lowlightclock/AmbientLightModeMonitorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/lowlightclock/AmbientLightModeMonitorTest.kt
index 43ee388e44a7..8a2dc15d7545 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/lowlightclock/AmbientLightModeMonitorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/lowlightclock/AmbientLightModeMonitorTest.kt
@@ -23,6 +23,7 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.util.sensors.AsyncSensorManager
import java.util.Optional
+import javax.inject.Provider
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -50,7 +51,11 @@ class AmbientLightModeMonitorTest : SysuiTestCase() {
MockitoAnnotations.initMocks(this)
ambientLightModeMonitor =
- AmbientLightModeMonitor(Optional.of(algorithm), sensorManager, Optional.of(sensor))
+ AmbientLightModeMonitor(
+ Optional.of(algorithm),
+ sensorManager,
+ Optional.of(Provider { sensor }),
+ )
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImplTest.kt
index 676d8fa06d82..122af0639030 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImplTest.kt
@@ -73,7 +73,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceUntilIdle
import kotlinx.coroutines.test.runCurrent
@@ -117,7 +116,6 @@ private const val SESSION_EMPTY_TITLE = ""
private const val USER_ID = 0
private val DISMISS_INTENT = Intent().apply { action = "dismiss" }
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWithLooper(setAsMainLooper = true)
@RunWith(ParameterizedAndroidJunit4::class)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataFilterImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataFilterImplTest.kt
index 811d2e2b2b06..b731c4f18c7f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataFilterImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataFilterImplTest.kt
@@ -49,7 +49,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import java.util.concurrent.Executor
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -81,7 +80,6 @@ private const val SMARTSPACE_KEY = "SMARTSPACE_KEY"
private const val SMARTSPACE_PACKAGE = "SMARTSPACE_PKG"
private val SMARTSPACE_INSTANCE_ID = InstanceId.fakeInstanceId(456)!!
-@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessorTest.kt
index 496b31990b9d..f9e8cbfc491c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessorTest.kt
@@ -80,7 +80,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceUntilIdle
import kotlinx.coroutines.test.runCurrent
@@ -123,7 +122,6 @@ private const val SESSION_EMPTY_TITLE = ""
private const val USER_ID = 0
private val DISMISS_INTENT = Intent().apply { action = "dismiss" }
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWithLooper(setAsMainLooper = true)
@RunWith(ParameterizedAndroidJunit4::class)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaCarouselControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaCarouselControllerTest.kt
index 6c8a46f19f2b..a2bd5ec28f08 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaCarouselControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaCarouselControllerTest.kt
@@ -79,7 +79,6 @@ import java.util.Locale
import javax.inject.Provider
import junit.framework.Assert.assertEquals
import junit.framework.Assert.assertTrue
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -112,7 +111,6 @@ private val SMARTSPACE_KEY = "smartspace"
private const val PAUSED_LOCAL = "paused local"
private const val PLAYING_LOCAL = "playing local"
-@ExperimentalCoroutinesApi
@SmallTest
@TestableLooper.RunWithLooper(setAsMainLooper = true)
@RunWith(ParameterizedAndroidJunit4::class)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt
index 072caa74df20..6ca4ae2d2259 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt
@@ -61,7 +61,6 @@ import com.android.systemui.util.mockito.nullable
import com.android.systemui.util.settings.FakeSettings
import com.android.systemui.utils.os.FakeHandler
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -86,7 +85,6 @@ import org.mockito.kotlin.anyOrNull
import org.mockito.kotlin.atLeastOnce
import org.mockito.kotlin.lastValue
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
@@ -458,7 +456,6 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
assertThat(mediaHierarchyManager.isCurrentlyInGuidedTransformation()).isTrue()
}
- @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun isCurrentlyInGuidedTransformation_hostsVisible_expandImmediateEnabled_returnsFalse() =
testScope.runTest {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaSwitchingControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaSwitchingControllerTest.java
index 86063acbf2e1..86094d1a0fef 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaSwitchingControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaSwitchingControllerTest.java
@@ -891,6 +891,13 @@ public class MediaSwitchingControllerTest extends SysuiTestCase {
}
@Test
+ public void getTransferableMediaDevice_triggersFromLocalMediaManager() {
+ mMediaSwitchingController.getTransferableMediaDevices();
+
+ verify(mLocalMediaManager).getTransferableMediaDevices();
+ }
+
+ @Test
public void getDeselectableMediaDevice_triggersFromLocalMediaManager() {
mMediaSwitchingController.getDeselectableMediaDevice();
@@ -1512,6 +1519,60 @@ public class MediaSwitchingControllerTest extends SysuiTestCase {
assertThat(getNumberOfConnectDeviceButtons()).isEqualTo(1);
}
+ @EnableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_SESSION_GROUPING)
+ @Test
+ public void selectedDevicesAddedInSameOrder() {
+ when(mLocalMediaManager.isPreferenceRouteListingExist()).thenReturn(true);
+ doReturn(mMediaDevices)
+ .when(mLocalMediaManager)
+ .getSelectedMediaDevice();
+ mMediaSwitchingController.start(mCb);
+ reset(mCb);
+ mMediaSwitchingController.getMediaItemList().clear();
+
+ mMediaSwitchingController.onDeviceListUpdate(mMediaDevices);
+
+ List<MediaItem> items = mMediaSwitchingController.getMediaItemList();
+ assertThat(items.get(0).getMediaDevice().get()).isEqualTo(mMediaDevice1);
+ assertThat(items.get(1).getMediaDevice().get()).isEqualTo(mMediaDevice2);
+ }
+
+ @DisableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_SESSION_GROUPING)
+ @Test
+ public void selectedDevicesAddedInReverseOrder() {
+ when(mLocalMediaManager.isPreferenceRouteListingExist()).thenReturn(true);
+ doReturn(mMediaDevices)
+ .when(mLocalMediaManager)
+ .getSelectedMediaDevice();
+ mMediaSwitchingController.start(mCb);
+ reset(mCb);
+ mMediaSwitchingController.getMediaItemList().clear();
+
+ mMediaSwitchingController.onDeviceListUpdate(mMediaDevices);
+
+ List<MediaItem> items = mMediaSwitchingController.getMediaItemList();
+ assertThat(items.get(0).getMediaDevice().get()).isEqualTo(mMediaDevice2);
+ assertThat(items.get(1).getMediaDevice().get()).isEqualTo(mMediaDevice1);
+ }
+
+ @EnableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_SESSION_GROUPING)
+ @Test
+ public void firstSelectedDeviceIsFirstDeviceInGroupIsTrue() {
+ when(mLocalMediaManager.isPreferenceRouteListingExist()).thenReturn(true);
+ doReturn(mMediaDevices)
+ .when(mLocalMediaManager)
+ .getSelectedMediaDevice();
+ mMediaSwitchingController.start(mCb);
+ reset(mCb);
+ mMediaSwitchingController.getMediaItemList().clear();
+
+ mMediaSwitchingController.onDeviceListUpdate(mMediaDevices);
+
+ List<MediaItem> items = mMediaSwitchingController.getMediaItemList();
+ assertThat(items.get(0).isFirstDeviceInGroup()).isTrue();
+ assertThat(items.get(1).isFirstDeviceInGroup()).isFalse();
+ }
+
private int getNumberOfConnectDeviceButtons() {
int numberOfConnectDeviceButtons = 0;
for (MediaItem item : mMediaSwitchingController.getMediaItemList()) {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskControllerTest.kt
index 7849ea5ab7ed..042eb871e3c9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskControllerTest.kt
@@ -70,7 +70,6 @@ import com.android.wm.shell.bubbles.Bubbles
import com.google.common.truth.Truth.assertThat
import java.util.Optional
import kotlin.test.assertNotNull
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runCurrent
@@ -90,7 +89,6 @@ import org.mockito.MockitoAnnotations
import org.mockito.kotlin.whenever
/** atest SystemUITests:NoteTaskControllerTest */
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
internal class NoteTaskControllerTest : SysuiTestCase() {
@@ -179,7 +177,7 @@ internal class NoteTaskControllerTest : SysuiTestCase() {
.apply { infoReference.set(expectedInfo) }
.onBubbleExpandChanged(
isExpanding = true,
- key = Bubble.getAppBubbleKeyForApp(expectedInfo.packageName, expectedInfo.user),
+ key = Bubble.getNoteBubbleKeyForApp(expectedInfo.packageName, expectedInfo.user),
)
verify(eventLogger).logNoteTaskOpened(expectedInfo)
@@ -194,7 +192,7 @@ internal class NoteTaskControllerTest : SysuiTestCase() {
.apply { infoReference.set(expectedInfo) }
.onBubbleExpandChanged(
isExpanding = false,
- key = Bubble.getAppBubbleKeyForApp(expectedInfo.packageName, expectedInfo.user),
+ key = Bubble.getNoteBubbleKeyForApp(expectedInfo.packageName, expectedInfo.user),
)
verify(eventLogger).logNoteTaskClosed(expectedInfo)
@@ -209,7 +207,7 @@ internal class NoteTaskControllerTest : SysuiTestCase() {
.apply { infoReference.set(expectedInfo) }
.onBubbleExpandChanged(
isExpanding = true,
- key = Bubble.getAppBubbleKeyForApp(expectedInfo.packageName, expectedInfo.user),
+ key = Bubble.getNoteBubbleKeyForApp(expectedInfo.packageName, expectedInfo.user),
)
verifyNoMoreInteractions(bubbles, keyguardManager, userManager, eventLogger)
@@ -223,14 +221,14 @@ internal class NoteTaskControllerTest : SysuiTestCase() {
.apply { infoReference.set(expectedInfo) }
.onBubbleExpandChanged(
isExpanding = false,
- key = Bubble.getAppBubbleKeyForApp(expectedInfo.packageName, expectedInfo.user),
+ key = Bubble.getNoteBubbleKeyForApp(expectedInfo.packageName, expectedInfo.user),
)
verifyNoMoreInteractions(bubbles, keyguardManager, userManager, eventLogger)
}
@Test
- fun onBubbleExpandChanged_notKeyAppBubble_shouldDoNothing() {
+ fun onBubbleExpandChanged_notKeyNoteBubble_shouldDoNothing() {
createNoteTaskController().onBubbleExpandChanged(isExpanding = true, key = "any other key")
verifyNoMoreInteractions(bubbles, keyguardManager, userManager, eventLogger)
@@ -241,7 +239,7 @@ internal class NoteTaskControllerTest : SysuiTestCase() {
createNoteTaskController(isEnabled = false)
.onBubbleExpandChanged(
isExpanding = true,
- key = Bubble.getAppBubbleKeyForApp(NOTE_TASK_INFO.packageName, NOTE_TASK_INFO.user),
+ key = Bubble.getNoteBubbleKeyForApp(NOTE_TASK_INFO.packageName, NOTE_TASK_INFO.user),
)
verifyNoMoreInteractions(bubbles, keyguardManager, userManager, eventLogger)
@@ -740,7 +738,7 @@ internal class NoteTaskControllerTest : SysuiTestCase() {
val intentCaptor = argumentCaptor<Intent>()
val iconCaptor = argumentCaptor<Icon>()
verify(bubbles)
- .showOrHideAppBubble(capture(intentCaptor), eq(userHandle), capture(iconCaptor))
+ .showOrHideNoteBubble(capture(intentCaptor), eq(userHandle), capture(iconCaptor))
assertThat(intentCaptor.value).run {
hasAction(ACTION_CREATE_NOTE)
hasPackage(NOTE_TASK_PACKAGE_NAME)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskInitializerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskInitializerTest.kt
index 266cb51cc855..8a4f1ad13b78 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskInitializerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskInitializerTest.kt
@@ -47,7 +47,6 @@ import com.android.systemui.util.time.FakeSystemClock
import com.android.wm.shell.bubbles.Bubbles
import com.google.common.truth.Truth.assertThat
import java.util.Optional
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import org.junit.Before
import org.junit.Rule
import org.junit.Test
@@ -60,7 +59,7 @@ import org.mockito.Mockito.verifyNoMoreInteractions
import org.mockito.MockitoAnnotations.initMocks
/** atest SystemUITests:NoteTaskInitializerTest */
-@OptIn(ExperimentalCoroutinesApi::class, InternalNoteTaskApi::class)
+@OptIn(InternalNoteTaskApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
internal class NoteTaskInitializerTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/notetask/OWNERS b/packages/SystemUI/tests/src/com/android/systemui/notetask/OWNERS
index 0ec996be72de..9b4902a9e7b2 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/notetask/OWNERS
+++ b/packages/SystemUI/tests/src/com/android/systemui/notetask/OWNERS
@@ -6,5 +6,4 @@ madym@google.com
mgalhardo@google.com
petrcermak@google.com
stevenckng@google.com
-tkachenkoi@google.com
-vanjan@google.com \ No newline at end of file
+vanjan@google.com
diff --git a/packages/SystemUI/tests/src/com/android/systemui/notetask/quickaffordance/NoteTaskQuickAffordanceConfigTest.kt b/packages/SystemUI/tests/src/com/android/systemui/notetask/quickaffordance/NoteTaskQuickAffordanceConfigTest.kt
index b7fb759eb138..8d7de7e04a03 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/notetask/quickaffordance/NoteTaskQuickAffordanceConfigTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/notetask/quickaffordance/NoteTaskQuickAffordanceConfigTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.notetask.quickaffordance
import android.app.role.RoleManager
@@ -48,7 +46,6 @@ import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.runTest
import org.junit.After
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileServiceRequestControllerTestComposeOff.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileServiceRequestControllerTestComposeOff.kt
index 82e247714794..fbc6f84cb8fd 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileServiceRequestControllerTestComposeOff.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileServiceRequestControllerTestComposeOff.kt
@@ -29,10 +29,10 @@ import com.android.internal.logging.InstanceId
import com.android.internal.statusbar.IAddTileResultCallback
import com.android.systemui.InstanceIdSequenceFake
import com.android.systemui.SysuiTestCase
+import com.android.systemui.flags.DisableSceneContainer
import com.android.systemui.qs.QSHost
import com.android.systemui.qs.external.ui.dialog.tileRequestDialogComposeDelegateFactory
import com.android.systemui.qs.flags.QSComposeFragment
-import com.android.systemui.shade.shared.flag.DualShade
import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.statusbar.commandline.CommandRegistry
import com.android.systemui.testKosmos
@@ -57,7 +57,8 @@ import org.mockito.MockitoAnnotations
@SmallTest
@RunWith(AndroidJUnit4::class)
-@DisableFlags(value = [QSComposeFragment.FLAG_NAME, DualShade.FLAG_NAME])
+@DisableFlags(QSComposeFragment.FLAG_NAME)
+@DisableSceneContainer
class TileServiceRequestControllerTestComposeOff : SysuiTestCase() {
companion object {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/panels/ui/compose/DragAndDropTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/panels/ui/compose/DragAndDropTest.kt
index fc720b836f72..26cf4a261289 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/panels/ui/compose/DragAndDropTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/panels/ui/compose/DragAndDropTest.kt
@@ -68,6 +68,7 @@ class DragAndDropTest : SysuiTestCase() {
columns = 4,
largeTilesSpan = 4,
modifier = Modifier.fillMaxSize(),
+ onAddTile = {},
onRemoveTile = {},
onSetTiles = onSetTiles,
onResize = { _, _ -> },
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/panels/ui/compose/EditModeTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/panels/ui/compose/EditModeTest.kt
new file mode 100644
index 000000000000..4e8b0bcd374c
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/panels/ui/compose/EditModeTest.kt
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.qs.panels.ui.compose
+
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.semantics.SemanticsProperties
+import androidx.compose.ui.test.SemanticsMatcher
+import androidx.compose.ui.test.assert
+import androidx.compose.ui.test.filter
+import androidx.compose.ui.test.hasContentDescription
+import androidx.compose.ui.test.junit4.ComposeContentTestRule
+import androidx.compose.ui.test.junit4.createComposeRule
+import androidx.compose.ui.test.onChildren
+import androidx.compose.ui.test.onNodeWithContentDescription
+import androidx.compose.ui.test.onNodeWithTag
+import androidx.compose.ui.test.onNodeWithText
+import androidx.compose.ui.test.performClick
+import androidx.compose.ui.text.AnnotatedString
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.common.shared.model.ContentDescription
+import com.android.systemui.common.shared.model.Icon
+import com.android.systemui.qs.panels.shared.model.SizedTile
+import com.android.systemui.qs.panels.shared.model.SizedTileImpl
+import com.android.systemui.qs.panels.ui.compose.infinitegrid.DefaultEditTileGrid
+import com.android.systemui.qs.panels.ui.viewmodel.EditTileViewModel
+import com.android.systemui.qs.pipeline.shared.TileSpec
+import com.android.systemui.qs.shared.model.TileCategory
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class EditModeTest : SysuiTestCase() {
+ @get:Rule val composeRule = createComposeRule()
+
+ @Composable
+ private fun EditTileGridUnderTest() {
+ var tiles by remember { mutableStateOf(TestEditTiles) }
+ val (currentTiles, otherTiles) = tiles.partition { it.tile.isCurrent }
+ val listState = EditTileListState(currentTiles, columns = 4, largeTilesSpan = 2)
+ DefaultEditTileGrid(
+ listState = listState,
+ otherTiles = otherTiles,
+ columns = 4,
+ largeTilesSpan = 4,
+ modifier = Modifier.fillMaxSize(),
+ onAddTile = { tiles = tiles.add(it) },
+ onRemoveTile = { tiles = tiles.remove(it) },
+ onSetTiles = {},
+ onResize = { _, _ -> },
+ onStopEditing = {},
+ onReset = null,
+ )
+ }
+
+ @Test
+ fun clickAvailableTile_shouldAdd() {
+ composeRule.setContent { EditTileGridUnderTest() }
+ composeRule.waitForIdle()
+
+ composeRule.onNodeWithContentDescription("tileF").performClick() // Tap to add
+ composeRule.waitForIdle()
+
+ composeRule.assertCurrentTilesGridContainsExactly(
+ listOf("tileA", "tileB", "tileC", "tileD_large", "tileE", "tileF")
+ )
+ composeRule.assertAvailableTilesGridContainsExactly(listOf("tileG_large"))
+ }
+
+ @Test
+ fun clickRemoveTarget_shouldRemoveSelection() {
+ composeRule.setContent { EditTileGridUnderTest() }
+ composeRule.waitForIdle()
+
+ composeRule.onNodeWithContentDescription("tileA").performClick() // Selects
+ composeRule.onNodeWithText("Remove").performClick() // Removes
+
+ composeRule.waitForIdle()
+
+ composeRule.assertCurrentTilesGridContainsExactly(
+ listOf("tileB", "tileC", "tileD_large", "tileE")
+ )
+ composeRule.assertAvailableTilesGridContainsExactly(listOf("tileA", "tileF", "tileG_large"))
+ }
+
+ private fun ComposeContentTestRule.assertCurrentTilesGridContainsExactly(specs: List<String>) =
+ assertGridContainsExactly(CURRENT_TILES_GRID_TEST_TAG, specs)
+
+ private fun ComposeContentTestRule.assertAvailableTilesGridContainsExactly(
+ specs: List<String>
+ ) = assertGridContainsExactly(AVAILABLE_TILES_GRID_TEST_TAG, specs)
+
+ private fun ComposeContentTestRule.assertGridContainsExactly(
+ testTag: String,
+ specs: List<String>,
+ ) {
+ onNodeWithTag(testTag)
+ .onChildren()
+ .filter(SemanticsMatcher.keyIsDefined(SemanticsProperties.ContentDescription))
+ .apply {
+ fetchSemanticsNodes().forEachIndexed { index, _ ->
+ get(index).assert(hasContentDescription(specs[index]))
+ }
+ }
+ }
+
+ companion object {
+ private const val CURRENT_TILES_GRID_TEST_TAG = "CurrentTilesGrid"
+ private const val AVAILABLE_TILES_GRID_TEST_TAG = "AvailableTilesGrid"
+
+ private fun List<SizedTile<EditTileViewModel>>.add(
+ spec: TileSpec
+ ): List<SizedTile<EditTileViewModel>> {
+ return map {
+ if (it.tile.tileSpec == spec) {
+ createEditTile(it.tile.tileSpec.spec)
+ } else {
+ it
+ }
+ }
+ }
+
+ private fun List<SizedTile<EditTileViewModel>>.remove(
+ spec: TileSpec
+ ): List<SizedTile<EditTileViewModel>> {
+ return map {
+ if (it.tile.tileSpec == spec) {
+ createEditTile(it.tile.tileSpec.spec, isCurrent = false)
+ } else {
+ it
+ }
+ }
+ }
+
+ private fun createEditTile(
+ tileSpec: String,
+ isCurrent: Boolean = true,
+ ): SizedTile<EditTileViewModel> {
+ return SizedTileImpl(
+ EditTileViewModel(
+ tileSpec = TileSpec.create(tileSpec),
+ icon =
+ Icon.Resource(
+ android.R.drawable.star_on,
+ ContentDescription.Loaded(tileSpec),
+ ),
+ label = AnnotatedString(tileSpec),
+ appName = null,
+ isCurrent = isCurrent,
+ availableEditActions = emptySet(),
+ category = TileCategory.UNKNOWN,
+ ),
+ getWidth(tileSpec),
+ )
+ }
+
+ private fun getWidth(tileSpec: String): Int {
+ return if (tileSpec.endsWith("large")) {
+ 2
+ } else {
+ 1
+ }
+ }
+
+ private val TestEditTiles =
+ listOf(
+ createEditTile("tileA"),
+ createEditTile("tileB"),
+ createEditTile("tileC"),
+ createEditTile("tileD_large"),
+ createEditTile("tileE"),
+ createEditTile("tileF", isCurrent = false),
+ createEditTile("tileG_large", isCurrent = false),
+ )
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/panels/ui/compose/ResizingTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/panels/ui/compose/ResizingTest.kt
index f23553eda3b2..a0be02f1ef7e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/panels/ui/compose/ResizingTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/panels/ui/compose/ResizingTest.kt
@@ -65,6 +65,7 @@ class ResizingTest : SysuiTestCase() {
columns = 4,
largeTilesSpan = 4,
modifier = Modifier.fillMaxSize(),
+ onAddTile = {},
onRemoveTile = {},
onSetTiles = {},
onResize = onResize,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BluetoothTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BluetoothTileTest.kt
index 330b887b70a3..1305b0c4c499 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BluetoothTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BluetoothTileTest.kt
@@ -238,7 +238,8 @@ class BluetoothTileTest(flags: FlagsParameterization) : SysuiTestCase() {
tile.handleClick(null)
- verify(bluetoothTileDialogViewModel).showDialog(null)
+ verify(bluetoothTileDialogViewModel)
+ .showDetailsContent(/* expandable= */ null, /* view= */ null)
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DreamTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DreamTileTest.java
index 5f63b15916a3..3f607ffaea6d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DreamTileTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DreamTileTest.java
@@ -20,6 +20,8 @@ import static android.platform.test.flag.junit.FlagsParameterization.allCombinat
import static com.android.systemui.Flags.FLAG_QS_CUSTOM_TILE_CLICK_GUARANTEED_BUG_FIX;
+import static com.google.common.truth.Truth.assertThat;
+
import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.assertFalse;
import static junit.framework.TestCase.assertTrue;
@@ -59,7 +61,6 @@ import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.res.R;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.util.settings.FakeSettings;
-import com.android.systemui.util.settings.SecureSettings;
import org.junit.After;
import org.junit.Before;
@@ -69,11 +70,11 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
-import java.util.List;
-
import platform.test.runner.parameterized.ParameterizedAndroidJunit4;
import platform.test.runner.parameterized.Parameters;
+import java.util.List;
+
@RunWith(ParameterizedAndroidJunit4.class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
@SmallTest
@@ -107,7 +108,7 @@ public class DreamTileTest extends SysuiTestCase {
private DreamTile mTile;
- private SecureSettings mSecureSettings;
+ private FakeSettings mSecureSettings;
private static final ComponentName COLORS_DREAM_COMPONENT_NAME = new ComponentName(
"com.android.dreams", ".Colors");
@@ -279,6 +280,23 @@ public class DreamTileTest extends SysuiTestCase {
destroyTile(dockedTile);
}
+ @Test
+ public void testHandleUserSwitch() {
+ final DreamTile dockedTile = constructTileForTest(true, false);
+ dockedTile.handleSetListening(true);
+
+ final int oldUserId = mUserTracker.getUserId();
+ assertThat(dockedTile.mDreamSettingObserver.getCurrentUser()).isEqualTo(oldUserId);
+ assertThat(dockedTile.mEnabledSettingObserver.getCurrentUser()).isEqualTo(oldUserId);
+
+ final int newUserId = 1337;
+ dockedTile.handleUserSwitch(newUserId);
+ assertThat(dockedTile.mDreamSettingObserver.getCurrentUser()).isEqualTo(newUserId);
+ assertThat(dockedTile.mEnabledSettingObserver.getCurrentUser()).isEqualTo(newUserId);
+
+ destroyTile(dockedTile);
+ }
+
private void setScreensaverEnabled(boolean enabled) {
mSecureSettings.putIntForUser(Settings.Secure.SCREENSAVER_ENABLED, enabled ? 1 : 0,
DEFAULT_USER);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDetailsContentManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDetailsContentManagerTest.kt
index 50b8f37f8d25..c20a801cd5e3 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDetailsContentManagerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDetailsContentManagerTest.kt
@@ -63,7 +63,7 @@ import org.mockito.kotlin.whenever
@RunWith(AndroidJUnit4::class)
@RunWithLooper(setAsMainLooper = true)
@EnableSceneContainer
-@EnableFlags(Flags.FLAG_QS_TILE_DETAILED_VIEW, Flags.FLAG_DUAL_SHADE)
+@EnableFlags(Flags.FLAG_QS_TILE_DETAILED_VIEW)
@UiThreadTest
class InternetDetailsContentManagerTest : SysuiTestCase() {
private val kosmos = Kosmos()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacyTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacyTest.java
index 8c2bdabb2417..3d0a8f6cd236 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacyTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacyTest.java
@@ -15,6 +15,7 @@ import static org.mockito.Mockito.when;
import android.content.Intent;
import android.os.Handler;
+import android.platform.test.annotations.DisableFlags;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.testing.TestableLooper;
@@ -32,8 +33,10 @@ import androidx.test.filters.SmallTest;
import com.android.dx.mockito.inline.extended.ExtendedMockito;
import com.android.internal.logging.UiEventLogger;
import com.android.settingslib.wifi.WifiEnterpriseRestrictionUtils;
+import com.android.systemui.Flags;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.animation.DialogTransitionAnimator;
+import com.android.systemui.kosmos.KosmosJavaAdapter;
import com.android.systemui.res.R;
import com.android.systemui.shade.domain.interactor.FakeShadeDialogContextInteractor;
import com.android.systemui.statusbar.phone.SystemUIDialog;
@@ -57,6 +60,7 @@ import kotlinx.coroutines.CoroutineScope;
@SmallTest
@RunWith(AndroidJUnit4.class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
+@DisableFlags(Flags.FLAG_QS_TILE_DETAILED_VIEW)
@UiThreadTest
public class InternetDialogDelegateLegacyTest extends SysuiTestCase {
@@ -107,6 +111,7 @@ public class InternetDialogDelegateLegacyTest extends SysuiTestCase {
private TextView mAirplaneModeSummaryText;
private MockitoSession mMockitoSession;
+ private final KosmosJavaAdapter mKosmos = new KosmosJavaAdapter(this);
@Before
public void setUp() {
@@ -151,7 +156,8 @@ public class InternetDialogDelegateLegacyTest extends SysuiTestCase {
mBgExecutor,
mKeyguard,
mSystemUIDialogFactory,
- new FakeShadeDialogContextInteractor(mContext));
+ new FakeShadeDialogContextInteractor(mContext),
+ mKosmos.getShadeModeInteractor());
mInternetDialogDelegateLegacy.createDialog();
mInternetDialogDelegateLegacy.onCreate(mSystemUIDialog, null);
mInternetDialogDelegateLegacy.mAdapter = mInternetAdapter;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/reardisplay/RearDisplayCoreStartableTest.kt b/packages/SystemUI/tests/src/com/android/systemui/reardisplay/RearDisplayCoreStartableTest.kt
index c8faa81adffa..cf54df8565d3 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/reardisplay/RearDisplayCoreStartableTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/reardisplay/RearDisplayCoreStartableTest.kt
@@ -45,7 +45,6 @@ import org.mockito.kotlin.whenever
/** atest SystemUITests:com.android.systemui.reardisplay.RearDisplayCoreStartableTest */
@SmallTest
-@kotlinx.coroutines.ExperimentalCoroutinesApi
class RearDisplayCoreStartableTest : SysuiTestCase() {
private val kosmos = testKosmos().useUnconfinedTestDispatcher()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/reardisplay/RearDisplayInnerDialogDelegateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/reardisplay/RearDisplayInnerDialogDelegateTest.kt
index 60588802ffa9..fc7661666825 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/reardisplay/RearDisplayInnerDialogDelegateTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/reardisplay/RearDisplayInnerDialogDelegateTest.kt
@@ -17,21 +17,28 @@
package com.android.systemui.reardisplay
import android.testing.TestableLooper
-import android.view.View
+import android.widget.SeekBar
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
+import com.android.systemui.haptics.msdl.msdlPlayer
+import com.android.systemui.haptics.slider.HapticSliderPlugin
+import com.android.systemui.haptics.vibratorHelper
+import com.android.systemui.reardisplay.RearDisplayInnerDialogDelegate.SeekBarListener
import com.android.systemui.res.R
import com.android.systemui.statusbar.phone.systemUIDialogDotFactory
import com.android.systemui.testKosmos
+import com.android.systemui.util.time.systemClock
import junit.framework.Assert.assertFalse
import junit.framework.Assert.assertTrue
import org.junit.Test
import org.mockito.Mockito.verify
+import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
+import org.mockito.kotlin.never
/** atest SystemUITests:com.android.systemui.reardisplay.RearDisplayInnerDialogDelegateTest */
@SmallTest
-@TestableLooper.RunWithLooper
+@TestableLooper.RunWithLooper(setAsMainLooper = true)
class RearDisplayInnerDialogDelegateTest : SysuiTestCase() {
private val kosmos = testKosmos()
@@ -39,7 +46,13 @@ class RearDisplayInnerDialogDelegateTest : SysuiTestCase() {
@Test
fun testShowAndDismissDialog() {
val dialogDelegate =
- RearDisplayInnerDialogDelegate(kosmos.systemUIDialogDotFactory, mContext) {}
+ RearDisplayInnerDialogDelegate(
+ kosmos.systemUIDialogDotFactory,
+ mContext,
+ kosmos.vibratorHelper,
+ kosmos.msdlPlayer,
+ kosmos.systemClock,
+ ) {}
val dialog = dialogDelegate.createDialog()
dialog.show()
@@ -50,16 +63,59 @@ class RearDisplayInnerDialogDelegateTest : SysuiTestCase() {
}
@Test
- fun testCancel() {
+ fun testProgressSlidesToCompletion_callbackInvoked() {
val mockCallback = mock<Runnable>()
- RearDisplayInnerDialogDelegate(kosmos.systemUIDialogDotFactory, mContext) {
+ RearDisplayInnerDialogDelegate(
+ kosmos.systemUIDialogDotFactory,
+ mContext,
+ kosmos.vibratorHelper,
+ kosmos.msdlPlayer,
+ kosmos.systemClock,
+ ) {
mockCallback.run()
}
.createDialog()
.apply {
show()
- findViewById<View>(R.id.button_cancel).performClick()
+ val seekbar = findViewById<SeekBar>(R.id.seekbar)
+ seekbar.progress = 50
+ seekbar.progress = 100
verify(mockCallback).run()
}
}
+
+ @Test
+ fun testProgressImmediatelyCompletes_callbackNotInvoked() {
+ val mockCallback = mock<Runnable>()
+ RearDisplayInnerDialogDelegate(
+ kosmos.systemUIDialogDotFactory,
+ mContext,
+ kosmos.vibratorHelper,
+ kosmos.msdlPlayer,
+ kosmos.systemClock,
+ ) {
+ mockCallback.run()
+ }
+ .createDialog()
+ .apply {
+ show()
+ val seekbar = findViewById<SeekBar>(R.id.seekbar)
+ seekbar.progress = 100
+ verify(mockCallback, never()).run()
+ }
+ }
+
+ @Test
+ fun testProgressResetsWhenStoppingBeforeCompletion() {
+ val mockCallback = mock<Runnable>()
+ val mockSeekbar = mock<SeekBar>()
+ val seekBarListener = SeekBarListener(mock<HapticSliderPlugin>(), mockCallback)
+
+ seekBarListener.onStartTrackingTouch(mockSeekbar)
+ seekBarListener.onProgressChanged(mockSeekbar, 50 /* progress */, true /* fromUser */)
+ seekBarListener.onStopTrackingTouch(mockSeekbar)
+
+ // Progress is reset
+ verify(mockSeekbar).setProgress(eq(0))
+ }
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/recents/LauncherProxyServiceTest.kt b/packages/SystemUI/tests/src/com/android/systemui/recents/LauncherProxyServiceTest.kt
index 69b762b470b7..40547c2787ac 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/recents/LauncherProxyServiceTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/recents/LauncherProxyServiceTest.kt
@@ -90,7 +90,7 @@ class LauncherProxyServiceTest : SysuiTestCase() {
private val kosmos = testKosmos()
private lateinit var subject: LauncherProxyService
@Mock private val dumpManager = DumpManager()
- @Mock private val processWrapper = ProcessWrapper()
+ @Mock private lateinit var processWrapper: ProcessWrapper
private val displayTracker = FakeDisplayTracker(mContext)
private val fakeSystemClock = FakeSystemClock()
private val sysUiState = SysUiState(displayTracker, kosmos.sceneContainerPlugin)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/settings/UserTrackerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/settings/UserTrackerImplTest.kt
index f695c13a9e62..1474defa1662 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/settings/UserTrackerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/settings/UserTrackerImplTest.kt
@@ -38,7 +38,6 @@ import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.TruthJUnit.assume
import java.util.concurrent.Executor
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -58,7 +57,6 @@ import org.mockito.Mockito.never
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(Parameterized::class)
class UserTrackerImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/GlanceableHubContainerControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/GlanceableHubContainerControllerTest.kt
index 6724f82dfd99..732561e0979b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/GlanceableHubContainerControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/GlanceableHubContainerControllerTest.kt
@@ -69,7 +69,6 @@ import com.android.systemui.statusbar.lockscreen.lockscreenSmartspaceController
import com.android.systemui.statusbar.notification.stack.notificationStackScrollLayoutController
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
@@ -87,7 +86,6 @@ import org.mockito.kotlin.spy
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
-@ExperimentalCoroutinesApi
@RunWith(AndroidTestingRunner::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
@SmallTest
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt
index 49d6909c1f93..856ece7e7ff3 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt
@@ -89,7 +89,6 @@ import com.android.systemui.window.ui.viewmodel.WindowRootViewModel
import com.google.common.truth.Truth.assertThat
import java.util.Optional
import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.test.TestScope
@@ -116,7 +115,6 @@ import org.mockito.kotlin.clearInvocations
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(ParameterizedAndroidJunit4::class)
@RunWithLooper(setAsMainLooper = true)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextViewTest.kt
index 57c28580c063..b75dd0402175 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextViewTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextViewTest.kt
@@ -58,7 +58,8 @@ class SimpleDigitalClockTextViewTest : SysuiTestCase() {
},
ClockMessageBuffers(messageBuffer),
messageBuffer,
- )
+ ),
+ isLargeClock = false,
)
underTest.textStyle = FontTextStyle()
underTest.aodStyle = FontTextStyle()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt
index cfc00a918f61..b7040ee2a11e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt
@@ -35,7 +35,6 @@ import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.mock
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.After
@@ -69,7 +68,6 @@ private fun <T> anyObject(): T {
@SmallTest
@RunWithLooper(setAsMainLooper = true)
@RunWith(AndroidJUnit4::class)
-@OptIn(ExperimentalCoroutinesApi::class)
class LockscreenShadeTransitionControllerTest : SysuiTestCase() {
private val kosmos =
testKosmos().apply {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/SplitShadeLockScreenOverScrollerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/SplitShadeLockScreenOverScrollerTest.kt
index 98487f7ac059..f8154ddb2a5f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/SplitShadeLockScreenOverScrollerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/SplitShadeLockScreenOverScrollerTest.kt
@@ -3,7 +3,6 @@ package com.android.systemui.statusbar
import android.testing.TestableLooper
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import com.android.systemui.SysuiTestCase
import com.android.systemui.dump.DumpManager
import com.android.systemui.plugins.qs.QS
@@ -30,7 +29,6 @@ class SplitShadeLockScreenOverScrollerTest : SysuiTestCase() {
private val configurationController = FakeConfigurationController()
- @OptIn(ExperimentalCoroutinesApi::class)
@Mock private lateinit var scrimController: ScrimController
@Mock private lateinit var statusBarStateController: SysuiStatusBarStateController
private var qS: QS? = null
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/events/SystemStatusAnimationSchedulerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/events/SystemStatusAnimationSchedulerImplTest.kt
index 77ca51c5efcb..3c4aeccec2eb 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/events/SystemStatusAnimationSchedulerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/events/SystemStatusAnimationSchedulerImplTest.kt
@@ -41,7 +41,6 @@ import com.android.systemui.statusbar.window.StatusBarWindowController
import com.android.systemui.statusbar.window.StatusBarWindowControllerStore
import com.android.systemui.util.time.FakeSystemClock
import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.advanceTimeBy
@@ -64,7 +63,6 @@ import org.mockito.kotlin.whenever
@RunWith(AndroidJUnit4::class)
@RunWithLooper(setAsMainLooper = true)
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
class SystemStatusAnimationSchedulerImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/ViewConfigCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/ViewConfigCoordinatorTest.kt
index c8fbe61fa799..3937d3d46d68 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/ViewConfigCoordinatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/ViewConfigCoordinatorTest.kt
@@ -20,6 +20,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.keyguard.KeyguardUpdateMonitor
import com.android.keyguard.KeyguardUpdateMonitorCallback
+import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
import com.android.systemui.statusbar.NotificationLockscreenUserManager
import com.android.systemui.statusbar.NotificationLockscreenUserManager.UserChangedListener
@@ -64,13 +65,14 @@ class ViewConfigCoordinatorTest : SysuiTestCase() {
fun setUp() {
whenever(pipeline.allNotifs).thenReturn(listOf(entry))
whenever(entry.row).thenReturn(row)
- coordinator = ViewConfigCoordinator(
- configurationController,
- lockscreenUserManager,
- gutsManager,
- keyguardUpdateMonitor,
- colorUpdateLogger,
- )
+ coordinator =
+ ViewConfigCoordinator(
+ configurationController,
+ lockscreenUserManager,
+ gutsManager,
+ keyguardUpdateMonitor,
+ colorUpdateLogger,
+ )
coordinator.attach(pipeline)
userChangedListener = withArgCaptor {
verify(lockscreenUserManager).addUserChangedListener(capture())
@@ -95,7 +97,7 @@ class ViewConfigCoordinatorTest : SysuiTestCase() {
fun themeChangePropagatesToEntry() {
configurationListener.onThemeChanged()
verify(entry).onDensityOrFontScaleChanged()
- verify(entry).areGutsExposed()
+ checkGutsExposedCalled()
verifyNoMoreInteractions(entry, row)
}
@@ -103,7 +105,7 @@ class ViewConfigCoordinatorTest : SysuiTestCase() {
fun densityChangePropagatesToEntry() {
configurationListener.onDensityOrFontScaleChanged()
verify(entry).onDensityOrFontScaleChanged()
- verify(entry).areGutsExposed()
+ checkGutsExposedCalled()
verifyNoMoreInteractions(entry, row)
}
@@ -127,7 +129,7 @@ class ViewConfigCoordinatorTest : SysuiTestCase() {
verify(entry).row
verify(row).onUiModeChanged()
verify(entry).onDensityOrFontScaleChanged()
- verify(entry).areGutsExposed()
+ checkGutsExposedCalled()
verifyNoMoreInteractions(entry, row)
clearInvocations(entry, row)
@@ -158,7 +160,7 @@ class ViewConfigCoordinatorTest : SysuiTestCase() {
verify(entry).row
verify(row).onUiModeChanged()
verify(entry).onDensityOrFontScaleChanged()
- verify(entry).areGutsExposed()
+ checkGutsExposedCalled()
verifyNoMoreInteractions(entry, row)
clearInvocations(entry, row)
@@ -194,8 +196,14 @@ class ViewConfigCoordinatorTest : SysuiTestCase() {
verify(entry).row
verify(row).onUiModeChanged()
verify(entry).onDensityOrFontScaleChanged()
- verify(entry).areGutsExposed()
+ checkGutsExposedCalled()
verifyNoMoreInteractions(entry, row)
clearInvocations(entry, row)
}
+
+ private fun checkGutsExposedCalled() {
+ if (!Flags.notificationUndoGutsOnConfigChanged()) {
+ verify(entry).areGutsExposed()
+ }
+ }
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/icon/IconManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/icon/IconManagerTest.kt
index c4ef4f978ff8..a16f2f6161ff 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/icon/IconManagerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/icon/IconManagerTest.kt
@@ -14,8 +14,6 @@
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
-
package com.android.systemui.statusbar.notification.icon
import android.app.ActivityManager
@@ -43,7 +41,6 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntryB
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionProviderImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionProviderImplTest.kt
index b177e4a3e22e..950af455ccda 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionProviderImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionProviderImplTest.kt
@@ -101,7 +101,7 @@ class VisualInterruptionDecisionProviderImplTest : VisualInterruptionDecisionPro
private fun getAvalancheSuppressor() : AvalancheSuppressor {
return AvalancheSuppressor(
avalancheProvider, systemClock, settingsInteractor, packageManager,
- uiEventLogger, context, notificationManager, logger, systemSettings
+ uiEventLogger, context, notificationManager, systemSettings
)
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java
index be89ab8c5cf8..3061842c386c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java
@@ -45,6 +45,7 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.app.Flags;
import android.app.INotificationManager;
import android.app.Notification;
import android.app.NotificationChannel;
@@ -52,11 +53,14 @@ import android.app.NotificationChannelGroup;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Person;
+import android.content.ComponentName;
import android.content.Intent;
+import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.LauncherApps;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
import android.content.pm.ShortcutInfo;
import android.content.pm.ShortcutManager;
import android.graphics.drawable.Drawable;
@@ -64,6 +68,9 @@ import android.graphics.drawable.Icon;
import android.os.Handler;
import android.os.UserHandle;
import android.os.UserManager;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
import android.service.notification.StatusBarNotification;
import android.testing.TestableLooper;
import android.view.LayoutInflater;
@@ -80,6 +87,7 @@ import com.android.systemui.SysuiTestCase;
import com.android.systemui.people.widget.PeopleSpaceWidgetManager;
import com.android.systemui.res.R;
import com.android.systemui.shade.ShadeController;
+import com.android.systemui.statusbar.RankingBuilder;
import com.android.systemui.statusbar.SbnBuilder;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
@@ -155,6 +163,8 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
@Mock
private Notification.BubbleMetadata mBubbleMetadata;
private Handler mTestHandler;
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@Before
public void setUp() throws Exception {
@@ -192,6 +202,14 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
when(mMockPackageManager.getPackageInfo(eq("android"), anyInt()))
.thenReturn(packageInfo);
+ ComponentName assistant = new ComponentName("package", "service");
+ when(mMockINotificationManager.getAllowedNotificationAssistant()).thenReturn(assistant);
+ ResolveInfo ri = new ResolveInfo();
+ ri.activityInfo = new ActivityInfo();
+ ri.activityInfo.packageName = assistant.getPackageName();
+ ri.activityInfo.name = "activity";
+ when(mMockPackageManager.queryIntentActivities(any(), anyInt())).thenReturn(List.of(ri));
+
when(mShortcutInfo.getLabel()).thenReturn("Convo name");
List<ShortcutInfo> shortcuts = Arrays.asList(mShortcutInfo);
when(mLauncherApps.getShortcuts(any(), any())).thenReturn(shortcuts);
@@ -216,8 +234,8 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
new Intent(mContext, BubblesTestActivity.class),
PendingIntent.FLAG_MUTABLE);
mBubbleSbn = new SbnBuilder(mSbn).setBubbleMetadata(
- new Notification.BubbleMetadata.Builder(bubbleIntent,
- Icon.createWithResource(mContext, R.drawable.android)).build())
+ new Notification.BubbleMetadata.Builder(bubbleIntent,
+ Icon.createWithResource(mContext, R.drawable.android)).build())
.build();
mBubbleEntry = new NotificationEntryBuilder()
.setSbn(mBubbleSbn)
@@ -237,8 +255,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
when(mPeopleSpaceWidgetManager.requestPinAppWidget(any(), any())).thenReturn(true);
}
- @Test
- public void testBindNotification_SetsShortcutIcon() {
+ private void doStandardBind() {
mNotificationInfo.bindNotification(
mShortcutManager,
mMockPackageManager,
@@ -251,12 +268,18 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mEntry,
mBubbleMetadata,
null,
+ null,
mIconFactory,
mContext,
true,
mTestHandler,
mTestHandler, null, Optional.of(mBubblesManager),
mShadeController);
+ }
+
+ @Test
+ public void testBindNotification_SetsShortcutIcon() {
+ doStandardBind();
final ImageView view = mNotificationInfo.findViewById(R.id.conversation_icon);
assertEquals(mIconDrawable, view.getDrawable());
}
@@ -264,77 +287,43 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
@Test
public void testBindNotification_SetsTextApplicationName() {
when(mMockPackageManager.getApplicationLabel(any())).thenReturn("App Name");
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
final TextView textView = mNotificationInfo.findViewById(R.id.pkg_name);
assertTrue(textView.getText().toString().contains("App Name"));
assertEquals(VISIBLE, mNotificationInfo.findViewById(R.id.header).getVisibility());
}
-/**
- @Test
- public void testBindNotification_SetsTextChannelName() {
- mNotificationInfo.bindNotification(
- -1,
- mShortcutManager,
- mLauncherApps,
- mMockPackageManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- null,
- null,
- true);
- final TextView textView = mNotificationInfo.findViewById(R.id.parent_channel_name);
- assertTrue(textView.getText().toString().contains(mNotificationChannel.getName()));
- assertEquals(VISIBLE, mNotificationInfo.findViewById(R.id.header).getVisibility());
- }
-*/
+
+ /**
+ * @Test public void testBindNotification_SetsTextChannelName() {
+ * mNotificationInfo.bindNotification(
+ * -1,
+ * mShortcutManager,
+ * mLauncherApps,
+ * mMockPackageManager,
+ * mMockINotificationManager,
+ * mOnUserInteractionCallback,
+ * TEST_PACKAGE_NAME,
+ * mNotificationChannel,
+ * mEntry,
+ * mBubbleMetadata,
+ * null,
+ * null,
+ * null,
+ * true);
+ * final TextView textView = mNotificationInfo.findViewById(R.id.parent_channel_name);
+ * assertTrue(textView.getText().toString().contains(mNotificationChannel.getName()));
+ * assertEquals(VISIBLE, mNotificationInfo.findViewById(R.id.header).getVisibility());
+ * }
+ */
@Test
public void testBindNotification_SetsTextGroupName() throws Exception {
NotificationChannelGroup group = new NotificationChannelGroup("id", "name");
when(mMockINotificationManager.getNotificationChannelGroupForPackage(
- anyString(), anyString(), anyInt())).thenReturn(group);
+ anyString(), anyString(), anyInt())).thenReturn(group);
mNotificationChannel.setGroup(group.getId());
mConversationChannel.setGroup(group.getId());
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
final TextView textView = mNotificationInfo.findViewById(R.id.group_name);
assertTrue(textView.getText().toString().contains(group.getName()));
assertEquals(VISIBLE, mNotificationInfo.findViewById(R.id.header).getVisibility());
@@ -343,24 +332,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
@Test
public void testBindNotification_GroupNameHiddenIfNoGroup() {
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
final TextView textView = mNotificationInfo.findViewById(R.id.group_name);
assertEquals(VISIBLE, mNotificationInfo.findViewById(R.id.header).getVisibility());
assertEquals(GONE, textView.getVisibility());
@@ -368,24 +340,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
@Test
public void testBindNotification_noDelegate() {
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
final TextView nameView = mNotificationInfo.findViewById(R.id.delegate_name);
assertEquals(GONE, nameView.getVisibility());
}
@@ -416,6 +371,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
entry,
mBubbleMetadata,
null,
+ null,
mIconFactory,
mContext,
true,
@@ -428,7 +384,17 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
}
@Test
- public void testBindNotification_SetsOnClickListenerForSettings() {
+ @DisableFlags({Flags.FLAG_NM_SUMMARIZATION, Flags.FLAG_NM_SUMMARIZATION_UI})
+ public void testBindNotification_HidesFeedbackLink_flagOff() {
+ doStandardBind();
+ assertEquals(GONE, mNotificationInfo.findViewById(R.id.feedback).getVisibility());
+ }
+
+ @Test
+ @EnableFlags({Flags.FLAG_NM_SUMMARIZATION, Flags.FLAG_NM_SUMMARIZATION_UI})
+ public void testBindNotification_SetsFeedbackLink_ifSummaryInRanking() {
+ mEntry.setRanking(new RankingBuilder(mEntry.getRanking())
+ .setSummarization("something").build());
final CountDownLatch latch = new CountDownLatch(1);
mNotificationInfo.bindNotification(
mShortcutManager,
@@ -441,8 +407,8 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mNotificationChannel,
mEntry,
mBubbleMetadata,
- (View v, NotificationChannel c, int appUid) -> {
- assertEquals(mConversationChannel, c);
+ null,
+ (View v, Intent intent) -> {
latch.countDown();
},
mIconFactory,
@@ -452,14 +418,24 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mTestHandler, null, Optional.of(mBubblesManager),
mShadeController);
- final View settingsButton = mNotificationInfo.findViewById(R.id.info);
- settingsButton.performClick();
+ final View feedback = mNotificationInfo.findViewById(R.id.feedback);
+ assertEquals(VISIBLE, feedback.getVisibility());
+ feedback.performClick();
// Verify that listener was triggered.
assertEquals(0, latch.getCount());
}
@Test
- public void testBindNotification_SettingsButtonInvisibleWhenNoClickListener() {
+ @EnableFlags({Flags.FLAG_NM_SUMMARIZATION, Flags.FLAG_NM_SUMMARIZATION_UI})
+ public void testBindNotification_hidesFeedbackLink_ifSummaryNotInRanking() {
+ doStandardBind();
+
+ assertEquals(GONE, mNotificationInfo.findViewById(R.id.feedback).getVisibility());
+ }
+
+ @Test
+ public void testBindNotification_SetsOnClickListenerForSettings() {
+ final CountDownLatch latch = new CountDownLatch(1);
mNotificationInfo.bindNotification(
mShortcutManager,
mMockPackageManager,
@@ -471,6 +447,10 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mNotificationChannel,
mEntry,
mBubbleMetadata,
+ (View v, NotificationChannel c, int appUid) -> {
+ assertEquals(mConversationChannel, c);
+ latch.countDown();
+ },
null,
mIconFactory,
mContext,
@@ -478,6 +458,16 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mTestHandler,
mTestHandler, null, Optional.of(mBubblesManager),
mShadeController);
+
+ final View settingsButton = mNotificationInfo.findViewById(R.id.info);
+ settingsButton.performClick();
+ // Verify that listener was triggered.
+ assertEquals(0, latch.getCount());
+ }
+
+ @Test
+ public void testBindNotification_SettingsButtonInvisibleWhenNoClickListener() {
+ doStandardBind();
final View settingsButton = mNotificationInfo.findViewById(R.id.info);
assertTrue(settingsButton.getVisibility() != View.VISIBLE);
}
@@ -500,6 +490,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
assertEquals(mNotificationChannel, c);
latch.countDown();
},
+ null,
mIconFactory,
mContext,
false,
@@ -514,24 +505,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
public void testBindNotification_silentSelected_isFave_isSilent() {
mConversationChannel.setImportance(IMPORTANCE_LOW);
mConversationChannel.setImportantConversation(true);
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
View view = mNotificationInfo.findViewById(R.id.silence);
assertThat(view.isSelected()).isTrue();
}
@@ -543,24 +517,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mConversationChannel.setImportance(IMPORTANCE_HIGH);
mConversationChannel.setImportantConversation(false);
mConversationChannel.setAllowBubbles(true);
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
View view = mNotificationInfo.findViewById(R.id.default_behavior);
assertThat(view.isSelected()).isTrue();
assertThat(((TextView) view.findViewById(R.id.default_summary)).getText()).isEqualTo(
@@ -575,24 +532,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mConversationChannel.setImportance(IMPORTANCE_HIGH);
mConversationChannel.setImportantConversation(false);
mConversationChannel.setAllowBubbles(true);
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
View view = mNotificationInfo.findViewById(R.id.default_behavior);
assertThat(view.isSelected()).isTrue();
assertThat(((TextView) view.findViewById(R.id.default_summary)).getText()).isEqualTo(
@@ -625,6 +565,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mEntry,
null,
null,
+ null,
mIconFactory,
mContext,
true,
@@ -654,6 +595,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mEntry,
null,
null,
+ null,
mIconFactory,
mContext,
true,
@@ -678,24 +620,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mConversationChannel.setImportance(IMPORTANCE_HIGH);
mConversationChannel.setImportantConversation(false);
mConversationChannel.setAllowBubbles(true);
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
assertThat(((TextView) mNotificationInfo.findViewById(R.id.priority_summary)).getText())
.isEqualTo(mContext.getString(
R.string.notification_channel_summary_priority_all));
@@ -707,24 +632,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mConversationChannel.setImportance(IMPORTANCE_LOW);
mConversationChannel.setImportantConversation(false);
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
View fave = mNotificationInfo.findViewById(R.id.priority);
fave.performClick();
@@ -752,24 +660,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mConversationChannel.setAllowBubbles(false);
mConversationChannel.setImportance(IMPORTANCE_LOW);
mConversationChannel.setImportantConversation(false);
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
mNotificationInfo.findViewById(R.id.default_behavior).performClick();
mTestableLooper.processAllMessages();
@@ -796,24 +687,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mConversationChannel.setImportance(IMPORTANCE_DEFAULT);
mConversationChannel.setImportantConversation(false);
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
View silence = mNotificationInfo.findViewById(R.id.silence);
@@ -841,24 +715,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mConversationChannel.setImportance(IMPORTANCE_LOW);
mConversationChannel.setImportantConversation(false);
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
View fave = mNotificationInfo.findViewById(R.id.priority);
fave.performClick();
@@ -880,24 +737,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mConversationChannel.setOriginalImportance(IMPORTANCE_HIGH);
mConversationChannel.setImportance(9);
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
View fave = mNotificationInfo.findViewById(R.id.priority);
fave.performClick();
@@ -917,24 +757,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mConversationChannel.setImportance(IMPORTANCE_HIGH);
mConversationChannel.setImportantConversation(true);
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
View fave = mNotificationInfo.findViewById(R.id.priority);
fave.performClick();
@@ -958,24 +781,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mConversationChannel.setImportantConversation(false);
// WHEN we indicate no selected action
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
// THEN the selected action is -1, so the selected option is "Default" priority
assertEquals(mNotificationInfo.getSelectedAction(), -1);
@@ -990,24 +796,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
// WHEN we indicate the selected action should be "Favorite"
mNotificationInfo.setSelectedAction(NotificationConversationInfo.ACTION_FAVORITE);
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
// THEN the selected action is "Favorite", so the selected option is "priority" priority
assertEquals(mNotificationInfo.getSelectedAction(),
@@ -1020,24 +809,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mConversationChannel.setAllowBubbles(true);
mConversationChannel.setOriginalImportance(IMPORTANCE_HIGH);
mConversationChannel.setImportantConversation(true);
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
mNotificationInfo.findViewById(R.id.default_behavior).performClick();
mNotificationInfo.findViewById(R.id.done).performClick();
@@ -1058,24 +830,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mConversationChannel.setAllowBubbles(true);
mConversationChannel.setOriginalImportance(IMPORTANCE_HIGH);
mConversationChannel.setImportantConversation(false);
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
mNotificationInfo.findViewById(R.id.default_behavior).performClick();
mNotificationInfo.findViewById(R.id.done).performClick();
@@ -1095,24 +850,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mConversationChannel.setImportance(9);
mConversationChannel.setOriginalImportance(IMPORTANCE_HIGH);
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
mNotificationInfo.findViewById(R.id.default_behavior).performClick();
mNotificationInfo.findViewById(R.id.done).performClick();
@@ -1131,24 +869,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mConversationChannel.setImportantConversation(true);
mConversationChannel.setAllowBubbles(true);
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
View silence = mNotificationInfo.findViewById(R.id.silence);
silence.performClick();
@@ -1171,24 +892,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mConversationChannel.setImportantConversation(true);
mConversationChannel.setAllowBubbles(true);
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
mNotificationInfo.findViewById(R.id.silence).performClick();
mNotificationInfo.handleCloseControls(false, false);
@@ -1202,24 +906,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
@Test
public void testBindNotification_createsNewChannel() throws Exception {
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
verify(mMockINotificationManager, times(1)).createConversationNotificationChannelForPackage(
anyString(), anyInt(), any(), eq(CONVERSATION_ID));
@@ -1228,24 +915,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
@Test
public void testBindNotification_doesNotCreateNewChannelIfExists() throws Exception {
mNotificationChannel.setConversationId("", CONVERSATION_ID);
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
verify(mMockINotificationManager, never()).createConversationNotificationChannelForPackage(
anyString(), anyInt(), any(), eq(CONVERSATION_ID));
@@ -1256,24 +926,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
when(mUserManager.isSameProfileGroup(anyInt(), anyInt())).thenReturn(true);
//WHEN channel is default importance
mNotificationChannel.setImportantConversation(false);
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
// WHEN user clicks "priority"
mNotificationInfo.setSelectedAction(NotificationConversationInfo.ACTION_FAVORITE);
@@ -1290,24 +943,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
when(mUserManager.isSameProfileGroup(anyInt(), anyInt())).thenReturn(false);
//WHEN channel is default importance
mNotificationChannel.setImportantConversation(false);
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
// WHEN user clicks "priority"
mNotificationInfo.setSelectedAction(NotificationConversationInfo.ACTION_FAVORITE);
@@ -1321,24 +957,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
@Test
public void testSelectDefaultDoesNotRequestPinPeopleTile() {
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
// WHEN user clicks "default"
mNotificationInfo.setSelectedAction(NotificationConversationInfo.ACTION_DEFAULT);
@@ -1356,24 +975,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
mConversationChannel.setImportance(IMPORTANCE_HIGH);
mConversationChannel.setImportantConversation(true);
- mNotificationInfo.bindNotification(
- mShortcutManager,
- mMockPackageManager,
- mUserManager,
- mPeopleSpaceWidgetManager,
- mMockINotificationManager,
- mOnUserInteractionCallback,
- TEST_PACKAGE_NAME,
- mNotificationChannel,
- mEntry,
- mBubbleMetadata,
- null,
- mIconFactory,
- mContext,
- true,
- mTestHandler,
- mTestHandler, null, Optional.of(mBubblesManager),
- mShadeController);
+ doStandardBind();
// WHEN user clicks "priority"
mNotificationInfo.setSelectedAction(NotificationConversationInfo.ACTION_FAVORITE);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerWithScenesTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerWithScenesTest.kt
index 8645a40319f4..1b447525bbf5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerWithScenesTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerWithScenesTest.kt
@@ -75,7 +75,6 @@ import com.android.systemui.util.kotlin.JavaAdapter
import com.android.systemui.wmshell.BubblesManager
import java.util.Optional
import kotlin.test.assertEquals
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.runCurrent
import org.junit.Assert
@@ -98,7 +97,6 @@ import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
/** Tests for [NotificationGutsManager] with the scene container enabled. */
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@RunWithLooper
@@ -438,6 +436,7 @@ class NotificationGutsManagerWithScenesTest : SysuiTestCase() {
eq(entry),
any<NotificationInfo.OnSettingsClickListener>(),
any<NotificationInfo.OnAppSettingsClickListener>(),
+ any<NotificationInfo.OnFeedbackClickListener>(),
any<UiEventLogger>(),
eq(true),
eq(false),
@@ -471,6 +470,7 @@ class NotificationGutsManagerWithScenesTest : SysuiTestCase() {
eq(entry),
any<NotificationInfo.OnSettingsClickListener>(),
any<NotificationInfo.OnAppSettingsClickListener>(),
+ any<NotificationInfo.OnFeedbackClickListener>(),
any<UiEventLogger>(),
eq(true),
eq(false),
@@ -504,6 +504,7 @@ class NotificationGutsManagerWithScenesTest : SysuiTestCase() {
eq(entry),
any<NotificationInfo.OnSettingsClickListener>(),
any<NotificationInfo.OnAppSettingsClickListener>(),
+ any<NotificationInfo.OnFeedbackClickListener>(),
any<UiEventLogger>(),
eq(true),
eq(false),
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
index a7fe1ba76590..a5234883ed77 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
@@ -46,7 +46,6 @@ import android.animation.Animator;
import android.content.Context;
import android.graphics.Color;
import android.platform.test.annotations.DisableFlags;
-import android.platform.test.annotations.EnableFlags;
import android.testing.TestableLooper;
import android.testing.ViewUtils;
import android.util.MathUtils;
@@ -78,7 +77,6 @@ import com.android.systemui.keyguard.ui.viewmodel.PrimaryBouncerToGoneTransition
import com.android.systemui.kosmos.KosmosJavaAdapter;
import com.android.systemui.scene.shared.flag.SceneContainerFlag;
import com.android.systemui.scrim.ScrimView;
-import com.android.systemui.shade.shared.flag.DualShade;
import com.android.systemui.shade.transition.LargeScreenShadeInterpolator;
import com.android.systemui.shade.transition.LinearLargeScreenShadeInterpolator;
import com.android.systemui.statusbar.policy.FakeConfigurationController;
@@ -356,8 +354,7 @@ public class ScrimControllerTest extends SysuiTestCase {
@Test
@EnableSceneContainer
- @DisableFlags(DualShade.FLAG_NAME)
- public void transitionToShadeLocked_sceneContainer_dualShadeOff() {
+ public void transitionToShadeLocked_sceneContainer() {
mScrimController.transitionTo(SHADE_LOCKED);
mScrimController.setQsPosition(1f, 0);
finishAnimationsImmediately();
@@ -375,27 +372,6 @@ public class ScrimControllerTest extends SysuiTestCase {
}
@Test
- @EnableSceneContainer
- @EnableFlags(DualShade.FLAG_NAME)
- public void transitionToShadeLocked_sceneContainer_dualShadeOn() {
- mScrimController.transitionTo(SHADE_LOCKED);
- mScrimController.setQsPosition(1f, 0);
- finishAnimationsImmediately();
-
- assertScrimAlpha(Map.of(
- mNotificationsScrim, TRANSPARENT,
- mScrimInFront, TRANSPARENT,
- mScrimBehind, TRANSPARENT
- ));
-
- assertScrimTinted(Map.of(
- mScrimInFront, false,
- mNotificationsScrim, false,
- mScrimBehind, false
- ));
- }
-
- @Test
public void transitionToShadeLocked_clippingQs() {
mScrimController.setClipsQsScrim(true);
mScrimController.legacyTransitionTo(SHADE_LOCKED);
@@ -956,8 +932,7 @@ public class ScrimControllerTest extends SysuiTestCase {
@Test
@EnableSceneContainer
- @DisableFlags(DualShade.FLAG_NAME)
- public void transitionToUnlocked_sceneContainer_dualShadeOff() {
+ public void transitionToUnlocked_sceneContainer() {
mScrimController.setRawPanelExpansionFraction(0f);
mScrimController.transitionTo(ScrimState.UNLOCKED);
finishAnimationsImmediately();
@@ -984,35 +959,6 @@ public class ScrimControllerTest extends SysuiTestCase {
}
@Test
- @EnableSceneContainer
- @EnableFlags(DualShade.FLAG_NAME)
- public void transitionToUnlocked_sceneContainer_dualShadeOn() {
- mScrimController.setRawPanelExpansionFraction(0f);
- mScrimController.transitionTo(ScrimState.UNLOCKED);
- finishAnimationsImmediately();
-
- assertScrimAlpha(Map.of(
- mScrimInFront, TRANSPARENT,
- mNotificationsScrim, TRANSPARENT,
- mScrimBehind, TRANSPARENT
- ));
-
- mScrimController.setRawPanelExpansionFraction(0.5f);
- assertScrimAlpha(Map.of(
- mScrimInFront, TRANSPARENT,
- mNotificationsScrim, TRANSPARENT,
- mScrimBehind, TRANSPARENT
- ));
-
- mScrimController.setRawPanelExpansionFraction(1f);
- assertScrimAlpha(Map.of(
- mScrimInFront, TRANSPARENT,
- mNotificationsScrim, TRANSPARENT,
- mScrimBehind, TRANSPARENT
- ));
- }
-
- @Test
public void transitionToUnlocked_nonClippedQs_followsLargeScreensInterpolator() {
mScrimController.setClipsQsScrim(false);
mScrimController.setRawPanelExpansionFraction(0f);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModelImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModelImplTest.kt
index 8beed01ffbe4..f4c0e367871f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModelImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModelImplTest.kt
@@ -29,7 +29,6 @@ import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.runBlocking
@@ -39,7 +38,6 @@ import org.junit.runner.RunWith
import org.mockito.MockitoAnnotations
@SmallTest
-@OptIn(ExperimentalCoroutinesApi::class)
@Suppress("EXPERIMENTAL_IS_NOT_ENABLED")
@RunWith(AndroidJUnit4::class)
class AirplaneModeViewModelImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/model/SystemUiCarrierConfigTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/model/SystemUiCarrierConfigTest.kt
index 4a2f6f281566..df74404aaaf8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/model/SystemUiCarrierConfigTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/model/SystemUiCarrierConfigTest.kt
@@ -25,12 +25,10 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class SystemUiCarrierConfigTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/CarrierConfigRepositoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/CarrierConfigRepositoryImplTest.kt
index 7d101be4e748..d074fc256133 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/CarrierConfigRepositoryImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/CarrierConfigRepositoryImplTest.kt
@@ -29,7 +29,6 @@ import com.android.systemui.statusbar.pipeline.mobile.data.MobileInputLogger
import com.android.systemui.statusbar.pipeline.mobile.data.model.SystemUiCarrierConfigTest.Companion.createTestConfig
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.test.TestScope
@@ -45,7 +44,6 @@ import org.mockito.MockitoAnnotations
import org.mockito.MockitoSession
import org.mockito.quality.Strictness
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class CarrierConfigRepositoryImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileRepositorySwitcherTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileRepositorySwitcherTest.kt
index 36f5236c3936..d05590521fab 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileRepositorySwitcherTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileRepositorySwitcherTest.kt
@@ -50,7 +50,6 @@ import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.cancel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.launchIn
@@ -70,7 +69,6 @@ import org.mockito.MockitoAnnotations
* switches over when the value of `demoMode` changes
*/
@Suppress("EXPERIMENTAL_IS_NOT_ENABLED")
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class MobileRepositorySwitcherTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/FullMobileConnectionRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/FullMobileConnectionRepositoryTest.kt
index fd23655ffc1c..02ad90cb4269 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/FullMobileConnectionRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/FullMobileConnectionRepositoryTest.kt
@@ -50,7 +50,6 @@ import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import java.io.PrintWriter
import java.io.StringWriter
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
@@ -69,7 +68,6 @@ import org.mockito.Mockito.verify
* properly switches over when the value of `isCarrierMerged` changes.
*/
@Suppress("EXPERIMENTAL_IS_NOT_ENABLED")
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class FullMobileConnectionRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt
index 3a25ecb27404..df5c6e916931 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt
@@ -98,7 +98,6 @@ import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.mockito.withArgCaptor
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
@@ -115,7 +114,6 @@ import org.mockito.kotlin.any
import org.mockito.kotlin.argumentCaptor
@Suppress("EXPERIMENTAL_IS_NOT_ENABLED")
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class MobileConnectionRepositoryTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionTelephonySmokeTests.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionTelephonySmokeTests.kt
index 0d82c79fea79..ec260fcc7a65 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionTelephonySmokeTests.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionTelephonySmokeTests.kt
@@ -49,7 +49,6 @@ import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityMod
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
@@ -92,7 +91,6 @@ import org.mockito.MockitoAnnotations
* 5. Assert that B has the state sent in step #2
*/
@Suppress("EXPERIMENTAL_IS_NOT_ENABLED")
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
class MobileConnectionTelephonySmokeTests : SysuiTestCase() {
private lateinit var underTest: MobileConnectionRepositoryImpl
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt
index 6c60f55a3904..d1d6e27332b0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt
@@ -79,7 +79,6 @@ import com.android.wifitrackerlib.WifiEntry
import com.android.wifitrackerlib.WifiPickerTracker
import com.google.common.truth.Truth.assertThat
import java.util.UUID
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
@@ -101,7 +100,6 @@ import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever
@Suppress("EXPERIMENTAL_IS_NOT_ENABLED")
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
// This is required because our [SubscriptionManager.OnSubscriptionsChangedListener] uses a looper
// to run the callback and this makes the looper place nicely with TestScope etc.
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/view/ModernStatusBarMobileViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/view/ModernStatusBarMobileViewTest.kt
index 84846a16f39a..ce99e595504d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/view/ModernStatusBarMobileViewTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/view/ModernStatusBarMobileViewTest.kt
@@ -44,7 +44,6 @@ import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnec
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.test.runTest
@@ -57,7 +56,6 @@ import org.mockito.MockitoAnnotations
@SmallTest
@RunWith(AndroidTestingRunner::class)
@RunWithLooper(setAsMainLooper = true)
-@OptIn(ExperimentalCoroutinesApi::class)
class ModernStatusBarMobileViewTest : SysuiTestCase() {
private val kosmos = testKosmos()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/satellite/data/prod/DeviceBasedSatelliteRepositoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/satellite/data/prod/DeviceBasedSatelliteRepositoryImplTest.kt
index 599729d953d4..6a8b783acf73 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/satellite/data/prod/DeviceBasedSatelliteRepositoryImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/satellite/data/prod/DeviceBasedSatelliteRepositoryImplTest.kt
@@ -53,7 +53,6 @@ import com.google.common.truth.Truth.assertThat
import java.util.Optional
import java.util.function.Consumer
import kotlin.test.Test
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -71,7 +70,6 @@ import org.mockito.MockitoAnnotations
import org.mockito.kotlin.doThrow
@Suppress("EXPERIMENTAL_IS_NOT_ENABLED")
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class DeviceBasedSatelliteRepositoryImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/data/repository/ConnectivityRepositoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/data/repository/ConnectivityRepositoryImplTest.kt
index 88f262bec123..8a0159ce174e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/data/repository/ConnectivityRepositoryImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/data/repository/ConnectivityRepositoryImplTest.kt
@@ -47,7 +47,6 @@ import com.android.systemui.statusbar.pipeline.shared.data.repository.Connectivi
import com.android.systemui.testKosmos
import com.android.systemui.tuner.TunerService
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -60,7 +59,6 @@ import org.mockito.kotlin.mock
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
-@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class ConnectivityRepositoryImplTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/stylus/OWNERS b/packages/SystemUI/tests/src/com/android/systemui/stylus/OWNERS
index 0ec996be72de..9b4902a9e7b2 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/stylus/OWNERS
+++ b/packages/SystemUI/tests/src/com/android/systemui/stylus/OWNERS
@@ -6,5 +6,4 @@ madym@google.com
mgalhardo@google.com
petrcermak@google.com
stevenckng@google.com
-tkachenkoi@google.com
-vanjan@google.com \ No newline at end of file
+vanjan@google.com
diff --git a/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java
index 3007eabba0b8..8d05ea16cfa6 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java
@@ -16,6 +16,7 @@
package com.android.systemui.volume;
+import java.util.List;
import static android.media.AudioManager.RINGER_MODE_NORMAL;
import static android.media.AudioManager.RINGER_MODE_SILENT;
import static android.media.AudioManager.RINGER_MODE_VIBRATE;
@@ -93,7 +94,6 @@ import com.android.systemui.volume.panel.shared.flag.VolumePanelFlag;
import com.android.systemui.volume.ui.navigation.VolumeNavigator;
import com.google.android.msdl.domain.MSDLPlayer;
-import com.google.common.collect.ImmutableList;
import dagger.Lazy;
@@ -163,7 +163,7 @@ public class VolumeDialogImplTest extends SysuiTestCase {
new CsdWarningDialog.Factory() {
@Override
public CsdWarningDialog create(int warningType, Runnable onCleanup,
- Optional<ImmutableList<CsdWarningAction>> actionIntents) {
+ Optional<List<CsdWarningAction>> actionIntents) {
return mCsdWarningDialog;
}
};
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
index 5d88f72b805b..a38d71b178e9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
@@ -26,8 +26,6 @@ import static android.service.notification.NotificationListenerService.REASON_AP
import static android.service.notification.NotificationListenerService.REASON_GROUP_SUMMARY_CANCELED;
import static android.service.notification.NotificationListenerService.REASON_PACKAGE_BANNED;
-import static androidx.test.ext.truth.content.IntentSubject.assertThat;
-
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
import static com.android.server.notification.Flags.FLAG_SCREENSHARE_NOTIFICATION_HIDING;
import static com.android.wm.shell.Flags.FLAG_ENABLE_BUBBLE_BAR;
@@ -175,6 +173,7 @@ import com.android.wm.shell.bubbles.BubbleEducationController;
import com.android.wm.shell.bubbles.BubbleEntry;
import com.android.wm.shell.bubbles.BubbleLogger;
import com.android.wm.shell.bubbles.BubbleOverflow;
+import com.android.wm.shell.bubbles.BubbleResizabilityChecker;
import com.android.wm.shell.bubbles.BubbleStackView;
import com.android.wm.shell.bubbles.BubbleTaskView;
import com.android.wm.shell.bubbles.BubbleViewInfoTask;
@@ -182,7 +181,6 @@ import com.android.wm.shell.bubbles.BubbleViewProvider;
import com.android.wm.shell.bubbles.Bubbles;
import com.android.wm.shell.bubbles.StackEducationView;
import com.android.wm.shell.bubbles.bar.BubbleBarLayerView;
-import com.android.wm.shell.bubbles.properties.BubbleProperties;
import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.DisplayImeController;
import com.android.wm.shell.common.DisplayInsetsController;
@@ -297,7 +295,7 @@ public class BubblesTest extends SysuiTestCase {
private BubbleEntry mBubbleEntryUser11;
private BubbleEntry mBubbleEntry2User11;
- private Intent mAppBubbleIntent;
+ private Intent mNotesBubbleIntent;
@Mock
private ShellInit mShellInit;
@@ -354,7 +352,7 @@ public class BubblesTest extends SysuiTestCase {
@Mock
private NotifPipelineFlags mNotifPipelineFlags;
@Mock
- private Icon mAppBubbleIcon;
+ private Icon mNotesBubbleIcon;
@Mock
private Display mDefaultDisplay;
@Mock
@@ -380,8 +378,6 @@ public class BubblesTest extends SysuiTestCase {
private UserHandle mUser0;
- private FakeBubbleProperties mBubbleProperties;
-
@Parameters(name = "{0}")
public static List<FlagsParameterization> getParams() {
return SceneContainerFlagParameterizationKt.parameterizeSceneContainerFlag();
@@ -457,8 +453,8 @@ public class BubblesTest extends SysuiTestCase {
mNotificationShadeWindowController.fetchWindowRootView();
mNotificationShadeWindowController.attach();
- mAppBubbleIntent = new Intent(mContext, BubblesTestActivity.class);
- mAppBubbleIntent.setPackage(mContext.getPackageName());
+ mNotesBubbleIntent = new Intent(mContext, BubblesTestActivity.class);
+ mNotesBubbleIntent.setPackage(mContext.getPackageName());
mZenModeConfig.suppressedVisualEffects = 0;
when(mZenModeController.getConfig()).thenReturn(mZenModeConfig);
@@ -522,7 +518,6 @@ public class BubblesTest extends SysuiTestCase {
mTaskViewRepository = new TaskViewRepository();
mTaskViewTransitions = new TaskViewTransitions(mTransitions, mTaskViewRepository,
mShellTaskOrganizer, mSyncQueue);
- mBubbleProperties = new FakeBubbleProperties();
mBubbleController = new TestableBubbleController(
mContext,
mShellInit,
@@ -551,7 +546,7 @@ public class BubblesTest extends SysuiTestCase {
mTransitions,
mock(SyncTransactionQueue.class),
mock(IWindowManager.class),
- mBubbleProperties);
+ new BubbleResizabilityChecker());
mBubbleController.setExpandListener(mBubbleExpandListener);
spyOn(mBubbleController);
@@ -1478,8 +1473,8 @@ public class BubblesTest extends SysuiTestCase {
}
@Test
- public void testShowManageMenuChangesSysuiState_appBubble() {
- mBubbleController.showOrHideAppBubble(mAppBubbleIntent, mUser0, mAppBubbleIcon);
+ public void testShowManageMenuChangesSysuiState_notesBubble() {
+ mBubbleController.showOrHideNotesBubble(mNotesBubbleIntent, mUser0, mNotesBubbleIcon);
assertTrue(mBubbleController.hasBubbles());
// Expand the stack
@@ -1928,13 +1923,13 @@ public class BubblesTest extends SysuiTestCase {
public void testShowStackEdu_isNotConversationBubble() {
// Setup
setPrefBoolean(StackEducationView.PREF_STACK_EDUCATION, false);
- BubbleEntry bubbleEntry = createBubbleEntry(false /* isConversation */);
- mBubbleController.updateBubble(bubbleEntry);
+ mBubbleController.showOrHideNotesBubble(mNotesBubbleIntent, mUser0, mNotesBubbleIcon);
assertTrue(mBubbleController.hasBubbles());
-
+ String noteBubbleKey = Bubble.getNoteBubbleKeyForApp(mNotesBubbleIntent.getPackage(),
+ mUser0);
// Click on bubble
- Bubble bubble = mBubbleData.getBubbleInStackWithKey(bubbleEntry.getKey());
- assertFalse(bubble.isConversation());
+ Bubble bubble = mBubbleData.getBubbleInStackWithKey(noteBubbleKey);
+ assertFalse(bubble.isChat());
bubble.getIconView().callOnClick();
// Check education is not shown
@@ -1946,13 +1941,13 @@ public class BubblesTest extends SysuiTestCase {
public void testShowStackEdu_isConversationBubble() {
// Setup
setPrefBoolean(StackEducationView.PREF_STACK_EDUCATION, false);
- BubbleEntry bubbleEntry = createBubbleEntry(true /* isConversation */);
+ BubbleEntry bubbleEntry = createBubbleEntry();
mBubbleController.updateBubble(bubbleEntry);
assertTrue(mBubbleController.hasBubbles());
// Click on bubble
Bubble bubble = mBubbleData.getBubbleInStackWithKey(bubbleEntry.getKey());
- assertTrue(bubble.isConversation());
+ assertTrue(bubble.isChat());
bubble.getIconView().callOnClick();
// Check education is shown
@@ -1964,13 +1959,13 @@ public class BubblesTest extends SysuiTestCase {
public void testShowStackEdu_isSeenConversationBubble() {
// Setup
setPrefBoolean(StackEducationView.PREF_STACK_EDUCATION, true);
- BubbleEntry bubbleEntry = createBubbleEntry(true /* isConversation */);
+ BubbleEntry bubbleEntry = createBubbleEntry();
mBubbleController.updateBubble(bubbleEntry);
assertTrue(mBubbleController.hasBubbles());
// Click on bubble
Bubble bubble = mBubbleData.getBubbleInStackWithKey(bubbleEntry.getKey());
- assertTrue(bubble.isConversation());
+ assertTrue(bubble.isChat());
bubble.getIconView().callOnClick();
// Check education is not shown
@@ -1979,79 +1974,80 @@ public class BubblesTest extends SysuiTestCase {
}
@Test
- public void testShowOrHideAppBubble_addsAndExpand() {
+ public void testShowOrHideNotesBubble_addsAndExpand() {
assertThat(mBubbleController.isStackExpanded()).isFalse();
- mBubbleController.showOrHideAppBubble(mAppBubbleIntent, mUser0, mAppBubbleIcon);
+ mBubbleController.showOrHideNotesBubble(mNotesBubbleIntent, mUser0, mNotesBubbleIcon);
verify(mBubbleController).inflateAndAdd(any(Bubble.class), /* suppressFlyout= */ eq(true),
/* showInShade= */ eq(false));
assertThat(mBubbleData.getSelectedBubble().getKey()).isEqualTo(
- Bubble.getAppBubbleKeyForApp(mContext.getPackageName(), mUser0));
+ Bubble.getNoteBubbleKeyForApp(mContext.getPackageName(), mUser0));
assertThat(mBubbleController.isStackExpanded()).isTrue();
}
@Test
- public void testShowOrHideAppBubble_expandIfCollapsed() {
- mBubbleController.showOrHideAppBubble(mAppBubbleIntent, mUser0, mAppBubbleIcon);
+ public void testShowOrHideNotesBubble_expandIfCollapsed() {
+ mBubbleController.showOrHideNotesBubble(mNotesBubbleIntent, mUser0, mNotesBubbleIcon);
mBubbleController.updateBubble(mBubbleEntry);
mBubbleController.collapseStack();
assertThat(mBubbleController.isStackExpanded()).isFalse();
// Calling this while collapsed will expand the app bubble
- mBubbleController.showOrHideAppBubble(mAppBubbleIntent, mUser0, mAppBubbleIcon);
+ mBubbleController.showOrHideNotesBubble(mNotesBubbleIntent, mUser0, mNotesBubbleIcon);
assertThat(mBubbleData.getSelectedBubble().getKey()).isEqualTo(
- Bubble.getAppBubbleKeyForApp(mContext.getPackageName(), mUser0));
+ Bubble.getNoteBubbleKeyForApp(mContext.getPackageName(), mUser0));
assertThat(mBubbleController.isStackExpanded()).isTrue();
assertThat(mBubbleData.getBubbles().size()).isEqualTo(2);
}
@Test
- public void testShowOrHideAppBubble_collapseIfSelected() {
- mBubbleController.showOrHideAppBubble(mAppBubbleIntent, mUser0, mAppBubbleIcon);
+ public void testShowOrHideNotesBubble_collapseIfSelected() {
+ mBubbleController.showOrHideNotesBubble(mNotesBubbleIntent, mUser0, mNotesBubbleIcon);
assertThat(mBubbleData.getSelectedBubble().getKey()).isEqualTo(
- Bubble.getAppBubbleKeyForApp(mContext.getPackageName(), mUser0));
+ Bubble.getNoteBubbleKeyForApp(mContext.getPackageName(), mUser0));
assertThat(mBubbleController.isStackExpanded()).isTrue();
// Calling this while the app bubble is expanded should collapse the stack
- mBubbleController.showOrHideAppBubble(mAppBubbleIntent, mUser0, mAppBubbleIcon);
+ mBubbleController.showOrHideNotesBubble(mNotesBubbleIntent, mUser0, mNotesBubbleIcon);
assertThat(mBubbleData.getSelectedBubble().getKey()).isEqualTo(
- Bubble.getAppBubbleKeyForApp(mContext.getPackageName(), mUser0));
+ Bubble.getNoteBubbleKeyForApp(mContext.getPackageName(), mUser0));
assertThat(mBubbleController.isStackExpanded()).isFalse();
assertThat(mBubbleData.getBubbles().size()).isEqualTo(1);
assertThat(mBubbleData.getBubbles().get(0).getUser()).isEqualTo(mUser0);
}
@Test
- public void testShowOrHideAppBubbleWithNonPrimaryUser_bubbleCollapsedWithExpectedUser() {
+ public void testShowOrHideNotesBubbleWithNonPrimaryUser_bubbleCollapsedWithExpectedUser() {
UserHandle user10 = createUserHandle(/* userId = */ 10);
- String appBubbleKey = Bubble.getAppBubbleKeyForApp(mContext.getPackageName(), user10);
- mBubbleController.showOrHideAppBubble(mAppBubbleIntent, user10, mAppBubbleIcon);
- assertThat(mBubbleData.getSelectedBubble().getKey()).isEqualTo(appBubbleKey);
+ String notesKey = Bubble.getNoteBubbleKeyForApp(mContext.getPackageName(), user10);
+ mBubbleController.showOrHideNotesBubble(mNotesBubbleIntent, user10, mNotesBubbleIcon);
+ assertThat(mBubbleData.getSelectedBubble().getKey()).isEqualTo(notesKey);
assertThat(mBubbleController.isStackExpanded()).isTrue();
assertThat(mBubbleData.getBubbles().size()).isEqualTo(1);
assertThat(mBubbleData.getBubbles().get(0).getUser()).isEqualTo(user10);
// Calling this while the app bubble is expanded should collapse the stack
- mBubbleController.showOrHideAppBubble(mAppBubbleIntent, user10, mAppBubbleIcon);
+ mBubbleController.showOrHideNotesBubble(mNotesBubbleIntent, user10, mNotesBubbleIcon);
- assertThat(mBubbleData.getSelectedBubble().getKey()).isEqualTo(appBubbleKey);
+ assertThat(mBubbleData.getSelectedBubble().getKey()).isEqualTo(notesKey);
assertThat(mBubbleController.isStackExpanded()).isFalse();
assertThat(mBubbleData.getBubbles().size()).isEqualTo(1);
assertThat(mBubbleData.getBubbles().get(0).getUser()).isEqualTo(user10);
}
@Test
- public void testShowOrHideAppBubbleOnUser10AndThenUser0_user0BubbleExpanded() {
+ public void testShowOrHideNotesBubbleOnUser10AndThenUser0_user0BubbleExpanded() {
UserHandle user10 = createUserHandle(/* userId = */ 10);
- mBubbleController.showOrHideAppBubble(mAppBubbleIntent, user10, mAppBubbleIcon);
+ mBubbleController.showOrHideNotesBubble(mNotesBubbleIntent, user10, mNotesBubbleIcon);
- String appBubbleUser0Key = Bubble.getAppBubbleKeyForApp(mContext.getPackageName(), mUser0);
- mBubbleController.showOrHideAppBubble(mAppBubbleIntent, mUser0, mAppBubbleIcon);
+ String notesBubbleUser0Key = Bubble.getNoteBubbleKeyForApp(mContext.getPackageName(),
+ mUser0);
+ mBubbleController.showOrHideNotesBubble(mNotesBubbleIntent, mUser0, mNotesBubbleIcon);
- assertThat(mBubbleData.getSelectedBubble().getKey()).isEqualTo(appBubbleUser0Key);
+ assertThat(mBubbleData.getSelectedBubble().getKey()).isEqualTo(notesBubbleUser0Key);
assertThat(mBubbleController.isStackExpanded()).isTrue();
assertThat(mBubbleData.getBubbles()).hasSize(2);
assertThat(mBubbleData.getBubbles().get(0).getUser()).isEqualTo(mUser0);
@@ -2059,63 +2055,64 @@ public class BubblesTest extends SysuiTestCase {
}
@Test
- public void testShowOrHideAppBubble_selectIfNotSelected() {
- mBubbleController.showOrHideAppBubble(mAppBubbleIntent, mUser0, mAppBubbleIcon);
+ public void testShowOrHideNotesBubble_selectIfNotSelected() {
+ mBubbleController.showOrHideNotesBubble(mNotesBubbleIntent, mUser0, mNotesBubbleIcon);
mBubbleController.updateBubble(mBubbleEntry);
mBubbleController.expandStackAndSelectBubble(mBubbleEntry);
assertThat(mBubbleData.getSelectedBubble().getKey()).isEqualTo(mBubbleEntry.getKey());
assertThat(mBubbleController.isStackExpanded()).isTrue();
- mBubbleController.showOrHideAppBubble(mAppBubbleIntent, mUser0, mAppBubbleIcon);
+ mBubbleController.showOrHideNotesBubble(mNotesBubbleIntent, mUser0, mNotesBubbleIcon);
assertThat(mBubbleData.getSelectedBubble().getKey()).isEqualTo(
- Bubble.getAppBubbleKeyForApp(mContext.getPackageName(), mUser0));
+ Bubble.getNoteBubbleKeyForApp(mContext.getPackageName(), mUser0));
assertThat(mBubbleController.isStackExpanded()).isTrue();
assertThat(mBubbleData.getBubbles().size()).isEqualTo(2);
}
@Test
- public void testShowOrHideAppBubble_addsFromOverflow() {
- String appBubbleKey = Bubble.getAppBubbleKeyForApp(mAppBubbleIntent.getPackage(), mUser0);
- mBubbleController.showOrHideAppBubble(mAppBubbleIntent, mUser0, mAppBubbleIcon);
-
+ public void testShowOrHideNotesBubble_addsFromOverflow() {
+ String noteBubbleKey = Bubble.getNoteBubbleKeyForApp(mNotesBubbleIntent.getPackage(),
+ mUser0);
+ mBubbleController.showOrHideNotesBubble(mNotesBubbleIntent, mUser0, mNotesBubbleIcon);
// Collapse the stack so we don't need to wait for the dismiss animation in the test
mBubbleController.collapseStack();
// Dismiss the app bubble so it's in the overflow
- mBubbleController.dismissBubble(appBubbleKey, Bubbles.DISMISS_USER_GESTURE);
- assertThat(mBubbleData.getOverflowBubbleWithKey(appBubbleKey)).isNotNull();
+ mBubbleController.dismissBubble(noteBubbleKey, Bubbles.DISMISS_USER_GESTURE);
+ assertThat(mBubbleData.getOverflowBubbleWithKey(noteBubbleKey)).isNotNull();
// Calling this while collapsed will re-add and expand the app bubble
- mBubbleController.showOrHideAppBubble(mAppBubbleIntent, mUser0, mAppBubbleIcon);
- assertThat(mBubbleData.getSelectedBubble().getKey()).isEqualTo(appBubbleKey);
+ mBubbleController.showOrHideNotesBubble(mNotesBubbleIntent, mUser0, mNotesBubbleIcon);
+ assertThat(mBubbleData.getSelectedBubble().getKey()).isEqualTo(noteBubbleKey);
assertThat(mBubbleController.isStackExpanded()).isTrue();
assertThat(mBubbleData.getBubbles().size()).isEqualTo(1);
- assertThat(mBubbleData.getOverflowBubbleWithKey(appBubbleKey)).isNull();
+ assertThat(mBubbleData.getOverflowBubbleWithKey(noteBubbleKey)).isNull();
}
@Test
- public void testShowOrHideAppBubble_updateExistedBubbleInOverflow_updateIntentInBubble() {
- String appBubbleKey = Bubble.getAppBubbleKeyForApp(mAppBubbleIntent.getPackage(), mUser0);
- mBubbleController.showOrHideAppBubble(mAppBubbleIntent, mUser0, mAppBubbleIcon);
+ public void testShowOrHideNotesBubble_updateExistedBubbleInOverflow_updateIntentInBubble() {
+ String noteBubbleKey = Bubble.getNoteBubbleKeyForApp(mNotesBubbleIntent.getPackage(),
+ mUser0);
+ mBubbleController.showOrHideNotesBubble(mNotesBubbleIntent, mUser0, mNotesBubbleIcon);
// Collapse the stack so we don't need to wait for the dismiss animation in the test
mBubbleController.collapseStack();
// Dismiss the app bubble so it's in the overflow
- mBubbleController.dismissBubble(appBubbleKey, Bubbles.DISMISS_USER_GESTURE);
- assertThat(mBubbleData.getOverflowBubbleWithKey(appBubbleKey)).isNotNull();
+ mBubbleController.dismissBubble(noteBubbleKey, Bubbles.DISMISS_USER_GESTURE);
+ assertThat(mBubbleData.getOverflowBubbleWithKey(noteBubbleKey)).isNotNull();
// Modify the intent to include new extras.
- Intent newAppBubbleIntent = new Intent(mContext, BubblesTestActivity.class)
+ Intent newIntent = new Intent(mContext, BubblesTestActivity.class)
.setPackage(mContext.getPackageName())
.putExtra("hello", "world");
// Calling this while collapsed will re-add and expand the app bubble
- mBubbleController.showOrHideAppBubble(newAppBubbleIntent, mUser0, mAppBubbleIcon);
- assertThat(mBubbleData.getSelectedBubble().getKey()).isEqualTo(appBubbleKey);
+ mBubbleController.showOrHideNotesBubble(newIntent, mUser0, mNotesBubbleIcon);
+ assertThat(mBubbleData.getSelectedBubble().getKey()).isEqualTo(noteBubbleKey);
assertThat(mBubbleController.isStackExpanded()).isTrue();
assertThat(mBubbleData.getBubbles().size()).isEqualTo(1);
- assertThat(mBubbleData.getBubbles().get(0).getAppBubbleIntent()).extras().string(
- "hello").isEqualTo("world");
- assertThat(mBubbleData.getOverflowBubbleWithKey(appBubbleKey)).isNull();
+ assertThat(mBubbleData.getBubbles().get(0).getIntent()
+ .getStringExtra("hello")).isEqualTo("world");
+ assertThat(mBubbleData.getOverflowBubbleWithKey(noteBubbleKey)).isNull();
}
@Test
@@ -2143,9 +2140,9 @@ public class BubblesTest extends SysuiTestCase {
assertFalse("FLAG_NO_DISMISS Notifs should be non-dismissable", bubble.isDismissable());
}
+ @DisableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void registerBubbleBarListener_barDisabled_largeScreen_shouldBeIgnored() {
- mBubbleProperties.mIsBubbleBarEnabled = false;
mPositioner.setIsLargeScreen(true);
mEntryListener.onEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
@@ -2161,9 +2158,9 @@ public class BubblesTest extends SysuiTestCase {
assertThat(mBubbleController.getStackView().getBubbleCount()).isEqualTo(1);
}
+ @EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void registerBubbleBarListener_barEnabled_smallScreen_shouldBeIgnored() {
- mBubbleProperties.mIsBubbleBarEnabled = true;
mPositioner.setIsLargeScreen(false);
mEntryListener.onEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
@@ -2179,9 +2176,9 @@ public class BubblesTest extends SysuiTestCase {
assertThat(mBubbleController.getStackView().getBubbleCount()).isEqualTo(1);
}
+ @EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void registerBubbleBarListener_switchToBarAndBackToStack() {
- mBubbleProperties.mIsBubbleBarEnabled = true;
mPositioner.setIsLargeScreen(true);
mEntryListener.onEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
@@ -2211,9 +2208,9 @@ public class BubblesTest extends SysuiTestCase {
assertBubbleIsInflatedForStack(mBubbleData.getOverflow());
}
+ @EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void registerBubbleBarListener_switchToBarWhileExpanded() {
- mBubbleProperties.mIsBubbleBarEnabled = true;
mPositioner.setIsLargeScreen(true);
mEntryListener.onEntryAdded(mRow);
@@ -2238,9 +2235,9 @@ public class BubblesTest extends SysuiTestCase {
assertThat(layerView.isExpanded()).isTrue();
}
+ @DisableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void switchBetweenBarAndStack_noBubbles_shouldBeIgnored() {
- mBubbleProperties.mIsBubbleBarEnabled = false;
mPositioner.setIsLargeScreen(true);
assertFalse(mBubbleController.hasBubbles());
@@ -2256,9 +2253,9 @@ public class BubblesTest extends SysuiTestCase {
assertNoBubbleContainerViews();
}
+ @EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void bubbleBarBubbleExpandedAndCollapsed() {
- mBubbleProperties.mIsBubbleBarEnabled = true;
mPositioner.setIsLargeScreen(true);
mEntryListener.onEntryAdded(mRow);
mBubbleController.updateBubble(mBubbleEntry);
@@ -2277,7 +2274,6 @@ public class BubblesTest extends SysuiTestCase {
@EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void dragBubbleBarBubble_selectedBubble_expandedViewCollapsesDuringDrag() {
- mBubbleProperties.mIsBubbleBarEnabled = true;
mPositioner.setIsLargeScreen(true);
FakeBubbleStateListener bubbleStateListener = new FakeBubbleStateListener();
mBubbleController.registerBubbleStateListener(bubbleStateListener);
@@ -2306,7 +2302,6 @@ public class BubblesTest extends SysuiTestCase {
@EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void dragBubbleBarBubble_unselectedBubble_expandedViewCollapsesDuringDrag() {
- mBubbleProperties.mIsBubbleBarEnabled = true;
mPositioner.setIsLargeScreen(true);
FakeBubbleStateListener bubbleStateListener = new FakeBubbleStateListener();
mBubbleController.registerBubbleStateListener(bubbleStateListener);
@@ -2335,7 +2330,6 @@ public class BubblesTest extends SysuiTestCase {
@EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void dismissBubbleBarBubble_selected_selectsAndExpandsNext() {
- mBubbleProperties.mIsBubbleBarEnabled = true;
mPositioner.setIsLargeScreen(true);
FakeBubbleStateListener bubbleStateListener = new FakeBubbleStateListener();
mBubbleController.registerBubbleStateListener(bubbleStateListener);
@@ -2359,7 +2353,6 @@ public class BubblesTest extends SysuiTestCase {
@EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void dismissBubbleBarBubble_unselected_selectionDoesNotChange() {
- mBubbleProperties.mIsBubbleBarEnabled = true;
mPositioner.setIsLargeScreen(true);
FakeBubbleStateListener bubbleStateListener = new FakeBubbleStateListener();
mBubbleController.registerBubbleStateListener(bubbleStateListener);
@@ -2407,9 +2400,9 @@ public class BubblesTest extends SysuiTestCase {
verify(mBubbleController).onSensitiveNotificationProtectionStateChanged(false);
}
+ @EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void setBubbleBarLocation_listenerNotified() {
- mBubbleProperties.mIsBubbleBarEnabled = true;
mPositioner.setIsLargeScreen(true);
FakeBubbleStateListener bubbleStateListener = new FakeBubbleStateListener();
@@ -2421,9 +2414,9 @@ public class BubblesTest extends SysuiTestCase {
BubbleBarLocation.LEFT);
}
+ @DisableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void setBubbleBarLocation_barDisabled_shouldBeIgnored() {
- mBubbleProperties.mIsBubbleBarEnabled = false;
mPositioner.setIsLargeScreen(true);
FakeBubbleStateListener bubbleStateListener = new FakeBubbleStateListener();
@@ -2496,7 +2489,6 @@ public class BubblesTest extends SysuiTestCase {
@EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void testEventLogging_bubbleBar_addBubble() {
- mBubbleProperties.mIsBubbleBarEnabled = true;
mPositioner.setIsLargeScreen(true);
FakeBubbleStateListener bubbleStateListener = new FakeBubbleStateListener();
mBubbleController.registerBubbleStateListener(bubbleStateListener);
@@ -2510,7 +2502,6 @@ public class BubblesTest extends SysuiTestCase {
@EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void testEventLogging_bubbleBar_updateBubble() {
- mBubbleProperties.mIsBubbleBarEnabled = true;
mPositioner.setIsLargeScreen(true);
FakeBubbleStateListener bubbleStateListener = new FakeBubbleStateListener();
mBubbleController.registerBubbleStateListener(bubbleStateListener);
@@ -2527,7 +2518,6 @@ public class BubblesTest extends SysuiTestCase {
@EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void testEventLogging_bubbleBar_dragSelectedBubbleToDismiss() {
- mBubbleProperties.mIsBubbleBarEnabled = true;
mPositioner.setIsLargeScreen(true);
FakeBubbleStateListener bubbleStateListener = new FakeBubbleStateListener();
mBubbleController.registerBubbleStateListener(bubbleStateListener);
@@ -2554,7 +2544,6 @@ public class BubblesTest extends SysuiTestCase {
@EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void testEventLogging_bubbleBar_dragOtherBubbleToDismiss() {
- mBubbleProperties.mIsBubbleBarEnabled = true;
mPositioner.setIsLargeScreen(true);
FakeBubbleStateListener bubbleStateListener = new FakeBubbleStateListener();
mBubbleController.registerBubbleStateListener(bubbleStateListener);
@@ -2579,7 +2568,6 @@ public class BubblesTest extends SysuiTestCase {
@EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void testEventLogging_bubbleBar_dragBarToDismiss() {
- mBubbleProperties.mIsBubbleBarEnabled = true;
mPositioner.setIsLargeScreen(true);
// Not a user gesture, should not log an event
@@ -2594,7 +2582,6 @@ public class BubblesTest extends SysuiTestCase {
@EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void testEventLogging_bubbleBar_expandAndCollapse() {
- mBubbleProperties.mIsBubbleBarEnabled = true;
mPositioner.setIsLargeScreen(true);
FakeBubbleStateListener bubbleStateListener = new FakeBubbleStateListener();
mBubbleController.registerBubbleStateListener(bubbleStateListener);
@@ -2614,7 +2601,6 @@ public class BubblesTest extends SysuiTestCase {
@EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void testEventLogging_bubbleBar_autoExpandingBubble() {
- mBubbleProperties.mIsBubbleBarEnabled = true;
mPositioner.setIsLargeScreen(true);
FakeBubbleStateListener bubbleStateListener = new FakeBubbleStateListener();
mBubbleController.registerBubbleStateListener(bubbleStateListener);
@@ -2630,7 +2616,6 @@ public class BubblesTest extends SysuiTestCase {
@EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void testEventLogging_bubbleBar_switchBubble() {
- mBubbleProperties.mIsBubbleBarEnabled = true;
mPositioner.setIsLargeScreen(true);
FakeBubbleStateListener bubbleStateListener = new FakeBubbleStateListener();
mBubbleController.registerBubbleStateListener(bubbleStateListener);
@@ -2656,7 +2641,6 @@ public class BubblesTest extends SysuiTestCase {
@EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void testEventLogging_bubbleBar_openOverflow() {
- mBubbleProperties.mIsBubbleBarEnabled = true;
mPositioner.setIsLargeScreen(true);
FakeBubbleStateListener bubbleStateListener = new FakeBubbleStateListener();
mBubbleController.registerBubbleStateListener(bubbleStateListener);
@@ -2672,7 +2656,6 @@ public class BubblesTest extends SysuiTestCase {
@EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
@Test
public void testEventLogging_bubbleBar_fromOverflowToBar() {
- mBubbleProperties.mIsBubbleBarEnabled = true;
mPositioner.setIsLargeScreen(true);
FakeBubbleStateListener bubbleStateListener = new FakeBubbleStateListener();
mBubbleController.registerBubbleStateListener(bubbleStateListener);
@@ -2707,17 +2690,19 @@ public class BubblesTest extends SysuiTestCase {
mock(Bubbles.PendingIntentCanceledListener.class), executor, executor);
}
- private BubbleEntry createBubbleEntry(boolean isConversation) {
+ /**
+ * Creates a BubbleEntry, which will represent a chat bubble.
+ * All bubble entries are notification based & therefore are chat bubbles.
+ */
+ private BubbleEntry createBubbleEntry() {
NotificationEntry notificationEntry = mNotificationTestHelper.createBubble(mDeleteIntent);
- if (isConversation) {
- ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(mContext)
- .setId("shortcutId")
- .build();
- NotificationEntryHelper.modifyRanking(notificationEntry)
- .setIsConversation(true)
- .setShortcutInfo(shortcutInfo)
- .build();
- }
+ ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(mContext)
+ .setId("shortcutId")
+ .build();
+ NotificationEntryHelper.modifyRanking(notificationEntry)
+ .setIsConversation(true)
+ .setShortcutInfo(shortcutInfo)
+ .build();
return mBubblesManager.notifToBubbleEntry(notificationEntry);
}
@@ -2902,16 +2887,4 @@ public class BubblesTest extends SysuiTestCase {
@Override
public void onItemDraggedOutsideBubbleBarDropZone() {}
}
-
- private static class FakeBubbleProperties implements BubbleProperties {
- boolean mIsBubbleBarEnabled = false;
-
- @Override
- public boolean isBubbleBarEnabled() {
- return mIsBubbleBarEnabled;
- }
-
- @Override
- public void refresh() {}
- }
}
diff --git a/packages/SystemUI/tests/utils/src/android/view/WindowManagerKosmos.kt b/packages/SystemUI/tests/utils/src/android/view/WindowManagerKosmos.kt
index 025f556991f2..80254d58781a 100644
--- a/packages/SystemUI/tests/utils/src/android/view/WindowManagerKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/android/view/WindowManagerKosmos.kt
@@ -24,4 +24,6 @@ val Kosmos.fakeWindowManager by Kosmos.Fixture { FakeWindowManager(applicationCo
val Kosmos.mockWindowManager: WindowManager by Kosmos.Fixture { mock(WindowManager::class.java) }
+val Kosmos.mockIWindowManager: IWindowManager by Kosmos.Fixture { mock(IWindowManager::class.java) }
+
var Kosmos.windowManager: WindowManager by Kosmos.Fixture { mockWindowManager }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/brightness/ui/viewmodel/BrightnessSliderViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/brightness/ui/viewmodel/BrightnessSliderViewModelKosmos.kt
index 35e85bb1e68d..b6f8ec666001 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/brightness/ui/viewmodel/BrightnessSliderViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/brightness/ui/viewmodel/BrightnessSliderViewModelKosmos.kt
@@ -19,6 +19,7 @@ package com.android.systemui.brightness.ui.viewmodel
import com.android.systemui.brightness.domain.interactor.brightnessPolicyEnforcementInteractor
import com.android.systemui.brightness.domain.interactor.screenBrightnessInteractor
import com.android.systemui.classifier.domain.interactor.falsingInteractor
+import com.android.systemui.graphics.imageLoader
import com.android.systemui.haptics.slider.sliderHapticsViewModelFactory
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.settings.brightness.domain.interactor.brightnessMirrorShowingInteractor
@@ -36,6 +37,7 @@ val Kosmos.brightnessSliderViewModelFactory: BrightnessSliderViewModel.Factory b
supportsMirroring = allowsMirroring,
falsingInteractor = falsingInteractor,
brightnessWarningToast = brightnessWarningToast,
+ imageLoader = imageLoader,
)
}
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/communal/data/repository/FakeCommunalSceneRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/communal/data/repository/FakeCommunalSceneRepository.kt
index b3c1411243c1..3f35bb9f3520 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/communal/data/repository/FakeCommunalSceneRepository.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/communal/data/repository/FakeCommunalSceneRepository.kt
@@ -17,8 +17,7 @@ import kotlinx.coroutines.launch
/** Fake implementation of [CommunalSceneRepository]. */
class FakeCommunalSceneRepository(
private val applicationScope: CoroutineScope,
- override val currentScene: MutableStateFlow<SceneKey> =
- MutableStateFlow(CommunalScenes.Default),
+ override val currentScene: MutableStateFlow<SceneKey> = MutableStateFlow(CommunalScenes.Default),
) : CommunalSceneRepository {
override fun changeScene(toScene: SceneKey, transitionKey: TransitionKey?) =
@@ -31,6 +30,10 @@ class FakeCommunalSceneRepository(
}
}
+ override suspend fun showHubFromPowerButton() {
+ snapToScene(CommunalScenes.Communal)
+ }
+
private val defaultTransitionState = ObservableTransitionState.Idle(CommunalScenes.Default)
private val _transitionState = MutableStateFlow<Flow<ObservableTransitionState>?>(null)
override val transitionState: StateFlow<ObservableTransitionState> =
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModelKosmos.kt
index 1c84133d3821..f73777237cd0 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/communal/ui/viewmodel/CommunalUserActionsViewModelKosmos.kt
@@ -20,10 +20,12 @@ import com.android.systemui.deviceentry.domain.interactor.deviceUnlockedInteract
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.shade.domain.interactor.shadeModeInteractor
val Kosmos.communalUserActionsViewModel by Fixture {
CommunalUserActionsViewModel(
deviceUnlockedInteractor = deviceUnlockedInteractor,
shadeInteractor = shadeInteractor,
+ shadeModeInteractor = shadeModeInteractor,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelKosmos.kt
index 71746b505a48..2e59788663f7 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/dreams/ui/viewmodel/DreamUserActionsViewModelKosmos.kt
@@ -20,6 +20,7 @@ import com.android.systemui.communal.domain.interactor.communalInteractor
import com.android.systemui.deviceentry.domain.interactor.deviceUnlockedInteractor
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.shade.domain.interactor.shadeModeInteractor
val Kosmos.dreamUserActionsViewModel by
Kosmos.Fixture {
@@ -27,5 +28,6 @@ val Kosmos.dreamUserActionsViewModel by
communalInteractor = communalInteractor,
deviceUnlockedInteractor = deviceUnlockedInteractor,
shadeInteractor = shadeInteractor,
+ shadeModeInteractor = shadeModeInteractor,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/dreams/ui/viewmodel/DreamViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/dreams/ui/viewmodel/DreamViewModelKosmos.kt
new file mode 100644
index 000000000000..de36493f6047
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/dreams/ui/viewmodel/DreamViewModelKosmos.kt
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.dreams.ui.viewmodel
+
+import com.android.keyguard.keyguardUpdateMonitor
+import com.android.systemui.common.ui.domain.interactor.configurationInteractor
+import com.android.systemui.communal.domain.interactor.communalInteractor
+import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
+import com.android.systemui.dump.dumpManager
+import com.android.systemui.keyguard.domain.interactor.fromDreamingTransitionInteractor
+import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
+import com.android.systemui.keyguard.ui.viewmodel.dreamingToGlanceableHubTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.dreamingToLockscreenTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.glanceableHubToDreamingTransitionViewModel
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.settings.userTracker
+
+val Kosmos.dreamViewModel by
+ Kosmos.Fixture {
+ DreamViewModel(
+ communalInteractor = communalInteractor,
+ communalSettingsInteractor = communalSettingsInteractor,
+ configurationInteractor = configurationInteractor,
+ keyguardTransitionInteractor = keyguardTransitionInteractor,
+ fromGlanceableHubTransitionViewModel = glanceableHubToDreamingTransitionViewModel,
+ toGlanceableHubTransitionViewModel = dreamingToGlanceableHubTransitionViewModel,
+ toLockscreenTransitionViewModel = dreamingToLockscreenTransitionViewModel,
+ fromDreamingTransitionInteractor = fromDreamingTransitionInteractor,
+ keyguardUpdateMonitor = keyguardUpdateMonitor,
+ userTracker = userTracker,
+ dumpManager = dumpManager,
+ )
+ }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/KeyguardDisplayManagerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/KeyguardDisplayManagerKosmos.kt
new file mode 100644
index 000000000000..1e46d48e5cb3
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/KeyguardDisplayManagerKosmos.kt
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard
+
+import android.content.testableContext
+import com.android.keyguard.ConnectedDisplayKeyguardPresentation
+import com.android.keyguard.KeyguardDisplayManager
+import com.android.keyguard.KeyguardDisplayManager.DeviceStateHelper
+import com.android.systemui.concurrency.fakeExecutor
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.applicationCoroutineScope
+import com.android.systemui.navigationbar.navigationBarController
+import com.android.systemui.settings.displayTracker
+import com.android.systemui.shade.data.repository.shadeDisplaysRepository
+import com.android.systemui.statusbar.policy.keyguardStateController
+import org.mockito.kotlin.mock
+
+var Kosmos.keyguardDisplayManager by
+ Kosmos.Fixture {
+ KeyguardDisplayManager(
+ testableContext,
+ { navigationBarController },
+ displayTracker,
+ fakeExecutor,
+ fakeExecutor,
+ mock<DeviceStateHelper>(),
+ keyguardStateController,
+ mock<ConnectedDisplayKeyguardPresentation.Factory>(),
+ { shadeDisplaysRepository },
+ applicationCoroutineScope,
+ )
+ }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/quickaffordance/LocalUserSelectionManagerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/quickaffordance/LocalUserSelectionManagerKosmos.kt
index 328338b88638..21d1a76088fa 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/quickaffordance/LocalUserSelectionManagerKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/quickaffordance/LocalUserSelectionManagerKosmos.kt
@@ -18,7 +18,6 @@ package com.android.systemui.keyguard.data.quickaffordance
import android.content.applicationContext
import com.android.systemui.broadcast.broadcastDispatcher
-import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.settings.userFileManager
import com.android.systemui.settings.userTracker
@@ -29,7 +28,6 @@ val Kosmos.localUserSelectionManager by
context = applicationContext,
userFileManager = userFileManager,
userTracker = userTracker,
- communalSettingsInteractor = communalSettingsInteractor,
broadcastDispatcher = broadcastDispatcher,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardClockRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardClockRepository.kt
index 159dd34efbbc..25a9120651a6 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardClockRepository.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardClockRepository.kt
@@ -47,10 +47,6 @@ class FakeKeyguardClockRepository() : KeyguardClockRepository {
override val previewClock: Flow<ClockController>
get() = _previewClock
- private val _notificationDefaultTop = MutableStateFlow(0F)
- override val notificationDefaultTop: StateFlow<Float>
- get() = _notificationDefaultTop
-
override val clockEventController: ClockEventController
get() = mock()
@@ -63,10 +59,6 @@ class FakeKeyguardClockRepository() : KeyguardClockRepository {
_clockSize.value = size
}
- override fun setNotificationDefaultTop(top: Float) {
- _notificationDefaultTop.value = top
- }
-
fun setSelectedClockSize(size: ClockSizeSetting) {
_selectedClockSize.value = size
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardRepository.kt
index 8ea80081a871..591f493cc129 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardRepository.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardRepository.kt
@@ -18,7 +18,6 @@
package com.android.systemui.keyguard.data.repository
import android.graphics.Point
-import android.graphics.RectF
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.shared.model.BiometricUnlockMode
import com.android.systemui.keyguard.shared.model.BiometricUnlockModel
@@ -114,6 +113,7 @@ class FakeKeyguardRepository @Inject constructor() : KeyguardRepository {
override val keyguardAlpha: StateFlow<Float> = _keyguardAlpha
override val panelAlpha: MutableStateFlow<Float> = MutableStateFlow(1f)
+ override val zoomOut: MutableStateFlow<Float> = MutableStateFlow(0f)
override val lastRootViewTapPosition: MutableStateFlow<Point?> = MutableStateFlow(null)
@@ -122,18 +122,6 @@ class FakeKeyguardRepository @Inject constructor() : KeyguardRepository {
private val _isEncryptedOrLockdown = MutableStateFlow(true)
override val isEncryptedOrLockdown: Flow<Boolean> = _isEncryptedOrLockdown
- private val _shortcutAbsoluteTop = MutableStateFlow(0F)
- override val shortcutAbsoluteTop: StateFlow<Float>
- get() = _shortcutAbsoluteTop.asStateFlow()
-
- private val _notificationStackAbsoluteBottom = MutableStateFlow(0F)
- override val notificationStackAbsoluteBottom: StateFlow<Float>
- get() = _notificationStackAbsoluteBottom.asStateFlow()
-
- private val _wallpaperFocalAreaBounds = MutableStateFlow(RectF(0f, 0f, 0f, 0f))
- override val wallpaperFocalAreaBounds: StateFlow<RectF>
- get() = _wallpaperFocalAreaBounds.asStateFlow()
-
private val _isKeyguardEnabled = MutableStateFlow(true)
override val isKeyguardEnabled: StateFlow<Boolean> = _isKeyguardEnabled.asStateFlow()
@@ -272,6 +260,10 @@ class FakeKeyguardRepository @Inject constructor() : KeyguardRepository {
panelAlpha.value = alpha
}
+ override fun setZoomOut(zoomOutFromShadeRadius: Float) {
+ zoomOut.value = zoomOutFromShadeRadius
+ }
+
fun setIsEncryptedOrLockdown(value: Boolean) {
_isEncryptedOrLockdown.value = value
}
@@ -284,18 +276,6 @@ class FakeKeyguardRepository @Inject constructor() : KeyguardRepository {
return isShowKeyguardWhenReenabled
}
- override fun setShortcutAbsoluteTop(top: Float) {
- _shortcutAbsoluteTop.value = top
- }
-
- override fun setNotificationStackAbsoluteBottom(bottom: Float) {
- _notificationStackAbsoluteBottom.value = bottom
- }
-
- override fun setWallpaperFocalAreaBounds(bounds: RectF) {
- _wallpaperFocalAreaBounds.value = bounds
- }
-
override fun setCanIgnoreAuthAndReturnToGone(canWake: Boolean) {
_canIgnoreAuthAndReturnToGone.value = canWake
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryKosmos.kt
index ef9bd8282090..5793695a7f01 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryKosmos.kt
@@ -62,6 +62,7 @@ val Kosmos.defaultKeyguardBlueprint by
defaultSettingsPopupMenuSection = mock(),
defaultStatusBarSection = mock(),
defaultNotificationStackScrollLayoutSection = mock(),
+ aodPromotedNotificationSection = mock(),
aodNotificationIconsSection = mock(),
aodBurnInSection = mock(),
clockSection = keyguardClockSection,
@@ -69,7 +70,6 @@ val Kosmos.defaultKeyguardBlueprint by
keyguardSliceViewSection = mock(),
udfpsAccessibilityOverlaySection = mock(),
accessibilityActionsSection = mock(),
- aodPromotedNotificationSection = mock(),
)
}
@@ -84,6 +84,7 @@ val Kosmos.splitShadeBlueprint by
defaultStatusBarSection = mock(),
splitShadeNotificationStackScrollLayoutSection = mock(),
splitShadeGuidelines = mock(),
+ aodPromotedNotificationSection = mock(),
aodNotificationIconsSection = mock(),
aodBurnInSection = mock(),
clockSection = keyguardClockSection,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepositoryKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepositoryKosmos.kt
index e9eea83d54df..dacc78a35092 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepositoryKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepositoryKosmos.kt
@@ -16,6 +16,7 @@
package com.android.systemui.keyguard.data.repository
+import com.android.systemui.keyguard.shared.transition.keyguardTransitionAnimationCallbackDelegator
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.kosmos.testScope
@@ -28,4 +29,9 @@ var Kosmos.fakeKeyguardTransitionRepository by
var Kosmos.fakeKeyguardTransitionRepositorySpy: FakeKeyguardTransitionRepository by
Kosmos.Fixture { spy(fakeKeyguardTransitionRepository) }
var Kosmos.realKeyguardTransitionRepository: KeyguardTransitionRepository by
- Kosmos.Fixture { KeyguardTransitionRepositoryImpl(testDispatcher) }
+ Kosmos.Fixture {
+ KeyguardTransitionRepositoryImpl(
+ testDispatcher,
+ keyguardTransitionAnimationCallbackDelegator,
+ )
+ }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractorKosmos.kt
index 4634a7fd009f..fcdda9f13099 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractorKosmos.kt
@@ -43,6 +43,6 @@ var Kosmos.fromDozingTransitionInteractor by
keyguardOcclusionInteractor = keyguardOcclusionInteractor,
deviceEntryInteractor = deviceEntryInteractor,
wakeToGoneInteractor = keyguardWakeDirectlyToGoneInteractor,
- dreamManager = dreamManager
+ dreamManager = dreamManager,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractorKosmos.kt
index ff0f13e7111f..1698a5078038 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractorKosmos.kt
@@ -37,6 +37,6 @@ val Kosmos.fromGoneTransitionInteractor by
powerInteractor = powerInteractor,
communalSceneInteractor = communalSceneInteractor,
keyguardOcclusionInteractor = keyguardOcclusionInteractor,
- keyguardLockWhileAwakeInteractor = keyguardLockWhileAwakeInteractor,
+ keyguardShowWhileAwakeInteractor = keyguardShowWhileAwakeInteractor,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardClockInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardClockInteractorKosmos.kt
index bdb9abb03c5f..8844eb040f02 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardClockInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardClockInteractorKosmos.kt
@@ -23,6 +23,7 @@ import com.android.systemui.media.controls.domain.pipeline.interactor.mediaCarou
import com.android.systemui.shade.domain.interactor.shadeInteractor
import com.android.systemui.statusbar.notification.domain.interactor.activeNotificationsInteractor
import com.android.systemui.statusbar.notification.stack.domain.interactor.headsUpNotificationInteractor
+import com.android.systemui.wallpapers.domain.interactor.wallpaperFocalAreaInteractor
val Kosmos.keyguardClockInteractor by
Kosmos.Fixture {
@@ -35,5 +36,6 @@ val Kosmos.keyguardClockInteractor by
headsUpNotificationInteractor = headsUpNotificationInteractor,
applicationScope = applicationCoroutineScope,
keyguardClockRepository = keyguardClockRepository,
+ wallpaperFocalAreaInteractor = wallpaperFocalAreaInteractor,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorFactory.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorFactory.kt
index ee21bdc0b4c2..4e5abb883afd 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorFactory.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorFactory.kt
@@ -28,6 +28,8 @@ import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.shade.data.repository.FakeShadeRepository
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
+import com.android.systemui.wallpapers.data.repository.FakeWallpaperFocalAreaRepository
+import com.android.systemui.wallpapers.data.repository.WallpaperFocalAreaRepository
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
@@ -48,6 +50,8 @@ object KeyguardInteractorFactory {
bouncerRepository: FakeKeyguardBouncerRepository = FakeKeyguardBouncerRepository(),
configurationRepository: FakeConfigurationRepository = FakeConfigurationRepository(),
shadeRepository: FakeShadeRepository = FakeShadeRepository(),
+ wallpaperFocalAreaRepository: WallpaperFocalAreaRepository =
+ FakeWallpaperFocalAreaRepository(),
sceneInteractor: SceneInteractor = mock(),
fromGoneTransitionInteractor: FromGoneTransitionInteractor = mock(),
fromLockscreenTransitionInteractor: FromLockscreenTransitionInteractor = mock(),
@@ -84,6 +88,7 @@ object KeyguardInteractorFactory {
fromAlternateBouncerTransitionInteractor
},
applicationScope = testScope,
+ wallpaperFocalAreaRepository = wallpaperFocalAreaRepository,
),
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorKosmos.kt
index 869bae236d5c..f9b0290fe339 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorKosmos.kt
@@ -23,6 +23,7 @@ import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.testScope
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.shade.data.repository.shadeRepository
+import com.android.systemui.wallpapers.data.repository.wallpaperFocalAreaRepository
val Kosmos.keyguardInteractor: KeyguardInteractor by
Kosmos.Fixture {
@@ -38,5 +39,6 @@ val Kosmos.keyguardInteractor: KeyguardInteractor by
fromOccludedTransitionInteractor = { fromOccludedTransitionInteractor },
fromAlternateBouncerTransitionInteractor = { fromAlternateBouncerTransitionInteractor },
applicationScope = testScope.backgroundScope,
+ wallpaperFocalAreaRepository = wallpaperFocalAreaRepository,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorKosmos.kt
index ba64ed78f77c..22e76f614aad 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorKosmos.kt
@@ -22,7 +22,6 @@ import android.view.accessibility.AccessibilityManager
import com.android.internal.widget.lockPatternUtils
import com.android.keyguard.logging.KeyguardQuickAffordancesLogger
import com.android.systemui.animation.dialogTransitionAnimator
-import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
import com.android.systemui.dock.dockManager
import com.android.systemui.flags.featureFlagsClassic
import com.android.systemui.keyguard.data.repository.biometricSettingsRepository
@@ -54,7 +53,6 @@ var Kosmos.keyguardQuickAffordanceInteractor by Fixture {
devicePolicyManager = devicePolicyManager,
dockManager = dockManager,
biometricSettingsRepository = biometricSettingsRepository,
- communalSettingsInteractor = communalSettingsInteractor,
accessibilityManager = mock<AccessibilityManager>(),
backgroundDispatcher = testDispatcher,
appContext = applicationContext,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardServiceLockNowInteractor.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardServiceShowLockscreenInteractor.kt
index 29335c590a75..3cec5a9cd822 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardServiceLockNowInteractor.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardServiceShowLockscreenInteractor.kt
@@ -19,5 +19,5 @@ package com.android.systemui.keyguard.domain.interactor
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.testScope
-val Kosmos.keyguardServiceLockNowInteractor by
- Kosmos.Fixture { KeyguardServiceLockNowInteractor(backgroundScope = testScope) }
+val Kosmos.keyguardServiceShowLockscreenInteractor by
+ Kosmos.Fixture { KeyguardServiceShowLockscreenInteractor(backgroundScope = testScope) }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardLockWhileAwakeInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardShowWhileAwakeInteractorKosmos.kt
index 2423949cdacc..f7caeb69f17e 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardLockWhileAwakeInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardShowWhileAwakeInteractorKosmos.kt
@@ -19,11 +19,11 @@ package com.android.systemui.keyguard.domain.interactor
import com.android.systemui.keyguard.data.repository.biometricSettingsRepository
import com.android.systemui.kosmos.Kosmos
-val Kosmos.keyguardLockWhileAwakeInteractor by
+val Kosmos.keyguardShowWhileAwakeInteractor by
Kosmos.Fixture {
- KeyguardLockWhileAwakeInteractor(
+ KeyguardShowWhileAwakeInteractor(
biometricSettingsRepository = biometricSettingsRepository,
keyguardEnabledInteractor = keyguardEnabledInteractor,
- keyguardServiceLockNowInteractor = keyguardServiceLockNowInteractor,
+ keyguardServiceShowLockscreenInteractor = keyguardServiceShowLockscreenInteractor,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardWakeDirectlyToGoneInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardWakeDirectlyToGoneInteractorKosmos.kt
index 8c9163dd3b21..43fa718cff9a 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardWakeDirectlyToGoneInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardWakeDirectlyToGoneInteractorKosmos.kt
@@ -42,7 +42,7 @@ val Kosmos.keyguardWakeDirectlyToGoneInteractor by
fakeSettings,
selectedUserInteractor,
keyguardEnabledInteractor,
- keyguardServiceLockNowInteractor,
+ keyguardServiceShowLockscreenInteractor,
keyguardInteractor,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/LightRevealScrimInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/LightRevealScrimInteractorKosmos.kt
index d5bdbdbaa90d..1b1fe593a2e4 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/LightRevealScrimInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/LightRevealScrimInteractorKosmos.kt
@@ -20,6 +20,7 @@ import com.android.keyguard.logging.scrimLogger
import com.android.systemui.keyguard.data.lightRevealScrimRepository
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
+import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.power.domain.interactor.powerInteractor
val Kosmos.lightRevealScrimInteractor by
@@ -30,5 +31,6 @@ val Kosmos.lightRevealScrimInteractor by
applicationCoroutineScope,
scrimLogger,
{ powerInteractor },
+ backgroundDispatcher = testDispatcher,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/shared/transition/FakeKeyguardTransitionAnimationCallback.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/shared/transition/FakeKeyguardTransitionAnimationCallback.kt
new file mode 100644
index 000000000000..6a1ced52c7c9
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/shared/transition/FakeKeyguardTransitionAnimationCallback.kt
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.shared.transition
+
+import com.android.systemui.keyguard.shared.model.KeyguardState
+
+class FakeKeyguardTransitionAnimationCallback : KeyguardTransitionAnimationCallback {
+
+ private val _activeAnimations = mutableListOf<TransitionAnimation>()
+ /** The animations that have been started but not yet ended nor canceled. */
+ val activeAnimations: List<TransitionAnimation>
+ get() = _activeAnimations.toList()
+
+ private val _finishedAnimations = mutableListOf<TransitionAnimation>()
+ /** The animations that have ended. */
+ val finishedAnimations: List<TransitionAnimation>
+ get() = _finishedAnimations.toList()
+
+ private val _canceledAnimations = mutableListOf<TransitionAnimation>()
+ /** The animations that have been canceled. */
+ val canceledAnimations: List<TransitionAnimation>
+ get() = _canceledAnimations.toList()
+
+ override fun onAnimationStarted(from: KeyguardState, to: KeyguardState) {
+ _activeAnimations.add(TransitionAnimation(from = from, to = to))
+ }
+
+ override fun onAnimationEnded(from: KeyguardState, to: KeyguardState) {
+ val animation = TransitionAnimation(from = from, to = to)
+ check(_activeAnimations.remove(animation)) { "Ending an animation that wasn't started!" }
+ _finishedAnimations.add(animation)
+ }
+
+ override fun onAnimationCanceled(from: KeyguardState, to: KeyguardState) {
+ val animation = TransitionAnimation(from = from, to = to)
+ check(_activeAnimations.remove(animation)) { "Canceling an animation that wasn't started!" }
+ _canceledAnimations.add(animation)
+ }
+
+ data class TransitionAnimation(val from: KeyguardState, val to: KeyguardState)
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/shared/transition/KeyguardTransitionAnimationCallbackKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/shared/transition/KeyguardTransitionAnimationCallbackKosmos.kt
new file mode 100644
index 000000000000..a445d2c17cd3
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/shared/transition/KeyguardTransitionAnimationCallbackKosmos.kt
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.shared.transition
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+
+val Kosmos.keyguardTransitionAnimationCallbackDelegator by Fixture {
+ KeyguardTransitionAnimationCallbackDelegator()
+}
+
+val Kosmos.keyguardTransitionAnimationCallback: KeyguardTransitionAnimationCallback by Fixture {
+ fakeKeyguardTransitionAnimationCallback
+}
+
+val Kosmos.fakeKeyguardTransitionAnimationCallback by Fixture {
+ FakeKeyguardTransitionAnimationCallback()
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/DozingToDreamingTransitionViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/DozingToDreamingTransitionViewModelKosmos.kt
new file mode 100644
index 000000000000..8609626f9002
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/DozingToDreamingTransitionViewModelKosmos.kt
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import com.android.systemui.keyguard.ui.keyguardTransitionAnimationFlow
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+
+val Kosmos.dozingToDreamingTransitionViewModel by Fixture {
+ DozingToDreamingTransitionViewModel(animationFlow = keyguardTransitionAnimationFlow)
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelKosmos.kt
index 37df05b68f9e..ea3feeaf0854 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelKosmos.kt
@@ -20,7 +20,6 @@ import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor
import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
import com.android.systemui.keyguard.domain.interactor.pulseExpansionInteractor
-import com.android.systemui.keyguard.domain.interactor.wallpaperFocalAreaInteractor
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.kosmos.applicationCoroutineScope
@@ -30,6 +29,7 @@ import com.android.systemui.statusbar.notification.icon.ui.viewmodel.notificatio
import com.android.systemui.statusbar.notification.stack.domain.interactor.notificationsKeyguardInteractor
import com.android.systemui.statusbar.phone.dozeParameters
import com.android.systemui.statusbar.phone.screenOffAnimationController
+import com.android.systemui.wallpapers.domain.interactor.wallpaperFocalAreaInteractor
val Kosmos.keyguardRootViewModel by Fixture {
KeyguardRootViewModel(
@@ -55,6 +55,7 @@ val Kosmos.keyguardRootViewModel by Fixture {
aodToLockscreenTransitionViewModel = aodToLockscreenTransitionViewModel,
aodToOccludedTransitionViewModel = aodToOccludedTransitionViewModel,
aodToPrimaryBouncerTransitionViewModel = aodToPrimaryBouncerTransitionViewModel,
+ dozingToDreamingTransitionViewModel = dozingToDreamingTransitionViewModel,
dozingToGoneTransitionViewModel = dozingToGoneTransitionViewModel,
dozingToLockscreenTransitionViewModel = dozingToLockscreenTransitionViewModel,
dozingToOccludedTransitionViewModel = dozingToOccludedTransitionViewModel,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelKosmos.kt
index f47b2df607c1..dd13b8b143ae 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenContentViewModelKosmos.kt
@@ -20,21 +20,32 @@ import com.android.systemui.biometrics.authController
import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor
import com.android.systemui.keyguard.domain.interactor.keyguardBlueprintInteractor
import com.android.systemui.keyguard.domain.interactor.keyguardClockInteractor
+import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
+import com.android.systemui.keyguard.shared.transition.KeyguardTransitionAnimationCallback
+import com.android.systemui.keyguard.shared.transition.keyguardTransitionAnimationCallbackDelegator
import com.android.systemui.kosmos.Kosmos
-import com.android.systemui.scene.domain.interactor.sceneContainerOcclusionInteractor
+import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.shade.domain.interactor.shadeInteractor
import com.android.systemui.unfold.domain.interactor.unfoldTransitionInteractor
-val Kosmos.lockscreenContentViewModel by
- Kosmos.Fixture {
- LockscreenContentViewModel(
- clockInteractor = keyguardClockInteractor,
- interactor = keyguardBlueprintInteractor,
- authController = authController,
- touchHandling = keyguardTouchHandlingViewModel,
- shadeInteractor = shadeInteractor,
- unfoldTransitionInteractor = unfoldTransitionInteractor,
- occlusionInteractor = sceneContainerOcclusionInteractor,
- deviceEntryInteractor = deviceEntryInteractor,
- )
+val Kosmos.lockscreenContentViewModelFactory by Fixture {
+ object : LockscreenContentViewModel.Factory {
+ override fun create(
+ keyguardTransitionAnimationCallback: KeyguardTransitionAnimationCallback
+ ): LockscreenContentViewModel {
+ return LockscreenContentViewModel(
+ clockInteractor = keyguardClockInteractor,
+ interactor = keyguardBlueprintInteractor,
+ authController = authController,
+ touchHandling = keyguardTouchHandlingViewModel,
+ shadeInteractor = shadeInteractor,
+ unfoldTransitionInteractor = unfoldTransitionInteractor,
+ deviceEntryInteractor = deviceEntryInteractor,
+ transitionInteractor = keyguardTransitionInteractor,
+ keyguardTransitionAnimationCallbackDelegator =
+ keyguardTransitionAnimationCallbackDelegator,
+ keyguardTransitionAnimationCallback = keyguardTransitionAnimationCallback,
+ )
+ }
}
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModelKosmos.kt
index 2311c0a23db8..ec83157eb108 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModelKosmos.kt
@@ -22,12 +22,14 @@ import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.scene.domain.interactor.sceneContainerOcclusionInteractor
import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.shade.domain.interactor.shadeModeInteractor
val Kosmos.lockscreenUserActionsViewModel by Fixture {
LockscreenUserActionsViewModel(
deviceEntryInteractor = deviceEntryInteractor,
communalInteractor = communalInteractor,
shadeInteractor = shadeInteractor,
+ shadeModeInteractor = shadeModeInteractor,
occlusionInteractor = sceneContainerOcclusionInteractor,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/kosmos/KosmosJavaAdapter.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/kosmos/KosmosJavaAdapter.kt
index 35e90f06ddde..446e10671afb 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/kosmos/KosmosJavaAdapter.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/kosmos/KosmosJavaAdapter.kt
@@ -178,7 +178,9 @@ class KosmosJavaAdapter() {
val scrimStartable by lazy { kosmos.scrimStartable }
val sceneContainerOcclusionInteractor by lazy { kosmos.sceneContainerOcclusionInteractor }
val msdlPlayer by lazy { kosmos.fakeMSDLPlayer }
+
val shadeModeInteractor by lazy { kosmos.shadeModeInteractor }
+
val bouncerHapticHelper by lazy { kosmos.bouncerHapticPlayer }
val glanceableHubToLockscreenTransitionViewModel by lazy {
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/data/repository/FakeMediaProjectionRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/data/repository/FakeMediaProjectionRepository.kt
index e6256a58a365..6c52d54fdd06 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/data/repository/FakeMediaProjectionRepository.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/data/repository/FakeMediaProjectionRepository.kt
@@ -19,6 +19,8 @@ package com.android.systemui.mediaprojection.data.repository
import android.app.ActivityManager
import android.media.projection.StopReason
import com.android.systemui.mediaprojection.data.model.MediaProjectionState
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
class FakeMediaProjectionRepository : MediaProjectionRepository {
@@ -27,9 +29,18 @@ class FakeMediaProjectionRepository : MediaProjectionRepository {
override val mediaProjectionState: MutableStateFlow<MediaProjectionState> =
MutableStateFlow(MediaProjectionState.NotProjecting)
+ private val _projectionStartedDuringCallAndActivePostCallEvent = MutableSharedFlow<Unit>()
+
+ override val projectionStartedDuringCallAndActivePostCallEvent: Flow<Unit> =
+ _projectionStartedDuringCallAndActivePostCallEvent
+
var stopProjectingInvoked = false
override suspend fun stopProjecting(@StopReason stopReason: Int) {
stopProjectingInvoked = true
}
+
+ suspend fun emitProjectionStartedDuringCallAndActivePostCallEvent() {
+ _projectionStartedDuringCallAndActivePostCallEvent.emit(Unit)
+ }
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/taskswitcher/FakeMediaProjectionManager.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/taskswitcher/FakeMediaProjectionManager.kt
index 2b6032ccafe5..9b600513b8aa 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/taskswitcher/FakeMediaProjectionManager.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/taskswitcher/FakeMediaProjectionManager.kt
@@ -16,6 +16,7 @@
package com.android.systemui.mediaprojection.taskswitcher
+import android.media.projection.MediaProjectionEvent
import android.media.projection.MediaProjectionInfo
import android.media.projection.MediaProjectionManager
import android.os.Binder
@@ -61,14 +62,22 @@ class FakeMediaProjectionManager {
fun dispatchOnSessionSet(
info: MediaProjectionInfo = DEFAULT_INFO,
- session: ContentRecordingSession?
+ session: ContentRecordingSession?,
) {
callbacks.forEach { it.onRecordingSessionSet(info, session) }
}
+ fun dispatchEvent(
+ event: MediaProjectionEvent,
+ info: MediaProjectionInfo? = DEFAULT_INFO,
+ session: ContentRecordingSession? = null,
+ ) {
+ callbacks.forEach { it.onMediaProjectionEvent(event, info, session) }
+ }
+
companion object {
fun createDisplaySession(): ContentRecordingSession =
- ContentRecordingSession.createDisplaySession(/* displayToMirror = */ 123)
+ ContentRecordingSession.createDisplaySession(/* displayToMirror= */ 123)
fun createSingleTaskSession(token: IBinder = Binder()): ContentRecordingSession =
ContentRecordingSession.createTaskSession(token)
@@ -76,10 +85,6 @@ class FakeMediaProjectionManager {
private const val DEFAULT_PACKAGE_NAME = "com.media.projection.test"
private val DEFAULT_USER_HANDLE = UserHandle.getUserHandleForUid(UserHandle.myUserId())
private val DEFAULT_INFO =
- MediaProjectionInfo(
- DEFAULT_PACKAGE_NAME,
- DEFAULT_USER_HANDLE,
- /* launchCookie = */ null
- )
+ MediaProjectionInfo(DEFAULT_PACKAGE_NAME, DEFAULT_USER_HANDLE, /* launchCookie= */ null)
}
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/plugins/statusbar/StatusBarStateControllerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/plugins/statusbar/StatusBarStateControllerKosmos.kt
index 2e6d8ed5aa5b..4f024d7509ba 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/plugins/statusbar/StatusBarStateControllerKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/plugins/statusbar/StatusBarStateControllerKosmos.kt
@@ -19,7 +19,6 @@ package com.android.systemui.plugins.statusbar
import com.android.internal.logging.uiEventLogger
import com.android.systemui.bouncer.domain.interactor.alternateBouncerInteractor
import com.android.systemui.deviceentry.domain.interactor.deviceUnlockedInteractor
-import com.android.systemui.jank.interactionJankMonitor
import com.android.systemui.keyguard.domain.interactor.keyguardClockInteractor
import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
@@ -37,7 +36,6 @@ var Kosmos.statusBarStateController: SysuiStatusBarStateController by
Kosmos.Fixture {
StatusBarStateControllerImpl(
uiEventLogger,
- { interactionJankMonitor },
mock(),
{ keyguardInteractor },
{ keyguardTransitionInteractor },
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/process/ProcessKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/process/ProcessKosmos.kt
index 79167f840f60..4d1e0a8c025a 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/process/ProcessKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/process/ProcessKosmos.kt
@@ -16,6 +16,9 @@
package com.android.systemui.process
+import android.app.ActivityManager
+
import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.util.mockito.mock
-val Kosmos.processWrapper: ProcessWrapperFake by Kosmos.Fixture { ProcessWrapperFake() }
+val Kosmos.processWrapper: ProcessWrapperFake by Kosmos.Fixture { ProcessWrapperFake(mock<ActivityManager>()) }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/process/ProcessWrapperFake.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/process/ProcessWrapperFake.kt
index dee3644e95bd..152cc3019d85 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/process/ProcessWrapperFake.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/process/ProcessWrapperFake.kt
@@ -16,9 +16,10 @@
package com.android.systemui.process
+import android.app.ActivityManager
import android.os.UserHandle
-class ProcessWrapperFake : ProcessWrapper() {
+class ProcessWrapperFake(activityManager: ActivityManager) : ProcessWrapper(activityManager) {
var systemUser: Boolean = false
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/FakeTileDetailsContent.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/FakeTileDetailsContent.kt
new file mode 100644
index 000000000000..84a736439e08
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/FakeTileDetailsContent.kt
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.qs
+
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.text.style.TextAlign
+
+@Composable
+fun FakeTileDetailsContent() {
+ Text(
+ text = "Fake details content",
+ textAlign = TextAlign.Center,
+ fontWeight = FontWeight.ExtraBold,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/FakeTileDetailsViewModel.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/FakeTileDetailsViewModel.kt
index 555f019822c2..4f8d5a14e390 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/FakeTileDetailsViewModel.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/FakeTileDetailsViewModel.kt
@@ -16,24 +16,11 @@
package com.android.systemui.qs
-import androidx.compose.material3.Text
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.text.font.FontWeight
-import androidx.compose.ui.text.style.TextAlign
import com.android.systemui.plugins.qs.TileDetailsViewModel
class FakeTileDetailsViewModel(var tileSpec: String?) : TileDetailsViewModel() {
private var _clickOnSettingsButton = 0
- @Composable
- override fun GetContentView() {
- Text(
- text = "Fake details content",
- textAlign = TextAlign.Center,
- fontWeight = FontWeight.ExtraBold,
- )
- }
-
override fun clickOnSettingsButton() {
_clickOnSettingsButton++
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModelKosmos.kt
index 65e580cafcb5..18c4a4df7c7a 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/composefragment/viewmodel/QSFragmentComposeViewModelKosmos.kt
@@ -33,6 +33,7 @@ import com.android.systemui.qs.footerActionsViewModelFactory
import com.android.systemui.qs.panels.domain.interactor.tileSquishinessInteractor
import com.android.systemui.qs.panels.ui.viewmodel.inFirstPageViewModel
import com.android.systemui.qs.panels.ui.viewmodel.mediaInRowInLandscapeViewModelFactory
+import com.android.systemui.qs.panels.ui.viewmodel.quickQuickSettingsViewModelFactory
import com.android.systemui.qs.ui.viewmodel.quickSettingsContainerViewModelFactory
import com.android.systemui.shade.domain.interactor.shadeInteractor
import com.android.systemui.shade.largeScreenHeaderHelper
@@ -49,6 +50,7 @@ val Kosmos.qsFragmentComposeViewModelFactory by
return QSFragmentComposeViewModel(
quickSettingsContainerViewModelFactory,
mainResources,
+ quickQuickSettingsViewModelFactory,
footerActionsViewModelFactory,
footerActionsController,
sysuiStatusBarStateController,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/domain/interactor/QSColumnsInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/domain/interactor/QSColumnsInteractorKosmos.kt
index 47615f527d16..161f72af5e71 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/domain/interactor/QSColumnsInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/domain/interactor/QSColumnsInteractorKosmos.kt
@@ -19,9 +19,13 @@ package com.android.systemui.qs.panels.domain.interactor
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.qs.panels.data.repository.qsColumnsRepository
-import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.shade.domain.interactor.shadeModeInteractor
val Kosmos.qsColumnsInteractor by
Kosmos.Fixture {
- QSColumnsInteractor(applicationCoroutineScope, qsColumnsRepository, shadeInteractor)
+ QSColumnsInteractor(
+ scope = applicationCoroutineScope,
+ repo = qsColumnsRepository,
+ shadeModeInteractor = shadeModeInteractor,
+ )
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/ui/viewmodel/PaginatedGridViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/ui/viewmodel/PaginatedGridViewModelKosmos.kt
index 128cfcad5c45..93d6a2222e7f 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/ui/viewmodel/PaginatedGridViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/ui/viewmodel/PaginatedGridViewModelKosmos.kt
@@ -19,7 +19,6 @@ package com.android.systemui.qs.panels.ui.viewmodel
import com.android.systemui.classifier.domain.interactor.falsingInteractor
import com.android.systemui.development.ui.viewmodel.buildNumberViewModelFactory
import com.android.systemui.kosmos.Kosmos
-import com.android.systemui.qs.panels.domain.interactor.paginatedGridInteractor
import com.android.systemui.qs.panels.ui.viewmodel.toolbar.editModeButtonViewModelFactory
val Kosmos.paginatedGridViewModel by
@@ -27,7 +26,6 @@ val Kosmos.paginatedGridViewModel by
PaginatedGridViewModel(
iconTilesViewModel,
qsColumnsViewModelFactory,
- paginatedGridInteractor,
inFirstPageViewModel,
buildNumberViewModelFactory,
editModeButtonViewModelFactory,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/ui/viewmodel/TileGridViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/ui/viewmodel/TileGridViewModelKosmos.kt
index e79d213a8ffb..57c8e530f949 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/ui/viewmodel/TileGridViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/ui/viewmodel/TileGridViewModelKosmos.kt
@@ -17,7 +17,6 @@
package com.android.systemui.qs.panels.ui.viewmodel
import com.android.systemui.kosmos.Kosmos
-import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.qs.panels.domain.interactor.gridLayoutMap
import com.android.systemui.qs.panels.domain.interactor.gridLayoutTypeInteractor
import com.android.systemui.qs.panels.ui.compose.infinitegrid.infiniteGridLayout
@@ -30,6 +29,14 @@ val Kosmos.tileGridViewModel by
gridLayoutMap,
currentTilesInteractor,
infiniteGridLayout,
- applicationCoroutineScope,
)
}
+
+val Kosmos.tileGridViewModelFactory by
+ Kosmos.Fixture {
+ object : TileGridViewModel.Factory {
+ override fun create(): TileGridViewModel {
+ return tileGridViewModel
+ }
+ }
+ }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/pipeline/data/repository/FakeTileSpecRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/pipeline/data/repository/FakeTileSpecRepository.kt
index 1c69eab9602e..5fc31f8b9e10 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/pipeline/data/repository/FakeTileSpecRepository.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/pipeline/data/repository/FakeTileSpecRepository.kt
@@ -19,6 +19,7 @@ package com.android.systemui.qs.pipeline.data.repository
import com.android.systemui.qs.pipeline.data.model.RestoreData
import com.android.systemui.qs.pipeline.data.repository.TileSpecRepository.Companion.POSITION_AT_END
import com.android.systemui.qs.pipeline.shared.TileSpec
+import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
@@ -77,4 +78,10 @@ class FakeTileSpecRepository(
override suspend fun resetToDefault(userId: Int) {
with(getFlow(userId)) { value = defaultTilesRepository.defaultTiles }
}
+
+ override val tilesReadFromSetting: Channel<Pair<Set<TileSpec>, Int>> = Channel(capacity = 10)
+
+ suspend fun sendTilesReadFromSetting(tiles: Set<TileSpec>, userId: Int) {
+ tilesReadFromSetting.send(tiles to userId)
+ }
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractorKosmos.kt
index 13cbddff8803..3f07d05a4786 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileUserActionInteractorKosmos.kt
@@ -17,6 +17,7 @@
package com.android.systemui.qs.tiles.impl.modes.domain.interactor
import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.mainCoroutineContext
import com.android.systemui.qs.tiles.base.actions.qsTileIntentUserInputHandler
import com.android.systemui.statusbar.policy.domain.interactor.zenModeInteractor
import com.android.systemui.statusbar.policy.ui.dialog.modesDialogDelegate
@@ -26,6 +27,7 @@ import javax.inject.Provider
val Kosmos.modesTileUserActionInteractor: ModesTileUserActionInteractor by
Kosmos.Fixture {
ModesTileUserActionInteractor(
+ mainCoroutineContext,
qsTileIntentUserInputHandler,
Provider { modesDialogDelegate }.get(),
zenModeInteractor,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModelKosmos.kt
index f8fa5db4ddf7..31be050adc98 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsContainerViewModelKosmos.kt
@@ -20,9 +20,9 @@ import com.android.systemui.brightness.ui.viewmodel.brightnessSliderViewModelFac
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.qs.panels.ui.viewmodel.detailsViewModel
import com.android.systemui.qs.panels.ui.viewmodel.editModeViewModel
-import com.android.systemui.qs.panels.ui.viewmodel.quickQuickSettingsViewModelFactory
-import com.android.systemui.qs.panels.ui.viewmodel.tileGridViewModel
+import com.android.systemui.qs.panels.ui.viewmodel.tileGridViewModelFactory
import com.android.systemui.qs.panels.ui.viewmodel.toolbar.toolbarViewModelFactory
+import com.android.systemui.shade.domain.interactor.shadeModeInteractor
import com.android.systemui.shade.ui.viewmodel.shadeHeaderViewModelFactory
val Kosmos.quickSettingsContainerViewModelFactory by
@@ -33,13 +33,13 @@ val Kosmos.quickSettingsContainerViewModelFactory by
): QuickSettingsContainerViewModel {
return QuickSettingsContainerViewModel(
brightnessSliderViewModelFactory,
- quickQuickSettingsViewModelFactory,
shadeHeaderViewModelFactory,
+ tileGridViewModelFactory,
supportsBrightnessMirroring,
- tileGridViewModel,
editModeViewModel,
detailsViewModel,
toolbarViewModelFactory,
+ shadeModeInteractor,
)
}
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModelKosmos.kt
index 4f3b8f3541e1..108a20ab73d6 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsShadeOverlayContentViewModelKosmos.kt
@@ -19,7 +19,6 @@ package com.android.systemui.qs.ui.viewmodel
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.shade.domain.interactor.shadeInteractor
-import com.android.systemui.shade.ui.viewmodel.shadeHeaderViewModelFactory
import com.android.systemui.statusbar.notification.stack.domain.interactor.notificationStackAppearanceInteractor
val Kosmos.quickSettingsShadeOverlayContentViewModel: QuickSettingsShadeOverlayContentViewModel by
@@ -28,7 +27,5 @@ val Kosmos.quickSettingsShadeOverlayContentViewModel: QuickSettingsShadeOverlayC
shadeInteractor = shadeInteractor,
sceneInteractor = sceneInteractor,
notificationStackAppearanceInteractor = notificationStackAppearanceInteractor,
- shadeHeaderViewModelFactory = shadeHeaderViewModelFactory,
- quickSettingsContainerViewModelFactory = quickSettingsContainerViewModelFactory,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneKosmos.kt
index 609f97d0b249..ce298bb90ba2 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneKosmos.kt
@@ -4,6 +4,7 @@ import android.view.View
import com.android.compose.animation.scene.ObservableTransitionState
import com.android.systemui.classifier.domain.interactor.falsingInteractor
import com.android.systemui.haptics.msdl.msdlPlayer
+import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
import com.android.systemui.keyguard.ui.viewmodel.lightRevealScrimViewModel
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
@@ -14,11 +15,12 @@ import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.SceneContainerConfig
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.ui.FakeOverlay
-import com.android.systemui.scene.ui.composable.SceneContainerTransitions
+import com.android.systemui.scene.ui.composable.ConstantSceneContainerTransitionsBuilder
import com.android.systemui.scene.ui.viewmodel.SceneContainerHapticsViewModel
import com.android.systemui.scene.ui.viewmodel.SceneContainerViewModel
import com.android.systemui.scene.ui.viewmodel.splitEdgeDetector
import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.shade.domain.interactor.shadeModeInteractor
import com.android.systemui.statusbar.domain.interactor.remoteInputInteractor
import com.android.systemui.wallpapers.ui.viewmodel.wallpaperViewModel
import kotlinx.coroutines.flow.MutableStateFlow
@@ -48,6 +50,8 @@ val Kosmos.fakeOverlays by Fixture { fakeOverlaysByKeys.values.toSet() }
val Kosmos.overlays by Fixture { fakeOverlays }
+val Kosmos.sceneTransitionsBuilder by Fixture { ConstantSceneContainerTransitionsBuilder() }
+
var Kosmos.sceneContainerConfig by Fixture {
val navigationDistances =
mapOf(
@@ -63,9 +67,9 @@ var Kosmos.sceneContainerConfig by Fixture {
SceneContainerConfig(
sceneKeys = sceneKeys,
initialSceneKey = initialSceneKey,
- transitions = SceneContainerTransitions,
overlayKeys = overlayKeys,
navigationDistances = navigationDistances,
+ transitionsBuilder = sceneTransitionsBuilder,
)
}
@@ -91,7 +95,7 @@ val Kosmos.sceneContainerViewModelFactory by Fixture {
sceneInteractor = sceneInteractor,
falsingInteractor = falsingInteractor,
powerInteractor = powerInteractor,
- shadeInteractor = shadeInteractor,
+ shadeModeInteractor = shadeModeInteractor,
remoteInputInteractor = remoteInputInteractor,
splitEdgeDetector = splitEdgeDetector,
logger = sceneLogger,
@@ -100,6 +104,7 @@ val Kosmos.sceneContainerViewModelFactory by Fixture {
motionEventHandlerReceiver = motionEventHandlerReceiver,
lightRevealScrim = lightRevealScrimViewModel,
wallpaperViewModel = wallpaperViewModel,
+ keyguardInteractor = keyguardInteractor,
)
}
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/domain/startable/SceneContainerStartableKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/domain/startable/SceneContainerStartableKosmos.kt
index 65bfafbfa9b0..7a9b052481cb 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/domain/startable/SceneContainerStartableKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/domain/startable/SceneContainerStartableKosmos.kt
@@ -33,6 +33,7 @@ import com.android.systemui.haptics.vibratorHelper
import com.android.systemui.keyguard.dismissCallbackRegistry
import com.android.systemui.keyguard.domain.interactor.keyguardEnabledInteractor
import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
+import com.android.systemui.keyguard.domain.interactor.trustInteractor
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.kosmos.testScope
@@ -91,5 +92,6 @@ val Kosmos.sceneContainerStartable by Fixture {
activityTransitionAnimator = activityTransitionAnimator,
shadeModeInteractor = shadeModeInteractor,
tableLogBuffer = logcatTableLogBuffer(this, "sceneFrameworkTableLogBuffer"),
+ trustInteractor = trustInteractor,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/data/repository/ShadeDisplaysRepositoryKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/data/repository/ShadeDisplaysRepositoryKosmos.kt
index d9a348d93533..ba7557ef7f71 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/data/repository/ShadeDisplaysRepositoryKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/data/repository/ShadeDisplaysRepositoryKosmos.kt
@@ -74,6 +74,7 @@ val Kosmos.shadeDisplayPolicies: Set<ShadeDisplayPolicy> by
defaultShadeDisplayPolicy,
anyExternalShadeDisplayPolicy,
statusBarTouchShadeDisplayPolicy,
+ focusShadeDisplayPolicy,
FakeShadeDisplayPolicy,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorKosmos.kt
index 5dc03338f19b..9eff63ca8a8c 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorKosmos.kt
@@ -24,6 +24,7 @@ val Kosmos.shadeBackActionInteractor by
Kosmos.Fixture {
ShadeBackActionInteractorImpl(
shadeInteractor = shadeInteractor,
+ shadeModeInteractor = shadeModeInteractor,
sceneInteractor = sceneInteractor,
deviceEntryInteractor = deviceEntryInteractor,
)
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractorKosmos.kt
index 170d067b5c0c..46314135c574 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractorKosmos.kt
@@ -28,6 +28,7 @@ import com.android.systemui.shade.data.repository.shadeExpansionIntent
import com.android.systemui.statusbar.notification.domain.interactor.activeNotificationsInteractor
import com.android.systemui.statusbar.notification.row.notificationRebindingTracker
import com.android.systemui.statusbar.notification.stack.notificationStackRebindingHider
+import com.android.systemui.statusbar.policy.configurationController
import java.util.Optional
import org.mockito.kotlin.any
import org.mockito.kotlin.mock
@@ -59,5 +60,6 @@ val Kosmos.shadeDisplaysInteractor by
activeNotificationsInteractor,
notificationRebindingTracker,
Optional.of(notificationStackRebindingHider),
+ configurationController,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/interactor/ShadeModeInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/interactor/ShadeModeInteractorKosmos.kt
index 2ba9c8094aac..614b4191d6ce 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/interactor/ShadeModeInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/domain/interactor/ShadeModeInteractorKosmos.kt
@@ -36,6 +36,8 @@ val Kosmos.shadeModeInteractor by Fixture {
)
}
+val Kosmos.shadeMode by Fixture { shadeModeInteractor.shadeMode }
+
// TODO(b/391578667): Make this user-aware once supported by FakeSecureSettingsRepository.
/**
* Enables the Dual Shade setting, and (optionally) sets the shade layout to be wide (`true`) or
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelKosmos.kt
index 7eb9f3472482..cfc2075c1352 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeHeaderViewModelKosmos.kt
@@ -17,6 +17,7 @@
package com.android.systemui.shade.ui.viewmodel
import android.content.applicationContext
+import com.android.systemui.battery.BatteryMeterViewController
import com.android.systemui.broadcast.broadcastDispatcher
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.plugins.activityStarter
@@ -24,8 +25,13 @@ import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.shade.domain.interactor.privacyChipInteractor
import com.android.systemui.shade.domain.interactor.shadeHeaderClockInteractor
import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.shade.domain.interactor.shadeModeInteractor
+import com.android.systemui.statusbar.notification.icon.ui.viewbinder.NotificationIconContainerStatusBarViewBinder
+import com.android.systemui.statusbar.phone.ui.StatusBarIconController
+import com.android.systemui.statusbar.phone.ui.TintedIconManager
import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.mobileIconsInteractor
import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.mobileIconsViewModel
+import org.mockito.kotlin.mock
val Kosmos.shadeHeaderViewModel: ShadeHeaderViewModel by
Kosmos.Fixture {
@@ -34,10 +40,16 @@ val Kosmos.shadeHeaderViewModel: ShadeHeaderViewModel by
activityStarter = activityStarter,
sceneInteractor = sceneInteractor,
shadeInteractor = shadeInteractor,
+ shadeModeInteractor = shadeModeInteractor,
mobileIconsInteractor = mobileIconsInteractor,
mobileIconsViewModel = mobileIconsViewModel,
privacyChipInteractor = privacyChipInteractor,
clockInteractor = shadeHeaderClockInteractor,
+ tintedIconManagerFactory = mock<TintedIconManager.Factory>(),
+ batteryMeterViewControllerFactory = mock<BatteryMeterViewController.Factory>(),
+ statusBarIconController = mock<StatusBarIconController>(),
+ notificationIconContainerStatusBarViewBinder =
+ mock<NotificationIconContainerStatusBarViewBinder>(),
broadcastDispatcher = broadcastDispatcher,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModelKosmos.kt
index 694bb6e87ef6..db4b979622bb 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModelKosmos.kt
@@ -25,7 +25,7 @@ import com.android.systemui.qs.footerActionsViewModelFactory
import com.android.systemui.qs.ui.adapter.qsSceneAdapter
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.settings.brightness.ui.viewmodel.brightnessMirrorViewModelFactory
-import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.shade.domain.interactor.shadeModeInteractor
import com.android.systemui.statusbar.disableflags.domain.interactor.disableFlagsInteractor
import com.android.systemui.unfold.domain.interactor.unfoldTransitionInteractor
@@ -35,7 +35,7 @@ val Kosmos.shadeSceneContentViewModel: ShadeSceneContentViewModel by Fixture {
qsSceneAdapter = qsSceneAdapter,
brightnessMirrorViewModelFactory = brightnessMirrorViewModelFactory,
mediaCarouselInteractor = mediaCarouselInteractor,
- shadeInteractor = shadeInteractor,
+ shadeModeInteractor = shadeModeInteractor,
disableFlagsInteractor = disableFlagsInteractor,
footerActionsViewModelFactory = footerActionsViewModelFactory,
footerActionsController = footerActionsController,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModelKosmos.kt
index 0aeea4e1a2e5..26355930f1a1 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeUserActionsViewModelKosmos.kt
@@ -20,12 +20,12 @@ import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.qs.ui.adapter.qsSceneAdapter
import com.android.systemui.scene.domain.interactor.sceneBackInteractor
-import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.shade.domain.interactor.shadeModeInteractor
val Kosmos.shadeUserActionsViewModel: ShadeUserActionsViewModel by Fixture {
ShadeUserActionsViewModel(
qsSceneAdapter = qsSceneAdapter,
- shadeInteractor = shadeInteractor,
+ shadeModeInteractor = shadeModeInteractor,
sceneBackInteractor = sceneBackInteractor,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModelKosmos.kt
index 1e304d979e03..ab61a3ef4c3f 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModelKosmos.kt
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.chips.call.ui.viewmodel
+import android.content.applicationContext
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.plugins.activityStarter
@@ -26,6 +27,7 @@ import com.android.systemui.util.time.fakeSystemClock
val Kosmos.callChipViewModel: CallChipViewModel by
Kosmos.Fixture {
CallChipViewModel(
+ applicationContext,
scope = applicationCoroutineScope,
interactor = callChipInteractor,
systemClock = fakeSystemClock,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModelKosmos.kt
index d0c80c7332b3..878c2deb43b2 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/notification/ui/viewmodel/NotifChipsViewModelKosmos.kt
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.chips.notification.ui.viewmodel
+import android.content.applicationContext
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.statusbar.chips.notification.domain.interactor.statusBarNotificationChipsInteractor
@@ -24,6 +25,7 @@ import com.android.systemui.statusbar.notification.stack.domain.interactor.heads
val Kosmos.notifChipsViewModel: NotifChipsViewModel by
Kosmos.Fixture {
NotifChipsViewModel(
+ applicationContext,
applicationCoroutineScope,
statusBarNotificationChipsInteractor,
headsUpNotificationInteractor,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModelKosmos.kt
index ee34aa642e51..212049a0ce52 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModelKosmos.kt
@@ -16,6 +16,8 @@
package com.android.systemui.statusbar.chips.ui.viewmodel
+import com.android.systemui.biometrics.domain.interactor.displayStateInteractor
+import com.android.systemui.common.ui.domain.interactor.configurationInteractor
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.testScope
import com.android.systemui.statusbar.chips.call.ui.viewmodel.callChipViewModel
@@ -34,6 +36,8 @@ val Kosmos.ongoingActivityChipsViewModel: OngoingActivityChipsViewModel by
castToOtherDeviceChipViewModel = castToOtherDeviceChipViewModel,
callChipViewModel = callChipViewModel,
notifChipsViewModel = notifChipsViewModel,
+ displayStateInteractor = displayStateInteractor,
+ configurationInteractor = configurationInteractor,
logger = statusBarChipsLogger,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/core/StatusBarOrchestratorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/core/StatusBarOrchestratorKosmos.kt
index 8c37bd739bc5..bdcab5fd2eca 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/core/StatusBarOrchestratorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/core/StatusBarOrchestratorKosmos.kt
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.core
import android.content.testableContext
+import android.view.mockIWindowManager
import com.android.systemui.bouncer.domain.interactor.primaryBouncerInteractor
import com.android.systemui.display.data.repository.displayRepository
import com.android.systemui.display.data.repository.displayScopeRepository
@@ -84,5 +85,6 @@ val Kosmos.multiDisplayStatusBarStarter by
multiDisplayAutoHideControllerStore,
privacyDotWindowControllerStore,
lightBarControllerStore,
+ mockIWindowManager,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/data/model/ActiveNotificationModelBuilder.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/data/model/ActiveNotificationModelBuilder.kt
index c6ae15df6859..63085e178e7d 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/data/model/ActiveNotificationModelBuilder.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/data/model/ActiveNotificationModelBuilder.kt
@@ -43,6 +43,7 @@ fun activeNotificationModel(
instanceId: Int? = null,
isGroupSummary: Boolean = false,
packageName: String = "pkg",
+ appName: String = "appName",
contentIntent: PendingIntent? = null,
bucket: Int = BUCKET_UNKNOWN,
callType: CallType = CallType.None,
@@ -64,6 +65,7 @@ fun activeNotificationModel(
statusBarChipIconView = statusBarChipIcon,
uid = uid,
packageName = packageName,
+ appName = appName,
contentIntent = contentIntent,
instanceId = instanceId,
isGroupSummary = isGroupSummary,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationListInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationListInteractorKosmos.kt
index f7acae9846df..0acf98fec054 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationListInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationListInteractorKosmos.kt
@@ -16,11 +16,16 @@
package com.android.systemui.statusbar.notification.domain.interactor
+import android.content.applicationContext
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.statusbar.notification.collection.provider.sectionStyleProvider
import com.android.systemui.statusbar.notification.data.repository.activeNotificationListRepository
val Kosmos.renderNotificationListInteractor by
Kosmos.Fixture {
- RenderNotificationListInteractor(activeNotificationListRepository, sectionStyleProvider)
+ RenderNotificationListInteractor(
+ activeNotificationListRepository,
+ sectionStyleProvider,
+ applicationContext,
+ )
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/promoted/FakePromotedNotificationContentExtractor.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/promoted/FakePromotedNotificationContentExtractor.kt
index 680e0de22794..8fdf5dbf2aeb 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/promoted/FakePromotedNotificationContentExtractor.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/promoted/FakePromotedNotificationContentExtractor.kt
@@ -19,6 +19,7 @@ package com.android.systemui.statusbar.notification.promoted
import android.app.Notification
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel
+import com.android.systemui.statusbar.notification.row.shared.ImageModelProvider
import org.junit.Assert
class FakePromotedNotificationContentExtractor : PromotedNotificationContentExtractor {
@@ -29,6 +30,7 @@ class FakePromotedNotificationContentExtractor : PromotedNotificationContentExtr
override fun extractContent(
entry: NotificationEntry,
recoveredBuilder: Notification.Builder,
+ imageModelProvider: ImageModelProvider,
): PromotedNotificationContentModel? {
extractCalls.add(entry to recoveredBuilder)
@@ -38,13 +40,13 @@ class FakePromotedNotificationContentExtractor : PromotedNotificationContentExtr
} else {
// If entries *are* set, fail on unexpected ones.
Assert.assertTrue(contentForEntry.containsKey(entry))
- return contentForEntry.get(entry)
+ return contentForEntry[entry]
}
}
fun resetForEntry(entry: NotificationEntry, content: PromotedNotificationContentModel?) {
contentForEntry.clear()
- contentForEntry.put(entry, content)
+ contentForEntry[entry] = content
extractCalls.clear()
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorKosmos.kt
index 912d5027c494..63521de096c9 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/promoted/PromotedNotificationContentExtractorKosmos.kt
@@ -18,8 +18,13 @@ package com.android.systemui.statusbar.notification.promoted
import android.content.applicationContext
import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.statusbar.notification.row.shared.skeletonImageTransform
var Kosmos.promotedNotificationContentExtractor by
Kosmos.Fixture {
- PromotedNotificationContentExtractorImpl(applicationContext, promotedNotificationLogger)
+ PromotedNotificationContentExtractorImpl(
+ applicationContext,
+ skeletonImageTransform,
+ promotedNotificationLogger,
+ )
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowBuilder.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowBuilder.kt
index 6246d986f9e5..e445a73b06d0 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowBuilder.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowBuilder.kt
@@ -78,6 +78,7 @@ import com.android.systemui.statusbar.notification.row.icon.AppIconProviderImpl
import com.android.systemui.statusbar.notification.row.icon.NotificationIconStyleProviderImpl
import com.android.systemui.statusbar.notification.row.icon.NotificationRowIconViewInflaterFactory
import com.android.systemui.statusbar.notification.row.shared.NotificationRowContentBinderRefactor
+import com.android.systemui.statusbar.notification.row.shared.SkeletonImageTransform
import com.android.systemui.statusbar.notification.stack.NotificationChildrenContainerLogger
import com.android.systemui.statusbar.phone.KeyguardBypassController
import com.android.systemui.statusbar.phone.KeyguardDismissUtil
@@ -218,12 +219,14 @@ class ExpandableNotificationRowBuilder(
}
val conversationProcessor =
ConversationNotificationProcessor(
+ context,
Mockito.mock(LauncherApps::class.java, STUB_ONLY),
Mockito.mock(ConversationNotificationManager::class.java, STUB_ONLY),
)
val promotedNotificationContentExtractor =
PromotedNotificationContentExtractorImpl(
context,
+ SkeletonImageTransform(context),
PromotedNotificationLogger(logcatLogBuffer("PromotedNotifLog")),
)
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/domain/interactor/PaginatedGridInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/shared/PromotedNotificationContentExtractorKosmos.kt
index a922e5df2853..16688235cdbb 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/domain/interactor/PaginatedGridInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/shared/PromotedNotificationContentExtractorKosmos.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2024 The Android Open Source Project
+ * Copyright (C) 2025 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,10 +14,9 @@
* limitations under the License.
*/
-package com.android.systemui.qs.panels.domain.interactor
+package com.android.systemui.statusbar.notification.row.shared
+import android.content.applicationContext
import com.android.systemui.kosmos.Kosmos
-import com.android.systemui.qs.panels.data.repository.paginatedGridRepository
-val Kosmos.paginatedGridInteractor by
- Kosmos.Fixture { PaginatedGridInteractor(paginatedGridRepository) }
+var Kosmos.skeletonImageTransform by Kosmos.Fixture { SkeletonImageTransform(applicationContext) }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationStackAppearanceInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationStackAppearanceInteractorKosmos.kt
index 2772d3698d88..87704cc39eaf 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationStackAppearanceInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationStackAppearanceInteractorKosmos.kt
@@ -19,7 +19,7 @@ package com.android.systemui.statusbar.notification.stack.domain.interactor
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.scene.domain.interactor.sceneInteractor
-import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.shade.domain.interactor.shadeModeInteractor
import com.android.systemui.statusbar.notification.stack.data.repository.notificationPlaceholderRepository
import com.android.systemui.statusbar.notification.stack.data.repository.notificationViewHeightRepository
@@ -28,6 +28,6 @@ val Kosmos.notificationStackAppearanceInteractor by Fixture {
viewHeightRepository = notificationViewHeightRepository,
placeholderRepository = notificationPlaceholderRepository,
sceneInteractor = sceneInteractor,
- shadeInteractor = shadeInteractor,
+ shadeModeInteractor = shadeModeInteractor,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/view/NotificationStatsLoggerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/view/NotificationStatsLoggerKosmos.kt
index de52155dce79..f91c2f620bb1 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/view/NotificationStatsLoggerKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/view/NotificationStatsLoggerKosmos.kt
@@ -26,7 +26,7 @@ import com.android.systemui.statusbar.notification.logging.notificationPanelLogg
val Kosmos.notificationStatsLogger by Fixture {
NotificationStatsLoggerImpl(
- applicationScope = testScope,
+ applicationScope = testScope.backgroundScope,
bgDispatcher = testDispatcher,
statusBarService = statusBarService,
notificationListenerService = notificationListenerService,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationScrollViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationScrollViewModelKosmos.kt
index 7244d465ed7e..167b11da9dba 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationScrollViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationScrollViewModelKosmos.kt
@@ -22,6 +22,7 @@ import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.shade.domain.interactor.shadeModeInteractor
import com.android.systemui.statusbar.domain.interactor.remoteInputInteractor
import com.android.systemui.statusbar.notification.stack.domain.interactor.notificationStackAppearanceInteractor
@@ -30,6 +31,7 @@ val Kosmos.notificationScrollViewModel by Fixture {
dumpManager = dumpManager,
stackAppearanceInteractor = notificationStackAppearanceInteractor,
shadeInteractor = shadeInteractor,
+ shadeModeInteractor = shadeModeInteractor,
remoteInputInteractor = remoteInputInteractor,
sceneInteractor = sceneInteractor,
keyguardInteractor = { keyguardInteractor },
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModelKosmos.kt
index e5cf0a90ebbd..084777417334 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModelKosmos.kt
@@ -22,6 +22,7 @@ import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.shade.domain.interactor.shadeModeInteractor
import com.android.systemui.statusbar.domain.interactor.remoteInputInteractor
import com.android.systemui.statusbar.notification.stack.domain.interactor.headsUpNotificationInteractor
import com.android.systemui.statusbar.notification.stack.domain.interactor.notificationStackAppearanceInteractor
@@ -31,6 +32,7 @@ val Kosmos.notificationsPlaceholderViewModel by Fixture {
interactor = notificationStackAppearanceInteractor,
sceneInteractor = sceneInteractor,
shadeInteractor = shadeInteractor,
+ shadeModeInteractor = shadeModeInteractor,
headsUpNotificationInteractor = headsUpNotificationInteractor,
remoteInputInteractor = remoteInputInteractor,
featureFlags = featureFlagsClassic,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelKosmos.kt
index 45c56ae0ab7a..7a2b7c24252b 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelKosmos.kt
@@ -54,6 +54,7 @@ import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.shade.domain.interactor.shadeModeInteractor
import com.android.systemui.shade.largeScreenHeaderHelper
import com.android.systemui.statusbar.notification.stack.domain.interactor.headsUpNotificationInteractor
import com.android.systemui.statusbar.notification.stack.domain.interactor.notificationStackAppearanceInteractor
@@ -71,6 +72,7 @@ val Kosmos.sharedNotificationContainerViewModel by Fixture {
keyguardInteractor = keyguardInteractor,
keyguardTransitionInteractor = keyguardTransitionInteractor,
shadeInteractor = shadeInteractor,
+ shadeModeInteractor = shadeModeInteractor,
notificationStackAppearanceInteractor = notificationStackAppearanceInteractor,
alternateBouncerToGoneTransitionViewModel = alternateBouncerToGoneTransitionViewModel,
alternateBouncerToPrimaryBouncerTransitionViewModel =
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ongoingcall/shared/model/OngoingCallModelBuilder.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ongoingcall/shared/model/OngoingCallModelBuilder.kt
index f4e74fe0e6bb..923b36d4f2cf 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ongoingcall/shared/model/OngoingCallModelBuilder.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ongoingcall/shared/model/OngoingCallModelBuilder.kt
@@ -26,5 +26,14 @@ fun inCallModel(
notificationIcon: StatusBarIconView? = null,
intent: PendingIntent? = null,
notificationKey: String = "test",
+ appName: String = "",
promotedContent: PromotedNotificationContentModel? = null,
-) = OngoingCallModel.InCall(startTimeMs, notificationIcon, intent, notificationKey, promotedContent)
+) =
+ OngoingCallModel.InCall(
+ startTimeMs,
+ notificationIcon,
+ intent,
+ notificationKey,
+ appName,
+ promotedContent,
+ )
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModelKosmos.kt
index f8bf3c3fbbd9..bc29dba3442c 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/HomeStatusBarViewModelKosmos.kt
@@ -20,11 +20,13 @@ import android.content.testableContext
import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
import com.android.systemui.kosmos.Kosmos
-import com.android.systemui.kosmos.applicationCoroutineScope
+import com.android.systemui.kosmos.backgroundScope
+import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.log.table.tableLogBufferFactory
import com.android.systemui.scene.domain.interactor.sceneContainerOcclusionInteractor
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.statusbar.chips.sharetoapp.ui.viewmodel.shareToAppChipViewModel
import com.android.systemui.statusbar.chips.ui.viewmodel.ongoingActivityChipsViewModel
import com.android.systemui.statusbar.events.domain.interactor.systemStatusEventAnimationInteractor
import com.android.systemui.statusbar.featurepods.popups.ui.viewmodel.statusBarPopupChipsViewModel
@@ -53,10 +55,12 @@ var Kosmos.homeStatusBarViewModel: HomeStatusBarViewModel by
sceneInteractor,
sceneContainerOcclusionInteractor,
shadeInteractor,
+ shareToAppChipViewModel,
ongoingActivityChipsViewModel,
statusBarPopupChipsViewModel,
systemStatusEventAnimationInteractor,
multiDisplayStatusBarContentInsetsViewModelStore,
- applicationCoroutineScope,
+ backgroundScope,
+ testDispatcher,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/policy/UserSwitcherControllerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/policy/UserSwitcherControllerKosmos.kt
new file mode 100644
index 000000000000..51168d69d8e2
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/policy/UserSwitcherControllerKosmos.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.policy
+
+import android.content.applicationContext
+import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.plugins.activityStarter
+import com.android.systemui.user.domain.interactor.guestUserInteractor
+import com.android.systemui.user.domain.interactor.userSwitcherInteractor
+
+val Kosmos.userSwitcherController by Fixture {
+ UserSwitcherController(
+ applicationContext = applicationContext,
+ userSwitcherInteractorLazy = { userSwitcherInteractor },
+ guestUserInteractorLazy = { guestUserInteractor },
+ keyguardInteractorLazy = { keyguardInteractor },
+ activityStarter = activityStarter,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ringer/VolumeDialogRingerViewBinderKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ringer/VolumeDialogRingerViewBinderKosmos.kt
index 7cbdc3d9f6ee..2c7a26b7071e 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ringer/VolumeDialogRingerViewBinderKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ringer/VolumeDialogRingerViewBinderKosmos.kt
@@ -19,6 +19,9 @@ package com.android.systemui.volume.dialog.ringer
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.volume.dialog.ringer.ui.binder.VolumeDialogRingerViewBinder
import com.android.systemui.volume.dialog.ringer.ui.viewmodel.volumeDialogRingerDrawerViewModel
+import com.android.systemui.volume.dialog.ui.viewmodel.volumeDialogViewModel
val Kosmos.volumeDialogRingerViewBinder by
- Kosmos.Fixture { VolumeDialogRingerViewBinder(volumeDialogRingerDrawerViewModel) }
+ Kosmos.Fixture {
+ VolumeDialogRingerViewBinder(volumeDialogRingerDrawerViewModel, volumeDialogViewModel)
+ }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/settings/ui/binder/VolumeDialogSettingsButtonViewBinderKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/settings/ui/binder/VolumeDialogSettingsButtonViewBinderKosmos.kt
index f9e128ddd810..b8b6d97aaadd 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/settings/ui/binder/VolumeDialogSettingsButtonViewBinderKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/settings/ui/binder/VolumeDialogSettingsButtonViewBinderKosmos.kt
@@ -18,6 +18,12 @@ package com.android.systemui.volume.dialog.settings.ui.binder
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.volume.dialog.settings.ui.viewmodel.volumeDialogSettingsButtonViewModel
+import com.android.systemui.volume.dialog.ui.viewmodel.volumeDialogViewModel
val Kosmos.volumeDialogSettingsButtonViewBinder by
- Kosmos.Fixture { VolumeDialogSettingsButtonViewBinder(volumeDialogSettingsButtonViewModel) }
+ Kosmos.Fixture {
+ VolumeDialogSettingsButtonViewBinder(
+ volumeDialogSettingsButtonViewModel,
+ volumeDialogViewModel,
+ )
+ }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSlidersViewBinderKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSlidersViewBinderKosmos.kt
index 83527d994e70..3e70377f2080 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSlidersViewBinderKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSlidersViewBinderKosmos.kt
@@ -18,6 +18,9 @@ package com.android.systemui.volume.dialog.sliders.ui
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.volume.dialog.sliders.ui.viewmodel.volumeDialogSlidersViewModel
+import com.android.systemui.volume.dialog.ui.viewmodel.volumeDialogViewModel
val Kosmos.volumeDialogSlidersViewBinder by
- Kosmos.Fixture { VolumeDialogSlidersViewBinder(volumeDialogSlidersViewModel) }
+ Kosmos.Fixture {
+ VolumeDialogSlidersViewBinder(volumeDialogSlidersViewModel, volumeDialogViewModel)
+ }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/mediaoutput/MediaOutputModuleKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/mediaoutput/MediaOutputModuleKosmos.kt
index 556c34d85f8e..0c814c566d63 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/mediaoutput/MediaOutputModuleKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/mediaoutput/MediaOutputModuleKosmos.kt
@@ -16,16 +16,13 @@
package com.android.systemui.volume.panel.component.mediaoutput
-import android.content.applicationContext
import com.android.systemui.kosmos.Kosmos
-import com.android.systemui.kosmos.testScope
-import com.android.systemui.volume.panel.component.mediaoutput.domain.MediaOutputAvailabilityCriteria
import com.android.systemui.volume.panel.component.mediaoutput.ui.composable.MediaOutputComponent
import com.android.systemui.volume.panel.component.mediaoutput.ui.viewmodel.mediaOutputViewModel
+import com.android.systemui.volume.panel.domain.ComponentAvailabilityCriteria
+import com.android.systemui.volume.panel.domain.availableCriteria
var Kosmos.mediaOutputComponent: MediaOutputComponent by
Kosmos.Fixture { MediaOutputComponent(mediaOutputViewModel) }
-var Kosmos.mediaOutputAvailabilityCriteria by
- Kosmos.Fixture {
- MediaOutputAvailabilityCriteria(applicationContext, testScope.backgroundScope)
- }
+var Kosmos.mediaOutputAvailabilityCriteria: ComponentAvailabilityCriteria by
+ Kosmos.Fixture { availableCriteria }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/data/repository/FakeWallpaperFocalAreaRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/data/repository/FakeWallpaperFocalAreaRepository.kt
new file mode 100644
index 000000000000..aeff86ed89bb
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/data/repository/FakeWallpaperFocalAreaRepository.kt
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.wallpapers.data.repository
+
+import android.graphics.PointF
+import android.graphics.RectF
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.asStateFlow
+
+class FakeWallpaperFocalAreaRepository : WallpaperFocalAreaRepository {
+ private val _shortcutAbsoluteTop = MutableStateFlow(0F)
+ override val shortcutAbsoluteTop = _shortcutAbsoluteTop.asStateFlow()
+
+ private val _notificationStackAbsoluteBottom = MutableStateFlow(0F)
+ override val notificationStackAbsoluteBottom = _notificationStackAbsoluteBottom.asStateFlow()
+
+ private val _wallpaperFocalAreaBounds = MutableStateFlow(RectF(0F, 0F, 0F, 0F))
+ override val wallpaperFocalAreaBounds: StateFlow<RectF> =
+ _wallpaperFocalAreaBounds.asStateFlow()
+
+ private val _wallpaperFocalAreaTapPosition = MutableStateFlow(PointF(0F, 0F))
+ override val wallpaperFocalAreaTapPosition: StateFlow<PointF> =
+ _wallpaperFocalAreaTapPosition.asStateFlow()
+
+ private val _notificationDefaultTop = MutableStateFlow(0F)
+ override val notificationDefaultTop: StateFlow<Float> = _notificationDefaultTop.asStateFlow()
+
+ override fun setShortcutAbsoluteTop(top: Float) {
+ _shortcutAbsoluteTop.value = top
+ }
+
+ override fun setNotificationStackAbsoluteBottom(bottom: Float) {
+ _notificationStackAbsoluteBottom.value = bottom
+ }
+
+ override fun setNotificationDefaultTop(top: Float) {
+ _notificationDefaultTop.value = top
+ }
+
+ override fun setWallpaperFocalAreaBounds(bounds: RectF) {
+ _wallpaperFocalAreaBounds.value = bounds
+ }
+
+ override fun setTapPosition(point: PointF) {
+ _wallpaperFocalAreaTapPosition.value = point
+ }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/wallpapers/data/repository/FakeWallpaperRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/data/repository/FakeWallpaperRepository.kt
index d6343c840d9b..8689e04e62dd 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/wallpapers/data/repository/FakeWallpaperRepository.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/data/repository/FakeWallpaperRepository.kt
@@ -18,13 +18,27 @@ package com.android.systemui.wallpapers.data.repository
import android.app.WallpaperInfo
import android.view.View
+import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.asStateFlow
/** Fake implementation of the wallpaper repository. */
class FakeWallpaperRepository : WallpaperRepository {
- override val wallpaperInfo = MutableStateFlow<WallpaperInfo?>(null)
- override val wallpaperSupportsAmbientMode = flowOf(false)
+ private val _wallpaperInfo: MutableStateFlow<WallpaperInfo?> = MutableStateFlow(null)
+ override val wallpaperInfo: StateFlow<WallpaperInfo?> = _wallpaperInfo.asStateFlow()
+ private val _wallpaperSupportsAmbientMode = MutableStateFlow(false)
+ override val wallpaperSupportsAmbientMode: Flow<Boolean> =
+ _wallpaperSupportsAmbientMode.asStateFlow()
override var rootView: View? = null
- override val shouldSendFocalArea = MutableStateFlow(false)
+ private val _shouldSendFocalArea = MutableStateFlow(false)
+ override val shouldSendFocalArea: StateFlow<Boolean> = _shouldSendFocalArea.asStateFlow()
+
+ fun setShouldSendFocalArea(shouldSendFocalArea: Boolean) {
+ _shouldSendFocalArea.value = shouldSendFocalArea
+ }
+
+ fun setWallpaperInfo(wallpaperInfo: WallpaperInfo?) {
+ _wallpaperInfo.value = wallpaperInfo
+ }
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/data/repository/WallpaperFocalAreaRepositoryKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/data/repository/WallpaperFocalAreaRepositoryKosmos.kt
new file mode 100644
index 000000000000..c1032b14d478
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/data/repository/WallpaperFocalAreaRepositoryKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.wallpapers.data.repository
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+
+val Kosmos.wallpaperFocalAreaRepository by Fixture { fakeWallpaperFocalAreaRepository }
+val Kosmos.fakeWallpaperFocalAreaRepository by Fixture { FakeWallpaperFocalAreaRepository() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/data/repository/WallpaperRepositoryKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/data/repository/WallpaperRepositoryKosmos.kt
index f0c0d30e6db4..6b955ffb0b68 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/data/repository/WallpaperRepositoryKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/data/repository/WallpaperRepositoryKosmos.kt
@@ -16,24 +16,9 @@
package com.android.systemui.wallpapers.data.repository
-import android.content.applicationContext
-import com.android.app.wallpaperManager
-import com.android.systemui.broadcast.broadcastDispatcher
-import com.android.systemui.keyguard.data.repository.keyguardRepository
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
-import com.android.systemui.kosmos.testDispatcher
-import com.android.systemui.kosmos.testScope
-import com.android.systemui.user.data.repository.userRepository
-val Kosmos.wallpaperRepository by Fixture {
- WallpaperRepositoryImpl(
- context = applicationContext,
- scope = testScope.backgroundScope,
- bgDispatcher = testDispatcher,
- broadcastDispatcher = broadcastDispatcher,
- userRepository = userRepository,
- keyguardRepository = keyguardRepository,
- wallpaperManager = wallpaperManager,
- )
-}
+var Kosmos.fakeWallpaperRepository by Kosmos.Fixture { FakeWallpaperRepository() }
+
+var Kosmos.wallpaperRepository: WallpaperRepository by Kosmos.Fixture { fakeWallpaperRepository }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/WallpaperFocalAreaInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/domain/interactor/WallpaperFocalAreaInteractor.kt
index 8fd6f62b315f..88eb5511160b 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/WallpaperFocalAreaInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/domain/interactor/WallpaperFocalAreaInteractor.kt
@@ -14,15 +14,14 @@
* limitations under the License.
*/
-package com.android.systemui.keyguard.domain.interactor
+package com.android.systemui.wallpapers.domain.interactor
import android.content.applicationContext
-import com.android.systemui.keyguard.data.repository.keyguardClockRepository
-import com.android.systemui.keyguard.data.repository.keyguardRepository
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.shade.data.repository.shadeRepository
import com.android.systemui.statusbar.notification.domain.interactor.activeNotificationsInteractor
+import com.android.systemui.wallpapers.data.repository.wallpaperFocalAreaRepository
import com.android.systemui.wallpapers.data.repository.wallpaperRepository
val Kosmos.wallpaperFocalAreaInteractor by
@@ -30,10 +29,9 @@ val Kosmos.wallpaperFocalAreaInteractor by
WallpaperFocalAreaInteractor(
applicationScope = applicationCoroutineScope,
context = applicationContext,
- keyguardRepository = keyguardRepository,
+ wallpaperFocalAreaRepository = wallpaperFocalAreaRepository,
shadeRepository = shadeRepository,
activeNotificationsInteractor = activeNotificationsInteractor,
- keyguardClockRepository = keyguardClockRepository,
wallpaperRepository = wallpaperRepository,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/data/repository/PaginatedGridRepositoryKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/ui/viewmodel/WallpaperFocalAreaViewModel.kt
index 696c4bf7bbaf..7e232c526732 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/panels/data/repository/PaginatedGridRepositoryKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/wallpapers/ui/viewmodel/WallpaperFocalAreaViewModel.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2024 The Android Open Source Project
+ * Copyright (C) 2025 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,14 +14,12 @@
* limitations under the License.
*/
-package com.android.systemui.qs.panels.data.repository
+package com.android.systemui.wallpapers.ui.viewmodel
-import com.android.systemui.common.ui.data.repository.configurationRepository
import com.android.systemui.kosmos.Kosmos
-import com.android.systemui.kosmos.testCase
+import com.android.systemui.wallpapers.domain.interactor.wallpaperFocalAreaInteractor
-val Kosmos.paginatedGridRepository by
+var Kosmos.wallpaperFocalAreaViewModel by
Kosmos.Fixture {
- testCase.context.orCreateTestableResources
- PaginatedGridRepository(testCase.context.resources, configurationRepository)
+ WallpaperFocalAreaViewModel(wallpaperFocalAreaInteractor = wallpaperFocalAreaInteractor)
}
diff --git a/packages/WallpaperBackup/AndroidManifest.xml b/packages/WallpaperBackup/AndroidManifest.xml
index 3ce97cdb4c07..669ea71de776 100644
--- a/packages/WallpaperBackup/AndroidManifest.xml
+++ b/packages/WallpaperBackup/AndroidManifest.xml
@@ -34,6 +34,7 @@
android:allowBackup="true"
android:backupInForeground="true"
android:backupAgent=".WallpaperBackupAgent"
+ android:restoreAnyVersion="true"
android:fullBackupOnly="true" >
</application>
</manifest>
diff --git a/ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodRuntimeEnvironmentController.java b/ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodRuntimeEnvironmentController.java
index 3cb6c5a6bd16..7af03ed2e6c8 100644
--- a/ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodRuntimeEnvironmentController.java
+++ b/ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodRuntimeEnvironmentController.java
@@ -44,6 +44,7 @@ import android.app.UiAutomation;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.res.Resources;
+import android.icu.util.ULocale;
import android.os.Binder;
import android.os.Build;
import android.os.Build.VERSION_CODES;
@@ -81,6 +82,7 @@ import java.io.IOException;
import java.io.PrintStream;
import java.util.Collections;
import java.util.HashMap;
+import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.Random;
@@ -228,6 +230,9 @@ public class RavenwoodRuntimeEnvironmentController {
RuntimeInit.redirectLogStreams();
dumpCommandLineArgs();
+ dumpEnvironment();
+ dumpJavaProperties();
+ dumpOtherInfo();
// We haven't initialized liblog yet, so directly write to System.out here.
RavenwoodCommonUtils.log(TAG, "globalInitInner()");
@@ -564,4 +569,34 @@ public class RavenwoodRuntimeEnvironmentController {
Log.v(TAG, " " + arg);
}
}
+
+ private static void dumpJavaProperties() {
+ Log.v(TAG, "JVM properties:");
+ dumpMap(System.getProperties());
+ }
+
+ private static void dumpEnvironment() {
+ Log.v(TAG, "Environment:");
+ dumpMap(System.getenv());
+ }
+
+ private static void dumpMap(Map<?, ?> map) {
+ for (var key : map.keySet().stream().sorted().toList()) {
+ Log.v(TAG, " " + key + "=" + map.get(key));
+ }
+ }
+
+ private static void dumpOtherInfo() {
+ Log.v(TAG, "Other key information:");
+ var jloc = Locale.getDefault();
+ Log.v(TAG, " java.util.Locale=" + jloc + " / " + jloc.toLanguageTag());
+ var uloc = ULocale.getDefault();
+ Log.v(TAG, " android.icu.util.ULocale=" + uloc + " / " + uloc.toLanguageTag());
+
+ var jtz = java.util.TimeZone.getDefault();
+ Log.v(TAG, " java.util.TimeZone=" + jtz.getDisplayName() + " / " + jtz);
+
+ var itz = android.icu.util.TimeZone.getDefault();
+ Log.v(TAG, " android.icu.util.TimeZone=" + itz.getDisplayName() + " / " + itz);
+ }
}
diff --git a/ravenwood/texts/ravenwood-annotation-allowed-classes.txt b/ravenwood/texts/ravenwood-annotation-allowed-classes.txt
index 383e75bb5122..e202d0ecfa23 100644
--- a/ravenwood/texts/ravenwood-annotation-allowed-classes.txt
+++ b/ravenwood/texts/ravenwood-annotation-allowed-classes.txt
@@ -151,6 +151,10 @@ android.os.Looper
android.os.Message
android.os.MessageQueue
android.os.MessageQueue_ravenwood
+android.os.PerfettoTrace
+android.os.PerfettoTrace$Category
+android.os.PerfettoTrackEventExtra
+android.os.PerfettoTrackEventExtra$NoOpBuilder
android.os.PackageTagsList
android.os.Parcel
android.os.ParcelFileDescriptor
diff --git a/services/accessibility/java/com/android/server/accessibility/HearingDevicePhoneCallNotificationController.java b/services/accessibility/java/com/android/server/accessibility/HearingDevicePhoneCallNotificationController.java
index d06daf5db127..10dffb59317e 100644
--- a/services/accessibility/java/com/android/server/accessibility/HearingDevicePhoneCallNotificationController.java
+++ b/services/accessibility/java/com/android/server/accessibility/HearingDevicePhoneCallNotificationController.java
@@ -221,13 +221,15 @@ public class HearingDevicePhoneCallNotificationController {
}
private Notification createSwitchInputNotification(boolean useRemoteMicrophone) {
+ final CharSequence message = getSwitchInputMessage(useRemoteMicrophone);
return new Notification.Builder(mContext,
SystemNotificationChannels.ACCESSIBILITY_HEARING_DEVICE)
.setContentTitle(getSwitchInputTitle(useRemoteMicrophone))
- .setContentText(getSwitchInputMessage(useRemoteMicrophone))
+ .setContentText(message)
.setSmallIcon(R.drawable.ic_settings_24dp)
.setColor(mContext.getResources().getColor(
com.android.internal.R.color.system_notification_accent_color))
+ .setStyle(new Notification.BigTextStyle().bigText(message))
.setLocalOnly(true)
.setCategory(Notification.CATEGORY_SYSTEM)
.setContentIntent(createPendingIntent(ACTION_BLUETOOTH_DEVICE_DETAILS))
diff --git a/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickController.java b/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickController.java
index 1bc9c783df76..8e448676c214 100644
--- a/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickController.java
+++ b/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickController.java
@@ -81,6 +81,7 @@ public class AutoclickController extends BaseEventStreamTransformation {
@VisibleForTesting AutoclickSettingsObserver mAutoclickSettingsObserver;
@VisibleForTesting AutoclickIndicatorScheduler mAutoclickIndicatorScheduler;
@VisibleForTesting AutoclickIndicatorView mAutoclickIndicatorView;
+ @VisibleForTesting AutoclickTypePanel mAutoclickTypePanel;
private WindowManager mWindowManager;
public AutoclickController(Context context, int userId, AccessibilityTraceManager trace) {
@@ -123,6 +124,9 @@ public class AutoclickController extends BaseEventStreamTransformation {
mAutoclickIndicatorView = new AutoclickIndicatorView(mContext);
mWindowManager = mContext.getSystemService(WindowManager.class);
+ mAutoclickTypePanel = new AutoclickTypePanel(mContext, mWindowManager);
+
+ mAutoclickTypePanel.show();
mWindowManager.addView(mAutoclickIndicatorView, mAutoclickIndicatorView.getLayoutParams());
}
@@ -167,6 +171,7 @@ public class AutoclickController extends BaseEventStreamTransformation {
mAutoclickIndicatorScheduler.cancel();
mAutoclickIndicatorScheduler = null;
mWindowManager.removeView(mAutoclickIndicatorView);
+ mAutoclickTypePanel.hide();
}
}
@@ -310,7 +315,7 @@ public class AutoclickController extends BaseEventStreamTransformation {
if (mAutoclickIndicatorScheduler != null) {
mAutoclickIndicatorScheduler.updateCursorAreaSize(size);
}
- mClickScheduler.updateMovementSlope(size);
+ mClickScheduler.updateMovementSlop(size);
}
if (mAutoclickIgnoreMinorCursorMovementSettingUri.equals(uri)) {
@@ -400,9 +405,9 @@ public class AutoclickController extends BaseEventStreamTransformation {
* to be discarded as noise. Anchor is the position of the last MOVE event that was not
* considered noise.
*/
- private static final double DEFAULT_MOVEMENT_SLOPE = 20f;
+ private static final double DEFAULT_MOVEMENT_SLOP = 20f;
- private double mMovementSlope = DEFAULT_MOVEMENT_SLOPE;
+ private double mMovementSlop = DEFAULT_MOVEMENT_SLOP;
/** Whether the minor cursor movement should be ignored. */
private boolean mIgnoreMinorCursorMovement = AUTOCLICK_IGNORE_MINOR_CURSOR_MOVEMENT_DEFAULT;
@@ -500,6 +505,11 @@ public class AutoclickController extends BaseEventStreamTransformation {
mMetaState = state;
}
+ @VisibleForTesting
+ int getMetaStateForTesting() {
+ return mMetaState;
+ }
+
/**
* Updates delay that should be used when scheduling clicks. The delay will be used only for
* clicks scheduled after this point (pending click tasks are not affected).
@@ -589,19 +599,19 @@ public class AutoclickController extends BaseEventStreamTransformation {
float deltaX = mAnchorCoords.x - event.getX(pointerIndex);
float deltaY = mAnchorCoords.y - event.getY(pointerIndex);
double delta = Math.hypot(deltaX, deltaY);
- double slope =
+ double slop =
((Flags.enableAutoclickIndicator() && mIgnoreMinorCursorMovement)
- ? mMovementSlope
- : DEFAULT_MOVEMENT_SLOPE);
- return delta > slope;
+ ? mMovementSlop
+ : DEFAULT_MOVEMENT_SLOP);
+ return delta > slop;
}
public void setIgnoreMinorCursorMovement(boolean ignoreMinorCursorMovement) {
mIgnoreMinorCursorMovement = ignoreMinorCursorMovement;
}
- private void updateMovementSlope(double slope) {
- mMovementSlope = slope;
+ private void updateMovementSlop(double slop) {
+ mMovementSlop = slop;
}
/**
diff --git a/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickTypePanel.java b/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickTypePanel.java
new file mode 100644
index 000000000000..0354d2be60c9
--- /dev/null
+++ b/services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickTypePanel.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.accessibility.autoclick;
+
+import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
+
+import android.content.Context;
+import android.graphics.PixelFormat;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.WindowInsets;
+import android.view.WindowManager;
+import android.widget.LinearLayout;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
+
+import com.android.internal.R;
+
+public class AutoclickTypePanel {
+
+ private final String TAG = AutoclickTypePanel.class.getSimpleName();
+
+ private final Context mContext;
+
+ private final View mContentView;
+
+ private final WindowManager mWindowManager;
+
+ // Whether the panel is expanded or not.
+ private boolean mExpanded = false;
+
+ private final LinearLayout mLeftClickButton;
+ private final LinearLayout mRightClickButton;
+ private final LinearLayout mDoubleClickButton;
+ private final LinearLayout mDragButton;
+ private final LinearLayout mScrollButton;
+
+ public AutoclickTypePanel(Context context, WindowManager windowManager) {
+ mContext = context;
+ mWindowManager = windowManager;
+
+ mContentView =
+ LayoutInflater.from(context)
+ .inflate(R.layout.accessibility_autoclick_type_panel, null);
+ mLeftClickButton =
+ mContentView.findViewById(R.id.accessibility_autoclick_left_click_layout);
+ mRightClickButton =
+ mContentView.findViewById(R.id.accessibility_autoclick_right_click_layout);
+ mDoubleClickButton =
+ mContentView.findViewById(R.id.accessibility_autoclick_double_click_layout);
+ mScrollButton = mContentView.findViewById(R.id.accessibility_autoclick_scroll_layout);
+ mDragButton = mContentView.findViewById(R.id.accessibility_autoclick_drag_layout);
+
+ initializeButtonState();
+ }
+
+ private void initializeButtonState() {
+ mLeftClickButton.setOnClickListener(v -> togglePanelExpansion(mLeftClickButton));
+ mRightClickButton.setOnClickListener(v -> togglePanelExpansion(mRightClickButton));
+ mDoubleClickButton.setOnClickListener(v -> togglePanelExpansion(mDoubleClickButton));
+ mScrollButton.setOnClickListener(v -> togglePanelExpansion(mScrollButton));
+ mDragButton.setOnClickListener(v -> togglePanelExpansion(mDragButton));
+
+ // Initializes panel as collapsed state and only displays the left click button.
+ hideAllClickTypeButtons();
+ mLeftClickButton.setVisibility(View.VISIBLE);
+ }
+
+ public void show() {
+ mWindowManager.addView(mContentView, getLayoutParams());
+ }
+
+ public void hide() {
+ mWindowManager.removeView(mContentView);
+ }
+
+ /** Toggles the panel expanded or collapsed state. */
+ private void togglePanelExpansion(LinearLayout button) {
+ if (mExpanded) {
+ // If the panel is already in expanded state, we should collapse it by hiding all
+ // buttons except the one user selected.
+ hideAllClickTypeButtons();
+ button.setVisibility(View.VISIBLE);
+ } else {
+ // If the panel is already collapsed, we just need to expand it.
+ showAllClickTypeButtons();
+ }
+
+ // Toggle the state.
+ mExpanded = !mExpanded;
+ }
+
+ /** Hide all buttons on the panel except pause and position buttons. */
+ private void hideAllClickTypeButtons() {
+ mLeftClickButton.setVisibility(View.GONE);
+ mRightClickButton.setVisibility(View.GONE);
+ mDoubleClickButton.setVisibility(View.GONE);
+ mDragButton.setVisibility(View.GONE);
+ mScrollButton.setVisibility(View.GONE);
+ }
+
+ /** Show all buttons on the panel except pause and position buttons. */
+ private void showAllClickTypeButtons() {
+ mLeftClickButton.setVisibility(View.VISIBLE);
+ mRightClickButton.setVisibility(View.VISIBLE);
+ mDoubleClickButton.setVisibility(View.VISIBLE);
+ mDragButton.setVisibility(View.VISIBLE);
+ mScrollButton.setVisibility(View.VISIBLE);
+ }
+
+ @VisibleForTesting
+ boolean getExpansionStateForTesting() {
+ return mExpanded;
+ }
+
+ @VisibleForTesting
+ @NonNull
+ View getContentViewForTesting() {
+ return mContentView;
+ }
+
+ /**
+ * Retrieves the layout params for AutoclickIndicatorView, used when it's added to the Window
+ * Manager.
+ */
+ @NonNull
+ private WindowManager.LayoutParams getLayoutParams() {
+ final WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
+ layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
+ layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
+ layoutParams.privateFlags |= WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS;
+ layoutParams.setFitInsetsTypes(WindowInsets.Type.statusBars());
+ layoutParams.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
+ layoutParams.format = PixelFormat.TRANSLUCENT;
+ layoutParams.setTitle(AutoclickTypePanel.class.getSimpleName());
+ layoutParams.accessibilityTitle =
+ mContext.getString(R.string.accessibility_autoclick_type_settings_panel_title);
+ layoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
+ layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
+ // TODO(b/388847771): Compute position based on user interaction.
+ layoutParams.x = 15;
+ layoutParams.y = 90;
+ layoutParams.gravity = Gravity.END | Gravity.BOTTOM;
+
+ return layoutParams;
+ }
+}
diff --git a/services/appfunctions/java/com/android/server/appfunctions/CallerValidator.java b/services/appfunctions/java/com/android/server/appfunctions/CallerValidator.java
index 61917676e88d..98ef974b9443 100644
--- a/services/appfunctions/java/com/android/server/appfunctions/CallerValidator.java
+++ b/services/appfunctions/java/com/android/server/appfunctions/CallerValidator.java
@@ -60,9 +60,7 @@ public interface CallerValidator {
* Validates that the caller can execute the specified app function.
*
* <p>The caller can execute if the app function's package name is the same as the caller's
- * package or the caller has either {@link Manifest.permission#EXECUTE_APP_FUNCTIONS_TRUSTED} or
- * {@link Manifest.permission#EXECUTE_APP_FUNCTIONS} granted. In some cases, app functions can
- * still opt-out of caller having {@link Manifest.permission#EXECUTE_APP_FUNCTIONS}.
+ * package or the caller has the {@link Manifest.permission#EXECUTE_APP_FUNCTIONS} granted.
*
* @param callingUid The calling uid.
* @param callingPid The calling pid.
diff --git a/services/appfunctions/java/com/android/server/appfunctions/CallerValidatorImpl.java b/services/appfunctions/java/com/android/server/appfunctions/CallerValidatorImpl.java
index 69481c32baf0..fe163d77c4fc 100644
--- a/services/appfunctions/java/com/android/server/appfunctions/CallerValidatorImpl.java
+++ b/services/appfunctions/java/com/android/server/appfunctions/CallerValidatorImpl.java
@@ -18,7 +18,6 @@ package com.android.server.appfunctions;
import static android.app.appfunctions.AppFunctionStaticMetadataHelper.APP_FUNCTION_STATIC_METADATA_DB;
import static android.app.appfunctions.AppFunctionStaticMetadataHelper.APP_FUNCTION_STATIC_NAMESPACE;
-import static android.app.appfunctions.AppFunctionStaticMetadataHelper.STATIC_PROPERTY_RESTRICT_CALLERS_WITH_EXECUTE_APP_FUNCTIONS;
import static android.app.appfunctions.AppFunctionStaticMetadataHelper.getDocumentIdForAppFunction;
import static com.android.server.appfunctions.AppFunctionExecutors.THREAD_POOL_EXECUTOR;
@@ -84,12 +83,7 @@ class CallerValidatorImpl implements CallerValidator {
}
@Override
- @RequiresPermission(
- anyOf = {
- Manifest.permission.EXECUTE_APP_FUNCTIONS_TRUSTED,
- Manifest.permission.EXECUTE_APP_FUNCTIONS
- },
- conditional = true)
+ @RequiresPermission(Manifest.permission.EXECUTE_APP_FUNCTIONS)
public AndroidFuture<Boolean> verifyCallerCanExecuteAppFunction(
int callingUid,
int callingPid,
@@ -101,17 +95,6 @@ class CallerValidatorImpl implements CallerValidator {
return AndroidFuture.completedFuture(true);
}
- boolean hasTrustedExecutionPermission =
- mContext.checkPermission(
- Manifest.permission.EXECUTE_APP_FUNCTIONS_TRUSTED,
- callingPid,
- callingUid)
- == PackageManager.PERMISSION_GRANTED;
-
- if (hasTrustedExecutionPermission) {
- return AndroidFuture.completedFuture(true);
- }
-
boolean hasExecutionPermission =
mContext.checkPermission(
Manifest.permission.EXECUTE_APP_FUNCTIONS, callingPid, callingUid)
@@ -138,7 +121,8 @@ class CallerValidatorImpl implements CallerValidator {
.build())
.thenApply(
batchResult -> getGenericDocumentFromBatchResult(batchResult, documentId))
- .thenApply(document -> !getRestrictCallersWithExecuteAppFunctionsProperty(document))
+ // At this point, already checked the app has the permission.
+ .thenApply(document -> true)
.whenComplete(
(result, throwable) -> {
futureAppSearchSession.close();
@@ -160,12 +144,6 @@ class CallerValidatorImpl implements CallerValidator {
+ failedResult.getErrorMessage());
}
- private static boolean getRestrictCallersWithExecuteAppFunctionsProperty(
- GenericDocument genericDocument) {
- return genericDocument.getPropertyBoolean(
- STATIC_PROPERTY_RESTRICT_CALLERS_WITH_EXECUTE_APP_FUNCTIONS);
- }
-
@Override
public boolean verifyEnterprisePolicyIsAllowed(
@NonNull UserHandle callingUser, @NonNull UserHandle targetUser) {
diff --git a/services/appfunctions/java/com/android/server/appfunctions/MetadataSyncAdapter.java b/services/appfunctions/java/com/android/server/appfunctions/MetadataSyncAdapter.java
index cc73288cdbfa..9d13e37b2503 100644
--- a/services/appfunctions/java/com/android/server/appfunctions/MetadataSyncAdapter.java
+++ b/services/appfunctions/java/com/android/server/appfunctions/MetadataSyncAdapter.java
@@ -78,7 +78,6 @@ public class MetadataSyncAdapter {
// Hidden constants in {@link SetSchemaRequest} that restricts runtime metadata visibility
// by permissions.
public static final int EXECUTE_APP_FUNCTIONS = 9;
- public static final int EXECUTE_APP_FUNCTIONS_TRUSTED = 10;
public MetadataSyncAdapter(
@NonNull PackageManager packageManager, @NonNull AppSearchManager appSearchManager) {
@@ -281,8 +280,6 @@ public class MetadataSyncAdapter {
new PackageIdentifier(packageName, packageCert));
setSchemaRequestBuilder.addRequiredPermissionsForSchemaTypeVisibility(
runtimeMetadataSchema.getSchemaType(), Set.of(EXECUTE_APP_FUNCTIONS));
- setSchemaRequestBuilder.addRequiredPermissionsForSchemaTypeVisibility(
- runtimeMetadataSchema.getSchemaType(), Set.of(EXECUTE_APP_FUNCTIONS_TRUSTED));
}
return setSchemaRequestBuilder.build();
}
diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
index aef1c081cf03..d47aab061788 100644
--- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
+++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
@@ -4673,12 +4673,6 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
keep.add(providerId);
// Use the new AppWidgetProviderInfo.
provider.setPartialInfoLocked(info);
- // Clear old previews
- if (remoteViewsProto()) {
- clearGeneratedPreviewsAsync(provider);
- } else {
- provider.clearGeneratedPreviewsLocked();
- }
// If it's enabled
final int M = provider.widgets.size();
if (M > 0) {
@@ -5104,6 +5098,10 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
AndroidFuture<RemoteViews> result = new AndroidFuture<>();
mSavePreviewsHandler.post(() -> {
SparseArray<RemoteViews> previews = loadGeneratedPreviews(provider);
+ if (previews.size() == 0 && provider.info.generatedPreviewCategories != 0) {
+ // Failed to read previews from file, clear the file and update providers.
+ saveGeneratedPreviews(provider, previews, /* notify= */ true);
+ }
for (int i = 0; i < previews.size(); i++) {
if ((widgetCategory & previews.keyAt(i)) != 0) {
result.complete(previews.valueAt(i));
@@ -5222,8 +5220,14 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
continue;
}
ProtoInputStream input = new ProtoInputStream(previewsFile.readFully());
- provider.info.generatedPreviewCategories = readGeneratedPreviewCategoriesFromProto(
- input);
+ try {
+ provider.info.generatedPreviewCategories = readGeneratedPreviewCategoriesFromProto(
+ input);
+ } catch (IOException e) {
+ Slog.e(TAG, "Failed to read generated previews from file for " + provider, e);
+ previewsFile.delete();
+ provider.info.generatedPreviewCategories = 0;
+ }
if (DEBUG) {
Slog.i(TAG, TextUtils.formatSimple(
"loadGeneratedPreviewCategoriesLocked %d %s categories %d", profileId,
diff --git a/services/art-profile b/services/art-profile
index ce1e2c6f1397..712fca9c246e 100644
--- a/services/art-profile
+++ b/services/art-profile
@@ -1,5 +1,5 @@
#
-# Copyright (C) 2017 The Android Open Source Project
+# Copyright (C) 2025 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -20,18 +20,17 @@ HSPLandroid/hardware/health/DiskStats;->readFromParcel(Landroid/os/Parcel;)V
HSPLandroid/hardware/health/HealthInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/health/HealthInfo;
HSPLandroid/hardware/health/HealthInfo;-><init>()V
HSPLandroid/hardware/health/HealthInfo;->readFromParcel(Landroid/os/Parcel;)V
-HPLandroid/hardware/health/IHealth$Stub$Proxy;->getCapacity()I+]Landroid/hardware/health/IHealth$Stub$Proxy;Landroid/hardware/health/IHealth$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;
-HPLandroid/hardware/health/IHealth$Stub$Proxy;->getChargeCounterUah()I+]Landroid/hardware/health/IHealth$Stub$Proxy;Landroid/hardware/health/IHealth$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;
+HSPLandroid/hardware/health/IHealth$Stub$Proxy;->getCapacity()I+]Landroid/hardware/health/IHealth$Stub$Proxy;Landroid/hardware/health/IHealth$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;
HSPLandroid/hardware/health/IHealthInfoCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z+]Landroid/hardware/health/IHealthInfoCallback;Lcom/android/server/health/HealthRegCallbackAidl$HalInfoCallback;
HSPLandroid/hardware/health/StorageInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/health/StorageInfo;
HSPLandroid/hardware/health/StorageInfo;-><init>()V
HSPLandroid/hardware/health/StorageInfo;->readFromParcel(Landroid/os/Parcel;)V
HSPLandroid/hardware/power/stats/EnergyConsumerResult;->readFromParcel(Landroid/os/Parcel;)V
-HPLandroid/hardware/power/stats/EnergyMeasurement;->readFromParcel(Landroid/os/Parcel;)V
-HPLandroid/hardware/power/stats/IPowerStats$Stub$Proxy;->readEnergyMeter([I)[Landroid/hardware/power/stats/EnergyMeasurement;+]Landroid/hardware/power/stats/IPowerStats$Stub$Proxy;Landroid/hardware/power/stats/IPowerStats$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;
-HPLandroid/hardware/power/stats/StateResidency$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/power/stats/StateResidency;
-HPLandroid/hardware/power/stats/StateResidency$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/hardware/power/stats/StateResidency$1;Landroid/hardware/power/stats/StateResidency$1;
-HPLandroid/hardware/power/stats/StateResidency;->readFromParcel(Landroid/os/Parcel;)V
+HSPLandroid/hardware/power/stats/EnergyMeasurement;->readFromParcel(Landroid/os/Parcel;)V
+HSPLandroid/hardware/power/stats/IPowerStats$Stub$Proxy;->readEnergyMeter([I)[Landroid/hardware/power/stats/EnergyMeasurement;+]Landroid/hardware/power/stats/IPowerStats$Stub$Proxy;Landroid/hardware/power/stats/IPowerStats$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;
+HSPLandroid/hardware/power/stats/StateResidency$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/power/stats/StateResidency;
+HSPLandroid/hardware/power/stats/StateResidency$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/hardware/power/stats/StateResidency$1;Landroid/hardware/power/stats/StateResidency$1;
+HSPLandroid/hardware/power/stats/StateResidency;->readFromParcel(Landroid/os/Parcel;)V
HSPLandroid/net/INetdUnsolicitedEventListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z+]Landroid/net/INetdUnsolicitedEventListener;Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;
HSPLandroid/net/metrics/INetdEventListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z+]Landroid/net/metrics/INetdEventListener;Lcom/android/server/connectivity/NetdEventListenerService;
HSPLcom/android/internal/util/jobs/ArrayUtils;->contains([II)Z
@@ -46,9 +45,10 @@ HPLcom/android/internal/util/jobs/FastXmlSerializer;->startTag(Ljava/lang/String
HSPLcom/android/internal/util/jobs/RingBufferIndices;->add()I
HSPLcom/android/internal/util/jobs/StatLogger;->getTime()J
HSPLcom/android/internal/util/jobs/StatLogger;->logDurationStat(IJ)J+]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;
-HSPLcom/android/server/AppStateTrackerImpl$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/net/Uri;Landroid/net/Uri$OpaqueUri;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;
HSPLcom/android/server/AppStateTrackerImpl$MyHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;]Lcom/android/server/AppStateTrackerImpl$MyHandler;Lcom/android/server/AppStateTrackerImpl$MyHandler;
+HSPLcom/android/server/AppStateTrackerImpl$MyHandler;->handleUidActive(I)V+]Lcom/android/server/AppStateTrackerImpl$MyHandler;Lcom/android/server/AppStateTrackerImpl$MyHandler;
HSPLcom/android/server/AppStateTrackerImpl$MyHandler;->handleUidCached(IZ)V+]Lcom/android/server/AppStateTrackerImpl$Listener;Lcom/android/server/AppStateTrackerImpl$1;,Lcom/android/server/alarm/AlarmManagerService$7;,Lcom/android/server/job/controllers/BackgroundJobsController$2;
+HSPLcom/android/server/AppStateTrackerImpl$MyHandler;->removeUid(IZ)V+]Lcom/android/server/AppStateTrackerImpl$MyHandler;Lcom/android/server/AppStateTrackerImpl$MyHandler;
HPLcom/android/server/AppStateTrackerImpl;->areAlarmsRestrictedByBatterySaver(ILjava/lang/String;)Z+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
HSPLcom/android/server/AppStateTrackerImpl;->areJobsRestricted(ILjava/lang/String;Z)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
HSPLcom/android/server/AppStateTrackerImpl;->cloneListeners()[Lcom/android/server/AppStateTrackerImpl$Listener;
@@ -59,35 +59,28 @@ HSPLcom/android/server/AppStateTrackerImpl;->isRunAnyRestrictedLocked(ILjava/lan
HSPLcom/android/server/AppStateTrackerImpl;->isUidActive(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
HPLcom/android/server/AppStateTrackerImpl;->isUidPowerSaveUserExempt(I)Z
HSPLcom/android/server/AppStateTrackerImpl;->setPowerSaveExemptionListAppIds([I[I[I)V+]Lcom/android/server/AppStateTrackerImpl$MyHandler;Lcom/android/server/AppStateTrackerImpl$MyHandler;
-HPLcom/android/server/BatteryService$BatteryPropertiesRegistrar;->getProperty(ILandroid/os/BatteryProperty;)I+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/health/HealthServiceWrapper;Lcom/android/server/health/HealthServiceWrapperAidl;
HSPLcom/android/server/BatteryService$Led;->updateLightsLocked()V+]Lcom/android/server/lights/LogicalLight;Lcom/android/server/lights/LightsService$LightImpl;
-HSPLcom/android/server/BatteryService;->broadcastBatteryChangedIntent(Landroid/content/Context;Landroid/content/Intent;Landroid/os/Bundle;Z)V+]Landroid/content/Context;Landroid/app/ContextImpl;
-HSPLcom/android/server/BatteryService;->isPoweredLocked(I)Z
-HSPLcom/android/server/BatteryService;->lambda$new$0(Landroid/os/Message;)Z
HSPLcom/android/server/BatteryService;->processValuesLocked(Z)V+]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/internal/logging/MetricsLogger;Lcom/android/internal/logging/MetricsLogger;
+HSPLcom/android/server/BatteryService;->rateLimitBatteryChangedBroadcast(Z)Z
HSPLcom/android/server/BatteryService;->sendBatteryChangedIntentLocked(Z)V
-HSPLcom/android/server/BatteryService;->sendBatteryLevelChangedIntentLocked()V
HSPLcom/android/server/BatteryService;->traceBatteryChangedBroadcastEvent(Landroid/content/Intent;Z)V+]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/BatteryService;->update(Landroid/hardware/health/HealthInfo;)V
+HSPLcom/android/server/BatteryService;->update(Landroid/hardware/health/HealthInfo;)V+]Landroid/os/ConditionVariable;Landroid/os/ConditionVariable;
HSPLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;->getCallingUid()I
HSPLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;->resolveWorkSourceUid(I)I+]Lcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;Lcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;
-HSPLcom/android/server/CachedDeviceStateService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/internal/os/CachedDeviceState;Lcom/android/internal/os/CachedDeviceState;
-HSPLcom/android/server/DeviceIdleController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/net/Uri;Landroid/net/Uri$OpaqueUri;]Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController;
-HSPLcom/android/server/DeviceIdleController$MyHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/net/INetworkPolicyManager;Lcom/android/server/net/NetworkPolicyManagerService;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController;]Lcom/android/server/DeviceIdleInternal$StationaryListener;Lcom/android/server/location/provider/StationaryThrottlingLocationProvider;]Lcom/android/server/PowerAllowlistInternal$TempAllowlistChangeListener;Lcom/android/server/job/controllers/QuotaController$TempAllowlistTracker;]Lcom/android/server/net/NetworkPolicyManagerInternal;Lcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;
-HSPLcom/android/server/DeviceIdleController;->addPowerSaveTempWhitelistAppDirectInternal(IIJIZILjava/lang/String;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/net/NetworkPolicyManagerInternal;Lcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;
-HPLcom/android/server/DeviceIdleController;->checkTempAppWhitelistTimeout(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/DeviceIdleController$MyHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/net/INetworkPolicyManager;Lcom/android/server/net/NetworkPolicyManagerService;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController;]Lcom/android/server/PowerAllowlistInternal$TempAllowlistChangeListener;Lcom/android/server/job/controllers/QuotaController$TempAllowlistTracker;]Lcom/android/server/net/NetworkPolicyManagerInternal;Lcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;
+HSPLcom/android/server/DeviceIdleController;->addPowerSaveTempWhitelistAppDirectInternal(IIJIZILjava/lang/String;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/DeviceIdleController$Injector;Lcom/android/server/DeviceIdleController$Injector;]Lcom/android/server/net/NetworkPolicyManagerInternal;Lcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;
+HPLcom/android/server/DeviceIdleController;->checkTempAppWhitelistTimeout(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/DeviceIdleController$Injector;Lcom/android/server/DeviceIdleController$Injector;
HSPLcom/android/server/DeviceIdleController;->reportTempWhitelistChangedLocked(IZ)V+]Landroid/content/Context;Landroid/app/ContextImpl;
HSPLcom/android/server/DeviceIdleController;->updateTempWhitelistAppIdsLocked(IZJIILjava/lang/String;I)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/DropBoxManagerService$EntryFile;->compareTo(Lcom/android/server/DropBoxManagerService$EntryFile;)I
HSPLcom/android/server/DropBoxManagerService$EntryFile;->getExtension()Ljava/lang/String;
HSPLcom/android/server/DropBoxManagerService$EntryFile;->getFilename()Ljava/lang/String;
-HSPLcom/android/server/DropBoxManagerService;->addEntry(Ljava/lang/String;Lcom/android/server/DropBoxManagerInternal$EntrySource;I)V
-HSPLcom/android/server/DropBoxManagerService;->enrollEntry(Lcom/android/server/DropBoxManagerService$EntryFile;)V
+HSPLcom/android/server/DropBoxManagerService;->addEntry(Ljava/lang/String;Lcom/android/server/DropBoxManagerInternal$EntrySource;I)V+]Lcom/android/server/DropBoxManagerInternal$EntrySource;Lcom/android/server/DropBoxManagerService$SimpleEntrySource;]Lcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;Lcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;]Ljava/lang/Thread;Lcom/android/server/IoThread;,Lcom/android/server/ServiceThread;,Lcom/android/server/am/ActivityManagerService$13;,Ljava/lang/Thread;
+HPLcom/android/server/DropBoxManagerService;->checkPermission(ILjava/lang/String;Ljava/lang/String;)Z+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/Context;Landroid/app/ContextImpl;
+HSPLcom/android/server/DropBoxManagerService;->enrollEntry(Lcom/android/server/DropBoxManagerService$EntryFile;)V+]Ljava/util/TreeSet;Ljava/util/TreeSet;
HPLcom/android/server/DropBoxManagerService;->getNextEntry(Ljava/lang/String;JLjava/lang/String;Ljava/lang/String;)Landroid/os/DropBoxManager$Entry;+]Ljava/util/Iterator;Ljava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;]Ljava/util/SortedSet;Ljava/util/TreeSet;]Ljava/util/TreeSet;Ljava/util/TreeSet;
HSPLcom/android/server/DropBoxManagerService;->isTagEnabled(Ljava/lang/String;)Z+]Ljava/util/List;Ljava/util/ImmutableCollections$ListN;
-HSPLcom/android/server/DropBoxManagerService;->trimToFit()J+]Landroid/os/StatFs;Landroid/os/StatFs;]Ljava/io/File;Ljava/io/File;]Ljava/util/TreeSet;Ljava/util/TreeSet;
-HSPLcom/android/server/FgThread;->ensureThreadLocked()V
-HSPLcom/android/server/FgThread;->getHandler()Landroid/os/Handler;
+HSPLcom/android/server/DropBoxManagerService;->trimToFit()J+]Landroid/os/StatFs;Landroid/os/StatFs;]Ljava/io/File;Ljava/io/File;]Ljava/util/Iterator;Ljava/util/TreeMap$KeyIterator;]Ljava/util/TreeSet;Ljava/util/TreeSet;
HPLcom/android/server/HardwarePropertiesManagerService;->enforceHardwarePropertiesRetrievalAllowed(Ljava/lang/String;)V+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/app/admin/DevicePolicyManager;Landroid/app/admin/DevicePolicyManager;]Landroid/content/Context;Landroid/app/ContextImpl;
HSPLcom/android/server/IntentResolver$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
HSPLcom/android/server/IntentResolver;-><init>()V
@@ -100,7 +93,7 @@ HSPLcom/android/server/IntentResolver;->copyInto(Landroid/util/ArraySet;Landroid
HSPLcom/android/server/IntentResolver;->filterResults(Ljava/util/List;)V
HSPLcom/android/server/IntentResolver;->findFilters(Landroid/content/IntentFilter;)Ljava/util/ArrayList;+]Lcom/android/server/IntentResolver;Lcom/android/server/pm/CrossProfileIntentResolver;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
HSPLcom/android/server/IntentResolver;->getFastIntentCategories(Landroid/content/Intent;)Landroid/util/FastImmutableArraySet;+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/Set;Landroid/util/ArraySet;
-HPLcom/android/server/IntentResolver;->intentMatchesFilter(Landroid/content/IntentFilter;Landroid/content/Intent;Ljava/lang/String;)Z+]Landroid/content/Intent;Landroid/content/Intent;
+HSPLcom/android/server/IntentResolver;->intentMatchesFilter(Landroid/content/IntentFilter;Landroid/content/Intent;Ljava/lang/String;)Z+]Landroid/content/Intent;Landroid/content/Intent;
HSPLcom/android/server/IntentResolver;->queryIntent(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Landroid/content/Intent;Ljava/lang/String;ZI)Ljava/util/List;
HSPLcom/android/server/IntentResolver;->queryIntent(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Landroid/content/Intent;Ljava/lang/String;ZIJ)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/IntentResolver;megamorphic_types
HSPLcom/android/server/IntentResolver;->queryIntentFromList(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;ZLjava/util/ArrayList;IJ)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/IntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;]Ljava/util/ArrayList;Ljava/util/ArrayList;
@@ -124,20 +117,17 @@ HSPLcom/android/server/StorageManagerService;->getVolumeList(ILjava/lang/String;
HSPLcom/android/server/StorageManagerService;->getVolumes(I)[Landroid/os/storage/VolumeInfo;
HSPLcom/android/server/StorageManagerService;->isCeStorageUnlocked(I)Z+]Lcom/android/server/StorageManagerService$WatchedUnlockedUsers;Lcom/android/server/StorageManagerService$WatchedUnlockedUsers;
HPLcom/android/server/StorageManagerService;->monitor()V+]Landroid/os/IVold;Landroid/os/IVold$Stub$Proxy;
+HSPLcom/android/server/StorageManagerService;->updateLegacyStorageApps(Ljava/lang/String;IZ)V+]Ljava/util/Set;Landroid/util/ArraySet;
HSPLcom/android/server/SystemConfig;->getInstance()Lcom/android/server/SystemConfig;
HSPLcom/android/server/SystemConfig;->readPermissionAllowlist(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/ArrayMap;Ljava/lang/String;)V
HSPLcom/android/server/SystemConfig;->readPermissionsFromXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/io/File;I)V
HSPLcom/android/server/SystemService;->getContext()Landroid/content/Context;
+HSPLcom/android/server/SystemServiceManager;->onUser(Lcom/android/server/utils/TimingsTraceAndSlog;Ljava/lang/String;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$UserCompletedEventType;)V+]Lcom/android/server/SystemService;megamorphic_types]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/concurrent/ExecutorService;Ljava/util/concurrent/ThreadPoolExecutor;
HSPLcom/android/server/SystemServiceManager;->startBootPhase(Lcom/android/server/utils/TimingsTraceAndSlog;I)V
-HSPLcom/android/server/SystemServiceManager;->startService(Ljava/lang/Class;)Lcom/android/server/SystemService;
-HSPLcom/android/server/TelephonyRegistry;->add(Landroid/os/IBinder;IIZ)Lcom/android/server/TelephonyRegistry$Record;+]Landroid/os/IBinder;Landroid/os/BinderProxy;,Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub;,Landroid/telephony/TelephonyCallback$IPhoneStateListenerStub;,Landroid/telephony/TelephonyRegistryManager$3;,Landroid/telephony/TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper;]Lcom/android/server/TelephonyRegistry$ConfigurationProvider;Lcom/android/server/TelephonyRegistry$ConfigurationProvider;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/TelephonyRegistry;->listen(ZZLjava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;Ljava/util/Set;ZI)V+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/internal/telephony/IPhoneStateListener;Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub;,Landroid/telephony/TelephonyCallback$IPhoneStateListenerStub;,Lcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Set;Ljava/util/HashSet;
+HSPLcom/android/server/TelephonyRegistry;->add(Landroid/os/IBinder;IIZ)Lcom/android/server/TelephonyRegistry$Record;+]Landroid/os/IBinder;megamorphic_types]Lcom/android/server/TelephonyRegistry$ConfigurationProvider;Lcom/android/server/TelephonyRegistry$ConfigurationProvider;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/TelephonyRegistry;->listen(ZZLjava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;Ljava/util/Set;ZI)V+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/util/IntArray;Landroid/util/IntArray;]Lcom/android/internal/telephony/IPhoneStateListener;Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub;,Landroid/telephony/TelephonyCallback$IPhoneStateListenerStub;,Lcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Set;Ljava/util/HashSet;
HSPLcom/android/server/ThreadPriorityBooster;->boost()V+]Ljava/lang/ThreadLocal;Lcom/android/server/ThreadPriorityBooster$1;
HSPLcom/android/server/ThreadPriorityBooster;->reset()V+]Ljava/lang/ThreadLocal;Lcom/android/server/ThreadPriorityBooster$1;
-HSPLcom/android/server/UiModeManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/UiModeManagerService;->updateComputedNightModeLocked(Z)V+]Lcom/android/server/twilight/TwilightManager;Lcom/android/server/twilight/TwilightService$1;
-HSPLcom/android/server/UiModeManagerService;->updateConfigurationLocked()V+]Lcom/android/server/twilight/TwilightManager;Lcom/android/server/twilight/TwilightService$1;
-HSPLcom/android/server/UiModeManagerService;->updateLocked(II)V+]Landroid/content/Context;Landroid/app/ContextImpl;
HPLcom/android/server/Watchdog$HandlerChecker;->getCompletionStateLocked()I+]Ljava/time/Clock;Landroid/os/SystemClock$1;
HSPLcom/android/server/Watchdog$HandlerChecker;->isHandlerPolling()Z
HSPLcom/android/server/Watchdog$HandlerChecker;->run()V+]Lcom/android/server/Watchdog$Monitor;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
@@ -146,13 +136,20 @@ HSPLcom/android/server/Watchdog$HandlerCheckerAndTimeout;->checker()Lcom/android
HSPLcom/android/server/Watchdog$HandlerCheckerAndTimeout;->customTimeoutMillis()Ljava/util/Optional;
HPLcom/android/server/Watchdog;->evaluateCheckerCompletionLocked()I+]Lcom/android/server/Watchdog$HandlerChecker;Lcom/android/server/Watchdog$HandlerChecker;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/Watchdog;->run()V
+HPLcom/android/server/accounts/AccountManagerService$7;->onResult(Landroid/os/Bundle;)V
+HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;ILjava/lang/String;Z)V
+HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->checkAccount()V+]Landroid/accounts/IAccountAuthenticator;Landroid/accounts/IAccountAuthenticator$Stub$Proxy;]Lcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;Lcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;
+HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->onResult(Landroid/os/Bundle;)V+]Lcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;Lcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->run()V+]Lcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;Lcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;
+HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->sendResult()V+]Landroid/accounts/IAccountManagerResponse;Landroid/accounts/IAccountManagerResponse$Stub$Proxy;]Lcom/android/server/accounts/AccountManagerService$Session;Lcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/accounts/AccountManagerService$Session;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZZ)V+]Landroid/accounts/IAccountManagerResponse;Landroid/accounts/AccountManager$BaseFutureTask$Response;,Landroid/accounts/IAccountManagerResponse$Stub$Proxy;]Landroid/os/IBinder;Landroid/accounts/AccountManager$BaseFutureTask$Response;,Landroid/os/BinderProxy;]Ljava/lang/Object;megamorphic_types]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;
HPLcom/android/server/accounts/AccountManagerService$Session;->bindToAuthenticator(Ljava/lang/String;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/accounts/IAccountAuthenticatorCache;Lcom/android/server/accounts/AccountAuthenticatorCache;
HPLcom/android/server/accounts/AccountManagerService$Session;->close()V+]Landroid/accounts/IAccountManagerResponse;Landroid/accounts/AccountManager$BaseFutureTask$Response;,Landroid/accounts/IAccountManagerResponse$Stub$Proxy;]Landroid/os/IBinder;Landroid/accounts/AccountManager$BaseFutureTask$Response;,Landroid/os/BinderProxy;]Lcom/android/server/accounts/AccountManagerService$Session;megamorphic_types]Ljava/lang/Object;megamorphic_types]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;
HPLcom/android/server/accounts/AccountManagerService$Session;->getResponseAndClose()Landroid/accounts/IAccountManagerResponse;
+HPLcom/android/server/accounts/AccountManagerService$Session;->onResult(Landroid/os/Bundle;)V+]Landroid/accounts/IAccountManagerResponse;Landroid/accounts/IAccountManagerResponse$Stub$Proxy;]Lcom/android/server/accounts/AccountManagerService$Session;Lcom/android/server/accounts/AccountManagerService$12;,Lcom/android/server/accounts/AccountManagerService$7;,Lcom/android/server/accounts/AccountManagerService$RemoveAccountSession;
+HPLcom/android/server/accounts/AccountManagerService$Session;->unbind()V+]Landroid/content/Context;Landroid/app/ContextImpl;
HPLcom/android/server/accounts/AccountManagerService;->accountExistsCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Z+]Ljava/util/HashMap;Ljava/util/LinkedHashMap;
-HPLcom/android/server/accounts/AccountManagerService;->calculatePackageSignatureDigest(Ljava/lang/String;I)[B+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/Signature;Landroid/content/pm/Signature;]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate;
-HPLcom/android/server/accounts/AccountManagerService;->cancelNotification(Lcom/android/server/accounts/AccountManagerService$NotificationId;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V+]Landroid/app/INotificationManager;Lcom/android/server/notification/NotificationManagerService$12;]Lcom/android/server/accounts/AccountManagerService$Injector;Lcom/android/server/accounts/AccountManagerService$Injector;
+HPLcom/android/server/accounts/AccountManagerService;->cancelNotification(Lcom/android/server/accounts/AccountManagerService$NotificationId;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V+]Landroid/app/INotificationManager;Lcom/android/server/notification/NotificationManagerService$12;,Lcom/android/server/notification/NotificationManagerService$13;]Lcom/android/server/accounts/AccountManagerService$Injector;Lcom/android/server/accounts/AccountManagerService$Injector;
HPLcom/android/server/accounts/AccountManagerService;->checkPackageSignature(Ljava/lang/String;II)I+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/accounts/IAccountAuthenticatorCache;Lcom/android/server/accounts/AccountAuthenticatorCache;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;
HSPLcom/android/server/accounts/AccountManagerService;->filterAccounts(Lcom/android/server/accounts/AccountManagerService$UserAccounts;[Landroid/accounts/Account;ILjava/lang/String;Z)[Landroid/accounts/Account;+]Ljava/util/Map;Ljava/util/LinkedHashMap;]Ljava/util/Set;Ljava/util/LinkedHashMap$LinkedKeySet;
HSPLcom/android/server/accounts/AccountManagerService;->filterSharedAccounts(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/util/Map;ILjava/lang/String;)Ljava/util/Map;+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;
@@ -172,18 +169,20 @@ HPLcom/android/server/accounts/AccountManagerService;->getUserData(Landroid/acco
HSPLcom/android/server/accounts/AccountManagerService;->getUserManager()Landroid/os/UserManager;
HPLcom/android/server/accounts/AccountManagerService;->invalidateAuthToken(Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;]Lcom/android/server/accounts/TokenCache;Lcom/android/server/accounts/TokenCache;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/accounts/AccountManagerService;->invalidateAuthTokenLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;+]Landroid/database/Cursor;Landroid/database/sqlite/SQLiteCursor;]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;
+HPLcom/android/server/accounts/AccountManagerService;->isAccountManagedByCaller(Ljava/lang/String;II)Z+]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/accounts/AccountManagerService;->isPermittedForPackage(Ljava/lang/String;I[Ljava/lang/String;)Z+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
+HPLcom/android/server/accounts/AccountManagerService;->isPreOApplication(Ljava/lang/String;)Z+]Landroid/content/pm/PackageManager$NameNotFoundException;Landroid/content/pm/PackageManager$NameNotFoundException;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
HPLcom/android/server/accounts/AccountManagerService;->isPrivileged(I)Z+]Landroid/content/pm/PackageManager$NameNotFoundException;Landroid/content/pm/PackageManager$NameNotFoundException;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
HPLcom/android/server/accounts/AccountManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
HPLcom/android/server/accounts/AccountManagerService;->peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;
HPLcom/android/server/accounts/AccountManagerService;->permissionIsGranted(Landroid/accounts/Account;Ljava/lang/String;II)Z
HPLcom/android/server/accounts/AccountManagerService;->readAuthTokenInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;+]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;]Ljava/util/Map;Ljava/util/HashMap;
HPLcom/android/server/accounts/AccountManagerService;->readUserDataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;+]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;]Ljava/util/Map;Ljava/util/HashMap;
-HSPLcom/android/server/accounts/AccountManagerService;->resolveAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/lang/Integer;+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
+HSPLcom/android/server/accounts/AccountManagerService;->resolveAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/lang/Integer;+]Landroid/content/pm/PackageManager$NameNotFoundException;Landroid/content/pm/PackageManager$NameNotFoundException;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
HPLcom/android/server/accounts/AccountManagerService;->saveAuthTokenToDatabase(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)Z+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;
HPLcom/android/server/accounts/AccountManagerService;->setAuthToken(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;
HPLcom/android/server/accounts/AccountManagerService;->setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;
-HPLcom/android/server/accounts/AccountManagerService;->setUserdataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;
+HPLcom/android/server/accounts/AccountManagerService;->setUserdataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;I)V+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;
HPLcom/android/server/accounts/AccountsDb;->beginTransaction()V+]Landroid/database/sqlite/SQLiteOpenHelper;Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;
HPLcom/android/server/accounts/AccountsDb;->findDeAccountId(Landroid/accounts/Account;)J+]Landroid/database/Cursor;Landroid/database/sqlite/SQLiteCursor;]Landroid/database/sqlite/SQLiteOpenHelper;Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;
HPLcom/android/server/accounts/AccountsDb;->findExtrasIdByAccountId(JLjava/lang/String;)J+]Landroid/database/Cursor;Landroid/database/sqlite/SQLiteCursor;]Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;
@@ -201,24 +200,25 @@ HSPLcom/android/server/alarm/Alarm;->makeTag(Landroid/app/PendingIntent;Ljava/la
HSPLcom/android/server/alarm/Alarm;->matches(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)Z+]Landroid/app/IAlarmListener;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/app/IAlarmListener$Stub$Proxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/os/IBinder;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/os/BinderProxy;,Lcom/android/server/alarm/AlarmManagerService$2;
HSPLcom/android/server/alarm/Alarm;->setPolicyElapsed(IJ)Z
HSPLcom/android/server/alarm/Alarm;->updateWhenElapsed()Z
+HSPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda13;-><init>(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
HSPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda13;->test(Ljava/lang/Object;)Z
-HPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda15;->updateAlarmDelivery(Lcom/android/server/alarm/Alarm;)Z
+HSPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda15;->updateAlarmDelivery(Lcom/android/server/alarm/Alarm;)Z
HPLcom/android/server/alarm/AlarmManagerService$4;->canScheduleExactAlarms(Ljava/lang/String;)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
HSPLcom/android/server/alarm/AlarmManagerService$4;->remove(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V+]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
HSPLcom/android/server/alarm/AlarmManagerService$4;->set(Ljava/lang/String;IJJJILandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
HSPLcom/android/server/alarm/AlarmManagerService$7$$ExternalSyntheticLambda0;->updateAlarmDelivery(Lcom/android/server/alarm/Alarm;)Z
HSPLcom/android/server/alarm/AlarmManagerService$7;->updateAlarmsForUid(I)V+]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;
-HPLcom/android/server/alarm/AlarmManagerService$AlarmHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
+HSPLcom/android/server/alarm/AlarmManagerService$AlarmHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
HSPLcom/android/server/alarm/AlarmManagerService$AlarmThread;->run()V
HPLcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;->getTotalWakeupsInWindow(Ljava/lang/String;I)I+]Landroid/util/LongArrayQueue;Landroid/util/LongArrayQueue;
HSPLcom/android/server/alarm/AlarmManagerService$ClockReceiver;->scheduleTimeTickEvent()V+]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
-HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->alarmComplete(Landroid/os/IBinder;)V
-HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->deliverLocked(Lcom/android/server/alarm/Alarm;J)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/IAlarmListener;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/app/IAlarmListener$Stub$Proxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/os/IBinder;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/os/BinderProxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->alarmComplete(Landroid/os/IBinder;)V
+HSPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->deliverLocked(Lcom/android/server/alarm/Alarm;J)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/IAlarmListener;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/app/IAlarmListener$Stub$Proxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/os/IBinder;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/os/BinderProxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/app/PendingIntent;Landroid/content/Intent;)Lcom/android/server/alarm/AlarmManagerService$InFlight;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/os/IBinder;)Lcom/android/server/alarm/AlarmManagerService$InFlight;+]Lcom/android/internal/util/LocalLog;Lcom/android/internal/util/LocalLog;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->updateStatsLocked(Lcom/android/server/alarm/AlarmManagerService$InFlight;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;
-HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->updateTrackingLocked(Lcom/android/server/alarm/AlarmManagerService$InFlight;)V+]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/alarm/AlarmManagerService$InFlight;-><init>(Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/Alarm;J)V+]Landroid/app/IAlarmListener;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/app/IAlarmListener$Stub$Proxy;,Lcom/android/server/alarm/AlarmManagerService$2;
+HSPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/os/IBinder;)Lcom/android/server/alarm/AlarmManagerService$InFlight;+]Lcom/android/internal/util/LocalLog;Lcom/android/internal/util/LocalLog;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->updateStatsLocked(Lcom/android/server/alarm/AlarmManagerService$InFlight;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;
+HSPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->updateTrackingLocked(Lcom/android/server/alarm/AlarmManagerService$InFlight;)V+]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/alarm/AlarmManagerService$InFlight;-><init>(Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/Alarm;J)V+]Landroid/app/IAlarmListener;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/app/IAlarmListener$Stub$Proxy;,Lcom/android/server/alarm/AlarmManagerService$2;
HSPLcom/android/server/alarm/AlarmManagerService$Injector;->getCallingUid()I
HSPLcom/android/server/alarm/AlarmManagerService$Injector;->getCurrentTimeMillis()J
HSPLcom/android/server/alarm/AlarmManagerService$Injector;->getElapsedRealtimeMillis()J
@@ -227,44 +227,45 @@ HSPLcom/android/server/alarm/AlarmManagerService$Injector;->setAlarm(IJ)V
HPLcom/android/server/alarm/AlarmManagerService$LocalService;->remove(Landroid/app/PendingIntent;)V
HSPLcom/android/server/alarm/AlarmManagerService$LocalService;->shouldGetBucketElevation(Ljava/lang/String;I)Z+]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
HPLcom/android/server/alarm/AlarmManagerService$RemovedAlarm;-><init>(Lcom/android/server/alarm/Alarm;IJJ)V
+HPLcom/android/server/alarm/AlarmManagerService;->$r8$lambda$WZFEMPWy81l-szSzhRJHOwNjF-M([ILcom/android/server/alarm/Alarm;)Z
HSPLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmInjector(Lcom/android/server/alarm/AlarmManagerService;)Lcom/android/server/alarm/AlarmManagerService$Injector;
HSPLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmPackageManagerInternal(Lcom/android/server/alarm/AlarmManagerService;)Landroid/content/pm/PackageManagerInternal;
HSPLcom/android/server/alarm/AlarmManagerService;->adjustDeliveryTimeBasedOnBatterySaver(Lcom/android/server/alarm/Alarm;)Z+]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;
HSPLcom/android/server/alarm/AlarmManagerService;->adjustDeliveryTimeBasedOnBucketLocked(Lcom/android/server/alarm/Alarm;)Z+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmManagerService$TemporaryQuotaReserve;Lcom/android/server/alarm/AlarmManagerService$TemporaryQuotaReserve;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
-HPLcom/android/server/alarm/AlarmManagerService;->adjustDeliveryTimeBasedOnDeviceIdle(Lcom/android/server/alarm/Alarm;)Z+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;
-HPLcom/android/server/alarm/AlarmManagerService;->calculateDeliveryPriorities(Ljava/util/ArrayList;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/alarm/AlarmManagerService;->calculateDeliveryPriorities(Ljava/util/ArrayList;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/alarm/AlarmManagerService;->convertToElapsed(JI)J+]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;
HSPLcom/android/server/alarm/AlarmManagerService;->decrementAlarmCount(II)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
-HPLcom/android/server/alarm/AlarmManagerService;->deliverAlarmsLocked(Ljava/util/ArrayList;J)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/alarm/AlarmManagerService;->deliverAlarmsLocked(Ljava/util/ArrayList;J)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/alarm/AlarmManagerService;->hasScheduleExactAlarmInternal(Ljava/lang/String;I)Z+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
HSPLcom/android/server/alarm/AlarmManagerService;->hasUseExactAlarmInternal(Ljava/lang/String;I)Z
HSPLcom/android/server/alarm/AlarmManagerService;->increment(Landroid/util/SparseIntArray;I)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HSPLcom/android/server/alarm/AlarmManagerService;->incrementAlarmCount(I)V
+HSPLcom/android/server/alarm/AlarmManagerService;->isBackgroundRestricted(Lcom/android/server/alarm/Alarm;)Z+]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;
HSPLcom/android/server/alarm/AlarmManagerService;->isExactAlarmChangeEnabled(Ljava/lang/String;I)Z
HSPLcom/android/server/alarm/AlarmManagerService;->isExemptFromAppStandby(Lcom/android/server/alarm/Alarm;)Z
HSPLcom/android/server/alarm/AlarmManagerService;->isExemptFromBatterySaver(Lcom/android/server/alarm/Alarm;)Z
HPLcom/android/server/alarm/AlarmManagerService;->isExemptFromExactAlarmPermissionNoLock(I)Z+]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;
HPLcom/android/server/alarm/AlarmManagerService;->lambda$onStart$6([I[I)V
-HPLcom/android/server/alarm/AlarmManagerService;->lambda$removeExactListenerAlarms$7([ILcom/android/server/alarm/Alarm;)Z
-HPLcom/android/server/alarm/AlarmManagerService;->lambda$reorderAlarmsBasedOnStandbyBuckets$5(Landroid/util/ArraySet;Lcom/android/server/alarm/Alarm;)Z
+HSPLcom/android/server/alarm/AlarmManagerService;->lambda$reorderAlarmsBasedOnStandbyBuckets$5(Landroid/util/ArraySet;Lcom/android/server/alarm/Alarm;)Z
+HSPLcom/android/server/alarm/AlarmManagerService;->logAlarmBatchDelivered(IILandroid/util/SparseIntArray;Landroid/util/SparseIntArray;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HSPLcom/android/server/alarm/AlarmManagerService;->maxTriggerTime(JJJ)J
HSPLcom/android/server/alarm/AlarmManagerService;->removeAlarmsInternalLocked(Ljava/util/function/Predicate;I)V+]Landroid/app/IAlarmListener;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/app/IAlarmListener$Stub$Proxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/os/IBinder;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/os/BinderProxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/util/RingBuffer;Lcom/android/internal/util/RingBuffer;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/function/Predicate;megamorphic_types
HSPLcom/android/server/alarm/AlarmManagerService;->removeLocked(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;I)V
-HPLcom/android/server/alarm/AlarmManagerService;->reorderAlarmsBasedOnStandbyBuckets(Landroid/util/ArraySet;)Z+]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;
+HSPLcom/android/server/alarm/AlarmManagerService;->reorderAlarmsBasedOnStandbyBuckets(Landroid/util/ArraySet;)Z+]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;
HSPLcom/android/server/alarm/AlarmManagerService;->rescheduleKernelAlarmsLocked()V+]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Lcom/android/server/alarm/UserWakeupStore;Lcom/android/server/alarm/UserWakeupStore;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/alarm/AlarmManagerService;->setImpl(IJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;ILandroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;Landroid/os/Bundle;I)V+]Landroid/app/IAlarmListener;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/app/IAlarmListener$Stub$Proxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/os/IBinder;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/os/BinderProxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
HSPLcom/android/server/alarm/AlarmManagerService;->setImplLocked(IJJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;ILandroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;Landroid/os/Bundle;I)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
HSPLcom/android/server/alarm/AlarmManagerService;->setImplLocked(Lcom/android/server/alarm/Alarm;)V+]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;
HSPLcom/android/server/alarm/AlarmManagerService;->setLocked(IJ)V+]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;
-HPLcom/android/server/alarm/AlarmManagerService;->setWakelockWorkSource(Landroid/os/WorkSource;ILjava/lang/String;Z)V
-HPLcom/android/server/alarm/AlarmManagerService;->triggerAlarmsLocked(Ljava/util/ArrayList;J)I+]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
+HSPLcom/android/server/alarm/AlarmManagerService;->setWakelockWorkSource(Landroid/os/WorkSource;ILjava/lang/String;Z)V
+HSPLcom/android/server/alarm/AlarmManagerService;->triggerAlarmsLocked(Ljava/util/ArrayList;J)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
HSPLcom/android/server/alarm/AlarmManagerService;->updateNextAlarmClockLocked()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
HSPLcom/android/server/alarm/LazyAlarmStore$$ExternalSyntheticLambda0;->applyAsLong(Ljava/lang/Object;)J+]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;
HSPLcom/android/server/alarm/LazyAlarmStore;->add(Lcom/android/server/alarm/Alarm;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/alarm/LazyAlarmStore;->getNextDeliveryTime()J+]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/alarm/LazyAlarmStore;->getNextWakeupDeliveryTime()J+]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/alarm/LazyAlarmStore;->remove(Ljava/util/function/Predicate;)Ljava/util/ArrayList;+]Ljava/lang/Runnable;Lcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda4;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Predicate;megamorphic_types
-HPLcom/android/server/alarm/LazyAlarmStore;->removePendingAlarms(J)Ljava/util/ArrayList;+]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Lcom/android/server/alarm/LazyAlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/alarm/LazyAlarmStore;->removePendingAlarms(J)Ljava/util/ArrayList;+]Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;]Lcom/android/server/alarm/LazyAlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/alarm/LazyAlarmStore;->size()I+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/alarm/LazyAlarmStore;->updateAlarmDeliveries(Lcom/android/server/alarm/AlarmStore$AlarmDeliveryCalculator;)Z+]Lcom/android/server/alarm/AlarmStore$AlarmDeliveryCalculator;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
HSPLcom/android/server/alarm/MetricsHelper;->pushAlarmScheduled(Lcom/android/server/alarm/Alarm;I)V
@@ -274,18 +275,17 @@ HSPLcom/android/server/am/ActiveServices$ProcessAnrTimer;->getPid(Lcom/android/s
HSPLcom/android/server/am/ActiveServices$ProcessAnrTimer;->getPid(Ljava/lang/Object;)I+]Lcom/android/server/am/ActiveServices$ProcessAnrTimer;Lcom/android/server/am/ActiveServices$ProcessAnrTimer;
HSPLcom/android/server/am/ActiveServices$ProcessAnrTimer;->getUid(Lcom/android/server/am/ProcessRecord;)I
HSPLcom/android/server/am/ActiveServices$ProcessAnrTimer;->getUid(Ljava/lang/Object;)I+]Lcom/android/server/am/ActiveServices$ProcessAnrTimer;Lcom/android/server/am/ActiveServices$ProcessAnrTimer;
-HSPLcom/android/server/am/ActiveServices$ServiceLookupResult;-><init>(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ServiceRecord;Landroid/content/ComponentName;)V
HSPLcom/android/server/am/ActiveServices$ServiceMap;->ensureNotStartingBackgroundLocked(Lcom/android/server/am/ServiceRecord;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ActiveServices$ServiceRestarter;-><init>(Lcom/android/server/am/ActiveServices;)V
HSPLcom/android/server/am/ActiveServices$ServiceRestarter;-><init>(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices-IA;)V
HSPLcom/android/server/am/ActiveServices$ServiceRestarter;->setService(Lcom/android/server/am/ServiceRecord;)V
HSPLcom/android/server/am/ActiveServices;->attachApplicationLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)Z+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ActiveServices;->bindServiceLocked(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;ZILjava/lang/String;Landroid/app/IApplicationThread;Ljava/lang/String;I)I+]Landroid/app/IServiceConnection;Landroid/app/IServiceConnection$Stub$Proxy;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/ActivityServiceConnectionsHolder;Lcom/android/server/wm/ActivityServiceConnectionsHolder;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->bindServiceLocked(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;ZILjava/lang/String;Landroid/app/IApplicationThread;Ljava/lang/String;I)I+]Landroid/app/IServiceConnection;Landroid/app/IServiceConnection$Stub$Proxy;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Lcom/android/server/wm/ActivityServiceConnectionsHolder;Lcom/android/server/wm/ActivityServiceConnectionsHolder;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ActiveServices;->bringDownServiceIfNeededLocked(Lcom/android/server/am/ServiceRecord;ZZZLjava/lang/String;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ActiveServices;->bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;]Landroid/app/IServiceConnection;Landroid/app/IServiceConnection$Stub$Proxy;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;]Lcom/android/server/am/ActiveServices$ServiceRestarter;Lcom/android/server/am/ActiveServices$ServiceRestarter;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ForegroundServiceTypeLoggerModule;Lcom/android/server/am/ForegroundServiceTypeLoggerModule;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Landroid/app/IServiceConnection;Landroid/app/IServiceConnection$Stub$Proxy;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;]Lcom/android/server/am/ActiveServices$ServiceRestarter;Lcom/android/server/am/ActiveServices$ServiceRestarter;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ForegroundServiceTypeLoggerModule;Lcom/android/server/am/ForegroundServiceTypeLoggerModule;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/ActiveServices$ServiceAnrTimer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ActiveServices;->bringUpServiceInnerLocked(Lcom/android/server/am/ServiceRecord;IZZZZZI)Ljava/lang/String;+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ActiveServices;->bringUpServiceLocked(Lcom/android/server/am/ServiceRecord;IZZZZZI)Ljava/lang/String;
-HSPLcom/android/server/am/ActiveServices;->bumpServiceExecutingLocked(Lcom/android/server/am/ServiceRecord;ZLjava/lang/String;IZ)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
+HSPLcom/android/server/am/ActiveServices;->bumpServiceExecutingLocked(Lcom/android/server/am/ServiceRecord;ZLjava/lang/String;IZ)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;
HSPLcom/android/server/am/ActiveServices;->cancelForegroundNotificationLocked(Lcom/android/server/am/ServiceRecord;)V
HSPLcom/android/server/am/ActiveServices;->deferServiceBringupIfFrozenLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;IZZILandroid/app/BackgroundStartPrivileges;ZLandroid/app/IServiceConnection;)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ActiveServices;->dropFgsNotificationStateLocked(Lcom/android/server/am/ServiceRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
@@ -293,53 +293,54 @@ HSPLcom/android/server/am/ActiveServices;->generateAdditionalSeInfoFromService(L
HSPLcom/android/server/am/ActiveServices;->getAllowMode(Landroid/content/Intent;Ljava/lang/String;)I+]Landroid/content/Intent;Landroid/content/Intent;
HSPLcom/android/server/am/ActiveServices;->getHostingRecordTriggerType(Lcom/android/server/am/ServiceRecord;)Ljava/lang/String;
HSPLcom/android/server/am/ActiveServices;->getProcessNameForService(Landroid/content/pm/ServiceInfo;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;ZZZ)Ljava/lang/String;
-HPLcom/android/server/am/ActiveServices;->getRunningServiceInfoLocked(IIIZZ)Ljava/util/List;+]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ActiveServices;->getServiceBindingOomAdjPolicyForAddLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ConnectionRecord;)I+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/ActiveServices;->getServiceBindingOomAdjPolicyForRemovalLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ConnectionRecord;)I+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
HSPLcom/android/server/am/ActiveServices;->getServiceMapLocked(I)Lcom/android/server/am/ActiveServices$ServiceMap;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/am/ActiveServices;->getShortProcessNameForStats(ILjava/lang/String;)Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
HSPLcom/android/server/am/ActiveServices;->getShortServiceNameForStats(Lcom/android/server/am/ServiceRecord;)Ljava/lang/String;
HSPLcom/android/server/am/ActiveServices;->isServiceNeededLocked(Lcom/android/server/am/ServiceRecord;ZZ)Z
-HSPLcom/android/server/am/ActiveServices;->killServicesLocked(Lcom/android/server/am/ProcessRecord;Z)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->killServicesLocked(Lcom/android/server/am/ProcessRecord;Z)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/am/ActiveServices;->lambda$canBindingClientStartFgsLocked$6(ILandroid/util/ArraySet;Lcom/android/server/am/ProcessRecord;)Landroid/util/Pair;+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/am/ActiveServices;->lambda$shouldAllowFgsStartForegroundNoBindingCheckLocked$7(IZLcom/android/server/am/ProcessRecord;)Ljava/lang/Integer;+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/ActiveServices;->lambda$shouldAllowFgsWhileInUsePermissionByBindingsLocked$5(ILandroid/util/ArraySet;Lcom/android/server/am/ProcessRecord;)Ljava/lang/Integer;+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/am/ActiveServices;->makeRunningServiceInfoLocked(Lcom/android/server/am/ServiceRecord;)Landroid/app/ActivityManager$RunningServiceInfo;+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ActiveServices;->maybeLogBindCrossProfileService(ILjava/lang/String;I)V+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
+HSPLcom/android/server/am/ActiveServices;->maybeStopShortFgsTimeoutLocked(Lcom/android/server/am/ServiceRecord;)V+]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;
HSPLcom/android/server/am/ActiveServices;->notifyBindingServiceEventLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V
HSPLcom/android/server/am/ActiveServices;->publishServiceLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Landroid/os/IBinder;)V+]Landroid/app/IServiceConnection;Landroid/app/IServiceConnection$Stub$Proxy;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ActiveServices;->realStartServiceLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ProcessRecord;Landroid/app/IApplicationThread;ILcom/android/server/am/UidRecord;ZZI)V+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ActiveServices;->removeConnectionLocked(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/wm/ActivityServiceConnectionsHolder;Z)I+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;]Landroid/app/IServiceConnection;Landroid/app/IServiceConnection$Stub$Proxy;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/ActivityServiceConnectionsHolder;Lcom/android/server/wm/ActivityServiceConnectionsHolder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ActiveServices;->requestServiceBindingLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;ZZI)Z+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->realStartServiceLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ProcessRecord;Landroid/app/IApplicationThread;ILcom/android/server/am/UidRecord;ZZI)V+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->removeConnectionLocked(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/wm/ActivityServiceConnectionsHolder;Z)I+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Landroid/app/IServiceConnection;Landroid/app/IServiceConnection$Stub$Proxy;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Lcom/android/server/wm/ActivityServiceConnectionsHolder;Lcom/android/server/wm/ActivityServiceConnectionsHolder;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->requestServiceBindingLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;ZZI)Z+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ActiveServices;->requestServiceBindingsLocked(Lcom/android/server/am/ServiceRecord;ZI)V
HSPLcom/android/server/am/ActiveServices;->requestStartTargetPermissionsReviewIfNeededLocked(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;Ljava/lang/String;ILandroid/content/Intent;ZIZLandroid/app/IServiceConnection;)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
HSPLcom/android/server/am/ActiveServices;->resetFgsRestrictionLocked(Lcom/android/server/am/ServiceRecord;)V
HSPLcom/android/server/am/ActiveServices;->retrieveServiceLocked(Landroid/content/Intent;Ljava/lang/String;ZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIZZZZLandroid/app/ForegroundServiceDelegationOptions;ZZ)Lcom/android/server/am/ActiveServices$ServiceLookupResult;
HSPLcom/android/server/am/ActiveServices;->retrieveServiceLocked(Landroid/content/Intent;Ljava/lang/String;ZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIZZZZLandroid/app/ForegroundServiceDelegationOptions;ZZZ)Lcom/android/server/am/ActiveServices$ServiceLookupResult;+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ComponentAliasResolver$Resolution;Lcom/android/server/am/ComponentAliasResolver$Resolution;]Lcom/android/server/am/ComponentAliasResolver;Lcom/android/server/am/ComponentAliasResolver;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/firewall/IntentFirewall;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ActiveServices;->scheduleServiceTimeoutLocked(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/ActiveServices$ProcessAnrTimer;
-HSPLcom/android/server/am/ActiveServices;->sendServiceArgsLocked(Lcom/android/server/am/ServiceRecord;ZZ)V+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ServiceRecord$StartItem;Lcom/android/server/am/ServiceRecord$StartItem;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->sendServiceArgsLocked(Lcom/android/server/am/ServiceRecord;ZZ)V+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ServiceRecord$StartItem;Lcom/android/server/am/ServiceRecord$StartItem;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;IIIZLandroid/content/Intent;)V+]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;ZZZI)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/ActiveServices$ProcessAnrTimer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;ZZZI)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/ActiveServices$ProcessAnrTimer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ActiveServices;->setFgsRestrictionLocked(Ljava/lang/String;IILandroid/content/Intent;Lcom/android/server/am/ServiceRecord;ILandroid/app/BackgroundStartPrivileges;Z)V
HSPLcom/android/server/am/ActiveServices;->setFgsRestrictionLocked(Ljava/lang/String;IILandroid/content/Intent;Lcom/android/server/am/ServiceRecord;ILandroid/app/BackgroundStartPrivileges;ZZ)V
+HPLcom/android/server/am/ActiveServices;->setServiceForegroundInnerLocked(Lcom/android/server/am/ServiceRecord;ILandroid/app/Notification;III)V+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/ServiceInfo;Landroid/content/pm/ServiceInfo;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ForegroundServiceTypeLoggerModule;Lcom/android/server/am/ForegroundServiceTypeLoggerModule;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Lcom/android/server/am/ServiceRecord$TimeLimitedFgsInfo;Lcom/android/server/am/ServiceRecord$TimeLimitedFgsInfo;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/ActiveServices$ServiceAnrTimer;
HSPLcom/android/server/am/ActiveServices;->shouldAllowFgsStartForegroundNoBindingCheckLocked(IIILjava/lang/String;Lcom/android/server/am/ServiceRecord;Landroid/app/BackgroundStartPrivileges;)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
HSPLcom/android/server/am/ActiveServices;->shouldAllowFgsStartForegroundWithBindingCheckLocked(ILjava/lang/String;IILandroid/content/Intent;Lcom/android/server/am/ServiceRecord;Landroid/app/BackgroundStartPrivileges;Z)I+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
HSPLcom/android/server/am/ActiveServices;->shouldAllowFgsWhileInUsePermissionByBindingsLocked(I)I
HSPLcom/android/server/am/ActiveServices;->shouldAllowFgsWhileInUsePermissionLocked(Ljava/lang/String;IILcom/android/server/am/ProcessRecord;Landroid/app/BackgroundStartPrivileges;)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
HSPLcom/android/server/am/ActiveServices;->startServiceInnerLocked(Lcom/android/server/am/ActiveServices$ServiceMap;Landroid/content/Intent;Lcom/android/server/am/ServiceRecord;ZZILjava/lang/String;IZLjava/lang/String;)Landroid/content/ComponentName;+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ActiveServices;->startServiceInnerLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;IILjava/lang/String;IZZLandroid/app/BackgroundStartPrivileges;Ljava/lang/String;)Landroid/content/ComponentName;+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->startServiceInnerLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;IILjava/lang/String;IZZLandroid/app/BackgroundStartPrivileges;Ljava/lang/String;)Landroid/content/ComponentName;+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ActiveServices;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IIZLjava/lang/String;Ljava/lang/String;ILandroid/app/BackgroundStartPrivileges;ZILjava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName;+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
HSPLcom/android/server/am/ActiveServices;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IIZLjava/lang/String;Ljava/lang/String;IZILjava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName;
HPLcom/android/server/am/ActiveServices;->stopInBackgroundLocked(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActiveServices;->stopServiceAndUpdateAllowlistManagerLocked(Lcom/android/server/am/ServiceRecord;)V
+HSPLcom/android/server/am/ActiveServices;->stopServiceAndUpdateAllowlistManagerLocked(Lcom/android/server/am/ServiceRecord;)V+]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;
HPLcom/android/server/am/ActiveServices;->stopServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IZILjava/lang/String;Ljava/lang/String;)I+]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HPLcom/android/server/am/ActiveServices;->stopServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V
-HPLcom/android/server/am/ActiveServices;->stopServiceTokenLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z+]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ServiceRecord$StartItem;Lcom/android/server/am/ServiceRecord$StartItem;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ActiveServices;->stopServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V+]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;
+HPLcom/android/server/am/ActiveServices;->stopServiceTokenLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z+]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Lcom/android/server/am/ServiceRecord$StartItem;Lcom/android/server/am/ServiceRecord$StartItem;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ActiveServices;->traceInstant(Ljava/lang/String;Lcom/android/server/am/ServiceRecord;)V
-HPLcom/android/server/am/ActiveServices;->unbindFinishedLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Z)V+]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ActiveServices;->unbindServiceLocked(Landroid/app/IServiceConnection;)Z+]Landroid/app/IServiceConnection;Landroid/app/IServiceConnection$Stub$Proxy;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ActiveServices;->unbindFinishedLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;)V+]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->unbindServiceLocked(Landroid/app/IServiceConnection;)Z+]Landroid/app/IServiceConnection;Landroid/app/IServiceConnection$Stub$Proxy;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ActiveServices;->unscheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;IZ)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ActiveServices;->updateServiceClientActivitiesLocked(Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ConnectionRecord;Z)Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActiveServices;->updateServiceClientActivitiesLocked(Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ConnectionRecord;Z)Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ActiveServices;->updateServiceForegroundLocked(Lcom/android/server/am/ProcessServiceRecord;Z)V
HSPLcom/android/server/am/ActiveUids;->get(I)Lcom/android/server/am/UidRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/am/ActiveUids;->put(ILcom/android/server/am/UidRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
@@ -350,6 +351,7 @@ HSPLcom/android/server/am/ActivityManagerService$Injector;->getCallingPid()I
HSPLcom/android/server/am/ActivityManagerService$Injector;->getCallingUid()I
HSPLcom/android/server/am/ActivityManagerService$Injector;->isNetworkRestrictedForUid(I)Z+]Lcom/android/server/net/NetworkManagementInternal;Lcom/android/server/net/NetworkManagementService$LocalService;
HSPLcom/android/server/am/ActivityManagerService$Injector;->restoreCallingIdentity(J)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->broadcastIntentInPackage(Ljava/lang/String;Ljava/lang/String;IIILandroid/content/Intent;Ljava/lang/String;Landroid/app/IApplicationThread;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;Landroid/os/Bundle;ZZILandroid/app/BackgroundStartPrivileges;[I)I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastController;Lcom/android/server/am/BroadcastController;
HSPLcom/android/server/am/ActivityManagerService$LocalService;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String;+]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;
HSPLcom/android/server/am/ActivityManagerService$LocalService;->deletePendingTopUid(IJ)V
HSPLcom/android/server/am/ActivityManagerService$LocalService;->getCurrentUserId()I+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
@@ -370,44 +372,51 @@ HPLcom/android/server/am/ActivityManagerService$LocalService;->startServiceInPac
HSPLcom/android/server/am/ActivityManagerService$LocalService;->updateDeviceIdleTempAllowlist([IIZJIILjava/lang/String;I)V+]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList;
HSPLcom/android/server/am/ActivityManagerService$MainHandler$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
HSPLcom/android/server/am/ActivityManagerService$MainHandler$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/am/ActivityManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
-HSPLcom/android/server/am/ActivityManagerService$MainHandler;->lambda$handleMessage$1(Landroid/os/Message;Landroid/app/ActivityManagerInternal$BroadcastEventListener;)V+]Landroid/app/ActivityManagerInternal$BroadcastEventListener;Lcom/android/server/am/AppBroadcastEventsTracker;
+HSPLcom/android/server/am/ActivityManagerService$MainHandler;->$r8$lambda$-BaOH0nhWmB1j4fAdRCLVwJvRCA(Landroid/os/Message;Landroid/app/ActivityManagerInternal$BindServiceEventListener;)V+]Landroid/app/ActivityManagerInternal$BindServiceEventListener;Lcom/android/server/am/AppBindServiceEventsTracker;
+HSPLcom/android/server/am/ActivityManagerService$MainHandler;->$r8$lambda$bz9CTa7TXqawLiiOdBfpNP_dnbI(Landroid/os/Message;Landroid/app/ActivityManagerInternal$BroadcastEventListener;)V+]Landroid/app/ActivityManagerInternal$BroadcastEventListener;Lcom/android/server/am/AppBroadcastEventsTracker;
+HSPLcom/android/server/am/ActivityManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/app/IUiAutomationConnection;Landroid/app/IUiAutomationConnection$Stub$Proxy;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
HSPLcom/android/server/am/ActivityManagerService$PendingTempAllowlist;-><init>(IJILjava/lang/String;II)V
HSPLcom/android/server/am/ActivityManagerService$PidMap;->get(I)Lcom/android/server/am/ProcessRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/am/ActivityManagerService;->$r8$lambda$Dp0egYYO_wvfUqcu1s5QAPQddjA([ILjava/lang/String;Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ActivityManagerService;->addCreatorToken(Landroid/content/Intent;Ljava/lang/String;)V+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/Set;Landroid/util/ArraySet;
+HSPLcom/android/server/am/ActivityManagerService;->addErrorToDropBox(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;Ljava/lang/Float;Landroid/os/incremental/IncrementalMetrics;Ljava/util/UUID;Lcom/android/server/am/ActivityManagerService$VolatileDropboxEntryStates;)V+]Landroid/os/DropBoxManager;Landroid/os/DropBoxManager;]Landroid/os/incremental/IncrementalMetrics;Landroid/os/incremental/IncrementalMetrics;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/DropboxRateLimiter$RateLimitResult;Lcom/android/server/am/DropboxRateLimiter$RateLimitResult;]Lcom/android/server/am/DropboxRateLimiter;Lcom/android/server/am/DropboxRateLimiter;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ActivityManagerService;->addPidLocked(Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
HSPLcom/android/server/am/ActivityManagerService;->addStartInfoTimestampInternal(IJII)V
HSPLcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;ZLjava/lang/String;)V+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ActivityManagerService;->attachApplicationLocked(Landroid/app/IApplicationThread;IIJ)V+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/autofill/AutofillManagerInternal;Lcom/android/server/autofill/AutofillManagerService$LocalService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;]Lcom/android/server/contentcapture/ContentCaptureManagerInternal;Lcom/android/server/contentcapture/ContentCaptureManagerService$LocalService;]Lcom/android/server/graphics/fonts/FontManagerInternal;Lcom/android/server/graphics/fonts/FontManagerService$Lifecycle$1;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActivityManagerService;->attachApplicationLocked(Landroid/app/IApplicationThread;IIJ)V+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/autofill/AutofillManagerInternal;Lcom/android/server/autofill/AutofillManagerService$LocalService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;]Lcom/android/server/contentcapture/ContentCaptureManagerInternal;Lcom/android/server/contentcapture/ContentCaptureManagerService$LocalService;]Lcom/android/server/graphics/fonts/FontManagerInternal;Lcom/android/server/graphics/fonts/FontManagerService$Lifecycle$1;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ActivityManagerService;->bindServiceInstance(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;Ljava/lang/String;I)I
HSPLcom/android/server/am/ActivityManagerService;->bindServiceInstance(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;ZILjava/lang/String;Landroid/app/IApplicationThread;Ljava/lang/String;I)I+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
HSPLcom/android/server/am/ActivityManagerService;->boostPriorityForLockedSection()V+]Lcom/android/server/ThreadPriorityBooster;Lcom/android/server/ThreadPriorityBooster;
HSPLcom/android/server/am/ActivityManagerService;->boostPriorityForProcLockedSection()V+]Lcom/android/server/ThreadPriorityBooster;Lcom/android/server/ThreadPriorityBooster;
-HSPLcom/android/server/am/ActivityManagerService;->broadcastIntentWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastController;Lcom/android/server/am/BroadcastController;
+HSPLcom/android/server/am/ActivityManagerService;->broadcastIntentWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I+]Lcom/android/server/am/BroadcastController;Lcom/android/server/am/BroadcastController;
+HPLcom/android/server/am/ActivityManagerService;->cancelIntentSender(Landroid/content/IIntentSender;)V+]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;
HSPLcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
HSPLcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIIZ)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
HSPLcom/android/server/am/ActivityManagerService;->checkPermission(Ljava/lang/String;II)I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
HSPLcom/android/server/am/ActivityManagerService;->checkPermissionForDevice(Ljava/lang/String;III)I
-HSPLcom/android/server/am/ActivityManagerService;->cleanUpApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;IZZIZZ)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActivityManagerService;->cleanUpApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;IZZIZZ)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueImpl;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ActivityManagerService;->enforceAllowedToStartOrBindServiceIfSdkSandbox(Landroid/content/Intent;)V+]Lcom/android/server/sdksandbox/SdkSandboxManagerLocal;Lcom/android/server/sdksandbox/SdkSandboxManagerService$LocalImpl;
HSPLcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
-HSPLcom/android/server/am/ActivityManagerService;->enqueueOomAdjTargetLocked(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
+HSPLcom/android/server/am/ActivityManagerService;->enqueueOomAdjTargetLocked(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;
HSPLcom/android/server/am/ActivityManagerService;->enqueuePendingTopAppIfNecessaryLocked()V
HSPLcom/android/server/am/ActivityManagerService;->enqueueUidChangeLocked(Lcom/android/server/am/UidRecord;II)V+]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Lcom/android/server/am/UidObserverController;Lcom/android/server/am/UidObserverController;
HSPLcom/android/server/am/ActivityManagerService;->ensureAllowedAssociations()V
HSPLcom/android/server/am/ActivityManagerService;->finishAttachApplication(JJ)V
-HSPLcom/android/server/am/ActivityManagerService;->finishAttachApplicationInner(JII)V+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
-HSPLcom/android/server/am/ActivityManagerService;->finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZI)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastController;Lcom/android/server/am/BroadcastController;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;
+HSPLcom/android/server/am/ActivityManagerService;->finishAttachApplicationInner(JII)V+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
+HSPLcom/android/server/am/ActivityManagerService;->finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZI)V+]Lcom/android/server/am/BroadcastController;Lcom/android/server/am/BroadcastController;
HSPLcom/android/server/am/ActivityManagerService;->getAppStartModeLOSP(ILjava/lang/String;IIZZZ)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
HSPLcom/android/server/am/ActivityManagerService;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder;+]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;
HSPLcom/android/server/am/ActivityManagerService;->getHistoricalProcessExitReasons(Ljava/lang/String;III)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
HSPLcom/android/server/am/ActivityManagerService;->getInfoForIntentSender(Landroid/content/IIntentSender;)Landroid/app/ActivityManager$PendingIntentInfo;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
HSPLcom/android/server/am/ActivityManagerService;->getIntentSenderWithFeature(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)Landroid/content/IIntentSender;+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService;->getIntentSenderWithFeatureAsApp(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;II)Landroid/content/IIntentSender;+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
+HSPLcom/android/server/am/ActivityManagerService;->getIntentSenderWithFeatureAsApp(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;II)Landroid/content/IIntentSender;+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
HSPLcom/android/server/am/ActivityManagerService;->getMemoryTrimLevel()I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;
-HPLcom/android/server/am/ActivityManagerService;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
+HSPLcom/android/server/am/ActivityManagerService;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
HSPLcom/android/server/am/ActivityManagerService;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
+HSPLcom/android/server/am/ActivityManagerService;->getPackageProcessState(Ljava/lang/String;Ljava/lang/String;)I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
HSPLcom/android/server/am/ActivityManagerService;->getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ActivityManagerService;->getRecordForAppLOSP(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
+HSPLcom/android/server/am/ActivityManagerService;->getRecordForAppLOSP(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
HSPLcom/android/server/am/ActivityManagerService;->getRecordForAppLOSP(Landroid/os/IBinder;)Lcom/android/server/am/ProcessRecord;+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/ActivityManagerService;->getRunningAppProcesses()Ljava/util/List;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
HSPLcom/android/server/am/ActivityManagerService;->getShortAction(Ljava/lang/String;)Ljava/lang/String;
@@ -422,15 +431,13 @@ HSPLcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava
HSPLcom/android/server/am/ActivityManagerService;->hasUsageStatsPermission(Ljava/lang/String;II)Z+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
HSPLcom/android/server/am/ActivityManagerService;->isAllowlistedForFgsStartLOSP(I)Lcom/android/server/am/ActivityManagerService$FgsTempAllowListItem;+]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList;
HSPLcom/android/server/am/ActivityManagerService;->isAppStartModeDisabled(ILjava/lang/String;)Z+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService;->isReceivingBroadcastLocked(Lcom/android/server/am/ProcessRecord;[I)Z+]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;
+HSPLcom/android/server/am/ActivityManagerService;->isReceivingBroadcastLocked(Lcom/android/server/am/ProcessRecord;[I)Z+]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueImpl;,Lcom/android/server/am/BroadcastQueueModernImpl;
HSPLcom/android/server/am/ActivityManagerService;->isSingleton(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)Z
HSPLcom/android/server/am/ActivityManagerService;->isUidActiveLOSP(I)Z
-HPLcom/android/server/am/ActivityManagerService;->lambda$checkExcessivePowerUsage$20(JJZZLcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ActivityManagerService;->lambda$getPackageProcessState$0([ILjava/lang/String;Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/ActivityManagerService;->maybeSendBootCompletedLocked(Lcom/android/server/am/ProcessRecord;Z)V+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
HSPLcom/android/server/am/ActivityManagerService;->noteUidProcessState(III)V+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/stats/pull/StatsPullAtomServiceInternal;Lcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomServiceInternalImpl;
HSPLcom/android/server/am/ActivityManagerService;->notifyPackageUse(Ljava/lang/String;I)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HPLcom/android/server/am/ActivityManagerService;->onProcessFreezableChangedLocked(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;
+HPLcom/android/server/am/ActivityManagerService;->onProcessFreezableChangedLocked(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueImpl;,Lcom/android/server/am/BroadcastQueueModernImpl;
HSPLcom/android/server/am/ActivityManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
HSPLcom/android/server/am/ActivityManagerService;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V+]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/am/ActivityManagerService;->publishService(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/IBinder;)V+]Landroid/content/Intent;Landroid/content/Intent;
@@ -438,10 +445,10 @@ HSPLcom/android/server/am/ActivityManagerService;->pushTempAllowlist()V+]Lcom/an
HSPLcom/android/server/am/ActivityManagerService;->refContentProvider(Landroid/os/IBinder;II)Z+]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;
HSPLcom/android/server/am/ActivityManagerService;->registerReceiverWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent;+]Lcom/android/server/am/BroadcastController;Lcom/android/server/am/BroadcastController;
HPLcom/android/server/am/ActivityManagerService;->removeContentProvider(Landroid/os/IBinder;Z)V+]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;
-HPLcom/android/server/am/ActivityManagerService;->reportUidFrozenStateChanged([I[I)V+]Landroid/app/IUidFrozenStateChangedCallback;Landroid/app/ActivityManager$1;,Landroid/app/ActivityManager$2;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;
+HPLcom/android/server/am/ActivityManagerService;->reportUidFrozenStateChanged([I[I)V+]Landroid/app/IUidFrozenStateChangedCallback;Landroid/app/ActivityManager$2;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;
HSPLcom/android/server/am/ActivityManagerService;->resetPriorityAfterLockedSection()V+]Lcom/android/server/ThreadPriorityBooster;Lcom/android/server/ThreadPriorityBooster;
HSPLcom/android/server/am/ActivityManagerService;->resetPriorityAfterProcLockedSection()V+]Lcom/android/server/ThreadPriorityBooster;Lcom/android/server/ThreadPriorityBooster;
-HPLcom/android/server/am/ActivityManagerService;->sendIntentSender(Landroid/app/IApplicationThread;Landroid/content/IIntentSender;Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I+]Landroid/content/IIntentSender;Lcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver$1;
+HPLcom/android/server/am/ActivityManagerService;->sendIntentSender(Landroid/app/IApplicationThread;Landroid/content/IIntentSender;Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I+]Landroid/content/IIntentSender;Lcom/android/server/pm/PackageArchiver$UnarchiveIntentSender;,Lcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver$1;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
HSPLcom/android/server/am/ActivityManagerService;->serviceDoneExecuting(Landroid/os/IBinder;IIILandroid/content/Intent;)V
HSPLcom/android/server/am/ActivityManagerService;->setProcessTrackerStateLOSP(Lcom/android/server/am/ProcessRecord;I)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/ActivityManagerService;->shouldIgnoreDeliveryGroupPolicy(Ljava/lang/String;)Z
@@ -456,46 +463,47 @@ HSPLcom/android/server/am/ActivityManagerService;->traceBegin(JLjava/lang/String
HSPLcom/android/server/am/ActivityManagerService;->trimApplicationsLocked(ZI)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ActivityManagerService;->unbindService(Landroid/app/IServiceConnection;)Z
HSPLcom/android/server/am/ActivityManagerService;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;ZLcom/android/server/am/ProcessRecord;)V
-HSPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;I)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
-HSPLcom/android/server/am/ActivityManagerService;->updateOomAdjPendingTargetsLocked(I)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
-HSPLcom/android/server/am/ActivityManagerService;->updateProcessForegroundLocked(Lcom/android/server/am/ProcessRecord;ZIZZ)V+]Landroid/app/ActivityManagerInternal$ForegroundServiceStateListener;Lcom/android/server/am/AppFGSTracker;]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ActivityManagerService;->updateOomAdjPendingTargetsLocked(I)V+]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;
+HSPLcom/android/server/am/ActivityManagerService;->updateProcessForegroundLocked(Lcom/android/server/am/ProcessRecord;ZIZZ)V+]Landroid/app/ActivityManagerInternal$ForegroundServiceStateListener;Lcom/android/server/am/AppFGSTracker;]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ActivityManagerService;->validateAssociationAllowedLocked(Ljava/lang/String;ILjava/lang/String;I)Z
HSPLcom/android/server/am/AppBindRecord;-><init>(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;)V
HSPLcom/android/server/am/AppBindServiceEventsTracker;->onBindingService(Ljava/lang/String;I)V+]Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTracker$Injector;
HSPLcom/android/server/am/AppBroadcastEventsTracker;->onSendingBroadcast(Ljava/lang/String;I)V+]Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTracker$Injector;
HSPLcom/android/server/am/AppErrors;->isBadProcess(Ljava/lang/String;I)Z+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;
+HSPLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda10;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->addExitInfoLocked(Landroid/app/ApplicationExitInfo;)V+]Ljava/io/File;Ljava/io/File;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->getExitInfosLocked(IILjava/util/List;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
-HPLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/AppExitInfoTracker$KillHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/am/AppExitInfoTracker;->forEachPackageLocked(Ljava/util/function/BiFunction;)V+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Ljava/util/function/BiFunction;Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda0;,Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda10;,Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda14;,Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda16;,Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda17;,Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda6;,Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda8;
+HSPLcom/android/server/am/AppExitInfoTracker;->forEachPackageLocked(Ljava/util/function/BiFunction;)V+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Ljava/util/function/BiFunction;Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda10;,Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda14;,Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda16;,Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda6;
HSPLcom/android/server/am/AppExitInfoTracker;->getExitInfo(Ljava/lang/String;IIILjava/util/List;)V+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/am/AppExitInfoTracker;->lambda$getExitInfo$3(IILjava/util/List;Ljava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/am/AppExitInfoTracker;->lambda$updateExitInfoIfNecessaryLocked$2(II[ZLjava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Long;Ljava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/AppExitInfoTracker;->obtainRawRecord(Lcom/android/server/am/ProcessRecord;J)Landroid/app/ApplicationExitInfo;+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/AppFGSTracker;->hasForegroundServices(Ljava/lang/String;I)Z+]Lcom/android/server/am/AppFGSTracker$PackageDurations;Lcom/android/server/am/AppFGSTracker$PackageDurations;]Lcom/android/server/am/UidProcessMap;Lcom/android/server/am/UidProcessMap;
+HPLcom/android/server/am/AppPermissionTracker$MyHandler;->handleMessage(Landroid/os/Message;)V
HPLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;-><init>(Lcom/android/server/am/AppPermissionTracker;ILjava/lang/String;I)V+]Lcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;Lcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;
HPLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;->updateAppOps()V+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/internal/app/IAppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTracker$Injector;
HPLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;->updatePermissionState()V+]Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTracker$Injector;
+HPLcom/android/server/am/AppPermissionTracker;->handleOpChanged(IILjava/lang/String;)V+]Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTracker$Injector;
HPLcom/android/server/am/AppPermissionTracker;->handlePermissionsInit()V
-HSPLcom/android/server/am/AppProfiler$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/am/AppProfiler$CachedAppsWatermarkData;->lambda$updateCachedAppsSnapshot$0(JLcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/AppProfiler$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/am/AppProfiler$CachedAppsWatermarkData;->lambda$updateCachedAppsSnapshot$0(JLcom/android/server/am/ProcessRecord;)V
HSPLcom/android/server/am/AppProfiler$CachedAppsWatermarkData;->updateCachedAppsHighWatermarkIfNecessaryLocked(IJ)V
-HPLcom/android/server/am/AppProfiler$CachedAppsWatermarkData;->updateCachedAppsSnapshot(J)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+HSPLcom/android/server/am/AppProfiler$CachedAppsWatermarkData;->updateCachedAppsSnapshot(J)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+HSPLcom/android/server/am/AppProfiler;->$r8$lambda$O0KXijwG7-p0M_PB8ZuTBcOSGho(Lcom/android/server/am/ProcessRecord;)V+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HPLcom/android/server/am/AppProfiler;->collectRssInBackground()V+]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/am/AppProfiler;->getCpuDelayTimeForPid(I)J+]Lcom/android/internal/os/ProcessCpuTracker;Lcom/android/internal/os/ProcessCpuTracker;
-HSPLcom/android/server/am/AppProfiler;->lambda$updateLowMemStateLSP$3(Lcom/android/server/am/ProcessRecord;)V+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/AppProfiler;->isLastMemoryLevelNormal()Z
+HPLcom/android/server/am/AppProfiler;->isProfilingPss()Z
+HPLcom/android/server/am/AppProfiler;->recordRssSampleLPf(Lcom/android/server/am/ProcessProfileRecord;IJIJJ)V+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;
HPLcom/android/server/am/AppProfiler;->requestPssLPf(Lcom/android/server/am/ProcessProfileRecord;I)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/AppProfiler;->setupProfilerInfoLocked(Landroid/app/IApplicationThread;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActiveInstrumentation;)Landroid/app/ProfilerInfo;+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Lcom/android/server/am/AppProfiler$ProfileData;Lcom/android/server/am/AppProfiler$ProfileData;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/AppProfiler;->updateCpuStatsNow()V+]Lcom/android/internal/os/ProcessCpuTracker;Lcom/android/internal/os/ProcessCpuTracker;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
-HSPLcom/android/server/am/AppProfiler;->updateLowMemStateLSP(IIIJ)V+]Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
+HSPLcom/android/server/am/AppProfiler;->updateLowMemStateLSP(IIIJ)V+]Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
HSPLcom/android/server/am/AppProfiler;->updateNextPssTimeLPf(ILcom/android/server/am/ProcessProfileRecord;JZ)V+]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
HSPLcom/android/server/am/AppRestrictionController$BgHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;
HSPLcom/android/server/am/AppRestrictionController$Injector;->getActivityManagerService()Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/AppRestrictionController$Injector;->getAppFGSTracker()Lcom/android/server/am/AppFGSTracker;
+HSPLcom/android/server/am/AppRestrictionController$Injector;->getAppStandbyInternal()Lcom/android/server/usage/AppStandbyInternal;
HSPLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->update(III)I
+HSPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->forEachPackageInUidLocked(ILcom/android/internal/util/function/TriConsumer;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/internal/util/function/TriConsumer;Lcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda3;
HSPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->getRestrictionLevel(I)I+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;
-HSPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->loadOneFromXml(Lcom/android/modules/utils/TypedXmlPullParser;J[JZ)V+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
HSPLcom/android/server/am/AppRestrictionController;->applyRestrictionLevel(Ljava/lang/String;IILcom/android/server/am/AppRestrictionController$TrackerInfo;IZII)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
HSPLcom/android/server/am/AppRestrictionController;->calcAppRestrictionLevel(IILjava/lang/String;IZZ)Landroid/util/Pair;+]Lcom/android/server/AppStateTracker;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/apphibernation/AppHibernationManagerInternal;Lcom/android/server/apphibernation/AppHibernationService$LocalService;
HSPLcom/android/server/am/AppRestrictionController;->getBackgroundRestrictionExemptionReason(I)I+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;
@@ -505,16 +513,19 @@ HSPLcom/android/server/am/AppRestrictionController;->getPotentialUserAllowedExem
HSPLcom/android/server/am/AppRestrictionController;->isCarrierApp(Ljava/lang/String;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
HSPLcom/android/server/am/AppRestrictionController;->isOnDeviceIdleAllowlist(I)Z
HSPLcom/android/server/am/AppRestrictionController;->isOnSystemDeviceIdleAllowlist(I)Z
-HSPLcom/android/server/am/AppRestrictionController;->isSystemModule(Ljava/lang/String;)Z+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Ljava/io/File;Ljava/io/File;]Ljava/util/HashMap;Ljava/util/HashMap;
+HSPLcom/android/server/am/AppRestrictionController;->refreshAppRestrictionLevelForUser(III)V
HSPLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;->addStartInfoLocked(Landroid/app/ApplicationStartInfo;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;->addTimestampToStartLocked(IJ)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;->isAddTimestampAllowed(Landroid/app/ApplicationStartInfo;IJ)Z
+HSPLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;->readFromProto(Landroid/util/proto/ProtoInputStream;JLjava/lang/String;)I+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/AppStartInfoTracker;->addBaseFieldsFromProcessRecord(Landroid/app/ApplicationStartInfo;Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
HSPLcom/android/server/am/AppStartInfoTracker;->addStartInfoLocked(Landroid/app/ApplicationStartInfo;)Landroid/app/ApplicationStartInfo;+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;
HSPLcom/android/server/am/AppStartInfoTracker;->addTimestampToStart(Ljava/lang/String;IJI)V+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;
HSPLcom/android/server/am/ApplicationThreadDeferred;-><init>(Landroid/app/IApplicationThread;Z)V
HSPLcom/android/server/am/ApplicationThreadDeferred;->asBinder()Landroid/os/IBinder;+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;
+HSPLcom/android/server/am/BaseAppStateEvents;->getEarliest(J)J+]Lcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;Lcom/android/server/am/AppBindServiceEventsTracker$AppBindServiceEventsPolicy;,Lcom/android/server/am/AppBroadcastEventsTracker$AppBroadcastEventsPolicy;,Lcom/android/server/am/AppFGSTracker$AppFGSPolicy;,Lcom/android/server/am/AppMediaSessionTracker$AppMediaSessionPolicy;
+HSPLcom/android/server/am/BaseAppStateEvents;->getTotalEvents(JI)I+]Lcom/android/server/am/BaseAppStateEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;
HSPLcom/android/server/am/BaseAppStateEventsTracker$BaseAppStateEventsPolicy;->getMaxTrackingDuration()J
HSPLcom/android/server/am/BaseAppStateEventsTracker;->isUidOnTop(I)Z
HSPLcom/android/server/am/BaseAppStatePolicy;->isEnabled()Z
@@ -527,33 +538,55 @@ HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlot
HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$H;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;Lcom/android/server/am/AppBindServiceEventsTracker;,Lcom/android/server/am/AppBroadcastEventsTracker;
HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->handleNewEvent(Ljava/lang/String;I)V+]Lcom/android/server/am/BaseAppStateEvents$Factory;Lcom/android/server/am/AppBindServiceEventsTracker;,Lcom/android/server/am/AppBroadcastEventsTracker;]Lcom/android/server/am/BaseAppStateEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Lcom/android/server/am/BaseAppStateTimeSlotEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;Lcom/android/server/am/AppBindServiceEventsTracker$AppBindServiceEventsPolicy;,Lcom/android/server/am/AppBroadcastEventsTracker$AppBroadcastEventsPolicy;]Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTracker$Injector;]Lcom/android/server/am/UidProcessMap;Lcom/android/server/am/UidProcessMap;
HSPLcom/android/server/am/BaseAppStateTracker$Injector;->getPolicy()Lcom/android/server/am/BaseAppStatePolicy;
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda104;-><init>(Lcom/android/server/am/BatteryStatsService;IIIIIIIIJJJJ)V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda104;->run()V
HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/am/BatteryStatsService;IIIIIIIIJJJJ)V
HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda11;->run()V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda19;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda16;->run()V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda17;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda17;->run()V
HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/BatteryStatsService;IILjava/lang/String;Ljava/lang/String;IZJJ)V
HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda1;->run()V
-HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda20;->run()V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda32;->run()V
-HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda37;->run()V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda25;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;Landroid/os/WorkSource;IJJ)V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda25;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda29;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda29;->run()V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda31;->run()V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda34;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IJJ)V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda34;->run()V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda58;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;Landroid/os/WorkSource;IJJ)V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda58;->run()V
HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda5;->run()V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda61;->run()V
-HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda67;->run()V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda64;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IIJJ)V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda64;->run()V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda73;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;IJJ)V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda73;->run()V
HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda76;->run()V
-HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda79;->run()V
-HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda97;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
-HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda97;->run()V
-HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda99;->run()V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda96;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda96;->run()V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda98;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda98;->run()V
HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/am/BatteryStatsService;IILjava/lang/String;Ljava/lang/String;IJJ)V
HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda9;->run()V
HPLcom/android/server/am/BatteryStatsService$StatsPerUidLogger;->addStatsForPowerComponent(Ljava/util/List;Lcom/android/server/am/BatteryStatsService$StatsPerUidLogger$SessionInfo;IIFJLandroid/os/BatteryConsumer;I)Z+]Landroid/os/BatteryConsumer;Landroid/os/AggregateBatteryConsumer;,Landroid/os/UidBatteryConsumer;
+HPLcom/android/server/am/BatteryStatsService$StatsPerUidLogger;->clampPowerMah(DLjava/lang/String;)F
HPLcom/android/server/am/BatteryStatsService$StatsPerUidLogger;->logStats(Landroid/os/BatteryUsageStats;Ljava/util/List;)I+]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->run()V
HSPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->waitWakeup()Ljava/lang/String;+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;
+HPLcom/android/server/am/BatteryStatsService;->awaitCompletion()V
HSPLcom/android/server/am/BatteryStatsService;->fillLowPowerStats(Lcom/android/internal/os/RpmStats;)V+]Landroid/power/PowerStatsInternal;Lcom/android/server/powerstats/PowerStatsService$LocalService;]Lcom/android/internal/os/RpmStats$PowerStateSubsystem;Lcom/android/internal/os/RpmStats$PowerStateSubsystem;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;
+HSPLcom/android/server/am/BatteryStatsService;->getSubsystemLowPowerStats()Ljava/lang/String;+]Landroid/power/PowerStatsInternal;Lcom/android/server/powerstats/PowerStatsService$LocalService;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;
+HSPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStartLaunch$107(ILjava/lang/String;Ljava/lang/String;JJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
+HSPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStartRunning$105(ILjava/lang/String;Ljava/lang/String;JJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
+HSPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStopLaunch$108(ILjava/lang/String;Ljava/lang/String;JJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
+HSPLcom/android/server/am/BatteryStatsService;->lambda$noteStartWakelock$24(IILjava/lang/String;Ljava/lang/String;IZJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
+HSPLcom/android/server/am/BatteryStatsService;->lambda$noteStopWakelock$25(IILjava/lang/String;Ljava/lang/String;IJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
+HSPLcom/android/server/am/BatteryStatsService;->lambda$noteUidProcessState$14(IIJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/wakeups/CpuWakeupStats;Lcom/android/server/power/stats/wakeups/CpuWakeupStats;
HPLcom/android/server/am/BatteryStatsService;->monitor()V
-HPLcom/android/server/am/BatteryStatsService;->noteAlarmFinish(Ljava/lang/String;Landroid/os/WorkSource;I)V+]Landroid/content/Context;Landroid/app/ContextImpl;
-HPLcom/android/server/am/BatteryStatsService;->noteAlarmStart(Ljava/lang/String;Landroid/os/WorkSource;I)V+]Landroid/content/Context;Landroid/app/ContextImpl;
+HSPLcom/android/server/am/BatteryStatsService;->noteAlarmFinish(Ljava/lang/String;Landroid/os/WorkSource;I)V+]Landroid/content/Context;Landroid/app/ContextImpl;
+HSPLcom/android/server/am/BatteryStatsService;->noteAlarmStart(Ljava/lang/String;Landroid/os/WorkSource;I)V+]Landroid/content/Context;Landroid/app/ContextImpl;
HPLcom/android/server/am/BatteryStatsService;->noteChangeWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V
HSPLcom/android/server/am/BatteryStatsService;->noteEvent(ILjava/lang/String;I)V
HSPLcom/android/server/am/BatteryStatsService;->noteJobFinish(Ljava/lang/String;II)V
@@ -562,12 +595,14 @@ HSPLcom/android/server/am/BatteryStatsService;->noteServiceStartLaunch(ILjava/la
HSPLcom/android/server/am/BatteryStatsService;->noteServiceStartRunning(ILjava/lang/String;Ljava/lang/String;)V
HSPLcom/android/server/am/BatteryStatsService;->noteServiceStopLaunch(ILjava/lang/String;Ljava/lang/String;)V
HPLcom/android/server/am/BatteryStatsService;->noteServiceStopRunning(ILjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/am/BatteryStatsService;->noteStartSensor(II)V
HSPLcom/android/server/am/BatteryStatsService;->noteStartWakelock(IILjava/lang/String;Ljava/lang/String;IZ)V
HSPLcom/android/server/am/BatteryStatsService;->noteStartWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V
+HSPLcom/android/server/am/BatteryStatsService;->noteStopSensor(II)V
HSPLcom/android/server/am/BatteryStatsService;->noteStopWakelock(IILjava/lang/String;Ljava/lang/String;I)V
HSPLcom/android/server/am/BatteryStatsService;->noteStopWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;I)V
HSPLcom/android/server/am/BatteryStatsService;->noteUidProcessState(II)V
-HPLcom/android/server/am/BatteryStatsService;->noteWakupAlarm(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;)V+]Landroid/content/Context;Landroid/app/ContextImpl;
+HSPLcom/android/server/am/BatteryStatsService;->noteWakupAlarm(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;)V+]Landroid/content/Context;Landroid/app/ContextImpl;
HSPLcom/android/server/am/BatteryStatsService;->setBatteryState(IIIIIIIIJ)V
HSPLcom/android/server/am/BroadcastController$1;->allowFilterResult(Lcom/android/server/am/BroadcastFilter;Ljava/util/List;)Z+]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/am/BroadcastController$1;->allowFilterResult(Ljava/lang/Object;Ljava/util/List;)Z+]Lcom/android/server/am/BroadcastController$1;Lcom/android/server/am/BroadcastController$1;
@@ -577,21 +612,22 @@ HSPLcom/android/server/am/BroadcastController$1;->isPackageForFilter(Ljava/lang/
HSPLcom/android/server/am/BroadcastController$1;->isPackageForFilter(Ljava/lang/String;Ljava/lang/Object;)Z+]Lcom/android/server/am/BroadcastController$1;Lcom/android/server/am/BroadcastController$1;
HSPLcom/android/server/am/BroadcastController$1;->newResult(Lcom/android/server/pm/Computer;Lcom/android/server/am/BroadcastFilter;IIJ)Lcom/android/server/am/BroadcastFilter;
HSPLcom/android/server/am/BroadcastController$1;->newResult(Lcom/android/server/pm/Computer;Ljava/lang/Object;IIJ)Ljava/lang/Object;+]Lcom/android/server/am/BroadcastController$1;Lcom/android/server/am/BroadcastController$1;
-HSPLcom/android/server/am/BroadcastController$StickyBroadcast;->create(Landroid/content/Intent;ZIILjava/lang/String;)Lcom/android/server/am/BroadcastController$StickyBroadcast;
+HSPLcom/android/server/am/BroadcastController;->addBroadcastStatLocked(Ljava/lang/String;Ljava/lang/String;IIJ)V
HSPLcom/android/server/am/BroadcastController;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZIIIIILandroid/app/BackgroundStartPrivileges;[ILjava/util/function/BiFunction;)I
-HSPLcom/android/server/am/BroadcastController;->broadcastIntentLockedTraced(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;ZZIIIIILandroid/app/BackgroundStartPrivileges;[ILjava/util/function/BiFunction;Lcom/android/server/am/BroadcastSentEventRecord;)I+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/IIntentReceiver;megamorphic_types]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/net/Uri;Landroid/net/Uri$OpaqueUri;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/IntentResolver;Lcom/android/server/am/BroadcastController$1;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastController;->broadcastIntentLockedTraced(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;ZZIIIIILandroid/app/BackgroundStartPrivileges;[ILjava/util/function/BiFunction;Lcom/android/server/am/BroadcastSentEventRecord;)I+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/IIntentReceiver;megamorphic_types]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/net/Uri;Landroid/net/Uri$OpaqueUri;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/IntentResolver;Lcom/android/server/am/BroadcastController$1;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueImpl;,Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/am/BroadcastController;->broadcastIntentWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastController;Lcom/android/server/am/BroadcastController;
HSPLcom/android/server/am/BroadcastController;->checkBroadcastFromSystem(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IZLjava/util/List;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/am/BroadcastController;->collectReceiverComponents(Landroid/content/Intent;Ljava/lang/String;II[I[I)Ljava/util/List;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ComponentAliasResolver$Resolution;Lcom/android/server/am/ComponentAliasResolver$Resolution;]Lcom/android/server/am/ComponentAliasResolver;Lcom/android/server/am/ComponentAliasResolver;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+HSPLcom/android/server/am/BroadcastController;->enforceBroadcastOptionPermissionsInternal(Landroid/app/BroadcastOptions;I)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
HSPLcom/android/server/am/BroadcastController;->enforceBroadcastOptionPermissionsInternal(Landroid/os/Bundle;I)V
-HSPLcom/android/server/am/BroadcastController;->finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZI)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;
+HSPLcom/android/server/am/BroadcastController;->finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZI)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueImpl;,Lcom/android/server/am/BroadcastQueueModernImpl;
HSPLcom/android/server/am/BroadcastController;->getBackgroundLaunchBroadcasts()Landroid/util/ArraySet;
HSPLcom/android/server/am/BroadcastController;->getRealProcessStateLocked(Lcom/android/server/am/ProcessRecord;I)I+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/BroadcastController;->getRealUidStateLocked(Lcom/android/server/am/ProcessRecord;I)I+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/BroadcastController;->isInstantApp(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;I)Z+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
HSPLcom/android/server/am/BroadcastController;->notifyBroadcastFinishedLocked(Lcom/android/server/am/BroadcastRecord;)V
HSPLcom/android/server/am/BroadcastController;->registerReceiverWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent;
-HSPLcom/android/server/am/BroadcastController;->registerReceiverWithFeatureTraced(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent;+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/IntentResolver;Lcom/android/server/am/BroadcastController$1;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
+HSPLcom/android/server/am/BroadcastController;->registerReceiverWithFeatureTraced(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent;+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/IntentResolver;Lcom/android/server/am/BroadcastController$1;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueImpl;,Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/sdksandbox/SdkSandboxManagerLocal;Lcom/android/server/sdksandbox/SdkSandboxManagerService$LocalImpl;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
HPLcom/android/server/am/BroadcastController;->removeReceiverLocked(Lcom/android/server/am/ReceiverList;)V+]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;]Lcom/android/server/IntentResolver;Lcom/android/server/am/BroadcastController$1;]Ljava/util/HashMap;Ljava/util/HashMap;
HSPLcom/android/server/am/BroadcastController;->rotateBroadcastStatsIfNeededLocked()V
HSPLcom/android/server/am/BroadcastController;->traceBroadcastIntentBegin(Landroid/content/Intent;Landroid/content/IIntentReceiver;ZZIII)I+]Landroid/content/Intent;Landroid/content/Intent;
@@ -600,7 +636,9 @@ HSPLcom/android/server/am/BroadcastController;->traceRegistrationBegin(Ljava/lan
HPLcom/android/server/am/BroadcastController;->traceUnregistrationBegin(Landroid/content/IIntentReceiver;)V+]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;
HPLcom/android/server/am/BroadcastController;->unregisterReceiverTraced(Landroid/content/IIntentReceiver;)V+]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;]Lcom/android/server/am/BroadcastController;Lcom/android/server/am/BroadcastController;]Ljava/util/HashMap;Ljava/util/HashMap;
HSPLcom/android/server/am/BroadcastController;->verifyBroadcastLocked(Landroid/content/Intent;)Landroid/content/Intent;+]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/am/BroadcastFilter;-><init>(Landroid/content/IntentFilter;Lcom/android/server/am/ReceiverList;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIZZZ)V
+HSPLcom/android/server/am/BroadcastFilter;-><init>(Landroid/content/IntentFilter;Lcom/android/server/am/ReceiverList;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIZZZLandroid/content/pm/ApplicationInfo;Lcom/android/server/compat/PlatformCompat;)V
+HSPLcom/android/server/am/BroadcastFilter;->calculateAdjustedPriority(IILandroid/content/pm/ApplicationInfo;Lcom/android/server/compat/PlatformCompat;)I+]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;
+HSPLcom/android/server/am/BroadcastFilter;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;
HSPLcom/android/server/am/BroadcastHistory;->addBroadcastToHistoryLocked(Lcom/android/server/am/BroadcastRecord;)V
HSPLcom/android/server/am/BroadcastHistory;->onBroadcastEnqueuedLocked(Lcom/android/server/am/BroadcastRecord;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/BroadcastHistory;->onBroadcastFinishedLocked(Lcom/android/server/am/BroadcastRecord;)V+]Lcom/android/server/am/BroadcastHistory;Lcom/android/server/am/BroadcastHistory;]Ljava/util/ArrayList;Ljava/util/ArrayList;
@@ -608,24 +646,25 @@ HSPLcom/android/server/am/BroadcastLoopers;->addMyLooper()V
HSPLcom/android/server/am/BroadcastProcessQueue;-><init>(Lcom/android/server/am/BroadcastConstants;Ljava/lang/String;I)V
HSPLcom/android/server/am/BroadcastProcessQueue;->assertHealthLocked()V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
HSPLcom/android/server/am/BroadcastProcessQueue;->assertHealthLocked(Ljava/util/ArrayDeque;)V+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/Iterator;Ljava/util/ArrayDeque$DescendingIterator;
-HSPLcom/android/server/am/BroadcastProcessQueue;->enqueueOrReplaceBroadcast(Lcom/android/server/am/BroadcastRecord;ILcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;)Lcom/android/server/am/BroadcastRecord;+]Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda15;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
+HSPLcom/android/server/am/BroadcastProcessQueue;->enqueueOrReplaceBroadcast(Lcom/android/server/am/BroadcastRecord;ILcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;)Lcom/android/server/am/BroadcastRecord;+]Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Lcom/android/server/am/BroadcastQueueImpl$$ExternalSyntheticLambda20;,Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda15;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
HSPLcom/android/server/am/BroadcastProcessQueue;->forEachMatchingBroadcast(Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Z)Z
-HSPLcom/android/server/am/BroadcastProcessQueue;->forEachMatchingBroadcastInQueue(Ljava/util/ArrayDeque;Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Z)Z+]Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda13;,Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda14;,Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda15;,Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda16;]Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;megamorphic_types]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/Iterator;Ljava/util/ArrayDeque$DeqIterator;
+HSPLcom/android/server/am/BroadcastProcessQueue;->forEachMatchingBroadcastInQueue(Ljava/util/ArrayDeque;Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Z)Z+]Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;megamorphic_types]Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;megamorphic_types]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/Iterator;Ljava/util/ArrayDeque$DeqIterator;
HSPLcom/android/server/am/BroadcastProcessQueue;->getActive()Lcom/android/server/am/BroadcastRecord;
HSPLcom/android/server/am/BroadcastProcessQueue;->getActiveCountSinceIdle()I
HSPLcom/android/server/am/BroadcastProcessQueue;->getActiveFirstLaunch()Z
HSPLcom/android/server/am/BroadcastProcessQueue;->getActiveIndex()I
HSPLcom/android/server/am/BroadcastProcessQueue;->getActiveViaColdStart()Z
HSPLcom/android/server/am/BroadcastProcessQueue;->getActiveWasStopped()Z
-HSPLcom/android/server/am/BroadcastProcessQueue;->getPreferredSchedulingGroupLocked()I
+HSPLcom/android/server/am/BroadcastProcessQueue;->getPreferredSchedulingGroupLocked()I+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
HSPLcom/android/server/am/BroadcastProcessQueue;->getQueueForBroadcast(Lcom/android/server/am/BroadcastRecord;)Ljava/util/ArrayDeque;
HSPLcom/android/server/am/BroadcastProcessQueue;->getRunnableAt()J+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
HSPLcom/android/server/am/BroadcastProcessQueue;->insertIntoRunnableList(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;)Lcom/android/server/am/BroadcastProcessQueue;+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
HSPLcom/android/server/am/BroadcastProcessQueue;->invalidateRunnableAt()V
HSPLcom/android/server/am/BroadcastProcessQueue;->isActive()Z
HSPLcom/android/server/am/BroadcastProcessQueue;->isEmpty()Z+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
-HSPLcom/android/server/am/BroadcastProcessQueue;->isPendingManifest()Z
+HSPLcom/android/server/am/BroadcastProcessQueue;->isOutgoingEmpty()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/BroadcastProcessQueue;->isProcessWarm()Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/BroadcastProcessQueue;->isQueueEmpty(Ljava/util/ArrayDeque;)Z+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
HSPLcom/android/server/am/BroadcastProcessQueue;->isRunnable()Z+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
HSPLcom/android/server/am/BroadcastProcessQueue;->makeActiveIdle()V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
HSPLcom/android/server/am/BroadcastProcessQueue;->makeActiveNextPending()V
@@ -651,72 +690,77 @@ HSPLcom/android/server/am/BroadcastProcessQueue;->updateDeferredStates(Lcom/andr
HSPLcom/android/server/am/BroadcastProcessQueue;->updateRunnableAt()V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
HSPLcom/android/server/am/BroadcastQueue;->traceBegin(Ljava/lang/String;)I
HSPLcom/android/server/am/BroadcastQueue;->traceEnd(I)V
-HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda12;->handleMessage(Landroid/os/Message;)Z
-HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda19;->test(Lcom/android/server/am/BroadcastRecord;I)Z
-HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda6;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->applyDeliveryGroupPolicy(Lcom/android/server/am/BroadcastRecord;)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->assertHealthLocked()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->cancelDeliveryTimeoutLocked(Lcom/android/server/am/BroadcastProcessQueue;)V+]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->checkAndRemoveWaitingFor()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->checkPendingColdStartValidityLocked()V
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->demoteFromRunningLocked(Lcom/android/server/am/BroadcastProcessQueue;)V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->dispatchReceivers(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastRecord;I)Z+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;,Lcom/android/server/am/SameProcessApplicationThread;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->enqueueBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V+]Lcom/android/server/am/BroadcastHistory;Lcom/android/server/am/BroadcastHistory;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/BroadcastSkipPolicy;Lcom/android/server/am/BroadcastSkipPolicy;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/ImmutableCollections$ListN;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->enqueueUpdateRunningList()V
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->finishReceiverActiveLocked(Lcom/android/server/am/BroadcastProcessQueue;ILjava/lang/String;)V+]Lcom/android/internal/os/TimeoutRecord;Lcom/android/internal/os/TimeoutRecord;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->finishReceiverLocked(Lcom/android/server/am/ProcessRecord;ILjava/lang/String;Landroid/os/Bundle;ZZ)Z+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->forEachMatchingBroadcast(Ljava/util/function/Predicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Z)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/util/function/Predicate;Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda2;,Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda5;,Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda6;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->getOrCreateProcessQueue(Ljava/lang/String;I)Lcom/android/server/am/BroadcastProcessQueue;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->getPreferredSchedulingGroupLocked(Lcom/android/server/am/ProcessRecord;)I+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->getProcessQueue(Lcom/android/server/am/ProcessRecord;)Lcom/android/server/am/BroadcastProcessQueue;+]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->getProcessQueue(Ljava/lang/String;I)Lcom/android/server/am/BroadcastProcessQueue;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->getRecordsLookupCache()Landroid/util/ArrayMap;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->getRunningIndexOf(Lcom/android/server/am/BroadcastProcessQueue;)I
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->getRunningSize()I
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->getRunningUrgentCount()I+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
-HPLcom/android/server/am/BroadcastQueueModernImpl;->handleProcessFreezableChanged(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->isPendingColdStartValid()Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->isProcessFreezable(Lcom/android/server/am/ProcessRecord;)Z
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->lambda$applyDeliveryGroupPolicy$3(Lcom/android/server/am/BroadcastRecord;Landroid/util/ArrayMap;Lcom/android/server/am/BroadcastRecord;I)Z+]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->lambda$new$0(Landroid/os/Message;)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->logBootCompletedBroadcastCompletionLatencyIfPossible(Lcom/android/server/am/BroadcastRecord;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/ImmutableCollections$ListN;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->logBroadcastDeliveryEventReported(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;ILjava/lang/Object;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->notifyFinishBroadcast(Lcom/android/server/am/BroadcastRecord;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/BroadcastHistory;Lcom/android/server/am/BroadcastHistory;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/ImmutableCollections$ListN;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->notifyFinishReceiver(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;ILjava/lang/Object;)V+]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->notifyScheduleReceiver(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;Landroid/content/pm/ResolveInfo;)V+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->notifyScheduleRegisteredReceiver(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastFilter;)V
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->notifyStartedRunning(Lcom/android/server/am/BroadcastProcessQueue;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->notifyStoppedRunning(Lcom/android/server/am/BroadcastProcessQueue;)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HPLcom/android/server/am/BroadcastQueueModernImpl;->onProcessFreezableChangedLocked(Lcom/android/server/am/ProcessRecord;)V
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->promoteToRunningLocked(Lcom/android/server/am/BroadcastProcessQueue;)V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->reportUsageStatsBroadcastDispatched(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->scheduleReceiverColdLocked(Lcom/android/server/am/BroadcastProcessQueue;)Z+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->scheduleReceiverWarmLocked(Lcom/android/server/am/BroadcastProcessQueue;)Z+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->scheduleResultTo(Lcom/android/server/am/BroadcastRecord;)V+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;,Lcom/android/server/am/SameProcessApplicationThread;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->setDeliveryState(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;ILjava/lang/Object;ILjava/lang/String;)V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->setQueueProcess(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->shouldRetire(Lcom/android/server/am/BroadcastProcessQueue;)Z+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->shouldSkipReceiver(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastRecord;I)Ljava/lang/String;+]Lcom/android/server/am/BroadcastSkipPolicy;Lcom/android/server/am/BroadcastSkipPolicy;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->skipAndCancelReplacedBroadcasts(Landroid/util/ArraySet;)V+]Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda14;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->startDeliveryTimeoutLocked(Lcom/android/server/am/BroadcastProcessQueue;I)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->updateRunnableList(Lcom/android/server/am/BroadcastProcessQueue;)V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->updateRunningList()V
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->updateRunningListLocked()V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/BroadcastQueueModernImpl;->updateWarmProcess(Lcom/android/server/am/BroadcastProcessQueue;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastQueueModernImpl;
-HSPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;Ljava/util/List;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZIILandroid/app/BackgroundStartPrivileges;ZLjava/util/function/BiFunction;I)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;Ljava/util/List;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZILandroid/app/BackgroundStartPrivileges;ZLjava/util/function/BiFunction;I)V
+HSPLcom/android/server/am/BroadcastQueueImpl$$ExternalSyntheticLambda15;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/am/BroadcastQueueImpl$$ExternalSyntheticLambda17;->handleMessage(Landroid/os/Message;)Z
+HSPLcom/android/server/am/BroadcastQueueImpl$$ExternalSyntheticLambda1;->test(Lcom/android/server/am/BroadcastRecord;I)Z
+HSPLcom/android/server/am/BroadcastQueueImpl$BroadcastAnrTimer;->getPid(Lcom/android/server/am/BroadcastProcessQueue;)I+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/BroadcastQueueImpl$BroadcastAnrTimer;->getPid(Ljava/lang/Object;)I+]Lcom/android/server/am/BroadcastQueueImpl$BroadcastAnrTimer;Lcom/android/server/am/BroadcastQueueImpl$BroadcastAnrTimer;
+HSPLcom/android/server/am/BroadcastQueueImpl$BroadcastAnrTimer;->getUid(Lcom/android/server/am/BroadcastProcessQueue;)I
+HSPLcom/android/server/am/BroadcastQueueImpl$BroadcastAnrTimer;->getUid(Ljava/lang/Object;)I+]Lcom/android/server/am/BroadcastQueueImpl$BroadcastAnrTimer;Lcom/android/server/am/BroadcastQueueImpl$BroadcastAnrTimer;
+HSPLcom/android/server/am/BroadcastQueueImpl;->$r8$lambda$mXDgb9ORy-OA2qOk3ggoYiIxf9I(Lcom/android/server/am/BroadcastQueueImpl;Lcom/android/server/am/BroadcastRecord;Landroid/util/ArrayMap;Lcom/android/server/am/BroadcastRecord;I)Z
+HSPLcom/android/server/am/BroadcastQueueImpl;->applyDeliveryGroupPolicy(Lcom/android/server/am/BroadcastRecord;)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueImpl;->assertHealthLocked()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
+HSPLcom/android/server/am/BroadcastQueueImpl;->cancelDeliveryTimeoutLocked(Lcom/android/server/am/BroadcastProcessQueue;)V+]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/BroadcastQueueImpl$BroadcastAnrTimer;
+HSPLcom/android/server/am/BroadcastQueueImpl;->checkAndRemoveWaitingFor()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueImpl;->checkPendingColdStartValidityLocked()V
+HSPLcom/android/server/am/BroadcastQueueImpl;->demoteFromRunningLocked(Lcom/android/server/am/BroadcastProcessQueue;)V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
+HSPLcom/android/server/am/BroadcastQueueImpl;->dispatchReceivers(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastRecord;I)Z+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;,Lcom/android/server/am/SameProcessApplicationThread;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueImpl;->enqueueBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V+]Lcom/android/server/am/BroadcastHistory;Lcom/android/server/am/BroadcastHistory;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueImpl;Lcom/android/server/am/BroadcastQueueImpl;]Lcom/android/server/am/BroadcastSkipPolicy;Lcom/android/server/am/BroadcastSkipPolicy;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+HSPLcom/android/server/am/BroadcastQueueImpl;->enqueueUpdateRunningList()V
+HSPLcom/android/server/am/BroadcastQueueImpl;->finishReceiverActiveLocked(Lcom/android/server/am/BroadcastProcessQueue;ILjava/lang/String;)V+]Lcom/android/internal/os/TimeoutRecord;Lcom/android/internal/os/TimeoutRecord;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/BroadcastQueueImpl$BroadcastAnrTimer;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueImpl;->finishReceiverLocked(Lcom/android/server/am/ProcessRecord;ILjava/lang/String;Landroid/os/Bundle;ZZ)Z+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueImpl;Lcom/android/server/am/BroadcastQueueImpl;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueImpl;->forEachMatchingBroadcast(Ljava/util/function/Predicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Z)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/util/function/Predicate;Lcom/android/server/am/BroadcastQueueImpl$$ExternalSyntheticLambda15;,Lcom/android/server/am/BroadcastQueueImpl$$ExternalSyntheticLambda3;,Lcom/android/server/am/BroadcastQueueImpl$$ExternalSyntheticLambda6;
+HSPLcom/android/server/am/BroadcastQueueImpl;->getOrCreateProcessQueue(Ljava/lang/String;I)Lcom/android/server/am/BroadcastProcessQueue;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/am/BroadcastQueueImpl;->getPreferredSchedulingGroupLocked(Lcom/android/server/am/ProcessRecord;)I+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueImpl;Lcom/android/server/am/BroadcastQueueImpl;
+HSPLcom/android/server/am/BroadcastQueueImpl;->getProcessQueue(Lcom/android/server/am/ProcessRecord;)Lcom/android/server/am/BroadcastProcessQueue;+]Lcom/android/server/am/BroadcastQueueImpl;Lcom/android/server/am/BroadcastQueueImpl;
+HSPLcom/android/server/am/BroadcastQueueImpl;->getProcessQueue(Ljava/lang/String;I)Lcom/android/server/am/BroadcastProcessQueue;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/am/BroadcastQueueImpl;->getRecordsLookupCache()Landroid/util/ArrayMap;
+HSPLcom/android/server/am/BroadcastQueueImpl;->getRunningIndexOf(Lcom/android/server/am/BroadcastProcessQueue;)I
+HSPLcom/android/server/am/BroadcastQueueImpl;->getRunningSize()I
+HPLcom/android/server/am/BroadcastQueueImpl;->handleProcessFreezableChanged(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueImpl;Lcom/android/server/am/BroadcastQueueImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/BroadcastQueueImpl;->isPendingColdStartValid()Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/BroadcastQueueImpl;->isProcessFreezable(Lcom/android/server/am/ProcessRecord;)Z
+HSPLcom/android/server/am/BroadcastQueueImpl;->lambda$applyDeliveryGroupPolicy$3(Lcom/android/server/am/BroadcastRecord;Landroid/util/ArrayMap;Lcom/android/server/am/BroadcastRecord;I)Z+]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueImpl;->lambda$new$0(Landroid/os/Message;)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/BroadcastQueueImpl;->logBootCompletedBroadcastCompletionLatencyIfPossible(Lcom/android/server/am/BroadcastRecord;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+HSPLcom/android/server/am/BroadcastQueueImpl;->logBroadcastDeliveryEventReported(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;ILjava/lang/Object;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
+HSPLcom/android/server/am/BroadcastQueueImpl;->notifyFinishBroadcast(Lcom/android/server/am/BroadcastRecord;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/BroadcastHistory;Lcom/android/server/am/BroadcastHistory;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+HSPLcom/android/server/am/BroadcastQueueImpl;->notifyFinishReceiver(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;ILjava/lang/Object;)V+]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueImpl;->notifyScheduleReceiver(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;Landroid/content/pm/ResolveInfo;)V+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/BroadcastQueueImpl;->notifyStartedRunning(Lcom/android/server/am/BroadcastProcessQueue;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
+HSPLcom/android/server/am/BroadcastQueueImpl;->notifyStoppedRunning(Lcom/android/server/am/BroadcastProcessQueue;)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
+HPLcom/android/server/am/BroadcastQueueImpl;->onProcessFreezableChangedLocked(Lcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/BroadcastQueueImpl;->promoteToRunningLocked(Lcom/android/server/am/BroadcastProcessQueue;)V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
+HSPLcom/android/server/am/BroadcastQueueImpl;->reportUsageStatsBroadcastDispatched(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
+HSPLcom/android/server/am/BroadcastQueueImpl;->scheduleReceiverColdLocked(Lcom/android/server/am/BroadcastProcessQueue;)Z+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueImpl;->scheduleReceiverWarmLocked(Lcom/android/server/am/BroadcastProcessQueue;)Z+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
+HSPLcom/android/server/am/BroadcastQueueImpl;->scheduleResultTo(Lcom/android/server/am/BroadcastRecord;)V+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;,Lcom/android/server/am/SameProcessApplicationThread;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/BroadcastQueueImpl;->setDeliveryState(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;ILjava/lang/Object;ILjava/lang/String;)V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueImpl;Lcom/android/server/am/BroadcastQueueImpl;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueImpl;->setQueueProcess(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueImpl;Lcom/android/server/am/BroadcastQueueImpl;
+HSPLcom/android/server/am/BroadcastQueueImpl;->shouldRetire(Lcom/android/server/am/BroadcastProcessQueue;)Z+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;
+HSPLcom/android/server/am/BroadcastQueueImpl;->shouldSkipReceiver(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastRecord;I)Ljava/lang/String;+]Lcom/android/server/am/BroadcastSkipPolicy;Lcom/android/server/am/BroadcastSkipPolicy;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueImpl;->skipAndCancelReplacedBroadcasts(Landroid/util/ArraySet;)V+]Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Lcom/android/server/am/BroadcastQueueImpl$$ExternalSyntheticLambda19;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueImpl;->startDeliveryTimeoutLocked(Lcom/android/server/am/BroadcastProcessQueue;I)V+]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/BroadcastQueueImpl$BroadcastAnrTimer;
+HSPLcom/android/server/am/BroadcastQueueImpl;->updateRunnableList(Lcom/android/server/am/BroadcastProcessQueue;)V+]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueImpl;Lcom/android/server/am/BroadcastQueueImpl;
+HSPLcom/android/server/am/BroadcastQueueImpl;->updateRunningList()V
+HSPLcom/android/server/am/BroadcastQueueImpl;->updateRunningListLocked()V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueImpl;->updateWarmProcess(Lcom/android/server/am/BroadcastProcessQueue;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;]Lcom/android/server/am/BroadcastQueueImpl;Lcom/android/server/am/BroadcastQueueImpl;
+HSPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;Ljava/util/List;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZIILandroid/app/BackgroundStartPrivileges;ZLjava/util/function/BiFunction;ILcom/android/server/compat/PlatformCompat;)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;Ljava/util/List;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZILandroid/app/BackgroundStartPrivileges;ZLjava/util/function/BiFunction;ILcom/android/server/compat/PlatformCompat;)V
HSPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastRecord;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/am/BroadcastRecord;->applySingletonPolicy(Lcom/android/server/am/ActivityManagerService;)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/ImmutableCollections$ListN;
-HSPLcom/android/server/am/BroadcastRecord;->calculateBlockedUntilBeyondCount(Ljava/util/List;Z)[I+]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/ImmutableCollections$ListN;
+HSPLcom/android/server/am/BroadcastRecord;->applySingletonPolicy(Lcom/android/server/am/ActivityManagerService;)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;,Ljava/util/ImmutableCollections$ListN;
+HSPLcom/android/server/am/BroadcastRecord;->calculateBlockedUntilBeyondCount(Ljava/util/List;ZLcom/android/server/compat/PlatformCompat;)[I+]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;,Ljava/util/ImmutableCollections$ListN;
+HSPLcom/android/server/am/BroadcastRecord;->calculateChangeStateForReceivers(Ljava/util/List;JLcom/android/server/compat/PlatformCompat;)[Z+]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/am/BroadcastRecord;->calculateDeferUntilActive(ILandroid/app/BroadcastOptions;Landroid/content/IIntentReceiver;ZZ)Z+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;
HSPLcom/android/server/am/BroadcastRecord;->calculateTypeForLogging()I
HSPLcom/android/server/am/BroadcastRecord;->calculateTypesForLogging()[I
HSPLcom/android/server/am/BroadcastRecord;->calculateUrgent(Landroid/content/Intent;Landroid/app/BroadcastOptions;)Z+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;
+HSPLcom/android/server/am/BroadcastRecord;->debugLog()Z
HSPLcom/android/server/am/BroadcastRecord;->getDeliveryGroupMatchingKeyFragment(Lcom/android/server/am/BroadcastRecord;)Ljava/lang/String;+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;
HSPLcom/android/server/am/BroadcastRecord;->getDeliveryGroupMatchingNamespaceFragment(Lcom/android/server/am/BroadcastRecord;)Ljava/lang/String;+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;
-HSPLcom/android/server/am/BroadcastRecord;->getDeliveryGroupPolicy()I+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;
HSPLcom/android/server/am/BroadcastRecord;->getDeliveryState(I)I
-HSPLcom/android/server/am/BroadcastRecord;->getReceiverIntent(Ljava/lang/Object;)Landroid/content/Intent;+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Ljava/util/function/BiFunction;Lcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda4;,Lcom/android/server/pm/BroadcastHelper$$ExternalSyntheticLambda8;
+HSPLcom/android/server/am/BroadcastRecord;->getReceiverAppInfo(Ljava/lang/Object;)Landroid/content/pm/ApplicationInfo;
+HSPLcom/android/server/am/BroadcastRecord;->getReceiverIntent(Ljava/lang/Object;)Landroid/content/Intent;+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Ljava/util/function/BiFunction;Lcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda4;,Lcom/android/server/pm/BroadcastHelper$$ExternalSyntheticLambda6;
HSPLcom/android/server/am/BroadcastRecord;->getReceiverPriority(Ljava/lang/Object;)I
HSPLcom/android/server/am/BroadcastRecord;->getReceiverProcessName(Ljava/lang/Object;)Ljava/lang/String;
HSPLcom/android/server/am/BroadcastRecord;->getReceiverUid(Ljava/lang/Object;)I
@@ -726,7 +770,6 @@ HSPLcom/android/server/am/BroadcastRecord;->isDeliveryStateTerminal(I)Z
HSPLcom/android/server/am/BroadcastRecord;->isForeground()Z+]Landroid/content/Intent;Landroid/content/Intent;
HSPLcom/android/server/am/BroadcastRecord;->isMatchingKeyNull(Lcom/android/server/am/BroadcastRecord;)Z
HSPLcom/android/server/am/BroadcastRecord;->isOffload()Z+]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/am/BroadcastRecord;->isReceiverEquals(Ljava/lang/Object;Ljava/lang/Object;)Z
HSPLcom/android/server/am/BroadcastRecord;->isReplacePending()Z+]Landroid/content/Intent;Landroid/content/Intent;
HSPLcom/android/server/am/BroadcastRecord;->isUrgent()Z
HSPLcom/android/server/am/BroadcastRecord;->matchesDeliveryGroup(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;)Z+]Landroid/content/Intent;Landroid/content/Intent;
@@ -734,36 +777,39 @@ HSPLcom/android/server/am/BroadcastRecord;->maybeStripForHistory()Lcom/android/s
HSPLcom/android/server/am/BroadcastRecord;->setDeliveryState(IILjava/lang/String;)Z
HSPLcom/android/server/am/BroadcastRecord;->toShortString()Ljava/lang/String;+]Landroid/content/Intent;Landroid/content/Intent;
HSPLcom/android/server/am/BroadcastRecord;->toString()Ljava/lang/String;+]Landroid/content/Intent;Landroid/content/Intent;
+HSPLcom/android/server/am/BroadcastRecord;->wasDeliveryAttempted(I)Z
HSPLcom/android/server/am/BroadcastSentEventRecord;->calculateTypesForLogging()[I
-HSPLcom/android/server/am/BroadcastSentEventRecord;->logToStatsd()V+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/ImmutableCollections$ListN;
+HSPLcom/android/server/am/BroadcastSentEventRecord;->logToStatsd()V+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;,Ljava/util/ImmutableCollections$ListN;
HSPLcom/android/server/am/BroadcastSkipPolicy;->createAttributionSourcesForResolveInfo(Landroid/content/pm/ResolveInfo;)[Landroid/content/AttributionSource;
HSPLcom/android/server/am/BroadcastSkipPolicy;->disallowBackgroundStart(Lcom/android/server/am/BroadcastRecord;)Z+]Landroid/content/Intent;Landroid/content/Intent;
+HSPLcom/android/server/am/BroadcastSkipPolicy;->getPermissionManager()Landroid/permission/PermissionManager;
+HSPLcom/android/server/am/BroadcastSkipPolicy;->hasPermissionForDataDelivery(Ljava/lang/String;Ljava/lang/String;[Landroid/content/AttributionSource;)Z
HSPLcom/android/server/am/BroadcastSkipPolicy;->requestStartTargetPermissionsReviewIfNeededLocked(Lcom/android/server/am/BroadcastRecord;Ljava/lang/String;I)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
HSPLcom/android/server/am/BroadcastSkipPolicy;->shouldSkipMessage(Lcom/android/server/am/BroadcastRecord;Landroid/content/pm/ResolveInfo;)Ljava/lang/String;+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastSkipPolicy;Lcom/android/server/am/BroadcastSkipPolicy;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/firewall/IntentFirewall;
-HSPLcom/android/server/am/BroadcastSkipPolicy;->shouldSkipMessage(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastFilter;)Ljava/lang/String;+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/firewall/IntentFirewall;
+HSPLcom/android/server/am/BroadcastSkipPolicy;->shouldSkipMessage(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastFilter;)Ljava/lang/String;+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/firewall/IntentFirewall;]Ljava/lang/Object;Lcom/android/server/am/BroadcastQueueImpl;
HSPLcom/android/server/am/BroadcastSkipPolicy;->shouldSkipMessage(Lcom/android/server/am/BroadcastRecord;Ljava/lang/Object;)Ljava/lang/String;
HSPLcom/android/server/am/BroadcastStats;->addBroadcast(Ljava/lang/String;Ljava/lang/String;IIJ)V
HPLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->freezeProcess(Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/Freezer;Lcom/android/server/am/Freezer;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/Random;Ljava/util/Random;
-HPLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/ProcLocksReader;Lcom/android/internal/os/ProcLocksReader;
+HPLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/ProcLocksReader;Lcom/android/internal/os/ProcLocksReader;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;
HPLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->reportUnfreeze(Lcom/android/server/am/ProcessRecord;IILjava/lang/String;I)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/Random;Ljava/util/Random;
-HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/am/CachedAppOptimizer$AggregatedCompactionStats;Lcom/android/server/am/CachedAppOptimizer$AggregatedProcessCompactionStats;,Lcom/android/server/am/CachedAppOptimizer$AggregatedSourceCompactionStats;]Lcom/android/server/am/CachedAppOptimizer$ProcessDependencies;Lcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/LinkedHashMap;Lcom/android/server/am/CachedAppOptimizer$3;]Ljava/util/LinkedList;Lcom/android/server/am/CachedAppOptimizer$4;
+HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/am/CachedAppOptimizer$AggregatedCompactionStats;Lcom/android/server/am/CachedAppOptimizer$AggregatedProcessCompactionStats;,Lcom/android/server/am/CachedAppOptimizer$AggregatedSourceCompactionStats;]Lcom/android/server/am/CachedAppOptimizer$ProcessDependencies;Lcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/LinkedHashMap;Lcom/android/server/am/CachedAppOptimizer$3;]Ljava/util/LinkedList;Lcom/android/server/am/CachedAppOptimizer$4;
HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->shouldRssThrottleCompaction(Lcom/android/server/am/CachedAppOptimizer$CompactProfile;ILjava/lang/String;[J)Z+]Ljava/util/LinkedHashMap;Lcom/android/server/am/CachedAppOptimizer$3;
HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->shouldTimeThrottleCompaction(Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/CachedAppOptimizer$CompactProfile;Lcom/android/server/am/CachedAppOptimizer$CompactSource;)Z
-HPLcom/android/server/am/CachedAppOptimizer;->binderError(ILcom/android/server/am/ProcessRecord;III)V
HSPLcom/android/server/am/CachedAppOptimizer;->cancelCompactionForProcess(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/CachedAppOptimizer$CancelCompactReason;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/EnumMap;Ljava/util/EnumMap;
HPLcom/android/server/am/CachedAppOptimizer;->compactApp(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/CachedAppOptimizer$CompactProfile;Lcom/android/server/am/CachedAppOptimizer$CompactSource;Z)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/am/CachedAppOptimizer;->freezeAppAsyncInternalLSP(Lcom/android/server/am/ProcessRecord;JZ)V+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/CachedAppOptimizer;->getUnfreezeReasonCodeFromOomAdjReason(I)I
-HPLcom/android/server/am/CachedAppOptimizer;->lambda$binderErrorInternal$3(Ljava/lang/Integer;Ljava/lang/Integer;)V
-HSPLcom/android/server/am/CachedAppOptimizer;->onCleanupApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/CachedAppOptimizer;->onOomAdjustChanged(IILcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/CachedAppOptimizer;->freezeAppAsyncInternalLSP(Lcom/android/server/am/ProcessRecord;JZ)V+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/CachedAppOptimizer;->getPerProcessAggregatedCompactStat(Ljava/lang/String;)Lcom/android/server/am/CachedAppOptimizer$AggregatedProcessCompactionStats;+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;
+HPLcom/android/server/am/CachedAppOptimizer;->lambda$binderErrorInternal$3(Ljava/lang/Integer;Ljava/lang/Integer;)V+]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;
+HSPLcom/android/server/am/CachedAppOptimizer;->onOomAdjustChanged(IILcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;
+HPLcom/android/server/am/CachedAppOptimizer;->onProcessFrozen(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HPLcom/android/server/am/CachedAppOptimizer;->postUidFrozenMessage(IZ)V
HPLcom/android/server/am/CachedAppOptimizer;->traceAppFreeze(Ljava/lang/String;II)V
-HSPLcom/android/server/am/CachedAppOptimizer;->unfreezeAppInternalLSP(Lcom/android/server/am/ProcessRecord;IZ)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/Freezer;Lcom/android/server/am/Freezer;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/CachedAppOptimizer;->unfreezeAppLSP(Lcom/android/server/am/ProcessRecord;IZ)V
-HPLcom/android/server/am/CachedAppOptimizer;->unfreezeTemporarily(Lcom/android/server/am/ProcessRecord;IJ)V
+HPLcom/android/server/am/CachedAppOptimizer;->unfreezeAppInternalLSP(Lcom/android/server/am/ProcessRecord;IZ)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/Freezer;Lcom/android/server/am/Freezer;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/CachedAppOptimizer;->unfreezeAppLSP(Lcom/android/server/am/ProcessRecord;IZ)V
+HPLcom/android/server/am/CachedAppOptimizer;->unfreezeTemporarily(Lcom/android/server/am/ProcessRecord;IJ)V+]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;
HPLcom/android/server/am/CachedAppOptimizer;->updateEarliestFreezableTime(Lcom/android/server/am/ProcessRecord;J)J
HSPLcom/android/server/am/CachedAppOptimizer;->useCompaction()Z
+HSPLcom/android/server/am/CachedAppOptimizer;->useFreezer()Z
HSPLcom/android/server/am/ComponentAliasResolver$$ExternalSyntheticLambda1;-><init>(Landroid/content/Intent;Ljava/lang/String;III)V
HSPLcom/android/server/am/ComponentAliasResolver$Resolution;->getAlias()Ljava/lang/Object;+]Lcom/android/server/am/ComponentAliasResolver$Resolution;Lcom/android/server/am/ComponentAliasResolver$Resolution;
HSPLcom/android/server/am/ComponentAliasResolver$Resolution;->isAlias()Z
@@ -779,7 +825,6 @@ HSPLcom/android/server/am/ConnectionRecord;->stopAssociation()V
HSPLcom/android/server/am/ConnectionRecord;->trackProcState(II)V
HSPLcom/android/server/am/ContentProviderConnection;-><init>(Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;I)V
HSPLcom/android/server/am/ContentProviderConnection;->adjustCounts(II)V
-HSPLcom/android/server/am/ContentProviderConnection;->computeHostOomAdjLSP(Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/ProcessRecord;ZII)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
HPLcom/android/server/am/ContentProviderConnection;->decrementCount(Z)I
HPLcom/android/server/am/ContentProviderConnection;->incrementCount(Z)I
HSPLcom/android/server/am/ContentProviderConnection;->initializeCount(Z)V
@@ -787,19 +832,20 @@ HSPLcom/android/server/am/ContentProviderConnection;->startAssociationIfNeeded()
HPLcom/android/server/am/ContentProviderConnection;->stopAssociation()V
HSPLcom/android/server/am/ContentProviderConnection;->trackProcState(II)V
HSPLcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/am/ContentProviderHelper;->canAccessContentProviderFromSdkSandbox(Landroid/content/pm/ProviderInfo;I)Z
+HPLcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda3;->run()V
+HSPLcom/android/server/am/ContentProviderHelper;->canAccessContentProviderFromSdkSandbox(Landroid/content/pm/ProviderInfo;I)Z+]Lcom/android/server/sdksandbox/SdkSandboxManagerLocal;Lcom/android/server/sdksandbox/SdkSandboxManagerService$LocalImpl;
HSPLcom/android/server/am/ContentProviderHelper;->checkAssociationAndPermissionLocked(Lcom/android/server/am/ProcessRecord;Landroid/content/pm/ProviderInfo;IIZLjava/lang/String;J)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/ContentProviderHelper;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;
HSPLcom/android/server/am/ContentProviderHelper;->checkContentProviderAssociation(Lcom/android/server/am/ProcessRecord;ILandroid/content/pm/ProviderInfo;)Ljava/lang/String;+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/ContentProviderHelper;->checkContentProviderPermission(Landroid/content/pm/ProviderInfo;IIIZLjava/lang/String;)Ljava/lang/String;+]Landroid/content/pm/PathPermission;Landroid/content/pm/PathPermission;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;
HSPLcom/android/server/am/ContentProviderHelper;->checkTime(JLjava/lang/String;)V
-HPLcom/android/server/am/ContentProviderHelper;->decProviderCountLocked(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;ZZZ)Z
+HPLcom/android/server/am/ContentProviderHelper;->decProviderCountLocked(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;ZZZ)Z+]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;
HSPLcom/android/server/am/ContentProviderHelper;->generateApplicationProvidersLocked(Lcom/android/server/am/ProcessRecord;)Ljava/util/List;+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/ParceledListSlice;Landroid/content/pm/ParceledListSlice;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
HSPLcom/android/server/am/ContentProviderHelper;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder;+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
-HSPLcom/android/server/am/ContentProviderHelper;->getContentProviderImpl(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;ZI)Landroid/app/ContentProviderHolder;+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/am/ContentProviderHelper;->handleProviderRemoval(Lcom/android/server/am/ContentProviderConnection;ZZ)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ContentProviderHelper;->getContentProviderImpl(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;ZI)Landroid/app/ContentProviderHolder;+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ContentProviderHelper;->handleProviderRemoval(Lcom/android/server/am/ContentProviderConnection;ZZ)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ContentProviderHelper;->hasProviderConnectionLocked(Lcom/android/server/am/ProcessRecord;)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ContentProviderHelper;->incProviderCountLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;ZZJLcom/android/server/am/ProcessList;I)Lcom/android/server/am/ContentProviderConnection;+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ContentProviderHelper;->incProviderCountLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;ZZJLcom/android/server/am/ProcessList;I)Lcom/android/server/am/ContentProviderConnection;+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ContentProviderHelper;->isAuthorityRedirectedForCloneProfileCached(Ljava/lang/String;)Z+]Ljava/util/Map;Ljava/util/HashMap;
HSPLcom/android/server/am/ContentProviderHelper;->isProcessAliveLocked(Lcom/android/server/am/ProcessRecord;)Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/ContentProviderHelper;->isSingletonOrSystemUserOnly(Landroid/content/pm/ProviderInfo;)Z+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
@@ -808,14 +854,15 @@ HSPLcom/android/server/am/ContentProviderHelper;->maybeUpdateProviderUsageStatsL
HSPLcom/android/server/am/ContentProviderHelper;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/am/ContentProviderHelper;->refContentProvider(Landroid/os/IBinder;II)Z
HPLcom/android/server/am/ContentProviderHelper;->removeContentProvider(Landroid/os/IBinder;Z)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HPLcom/android/server/am/ContentProviderHelper;->removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;]Landroid/content/IContentProvider;Landroid/content/ContentProviderProxy;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ContentProviderHelper;->removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Landroid/content/IContentProvider;Landroid/content/ContentProviderProxy;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ContentProviderRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ProviderInfo;Landroid/content/pm/ApplicationInfo;Landroid/content/ComponentName;Z)V
HSPLcom/android/server/am/ContentProviderRecord;->canRunHere(Lcom/android/server/am/ProcessRecord;)Z
HSPLcom/android/server/am/ContentProviderRecord;->hasExternalProcessHandles()Z
HSPLcom/android/server/am/ContentProviderRecord;->newHolder(Lcom/android/server/am/ContentProviderConnection;Z)Landroid/app/ContentProviderHolder;
-HPLcom/android/server/am/EventLogTags;->writeAmPss(IILjava/lang/String;JJJJIIJ)V
+HSPLcom/android/server/am/ContentProviderRecord;->onProviderPublishStatusLocked(Z)V+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/FgsTempAllowList;->add(IJLjava/lang/Object;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/am/FgsTempAllowList;->get(I)Landroid/util/Pair;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/am/FgsTempAllowList;->isAllowed(I)Z+]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList;
HPLcom/android/server/am/HealthStatsBatteryStatsWriter;->writeUid(Landroid/os/health/HealthStatsWriter;Landroid/os/BatteryStats;Landroid/os/BatteryStats$Uid;)V+]Landroid/os/BatteryStats$ControllerActivityCounter;Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;]Landroid/os/BatteryStats$LongCounter;Lcom/android/server/power/stats/BatteryStatsImpl$1;,Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;,Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;]Landroid/os/BatteryStats$Uid$Sensor;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Sensor;]Landroid/os/BatteryStats$Uid$Wakelock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;]Landroid/os/BatteryStats$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Landroid/os/BatteryStats;Lcom/android/server/power/stats/BatteryStatsImpl;]Landroid/os/health/HealthStatsWriter;Landroid/os/health/HealthStatsWriter;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/HealthStatsBatteryStatsWriter;Lcom/android/server/am/HealthStatsBatteryStatsWriter;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;
HSPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Landroid/content/ComponentName;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
HSPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;IZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
@@ -827,24 +874,28 @@ HPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->initialize(Lc
HSPLcom/android/server/am/OomAdjuster$Injector;->batchSetOomAdj(Ljava/util/ArrayList;)V
HSPLcom/android/server/am/OomAdjuster$Injector;->getElapsedRealtimeMillis()J
HSPLcom/android/server/am/OomAdjuster$Injector;->getUptimeMillis()J
-HSPLcom/android/server/am/OomAdjuster;->applyOomAdjLSP(Lcom/android/server/am/ProcessRecord;ZJJIZ)Z+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/OomAdjuster$Injector;Lcom/android/server/am/OomAdjuster$Injector;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/OomAdjusterDebugLogger;Lcom/android/server/am/OomAdjusterDebugLogger;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/OomAdjuster;->assignCachedAdjIfNecessary(Ljava/util/ArrayList;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/OomAdjuster;->applyLruAdjust(Ljava/util/ArrayList;)V+]Lcom/android/server/am/OomAdjuster$Injector;Lcom/android/server/am/OomAdjuster$Injector;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/OomAdjuster;->applyOomAdjLSP(Lcom/android/server/am/ProcessRecord;ZJJIZ)Z+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/OomAdjuster$Injector;Lcom/android/server/am/OomAdjuster$Injector;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/OomAdjusterDebugLogger;Lcom/android/server/am/OomAdjusterDebugLogger;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/OomAdjuster;->checkAndEnqueueOomAdjTargetLocked(Lcom/android/server/am/ProcessRecord;)Z
HPLcom/android/server/am/OomAdjuster;->collectReachableProcessesLocked(Landroid/util/ArraySet;Ljava/util/ArrayList;Lcom/android/server/am/ActiveUids;)Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/OomAdjuster;->computeOomAdjLSP(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZJZZIZ)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/am/OomAdjuster;->computeOomAdjLSP(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZJZZIZ)Z+]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
HSPLcom/android/server/am/OomAdjuster;->computeProviderHostOomAdjLSP(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/ProcessRecord;ZZZIIZZ)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/OomAdjuster;->computeServiceHostOomAdjLSP(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/ProcessRecord;ZZZIIZZ)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/OomAdjuster;->computeServiceHostOomAdjLSP(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/ProcessRecord;ZZZIIZZ)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/ActivityServiceConnectionsHolder;Lcom/android/server/wm/ActivityServiceConnectionsHolder;
HSPLcom/android/server/am/OomAdjuster;->enqueueOomAdjTargetLocked(Lcom/android/server/am/ProcessRecord;)V
HSPLcom/android/server/am/OomAdjuster;->enqueuePendingTopAppIfNecessaryLSP()I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
HSPLcom/android/server/am/OomAdjuster;->evaluateConnectionPrelude(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;)Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/OomAdjuster;->evaluateProviderConnectionAdd(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;)Z+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/OomAdjuster$Injector;Lcom/android/server/am/OomAdjuster$Injector;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/OomAdjuster;->evaluateProviderConnectionRemoval(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;)Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/OomAdjuster;->evaluateServiceConnectionAdd(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ConnectionRecord;)Z+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/OomAdjuster$Injector;Lcom/android/server/am/OomAdjuster$Injector;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/OomAdjuster;->evaluateServiceConnectionRemoval(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ConnectionRecord;)Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/OomAdjuster;->getBfslCapabilityFromClient(Lcom/android/server/am/ProcessRecord;)I
+HSPLcom/android/server/am/OomAdjuster;->getCpuCapability(Lcom/android/server/am/ProcessRecord;J)I+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/OomAdjuster;->getCpuCapabilityFromClient(Lcom/android/server/am/ProcessRecord;)I
HSPLcom/android/server/am/OomAdjuster;->getDefaultCapability(Lcom/android/server/am/ProcessRecord;I)I+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/OomAdjuster;->getFreezePolicy(Lcom/android/server/am/ProcessRecord;)Z
HPLcom/android/server/am/OomAdjuster;->idleUidsLocked()V+]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Lcom/android/server/am/OomAdjuster$Injector;Lcom/android/server/am/OomAdjuster$Injector;]Lcom/android/server/am/OomAdjusterDebugLogger;Lcom/android/server/am/OomAdjusterDebugLogger;
-HSPLcom/android/server/am/OomAdjuster;->lambda$new$0(Landroid/os/Message;)Z
+HSPLcom/android/server/am/OomAdjuster;->isBackupProcess(Lcom/android/server/am/ProcessRecord;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/am/OomAdjuster;->isDeviceFullyAwake()Z
+HSPLcom/android/server/am/OomAdjuster;->lambda$new$0(Landroid/os/Message;)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HPLcom/android/server/am/OomAdjuster;->maybeSetProcessFollowUpUpdateLocked(Lcom/android/server/am/ProcessRecord;JJ)V
HSPLcom/android/server/am/OomAdjuster;->maybeUpdateLastTopTime(Lcom/android/server/am/ProcessStateRecord;J)V
HSPLcom/android/server/am/OomAdjuster;->maybeUpdateUsageStatsLSP(Lcom/android/server/am/ProcessRecord;J)V+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
@@ -855,25 +906,27 @@ HSPLcom/android/server/am/OomAdjuster;->setAttachingProcessStatesLSP(Lcom/androi
HSPLcom/android/server/am/OomAdjuster;->setIntermediateAdjLSP(Lcom/android/server/am/ProcessRecord;III)I
HSPLcom/android/server/am/OomAdjuster;->setIntermediateProcStateLSP(Lcom/android/server/am/ProcessRecord;II)V
HSPLcom/android/server/am/OomAdjuster;->setIntermediateSchedGroupLSP(Lcom/android/server/am/ProcessStateRecord;I)V
+HSPLcom/android/server/am/OomAdjuster;->setProcessGroup(IILjava/lang/String;)V
HSPLcom/android/server/am/OomAdjuster;->setUidTempAllowlistStateLSP(IZ)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
HSPLcom/android/server/am/OomAdjuster;->shouldKillExcessiveProcesses(J)Z+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
-HSPLcom/android/server/am/OomAdjuster;->unfreezeTemporarily(Lcom/android/server/am/ProcessRecord;I)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/OomAdjuster;->unfreezeTemporarily(Lcom/android/server/am/ProcessRecord;I)V+]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/OomAdjuster;->updateAndTrimProcessLSP(JJJLcom/android/server/am/ActiveUids;IZ)V+]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/OomAdjuster$Injector;Lcom/android/server/am/OomAdjuster$Injector;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/OomAdjuster;->updateAppFreezeStateLSP(Lcom/android/server/am/ProcessRecord;IZI)V
+HSPLcom/android/server/am/OomAdjuster;->updateAppFreezeStateLSP(Lcom/android/server/am/ProcessRecord;IZI)V+]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/OomAdjuster;->updateAppUidRecIfNecessaryLSP(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/OomAdjuster;->updateAppUidRecLSP(Lcom/android/server/am/ProcessRecord;)V+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HPLcom/android/server/am/OomAdjuster;->updateOomAdjFollowUpTargetsLocked()V+]Lcom/android/server/am/OomAdjuster$Injector;Lcom/android/server/am/OomAdjuster$Injector;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLSP(I)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLSP(Lcom/android/server/am/ProcessRecord;I)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
-HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLocked(I)V
HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;I)Z
HSPLcom/android/server/am/OomAdjuster;->updateOomAdjPendingTargetsLocked(I)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
HSPLcom/android/server/am/OomAdjuster;->updateUidsLSP(Lcom/android/server/am/ActiveUids;J)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/OomAdjusterDebugLogger;Lcom/android/server/am/OomAdjusterDebugLogger;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/OomAdjusterDebugLogger;->shouldLog(I)Z
HSPLcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionIgnoringReachableClientsConsumer;->accept(Lcom/android/server/am/OomAdjusterModernImpl$Connection;Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/OomAdjusterModernImpl$Connection;Lcom/android/server/am/ConnectionRecord;,Lcom/android/server/am/ContentProviderConnection;
+HSPLcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionIgnoringReachableClientsConsumer;->accept(Ljava/lang/Object;Ljava/lang/Object;)V+]Lcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionIgnoringReachableClientsConsumer;Lcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionIgnoringReachableClientsConsumer;
HSPLcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionIgnoringReachableClientsConsumer;->init(Lcom/android/server/am/OomAdjusterModernImpl$OomAdjusterArgs;)V
HSPLcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionsConsumer;->accept(Lcom/android/server/am/OomAdjusterModernImpl$OomAdjusterArgs;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/OomAdjusterModernImpl$ComputeHostConsumer;->accept(Lcom/android/server/am/OomAdjusterModernImpl$Connection;Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/OomAdjusterModernImpl$Connection;Lcom/android/server/am/ConnectionRecord;,Lcom/android/server/am/ContentProviderConnection;
+HSPLcom/android/server/am/OomAdjusterModernImpl$ComputeHostConsumer;->accept(Ljava/lang/Object;Ljava/lang/Object;)V+]Lcom/android/server/am/OomAdjusterModernImpl$ComputeHostConsumer;Lcom/android/server/am/OomAdjusterModernImpl$ComputeHostConsumer;
HSPLcom/android/server/am/OomAdjusterModernImpl$OomAdjusterArgs;->update(Lcom/android/server/am/ProcessRecord;JIILcom/android/server/am/ActiveUids;Z)V
HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNode;->unlink()V
HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$$ExternalSyntheticLambda0;->applyAsInt(Ljava/lang/Object;)I
@@ -882,15 +935,16 @@ HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$$ExternalSynt
HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$LinkedProcessRecordList;->offer(Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNode;)V+]Ljava/util/function/ToIntFunction;Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$$ExternalSyntheticLambda0;,Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$$ExternalSyntheticLambda2;
HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$LinkedProcessRecordList;->poll()Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNode;+]Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNode;Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNode;
HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$LinkedProcessRecordList;->reset()V
-HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;->lambda$new$1(Lcom/android/server/am/ProcessRecord;)I
-HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;->lambda$new$2(Lcom/android/server/am/ProcessRecord;)I
-HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;->lambda$new$3(Lcom/android/server/am/ProcessRecord;)I
+HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;->$r8$lambda$1fW7yf2z7Pgv749DQUgfBRaf7aQ(Lcom/android/server/am/ProcessRecord;)I
+HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;->$r8$lambda$dVky852B00emlsqiXMSJCZhOi8g(Lcom/android/server/am/ProcessRecord;)I
+HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;->$r8$lambda$xRsLLgodHEUbn_iuIPZpAnHO0RE(Lcom/android/server/am/ProcessRecord;)I
HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;->offer(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNode;Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNode;]Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$LinkedProcessRecordList;Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$LinkedProcessRecordList;]Ljava/util/function/ToIntFunction;Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$$ExternalSyntheticLambda1;,Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$$ExternalSyntheticLambda3;
HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;->poll()Lcom/android/server/am/ProcessRecord;+]Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$LinkedProcessRecordList;Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$LinkedProcessRecordList;
HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;->reset()V+]Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$LinkedProcessRecordList;Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$LinkedProcessRecordList;]Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;
HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;->resetLastNodes()V+]Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;
HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;->setLastNodeToHead(I)V
HSPLcom/android/server/am/OomAdjusterModernImpl$ReachableCollectingConsumer;->accept(Lcom/android/server/am/OomAdjusterModernImpl$Connection;Lcom/android/server/am/ProcessRecord;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/OomAdjusterModernImpl;->adjToSlot(I)I
HSPLcom/android/server/am/OomAdjusterModernImpl;->collectAndMarkReachableProcessesLSP(Ljava/util/ArrayList;)V+]Lcom/android/server/am/OomAdjusterModernImpl$ReachableCollectingConsumer;Lcom/android/server/am/OomAdjusterModernImpl$ReachableCollectingConsumer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/OomAdjusterModernImpl;->computeConnectionsLSP()V+]Lcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionsConsumer;Lcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionsConsumer;]Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;
HSPLcom/android/server/am/OomAdjusterModernImpl;->computeOomAdjIgnoringReachablesLSP(Lcom/android/server/am/OomAdjusterModernImpl$OomAdjusterArgs;)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionIgnoringReachableClientsConsumer;Lcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionIgnoringReachableClientsConsumer;
@@ -910,64 +964,67 @@ HSPLcom/android/server/am/PackageList;->getPackageList()[Ljava/lang/String;
HSPLcom/android/server/am/PackageList;->searchEachPackage(Ljava/util/function/Function;)Ljava/lang/Object;+]Ljava/util/function/Function;Lcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda2;
HPLcom/android/server/am/PendingIntentController;->cancelIntentSender(Landroid/content/IIntentSender;)V+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;
HPLcom/android/server/am/PendingIntentController;->cancelIntentSender(Lcom/android/server/am/PendingIntentRecord;ZI)V+]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;]Ljava/util/HashMap;Ljava/util/HashMap;
-HSPLcom/android/server/am/PendingIntentController;->decrementUidStatLocked(Lcom/android/server/am/PendingIntentRecord;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
-HSPLcom/android/server/am/PendingIntentController;->getIntentSender(ILjava/lang/String;Ljava/lang/String;IILandroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;)Lcom/android/server/am/PendingIntentRecord;+]Landroid/app/ActivityOptions;Landroid/app/ActivityOptions;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Ljava/util/HashMap;Ljava/util/HashMap;
-HSPLcom/android/server/am/PendingIntentController;->incrementUidStatLocked(Lcom/android/server/am/PendingIntentRecord;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+HSPLcom/android/server/am/PendingIntentController;->decrementUidStatLocked(Lcom/android/server/am/PendingIntentRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+HSPLcom/android/server/am/PendingIntentController;->getIntentSender(ILjava/lang/String;Ljava/lang/String;IILandroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;)Lcom/android/server/am/PendingIntentRecord;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Ljava/util/HashMap;Ljava/util/HashMap;
+HSPLcom/android/server/am/PendingIntentController;->incrementUidStatLocked(Lcom/android/server/am/PendingIntentRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/internal/util/RingBuffer;Lcom/android/internal/util/RingBuffer;
HPLcom/android/server/am/PendingIntentController;->makeIntentSenderCanceled(Lcom/android/server/am/PendingIntentRecord;I)V+]Lcom/android/server/AlarmManagerInternal;Lcom/android/server/alarm/AlarmManagerService$LocalService;
-HSPLcom/android/server/am/PendingIntentRecord$Key;-><init>(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILcom/android/server/wm/SafeActivityOptions;I)V+]Landroid/content/Intent;Landroid/content/Intent;
+HSPLcom/android/server/am/PendingIntentRecord$Key;-><init>(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILcom/android/server/wm/SafeActivityOptions;I)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/os/IBinder;Lcom/android/server/wm/ActivityRecord$Token;
HSPLcom/android/server/am/PendingIntentRecord$Key;->equals(Ljava/lang/Object;)Z+]Landroid/content/Intent;Landroid/content/Intent;
HSPLcom/android/server/am/PendingIntentRecord$Key;->hashCode()I
HSPLcom/android/server/am/PendingIntentRecord;-><init>(Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentRecord$Key;I)V
-HSPLcom/android/server/am/PendingIntentRecord;->completeFinalize()V+]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;]Ljava/util/HashMap;Ljava/util/HashMap;
-HPLcom/android/server/am/PendingIntentRecord;->sendInner(Landroid/app/IApplicationThread;ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/ActivityOptions;Landroid/app/ActivityOptions;]Landroid/content/IIntentReceiver;Landroid/app/PendingIntent$FinishedDispatcher;,Landroid/content/IIntentReceiver$Stub$Proxy;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/wm/SafeActivityOptions;Lcom/android/server/wm/SafeActivityOptions;
+HPLcom/android/server/am/PendingIntentRecord;->getBackgroundStartPrivilegesForActivitySender(Landroid/util/ArraySet;Landroid/os/IBinder;Landroid/os/Bundle;I)Landroid/app/BackgroundStartPrivileges;+]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
+HPLcom/android/server/am/PendingIntentRecord;->sendInner(Landroid/app/IApplicationThread;ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/ActivityOptions;Landroid/app/ActivityOptions;]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Landroid/content/IIntentReceiver;Landroid/app/PendingIntent$FinishedDispatcher;,Landroid/content/IIntentReceiver$Stub$Proxy;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/wm/SafeActivityOptions;Lcom/android/server/wm/SafeActivityOptions;
HSPLcom/android/server/am/PendingStartActivityUids;->delete(IJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/am/PendingStartActivityUids;->enqueuePendingTopAppIfNecessaryLocked(Lcom/android/server/am/ActivityManagerService;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
HSPLcom/android/server/am/PendingStartActivityUids;->isPendingTopUid(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HPLcom/android/server/am/PhantomProcessList;->getOrCreatePhantomProcessIfNeededLocked(Ljava/lang/String;IIZ)Lcom/android/server/am/PhantomProcessRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/PhantomProcessList;->isAppProcess(I)Z
-HPLcom/android/server/am/PhantomProcessList;->lookForPhantomProcessesLocked()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HPLcom/android/server/am/PhantomProcessList;->lookForPhantomProcessesLocked(Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/PhantomProcessList$Injector;Lcom/android/server/am/PhantomProcessList$Injector;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/io/InputStream;Ljava/io/FileInputStream;
-HPLcom/android/server/am/PhantomProcessList;->updateProcessCpuStatesLocked(Lcom/android/internal/os/ProcessCpuTracker;)V
+HSPLcom/android/server/am/PhantomProcessList;->addChildPidLocked(Lcom/android/server/am/ProcessRecord;II)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/PhantomProcessList$Injector;Lcom/android/server/am/PhantomProcessList$Injector;
+HSPLcom/android/server/am/PhantomProcessList;->getOrCreatePhantomProcessIfNeededLocked(Ljava/lang/String;IIZ)Lcom/android/server/am/PhantomProcessRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/PhantomProcessList;->isAppProcess(I)Z
+HSPLcom/android/server/am/PhantomProcessList;->lookForPhantomProcessesLocked()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/am/PhantomProcessList;->lookForPhantomProcessesLocked(Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/PhantomProcessList$Injector;Lcom/android/server/am/PhantomProcessList$Injector;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/io/InputStream;Ljava/io/FileInputStream;
+HSPLcom/android/server/am/PhantomProcessList;->updateProcessCpuStatesLocked(Lcom/android/internal/os/ProcessCpuTracker;)V
HSPLcom/android/server/am/PlatformCompatCache$CacheItem;->fetchLocked(Landroid/content/pm/ApplicationInfo;I)Z+]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;
+HSPLcom/android/server/am/PlatformCompatCache$CacheItem;->isChangeEnabled(Landroid/content/pm/ApplicationInfo;)Z+]Lcom/android/server/am/PlatformCompatCache$CacheItem;Lcom/android/server/am/PlatformCompatCache$CacheItem;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;
HSPLcom/android/server/am/ProcessCachedOptimizerRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/ProcessCachedOptimizerRecord;->isFrozen()Z
HSPLcom/android/server/am/ProcessCachedOptimizerRecord;->setShouldNotFreeze(ZII)V
HSPLcom/android/server/am/ProcessCachedOptimizerRecord;->setShouldNotFreeze(ZZII)Z
HSPLcom/android/server/am/ProcessErrorStateRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
HSPLcom/android/server/am/ProcessErrorStateRecord;->isCrashing()Z
HSPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
-HSPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda1;->run()V
HSPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
+HSPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda5;->run()V
HSPLcom/android/server/am/ProcessList$MyProcessMap;->put(Ljava/lang/String;ILcom/android/server/am/ProcessRecord;)Lcom/android/server/am/ProcessRecord;+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
HSPLcom/android/server/am/ProcessList$MyProcessMap;->remove(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;+]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
HSPLcom/android/server/am/ProcessList$ProcStateMemTracker;-><init>()V
HSPLcom/android/server/am/ProcessList;->addProcessNameLocked(Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ProcessList;->batchSetOomAdj(Ljava/util/ArrayList;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ProcessList;->checkSlow(JLjava/lang/String;)V
+HSPLcom/android/server/am/ProcessList;->completeLruProcessInternalLSP(Landroid/util/SparseBooleanArray;II)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ProcessList;->computeGidsForProcess(II[IZ)[I
HSPLcom/android/server/am/ProcessList;->computeNextPssTime(ILcom/android/server/am/ProcessList$ProcStateMemTracker;ZZJJ)J
HSPLcom/android/server/am/ProcessList;->fillInProcMemInfoLOSP(Lcom/android/server/am/ProcessRecord;Landroid/app/ActivityManager$RunningAppProcessInfo;I)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
HSPLcom/android/server/am/ProcessList;->forEachLruProcessesLOSP(ZLjava/util/function/Consumer;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Consumer;megamorphic_types
HSPLcom/android/server/am/ProcessList;->getBlockStateForUid(Lcom/android/server/am/UidRecord;)I
-HSPLcom/android/server/am/ProcessList;->getLRURecordForAppLOSP(Landroid/os/IBinder;)Lcom/android/server/am/ProcessRecord;+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ProcessList;->getLRURecordForAppLOSP(Landroid/os/IBinder;)Lcom/android/server/am/ProcessRecord;+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ProcessList;->getMemLevel(I)J
HSPLcom/android/server/am/ProcessList;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V
HSPLcom/android/server/am/ProcessList;->getNumForegroundServices()Landroid/util/Pair;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ProcessList;->getPackageAppDataInfoMap(Landroid/content/pm/PackageManagerInternal;[Ljava/lang/String;I)Ljava/util/Map;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
HSPLcom/android/server/am/ProcessList;->getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/am/ProcessList;->getRunningAppProcessesLOSP(ZIZII)Ljava/util/List;+]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ProcessList;->getUidProcStateLOSP(I)I
HSPLcom/android/server/am/ProcessList;->getUidProcessCapabilityLOSP(I)I
HSPLcom/android/server/am/ProcessList;->getUidRecordLOSP(I)Lcom/android/server/am/UidRecord;
HSPLcom/android/server/am/ProcessList;->handleProcessStartedLocked(Lcom/android/server/am/ProcessRecord;IZJZ)Z+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/Watchdog;Lcom/android/server/Watchdog;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessList;->incrementProcStateSeqAndNotifyAppsLOSP(Lcom/android/server/am/ActiveUids;)V+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ProcessList;->incrementProcStateSeqAndNotifyAppsLOSP(Lcom/android/server/am/ActiveUids;)V+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ProcessList;->isProcStartValidLocked(Lcom/android/server/am/ProcessRecord;J)Ljava/lang/String;+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/ProcessList;->killAppIfBgRestrictedAndCachedIdleLocked(Lcom/android/server/am/ProcessRecord;J)J+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessList;->newProcessRecordLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZIZILjava/lang/String;Lcom/android/server/am/HostingRecord;)Lcom/android/server/am/ProcessRecord;+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/am/ProcessList;->newProcessRecordLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZIZILjava/lang/String;Lcom/android/server/am/HostingRecord;)Lcom/android/server/am/ProcessRecord;+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
HSPLcom/android/server/am/ProcessList;->noteProcessDiedLocked(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Lcom/android/server/Watchdog;Lcom/android/server/Watchdog;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ProcessList;->offerLruProcessInternalLSP(Lcom/android/server/am/ProcessRecord;JLjava/lang/String;Ljava/lang/Object;Lcom/android/server/am/ProcessRecord;)I+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ProcessList;->removeLruProcessLocked(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ProcessList;->removeProcessNameLocked(Ljava/lang/String;ILcom/android/server/am/ProcessRecord;)Lcom/android/server/am/ProcessRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ProcessList;->searchEachLruProcessesLOSP(ZLjava/util/function/Function;)Ljava/lang/Object;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Function;Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda1;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda5;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda6;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda7;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda8;
-HPLcom/android/server/am/ProcessList;->sendPackageBroadcastLocked(I[Ljava/lang/String;I)V+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ProcessList;->searchEachLruProcessesLOSP(ZLjava/util/function/Function;)Ljava/lang/Object;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Function;Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda1;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda5;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda6;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda7;
HSPLcom/android/server/am/ProcessList;->startProcess(Lcom/android/server/am/HostingRecord;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;I[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)Landroid/os/Process$ProcessStartResult;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/AppZygote;Landroid/os/AppZygote;]Lcom/android/server/AppStateTracker;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;
HSPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/HostingRecord;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;I[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJ)Z+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;
HSPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/HostingRecord;IZZLjava/lang/String;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/storage/StorageManagerInternal;Lcom/android/server/StorageManagerService$StorageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService$HiddenApiSettings;Lcom/android/server/am/ActivityManagerService$HiddenApiSettings;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
@@ -989,10 +1046,7 @@ HPLcom/android/server/am/ProcessProfileRecord;->onProcessUnfrozen()V+]Lcom/andro
HSPLcom/android/server/am/ProcessProfileRecord;->setProcessTrackerState(II)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/ProcessProfileRecord;->updateProcState(Lcom/android/server/am/ProcessStateRecord;)V
HSPLcom/android/server/am/ProcessProviderRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
-HSPLcom/android/server/am/ProcessProviderRecord;->addProviderConnection(Lcom/android/server/am/ContentProviderConnection;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ProcessProviderRecord;->getProviderAt(I)Lcom/android/server/am/ContentProviderRecord;
-HSPLcom/android/server/am/ProcessProviderRecord;->getProviderConnectionAt(I)Lcom/android/server/am/ContentProviderConnection;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/am/ProcessProviderRecord;->numberOfProviderConnections()I+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ProcessProviderRecord;->numberOfProviders()I
HSPLcom/android/server/am/ProcessProviderRecord;->onCleanupApplicationRecordLocked(Z)Z+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ProcessReceiverRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
@@ -1000,9 +1054,7 @@ HSPLcom/android/server/am/ProcessReceiverRecord;->addReceiver(Lcom/android/serve
HSPLcom/android/server/am/ProcessReceiverRecord;->numberOfReceivers()I
HSPLcom/android/server/am/ProcessRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;JLcom/android/server/am/ProcessStatsService;)Z
-HSPLcom/android/server/am/ProcessRecord;->forEachConnectionHost(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;Lcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda12;
HSPLcom/android/server/am/ProcessRecord;->getActiveInstrumentation()Lcom/android/server/am/ActiveInstrumentation;
-HSPLcom/android/server/am/ProcessRecord;->getCpuDelayTime()J+]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;
HSPLcom/android/server/am/ProcessRecord;->getHostingRecord()Lcom/android/server/am/HostingRecord;
HSPLcom/android/server/am/ProcessRecord;->getLastActivityTime()J
HSPLcom/android/server/am/ProcessRecord;->getLruSeq()I
@@ -1012,7 +1064,7 @@ HSPLcom/android/server/am/ProcessRecord;->getPid()I
HSPLcom/android/server/am/ProcessRecord;->getPkgDeps()Landroid/util/ArraySet;
HSPLcom/android/server/am/ProcessRecord;->getPkgList()Lcom/android/server/am/PackageList;
HSPLcom/android/server/am/ProcessRecord;->getSetAdj()I
-HSPLcom/android/server/am/ProcessRecord;->getSetCapability()I
+HPLcom/android/server/am/ProcessRecord;->getSetCapability()I
HSPLcom/android/server/am/ProcessRecord;->getSetProcState()I
HSPLcom/android/server/am/ProcessRecord;->getStartUid()I
HSPLcom/android/server/am/ProcessRecord;->getThread()Landroid/app/IApplicationThread;
@@ -1022,7 +1074,7 @@ HSPLcom/android/server/am/ProcessRecord;->getWindowProcessController()Lcom/andro
HSPLcom/android/server/am/ProcessRecord;->hasActivities()Z+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
HSPLcom/android/server/am/ProcessRecord;->hasActivitiesOrRecentTasks()Z+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
HSPLcom/android/server/am/ProcessRecord;->isCached()Z
-HPLcom/android/server/am/ProcessRecord;->isFreezable()Z
+HPLcom/android/server/am/ProcessRecord;->isFreezable()Z+]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;
HSPLcom/android/server/am/ProcessRecord;->isInFullBackup()Z
HSPLcom/android/server/am/ProcessRecord;->isKilled()Z
HSPLcom/android/server/am/ProcessRecord;->isKilledByAm()Z
@@ -1030,12 +1082,11 @@ HSPLcom/android/server/am/ProcessRecord;->isPendingFinishAttach()Z
HSPLcom/android/server/am/ProcessRecord;->isPersistent()Z
HSPLcom/android/server/am/ProcessRecord;->isRemoved()Z
HSPLcom/android/server/am/ProcessRecord;->isThreadReady()Z
-HPLcom/android/server/am/ProcessRecord;->killLocked(Ljava/lang/String;Ljava/lang/String;IIZZ)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ProcessRecord;->killLocked(Ljava/lang/String;Ljava/lang/String;IIZZ)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/ProcessRecord;->makeActive(Lcom/android/server/am/ApplicationThreadDeferred;Lcom/android/server/am/ProcessStatsService;)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
-HSPLcom/android/server/am/ProcessRecord;->onCleanupApplicationRecordLSP(Lcom/android/server/am/ProcessStatsService;ZZ)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ProcessRecord;->onCleanupApplicationRecordLSP(Lcom/android/server/am/ProcessStatsService;ZZ)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;
HPLcom/android/server/am/ProcessRecord;->onProcessUnfrozen()V
HSPLcom/android/server/am/ProcessRecord;->removeBackgroundStartPrivileges(Landroid/os/Binder;)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
-HSPLcom/android/server/am/ProcessRecord;->resetPackageList(Lcom/android/server/am/ProcessStatsService;)V
HSPLcom/android/server/am/ProcessRecord;->setBackgroundStartPrivileges(Landroid/os/Binder;Landroid/app/BackgroundStartPrivileges;)V
HSPLcom/android/server/am/ProcessRecord;->setLastActivityTime(J)V
HSPLcom/android/server/am/ProcessRecord;->setLruSeq(I)V
@@ -1048,20 +1099,41 @@ HSPLcom/android/server/am/ProcessServiceRecord;->addBoundClientUidsOfNewService(
HSPLcom/android/server/am/ProcessServiceRecord;->addConnection(Lcom/android/server/am/ConnectionRecord;)V
HSPLcom/android/server/am/ProcessServiceRecord;->addSdkSandboxConnectionIfNecessary(Lcom/android/server/am/ConnectionRecord;)V
HSPLcom/android/server/am/ProcessServiceRecord;->areForegroundServiceTypesSame(IZ)Z
-HSPLcom/android/server/am/ProcessServiceRecord;->clearBoundClientUids()V
HSPLcom/android/server/am/ProcessServiceRecord;->getNumForegroundServices()I
HSPLcom/android/server/am/ProcessServiceRecord;->getRunningServiceAt(I)Lcom/android/server/am/ServiceRecord;
HSPLcom/android/server/am/ProcessServiceRecord;->hasNonShortForegroundServices()Z
HSPLcom/android/server/am/ProcessServiceRecord;->hasTopStartedAlmostPerceptibleServices()Z
+HSPLcom/android/server/am/ProcessServiceRecord;->hasUndemotedShortForegroundService(J)Z+]Lcom/android/server/am/ServiceRecord$ShortFgsInfo;Lcom/android/server/am/ServiceRecord$ShortFgsInfo;
HSPLcom/android/server/am/ProcessServiceRecord;->modifyRawOomAdj(I)I
HSPLcom/android/server/am/ProcessServiceRecord;->numberOfConnections()I
HSPLcom/android/server/am/ProcessServiceRecord;->numberOfExecutingServices()I
HSPLcom/android/server/am/ProcessServiceRecord;->numberOfRunningServices()I
+HSPLcom/android/server/am/ProcessServiceRecord;->removeConnection(Lcom/android/server/am/ConnectionRecord;)V
HSPLcom/android/server/am/ProcessServiceRecord;->removeSdkSandboxConnectionIfNecessary(Lcom/android/server/am/ConnectionRecord;)V
+HSPLcom/android/server/am/ProcessServiceRecord;->startExecutingService(Lcom/android/server/am/ServiceRecord;)V
HSPLcom/android/server/am/ProcessServiceRecord;->startService(Lcom/android/server/am/ServiceRecord;)Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/am/ProcessServiceRecord;->stopExecutingService(Lcom/android/server/am/ServiceRecord;)V
HSPLcom/android/server/am/ProcessServiceRecord;->stopService(Lcom/android/server/am/ServiceRecord;)Z
HSPLcom/android/server/am/ProcessServiceRecord;->updateBoundClientUids()V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ProcessServiceRecord;->updateHostingComonentTypeForBindingsLocked()V
+HSPLcom/android/server/am/ProcessStateController;->addConnection(Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ConnectionRecord;)V
+HSPLcom/android/server/am/ProcessStateController;->addProviderConnection(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderConnection;)V
+HSPLcom/android/server/am/ProcessStateController;->clearShortFgsInfo(Lcom/android/server/am/ServiceRecord;)V
+HSPLcom/android/server/am/ProcessStateController;->enqueueUpdateTarget(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
+HSPLcom/android/server/am/ProcessStateController;->removeConnection(Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ConnectionRecord;)V
+HSPLcom/android/server/am/ProcessStateController;->runPendingUpdate(I)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
+HSPLcom/android/server/am/ProcessStateController;->runUpdate(Lcom/android/server/am/ProcessRecord;I)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
+HSPLcom/android/server/am/ProcessStateController;->setExecServicesFg(Lcom/android/server/am/ProcessServiceRecord;Z)V
+HSPLcom/android/server/am/ProcessStateController;->setHostProcess(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/ProcessStateController;->setIsForegroundService(Lcom/android/server/am/ServiceRecord;Z)V
+HSPLcom/android/server/am/ProcessStateController;->setIsLastMemoryLevelNormal(Z)V
+HSPLcom/android/server/am/ProcessStateController;->setServiceLastActivityTime(Lcom/android/server/am/ServiceRecord;J)V
+HSPLcom/android/server/am/ProcessStateController;->setStartRequested(Lcom/android/server/am/ServiceRecord;Z)V
+HSPLcom/android/server/am/ProcessStateController;->setUidTempAllowlistStateLSP(IZ)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
+HSPLcom/android/server/am/ProcessStateController;->startExecutingService(Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ServiceRecord;)V
+HSPLcom/android/server/am/ProcessStateController;->startService(Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ServiceRecord;)Z
+HSPLcom/android/server/am/ProcessStateController;->stopExecutingService(Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ServiceRecord;)V
+HSPLcom/android/server/am/ProcessStateController;->stopService(Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ServiceRecord;)Z
HSPLcom/android/server/am/ProcessStateRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
HPLcom/android/server/am/ProcessStateRecord;->computeOomAdjFromActivitiesIfNecessary(Lcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;IZZIIIII)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
HSPLcom/android/server/am/ProcessStateRecord;->forceProcessStateUpTo(I)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
@@ -1073,9 +1145,7 @@ HSPLcom/android/server/am/ProcessStateRecord;->getCachedIsHeavyWeight()Z+]Lcom/a
HSPLcom/android/server/am/ProcessStateRecord;->getCachedIsHomeProcess()Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
HSPLcom/android/server/am/ProcessStateRecord;->getCachedIsPreviousProcess()Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
HSPLcom/android/server/am/ProcessStateRecord;->getCachedIsReceivingBroadcast([I)Z+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ProcessStateRecord;->getCurAdj()I
HSPLcom/android/server/am/ProcessStateRecord;->getCurProcState()I
-HSPLcom/android/server/am/ProcessStateRecord;->getCurRawAdj()I
HSPLcom/android/server/am/ProcessStateRecord;->getSetAdj()I
HSPLcom/android/server/am/ProcessStateRecord;->getSetProcState()I
HSPLcom/android/server/am/ProcessStateRecord;->isCached()Z
@@ -1090,6 +1160,7 @@ HSPLcom/android/server/am/ProcessStateRecord;->setCurRawProcState(IZ)Z
HSPLcom/android/server/am/ProcessStateRecord;->setCurrentSchedulingGroup(I)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
HSPLcom/android/server/am/ProcessStateRecord;->setHasStartedServices(Z)V
HSPLcom/android/server/am/ProcessStateRecord;->setSetProcState(I)V
+HPLcom/android/server/am/ProcessStateRecord;->setWhenUnimportant(J)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
HSPLcom/android/server/am/ProcessStateRecord;->updateLastInvisibleTime(Z)V
HSPLcom/android/server/am/ProcessStatsService;->getMemFactorLocked()I
HSPLcom/android/server/am/ProcessStatsService;->getServiceState(Ljava/lang/String;IJLjava/lang/String;Ljava/lang/String;)Lcom/android/internal/app/procstats/ServiceState;
@@ -1106,7 +1177,7 @@ HSPLcom/android/server/am/ReceiverList;->hashCode()I
HSPLcom/android/server/am/SameProcessApplicationThread$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/SameProcessApplicationThread;Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZIIILjava/lang/String;)V
HSPLcom/android/server/am/SameProcessApplicationThread$$ExternalSyntheticLambda1;->run()V
HSPLcom/android/server/am/SameProcessApplicationThread;->scheduleRegisteredReceiver(Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZIIILjava/lang/String;)V
-HSPLcom/android/server/am/ServiceRecord$1;->run()V+]Lcom/android/server/notification/NotificationManagerInternal;Lcom/android/server/notification/NotificationManagerService$13;
+HSPLcom/android/server/am/ServiceRecord$1;->run()V+]Lcom/android/server/notification/NotificationManagerInternal;Lcom/android/server/notification/NotificationManagerService$13;,Lcom/android/server/notification/NotificationManagerService$14;
HSPLcom/android/server/am/ServiceRecord$StartItem;-><init>(Lcom/android/server/am/ServiceRecord;ZILandroid/content/Intent;Lcom/android/server/uri/NeededUriGrants;ILjava/lang/String;Ljava/lang/String;I)V
HSPLcom/android/server/am/ServiceRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/ComponentName;Landroid/content/ComponentName;Ljava/lang/String;ILandroid/content/Intent$FilterComparison;Landroid/content/pm/ServiceInfo;ZLjava/lang/Runnable;Ljava/lang/String;ILjava/lang/String;Z)V
HSPLcom/android/server/am/ServiceRecord;->addConnection(Landroid/os/IBinder;Lcom/android/server/am/ConnectionRecord;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
@@ -1121,10 +1192,10 @@ HSPLcom/android/server/am/ServiceRecord;->isShortFgs()Z
HSPLcom/android/server/am/ServiceRecord;->postNotification(Z)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/ServiceRecord;->removeConnection(Landroid/os/IBinder;)V
HSPLcom/android/server/am/ServiceRecord;->retrieveAppBindingLocked(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;)Lcom/android/server/am/AppBindRecord;
-HSPLcom/android/server/am/ServiceRecord;->setProcess(Lcom/android/server/am/ProcessRecord;Landroid/app/IApplicationThread;ILcom/android/server/am/UidRecord;)V+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/ServiceRecord;->setProcess(Lcom/android/server/am/ProcessRecord;Landroid/app/IApplicationThread;ILcom/android/server/am/UidRecord;)V+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ServiceRecord;->toString()Ljava/lang/String;
HSPLcom/android/server/am/ServiceRecord;->updateFgsHasNotificationPermission()V
-HSPLcom/android/server/am/ServiceRecord;->updateKeepWarmLocked()V+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
+HSPLcom/android/server/am/ServiceRecord;->updateKeepWarmLocked()V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
HSPLcom/android/server/am/ServiceRecord;->updateOomAdjSeq()V
HSPLcom/android/server/am/ServiceRecord;->updateProcessStateOnRequest()V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/ServiceRecord;->useNewWiuLogic_forStart()Z
@@ -1136,7 +1207,7 @@ HSPLcom/android/server/am/UidObserverController;->dispatchUidsChangedForObserver
HSPLcom/android/server/am/UidObserverController;->enqueueUidChange(Lcom/android/server/am/UidObserverController$ChangeRecord;IIIIJIZ)I+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/UidProcessMap;->get(ILjava/lang/String;)Ljava/lang/Object;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/am/UidRecord;-><init>(ILcom/android/server/am/ActivityManagerService;)V
-HPLcom/android/server/am/UidRecord;->areAllProcessesFrozen(Lcom/android/server/am/ProcessRecord;)Z
+HSPLcom/android/server/am/UidRecord;->areAllProcessesFrozen(Lcom/android/server/am/ProcessRecord;)Z
HSPLcom/android/server/am/UidRecord;->forEachProcess(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;Lcom/android/server/am/ActiveUids$$ExternalSyntheticLambda0;,Lcom/android/server/am/ProcessList$$ExternalSyntheticLambda3;
HSPLcom/android/server/am/UidRecord;->getMinProcAdj()I+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/UserController$Injector;->getUserManager()Lcom/android/server/pm/UserManagerService;
@@ -1147,6 +1218,7 @@ HSPLcom/android/server/am/UserController;->getStartedUserArray()[I
HSPLcom/android/server/am/UserController;->getStartedUserState(I)Lcom/android/server/am/UserState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/am/UserController;->handleIncomingUser(IIIZILjava/lang/String;Ljava/lang/String;)I+]Lcom/android/server/am/UserController$Injector;Lcom/android/server/am/UserController$Injector;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
HSPLcom/android/server/am/UserController;->hasStartedUserState(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/am/UserController;->isSameProfileGroup(II)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HSPLcom/android/server/am/UserController;->isUserOrItsParentRunning(I)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
HSPLcom/android/server/am/UserController;->isUserRunning(II)Z+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
HSPLcom/android/server/am/UserController;->unsafeConvertIncomingUser(I)I+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;
@@ -1157,52 +1229,50 @@ HSPLcom/android/server/apphibernation/AppHibernationService;->checkUserStatesExi
HSPLcom/android/server/apphibernation/AppHibernationService;->handleIncomingUser(ILjava/lang/String;)I+]Landroid/app/IActivityManager;Lcom/android/server/am/ActivityManagerService;
HSPLcom/android/server/apphibernation/AppHibernationService;->isHibernatingForUser(Ljava/lang/String;I)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Map;Landroid/util/ArrayMap;
HSPLcom/android/server/apphibernation/AppHibernationService;->isHibernatingGlobally(Ljava/lang/String;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/util/Map;Landroid/util/ArrayMap;
+HPLcom/android/server/apphibernation/AppHibernationService;->lambda$new$6(ILandroid/app/usage/UsageEvents$Event;)V
HPLcom/android/server/apphibernation/AppHibernationService;->setHibernatingForUser(Ljava/lang/String;IZ)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/apphibernation/HibernationStateDiskStore;Lcom/android/server/apphibernation/HibernationStateDiskStore;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService;
HPLcom/android/server/apphibernation/AppHibernationService;->setHibernatingGlobally(Ljava/lang/String;Z)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/apphibernation/HibernationStateDiskStore;Lcom/android/server/apphibernation/HibernationStateDiskStore;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService;
HSPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getForegroundOps(ILjava/lang/String;)Landroid/util/SparseBooleanArray;+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/permission/access/appop/AppOpService;
+HSPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getForegroundOps(Ljava/lang/String;I)Landroid/util/SparseBooleanArray;+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/permission/access/appop/AppOpService;
HSPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getPackageMode(Ljava/lang/String;II)I+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/permission/access/appop/AppOpService;
HSPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getUidMode(ILjava/lang/String;I)I+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/permission/access/appop/AppOpService;
HSPLcom/android/server/appop/AppOpsRestrictionsImpl;->getUserRestriction(Ljava/lang/Object;II)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
HSPLcom/android/server/appop/AppOpsRestrictionsImpl;->getUserRestriction(Ljava/lang/Object;IILjava/lang/String;Ljava/lang/String;Z)Z+]Lcom/android/server/appop/AppOpsRestrictionsImpl;Lcom/android/server/appop/AppOpsRestrictionsImpl;
-HSPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda11;->execute(Ljava/lang/Runnable;)V
-HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda7;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda11;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda5;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda7;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda9;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->checkOperation(IILjava/lang/String;Ljava/lang/String;IZ)I+]Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;Lcom/android/server/policy/AppOpsPolicy;
HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;I)V+]Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;Lcom/android/server/policy/AppOpsPolicy;
-HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->noteOperation(IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp;+]Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;Lcom/android/server/policy/AppOpsPolicy;
+HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->noteOperation(IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;ZI)Landroid/app/SyncNotedAppOp;+]Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;Lcom/android/server/policy/AppOpsPolicy;
HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;+]Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;Lcom/android/server/policy/AppOpsPolicy;
HSPLcom/android/server/appop/AppOpsService$ClientUserRestrictionState;->hasRestriction(ILjava/lang/String;Ljava/lang/String;IZ)Z+]Lcom/android/server/appop/AppOpsRestrictions;Lcom/android/server/appop/AppOpsRestrictionsImpl;
-HSPLcom/android/server/appop/AppOpsService$Op;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService$UidState;Ljava/lang/String;II)V
HSPLcom/android/server/appop/AppOpsService$Op;->createEntryLocked(Ljava/lang/String;)Landroid/app/AppOpsManager$OpEntry;+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;
HSPLcom/android/server/appop/AppOpsService$Op;->getOrCreateAttribution(Lcom/android/server/appop/AppOpsService$Op;Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/appop/AttributedOp;
HSPLcom/android/server/appop/AppOpsService$Op;->isRunning()Z
-HSPLcom/android/server/appop/AppOpsService$UidState;->evalMode(II)I+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/appop/AppOpsUidStateTracker;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
-HSPLcom/android/server/appop/AppOpsService$UidState;->getState()I+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/appop/AppOpsUidStateTracker;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
+HSPLcom/android/server/appop/AppOpsService$UidState;->evalMode(II)I+]Lcom/android/server/appop/AppOpsUidStateTracker;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
+HSPLcom/android/server/appop/AppOpsService$UidState;->getState()I+]Lcom/android/server/appop/AppOpsUidStateTracker;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
HSPLcom/android/server/appop/AppOpsService;->checkOperation(IILjava/lang/String;)I
+HSPLcom/android/server/appop/AppOpsService;->checkOperationForDevice(IILjava/lang/String;Ljava/lang/String;I)I
HSPLcom/android/server/appop/AppOpsService;->checkOperationImpl(IILjava/lang/String;Ljava/lang/String;IZ)I
-HSPLcom/android/server/appop/AppOpsService;->checkOperationRaw(IILjava/lang/String;Ljava/lang/String;)I
-HSPLcom/android/server/appop/AppOpsService;->checkOperationUnchecked(IILjava/lang/String;Ljava/lang/String;IZ)I+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;
+HSPLcom/android/server/appop/AppOpsService;->checkOperationRawForDevice(IILjava/lang/String;Ljava/lang/String;I)I
HSPLcom/android/server/appop/AppOpsService;->checkPackage(ILjava/lang/String;)I
-HSPLcom/android/server/appop/AppOpsService;->collectAsyncNotedOp(ILjava/lang/String;ILjava/lang/String;ILjava/lang/String;Z)V+]Landroid/os/RemoteCallbackList;Lcom/android/server/appop/AppOpsService$8;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/appop/AppOpsService;->collectAsyncNotedOp(ILjava/lang/String;ILjava/lang/String;ILjava/lang/String;ZI)V+]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList$Builder$1;,Lcom/android/server/appop/AppOpsService$8;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/appop/AppOpsService;->collectOps(Lcom/android/server/appop/AppOpsService$Ops;[ILjava/lang/String;)Ljava/util/ArrayList;+]Landroid/content/Context;Landroid/app/ContextImpl;
-HPLcom/android/server/appop/AppOpsService;->doForAllAttributedOpsInUidLocked(ILjava/util/function/Consumer;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/function/Consumer;Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda17;,Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda18;
+HPLcom/android/server/appop/AppOpsService;->doForAllAttributedOpsInUidLocked(ILjava/util/function/Consumer;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/function/Consumer;Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda17;,Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda18;,Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda19;
HSPLcom/android/server/appop/AppOpsService;->enforceManageAppOpsModes(III)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HSPLcom/android/server/appop/AppOpsService;->filterAppAccessUnlocked(Ljava/lang/String;I)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
HSPLcom/android/server/appop/AppOpsService;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;)V
HSPLcom/android/server/appop/AppOpsService;->finishOperationImpl(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;I)V
HSPLcom/android/server/appop/AppOpsService;->finishOperationUnchecked(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;I)V
-HSPLcom/android/server/appop/AppOpsService;->getAsyncNotedOpsKey(Ljava/lang/String;I)Landroid/util/Pair;
HSPLcom/android/server/appop/AppOpsService;->getBypassforPackage(Lcom/android/server/pm/pkg/PackageState;)Landroid/app/AppOpsManager$RestrictionBypass;+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/appop/AppOpsService;->getOpLocked(IILjava/lang/String;Ljava/lang/String;ZLandroid/app/AppOpsManager$RestrictionBypass;Z)Lcom/android/server/appop/AppOpsService$Op;
HSPLcom/android/server/appop/AppOpsService;->getOpLocked(Lcom/android/server/appop/AppOpsService$Ops;IIZ)Lcom/android/server/appop/AppOpsService$Op;
HSPLcom/android/server/appop/AppOpsService;->getOpsLocked(ILjava/lang/String;Ljava/lang/String;ZLandroid/app/AppOpsManager$RestrictionBypass;Z)Lcom/android/server/appop/AppOpsService$Ops;
HSPLcom/android/server/appop/AppOpsService;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
HSPLcom/android/server/appop/AppOpsService;->getPackagesForOpsForDevice([ILjava/lang/String;)Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/appop/AppOpsService;->getPersistentId(I)Ljava/lang/String;
+HSPLcom/android/server/appop/AppOpsService;->getPackagesForUid(I)[Ljava/lang/String;+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
+HSPLcom/android/server/appop/AppOpsService;->getPersistentId(I)Ljava/lang/String;+]Lcom/android/server/companion/virtual/VirtualDeviceManagerInternal;Lcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;
HSPLcom/android/server/appop/AppOpsService;->getUidStateLocked(IZ)Lcom/android/server/appop/AppOpsService$UidState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/appop/AppOpsService;->getUidStateTracker()Lcom/android/server/appop/AppOpsUidStateTracker;
HSPLcom/android/server/appop/AppOpsService;->isAttributionInPackage(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Z+]Lcom/android/internal/pm/pkg/component/ParsedAttribution;Lcom/android/internal/pm/pkg/component/ParsedAttributionImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
@@ -1213,11 +1283,12 @@ HSPLcom/android/server/appop/AppOpsService;->isOpRestrictedLocked(IILjava/lang/S
HSPLcom/android/server/appop/AppOpsService;->isSpecialPackage(ILjava/lang/String;)Z
HSPLcom/android/server/appop/AppOpsService;->isValidVirtualDeviceId(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/companion/virtual/VirtualDeviceManagerInternal;Lcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;
HSPLcom/android/server/appop/AppOpsService;->noteOperation(IILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp;
-HSPLcom/android/server/appop/AppOpsService;->noteOperationImpl(IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp;
-HSPLcom/android/server/appop/AppOpsService;->noteOperationUnchecked(IILjava/lang/String;Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;IIZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp;+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;
+HSPLcom/android/server/appop/AppOpsService;->noteOperationImpl(IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;ZI)Landroid/app/SyncNotedAppOp;
+HSPLcom/android/server/appop/AppOpsService;->noteOperationUnchecked(IILjava/lang/String;Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;IIZLjava/lang/String;ZI)Landroid/app/SyncNotedAppOp;+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;
+HPLcom/android/server/appop/AppOpsService;->noteProxyOperationImpl(ILandroid/content/AttributionSource;ZLjava/lang/String;ZZ)Landroid/app/SyncNotedAppOp;+]Landroid/content/Context;Landroid/app/ContextImpl;
HSPLcom/android/server/appop/AppOpsService;->notifyOpChanged(Lcom/android/server/appop/OnOpModeChangedListener;IILjava/lang/String;Ljava/lang/String;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/appop/OnOpModeChangedListener;Lcom/android/server/appop/AppOpsService$ModeCallback;
HSPLcom/android/server/appop/AppOpsService;->notifyOpChangedForAllPkgsInUid(IIZLjava/lang/String;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/app/IAppOpsCallback;Lcom/android/server/policy/PermissionPolicyService$2;]Lcom/android/server/appop/OnOpModeChangedListener;Lcom/android/server/appop/AppOpsService$ModeCallback;
-HPLcom/android/server/appop/AppOpsService;->notifyOpChecked(Landroid/util/ArraySet;IILjava/lang/String;Ljava/lang/String;III)V+]Lcom/android/internal/app/IAppOpsNotedCallback;Landroid/app/AppOpsManager$5;,Lcom/android/internal/app/IAppOpsNotedCallback$Stub$Proxy;
+HPLcom/android/server/appop/AppOpsService;->notifyOpChecked(Landroid/util/ArraySet;IILjava/lang/String;Ljava/lang/String;III)V+]Lcom/android/internal/app/IAppOpsNotedCallback;Landroid/app/AppOpsManager$6;,Lcom/android/internal/app/IAppOpsNotedCallback$Stub$Proxy;
HSPLcom/android/server/appop/AppOpsService;->onUidStateChanged(IIZ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;]Lcom/android/server/appop/OnOpModeChangedListener;Lcom/android/server/appop/AppOpsService$ModeCallback;
HSPLcom/android/server/appop/AppOpsService;->readAttributionOp(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/appop/AppOpsService$Op;Ljava/lang/String;)V+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;
HSPLcom/android/server/appop/AppOpsService;->readOp(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/appop/AppOpsService$UidState;Ljava/lang/String;)V+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;
@@ -1227,52 +1298,51 @@ HSPLcom/android/server/appop/AppOpsService;->scheduleOpActiveChangedIfNeededLock
HSPLcom/android/server/appop/AppOpsService;->scheduleOpNotedIfNeededLocked(IILjava/lang/String;Ljava/lang/String;III)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/appop/AppOpsService;->scheduleOpStartedIfNeededLocked(IILjava/lang/String;Ljava/lang/String;IIIIII)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/appop/AppOpsService;->scheduleWriteLocked()V
-HSPLcom/android/server/appop/AppOpsService;->setMode(IILjava/lang/String;ILcom/android/internal/app/IAppOpsCallback;)V+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;
HPLcom/android/server/appop/AppOpsService;->setUidMode(IIILcom/android/internal/app/IAppOpsCallback;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;
HSPLcom/android/server/appop/AppOpsService;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;ZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;
HSPLcom/android/server/appop/AppOpsService;->startOperationImpl(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
HSPLcom/android/server/appop/AppOpsService;->startOperationUnchecked(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;IIZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
+HSPLcom/android/server/appop/AppOpsService;->startWatchingModeWithFlags(ILjava/lang/String;ILcom/android/internal/app/IAppOpsCallback;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/app/IAppOpsCallback;Landroid/app/AppOpsManager$3;,Lcom/android/internal/app/IAppOpsCallback$Stub$Proxy;
HSPLcom/android/server/appop/AppOpsService;->switchPackageIfBootTimeOrRarelyUsedLocked(Ljava/lang/String;)V+]Ljava/util/concurrent/ThreadLocalRandom;Ljava/util/concurrent/ThreadLocalRandom;
HPLcom/android/server/appop/AppOpsService;->updatePermissionRevokedCompat(III)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/appop/AppOpsService;->updateUidProcState(III)V+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/appop/AppOpsUidStateTracker;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
+HSPLcom/android/server/appop/AppOpsService;->updateUidProcState(III)V+]Lcom/android/server/appop/AppOpsUidStateTracker;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
HSPLcom/android/server/appop/AppOpsService;->verifyAndGetBypass(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/appop/AppOpsService$PackageVerificationResult;
-HSPLcom/android/server/appop/AppOpsService;->verifyAndGetBypass(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lcom/android/server/appop/AppOpsService$PackageVerificationResult;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/compat/IPlatformCompat;Lcom/android/server/compat/PlatformCompat;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/appop/AppOpsService;->verifyAndGetBypass(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lcom/android/server/appop/AppOpsService$PackageVerificationResult;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/compat/IPlatformCompat;Lcom/android/server/compat/PlatformCompat;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/appop/AppOpsService;->verifyIncomingOp(I)V+]Landroid/content/Context;Landroid/app/ContextImpl;
HSPLcom/android/server/appop/AppOpsService;->verifyIncomingUid(I)V+]Landroid/content/Context;Landroid/app/ContextImpl;
HPLcom/android/server/appop/AppOpsService;->writeRecentAccesses()V+]Landroid/util/AtomicFile;Landroid/util/AtomicFile;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+]Lcom/android/server/appop/AppOpsUidStateTracker$UidStateChangedCallback;Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda12;
+HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+]Lcom/android/server/appop/AppOpsUidStateTracker$UidStateChangedCallback;Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda12;,Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda13;
HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1$$ExternalSyntheticLambda0;->run()V
HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;->execute(Ljava/lang/Runnable;)V
HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;->executeDelayed(Ljava/lang/Runnable;J)V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;
HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;
HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;
HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logCommitUidState(IIIZZ)V+]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$DelayableExecutor;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$1;
HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logCommitUidStateAsync(JIIIZZ)V
HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logEvalForegroundMode(IIIII)V+]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$DelayableExecutor;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$1;
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logEvalForegroundModeAsync(JIIIII)V
HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logUpdateUidProcState(III)V+]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$DelayableExecutor;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$1;
HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logUpdateUidProcStateAsync(JIII)V
HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->commitUidPendingState(I)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;]Ljava/util/concurrent/Executor;Landroid/os/HandlerExecutor;
HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->evalMode(III)I+]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;]Lcom/android/server/appop/AppOpsUidStateTrackerImpl;Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->evalModeInternal(IIII)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;
HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->getUidState(I)I
HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->getUidStateLocked(I)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->updateUidPendingStateIfNeededLocked(I)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;
HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->updateUidProcState(III)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$DelayableExecutor;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$1;]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;
HSPLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->reinit(JJLandroid/os/IBinder;Ljava/lang/String;ILjava/lang/Runnable;IILandroid/app/AppOpsManager$OpEventProxyInfo;IILandroid/util/Pools$Pool;)V+]Landroid/os/IBinder;Landroid/os/Binder;,Landroid/os/BinderProxy;]Landroid/util/Pools$Pool;Lcom/android/server/appop/AttributedOp$OpEventProxyInfoPool;
HSPLcom/android/server/appop/AttributedOp$InProgressStartOpEventPool;->acquire(JJLandroid/os/IBinder;Ljava/lang/String;ILjava/lang/Runnable;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIII)Lcom/android/server/appop/AttributedOp$InProgressStartOpEvent;+]Landroid/util/Pools$SimplePool;Lcom/android/server/appop/AttributedOp$InProgressStartOpEventPool;]Lcom/android/server/appop/AttributedOp$OpEventProxyInfoPool;Lcom/android/server/appop/AttributedOp$OpEventProxyInfoPool;
-HSPLcom/android/server/appop/AttributedOp;->accessed(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V
+HSPLcom/android/server/appop/AttributedOp;->accessed(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;III)V
HSPLcom/android/server/appop/AttributedOp;->accessed(JJILjava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/appop/AttributedOp$OpEventProxyInfoPool;Lcom/android/server/appop/AttributedOp$OpEventProxyInfoPool;
-HPLcom/android/server/appop/AttributedOp;->createAttributedOpEntryLocked()Landroid/app/AppOpsManager$AttributedOpEntry;+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
-HPLcom/android/server/appop/AttributedOp;->deepClone(Landroid/util/LongSparseArray;)Landroid/util/LongSparseArray;+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
+HSPLcom/android/server/appop/AttributedOp;->createAttributedOpEntryLocked()Landroid/app/AppOpsManager$AttributedOpEntry;+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
+HSPLcom/android/server/appop/AttributedOp;->deepClone(Landroid/util/LongSparseArray;)Landroid/util/LongSparseArray;+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
HSPLcom/android/server/appop/AttributedOp;->finishOrPause(Landroid/os/IBinder;ZZ)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/Pools$SimplePool;Lcom/android/server/appop/AttributedOp$InProgressStartOpEventPool;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;
-HSPLcom/android/server/appop/AttributedOp;->isRunning()Z
HSPLcom/android/server/appop/AttributedOp;->onUidStateChanged(I)V
HSPLcom/android/server/appop/AttributedOp;->rejected(II)V
HSPLcom/android/server/appop/AttributedOp;->rejected(JII)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
HSPLcom/android/server/appop/AttributedOp;->startedOrPaused(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIIZZ)V+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/appop/AttributedOp$InProgressStartOpEventPool;Lcom/android/server/appop/AttributedOp$InProgressStartOpEventPool;
-HSPLcom/android/server/appop/DiscreteRegistry;->isDiscreteOp(II)Z
-HSPLcom/android/server/appop/DiscreteRegistry;->recordDiscreteAccess(ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;IIJJIII)V
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->handlePersistHistoricalOpsRecursiveDLocked(Ljava/io/File;Ljava/io/File;Ljava/util/List;Ljava/util/Set;I)V+]Ljava/io/File;Ljava/io/File;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;,Ljava/util/LinkedList;]Ljava/util/Set;Landroid/util/ArraySet;,Ljava/util/Collections$EmptySet;
HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalAttributionOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;
HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlPullParser;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;
HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalPackageOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;
@@ -1286,8 +1356,8 @@ HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalPack
HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalUidOpsDLocked(Landroid/app/AppOpsManager$HistoricalUidOps;Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeStateOnLocked(Landroid/app/AppOpsManager$HistoricalOp;JLcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
HSPLcom/android/server/appop/HistoricalRegistry;->getUpdatedPendingHistoricalOpsMLocked(J)Landroid/app/AppOpsManager$HistoricalOps;
-HSPLcom/android/server/appop/HistoricalRegistry;->increaseOpAccessDuration(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIJJIII)V
-HSPLcom/android/server/appop/HistoricalRegistry;->incrementOpAccessedCount(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIJIII)V
+HSPLcom/android/server/appop/HistoricalRegistry;->increaseOpAccessDuration(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIJJIII)V+]Lcom/android/server/appop/DiscreteOpsRegistry;Lcom/android/server/appop/DiscreteOpsXmlRegistry;
+HSPLcom/android/server/appop/HistoricalRegistry;->incrementOpAccessedCount(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIJIIII)V+]Lcom/android/server/appop/DiscreteOpsRegistry;Lcom/android/server/appop/DiscreteOpsXmlRegistry;
HSPLcom/android/server/appop/HistoricalRegistry;->incrementOpRejected(IILjava/lang/String;Ljava/lang/String;II)V
HPLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;->equals(Ljava/lang/Object;)Z
HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getEnabledGroupProfileIds(I)[I+]Landroid/os/UserManager;Landroid/os/UserManager;
@@ -1299,22 +1369,27 @@ HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->getInstalledProvidersFor
HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->isBoundWidgetPackage(Ljava/lang/String;I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HPLcom/android/server/appwidget/AppWidgetServiceImpl;->isProfileWithLockedParent(I)Z+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;
HPLcom/android/server/appwidget/AppWidgetServiceImpl;->lookupProviderLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->parseAppWidgetProviderInfo(Landroid/content/Context;Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;Landroid/content/pm/ActivityInfo;Ljava/lang/String;)Landroid/appwidget/AppWidgetProviderInfo;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser;]Ljava/lang/CharSequence;Ljava/lang/String;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->serializeProvider(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;Z)V+]Landroid/util/IntArray;Landroid/util/IntArray;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;
HPLcom/android/server/appwidget/AppWidgetXmlUtil;->writeAppWidgetProviderInfoLocked(Lcom/android/modules/utils/TypedXmlSerializer;Landroid/appwidget/AppWidgetProviderInfo;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
-HSPLcom/android/server/audio/AudioService$VolumeStreamState$1;->record(Ljava/lang/String;II)V+]Landroid/media/MediaMetrics$Item;Landroid/media/MediaMetrics$Item;
HSPLcom/android/server/audio/AudioService$VolumeStreamState;->observeDevicesForStream_syncVSS(Z)Ljava/util/Set;+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService;]Lcom/android/server/audio/SystemServerAdapter;Lcom/android/server/audio/SystemServerAdapter;]Ljava/util/Set;Ljava/util/TreeSet;
HSPLcom/android/server/audio/AudioService;->getDeviceSetForStream(I)Ljava/util/Set;+]Lcom/android/server/audio/AudioService$VolumeStreamState;Lcom/android/server/audio/AudioService$VolumeStreamState;]Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService;
+HSPLcom/android/server/audio/AudioService;->getVssForStreamOrDefault(I)Lcom/android/server/audio/AudioService$VolumeStreamState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/audio/AudioService;->selectOneAudioDevice(Ljava/util/Set;)I+]Ljava/util/Iterator;Ljava/util/TreeMap$KeyIterator;]Ljava/util/Set;Ljava/util/TreeSet;
HSPLcom/android/server/audio/AudioSystemAdapter;->getDevicesForAttributesImpl(Landroid/media/AudioAttributes;Z)Ljava/util/ArrayList;+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
HSPLcom/android/server/autofill/AutofillManagerService$LocalService;->getAutofillOptions(Ljava/lang/String;JI)Landroid/content/AutofillOptions;
HSPLcom/android/server/autofill/AutofillManagerService$LocalService;->injectDisableAppInfo(Landroid/content/AutofillOptions;ILjava/lang/String;)V
+HSPLcom/android/server/backup/BackupManagerService;->binderGetCallingUserId()I
HPLcom/android/server/backup/BackupManagerService;->getServiceForUserIfCallerHasPermission(ILjava/lang/String;)Lcom/android/server/backup/UserBackupManagerService;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/backup/BackupManagerService;Lcom/android/server/backup/BackupManagerService;
HSPLcom/android/server/backup/BackupManagerService;->isUserReadyForBackup(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/backup/BackupManagerService;Lcom/android/server/backup/BackupManagerService;
+HPLcom/android/server/backup/TransportManager;->getRegisteredTransportEntryLocked(Ljava/lang/String;)Ljava/util/Map$Entry;+]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;
HPLcom/android/server/backup/TransportManager;->updateTransportAttributes(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V+]Ljava/util/Map;Landroid/util/ArrayMap;
HPLcom/android/server/backup/UserBackupManagerService;->isAppEligibleForBackup(Ljava/lang/String;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/backup/TransportManager;Lcom/android/server/backup/TransportManager;]Lcom/android/server/backup/utils/BackupEligibilityRules;Lcom/android/server/backup/utils/BackupEligibilityRules;
HPLcom/android/server/backup/UserBackupManagerService;->updateTransportAttributes(ILandroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/backup/TransportManager;Lcom/android/server/backup/TransportManager;
HPLcom/android/server/backup/transport/TransportConnection;-><init>(ILandroid/content/Context;Lcom/android/server/backup/transport/TransportStats;Landroid/content/Intent;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Landroid/os/Handler;)V
HPLcom/android/server/backup/transport/TransportConnection;->checkStateIntegrityLocked()V+]Ljava/util/Map;Landroid/util/ArrayMap;
HPLcom/android/server/backup/transport/TransportConnection;->connect(Ljava/lang/String;)Lcom/android/server/backup/transport/BackupTransportClient;+]Lcom/android/server/backup/transport/TransportConnection;Lcom/android/server/backup/transport/TransportConnection;]Lcom/android/server/backup/transport/TransportStats;Lcom/android/server/backup/transport/TransportStats;
+HPLcom/android/server/backup/transport/TransportConnection;->connectAsync(Lcom/android/server/backup/transport/TransportConnectionListener;Ljava/lang/String;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/util/Map;Landroid/util/ArrayMap;
HPLcom/android/server/backup/transport/TransportConnection;->saveLogEntry(Ljava/lang/String;)V+]Ljava/util/List;Ljava/util/LinkedList;
HPLcom/android/server/backup/transport/TransportConnection;->setStateLocked(ILcom/android/server/backup/transport/BackupTransportClient;)V
HPLcom/android/server/backup/transport/TransportConnection;->toString()Ljava/lang/String;
@@ -1322,40 +1397,43 @@ HPLcom/android/server/backup/transport/TransportConnection;->unbind(Ljava/lang/S
HPLcom/android/server/backup/transport/TransportConnectionManager;->disposeOfTransportClient(Lcom/android/server/backup/transport/TransportConnection;Ljava/lang/String;)V+]Lcom/android/server/backup/transport/TransportConnection;Lcom/android/server/backup/transport/TransportConnection;]Ljava/util/Map;Ljava/util/WeakHashMap;
HPLcom/android/server/backup/transport/TransportConnectionManager;->getTransportClient(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;)Lcom/android/server/backup/transport/TransportConnection;+]Ljava/util/Map;Ljava/util/WeakHashMap;
HPLcom/android/server/backup/transport/TransportUtils;->formatMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/backup/utils/SparseArrayUtils;->union(Landroid/util/SparseArray;)Ljava/util/HashSet;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/biometrics/sensors/BiometricServiceRegistry;->getProviderForSensor(I)Lcom/android/server/biometrics/sensors/BiometricServiceProvider;+]Lcom/android/server/biometrics/sensors/BiometricServiceProvider;Lcom/android/server/biometrics/sensors/face/aidl/FaceProvider;,Lcom/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
HPLcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter;->augmentStatsForPackageForUser(Landroid/content/pm/PackageStats;Ljava/lang/String;Landroid/os/UserHandle;Z)V
HPLcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter;->augmentStatsForUid(Landroid/content/pm/PackageStats;IZ)V
HPLcom/android/server/blob/BlobStoreManagerService;->forEachBlobLocked(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;megamorphic_types
HPLcom/android/server/blob/BlobStoreManagerService;->forEachSessionInUser(Ljava/util/function/Consumer;I)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Ljava/util/function/Consumer;Lcom/android/server/blob/BlobStoreManagerService$$ExternalSyntheticLambda16;,Lcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter$$ExternalSyntheticLambda0;,Lcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter$$ExternalSyntheticLambda2;,Lcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter$$ExternalSyntheticLambda4;
HPLcom/android/server/blob/BlobStoreManagerService;->getUserSessionsLocked(I)Landroid/util/LongSparseArray;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;->getDeviceIdsForUid(I)Landroid/util/ArraySet;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/companion/virtual/VirtualDeviceManagerService;->getVirtualDevicesSnapshot()Ljava/util/ArrayList;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/compat/CompatChange;->isEnabled(Landroid/content/pm/ApplicationInfo;Lcom/android/internal/compat/AndroidBuildClassifier;)Z+]Lcom/android/internal/compat/AndroidBuildClassifier;Lcom/android/internal/compat/AndroidBuildClassifier;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
+HPLcom/android/server/compat/CompatChange;->recheckOverride(Ljava/lang/String;Lcom/android/internal/compat/OverrideAllowedState;Ljava/lang/Long;)Z+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
HSPLcom/android/server/compat/CompatConfig;->getDisabledChanges(Landroid/content/pm/ApplicationInfo;)[J+]Ljava/util/Collection;Ljava/util/concurrent/ConcurrentHashMap$ValuesView;]Ljava/util/Iterator;Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
HSPLcom/android/server/compat/CompatConfig;->getLoggableChanges(Landroid/content/pm/ApplicationInfo;)[J+]Ljava/util/Collection;Ljava/util/concurrent/ConcurrentHashMap$ValuesView;]Ljava/util/Iterator;Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
HSPLcom/android/server/compat/CompatConfig;->isChangeEnabled(JLandroid/content/pm/ApplicationInfo;)Z+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
HSPLcom/android/server/compat/CompatConfig;->isChangeTargetingLatestSdk(Lcom/android/server/compat/CompatChange;I)Z
HPLcom/android/server/compat/CompatConfig;->isLoggingOnly(J)Z+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
+HPLcom/android/server/compat/CompatConfig;->maxTargetSdkForChangeIdOptIn(J)I+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
HSPLcom/android/server/compat/CompatConfig;->maxTargetSdkForCompatChange(Lcom/android/server/compat/CompatChange;)I
HPLcom/android/server/compat/OverrideValidatorImpl;->getOverrideAllowedStateInternal(JLjava/lang/String;Z)Lcom/android/internal/compat/OverrideAllowedState;+]Lcom/android/internal/compat/AndroidBuildClassifier;Lcom/android/internal/compat/AndroidBuildClassifier;
+HSPLcom/android/server/compat/PlatformCompat;->fixTargetSdk(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo;+]Lcom/android/internal/compat/AndroidBuildClassifier;Lcom/android/internal/compat/AndroidBuildClassifier;
HSPLcom/android/server/compat/PlatformCompat;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabled(JLandroid/content/pm/ApplicationInfo;)Z+]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;
HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByPackageName(JLjava/lang/String;I)Z+]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;
HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByUid(JI)Z+]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;
HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByUidInternal(JI)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;
HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByUidInternalNoLogging(JI)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;
HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledInternal(JLandroid/content/pm/ApplicationInfo;)Z+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/internal/compat/ChangeReporter;Lcom/android/internal/compat/ChangeReporter;
HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledInternalNoLogging(JLandroid/content/pm/ApplicationInfo;)Z
-HSPLcom/android/server/compat/config/Change;->read(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/compat/config/Change;
HPLcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback;->getNetworkCapabilities(I)Landroid/net/NetworkCapabilities;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HPLcom/android/server/connectivity/NetdEventListenerService;->collectPendingMetricsSnapshot(JZ)V+]Lcom/android/internal/util/RingBuffer;Lcom/android/internal/util/RingBuffer;]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/connectivity/NetdEventListenerService;->getMetricsForNetwork(JI)Landroid/net/metrics/NetworkMetrics;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback;Lcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback;
HPLcom/android/server/connectivity/NetdEventListenerService;->onConnectEvent(IIILjava/lang/String;II)V+]Landroid/net/INetdEventCallback;Lcom/android/server/devicepolicy/NetworkLogger$1;,Lcom/android/server/net/watchlist/NetworkWatchlistService$1;]Landroid/net/metrics/NetworkMetrics;Landroid/net/metrics/NetworkMetrics;
HPLcom/android/server/connectivity/NetdEventListenerService;->onDnsEvent(IIIILjava/lang/String;[Ljava/lang/String;II)V+]Landroid/net/INetdEventCallback;Lcom/android/server/devicepolicy/NetworkLogger$1;,Lcom/android/server/net/watchlist/NetworkWatchlistService$1;]Landroid/net/metrics/NetworkMetrics;Landroid/net/metrics/NetworkMetrics;
-HPLcom/android/server/connectivity/NetdEventListenerService;->onWakeupEvent(Ljava/lang/String;III[BLjava/lang/String;Ljava/lang/String;IIJ)V+]Landroid/os/BatteryStatsInternal;Lcom/android/server/am/BatteryStatsService$LocalService;
HSPLcom/android/server/content/ContentService$ObserverCollector$Key;->hashCode()I
+HSPLcom/android/server/content/ContentService$ObserverCollector;->$r8$lambda$Enmwrm6HznBNY378PKC1kmqC6_o(Lcom/android/server/content/ContentService$ObserverCollector$Key;Ljava/util/List;)V+]Landroid/database/IContentObserver;Landroid/database/ContentObserver$Transport;,Landroid/database/IContentObserver$Stub$Proxy;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/content/ContentService$ObserverCollector;-><init>()V
HSPLcom/android/server/content/ContentService$ObserverCollector;->collect(Landroid/database/IContentObserver;IZLandroid/net/Uri;II)V+]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/content/ContentService$ObserverCollector;->dispatch()V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;
-HSPLcom/android/server/content/ContentService$ObserverCollector;->lambda$dispatch$0(Lcom/android/server/content/ContentService$ObserverCollector$Key;Ljava/util/List;)V+]Landroid/database/IContentObserver;Landroid/database/ContentObserver$Transport;,Landroid/database/IContentObserver$Stub$Proxy;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;-><init>(Lcom/android/server/content/ContentService$ObserverNode;Landroid/database/IContentObserver;ZLjava/lang/Object;IIILandroid/net/Uri;)V+]Lcom/android/internal/os/BinderDeathDispatcher;Lcom/android/internal/os/BinderDeathDispatcher;
HSPLcom/android/server/content/ContentService$ObserverNode;-><init>(Ljava/lang/String;)V
HSPLcom/android/server/content/ContentService$ObserverNode;->addObserverLocked(Landroid/net/Uri;ILandroid/database/IContentObserver;ZLjava/lang/Object;III)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
@@ -1369,36 +1447,34 @@ HPLcom/android/server/content/ContentService;->getSyncAdapterPackageAsUser(Ljava
HSPLcom/android/server/content/ContentService;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String;+]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;
HPLcom/android/server/content/ContentService;->getSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;I)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;
HSPLcom/android/server/content/ContentService;->getSyncExemptionAndCleanUpExtrasForCaller(ILandroid/os/Bundle;)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;
+HSPLcom/android/server/content/ContentService;->getSyncExemptionForCaller(I)I
HSPLcom/android/server/content/ContentService;->getSyncManager()Lcom/android/server/content/SyncManager;
HSPLcom/android/server/content/ContentService;->handleIncomingUser(Landroid/net/Uri;IIIZI)I+]Landroid/content/Context;Landroid/app/ContextImpl;
HSPLcom/android/server/content/ContentService;->invalidateCacheLocked(ILjava/lang/String;Landroid/net/Uri;)V+]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/content/ContentService;->notifyChange([Landroid/net/Uri;Landroid/database/IContentObserver;ZIIILjava/lang/String;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;
HSPLcom/android/server/content/ContentService;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/IContentObserver;II)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;
HSPLcom/android/server/content/ContentService;->unregisterContentObserver(Landroid/database/IContentObserver;)V
-HPLcom/android/server/content/SyncJobService;->onStartJob(Landroid/app/job/JobParameters;)Z
-HSPLcom/android/server/content/SyncLogger$RotatingFileLogger$MyHandler;->log(J[Ljava/lang/Object;)V
-HSPLcom/android/server/content/SyncLogger$RotatingFileLogger;->logInner(J[Ljava/lang/Object;)V+]Ljava/io/Writer;Ljava/io/FileWriter;]Ljava/util/Date;Ljava/util/Date;
-HSPLcom/android/server/content/SyncLogger$RotatingFileLogger;->openLogLocked(J)V+]Ljava/io/File;Ljava/io/File;]Ljava/util/Date;Ljava/util/Date;
-HPLcom/android/server/content/SyncManager$SyncHandler;->handleSyncMessage(Landroid/os/Message;)V+]Landroid/content/ISyncAdapter;Landroid/content/ISyncAdapter$Stub$Proxy;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger$RotatingFileLogger;]Lcom/android/server/content/SyncManager$SyncTimeTracker;Lcom/android/server/content/SyncManager$SyncTimeTracker;
-HPLcom/android/server/content/SyncManager$SyncHandler;->runBoundToAdapterH(Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/os/IBinder;)V
-HPLcom/android/server/content/SyncManager$SyncHandler;->runSyncFinishedOrCanceledH(Landroid/content/SyncResult;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->dispatchSyncOperation(Lcom/android/server/content/SyncOperation;)Z+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/SyncAdaptersCache;Landroid/content/SyncAdaptersCache;]Lcom/android/server/content/SyncManager$SyncHandler;Lcom/android/server/content/SyncManager$SyncHandler;]Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/content/SyncManager$SyncHandler;->handleSyncMessage(Landroid/os/Message;)V+]Landroid/content/ISyncAdapter;Landroid/content/ISyncAdapter$Stub$Proxy;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger;]Lcom/android/server/content/SyncManager$SyncTimeTracker;Lcom/android/server/content/SyncManager$SyncTimeTracker;
+HPLcom/android/server/content/SyncManager$SyncHandler;->runSyncFinishedOrCanceledH(Landroid/content/SyncResult;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V+]Landroid/accounts/Account;Landroid/accounts/Account;]Landroid/app/NotificationManager;Landroid/app/NotificationManager;]Landroid/content/ISyncAdapter;Landroid/content/ISyncAdapter$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger;]Lcom/android/server/content/SyncManager$SyncHandler;Lcom/android/server/content/SyncManager$SyncHandler;]Lcom/android/server/content/SyncManagerConstants;Lcom/android/server/content/SyncManagerConstants;]Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;
HPLcom/android/server/content/SyncManager;->computeSyncable(Landroid/accounts/Account;ILjava/lang/String;ZZ)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/SyncAdaptersCache;Landroid/content/SyncAdaptersCache;
HPLcom/android/server/content/SyncManager;->getAllPendingSyncs()Ljava/util/List;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/app/job/JobScheduler;Landroid/app/JobSchedulerImpl;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/content/SyncManager;->getIsSyncable(Landroid/accounts/Account;ILjava/lang/String;)I+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;
HPLcom/android/server/content/SyncManager;->getSyncAdapterPackageAsUser(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;+]Landroid/content/SyncAdapterType;Landroid/content/SyncAdapterType;]Landroid/content/SyncAdaptersCache;Landroid/content/SyncAdaptersCache;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
HSPLcom/android/server/content/SyncManager;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;II)[Ljava/lang/String;+]Landroid/content/SyncAdaptersCache;Landroid/content/SyncAdaptersCache;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
HSPLcom/android/server/content/SyncManager;->scheduleLocalSync(Landroid/accounts/Account;IILjava/lang/String;IIILjava/lang/String;)V
-HSPLcom/android/server/content/SyncManager;->scheduleSync(Landroid/accounts/Account;IILjava/lang/String;Landroid/os/Bundle;IJZIIILjava/lang/String;)V+]Landroid/content/SyncAdapterType;Landroid/content/SyncAdapterType;]Landroid/content/SyncAdaptersCache;Landroid/content/SyncAdaptersCache;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger$RotatingFileLogger;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;,Ljava/util/HashMap$KeyIterator;
+HSPLcom/android/server/content/SyncManager;->scheduleSync(Landroid/accounts/Account;IILjava/lang/String;Landroid/os/Bundle;IJZIIILjava/lang/String;)V+]Landroid/content/SyncAdapterType;Landroid/content/SyncAdapterType;]Landroid/content/SyncAdaptersCache;Landroid/content/SyncAdaptersCache;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;,Ljava/util/HashMap$KeyIterator;
HPLcom/android/server/content/SyncManager;->scheduleSyncOperationH(Lcom/android/server/content/SyncOperation;J)V+]Landroid/app/job/JobScheduler;Landroid/app/JobSchedulerImpl;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Lcom/android/server/content/SyncManagerConstants;Lcom/android/server/content/SyncManagerConstants;]Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/content/SyncOperation;-><init>(Lcom/android/server/content/SyncStorageEngine$EndPoint;ILjava/lang/String;IILandroid/os/Bundle;ZZIJJI)V
-HPLcom/android/server/content/SyncOperation;->dump(Landroid/content/pm/PackageManager;ZLcom/android/server/content/SyncAdapterStateFetcher;Z)Ljava/lang/String;+]Lcom/android/server/content/SyncAdapterStateFetcher;Lcom/android/server/content/SyncAdapterStateFetcher;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
HPLcom/android/server/content/SyncOperation;->extrasToStringBuilder(Landroid/os/Bundle;Ljava/lang/StringBuilder;)V+]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
HPLcom/android/server/content/SyncOperation;->maybeCreateFromJobExtras(Landroid/os/PersistableBundle;)Lcom/android/server/content/SyncOperation;+]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
HPLcom/android/server/content/SyncOperation;->toJobInfoExtras()Landroid/os/PersistableBundle;+]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
HPLcom/android/server/content/SyncOperation;->toKey()Ljava/lang/String;
+HPLcom/android/server/content/SyncOperation;->wakeLockName()Ljava/lang/String;
HSPLcom/android/server/content/SyncStorageEngine$EndPoint;-><init>(Landroid/accounts/Account;Ljava/lang/String;I)V
HPLcom/android/server/content/SyncStorageEngine;->getAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;+]Ljava/util/HashMap;Ljava/util/HashMap;
HSPLcom/android/server/content/SyncStorageEngine;->getOrCreateAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;IZ)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;+]Ljava/util/HashMap;Ljava/util/HashMap;
-HPLcom/android/server/content/SyncStorageEngine;->insertStartSyncEvent(Lcom/android/server/content/SyncOperation;J)J
+HPLcom/android/server/content/SyncStorageEngine;->insertStartSyncEvent(Lcom/android/server/content/SyncOperation;J)J+]Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/content/SyncStorageEngine;->reportChange(ILjava/lang/String;I)V+]Landroid/content/ISyncStatusObserver;Landroid/content/ISyncStatusObserver$Stub$Proxy;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;
HPLcom/android/server/content/SyncStorageEngine;->stopSyncEvent(JJLjava/lang/String;JJLjava/lang/String;I)V+]Landroid/content/SyncStatusInfo;Landroid/content/SyncStatusInfo;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/content/SyncStorageEngine;->writeStatusInfoLocked(Ljava/io/OutputStream;)V+]Landroid/content/SyncStatusInfo;Landroid/content/SyncStatusInfo;]Landroid/util/SparseArray;Landroid/util/SparseArray;
@@ -1406,111 +1482,73 @@ HSPLcom/android/server/contentcapture/ContentCaptureManagerService$ContentCaptur
HSPLcom/android/server/contentcapture/ContentCaptureManagerService$GlobalContentCaptureOptions;->getOptions(ILjava/lang/String;)Landroid/content/ContentCaptureOptions;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/contentcapture/ContentCaptureManagerService$GlobalContentCaptureOptions;->isContentProtectionReceiverEnabled(ILjava/lang/String;)Z+]Lcom/android/server/contentprotection/ContentProtectionAllowlistManager;Lcom/android/server/contentprotection/ContentProtectionAllowlistManager;]Lcom/android/server/contentprotection/ContentProtectionConsentManager;Lcom/android/server/contentprotection/ContentProtectionConsentManager;
HSPLcom/android/server/contentcapture/ContentCaptureManagerService;->isContentProtectionEnabledLocked()Z+]Ljava/util/List;Ljava/util/ImmutableCollections$ListN;
+HSPLcom/android/server/cpu/CpuInfoReader$CpuInfo;-><init>(IIZJJJLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;)V
HSPLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;-><init>(JJJJJJJJJJ)V
HPLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;->delta(Lcom/android/server/cpu/CpuInfoReader$CpuUsageStats;)Lcom/android/server/cpu/CpuInfoReader$CpuUsageStats;
+HSPLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;->getTotalTimeMillis()J
+HSPLcom/android/server/cpu/CpuInfoReader;->calculateAvgCpuFreq(Landroid/util/LongSparseLongArray;)J+]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;
HSPLcom/android/server/cpu/CpuInfoReader;->readCpuCores(Ljava/io/File;)Landroid/util/IntArray;+]Ljava/io/File;Ljava/io/File;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/cpu/CpuInfoReader;->readCpuFreqKHz(Ljava/io/File;)J+]Ljava/io/File;Ljava/io/File;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/cpu/CpuInfoReader;->readCpuInfos()Landroid/util/SparseArray;+]Landroid/util/IntArray;Landroid/util/IntArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HSPLcom/android/server/cpu/CpuInfoReader;->readCumulativeCpuUsageStats()Landroid/util/SparseArray;+]Ljava/io/File;Ljava/io/File;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/cpu/CpuInfoReader;->readDynamicPolicyInfo()Landroid/util/SparseArray;+]Landroid/util/IntArray;Landroid/util/IntArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/cpu/CpuInfoReader;->readTimeInState(Ljava/io/File;)Landroid/util/LongSparseLongArray;+]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/cpu/CpuMonitorService$CpusetInfo;->populateLatestCpuAvailabilityInfo(JJ)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
HSPLcom/android/server/cpu/CpuMonitorService;->monitorCpuStats()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HPLcom/android/server/devicepolicy/ActiveAdmin;->getUid()I
HSPLcom/android/server/devicepolicy/ActiveAdmin;->getUserHandle()Landroid/os/UserHandle;
-HPLcom/android/server/devicepolicy/ActiveAdmin;->writeToXml(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/devicepolicy/ActiveAdmin;Lcom/android/server/devicepolicy/ActiveAdmin;]Ljava/lang/CharSequence;Ljava/lang/String;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Set;Landroid/util/ArraySet;
+HSPLcom/android/server/devicepolicy/ActiveAdmin;->writeToXml(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/devicepolicy/ActiveAdmin;Lcom/android/server/devicepolicy/ActiveAdmin;]Ljava/lang/CharSequence;Ljava/lang/String;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Set;Landroid/util/ArraySet;
HSPLcom/android/server/devicepolicy/CallerIdentity;-><init>(ILjava/lang/String;Landroid/content/ComponentName;)V
HSPLcom/android/server/devicepolicy/CallerIdentity;->getUserId()I
-HPLcom/android/server/devicepolicy/CallerIdentity;->toString()Ljava/lang/String;
-HPLcom/android/server/devicepolicy/DevicePolicyData;->store(Lcom/android/server/devicepolicy/DevicePolicyData;Lcom/android/internal/util/JournaledFile;)Z+]Lcom/android/internal/util/JournaledFile;Lcom/android/internal/util/JournaledFile;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/devicepolicy/ActiveAdmin;Lcom/android/server/devicepolicy/ActiveAdmin;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Set;Landroid/util/ArraySet;
-HPLcom/android/server/devicepolicy/DevicePolicyEngine$DevicePoliciesReaderWriter;->writeEnforcingAdminSizeInner(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;]Ljava/util/Set;Ljava/util/HashMap$KeySet;
-HPLcom/android/server/devicepolicy/DevicePolicyEngine$DevicePoliciesReaderWriter;->writeLocalPoliciesInner(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/app/admin/PolicyKey;Landroid/app/admin/NoArgsPolicyKey;,Landroid/app/admin/PackagePolicyKey;,Landroid/app/admin/UserRestrictionPolicyKey;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
-HPLcom/android/server/devicepolicy/DevicePolicyEngine;->getDevicePolicyState()Landroid/app/admin/DevicePolicyState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Set;Ljava/util/HashMap$KeySet;
-HPLcom/android/server/devicepolicy/DevicePolicyEngine;->getLocalPolicyStateLocked(Lcom/android/server/devicepolicy/PolicyDefinition;I)Lcom/android/server/devicepolicy/PolicyState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Map;Ljava/util/HashMap;
-HSPLcom/android/server/devicepolicy/DevicePolicyEngine;->hasLocalPolicyLocked(Lcom/android/server/devicepolicy/PolicyDefinition;I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Map;Ljava/util/HashMap;
-HPLcom/android/server/devicepolicy/DevicePolicyEngine;->lambda$forceEnforcementRefreshLocked$0(Lcom/android/server/devicepolicy/PolicyDefinition;)V+]Landroid/os/UserManager;Landroid/os/UserManager;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda203;->runOrThrow()V
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda40;->getOrThrow()Ljava/lang/Object;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda6;->getOrThrow()Ljava/lang/Object;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda70;->getOrThrow()Ljava/lang/Object;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda81;->getOrThrow()Ljava/lang/Object;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda84;->getOrThrow()Ljava/lang/Object;
+HSPLcom/android/server/devicepolicy/DevicePolicyEngine$DevicePoliciesReaderWriter;->writeLocalPoliciesInner(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/app/admin/PolicyKey;Landroid/app/admin/NoArgsPolicyKey;,Landroid/app/admin/PackagePolicyKey;,Landroid/app/admin/UserRestrictionPolicyKey;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda37;->getOrThrow()Ljava/lang/Object;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderClearCallingIdentity()J
HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderGetCallingUid()I
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderRestoreCallingIdentity(J)V
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getAppOpsManager()Landroid/app/AppOpsManager;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getPackageManager()Landroid/content/pm/PackageManager;+]Landroid/content/Context;Landroid/app/ContextImpl;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getPackageManagerLocal()Lcom/android/server/pm/PackageManagerLocal;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getPackageManagerLocal()Lcom/android/server/pm/PackageManagerLocal;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isActiveProfileOwner(I)Z+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureLocked()V
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminUncheckedLocked(Landroid/content/ComponentName;I)Lcom/android/server/devicepolicy/ActiveAdmin;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminUncheckedLocked(Landroid/content/ComponentName;I)Lcom/android/server/devicepolicy/ActiveAdmin;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdmins(I)Ljava/util/List;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminsForLockscreenPoliciesLocked(I)Ljava/util/List;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminsForUserAndItsManagedProfilesLocked(ILjava/util/function/Predicate;)Ljava/util/List;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;
HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getBindDeviceAdminTargetUsers(Landroid/content/ComponentName;)Ljava/util/List;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCallerIdentity(Landroid/content/ComponentName;Ljava/lang/String;)Lcom/android/server/devicepolicy/CallerIdentity;+]Lcom/android/server/devicepolicy/ActiveAdmin;Lcom/android/server/devicepolicy/ActiveAdmin;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDelegatedScopes(Landroid/content/ComponentName;Ljava/lang/String;)Ljava/util/List;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerAdminLocked()Lcom/android/server/devicepolicy/ActiveAdmin;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerComponent(Z)Landroid/content/ComponentName;+]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;
HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerComponentOnUser(I)Landroid/content/ComponentName;+]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;
HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;IZ)I+]Lcom/android/server/devicepolicy/ActiveAdmin;Lcom/android/server/devicepolicy/ActiveAdmin;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getLockObject()Ljava/lang/Object;+]Lcom/android/internal/util/StatLogger;Lcom/android/internal/util/StatLogger;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPackageInfoWithNullCheck(Ljava/lang/String;Lcom/android/server/devicepolicy/CallerIdentity;)Landroid/content/pm/ApplicationInfo;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;
HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPermissionGrantState(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPermissionGrantStateForUser(Ljava/lang/String;Ljava/lang/String;Lcom/android/server/devicepolicy/CallerIdentity;I)I+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerAsUser(I)Landroid/content/ComponentName;+]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;
HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileParentId(I)I
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getTargetSdk(Ljava/lang/String;I)I+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserData(I)Lcom/android/server/devicepolicy/DevicePolicyData;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserDataUnchecked(I)Lcom/android/server/devicepolicy/DevicePolicyData;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo;
HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasCrossUsersPermission(Lcom/android/server/devicepolicy/CallerIdentity;I)Z
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isAdminActive(Landroid/content/ComponentName;I)Z+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCallingFromPackage(Ljava/lang/String;I)Z+]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCallingFromPackage(Ljava/lang/String;I)Z+]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDefaultDeviceOwner(Lcom/android/server/devicepolicy/CallerIdentity;)Z+]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;
HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDeviceOwnerLocked(Lcom/android/server/devicepolicy/CallerIdentity;)Z+]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isFinancedDeviceOwner(Lcom/android/server/devicepolicy/CallerIdentity;)Z+]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isManagedProfile(I)Z+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;
HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isPackageSuspended(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)Z+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isPermissionCheckFlagEnabled()Z
HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isProfileOwner(Lcom/android/server/devicepolicy/CallerIdentity;)Z
HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSeparateProfileChallengeEnabled(I)Z
HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isUninstallBlocked(Ljava/lang/String;)Z+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->logUserRestrictionCall(Ljava/lang/String;ZZLcom/android/server/devicepolicy/CallerIdentity;I)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getActiveAdminsForUserAndItsManagedProfilesLocked$21(ILjava/util/ArrayList;Ljava/util/function/Predicate;)V+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;]Lcom/android/server/devicepolicy/ActiveAdmin;Lcom/android/server/devicepolicy/ActiveAdmin;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/function/Predicate;Lcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda114;,Lcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda116;
HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->packageHasActiveAdmins(Ljava/lang/String;I)Z+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setApplicationExemptions(Ljava/lang/String;Ljava/lang/String;[I)V+]Landroid/app/admin/DevicePolicyEventLogger;Landroid/app/admin/DevicePolicyEventLogger;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setUserRestriction(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;ZZ)V+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
-HSPLcom/android/server/devicepolicy/DeviceStateCacheImpl;->isUserOrganizationManaged(I)Z+]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;
-HSPLcom/android/server/devicepolicy/EnforcingAdmin;-><init>(Ljava/lang/String;Landroid/content/ComponentName;Ljava/util/Set;ILcom/android/server/devicepolicy/ActiveAdmin;)V
-HPLcom/android/server/devicepolicy/EnforcingAdmin;->equals(Ljava/lang/Object;)Z
-HSPLcom/android/server/devicepolicy/EnforcingAdmin;->hashCode()I
-HPLcom/android/server/devicepolicy/EnforcingAdmin;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
-HSPLcom/android/server/devicepolicy/Owners;->getDeviceOwnerComponent()Landroid/content/ComponentName;
+HSPLcom/android/server/devicepolicy/EnforcingAdmin;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
HSPLcom/android/server/devicepolicy/Owners;->getDeviceOwnerUserId()I
HSPLcom/android/server/devicepolicy/Owners;->getProfileOwnerComponent(I)Landroid/content/ComponentName;
HSPLcom/android/server/devicepolicy/Owners;->hasDeviceOwner()Z
-HSPLcom/android/server/devicepolicy/PolicyDefinition$$ExternalSyntheticLambda18;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/devicepolicy/PolicyEnforcerCallbacks;->lambda$setUserRestriction$7(Landroid/app/admin/PolicyKey;ILjava/lang/Boolean;)Ljava/lang/Boolean;+]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;
-HPLcom/android/server/devicepolicy/PolicyState;->getParcelablePolicyState()Landroid/app/admin/PolicyState;+]Lcom/android/server/devicepolicy/ResolutionMechanism;Lcom/android/server/devicepolicy/MostRecent;,Lcom/android/server/devicepolicy/MostRestrictive;,Lcom/android/server/devicepolicy/PackageSetUnion;,Lcom/android/server/devicepolicy/TopPriority;]Ljava/util/Iterator;Ljava/util/LinkedHashMap$LinkedKeyIterator;]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Ljava/util/Set;Ljava/util/LinkedHashMap$LinkedKeySet;
-HPLcom/android/server/devicepolicy/PolicyState;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/app/admin/PolicyValue;Landroid/app/admin/BooleanPolicyValue;,Landroid/app/admin/LockTaskPolicy;,Landroid/app/admin/PackageSetPolicyValue;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/Iterator;Ljava/util/LinkedHashMap$LinkedKeyIterator;]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Ljava/util/Set;Ljava/util/LinkedHashMap$LinkedKeySet;
-HSPLcom/android/server/display/AmbientBrightnessStatsTracker$$ExternalSyntheticLambda0;->elapsedTimeMillis()J
-HSPLcom/android/server/display/AmbientBrightnessStatsTracker;->add(IF)V+]Lcom/android/server/display/AmbientBrightnessStatsTracker$AmbientBrightnessStats;Lcom/android/server/display/AmbientBrightnessStatsTracker$AmbientBrightnessStats;]Lcom/android/server/display/AmbientBrightnessStatsTracker$Injector;Lcom/android/server/display/AmbientBrightnessStatsTracker$Injector;]Lcom/android/server/display/AmbientBrightnessStatsTracker$Timer;Lcom/android/server/display/AmbientBrightnessStatsTracker$Timer;
-HPLcom/android/server/display/AutomaticBrightnessController$2;->onSensorChanged(Landroid/hardware/SensorEvent;)V+]Lcom/android/server/display/AutomaticBrightnessController$Clock;Lcom/android/server/display/AutomaticBrightnessController$RealClock;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags;
-HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->offsetOf(I)I
-HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->prune(J)V
-HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->push(JF)V
-HPLcom/android/server/display/AutomaticBrightnessController;->calculateAmbientLux(JJ)F
-HPLcom/android/server/display/AutomaticBrightnessController;->handleLightSensorEvent(JF)V
-HPLcom/android/server/display/AutomaticBrightnessController;->nextAmbientLightBrighteningTransition(J)J+]Lcom/android/server/display/AutomaticBrightnessController;Lcom/android/server/display/AutomaticBrightnessController;
-HPLcom/android/server/display/AutomaticBrightnessController;->nextAmbientLightDarkeningTransition(J)J+]Lcom/android/server/display/AutomaticBrightnessController;Lcom/android/server/display/AutomaticBrightnessController;
-HPLcom/android/server/display/AutomaticBrightnessController;->updateAmbientLux(J)V
+HSPLcom/android/server/devicepolicy/Owners;->isProfileOwnerOfOrganizationOwnedDevice(I)Z
+HSPLcom/android/server/display/AutomaticBrightnessController;->configure(ILandroid/hardware/display/BrightnessConfiguration;FZFZIIZZ)V+]Lcom/android/server/display/AutomaticBrightnessController;Lcom/android/server/display/AutomaticBrightnessController;]Lcom/android/server/display/BrightnessThrottler;Lcom/android/server/display/BrightnessThrottler;]Lcom/android/server/display/brightness/clamper/BrightnessClamperController;Lcom/android/server/display/brightness/clamper/BrightnessClamperController;
HSPLcom/android/server/display/BrightnessRangeController;->getCurrentBrightnessMax()F+]Lcom/android/server/display/HighBrightnessModeController;Lcom/android/server/display/HighBrightnessModeController;]Lcom/android/server/display/NormalBrightnessModeController;Lcom/android/server/display/NormalBrightnessModeController;
-HSPLcom/android/server/display/BrightnessRangeController;->setAutoBrightnessEnabled(I)V+]Lcom/android/server/display/brightness/clamper/HdrClamper;Lcom/android/server/display/brightness/clamper/HdrClamper;
-HSPLcom/android/server/display/BrightnessTracker$Receiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/display/BrightnessTracker;->recordAmbientBrightnessStats(Landroid/hardware/SensorEvent;)V+]Lcom/android/server/display/AmbientBrightnessStatsTracker;Lcom/android/server/display/AmbientBrightnessStatsTracker;
+HSPLcom/android/server/display/DisplayAdapter$$ExternalSyntheticLambda1;->run()V
HSPLcom/android/server/display/DisplayBrightnessState$Builder;-><init>()V
HSPLcom/android/server/display/DisplayBrightnessState$Builder;->from(Lcom/android/server/display/DisplayBrightnessState;)Lcom/android/server/display/DisplayBrightnessState$Builder;
HSPLcom/android/server/display/DisplayBrightnessState;-><init>(Lcom/android/server/display/DisplayBrightnessState$Builder;)V+]Lcom/android/server/display/DisplayBrightnessState$Builder;Lcom/android/server/display/DisplayBrightnessState$Builder;
HSPLcom/android/server/display/DisplayDevice;->populateViewportLocked(Landroid/hardware/display/DisplayViewport;)V+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;
+HSPLcom/android/server/display/DisplayDeviceConfig;->getNitsFromBacklight(F)F+]Landroid/util/Spline;Landroid/util/Spline$LinearSpline;,Landroid/util/Spline$MonotoneCubicSpline;
HSPLcom/android/server/display/DisplayDeviceInfo;-><init>()V
HSPLcom/android/server/display/DisplayDeviceInfo;->diff(Lcom/android/server/display/DisplayDeviceInfo;)I
-HSPLcom/android/server/display/DisplayDeviceInfo;->flagsToString(I)Ljava/lang/String;
HSPLcom/android/server/display/DisplayDeviceInfo;->toString()Ljava/lang/String;
HSPLcom/android/server/display/DisplayDeviceRepository;->handleDisplayDeviceChanged(Lcom/android/server/display/DisplayDevice;)V+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/display/DisplayGroup;->getIdLocked(I)I+]Ljava/util/List;Ljava/util/ArrayList;
@@ -1520,53 +1558,65 @@ HSPLcom/android/server/display/DisplayManagerService$1;->requestDisplayState(IIF
HSPLcom/android/server/display/DisplayManagerService$BinderService;->getBrightnessInfo(I)Landroid/hardware/display/BrightnessInfo;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
HSPLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayIds(Z)[I+]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
HSPLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayInfo(I)Landroid/view/DisplayInfo;
-HSPLcom/android/server/display/DisplayManagerService$BinderService;->getOverlaySupport()Landroid/hardware/OverlayProperties;
-HSPLcom/android/server/display/DisplayManagerService$BinderService;->getPreferredWideGamutColorSpaceId()I
-HSPLcom/android/server/display/DisplayManagerService$CallbackRecord;->notifyDisplayEventAsync(II)Z+]Landroid/hardware/display/IDisplayManagerCallback;Landroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;,Landroid/hardware/display/IDisplayManagerCallback$Stub$Proxy;
+HSPLcom/android/server/display/DisplayManagerService$CallbackRecord;->notifyDisplayEventAsync(II)Z
+HSPLcom/android/server/display/DisplayManagerService$CallbackRecord;->shouldSendDisplayEvent(I)Z
HSPLcom/android/server/display/DisplayManagerService$DisplayManagerHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Lcom/android/server/input/InputManagerInternal;Lcom/android/server/input/InputManagerService$LocalService;]Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/wm/WindowManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
HSPLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayIdToMirror(I)I+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
HSPLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayInfo(I)Landroid/view/DisplayInfo;
HSPLcom/android/server/display/DisplayManagerService$LocalService;->getRefreshRateSwitchingType()I
+HSPLcom/android/server/display/DisplayManagerService$LocalService;->performTraversal(Landroid/view/SurfaceControl$Transaction;Landroid/util/SparseArray;)V
HSPLcom/android/server/display/DisplayManagerService$LocalService;->requestPowerState(ILandroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Lcom/android/server/display/DisplayGroup;Lcom/android/server/display/DisplayGroup;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
+HSPLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayProperties(IZFIFFZZZ)V
+HSPLcom/android/server/display/DisplayManagerService$LocalService;->setScreenBrightnessOverrideFromWindowManager(Landroid/util/SparseArray;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/display/DisplayManagerService$UidImportanceListener;->onUidImportanceUnflagged(II)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/display/DisplayManagerService;->applyDisplayChangedLocked(Lcom/android/server/display/LogicalDisplay;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/HighBrightnessModeMetadataMapper;Lcom/android/server/display/HighBrightnessModeMetadataMapper;
+HSPLcom/android/server/display/DisplayManagerService;->configureDisplayLocked(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/display/DisplayDevice;)V+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
HSPLcom/android/server/display/DisplayManagerService;->deliverDisplayEvent(ILandroid/util/ArraySet;I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/display/DisplayManagerService;->deliverEventUnflagged(Lcom/android/server/display/DisplayManagerService$CallbackRecord;II)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/display/DisplayManagerService;->getDisplayInfoForFrameRateOverride([Landroid/view/DisplayEventReceiver$FrameRateOverride;Landroid/view/DisplayInfo;I)Landroid/view/DisplayInfo;
HSPLcom/android/server/display/DisplayManagerService;->getDisplayInfoInternal(II)Landroid/view/DisplayInfo;+]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
+HSPLcom/android/server/display/DisplayManagerService;->getViewportLocked(ILjava/lang/String;)Landroid/hardware/display/DisplayViewport;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/display/DisplayManagerService;->isMinimalPostProcessingAllowed()Z
+HSPLcom/android/server/display/DisplayManagerService;->isUidCached(I)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;
HSPLcom/android/server/display/DisplayManagerService;->performTraversalInternal(Landroid/view/SurfaceControl$Transaction;Landroid/util/SparseArray;)V+]Landroid/hardware/display/DisplayManagerInternal$DisplayTransactionListener;Lcom/android/server/display/ColorFade$NaturalSurfaceLayout;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
+HSPLcom/android/server/display/DisplayManagerService;->performTraversalLocked(Landroid/view/SurfaceControl$Transaction;Landroid/util/SparseArray;)V+]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
+HSPLcom/android/server/display/DisplayManagerService;->populateViewportLocked(IILcom/android/server/display/DisplayDevice;Lcom/android/server/display/DisplayDeviceInfo;)V
HSPLcom/android/server/display/DisplayManagerService;->requestDisplayStateInternal(IIFF)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Ljava/lang/Runnable;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;
HSPLcom/android/server/display/DisplayManagerService;->scheduleTraversalLocked(Z)V
HSPLcom/android/server/display/DisplayManagerService;->sendDisplayEventIfEnabledLocked(Lcom/android/server/display/LogicalDisplay;I)V
HSPLcom/android/server/display/DisplayManagerService;->sendDisplayEventLocked(Lcom/android/server/display/LogicalDisplay;I)V
HSPLcom/android/server/display/DisplayManagerService;->setDisplayPropertiesInternal(IZFIFFZZZ)V+]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Lcom/android/server/display/mode/DisplayModeDirector;Lcom/android/server/display/mode/DisplayModeDirector;
HSPLcom/android/server/display/DisplayManagerService;->updateDisplayStateLocked(Lcom/android/server/display/DisplayDevice;)Ljava/lang/Runnable;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
+HSPLcom/android/server/display/DisplayPowerController$DisplayControllerHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/display/AutomaticBrightnessController;Lcom/android/server/display/AutomaticBrightnessController;]Lcom/android/server/display/BrightnessTracker;Lcom/android/server/display/BrightnessTracker;]Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy2;Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;
HSPLcom/android/server/display/DisplayPowerController;->animateScreenStateChange(IIZ)V+]Lcom/android/server/display/RampAnimator$DualRampAnimator;Lcom/android/server/display/RampAnimator$DualRampAnimator;
HSPLcom/android/server/display/DisplayPowerController;->clampScreenBrightness(F)F+]Lcom/android/server/display/BrightnessRangeController;Lcom/android/server/display/BrightnessRangeController;
HSPLcom/android/server/display/DisplayPowerController;->getBrightnessInfo()Landroid/hardware/display/BrightnessInfo;
-HSPLcom/android/server/display/DisplayPowerController;->notifyBrightnessTrackerChanged(FZZZZZ)V+]Lcom/android/server/display/AutomaticBrightnessController;Lcom/android/server/display/AutomaticBrightnessController;]Lcom/android/server/display/BrightnessTracker;Lcom/android/server/display/BrightnessTracker;
+HSPLcom/android/server/display/DisplayPowerController;->logBrightnessEvent(Lcom/android/server/display/brightness/BrightnessEvent;FLcom/android/server/display/DisplayBrightnessState;)V
HSPLcom/android/server/display/DisplayPowerController;->requestPowerState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z+]Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;
HSPLcom/android/server/display/DisplayPowerController;->saveBrightnessInfo(FFLcom/android/server/display/DisplayBrightnessState;)Z+]Lcom/android/server/display/BrightnessRangeController;Lcom/android/server/display/BrightnessRangeController;]Lcom/android/server/display/DisplayPowerController$CachedBrightnessInfo;Lcom/android/server/display/DisplayPowerController$CachedBrightnessInfo;
-HSPLcom/android/server/display/DisplayPowerController;->sendUpdatePowerStateLocked()V+]Lcom/android/server/display/DisplayPowerController$Clock;Lcom/android/server/display/DisplayPowerController$Injector$$ExternalSyntheticLambda0;
+HSPLcom/android/server/display/DisplayPowerController;->setBrightnessOverrideRequest(Landroid/hardware/display/DisplayManagerInternal$DisplayBrightnessOverrideRequest;)V+]Lcom/android/server/display/DisplayPowerController$Clock;Lcom/android/server/display/DisplayPowerController$Injector$$ExternalSyntheticLambda0;
HSPLcom/android/server/display/DisplayPowerController;->setScreenState(IIZ)Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;
HSPLcom/android/server/display/DisplayPowerController;->updatePowerStateInternal()V+]Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/util/RingBuffer;Lcom/android/internal/util/RingBuffer;]Lcom/android/server/display/AutomaticBrightnessController;Lcom/android/server/display/AutomaticBrightnessController;]Lcom/android/server/display/BrightnessRangeController;Lcom/android/server/display/BrightnessRangeController;]Lcom/android/server/display/RampAnimator$DualRampAnimator;Lcom/android/server/display/RampAnimator$DualRampAnimator;]Lcom/android/server/display/brightness/clamper/BrightnessClamperController;Lcom/android/server/display/brightness/clamper/BrightnessClamperController;]Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy2;Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;]Lcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;Lcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags;]Lcom/android/server/display/state/DisplayStateController;Lcom/android/server/display/state/DisplayStateController;]Lcom/android/server/display/whitebalance/DisplayWhiteBalanceController;Lcom/android/server/display/whitebalance/DisplayWhiteBalanceController;]Lcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings;Lcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;
HSPLcom/android/server/display/DisplayPowerProximityStateController;->setPendingWaitForNegativeProximityLocked(Z)Z
-HSPLcom/android/server/display/DisplayPowerProximityStateController;->updateProximityState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;I)V
HSPLcom/android/server/display/DisplayPowerState$4;->run()V
HSPLcom/android/server/display/DisplayPowerState$PhotonicModulator;->run()V
HSPLcom/android/server/display/DisplayPowerState$PhotonicModulator;->setState(IFF)Z
HSPLcom/android/server/display/DisplayPowerState;->postScreenUpdateThreadSafe()V
-HSPLcom/android/server/display/HighBrightnessModeController;->getCurrentBrightnessMax()F+]Lcom/android/server/display/HighBrightnessModeController;Lcom/android/server/display/HighBrightnessModeController;
HSPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;->hasMatchingMode(Landroid/view/SurfaceControl$DisplayMode;)Z
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->run()V
HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setDisplayBrightness(FF)V+]Lcom/android/server/display/DisplayDeviceConfig;Lcom/android/server/display/DisplayDeviceConfig;]Lcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;Lcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;]Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags;
HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getDisplayDeviceConfig()Lcom/android/server/display/DisplayDeviceConfig;
HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getDisplayDeviceInfoLocked()Lcom/android/server/display/DisplayDeviceInfo;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Lcom/android/server/display/DisplayDeviceConfig;Lcom/android/server/display/DisplayDeviceConfig;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getLogicalDensity()I+]Lcom/android/server/display/DensityMapping;Lcom/android/server/display/DensityMapping;]Lcom/android/server/display/DisplayDeviceConfig;Lcom/android/server/display/DisplayDeviceConfig;
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getLogicalDensity()I+]Lcom/android/server/display/DensityMapping;Lcom/android/server/display/DensityMapping;]Lcom/android/server/display/DisplayDeviceConfig;Lcom/android/server/display/DisplayDeviceConfig;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags;
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->requestDisplayStateLocked(IFFLcom/android/server/display/DisplayOffloadSessionImpl;)Ljava/lang/Runnable;
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setDesiredDisplayModeSpecsLocked(Lcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;)V
HSPLcom/android/server/display/LogicalDisplay;->configureDisplayLocked(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/display/DisplayDevice;Z)V+]Landroid/graphics/Point;Landroid/graphics/Point;]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;
+HSPLcom/android/server/display/LogicalDisplay;->getDisplayIdLocked()I
HSPLcom/android/server/display/LogicalDisplay;->getDisplayInfoLocked()Landroid/view/DisplayInfo;+]Lcom/android/server/display/DisplayInfoProxy;Lcom/android/server/display/DisplayInfoProxy;
HSPLcom/android/server/display/LogicalDisplay;->getMaskingInsets(Lcom/android/server/display/DisplayDeviceInfo;)Landroid/graphics/Rect;
-HSPLcom/android/server/display/LogicalDisplay;->getPrimaryDisplayDeviceLocked()Lcom/android/server/display/DisplayDevice;
HSPLcom/android/server/display/LogicalDisplay;->updateFrameRateOverrides(Lcom/android/server/display/DisplayDeviceInfo;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/display/LogicalDisplay;->updateLocked(Lcom/android/server/display/DisplayDeviceRepository;Lcom/android/server/display/mode/SyntheticModeManager;)V+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Lcom/android/server/display/DisplayDeviceRepository;Lcom/android/server/display/DisplayDeviceRepository;]Lcom/android/server/display/DisplayInfoProxy;Lcom/android/server/display/DisplayInfoProxy;]Lcom/android/server/display/mode/SyntheticModeManager;Lcom/android/server/display/mode/SyntheticModeManager;
HSPLcom/android/server/display/LogicalDisplayMapper;->assignDisplayGroupLocked(Lcom/android/server/display/LogicalDisplay;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Lcom/android/server/display/DisplayGroup;Lcom/android/server/display/DisplayGroup;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
+HSPLcom/android/server/display/LogicalDisplayMapper;->forEachLocked(Ljava/util/function/Consumer;Z)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/function/Consumer;megamorphic_types
HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayGroupIdFromDisplayIdLocked(I)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/DisplayGroup;Lcom/android/server/display/DisplayGroup;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;
HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayGroupLocked(I)Lcom/android/server/display/DisplayGroup;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayIdsLocked(IZ)[I+]Landroid/util/SparseArray;Landroid/util/SparseArray;
@@ -1574,7 +1624,9 @@ HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayLocked(I)Lcom/an
HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayLocked(IZ)Lcom/android/server/display/LogicalDisplay;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayLocked(Lcom/android/server/display/DisplayDevice;Z)Lcom/android/server/display/LogicalDisplay;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/display/LogicalDisplayMapper;->sendUpdatesForDisplaysLocked(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/LogicalDisplayMapper$Listener;Lcom/android/server/display/DisplayManagerService$LogicalDisplayListener;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags;
+HSPLcom/android/server/display/LogicalDisplayMapper;->sendUpdatesForGroupsLocked(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/LogicalDisplayMapper$Listener;Lcom/android/server/display/DisplayManagerService$LogicalDisplayListener;
HSPLcom/android/server/display/LogicalDisplayMapper;->updateLogicalDisplaysLocked(IZ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/DisplayGroup;Lcom/android/server/display/DisplayGroup;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags;
+HPLcom/android/server/display/RampAnimator$DualRampAnimator$1;->run()V+]Lcom/android/server/display/RampAnimator$DualRampAnimator;Lcom/android/server/display/RampAnimator$DualRampAnimator;]Lcom/android/server/display/RampAnimator$Listener;Lcom/android/server/display/DisplayPowerController$3;]Lcom/android/server/display/RampAnimator;Lcom/android/server/display/RampAnimator;
HPLcom/android/server/display/RampAnimator;->performNextAnimationStep(J)V
HSPLcom/android/server/display/RampAnimator;->setPropertyValue(F)V+]Landroid/util/FloatProperty;Lcom/android/server/display/DisplayPowerState$2;,Lcom/android/server/display/DisplayPowerState$3;
HSPLcom/android/server/display/brightness/BrightnessEvent;->copyFrom(Lcom/android/server/display/brightness/BrightnessEvent;)V
@@ -1583,19 +1635,22 @@ HSPLcom/android/server/display/brightness/BrightnessEvent;->reset()V
HSPLcom/android/server/display/brightness/BrightnessEvent;->toString(Z)Ljava/lang/String;
HSPLcom/android/server/display/brightness/BrightnessReason;->equals(Ljava/lang/Object;)Z+]Ljava/lang/CharSequence;Ljava/lang/String;
HSPLcom/android/server/display/brightness/BrightnessReason;->set(Lcom/android/server/display/brightness/BrightnessReason;)V
-HSPLcom/android/server/display/brightness/DisplayBrightnessController;->getScreenBrightnessSetting()F+]Lcom/android/server/display/BrightnessSetting;Lcom/android/server/display/BrightnessSetting;
-HSPLcom/android/server/display/brightness/DisplayBrightnessController;->updateBrightness(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;ILandroid/hardware/display/DisplayManagerInternal$DisplayOffloadSession;)Lcom/android/server/display/DisplayBrightnessState;+]Lcom/android/server/display/brightness/DisplayBrightnessStrategySelector;Lcom/android/server/display/brightness/DisplayBrightnessStrategySelector;]Lcom/android/server/display/brightness/strategy/DisplayBrightnessStrategy;megamorphic_types
-HSPLcom/android/server/display/brightness/DisplayBrightnessStrategySelector;->selectStrategy(Lcom/android/server/display/brightness/StrategySelectionRequest;)Lcom/android/server/display/brightness/strategy/DisplayBrightnessStrategy;+]Lcom/android/server/display/brightness/DisplayBrightnessStrategySelector;Lcom/android/server/display/brightness/DisplayBrightnessStrategySelector;]Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy2;Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;]Lcom/android/server/display/brightness/strategy/DisplayBrightnessStrategy;megamorphic_types]Lcom/android/server/display/brightness/strategy/FollowerBrightnessStrategy;Lcom/android/server/display/brightness/strategy/FollowerBrightnessStrategy;]Lcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;Lcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;]Lcom/android/server/display/brightness/strategy/TemporaryBrightnessStrategy;Lcom/android/server/display/brightness/strategy/TemporaryBrightnessStrategy;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags;
-HSPLcom/android/server/display/brightness/clamper/BrightnessClamperController;->clamp(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;FZI)Lcom/android/server/display/DisplayBrightnessState;+]Lcom/android/server/display/brightness/clamper/BrightnessStateModifier;Lcom/android/server/display/brightness/clamper/BrightnessLowPowerModeModifier;,Lcom/android/server/display/brightness/clamper/BrightnessThermalModifier;,Lcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeModifier;,Lcom/android/server/display/brightness/clamper/DisplayDimModifier;]Lcom/android/server/display/brightness/clamper/LightSensorController;Lcom/android/server/display/brightness/clamper/LightSensorController;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/display/brightness/BrightnessReason;->toString(I)Ljava/lang/String;
+HSPLcom/android/server/display/brightness/DisplayBrightnessStrategySelector;->constructStrategySelectionNotifyRequest(Lcom/android/server/display/brightness/strategy/DisplayBrightnessStrategy;Lcom/android/server/display/brightness/StrategySelectionRequest;)Lcom/android/server/display/brightness/StrategySelectionNotifyRequest;+]Lcom/android/server/display/brightness/DisplayBrightnessStrategySelector;Lcom/android/server/display/brightness/DisplayBrightnessStrategySelector;]Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy2;Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;
+HSPLcom/android/server/display/brightness/DisplayBrightnessStrategySelector;->selectStrategy(Lcom/android/server/display/brightness/StrategySelectionRequest;)Lcom/android/server/display/brightness/strategy/DisplayBrightnessStrategy;+]Lcom/android/server/display/brightness/DisplayBrightnessStrategySelector;Lcom/android/server/display/brightness/DisplayBrightnessStrategySelector;]Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy2;Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;]Lcom/android/server/display/brightness/strategy/DisplayBrightnessStrategy;megamorphic_types]Lcom/android/server/display/brightness/strategy/FollowerBrightnessStrategy;Lcom/android/server/display/brightness/strategy/FollowerBrightnessStrategy;]Lcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;Lcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;]Lcom/android/server/display/brightness/strategy/OverrideBrightnessStrategy;Lcom/android/server/display/brightness/strategy/OverrideBrightnessStrategy;]Lcom/android/server/display/brightness/strategy/TemporaryBrightnessStrategy;Lcom/android/server/display/brightness/strategy/TemporaryBrightnessStrategy;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags;
+HSPLcom/android/server/display/brightness/StrategySelectionNotifyRequest;-><init>(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;ILcom/android/server/display/brightness/strategy/DisplayBrightnessStrategy;FZZZZ)V
+HSPLcom/android/server/display/brightness/clamper/BrightnessClamperController;->clamp(Lcom/android/server/display/DisplayBrightnessState;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;FZI)Lcom/android/server/display/DisplayBrightnessState;+]Lcom/android/server/display/DisplayBrightnessState$Builder;Lcom/android/server/display/DisplayBrightnessState$Builder;]Lcom/android/server/display/brightness/clamper/BrightnessStateModifier;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->accommodateUserBrightnessChanges(ZFIIZLandroid/hardware/display/BrightnessConfiguration;I)V+]Lcom/android/server/display/AutomaticBrightnessController;Lcom/android/server/display/AutomaticBrightnessController;]Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;
+HSPLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->setAutoBrightnessState(IZIIZFZZ)V+]Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;
+HSPLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->switchMode(IZIZZ)V+]Lcom/android/server/display/AutomaticBrightnessController;Lcom/android/server/display/AutomaticBrightnessController;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags;
+HSPLcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;->strategySelectionPostProcessor(Lcom/android/server/display/brightness/StrategySelectionNotifyRequest;)V+]Lcom/android/server/display/brightness/strategy/DisplayBrightnessStrategy;megamorphic_types]Lcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;Lcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;
HSPLcom/android/server/display/feature/DisplayManagerFlags$FlagState;->-$$Nest$misEnabled(Lcom/android/server/display/feature/DisplayManagerFlags$FlagState;)Z
HSPLcom/android/server/display/feature/DisplayManagerFlags$FlagState;->isEnabled()Z
-HSPLcom/android/server/display/feature/DisplayManagerFlags;->areAutoBrightnessModesEnabled()Z
-HSPLcom/android/server/display/feature/DisplayManagerFlags;->isConnectedDisplayManagementEnabled()Z
HSPLcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;->setAppRequest(IIFFF)V+]Lcom/android/server/display/mode/VotesStorage;Lcom/android/server/display/mode/VotesStorage;
+HSPLcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;->equals(Ljava/lang/Object;)Z
HSPLcom/android/server/display/mode/DisplayModeDirector;->getModeSwitchingType()I
HSPLcom/android/server/display/mode/VotesStorage;->updateVote(IILcom/android/server/display/mode/Vote;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/mode/VotesStatsReporter;Lcom/android/server/display/mode/VotesStatsReporter;]Lcom/android/server/display/mode/VotesStorage$Listener;Lcom/android/server/display/mode/DisplayModeDirector$$ExternalSyntheticLambda0;]Ljava/lang/Object;megamorphic_types
HSPLcom/android/server/display/state/DisplayStateController;->updateDisplayState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;ZZ)Landroid/util/Pair;
-HSPLcom/android/server/display/utils/SensorUtils;->findSensor(Landroid/hardware/SensorManager;Ljava/lang/String;Ljava/lang/String;I)Landroid/hardware/Sensor;+]Landroid/hardware/SensorManager;Landroid/hardware/SystemSensorManager;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
HSPLcom/android/server/dreams/DreamManagerService$LocalService;->isDreaming()Z
HSPLcom/android/server/dreams/DreamManagerService;->isDreamingInternal()Z
HSPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->queryByComponent(Landroid/content/ComponentName;Ljava/util/List;)V
@@ -1605,25 +1660,23 @@ HSPLcom/android/server/firewall/IntentFirewall;->checkIntent(Lcom/android/server
HSPLcom/android/server/firewall/IntentFirewall;->checkService(Landroid/content/ComponentName;Landroid/content/Intent;IILjava/lang/String;Landroid/content/pm/ApplicationInfo;)Z+]Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/firewall/IntentFirewall;
HSPLcom/android/server/firewall/IntentFirewall;->getPackageManager()Landroid/content/pm/PackageManagerInternal;
HSPLcom/android/server/grammaticalinflection/GrammaticalInflectionUtils;->checkSystemGrammaticalGenderPermission(Landroid/permission/PermissionManager;Landroid/content/AttributionSource;)Z
-HSPLcom/android/server/health/HealthRegCallbackAidl$HalInfoCallback;->healthInfoChanged(Landroid/hardware/health/HealthInfo;)V+]Lcom/android/server/health/HealthInfoCallback;Lcom/android/server/BatteryService$$ExternalSyntheticLambda5;
-HPLcom/android/server/health/HealthServiceWrapperAidl;->getProperty(ILandroid/os/BatteryProperty;)I
-HPLcom/android/server/health/HealthServiceWrapperAidl;->getPropertyInternal(ILandroid/os/BatteryProperty;)I+]Landroid/hardware/health/IHealth;Landroid/hardware/health/IHealth$Stub$Proxy;]Landroid/os/BatteryProperty;Landroid/os/BatteryProperty;
-HSPLcom/android/server/infra/AbstractMasterSystemService;->assertCalledByPackageOwner(Ljava/lang/String;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
+HSPLcom/android/server/health/HealthServiceWrapperAidl;->getProperty(ILandroid/os/BatteryProperty;)I
+HSPLcom/android/server/health/HealthServiceWrapperAidl;->getPropertyInternal(ILandroid/os/BatteryProperty;)I+]Landroid/hardware/health/IHealth;Landroid/hardware/health/IHealth$Stub$Proxy;]Landroid/os/BatteryProperty;Landroid/os/BatteryProperty;
HSPLcom/android/server/infra/AbstractMasterSystemService;->getServiceListForUserLocked(I)Ljava/util/List;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/infra/AbstractMasterSystemService;megamorphic_types]Lcom/android/server/infra/ServiceNameResolver;Lcom/android/server/infra/FrameworkResourcesServiceNameResolver;,Lcom/android/server/infra/SecureSettingsServiceNameResolver;]Ljava/util/List;Ljava/util/ArrayList;
-HPLcom/android/server/input/InputManagerService;->monitor()V+]Lcom/android/server/input/NativeInputManagerService;Lcom/android/server/input/NativeInputManagerService$NativeImpl;
HSPLcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutDescriptor;->format(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/server/input/KeyboardLayoutManager;->visitKeyboardLayoutsInPackage(Landroid/content/pm/PackageManager;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutVisitor;)V+]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser;]Lcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutVisitor;Lcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda0;,Lcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda1;,Lcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda5;,Lcom/android/server/input/KeyboardLayoutManager$2;]Ljava/lang/CharSequence;Ljava/lang/String;
-HSPLcom/android/server/inputmethod/InputMethodSettings;->createEnabledInputMethodList(Ljava/util/List;Ljava/util/function/Predicate;)Ljava/util/ArrayList;+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/function/Predicate;Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda10;,Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda19;
+HSPLcom/android/server/input/KeyboardLayoutManager;->visitKeyboardLayoutsInPackage(Landroid/content/pm/PackageManager;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutVisitor;)V+]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser;]Lcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutVisitor;Lcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda1;,Lcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda5;,Lcom/android/server/input/KeyboardLayoutManager$2;]Ljava/lang/CharSequence;Ljava/lang/String;
+HSPLcom/android/server/inputmethod/InputMethodSettings;->createEnabledInputMethodList(Ljava/util/List;Ljava/util/function/Predicate;)Ljava/util/ArrayList;+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/function/Predicate;Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda14;,Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda20;
HSPLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodSubtypeList(Landroid/view/inputmethod/InputMethodInfo;)Ljava/util/List;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodsAndSubtypeList()Ljava/util/List;
+HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->getInputMethodAndSubtypeListForHardwareKeyboard(Landroid/content/Context;Lcom/android/server/inputmethod/InputMethodSettings;)Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->getSortedInputMethodAndSubtypeList(ZZZLandroid/content/Context;Lcom/android/server/inputmethod/InputMethodSettings;)Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/inputmethod/SecureSettingsWrapper;->get(I)Lcom/android/server/inputmethod/SecureSettingsWrapper$ReaderWriter;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/inputmethod/SecureSettingsWrapper;->get(I)Lcom/android/server/inputmethod/SecureSettingsWrapper$ReaderWriter;
+HSPLcom/android/server/inputmethod/UserDataRepository;->getOrCreate(I)Lcom/android/server/inputmethod/UserData;
HSPLcom/android/server/job/JobConcurrencyManager$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
HPLcom/android/server/job/JobConcurrencyManager$$ExternalSyntheticLambda2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
HSPLcom/android/server/job/JobConcurrencyManager$ContextAssignment;->clear()V
HSPLcom/android/server/job/JobConcurrencyManager$PackageStats;->adjustRunningCount(ZZ)V
HSPLcom/android/server/job/JobConcurrencyManager$PackageStats;->adjustStagedCount(ZZ)V
-HSPLcom/android/server/job/JobConcurrencyManager$PackageStats;->resetStagedCount()V
HSPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->adjustPendingJobCount(IZ)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HSPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->canJobStart(I)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HSPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->getRunningJobCount(I)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
@@ -1638,6 +1691,7 @@ HSPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->resetStaging
HSPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->setConfig(Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;
HSPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->stageJob(II)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;
HSPLcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;->getMaxTotal()I
+HPLcom/android/server/job/JobConcurrencyManager;->$r8$lambda$VhD--0a_vmTAP5SEQ54BuaJ_sSE(Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;)I
HSPLcom/android/server/job/JobConcurrencyManager;->assignJobsToContextsInternalLocked()V+]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;
HSPLcom/android/server/job/JobConcurrencyManager;->assignJobsToContextsLocked()V+]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;
HSPLcom/android/server/job/JobConcurrencyManager;->carryOutAssignmentChangesLocked(Landroid/util/ArraySet;)V+]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;
@@ -1649,7 +1703,6 @@ HSPLcom/android/server/job/JobConcurrencyManager;->getRunningJobsLocked()Landroi
HSPLcom/android/server/job/JobConcurrencyManager;->hasImmediacyPrivilegeLocked(Lcom/android/server/job/controllers/JobStatus;Landroid/util/SparseIntArray;)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HSPLcom/android/server/job/JobConcurrencyManager;->isJobRunningLocked(Lcom/android/server/job/controllers/JobStatus;)Z
HSPLcom/android/server/job/JobConcurrencyManager;->isPkgConcurrencyLimitedLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;
-HPLcom/android/server/job/JobConcurrencyManager;->lambda$static$0(Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;)I
HSPLcom/android/server/job/JobConcurrencyManager;->noteConcurrency(Z)V+]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/job/JobConcurrencyManager;->onJobCompletedLocked(Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/controllers/JobStatus;I)V+]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/job/JobConcurrencyManager;->prepareForAssignmentDeterminationLocked(Landroid/util/ArraySet;Ljava/util/List;Ljava/util/List;Lcom/android/server/job/JobConcurrencyManager$AssignmentInfo;)V+]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/ArrayList;
@@ -1660,7 +1713,7 @@ HSPLcom/android/server/job/JobConcurrencyManager;->startJobLocked(Lcom/android/s
HPLcom/android/server/job/JobConcurrencyManager;->stopJobOnServiceContextLocked(Lcom/android/server/job/controllers/JobStatus;IILjava/lang/String;)Z+]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/job/JobConcurrencyManager;->updateCounterConfigLocked()V+]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;
HSPLcom/android/server/job/JobConcurrencyManager;->updateNonRunningPrioritiesLocked(Lcom/android/server/job/PendingJobQueue;Z)V+]Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;Lcom/android/server/job/JobConcurrencyManager$WorkCountTracker;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;
-HSPLcom/android/server/job/JobNotificationCoordinator;->removeNotificationAssociation(Lcom/android/server/job/JobServiceContext;ILcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Lcom/android/server/notification/NotificationManagerInternal;Lcom/android/server/notification/NotificationManagerService$13;
+HSPLcom/android/server/job/JobNotificationCoordinator;->removeNotificationAssociation(Lcom/android/server/job/JobServiceContext;ILcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Lcom/android/server/notification/NotificationManagerInternal;Lcom/android/server/notification/NotificationManagerService$13;,Lcom/android/server/notification/NotificationManagerService$14;
HSPLcom/android/server/job/JobPackageTracker$DataSet;->decActive(ILjava/lang/String;JI)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HSPLcom/android/server/job/JobPackageTracker$DataSet;->decPending(ILjava/lang/String;J)V
HSPLcom/android/server/job/JobPackageTracker$DataSet;->getEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
@@ -1695,9 +1748,10 @@ HSPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->validateNamesp
HSPLcom/android/server/job/JobSchedulerService$LocalService;->isAppConsideredBuggy(ILjava/lang/String;ILjava/lang/String;)Z+]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;
HSPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->postProcessLocked()V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->postProcessLocked()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->reset()V+]Ljava/util/List;Ljava/util/ArrayList;
-HPLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
+HSPLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
+HSPLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->accept(Ljava/lang/Object;)V
HSPLcom/android/server/job/JobSchedulerService;->adjustJobBias(ILcom/android/server/job/controllers/JobStatus;)I
HSPLcom/android/server/job/JobSchedulerService;->areComponentsInPlaceLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
HSPLcom/android/server/job/JobSchedulerService;->areUsersStartedLocked(Lcom/android/server/job/controllers/JobStatus;)Z
@@ -1713,6 +1767,7 @@ HSPLcom/android/server/job/JobSchedulerService;->getMinJobExecutionGuaranteeMs(L
HSPLcom/android/server/job/JobSchedulerService;->getPendingJob(ILjava/lang/String;I)Landroid/app/job/JobInfo;
HSPLcom/android/server/job/JobSchedulerService;->getPendingJobQueue()Lcom/android/server/job/PendingJobQueue;
HPLcom/android/server/job/JobSchedulerService;->getPendingJobsInNamespace(ILjava/lang/String;)Ljava/util/List;
+HPLcom/android/server/job/JobSchedulerService;->getRescheduleJobForFailureLocked(Lcom/android/server/job/controllers/JobStatus;II)Lcom/android/server/job/controllers/JobStatus;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;,Ljava/time/Clock$SystemClock;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/job/JobSchedulerService;->getRescheduleJobForPeriodic(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/controllers/JobStatus;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;,Ljava/time/Clock$SystemClock;
HSPLcom/android/server/job/JobSchedulerService;->getUidBias(I)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HSPLcom/android/server/job/JobSchedulerService;->getUidProcState(I)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
@@ -1724,18 +1779,21 @@ HSPLcom/android/server/job/JobSchedulerService;->isCurrentlyRunningLocked(Lcom/a
HSPLcom/android/server/job/JobSchedulerService;->isReadyToBeExecutedLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
HSPLcom/android/server/job/JobSchedulerService;->isReadyToBeExecutedLocked(Lcom/android/server/job/controllers/JobStatus;Z)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;
HSPLcom/android/server/job/JobSchedulerService;->lambda$new$2(ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/utils/quota/Category;
+HSPLcom/android/server/job/JobSchedulerService;->lambda$onBootPhase$4(Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/job/JobSchedulerService;->maybeProcessBuggyJob(Lcom/android/server/job/controllers/JobStatus;I)V+]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$1;
HSPLcom/android/server/job/JobSchedulerService;->maybeRunPendingJobsLocked()V+]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
HSPLcom/android/server/job/JobSchedulerService;->onControllerStateChanged(Landroid/util/ArraySet;)V+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
HSPLcom/android/server/job/JobSchedulerService;->onJobCompletedLocked(Lcom/android/server/job/controllers/JobStatus;IIZ)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
HSPLcom/android/server/job/JobSchedulerService;->reportActiveLocked()V+]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;
-HSPLcom/android/server/job/JobSchedulerService;->resetPendingJobReasonCache(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+HSPLcom/android/server/job/JobSchedulerService;->resetPendingJobReasonsCache(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;
HSPLcom/android/server/job/JobSchedulerService;->scheduleAsPackage(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue;]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;
+HSPLcom/android/server/job/JobSchedulerService;->shouldUseAggressiveBackoff(II)Z
HSPLcom/android/server/job/JobSchedulerService;->standbyBucketForPackage(Ljava/lang/String;IJ)I+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;
+HSPLcom/android/server/job/JobSchedulerService;->standbyBucketToBucketIndex(I)I
HSPLcom/android/server/job/JobSchedulerService;->startTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/job/JobSchedulerService;->stopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)Z+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/job/JobSchedulerService;->stopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/job/JobSchedulerService;->updateUidState(III)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/job/JobServiceContext$JobCallback;-><init>(Lcom/android/server/job/JobServiceContext;)V
+HSPLcom/android/server/job/JobServiceContext$JobCallback;->acknowledgeStartMessage(IZ)V
HSPLcom/android/server/job/JobServiceContext;->applyStoppedReasonLocked(Ljava/lang/String;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
HSPLcom/android/server/job/JobServiceContext;->canGetNetworkInformation(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
HSPLcom/android/server/job/JobServiceContext;->closeAndCleanupJobLocked(ZLjava/lang/String;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/app/job/JobParameters;Landroid/app/job/JobParameters;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/job/JobCompletedListener;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobNotificationCoordinator;Lcom/android/server/job/JobNotificationCoordinator;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
@@ -1779,20 +1837,20 @@ HPLcom/android/server/job/JobStore;->maybeWriteStatusToDiskAsync()V
HSPLcom/android/server/job/JobStore;->remove(Lcom/android/server/job/controllers/JobStatus;Z)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
HPLcom/android/server/job/PendingJobQueue$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
HSPLcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;->clear()V
+HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->$r8$lambda$g0OYYwC3jkCSkqvBk21tiP7tdvI(Lcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;Lcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;)I+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->add(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/job/PendingJobQueue$AppJobQueue;->addAll(Ljava/util/List;)V+]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/job/PendingJobQueue$AppJobQueue;->indexOf(Lcom/android/server/job/controllers/JobStatus;)I+]Ljava/util/List;Ljava/util/ArrayList;
-HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->lambda$static$0(Lcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;Lcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;)I+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
HSPLcom/android/server/job/PendingJobQueue$AppJobQueue;->next()Lcom/android/server/job/controllers/JobStatus;+]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->peekNextOverrideState()I+]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/job/PendingJobQueue$AppJobQueue;->peekNextTimestamp()J+]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/job/PendingJobQueue$AppJobQueue;->remove(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Lcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;Lcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/job/PendingJobQueue$AppJobQueue;->resetIterator(J)V
+HPLcom/android/server/job/PendingJobQueue;->$r8$lambda$M4BYHsJI5-OqL8hZ_zUrbsjiO-g(Lcom/android/server/job/PendingJobQueue$AppJobQueue;Lcom/android/server/job/PendingJobQueue$AppJobQueue;)I
HPLcom/android/server/job/PendingJobQueue;->add(Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;
HSPLcom/android/server/job/PendingJobQueue;->addAll(Landroid/util/ArraySet;)V+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;
HSPLcom/android/server/job/PendingJobQueue;->contains(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/job/PendingJobQueue;->getAppJobQueue(IZ)Lcom/android/server/job/PendingJobQueue$AppJobQueue;+]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HPLcom/android/server/job/PendingJobQueue;->lambda$new$0(Lcom/android/server/job/PendingJobQueue$AppJobQueue;Lcom/android/server/job/PendingJobQueue$AppJobQueue;)I
HSPLcom/android/server/job/PendingJobQueue;->next()Lcom/android/server/job/controllers/JobStatus;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;
HSPLcom/android/server/job/PendingJobQueue;->remove(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;
HSPLcom/android/server/job/PendingJobQueue;->size()I
@@ -1837,7 +1895,6 @@ HSPLcom/android/server/job/controllers/ContentObserverController;->maybeStopTrac
HSPLcom/android/server/job/controllers/DeviceIdleJobsController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
HSPLcom/android/server/job/controllers/DeviceIdleJobsController;->isWhitelistedLocked(Lcom/android/server/job/controllers/JobStatus;)Z
HSPLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
-HSPLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
HSPLcom/android/server/job/controllers/DeviceIdleJobsController;->setUidActiveLocked(IZ)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;
HSPLcom/android/server/job/controllers/DeviceIdleJobsController;->updateTaskStateLocked(Lcom/android/server/job/controllers/JobStatus;J)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
HSPLcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;->scheduleDropNumConstraintsAlarm(Lcom/android/server/job/controllers/JobStatus;J)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;Lcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;
@@ -1858,22 +1915,22 @@ HSPLcom/android/server/job/controllers/FlexibilityController;->onUidBiasChangedL
HSPLcom/android/server/job/controllers/FlexibilityController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/controllers/FlexibilityController$JobScoreTracker;Lcom/android/server/job/controllers/FlexibilityController$JobScoreTracker;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
HSPLcom/android/server/job/controllers/IdleController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/controllers/idle/IdlenessTracker;Lcom/android/server/job/controllers/idle/DeviceIdlenessTracker;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
HSPLcom/android/server/job/controllers/IdleController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/JobStatus;-><init>(Landroid/app/job/JobInfo;ILjava/lang/String;IILjava/lang/String;Ljava/lang/String;IIJJJJJII)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/net/NetworkRequest$Builder;Landroid/net/NetworkRequest$Builder;]Landroid/net/NetworkRequest;Landroid/net/NetworkRequest;
+HSPLcom/android/server/job/controllers/JobStatus;-><init>(Landroid/app/job/JobInfo;ILjava/lang/String;IILjava/lang/String;Ljava/lang/String;IIIJJJJJII)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/net/NetworkRequest$Builder;Landroid/net/NetworkRequest$Builder;]Landroid/net/NetworkRequest;Landroid/net/NetworkRequest;
HPLcom/android/server/job/controllers/JobStatus;-><init>(Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/JobStatus;-><init>(Lcom/android/server/job/controllers/JobStatus;JJIIJJJ)V
+HSPLcom/android/server/job/controllers/JobStatus;-><init>(Lcom/android/server/job/controllers/JobStatus;JJIIIJJJ)V
HSPLcom/android/server/job/controllers/JobStatus;->addDynamicConstraints(I)V
HPLcom/android/server/job/controllers/JobStatus;->applyBasicPiiFilters(Ljava/lang/String;)Ljava/lang/String;
HSPLcom/android/server/job/controllers/JobStatus;->canRunInBatterySaver()Z
HSPLcom/android/server/job/controllers/JobStatus;->canRunInDoze()Z
HSPLcom/android/server/job/controllers/JobStatus;->clearTrackingController(I)Z
-HPLcom/android/server/job/controllers/JobStatus;->computeSystemTraceTag()Ljava/lang/String;
-HPLcom/android/server/job/controllers/JobStatus;->computeSystemTraceTagInner()Ljava/lang/String;
+HSPLcom/android/server/job/controllers/JobStatus;->computeSystemTraceTag()Ljava/lang/String;
+HSPLcom/android/server/job/controllers/JobStatus;->computeSystemTraceTagInner()Ljava/lang/String;
+HSPLcom/android/server/job/controllers/JobStatus;->constraintsToPendingJobReasons(I)Ljava/util/ArrayList;
HSPLcom/android/server/job/controllers/JobStatus;->createFromJobInfo(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/job/controllers/JobStatus;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
HPLcom/android/server/job/controllers/JobStatus;->dequeueWorkLocked()Landroid/app/job/JobWorkItem;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/job/controllers/JobStatus;->enqueueWorkLocked(Landroid/app/job/JobWorkItem;)V+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/job/controllers/JobStatus;->generateNamespaceHash(Ljava/lang/String;)Ljava/lang/String;+]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate;
HSPLcom/android/server/job/controllers/JobStatus;->getAppTraceTag()Ljava/lang/String;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
-HSPLcom/android/server/job/controllers/JobStatus;->getBias()I+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
HSPLcom/android/server/job/controllers/JobStatus;->getEarliestRunTime()J
HSPLcom/android/server/job/controllers/JobStatus;->getEffectivePriority()I+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
HSPLcom/android/server/job/controllers/JobStatus;->getEffectiveStandbyBucket()I+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/JobSchedulerInternal;Lcom/android/server/job/JobSchedulerService$LocalService;
@@ -1906,10 +1963,11 @@ HSPLcom/android/server/job/controllers/JobStatus;->isReady(I)Z
HSPLcom/android/server/job/controllers/JobStatus;->isRequestedExpeditedJob()Z
HSPLcom/android/server/job/controllers/JobStatus;->isUserVisibleJob()Z
HSPLcom/android/server/job/controllers/JobStatus;->maybeAddForegroundExemption(Ljava/util/function/Predicate;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Ljava/util/function/Predicate;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda1;
+HSPLcom/android/server/job/controllers/JobStatus;->populatePendingJobReasonsHistoryMap(ZJI)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/job/controllers/JobStatus;->prepareLocked()V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
HSPLcom/android/server/job/controllers/JobStatus;->readinessStatusWithConstraint(IZ)Z
HSPLcom/android/server/job/controllers/JobStatus;->setBackgroundNotRestrictedConstraintSatisfied(JZZ)Z
-HSPLcom/android/server/job/controllers/JobStatus;->setConstraintSatisfied(IJZ)Z
+HSPLcom/android/server/job/controllers/JobStatus;->setConstraintSatisfied(IJZ)Z+]Ljava/util/List;Ljava/util/ArrayList$SubList;,Ljava/util/ArrayList;
HSPLcom/android/server/job/controllers/JobStatus;->setDeviceNotDozingConstraintSatisfied(JZZ)Z
HSPLcom/android/server/job/controllers/JobStatus;->shouldTreatAsExpeditedJob()Z
HSPLcom/android/server/job/controllers/JobStatus;->shouldTreatAsUserInitiatedJob()Z+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
@@ -1923,38 +1981,46 @@ HSPLcom/android/server/job/controllers/PrefetchController;->maybeStopTrackingJob
HSPLcom/android/server/job/controllers/QuotaController$QcHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
HSPLcom/android/server/job/controllers/QuotaController$TempAllowlistTracker;->onAppAdded(I)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
HPLcom/android/server/job/controllers/QuotaController$TempAllowlistTracker;->onAppRemoved(I)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
-HPLcom/android/server/job/controllers/QuotaController$Timer;->emitSessionLocked(J)V
-HPLcom/android/server/job/controllers/QuotaController$Timer;->getCurrentDuration(J)J
-HPLcom/android/server/job/controllers/QuotaController$Timer;->isActive()Z
-HPLcom/android/server/job/controllers/QuotaController$Timer;->scheduleCutoff()V
+HSPLcom/android/server/job/controllers/QuotaController$Timer;->cancelCutoff()V
+HSPLcom/android/server/job/controllers/QuotaController$Timer;->emitSessionLocked(J)V
+HSPLcom/android/server/job/controllers/QuotaController$Timer;->getCurrentDuration(J)J
+HSPLcom/android/server/job/controllers/QuotaController$Timer;->isActive()Z
+HSPLcom/android/server/job/controllers/QuotaController$Timer;->scheduleCutoff()V
HSPLcom/android/server/job/controllers/QuotaController$Timer;->shouldTrackLocked()Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
HSPLcom/android/server/job/controllers/QuotaController$Timer;->startTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
HSPLcom/android/server/job/controllers/QuotaController$Timer;->stopTrackingJob(Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HSPLcom/android/server/job/controllers/QuotaController$TimingSession;-><init>(JJI)V
HSPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->accept(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;
HSPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->postProcess()V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;
HSPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->prepare()V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HPLcom/android/server/job/controllers/QuotaController;->calculateTimeUntilQuotaConsumedLocked(Ljava/util/List;JJ)J+]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/job/controllers/QuotaController;->getEJDebitsLocked(ILjava/lang/String;)Lcom/android/server/job/controllers/QuotaController$ShrinkableDebits;+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HSPLcom/android/server/job/controllers/QuotaController;->getEJLimitMsLocked(ILjava/lang/String;I)J+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;
HSPLcom/android/server/job/controllers/QuotaController;->getExecutionStatsLocked(ILjava/lang/String;IZ)Lcom/android/server/job/controllers/QuotaController$ExecutionStats;+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
HSPLcom/android/server/job/controllers/QuotaController;->getMaxJobExecutionTimeMsLocked(Lcom/android/server/job/controllers/JobStatus;)J+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
HSPLcom/android/server/job/controllers/QuotaController;->getRemainingEJExecutionTimeLocked(ILjava/lang/String;)J+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/job/controllers/QuotaController;->getRemainingExecutionTimeLocked(Lcom/android/server/job/controllers/QuotaController$ExecutionStats;)J
-HPLcom/android/server/job/controllers/QuotaController;->getTimeUntilQuotaConsumedLocked(ILjava/lang/String;)J+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/ArrayList;
-HPLcom/android/server/job/controllers/QuotaController;->incrementJobCountLocked(ILjava/lang/String;I)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
-HPLcom/android/server/job/controllers/QuotaController;->incrementTimingSessionCountLocked(ILjava/lang/String;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
-HPLcom/android/server/job/controllers/QuotaController;->invalidateAllExecutionStatsLocked(ILjava/lang/String;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HSPLcom/android/server/job/controllers/QuotaController;->getTimeUntilQuotaConsumedLocked(ILjava/lang/String;)J+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/job/controllers/QuotaController;->incrementJobCountLocked(ILjava/lang/String;I)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HSPLcom/android/server/job/controllers/QuotaController;->incrementTimingSessionCountLocked(ILjava/lang/String;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HSPLcom/android/server/job/controllers/QuotaController;->invalidateAllExecutionStatsLocked(ILjava/lang/String;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
HSPLcom/android/server/job/controllers/QuotaController;->isQuotaFreeLocked(I)Z+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
+HSPLcom/android/server/job/controllers/QuotaController;->isTopStartedJobLocked(Lcom/android/server/job/controllers/JobStatus;)Z
HSPLcom/android/server/job/controllers/QuotaController;->isUidInForeground(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
HSPLcom/android/server/job/controllers/QuotaController;->isUnderJobCountQuotaLocked(Lcom/android/server/job/controllers/QuotaController$ExecutionStats;)Z+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
HSPLcom/android/server/job/controllers/QuotaController;->isUnderSessionCountQuotaLocked(Lcom/android/server/job/controllers/QuotaController$ExecutionStats;)Z+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
HSPLcom/android/server/job/controllers/QuotaController;->isWithinQuotaLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
-HSPLcom/android/server/job/controllers/QuotaController;->maybeScheduleStartAlarmLocked(ILjava/lang/String;I)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
+HSPLcom/android/server/job/controllers/QuotaController;->maybeScheduleStartAlarmLocked(ILjava/lang/String;I)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/job/controllers/QuotaController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
HSPLcom/android/server/job/controllers/QuotaController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;
HSPLcom/android/server/job/controllers/QuotaController;->maybeUpdateConstraintForPkgLocked(JILjava/lang/String;)Landroid/util/ArraySet;+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/utils/AlarmQueue;Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;
HSPLcom/android/server/job/controllers/QuotaController;->maybeUpdateConstraintForUidLocked(I)Landroid/util/ArraySet;+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;Lcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;
HSPLcom/android/server/job/controllers/QuotaController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
+HSPLcom/android/server/job/controllers/QuotaController;->saveTimingSession(ILjava/lang/String;Lcom/android/server/job/controllers/QuotaController$TimingSession;ZJ)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/job/controllers/QuotaController;->setConstraintSatisfied(Lcom/android/server/job/controllers/JobStatus;JZZ)Z+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
+HSPLcom/android/server/job/controllers/QuotaController;->setExpeditedQuotaApproved(Lcom/android/server/job/controllers/JobStatus;JZ)Z
HSPLcom/android/server/job/controllers/QuotaController;->unprepareFromExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;
-HSPLcom/android/server/job/controllers/QuotaController;->updateExecutionStatsLocked(ILjava/lang/String;Lcom/android/server/job/controllers/QuotaController$ExecutionStats;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/QuotaController$TimedEvent;Lcom/android/server/job/controllers/QuotaController$TimingSession;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/job/controllers/QuotaController;->updateExecutionStatsLocked(ILjava/lang/String;Lcom/android/server/job/controllers/QuotaController$ExecutionStats;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/job/controllers/StateController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V
HSPLcom/android/server/job/controllers/StateController;->wouldBeReadyWithConstraintLocked(Lcom/android/server/job/controllers/JobStatus;I)Z+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
HSPLcom/android/server/job/controllers/StorageController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;
@@ -1973,13 +2039,34 @@ HSPLcom/android/server/job/controllers/TimeController;->setDelayExpiredAlarmLock
HSPLcom/android/server/job/restrictions/ThermalStatusRestriction;->isJobRestricted(Lcom/android/server/job/controllers/JobStatus;I)Z+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
HSPLcom/android/server/lights/LightsService$LightImpl;->setLightLocked(IIIII)V
HSPLcom/android/server/location/LocationManagerService;->isLocationEnabledForUser(I)Z+]Lcom/android/server/location/injector/Injector;Lcom/android/server/location/LocationManagerService$SystemInjector;]Lcom/android/server/location/injector/SettingsHelper;Lcom/android/server/location/injector/SystemSettingsHelper;
+HPLcom/android/server/location/contexthub/ContextHubClientBroker;->doSendMessageToNanoApp(Landroid/hardware/location/NanoAppMessage;Landroid/hardware/location/IContextHubTransactionCallback;)I+]Landroid/hardware/location/ContextHubInfo;Landroid/hardware/location/ContextHubInfo;]Lcom/android/server/location/contexthub/ContextHubEventLogger;Lcom/android/server/location/contexthub/ContextHubEventLogger;]Lcom/android/server/location/contexthub/IContextHubWrapper;Lcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;
+HSPLcom/android/server/location/contexthub/ContextHubClientBroker;->sendMessageToClient(Landroid/hardware/location/NanoAppMessage;Ljava/util/List;Ljava/util/List;)B+]Lcom/android/server/location/contexthub/ContextHubClientBroker;Lcom/android/server/location/contexthub/ContextHubClientBroker;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/location/eventlog/LocalEventLog;->addLog(JLjava/lang/Object;)V+]Lcom/android/server/location/eventlog/LocalEventLog;Lcom/android/server/location/eventlog/LocationEventLog;
+HSPLcom/android/server/location/eventlog/LocalEventLog;->addLogEventInternal(ZILjava/lang/Object;)V+]Lcom/android/server/location/eventlog/LocalEventLog;Lcom/android/server/location/eventlog/LocationEventLog$LocationsEventLog;,Lcom/android/server/location/eventlog/LocationEventLog;
+HSPLcom/android/server/location/eventlog/LocationEventLog;->getAggregateStats(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;)Lcom/android/server/location/eventlog/LocationEventLog$AggregateStats;
+HPLcom/android/server/location/injector/SystemAppOpsHelper;->noteOpNoThrow(ILandroid/location/util/identity/CallerIdentity;)Z+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;
+HSPLcom/android/server/location/injector/SystemSettingsHelper$IntegerSecureSetting;->getValueForUser(II)I+]Landroid/content/Context;Landroid/app/ContextImpl;
+HSPLcom/android/server/location/injector/SystemSettingsHelper;->isLocationEnabled(I)Z+]Lcom/android/server/location/injector/SystemSettingsHelper$IntegerSecureSetting;Lcom/android/server/location/injector/SystemSettingsHelper$IntegerSecureSetting;
+HSPLcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;->acquire()Lcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;
HSPLcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;->close()V+]Ljava/util/Map$Entry;Ljava/util/AbstractMap$SimpleImmutableEntry;
+HSPLcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;->acquire()Lcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;
HSPLcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;->close()V
+HPLcom/android/server/location/listeners/ListenerMultiplexer;->deliverToListeners(Ljava/util/function/Function;)V+]Ljava/util/function/Function;Lcom/android/server/location/gnss/GnssMeasurementsProvider$$ExternalSyntheticLambda0;,Lcom/android/server/location/gnss/GnssNmeaProvider$1;,Lcom/android/server/location/gnss/GnssStatusProvider$$ExternalSyntheticLambda1;,Lcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda13;
HSPLcom/android/server/location/listeners/ListenerMultiplexer;->updateRegistrations(Ljava/util/function/Predicate;)V+]Ljava/util/function/Predicate;megamorphic_types
-HSPLcom/android/server/location/provider/LocationProviderManager$Registration;->onForegroundChanged(IZ)Z+]Lcom/android/server/location/eventlog/LocationEventLog;Lcom/android/server/location/eventlog/LocationEventLog;]Lcom/android/server/location/injector/LocationPowerSaveModeHelper;Lcom/android/server/location/injector/SystemLocationPowerSaveModeHelper;
+HPLcom/android/server/location/listeners/ListenerRegistration;->executeOperation(Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;)V+]Lcom/android/internal/listeners/ListenerExecutor;Lcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;,Lcom/android/server/location/gnss/GnssMeasurementsProvider$GnssMeasurementListenerRegistration;,Lcom/android/server/location/provider/LocationProviderManager$GetCurrentLocationListenerRegistration;,Lcom/android/server/location/provider/LocationProviderManager$LocationListenerRegistration;
+HPLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$1;->test(Landroid/location/Location;)Z+]Landroid/location/Location;Landroid/location/Location;
+HPLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$2;->onPostExecute(Z)V
+HPLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$2;->operate(Lcom/android/server/location/provider/LocationProviderManager$LocationTransport;)V+]Lcom/android/server/location/eventlog/LocationEventLog;Lcom/android/server/location/eventlog/LocationEventLog;]Lcom/android/server/location/provider/LocationProviderManager$LocationTransport;Lcom/android/server/location/provider/LocationProviderManager$LocationListenerTransport;
+HPLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->acceptLocationChange(Landroid/location/LocationResult;)Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;+]Lcom/android/server/location/injector/AppOpsHelper;Lcom/android/server/location/injector/SystemAppOpsHelper;]Lcom/android/server/location/provider/LocationProviderManager$Registration;Lcom/android/server/location/provider/LocationProviderManager$LocationListenerRegistration;]Lcom/android/server/location/provider/LocationProviderManager;Lcom/android/server/location/provider/LocationProviderManager;,Lcom/android/server/location/provider/PassiveLocationProviderManager;
+HSPLcom/android/server/location/provider/LocationProviderManager;->isEnabled(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
+HPLcom/android/server/location/provider/LocationProviderManager;->onReportLocation(Landroid/location/LocationResult;)V+]Landroid/location/Location;Landroid/location/Location;]Lcom/android/server/location/eventlog/LocationEventLog;Lcom/android/server/location/eventlog/LocationEventLog;]Lcom/android/server/location/provider/LocationProviderManager;Lcom/android/server/location/provider/LocationProviderManager;]Lcom/android/server/location/provider/PassiveLocationProviderManager;Lcom/android/server/location/provider/PassiveLocationProviderManager;
HSPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->equals(Ljava/lang/Object;)Z
+HSPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->hashCode()I
+HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;->contains(ILjava/lang/String;I)Z
+HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;->peek(ILjava/lang/String;I)Ljava/lang/Object;
HSPLcom/android/server/locksettings/LockSettingsStorage;->readKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;+]Landroid/database/Cursor;Landroid/database/sqlite/SQLiteCursor;]Landroid/database/sqlite/SQLiteOpenHelper;Lcom/android/server/locksettings/LockSettingsStorage$DatabaseHelper;]Lcom/android/server/locksettings/LockSettingsStorage$Cache;Lcom/android/server/locksettings/LockSettingsStorage$Cache;
-HPLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->maybeUpdateDiscoveryPreferenceForUid(I)V+]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/stream/Stream;Ljava/util/stream/ReferencePipeline$Head;
+HSPLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->maybeUpdateDiscoveryPreferenceForUid(I)V+]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/stream/Stream;Ljava/util/stream/ReferencePipeline$Head;
+HSPLcom/android/server/media/MediaRouter2ServiceImpl;->lambda$new$0(II)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/net/NetworkManagementService$Dependencies;->getCallingUid()I
HSPLcom/android/server/net/NetworkManagementService$LocalService;->isNetworkRestrictedForUid(I)Z
HSPLcom/android/server/net/NetworkManagementService;->enforceSystemUid()V+]Lcom/android/server/net/NetworkManagementService$Dependencies;Lcom/android/server/net/NetworkManagementService$Dependencies;
@@ -1997,7 +2084,8 @@ HSPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->uidStateChanged(IIJI)
HSPLcom/android/server/net/NetworkPolicyLogger;->uidFirewallRuleChanged(III)V
HSPLcom/android/server/net/NetworkPolicyLogger;->uidStateChanged(IIJI)V
HSPLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService$15;->handleMessage(Landroid/os/Message;)Z+]Landroid/app/usage/NetworkStatsManager;Landroid/app/usage/NetworkStatsManager;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;
+HSPLcom/android/server/net/NetworkPolicyManagerService$15;->handleMessage(Landroid/os/Message;)Z+]Landroid/app/usage/NetworkStatsManager;Landroid/app/usage/NetworkStatsManager;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;
+HSPLcom/android/server/net/NetworkPolicyManagerService$16;->handleMessage(Landroid/os/Message;)Z+]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;
HSPLcom/android/server/net/NetworkPolicyManagerService$4;->isUidStateChangeRelevant(Lcom/android/server/net/NetworkPolicyManagerService$UidStateCallbackInfo;IJI)Z
HSPLcom/android/server/net/NetworkPolicyManagerService$4;->onUidStateChanged(IIJI)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->onTempPowerSaveWhitelistChange(IZILjava/lang/String;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/net/NetworkPolicyLogger;Lcom/android/server/net/NetworkPolicyLogger;
@@ -2010,10 +2098,11 @@ HSPLcom/android/server/net/NetworkPolicyManagerService;->isAllowlistedFromPowerS
HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidExemptFromBackgroundRestrictions(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;
HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictPowerUL(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidIdle(II)Z+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
-HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForDenylistRulesUL(I)Z
+HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForAllowlistRulesUL(I)Z
HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForRulesUL(I)Z
HSPLcom/android/server/net/NetworkPolicyManagerService;->postBlockedReasonsChangedMsg(III)V
HSPLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRuleUL(III)V+]Landroid/os/INetworkManagementService;Lcom/android/server/net/NetworkManagementService;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/net/NetworkPolicyLogger;Lcom/android/server/net/NetworkPolicyLogger;
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkEnabledNL()V+]Landroid/net/NetworkPolicy;Landroid/net/NetworkPolicy;]Lcom/android/internal/util/StatLogger;Lcom/android/internal/util/StatLogger;
HPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkRulesNL()V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/net/ConnectivityManager;Landroid/net/ConnectivityManager;]Landroid/net/Network;Landroid/net/Network;]Landroid/net/NetworkPolicy;Landroid/net/NetworkPolicy;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkStats(IZ)V+]Landroid/app/usage/NetworkStatsManager;Landroid/app/usage/NetworkStatsManager;
HSPLcom/android/server/net/NetworkPolicyManagerService;->updateNotificationsNL()V+]Landroid/net/NetworkPolicy;Landroid/net/NetworkPolicy;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/time/Clock;Landroid/os/BestClock;
@@ -2030,6 +2119,7 @@ HPLcom/android/server/net/watchlist/NetworkWatchlistService$1;->onDnsEvent(IIILj
HPLcom/android/server/net/watchlist/WatchlistConfig;->containsDomain(Ljava/lang/String;)Z
HPLcom/android/server/net/watchlist/WatchlistConfig;->containsIp(Ljava/lang/String;)Z
HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->asyncNetworkEvent(Ljava/lang/String;[Ljava/lang/String;I)V
+HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->getAllSubDomains(Ljava/lang/String;)[Ljava/lang/String;
HSPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->handleMessage(Landroid/os/Message;)V
HSPLcom/android/server/notification/BadgeExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/RankingConfig;Lcom/android/server/notification/PreferencesHelper;
HSPLcom/android/server/notification/BubbleExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Landroid/app/ActivityManager;Landroid/app/ActivityManager;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/BubbleExtractor;Lcom/android/server/notification/BubbleExtractor;]Lcom/android/server/notification/RankingConfig;Lcom/android/server/notification/PreferencesHelper;
@@ -2043,37 +2133,24 @@ HSPLcom/android/server/notification/ManagedServices;->getServices()Ljava/util/Li
HSPLcom/android/server/notification/ManagedServices;->isPackageOrComponentAllowed(Ljava/lang/String;I)Z
HSPLcom/android/server/notification/ManagedServices;->isServiceTokenValidLocked(Landroid/os/IInterface;)Z
HSPLcom/android/server/notification/ManagedServices;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;ZI)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/ConditionProviders;,Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;,Lcom/android/server/notification/NotificationManagerService$NotificationListeners;
-HSPLcom/android/server/notification/NotificationAttentionHelper;->buzzBeepBlinkLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationAttentionHelper$Signals;)I+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/media/AudioManager;Landroid/media/AudioManager;]Landroid/metrics/LogMaker;Landroid/metrics/LogMaker;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;->getChannelKey(Lcom/android/server/notification/NotificationRecord;)Ljava/lang/String;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
+HSPLcom/android/server/notification/NotificationAttentionHelper;->buzzBeepBlinkLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationAttentionHelper$Signals;)I+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/media/AudioManager;Landroid/media/AudioManager;]Landroid/metrics/LogMaker;Landroid/metrics/LogMaker;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;Lcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/notification/NotificationChannelExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/media/AudioAttributes$Builder;Landroid/media/AudioAttributes$Builder;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/RankingConfig;Lcom/android/server/notification/PreferencesHelper;
HSPLcom/android/server/notification/NotificationIntrusivenessExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
-HPLcom/android/server/notification/NotificationManagerService$12;->applyEnqueuedAdjustmentFromAssistant(Landroid/service/notification/INotificationListener;Landroid/service/notification/Adjustment;)V+]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;]Lcom/android/server/notification/NotificationManagerService$12;Lcom/android/server/notification/NotificationManagerService$12;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/notification/NotificationManagerService$12;->areNotificationsEnabled(Ljava/lang/String;)Z+]Lcom/android/server/notification/NotificationManagerService$12;Lcom/android/server/notification/NotificationManagerService$12;
-HPLcom/android/server/notification/NotificationManagerService$12;->areNotificationsEnabledForPackage(Ljava/lang/String;I)Z
-HPLcom/android/server/notification/NotificationManagerService$12;->canNotifyAsPackage(Ljava/lang/String;Ljava/lang/String;I)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;
-HSPLcom/android/server/notification/NotificationManagerService$12;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V+]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;
-HSPLcom/android/server/notification/NotificationManagerService$12;->createNotificationChannels(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
-HSPLcom/android/server/notification/NotificationManagerService$12;->createNotificationChannelsImpl(Ljava/lang/String;ILandroid/content/pm/ParceledListSlice;I)V+]Landroid/content/pm/ParceledListSlice;Landroid/content/pm/ParceledListSlice;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/ConditionProviders;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Arrays$ArrayList;,Ljava/util/Collections$EmptyList;
-HPLcom/android/server/notification/NotificationManagerService$12;->enforceSystemOrSystemUIOrSamePackage(Ljava/lang/String;Ljava/lang/String;)V+]Landroid/content/Context;Landroid/app/ContextImpl;
-HSPLcom/android/server/notification/NotificationManagerService$12;->getAppActiveNotifications(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Collection;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
-HPLcom/android/server/notification/NotificationManagerService$12;->getConversationNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Landroid/app/NotificationChannel;+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/notification/NotificationManagerService$12;Lcom/android/server/notification/NotificationManagerService$12;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;
-HPLcom/android/server/notification/NotificationManagerService$12;->getNotificationChannelGroup(Ljava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannelGroup;+]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;
-HPLcom/android/server/notification/NotificationManagerService$12;->getNotificationChannelGroups(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;
-HPLcom/android/server/notification/NotificationManagerService$12;->getNotificationChannels(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/notification/NotificationManagerService$12;Lcom/android/server/notification/NotificationManagerService$12;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;
-HPLcom/android/server/notification/NotificationManagerService$12;->sanitizeSbn(Ljava/lang/String;ILandroid/service/notification/StatusBarNotification;)Landroid/service/notification/StatusBarNotification;+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
+HSPLcom/android/server/notification/NotificationManagerService$13;->areNotificationsEnabledForPackage(Ljava/lang/String;I)Z
HSPLcom/android/server/notification/NotificationManagerService$CancelNotificationRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;IILjava/lang/String;Ljava/lang/String;IIIZIIIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;J)V
-HSPLcom/android/server/notification/NotificationManagerService$CancelNotificationRunnable;->run()V+]Landroid/app/Notification;Landroid/app/Notification;]Lcom/android/server/notification/NotificationDelegate;Lcom/android/server/notification/NotificationManagerService$1;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Lcom/android/server/notification/ShortcutHelper;Lcom/android/server/notification/ShortcutHelper;
+HSPLcom/android/server/notification/NotificationManagerService$CancelNotificationRunnable;->run()V+]Landroid/app/Notification;Landroid/app/Notification;]Lcom/android/server/notification/GroupHelper;Lcom/android/server/notification/GroupHelper;]Lcom/android/server/notification/NotificationDelegate;Lcom/android/server/notification/NotificationManagerService$1;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Lcom/android/server/notification/ShortcutHelper;Lcom/android/server/notification/ShortcutHelper;
HSPLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;->enqueueNotification()Z+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;]Lcom/android/server/notification/TimeToLiveHelper;Lcom/android/server/notification/TimeToLiveHelper;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onNotificationEnqueuedLocked(Lcom/android/server/notification/NotificationRecord;)V+]Landroid/service/notification/INotificationListener;Landroid/service/notification/INotificationListener$Stub$Proxy;]Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getNotificationListenerFilter(Landroid/util/Pair;)Landroid/service/notification/NotificationListenerFilter;
HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->isUidTrusted(I)Z
-HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelGroupChanged(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V+]Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->prepareNotifyPostedLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Z)Ljava/util/List;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->postNotification()Z+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/internal/logging/InstanceIdSequence;Lcom/android/internal/logging/InstanceIdSequence;]Lcom/android/server/notification/ManagedServices$UserProfiles;Lcom/android/server/notification/ManagedServices$UserProfiles;]Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationRecordLogger;Lcom/android/server/notification/NotificationRecordLoggerImpl;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Lcom/android/server/notification/RankingHelper;Lcom/android/server/notification/RankingHelper;]Lcom/android/server/notification/ShortcutHelper;Lcom/android/server/notification/ShortcutHelper;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->prepareNotifyPostedLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Z)Ljava/util/List;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->postNotification()Z+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/internal/logging/InstanceIdSequence;Lcom/android/internal/logging/InstanceIdSequence;]Lcom/android/server/notification/GroupHelper;Lcom/android/server/notification/GroupHelper;]Lcom/android/server/notification/ManagedServices$UserProfiles;Lcom/android/server/notification/ManagedServices$UserProfiles;]Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationRecordLogger;Lcom/android/server/notification/NotificationRecordLoggerImpl;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Lcom/android/server/notification/RankingHelper;Lcom/android/server/notification/RankingHelper;]Lcom/android/server/notification/ShortcutHelper;Lcom/android/server/notification/ShortcutHelper;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/notification/NotificationManagerService$StrongAuthTracker;->isInLockDownMode(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
HSPLcom/android/server/notification/NotificationManagerService$TrimCache;->ForListener(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/StatusBarNotification;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;
HSPLcom/android/server/notification/NotificationManagerService$WorkerHandler;->scheduleCancelNotification(Lcom/android/server/notification/NotificationManagerService$CancelNotificationRunnable;I)V
HPLcom/android/server/notification/NotificationManagerService;->applyAdjustmentLocked(Lcom/android/server/notification/NotificationRecord;Landroid/service/notification/Adjustment;Z)V+]Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
-HSPLcom/android/server/notification/NotificationManagerService;->areNotificationsEnabledForPackageInt(Ljava/lang/String;I)Z
+HSPLcom/android/server/notification/NotificationManagerService;->areNotificationsEnabledForPackageInt(I)Z
HSPLcom/android/server/notification/NotificationManagerService;->cancelNotification(IILjava/lang/String;Ljava/lang/String;IIIZIIIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V+]Lcom/android/server/notification/NotificationManagerService$WorkerHandler;Lcom/android/server/notification/NotificationManagerService$WorkerHandler;
HSPLcom/android/server/notification/NotificationManagerService;->cancelNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;III)V+]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;
HSPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSameApp(Ljava/lang/String;)V
@@ -2082,8 +2159,9 @@ HSPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSy
HSPLcom/android/server/notification/NotificationManagerService;->checkDisqualifyingFeatures(IIILjava/lang/String;Lcom/android/server/notification/NotificationRecord;ZZ)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/Notification$Action;Landroid/app/Notification$Action;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;
HSPLcom/android/server/notification/NotificationManagerService;->enqueueNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;IZLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;ZZ)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/job/JobSchedulerInternal;Lcom/android/server/job/JobSchedulerService$LocalService;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Lcom/android/server/notification/ShortcutHelper;Lcom/android/server/notification/ShortcutHelper;]Ljava/util/Set;Ljava/util/ImmutableCollections$SetN;
HSPLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/notification/NotificationManagerService;->findNotificationLocked(Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord;
HSPLcom/android/server/notification/NotificationManagerService;->fixNotification(Landroid/app/Notification;Ljava/lang/String;Ljava/lang/String;IIILandroid/app/ActivityManagerInternal$ServiceNotificationPolicy;Z)V+]Landroid/app/Notification$Builder;Landroid/app/Notification$Builder;]Landroid/app/Notification$CallStyle;Landroid/app/Notification$CallStyle;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/notification/NotificationManagerService;->handleRankingSort()V+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationManagerService$WorkerHandler;Lcom/android/server/notification/NotificationManagerService$WorkerHandler;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationRecordLogger;Lcom/android/server/notification/NotificationRecordLoggerImpl;]Lcom/android/server/notification/RankingHelper;Lcom/android/server/notification/RankingHelper;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/notification/NotificationManagerService;->getPackageImportanceWithIdentity(Ljava/lang/String;)I+]Landroid/app/ActivityManager;Landroid/app/ActivityManager;
HSPLcom/android/server/notification/NotificationManagerService;->isCallerSystemOrPhone()Z+]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;
HSPLcom/android/server/notification/NotificationManagerService;->isInLockDownMode(I)Z+]Lcom/android/server/notification/NotificationManagerService$StrongAuthTracker;Lcom/android/server/notification/NotificationManagerService$StrongAuthTracker;
HSPLcom/android/server/notification/NotificationManagerService;->isInteractionVisibleToListener(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)Z+]Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
@@ -2091,12 +2169,9 @@ HSPLcom/android/server/notification/NotificationManagerService;->isRecordBlocked
HSPLcom/android/server/notification/NotificationManagerService;->isServiceTokenValid(Landroid/os/IInterface;)Z+]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;
HSPLcom/android/server/notification/NotificationManagerService;->isUidSystemOrPhone(I)Z
HSPLcom/android/server/notification/NotificationManagerService;->isVisibleToListener(Landroid/service/notification/StatusBarNotification;ILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z+]Landroid/service/notification/NotificationListenerFilter;Landroid/service/notification/NotificationListenerFilter;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;
-HSPLcom/android/server/notification/NotificationManagerService;->isVisuallyInterruptive(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)Z+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
-HSPLcom/android/server/notification/NotificationManagerService;->lambda$acquireWakeLockForPost$7(Ljava/lang/String;I)Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;+]Lcom/android/server/notification/NotificationManagerService$PostNotificationTrackerFactory;Lcom/android/server/notification/NotificationManagerService$10;
HSPLcom/android/server/notification/NotificationManagerService;->makeRankingUpdateLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/NotificationRankingUpdate;+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/notification/NotificationManagerService;->maybeRecordInterruptionLocked(Lcom/android/server/notification/NotificationRecord;)V+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationHistoryManager;Lcom/android/server/notification/NotificationHistoryManager;
-HPLcom/android/server/notification/NotificationManagerService;->notificationMatchesUserId(Lcom/android/server/notification/NotificationRecord;IZ)Z
-HSPLcom/android/server/notification/NotificationManagerService;->resolveNotificationUid(Ljava/lang/String;Ljava/lang/String;II)I
+HSPLcom/android/server/notification/NotificationManagerService;->notificationMatchesUserId(Lcom/android/server/notification/NotificationRecord;IZ)Z
+HSPLcom/android/server/notification/NotificationManagerService;->resolveNotificationUid(Ljava/lang/String;Ljava/lang/String;II)I+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;
HSPLcom/android/server/notification/NotificationManagerService;->updateUriPermissions(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;IZ)V+]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;
HSPLcom/android/server/notification/NotificationRecord;-><init>(Landroid/content/Context;Landroid/service/notification/StatusBarNotification;Landroid/app/NotificationChannel;)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
HSPLcom/android/server/notification/NotificationRecord;->applyAdjustments()V+]Ljava/lang/Object;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
@@ -2106,6 +2181,7 @@ HSPLcom/android/server/notification/NotificationRecord;->calculateInitialImporta
HSPLcom/android/server/notification/NotificationRecord;->calculateLights()Lcom/android/server/notification/NotificationRecord$Light;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;
HSPLcom/android/server/notification/NotificationRecord;->calculateVibration()Landroid/os/VibrationEffect;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
HSPLcom/android/server/notification/NotificationRecord;->getImportanceExplanation()Ljava/lang/CharSequence;
+HSPLcom/android/server/notification/NotificationRecord;->getKey()Ljava/lang/String;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
HSPLcom/android/server/notification/NotificationRecord;->getLogMaker(J)Landroid/metrics/LogMaker;+]Landroid/metrics/LogMaker;Landroid/metrics/LogMaker;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
HSPLcom/android/server/notification/NotificationRecord;->getNotification()Landroid/app/Notification;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
HSPLcom/android/server/notification/NotificationRecord;->getNotificationType()I
@@ -2113,38 +2189,47 @@ HSPLcom/android/server/notification/NotificationRecord;->getSbn()Landroid/servic
HSPLcom/android/server/notification/NotificationRecord;->getUser()Landroid/os/UserHandle;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
HSPLcom/android/server/notification/NotificationRecord;->getUserId()I+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
HSPLcom/android/server/notification/NotificationRecord;->isConversation()Z+]Landroid/app/Notification;Landroid/app/Notification;
-HSPLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->shouldLogReported(I)Z+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
-HSPLcom/android/server/notification/NotificationRecordLogger$NotificationReported;-><init>(Lcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;Lcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;IILcom/android/internal/logging/InstanceId;)V
+HSPLcom/android/server/notification/NotificationRecord;->updateNotificationChannel(Landroid/app/NotificationChannel;)V
+HSPLcom/android/server/notification/NotificationRecordLogger$NotificationReported;-><init>(Lcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;Lcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;IILcom/android/internal/logging/InstanceId;)V+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;Lcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;
+HSPLcom/android/server/notification/NotificationRecordLoggerImpl;->writeNotificationReportedAtom(Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;)V
HSPLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->countApiUse(Lcom/android/server/notification/NotificationRecord;)V+]Lcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;Lcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
HSPLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;-><init>()V
HSPLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Ljava/lang/String;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
HSPLcom/android/server/notification/NotificationUsageStats;->getOrCreateAggregatedStatsLocked(Ljava/lang/String;)Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;+]Ljava/util/Map;Ljava/util/HashMap;
HSPLcom/android/server/notification/PermissionHelper;->hasPermission(I)Z+]Landroid/content/Context;Landroid/app/ContextImpl;
HSPLcom/android/server/notification/PreferencesHelper$PackagePreferences;-><init>()V
-HSPLcom/android/server/notification/PreferencesHelper;->createNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;ZZIZ)Z+]Landroid/metrics/LogMaker;Landroid/metrics/LogMaker;]Lcom/android/server/notification/NotificationChannelLogger;Lcom/android/server/notification/NotificationChannelLoggerImpl;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/concurrent/ConcurrentHashMap;
+HSPLcom/android/server/notification/PreferencesHelper;->createNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;ZZIZ)Z+]Landroid/metrics/LogMaker;Landroid/metrics/LogMaker;]Lcom/android/server/notification/NotificationChannelLogger;Lcom/android/server/notification/NotificationChannelLoggerImpl;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;
HSPLcom/android/server/notification/PreferencesHelper;->getConversationNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZZ)Landroid/app/NotificationChannel;
-HPLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroupWithChannels(Ljava/lang/String;ILjava/lang/String;Z)Landroid/app/NotificationChannelGroup;+]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/concurrent/ConcurrentHashMap;
-HPLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroups(Ljava/lang/String;IZZZZLjava/util/Set;)Landroid/content/pm/ParceledListSlice;+]Ljava/util/Collection;Ljava/util/concurrent/ConcurrentHashMap$ValuesView;]Ljava/util/Iterator;Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;]Ljava/util/Set;Ljava/util/HashSet;
+HPLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroupWithChannels(Ljava/lang/String;ILjava/lang/String;Z)Landroid/app/NotificationChannelGroup;+]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;
+HPLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroups(Ljava/lang/String;IZZZZLjava/util/Set;)Landroid/content/pm/ParceledListSlice;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;,Ljava/util/concurrent/ConcurrentHashMap$ValuesView;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/concurrent/ConcurrentHashMap;]Ljava/util/Set;Ljava/util/HashSet;
HSPLcom/android/server/notification/PreferencesHelper;->getOrCreatePackagePreferencesLocked(Ljava/lang/String;I)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;+]Ljava/time/Clock;Ljava/time/Clock$SystemClock;
-HSPLcom/android/server/notification/PreferencesHelper;->getOrCreatePackagePreferencesLocked(Ljava/lang/String;IIIIIZIJ)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;
+HSPLcom/android/server/notification/PreferencesHelper;->getOrCreatePackagePreferencesLocked(Ljava/lang/String;IIIIIZIJ)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;+]Ljava/time/Clock;Ljava/time/Clock$SystemClock;
HSPLcom/android/server/notification/PreferencesHelper;->getPackagePreferencesLocked(Ljava/lang/String;I)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;
HSPLcom/android/server/notification/PreferencesHelper;->packagePreferencesKey(Ljava/lang/String;I)Ljava/lang/String;
-HPLcom/android/server/notification/PreferencesHelper;->pullPackagePreferencesStats(Ljava/util/List;Landroid/util/ArrayMap;)V+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
+HSPLcom/android/server/notification/PreferencesHelper;->readXml(Lcom/android/modules/utils/TypedXmlPullParser;ZI)V
HSPLcom/android/server/notification/PreferencesHelper;->restoreChannel(Lcom/android/modules/utils/TypedXmlPullParser;ZLcom/android/server/notification/PreferencesHelper$PackagePreferences;)V
HSPLcom/android/server/notification/PreferencesHelper;->restorePackage(Lcom/android/modules/utils/TypedXmlPullParser;ZILjava/lang/String;ZZ)V
HSPLcom/android/server/notification/PreferencesHelper;->writePackageXml(Lcom/android/server/notification/PreferencesHelper$PackagePreferences;Lcom/android/modules/utils/TypedXmlSerializer;Landroid/util/ArrayMap;Z)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;,Ljava/util/concurrent/ConcurrentHashMap$ValuesView;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/concurrent/ConcurrentHashMap;
-HSPLcom/android/server/notification/PreferencesHelper;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;ZI)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;
+HSPLcom/android/server/notification/PreferencesHelper;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;ZI)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
HSPLcom/android/server/notification/RankingHelper;->sort(Ljava/util/ArrayList;)V+]Landroid/app/Notification;Landroid/app/Notification;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/notification/SnoozeHelper;->cancel(ILjava/lang/String;Ljava/lang/String;I)Z+]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;
HSPLcom/android/server/notification/SnoozeHelper;->getSnoozed(ILjava/lang/String;)Ljava/util/Collection;+]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
-HPLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;
+HSPLcom/android/server/notification/TimeToLiveHelper;->removeMatchingEntry(Ljava/lang/String;)V+]Ljava/util/Iterator;Ljava/util/TreeMap$KeyIterator;]Ljava/util/TreeSet;Ljava/util/TreeSet;
+HSPLcom/android/server/notification/TimeToLiveHelper;->scheduleTimeoutLocked(Lcom/android/server/notification/NotificationRecord;J)V+]Landroid/app/Notification;Landroid/app/Notification;]Ljava/util/TreeSet;Ljava/util/TreeSet;
+HSPLcom/android/server/notification/ValidateNotificationPeople;->getExtraPeopleForKey(Landroid/os/Bundle;Ljava/lang/String;)[Ljava/lang/String;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;
+HSPLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;Ljava/util/List;[FLandroid/util/ArraySet;)Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/notification/ValidateNotificationPeople$LookupResult;Lcom/android/server/notification/ValidateNotificationPeople$LookupResult;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
HSPLcom/android/server/notification/VibratorHelper;-><init>(Landroid/content/Context;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;
+HSPLcom/android/server/notification/VibratorHelper;->getFloatArray(Landroid/content/res/Resources;I)[F+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
HSPLcom/android/server/notification/VisibilityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Lcom/android/server/notification/RankingConfig;Lcom/android/server/notification/PreferencesHelper;
-HSPLcom/android/server/om/OverlayReferenceMapper$1;->getTargetToOverlayables(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/util/Map;+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+HSPLcom/android/server/notification/ZenModeHelper;->zenRuleToAutomaticZenRule(Landroid/service/notification/ZenModeConfig$ZenRule;)Landroid/app/AutomaticZenRule;
+HSPLcom/android/server/om/OverlayManagerServiceImpl;->updateState(Landroid/content/om/CriticalOverlayInfo;II)Z
+HSPLcom/android/server/om/OverlayManagerSettings;->forEachMatching(ILjava/lang/String;Ljava/lang/String;Ljava/util/function/Consumer;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Consumer;Lcom/android/server/om/OverlayManagerServiceImpl$$ExternalSyntheticLambda1;
+HSPLcom/android/server/om/OverlayManagerSettings;->select(Landroid/content/om/OverlayIdentifier;I)I+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/om/OverlayReferenceMapper;->addPkg(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;)Landroid/util/ArraySet;
-HSPLcom/android/server/om/OverlayReferenceMapper;->addTarget(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;Ljava/util/Collection;)V+]Lcom/android/server/om/OverlayReferenceMapper$Provider;Lcom/android/server/om/OverlayReferenceMapper$1;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/Collections$EmptyMap;,Ljava/util/Collections$UnmodifiableMap;,Ljava/util/HashMap;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;,Ljava/util/HashSet;
-HSPLcom/android/server/om/OverlayReferenceMapper;->ensureMapBuilt()V
-HSPLcom/android/server/om/OverlayReferenceMapper;->isValidActor(Ljava/lang/String;Ljava/lang/String;)Z
+HSPLcom/android/server/om/OverlayReferenceMapper;->addTarget(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;Ljava/util/Collection;)V+]Lcom/android/server/om/OverlayReferenceMapper$Provider;Lcom/android/server/om/OverlayReferenceMapper$1;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/Collections$UnmodifiableCollection$1;,Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1;]Ljava/util/Map$Entry;Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry;]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/Collections$EmptyMap;,Ljava/util/Collections$UnmodifiableMap;,Ljava/util/HashMap;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;,Ljava/util/Collections$UnmodifiableSet;,Ljava/util/HashSet;
+HPLcom/android/server/om/OverlayReferenceMapper;->ensureMapBuilt()V
+HPLcom/android/server/om/OverlayReferenceMapper;->isValidActor(Ljava/lang/String;Ljava/lang/String;)Z
HSPLcom/android/server/os/NativeTombstoneManager;->collectTombstones(Ljava/util/ArrayList;III)V
HSPLcom/android/server/permission/access/AccessCheckingService;->access$getState$p(Lcom/android/server/permission/access/AccessCheckingService;)Lcom/android/server/permission/access/AccessState;
HSPLcom/android/server/permission/access/AccessPersistence;->write(Lcom/android/server/permission/access/AccessState;)V
@@ -2152,62 +2237,62 @@ HSPLcom/android/server/permission/access/AccessPersistence;->write(Lcom/android/
HSPLcom/android/server/permission/access/AccessPersistence;->writeUserState(Lcom/android/server/permission/access/AccessState;I)V
HSPLcom/android/server/permission/access/AccessPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V+]Lcom/android/server/permission/access/SchemePolicy;Lcom/android/server/permission/access/appop/AppIdAppOpPolicy;,Lcom/android/server/permission/access/appop/PackageAppOpPolicy;,Lcom/android/server/permission/access/permission/AppIdPermissionPolicy;,Lcom/android/server/permission/access/permission/DevicePermissionPolicy;
HSPLcom/android/server/permission/access/AccessPolicy;->serializePackageVersions(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/immutable/IndexedMap;)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer;]Ljava/lang/Number;Ljava/lang/Integer;
+HSPLcom/android/server/permission/access/AccessPolicy;->serializeUserState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;I)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer;]Lcom/android/server/permission/access/SchemePolicy;Lcom/android/server/permission/access/appop/AppIdAppOpPolicy;,Lcom/android/server/permission/access/appop/PackageAppOpPolicy;,Lcom/android/server/permission/access/permission/AppIdPermissionPolicy;,Lcom/android/server/permission/access/permission/DevicePermissionPolicy;
HSPLcom/android/server/permission/access/AccessState;->getExternalState()Lcom/android/server/permission/access/ExternalState;
HSPLcom/android/server/permission/access/AccessState;->getSystemState()Lcom/android/server/permission/access/SystemState;
HSPLcom/android/server/permission/access/AccessState;->getUserStates()Lcom/android/server/permission/access/immutable/IntReferenceMap;
HSPLcom/android/server/permission/access/AccessState;->toMutable()Lcom/android/server/permission/access/MutableAccessState;
+HSPLcom/android/server/permission/access/ExternalState;->getAppIdPackageNames()Lcom/android/server/permission/access/immutable/IntReferenceMap;
HSPLcom/android/server/permission/access/GetStateScope;-><init>(Lcom/android/server/permission/access/AccessState;)V
HSPLcom/android/server/permission/access/GetStateScope;->getState()Lcom/android/server/permission/access/AccessState;
HSPLcom/android/server/permission/access/MutableAccessState;-><init>(Lcom/android/server/permission/access/AccessState;)V
-HSPLcom/android/server/permission/access/MutableAccessState;->mutateSystemState$default(Lcom/android/server/permission/access/MutableAccessState;IILjava/lang/Object;)Lcom/android/server/permission/access/MutableSystemState;
HSPLcom/android/server/permission/access/MutableAccessState;->mutateSystemState(I)Lcom/android/server/permission/access/MutableSystemState;
-HSPLcom/android/server/permission/access/MutableSystemState;->requestWriteMode(I)V
+HSPLcom/android/server/permission/access/MutableSystemState;->mutatePermissions()Lcom/android/server/permission/access/immutable/MutableIndexedMap;
HSPLcom/android/server/permission/access/MutateStateScope;->getNewState()Lcom/android/server/permission/access/MutableAccessState;
HSPLcom/android/server/permission/access/SystemState;->getPermissions()Lcom/android/server/permission/access/immutable/IndexedMap;
HSPLcom/android/server/permission/access/SystemState;->getWriteMode()I
-HSPLcom/android/server/permission/access/SystemState;->setWriteMode(I)V
-HSPLcom/android/server/permission/access/UserState;->getAppIdAppOpModes()Lcom/android/server/permission/access/immutable/IntReferenceMap;
HSPLcom/android/server/permission/access/UserState;->getAppIdPermissionFlags()Lcom/android/server/permission/access/immutable/IntReferenceMap;
-HSPLcom/android/server/permission/access/appop/AppIdAppOpPersistence;->serializeAppIdAppOps(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/immutable/IntReferenceMap;)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer;
+HSPLcom/android/server/permission/access/UserState;->getWriteMode()I
HSPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->getAppOpMode(Lcom/android/server/permission/access/GetStateScope;IILjava/lang/String;)I+]Ljava/lang/Number;Ljava/lang/Integer;
HSPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->getAppOpModes(Lcom/android/server/permission/access/GetStateScope;II)Lcom/android/server/permission/access/immutable/IndexedMap;
HSPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V+]Lcom/android/server/permission/access/appop/AppIdAppOpPolicy$OnAppOpModeChangedListener;Lcom/android/server/permission/access/appop/AppOpService$OnAppIdAppOpModeChangedListener;
HSPLcom/android/server/permission/access/appop/AppOpService$OnAppIdAppOpModeChangedListener;->onStateMutated()V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/appop/AppOpsCheckingServiceInterface$AppOpsModeChangedListener;Lcom/android/server/appop/AppOpsService$2;]Ljava/lang/Number;Ljava/lang/Integer;
HSPLcom/android/server/permission/access/appop/AppOpService$OnPackageAppOpModeChangedListener;->onStateMutated()V+]Lcom/android/server/appop/AppOpsCheckingServiceInterface$AppOpsModeChangedListener;Lcom/android/server/appop/AppOpsService$2;]Ljava/lang/Number;Ljava/lang/Integer;
-HPLcom/android/server/permission/access/appop/AppOpService$OnPermissionFlagsChangedListener;->onStateMutated()V+]Lcom/android/server/appop/AppOpsCheckingServiceInterface$AppOpsModeChangedListener;Lcom/android/server/appop/AppOpsService$2;]Ljava/lang/Number;Ljava/lang/Integer;
-HSPLcom/android/server/permission/access/appop/AppOpService;->access$getListeners$p(Lcom/android/server/permission/access/appop/AppOpService;)Landroid/util/ArraySet;
+HSPLcom/android/server/permission/access/appop/AppOpService$OnPermissionFlagsChangedListener;->onStateMutated()V+]Lcom/android/server/appop/AppOpsCheckingServiceInterface$AppOpsModeChangedListener;Lcom/android/server/appop/AppOpsService$2;]Ljava/lang/Number;Ljava/lang/Integer;
HSPLcom/android/server/permission/access/appop/AppOpService;->evaluateModeFromPermissionFlags(II)I
HSPLcom/android/server/permission/access/appop/AppOpService;->getForegroundOps(ILjava/lang/String;)Landroid/util/SparseBooleanArray;+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Ljava/lang/Number;Ljava/lang/Integer;
HSPLcom/android/server/permission/access/appop/AppOpService;->getForegroundOps(Ljava/lang/String;I)Landroid/util/SparseBooleanArray;+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Ljava/lang/Number;Ljava/lang/Integer;
HSPLcom/android/server/permission/access/appop/AppOpService;->getPackageMode(Ljava/lang/String;II)I
HSPLcom/android/server/permission/access/appop/AppOpService;->getPackageModes(Ljava/lang/String;I)Landroid/util/ArrayMap;
HSPLcom/android/server/permission/access/appop/AppOpService;->getUidMode(ILjava/lang/String;I)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/permission/access/appop/AppOpService;->getUidModeFromPermissionState(Lcom/android/server/permission/access/GetStateScope;IILjava/lang/String;Ljava/lang/String;)I
+HSPLcom/android/server/permission/access/appop/AppOpService;->getUidModeFromPermissionState(Lcom/android/server/permission/access/GetStateScope;IILjava/lang/String;Ljava/lang/String;)I+]Ljava/util/Set;Ljava/util/ImmutableCollections$Set12;
HSPLcom/android/server/permission/access/appop/AppOpService;->getUidModes(I)Landroid/util/ArrayMap;
HPLcom/android/server/permission/access/appop/AppOpService;->setUidMode(ILjava/lang/String;II)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/permission/access/AccessState;Lcom/android/server/permission/access/MutableAccessState;
-HSPLcom/android/server/permission/access/appop/BaseAppOpPersistence;->serializeAppOp(Lcom/android/modules/utils/BinaryXmlSerializer;Ljava/lang/String;I)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer;
HSPLcom/android/server/permission/access/appop/BaseAppOpPersistence;->serializeAppOps(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/immutable/IndexedMap;)V+]Ljava/lang/Number;Ljava/lang/Integer;
HSPLcom/android/server/permission/access/appop/PackageAppOpPolicy;->getAppOpMode(Lcom/android/server/permission/access/GetStateScope;Ljava/lang/String;ILjava/lang/String;)I+]Ljava/lang/Number;Ljava/lang/Integer;
HSPLcom/android/server/permission/access/appop/PackageAppOpPolicy;->getAppOpModes(Lcom/android/server/permission/access/GetStateScope;Ljava/lang/String;I)Lcom/android/server/permission/access/immutable/IndexedMap;
HSPLcom/android/server/permission/access/appop/PackageAppOpPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V+]Lcom/android/server/permission/access/appop/PackageAppOpPolicy$OnAppOpModeChangedListener;Lcom/android/server/permission/access/appop/AppOpService$OnPackageAppOpModeChangedListener;
-HSPLcom/android/server/permission/access/immutable/IndexedList;-><init>(Ljava/util/ArrayList;)V
HSPLcom/android/server/permission/access/immutable/IndexedListSet;->elementAt(I)Ljava/lang/Object;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/permission/access/immutable/IndexedListSet;->getSize()I+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/permission/access/immutable/IndexedMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/permission/access/immutable/IndexedMap;->getMap$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Landroid/util/ArrayMap;
HSPLcom/android/server/permission/access/immutable/IndexedMap;->getSize()I
+HSPLcom/android/server/permission/access/immutable/IndexedMap;->indexOfKey(Ljava/lang/Object;)I
HSPLcom/android/server/permission/access/immutable/IndexedMap;->keyAt(I)Ljava/lang/Object;
HSPLcom/android/server/permission/access/immutable/IndexedMap;->valueAt(I)Ljava/lang/Object;
+HSPLcom/android/server/permission/access/immutable/IndexedMapExtensionsKt;->getWithDefault(Lcom/android/server/permission/access/immutable/IndexedMap;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLcom/android/server/permission/access/immutable/IndexedReferenceMap;->get(Ljava/lang/Object;)Lcom/android/server/permission/access/immutable/Immutable;
HSPLcom/android/server/permission/access/immutable/IndexedSetExtensionsKt;->plusAssign(Lcom/android/server/permission/access/immutable/MutableIndexedSet;Ljava/util/Collection;)V+]Ljava/lang/Iterable;Ljava/util/Collections$UnmodifiableSet;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;
HSPLcom/android/server/permission/access/immutable/IntReferenceMap;->get(I)Lcom/android/server/permission/access/immutable/Immutable;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/permission/access/immutable/IntReferenceMap;->keyAt(I)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/permission/access/immutable/IntReferenceMap;->valueAt(I)Lcom/android/server/permission/access/immutable/Immutable;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/permission/access/immutable/MutableIndexedMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/permission/access/immutable/MutableIndexedList;->add(Ljava/lang/Object;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/permission/access/immutable/MutableReference;-><init>(Lcom/android/server/permission/access/immutable/Immutable;Lcom/android/server/permission/access/immutable/Immutable;)V
HSPLcom/android/server/permission/access/immutable/MutableReference;->get()Lcom/android/server/permission/access/immutable/Immutable;
HSPLcom/android/server/permission/access/immutable/MutableReference;->mutate()Lcom/android/server/permission/access/immutable/Immutable;+]Lcom/android/server/permission/access/immutable/Immutable;megamorphic_types
-HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->parsePermission(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/immutable/MutableIndexedMap;)V
HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializeAppId(Lcom/android/modules/utils/BinaryXmlSerializer;ILcom/android/server/permission/access/immutable/IndexedMap;)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer;]Ljava/lang/Number;Ljava/lang/Integer;
HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializeAppIdPermission(Lcom/android/modules/utils/BinaryXmlSerializer;Ljava/lang/String;I)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializeAppIdPermissions(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/immutable/IntReferenceMap;)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer;
HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializePermission(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/permission/Permission;)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer;
HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializePermissions(Lcom/android/modules/utils/BinaryXmlSerializer;Ljava/lang/String;Lcom/android/server/permission/access/immutable/IndexedMap;)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer;
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->addPermissions(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/immutable/MutableIndexedSet;)V
@@ -2215,19 +2300,21 @@ HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->chec
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->evaluateAllPermissionStatesForPackageAndUser(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;ILcom/android/server/pm/pkg/PackageState;)V+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Iterable;Ljava/util/Collections$UnmodifiableSet;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->evaluatePermissionState(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;Lcom/android/server/pm/pkg/PackageState;)V+]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->findPermissionTree(Lcom/android/server/permission/access/GetStateScope;Ljava/lang/String;)Lcom/android/server/permission/access/permission/Permission;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getAppIdTargetSdkVersion(Lcom/android/server/permission/access/MutateStateScope;ILjava/lang/String;Lcom/android/server/permission/access/AccessState;)I+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPermissionFlags(Lcom/android/server/permission/access/AccessState;IILjava/lang/String;)I+]Ljava/lang/Number;Ljava/lang/Integer;
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPermissionFlags(Lcom/android/server/permission/access/GetStateScope;IILjava/lang/String;)I
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPermissions(Lcom/android/server/permission/access/GetStateScope;)Lcom/android/server/permission/access/immutable/IndexedMap;
-HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPrivilegedPermissionAllowlistState(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Ljava/lang/String;)Ljava/lang/Boolean;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPrivilegedPermissionAllowlistState(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Ljava/lang/String;)Ljava/lang/Boolean;+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getUidPermissionFlags(Lcom/android/server/permission/access/GetStateScope;II)Lcom/android/server/permission/access/immutable/IndexedMap;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->inheritImplicitPermissionStates(Lcom/android/server/permission/access/MutateStateScope;II)V
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V+]Lcom/android/server/permission/access/permission/AppIdPermissionPolicy$OnPermissionFlagsChangedListener;Lcom/android/server/permission/access/appop/AppOpService$OnPermissionFlagsChangedListener;,Lcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->onStorageVolumeMounted(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;Ljava/util/List;Z)V
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->revokePermissionsOnPackageUpdate(Lcom/android/server/permission/access/MutateStateScope;I)V
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->shouldGrantPermissionByProtectionFlags(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/permission/Permission;)Z+]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->shouldGrantPermissionBySignature(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/permission/Permission;)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
-HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->shouldGrantPrivilegedOrOemPermission(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/permission/Permission;)Z
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->shouldGrantPrivilegedOrOemPermission(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/permission/Permission;)Z+]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->trimPermissionStates(Lcom/android/server/permission/access/MutateStateScope;I)V+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Number;Ljava/lang/Integer;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
-HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->trimPermissions(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;Lcom/android/server/permission/access/immutable/MutableIndexedSet;)V+]Lcom/android/internal/pm/pkg/component/ParsedPermission;Lcom/android/internal/pm/pkg/component/ParsedPermissionImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->trimPermissions(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;Lcom/android/server/permission/access/immutable/MutableIndexedSet;)V+]Lcom/android/internal/pm/pkg/component/ParsedPermission;Lcom/android/internal/pm/pkg/component/ParsedPermissionImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->updatePermissionFlags(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;II)Z+]Lcom/android/server/permission/access/permission/AppIdPermissionPolicy$OnPermissionFlagsChangedListener;Lcom/android/server/permission/access/appop/AppOpService$OnPermissionFlagsChangedListener;,Lcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;]Ljava/lang/Number;Ljava/lang/Integer;
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->updatePermissionIfDynamic(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/permission/access/permission/Permission;)Lcom/android/server/permission/access/permission/Permission;
HSPLcom/android/server/permission/access/permission/DevicePermissionPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V+]Lcom/android/server/permission/access/permission/DevicePermissionPolicy$OnDevicePermissionFlagsChangedListener;Lcom/android/server/permission/access/appop/AppOpService$OnPermissionFlagsChangedListener;,Lcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;
@@ -2247,41 +2334,44 @@ HSPLcom/android/server/permission/access/permission/PermissionService;->checkUid
HSPLcom/android/server/permission/access/permission/PermissionService;->enforceCallingOrSelfAnyPermission(Ljava/lang/String;[Ljava/lang/String;)V+]Landroid/content/Context;Landroid/app/ContextImpl;
HSPLcom/android/server/permission/access/permission/PermissionService;->enforceCallingOrSelfCrossUserPermission(IZZLjava/lang/String;)V+]Landroid/content/Context;Landroid/app/ContextImpl;
HSPLcom/android/server/permission/access/permission/PermissionService;->generatePermissionInfo(Lcom/android/server/permission/access/permission/Permission;II)Landroid/content/pm/PermissionInfo;
-HPLcom/android/server/permission/access/permission/PermissionService;->getAllowlistedRestrictedPermissions(Ljava/lang/String;II)Ljava/util/ArrayList;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
-HPLcom/android/server/permission/access/permission/PermissionService;->getAllowlistedRestrictedPermissionsUnchecked(III)Ljava/util/ArrayList;+]Ljava/lang/Number;Ljava/lang/Integer;
+HSPLcom/android/server/permission/access/permission/PermissionService;->getAllPermissionsWithProtection(I)Ljava/util/List;+]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;
+HSPLcom/android/server/permission/access/permission/PermissionService;->getAllowlistedRestrictedPermissions(Ljava/lang/String;II)Ljava/util/ArrayList;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/permission/access/permission/PermissionService;->getAllowlistedRestrictedPermissionsUnchecked(III)Ljava/util/ArrayList;+]Ljava/lang/Number;Ljava/lang/Integer;
+HSPLcom/android/server/permission/access/permission/PermissionService;->getAppOpPermissionPackages(Ljava/lang/String;)[Ljava/lang/String;+]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1;]Ljava/util/Map$Entry;Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;,Ljava/util/Collections$UnmodifiableSet;
HSPLcom/android/server/permission/access/permission/PermissionService;->getGidsForUid(I)[I+]Lcom/android/server/SystemConfig;Lcom/android/server/SystemConfig;]Ljava/lang/Number;Ljava/lang/Integer;
HSPLcom/android/server/permission/access/permission/PermissionService;->getGrantedPermissions(Ljava/lang/String;I)Ljava/util/Set;+]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Number;Ljava/lang/Integer;
HSPLcom/android/server/permission/access/permission/PermissionService;->getInstalledPermissions(Ljava/lang/String;)Ljava/util/Set;
HSPLcom/android/server/permission/access/permission/PermissionService;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/permission/access/permission/PermissionService;->getPermissionFlagsWithPolicy(Lcom/android/server/permission/access/GetStateScope;IILjava/lang/String;Ljava/lang/String;)I
+HSPLcom/android/server/permission/access/permission/PermissionService;->getPermissionFlagsWithPolicy(Lcom/android/server/permission/access/GetStateScope;IILjava/lang/String;Ljava/lang/String;)I+]Ljava/util/Set;Ljava/util/ImmutableCollections$Set12;
HSPLcom/android/server/permission/access/permission/PermissionService;->getPermissionInfo(Ljava/lang/String;ILjava/lang/String;)Landroid/content/pm/PermissionInfo;+]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/permission/access/permission/PermissionService;->isPackageVisibleToUid(Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Ljava/lang/String;II)Z+]Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;
HSPLcom/android/server/permission/access/permission/PermissionService;->isPermissionGranted(Lcom/android/server/permission/access/GetStateScope;Lcom/android/server/pm/pkg/PackageState;ILjava/lang/String;Ljava/lang/String;)Z+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;
HSPLcom/android/server/permission/access/permission/PermissionService;->isPermissionsReviewRequired(Ljava/lang/String;I)Z+]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Number;Ljava/lang/Integer;
HSPLcom/android/server/permission/access/permission/PermissionService;->isRootOrSystemOrShellUid(I)Z
-HSPLcom/android/server/permission/access/permission/PermissionService;->isSinglePermissionGranted(Lcom/android/server/permission/access/GetStateScope;IIZLjava/lang/String;Ljava/lang/String;)Z+]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;
+HSPLcom/android/server/permission/access/permission/PermissionService;->isSinglePermissionGranted(Lcom/android/server/permission/access/GetStateScope;IIZLjava/lang/String;Ljava/lang/String;)Z
HSPLcom/android/server/permission/access/permission/PermissionService;->isSystemUidPermissionGranted(ILjava/lang/String;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/SystemConfig;Lcom/android/server/SystemConfig;
HSPLcom/android/server/permission/access/permission/PermissionService;->isUidInstantApp(Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;I)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
HSPLcom/android/server/permission/access/permission/PermissionService;->onPackageAdded(Lcom/android/server/pm/pkg/PackageState;ZLcom/android/server/pm/pkg/AndroidPackage;)V
-HPLcom/android/server/permission/access/permission/PermissionService;->queryPermissionsByGroup(Ljava/lang/String;I)Ljava/util/List;+]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;
-HPLcom/android/server/permission/access/permission/PermissionService;->setPermissionFlagsWithPolicy(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;Ljava/lang/String;I)Z
-HPLcom/android/server/permission/access/permission/PermissionService;->updatePermissionFlags(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;Ljava/lang/String;IIZZZLjava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/permission/access/permission/PermissionService;->updatePermissionFlags(Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;I)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/permission/access/AccessState;Lcom/android/server/permission/access/MutableAccessState;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
+HSPLcom/android/server/permission/access/permission/PermissionService;->queryPermissionsByGroup(Ljava/lang/String;I)Ljava/util/List;+]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;
+HSPLcom/android/server/permission/access/permission/PermissionService;->setPermissionFlagsWithPolicy(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;Ljava/lang/String;I)Z
+HSPLcom/android/server/permission/access/permission/PermissionService;->updatePermissionFlags(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;Ljava/lang/String;IIZZZLjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/permission/access/permission/PermissionService;->updatePermissionFlags(Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;I)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/permission/access/AccessState;Lcom/android/server/permission/access/MutableAccessState;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
HSPLcom/android/server/permission/access/util/IntExtensionsKt;->hasBits(II)Z
HSPLcom/android/server/permission/jarjar/kotlin/jdk7/AutoCloseableKt;->closeFinally(Ljava/lang/AutoCloseable;Ljava/lang/Throwable;)V+]Ljava/lang/AutoCloseable;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;,Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;
-HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z+]Ljava/lang/Object;Ljava/lang/Integer;,Ljava/lang/String;
+HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/content/pm/SigningDetails;,Landroid/util/ArraySet;,Ljava/lang/Integer;,Ljava/lang/String;
+HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V
HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V
HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;->getActivePackageNameForApexModuleName(Ljava/lang/String;)Ljava/lang/String;
HSPLcom/android/server/pm/AppDataHelper$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/pm/AppDataHelper;->lambda$prepareAppData$2(Ljava/lang/String;Ljava/lang/String;IILandroid/os/CreateAppDataArgs;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/os/CreateAppDataResult;Ljava/lang/Throwable;)V+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/AppDataHelper;->prepareAppData(Lcom/android/server/pm/Installer$Batch;Lcom/android/server/pm/PackageSetting;III)Ljava/util/concurrent/CompletableFuture;+]Lcom/android/server/pm/Installer$Batch;Lcom/android/server/pm/Installer$Batch;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;
+HSPLcom/android/server/pm/AppDataHelper;->reconcileAppsDataLI(Ljava/lang/String;IIZZ)Ljava/util/List;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/Installer;Lcom/android/server/pm/Installer;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/io/File;Ljava/io/File;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/pm/AppIdSettingMap;-><init>(Lcom/android/server/pm/AppIdSettingMap;)V
HSPLcom/android/server/pm/AppIdSettingMap;->getSetting(I)Lcom/android/server/pm/SettingBase;+]Lcom/android/server/utils/WatchedArrayList;Lcom/android/server/utils/WatchedArrayList;]Lcom/android/server/utils/WatchedSparseArray;Lcom/android/server/utils/WatchedSparseArray;
HSPLcom/android/server/pm/AppsFilterBase;-><init>()V
-HPLcom/android/server/pm/AppsFilterBase;->getVisibilityAllowList(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/pkg/PackageStateInternal;[ILandroid/util/ArrayMap;)Landroid/util/SparseArray;+]Lcom/android/server/pm/AppsFilterBase;Lcom/android/server/pm/AppsFilterImpl;,Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/AppsFilterBase;->isForceQueryable(I)Z+]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;
-HSPLcom/android/server/pm/AppsFilterBase;->isImplicitlyQueryable(II)Z+]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray;
-HSPLcom/android/server/pm/AppsFilterBase;->isQueryableViaUsesPermission(II)Z+]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray;
-HSPLcom/android/server/pm/AppsFilterBase;->isRetainedImplicitlyQueryable(II)Z+]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray;
+HPLcom/android/server/pm/AppsFilterBase;->isImplicitlyQueryable(II)Z+]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray;
+HPLcom/android/server/pm/AppsFilterBase;->isQueryableViaComponent(II)Z+]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray;
+HPLcom/android/server/pm/AppsFilterBase;->isQueryableViaPackage(II)Z+]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray;
HSPLcom/android/server/pm/AppsFilterBase;->shouldFilterApplication(Lcom/android/server/pm/snapshot/PackageDataSnapshot;ILjava/lang/Object;Lcom/android/server/pm/pkg/PackageStateInternal;I)Z+]Lcom/android/server/pm/AppsFilterBase;Lcom/android/server/pm/AppsFilterImpl;,Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/FeatureConfig;Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/AppsFilterBase;->shouldFilterApplicationInternal(Lcom/android/server/pm/Computer;ILjava/lang/Object;Lcom/android/server/pm/pkg/PackageStateInternal;I)Z+]Lcom/android/server/om/OverlayReferenceMapper;Lcom/android/server/om/OverlayReferenceMapper;]Lcom/android/server/pm/AppsFilterBase;Lcom/android/server/pm/AppsFilterImpl;,Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/FeatureConfig;Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/SharedUserApi;Lcom/android/server/pm/SharedUserSetting;
HPLcom/android/server/pm/AppsFilterBase;->shouldFilterApplicationUsingCache(III)Z+]Lcom/android/server/utils/WatchedSparseBooleanMatrix;Lcom/android/server/utils/WatchedSparseBooleanMatrix;
@@ -2293,7 +2383,7 @@ HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->updatePackageState(
HSPLcom/android/server/pm/AppsFilterImpl;->addPackage(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/PackageStateInternal;ZZ)V
HSPLcom/android/server/pm/AppsFilterImpl;->addPackageInternal(Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/util/ArrayMap;)Landroid/util/ArraySet;+]Lcom/android/internal/pm/pkg/component/ParsedPermission;Lcom/android/internal/pm/pkg/component/ParsedPermissionImpl;]Lcom/android/internal/pm/pkg/component/ParsedUsesPermission;Lcom/android/internal/pm/pkg/component/ParsedUsesPermissionImpl;]Lcom/android/server/om/OverlayReferenceMapper;Lcom/android/server/om/OverlayReferenceMapper;]Lcom/android/server/pm/FeatureConfig;Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
HSPLcom/android/server/pm/AppsFilterImpl;->grantImplicitAccess(IIZ)Z+]Lcom/android/server/utils/WatchedSparseBooleanMatrix;Lcom/android/server/utils/WatchedSparseBooleanMatrix;]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray;
-HSPLcom/android/server/pm/AppsFilterImpl;->pkgInstruments(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+HSPLcom/android/server/pm/AppsFilterImpl;->pkgInstruments(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Lcom/android/internal/pm/pkg/component/ParsedInstrumentation;Lcom/android/internal/pm/pkg/component/ParsedInstrumentationImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
HPLcom/android/server/pm/AppsFilterImpl;->updateShouldFilterCacheForPackage(Lcom/android/server/pm/Computer;Ljava/lang/String;Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/util/ArrayMap;[Landroid/content/pm/UserInfo;II)V+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
HPLcom/android/server/pm/AppsFilterImpl;->updateShouldFilterCacheForUser(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/PackageStateInternal;[Landroid/content/pm/UserInfo;Lcom/android/server/pm/pkg/PackageStateInternal;I)V+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchedSparseBooleanMatrix;Lcom/android/server/utils/WatchedSparseBooleanMatrix;
HPLcom/android/server/pm/AppsFilterLocked;->isForceQueryable(I)Z
@@ -2303,7 +2393,7 @@ HPLcom/android/server/pm/AppsFilterLocked;->isQueryableViaPackage(II)Z
HPLcom/android/server/pm/AppsFilterLocked;->isQueryableViaUsesLibrary(II)Z
HPLcom/android/server/pm/AppsFilterLocked;->isQueryableViaUsesPermission(II)Z
HPLcom/android/server/pm/AppsFilterLocked;->isRetainedImplicitlyQueryable(II)Z
-HSPLcom/android/server/pm/AppsFilterSnapshotImpl;-><init>(Lcom/android/server/pm/AppsFilterImpl;)V
+HSPLcom/android/server/pm/AppsFilterSnapshotImpl;-><init>(Lcom/android/server/pm/AppsFilterImpl;)V+]Lcom/android/server/pm/FeatureConfig;Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;
HPLcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility;->getVisibleListOfQueryViaComponents(Lcom/android/server/pm/pkg/PackageStateInternal;)Landroid/util/ArraySet;+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/AppsFilterUtils;->canQueryAsInstaller(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/AppsFilterUtils;->canQueryAsUpdateOwner(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
@@ -2323,12 +2413,14 @@ HSPLcom/android/server/pm/ComputerEngine$Settings;->getRenamedPackageLPr(Ljava/l
HSPLcom/android/server/pm/ComputerEngine$Settings;->getSettingBase(I)Lcom/android/server/pm/SettingBase;
HSPLcom/android/server/pm/ComputerEngine$Settings;->isEnabledAndMatch(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;JI)Z+]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/ComputerEngine;-><init>(Lcom/android/server/pm/PackageManagerService$Snapshot;I)V+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+HSPLcom/android/server/pm/ComputerEngine;->addPackageHoldingPermissions(Ljava/util/ArrayList;Lcom/android/server/pm/pkg/PackageStateInternal;[Ljava/lang/String;[ZJI)V+]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/pm/ComputerEngine;->applyPostResolutionFilter(Ljava/util/List;Ljava/lang/String;ZIZILandroid/content/Intent;)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/AppsFilterSnapshot;Lcom/android/server/pm/AppsFilterImpl;,Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
HSPLcom/android/server/pm/ComputerEngine;->applyPostServiceResolutionFilter(Ljava/util/List;Ljava/lang/String;II)Ljava/util/List;+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/pm/AppsFilterSnapshot;Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Ljava/util/List;Ljava/util/ArrayList;
-HPLcom/android/server/pm/ComputerEngine;->canQueryPackage(ILjava/lang/String;)Z+]Lcom/android/server/pm/AppsFilterSnapshot;Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/ComputerEngine;->canQueryPackage(ILjava/lang/String;)Z+]Lcom/android/server/pm/AppsFilterSnapshot;Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/ComputerEngine;->canViewInstantApps(II)Z+]Landroid/content/Context;Landroid/app/ContextImpl;
HSPLcom/android/server/pm/ComputerEngine;->checkSignatures(Ljava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
HSPLcom/android/server/pm/ComputerEngine;->checkUidPermission(Ljava/lang/String;I)I+]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;
+HPLcom/android/server/pm/ComputerEngine;->createForwardingResolveInfoUnchecked(Lcom/android/server/pm/WatchedIntentFilter;II)Landroid/content/pm/ResolveInfo;+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/WatchedIntentFilter;Lcom/android/server/pm/CrossProfileIntentFilter;
HSPLcom/android/server/pm/ComputerEngine;->enforceCrossUserOrProfilePermission(IIZZLjava/lang/String;)V+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
HSPLcom/android/server/pm/ComputerEngine;->enforceCrossUserPermission(IIZZLjava/lang/String;)V
HSPLcom/android/server/pm/ComputerEngine;->enforceCrossUserPermission(IIZZZLjava/lang/String;)V+]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;
@@ -2345,10 +2437,10 @@ HSPLcom/android/server/pm/ComputerEngine;->getApplicationInfo(Ljava/lang/String;
HSPLcom/android/server/pm/ComputerEngine;->getApplicationInfoInternal(Ljava/lang/String;JII)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
HSPLcom/android/server/pm/ComputerEngine;->getApplicationInfoInternalBody(Ljava/lang/String;JII)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
HPLcom/android/server/pm/ComputerEngine;->getBlockUninstallForUser(Ljava/lang/String;I)Z+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;
-HPLcom/android/server/pm/ComputerEngine;->getComponentEnabledSetting(Landroid/content/ComponentName;II)I+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
+HSPLcom/android/server/pm/ComputerEngine;->getComponentEnabledSetting(Landroid/content/ComponentName;II)I+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
HSPLcom/android/server/pm/ComputerEngine;->getComponentEnabledSettingInternal(Landroid/content/ComponentName;II)I+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
HSPLcom/android/server/pm/ComputerEngine;->getComponentResolver()Lcom/android/server/pm/resolution/ComponentResolverApi;
-HPLcom/android/server/pm/ComputerEngine;->getDeclaredSharedLibraries(Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/utils/WatchedLongSparseArray;Lcom/android/server/utils/WatchedLongSparseArray;
+HSPLcom/android/server/pm/ComputerEngine;->getDeclaredSharedLibraries(Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/utils/WatchedLongSparseArray;Lcom/android/server/utils/WatchedLongSparseArray;
HSPLcom/android/server/pm/ComputerEngine;->getInstallSource(Ljava/lang/String;II)Lcom/android/server/pm/InstallSource;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/ComputerEngine;->getInstallSourceInfo(Ljava/lang/String;I)Landroid/content/pm/InstallSourceInfo;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
HSPLcom/android/server/pm/ComputerEngine;->getInstalledApplications(JIIZ)Ljava/util/List;+]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
@@ -2370,11 +2462,12 @@ HSPLcom/android/server/pm/ComputerEngine;->getPackageStateForInstalledAndFiltere
HSPLcom/android/server/pm/ComputerEngine;->getPackageStateInternal(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateInternal;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
HSPLcom/android/server/pm/ComputerEngine;->getPackageStateInternal(Ljava/lang/String;I)Lcom/android/server/pm/pkg/PackageStateInternal;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;
HSPLcom/android/server/pm/ComputerEngine;->getPackageStates()Landroid/util/ArrayMap;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;
-HSPLcom/android/server/pm/ComputerEngine;->getPackageUid(Ljava/lang/String;JI)I+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
-HSPLcom/android/server/pm/ComputerEngine;->getPackageUidInternal(Ljava/lang/String;JII)I+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
+HSPLcom/android/server/pm/ComputerEngine;->getPackageUid(Ljava/lang/String;JI)I+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
+HSPLcom/android/server/pm/ComputerEngine;->getPackageUidInternal(Ljava/lang/String;JII)I+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
HSPLcom/android/server/pm/ComputerEngine;->getPackagesForUid(I)[Ljava/lang/String;
HSPLcom/android/server/pm/ComputerEngine;->getPackagesForUidInternal(II)[Ljava/lang/String;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
-HSPLcom/android/server/pm/ComputerEngine;->getPackagesForUidInternalBody(IIIZ)[Ljava/lang/String;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/ComputerEngine;->getPackagesForUidInternalBody(IIIZ)[Ljava/lang/String;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/ComputerEngine;->getPackagesHoldingPermissions([Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
HSPLcom/android/server/pm/ComputerEngine;->getPackagesUsingSharedLibrary(Landroid/content/pm/SharedLibraryInfo;JII)Landroid/util/Pair;+]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/ComputerEngine;->getProcessesForUid(I)Landroid/util/ArrayMap;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
HSPLcom/android/server/pm/ComputerEngine;->getReceiverInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ActivityInfo;+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;
@@ -2388,23 +2481,23 @@ HSPLcom/android/server/pm/ComputerEngine;->getUserStateOrDefaultForUser(Ljava/la
HSPLcom/android/server/pm/ComputerEngine;->getVersion()I
HSPLcom/android/server/pm/ComputerEngine;->hasCrossUserPermission(IIIZZ)Z
HSPLcom/android/server/pm/ComputerEngine;->hasNonNegativePriority(Ljava/util/List;)Z+]Ljava/util/List;Ljava/util/ArrayList;
-HPLcom/android/server/pm/ComputerEngine;->hasSigningCertificate(Ljava/lang/String;[BI)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
HSPLcom/android/server/pm/ComputerEngine;->instantAppInstallerActivity()Landroid/content/pm/ActivityInfo;
HSPLcom/android/server/pm/ComputerEngine;->isApexPackage(Ljava/lang/String;)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
+HSPLcom/android/server/pm/ComputerEngine;->isCallerInstallerOfRecord(Lcom/android/server/pm/pkg/AndroidPackage;I)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/ComputerEngine;->isCallerSameApp(Ljava/lang/String;IZ)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
HSPLcom/android/server/pm/ComputerEngine;->isImplicitImageCaptureIntentAndNotSetByDpc(Landroid/content/Intent;ILjava/lang/String;J)Z+]Landroid/content/Intent;Landroid/content/Intent;
HSPLcom/android/server/pm/ComputerEngine;->isInstantApp(Ljava/lang/String;I)Z
HSPLcom/android/server/pm/ComputerEngine;->isInstantAppInternal(Ljava/lang/String;II)Z+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;
HSPLcom/android/server/pm/ComputerEngine;->isInstantAppInternalBody(Ljava/lang/String;II)Z+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/InstantAppRegistry;Lcom/android/server/pm/InstantAppRegistry;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
HSPLcom/android/server/pm/ComputerEngine;->isInstantAppResolutionAllowed(Landroid/content/Intent;Ljava/util/List;IZJ)Z+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$OpaqueUri;,Landroid/net/Uri$StringUri;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/pm/ComputerEngine;->isKnownIsolatedComputeApp(I)Z+]Lcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerInternal;Lcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService$$ExternalSyntheticLambda2;]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/permission/PermissionManagerServiceInternal$HotwordDetectionServiceProvider;Lcom/android/server/voiceinteraction/HotwordDetectionConnection$2$$ExternalSyntheticLambda0;]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;
+HSPLcom/android/server/pm/ComputerEngine;->isKnownIsolatedComputeApp(I)Z+]Lcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerLocal;Lcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService$$ExternalSyntheticLambda7;]Lcom/android/server/pm/permission/PermissionManagerServiceInternal$HotwordDetectionServiceProvider;Lcom/android/server/voiceinteraction/HotwordDetectionConnection$2$$ExternalSyntheticLambda0;]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;
HSPLcom/android/server/pm/ComputerEngine;->isPackageAvailable(Ljava/lang/String;I)Z+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/ComputerEngine;->isPackageSuspendedForUser(Ljava/lang/String;I)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
HSPLcom/android/server/pm/ComputerEngine;->isRecentsAccessingChildProfiles(II)Z+]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
HSPLcom/android/server/pm/ComputerEngine;->queryContentProviders(Ljava/lang/String;IJLjava/lang/String;)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/pm/ComputerEngine;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
HSPLcom/android/server/pm/ComputerEngine;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;JJIIIZZ)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/pm/ComputerEngine;->queryIntentActivitiesInternalBody(Landroid/content/Intent;Ljava/lang/String;JIIZZLjava/lang/String;Ljava/lang/String;)Lcom/android/server/pm/QueryIntentActivitiesResult;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/CrossProfileIntentResolverEngine;Lcom/android/server/pm/CrossProfileIntentResolverEngine;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolver;,Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/ComputerEngine;->queryIntentActivitiesInternalBody(Landroid/content/Intent;Ljava/lang/String;JIIZZLjava/lang/String;Ljava/lang/String;)Lcom/android/server/pm/QueryIntentActivitiesResult;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/CrossProfileIntentResolverEngine;Lcom/android/server/pm/CrossProfileIntentResolverEngine;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolver;,Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/pm/ComputerEngine;->queryIntentServicesInternal(Landroid/content/Intent;Ljava/lang/String;JIIIZZ)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
HSPLcom/android/server/pm/ComputerEngine;->queryIntentServicesInternalBody(Landroid/content/Intent;Ljava/lang/String;JIILjava/lang/String;)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
HSPLcom/android/server/pm/ComputerEngine;->resolveContentProvider(Ljava/lang/String;JII)Landroid/content/pm/ProviderInfo;+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;
@@ -2413,14 +2506,20 @@ HSPLcom/android/server/pm/ComputerEngine;->resolveInternalPackageNameInternalLoc
HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/SharedUserSetting;II)Z
HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/pkg/PackageStateInternal;II)Z
HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/pkg/PackageStateInternal;ILandroid/content/ComponentName;IIZ)Z
-HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/pkg/PackageStateInternal;ILandroid/content/ComponentName;IIZZ)Z+]Lcom/android/server/pm/AppsFilterSnapshot;Lcom/android/server/pm/AppsFilterImpl;,Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/InstantAppRegistry;Lcom/android/server/pm/InstantAppRegistry;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/pkg/PackageStateInternal;ILandroid/content/ComponentName;IIZZ)Z+]Lcom/android/server/pm/AppsFilterSnapshot;Lcom/android/server/pm/AppsFilterImpl;,Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;
HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplicationIncludingUninstalled(Lcom/android/server/pm/SharedUserSetting;II)Z+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplicationIncludingUninstalled(Lcom/android/server/pm/pkg/PackageStateInternal;II)Z
HSPLcom/android/server/pm/ComputerEngine;->updateFlags(JI)J+]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;
-HSPLcom/android/server/pm/ComputerEngine;->updateFlagsForPackage(JI)J+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
+HSPLcom/android/server/pm/ComputerEngine;->updateFlagsForPackage(JI)J
HSPLcom/android/server/pm/ComputerEngine;->updateFlagsForResolve(JIIZZ)J
HSPLcom/android/server/pm/ComputerEngine;->updateFlagsForResolve(JIIZZZ)J+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
HSPLcom/android/server/pm/ComputerEngine;->use()Lcom/android/server/pm/Computer;
+HPLcom/android/server/pm/CrossProfileAppsServiceImpl;->getTargetUserProfiles(Ljava/lang/String;)Ljava/util/List;+]Lcom/android/server/pm/CrossProfileAppsServiceImpl$Injector;Lcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;
+HPLcom/android/server/pm/CrossProfileAppsServiceImpl;->lambda$getTargetUserProfilesUnchecked$3(ILjava/lang/String;)Ljava/util/List;+]Landroid/os/UserManager;Landroid/os/UserManager;]Lcom/android/server/pm/CrossProfileAppsServiceImpl$Injector;Lcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;
+HSPLcom/android/server/pm/CrossProfileIntentResolver;->getIntentFilter(Ljava/lang/Object;)Landroid/content/IntentFilter;+]Lcom/android/server/pm/CrossProfileIntentResolver;Lcom/android/server/pm/CrossProfileIntentResolver;
+HSPLcom/android/server/pm/CrossProfileIntentResolver;->isPackageForFilter(Ljava/lang/String;Ljava/lang/Object;)Z+]Lcom/android/server/pm/CrossProfileIntentResolver;Lcom/android/server/pm/CrossProfileIntentResolver;
+HSPLcom/android/server/pm/CrossProfileIntentResolver;->snapshot(Lcom/android/server/pm/CrossProfileIntentFilter;)Lcom/android/server/pm/CrossProfileIntentFilter;+]Lcom/android/server/pm/CrossProfileIntentFilter;Lcom/android/server/pm/CrossProfileIntentFilter;
+HSPLcom/android/server/pm/CrossProfileIntentResolver;->snapshot(Ljava/lang/Object;)Ljava/lang/Object;+]Lcom/android/server/pm/CrossProfileIntentResolver;Lcom/android/server/pm/CrossProfileIntentResolver;
HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;-><init>(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/DefaultAppProvider;Landroid/content/Context;)V
HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;->combineFilterAndCreateQueryActivitiesResponse(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZJIIZLjava/util/List;Ljava/util/List;ZZZLjava/util/function/Function;)Lcom/android/server/pm/QueryIntentActivitiesResult;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/CrossProfileIntentResolverEngine;Lcom/android/server/pm/CrossProfileIntentResolverEngine;]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/pm/CrossProfileIntentResolverEngine;->filterCandidatesWithDomainPreferredActivitiesLPrBody(Lcom/android/server/pm/Computer;Landroid/content/Intent;JLjava/util/List;Ljava/util/List;IZZZLjava/util/function/Function;)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/DefaultAppProvider;Lcom/android/server/pm/DefaultAppProvider;]Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/verify/domain/DomainVerificationService;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
@@ -2428,12 +2527,11 @@ HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;->resolveInfoFromCros
HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;->resolveIntent(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;IJLjava/lang/String;ZZLjava/util/function/Function;)Ljava/util/List;
HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;->resolveIntentInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;IIJLjava/lang/String;ZZLjava/util/function/Function;Ljava/util/Set;)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/CrossProfileResolver;Lcom/android/server/pm/DefaultCrossProfileResolver;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Set;Ljava/util/HashSet;
HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;->shouldSkipCurrentProfile(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;I)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/CrossProfileIntentFilter;Lcom/android/server/pm/CrossProfileIntentFilter;]Ljava/util/List;Ljava/util/ArrayList;
-HPLcom/android/server/pm/DexOptHelper$DexoptDoneHandler;->onDexoptDone(Lcom/android/server/art/model/DexoptResult;)V+]Lcom/android/server/art/model/DexoptResult$DexContainerFileDexoptResult;Lcom/android/server/art/model/AutoValue_DexoptResult_DexContainerFileDexoptResult;]Lcom/android/server/art/model/DexoptResult$PackageDexoptResult;Lcom/android/server/art/model/AutoValue_DexoptResult_PackageDexoptResult;]Lcom/android/server/art/model/DexoptResult;Lcom/android/server/art/model/AutoValue_DexoptResult;]Lcom/android/server/pm/AbstractStatsBase;Lcom/android/server/pm/PackageUsage;]Lcom/android/server/pm/CompilerStats$PackageStats;Lcom/android/server/pm/CompilerStats$PackageStats;]Lcom/android/server/pm/CompilerStats;Lcom/android/server/pm/CompilerStats;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/DefaultCrossProfileResolver;->createForwardingResolveInfo(Lcom/android/server/pm/Computer;Lcom/android/server/pm/CrossProfileIntentFilter;Landroid/content/Intent;Ljava/lang/String;JILjava/util/function/Function;)Lcom/android/server/pm/CrossProfileDomainInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/CrossProfileIntentFilter;Lcom/android/server/pm/CrossProfileIntentFilter;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/verify/domain/DomainVerificationService;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/function/Function;Lcom/android/server/pm/ComputerEngine$$ExternalSyntheticLambda0;
HSPLcom/android/server/pm/GentleUpdateHelper;->onUidImportance(II)V+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
HSPLcom/android/server/pm/IPackageManagerBase;->checkUidPermission(Ljava/lang/String;I)I+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
HSPLcom/android/server/pm/IPackageManagerBase;->getApplicationInfo(Ljava/lang/String;JI)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
-HPLcom/android/server/pm/IPackageManagerBase;->getBlockUninstallForUser(Ljava/lang/String;I)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
-HPLcom/android/server/pm/IPackageManagerBase;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
+HSPLcom/android/server/pm/IPackageManagerBase;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
HSPLcom/android/server/pm/IPackageManagerBase;->getInstallSourceInfo(Ljava/lang/String;I)Landroid/content/pm/InstallSourceInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
HSPLcom/android/server/pm/IPackageManagerBase;->getNameForUid(I)Ljava/lang/String;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
HSPLcom/android/server/pm/IPackageManagerBase;->getPackageInfo(Ljava/lang/String;JI)Landroid/content/pm/PackageInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
@@ -2459,7 +2557,7 @@ HSPLcom/android/server/pm/InstallPackageHelper;->commitReconciledScanResultLocke
HSPLcom/android/server/pm/InstallPackageHelper;->installPackagesFromDir(Ljava/io/File;IILcom/android/internal/pm/parsing/PackageParser2;Ljava/util/concurrent/ExecutorService;Lcom/android/server/pm/ApexManager$ActiveApexInfo;)V
HSPLcom/android/server/pm/InstallPackageHelper;->prepareInitialScanRequest(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IILandroid/os/UserHandle;Ljava/lang/String;)Lcom/android/server/pm/ScanRequest;
HSPLcom/android/server/pm/InstallPackageHelper;->scanPackageForInitLI(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IILandroid/os/UserHandle;)Landroid/util/Pair;
-HSPLcom/android/server/pm/InstallPackageHelper;->scanPackageNewLI(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IIJLandroid/os/UserHandle;Ljava/lang/String;)Lcom/android/server/pm/ScanResult;
+HSPLcom/android/server/pm/InstallPackageHelper;->scanPackageNew(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IIJLandroid/os/UserHandle;Ljava/lang/String;)Lcom/android/server/pm/ScanResult;
HSPLcom/android/server/pm/InstallRequest;-><init>(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IILandroid/os/UserHandle;Lcom/android/server/pm/ScanResult;Lcom/android/server/pm/PackageSetting;)V
HSPLcom/android/server/pm/Installer;->checkBeforeRemote()Z+]Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;
HPLcom/android/server/pm/Installer;->getAppSize(Ljava/lang/String;[Ljava/lang/String;III[J[Ljava/lang/String;Landroid/content/pm/PackageStats;)V+]Landroid/os/IInstalld;Landroid/os/IInstalld$Stub$Proxy;]Ldalvik/system/BlockGuard$VmPolicy;Landroid/os/StrictMode$5;
@@ -2473,25 +2571,22 @@ HSPLcom/android/server/pm/KeySetManagerService;->getPublicKeysFromKeySetLPr(J)La
HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$$ExternalSyntheticLambda2;->getOrThrow()Ljava/lang/Object;
HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onShortcutChangedInner(Ljava/lang/String;I)V+]Landroid/content/pm/IOnAppsChangedListener;Landroid/content/pm/IOnAppsChangedListener$Stub$Proxy;]Landroid/content/pm/ShortcutServiceInternal;Lcom/android/server/pm/ShortcutService$LocalService;]Landroid/os/RemoteCallbackList;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageCallbackList;]Ljava/lang/RuntimeException;Ljava/lang/IllegalStateException;
HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile(ILjava/lang/String;)Z+]Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;
-HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->generateLauncherActivitiesForArchivedApp(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/pkg/ArchiveState;Lcom/android/server/pm/pkg/ArchiveState;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->generateLauncherActivitiesForArchivedApp(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/pkg/ArchiveState;Lcom/android/server/pm/pkg/ArchiveState;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;,Ljava/util/ImmutableCollections$List12;
HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getApplicationInfoForArchivedApp(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List;+]Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;
HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getLauncherActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;+]Landroid/app/admin/DevicePolicyManager;Landroid/app/admin/DevicePolicyManager;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/LauncherActivityInfoInternal;Landroid/content/pm/LauncherActivityInfoInternal;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/pm/ParceledListSlice;Landroid/content/pm/ParceledListSlice;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;]Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectBinderCallingPid()I
HSPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectBinderCallingUid()I
HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryActivitiesForUser(Ljava/lang/String;Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;
-HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryIntentLauncherActivities(Landroid/content/Intent;ILandroid/os/UserHandle;)Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryIntentLauncherActivities(Landroid/content/Intent;ILandroid/os/UserHandle;)Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
HSPLcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;->applyTo(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;)V
-HSPLcom/android/server/pm/PackageAbiHelperImpl;->calculateBundledApkRoot(Ljava/lang/String;)Ljava/lang/String;
HSPLcom/android/server/pm/PackageAbiHelperImpl;->deriveNativeLibraryPaths(Lcom/android/server/pm/PackageAbiHelper$Abis;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;ZZ)Lcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;
-HSPLcom/android/server/pm/PackageAbiHelperImpl;->derivePackageAbi(Lcom/android/server/pm/pkg/AndroidPackage;ZZLjava/lang/String;Ljava/io/File;)Landroid/util/Pair;
-HSPLcom/android/server/pm/PackageAbiHelperImpl;->getBundledAppAbi(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/pm/PackageAbiHelper$Abis;
HSPLcom/android/server/pm/PackageArchiver;->isArchived(Lcom/android/server/pm/pkg/PackageUserState;)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;
HPLcom/android/server/pm/PackageInstallerSession;->generateInfoInternal(ZZ)Landroid/content/pm/PackageInstaller$SessionInfo;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageInstaller$SessionParams;Landroid/content/pm/PackageInstaller$SessionParams;]Lcom/android/server/pm/PackageInstallerSession;Lcom/android/server/pm/PackageInstallerSession;]Ljava/io/File;Ljava/io/File;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/pm/PackageInstallerSession;->write(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/io/File;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/pm/PackageInstallerSession$PerFileChecksum;Lcom/android/server/pm/PackageInstallerSession$PerFileChecksum;]Lcom/android/server/pm/PackageInstallerSession;Lcom/android/server/pm/PackageInstallerSession;]Ljava/io/File;Ljava/io/File;
-HSPLcom/android/server/pm/PackageInstallerSession;->writeAutoRevokePermissionsMode(Lcom/android/modules/utils/TypedXmlSerializer;I)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
HSPLcom/android/server/pm/PackageKeySetData;-><init>()V
HSPLcom/android/server/pm/PackageKeySetData;-><init>(Lcom/android/server/pm/PackageKeySetData;)V
-HPLcom/android/server/pm/PackageManagerInternalBase;->canQueryPackage(ILjava/lang/String;)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
+HSPLcom/android/server/pm/PackageManagerInternalBase;->canQueryPackage(ILjava/lang/String;)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
HSPLcom/android/server/pm/PackageManagerInternalBase;->filterAppAccess(Ljava/lang/String;IIZ)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
+HSPLcom/android/server/pm/PackageManagerInternalBase;->getApplicationEnabledState(Ljava/lang/String;I)I+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
HSPLcom/android/server/pm/PackageManagerInternalBase;->getApplicationInfo(Ljava/lang/String;JII)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
HSPLcom/android/server/pm/PackageManagerInternalBase;->getInstantAppPackageName(I)Ljava/lang/String;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
HSPLcom/android/server/pm/PackageManagerInternalBase;->getPackage(I)Lcom/android/server/pm/pkg/AndroidPackage;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
@@ -2500,7 +2595,7 @@ HSPLcom/android/server/pm/PackageManagerInternalBase;->getPackageUid(Ljava/lang/
HSPLcom/android/server/pm/PackageManagerInternalBase;->getUidTargetSdkVersion(I)I+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
HSPLcom/android/server/pm/PackageManagerInternalBase;->grantImplicitAccess(ILandroid/content/Intent;IIZ)V
HSPLcom/android/server/pm/PackageManagerInternalBase;->grantImplicitAccess(ILandroid/content/Intent;IIZZ)V+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
-HSPLcom/android/server/pm/PackageManagerInternalBase;->isPackageEphemeral(ILjava/lang/String;)Z+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/PackageManagerInternalBase;->isPackageEphemeral(ILjava/lang/String;)Z+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;
HSPLcom/android/server/pm/PackageManagerInternalBase;->isPackageFrozen(Ljava/lang/String;II)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
HSPLcom/android/server/pm/PackageManagerInternalBase;->isPackageSuspended(Ljava/lang/String;I)Z+]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
HSPLcom/android/server/pm/PackageManagerInternalBase;->isPermissionsReviewRequired(Ljava/lang/String;I)Z+]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;
@@ -2509,8 +2604,10 @@ HSPLcom/android/server/pm/PackageManagerInternalBase;->queryIntentReceivers(Land
HSPLcom/android/server/pm/PackageManagerInternalBase;->resolveService(Landroid/content/Intent;Ljava/lang/String;JIII)Landroid/content/pm/ResolveInfo;+]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
HSPLcom/android/server/pm/PackageManagerInternalBase;->snapshot()Lcom/android/server/pm/Computer;+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
HSPLcom/android/server/pm/PackageManagerInternalBase;->snapshot()Lcom/android/server/pm/snapshot/PackageDataSnapshot;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda22;->produce(Ljava/lang/Class;)Ljava/lang/Object;
HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda52;->accept(Ljava/lang/Object;)V
HSPLcom/android/server/pm/PackageManagerService$1;->onChange(Lcom/android/server/utils/Watchable;)V
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getSystemAvailableFeatures()Landroid/content/pm/ParceledListSlice;
HSPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->isProtectedBroadcast(Ljava/lang/String;)Z
HSPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->notifyDexLoad(Ljava/lang/String;Ljava/util/Map;Ljava/lang/String;)V+]Lcom/android/server/art/DexUseManagerLocal;Lcom/android/server/art/DexUseManagerLocal;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
@@ -2518,18 +2615,21 @@ HSPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->setCompone
HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getIncrementalStatesInfo(Ljava/lang/String;II)Landroid/content/pm/IncrementalStatesInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPermissionManager()Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getResolveIntentHelper()Lcom/android/server/pm/ResolveIntentHelper;
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getSuspendPackageHelper()Lcom/android/server/pm/SuspendPackageHelper;
HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->hasSignatureCapability(III)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isSameApp(Ljava/lang/String;II)Z+]Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isSameApp(Ljava/lang/String;JII)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->notifyPackageUse(Ljava/lang/String;I)V
HSPLcom/android/server/pm/PackageManagerService$Snapshot;-><init>(Lcom/android/server/pm/PackageManagerService;I)V+]Lcom/android/server/pm/InstantAppRegistry;Lcom/android/server/pm/InstantAppRegistry;]Lcom/android/server/pm/resolution/ComponentResolver;Lcom/android/server/pm/resolution/ComponentResolver;]Lcom/android/server/utils/WatchedSparseBooleanArray;Lcom/android/server/utils/WatchedSparseBooleanArray;
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$FIm5PCDkxhfzsSWq1uuSQG0dnRU(ILjava/util/function/Consumer;Lcom/android/server/pm/pkg/PackageStateInternal;)V+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/function/Consumer;Lcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda5;,Lcom/android/server/people/data/DataManager$$ExternalSyntheticLambda11;,Lcom/android/server/policy/role/RoleServicePlatformHelperImpl$$ExternalSyntheticLambda0;
HSPLcom/android/server/pm/PackageManagerService;->boostPriorityForPackageManagerTracedLockedSection()V
HSPLcom/android/server/pm/PackageManagerService;->checkPackageStartable(Lcom/android/server/pm/Computer;Ljava/lang/String;I)V+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
-HSPLcom/android/server/pm/PackageManagerService;->forEachPackageState(Landroid/util/ArrayMap;Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;Lcom/android/server/BinaryTransparencyService$BinaryTransparencyServiceImpl$$ExternalSyntheticLambda0;,Lcom/android/server/pm/DexOptHelper$$ExternalSyntheticLambda8;,Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda52;,Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda53;,Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl$$ExternalSyntheticLambda3;,Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl$$ExternalSyntheticLambda4;
+HSPLcom/android/server/pm/PackageManagerService;->checkPermission(Ljava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;
+HSPLcom/android/server/pm/PackageManagerService;->forEachPackageState(Landroid/util/ArrayMap;Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;megamorphic_types
HSPLcom/android/server/pm/PackageManagerService;->getSafeMode()Z
HSPLcom/android/server/pm/PackageManagerService;->grantImplicitAccess(Lcom/android/server/pm/Computer;ILandroid/content/Intent;IIZZ)V+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
HSPLcom/android/server/pm/PackageManagerService;->hasSystemFeature(Ljava/lang/String;I)Z
-HSPLcom/android/server/pm/PackageManagerService;->lambda$forEachInstalledPackage$58(ILjava/util/function/Consumer;Lcom/android/server/pm/pkg/PackageStateInternal;)V+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/function/Consumer;Lcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda5;,Lcom/android/server/people/data/DataManager$$ExternalSyntheticLambda11;,Lcom/android/server/policy/role/RoleServicePlatformHelperImpl$$ExternalSyntheticLambda0;
+HSPLcom/android/server/pm/PackageManagerService;->isPackageDeviceAdmin(Ljava/lang/String;I)Z+]Landroid/app/admin/DevicePolicyManagerInternal;Lcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;]Landroid/app/admin/IDevicePolicyManager;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/PackageManagerService;->notifyComponentUsed(Lcom/android/server/pm/Computer;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;
HSPLcom/android/server/pm/PackageManagerService;->notifyPackageUseInternal(Ljava/lang/String;I)V+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;
HSPLcom/android/server/pm/PackageManagerService;->onChange(Lcom/android/server/utils/Watchable;)V
@@ -2540,24 +2640,24 @@ HSPLcom/android/server/pm/PackageManagerService;->setEnabledSettings(Ljava/util/
HSPLcom/android/server/pm/PackageManagerService;->setPackageStoppedState(Lcom/android/server/pm/Computer;Ljava/lang/String;ZI)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/PackageMonitorCallbackHelper;Lcom/android/server/pm/PackageMonitorCallbackHelper;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
HSPLcom/android/server/pm/PackageManagerService;->snapshotComputer()Lcom/android/server/pm/Computer;+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
HSPLcom/android/server/pm/PackageManagerService;->snapshotComputer(Z)Lcom/android/server/pm/Computer;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
-HSPLcom/android/server/pm/PackageManagerServiceInjector$Singleton;->get(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;+]Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda15;,Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda16;,Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda18;,Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda19;,Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda24;,Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda26;
+HSPLcom/android/server/pm/PackageManagerServiceInjector$Singleton;->get(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;+]Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda15;,Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda18;,Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda24;,Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda26;
HSPLcom/android/server/pm/PackageManagerServiceInjector;->getCompatibility()Lcom/android/server/compat/PlatformCompat;+]Lcom/android/server/pm/PackageManagerServiceInjector$Singleton;Lcom/android/server/pm/PackageManagerServiceInjector$Singleton;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getLocalService(Ljava/lang/Class;)Ljava/lang/Object;+]Lcom/android/server/pm/PackageManagerServiceInjector$ServiceProducer;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda22;,Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda23;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getSystemConfig()Lcom/android/server/SystemConfig;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getLocalService(Ljava/lang/Class;)Ljava/lang/Object;+]Lcom/android/server/pm/PackageManagerServiceInjector$ServiceProducer;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda22;
HSPLcom/android/server/pm/PackageManagerServiceInjector;->getUserManagerInternal()Lcom/android/server/pm/UserManagerInternal;+]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
HSPLcom/android/server/pm/PackageManagerServiceInjector;->getUserManagerService()Lcom/android/server/pm/UserManagerService;+]Lcom/android/server/pm/PackageManagerServiceInjector$Singleton;Lcom/android/server/pm/PackageManagerServiceInjector$Singleton;
HSPLcom/android/server/pm/PackageManagerServiceUtils;->compareSignatures(Landroid/content/pm/SigningDetails;Landroid/content/pm/SigningDetails;)I
HSPLcom/android/server/pm/PackageManagerServiceUtils;->getLastModifiedTime(Lcom/android/server/pm/pkg/AndroidPackage;)J
HSPLcom/android/server/pm/PackageMetrics$ComponentStateMetrics;-><init>(Landroid/content/pm/PackageManager$ComponentEnabledSetting;III)V
HSPLcom/android/server/pm/PackageProperty;->addAllProperties(Lcom/android/server/pm/pkg/AndroidPackage;)V
+HSPLcom/android/server/pm/PackageProperty;->addComponentProperties(Ljava/util/List;Landroid/util/ArrayMap;)Landroid/util/ArrayMap;+]Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/Collections$EmptyMap;,Ljava/util/HashMap;
HSPLcom/android/server/pm/PackageSetting;-><init>(Lcom/android/server/pm/PackageSetting;Z)V+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/PackageSetting;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;IILjava/util/UUID;)V
HSPLcom/android/server/pm/PackageSetting;->copyMimeGroups(Ljava/util/Map;)V+]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/Collections$EmptyIterator;]Ljava/util/Map;Landroid/util/ArrayMap;,Lcom/android/server/pm/Settings$KeySetToValueMap;,Ljava/util/Collections$EmptyMap;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;,Ljava/util/Collections$EmptySet;
HSPLcom/android/server/pm/PackageSetting;->copyPackageSetting(Lcom/android/server/pm/PackageSetting;Z)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;]Lcom/android/server/pm/pkg/PackageUserStateImpl;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/PackageSetting;->enableComponentLPw(Ljava/lang/String;I)Z+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserStateImpl;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;
HSPLcom/android/server/pm/PackageSetting;->getAndroidPackage()Lcom/android/server/pm/pkg/AndroidPackage;+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/PackageSetting;->getApexModuleName()Ljava/lang/String;+]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;
HSPLcom/android/server/pm/PackageSetting;->getAppId()I
-HSPLcom/android/server/pm/PackageSetting;->getBaseRevisionCode()I
HSPLcom/android/server/pm/PackageSetting;->getBoolean(I)Z
HSPLcom/android/server/pm/PackageSetting;->getCategoryOverride()I
HSPLcom/android/server/pm/PackageSetting;->getCpuAbiOverride()Ljava/lang/String;
@@ -2565,26 +2665,24 @@ HSPLcom/android/server/pm/PackageSetting;->getCurrentEnabledStateLPr(Ljava/lang/
HSPLcom/android/server/pm/PackageSetting;->getInstallSource()Lcom/android/server/pm/InstallSource;
HSPLcom/android/server/pm/PackageSetting;->getKeySetData()Lcom/android/server/pm/PackageKeySetData;
HSPLcom/android/server/pm/PackageSetting;->getLastUpdateTime()J
+HSPLcom/android/server/pm/PackageSetting;->getLoadingCompletedTime()J
HSPLcom/android/server/pm/PackageSetting;->getLoadingProgress()F
-HSPLcom/android/server/pm/PackageSetting;->getMimeGroups()Ljava/util/Map;
HSPLcom/android/server/pm/PackageSetting;->getPackageName()Ljava/lang/String;
HSPLcom/android/server/pm/PackageSetting;->getPkg()Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;
HSPLcom/android/server/pm/PackageSetting;->getPkgState()Lcom/android/server/pm/pkg/PackageStateUnserialized;
HSPLcom/android/server/pm/PackageSetting;->getPrimaryCpuAbi()Ljava/lang/String;
-HSPLcom/android/server/pm/PackageSetting;->getPrimaryCpuAbiLegacy()Ljava/lang/String;
HSPLcom/android/server/pm/PackageSetting;->getSeInfo()Ljava/lang/String;+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;
HSPLcom/android/server/pm/PackageSetting;->getSecondaryCpuAbi()Ljava/lang/String;
HSPLcom/android/server/pm/PackageSetting;->getSharedLibraryDependencies()Ljava/util/List;+]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;
-HSPLcom/android/server/pm/PackageSetting;->getSignatures()Lcom/android/server/pm/PackageSignatures;
HSPLcom/android/server/pm/PackageSetting;->getSigningDetails()Landroid/content/pm/SigningDetails;
HSPLcom/android/server/pm/PackageSetting;->getStateForUser(Landroid/os/UserHandle;)Lcom/android/server/pm/pkg/PackageUserState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/PackageSetting;->getTransientState()Lcom/android/server/pm/pkg/PackageStateUnserialized;
HSPLcom/android/server/pm/PackageSetting;->getUserStates()Landroid/util/SparseArray;
-HSPLcom/android/server/pm/PackageSetting;->getUsesSdkLibraries()[Ljava/lang/String;
+HSPLcom/android/server/pm/PackageSetting;->getUsesStaticLibrariesVersions()[J
HSPLcom/android/server/pm/PackageSetting;->getVolumeUuid()Ljava/lang/String;
HSPLcom/android/server/pm/PackageSetting;->hasSharedUser()Z
HSPLcom/android/server/pm/PackageSetting;->isApex()Z+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
-HSPLcom/android/server/pm/PackageSetting;->isDebuggable()Z
+HSPLcom/android/server/pm/PackageSetting;->isLoading()Z
HSPLcom/android/server/pm/PackageSetting;->isPrivileged()Z+]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/PackageSetting;->isScannedAsStoppedSystemApp()Z
HSPLcom/android/server/pm/PackageSetting;->isSystem()Z+]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;
@@ -2602,10 +2700,8 @@ HSPLcom/android/server/pm/PackageSignatures;->writeCertsListXml(Lcom/android/mod
HSPLcom/android/server/pm/PackageSignatures;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Ljava/util/ArrayList;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
HSPLcom/android/server/pm/ParallelPackageParser;->lambda$submit$0(Ljava/io/File;I)V
HSPLcom/android/server/pm/Policy;->getMatchedSeInfo(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/lang/String;+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
-HPLcom/android/server/pm/PreferredActivityHelper;->replacePreferredActivity(Lcom/android/server/pm/Computer;Lcom/android/server/pm/WatchedIntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/PreferredComponent;Lcom/android/server/pm/PreferredComponent;]Lcom/android/server/pm/WatchedIntentResolver;Lcom/android/server/pm/PreferredIntentResolver;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/PreferredActivityHelper;->replacePreferredActivity(Lcom/android/server/pm/Computer;Lcom/android/server/pm/WatchedIntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/PreferredComponent;Lcom/android/server/pm/PreferredComponent;]Lcom/android/server/pm/WatchedIntentResolver;Lcom/android/server/pm/PreferredIntentResolver;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/pm/ProtectedPackages;->hasDeviceOwnerOrProfileOwner(ILjava/lang/String;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/pm/ProtectedPackages;->isOwnerProtectedPackage(ILjava/lang/String;)Z
-HSPLcom/android/server/pm/ProtectedPackages;->isPackageProtectedForUser(ILjava/lang/String;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Set;Landroid/util/ArraySet;
HSPLcom/android/server/pm/ProtectedPackages;->isPackageStateProtected(ILjava/lang/String;)Z
HSPLcom/android/server/pm/ProtectedPackages;->isProtectedPackage(ILjava/lang/String;)Z
HSPLcom/android/server/pm/ReconcilePackageUtils;->reconcilePackages(Ljava/util/List;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/pm/SharedLibrariesImpl;Lcom/android/server/pm/KeySetManagerService;Lcom/android/server/pm/Settings;Lcom/android/server/SystemConfig;)Ljava/util/List;
@@ -2613,24 +2709,21 @@ HSPLcom/android/server/pm/ReconciledPackage;-><init>(Ljava/util/List;Ljava/util/
HSPLcom/android/server/pm/ReconciledPackage;->getCombinedAvailablePackages()Ljava/util/Map;
HSPLcom/android/server/pm/ResilientAtomicFile;-><init>(Ljava/io/File;Ljava/io/File;Ljava/io/File;ILjava/lang/String;Lcom/android/server/pm/ResilientAtomicFile$ReadEventLogger;)V
HSPLcom/android/server/pm/ResilientAtomicFile;->close()V
-HSPLcom/android/server/pm/ResilientAtomicFile;->finishWrite(Ljava/io/FileOutputStream;)V
-HSPLcom/android/server/pm/ResilientAtomicFile;->startWrite()Ljava/io/FileOutputStream;
-HSPLcom/android/server/pm/ResolveIntentHelper;->chooseBestActivity(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JJLjava/util/List;IZ)Landroid/content/pm/ResolveInfo;+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/pm/UserNeedsBadgingCache;Lcom/android/server/pm/UserNeedsBadgingCache;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;]Ljava/util/function/Supplier;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda38;,Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda39;
+HSPLcom/android/server/pm/ResilientAtomicFile;->startWrite()Ljava/io/FileOutputStream;+]Ljava/io/File;Ljava/io/File;
+HSPLcom/android/server/pm/ResolveIntentHelper;->chooseBestActivity(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JJLjava/util/List;IZ)Landroid/content/pm/ResolveInfo;+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/pm/UserNeedsBadgingCache;Lcom/android/server/pm/UserNeedsBadgingCache;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;]Ljava/util/function/Supplier;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda38;
+HSPLcom/android/server/pm/ResolveIntentHelper;->queryIntentReceiversInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JII)Ljava/util/List;
HSPLcom/android/server/pm/ResolveIntentHelper;->queryIntentReceiversInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JIIIZ)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;
HSPLcom/android/server/pm/ResolveIntentHelper;->resolveIntentInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JJIZII)Landroid/content/pm/ResolveInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
HSPLcom/android/server/pm/ResolveIntentHelper;->resolveServiceInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JIIIZ)Landroid/content/pm/ResolveInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
HSPLcom/android/server/pm/RestrictionsSet;->getRestrictions(I)Landroid/os/Bundle;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/pm/RestrictionsSet;->updateRestrictions(ILandroid/os/Bundle;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/pm/SELinuxMMAC;->getSeInfo(Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/pkg/AndroidPackage;ZI)Ljava/lang/String;+]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/pm/SaferIntentUtils$IntentArgs;-><init>(Landroid/content/Intent;Ljava/lang/String;ZZII)V
-HSPLcom/android/server/pm/SaferIntentUtils$IntentArgs;->isChangeEnabled(J)Z+]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;
HSPLcom/android/server/pm/SaferIntentUtils;->blockNullAction(Lcom/android/server/pm/SaferIntentUtils$IntentArgs;Ljava/util/List;)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/SaferIntentUtils$IntentArgs;Lcom/android/server/pm/SaferIntentUtils$IntentArgs;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
-HSPLcom/android/server/pm/SaferIntentUtils;->enforceIntentFilterMatching(Lcom/android/server/pm/SaferIntentUtils$IntentArgs;Ljava/util/List;)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/SaferIntentUtils$IntentArgs;Lcom/android/server/pm/SaferIntentUtils$IntentArgs;]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/pm/SaferIntentUtils;->filterNonExportedComponents(Lcom/android/server/pm/SaferIntentUtils$IntentArgs;Ljava/util/List;)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;]Lcom/android/server/pm/SaferIntentUtils$IntentArgs;Lcom/android/server/pm/SaferIntentUtils$IntentArgs;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/pm/SaferIntentUtils;->infoToComponent(Landroid/content/pm/ComponentInfo;Lcom/android/server/pm/resolution/ComponentResolverApi;Z)Lcom/android/internal/pm/pkg/component/ParsedMainComponent;+]Landroid/content/pm/ComponentInfo;Landroid/content/pm/ActivityInfo;,Landroid/content/pm/ServiceInfo;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;
HSPLcom/android/server/pm/ScanPackageUtils;->applyPolicy(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ILcom/android/server/pm/pkg/AndroidPackage;Z)V
HSPLcom/android/server/pm/ScanPackageUtils;->collectCertificatesLI(Lcom/android/server/pm/PackageSetting;Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Lcom/android/server/pm/Settings$VersionInfo;ZZZ)V
-HSPLcom/android/server/pm/ScanPackageUtils;->scanPackageOnlyLI(Lcom/android/server/pm/ScanRequest;Lcom/android/server/pm/PackageManagerServiceInjector;ZJ)Lcom/android/server/pm/ScanResult;
+HSPLcom/android/server/pm/ScanPackageUtils;->scanPackageOnly(Lcom/android/server/pm/ScanRequest;Lcom/android/server/pm/PackageManagerServiceInjector;ZJ)Lcom/android/server/pm/ScanResult;
HSPLcom/android/server/pm/ScanRequest;-><init>(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Ljava/lang/String;IIZLandroid/os/UserHandle;Ljava/lang/String;)V
HSPLcom/android/server/pm/ScanResult;-><init>(Lcom/android/server/pm/ScanRequest;Lcom/android/server/pm/PackageSetting;Ljava/util/List;ZILandroid/content/pm/SharedLibraryInfo;Landroid/content/pm/SharedLibraryInfo;Ljava/util/List;)V
HSPLcom/android/server/pm/SettingBase;-><init>(II)V
@@ -2643,12 +2736,11 @@ HSPLcom/android/server/pm/SettingBase;->onChanged()V+]Lcom/android/server/pm/Set
HSPLcom/android/server/pm/SettingBase;->registerObserver(Lcom/android/server/utils/Watcher;)V
HSPLcom/android/server/pm/Settings$1;->onChange(Lcom/android/server/utils/Watchable;)V
HSPLcom/android/server/pm/Settings$2;->createSnapshot()Lcom/android/server/pm/Settings;+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchableImpl;
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->getPackagePermissions(ILcom/android/server/utils/WatchedArrayMap;)Ljava/util/Map;+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/pm/Settings;-><init>(Lcom/android/server/pm/Settings;)V
HSPLcom/android/server/pm/Settings;->dispatchChange(Lcom/android/server/utils/Watchable;)V+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchableImpl;
HSPLcom/android/server/pm/Settings;->getApplicationEnabledSettingLPr(Ljava/lang/String;I)I+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
-HPLcom/android/server/pm/Settings;->getBlockUninstallLPr(ILjava/lang/String;)Z+]Lcom/android/server/utils/WatchedSparseArray;Lcom/android/server/utils/WatchedSparseArray;
HSPLcom/android/server/pm/Settings;->getComponentEnabledSettingLPr(Landroid/content/ComponentName;I)I+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
-HSPLcom/android/server/pm/Settings;->getCrossProfileIntentResolver(I)Lcom/android/server/pm/CrossProfileIntentResolver;+]Lcom/android/server/utils/WatchedSparseArray;Lcom/android/server/utils/WatchedSparseArray;
HSPLcom/android/server/pm/Settings;->getDisabledSystemPkgLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
HSPLcom/android/server/pm/Settings;->getPackageLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
HSPLcom/android/server/pm/Settings;->getRenamedPackageLPr(Ljava/lang/String;)Ljava/lang/String;+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
@@ -2658,7 +2750,6 @@ HSPLcom/android/server/pm/Settings;->readPackageLPw(Lcom/android/modules/utils/T
HSPLcom/android/server/pm/Settings;->readPackageRestrictionsLPr(ILandroid/util/ArrayMap;)V
HSPLcom/android/server/pm/Settings;->updatePackageSetting(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/SharedUserSetting;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILcom/android/server/pm/UserManagerService;[Ljava/lang/String;[J[Z[Ljava/lang/String;[JLjava/util/Set;Ljava/util/UUID;I[BZ)V
HSPLcom/android/server/pm/Settings;->writeDisabledSysPackageLPr(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/PackageSetting;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/Settings;->writeKeySetAliasesLPr(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V+]Lcom/android/server/pm/PackageKeySetData;Lcom/android/server/pm/PackageKeySetData;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;
HSPLcom/android/server/pm/Settings;->writeLPr(Lcom/android/server/pm/Computer;Z)V+]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/pm/KeySetManagerService;Lcom/android/server/pm/KeySetManagerService;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/PackageSignatures;Lcom/android/server/pm/PackageSignatures;]Lcom/android/server/pm/permission/LegacyPermissionSettings;Lcom/android/server/pm/permission/LegacyPermissionSettings;]Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/verify/domain/DomainVerificationService;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;
HSPLcom/android/server/pm/Settings;->writePackageLPr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/util/ArrayList;Lcom/android/server/pm/PackageSetting;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/PackageSignatures;Lcom/android/server/pm/PackageSignatures;]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
HSPLcom/android/server/pm/Settings;->writePackageListLPrInternal(I)V+]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/permission/LegacyPermissionDataProvider;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Ljava/io/File;Ljava/io/File;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/List;Ljava/util/ArrayList;
@@ -2669,36 +2760,37 @@ HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->moveToNextInternal(Ljava
HSPLcom/android/server/pm/SettingsXml$WriteSectionImpl;->attribute(Ljava/lang/String;I)Lcom/android/server/pm/SettingsXml$WriteSection;+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
HSPLcom/android/server/pm/SettingsXml$WriteSectionImpl;->attribute(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/pm/SettingsXml$WriteSection;+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
HSPLcom/android/server/pm/SettingsXml$WriteSectionImpl;->close()V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/Stack;Ljava/util/Stack;
+HSPLcom/android/server/pm/SettingsXml$WriteSectionImpl;->finish()V+]Lcom/android/server/pm/SettingsXml$WriteSectionImpl;Lcom/android/server/pm/SettingsXml$WriteSectionImpl;
HSPLcom/android/server/pm/SettingsXml$WriteSectionImpl;->startSection(Ljava/lang/String;)Lcom/android/server/pm/SettingsXml$WriteSection;+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/Stack;Ljava/util/Stack;
HSPLcom/android/server/pm/SharedLibrariesImpl;->collectSharedLibraryInfos(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;Ljava/util/Map;)Ljava/util/ArrayList;
-HSPLcom/android/server/pm/SharedLibrariesImpl;->executeSharedLibrariesUpdateLPw(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Ljava/util/ArrayList;[I)V
HSPLcom/android/server/pm/SharedLibrariesImpl;->getStaticLibraryInfos(Ljava/lang/String;)Lcom/android/server/utils/WatchedLongSparseArray;+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
HSPLcom/android/server/pm/SharedUserSetting;-><init>(Lcom/android/server/pm/SharedUserSetting;)V
HSPLcom/android/server/pm/SharedUserSetting;->getPackageStates()Landroid/util/ArraySet;+]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;
-HPLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda29;-><init>(Lcom/android/server/pm/ShortcutPackage;Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;Landroid/util/ArraySet;Z)V
-HPLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda29;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda36;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda24;-><init>(Lcom/android/server/pm/ShortcutPackage;Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;Landroid/util/ArraySet;Z)V
+HPLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda24;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda31;->apply(Ljava/lang/Object;)Ljava/lang/Object;
HPLcom/android/server/pm/ShortcutPackage;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;Lcom/android/server/pm/ShortcutPackageInfo;)V
HPLcom/android/server/pm/ShortcutPackage;->findAll(Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;IZ)V+]Lcom/android/server/pm/ShortcutLauncher;Lcom/android/server/pm/ShortcutLauncher;]Lcom/android/server/pm/ShortcutPackageInfo;Lcom/android/server/pm/ShortcutPackageInfo;]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;
-HPLcom/android/server/pm/ShortcutPackage;->forEachShortcutStopWhen(Ljava/util/function/Function;)V+]Ljava/util/function/Function;Lcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda28;,Lcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda36;,Lcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda3;
-HPLcom/android/server/pm/ShortcutPackage;->parseShortcut(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;IZ)Landroid/content/pm/ShortcutInfo;
+HPLcom/android/server/pm/ShortcutPackage;->forEachShortcutStopWhen(Ljava/util/function/Function;)V+]Ljava/util/function/Function;Lcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda23;,Lcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda28;,Lcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda31;,Lcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda36;,Lcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda3;
+HPLcom/android/server/pm/ShortcutPackage;->parseShortcut(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;IZ)Landroid/content/pm/ShortcutInfo;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;
HPLcom/android/server/pm/ShortcutPackage;->rescanPackageIfNeeded(ZZ)Z+]Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageInfo;]Lcom/android/server/pm/ShortcutPackage;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutPackageInfo;Lcom/android/server/pm/ShortcutPackageInfo;]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
-HPLcom/android/server/pm/ShortcutPackage;->saveShortcut(Lcom/android/modules/utils/TypedXmlSerializer;Landroid/content/pm/ShortcutInfo;ZZ)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Lcom/android/server/pm/ShortcutPackageInfo;Lcom/android/server/pm/ShortcutPackageInfo;]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutPackage;
-HPLcom/android/server/pm/ShortcutPackage;->saveShortcutsAsync(Ljava/util/Collection;)V
+HPLcom/android/server/pm/ShortcutPackage;->saveShortcut(Lcom/android/modules/utils/TypedXmlSerializer;Landroid/content/pm/ShortcutInfo;ZZ)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Lcom/android/server/pm/ShortcutPackageInfo;Lcom/android/server/pm/ShortcutPackageInfo;]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutPackage;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
HPLcom/android/server/pm/ShortcutPackage;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;Z)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Lcom/android/server/pm/ShareTargetInfo;Lcom/android/server/pm/ShareTargetInfo;]Lcom/android/server/pm/ShortcutPackage;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutPackageInfo;Lcom/android/server/pm/ShortcutPackageInfo;]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutPackage;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/pm/ShortcutPackageInfo;->saveToXml(Lcom/android/server/pm/ShortcutService;Lcom/android/modules/utils/TypedXmlSerializer;Z)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Base64$Encoder;Ljava/util/Base64$Encoder;
-HPLcom/android/server/pm/ShortcutPackageItem;->getResilientFile(Ljava/io/File;)Lcom/android/server/pm/ResilientAtomicFile;
-HPLcom/android/server/pm/ShortcutParser;->parseShortcutsOneFile(Lcom/android/server/pm/ShortcutService;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILjava/util/List;Ljava/util/List;)Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/pm/ShortcutPackageItem;->getResilientFile(Ljava/io/File;)Lcom/android/server/pm/ResilientAtomicFile;+]Ljava/io/File;Ljava/io/File;
+HPLcom/android/server/pm/ShortcutPackageItem;->saveShortcutPackageItem()V+]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutLauncher;,Lcom/android/server/pm/ShortcutPackage;]Ljava/io/File;Ljava/io/File;
+HPLcom/android/server/pm/ShortcutParser;->parseShortcutsOneFile(Lcom/android/server/pm/ShortcutService;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILjava/util/List;Ljava/util/List;)Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/pm/ShortcutService$4;->onUidStateChanged(IIJI)V+]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;
-HPLcom/android/server/pm/ShortcutService$LocalService$$ExternalSyntheticLambda10;-><init>(JLandroid/util/ArraySet;Landroid/util/ArraySet;Landroid/content/ComponentName;ZZZZZ)V
-HPLcom/android/server/pm/ShortcutService$LocalService$$ExternalSyntheticLambda10;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/pm/ShortcutService$LocalService$$ExternalSyntheticLambda3;-><init>(JLandroid/util/ArraySet;Landroid/util/ArraySet;Landroid/content/ComponentName;ZZZZZ)V
+HPLcom/android/server/pm/ShortcutService$LocalService$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/pm/ShortcutService$LocalService;->$r8$lambda$4oN-teeezN_bMPNKBELK1aAUWLM(JLandroid/util/ArraySet;Landroid/util/ArraySet;Landroid/content/ComponentName;ZZZZZLandroid/content/pm/ShortcutInfo;)Z
HPLcom/android/server/pm/ShortcutService$LocalService;->getShortcuts(ILjava/lang/String;JLjava/lang/String;Ljava/util/List;Ljava/util/List;Landroid/content/ComponentName;IIII)Ljava/util/List;+]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutLauncher;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Lcom/android/server/pm/ShortcutUser;Lcom/android/server/pm/ShortcutUser;
-HPLcom/android/server/pm/ShortcutService$LocalService;->lambda$getFilterFromQuery$1(JLandroid/util/ArraySet;Landroid/util/ArraySet;Landroid/content/ComponentName;ZZZZZLandroid/content/pm/ShortcutInfo;)Z
+HPLcom/android/server/pm/ShortcutService$LocalService;->getShortcutsInnerLocked(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;III)V+]Lcom/android/server/pm/ShortcutPackage;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Lcom/android/server/pm/ShortcutUser;Lcom/android/server/pm/ShortcutUser;
HPLcom/android/server/pm/ShortcutService;->getUserShortcutsLocked(I)Lcom/android/server/pm/ShortcutUser;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;
+HPLcom/android/server/pm/ShortcutService;->injectPackageInfoWithUninstalled(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo;+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;
HSPLcom/android/server/pm/ShortcutService;->injectPostToHandler(Ljava/lang/Runnable;)V
HPLcom/android/server/pm/ShortcutService;->isUserUnlockedL(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;
-HPLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;IZ)Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Ljava/util/List;Ljava/util/ArrayList;
-HPLcom/android/server/pm/ShortcutUser;->getAppSearch(Landroid/app/appsearch/AppSearchManager$SearchContext;)Lcom/android/internal/infra/AndroidFuture;+]Landroid/app/appsearch/AppSearchManager;Landroid/app/appsearch/AppSearchManager;]Lcom/android/server/pm/ShortcutUser;Lcom/android/server/pm/ShortcutUser;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;IZ)Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
HPLcom/android/server/pm/ShortcutUser;->getLauncherShortcuts(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutLauncher;+]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutLauncher;
HPLcom/android/server/pm/ShortcutUser;->getPackageShortcutsIfExists(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage;+]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutPackage;
HPLcom/android/server/pm/ShortcutUser;->rescanPackageIfNeeded(Ljava/lang/String;Z)V+]Lcom/android/server/pm/ShortcutPackage;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutUser;Lcom/android/server/pm/ShortcutUser;
@@ -2726,22 +2818,18 @@ HPLcom/android/server/pm/UserManagerService;->getApplicationRestrictionsForUser(
HSPLcom/android/server/pm/UserManagerService;->getEffectiveUserRestrictions(I)Landroid/os/Bundle;+]Lcom/android/server/pm/RestrictionsSet;Lcom/android/server/pm/RestrictionsSet;
HSPLcom/android/server/pm/UserManagerService;->getInternalForInjectorOnly()Lcom/android/server/pm/UserManagerInternal;
HSPLcom/android/server/pm/UserManagerService;->getProfileIds(ILjava/lang/String;ZZ)[I+]Landroid/util/IntArray;Landroid/util/IntArray;
-HSPLcom/android/server/pm/UserManagerService;->getProfileIds(IZ)[I+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
HSPLcom/android/server/pm/UserManagerService;->getProfileIdsLU(ILjava/lang/String;ZZ)Landroid/util/IntArray;+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
HSPLcom/android/server/pm/UserManagerService;->getProfileParent(I)Landroid/content/pm/UserInfo;
HSPLcom/android/server/pm/UserManagerService;->getProfileParentLU(I)Landroid/content/pm/UserInfo;
-HSPLcom/android/server/pm/UserManagerService;->getProfileType(I)Ljava/lang/String;+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;
-HSPLcom/android/server/pm/UserManagerService;->getProfiles(IZ)Ljava/util/List;
-HSPLcom/android/server/pm/UserManagerService;->getProfilesLU(ILjava/lang/String;ZZ)Ljava/util/List;+]Landroid/util/IntArray;Landroid/util/IntArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;
HPLcom/android/server/pm/UserManagerService;->getUidForPackage(Ljava/lang/String;)I+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
HSPLcom/android/server/pm/UserManagerService;->getUserDataLU(I)Lcom/android/server/pm/UserManagerService$UserData;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/pm/UserManagerService;->getUserHandle(I)I
+HSPLcom/android/server/pm/UserManagerService;->getUserIds()[I
HSPLcom/android/server/pm/UserManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo;
HSPLcom/android/server/pm/UserManagerService;->getUserInfoLU(I)Landroid/content/pm/UserInfo;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/pm/UserManagerService;->getUserInfoNoChecks(I)Landroid/content/pm/UserInfo;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/pm/UserManagerService;->getUserPropertiesCopy(I)Landroid/content/pm/UserProperties;
HSPLcom/android/server/pm/UserManagerService;->getUserPropertiesInternal(I)Landroid/content/pm/UserProperties;
-HPLcom/android/server/pm/UserManagerService;->getUserStartRealtime()J
-HPLcom/android/server/pm/UserManagerService;->getUserUnlockRealtime()J
HSPLcom/android/server/pm/UserManagerService;->getUsers(ZZZ)Ljava/util/List;
HSPLcom/android/server/pm/UserManagerService;->getUsersInternal(ZZZ)Ljava/util/List;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
HSPLcom/android/server/pm/UserManagerService;->hasCreateUsersPermission()Z
@@ -2750,11 +2838,13 @@ HSPLcom/android/server/pm/UserManagerService;->hasManageUsersPermission(I)Z
HSPLcom/android/server/pm/UserManagerService;->hasQueryOrCreateUsersPermission()Z
HSPLcom/android/server/pm/UserManagerService;->hasUserRestriction(Ljava/lang/String;I)Z+]Lcom/android/server/pm/UserManagerService$LocalService;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
HSPLcom/android/server/pm/UserManagerService;->isProfileOf(Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;)Z
+HSPLcom/android/server/pm/UserManagerService;->isSameProfileGroupNoChecks(II)Z
+HSPLcom/android/server/pm/UserManagerService;->isUserRunning(I)Z+]Lcom/android/server/pm/UserManagerService$LocalService;Lcom/android/server/pm/UserManagerService$LocalService;
HPLcom/android/server/pm/UserManagerService;->packageToRestrictionsFileName(Ljava/lang/String;)Ljava/lang/String;
HPLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLAr(Landroid/util/AtomicFile;)Landroid/os/Bundle;+]Landroid/util/AtomicFile;Landroid/util/AtomicFile;]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Ljava/io/File;Ljava/io/File;
HPLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLAr(Ljava/lang/String;I)Landroid/os/Bundle;
HPLcom/android/server/pm/UserManagerService;->readEntry(Landroid/os/Bundle;Ljava/util/ArrayList;Lcom/android/modules/utils/TypedXmlPullParser;)V+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/pm/UserManagerService;->setUserRestrictionInner(ILjava/lang/String;Z)V+]Lcom/android/server/pm/RestrictionsSet;Lcom/android/server/pm/RestrictionsSet;
+HSPLcom/android/server/pm/UserManagerService;->userExists(I)Z
HSPLcom/android/server/pm/UserManagerService;->userWithName(Landroid/content/pm/UserInfo;)Landroid/content/pm/UserInfo;
HSPLcom/android/server/pm/UserNeedsBadgingCache;->get(I)Z+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
HSPLcom/android/server/pm/UserRestrictionsUtils;->areEqual(Landroid/os/Bundle;Landroid/os/Bundle;)Z+]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
@@ -2763,25 +2853,28 @@ HSPLcom/android/server/pm/UserRestrictionsUtils;->isValidRestriction(Ljava/lang/
HSPLcom/android/server/pm/UserVisibilityMediator;->isCurrentUserOrRunningProfileOfCurrentUser(I)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HSPLcom/android/server/pm/UserVisibilityMediator;->isUserVisible(I)Z
HSPLcom/android/server/pm/WatchedIntentFilter;->getIntentFilter()Landroid/content/IntentFilter;
+HSPLcom/android/server/pm/dex/DexManager;->loadInternal(Ljava/util/Map;)V
HSPLcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;-><init>(Lcom/android/server/pm/snapshot/PackageDataSnapshot;)V
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;-><init>(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl-IA;)V
HSPLcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;->checkClosed()V
HSPLcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;->close()V
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;-><init>(ILandroid/os/UserHandle;Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;Lcom/android/server/pm/pkg/PackageState;)V
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;-><init>(ILandroid/os/UserHandle;Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/local/PackageManagerLocalImpl-IA;)V
HSPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->checkClosed()V+]Lcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;
HSPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->close()V
-HSPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->getPackageState(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageState;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;
-HSPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->getPackageStates()Ljava/util/Map;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->getPackageState(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageState;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;->close()V
HSPLcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;->filtered(ILandroid/os/UserHandle;)Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;
HSPLcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;->getPackageStates()Ljava/util/Map;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;
HSPLcom/android/server/pm/local/PackageManagerLocalImpl;->withFilteredSnapshot()Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;+]Lcom/android/server/pm/local/PackageManagerLocalImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl;
HSPLcom/android/server/pm/local/PackageManagerLocalImpl;->withFilteredSnapshot()Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;+]Lcom/android/server/pm/local/PackageManagerLocalImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl;
HSPLcom/android/server/pm/local/PackageManagerLocalImpl;->withFilteredSnapshot(ILandroid/os/UserHandle;)Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;+]Lcom/android/server/pm/local/PackageManagerLocalImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl;
-HSPLcom/android/server/pm/local/PackageManagerLocalImpl;->withFilteredSnapshot(ILandroid/os/UserHandle;)Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl;->withFilteredSnapshot(ILandroid/os/UserHandle;)Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl;->withFilteredSnapshot(ILandroid/os/UserHandle;Lcom/android/server/pm/pkg/PackageState;)Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
HSPLcom/android/server/pm/local/PackageManagerLocalImpl;->withUnfilteredSnapshot()Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;+]Lcom/android/server/pm/local/PackageManagerLocalImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl;
HSPLcom/android/server/pm/local/PackageManagerLocalImpl;->withUnfilteredSnapshot()Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
-HSPLcom/android/server/pm/parsing/PackageCacher;->cacheResult(Ljava/io/File;ILcom/android/internal/pm/parsing/pkg/ParsedPackage;)V
HSPLcom/android/server/pm/parsing/PackageCacher;->getCacheKey(Ljava/io/File;I)Ljava/lang/String;
-HSPLcom/android/server/pm/parsing/PackageCacher;->isCacheUpToDate(Ljava/io/File;Ljava/io/File;)Z
+HSPLcom/android/server/pm/parsing/PackageCacher;->isCacheFileUpToDate(Ljava/io/File;Ljava/io/File;)Z
HSPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoFlags(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;)I
HSPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoPrivateFlags(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;)I
HSPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoPrivateFlagsExt(ILcom/android/server/pm/pkg/PackageStateInternal;)I+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
@@ -2802,26 +2895,23 @@ HSPLcom/android/server/pm/parsing/PackageInfoUtils;->updateApplicationInfo(Landr
HSPLcom/android/server/pm/parsing/ParsedComponentStateUtils;->getNonLocalizedLabelAndIcon(Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/server/pm/pkg/PackageStateInternal;I)Landroid/util/Pair;+]Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedInstrumentationImpl;,Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserStateInternal;Lcom/android/server/pm/pkg/PackageUserStateImpl;
HSPLcom/android/server/pm/parsing/library/ApexSharedLibraryUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
HSPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->fillVersionCodes(Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/pm/PackageInfo;)V+]Lcom/android/internal/pm/pkg/parsing/ParsingPackageHidden;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
-HSPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->getRawSecondaryCpuAbi(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/lang/String;
-HSPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->hasComponentClassName(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Z+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
+HSPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->hasComponentClassName(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Z+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/internal/pm/pkg/component/ParsedInstrumentation;Lcom/android/internal/pm/pkg/component/ParsedInstrumentationImpl;]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
HSPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->isMatchForSystemOnly(Lcom/android/server/pm/pkg/PackageState;J)Z+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
-HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DelayingPackageManagerCache;->getPermissionInfo(Ljava/lang/String;)Landroid/content/pm/PermissionInfo;+]Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;
-HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DelayingPackageManagerCache;->getPermissionState(Ljava/lang/String;Landroid/content/pm/PackageInfo;Landroid/os/UserHandle;)Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DelayingPackageManagerCache$PermissionState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantRuntimePermissions(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Landroid/content/pm/PackageInfo;Ljava/util/Set;ZZZI)V+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;,Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DelayingPackageManagerCache;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Set;Landroid/util/ArraySet;
HSPLcom/android/server/pm/permission/LegacyPermission;->write(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
+HSPLcom/android/server/pm/permission/LegacyPermissionManagerService;->checkDeviceIdentifierAccess(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)I+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/app/admin/DevicePolicyManager;Landroid/app/admin/DevicePolicyManager;]Lcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;Lcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;
HSPLcom/android/server/pm/permission/LegacyPermissionManagerService;->verifyCallerCanCheckAccess(Ljava/lang/String;Ljava/lang/String;II)V+]Lcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;Lcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;
-HSPLcom/android/server/pm/permission/LegacyPermissionSettings;->writePermissions(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
HSPLcom/android/server/pm/permission/LegacyPermissionState;-><init>()V
HSPLcom/android/server/pm/permission/LegacyPermissionState;->copyFrom(Lcom/android/server/pm/permission/LegacyPermissionState;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
HSPLcom/android/server/pm/permission/PermissionManagerService$AttributionSourceRegistry;->isRegisteredAttributionSource(Landroid/content/AttributionSource;)Z+]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap;
-HPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkAppOpPermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;ZZ)I
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkAppOpPermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;ZZ)I
HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkPermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Ljava/lang/String;Landroid/content/AttributionSource;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/pm/permission/PermissionManagerServiceInternal$HotwordDetectionServiceProvider;Lcom/android/server/voiceinteraction/HotwordDetectionConnection$2$$ExternalSyntheticLambda0;]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;]Ljava/util/Set;Landroid/util/ArraySet;,Ljava/util/Collections$EmptySet;
HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkPermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;ZZZI)I+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkPermission(Ljava/lang/String;Landroid/content/AttributionSourceState;Ljava/lang/String;ZZZI)I
HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkRuntimePermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;ZZZI)I+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->getAttributionChainId(ZLandroid/content/AttributionSource;)I
HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->performOpTransaction(Landroid/content/Context;Landroid/os/IBinder;ILandroid/content/AttributionSource;Ljava/lang/String;ZZZZZIIII)I+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;
-HPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->resolvePackageName(Landroid/content/Context;Landroid/content/AttributionSource;)Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->resolveAttributionSource(Landroid/content/Context;Landroid/content/AttributionSource;)Landroid/content/AttributionSource;
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->resolvePackageName(Landroid/content/Context;Landroid/content/AttributionSource;)Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->checkPermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/pm/permission/PermissionManagerService;Lcom/android/server/pm/permission/PermissionManagerService;
HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->checkUidPermission(ILjava/lang/String;I)I+]Lcom/android/server/pm/permission/PermissionManagerService;Lcom/android/server/pm/permission/PermissionManagerService;
HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getGidsForUid(I)[I+]Lcom/android/server/pm/permission/PermissionManagerServiceInterface;Lcom/android/server/permission/access/permission/PermissionService;
@@ -2835,7 +2925,6 @@ HSPLcom/android/server/pm/permission/PermissionManagerService;->getPersistentDev
HSPLcom/android/server/pm/permission/PermissionManagerService;->isRegisteredAttributionSource(Landroid/content/AttributionSourceState;)Z
HSPLcom/android/server/pm/pkg/PackageStateInternal;->getUserStateOrDefault(I)Lcom/android/server/pm/pkg/PackageUserState;+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/pkg/PackageStateInternal;->getUserStateOrDefault(I)Lcom/android/server/pm/pkg/PackageUserStateInternal;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/pkg/PackageStateUnserialized;-><init>(Lcom/android/server/pm/PackageSetting;)V
HSPLcom/android/server/pm/pkg/PackageStateUnserialized;->getApexModuleName()Ljava/lang/String;
HSPLcom/android/server/pm/pkg/PackageStateUnserialized;->getLastPackageUsageTimeInMills()[J
HSPLcom/android/server/pm/pkg/PackageStateUnserialized;->getOverrideSeInfo()Ljava/lang/String;
@@ -2847,11 +2936,13 @@ HSPLcom/android/server/pm/pkg/PackageStateUnserialized;->isUpdatedSystemApp()Z
HSPLcom/android/server/pm/pkg/PackageStateUnserialized;->setLastPackageUsageTimeInMills(IJ)Lcom/android/server/pm/pkg/PackageStateUnserialized;+]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized;
HSPLcom/android/server/pm/pkg/PackageStateUnserialized;->updateFrom(Lcom/android/server/pm/pkg/PackageStateUnserialized;)V+]Lcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
HSPLcom/android/server/pm/pkg/PackageStateUtils;->isEnabledAndMatches(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;JI)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl$1;->createSnapshot()Lcom/android/server/pm/pkg/PackageUserStateImpl;
HSPLcom/android/server/pm/pkg/PackageUserStateImpl;-><init>(Lcom/android/server/utils/Watchable;)V
HSPLcom/android/server/pm/pkg/PackageUserStateImpl;-><init>(Lcom/android/server/utils/Watchable;Lcom/android/server/pm/pkg/PackageUserStateImpl;)V+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;
HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getAllOverlayPaths()Landroid/content/pm/overlay/OverlayPaths;
HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getArchiveState()Lcom/android/server/pm/pkg/ArchiveState;
HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getBoolean(I)Z
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getDisabledComponents()Landroid/util/ArraySet;+]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;
HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getDisabledComponentsNoCopy()Lcom/android/server/utils/WatchedArraySet;
HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getEnabledComponents()Landroid/util/ArraySet;+]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;
HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getEnabledComponentsNoCopy()Lcom/android/server/utils/WatchedArraySet;
@@ -2869,15 +2960,18 @@ HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->isStopped()Z
HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->isSuspended()Z
HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->isVirtualPreload()Z
HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->onChanged()V+]Lcom/android/server/utils/Watchable;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setBoolean(IZ)V
HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setDisabledComponents(Landroid/util/ArraySet;)Lcom/android/server/pm/pkg/PackageUserStateImpl;
HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setEnabledComponents(Landroid/util/ArraySet;)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->snapshot()Lcom/android/server/pm/pkg/PackageUserStateImpl;
HSPLcom/android/server/pm/pkg/PackageUserStateUtils;->isAvailable(Lcom/android/server/pm/pkg/PackageUserState;J)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;
HSPLcom/android/server/pm/pkg/PackageUserStateUtils;->isEnabled(Lcom/android/server/pm/pkg/PackageUserState;ZZLjava/lang/String;J)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
HSPLcom/android/server/pm/pkg/PackageUserStateUtils;->isMatch(Lcom/android/server/pm/pkg/PackageUserState;Landroid/content/pm/ComponentInfo;J)Z+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;
HSPLcom/android/server/pm/pkg/PackageUserStateUtils;->isMatch(Lcom/android/server/pm/pkg/PackageUserState;ZZLcom/android/internal/pm/pkg/component/ParsedMainComponent;J)Z+]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;
HSPLcom/android/server/pm/pkg/PackageUserStateUtils;->isMatch(Lcom/android/server/pm/pkg/PackageUserState;ZZZZLjava/lang/String;J)Z
+HSPLcom/android/server/pm/pkg/SharedLibraryWrapper;->getAllCodePaths()Ljava/util/List;
+HSPLcom/android/server/pm/pkg/SharedLibraryWrapper;->getDependencies()Ljava/util/List;+]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/pm/pkg/SharedLibraryWrapper;->getInfo()Landroid/content/pm/SharedLibraryInfo;
+HSPLcom/android/server/pm/pkg/SharedLibraryWrapper;->isNative()Z
HSPLcom/android/server/pm/resolution/ComponentResolver$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->addActivity(Lcom/android/server/pm/Computer;Lcom/android/internal/pm/pkg/component/ParsedActivity;Ljava/lang/String;Ljava/util/List;)V+]Landroid/content/IntentFilter;Landroid/content/IntentFilter;]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->allowFilterResult(Landroid/util/Pair;Ljava/util/List;)Z+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Ljava/util/List;Ljava/util/ArrayList;
@@ -2906,13 +3000,12 @@ HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->n
HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->queryIntent(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;
HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->queryIntentForPackage(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;+]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$UnmodifiableRandomAccessList;
HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->sortResults(Ljava/util/List;)V+]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/pm/resolution/ComponentResolver;->$r8$lambda$UVMyfxjaimXrgxK-y9k5NRVVfkI(Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;)I
HSPLcom/android/server/pm/resolution/ComponentResolver;->addActivitiesLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/List;Z)V+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
HSPLcom/android/server/pm/resolution/ComponentResolver;->addAllComponents(Lcom/android/server/pm/pkg/AndroidPackage;ZLjava/lang/String;Lcom/android/server/pm/Computer;)V+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/resolution/ComponentResolver;->addProvidersLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Z)V+]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
HSPLcom/android/server/pm/resolution/ComponentResolver;->addReceiversLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Z)V+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
HSPLcom/android/server/pm/resolution/ComponentResolver;->addServicesLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Z)V+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
-HSPLcom/android/server/pm/resolution/ComponentResolver;->findMatchingActivity(Ljava/util/List;Lcom/android/internal/pm/pkg/component/ParsedActivity;)Lcom/android/internal/pm/pkg/component/ParsedActivity;+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
-HSPLcom/android/server/pm/resolution/ComponentResolver;->lambda$static$0(Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;)I
HSPLcom/android/server/pm/resolution/ComponentResolver;->snapshot()Lcom/android/server/pm/resolution/ComponentResolverApi;
HSPLcom/android/server/pm/resolution/ComponentResolverBase;->getActivity(Landroid/content/ComponentName;)Lcom/android/internal/pm/pkg/component/ParsedActivity;
HSPLcom/android/server/pm/resolution/ComponentResolverBase;->getReceiver(Landroid/content/ComponentName;)Lcom/android/internal/pm/pkg/component/ParsedActivity;
@@ -2928,37 +3021,41 @@ HSPLcom/android/server/pm/resolution/ComponentResolverBase;->queryServices(Lcom/
HSPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectDomainsInternal(Lcom/android/server/pm/pkg/AndroidPackage;ZZLjava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/function/BiFunction;Lcom/android/server/pm/verify/domain/DomainVerificationCollector$$ExternalSyntheticLambda0;
HSPLcom/android/server/pm/verify/domain/DomainVerificationEnforcer;->callerIsLegacyUserSelector(IILjava/lang/String;I)Z
HSPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;->writeSettings(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/pm/SettingsXml$WriteSection;Lcom/android/server/pm/SettingsXml$WriteSectionImpl;]Lcom/android/server/pm/verify/domain/DomainVerificationLegacySettings$LegacyState;Lcom/android/server/pm/verify/domain/DomainVerificationLegacySettings$LegacyState;
-HSPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->createPkgStateFromXml(Lcom/android/server/pm/SettingsXml$ReadSection;)Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;
HSPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writePkgStateToXml(Lcom/android/server/pm/SettingsXml$WriteSection;Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;ILjava/util/function/Function;)V+]Lcom/android/server/pm/SettingsXml$WriteSection;Lcom/android/server/pm/SettingsXml$WriteSectionImpl;]Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;]Ljava/util/function/Function;Lcom/android/server/pm/verify/domain/DomainVerificationService$$ExternalSyntheticLambda1;
HSPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writeStateMap(Lcom/android/server/pm/SettingsXml$WriteSection;Landroid/util/ArrayMap;)V+]Lcom/android/server/pm/SettingsXml$WriteSection;Lcom/android/server/pm/SettingsXml$WriteSectionImpl;
HSPLcom/android/server/pm/verify/domain/DomainVerificationService;->addPackage(Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/content/pm/verify/domain/DomainSet;)V
HSPLcom/android/server/pm/verify/domain/DomainVerificationService;->setLegacyUserState(Ljava/lang/String;II)Z
HSPLcom/android/server/pm/verify/domain/DomainVerificationUtils;->buildMockAppInfo(Lcom/android/server/pm/pkg/AndroidPackage;)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
HSPLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;-><init>(Ljava/lang/String;Ljava/util/UUID;ZLandroid/util/ArrayMap;Landroid/util/SparseArray;Ljava/lang/String;Landroid/util/ArrayMap;)V
-HSPLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;->getPackageName()Ljava/lang/String;
HSPLcom/android/server/policy/AppOpsPolicy;->checkOperation(IILjava/lang/String;Ljava/lang/String;IZLcom/android/internal/util/function/HexFunction;)I+]Lcom/android/internal/util/function/HexFunction;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda9;
HSPLcom/android/server/policy/AppOpsPolicy;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;ILcom/android/internal/util/function/HexConsumer;)V+]Lcom/android/internal/util/function/HexConsumer;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda11;
-HSPLcom/android/server/policy/AppOpsPolicy;->noteOperation(IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;ZLcom/android/internal/util/function/OctFunction;)Landroid/app/SyncNotedAppOp;+]Lcom/android/internal/util/function/OctFunction;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda1;
+HSPLcom/android/server/policy/AppOpsPolicy;->noteOperation(IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;ZILcom/android/internal/util/function/NonaFunction;)Landroid/app/SyncNotedAppOp;+]Lcom/android/internal/util/function/NonaFunction;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda5;
HSPLcom/android/server/policy/AppOpsPolicy;->resolveDatasourceOp(IILjava/lang/String;Ljava/lang/String;)I
+HSPLcom/android/server/policy/AppOpsPolicy;->resolveRecordAudioOp(II)I+]Landroid/service/voice/VoiceInteractionManagerInternal$HotwordDetectionServiceIdentity;Landroid/service/voice/VoiceInteractionManagerInternal$HotwordDetectionServiceIdentity;]Landroid/service/voice/VoiceInteractionManagerInternal;Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$LocalService;
HSPLcom/android/server/policy/AppOpsPolicy;->resolveSandboxedServiceOp(II)I
HSPLcom/android/server/policy/AppOpsPolicy;->resolveUid(II)I+]Landroid/service/voice/VoiceInteractionManagerInternal$HotwordDetectionServiceIdentity;Landroid/service/voice/VoiceInteractionManagerInternal$HotwordDetectionServiceIdentity;]Landroid/service/voice/VoiceInteractionManagerInternal;Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$LocalService;
HSPLcom/android/server/policy/AppOpsPolicy;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZIILcom/android/internal/util/function/DodecFunction;)Landroid/app/SyncNotedAppOp;+]Lcom/android/internal/util/function/DodecFunction;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda7;
+HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->addPackage(Ljava/lang/String;)V+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->addPermissionAppOp(Landroid/content/pm/PackageInfo;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/pm/PermissionInfo;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->shouldGrantAppOp(Landroid/content/pm/PackageInfo;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/pm/PermissionInfo;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Lcom/android/server/policy/SoftRestrictedPermissionPolicy;Lcom/android/server/policy/SoftRestrictedPermissionPolicy$2;,Lcom/android/server/policy/SoftRestrictedPermissionPolicy$3;
HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->syncPackages()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/policy/PhoneWindowManager;->isKeyguardOccluded()Z+]Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;
HSPLcom/android/server/policy/PhoneWindowManager;->isKeyguardShowing()Z+]Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;
HSPLcom/android/server/policy/PhoneWindowManager;->isKeyguardShowingAndNotOccluded()Z+]Lcom/android/server/policy/PhoneWindowManager;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;
+HSPLcom/android/server/policy/PhoneWindowManager;->keyguardOn()Z+]Lcom/android/server/policy/PhoneWindowManager;Lcom/android/server/policy/PhoneWindowManager;
HSPLcom/android/server/policy/PhoneWindowManager;->setAllowLockscreenWhenOn(IZ)V+]Ljava/util/HashSet;Ljava/util/HashSet;
HSPLcom/android/server/policy/PhoneWindowManager;->updateLockScreenTimeout()V+]Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Ljava/util/HashSet;Ljava/util/HashSet;
HSPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerFromTypeLw(I)I+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;
HSPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerFromTypeLw(IZ)I+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;
+HSPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerFromTypeLw(IZZ)I+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;
HSPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerLw(Lcom/android/server/policy/WindowManagerPolicy$WindowState;)I+]Lcom/android/server/policy/WindowManagerPolicy$WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;
+HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isInputRestricted()Z+]Lcom/android/server/policy/keyguard/KeyguardServiceWrapper;Lcom/android/server/policy/keyguard/KeyguardServiceWrapper;
HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isOccluded()Z
HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isSecure(I)Z+]Lcom/android/server/policy/keyguard/KeyguardServiceWrapper;Lcom/android/server/policy/keyguard/KeyguardServiceWrapper;
HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isShowing()Z+]Lcom/android/server/policy/keyguard/KeyguardServiceWrapper;Lcom/android/server/policy/keyguard/KeyguardServiceWrapper;
HPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->isShowing()Z+]Lcom/android/server/policy/keyguard/KeyguardStateMonitor;Lcom/android/server/policy/keyguard/KeyguardStateMonitor;
HPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isShowing()Z
-HSPLcom/android/server/policy/role/RoleServicePlatformHelperImpl;->lambda$computePackageStateHash$0(Ljava/io/DataOutputStream;Landroid/content/pm/PackageManagerInternal;ILcom/android/server/pm/pkg/AndroidPackage;)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/pm/Signature;Landroid/content/pm/Signature;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/io/DataOutputStream;Ljava/io/DataOutputStream;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
+HSPLcom/android/server/policy/role/RoleServicePlatformHelperImpl;->$r8$lambda$iHIoFGt-sugSqlklSHHOwdIQL9Y(Ljava/io/DataOutputStream;Landroid/content/pm/PackageManagerInternal;ILcom/android/server/pm/pkg/AndroidPackage;)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/pm/Signature;Landroid/content/pm/Signature;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/io/DataOutputStream;Ljava/io/DataOutputStream;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
HSPLcom/android/server/power/AttentionDetector;->updateUserActivity(JJ)J+]Landroid/attention/AttentionManagerInternal;Lcom/android/server/attention/AttentionManagerService$LocalService;]Lcom/android/server/power/AttentionDetector;Lcom/android/server/power/AttentionDetector;]Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/wm/WindowManagerService$LocalService;
HSPLcom/android/server/power/FaceDownDetector;->onSensorChanged(Landroid/hardware/SensorEvent;)V
HSPLcom/android/server/power/InattentiveSleepWarningController;->isShown()Z
@@ -2968,17 +3065,18 @@ HPLcom/android/server/power/Notifier$$ExternalSyntheticLambda5;-><init>(Lcom/and
HPLcom/android/server/power/Notifier$$ExternalSyntheticLambda5;->run()V
HSPLcom/android/server/power/Notifier$NotifierHandler;->handleMessage(Landroid/os/Message;)V
HSPLcom/android/server/power/Notifier$RealInjector;->currentTimeMillis()J
+HSPLcom/android/server/power/Notifier;->getBatteryStatsWakeLockMonitorType(I)I
HSPLcom/android/server/power/Notifier;->lambda$notifyWakeLockListener$9(ZLjava/lang/String;IIILandroid/os/WorkSource;Ljava/lang/String;Ljava/lang/String;JLandroid/os/IWakeLockCallback;)V+]Landroid/os/IWakeLockCallback;Landroid/os/IWakeLockCallback$Stub$Proxy;]Lcom/android/server/power/feature/PowerManagerFlags;Lcom/android/server/power/feature/PowerManagerFlags;
+HSPLcom/android/server/power/Notifier;->logWakelockStateChanged(ILjava/lang/String;ILandroid/os/WorkSource;Lcom/android/server/power/FrameworkStatsLogger$WakelockEventType;)V+]Landroid/os/BatteryStatsInternal;Lcom/android/server/am/BatteryStatsService$LocalService;]Landroid/os/WorkSource;Landroid/os/WorkSource;]Lcom/android/server/power/FrameworkStatsLogger;Lcom/android/server/power/FrameworkStatsLogger;]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/Notifier;->notifyWakeLockListener(Landroid/os/IWakeLockCallback;Ljava/lang/String;ZIIILandroid/os/WorkSource;Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/power/Notifier$Injector;Lcom/android/server/power/Notifier$RealInjector;
HSPLcom/android/server/power/Notifier;->notifyWakelockAcquisition(Ljava/lang/String;IIILandroid/os/WorkSource;Ljava/lang/String;Ljava/lang/String;J)V+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;
+HPLcom/android/server/power/Notifier;->notifyWakelockChanging(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V+]Lcom/android/server/power/feature/PowerManagerFlags;Lcom/android/server/power/feature/PowerManagerFlags;
HSPLcom/android/server/power/Notifier;->notifyWakelockRelease(Ljava/lang/String;IIILandroid/os/WorkSource;Ljava/lang/String;Ljava/lang/String;J)V+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;
HSPLcom/android/server/power/Notifier;->onScreenPolicyUpdate(II)V+]Lcom/android/server/power/WakefulnessSessionObserver;Lcom/android/server/power/WakefulnessSessionObserver;
-HSPLcom/android/server/power/Notifier;->onUserActivity(III)V+]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/power/WakefulnessSessionObserver;Lcom/android/server/power/WakefulnessSessionObserver;
-HSPLcom/android/server/power/Notifier;->onWakeLockAcquired(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;)V+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/power/WakefulnessSessionObserver;Lcom/android/server/power/WakefulnessSessionObserver;]Lcom/android/server/power/feature/PowerManagerFlags;Lcom/android/server/power/feature/PowerManagerFlags;
-HSPLcom/android/server/power/Notifier;->onWakeLockChanging(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;)V+]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;
-HSPLcom/android/server/power/Notifier;->onWakeLockReleased(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;I)V+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/power/WakefulnessSessionObserver;Lcom/android/server/power/WakefulnessSessionObserver;]Lcom/android/server/power/feature/PowerManagerFlags;Lcom/android/server/power/feature/PowerManagerFlags;
+HSPLcom/android/server/power/Notifier;->onWakeLockAcquired(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;)V+]Lcom/android/server/power/WakefulnessSessionObserver;Lcom/android/server/power/WakefulnessSessionObserver;]Lcom/android/server/power/feature/PowerManagerFlags;Lcom/android/server/power/feature/PowerManagerFlags;
+HSPLcom/android/server/power/Notifier;->onWakeLockChanging(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;)V+]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;
+HSPLcom/android/server/power/Notifier;->onWakeLockReleased(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;I)V+]Lcom/android/server/power/WakefulnessSessionObserver;Lcom/android/server/power/WakefulnessSessionObserver;]Lcom/android/server/power/feature/PowerManagerFlags;Lcom/android/server/power/feature/PowerManagerFlags;
HSPLcom/android/server/power/Notifier;->sendUserActivity(II)V+]Landroid/telephony/TelephonyManager;Landroid/telephony/TelephonyManager;]Lcom/android/server/input/InputManagerInternal;Lcom/android/server/input/InputManagerService$LocalService;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/power/FaceDownDetector;Lcom/android/server/power/FaceDownDetector;]Lcom/android/server/power/ScreenUndimDetector;Lcom/android/server/power/ScreenUndimDetector;
-HSPLcom/android/server/power/PowerGroup;->getDesiredScreenPolicyLocked(ZZZZZ)I+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;
HSPLcom/android/server/power/PowerGroup;->getGroupId()I
HSPLcom/android/server/power/PowerGroup;->getLastUserActivityTimeLocked()J
HSPLcom/android/server/power/PowerGroup;->getLastUserActivityTimeNoChangeLightsLocked()J
@@ -2993,11 +3091,13 @@ HSPLcom/android/server/power/PowerGroup;->isSandmanSummonedLocked()Z
HSPLcom/android/server/power/PowerGroup;->needSuspendBlockerLocked(ZZ)Z+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;
HSPLcom/android/server/power/PowerGroup;->setReadyLocked(Z)Z
HSPLcom/android/server/power/PowerGroup;->setUserActivitySummaryLocked(I)V
+HSPLcom/android/server/power/PowerGroup;->setWakeLockSummaryLocked(I)V
HSPLcom/android/server/power/PowerGroup;->supportsSandmanLocked()Z
HSPLcom/android/server/power/PowerGroup;->updateLocked(FLjava/lang/CharSequence;ZZIIFZZLandroid/os/PowerSaveState;ZZZZZZ)Z+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;
+HSPLcom/android/server/power/PowerGroup;->updateScreenPolicyLocked(ZZZZZ)V+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/server/power/feature/PowerManagerFlags;Lcom/android/server/power/feature/PowerManagerFlags;
HSPLcom/android/server/power/PowerManagerService$BinderService;->acquireWakeLock(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;ILandroid/os/IWakeLockCallback;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/os/WorkSource;Landroid/os/WorkSource;]Lcom/android/server/power/feature/PowerManagerFlags;Lcom/android/server/power/feature/PowerManagerFlags;
HSPLcom/android/server/power/PowerManagerService$BinderService;->isDeviceIdleMode()Z
-HSPLcom/android/server/power/PowerManagerService$BinderService;->isInteractive()Z
+HSPLcom/android/server/power/PowerManagerService$BinderService;->isDisplayInteractive(I)Z
HSPLcom/android/server/power/PowerManagerService$BinderService;->isLightDeviceIdleMode()Z
HSPLcom/android/server/power/PowerManagerService$BinderService;->releaseWakeLock(Landroid/os/IBinder;I)V+]Landroid/content/Context;Landroid/app/ContextImpl;
HSPLcom/android/server/power/PowerManagerService$BinderService;->updateWakeLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/os/WorkSource;Landroid/os/WorkSource;
@@ -3005,6 +3105,7 @@ HSPLcom/android/server/power/PowerManagerService$Injector$2;->uptimeMillis()J
HSPLcom/android/server/power/PowerManagerService$LocalService;->finishUidChanges()V
HSPLcom/android/server/power/PowerManagerService$LocalService;->startUidChanges()V
HSPLcom/android/server/power/PowerManagerService$LocalService;->updateUidProcState(II)V
+HSPLcom/android/server/power/PowerManagerService$NativeWrapper;->nativeAcquireSuspendBlocker(Ljava/lang/String;)V
HSPLcom/android/server/power/PowerManagerService$PowerManagerHandlerCallback;->handleMessage(Landroid/os/Message;)Z
HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->acquire(Ljava/lang/String;)V+]Lcom/android/server/power/PowerManagerService$NativeWrapper;Lcom/android/server/power/PowerManagerService$NativeWrapper;
HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->recordReferenceLocked(Ljava/lang/String;)V+]Landroid/util/LongArray;Landroid/util/LongArray;
@@ -3023,20 +3124,20 @@ HSPLcom/android/server/power/PowerManagerService;->findWakeLockIndexLocked(Landr
HSPLcom/android/server/power/PowerManagerService;->finishUidChangesInternal()V
HSPLcom/android/server/power/PowerManagerService;->finishWakefulnessChangeIfNeededLocked()V+]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;
HSPLcom/android/server/power/PowerManagerService;->getAttentiveTimeoutLocked()J
+HSPLcom/android/server/power/PowerManagerService;->getDefaultGroupScreenOffTimeoutOverrideLocked(JJ)J
HSPLcom/android/server/power/PowerManagerService;->getNextProfileTimeoutLocked(J)J+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/power/PowerManagerService;->getScreenOffTimeoutLocked(JJ)J
-HSPLcom/android/server/power/PowerManagerService;->getScreenOffTimeoutOverrideLocked(JJ)J
HSPLcom/android/server/power/PowerManagerService;->getSleepTimeoutLocked(J)J
HSPLcom/android/server/power/PowerManagerService;->getWakeLockSummaryFlags(Lcom/android/server/power/PowerManagerService$WakeLock;)I
-HSPLcom/android/server/power/PowerManagerService;->handleSandman(I)V+]Landroid/service/dreams/DreamManagerInternal;Lcom/android/server/dreams/DreamManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;
+HSPLcom/android/server/power/PowerManagerService;->handleSandman(I)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/service/dreams/DreamManagerInternal;Lcom/android/server/dreams/DreamManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;
HSPLcom/android/server/power/PowerManagerService;->isAttentiveTimeoutExpired(Lcom/android/server/power/PowerGroup;J)Z+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;
HPLcom/android/server/power/PowerManagerService;->isBeingKeptAwakeLocked(Lcom/android/server/power/PowerGroup;)Z+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;
HSPLcom/android/server/power/PowerManagerService;->isDeviceIdleModeInternal()Z
-HSPLcom/android/server/power/PowerManagerService;->isGloballyInteractiveInternal()Z
-HSPLcom/android/server/power/PowerManagerService;->isItBedTimeYetLocked(Lcom/android/server/power/PowerGroup;)Z+]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;
+HSPLcom/android/server/power/PowerManagerService;->isInteractiveInternal(II)Z+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;
HSPLcom/android/server/power/PowerManagerService;->isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()Z
HSPLcom/android/server/power/PowerManagerService;->maybeHideInattentiveSleepWarningLocked(JJ)Z+]Lcom/android/server/power/InattentiveSleepWarningController;Lcom/android/server/power/InattentiveSleepWarningController;
HSPLcom/android/server/power/PowerManagerService;->needSuspendBlockerLocked()Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;
+HSPLcom/android/server/power/PowerManagerService;->notifyScreenTimeoutPolicyChangesLocked()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/server/power/feature/PowerManagerFlags;Lcom/android/server/power/feature/PowerManagerFlags;
HSPLcom/android/server/power/PowerManagerService;->notifyWakeLockAcquiredLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V+]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;
HSPLcom/android/server/power/PowerManagerService;->notifyWakeLockChangingLocked(Lcom/android/server/power/PowerManagerService$WakeLock;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;)V+]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;
HSPLcom/android/server/power/PowerManagerService;->notifyWakeLockLongFinishedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V+]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;
@@ -3058,6 +3159,7 @@ HSPLcom/android/server/power/PowerManagerService;->updateIsPoweredLocked(I)V+]La
HSPLcom/android/server/power/PowerManagerService;->updatePowerGroupsLocked(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/util/LatencyTracker;Lcom/android/internal/util/LatencyTracker;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;]Lcom/android/server/power/batterysaver/BatterySaverPolicy;Lcom/android/server/power/batterysaver/BatterySaverPolicy;]Lcom/android/server/power/batterysaver/BatterySaverStateMachine;Lcom/android/server/power/batterysaver/BatterySaverStateMachine;
HSPLcom/android/server/power/PowerManagerService;->updatePowerStateLocked()V+]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2;
HSPLcom/android/server/power/PowerManagerService;->updateProfilesLocked(J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/power/PowerManagerService;->updateScreenBrightnessBoostLocked(I)V
HSPLcom/android/server/power/PowerManagerService;->updateStayOnLocked(I)V+]Landroid/os/BatteryManagerInternal;Lcom/android/server/BatteryService$LocalService;
HSPLcom/android/server/power/PowerManagerService;->updateSuspendBlockerLocked()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/server/power/SuspendBlocker;Lcom/android/server/power/PowerManagerService$SuspendBlockerImpl;
HSPLcom/android/server/power/PowerManagerService;->updateUidProcStateInternal(II)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
@@ -3068,7 +3170,7 @@ HSPLcom/android/server/power/PowerManagerService;->updateWakefulnessLocked(I)Z+]
HSPLcom/android/server/power/PowerManagerService;->userActivityNoUpdateLocked(Lcom/android/server/power/PowerGroup;JIII)Z+]Lcom/android/server/power/AttentionDetector;Lcom/android/server/power/AttentionDetector;]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;
HSPLcom/android/server/power/ScreenTimeoutOverridePolicy;->getScreenTimeoutOverrideLocked(IJ)J
HSPLcom/android/server/power/ScreenUndimDetector;->recordScreenPolicy(II)V
-HSPLcom/android/server/power/ThermalManagerService$1;->getCurrentThermalStatus()I
+HSPLcom/android/server/power/ThermalManagerService$2;->getCurrentThermalStatus()I
HPLcom/android/server/power/WakeLockLog$EntryByteTranslator;->fromBytes([BJLcom/android/server/power/WakeLockLog$LogEntry;)Lcom/android/server/power/WakeLockLog$LogEntry;+]Lcom/android/server/power/WakeLockLog$LogEntry;Lcom/android/server/power/WakeLockLog$LogEntry;]Lcom/android/server/power/WakeLockLog$TagDatabase;Lcom/android/server/power/WakeLockLog$TagDatabase;
HSPLcom/android/server/power/WakeLockLog$EntryByteTranslator;->toBytes(Lcom/android/server/power/WakeLockLog$LogEntry;[BJ)I+]Lcom/android/server/power/WakeLockLog$TagDatabase;Lcom/android/server/power/WakeLockLog$TagDatabase;
HSPLcom/android/server/power/WakeLockLog$LogEntry;->set(JILcom/android/server/power/WakeLockLog$TagData;I)V
@@ -3083,90 +3185,86 @@ HPLcom/android/server/power/WakeLockLog$TheLog;->removeOldestItem()V+]Lcom/andro
HPLcom/android/server/power/WakeLockLog$TheLog;->removeTagIndex(I)V+]Lcom/android/server/power/WakeLockLog$EntryByteTranslator;Lcom/android/server/power/WakeLockLog$EntryByteTranslator;
HSPLcom/android/server/power/WakeLockLog$TheLog;->writeBytesAt(I[BI)V
HSPLcom/android/server/power/WakeLockLog;->handleWakeLockEventInternal(ILjava/lang/String;IIJ)V+]Lcom/android/server/power/WakeLockLog$TagDatabase;Lcom/android/server/power/WakeLockLog$TagDatabase;]Lcom/android/server/power/WakeLockLog$TheLog;Lcom/android/server/power/WakeLockLog$TheLog;
-HSPLcom/android/server/power/WakeLockLog;->onWakeLockEvent(ILjava/lang/String;IIJ)V+]Lcom/android/server/power/WakeLockLog$Injector;Lcom/android/server/power/WakeLockLog$Injector;
+HSPLcom/android/server/power/WakeLockLog;->onWakeLockEvent(ILjava/lang/String;IIJ)V
HSPLcom/android/server/power/WakeLockLog;->tagNameReducer(Ljava/lang/String;)Ljava/lang/String;
HSPLcom/android/server/power/WakefulnessSessionObserver$WakefulnessSessionPowerGroup;->onScreenPolicyUpdate(JI)V
HSPLcom/android/server/power/WakefulnessSessionObserver;->onScreenPolicyUpdate(JII)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/WakefulnessSessionObserver$WakefulnessSessionPowerGroup;Lcom/android/server/power/WakefulnessSessionObserver$WakefulnessSessionPowerGroup;
-HSPLcom/android/server/power/batterysaver/BatterySaverController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/power/batterysaver/BatterySaverController$MyHandler;Lcom/android/server/power/batterysaver/BatterySaverController$MyHandler;
HSPLcom/android/server/power/batterysaver/BatterySaverController;->getBatterySaverPolicy()Lcom/android/server/power/batterysaver/BatterySaverPolicy;
-HSPLcom/android/server/power/batterysaver/BatterySaverController;->updateBatterySavingStats()V+]Lcom/android/server/power/batterysaver/BatterySavingStats;Lcom/android/server/power/batterysaver/BatterySavingStats;
HSPLcom/android/server/power/batterysaver/BatterySaverPolicy$Policy;-><init>(FZZZZZZZZZZZZZZZII)V
HSPLcom/android/server/power/batterysaver/BatterySaverPolicy;->getBatterySaverPolicy(I)Landroid/os/PowerSaveState;
HSPLcom/android/server/power/batterysaver/BatterySaverStateMachine;->getBatterySaverPolicy()Lcom/android/server/power/batterysaver/BatterySaverPolicy;+]Lcom/android/server/power/batterysaver/BatterySaverController;Lcom/android/server/power/batterysaver/BatterySaverController;
+HSPLcom/android/server/power/feature/PowerManagerFlags$FlagState;->-$$Nest$misEnabled(Lcom/android/server/power/feature/PowerManagerFlags$FlagState;)Z
HSPLcom/android/server/power/feature/PowerManagerFlags$FlagState;->isEnabled()Z
HSPLcom/android/server/power/feature/PowerManagerFlags;->improveWakelockLatency()Z
+HSPLcom/android/server/power/feature/PowerManagerFlags;->isFrameworkWakelockInfoEnabled()Z
+HSPLcom/android/server/power/feature/PowerManagerFlags;->isPolicyReasonInDisplayPowerRequestEnabled()Z
+HSPLcom/android/server/power/hint/HintManagerService$AppHintSession;-><init>(Lcom/android/server/power/hint/HintManagerService;III[ILandroid/os/IBinder;JJLjava/lang/Integer;)V+]Landroid/os/IBinder;Landroid/os/BinderProxy;
HPLcom/android/server/power/hint/HintManagerService$AppHintSession;->close()V+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Lcom/android/server/power/hint/HintManagerService$AppHintSessionSnapshot;Lcom/android/server/power/hint/HintManagerService$AppHintSessionSnapshot;]Lcom/android/server/power/hint/HintManagerService$NativeWrapper;Lcom/android/server/power/hint/HintManagerService$NativeWrapper;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Set;Landroid/util/ArraySet;
-HSPLcom/android/server/power/hint/HintManagerService$AppHintSession;->isHintAllowed()Z
-HSPLcom/android/server/power/hint/HintManagerService$AppHintSession;->reportActualWorkDuration2([Landroid/hardware/power/WorkDuration;)V+]Lcom/android/server/power/hint/HintManagerService$NativeWrapper;Lcom/android/server/power/hint/HintManagerService$NativeWrapper;
-HSPLcom/android/server/power/hint/HintManagerService$AppHintSession;->sendHint(I)V+]Lcom/android/server/power/hint/HintManagerService$NativeWrapper;Lcom/android/server/power/hint/HintManagerService$NativeWrapper;
-HSPLcom/android/server/power/hint/HintManagerService$AppHintSession;->validateWorkDuration(Landroid/hardware/power/WorkDuration;)V
-HSPLcom/android/server/power/hint/HintManagerService$BinderService;->createHintSessionWithConfig(Landroid/os/IBinder;[IJILandroid/hardware/power/SessionConfig;)Landroid/os/IHintSession;+]Lcom/android/server/power/hint/HintManagerService$AppHintSessionSnapshot;Lcom/android/server/power/hint/HintManagerService$AppHintSessionSnapshot;]Lcom/android/server/power/hint/HintManagerService$NativeWrapper;Lcom/android/server/power/hint/HintManagerService$NativeWrapper;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Set;Landroid/util/ArraySet;
+HSPLcom/android/server/power/hint/HintManagerService$BinderService;->createHintSessionWithConfig(Landroid/os/IBinder;ILandroid/os/SessionCreationConfig;Landroid/hardware/power/SessionConfig;)Landroid/os/IHintManager$SessionCreationReturn;+]Lcom/android/server/power/hint/HintManagerService$AppHintSessionSnapshot;Lcom/android/server/power/hint/HintManagerService$AppHintSessionSnapshot;]Lcom/android/server/power/hint/HintManagerService$NativeWrapper;Lcom/android/server/power/hint/HintManagerService$NativeWrapper;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Set;Landroid/util/ArraySet;
+HSPLcom/android/server/power/hint/HintManagerService$MyUidObserver$$ExternalSyntheticLambda0;->run()V
HSPLcom/android/server/power/hint/HintManagerService$MyUidObserver;->lambda$onUidStateChanged$1(II)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HSPLcom/android/server/power/hint/HintManagerService$MyUidObserver;->onUidStateChanged(IIJI)V
HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$1;->run()V+]Lcom/android/server/power/stats/BatteryExternalStatsWorker;Lcom/android/server/power/stats/BatteryExternalStatsWorker;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->awaitControllerInfo(Landroid/os/SynchronousResultReceiver;)Landroid/os/Parcelable;+]Landroid/os/SynchronousResultReceiver;Landroid/os/SynchronousResultReceiver;
HPLcom/android/server/power/stats/BatteryExternalStatsWorker;->extractDeltaLocked(Landroid/os/connectivity/WifiActivityEnergyInfo;)Landroid/os/connectivity/WifiActivityEnergyInfo;
HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->getEnergyConsumersLocked(I)Ljava/util/concurrent/CompletableFuture;
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleDelayedSyncLocked(Ljava/util/concurrent/Future;Ljava/lang/Runnable;J)Ljava/util/concurrent/Future;+]Ljava/util/concurrent/Future;Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;]Ljava/util/concurrent/ScheduledExecutorService;Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService;
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleDelayedSyncLocked(ILjava/lang/Runnable;J)V
HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleSyncDueToProcessStateChange(IJ)V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleSyncLocked(Ljava/lang/String;I)Ljava/util/concurrent/Future;+]Ljava/util/concurrent/ScheduledExecutorService;Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService;
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleSyncLocked(Ljava/lang/String;I)V
HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->updateExternalStatsLocked(Ljava/lang/String;IZZI[IZ)V+]Landroid/net/wifi/WifiManager;Landroid/net/wifi/WifiManager;]Landroid/telephony/TelephonyManager;Landroid/telephony/TelephonyManager;]Lcom/android/server/power/stats/BatteryExternalStatsWorker$Injector;Lcom/android/server/power/stats/BatteryExternalStatsWorker$Injector;]Lcom/android/server/power/stats/BatteryExternalStatsWorker;Lcom/android/server/power/stats/BatteryExternalStatsWorker;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/EnergyConsumerSnapshot;Lcom/android/server/power/stats/EnergyConsumerSnapshot;]Lcom/android/server/power/stats/PowerStatsCollector;Lcom/android/server/power/stats/BluetoothPowerStatsCollector;,Lcom/android/server/power/stats/MobileRadioPowerStatsCollector;]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;
-HPLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda1;->onUidCpuTime(ILjava/lang/Object;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Counter;->writeSummaryFromParcelLocked(Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$2;->retrieveTopActivityTimes(Lcom/android/server/power/stats/ScreenPowerStatsCollector$ScreenUsageTimeRetriever$Callback;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/ScreenPowerStatsCollector$ScreenUsageTimeRetriever$Callback;Lcom/android/server/power/stats/ScreenPowerStatsCollector$$ExternalSyntheticLambda0;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$4;->retrieveUidWakelockDuration(Lcom/android/server/power/stats/WakelockPowerStatsCollector$WakelockDurationRetriever$Callback;)V+]Landroid/os/BatteryStats$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Landroid/os/BatteryStats$Uid$Wakelock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/WakelockPowerStatsCollector$WakelockDurationRetriever$Callback;Lcom/android/server/power/stats/WakelockPowerStatsCollector$$ExternalSyntheticLambda0;
HPLcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;->addCpuClusterSpeedDurationsMs(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;IIJ)V+]Lcom/android/server/power/stats/CpuPowerCalculator;Lcom/android/server/power/stats/CpuPowerCalculator;
HPLcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;->getOrCreateUidCpuClusterCharges(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;)[D
HSPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->startRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;
HSPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->stopRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;
HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->getCurrentDurationMsLocked(J)J+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->getMaxDurationMsLocked(J)J+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;
HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->getTotalDurationMsLocked(J)J+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;
HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->startRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->stopRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;
HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;->wakelockStateChanged(ILandroid/os/WorkSource$WorkChain;Ljava/lang/String;IZI)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->addCountLocked(JZ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;->uidProcessStateChanged(II)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->addCountLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->addCountLocked(JZ)V
HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->writeSummaryFromParcelLocked(Landroid/os/Parcel;)V
HPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->addCountLocked([JZ)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->writeSummaryToParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;->getMap()Landroid/util/ArrayMap;
HSPLcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;->startObject(Ljava/lang/String;J)Ljava/lang/Object;+]Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$1;,Lcom/android/server/power/stats/BatteryStatsImpl$Uid$2;,Lcom/android/server/power/stats/BatteryStatsImpl$Uid$3;
HSPLcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;->stopObject(Ljava/lang/String;J)Ljava/lang/Object;
HSPLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->update(JJIJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;-><init>(Lcom/android/internal/os/Clock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->computeCurrentCountLocked()I
HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->computeRunTimeLocked(JJ)J+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->refreshTimersLocked(JLjava/util/ArrayList;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;)J+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->startRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->stopRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->add(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;)V+]Ljava/util/Collection;Ljava/util/ArrayList;,Ljava/util/HashSet;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->computeRealtime(JI)J+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->computeUptime(JI)J+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->getRealtime(J)J
HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->getUptime(J)J
HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->init(JJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->isRunning()Z
HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->setRunning(ZJJ)Z+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;megamorphic_types]Ljava/util/Collection;Ljava/util/ArrayList;,Ljava/util/HashSet;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;,Ljava/util/HashMap$KeyIterator;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->writeSummaryToParcel(Landroid/os/Parcel;JJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
HSPLcom/android/server/power/stats/BatteryStatsImpl$Timer;-><init>(Lcom/android/internal/os/Clock;ILcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
HSPLcom/android/server/power/stats/BatteryStatsImpl$Timer;->getTimeSinceMarkLocked(J)J+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
HSPLcom/android/server/power/stats/BatteryStatsImpl$Timer;->getTotalTimeLocked(JI)J+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;megamorphic_types
HSPLcom/android/server/power/stats/BatteryStatsImpl$Timer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
HSPLcom/android/server/power/stats/BatteryStatsImpl$Timer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;megamorphic_types
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->getStartTimeToNowLocked(J)J
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->startLaunchedLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->startRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->stopLaunchedLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;->writeExcessivePowerToParcelLocked(Landroid/os/Parcel;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->stopRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;->getWakeTime(I)Landroid/os/BatteryStats$Timer;+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;->getWakeTime(I)Lcom/android/server/power/stats/BatteryStatsImpl$Timer;
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;IJJ)V
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->createAggregatedPartialWakelockTimerLocked()Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->ensureNetworkActivityLocked()V
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getCpuActiveTimeCounter()Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;+]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getMobileRadioActiveTimeCounter()Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;+]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getOrCreateEnergyConsumerStatsIfSupportedLocked()Lcom/android/internal/power/EnergyConsumerStats;
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getPackageStatsLocked(Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getPidStatsLocked(I)Landroid/os/BatteryStats$Uid$Pid;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getProcessStateTime(IJI)J+]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getProcessStatsLocked(Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getSensorTimerLocked(IZ)Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getServiceStatsLocked(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWakelockTimerLocked(Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;I)Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWifiBatchedScanTime(IJI)J
@@ -3179,148 +3277,165 @@ HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->updateOnBatteryScreenO
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->updateUidProcessStateLocked(IJJ)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/internal/power/EnergyConsumerStats;Lcom/android/internal/power/EnergyConsumerStats;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->writeJobCompletionsToParcelLocked(Landroid/os/Parcel;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->clearPendingRemovedUidsLocked()V+]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Ljava/util/Queue;Ljava/util/LinkedList;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->computeDelta(Landroid/net/NetworkStats;Landroid/net/NetworkStats;)Ljava/util/List;+]Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->getBatteryUptimeLocked(J)J+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->getRpmTimerLocked(Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;+]Ljava/util/HashMap;Ljava/util/HashMap;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->getServiceStatsLocked(ILjava/lang/String;Ljava/lang/String;JJ)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->getUidStatsLocked(IJJ)Lcom/android/server/power/stats/BatteryStatsImpl$Uid;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HPLcom/android/server/power/stats/BatteryStatsImpl;->lambda$readKernelUidCpuActiveTimesLocked$5(JJILjava/lang/Long;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/BatteryStatsImpl$UserInfoProvider;Lcom/android/server/am/BatteryStatsService$3;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
-HPLcom/android/server/power/stats/BatteryStatsImpl;->lambda$readKernelUidCpuFreqTimesLocked$4(JJZZZII[ILcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;I[J)V+]Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/internal/os/CpuScalingPolicies;]Lcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;Lcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;]Lcom/android/server/power/stats/BatteryStatsImpl$UserInfoProvider;Lcom/android/server/am/BatteryStatsService$3;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->mapUid(I)I+]Lcom/android/server/power/stats/PowerStatsUidResolver;Lcom/android/server/power/stats/PowerStatsUidResolver;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->markPartialTimersAsEligible()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteChangeWakelockFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V+]Landroid/os/WorkSource;Landroid/os/WorkSource;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteJobFinishLocked(Ljava/lang/String;IIJJ)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteJobStartLocked(Ljava/lang/String;IJJ)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteStartWakeFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V+]Landroid/os/WorkSource;Landroid/os/WorkSource;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteStartWakeLocked(IILandroid/os/WorkSource$WorkChain;Ljava/lang/String;Ljava/lang/String;IZJJ)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/PowerStatsUidResolver;Lcom/android/server/power/stats/PowerStatsUidResolver;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteStartWakeLocked(IILandroid/os/WorkSource$WorkChain;Ljava/lang/String;Ljava/lang/String;IZJJ)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/feature/PowerManagerFlags;Lcom/android/server/power/feature/PowerManagerFlags;]Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/PowerStatsUidResolver;Lcom/android/server/power/stats/PowerStatsUidResolver;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteStopWakeFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IJJ)V+]Landroid/os/WorkSource;Landroid/os/WorkSource;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteStopWakeLocked(IILandroid/os/WorkSource$WorkChain;Ljava/lang/String;Ljava/lang/String;IJJ)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteStopWakeLocked(IILandroid/os/WorkSource$WorkChain;Ljava/lang/String;Ljava/lang/String;IJJ)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/feature/PowerManagerFlags;Lcom/android/server/power/feature/PowerManagerFlags;]Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteUidProcessStateLocked(IIJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
HPLcom/android/server/power/stats/BatteryStatsImpl;->noteWakeupReasonLocked(Ljava/lang/String;JJ)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;]Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->readSummaryFromParcel(Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->recordPowerStats(Lcom/android/internal/os/PowerStats;)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->reportChangesToStatsLog(III)V+]Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->retrieveBluetoothScanTimesLocked(Lcom/android/server/power/stats/BluetoothPowerStatsCollector$BluetoothStatsRetriever$Callback;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BluetoothPowerStatsCollector$BluetoothStatsRetriever$Callback;Lcom/android/server/power/stats/BluetoothPowerStatsCollector$$ExternalSyntheticLambda0;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->retrieveWifiScanTimesLocked(Lcom/android/server/power/stats/WifiPowerStatsCollector$WifiStatsRetriever$Callback;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/WifiPowerStatsCollector$WifiStatsRetriever$Callback;Lcom/android/server/power/stats/WifiPowerStatsCollector$$ExternalSyntheticLambda1;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->setBatteryStateLocked(IIIIIIIIJJJJ)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$ExternalStatsSync;Lcom/android/server/power/stats/BatteryExternalStatsWorker;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateClusterSpeedTimes(Landroid/util/SparseLongArray;ZLcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/internal/os/CpuScalingPolicies;]Lcom/android/internal/os/KernelCpuSpeedReader;Lcom/android/internal/os/KernelCpuSpeedReader;]Lcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;Lcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;
-HPLcom/android/server/power/stats/BatteryStatsImpl;->updateCpuEnergyConsumerStatsLocked([JLcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;)V+]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/internal/power/EnergyConsumerStats;Lcom/android/internal/power/EnergyConsumerStats;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateCpuTimeLocked(ZZ[J)V+]Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/internal/os/CpuScalingPolicies;]Lcom/android/internal/os/KernelCpuSpeedReader;Lcom/android/internal/os/KernelCpuSpeedReader;]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidActiveTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidActiveTimeReader;]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidClusterTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidClusterTimeReader;]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidUserSysTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidUserSysTimeReader;]Lcom/android/internal/power/EnergyConsumerStats;Lcom/android/internal/power/EnergyConsumerStats;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateKernelWakelocksLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;]Lcom/android/server/power/stats/KernelWakelockReader;Lcom/android/server/power/stats/KernelWakelockReader;]Ljava/util/HashMap;Lcom/android/server/power/stats/KernelWakelockStats;,Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateRpmStatsLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateWifiBatteryStats(Landroid/os/connectivity/WifiActivityEnergyInfo;Ljava/util/List;JJJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/internal/os/PowerProfile;Lcom/android/internal/os/PowerProfile;]Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$NetworkStatsDelta;Lcom/android/server/power/stats/BatteryStatsImpl$NetworkStatsDelta;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->writeSummaryToParcel(Landroid/os/Parcel;Z)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/internal/os/MonotonicClock;Lcom/android/internal/os/MonotonicClock;]Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$Counter;Lcom/android/server/power/stats/BatteryStatsImpl$Counter;]Lcom/android/server/power/stats/BatteryStatsImpl$DisplayBatteryStats;Lcom/android/server/power/stats/BatteryStatsImpl$DisplayBatteryStats;]Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$1;,Lcom/android/server/power/stats/BatteryStatsImpl$Uid$2;,Lcom/android/server/power/stats/BatteryStatsImpl$Uid$3;]Lcom/android/server/power/stats/BatteryStatsImpl$RadioAccessTechnologyBatteryStats;Lcom/android/server/power/stats/BatteryStatsImpl$RadioAccessTechnologyBatteryStats;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;,Ljava/util/HashMap$EntryIterator;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;,Ljava/util/HashMap$Node;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;,Ljava/util/HashMap$EntrySet;
-HPLcom/android/server/power/stats/BatteryUsageStatsProvider;->getCurrentBatteryUsageStats(Lcom/android/server/power/stats/BatteryStatsImpl;Landroid/os/BatteryUsageStatsQuery;J)Landroid/os/BatteryUsageStats;+]Landroid/os/BatteryStats$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/PowerAttributor;Lcom/android/server/power/stats/processor/MultiStatePowerAttributor;]Lcom/android/server/power/stats/PowerCalculator;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;
-HPLcom/android/server/power/stats/BatteryUsageStatsProvider;->verify(Landroid/os/BatteryUsageStats;)V+]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/power/stats/BluetoothPowerStatsCollector;->collectBluetoothActivityInfo()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/BluetoothPowerStatsCollector$BluetoothStatsRetriever;Lcom/android/server/power/stats/BatteryStatsImpl$BluetoothStatsRetrieverImpl;]Lcom/android/server/power/stats/PowerStatsUidResolver;Lcom/android/server/power/stats/PowerStatsUidResolver;]Lcom/android/server/power/stats/format/BluetoothPowerStatsLayout;Lcom/android/server/power/stats/format/BluetoothPowerStatsLayout;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/BluetoothPowerStatsLayout;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/power/stats/BluetoothPowerStatsCollector;->collectBluetoothActivityInfo()Landroid/bluetooth/BluetoothActivityEnergyInfo;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/BluetoothPowerStatsCollector$BluetoothStatsRetriever;Lcom/android/server/power/stats/BatteryStatsImpl$BluetoothStatsRetrieverImpl;]Lcom/android/server/power/stats/PowerStatsUidResolver;Lcom/android/server/power/stats/PowerStatsUidResolver;]Lcom/android/server/power/stats/format/BluetoothPowerStatsLayout;Lcom/android/server/power/stats/format/BluetoothPowerStatsLayout;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/BluetoothPowerStatsLayout;]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/power/stats/CpuPowerCalculator;->calculatePerCpuFreqPowerMah(IIJ)D+]Lcom/android/server/power/stats/UsageBasedPowerEstimator;Lcom/android/server/power/stats/UsageBasedPowerEstimator;
HSPLcom/android/server/power/stats/CpuPowerStatsCollector;->collectStats()Lcom/android/internal/os/PowerStats;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/server/power/stats/CpuPowerStatsCollector$KernelCpuStatsReader;Lcom/android/server/power/stats/CpuPowerStatsCollector$KernelCpuStatsReader;]Lcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyHelper;Lcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyHelper;]Lcom/android/server/power/stats/format/CpuPowerStatsLayout;Lcom/android/server/power/stats/format/CpuPowerStatsLayout;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/CpuPowerStatsLayout;
HSPLcom/android/server/power/stats/CpuPowerStatsCollector;->processUidStats(I[J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/PowerStatsUidResolver;Lcom/android/server/power/stats/PowerStatsUidResolver;]Lcom/android/server/power/stats/format/CpuPowerStatsLayout;Lcom/android/server/power/stats/format/CpuPowerStatsLayout;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/CpuPowerStatsLayout;
+HSPLcom/android/server/power/stats/CustomEnergyConsumerPowerStatsCollector;->schedule()Z+]Lcom/android/server/power/stats/CustomEnergyConsumerPowerStatsCollector;Lcom/android/server/power/stats/CustomEnergyConsumerPowerStatsCollector;]Lcom/android/server/power/stats/PowerStatsCollector;Lcom/android/server/power/stats/CustomEnergyConsumerPowerStatsCollector;,Lcom/android/server/power/stats/EnergyConsumerPowerStatsCollector;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/EnergyConsumerSnapshot;->updateAndGetDelta([Landroid/hardware/power/stats/EnergyConsumerResult;I)Lcom/android/server/power/stats/EnergyConsumerSnapshot$EnergyConsumerDeltaData;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;
-HSPLcom/android/server/power/stats/KernelWakelockReader;->getWakelockStatsFromSystemSuspend(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;+]Landroid/system/suspend/internal/ISuspendControlServiceInternal;Landroid/system/suspend/internal/ISuspendControlServiceInternal$Stub$Proxy;]Lcom/android/server/power/stats/KernelWakelockReader;Lcom/android/server/power/stats/KernelWakelockReader;
-HSPLcom/android/server/power/stats/KernelWakelockReader;->readKernelWakelockStats(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;+]Lcom/android/server/power/stats/KernelWakelockReader;Lcom/android/server/power/stats/KernelWakelockReader;
HSPLcom/android/server/power/stats/KernelWakelockReader;->removeOldStats(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;+]Ljava/util/Collection;Ljava/util/HashMap$Values;]Ljava/util/HashMap;Lcom/android/server/power/stats/KernelWakelockStats;]Ljava/util/Iterator;Ljava/util/HashMap$ValueIterator;
HSPLcom/android/server/power/stats/KernelWakelockReader;->updateWakelockStats([Landroid/system/suspend/internal/WakeLockInfo;Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;+]Ljava/util/HashMap;Lcom/android/server/power/stats/KernelWakelockStats;
HSPLcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyHelper;->collectConsumedEnergy(Lcom/android/internal/os/PowerStats;Lcom/android/server/power/stats/format/PowerStatsLayout;)Z+]Lcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyRetriever;Lcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyRetrieverImpl;
HSPLcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyHelper;->populatePowerStats(Lcom/android/internal/os/PowerStats;Lcom/android/server/power/stats/format/PowerStatsLayout;[Landroid/hardware/power/stats/EnergyConsumerResult;II)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/power/stats/PowerStatsUidResolver;Lcom/android/server/power/stats/PowerStatsUidResolver;]Lcom/android/server/power/stats/format/PowerStatsLayout;megamorphic_types
+HSPLcom/android/server/power/stats/PowerStatsCollector;->deliverStats(Lcom/android/internal/os/PowerStats;)V+]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/function/Consumer;Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda3;,Lcom/android/server/power/stats/CustomEnergyConsumerPowerStatsCollector$$ExternalSyntheticLambda0;
+HSPLcom/android/server/power/stats/PowerStatsCollector;->schedule()Z+]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;
HSPLcom/android/server/power/stats/PowerStatsUidResolver;->mapUid(I)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HSPLcom/android/server/power/stats/ScreenPowerStatsCollector;->collectStats()Lcom/android/internal/os/PowerStats;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyHelper;Lcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyHelper;]Lcom/android/server/power/stats/ScreenPowerStatsCollector$ScreenUsageTimeRetriever;Lcom/android/server/power/stats/BatteryStatsImpl$2;]Lcom/android/server/power/stats/format/ScreenPowerStatsLayout;Lcom/android/server/power/stats/format/ScreenPowerStatsLayout;
HSPLcom/android/server/power/stats/UsageBasedPowerEstimator;->calculatePower(J)D
-HPLcom/android/server/power/stats/WakelockPowerCalculator;->calculate(Landroid/os/BatteryUsageStats$Builder;Landroid/os/BatteryStats;JJLandroid/os/BatteryUsageStatsQuery;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HPLcom/android/server/power/stats/WakelockPowerCalculator;->calculateApp(Lcom/android/server/power/stats/WakelockPowerCalculator$PowerAndDuration;Landroid/os/BatteryStats$Uid;JI)V+]Landroid/os/BatteryStats$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Landroid/os/BatteryStats$Uid$Wakelock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;]Landroid/os/BatteryStats$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/UsageBasedPowerEstimator;Lcom/android/server/power/stats/UsageBasedPowerEstimator;
HSPLcom/android/server/power/stats/format/BluetoothPowerStatsLayout;->getUidRxBytes([J)J
+HSPLcom/android/server/power/stats/format/BluetoothPowerStatsLayout;->getUidTxBytes([J)J
HSPLcom/android/server/power/stats/format/CpuPowerStatsLayout;->getCpuPowerBracketCount()I
HSPLcom/android/server/power/stats/format/CpuPowerStatsLayout;->getTimeByScalingStep([JI)J
-HSPLcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;->getUidRxPackets([J)J
-HSPLcom/android/server/power/stats/format/PowerStatsLayout;-><init>()V
+HSPLcom/android/server/power/stats/format/CpuPowerStatsLayout;->setUidTimeByPowerBracket([JIJ)V
HSPLcom/android/server/power/stats/format/PowerStatsLayout;-><init>(Lcom/android/internal/os/PowerStats$Descriptor;)V
+HSPLcom/android/server/power/stats/format/PowerStatsLayout;->appendFormat(Ljava/lang/StringBuilder;IILjava/lang/String;I)V
HSPLcom/android/server/power/stats/format/PowerStatsLayout;->getUidConsumedEnergy([JI)J
+HSPLcom/android/server/power/stats/format/PowerStatsLayout;->getUidPowerEstimate([J)D
HSPLcom/android/server/power/stats/format/PowerStatsLayout;->getUidUsageDuration([J)J
HSPLcom/android/server/power/stats/format/PowerStatsLayout;->setUidPowerEstimate([JD)V
HSPLcom/android/server/power/stats/format/PowerStatsLayout;->toExtras(Landroid/os/PersistableBundle;)V
HSPLcom/android/server/power/stats/format/ScreenPowerStatsLayout;-><init>(Lcom/android/internal/os/PowerStats$Descriptor;)V
HSPLcom/android/server/power/stats/format/WifiPowerStatsLayout;->getUidRxPackets([J)J
HSPLcom/android/server/power/stats/format/WifiPowerStatsLayout;->getUidTxPackets([J)J
+HSPLcom/android/server/power/stats/processor/AggregatedPowerStats;->addClockUpdate(JJ)V+]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/AggregatedPowerStats;->addPowerStats(Lcom/android/internal/os/PowerStats;J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
-HPLcom/android/server/power/stats/processor/AggregatedPowerStats;->getPowerComponentStats()Ljava/util/List;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/power/stats/processor/AggregatedPowerStats;->getPowerComponentStats()Ljava/util/List;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/power/stats/processor/AggregatedPowerStats;->isCompatible(Lcom/android/internal/os/PowerStats;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
HSPLcom/android/server/power/stats/processor/AggregatedPowerStats;->noteStateChange(Landroid/os/BatteryStats$HistoryItem;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
-HSPLcom/android/server/power/stats/processor/AggregatedPowerStats;->reset()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/AggregatedPowerStats;->setUidState(IIIJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
HSPLcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;->getDeviceStateConfig()[Lcom/android/server/power/stats/processor/MultiStateStats$States;
HSPLcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;->getUidStateConfig()[Lcom/android/server/power/stats/processor/MultiStateStats$States;
HSPLcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;->isTracked([II)Z
+HSPLcom/android/server/power/stats/processor/AmbientDisplayPowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Lcom/android/internal/os/PowerStats$Descriptor;Lcom/android/internal/os/PowerStats$Descriptor;]Lcom/android/server/power/stats/processor/AggregatedPowerStats;Lcom/android/server/power/stats/processor/AggregatedPowerStats;]Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
+HSPLcom/android/server/power/stats/processor/AmbientDisplayPowerStatsProcessor;->lambda$finish$0(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;[I)V+]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/AmbientDisplayPowerStatsLayout;]Lcom/android/server/power/stats/format/ScreenPowerStatsLayout;Lcom/android/server/power/stats/format/ScreenPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
+HSPLcom/android/server/power/stats/processor/AudioPowerStatsProcessor;->getBinaryState(Landroid/os/BatteryStats$HistoryItem;)I
+HSPLcom/android/server/power/stats/processor/BasePowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/power/stats/format/BasePowerStatsLayout;Lcom/android/server/power/stats/format/BasePowerStatsLayout;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/BasePowerStatsLayout;]Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/power/stats/processor/BasePowerStatsProcessor;->setUidState(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;IIIJ)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;
HSPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->combineDevicePowerEstimates(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;)V+]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/BinaryStatePowerStatsLayout;,Lcom/android/server/power/stats/format/GnssPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->computeDevicePowerEstimates(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;Z)V+]Lcom/android/server/power/stats/UsageBasedPowerEstimator;Lcom/android/server/power/stats/UsageBasedPowerEstimator;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/BinaryStatePowerStatsLayout;,Lcom/android/server/power/stats/format/GnssPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->computeUidActivityTotals(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Ljava/util/List;)V+]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/BinaryStatePowerStatsLayout;,Lcom/android/server/power/stats/format/GnssPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->computeUidPowerEstimates(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Ljava/util/List;)V+]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/BinaryStatePowerStatsLayout;,Lcom/android/server/power/stats/format/GnssPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Lcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;megamorphic_types]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
HSPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->flushPowerStats(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
-HSPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->noteStateChange(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Landroid/os/BatteryStats$HistoryItem;)V+]Lcom/android/server/power/stats/PowerStatsUidResolver;Lcom/android/server/power/stats/PowerStatsUidResolver;]Lcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;megamorphic_types
+HSPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->noteStateChange(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Landroid/os/BatteryStats$HistoryItem;)V+]Lcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;megamorphic_types
HSPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->recordUsageDuration(Lcom/android/internal/os/PowerStats;IJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/BinaryStatePowerStatsLayout;,Lcom/android/server/power/stats/format/GnssPowerStatsLayout;
HSPLcom/android/server/power/stats/processor/BluetoothPowerStatsProcessor;->combineDeviceStateEstimates()V+]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/BluetoothPowerStatsProcessor;->computeDevicePowerEstimates(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;[ILcom/android/server/power/stats/processor/BluetoothPowerStatsProcessor$Intermediates;)V+]Lcom/android/server/power/stats/UsageBasedPowerEstimator;Lcom/android/server/power/stats/UsageBasedPowerEstimator;]Lcom/android/server/power/stats/format/BluetoothPowerStatsLayout;Lcom/android/server/power/stats/format/BluetoothPowerStatsLayout;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/BluetoothPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
HSPLcom/android/server/power/stats/processor/BluetoothPowerStatsProcessor;->computeUidActivityTotals(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;ILcom/android/server/power/stats/processor/PowerStatsProcessor$UidStateEstimate;)V+]Lcom/android/server/power/stats/format/BluetoothPowerStatsLayout;Lcom/android/server/power/stats/format/BluetoothPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/BluetoothPowerStatsProcessor;->computeUidPowerEstimates(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;ILcom/android/server/power/stats/processor/PowerStatsProcessor$UidStateEstimate;)V+]Lcom/android/server/power/stats/format/BluetoothPowerStatsLayout;Lcom/android/server/power/stats/format/BluetoothPowerStatsLayout;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/BluetoothPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/BluetoothPowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/BluetoothPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/power/stats/processor/CameraPowerStatsProcessor;->getBinaryState(Landroid/os/BatteryStats$HistoryItem;)I
HSPLcom/android/server/power/stats/processor/CpuPowerStatsProcessor;->adjustEstimatesUsingEnergyConsumers(Lcom/android/server/power/stats/processor/CpuPowerStatsProcessor$Intermediates;Lcom/android/server/power/stats/processor/CpuPowerStatsProcessor$DeviceStatsIntermediates;)V+]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/CpuPowerStatsLayout;
HSPLcom/android/server/power/stats/processor/CpuPowerStatsProcessor;->combineDeviceStateEstimates()V+]Lcom/android/server/power/stats/format/CpuPowerStatsLayout;Lcom/android/server/power/stats/format/CpuPowerStatsLayout;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/CpuPowerStatsProcessor;->computeTotals(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/CpuPowerStatsProcessor$Intermediates;)V+]Lcom/android/server/power/stats/format/CpuPowerStatsLayout;Lcom/android/server/power/stats/format/CpuPowerStatsLayout;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/CpuPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/power/stats/processor/CpuPowerStatsProcessor;->estimatePowerByDeviceState(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/CpuPowerStatsProcessor$Intermediates;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;)V+]Lcom/android/server/power/stats/format/CpuPowerStatsLayout;Lcom/android/server/power/stats/format/CpuPowerStatsLayout;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/CpuPowerStatsLayout;,Lcom/android/server/power/stats/format/WakelockPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/CpuPowerStatsProcessor;->estimatePowerByScalingStep(Lcom/android/server/power/stats/processor/CpuPowerStatsProcessor$Intermediates;)V
+HSPLcom/android/server/power/stats/processor/CpuPowerStatsProcessor;->estimateUidPowerConsumption(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;ILcom/android/server/power/stats/processor/PowerStatsProcessor$UidStateEstimate;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;)V+]Lcom/android/server/power/stats/format/CpuPowerStatsLayout;Lcom/android/server/power/stats/format/CpuPowerStatsLayout;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/CpuPowerStatsLayout;,Lcom/android/server/power/stats/format/WakelockPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/CpuPowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Lcom/android/server/power/stats/format/CpuPowerStatsLayout;Lcom/android/server/power/stats/format/CpuPowerStatsLayout;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/CpuPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/CustomEnergyConsumerPowerStatsProcessor;->computeDevicePowerEstimates(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;)V+]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/EnergyConsumerPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/CustomEnergyConsumerPowerStatsProcessor;->computeUidPowerEstimates(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Ljava/util/List;)V+]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/EnergyConsumerPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/CustomEnergyConsumerPowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
+HSPLcom/android/server/power/stats/processor/FlashlightPowerStatsProcessor;->getBinaryState(Landroid/os/BatteryStats$HistoryItem;)I
HSPLcom/android/server/power/stats/processor/GnssPowerStatsProcessor;->computeDevicePowerEstimates(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;Z)V+]Lcom/android/server/power/stats/UsageBasedPowerEstimator;Lcom/android/server/power/stats/UsageBasedPowerEstimator;]Lcom/android/server/power/stats/format/GnssPowerStatsLayout;Lcom/android/server/power/stats/format/GnssPowerStatsLayout;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/GnssPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/power/stats/processor/GnssPowerStatsProcessor;->getBinaryState(Landroid/os/BatteryStats$HistoryItem;)I
HSPLcom/android/server/power/stats/processor/GnssPowerStatsProcessor;->noteStateChange(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Landroid/os/BatteryStats$HistoryItem;)V
HSPLcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor;->combineDeviceStateEstimates()V+]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor;->computeDevicePowerEstimates(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;[ILcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor$Intermediates;)V+]Lcom/android/server/power/stats/UsageBasedPowerEstimator;Lcom/android/server/power/stats/UsageBasedPowerEstimator;]Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
HSPLcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor;->computeUidPowerEstimates(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;ILcom/android/server/power/stats/processor/PowerStatsProcessor$UidStateEstimate;)V+]Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor;->computeUidRxTxTotals(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;ILcom/android/server/power/stats/processor/PowerStatsProcessor$UidStateEstimate;)V+]Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;]Ljava/util/List;Ljava/util/ArrayList;
-HPLcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor;->lambda$computeDevicePowerEstimates$0(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;[ILcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor$Intermediates;I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/UsageBasedPowerEstimator;Lcom/android/server/power/stats/UsageBasedPowerEstimator;]Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
-HSPLcom/android/server/power/stats/processor/MultiStateStats$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor;->lambda$computeDevicePowerEstimates$0(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;[ILcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor$Intermediates;I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/UsageBasedPowerEstimator;Lcom/android/server/power/stats/UsageBasedPowerEstimator;]Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
+HPLcom/android/server/power/stats/processor/MultiStateStats$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
HSPLcom/android/server/power/stats/processor/MultiStateStats$Factory;-><init>(I[Lcom/android/server/power/stats/processor/MultiStateStats$States;)V
HSPLcom/android/server/power/stats/processor/MultiStateStats$Factory;->create()Lcom/android/server/power/stats/processor/MultiStateStats;
HSPLcom/android/server/power/stats/processor/MultiStateStats$Factory;->getSerialState([I)I+]Lcom/android/server/power/stats/processor/MultiStateStats$Factory;Lcom/android/server/power/stats/processor/MultiStateStats$Factory;
HSPLcom/android/server/power/stats/processor/MultiStateStats$Factory;->isValidCompositeState(I)Z
HSPLcom/android/server/power/stats/processor/MultiStateStats$Factory;->setStateInComposite(III)I
-HSPLcom/android/server/power/stats/processor/MultiStateStats$States;-><init>(Ljava/lang/String;Z[Ljava/lang/String;)V
HSPLcom/android/server/power/stats/processor/MultiStateStats$States;->forEachTrackedStateCombination(Ljava/util/function/Consumer;[Lcom/android/server/power/stats/processor/MultiStateStats$States;[II)V+]Ljava/util/function/Consumer;megamorphic_types
-HSPLcom/android/server/power/stats/processor/MultiStateStats$States;->getLabels()[Ljava/lang/String;
+HSPLcom/android/server/power/stats/processor/MultiStateStats$States;->getName()Ljava/lang/String;
HSPLcom/android/server/power/stats/processor/MultiStateStats$States;->isTracked()Z
HSPLcom/android/server/power/stats/processor/MultiStateStats;-><init>(Lcom/android/server/power/stats/processor/MultiStateStats$Factory;I)V
HSPLcom/android/server/power/stats/processor/MultiStateStats;->getStats([J[I)V+]Lcom/android/server/power/stats/processor/MultiStateStats$Factory;Lcom/android/server/power/stats/processor/MultiStateStats$Factory;
HSPLcom/android/server/power/stats/processor/MultiStateStats;->increment([JJ)V
HSPLcom/android/server/power/stats/processor/MultiStateStats;->setState(IIJ)V+]Lcom/android/server/power/stats/processor/MultiStateStats$Factory;Lcom/android/server/power/stats/processor/MultiStateStats$Factory;
HSPLcom/android/server/power/stats/processor/MultiStateStats;->setStats([I[J)V+]Lcom/android/server/power/stats/processor/MultiStateStats$Factory;Lcom/android/server/power/stats/processor/MultiStateStats$Factory;
-HSPLcom/android/server/power/stats/processor/MultiStateStats;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;)V
-HSPLcom/android/server/power/stats/processor/MultiStateStats;->writeXmlForStates(Lcom/android/modules/utils/TypedXmlSerializer;[I[J)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/power/stats/processor/MultiStateStats$Factory;Lcom/android/server/power/stats/processor/MultiStateStats$Factory;
+HPLcom/android/server/power/stats/processor/MultiStateStats;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;)V
+HPLcom/android/server/power/stats/processor/MultiStateStats;->writeXmlForStates(Lcom/android/modules/utils/TypedXmlSerializer;[I[J)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/power/stats/processor/MultiStateStats$Factory;Lcom/android/server/power/stats/processor/MultiStateStats$Factory;
+HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;-><init>(Lcom/android/server/power/stats/processor/AggregatedPowerStats;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;)V+]Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;
+HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->addPowerStats(Lcom/android/internal/os/PowerStats;J)V+]Lcom/android/server/power/stats/processor/PowerStatsProcessor;megamorphic_types
HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->addProcessedPowerStats(Lcom/android/internal/os/PowerStats;J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats;
HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->collectUids(Ljava/util/Collection;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Collection;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->createDeviceStats(J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/MultiStateStats$Factory;Lcom/android/server/power/stats/processor/MultiStateStats$Factory;]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats;
HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->createUidStats(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats$UidStats;J)V+]Lcom/android/server/power/stats/processor/MultiStateStats$Factory;Lcom/android/server/power/stats/processor/MultiStateStats$Factory;]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats;
+HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->finish(J)V+]Lcom/android/server/power/stats/processor/PowerStatsProcessor;megamorphic_types
HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->getDeviceStats([J[I)Z+]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats;
HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->getUidStats(I)Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats$UidStats;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/MultiStateStats$States;Lcom/android/server/power/stats/processor/MultiStateStats$States;
HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->getUidStats([JI[I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats;
HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->noteStateChange(Landroid/os/BatteryStats$HistoryItem;)V+]Lcom/android/server/power/stats/processor/PowerStatsProcessor;megamorphic_types
HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->reset()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->setDeviceStats([I[J)V+]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats;
+HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->setProcessedUidState(IIIJ)V+]Lcom/android/server/power/stats/processor/MultiStateStats$States;Lcom/android/server/power/stats/processor/MultiStateStats$States;]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats;
HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->setState(IIJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/MultiStateStats$States;Lcom/android/server/power/stats/processor/MultiStateStats$States;]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats;
-HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->setUidState(IIIJ)V+]Lcom/android/server/power/stats/processor/MultiStateStats$States;Lcom/android/server/power/stats/processor/MultiStateStats$States;]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats;
+HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->setUidState(IIIJ)V+]Lcom/android/server/power/stats/processor/PowerStatsProcessor;megamorphic_types
HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->setUidStats(I[I[J)V+]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats;
-HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/PowerStats$Descriptor;Lcom/android/internal/os/PowerStats$Descriptor;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats;
-HSPLcom/android/server/power/stats/processor/PowerStatsAggregator;->aggregatePowerStats(Lcom/android/internal/os/BatteryStatsHistory;JJLjava/util/function/Consumer;)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/internal/os/BatteryStatsHistoryIterator;Lcom/android/internal/os/BatteryStatsHistoryIterator;]Lcom/android/server/power/stats/processor/AggregatedPowerStats;Lcom/android/server/power/stats/processor/AggregatedPowerStats;]Ljava/util/function/Consumer;Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda15;,Lcom/android/server/power/stats/processor/PowerStatsExporter$$ExternalSyntheticLambda0;
-HPLcom/android/server/power/stats/processor/PowerStatsExporter$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/power/stats/processor/PowerStatsExporter$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/power/stats/processor/PowerStatsExporter;->areMatchingStates([III)Z
-HPLcom/android/server/power/stats/processor/PowerStatsExporter;->populateBatteryConsumers(Landroid/os/BatteryUsageStats$Builder;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/format/PowerStatsLayout;)V+]Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;]Lcom/android/server/power/stats/processor/MultiStateStats$States;Lcom/android/server/power/stats/processor/MultiStateStats$States;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
-HPLcom/android/server/power/stats/processor/PowerStatsExporter;->populateBatteryUsageStatsBuilder(Landroid/os/BatteryUsageStats$Builder;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;)V+]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
-HPLcom/android/server/power/stats/processor/PowerStatsExporter;->populateUidBatteryConsumers(Landroid/os/BatteryUsageStats$Builder;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/format/PowerStatsLayout;Ljava/util/List;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;[JZII)V+]Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/PowerStats$Descriptor;Lcom/android/internal/os/PowerStats$Descriptor;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats;
+HSPLcom/android/server/power/stats/processor/PowerStatsAggregator;->aggregatePowerStats(Lcom/android/internal/os/BatteryStatsHistory;JJLjava/util/function/Consumer;)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/internal/os/BatteryStatsHistoryIterator;Lcom/android/internal/os/BatteryStatsHistoryIterator;]Lcom/android/server/power/stats/processor/AggregatedPowerStats;Lcom/android/server/power/stats/processor/AggregatedPowerStats;]Ljava/util/function/Consumer;Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda17;,Lcom/android/server/power/stats/processor/PowerStatsExporter$$ExternalSyntheticLambda0;
+HSPLcom/android/server/power/stats/processor/PowerStatsExporter$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/stats/processor/PowerStatsExporter;IILcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;[J[DLcom/android/server/power/stats/format/PowerStatsLayout;[JZLcom/android/server/power/stats/processor/PowerStatsExporter$BatteryLevelInfo;)V
+HSPLcom/android/server/power/stats/processor/PowerStatsExporter$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/power/stats/processor/PowerStatsExporter$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/power/stats/processor/PowerStatsExporter;->$r8$lambda$q_0fFBL0SpJgc9zuomLvKMCMfxk(IILcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;[JILcom/android/server/power/stats/format/PowerStatsLayout;Z[D[J[I)V+]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/PowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
+HSPLcom/android/server/power/stats/processor/PowerStatsExporter;->areMatchingStates([III)Z
+HSPLcom/android/server/power/stats/processor/PowerStatsExporter;->gatherBatteryLevelInfo(Lcom/android/server/power/stats/processor/PowerStatsExporter$BatteryLevelInfo;[J)V+]Lcom/android/server/power/stats/format/BasePowerStatsLayout;Lcom/android/server/power/stats/format/BasePowerStatsLayout;
+HSPLcom/android/server/power/stats/processor/PowerStatsExporter;->lambda$populateAggregatedBatteryConsumer$1(IILcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;[J[DLcom/android/server/power/stats/format/PowerStatsLayout;[JZLcom/android/server/power/stats/processor/PowerStatsExporter$BatteryLevelInfo;[I)V+]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/PowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
+HSPLcom/android/server/power/stats/processor/PowerStatsExporter;->populateAggregatedBatteryConsumer(Landroid/os/BatteryUsageStats$Builder;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/format/PowerStatsLayout;[JLcom/android/server/power/stats/processor/PowerStatsExporter$BatteryLevelInfo;II)V+]Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
+HSPLcom/android/server/power/stats/processor/PowerStatsExporter;->populateBatteryConsumers(Landroid/os/BatteryUsageStats$Builder;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/format/PowerStatsLayout;)V+]Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;]Lcom/android/server/power/stats/processor/MultiStateStats$States;Lcom/android/server/power/stats/processor/MultiStateStats$States;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
+HSPLcom/android/server/power/stats/processor/PowerStatsExporter;->populateBatteryLevelInfo(Landroid/os/BatteryUsageStats$Builder;Lcom/android/server/power/stats/processor/PowerStatsExporter$BatteryLevelInfo;)V
+HSPLcom/android/server/power/stats/processor/PowerStatsExporter;->populateBatteryUsageStatsBuilder(Landroid/os/BatteryUsageStats$Builder;Lcom/android/server/power/stats/processor/AggregatedPowerStats;)V+]Lcom/android/server/power/stats/processor/AggregatedPowerStats;Lcom/android/server/power/stats/processor/AggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/power/stats/processor/PowerStatsExporter;->populateBatteryUsageStatsBuilder(Landroid/os/BatteryUsageStats$Builder;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;)V+]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
+HSPLcom/android/server/power/stats/processor/PowerStatsExporter;->populateUidBatteryConsumers(Landroid/os/BatteryUsageStats$Builder;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/format/PowerStatsLayout;Ljava/util/List;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;[JZII)V+]Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;->addUidStateEstimations()V+]Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;]Lcom/android/server/power/stats/processor/MultiStateStats$States;Lcom/android/server/power/stats/processor/MultiStateStats$States;]Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;->getCombinedDeviceStateEstimate([Lcom/android/server/power/stats/processor/MultiStateStats$States;[I)Lcom/android/server/power/stats/processor/PowerStatsProcessor$CombinedDeviceStateEstimate;+]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;->getUidStateEstimate(Lcom/android/server/power/stats/processor/PowerStatsProcessor$CombinedDeviceStateEstimate;)Lcom/android/server/power/stats/processor/PowerStatsProcessor$UidStateEstimate;+]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;->resetIntermediates()V+]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/PowerStatsProcessor;->concatLabels([Lcom/android/server/power/stats/processor/MultiStateStats$States;[I)Ljava/lang/String;+]Lcom/android/server/power/stats/processor/MultiStateStats$States;Lcom/android/server/power/stats/processor/MultiStateStats$States;
HSPLcom/android/server/power/stats/processor/PowerStatsProcessor;->noteStateChange(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Landroid/os/BatteryStats$HistoryItem;)V
+HSPLcom/android/server/power/stats/processor/PowerStatsProcessor;->setUidState(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;IIIJ)V+]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
HSPLcom/android/server/power/stats/processor/ScreenPowerStatsProcessor;->combineDeviceStateEstimates()V+]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/power/stats/processor/ScreenPowerStatsProcessor;->computeDevicePowerEstimates(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;)V+]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/ScreenPowerStatsLayout;]Lcom/android/server/power/stats/format/ScreenPowerStatsLayout;Lcom/android/server/power/stats/format/ScreenPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/power/stats/processor/ScreenPowerStatsProcessor;->computeDevicePowerEstimates(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;)V+]Lcom/android/server/power/stats/UsageBasedPowerEstimator;Lcom/android/server/power/stats/UsageBasedPowerEstimator;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/ScreenPowerStatsLayout;]Lcom/android/server/power/stats/format/ScreenPowerStatsLayout;Lcom/android/server/power/stats/format/ScreenPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/ScreenPowerStatsProcessor;->computeUidPowerEstimates(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Ljava/util/List;)V+]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/ScreenPowerStatsLayout;]Lcom/android/server/power/stats/format/ScreenPowerStatsLayout;Lcom/android/server/power/stats/format/ScreenPowerStatsLayout;]Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/ScreenPowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;
HSPLcom/android/server/power/stats/processor/ScreenPowerStatsProcessor;->unpackPowerStatsDescriptor(Lcom/android/internal/os/PowerStats$Descriptor;)Z+]Lcom/android/internal/os/PowerStats$Descriptor;Lcom/android/internal/os/PowerStats$Descriptor;
@@ -3330,6 +3445,8 @@ HSPLcom/android/server/power/stats/processor/SensorPowerStatsProcessor;->finish(
HSPLcom/android/server/power/stats/processor/SensorPowerStatsProcessor;->flushPowerStats(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
HSPLcom/android/server/power/stats/processor/SensorPowerStatsProcessor;->noteStateChange(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Landroid/os/BatteryStats$HistoryItem;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/SensorPowerStatsProcessor;Lcom/android/server/power/stats/processor/SensorPowerStatsProcessor;
HSPLcom/android/server/power/stats/processor/SensorPowerStatsProcessor;->recordUsageDuration(Lcom/android/server/power/stats/processor/SensorPowerStatsProcessor$SensorState;J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/format/SensorPowerStatsLayout;Lcom/android/server/power/stats/format/SensorPowerStatsLayout;
+HSPLcom/android/server/power/stats/processor/VideoPowerStatsProcessor;->getBinaryState(Landroid/os/BatteryStats$HistoryItem;)I
+HSPLcom/android/server/power/stats/processor/WakelockPowerStatsProcessor;->addPowerStats(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/internal/os/PowerStats;J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/UsageBasedPowerEstimator;Lcom/android/server/power/stats/UsageBasedPowerEstimator;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/WakelockPowerStatsLayout;
HSPLcom/android/server/power/stats/processor/WifiPowerStatsProcessor;->combineDeviceStateEstimates()V+]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/processor/WifiPowerStatsProcessor;->computeDevicePowerEstimates(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;[ILcom/android/server/power/stats/processor/WifiPowerStatsProcessor$Intermediates;)V+]Lcom/android/server/power/stats/UsageBasedPowerEstimator;Lcom/android/server/power/stats/UsageBasedPowerEstimator;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/WifiPowerStatsLayout;]Lcom/android/server/power/stats/format/WifiPowerStatsLayout;Lcom/android/server/power/stats/format/WifiPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;
HSPLcom/android/server/power/stats/processor/WifiPowerStatsProcessor;->computeUidActivityTotals(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;ILcom/android/server/power/stats/processor/PowerStatsProcessor$UidStateEstimate;)V+]Lcom/android/server/power/stats/format/WifiPowerStatsLayout;Lcom/android/server/power/stats/format/WifiPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
@@ -3337,50 +3454,49 @@ HSPLcom/android/server/power/stats/processor/WifiPowerStatsProcessor;->computeUi
HSPLcom/android/server/power/stats/processor/WifiPowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/WifiPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/power/stats/wakeups/CpuWakeupStats$Wakeup;->parseWakeup(Ljava/lang/String;JJLcom/android/server/power/stats/wakeups/IrqDeviceMap;)Lcom/android/server/power/stats/wakeups/CpuWakeupStats$Wakeup;+]Lcom/android/server/power/stats/wakeups/IrqDeviceMap;Lcom/android/server/power/stats/wakeups/IrqDeviceMap;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;->recordActivity(IJLandroid/util/SparseIntArray;)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Ljava/util/function/LongSupplier;Lcom/android/server/power/stats/wakeups/CpuWakeupStats$$ExternalSyntheticLambda0;
-HPLcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;->removeBetween(IJJ)Landroid/util/SparseIntArray;+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
-HPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->attemptAttributionFor(Lcom/android/server/power/stats/wakeups/CpuWakeupStats$Wakeup;)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->attemptAttributionWith(IJLandroid/util/SparseIntArray;)Z+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->logWakeupAttribution(Lcom/android/server/power/stats/wakeups/CpuWakeupStats$Wakeup;)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->noteUidProcessState(II)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->noteWakeupTimeAndReason(JJLjava/lang/String;)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->noteWakingActivity(IJ[I)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
-HPLcom/android/server/powerstats/BatteryTrigger$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;
-HSPLcom/android/server/powerstats/PowerStatsHALWrapper$VintfHalCache;->get()Ljava/lang/Object;+]Lcom/android/server/powerstats/PowerStatsHALWrapper$VintfHalCache;Lcom/android/server/powerstats/PowerStatsHALWrapper$VintfHalCache;
+HSPLcom/android/server/powerstats/PowerStatsService$LocalService;->getEnergyConsumedAsync([I)Ljava/util/concurrent/CompletableFuture;
HSPLcom/android/server/powerstats/PowerStatsService;->getHandler()Landroid/os/Handler;
-HPLcom/android/server/powerstats/StatsPullAtomCallbackImpl;->pullOnDevicePowerMeasurement(ILjava/util/List;)I+]Landroid/power/PowerStatsInternal;Lcom/android/server/powerstats/PowerStatsService$LocalService;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;
+HSPLcom/android/server/powerstats/StatsPullAtomCallbackImpl;->pullOnDevicePowerMeasurement(ILjava/util/List;)I+]Landroid/power/PowerStatsInternal;Lcom/android/server/powerstats/PowerStatsService$LocalService;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;
+HSPLcom/android/server/selinux/RateLimiter;->tryAcquire()Z+]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;
HPLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->addPath(Ljava/util/List;)V+]Lcom/android/server/slice/DirtyTracker;Lcom/android/server/slice/SliceClientPermissions;]Ljava/util/List;Landroid/net/Uri$PathSegments;
HPLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->isPathPrefixMatch([Ljava/lang/String;[Ljava/lang/String;)Z
-HPLcom/android/server/slice/SliceManagerService;->getProviderPkg(Landroid/net/Uri;I)Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;
HPLcom/android/server/slice/SlicePermissionManager$PkgUser;->equals(Ljava/lang/Object;)Z
-HPLcom/android/server/slice/SlicePermissionManager$PkgUser;->hashCode()I
HPLcom/android/server/slice/SlicePermissionManager;->grantSliceAccess(Ljava/lang/String;ILjava/lang/String;ILandroid/net/Uri;)V+]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;]Lcom/android/server/slice/SliceClientPermissions;Lcom/android/server/slice/SliceClientPermissions;]Lcom/android/server/slice/SliceProviderPermissions$SliceAuthority;Lcom/android/server/slice/SliceProviderPermissions$SliceAuthority;]Lcom/android/server/slice/SliceProviderPermissions;Lcom/android/server/slice/SliceProviderPermissions;
HSPLcom/android/server/smartspace/SmartspaceManagerService$SmartspaceManagerStub;->runForUserLocked(Ljava/lang/String;Landroid/app/smartspace/SmartspaceSessionId;Ljava/util/function/Consumer;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/infra/ServiceNameResolver;Lcom/android/server/infra/FrameworkResourcesServiceNameResolver;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/util/function/Consumer;megamorphic_types
-HSPLcom/android/server/stats/pull/AggregatedMobileDataStatsPuller;->noteUidProcessState(IIJJ)V
-HPLcom/android/server/stats/pull/ProcfsMemoryUtil;->readMemorySnapshotFromProcfs(I)Lcom/android/server/stats/pull/ProcfsMemoryUtil$MemorySnapshot;
+HPLcom/android/server/soundtrigger/SoundTriggerService$MyAppOpsListener;->onOpChanged(Ljava/lang/String;Ljava/lang/String;)V+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Ljava/util/function/Consumer;Lcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService$SessionImpl$$ExternalSyntheticLambda2;
+HSPLcom/android/server/stats/pull/AggregatedMobileDataStatsPuller;->noteUidProcessState(IIJJ)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+HPLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda18;->onUidCpuTime(ILjava/lang/Object;)V
HPLcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomCallbackImpl;->onPullAtom(ILjava/util/List;)I+]Lcom/android/server/stats/pull/AggregatedMobileDataStatsPuller;Lcom/android/server/stats/pull/AggregatedMobileDataStatsPuller;]Lcom/android/server/stats/pull/StatsPullAtomService;Lcom/android/server/stats/pull/StatsPullAtomService;
HSPLcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomServiceInternalImpl;->noteUidProcessState(II)V+]Lcom/android/server/stats/pull/AggregatedMobileDataStatsPuller;Lcom/android/server/stats/pull/AggregatedMobileDataStatsPuller;
-HSPLcom/android/server/stats/pull/StatsPullAtomService;->getUidNetworkStatsSnapshotForTemplateLocked(Landroid/net/NetworkTemplate;Z)Landroid/net/NetworkStats;+]Landroid/app/usage/NetworkStatsManager;Landroid/app/usage/NetworkStatsManager;]Landroid/content/Context;Landroid/app/ContextImpl;
+HPLcom/android/server/stats/pull/StatsPullAtomService;->$r8$lambda$RgpNyMARA8GUjHyunSK8FDiRfT8(Landroid/util/SparseArray;I[I[J[DI[J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/stats/pull/StatsPullAtomService;->addNetworkStats(ILjava/util/List;Lcom/android/server/stats/pull/netstats/NetworkStatsExt;)V+]Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->collectNetworkStatsSnapshotForAtomLocked(I)Ljava/util/List;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->getUidNetworkStatsSnapshotForTemplateLocked(Landroid/net/NetworkTemplate;Z)Landroid/net/NetworkStats;+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/stats/pull/netstats/NetworkStatsAccumulator;Lcom/android/server/stats/pull/netstats/NetworkStatsAccumulator;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->getUidNetworkStatsSnapshotForTemplateLocked(Landroid/net/NetworkTemplate;ZJJ)Landroid/net/NetworkStats;+]Landroid/app/usage/NetworkStatsManager;Landroid/app/usage/NetworkStatsManager;
HPLcom/android/server/stats/pull/StatsPullAtomService;->pullCpuCyclesPerUidClusterLocked(ILjava/util/List;)I+]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/stats/pull/StatsPullAtomService;->pullDataBytesTransferLocked(ILjava/util/List;)I+]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/stats/pull/StatsPullAtomService;->pullKernelWakelockLocked(ILjava/util/List;)I+]Lcom/android/server/power/stats/KernelWakelockReader;Lcom/android/server/power/stats/KernelWakelockReader;]Ljava/util/HashMap;Lcom/android/server/power/stats/KernelWakelockStats;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
-HPLcom/android/server/stats/pull/StatsPullAtomService;->pullModemActivityInfoLocked(ILjava/util/List;)I
-HPLcom/android/server/stats/pull/StatsPullAtomService;->pullProcessMemorySnapshot(ILjava/util/List;)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullModemActivityInfoLocked(ILjava/util/List;)I+]Landroid/telephony/TelephonyManager;Landroid/telephony/TelephonyManager;]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/stats/pull/StatsPullAtomService;->removeEmptyEntries(Landroid/net/NetworkStats;)Landroid/net/NetworkStats;+]Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry;
-HSPLcom/android/server/stats/pull/StatsPullAtomService;->sliceNetworkStats(Landroid/net/NetworkStats;Ljava/util/function/Function;)Landroid/net/NetworkStats;+]Ljava/util/function/Function;Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda2;,Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda3;,Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda4;,Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda5;
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->sliceNetworkStats(Landroid/net/NetworkStats;Ljava/util/function/Function;)Landroid/net/NetworkStats;+]Ljava/util/function/Function;Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda2;,Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda3;,Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda6;,Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda7;
+HSPLcom/android/server/stats/pull/netstats/NetworkStatsAccumulator;->snapshotPlusFollowingStats(JLcom/android/server/stats/pull/netstats/NetworkStatsAccumulator$StatsQueryFunction;)Landroid/net/NetworkStats;+]Lcom/android/server/stats/pull/netstats/NetworkStatsAccumulator$StatsQueryFunction;Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda5;
HSPLcom/android/server/stats/pull/netstats/NetworkStatsExt;-><init>(Landroid/net/NetworkStats;[IZZZILcom/android/server/stats/pull/netstats/SubInfo;IZ)V
HPLcom/android/server/stats/pull/netstats/NetworkStatsExt;->hasSameSlicing(Lcom/android/server/stats/pull/netstats/NetworkStatsExt;)Z
HSPLcom/android/server/stats/pull/netstats/NetworkStatsUtils;->fromBucket(Landroid/app/usage/NetworkStats$Bucket;)Landroid/net/NetworkStats$Entry;+]Landroid/app/usage/NetworkStats$Bucket;Landroid/app/usage/NetworkStats$Bucket;
HSPLcom/android/server/stats/pull/netstats/NetworkStatsUtils;->fromPublicNetworkStats(Landroid/app/usage/NetworkStats;)Landroid/net/NetworkStats;
HPLcom/android/server/statusbar/StatusBarManagerService$1;->setTopAppHidesStatusBar(IZ)V+]Lcom/android/internal/statusbar/IStatusBar;Lcom/android/internal/statusbar/IStatusBar$Stub$Proxy;
-HSPLcom/android/server/timedetector/TimeDetectorService;->latestNetworkTime()Landroid/app/time/UnixEpochTime;+]Lcom/android/server/timedetector/TimeDetectorStrategy;Lcom/android/server/timedetector/TimeDetectorStrategyImpl;
-HSPLcom/android/server/timedetector/TimeDetectorStrategyImpl;->getLatestNetworkSuggestion()Lcom/android/server/timedetector/NetworkTimeSuggestion;
-HSPLcom/android/server/timezonedetector/ReferenceWithHistory;->get()Ljava/lang/Object;+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
+HSPLcom/android/server/storage/DeviceStorageMonitorService;->checkLow()V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/storage/StorageManager;Landroid/os/storage/StorageManager;]Landroid/os/storage/VolumeInfo;Landroid/os/storage/VolumeInfo;]Ljava/io/File;Ljava/io/File;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/trust/TrustManagerService$3;->isDeviceLocked(II)Z+]Lcom/android/internal/widget/LockPatternUtils;Lcom/android/internal/widget/LockPatternUtils;]Lcom/android/server/trust/TrustManagerService;Lcom/android/server/trust/TrustManagerService;
HSPLcom/android/server/trust/TrustManagerService$3;->isDeviceSecure(II)Z+]Lcom/android/internal/widget/LockPatternUtils;Lcom/android/internal/widget/LockPatternUtils;
HSPLcom/android/server/trust/TrustManagerService;->refreshAgentList(I)V+]Landroid/app/ActivityManager;Landroid/app/ActivityManager;]Landroid/app/admin/DevicePolicyManager;Landroid/app/admin/DevicePolicyManager;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;]Lcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;Lcom/android/server/trust/TrustManagerService$StrongAuthTracker;]Lcom/android/internal/widget/LockPatternUtils;Lcom/android/internal/widget/LockPatternUtils;]Lcom/android/server/trust/TrustAgentWrapper;Lcom/android/server/trust/TrustAgentWrapper;]Lcom/android/server/trust/TrustManagerService$StrongAuthTracker;Lcom/android/server/trust/TrustManagerService$StrongAuthTracker;]Lcom/android/server/trust/TrustManagerService;Lcom/android/server/trust/TrustManagerService;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/trust/TrustManagerService;->resolveProfileParent(I)I+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;
-HSPLcom/android/server/twilight/TwilightService$1;->unregisterListener(Lcom/android/server/twilight/TwilightListener;)V
-HPLcom/android/server/uri/GrantUri;-><init>(ILandroid/net/Uri;I)V
+HSPLcom/android/server/uri/GrantUri;-><init>(ILandroid/net/Uri;I)V
+HSPLcom/android/server/uri/UriGrantsManagerService$LocalService;->checkGrantUriPermissionFromIntent(Landroid/content/Intent;ILjava/lang/String;I)Lcom/android/server/uri/NeededUriGrants;
HSPLcom/android/server/uri/UriGrantsManagerService$LocalService;->internalCheckGrantUriPermissionFromIntent(Landroid/content/Intent;ILjava/lang/String;ILjava/lang/Integer;Ljava/lang/Integer;)Lcom/android/server/uri/NeededUriGrants;+]Landroid/content/Intent;Landroid/content/Intent;
HSPLcom/android/server/uri/UriGrantsManagerService;->checkGrantUriPermissionFromIntentUnlocked(ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/uri/NeededUriGrants;ILjava/lang/Integer;Ljava/lang/Integer;)Lcom/android/server/uri/NeededUriGrants;+]Landroid/content/ClipData$Item;Landroid/content/ClipData$Item;]Landroid/content/ClipData;Landroid/content/ClipData;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
HPLcom/android/server/uri/UriGrantsManagerService;->checkGrantUriPermissionUnlocked(ILjava/lang/String;Lcom/android/server/uri/GrantUri;II)I+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/pm/PathPermission;Landroid/content/pm/PathPermission;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;]Landroid/os/PatternMatcher;Landroid/os/PatternMatcher;
@@ -3392,14 +3508,10 @@ HSPLcom/android/server/usage/AppIdleHistory;->getUserHistory(I)Landroid/util/Arr
HSPLcom/android/server/usage/AppIdleHistory;->isIdle(Ljava/lang/String;IJ)Z
HSPLcom/android/server/usage/AppIdleHistory;->readAppIdleTimes(ILandroid/util/ArrayMap;)V
HPLcom/android/server/usage/AppIdleHistory;->reportUsage(Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;Ljava/lang/String;IIIJJ)Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;
-HPLcom/android/server/usage/AppIdleHistory;->setAppStandbyBucket(Ljava/lang/String;IJIIZ)V+]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;
HSPLcom/android/server/usage/AppIdleHistory;->setLastJobRunTime(Ljava/lang/String;IJ)V+]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;
-HPLcom/android/server/usage/AppIdleHistory;->shouldInformListeners(Ljava/lang/String;IJI)Z
HPLcom/android/server/usage/AppIdleHistory;->writeAppIdleTimes(IJ)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;
HSPLcom/android/server/usage/AppStandbyController$AppStandbyHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/usage/AppStandbyController$ContentProviderUsageRecord;Lcom/android/server/usage/AppStandbyController$ContentProviderUsageRecord;]Lcom/android/server/usage/AppStandbyController$Injector;Lcom/android/server/usage/AppStandbyController$Injector;]Lcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;Lcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;]Lcom/android/server/usage/AppStandbyController;Lcom/android/server/usage/AppStandbyController;
-HSPLcom/android/server/usage/AppStandbyController$Injector;->getActiveNetworkScorer()Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/net/NetworkScoreManager;Landroid/net/NetworkScoreManager;
-HPLcom/android/server/usage/AppStandbyController$Injector;->getValidCrossProfileTargets(Ljava/lang/String;I)Ljava/util/List;+]Landroid/content/pm/CrossProfileAppsInternal;Lcom/android/server/pm/CrossProfileAppsServiceImpl$LocalService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
-HSPLcom/android/server/usage/AppStandbyController$Injector;->isNonIdleWhitelisted(Ljava/lang/String;)Z
+HSPLcom/android/server/usage/AppStandbyController$ContentProviderUsageRecord;->obtain(Ljava/lang/String;Ljava/lang/String;I)Lcom/android/server/usage/AppStandbyController$ContentProviderUsageRecord;+]Lcom/android/server/usage/AppStandbyController$Pool;Lcom/android/server/usage/AppStandbyController$Pool;
HPLcom/android/server/usage/AppStandbyController;->checkAndUpdateStandbyState(Ljava/lang/String;IIJ)V+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;]Lcom/android/server/usage/AppStandbyController$Injector;Lcom/android/server/usage/AppStandbyController$Injector;
HSPLcom/android/server/usage/AppStandbyController;->getAppMinBucket(Ljava/lang/String;II)I+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/usage/AppStandbyController$Injector;Lcom/android/server/usage/AppStandbyController$Injector;]Lcom/android/server/usage/AppStandbyController;Lcom/android/server/usage/AppStandbyController;
HSPLcom/android/server/usage/AppStandbyController;->getAppStandbyBucket(Ljava/lang/String;IJZ)I+]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;
@@ -3409,15 +3521,15 @@ HSPLcom/android/server/usage/AppStandbyController;->isAdminProtectedPackages(Lja
HSPLcom/android/server/usage/AppStandbyController;->isAppIdleEnabled()Z
HSPLcom/android/server/usage/AppStandbyController;->isAppIdleFiltered(Ljava/lang/String;IIJ)Z
HSPLcom/android/server/usage/AppStandbyController;->isCarrierApp(Ljava/lang/String;)Z+]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+HSPLcom/android/server/usage/AppStandbyController;->isDeviceProvisioningPackage(Ljava/lang/String;)Z
HSPLcom/android/server/usage/AppStandbyController;->isInParole()Z
-HPLcom/android/server/usage/AppStandbyController;->maybeInformListeners(Ljava/lang/String;IJIIZ)V+]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;
HPLcom/android/server/usage/AppStandbyController;->onUsageEvent(ILandroid/app/usage/UsageEvents$Event;)V+]Lcom/android/server/usage/AppStandbyController$Injector;Lcom/android/server/usage/AppStandbyController$Injector;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
-HSPLcom/android/server/usage/AppStandbyController;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/usage/AppStandbyController$Injector;Lcom/android/server/usage/AppStandbyController$Injector;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/usage/AppStandbyController;->reportEventLocked(Ljava/lang/String;IJI)V+]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;
HSPLcom/android/server/usage/AppStandbyController;->setLastJobRunTime(Ljava/lang/String;IJ)V+]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory;
HPLcom/android/server/usage/IntervalStats;-><init>()V
HPLcom/android/server/usage/IntervalStats;->deobfuscateEvents(Lcom/android/server/usage/PackagesTokenData;)Z+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;
HPLcom/android/server/usage/IntervalStats;->deobfuscateUsageStats(Lcom/android/server/usage/PackagesTokenData;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+HPLcom/android/server/usage/IntervalStats;->getOrCreateUsageStats(Ljava/lang/String;)Landroid/app/usage/UsageStats;
HPLcom/android/server/usage/IntervalStats;->obfuscateEventsData(Lcom/android/server/usage/PackagesTokenData;)V+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;
HPLcom/android/server/usage/IntervalStats;->obfuscateUsageStatsData(Lcom/android/server/usage/PackagesTokenData;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HPLcom/android/server/usage/IntervalStats;->update(Ljava/lang/String;Ljava/lang/String;JII)V+]Lcom/android/server/usage/IntervalStats;Lcom/android/server/usage/IntervalStats;
@@ -3441,36 +3553,33 @@ HPLcom/android/server/usage/UsageStatsProtoV2;->read(Ljava/io/InputStream;Lcom/a
HPLcom/android/server/usage/UsageStatsProtoV2;->write(Ljava/io/OutputStream;Lcom/android/server/usage/IntervalStats;)V+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;]Landroid/util/SparseArray;Landroid/util/SparseArray;
HPLcom/android/server/usage/UsageStatsProtoV2;->writeOffsetTimestamp(Landroid/util/proto/ProtoOutputStream;JJJ)V
HSPLcom/android/server/usage/UsageStatsService$3;->onUidStateChanged(IIJI)V
-HPLcom/android/server/usage/UsageStatsService$BinderService;->$r8$lambda$KcrJYyWcmAOKG3NFhWUYPCQlNFI(Lcom/android/server/usage/UsageStatsService$BinderService;IIZLandroid/app/usage/AppStandbyInfo;)Z
HPLcom/android/server/usage/UsageStatsService$BinderService;->getAppStandbyBucket(Ljava/lang/String;Ljava/lang/String;I)I+]Landroid/app/IActivityManager;Lcom/android/server/am/ActivityManagerService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
HPLcom/android/server/usage/UsageStatsService$BinderService;->hasQueryPermission(Ljava/lang/String;)Z+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/Context;Landroid/app/ContextImpl;
HPLcom/android/server/usage/UsageStatsService$BinderService;->isAppInactive(Ljava/lang/String;ILjava/lang/String;)Z+]Landroid/app/IActivityManager;Lcom/android/server/am/ActivityManagerService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
+HSPLcom/android/server/usage/UsageStatsService$H;->handleMessage(Landroid/os/Message;)V+]Landroid/app/usage/UsageStatsManagerInternal$EstimatedLaunchTimeChangedListener;Lcom/android/server/job/controllers/PrefetchController$1;]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Lcom/android/server/usage/BroadcastResponseStatsTracker;Lcom/android/server/usage/BroadcastResponseStatsTracker;]Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Ljava/util/concurrent/CopyOnWriteArraySet;Ljava/util/concurrent/CopyOnWriteArraySet;
HSPLcom/android/server/usage/UsageStatsService$LocalService;->getAppStandbyBucket(Ljava/lang/String;IJ)I+]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
HSPLcom/android/server/usage/UsageStatsService$LocalService;->isAppIdle(Ljava/lang/String;II)Z+]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
HSPLcom/android/server/usage/UsageStatsService$LocalService;->reportEvent(Ljava/lang/String;II)V
HSPLcom/android/server/usage/UsageStatsService$LocalService;->setLastJobRunTime(Ljava/lang/String;IJ)V+]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
-HPLcom/android/server/usage/UsageStatsService;->-$$Nest$msameApp(Lcom/android/server/usage/UsageStatsService;IILjava/lang/String;)Z
-HPLcom/android/server/usage/UsageStatsService;->getUserUsageStatsServiceLocked(I)Lcom/android/server/usage/UserUsageStatsService;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/usage/UsageStatsService;->lambda$new$0(Landroid/os/Message;)Z+]Landroid/app/usage/UsageStatsManagerInternal$UsageEventListener;Lcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda0;,Lcom/android/server/job/controllers/QuotaController$UsageEventTracker;,Lcom/android/server/pm/BackgroundInstallControlService$$ExternalSyntheticLambda0;,Lcom/android/server/usage/AppStandbyController;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HPLcom/android/server/usage/UsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;I)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Lcom/android/server/usage/AppTimeLimitController;Lcom/android/server/usage/AppTimeLimitController;]Lcom/android/server/usage/UserUsageStatsService;Lcom/android/server/usage/UserUsageStatsService;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/concurrent/CopyOnWriteArraySet;Ljava/util/concurrent/CopyOnWriteArraySet;
HSPLcom/android/server/usage/UsageStatsService;->reportEventOrAddToQueue(ILandroid/app/usage/UsageEvents$Event;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Ljava/util/LinkedList;Ljava/util/LinkedList;]Ljava/util/concurrent/CopyOnWriteArraySet;Ljava/util/concurrent/CopyOnWriteArraySet;
HPLcom/android/server/usage/UserUsageStatsService$1;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z+]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/usage/UserUsageStatsService$4;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;]Ljava/util/List;Ljava/util/ArrayList;
-HPLcom/android/server/usage/UserUsageStatsService;->checkAndGetTimeLocked()J
HPLcom/android/server/usage/UserUsageStatsService;->queryEvents(JJI[ILandroid/util/ArraySet;)Landroid/app/usage/UsageEvents;+]Ljava/util/List;Ljava/util/ArrayList;
-HPLcom/android/server/usage/UserUsageStatsService;->queryStats(IJJLcom/android/server/usage/UsageStatsDatabase$StatCombiner;Z)Ljava/util/List;+]Lcom/android/server/usage/UsageStatsDatabase$StatCombiner;megamorphic_types]Lcom/android/server/usage/UsageStatsDatabase;Lcom/android/server/usage/UsageStatsDatabase;
HPLcom/android/server/usage/UserUsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;)V+]Lcom/android/server/usage/IntervalStats;Lcom/android/server/usage/IntervalStats;]Lcom/android/server/usage/UnixCalendar;Lcom/android/server/usage/UnixCalendar;
HSPLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;->lambda$static$0(Landroid/util/Pair;Landroid/util/Pair;)I
+HSPLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;->$r8$lambda$a9G3NCnbGSjGaU6KBkUKenfyhOo(Landroid/util/Pair;Landroid/util/Pair;)I
HSPLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;->removeKey(Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/content/pm/UserPackage;,Lcom/android/server/job/controllers/JobStatus;,Ljava/lang/String;]Ljava/util/PriorityQueue;Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;
HSPLcom/android/server/utils/AlarmQueue;->addAlarm(Ljava/lang/Object;J)V+]Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;]Ljava/util/PriorityQueue;Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;
HSPLcom/android/server/utils/AlarmQueue;->removeAlarmForKey(Ljava/lang/Object;)V+]Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;
HSPLcom/android/server/utils/AlarmQueue;->setNextAlarmLocked(J)V+]Ljava/util/PriorityQueue;Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;
-HSPLcom/android/server/utils/AnrTimer$FeatureDisabled;->cancel(Ljava/lang/Object;)Z
-HSPLcom/android/server/utils/AnrTimer$FeatureDisabled;->start(Ljava/lang/Object;IIJ)V
-HSPLcom/android/server/utils/AnrTimer;->cancel(Ljava/lang/Object;)Z+]Lcom/android/server/utils/AnrTimer$FeatureSwitch;Lcom/android/server/utils/AnrTimer$FeatureDisabled;
-HSPLcom/android/server/utils/AnrTimer;->serviceEnabled()Z+]Lcom/android/server/utils/AnrTimer$FeatureSwitch;Lcom/android/server/utils/AnrTimer$FeatureDisabled;
-HSPLcom/android/server/utils/AnrTimer;->start(Ljava/lang/Object;J)V+]Lcom/android/server/utils/AnrTimer$FeatureSwitch;Lcom/android/server/utils/AnrTimer$FeatureDisabled;]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/ActiveServices$ProcessAnrTimer;,Lcom/android/server/am/ActiveServices$ServiceAnrTimer;,Lcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;
+HSPLcom/android/server/utils/AnrTimer$FeatureEnabled;->cancel(Ljava/lang/Object;)Z
+HSPLcom/android/server/utils/AnrTimer$FeatureEnabled;->removeLocked(Ljava/lang/Object;)Ljava/lang/Integer;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/utils/AnrTimer$FeatureEnabled;->start(Ljava/lang/Object;IIJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/utils/AnrTimer$FeatureEnabled;Lcom/android/server/utils/AnrTimer$FeatureEnabled;
+HSPLcom/android/server/utils/AnrTimer;->cancel(Ljava/lang/Object;)Z+]Lcom/android/server/utils/AnrTimer$FeatureSwitch;Lcom/android/server/utils/AnrTimer$FeatureEnabled;
+HSPLcom/android/server/utils/AnrTimer;->serviceEnabled()Z+]Lcom/android/server/utils/AnrTimer$FeatureSwitch;Lcom/android/server/utils/AnrTimer$FeatureEnabled;
+HSPLcom/android/server/utils/AnrTimer;->start(Ljava/lang/Object;J)V+]Lcom/android/server/utils/AnrTimer$FeatureSwitch;Lcom/android/server/utils/AnrTimer$FeatureEnabled;]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/ActiveServices$ProcessAnrTimer;,Lcom/android/server/am/ActiveServices$ServiceAnrTimer;,Lcom/android/server/am/BroadcastQueueImpl$BroadcastAnrTimer;,Lcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;
HSPLcom/android/server/utils/Slogf;->getMessage(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
HSPLcom/android/server/utils/SnapshotCache$Auto;->createSnapshot()Lcom/android/server/utils/Snappable;+]Lcom/android/server/utils/Snappable;megamorphic_types
HSPLcom/android/server/utils/SnapshotCache;-><init>()V
@@ -3484,7 +3593,6 @@ HSPLcom/android/server/utils/WatchableImpl;->registerObserver(Lcom/android/serve
HSPLcom/android/server/utils/WatchableImpl;->seal()V
HSPLcom/android/server/utils/WatchedArrayList$1;->onChange(Lcom/android/server/utils/Watchable;)V+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchedArrayList;
HSPLcom/android/server/utils/WatchedArrayList;->get(I)Ljava/lang/Object;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/utils/WatchedArrayList;->size()I+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/utils/WatchedArrayList;->snapshot(Lcom/android/server/utils/WatchedArrayList;Lcom/android/server/utils/WatchedArrayList;)V+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchedArrayList;]Lcom/android/server/utils/WatchedArrayList;Lcom/android/server/utils/WatchedArrayList;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/utils/WatchedArrayMap$1;->onChange(Lcom/android/server/utils/Watchable;)V+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchedArrayMap;
HSPLcom/android/server/utils/WatchedArrayMap;-><init>(IZ)V
@@ -3494,7 +3602,7 @@ HSPLcom/android/server/utils/WatchedArrayMap;->get(Ljava/lang/Object;)Ljava/lang
HSPLcom/android/server/utils/WatchedArrayMap;->keyAt(I)Ljava/lang/Object;
HSPLcom/android/server/utils/WatchedArrayMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLcom/android/server/utils/WatchedArrayMap;->putAll(Ljava/util/Map;)V+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Ljava/util/Map;Lcom/android/server/utils/WatchedArrayMap;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
-HSPLcom/android/server/utils/WatchedArrayMap;->registerChild(Ljava/lang/Object;)V+]Lcom/android/server/utils/Watchable;Lcom/android/server/pm/PackageSetting;,Lcom/android/server/utils/WatchedLongSparseArray;
+HSPLcom/android/server/utils/WatchedArrayMap;->registerChild(Ljava/lang/Object;)V+]Lcom/android/server/utils/Watchable;Lcom/android/server/pm/PackageSetting;,Lcom/android/server/pm/SharedUserSetting;,Lcom/android/server/utils/WatchedLongSparseArray;
HSPLcom/android/server/utils/WatchedArrayMap;->size()I
HSPLcom/android/server/utils/WatchedArrayMap;->snapshot(Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;)V+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;
HSPLcom/android/server/utils/WatchedArrayMap;->untrackedStorage()Landroid/util/ArrayMap;
@@ -3507,6 +3615,7 @@ HSPLcom/android/server/utils/WatchedArraySet;->registerChild(Ljava/lang/Object;)
HSPLcom/android/server/utils/WatchedArraySet;->registerObserver(Lcom/android/server/utils/Watcher;)V
HSPLcom/android/server/utils/WatchedArraySet;->snapshot(Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;)V+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchedArraySet;]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;
HSPLcom/android/server/utils/WatchedArraySet;->untrackedStorage()Landroid/util/ArraySet;
+HSPLcom/android/server/utils/WatchedArraySet;->valueAt(I)Ljava/lang/Object;
HSPLcom/android/server/utils/WatchedLongSparseArray;->size()I+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
HSPLcom/android/server/utils/WatchedLongSparseArray;->valueAt(I)Ljava/lang/Object;+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
HSPLcom/android/server/utils/WatchedSparseArray;-><init>()V
@@ -3519,15 +3628,16 @@ HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->binarySearch([III)I
HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->copyFrom(Lcom/android/server/utils/WatchedSparseBooleanMatrix;)V
HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->indexOfKey(I)I
HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->indexOfKey(IZ)I
+HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->nextFree(Z)I
HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->put(IIZ)V+]Lcom/android/server/utils/WatchedSparseBooleanMatrix;Lcom/android/server/utils/WatchedSparseBooleanMatrix;
HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->setValueAt(IIZ)V
HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->setValueAtInternal(IIZ)V
HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->validateIndex(II)V
HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->valueAt(II)Z
HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->valueAtInternal(II)Z
-HSPLcom/android/server/utils/WatchedSparseSetArray;-><init>(Lcom/android/server/utils/WatchedSparseSetArray;)V
+HSPLcom/android/server/utils/WatchedSparseSetArray;-><init>(Lcom/android/server/utils/WatchedSparseSetArray;)V+]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray;
HSPLcom/android/server/utils/WatchedSparseSetArray;->add(ILjava/lang/Object;)Z+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;
-HSPLcom/android/server/utils/WatchedSparseSetArray;->contains(ILjava/lang/Object;)Z+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;
+HPLcom/android/server/utils/WatchedSparseSetArray;->contains(ILjava/lang/Object;)Z+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;
HSPLcom/android/server/utils/quota/Category;->equals(Ljava/lang/Object;)Z
HSPLcom/android/server/utils/quota/Category;->hashCode()I
HSPLcom/android/server/utils/quota/CountQuotaTracker;->getExecutionStatsLocked(ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;
@@ -3542,11 +3652,11 @@ HSPLcom/android/server/utils/quota/QuotaTracker;->isQuotaFreeLocked(ILjava/lang/
HSPLcom/android/server/utils/quota/QuotaTracker;->isWithinQuota(ILjava/lang/String;Ljava/lang/String;)Z+]Lcom/android/server/utils/quota/QuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;
HSPLcom/android/server/utils/quota/UptcMap;->getOrCreate(ILjava/lang/String;Ljava/lang/String;Ljava/util/function/Function;)Ljava/lang/Object;+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/utils/quota/UptcMap;Lcom/android/server/utils/quota/UptcMap;]Ljava/util/function/Function;Lcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda1;,Lcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda2;
HSPLcom/android/server/vibrator/VibrationSettings$VibrationUidObserver;->onUidStateChanged(IIJI)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
-HPLcom/android/server/webkit/WebViewUpdateService$BinderService;->getCurrentWebViewPackage()Landroid/content/pm/PackageInfo;+]Lcom/android/server/webkit/WebViewUpdateServiceInterface;Lcom/android/server/webkit/WebViewUpdateServiceImpl2;
+HPLcom/android/server/vibrator/VibrationStats$StatsInfo;-><init>(IIILcom/android/server/vibrator/VibrationSession$Status;Lcom/android/server/vibrator/VibrationStats;)V
HPLcom/android/server/webkit/WebViewUpdateService$BinderService;->grantVisibilityToCaller(Ljava/lang/String;I)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
HSPLcom/android/server/wm/AccessibilityController;->hasCallbacks()Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/wm/ActivityRecord;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/WindowProcessController;IILjava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;IZZLcom/android/server/wm/ActivityTaskSupervisor;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;Landroid/os/PersistableBundle;Landroid/app/ActivityManager$TaskDescription;J)V
-HSPLcom/android/server/wm/ActivityRecord;->canAffectSystemUiFlags()Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/ActivityRecord;->canAffectSystemUiFlags()Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
HSPLcom/android/server/wm/ActivityRecord;->canBeTopRunning()Z
HSPLcom/android/server/wm/ActivityRecord;->canReceiveKeys()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
HSPLcom/android/server/wm/ActivityRecord;->canShowWhenLockedInner(Lcom/android/server/wm/ActivityRecord;)Z
@@ -3557,21 +3667,26 @@ HSPLcom/android/server/wm/ActivityRecord;->findMainWindow(Z)Lcom/android/server/
HSPLcom/android/server/wm/ActivityRecord;->getActivity(Ljava/util/function/Predicate;ZLcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;+]Ljava/util/function/Predicate;megamorphic_types
HSPLcom/android/server/wm/ActivityRecord;->getAppCompatState(Z)I+]Lcom/android/server/wm/AppCompatAspectRatioPolicy;Lcom/android/server/wm/AppCompatAspectRatioPolicy;]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatSizeCompatModePolicy;Lcom/android/server/wm/AppCompatSizeCompatModePolicy;]Lcom/android/server/wm/TransparentPolicy;Lcom/android/server/wm/TransparentPolicy;
HSPLcom/android/server/wm/ActivityRecord;->getBounds()Landroid/graphics/Rect;+]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/TransparentPolicy;Lcom/android/server/wm/TransparentPolicy;
-HSPLcom/android/server/wm/ActivityRecord;->getScreenResolvedBounds()Landroid/graphics/Rect;+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatSizeCompatModePolicy;Lcom/android/server/wm/AppCompatSizeCompatModePolicy;
+HSPLcom/android/server/wm/ActivityRecord;->getOverrideOrientation()I+]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatOrientationPolicy;Lcom/android/server/wm/AppCompatOrientationPolicy;
+HSPLcom/android/server/wm/ActivityRecord;->getRootTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/ActivityRecord;->getTask()Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/ActivityRecord;->getTaskFragment()Lcom/android/server/wm/TaskFragment;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
HSPLcom/android/server/wm/ActivityRecord;->hasSizeCompatBounds()Z+]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatSizeCompatModePolicy;Lcom/android/server/wm/AppCompatSizeCompatModePolicy;
+HPLcom/android/server/wm/ActivityRecord;->isFullyTransparentBarAllowed(Landroid/graphics/Rect;)Z+]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatLetterboxPolicy;Lcom/android/server/wm/AppCompatLetterboxPolicy;
HSPLcom/android/server/wm/ActivityRecord;->isVisible()Z
HSPLcom/android/server/wm/ActivityRecord;->isWaitingForTransitionStart()Z+]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;
HSPLcom/android/server/wm/ActivityRecord;->occludesParent(Z)Z
HSPLcom/android/server/wm/ActivityRecord;->prepareSurfaces()V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/ActivityRecordInputSink;Lcom/android/server/wm/ActivityRecordInputSink;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/ActivityRecord;->setState(Lcom/android/server/wm/ActivityRecord$State;Ljava/lang/String;)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/UnknownAppVisibilityController;Lcom/android/server/wm/UnknownAppVisibilityController;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/wm/ActivityRecord;->setVisibility(ZZ)V+]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/ActivityRecord;->shouldBeVisibleUnchecked()Z+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/KeyguardController;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/ActivityRecord;->shouldMakeActive(Lcom/android/server/wm/ActivityRecord;)Z+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/ActivityRecord;->showToCurrentUser()Z+]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
HSPLcom/android/server/wm/ActivityRecord;->toString()Ljava/lang/String;+]Landroid/content/Intent;Landroid/content/Intent;
HSPLcom/android/server/wm/ActivityRecord;->updateDrawnWindowStates(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/ActivityRecord;->updateReportedVisibilityLocked()V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/ActivityRecord;->windowsAreFocusable(Z)Z
+HSPLcom/android/server/wm/ActivityRecordInputSink;->applyChangesToSurfaceIfChanged(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;
HSPLcom/android/server/wm/ActivityRecordInputSink;->getInputWindowHandleWrapper()Lcom/android/server/wm/InputWindowHandleWrapper;+]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/ActivityStarter$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->attachApplication(Lcom/android/server/wm/WindowProcessController;)Z+]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
@@ -3582,11 +3697,14 @@ HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isSleeping()
HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isUidForeground(I)Z+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;
HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onProcessAdded(Lcom/android/server/wm/WindowProcessController;)V+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Lcom/android/server/wm/PackageConfigPersister;Lcom/android/server/wm/PackageConfigPersister;
HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onProcessRemoved(Ljava/lang/String;I)V+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onUidProcStateChanged(II)V
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->preBindApplication(Lcom/android/server/wm/WindowProcessController;Landroid/content/pm/ApplicationInfo;)Lcom/android/server/wm/ActivityTaskManagerInternal$PreBindInfo;+]Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onUidProcStateChanged(II)V+]Lcom/android/server/wm/MirrorActiveUids;Lcom/android/server/wm/MirrorActiveUids;
+HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->preBindApplication(Lcom/android/server/wm/WindowProcessController;Landroid/content/pm/ApplicationInfo;)Lcom/android/server/wm/ActivityTaskManagerInternal$PreBindInfo;+]Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/ActivityTaskManagerService;->continueWindowLayout()V+]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;
+HSPLcom/android/server/wm/ActivityTaskManagerService;->deferWindowLayout()V+]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;
HPLcom/android/server/wm/ActivityTaskManagerService;->getLastStopAppSwitchesTime()J
-HPLcom/android/server/wm/ActivityTaskManagerService;->getTasks(IZZI)Ljava/util/List;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->hasActiveVisibleWindow(I)Z+]Lcom/android/server/wm/MirrorActiveUids;Lcom/android/server/wm/MirrorActiveUids;]Lcom/android/server/wm/VisibleActivityProcessTracker;Lcom/android/server/wm/VisibleActivityProcessTracker;
+HSPLcom/android/server/wm/ActivityTaskManagerService;->getLifecycleManager()Lcom/android/server/wm/ClientLifecycleManager;
+HSPLcom/android/server/wm/ActivityTaskManagerService;->getTasks(IZZI)Ljava/util/List;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
+HPLcom/android/server/wm/ActivityTaskManagerService;->hasActiveVisibleWindow(I)Z+]Lcom/android/server/wm/MirrorActiveUids;Lcom/android/server/wm/MirrorActiveUids;]Lcom/android/server/wm/VisibleActivityProcessTracker;Lcom/android/server/wm/VisibleActivityProcessTracker;
HSPLcom/android/server/wm/ActivityTaskManagerService;->isCallerRecents(I)Z+]Lcom/android/server/wm/RecentTasks;Lcom/android/server/wm/RecentTasks;
HSPLcom/android/server/wm/ActivityTaskManagerService;->isGetTasksAllowed(Ljava/lang/String;II)Z+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;
HSPLcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;->getVisibleOpaqueActivity(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;Z)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
@@ -3594,55 +3712,63 @@ HSPLcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;->test(Lco
HSPLcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;->accept(Lcom/android/server/wm/ActivityRecord;)V+]Landroid/app/TaskInfo;Landroid/app/ActivityManager$RecentTaskInfo;,Landroid/app/ActivityManager$RunningTaskInfo;,Landroid/app/ActivityTaskManager$RootTaskInfo;
HSPLcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;->fillAndReturnTop(Lcom/android/server/wm/Task;Landroid/app/TaskInfo;)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/ActivityTaskSupervisor;->beginActivityVisibilityUpdate()V+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/KeyguardController;
-HSPLcom/android/server/wm/ActivityTaskSupervisor;->endActivityVisibilityUpdate()V+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;
HSPLcom/android/server/wm/ActivityTaskSupervisor;->getKeyguardController()Lcom/android/server/wm/KeyguardController;
HSPLcom/android/server/wm/AppCompatAspectRatioOverrides$$ExternalSyntheticLambda0;->getAsBoolean()Z
HSPLcom/android/server/wm/AppCompatAspectRatioOverrides$$ExternalSyntheticLambda1;->getAsBoolean()Z
-HSPLcom/android/server/wm/AppCompatAspectRatioOverrides;->isSystemOverrideToFullscreenEnabled()Z+]Lcom/android/server/wm/utils/OptPropFactory$OptProp;Lcom/android/server/wm/utils/OptPropFactory$OptProp;
+HSPLcom/android/server/wm/AppCompatAspectRatioOverrides$UserAspectRatioState;->getUserAspectRatio(Lcom/android/server/wm/ActivityRecord;)I+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;
+HSPLcom/android/server/wm/AppCompatAspectRatioOverrides;->getUserMinAspectRatioOverrideCode()I
+HSPLcom/android/server/wm/AppCompatAspectRatioOverrides;->isSystemOverrideToFullscreenEnabled()Z+]Lcom/android/server/wm/AppCompatAspectRatioOverrides;Lcom/android/server/wm/AppCompatAspectRatioOverrides;]Lcom/android/server/wm/utils/OptPropFactory$OptProp;Lcom/android/server/wm/utils/OptPropFactory$OptProp;
HSPLcom/android/server/wm/AppCompatAspectRatioOverrides;->isUserFullscreenOverrideEnabled()Z+]Lcom/android/server/wm/utils/OptPropFactory$OptProp;Lcom/android/server/wm/utils/OptPropFactory$OptProp;
-HSPLcom/android/server/wm/AppCompatAspectRatioOverrides;->shouldApplyUserFullscreenOverride()Z+]Lcom/android/server/wm/AppCompatAspectRatioOverrides;Lcom/android/server/wm/AppCompatAspectRatioOverrides;
-HSPLcom/android/server/wm/AppCompatAspectRatioOverrides;->shouldEnableUserAspectRatioSettings()Z+]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/utils/OptPropFactory$OptProp;Lcom/android/server/wm/utils/OptPropFactory$OptProp;
+HSPLcom/android/server/wm/AppCompatAspectRatioOverrides;->shouldEnableUserAspectRatioSettings()Z+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/utils/OptPropFactory$OptProp;Lcom/android/server/wm/utils/OptPropFactory$OptProp;
HSPLcom/android/server/wm/AppCompatAspectRatioOverrides;->shouldOverrideMinAspectRatio()Z+]Lcom/android/server/wm/utils/OptPropFactory$OptProp;Lcom/android/server/wm/utils/OptPropFactory$OptProp;
+HSPLcom/android/server/wm/AppCompatAspectRatioPolicy$AppCompatAspectRatioState;->isLetterboxedForAspectRatioOnly()Z
+HSPLcom/android/server/wm/AppCompatAspectRatioPolicy$AppCompatAspectRatioState;->isLetterboxedForFixedOrientationAndAspectRatio()Z
HSPLcom/android/server/wm/AppCompatAspectRatioPolicy;->isLetterboxedForAspectRatioOnly()Z+]Lcom/android/server/wm/AppCompatAspectRatioPolicy$AppCompatAspectRatioState;Lcom/android/server/wm/AppCompatAspectRatioPolicy$AppCompatAspectRatioState;
HSPLcom/android/server/wm/AppCompatAspectRatioPolicy;->isLetterboxedForFixedOrientationAndAspectRatio()Z+]Lcom/android/server/wm/AppCompatAspectRatioPolicy$AppCompatAspectRatioState;Lcom/android/server/wm/AppCompatAspectRatioPolicy$AppCompatAspectRatioState;
+HSPLcom/android/server/wm/AppCompatCameraPolicy;->getAppCompatCameraPolicy(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/AppCompatCameraPolicy;
+HSPLcom/android/server/wm/AppCompatCameraPolicy;->isCameraRunningAndWindowingModeEligible(Lcom/android/server/wm/ActivityRecord;)Z
HSPLcom/android/server/wm/AppCompatConfiguration;->getDefaultLetterboxBackgroundType()I
HSPLcom/android/server/wm/AppCompatConfiguration;->isUserAppAspectRatioFullscreenEnabled()Z
HSPLcom/android/server/wm/AppCompatConfiguration;->isUserAppAspectRatioSettingsEnabled()Z
-HSPLcom/android/server/wm/AppCompatController;->getAppCompatAspectRatioPolicy()Lcom/android/server/wm/AppCompatAspectRatioPolicy;
-HSPLcom/android/server/wm/AppCompatController;->getAppCompatLetterboxOverrides()Lcom/android/server/wm/AppCompatLetterboxOverrides;+]Lcom/android/server/wm/AppCompatOverrides;Lcom/android/server/wm/AppCompatOverrides;
-HSPLcom/android/server/wm/AppCompatController;->getAppCompatSizeCompatModePolicy()Lcom/android/server/wm/AppCompatSizeCompatModePolicy;
HSPLcom/android/server/wm/AppCompatController;->getTransparentPolicy()Lcom/android/server/wm/TransparentPolicy;
+HSPLcom/android/server/wm/AppCompatLetterboxOverrides;->getLetterboxBackgroundType()I
HSPLcom/android/server/wm/AppCompatLetterboxPolicy$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/AppCompatLetterboxPolicy$LegacyLetterboxPolicyState;->isRunning()Z
+HSPLcom/android/server/wm/AppCompatLetterboxPolicy$LegacyLetterboxPolicyState;->updateLetterboxSurfaceIfNeeded(Lcom/android/server/wm/WindowState;Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/AppCompatLetterboxPolicy$LegacyLetterboxPolicyState;Lcom/android/server/wm/AppCompatLetterboxPolicy$LegacyLetterboxPolicyState;]Lcom/android/server/wm/AppCompatLetterboxPolicy;Lcom/android/server/wm/AppCompatLetterboxPolicy;]Lcom/android/server/wm/Letterbox;Lcom/android/server/wm/Letterbox;
+HSPLcom/android/server/wm/AppCompatLetterboxPolicy;->getLetterboxDetails()Lcom/android/internal/statusbar/LetterboxDetails;+]Lcom/android/server/wm/AppCompatLetterboxPolicy;Lcom/android/server/wm/AppCompatLetterboxPolicy;]Lcom/android/server/wm/AppCompatLetterboxPolicyState;Lcom/android/server/wm/AppCompatLetterboxPolicy$LegacyLetterboxPolicyState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/AppCompatLetterboxPolicy;->isFullyTransparentBarAllowed(Landroid/graphics/Rect;)Z+]Lcom/android/server/wm/AppCompatLetterboxPolicyState;Lcom/android/server/wm/AppCompatLetterboxPolicy$LegacyLetterboxPolicyState;
HSPLcom/android/server/wm/AppCompatLetterboxPolicy;->shouldNotLayoutLetterbox(Lcom/android/server/wm/WindowState;)Z
HSPLcom/android/server/wm/AppCompatLetterboxPolicy;->shouldShowLetterboxUi(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatOrientationOverrides;Lcom/android/server/wm/AppCompatOrientationOverrides;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/AppCompatLetterboxPolicy;->start(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/AppCompatLetterboxPolicy$LetterboxPolicyState;Lcom/android/server/wm/AppCompatLetterboxPolicy$LetterboxPolicyState;]Lcom/android/server/wm/AppCompatLetterboxPolicy;Lcom/android/server/wm/AppCompatLetterboxPolicy;]Lcom/android/server/wm/AppCompatRoundedCorners;Lcom/android/server/wm/AppCompatRoundedCorners;
-HSPLcom/android/server/wm/AppCompatLetterboxPolicy;->updateLetterboxSurfaceIfNeeded(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/AppCompatLetterboxPolicy$LetterboxPolicyState;Lcom/android/server/wm/AppCompatLetterboxPolicy$LetterboxPolicyState;
+HSPLcom/android/server/wm/AppCompatLetterboxPolicy;->start(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/AppCompatLetterboxPolicy;Lcom/android/server/wm/AppCompatLetterboxPolicy;]Lcom/android/server/wm/AppCompatLetterboxPolicyState;Lcom/android/server/wm/AppCompatLetterboxPolicy$LegacyLetterboxPolicyState;]Lcom/android/server/wm/AppCompatRoundedCorners;Lcom/android/server/wm/AppCompatRoundedCorners;
+HSPLcom/android/server/wm/AppCompatLetterboxPolicy;->updateLetterboxSurfaceIfNeeded(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/AppCompatLetterboxPolicyState;Lcom/android/server/wm/AppCompatLetterboxPolicy$LegacyLetterboxPolicyState;
HSPLcom/android/server/wm/AppCompatLetterboxPolicy;->updateWallpaperForLetterbox(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatLetterboxOverrides;Lcom/android/server/wm/AppCompatLetterboxOverrides;
-HSPLcom/android/server/wm/AppCompatOrientationPolicy;->overrideOrientationIfNeeded(I)I+]Lcom/android/server/wm/AppCompatAspectRatioOverrides;Lcom/android/server/wm/AppCompatAspectRatioOverrides;]Lcom/android/server/wm/AppCompatCameraOverrides;Lcom/android/server/wm/AppCompatCameraOverrides;]Lcom/android/server/wm/AppCompatCameraPolicy;Lcom/android/server/wm/AppCompatCameraPolicy;]Lcom/android/server/wm/AppCompatOrientationOverrides;Lcom/android/server/wm/AppCompatOrientationOverrides;]Lcom/android/server/wm/AppCompatOverrides;Lcom/android/server/wm/AppCompatOverrides;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
-HSPLcom/android/server/wm/AppCompatReachabilityOverrides;->isHorizontalReachabilityEnabled()Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
-HSPLcom/android/server/wm/AppCompatReachabilityOverrides;->isHorizontalReachabilityEnabled(Landroid/content/res/Configuration;)Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatReachabilityOverrides;Lcom/android/server/wm/AppCompatReachabilityOverrides;]Lcom/android/server/wm/TransparentPolicy;Lcom/android/server/wm/TransparentPolicy;
-HSPLcom/android/server/wm/AppCompatReachabilityOverrides;->isVerticalReachabilityEnabled()Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
-HSPLcom/android/server/wm/AppCompatReachabilityOverrides;->isVerticalReachabilityEnabled(Landroid/content/res/Configuration;)Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatReachabilityOverrides;Lcom/android/server/wm/AppCompatReachabilityOverrides;]Lcom/android/server/wm/TransparentPolicy;Lcom/android/server/wm/TransparentPolicy;
+HSPLcom/android/server/wm/AppCompatOrientationOverrides;->getIsRelaunchingAfterRequestedOrientationChanged()Z
+HSPLcom/android/server/wm/AppCompatOrientationPolicy;->overrideOrientationIfNeeded(I)I+]Lcom/android/server/wm/AppCompatAspectRatioOverrides;Lcom/android/server/wm/AppCompatAspectRatioOverrides;]Lcom/android/server/wm/AppCompatCameraOverrides;Lcom/android/server/wm/AppCompatCameraOverrides;]Lcom/android/server/wm/AppCompatOrientationOverrides;Lcom/android/server/wm/AppCompatOrientationOverrides;]Lcom/android/server/wm/AppCompatOverrides;Lcom/android/server/wm/AppCompatOverrides;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
+HSPLcom/android/server/wm/AppCompatReachabilityOverrides$ReachabilityState;->isFromDoubleTap()Z
HSPLcom/android/server/wm/AppCompatRoundedCorners;->requiresRoundedCorners(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatLetterboxOverrides;Lcom/android/server/wm/AppCompatLetterboxOverrides;]Ljava/util/function/Predicate;Lcom/android/server/wm/AppCompatLetterboxPolicy$$ExternalSyntheticLambda0;
HSPLcom/android/server/wm/AppCompatRoundedCorners;->updateRoundedCornersIfNeeded(Lcom/android/server/wm/WindowState;)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/AppCompatRoundedCorners;Lcom/android/server/wm/AppCompatRoundedCorners;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/AppCompatSizeCompatModePolicy;->getAppCompatDisplayInsets()Lcom/android/server/wm/AppCompatDisplayInsets;+]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/TransparentPolicy;Lcom/android/server/wm/TransparentPolicy;
+HSPLcom/android/server/wm/AppCompatSizeCompatModePolicy;->getAppSizeCompatBoundsIfAvailable(Landroid/graphics/Rect;)Landroid/graphics/Rect;+]Lcom/android/server/wm/AppCompatSizeCompatModePolicy;Lcom/android/server/wm/AppCompatSizeCompatModePolicy;
HSPLcom/android/server/wm/AppCompatSizeCompatModePolicy;->hasSizeCompatBounds()Z
+HSPLcom/android/server/wm/AppCompatSizeCompatModePolicy;->isInSizeCompatModeForBounds()Z
HSPLcom/android/server/wm/AppCompatUtils;->clearAppCompatTaskInfo(Landroid/app/AppCompatTaskInfo;)V+]Landroid/app/AppCompatTaskInfo;Landroid/app/AppCompatTaskInfo;
-HSPLcom/android/server/wm/AppCompatUtils;->fillAppCompatTaskInfo(Lcom/android/server/wm/Task;Landroid/app/TaskInfo;Lcom/android/server/wm/ActivityRecord;)V+]Landroid/app/AppCompatTaskInfo;Landroid/app/AppCompatTaskInfo;]Lcom/android/server/wm/AppCompatAspectRatioOverrides;Lcom/android/server/wm/AppCompatAspectRatioOverrides;]Lcom/android/server/wm/AppCompatCameraOverrides;Lcom/android/server/wm/AppCompatCameraOverrides;]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatLetterboxOverrides;Lcom/android/server/wm/AppCompatLetterboxOverrides;]Lcom/android/server/wm/AppCompatReachabilityOverrides;Lcom/android/server/wm/AppCompatReachabilityOverrides;]Lcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;Lcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;
+HSPLcom/android/server/wm/AppCompatUtils;->fillAppCompatTaskInfo(Lcom/android/server/wm/Task;Landroid/app/TaskInfo;Lcom/android/server/wm/ActivityRecord;)V+]Landroid/app/AppCompatTaskInfo;Landroid/app/AppCompatTaskInfo;]Lcom/android/server/wm/AppCompatAspectRatioOverrides;Lcom/android/server/wm/AppCompatAspectRatioOverrides;]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatLetterboxOverrides;Lcom/android/server/wm/AppCompatLetterboxOverrides;]Lcom/android/server/wm/AppCompatLetterboxPolicy;Lcom/android/server/wm/AppCompatLetterboxPolicy;]Lcom/android/server/wm/AppCompatReachabilityOverrides;Lcom/android/server/wm/AppCompatReachabilityOverrides;]Lcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;Lcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;
HSPLcom/android/server/wm/AppCompatUtils;->getAppBounds(Lcom/android/server/wm/ActivityRecord;)Landroid/graphics/Rect;+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/TransparentPolicy;Lcom/android/server/wm/TransparentPolicy;
HSPLcom/android/server/wm/AppCompatUtils;->isChangeEnabled(Lcom/android/server/wm/ActivityRecord;J)Z+]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;
+HSPLcom/android/server/wm/AppTransition;->isRunning()Z
HSPLcom/android/server/wm/AppTransition;->isTransitionSet()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->finishNow()V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/BLASTSyncEngine$TransactionReadyListener;Lcom/android/server/wm/Transition;,Lcom/android/server/wm/WindowOrganizerController;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/lang/Runnable;Lcom/android/server/wm/TransitionController$$ExternalSyntheticLambda3;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda25;
+HSPLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->finishNow()V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/BLASTSyncEngine$TransactionReadyListener;Lcom/android/server/wm/Transition;,Lcom/android/server/wm/WindowOrganizerController;]Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/lang/Runnable;Lcom/android/server/wm/TransitionController$$ExternalSyntheticLambda3;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;
+HSPLcom/android/server/wm/BLASTSyncEngine;->getSyncSet(I)Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/BLASTSyncEngine;->onSurfacePlacement()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/BackNavigationController;->shouldPauseTouch(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/BackNavigationController$AnimationHandler;Lcom/android/server/wm/BackNavigationController$AnimationHandler;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;
HSPLcom/android/server/wm/BackgroundLaunchProcessController;->addBoundClientUid(ILjava/lang/String;J)V+]Landroid/util/IntArray;Landroid/util/IntArray;
HPLcom/android/server/wm/BackgroundLaunchProcessController;->areBackgroundActivityStartsAllowed(IILjava/lang/String;ILcom/android/server/wm/BackgroundLaunchProcessController$BalCheckConfiguration;ZZJJJ)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;
HSPLcom/android/server/wm/BackgroundLaunchProcessController;->clearBalOptInBoundClientUids()V+]Landroid/util/IntArray;Landroid/util/IntArray;
HPLcom/android/server/wm/BackgroundLaunchProcessController;->isBackgroundStartAllowedByToken(ILjava/lang/String;Z)Z+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Lcom/android/server/wm/BackgroundActivityStartCallback;Lcom/android/server/notification/NotificationManagerService$NotificationTrampolineCallback;]Ljava/util/List;Ljava/util/ArrayList;
-HPLcom/android/server/wm/BackgroundLaunchProcessController;->isBoundByForegroundUid()Z+]Landroid/util/IntArray;Landroid/util/IntArray;]Ljava/util/function/IntPredicate;Lcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda5;
+HPLcom/android/server/wm/BackgroundLaunchProcessController;->isBoundByForegroundUid()Z+]Landroid/util/IntArray;Landroid/util/IntArray;]Ljava/util/function/IntPredicate;Lcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda3;
HSPLcom/android/server/wm/BackgroundLaunchProcessController;->removeAllowBackgroundStartPrivileges(Landroid/os/Binder;)V
HSPLcom/android/server/wm/ClientLifecycleManager;->dispatchPendingTransactions()V+]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager;
-HSPLcom/android/server/wm/ClientLifecycleManager;->getOrCreatePendingTransaction(Landroid/app/IApplicationThread;)Landroid/app/servertransaction/ClientTransaction;+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;
+HSPLcom/android/server/wm/ClientLifecycleManager;->getOrCreatePendingTransaction(Landroid/app/IApplicationThread;)Landroid/app/servertransaction/ClientTransaction;+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;
HSPLcom/android/server/wm/ClientLifecycleManager;->shouldDispatchPendingTransactionsImmediately()Z+]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;
HSPLcom/android/server/wm/CompatModePackages;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;
HSPLcom/android/server/wm/CompatModePackages;->getCompatScaleFromProvider(Ljava/lang/String;I)Landroid/content/res/CompatibilityInfo$CompatScale;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/CompatScaleProvider;Lcom/android/server/app/GameManagerService$LocalService;
@@ -3658,39 +3784,37 @@ HSPLcom/android/server/wm/ConfigurationContainer;->hasChild()Z+]Lcom/android/ser
HSPLcom/android/server/wm/ConfigurationContainer;->inFreeformWindowingMode()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
HSPLcom/android/server/wm/ConfigurationContainer;->inMultiWindowMode()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
HSPLcom/android/server/wm/ConfigurationContainer;->inPinnedWindowingMode()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
-HSPLcom/android/server/wm/ConfigurationContainer;->isAlwaysOnTop()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
+HSPLcom/android/server/wm/ConfigurationContainer;->isActivityTypeStandardOrUndefined()Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/ConfigurationContainer;->isCompatible(II)Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/ConfigurationContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/ConfigurationContainerListener;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/ConfigurationContainer;->onMergedOverrideConfigurationChanged()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types
HSPLcom/android/server/wm/ConfigurationContainer;->updateRequestedOverrideConfiguration(Landroid/content/res/Configuration;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types
HSPLcom/android/server/wm/DeferredDisplayUpdater;->calculateDisplayInfoDiff(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)I
-HSPLcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;->getMinAspectRatio(Lcom/android/server/wm/Task;)F+]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Lcom/android/server/wm/AppCompatAspectRatioOverrides;Lcom/android/server/wm/AppCompatAspectRatioOverrides;]Lcom/android/server/wm/AppCompatCameraPolicy;Lcom/android/server/wm/AppCompatCameraPolicy;]Lcom/android/server/wm/AppCompatOverrides;Lcom/android/server/wm/AppCompatOverrides;]Lcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;Lcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;]Lcom/android/server/wm/TransparentPolicy;Lcom/android/server/wm/TransparentPolicy;
+HSPLcom/android/server/wm/DeferredDisplayUpdater;->updateDisplayInfo(Ljava/lang/Runnable;)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Ljava/lang/Runnable;Lcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda10;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda27;
+HSPLcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;->getMinAspectRatio(Lcom/android/server/wm/Task;)F+]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Lcom/android/server/wm/AppCompatAspectRatioOverrides;Lcom/android/server/wm/AppCompatAspectRatioOverrides;]Lcom/android/server/wm/AppCompatOverrides;Lcom/android/server/wm/AppCompatOverrides;]Lcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;Lcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;]Lcom/android/server/wm/TransparentPolicy;Lcom/android/server/wm/TransparentPolicy;
HSPLcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;->hasMinAspectRatioOverride(Lcom/android/server/wm/Task;)Z+]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;
-HSPLcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;->shouldEnableUserAspectRatioSettings(Lcom/android/server/wm/Task;)Z+]Lcom/android/server/wm/AppCompatAspectRatioOverrides;Lcom/android/server/wm/AppCompatAspectRatioOverrides;]Lcom/android/server/wm/AppCompatOverrides;Lcom/android/server/wm/AppCompatOverrides;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/DisplayArea$Dimmable;->prepareSurfaces()V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/DisplayArea$Dimmable;,Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/Dimmer;Lcom/android/server/wm/Dimmer;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayArea$Dimmable;,Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayArea$Dimmable;,Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;->shouldEnableUserAspectRatioSettings(Lcom/android/server/wm/Task;)Z+]Lcom/android/server/wm/AppCompatAspectRatioOverrides;Lcom/android/server/wm/AppCompatAspectRatioOverrides;]Lcom/android/server/wm/AppCompatOverrides;Lcom/android/server/wm/AppCompatOverrides;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/Dimmer;->hasDimState()Z
+HSPLcom/android/server/wm/Dimmer;->resetDimStates()V
+HSPLcom/android/server/wm/DisplayArea$Dimmable;->prepareSurfaces()V+]Lcom/android/server/wm/Dimmer;Lcom/android/server/wm/Dimmer;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayArea$Dimmable;,Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/DisplayArea$Tokens;->getOrientation(I)I+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayArea$Tokens;
HSPLcom/android/server/wm/DisplayArea$Tokens;->lambda$new$0(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/DisplayArea;->asDisplayArea()Lcom/android/server/wm/DisplayArea;
HSPLcom/android/server/wm/DisplayArea;->forAllLeafTasks(Ljava/util/function/Consumer;Z)V
-HSPLcom/android/server/wm/DisplayArea;->getIgnoreOrientationRequest()Z+]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
HSPLcom/android/server/wm/DisplayArea;->getItemFromTaskDisplayAreas(Ljava/util/function/Function;Z)Ljava/lang/Object;+]Lcom/android/server/wm/DisplayArea;megamorphic_types]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/DisplayArea;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;
HSPLcom/android/server/wm/DisplayArea;->getRootTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/DisplayArea;->getSyncTransaction()Landroid/view/SurfaceControl$Transaction;
HSPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/wm/DisplayContent;Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Region;[ILandroid/graphics/Region;Landroid/graphics/Region;)V
HSPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda12;->accept(Ljava/lang/Object;)V
HSPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;)Z
-HSPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda34;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda35;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda41;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda44;->accept(Ljava/lang/Object;)V
HSPLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;->reset()V
HSPLcom/android/server/wm/DisplayContent$ImeContainer;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
-HSPLcom/android/server/wm/DisplayContent$ImeContainer;->skipImeWindowsDuringTraversal(Lcom/android/server/wm/DisplayContent;)Z
HPLcom/android/server/wm/DisplayContent;->addToGlobalAndConsumeLimit(Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Rect;ILcom/android/server/wm/WindowState;I)I+]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/DisplayContent;->adjustDisplaySizeRanges(Landroid/view/DisplayInfo;IIIZ)V+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;
HSPLcom/android/server/wm/DisplayContent;->applySurfaceChangesTransaction()V+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayRotation;Lcom/android/server/wm/DisplayRotation;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WallpaperVisibilityListeners;Lcom/android/server/wm/WallpaperVisibilityListeners;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;]Ljava/util/LinkedList;Ljava/util/LinkedList;
HSPLcom/android/server/wm/DisplayContent;->assignRelativeLayerForIme(Landroid/view/SurfaceControl$Transaction;Z)V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent$ImeContainer;]Lcom/android/server/wm/DisplayContent$ImeContainer;Lcom/android/server/wm/DisplayContent$ImeContainer;]Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/DisplayContent$RemoteInsetsControlTarget;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/DisplayContent;->calculateSystemGestureExclusion(Landroid/graphics/Region;Landroid/graphics/Region;)Z+]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
-HSPLcom/android/server/wm/DisplayContent;->computeSizeRanges(Landroid/view/DisplayInfo;ZIIFLandroid/content/res/Configuration;Z)V
+HSPLcom/android/server/wm/DisplayContent;->calculateSystemGestureExclusion(Landroid/graphics/Region;Landroid/graphics/Region;)Z+]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;
HSPLcom/android/server/wm/DisplayContent;->finishHoldScreenUpdate()V
HSPLcom/android/server/wm/DisplayContent;->getAsyncRotationController()Lcom/android/server/wm/AsyncRotationController;
HSPLcom/android/server/wm/DisplayContent;->getDefaultTaskDisplayArea()Lcom/android/server/wm/TaskDisplayArea;+]Lcom/android/server/wm/DisplayAreaPolicy;Lcom/android/server/wm/DisplayAreaPolicyBuilder$Result;
@@ -3698,28 +3822,38 @@ HSPLcom/android/server/wm/DisplayContent;->getDisplayId()I
HSPLcom/android/server/wm/DisplayContent;->getDisplayInfo()Landroid/view/DisplayInfo;
HSPLcom/android/server/wm/DisplayContent;->getDisplayPolicy()Lcom/android/server/wm/DisplayPolicy;
HSPLcom/android/server/wm/DisplayContent;->getImeTarget(I)Lcom/android/server/wm/InsetsControlTarget;
+HSPLcom/android/server/wm/DisplayContent;->getInputMonitor()Lcom/android/server/wm/InputMonitor;
HSPLcom/android/server/wm/DisplayContent;->getInsetsPolicy()Lcom/android/server/wm/InsetsPolicy;
-HSPLcom/android/server/wm/DisplayContent;->getKeepClearAreas(Ljava/util/Set;Ljava/util/Set;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
+HSPLcom/android/server/wm/DisplayContent;->getInsetsStateController()Lcom/android/server/wm/InsetsStateController;
+HSPLcom/android/server/wm/DisplayContent;->getKeepClearAreas(Ljava/util/Set;Ljava/util/Set;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;
HSPLcom/android/server/wm/DisplayContent;->getOrientation()I+]Lcom/android/server/wm/AppCompatCameraPolicy;Lcom/android/server/wm/AppCompatCameraPolicy;]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatOrientationOverrides;Lcom/android/server/wm/AppCompatOrientationOverrides;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/DisplayContent;->handleCompleteDeferredRemoval()Z+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
HSPLcom/android/server/wm/DisplayContent;->hasOwnFocus()Z
-HSPLcom/android/server/wm/DisplayContent;->isKeyguardGoingAway()Z+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/KeyguardController;
-HSPLcom/android/server/wm/DisplayContent;->lambda$calculateSystemGestureExclusion$34(Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Region;[ILandroid/graphics/Region;Landroid/graphics/Region;Lcom/android/server/wm/WindowState;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/DisplayContent;->lambda$getKeepClearAreas$37(Ljava/util/Set;Ljava/util/Set;Landroid/graphics/Matrix;[FLcom/android/server/wm/WindowState;)Z+]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/DisplayContent;->isLayoutNeeded()Z
HSPLcom/android/server/wm/DisplayContent;->lambda$new$1(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/DisplayContent;->lambda$new$3(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/DisplayContent;->lambda$new$4(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/DisplayContent;->lambda$new$7(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/DisplayContent;->lambda$new$8(Lcom/android/server/wm/WindowState;)V+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/RefreshRatePolicy;Lcom/android/server/wm/RefreshRatePolicy;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Ljava/util/LinkedList;Ljava/util/LinkedList;
-HSPLcom/android/server/wm/DisplayContent;->makeChildSurface(Lcom/android/server/wm/WindowContainer;)Landroid/view/SurfaceControl$Builder;+]Landroid/view/SurfaceControl$Builder;Landroid/view/SurfaceControl$Builder;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
+HSPLcom/android/server/wm/DisplayContent;->makeChildSurface(Lcom/android/server/wm/WindowContainer;)Landroid/view/SurfaceControl$Builder;+]Landroid/view/SurfaceControl$Builder;Landroid/view/SurfaceControl$Builder;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
HSPLcom/android/server/wm/DisplayContent;->needsGestureExclusionRestrictions(Lcom/android/server/wm/WindowState;Z)Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/DisplayContent;->onDisplayInfoUpdated(Landroid/view/DisplayInfo;)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowContextListenerController;Lcom/android/server/wm/WindowContextListenerController;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
HSPLcom/android/server/wm/DisplayContent;->performLayout(ZZ)V
HSPLcom/android/server/wm/DisplayContent;->performLayoutNoTrace(ZZ)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;
HSPLcom/android/server/wm/DisplayContent;->prepareSurfaces()V
-HSPLcom/android/server/wm/DisplayContent;->setDisplayMirroring()Z+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;
+HSPLcom/android/server/wm/DisplayContent;->setDisplayMirroring()Z+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
+HSPLcom/android/server/wm/DisplayContent;->shouldDeferRemoval()Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;
HSPLcom/android/server/wm/DisplayContent;->shouldImeAttachedToApp()Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/DisplayContent$ImeContainer;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent$ImeContainer;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/DisplayContent;->toString()Ljava/lang/String;
+HSPLcom/android/server/wm/DisplayContent;->updateBaseDisplayMetricsIfNeeded(Landroid/view/DisplayInfo;)V+]Lcom/android/server/wm/DeferredDisplayUpdater;Lcom/android/server/wm/DeferredDisplayUpdater;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayRotation;Lcom/android/server/wm/DisplayRotation;]Lcom/android/server/wm/DisplayWindowSettings;Lcom/android/server/wm/DisplayWindowSettings;
+HSPLcom/android/server/wm/DisplayContent;->updateDisplayInfo(Landroid/view/DisplayInfo;)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/DisplayContent;->updateFocusedWindowLocked(IZI)Z+]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/DisplayContent;->updateKeepClearAreas()V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayWindowListenerController;Lcom/android/server/wm/DisplayWindowListenerController;]Ljava/util/Set;Landroid/util/ArraySet;
-HSPLcom/android/server/wm/DisplayContent;->updateOrientation(Z)Z+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayRotation;Lcom/android/server/wm/DisplayRotation;]Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/TaskDisplayArea;,Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/DisplayContent;->updateOrientation(Z)Z+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayRotation;Lcom/android/server/wm/DisplayRotation;]Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController;]Lcom/android/server/wm/WindowContainer;megamorphic_types
+HSPLcom/android/server/wm/DisplayContent;->updateRecording()V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
HSPLcom/android/server/wm/DisplayContent;->updateSystemGestureExclusion()Z+]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Landroid/view/ISystemGestureExclusionListener;Landroid/view/ISystemGestureExclusionListener$Stub$Proxy;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/DisplayContent;->updateWindowsForAnimator()V+]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/DisplayFrames;->update(IIILandroid/view/DisplayCutout;Landroid/view/RoundedCorners;Landroid/view/PrivacyIndicatorBounds;Landroid/view/DisplayShape;)Z+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/PrivacyIndicatorBounds;Landroid/view/PrivacyIndicatorBounds;]Landroid/view/RoundedCorners;Landroid/view/RoundedCorners;
HPLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda13;->test(Ljava/lang/Object;)Z
HSPLcom/android/server/wm/DisplayPolicy;->adjustWindowParamsLw(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;)V+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
@@ -3727,6 +3861,7 @@ HSPLcom/android/server/wm/DisplayPolicy;->applyKeyguardPolicy(Lcom/android/serve
HSPLcom/android/server/wm/DisplayPolicy;->applyPostLayoutPolicyLw(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatLetterboxPolicy;Lcom/android/server/wm/AppCompatLetterboxPolicy;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/DisplayPolicy;->beginPostLayoutPolicyLw()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/wm/DisplayPolicy;->calculateInsetsFrame(Landroid/graphics/Rect;Landroid/graphics/Insets;)V
+HSPLcom/android/server/wm/DisplayPolicy;->chooseNavigationBackgroundWindow(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;Z)Lcom/android/server/wm/WindowState;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/DisplayPolicy;->configureNavBarOpacity(IZZ)I+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;
HSPLcom/android/server/wm/DisplayPolicy;->configureStatusBarOpacity(I)I+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/DisplayPolicy;->drawsBarBackground(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
@@ -3736,72 +3871,87 @@ HSPLcom/android/server/wm/DisplayPolicy;->getInsetsPolicy()Lcom/android/server/w
HSPLcom/android/server/wm/DisplayPolicy;->getNotificationShade()Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/DisplayPolicy;->getRefreshRatePolicy()Lcom/android/server/wm/RefreshRatePolicy;
HSPLcom/android/server/wm/DisplayPolicy;->getStatusBarManagerInternal()Lcom/android/server/statusbar/StatusBarManagerInternal;
+HPLcom/android/server/wm/DisplayPolicy;->hasBottomNavigationBar()Z
HSPLcom/android/server/wm/DisplayPolicy;->intersectsAnyInsets(Landroid/graphics/Rect;Landroid/view/InsetsState;I)Z+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;
+HSPLcom/android/server/wm/DisplayPolicy;->isFullyTransparentAllowed(Lcom/android/server/wm/WindowState;I)Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/DisplayPolicy;->isImmersiveMode(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;
HSPLcom/android/server/wm/DisplayPolicy;->isKeyguardShowing()Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;
+HPLcom/android/server/wm/DisplayPolicy;->isLightBarAllowed(Lcom/android/server/wm/WindowState;I)Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/DisplayPolicy;->isOverlappingWithNavBar(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HPLcom/android/server/wm/DisplayPolicy;->lambda$getFrameProvider$1(Lcom/android/server/wm/WindowState;IILcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowContainer;Landroid/graphics/Rect;)Ljava/lang/Integer;+]Landroid/view/InsetsFrameProvider$InsetsSizeOverride;Landroid/view/InsetsFrameProvider$InsetsSizeOverride;]Landroid/view/InsetsFrameProvider;Landroid/view/InsetsFrameProvider;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;
-HSPLcom/android/server/wm/DisplayPolicy;->lambda$updateSystemBarsLw$8(Lcom/android/server/wm/Task;)Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/DisplayPolicy;->layoutWindowLw(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;Lcom/android/server/wm/DisplayFrames;)V+]Landroid/view/WindowLayout;Landroid/view/WindowLayout;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/DisplayPolicy;->shouldBeHiddenByKeyguard(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/DisplayPolicy;->topAppHidesSystemBar(I)Z+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/DisplayPolicy;->updateLightNavigationBarLw(ILcom/android/server/wm/WindowState;)I
HSPLcom/android/server/wm/DisplayPolicy;->updateSystemBarAttributes()V+]Lcom/android/server/input/InputManagerService;Lcom/android/server/input/InputManagerService;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/DisplayPolicy;->updateSystemBarsLw(Lcom/android/server/wm/WindowState;I)I+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/statusbar/StatusBarManagerInternal;Lcom/android/server/statusbar/StatusBarManagerService$1;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/ImmersiveModeConfirmation;Lcom/android/server/wm/ImmersiveModeConfirmation;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/DisplayPolicy;->updateSystemBarsLw(Lcom/android/server/wm/WindowState;I)I+]Lcom/android/server/statusbar/StatusBarManagerInternal;Lcom/android/server/statusbar/StatusBarManagerService$1;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->process(Lcom/android/server/wm/ActivityRecord;Z)V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/EnsureActivitiesVisibleHelper;Lcom/android/server/wm/EnsureActivitiesVisibleHelper;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->reset(Lcom/android/server/wm/ActivityRecord;Z)V+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
HSPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->setActivityVisibilityState(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Z)V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
HSPLcom/android/server/wm/HighRefreshRateDenylist;->isDenylisted(Ljava/lang/String;)Z
+HPLcom/android/server/wm/ImeInsetsSourceProvider;->onPostLayout()V+]Landroid/view/inputmethod/ImeTracker;Landroid/view/inputmethod/ImeTracker$1;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
HPLcom/android/server/wm/ImeInsetsSourceProvider;->onSourceChanged()V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
HPLcom/android/server/wm/ImeInsetsSourceProvider;->setServerVisible(Z)V
+HPLcom/android/server/wm/ImeInsetsSourceProvider;->updateVisibility()V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
HSPLcom/android/server/wm/InputConfigAdapter;->applyMapping(I[Lcom/android/server/wm/InputConfigAdapter$FlagMapping;)I
HSPLcom/android/server/wm/InputConfigAdapter;->getInputConfigFromWindowParams(III)I
-HSPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->accept(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/InputConsumerImpl;Lcom/android/server/wm/InputConsumerImpl;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Ljava/util/Map;Ljava/util/Collections$SynchronizedMap;
+HSPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->accept(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DragDropController;Lcom/android/server/wm/DragDropController;]Lcom/android/server/wm/InputConsumerImpl;Lcom/android/server/wm/InputConsumerImpl;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Ljava/util/Map;Ljava/util/Collections$SynchronizedMap;
HSPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->updateInputWindows(Z)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InputConsumerImpl;Lcom/android/server/wm/InputConsumerImpl;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->updateInputWindows(Z)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InputConsumerImpl;Lcom/android/server/wm/InputConsumerImpl;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/InputMonitor$UpdateInputWindows;->run()V+]Lcom/android/server/wm/DragDropController;Lcom/android/server/wm/DragDropController;
HSPLcom/android/server/wm/InputMonitor;->getInputConsumer(Ljava/lang/String;)Lcom/android/server/wm/InputConsumerImpl;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/InputMonitor;->populateInputWindowHandle(Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/WindowState;)V+]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;,Landroid/view/ViewRootImpl$W;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/InputMonitor;->populateInputWindowHandle(Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/WindowState;)V+]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;,Landroid/view/ViewRootImpl$W;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/InputMonitor;->resetInputConsumers(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/InputConsumerImpl;Lcom/android/server/wm/InputConsumerImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/InputMonitor;->scheduleUpdateInputWindows()V
-HSPLcom/android/server/wm/InputMonitor;->updateInputFocusRequest(Lcom/android/server/wm/InputConsumerImpl;)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/inputmethod/InputMethodManagerInternal;Lcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InputTarget;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;
+HSPLcom/android/server/wm/InputMonitor;->updateInputFocusRequest(Lcom/android/server/wm/InputConsumerImpl;)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/inputmethod/InputMethodManagerInternal;Lcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InputTarget;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;
HSPLcom/android/server/wm/InputWindowHandleWrapper;->hasWallpaper()Z
HSPLcom/android/server/wm/InputWindowHandleWrapper;->isFocusable()Z
HSPLcom/android/server/wm/InputWindowHandleWrapper;->isPaused()Z
HSPLcom/android/server/wm/InputWindowHandleWrapper;->setDispatchingTimeoutMillis(J)V
+HSPLcom/android/server/wm/InputWindowHandleWrapper;->setFocusable(Z)V+]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;
+HSPLcom/android/server/wm/InputWindowHandleWrapper;->setInputApplicationHandle(Landroid/view/InputApplicationHandle;)V
HSPLcom/android/server/wm/InputWindowHandleWrapper;->setInputConfigMasked(II)V
HSPLcom/android/server/wm/InputWindowHandleWrapper;->setLayoutParamsFlags(I)V
HSPLcom/android/server/wm/InputWindowHandleWrapper;->setName(Ljava/lang/String;)V
+HSPLcom/android/server/wm/InputWindowHandleWrapper;->setPaused(Z)V+]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;
+HSPLcom/android/server/wm/InputWindowHandleWrapper;->setReplaceTouchableRegionWithCrop(Z)V
HSPLcom/android/server/wm/InputWindowHandleWrapper;->setScaleFactor(F)V
+HSPLcom/android/server/wm/InputWindowHandleWrapper;->setSurfaceInset(I)V
HSPLcom/android/server/wm/InputWindowHandleWrapper;->setToken(Landroid/os/IBinder;)V
HSPLcom/android/server/wm/InputWindowHandleWrapper;->setTouchOcclusionMode(I)V
HSPLcom/android/server/wm/InputWindowHandleWrapper;->setTouchableRegion(Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;
HSPLcom/android/server/wm/InputWindowHandleWrapper;->setTouchableRegionCrop(Landroid/view/SurfaceControl;)V+]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;
HSPLcom/android/server/wm/InputWindowHandleWrapper;->setWindowToken(Landroid/os/IBinder;)V
+HSPLcom/android/server/wm/InsetsPolicy$BarWindow;->updateVisibility(Lcom/android/server/wm/InsetsControlTarget;I)V+]Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsPolicy$ControlTarget;,Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/InsetsPolicy;->adjustInsetsForRoundedCorners(Lcom/android/server/wm/WindowToken;Landroid/view/InsetsState;Z)Landroid/view/InsetsState;+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;
HSPLcom/android/server/wm/InsetsPolicy;->adjustInsetsForWindow(Lcom/android/server/wm/WindowState;Landroid/view/InsetsState;Z)Landroid/view/InsetsState;
HSPLcom/android/server/wm/InsetsPolicy;->adjustVisibilityForFakeControllingSources(Landroid/view/InsetsState;)Landroid/view/InsetsState;+]Landroid/view/InsetsState;Landroid/view/InsetsState;
HSPLcom/android/server/wm/InsetsPolicy;->adjustVisibilityForIme(Lcom/android/server/wm/WindowState;Landroid/view/InsetsState;Z)Landroid/view/InsetsState;+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/InsetsPolicy;->canBeTopFullscreenOpaqueWindow(Lcom/android/server/wm/WindowState;)Z+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/InsetsPolicy;->enforceInsetsPolicyForTarget(Landroid/view/WindowManager$LayoutParams;IZLandroid/view/InsetsState;)Landroid/view/InsetsState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsFrameProvider;Landroid/view/InsetsFrameProvider;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
-HSPLcom/android/server/wm/InsetsPolicy;->getNavControlTarget(Lcom/android/server/wm/WindowState;Z)Lcom/android/server/wm/InsetsControlTarget;+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/InsetsPolicy;->enforceInsetsPolicyForTarget(Lcom/android/server/wm/WindowState;Landroid/view/InsetsState;)Landroid/view/InsetsState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsFrameProvider;Landroid/view/InsetsFrameProvider;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/InsetsPolicy;->forceShowingNavigationBars(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;
+HSPLcom/android/server/wm/InsetsPolicy;->getNavControlTarget(Lcom/android/server/wm/WindowState;Z)Lcom/android/server/wm/InsetsControlTarget;+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/InsetsPolicy;->getStatusControlTarget(Lcom/android/server/wm/WindowState;Z)Lcom/android/server/wm/InsetsControlTarget;+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/InsetsPolicy;->hasHiddenSources(I)Z+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
+HSPLcom/android/server/wm/InsetsPolicy;->remoteInsetsControllerControlsSystemBars(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;
HSPLcom/android/server/wm/InsetsPolicy;->updateBarControlTarget(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
HSPLcom/android/server/wm/InsetsPolicy;->updateSystemBars(Lcom/android/server/wm/WindowState;ZZ)V+]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
HPLcom/android/server/wm/InsetsSourceProvider;->getInsetsHint()Landroid/graphics/Insets;+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/InsetsSourceProvider;->getSource()Landroid/view/InsetsSource;
+HPLcom/android/server/wm/InsetsSourceProvider;->getSource()Landroid/view/InsetsSource;
HPLcom/android/server/wm/InsetsSourceProvider;->getWindowFrameSurfacePosition()Landroid/graphics/Point;+]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HPLcom/android/server/wm/InsetsSourceProvider;->isClientVisible()Z
-HSPLcom/android/server/wm/InsetsSourceProvider;->onPostLayout()V+]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/InsetsSourceProvider;->overridesFrame(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/wm/InsetsSourceProvider;->onPostLayout()V+]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/InsetsSourceProvider;->overridesFrame(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HPLcom/android/server/wm/InsetsSourceProvider;->setServerVisible(Z)V+]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;
+HPLcom/android/server/wm/InsetsSourceProvider;->updateControlForTarget(Lcom/android/server/wm/InsetsControlTarget;ZLandroid/view/inputmethod/ImeTracker$Token;)V+]Landroid/graphics/Point;Landroid/graphics/Point;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/DisplayContent$RemoteInsetsControlTarget;,Lcom/android/server/wm/InsetsStateController$1;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/DisplayArea;,Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/InsetsSourceProvider;->updateInsetsControlPosition(Lcom/android/server/wm/WindowState;)Z+]Landroid/graphics/Point;Landroid/graphics/Point;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Ljava/util/function/Consumer;Lcom/android/server/wm/InsetsSourceProvider$$ExternalSyntheticLambda0;
+HPLcom/android/server/wm/InsetsSourceProvider;->updateInsetsHint()Z+]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;
HPLcom/android/server/wm/InsetsSourceProvider;->updateSourceFrame(Landroid/graphics/Rect;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/internal/util/function/TriFunction;Lcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda0;,Lcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda11;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
HPLcom/android/server/wm/InsetsSourceProvider;->updateSourceFrameForServerVisibility()V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;
HPLcom/android/server/wm/InsetsSourceProvider;->updateVisibility()V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
-HSPLcom/android/server/wm/InsetsStateController;->getImeSourceProvider()Lcom/android/server/wm/ImeInsetsSourceProvider;+]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
-HSPLcom/android/server/wm/InsetsStateController;->getOrCreateSourceProvider(II)Lcom/android/server/wm/InsetsSourceProvider;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;
+HPLcom/android/server/wm/InsetsStateController;->getImeSourceProvider()Lcom/android/server/wm/ImeInsetsSourceProvider;+]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
+HPLcom/android/server/wm/InsetsStateController;->getOrCreateSourceProvider(II)Lcom/android/server/wm/InsetsSourceProvider;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;
HSPLcom/android/server/wm/InsetsStateController;->getRawInsetsState()Landroid/view/InsetsState;
+HPLcom/android/server/wm/InsetsStateController;->lambda$notifyPendingInsetsControlChanged$4(ILandroid/util/SparseLongArray;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/DisplayContent$RemoteInsetsControlTarget;,Lcom/android/server/wm/InsetsPolicy$ControlTarget;,Lcom/android/server/wm/InsetsStateController$1;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/InsetsStateController;->notifyPendingInsetsControlChanged()V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator;
HSPLcom/android/server/wm/InsetsStateController;->onBarControlTargetChanged(Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsControlTarget;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;
HPLcom/android/server/wm/InsetsStateController;->onControlTargetChanged(Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsControlTarget;Z)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;
@@ -3811,107 +3961,137 @@ HSPLcom/android/server/wm/KeyguardController;->getDisplayState(I)Lcom/android/se
HSPLcom/android/server/wm/KeyguardController;->updateVisibility()V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/RootWindowContainer;
HSPLcom/android/server/wm/MirrorActiveUids;->hasNonAppVisibleWindow(I)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HSPLcom/android/server/wm/MirrorActiveUids;->onUidProcStateChanged(II)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
-HPLcom/android/server/wm/PointerEventDispatcher;->onInputEvent(Landroid/view/InputEvent;)V+]Landroid/view/WindowManagerPolicyConstants$PointerEventListener;Lcom/android/internal/widget/PointerLocationView;,Lcom/android/server/wm/RecentTasks$1;,Lcom/android/server/wm/SystemGesturesPointerEventListener;
+HPLcom/android/server/wm/PointerEventDispatcher;->onInputEvent(Landroid/view/InputEvent;)V+]Landroid/view/WindowManagerPolicyConstants$PointerEventListener;Lcom/android/server/wm/RecentTasks$1;,Lcom/android/server/wm/SystemGesturesPointerEventListener;
HSPLcom/android/server/wm/RecentTasks;->isCallerRecents(I)Z
+HSPLcom/android/server/wm/RefreshRatePolicy$FrameRateVote;->refreshRateEquals(F)Z
HSPLcom/android/server/wm/RefreshRatePolicy$FrameRateVote;->update(FII)Z
HSPLcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;->get(Ljava/lang/String;)Landroid/view/SurfaceControl$RefreshRateRange;+]Ljava/util/HashMap;Ljava/util/HashMap;
+HSPLcom/android/server/wm/RefreshRatePolicy;->calculatePriority(Lcom/android/server/wm/WindowState;)I+]Lcom/android/server/wm/RefreshRatePolicy;Lcom/android/server/wm/RefreshRatePolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/RefreshRatePolicy;->getPreferredMaxRefreshRate(Lcom/android/server/wm/WindowState;)F+]Lcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;Lcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/RefreshRatePolicy;->getPreferredMinRefreshRate(Lcom/android/server/wm/WindowState;)F+]Lcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;Lcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/RefreshRatePolicy;->getPreferredModeId(Lcom/android/server/wm/WindowState;)I
HSPLcom/android/server/wm/RefreshRatePolicy;->updateFrameRateVote(Lcom/android/server/wm/WindowState;)Z+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Lcom/android/server/wm/HighRefreshRateDenylist;Lcom/android/server/wm/HighRefreshRateDenylist;]Lcom/android/server/wm/RefreshRatePolicy$FrameRateVote;Lcom/android/server/wm/RefreshRatePolicy$FrameRateVote;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/RootWindowContainer$MyHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
+HSPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda23;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/RootWindowContainer$MyHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
+HSPLcom/android/server/wm/RootWindowContainer;->$r8$lambda$cnDv250HlSET-GBlf9zK0KW0JGk(Lcom/android/server/wm/DisplayContent;)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
HSPLcom/android/server/wm/RootWindowContainer;->applySurfaceChangesTransaction()V+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/StrictModeFlash;Lcom/android/server/wm/StrictModeFlash;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/RootWindowContainer;->checkAppTransitionReady(Lcom/android/server/wm/WindowSurfacePlacer;)V+]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;]Lcom/android/server/wm/AppTransitionController;Lcom/android/server/wm/AppTransitionController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/RootWindowContainer;->clearFrameChangingWindows()V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/RootWindowContainer;->copyAnimToLayoutParams()Z
HSPLcom/android/server/wm/RootWindowContainer;->forAllDisplays(Ljava/util/function/Consumer;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Consumer;megamorphic_types
HSPLcom/android/server/wm/RootWindowContainer;->getDisplayContent(I)Lcom/android/server/wm/DisplayContent;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/RootWindowContainer;
HPLcom/android/server/wm/RootWindowContainer;->getRootTaskInfo(Lcom/android/server/wm/Task;)Landroid/app/ActivityTaskManager$RootTaskInfo;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/RootWindowContainer;->handleNotObscuredLocked(Lcom/android/server/wm/WindowState;ZZ)Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/RootWindowContainer;->handleNotObscuredLocked(Lcom/android/server/wm/WindowState;ZZ)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/RootWindowContainer;->handleResizingWindows()V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/RootWindowContainer;->hasPendingLayoutChanges(Lcom/android/server/wm/WindowAnimator;)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/RootWindowContainer;->isLayoutNeeded()Z+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/RootWindowContainer;->lambda$performSurfacePlacementNoTrace$7(Lcom/android/server/wm/DisplayContent;)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
HSPLcom/android/server/wm/RootWindowContainer;->performSurfacePlacement()V+]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
-HSPLcom/android/server/wm/RootWindowContainer;->performSurfacePlacementNoTrace()V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/BLASTSyncEngine;Lcom/android/server/wm/BLASTSyncEngine;]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/TaskFragmentOrganizerController;Lcom/android/server/wm/TaskFragmentOrganizerController;]Lcom/android/server/wm/TaskOrganizerController;Lcom/android/server/wm/TaskOrganizerController;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/RootWindowContainer;->performSurfacePlacementNoTrace()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/BLASTSyncEngine;Lcom/android/server/wm/BLASTSyncEngine;]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/TaskFragmentOrganizerController;Lcom/android/server/wm/TaskFragmentOrganizerController;]Lcom/android/server/wm/TaskOrganizerController;Lcom/android/server/wm/TaskOrganizerController;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/RootWindowContainer;->updateFocusedWindowLocked(IZ)Z+]Lcom/android/server/input/InputManagerService;Lcom/android/server/input/InputManagerService;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/wm/RunningTasks;->accept(Lcom/android/server/wm/Task;)V+]Lcom/android/server/wm/RecentTasks;Lcom/android/server/wm/RecentTasks;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/wm/RunningTasks;->createRunningTaskInfo(Lcom/android/server/wm/Task;J)Landroid/app/ActivityManager$RunningTaskInfo;+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
-HPLcom/android/server/wm/RunningTasks;->getTasks(ILjava/util/List;ILcom/android/server/wm/RecentTasks;Lcom/android/server/wm/WindowContainer;ILandroid/util/ArraySet;)V+]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/SafeActivityOptions;-><init>(Landroid/app/ActivityOptions;)V
+HSPLcom/android/server/wm/RunningTasks;->accept(Lcom/android/server/wm/Task;)V+]Lcom/android/server/wm/RecentTasks;Lcom/android/server/wm/RecentTasks;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/RunningTasks;->createRunningTaskInfo(Lcom/android/server/wm/Task;J)Landroid/app/ActivityManager$RunningTaskInfo;+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/RunningTasks;->getTasks(ILjava/util/List;ILcom/android/server/wm/RecentTasks;Lcom/android/server/wm/WindowContainer;ILandroid/util/ArraySet;)V+]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/wm/Session;->setWallpaperZoomOut(Landroid/os/IBinder;F)V
+HSPLcom/android/server/wm/SurfaceAnimator;->cancelAnimation(Landroid/view/SurfaceControl$Transaction;ZZ)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/AnimationAdapter;megamorphic_types]Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;Lcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda5;,Lcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda6;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
HPLcom/android/server/wm/SurfaceAnimator;->createAnimationLeash(Lcom/android/server/wm/SurfaceAnimator$Animatable;Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;IIIIIZLjava/util/function/Supplier;)Landroid/view/SurfaceControl;+]Landroid/view/SurfaceControl$Builder;Landroid/view/SurfaceControl$Builder;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/SurfaceAnimator$Animatable;megamorphic_types
+HSPLcom/android/server/wm/SurfaceAnimator;->hasLeash()Z
HSPLcom/android/server/wm/SurfaceAnimator;->isAnimating()Z
+HSPLcom/android/server/wm/SurfaceAnimator;->reset(Landroid/view/SurfaceControl$Transaction;Z)V+]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
HPLcom/android/server/wm/SurfaceAnimator;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;Ljava/lang/Runnable;Lcom/android/server/wm/AnimationAdapter;Lcom/android/server/wm/SurfaceFreezer;)V+]Lcom/android/server/wm/AnimationAdapter;megamorphic_types]Lcom/android/server/wm/SurfaceAnimator$Animatable;megamorphic_types]Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator;]Lcom/android/server/wm/SurfaceFreezer;Lcom/android/server/wm/SurfaceFreezer;
HSPLcom/android/server/wm/SynchedDeviceConfig;->getFlagValue(Ljava/lang/String;)Z+]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;
-HPLcom/android/server/wm/SystemGesturesPointerEventListener;->detectSwipe(IJFF)I
+HPLcom/android/server/wm/SystemGesturesPointerEventListener;->detectSwipe(Landroid/view/MotionEvent;)I
HSPLcom/android/server/wm/SystemGesturesPointerEventListener;->onConfigurationChanged()V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;
HPLcom/android/server/wm/SystemGesturesPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;)V+]Landroid/view/GestureDetector;Lcom/android/server/wm/SystemGesturesPointerEventListener$1;]Lcom/android/server/wm/SystemGesturesPointerEventListener$Callbacks;Lcom/android/server/wm/DisplayPolicy$1;
+HSPLcom/android/server/wm/Task$$ExternalSyntheticLambda14;->test(Ljava/lang/Object;)Z
HSPLcom/android/server/wm/Task$FindRootHelper;->findRoot(ZZ)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/Task$FindRootHelper;->test(Lcom/android/server/wm/ActivityRecord;)Z+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;
HSPLcom/android/server/wm/Task$FindRootHelper;->test(Ljava/lang/Object;)Z+]Lcom/android/server/wm/Task$FindRootHelper;Lcom/android/server/wm/Task$FindRootHelper;
HSPLcom/android/server/wm/Task;->asTask()Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/Task;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/TrustedOverlayHost;Lcom/android/server/wm/TrustedOverlayHost;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/Task;->checkTranslucentActivityWaiting(Lcom/android/server/wm/ActivityRecord;)V+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/Task;->cropWindowsToRootTaskBounds()Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/Task;->fillTaskInfo(Landroid/app/TaskInfo;ZLcom/android/server/wm/TaskDisplayArea;)V+]Landroid/app/TaskInfo;Landroid/app/ActivityManager$RecentTaskInfo;,Landroid/app/ActivityManager$RunningTaskInfo;,Landroid/app/ActivityTaskManager$RootTaskInfo;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;Lcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer$RemoteToken;Lcom/android/server/wm/WindowContainer$RemoteToken;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/Task;->fillTaskInfo(Landroid/app/TaskInfo;Z)V+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/Task;->fillTaskInfo(Landroid/app/TaskInfo;ZLcom/android/server/wm/TaskDisplayArea;)V+]Landroid/app/TaskInfo;Landroid/app/ActivityManager$RecentTaskInfo;,Landroid/app/ActivityManager$RunningTaskInfo;,Landroid/app/ActivityTaskManager$RootTaskInfo;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;Lcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer$RemoteToken;Lcom/android/server/wm/WindowContainer$RemoteToken;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/Task;->forAllLeafTasks(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Consumer;megamorphic_types
-HSPLcom/android/server/wm/Task;->getAdjacentTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;
+HSPLcom/android/server/wm/Task;->forAllLeafTasks(Ljava/util/function/Predicate;)Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Predicate;Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda18;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda32;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda9;,Lcom/android/server/wm/RootWindowContainer$FindTaskResult;
+HSPLcom/android/server/wm/Task;->getBaseIntent()Landroid/content/Intent;+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/Task;->getBasePackageName()Ljava/lang/String;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/Task;->getDisplayCutoutInsets()Landroid/graphics/Rect;+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/Task;->getDisplayInfo()Landroid/view/DisplayInfo;+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/Task;->getOrganizedTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;
+HSPLcom/android/server/wm/Task;->getPictureInPictureParams(Lcom/android/server/wm/ActivityRecord;)Landroid/app/PictureInPictureParams;
HSPLcom/android/server/wm/Task;->getRootActivity(ZZ)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/Task$FindRootHelper;Lcom/android/server/wm/Task$FindRootHelper;
HSPLcom/android/server/wm/Task;->getRootTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Ljava/util/function/Predicate;megamorphic_types
+HSPLcom/android/server/wm/Task;->getTaskWithAdjacent()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;
HSPLcom/android/server/wm/Task;->getTopLeafTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/Task;->getTopResumedActivity()Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/Task;->getTopVisibleActivity()Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/Task;->hasVisibleChildren()Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/Task;->isFocused()Z
HSPLcom/android/server/wm/Task;->isLeafTask()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/Task;->isOrganized()Z
+HSPLcom/android/server/wm/Task;->isResizeable()Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/Task;->isResizeable(Z)Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/Task;->isRootTask()Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/Task;->prepareSurfaces()V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Dimmer;Lcom/android/server/wm/Dimmer;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/TrustedOverlayHost;Lcom/android/server/wm/TrustedOverlayHost;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/Task;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/Task;->prepareSurfaces()V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/Dimmer;Lcom/android/server/wm/Dimmer;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/TrustedOverlayHost;Lcom/android/server/wm/TrustedOverlayHost;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/Task;->setTaskDescriptionFromActivityAboveRoot(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityManager$TaskDescription;)Z+]Landroid/app/ActivityManager$TaskDescription;Landroid/app/ActivityManager$TaskDescription;
HSPLcom/android/server/wm/Task;->shouldIgnoreInput()Z
+HSPLcom/android/server/wm/Task;->updateTaskDescription()V+]Lcom/android/internal/util/function/pooled/PooledPredicate;Lcom/android/internal/util/function/pooled/PooledLambdaImpl;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;
HSPLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/TaskDisplayArea;->$r8$lambda$UO54rDaQ1J_Js1LvzH8layvsInU(IILcom/android/server/wm/Task;)Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/TaskDisplayArea;->adjustRootTaskLayer(Landroid/view/SurfaceControl$Transaction;Ljava/util/ArrayList;I)I+]Landroid/util/IntArray;Landroid/util/IntArray;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/TaskDisplayArea;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/TaskDisplayArea;->assignRootTaskOrdering(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/TaskDisplayArea;->getRootTask(II)Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/TaskDisplayArea;->lambda$getRootTask$0(IILcom/android/server/wm/Task;)Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
HSPLcom/android/server/wm/TaskFragment;->asTaskFragment()Lcom/android/server/wm/TaskFragment;
+HSPLcom/android/server/wm/TaskFragment;->forAllLeafTaskFragments(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Consumer;megamorphic_types
HSPLcom/android/server/wm/TaskFragment;->forAllLeafTaskFragments(Ljava/util/function/Predicate;)Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Predicate;megamorphic_types
HSPLcom/android/server/wm/TaskFragment;->getActivityType()I+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/TaskFragment;->getDimBounds(Landroid/graphics/Rect;)V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/Dimmer;Lcom/android/server/wm/Dimmer;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;
+HSPLcom/android/server/wm/TaskFragment;->getDisplayArea()Lcom/android/server/wm/DisplayArea;+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
HSPLcom/android/server/wm/TaskFragment;->getDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
+HSPLcom/android/server/wm/TaskFragment;->getDisplayId()I
HSPLcom/android/server/wm/TaskFragment;->getOrganizedTaskFragment()Lcom/android/server/wm/TaskFragment;+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;
HSPLcom/android/server/wm/TaskFragment;->getRootTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/TaskFragment;->getRootTaskFragment()Lcom/android/server/wm/TaskFragment;+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;
HSPLcom/android/server/wm/TaskFragment;->getTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
HSPLcom/android/server/wm/TaskFragment;->getTopNonFinishingActivity(ZZ)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
HSPLcom/android/server/wm/TaskFragment;->getVisibility(Lcom/android/server/wm/ActivityRecord;)I+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;,Lcom/android/server/wm/TaskFragment;
+HSPLcom/android/server/wm/TaskFragment;->handleCompleteDeferredRemoval()Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
HSPLcom/android/server/wm/TaskFragment;->hasRunningActivity(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
HSPLcom/android/server/wm/TaskFragment;->isAttached()Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
HSPLcom/android/server/wm/TaskFragment;->isForceHidden()Z
+HSPLcom/android/server/wm/TaskFragment;->isLeafTaskFragment()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/TaskFragment;->isTopActivityFocusable()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
HSPLcom/android/server/wm/TaskFragment;->isTranslucent(Lcom/android/server/wm/ActivityRecord;)Z+]Lcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;Lcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
HSPLcom/android/server/wm/TaskFragment;->prepareSurfaces()V+]Lcom/android/server/wm/Dimmer;Lcom/android/server/wm/Dimmer;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
HSPLcom/android/server/wm/TaskFragment;->resumeTopActivity(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Z)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/AppWarnings;Lcom/android/server/wm/AppWarnings;]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/TaskFragment;->shouldDeferRemoval()Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
-HSPLcom/android/server/wm/TaskFragment;->shouldSleepActivities()Z+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/TaskFragment;->shouldSleepActivities()Z+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/TaskFragment;->supportsMultiWindowInDisplayArea(Lcom/android/server/wm/TaskDisplayArea;)Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
HSPLcom/android/server/wm/TaskFragment;->topRunningActivity()Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
HSPLcom/android/server/wm/TaskFragment;->topRunningActivity(Z)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
HSPLcom/android/server/wm/TaskFragment;->updateActivityVisibilities(Lcom/android/server/wm/ActivityRecord;Z)V+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/EnsureActivitiesVisibleHelper;Lcom/android/server/wm/EnsureActivitiesVisibleHelper;
HSPLcom/android/server/wm/TaskFragmentOrganizerController;->dispatchPendingEvents()V+]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;
-HPLcom/android/server/wm/TaskFragmentOrganizerController;->shouldDeferPendingEvents(Lcom/android/server/wm/TaskFragmentOrganizerController$TaskFragmentOrganizerState;Ljava/util/List;)Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/wm/TaskFragmentOrganizerController;->dispatchPendingEvents(Lcom/android/server/wm/TaskFragmentOrganizerController$TaskFragmentOrganizerState;Ljava/util/List;)V+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/TaskFragmentOrganizerController$PendingTaskFragmentEvent$Builder;Lcom/android/server/wm/TaskFragmentOrganizerController$PendingTaskFragmentEvent$Builder;]Lcom/android/server/wm/TaskFragmentOrganizerController$TaskFragmentOrganizerState;Lcom/android/server/wm/TaskFragmentOrganizerController$TaskFragmentOrganizerState;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->dispatchPendingEvents()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->dispatchTaskInfoChanged(Lcom/android/server/wm/Task;Z)V+]Landroid/app/ActivityManager$RunningTaskInfo;Landroid/app/ActivityManager$RunningTaskInfo;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerCallbacks;Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerCallbacks;]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap;
HSPLcom/android/server/wm/TaskOrganizerController;->dispatchPendingEvents()V+]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;
+HSPLcom/android/server/wm/TaskOrganizerController;->onTaskInfoChanged(Lcom/android/server/wm/Task;Z)V+]Landroid/window/ITaskOrganizer;Landroid/window/ITaskOrganizer$Stub$Proxy;
HSPLcom/android/server/wm/Transition$ChangeInfo;-><init>(Lcom/android/server/wm/WindowContainer;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/WindowContainer;megamorphic_types
HSPLcom/android/server/wm/Transition;-><init>(IILcom/android/server/wm/TransitionController;Lcom/android/server/wm/BLASTSyncEngine;)V
+HSPLcom/android/server/wm/Transition;->applyReady()V+]Lcom/android/server/wm/BLASTSyncEngine;Lcom/android/server/wm/BLASTSyncEngine;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/Transition$ReadyTrackerOld;Lcom/android/server/wm/Transition$ReadyTrackerOld;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/Transition;->calculateTransitionInfo(IILjava/util/ArrayList;Landroid/view/SurfaceControl$Transaction;)Landroid/window/TransitionInfo;+]Landroid/app/ActivityManager$TaskDescription;Landroid/app/ActivityManager$TaskDescription;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/Transition$ChangeInfo;Lcom/android/server/wm/Transition$ChangeInfo;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer$RemoteToken;Lcom/android/server/wm/WindowContainer$RemoteToken;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/Transition;->collect(Lcom/android/server/wm/WindowContainer;)V+]Lcom/android/server/wm/BLASTSyncEngine;Lcom/android/server/wm/BLASTSyncEngine;]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowContainer;megamorphic_types
-HSPLcom/android/server/wm/Transition;->finishTransition(Lcom/android/server/wm/ActionChain;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/inputmethod/InputMethodManagerInternal;Lcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;]Lcom/android/server/wm/ActionChain;Lcom/android/server/wm/ActionChain;]Lcom/android/server/wm/ActivityRecordInputSink;Lcom/android/server/wm/ActivityRecordInputSink;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/AppCompatCameraPolicy;Lcom/android/server/wm/AppCompatCameraPolicy;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/SnapshotController;Lcom/android/server/wm/SnapshotController;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskSnapshotController;Lcom/android/server/wm/TaskSnapshotController;]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/TransitionTracer;Lcom/android/server/wm/LegacyTransitionTracer;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda25;
+HSPLcom/android/server/wm/Transition;->finishTransition(Lcom/android/server/wm/ActionChain;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/inputmethod/InputMethodManagerInternal;Lcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;]Lcom/android/server/wm/ActionChain;Lcom/android/server/wm/ActionChain;]Lcom/android/server/wm/ActivityRecordInputSink;Lcom/android/server/wm/ActivityRecordInputSink;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/AppCompatCameraPolicy;Lcom/android/server/wm/AppCompatCameraPolicy;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/SnapshotController;Lcom/android/server/wm/SnapshotController;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskSnapshotController;Lcom/android/server/wm/TaskSnapshotController;]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/TransitionTracer;Lcom/android/server/wm/PerfettoTransitionTracer;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;
HSPLcom/android/server/wm/Transition;->isInTransition(Lcom/android/server/wm/WindowContainer;)Z
-HSPLcom/android/server/wm/Transition;->onTransactionReady(ILandroid/view/SurfaceControl$Transaction;)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Landroid/window/ITransitionPlayer;Landroid/window/ITransitionPlayer$Stub$Proxy;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/SnapshotController;Lcom/android/server/wm/SnapshotController;]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/TransitionController$Logger;Lcom/android/server/wm/TransitionController$Logger;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/TransitionTracer;Lcom/android/server/wm/LegacyTransitionTracer;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda25;
+HSPLcom/android/server/wm/Transition;->onTransactionReady(ILandroid/view/SurfaceControl$Transaction;)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Landroid/window/ITransitionPlayer;Landroid/window/ITransitionPlayer$Stub$Proxy;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/SnapshotController;Lcom/android/server/wm/SnapshotController;]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/TransitionController$Logger;Lcom/android/server/wm/TransitionController$Logger;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/TransitionTracer;Lcom/android/server/wm/PerfettoTransitionTracer;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;
+HSPLcom/android/server/wm/Transition;->toString()Ljava/lang/String;+]Lcom/android/server/wm/Transition$ChangeInfo;Lcom/android/server/wm/Transition$ChangeInfo;
HSPLcom/android/server/wm/TransitionController;->canAssignLayers(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;megamorphic_types
HSPLcom/android/server/wm/TransitionController;->inCollectingTransition(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/TransitionController;->inPlayingTransition(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/TransitionController;->inTransition()Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/TransitionController;->inTransition(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;
HSPLcom/android/server/wm/TransitionController;->isCollecting()Z
HSPLcom/android/server/wm/TransitionController;->isPlaying()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
@@ -3924,21 +4104,23 @@ HSPLcom/android/server/wm/TransparentPolicy;->findOpaqueNotFinishingActivityBelo
HSPLcom/android/server/wm/TransparentPolicy;->isRunning()Z
HSPLcom/android/server/wm/VisibleActivityProcessTracker;->hasVisibleActivity(I)Z
HSPLcom/android/server/wm/VisibleActivityProcessTracker;->match(ILjava/util/function/Predicate;)Z+]Ljava/util/function/Predicate;Lcom/android/server/wm/VisibleActivityProcessTracker$$ExternalSyntheticLambda0;
+HSPLcom/android/server/wm/WallpaperController;->adjustWallpaperWindows()V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
HSPLcom/android/server/wm/WallpaperController;->hideWallpapers(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WallpaperController;->isWallpaperVisible()Z+]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/WallpaperController;->lambda$new$0(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/AnimationAdapter;Lcom/android/server/wm/BackNavigationController$AnimationHandler$BackWindowAnimationAdaptor;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WallpaperController;->updateWallpaperOffset(Lcom/android/server/wm/WindowState;Z)Z+]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;]Lcom/android/server/wallpaper/WallpaperCropper$WallpaperCropUtils;Lcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda5;]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/WallpaperController;->setWallpaperZoomOut(Lcom/android/server/wm/WindowState;F)V+]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/WallpaperController;->updateWallpaperOffset(Lcom/android/server/wm/WindowState;Z)Z+]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;]Lcom/android/server/wallpaper/WallpaperCropper$WallpaperCropUtils;Lcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda4;]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WallpaperWindowToken;->isVisible()Z+]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WallpaperWindowToken;
HSPLcom/android/server/wm/WallpaperWindowToken;->prepareSurfaces()V
HSPLcom/android/server/wm/WallpaperWindowToken;->setVisibility(Z)V+]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;
-HSPLcom/android/server/wm/WindowAnimator;->animate(J)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/TaskOrganizerController;Lcom/android/server/wm/TaskOrganizerController;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;]Lcom/android/server/wm/WindowTracing;Lcom/android/server/wm/WindowTracing;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/WindowAnimator;->animate(J)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/TaskOrganizerController;Lcom/android/server/wm/TaskOrganizerController;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;]Lcom/android/server/wm/WindowTracing;Lcom/android/server/wm/WindowTracingLegacy;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowAnimator;->cancelAnimation()V
HSPLcom/android/server/wm/WindowAnimator;->lambda$new$1(J)V
HSPLcom/android/server/wm/WindowAnimator;->scheduleAnimation()V
-HSPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->apply(Lcom/android/server/wm/WindowState;)Z+]Ljava/util/function/Consumer;megamorphic_types
HSPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->apply(Ljava/lang/Object;)Z
HSPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->release()V
-HSPLcom/android/server/wm/WindowContainer;-><init>(Lcom/android/server/wm/WindowManagerService;)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda25;
+HSPLcom/android/server/wm/WindowContainer$RemoteToken;->toWindowContainerToken()Landroid/window/WindowContainerToken;
+HSPLcom/android/server/wm/WindowContainer;-><init>(Lcom/android/server/wm/WindowManagerService;)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;
+HSPLcom/android/server/wm/WindowContainer;->asTask()Lcom/android/server/wm/Task;
HSPLcom/android/server/wm/WindowContainer;->asTaskFragment()Lcom/android/server/wm/TaskFragment;
HSPLcom/android/server/wm/WindowContainer;->asWallpaperToken()Lcom/android/server/wm/WallpaperWindowToken;
HSPLcom/android/server/wm/WindowContainer;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
@@ -3947,6 +4129,7 @@ HSPLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function
HSPLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function/Predicate;Z)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowContainer;->forAllLeafTaskFragments(Ljava/util/function/Predicate;)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowContainer;->forAllLeafTasks(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/WindowContainer;->forAllLeafTasks(Ljava/util/function/Predicate;)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowContainer;->forAllRootTasks(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowContainer;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowContainer;->forAllWindows(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types
@@ -3962,24 +4145,26 @@ HSPLcom/android/server/wm/WindowContainer;->getDisplayContent()Lcom/android/serv
HPLcom/android/server/wm/WindowContainer;->getInsetsSourceProviders()Landroid/util/SparseArray;
HSPLcom/android/server/wm/WindowContainer;->getOrientation(I)I+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowContainer;->getParent()Lcom/android/server/wm/WindowContainer;
-HSPLcom/android/server/wm/WindowContainer;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;+]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda25;
+HSPLcom/android/server/wm/WindowContainer;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;+]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda25;
HSPLcom/android/server/wm/WindowContainer;->getRelativePosition(Landroid/graphics/Point;)V+]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/WindowContainer;megamorphic_types
HSPLcom/android/server/wm/WindowContainer;->getRelativePosition(Landroid/graphics/Rect;Landroid/graphics/Point;)V+]Landroid/graphics/Point;Landroid/graphics/Point;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types
HSPLcom/android/server/wm/WindowContainer;->getRootTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowContainer;->getSurfaceControl()Landroid/view/SurfaceControl;
HSPLcom/android/server/wm/WindowContainer;->getSyncTransaction()Landroid/view/SurfaceControl$Transaction;+]Lcom/android/server/wm/WindowContainer;megamorphic_types
HSPLcom/android/server/wm/WindowContainer;->getTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/WindowContainer;->getTaskFragment(Ljava/util/function/Predicate;)Lcom/android/server/wm/TaskFragment;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowContainer;->getTopChild()Lcom/android/server/wm/WindowContainer;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowContainer;->getTopMostActivity()Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;,Lcom/android/server/wm/TaskFragment;
HSPLcom/android/server/wm/WindowContainer;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState;+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowContainer;->handleCompleteDeferredRemoval()Z+]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowContainer;->hasInsetsSourceProvider()Z
HSPLcom/android/server/wm/WindowContainer;->inTransition()Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;
-HSPLcom/android/server/wm/WindowContainer;->inTransitionSelfOrParent()Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowContainer;->inTransitionSelfOrParent()Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/DisplayArea;,Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowContainer;->isAnimating(II)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types
HSPLcom/android/server/wm/WindowContainer;->isAttached()Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types
HSPLcom/android/server/wm/WindowContainer;->isExitAnimationRunningSelfOrChild()Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowContainer;->isFocusable()Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types
-HSPLcom/android/server/wm/WindowContainer;->isOnTop()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayArea$Dimmable;,Lcom/android/server/wm/RootWindowContainer;
+HSPLcom/android/server/wm/WindowContainer;->isOnTop()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/RootWindowContainer;
HSPLcom/android/server/wm/WindowContainer;->isSelfAnimating(II)Z+]Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator;]Lcom/android/server/wm/WindowContainer;megamorphic_types
HSPLcom/android/server/wm/WindowContainer;->isVisible()Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowContainer;->isVisibleRequested()Z
@@ -3987,33 +4172,36 @@ HSPLcom/android/server/wm/WindowContainer;->isWaitingForTransitionStart()Z
HSPLcom/android/server/wm/WindowContainer;->needsZBoost()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowContainer;->obtainConsumerWrapper(Ljava/util/function/Consumer;)Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool;
HSPLcom/android/server/wm/WindowContainer;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/WindowContainerListener;Lcom/android/server/wm/ContentRecorder;,Lcom/android/server/wm/DisplayContent$2;,Lcom/android/server/wm/WindowContainer$2;,Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
-HSPLcom/android/server/wm/WindowContainer;->prepareSurfaces()V+]Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/WindowContainer;->prepareSurfaces()V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowContainer;->scheduleAnimation()V+]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
+HSPLcom/android/server/wm/WindowContainer;->updateAboveInsetsState(Landroid/view/InsetsState;Landroid/util/SparseArray;Landroid/util/ArraySet;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowContainer;->updateSurfacePositionNonOrganized()V+]Lcom/android/server/wm/WindowContainer;megamorphic_types
+HSPLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->dispatchWindowContextInfoChange()V+]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
HSPLcom/android/server/wm/WindowFrames;->didFrameSizeChange()Z
HSPLcom/android/server/wm/WindowFrames;->hasInsetsChanged()Z
HSPLcom/android/server/wm/WindowFrames;->setContentChanged(Z)V
HSPLcom/android/server/wm/WindowFrames;->setReportResizeHints()Z+]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;
-HSPLcom/android/server/wm/WindowManagerService;->addWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIILandroid/view/InputChannel;Landroid/view/InsetsState;Landroid/view/InsetsSourceControl$Array;Landroid/graphics/Rect;[F)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;,Landroid/view/ViewRootImpl$W;]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/Session;Lcom/android/server/wm/Session;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowContextListenerController;Lcom/android/server/wm/WindowContextListenerController;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/HashMap;Ljava/util/HashMap;
+HSPLcom/android/server/wm/WindowManagerService;->addWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIILandroid/view/InputChannel;Landroid/view/InsetsState;Landroid/view/InsetsSourceControl$Array;Landroid/graphics/Rect;[F)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;,Landroid/view/ViewRootImpl$W;]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/Session;Lcom/android/server/wm/Session;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowContextListenerController;Lcom/android/server/wm/WindowContextListenerController;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/HashMap;Ljava/util/HashMap;
HSPLcom/android/server/wm/WindowManagerService;->boostPriorityForLockedSection()V+]Lcom/android/server/wm/WindowManagerThreadPriorityBooster;Lcom/android/server/wm/WindowManagerThreadPriorityBooster;
HSPLcom/android/server/wm/WindowManagerService;->checkDrawnWindowsLocked()V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowManagerService;->enableScreenIfNeededLocked()V
HSPLcom/android/server/wm/WindowManagerService;->getDefaultDisplayContentLocked()Lcom/android/server/wm/DisplayContent;+]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;
-HSPLcom/android/server/wm/WindowManagerService;->isKeyguardSecure(I)Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;
+HSPLcom/android/server/wm/WindowManagerService;->isKeyguardLocked()Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;
+HSPLcom/android/server/wm/WindowManagerService;->isKeyguardSecure(I)Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;
HSPLcom/android/server/wm/WindowManagerService;->isUserVisible(I)Z+]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;
-HSPLcom/android/server/wm/WindowManagerService;->relayoutWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIIIILandroid/view/WindowRelayoutResult;)I+]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;]Landroid/view/InsetsFrameProvider$InsetsSizeOverride;Landroid/view/InsetsFrameProvider$InsetsSizeOverride;]Landroid/view/InsetsFrameProvider;Landroid/view/InsetsFrameProvider;]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayWindowPolicyControllerHelper;Lcom/android/server/wm/DisplayWindowPolicyControllerHelper;]Lcom/android/server/wm/UnknownAppVisibilityController;Lcom/android/server/wm/UnknownAppVisibilityController;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;
+HSPLcom/android/server/wm/WindowManagerService;->relayoutWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIIIILandroid/view/WindowRelayoutResult;)I+]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;,Landroid/view/ViewRootImpl$W;]Landroid/view/InsetsFrameProvider$InsetsSizeOverride;Landroid/view/InsetsFrameProvider$InsetsSizeOverride;]Landroid/view/InsetsFrameProvider;Landroid/view/InsetsFrameProvider;]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayWindowPolicyControllerHelper;Lcom/android/server/wm/DisplayWindowPolicyControllerHelper;]Lcom/android/server/wm/UnknownAppVisibilityController;Lcom/android/server/wm/UnknownAppVisibilityController;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;
HSPLcom/android/server/wm/WindowManagerService;->resetPriorityAfterLockedSection()V+]Lcom/android/server/wm/WindowManagerThreadPriorityBooster;Lcom/android/server/wm/WindowManagerThreadPriorityBooster;
HSPLcom/android/server/wm/WindowManagerService;->scheduleAnimationLocked()V+]Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator;
HSPLcom/android/server/wm/WindowManagerService;->setInsetsWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/os/IBinder;Z)Lcom/android/server/wm/WindowState;+]Ljava/util/HashMap;Ljava/util/HashMap;
HSPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->boost()V
HSPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->reset()V
+HSPLcom/android/server/wm/WindowOrganizerController;->applyTransaction(Landroid/window/WindowContainerTransaction;ILcom/android/server/wm/ActionChain;Lcom/android/server/wm/WindowOrganizerController$CallerInfo;)I+]Landroid/window/WindowContainerTransaction$Change;Landroid/window/WindowContainerTransaction$Change;]Lcom/android/server/wm/ActionChain;Lcom/android/server/wm/ActionChain;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowOrganizerController;Lcom/android/server/wm/WindowOrganizerController;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;]Ljava/lang/Object;Lcom/android/server/wm/Task;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;
HSPLcom/android/server/wm/WindowProcessController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;IILjava/lang/Object;Lcom/android/server/wm/WindowProcessListener;)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;
HSPLcom/android/server/wm/WindowProcessController;->addBoundClientUid(ILjava/lang/String;J)V+]Lcom/android/server/wm/BackgroundLaunchProcessController;Lcom/android/server/wm/BackgroundLaunchProcessController;
HPLcom/android/server/wm/WindowProcessController;->areBackgroundActivityStartsAllowed(ILcom/android/server/wm/BackgroundLaunchProcessController$BalCheckConfiguration;)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/BackgroundLaunchProcessController;Lcom/android/server/wm/BackgroundLaunchProcessController;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
HSPLcom/android/server/wm/WindowProcessController;->computeProcessActivityState()V+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/VisibleActivityProcessTracker;Lcom/android/server/wm/VisibleActivityProcessTracker;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowProcessController;->dispatchConfiguration(Landroid/content/res/Configuration;)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
-HSPLcom/android/server/wm/WindowProcessController;->handleAppDied()Z+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowProcessController;->hasActivities()Z
HSPLcom/android/server/wm/WindowProcessController;->hasActivitiesOrRecentTasks()Z
HPLcom/android/server/wm/WindowProcessController;->hasActivityInVisibleTask()Z
@@ -4037,11 +4225,13 @@ HSPLcom/android/server/wm/WindowProcessController;->setPerceptible(Z)V
HSPLcom/android/server/wm/WindowProcessController;->setReportedProcState(I)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager;
HSPLcom/android/server/wm/WindowProcessController;->setThread(Landroid/app/IApplicationThread;)V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/VisibleActivityProcessTracker;Lcom/android/server/wm/VisibleActivityProcessTracker;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;
HSPLcom/android/server/wm/WindowProcessControllerMap;->put(ILcom/android/server/wm/WindowProcessController;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Map;Ljava/util/HashMap;
-HSPLcom/android/server/wm/WindowState;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/Session;Landroid/view/IWindow;Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowState;ILandroid/view/WindowManager$LayoutParams;IIIZ)V+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda25;
-HSPLcom/android/server/wm/WindowState;->applyDims()V+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/Dimmer;Lcom/android/server/wm/Dimmer;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;
+HSPLcom/android/server/wm/WindowState;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/Session;Landroid/view/IWindow;Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowState;ILandroid/view/WindowManager$LayoutParams;IIIZ)V+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;
+HSPLcom/android/server/wm/WindowState;->applyDims()V+]Lcom/android/server/wm/Dimmer;Lcom/android/server/wm/Dimmer;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;
HSPLcom/android/server/wm/WindowState;->applyImeWindowsIfNeeded(Lcom/android/internal/util/ToBooleanFunction;Z)Z+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->applyInOrderWithImeWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z+]Lcom/android/internal/util/ToBooleanFunction;megamorphic_types
HSPLcom/android/server/wm/WindowState;->areAppWindowBoundsLetterboxed()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->asWindowState()Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowState;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->canAddInternalSystemWindow()Z
HSPLcom/android/server/wm/WindowState;->canAffectSystemUiFlags()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;
@@ -4050,7 +4240,6 @@ HPLcom/android/server/wm/WindowState;->canBeImeTarget()Z+]Lcom/android/server/wm
HSPLcom/android/server/wm/WindowState;->canReceiveKeys()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->canReceiveKeys(Z)Z+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->canReceiveTouchInput()Z+]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;
-HSPLcom/android/server/wm/WindowState;->computeDragResizing()Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->cropRegionToRootTaskBoundsIfNeeded(Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->fillClientWindowFramesAndConfiguration(Landroid/window/ClientWindowFrames;Landroid/util/MergedConfiguration;Landroid/window/ActivityWindowInfo;ZZ)V+]Landroid/util/MergedConfiguration;Landroid/util/MergedConfiguration;]Landroid/window/ClientWindowFrames;Landroid/window/ClientWindowFrames;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->fillInsetsSourceControls(Landroid/view/InsetsSourceControl$Array;Z)V+]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
@@ -4059,9 +4248,10 @@ HSPLcom/android/server/wm/WindowState;->fillsDisplay()Z+]Lcom/android/server/wm/
HSPLcom/android/server/wm/WindowState;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowState;->getAttrs()Landroid/view/WindowManager$LayoutParams;
HSPLcom/android/server/wm/WindowState;->getBaseType()I+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->getBounds()Landroid/graphics/Rect;+]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
+HSPLcom/android/server/wm/WindowState;->getBounds()Landroid/graphics/Rect;+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
HSPLcom/android/server/wm/WindowState;->getConfiguration()Landroid/content/res/Configuration;
HSPLcom/android/server/wm/WindowState;->getDisplayFrames(Lcom/android/server/wm/DisplayFrames;)Lcom/android/server/wm/DisplayFrames;+]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
+HSPLcom/android/server/wm/WindowState;->getDisplayInfo()Landroid/view/DisplayInfo;+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
HSPLcom/android/server/wm/WindowState;->getEffectiveTouchableRegion(Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->getFrame()Landroid/graphics/Rect;
HSPLcom/android/server/wm/WindowState;->getInputDispatchingTimeoutMillis()J
@@ -4071,24 +4261,28 @@ HSPLcom/android/server/wm/WindowState;->getKeepClearAreas(Ljava/util/Collection;
HSPLcom/android/server/wm/WindowState;->getKeyInterceptionInfo()Lcom/android/internal/policy/KeyInterceptionInfo;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/lang/CharSequence;Landroid/text/SpannableString;,Ljava/lang/String;
HSPLcom/android/server/wm/WindowState;->getMergedInsetsState()Landroid/view/InsetsState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;
HSPLcom/android/server/wm/WindowState;->getName()Ljava/lang/String;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->getOrientationChanging()Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;
HSPLcom/android/server/wm/WindowState;->getOwningPackage()Ljava/lang/String;
HSPLcom/android/server/wm/WindowState;->getOwningUid()I
HSPLcom/android/server/wm/WindowState;->getParentWindow()Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->getRectsInScreenSpace(Ljava/util/List;Landroid/graphics/Matrix;[F)Ljava/util/List;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/wm/WindowState;->getRequestedVisibleTypes()I
HSPLcom/android/server/wm/WindowState;->getSurfaceTouchableRegion(Landroid/graphics/Region;Landroid/view/WindowManager$LayoutParams;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->getTask()Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/WindowState;->getTopParentWindow()Lcom/android/server/wm/WindowState;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->getTouchOcclusionMode()I+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->getTouchableRegion(Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;
HSPLcom/android/server/wm/WindowState;->getTransformationMatrix([FLandroid/graphics/Matrix;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Predicate;megamorphic_types
HSPLcom/android/server/wm/WindowState;->getWindowTag()Ljava/lang/CharSequence;+]Ljava/lang/CharSequence;Landroid/text/SpannableString;,Ljava/lang/String;
HSPLcom/android/server/wm/WindowState;->getWindowType()I
HSPLcom/android/server/wm/WindowState;->handleCompleteDeferredRemoval()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->handleWindowMovedIfNeeded()V+]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;,Landroid/view/ViewRootImpl$W;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->hasMoved()Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->hasWallpaper()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->isAnimationRunningSelfOrParent()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->isChildWindow()Z
+HSPLcom/android/server/wm/WindowState;->isDimming()Z
HSPLcom/android/server/wm/WindowState;->isDisplayed()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->isDragResizeChanged()Z
HSPLcom/android/server/wm/WindowState;->isDrawn()Z
HSPLcom/android/server/wm/WindowState;->isDreamWindow()Z
HSPLcom/android/server/wm/WindowState;->isFocused()Z
@@ -4096,6 +4290,7 @@ HSPLcom/android/server/wm/WindowState;->isFullyTransparent()Z
HSPLcom/android/server/wm/WindowState;->isGoneForLayout()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->isImeLayeringTarget()Z+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;
HSPLcom/android/server/wm/WindowState;->isImplicitlyExcludingAllSystemGestures()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->isInsetsAnimationRunning()Z
HSPLcom/android/server/wm/WindowState;->isLetterboxedForDisplayCutout()Z+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;
HSPLcom/android/server/wm/WindowState;->isObscuringDisplay()Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->isOnScreen()Z+]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
@@ -4110,22 +4305,27 @@ HSPLcom/android/server/wm/WindowState;->isVisibleByPolicyOrInsets()Z+]Lcom/andro
HSPLcom/android/server/wm/WindowState;->isVisibleRequested()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->isVisibleRequestedOrAdding()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HPLcom/android/server/wm/WindowState;->matchesDisplayAreaBounds()Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/WindowState;->needsRelativeLayeringToIme()Z+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent$ImeContainer;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->needsZBoost()Z+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->performShowLocked()Z+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowState;->prepareSurfaces()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;
HSPLcom/android/server/wm/WindowState;->registeredForDisplayAreaConfigChanges()Z+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->relayoutVisibleWindow(I)I+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
-HPLcom/android/server/wm/WindowState;->reportResized()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/util/MergedConfiguration;Landroid/util/MergedConfiguration;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->reportResized()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/util/MergedConfiguration;Landroid/util/MergedConfiguration;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->resetContentChanged()V+]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;
HSPLcom/android/server/wm/WindowState;->setFrames(Landroid/window/ClientWindowFrames;II)V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/wm/WindowState;->setLastExclusionHeights(III)V
HSPLcom/android/server/wm/WindowState;->setReportResizeHints()Z+]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;
HSPLcom/android/server/wm/WindowState;->shouldCheckTokenVisibleRequested()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
+HSPLcom/android/server/wm/WindowState;->shouldDrawBlurBehind()Z
+HSPLcom/android/server/wm/WindowState;->shouldSendRedrawForSync()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/WindowState;->show(ZZ)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;
HSPLcom/android/server/wm/WindowState;->subtractTouchExcludeRegionIfNeeded(Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;
+HSPLcom/android/server/wm/WindowState;->toString()Ljava/lang/String;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->transformFrameToSurfacePosition(IILandroid/graphics/Point;)V+]Landroid/graphics/Point;Landroid/graphics/Point;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->transformSurfaceInsetsPosition(Landroid/graphics/Point;Landroid/graphics/Rect;)V
HSPLcom/android/server/wm/WindowState;->updateFrameRateSelectionPriorityIfNeeded()V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/RefreshRatePolicy;Lcom/android/server/wm/RefreshRatePolicy;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->updateRegionForModalActivityWindow(Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowState;->updateRegionForModalActivityWindow(Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;
HSPLcom/android/server/wm/WindowState;->updateReportedVisibility(Lcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;)V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowState;->updateResizingWindowIfNeeded()V+]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowState;->updateScaleIfNeeded()V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
@@ -4133,1720 +4333,92 @@ HSPLcom/android/server/wm/WindowState;->updateSourceFrame(Landroid/graphics/Rect
HSPLcom/android/server/wm/WindowState;->updateSurfacePosition(Landroid/view/SurfaceControl$Transaction;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/Point;Landroid/graphics/Point;]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatOrientationOverrides;Lcom/android/server/wm/AppCompatOrientationOverrides;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;]Ljava/util/function/Consumer;Lcom/android/server/wm/WindowState$$ExternalSyntheticLambda1;
HSPLcom/android/server/wm/WindowState;->wouldBeVisibleIfPolicyIgnored()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
HSPLcom/android/server/wm/WindowState;->wouldBeVisibleRequestedIfPolicyIgnored()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowStateAnimator;->applyAnimationLocked(IZ)Z+]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;
HSPLcom/android/server/wm/WindowStateAnimator;->commitFinishDrawingLocked()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowStateAnimator;->computeShownFrameLocked()V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowStateAnimator;->createSurfaceLocked()Landroid/view/SurfaceControl;+]Landroid/view/SurfaceControl$Builder;Landroid/view/SurfaceControl$Builder;]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Ljava/lang/CharSequence;Landroid/text/SpannableString;,Ljava/lang/String;
HSPLcom/android/server/wm/WindowStateAnimator;->getShown()Z
HSPLcom/android/server/wm/WindowStateAnimator;->hasSurface()Z
HSPLcom/android/server/wm/WindowStateAnimator;->prepareSurfaceLocked(Landroid/view/SurfaceControl$Transaction;)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;
HSPLcom/android/server/wm/WindowSurfacePlacer$Traverser;->run()V
+HSPLcom/android/server/wm/WindowSurfacePlacer;->continueLayout(Z)V
HSPLcom/android/server/wm/WindowSurfacePlacer;->isLayoutDeferred()Z
HSPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement(Z)V
HSPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacementLoop()V+]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/WindowSurfacePlacer;->requestTraversal()V
+HSPLcom/android/server/wm/WindowToken;->getFixedRotationTransformDisplayFrames()Lcom/android/server/wm/DisplayFrames;+]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
HSPLcom/android/server/wm/WindowToken;->getFixedRotationTransformInsetsState()Landroid/view/InsetsState;+]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
+HSPLcom/android/server/wm/WindowToken;->handleCompleteDeferredRemoval()Z+]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;
HSPLcom/android/server/wm/WindowToken;->isClientVisible()Z
HSPLcom/android/server/wm/WindowToken;->isFixedRotationTransforming()Z
-HSPLcom/android/server/wm/utils/DimenPxIntSupplier;->getAsInt()I+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;
-HSPLcom/android/server/wm/utils/DisplayInfoOverrides;->lambda$static$0(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)V
+HSPLcom/android/server/wm/WindowTracingLegacy;->isEnabled()Z
+HSPLcom/android/server/wm/utils/DisplayInfoOverrides;->$r8$lambda$jgt4-o-_IMdp6knRL61iyTsmoLA(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)V
HSPLcom/android/server/wm/utils/OptPropFactory$OptProp;->getValue()I+]Lcom/android/server/wm/utils/OptPropFactory$ThrowableBooleanSupplier;Lcom/android/server/wm/utils/OptPropFactory$$ExternalSyntheticLambda0;,Lcom/android/server/wm/utils/OptPropFactory$$ExternalSyntheticLambda1;
HSPLcom/android/server/wm/utils/OptPropFactory$OptProp;->isFalse()Z+]Ljava/util/function/BooleanSupplier;Lcom/android/server/wm/AppCompatAspectRatioOverrides$$ExternalSyntheticLambda0;,Lcom/android/server/wm/AppCompatAspectRatioOverrides$$ExternalSyntheticLambda1;,Lcom/android/server/wm/utils/OptPropFactory$OptProp$$ExternalSyntheticLambda0;
HSPLcom/android/server/wm/utils/OptPropFactory$OptProp;->shouldEnableWithOptInOverrideAndOptOutProperty(Z)Z+]Ljava/util/function/BooleanSupplier;Lcom/android/server/wm/AppCompatOrientationOverrides$$ExternalSyntheticLambda2;,Lcom/android/server/wm/AppCompatUtils$1;,Lcom/android/server/wm/utils/OptPropFactory$OptProp$$ExternalSyntheticLambda0;
HPLcom/android/server/wm/utils/RegionUtils;->forEachRectReverse(Landroid/graphics/Region;Ljava/util/function/Consumer;)V
HSPLcom/android/server/wm/utils/RegionUtils;->rectListToRegion(Ljava/util/List;Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Ljava/util/List;Ljava/util/ArrayList;
-Landroid/content/pm/PackageManagerInternal$ExternalSourcesPolicy;
-Landroid/content/pm/PackageManagerInternal;
-Landroid/content/pm/TestUtilityService;
-Landroid/hardware/light/HwLight$1;
-Landroid/hardware/light/HwLight;
-Landroid/hardware/light/ILights;
-Landroid/hardware/power/stats/Channel;
-Landroid/hardware/power/stats/EnergyConsumer;
-Landroid/hardware/power/stats/IPowerStats$Stub$Proxy;
-Landroid/hardware/power/stats/IPowerStats$Stub;
-Landroid/hardware/power/stats/IPowerStats;
-Landroid/net/ConnectivityModuleConnector$Dependencies;
-Landroid/net/ConnectivityModuleConnector$DependenciesImpl;
-Landroid/net/ConnectivityModuleConnector;
-Landroid/os/BatteryStatsInternal;
-Landroid/power/PowerStatsInternal;
-Landroid/sysprop/SurfaceFlingerProperties;
-Lcom/android/modules/utils/build/SdkLevel;
-Lcom/android/modules/utils/build/UnboundedSdkLevel;
-Lcom/android/server/AnimationThread;
-Lcom/android/server/AppFuseMountException;
+Landroid/app/IAlarmListener$Stub$Proxy;
+Landroid/app/job/IJobService$Stub$Proxy;
+Landroid/content/ISyncStatusObserver$Stub$Proxy;
+Landroid/os/RemoteCallbackList$Builder$1;
+Landroid/service/notification/INotificationListener$Stub$Proxy;
+Lcom/android/internal/app/IAppOpsCallback$Stub$Proxy;
+Lcom/android/internal/statusbar/IStatusBar$Stub$Proxy;
Lcom/android/server/BatteryService$LocalService;
Lcom/android/server/BinaryTransparencyService$BinaryTransparencyServiceImpl$$ExternalSyntheticLambda0;
-Lcom/android/server/BundleUtils;
-Lcom/android/server/ConsumerIrService;
Lcom/android/server/DeviceIdleController$LocalService;
-Lcom/android/server/DisplayThread;
-Lcom/android/server/EventLogTags;
-Lcom/android/server/ExplicitHealthCheckController;
-Lcom/android/server/FgThread;
-Lcom/android/server/HardwarePropertiesManagerService;
-Lcom/android/server/IntentResolver$1;
-Lcom/android/server/IntentResolver;
-Lcom/android/server/IoThread;
-Lcom/android/server/LocalManagerRegistry$ManagerNotFoundException;
-Lcom/android/server/LocalManagerRegistry;
-Lcom/android/server/LockGuard$LockInfo;
-Lcom/android/server/LockGuard;
-Lcom/android/server/PackageWatchdog$$ExternalSyntheticLambda0;
-Lcom/android/server/PackageWatchdog$$ExternalSyntheticLambda1;
-Lcom/android/server/PackageWatchdog$$ExternalSyntheticLambda2;
-Lcom/android/server/PackageWatchdog$$ExternalSyntheticLambda3;
-Lcom/android/server/PackageWatchdog$$ExternalSyntheticLambda4;
-Lcom/android/server/PackageWatchdog$BootThreshold;
-Lcom/android/server/PackageWatchdog$ObserverInternal;
-Lcom/android/server/PackageWatchdog$PackageHealthObserver;
-Lcom/android/server/PackageWatchdog$SystemClock;
-Lcom/android/server/PackageWatchdog;
-Lcom/android/server/RescueParty$RescuePartyObserver;
-Lcom/android/server/RescueParty;
-Lcom/android/server/SerialService;
-Lcom/android/server/ServiceThread;
-Lcom/android/server/SystemClockTime;
-Lcom/android/server/SystemConfig$PermissionEntry;
-Lcom/android/server/SystemConfig$SharedLibraryEntry;
-Lcom/android/server/SystemConfig;
-Lcom/android/server/SystemServer$$ExternalSyntheticLambda0;
-Lcom/android/server/SystemServer$$ExternalSyntheticLambda1;
-Lcom/android/server/SystemServer$$ExternalSyntheticLambda2;
-Lcom/android/server/SystemServer$SystemServerDumper;
-Lcom/android/server/SystemServer;
-Lcom/android/server/SystemServerInitThreadPool$$ExternalSyntheticLambda1;
-Lcom/android/server/SystemServerInitThreadPool;
-Lcom/android/server/SystemService;
-Lcom/android/server/SystemServiceManager;
-Lcom/android/server/SystemTimeZone;
-Lcom/android/server/ThreadPriorityBooster$1;
-Lcom/android/server/ThreadPriorityBooster$PriorityState;
-Lcom/android/server/ThreadPriorityBooster;
-Lcom/android/server/UiThread;
-Lcom/android/server/Watchdog$$ExternalSyntheticLambda0;
-Lcom/android/server/Watchdog$1;
-Lcom/android/server/Watchdog$BinderThreadMonitor;
-Lcom/android/server/Watchdog$HandlerChecker;
-Lcom/android/server/Watchdog$HandlerCheckerAndTimeout;
-Lcom/android/server/Watchdog$Monitor;
-Lcom/android/server/Watchdog$RebootRequestReceiver;
-Lcom/android/server/Watchdog$SettingsObserver;
-Lcom/android/server/Watchdog;
-Lcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda36;
-Lcom/android/server/accessibility/BrailleDisplayConnection;
-Lcom/android/server/adb/AdbDebuggingManager$PairingThread;
-Lcom/android/server/alarm/AlarmManagerService$LocalService;
-Lcom/android/server/am/ActiveServices$1;
-Lcom/android/server/am/ActiveServices$5;
-Lcom/android/server/am/ActiveServices$MediaProjectionFgsTypeCustomPermission;
Lcom/android/server/am/ActiveServices$ProcessAnrTimer;
Lcom/android/server/am/ActiveServices$ServiceAnrTimer;
-Lcom/android/server/am/ActiveServices$ServiceMap;
-Lcom/android/server/am/ActiveServices$ServiceRestarter;
-Lcom/android/server/am/ActiveServices$SystemExemptedFgsTypePermission;
-Lcom/android/server/am/ActiveServices;
-Lcom/android/server/am/ActiveUids;
-Lcom/android/server/am/ActivityManagerConstants$1;
-Lcom/android/server/am/ActivityManagerConstants$2;
-Lcom/android/server/am/ActivityManagerConstants;
-Lcom/android/server/am/ActivityManagerGlobalLock;
-Lcom/android/server/am/ActivityManagerLocal;
-Lcom/android/server/am/ActivityManagerProcLock;
-Lcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda19;
-Lcom/android/server/am/ActivityManagerService$11;
-Lcom/android/server/am/ActivityManagerService$12;
-Lcom/android/server/am/ActivityManagerService$14;
-Lcom/android/server/am/ActivityManagerService$1;
-Lcom/android/server/am/ActivityManagerService$2;
-Lcom/android/server/am/ActivityManagerService$5;
-Lcom/android/server/am/ActivityManagerService$7;
-Lcom/android/server/am/ActivityManagerService$FgsTempAllowListItem;
-Lcom/android/server/am/ActivityManagerService$GetBackgroundStartPrivilegesFunctor;
-Lcom/android/server/am/ActivityManagerService$HiddenApiSettings;
-Lcom/android/server/am/ActivityManagerService$Injector;
-Lcom/android/server/am/ActivityManagerService$IntentFirewallInterface;
-Lcom/android/server/am/ActivityManagerService$Lifecycle;
Lcom/android/server/am/ActivityManagerService$LocalService;
-Lcom/android/server/am/ActivityManagerService$MainHandler$1;
-Lcom/android/server/am/ActivityManagerService$MainHandler;
-Lcom/android/server/am/ActivityManagerService$PidMap;
-Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
-Lcom/android/server/am/ActivityManagerService$UiHandler;
-Lcom/android/server/am/ActivityManagerService;
-Lcom/android/server/am/ActivityManagerShellCommand;
-Lcom/android/server/am/AnrHelper$$ExternalSyntheticLambda0;
-Lcom/android/server/am/AnrHelper$$ExternalSyntheticLambda1;
-Lcom/android/server/am/AnrHelper$AnrConsumerThread;
-Lcom/android/server/am/AnrHelper;
-Lcom/android/server/am/AppBatteryExemptionTracker$AppBatteryExemptionPolicy;
-Lcom/android/server/am/AppBatteryExemptionTracker$UidBatteryStates;
-Lcom/android/server/am/AppBatteryExemptionTracker;
-Lcom/android/server/am/AppBatteryTracker$$ExternalSyntheticLambda0;
-Lcom/android/server/am/AppBatteryTracker$$ExternalSyntheticLambda1;
-Lcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;
-Lcom/android/server/am/AppBatteryTracker$BatteryUsage;
-Lcom/android/server/am/AppBatteryTracker$ImmutableBatteryUsage;
-Lcom/android/server/am/AppBatteryTracker;
-Lcom/android/server/am/AppBindServiceEventsTracker$AppBindServiceEventsPolicy;
-Lcom/android/server/am/AppBindServiceEventsTracker;
-Lcom/android/server/am/AppBroadcastEventsTracker$AppBroadcastEventsPolicy;
-Lcom/android/server/am/AppBroadcastEventsTracker;
-Lcom/android/server/am/AppErrors;
-Lcom/android/server/am/AppExitInfoTracker$1;
-Lcom/android/server/am/AppExitInfoTracker$2;
-Lcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;
-Lcom/android/server/am/AppExitInfoTracker$AppTraceRetriever;
-Lcom/android/server/am/AppExitInfoTracker$IsolatedUidRecords;
-Lcom/android/server/am/AppExitInfoTracker$KillHandler;
-Lcom/android/server/am/AppExitInfoTracker;
-Lcom/android/server/am/AppFGSTracker$1;
-Lcom/android/server/am/AppFGSTracker$AppFGSPolicy;
-Lcom/android/server/am/AppFGSTracker$MyHandler;
-Lcom/android/server/am/AppFGSTracker$NotificationListener;
-Lcom/android/server/am/AppFGSTracker$PackageDurations;
-Lcom/android/server/am/AppFGSTracker;
-Lcom/android/server/am/AppMediaSessionTracker$$ExternalSyntheticLambda0;
-Lcom/android/server/am/AppMediaSessionTracker$AppMediaSessionPolicy;
-Lcom/android/server/am/AppMediaSessionTracker;
-Lcom/android/server/am/AppPermissionTracker$AppPermissionPolicy;
-Lcom/android/server/am/AppPermissionTracker$MyHandler;
-Lcom/android/server/am/AppPermissionTracker;
-Lcom/android/server/am/AppProfiler$$ExternalSyntheticLambda0;
-Lcom/android/server/am/AppProfiler$1;
-Lcom/android/server/am/AppProfiler$BgHandler;
-Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;
-Lcom/android/server/am/AppProfiler$ProcessCpuThread;
-Lcom/android/server/am/AppProfiler$ProfileData;
-Lcom/android/server/am/AppProfiler;
-Lcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda1;
-Lcom/android/server/am/AppRestrictionController$1;
-Lcom/android/server/am/AppRestrictionController$2;
-Lcom/android/server/am/AppRestrictionController$3;
-Lcom/android/server/am/AppRestrictionController$4;
-Lcom/android/server/am/AppRestrictionController$5;
-Lcom/android/server/am/AppRestrictionController$BgHandler;
-Lcom/android/server/am/AppRestrictionController$ConstantsObserver;
-Lcom/android/server/am/AppRestrictionController$Injector;
-Lcom/android/server/am/AppRestrictionController$NotificationHelper$1;
-Lcom/android/server/am/AppRestrictionController$NotificationHelper;
-Lcom/android/server/am/AppRestrictionController$RestrictionSettings;
-Lcom/android/server/am/AppRestrictionController$TrackerInfo;
-Lcom/android/server/am/AppRestrictionController$UidBatteryUsageProvider;
-Lcom/android/server/am/AppRestrictionController;
-Lcom/android/server/am/AppStartInfoTracker$1;
-Lcom/android/server/am/AppStartInfoTracker$2;
-Lcom/android/server/am/AppStartInfoTracker;
Lcom/android/server/am/ApplicationThreadDeferred;
-Lcom/android/server/am/BaseAppStateDurations;
-Lcom/android/server/am/BaseAppStateDurationsTracker$SimplePackageDurations;
-Lcom/android/server/am/BaseAppStateDurationsTracker$UidStateDurations;
-Lcom/android/server/am/BaseAppStateDurationsTracker;
-Lcom/android/server/am/BaseAppStateEvents$Factory;
-Lcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;
-Lcom/android/server/am/BaseAppStateEvents;
-Lcom/android/server/am/BaseAppStateEventsTracker$BaseAppStateEventsPolicy;
-Lcom/android/server/am/BaseAppStateEventsTracker;
-Lcom/android/server/am/BaseAppStatePolicy;
-Lcom/android/server/am/BaseAppStateTimeEvents;
-Lcom/android/server/am/BaseAppStateTimeSlotEvents;
-Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;
-Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$H;
-Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;
-Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;
-Lcom/android/server/am/BaseAppStateTracker$Injector;
-Lcom/android/server/am/BaseAppStateTracker$StateListener;
-Lcom/android/server/am/BaseAppStateTracker;
-Lcom/android/server/am/BaseErrorDialog;
-Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda14;
-Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda15;
-Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda16;
-Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda33;
-Lcom/android/server/am/BatteryStatsService$1;
-Lcom/android/server/am/BatteryStatsService$2;
Lcom/android/server/am/BatteryStatsService$3;
Lcom/android/server/am/BatteryStatsService$LocalService;
-Lcom/android/server/am/BatteryStatsService$WakeupReasonThread;
-Lcom/android/server/am/BatteryStatsService;
-Lcom/android/server/am/BroadcastConstants$SettingsObserver;
-Lcom/android/server/am/BroadcastConstants;
-Lcom/android/server/am/BroadcastController$1;
-Lcom/android/server/am/BroadcastController;
-Lcom/android/server/am/BroadcastDeliveryFailedException;
-Lcom/android/server/am/BroadcastFilter;
-Lcom/android/server/am/BroadcastHistory;
-Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;
-Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;
-Lcom/android/server/am/BroadcastProcessQueue$BroadcastRecordConsumer;
-Lcom/android/server/am/BroadcastProcessQueue;
-Lcom/android/server/am/BroadcastQueue;
-Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda12;
-Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda13;
-Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda14;
-Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda15;
-Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda16;
-Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda17;
-Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda18;
-Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda6;
-Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda7;
-Lcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;
-Lcom/android/server/am/BroadcastQueueModernImpl;
-Lcom/android/server/am/BroadcastRecord;
-Lcom/android/server/am/BroadcastRetryException;
-Lcom/android/server/am/BroadcastSkipPolicy;
-Lcom/android/server/am/CacheOomRanker$1;
-Lcom/android/server/am/CacheOomRanker$CacheUseComparator;
-Lcom/android/server/am/CacheOomRanker$LastActivityTimeComparator;
-Lcom/android/server/am/CacheOomRanker$LastRssComparator;
-Lcom/android/server/am/CacheOomRanker$ProcessDependencies;
-Lcom/android/server/am/CacheOomRanker$ProcessDependenciesImpl;
-Lcom/android/server/am/CacheOomRanker$RssComparator;
-Lcom/android/server/am/CacheOomRanker$ScoreComparator;
-Lcom/android/server/am/CacheOomRanker;
-Lcom/android/server/am/CachedAppOptimizer$1;
-Lcom/android/server/am/CachedAppOptimizer$2;
-Lcom/android/server/am/CachedAppOptimizer$3;
-Lcom/android/server/am/CachedAppOptimizer$4;
-Lcom/android/server/am/CachedAppOptimizer$AggregatedCompactionStats;
-Lcom/android/server/am/CachedAppOptimizer$AggregatedProcessCompactionStats;
-Lcom/android/server/am/CachedAppOptimizer$AggregatedSourceCompactionStats;
-Lcom/android/server/am/CachedAppOptimizer$CancelCompactReason;
-Lcom/android/server/am/CachedAppOptimizer$CompactProfile;
-Lcom/android/server/am/CachedAppOptimizer$CompactSource;
-Lcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies;
-Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;
-Lcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;
-Lcom/android/server/am/CachedAppOptimizer$ProcessDependencies;
-Lcom/android/server/am/CachedAppOptimizer$PropertyChangedCallbackForTest;
-Lcom/android/server/am/CachedAppOptimizer$SettingsContentObserver;
-Lcom/android/server/am/CachedAppOptimizer;
-Lcom/android/server/am/ComponentAliasResolver$1;
-Lcom/android/server/am/ComponentAliasResolver;
-Lcom/android/server/am/ContentProviderConnection;
-Lcom/android/server/am/ContentProviderHelper;
-Lcom/android/server/am/DropboxRateLimiter$Clock;
-Lcom/android/server/am/DropboxRateLimiter$DefaultClock;
-Lcom/android/server/am/DropboxRateLimiter;
-Lcom/android/server/am/FgsTempAllowList;
-Lcom/android/server/am/ForegroundServiceTypeLoggerModule;
-Lcom/android/server/am/Freezer;
-Lcom/android/server/am/HostingRecord;
-Lcom/android/server/am/InstrumentationReporter$MyThread;
-Lcom/android/server/am/InstrumentationReporter;
-Lcom/android/server/am/LmkdConnection$LmkdConnectionListener;
-Lcom/android/server/am/LmkdConnection;
-Lcom/android/server/am/LowMemDetector$LowMemThread;
-Lcom/android/server/am/LowMemDetector;
-Lcom/android/server/am/NativeCrashListener;
-Lcom/android/server/am/OomAdjuster$$ExternalSyntheticLambda0;
-Lcom/android/server/am/OomAdjuster$1;
-Lcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;
-Lcom/android/server/am/OomAdjuster$Injector;
-Lcom/android/server/am/OomAdjuster;
-Lcom/android/server/am/OomAdjusterDebugLogger;
-Lcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionIgnoringReachableClientsConsumer;
-Lcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionsConsumer;
-Lcom/android/server/am/OomAdjusterModernImpl$ComputeHostConsumer;
-Lcom/android/server/am/OomAdjusterModernImpl$Connection;
-Lcom/android/server/am/OomAdjusterModernImpl$OomAdjusterArgs;
-Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNode;
-Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$$ExternalSyntheticLambda0;
-Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$$ExternalSyntheticLambda1;
-Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$$ExternalSyntheticLambda2;
-Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$$ExternalSyntheticLambda3;
-Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$LinkedProcessRecordList;
-Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;
-Lcom/android/server/am/OomAdjusterModernImpl$ReachableCollectingConsumer;
-Lcom/android/server/am/OomAdjusterModernImpl;
-Lcom/android/server/am/OomConnection$OomConnectionListener;
-Lcom/android/server/am/OomConnection$OomConnectionThread;
-Lcom/android/server/am/OomConnection;
-Lcom/android/server/am/PendingIntentController;
-Lcom/android/server/am/PendingIntentRecord;
-Lcom/android/server/am/PendingStartActivityUids;
-Lcom/android/server/am/PendingTempAllowlists;
-Lcom/android/server/am/PhantomProcessList$Injector;
-Lcom/android/server/am/PhantomProcessList;
-Lcom/android/server/am/PreBootBroadcaster;
-Lcom/android/server/am/ProcessList$$ExternalSyntheticLambda4;
-Lcom/android/server/am/ProcessList$1;
-Lcom/android/server/am/ProcessList$2;
-Lcom/android/server/am/ProcessList$ImperceptibleKillRunner$H;
-Lcom/android/server/am/ProcessList$ImperceptibleKillRunner$IdlenessReceiver;
-Lcom/android/server/am/ProcessList$ImperceptibleKillRunner;
-Lcom/android/server/am/ProcessList$IsolatedUidRange;
-Lcom/android/server/am/ProcessList$IsolatedUidRangeAllocator;
-Lcom/android/server/am/ProcessList$KillHandler;
-Lcom/android/server/am/ProcessList$MyProcessMap;
-Lcom/android/server/am/ProcessList$ProcStartHandler;
-Lcom/android/server/am/ProcessList;
-Lcom/android/server/am/ProcessRecord;
-Lcom/android/server/am/ProcessStatsService$1;
-Lcom/android/server/am/ProcessStatsService$3;
-Lcom/android/server/am/ProcessStatsService$4;
-Lcom/android/server/am/ProcessStatsService$LocalService;
-Lcom/android/server/am/ProcessStatsService;
-Lcom/android/server/am/ProviderMap;
-Lcom/android/server/am/ReceiverList;
-Lcom/android/server/am/ServiceRecord;
-Lcom/android/server/am/TraceErrorLogger;
-Lcom/android/server/am/UidObserverController$$ExternalSyntheticLambda0;
-Lcom/android/server/am/UidObserverController$ChangeRecord;
-Lcom/android/server/am/UidObserverController;
-Lcom/android/server/am/UidProcessMap;
-Lcom/android/server/am/UserController$1;
-Lcom/android/server/am/UserController$Injector$1;
-Lcom/android/server/am/UserController$Injector;
-Lcom/android/server/am/UserController$UserProgressListener;
-Lcom/android/server/am/UserController;
-Lcom/android/server/am/UserState;
-Lcom/android/server/app/GameManagerService$LocalService;
-Lcom/android/server/app/GameManagerService;
-Lcom/android/server/app/GameServiceProviderInstanceImpl$4;
+Lcom/android/server/am/BroadcastQueueImpl$BroadcastAnrTimer;
Lcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda0;
Lcom/android/server/apphibernation/AppHibernationService$LocalService;
-Lcom/android/server/appop/AppOpMigrationHelper;
-Lcom/android/server/appop/AppOpMigrationHelperImpl;
-Lcom/android/server/appop/AppOpsCheckingServiceImpl;
-Lcom/android/server/appop/AppOpsCheckingServiceInterface$AppOpsModeChangedListener;
-Lcom/android/server/appop/AppOpsCheckingServiceInterface;
-Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;
-Lcom/android/server/appop/AppOpsManagerLocal;
-Lcom/android/server/appop/AppOpsRecentAccessPersistence;
-Lcom/android/server/appop/AppOpsRestrictions$AppOpsRestrictionRemovedListener;
-Lcom/android/server/appop/AppOpsRestrictions;
-Lcom/android/server/appop/AppOpsRestrictionsImpl;
-Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda6;
-Lcom/android/server/appop/AppOpsService$1$1;
-Lcom/android/server/appop/AppOpsService$1;
-Lcom/android/server/appop/AppOpsService$2;
-Lcom/android/server/appop/AppOpsService$3;
-Lcom/android/server/appop/AppOpsService$4;
-Lcom/android/server/appop/AppOpsService$8;
-Lcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl;
-Lcom/android/server/appop/AppOpsService$AppOpsManagerLocalImpl;
Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda11;
-Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda1;
+Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda5;
Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda7;
Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda9;
-Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;
-Lcom/android/server/appop/AppOpsService$Constants;
-Lcom/android/server/appop/AppOpsService$ModeCallback;
-Lcom/android/server/appop/AppOpsService$Op;
-Lcom/android/server/appop/AppOpsService$Ops;
-Lcom/android/server/appop/AppOpsService$Shell;
-Lcom/android/server/appop/AppOpsService$UidState;
-Lcom/android/server/appop/AppOpsService;
-Lcom/android/server/appop/AppOpsUidStateTracker;
-Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
-Lcom/android/server/appop/AttributedOp$InProgressStartOpEventPool;
-Lcom/android/server/appop/AttributedOp$OpEventProxyInfoPool;
-Lcom/android/server/appop/AttributedOp;
-Lcom/android/server/appop/AudioRestrictionManager;
-Lcom/android/server/appop/DiscreteRegistry$DiscreteOps;
-Lcom/android/server/appop/DiscreteRegistry;
-Lcom/android/server/appop/HistoricalRegistry$1;
-Lcom/android/server/appop/HistoricalRegistry;
-Lcom/android/server/appop/OnOpModeChangedListener;
-Lcom/android/server/biometrics/sensors/face/FaceService;
-Lcom/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider$BiometricTaskStackListener;
-Lcom/android/server/broadcastradio/hal1/BroadcastRadioService;
-Lcom/android/server/broadcastradio/hal1/Convert;
-Lcom/android/server/broadcastradio/hal1/Tuner;
-Lcom/android/server/broadcastradio/hal1/TunerCallback;
-Lcom/android/server/companion/virtual/GenericWindowPolicyController$RunningAppsChangedListener;
-Lcom/android/server/companion/virtual/InputController;
-Lcom/android/server/companion/virtual/VirtualDeviceImpl;
-Lcom/android/server/companion/virtual/VirtualDeviceManagerInternal;
-Lcom/android/server/compat/CompatChange$ChangeListener;
-Lcom/android/server/compat/CompatChange;
-Lcom/android/server/compat/CompatConfig;
-Lcom/android/server/compat/OverrideValidatorImpl$SettingsObserver;
-Lcom/android/server/compat/OverrideValidatorImpl;
-Lcom/android/server/compat/PlatformCompat$1;
-Lcom/android/server/compat/PlatformCompat;
-Lcom/android/server/compat/PlatformCompatNative;
-Lcom/android/server/compat/config/Change;
-Lcom/android/server/compat/config/Config;
-Lcom/android/server/compat/config/XmlParser;
-Lcom/android/server/connectivity/Vpn;
-Lcom/android/server/coverage/CoverageService;
-Lcom/android/server/crashrecovery/CrashRecoveryHelper;
-Lcom/android/server/criticalevents/CriticalEventLog$$ExternalSyntheticLambda0;
-Lcom/android/server/criticalevents/CriticalEventLog$$ExternalSyntheticLambda1;
-Lcom/android/server/criticalevents/CriticalEventLog$ILogLoader;
-Lcom/android/server/criticalevents/CriticalEventLog$LogLoader;
-Lcom/android/server/criticalevents/CriticalEventLog$ThreadSafeRingBuffer;
-Lcom/android/server/criticalevents/CriticalEventLog;
-Lcom/android/server/devicepolicy/CryptoTestHelper;
-Lcom/android/server/display/AutomaticBrightnessController$TaskStackListenerImpl;
-Lcom/android/server/display/DeviceStateToLayoutMap;
-Lcom/android/server/display/DisplayAdapter$$ExternalSyntheticLambda0;
-Lcom/android/server/display/DisplayAdapter$$ExternalSyntheticLambda1;
-Lcom/android/server/display/DisplayAdapter$Listener;
-Lcom/android/server/display/DisplayAdapter;
-Lcom/android/server/display/DisplayBlanker;
-Lcom/android/server/display/DisplayControl;
-Lcom/android/server/display/DisplayDevice;
-Lcom/android/server/display/DisplayDeviceConfig$$ExternalSyntheticLambda0;
-Lcom/android/server/display/DisplayDeviceConfig$1;
-Lcom/android/server/display/DisplayDeviceConfig$ThermalBrightnessThrottlingData$ThrottlingLevel;
-Lcom/android/server/display/DisplayDeviceConfig$ThermalBrightnessThrottlingData;
-Lcom/android/server/display/DisplayDeviceConfig;
-Lcom/android/server/display/DisplayDeviceInfo;
-Lcom/android/server/display/DisplayDeviceRepository$Listener;
-Lcom/android/server/display/DisplayDeviceRepository;
-Lcom/android/server/display/DisplayGroup;
-Lcom/android/server/display/DisplayInfoProxy;
-Lcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda4;
-Lcom/android/server/display/DisplayManagerService$1;
-Lcom/android/server/display/DisplayManagerService$2;
-Lcom/android/server/display/DisplayManagerService$3;
-Lcom/android/server/display/DisplayManagerService$BinderService;
-Lcom/android/server/display/DisplayManagerService$BrightnessPair;
-Lcom/android/server/display/DisplayManagerService$DisplayManagerHandler;
-Lcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector;
-Lcom/android/server/display/DisplayManagerService$Injector;
+Lcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;
+Lcom/android/server/devicepolicy/DevicePolicyManagerService;
Lcom/android/server/display/DisplayManagerService$LocalService;
-Lcom/android/server/display/DisplayManagerService$LogicalDisplayListener;
-Lcom/android/server/display/DisplayManagerService$SyncRoot;
-Lcom/android/server/display/DisplayManagerService$UidImportanceListener;
-Lcom/android/server/display/DisplayManagerService;
-Lcom/android/server/display/DisplayManagerShellCommand;
-Lcom/android/server/display/ExternalDisplayPolicy$Injector;
-Lcom/android/server/display/ExternalDisplayPolicy$SkinThermalStatusObserver;
-Lcom/android/server/display/ExternalDisplayPolicy;
-Lcom/android/server/display/ExternalDisplayStatsService$1$$ExternalSyntheticLambda0;
-Lcom/android/server/display/ExternalDisplayStatsService$1$$ExternalSyntheticLambda1;
-Lcom/android/server/display/ExternalDisplayStatsService$1;
-Lcom/android/server/display/ExternalDisplayStatsService$2;
-Lcom/android/server/display/ExternalDisplayStatsService$Injector;
-Lcom/android/server/display/ExternalDisplayStatsService;
-Lcom/android/server/display/HighBrightnessModeMetadataMapper;
-Lcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;
-Lcom/android/server/display/LocalDisplayAdapter$DisplayEventListener;
-Lcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;
-Lcom/android/server/display/LocalDisplayAdapter$Injector;
-Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;
-Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayEventListener;
-Lcom/android/server/display/LocalDisplayAdapter$ProxyDisplayEventReceiver;
-Lcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;
-Lcom/android/server/display/LocalDisplayAdapter;
-Lcom/android/server/display/LogicalDisplay;
-Lcom/android/server/display/LogicalDisplayMapper$$ExternalSyntheticLambda2;
-Lcom/android/server/display/LogicalDisplayMapper$$ExternalSyntheticLambda3;
-Lcom/android/server/display/LogicalDisplayMapper$Listener;
-Lcom/android/server/display/LogicalDisplayMapper$LogicalDisplayMapperHandler;
-Lcom/android/server/display/LogicalDisplayMapper;
-Lcom/android/server/display/OverlayDisplayAdapter;
-Lcom/android/server/display/PersistentDataStore$BrightnessConfigurations;
-Lcom/android/server/display/PersistentDataStore$DisplayState;
-Lcom/android/server/display/PersistentDataStore$Injector;
-Lcom/android/server/display/PersistentDataStore$StableDeviceValues;
-Lcom/android/server/display/PersistentDataStore;
-Lcom/android/server/display/SmallAreaDetectionController;
-Lcom/android/server/display/VirtualDisplayAdapter$1;
-Lcom/android/server/display/VirtualDisplayAdapter$SurfaceControlDisplayFactory;
-Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;
-Lcom/android/server/display/VirtualDisplayAdapter;
-Lcom/android/server/display/WifiDisplayAdapter;
-Lcom/android/server/display/config/AutoBrightnessModeName;
-Lcom/android/server/display/config/AutoBrightnessSettingName;
-Lcom/android/server/display/config/BrightnessThresholds;
-Lcom/android/server/display/config/BrightnessThrottlingMap;
-Lcom/android/server/display/config/BrightnessThrottlingPoint;
-Lcom/android/server/display/config/DisplayBrightnessMappingConfig;
-Lcom/android/server/display/config/DisplayConfiguration;
-Lcom/android/server/display/config/HbmTiming;
-Lcom/android/server/display/config/HdrBrightnessData;
-Lcom/android/server/display/config/HighBrightnessMode;
-Lcom/android/server/display/config/HighBrightnessModeData;
-Lcom/android/server/display/config/HysteresisLevels;
-Lcom/android/server/display/config/IntegerArray;
-Lcom/android/server/display/config/NitsMap;
-Lcom/android/server/display/config/Point;
-Lcom/android/server/display/config/PredefinedBrightnessLimitNames;
-Lcom/android/server/display/config/RefreshRateData;
-Lcom/android/server/display/config/SensorData;
-Lcom/android/server/display/config/SensorDetails;
-Lcom/android/server/display/config/SupportedModeData;
-Lcom/android/server/display/config/ThermalStatus;
-Lcom/android/server/display/config/ThermalThrottling;
-Lcom/android/server/display/config/Thresholds;
-Lcom/android/server/display/config/XmlParser;
-Lcom/android/server/display/feature/DeviceConfigParameterProvider;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda0;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda1;
-Lcom/android/server/display/feature/DisplayManagerFlags$FlagState;
-Lcom/android/server/display/feature/DisplayManagerFlags;
-Lcom/android/server/display/layout/DisplayIdProducer;
-Lcom/android/server/display/layout/Layout$Display;
-Lcom/android/server/display/layout/Layout;
-Lcom/android/server/display/mode/DisplayModeDirector$$ExternalSyntheticLambda0;
-Lcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda10;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda11;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda12;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda13;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda2;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda5;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda6;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda7;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda8;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda9;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$1;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$LightSensorEventListener$1;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;
-Lcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;
-Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda0;
-Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda1;
-Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda2;
-Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda3;
-Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;
-Lcom/android/server/display/mode/DisplayModeDirector$DisplayDeviceConfigProvider;
-Lcom/android/server/display/mode/DisplayModeDirector$DisplayModeDirectorHandler;
-Lcom/android/server/display/mode/DisplayModeDirector$DisplayObserver;
-Lcom/android/server/display/mode/DisplayModeDirector$HbmObserver;
-Lcom/android/server/display/mode/DisplayModeDirector$Injector;
-Lcom/android/server/display/mode/DisplayModeDirector$RealInjector;
-Lcom/android/server/display/mode/DisplayModeDirector$SettingsObserver$1;
-Lcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;
-Lcom/android/server/display/mode/DisplayModeDirector$UdfpsObserver;
-Lcom/android/server/display/mode/DisplayModeDirector;
-Lcom/android/server/display/mode/ProximitySensorObserver;
-Lcom/android/server/display/mode/RefreshRateVote$PhysicalVote;
-Lcom/android/server/display/mode/RefreshRateVote$RenderVote;
-Lcom/android/server/display/mode/RefreshRateVote;
-Lcom/android/server/display/mode/SkinThermalStatusObserver;
-Lcom/android/server/display/mode/SupportedRefreshRatesVote;
-Lcom/android/server/display/mode/SyntheticModeManager;
-Lcom/android/server/display/mode/SystemRequestObserver$1;
-Lcom/android/server/display/mode/SystemRequestObserver;
-Lcom/android/server/display/mode/Vote;
-Lcom/android/server/display/mode/VotesStatsReporter;
-Lcom/android/server/display/mode/VotesStorage$Listener;
-Lcom/android/server/display/mode/VotesStorage;
-Lcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector$Listener;
-Lcom/android/server/display/notifications/DisplayNotificationManager$1;
-Lcom/android/server/display/notifications/DisplayNotificationManager$Injector;
-Lcom/android/server/display/notifications/DisplayNotificationManager;
-Lcom/android/server/display/utils/DebugUtils;
-Lcom/android/server/display/utils/DeviceConfigParsingUtils;
Lcom/android/server/dreams/DreamManagerService$LocalService;
-Lcom/android/server/firewall/AndFilter$1;
-Lcom/android/server/firewall/AndFilter;
-Lcom/android/server/firewall/CategoryFilter$1;
-Lcom/android/server/firewall/CategoryFilter;
-Lcom/android/server/firewall/Filter;
-Lcom/android/server/firewall/FilterFactory;
-Lcom/android/server/firewall/FilterList;
-Lcom/android/server/firewall/IntentFirewall$AMSInterface;
-Lcom/android/server/firewall/IntentFirewall$FirewallHandler;
-Lcom/android/server/firewall/IntentFirewall$FirewallIntentFilter;
-Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;
-Lcom/android/server/firewall/IntentFirewall$Rule;
-Lcom/android/server/firewall/IntentFirewall$RuleObserver;
-Lcom/android/server/firewall/IntentFirewall;
-Lcom/android/server/firewall/NotFilter$1;
-Lcom/android/server/firewall/NotFilter;
-Lcom/android/server/firewall/OrFilter$1;
-Lcom/android/server/firewall/OrFilter;
-Lcom/android/server/firewall/PortFilter$1;
-Lcom/android/server/firewall/PortFilter;
-Lcom/android/server/firewall/SenderFilter$1;
-Lcom/android/server/firewall/SenderFilter$2;
-Lcom/android/server/firewall/SenderFilter$3;
-Lcom/android/server/firewall/SenderFilter$4;
-Lcom/android/server/firewall/SenderFilter$5;
-Lcom/android/server/firewall/SenderFilter;
-Lcom/android/server/firewall/SenderPackageFilter$1;
-Lcom/android/server/firewall/SenderPackageFilter;
-Lcom/android/server/firewall/SenderPermissionFilter$1;
-Lcom/android/server/firewall/SenderPermissionFilter;
-Lcom/android/server/firewall/StringFilter$10;
-Lcom/android/server/firewall/StringFilter$1;
-Lcom/android/server/firewall/StringFilter$2;
-Lcom/android/server/firewall/StringFilter$3;
-Lcom/android/server/firewall/StringFilter$4;
-Lcom/android/server/firewall/StringFilter$5;
-Lcom/android/server/firewall/StringFilter$6;
-Lcom/android/server/firewall/StringFilter$7;
-Lcom/android/server/firewall/StringFilter$8;
-Lcom/android/server/firewall/StringFilter$9;
-Lcom/android/server/firewall/StringFilter$ContainsFilter;
-Lcom/android/server/firewall/StringFilter$EqualsFilter;
-Lcom/android/server/firewall/StringFilter$IsNullFilter;
-Lcom/android/server/firewall/StringFilter$PatternStringFilter;
-Lcom/android/server/firewall/StringFilter$RegexFilter;
-Lcom/android/server/firewall/StringFilter$StartsWithFilter;
-Lcom/android/server/firewall/StringFilter$ValueProvider;
-Lcom/android/server/firewall/StringFilter;
-Lcom/android/server/flags/DynamicFlagBinderDelegate$$ExternalSyntheticLambda0;
-Lcom/android/server/flags/DynamicFlagBinderDelegate$$ExternalSyntheticLambda1;
-Lcom/android/server/flags/DynamicFlagBinderDelegate$1;
-Lcom/android/server/flags/DynamicFlagBinderDelegate$BinderGriever;
-Lcom/android/server/flags/DynamicFlagBinderDelegate;
-Lcom/android/server/flags/FeatureFlagsBinder;
-Lcom/android/server/flags/FeatureFlagsService$PermissionsChecker;
-Lcom/android/server/flags/FeatureFlagsService;
-Lcom/android/server/flags/FlagCache$$ExternalSyntheticLambda0;
-Lcom/android/server/flags/FlagCache;
-Lcom/android/server/flags/FlagOverrideStore$FlagChangeCallback;
-Lcom/android/server/flags/FlagOverrideStore;
-Lcom/android/server/flags/FlagsShellCommand;
-Lcom/android/server/flags/GlobalSettingsProxy;
-Lcom/android/server/flags/SettingsProxy;
-Lcom/android/server/gpu/GpuService;
-Lcom/android/server/graphics/fonts/FontManagerService$Lifecycle;
-Lcom/android/server/input/InputManagerInternal;
-Lcom/android/server/input/InputManagerService$2;
-Lcom/android/server/input/InputManagerService$AdditionalDisplayInputProperties;
-Lcom/android/server/input/InputManagerService$InputFilterHost;
-Lcom/android/server/input/InputManagerService$InputManagerHandler;
Lcom/android/server/input/InputManagerService$LocalService;
-Lcom/android/server/input/InputManagerService;
-Lcom/android/server/input/InputShellCommand;
-Lcom/android/server/input/NativeInputManagerService$NativeImpl;
-Lcom/android/server/input/NativeInputManagerService;
-Lcom/android/server/input/TouchpadFingerState;
-Lcom/android/server/input/TouchpadHardwareProperties;
-Lcom/android/server/input/TouchpadHardwareState;
-Lcom/android/server/input/debug/FocusEventDebugView;
Lcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;
Lcom/android/server/job/JobSchedulerService$4;
Lcom/android/server/job/controllers/BackgroundJobsController$2;
Lcom/android/server/job/controllers/QuotaController$TempAllowlistTracker;
-Lcom/android/server/lights/LightsManager;
-Lcom/android/server/lights/LightsService$1;
-Lcom/android/server/lights/LightsService$LightImpl;
-Lcom/android/server/lights/LightsService$LightsManagerBinderService;
-Lcom/android/server/lights/LightsService$VintfHalCache;
-Lcom/android/server/lights/LightsService;
-Lcom/android/server/lights/LogicalLight;
-Lcom/android/server/location/gnss/GnssConfiguration;
-Lcom/android/server/location/gnss/GnssNetworkConnectivityHandler;
-Lcom/android/server/location/gnss/GnssVisibilityControl;
-Lcom/android/server/location/gnss/hal/GnssNative;
-Lcom/android/server/locksettings/SyntheticPasswordManager;
-Lcom/android/server/media/projection/MediaProjectionManagerService$1;
Lcom/android/server/net/NetworkManagementService$LocalService;
Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;
Lcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;
Lcom/android/server/net/watchlist/NetworkWatchlistService$1;
-Lcom/android/server/notification/NotificationManagerService$13;
-Lcom/android/server/om/OverlayActorEnforcer$ActorState;
-Lcom/android/server/om/OverlayActorEnforcer;
-Lcom/android/server/om/OverlayManagerService;
-Lcom/android/server/om/OverlayReferenceMapper$1;
-Lcom/android/server/om/OverlayReferenceMapper$Provider;
-Lcom/android/server/om/OverlayReferenceMapper;
-Lcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;
-Lcom/android/server/os/DeviceIdentifiersPolicyService;
-Lcom/android/server/pdb/PersistentDataBlockService;
-Lcom/android/server/permission/PermissionManagerLocal;
-Lcom/android/server/permission/access/AccessCheckingService;
-Lcom/android/server/permission/access/AccessPersistence$Companion;
-Lcom/android/server/permission/access/AccessPersistence$WriteHandler;
-Lcom/android/server/permission/access/AccessPersistence;
-Lcom/android/server/permission/access/AccessPolicy$Companion;
-Lcom/android/server/permission/access/AccessPolicy;
-Lcom/android/server/permission/access/AccessState;
-Lcom/android/server/permission/access/ExternalState;
-Lcom/android/server/permission/access/GetStateScope;
-Lcom/android/server/permission/access/MutableAccessState;
-Lcom/android/server/permission/access/MutableExternalState;
-Lcom/android/server/permission/access/MutableSystemState;
-Lcom/android/server/permission/access/MutableUserState;
-Lcom/android/server/permission/access/MutateStateScope;
-Lcom/android/server/permission/access/SchemePolicy;
-Lcom/android/server/permission/access/SystemState;
-Lcom/android/server/permission/access/UserState;
-Lcom/android/server/permission/access/WritableState;
-Lcom/android/server/permission/access/appop/AppIdAppOpMigration$Companion;
-Lcom/android/server/permission/access/appop/AppIdAppOpMigration;
-Lcom/android/server/permission/access/appop/AppIdAppOpPersistence$Companion;
-Lcom/android/server/permission/access/appop/AppIdAppOpPersistence;
-Lcom/android/server/permission/access/appop/AppIdAppOpPolicy$Companion;
-Lcom/android/server/permission/access/appop/AppIdAppOpPolicy$OnAppOpModeChangedListener;
-Lcom/android/server/permission/access/appop/AppIdAppOpPolicy;
-Lcom/android/server/permission/access/appop/AppIdAppOpUpgrade;
-Lcom/android/server/permission/access/appop/AppOpService$Companion;
-Lcom/android/server/permission/access/appop/AppOpService$OnAppIdAppOpModeChangedListener;
-Lcom/android/server/permission/access/appop/AppOpService$OnPackageAppOpModeChangedListener;
Lcom/android/server/permission/access/appop/AppOpService;
-Lcom/android/server/permission/access/appop/BaseAppOpPersistence$Companion;
-Lcom/android/server/permission/access/appop/BaseAppOpPersistence;
-Lcom/android/server/permission/access/appop/BaseAppOpPolicy;
-Lcom/android/server/permission/access/appop/PackageAppOpMigration$Companion;
-Lcom/android/server/permission/access/appop/PackageAppOpMigration;
-Lcom/android/server/permission/access/appop/PackageAppOpPersistence$Companion;
-Lcom/android/server/permission/access/appop/PackageAppOpPersistence;
-Lcom/android/server/permission/access/appop/PackageAppOpPolicy$Companion;
-Lcom/android/server/permission/access/appop/PackageAppOpPolicy$OnAppOpModeChangedListener;
-Lcom/android/server/permission/access/appop/PackageAppOpPolicy;
-Lcom/android/server/permission/access/appop/PackageAppOpUpgrade;
-Lcom/android/server/permission/access/collection/ArraySetExtensionsKt;
-Lcom/android/server/permission/access/immutable/Immutable;
-Lcom/android/server/permission/access/immutable/IndexedList;
-Lcom/android/server/permission/access/immutable/IndexedListSet;
-Lcom/android/server/permission/access/immutable/IndexedListSetExtensionsKt;
-Lcom/android/server/permission/access/immutable/IndexedMap;
-Lcom/android/server/permission/access/immutable/IndexedReferenceMap;
-Lcom/android/server/permission/access/immutable/IndexedSet;
-Lcom/android/server/permission/access/immutable/IndexedSetExtensionsKt;
-Lcom/android/server/permission/access/immutable/IntMap;
-Lcom/android/server/permission/access/immutable/IntMapExtensionsKt;
-Lcom/android/server/permission/access/immutable/IntMapKt;
-Lcom/android/server/permission/access/immutable/IntReferenceMap;
-Lcom/android/server/permission/access/immutable/IntReferenceMapExtensionsKt;
-Lcom/android/server/permission/access/immutable/IntSet;
-Lcom/android/server/permission/access/immutable/IntSetExtensionsKt;
-Lcom/android/server/permission/access/immutable/MutableIndexedList;
-Lcom/android/server/permission/access/immutable/MutableIndexedListSet;
-Lcom/android/server/permission/access/immutable/MutableIndexedMap;
-Lcom/android/server/permission/access/immutable/MutableIndexedReferenceMap;
-Lcom/android/server/permission/access/immutable/MutableIndexedSet;
-Lcom/android/server/permission/access/immutable/MutableIntMap;
-Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;
-Lcom/android/server/permission/access/immutable/MutableIntSet;
-Lcom/android/server/permission/access/immutable/MutableReference;
-Lcom/android/server/permission/access/permission/AppIdPermissionMigration$Companion;
-Lcom/android/server/permission/access/permission/AppIdPermissionMigration;
-Lcom/android/server/permission/access/permission/AppIdPermissionPersistence$Companion;
-Lcom/android/server/permission/access/permission/AppIdPermissionPersistence;
-Lcom/android/server/permission/access/permission/AppIdPermissionPolicy$Companion;
-Lcom/android/server/permission/access/permission/AppIdPermissionPolicy$OnPermissionFlagsChangedListener;
-Lcom/android/server/permission/access/permission/AppIdPermissionPolicy;
-Lcom/android/server/permission/access/permission/AppIdPermissionUpgrade$Companion;
-Lcom/android/server/permission/access/permission/AppIdPermissionUpgrade;
-Lcom/android/server/permission/access/permission/DevicePermissionPersistence$Companion;
-Lcom/android/server/permission/access/permission/DevicePermissionPersistence;
-Lcom/android/server/permission/access/permission/DevicePermissionPolicy$Companion;
-Lcom/android/server/permission/access/permission/DevicePermissionPolicy$OnDevicePermissionFlagsChangedListener;
-Lcom/android/server/permission/access/permission/DevicePermissionPolicy;
-Lcom/android/server/permission/access/permission/Permission$Companion;
-Lcom/android/server/permission/access/permission/Permission;
-Lcom/android/server/permission/access/permission/PermissionManagerLocalImpl;
-Lcom/android/server/permission/access/permission/PermissionService$Companion;
-Lcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;
-Lcom/android/server/permission/access/permission/PermissionService$OnPermissionsChangeListeners$Companion;
-Lcom/android/server/permission/access/permission/PermissionService$OnPermissionsChangeListeners;
-Lcom/android/server/permission/access/permission/PermissionService;
-Lcom/android/server/permission/access/util/PermissionApex;
-Lcom/android/server/permission/jarjar/kotlin/Pair;
-Lcom/android/server/permission/jarjar/kotlin/TuplesKt;
-Lcom/android/server/permission/jarjar/kotlin/UninitializedPropertyAccessException;
-Lcom/android/server/permission/jarjar/kotlin/Unit;
-Lcom/android/server/permission/jarjar/kotlin/collections/ArraysKt__ArraysJVMKt;
-Lcom/android/server/permission/jarjar/kotlin/collections/ArraysKt__ArraysKt;
-Lcom/android/server/permission/jarjar/kotlin/collections/ArraysKt___ArraysJvmKt;
-Lcom/android/server/permission/jarjar/kotlin/collections/ArraysUtilJVM;
-Lcom/android/server/permission/jarjar/kotlin/collections/EmptyMap;
-Lcom/android/server/permission/jarjar/kotlin/collections/MapsKt__MapWithDefaultKt;
-Lcom/android/server/permission/jarjar/kotlin/collections/MapsKt__MapsJVMKt;
-Lcom/android/server/permission/jarjar/kotlin/collections/MapsKt__MapsKt;
-Lcom/android/server/permission/jarjar/kotlin/io/CloseableKt;
-Lcom/android/server/permission/jarjar/kotlin/jdk7/AutoCloseableKt;
-Lcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;
-Lcom/android/server/pm/AbstractStatsBase$1;
-Lcom/android/server/pm/AbstractStatsBase;
-Lcom/android/server/pm/ApexManager$1;
-Lcom/android/server/pm/ApexManager$ActiveApexInfo;
-Lcom/android/server/pm/ApexManager$ApexManagerImpl;
-Lcom/android/server/pm/ApexManager$ScanResult;
-Lcom/android/server/pm/ApexManager;
-Lcom/android/server/pm/ApexSystemServiceInfo;
-Lcom/android/server/pm/AppDataHelper;
-Lcom/android/server/pm/AppIdSettingMap;
-Lcom/android/server/pm/AppsFilterBase;
-Lcom/android/server/pm/AppsFilterImpl$$ExternalSyntheticLambda0;
-Lcom/android/server/pm/AppsFilterImpl$1;
-Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;
-Lcom/android/server/pm/AppsFilterImpl;
-Lcom/android/server/pm/AppsFilterLocked;
-Lcom/android/server/pm/AppsFilterSnapshot;
-Lcom/android/server/pm/AppsFilterSnapshotImpl;
-Lcom/android/server/pm/AppsFilterUtils;
-Lcom/android/server/pm/BroadcastHelper;
-Lcom/android/server/pm/ChangedPackagesTracker;
-Lcom/android/server/pm/CompilerStats;
-Lcom/android/server/pm/Computer;
-Lcom/android/server/pm/ComputerEngine$$ExternalSyntheticLambda1;
-Lcom/android/server/pm/ComputerEngine$Settings;
-Lcom/android/server/pm/ComputerEngine;
-Lcom/android/server/pm/ComputerLocked;
-Lcom/android/server/pm/CrossProfileIntentFilter;
Lcom/android/server/pm/CrossProfileIntentResolver;
-Lcom/android/server/pm/CrossProfileIntentResolverEngine;
-Lcom/android/server/pm/CrossProfileResolver;
-Lcom/android/server/pm/DataLoaderManagerService$DataLoaderManagerBinderService;
-Lcom/android/server/pm/DataLoaderManagerService;
-Lcom/android/server/pm/DefaultAppProvider;
-Lcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;
-Lcom/android/server/pm/DefaultCrossProfileIntentFilter;
-Lcom/android/server/pm/DefaultCrossProfileIntentFiltersUtils;
-Lcom/android/server/pm/DefaultCrossProfileResolver;
-Lcom/android/server/pm/DeletePackageAction;
-Lcom/android/server/pm/DeletePackageHelper;
-Lcom/android/server/pm/DexOptHelper$1;
-Lcom/android/server/pm/DexOptHelper$DexoptDoneHandler;
-Lcom/android/server/pm/DexOptHelper;
-Lcom/android/server/pm/DistractingPackageHelper;
-Lcom/android/server/pm/DomainVerificationConnection;
-Lcom/android/server/pm/FeatureConfig;
-Lcom/android/server/pm/FreeStorageHelper;
-Lcom/android/server/pm/IncrementalProgressListener;
-Lcom/android/server/pm/InitAppsHelper$$ExternalSyntheticLambda1;
-Lcom/android/server/pm/InitAppsHelper$$ExternalSyntheticLambda2;
-Lcom/android/server/pm/InitAppsHelper;
-Lcom/android/server/pm/InstallArgs;
-Lcom/android/server/pm/InstallPackageHelper$$ExternalSyntheticLambda3;
-Lcom/android/server/pm/InstallPackageHelper$$ExternalSyntheticLambda4;
-Lcom/android/server/pm/InstallPackageHelper;
-Lcom/android/server/pm/InstallRequest;
-Lcom/android/server/pm/InstallSource;
-Lcom/android/server/pm/Installer$$ExternalSyntheticLambda0;
-Lcom/android/server/pm/Installer$InstallerException;
-Lcom/android/server/pm/Installer$LegacyDexoptDisabledException;
-Lcom/android/server/pm/Installer;
-Lcom/android/server/pm/InstantAppRegistry$1;
-Lcom/android/server/pm/InstantAppRegistry$2;
-Lcom/android/server/pm/InstantAppRegistry$CookiePersistence;
-Lcom/android/server/pm/InstantAppRegistry;
-Lcom/android/server/pm/InstantAppResolverConnection;
-Lcom/android/server/pm/InstructionSets;
-Lcom/android/server/pm/KeySetHandle;
-Lcom/android/server/pm/KeySetManagerService$PublicKeyHandle;
-Lcom/android/server/pm/KeySetManagerService;
-Lcom/android/server/pm/KnownPackages;
-Lcom/android/server/pm/ModuleInfoProvider;
-Lcom/android/server/pm/MovePackageHelper$MoveCallbacks;
-Lcom/android/server/pm/NoFilteringResolver;
-Lcom/android/server/pm/PackageAbiHelper$Abis;
-Lcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;
-Lcom/android/server/pm/PackageAbiHelper;
-Lcom/android/server/pm/PackageAbiHelperImpl;
-Lcom/android/server/pm/PackageArchiver$FixedSizeBitmapDrawable;
-Lcom/android/server/pm/PackageArchiver;
-Lcom/android/server/pm/PackageDexOptimizer$1;
-Lcom/android/server/pm/PackageDexOptimizer$Injector;
-Lcom/android/server/pm/PackageDexOptimizer;
-Lcom/android/server/pm/PackageFreezer;
-Lcom/android/server/pm/PackageHandler;
-Lcom/android/server/pm/PackageInstallerService$1;
-Lcom/android/server/pm/PackageInstallerService$Lifecycle;
-Lcom/android/server/pm/PackageInstallerService$PackageDeleteObserverAdapter;
-Lcom/android/server/pm/PackageInstallerService;
-Lcom/android/server/pm/PackageInstallerSession$1;
-Lcom/android/server/pm/PackageInstallerSession$2;
-Lcom/android/server/pm/PackageInstallerSession$3;
-Lcom/android/server/pm/PackageInstallerSession;
-Lcom/android/server/pm/PackageKeySetData;
-Lcom/android/server/pm/PackageManagerException;
-Lcom/android/server/pm/PackageManagerInternalBase;
-Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;
-Lcom/android/server/pm/PackageManagerLocal;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda10;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda11;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda12;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda13;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda14;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda15;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda16;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda18;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda19;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda1;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda20;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda21;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda22;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda23;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda24;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda25;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda26;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda27;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda28;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda29;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda2;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda31;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda32;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda33;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda34;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda35;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda36;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda37;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda38;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda39;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda3;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda48;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda49;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda6;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda7;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda8;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda9;
-Lcom/android/server/pm/PackageManagerService$1;
-Lcom/android/server/pm/PackageManagerService$2;
-Lcom/android/server/pm/PackageManagerService$3;
-Lcom/android/server/pm/PackageManagerService$4;
-Lcom/android/server/pm/PackageManagerService$5;
-Lcom/android/server/pm/PackageManagerService$6;
-Lcom/android/server/pm/PackageManagerService$DefaultSystemWrapper;
Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
-Lcom/android/server/pm/PackageManagerService$Snapshot;
-Lcom/android/server/pm/PackageManagerService;
-Lcom/android/server/pm/PackageManagerServiceCompilerMapping;
-Lcom/android/server/pm/PackageManagerServiceInjector$Producer;
-Lcom/android/server/pm/PackageManagerServiceInjector$ProducerWithArgument;
-Lcom/android/server/pm/PackageManagerServiceInjector$ServiceProducer;
-Lcom/android/server/pm/PackageManagerServiceInjector$Singleton;
-Lcom/android/server/pm/PackageManagerServiceInjector$SystemWrapper;
-Lcom/android/server/pm/PackageManagerServiceInjector;
-Lcom/android/server/pm/PackageManagerServiceUtils$$ExternalSyntheticLambda0;
-Lcom/android/server/pm/PackageManagerServiceUtils$$ExternalSyntheticLambda1;
-Lcom/android/server/pm/PackageManagerServiceUtils$1;
-Lcom/android/server/pm/PackageManagerServiceUtils;
-Lcom/android/server/pm/PackageManagerShellCommandDataLoader;
-Lcom/android/server/pm/PackageManagerTracedLock$RawLock;
-Lcom/android/server/pm/PackageManagerTracedLock;
-Lcom/android/server/pm/PackageMetrics;
-Lcom/android/server/pm/PackageMonitorCallbackHelper;
-Lcom/android/server/pm/PackageObserverHelper;
-Lcom/android/server/pm/PackageProperty;
-Lcom/android/server/pm/PackageRemovedInfo;
-Lcom/android/server/pm/PackageSender;
-Lcom/android/server/pm/PackageSessionProvider;
-Lcom/android/server/pm/PackageSetting$1;
-Lcom/android/server/pm/PackageSignatures;
-Lcom/android/server/pm/PackageUsage;
-Lcom/android/server/pm/ParallelPackageParser$$ExternalSyntheticLambda0;
-Lcom/android/server/pm/ParallelPackageParser$ParseResult;
-Lcom/android/server/pm/ParallelPackageParser;
-Lcom/android/server/pm/PendingPackageBroadcasts;
-Lcom/android/server/pm/PersistentPreferredActivity;
-Lcom/android/server/pm/PersistentPreferredIntentResolver;
-Lcom/android/server/pm/Policy$PolicyBuilder;
-Lcom/android/server/pm/Policy;
-Lcom/android/server/pm/PolicyComparator;
-Lcom/android/server/pm/PreferredActivity$1;
-Lcom/android/server/pm/PreferredActivity;
-Lcom/android/server/pm/PreferredActivityHelper;
-Lcom/android/server/pm/PreferredComponent$Callbacks;
-Lcom/android/server/pm/PreferredComponent;
-Lcom/android/server/pm/PreferredIntentResolver$1;
-Lcom/android/server/pm/PreferredIntentResolver;
-Lcom/android/server/pm/PrepareFailure;
-Lcom/android/server/pm/ProcessLoggingHandler;
-Lcom/android/server/pm/ProtectedPackages;
-Lcom/android/server/pm/ReconcileFailure;
-Lcom/android/server/pm/ReconcilePackageUtils;
-Lcom/android/server/pm/ReconciledPackage;
-Lcom/android/server/pm/RemovePackageHelper;
-Lcom/android/server/pm/ResilientAtomicFile$ReadEventLogger;
-Lcom/android/server/pm/ResilientAtomicFile;
-Lcom/android/server/pm/ResolveIntentHelper;
-Lcom/android/server/pm/RestrictionsSet;
-Lcom/android/server/pm/SELinuxMMAC;
-Lcom/android/server/pm/ScanPackageUtils;
-Lcom/android/server/pm/ScanPartition;
-Lcom/android/server/pm/ScanRequest;
-Lcom/android/server/pm/ScanResult;
-Lcom/android/server/pm/SettingBase;
-Lcom/android/server/pm/Settings$$ExternalSyntheticLambda1;
-Lcom/android/server/pm/Settings$$ExternalSyntheticLambda2;
-Lcom/android/server/pm/Settings$1;
-Lcom/android/server/pm/Settings$2;
-Lcom/android/server/pm/Settings$3;
-Lcom/android/server/pm/Settings$KeySetToValueMap;
-Lcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;
-Lcom/android/server/pm/Settings$RuntimePermissionPersistence$PersistenceHandler;
-Lcom/android/server/pm/Settings$RuntimePermissionPersistence;
-Lcom/android/server/pm/Settings$VersionInfo;
-Lcom/android/server/pm/Settings;
-Lcom/android/server/pm/SettingsXml$ChildSection;
-Lcom/android/server/pm/SettingsXml$ReadSection;
-Lcom/android/server/pm/SettingsXml$ReadSectionImpl;
-Lcom/android/server/pm/SettingsXml;
-Lcom/android/server/pm/SharedLibrariesImpl$$ExternalSyntheticLambda0;
-Lcom/android/server/pm/SharedLibrariesImpl$1;
-Lcom/android/server/pm/SharedLibrariesImpl$2;
-Lcom/android/server/pm/SharedLibrariesImpl;
-Lcom/android/server/pm/SharedLibrariesRead;
-Lcom/android/server/pm/SharedLibraryUtils;
-Lcom/android/server/pm/SharedUidMigration;
-Lcom/android/server/pm/SharedUserSetting$1;
-Lcom/android/server/pm/SharedUserSetting$2;
-Lcom/android/server/pm/SharedUserSetting;
-Lcom/android/server/pm/SnapshotStatistics$1;
-Lcom/android/server/pm/SnapshotStatistics$BinMap;
-Lcom/android/server/pm/SnapshotStatistics$Stats;
-Lcom/android/server/pm/SnapshotStatistics;
-Lcom/android/server/pm/StorageEventHelper;
-Lcom/android/server/pm/SuspendPackageHelper;
-Lcom/android/server/pm/SystemDeleteException;
-Lcom/android/server/pm/UpdateOwnershipHelper;
-Lcom/android/server/pm/UserDataPreparer;
-Lcom/android/server/pm/UserJourneyLogger;
-Lcom/android/server/pm/UserManagerInternal$UserLifecycleListener;
-Lcom/android/server/pm/UserManagerInternal;
-Lcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda1;
-Lcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda3;
-Lcom/android/server/pm/UserManagerService$1;
-Lcom/android/server/pm/UserManagerService$2;
-Lcom/android/server/pm/UserManagerService$3;
Lcom/android/server/pm/UserManagerService$LocalService;
-Lcom/android/server/pm/UserManagerService$MainHandler;
-Lcom/android/server/pm/UserManagerService$SettingsObserver;
-Lcom/android/server/pm/UserManagerService$UserData;
-Lcom/android/server/pm/UserManagerService$WatchedUserStates;
-Lcom/android/server/pm/UserManagerService;
-Lcom/android/server/pm/UserManagerServiceShellCommand;
-Lcom/android/server/pm/UserNeedsBadgingCache;
-Lcom/android/server/pm/UserRestrictionsUtils;
-Lcom/android/server/pm/UserSystemPackageInstaller;
-Lcom/android/server/pm/UserTypeDetails$Builder;
-Lcom/android/server/pm/UserTypeDetails;
-Lcom/android/server/pm/UserTypeFactory;
-Lcom/android/server/pm/UserVisibilityMediator;
-Lcom/android/server/pm/WatchedIntentFilter;
-Lcom/android/server/pm/WatchedIntentResolver$1;
-Lcom/android/server/pm/WatchedIntentResolver$2;
-Lcom/android/server/pm/WatchedIntentResolver;
-Lcom/android/server/pm/dex/ArtManagerService$ArtManagerInternalImpl;
-Lcom/android/server/pm/dex/ArtManagerService;
-Lcom/android/server/pm/dex/ArtStatsLogUtils$ArtStatsLogger;
-Lcom/android/server/pm/dex/DexManager;
-Lcom/android/server/pm/dex/DynamicCodeLogger;
-Lcom/android/server/pm/dex/PackageDexUsage;
-Lcom/android/server/pm/dex/PackageDynamicCodeLoading;
-Lcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;
-Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;
-Lcom/android/server/pm/local/PackageManagerLocalImpl;
-Lcom/android/server/pm/parsing/PackageCacher;
-Lcom/android/server/pm/parsing/PackageInfoUtils;
-Lcom/android/server/pm/parsing/library/AndroidHidlUpdater;
-Lcom/android/server/pm/parsing/library/AndroidNetIpSecIkeUpdater;
-Lcom/android/server/pm/parsing/library/AndroidTestBaseUpdater;
-Lcom/android/server/pm/parsing/library/ApexSharedLibraryUpdater;
-Lcom/android/server/pm/parsing/library/ComGoogleAndroidMapsUpdater;
-Lcom/android/server/pm/parsing/library/OrgApacheHttpLegacyUpdater;
-Lcom/android/server/pm/parsing/library/PackageBackwardCompatibility$AndroidTestRunnerSplitUpdater;
-Lcom/android/server/pm/parsing/library/PackageBackwardCompatibility;
-Lcom/android/server/pm/parsing/library/PackageSharedLibraryUpdater;
-Lcom/android/server/pm/parsing/pkg/AndroidPackageUtils;
-Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;
-Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$2;
-Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DelayingPackageManagerCache;
-Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;
-Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;
-Lcom/android/server/pm/permission/LegacyPermission;
-Lcom/android/server/pm/permission/LegacyPermissionDataProvider;
-Lcom/android/server/pm/permission/LegacyPermissionManagerInternal;
-Lcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;
-Lcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;
-Lcom/android/server/pm/permission/LegacyPermissionManagerService;
-Lcom/android/server/pm/permission/LegacyPermissionSettings;
-Lcom/android/server/pm/permission/LegacyPermissionState$UserState;
-Lcom/android/server/pm/permission/LegacyPermissionState;
-Lcom/android/server/pm/permission/PermissionAllowlist;
-Lcom/android/server/pm/permission/PermissionManagerService$AttributionSourceRegistry;
-Lcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;
-Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;
-Lcom/android/server/pm/permission/PermissionManagerService;
-Lcom/android/server/pm/permission/PermissionManagerServiceInterface;
-Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
-Lcom/android/server/pm/permission/PermissionMigrationHelper;
-Lcom/android/server/pm/permission/PermissionMigrationHelperImpl;
-Lcom/android/server/pm/pkg/ArchiveState;
-Lcom/android/server/pm/pkg/PackageState;
-Lcom/android/server/pm/pkg/PackageStateInternal;
-Lcom/android/server/pm/pkg/PackageStateUnserialized;
-Lcom/android/server/pm/pkg/PackageStateUtils;
-Lcom/android/server/pm/pkg/PackageUserState;
-Lcom/android/server/pm/pkg/PackageUserStateDefault;
-Lcom/android/server/pm/pkg/PackageUserStateImpl$1;
-Lcom/android/server/pm/pkg/PackageUserStateImpl;
-Lcom/android/server/pm/pkg/PackageUserStateInternal;
-Lcom/android/server/pm/pkg/PackageUserStateUtils;
-Lcom/android/server/pm/pkg/SELinuxUtil;
-Lcom/android/server/pm/pkg/SharedLibrary;
-Lcom/android/server/pm/pkg/SharedUserApi;
-Lcom/android/server/pm/pkg/SuspendParams;
-Lcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper$UserStateWriteWrapper;
-Lcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper;
-Lcom/android/server/pm/pkg/mutate/PackageStateMutator;
-Lcom/android/server/pm/pkg/mutate/PackageStateWrite;
-Lcom/android/server/pm/pkg/mutate/PackageUserStateWrite;
-Lcom/android/server/pm/resolution/ComponentResolver$$ExternalSyntheticLambda0;
-Lcom/android/server/pm/resolution/ComponentResolver$1;
Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;
-Lcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;
Lcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;
Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;
Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;
-Lcom/android/server/pm/resolution/ComponentResolver;
-Lcom/android/server/pm/resolution/ComponentResolverApi;
-Lcom/android/server/pm/resolution/ComponentResolverBase;
-Lcom/android/server/pm/resolution/ComponentResolverLocked;
-Lcom/android/server/pm/resolution/ComponentResolverSnapshot;
-Lcom/android/server/pm/snapshot/PackageDataSnapshot;
-Lcom/android/server/pm/verify/domain/DomainVerificationCollector$$ExternalSyntheticLambda0;
-Lcom/android/server/pm/verify/domain/DomainVerificationCollector;
-Lcom/android/server/pm/verify/domain/DomainVerificationDebug;
-Lcom/android/server/pm/verify/domain/DomainVerificationEnforcer$Callback;
-Lcom/android/server/pm/verify/domain/DomainVerificationEnforcer;
-Lcom/android/server/pm/verify/domain/DomainVerificationLegacySettings$LegacyState;
-Lcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;
-Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal$Connection;
-Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;
-Lcom/android/server/pm/verify/domain/DomainVerificationManagerStub;
-Lcom/android/server/pm/verify/domain/DomainVerificationPersistence$ReadResult;
-Lcom/android/server/pm/verify/domain/DomainVerificationPersistence;
-Lcom/android/server/pm/verify/domain/DomainVerificationService;
-Lcom/android/server/pm/verify/domain/DomainVerificationSettings;
-Lcom/android/server/pm/verify/domain/DomainVerificationShell$Callback;
-Lcom/android/server/pm/verify/domain/DomainVerificationShell;
-Lcom/android/server/pm/verify/domain/DomainVerificationUtils$$ExternalSyntheticLambda0;
-Lcom/android/server/pm/verify/domain/DomainVerificationUtils;
-Lcom/android/server/pm/verify/domain/models/DomainVerificationInternalUserState;
-Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;
-Lcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;
-Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy$BaseConnection;
-Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy;
-Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyUnavailable;
-Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV1$Connection;
-Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV2$Connection;
-Lcom/android/server/policy/PermissionPolicyService$2;
-Lcom/android/server/policy/PermissionPolicyService$Internal;
-Lcom/android/server/policy/PhoneWindowManager$5;
Lcom/android/server/policy/PhoneWindowManager;
-Lcom/android/server/policy/WindowManagerPolicy$DisplayContentInfo;
-Lcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;
-Lcom/android/server/policy/WindowManagerPolicy$WindowState;
-Lcom/android/server/power/AmbientDisplaySuppressionController$AmbientDisplaySuppressionChangedCallback;
-Lcom/android/server/power/AmbientDisplaySuppressionController;
-Lcom/android/server/power/AttentionDetector$1;
-Lcom/android/server/power/AttentionDetector$AttentionCallbackInternalImpl;
-Lcom/android/server/power/AttentionDetector;
-Lcom/android/server/power/FaceDownDetector$$ExternalSyntheticLambda1;
-Lcom/android/server/power/FaceDownDetector$ExponentialMovingAverage;
-Lcom/android/server/power/FaceDownDetector$ScreenStateReceiver;
-Lcom/android/server/power/FaceDownDetector;
-Lcom/android/server/power/InattentiveSleepWarningController;
-Lcom/android/server/power/LowPowerStandbyController$$ExternalSyntheticLambda1;
-Lcom/android/server/power/LowPowerStandbyController$$ExternalSyntheticLambda2;
-Lcom/android/server/power/LowPowerStandbyController$1;
-Lcom/android/server/power/LowPowerStandbyController$2;
-Lcom/android/server/power/LowPowerStandbyController$3;
-Lcom/android/server/power/LowPowerStandbyController$Clock;
-Lcom/android/server/power/LowPowerStandbyController$DeviceConfigWrapper;
-Lcom/android/server/power/LowPowerStandbyController$LocalService;
-Lcom/android/server/power/LowPowerStandbyController$LowPowerStandbyHandler;
-Lcom/android/server/power/LowPowerStandbyController$PhoneCallServiceTracker;
-Lcom/android/server/power/LowPowerStandbyController$RealClock;
-Lcom/android/server/power/LowPowerStandbyController$SettingsObserver;
-Lcom/android/server/power/LowPowerStandbyController$TempAllowlistChangeListener;
-Lcom/android/server/power/LowPowerStandbyController;
-Lcom/android/server/power/LowPowerStandbyControllerInternal;
-Lcom/android/server/power/PowerGroup$PowerGroupListener;
-Lcom/android/server/power/PowerManagerService$$ExternalSyntheticLambda0;
-Lcom/android/server/power/PowerManagerService$$ExternalSyntheticLambda1;
Lcom/android/server/power/PowerManagerService$1;
-Lcom/android/server/power/PowerManagerService$3;
-Lcom/android/server/power/PowerManagerService$4;
-Lcom/android/server/power/PowerManagerService$BatteryReceiver;
-Lcom/android/server/power/PowerManagerService$BinderService;
-Lcom/android/server/power/PowerManagerService$Clock;
-Lcom/android/server/power/PowerManagerService$Constants;
-Lcom/android/server/power/PowerManagerService$DockReceiver;
-Lcom/android/server/power/PowerManagerService$DreamReceiver;
-Lcom/android/server/power/PowerManagerService$Injector$$ExternalSyntheticLambda0;
-Lcom/android/server/power/PowerManagerService$Injector$1;
-Lcom/android/server/power/PowerManagerService$Injector$2;
-Lcom/android/server/power/PowerManagerService$Injector$3;
-Lcom/android/server/power/PowerManagerService$Injector;
Lcom/android/server/power/PowerManagerService$LocalService;
-Lcom/android/server/power/PowerManagerService$NativeWrapper;
-Lcom/android/server/power/PowerManagerService$PermissionCheckerWrapper;
-Lcom/android/server/power/PowerManagerService$PowerGroupWakefulnessChangeListener;
-Lcom/android/server/power/PowerManagerService$PowerManagerHandlerCallback;
-Lcom/android/server/power/PowerManagerService$PowerPropertiesWrapper;
-Lcom/android/server/power/PowerManagerService$SettingsObserver;
-Lcom/android/server/power/PowerManagerService$SuspendBlockerImpl;
-Lcom/android/server/power/PowerManagerService$UserSwitchedReceiver;
-Lcom/android/server/power/PowerManagerService;
-Lcom/android/server/power/PowerManagerShellCommand;
-Lcom/android/server/power/ScreenUndimDetector$InternalClock;
-Lcom/android/server/power/ScreenUndimDetector;
-Lcom/android/server/power/SuspendBlocker;
-Lcom/android/server/power/SystemPropertiesWrapper;
-Lcom/android/server/power/ThermalManagerService$1;
-Lcom/android/server/power/ThermalManagerService$TemperatureWatcher;
-Lcom/android/server/power/ThermalManagerService$ThermalHal10Wrapper;
-Lcom/android/server/power/ThermalManagerService$ThermalHal11Wrapper;
-Lcom/android/server/power/ThermalManagerService$ThermalHal20Wrapper;
-Lcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;
-Lcom/android/server/power/ThermalManagerService$ThermalHalWrapper;
-Lcom/android/server/power/ThermalManagerService$ThermalShellCommand;
-Lcom/android/server/power/ThermalManagerService;
-Lcom/android/server/power/batterysaver/BatterySaverController$1;
-Lcom/android/server/power/batterysaver/BatterySaverController$MyHandler;
-Lcom/android/server/power/batterysaver/BatterySaverController;
-Lcom/android/server/power/batterysaver/BatterySaverPolicy$$ExternalSyntheticLambda1;
-Lcom/android/server/power/batterysaver/BatterySaverPolicy$BatterySaverPolicyListener;
-Lcom/android/server/power/batterysaver/BatterySaverPolicy$Policy;
-Lcom/android/server/power/batterysaver/BatterySaverPolicy$PolicyBoolean;
-Lcom/android/server/power/batterysaver/BatterySaverPolicy;
-Lcom/android/server/power/batterysaver/BatterySaverStateMachine$$ExternalSyntheticLambda2;
-Lcom/android/server/power/batterysaver/BatterySaverStateMachine$1;
-Lcom/android/server/power/batterysaver/BatterySaverStateMachine;
-Lcom/android/server/power/batterysaver/BatterySavingStats;
-Lcom/android/server/power/feature/PowerManagerFlags$FlagState;
-Lcom/android/server/power/feature/PowerManagerFlags;
-Lcom/android/server/power/hint/HintManagerService$NativeWrapper;
-Lcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda0;
-Lcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda5;
-Lcom/android/server/power/stats/BatteryExternalStatsWorker$1;
-Lcom/android/server/power/stats/BatteryExternalStatsWorker$2;
-Lcom/android/server/power/stats/BatteryExternalStatsWorker$Injector;
-Lcom/android/server/power/stats/BatteryExternalStatsWorker;
-Lcom/android/server/power/stats/BatteryStatsDumpHelperImpl;
-Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda2;
-Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda3;
-Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda4;
-Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda5;
-Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda6;
Lcom/android/server/power/stats/BatteryStatsImpl$1;
-Lcom/android/server/power/stats/BatteryStatsImpl$2;
-Lcom/android/server/power/stats/BatteryStatsImpl$3;
-Lcom/android/server/power/stats/BatteryStatsImpl$4;
-Lcom/android/server/power/stats/BatteryStatsImpl$5;
-Lcom/android/server/power/stats/BatteryStatsImpl$6;
-Lcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;
-Lcom/android/server/power/stats/BatteryStatsImpl$BatteryCallback;
-Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;
-Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig;
-Lcom/android/server/power/stats/BatteryStatsImpl$BinderCallStats;
-Lcom/android/server/power/stats/BatteryStatsImpl$BluetoothActivityInfoCache;
-Lcom/android/server/power/stats/BatteryStatsImpl$Constants;
Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;
-Lcom/android/server/power/stats/BatteryStatsImpl$Counter;
-Lcom/android/server/power/stats/BatteryStatsImpl$DisplayBatteryStats;
Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;
-Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;
-Lcom/android/server/power/stats/BatteryStatsImpl$EnergyStatsRetriever;
-Lcom/android/server/power/stats/BatteryStatsImpl$ExternalStatsSync;
-Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;
-Lcom/android/server/power/stats/BatteryStatsImpl$HistoryStepDetailsCalculatorImpl;
Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;
-Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;
-Lcom/android/server/power/stats/BatteryStatsImpl$MyHandler;
-Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;
-Lcom/android/server/power/stats/BatteryStatsImpl$PlatformIdleStateCallback;
-Lcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector;
-Lcom/android/server/power/stats/BatteryStatsImpl$RadioAccessTechnologyBatteryStats;
-Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;
-Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
-Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
-Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;
-Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;
Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
-Lcom/android/server/power/stats/BatteryStatsImpl$Timer;
-Lcom/android/server/power/stats/BatteryStatsImpl$Uid$1;
-Lcom/android/server/power/stats/BatteryStatsImpl$Uid$2;
-Lcom/android/server/power/stats/BatteryStatsImpl$Uid$3;
-Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;
-Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;
-Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;
Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Sensor;
Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;
Lcom/android/server/power/stats/BatteryStatsImpl$Uid;
-Lcom/android/server/power/stats/BatteryStatsImpl$UserInfoProvider;
-Lcom/android/server/power/stats/BatteryStatsImpl;
-Lcom/android/server/power/stats/BatteryUsageStatsProvider;
-Lcom/android/server/power/stats/BatteryUsageStatsSection$Reader;
-Lcom/android/server/power/stats/BatteryUsageStatsSection;
-Lcom/android/server/power/stats/BluetoothPowerCalculator;
-Lcom/android/server/power/stats/BluetoothPowerStatsCollector$Injector;
-Lcom/android/server/power/stats/BluetoothPowerStatsCollector;
-Lcom/android/server/power/stats/CameraPowerStatsCollector;
-Lcom/android/server/power/stats/CpuPowerCalculator;
-Lcom/android/server/power/stats/CpuPowerStatsCollector$Injector;
-Lcom/android/server/power/stats/CpuPowerStatsCollector$KernelCpuStatsReader;
-Lcom/android/server/power/stats/CpuPowerStatsCollector;
-Lcom/android/server/power/stats/CustomEnergyConsumerPowerStatsCollector;
-Lcom/android/server/power/stats/EnergyConsumerPowerStatsCollector$Injector;
-Lcom/android/server/power/stats/EnergyConsumerPowerStatsCollector;
-Lcom/android/server/power/stats/EnergyConsumerSnapshot;
-Lcom/android/server/power/stats/GnssPowerStatsCollector;
-Lcom/android/server/power/stats/KernelWakelockReader;
-Lcom/android/server/power/stats/KernelWakelockStats$Entry;
-Lcom/android/server/power/stats/KernelWakelockStats;
-Lcom/android/server/power/stats/MobileRadioPowerCalculator;
-Lcom/android/server/power/stats/MobileRadioPowerStatsCollector$Injector;
-Lcom/android/server/power/stats/MobileRadioPowerStatsCollector$Observer;
-Lcom/android/server/power/stats/MobileRadioPowerStatsCollector;
-Lcom/android/server/power/stats/PowerAttributor;
-Lcom/android/server/power/stats/PowerCalculator;
-Lcom/android/server/power/stats/PowerStatsCollector$$ExternalSyntheticLambda0;
-Lcom/android/server/power/stats/PowerStatsCollector$1;
-Lcom/android/server/power/stats/PowerStatsCollector;
-Lcom/android/server/power/stats/PowerStatsScheduler$AlarmScheduler;
-Lcom/android/server/power/stats/PowerStatsScheduler;
-Lcom/android/server/power/stats/PowerStatsSpan$Section;
-Lcom/android/server/power/stats/PowerStatsSpan$SectionReader;
-Lcom/android/server/power/stats/PowerStatsStore$$ExternalSyntheticLambda0;
-Lcom/android/server/power/stats/PowerStatsStore;
-Lcom/android/server/power/stats/PowerStatsUidResolver$Listener;
-Lcom/android/server/power/stats/PowerStatsUidResolver;
-Lcom/android/server/power/stats/ScreenPowerStatsCollector$Injector;
-Lcom/android/server/power/stats/ScreenPowerStatsCollector$ScreenUsageTimeRetriever;
-Lcom/android/server/power/stats/ScreenPowerStatsCollector;
-Lcom/android/server/power/stats/WifiPowerCalculator;
-Lcom/android/server/power/stats/WifiPowerStatsCollector$Injector;
-Lcom/android/server/power/stats/WifiPowerStatsCollector$Observer;
-Lcom/android/server/power/stats/WifiPowerStatsCollector$WifiScanTimes;
-Lcom/android/server/power/stats/WifiPowerStatsCollector$WifiStatsRetriever;
-Lcom/android/server/power/stats/WifiPowerStatsCollector;
-Lcom/android/server/power/stats/format/BinaryStatePowerStatsLayout;
-Lcom/android/server/power/stats/format/BluetoothPowerStatsLayout;
-Lcom/android/server/power/stats/format/CpuPowerStatsLayout;
-Lcom/android/server/power/stats/format/EnergyConsumerPowerStatsLayout;
-Lcom/android/server/power/stats/format/GnssPowerStatsLayout;
-Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;
-Lcom/android/server/power/stats/format/PowerStatsLayout;
-Lcom/android/server/power/stats/format/ScreenPowerStatsLayout;
-Lcom/android/server/power/stats/format/WifiPowerStatsLayout;
-Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$1;
-Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;
-Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig;
-Lcom/android/server/power/stats/processor/AggregatedPowerStatsSection$Reader;
-Lcom/android/server/power/stats/processor/AggregatedPowerStatsSection;
-Lcom/android/server/power/stats/processor/AudioPowerStatsProcessor;
-Lcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;
-Lcom/android/server/power/stats/processor/BluetoothPowerStatsProcessor;
-Lcom/android/server/power/stats/processor/CameraPowerStatsProcessor;
-Lcom/android/server/power/stats/processor/CpuPowerStatsProcessor;
-Lcom/android/server/power/stats/processor/FlashlightPowerStatsProcessor;
-Lcom/android/server/power/stats/processor/GnssPowerStatsProcessor;
-Lcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor;
-Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda0;
-Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda10;
-Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda11;
-Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda12;
-Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda13;
-Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda1;
-Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda2;
-Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda3;
-Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda4;
-Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda5;
-Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda6;
-Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda7;
-Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda8;
-Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda9;
-Lcom/android/server/power/stats/processor/MultiStatePowerAttributor;
-Lcom/android/server/power/stats/processor/PowerStatsAggregator;
-Lcom/android/server/power/stats/processor/PowerStatsExporter;
-Lcom/android/server/power/stats/processor/PowerStatsProcessor;
-Lcom/android/server/power/stats/processor/ScreenPowerStatsProcessor;
-Lcom/android/server/power/stats/processor/SensorPowerStatsProcessor;
-Lcom/android/server/power/stats/processor/VideoPowerStatsProcessor;
-Lcom/android/server/power/stats/processor/WifiPowerStatsProcessor;
-Lcom/android/server/power/stats/wakeups/CpuWakeupStats$$ExternalSyntheticLambda0;
-Lcom/android/server/power/stats/wakeups/CpuWakeupStats$Config;
-Lcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;
-Lcom/android/server/power/stats/wakeups/CpuWakeupStats;
-Lcom/android/server/power/stats/wakeups/IrqDeviceMap;
-Lcom/android/server/powerstats/PowerStatsHALWrapper$IPowerStatsHALWrapper;
-Lcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL10WrapperImpl;
-Lcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL20WrapperImpl;
-Lcom/android/server/powerstats/PowerStatsHALWrapper$VintfHalCache;
-Lcom/android/server/powerstats/PowerStatsHALWrapper;
-Lcom/android/server/powerstats/PowerStatsService$1;
-Lcom/android/server/powerstats/PowerStatsService$DeviceConfigListener;
-Lcom/android/server/powerstats/PowerStatsService$Injector;
Lcom/android/server/powerstats/PowerStatsService$LocalService;
-Lcom/android/server/powerstats/PowerStatsService;
-Lcom/android/server/recoverysystem/RecoverySystemService$Injector;
-Lcom/android/server/recoverysystem/RecoverySystemService$Lifecycle;
-Lcom/android/server/recoverysystem/RecoverySystemService$PreferencesManager;
-Lcom/android/server/recoverysystem/RecoverySystemService;
-Lcom/android/server/recoverysystem/RecoverySystemShellCommand;
-Lcom/android/server/resources/ResourcesManagerService;
-Lcom/android/server/security/FileIntegrityService$BinderService;
-Lcom/android/server/security/FileIntegrityService$FileIntegrityServiceShellCommand;
-Lcom/android/server/security/FileIntegrityService;
-Lcom/android/server/sensorprivacy/SensorPrivacyService;
-Lcom/android/server/sensors/SensorManagerInternal$ProximityActiveListener;
-Lcom/android/server/sensors/SensorManagerInternal$RuntimeSensorCallback;
-Lcom/android/server/sensors/SensorService;
-Lcom/android/server/soundtrigger_middleware/AudioSessionProviderImpl;
-Lcom/android/server/soundtrigger_middleware/ExternalCaptureStateTracker;
-Lcom/android/server/soundtrigger_middleware/ICaptureStateNotifier;
-Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl$AudioSessionProvider;
Lcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomServiceInternalImpl;
-Lcom/android/server/stats/pull/StatsPullAtomService;
Lcom/android/server/statusbar/StatusBarManagerService$1;
-Lcom/android/server/storage/AppFuseBridge;
-Lcom/android/server/tv/TvInputHal;
-Lcom/android/server/tv/UinputBridge;
-Lcom/android/server/uri/UriGrantsManagerInternal;
-Lcom/android/server/uri/UriGrantsManagerService$1;
-Lcom/android/server/uri/UriGrantsManagerService$H;
-Lcom/android/server/uri/UriGrantsManagerService$Lifecycle;
Lcom/android/server/uri/UriGrantsManagerService$LocalService;
-Lcom/android/server/uri/UriGrantsManagerService;
-Lcom/android/server/uri/UriMetricsHelper$PersistentUriGrantsProvider;
-Lcom/android/server/uri/UriMetricsHelper;
Lcom/android/server/usage/AppStandbyController;
Lcom/android/server/usage/UsageStatsService$LocalService;
-Lcom/android/server/usb/UsbAlsaJackDetector;
-Lcom/android/server/usb/UsbAlsaMidiDevice$2;
-Lcom/android/server/usb/UsbAlsaMidiDevice$3;
-Lcom/android/server/usb/UsbAlsaMidiDevice$InputReceiverProxy;
-Lcom/android/server/usb/UsbAlsaMidiDevice;
-Lcom/android/server/usb/UsbDeviceManager$1;
-Lcom/android/server/usb/UsbDeviceManager$2;
-Lcom/android/server/usb/UsbDeviceManager$3;
-Lcom/android/server/usb/UsbDeviceManager$4;
-Lcom/android/server/usb/UsbDeviceManager$UsbHandler;
-Lcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;
-Lcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;
-Lcom/android/server/usb/UsbDeviceManager$UsbUEventObserver;
-Lcom/android/server/usb/UsbDeviceManager;
-Lcom/android/server/usb/UsbHostManager;
-Lcom/android/server/usb/descriptors/UsbDescriptor;
-Lcom/android/server/usb/descriptors/UsbInterfaceDescriptor;
-Lcom/android/server/utils/AnrTimer$1;
-Lcom/android/server/utils/AnrTimer$Args;
-Lcom/android/server/utils/AnrTimer$Error;
-Lcom/android/server/utils/AnrTimer$FeatureDisabled;
-Lcom/android/server/utils/AnrTimer$FeatureEnabled;
-Lcom/android/server/utils/AnrTimer$FeatureSwitch;
-Lcom/android/server/utils/AnrTimer$Injector;
-Lcom/android/server/utils/AnrTimer;
-Lcom/android/server/utils/FoldSettingProvider;
-Lcom/android/server/utils/PriorityDump$PriorityDumper;
-Lcom/android/server/utils/Slogf;
-Lcom/android/server/utils/Snappable;
-Lcom/android/server/utils/SnapshotCache$Auto;
-Lcom/android/server/utils/SnapshotCache$Sealed;
-Lcom/android/server/utils/SnapshotCache$Statistics;
-Lcom/android/server/utils/SnapshotCache;
-Lcom/android/server/utils/Snapshots;
-Lcom/android/server/utils/TimingsTraceAndSlog;
-Lcom/android/server/utils/UserSettingDeviceConfigMediator$SettingsOverridesIndividualMediator;
-Lcom/android/server/utils/UserSettingDeviceConfigMediator;
-Lcom/android/server/utils/Watchable;
-Lcom/android/server/utils/WatchableImpl;
-Lcom/android/server/utils/Watched;
-Lcom/android/server/utils/WatchedArrayList$1;
-Lcom/android/server/utils/WatchedArrayList;
-Lcom/android/server/utils/WatchedArrayMap$1;
-Lcom/android/server/utils/WatchedArrayMap;
-Lcom/android/server/utils/WatchedArraySet$1;
-Lcom/android/server/utils/WatchedArraySet;
-Lcom/android/server/utils/WatchedLongSparseArray$1;
-Lcom/android/server/utils/WatchedLongSparseArray;
-Lcom/android/server/utils/WatchedSparseArray$1;
-Lcom/android/server/utils/WatchedSparseArray;
-Lcom/android/server/utils/WatchedSparseBooleanArray;
-Lcom/android/server/utils/WatchedSparseBooleanMatrix;
-Lcom/android/server/utils/WatchedSparseIntArray;
-Lcom/android/server/utils/WatchedSparseSetArray;
-Lcom/android/server/utils/Watcher;
-Lcom/android/server/vibrator/VibratorController$NativeWrapper;
-Lcom/android/server/vibrator/VibratorController$OnVibrationCompleteListener;
-Lcom/android/server/vibrator/VibratorManagerService$VibratorManagerNativeCallbacks;
-Lcom/android/server/vibrator/VibratorManagerService;
-Lcom/android/server/vr/EnabledComponentsObserver$EnabledComponentChangeListener;
-Lcom/android/server/vr/VrManagerService;
-Lcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda5;
-Lcom/android/server/wm/AbsAppSnapshotController;
-Lcom/android/server/wm/ActionChain$Tracker;
-Lcom/android/server/wm/ActivityClientController;
-Lcom/android/server/wm/ActivityMetricsLaunchObserver;
-Lcom/android/server/wm/ActivityMetricsLaunchObserverRegistry;
-Lcom/android/server/wm/ActivityMetricsLogger;
-Lcom/android/server/wm/ActivityRecord;
-Lcom/android/server/wm/ActivityStartController;
-Lcom/android/server/wm/ActivityStartInterceptor;
-Lcom/android/server/wm/ActivityStarter$DefaultFactory;
-Lcom/android/server/wm/ActivityStarter$Factory;
-Lcom/android/server/wm/ActivityTaskManagerInternal$ScreenObserver;
-Lcom/android/server/wm/ActivityTaskManagerInternal;
-Lcom/android/server/wm/ActivityTaskManagerService$1;
-Lcom/android/server/wm/ActivityTaskManagerService$H;
-Lcom/android/server/wm/ActivityTaskManagerService$Lifecycle;
Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
-Lcom/android/server/wm/ActivityTaskManagerService$SleepTokenAcquirer;
-Lcom/android/server/wm/ActivityTaskManagerService$UiHandler;
-Lcom/android/server/wm/ActivityTaskManagerService$UpdateConfigurationResult;
-Lcom/android/server/wm/ActivityTaskManagerService;
-Lcom/android/server/wm/ActivityTaskSupervisor$ActivityTaskSupervisorHandler;
-Lcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;
-Lcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;
-Lcom/android/server/wm/ActivityTaskSupervisor;
-Lcom/android/server/wm/AppTaskImpl;
-Lcom/android/server/wm/AppWarnings$BaseDialog;
-Lcom/android/server/wm/AppWarnings$UiHandler;
-Lcom/android/server/wm/AppWarnings$WriteConfigTask;
-Lcom/android/server/wm/AppWarnings;
-Lcom/android/server/wm/BLASTSyncEngine$TransactionReadyListener;
-Lcom/android/server/wm/BackNavigationController$NavigationMonitor;
-Lcom/android/server/wm/BackNavigationController;
-Lcom/android/server/wm/BackgroundActivityStartController$FinishedActivityEntry;
-Lcom/android/server/wm/BackgroundActivityStartController;
-Lcom/android/server/wm/BackgroundLaunchProcessController$BalCheckConfiguration;
-Lcom/android/server/wm/ClientLifecycleManager;
-Lcom/android/server/wm/CompatModePackages$CompatHandler;
-Lcom/android/server/wm/CompatModePackages;
-Lcom/android/server/wm/ConfigurationContainer;
-Lcom/android/server/wm/ConfigurationContainerListener;
-Lcom/android/server/wm/DeprecatedAbiDialog;
-Lcom/android/server/wm/DeprecatedTargetSdkVersionDialog;
-Lcom/android/server/wm/DesktopModeLaunchParamsModifier;
-Lcom/android/server/wm/DisplayArea$Dimmable;
-Lcom/android/server/wm/DisplayArea$Tokens;
-Lcom/android/server/wm/DisplayArea;
-Lcom/android/server/wm/DisplayAreaOrganizerController;
-Lcom/android/server/wm/DisplayContent;
-Lcom/android/server/wm/FactoryErrorDialog;
-Lcom/android/server/wm/InputTarget;
-Lcom/android/server/wm/InsetsControlTarget;
-Lcom/android/server/wm/InsetsTarget;
-Lcom/android/server/wm/KeyguardController$$ExternalSyntheticLambda0;
-Lcom/android/server/wm/KeyguardController$$ExternalSyntheticLambda1;
-Lcom/android/server/wm/KeyguardController;
-Lcom/android/server/wm/LaunchObserverRegistryImpl;
-Lcom/android/server/wm/LaunchParamsController$LaunchParams;
-Lcom/android/server/wm/LaunchParamsController$LaunchParamsModifier;
-Lcom/android/server/wm/LaunchParamsController;
-Lcom/android/server/wm/LaunchParamsPersister$$ExternalSyntheticLambda3;
-Lcom/android/server/wm/LaunchParamsPersister;
-Lcom/android/server/wm/LockTaskController$LockTaskToken;
-Lcom/android/server/wm/LockTaskController;
-Lcom/android/server/wm/MirrorActiveUids;
-Lcom/android/server/wm/PackageConfigPersister;
-Lcom/android/server/wm/PendingRemoteAnimationRegistry;
-Lcom/android/server/wm/PersisterQueue$$ExternalSyntheticLambda0;
-Lcom/android/server/wm/PersisterQueue$LazyTaskWriterThread;
-Lcom/android/server/wm/PersisterQueue$Listener;
-Lcom/android/server/wm/PersisterQueue$WriteQueueItem;
-Lcom/android/server/wm/PersisterQueue;
-Lcom/android/server/wm/RecentTasks$$ExternalSyntheticLambda0;
-Lcom/android/server/wm/RecentTasks$$ExternalSyntheticLambda1;
-Lcom/android/server/wm/RecentTasks$1;
-Lcom/android/server/wm/RecentTasks$Callbacks;
-Lcom/android/server/wm/RecentTasks;
-Lcom/android/server/wm/RootDisplayArea;
-Lcom/android/server/wm/RootWindowContainer;
-Lcom/android/server/wm/RunningTasks;
-Lcom/android/server/wm/SurfaceAnimationThread;
-Lcom/android/server/wm/SurfaceAnimator$Animatable;
-Lcom/android/server/wm/SurfaceFreezer$Freezable;
-Lcom/android/server/wm/Task;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda0;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda10;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda11;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda12;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda13;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda14;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda15;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda16;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda17;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda18;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda19;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda1;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda20;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda21;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda22;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda23;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda24;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda25;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda2;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda3;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda4;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda5;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda6;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda7;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda8;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda9;
-Lcom/android/server/wm/TaskChangeNotificationController$MainHandler;
-Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
-Lcom/android/server/wm/TaskChangeNotificationController;
-Lcom/android/server/wm/TaskDisplayArea;
-Lcom/android/server/wm/TaskFpsCallbackController;
-Lcom/android/server/wm/TaskFragment;
-Lcom/android/server/wm/TaskFragmentOrganizerController;
-Lcom/android/server/wm/TaskLaunchParamsModifier;
-Lcom/android/server/wm/TaskOrganizerController;
-Lcom/android/server/wm/TaskPersister;
-Lcom/android/server/wm/TaskSnapshotController;
-Lcom/android/server/wm/Transition$ReadyCondition;
-Lcom/android/server/wm/Transition;
-Lcom/android/server/wm/TransitionController$Lock;
-Lcom/android/server/wm/TransitionController$RemotePlayer;
-Lcom/android/server/wm/TransitionController$TransitionMetricsReporter;
-Lcom/android/server/wm/TransitionController;
-Lcom/android/server/wm/UnsupportedCompileSdkDialog;
-Lcom/android/server/wm/UnsupportedDisplaySizeDialog;
-Lcom/android/server/wm/VisibleActivityProcessTracker;
-Lcom/android/server/wm/VrController$1;
-Lcom/android/server/wm/VrController;
-Lcom/android/server/wm/WallpaperWindowToken;
-Lcom/android/server/wm/WindowContainer;
-Lcom/android/server/wm/WindowManagerGlobalLock;
-Lcom/android/server/wm/WindowManagerInternal$AppTransitionListener;
-Lcom/android/server/wm/WindowManagerService$2;
-Lcom/android/server/wm/WindowManagerService$4;
-Lcom/android/server/wm/WindowManagerService$8;
-Lcom/android/server/wm/WindowManagerService$AppFreezeListener;
-Lcom/android/server/wm/WindowManagerService$H;
Lcom/android/server/wm/WindowManagerService$LocalService;
-Lcom/android/server/wm/WindowManagerService;
-Lcom/android/server/wm/WindowManagerShellCommand;
-Lcom/android/server/wm/WindowManagerThreadPriorityBooster;
-Lcom/android/server/wm/WindowOrganizerController;
-Lcom/android/server/wm/WindowProcessController;
-Lcom/android/server/wm/WindowProcessControllerMap;
-Lcom/android/server/wm/WindowProcessListener;
Lcom/android/server/wm/WindowState;
-Lcom/android/server/wm/WindowToken;
-Lcom/android/server/wm/utils/DisplayInfoOverrides$$ExternalSyntheticLambda0;
-Lcom/android/server/wm/utils/DisplayInfoOverrides$DisplayInfoFieldsUpdater;
-Lcom/android/server/wm/utils/DisplayInfoOverrides;
-[Landroid/hardware/power/stats/Channel;
-[Landroid/hardware/power/stats/EnergyConsumer;
-[Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
-[Lcom/android/server/am/BroadcastProcessQueue;
-[Lcom/android/server/am/BroadcastRecord;
-[Lcom/android/server/am/CachedAppOptimizer$CancelCompactReason;
-[Lcom/android/server/am/CachedAppOptimizer$CompactSource;
-[Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNode;
-[Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$LinkedProcessRecordList;
-[Lcom/android/server/am/UidObserverController$ChangeRecord;
-[Lcom/android/server/display/config/AutoBrightnessModeName;
-[Lcom/android/server/display/config/AutoBrightnessSettingName;
-[Lcom/android/server/display/config/PredefinedBrightnessLimitNames;
-[Lcom/android/server/display/config/ThermalStatus;
-[Lcom/android/server/firewall/FilterFactory;
-[Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;
-[Lcom/android/server/input/TouchpadFingerState;
-[Lcom/android/server/lights/LightsService$LightImpl;
-[Lcom/android/server/om/OverlayActorEnforcer$ActorState;
-[Lcom/android/server/pm/DefaultCrossProfileIntentFilter;
-[Lcom/android/server/pm/PreferredActivity;
-[Lcom/android/server/pm/SnapshotStatistics$Stats;
-[Lcom/android/server/pm/parsing/library/PackageSharedLibraryUpdater;
-[Lcom/android/server/power/stats/BatteryStatsImpl$Counter;
-[Lcom/android/server/power/stats/BatteryStatsImpl$DisplayBatteryStats;
-[Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;
-[Lcom/android/server/power/stats/BatteryStatsImpl$RadioAccessTechnologyBatteryStats;
-[Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
-[Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;
-[Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
-[Lcom/android/server/utils/AnrTimer$Error;
-[Lcom/android/server/wm/ActivityRecord;
-[[Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;
-[[Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;
diff --git a/services/art-wear-profile b/services/art-wear-profile
index f080715643ca..dba7ce7a3d39 100644
--- a/services/art-wear-profile
+++ b/services/art-wear-profile
@@ -1,86 +1,82 @@
-Landroid/content/pm/PackageManagerInternal$ExternalSourcesPolicy;
Landroid/content/pm/PackageManagerInternal;
Landroid/content/pm/TestUtilityService;
+Landroid/frameworks/vibrator/VibrationParam$1$$ExternalSyntheticOutline0;
+Landroid/hardware/audio/common/V2_0/AudioOffloadInfo$$ExternalSyntheticOutline0;
+Landroid/hardware/authsecret/V1_0/IAuthSecret$Proxy$$ExternalSyntheticOutline0;
+Landroid/hardware/boot/IBootControl$Stub$Proxy;
+Landroid/hardware/boot/IBootControl;
+Landroid/hardware/boot/V1_0/IBootControl;
+Landroid/hardware/boot/V1_1/IBootControl$Proxy;
+Landroid/hardware/boot/V1_1/IBootControl;
Landroid/hardware/light/HwLight$1;
Landroid/hardware/light/HwLight;
Landroid/hardware/light/ILights$Stub$Proxy;
-Landroid/hardware/light/ILights$Stub;
Landroid/hardware/light/ILights;
-Landroid/hardware/power/stats/Channel$1;
Landroid/hardware/power/stats/Channel;
Landroid/hardware/power/stats/EnergyConsumer;
-Landroid/hardware/power/stats/EnergyMeasurement$1;
-Landroid/hardware/power/stats/EnergyMeasurement;
+Landroid/hardware/power/stats/IPowerStats$Stub$Proxy;
+Landroid/hardware/power/stats/IPowerStats$Stub;
Landroid/hardware/power/stats/IPowerStats;
-Landroid/hardware/power/stats/PowerEntity$1;
-Landroid/hardware/power/stats/PowerEntity;
-Landroid/hardware/power/stats/State$1;
-Landroid/hardware/power/stats/State;
-Landroid/hardware/power/stats/StateResidency$1;
-Landroid/hardware/power/stats/StateResidency;
-Landroid/hardware/power/stats/StateResidencyResult$1;
-Landroid/hardware/power/stats/StateResidencyResult;
+Landroid/hardware/security/secretkeeper/ISecretkeeper$Stub$Proxy;
+Landroid/hardware/security/secretkeeper/ISecretkeeper;
Landroid/hidl/base/V1_0/IBase;
Landroid/hidl/manager/V1_0/IServiceManager$Proxy;
Landroid/hidl/manager/V1_0/IServiceManager;
Landroid/hidl/manager/V1_0/IServiceNotification$Stub;
Landroid/hidl/manager/V1_0/IServiceNotification;
+Landroid/net/ConnectivityModuleConnector$$ExternalSyntheticOutline0;
Landroid/net/ConnectivityModuleConnector$Dependencies;
Landroid/net/ConnectivityModuleConnector$DependenciesImpl;
Landroid/net/ConnectivityModuleConnector;
+Landroid/net/shared/InitialConfiguration$$ExternalSyntheticOutline0;
Landroid/os/BatteryStatsInternal;
Landroid/power/PowerStatsInternal;
Landroid/sysprop/SurfaceFlingerProperties;
+Lcom/android/internal/util/jobs/ArrayUtils$$ExternalSyntheticOutline0;
+Lcom/android/internal/util/jobs/DumpUtils$$ExternalSyntheticOutline0;
+Lcom/android/internal/util/jobs/XmlUtils$$ExternalSyntheticOutline0;
Lcom/android/modules/utils/build/SdkLevel;
Lcom/android/modules/utils/build/UnboundedSdkLevel;
Lcom/android/server/AnimationThread;
+Lcom/android/server/AnyMotionDetector$RunningSignalStats$$ExternalSyntheticOutline0;
Lcom/android/server/AppFuseMountException;
+Lcom/android/server/BinaryTransparencyService$$ExternalSyntheticOutline0;
Lcom/android/server/BundleUtils;
-Lcom/android/server/ConsumerIrService;
Lcom/android/server/DisplayThread;
-Lcom/android/server/EventLogTags;
-Lcom/android/server/ExplicitHealthCheckController;
-Lcom/android/server/FgThread;
+Lcom/android/server/DynamicSystemService$$ExternalSyntheticOutline0;
+Lcom/android/server/HardwarePropertiesManagerService$$ExternalSyntheticOutline0;
Lcom/android/server/HardwarePropertiesManagerService;
+Lcom/android/server/HsumBootUserInitializer$1;
Lcom/android/server/IntentResolver$1;
Lcom/android/server/IntentResolver;
Lcom/android/server/IoThread;
Lcom/android/server/LocalManagerRegistry$ManagerNotFoundException;
Lcom/android/server/LocalManagerRegistry;
-Lcom/android/server/LockGuard$LockInfo-IA;
Lcom/android/server/LockGuard$LockInfo;
Lcom/android/server/LockGuard;
-Lcom/android/server/PackageWatchdog$$ExternalSyntheticLambda0;
-Lcom/android/server/PackageWatchdog$$ExternalSyntheticLambda6;
-Lcom/android/server/PackageWatchdog$$ExternalSyntheticLambda7;
-Lcom/android/server/PackageWatchdog$$ExternalSyntheticLambda8;
-Lcom/android/server/PackageWatchdog$$ExternalSyntheticLambda9;
-Lcom/android/server/PackageWatchdog$BootThreshold;
-Lcom/android/server/PackageWatchdog$ObserverInternal;
-Lcom/android/server/PackageWatchdog$PackageHealthObserver;
-Lcom/android/server/PackageWatchdog$SystemClock;
-Lcom/android/server/PackageWatchdog;
-Lcom/android/server/RescueParty$RescuePartyObserver;
-Lcom/android/server/RescueParty;
-Lcom/android/server/SerialService;
-Lcom/android/server/ServiceThread;
+Lcom/android/server/StorageManagerService$AppFuseMountScope;
Lcom/android/server/SystemClockTime;
+Lcom/android/server/SystemConfig$Injector;
Lcom/android/server/SystemConfig$PermissionEntry;
Lcom/android/server/SystemConfig$SharedLibraryEntry;
Lcom/android/server/SystemConfig;
-Lcom/android/server/SystemServer$$ExternalSyntheticLambda0;
Lcom/android/server/SystemServer$$ExternalSyntheticLambda1;
Lcom/android/server/SystemServer$$ExternalSyntheticLambda2;
+Lcom/android/server/SystemServer$$ExternalSyntheticLambda3;
+Lcom/android/server/SystemServer$$ExternalSyntheticOutline0;
Lcom/android/server/SystemServer$SystemServerDumper;
Lcom/android/server/SystemServer;
-Lcom/android/server/SystemServerInitThreadPool$$ExternalSyntheticLambda1;
+Lcom/android/server/SystemServerInitThreadPool$$ExternalSyntheticLambda2;
+Lcom/android/server/SystemServerInitThreadPool$$ExternalSyntheticOutline0;
Lcom/android/server/SystemServerInitThreadPool;
Lcom/android/server/SystemService;
+Lcom/android/server/SystemServiceManager$$ExternalSyntheticOutline0;
Lcom/android/server/SystemServiceManager;
Lcom/android/server/SystemTimeZone;
Lcom/android/server/ThreadPriorityBooster$1;
Lcom/android/server/ThreadPriorityBooster$PriorityState;
Lcom/android/server/ThreadPriorityBooster;
+Lcom/android/server/TradeInModeService$TradeInMode$$ExternalSyntheticOutline0;
Lcom/android/server/UiThread;
Lcom/android/server/Watchdog$$ExternalSyntheticLambda0;
Lcom/android/server/Watchdog$1;
@@ -91,57 +87,50 @@ Lcom/android/server/Watchdog$Monitor;
Lcom/android/server/Watchdog$RebootRequestReceiver;
Lcom/android/server/Watchdog$SettingsObserver;
Lcom/android/server/Watchdog;
-Lcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda35;
+Lcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda4;
+Lcom/android/server/accessibility/BrailleDisplayConnection$$ExternalSyntheticOutline0;
Lcom/android/server/accessibility/BrailleDisplayConnection;
+Lcom/android/server/adb/AdbDebuggingManager$AdbKeyStore$$ExternalSyntheticOutline0;
Lcom/android/server/adb/AdbDebuggingManager$PairingThread;
+Lcom/android/server/alarm/AlarmManagerService$AlarmHandler;
Lcom/android/server/am/ActiveServices$1;
-Lcom/android/server/am/ActiveServices$5;
-Lcom/android/server/am/ActiveServices$MediaProjectionFgsTypeCustomPermission;
Lcom/android/server/am/ActiveServices$ProcessAnrTimer;
-Lcom/android/server/am/ActiveServices$ServiceAnrTimer;
Lcom/android/server/am/ActiveServices$ServiceMap;
-Lcom/android/server/am/ActiveServices$ServiceRestarter;
Lcom/android/server/am/ActiveServices$SystemExemptedFgsTypePermission;
Lcom/android/server/am/ActiveServices;
Lcom/android/server/am/ActiveUids;
Lcom/android/server/am/ActivityManagerConstants$1;
-Lcom/android/server/am/ActivityManagerConstants$2;
Lcom/android/server/am/ActivityManagerConstants;
-Lcom/android/server/am/ActivityManagerGlobalLock;
Lcom/android/server/am/ActivityManagerLocal;
Lcom/android/server/am/ActivityManagerProcLock;
-Lcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda20;
-Lcom/android/server/am/ActivityManagerService$12;
+Lcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda7;
+Lcom/android/server/am/ActivityManagerService$11;
Lcom/android/server/am/ActivityManagerService$13;
-Lcom/android/server/am/ActivityManagerService$16;
Lcom/android/server/am/ActivityManagerService$1;
Lcom/android/server/am/ActivityManagerService$2;
-Lcom/android/server/am/ActivityManagerService$3;
+Lcom/android/server/am/ActivityManagerService$5;
Lcom/android/server/am/ActivityManagerService$6;
-Lcom/android/server/am/ActivityManagerService$8;
Lcom/android/server/am/ActivityManagerService$FgsTempAllowListItem;
Lcom/android/server/am/ActivityManagerService$GetBackgroundStartPrivilegesFunctor;
Lcom/android/server/am/ActivityManagerService$HiddenApiSettings;
Lcom/android/server/am/ActivityManagerService$Injector;
-Lcom/android/server/am/ActivityManagerService$IntentFirewallInterface;
+Lcom/android/server/am/ActivityManagerService$IntentCreatorToken;
Lcom/android/server/am/ActivityManagerService$Lifecycle;
Lcom/android/server/am/ActivityManagerService$LocalService;
Lcom/android/server/am/ActivityManagerService$MainHandler$1;
-Lcom/android/server/am/ActivityManagerService$MainHandler;
+Lcom/android/server/am/ActivityManagerService$PermissionController;
Lcom/android/server/am/ActivityManagerService$PidMap;
Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
Lcom/android/server/am/ActivityManagerService$UiHandler;
Lcom/android/server/am/ActivityManagerService;
Lcom/android/server/am/ActivityManagerShellCommand;
Lcom/android/server/am/AnrHelper$$ExternalSyntheticLambda0;
-Lcom/android/server/am/AnrHelper$$ExternalSyntheticLambda1;
Lcom/android/server/am/AnrHelper$AnrConsumerThread;
Lcom/android/server/am/AnrHelper;
Lcom/android/server/am/AppBatteryExemptionTracker$AppBatteryExemptionPolicy;
Lcom/android/server/am/AppBatteryExemptionTracker$UidBatteryStates;
Lcom/android/server/am/AppBatteryExemptionTracker;
Lcom/android/server/am/AppBatteryTracker$$ExternalSyntheticLambda0;
-Lcom/android/server/am/AppBatteryTracker$$ExternalSyntheticLambda1;
Lcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;
Lcom/android/server/am/AppBatteryTracker$BatteryUsage;
Lcom/android/server/am/AppBatteryTracker$ImmutableBatteryUsage;
@@ -151,8 +140,8 @@ Lcom/android/server/am/AppBindServiceEventsTracker;
Lcom/android/server/am/AppBroadcastEventsTracker$AppBroadcastEventsPolicy;
Lcom/android/server/am/AppBroadcastEventsTracker;
Lcom/android/server/am/AppErrors;
+Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda0;
Lcom/android/server/am/AppExitInfoTracker$1;
-Lcom/android/server/am/AppExitInfoTracker$2;
Lcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;
Lcom/android/server/am/AppExitInfoTracker$AppTraceRetriever;
Lcom/android/server/am/AppExitInfoTracker$IsolatedUidRecords;
@@ -170,7 +159,7 @@ Lcom/android/server/am/AppMediaSessionTracker;
Lcom/android/server/am/AppPermissionTracker$AppPermissionPolicy;
Lcom/android/server/am/AppPermissionTracker$MyHandler;
Lcom/android/server/am/AppPermissionTracker;
-Lcom/android/server/am/AppProfiler$$ExternalSyntheticLambda0;
+Lcom/android/server/am/AppProfiler$$ExternalSyntheticLambda4;
Lcom/android/server/am/AppProfiler$1;
Lcom/android/server/am/AppProfiler$BgHandler;
Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;
@@ -179,46 +168,40 @@ Lcom/android/server/am/AppProfiler$ProfileData;
Lcom/android/server/am/AppProfiler;
Lcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda1;
Lcom/android/server/am/AppRestrictionController$1;
-Lcom/android/server/am/AppRestrictionController$2;
Lcom/android/server/am/AppRestrictionController$3;
Lcom/android/server/am/AppRestrictionController$4;
Lcom/android/server/am/AppRestrictionController$5;
Lcom/android/server/am/AppRestrictionController$BgHandler;
Lcom/android/server/am/AppRestrictionController$ConstantsObserver;
Lcom/android/server/am/AppRestrictionController$Injector;
-Lcom/android/server/am/AppRestrictionController$NotificationHelper$1;
Lcom/android/server/am/AppRestrictionController$NotificationHelper;
Lcom/android/server/am/AppRestrictionController$RestrictionSettings;
Lcom/android/server/am/AppRestrictionController$TrackerInfo;
-Lcom/android/server/am/AppRestrictionController$UidBatteryUsageProvider;
Lcom/android/server/am/AppRestrictionController;
+Lcom/android/server/am/AppStartInfoTracker$$ExternalSyntheticLambda4;
Lcom/android/server/am/AppStartInfoTracker$1;
-Lcom/android/server/am/AppStartInfoTracker$2;
Lcom/android/server/am/AppStartInfoTracker;
+Lcom/android/server/am/ApplicationThreadDeferred;
Lcom/android/server/am/BaseAppStateDurations;
Lcom/android/server/am/BaseAppStateDurationsTracker$SimplePackageDurations;
Lcom/android/server/am/BaseAppStateDurationsTracker$UidStateDurations;
Lcom/android/server/am/BaseAppStateDurationsTracker;
-Lcom/android/server/am/BaseAppStateEvents$Factory;
-Lcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;
Lcom/android/server/am/BaseAppStateEvents;
Lcom/android/server/am/BaseAppStateEventsTracker$BaseAppStateEventsPolicy;
Lcom/android/server/am/BaseAppStateEventsTracker;
Lcom/android/server/am/BaseAppStatePolicy;
-Lcom/android/server/am/BaseAppStateTimeEvents;
Lcom/android/server/am/BaseAppStateTimeSlotEvents;
Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;
Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$H;
Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;
Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;
Lcom/android/server/am/BaseAppStateTracker$Injector;
-Lcom/android/server/am/BaseAppStateTracker$StateListener;
Lcom/android/server/am/BaseAppStateTracker;
-Lcom/android/server/am/BaseErrorDialog;
-Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda14;
-Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda15;
-Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda16;
-Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda33;
+Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda101;
+Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda103;
+Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda30;
+Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda80;
+Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda95;
Lcom/android/server/am/BatteryStatsService$1;
Lcom/android/server/am/BatteryStatsService$2;
Lcom/android/server/am/BatteryStatsService$3;
@@ -227,6 +210,8 @@ Lcom/android/server/am/BatteryStatsService$WakeupReasonThread;
Lcom/android/server/am/BatteryStatsService;
Lcom/android/server/am/BroadcastConstants$SettingsObserver;
Lcom/android/server/am/BroadcastConstants;
+Lcom/android/server/am/BroadcastController$1;
+Lcom/android/server/am/BroadcastController;
Lcom/android/server/am/BroadcastDeliveryFailedException;
Lcom/android/server/am/BroadcastFilter;
Lcom/android/server/am/BroadcastHistory;
@@ -235,29 +220,21 @@ Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;
Lcom/android/server/am/BroadcastProcessQueue;
Lcom/android/server/am/BroadcastQueue;
Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda12;
-Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda13;
-Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda14;
-Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda15;
-Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda16;
Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda17;
-Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda6;
+Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda1;
Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda7;
Lcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;
Lcom/android/server/am/BroadcastQueueModernImpl;
Lcom/android/server/am/BroadcastRecord;
Lcom/android/server/am/BroadcastRetryException;
Lcom/android/server/am/BroadcastSkipPolicy;
+Lcom/android/server/am/BugReportHandlerUtil$BugreportHandlerResponseBroadcastReceiver;
Lcom/android/server/am/CacheOomRanker$1;
-Lcom/android/server/am/CacheOomRanker$CacheUseComparator;
-Lcom/android/server/am/CacheOomRanker$LastActivityTimeComparator;
-Lcom/android/server/am/CacheOomRanker$LastRssComparator;
Lcom/android/server/am/CacheOomRanker$ProcessDependencies;
Lcom/android/server/am/CacheOomRanker$ProcessDependenciesImpl;
Lcom/android/server/am/CacheOomRanker$RssComparator;
-Lcom/android/server/am/CacheOomRanker$ScoreComparator;
Lcom/android/server/am/CacheOomRanker;
Lcom/android/server/am/CachedAppOptimizer$1;
-Lcom/android/server/am/CachedAppOptimizer$2;
Lcom/android/server/am/CachedAppOptimizer$3;
Lcom/android/server/am/CachedAppOptimizer$4;
Lcom/android/server/am/CachedAppOptimizer$AggregatedCompactionStats;
@@ -277,28 +254,37 @@ Lcom/android/server/am/ComponentAliasResolver$1;
Lcom/android/server/am/ComponentAliasResolver;
Lcom/android/server/am/ContentProviderConnection;
Lcom/android/server/am/ContentProviderHelper;
-Lcom/android/server/am/DropboxRateLimiter$Clock;
+Lcom/android/server/am/DataConnectionStats$PhoneStateListenerImpl;
+Lcom/android/server/am/DataConnectionStats;
Lcom/android/server/am/DropboxRateLimiter$DefaultClock;
Lcom/android/server/am/DropboxRateLimiter;
Lcom/android/server/am/FgsTempAllowList;
Lcom/android/server/am/ForegroundServiceTypeLoggerModule;
+Lcom/android/server/am/Freezer;
Lcom/android/server/am/HostingRecord;
Lcom/android/server/am/InstrumentationReporter$MyThread;
Lcom/android/server/am/InstrumentationReporter;
-Lcom/android/server/am/LmkdConnection$LmkdConnectionListener;
Lcom/android/server/am/LmkdConnection;
Lcom/android/server/am/LowMemDetector$LowMemThread;
Lcom/android/server/am/LowMemDetector;
Lcom/android/server/am/NativeCrashListener;
-Lcom/android/server/am/OomAdjProfiler$$ExternalSyntheticLambda0;
-Lcom/android/server/am/OomAdjProfiler$CpuTimes;
-Lcom/android/server/am/OomAdjProfiler;
-Lcom/android/server/am/OomAdjuster$$ExternalSyntheticLambda0;
+Lcom/android/server/am/OomAdjuster$$ExternalSyntheticLambda1;
Lcom/android/server/am/OomAdjuster$1;
Lcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;
+Lcom/android/server/am/OomAdjuster$Injector;
Lcom/android/server/am/OomAdjuster;
+Lcom/android/server/am/OomAdjusterDebugLogger;
+Lcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionIgnoringReachableClientsConsumer;
+Lcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionsConsumer;
+Lcom/android/server/am/OomAdjusterModernImpl$ComputeHostConsumer;
+Lcom/android/server/am/OomAdjusterModernImpl$Connection;
+Lcom/android/server/am/OomAdjusterModernImpl$OomAdjusterArgs;
+Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNode;
+Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$$ExternalSyntheticLambda0;
+Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$LinkedProcessRecordList;
+Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;
+Lcom/android/server/am/OomAdjusterModernImpl$ReachableCollectingConsumer;
Lcom/android/server/am/OomAdjusterModernImpl;
-Lcom/android/server/am/OomConnection$OomConnectionListener;
Lcom/android/server/am/OomConnection$OomConnectionThread;
Lcom/android/server/am/OomConnection;
Lcom/android/server/am/PendingIntentController;
@@ -307,11 +293,8 @@ Lcom/android/server/am/PendingStartActivityUids;
Lcom/android/server/am/PendingTempAllowlists;
Lcom/android/server/am/PhantomProcessList$Injector;
Lcom/android/server/am/PhantomProcessList;
-Lcom/android/server/am/PreBootBroadcaster;
-Lcom/android/server/am/ProcessList$$ExternalSyntheticLambda4;
+Lcom/android/server/am/ProcessList$$ExternalSyntheticLambda5;
Lcom/android/server/am/ProcessList$1;
-Lcom/android/server/am/ProcessList$2;
-Lcom/android/server/am/ProcessList$ImperceptibleKillRunner$H;
Lcom/android/server/am/ProcessList$ImperceptibleKillRunner$IdlenessReceiver;
Lcom/android/server/am/ProcessList$ImperceptibleKillRunner;
Lcom/android/server/am/ProcessList$IsolatedUidRange;
@@ -321,6 +304,8 @@ Lcom/android/server/am/ProcessList$MyProcessMap;
Lcom/android/server/am/ProcessList$ProcStartHandler;
Lcom/android/server/am/ProcessList;
Lcom/android/server/am/ProcessRecord;
+Lcom/android/server/am/ProcessStateController$GlobalState;
+Lcom/android/server/am/ProcessStateController;
Lcom/android/server/am/ProcessStatsService$1;
Lcom/android/server/am/ProcessStatsService$3;
Lcom/android/server/am/ProcessStatsService$4;
@@ -335,42 +320,36 @@ Lcom/android/server/am/UidObserverController$ChangeRecord;
Lcom/android/server/am/UidObserverController;
Lcom/android/server/am/UidProcessMap;
Lcom/android/server/am/UserController$1;
-Lcom/android/server/am/UserController$Injector$1;
+Lcom/android/server/am/UserController$8;
Lcom/android/server/am/UserController$Injector;
Lcom/android/server/am/UserController$UserProgressListener;
Lcom/android/server/am/UserController;
Lcom/android/server/am/UserState;
-Lcom/android/server/app/GameManagerService;
-Lcom/android/server/appop/AppOpMigrationHelper;
+Lcom/android/server/app/GameManagerService$LocalService;
+Lcom/android/server/apphibernation/AppHibernationService;
Lcom/android/server/appop/AppOpMigrationHelperImpl;
Lcom/android/server/appop/AppOpsCheckingServiceImpl;
-Lcom/android/server/appop/AppOpsCheckingServiceInterface$AppOpsModeChangedListener;
Lcom/android/server/appop/AppOpsCheckingServiceInterface;
Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;
Lcom/android/server/appop/AppOpsManagerLocal;
-Lcom/android/server/appop/AppOpsRestrictions$AppOpsRestrictionRemovedListener;
+Lcom/android/server/appop/AppOpsRecentAccessPersistence;
Lcom/android/server/appop/AppOpsRestrictions;
Lcom/android/server/appop/AppOpsRestrictionsImpl;
-Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda4;
+Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda7;
Lcom/android/server/appop/AppOpsService$1$1;
Lcom/android/server/appop/AppOpsService$1;
Lcom/android/server/appop/AppOpsService$2;
Lcom/android/server/appop/AppOpsService$3;
-Lcom/android/server/appop/AppOpsService$4;
+Lcom/android/server/appop/AppOpsService$6;
Lcom/android/server/appop/AppOpsService$8;
-Lcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl-IA;
Lcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl;
-Lcom/android/server/appop/AppOpsService$AppOpsManagerLocalImpl;
Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;
Lcom/android/server/appop/AppOpsService$Constants;
-Lcom/android/server/appop/AppOpsService$ModeCallback;
Lcom/android/server/appop/AppOpsService$Op;
Lcom/android/server/appop/AppOpsService$Ops;
Lcom/android/server/appop/AppOpsService$Shell;
Lcom/android/server/appop/AppOpsService$UidState;
Lcom/android/server/appop/AppOpsService;
-Lcom/android/server/appop/AppOpsUidStateTracker;
-Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
Lcom/android/server/appop/AttributedOp$InProgressStartOpEventPool;
Lcom/android/server/appop/AttributedOp$OpEventProxyInfoPool;
Lcom/android/server/appop/AttributedOp;
@@ -379,13 +358,16 @@ Lcom/android/server/appop/DiscreteRegistry$DiscreteOps;
Lcom/android/server/appop/DiscreteRegistry;
Lcom/android/server/appop/HistoricalRegistry$1;
Lcom/android/server/appop/HistoricalRegistry;
-Lcom/android/server/appop/OnOpModeChangedListener;
+Lcom/android/server/autofill/AutofillManagerService$1$$ExternalSyntheticLambda0;
Lcom/android/server/biometrics/sensors/face/FaceService;
Lcom/android/server/broadcastradio/hal1/BroadcastRadioService;
Lcom/android/server/broadcastradio/hal1/Convert;
Lcom/android/server/broadcastradio/hal1/Tuner;
Lcom/android/server/broadcastradio/hal1/TunerCallback;
+Lcom/android/server/companion/virtual/GenericWindowPolicyController$RunningAppsChangedListener;
Lcom/android/server/companion/virtual/InputController;
+Lcom/android/server/companion/virtual/VirtualDeviceImpl;
+Lcom/android/server/companion/virtual/VirtualDeviceManagerInternal;
Lcom/android/server/compat/CompatChange$ChangeListener;
Lcom/android/server/compat/CompatChange;
Lcom/android/server/compat/CompatConfig;
@@ -399,6 +381,7 @@ Lcom/android/server/compat/config/Config;
Lcom/android/server/compat/config/XmlParser;
Lcom/android/server/connectivity/Vpn;
Lcom/android/server/coverage/CoverageService;
+Lcom/android/server/crashrecovery/CrashRecoveryHelper;
Lcom/android/server/criticalevents/CriticalEventLog$$ExternalSyntheticLambda0;
Lcom/android/server/criticalevents/CriticalEventLog$$ExternalSyntheticLambda1;
Lcom/android/server/criticalevents/CriticalEventLog$ILogLoader;
@@ -406,9 +389,8 @@ Lcom/android/server/criticalevents/CriticalEventLog$LogLoader;
Lcom/android/server/criticalevents/CriticalEventLog$ThreadSafeRingBuffer;
Lcom/android/server/criticalevents/CriticalEventLog;
Lcom/android/server/devicepolicy/CryptoTestHelper;
-Lcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;
-Lcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;
-Lcom/android/server/display/BrightnessMappingStrategy;
+Lcom/android/server/display/AutomaticBrightnessController$Callbacks;
+Lcom/android/server/display/BrightnessTracker$TrackerHandler;
Lcom/android/server/display/DeviceStateToLayoutMap;
Lcom/android/server/display/DisplayAdapter$$ExternalSyntheticLambda0;
Lcom/android/server/display/DisplayAdapter$$ExternalSyntheticLambda1;
@@ -417,42 +399,50 @@ Lcom/android/server/display/DisplayAdapter;
Lcom/android/server/display/DisplayBlanker;
Lcom/android/server/display/DisplayControl;
Lcom/android/server/display/DisplayDevice;
+Lcom/android/server/display/DisplayDeviceConfig$$ExternalSyntheticLambda1;
+Lcom/android/server/display/DisplayDeviceConfig$$ExternalSyntheticOutline0;
Lcom/android/server/display/DisplayDeviceConfig;
Lcom/android/server/display/DisplayDeviceInfo;
Lcom/android/server/display/DisplayDeviceRepository$Listener;
Lcom/android/server/display/DisplayDeviceRepository;
Lcom/android/server/display/DisplayGroup;
Lcom/android/server/display/DisplayInfoProxy;
+Lcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda4;
+Lcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda5;
Lcom/android/server/display/DisplayManagerService$1;
Lcom/android/server/display/DisplayManagerService$2;
Lcom/android/server/display/DisplayManagerService$BinderService;
Lcom/android/server/display/DisplayManagerService$BrightnessPair;
Lcom/android/server/display/DisplayManagerService$DisplayManagerHandler;
-Lcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector;
Lcom/android/server/display/DisplayManagerService$Injector;
Lcom/android/server/display/DisplayManagerService$LocalService;
-Lcom/android/server/display/DisplayManagerService$LogicalDisplayListener;
Lcom/android/server/display/DisplayManagerService$SyncRoot;
Lcom/android/server/display/DisplayManagerService$UidImportanceListener;
Lcom/android/server/display/DisplayManagerService;
Lcom/android/server/display/DisplayManagerShellCommand;
-Lcom/android/server/display/ExternalDisplayPolicy$Injector;
-Lcom/android/server/display/ExternalDisplayPolicy$SkinThermalStatusObserver;
+Lcom/android/server/display/DisplayPowerController$DisplayControllerHandler;
+Lcom/android/server/display/DisplayPowerController$SettingsObserver;
+Lcom/android/server/display/DisplayPowerController;
+Lcom/android/server/display/DisplayPowerProximityStateController$DisplayPowerProximityStateHandler;
+Lcom/android/server/display/DisplayTopologyCoordinator;
Lcom/android/server/display/ExternalDisplayPolicy;
+Lcom/android/server/display/ExternalDisplayStatsService$1$$ExternalSyntheticLambda0;
+Lcom/android/server/display/ExternalDisplayStatsService$1;
+Lcom/android/server/display/ExternalDisplayStatsService$2;
+Lcom/android/server/display/ExternalDisplayStatsService$Injector;
+Lcom/android/server/display/ExternalDisplayStatsService;
Lcom/android/server/display/HighBrightnessModeMetadataMapper;
Lcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;
-Lcom/android/server/display/LocalDisplayAdapter$DisplayEventListener;
Lcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;
Lcom/android/server/display/LocalDisplayAdapter$Injector;
+Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;
Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;
Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayEventListener;
Lcom/android/server/display/LocalDisplayAdapter$ProxyDisplayEventReceiver;
Lcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;
Lcom/android/server/display/LocalDisplayAdapter;
Lcom/android/server/display/LogicalDisplay;
-Lcom/android/server/display/LogicalDisplayMapper$$ExternalSyntheticLambda0;
-Lcom/android/server/display/LogicalDisplayMapper$$ExternalSyntheticLambda3;
-Lcom/android/server/display/LogicalDisplayMapper$Listener;
+Lcom/android/server/display/LogicalDisplayMapper$$ExternalSyntheticLambda2;
Lcom/android/server/display/LogicalDisplayMapper$LogicalDisplayMapperHandler;
Lcom/android/server/display/LogicalDisplayMapper;
Lcom/android/server/display/OverlayDisplayAdapter;
@@ -467,88 +457,75 @@ Lcom/android/server/display/VirtualDisplayAdapter$SurfaceControlDisplayFactory;
Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;
Lcom/android/server/display/VirtualDisplayAdapter;
Lcom/android/server/display/WifiDisplayAdapter;
+Lcom/android/server/display/config/AutoBrightness;
Lcom/android/server/display/config/AutoBrightnessModeName;
Lcom/android/server/display/config/AutoBrightnessSettingName;
Lcom/android/server/display/config/DisplayBrightnessMappingConfig;
+Lcom/android/server/display/config/DisplayConfiguration;
+Lcom/android/server/display/config/HbmTiming;
+Lcom/android/server/display/config/HdrBrightnessData;
+Lcom/android/server/display/config/HighBrightnessMode;
+Lcom/android/server/display/config/HighBrightnessModeData;
+Lcom/android/server/display/config/HysteresisLevels;
+Lcom/android/server/display/config/LuxToBrightnessMapping;
+Lcom/android/server/display/config/NitsMap;
+Lcom/android/server/display/config/NonNegativeFloatToFloatMap;
+Lcom/android/server/display/config/NonNegativeFloatToFloatPoint;
+Lcom/android/server/display/config/Point;
+Lcom/android/server/display/config/PredefinedBrightnessLimitNames;
+Lcom/android/server/display/config/RefreshRateData;
Lcom/android/server/display/config/SensorData;
+Lcom/android/server/display/config/SupportedModeData;
Lcom/android/server/display/config/ThermalStatus;
+Lcom/android/server/display/config/XmlParser;
Lcom/android/server/display/feature/DeviceConfigParameterProvider;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda0;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda10;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda11;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda12;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda13;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda14;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda15;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda16;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda17;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda18;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda19;
Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda1;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda20;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda2;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda3;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda4;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda5;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda6;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda7;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda8;
-Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda9;
-Lcom/android/server/display/feature/DisplayManagerFlags$FlagState-IA;
Lcom/android/server/display/feature/DisplayManagerFlags$FlagState;
Lcom/android/server/display/feature/DisplayManagerFlags;
-Lcom/android/server/display/layout/DisplayIdProducer;
Lcom/android/server/display/layout/Layout$Display;
Lcom/android/server/display/layout/Layout;
Lcom/android/server/display/mode/DisplayModeDirector$$ExternalSyntheticLambda0;
Lcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda10;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda11;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda12;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda13;
+Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda0;
+Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda1;
Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda2;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda5;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda6;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda7;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda8;
-Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda9;
Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$1;
Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$LightSensorEventListener$1;
Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;
Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;
Lcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;
-Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda0;
-Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda1;
-Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda2;
-Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda3;
Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;
Lcom/android/server/display/mode/DisplayModeDirector$DisplayModeDirectorHandler;
Lcom/android/server/display/mode/DisplayModeDirector$DisplayObserver;
Lcom/android/server/display/mode/DisplayModeDirector$HbmObserver;
Lcom/android/server/display/mode/DisplayModeDirector$Injector;
Lcom/android/server/display/mode/DisplayModeDirector$RealInjector;
-Lcom/android/server/display/mode/DisplayModeDirector$SensorObserver;
+Lcom/android/server/display/mode/DisplayModeDirector$SettingsObserver$1;
Lcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;
Lcom/android/server/display/mode/DisplayModeDirector$UdfpsObserver;
Lcom/android/server/display/mode/DisplayModeDirector;
+Lcom/android/server/display/mode/ProximitySensorObserver;
Lcom/android/server/display/mode/RefreshRateVote$PhysicalVote;
Lcom/android/server/display/mode/RefreshRateVote$RenderVote;
Lcom/android/server/display/mode/RefreshRateVote;
Lcom/android/server/display/mode/SkinThermalStatusObserver;
-Lcom/android/server/display/mode/SupportedModesVote;
+Lcom/android/server/display/mode/SupportedRefreshRatesVote;
+Lcom/android/server/display/mode/SyntheticModeManager;
+Lcom/android/server/display/mode/SystemRequestObserver$1;
+Lcom/android/server/display/mode/SystemRequestObserver;
Lcom/android/server/display/mode/Vote;
Lcom/android/server/display/mode/VotesStatsReporter;
-Lcom/android/server/display/mode/VotesStorage$Listener;
Lcom/android/server/display/mode/VotesStorage;
-Lcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector$Listener;
Lcom/android/server/display/notifications/DisplayNotificationManager$1;
Lcom/android/server/display/notifications/DisplayNotificationManager$Injector;
Lcom/android/server/display/notifications/DisplayNotificationManager;
+Lcom/android/server/display/plugin/PluginManager$Injector;
+Lcom/android/server/display/plugin/PluginManager;
+Lcom/android/server/display/plugin/PluginStorage;
+Lcom/android/server/display/utils/AmbientFilter$WeightedMovingAverageAmbientFilter;
Lcom/android/server/display/utils/AmbientFilter;
Lcom/android/server/display/utils/DebugUtils;
Lcom/android/server/display/utils/DeviceConfigParsingUtils;
-Lcom/android/server/display/utils/Plog$SystemPlog;
-Lcom/android/server/display/utils/Plog;
Lcom/android/server/firewall/AndFilter$1;
Lcom/android/server/firewall/AndFilter;
Lcom/android/server/firewall/CategoryFilter$1;
@@ -556,7 +533,6 @@ Lcom/android/server/firewall/CategoryFilter;
Lcom/android/server/firewall/Filter;
Lcom/android/server/firewall/FilterFactory;
Lcom/android/server/firewall/FilterList;
-Lcom/android/server/firewall/IntentFirewall$AMSInterface;
Lcom/android/server/firewall/IntentFirewall$FirewallHandler;
Lcom/android/server/firewall/IntentFirewall$FirewallIntentFilter;
Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;
@@ -571,31 +547,18 @@ Lcom/android/server/firewall/PortFilter$1;
Lcom/android/server/firewall/PortFilter;
Lcom/android/server/firewall/SenderFilter$1;
Lcom/android/server/firewall/SenderFilter$2;
-Lcom/android/server/firewall/SenderFilter$3;
-Lcom/android/server/firewall/SenderFilter$4;
-Lcom/android/server/firewall/SenderFilter$5;
Lcom/android/server/firewall/SenderFilter;
Lcom/android/server/firewall/SenderPackageFilter$1;
Lcom/android/server/firewall/SenderPackageFilter;
Lcom/android/server/firewall/SenderPermissionFilter$1;
Lcom/android/server/firewall/SenderPermissionFilter;
-Lcom/android/server/firewall/StringFilter$10;
Lcom/android/server/firewall/StringFilter$1;
-Lcom/android/server/firewall/StringFilter$2;
-Lcom/android/server/firewall/StringFilter$3;
-Lcom/android/server/firewall/StringFilter$4;
-Lcom/android/server/firewall/StringFilter$5;
-Lcom/android/server/firewall/StringFilter$6;
-Lcom/android/server/firewall/StringFilter$7;
-Lcom/android/server/firewall/StringFilter$8;
-Lcom/android/server/firewall/StringFilter$9;
Lcom/android/server/firewall/StringFilter$ContainsFilter;
Lcom/android/server/firewall/StringFilter$EqualsFilter;
Lcom/android/server/firewall/StringFilter$IsNullFilter;
Lcom/android/server/firewall/StringFilter$PatternStringFilter;
Lcom/android/server/firewall/StringFilter$RegexFilter;
Lcom/android/server/firewall/StringFilter$StartsWithFilter;
-Lcom/android/server/firewall/StringFilter$ValueProvider;
Lcom/android/server/firewall/StringFilter;
Lcom/android/server/flags/DynamicFlagBinderDelegate$$ExternalSyntheticLambda0;
Lcom/android/server/flags/DynamicFlagBinderDelegate$$ExternalSyntheticLambda1;
@@ -607,23 +570,32 @@ Lcom/android/server/flags/FeatureFlagsService$PermissionsChecker;
Lcom/android/server/flags/FeatureFlagsService;
Lcom/android/server/flags/FlagCache$$ExternalSyntheticLambda0;
Lcom/android/server/flags/FlagCache;
-Lcom/android/server/flags/FlagOverrideStore$FlagChangeCallback;
Lcom/android/server/flags/FlagOverrideStore;
Lcom/android/server/flags/FlagsShellCommand;
Lcom/android/server/flags/GlobalSettingsProxy;
-Lcom/android/server/flags/SettingsProxy;
Lcom/android/server/gpu/GpuService;
Lcom/android/server/graphics/fonts/FontManagerService$Lifecycle;
-Lcom/android/server/input/InputManagerInternal;
-Lcom/android/server/input/InputManagerService$4;
+Lcom/android/server/input/BatteryController$State;
+Lcom/android/server/input/InputManagerService$2;
Lcom/android/server/input/InputManagerService$AdditionalDisplayInputProperties;
Lcom/android/server/input/InputManagerService$InputFilterHost;
Lcom/android/server/input/InputManagerService$InputManagerHandler;
-Lcom/android/server/input/InputManagerService$LocalService;
Lcom/android/server/input/InputManagerService;
+Lcom/android/server/input/InputSettingsObserver$1;
+Lcom/android/server/input/InputSettingsObserver;
Lcom/android/server/input/InputShellCommand;
+Lcom/android/server/input/KeyGestureController$SettingsObserver;
+Lcom/android/server/input/KeyboardBacklightController$1;
+Lcom/android/server/input/KeyboardGlyphManager$1;
+Lcom/android/server/input/KeyboardLayoutManager$1;
+Lcom/android/server/input/KeyboardLedController$1;
Lcom/android/server/input/NativeInputManagerService$NativeImpl;
Lcom/android/server/input/NativeInputManagerService;
+Lcom/android/server/input/TouchpadFingerState;
+Lcom/android/server/input/TouchpadHardwareProperties;
+Lcom/android/server/input/TouchpadHardwareState;
+Lcom/android/server/input/UEventManager$UEventListener$1;
+Lcom/android/server/input/UEventManager$UEventListener;
Lcom/android/server/input/debug/FocusEventDebugView;
Lcom/android/server/lights/LightsManager;
Lcom/android/server/lights/LightsService$1;
@@ -644,14 +616,12 @@ Lcom/android/server/om/OverlayReferenceMapper;
Lcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;
Lcom/android/server/os/DeviceIdentifiersPolicyService;
Lcom/android/server/pdb/PersistentDataBlockService;
+Lcom/android/server/permission/PermissionManagerLocal;
Lcom/android/server/permission/access/AccessCheckingService;
-Lcom/android/server/permission/access/AccessPersistence$Companion;
Lcom/android/server/permission/access/AccessPersistence$WriteHandler;
Lcom/android/server/permission/access/AccessPersistence;
-Lcom/android/server/permission/access/AccessPolicy$Companion;
Lcom/android/server/permission/access/AccessPolicy;
Lcom/android/server/permission/access/AccessState;
-Lcom/android/server/permission/access/ExternalState;
Lcom/android/server/permission/access/GetStateScope;
Lcom/android/server/permission/access/MutableAccessState;
Lcom/android/server/permission/access/MutableExternalState;
@@ -659,47 +629,24 @@ Lcom/android/server/permission/access/MutableSystemState;
Lcom/android/server/permission/access/MutableUserState;
Lcom/android/server/permission/access/MutateStateScope;
Lcom/android/server/permission/access/SchemePolicy;
-Lcom/android/server/permission/access/SystemState;
-Lcom/android/server/permission/access/UserState;
Lcom/android/server/permission/access/WritableState;
-Lcom/android/server/permission/access/appop/AppIdAppOpMigration$Companion;
-Lcom/android/server/permission/access/appop/AppIdAppOpMigration;
-Lcom/android/server/permission/access/appop/AppIdAppOpPersistence$Companion;
Lcom/android/server/permission/access/appop/AppIdAppOpPersistence;
-Lcom/android/server/permission/access/appop/AppIdAppOpPolicy$Companion;
-Lcom/android/server/permission/access/appop/AppIdAppOpPolicy$OnAppOpModeChangedListener;
Lcom/android/server/permission/access/appop/AppIdAppOpPolicy;
Lcom/android/server/permission/access/appop/AppIdAppOpUpgrade;
Lcom/android/server/permission/access/appop/AppOpService$OnAppIdAppOpModeChangedListener;
Lcom/android/server/permission/access/appop/AppOpService$OnPackageAppOpModeChangedListener;
Lcom/android/server/permission/access/appop/AppOpService;
-Lcom/android/server/permission/access/appop/BaseAppOpPersistence$Companion;
Lcom/android/server/permission/access/appop/BaseAppOpPersistence;
Lcom/android/server/permission/access/appop/BaseAppOpPolicy;
-Lcom/android/server/permission/access/appop/PackageAppOpMigration$Companion;
-Lcom/android/server/permission/access/appop/PackageAppOpMigration;
-Lcom/android/server/permission/access/appop/PackageAppOpPersistence$Companion;
Lcom/android/server/permission/access/appop/PackageAppOpPersistence;
-Lcom/android/server/permission/access/appop/PackageAppOpPolicy$Companion;
-Lcom/android/server/permission/access/appop/PackageAppOpPolicy$OnAppOpModeChangedListener;
Lcom/android/server/permission/access/appop/PackageAppOpPolicy;
Lcom/android/server/permission/access/appop/PackageAppOpUpgrade;
-Lcom/android/server/permission/access/collection/ArraySetExtensionsKt;
Lcom/android/server/permission/access/immutable/Immutable;
-Lcom/android/server/permission/access/immutable/IndexedList;
Lcom/android/server/permission/access/immutable/IndexedListSet;
Lcom/android/server/permission/access/immutable/IndexedMap;
-Lcom/android/server/permission/access/immutable/IndexedReferenceMap;
-Lcom/android/server/permission/access/immutable/IndexedSet;
Lcom/android/server/permission/access/immutable/IndexedSetExtensionsKt;
Lcom/android/server/permission/access/immutable/IntMap;
-Lcom/android/server/permission/access/immutable/IntMapExtensionsKt;
-Lcom/android/server/permission/access/immutable/IntMapKt;
-Lcom/android/server/permission/access/immutable/IntReferenceMap;
Lcom/android/server/permission/access/immutable/IntReferenceMapExtensionsKt;
-Lcom/android/server/permission/access/immutable/IntSet;
-Lcom/android/server/permission/access/immutable/IntSetExtensionsKt;
-Lcom/android/server/permission/access/immutable/MutableIndexedList;
Lcom/android/server/permission/access/immutable/MutableIndexedListSet;
Lcom/android/server/permission/access/immutable/MutableIndexedMap;
Lcom/android/server/permission/access/immutable/MutableIndexedReferenceMap;
@@ -708,44 +655,23 @@ Lcom/android/server/permission/access/immutable/MutableIntMap;
Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;
Lcom/android/server/permission/access/immutable/MutableIntSet;
Lcom/android/server/permission/access/immutable/MutableReference;
-Lcom/android/server/permission/access/permission/AppIdPermissionMigration$Companion;
-Lcom/android/server/permission/access/permission/AppIdPermissionMigration;
-Lcom/android/server/permission/access/permission/AppIdPermissionPersistence$Companion;
Lcom/android/server/permission/access/permission/AppIdPermissionPersistence;
-Lcom/android/server/permission/access/permission/AppIdPermissionPolicy$Companion;
+Lcom/android/server/permission/access/permission/AppIdPermissionPolicy$OnPermissionFlagsChangedListener;
Lcom/android/server/permission/access/permission/AppIdPermissionPolicy;
-Lcom/android/server/permission/access/permission/AppIdPermissionUpgrade$Companion;
Lcom/android/server/permission/access/permission/AppIdPermissionUpgrade;
-Lcom/android/server/permission/access/permission/DevicePermissionPersistence$Companion;
-Lcom/android/server/permission/access/permission/DevicePermissionPersistence;
-Lcom/android/server/permission/access/permission/DevicePermissionPolicy$Companion;
+Lcom/android/server/permission/access/permission/DevicePermissionPolicy$OnDevicePermissionFlagsChangedListener;
Lcom/android/server/permission/access/permission/DevicePermissionPolicy;
-Lcom/android/server/permission/access/permission/Permission$Companion;
Lcom/android/server/permission/access/permission/Permission;
-Lcom/android/server/permission/access/permission/PermissionService$Companion;
+Lcom/android/server/permission/access/permission/PermissionManagerLocalImpl;
+Lcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;
+Lcom/android/server/permission/access/permission/PermissionService$OnPermissionsChangeListeners;
Lcom/android/server/permission/access/permission/PermissionService;
-Lcom/android/server/permission/access/util/PermissionApex;
Lcom/android/server/permission/jarjar/kotlin/Pair;
-Lcom/android/server/permission/jarjar/kotlin/TuplesKt;
Lcom/android/server/permission/jarjar/kotlin/UninitializedPropertyAccessException;
-Lcom/android/server/permission/jarjar/kotlin/collections/ArraysKt;
-Lcom/android/server/permission/jarjar/kotlin/collections/ArraysKt__ArraysJVMKt;
-Lcom/android/server/permission/jarjar/kotlin/collections/ArraysKt__ArraysKt;
-Lcom/android/server/permission/jarjar/kotlin/collections/ArraysKt___ArraysJvmKt;
-Lcom/android/server/permission/jarjar/kotlin/collections/ArraysKt___ArraysKt;
-Lcom/android/server/permission/jarjar/kotlin/collections/ArraysUtilJVM;
+Lcom/android/server/permission/jarjar/kotlin/collections/EmptyList;
Lcom/android/server/permission/jarjar/kotlin/collections/EmptyMap;
-Lcom/android/server/permission/jarjar/kotlin/collections/EmptySet;
-Lcom/android/server/permission/jarjar/kotlin/collections/MapsKt;
-Lcom/android/server/permission/jarjar/kotlin/collections/MapsKt__MapWithDefaultKt;
-Lcom/android/server/permission/jarjar/kotlin/collections/MapsKt__MapsJVMKt;
Lcom/android/server/permission/jarjar/kotlin/collections/MapsKt__MapsKt;
-Lcom/android/server/permission/jarjar/kotlin/collections/MapsKt___MapsJvmKt;
-Lcom/android/server/permission/jarjar/kotlin/collections/MapsKt___MapsKt;
-Lcom/android/server/permission/jarjar/kotlin/collections/SetsKt;
-Lcom/android/server/permission/jarjar/kotlin/collections/SetsKt__SetsJVMKt;
-Lcom/android/server/permission/jarjar/kotlin/collections/SetsKt__SetsKt;
-Lcom/android/server/permission/jarjar/kotlin/collections/SetsKt___SetsKt;
+Lcom/android/server/permission/jarjar/kotlin/io/CloseableKt;
Lcom/android/server/permission/jarjar/kotlin/jdk7/AutoCloseableKt;
Lcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;
Lcom/android/server/pm/AbstractStatsBase$1;
@@ -753,6 +679,7 @@ Lcom/android/server/pm/AbstractStatsBase;
Lcom/android/server/pm/ApexManager$1;
Lcom/android/server/pm/ApexManager$ActiveApexInfo;
Lcom/android/server/pm/ApexManager$ApexManagerImpl;
+Lcom/android/server/pm/ApexManager$ScanResult;
Lcom/android/server/pm/ApexManager;
Lcom/android/server/pm/AppDataHelper;
Lcom/android/server/pm/AppIdSettingMap;
@@ -761,10 +688,7 @@ Lcom/android/server/pm/AppsFilterImpl$$ExternalSyntheticLambda0;
Lcom/android/server/pm/AppsFilterImpl$1;
Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;
Lcom/android/server/pm/AppsFilterImpl;
-Lcom/android/server/pm/AppsFilterLocked;
-Lcom/android/server/pm/AppsFilterSnapshot;
Lcom/android/server/pm/AppsFilterSnapshotImpl;
-Lcom/android/server/pm/BackgroundDexOptService;
Lcom/android/server/pm/BroadcastHelper;
Lcom/android/server/pm/ChangedPackagesTracker;
Lcom/android/server/pm/CompilerStats;
@@ -773,19 +697,18 @@ Lcom/android/server/pm/ComputerEngine$$ExternalSyntheticLambda1;
Lcom/android/server/pm/ComputerEngine$Settings;
Lcom/android/server/pm/ComputerEngine;
Lcom/android/server/pm/ComputerLocked;
+Lcom/android/server/pm/CrossProfileIntentFilter$$ExternalSyntheticOutline0;
Lcom/android/server/pm/CrossProfileIntentFilter;
-Lcom/android/server/pm/CrossProfileIntentFilterHelper;
Lcom/android/server/pm/CrossProfileIntentResolver;
Lcom/android/server/pm/CrossProfileIntentResolverEngine;
Lcom/android/server/pm/CrossProfileResolver;
Lcom/android/server/pm/DataLoaderManagerService$DataLoaderManagerBinderService;
Lcom/android/server/pm/DataLoaderManagerService;
Lcom/android/server/pm/DefaultAppProvider;
-Lcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;
-Lcom/android/server/pm/DefaultCrossProfileIntentFilter-IA;
Lcom/android/server/pm/DefaultCrossProfileIntentFilter;
Lcom/android/server/pm/DefaultCrossProfileIntentFiltersUtils;
Lcom/android/server/pm/DefaultCrossProfileResolver;
+Lcom/android/server/pm/DeletePackageAction;
Lcom/android/server/pm/DeletePackageHelper;
Lcom/android/server/pm/DexOptHelper$1;
Lcom/android/server/pm/DexOptHelper$DexoptDoneHandler;
@@ -795,7 +718,10 @@ Lcom/android/server/pm/DomainVerificationConnection;
Lcom/android/server/pm/FeatureConfig;
Lcom/android/server/pm/FreeStorageHelper;
Lcom/android/server/pm/InitAppsHelper;
+Lcom/android/server/pm/InstallArgs;
+Lcom/android/server/pm/InstallPackageHelper$$ExternalSyntheticLambda5;
Lcom/android/server/pm/InstallPackageHelper;
+Lcom/android/server/pm/InstallRequest;
Lcom/android/server/pm/InstallSource;
Lcom/android/server/pm/Installer$$ExternalSyntheticLambda0;
Lcom/android/server/pm/Installer$InstallerException;
@@ -805,102 +731,75 @@ Lcom/android/server/pm/InstantAppRegistry$1;
Lcom/android/server/pm/InstantAppRegistry$2;
Lcom/android/server/pm/InstantAppRegistry$CookiePersistence;
Lcom/android/server/pm/InstantAppRegistry;
+Lcom/android/server/pm/InstantAppResolverConnection$ConnectionException;
Lcom/android/server/pm/InstantAppResolverConnection;
Lcom/android/server/pm/InstructionSets;
Lcom/android/server/pm/KeySetHandle;
-Lcom/android/server/pm/KeySetManagerService$PublicKeyHandle-IA;
Lcom/android/server/pm/KeySetManagerService$PublicKeyHandle;
Lcom/android/server/pm/KeySetManagerService;
Lcom/android/server/pm/KnownPackages;
Lcom/android/server/pm/ModuleInfoProvider;
Lcom/android/server/pm/MovePackageHelper$MoveCallbacks;
Lcom/android/server/pm/NoFilteringResolver;
+Lcom/android/server/pm/PackageAbiHelper$Abis;
+Lcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;
Lcom/android/server/pm/PackageAbiHelper;
Lcom/android/server/pm/PackageAbiHelperImpl;
+Lcom/android/server/pm/PackageArchiver$FixedSizeBitmapDrawable;
Lcom/android/server/pm/PackageArchiver;
Lcom/android/server/pm/PackageDexOptimizer$1;
-Lcom/android/server/pm/PackageDexOptimizer$ForcedUpdatePackageDexOptimizer;
Lcom/android/server/pm/PackageDexOptimizer$Injector;
Lcom/android/server/pm/PackageDexOptimizer;
Lcom/android/server/pm/PackageHandler;
+Lcom/android/server/pm/PackageInstallerService$Callbacks;
Lcom/android/server/pm/PackageInstallerService;
+Lcom/android/server/pm/PackageInstallerSession$1;
+Lcom/android/server/pm/PackageInstallerSession;
Lcom/android/server/pm/PackageKeySetData;
Lcom/android/server/pm/PackageManagerException;
-Lcom/android/server/pm/PackageManagerInternalBase;
Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;
Lcom/android/server/pm/PackageManagerLocal;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda10;
Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda11;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda12;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda13;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda14;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda15;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda16;
Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda18;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda19;
Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda1;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda20;
Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda21;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda22;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda23;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda24;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda25;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda26;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda27;
Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda28;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda29;
Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda2;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda30;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda32;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda33;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda34;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda35;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda36;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda37;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda31;
Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda38;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda3;
Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda41;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda42;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda43;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda50;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda51;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda6;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda7;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda8;
-Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda9;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda49;
Lcom/android/server/pm/PackageManagerService$1;
Lcom/android/server/pm/PackageManagerService$2;
Lcom/android/server/pm/PackageManagerService$3;
Lcom/android/server/pm/PackageManagerService$4;
Lcom/android/server/pm/PackageManagerService$5;
-Lcom/android/server/pm/PackageManagerService$6;
Lcom/android/server/pm/PackageManagerService$DefaultSystemWrapper;
Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
Lcom/android/server/pm/PackageManagerService$Snapshot;
Lcom/android/server/pm/PackageManagerService;
Lcom/android/server/pm/PackageManagerServiceCompilerMapping;
Lcom/android/server/pm/PackageManagerServiceInjector$Producer;
-Lcom/android/server/pm/PackageManagerServiceInjector$ProducerWithArgument;
-Lcom/android/server/pm/PackageManagerServiceInjector$ServiceProducer;
Lcom/android/server/pm/PackageManagerServiceInjector$Singleton;
-Lcom/android/server/pm/PackageManagerServiceInjector$SystemWrapper;
Lcom/android/server/pm/PackageManagerServiceInjector;
Lcom/android/server/pm/PackageManagerServiceUtils$$ExternalSyntheticLambda0;
-Lcom/android/server/pm/PackageManagerServiceUtils$$ExternalSyntheticLambda1;
-Lcom/android/server/pm/PackageManagerServiceUtils$$ExternalSyntheticLambda2;
Lcom/android/server/pm/PackageManagerServiceUtils;
+Lcom/android/server/pm/PackageManagerShellCommand;
Lcom/android/server/pm/PackageManagerShellCommandDataLoader;
+Lcom/android/server/pm/PackageManagerTracedLock$RawLock;
Lcom/android/server/pm/PackageManagerTracedLock;
+Lcom/android/server/pm/PackageMetrics;
Lcom/android/server/pm/PackageMonitorCallbackHelper;
Lcom/android/server/pm/PackageObserverHelper;
Lcom/android/server/pm/PackageProperty;
Lcom/android/server/pm/PackageSender;
-Lcom/android/server/pm/PackageSessionProvider;
Lcom/android/server/pm/PackageSetting$1;
Lcom/android/server/pm/PackageSetting;
Lcom/android/server/pm/PackageSignatures;
Lcom/android/server/pm/PackageUsage;
+Lcom/android/server/pm/ParallelPackageParser$$ExternalSyntheticLambda0;
+Lcom/android/server/pm/ParallelPackageParser$ParseResult;
+Lcom/android/server/pm/ParallelPackageParser;
Lcom/android/server/pm/PendingPackageBroadcasts;
Lcom/android/server/pm/PersistentPreferredActivity;
Lcom/android/server/pm/PersistentPreferredIntentResolver;
@@ -910,7 +809,6 @@ Lcom/android/server/pm/PolicyComparator;
Lcom/android/server/pm/PreferredActivity$1;
Lcom/android/server/pm/PreferredActivity;
Lcom/android/server/pm/PreferredActivityHelper;
-Lcom/android/server/pm/PreferredComponent$Callbacks;
Lcom/android/server/pm/PreferredComponent;
Lcom/android/server/pm/PreferredIntentResolver$1;
Lcom/android/server/pm/PreferredIntentResolver;
@@ -918,6 +816,8 @@ Lcom/android/server/pm/PrepareFailure;
Lcom/android/server/pm/ProcessLoggingHandler;
Lcom/android/server/pm/ProtectedPackages;
Lcom/android/server/pm/ReconcileFailure;
+Lcom/android/server/pm/ReconcilePackageUtils;
+Lcom/android/server/pm/ReconciledPackage;
Lcom/android/server/pm/RemovePackageHelper;
Lcom/android/server/pm/ResilientAtomicFile$ReadEventLogger;
Lcom/android/server/pm/ResilientAtomicFile;
@@ -926,23 +826,21 @@ Lcom/android/server/pm/RestrictionsSet;
Lcom/android/server/pm/SELinuxMMAC;
Lcom/android/server/pm/ScanPackageUtils;
Lcom/android/server/pm/ScanPartition;
+Lcom/android/server/pm/ScanRequest;
+Lcom/android/server/pm/ScanResult;
Lcom/android/server/pm/SettingBase;
Lcom/android/server/pm/Settings$1;
Lcom/android/server/pm/Settings$2;
Lcom/android/server/pm/Settings$3;
+Lcom/android/server/pm/Settings$KeySetToValueMap;
Lcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;
-Lcom/android/server/pm/Settings$RuntimePermissionPersistence$PersistenceHandler;
Lcom/android/server/pm/Settings$RuntimePermissionPersistence;
Lcom/android/server/pm/Settings$VersionInfo;
Lcom/android/server/pm/Settings;
-Lcom/android/server/pm/SettingsXml$ChildSection;
-Lcom/android/server/pm/SettingsXml$ReadSection;
Lcom/android/server/pm/SettingsXml$ReadSectionImpl;
-Lcom/android/server/pm/SettingsXml;
Lcom/android/server/pm/SharedLibrariesImpl$1;
Lcom/android/server/pm/SharedLibrariesImpl$2;
Lcom/android/server/pm/SharedLibrariesImpl;
-Lcom/android/server/pm/SharedLibrariesRead;
Lcom/android/server/pm/SharedUserSetting$1;
Lcom/android/server/pm/SharedUserSetting$2;
Lcom/android/server/pm/SharedUserSetting;
@@ -950,6 +848,8 @@ Lcom/android/server/pm/SnapshotStatistics$1;
Lcom/android/server/pm/SnapshotStatistics$BinMap;
Lcom/android/server/pm/SnapshotStatistics$Stats;
Lcom/android/server/pm/SnapshotStatistics;
+Lcom/android/server/pm/StagingManager$2;
+Lcom/android/server/pm/StagingManager$Lifecycle;
Lcom/android/server/pm/StorageEventHelper;
Lcom/android/server/pm/SuspendPackageHelper;
Lcom/android/server/pm/SystemDeleteException;
@@ -957,12 +857,11 @@ Lcom/android/server/pm/UpdateOwnershipHelper;
Lcom/android/server/pm/UserDataPreparer;
Lcom/android/server/pm/UserJourneyLogger;
Lcom/android/server/pm/UserManagerInternal$UserLifecycleListener;
+Lcom/android/server/pm/UserManagerInternal$UserRestrictionsListener;
Lcom/android/server/pm/UserManagerInternal;
Lcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda1;
-Lcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda4;
+Lcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda3;
Lcom/android/server/pm/UserManagerService$1;
-Lcom/android/server/pm/UserManagerService$2;
-Lcom/android/server/pm/UserManagerService$3;
Lcom/android/server/pm/UserManagerService$LocalService;
Lcom/android/server/pm/UserManagerService$MainHandler;
Lcom/android/server/pm/UserManagerService$SettingsObserver;
@@ -974,7 +873,6 @@ Lcom/android/server/pm/UserNeedsBadgingCache;
Lcom/android/server/pm/UserRestrictionsUtils;
Lcom/android/server/pm/UserSystemPackageInstaller;
Lcom/android/server/pm/UserTypeDetails$Builder;
-Lcom/android/server/pm/UserTypeDetails-IA;
Lcom/android/server/pm/UserTypeDetails;
Lcom/android/server/pm/UserTypeFactory;
Lcom/android/server/pm/UserVisibilityMediator;
@@ -984,7 +882,6 @@ Lcom/android/server/pm/WatchedIntentResolver$2;
Lcom/android/server/pm/WatchedIntentResolver;
Lcom/android/server/pm/dex/ArtManagerService$ArtManagerInternalImpl;
Lcom/android/server/pm/dex/ArtManagerService;
-Lcom/android/server/pm/dex/ArtStatsLogUtils$ArtStatsLogger;
Lcom/android/server/pm/dex/DexManager;
Lcom/android/server/pm/dex/DynamicCodeLogger;
Lcom/android/server/pm/dex/PackageDexUsage;
@@ -992,48 +889,56 @@ Lcom/android/server/pm/dex/PackageDynamicCodeLoading;
Lcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;
Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;
Lcom/android/server/pm/local/PackageManagerLocalImpl;
+Lcom/android/server/pm/parsing/PackageCacher;
+Lcom/android/server/pm/parsing/PackageInfoUtils;
+Lcom/android/server/pm/parsing/library/AndroidHidlUpdater;
+Lcom/android/server/pm/parsing/library/AndroidNetIpSecIkeUpdater;
+Lcom/android/server/pm/parsing/library/AndroidTestBaseUpdater;
+Lcom/android/server/pm/parsing/library/ApexSharedLibraryUpdater;
+Lcom/android/server/pm/parsing/library/ComGoogleAndroidMapsUpdater;
+Lcom/android/server/pm/parsing/library/OrgApacheHttpLegacyUpdater;
+Lcom/android/server/pm/parsing/library/PackageBackwardCompatibility$AndroidTestRunnerSplitUpdater;
+Lcom/android/server/pm/parsing/library/PackageBackwardCompatibility$RemoveUnnecessaryAndroidTestBaseLibrary;
+Lcom/android/server/pm/parsing/library/PackageBackwardCompatibility;
+Lcom/android/server/pm/parsing/library/PackageSharedLibraryUpdater;
+Lcom/android/server/pm/parsing/pkg/AndroidPackageUtils;
Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;
Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$2;
Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DelayingPackageManagerCache;
Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;
Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;
Lcom/android/server/pm/permission/LegacyPermission;
-Lcom/android/server/pm/permission/LegacyPermissionDataProvider;
-Lcom/android/server/pm/permission/LegacyPermissionManagerInternal;
Lcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;
Lcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;
Lcom/android/server/pm/permission/LegacyPermissionManagerService;
Lcom/android/server/pm/permission/LegacyPermissionSettings;
Lcom/android/server/pm/permission/LegacyPermissionState;
+Lcom/android/server/pm/permission/OneTimePermissionUserManager$1;
Lcom/android/server/pm/permission/PermissionAllowlist;
Lcom/android/server/pm/permission/PermissionManagerService$AttributionSourceRegistry;
Lcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;
Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;
Lcom/android/server/pm/permission/PermissionManagerService;
Lcom/android/server/pm/permission/PermissionManagerServiceInterface;
-Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
-Lcom/android/server/pm/permission/PermissionMigrationHelper;
Lcom/android/server/pm/permission/PermissionMigrationHelperImpl;
Lcom/android/server/pm/pkg/ArchiveState;
Lcom/android/server/pm/pkg/PackageState;
Lcom/android/server/pm/pkg/PackageStateInternal;
Lcom/android/server/pm/pkg/PackageStateUnserialized;
+Lcom/android/server/pm/pkg/PackageStateUtils;
Lcom/android/server/pm/pkg/PackageUserState;
+Lcom/android/server/pm/pkg/PackageUserStateDefault;
Lcom/android/server/pm/pkg/PackageUserStateImpl$1;
Lcom/android/server/pm/pkg/PackageUserStateImpl;
Lcom/android/server/pm/pkg/PackageUserStateInternal;
-Lcom/android/server/pm/pkg/SharedUserApi;
Lcom/android/server/pm/pkg/SuspendParams;
Lcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper$UserStateWriteWrapper;
Lcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper;
Lcom/android/server/pm/pkg/mutate/PackageStateMutator;
-Lcom/android/server/pm/pkg/mutate/PackageStateWrite;
-Lcom/android/server/pm/pkg/mutate/PackageUserStateWrite;
Lcom/android/server/pm/resolution/ComponentResolver$$ExternalSyntheticLambda0;
Lcom/android/server/pm/resolution/ComponentResolver$1;
Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;
Lcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;
-Lcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;
Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;
Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;
Lcom/android/server/pm/resolution/ComponentResolver;
@@ -1045,30 +950,25 @@ Lcom/android/server/pm/snapshot/PackageDataSnapshot;
Lcom/android/server/pm/verify/domain/DomainVerificationCollector$$ExternalSyntheticLambda0;
Lcom/android/server/pm/verify/domain/DomainVerificationCollector;
Lcom/android/server/pm/verify/domain/DomainVerificationDebug;
-Lcom/android/server/pm/verify/domain/DomainVerificationEnforcer$Callback;
Lcom/android/server/pm/verify/domain/DomainVerificationEnforcer;
Lcom/android/server/pm/verify/domain/DomainVerificationLegacySettings$LegacyState;
Lcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;
-Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal$Connection;
Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;
Lcom/android/server/pm/verify/domain/DomainVerificationManagerStub;
Lcom/android/server/pm/verify/domain/DomainVerificationPersistence$ReadResult;
Lcom/android/server/pm/verify/domain/DomainVerificationPersistence;
Lcom/android/server/pm/verify/domain/DomainVerificationService;
Lcom/android/server/pm/verify/domain/DomainVerificationSettings;
-Lcom/android/server/pm/verify/domain/DomainVerificationShell$Callback;
Lcom/android/server/pm/verify/domain/DomainVerificationShell;
+Lcom/android/server/pm/verify/domain/DomainVerificationUtils$$ExternalSyntheticLambda0;
+Lcom/android/server/pm/verify/domain/DomainVerificationUtils;
+Lcom/android/server/pm/verify/domain/models/DomainVerificationInternalUserState;
Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;
Lcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;
-Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy$BaseConnection;
Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy;
Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyUnavailable;
-Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV1$Connection;
-Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV2$Connection;
-Lcom/android/server/policy/WindowManagerPolicy$DisplayContentInfo;
+Lcom/android/server/policy/PhoneWindowManager$PolicyHandler;
Lcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;
-Lcom/android/server/policy/WindowManagerPolicy$WindowState;
-Lcom/android/server/power/AmbientDisplaySuppressionController$AmbientDisplaySuppressionChangedCallback;
Lcom/android/server/power/AmbientDisplaySuppressionController;
Lcom/android/server/power/AttentionDetector$1;
Lcom/android/server/power/AttentionDetector$AttentionCallbackInternalImpl;
@@ -1081,8 +981,6 @@ Lcom/android/server/power/InattentiveSleepWarningController;
Lcom/android/server/power/LowPowerStandbyController$$ExternalSyntheticLambda1;
Lcom/android/server/power/LowPowerStandbyController$$ExternalSyntheticLambda2;
Lcom/android/server/power/LowPowerStandbyController$1;
-Lcom/android/server/power/LowPowerStandbyController$2;
-Lcom/android/server/power/LowPowerStandbyController$3;
Lcom/android/server/power/LowPowerStandbyController$Clock;
Lcom/android/server/power/LowPowerStandbyController$DeviceConfigWrapper;
Lcom/android/server/power/LowPowerStandbyController$LocalService;
@@ -1092,8 +990,7 @@ Lcom/android/server/power/LowPowerStandbyController$RealClock;
Lcom/android/server/power/LowPowerStandbyController$SettingsObserver;
Lcom/android/server/power/LowPowerStandbyController$TempAllowlistChangeListener;
Lcom/android/server/power/LowPowerStandbyController;
-Lcom/android/server/power/LowPowerStandbyControllerInternal;
-Lcom/android/server/power/PowerGroup$PowerGroupListener;
+Lcom/android/server/power/Notifier$NotifierHandler;
Lcom/android/server/power/PowerManagerService$$ExternalSyntheticLambda0;
Lcom/android/server/power/PowerManagerService$$ExternalSyntheticLambda1;
Lcom/android/server/power/PowerManagerService$1;
@@ -1104,11 +1001,8 @@ Lcom/android/server/power/PowerManagerService$BinderService;
Lcom/android/server/power/PowerManagerService$Clock;
Lcom/android/server/power/PowerManagerService$Constants;
Lcom/android/server/power/PowerManagerService$DockReceiver;
-Lcom/android/server/power/PowerManagerService$DreamReceiver;
Lcom/android/server/power/PowerManagerService$Injector$$ExternalSyntheticLambda0;
Lcom/android/server/power/PowerManagerService$Injector$1;
-Lcom/android/server/power/PowerManagerService$Injector$2;
-Lcom/android/server/power/PowerManagerService$Injector$3;
Lcom/android/server/power/PowerManagerService$Injector;
Lcom/android/server/power/PowerManagerService$LocalService;
Lcom/android/server/power/PowerManagerService$NativeWrapper;
@@ -1120,17 +1014,19 @@ Lcom/android/server/power/PowerManagerService$SettingsObserver;
Lcom/android/server/power/PowerManagerService$SuspendBlockerImpl;
Lcom/android/server/power/PowerManagerService$UserSwitchedReceiver;
Lcom/android/server/power/PowerManagerService;
+Lcom/android/server/power/PowerManagerShellCommand$1;
Lcom/android/server/power/PowerManagerShellCommand;
Lcom/android/server/power/ScreenUndimDetector$InternalClock;
Lcom/android/server/power/ScreenUndimDetector;
-Lcom/android/server/power/SuspendBlocker;
Lcom/android/server/power/SystemPropertiesWrapper;
Lcom/android/server/power/ThermalManagerService$1;
+Lcom/android/server/power/ThermalManagerService$2;
+Lcom/android/server/power/ThermalManagerService$HeadroomCallbackData;
Lcom/android/server/power/ThermalManagerService$TemperatureWatcher;
Lcom/android/server/power/ThermalManagerService$ThermalHal10Wrapper;
Lcom/android/server/power/ThermalManagerService$ThermalHal11Wrapper;
-Lcom/android/server/power/ThermalManagerService$ThermalHal20Wrapper;
Lcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;
+Lcom/android/server/power/ThermalManagerService$ThermalHalWrapper$WrapperThermalChangedCallback;
Lcom/android/server/power/ThermalManagerService$ThermalHalWrapper;
Lcom/android/server/power/ThermalManagerService$ThermalShellCommand;
Lcom/android/server/power/ThermalManagerService;
@@ -1138,37 +1034,25 @@ Lcom/android/server/power/batterysaver/BatterySaverStateMachine;
Lcom/android/server/power/feature/PowerManagerFlags$$ExternalSyntheticLambda0;
Lcom/android/server/power/feature/PowerManagerFlags$FlagState;
Lcom/android/server/power/feature/PowerManagerFlags;
-Lcom/android/server/power/hint/HintManagerService$BinderService;
-Lcom/android/server/power/hint/HintManagerService$Injector;
-Lcom/android/server/power/hint/HintManagerService$MyUidObserver;
Lcom/android/server/power/hint/HintManagerService$NativeWrapper;
-Lcom/android/server/power/hint/HintManagerService;
-Lcom/android/server/power/optimization/FeatureFlags;
-Lcom/android/server/power/optimization/FeatureFlagsImpl;
-Lcom/android/server/power/optimization/Flags;
-Lcom/android/server/power/stats/AggregatedPowerStatsConfig$1;
-Lcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;
-Lcom/android/server/power/stats/AggregatedPowerStatsConfig;
-Lcom/android/server/power/stats/AggregatedPowerStatsProcessor;
-Lcom/android/server/power/stats/AggregatedPowerStatsSection;
-Lcom/android/server/power/stats/BatteryChargeCalculator;
-Lcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda0;
-Lcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda5;
+Lcom/android/server/power/stats/AccumulatedBatteryUsageStatsSection$Reader;
+Lcom/android/server/power/stats/AccumulatedBatteryUsageStatsSection;
Lcom/android/server/power/stats/BatteryExternalStatsWorker$1;
Lcom/android/server/power/stats/BatteryExternalStatsWorker$2;
Lcom/android/server/power/stats/BatteryExternalStatsWorker$Injector;
Lcom/android/server/power/stats/BatteryExternalStatsWorker;
Lcom/android/server/power/stats/BatteryStatsDumpHelperImpl;
-Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda10;
-Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda6;
-Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda7;
-Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda9;
+Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda2;
+Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda3;
+Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda4;
+Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda5;
Lcom/android/server/power/stats/BatteryStatsImpl$1;
Lcom/android/server/power/stats/BatteryStatsImpl$2;
-Lcom/android/server/power/stats/BatteryStatsImpl$3;
-Lcom/android/server/power/stats/BatteryStatsImpl$4;
+Lcom/android/server/power/stats/BatteryStatsImpl$5;
+Lcom/android/server/power/stats/BatteryStatsImpl$6;
+Lcom/android/server/power/stats/BatteryStatsImpl$7;
+Lcom/android/server/power/stats/BatteryStatsImpl$8;
Lcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;
-Lcom/android/server/power/stats/BatteryStatsImpl$BatteryCallback;
Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;
Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig;
Lcom/android/server/power/stats/BatteryStatsImpl$BinderCallStats;
@@ -1179,15 +1063,12 @@ Lcom/android/server/power/stats/BatteryStatsImpl$Counter;
Lcom/android/server/power/stats/BatteryStatsImpl$DisplayBatteryStats;
Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;
Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;
-Lcom/android/server/power/stats/BatteryStatsImpl$EnergyStatsRetriever;
-Lcom/android/server/power/stats/BatteryStatsImpl$ExternalStatsSync;
Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;
Lcom/android/server/power/stats/BatteryStatsImpl$HistoryStepDetailsCalculatorImpl;
Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;
Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;
Lcom/android/server/power/stats/BatteryStatsImpl$MyHandler;
-Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;
-Lcom/android/server/power/stats/BatteryStatsImpl$PlatformIdleStateCallback;
+Lcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector;
Lcom/android/server/power/stats/BatteryStatsImpl$RadioAccessTechnologyBatteryStats;
Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;
Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
@@ -1197,8 +1078,6 @@ Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;
Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
Lcom/android/server/power/stats/BatteryStatsImpl$Timer;
Lcom/android/server/power/stats/BatteryStatsImpl$Uid$1;
-Lcom/android/server/power/stats/BatteryStatsImpl$Uid$2;
-Lcom/android/server/power/stats/BatteryStatsImpl$Uid$3;
Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;
Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;
Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;
@@ -1208,36 +1087,70 @@ Lcom/android/server/power/stats/BatteryStatsImpl$Uid;
Lcom/android/server/power/stats/BatteryStatsImpl$UserInfoProvider;
Lcom/android/server/power/stats/BatteryStatsImpl;
Lcom/android/server/power/stats/BatteryUsageStatsProvider;
+Lcom/android/server/power/stats/BatteryUsageStatsSection$Reader;
Lcom/android/server/power/stats/BatteryUsageStatsSection;
Lcom/android/server/power/stats/BluetoothPowerCalculator;
-Lcom/android/server/power/stats/CpuAggregatedPowerStatsProcessor;
+Lcom/android/server/power/stats/BluetoothPowerStatsCollector;
+Lcom/android/server/power/stats/CameraPowerStatsCollector;
Lcom/android/server/power/stats/CpuPowerCalculator;
-Lcom/android/server/power/stats/CpuPowerStatsCollector$$ExternalSyntheticLambda1;
-Lcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;
Lcom/android/server/power/stats/CpuPowerStatsCollector$KernelCpuStatsReader;
Lcom/android/server/power/stats/CpuPowerStatsCollector;
+Lcom/android/server/power/stats/CustomEnergyConsumerPowerStatsCollector;
+Lcom/android/server/power/stats/EnergyConsumerPowerStatsCollector;
Lcom/android/server/power/stats/EnergyConsumerSnapshot;
+Lcom/android/server/power/stats/GnssPowerStatsCollector;
Lcom/android/server/power/stats/KernelWakelockReader;
-Lcom/android/server/power/stats/KernelWakelockStats$Entry;
Lcom/android/server/power/stats/KernelWakelockStats;
Lcom/android/server/power/stats/MobileRadioPowerCalculator;
+Lcom/android/server/power/stats/MobileRadioPowerStatsCollector;
Lcom/android/server/power/stats/PowerCalculator;
-Lcom/android/server/power/stats/PowerStatsAggregator;
-Lcom/android/server/power/stats/PowerStatsCollector$$ExternalSyntheticLambda1;
-Lcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;
+Lcom/android/server/power/stats/PowerStatsCollector$$ExternalSyntheticLambda0;
+Lcom/android/server/power/stats/PowerStatsCollector$1;
Lcom/android/server/power/stats/PowerStatsCollector;
-Lcom/android/server/power/stats/PowerStatsExporter;
-Lcom/android/server/power/stats/PowerStatsScheduler$AlarmScheduler;
Lcom/android/server/power/stats/PowerStatsScheduler;
Lcom/android/server/power/stats/PowerStatsSpan$Section;
Lcom/android/server/power/stats/PowerStatsSpan$SectionReader;
-Lcom/android/server/power/stats/PowerStatsStore$$ExternalSyntheticLambda1;
-Lcom/android/server/power/stats/PowerStatsStore$DefaultSectionReader;
+Lcom/android/server/power/stats/PowerStatsStore$$ExternalSyntheticLambda0;
Lcom/android/server/power/stats/PowerStatsStore;
Lcom/android/server/power/stats/PowerStatsUidResolver$Listener;
Lcom/android/server/power/stats/PowerStatsUidResolver;
-Lcom/android/server/power/stats/WakelockPowerCalculator;
+Lcom/android/server/power/stats/ScreenPowerStatsCollector;
+Lcom/android/server/power/stats/UserPowerCalculator;
+Lcom/android/server/power/stats/WakelockPowerStatsCollector;
+Lcom/android/server/power/stats/WakelockStatsFrameworkEvents$StatsPullCallbackHandler;
+Lcom/android/server/power/stats/WakelockStatsFrameworkEvents;
Lcom/android/server/power/stats/WifiPowerCalculator;
+Lcom/android/server/power/stats/WifiPowerStatsCollector$WifiScanTimes;
+Lcom/android/server/power/stats/WifiPowerStatsCollector;
+Lcom/android/server/power/stats/format/BasePowerStatsLayout;
+Lcom/android/server/power/stats/format/BinaryStatePowerStatsLayout;
+Lcom/android/server/power/stats/format/BluetoothPowerStatsLayout;
+Lcom/android/server/power/stats/format/CpuPowerStatsLayout;
+Lcom/android/server/power/stats/format/EnergyConsumerPowerStatsLayout;
+Lcom/android/server/power/stats/format/GnssPowerStatsLayout;
+Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;
+Lcom/android/server/power/stats/format/PowerStatsLayout;
+Lcom/android/server/power/stats/format/ScreenPowerStatsLayout;
+Lcom/android/server/power/stats/format/WakelockPowerStatsLayout;
+Lcom/android/server/power/stats/format/WifiPowerStatsLayout;
+Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$1;
+Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;
+Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig;
+Lcom/android/server/power/stats/processor/AggregatedPowerStatsSection$Reader;
+Lcom/android/server/power/stats/processor/AggregatedPowerStatsSection;
+Lcom/android/server/power/stats/processor/AudioPowerStatsProcessor;
+Lcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;
+Lcom/android/server/power/stats/processor/CameraPowerStatsProcessor;
+Lcom/android/server/power/stats/processor/FlashlightPowerStatsProcessor;
+Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda1;
+Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda5;
+Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda6;
+Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda8;
+Lcom/android/server/power/stats/processor/MultiStatePowerAttributor;
+Lcom/android/server/power/stats/processor/PowerStatsAggregator;
+Lcom/android/server/power/stats/processor/PowerStatsExporter;
+Lcom/android/server/power/stats/processor/PowerStatsProcessor;
+Lcom/android/server/power/stats/processor/VideoPowerStatsProcessor;
Lcom/android/server/power/stats/wakeups/CpuWakeupStats$$ExternalSyntheticLambda0;
Lcom/android/server/power/stats/wakeups/CpuWakeupStats$Config;
Lcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;
@@ -1247,7 +1160,6 @@ Lcom/android/server/powerstats/PowerStatsHALWrapper$IPowerStatsHALWrapper;
Lcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL10WrapperImpl;
Lcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL20WrapperImpl;
Lcom/android/server/powerstats/PowerStatsHALWrapper$VintfHalCache;
-Lcom/android/server/powerstats/PowerStatsHALWrapper;
Lcom/android/server/powerstats/PowerStatsService$1;
Lcom/android/server/powerstats/PowerStatsService$DeviceConfigListener;
Lcom/android/server/powerstats/PowerStatsService$Injector;
@@ -1259,9 +1171,10 @@ Lcom/android/server/recoverysystem/RecoverySystemService$PreferencesManager;
Lcom/android/server/recoverysystem/RecoverySystemService;
Lcom/android/server/recoverysystem/RecoverySystemShellCommand;
Lcom/android/server/resources/ResourcesManagerService;
-Lcom/android/server/security/FileIntegrityService$1;
+Lcom/android/server/security/FileIntegrityService$BinderService;
Lcom/android/server/security/FileIntegrityService$FileIntegrityServiceShellCommand;
Lcom/android/server/security/FileIntegrityService;
+Lcom/android/server/selinux/RateLimiter;
Lcom/android/server/sensorprivacy/SensorPrivacyService;
Lcom/android/server/sensors/SensorManagerInternal$ProximityActiveListener;
Lcom/android/server/sensors/SensorManagerInternal$RuntimeSensorCallback;
@@ -1271,8 +1184,12 @@ Lcom/android/server/soundtrigger_middleware/ExternalCaptureStateTracker;
Lcom/android/server/soundtrigger_middleware/ICaptureStateNotifier;
Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl$AudioSessionProvider;
Lcom/android/server/stats/pull/StatsPullAtomService;
+Lcom/android/server/storage/AppFuseBridge$MountScope;
Lcom/android/server/storage/AppFuseBridge;
+Lcom/android/server/timedetector/NetworkTimeUpdateService$AutoTimeSettingObserver;
+Lcom/android/server/timedetector/NetworkTimeUpdateService$NetworkConnectivityCallback;
Lcom/android/server/tv/TvInputHal;
+Lcom/android/server/tv/TvInputHardwareManager$ListenerHandler;
Lcom/android/server/tv/UinputBridge;
Lcom/android/server/uri/UriGrantsManagerInternal;
Lcom/android/server/uri/UriGrantsManagerService$1;
@@ -1280,32 +1197,41 @@ Lcom/android/server/uri/UriGrantsManagerService$H;
Lcom/android/server/uri/UriGrantsManagerService$Lifecycle;
Lcom/android/server/uri/UriGrantsManagerService$LocalService;
Lcom/android/server/uri/UriGrantsManagerService;
-Lcom/android/server/uri/UriMetricsHelper$PersistentUriGrantsProvider;
Lcom/android/server/uri/UriMetricsHelper;
+Lcom/android/server/uri/UriPermissionOwner$ExternalToken;
+Lcom/android/server/usage/BroadcastResponseStatsLogger$BroadcastEvent;
+Lcom/android/server/usage/BroadcastResponseStatsLogger$Data;
+Lcom/android/server/usage/BroadcastResponseStatsLogger$LogBuffer;
+Lcom/android/server/usage/UsageStatsService$H;
Lcom/android/server/usb/UsbAlsaJackDetector;
Lcom/android/server/usb/UsbAlsaMidiDevice$2;
Lcom/android/server/usb/UsbAlsaMidiDevice$3;
Lcom/android/server/usb/UsbAlsaMidiDevice$InputReceiverProxy;
Lcom/android/server/usb/UsbAlsaMidiDevice;
+Lcom/android/server/usb/UsbDeviceManager$1;
+Lcom/android/server/usb/UsbDeviceManager$6;
+Lcom/android/server/usb/UsbDeviceManager$UsbHandler;
+Lcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;
+Lcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;
+Lcom/android/server/usb/UsbDeviceManager$UsbUEventObserver;
Lcom/android/server/usb/UsbDeviceManager;
Lcom/android/server/usb/UsbHostManager;
Lcom/android/server/usb/descriptors/UsbDescriptor;
Lcom/android/server/usb/descriptors/UsbInterfaceDescriptor;
+Lcom/android/server/utils/AnrTimer$1;
+Lcom/android/server/utils/AnrTimer$Args;
Lcom/android/server/utils/AnrTimer$Error;
Lcom/android/server/utils/AnrTimer$FeatureDisabled;
Lcom/android/server/utils/AnrTimer$FeatureEnabled;
Lcom/android/server/utils/AnrTimer$FeatureSwitch;
Lcom/android/server/utils/AnrTimer$Injector;
Lcom/android/server/utils/AnrTimer;
-Lcom/android/server/utils/FeatureFlags;
-Lcom/android/server/utils/FeatureFlagsImpl;
-Lcom/android/server/utils/Flags;
Lcom/android/server/utils/FoldSettingProvider;
+Lcom/android/server/utils/LazyJniRegistrar;
Lcom/android/server/utils/PriorityDump$PriorityDumper;
Lcom/android/server/utils/Slogf;
Lcom/android/server/utils/Snappable;
Lcom/android/server/utils/SnapshotCache$Auto;
-Lcom/android/server/utils/SnapshotCache$Sealed;
Lcom/android/server/utils/SnapshotCache$Statistics;
Lcom/android/server/utils/SnapshotCache;
Lcom/android/server/utils/Snapshots;
@@ -1332,26 +1258,25 @@ Lcom/android/server/vibrator/VibratorController$NativeWrapper;
Lcom/android/server/vibrator/VibratorController$OnVibrationCompleteListener;
Lcom/android/server/vibrator/VibratorManagerService$VibratorManagerNativeCallbacks;
Lcom/android/server/vibrator/VibratorManagerService;
-Lcom/android/server/vr/EnabledComponentsObserver$EnabledComponentChangeListener;
-Lcom/android/server/vr/VrManagerService;
Lcom/android/server/wm/AbsAppSnapshotController;
+Lcom/android/server/wm/ActionChain$Tracker;
Lcom/android/server/wm/ActivityClientController;
Lcom/android/server/wm/ActivityMetricsLaunchObserver;
-Lcom/android/server/wm/ActivityMetricsLaunchObserverRegistry;
Lcom/android/server/wm/ActivityMetricsLogger;
Lcom/android/server/wm/ActivityRecord;
+Lcom/android/server/wm/ActivitySnapshotController;
Lcom/android/server/wm/ActivityStartController;
Lcom/android/server/wm/ActivityStartInterceptor;
Lcom/android/server/wm/ActivityStarter$DefaultFactory;
Lcom/android/server/wm/ActivityStarter$Factory;
Lcom/android/server/wm/ActivityTaskManagerInternal$ScreenObserver;
-Lcom/android/server/wm/ActivityTaskManagerInternal$SleepTokenAcquirer;
Lcom/android/server/wm/ActivityTaskManagerInternal;
Lcom/android/server/wm/ActivityTaskManagerService$1;
Lcom/android/server/wm/ActivityTaskManagerService$H;
Lcom/android/server/wm/ActivityTaskManagerService$Lifecycle;
Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
-Lcom/android/server/wm/ActivityTaskManagerService$SleepTokenAcquirerImpl;
+Lcom/android/server/wm/ActivityTaskManagerService$PendingAssistExtras;
+Lcom/android/server/wm/ActivityTaskManagerService$SleepTokenAcquirer;
Lcom/android/server/wm/ActivityTaskManagerService$UiHandler;
Lcom/android/server/wm/ActivityTaskManagerService$UpdateConfigurationResult;
Lcom/android/server/wm/ActivityTaskManagerService;
@@ -1364,38 +1289,46 @@ Lcom/android/server/wm/AppWarnings$BaseDialog;
Lcom/android/server/wm/AppWarnings$UiHandler;
Lcom/android/server/wm/AppWarnings$WriteConfigTask;
Lcom/android/server/wm/AppWarnings;
+Lcom/android/server/wm/AsyncRotationController;
Lcom/android/server/wm/BLASTSyncEngine$TransactionReadyListener;
Lcom/android/server/wm/BackNavigationController$NavigationMonitor;
Lcom/android/server/wm/BackNavigationController;
Lcom/android/server/wm/BackgroundActivityStartController$FinishedActivityEntry;
Lcom/android/server/wm/BackgroundActivityStartController;
+Lcom/android/server/wm/BackgroundLaunchProcessController$BalCheckConfiguration;
Lcom/android/server/wm/ClientLifecycleManager;
Lcom/android/server/wm/CompatModePackages$CompatHandler;
Lcom/android/server/wm/CompatModePackages;
+Lcom/android/server/wm/CompatScaleProvider;
Lcom/android/server/wm/ConfigurationContainer;
Lcom/android/server/wm/ConfigurationContainerListener;
Lcom/android/server/wm/DeprecatedAbiDialog;
Lcom/android/server/wm/DeprecatedTargetSdkVersionDialog;
Lcom/android/server/wm/DesktopModeLaunchParamsModifier;
Lcom/android/server/wm/DisplayArea$Dimmable;
+Lcom/android/server/wm/DisplayArea$Tokens;
Lcom/android/server/wm/DisplayArea;
Lcom/android/server/wm/DisplayAreaOrganizerController;
+Lcom/android/server/wm/DisplayContent$ImeContainer;
Lcom/android/server/wm/DisplayContent;
-Lcom/android/server/wm/FactoryErrorDialog;
+Lcom/android/server/wm/DisplayRotation$OrientationListener;
+Lcom/android/server/wm/FadeAnimationController;
Lcom/android/server/wm/InputTarget;
Lcom/android/server/wm/InsetsControlTarget;
-Lcom/android/server/wm/KeyguardController$$ExternalSyntheticLambda0;
+Lcom/android/server/wm/InsetsTarget;
+Lcom/android/server/wm/KeyguardController$$ExternalSyntheticLambda1;
Lcom/android/server/wm/KeyguardController;
Lcom/android/server/wm/LaunchObserverRegistryImpl;
Lcom/android/server/wm/LaunchParamsController$LaunchParams;
Lcom/android/server/wm/LaunchParamsController$LaunchParamsModifier;
Lcom/android/server/wm/LaunchParamsController;
-Lcom/android/server/wm/LaunchParamsPersister$$ExternalSyntheticLambda2;
+Lcom/android/server/wm/LaunchParamsPersister$$ExternalSyntheticLambda3;
Lcom/android/server/wm/LaunchParamsPersister;
Lcom/android/server/wm/LockTaskController$LockTaskToken;
Lcom/android/server/wm/LockTaskController;
Lcom/android/server/wm/MirrorActiveUids;
Lcom/android/server/wm/PackageConfigPersister;
+Lcom/android/server/wm/PageSizeMismatchDialog;
Lcom/android/server/wm/PendingRemoteAnimationRegistry;
Lcom/android/server/wm/PersisterQueue$$ExternalSyntheticLambda0;
Lcom/android/server/wm/PersisterQueue$LazyTaskWriterThread;
@@ -1408,39 +1341,19 @@ Lcom/android/server/wm/RecentTasks$1;
Lcom/android/server/wm/RecentTasks$Callbacks;
Lcom/android/server/wm/RecentTasks;
Lcom/android/server/wm/RootDisplayArea;
+Lcom/android/server/wm/RootWindowContainer$MyHandler;
Lcom/android/server/wm/RootWindowContainer;
+Lcom/android/server/wm/RotationWatcherController$DisplayRotationWatcher;
+Lcom/android/server/wm/RotationWatcherController$ProposedRotationListener;
+Lcom/android/server/wm/RotationWatcherController$RotationWatcher;
Lcom/android/server/wm/RunningTasks;
+Lcom/android/server/wm/SnapshotCache;
+Lcom/android/server/wm/SnapshotPersistQueue$1;
Lcom/android/server/wm/SurfaceAnimationThread;
Lcom/android/server/wm/SurfaceAnimator$Animatable;
-Lcom/android/server/wm/SurfaceFreezer$Freezable;
Lcom/android/server/wm/Task;
Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda0;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda10;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda11;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda12;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda13;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda14;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda15;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda16;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda17;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda18;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda19;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda1;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda20;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda21;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda22;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda23;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda24;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda2;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda3;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda4;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda5;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda6;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda7;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda8;
-Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda9;
Lcom/android/server/wm/TaskChangeNotificationController$MainHandler;
-Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
Lcom/android/server/wm/TaskChangeNotificationController;
Lcom/android/server/wm/TaskDisplayArea;
Lcom/android/server/wm/TaskFpsCallbackController;
@@ -1449,10 +1362,10 @@ Lcom/android/server/wm/TaskFragmentOrganizerController;
Lcom/android/server/wm/TaskLaunchParamsModifier;
Lcom/android/server/wm/TaskOrganizerController;
Lcom/android/server/wm/TaskPersister;
+Lcom/android/server/wm/TaskSnapshotCache;
Lcom/android/server/wm/TaskSnapshotController;
Lcom/android/server/wm/Transition$ReadyCondition;
Lcom/android/server/wm/Transition;
-Lcom/android/server/wm/TransitionController$$ExternalSyntheticLambda4;
Lcom/android/server/wm/TransitionController$Lock;
Lcom/android/server/wm/TransitionController$RemotePlayer;
Lcom/android/server/wm/TransitionController$TransitionMetricsReporter;
@@ -1462,52 +1375,45 @@ Lcom/android/server/wm/UnsupportedDisplaySizeDialog;
Lcom/android/server/wm/VisibleActivityProcessTracker;
Lcom/android/server/wm/VrController$1;
Lcom/android/server/wm/VrController;
+Lcom/android/server/wm/WallpaperWindowToken;
Lcom/android/server/wm/WindowContainer;
-Lcom/android/server/wm/WindowList;
Lcom/android/server/wm/WindowManagerGlobalLock;
-Lcom/android/server/wm/WindowManagerInternal$AppTransitionListener;
+Lcom/android/server/wm/WindowManagerService$1;
Lcom/android/server/wm/WindowManagerService$2;
-Lcom/android/server/wm/WindowManagerService$4;
-Lcom/android/server/wm/WindowManagerService$8;
-Lcom/android/server/wm/WindowManagerService$AppFreezeListener;
Lcom/android/server/wm/WindowManagerService$H;
Lcom/android/server/wm/WindowManagerService;
Lcom/android/server/wm/WindowManagerShellCommand;
Lcom/android/server/wm/WindowManagerThreadPriorityBooster;
Lcom/android/server/wm/WindowOrganizerController;
-Lcom/android/server/wm/WindowProcessController$ComputeOomAdjCallback;
+Lcom/android/server/wm/WindowOrientationListener;
Lcom/android/server/wm/WindowProcessController;
Lcom/android/server/wm/WindowProcessControllerMap;
-Lcom/android/server/wm/WindowProcessListener;
Lcom/android/server/wm/WindowState;
Lcom/android/server/wm/WindowToken;
-Lcom/android/server/wm/utils/DisplayInfoOverrides$$ExternalSyntheticLambda0;
-Lcom/android/server/wm/utils/DisplayInfoOverrides$DisplayInfoFieldsUpdater;
-Lcom/android/server/wm/utils/DisplayInfoOverrides;
-Lcom/android/wm/shell/FeatureFlags;
-Lcom/android/wm/shell/FeatureFlagsImpl;
-Lcom/android/wm/shell/Flags;
-[Landroid/hardware/light/HwLight;
+Lorg/apache/commons/math/MathException;
+Lorg/apache/commons/math/distribution/AbstractContinuousDistribution;
+Lorg/apache/commons/math/distribution/AbstractDistribution;
+Lorg/apache/commons/math/distribution/BetaDistributionImpl;
[Landroid/hardware/power/stats/Channel;
[Landroid/hardware/power/stats/EnergyConsumer;
-[Landroid/hardware/power/stats/State;
-[Landroid/hardware/power/stats/StateResidency;
[Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
[Lcom/android/server/am/BroadcastProcessQueue;
-[Lcom/android/server/am/BroadcastQueue;
[Lcom/android/server/am/BroadcastRecord;
[Lcom/android/server/am/CachedAppOptimizer$CancelCompactReason;
[Lcom/android/server/am/CachedAppOptimizer$CompactSource;
-[Lcom/android/server/am/OomAdjProfiler$CpuTimes;
+[Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNode;
+[Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$LinkedProcessRecordList;
[Lcom/android/server/am/UidObserverController$ChangeRecord;
[Lcom/android/server/display/config/AutoBrightnessModeName;
[Lcom/android/server/display/config/AutoBrightnessSettingName;
[Lcom/android/server/firewall/FilterFactory;
[Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;
+[Lcom/android/server/input/TouchpadFingerState;
[Lcom/android/server/lights/LightsService$LightImpl;
[Lcom/android/server/pm/DefaultCrossProfileIntentFilter;
[Lcom/android/server/pm/PreferredActivity;
[Lcom/android/server/pm/SnapshotStatistics$Stats;
+[Lcom/android/server/pm/parsing/library/PackageSharedLibraryUpdater;
[Lcom/android/server/power/stats/BatteryStatsImpl$Counter;
[Lcom/android/server/power/stats/BatteryStatsImpl$DisplayBatteryStats;
[Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;
@@ -1517,92 +1423,125 @@ Lcom/android/wm/shell/Flags;
[Lcom/android/server/utils/AnrTimer$Error;
[Lcom/android/server/wm/ActivityRecord;
[[Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;
-PLandroid/app/usage/UsageStatsManagerInternal;-><init>()V
-HSPLandroid/content/pm/PackageManagerInternal;-><init>()V
-HPLandroid/content/pm/PackageManagerInternal;->filterAppAccess(Ljava/lang/String;II)Z
-PLandroid/content/pm/PackageManagerInternal;->getPackageList()Lcom/android/server/pm/PackageList;
-PLandroid/frameworks/vibrator/IVibratorControlService$Stub;-><init>()V
+PLandroid/companion/virtualcamera/SupportedStreamConfiguration$$ExternalSyntheticOutline0;->m(IILandroid/os/Parcel;I)V
+PLandroid/content/pm/PackageManagerInternal$InstalledLoadingProgressCallback$LoadingProgressCallbackBinder;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageLoadingProgressCallback;)V
+PLandroid/content/pm/PackageManagerInternal$PackageListObserver;->onPackageChanged(ILjava/lang/String;)V
+PLandroid/frameworks/devicestate/IDeviceStateService;-><clinit>()V
+PLandroid/frameworks/vibrator/IVibratorControlService$Stub;->getMaxTransactionId()I
+PLandroid/frameworks/vibrator/IVibratorControlService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
PLandroid/frameworks/vibrator/IVibratorControlService;-><clinit>()V
-PLandroid/hardware/authsecret/IAuthSecret$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/authsecret/IAuthSecret;
+PLandroid/frameworks/vibrator/VibrationParam$1$$ExternalSyntheticOutline0;->m(ILjava/lang/String;)Ljava/lang/String;
+PLandroid/hardware/audio/common/V2_0/AudioConfig$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;JLjava/lang/String;)Ljava/lang/String;
+HSPLandroid/hardware/audio/common/V2_0/AudioOffloadInfo$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLandroid/hardware/audio/common/V2_0/Uuid;-><init>()V
+PLandroid/hardware/audio/common/V2_0/Uuid;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V
PLandroid/hardware/authsecret/IAuthSecret;-><clinit>()V
-PLandroid/hardware/authsecret/V1_0/IAuthSecret;->getService(Ljava/lang/String;Z)Landroid/hardware/authsecret/V1_0/IAuthSecret;
-PLandroid/hardware/authsecret/V1_0/IAuthSecret;->getService(Z)Landroid/hardware/authsecret/V1_0/IAuthSecret;
-PLandroid/hardware/configstore/V1_1/ISurfaceFlingerConfigs;->getService()Landroid/hardware/configstore/V1_1/ISurfaceFlingerConfigs;
-PLandroid/hardware/configstore/V1_1/ISurfaceFlingerConfigs;->getService(Ljava/lang/String;)Landroid/hardware/configstore/V1_1/ISurfaceFlingerConfigs;
-PLandroid/hardware/health/HealthInfo$1;-><init>()V
+HSPLandroid/hardware/authsecret/V1_0/IAuthSecret$Proxy$$ExternalSyntheticOutline0;->m(Ljava/lang/String;)Landroid/os/HwParcel;
+PLandroid/hardware/authsecret/V1_0/IAuthSecret$Proxy;->getService()Landroid/hardware/authsecret/V1_0/IAuthSecret$Proxy;
+PLandroid/hardware/biometrics/face/V1_0/OptionalBool$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;ZLjava/lang/String;)Ljava/lang/String;
+PLandroid/hardware/broadcastradio/V2_0/AmFmBandRange$$ExternalSyntheticOutline0;->m(ILjava/lang/String;Ljava/lang/StringBuilder;)Ljava/lang/String;
+PLandroid/hardware/health/BatteryHealthData;-><clinit>()V
+PLandroid/hardware/health/DiskStats$1;->newArray(I)[Ljava/lang/Object;
+PLandroid/hardware/health/DiskStats;-><clinit>()V
+HPLandroid/hardware/health/HealthInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
PLandroid/hardware/health/HealthInfo;-><clinit>()V
HPLandroid/hardware/health/HealthInfo;-><init>()V
-PLandroid/hardware/health/IHealth$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/health/IHealth;
+PLandroid/hardware/health/HingeInfo;-><clinit>()V
+HPLandroid/hardware/health/IHealth$Stub$Proxy;->getCapacity()I
+PLandroid/hardware/health/IHealth$Stub$Proxy;->getChargeStatus()I
+HPLandroid/hardware/health/IHealth$Stub$Proxy;->getHealthInfo()Landroid/hardware/health/HealthInfo;
+PLandroid/hardware/health/IHealth$Stub$Proxy;->registerCallback(Lcom/android/server/health/HealthRegCallbackAidl$HalInfoCallback;)V
+PLandroid/hardware/health/IHealth$Stub$Proxy;->update()V
PLandroid/hardware/health/IHealth;-><clinit>()V
-PLandroid/hardware/health/IHealthInfoCallback$Stub;-><init>()V
PLandroid/hardware/health/IHealthInfoCallback;-><clinit>()V
-HPLandroid/hardware/health/Translate;->h2aTranslate(Landroid/hardware/health/V2_1/HealthInfo;)Landroid/hardware/health/HealthInfo;
-HPLandroid/hardware/health/Translate;->h2aTranslateInternal(Landroid/hardware/health/HealthInfo;Landroid/hardware/health/V1_0/HealthInfo;)V
-HPLandroid/hardware/health/V1_0/HealthInfo;-><init>()V
-HPLandroid/hardware/health/V1_0/HealthInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HPLandroid/hardware/health/V2_0/HealthInfo;-><init>()V
-HPLandroid/hardware/health/V2_0/HealthInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-PLandroid/hardware/health/V2_0/IHealth$Proxy;-><init>(Landroid/os/IHwBinder;)V
-PLandroid/hardware/health/V2_0/IHealth$Proxy;->asBinder()Landroid/os/IHwBinder;
-PLandroid/hardware/health/V2_0/IHealth$Proxy;->equals(Ljava/lang/Object;)Z
-PLandroid/hardware/health/V2_0/IHealth$Proxy;->getCapacity(Landroid/hardware/health/V2_0/IHealth$getCapacityCallback;)V
-PLandroid/hardware/health/V2_0/IHealth$Proxy;->interfaceChain()Ljava/util/ArrayList;
-PLandroid/hardware/health/V2_0/IHealth$Proxy;->registerCallback(Landroid/hardware/health/V2_0/IHealthInfoCallback;)I
-PLandroid/hardware/health/V2_0/IHealth$Proxy;->update()I
-PLandroid/hardware/health/V2_0/IHealth;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/health/V2_0/IHealth;
-PLandroid/hardware/health/V2_0/IHealth;->getService(Ljava/lang/String;Z)Landroid/hardware/health/V2_0/IHealth;
-PLandroid/hardware/health/V2_1/HealthInfo;-><init>()V
-PLandroid/hardware/health/V2_1/HealthInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-PLandroid/hardware/health/V2_1/HealthInfo;->readFromParcel(Landroid/os/HwParcel;)V
-PLandroid/hardware/health/V2_1/IHealthInfoCallback$Stub;-><init>()V
-PLandroid/hardware/health/V2_1/IHealthInfoCallback$Stub;->asBinder()Landroid/os/IHwBinder;
-PLandroid/hardware/health/V2_1/IHealthInfoCallback$Stub;->interfaceChain()Ljava/util/ArrayList;
-PLandroid/hardware/health/V2_1/IHealthInfoCallback$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V
-HSPLandroid/hardware/light/HwLight$1;-><init>()V
-HSPLandroid/hardware/light/HwLight$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/light/HwLight;
-HSPLandroid/hardware/light/HwLight$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/hardware/light/HwLight$1;->newArray(I)[Landroid/hardware/light/HwLight;
-HSPLandroid/hardware/light/HwLight$1;->newArray(I)[Ljava/lang/Object;
+PLandroid/hardware/health/StorageInfo$1;->newArray(I)[Ljava/lang/Object;
+PLandroid/hardware/health/StorageInfo;-><clinit>()V
HSPLandroid/hardware/light/HwLight;-><clinit>()V
HSPLandroid/hardware/light/HwLight;-><init>()V
-HSPLandroid/hardware/light/HwLight;->readFromParcel(Landroid/os/Parcel;)V
-PLandroid/hardware/light/HwLightState$1;-><init>()V
-PLandroid/hardware/light/HwLightState;-><clinit>()V
-PLandroid/hardware/light/HwLightState;-><init>()V
-PLandroid/hardware/light/HwLightState;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/hardware/light/ILights$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-HSPLandroid/hardware/light/ILights$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/hardware/light/ILights$Stub$Proxy;->getLights()[Landroid/hardware/light/HwLight;
-PLandroid/hardware/light/ILights$Stub$Proxy;->setLightState(ILandroid/hardware/light/HwLightState;)V
-HSPLandroid/hardware/light/ILights$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/light/ILights;
HSPLandroid/hardware/light/ILights;-><clinit>()V
-PLandroid/hardware/oemlock/IOemLock$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/oemlock/IOemLock;
PLandroid/hardware/oemlock/IOemLock;-><clinit>()V
-PLandroid/hardware/oemlock/V1_0/IOemLock;->getService(Ljava/lang/String;Z)Landroid/hardware/oemlock/V1_0/IOemLock;
-PLandroid/hardware/oemlock/V1_0/IOemLock;->getService(Z)Landroid/hardware/oemlock/V1_0/IOemLock;
-HSPLandroid/hardware/power/stats/Channel$1;-><init>()V
-HSPLandroid/hardware/power/stats/Channel;-><clinit>()V
-HSPLandroid/hardware/power/stats/EnergyMeasurement$1;-><init>()V
-HSPLandroid/hardware/power/stats/EnergyMeasurement;-><clinit>()V
-HSPLandroid/hardware/power/stats/PowerEntity$1;-><init>()V
-HSPLandroid/hardware/power/stats/PowerEntity;-><clinit>()V
-PLandroid/hardware/power/stats/PowerEntity;-><init>()V
-HSPLandroid/hardware/power/stats/State$1;-><init>()V
-HSPLandroid/hardware/power/stats/State;-><clinit>()V
-PLandroid/hardware/power/stats/State;-><init>()V
-HSPLandroid/hardware/power/stats/StateResidency$1;-><init>()V
-HSPLandroid/hardware/power/stats/StateResidency;-><clinit>()V
+PLandroid/hardware/oemlock/V1_0/IOemLock$Proxy;->getService()Landroid/hardware/oemlock/V1_0/IOemLock$Proxy;
+PLandroid/hardware/power/stats/Channel$1;->newArray(I)[Ljava/lang/Object;
+PLandroid/hardware/power/stats/Channel;-><clinit>()V
+PLandroid/hardware/power/stats/EnergyConsumer$1;->newArray(I)[Ljava/lang/Object;
+PLandroid/hardware/power/stats/EnergyConsumer;-><clinit>()V
+PLandroid/hardware/power/stats/EnergyConsumerResult$1;->newArray(I)[Ljava/lang/Object;
+PLandroid/hardware/power/stats/EnergyConsumerResult;-><clinit>()V
+PLandroid/hardware/power/stats/EnergyMeasurement$1;->newArray(I)[Ljava/lang/Object;
+PLandroid/hardware/power/stats/EnergyMeasurement;-><clinit>()V
+PLandroid/hardware/power/stats/IPowerStats$Stub$Proxy;->getEnergyConsumed([I)[Landroid/hardware/power/stats/EnergyConsumerResult;
+PLandroid/hardware/power/stats/IPowerStats$Stub$Proxy;->getEnergyConsumerInfo()[Landroid/hardware/power/stats/EnergyConsumer;
+PLandroid/hardware/power/stats/IPowerStats$Stub$Proxy;->getEnergyMeterInfo()[Landroid/hardware/power/stats/Channel;
+PLandroid/hardware/power/stats/IPowerStats$Stub$Proxy;->getPowerEntityInfo()[Landroid/hardware/power/stats/PowerEntity;
+PLandroid/hardware/power/stats/IPowerStats$Stub$Proxy;->getStateResidency([I)[Landroid/hardware/power/stats/StateResidencyResult;
+PLandroid/hardware/power/stats/IPowerStats$Stub$Proxy;->readEnergyMeter([I)[Landroid/hardware/power/stats/EnergyMeasurement;
+HSPLandroid/hardware/power/stats/IPowerStats;-><clinit>()V
+PLandroid/hardware/power/stats/PowerEntity$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+PLandroid/hardware/power/stats/PowerEntity$1;->newArray(I)[Ljava/lang/Object;
+PLandroid/hardware/power/stats/PowerEntity;-><clinit>()V
+PLandroid/hardware/power/stats/State$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+PLandroid/hardware/power/stats/State$1;->newArray(I)[Ljava/lang/Object;
+PLandroid/hardware/power/stats/State;-><clinit>()V
+PLandroid/hardware/power/stats/StateResidency$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+PLandroid/hardware/power/stats/StateResidency$1;->newArray(I)[Ljava/lang/Object;
+PLandroid/hardware/power/stats/StateResidency;-><clinit>()V
PLandroid/hardware/power/stats/StateResidency;-><init>()V
-HSPLandroid/hardware/power/stats/StateResidencyResult$1;-><init>()V
-HSPLandroid/hardware/power/stats/StateResidencyResult;-><clinit>()V
+PLandroid/hardware/power/stats/StateResidencyResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+PLandroid/hardware/power/stats/StateResidencyResult$1;->newArray(I)[Ljava/lang/Object;
+PLandroid/hardware/power/stats/StateResidencyResult;-><clinit>()V
PLandroid/hardware/power/stats/StateResidencyResult;-><init>()V
-PLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;->getService(Ljava/lang/String;Z)Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;
-PLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;->getService(Z)Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;
-PLandroid/hardware/usb/V1_0/IUsb;->getService(Ljava/lang/String;Z)Landroid/hardware/usb/V1_0/IUsb;
-PLandroid/hardware/usb/V1_0/IUsb;->getService(Z)Landroid/hardware/usb/V1_0/IUsb;
-HPLandroid/hidl/manager/V1_0/IServiceManager$InstanceDebugInfo;-><init>()V
-HPLandroid/hidl/manager/V1_0/IServiceManager$InstanceDebugInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HPLandroid/hidl/manager/V1_0/IServiceManager$InstanceDebugInfo;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
+PLandroid/hardware/security/keymint/IRemotelyProvisionedComponent$Stub$Proxy;->getHardwareInfo()Landroid/hardware/security/keymint/RpcHardwareInfo;
+PLandroid/hardware/security/keymint/IRemotelyProvisionedComponent;-><clinit>()V
+PLandroid/hardware/security/keymint/RpcHardwareInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+PLandroid/hardware/security/keymint/RpcHardwareInfo;-><clinit>()V
+PLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Phrase;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V
+PLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Properties;-><init>()V
+PLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Properties;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;)V
+PLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Proxy;->asBinder()Landroid/os/IHwBinder;
+PLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Proxy;->interfaceChain()Ljava/util/ArrayList;
+PLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$RecognitionConfig;->writeEmbeddedToBlob(Landroid/os/HwBlob;)V
+PLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$SoundModel;-><init>()V
+PLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$SoundModel;->writeEmbeddedToBlob(Landroid/os/HwBlob;)V
+PLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;
+PLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHwCallback$RecognitionEvent;-><init>()V
+PLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHwCallback$RecognitionEvent;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;)V
+PLandroid/hardware/soundtrigger/V2_0/PhraseRecognitionExtra;-><init>()V
+PLandroid/hardware/soundtrigger/V2_0/PhraseRecognitionExtra;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+PLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$SoundModel;-><init>()V
+PLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$SoundModel;-><init>(I)V
+PLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$SoundModel;->writeToParcel(Landroid/os/HwParcel;)V
+PLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$RecognitionEvent;-><init>(I)V
+PLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$RecognitionEvent;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;)V
+PLandroid/hardware/soundtrigger/V2_3/ISoundTriggerHw$Proxy;->getProperties_2_3(Lcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat$$ExternalSyntheticLambda1;)V
+PLandroid/hardware/soundtrigger/V2_3/ISoundTriggerHw$Proxy;->interfaceChain()Ljava/util/ArrayList;
+PLandroid/hardware/soundtrigger/V2_3/ISoundTriggerHw$Proxy;->loadPhraseSoundModel_2_1(Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$SoundModel;Lcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat$ModelCallbackWrapper;Lcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat$$ExternalSyntheticLambda3;)V
+PLandroid/hardware/soundtrigger/V2_3/ISoundTriggerHw$Proxy;->startRecognition_2_3(ILandroid/hardware/soundtrigger/V2_3/RecognitionConfig;)I
+PLandroid/hardware/soundtrigger/V2_3/ISoundTriggerHw$Proxy;->stopRecognition(I)I
+PLandroid/hardware/soundtrigger/V2_3/ISoundTriggerHw$Proxy;->unloadSoundModel(I)I
+PLandroid/hardware/soundtrigger/V2_3/Properties;-><init>()V
+PLandroid/hardware/usb/IUsb$Stub$Proxy;->queryPortStatus(J)V
+PLandroid/hardware/usb/IUsb$Stub$Proxy;->setCallback(Landroid/hardware/usb/IUsbCallback;)V
+PLandroid/hardware/usb/IUsb$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/usb/IUsb;
+PLandroid/hardware/usb/IUsb;-><clinit>()V
+PLandroid/hardware/usb/IUsbCallback;-><clinit>()V
+PLandroid/hardware/usb/PortStatus$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+PLandroid/hardware/usb/PortStatus$1;->newArray(I)[Ljava/lang/Object;
+PLandroid/hardware/usb/PortStatus;-><clinit>()V
+PLandroid/hardware/weaver/IWeaver$Stub$Proxy;->asBinder()Landroid/os/IBinder;
+PLandroid/hardware/weaver/IWeaver$Stub$Proxy;->getConfig()Landroid/hardware/weaver/WeaverConfig;
+PLandroid/hardware/weaver/IWeaver$Stub$Proxy;->getInterfaceVersion()I
+PLandroid/hardware/weaver/IWeaver$Stub$Proxy;->read(I[B)Landroid/hardware/weaver/WeaverReadResponse;
+PLandroid/hardware/weaver/IWeaver$Stub$Proxy;->write([B[BI)V
+PLandroid/hardware/weaver/IWeaver;-><clinit>()V
+PLandroid/hardware/weaver/WeaverConfig$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+PLandroid/hardware/weaver/WeaverConfig;-><clinit>()V
+PLandroid/hardware/weaver/WeaverConfig;-><init>()V
+PLandroid/hardware/weaver/WeaverReadResponse$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+PLandroid/hardware/weaver/WeaverReadResponse;-><clinit>()V
+PLandroid/hardware/weaver/WeaverReadResponse;-><init>()V
+PLandroid/hidl/manager/V1_0/IServiceManager$InstanceDebugInfo;-><init>()V
+PLandroid/hidl/manager/V1_0/IServiceManager$InstanceDebugInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+PLandroid/hidl/manager/V1_0/IServiceManager$InstanceDebugInfo;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
HSPLandroid/hidl/manager/V1_0/IServiceManager$Proxy;-><init>(Landroid/os/IHwBinder;)V
PLandroid/hidl/manager/V1_0/IServiceManager$Proxy;->debugDump()Ljava/util/ArrayList;
HSPLandroid/hidl/manager/V1_0/IServiceManager$Proxy;->getTransport(Ljava/lang/String;Ljava/lang/String;)B
@@ -1615,15 +1554,15 @@ HSPLandroid/hidl/manager/V1_0/IServiceManager;->getService(Ljava/lang/String;)La
HSPLandroid/hidl/manager/V1_0/IServiceNotification$Stub;-><init>()V
HSPLandroid/hidl/manager/V1_0/IServiceNotification$Stub;->asBinder()Landroid/os/IHwBinder;
HSPLandroid/hidl/manager/V1_0/IServiceNotification$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V
-HSPLandroid/net/ConnectivityModuleConnector$DependenciesImpl;-><init>()V
-HSPLandroid/net/ConnectivityModuleConnector$DependenciesImpl;-><init>(Landroid/net/ConnectivityModuleConnector$DependenciesImpl-IA;)V
+PLandroid/internal/os/profiling/Flags;-><clinit>()V
+PLandroid/internal/os/profiling/Flags;->systemTriggeredProfilingNew()Z
+HSPLandroid/net/ConnectivityModuleConnector$$ExternalSyntheticOutline0;->m$1(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLandroid/net/ConnectivityModuleConnector$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
PLandroid/net/ConnectivityModuleConnector$DependenciesImpl;->getModuleServiceIntent(Landroid/content/pm/PackageManager;Ljava/lang/String;Ljava/lang/String;Z)Landroid/content/Intent;
PLandroid/net/ConnectivityModuleConnector$ModuleServiceConnection;-><init>(Landroid/net/ConnectivityModuleConnector;Ljava/lang/String;Landroid/net/ConnectivityModuleConnector$ModuleServiceCallback;)V
-PLandroid/net/ConnectivityModuleConnector$ModuleServiceConnection;-><init>(Landroid/net/ConnectivityModuleConnector;Ljava/lang/String;Landroid/net/ConnectivityModuleConnector$ModuleServiceCallback;Landroid/net/ConnectivityModuleConnector$ModuleServiceConnection-IA;)V
PLandroid/net/ConnectivityModuleConnector$ModuleServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-PLandroid/net/ConnectivityModuleConnector;->-$$Nest$mlogi(Landroid/net/ConnectivityModuleConnector;Ljava/lang/String;)V
+PLandroid/net/ConnectivityModuleConnector;->-$$Nest$mlogi(Landroid/net/ConnectivityModuleConnector;)V
PLandroid/net/ConnectivityModuleConnector;->-$$Nest$smcheckModuleServicePermission(Landroid/content/pm/PackageManager;Landroid/content/ComponentName;Ljava/lang/String;)V
-HSPLandroid/net/ConnectivityModuleConnector;-><clinit>()V
HSPLandroid/net/ConnectivityModuleConnector;-><init>()V
HSPLandroid/net/ConnectivityModuleConnector;-><init>(Landroid/net/ConnectivityModuleConnector$Dependencies;)V
PLandroid/net/ConnectivityModuleConnector;->checkModuleServicePermission(Landroid/content/pm/PackageManager;Landroid/content/ComponentName;Ljava/lang/String;)V
@@ -1633,57 +1572,55 @@ PLandroid/net/ConnectivityModuleConnector;->log(Ljava/lang/String;)V
PLandroid/net/ConnectivityModuleConnector;->logi(Ljava/lang/String;)V
PLandroid/net/ConnectivityModuleConnector;->registerHealthListener(Landroid/net/ConnectivityModuleConnector$ConnectivityModuleHealthListener;)V
PLandroid/net/ConnectivityModuleConnector;->startModuleService(Ljava/lang/String;Ljava/lang/String;Landroid/net/ConnectivityModuleConnector$ModuleServiceCallback;)V
-PLandroid/net/INetd$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+PLandroid/net/INetd$Stub$Proxy;->bandwidthRemoveInterfaceQuota(Ljava/lang/String;)V
+PLandroid/net/INetd$Stub$Proxy;->bandwidthSetInterfaceQuota(Ljava/lang/String;J)V
PLandroid/net/INetd$Stub$Proxy;->firewallSetFirewallType(I)V
+PLandroid/net/INetd$Stub$Proxy;->isAlive()Z
PLandroid/net/INetd$Stub$Proxy;->registerUnsolicitedEventListener(Landroid/net/INetdUnsolicitedEventListener;)V
PLandroid/net/INetd$Stub;-><clinit>()V
PLandroid/net/INetd$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetd;
PLandroid/net/INetdUnsolicitedEventListener$Stub;-><init>()V
PLandroid/net/INetdUnsolicitedEventListener$Stub;->asBinder()Landroid/os/IBinder;
-PLandroid/net/INetdUnsolicitedEventListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HPLandroid/net/INetdUnsolicitedEventListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
PLandroid/net/INetdUnsolicitedEventListener;-><clinit>()V
-PLandroid/net/INetworkStackConnector$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
PLandroid/net/INetworkStackConnector$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkStackConnector;
PLandroid/net/INetworkStackConnector;-><clinit>()V
PLandroid/net/NetworkFactory;-><init>(Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkCapabilities;)V
PLandroid/net/NetworkFactory;->acceptRequest(Landroid/net/NetworkRequest;)Z
-HPLandroid/net/NetworkFactory;->log(Ljava/lang/String;)V
+PLandroid/net/NetworkFactory;->log(Ljava/lang/String;)V
PLandroid/net/NetworkFactory;->needNetworkFor(Landroid/net/NetworkRequest;)V
+PLandroid/net/NetworkFactory;->reevaluateAllRequests()V
PLandroid/net/NetworkFactory;->register()V
PLandroid/net/NetworkFactory;->registerIgnoringScore()V
PLandroid/net/NetworkFactory;->releaseNetworkFor(Landroid/net/NetworkRequest;)V
+PLandroid/net/NetworkFactory;->setScoreFilter(I)V
PLandroid/net/NetworkFactory;->startNetwork()V
+PLandroid/net/NetworkFactory;->stopNetwork()V
PLandroid/net/NetworkFactoryImpl$$ExternalSyntheticLambda0;-><init>(Landroid/net/NetworkFactoryImpl;)V
-HPLandroid/net/NetworkFactoryImpl$$ExternalSyntheticLambda0;->execute(Ljava/lang/Runnable;)V
+PLandroid/net/NetworkFactoryImpl$$ExternalSyntheticLambda0;->execute(Ljava/lang/Runnable;)V
PLandroid/net/NetworkFactoryImpl$1;-><init>(Landroid/net/NetworkFactoryImpl;)V
PLandroid/net/NetworkFactoryImpl$1;->onNetworkNeeded(Landroid/net/NetworkRequest;)V
PLandroid/net/NetworkFactoryImpl$1;->onNetworkUnneeded(Landroid/net/NetworkRequest;)V
PLandroid/net/NetworkFactoryImpl$2;-><init>(Landroid/net/NetworkFactoryImpl;Landroid/content/Context;Landroid/os/Looper;Ljava/lang/String;)V
-HPLandroid/net/NetworkFactoryImpl$NetworkRequestInfo;-><init>(Landroid/net/NetworkRequest;)V
-HPLandroid/net/NetworkFactoryImpl;->$r8$lambda$gco469I383HoexMSXOHYvcsWJ0M(Landroid/net/NetworkFactoryImpl;Ljava/lang/Runnable;)V
-PLandroid/net/NetworkFactoryImpl;->-$$Nest$mhandleAddRequest(Landroid/net/NetworkFactoryImpl;Landroid/net/NetworkRequest;)V
-PLandroid/net/NetworkFactoryImpl;->-$$Nest$mhandleRemoveRequest(Landroid/net/NetworkFactoryImpl;Landroid/net/NetworkRequest;)V
+PLandroid/net/NetworkFactoryImpl$NetworkRequestInfo;-><init>(Landroid/net/NetworkRequest;)V
PLandroid/net/NetworkFactoryImpl;-><clinit>()V
PLandroid/net/NetworkFactoryImpl;-><init>(Landroid/net/NetworkFactory;Landroid/os/Looper;Landroid/content/Context;Landroid/net/NetworkCapabilities;)V
HPLandroid/net/NetworkFactoryImpl;->handleAddRequest(Landroid/net/NetworkRequest;)V
PLandroid/net/NetworkFactoryImpl;->handleMessage(Landroid/os/Message;)V
-PLandroid/net/NetworkFactoryImpl;->handleOfferNetwork(Landroid/net/NetworkScore;)V
PLandroid/net/NetworkFactoryImpl;->handleRemoveRequest(Landroid/net/NetworkRequest;)V
-PLandroid/net/NetworkFactoryImpl;->lambda$new$0(Ljava/lang/Runnable;)V
+PLandroid/net/NetworkFactoryImpl;->reevaluateAllRequests()V
PLandroid/net/NetworkFactoryImpl;->register(Ljava/lang/String;)V
PLandroid/net/NetworkFactoryImpl;->register(Ljava/lang/String;Z)V
PLandroid/net/NetworkFactoryImpl;->registerIgnoringScore(Ljava/lang/String;)V
+PLandroid/net/NetworkFactoryImpl;->setScoreFilter(I)V
+PLandroid/net/NetworkFactoryImpl;->setScoreFilter(Landroid/net/NetworkScore;)V
PLandroid/net/NetworkFactoryLegacyImpl;-><init>(Landroid/net/NetworkFactory;Landroid/os/Looper;Landroid/content/Context;Landroid/net/NetworkCapabilities;)V
-PLandroid/net/NetworkStackClient$DependenciesImpl;-><init>()V
-PLandroid/net/NetworkStackClient$DependenciesImpl;-><init>(Landroid/net/NetworkStackClient$DependenciesImpl-IA;)V
PLandroid/net/NetworkStackClient$DependenciesImpl;->addToServiceManager(Landroid/os/IBinder;)V
PLandroid/net/NetworkStackClient$DependenciesImpl;->getConnectivityModuleConnector()Landroid/net/ConnectivityModuleConnector;
PLandroid/net/NetworkStackClient$NetworkStackConnection;-><init>(Landroid/net/NetworkStackClient;)V
-PLandroid/net/NetworkStackClient$NetworkStackConnection;-><init>(Landroid/net/NetworkStackClient;Landroid/net/NetworkStackClient$NetworkStackConnection-IA;)V
PLandroid/net/NetworkStackClient$NetworkStackConnection;->onModuleServiceConnected(Landroid/os/IBinder;)V
-PLandroid/net/NetworkStackClient;->-$$Nest$mlogi(Landroid/net/NetworkStackClient;Ljava/lang/String;)V
+PLandroid/net/NetworkStackClient;->-$$Nest$mlogi(Landroid/net/NetworkStackClient;)V
PLandroid/net/NetworkStackClient;->-$$Nest$mregisterNetworkStackService(Landroid/net/NetworkStackClient;Landroid/os/IBinder;)V
-PLandroid/net/NetworkStackClient;-><clinit>()V
PLandroid/net/NetworkStackClient;-><init>()V
PLandroid/net/NetworkStackClient;-><init>(Landroid/net/NetworkStackClient$Dependencies;)V
PLandroid/net/NetworkStackClient;->getInstance()Landroid/net/NetworkStackClient;
@@ -1695,31 +1632,30 @@ PLandroid/net/NetworkStackClient;->start()V
PLandroid/net/metrics/INetdEventListener$Stub;-><init>()V
HPLandroid/net/metrics/INetdEventListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
PLandroid/net/metrics/INetdEventListener;-><clinit>()V
-PLandroid/net/util/NetdService;-><clinit>()V
+PLandroid/net/shared/InitialConfiguration$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/StringBuilder;
PLandroid/net/util/NetdService;->get()Landroid/net/INetd;
PLandroid/net/util/NetdService;->get(J)Landroid/net/INetd;
PLandroid/net/util/NetdService;->getInstance()Landroid/net/INetd;
HSPLandroid/os/BatteryStatsInternal;-><init>()V
-HSPLandroid/power/PowerStatsInternal;-><init>()V
-PLandroid/security/keystore/IKeyAttestationApplicationIdProvider$Stub;-><init>()V
-PLandroid/security/keystore/IKeyAttestationApplicationIdProvider$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/security/keystore/KeyAttestationApplicationId$1;-><init>()V
PLandroid/security/keystore/KeyAttestationApplicationId;-><clinit>()V
-PLandroid/security/keystore/KeyAttestationApplicationId;-><init>()V
PLandroid/security/keystore/KeyAttestationApplicationId;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/security/keystore/KeyAttestationPackageInfo$1;-><init>()V
PLandroid/security/keystore/KeyAttestationPackageInfo;-><clinit>()V
PLandroid/security/keystore/KeyAttestationPackageInfo;-><init>()V
PLandroid/security/keystore/KeyAttestationPackageInfo;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/security/keystore/Signature$1;-><init>()V
PLandroid/security/keystore/Signature;-><clinit>()V
-PLandroid/security/keystore/Signature;-><init>()V
PLandroid/security/keystore/Signature;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/sysprop/SurfaceFlingerProperties;->enable_frame_rate_override()Ljava/util/Optional;
-PLandroid/sysprop/SurfaceFlingerProperties;->has_HDR_display()Ljava/util/Optional;
-PLandroid/sysprop/SurfaceFlingerProperties;->has_wide_color_display()Ljava/util/Optional;
HSPLandroid/sysprop/SurfaceFlingerProperties;->tryParseBoolean(Ljava/lang/String;)Ljava/lang/Boolean;
PLcom/android/internal/art/ArtStatsLog;->write(II)V
+PLcom/android/internal/protolog/ProtoLogImpl_704172511$$ExternalSyntheticLambda0;->update(Lcom/android/internal/protolog/common/IProtoLog;)V
+PLcom/android/internal/protolog/ProtoLogImpl_704172511$Cache;-><clinit>()V
+PLcom/android/internal/protolog/ProtoLogImpl_704172511;-><clinit>()V
+PLcom/android/internal/protolog/ProtoLogImpl_704172511;->d(Lcom/android/internal/protolog/common/IProtoLogGroup;JI[Ljava/lang/Object;)V
+HPLcom/android/internal/protolog/ProtoLogImpl_704172511;->getSingleInstance()Lcom/android/internal/protolog/common/IProtoLog;
+PLcom/android/internal/protolog/ProtoLogImpl_704172511;->i(Lcom/android/internal/protolog/common/IProtoLogGroup;JI[Ljava/lang/Object;)V
+PLcom/android/internal/protolog/ProtoLogImpl_704172511;->isEnabled(Lcom/android/internal/protolog/common/IProtoLogGroup;Lcom/android/internal/protolog/common/LogLevel;)Z
+PLcom/android/internal/protolog/ProtoLogImpl_704172511;->v(Lcom/android/internal/protolog/common/IProtoLogGroup;JI[Ljava/lang/Object;)V
+PLcom/android/internal/protolog/ProtoLogImpl_704172511;->w(Lcom/android/internal/protolog/common/IProtoLogGroup;JI[Ljava/lang/Object;)V
+HSPLcom/android/internal/util/jobs/ArrayUtils$$ExternalSyntheticOutline0;->m(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/StringBuilder;
PLcom/android/internal/util/jobs/ArrayUtils;-><clinit>()V
PLcom/android/internal/util/jobs/ArrayUtils;->appendInt([II)[I
PLcom/android/internal/util/jobs/ArrayUtils;->appendInt([IIZ)[I
@@ -1727,30 +1663,66 @@ HPLcom/android/internal/util/jobs/ArrayUtils;->contains([II)Z
PLcom/android/internal/util/jobs/ArrayUtils;->contains([Ljava/lang/Object;Ljava/lang/Object;)Z
PLcom/android/internal/util/jobs/ArrayUtils;->filter([Ljava/lang/Object;Ljava/util/function/IntFunction;Ljava/util/function/Predicate;)[Ljava/lang/Object;
PLcom/android/internal/util/jobs/ArrayUtils;->indexOf([Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/internal/util/jobs/ArrayUtils;->isEmpty(Ljava/util/Collection;)Z
PLcom/android/internal/util/jobs/ArrayUtils;->isEmpty([Ljava/lang/Object;)Z
PLcom/android/internal/util/jobs/ArrayUtils;->size([Ljava/lang/Object;)I
-PLcom/android/internal/util/jobs/ConcurrentUtils$DirectExecutor;-><init>()V
-PLcom/android/internal/util/jobs/ConcurrentUtils$DirectExecutor;-><init>(Lcom/android/internal/util/jobs/ConcurrentUtils$DirectExecutor-IA;)V
+PLcom/android/internal/util/jobs/CollectionUtils;->isEmpty(Ljava/util/Collection;)Z
+PLcom/android/internal/util/jobs/CollectionUtils;->size(Ljava/util/Collection;)I
PLcom/android/internal/util/jobs/ConcurrentUtils;-><clinit>()V
PLcom/android/internal/util/jobs/ConcurrentUtils;->waitForCountDownNoInterrupt(Ljava/util/concurrent/CountDownLatch;JLjava/lang/String;)V
+PLcom/android/internal/util/jobs/DumpUtils$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/StringBuilder;
+PLcom/android/internal/util/jobs/DumpUtils;-><clinit>()V
+PLcom/android/internal/util/jobs/DumpUtils;->checkDumpAndUsageStatsPermission(Landroid/content/Context;Ljava/lang/String;Ljava/io/PrintWriter;)Z
+PLcom/android/internal/util/jobs/DumpUtils;->checkDumpPermission(Landroid/content/Context;Ljava/lang/String;Ljava/io/PrintWriter;)Z
+PLcom/android/internal/util/jobs/DumpUtils;->checkUsageStatsPermission(Landroid/content/Context;Ljava/lang/String;Ljava/io/PrintWriter;)Z
+PLcom/android/internal/util/jobs/FastXmlSerializer;-><clinit>()V
+PLcom/android/internal/util/jobs/FastXmlSerializer;-><init>()V
+PLcom/android/internal/util/jobs/FastXmlSerializer;-><init>(I)V
+HPLcom/android/internal/util/jobs/FastXmlSerializer;->append(C)V
+HPLcom/android/internal/util/jobs/FastXmlSerializer;->append(Ljava/lang/String;)V
+HPLcom/android/internal/util/jobs/FastXmlSerializer;->append(Ljava/lang/String;II)V+]Lcom/android/internal/util/jobs/FastXmlSerializer;Lcom/android/internal/util/jobs/FastXmlSerializer;
+HPLcom/android/internal/util/jobs/FastXmlSerializer;->appendIndent(I)V
+PLcom/android/internal/util/jobs/FastXmlSerializer;->attribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;
+PLcom/android/internal/util/jobs/FastXmlSerializer;->endDocument()V
+PLcom/android/internal/util/jobs/FastXmlSerializer;->endTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;
+HPLcom/android/internal/util/jobs/FastXmlSerializer;->escapeAndAppendString(Ljava/lang/String;)V
+PLcom/android/internal/util/jobs/FastXmlSerializer;->flush()V
+PLcom/android/internal/util/jobs/FastXmlSerializer;->flushBytes()V
+PLcom/android/internal/util/jobs/FastXmlSerializer;->setFeature(Ljava/lang/String;Z)V
+PLcom/android/internal/util/jobs/FastXmlSerializer;->setOutput(Ljava/io/OutputStream;Ljava/lang/String;)V
+PLcom/android/internal/util/jobs/FastXmlSerializer;->startDocument(Ljava/lang/String;Ljava/lang/Boolean;)V
+HPLcom/android/internal/util/jobs/FastXmlSerializer;->startTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;
+PLcom/android/internal/util/jobs/Preconditions$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/StringBuilder;
PLcom/android/internal/util/jobs/RingBufferIndices;-><init>(I)V
HPLcom/android/internal/util/jobs/RingBufferIndices;->add()I
-HPLcom/android/internal/util/jobs/StatLogger;-><init>(Ljava/lang/String;[Ljava/lang/String;)V
+PLcom/android/internal/util/jobs/RingBufferIndices;->indexOf(I)I
+PLcom/android/internal/util/jobs/RingBufferIndices;->size()I
+PLcom/android/internal/util/jobs/StatLogger;-><init>(Ljava/lang/String;[Ljava/lang/String;)V
PLcom/android/internal/util/jobs/StatLogger;-><init>([Ljava/lang/String;)V
+PLcom/android/internal/util/jobs/StatLogger;->dump(Landroid/util/IndentingPrintWriter;)V
HPLcom/android/internal/util/jobs/StatLogger;->getTime()J
-HPLcom/android/internal/util/jobs/StatLogger;->logDurationStat(IJ)J
-HPLcom/android/internal/util/jobs/XmlUtils;->nextElementWithin(Lorg/xmlpull/v1/XmlPullParser;I)Z
-PLcom/android/media/audio/FeatureFlagsImpl;-><clinit>()V
-PLcom/android/media/audio/FeatureFlagsImpl;-><init>()V
-PLcom/android/media/audio/FeatureFlagsImpl;->alarmMinVolumeZero()Z
-HPLcom/android/media/audio/FeatureFlagsImpl;->disablePrescaleAbsoluteVolume()Z
-PLcom/android/media/audio/FeatureFlagsImpl;->load_overrides_media_audio()V
-PLcom/android/media/audio/FeatureFlagsImpl;->ringerModeAffectsAlarm()Z
+HPLcom/android/internal/util/jobs/StatLogger;->logDurationStat(IJ)J+]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;
+HSPLcom/android/internal/util/jobs/XmlUtils$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/internal/util/jobs/XmlUtils$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/internal/util/jobs/XmlUtils;->nextElementWithin(Lorg/xmlpull/v1/XmlPullParser;I)Z
+PLcom/android/launcher3/Flags;-><clinit>()V
+HPLcom/android/launcher3/Flags;->enableRefactorTaskThumbnail()Z
+PLcom/android/media/audio/FeatureFlagsImpl;->init()V
PLcom/android/media/audio/Flags;-><clinit>()V
+HPLcom/android/media/audio/Flags;->absVolumeIndexFix()Z
PLcom/android/media/audio/Flags;->alarmMinVolumeZero()Z
-HPLcom/android/media/audio/Flags;->disablePrescaleAbsoluteVolume()Z
+PLcom/android/media/audio/Flags;->asDeviceConnectionFailure()Z
+PLcom/android/media/audio/Flags;->audioserverPermissions()Z
+PLcom/android/media/audio/Flags;->disablePrescaleAbsoluteVolume()Z
+PLcom/android/media/audio/Flags;->equalScoLeaVcIndexRange()Z
+PLcom/android/media/audio/Flags;->portToPiidSimplification()Z
+HPLcom/android/media/audio/Flags;->replaceStreamBtSco()Z
+PLcom/android/media/audio/Flags;->ringMyCar()Z
PLcom/android/media/audio/Flags;->ringerModeAffectsAlarm()Z
-PLcom/android/modules/utils/build/SdkLevel;->isAtLeastPreReleaseCodename(Ljava/lang/String;)Z
+PLcom/android/media/audio/Flags;->setStreamVolumeOrder()Z
+PLcom/android/media/audio/Flags;->vgsVssSyncMuteOrder()Z
+PLcom/android/modules/utils/HandlerExecutor;-><init>(Landroid/os/Handler;)V
+PLcom/android/modules/utils/HandlerExecutor;->execute(Ljava/lang/Runnable;)V
HSPLcom/android/modules/utils/build/SdkLevel;->isAtLeastR()Z
PLcom/android/modules/utils/build/SdkLevel;->isAtLeastS()Z
HSPLcom/android/modules/utils/build/SdkLevel;->isAtLeastT()Z
@@ -1762,90 +1734,62 @@ HSPLcom/android/modules/utils/build/UnboundedSdkLevel;->isAtLeastInternal(Ljava/
HSPLcom/android/modules/utils/build/UnboundedSdkLevel;->isCodename(Ljava/lang/String;)Z
HSPLcom/android/modules/utils/build/UnboundedSdkLevel;->removeFingerprint(Ljava/lang/String;)Ljava/lang/String;
HSPLcom/android/modules/utils/build/UnboundedSdkLevel;->setOf([Ljava/lang/String;)Ljava/util/Set;
-PLcom/android/net/module/util/BaseNetdEventListener;-><init>()V
-PLcom/android/server/AccessibilityManagerInternal$1;-><init>()V
+PLcom/android/net/module/util/HandlerUtils$$ExternalSyntheticLambda0;-><init>(Ljava/lang/Runnable;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/CountDownLatch;)V
+PLcom/android/net/module/util/HandlerUtils$$ExternalSyntheticLambda0;->run()V
+PLcom/android/net/module/util/HandlerUtils;->lambda$runWithScissorsForDump$0(Ljava/lang/Runnable;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/CountDownLatch;)V
+PLcom/android/net/module/util/HandlerUtils;->runWithScissorsForDump(Landroid/os/Handler;Ljava/lang/Runnable;J)Z
+PLcom/android/security/SecureBox$AesGcmOperation;-><clinit>()V
+PLcom/android/security/SecureBox;-><clinit>()V
+PLcom/android/security/SecureBox;->aesGcmInternal(Lcom/android/security/SecureBox$AesGcmOperation;Ljavax/crypto/SecretKey;[B[B[B)[B
+PLcom/android/security/SecureBox;->encodePublicKey(Ljava/security/PublicKey;)[B
+PLcom/android/security/SecureBox;->encrypt(Ljava/security/PublicKey;[B[B[B)[B
+PLcom/android/security/SecureBox;->genKeyPair()Ljava/security/KeyPair;
+PLcom/android/security/SecureBox;->hkdfDeriveKey([B[B[B)Ljavax/crypto/SecretKey;
PLcom/android/server/AccessibilityManagerInternal;-><clinit>()V
-PLcom/android/server/AccessibilityManagerInternal;-><init>()V
PLcom/android/server/AccessibilityManagerInternal;->get()Lcom/android/server/AccessibilityManagerInternal;
-HSPLcom/android/server/AnimationThread;-><init>()V
HSPLcom/android/server/AnimationThread;->ensureThreadLocked()V
-HSPLcom/android/server/AnimationThread;->get()Lcom/android/server/AnimationThread;
HSPLcom/android/server/AnimationThread;->getHandler()Landroid/os/Handler;
PLcom/android/server/AnyMotionDetector$1;-><init>(Lcom/android/server/AnyMotionDetector;)V
-PLcom/android/server/AnyMotionDetector$2;-><init>(Lcom/android/server/AnyMotionDetector;)V
-PLcom/android/server/AnyMotionDetector$3;-><init>(Lcom/android/server/AnyMotionDetector;)V
-PLcom/android/server/AnyMotionDetector$4;-><init>(Lcom/android/server/AnyMotionDetector;)V
-PLcom/android/server/AnyMotionDetector$RunningSignalStats;-><init>()V
+PLcom/android/server/AnyMotionDetector$2;-><init>(Lcom/android/server/AnyMotionDetector;I)V
+HSPLcom/android/server/AnyMotionDetector$RunningSignalStats$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/AnyMotionDetector$RunningSignalStats;->reset()V
-PLcom/android/server/AnyMotionDetector$Vector3;-><init>(JFFF)V
-PLcom/android/server/AnyMotionDetector;-><init>(Landroid/os/PowerManager;Landroid/os/Handler;Landroid/hardware/SensorManager;Lcom/android/server/AnyMotionDetector$DeviceIdleCallback;F)V
-PLcom/android/server/AppSchedulingModuleThread;-><init>()V
-HPLcom/android/server/AppSchedulingModuleThread;->ensureThreadLocked()V
+PLcom/android/server/AnyMotionDetector$Vector3;-><init>(FFFJ)V
+PLcom/android/server/AnyMotionDetector;-><init>(Landroid/os/PowerManager;Landroid/os/Handler;Landroid/hardware/SensorManager;Lcom/android/server/DeviceIdleController;F)V
+HPLcom/android/server/AnyMotionDetector;->stop()V
+PLcom/android/server/AppSchedulingModuleThread;->ensureThreadLocked()V
PLcom/android/server/AppSchedulingModuleThread;->get()Lcom/android/server/AppSchedulingModuleThread;
PLcom/android/server/AppSchedulingModuleThread;->getExecutor()Ljava/util/concurrent/Executor;
-HPLcom/android/server/AppSchedulingModuleThread;->getHandler()Landroid/os/Handler;
+PLcom/android/server/AppSchedulingModuleThread;->getHandler()Landroid/os/Handler;
PLcom/android/server/AppStateTrackerImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/AppStateTrackerImpl;)V
-PLcom/android/server/AppStateTrackerImpl$1;-><init>(Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTracker$BackgroundRestrictedAppListener;)V
+PLcom/android/server/AppStateTrackerImpl$1;-><init>(Lcom/android/server/AppStateTracker$BackgroundRestrictedAppListener;)V
PLcom/android/server/AppStateTrackerImpl$2;-><init>(Lcom/android/server/AppStateTrackerImpl;)V
PLcom/android/server/AppStateTrackerImpl$3;-><init>(Lcom/android/server/AppStateTrackerImpl;)V
HPLcom/android/server/AppStateTrackerImpl$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/AppStateTrackerImpl$AppOpsWatcher;-><init>(Lcom/android/server/AppStateTrackerImpl;)V
-PLcom/android/server/AppStateTrackerImpl$AppOpsWatcher;-><init>(Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl$AppOpsWatcher-IA;)V
PLcom/android/server/AppStateTrackerImpl$FeatureFlagsObserver;-><init>(Lcom/android/server/AppStateTrackerImpl;)V
-PLcom/android/server/AppStateTrackerImpl$FeatureFlagsObserver;->isForcedAppStandbyForSmallBatteryEnabled()Z
-PLcom/android/server/AppStateTrackerImpl$FeatureFlagsObserver;->register()V
-PLcom/android/server/AppStateTrackerImpl$Listener;->-$$Nest$monExemptedBucketChanged(Lcom/android/server/AppStateTrackerImpl$Listener;Lcom/android/server/AppStateTrackerImpl;)V
-PLcom/android/server/AppStateTrackerImpl$Listener;->-$$Nest$monTempPowerSaveExemptionListChanged(Lcom/android/server/AppStateTrackerImpl$Listener;Lcom/android/server/AppStateTrackerImpl;)V
-PLcom/android/server/AppStateTrackerImpl$Listener;->-$$Nest$monUidActiveStateChanged(Lcom/android/server/AppStateTrackerImpl$Listener;Lcom/android/server/AppStateTrackerImpl;I)V
-PLcom/android/server/AppStateTrackerImpl$Listener;-><init>()V
-PLcom/android/server/AppStateTrackerImpl$Listener;->handleUidCachedChanged(IZ)V
-PLcom/android/server/AppStateTrackerImpl$Listener;->onExemptedBucketChanged(Lcom/android/server/AppStateTrackerImpl;)V
-PLcom/android/server/AppStateTrackerImpl$Listener;->onTempPowerSaveExemptionListChanged(Lcom/android/server/AppStateTrackerImpl;)V
-HPLcom/android/server/AppStateTrackerImpl$Listener;->onUidActiveStateChanged(Lcom/android/server/AppStateTrackerImpl;I)V
PLcom/android/server/AppStateTrackerImpl$Listener;->unblockAlarmsForUid(I)V
PLcom/android/server/AppStateTrackerImpl$Listener;->updateAlarmsForUid(I)V
-PLcom/android/server/AppStateTrackerImpl$Listener;->updateAllAlarms()V
PLcom/android/server/AppStateTrackerImpl$Listener;->updateAllJobs()V
PLcom/android/server/AppStateTrackerImpl$Listener;->updateJobsForUid(IZ)V
+PLcom/android/server/AppStateTrackerImpl$MyHandler$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;
PLcom/android/server/AppStateTrackerImpl$MyHandler;-><init>(Lcom/android/server/AppStateTrackerImpl;Landroid/os/Looper;)V
-HPLcom/android/server/AppStateTrackerImpl$MyHandler;->handleMessage(Landroid/os/Message;)V
-HPLcom/android/server/AppStateTrackerImpl$MyHandler;->handleUidActive(I)V
-HPLcom/android/server/AppStateTrackerImpl$MyHandler;->handleUidCached(IZ)V
-PLcom/android/server/AppStateTrackerImpl$MyHandler;->handleUidGone(I)V
-HPLcom/android/server/AppStateTrackerImpl$MyHandler;->handleUidIdle(I)V
-PLcom/android/server/AppStateTrackerImpl$MyHandler;->notifyAllExemptionListChanged()V
-HPLcom/android/server/AppStateTrackerImpl$MyHandler;->notifyExemptedBucketChanged()V
-HPLcom/android/server/AppStateTrackerImpl$MyHandler;->notifyTempExemptionListChanged()V
-HPLcom/android/server/AppStateTrackerImpl$MyHandler;->notifyUidActiveStateChanged(I)V
-HPLcom/android/server/AppStateTrackerImpl$MyHandler;->onUidActive(I)V
-HPLcom/android/server/AppStateTrackerImpl$MyHandler;->onUidCachedChanged(IZ)V
-PLcom/android/server/AppStateTrackerImpl$MyHandler;->onUidGone(IZ)V
-HPLcom/android/server/AppStateTrackerImpl$MyHandler;->onUidIdle(IZ)V
+HPLcom/android/server/AppStateTrackerImpl$MyHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;]Lcom/android/server/AppStateTrackerImpl$Listener;Lcom/android/server/AppStateTrackerImpl$1;,Lcom/android/server/alarm/AlarmManagerService$7;,Lcom/android/server/job/controllers/BackgroundJobsController$2;
HPLcom/android/server/AppStateTrackerImpl$MyHandler;->removeUid(IZ)V
PLcom/android/server/AppStateTrackerImpl$StandbyTracker;-><init>(Lcom/android/server/AppStateTrackerImpl;)V
-HPLcom/android/server/AppStateTrackerImpl$StandbyTracker;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
+PLcom/android/server/AppStateTrackerImpl$StandbyTracker;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
PLcom/android/server/AppStateTrackerImpl$UidObserver;-><init>(Lcom/android/server/AppStateTrackerImpl;)V
-PLcom/android/server/AppStateTrackerImpl$UidObserver;-><init>(Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl$UidObserver-IA;)V
-HPLcom/android/server/AppStateTrackerImpl$UidObserver;->onUidActive(I)V
-HPLcom/android/server/AppStateTrackerImpl$UidObserver;->onUidCachedChanged(IZ)V
-HPLcom/android/server/AppStateTrackerImpl$UidObserver;->onUidGone(IZ)V
-HPLcom/android/server/AppStateTrackerImpl$UidObserver;->onUidIdle(IZ)V
-PLcom/android/server/AppStateTrackerImpl;->-$$Nest$fgetmContext(Lcom/android/server/AppStateTrackerImpl;)Landroid/content/Context;
-HPLcom/android/server/AppStateTrackerImpl;->-$$Nest$fgetmHandler(Lcom/android/server/AppStateTrackerImpl;)Lcom/android/server/AppStateTrackerImpl$MyHandler;
-HPLcom/android/server/AppStateTrackerImpl;->-$$Nest$fgetmLock(Lcom/android/server/AppStateTrackerImpl;)Ljava/lang/Object;
-HPLcom/android/server/AppStateTrackerImpl;->-$$Nest$fgetmStatLogger(Lcom/android/server/AppStateTrackerImpl;)Lcom/android/internal/util/jobs/StatLogger;
+PLcom/android/server/AppStateTrackerImpl$UidObserver;->onUidActive(I)V
+PLcom/android/server/AppStateTrackerImpl$UidObserver;->onUidCachedChanged(IZ)V
+PLcom/android/server/AppStateTrackerImpl$UidObserver;->onUidGone(IZ)V
+PLcom/android/server/AppStateTrackerImpl$UidObserver;->onUidIdle(IZ)V
HPLcom/android/server/AppStateTrackerImpl;->-$$Nest$mcloneListeners(Lcom/android/server/AppStateTrackerImpl;)[Lcom/android/server/AppStateTrackerImpl$Listener;
-PLcom/android/server/AppStateTrackerImpl;->-$$Nest$mupdateForceAllAppStandbyState(Lcom/android/server/AppStateTrackerImpl;)V
-PLcom/android/server/AppStateTrackerImpl;->-$$Nest$smaddUidToArray(Landroid/util/SparseBooleanArray;I)Z
-HPLcom/android/server/AppStateTrackerImpl;->-$$Nest$smremoveUidFromArray(Landroid/util/SparseBooleanArray;IZ)Z
PLcom/android/server/AppStateTrackerImpl;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
PLcom/android/server/AppStateTrackerImpl;->addBackgroundRestrictedAppListener(Lcom/android/server/AppStateTracker$BackgroundRestrictedAppListener;)V
PLcom/android/server/AppStateTrackerImpl;->addListener(Lcom/android/server/AppStateTrackerImpl$Listener;)V
-HPLcom/android/server/AppStateTrackerImpl;->addUidToArray(Landroid/util/SparseBooleanArray;I)Z
PLcom/android/server/AppStateTrackerImpl;->areAlarmsRestricted(ILjava/lang/String;)Z
-HPLcom/android/server/AppStateTrackerImpl;->areAlarmsRestrictedByBatterySaver(ILjava/lang/String;)Z
-HPLcom/android/server/AppStateTrackerImpl;->areJobsRestricted(ILjava/lang/String;Z)Z
-HPLcom/android/server/AppStateTrackerImpl;->cloneListeners()[Lcom/android/server/AppStateTrackerImpl$Listener;
+PLcom/android/server/AppStateTrackerImpl;->areAlarmsRestrictedByBatterySaver(ILjava/lang/String;)Z
+HPLcom/android/server/AppStateTrackerImpl;->areJobsRestricted(ILjava/lang/String;Z)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
+PLcom/android/server/AppStateTrackerImpl;->dump(Landroid/util/IndentingPrintWriter;)V
HPLcom/android/server/AppStateTrackerImpl;->findForcedAppStandbyUidPackageIndexLocked(ILjava/lang/String;)I
PLcom/android/server/AppStateTrackerImpl;->injectActivityManagerInternal()Landroid/app/ActivityManagerInternal;
PLcom/android/server/AppStateTrackerImpl;->injectAppOpsManager()Landroid/app/AppOpsManager;
@@ -1856,36 +1800,26 @@ PLcom/android/server/AppStateTrackerImpl;->injectIAppOpsService()Lcom/android/in
PLcom/android/server/AppStateTrackerImpl;->injectPowerManagerInternal()Landroid/os/PowerManagerInternal;
PLcom/android/server/AppStateTrackerImpl;->isAnyAppIdUnexempt([I[I)Z
HPLcom/android/server/AppStateTrackerImpl;->isAppBackgroundRestricted(ILjava/lang/String;)Z
-PLcom/android/server/AppStateTrackerImpl;->isForceAllAppsStandbyEnabled()Z
HPLcom/android/server/AppStateTrackerImpl;->isRunAnyInBackgroundAppOpsAllowed(ILjava/lang/String;)Z
-HPLcom/android/server/AppStateTrackerImpl;->isRunAnyRestrictedLocked(ILjava/lang/String;)Z
-HPLcom/android/server/AppStateTrackerImpl;->isUidActive(I)Z
-PLcom/android/server/AppStateTrackerImpl;->isUidActiveSynced(I)Z
-HPLcom/android/server/AppStateTrackerImpl;->isUidPowerSaveUserExempt(I)Z
-HPLcom/android/server/AppStateTrackerImpl;->onSystemServicesReady()V
+PLcom/android/server/AppStateTrackerImpl;->isSmallBatteryDevice()Z
+HPLcom/android/server/AppStateTrackerImpl;->isUidActive(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
+PLcom/android/server/AppStateTrackerImpl;->onSystemServicesReady()V
PLcom/android/server/AppStateTrackerImpl;->refreshForcedAppStandbyUidPackagesLocked()V
-HPLcom/android/server/AppStateTrackerImpl;->removeUidFromArray(Landroid/util/SparseBooleanArray;IZ)Z
-HPLcom/android/server/AppStateTrackerImpl;->setPowerSaveExemptionListAppIds([I[I[I)V
-PLcom/android/server/AppStateTrackerImpl;->toggleForceAllAppsStandbyLocked(Z)V
PLcom/android/server/AppStateTrackerImpl;->updateForceAllAppStandbyState()V
-PLcom/android/server/BatteryService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/BatteryService;)V
-PLcom/android/server/BatteryService$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/BatteryService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/BatteryService;)V
-PLcom/android/server/BatteryService$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/BatteryService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/BatteryService;)V
-PLcom/android/server/BatteryService$$ExternalSyntheticLambda4;->update(Landroid/hardware/health/HealthInfo;)V
-PLcom/android/server/BatteryService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/BatteryService;Landroid/content/Intent;)V
-PLcom/android/server/BatteryService$$ExternalSyntheticLambda5;->run()V
+HPLcom/android/server/BatteryService$$ExternalSyntheticLambda1;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/BatteryService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/BatteryService;I)V
+PLcom/android/server/BatteryService$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/BatteryService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/BatteryService;)V
+PLcom/android/server/BatteryService$$ExternalSyntheticOutline0;->m(ILjava/lang/String;)Landroid/content/Intent;
+PLcom/android/server/BatteryService$$ExternalSyntheticOutline0;->m(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/BatteryService$2;-><init>(Lcom/android/server/BatteryService;Landroid/os/Handler;)V
PLcom/android/server/BatteryService$BatteryPropertiesRegistrar;-><init>(Lcom/android/server/BatteryService;)V
-PLcom/android/server/BatteryService$BatteryPropertiesRegistrar;-><init>(Lcom/android/server/BatteryService;Lcom/android/server/BatteryService$BatteryPropertiesRegistrar-IA;)V
PLcom/android/server/BatteryService$BatteryPropertiesRegistrar;->getProperty(ILandroid/os/BatteryProperty;)I
+PLcom/android/server/BatteryService$BatteryPropertiesRegistrar;->scheduleUpdate()V
PLcom/android/server/BatteryService$BinderService;-><init>(Lcom/android/server/BatteryService;)V
-PLcom/android/server/BatteryService$BinderService;-><init>(Lcom/android/server/BatteryService;Lcom/android/server/BatteryService$BinderService-IA;)V
+PLcom/android/server/BatteryService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/BatteryService$Led;-><init>(Lcom/android/server/BatteryService;Landroid/content/Context;Lcom/android/server/lights/LightsManager;)V
-PLcom/android/server/BatteryService$Led;->updateLightsLocked()V
PLcom/android/server/BatteryService$LocalService;-><init>(Lcom/android/server/BatteryService;)V
-PLcom/android/server/BatteryService$LocalService;-><init>(Lcom/android/server/BatteryService;Lcom/android/server/BatteryService$LocalService-IA;)V
PLcom/android/server/BatteryService$LocalService;->getBatteryFullCharge()I
PLcom/android/server/BatteryService$LocalService;->getBatteryHealth()I
PLcom/android/server/BatteryService$LocalService;->getBatteryLevel()I
@@ -1894,493 +1828,364 @@ PLcom/android/server/BatteryService$LocalService;->getChargingPolicy()I
PLcom/android/server/BatteryService$LocalService;->getPlugType()I
PLcom/android/server/BatteryService$LocalService;->isPowered(I)Z
PLcom/android/server/BatteryService$LocalService;->registerChargingPolicyChangeListener(Landroid/os/BatteryManagerInternal$ChargingPolicyChangeListener;)V
-PLcom/android/server/BatteryService;->$r8$lambda$N8ClakoF19_iwV3c15yk39OjjgA(Lcom/android/server/BatteryService;Landroid/content/Intent;)V
-PLcom/android/server/BatteryService;->$r8$lambda$QITgs02JU2zUgONUrF7rVY3JmZw(Lcom/android/server/BatteryService;)V
-PLcom/android/server/BatteryService;->$r8$lambda$kI548aEkD-5ubzJcKyoIH4vQF6M(Lcom/android/server/BatteryService;)V
-PLcom/android/server/BatteryService;->$r8$lambda$rpwqZVDE4vm803PIdo4dJE92WYc(Lcom/android/server/BatteryService;Landroid/hardware/health/HealthInfo;)V
-PLcom/android/server/BatteryService;->-$$Nest$fgetmBatteryLevelLow(Lcom/android/server/BatteryService;)Z
-PLcom/android/server/BatteryService;->-$$Nest$fgetmChargingPolicyChangeListeners(Lcom/android/server/BatteryService;)Ljava/util/concurrent/CopyOnWriteArraySet;
-PLcom/android/server/BatteryService;->-$$Nest$fgetmHealthInfo(Lcom/android/server/BatteryService;)Landroid/hardware/health/HealthInfo;
-PLcom/android/server/BatteryService;->-$$Nest$fgetmHealthServiceWrapper(Lcom/android/server/BatteryService;)Lcom/android/server/health/HealthServiceWrapper;
-PLcom/android/server/BatteryService;->-$$Nest$fgetmLastChargingPolicy(Lcom/android/server/BatteryService;)I
-PLcom/android/server/BatteryService;->-$$Nest$fgetmLock(Lcom/android/server/BatteryService;)Ljava/lang/Object;
-PLcom/android/server/BatteryService;->-$$Nest$fgetmPlugType(Lcom/android/server/BatteryService;)I
-PLcom/android/server/BatteryService;->-$$Nest$fputmBatteryNearlyFullLevel(Lcom/android/server/BatteryService;I)V
-PLcom/android/server/BatteryService;->-$$Nest$misPoweredLocked(Lcom/android/server/BatteryService;I)Z
PLcom/android/server/BatteryService;-><clinit>()V
-HPLcom/android/server/BatteryService;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/BatteryService;->broadcastBatteryChangedIntent(Landroid/content/Intent;Landroid/os/Bundle;)V
-PLcom/android/server/BatteryService;->getIconLocked(I)I
-PLcom/android/server/BatteryService;->isPoweredLocked(I)Z
-PLcom/android/server/BatteryService;->lambda$sendBatteryChangedIntentLocked$0(Landroid/content/Intent;)V
-PLcom/android/server/BatteryService;->notifyChargingPolicyChanged()V
+PLcom/android/server/BatteryService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/BatteryService;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
+HPLcom/android/server/BatteryService;->isPoweredLocked(I)Z
+PLcom/android/server/BatteryService;->logBatteryStatsLocked()V
PLcom/android/server/BatteryService;->onBootPhase(I)V
PLcom/android/server/BatteryService;->onStart()V
-PLcom/android/server/BatteryService;->plugType(Landroid/hardware/health/HealthInfo;)I
HPLcom/android/server/BatteryService;->processValuesLocked(Z)V
-PLcom/android/server/BatteryService;->registerHealthCallback()V
-HPLcom/android/server/BatteryService;->sendBatteryChangedIntentLocked()V
-HPLcom/android/server/BatteryService;->sendBatteryLevelChangedIntentLocked()V
-PLcom/android/server/BatteryService;->sendEnqueuedBatteryLevelChangedEvents()V
-PLcom/android/server/BatteryService;->shouldSendBatteryLowLocked()Z
-PLcom/android/server/BatteryService;->shouldShutdownLocked()Z
-PLcom/android/server/BatteryService;->shutdownIfNoPowerLocked()V
-PLcom/android/server/BatteryService;->shutdownIfOverTempLocked()V
-PLcom/android/server/BatteryService;->traceBegin(Ljava/lang/String;)V
-PLcom/android/server/BatteryService;->traceEnd()V
HPLcom/android/server/BatteryService;->update(Landroid/hardware/health/HealthInfo;)V
PLcom/android/server/BatteryService;->updateBatteryWarningLevelLocked()V
-PLcom/android/server/BinaryTransparencyService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/BinaryTransparencyService;)V
-PLcom/android/server/BinaryTransparencyService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/BinaryTransparencyService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/BinaryTransparencyService;)V
+PLcom/android/server/BinaryTransparencyService$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/BinaryTransparencyService$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z
+PLcom/android/server/BinaryTransparencyService$$ExternalSyntheticOutline0;->m$1(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/StringBuilder;
+PLcom/android/server/BinaryTransparencyService$$ExternalSyntheticOutline0;->m$1(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/BinaryTransparencyService$$ExternalSyntheticOutline0;->m$1(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/BinaryTransparencyService$$ExternalSyntheticOutline0;->m(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/BinaryTransparencyService$$ExternalSyntheticOutline0;->m(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/BinaryTransparencyService$$ExternalSyntheticOutline0;->m(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/StringBuilder;
+PLcom/android/server/BinaryTransparencyService$$ExternalSyntheticOutline0;->m(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/BinaryTransparencyService$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/BinaryTransparencyService$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;ILjava/io/PrintWriter;Ljava/lang/String;)Ljava/lang/StringBuilder;
+PLcom/android/server/BinaryTransparencyService$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/BinaryTransparencyService$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/io/PrintWriter;Ljava/lang/String;)Ljava/lang/StringBuilder;
+PLcom/android/server/BinaryTransparencyService$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/BinaryTransparencyService$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;ZLjava/io/PrintWriter;)V
+PLcom/android/server/BinaryTransparencyService$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;ZLjava/io/PrintWriter;Ljava/lang/String;)Ljava/lang/StringBuilder;
PLcom/android/server/BinaryTransparencyService$3;-><init>(Lcom/android/server/BinaryTransparencyService;)V
PLcom/android/server/BinaryTransparencyService$BinaryTransparencyServiceImpl;-><init>(Lcom/android/server/BinaryTransparencyService;)V
+PLcom/android/server/BinaryTransparencyService$BinaryTransparencyServiceImpl;->collectAllApexInfo(Z)Ljava/util/List;
+PLcom/android/server/BinaryTransparencyService$BinaryTransparencyServiceImpl;->computeApkContentDigest(Ljava/lang/String;)Ljava/util/Map;
+PLcom/android/server/BinaryTransparencyService$BinaryTransparencyServiceImpl;->computePackageSignerSha256Digests(Landroid/content/pm/SigningInfo;)[Ljava/lang/String;
+PLcom/android/server/BinaryTransparencyService$BinaryTransparencyServiceImpl;->measureApk(Ljava/lang/String;)Lcom/android/server/BinaryTransparencyService$Digest;
+PLcom/android/server/BinaryTransparencyService$BinaryTransparencyServiceImpl;->recordMeasurementsForAllPackages()V
PLcom/android/server/BinaryTransparencyService$BiometricLogger;-><clinit>()V
PLcom/android/server/BinaryTransparencyService$BiometricLogger;-><init>()V
-PLcom/android/server/BinaryTransparencyService$BiometricLogger;->getInstance()Lcom/android/server/BinaryTransparencyService$BiometricLogger;
+PLcom/android/server/BinaryTransparencyService$Digest;-><init>(I[B)V
PLcom/android/server/BinaryTransparencyService$PackageUpdatedReceiver;-><init>(Lcom/android/server/BinaryTransparencyService;)V
-PLcom/android/server/BinaryTransparencyService$PackageUpdatedReceiver;-><init>(Lcom/android/server/BinaryTransparencyService;Lcom/android/server/BinaryTransparencyService$PackageUpdatedReceiver-IA;)V
-PLcom/android/server/BinaryTransparencyService$UpdateMeasurementsJobService;-><clinit>()V
-PLcom/android/server/BinaryTransparencyService$UpdateMeasurementsJobService;->scheduleBinaryMeasurements(Landroid/content/Context;Lcom/android/server/BinaryTransparencyService;)V
-PLcom/android/server/BinaryTransparencyService;->$r8$lambda$e2eFFQ4jadgx-pDFIBv7RiSb2IE(Lcom/android/server/BinaryTransparencyService;)V
+PLcom/android/server/BinaryTransparencyService$PackageUpdatedReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/BinaryTransparencyService$UpdateMeasurementsJobService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/BinaryTransparencyService$UpdateMeasurementsJobService;Landroid/app/job/JobParameters;)V
+PLcom/android/server/BinaryTransparencyService$UpdateMeasurementsJobService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/BinaryTransparencyService$UpdateMeasurementsJobService;-><init>()V
+PLcom/android/server/BinaryTransparencyService$UpdateMeasurementsJobService;->onStartJob(Landroid/app/job/JobParameters;)Z
+PLcom/android/server/BinaryTransparencyService$UpdateMeasurementsJobService;->scheduleBinaryMeasurements(Landroid/content/Context;)V
+PLcom/android/server/BinaryTransparencyService;->-$$Nest$mgetCurrentInstalledApexs(Lcom/android/server/BinaryTransparencyService;)Ljava/util/List;
PLcom/android/server/BinaryTransparencyService;-><clinit>()V
PLcom/android/server/BinaryTransparencyService;-><init>(Landroid/content/Context;)V
PLcom/android/server/BinaryTransparencyService;-><init>(Landroid/content/Context;Lcom/android/server/BinaryTransparencyService$BiometricLogger;)V
PLcom/android/server/BinaryTransparencyService;->collectBiometricProperties()V
-PLcom/android/server/BinaryTransparencyService;->collectBootIntegrityInfo()V
-PLcom/android/server/BinaryTransparencyService;->lambda$collectBootIntegrityInfo$0()V
PLcom/android/server/BinaryTransparencyService;->onBootPhase(I)V
PLcom/android/server/BinaryTransparencyService;->onStart()V
-PLcom/android/server/BinaryTransparencyService;->registerAllPackageUpdateObservers()V
-PLcom/android/server/BinaryTransparencyService;->registerApkAndNonStagedApexUpdateListener()V
-PLcom/android/server/BinaryTransparencyService;->registerStagedApexUpdateObserver()V
-PLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;-><init>()V
-PLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;->createAppidTrustlist(Landroid/content/Context;)Landroid/util/ArraySet;
-HPLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;->getCallingUid()I
HPLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;->resolveWorkSourceUid(I)I
-PLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;->systemReady(Landroid/content/Context;)V
+PLcom/android/server/BinderCallsStatsService$BinderCallsStatsShellCommand;-><init>(Lcom/android/server/BinderCallsStatsService;Ljava/io/PrintWriter;)V
+PLcom/android/server/BinderCallsStatsService$BinderCallsStatsShellCommand;->getOutPrintWriter()Ljava/io/PrintWriter;
+PLcom/android/server/BinderCallsStatsService$BinderCallsStatsShellCommand;->onCommand(Ljava/lang/String;)I
PLcom/android/server/BinderCallsStatsService$Internal;-><init>(Lcom/android/internal/os/BinderCallsStats;)V
PLcom/android/server/BinderCallsStatsService$LifeCycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/BinderCallsStatsService$LifeCycle;->onBootPhase(I)V
PLcom/android/server/BinderCallsStatsService$LifeCycle;->onStart()V
PLcom/android/server/BinderCallsStatsService$SettingsObserver;-><init>(Landroid/content/Context;Lcom/android/internal/os/BinderCallsStats;Lcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;)V
-HPLcom/android/server/BinderCallsStatsService$SettingsObserver;->onChange()V
+PLcom/android/server/BinderCallsStatsService$SettingsObserver;->onChange()V
+PLcom/android/server/BinderCallsStatsService$SettingsObserver;->onChange(ZLandroid/net/Uri;I)V
PLcom/android/server/BinderCallsStatsService;-><init>(Lcom/android/internal/os/BinderCallsStats;Lcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;)V
-PLcom/android/server/BinderCallsStatsService;->systemReady(Landroid/content/Context;)V
+PLcom/android/server/BinderCallsStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/BootReceiver$$ExternalSyntheticOutline0;->m$1(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/BootReceiver$$ExternalSyntheticOutline0;->m(ILjava/lang/String;)Ljava/lang/StringBuilder;
+PLcom/android/server/BootReceiver$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;Ljava/lang/String;JLjava/lang/String;)V
PLcom/android/server/BootReceiver$1;-><init>(Lcom/android/server/BootReceiver;Landroid/content/Context;)V
PLcom/android/server/BootReceiver$1;->run()V
PLcom/android/server/BootReceiver;->-$$Nest$mlogBootEvents(Lcom/android/server/BootReceiver;Landroid/content/Context;)V
-PLcom/android/server/BootReceiver;->-$$Nest$mremoveOldUpdatePackages(Lcom/android/server/BootReceiver;Landroid/content/Context;)V
PLcom/android/server/BootReceiver;-><clinit>()V
PLcom/android/server/BootReceiver;-><init>()V
-HPLcom/android/server/BootReceiver;->addAuditErrorsToDropBox(Landroid/os/DropBoxManager;Ljava/util/HashMap;Ljava/lang/String;ILjava/lang/String;)V
-PLcom/android/server/BootReceiver;->addAugmentedProtoToDropbox(Ljava/io/File;Landroid/os/DropBoxManager;Lcom/android/server/am/DropboxRateLimiter$RateLimitResult;)V
-PLcom/android/server/BootReceiver;->addFileToDropBox(Landroid/os/DropBoxManager;Ljava/util/HashMap;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
PLcom/android/server/BootReceiver;->addFileWithFootersToDropBox(Landroid/os/DropBoxManager;Ljava/util/HashMap;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
-PLcom/android/server/BootReceiver;->addFsckErrorsToDropBoxAndLogFsStat(Landroid/os/DropBoxManager;Ljava/util/HashMap;Ljava/lang/String;ILjava/lang/String;)V
-PLcom/android/server/BootReceiver;->addLastkToDropBox(Landroid/os/DropBoxManager;Ljava/util/HashMap;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
-PLcom/android/server/BootReceiver;->addTextToDropBox(Landroid/os/DropBoxManager;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
-HPLcom/android/server/BootReceiver;->addTombstoneToDropBox(Landroid/content/Context;Ljava/io/File;ZLjava/lang/String;Ljava/util/concurrent/locks/ReentrantLock;)V
+PLcom/android/server/BootReceiver;->addLastkToDropBox(Landroid/os/DropBoxManager;Ljava/util/HashMap;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
PLcom/android/server/BootReceiver;->fixFsckFsStat(Ljava/lang/String;I[Ljava/lang/String;II)I
PLcom/android/server/BootReceiver;->getBootHeadersToLogAndUpdate()Ljava/lang/String;
-HPLcom/android/server/BootReceiver;->getCurrentBootHeaders()Ljava/lang/String;
-PLcom/android/server/BootReceiver;->getPreviousBootHeaders()Ljava/lang/String;
-HPLcom/android/server/BootReceiver;->handleFsckFsStat(Ljava/util/regex/Matcher;[Ljava/lang/String;II)V
-PLcom/android/server/BootReceiver;->initDropboxRateLimiter()V
-PLcom/android/server/BootReceiver;->logBootEvents(Landroid/content/Context;)V
-PLcom/android/server/BootReceiver;->logFsMountTime()V
-PLcom/android/server/BootReceiver;->logFsShutdownTime()V
-PLcom/android/server/BootReceiver;->logSystemServerShutdownTimeMetrics()V
PLcom/android/server/BootReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HPLcom/android/server/BootReceiver;->readTimestamps()Ljava/util/HashMap;
+PLcom/android/server/BootReceiver;->readTimestamps()Ljava/util/HashMap;
PLcom/android/server/BootReceiver;->recordFileTimestamp(Ljava/io/File;Ljava/util/HashMap;)Z
-PLcom/android/server/BootReceiver;->removeOldUpdatePackages(Landroid/content/Context;)V
-HPLcom/android/server/BootReceiver;->writeTimestamps(Ljava/util/HashMap;)V
+PLcom/android/server/BootReceiver;->writeTimestamps(Ljava/util/HashMap;)V
PLcom/android/server/BundleUtils;->clone(Landroid/os/Bundle;)Landroid/os/Bundle;
HSPLcom/android/server/BundleUtils;->isEmpty(Landroid/os/Bundle;)Z
PLcom/android/server/CachedDeviceStateService$1;-><init>(Lcom/android/server/CachedDeviceStateService;)V
-PLcom/android/server/CachedDeviceStateService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/CachedDeviceStateService;->-$$Nest$fgetmDeviceState(Lcom/android/server/CachedDeviceStateService;)Lcom/android/internal/os/CachedDeviceState;
+HPLcom/android/server/CachedDeviceStateService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/CachedDeviceStateService;-><init>(Landroid/content/Context;)V
PLcom/android/server/CachedDeviceStateService;->onBootPhase(I)V
PLcom/android/server/CachedDeviceStateService;->onStart()V
-PLcom/android/server/CachedDeviceStateService;->queryIsCharging()Z
-PLcom/android/server/CachedDeviceStateService;->queryScreenInteractive(Landroid/content/Context;)Z
-PLcom/android/server/CertBlacklister$BlacklistObserver;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentResolver;)V
-PLcom/android/server/CertBlacklister;-><clinit>()V
-PLcom/android/server/CertBlacklister;-><init>(Landroid/content/Context;)V
-PLcom/android/server/CertBlacklister;->buildPubkeyObserver(Landroid/content/ContentResolver;)Lcom/android/server/CertBlacklister$BlacklistObserver;
-PLcom/android/server/CertBlacklister;->buildSerialObserver(Landroid/content/ContentResolver;)Lcom/android/server/CertBlacklister$BlacklistObserver;
-PLcom/android/server/CertBlacklister;->registerObservers(Landroid/content/ContentResolver;)V
-PLcom/android/server/CommunalProfileInitializer;-><clinit>()V
+PLcom/android/server/CertBlocklister$BlocklistObserver$1;-><init>(Lcom/android/server/CertBlocklister$BlocklistObserver;)V
+PLcom/android/server/CertBlocklister$BlocklistObserver$1;->run()V
+PLcom/android/server/CertBlocklister$BlocklistObserver;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentResolver;)V
+PLcom/android/server/CertBlocklister$BlocklistObserver;->onChange(Z)V
+PLcom/android/server/CertBlocklister;-><clinit>()V
+PLcom/android/server/CertBlocklister;-><init>(Landroid/content/Context;)V
PLcom/android/server/CommunalProfileInitializer;->removeCommunalProfileIfPresent()V
+PLcom/android/server/ConnectivityServiceInitializerB$$ExternalSyntheticOutline0;->m(Ljava/lang/String;)Landroid/content/IntentFilter;
+PLcom/android/server/ConnectivityServiceInitializerB;-><init>(Landroid/content/Context;)V
+PLcom/android/server/ConnectivityServiceInitializerB;->onBootPhase(I)V
+PLcom/android/server/ConnectivityServiceInitializerB;->onStart()V
PLcom/android/server/ContextHubSystemService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/ContextHubSystemService;Landroid/content/Context;)V
PLcom/android/server/ContextHubSystemService$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/ContextHubSystemService;->$r8$lambda$rh2pjqKKW3BPmYQWkE44zlrrbEc(Lcom/android/server/ContextHubSystemService;Landroid/content/Context;)V
PLcom/android/server/ContextHubSystemService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/ContextHubSystemService;->lambda$new$0(Landroid/content/Context;)V
PLcom/android/server/ContextHubSystemService;->onBootPhase(I)V
PLcom/android/server/ContextHubSystemService;->onStart()V
PLcom/android/server/CountryDetectorService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/CountryDetectorService;)V
-PLcom/android/server/CountryDetectorService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/CountryDetectorService;Landroid/location/CountryListener;)V
+PLcom/android/server/CountryDetectorService$$ExternalSyntheticLambda0;->onCountryDetected(Landroid/location/Country;)V
+PLcom/android/server/CountryDetectorService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/CountryDetectorService;Ljava/lang/Object;I)V
PLcom/android/server/CountryDetectorService$$ExternalSyntheticLambda1;->run()V
PLcom/android/server/CountryDetectorService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/CountryDetectorService;)V
PLcom/android/server/CountryDetectorService$$ExternalSyntheticLambda2;->run()V
PLcom/android/server/CountryDetectorService$Receiver;-><init>(Lcom/android/server/CountryDetectorService;Landroid/location/ICountryListener;)V
PLcom/android/server/CountryDetectorService$Receiver;->binderDied()V
-PLcom/android/server/CountryDetectorService;->$r8$lambda$HYkxybtKcKj3KOzS426QA588kgg(Lcom/android/server/CountryDetectorService;Landroid/location/CountryListener;)V
-PLcom/android/server/CountryDetectorService;->$r8$lambda$w1hnAvR_BRhLPQmveSOw4E6Hh5M(Lcom/android/server/CountryDetectorService;)V
-PLcom/android/server/CountryDetectorService;->-$$Nest$mremoveListener(Lcom/android/server/CountryDetectorService;Landroid/os/IBinder;)V
PLcom/android/server/CountryDetectorService;-><init>(Landroid/content/Context;)V
PLcom/android/server/CountryDetectorService;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
PLcom/android/server/CountryDetectorService;->addCountryListener(Landroid/location/ICountryListener;)V
-PLcom/android/server/CountryDetectorService;->addListener(Landroid/location/ICountryListener;)V
PLcom/android/server/CountryDetectorService;->detectCountry()Landroid/location/Country;
+PLcom/android/server/CountryDetectorService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/CountryDetectorService;->initialize()V
-PLcom/android/server/CountryDetectorService;->lambda$setCountryListener$3(Landroid/location/CountryListener;)V
-PLcom/android/server/CountryDetectorService;->lambda$systemRunning$0()V
-PLcom/android/server/CountryDetectorService;->loadCustomCountryDetectorIfAvailable(Ljava/lang/String;)Lcom/android/server/location/countrydetector/CountryDetectorBase;
PLcom/android/server/CountryDetectorService;->removeListener(Landroid/os/IBinder;)V
-PLcom/android/server/CountryDetectorService;->setCountryListener(Landroid/location/CountryListener;)V
-PLcom/android/server/CountryDetectorService;->systemRunning()V
PLcom/android/server/DeviceIdleController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$$ExternalSyntheticLambda0;->onAlarm()V
PLcom/android/server/DeviceIdleController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/DeviceIdleController;)V
PLcom/android/server/DeviceIdleController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/DeviceIdleController;)V
PLcom/android/server/DeviceIdleController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/DeviceIdleController;)V
-PLcom/android/server/DeviceIdleController$$ExternalSyntheticLambda6;-><init>()V
+PLcom/android/server/DeviceIdleController$$ExternalSyntheticLambda4;-><init>(I)V
PLcom/android/server/DeviceIdleController$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/DeviceIdleController;II)V
PLcom/android/server/DeviceIdleController$$ExternalSyntheticLambda7;->test(Ljava/lang/Object;)Z
PLcom/android/server/DeviceIdleController$1;-><init>(Lcom/android/server/DeviceIdleController;)V
HPLcom/android/server/DeviceIdleController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/DeviceIdleController$2;-><init>(Lcom/android/server/DeviceIdleController;)V
PLcom/android/server/DeviceIdleController$3;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$3;->onAlarm()V
PLcom/android/server/DeviceIdleController$4;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$4;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
PLcom/android/server/DeviceIdleController$5;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/DeviceIdleController$6;-><init>(Lcom/android/server/DeviceIdleController;)V
PLcom/android/server/DeviceIdleController$7;-><init>(Lcom/android/server/DeviceIdleController;)V
PLcom/android/server/DeviceIdleController$8;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$8;->onAwakeStateChanged(Z)V
PLcom/android/server/DeviceIdleController$8;->onKeyguardStateChanged(Z)V
PLcom/android/server/DeviceIdleController$BinderService;-><init>(Lcom/android/server/DeviceIdleController;)V
-PLcom/android/server/DeviceIdleController$BinderService;-><init>(Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController$BinderService-IA;)V
-PLcom/android/server/DeviceIdleController$BinderService;->addPowerSaveTempWhitelistApp(Ljava/lang/String;JIILjava/lang/String;)V
+HPLcom/android/server/DeviceIdleController$BinderService;->addPowerSaveTempWhitelistApp(Ljava/lang/String;JIILjava/lang/String;)V
+PLcom/android/server/DeviceIdleController$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/DeviceIdleController$BinderService;->getAppIdWhitelist()[I
PLcom/android/server/DeviceIdleController$BinderService;->getAppIdWhitelistExceptIdle()[I
PLcom/android/server/DeviceIdleController$BinderService;->getFullPowerWhitelistExceptIdle()[Ljava/lang/String;
-HPLcom/android/server/DeviceIdleController$Constants;-><init>(Lcom/android/server/DeviceIdleController;Landroid/os/Handler;Landroid/content/ContentResolver;)V
-PLcom/android/server/DeviceIdleController$Constants;->getTimeout(JJ)J
-HPLcom/android/server/DeviceIdleController$Constants;->initDefault()V
+PLcom/android/server/DeviceIdleController$BinderService;->isPowerSaveWhitelistApp(Ljava/lang/String;)Z
+PLcom/android/server/DeviceIdleController$Constants$$ExternalSyntheticOutline0;->m(JLjava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/DeviceIdleController$Constants$$ExternalSyntheticOutline0;->m(Ljava/io/PrintWriter;ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/DeviceIdleController$Constants;-><init>(Lcom/android/server/DeviceIdleController;Landroid/os/Handler;Landroid/content/ContentResolver;)V
+PLcom/android/server/DeviceIdleController$Constants;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/DeviceIdleController$Constants;->updateConstantsLocked()V
PLcom/android/server/DeviceIdleController$Constants;->updateSettingsConstantLocked()V
PLcom/android/server/DeviceIdleController$EmergencyCallListener;-><init>(Lcom/android/server/DeviceIdleController;)V
-PLcom/android/server/DeviceIdleController$EmergencyCallListener;-><init>(Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController$EmergencyCallListener-IA;)V
+PLcom/android/server/DeviceIdleController$EmergencyCallListener;->onCallStateChanged(I)V
PLcom/android/server/DeviceIdleController$Injector;-><init>(Landroid/content/Context;)V
-PLcom/android/server/DeviceIdleController$Injector;->getAlarmManager()Landroid/app/AlarmManager;
-PLcom/android/server/DeviceIdleController$Injector;->getAnyMotionDetector(Landroid/os/Handler;Landroid/hardware/SensorManager;Lcom/android/server/AnyMotionDetector$DeviceIdleCallback;F)Lcom/android/server/AnyMotionDetector;
-PLcom/android/server/DeviceIdleController$Injector;->getAppStateTracker(Landroid/content/Context;Landroid/os/Looper;)Lcom/android/server/AppStateTrackerImpl;
-PLcom/android/server/DeviceIdleController$Injector;->getConnectivityManager()Landroid/net/ConnectivityManager;
-PLcom/android/server/DeviceIdleController$Injector;->getConstants(Lcom/android/server/DeviceIdleController;Landroid/os/Handler;Landroid/content/ContentResolver;)Lcom/android/server/DeviceIdleController$Constants;
-PLcom/android/server/DeviceIdleController$Injector;->getConstraintController(Landroid/os/Handler;Lcom/android/server/DeviceIdleInternal;)Lcom/android/server/deviceidle/ConstraintController;
-PLcom/android/server/DeviceIdleController$Injector;->getHandler(Lcom/android/server/DeviceIdleController;)Lcom/android/server/DeviceIdleController$MyHandler;
-PLcom/android/server/DeviceIdleController$Injector;->getMotionSensor()Landroid/hardware/Sensor;
-PLcom/android/server/DeviceIdleController$Injector;->getPowerManager()Landroid/os/PowerManager;
-PLcom/android/server/DeviceIdleController$Injector;->getSensorManager()Landroid/hardware/SensorManager;
-PLcom/android/server/DeviceIdleController$Injector;->getTelephonyManager()Landroid/telephony/TelephonyManager;
-PLcom/android/server/DeviceIdleController$Injector;->isLocationPrefetchEnabled()Z
-PLcom/android/server/DeviceIdleController$Injector;->useMotionSensor()Z
PLcom/android/server/DeviceIdleController$LocalPowerAllowlistService;-><init>(Lcom/android/server/DeviceIdleController;)V
-PLcom/android/server/DeviceIdleController$LocalPowerAllowlistService;-><init>(Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController$LocalPowerAllowlistService-IA;)V
PLcom/android/server/DeviceIdleController$LocalPowerAllowlistService;->registerTempAllowlistChangeListener(Lcom/android/server/PowerAllowlistInternal$TempAllowlistChangeListener;)V
PLcom/android/server/DeviceIdleController$LocalService;-><init>(Lcom/android/server/DeviceIdleController;)V
-PLcom/android/server/DeviceIdleController$LocalService;-><init>(Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController$LocalService-IA;)V
-HPLcom/android/server/DeviceIdleController$LocalService;->addPowerSaveTempWhitelistAppDirect(IJIZILjava/lang/String;I)V
-PLcom/android/server/DeviceIdleController$LocalService;->getFullPowerWhitelistExceptIdle()[Ljava/lang/String;
+PLcom/android/server/DeviceIdleController$LocalService;->addPowerSaveTempWhitelistApp(ILjava/lang/String;JIIZILjava/lang/String;)V
+PLcom/android/server/DeviceIdleController$LocalService;->addPowerSaveTempWhitelistApp(ILjava/lang/String;JIZILjava/lang/String;)V
+PLcom/android/server/DeviceIdleController$LocalService;->addPowerSaveTempWhitelistAppDirect(IJIZILjava/lang/String;I)V
PLcom/android/server/DeviceIdleController$LocalService;->getNotificationAllowlistDuration()J
-HPLcom/android/server/DeviceIdleController$LocalService;->getPowerSaveTempWhitelistAppIds()[I
+PLcom/android/server/DeviceIdleController$LocalService;->getPowerSaveTempWhitelistAppIds()[I
PLcom/android/server/DeviceIdleController$LocalService;->getPowerSaveWhitelistUserAppIds()[I
-HPLcom/android/server/DeviceIdleController$LocalService;->getTempAllowListType(II)I
+PLcom/android/server/DeviceIdleController$LocalService;->getTempAllowListType(II)I
PLcom/android/server/DeviceIdleController$LocalService;->isAppOnWhitelist(I)Z
PLcom/android/server/DeviceIdleController$LocalService;->setAlarmsActive(Z)V
PLcom/android/server/DeviceIdleController$LocalService;->setJobsActive(Z)V
PLcom/android/server/DeviceIdleController$ModeManagerOffBodyStateConsumer;-><init>(Lcom/android/server/DeviceIdleController;)V
-PLcom/android/server/DeviceIdleController$ModeManagerOffBodyStateConsumer;->accept(Ljava/lang/Boolean;)V
PLcom/android/server/DeviceIdleController$ModeManagerOffBodyStateConsumer;->accept(Ljava/lang/Object;)V
-PLcom/android/server/DeviceIdleController$ModeManagerOffBodyStateConsumer;->onModeManagerOffBodyChangedLocked()V
PLcom/android/server/DeviceIdleController$ModeManagerQuickDozeRequestConsumer;-><init>(Lcom/android/server/DeviceIdleController;)V
-PLcom/android/server/DeviceIdleController$ModeManagerQuickDozeRequestConsumer;->accept(Ljava/lang/Boolean;)V
-PLcom/android/server/DeviceIdleController$ModeManagerQuickDozeRequestConsumer;->accept(Ljava/lang/Object;)V
PLcom/android/server/DeviceIdleController$MotionListener;-><init>(Lcom/android/server/DeviceIdleController;)V
PLcom/android/server/DeviceIdleController$MyHandler;-><init>(Lcom/android/server/DeviceIdleController;Landroid/os/Looper;)V
-HPLcom/android/server/DeviceIdleController$MyHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/DeviceIdleController;->$r8$lambda$aNkRWECW9WeDkUwaGny7VNmedfc(Lcom/android/server/DeviceIdleController;IILjava/lang/String;)Z
-PLcom/android/server/DeviceIdleController;->-$$Nest$fgetmConstants(Lcom/android/server/DeviceIdleController;)Lcom/android/server/DeviceIdleController$Constants;
-PLcom/android/server/DeviceIdleController;->-$$Nest$fgetmForceModeManagerOffBodyState(Lcom/android/server/DeviceIdleController;)Z
-PLcom/android/server/DeviceIdleController;->-$$Nest$fgetmForceModeManagerQuickDozeRequest(Lcom/android/server/DeviceIdleController;)Z
-PLcom/android/server/DeviceIdleController;->-$$Nest$fgetmIsOffBody(Lcom/android/server/DeviceIdleController;)Z
-PLcom/android/server/DeviceIdleController;->-$$Nest$fgetmModeManagerRequestedQuickDoze(Lcom/android/server/DeviceIdleController;)Z
-HPLcom/android/server/DeviceIdleController;->-$$Nest$fgetmNetworkPolicyManagerInternal(Lcom/android/server/DeviceIdleController;)Lcom/android/server/net/NetworkPolicyManagerInternal;
-HPLcom/android/server/DeviceIdleController;->-$$Nest$fgetmTempAllowlistChangeListeners(Lcom/android/server/DeviceIdleController;)Landroid/util/ArraySet;
-PLcom/android/server/DeviceIdleController;->-$$Nest$fputmIsOffBody(Lcom/android/server/DeviceIdleController;Z)V
-PLcom/android/server/DeviceIdleController;->-$$Nest$mgetFullPowerWhitelistExceptIdleInternal(Lcom/android/server/DeviceIdleController;II)[Ljava/lang/String;
-PLcom/android/server/DeviceIdleController;->-$$Nest$mgetFullPowerWhitelistInternalUnchecked(Lcom/android/server/DeviceIdleController;)[Ljava/lang/String;
-HPLcom/android/server/DeviceIdleController;->-$$Nest$mgetTempAllowListType(Lcom/android/server/DeviceIdleController;II)I
+HPLcom/android/server/DeviceIdleController$MyHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/net/INetworkPolicyManager;Lcom/android/server/net/NetworkPolicyManagerService;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/PowerAllowlistInternal$TempAllowlistChangeListener;Lcom/android/server/job/controllers/QuotaController$TempAllowlistTracker;
PLcom/android/server/DeviceIdleController;->-$$Nest$mmaybeBecomeActiveOnModeManagerEventsLocked(Lcom/android/server/DeviceIdleController;)V
-PLcom/android/server/DeviceIdleController;->-$$Nest$mregisterTempAllowlistChangeListener(Lcom/android/server/DeviceIdleController;Lcom/android/server/PowerAllowlistInternal$TempAllowlistChangeListener;)V
PLcom/android/server/DeviceIdleController;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/DeviceIdleController;-><init>(Landroid/content/Context;Lcom/android/server/DeviceIdleController$Injector;)V
-HPLcom/android/server/DeviceIdleController;->addPowerSaveTempAllowlistAppChecked(Ljava/lang/String;JIILjava/lang/String;)V
-PLcom/android/server/DeviceIdleController;->addPowerSaveTempAllowlistAppInternal(ILjava/lang/String;JIIZILjava/lang/String;)V
-HPLcom/android/server/DeviceIdleController;->addPowerSaveTempWhitelistAppDirectInternal(IIJIZILjava/lang/String;)V
-PLcom/android/server/DeviceIdleController;->becomeActiveLocked(Ljava/lang/String;I)V
-PLcom/android/server/DeviceIdleController;->becomeActiveLocked(Ljava/lang/String;IJZ)V
+PLcom/android/server/DeviceIdleController;-><init>(Landroid/content/Context;Lcom/android/server/DeviceIdleController$Injector;)V
+PLcom/android/server/DeviceIdleController;->addEvent(ILjava/lang/String;)V
+HPLcom/android/server/DeviceIdleController;->addPowerSaveTempAllowlistAppChecked(IILjava/lang/String;Ljava/lang/String;J)V+]Landroid/app/IActivityManager;Lcom/android/server/am/ActivityManagerService;]Landroid/content/Context;Landroid/app/ContextImpl;
+HPLcom/android/server/DeviceIdleController;->addPowerSaveTempAllowlistAppInternal(ILjava/lang/String;JIIZILjava/lang/String;)V
+HPLcom/android/server/DeviceIdleController;->addPowerSaveTempWhitelistAppDirectInternal(IJIZILjava/lang/String;I)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;
+PLcom/android/server/DeviceIdleController;->becomeActiveLocked(ILjava/lang/String;)V
+HPLcom/android/server/DeviceIdleController;->becomeActiveLocked(Ljava/lang/String;IJZ)V
+HPLcom/android/server/DeviceIdleController;->becomeInactiveIfAppropriateLocked()V
PLcom/android/server/DeviceIdleController;->buildAppIdArray(Landroid/util/ArrayMap;Landroid/util/ArrayMap;Landroid/util/SparseBooleanArray;)[I
-HPLcom/android/server/DeviceIdleController;->checkTempAppWhitelistTimeout(I)V
+PLcom/android/server/DeviceIdleController;->cancelAlarmLocked()V
+PLcom/android/server/DeviceIdleController;->cancelLocatingLocked()V
+PLcom/android/server/DeviceIdleController;->cancelSensingTimeoutAlarmLocked()V
+PLcom/android/server/DeviceIdleController;->decActiveIdleOps()V
+PLcom/android/server/DeviceIdleController;->dumpTempWhitelistScheduleLocked(Ljava/io/PrintWriter;Z)V
PLcom/android/server/DeviceIdleController;->exitMaintenanceEarlyIfNeededLocked()V
-HPLcom/android/server/DeviceIdleController;->getAppIdTempWhitelistInternal()[I
-PLcom/android/server/DeviceIdleController;->getAppIdWhitelistExceptIdleInternal()[I
-PLcom/android/server/DeviceIdleController;->getAppIdWhitelistInternal()[I
-PLcom/android/server/DeviceIdleController;->getFullPowerWhitelistExceptIdleInternal(II)[Ljava/lang/String;
-PLcom/android/server/DeviceIdleController;->getFullPowerWhitelistInternalUnchecked()[Ljava/lang/String;
-PLcom/android/server/DeviceIdleController;->getPowerSaveWhitelistUserAppIds()[I
-PLcom/android/server/DeviceIdleController;->getSystemDir()Ljava/io/File;
-PLcom/android/server/DeviceIdleController;->getTempAllowListType(II)I
-PLcom/android/server/DeviceIdleController;->isAppOnWhitelistInternal(I)Z
+PLcom/android/server/DeviceIdleController;->isUpcomingAlarmClock()Z
PLcom/android/server/DeviceIdleController;->keyguardShowingLocked(Z)V
-PLcom/android/server/DeviceIdleController;->lambda$getFullPowerWhitelistExceptIdleInternal$13(IILjava/lang/String;)Z
-PLcom/android/server/DeviceIdleController;->maybeBecomeActiveOnModeManagerEventsLocked()V
+PLcom/android/server/DeviceIdleController;->lightStateToString(I)Ljava/lang/String;
+PLcom/android/server/DeviceIdleController;->maybeStopMonitoringMotionLocked()V
PLcom/android/server/DeviceIdleController;->moveToLightStateLocked(ILjava/lang/String;)V
PLcom/android/server/DeviceIdleController;->moveToStateLocked(ILjava/lang/String;)V
HPLcom/android/server/DeviceIdleController;->onAppRemovedFromTempWhitelistLocked(ILjava/lang/String;)V
-HPLcom/android/server/DeviceIdleController;->onBootPhase(I)V
-HPLcom/android/server/DeviceIdleController;->onStart()V
+PLcom/android/server/DeviceIdleController;->onBootPhase(I)V
+PLcom/android/server/DeviceIdleController;->onStart()V
HPLcom/android/server/DeviceIdleController;->passWhiteListsToForceAppStandbyTrackerLocked()V
-HPLcom/android/server/DeviceIdleController;->postTempActiveTimeoutMessage(IJ)V
-PLcom/android/server/DeviceIdleController;->readConfigFileLocked()V
-PLcom/android/server/DeviceIdleController;->registerTempAllowlistChangeListener(Lcom/android/server/PowerAllowlistInternal$TempAllowlistChangeListener;)V
-HPLcom/android/server/DeviceIdleController;->reportTempWhitelistChangedLocked(IZ)V
-PLcom/android/server/DeviceIdleController;->setAlarmsActive(Z)V
-PLcom/android/server/DeviceIdleController;->setJobsActive(Z)V
+PLcom/android/server/DeviceIdleController;->resetIdleManagementLocked()V
+PLcom/android/server/DeviceIdleController;->scheduleAlarmLocked(J)V
+PLcom/android/server/DeviceIdleController;->scheduleLightAlarmLocked(JJ)V
+PLcom/android/server/DeviceIdleController;->scheduleReportActiveLocked(Ljava/lang/String;I)V
+PLcom/android/server/DeviceIdleController;->startMonitoringMotionLocked()V
+PLcom/android/server/DeviceIdleController;->stateToString(I)Ljava/lang/String;
+PLcom/android/server/DeviceIdleController;->stepIdleStateLocked(Ljava/lang/String;)V
+PLcom/android/server/DeviceIdleController;->stepLightIdleStateLocked(Ljava/lang/String;)V
PLcom/android/server/DeviceIdleController;->updateActiveConstraintsLocked()V
-PLcom/android/server/DeviceIdleController;->updateChargingLocked(Z)V
PLcom/android/server/DeviceIdleController;->updateConnectivityState(Landroid/content/Intent;)V
PLcom/android/server/DeviceIdleController;->updateInteractivityLocked()V
PLcom/android/server/DeviceIdleController;->updateQuickDozeFlagLocked()V
PLcom/android/server/DeviceIdleController;->updateQuickDozeFlagLocked(Z)V
-HPLcom/android/server/DeviceIdleController;->updateTempWhitelistAppIdsLocked(IZJIILjava/lang/String;I)V
+HPLcom/android/server/DeviceIdleController;->updateTempWhitelistAppIdsLocked(IJIZILjava/lang/String;I)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;
PLcom/android/server/DeviceIdleController;->updateWhitelistAppIdsLocked()V
PLcom/android/server/DiskStatsService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/DisplayThread;-><init>()V
+PLcom/android/server/DiskStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/DiskStatsService;->reportFreeSpace(Ljava/io/File;Ljava/lang/String;Ljava/io/PrintWriter;Landroid/util/proto/ProtoOutputStream;I)V
HSPLcom/android/server/DisplayThread;->ensureThreadLocked()V
HSPLcom/android/server/DisplayThread;->get()Lcom/android/server/DisplayThread;
HSPLcom/android/server/DisplayThread;->getHandler()Landroid/os/Handler;
-PLcom/android/server/DockObserver$1;-><init>(Lcom/android/server/DockObserver;Z)V
+PLcom/android/server/DockObserver$1;-><init>(Lcom/android/server/DockObserver;)V
PLcom/android/server/DockObserver$2;-><init>(Lcom/android/server/DockObserver;)V
PLcom/android/server/DockObserver$BinderService;-><init>(Lcom/android/server/DockObserver;)V
-PLcom/android/server/DockObserver$BinderService;-><init>(Lcom/android/server/DockObserver;Lcom/android/server/DockObserver$BinderService-IA;)V
-PLcom/android/server/DockObserver$DeviceProvisionedObserver;-><init>(Lcom/android/server/DockObserver;Landroid/os/Handler;)V
+PLcom/android/server/DockObserver$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/DockObserver$DeviceProvisionedObserver;-><init>(Lcom/android/server/DockObserver;Lcom/android/server/DockObserver$1;)V
PLcom/android/server/DockObserver$DeviceProvisionedObserver;->isDeviceProvisioned()Z
-PLcom/android/server/DockObserver$DeviceProvisionedObserver;->onSystemReady()V
+PLcom/android/server/DockObserver$DeviceProvisionedObserver;->onChange(ZLandroid/net/Uri;)V
PLcom/android/server/DockObserver$DeviceProvisionedObserver;->updateRegistration()V
PLcom/android/server/DockObserver;-><init>(Landroid/content/Context;)V
-PLcom/android/server/DockObserver;->loadExtconStateConfigs(Landroid/content/Context;)Ljava/util/List;
PLcom/android/server/DockObserver;->onBootPhase(I)V
PLcom/android/server/DockObserver;->onStart()V
-PLcom/android/server/DockObserver;->updateIfDockedLocked()V
-PLcom/android/server/DropBoxManagerInternal;-><init>()V
PLcom/android/server/DropBoxManagerService$1$1;-><init>(Lcom/android/server/DropBoxManagerService$1;)V
PLcom/android/server/DropBoxManagerService$1$1;->run()V
PLcom/android/server/DropBoxManagerService$1;-><init>(Lcom/android/server/DropBoxManagerService;)V
PLcom/android/server/DropBoxManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/DropBoxManagerService$2;-><init>(Lcom/android/server/DropBoxManagerService;)V
-HPLcom/android/server/DropBoxManagerService$2;->addData(Ljava/lang/String;[BI)V
+PLcom/android/server/DropBoxManagerService$2;->addData(Ljava/lang/String;[BI)V
PLcom/android/server/DropBoxManagerService$2;->addFile(Ljava/lang/String;Landroid/os/ParcelFileDescriptor;I)V
-HPLcom/android/server/DropBoxManagerService$2;->getNextEntryWithAttribution(Ljava/lang/String;JLjava/lang/String;Ljava/lang/String;)Landroid/os/DropBoxManager$Entry;
-HPLcom/android/server/DropBoxManagerService$2;->isTagEnabled(Ljava/lang/String;)Z
+PLcom/android/server/DropBoxManagerService$2;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/DropBoxManagerService$2;->getNextEntryWithAttribution(Ljava/lang/String;JLjava/lang/String;Ljava/lang/String;)Landroid/os/DropBoxManager$Entry;
+PLcom/android/server/DropBoxManagerService$2;->isTagEnabled(Ljava/lang/String;)Z
PLcom/android/server/DropBoxManagerService$3;-><init>(Lcom/android/server/DropBoxManagerService;Landroid/os/Handler;)V
PLcom/android/server/DropBoxManagerService$3;->onChange(Z)V
PLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;-><init>(Lcom/android/server/DropBoxManagerService;Landroid/os/Looper;)V
-HPLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->createBroadcastOptions(Landroid/content/Intent;)Landroid/os/Bundle;
-HPLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->createIntent(Ljava/lang/String;J)Landroid/content/Intent;
-HPLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->handleMessage(Landroid/os/Message;)V
-HPLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->maybeDeferBroadcast(Ljava/lang/String;J)V
-HPLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->prepareAndSendBroadcast(Landroid/content/Intent;Landroid/os/Bundle;)V
-PLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->sendBroadcast(Ljava/lang/String;J)V
+PLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->maybeDeferBroadcast(JLjava/lang/String;)V
+PLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->prepareAndSendBroadcast(Landroid/content/Intent;Z)V
+PLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->setBroadcastOptionsForDeferral(Landroid/app/BroadcastOptions;Ljava/lang/String;)V
PLcom/android/server/DropBoxManagerService$DropBoxManagerInternalImpl;-><init>(Lcom/android/server/DropBoxManagerService;)V
-PLcom/android/server/DropBoxManagerService$DropBoxManagerInternalImpl;-><init>(Lcom/android/server/DropBoxManagerService;Lcom/android/server/DropBoxManagerService$DropBoxManagerInternalImpl-IA;)V
-HPLcom/android/server/DropBoxManagerService$EntryFile;-><init>(J)V
-HPLcom/android/server/DropBoxManagerService$EntryFile;-><init>(Ljava/io/File;I)V
-HPLcom/android/server/DropBoxManagerService$EntryFile;-><init>(Ljava/io/File;Ljava/io/File;Ljava/lang/String;JII)V
-HPLcom/android/server/DropBoxManagerService$EntryFile;->compareTo(Lcom/android/server/DropBoxManagerService$EntryFile;)I
-HPLcom/android/server/DropBoxManagerService$EntryFile;->compareTo(Ljava/lang/Object;)I
-HPLcom/android/server/DropBoxManagerService$EntryFile;->getExtension()Ljava/lang/String;
-HPLcom/android/server/DropBoxManagerService$EntryFile;->getFile(Ljava/io/File;)Ljava/io/File;
-HPLcom/android/server/DropBoxManagerService$EntryFile;->getFilename()Ljava/lang/String;
-PLcom/android/server/DropBoxManagerService$EntryFile;->hasFile()Z
+PLcom/android/server/DropBoxManagerService$EntryFile;-><init>(J)V
+PLcom/android/server/DropBoxManagerService$EntryFile;-><init>(Ljava/io/File;I)V
+PLcom/android/server/DropBoxManagerService$EntryFile;-><init>(Ljava/io/File;Ljava/io/File;Ljava/lang/String;JII)V
+PLcom/android/server/DropBoxManagerService$EntryFile;->compareTo(Ljava/lang/Object;)I
+PLcom/android/server/DropBoxManagerService$EntryFile;->getFile(Ljava/io/File;)Ljava/io/File;
PLcom/android/server/DropBoxManagerService$FileList;-><init>()V
-PLcom/android/server/DropBoxManagerService$FileList;-><init>(Lcom/android/server/DropBoxManagerService$FileList-IA;)V
-HPLcom/android/server/DropBoxManagerService$SimpleEntrySource;-><init>(Ljava/io/InputStream;JZ)V
-HPLcom/android/server/DropBoxManagerService$SimpleEntrySource;->close()V
+PLcom/android/server/DropBoxManagerService$SimpleEntrySource;-><init>(JLjava/io/InputStream;Z)V
+PLcom/android/server/DropBoxManagerService$SimpleEntrySource;->close()V
PLcom/android/server/DropBoxManagerService$SimpleEntrySource;->length()J
-HPLcom/android/server/DropBoxManagerService$SimpleEntrySource;->writeTo(Ljava/io/FileDescriptor;)V
-PLcom/android/server/DropBoxManagerService;->-$$Nest$fgetmBooted(Lcom/android/server/DropBoxManagerService;)Z
-PLcom/android/server/DropBoxManagerService;->-$$Nest$fgetmLowPriorityRateLimitPeriod(Lcom/android/server/DropBoxManagerService;)J
-PLcom/android/server/DropBoxManagerService;->-$$Nest$fgetmReceiver(Lcom/android/server/DropBoxManagerService;)Landroid/content/BroadcastReceiver;
-PLcom/android/server/DropBoxManagerService;->-$$Nest$fputmCachedQuotaUptimeMillis(Lcom/android/server/DropBoxManagerService;J)V
-PLcom/android/server/DropBoxManagerService;->-$$Nest$minit(Lcom/android/server/DropBoxManagerService;)V
-PLcom/android/server/DropBoxManagerService;->-$$Nest$mtrimToFit(Lcom/android/server/DropBoxManagerService;)J
+PLcom/android/server/DropBoxManagerService$SimpleEntrySource;->writeTo(Ljava/io/FileDescriptor;)V
PLcom/android/server/DropBoxManagerService;-><clinit>()V
PLcom/android/server/DropBoxManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/DropBoxManagerService;-><init>(Landroid/content/Context;Ljava/io/File;Landroid/os/Looper;)V
-HPLcom/android/server/DropBoxManagerService;->addData(Ljava/lang/String;[BI)V
-HPLcom/android/server/DropBoxManagerService;->addEntry(Ljava/lang/String;Lcom/android/server/DropBoxManagerInternal$EntrySource;I)V
-HPLcom/android/server/DropBoxManagerService;->addEntry(Ljava/lang/String;Ljava/io/InputStream;JI)V
-PLcom/android/server/DropBoxManagerService;->addFile(Ljava/lang/String;Landroid/os/ParcelFileDescriptor;I)V
-HPLcom/android/server/DropBoxManagerService;->checkPermission(ILjava/lang/String;Ljava/lang/String;)Z
-HPLcom/android/server/DropBoxManagerService;->createEntry(Ljava/io/File;Ljava/lang/String;I)J
-HPLcom/android/server/DropBoxManagerService;->enrollEntry(Lcom/android/server/DropBoxManagerService$EntryFile;)V
+PLcom/android/server/DropBoxManagerService;->addEntry(Ljava/lang/String;Lcom/android/server/DropBoxManagerInternal$EntrySource;I)V
+PLcom/android/server/DropBoxManagerService;->addEntry(Ljava/lang/String;Ljava/io/InputStream;JI)V
+PLcom/android/server/DropBoxManagerService;->checkPermission(ILjava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/DropBoxManagerService;->createEntry(Ljava/io/File;Ljava/lang/String;I)J
+PLcom/android/server/DropBoxManagerService;->enrollEntry(Lcom/android/server/DropBoxManagerService$EntryFile;)V
PLcom/android/server/DropBoxManagerService;->getLowPriorityResourceConfigs()V
-HPLcom/android/server/DropBoxManagerService;->getNextEntry(Ljava/lang/String;JLjava/lang/String;Ljava/lang/String;)Landroid/os/DropBoxManager$Entry;
-HPLcom/android/server/DropBoxManagerService;->init()V
+PLcom/android/server/DropBoxManagerService;->init$1()V
HPLcom/android/server/DropBoxManagerService;->isTagEnabled(Ljava/lang/String;)Z
+PLcom/android/server/DropBoxManagerService;->matchEntry(Lcom/android/server/DropBoxManagerService$EntryFile;Ljava/util/ArrayList;)Z
PLcom/android/server/DropBoxManagerService;->onBootPhase(I)V
PLcom/android/server/DropBoxManagerService;->onStart()V
HPLcom/android/server/DropBoxManagerService;->trimToFit()J
+HSPLcom/android/server/DynamicSystemService$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/DynamicSystemService;-><init>(Landroid/content/Context;)V
PLcom/android/server/EntropyMixer$1;-><init>(Lcom/android/server/EntropyMixer;Landroid/os/Looper;)V
+PLcom/android/server/EntropyMixer$1;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/EntropyMixer$2;-><init>(Lcom/android/server/EntropyMixer;)V
+PLcom/android/server/EntropyMixer$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/EntropyMixer;-><clinit>()V
PLcom/android/server/EntropyMixer;-><init>(Landroid/content/Context;)V
PLcom/android/server/EntropyMixer;-><init>(Landroid/content/Context;Ljava/io/File;Ljava/io/File;Ljava/io/File;)V
PLcom/android/server/EntropyMixer;->getDeviceSpecificInformation()[B
-PLcom/android/server/EntropyMixer;->getSystemDir()Ljava/io/File;
-PLcom/android/server/EntropyMixer;->loadInitialEntropy()V
-PLcom/android/server/EntropyMixer;->longToBytes(J)[B
PLcom/android/server/EntropyMixer;->readSeedFile()[B
-PLcom/android/server/EntropyMixer;->scheduleSeedUpdater()V
PLcom/android/server/EntropyMixer;->updateSeedFile()V
-PLcom/android/server/EntropyMixer;->writeNewSeed([B)V
-PLcom/android/server/EventLogTags;->writeDeviceIdle(ILjava/lang/String;)V
-PLcom/android/server/EventLogTags;->writeDeviceIdleLight(ILjava/lang/String;)V
-HPLcom/android/server/EventLogTags;->writeNotificationCancelAll(IILjava/lang/String;IIIILjava/lang/String;)V
-PLcom/android/server/EventLogTags;->writeNotificationEnqueue(IILjava/lang/String;ILjava/lang/String;ILjava/lang/String;I)V
-PLcom/android/server/EventLogTags;->writePmCriticalInfo(Ljava/lang/String;)V
-HSPLcom/android/server/EventLogTags;->writePmSnapshotRebuild(II)V
-HSPLcom/android/server/EventLogTags;->writeRescueNote(IIJ)V
-PLcom/android/server/EventLogTags;->writeStorageState(Ljava/lang/String;IIJJ)V
-PLcom/android/server/EventLogTags;->writeStreamDevicesChanged(III)V
-PLcom/android/server/EventLogTags;->writeVolumeChanged(IIIILjava/lang/String;)V
-PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/ExplicitHealthCheckController;Ljava/util/Set;)V
-PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/ExplicitHealthCheckController;Ljava/util/List;Ljava/util/Set;)V
-PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
-PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda2;-><init>(Ljava/util/function/Consumer;)V
-PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda2;->onResult(Landroid/os/Bundle;)V
-PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/ExplicitHealthCheckController;)V
-PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/ExplicitHealthCheckController;)V
-PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda5;-><init>(Ljava/util/function/Consumer;)V
-PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda5;->onResult(Landroid/os/Bundle;)V
-PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/ExplicitHealthCheckController;)V
-PLcom/android/server/ExplicitHealthCheckController$1;-><init>(Lcom/android/server/ExplicitHealthCheckController;)V
-PLcom/android/server/ExplicitHealthCheckController$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-PLcom/android/server/ExplicitHealthCheckController;->$r8$lambda$IIsfdI4E19kYetXH_5L-g69gD5U(Lcom/android/server/ExplicitHealthCheckController;Ljava/util/Set;Ljava/util/List;)V
-PLcom/android/server/ExplicitHealthCheckController;->$r8$lambda$aL6X4oZMCjln5Vk0sguqqu-vOzk(Ljava/util/function/Consumer;Landroid/os/Bundle;)V
-PLcom/android/server/ExplicitHealthCheckController;->$r8$lambda$eUe0MojcRAKKWZDwi3yGDDE4Q6Y(Lcom/android/server/ExplicitHealthCheckController;Ljava/util/List;Ljava/util/Set;Ljava/util/List;)V
-PLcom/android/server/ExplicitHealthCheckController;->$r8$lambda$mGwCwsEZmtVNkWk1gYFRO7gIRQk(Ljava/util/function/Consumer;Landroid/os/Bundle;)V
-PLcom/android/server/ExplicitHealthCheckController;->-$$Nest$minitState(Lcom/android/server/ExplicitHealthCheckController;Landroid/os/IBinder;)V
-HSPLcom/android/server/ExplicitHealthCheckController;-><init>(Landroid/content/Context;)V
-PLcom/android/server/ExplicitHealthCheckController;->actOnDifference(Ljava/util/Collection;Ljava/util/Collection;Ljava/util/function/Consumer;)V
-PLcom/android/server/ExplicitHealthCheckController;->bindService()V
-PLcom/android/server/ExplicitHealthCheckController;->getRequestedPackages(Ljava/util/function/Consumer;)V
-PLcom/android/server/ExplicitHealthCheckController;->getServiceComponentNameLocked()Landroid/content/ComponentName;
-PLcom/android/server/ExplicitHealthCheckController;->getServiceInfoLocked()Landroid/content/pm/ServiceInfo;
-PLcom/android/server/ExplicitHealthCheckController;->getSupportedPackages(Ljava/util/function/Consumer;)V
-PLcom/android/server/ExplicitHealthCheckController;->initState(Landroid/os/IBinder;)V
-PLcom/android/server/ExplicitHealthCheckController;->lambda$getRequestedPackages$5(Ljava/util/function/Consumer;Landroid/os/Bundle;)V
-PLcom/android/server/ExplicitHealthCheckController;->lambda$getSupportedPackages$4(Ljava/util/function/Consumer;Landroid/os/Bundle;)V
-PLcom/android/server/ExplicitHealthCheckController;->lambda$syncRequests$2(Ljava/util/List;Ljava/util/Set;Ljava/util/List;)V
-PLcom/android/server/ExplicitHealthCheckController;->lambda$syncRequests$3(Ljava/util/Set;Ljava/util/List;)V
-PLcom/android/server/ExplicitHealthCheckController;->prepareServiceLocked(Ljava/lang/String;)Z
-PLcom/android/server/ExplicitHealthCheckController;->setCallbacks(Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/lang/Runnable;)V
-PLcom/android/server/ExplicitHealthCheckController;->setEnabled(Z)V
-PLcom/android/server/ExplicitHealthCheckController;->syncRequests(Ljava/util/Set;)V
-PLcom/android/server/ExplicitHealthCheckController;->unbindService()V
+PLcom/android/server/EventLogTags;->writeNotificationAdjusted(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/ExtconUEventObserver$ExtconInfo$$ExternalSyntheticLambda0;->accept(Ljava/io/File;Ljava/lang/String;)Z
PLcom/android/server/ExtconUEventObserver$ExtconInfo;-><clinit>()V
+PLcom/android/server/ExtconUEventObserver$ExtconInfo;-><init>(Ljava/lang/String;)V
PLcom/android/server/ExtconUEventObserver$ExtconInfo;->getExtconInfoForTypes([Ljava/lang/String;)Ljava/util/List;
PLcom/android/server/ExtconUEventObserver$ExtconInfo;->initExtconInfos()V
PLcom/android/server/ExtconUEventObserver;-><init>()V
-HSPLcom/android/server/FgThread;-><init>()V
-HSPLcom/android/server/FgThread;->ensureThreadLocked()V
-HSPLcom/android/server/FgThread;->get()Lcom/android/server/FgThread;
-PLcom/android/server/FgThread;->getExecutor()Ljava/util/concurrent/Executor;
-HSPLcom/android/server/FgThread;->getHandler()Landroid/os/Handler;
PLcom/android/server/GestureLauncherService$1;-><init>(Lcom/android/server/GestureLauncherService;)V
PLcom/android/server/GestureLauncherService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/GestureLauncherService$2;-><init>(Lcom/android/server/GestureLauncherService;Landroid/os/Handler;)V
+PLcom/android/server/GestureLauncherService$2;->onChange(ZLandroid/net/Uri;I)V
PLcom/android/server/GestureLauncherService$CameraLiftTriggerEventListener;-><init>(Lcom/android/server/GestureLauncherService;)V
-PLcom/android/server/GestureLauncherService$CameraLiftTriggerEventListener;-><init>(Lcom/android/server/GestureLauncherService;Lcom/android/server/GestureLauncherService$CameraLiftTriggerEventListener-IA;)V
PLcom/android/server/GestureLauncherService$GestureEventListener;-><init>(Lcom/android/server/GestureLauncherService;)V
-PLcom/android/server/GestureLauncherService$GestureEventListener;-><init>(Lcom/android/server/GestureLauncherService;Lcom/android/server/GestureLauncherService$GestureEventListener-IA;)V
-PLcom/android/server/GestureLauncherService;->-$$Nest$fgetmContext(Lcom/android/server/GestureLauncherService;)Landroid/content/Context;
-PLcom/android/server/GestureLauncherService;->-$$Nest$fgetmSettingObserver(Lcom/android/server/GestureLauncherService;)Landroid/database/ContentObserver;
-PLcom/android/server/GestureLauncherService;->-$$Nest$fputmUserId(Lcom/android/server/GestureLauncherService;I)V
-PLcom/android/server/GestureLauncherService;->-$$Nest$mregisterContentObservers(Lcom/android/server/GestureLauncherService;)V
-PLcom/android/server/GestureLauncherService;->-$$Nest$mupdateCameraRegistered(Lcom/android/server/GestureLauncherService;)V
+PLcom/android/server/GestureLauncherService$GestureLauncherEvent;-><clinit>()V
+PLcom/android/server/GestureLauncherService$GestureLauncherEvent;-><init>(IILjava/lang/String;)V
+PLcom/android/server/GestureLauncherService$GestureLauncherEvent;->getId()I
+PLcom/android/server/GestureLauncherService;-><clinit>()V
PLcom/android/server/GestureLauncherService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/GestureLauncherService;-><init>(Landroid/content/Context;Lcom/android/internal/logging/MetricsLogger;Lcom/android/internal/logging/UiEventLogger;)V
+PLcom/android/server/GestureLauncherService;-><init>(Landroid/content/Context;Lcom/android/internal/logging/MetricsLogger;Landroid/service/quickaccesswallet/QuickAccessWalletClient;Lcom/android/internal/logging/UiEventLogger;)V
PLcom/android/server/GestureLauncherService;->getEmergencyGesturePowerButtonCooldownPeriodMs(Landroid/content/Context;I)I
-PLcom/android/server/GestureLauncherService;->isCameraDoubleTapPowerEnabled(Landroid/content/res/Resources;)Z
-PLcom/android/server/GestureLauncherService;->isCameraDoubleTapPowerSettingEnabled(Landroid/content/Context;I)Z
-PLcom/android/server/GestureLauncherService;->isCameraLaunchEnabled(Landroid/content/res/Resources;)Z
-PLcom/android/server/GestureLauncherService;->isCameraLaunchSettingEnabled(Landroid/content/Context;I)Z
-PLcom/android/server/GestureLauncherService;->isCameraLiftTriggerEnabled(Landroid/content/res/Resources;)Z
-PLcom/android/server/GestureLauncherService;->isCameraLiftTriggerSettingEnabled(Landroid/content/Context;I)Z
-PLcom/android/server/GestureLauncherService;->isDefaultEmergencyGestureEnabled(Landroid/content/res/Resources;)Z
-PLcom/android/server/GestureLauncherService;->isEmergencyGestureEnabled(Landroid/content/res/Resources;)Z
+PLcom/android/server/GestureLauncherService;->handleCameraGesture(ZI)Z
PLcom/android/server/GestureLauncherService;->isEmergencyGestureSettingEnabled(Landroid/content/Context;I)Z
PLcom/android/server/GestureLauncherService;->isGestureLauncherEnabled(Landroid/content/res/Resources;)Z
+PLcom/android/server/GestureLauncherService;->isUserSetupComplete()Z
PLcom/android/server/GestureLauncherService;->onBootPhase(I)V
PLcom/android/server/GestureLauncherService;->onStart()V
-HPLcom/android/server/GestureLauncherService;->registerContentObservers()V
-PLcom/android/server/GestureLauncherService;->unregisterCameraLaunchGesture()V
-PLcom/android/server/GestureLauncherService;->unregisterCameraLiftTrigger()V
+PLcom/android/server/GestureLauncherService;->registerContentObservers()V
PLcom/android/server/GestureLauncherService;->updateCameraDoubleTapPowerEnabled()V
PLcom/android/server/GestureLauncherService;->updateCameraRegistered()V
PLcom/android/server/GestureLauncherService;->updateEmergencyGestureEnabled()V
PLcom/android/server/GestureLauncherService;->updateEmergencyGesturePowerButtonCooldownPeriodMs()V
+PLcom/android/server/GestureLauncherService;->updateWalletDoubleTapPowerEnabled()V
+PLcom/android/server/HardwarePropertiesManagerService$$ExternalSyntheticOutline0;->m(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/StringBuilder;
PLcom/android/server/HardwarePropertiesManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/HsumBootUserInitializer;-><clinit>()V
+PLcom/android/server/HardwarePropertiesManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/HardwarePropertiesManagerService;->dumpTempValues(ILjava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/HardwarePropertiesManagerService;->dumpTempValues(Ljava/lang/String;Ljava/io/PrintWriter;ILjava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/HardwarePropertiesManagerService;->enforceHardwarePropertiesRetrievalAllowed(Ljava/lang/String;)V
+PLcom/android/server/HardwarePropertiesManagerService;->getDeviceTemperatures(Ljava/lang/String;II)[F
PLcom/android/server/HsumBootUserInitializer;->createInstance(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/pm/PackageManagerService;Landroid/content/ContentResolver;Z)Lcom/android/server/HsumBootUserInitializer;
-HSPLcom/android/server/IntentResolver$1;-><init>()V
HPLcom/android/server/IntentResolver$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/IntentResolver$IteratorWrapper;-><init>(Lcom/android/server/IntentResolver;Ljava/util/Iterator;)V
+PLcom/android/server/IntentResolver$IteratorWrapper;->next()Ljava/lang/Object;
HSPLcom/android/server/IntentResolver;-><clinit>()V
HSPLcom/android/server/IntentResolver;-><init>()V
-HSPLcom/android/server/IntentResolver;->addFilter(Landroid/util/ArrayMap;Ljava/lang/String;Ljava/lang/Object;)V
-HSPLcom/android/server/IntentResolver;->addFilter(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Ljava/lang/Object;)V
-HPLcom/android/server/IntentResolver;->buildResolveList(Lcom/android/server/pm/Computer;Landroid/content/Intent;Landroid/util/FastImmutableArraySet;ZZLjava/lang/String;Ljava/lang/String;[Ljava/lang/Object;Ljava/util/List;IJ)V
+HSPLcom/android/server/IntentResolver;->addFilter(Landroid/util/ArrayMap;Ljava/lang/String;Ljava/lang/Object;)V+]Lcom/android/server/IntentResolver;megamorphic_types
+HSPLcom/android/server/IntentResolver;->addFilter(Ljava/lang/Object;)V+]Lcom/android/server/IntentResolver;megamorphic_types]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
+PLcom/android/server/IntentResolver;->allowFilterResult(Ljava/util/List;Ljava/lang/Object;)Z
+HPLcom/android/server/IntentResolver;->buildResolveList(Lcom/android/server/pm/Computer;Landroid/content/Intent;Landroid/util/FastImmutableArraySet;ZZLjava/lang/String;Ljava/lang/String;[Ljava/lang/Object;Ljava/util/List;IJ)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/IntentResolver;Lcom/android/server/am/BroadcastController$1;,Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/IntentResolver;->collectFilters([Ljava/lang/Object;Landroid/content/IntentFilter;)Ljava/util/ArrayList;
-HSPLcom/android/server/IntentResolver;->copyFrom(Lcom/android/server/IntentResolver;)V
-HSPLcom/android/server/IntentResolver;->copyInto(Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V
-HSPLcom/android/server/IntentResolver;->copyInto(Landroid/util/ArraySet;Landroid/util/ArraySet;)V
-HPLcom/android/server/IntentResolver;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)Z
-HPLcom/android/server/IntentResolver;->dumpMap(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/util/ArrayMap;Ljava/lang/String;ZZ)Z
-PLcom/android/server/IntentResolver;->filterResults(Ljava/util/List;)V
-HSPLcom/android/server/IntentResolver;->filterSet()Ljava/util/Set;
-HSPLcom/android/server/IntentResolver;->findFilters(Landroid/content/IntentFilter;)Ljava/util/ArrayList;
-HPLcom/android/server/IntentResolver;->getFastIntentCategories(Landroid/content/Intent;)Landroid/util/FastImmutableArraySet;
-HPLcom/android/server/IntentResolver;->intentMatchesFilter(Landroid/content/IntentFilter;Landroid/content/Intent;Ljava/lang/String;)Z
+HSPLcom/android/server/IntentResolver;->copyFrom(Lcom/android/server/IntentResolver;)V+]Lcom/android/server/IntentResolver;Lcom/android/server/pm/PreferredIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;
+HSPLcom/android/server/IntentResolver;->copyInto(Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V+]Lcom/android/server/IntentResolver;Lcom/android/server/pm/PreferredIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;
+PLcom/android/server/IntentResolver;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)Z
+PLcom/android/server/IntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/Object;)V
+HPLcom/android/server/IntentResolver;->dumpMap(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/util/ArrayMap;Ljava/lang/String;ZZ)Z+]Landroid/content/IntentFilter;Landroid/content/IntentFilter;]Lcom/android/server/IntentResolver;Lcom/android/server/am/BroadcastController$1;,Lcom/android/server/pm/PreferredIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;]Ljava/io/PrintWriter;Lcom/android/internal/util/FastPrintWriter;
+PLcom/android/server/IntentResolver;->filterIterator()Lcom/android/server/IntentResolver$IteratorWrapper;
+HPLcom/android/server/IntentResolver;->filterResults(Ljava/util/List;)V
PLcom/android/server/IntentResolver;->isFilterStopped(Lcom/android/server/pm/Computer;Ljava/lang/Object;I)Z
PLcom/android/server/IntentResolver;->newResult(Lcom/android/server/pm/Computer;Ljava/lang/Object;IIJ)Ljava/lang/Object;
-HPLcom/android/server/IntentResolver;->queryIntent(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Landroid/content/Intent;Ljava/lang/String;ZI)Ljava/util/List;
-HPLcom/android/server/IntentResolver;->queryIntent(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Landroid/content/Intent;Ljava/lang/String;ZIJ)Ljava/util/List;
-HPLcom/android/server/IntentResolver;->queryIntentFromList(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;ZLjava/util/ArrayList;IJ)Ljava/util/List;
-HSPLcom/android/server/IntentResolver;->register_intent_filter(Ljava/lang/Object;Ljava/util/Iterator;Landroid/util/ArrayMap;Ljava/lang/String;)I
-HSPLcom/android/server/IntentResolver;->register_mime_types(Ljava/lang/Object;Ljava/lang/String;)I
-HPLcom/android/server/IntentResolver;->removeFilter(Ljava/lang/Object;)V
-HPLcom/android/server/IntentResolver;->removeFilterInternal(Ljava/lang/Object;)V
-HPLcom/android/server/IntentResolver;->remove_all_objects(Landroid/util/ArrayMap;Ljava/lang/String;Ljava/lang/Object;)V
-PLcom/android/server/IntentResolver;->snapshot(Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/IntentResolver;->queryIntent(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Landroid/content/Intent;Ljava/lang/String;ZIJ)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/IntentResolver;megamorphic_types]Ljava/util/Set;Landroid/util/ArraySet;
+HPLcom/android/server/IntentResolver;->queryIntentFromList(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;ZLjava/util/ArrayList;IJ)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/IntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Set;Landroid/util/ArraySet;
+HSPLcom/android/server/IntentResolver;->register_intent_filter(Ljava/lang/Object;Ljava/util/Iterator;Landroid/util/ArrayMap;)I+]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/ArrayList$Itr;
+PLcom/android/server/IntentResolver;->removeFilter(Ljava/lang/Object;)V
+HPLcom/android/server/IntentResolver;->removeFilterInternal(Ljava/lang/Object;)V+]Lcom/android/server/IntentResolver;Lcom/android/server/am/BroadcastController$1;,Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;,Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
+HPLcom/android/server/IntentResolver;->remove_all_objects(Landroid/util/ArrayMap;Ljava/lang/String;Ljava/lang/Object;)V+]Lcom/android/server/IntentResolver;megamorphic_types
+HPLcom/android/server/IntentResolver;->snapshot(Ljava/lang/Object;)Ljava/lang/Object;
HPLcom/android/server/IntentResolver;->sortResults(Ljava/util/List;)V
-HPLcom/android/server/IntentResolver;->unregister_intent_filter(Ljava/lang/Object;Ljava/util/Iterator;Landroid/util/ArrayMap;Ljava/lang/String;)I
-HPLcom/android/server/IntentResolver;->unregister_mime_types(Ljava/lang/Object;Ljava/lang/String;)I
-HSPLcom/android/server/IoThread;-><init>()V
+HPLcom/android/server/IntentResolver;->unregister_intent_filter(Ljava/lang/Object;Ljava/util/Iterator;Landroid/util/ArrayMap;)I+]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/ArrayList$Itr;
+PLcom/android/server/IntentResolver;->writeProtoMap(Landroid/util/proto/ProtoOutputStream;JLandroid/util/ArrayMap;)V
HSPLcom/android/server/IoThread;->ensureThreadLocked()V
HSPLcom/android/server/IoThread;->get()Lcom/android/server/IoThread;
PLcom/android/server/IoThread;->getExecutor()Ljava/util/concurrent/Executor;
@@ -2389,520 +2194,278 @@ HSPLcom/android/server/LocalManagerRegistry;-><clinit>()V
HSPLcom/android/server/LocalManagerRegistry;->addManager(Ljava/lang/Class;Ljava/lang/Object;)V
HSPLcom/android/server/LocalManagerRegistry;->getManager(Ljava/lang/Class;)Ljava/lang/Object;
HSPLcom/android/server/LocalManagerRegistry;->getManagerOrThrow(Ljava/lang/Class;)Ljava/lang/Object;
-HSPLcom/android/server/LockGuard$LockInfo;-><init>()V
-HSPLcom/android/server/LockGuard$LockInfo;-><init>(Lcom/android/server/LockGuard$LockInfo-IA;)V
HSPLcom/android/server/LockGuard;-><clinit>()V
HSPLcom/android/server/LockGuard;->findOrCreateLockInfo(Ljava/lang/Object;)Lcom/android/server/LockGuard$LockInfo;
-HPLcom/android/server/LockGuard;->guard(I)V
-HSPLcom/android/server/LockGuard;->installLock(Ljava/lang/Object;I)Ljava/lang/Object;
-HSPLcom/android/server/LockGuard;->installLock(Ljava/lang/Object;IZ)Ljava/lang/Object;
-HSPLcom/android/server/LockGuard;->installNewLock(I)Ljava/lang/Object;
-HSPLcom/android/server/LockGuard;->installNewLock(IZ)Ljava/lang/Object;
+HSPLcom/android/server/LockGuard;->installLock(Lcom/android/server/pm/PackageManagerTracedLock;)V
+HSPLcom/android/server/LockGuard;->installLock(Ljava/lang/Object;IZ)V
HSPLcom/android/server/LockGuard;->lockToString(I)Ljava/lang/String;
-PLcom/android/server/LogMteState$1;-><init>()V
PLcom/android/server/LogMteState;->register(Landroid/content/Context;)V
+PLcom/android/server/LooperStatsService$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/LooperStatsService$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/LooperStatsService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/LooperStatsService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/LooperStatsService$Lifecycle;->onStart()V
PLcom/android/server/LooperStatsService$SettingsObserver;-><init>(Lcom/android/server/LooperStatsService;)V
PLcom/android/server/LooperStatsService;->-$$Nest$minitFromSettings(Lcom/android/server/LooperStatsService;)V
PLcom/android/server/LooperStatsService;-><init>(Landroid/content/Context;Lcom/android/internal/os/LooperStats;)V
-PLcom/android/server/LooperStatsService;-><init>(Landroid/content/Context;Lcom/android/internal/os/LooperStats;Lcom/android/server/LooperStatsService-IA;)V
-PLcom/android/server/LooperStatsService;->initFromSettings()V
+PLcom/android/server/LooperStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/LooperStatsService;->setEnabled(Z)V
-PLcom/android/server/LooperStatsService;->setIgnoreBatteryStatus(Z)V
-PLcom/android/server/LooperStatsService;->setSamplingInterval(I)V
-PLcom/android/server/LooperStatsService;->setTrackScreenInteractive(Z)V
PLcom/android/server/MmsServiceBroker$1;-><init>(Lcom/android/server/MmsServiceBroker;)V
PLcom/android/server/MmsServiceBroker$2;-><init>(Lcom/android/server/MmsServiceBroker;)V
PLcom/android/server/MmsServiceBroker$3;-><init>(Lcom/android/server/MmsServiceBroker;)V
PLcom/android/server/MmsServiceBroker$BinderService;-><init>(Lcom/android/server/MmsServiceBroker;)V
-PLcom/android/server/MmsServiceBroker$BinderService;-><init>(Lcom/android/server/MmsServiceBroker;Lcom/android/server/MmsServiceBroker$BinderService-IA;)V
PLcom/android/server/MmsServiceBroker;-><clinit>()V
PLcom/android/server/MmsServiceBroker;-><init>(Landroid/content/Context;)V
PLcom/android/server/MmsServiceBroker;->onStart()V
-PLcom/android/server/MmsServiceBroker;->systemRunning()V
PLcom/android/server/MountServiceIdler;-><clinit>()V
PLcom/android/server/MountServiceIdler;->offsetFromTodayMidnight(II)Ljava/util/Calendar;
PLcom/android/server/MountServiceIdler;->scheduleIdlePass(Landroid/content/Context;)V
PLcom/android/server/NetworkScoreService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/NetworkScoreService;)V
-PLcom/android/server/NetworkScoreService$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/NetworkScoreService$1;-><init>(Lcom/android/server/NetworkScoreService;)V
+PLcom/android/server/NetworkScoreService$1;-><init>(Lcom/android/server/NetworkScoreService;I)V
PLcom/android/server/NetworkScoreService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/NetworkScoreService$2;-><init>(Lcom/android/server/NetworkScoreService;)V
-PLcom/android/server/NetworkScoreService$3;-><init>(Lcom/android/server/NetworkScoreService;Landroid/os/Handler;)V
-PLcom/android/server/NetworkScoreService$4;-><init>(Lcom/android/server/NetworkScoreService;)V
-PLcom/android/server/NetworkScoreService$DispatchingContentObserver;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
-PLcom/android/server/NetworkScoreService$DispatchingContentObserver;->observe(Landroid/net/Uri;I)V
+PLcom/android/server/NetworkScoreService$3;-><init>(Lcom/android/server/NetworkScoreService;Lcom/android/server/NetworkScoreService$ServiceHandler;)V
+PLcom/android/server/NetworkScoreService$DispatchingContentObserver;-><init>(Landroid/content/Context;Lcom/android/server/NetworkScoreService$ServiceHandler;)V
+PLcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer$$ExternalSyntheticOutline0;->m(ILjava/lang/String;Ljava/lang/String;)V
PLcom/android/server/NetworkScoreService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/NetworkScoreService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/NetworkScoreService$Lifecycle;->onStart()V
PLcom/android/server/NetworkScoreService$ServiceHandler;-><init>(Lcom/android/server/NetworkScoreService;Landroid/os/Looper;)V
-PLcom/android/server/NetworkScoreService;->-$$Nest$sfgetDBG()Z
PLcom/android/server/NetworkScoreService;-><clinit>()V
-PLcom/android/server/NetworkScoreService;-><init>(Landroid/content/Context;)V
PLcom/android/server/NetworkScoreService;-><init>(Landroid/content/Context;Lcom/android/server/NetworkScorerAppManager;Ljava/util/function/Function;Landroid/os/Looper;)V
-PLcom/android/server/NetworkScoreService;->bindToScoringServiceIfNeeded()V
PLcom/android/server/NetworkScoreService;->bindToScoringServiceIfNeeded(Landroid/net/NetworkScorerAppData;)V
PLcom/android/server/NetworkScoreService;->clearInternal()V
-HPLcom/android/server/NetworkScoreService;->enforceSystemOrHasScoreNetworks()V
-HPLcom/android/server/NetworkScoreService;->getActiveScorerPackage()Ljava/lang/String;
-PLcom/android/server/NetworkScoreService;->getScoreCacheLists()Ljava/util/Collection;
+PLcom/android/server/NetworkScoreService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/NetworkScoreService;->getActiveScorerPackage()Ljava/lang/String;
PLcom/android/server/NetworkScoreService;->onUserUnlocked(I)V
PLcom/android/server/NetworkScoreService;->refreshBinding()V
-PLcom/android/server/NetworkScoreService;->registerPackageMonitorIfNeeded()V
-PLcom/android/server/NetworkScoreService;->registerRecommendationSettingsObserver()V
PLcom/android/server/NetworkScoreService;->sendCacheUpdateCallback(Ljava/util/function/BiConsumer;Ljava/util/Collection;)V
-PLcom/android/server/NetworkScoreService;->systemReady()V
-PLcom/android/server/NetworkScoreService;->systemRunning()V
PLcom/android/server/NetworkScoreService;->unbindFromScoringServiceIfNeeded()V
-PLcom/android/server/NetworkScorerAppManager$SettingsFacade;-><init>()V
-HPLcom/android/server/NetworkScorerAppManager$SettingsFacade;->getInt(Landroid/content/Context;Ljava/lang/String;I)I
-HPLcom/android/server/NetworkScorerAppManager$SettingsFacade;->getString(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/NetworkScorerAppManager$SettingsFacade;->putInt(Landroid/content/Context;Ljava/lang/String;I)Z
PLcom/android/server/NetworkScorerAppManager;-><clinit>()V
-PLcom/android/server/NetworkScorerAppManager;-><init>(Landroid/content/Context;)V
PLcom/android/server/NetworkScorerAppManager;-><init>(Landroid/content/Context;Lcom/android/server/NetworkScorerAppManager$SettingsFacade;)V
HPLcom/android/server/NetworkScorerAppManager;->getActiveScorer()Landroid/net/NetworkScorerAppData;
-PLcom/android/server/NetworkScorerAppManager;->getDefaultPackageSetting()Ljava/lang/String;
-HPLcom/android/server/NetworkScorerAppManager;->getNetworkRecommendationsEnabledSetting()I
-HPLcom/android/server/NetworkScorerAppManager;->getNetworkRecommendationsPackage()Ljava/lang/String;
-HPLcom/android/server/NetworkScorerAppManager;->getScorer(Ljava/lang/String;)Landroid/net/NetworkScorerAppData;
+PLcom/android/server/NetworkScorerAppManager;->getScorer(Ljava/lang/String;)Landroid/net/NetworkScorerAppData;
PLcom/android/server/NetworkScorerAppManager;->migrateNetworkScorerAppSettingIfNeeded()V
PLcom/android/server/NetworkScorerAppManager;->setNetworkRecommendationsEnabledSetting(I)V
PLcom/android/server/NetworkScorerAppManager;->updateState()V
-HSPLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda0;-><init>()V
-HSPLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda0;->uptimeMillis()J
-PLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/PackageWatchdog;)V
-PLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/PackageWatchdog;)V
-PLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/PackageWatchdog;)V
-PLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V
-PLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/PackageWatchdog;)V
-PLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda5;->run()V
-HSPLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/PackageWatchdog;)V
-PLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda6;->run()V
-HSPLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/PackageWatchdog;)V
-HSPLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/PackageWatchdog;)V
-HSPLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda8;->run()V
-HSPLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/PackageWatchdog;)V
-HSPLcom/android/server/PackageWatchdog$BootThreshold;-><init>(Lcom/android/server/PackageWatchdog;IJ)V
-HSPLcom/android/server/PackageWatchdog$BootThreshold;->getCount()I
-HSPLcom/android/server/PackageWatchdog$BootThreshold;->getMitigationStart()J
-HSPLcom/android/server/PackageWatchdog$BootThreshold;->getStart()J
-HSPLcom/android/server/PackageWatchdog$BootThreshold;->incrementAndTest()Z
-HSPLcom/android/server/PackageWatchdog$BootThreshold;->readMitigationCountFromMetadataIfNecessary()V
-HSPLcom/android/server/PackageWatchdog$BootThreshold;->setCount(I)V
-HSPLcom/android/server/PackageWatchdog$ObserverInternal;-><init>(Ljava/lang/String;Ljava/util/List;)V
-HSPLcom/android/server/PackageWatchdog$ObserverInternal;->getMonitoredPackages()Landroid/util/ArrayMap;
-HSPLcom/android/server/PackageWatchdog$ObserverInternal;->read(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/PackageWatchdog;)Lcom/android/server/PackageWatchdog$ObserverInternal;
-HSPLcom/android/server/PackageWatchdog$ObserverInternal;->updatePackagesLocked(Ljava/util/List;)V
-HSPLcom/android/server/PackageWatchdog$ObserverInternal;->writeLocked(Lcom/android/modules/utils/TypedXmlSerializer;)Z
-PLcom/android/server/PackageWatchdog;->$r8$lambda$4H7cBnuwvCSeT91m1YdCwvg43e8(Lcom/android/server/PackageWatchdog;Ljava/util/List;)V
-HSPLcom/android/server/PackageWatchdog;->$r8$lambda$HDOKg5GmSwaFTU2vt9rf-KyK8Hk(Lcom/android/server/PackageWatchdog;)Z
-PLcom/android/server/PackageWatchdog;->$r8$lambda$gJ37k2zmlFG8nBixsI_xMYfaYp0(Lcom/android/server/PackageWatchdog;)V
-PLcom/android/server/PackageWatchdog;->$r8$lambda$yDaKFi4XRxb3OsEfqTdgaQOn8Hg(Lcom/android/server/PackageWatchdog;)V
-HSPLcom/android/server/PackageWatchdog;->-$$Nest$fgetmSystemClock(Lcom/android/server/PackageWatchdog;)Lcom/android/server/PackageWatchdog$SystemClock;
-HSPLcom/android/server/PackageWatchdog;-><clinit>()V
-HSPLcom/android/server/PackageWatchdog;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/PackageWatchdog;-><init>(Landroid/content/Context;Landroid/util/AtomicFile;Landroid/os/Handler;Landroid/os/Handler;Lcom/android/server/ExplicitHealthCheckController;Landroid/net/ConnectivityModuleConnector;Lcom/android/server/PackageWatchdog$SystemClock;)V
-HSPLcom/android/server/PackageWatchdog;->getInstance(Landroid/content/Context;)Lcom/android/server/PackageWatchdog;
-HSPLcom/android/server/PackageWatchdog;->getNextStateSyncMillisLocked()J
-PLcom/android/server/PackageWatchdog;->getPackagesPendingHealthChecksLocked()Ljava/util/Set;
-PLcom/android/server/PackageWatchdog;->lambda$onPackagesReady$1(Ljava/util/List;)V
-HSPLcom/android/server/PackageWatchdog;->loadFromFile()V
-HSPLcom/android/server/PackageWatchdog;->noteBoot()V
-PLcom/android/server/PackageWatchdog;->onPackagesReady()V
-PLcom/android/server/PackageWatchdog;->onSupportedPackages(Ljava/util/List;)V
-PLcom/android/server/PackageWatchdog;->onSyncRequestNotified()V
-HSPLcom/android/server/PackageWatchdog;->pruneObserversLocked()V
-PLcom/android/server/PackageWatchdog;->registerConnectivityModuleHealthListener()V
-HSPLcom/android/server/PackageWatchdog;->registerHealthObserver(Lcom/android/server/PackageWatchdog$PackageHealthObserver;)V
-HSPLcom/android/server/PackageWatchdog;->saveToFile()Z
-HSPLcom/android/server/PackageWatchdog;->saveToFileAsync()V
-HSPLcom/android/server/PackageWatchdog;->scheduleNextSyncStateLocked()V
-PLcom/android/server/PackageWatchdog;->setExplicitHealthCheckEnabled(Z)V
-PLcom/android/server/PackageWatchdog;->setPropertyChangedListenerLocked()V
-PLcom/android/server/PackageWatchdog;->syncRequests()V
-HSPLcom/android/server/PackageWatchdog;->syncRequestsAsync()V
-HSPLcom/android/server/PackageWatchdog;->syncState(Ljava/lang/String;)V
-PLcom/android/server/PackageWatchdog;->updateConfigs()V
PLcom/android/server/PermissionThread;-><clinit>()V
-PLcom/android/server/PermissionThread;-><init>()V
PLcom/android/server/PermissionThread;->ensureThreadLocked()V
+PLcom/android/server/PermissionThread;->getExecutor()Ljava/util/concurrent/Executor;
PLcom/android/server/PermissionThread;->getHandler()Landroid/os/Handler;
-PLcom/android/server/PinnerService$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/PinnerService$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/PinnerService$1;-><init>(Lcom/android/server/PinnerService;)V
-PLcom/android/server/PinnerService$2;-><init>(Lcom/android/server/PinnerService;)V
-PLcom/android/server/PinnerService$3;-><init>(Lcom/android/server/PinnerService;Landroid/os/Handler;Landroid/net/Uri;)V
-PLcom/android/server/PinnerService$4$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/PinnerService$4$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/PinnerService$4$$ExternalSyntheticLambda1;-><init>()V
-HPLcom/android/server/PinnerService$4$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/PinnerService$4;->$r8$lambda$JKP9FOe5dDnst80l_XkFWpt_l38(Lcom/android/server/PinnerService;I)V
-PLcom/android/server/PinnerService$4;->$r8$lambda$g8CC-koera5q3TVS1KdRY9fBXII(Lcom/android/server/PinnerService;I)V
-PLcom/android/server/PinnerService$4;-><init>(Lcom/android/server/PinnerService;)V
-HPLcom/android/server/PinnerService$4;->onUidActive(I)V
-HPLcom/android/server/PinnerService$4;->onUidGone(IZ)V
-PLcom/android/server/PinnerService$BinderService;-><init>(Lcom/android/server/PinnerService;)V
-PLcom/android/server/PinnerService$Injector;-><init>()V
-PLcom/android/server/PinnerService$Injector;->getDeviceConfigInterface()Landroid/provider/DeviceConfigInterface;
-PLcom/android/server/PinnerService$Injector;->pinFileInternal(Ljava/lang/String;IZ)Lcom/android/server/PinnerService$PinnedFile;
-PLcom/android/server/PinnerService$Injector;->publishBinderService(Lcom/android/server/PinnerService;Landroid/os/Binder;)V
-PLcom/android/server/PinnerService$PinRange;-><init>()V
-PLcom/android/server/PinnerService$PinRangeSource;-><init>()V
-PLcom/android/server/PinnerService$PinRangeSource;-><init>(Lcom/android/server/PinnerService$PinRangeSource-IA;)V
-PLcom/android/server/PinnerService$PinRangeSourceStatic;-><init>(II)V
-PLcom/android/server/PinnerService$PinRangeSourceStatic;->read(Lcom/android/server/PinnerService$PinRange;)Z
-PLcom/android/server/PinnerService$PinnedFile;-><init>(JILjava/lang/String;I)V
-PLcom/android/server/PinnerService$PinnerHandler;-><init>(Lcom/android/server/PinnerService;Landroid/os/Looper;)V
-PLcom/android/server/PinnerService$PinnerHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/PinnerService;->$r8$lambda$Lg5HhffEN45yR2JlIq0obZpr-Xc(Lcom/android/server/PinnerService;I)V
-HPLcom/android/server/PinnerService;->-$$Nest$fgetmPinnerHandler(Lcom/android/server/PinnerService;)Lcom/android/server/PinnerService$PinnerHandler;
-PLcom/android/server/PinnerService;->-$$Nest$mhandlePinOnStart(Lcom/android/server/PinnerService;)V
-PLcom/android/server/PinnerService;->-$$Nest$mhandleUidActive(Lcom/android/server/PinnerService;I)V
-PLcom/android/server/PinnerService;->-$$Nest$mhandleUidGone(Lcom/android/server/PinnerService;I)V
-PLcom/android/server/PinnerService;->-$$Nest$smpinFileInternal(Ljava/lang/String;IZ)Lcom/android/server/PinnerService$PinnedFile;
-PLcom/android/server/PinnerService;-><clinit>()V
-PLcom/android/server/PinnerService;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/PinnerService;-><init>(Landroid/content/Context;Lcom/android/server/PinnerService$Injector;)V
-PLcom/android/server/PinnerService;->clamp(III)I
-PLcom/android/server/PinnerService;->createPinKeys()Landroid/util/ArraySet;
-PLcom/android/server/PinnerService;->getPinKeys()Landroid/util/ArraySet;
-PLcom/android/server/PinnerService;->handlePinOnStart()V
-PLcom/android/server/PinnerService;->handleUidActive(I)V
-HPLcom/android/server/PinnerService;->handleUidGone(I)V
-PLcom/android/server/PinnerService;->onBootPhase(I)V
-PLcom/android/server/PinnerService;->onStart()V
-PLcom/android/server/PinnerService;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/PinnerService;->pinApps(I)V
-PLcom/android/server/PinnerService;->pinAppsInternal(IZ)V
-PLcom/android/server/PinnerService;->pinFileInternal(Ljava/lang/String;IZ)Lcom/android/server/PinnerService$PinnedFile;
-HPLcom/android/server/PinnerService;->pinFileRanges(Ljava/lang/String;ILcom/android/server/PinnerService$PinRangeSource;)Lcom/android/server/PinnerService$PinnedFile;
-HPLcom/android/server/PinnerService;->pinOptimizedDexDependencies(Lcom/android/server/PinnerService$PinnedFile;ILandroid/content/pm/ApplicationInfo;)I
-PLcom/android/server/PinnerService;->refreshPinAnonConfig()V
-PLcom/android/server/PinnerService;->registerUidListener()V
-PLcom/android/server/PinnerService;->registerUserSetupCompleteListener()V
-PLcom/android/server/PinnerService;->safeClose(Ljava/io/Closeable;)V
-PLcom/android/server/PinnerService;->safeClose(Ljava/io/FileDescriptor;)V
-PLcom/android/server/PinnerService;->sendPinAppsMessage(I)V
-PLcom/android/server/PinnerService;->unpinFile(Ljava/lang/String;)V
-HPLcom/android/server/PinnerService;->updateActiveState(IZ)V
-PLcom/android/server/RescueParty$RescuePartyMonitorCallback;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/RescueParty$RescuePartyMonitorCallback;->onDeviceConfigAccess(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/RescueParty$RescuePartyObserver;->-$$Nest$mrecordDeviceConfigAccess(Lcom/android/server/RescueParty$RescuePartyObserver;Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/RescueParty$RescuePartyObserver;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/RescueParty$RescuePartyObserver;->getInstance(Landroid/content/Context;)Lcom/android/server/RescueParty$RescuePartyObserver;
-HSPLcom/android/server/RescueParty$RescuePartyObserver;->getName()Ljava/lang/String;
-HPLcom/android/server/RescueParty$RescuePartyObserver;->recordDeviceConfigAccess(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/RescueParty;-><clinit>()V
-PLcom/android/server/RescueParty;->handleNativeRescuePartyResets()V
-PLcom/android/server/RescueParty;->onSettingsProviderPublished(Landroid/content/Context;)V
-HSPLcom/android/server/RescueParty;->registerHealthObserver(Landroid/content/Context;)V
-PLcom/android/server/ResourcePressureUtil$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/ResourcePressureUtil$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/ResourcePressureUtil$$ExternalSyntheticLambda1;-><init>(Ljava/io/StringWriter;)V
-PLcom/android/server/ResourcePressureUtil$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
-PLcom/android/server/ResourcePressureUtil;->$r8$lambda$YqRwUJ2GaBiqQtdp5zJtNgfVUt0(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/ResourcePressureUtil;-><clinit>()V
-PLcom/android/server/ResourcePressureUtil;->currentPsiState()Ljava/lang/String;
-PLcom/android/server/ResourcePressureUtil;->readResourcePsiState(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/RuntimeService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/RuntimeService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/SecurityStateManagerService;-><clinit>()V
PLcom/android/server/SecurityStateManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/SensitiveContentProtectionManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/SensitiveContentProtectionManagerService;)V
+PLcom/android/server/SensitiveContentProtectionManagerService$$ExternalSyntheticLambda1;-><init>(Landroid/os/IBinder;)V
+PLcom/android/server/SensitiveContentProtectionManagerService$1;-><init>(Lcom/android/server/SensitiveContentProtectionManagerService;)V
+PLcom/android/server/SensitiveContentProtectionManagerService$NotificationListener;-><init>(Lcom/android/server/SensitiveContentProtectionManagerService;)V
+PLcom/android/server/SensitiveContentProtectionManagerService$NotificationListener;->onListenerConnected()V
+HPLcom/android/server/SensitiveContentProtectionManagerService$NotificationListener;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;)V
+PLcom/android/server/SensitiveContentProtectionManagerService$NotificationListener;->onNotificationRankingUpdate(Landroid/service/notification/NotificationListenerService$RankingMap;)V
+PLcom/android/server/SensitiveContentProtectionManagerService$SensitiveContentProtectionManagerServiceBinder$$ExternalSyntheticOutline0;->m(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/SensitiveContentProtectionManagerService$SensitiveContentProtectionManagerServiceBinder;-><init>(Lcom/android/server/SensitiveContentProtectionManagerService;)V
+PLcom/android/server/SensitiveContentProtectionManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/SensitiveContentProtectionManagerService;->init(Landroid/media/projection/MediaProjectionManager;Lcom/android/server/wm/WindowManagerInternal;Landroid/content/pm/PackageManagerInternal;Landroid/util/ArraySet;)V
+PLcom/android/server/SensitiveContentProtectionManagerService;->onBootPhase(I)V
+PLcom/android/server/SensitiveContentProtectionManagerService;->onStart()V
PLcom/android/server/SensorNotificationService;-><init>(Landroid/content/Context;)V
PLcom/android/server/SensorNotificationService;->onBootPhase(I)V
+PLcom/android/server/SensorNotificationService;->onLocationChanged(Landroid/location/Location;)V
+PLcom/android/server/SensorNotificationService;->onProviderDisabled(Ljava/lang/String;)V
+PLcom/android/server/SensorNotificationService;->onProviderEnabled(Ljava/lang/String;)V
PLcom/android/server/SensorNotificationService;->onStart()V
-HSPLcom/android/server/ServiceThread;-><init>(Ljava/lang/String;IZ)V
-HSPLcom/android/server/ServiceThread;->makeSharedHandler(Landroid/os/Looper;)Landroid/os/Handler;
-HSPLcom/android/server/ServiceThread;->run()V
-PLcom/android/server/StorageManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/StorageManagerService;)V
-PLcom/android/server/StorageManagerService$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/SmartStorageMaintIdler;-><clinit>()V
+PLcom/android/server/SmartStorageMaintIdler;->scheduleSmartIdlePass(Landroid/content/Context;I)V
+PLcom/android/server/StorageManagerService$$ExternalSyntheticOutline0;->m$1(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/StorageManagerService$$ExternalSyntheticOutline0;->m(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/StorageManagerService$$ExternalSyntheticOutline0;->m(Ljava/lang/String;JLjava/lang/String;)Ljava/lang/StringBuilder;
+HPLcom/android/server/StorageManagerService$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Ljava/lang/StringBuilder;
+PLcom/android/server/StorageManagerService$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/StorageManagerService$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/StorageManagerService$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;ZLjava/lang/String;)V
PLcom/android/server/StorageManagerService$1;-><init>(Lcom/android/server/StorageManagerService;)V
-PLcom/android/server/StorageManagerService$2;-><init>(Lcom/android/server/StorageManagerService;Landroid/os/Handler;)V
+PLcom/android/server/StorageManagerService$2;-><init>(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService$2;->onChange(Z)V
PLcom/android/server/StorageManagerService$3;-><init>(Lcom/android/server/StorageManagerService;)V
PLcom/android/server/StorageManagerService$3;->onVolumeCreated(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;I)V
PLcom/android/server/StorageManagerService$3;->onVolumeDestroyed(Ljava/lang/String;)V
PLcom/android/server/StorageManagerService$3;->onVolumeInternalPathChanged(Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/StorageManagerService$3;->onVolumePathChanged(Ljava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/StorageManagerService$3;->onVolumeStateChanged(Ljava/lang/String;II)V
-PLcom/android/server/StorageManagerService$4;-><init>(Lcom/android/server/StorageManagerService;)V
-PLcom/android/server/StorageManagerService$5;-><init>(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService$3;->onVolumeStateChanged(Ljava/lang/String;II)V
+PLcom/android/server/StorageManagerService$4;-><init>(Lcom/android/server/StorageManagerService;I)V
PLcom/android/server/StorageManagerService$6;-><init>(Lcom/android/server/StorageManagerService;)V
PLcom/android/server/StorageManagerService$7;-><init>(Lcom/android/server/StorageManagerService;Landroid/os/storage/VolumeInfo;)V
PLcom/android/server/StorageManagerService$7;->onVolumeChecking(Ljava/io/FileDescriptor;Ljava/lang/String;Ljava/lang/String;)Z
-PLcom/android/server/StorageManagerService$Callbacks;->-$$Nest$mnotifyStorageStateChanged(Lcom/android/server/StorageManagerService$Callbacks;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/StorageManagerService$Callbacks;->-$$Nest$mnotifyVolumeStateChanged(Lcom/android/server/StorageManagerService$Callbacks;Landroid/os/storage/VolumeInfo;II)V
+PLcom/android/server/StorageManagerService$8;-><init>(Lcom/android/server/StorageManagerService;Landroid/os/IVoldTaskListener;I)V
+PLcom/android/server/StorageManagerService$8;->onFinished(ILandroid/os/PersistableBundle;)V
+PLcom/android/server/StorageManagerService$8;->onStatus(ILandroid/os/PersistableBundle;)V
PLcom/android/server/StorageManagerService$Callbacks;-><init>(Landroid/os/Looper;)V
+PLcom/android/server/StorageManagerService$Callbacks;-><init>(Lcom/android/server/StorageManagerService;Landroid/os/Looper;I)V
PLcom/android/server/StorageManagerService$Callbacks;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/StorageManagerService$Callbacks;->invokeCallback(Landroid/os/storage/IStorageEventListener;ILcom/android/internal/os/SomeArgs;)V
-PLcom/android/server/StorageManagerService$Callbacks;->notifyStorageStateChanged(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/StorageManagerService$Callbacks;->notifyVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V
-PLcom/android/server/StorageManagerService$Callbacks;->register(Landroid/os/storage/IStorageEventListener;)V
PLcom/android/server/StorageManagerService$ExternalStorageServiceAnrController;-><init>(Lcom/android/server/StorageManagerService;)V
-PLcom/android/server/StorageManagerService$ExternalStorageServiceAnrController;-><init>(Lcom/android/server/StorageManagerService;Lcom/android/server/StorageManagerService$ExternalStorageServiceAnrController-IA;)V
PLcom/android/server/StorageManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/StorageManagerService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/StorageManagerService$Lifecycle;->onStart()V
PLcom/android/server/StorageManagerService$Lifecycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/StorageManagerService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/StorageManagerService$ObbActionHandler;-><init>(Lcom/android/server/StorageManagerService;Landroid/os/Looper;)V
PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;-><init>(Lcom/android/server/StorageManagerService;)V
-PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;-><init>(Lcom/android/server/StorageManagerService;Lcom/android/server/StorageManagerService$StorageManagerInternalImpl-IA;)V
HPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->getExternalStorageMountMode(ILjava/lang/String;)I
-PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->hasExternalStorage(ILjava/lang/String;)Z
-HPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->hasExternalStorageAccess(ILjava/lang/String;)Z
-HPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->hasLegacyExternalStorage(I)Z
-HPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->isExternalStorageService(I)Z
+PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->hasExternalStorageAccess(ILjava/lang/String;)Z
+PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->hasLegacyExternalStorage(I)Z
+PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->isCeStoragePrepared(I)Z
+PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->isExternalStorageService(I)Z
PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->markCeStoragePrepared(I)V
PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->onAppOpsChanged(IILjava/lang/String;II)V
PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->onReset(Landroid/os/IVold;)V
+PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->prepareAppDataAfterInstall(Ljava/lang/String;I)V
PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->registerCloudProviderChangeListener(Landroid/os/storage/StorageManagerInternal$CloudProviderChangeListener;)V
-PLcom/android/server/StorageManagerService$StorageManagerServiceHandler;-><init>(Lcom/android/server/StorageManagerService;Landroid/os/Looper;)V
-HPLcom/android/server/StorageManagerService$StorageManagerServiceHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/StorageManagerService$WatchedUnlockedUsers;-><init>()V
-PLcom/android/server/StorageManagerService$WatchedUnlockedUsers;->append(I)V
-HPLcom/android/server/StorageManagerService$WatchedUnlockedUsers;->contains(I)Z
-PLcom/android/server/StorageManagerService$WatchedUnlockedUsers;->invalidateIsUserUnlockedCache()V
-PLcom/android/server/StorageManagerService;->$r8$lambda$3W1bgg_uBq6o73zqwNdqgsQVYZE(Lcom/android/server/StorageManagerService;)V
-PLcom/android/server/StorageManagerService;->-$$Nest$fgetmCeStoragePreparedUsers(Lcom/android/server/StorageManagerService;)Ljava/util/Set;
-PLcom/android/server/StorageManagerService;->-$$Nest$fgetmContext(Lcom/android/server/StorageManagerService;)Landroid/content/Context;
-PLcom/android/server/StorageManagerService;->-$$Nest$fgetmDisks(Lcom/android/server/StorageManagerService;)Landroid/util/ArrayMap;
-PLcom/android/server/StorageManagerService;->-$$Nest$fgetmHandler(Lcom/android/server/StorageManagerService;)Landroid/os/Handler;
-HPLcom/android/server/StorageManagerService;->-$$Nest$fgetmIAppOpsService(Lcom/android/server/StorageManagerService;)Lcom/android/internal/app/IAppOpsService;
-HPLcom/android/server/StorageManagerService;->-$$Nest$fgetmIPackageManager(Lcom/android/server/StorageManagerService;)Landroid/content/pm/IPackageManager;
-PLcom/android/server/StorageManagerService;->-$$Nest$fgetmLock(Lcom/android/server/StorageManagerService;)Ljava/lang/Object;
-HPLcom/android/server/StorageManagerService;->-$$Nest$fgetmMediaStoreAuthorityAppId(Lcom/android/server/StorageManagerService;)I
-PLcom/android/server/StorageManagerService;->-$$Nest$fgetmStorageSessionController(Lcom/android/server/StorageManagerService;)Lcom/android/server/storage/StorageSessionController;
-PLcom/android/server/StorageManagerService;->-$$Nest$fgetmUidsWithLegacyExternalStorage(Lcom/android/server/StorageManagerService;)Ljava/util/Set;
-PLcom/android/server/StorageManagerService;->-$$Nest$fgetmVold(Lcom/android/server/StorageManagerService;)Landroid/os/IVold;
-PLcom/android/server/StorageManagerService;->-$$Nest$fgetmVolumes(Lcom/android/server/StorageManagerService;)Landroid/util/ArrayMap;
-PLcom/android/server/StorageManagerService;->-$$Nest$mbootCompleted(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->registerStorageLockEventListener(Landroid/os/storage/ICeStorageLockEventListener;)V
+PLcom/android/server/StorageManagerService$WatchedUnlockedUsers;->toString()Ljava/lang/String;
PLcom/android/server/StorageManagerService;->-$$Nest$mcompleteUnlockUser(Lcom/android/server/StorageManagerService;I)V
-HPLcom/android/server/StorageManagerService;->-$$Nest$mgetMountModeInternal(Lcom/android/server/StorageManagerService;ILjava/lang/String;)I
-PLcom/android/server/StorageManagerService;->-$$Nest$mhandleBootCompleted(Lcom/android/server/StorageManagerService;)V
-PLcom/android/server/StorageManagerService;->-$$Nest$mhandleDaemonConnected(Lcom/android/server/StorageManagerService;)V
-PLcom/android/server/StorageManagerService;->-$$Nest$mhandleSystemReady(Lcom/android/server/StorageManagerService;)V
-PLcom/android/server/StorageManagerService;->-$$Nest$misMountDisallowed(Lcom/android/server/StorageManagerService;Landroid/os/storage/VolumeInfo;)Z
-PLcom/android/server/StorageManagerService;->-$$Nest$mmount(Lcom/android/server/StorageManagerService;Landroid/os/storage/VolumeInfo;)V
-PLcom/android/server/StorageManagerService;->-$$Nest$mnotifyCloudMediaProviderChangedAsync(Lcom/android/server/StorageManagerService;Landroid/os/storage/StorageManagerInternal$CloudProviderChangeListener;)V
-PLcom/android/server/StorageManagerService;->-$$Nest$monUserUnlocking(Lcom/android/server/StorageManagerService;I)V
+PLcom/android/server/StorageManagerService;->-$$Nest$mdispatchOnFinished(Lcom/android/server/StorageManagerService;Landroid/os/IVoldTaskListener;ILandroid/os/PersistableBundle;)V
+PLcom/android/server/StorageManagerService;->-$$Nest$mdispatchOnStatus(Lcom/android/server/StorageManagerService;Landroid/os/IVoldTaskListener;ILandroid/os/PersistableBundle;)V
PLcom/android/server/StorageManagerService;->-$$Nest$monVolumeCreatedLocked(Lcom/android/server/StorageManagerService;Landroid/os/storage/VolumeInfo;)V
-PLcom/android/server/StorageManagerService;->-$$Nest$monVolumeStateChangedAsync(Lcom/android/server/StorageManagerService;Landroid/os/storage/VolumeInfo;II)V
-PLcom/android/server/StorageManagerService;->-$$Nest$monVolumeStateChangedLocked(Lcom/android/server/StorageManagerService;Landroid/os/storage/VolumeInfo;I)V
-PLcom/android/server/StorageManagerService;->-$$Nest$mservicesReady(Lcom/android/server/StorageManagerService;)V
-PLcom/android/server/StorageManagerService;->-$$Nest$msnapshotAndMonitorLegacyStorageAppOp(Lcom/android/server/StorageManagerService;Landroid/os/UserHandle;)V
-PLcom/android/server/StorageManagerService;->-$$Nest$mstart(Lcom/android/server/StorageManagerService;)V
-PLcom/android/server/StorageManagerService;->-$$Nest$msystemReady(Lcom/android/server/StorageManagerService;)V
-HPLcom/android/server/StorageManagerService;->-$$Nest$sfgetLOCAL_LOGV()Z
+PLcom/android/server/StorageManagerService;->-$$Nest$mscrubPath(Lcom/android/server/StorageManagerService;Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/StorageManagerService;-><clinit>()V
-HPLcom/android/server/StorageManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/StorageManagerService;->addInternalVolumeLocked()V
-PLcom/android/server/StorageManagerService;->bootCompleted()V
+PLcom/android/server/StorageManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/StorageManagerService;->adjustAllocateFlags(IILjava/lang/String;)I
+PLcom/android/server/StorageManagerService;->allocateBytes(Ljava/lang/String;JILjava/lang/String;)V
PLcom/android/server/StorageManagerService;->commitChanges()V
-PLcom/android/server/StorageManagerService;->completeUnlockUser(I)V
-PLcom/android/server/StorageManagerService;->configureTranscoding()V
PLcom/android/server/StorageManagerService;->connectStoraged()V
PLcom/android/server/StorageManagerService;->connectVold()V
+PLcom/android/server/StorageManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/StorageManagerService;->enforceExternalStorageService()V
-PLcom/android/server/StorageManagerService;->enforcePermission(Ljava/lang/String;)V
PLcom/android/server/StorageManagerService;->extendWatchdogTimeout(Ljava/lang/String;)V
-PLcom/android/server/StorageManagerService;->getDefaultPrimaryStorageUuid()Ljava/lang/String;
-HPLcom/android/server/StorageManagerService;->getMountModeInternal(ILjava/lang/String;)I
-PLcom/android/server/StorageManagerService;->getProviderInfo(Ljava/lang/String;)Landroid/content/pm/ProviderInfo;
+PLcom/android/server/StorageManagerService;->findRecordForPath(Ljava/lang/String;)Landroid/os/storage/VolumeRecord;
+PLcom/android/server/StorageManagerService;->fstrim(ILandroid/os/IVoldTaskListener;)V
+HPLcom/android/server/StorageManagerService;->getAllocatableBytes(Ljava/lang/String;ILjava/lang/String;)J
+PLcom/android/server/StorageManagerService;->getCacheQuotaBytes(Ljava/lang/String;I)J
+PLcom/android/server/StorageManagerService;->getExternalStorageMountMode(ILjava/lang/String;)I
+PLcom/android/server/StorageManagerService;->getPrimaryStorageUuid()Ljava/lang/String;
HPLcom/android/server/StorageManagerService;->getVolumeList(ILjava/lang/String;I)[Landroid/os/storage/StorageVolume;
HPLcom/android/server/StorageManagerService;->getVolumes(I)[Landroid/os/storage/VolumeInfo;
-PLcom/android/server/StorageManagerService;->handleBootCompleted()V
-PLcom/android/server/StorageManagerService;->handleDaemonConnected()V
-PLcom/android/server/StorageManagerService;->handleSystemReady()V
-PLcom/android/server/StorageManagerService;->isBroadcastWorthy(Landroid/os/storage/VolumeInfo;)Z
HPLcom/android/server/StorageManagerService;->isCeStorageUnlocked(I)Z
-PLcom/android/server/StorageManagerService;->isHevcDecoderSupported()Z
PLcom/android/server/StorageManagerService;->isMountDisallowed(Landroid/os/storage/VolumeInfo;)Z
-HPLcom/android/server/StorageManagerService;->isSystemUnlocked(I)Z
-HPLcom/android/server/StorageManagerService;->isUidOwnerOfPackageOrSystem(Ljava/lang/String;I)Z
-PLcom/android/server/StorageManagerService;->lambda$resetIfBootedAndConnected$0()V
PLcom/android/server/StorageManagerService;->lastMaintenance()J
-PLcom/android/server/StorageManagerService;->maybeLogMediaMount(Landroid/os/storage/VolumeInfo;I)V
-HPLcom/android/server/StorageManagerService;->monitor()V
+PLcom/android/server/StorageManagerService;->mkdirs(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/StorageManagerService;->monitor()V
PLcom/android/server/StorageManagerService;->mount(Landroid/os/storage/VolumeInfo;)V
PLcom/android/server/StorageManagerService;->needsCheckpoint()Z
-PLcom/android/server/StorageManagerService;->notifyCloudMediaProviderChangedAsync(Landroid/os/storage/StorageManagerInternal$CloudProviderChangeListener;)V
-PLcom/android/server/StorageManagerService;->onDaemonConnected()V
+PLcom/android/server/StorageManagerService;->onAwakeStateChanged(Z)V
PLcom/android/server/StorageManagerService;->onKeyguardStateChanged(Z)V
-PLcom/android/server/StorageManagerService;->onUserUnlocking(I)V
-PLcom/android/server/StorageManagerService;->onVolumeCreatedLocked(Landroid/os/storage/VolumeInfo;)V
-HPLcom/android/server/StorageManagerService;->onVolumeStateChangedAsync(Landroid/os/storage/VolumeInfo;II)V
-PLcom/android/server/StorageManagerService;->onVolumeStateChangedLocked(Landroid/os/storage/VolumeInfo;I)V
-PLcom/android/server/StorageManagerService;->prepareSmartIdleMaint()Z
PLcom/android/server/StorageManagerService;->prepareUserStorage(Ljava/lang/String;II)V
PLcom/android/server/StorageManagerService;->prepareUserStorageIfNeeded(Landroid/os/storage/VolumeInfo;)V
-PLcom/android/server/StorageManagerService;->prepareUserStorageInternal(Ljava/lang/String;II)V
+PLcom/android/server/StorageManagerService;->prepareUserStorageInternal(IILjava/lang/String;)V
PLcom/android/server/StorageManagerService;->readSettingsLocked()V
+PLcom/android/server/StorageManagerService;->refreshLifetimeConstraint()Z
PLcom/android/server/StorageManagerService;->refreshZramSettings()V
PLcom/android/server/StorageManagerService;->registerListener(Landroid/os/storage/IStorageEventListener;)V
-HPLcom/android/server/StorageManagerService;->resetIfBootedAndConnected()V
-PLcom/android/server/StorageManagerService;->restoreCeUnlockedUsers()V
+PLcom/android/server/StorageManagerService;->resetIfBootedAndConnected()V
PLcom/android/server/StorageManagerService;->restoreSystemUnlockedUsers(Landroid/os/UserManager;Ljava/util/List;[I)V
-PLcom/android/server/StorageManagerService;->servicesReady()V
+PLcom/android/server/StorageManagerService;->runMaintenance()V
PLcom/android/server/StorageManagerService;->setCloudMediaProvider(Ljava/lang/String;)V
-HPLcom/android/server/StorageManagerService;->snapshotAndMonitorLegacyStorageAppOp(Landroid/os/UserHandle;)V
-PLcom/android/server/StorageManagerService;->start()V
PLcom/android/server/StorageManagerService;->supportsCheckpoint()Z
-PLcom/android/server/StorageManagerService;->systemReady()V
PLcom/android/server/StorageManagerService;->unlockCeStorage(I[B)V
-HPLcom/android/server/StorageManagerService;->updateLegacyStorageApps(Ljava/lang/String;IZ)V
+PLcom/android/server/StorageManagerService;->updateLegacyStorageApps(ILjava/lang/String;Z)V
PLcom/android/server/SystemClockTime;-><clinit>()V
-PLcom/android/server/SystemClockTime;->addDebugLogEntry(Ljava/lang/String;)V
-PLcom/android/server/SystemClockTime;->getCurrentTimeMillis()J
-PLcom/android/server/SystemClockTime;->initializeIfRequired()V
+PLcom/android/server/SystemClockTime;->setTimeAndConfidence(ILjava/lang/String;J)V
+HSPLcom/android/server/SystemConfig$Injector;-><init>()V
HSPLcom/android/server/SystemConfig$PermissionEntry;-><init>(Ljava/lang/String;Z)V
HSPLcom/android/server/SystemConfig$SharedLibraryEntry;-><init>(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
HSPLcom/android/server/SystemConfig$SharedLibraryEntry;-><init>(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
+HSPLcom/android/server/SystemConfig$SharedLibraryEntry;-><init>(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Z)V
HSPLcom/android/server/SystemConfig;-><clinit>()V
HSPLcom/android/server/SystemConfig;-><init>()V
-HSPLcom/android/server/SystemConfig;->addFeature(Ljava/lang/String;I)V
-HSPLcom/android/server/SystemConfig;->enableIpSecTunnelMigrationOnVsrUAndAbove()V
-PLcom/android/server/SystemConfig;->getAllowImplicitBroadcasts()Landroid/util/ArraySet;
-PLcom/android/server/SystemConfig;->getAllowInDataUsageSave()Landroid/util/ArraySet;
-PLcom/android/server/SystemConfig;->getAllowInPowerSave()Landroid/util/ArraySet;
-PLcom/android/server/SystemConfig;->getAllowInPowerSaveExceptIdle()Landroid/util/ArraySet;
-PLcom/android/server/SystemConfig;->getAllowUnthrottledLocation()Landroid/util/ArraySet;
-PLcom/android/server/SystemConfig;->getAllowedAssociations()Landroid/util/ArrayMap;
-HSPLcom/android/server/SystemConfig;->getAndClearPackageToUserTypeBlacklist()Landroid/util/ArrayMap;
-HSPLcom/android/server/SystemConfig;->getAndClearPackageToUserTypeWhitelist()Landroid/util/ArrayMap;
-HSPLcom/android/server/SystemConfig;->getApexModuleNameFromFilePath(Ljava/nio/file/Path;Ljava/nio/file/Path;)Ljava/lang/String;
-HSPLcom/android/server/SystemConfig;->getAppDataIsolationWhitelistedApps()Landroid/util/ArraySet;
+HSPLcom/android/server/SystemConfig;->addFeature(ILjava/lang/String;)V
HSPLcom/android/server/SystemConfig;->getAvailableFeatures()Landroid/util/ArrayMap;
-PLcom/android/server/SystemConfig;->getBackupTransportWhitelist()Landroid/util/ArraySet;
-PLcom/android/server/SystemConfig;->getBgRestrictionExemption()Landroid/util/ArraySet;
-PLcom/android/server/SystemConfig;->getBugreportWhitelistedPackages()Landroid/util/ArraySet;
-HPLcom/android/server/SystemConfig;->getComponentsEnabledStates(Ljava/lang/String;)Landroid/util/ArrayMap;
-PLcom/android/server/SystemConfig;->getDisabledUntilUsedPreinstalledCarrierApps()Landroid/util/ArraySet;
-PLcom/android/server/SystemConfig;->getDisabledUntilUsedPreinstalledCarrierAssociatedApps()Landroid/util/ArrayMap;
-PLcom/android/server/SystemConfig;->getEnhancedConfirmationTrustedInstallers()Landroid/util/ArraySet;
-PLcom/android/server/SystemConfig;->getEnhancedConfirmationTrustedPackages()Landroid/util/ArraySet;
-HPLcom/android/server/SystemConfig;->getGlobalGids()[I
-PLcom/android/server/SystemConfig;->getInitialNonStoppedSystemPackages()Ljava/util/Set;
+HSPLcom/android/server/SystemConfig;->getInitialNonStoppedSystemPackages()Ljava/util/Set;
HSPLcom/android/server/SystemConfig;->getInstance()Lcom/android/server/SystemConfig;
-HPLcom/android/server/SystemConfig;->getLinkedApps()Landroid/util/ArraySet;
-PLcom/android/server/SystemConfig;->getNamedActors()Ljava/util/Map;
+HSPLcom/android/server/SystemConfig;->getOemDefinedUids()Landroid/util/ArrayMap;
PLcom/android/server/SystemConfig;->getOverlayConfigSignaturePackage()Ljava/lang/String;
-HSPLcom/android/server/SystemConfig;->getPermissionAllowlist()Lcom/android/server/pm/permission/PermissionAllowlist;
-HSPLcom/android/server/SystemConfig;->getPermissions()Landroid/util/ArrayMap;
-PLcom/android/server/SystemConfig;->getPreinstallPackagesWithStrictSignatureCheck()Ljava/util/Set;
HSPLcom/android/server/SystemConfig;->getSharedLibraries()Landroid/util/ArrayMap;
-HSPLcom/android/server/SystemConfig;->getSplitPermissions()Ljava/util/ArrayList;
-HPLcom/android/server/SystemConfig;->getSystemAppUpdateOwnerPackageName(Ljava/lang/String;)Ljava/lang/String;
-HPLcom/android/server/SystemConfig;->getSystemPermissions()Landroid/util/SparseArray;
-HSPLcom/android/server/SystemConfig;->isErofsSupported()Z
-HSPLcom/android/server/SystemConfig;->isSystemProcess()Z
+HSPLcom/android/server/SystemConfig;->isKernelVersionAtLeast(II)Z
HSPLcom/android/server/SystemConfig;->readAllPermissions()V
HSPLcom/android/server/SystemConfig;->readApexPrivAppPermissions(Lorg/xmlpull/v1/XmlPullParser;Ljava/io/File;Ljava/nio/file/Path;)V
+HSPLcom/android/server/SystemConfig;->readComponentOverrides(Lorg/xmlpull/v1/XmlPullParser;Ljava/io/File;)V
HSPLcom/android/server/SystemConfig;->readInstallInUserType(Lorg/xmlpull/v1/XmlPullParser;Ljava/util/Map;Ljava/util/Map;)V
HSPLcom/android/server/SystemConfig;->readPermission(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V
HSPLcom/android/server/SystemConfig;->readPermissionAllowlist(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/ArrayMap;Ljava/lang/String;)V
HSPLcom/android/server/SystemConfig;->readPermissions(Lorg/xmlpull/v1/XmlPullParser;Ljava/io/File;I)V
HSPLcom/android/server/SystemConfig;->readPermissionsFromXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/io/File;I)V
-HSPLcom/android/server/SystemConfig;->readPrivAppPermissions(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/ArrayMap;)V
HSPLcom/android/server/SystemConfig;->readPublicLibrariesListFile(Ljava/io/File;)V
HSPLcom/android/server/SystemConfig;->readPublicNativeLibrariesList()V
HSPLcom/android/server/SystemConfig;->readSplitPermission(Lorg/xmlpull/v1/XmlPullParser;Ljava/io/File;)V
-PLcom/android/server/SystemConfigService$1$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/SystemConfigService$1$$ExternalSyntheticLambda0;-><init>(I)V
PLcom/android/server/SystemConfigService$1;-><init>(Lcom/android/server/SystemConfigService;)V
PLcom/android/server/SystemConfigService$1;->getDisabledUntilUsedPreinstalledCarrierApps()Ljava/util/List;
PLcom/android/server/SystemConfigService$1;->getDisabledUntilUsedPreinstalledCarrierAssociatedAppEntries()Ljava/util/Map;
PLcom/android/server/SystemConfigService$1;->getEnhancedConfirmationTrustedInstallers()Ljava/util/List;
PLcom/android/server/SystemConfigService$1;->getEnhancedConfirmationTrustedPackages()Ljava/util/List;
PLcom/android/server/SystemConfigService$1;->getSystemPermissionUids(Ljava/lang/String;)[I
-PLcom/android/server/SystemConfigService;->-$$Nest$fgetmContext(Lcom/android/server/SystemConfigService;)Landroid/content/Context;
PLcom/android/server/SystemConfigService;-><init>(Landroid/content/Context;)V
PLcom/android/server/SystemConfigService;->onStart()V
-HSPLcom/android/server/SystemServer$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/SystemServer$$ExternalSyntheticLambda0;->handleApplicationWtf(Landroid/os/IBinder;Ljava/lang/String;ZLandroid/app/ApplicationErrorReport$ParcelableCrashInfo;I)Z
-HSPLcom/android/server/SystemServer$$ExternalSyntheticLambda1;-><init>(III)V
-HSPLcom/android/server/SystemServer$$ExternalSyntheticLambda1;->run()V
-HSPLcom/android/server/SystemServer$$ExternalSyntheticLambda2;-><init>()V
+HSPLcom/android/server/SystemServer$$ExternalSyntheticLambda2;-><init>(III)V
HSPLcom/android/server/SystemServer$$ExternalSyntheticLambda2;->run()V
-PLcom/android/server/SystemServer$$ExternalSyntheticLambda3;-><init>()V
-PLcom/android/server/SystemServer$$ExternalSyntheticLambda3;->run()V
-PLcom/android/server/SystemServer$$ExternalSyntheticLambda4;-><init>()V
-PLcom/android/server/SystemServer$$ExternalSyntheticLambda4;->run()V
-PLcom/android/server/SystemServer$$ExternalSyntheticLambda5;-><init>()V
-PLcom/android/server/SystemServer$$ExternalSyntheticLambda5;->run()V
-PLcom/android/server/SystemServer$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/SystemServer;Lcom/android/server/utils/TimingsTraceAndSlog;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;ZLandroid/content/Context;ZLandroid/net/ConnectivityManager;Lcom/android/server/net/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/VpnManagerService;Lcom/android/server/VcnManagementService;Lcom/android/server/HsumBootUserInitializer;Lcom/android/server/CountryDetectorService;Lcom/android/server/timedetector/NetworkTimeUpdateService;Lcom/android/server/input/InputManagerService;Lcom/android/server/TelephonyRegistry;Lcom/android/server/media/MediaRouterService;Lcom/android/server/MmsServiceBroker;)V
-PLcom/android/server/SystemServer$$ExternalSyntheticLambda6;->run()V
-PLcom/android/server/SystemServer$$ExternalSyntheticLambda8;-><init>()V
-PLcom/android/server/SystemServer$$ExternalSyntheticLambda8;->onModuleServiceConnected(Landroid/os/IBinder;)V
+HSPLcom/android/server/SystemServer$$ExternalSyntheticLambda3;-><init>(I)V
+HSPLcom/android/server/SystemServer$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/SystemServer$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/SystemServer;Lcom/android/server/utils/TimingsTraceAndSlog;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;Landroid/content/Context;ZLandroid/net/ConnectivityManager;Lcom/android/server/net/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/VpnManagerService;Lcom/android/server/HsumBootUserInitializer;Lcom/android/server/CountryDetectorService;Lcom/android/server/timedetector/NetworkTimeUpdateService;Lcom/android/server/input/InputManagerService;Lcom/android/server/TelephonyRegistry;Lcom/android/server/media/MediaRouterService;Lcom/android/server/MmsServiceBroker;)V
+PLcom/android/server/SystemServer$$ExternalSyntheticLambda7;->run()V
+PLcom/android/server/SystemServer$$ExternalSyntheticLambda9;->onModuleServiceConnected(Landroid/os/IBinder;)V
+HSPLcom/android/server/SystemServer$$ExternalSyntheticOutline0;->m(Lcom/android/server/SystemServiceManager;Ljava/lang/Class;Lcom/android/server/utils/TimingsTraceAndSlog;Ljava/lang/String;)V
PLcom/android/server/SystemServer$1;-><init>(Lcom/android/server/SystemServer;)V
PLcom/android/server/SystemServer$1;->onTransactionError(IIII)V
HSPLcom/android/server/SystemServer$SystemServerDumper;->-$$Nest$maddDumpable(Lcom/android/server/SystemServer$SystemServerDumper;Landroid/util/Dumpable;)V
-HSPLcom/android/server/SystemServer$SystemServerDumper;-><init>(Lcom/android/server/SystemServer;)V
-HSPLcom/android/server/SystemServer$SystemServerDumper;-><init>(Lcom/android/server/SystemServer;Lcom/android/server/SystemServer$SystemServerDumper-IA;)V
-HSPLcom/android/server/SystemServer$SystemServerDumper;->addDumpable(Landroid/util/Dumpable;)V
+HSPLcom/android/server/SystemServer$SystemServerDumper;-><init>()V
+PLcom/android/server/SystemServer$SystemServerDumper;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/SystemServer;->$r8$lambda$0ek3wX68xKbgZMUwZfiBRkUNTFs()V
HSPLcom/android/server/SystemServer;->$r8$lambda$2PdG6KuU0ZTvilD515PGrttj0sk(III)V
PLcom/android/server/SystemServer;->$r8$lambda$CJLFlg8wnqihjN12r-2Qq_1qSd8()V
-PLcom/android/server/SystemServer;->$r8$lambda$CKXj3ds6gqFm1f6gBL5oAqAHviY(Landroid/os/IBinder;Ljava/lang/String;ZLandroid/app/ApplicationErrorReport$ParcelableCrashInfo;I)Z
-PLcom/android/server/SystemServer;->$r8$lambda$R8_YVQM1rsXoSgswlNNq9SsFhyw(Lcom/android/server/SystemServer;Lcom/android/server/utils/TimingsTraceAndSlog;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;ZLandroid/content/Context;ZLandroid/net/ConnectivityManager;Lcom/android/server/net/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/VpnManagerService;Lcom/android/server/VcnManagementService;Lcom/android/server/HsumBootUserInitializer;Lcom/android/server/CountryDetectorService;Lcom/android/server/timedetector/NetworkTimeUpdateService;Lcom/android/server/input/InputManagerService;Lcom/android/server/TelephonyRegistry;Lcom/android/server/media/MediaRouterService;Lcom/android/server/MmsServiceBroker;)V
-PLcom/android/server/SystemServer;->$r8$lambda$SEp7M2CWq7mEDzo8pfMdSQNkGv4()V
-PLcom/android/server/SystemServer;->$r8$lambda$W9fBdZlq2B12i1BBxZIhG9kbSqM(Landroid/os/IBinder;)V
-PLcom/android/server/SystemServer;->-$$Nest$fgetmActivityManagerService(Lcom/android/server/SystemServer;)Lcom/android/server/am/ActivityManagerService;
+PLcom/android/server/SystemServer;->$r8$lambda$CQoJ9no8PBCQWigXqZnOQkSAyrE(Lcom/android/server/SystemServer;Lcom/android/server/utils/TimingsTraceAndSlog;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;Landroid/content/Context;ZLandroid/net/ConnectivityManager;Lcom/android/server/net/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/VpnManagerService;Lcom/android/server/HsumBootUserInitializer;Lcom/android/server/CountryDetectorService;Lcom/android/server/timedetector/NetworkTimeUpdateService;Lcom/android/server/TelephonyRegistry;Lcom/android/server/media/MediaRouterService;Lcom/android/server/MmsServiceBroker;)V
HSPLcom/android/server/SystemServer;-><clinit>()V
HSPLcom/android/server/SystemServer;-><init>()V
-HSPLcom/android/server/SystemServer;->createSystemContext()V
PLcom/android/server/SystemServer;->deviceHasConfigString(Landroid/content/Context;I)Z
+PLcom/android/server/SystemServer;->dump(Ljava/io/PrintWriter;[Ljava/lang/String;)V
HSPLcom/android/server/SystemServer;->getDumpableName()Ljava/lang/String;
HSPLcom/android/server/SystemServer;->getMaxFd()I
-PLcom/android/server/SystemServer;->handleEarlySystemWtf(Landroid/os/IBinder;Ljava/lang/String;ZLandroid/app/ApplicationErrorReport$ParcelableCrashInfo;I)Z
-PLcom/android/server/SystemServer;->isFirstBootOrUpgrade()Z
-HSPLcom/android/server/SystemServer;->lambda$spawnFdLeakCheckThread$0(III)V
-PLcom/android/server/SystemServer;->lambda$startOtherServices$1()V
-PLcom/android/server/SystemServer;->lambda$startOtherServices$2()V
-PLcom/android/server/SystemServer;->lambda$startOtherServices$3()V
-PLcom/android/server/SystemServer;->lambda$startOtherServices$5(Landroid/os/IBinder;)V
-HPLcom/android/server/SystemServer;->lambda$startOtherServices$6(Lcom/android/server/utils/TimingsTraceAndSlog;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;ZLandroid/content/Context;ZLandroid/net/ConnectivityManager;Lcom/android/server/net/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/VpnManagerService;Lcom/android/server/VcnManagementService;Lcom/android/server/HsumBootUserInitializer;Lcom/android/server/CountryDetectorService;Lcom/android/server/timedetector/NetworkTimeUpdateService;Lcom/android/server/input/InputManagerService;Lcom/android/server/TelephonyRegistry;Lcom/android/server/media/MediaRouterService;Lcom/android/server/MmsServiceBroker;)V
HSPLcom/android/server/SystemServer;->main([Ljava/lang/String;)V
HSPLcom/android/server/SystemServer;->performPendingShutdown()V
-HSPLcom/android/server/SystemServer;->run()V
-HSPLcom/android/server/SystemServer;->spawnFdLeakCheckThread()V
PLcom/android/server/SystemServer;->startApexServices(Lcom/android/server/utils/TimingsTraceAndSlog;)V
PLcom/android/server/SystemServer;->startAttentionService(Landroid/content/Context;Lcom/android/server/utils/TimingsTraceAndSlog;)V
HSPLcom/android/server/SystemServer;->startBootstrapServices(Lcom/android/server/utils/TimingsTraceAndSlog;)V
PLcom/android/server/SystemServer;->startContentCaptureService(Landroid/content/Context;Lcom/android/server/utils/TimingsTraceAndSlog;)V
-HPLcom/android/server/SystemServer;->startCoreServices(Lcom/android/server/utils/TimingsTraceAndSlog;)V
-HPLcom/android/server/SystemServer;->startOtherServices(Lcom/android/server/utils/TimingsTraceAndSlog;)V
+PLcom/android/server/SystemServer;->startCoreServices(Lcom/android/server/utils/TimingsTraceAndSlog;)V
+PLcom/android/server/SystemServer;->startOnDeviceIntelligenceService(Lcom/android/server/utils/TimingsTraceAndSlog;)V
+PLcom/android/server/SystemServer;->startOtherServices(Lcom/android/server/utils/TimingsTraceAndSlog;)V
PLcom/android/server/SystemServer;->startRotationResolverService(Landroid/content/Context;Lcom/android/server/utils/TimingsTraceAndSlog;)V
PLcom/android/server/SystemServer;->startSystemCaptionsManagerService(Landroid/content/Context;Lcom/android/server/utils/TimingsTraceAndSlog;)V
PLcom/android/server/SystemServer;->startSystemUi(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/SystemServer;->startTextToSpeechManagerService(Landroid/content/Context;Lcom/android/server/utils/TimingsTraceAndSlog;)V
-PLcom/android/server/SystemServer;->startWearableSensingService(Lcom/android/server/utils/TimingsTraceAndSlog;)V
-PLcom/android/server/SystemServer;->updateWatchdogTimeout(Lcom/android/server/utils/TimingsTraceAndSlog;)V
-PLcom/android/server/SystemServerInitThreadPool$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/SystemServerInitThreadPool$$ExternalSyntheticLambda0;->execute(Ljava/lang/Runnable;)V
-HSPLcom/android/server/SystemServerInitThreadPool$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/SystemServerInitThreadPool;Ljava/lang/String;Ljava/lang/Runnable;)V
-HSPLcom/android/server/SystemServerInitThreadPool$$ExternalSyntheticLambda1;->run()V
-HSPLcom/android/server/SystemServerInitThreadPool;->$r8$lambda$KBkrFsHiqcxWyjNRg1WxRI4WNHA(Lcom/android/server/SystemServerInitThreadPool;Ljava/lang/String;Ljava/lang/Runnable;)V
+PLcom/android/server/SystemServer;->startTextToSpeechManagerService(Lcom/android/server/utils/TimingsTraceAndSlog;)V
+PLcom/android/server/SystemServerInitThreadPool$$ExternalSyntheticLambda1;->execute(Ljava/lang/Runnable;)V
+HSPLcom/android/server/SystemServerInitThreadPool$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/SystemServerInitThreadPool;Ljava/lang/String;Ljava/lang/Runnable;)V
+HSPLcom/android/server/SystemServerInitThreadPool$$ExternalSyntheticLambda2;->run()V
+HSPLcom/android/server/SystemServerInitThreadPool$$ExternalSyntheticOutline0;->m(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
HSPLcom/android/server/SystemServerInitThreadPool;-><clinit>()V
HSPLcom/android/server/SystemServerInitThreadPool;-><init>()V
+PLcom/android/server/SystemServerInitThreadPool;->dump(Ljava/io/PrintWriter;[Ljava/lang/String;)V
HSPLcom/android/server/SystemServerInitThreadPool;->getDumpableName()Ljava/lang/String;
-HSPLcom/android/server/SystemServerInitThreadPool;->lambda$submitTask$0(Ljava/lang/String;Ljava/lang/Runnable;)V
-PLcom/android/server/SystemServerInitThreadPool;->shutdown()V
-HSPLcom/android/server/SystemServerInitThreadPool;->start()Lcom/android/server/SystemServerInitThreadPool;
HSPLcom/android/server/SystemServerInitThreadPool;->submit(Ljava/lang/Runnable;Ljava/lang/String;)Ljava/util/concurrent/Future;
-HSPLcom/android/server/SystemServerInitThreadPool;->submitTask(Ljava/lang/Runnable;Ljava/lang/String;)Ljava/util/concurrent/Future;
PLcom/android/server/SystemService$TargetUser;-><init>(Landroid/content/pm/UserInfo;)V
+PLcom/android/server/SystemService$TargetUser;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/SystemService$TargetUser;->getUserHandle()Landroid/os/UserHandle;
PLcom/android/server/SystemService$TargetUser;->getUserIdentifier()I
PLcom/android/server/SystemService$TargetUser;->isFull()Z
PLcom/android/server/SystemService$TargetUser;->isPreCreated()Z
+PLcom/android/server/SystemService$TargetUser;->isProfile()Z
PLcom/android/server/SystemService$TargetUser;->toString()Ljava/lang/String;
PLcom/android/server/SystemService$UserCompletedEventType;-><init>(I)V
-HPLcom/android/server/SystemService$UserCompletedEventType;->includesOnUserStarting()Z
+PLcom/android/server/SystemService$UserCompletedEventType;->includesOnUserStarting()Z
PLcom/android/server/SystemService$UserCompletedEventType;->includesOnUserSwitching()Z
-HPLcom/android/server/SystemService$UserCompletedEventType;->includesOnUserUnlocked()Z
-HPLcom/android/server/SystemService$UserCompletedEventType;->toString()Ljava/lang/String;
+PLcom/android/server/SystemService$UserCompletedEventType;->includesOnUserUnlocked()Z
+PLcom/android/server/SystemService$UserCompletedEventType;->toString()Ljava/lang/String;
HSPLcom/android/server/SystemService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/SystemService;-><init>(Landroid/content/Context;Ljava/util/List;)V
+PLcom/android/server/SystemService;->dumpSupportedUsers(Ljava/io/PrintWriter;Ljava/lang/String;)V
PLcom/android/server/SystemService;->getBinderService(Ljava/lang/String;)Landroid/os/IBinder;
HSPLcom/android/server/SystemService;->getContext()Landroid/content/Context;
PLcom/android/server/SystemService;->getLocalService(Ljava/lang/Class;)Ljava/lang/Object;
@@ -2918,937 +2481,956 @@ HSPLcom/android/server/SystemService;->publishBinderService(Ljava/lang/String;La
HSPLcom/android/server/SystemService;->publishBinderService(Ljava/lang/String;Landroid/os/IBinder;Z)V
HSPLcom/android/server/SystemService;->publishBinderService(Ljava/lang/String;Landroid/os/IBinder;ZI)V
HSPLcom/android/server/SystemService;->publishLocalService(Ljava/lang/Class;Ljava/lang/Object;)V
-PLcom/android/server/SystemServiceManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/SystemServiceManager;Lcom/android/server/utils/TimingsTraceAndSlog;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$UserCompletedEventType;Ljava/lang/String;Lcom/android/server/SystemService;)V
-HPLcom/android/server/SystemServiceManager$$ExternalSyntheticLambda0;->run()V
-HPLcom/android/server/SystemServiceManager;->$r8$lambda$-x2iNvPr7Y3U1ISY6dmkmFA351E(Lcom/android/server/SystemServiceManager;Lcom/android/server/utils/TimingsTraceAndSlog;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$UserCompletedEventType;Ljava/lang/String;Lcom/android/server/SystemService;)V
+PLcom/android/server/SystemServiceManager$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/SystemServiceManager;Lcom/android/server/utils/TimingsTraceAndSlog;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$UserCompletedEventType;Ljava/lang/String;Lcom/android/server/SystemService;)V
+PLcom/android/server/SystemServiceManager$$ExternalSyntheticLambda3;->run()V
+HSPLcom/android/server/SystemServiceManager$$ExternalSyntheticOutline0;->m(ILjava/lang/String;Ljava/lang/StringBuilder;)V
+HPLcom/android/server/SystemServiceManager$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Ljava/lang/StringBuilder;
+HSPLcom/android/server/SystemServiceManager$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
HSPLcom/android/server/SystemServiceManager;-><clinit>()V
HSPLcom/android/server/SystemServiceManager;-><init>(Landroid/content/Context;)V
+PLcom/android/server/SystemServiceManager;->dump(Ljava/io/PrintWriter;[Ljava/lang/String;)V
HSPLcom/android/server/SystemServiceManager;->ensureSystemDir()Ljava/io/File;
HSPLcom/android/server/SystemServiceManager;->getDumpableName()Ljava/lang/String;
-PLcom/android/server/SystemServiceManager;->getOnUserCompletedEventRunnable(Lcom/android/server/utils/TimingsTraceAndSlog;Lcom/android/server/SystemService;Ljava/lang/String;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$UserCompletedEventType;)Ljava/lang/Runnable;
+PLcom/android/server/SystemServiceManager;->getRuntimeStartUptime()J
PLcom/android/server/SystemServiceManager;->getTargetUser(I)Lcom/android/server/SystemService$TargetUser;
-PLcom/android/server/SystemServiceManager;->isBootCompleted()Z
-HPLcom/android/server/SystemServiceManager;->isJarInTestApex(Ljava/lang/String;)Z
PLcom/android/server/SystemServiceManager;->isRuntimeRestarted()Z
-PLcom/android/server/SystemServiceManager;->isSafeMode()Z
-HPLcom/android/server/SystemServiceManager;->lambda$getOnUserCompletedEventRunnable$1(Lcom/android/server/utils/TimingsTraceAndSlog;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$UserCompletedEventType;Ljava/lang/String;Lcom/android/server/SystemService;)V
HSPLcom/android/server/SystemServiceManager;->loadClassFromLoader(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;
PLcom/android/server/SystemServiceManager;->newTargetUser(I)Lcom/android/server/SystemService$TargetUser;
-PLcom/android/server/SystemServiceManager;->onUser(Lcom/android/server/utils/TimingsTraceAndSlog;Ljava/lang/String;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$TargetUser;)V
-HPLcom/android/server/SystemServiceManager;->onUser(Lcom/android/server/utils/TimingsTraceAndSlog;Ljava/lang/String;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$UserCompletedEventType;)V
-PLcom/android/server/SystemServiceManager;->onUser(Ljava/lang/String;I)V
-PLcom/android/server/SystemServiceManager;->onUserCompletedEvent(II)V
-PLcom/android/server/SystemServiceManager;->onUserStarting(Lcom/android/server/utils/TimingsTraceAndSlog;I)V
-PLcom/android/server/SystemServiceManager;->onUserUnlocked(I)V
-PLcom/android/server/SystemServiceManager;->onUserUnlocking(I)V
-PLcom/android/server/SystemServiceManager;->preSystemReady()V
-PLcom/android/server/SystemServiceManager;->sealStartedServices()V
+PLcom/android/server/SystemServiceManager;->onUser(ILjava/lang/String;)V
+PLcom/android/server/SystemServiceManager;->onUser(Lcom/android/server/utils/TimingsTraceAndSlog;Ljava/lang/String;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$UserCompletedEventType;)V
PLcom/android/server/SystemServiceManager;->setSafeMode(Z)V
-HSPLcom/android/server/SystemServiceManager;->setStartInfo(ZJJ)V
HSPLcom/android/server/SystemServiceManager;->startBootPhase(Lcom/android/server/utils/TimingsTraceAndSlog;I)V
HSPLcom/android/server/SystemServiceManager;->startService(Lcom/android/server/SystemService;)V
HSPLcom/android/server/SystemServiceManager;->startService(Ljava/lang/Class;)Lcom/android/server/SystemService;
HSPLcom/android/server/SystemServiceManager;->startService(Ljava/lang/String;)Lcom/android/server/SystemService;
-PLcom/android/server/SystemServiceManager;->startServiceFromJar(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/SystemService;
+PLcom/android/server/SystemServiceManager;->startServiceFromJar(Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/SystemServiceManager;->updateOtherServicesStartIndex()V
-PLcom/android/server/SystemServiceManager;->useThreadPool(ILjava/lang/String;)Z
-HPLcom/android/server/SystemServiceManager;->useThreadPoolForService(Ljava/lang/String;I)Z
HSPLcom/android/server/SystemServiceManager;->warnIfTooLong(JLcom/android/server/SystemService;Ljava/lang/String;)V
HSPLcom/android/server/SystemTimeZone;-><clinit>()V
-PLcom/android/server/SystemTimeZone;->addDebugLogEntry(Ljava/lang/String;)V
HSPLcom/android/server/SystemTimeZone;->initializeTimeZoneSettingsIfRequired()V
-HSPLcom/android/server/SystemTimeZone;->isValidTimeZoneId(Ljava/lang/String;)Z
+PLcom/android/server/SystemTimeZone;->setTimeZoneId(ILjava/lang/String;Ljava/lang/String;)Z
PLcom/android/server/SystemUpdateManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/SystemUpdateManagerService;->loadSystemUpdateInfoLocked()Landroid/os/Bundle;
PLcom/android/server/SystemUpdateManagerService;->removeInfoFileAndGetDefaultInfoBundleLocked()Landroid/os/Bundle;
+PLcom/android/server/SystemUpdateManagerService;->retrieveSystemUpdateInfo()Landroid/os/Bundle;
+PLcom/android/server/TelephonyRegistry$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;ILjava/lang/String;ILjava/lang/String;)V
PLcom/android/server/TelephonyRegistry$1;-><init>(Lcom/android/server/TelephonyRegistry;)V
PLcom/android/server/TelephonyRegistry$1;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/TelephonyRegistry$2;-><init>(Lcom/android/server/TelephonyRegistry;)V
PLcom/android/server/TelephonyRegistry$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/TelephonyRegistry$ConfigurationProvider$$ExternalSyntheticLambda0;-><init>(Ljava/lang/String;Landroid/os/UserHandle;)V
+PLcom/android/server/TelephonyRegistry$ConfigurationProvider$$ExternalSyntheticLambda0;-><init>(ILandroid/os/UserHandle;Ljava/lang/String;)V
PLcom/android/server/TelephonyRegistry$ConfigurationProvider$$ExternalSyntheticLambda0;->getOrThrow()Ljava/lang/Object;
-PLcom/android/server/TelephonyRegistry$ConfigurationProvider$$ExternalSyntheticLambda3;-><init>(Ljava/lang/String;Landroid/os/UserHandle;)V
-PLcom/android/server/TelephonyRegistry$ConfigurationProvider$$ExternalSyntheticLambda3;->getOrThrow()Ljava/lang/Object;
-PLcom/android/server/TelephonyRegistry$ConfigurationProvider$$ExternalSyntheticLambda6;-><init>()V
-HPLcom/android/server/TelephonyRegistry$ConfigurationProvider$$ExternalSyntheticLambda6;->getOrThrow()Ljava/lang/Object;
-PLcom/android/server/TelephonyRegistry$ConfigurationProvider;->$r8$lambda$C6OjoOM6QjWKuvRgmR-CDyixxwM(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/lang/Boolean;
-HPLcom/android/server/TelephonyRegistry$ConfigurationProvider;->$r8$lambda$fiLSZuDgZl0ukk9Pd8o7udet0Lc()Ljava/lang/Integer;
-PLcom/android/server/TelephonyRegistry$ConfigurationProvider;->$r8$lambda$ia5Kj1BuRYcdkS9zbfBdAW8KTno(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/lang/Boolean;
+PLcom/android/server/TelephonyRegistry$ConfigurationProvider$$ExternalSyntheticLambda6;->getOrThrow()Ljava/lang/Object;
PLcom/android/server/TelephonyRegistry$ConfigurationProvider;-><init>()V
-HPLcom/android/server/TelephonyRegistry$ConfigurationProvider;->getRegistrationLimit()I
-PLcom/android/server/TelephonyRegistry$ConfigurationProvider;->isActiveDataSubIdReadPhoneStateEnforcedInPlatformCompat(Ljava/lang/String;Landroid/os/UserHandle;)Z
-PLcom/android/server/TelephonyRegistry$ConfigurationProvider;->isCallStateReadPhoneStateEnforcedInPlatformCompat(Ljava/lang/String;Landroid/os/UserHandle;)Z
-HPLcom/android/server/TelephonyRegistry$ConfigurationProvider;->lambda$getRegistrationLimit$0()Ljava/lang/Integer;
-PLcom/android/server/TelephonyRegistry$ConfigurationProvider;->lambda$isActiveDataSubIdReadPhoneStateEnforcedInPlatformCompat$3(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/lang/Boolean;
-PLcom/android/server/TelephonyRegistry$ConfigurationProvider;->lambda$isCallStateReadPhoneStateEnforcedInPlatformCompat$2(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/lang/Boolean;
-HPLcom/android/server/TelephonyRegistry$Record;-><init>()V
-PLcom/android/server/TelephonyRegistry$Record;-><init>(Lcom/android/server/TelephonyRegistry$Record-IA;)V
-PLcom/android/server/TelephonyRegistry$Record;->matchCarrierConfigChangeListener()Z
-PLcom/android/server/TelephonyRegistry$Record;->matchCarrierPrivilegesCallback()Z
-PLcom/android/server/TelephonyRegistry$Record;->matchTelephonyCallbackEvent(I)Z
+PLcom/android/server/TelephonyRegistry$Record;->canReadCallLog()Z
+HPLcom/android/server/TelephonyRegistry$Record;->matchTelephonyCallbackEvent(I)Z+]Ljava/util/Set;Ljava/util/HashSet;
+PLcom/android/server/TelephonyRegistry$Record;->toString()Ljava/lang/String;
PLcom/android/server/TelephonyRegistry$TelephonyRegistryDeathRecipient;-><init>(Lcom/android/server/TelephonyRegistry;Landroid/os/IBinder;)V
-PLcom/android/server/TelephonyRegistry;->-$$Nest$fgetmCellIdentity(Lcom/android/server/TelephonyRegistry;)[Landroid/telephony/CellIdentity;
-PLcom/android/server/TelephonyRegistry;->-$$Nest$fgetmHandler(Lcom/android/server/TelephonyRegistry;)Landroid/os/Handler;
-PLcom/android/server/TelephonyRegistry;->-$$Nest$mgetTelephonyManager(Lcom/android/server/TelephonyRegistry;)Landroid/telephony/TelephonyManager;
-PLcom/android/server/TelephonyRegistry;->-$$Nest$mnotifyCellLocationForSubscriber(Lcom/android/server/TelephonyRegistry;ILandroid/telephony/CellIdentity;Z)V
+PLcom/android/server/TelephonyRegistry$TelephonyRegistryDeathRecipient;->binderDied()V
PLcom/android/server/TelephonyRegistry;-><clinit>()V
-HPLcom/android/server/TelephonyRegistry;-><init>(Landroid/content/Context;Lcom/android/server/TelephonyRegistry$ConfigurationProvider;)V
-HPLcom/android/server/TelephonyRegistry;->add(Landroid/os/IBinder;IIZ)Lcom/android/server/TelephonyRegistry$Record;
-HPLcom/android/server/TelephonyRegistry;->addCarrierConfigChangeListener(Lcom/android/internal/telephony/ICarrierConfigChangeListener;Ljava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/TelephonyRegistry;->addCarrierPrivilegesCallback(ILcom/android/internal/telephony/ICarrierPrivilegesCallback;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/TelephonyRegistry;-><init>(Landroid/content/Context;Lcom/android/server/TelephonyRegistry$ConfigurationProvider;)V
+HPLcom/android/server/TelephonyRegistry;->add(IILandroid/os/IBinder;Z)Lcom/android/server/TelephonyRegistry$Record;+]Landroid/os/IBinder;Landroid/os/BinderProxy;,Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub;,Landroid/telephony/TelephonyCallback$IPhoneStateListenerStub;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/TelephonyRegistry;->addCarrierConfigChangeListener(Lcom/android/internal/telephony/ICarrierConfigChangeListener;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/TelephonyRegistry;->addCarrierPrivilegesCallback(ILcom/android/internal/telephony/ICarrierPrivilegesCallback;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/TelephonyRegistry;->addOnOpportunisticSubscriptionsChangedListener(Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
-HPLcom/android/server/TelephonyRegistry;->addOnSubscriptionsChangedListener(Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
-PLcom/android/server/TelephonyRegistry;->broadcastServiceStateChanged(Landroid/telephony/ServiceState;II)V
-PLcom/android/server/TelephonyRegistry;->broadcastSignalStrengthChanged(Landroid/telephony/SignalStrength;II)V
-HPLcom/android/server/TelephonyRegistry;->checkListenerPermission(Ljava/util/Set;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/TelephonyRegistry;->addOnSubscriptionsChangedListener(Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
+PLcom/android/server/TelephonyRegistry;->broadcastCallStateChanged(IIILjava/lang/String;)V
+PLcom/android/server/TelephonyRegistry;->broadcastServiceStateChanged(IILandroid/telephony/ServiceState;)V
+HPLcom/android/server/TelephonyRegistry;->checkListenerPermission(Ljava/util/Set;ILjava/lang/String;Ljava/lang/String;)Z
PLcom/android/server/TelephonyRegistry;->checkNotifyPermission()Z
-PLcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z
PLcom/android/server/TelephonyRegistry;->createCallQuality()Landroid/telephony/CallQuality;
-PLcom/android/server/TelephonyRegistry;->createPreciseCallState()Landroid/telephony/PreciseCallState;
PLcom/android/server/TelephonyRegistry;->createServiceStateBroadcastOptions(IILjava/lang/String;)Landroid/app/BroadcastOptions;
PLcom/android/server/TelephonyRegistry;->createServiceStateIntent(Landroid/telephony/ServiceState;IIZ)Landroid/content/Intent;
PLcom/android/server/TelephonyRegistry;->doesLimitApplyForListeners(II)Z
-PLcom/android/server/TelephonyRegistry;->fillInSignalStrengthNotifierBundle(Landroid/telephony/SignalStrength;Landroid/os/Bundle;)V
-HPLcom/android/server/TelephonyRegistry;->getPhoneIdFromSubId(I)I
-PLcom/android/server/TelephonyRegistry;->getTelephonyManager()Landroid/telephony/TelephonyManager;
+PLcom/android/server/TelephonyRegistry;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/TelephonyRegistry;->getPhoneIdFromSubId(I)I
PLcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V
PLcom/android/server/TelephonyRegistry;->idMatch(Lcom/android/server/TelephonyRegistry$Record;II)Z
-HPLcom/android/server/TelephonyRegistry;->isActiveEmergencySessionPermissionRequired(Ljava/util/Set;)Z
-HPLcom/android/server/TelephonyRegistry;->isLocationPermissionRequired(Ljava/util/Set;)Z
-HPLcom/android/server/TelephonyRegistry;->isPhoneStatePermissionRequired(Ljava/util/Set;Ljava/lang/String;Landroid/os/UserHandle;)Z
-HPLcom/android/server/TelephonyRegistry;->isPrecisePhoneStatePermissionRequired(Ljava/util/Set;)Z
-HPLcom/android/server/TelephonyRegistry;->isPrivilegedPhoneStatePermissionRequired(Ljava/util/Set;)Z
+PLcom/android/server/TelephonyRegistry;->idMatchRelaxed(Lcom/android/server/TelephonyRegistry$Record;II)Z
HPLcom/android/server/TelephonyRegistry;->listen(ZZLjava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;Ljava/util/Set;ZI)V
-HPLcom/android/server/TelephonyRegistry;->listenWithEventList(ZZILjava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;[IZ)V
+PLcom/android/server/TelephonyRegistry;->listenWithEventList(ZZILjava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;[IZ)V
PLcom/android/server/TelephonyRegistry;->log(Ljava/lang/String;)V
+PLcom/android/server/TelephonyRegistry;->loge(Ljava/lang/String;)V
+PLcom/android/server/TelephonyRegistry;->notifyActiveDataSubIdChanged(I)V
PLcom/android/server/TelephonyRegistry;->notifyCallForwardingChangedForSubscriber(IZ)V
+PLcom/android/server/TelephonyRegistry;->notifyCallStateForAllSubs(ILjava/lang/String;)V
PLcom/android/server/TelephonyRegistry;->notifyCarrierConfigChanged(IIII)V
+PLcom/android/server/TelephonyRegistry;->notifyCarrierRoamingNtnEligibleStateChanged(IZ)V
+PLcom/android/server/TelephonyRegistry;->notifyCarrierRoamingNtnSignalStrengthChanged(ILandroid/telephony/satellite/NtnSignalStrength;)V
+PLcom/android/server/TelephonyRegistry;->notifyCellInfoForSubscriber(ILjava/util/List;)V
PLcom/android/server/TelephonyRegistry;->notifyCellLocationForSubscriber(ILandroid/telephony/CellIdentity;Z)V
PLcom/android/server/TelephonyRegistry;->notifyDataEnabled(IIZI)V
-HPLcom/android/server/TelephonyRegistry;->notifyEmergencyNumberList(II)V
+PLcom/android/server/TelephonyRegistry;->notifyEmergencyNumberList(II)V
PLcom/android/server/TelephonyRegistry;->notifyPhoneCapabilityChanged(Landroid/telephony/PhoneCapability;)V
PLcom/android/server/TelephonyRegistry;->notifyRadioPowerStateChanged(III)V
PLcom/android/server/TelephonyRegistry;->notifyServiceStateForPhoneId(IILandroid/telephony/ServiceState;)V
-PLcom/android/server/TelephonyRegistry;->notifySignalStrengthForPhoneId(IILandroid/telephony/SignalStrength;)V
+HPLcom/android/server/TelephonyRegistry;->notifySignalStrengthForPhoneId(IILandroid/telephony/SignalStrength;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/telephony/SignalStrength;Landroid/telephony/SignalStrength;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/internal/telephony/IPhoneStateListener;Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub;,Landroid/telephony/TelephonyCallback$IPhoneStateListenerStub;,Lcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
PLcom/android/server/TelephonyRegistry;->onMultiSimConfigChanged()V
-PLcom/android/server/TelephonyRegistry;->pii(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/TelephonyRegistry;->pii(Ljava/util/List;)Ljava/lang/String;
PLcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V
+PLcom/android/server/TelephonyRegistry;->removeOnSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
PLcom/android/server/TelephonyRegistry;->systemRunning()V
-PLcom/android/server/TelephonyRegistry;->validatePhoneId(I)Z
-HSPLcom/android/server/ThreadPriorityBooster$1;-><init>(Lcom/android/server/ThreadPriorityBooster;)V
-HSPLcom/android/server/ThreadPriorityBooster$1;->initialValue()Lcom/android/server/ThreadPriorityBooster$PriorityState;
+HPLcom/android/server/TelephonyRegistry;->validatePhoneId(I)Z
HSPLcom/android/server/ThreadPriorityBooster$1;->initialValue()Ljava/lang/Object;
HSPLcom/android/server/ThreadPriorityBooster$PriorityState;-><init>()V
-HSPLcom/android/server/ThreadPriorityBooster$PriorityState;-><init>(Lcom/android/server/ThreadPriorityBooster$PriorityState-IA;)V
HSPLcom/android/server/ThreadPriorityBooster;-><init>(II)V
-HSPLcom/android/server/ThreadPriorityBooster;->boost()V
-HSPLcom/android/server/ThreadPriorityBooster;->reset()V
+HSPLcom/android/server/ThreadPriorityBooster;->boost()V+]Ljava/lang/ThreadLocal;Lcom/android/server/ThreadPriorityBooster$1;
+HSPLcom/android/server/ThreadPriorityBooster;->reset()V+]Ljava/lang/ThreadLocal;Lcom/android/server/ThreadPriorityBooster$1;
PLcom/android/server/ThreadPriorityBooster;->setBoostToPriority(I)V
-PLcom/android/server/UiModeManagerInternal;-><init>()V
+HSPLcom/android/server/TradeInModeService$TradeInMode$$ExternalSyntheticOutline0;->m(ILjava/lang/String;Ljava/lang/String;)V
PLcom/android/server/UiModeManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/UiModeManagerService;Landroid/content/Context;Landroid/content/res/Resources;)V
PLcom/android/server/UiModeManagerService$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/UiModeManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/UiModeManagerService;)V
PLcom/android/server/UiModeManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/UiModeManagerService;)V
-PLcom/android/server/UiModeManagerService$10;-><init>(Lcom/android/server/UiModeManagerService;Landroid/os/Handler;)V
-PLcom/android/server/UiModeManagerService$11;-><init>(Lcom/android/server/UiModeManagerService;Landroid/os/Handler;)V
-PLcom/android/server/UiModeManagerService$12;-><init>(Lcom/android/server/UiModeManagerService;)V
-PLcom/android/server/UiModeManagerService$13;-><init>(Lcom/android/server/UiModeManagerService;)V
-PLcom/android/server/UiModeManagerService$1;-><init>(Lcom/android/server/UiModeManagerService;)V
-PLcom/android/server/UiModeManagerService$1;->get()I
+PLcom/android/server/UiModeManagerService$10;-><init>(Lcom/android/server/UiModeManagerService;Landroid/os/Handler;I)V
+PLcom/android/server/UiModeManagerService$10;->onChange(ZLandroid/net/Uri;)V
PLcom/android/server/UiModeManagerService$1;->set(I)V
-PLcom/android/server/UiModeManagerService$2;-><init>(Lcom/android/server/UiModeManagerService;)V
-PLcom/android/server/UiModeManagerService$3;-><init>(Lcom/android/server/UiModeManagerService;)V
-PLcom/android/server/UiModeManagerService$4;-><init>(Lcom/android/server/UiModeManagerService;)V
-HPLcom/android/server/UiModeManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/UiModeManagerService$5;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService$3;-><init>(Lcom/android/server/UiModeManagerService;I)V
+HPLcom/android/server/UiModeManagerService$3;->onReceive$com$android$server$UiModeManagerService$5(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/UiModeManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/UiModeManagerService$6;-><init>(Lcom/android/server/UiModeManagerService;)V
-PLcom/android/server/UiModeManagerService$7;-><init>(Lcom/android/server/UiModeManagerService;)V
-PLcom/android/server/UiModeManagerService$8;-><init>(Lcom/android/server/UiModeManagerService;)V
-PLcom/android/server/UiModeManagerService$9;-><init>(Lcom/android/server/UiModeManagerService;Landroid/os/Handler;)V
+PLcom/android/server/UiModeManagerService$9;-><init>(Lcom/android/server/UiModeManagerService;)V
PLcom/android/server/UiModeManagerService$Injector;-><init>()V
PLcom/android/server/UiModeManagerService$LocalService;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService$Shell;->nightModeToStr(II)Ljava/lang/String;
PLcom/android/server/UiModeManagerService$Stub;-><init>(Lcom/android/server/UiModeManagerService;Landroid/content/Context;)V
PLcom/android/server/UiModeManagerService$Stub;->addCallback(Landroid/app/IUiModeManagerCallback;)V
-HPLcom/android/server/UiModeManagerService$Stub;->addOnProjectionStateChangedListener(Landroid/app/IOnProjectionStateChangedListener;I)V
+PLcom/android/server/UiModeManagerService$Stub;->addOnProjectionStateChangedListener(Landroid/app/IOnProjectionStateChangedListener;I)V
+PLcom/android/server/UiModeManagerService$Stub;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/UiModeManagerService$Stub;->getActiveProjectionTypes()I
PLcom/android/server/UiModeManagerService$Stub;->getContrast()F
PLcom/android/server/UiModeManagerService$Stub;->getCurrentModeType()I
-PLcom/android/server/UiModeManagerService;->$r8$lambda$QPwDb2teQBOty6gCNDQwNIaFO6w(Lcom/android/server/UiModeManagerService;Landroid/content/Context;Landroid/content/res/Resources;)V
-PLcom/android/server/UiModeManagerService;->-$$Nest$fgetmLock(Lcom/android/server/UiModeManagerService;)Ljava/lang/Object;
-PLcom/android/server/UiModeManagerService;->-$$Nest$fgetmProjectionHolders(Lcom/android/server/UiModeManagerService;)Landroid/util/SparseArray;
-PLcom/android/server/UiModeManagerService;->-$$Nest$fgetmProjectionListeners(Lcom/android/server/UiModeManagerService;)Landroid/util/SparseArray;
-PLcom/android/server/UiModeManagerService;->-$$Nest$fgetmUiModeManagerCallbacks(Lcom/android/server/UiModeManagerService;)Landroid/util/SparseArray;
-PLcom/android/server/UiModeManagerService;->-$$Nest$fputmCharging(Lcom/android/server/UiModeManagerService;Z)V
-PLcom/android/server/UiModeManagerService;->-$$Nest$fputmProjectionListeners(Lcom/android/server/UiModeManagerService;Landroid/util/SparseArray;)V
-PLcom/android/server/UiModeManagerService;->-$$Nest$mgetContrastLocked(Lcom/android/server/UiModeManagerService;)F
-PLcom/android/server/UiModeManagerService;->-$$Nest$mpopulateWithRelevantActivePackageNames(Lcom/android/server/UiModeManagerService;ILjava/util/List;)I
PLcom/android/server/UiModeManagerService;-><clinit>()V
PLcom/android/server/UiModeManagerService;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/UiModeManagerService;-><init>(Landroid/content/Context;ZLcom/android/server/twilight/TwilightManager;Lcom/android/server/UiModeManagerService$Injector;)V
+PLcom/android/server/UiModeManagerService;-><init>(Landroid/content/Context;ZLcom/android/server/twilight/TwilightManager;Lcom/android/server/UiModeManagerService$Injector;)V
PLcom/android/server/UiModeManagerService;->applyConfigurationExternallyLocked()V
-PLcom/android/server/UiModeManagerService;->getComputedUiModeConfiguration(I)I
-PLcom/android/server/UiModeManagerService;->getContrastLocked()F
-PLcom/android/server/UiModeManagerService;->initPowerSave()V
PLcom/android/server/UiModeManagerService;->isDeskDockState(I)Z
-PLcom/android/server/UiModeManagerService;->lambda$onStart$1(Landroid/content/Context;Landroid/content/res/Resources;)V
-HPLcom/android/server/UiModeManagerService;->onBootPhase(I)V
+PLcom/android/server/UiModeManagerService;->onBootPhase(I)V
PLcom/android/server/UiModeManagerService;->onStart()V
PLcom/android/server/UiModeManagerService;->populateWithRelevantActivePackageNames(ILjava/util/List;)I
-PLcom/android/server/UiModeManagerService;->registerVrStateListener()V
-PLcom/android/server/UiModeManagerService;->resetNightModeOverrideLocked()Z
PLcom/android/server/UiModeManagerService;->sendConfigurationAndStartDreamOrDockAppLocked(Ljava/lang/String;)V
-PLcom/android/server/UiModeManagerService;->setupWizardCompleteForCurrentUser()Z
-PLcom/android/server/UiModeManagerService;->unregisterTimeChangeEvent()V
-HPLcom/android/server/UiModeManagerService;->updateComputedNightModeLocked(Z)V
+PLcom/android/server/UiModeManagerService;->updateComputedNightModeLocked(Z)V
HPLcom/android/server/UiModeManagerService;->updateConfigurationLocked()V
PLcom/android/server/UiModeManagerService;->updateContrastLocked()Z
HPLcom/android/server/UiModeManagerService;->updateLocked(II)V
PLcom/android/server/UiModeManagerService;->updateNightModeFromSettingsLocked(Landroid/content/Context;Landroid/content/res/Resources;I)V
PLcom/android/server/UiModeManagerService;->updateSystemProperties()V
PLcom/android/server/UiModeManagerService;->verifySetupWizardCompleted()V
-HSPLcom/android/server/UiThread;-><init>()V
HSPLcom/android/server/UiThread;->ensureThreadLocked()V
HSPLcom/android/server/UiThread;->get()Lcom/android/server/UiThread;
HSPLcom/android/server/UiThread;->getHandler()Landroid/os/Handler;
HSPLcom/android/server/UiThread;->run()V
-PLcom/android/server/UpdateLockService$LockWatcher;-><init>(Lcom/android/server/UpdateLockService;Landroid/os/Handler;Ljava/lang/String;)V
+PLcom/android/server/UpdateLockService$LockWatcher;-><init>(Lcom/android/server/UpdateLockService;Landroid/os/Handler;)V
PLcom/android/server/UpdateLockService$LockWatcher;->acquired()V
PLcom/android/server/UpdateLockService$LockWatcher;->released()V
PLcom/android/server/UpdateLockService;-><init>(Landroid/content/Context;)V
PLcom/android/server/UpdateLockService;->acquireUpdateLock(Landroid/os/IBinder;Ljava/lang/String;)V
-PLcom/android/server/UpdateLockService;->makeTag(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/UpdateLockService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/UpdateLockService;->releaseUpdateLock(Landroid/os/IBinder;)V
PLcom/android/server/UpdateLockService;->sendLockChangedBroadcast(Z)V
-PLcom/android/server/UserspaceRebootLogger;->shouldLogUserspaceRebootEvent()Z
+PLcom/android/server/VcnManagementService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/VcnManagementService;Landroid/net/vcn/IVcnUnderlyingNetworkPolicyListener;I)V
+PLcom/android/server/VcnManagementService$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/VcnManagementService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/VcnManagementService;)V
PLcom/android/server/VcnManagementService$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/VcnManagementService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/VcnManagementService;Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/VcnManagementService$$ExternalSyntheticLambda3;->run()V
PLcom/android/server/VcnManagementService$Dependencies;-><init>()V
-PLcom/android/server/VcnManagementService$Dependencies;->getLooper()Landroid/os/Looper;
-PLcom/android/server/VcnManagementService$Dependencies;->newPersistableBundleLockingReadWriteHelper(Ljava/lang/String;)Lcom/android/server/vcn/util/PersistableBundleUtils$LockingReadWriteHelper;
-PLcom/android/server/VcnManagementService$Dependencies;->newTelephonySubscriptionTracker(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionTrackerCallback;)Lcom/android/server/vcn/TelephonySubscriptionTracker;
-PLcom/android/server/VcnManagementService$TrackingNetworkCallback;-><init>(Lcom/android/server/VcnManagementService;)V
-PLcom/android/server/VcnManagementService$TrackingNetworkCallback;-><init>(Lcom/android/server/VcnManagementService;Lcom/android/server/VcnManagementService$TrackingNetworkCallback-IA;)V
+PLcom/android/server/VcnManagementService$PolicyListenerBinderDeath;-><init>(Lcom/android/server/VcnManagementService;Landroid/net/vcn/IVcnUnderlyingNetworkPolicyListener;)V
+PLcom/android/server/VcnManagementService$TrackingNetworkCallback;-><init>()V
+PLcom/android/server/VcnManagementService$TrackingNetworkCallback;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V
+PLcom/android/server/VcnManagementService$TrackingNetworkCallback;->onLinkPropertiesChanged(Landroid/net/Network;Landroid/net/LinkProperties;)V
+PLcom/android/server/VcnManagementService$TrackingNetworkCallback;->onLost(Landroid/net/Network;)V
PLcom/android/server/VcnManagementService$VcnBroadcastReceiver;-><init>(Lcom/android/server/VcnManagementService;)V
-PLcom/android/server/VcnManagementService$VcnBroadcastReceiver;-><init>(Lcom/android/server/VcnManagementService;Lcom/android/server/VcnManagementService$VcnBroadcastReceiver-IA;)V
+PLcom/android/server/VcnManagementService$VcnBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/VcnManagementService$VcnSubscriptionTrackerCallback;-><init>(Lcom/android/server/VcnManagementService;)V
-PLcom/android/server/VcnManagementService$VcnSubscriptionTrackerCallback;-><init>(Lcom/android/server/VcnManagementService;Lcom/android/server/VcnManagementService$VcnSubscriptionTrackerCallback-IA;)V
PLcom/android/server/VcnManagementService$VcnSubscriptionTrackerCallback;->onNewSnapshot(Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;)V
-PLcom/android/server/VcnManagementService;->$r8$lambda$Ef7L22K53jlZvoAbNN6oKOpv0Wo(Lcom/android/server/VcnManagementService;)V
-PLcom/android/server/VcnManagementService;->-$$Nest$fgetmConfigs(Lcom/android/server/VcnManagementService;)Ljava/util/Map;
-PLcom/android/server/VcnManagementService;->-$$Nest$fgetmLastSnapshot(Lcom/android/server/VcnManagementService;)Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;
-PLcom/android/server/VcnManagementService;->-$$Nest$fgetmLock(Lcom/android/server/VcnManagementService;)Ljava/lang/Object;
-PLcom/android/server/VcnManagementService;->-$$Nest$fgetmVcns(Lcom/android/server/VcnManagementService;)Ljava/util/Map;
-PLcom/android/server/VcnManagementService;->-$$Nest$fputmLastSnapshot(Lcom/android/server/VcnManagementService;Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;)V
PLcom/android/server/VcnManagementService;->-$$Nest$mgetSubGroupToSubIdMappings(Lcom/android/server/VcnManagementService;Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;)Ljava/util/Map;
-PLcom/android/server/VcnManagementService;->-$$Nest$mlogInfo(Lcom/android/server/VcnManagementService;Ljava/lang/String;)V
-PLcom/android/server/VcnManagementService;->-$$Nest$sfgetTAG()Ljava/lang/String;
PLcom/android/server/VcnManagementService;-><clinit>()V
-HPLcom/android/server/VcnManagementService;-><init>(Landroid/content/Context;Lcom/android/server/VcnManagementService$Dependencies;)V
-PLcom/android/server/VcnManagementService;->create(Landroid/content/Context;)Lcom/android/server/VcnManagementService;
-PLcom/android/server/VcnManagementService;->getSubGroupToSubIdMappings(Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;)Ljava/util/Map;
-PLcom/android/server/VcnManagementService;->lambda$new$0()V
+PLcom/android/server/VcnManagementService;-><init>(Landroid/content/Context;Lcom/android/server/VcnManagementService$Dependencies;)V
+PLcom/android/server/VcnManagementService;->addVcnUnderlyingNetworkPolicyListener(Landroid/net/vcn/IVcnUnderlyingNetworkPolicyListener;)V
+PLcom/android/server/VcnManagementService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/VcnManagementService;->lambda$dump$10(Landroid/util/IndentingPrintWriter;)V
PLcom/android/server/VcnManagementService;->logInfo(Ljava/lang/String;)V
-PLcom/android/server/VcnManagementService;->systemReady()V
-PLcom/android/server/VpnManagerService$1;-><init>(Lcom/android/server/VpnManagerService;)V
-PLcom/android/server/VpnManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/VpnManagerService$2;-><init>(Lcom/android/server/VpnManagerService;)V
-PLcom/android/server/VpnManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/VpnManagerService$Dependencies;-><init>()V
-PLcom/android/server/VpnManagerService$Dependencies;->createVpn(Landroid/os/Looper;Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/net/INetd;I)Lcom/android/server/connectivity/Vpn;
-PLcom/android/server/VpnManagerService$Dependencies;->getCallingUid()I
-PLcom/android/server/VpnManagerService$Dependencies;->getINetworkManagementService()Landroid/os/INetworkManagementService;
-PLcom/android/server/VpnManagerService$Dependencies;->getMainUserId()I
-PLcom/android/server/VpnManagerService$Dependencies;->getNetd()Landroid/net/INetd;
-PLcom/android/server/VpnManagerService$Dependencies;->getVpnProfileStore()Lcom/android/server/connectivity/VpnProfileStore;
-PLcom/android/server/VpnManagerService$Dependencies;->makeHandlerThread()Landroid/os/HandlerThread;
-PLcom/android/server/VpnManagerService;->-$$Nest$mensureRunningOnHandlerThread(Lcom/android/server/VpnManagerService;)V
-PLcom/android/server/VpnManagerService;->-$$Nest$monUserStarted(Lcom/android/server/VpnManagerService;I)V
-PLcom/android/server/VpnManagerService;->-$$Nest$monUserUnlocked(Lcom/android/server/VpnManagerService;I)V
-PLcom/android/server/VpnManagerService;-><clinit>()V
-PLcom/android/server/VpnManagerService;-><init>(Landroid/content/Context;Lcom/android/server/VpnManagerService$Dependencies;)V
-PLcom/android/server/VpnManagerService;->create(Landroid/content/Context;)Lcom/android/server/VpnManagerService;
-PLcom/android/server/VpnManagerService;->ensureRunningOnHandlerThread()V
-PLcom/android/server/VpnManagerService;->isLockdownVpnEnabled()Z
-PLcom/android/server/VpnManagerService;->log(Ljava/lang/String;)V
-PLcom/android/server/VpnManagerService;->onUserStarted(I)V
-PLcom/android/server/VpnManagerService;->onUserUnlocked(I)V
-PLcom/android/server/VpnManagerService;->registerReceivers()V
-PLcom/android/server/VpnManagerService;->setLockdownTracker(Lcom/android/server/net/LockdownVpnTracker;)V
-PLcom/android/server/VpnManagerService;->startAlwaysOnVpn(I)Z
-PLcom/android/server/VpnManagerService;->systemReady()V
-PLcom/android/server/VpnManagerService;->updateLockdownVpn()Z
+PLcom/android/server/VcnManagementService;->removeVcnUnderlyingNetworkPolicyListener(Landroid/net/vcn/IVcnUnderlyingNetworkPolicyListener;)V
HSPLcom/android/server/Watchdog$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/Watchdog;)V
HSPLcom/android/server/Watchdog$$ExternalSyntheticLambda0;->run()V
-HSPLcom/android/server/Watchdog$BinderThreadMonitor;-><init>()V
-HSPLcom/android/server/Watchdog$BinderThreadMonitor;-><init>(Lcom/android/server/Watchdog$BinderThreadMonitor-IA;)V
HSPLcom/android/server/Watchdog$BinderThreadMonitor;->monitor()V
HSPLcom/android/server/Watchdog$HandlerChecker;-><init>(Landroid/os/Handler;Ljava/lang/String;Ljava/lang/Object;)V
-HSPLcom/android/server/Watchdog$HandlerChecker;-><init>(Landroid/os/Handler;Ljava/lang/String;Ljava/lang/Object;Ljava/time/Clock;)V
-HSPLcom/android/server/Watchdog$HandlerChecker;->addMonitorLocked(Lcom/android/server/Watchdog$Monitor;)V
-HPLcom/android/server/Watchdog$HandlerChecker;->getCompletionStateLocked()I
-HSPLcom/android/server/Watchdog$HandlerChecker;->getThread()Ljava/lang/Thread;
-HSPLcom/android/server/Watchdog$HandlerChecker;->isHandlerPolling()Z
+PLcom/android/server/Watchdog$HandlerChecker;->getCompletionStateLocked()I
PLcom/android/server/Watchdog$HandlerChecker;->pauseForLocked(ILjava/lang/String;)V
HSPLcom/android/server/Watchdog$HandlerChecker;->pauseLocked(Ljava/lang/String;)V
PLcom/android/server/Watchdog$HandlerChecker;->resumeLocked(Ljava/lang/String;)V
HSPLcom/android/server/Watchdog$HandlerChecker;->run()V
HSPLcom/android/server/Watchdog$HandlerChecker;->scheduleCheckLocked(J)V
HSPLcom/android/server/Watchdog$HandlerCheckerAndTimeout;-><init>(Lcom/android/server/Watchdog$HandlerChecker;Ljava/util/Optional;)V
-HSPLcom/android/server/Watchdog$HandlerCheckerAndTimeout;->checker()Lcom/android/server/Watchdog$HandlerChecker;
-HSPLcom/android/server/Watchdog$HandlerCheckerAndTimeout;->customTimeoutMillis()Ljava/util/Optional;
-HSPLcom/android/server/Watchdog$HandlerCheckerAndTimeout;->withCustomTimeout(Lcom/android/server/Watchdog$HandlerChecker;J)Lcom/android/server/Watchdog$HandlerCheckerAndTimeout;
HSPLcom/android/server/Watchdog$HandlerCheckerAndTimeout;->withDefaultTimeout(Lcom/android/server/Watchdog$HandlerChecker;)Lcom/android/server/Watchdog$HandlerCheckerAndTimeout;
PLcom/android/server/Watchdog$RebootRequestReceiver;-><init>(Lcom/android/server/Watchdog;)V
PLcom/android/server/Watchdog$SettingsObserver;-><init>(Landroid/content/Context;Lcom/android/server/Watchdog;)V
PLcom/android/server/Watchdog$SettingsObserver;->onChange()V
-HSPLcom/android/server/Watchdog;->$r8$lambda$IHmOjeSmDoiNkZR0B-wv71mYNoM(Lcom/android/server/Watchdog;)V
HSPLcom/android/server/Watchdog;-><clinit>()V
HSPLcom/android/server/Watchdog;-><init>()V
HSPLcom/android/server/Watchdog;->addMonitor(Lcom/android/server/Watchdog$Monitor;)V
HSPLcom/android/server/Watchdog;->addThread(Landroid/os/Handler;)V
HSPLcom/android/server/Watchdog;->addThread(Landroid/os/Handler;J)V
-PLcom/android/server/Watchdog;->evaluateCheckerCompletionLocked()I
+PLcom/android/server/Watchdog;->dump(Ljava/io/PrintWriter;[Ljava/lang/String;)V
HSPLcom/android/server/Watchdog;->getInstance()Lcom/android/server/Watchdog;
-PLcom/android/server/Watchdog;->init(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;)V
-HPLcom/android/server/Watchdog;->isInterestingJavaProcess(Ljava/lang/String;)Z
HSPLcom/android/server/Watchdog;->pauseWatchingCurrentThread(Ljava/lang/String;)V
PLcom/android/server/Watchdog;->pauseWatchingCurrentThreadFor(ILjava/lang/String;)V
-PLcom/android/server/Watchdog;->pauseWatchingMonitorsFor(ILjava/lang/String;)V
-PLcom/android/server/Watchdog;->processDied(Ljava/lang/String;I)V
-HPLcom/android/server/Watchdog;->processStarted(Ljava/lang/String;I)V
-PLcom/android/server/Watchdog;->registerSettingsObserver(Landroid/content/Context;)V
-HPLcom/android/server/Watchdog;->resumeWatchingCurrentThread(Ljava/lang/String;)V
-HSPLcom/android/server/Watchdog;->run()V
-HSPLcom/android/server/Watchdog;->start()V
-PLcom/android/server/Watchdog;->updateWatchdogTimeout(J)V
+PLcom/android/server/Watchdog;->processStarted(ILjava/lang/String;)V
+PLcom/android/server/Watchdog;->resumeWatchingCurrentThread(Ljava/lang/String;)V
PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection$1;-><init>(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;Landroid/os/Looper;)V
-PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection$1;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection$1;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection$InvocationHandler;-><init>(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;Landroid/os/Looper;)V
-PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->-$$Nest$mnotifyAccessibilityEventInternal(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;ILandroid/view/accessibility/AccessibilityEvent;Z)V
-PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;-><init>(Landroid/content/Context;Landroid/content/ComponentName;Landroid/accessibilityservice/AccessibilityServiceInfo;ILandroid/os/Handler;Ljava/lang/Object;Lcom/android/server/accessibility/AccessibilitySecurityPolicy;Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection$SystemSupport;Landroid/accessibilityservice/AccessibilityTrace;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/accessibility/SystemActionPerformer;Lcom/android/server/accessibility/AccessibilityWindowManager;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection$InvocationHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;-><init>(Landroid/content/Context;Landroid/content/ComponentName;Landroid/accessibilityservice/AccessibilityServiceInfo;ILandroid/os/Handler;Ljava/lang/Object;Lcom/android/server/accessibility/AccessibilitySecurityPolicy;Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/accessibilityservice/AccessibilityTrace;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/accessibility/SystemActionPerformer;Lcom/android/server/accessibility/AccessibilityWindowManager;)V
PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->addWindowTokenForDisplay(I)V
-PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->addWindowTokensForAllDisplays()V
-PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->canReceiveEventsLocked()Z
PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->ensureWindowsAvailableTimedLocked(I)V
HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->findAccessibilityNodeInfoByAccessibilityId(IJILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IJLandroid/os/Bundle;)[Ljava/lang/String;
-PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getCapabilities()I
-PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getComponentName()Landroid/content/ComponentName;
-PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getRelevantEventTypes()I
-PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo;
-PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getWindowTransformationMatrixAndMagnificationSpec(I)Landroid/util/Pair;
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->findFocus(IJIILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;J)[Ljava/lang/String;
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getClientSafely()Landroid/accessibilityservice/IAccessibilityServiceClient;
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getMagnificationConfig(I)Landroid/accessibilityservice/MagnificationConfig;
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getWindow(I)Landroid/view/accessibility/AccessibilityWindowInfo;
HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getWindows()Landroid/view/accessibility/AccessibilityWindowInfo$WindowListSparseArray;
-PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getWindowsByDisplayLocked(I)Ljava/util/List;
PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->intConnTracingEnabled()Z
-PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->notifyAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V
-PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->notifyAccessibilityEventInternal(ILandroid/view/accessibility/AccessibilityEvent;Z)V
-PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->replaceCallbackIfNeeded(Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIIJ)Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->isMagnificationCallbackEnabled(I)Z
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->isServiceDetectsGesturesEnabled(I)Z
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->notifyAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->onDisplayRemoved(I)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->onKeyEvent(Landroid/view/KeyEvent;I)Z
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->onRemoved()V
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->performAccessibilityAction(IJILandroid/os/Bundle;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;J)Z
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->replaceCallbackIfNeeded(Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIIJ)Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->resetLocked()V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->resolveAccessibilityWindowIdForFindFocusLocked(II)I
PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->resolveAccessibilityWindowIdLocked(I)I
-PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->setDisplayTypes(I)V
-HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->setDynamicallyConfigurableProperties(Landroid/accessibilityservice/AccessibilityServiceInfo;)V
-HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->setServiceInfo(Landroid/accessibilityservice/AccessibilityServiceInfo;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->setAttributionTag(Ljava/lang/String;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->setDynamicallyConfigurableProperties(Landroid/accessibilityservice/AccessibilityServiceInfo;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->setMagnificationCallbackEnabled(IZ)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->setOnKeyEventResult(ZI)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->setServiceInfo(Landroid/accessibilityservice/AccessibilityServiceInfo;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->setTouchExplorationPassthroughRegion(ILandroid/graphics/Region;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->supportsFlagForNotImportantViews(Landroid/accessibilityservice/AccessibilityServiceInfo;)Z
PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->svcClientTracingEnabled()Z
PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->svcConnTracingEnabled()Z
-PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->wantsEventLocked(Landroid/view/accessibility/AccessibilityEvent;)Z
-PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->wmTracingEnabled()Z
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda12;->run()V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda13;-><init>()V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda16;-><init>()V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda18;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda18;->onResult(IZ)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda19;-><init>()V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda19;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda22;-><init>()V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda22;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda23;-><init>()V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda23;->test(Ljava/lang/Object;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda24;-><init>()V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda25;-><init>(Ljava/util/List;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda30;-><init>()V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda30;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda35;-><init>()V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda38;-><init>()V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda38;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda41;-><init>()V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda41;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda44;-><init>()V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda46;-><init>(Ljava/lang/String;Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda47;-><init>(Ljava/lang/String;Lcom/android/server/accessibility/AccessibilityUserState;Ljava/util/Set;Ljava/util/Set;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda49;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;I)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda49;->acceptOrThrow(Ljava/lang/Object;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda52;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;J)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda52;->acceptOrThrow(Ljava/lang/Object;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda54;-><init>()V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda54;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda55;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda55;->acceptOrThrow(Ljava/lang/Object;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda56;-><init>()V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda62;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda62;->acceptOrThrow(Ljava/lang/Object;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda63;-><init>()V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda63;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda8;-><init>()V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda9;-><init>()V
-PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda9;->accept(Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityInputFilter$$ExternalSyntheticOutline0;->m(ILjava/lang/String;Ljava/lang/StringBuilder;)V
+PLcom/android/server/accessibility/AccessibilityInputFilter$1;-><init>(Lcom/android/server/accessibility/AccessibilityInputFilter;)V
+PLcom/android/server/accessibility/AccessibilityInputFilter$2;-><init>(Lcom/android/server/accessibility/AccessibilityInputFilter;)V
+PLcom/android/server/accessibility/AccessibilityInputFilter$2;->onMotionEvent(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/AccessibilityInputFilter$EventStreamState;-><init>()V
+PLcom/android/server/accessibility/AccessibilityInputFilter$EventStreamState;->inputSourceValid()Z
+PLcom/android/server/accessibility/AccessibilityInputFilter$EventStreamState;->shouldProcessScroll()Z
+PLcom/android/server/accessibility/AccessibilityInputFilter$EventStreamState;->updateInputSource(I)Z
+PLcom/android/server/accessibility/AccessibilityInputFilter$GenericMotionEventStreamState;-><init>(Lcom/android/server/accessibility/AccessibilityInputFilter;)V
+PLcom/android/server/accessibility/AccessibilityInputFilter$KeyboardEventStreamState;->inputSourceValid()Z
+PLcom/android/server/accessibility/AccessibilityInputFilter$KeyboardEventStreamState;->reset()V
+PLcom/android/server/accessibility/AccessibilityInputFilter$KeyboardEventStreamState;->shouldProcessKeyEvent(Landroid/view/KeyEvent;)Z
+PLcom/android/server/accessibility/AccessibilityInputFilter$KeyboardEventStreamState;->updateInputSource(I)Z
+PLcom/android/server/accessibility/AccessibilityInputFilter$TouchScreenEventStreamState;->reset()V
+PLcom/android/server/accessibility/AccessibilityInputFilter$TouchScreenEventStreamState;->shouldProcessMotionEvent(Landroid/view/MotionEvent;)Z
+PLcom/android/server/accessibility/AccessibilityInputFilter;->-$$Nest$manyServiceWantsGenericMotionEvent(Lcom/android/server/accessibility/AccessibilityInputFilter;Landroid/view/MotionEvent;)Z
+PLcom/android/server/accessibility/AccessibilityInputFilter;-><clinit>()V
+PLcom/android/server/accessibility/AccessibilityInputFilter;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->addFirstEventHandler(ILcom/android/server/accessibility/EventStreamTransformation;)V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->clearEvents(I)V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->createMagnificationGestureHandler(Landroid/content/Context;I)Lcom/android/server/accessibility/magnification/MagnificationGestureHandler;
+PLcom/android/server/accessibility/AccessibilityInputFilter;->disableFeatures()V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->disableFeaturesForDisplay(I)V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->enableFeatures()V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->enableFeaturesForDisplay(Landroid/view/Display;)V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V
+HPLcom/android/server/accessibility/AccessibilityInputFilter;->onInputEvent(Landroid/view/InputEvent;I)V
+HPLcom/android/server/accessibility/AccessibilityInputFilter;->onInputEventInternal(Landroid/view/InputEvent;I)V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->onInstalled()V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->onMotionEvent(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->onUninstalled()V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->refreshMagnificationMode(Landroid/view/Display;)V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->resetAllStreamState()V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->resetStreamStateForDisplay(I)V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->setUserAndEnabledFeatures(II)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda10;-><init>(I)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda10;->accept$com$android$server$accessibility$AccessibilityManagerService$$ExternalSyntheticLambda26(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda10;->accept$com$android$server$accessibility$AccessibilityManagerService$$ExternalSyntheticLambda34(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda10;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda16;-><init>(I)V
+HPLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda16;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda22;-><init>(ILcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda22;->test(Ljava/lang/Object;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda24;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda24;->onResult(IZ)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda2;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda35;-><init>(I)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda35;->accept(Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda3;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda48;-><init>(ILcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda48;->acceptOrThrow(Ljava/lang/Object;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda4;-><init>(I)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda4;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda50;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;J)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda50;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda56;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda56;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda5;->run()V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda6;-><init>(I)V
+HPLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda6;->accept$com$android$server$accessibility$AccessibilityManagerService$$ExternalSyntheticLambda41(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda6;->accept$com$android$server$accessibility$AccessibilityManagerService$$ExternalSyntheticLambda43(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda6;->accept$com$android$server$accessibility$AccessibilityManagerService$$ExternalSyntheticLambda62(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda6;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda7;-><init>(Ljava/lang/String;Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda8;-><init>(Ljava/lang/String;Lcom/android/server/accessibility/AccessibilityUserState;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticOutline0;->m(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticOutline0;->m(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/StringBuilder;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;ILjava/io/PrintWriter;)V
PLcom/android/server/accessibility/AccessibilityManagerService$1;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$1;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
-PLcom/android/server/accessibility/AccessibilityManagerService$3;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$4;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$2;-><init>(ILcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityContentObserver;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/os/Handler;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityContentObserver;->register(Landroid/content/ContentResolver;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/content/Context;Landroid/os/Handler;)V
-HPLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;->getValidDisplayList()Ljava/util/ArrayList;
-PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;->initializeDisplayList()V
+PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityContentObserver;->onChange(ZLandroid/net/Uri;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService$MainHandler;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;->isValidDisplay(Landroid/view/Display;)Z
PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;->onDisplayChanged(I)V
-HPLcom/android/server/accessibility/AccessibilityManagerService$Client;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/view/accessibility/IAccessibilityManagerClient;ILcom/android/server/accessibility/AccessibilityUserState;I)V
-PLcom/android/server/accessibility/AccessibilityManagerService$Client;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/view/accessibility/IAccessibilityManagerClient;ILcom/android/server/accessibility/AccessibilityUserState;ILcom/android/server/accessibility/AccessibilityManagerService$Client-IA;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$Client;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/view/accessibility/IAccessibilityManagerClient;ILcom/android/server/accessibility/AccessibilityUserState;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge$1;->supportsFlagForNotImportantViews(Landroid/accessibilityservice/AccessibilityServiceInfo;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;->getAccessibilityFocusNotLocked()Landroid/view/accessibility/AccessibilityNodeInfo;
PLcom/android/server/accessibility/AccessibilityManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/accessibility/AccessibilityManagerService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/accessibility/AccessibilityManagerService$Lifecycle;->onStart()V
PLcom/android/server/accessibility/AccessibilityManagerService$LocalServiceImpl;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
PLcom/android/server/accessibility/AccessibilityManagerService$LocalServiceImpl;->bindInput()V
-PLcom/android/server/accessibility/AccessibilityManagerService$LocalServiceImpl;->createImeSession(Landroid/util/ArraySet;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService$LocalServiceImpl;->createImeSession(Landroid/util/ArraySet;)V
PLcom/android/server/accessibility/AccessibilityManagerService$LocalServiceImpl;->startInput(Lcom/android/internal/inputmethod/IRemoteAccessibilityInputConnection;Landroid/view/inputmethod/EditorInfo;Z)V
+PLcom/android/server/accessibility/AccessibilityManagerService$LocalServiceImpl;->unbindInput()V
PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/os/Looper;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$4Xl_kWd5nUlOJpqnPRLhjur2PxQ(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$FCnKv_Ut84T3aNcEnU4D12D8l6Y(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/os/RemoteCallbackList;J)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$HPhUjXfCPlcxeEddVlx5oqAs2d4(Lcom/android/server/accessibility/AccessibilityManagerService;JLjava/lang/Object;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$IYYIwjVu0bO5FTn9IS3RVPPeDiY(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$JB6TZPFG0N2h7zdKOCgM4OOCpf8(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/internal/inputmethod/IRemoteAccessibilityInputConnection;Landroid/view/inputmethod/EditorInfo;Z)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$KFC275e1a0Nf4HzkH5ujj0liXIg(Lcom/android/server/accessibility/AccessibilityManagerService;II)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$Qha0yO4BlErsZ1OeDWa1PxGEaNA(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/util/ArraySet;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$VD7IcTrYlIEbLD7q-dNQxZYFZs4(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$XpL8pm9VEQwLAqYA1AVZJvP4ZkA(Lcom/android/server/accessibility/AccessibilityManagerService;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$_gBIiOvr-Vr0gJkDVFAi3JBURXE(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$c2sb4fePdTUn6QD12AOuX4CLSEw(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$cfUn8_rRT4Qib40MwfhpW9o6DZY(Lcom/android/server/accessibility/AccessibilityManagerService;ILjava/lang/Object;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$j68DccWKI_ecJheQGTvw8Cpflic(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$mdjZbluv7Qcd_o_Ype1SGqTxgkY(Landroid/accessibilityservice/AccessibilityServiceInfo;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$p1awZzkw3tQaXOYBFrrZx5_PAC0(Lcom/android/server/accessibility/AccessibilityManagerService;II)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$wYPfPbaBszuUF6sjhczksiy53FI(Lcom/android/server/accessibility/AccessibilityManagerService;I)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->-$$Nest$fgetmCurrentUserId(Lcom/android/server/accessibility/AccessibilityManagerService;)I
-PLcom/android/server/accessibility/AccessibilityManagerService;->-$$Nest$fgetmLock(Lcom/android/server/accessibility/AccessibilityManagerService;)Ljava/lang/Object;
-PLcom/android/server/accessibility/AccessibilityManagerService;->-$$Nest$fgetmPackageManager(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/content/pm/PackageManager;
-PLcom/android/server/accessibility/AccessibilityManagerService;->-$$Nest$fgetmProxyManager(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/ProxyManager;
-PLcom/android/server/accessibility/AccessibilityManagerService;->-$$Nest$fgetmTraceManager(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityTraceManager;
-PLcom/android/server/accessibility/AccessibilityManagerService;->-$$Nest$mcomputeRelevantEventTypesLocked(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)I
-PLcom/android/server/accessibility/AccessibilityManagerService;->-$$Nest$mgetUserStateLocked(Lcom/android/server/accessibility/AccessibilityManagerService;I)Lcom/android/server/accessibility/AccessibilityUserState;
-PLcom/android/server/accessibility/AccessibilityManagerService;->-$$Nest$monBootPhase(Lcom/android/server/accessibility/AccessibilityManagerService;I)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->-$$Nest$munlockUser(Lcom/android/server/accessibility/AccessibilityManagerService;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$ManagerPackageMonitor;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$ManagerPackageMonitor;->onPackageChanged(Ljava/lang/String;I[Ljava/lang/String;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService$ManagerPackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService$ManagerPackageMonitor;->onSomePackagesChanged()V
+PLcom/android/server/accessibility/AccessibilityManagerService$SendWindowStateChangedEventRunnable;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/view/accessibility/AccessibilityEvent;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$SendWindowStateChangedEventRunnable;->run()V
PLcom/android/server/accessibility/AccessibilityManagerService;-><clinit>()V
-HPLcom/android/server/accessibility/AccessibilityManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->addAccessibilityInteractionConnection(Landroid/view/IWindow;Landroid/os/IBinder;Landroid/view/accessibility/IAccessibilityInteractionConnection;Ljava/lang/String;I)I
-HPLcom/android/server/accessibility/AccessibilityManagerService;->addClient(Landroid/view/accessibility/IAccessibilityManagerClient;I)J
-PLcom/android/server/accessibility/AccessibilityManagerService;->bindInput()V
-PLcom/android/server/accessibility/AccessibilityManagerService;->broadcastToClients(Lcom/android/server/accessibility/AccessibilityUserState;Ljava/util/function/Consumer;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->changeCurrentUserForTestAutomationIfNeededLocked(I)V
-HPLcom/android/server/accessibility/AccessibilityManagerService;->computeRelevantEventTypesLocked(Lcom/android/server/accessibility/AccessibilityUserState;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)I
-PLcom/android/server/accessibility/AccessibilityManagerService;->createImeSession(Landroid/util/ArraySet;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->addClient(Landroid/view/accessibility/IAccessibilityManagerClient;I)J
+PLcom/android/server/accessibility/AccessibilityManagerService;->computeRelevantEventTypesLocked(Lcom/android/server/accessibility/AccessibilityUserState;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)I
PLcom/android/server/accessibility/AccessibilityManagerService;->disableAccessibilityMenuToMigrateIfNeeded()V
-PLcom/android/server/accessibility/AccessibilityManagerService;->dispatchAccessibilityEventLocked(Landroid/view/accessibility/AccessibilityEvent;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->dispatchAccessibilityEventLocked(Landroid/view/accessibility/AccessibilityEvent;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->fallBackMagnificationModeSettingsLocked(Lcom/android/server/accessibility/AccessibilityUserState;I)Z
-HPLcom/android/server/accessibility/AccessibilityManagerService;->getClientStateLocked(Lcom/android/server/accessibility/AccessibilityUserState;)I
-PLcom/android/server/accessibility/AccessibilityManagerService;->getCurrentUserIdLocked()I
-HPLcom/android/server/accessibility/AccessibilityManagerService;->getCurrentUserStateLocked()Lcom/android/server/accessibility/AccessibilityUserState;
-HPLcom/android/server/accessibility/AccessibilityManagerService;->getEnabledAccessibilityServiceList(II)Ljava/util/List;
-HPLcom/android/server/accessibility/AccessibilityManagerService;->getFocusColor()I
-HPLcom/android/server/accessibility/AccessibilityManagerService;->getFocusStrokeWidth()I
+PLcom/android/server/accessibility/AccessibilityManagerService;->getClientStateLocked(Lcom/android/server/accessibility/AccessibilityUserState;)I
+PLcom/android/server/accessibility/AccessibilityManagerService;->getCurrentUserState()Lcom/android/server/accessibility/AccessibilityUserState;
+PLcom/android/server/accessibility/AccessibilityManagerService;->getEnabledAccessibilityServiceList(II)Ljava/util/List;
+PLcom/android/server/accessibility/AccessibilityManagerService;->getFocusColor()I
+PLcom/android/server/accessibility/AccessibilityManagerService;->getFocusStrokeWidth()I
PLcom/android/server/accessibility/AccessibilityManagerService;->getInstalledAccessibilityServiceList(I)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/accessibility/AccessibilityManagerService;->getInteractionBridge()Lcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;
+PLcom/android/server/accessibility/AccessibilityManagerService;->getKeyEventDispatcher()Lcom/android/server/accessibility/KeyEventDispatcher;
+PLcom/android/server/accessibility/AccessibilityManagerService;->getLock()Ljava/lang/Object;
PLcom/android/server/accessibility/AccessibilityManagerService;->getMagnificationConnectionManager()Lcom/android/server/accessibility/magnification/MagnificationConnectionManager;
-HPLcom/android/server/accessibility/AccessibilityManagerService;->getRecommendedTimeoutMillis()J
-PLcom/android/server/accessibility/AccessibilityManagerService;->getRecommendedTimeoutMillisLocked(Lcom/android/server/accessibility/AccessibilityUserState;)J
+PLcom/android/server/accessibility/AccessibilityManagerService;->getRecommendedTimeoutMillis()J
PLcom/android/server/accessibility/AccessibilityManagerService;->getSystemActionPerformer()Lcom/android/server/accessibility/SystemActionPerformer;
-PLcom/android/server/accessibility/AccessibilityManagerService;->getTraceManager()Lcom/android/server/accessibility/AccessibilityTraceManager;
-PLcom/android/server/accessibility/AccessibilityManagerService;->getUserState(I)Lcom/android/server/accessibility/AccessibilityUserState;
HPLcom/android/server/accessibility/AccessibilityManagerService;->getUserStateLocked(I)Lcom/android/server/accessibility/AccessibilityUserState;
PLcom/android/server/accessibility/AccessibilityManagerService;->getValidDisplayList()Ljava/util/ArrayList;
HPLcom/android/server/accessibility/AccessibilityManagerService;->getWindowTransformationMatrixAndMagnificationSpec(I)Landroid/util/Pair;
PLcom/android/server/accessibility/AccessibilityManagerService;->init()V
+PLcom/android/server/accessibility/AccessibilityManagerService;->interrupt(I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->isAccessibilityTargetAllowed(Ljava/lang/String;II)Z
PLcom/android/server/accessibility/AccessibilityManagerService;->isClientInPackageAllowlist(Landroid/accessibilityservice/AccessibilityServiceInfo;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$notifyClientsOfServicesStateChange$18(JLjava/lang/Object;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$onPackagesForceStoppedLocked$2(Landroid/accessibilityservice/AccessibilityServiceInfo;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$sendStateToClients$17(ILjava/lang/Object;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$updateFocusAppearanceDataLocked$31(Lcom/android/server/accessibility/AccessibilityUserState;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$updateFocusAppearanceDataLocked$32(Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$updateRelevantEventsLocked$12(Lcom/android/server/accessibility/AccessibilityUserState;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$updateRelevantEventsLocked$13(Lcom/android/server/accessibility/AccessibilityUserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->migrateAccessibilityButtonSettingsIfNecessaryLocked(Lcom/android/server/accessibility/AccessibilityUserState;Ljava/lang/String;I)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->notifyAccessibilityServicesDelayedLocked(Landroid/view/accessibility/AccessibilityEvent;Z)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->notifyAccessibilityServicesDelayedLocked(Landroid/view/accessibility/AccessibilityEvent;Z)V
PLcom/android/server/accessibility/AccessibilityManagerService;->notifyClientsOfServicesStateChange(Landroid/os/RemoteCallbackList;J)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->notifyRefreshMagnificationModeToInputFilter(I)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->onBootPhase(I)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->onClientChangeLocked(Z)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->notifyKeyEvent(Landroid/view/KeyEvent;I)Z
PLcom/android/server/accessibility/AccessibilityManagerService;->onClientChangeLocked(ZZ)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->onMagnificationTransitionEndedLocked(IZ)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->onPackagesForceStoppedLocked([Ljava/lang/String;Lcom/android/server/accessibility/AccessibilityUserState;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService;->onUserStateChangedLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->onServiceInfoChangedLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->onTouchInteractionEnd()V
HPLcom/android/server/accessibility/AccessibilityManagerService;->onUserStateChangedLocked(Lcom/android/server/accessibility/AccessibilityUserState;Z)V
PLcom/android/server/accessibility/AccessibilityManagerService;->parseAccessibilityServiceInfos(I)Ljava/util/List;
-PLcom/android/server/accessibility/AccessibilityManagerService;->parseAccessibilityShortcutInfos(I)Ljava/util/List;
PLcom/android/server/accessibility/AccessibilityManagerService;->readAccessibilityButtonTargetComponentLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService;->readAccessibilityButtonTargetsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService;->readAccessibilityShortcutKeySettingLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->readAccessibilityShortcutTargetsLocked(Lcom/android/server/accessibility/AccessibilityUserState;I)Z
PLcom/android/server/accessibility/AccessibilityManagerService;->readAlwaysOnMagnificationLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService;->readAudioDescriptionEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService;->readAutoclickEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
PLcom/android/server/accessibility/AccessibilityManagerService;->readColonDelimitedSettingToSet(Ljava/lang/String;ILjava/util/function/Function;Ljava/util/Set;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->readColonDelimitedStringToSet(Ljava/lang/String;Ljava/util/function/Function;Ljava/util/Set;Z)V
PLcom/android/server/accessibility/AccessibilityManagerService;->readComponentNamesFromSettingLocked(Ljava/lang/String;ILjava/util/Set;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->readConfigurationForUserStateLocked(Lcom/android/server/accessibility/AccessibilityUserState;Ljava/util/List;Ljava/util/List;)Z
+HPLcom/android/server/accessibility/AccessibilityManagerService;->readConfigurationForUserStateLocked(Lcom/android/server/accessibility/AccessibilityUserState;Ljava/util/List;Ljava/util/List;)Z
PLcom/android/server/accessibility/AccessibilityManagerService;->readEnabledAccessibilityServicesLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService;->readHighTextContrastEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService;->readInstalledAccessibilityServiceLocked(Lcom/android/server/accessibility/AccessibilityUserState;Ljava/util/List;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService;->readInstalledAccessibilityShortcutLocked(Lcom/android/server/accessibility/AccessibilityUserState;Ljava/util/List;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService;->readMagnificationCapabilitiesLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService;->readMagnificationEnabledSettingsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
PLcom/android/server/accessibility/AccessibilityManagerService;->readMagnificationFollowTypingLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService;->readMagnificationModeForDefaultDisplayLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService;->readTouchExplorationEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->readMouseKeysEnabledLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
PLcom/android/server/accessibility/AccessibilityManagerService;->readTouchExplorationGrantedAccessibilityServicesLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
PLcom/android/server/accessibility/AccessibilityManagerService;->readUserRecommendedUiTimeoutSettingsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService;->registerBroadcastReceivers()V
-PLcom/android/server/accessibility/AccessibilityManagerService;->registerUiTestAutomationService(Landroid/os/IBinder;Landroid/accessibilityservice/IAccessibilityServiceClient;Landroid/accessibilityservice/AccessibilityServiceInfo;II)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleBindInput()V
-PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleCreateImeSession(Landroid/util/ArraySet;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->removeAccessibilityInteractionConnection(Landroid/view/IWindow;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->removeClient(Landroid/view/accessibility/IAccessibilityManagerClient;I)Z
PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleNotifyClientsOfServicesStateChangeLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleStartInput(Lcom/android/internal/inputmethod/IRemoteAccessibilityInputConnection;Landroid/view/inputmethod/EditorInfo;Z)V
PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleUpdateClientsIfNeededLocked(Lcom/android/server/accessibility/AccessibilityUserState;Z)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleUpdateFingerprintGestureHandling(Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleUpdateInputFilter(Lcom/android/server/accessibility/AccessibilityUserState;)V
HPLcom/android/server/accessibility/AccessibilityManagerService;->sendAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;I)V
PLcom/android/server/accessibility/AccessibilityManagerService;->sendAccessibilityEventForCurrentUserLocked(Landroid/view/accessibility/AccessibilityEvent;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->sendAccessibilityEventLocked(Landroid/view/accessibility/AccessibilityEvent;I)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->sendPendingWindowStateChangedEventsForAvailableWindowLocked(I)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->sendServicesStateChanged(Landroid/os/RemoteCallbackList;J)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->sendStateToAllClients(II)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->sendStateToClients(II)V
PLcom/android/server/accessibility/AccessibilityManagerService;->sendStateToClients(ILandroid/os/RemoteCallbackList;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->setAccessibilityWindowAttributes(IIILandroid/view/accessibility/AccessibilityWindowAttributes;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->setMagnificationConnection(Landroid/view/accessibility/IMagnificationConnection;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->setNonA11yToolNotificationToMatchSafetyCenter()V
-PLcom/android/server/accessibility/AccessibilityManagerService;->startInput(Lcom/android/internal/inputmethod/IRemoteAccessibilityInputConnection;Landroid/view/inputmethod/EditorInfo;Z)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->startFlashNotificationSequence(Ljava/lang/String;ILandroid/os/IBinder;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->stopFlashNotificationSequence(Ljava/lang/String;)Z
PLcom/android/server/accessibility/AccessibilityManagerService;->switchUser(I)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->unlockUser(I)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityButtonTargetsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
-HPLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityShortcutKeyTargetsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->updateFilterKeyEventsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->updateFingerprintGestureHandling(Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->updateFocusAppearanceDataLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->updateInputFilter(Lcom/android/server/accessibility/AccessibilityUserState;)V
-HPLcom/android/server/accessibility/AccessibilityManagerService;->updateLegacyCapabilitiesLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityShortcutTargetsLocked(Lcom/android/server/accessibility/AccessibilityUserState;I)V
HPLcom/android/server/accessibility/AccessibilityManagerService;->updateMagnificationCapabilitiesSettingsChangeLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->updateMagnificationConnectionIfNeeded(Lcom/android/server/accessibility/AccessibilityUserState;)V
-HPLcom/android/server/accessibility/AccessibilityManagerService;->updateMagnificationLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->updateMagnificationModeChangeSettingsForAllDisplaysLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->updateMagnificationLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->updateMagnificationModeChangeSettingsLocked(Lcom/android/server/accessibility/AccessibilityUserState;I)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->updatePerformGesturesLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->updateRecommendedUiTimeoutLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->updateRelevantEventsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
-HPLcom/android/server/accessibility/AccessibilityManagerService;->updateServicesLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
-HPLcom/android/server/accessibility/AccessibilityManagerService;->updateTouchExplorationLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
-HPLcom/android/server/accessibility/AccessibilityManagerService;->updateWindowsForAccessibilityCallbackLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->userHasListeningMagnificationServicesLocked(Lcom/android/server/accessibility/AccessibilityUserState;I)Z
-PLcom/android/server/accessibility/AccessibilityManagerService;->userHasMagnificationServicesLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->updateShortcutTargetSets(Lcom/android/server/accessibility/AccessibilityUserState;Ljava/util/Set;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->updateShortcutsForCurrentNavigationMode()V
+PLcom/android/server/accessibility/AccessibilityManagerService;->updateWindowsForAccessibilityCallbackLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy$$ExternalSyntheticOutline0;->m(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/accessibility/AccessibilitySecurityPolicy;-><clinit>()V
-PLcom/android/server/accessibility/AccessibilitySecurityPolicy;-><init>(Lcom/android/server/accessibility/PolicyWarningUIController;Landroid/content/Context;Lcom/android/server/accessibility/AccessibilitySecurityPolicy$AccessibilityUserManager;Landroid/content/pm/PackageManagerInternal;)V
-PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->canDispatchAccessibilityEventLocked(ILandroid/view/accessibility/AccessibilityEvent;)Z
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;-><init>(Lcom/android/server/accessibility/PolicyWarningUIController;Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/content/pm/PackageManagerInternal;)V
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->canControlMagnification(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;)Z
PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->canGetAccessibilityNodeInfoLocked(ILcom/android/server/accessibility/AbstractAccessibilityServiceConnection;I)Z
-PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->canRegisterService(Landroid/content/pm/ServiceInfo;)Z
PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->canRetrieveWindowContentLocked(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;)Z
-PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->canRetrieveWindowsLocked(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;)Z
-PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->checkAccessibilityAccess(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;)Z
-PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->computeValidReportedPackages(Ljava/lang/String;I)[Ljava/lang/String;
-PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->hasPermission(Ljava/lang/String;)Z
+HPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->checkAccessibilityAccess(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;)Z+]Landroid/accessibilityservice/AccessibilityServiceInfo;Landroid/accessibilityservice/AccessibilityServiceInfo;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;Lcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge$1;,Lcom/android/server/accessibility/AccessibilityServiceConnection;
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->computeValidReportedPackages(ILjava/lang/String;)[Ljava/lang/String;
PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->isCallerInteractingAcrossUsers(I)Z
-PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->isRetrievalAllowingWindowLocked(II)Z
-PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->isValidPackageForUid(Ljava/lang/String;I)Z
+HPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->isRetrievalAllowingWindowLocked(II)Z
PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->onSwitchUserLocked(ILjava/util/Set;)V
HPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->resolveCallingUserIdEnforcingPermissionsLocked(I)I
-PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->resolveProfileParentLocked(I)I
+HPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->resolveProfileParentLocked(I)I
PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->resolveValidReportedPackageLocked(Ljava/lang/CharSequence;III)Ljava/lang/String;
-PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->setAccessibilityWindowManager(Lcom/android/server/accessibility/AccessibilityWindowManager;)V
PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->setSendingNonA11yToolNotificationLocked(Z)V
-PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->updateEventSourceLocked(Landroid/view/accessibility/AccessibilityEvent;)V
-PLcom/android/server/accessibility/AccessibilityTraceManager;-><clinit>()V
+PLcom/android/server/accessibility/AccessibilityServiceConnection$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityServiceConnection;-><init>(Lcom/android/server/accessibility/AccessibilityUserState;Landroid/content/Context;Landroid/content/ComponentName;Landroid/accessibilityservice/AccessibilityServiceInfo;ILandroid/os/Handler;Ljava/lang/Object;Lcom/android/server/accessibility/AccessibilitySecurityPolicy;Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/accessibilityservice/AccessibilityTrace;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/accessibility/SystemActionPerformer;Lcom/android/server/accessibility/AccessibilityWindowManager;Lcom/android/server/wm/ActivityTaskManagerInternal;)V
+PLcom/android/server/accessibility/AccessibilityServiceConnection;->getServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo;
+HPLcom/android/server/accessibility/AccessibilityServiceConnection;->hasRightsToCurrentUserLocked()Z
+PLcom/android/server/accessibility/AccessibilityServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/accessibility/AccessibilityServiceConnection;->resetLocked()V
+PLcom/android/server/accessibility/AccessibilityServiceConnection;->setFocusAppearance(II)V
+PLcom/android/server/accessibility/AccessibilityServiceConnection;->unbindLocked()V
PLcom/android/server/accessibility/AccessibilityTraceManager;-><init>(Lcom/android/server/wm/WindowManagerInternal$AccessibilityControllerInternal;Lcom/android/server/accessibility/AccessibilityManagerService;Ljava/lang/Object;)V
-PLcom/android/server/accessibility/AccessibilityTraceManager;->getInstance(Lcom/android/server/wm/WindowManagerInternal$AccessibilityControllerInternal;Lcom/android/server/accessibility/AccessibilityManagerService;Ljava/lang/Object;)Lcom/android/server/accessibility/AccessibilityTraceManager;
-HPLcom/android/server/accessibility/AccessibilityTraceManager;->getTraceStateForAccessibilityManagerClientState()I
+PLcom/android/server/accessibility/AccessibilityTraceManager;->getTraceStateForAccessibilityManagerClientState()I
HPLcom/android/server/accessibility/AccessibilityTraceManager;->isA11yTracingEnabledForTypes(J)Z
-PLcom/android/server/accessibility/AccessibilityUserState;-><clinit>()V
-HPLcom/android/server/accessibility/AccessibilityUserState;-><init>(ILandroid/content/Context;Lcom/android/server/accessibility/AccessibilityUserState$ServiceInfoChangeListener;)V
-PLcom/android/server/accessibility/AccessibilityUserState;->getBindInstantServiceAllowedLocked()Z
-PLcom/android/server/accessibility/AccessibilityUserState;->getBindingServicesLocked()Ljava/util/Set;
-PLcom/android/server/accessibility/AccessibilityUserState;->getClientStateLocked(ZI)I
-PLcom/android/server/accessibility/AccessibilityUserState;->getCrashedServicesLocked()Ljava/util/Set;
-PLcom/android/server/accessibility/AccessibilityUserState;->getFocusColorLocked()I
-PLcom/android/server/accessibility/AccessibilityUserState;->getFocusStrokeWidthLocked()I
-PLcom/android/server/accessibility/AccessibilityUserState;->getInteractiveUiTimeoutLocked()I
-PLcom/android/server/accessibility/AccessibilityUserState;->getLastSentClientStateLocked()I
-PLcom/android/server/accessibility/AccessibilityUserState;->getMagnificationCapabilitiesLocked()I
+PLcom/android/server/accessibility/AccessibilityUserState$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/accessibility/AccessibilityUserState;I)V
+PLcom/android/server/accessibility/AccessibilityUserState$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityUserState$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityUserState;-><init>(ILandroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/AccessibilityUserState;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/accessibility/AccessibilityUserState;->dumpShortcutTargets(ILjava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/accessibility/AccessibilityUserState;->getA11yFeatureToTileService()Ljava/util/Map;
PLcom/android/server/accessibility/AccessibilityUserState;->getMagnificationModeLocked(I)I
-PLcom/android/server/accessibility/AccessibilityUserState;->getNonInteractiveUiTimeoutLocked()I
-PLcom/android/server/accessibility/AccessibilityUserState;->getShortcutTargetsLocked(I)Landroid/util/ArraySet;
-PLcom/android/server/accessibility/AccessibilityUserState;->getTargetAssignedToAccessibilityButton()Ljava/lang/String;
-PLcom/android/server/accessibility/AccessibilityUserState;->getUserInteractiveUiTimeoutLocked()I
-PLcom/android/server/accessibility/AccessibilityUserState;->getUserNonInteractiveUiTimeoutLocked()I
-PLcom/android/server/accessibility/AccessibilityUserState;->isAlwaysOnMagnificationEnabled()Z
-PLcom/android/server/accessibility/AccessibilityUserState;->isAudioDescriptionByDefaultEnabledLocked()Z
-PLcom/android/server/accessibility/AccessibilityUserState;->isAutoclickEnabledLocked()Z
-PLcom/android/server/accessibility/AccessibilityUserState;->isFilterKeyEventsEnabledLocked()Z
+HPLcom/android/server/accessibility/AccessibilityUserState;->getShortcutTargetsLocked(I)Landroid/util/ArraySet;+]Ljava/util/HashMap;Ljava/util/HashMap;
PLcom/android/server/accessibility/AccessibilityUserState;->isHandlingAccessibilityEventsLocked()Z
-PLcom/android/server/accessibility/AccessibilityUserState;->isMagnificationFollowTypingEnabled()Z
-PLcom/android/server/accessibility/AccessibilityUserState;->isMagnificationSingleFingerTripleTapEnabledLocked()Z
-PLcom/android/server/accessibility/AccessibilityUserState;->isMagnificationTwoFingerTripleTapEnabledLocked()Z
-PLcom/android/server/accessibility/AccessibilityUserState;->isPerformGesturesEnabledLocked()Z
-PLcom/android/server/accessibility/AccessibilityUserState;->isSendMotionEventsEnabled()Z
-HPLcom/android/server/accessibility/AccessibilityUserState;->isShortcutMagnificationEnabledLocked()Z
-PLcom/android/server/accessibility/AccessibilityUserState;->isTextHighContrastEnabledLocked()Z
-PLcom/android/server/accessibility/AccessibilityUserState;->isTouchExplorationEnabledLocked()Z
-PLcom/android/server/accessibility/AccessibilityUserState;->isValidMagnificationModeLocked(I)Z
+PLcom/android/server/accessibility/AccessibilityUserState;->isShortcutMagnificationEnabledLocked()Z
PLcom/android/server/accessibility/AccessibilityUserState;->onSwitchToAnotherUserLocked()V
-PLcom/android/server/accessibility/AccessibilityUserState;->resetServiceDetectsGestures()V
-PLcom/android/server/accessibility/AccessibilityUserState;->setAccessibilityFocusOnlyInActiveWindow(Z)V
-PLcom/android/server/accessibility/AccessibilityUserState;->setFilterKeyEventsEnabledLocked(Z)V
-PLcom/android/server/accessibility/AccessibilityUserState;->setInteractiveUiTimeoutLocked(I)V
-PLcom/android/server/accessibility/AccessibilityUserState;->setLastSentClientStateLocked(I)V
-PLcom/android/server/accessibility/AccessibilityUserState;->setMagnificationCapabilitiesLocked(I)V
-PLcom/android/server/accessibility/AccessibilityUserState;->setMagnificationModeLocked(II)V
-PLcom/android/server/accessibility/AccessibilityUserState;->setMultiFingerGesturesLocked(Z)V
-PLcom/android/server/accessibility/AccessibilityUserState;->setNonInteractiveUiTimeoutLocked(I)V
-PLcom/android/server/accessibility/AccessibilityUserState;->setPerformGesturesEnabledLocked(Z)V
-PLcom/android/server/accessibility/AccessibilityUserState;->setSendMotionEventsEnabled(Z)V
-PLcom/android/server/accessibility/AccessibilityUserState;->setServiceHandlesDoubleTapLocked(Z)V
-PLcom/android/server/accessibility/AccessibilityUserState;->setTwoFingerPassthroughLocked(Z)V
-PLcom/android/server/accessibility/AccessibilityUserState;->unbindAllServicesLocked()V
-PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->-$$Nest$fgetmDisplayId(Lcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;)I
-PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->-$$Nest$fgetmIsProxy(Lcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;)Z
+PLcom/android/server/accessibility/AccessibilityUserState;->removeDisabledServicesFromTemporaryStatesLocked()V
+PLcom/android/server/accessibility/AccessibilityUserState;->removeServiceLocked(Lcom/android/server/accessibility/AccessibilityServiceConnection;)V
+PLcom/android/server/accessibility/AccessibilityUserState;->updateShortcutTargetsLocked(ILjava/util/Set;)Z
+PLcom/android/server/accessibility/AccessibilityWindowManager$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;-><init>(Lcom/android/server/accessibility/AccessibilityWindowManager;I)V
-PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->cacheWindows(Ljava/util/List;)V
-HPLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->computePartialInteractiveRegionForWindowLocked(IZLandroid/graphics/Region;)Z
-PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->findA11yWindowInfoByIdLocked(I)Landroid/view/accessibility/AccessibilityWindowInfo;
-PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->findWindowInfoByIdLocked(I)Landroid/view/WindowInfo;
-PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->getTypeForWindowManagerWindowType(I)I
-PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->getWindowListLocked()Ljava/util/List;
-PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->isTrackingWindowsLocked()Z
-PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->onWindowsForAccessibilityChanged(ZILandroid/os/IBinder;Ljava/util/List;)V
-PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->populateReportedWindowLocked(ILandroid/view/WindowInfo;Landroid/util/SparseArray;)Landroid/view/accessibility/AccessibilityWindowInfo;
-PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->sendEventsForChangedWindowsLocked(Ljava/util/List;Landroid/util/SparseArray;)V
-PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->shouldUpdateWindowsLocked(ZLjava/util/List;)Z
+HPLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->createWindowInfoListLocked(Landroid/graphics/Point;Ljava/util/List;)Ljava/util/List;
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->getWatchOutsideTouchWindowIdLocked(I)Ljava/util/List;
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->setAccessibilityFocusedWindowLocked(I)Z
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->shouldUpdateWindowsLocked(Ljava/util/List;)Z
PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->startTrackingWindowsLocked()V
-PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->updateWindowWithWindowAttributes(Landroid/view/WindowInfo;Landroid/view/accessibility/AccessibilityWindowAttributes;)V
-PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->updateWindowsByWindowAttributesLocked(Ljava/util/List;)V
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->stopTrackingWindowsLocked()V
HPLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->updateWindowsLocked(ILjava/util/List;)V
-PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->windowChangedNoLayer(Landroid/view/WindowInfo;Landroid/view/WindowInfo;)Z
PLcom/android/server/accessibility/AccessibilityWindowManager$RemoteAccessibilityConnection;-><init>(Lcom/android/server/accessibility/AccessibilityWindowManager;ILandroid/view/accessibility/IAccessibilityInteractionConnection;Ljava/lang/String;II)V
-PLcom/android/server/accessibility/AccessibilityWindowManager$RemoteAccessibilityConnection;->getPackageName()Ljava/lang/String;
-PLcom/android/server/accessibility/AccessibilityWindowManager$RemoteAccessibilityConnection;->getRemote()Landroid/view/accessibility/IAccessibilityInteractionConnection;
-PLcom/android/server/accessibility/AccessibilityWindowManager$RemoteAccessibilityConnection;->getUid()I
-PLcom/android/server/accessibility/AccessibilityWindowManager$RemoteAccessibilityConnection;->linkToDeath()V
-PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmAccessibilityEventSender(Lcom/android/server/accessibility/AccessibilityWindowManager;)Lcom/android/server/accessibility/AccessibilityWindowManager$AccessibilityEventSender;
-PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmAccessibilityFocusedDisplayId(Lcom/android/server/accessibility/AccessibilityWindowManager;)I
-PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmAccessibilityFocusedWindowId(Lcom/android/server/accessibility/AccessibilityWindowManager;)I
-PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmAccessibilityUserManager(Lcom/android/server/accessibility/AccessibilityWindowManager;)Lcom/android/server/accessibility/AccessibilitySecurityPolicy$AccessibilityUserManager;
-PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmActiveWindowId(Lcom/android/server/accessibility/AccessibilityWindowManager;)I
-PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmLock(Lcom/android/server/accessibility/AccessibilityWindowManager;)Ljava/lang/Object;
-PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmTopFocusedDisplayId(Lcom/android/server/accessibility/AccessibilityWindowManager;)I
-PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmTopFocusedWindowToken(Lcom/android/server/accessibility/AccessibilityWindowManager;)Landroid/os/IBinder;
-PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmTouchInteractionInProgress(Lcom/android/server/accessibility/AccessibilityWindowManager;)Z
-PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmWindowAttributes(Lcom/android/server/accessibility/AccessibilityWindowManager;)Landroid/util/SparseArray;
-PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmWindowManagerInternal(Lcom/android/server/accessibility/AccessibilityWindowManager;)Lcom/android/server/wm/WindowManagerInternal;
-PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fputmActiveWindowId(Lcom/android/server/accessibility/AccessibilityWindowManager;I)V
-PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fputmLastNonProxyTopFocusedDisplayId(Lcom/android/server/accessibility/AccessibilityWindowManager;I)V
-PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fputmTopFocusedDisplayId(Lcom/android/server/accessibility/AccessibilityWindowManager;I)V
-PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fputmTopFocusedWindowId(Lcom/android/server/accessibility/AccessibilityWindowManager;I)V
-PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fputmTopFocusedWindowToken(Lcom/android/server/accessibility/AccessibilityWindowManager;Landroid/os/IBinder;)V
-PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$misProxyed(Lcom/android/server/accessibility/AccessibilityWindowManager;I)Z
-PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$mtraceWMEnabled(Lcom/android/server/accessibility/AccessibilityWindowManager;)Z
-PLcom/android/server/accessibility/AccessibilityWindowManager;-><init>(Ljava/lang/Object;Landroid/os/Handler;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/accessibility/AccessibilityWindowManager$AccessibilityEventSender;Lcom/android/server/accessibility/AccessibilitySecurityPolicy;Lcom/android/server/accessibility/AccessibilitySecurityPolicy$AccessibilityUserManager;Lcom/android/server/accessibility/AccessibilityTraceManager;)V
-HPLcom/android/server/accessibility/AccessibilityWindowManager;->addAccessibilityInteractionConnection(Landroid/view/IWindow;Landroid/os/IBinder;Landroid/view/accessibility/IAccessibilityInteractionConnection;Ljava/lang/String;I)I
-PLcom/android/server/accessibility/AccessibilityWindowManager;->computePartialInteractiveRegionForWindowLocked(ILandroid/graphics/Region;)Z
-PLcom/android/server/accessibility/AccessibilityWindowManager;->findA11yWindowInfoByIdLocked(I)Landroid/view/accessibility/AccessibilityWindowInfo;
+PLcom/android/server/accessibility/AccessibilityWindowManager;-><init>(Ljava/lang/Object;Lcom/android/server/accessibility/AccessibilityManagerService$MainHandler;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilitySecurityPolicy;Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityTraceManager;)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->clearAccessibilityFocusLocked(I)V
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->computePartialInteractiveRegionForWindowLocked(ILandroid/graphics/Region;)Z
+PLcom/android/server/accessibility/AccessibilityWindowManager;->disassociateLocked(Landroid/os/IBinder;)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->findA11yWindowInfoByIdLocked(I)Landroid/view/accessibility/AccessibilityWindowInfo;
PLcom/android/server/accessibility/AccessibilityWindowManager;->findFocusedWindowId(I)I
PLcom/android/server/accessibility/AccessibilityWindowManager;->findWindowIdLocked(ILandroid/os/IBinder;)I
-PLcom/android/server/accessibility/AccessibilityWindowManager;->findWindowInfoByIdLocked(I)Landroid/view/WindowInfo;
PLcom/android/server/accessibility/AccessibilityWindowManager;->getActiveWindowId(I)I
-PLcom/android/server/accessibility/AccessibilityWindowManager;->getConnectionLocked(II)Lcom/android/server/accessibility/AccessibilityWindowManager$RemoteAccessibilityConnection;
-PLcom/android/server/accessibility/AccessibilityWindowManager;->getDisplayIdByUserIdAndWindowIdLocked(II)I
-PLcom/android/server/accessibility/AccessibilityWindowManager;->getDisplayListLocked(I)Ljava/util/ArrayList;
-HPLcom/android/server/accessibility/AccessibilityWindowManager;->getDisplayWindowObserverByWindowIdLocked(I)Lcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;
-HPLcom/android/server/accessibility/AccessibilityWindowManager;->getHostTokenLocked(Landroid/os/IBinder;)Landroid/os/IBinder;
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->getConnectionLocked(II)Lcom/android/server/accessibility/AccessibilityWindowManager$RemoteAccessibilityConnection;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->getDefaultFocus(I)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->getDisplayIdByUserIdAndWindowId(II)I
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->getDisplayWindowObserverByWindowIdLocked(I)Lcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
PLcom/android/server/accessibility/AccessibilityWindowManager;->getInteractionConnectionsForUserLocked(I)Landroid/util/SparseArray;
-HPLcom/android/server/accessibility/AccessibilityWindowManager;->getLeashTokenLocked(I)Landroid/os/IBinder;
-PLcom/android/server/accessibility/AccessibilityWindowManager;->getPictureInPictureActionReplacingConnection()Lcom/android/server/accessibility/AccessibilityWindowManager$RemoteAccessibilityConnection;
-HPLcom/android/server/accessibility/AccessibilityWindowManager;->getWindowIdLocked(Landroid/os/IBinder;)I
-PLcom/android/server/accessibility/AccessibilityWindowManager;->getWindowListLocked(I)Ljava/util/List;
-PLcom/android/server/accessibility/AccessibilityWindowManager;->getWindowTokenForUserAndWindowIdLocked(II)Landroid/os/IBinder;
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->getWindowTokenForUserAndWindowIdLocked(II)Landroid/os/IBinder;
PLcom/android/server/accessibility/AccessibilityWindowManager;->getWindowTokensForUserLocked(I)Landroid/util/SparseArray;
-PLcom/android/server/accessibility/AccessibilityWindowManager;->isEmbeddedHierarchyWindowsLocked(I)Z
-PLcom/android/server/accessibility/AccessibilityWindowManager;->isProxyed(I)Z
-PLcom/android/server/accessibility/AccessibilityWindowManager;->isTrackingWindowsLocked()Z
PLcom/android/server/accessibility/AccessibilityWindowManager;->isTrackingWindowsLocked(I)Z
-PLcom/android/server/accessibility/AccessibilityWindowManager;->isValidUserForInteractionConnectionsLocked(I)Z
-PLcom/android/server/accessibility/AccessibilityWindowManager;->isValidUserForWindowTokensLocked(I)Z
-PLcom/android/server/accessibility/AccessibilityWindowManager;->registerIdLocked(Landroid/os/IBinder;I)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->notifyOutsideTouch(II)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->onAccessibilityInteractionConnectionRemovedLocked(ILandroid/os/IBinder;)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->removeAccessibilityInteractionConnectionInternalLocked(Landroid/os/IBinder;Landroid/util/SparseArray;Landroid/util/SparseArray;)I
PLcom/android/server/accessibility/AccessibilityWindowManager;->resetHasProxyIfNeededLocked()V
-PLcom/android/server/accessibility/AccessibilityWindowManager;->resolveParentWindowIdLocked(I)I
-PLcom/android/server/accessibility/AccessibilityWindowManager;->resolveTopParentTokenLocked(Landroid/os/IBinder;)Landroid/os/IBinder;
-PLcom/android/server/accessibility/AccessibilityWindowManager;->setAccessibilityWindowAttributes(IIILandroid/view/accessibility/AccessibilityWindowAttributes;)V
-PLcom/android/server/accessibility/AccessibilityWindowManager;->startTrackingWindows(IZ)V
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->resolveParentWindowIdLocked(I)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->resolveTopParentTokenLocked(Landroid/os/IBinder;)Landroid/os/IBinder;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->setAccessibilityFocusedWindowLocked(I)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->setActiveWindowLocked(I)V
PLcom/android/server/accessibility/AccessibilityWindowManager;->stopTrackingWindows(I)V
PLcom/android/server/accessibility/AccessibilityWindowManager;->traceWMEnabled()Z
-PLcom/android/server/accessibility/AccessibilityWindowManager;->updateActiveAndAccessibilityFocusedWindowLocked(IIJII)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->updateActiveAndAccessibilityFocusedWindowLocked(IIIIJ)V
PLcom/android/server/accessibility/AccessibilityWindowManager;->windowIdBelongsToDisplayType(II)Z
+PLcom/android/server/accessibility/BaseEventStreamTransformation;->getNext()Lcom/android/server/accessibility/EventStreamTransformation;
+PLcom/android/server/accessibility/BaseEventStreamTransformation;->setNext(Lcom/android/server/accessibility/EventStreamTransformation;)V
+PLcom/android/server/accessibility/BrailleDisplayConnection$$ExternalSyntheticOutline0;->m(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/accessibility/CaptioningManagerImpl;-><init>(Landroid/content/Context;)V
-PLcom/android/server/accessibility/FeatureFlagsImpl;-><clinit>()V
-PLcom/android/server/accessibility/FeatureFlagsImpl;-><init>()V
-PLcom/android/server/accessibility/FeatureFlagsImpl;->addWindowTokenWithoutLock()Z
-PLcom/android/server/accessibility/FeatureFlagsImpl;->deprecatePackageListObserver()Z
-PLcom/android/server/accessibility/FeatureFlagsImpl;->disableContinuousShortcutOnForceStop()Z
-PLcom/android/server/accessibility/FeatureFlagsImpl;->enableMagnificationMultipleFingerMultipleTapGesture()Z
-PLcom/android/server/accessibility/FeatureFlagsImpl;->load_overrides_accessibility()V
-PLcom/android/server/accessibility/FeatureFlagsImpl;->scanPackagesWithoutLock()Z
+PLcom/android/server/accessibility/EventStreamTransformation;->clearEvents(I)V
+PLcom/android/server/accessibility/EventStreamTransformation;->onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V
+PLcom/android/server/accessibility/EventStreamTransformation;->onMotionEvent(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/FeatureFlagsImpl;->init()V
+PLcom/android/server/accessibility/FingerprintGestureDispatcher$$ExternalSyntheticOutline0;->m(ILjava/lang/String;Ljava/lang/StringBuilder;)V
PLcom/android/server/accessibility/Flags;-><clinit>()V
-PLcom/android/server/accessibility/Flags;->addWindowTokenWithoutLock()Z
-PLcom/android/server/accessibility/Flags;->deprecatePackageListObserver()Z
-PLcom/android/server/accessibility/Flags;->disableContinuousShortcutOnForceStop()Z
+PLcom/android/server/accessibility/Flags;->enableColorCorrectionSaturation()Z
PLcom/android/server/accessibility/Flags;->enableMagnificationMultipleFingerMultipleTapGesture()Z
-PLcom/android/server/accessibility/Flags;->scanPackagesWithoutLock()Z
+PLcom/android/server/accessibility/Flags;->enableMagnificationOneFingerPanningGesture()Z
+PLcom/android/server/accessibility/Flags;->fullscreenFlingGesture()Z
+PLcom/android/server/accessibility/Flags;->handleMultiDeviceInput()Z
+PLcom/android/server/accessibility/Flags;->packageMonitorDedicatedThread()Z
+PLcom/android/server/accessibility/Flags;->resetInputDispatcherBeforeFirstTouchExploration()Z
+PLcom/android/server/accessibility/Flags;->sendA11yEventsBasedOnState()Z
+PLcom/android/server/accessibility/FlashNotificationsController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/accessibility/FlashNotificationsController;Ljava/lang/String;)V
PLcom/android/server/accessibility/FlashNotificationsController$1;-><init>(Lcom/android/server/accessibility/FlashNotificationsController;)V
PLcom/android/server/accessibility/FlashNotificationsController$2;-><init>(Lcom/android/server/accessibility/FlashNotificationsController;)V
+PLcom/android/server/accessibility/FlashNotificationsController$3$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
PLcom/android/server/accessibility/FlashNotificationsController$3;-><init>(Lcom/android/server/accessibility/FlashNotificationsController;)V
+PLcom/android/server/accessibility/FlashNotificationsController$3;->onPlaybackConfigChanged(Ljava/util/List;)V
PLcom/android/server/accessibility/FlashNotificationsController$4;-><init>(Lcom/android/server/accessibility/FlashNotificationsController;)V
-PLcom/android/server/accessibility/FlashNotificationsController$4;->onDisplayChanged(I)V
+HPLcom/android/server/accessibility/FlashNotificationsController$4;->onDisplayChanged(I)V
PLcom/android/server/accessibility/FlashNotificationsController$FlashBroadcastReceiver;-><init>(Lcom/android/server/accessibility/FlashNotificationsController;)V
PLcom/android/server/accessibility/FlashNotificationsController$FlashBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/accessibility/FlashNotificationsController$FlashContentObserver;-><init>(Lcom/android/server/accessibility/FlashNotificationsController;Landroid/os/Handler;)V
-PLcom/android/server/accessibility/FlashNotificationsController$FlashContentObserver;->register(Landroid/content/ContentResolver;)V
-PLcom/android/server/accessibility/FlashNotificationsController;->-$$Nest$fgetmAudioPlaybackCallback(Lcom/android/server/accessibility/FlashNotificationsController;)Landroid/media/AudioManager$AudioPlaybackCallback;
-PLcom/android/server/accessibility/FlashNotificationsController;->-$$Nest$fgetmCallbackHandler(Lcom/android/server/accessibility/FlashNotificationsController;)Landroid/os/Handler;
-PLcom/android/server/accessibility/FlashNotificationsController;->-$$Nest$fgetmCameraManager(Lcom/android/server/accessibility/FlashNotificationsController;)Landroid/hardware/camera2/CameraManager;
-PLcom/android/server/accessibility/FlashNotificationsController;->-$$Nest$fgetmContext(Lcom/android/server/accessibility/FlashNotificationsController;)Landroid/content/Context;
-PLcom/android/server/accessibility/FlashNotificationsController;->-$$Nest$fgetmDisplayManager(Lcom/android/server/accessibility/FlashNotificationsController;)Landroid/hardware/display/DisplayManager;
-PLcom/android/server/accessibility/FlashNotificationsController;->-$$Nest$fgetmIsCameraFlashNotificationEnabled(Lcom/android/server/accessibility/FlashNotificationsController;)Z
-PLcom/android/server/accessibility/FlashNotificationsController;->-$$Nest$fputmCameraManager(Lcom/android/server/accessibility/FlashNotificationsController;Landroid/hardware/camera2/CameraManager;)V
-PLcom/android/server/accessibility/FlashNotificationsController;->-$$Nest$fputmDisplayState(Lcom/android/server/accessibility/FlashNotificationsController;I)V
-PLcom/android/server/accessibility/FlashNotificationsController;->-$$Nest$fputmIsCameraFlashNotificationEnabled(Lcom/android/server/accessibility/FlashNotificationsController;Z)V
+PLcom/android/server/accessibility/FlashNotificationsController$FlashNotification;-><init>(IILjava/lang/String;)V
+PLcom/android/server/accessibility/FlashNotificationsController$FlashNotification;-><init>(Ljava/lang/String;IILandroid/os/IBinder;Lcom/android/server/accessibility/FlashNotificationsController$$ExternalSyntheticLambda0;)V
PLcom/android/server/accessibility/FlashNotificationsController;-><init>(Landroid/content/Context;)V
PLcom/android/server/accessibility/FlashNotificationsController;-><init>(Landroid/content/Context;Landroid/os/Handler;Landroid/os/Handler;)V
-PLcom/android/server/accessibility/FlashNotificationsController;->getStartedHandler(Ljava/lang/String;)Landroid/os/Handler;
-PLcom/android/server/accessibility/PolicyWarningUIController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/accessibility/PolicyWarningUIController;)V
+PLcom/android/server/accessibility/FlashNotificationsController;->getScreenFlashColorPreference$1()I
+PLcom/android/server/accessibility/FlashNotificationsController;->removeFlashNotificationLocked(Ljava/lang/String;)Lcom/android/server/accessibility/FlashNotificationsController$FlashNotification;
+PLcom/android/server/accessibility/FlashNotificationsController;->requestStartFlashNotification(Lcom/android/server/accessibility/FlashNotificationsController$FlashNotification;)V
+PLcom/android/server/accessibility/FlashNotificationsController;->startFlashNotification(Lcom/android/server/accessibility/FlashNotificationsController$FlashNotification;)V
+PLcom/android/server/accessibility/FlashNotificationsController;->stopFlashNotification(Ljava/lang/String;)V
+PLcom/android/server/accessibility/KeyEventDispatcher$$ExternalSyntheticOutline0;->m(ILjava/lang/String;Ljava/lang/StringBuilder;)V
+PLcom/android/server/accessibility/KeyEventDispatcher;-><init>(Landroid/os/Handler;Ljava/lang/Object;Landroid/os/PowerManager;)V
+PLcom/android/server/accessibility/KeyEventDispatcher;->notifyKeyEventLocked(Landroid/view/KeyEvent;ILjava/util/List;)Z
+PLcom/android/server/accessibility/KeyEventDispatcher;->removeReferenceToPendingEventLocked(Lcom/android/server/accessibility/KeyEventDispatcher$PendingKeyEvent;)Z
+PLcom/android/server/accessibility/KeyEventDispatcher;->setOnKeyEventResult(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;ZI)V
+PLcom/android/server/accessibility/KeyboardInterceptor;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/policy/WindowManagerPolicy;)V
+PLcom/android/server/accessibility/KeyboardInterceptor;->onKeyEvent(Landroid/view/KeyEvent;I)V
+PLcom/android/server/accessibility/PolicyWarningUIController$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V
PLcom/android/server/accessibility/PolicyWarningUIController$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/accessibility/PolicyWarningUIController$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/accessibility/PolicyWarningUIController;)V
-PLcom/android/server/accessibility/PolicyWarningUIController$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/accessibility/PolicyWarningUIController$NotificationController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/accessibility/PolicyWarningUIController$NotificationController;)V
+PLcom/android/server/accessibility/PolicyWarningUIController$$ExternalSyntheticLambda2;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/accessibility/PolicyWarningUIController$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/accessibility/PolicyWarningUIController$NotificationController;-><init>(Landroid/content/Context;)V
-PLcom/android/server/accessibility/PolicyWarningUIController$NotificationController;->cancelSentNotifications()V
-PLcom/android/server/accessibility/PolicyWarningUIController$NotificationController;->onSwitchUser(I)V
-PLcom/android/server/accessibility/PolicyWarningUIController$NotificationController;->readNotifiedServiceList(I)Landroid/util/ArraySet;
-PLcom/android/server/accessibility/PolicyWarningUIController$NotificationController;->setSendingNotification(Z)V
-PLcom/android/server/accessibility/PolicyWarningUIController;->$r8$lambda$FLmotYt3XsdyYeosV5FvzhGVtLY(Lcom/android/server/accessibility/PolicyWarningUIController;Z)V
-PLcom/android/server/accessibility/PolicyWarningUIController;->$r8$lambda$Gr6qzlAd0Ku36cCnv-sLqB_nbeM(Lcom/android/server/accessibility/PolicyWarningUIController;ILjava/util/Set;)V
PLcom/android/server/accessibility/PolicyWarningUIController;-><clinit>()V
-PLcom/android/server/accessibility/PolicyWarningUIController;-><init>(Landroid/os/Handler;Landroid/content/Context;Lcom/android/server/accessibility/PolicyWarningUIController$NotificationController;)V
-PLcom/android/server/accessibility/PolicyWarningUIController;->enableSendingNonA11yToolNotification(Z)V
-PLcom/android/server/accessibility/PolicyWarningUIController;->enableSendingNonA11yToolNotificationInternal(Z)V
-PLcom/android/server/accessibility/PolicyWarningUIController;->onSwitchUser(ILjava/util/Set;)V
-PLcom/android/server/accessibility/PolicyWarningUIController;->onSwitchUserInternal(ILjava/util/Set;)V
+PLcom/android/server/accessibility/PolicyWarningUIController;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService$MainHandler;Landroid/content/Context;Lcom/android/server/accessibility/PolicyWarningUIController$NotificationController;)V
PLcom/android/server/accessibility/ProxyManager;-><clinit>()V
-PLcom/android/server/accessibility/ProxyManager;-><init>(Ljava/lang/Object;Lcom/android/server/accessibility/AccessibilityWindowManager;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/accessibility/UiAutomationManager;Lcom/android/server/accessibility/ProxyManager$SystemSupport;)V
-PLcom/android/server/accessibility/ProxyManager;->canRetrieveInteractiveWindowsLocked()Z
-HPLcom/android/server/accessibility/ProxyManager;->getFirstDeviceIdForUidLocked(I)I
-HPLcom/android/server/accessibility/ProxyManager;->getLocalVdm()Lcom/android/server/companion/virtual/VirtualDeviceManagerInternal;
+PLcom/android/server/accessibility/ProxyManager;-><init>(Ljava/lang/Object;Lcom/android/server/accessibility/AccessibilityWindowManager;Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService$MainHandler;Lcom/android/server/accessibility/UiAutomationManager;Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/ProxyManager;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/accessibility/ProxyManager;->getFirstDeviceIdForUidLocked(I)I
+PLcom/android/server/accessibility/ProxyManager;->getLocalVdm()Lcom/android/server/companion/virtual/VirtualDeviceManagerInternal;
PLcom/android/server/accessibility/ProxyManager;->isProxyedDeviceId(I)Z
-PLcom/android/server/accessibility/ProxyManager;->isProxyedDisplay(I)Z
-PLcom/android/server/accessibility/ProxyManager;->updateTimeoutsIfNeeded(II)V
-PLcom/android/server/accessibility/SystemActionPerformer;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerInternal;Ljava/util/function/Supplier;Lcom/android/server/accessibility/SystemActionPerformer$SystemActionsChangedListener;Lcom/android/server/accessibility/SystemActionPerformer$DisplayUpdateCallBack;)V
+HPLcom/android/server/accessibility/ProxyManager;->isProxyedDisplay(I)Z
+PLcom/android/server/accessibility/SystemActionPerformer;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerInternal;Ljava/util/function/Supplier;Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService;)V
PLcom/android/server/accessibility/UiAutomationManager$1;-><init>(Lcom/android/server/accessibility/UiAutomationManager;)V
-PLcom/android/server/accessibility/UiAutomationManager$UiAutomationService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/accessibility/UiAutomationManager$UiAutomationService;)V
-PLcom/android/server/accessibility/UiAutomationManager$UiAutomationService$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/accessibility/UiAutomationManager$UiAutomationService;->$r8$lambda$EBbVjiQaLueOGoICPHv_0YkCzl4(Lcom/android/server/accessibility/UiAutomationManager$UiAutomationService;)V
-PLcom/android/server/accessibility/UiAutomationManager$UiAutomationService;-><init>(Lcom/android/server/accessibility/UiAutomationManager;Landroid/content/Context;Landroid/accessibilityservice/AccessibilityServiceInfo;ILandroid/os/Handler;Ljava/lang/Object;Lcom/android/server/accessibility/AccessibilitySecurityPolicy;Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection$SystemSupport;Landroid/accessibilityservice/AccessibilityTrace;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/accessibility/SystemActionPerformer;Lcom/android/server/accessibility/AccessibilityWindowManager;)V
-PLcom/android/server/accessibility/UiAutomationManager$UiAutomationService;->connectServiceUnknownThread()V
-PLcom/android/server/accessibility/UiAutomationManager$UiAutomationService;->hasRightsToCurrentUserLocked()Z
-PLcom/android/server/accessibility/UiAutomationManager$UiAutomationService;->lambda$connectServiceUnknownThread$0()V
-PLcom/android/server/accessibility/UiAutomationManager$UiAutomationService;->supportsFlagForNotImportantViews(Landroid/accessibilityservice/AccessibilityServiceInfo;)Z
-PLcom/android/server/accessibility/UiAutomationManager;->-$$Nest$fgetmUiAutomationService(Lcom/android/server/accessibility/UiAutomationManager;)Lcom/android/server/accessibility/UiAutomationManager$UiAutomationService;
-PLcom/android/server/accessibility/UiAutomationManager;->-$$Nest$sfgetCOMPONENT_NAME()Landroid/content/ComponentName;
PLcom/android/server/accessibility/UiAutomationManager;-><clinit>()V
PLcom/android/server/accessibility/UiAutomationManager;-><init>(Ljava/lang/Object;)V
-PLcom/android/server/accessibility/UiAutomationManager;->canIntrospect()Z
-PLcom/android/server/accessibility/UiAutomationManager;->canRetrieveInteractiveWindowsLocked()Z
-PLcom/android/server/accessibility/UiAutomationManager;->getRelevantEventTypes()I
-PLcom/android/server/accessibility/UiAutomationManager;->getServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo;
-PLcom/android/server/accessibility/UiAutomationManager;->isTouchExplorationEnabledLocked()Z
-PLcom/android/server/accessibility/UiAutomationManager;->registerUiTestAutomationServiceLocked(Landroid/os/IBinder;Landroid/accessibilityservice/IAccessibilityServiceClient;Landroid/content/Context;Landroid/accessibilityservice/AccessibilityServiceInfo;ILandroid/os/Handler;Lcom/android/server/accessibility/AccessibilitySecurityPolicy;Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection$SystemSupport;Landroid/accessibilityservice/AccessibilityTrace;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/accessibility/SystemActionPerformer;Lcom/android/server/accessibility/AccessibilityWindowManager;I)V
-PLcom/android/server/accessibility/UiAutomationManager;->sendAccessibilityEventLocked(Landroid/view/accessibility/AccessibilityEvent;)V
PLcom/android/server/accessibility/UiAutomationManager;->suppressingAccessibilityServicesLocked()Z
-PLcom/android/server/accessibility/UiAutomationManager;->useAccessibility()Z
-PLcom/android/server/accessibility/magnification/AlwaysOnMagnificationFeatureFlag;-><init>(Landroid/content/Context;)V
-PLcom/android/server/accessibility/magnification/AlwaysOnMagnificationFeatureFlag;->addOnChangedListener(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)Landroid/provider/DeviceConfig$OnPropertiesChangedListener;
+PLcom/android/server/accessibility/gestures/EventDispatcher;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/EventStreamTransformation;Lcom/android/server/accessibility/gestures/TouchState;)V
+PLcom/android/server/accessibility/gestures/EventDispatcher;->computeInjectionAction(II)I
+PLcom/android/server/accessibility/gestures/EventDispatcher;->sendAccessibilityEvent(I)V
+HPLcom/android/server/accessibility/gestures/EventDispatcher;->sendMotionEvent(IIILandroid/view/MotionEvent;Landroid/view/MotionEvent;)V
+HPLcom/android/server/accessibility/gestures/GestureManifold;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/gestures/TouchExplorer;Lcom/android/server/accessibility/gestures/TouchState;)V
+HPLcom/android/server/accessibility/gestures/GestureManifold;->clear()V
+PLcom/android/server/accessibility/gestures/GestureManifold;->onStateChanged(IIILandroid/view/MotionEvent;Landroid/view/MotionEvent;)V
+PLcom/android/server/accessibility/gestures/GestureMatcher$DelayedTransition;-><init>(Lcom/android/server/accessibility/gestures/GestureMatcher;)V
+HPLcom/android/server/accessibility/gestures/GestureMatcher$DelayedTransition;->cancel()V
+PLcom/android/server/accessibility/gestures/GestureMatcher$DelayedTransition;->post(IJLandroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/GestureMatcher$DelayedTransition;->recycleEvent()V
+PLcom/android/server/accessibility/gestures/GestureMatcher$DelayedTransition;->run()V
+PLcom/android/server/accessibility/gestures/GestureMatcher;-><init>(ILandroid/os/Handler;Lcom/android/server/accessibility/gestures/GestureManifold;)V
+PLcom/android/server/accessibility/gestures/GestureMatcher;->clear()V
+PLcom/android/server/accessibility/gestures/GestureMatcher;->onDown(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/gestures/GestureMatcher;->onMotionEvent(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/GestureMatcher;->setState(ILandroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/GestureUtils;->getActionIndex(Landroid/view/MotionEvent;)I
+PLcom/android/server/accessibility/gestures/MultiFingerMultiTap;-><init>(Landroid/content/Context;IIILcom/android/server/accessibility/gestures/GestureManifold;)V
+HPLcom/android/server/accessibility/gestures/MultiFingerMultiTap;->clear()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/accessibility/gestures/MultiFingerMultiTap;->findNearestPoint(Landroid/view/MotionEvent;FZ)Landroid/graphics/PointF;
+PLcom/android/server/accessibility/gestures/MultiFingerMultiTap;->initBaseLocation(Landroid/view/MotionEvent;)Landroid/graphics/PointF;
+PLcom/android/server/accessibility/gestures/MultiFingerMultiTap;->onDown(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/MultiFingerMultiTap;->onMove(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/MultiFingerMultiTap;->onPointerDown(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/MultiFingerMultiTap;->onUp(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/MultiFingerMultiTapAndHold;->onPointerDown(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/MultiFingerMultiTapAndHold;->onUp(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/MultiFingerSwipe;-><init>(Landroid/content/Context;IIILcom/android/server/accessibility/gestures/GestureManifold;)V
+HPLcom/android/server/accessibility/gestures/MultiFingerSwipe;->clear()V
+PLcom/android/server/accessibility/gestures/MultiFingerSwipe;->onDown(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/gestures/MultiFingerSwipe;->onMove(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/MultiFingerSwipe;->onPointerDown(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/MultiFingerSwipe;->onUp(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/MultiTap;-><init>(Landroid/content/Context;IILcom/android/server/accessibility/gestures/GestureManifold;)V
+PLcom/android/server/accessibility/gestures/MultiTap;-><init>(Landroid/content/Context;ILcom/android/server/accessibility/gestures/GestureManifold;)V
+PLcom/android/server/accessibility/gestures/MultiTap;->clear()V
+PLcom/android/server/accessibility/gestures/MultiTap;->isInsideSlop(ILandroid/view/MotionEvent;)Z
+PLcom/android/server/accessibility/gestures/MultiTap;->onDown(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/MultiTap;->onMove(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/MultiTap;->onPointerDown(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/MultiTap;->onUp(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/MultiTapAndHold;->onDown(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/SecondFingerMultiTap;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/gestures/GestureManifold;)V
+PLcom/android/server/accessibility/gestures/SecondFingerMultiTap;->clear()V
+PLcom/android/server/accessibility/gestures/SecondFingerMultiTap;->isSecondFingerInsideSlop(ILandroid/view/MotionEvent;)Z
+PLcom/android/server/accessibility/gestures/SecondFingerMultiTap;->onMove(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/SecondFingerMultiTap;->onPointerDown(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/SecondFingerMultiTap;->onUp(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/Swipe;-><init>(Landroid/content/Context;IIILcom/android/server/accessibility/gestures/GestureManifold;)V
+PLcom/android/server/accessibility/gestures/Swipe;-><init>(Landroid/content/Context;IILcom/android/server/accessibility/gestures/GestureManifold;)V
+HPLcom/android/server/accessibility/gestures/Swipe;-><init>(Landroid/content/Context;[IILcom/android/server/accessibility/gestures/GestureManifold;)V
+PLcom/android/server/accessibility/gestures/Swipe;->clear()V
+PLcom/android/server/accessibility/gestures/Swipe;->onDown(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/Swipe;->onMove(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/Swipe;->onPointerDown(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/Swipe;->onUp(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/Swipe;->toDirection(FF)I
+PLcom/android/server/accessibility/gestures/TouchExplorer$ExitGestureDetectionModeDelayed;-><init>(Lcom/android/server/accessibility/gestures/TouchExplorer;)V
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendAccessibilityEventDelayed;-><init>(Lcom/android/server/accessibility/gestures/TouchExplorer;II)V
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendAccessibilityEventDelayed;->cancel()V
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendAccessibilityEventDelayed;->forceSendAndRemove()V
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendAccessibilityEventDelayed;->isPending()Z
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendHoverExitDelayed;-><init>(Lcom/android/server/accessibility/gestures/TouchExplorer;I)V
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendHoverExitDelayed;->addEvent(Landroid/view/MotionEvent;Landroid/view/MotionEvent;)V
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendHoverExitDelayed;->cancel()V
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendHoverExitDelayed;->clear()V
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendHoverExitDelayed;->isPending()Z
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendHoverExitDelayed;->run()V
+PLcom/android/server/accessibility/gestures/TouchExplorer;-><clinit>()V
+PLcom/android/server/accessibility/gestures/TouchExplorer;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/gestures/GestureManifold;Landroid/os/Handler;)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->checkForMalformedEvent(Landroid/view/MotionEvent;)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->clear(ILandroid/view/MotionEvent;)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->clearEvents(I)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->computeDownEventForDrag(Landroid/view/MotionEvent;)Landroid/view/MotionEvent;
+PLcom/android/server/accessibility/gestures/TouchExplorer;->computeDraggingPointerIdIfNeeded(Landroid/view/MotionEvent;)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->handleActionDown(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->handleActionMoveStateTouchInteracting(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->handleActionPointerDown(ILandroid/view/MotionEvent;)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->handleActionUp(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->isDraggingGesture(Landroid/view/MotionEvent;)Z
+HPLcom/android/server/accessibility/gestures/TouchExplorer;->onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->onDoubleTap(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/gestures/TouchExplorer;->onMotionEvent(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/accessibility/gestures/TouchExplorer;->sendHoverExitAndTouchExplorationGestureEndIfNeeded(I)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->setNext(Lcom/android/server/accessibility/EventStreamTransformation;)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->setServiceDetectsGestures(Z)V
+PLcom/android/server/accessibility/gestures/TouchState$ReceivedPointerTracker;-><init>(Lcom/android/server/accessibility/gestures/TouchState;)V
+PLcom/android/server/accessibility/gestures/TouchState$ReceivedPointerTracker;->getPrimaryPointerId()I
+PLcom/android/server/accessibility/gestures/TouchState$ReceivedPointerTracker;->getReceivedPointerDownX(I)F
+PLcom/android/server/accessibility/gestures/TouchState$ReceivedPointerTracker;->getReceivedPointerDownY(I)F
+PLcom/android/server/accessibility/gestures/TouchState$ReceivedPointerTracker;->handleReceivedPointerDown(ILandroid/view/MotionEvent;)V
+PLcom/android/server/accessibility/gestures/TouchState$ReceivedPointerTracker;->handleReceivedPointerUp(ILandroid/view/MotionEvent;)V
+PLcom/android/server/accessibility/gestures/TouchState;-><init>(ILcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/gestures/TouchState;->clear()V
+PLcom/android/server/accessibility/gestures/TouchState;->isInjectedPointerDown(I)Z
+PLcom/android/server/accessibility/gestures/TouchState;->isTouchExploring()Z
+PLcom/android/server/accessibility/gestures/TouchState;->isTouchInteracting()Z
+PLcom/android/server/accessibility/gestures/TouchState;->setState(I)V
PLcom/android/server/accessibility/magnification/AlwaysOnMagnificationFeatureFlag;->getDefaultValue()Z
PLcom/android/server/accessibility/magnification/AlwaysOnMagnificationFeatureFlag;->getFeatureName()Ljava/lang/String;
PLcom/android/server/accessibility/magnification/AlwaysOnMagnificationFeatureFlag;->getNamespace()Ljava/lang/String;
-PLcom/android/server/accessibility/magnification/AlwaysOnMagnificationFeatureFlag;->isFeatureFlagEnabled()Z
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/accessibility/magnification/FullScreenMagnificationController;Lcom/android/server/accessibility/magnification/FullScreenMagnificationController$ControllerContext;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$$ExternalSyntheticLambda1;->get()Ljava/lang/Object;
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$$ExternalSyntheticLambda2;-><init>(Landroid/content/Context;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$$ExternalSyntheticLambda2;->get()Ljava/lang/Object;
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$$ExternalSyntheticLambda3;->get()Ljava/lang/Object;
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$$ExternalSyntheticLambda4;-><init>(I)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$$ExternalSyntheticLambda5;-><init>(IZ)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$ControllerContext;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityTraceManager;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/input/InputManagerService$LocalService;Landroid/os/Handler;J)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$DisplayMagnification$$ExternalSyntheticLambda2;-><init>(I)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$DisplayMagnification$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$DisplayMagnification;-><init>(Lcom/android/server/accessibility/magnification/FullScreenMagnificationController;I)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$DisplayMagnification;->getCenterX()F
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$DisplayMagnification;->getCenterY()F
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$DisplayMagnification;->refreshThumbnail()V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$DisplayMagnification;->register()Z
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$DisplayMagnification;->reset(Landroid/view/accessibility/MagnificationAnimationCallback;)Z
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$DisplayMagnification;->unregister(Z)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$ScreenStateObserver;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/magnification/FullScreenMagnificationController;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$SpecAnimationBridge$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/accessibility/magnification/FullScreenMagnificationController$SpecAnimationBridge;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$SpecAnimationBridge;-><init>(Lcom/android/server/accessibility/magnification/FullScreenMagnificationController$ControllerContext;Ljava/lang/Object;ILjava/util/function/Supplier;Ljava/util/function/Supplier;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController$SpecAnimationBridge;->setEnabled(Z)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityTraceManager;Ljava/lang/Object;Lcom/android/server/accessibility/magnification/MagnificationController;Lcom/android/server/accessibility/magnification/MagnificationScaleProvider;Ljava/util/concurrent/Executor;Lcom/android/server/accessibility/magnification/MagnificationController$$ExternalSyntheticLambda0;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController;-><init>(Lcom/android/server/accessibility/magnification/FullScreenMagnificationController$ControllerContext;Ljava/lang/Object;Lcom/android/server/accessibility/magnification/FullScreenMagnificationController$MagnificationInfoChangedCallback;Lcom/android/server/accessibility/magnification/MagnificationScaleProvider;Ljava/util/function/Supplier;Ljava/util/concurrent/Executor;Ljava/util/function/Supplier;Ljava/util/function/Supplier;Ljava/util/function/Supplier;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController;->getCenterX(I)F
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController;->getCenterY(I)F
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController;->getIdOfLastServiceToMagnify(I)I
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController;->getMagnificationRegion(ILandroid/graphics/Region;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController;->getScale(I)F
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController;->isActivated(I)Z
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController;->isRegistered(I)Z
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController;->register(I)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController;->reset(ILandroid/view/accessibility/MagnificationAnimationCallback;)Z
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController;->resetIfNeeded(II)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationController;->unregisterLocked(IZ)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler$1;-><init>(Lcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler$1;->onImeWindowVisibilityChanged(IZ)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler$DelegatingState;-><init>(Lcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler$DetectingState$TwoFingerDoubleTapHandler;-><init>(Lcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler$DetectingState;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler$DetectingState;-><clinit>()V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler$DetectingState;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler$DetectingState;->clear()V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler$DetectingState;->setShortcutTriggered(Z)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler$OverscrollHandler;-><init>(Lcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler$PanningScalingState;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler$SinglePanningState;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler$ViewportDraggingState;-><init>(Lcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler;-><clinit>()V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/magnification/FullScreenMagnificationController;Lcom/android/server/accessibility/AccessibilityTraceManager;Lcom/android/server/accessibility/magnification/MagnificationGestureHandler$Callback;ZZZLcom/android/server/accessibility/magnification/WindowMagnificationPromptController;ILcom/android/server/accessibility/magnification/FullScreenMagnificationVibrationHelper;Lcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler$MagnificationLogger;Landroid/view/ViewConfiguration;Lcom/android/server/accessibility/magnification/OneFingerPanningSettingsProvider;Lcom/android/server/accessibility/magnification/MouseEventHandler;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/magnification/FullScreenMagnificationController;Lcom/android/server/accessibility/AccessibilityTraceManager;Lcom/android/server/accessibility/magnification/MagnificationGestureHandler$Callback;ZZZLcom/android/server/accessibility/magnification/WindowMagnificationPromptController;ILcom/android/server/accessibility/magnification/FullScreenMagnificationVibrationHelper;Lcom/android/server/accessibility/magnification/MouseEventHandler;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler;->clearAndTransitionToStateDetecting()V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler;->clearEvents(I)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler;->getMode()I
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler;->onDestroy()V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler;->transitionTo(Lcom/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler$State;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationVibrationHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/accessibility/magnification/FullScreenMagnificationVibrationHelper;)V
+PLcom/android/server/accessibility/magnification/FullScreenMagnificationVibrationHelper;-><init>(Landroid/content/Context;)V
PLcom/android/server/accessibility/magnification/MagnificationConnectionManager$1;-><init>(Lcom/android/server/accessibility/magnification/MagnificationConnectionManager;)V
-PLcom/android/server/accessibility/magnification/MagnificationConnectionManager;-><init>(Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/accessibility/magnification/MagnificationConnectionManager$Callback;Lcom/android/server/accessibility/AccessibilityTraceManager;Lcom/android/server/accessibility/magnification/MagnificationScaleProvider;)V
+PLcom/android/server/accessibility/magnification/MagnificationConnectionManager$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/accessibility/magnification/MagnificationConnectionManager$ConnectionCallback;-><init>(Lcom/android/server/accessibility/magnification/MagnificationConnectionManager;)V
+PLcom/android/server/accessibility/magnification/MagnificationConnectionManager;-><clinit>()V
+PLcom/android/server/accessibility/magnification/MagnificationConnectionManager;-><init>(Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/accessibility/magnification/MagnificationController;Lcom/android/server/accessibility/AccessibilityTraceManager;Lcom/android/server/accessibility/magnification/MagnificationScaleProvider;)V
+PLcom/android/server/accessibility/magnification/MagnificationConnectionManager;->connectionStateToString(I)Ljava/lang/String;
+PLcom/android/server/accessibility/magnification/MagnificationConnectionManager;->disableAllWindowMagnifiers()V
+PLcom/android/server/accessibility/magnification/MagnificationConnectionManager;->disableWindowMagnification(IZLandroid/view/accessibility/MagnificationAnimationCallback;)Z
+PLcom/android/server/accessibility/magnification/MagnificationConnectionManager;->isConnected()Z
PLcom/android/server/accessibility/magnification/MagnificationConnectionManager;->isWindowMagnifierEnabled(I)Z
-PLcom/android/server/accessibility/magnification/MagnificationConnectionManager;->removeMagnificationButton(I)Z
-PLcom/android/server/accessibility/magnification/MagnificationController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/magnification/MagnificationConnectionManager;->removeMagnificationButton(I)V
+PLcom/android/server/accessibility/magnification/MagnificationConnectionManager;->requestConnection(Z)V
+PLcom/android/server/accessibility/magnification/MagnificationConnectionManager;->setConnection(Landroid/view/accessibility/IMagnificationConnection;)V
+PLcom/android/server/accessibility/magnification/MagnificationConnectionWrapper;-><init>(Landroid/view/accessibility/IMagnificationConnection;Lcom/android/server/accessibility/AccessibilityTraceManager;)V
+PLcom/android/server/accessibility/magnification/MagnificationConnectionWrapper;->setConnectionCallback(Landroid/view/accessibility/IMagnificationConnectionCallback;)V
+PLcom/android/server/accessibility/magnification/MagnificationController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/accessibility/magnification/MagnificationController;)V
+PLcom/android/server/accessibility/magnification/MagnificationController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/magnification/MagnificationController$$ExternalSyntheticLambda2;->run()V
PLcom/android/server/accessibility/magnification/MagnificationController;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Ljava/lang/Object;Landroid/content/Context;Lcom/android/server/accessibility/magnification/MagnificationScaleProvider;Ljava/util/concurrent/Executor;)V
PLcom/android/server/accessibility/magnification/MagnificationController;->getCurrentMagnificationCenterLocked(II)Landroid/graphics/PointF;
-PLcom/android/server/accessibility/magnification/MagnificationController;->getDisableMagnificationEndRunnableLocked(I)Lcom/android/server/accessibility/magnification/MagnificationController$DisableMagnificationCallback;
+PLcom/android/server/accessibility/magnification/MagnificationController;->getFullScreenMagnificationController()Lcom/android/server/accessibility/magnification/FullScreenMagnificationController;
PLcom/android/server/accessibility/magnification/MagnificationController;->getMagnificationConnectionManager()Lcom/android/server/accessibility/magnification/MagnificationConnectionManager;
PLcom/android/server/accessibility/magnification/MagnificationController;->isActivated(II)Z
-PLcom/android/server/accessibility/magnification/MagnificationController;->isAlwaysOnMagnificationFeatureFlagEnabled()Z
PLcom/android/server/accessibility/magnification/MagnificationController;->isFullScreenMagnificationControllerInitialized()Z
+PLcom/android/server/accessibility/magnification/MagnificationController;->logMagnificationModeWithImeOnIfNeeded(I)V
+PLcom/android/server/accessibility/magnification/MagnificationController;->onImeWindowVisibilityChanged(IZ)V
PLcom/android/server/accessibility/magnification/MagnificationController;->onRectangleOnScreenRequested(IIIII)V
-PLcom/android/server/accessibility/magnification/MagnificationController;->setMagnificationCapabilities(I)V
-PLcom/android/server/accessibility/magnification/MagnificationController;->supportWindowMagnification()Z
-PLcom/android/server/accessibility/magnification/MagnificationController;->transitionMagnificationModeLocked(IILcom/android/server/accessibility/magnification/MagnificationController$TransitionCallBack;)V
-PLcom/android/server/accessibility/magnification/MagnificationController;->updateUserIdIfNeeded(I)V
PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;Ljava/lang/Runnable;)V
-PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;Ljava/util/concurrent/Executor;Landroid/provider/DeviceConfig$OnPropertiesChangedListener;)V
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda0;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;Ljava/util/concurrent/Executor;Lcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda0;)V
PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda2;-><init>()V
-PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;Ljava/util/concurrent/atomic/AtomicBoolean;)V
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;Ljava/util/concurrent/atomic/AtomicBoolean;I)V
PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda3;->run()V
-PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;Ljava/util/concurrent/atomic/AtomicBoolean;)V
PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda7;-><init>(Ljava/lang/Runnable;)V
PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda7;->runOrThrow()V
-PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;->$r8$lambda$-Kf-nTTxGJWSQrXs1QThaOrkPek(Ljava/lang/Runnable;)V
-PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;->$r8$lambda$KXsRNBwfYHScpt3V4aI4KVvs4mk(Lcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;Ljava/util/concurrent/atomic/AtomicBoolean;)V
-PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;->$r8$lambda$axYtYuWd7ezeyobLYU1aL4M31Ak(Lcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;Ljava/util/concurrent/Executor;Landroid/provider/DeviceConfig$OnPropertiesChangedListener;)V
-PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;-><init>()V
-PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;->addOnChangedListener(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)Landroid/provider/DeviceConfig$OnPropertiesChangedListener;
PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;->clearCallingIdentifyAndTryCatch(Ljava/lang/Runnable;Ljava/lang/Runnable;)V
-PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;->isFeatureFlagEnabled()Z
-PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;->lambda$addOnChangedListener$6(Ljava/util/concurrent/Executor;Landroid/provider/DeviceConfig$OnPropertiesChangedListener;)V
-PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;->lambda$clearCallingIdentifyAndTryCatch$0(Ljava/lang/Runnable;)V
-PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;->lambda$isFeatureFlagEnabled$1(Ljava/util/concurrent/atomic/AtomicBoolean;)V
+PLcom/android/server/accessibility/magnification/MagnificationGestureHandler;-><clinit>()V
+PLcom/android/server/accessibility/magnification/MagnificationGestureHandler;-><init>(IZZZLcom/android/server/accessibility/AccessibilityTraceManager;Lcom/android/server/accessibility/magnification/MagnificationGestureHandler$Callback;)V
+PLcom/android/server/accessibility/magnification/MagnificationGestureHandler;->dispatchTransformedEvent(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/magnification/MagnificationGestureHandler;->onMotionEvent(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/magnification/MagnificationGestureMatcher;->getMagnificationMultiTapTimeout(Landroid/content/Context;)I
PLcom/android/server/accessibility/magnification/MagnificationProcessor;-><init>(Lcom/android/server/accessibility/magnification/MagnificationController;)V
+PLcom/android/server/accessibility/magnification/MagnificationProcessor;->dump(Ljava/io/PrintWriter;Ljava/util/ArrayList;)V
+PLcom/android/server/accessibility/magnification/MagnificationProcessor;->getControllingMode(I)I
+PLcom/android/server/accessibility/magnification/MagnificationProcessor;->getCurrentMagnificationRegion(ILandroid/graphics/Region;Z)V
+PLcom/android/server/accessibility/magnification/MagnificationProcessor;->getFullscreenMagnificationRegion(ILandroid/graphics/Region;Z)V
+PLcom/android/server/accessibility/magnification/MagnificationProcessor;->getMagnificationConfig(I)Landroid/accessibilityservice/MagnificationConfig;
+PLcom/android/server/accessibility/magnification/MagnificationProcessor;->resetAllIfNeeded(I)V
+PLcom/android/server/accessibility/magnification/MagnificationProcessor;->unregister(I)V
+PLcom/android/server/accessibility/magnification/MagnificationScaleProvider;-><clinit>()V
PLcom/android/server/accessibility/magnification/MagnificationScaleProvider;-><init>(Landroid/content/Context;)V
-PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;-><init>()V
-PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;-><init>(Lcom/android/server/accounts/AccountAuthenticatorCache$MySerializer-IA;)V
-PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;->createFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)Landroid/accounts/AuthenticatorDescription;
+PLcom/android/server/accessibility/magnification/MagnificationThumbnailFeatureFlag;->getDefaultValue()Z
+PLcom/android/server/accessibility/magnification/MagnificationThumbnailFeatureFlag;->getFeatureName()Ljava/lang/String;
+PLcom/android/server/accessibility/magnification/MagnificationThumbnailFeatureFlag;->getNamespace()Ljava/lang/String;
+PLcom/android/server/accessibility/magnification/MouseEventHandler;-><init>(Lcom/android/server/accessibility/magnification/FullScreenMagnificationController;)V
+PLcom/android/server/accessibility/magnification/OneFingerPanningSettingsProvider;-><clinit>()V
+PLcom/android/server/accessibility/magnification/OneFingerPanningSettingsProvider;->isOneFingerPanningEnabledDefault(Landroid/content/Context;)Z
+PLcom/android/server/accessibility/magnification/WindowMagnificationPromptController$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;)Landroid/content/IntentFilter;
+PLcom/android/server/accessibility/magnification/WindowMagnificationPromptController$1;-><init>(Lcom/android/server/accessibility/magnification/WindowMagnificationPromptController;)V
+PLcom/android/server/accessibility/magnification/WindowMagnificationPromptController;-><clinit>()V
+PLcom/android/server/accessibility/magnification/WindowMagnificationPromptController;-><init>(Landroid/content/Context;I)V
+PLcom/android/server/accessibility/magnification/WindowMagnificationPromptController;->onDestroy()V
PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;->createFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)Ljava/lang/Object;
PLcom/android/server/accounts/AccountAuthenticatorCache;-><clinit>()V
PLcom/android/server/accounts/AccountAuthenticatorCache;-><init>(Landroid/content/Context;)V
-PLcom/android/server/accounts/AccountAuthenticatorCache;->getServiceInfo(Landroid/accounts/AuthenticatorDescription;I)Landroid/content/pm/RegisteredServicesCache$ServiceInfo;
-HPLcom/android/server/accounts/AccountAuthenticatorCache;->parseServiceAttributes(Landroid/content/res/Resources;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/accounts/AuthenticatorDescription;
PLcom/android/server/accounts/AccountAuthenticatorCache;->parseServiceAttributes(Landroid/content/res/Resources;Ljava/lang/String;Landroid/util/AttributeSet;)Ljava/lang/Object;
-PLcom/android/server/accounts/AccountManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
-PLcom/android/server/accounts/AccountManagerService$1;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
-PLcom/android/server/accounts/AccountManagerService$2;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
+PLcom/android/server/accounts/AccountManagerBackupHelper;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;)V
+PLcom/android/server/accounts/AccountManagerBackupHelper;->backupAccountAccessPermissions(I)[B
+PLcom/android/server/accounts/AccountManagerService$$ExternalSyntheticLambda4;-><init>(Landroid/accounts/AccountManagerInternal$OnAppPermissionChangeListener;Landroid/accounts/Account;II)V
+PLcom/android/server/accounts/AccountManagerService$$ExternalSyntheticLambda4;->run()V
+PLcom/android/server/accounts/AccountManagerService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/accounts/AccountManagerService;IILjava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService$$ExternalSyntheticLambda7;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/accounts/AccountManagerService$$ExternalSyntheticLambda8;->onPermissionsChanged(I)V
+PLcom/android/server/accounts/AccountManagerService$11;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;[Ljava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService$11;->onResult(Landroid/os/Bundle;)V
+PLcom/android/server/accounts/AccountManagerService$11;->run()V
+PLcom/android/server/accounts/AccountManagerService$1;-><init>(Lcom/android/server/accounts/AccountManagerService;I)V
+PLcom/android/server/accounts/AccountManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/accounts/AccountManagerService$1LogRecordTask;-><init>(Lcom/android/server/accounts/AccountManagerService;Ljava/lang/String;Ljava/lang/String;JLcom/android/server/accounts/AccountManagerService$UserAccounts;IJ)V
+PLcom/android/server/accounts/AccountManagerService$1LogRecordTask;->run()V
PLcom/android/server/accounts/AccountManagerService$3;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
-PLcom/android/server/accounts/AccountManagerService$4;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
+PLcom/android/server/accounts/AccountManagerService$7;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZLjava/lang/String;Landroid/os/Bundle;Landroid/accounts/Account;Ljava/lang/String;ZZLjava/lang/String;IZ[BLcom/android/server/accounts/AccountManagerService$UserAccounts;)V
+PLcom/android/server/accounts/AccountManagerService$7;->onResult(Landroid/os/Bundle;)V
+PLcom/android/server/accounts/AccountManagerService$7;->run()V
PLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
-PLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl-IA;)V
PLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;->addOnAppPermissionChangeListener(Landroid/accounts/AccountManagerInternal$OnAppPermissionChangeListener;)V
+PLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;->backupAccountAccessPermissions(I)[B
+PLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;->hasAccountAccess(Landroid/accounts/Account;I)Z
PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;ILjava/lang/String;Z)V
PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->checkAccount()V
-HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->run()V
-HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->sendResult()V
+PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->onResult(Landroid/os/Bundle;)V
+PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->run()V
PLcom/android/server/accounts/AccountManagerService$Injector;-><init>(Landroid/content/Context;)V
-PLcom/android/server/accounts/AccountManagerService$Injector;->addLocalService(Landroid/accounts/AccountManagerInternal;)V
-PLcom/android/server/accounts/AccountManagerService$Injector;->getAccountAuthenticatorCache()Lcom/android/server/accounts/IAccountAuthenticatorCache;
-PLcom/android/server/accounts/AccountManagerService$Injector;->getCeDatabaseName(I)Ljava/lang/String;
-PLcom/android/server/accounts/AccountManagerService$Injector;->getContext()Landroid/content/Context;
-PLcom/android/server/accounts/AccountManagerService$Injector;->getDeDatabaseName(I)Ljava/lang/String;
-PLcom/android/server/accounts/AccountManagerService$Injector;->getMessageHandlerLooper()Landroid/os/Looper;
PLcom/android/server/accounts/AccountManagerService$Injector;->getPreNDatabaseName(I)Ljava/lang/String;
PLcom/android/server/accounts/AccountManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/accounts/AccountManagerService$Lifecycle;->onStart()V
PLcom/android/server/accounts/AccountManagerService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/accounts/AccountManagerService$MessageHandler;-><init>(Lcom/android/server/accounts/AccountManagerService;Landroid/os/Looper;)V
-PLcom/android/server/accounts/AccountManagerService$Session;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;Z)V
+PLcom/android/server/accounts/AccountManagerService$NotificationId;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/accounts/AccountManagerService$OnInterestingAppOpChangedListener;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
HPLcom/android/server/accounts/AccountManagerService$Session;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZZ)V
-PLcom/android/server/accounts/AccountManagerService$Session;->bind()V
-HPLcom/android/server/accounts/AccountManagerService$Session;->bindToAuthenticator(Ljava/lang/String;)Z
-PLcom/android/server/accounts/AccountManagerService$Session;->cancelTimeout()V
-HPLcom/android/server/accounts/AccountManagerService$Session;->close()V
+HPLcom/android/server/accounts/AccountManagerService$Session;->bind()V
+PLcom/android/server/accounts/AccountManagerService$Session;->checkKeyIntent(ILandroid/os/Bundle;)Z
+PLcom/android/server/accounts/AccountManagerService$Session;->close()V
PLcom/android/server/accounts/AccountManagerService$Session;->getResponseAndClose()Landroid/accounts/IAccountManagerResponse;
+PLcom/android/server/accounts/AccountManagerService$Session;->onResult(Landroid/os/Bundle;)V
PLcom/android/server/accounts/AccountManagerService$Session;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-PLcom/android/server/accounts/AccountManagerService$Session;->scheduleTimeout()V
-PLcom/android/server/accounts/AccountManagerService$Session;->unbind()V
-PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-$$Nest$fgetmReceiversForType(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
-PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-$$Nest$fgetuserId(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)I
-PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-$$Nest$fgetvisibilityCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
PLcom/android/server/accounts/AccountManagerService$UserAccounts;-><init>(Landroid/content/Context;ILjava/io/File;Ljava/io/File;)V
-PLcom/android/server/accounts/AccountManagerService;->-$$Nest$fgetmAppPermissionChangeListeners(Lcom/android/server/accounts/AccountManagerService;)Ljava/util/concurrent/CopyOnWriteArrayList;
-PLcom/android/server/accounts/AccountManagerService;->-$$Nest$fgetmAuthenticatorCache(Lcom/android/server/accounts/AccountManagerService;)Lcom/android/server/accounts/IAccountAuthenticatorCache;
-PLcom/android/server/accounts/AccountManagerService;->-$$Nest$fgetmSessions(Lcom/android/server/accounts/AccountManagerService;)Ljava/util/LinkedHashMap;
-PLcom/android/server/accounts/AccountManagerService;->-$$Nest$misLocalUnlockedUser(Lcom/android/server/accounts/AccountManagerService;I)Z
PLcom/android/server/accounts/AccountManagerService;-><clinit>()V
-HPLcom/android/server/accounts/AccountManagerService;-><init>(Lcom/android/server/accounts/AccountManagerService$Injector;)V
+PLcom/android/server/accounts/AccountManagerService;-><init>(Lcom/android/server/accounts/AccountManagerService$Injector;)V
+HPLcom/android/server/accounts/AccountManagerService;->accountExistsCache(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Z
+PLcom/android/server/accounts/AccountManagerService;->addAccountExplicitly(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;Ljava/lang/String;)Z
+PLcom/android/server/accounts/AccountManagerService;->addAccountExplicitlyWithVisibility(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;Ljava/util/Map;Ljava/lang/String;)Z
+PLcom/android/server/accounts/AccountManagerService;->addAccountInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;ILjava/util/Map;Ljava/lang/String;)Z
+PLcom/android/server/accounts/AccountManagerService;->calculatePackageSignatureDigest(ILjava/lang/String;)[B
+PLcom/android/server/accounts/AccountManagerService;->canCallerAccessPackage(IILjava/lang/String;)Z
+PLcom/android/server/accounts/AccountManagerService;->canUserModifyAccounts(II)Z
+PLcom/android/server/accounts/AccountManagerService;->canUserModifyAccountsForType(IILjava/lang/String;)Z
+PLcom/android/server/accounts/AccountManagerService;->cancelAccountAccessRequestNotificationIfNeeded(Landroid/accounts/Account;IZLcom/android/server/accounts/AccountManagerService$UserAccounts;)V
+PLcom/android/server/accounts/AccountManagerService;->cancelNotification(Lcom/android/server/accounts/AccountManagerService$NotificationId;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
+PLcom/android/server/accounts/AccountManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/accounts/AccountManagerService;->filterAccounts(Lcom/android/server/accounts/AccountManagerService$UserAccounts;[Landroid/accounts/Account;ILjava/lang/String;Z)[Landroid/accounts/Account;+]Ljava/util/Map;Ljava/util/LinkedHashMap;]Ljava/util/Set;Ljava/util/LinkedHashMap$LinkedKeySet;
+HPLcom/android/server/accounts/AccountManagerService;->filterSharedAccounts(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/util/Map;ILjava/lang/String;)Ljava/util/Map;
+PLcom/android/server/accounts/AccountManagerService;->getAccountVisibilityFromCache(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;)I
PLcom/android/server/accounts/AccountManagerService;->getAccounts(ILjava/lang/String;)[Landroid/accounts/Account;
+PLcom/android/server/accounts/AccountManagerService;->getAccountsAndVisibilityForPackage(Ljava/lang/String;Ljava/lang/String;)Ljava/util/Map;
+PLcom/android/server/accounts/AccountManagerService;->getAccountsAndVisibilityForPackage(Ljava/lang/String;Ljava/util/List;Ljava/lang/Integer;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
HPLcom/android/server/accounts/AccountManagerService;->getAccountsAsUser(Ljava/lang/String;ILjava/lang/String;)[Landroid/accounts/Account;
-HPLcom/android/server/accounts/AccountManagerService;->getAccountsAsUserForPackage(Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Z)[Landroid/accounts/Account;
-HPLcom/android/server/accounts/AccountManagerService;->getAccountsByFeatures(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/accounts/AccountManagerService;->getAccountsAsUserForPackage(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)[Landroid/accounts/Account;
+PLcom/android/server/accounts/AccountManagerService;->getAccountsByFeatures(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/accounts/AccountManagerService;->getAccountsByTypeForPackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account;
PLcom/android/server/accounts/AccountManagerService;->getAccountsForSystem([I)[Landroid/accounts/AccountAndUser;
HPLcom/android/server/accounts/AccountManagerService;->getAccountsFromCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;ILjava/lang/String;Z)[Landroid/accounts/Account;
-HPLcom/android/server/accounts/AccountManagerService;->getAccountsInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;ILjava/lang/String;Ljava/util/List;Z)[Landroid/accounts/Account;
+HPLcom/android/server/accounts/AccountManagerService;->getAccountsInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;ILjava/lang/String;Ljava/util/List;Z)[Landroid/accounts/Account;+]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
PLcom/android/server/accounts/AccountManagerService;->getAllAccountsForSystemProcess()[Landroid/accounts/AccountAndUser;
-PLcom/android/server/accounts/AccountManagerService;->getAuthenticatorTypeAndUIDForUser(Lcom/android/server/accounts/IAccountAuthenticatorCache;I)Ljava/util/HashMap;
-PLcom/android/server/accounts/AccountManagerService;->getRunningAccountsForSystem()[Landroid/accounts/AccountAndUser;
+HPLcom/android/server/accounts/AccountManagerService;->getAuthToken(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;ZZLandroid/os/Bundle;)V
+PLcom/android/server/accounts/AccountManagerService;->getAuthenticatorTypeAndUIDForUser(Lcom/android/server/accounts/AccountAuthenticatorCache;I)Ljava/util/HashMap;
+PLcom/android/server/accounts/AccountManagerService;->getAuthenticatorTypes(I)[Landroid/accounts/AuthenticatorDescription;
+PLcom/android/server/accounts/AccountManagerService;->getAuthenticatorTypesInternal(II)[Landroid/accounts/AuthenticatorDescription;
+PLcom/android/server/accounts/AccountManagerService;->getCredentialPermissionNotificationId(ILandroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;)Lcom/android/server/accounts/AccountManagerService$NotificationId;
+PLcom/android/server/accounts/AccountManagerService;->getPackageNameForUid(I)Ljava/lang/String;
+PLcom/android/server/accounts/AccountManagerService;->getPackagesAndVisibilityForAccountLocked(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
+PLcom/android/server/accounts/AccountManagerService;->getPackagesForVisibilityStr(ILjava/util/Map;)Ljava/lang/String;
+PLcom/android/server/accounts/AccountManagerService;->getPassword(Landroid/accounts/Account;)Ljava/lang/String;
+PLcom/android/server/accounts/AccountManagerService;->getPreviousName(Landroid/accounts/Account;)Ljava/lang/String;
+PLcom/android/server/accounts/AccountManagerService;->getRequestingPackages(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
+PLcom/android/server/accounts/AccountManagerService;->getSigninRequiredNotificationId(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Lcom/android/server/accounts/AccountManagerService$NotificationId;
PLcom/android/server/accounts/AccountManagerService;->getSingleton()Lcom/android/server/accounts/AccountManagerService;
-HPLcom/android/server/accounts/AccountManagerService;->getTypesForCaller(IIZ)Ljava/util/List;
-HPLcom/android/server/accounts/AccountManagerService;->getTypesManagedByCaller(II)Ljava/util/List;
-HPLcom/android/server/accounts/AccountManagerService;->getTypesVisibleToCaller(IILjava/lang/String;)Ljava/util/List;
-HPLcom/android/server/accounts/AccountManagerService;->getUserAccounts(I)Lcom/android/server/accounts/AccountManagerService$UserAccounts;
-HPLcom/android/server/accounts/AccountManagerService;->getUserAccountsNotChecked(I)Lcom/android/server/accounts/AccountManagerService$UserAccounts;
+HPLcom/android/server/accounts/AccountManagerService;->getTypesForCaller(IIZ)Ljava/util/List;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;
+PLcom/android/server/accounts/AccountManagerService;->getUserAccounts(I)Lcom/android/server/accounts/AccountManagerService$UserAccounts;
+HPLcom/android/server/accounts/AccountManagerService;->getUserAccountsNotChecked(I)Lcom/android/server/accounts/AccountManagerService$UserAccounts;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/accounts/AccountManagerService;->getUserData(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/accounts/AccountManagerService;->getUserManager()Landroid/os/UserManager;
-PLcom/android/server/accounts/AccountManagerService;->isAccountManagedByCaller(Ljava/lang/String;II)Z
+PLcom/android/server/accounts/AccountManagerService;->grantAppPermission(Landroid/accounts/Account;Ljava/lang/String;I)V
+PLcom/android/server/accounts/AccountManagerService;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;I)Z
+PLcom/android/server/accounts/AccountManagerService;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/UserHandle;)Z
+PLcom/android/server/accounts/AccountManagerService;->hasFeatures(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;[Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService;->insertAccountIntoCacheLocked(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Landroid/accounts/Account;
+HPLcom/android/server/accounts/AccountManagerService;->invalidateAuthToken(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService;->invalidateAuthTokenLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
+PLcom/android/server/accounts/AccountManagerService;->isAccountManagedByCaller(IILjava/lang/String;)Z
+PLcom/android/server/accounts/AccountManagerService;->isCrossUser(II)Z
PLcom/android/server/accounts/AccountManagerService;->isLocalUnlockedUser(I)Z
-HPLcom/android/server/accounts/AccountManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HPLcom/android/server/accounts/AccountManagerService;->isPermittedForPackage(Ljava/lang/String;I[Ljava/lang/String;)Z
+PLcom/android/server/accounts/AccountManagerService;->isProfileOwner(I)Z
+PLcom/android/server/accounts/AccountManagerService;->isSpecialPackageKey(Ljava/lang/String;)Z
+PLcom/android/server/accounts/AccountManagerService;->logGetAuthTokenMetrics(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService;->logRecord(Ljava/lang/String;Ljava/lang/String;JLcom/android/server/accounts/AccountManagerService$UserAccounts;I)V
+PLcom/android/server/accounts/AccountManagerService;->notifyPackage(Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
+PLcom/android/server/accounts/AccountManagerService;->onAccountAccessed(Ljava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService;->onResult(Landroid/accounts/IAccountManagerResponse;Landroid/os/Bundle;)V
+PLcom/android/server/accounts/AccountManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
PLcom/android/server/accounts/AccountManagerService;->onUnlockUser(I)V
+HPLcom/android/server/accounts/AccountManagerService;->peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/accounts/AccountManagerService;->permissionIsGranted(Landroid/accounts/Account;Ljava/lang/String;II)Z
PLcom/android/server/accounts/AccountManagerService;->purgeOldGrants(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
-HPLcom/android/server/accounts/AccountManagerService;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/accounts/AccountManagerService;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
+PLcom/android/server/accounts/AccountManagerService;->readAuthTokenInternal(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/accounts/AccountManagerService;->readCachedTokenInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)Lcom/android/server/accounts/TokenCache$Value;
+PLcom/android/server/accounts/AccountManagerService;->readPasswordInternal(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/lang/String;
+PLcom/android/server/accounts/AccountManagerService;->readPreviousNameInternal(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/lang/String;
+HPLcom/android/server/accounts/AccountManagerService;->readUserDataInternal(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/accounts/AccountManagerService;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
+HPLcom/android/server/accounts/AccountManagerService;->resolveAccountVisibility(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;)Ljava/lang/Integer;+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;
+HPLcom/android/server/accounts/AccountManagerService;->saveAuthTokenToDatabase(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/accounts/AccountManagerService;->sendAccountsChangedBroadcast(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService;->sendNotificationAccountUpdated(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
+PLcom/android/server/accounts/AccountManagerService;->setAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;I)Z
+PLcom/android/server/accounts/AccountManagerService;->setAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;IZLcom/android/server/accounts/AccountManagerService$UserAccounts;I)Z
+PLcom/android/server/accounts/AccountManagerService;->setAuthToken(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService;->setPassword(Landroid/accounts/Account;Ljava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService;->setPasswordInternal(ILandroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService;->setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/accounts/AccountManagerService;->setUserdataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/accounts/AccountManagerService;->syncDeCeAccountsLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
PLcom/android/server/accounts/AccountManagerService;->unregisterAccountListener([Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/accounts/AccountManagerService;->unregisterAccountListener([Ljava/lang/String;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
-PLcom/android/server/accounts/AccountManagerService;->validateAccounts(I)V
-HPLcom/android/server/accounts/AccountManagerService;->validateAccountsInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Z)V
-PLcom/android/server/accounts/AccountsDb$CeDatabaseHelper;-><init>(Landroid/content/Context;Ljava/lang/String;)V
-PLcom/android/server/accounts/AccountsDb$CeDatabaseHelper;->create(Landroid/content/Context;Ljava/io/File;Ljava/io/File;)Lcom/android/server/accounts/AccountsDb$CeDatabaseHelper;
+PLcom/android/server/accounts/AccountManagerService;->updateAccountVisibilityLocked(ILandroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;)Z
+PLcom/android/server/accounts/AccountManagerService;->updateAppPermission(Landroid/accounts/Account;Ljava/lang/String;IZ)V
+PLcom/android/server/accounts/AccountManagerService;->validateAccountsInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Z)V
+PLcom/android/server/accounts/AccountManagerService;->writeAuthTokenIntoCacheLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/accounts/AccountsDb$CeDatabaseHelper;->onOpen(Landroid/database/sqlite/SQLiteDatabase;)V
-HPLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->-$$Nest$fgetmCeAttached(Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;)Z
-PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->-$$Nest$fputmCeAttached(Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;Z)V
-PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;-><init>(Landroid/content/Context;ILjava/lang/String;)V
-PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;-><init>(Landroid/content/Context;ILjava/lang/String;Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper-IA;)V
+PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;-><init>(Ljava/lang/String;Landroid/content/Context;I)V
PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->getReadableDatabaseUserIsUnlocked()Landroid/database/sqlite/SQLiteDatabase;
+PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->getWritableDatabaseUserIsUnlocked()Landroid/database/sqlite/SQLiteDatabase;
PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->onOpen(Landroid/database/sqlite/SQLiteDatabase;)V
PLcom/android/server/accounts/AccountsDb;-><clinit>()V
PLcom/android/server/accounts/AccountsDb;-><init>(Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;Landroid/content/Context;Ljava/io/File;)V
PLcom/android/server/accounts/AccountsDb;->attachCeDatabase(Ljava/io/File;)V
+PLcom/android/server/accounts/AccountsDb;->beginTransaction()V
PLcom/android/server/accounts/AccountsDb;->create(Landroid/content/Context;ILjava/io/File;Ljava/io/File;)Lcom/android/server/accounts/AccountsDb;
+PLcom/android/server/accounts/AccountsDb;->dumpDebugTable(Ljava/io/PrintWriter;)V
+PLcom/android/server/accounts/AccountsDb;->endTransaction()V
+PLcom/android/server/accounts/AccountsDb;->findAccountPasswordByNameAndType(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/accounts/AccountsDb;->findAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/Integer;
+PLcom/android/server/accounts/AccountsDb;->findAllAccountGrants()Ljava/util/List;
PLcom/android/server/accounts/AccountsDb;->findAllDeAccounts()Ljava/util/Map;
PLcom/android/server/accounts/AccountsDb;->findAllUidGrants()Ljava/util/List;
PLcom/android/server/accounts/AccountsDb;->findAllVisibilityValues()Ljava/util/Map;
-PLcom/android/server/accounts/AccountsDb;->findCeAccountsNotInDe()Ljava/util/List;
+PLcom/android/server/accounts/AccountsDb;->findAuthTokensByAccount(Landroid/accounts/Account;)Ljava/util/Map;
+PLcom/android/server/accounts/AccountsDb;->findCeAccountId(Landroid/accounts/Account;)J
+PLcom/android/server/accounts/AccountsDb;->findDeAccountId(Landroid/accounts/Account;)J
+PLcom/android/server/accounts/AccountsDb;->findDeAccountPreviousName(Landroid/accounts/Account;)Ljava/lang/String;
+HPLcom/android/server/accounts/AccountsDb;->findExtrasIdByAccountId(JLjava/lang/String;)J
PLcom/android/server/accounts/AccountsDb;->findMetaAuthUid()Ljava/util/Map;
-HPLcom/android/server/accounts/AccountsDb;->isCeDatabaseAttached()Z
-PLcom/android/server/accounts/TokenCache$TokenLruCache;-><init>()V
-PLcom/android/server/accounts/TokenCache;-><init>()V
-PLcom/android/server/adb/AdbDebuggingManager$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/accounts/AccountsDb;->findUserExtrasForAccount(Landroid/accounts/Account;)Ljava/util/Map;
+PLcom/android/server/accounts/AccountsDb;->getStatementForLogging()Landroid/database/sqlite/SQLiteStatement;
+PLcom/android/server/accounts/AccountsDb;->insertDeAccount(Landroid/accounts/Account;J)J
+PLcom/android/server/accounts/AccountsDb;->insertExtra(Ljava/lang/String;JLjava/lang/String;)J
+PLcom/android/server/accounts/AccountsDb;->setTransactionSuccessful()V
+PLcom/android/server/accounts/TokenCache$Key;-><init>(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)V
+PLcom/android/server/accounts/TokenCache$Key;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/accounts/TokenCache$Key;->hashCode()I
+PLcom/android/server/accounts/TokenCache$TokenLruCache$Evictor;-><init>(Lcom/android/server/accounts/TokenCache$TokenLruCache;)V
+PLcom/android/server/accounts/TokenCache$TokenLruCache$Evictor;->evict()V
+PLcom/android/server/accounts/TokenCache$TokenLruCache;->entryRemoved(ZLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accounts/TokenCache$TokenLruCache;->sizeOf(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/accounts/TokenCache$Value;-><init>(JLjava/lang/String;)V
+PLcom/android/server/accounts/TokenCache;->put(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BJ)V
PLcom/android/server/adb/AdbDebuggingManager$$ExternalSyntheticLambda0;->currentTimeMillis()J
-PLcom/android/server/adb/AdbDebuggingManager$AdbConnectionInfo;-><init>()V
PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler$1;-><init>(Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;)V
-PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler$2;-><init>(Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;Landroid/os/Handler;)V
+PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler$2;-><init>(Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;)V
PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;-><init>(Lcom/android/server/adb/AdbDebuggingManager;Landroid/os/Looper;Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;)V
-PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;->cancelJobToUpdateAdbKeyStore()V
PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;->initKeyStore()V
-PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;->logAdbConnectionChanged(Ljava/lang/String;IZ)V
-PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;->registerForAuthTimeChanges()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;->logAdbConnectionChanged(ILjava/lang/String;Z)V
PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;->scheduleJobToUpdateAdbKeyStore()J
PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;->startAdbDebuggingThread()V
PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;-><init>()V
@@ -3856,2312 +3438,1637 @@ PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;->closeSocketLoc
PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;->listenToSocket()V
PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;->openSocketLocked()V
PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;->run()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;->sendResponse(Ljava/lang/String;)V
PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;->setHandler(Landroid/os/Handler;)V
+HPLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore$$ExternalSyntheticOutline0;->m(Ljava/lang/String;)Ljava/lang/StringBuilder;
+PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;-><init>(Lcom/android/server/adb/AdbDebuggingManager;)V
-PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->addExistingUserKeysToKeyStore()V
-PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->deleteKeyStore()V
PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->filterOutOldKeys()Z
-PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->getAllowedConnectionTime()J
-PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->getLastConnectionTime(Ljava/lang/String;)J
-PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->getNextExpirationTime()J
-PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->getSystemKeysFromFile(Ljava/lang/String;)Ljava/util/Set;
-PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->initKeyFile()V
-PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->persistKeyStore()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->readKeyStoreContents(Lcom/android/modules/utils/TypedXmlPullParser;)V
PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->readTempKeysFile()V
-PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->setLastConnectionTime(Ljava/lang/String;J)V
PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->setLastConnectionTime(Ljava/lang/String;JZ)V
-PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->updateKeyStore()V
PLcom/android/server/adb/AdbDebuggingManager$PortListenerImpl;-><init>(Lcom/android/server/adb/AdbDebuggingManager;)V
-PLcom/android/server/adb/AdbDebuggingManager;->$r8$lambda$I3NlJTMol-2JFN3dPyCB7gKkrsk()J
-PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fgetmAdbUsbEnabled(Lcom/android/server/adb/AdbDebuggingManager;)Z
-PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fgetmAdbWifiEnabled(Lcom/android/server/adb/AdbDebuggingManager;)Z
-PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fgetmConnectedKeys(Lcom/android/server/adb/AdbDebuggingManager;)Ljava/util/Map;
-PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fgetmConnectionPortPoller(Lcom/android/server/adb/AdbDebuggingManager;)Lcom/android/server/adb/AdbDebuggingManager$AdbConnectionPortPoller;
-PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fgetmContext(Lcom/android/server/adb/AdbDebuggingManager;)Landroid/content/Context;
-PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fgetmTempKeysFile(Lcom/android/server/adb/AdbDebuggingManager;)Ljava/io/File;
-PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fgetmThread(Lcom/android/server/adb/AdbDebuggingManager;)Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;
-PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fgetmTicker(Lcom/android/server/adb/AdbDebuggingManager;)Lcom/android/server/adb/AdbDebuggingManager$Ticker;
-PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fgetmUserKeyFile(Lcom/android/server/adb/AdbDebuggingManager;)Ljava/io/File;
-PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fputmAdbUsbEnabled(Lcom/android/server/adb/AdbDebuggingManager;Z)V
-PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fputmThread(Lcom/android/server/adb/AdbDebuggingManager;Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;)V
+PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$mgetFingerprints(Lcom/android/server/adb/AdbDebuggingManager;Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$msendPersistKeyStoreMessage(Lcom/android/server/adb/AdbDebuggingManager;)V
-PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$sfgetTAG()Ljava/lang/String;
+PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$mwriteKeys(Lcom/android/server/adb/AdbDebuggingManager;Ljava/lang/Iterable;)V
PLcom/android/server/adb/AdbDebuggingManager;-><clinit>()V
-PLcom/android/server/adb/AdbDebuggingManager;-><init>(Landroid/content/Context;)V
PLcom/android/server/adb/AdbDebuggingManager;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/io/File;Ljava/io/File;Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;Lcom/android/server/adb/AdbDebuggingManager$Ticker;)V
+PLcom/android/server/adb/AdbDebuggingManager;->createConfirmationIntent(Landroid/content/ComponentName;Ljava/util/List;)Landroid/content/Intent;
+PLcom/android/server/adb/AdbDebuggingManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;)V
PLcom/android/server/adb/AdbDebuggingManager;->getAdbFile(Ljava/lang/String;)Ljava/io/File;
-PLcom/android/server/adb/AdbDebuggingManager;->lambda$static$0()J
-PLcom/android/server/adb/AdbDebuggingManager;->sendPersistKeyStoreMessage()V
PLcom/android/server/adb/AdbDebuggingManager;->setAdbEnabled(ZB)V
+PLcom/android/server/adb/AdbDebuggingManager;->startConfirmationActivity(Landroid/content/ComponentName;Landroid/os/UserHandle;Ljava/util/List;)Z
PLcom/android/server/adb/AdbService$AdbConnectionPortListener;-><init>(Lcom/android/server/adb/AdbService;)V
PLcom/android/server/adb/AdbService$AdbManagerInternalImpl;-><init>(Lcom/android/server/adb/AdbService;)V
-PLcom/android/server/adb/AdbService$AdbManagerInternalImpl;-><init>(Lcom/android/server/adb/AdbService;Lcom/android/server/adb/AdbService$AdbManagerInternalImpl-IA;)V
PLcom/android/server/adb/AdbService$AdbManagerInternalImpl;->isAdbEnabled(B)Z
PLcom/android/server/adb/AdbService$AdbManagerInternalImpl;->registerTransport(Landroid/debug/IAdbTransport;)V
PLcom/android/server/adb/AdbService$AdbSettingsObserver;-><init>(Lcom/android/server/adb/AdbService;)V
-PLcom/android/server/adb/AdbService$Lifecycle$$ExternalSyntheticLambda0;-><init>()V
PLcom/android/server/adb/AdbService$Lifecycle$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
PLcom/android/server/adb/AdbService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/adb/AdbService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/adb/AdbService$Lifecycle;->onStart()V
-PLcom/android/server/adb/AdbService;->-$$Nest$fgetmIsAdbUsbEnabled(Lcom/android/server/adb/AdbService;)Z
-PLcom/android/server/adb/AdbService;->-$$Nest$fgetmTransports(Lcom/android/server/adb/AdbService;)Landroid/util/ArrayMap;
PLcom/android/server/adb/AdbService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/adb/AdbService;-><init>(Landroid/content/Context;Lcom/android/server/adb/AdbService-IA;)V
-PLcom/android/server/adb/AdbService;->bootCompleted()V
-PLcom/android/server/adb/AdbService;->containsFunction(Ljava/lang/String;Ljava/lang/String;)Z
-PLcom/android/server/adb/AdbService;->registerContentObservers()V
-PLcom/android/server/adb/AdbService;->systemReady()V
+PLcom/android/server/adb/AdbService;->allowDebugging(ZLjava/lang/String;)V
+PLcom/android/server/adb/AdbService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
HPLcom/android/server/alarm/Alarm$Snapshot;-><init>(Lcom/android/server/alarm/Alarm;)V
-PLcom/android/server/alarm/Alarm;->-$$Nest$fgetmPolicyWhenElapsed(Lcom/android/server/alarm/Alarm;)[J
-HPLcom/android/server/alarm/Alarm;-><init>(IJJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;ILandroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;Landroid/os/Bundle;I)V
-PLcom/android/server/alarm/Alarm;->getMaxWhenElapsed()J
-PLcom/android/server/alarm/Alarm;->getRequestedElapsed()J
-PLcom/android/server/alarm/Alarm;->getWhenElapsed()J
-HPLcom/android/server/alarm/Alarm;->makeTag(Landroid/app/PendingIntent;Ljava/lang/String;I)Ljava/lang/String;
-HPLcom/android/server/alarm/Alarm;->matches(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)Z
+HPLcom/android/server/alarm/Alarm;-><init>(IIIIJJJJLandroid/app/AlarmManager$AlarmClockInfo;Landroid/app/IAlarmListener;Landroid/app/PendingIntent;Landroid/os/Bundle;Landroid/os/WorkSource;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/alarm/Alarm;->dump(Landroid/util/IndentingPrintWriter;JLjava/text/SimpleDateFormat;)V
+PLcom/android/server/alarm/Alarm;->policyIndexToString(I)Ljava/lang/String;
HPLcom/android/server/alarm/Alarm;->setPolicyElapsed(IJ)Z
-HPLcom/android/server/alarm/Alarm;->updateWhenElapsed()Z
+PLcom/android/server/alarm/Alarm;->toString()Ljava/lang/String;
+PLcom/android/server/alarm/Alarm;->typeToString(I)Ljava/lang/String;
PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
-HPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda11;-><init>(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
-HPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda11;->test(Ljava/lang/Object;)Z
-PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda14;-><init>(I)V
-PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda14;->test(Ljava/lang/Object;)Z
-HPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda15;-><init>(Lcom/android/server/alarm/AlarmManagerService;Landroid/util/ArraySet;)V
-HPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda15;->updateAlarmDelivery(Lcom/android/server/alarm/Alarm;)Z
-PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/alarm/AlarmManagerService;I)V
-PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda22;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
-PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda22;->updateAlarmDelivery(Lcom/android/server/alarm/Alarm;)Z
-PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
-PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
-PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda3;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/alarm/AlarmManagerService;Landroid/util/ArraySet;)V
+HPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda10;->updateAlarmDelivery(Lcom/android/server/alarm/Alarm;)Z
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda11;-><init>(ILjava/lang/String;)V
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda11;->test(Ljava/lang/Object;)Z
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+HPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda1;->onUidFrozenStateChanged([I[I)V
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/alarm/AlarmManagerService;I)V
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/alarm/AlarmManagerService;I)V
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda4;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda6;-><init>(ILjava/lang/Object;)V
+HPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda6;->test(Ljava/lang/Object;)Z
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda8;-><init>(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
+HPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda8;->test(Ljava/lang/Object;)Z+]Landroid/app/IAlarmListener;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/app/IAlarmListener$Stub$Proxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/os/IBinder;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/os/BinderProxy;,Lcom/android/server/alarm/AlarmManagerService$2;
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda9;-><init>(II)V
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda9;->test(Ljava/lang/Object;)Z
PLcom/android/server/alarm/AlarmManagerService$1;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+PLcom/android/server/alarm/AlarmManagerService$1;->binderDied(Landroid/os/IBinder;)V
PLcom/android/server/alarm/AlarmManagerService$2$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/alarm/AlarmManagerService$2;Landroid/app/IAlarmCompleteListener;)V
PLcom/android/server/alarm/AlarmManagerService$2$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/alarm/AlarmManagerService$2;->$r8$lambda$FzGTY398wY7rsveJl5qWIzqCYlQ(Lcom/android/server/alarm/AlarmManagerService$2;Landroid/app/IAlarmCompleteListener;)V
PLcom/android/server/alarm/AlarmManagerService$2;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
HPLcom/android/server/alarm/AlarmManagerService$2;->doAlarm(Landroid/app/IAlarmCompleteListener;)V
-HPLcom/android/server/alarm/AlarmManagerService$2;->lambda$doAlarm$0(Landroid/app/IAlarmCompleteListener;)V
PLcom/android/server/alarm/AlarmManagerService$3;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
PLcom/android/server/alarm/AlarmManagerService$4;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
PLcom/android/server/alarm/AlarmManagerService$4;->canScheduleExactAlarms(Ljava/lang/String;)Z
+PLcom/android/server/alarm/AlarmManagerService$4;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/alarm/AlarmManagerService$4;->getNextAlarmClock(I)Landroid/app/AlarmManager$AlarmClockInfo;
+PLcom/android/server/alarm/AlarmManagerService$4;->getNextWakeFromIdleTime()J
HPLcom/android/server/alarm/AlarmManagerService$4;->remove(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
-HPLcom/android/server/alarm/AlarmManagerService$4;->set(Ljava/lang/String;IJJJILandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;)V
+HPLcom/android/server/alarm/AlarmManagerService$4;->set(Ljava/lang/String;IJJJILandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
+PLcom/android/server/alarm/AlarmManagerService$4;->setTime(J)Z
+PLcom/android/server/alarm/AlarmManagerService$4;->setTimeZone(Ljava/lang/String;)V
+PLcom/android/server/alarm/AlarmManagerService$5;-><init>(I)V
+PLcom/android/server/alarm/AlarmManagerService$5;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
PLcom/android/server/alarm/AlarmManagerService$7;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
-PLcom/android/server/alarm/AlarmManagerService$8$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/alarm/AlarmManagerService$8;)V
-PLcom/android/server/alarm/AlarmManagerService$8$$ExternalSyntheticLambda0;->updateAlarmDelivery(Lcom/android/server/alarm/Alarm;)Z
-HPLcom/android/server/alarm/AlarmManagerService$8$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/alarm/AlarmManagerService$8;I)V
-HPLcom/android/server/alarm/AlarmManagerService$8$$ExternalSyntheticLambda1;->updateAlarmDelivery(Lcom/android/server/alarm/Alarm;)Z
-HPLcom/android/server/alarm/AlarmManagerService$8;->$r8$lambda$HnHZA72qLxi-ubEMVN7MFMyc2DI(Lcom/android/server/alarm/AlarmManagerService$8;ILcom/android/server/alarm/Alarm;)Z
-PLcom/android/server/alarm/AlarmManagerService$8;->$r8$lambda$R67M3X63FHlLLApwXe7t37Hv1Ao(Lcom/android/server/alarm/AlarmManagerService$8;Lcom/android/server/alarm/Alarm;)Z
-PLcom/android/server/alarm/AlarmManagerService$8;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
-HPLcom/android/server/alarm/AlarmManagerService$8;->handleUidCachedChanged(IZ)V
-HPLcom/android/server/alarm/AlarmManagerService$8;->lambda$updateAlarmsForUid$1(ILcom/android/server/alarm/Alarm;)Z
-PLcom/android/server/alarm/AlarmManagerService$8;->lambda$updateAllAlarms$0(Lcom/android/server/alarm/Alarm;)Z
-HPLcom/android/server/alarm/AlarmManagerService$8;->unblockAlarmsForUid(I)V
-HPLcom/android/server/alarm/AlarmManagerService$8;->updateAlarmsForUid(I)V
-PLcom/android/server/alarm/AlarmManagerService$8;->updateAllAlarms()V
-PLcom/android/server/alarm/AlarmManagerService$AlarmHandler$$ExternalSyntheticLambda0;-><init>(I)V
-HPLcom/android/server/alarm/AlarmManagerService$AlarmHandler$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
-PLcom/android/server/alarm/AlarmManagerService$AlarmHandler;->$r8$lambda$fGF9k_ZLsVmKzJSadhA1hLMfPXM(ILcom/android/server/alarm/Alarm;)Z
+PLcom/android/server/alarm/AlarmManagerService$7;->unblockAlarmsForUid(I)V
+HPLcom/android/server/alarm/AlarmManagerService$7;->updateAlarmsForUid(I)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
PLcom/android/server/alarm/AlarmManagerService$AlarmHandler;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
-HPLcom/android/server/alarm/AlarmManagerService$AlarmHandler;->handleMessage(Landroid/os/Message;)V
-HPLcom/android/server/alarm/AlarmManagerService$AlarmHandler;->lambda$handleMessage$0(ILcom/android/server/alarm/Alarm;)Z
+HPLcom/android/server/alarm/AlarmManagerService$AlarmHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;
PLcom/android/server/alarm/AlarmManagerService$AlarmThread;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
HPLcom/android/server/alarm/AlarmManagerService$AlarmThread;->run()V
PLcom/android/server/alarm/AlarmManagerService$AppStandbyTracker;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
-PLcom/android/server/alarm/AlarmManagerService$AppStandbyTracker;-><init>(Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService$AppStandbyTracker-IA;)V
-HPLcom/android/server/alarm/AlarmManagerService$AppStandbyTracker;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
-PLcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;-><init>(J)V
-HPLcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;->recordAlarmForPackage(Ljava/lang/String;IJ)V
-PLcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;->removeForPackage(Ljava/lang/String;I)V
-PLcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;->snapToWindow(Landroid/util/LongArrayQueue;)V
+PLcom/android/server/alarm/AlarmManagerService$AppStandbyTracker;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
+PLcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;-><init>()V
+PLcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;->dump(Landroid/util/IndentingPrintWriter;J)V
+PLcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;->getNthLastWakeupForPackage(IILjava/lang/String;)J
+HPLcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;->getTotalWakeupsInWindow(ILjava/lang/String;)I+]Landroid/util/LongArrayQueue;Landroid/util/LongArrayQueue;
+PLcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;->recordAlarmForPackage(ILjava/lang/String;J)V
PLcom/android/server/alarm/AlarmManagerService$BroadcastStats;-><init>(ILjava/lang/String;)V
PLcom/android/server/alarm/AlarmManagerService$ChargingReceiver;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+PLcom/android/server/alarm/AlarmManagerService$ChargingReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/alarm/AlarmManagerService$ClockReceiver;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+PLcom/android/server/alarm/AlarmManagerService$ClockReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/alarm/AlarmManagerService$ClockReceiver;->scheduleDateChangedEvent()V
HPLcom/android/server/alarm/AlarmManagerService$ClockReceiver;->scheduleTimeTickEvent()V
-PLcom/android/server/alarm/AlarmManagerService$Constants;-><init>(Lcom/android/server/alarm/AlarmManagerService;Landroid/os/Handler;)V
+PLcom/android/server/alarm/AlarmManagerService$Constants;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+PLcom/android/server/alarm/AlarmManagerService$Constants;->dump(Landroid/util/IndentingPrintWriter;)V
PLcom/android/server/alarm/AlarmManagerService$Constants;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
-PLcom/android/server/alarm/AlarmManagerService$Constants;->onTareEnabledModeChanged(I)V
-PLcom/android/server/alarm/AlarmManagerService$Constants;->start()V
PLcom/android/server/alarm/AlarmManagerService$Constants;->updateAllowWhileIdleWhitelistDurationLocked()V
-PLcom/android/server/alarm/AlarmManagerService$Constants;->updateTareSettings(I)V
+PLcom/android/server/alarm/AlarmManagerService$DeliveryTracker$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;Lcom/android/server/alarm/Alarm;ZZI)V
+PLcom/android/server/alarm/AlarmManagerService$DeliveryTracker$$ExternalSyntheticLambda1;->updateAlarmDelivery(Lcom/android/server/alarm/Alarm;)Z
+PLcom/android/server/alarm/AlarmManagerService$DeliveryTracker$$ExternalSyntheticOutline0;->m(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/StringBuilder;)V
PLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->alarmComplete(Landroid/os/IBinder;)V
+PLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->alarmTimedOut(Landroid/os/IBinder;)V
HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->deliverLocked(Lcom/android/server/alarm/Alarm;J)V
-HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->onSendFinished(Landroid/app/PendingIntent;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V
-HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/app/PendingIntent;Landroid/content/Intent;)Lcom/android/server/alarm/AlarmManagerService$InFlight;
+PLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->onSendFinished(Landroid/app/PendingIntent;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/app/PendingIntent;Landroid/content/Intent;)Lcom/android/server/alarm/AlarmManagerService$InFlight;
HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/os/IBinder;)Lcom/android/server/alarm/AlarmManagerService$InFlight;
-HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->updateStatsLocked(Lcom/android/server/alarm/AlarmManagerService$InFlight;)V
HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->updateTrackingLocked(Lcom/android/server/alarm/AlarmManagerService$InFlight;)V
PLcom/android/server/alarm/AlarmManagerService$FilterStats;-><init>(Lcom/android/server/alarm/AlarmManagerService$BroadcastStats;Ljava/lang/String;)V
HPLcom/android/server/alarm/AlarmManagerService$InFlight;-><init>(Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/Alarm;J)V
-PLcom/android/server/alarm/AlarmManagerService$InFlight;->isBroadcast()Z
-PLcom/android/server/alarm/AlarmManagerService$Injector;-><init>(Landroid/content/Context;)V
-PLcom/android/server/alarm/AlarmManagerService$Injector;->getAlarmWakeLock()Landroid/os/PowerManager$WakeLock;
-PLcom/android/server/alarm/AlarmManagerService$Injector;->getAppOpsService()Lcom/android/internal/app/IAppOpsService;
-HPLcom/android/server/alarm/AlarmManagerService$Injector;->getCallingUid()I
-PLcom/android/server/alarm/AlarmManagerService$Injector;->getClockReceiver(Lcom/android/server/alarm/AlarmManagerService;)Lcom/android/server/alarm/AlarmManagerService$ClockReceiver;
-HPLcom/android/server/alarm/AlarmManagerService$Injector;->getCurrentTimeMillis()J
-HPLcom/android/server/alarm/AlarmManagerService$Injector;->getElapsedRealtimeMillis()J
-PLcom/android/server/alarm/AlarmManagerService$Injector;->getSystemUiUid(Landroid/content/pm/PackageManagerInternal;)I
-PLcom/android/server/alarm/AlarmManagerService$Injector;->init()V
+PLcom/android/server/alarm/AlarmManagerService$Injector;->getCurrentTimeMillis()J
+PLcom/android/server/alarm/AlarmManagerService$Injector;->getElapsedRealtimeMillis()J
PLcom/android/server/alarm/AlarmManagerService$Injector;->initializeTimeIfRequired()V
-HPLcom/android/server/alarm/AlarmManagerService$Injector;->isAlarmDriverPresent()Z
-PLcom/android/server/alarm/AlarmManagerService$Injector;->registerDeviceConfigListener(Landroid/provider/DeviceConfig$OnPropertiesChangedListener;)V
-HPLcom/android/server/alarm/AlarmManagerService$Injector;->setAlarm(IJ)V
-PLcom/android/server/alarm/AlarmManagerService$Injector;->waitForAlarm()I
-PLcom/android/server/alarm/AlarmManagerService$InteractiveStateReceiver;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
PLcom/android/server/alarm/AlarmManagerService$LocalService;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
-PLcom/android/server/alarm/AlarmManagerService$LocalService;-><init>(Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService$LocalService-IA;)V
-HPLcom/android/server/alarm/AlarmManagerService$LocalService;->remove(Landroid/app/PendingIntent;)V
-HPLcom/android/server/alarm/AlarmManagerService$LocalService;->shouldGetBucketElevation(Ljava/lang/String;I)Z
HPLcom/android/server/alarm/AlarmManagerService$RemovedAlarm;-><init>(Lcom/android/server/alarm/Alarm;IJJ)V
-PLcom/android/server/alarm/AlarmManagerService$RemovedAlarm;->isLoggable(I)Z
-PLcom/android/server/alarm/AlarmManagerService$TemporaryQuotaReserve;-><init>(J)V
-PLcom/android/server/alarm/AlarmManagerService$TemporaryQuotaReserve;->cleanUpExpiredQuotas(J)V
-PLcom/android/server/alarm/AlarmManagerService$TemporaryQuotaReserve;->removeForPackage(Ljava/lang/String;I)V
-PLcom/android/server/alarm/AlarmManagerService$UninstallReceiver;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
-PLcom/android/server/alarm/AlarmManagerService$UninstallReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/alarm/AlarmManagerService;->$r8$lambda$-ljxB-II3TsrNDjjSE-gaVuQkPU(Lcom/android/server/alarm/AlarmManagerService;I)V
-PLcom/android/server/alarm/AlarmManagerService;->$r8$lambda$ADG0EAACpycMPBOZGFyKeH7UxXU(ILcom/android/server/alarm/Alarm;)Z
-PLcom/android/server/alarm/AlarmManagerService;->$r8$lambda$L82siL18ro7TYb8gZPPKO1HL33E(Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;)I
-PLcom/android/server/alarm/AlarmManagerService;->$r8$lambda$gTBrLqI8lRe-eLGhoAoKns8vULU(Lcom/android/server/alarm/AlarmManagerService;Landroid/util/ArraySet;Lcom/android/server/alarm/Alarm;)Z
-PLcom/android/server/alarm/AlarmManagerService;->$r8$lambda$lO7FlqYCXbhzV969DpFL5GaI-Ko(Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/Alarm;)Z
-HPLcom/android/server/alarm/AlarmManagerService;->$r8$lambda$tqdFahJPkNbOEr_3mNLrRNcYMTM(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;Lcom/android/server/alarm/Alarm;)Z
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmActivityManagerInternal(Lcom/android/server/alarm/AlarmManagerService;)Landroid/app/ActivityManagerInternal;
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmAppStateTracker(Lcom/android/server/alarm/AlarmManagerService;)Lcom/android/server/AppStateTrackerImpl;
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmBackgroundIntent(Lcom/android/server/alarm/AlarmManagerService;)Landroid/content/Intent;
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmBatteryStatsInternal(Lcom/android/server/alarm/AlarmManagerService;)Landroid/os/BatteryStatsInternal;
-HPLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmInjector(Lcom/android/server/alarm/AlarmManagerService;)Lcom/android/server/alarm/AlarmManagerService$Injector;
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmListenerCount(Lcom/android/server/alarm/AlarmManagerService;)I
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmListenerFinishCount(Lcom/android/server/alarm/AlarmManagerService;)I
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmNextTickHistory(Lcom/android/server/alarm/AlarmManagerService;)I
-HPLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmPackageManagerInternal(Lcom/android/server/alarm/AlarmManagerService;)Landroid/content/pm/PackageManagerInternal;
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmSendCount(Lcom/android/server/alarm/AlarmManagerService;)I
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmSendFinishCount(Lcom/android/server/alarm/AlarmManagerService;)I
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmTickHistory(Lcom/android/server/alarm/AlarmManagerService;)[J
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fputmLastTickReceived(Lcom/android/server/alarm/AlarmManagerService;J)V
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fputmLastTickSet(Lcom/android/server/alarm/AlarmManagerService;J)V
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fputmLastTrigger(Lcom/android/server/alarm/AlarmManagerService;J)V
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fputmLastWakeup(Lcom/android/server/alarm/AlarmManagerService;J)V
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fputmListenerCount(Lcom/android/server/alarm/AlarmManagerService;I)V
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fputmListenerFinishCount(Lcom/android/server/alarm/AlarmManagerService;I)V
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fputmNextTickHistory(Lcom/android/server/alarm/AlarmManagerService;I)V
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fputmSendCount(Lcom/android/server/alarm/AlarmManagerService;I)V
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fputmSendFinishCount(Lcom/android/server/alarm/AlarmManagerService;I)V
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$madjustDeliveryTimeBasedOnBatterySaver(Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/Alarm;)Z
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$mgetAlarmOperationBundle(Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/Alarm;)Landroid/os/Bundle;
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$mgetStatsLocked(Lcom/android/server/alarm/AlarmManagerService;ILjava/lang/String;)Lcom/android/server/alarm/AlarmManagerService$BroadcastStats;
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$mgetStatsLocked(Lcom/android/server/alarm/AlarmManagerService;Landroid/app/PendingIntent;)Lcom/android/server/alarm/AlarmManagerService$BroadcastStats;
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$mlogAlarmBatchDelivered(Lcom/android/server/alarm/AlarmManagerService;IILandroid/util/SparseIntArray;Landroid/util/SparseIntArray;)V
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$mnotifyBroadcastAlarmCompleteLocked(Lcom/android/server/alarm/AlarmManagerService;I)V
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$mnotifyBroadcastAlarmPendingLocked(Lcom/android/server/alarm/AlarmManagerService;I)V
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$mremoveAlarmsInternalLocked(Lcom/android/server/alarm/AlarmManagerService;Ljava/util/function/Predicate;I)V
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$mupdateNextAlarmClockLocked(Lcom/android/server/alarm/AlarmManagerService;)V
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$smgetAlarmAttributionUid(Lcom/android/server/alarm/Alarm;)I
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$smincrement(Landroid/util/SparseIntArray;I)V
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$sminit()J
-PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$smisExactAlarmChangeEnabled(Ljava/lang/String;I)Z
-HPLcom/android/server/alarm/AlarmManagerService;->-$$Nest$smset(JIJJ)I
+PLcom/android/server/alarm/AlarmManagerService$RemovedAlarm;->dump(Landroid/util/IndentingPrintWriter;JLjava/text/SimpleDateFormat;)V
+PLcom/android/server/alarm/AlarmManagerService$TemporaryQuotaReserve;-><init>()V
+PLcom/android/server/alarm/AlarmManagerService$TemporaryQuotaReserve;->dump(Landroid/util/IndentingPrintWriter;J)V
+PLcom/android/server/alarm/AlarmManagerService$UninstallReceiver;-><init>(Lcom/android/server/alarm/AlarmManagerService;I)V
+HPLcom/android/server/alarm/AlarmManagerService$UninstallReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/alarm/AlarmManagerService;->-$$Nest$mlogAlarmBatchDelivered(Lcom/android/server/alarm/AlarmManagerService;IILandroid/util/SparseIntArray;Landroid/util/SparseIntArray;)V
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$smgetNextAlarm(IJ)J
PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$smwaitForAlarm(J)I
PLcom/android/server/alarm/AlarmManagerService;-><clinit>()V
PLcom/android/server/alarm/AlarmManagerService;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/alarm/AlarmManagerService;-><init>(Landroid/content/Context;Lcom/android/server/alarm/AlarmManagerService$Injector;)V
+PLcom/android/server/alarm/AlarmManagerService;-><init>(Landroid/content/Context;Lcom/android/server/alarm/AlarmManagerService$Injector;)V
PLcom/android/server/alarm/AlarmManagerService;->addClampPositive(JJ)J
HPLcom/android/server/alarm/AlarmManagerService;->adjustDeliveryTimeBasedOnBatterySaver(Lcom/android/server/alarm/Alarm;)Z
-HPLcom/android/server/alarm/AlarmManagerService;->adjustDeliveryTimeBasedOnBucketLocked(Lcom/android/server/alarm/Alarm;)Z
-HPLcom/android/server/alarm/AlarmManagerService;->adjustDeliveryTimeBasedOnTareLocked(Lcom/android/server/alarm/Alarm;)Z
-HPLcom/android/server/alarm/AlarmManagerService;->calculateDeliveryPriorities(Ljava/util/ArrayList;)V
+HPLcom/android/server/alarm/AlarmManagerService;->adjustDeliveryTimeBasedOnBucketLocked(Lcom/android/server/alarm/Alarm;)Z+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;
+HPLcom/android/server/alarm/AlarmManagerService;->adjustDeliveryTimeBasedOnDeviceIdle(Lcom/android/server/alarm/Alarm;)Z
+PLcom/android/server/alarm/AlarmManagerService;->adjustIdleUntilTime(Lcom/android/server/alarm/Alarm;)Z
+HPLcom/android/server/alarm/AlarmManagerService;->calculateDeliveryPriorities(Ljava/util/ArrayList;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/alarm/AlarmManagerService;->checkAllowNonWakeupDelayLocked(J)Z
-HPLcom/android/server/alarm/AlarmManagerService;->convertToElapsed(JI)J
-HPLcom/android/server/alarm/AlarmManagerService;->decrementAlarmCount(II)V
-HPLcom/android/server/alarm/AlarmManagerService;->deliverAlarmsLocked(Ljava/util/ArrayList;J)V
-PLcom/android/server/alarm/AlarmManagerService;->getAlarmAttributionUid(Lcom/android/server/alarm/Alarm;)I
-PLcom/android/server/alarm/AlarmManagerService;->getAlarmOperationBundle(Lcom/android/server/alarm/Alarm;)Landroid/os/Bundle;
-PLcom/android/server/alarm/AlarmManagerService;->getMinimumAllowedWindow(JJ)J
-PLcom/android/server/alarm/AlarmManagerService;->getNextAlarmClockImpl(I)Landroid/app/AlarmManager$AlarmClockInfo;
-HPLcom/android/server/alarm/AlarmManagerService;->getStatsLocked(ILjava/lang/String;)Lcom/android/server/alarm/AlarmManagerService$BroadcastStats;
-PLcom/android/server/alarm/AlarmManagerService;->getStatsLocked(Landroid/app/PendingIntent;)Lcom/android/server/alarm/AlarmManagerService$BroadcastStats;
-HPLcom/android/server/alarm/AlarmManagerService;->hasScheduleExactAlarmInternal(Ljava/lang/String;I)Z
-HPLcom/android/server/alarm/AlarmManagerService;->hasUseExactAlarmInternal(Ljava/lang/String;I)Z
-HPLcom/android/server/alarm/AlarmManagerService;->increment(Landroid/util/SparseIntArray;I)V
-HPLcom/android/server/alarm/AlarmManagerService;->incrementAlarmCount(I)V
-HPLcom/android/server/alarm/AlarmManagerService;->isBackgroundRestricted(Lcom/android/server/alarm/Alarm;)Z
-HPLcom/android/server/alarm/AlarmManagerService;->isExactAlarmChangeEnabled(Ljava/lang/String;I)Z
+HPLcom/android/server/alarm/AlarmManagerService;->convertToElapsed(IJ)J
+PLcom/android/server/alarm/AlarmManagerService;->currentNonWakeupFuzzLocked(J)J
+HPLcom/android/server/alarm/AlarmManagerService;->decrementAlarmCount(I)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+HPLcom/android/server/alarm/AlarmManagerService;->deliverAlarmsLocked(JLjava/util/ArrayList;)V
+PLcom/android/server/alarm/AlarmManagerService;->dumpAlarmList(Landroid/util/IndentingPrintWriter;Ljava/util/ArrayList;JLjava/text/SimpleDateFormat;)V
+PLcom/android/server/alarm/AlarmManagerService;->dumpImpl(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/alarm/AlarmManagerService;->getQuotaForBucketLocked(I)I
+PLcom/android/server/alarm/AlarmManagerService;->getStatsLocked(ILjava/lang/String;)Lcom/android/server/alarm/AlarmManagerService$BroadcastStats;
+HPLcom/android/server/alarm/AlarmManagerService;->hasScheduleExactAlarmInternal(ILjava/lang/String;)Z
+HPLcom/android/server/alarm/AlarmManagerService;->hasUseExactAlarmInternal(ILjava/lang/String;)Z
+HPLcom/android/server/alarm/AlarmManagerService;->increment(ILandroid/util/SparseIntArray;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+HPLcom/android/server/alarm/AlarmManagerService;->interactiveStateChangedLocked(Z)V
+PLcom/android/server/alarm/AlarmManagerService;->isAllowedWhileIdleRestricted(Lcom/android/server/alarm/Alarm;)Z
+PLcom/android/server/alarm/AlarmManagerService;->isBackgroundRestricted(Lcom/android/server/alarm/Alarm;)Z
+PLcom/android/server/alarm/AlarmManagerService;->isExactAlarmChangeEnabled(ILjava/lang/String;)Z
HPLcom/android/server/alarm/AlarmManagerService;->isExemptFromAppStandby(Lcom/android/server/alarm/Alarm;)Z
-HPLcom/android/server/alarm/AlarmManagerService;->isExemptFromBatterySaver(Lcom/android/server/alarm/Alarm;)Z
HPLcom/android/server/alarm/AlarmManagerService;->isExemptFromExactAlarmPermissionNoLock(I)Z
PLcom/android/server/alarm/AlarmManagerService;->isRtc(I)Z
-PLcom/android/server/alarm/AlarmManagerService;->isScheduleExactAlarmDeniedByDefault(Ljava/lang/String;I)Z
-HPLcom/android/server/alarm/AlarmManagerService;->isTimeTickAlarm(Lcom/android/server/alarm/Alarm;)Z
-HPLcom/android/server/alarm/AlarmManagerService;->isUseExactAlarmEnabled(Ljava/lang/String;I)Z
-PLcom/android/server/alarm/AlarmManagerService;->lambda$new$1(Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;)I
-HPLcom/android/server/alarm/AlarmManagerService;->lambda$onUserStarting$7(I)V
-PLcom/android/server/alarm/AlarmManagerService;->lambda$reevaluateRtcAlarms$2(Lcom/android/server/alarm/Alarm;)Z
-HPLcom/android/server/alarm/AlarmManagerService;->lambda$removeLocked$17(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;Lcom/android/server/alarm/Alarm;)Z
-PLcom/android/server/alarm/AlarmManagerService;->lambda$removeLocked$18(ILcom/android/server/alarm/Alarm;)Z
-HPLcom/android/server/alarm/AlarmManagerService;->lambda$reorderAlarmsBasedOnStandbyBuckets$5(Landroid/util/ArraySet;Lcom/android/server/alarm/Alarm;)Z
-HPLcom/android/server/alarm/AlarmManagerService;->logAlarmBatchDelivered(IILandroid/util/SparseIntArray;Landroid/util/SparseIntArray;)V
-PLcom/android/server/alarm/AlarmManagerService;->makeBasicAlarmBroadcastOptions()Landroid/app/BroadcastOptions;
HPLcom/android/server/alarm/AlarmManagerService;->maxTriggerTime(JJJ)J
-HPLcom/android/server/alarm/AlarmManagerService;->maybeUnregisterTareListenerLocked(Lcom/android/server/alarm/Alarm;)V
-PLcom/android/server/alarm/AlarmManagerService;->notifyBroadcastAlarmCompleteLocked(I)V
-PLcom/android/server/alarm/AlarmManagerService;->notifyBroadcastAlarmPendingLocked(I)V
PLcom/android/server/alarm/AlarmManagerService;->onBootPhase(I)V
-HPLcom/android/server/alarm/AlarmManagerService;->onStart()V
+PLcom/android/server/alarm/AlarmManagerService;->onStart()V
PLcom/android/server/alarm/AlarmManagerService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/alarm/AlarmManagerService;->reevaluateRtcAlarms()V
PLcom/android/server/alarm/AlarmManagerService;->refreshExactAlarmCandidates()V
-HPLcom/android/server/alarm/AlarmManagerService;->registerTareListener(Lcom/android/server/alarm/Alarm;)V
-HPLcom/android/server/alarm/AlarmManagerService;->removeAlarmsInternalLocked(Ljava/util/function/Predicate;I)V
-PLcom/android/server/alarm/AlarmManagerService;->removeImpl(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
-PLcom/android/server/alarm/AlarmManagerService;->removeLocked(II)V
+HPLcom/android/server/alarm/AlarmManagerService;->removeAlarmsInternalLocked(ILjava/util/function/Predicate;)V+]Landroid/app/IAlarmListener;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/app/IAlarmListener$Stub$Proxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/os/IBinder;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/os/BinderProxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/util/RingBuffer;Lcom/android/internal/util/RingBuffer;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/function/Predicate;Lcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda11;,Lcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda6;,Lcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda8;,Lcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda9;
+PLcom/android/server/alarm/AlarmManagerService;->removeExactAlarmsOnPermissionRevoked(ILjava/lang/String;Z)V
+PLcom/android/server/alarm/AlarmManagerService;->removeImpl(Landroid/app/PendingIntent;Lcom/android/server/alarm/AlarmManagerService$2;)V
HPLcom/android/server/alarm/AlarmManagerService;->removeLocked(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;I)V
-HPLcom/android/server/alarm/AlarmManagerService;->reorderAlarmsBasedOnStandbyBuckets(Landroid/util/ArraySet;)Z
-PLcom/android/server/alarm/AlarmManagerService;->reportAlarmEventToTare(Lcom/android/server/alarm/Alarm;)V
-HPLcom/android/server/alarm/AlarmManagerService;->rescheduleKernelAlarmsLocked()V
-PLcom/android/server/alarm/AlarmManagerService;->restoreRequestedTime(Lcom/android/server/alarm/Alarm;)Z
-HPLcom/android/server/alarm/AlarmManagerService;->sendPendingBackgroundAlarmsLocked(ILjava/lang/String;)V
-HPLcom/android/server/alarm/AlarmManagerService;->setImpl(IJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;ILandroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;Landroid/os/Bundle;I)V
-HPLcom/android/server/alarm/AlarmManagerService;->setImplLocked(IJJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;ILandroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;Landroid/os/Bundle;I)V
-HPLcom/android/server/alarm/AlarmManagerService;->setImplLocked(Lcom/android/server/alarm/Alarm;)V
+PLcom/android/server/alarm/AlarmManagerService;->reorderAlarmsBasedOnStandbyBuckets(Landroid/util/ArraySet;)Z
+HPLcom/android/server/alarm/AlarmManagerService;->rescheduleKernelAlarmsLocked()V+]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/alarm/AlarmManagerService;->sendPendingBackgroundAlarmsLocked(ILjava/lang/String;)V
+HPLcom/android/server/alarm/AlarmManagerService;->setImpl(IJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;ILandroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;Landroid/os/Bundle;I)V+]Landroid/app/IAlarmListener;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/app/IAlarmListener$Stub$Proxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/os/IBinder;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/os/BinderProxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+HPLcom/android/server/alarm/AlarmManagerService;->setImplLocked(IIIIJJJJLandroid/app/AlarmManager$AlarmClockInfo;Landroid/app/IAlarmListener;Landroid/app/PendingIntent;Landroid/os/Bundle;Landroid/os/WorkSource;Ljava/lang/String;Ljava/lang/String;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
HPLcom/android/server/alarm/AlarmManagerService;->setLocked(IJ)V
+PLcom/android/server/alarm/AlarmManagerService;->setTimeZoneImpl(ILjava/lang/String;Ljava/lang/String;)V
HPLcom/android/server/alarm/AlarmManagerService;->setWakelockWorkSource(Landroid/os/WorkSource;ILjava/lang/String;Z)V
-HPLcom/android/server/alarm/AlarmManagerService;->triggerAlarmsLocked(Ljava/util/ArrayList;J)I
+HPLcom/android/server/alarm/AlarmManagerService;->triggerAlarmsLocked(JLjava/util/ArrayList;)I+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
HPLcom/android/server/alarm/AlarmManagerService;->updateNextAlarmClockLocked()V
-PLcom/android/server/alarm/LazyAlarmStore$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/alarm/Flags;-><clinit>()V
+PLcom/android/server/alarm/Flags;->startUserBeforeScheduledAlarms()Z
HPLcom/android/server/alarm/LazyAlarmStore$$ExternalSyntheticLambda0;->applyAsLong(Ljava/lang/Object;)J
PLcom/android/server/alarm/LazyAlarmStore;-><clinit>()V
PLcom/android/server/alarm/LazyAlarmStore;-><init>()V
-HPLcom/android/server/alarm/LazyAlarmStore;->add(Lcom/android/server/alarm/Alarm;)V
-HPLcom/android/server/alarm/LazyAlarmStore;->addAll(Ljava/util/ArrayList;)V
-HPLcom/android/server/alarm/LazyAlarmStore;->getNextDeliveryTime()J
-HPLcom/android/server/alarm/LazyAlarmStore;->getNextWakeupDeliveryTime()J
-HPLcom/android/server/alarm/LazyAlarmStore;->remove(Ljava/util/function/Predicate;)Ljava/util/ArrayList;
-HPLcom/android/server/alarm/LazyAlarmStore;->removePendingAlarms(J)Ljava/util/ArrayList;
-PLcom/android/server/alarm/LazyAlarmStore;->setAlarmClockRemovalListener(Ljava/lang/Runnable;)V
-HPLcom/android/server/alarm/LazyAlarmStore;->size()I
-HPLcom/android/server/alarm/LazyAlarmStore;->updateAlarmDeliveries(Lcom/android/server/alarm/AlarmStore$AlarmDeliveryCalculator;)Z
-PLcom/android/server/alarm/MetricsHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/alarm/MetricsHelper;Ljava/util/function/Supplier;)V
+PLcom/android/server/alarm/LazyAlarmStore;->dump(Landroid/util/IndentingPrintWriter;JLjava/text/SimpleDateFormat;)V
+HPLcom/android/server/alarm/LazyAlarmStore;->remove(Ljava/util/function/Predicate;)Ljava/util/ArrayList;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Predicate;Lcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda11;,Lcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda6;,Lcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda8;
+PLcom/android/server/alarm/LazyAlarmStore;->size()I
+HPLcom/android/server/alarm/LazyAlarmStore;->updateAlarmDeliveries(Lcom/android/server/alarm/AlarmStore$AlarmDeliveryCalculator;)Z+]Lcom/android/server/alarm/AlarmStore$AlarmDeliveryCalculator;Lcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda10;,Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker$$ExternalSyntheticLambda1;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
+PLcom/android/server/alarm/MetricsHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/alarm/MetricsHelper;Lcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda0;)V
PLcom/android/server/alarm/MetricsHelper;-><init>(Landroid/content/Context;Ljava/lang/Object;)V
-PLcom/android/server/alarm/MetricsHelper;->pushAlarmBatchDelivered(II[I[I[I)V
-HPLcom/android/server/alarm/MetricsHelper;->pushAlarmScheduled(Lcom/android/server/alarm/Alarm;I)V
-PLcom/android/server/alarm/MetricsHelper;->reasonToStatsReason(I)I
-PLcom/android/server/alarm/MetricsHelper;->registerPuller(Ljava/util/function/Supplier;)V
-PLcom/android/server/am/ActiveInstrumentation;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-PLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/ActiveServices;ILandroid/util/ArraySet;)V
-PLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/am/ActiveServices;)V
+PLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/ActiveServices;ILandroid/util/ArraySet;I)V
+HPLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda2;-><init>(ILjava/lang/Object;)V
PLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda2;->run()V
PLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/ActiveServices;IZ)V
-HPLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda5;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda5;->apply(Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda6;-><init>(I)V
HPLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda6;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HPLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/am/ActiveServices;ILandroid/util/ArraySet;)V
-HPLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda8;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda9;-><init>()V
-HSPLcom/android/server/am/ActiveServices$1;-><init>(Lcom/android/server/am/ActiveServices;)V
-HSPLcom/android/server/am/ActiveServices$5;-><init>(Lcom/android/server/am/ActiveServices;)V
-PLcom/android/server/am/ActiveServices$5;->run()V
+PLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda9;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/am/ActiveServices$1;-><init>(Lcom/android/server/am/ActiveServices;I)V
+PLcom/android/server/am/ActiveServices$1;->run()V
+PLcom/android/server/am/ActiveServices$4;-><init>(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ServiceRecord;Ljava/lang/String;Ljava/lang/String;ILandroid/content/Intent;ZIZLandroid/app/IServiceConnection;ILjava/lang/String;IZLandroid/app/BackgroundStartPrivileges;)V
PLcom/android/server/am/ActiveServices$ActiveForegroundApp;-><init>()V
PLcom/android/server/am/ActiveServices$AppOpCallback$1;-><init>(Lcom/android/server/am/ActiveServices$AppOpCallback;)V
-PLcom/android/server/am/ActiveServices$AppOpCallback$1;->onOpNoted(IILjava/lang/String;Ljava/lang/String;II)V
+HPLcom/android/server/am/ActiveServices$AppOpCallback$1;->onOpNoted(IILjava/lang/String;Ljava/lang/String;II)V
PLcom/android/server/am/ActiveServices$AppOpCallback$2;-><init>(Lcom/android/server/am/ActiveServices$AppOpCallback;)V
-PLcom/android/server/am/ActiveServices$AppOpCallback;->-$$Nest$mincrementOpCountIfNeeded(Lcom/android/server/am/ActiveServices$AppOpCallback;III)V
+PLcom/android/server/am/ActiveServices$AppOpCallback$2;->onOpStarted(IILjava/lang/String;Ljava/lang/String;II)V
+HPLcom/android/server/am/ActiveServices$AppOpCallback;->-$$Nest$mincrementOpCountIfNeeded(Lcom/android/server/am/ActiveServices$AppOpCallback;III)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
PLcom/android/server/am/ActiveServices$AppOpCallback;-><clinit>()V
-HPLcom/android/server/am/ActiveServices$AppOpCallback;-><init>(Lcom/android/server/am/ProcessRecord;Landroid/app/AppOpsManager;)V
-PLcom/android/server/am/ActiveServices$AppOpCallback;->incrementOpCountIfNeeded(III)V
-PLcom/android/server/am/ActiveServices$AppOpCallback;->isNotTop()Z
-PLcom/android/server/am/ActiveServices$AppOpCallback;->isObsoleteLocked()Z
-PLcom/android/server/am/ActiveServices$AppOpCallback;->registerLocked()V
+PLcom/android/server/am/ActiveServices$AppOpCallback;-><init>(Lcom/android/server/am/ProcessRecord;Landroid/app/AppOpsManager;)V
PLcom/android/server/am/ActiveServices$BackgroundRestrictedListener;-><init>(Lcom/android/server/am/ActiveServices;)V
-PLcom/android/server/am/ActiveServices$MediaProjectionFgsTypeCustomPermission;-><init>(Lcom/android/server/am/ActiveServices;)V
+HSPLcom/android/server/am/ActiveServices$ProcessAnrTimer;-><init>(Landroid/os/Handler;ILjava/lang/String;Lcom/android/server/utils/AnrTimer$Args;)V
HSPLcom/android/server/am/ActiveServices$ProcessAnrTimer;-><init>(Lcom/android/server/am/ActivityManagerService;ILjava/lang/String;)V
-HPLcom/android/server/am/ActiveServices$ProcessAnrTimer;->start(Lcom/android/server/am/ProcessRecord;J)V
-HSPLcom/android/server/am/ActiveServices$ServiceAnrTimer;-><init>(Lcom/android/server/am/ActivityManagerService;ILjava/lang/String;)V
-PLcom/android/server/am/ActiveServices$ServiceAnrTimer;->start(Lcom/android/server/am/ServiceRecord;J)V
-HPLcom/android/server/am/ActiveServices$ServiceLookupResult;-><init>(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ServiceRecord;Landroid/content/ComponentName;)V
+HPLcom/android/server/am/ActiveServices$ProcessAnrTimer;->getPid(Ljava/lang/Object;)I
+HPLcom/android/server/am/ActiveServices$ProcessAnrTimer;->getUid(Ljava/lang/Object;)I
+PLcom/android/server/am/ActiveServices$ServiceDumper$$ExternalSyntheticOutline0;->m(ILjava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/ActiveServices$ServiceDumper;-><init>(Lcom/android/server/am/ActiveServices;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)V
+PLcom/android/server/am/ActiveServices$ServiceDumper;->dumpHeaderLocked()V
+PLcom/android/server/am/ActiveServices$ServiceDumper;->dumpLocked()V
+PLcom/android/server/am/ActiveServices$ServiceDumper;->dumpRemainsLocked()V
+PLcom/android/server/am/ActiveServices$ServiceDumper;->dumpServiceLocalLocked(Lcom/android/server/am/ServiceRecord;)V
+PLcom/android/server/am/ActiveServices$ServiceDumper;->dumpUserRemainsLocked(I)V
+PLcom/android/server/am/ActiveServices$ServiceLookupResult;-><init>(Lcom/android/server/am/ServiceRecord;Landroid/content/ComponentName;)V
PLcom/android/server/am/ActiveServices$ServiceMap;-><init>(Lcom/android/server/am/ActiveServices;Landroid/os/Looper;I)V
-HPLcom/android/server/am/ActiveServices$ServiceMap;->ensureNotStartingBackgroundLocked(Lcom/android/server/am/ServiceRecord;)V
-PLcom/android/server/am/ActiveServices$ServiceMap;->handleMessage(Landroid/os/Message;)V
-HPLcom/android/server/am/ActiveServices$ServiceMap;->rescheduleDelayedStartsLocked()V
+HPLcom/android/server/am/ActiveServices$ServiceMap;->ensureNotStartingBackgroundLocked(Lcom/android/server/am/ServiceRecord;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ActiveServices$ServiceMap;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/am/ActiveServices$ServiceMap;->rescheduleDelayedStartsLocked()V
PLcom/android/server/am/ActiveServices$ServiceRestarter;-><init>(Lcom/android/server/am/ActiveServices;)V
-HPLcom/android/server/am/ActiveServices$ServiceRestarter;-><init>(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices$ServiceRestarter-IA;)V
PLcom/android/server/am/ActiveServices$ServiceRestarter;->run()V
-HPLcom/android/server/am/ActiveServices$ServiceRestarter;->setService(Lcom/android/server/am/ServiceRecord;)V
-PLcom/android/server/am/ActiveServices$SystemExemptedFgsTypePermission;-><init>(Lcom/android/server/am/ActiveServices;)V
+PLcom/android/server/am/ActiveServices$SystemExemptedFgsTypePermission;-><init>(Lcom/android/server/am/ActiveServices;I)V
PLcom/android/server/am/ActiveServices$SystemExemptedFgsTypePermission;->checkPermission(Landroid/content/Context;IILjava/lang/String;Z)I
-PLcom/android/server/am/ActiveServices;->$r8$lambda$0qkjeNpxaTsg0ZNHkscOuBnZYxA(Lcom/android/server/am/ActiveServices;)V
-HPLcom/android/server/am/ActiveServices;->$r8$lambda$btpRyn2QvHxPy1BXkZJjoK5OB78(Lcom/android/server/am/ActiveServices;IZLcom/android/server/am/ProcessRecord;)Ljava/lang/Integer;
-HPLcom/android/server/am/ActiveServices;->$r8$lambda$dtupl9fjxv8RDOZGvTs4p44nKJI(Lcom/android/server/am/ActiveServices;ILandroid/util/ArraySet;Lcom/android/server/am/ProcessRecord;)Ljava/lang/Integer;
-HPLcom/android/server/am/ActiveServices;->$r8$lambda$jK_UxrI6agW1buIHNND7c_BI120(ILcom/android/server/am/ProcessRecord;)Ljava/lang/Integer;
-PLcom/android/server/am/ActiveServices;->$r8$lambda$p_X4sOJTkojjyDKVG3R4by9T9zs(Lcom/android/server/am/ActiveServices;ILandroid/util/ArraySet;Lcom/android/server/am/ProcessRecord;)Landroid/util/Pair;
HSPLcom/android/server/am/ActiveServices;-><clinit>()V
HSPLcom/android/server/am/ActiveServices;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HPLcom/android/server/am/ActiveServices;->appRestrictedAnyInBackground(ILjava/lang/String;)Z
-HPLcom/android/server/am/ActiveServices;->applyForegroundServiceNotificationLocked(Landroid/app/Notification;Ljava/lang/String;ILjava/lang/String;I)Landroid/app/ActivityManagerInternal$ServiceNotificationPolicy;
+HPLcom/android/server/am/ActiveServices;->applyForegroundServiceNotificationLocked(Landroid/app/Notification;Ljava/lang/String;ILjava/lang/String;I)Landroid/app/ActivityManagerInternal$ServiceNotificationPolicy;+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/am/ActiveServices;->attachApplicationLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)Z
-HPLcom/android/server/am/ActiveServices;->bindServiceLocked(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;ZILjava/lang/String;Landroid/app/IApplicationThread;Ljava/lang/String;I)I
-PLcom/android/server/am/ActiveServices;->bringDownDisabledPackageServicesLocked(Ljava/lang/String;Ljava/util/Set;IZZZ)Z
-HPLcom/android/server/am/ActiveServices;->bringDownServiceIfNeededLocked(Lcom/android/server/am/ServiceRecord;ZZZLjava/lang/String;)V
-HPLcom/android/server/am/ActiveServices;->bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V
-HPLcom/android/server/am/ActiveServices;->bringUpServiceInnerLocked(Lcom/android/server/am/ServiceRecord;IZZZZZI)Ljava/lang/String;
-HPLcom/android/server/am/ActiveServices;->bringUpServiceLocked(Lcom/android/server/am/ServiceRecord;IZZZZZI)Ljava/lang/String;
-HPLcom/android/server/am/ActiveServices;->bumpServiceExecutingLocked(Lcom/android/server/am/ServiceRecord;ZLjava/lang/String;IZ)Z
+HPLcom/android/server/am/ActiveServices;->bindServiceLocked(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;ZILjava/lang/String;Lcom/android/server/am/ApplicationThreadDeferred;Ljava/lang/String;I)I+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Landroid/app/IServiceConnection;Landroid/app/IServiceConnection$Stub$Proxy;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/am/ActiveServices;->bringDownDisabledPackageServicesLocked(Ljava/lang/String;Ljava/util/Set;IZZZI)Z
+HPLcom/android/server/am/ActiveServices;->bringDownServiceIfNeededLocked(Lcom/android/server/am/ServiceRecord;ZZZ)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ActiveServices;->bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V+]Landroid/app/IServiceConnection;Landroid/app/IServiceConnection$Stub$Proxy;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ActiveServices;->bringUpServiceInnerLocked(Lcom/android/server/am/ServiceRecord;IZZZZI)Ljava/lang/String;+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ActiveServices;->bringUpServiceLocked(Lcom/android/server/am/ServiceRecord;IZZZZI)Ljava/lang/String;
+HPLcom/android/server/am/ActiveServices;->bumpServiceExecutingLocked(Lcom/android/server/am/ServiceRecord;ZIZ)V
PLcom/android/server/am/ActiveServices;->canBindingClientStartFgsLocked(I)Ljava/lang/String;
HPLcom/android/server/am/ActiveServices;->cancelForegroundNotificationLocked(Lcom/android/server/am/ServiceRecord;)V
-HPLcom/android/server/am/ActiveServices;->clearRestartingIfNeededLocked(Lcom/android/server/am/ServiceRecord;)V
-PLcom/android/server/am/ActiveServices;->collectPackageServicesLocked(Ljava/lang/String;Ljava/util/Set;ZZLandroid/util/ArrayMap;)Z
-HPLcom/android/server/am/ActiveServices;->deferServiceBringupIfFrozenLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;IZZILandroid/app/BackgroundStartPrivileges;ZLandroid/app/IServiceConnection;)Z
-HPLcom/android/server/am/ActiveServices;->dropFgsNotificationStateLocked(Lcom/android/server/am/ServiceRecord;)V
-HPLcom/android/server/am/ActiveServices;->dumpService(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[I[Ljava/lang/String;IZ)Z
-HPLcom/android/server/am/ActiveServices;->dumpService(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/am/ServiceRecord;[Ljava/lang/String;Z)V
-PLcom/android/server/am/ActiveServices;->fgsStopReasonToString(I)Ljava/lang/String;
-HPLcom/android/server/am/ActiveServices;->findServiceLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Lcom/android/server/am/ServiceRecord;
-PLcom/android/server/am/ActiveServices;->forceStopPackageLocked(Ljava/lang/String;I)V
-HPLcom/android/server/am/ActiveServices;->foregroundServiceProcStateChangedLocked(Lcom/android/server/am/UidRecord;)V
-HPLcom/android/server/am/ActiveServices;->generateAdditionalSeInfoFromService(Landroid/content/Intent;)Ljava/lang/String;
-HPLcom/android/server/am/ActiveServices;->getAllowMode(Landroid/content/Intent;Ljava/lang/String;)I
-HPLcom/android/server/am/ActiveServices;->getAppStateTracker()Lcom/android/server/AppStateTracker;
+PLcom/android/server/am/ActiveServices;->cleanUpServices(ILandroid/content/ComponentName;Landroid/content/Intent;)V
+PLcom/android/server/am/ActiveServices;->clearRestartingIfNeededLocked(Lcom/android/server/am/ServiceRecord;)V
+PLcom/android/server/am/ActiveServices;->collectPackageServicesLocked(Ljava/lang/String;Ljava/util/Set;ZZILandroid/util/ArrayMap;)Z
+PLcom/android/server/am/ActiveServices;->decActiveForegroundAppLocked(Lcom/android/server/am/ActiveServices$ServiceMap;Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->deferServiceBringupIfFrozenLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;IZZILandroid/app/BackgroundStartPrivileges;ZLandroid/app/IServiceConnection;)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ActiveServices;->dropFgsNotificationStateLocked(Lcom/android/server/am/ServiceRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/am/ActiveServices;->dumpDebug(Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/am/ActiveServices;->dumpService(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/am/ServiceRecord;[Ljava/lang/String;Z)V
+PLcom/android/server/am/ActiveServices;->dumpService(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[I[Ljava/lang/String;Z)Z
+PLcom/android/server/am/ActiveServices;->forceStopPackageLocked(ILjava/lang/String;)V
+PLcom/android/server/am/ActiveServices;->foregroundAppShownEnoughLocked(Lcom/android/server/am/ActiveServices$ActiveForegroundApp;J)Z
+HPLcom/android/server/am/ActiveServices;->generateAdditionalSeInfoFromService(Landroid/content/Intent;)Ljava/lang/String;+]Landroid/content/Intent;Landroid/content/Intent;
PLcom/android/server/am/ActiveServices;->getExtraRestartTimeInBetweenLocked()J
-HPLcom/android/server/am/ActiveServices;->getHostingRecordTriggerType(Lcom/android/server/am/ServiceRecord;)Ljava/lang/String;
+PLcom/android/server/am/ActiveServices;->getFgsTimeLimitedInfo(II)Lcom/android/server/am/ServiceRecord$TimeLimitedFgsInfo;
+PLcom/android/server/am/ActiveServices;->getForegroundServiceTypeLocked(Landroid/content/ComponentName;Landroid/os/IBinder;)I
HPLcom/android/server/am/ActiveServices;->getProcessNameForService(Landroid/content/pm/ServiceInfo;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;ZZZ)Ljava/lang/String;
-HPLcom/android/server/am/ActiveServices;->getRunningServiceInfoLocked(IIIZZ)Ljava/util/List;
+HPLcom/android/server/am/ActiveServices;->getRunningServiceInfoLocked(IIZZ)Ljava/util/List;
HPLcom/android/server/am/ActiveServices;->getServiceBindingOomAdjPolicyForAddLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ConnectionRecord;)I
-HPLcom/android/server/am/ActiveServices;->getServiceBindingOomAdjPolicyForRemovalLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ConnectionRecord;)I
-HPLcom/android/server/am/ActiveServices;->getServiceByNameLocked(Landroid/content/ComponentName;I)Lcom/android/server/am/ServiceRecord;
-HPLcom/android/server/am/ActiveServices;->getServiceMapLocked(I)Lcom/android/server/am/ActiveServices$ServiceMap;
-PLcom/android/server/am/ActiveServices;->getServicesLocked(I)Landroid/util/ArrayMap;
-HPLcom/android/server/am/ActiveServices;->getShortProcessNameForStats(ILjava/lang/String;)Ljava/lang/String;
-HPLcom/android/server/am/ActiveServices;->getShortServiceNameForStats(Lcom/android/server/am/ServiceRecord;)Ljava/lang/String;
-HPLcom/android/server/am/ActiveServices;->hasForegroundServiceNotificationLocked(Ljava/lang/String;ILjava/lang/String;)Z
-PLcom/android/server/am/ActiveServices;->initMediaProjectFgsTypeCustomPermission()V
-PLcom/android/server/am/ActiveServices;->initSystemExemptedFgsTypePermission()V
-PLcom/android/server/am/ActiveServices;->isBgFgsRestrictionEnabled(Lcom/android/server/am/ServiceRecord;I)Z
+HPLcom/android/server/am/ActiveServices;->getServiceMapLocked(I)Lcom/android/server/am/ActiveServices$ServiceMap;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/am/ActiveServices;->getShortProcessNameForStats(ILjava/lang/String;)Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
+PLcom/android/server/am/ActiveServices;->getTimeLimitedFgsType(I)I
+HPLcom/android/server/am/ActiveServices;->hasForegroundServiceNotificationLocked(ILjava/lang/String;Ljava/lang/String;)Z+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/am/ActiveServices;->isBgFgsRestrictionEnabled(ILcom/android/server/am/ServiceRecord;)Z
PLcom/android/server/am/ActiveServices;->isDeviceProvisioningPackage(Ljava/lang/String;)Z
-PLcom/android/server/am/ActiveServices;->isForegroundServiceAllowedInBackgroundRestricted(ILjava/lang/String;)Z
+HPLcom/android/server/am/ActiveServices;->isForegroundServiceAllowedInBackgroundRestricted(ILjava/lang/String;)Z
PLcom/android/server/am/ActiveServices;->isForegroundServiceAllowedInBackgroundRestricted(Lcom/android/server/am/ProcessRecord;)Z
HPLcom/android/server/am/ActiveServices;->isServiceNeededLocked(Lcom/android/server/am/ServiceRecord;ZZ)Z
-PLcom/android/server/am/ActiveServices;->isServiceRestartBackoffEnabledLocked(Ljava/lang/String;)Z
HPLcom/android/server/am/ActiveServices;->killServicesLocked(Lcom/android/server/am/ProcessRecord;Z)V
-PLcom/android/server/am/ActiveServices;->lambda$attachApplicationLocked$2()V
-PLcom/android/server/am/ActiveServices;->lambda$canBindingClientStartFgsLocked$6(ILandroid/util/ArraySet;Lcom/android/server/am/ProcessRecord;)Landroid/util/Pair;
-HPLcom/android/server/am/ActiveServices;->lambda$shouldAllowFgsStartForegroundNoBindingCheckLocked$7(IZLcom/android/server/am/ProcessRecord;)Ljava/lang/Integer;
-HPLcom/android/server/am/ActiveServices;->lambda$shouldAllowFgsWhileInUsePermissionByBindingsLocked$5(ILandroid/util/ArraySet;Lcom/android/server/am/ProcessRecord;)Ljava/lang/Integer;
-HPLcom/android/server/am/ActiveServices;->lambda$shouldAllowFgsWhileInUsePermissionLocked$4(ILcom/android/server/am/ProcessRecord;)Ljava/lang/Integer;
HPLcom/android/server/am/ActiveServices;->logFGSStateChangeLocked(Lcom/android/server/am/ServiceRecord;IIIIIZ)V
-PLcom/android/server/am/ActiveServices;->logFgsApiBeginLocked(III)V
-PLcom/android/server/am/ActiveServices;->logFgsApiEndLocked(III)V
-HPLcom/android/server/am/ActiveServices;->logFgsBackgroundStart(Lcom/android/server/am/ServiceRecord;)V
-HPLcom/android/server/am/ActiveServices;->makeRunningServiceInfoLocked(Lcom/android/server/am/ServiceRecord;)Landroid/app/ActivityManager$RunningServiceInfo;
-HPLcom/android/server/am/ActiveServices;->maybeLogBindCrossProfileService(ILjava/lang/String;I)V
+PLcom/android/server/am/ActiveServices;->logFgsBackgroundStart(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->makeRunningServiceInfoLocked(Lcom/android/server/am/ServiceRecord;)Landroid/app/ActivityManager$RunningServiceInfo;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/am/ActiveServices;->maybeStopFgsTimeoutLocked(Lcom/android/server/am/ServiceRecord;)V
HPLcom/android/server/am/ActiveServices;->maybeStopShortFgsTimeoutLocked(Lcom/android/server/am/ServiceRecord;)V
+PLcom/android/server/am/ActiveServices;->maybeUpdateFgsTrackingLocked(ILcom/android/server/am/ServiceRecord;)V
PLcom/android/server/am/ActiveServices;->maybeUpdateShortFgsTrackingLocked(Lcom/android/server/am/ServiceRecord;Z)V
-HPLcom/android/server/am/ActiveServices;->notifyBindingServiceEventLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V
-HPLcom/android/server/am/ActiveServices;->onForegroundServiceNotificationUpdateLocked(ZLandroid/app/Notification;ILjava/lang/String;I)V
-HPLcom/android/server/am/ActiveServices;->performRescheduleServiceRestartOnMemoryPressureLocked(JJLjava/lang/String;J)V
-HPLcom/android/server/am/ActiveServices;->performScheduleRestartLocked(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;Ljava/lang/String;J)V
+HPLcom/android/server/am/ActiveServices;->onForegroundServiceNotificationUpdateLocked(ZLandroid/app/Notification;ILjava/lang/String;I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/am/ActiveServices;->performRescheduleServiceRestartOnMemoryPressureLocked(JJJLjava/lang/String;)V
+PLcom/android/server/am/ActiveServices;->performScheduleRestartLocked(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;Ljava/lang/String;J)V
PLcom/android/server/am/ActiveServices;->performServiceRestartLocked(Lcom/android/server/am/ServiceRecord;)V
-HPLcom/android/server/am/ActiveServices;->publishServiceLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Landroid/os/IBinder;)V
-HPLcom/android/server/am/ActiveServices;->realStartServiceLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ProcessRecord;Landroid/app/IApplicationThread;ILcom/android/server/am/UidRecord;ZZI)V
+HPLcom/android/server/am/ActiveServices;->publishServiceLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Landroid/os/IBinder;)V+]Landroid/app/IServiceConnection;Landroid/app/IServiceConnection$Stub$Proxy;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ActiveServices;->realStartServiceLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ProcessRecord;Landroid/app/IApplicationThread;ZI)V+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/am/ActiveServices;->registerAppOpCallbackLocked(Lcom/android/server/am/ServiceRecord;)V
-HPLcom/android/server/am/ActiveServices;->removeConnectionLocked(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/wm/ActivityServiceConnectionsHolder;Z)I
-PLcom/android/server/am/ActiveServices;->removeServiceNotificationDeferralsLocked(Ljava/lang/String;I)V
-PLcom/android/server/am/ActiveServices;->removeServiceRestartBackoffEnabledLocked(Ljava/lang/String;)V
+HPLcom/android/server/am/ActiveServices;->removeConnectionLocked(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/wm/ActivityServiceConnectionsHolder;Z)I+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Landroid/app/IServiceConnection;Landroid/app/IServiceConnection$Stub$Proxy;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/am/ActiveServices;->requestServiceBindingLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;ZZI)Z
-HPLcom/android/server/am/ActiveServices;->requestServiceBindingsLocked(Lcom/android/server/am/ServiceRecord;ZI)V
-HPLcom/android/server/am/ActiveServices;->requestStartTargetPermissionsReviewIfNeededLocked(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;Ljava/lang/String;ILandroid/content/Intent;ZIZLandroid/app/IServiceConnection;)Z
+HPLcom/android/server/am/ActiveServices;->requestStartTargetPermissionsReviewIfNeededLocked(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;Ljava/lang/String;ILandroid/content/Intent;ZIZLandroid/app/IServiceConnection;)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
PLcom/android/server/am/ActiveServices;->requestUpdateActiveForegroundAppsLocked(Lcom/android/server/am/ActiveServices$ServiceMap;J)V
-PLcom/android/server/am/ActiveServices;->rescheduleServiceRestartIfPossibleLocked(JJLjava/lang/String;J)V
-HPLcom/android/server/am/ActiveServices;->rescheduleServiceRestartOnMemoryPressureIfNeededLocked(IILjava/lang/String;J)V
+PLcom/android/server/am/ActiveServices;->rescheduleServiceRestartIfPossibleLocked(JJJLjava/lang/String;)V
HPLcom/android/server/am/ActiveServices;->resetFgsRestrictionLocked(Lcom/android/server/am/ServiceRecord;)V
-HPLcom/android/server/am/ActiveServices;->retrieveServiceLocked(Landroid/content/Intent;Ljava/lang/String;ZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIZZZZLandroid/app/ForegroundServiceDelegationOptions;ZZ)Lcom/android/server/am/ActiveServices$ServiceLookupResult;
-HPLcom/android/server/am/ActiveServices;->retrieveServiceLocked(Landroid/content/Intent;Ljava/lang/String;ZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIZZZZLandroid/app/ForegroundServiceDelegationOptions;ZZZ)Lcom/android/server/am/ActiveServices$ServiceLookupResult;
-PLcom/android/server/am/ActiveServices;->scheduleServiceForegroundTransitionTimeoutLocked(Lcom/android/server/am/ServiceRecord;)V
-HPLcom/android/server/am/ActiveServices;->scheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;Z)Z
+HPLcom/android/server/am/ActiveServices;->retrieveServiceLocked(Landroid/content/Intent;Ljava/lang/String;ZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIZZZZLandroid/app/ForegroundServiceDelegationOptions;ZZZ)Lcom/android/server/am/ActiveServices$ServiceLookupResult;+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/am/ActiveServices;->schedulePendingServiceStartLocked(ILjava/lang/String;)V
+PLcom/android/server/am/ActiveServices;->scheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;Z)Z
HPLcom/android/server/am/ActiveServices;->scheduleServiceTimeoutLocked(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/ActiveServices;->sendServiceArgsLocked(Lcom/android/server/am/ServiceRecord;ZZ)V
-HPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;IIIZLandroid/content/Intent;)V
-HPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;ZZZI)V
+HPLcom/android/server/am/ActiveServices;->sendServiceArgsLocked(Lcom/android/server/am/ServiceRecord;ZZ)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;III)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;ZZZI)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/am/ActiveServices;->serviceTimeout(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ActiveServices;->setAllowListWhileInUsePermissionInFgs()V
-HPLcom/android/server/am/ActiveServices;->setFgsRestrictionLocked(Ljava/lang/String;IILandroid/content/Intent;Lcom/android/server/am/ServiceRecord;ILandroid/app/BackgroundStartPrivileges;Z)V
-HPLcom/android/server/am/ActiveServices;->setFgsRestrictionLocked(Ljava/lang/String;IILandroid/content/Intent;Lcom/android/server/am/ServiceRecord;ILandroid/app/BackgroundStartPrivileges;ZZ)V
+HPLcom/android/server/am/ActiveServices;->setFgsRestrictionLocked(Ljava/lang/String;IILandroid/content/Intent;Lcom/android/server/am/ServiceRecord;Landroid/app/BackgroundStartPrivileges;ZZ)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
HPLcom/android/server/am/ActiveServices;->setServiceForegroundInnerLocked(Lcom/android/server/am/ServiceRecord;ILandroid/app/Notification;III)V
-PLcom/android/server/am/ActiveServices;->setServiceForegroundLocked(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;II)V
-PLcom/android/server/am/ActiveServices;->shouldAllowBootCompletedStart(Lcom/android/server/am/ServiceRecord;I)Z
-HPLcom/android/server/am/ActiveServices;->shouldAllowFgsStartForegroundNoBindingCheckLocked(IIILjava/lang/String;Lcom/android/server/am/ServiceRecord;Landroid/app/BackgroundStartPrivileges;)I
-HPLcom/android/server/am/ActiveServices;->shouldAllowFgsStartForegroundWithBindingCheckLocked(ILjava/lang/String;IILandroid/content/Intent;Lcom/android/server/am/ServiceRecord;Landroid/app/BackgroundStartPrivileges;Z)I
-HPLcom/android/server/am/ActiveServices;->shouldAllowFgsWhileInUsePermissionByBindingsLocked(I)I
-HPLcom/android/server/am/ActiveServices;->shouldAllowFgsWhileInUsePermissionLocked(Ljava/lang/String;IILcom/android/server/am/ProcessRecord;Landroid/app/BackgroundStartPrivileges;)I
-PLcom/android/server/am/ActiveServices;->shouldShowFgsNotificationLocked(Lcom/android/server/am/ServiceRecord;)Z
+HPLcom/android/server/am/ActiveServices;->setServiceForegroundLocked(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;II)V
+PLcom/android/server/am/ActiveServices;->shouldAllowBootCompletedStart(ILcom/android/server/am/ServiceRecord;)Z
+HPLcom/android/server/am/ActiveServices;->shouldAllowFgsStartForegroundNoBindingCheckLocked(IIILjava/lang/String;Lcom/android/server/am/ServiceRecord;Landroid/app/BackgroundStartPrivileges;)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Landroid/content/Context;Landroid/app/ContextImpl;
+HPLcom/android/server/am/ActiveServices;->shouldAllowFgsWhileInUsePermissionLocked(Ljava/lang/String;IILcom/android/server/am/ProcessRecord;Landroid/app/BackgroundStartPrivileges;)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
PLcom/android/server/am/ActiveServices;->signalForegroundServiceObserversLocked(Lcom/android/server/am/ServiceRecord;)V
-HPLcom/android/server/am/ActiveServices;->startFgsDeferralTimerLocked(Lcom/android/server/am/ServiceRecord;)V
-HPLcom/android/server/am/ActiveServices;->startServiceInnerLocked(Lcom/android/server/am/ActiveServices$ServiceMap;Landroid/content/Intent;Lcom/android/server/am/ServiceRecord;ZZILjava/lang/String;IZLjava/lang/String;)Landroid/content/ComponentName;
-HPLcom/android/server/am/ActiveServices;->startServiceInnerLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;IILjava/lang/String;IZZLandroid/app/BackgroundStartPrivileges;Ljava/lang/String;)Landroid/content/ComponentName;
-PLcom/android/server/am/ActiveServices;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IIZLjava/lang/String;Ljava/lang/String;ILandroid/app/BackgroundStartPrivileges;)Landroid/content/ComponentName;
-HPLcom/android/server/am/ActiveServices;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IIZLjava/lang/String;Ljava/lang/String;ILandroid/app/BackgroundStartPrivileges;ZILjava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName;
-HPLcom/android/server/am/ActiveServices;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IIZLjava/lang/String;Ljava/lang/String;IZILjava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName;
-HPLcom/android/server/am/ActiveServices;->stopInBackgroundLocked(I)V
+HPLcom/android/server/am/ActiveServices;->startServiceInnerLocked(Lcom/android/server/am/ActiveServices$ServiceMap;Landroid/content/Intent;Lcom/android/server/am/ServiceRecord;ZZILjava/lang/String;IZLjava/lang/String;)Landroid/content/ComponentName;+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ActiveServices;->startServiceInnerLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;IILjava/lang/String;IZZLandroid/app/BackgroundStartPrivileges;Ljava/lang/String;)Landroid/content/ComponentName;+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ActiveServices;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IIZLjava/lang/String;Ljava/lang/String;ILandroid/app/BackgroundStartPrivileges;ZILjava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName;+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/server/AppStateTracker;Lcom/android/server/AppStateTrackerImpl;
+HPLcom/android/server/am/ActiveServices;->stopInBackgroundLocked(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HPLcom/android/server/am/ActiveServices;->stopServiceAndUpdateAllowlistManagerLocked(Lcom/android/server/am/ServiceRecord;)V
PLcom/android/server/am/ActiveServices;->stopServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IZILjava/lang/String;Ljava/lang/String;)I
+PLcom/android/server/am/ActiveServices;->stopServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V
HPLcom/android/server/am/ActiveServices;->stopServiceTokenLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z
-PLcom/android/server/am/ActiveServices;->systemServicesReady()V
HPLcom/android/server/am/ActiveServices;->traceInstant(Ljava/lang/String;Lcom/android/server/am/ServiceRecord;)V
-HPLcom/android/server/am/ActiveServices;->unbindFinishedLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Z)V
-HPLcom/android/server/am/ActiveServices;->unbindServiceLocked(Landroid/app/IServiceConnection;)Z
-HPLcom/android/server/am/ActiveServices;->unscheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;IZ)Z
+PLcom/android/server/am/ActiveServices;->unbindFinishedLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;)V
+HPLcom/android/server/am/ActiveServices;->unbindServiceLocked(Landroid/app/IServiceConnection;)Z+]Landroid/app/IServiceConnection;Landroid/app/IServiceConnection$Stub$Proxy;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/am/ActiveServices;->unregisterAppOpCallbackLocked(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->unscheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;IZ)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/am/ActiveServices;->unscheduleShortFgsTimeoutLocked(Lcom/android/server/am/ServiceRecord;)V
-PLcom/android/server/am/ActiveServices;->updateAllowlistManagerLocked(Lcom/android/server/am/ProcessServiceRecord;)V
-HPLcom/android/server/am/ActiveServices;->updateForegroundApps(Lcom/android/server/am/ActiveServices$ServiceMap;)V
-HPLcom/android/server/am/ActiveServices;->updateNumForegroundServicesLocked()V
-HPLcom/android/server/am/ActiveServices;->updateServiceClientActivitiesLocked(Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ConnectionRecord;Z)Z
+HPLcom/android/server/am/ActiveServices;->updateAllowlistManagerLocked(Lcom/android/server/am/ProcessServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->updateNumForegroundServicesLocked()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ActiveServices;->updateScreenStateLocked(Z)V
+PLcom/android/server/am/ActiveServices;->updateServiceApplicationInfoLocked(Landroid/content/pm/ApplicationInfo;)V
+HPLcom/android/server/am/ActiveServices;->updateServiceClientActivitiesLocked(Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ConnectionRecord;Z)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/am/ActiveServices;->updateServiceConnectionActivitiesLocked(Lcom/android/server/am/ProcessServiceRecord;)V
HPLcom/android/server/am/ActiveServices;->updateServiceForegroundLocked(Lcom/android/server/am/ProcessServiceRecord;Z)V
HPLcom/android/server/am/ActiveServices;->validateForegroundServiceType(Lcom/android/server/am/ServiceRecord;III)Landroid/util/Pair;
-PLcom/android/server/am/ActiveServices;->verifyPackage(Ljava/lang/String;I)Z
-PLcom/android/server/am/ActiveServices;->withinFgsDeferRateLimit(Lcom/android/server/am/ServiceRecord;J)Z
+PLcom/android/server/am/ActiveUids$$ExternalSyntheticLambda0;-><init>(Ljava/io/PrintWriter;)V
+PLcom/android/server/am/ActiveUids$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
HSPLcom/android/server/am/ActiveUids;-><init>(Lcom/android/server/am/ActivityManagerService;Z)V
-HSPLcom/android/server/am/ActiveUids;->clear()V
-HPLcom/android/server/am/ActiveUids;->get(I)Lcom/android/server/am/UidRecord;
-HPLcom/android/server/am/ActiveUids;->put(ILcom/android/server/am/UidRecord;)V
-HPLcom/android/server/am/ActiveUids;->remove(I)V
-HSPLcom/android/server/am/ActiveUids;->size()I
-HPLcom/android/server/am/ActiveUids;->valueAt(I)Lcom/android/server/am/UidRecord;
-HSPLcom/android/server/am/ActivityManagerConstants$1;-><init>(Lcom/android/server/am/ActivityManagerConstants;)V
+PLcom/android/server/am/ActiveUids;->dump(ILjava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/am/ActiveUids;->dumpProto(Landroid/util/proto/ProtoOutputStream;Ljava/lang/String;IJ)V
+HPLcom/android/server/am/ActiveUids;->get(I)Lcom/android/server/am/UidRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/am/ActiveUids;->put(ILcom/android/server/am/UidRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+PLcom/android/server/am/ActiveUids;->remove(I)V
+HPLcom/android/server/am/ActiveUids;->valueAt(I)Lcom/android/server/am/UidRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/am/ActivityManagerConstants$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/am/PhantomProcessList;)V
+PLcom/android/server/am/ActivityManagerConstants$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/am/ActivityManagerConstants$$ExternalSyntheticOutline0;->m(JLjava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerConstants$$ExternalSyntheticOutline0;->m(Ljava/io/PrintWriter;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/am/ActivityManagerConstants$1;-><init>(Lcom/android/server/am/ActivityManagerConstants;I)V
PLcom/android/server/am/ActivityManagerConstants$1;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
-HSPLcom/android/server/am/ActivityManagerConstants$2;-><init>(Lcom/android/server/am/ActivityManagerConstants;)V
-PLcom/android/server/am/ActivityManagerConstants$2;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
HSPLcom/android/server/am/ActivityManagerConstants;-><clinit>()V
-HSPLcom/android/server/am/ActivityManagerConstants;-><init>(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;)V
-HSPLcom/android/server/am/ActivityManagerConstants;->computeEmptyProcessLimit(I)I
-PLcom/android/server/am/ActivityManagerConstants;->loadDeviceConfigConstants()V
-HSPLcom/android/server/am/ActivityManagerConstants;->loadNativeBootDeviceConfigConstants()V
-PLcom/android/server/am/ActivityManagerConstants;->start(Landroid/content/ContentResolver;)V
-PLcom/android/server/am/ActivityManagerConstants;->updateActivityStartsLoggingEnabled()V
-HPLcom/android/server/am/ActivityManagerConstants;->updateConstants()V
-PLcom/android/server/am/ActivityManagerConstants;->updateForceEnablePssProfiling()V
-PLcom/android/server/am/ActivityManagerConstants;->updateForegroundServiceStartsLoggingEnabled()V
+HSPLcom/android/server/am/ActivityManagerConstants;-><init>(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService$UiHandler;)V
+PLcom/android/server/am/ActivityManagerConstants;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/am/ActivityManagerConstants;->onChange(ZLandroid/net/Uri;)V
+PLcom/android/server/am/ActivityManagerConstants;->updateConstants()V
PLcom/android/server/am/ActivityManagerDebugConfig;-><clinit>()V
-HSPLcom/android/server/am/ActivityManagerProcLock;-><init>()V
-PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda0;-><init>([ILjava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda18;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/util/LinkedList;)V
-PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda18;->run()V
-PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda19;-><init>(Lcom/android/server/am/ActivityManagerService;JJZZ)V
-HPLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda19;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;)V
-HSPLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda20;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda20;->run()V
-PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda22;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda23;-><init>(Lcom/android/server/wm/ActivityTaskManagerInternal;)V
-PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda23;->run()V
-PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda24;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HPLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda29;-><init>(Lcom/android/server/am/ActivityManagerService;JZLcom/android/server/am/ProcessRecord;IJ)V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda16;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda16;->run()V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda1;-><init>(Ljava/lang/String;[I)V
+HPLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda20;-><init>(Lcom/android/server/am/ActivityManagerService;JJZZ)V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda20;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda23;-><init>(Ljava/io/PrintWriter;JJ)V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda28;-><init>(Landroid/util/SparseArray;[Landroid/os/Debug$MemoryInfo;Lcom/android/server/am/ActivityManagerService$MemoryUsageDumpOptions;[J[J[JLjava/util/ArrayList;[J[J[J[J[J[J[J[J[J[J[Ljava/util/ArrayList;[J[J)V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda28;->accept(Ljava/lang/Object;)V
PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda3;-><init>(Ljava/lang/StringBuilder;Landroid/content/pm/IPackageManager;I)V
PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
-PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/app/IUnsafeIntentStrictModeCallback;Landroid/content/Intent;I)V
-PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda6;->run()V
-HPLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda7;-><init>(Landroid/os/DropBoxManager;Ljava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda7;->run()V
-HPLcom/android/server/am/ActivityManagerService$14;-><init>(Lcom/android/server/am/ActivityManagerService;I)V
-PLcom/android/server/am/ActivityManagerService$14;->binderDied()V
-HPLcom/android/server/am/ActivityManagerService$15;-><init>(Lcom/android/server/am/ActivityManagerService;IILandroid/os/IBinder;Ljava/lang/String;Landroid/app/ApplicationErrorReport$ParcelableCrashInfo;)V
-HPLcom/android/server/am/ActivityManagerService$15;->run()V
-PLcom/android/server/am/ActivityManagerService$16;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;Ljava/lang/String;Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;ZLandroid/os/DropBoxManager;)V
-PLcom/android/server/am/ActivityManagerService$16;->run()V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/am/ActivityManagerService;I)V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda4;->binderDied()V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/am/ActivityManagerService;I)V
+HSPLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/am/ActivityManagerService;I)V
+HSPLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda7;->run()V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/am/ActivityManagerService;ZILjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda9;-><init>(Landroid/os/DropBoxManager;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda9;->run()V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService$11;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;Landroid/content/Context;)V
+PLcom/android/server/am/ActivityManagerService$11;->onChange(Z)V
+PLcom/android/server/am/ActivityManagerService$12;-><init>(Lcom/android/server/am/ActivityManagerService;IILandroid/os/IBinder;Ljava/lang/String;Landroid/app/ApplicationErrorReport$ParcelableCrashInfo;)V
+PLcom/android/server/am/ActivityManagerService$12;->run()V
+PLcom/android/server/am/ActivityManagerService$14;-><init>(Z)V
+PLcom/android/server/am/ActivityManagerService$14;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
HSPLcom/android/server/am/ActivityManagerService$1;-><init>(Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/am/ActivityManagerService$1;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+PLcom/android/server/am/ActivityManagerService$1;->dumpCritical(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+PLcom/android/server/am/ActivityManagerService$1;->dumpNormal(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
HSPLcom/android/server/am/ActivityManagerService$2;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService$2;->onActivityLaunchCancelled(J)V
PLcom/android/server/am/ActivityManagerService$2;->onActivityLaunchFinished(JLandroid/content/ComponentName;JI)V
-PLcom/android/server/am/ActivityManagerService$2;->onActivityLaunched(JLandroid/content/ComponentName;II)V
+HPLcom/android/server/am/ActivityManagerService$2;->onActivityLaunched(IIJLandroid/content/ComponentName;)V
+PLcom/android/server/am/ActivityManagerService$2;->onIntentFailed(J)V
PLcom/android/server/am/ActivityManagerService$2;->onIntentStarted(Landroid/content/Intent;J)V
PLcom/android/server/am/ActivityManagerService$2;->onReportFullyDrawn(JJ)V
-HSPLcom/android/server/am/ActivityManagerService$3;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HPLcom/android/server/am/ActivityManagerService$3;->allowFilterResult(Lcom/android/server/am/BroadcastFilter;Ljava/util/List;)Z
-HPLcom/android/server/am/ActivityManagerService$3;->allowFilterResult(Ljava/lang/Object;Ljava/util/List;)Z
-PLcom/android/server/am/ActivityManagerService$3;->getIntentFilter(Lcom/android/server/am/BroadcastFilter;)Landroid/content/IntentFilter;
-HPLcom/android/server/am/ActivityManagerService$3;->getIntentFilter(Ljava/lang/Object;)Landroid/content/IntentFilter;
-HPLcom/android/server/am/ActivityManagerService$3;->isPackageForFilter(Ljava/lang/String;Lcom/android/server/am/BroadcastFilter;)Z
-HPLcom/android/server/am/ActivityManagerService$3;->isPackageForFilter(Ljava/lang/String;Ljava/lang/Object;)Z
-HPLcom/android/server/am/ActivityManagerService$3;->newArray(I)[Lcom/android/server/am/BroadcastFilter;
-HPLcom/android/server/am/ActivityManagerService$3;->newArray(I)[Ljava/lang/Object;
-HPLcom/android/server/am/ActivityManagerService$3;->newResult(Lcom/android/server/pm/Computer;Lcom/android/server/am/BroadcastFilter;IIJ)Lcom/android/server/am/BroadcastFilter;
-HPLcom/android/server/am/ActivityManagerService$3;->newResult(Lcom/android/server/pm/Computer;Ljava/lang/Object;IIJ)Ljava/lang/Object;
+PLcom/android/server/am/ActivityManagerService$3;-><init>(Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/am/ActivityManagerService$4;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-PLcom/android/server/am/ActivityManagerService$5;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-PLcom/android/server/am/ActivityManagerService$8;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-PLcom/android/server/am/ActivityManagerService$9$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/ActivityManagerService$9;)V
-PLcom/android/server/am/ActivityManagerService$9;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-PLcom/android/server/am/ActivityManagerService$9;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
-HPLcom/android/server/am/ActivityManagerService$AppDeathRecipient;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;)V
-HPLcom/android/server/am/ActivityManagerService$AppDeathRecipient;->binderDied()V
-PLcom/android/server/am/ActivityManagerService$CacheBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-PLcom/android/server/am/ActivityManagerService$DbBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/ActivityManagerService$FgsTempAllowListItem;-><init>(JILjava/lang/String;I)V
+PLcom/android/server/am/ActivityManagerService$6;-><init>(Lcom/android/server/am/ActivityManagerService;I)V
+PLcom/android/server/am/ActivityManagerService$7;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService$7;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
+PLcom/android/server/am/ActivityManagerService$AppDeathRecipient;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;)V
+PLcom/android/server/am/ActivityManagerService$AppDeathRecipient;->binderDied()V
+PLcom/android/server/am/ActivityManagerService$DbBinder;-><init>(I)V
+PLcom/android/server/am/ActivityManagerService$DbBinder;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/am/ActivityManagerService$FgsTempAllowListItem;-><init>(IILjava/lang/String;J)V
HSPLcom/android/server/am/ActivityManagerService$GetBackgroundStartPrivilegesFunctor;-><init>()V
-HSPLcom/android/server/am/ActivityManagerService$GetBackgroundStartPrivilegesFunctor;-><init>(Lcom/android/server/am/ActivityManagerService$GetBackgroundStartPrivilegesFunctor-IA;)V
-PLcom/android/server/am/ActivityManagerService$GraphicsBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/ActivityManagerService$HiddenApiSettings;-><init>(Landroid/os/Handler;Landroid/content/Context;)V
-PLcom/android/server/am/ActivityManagerService$HiddenApiSettings;->getPolicy()I
-PLcom/android/server/am/ActivityManagerService$HiddenApiSettings;->getValidEnforcementPolicy(Ljava/lang/String;)I
-PLcom/android/server/am/ActivityManagerService$HiddenApiSettings;->isDisabled()Z
-PLcom/android/server/am/ActivityManagerService$HiddenApiSettings;->registerObserver()V
+HSPLcom/android/server/am/ActivityManagerService$HiddenApiSettings;-><init>(Lcom/android/server/am/ActivityManagerService$UiHandler;Landroid/content/Context;)V
+PLcom/android/server/am/ActivityManagerService$HiddenApiSettings;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
PLcom/android/server/am/ActivityManagerService$HiddenApiSettings;->update()V
-HSPLcom/android/server/am/ActivityManagerService$Injector;->-$$Nest$fputmUserController(Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/UserController;)V
HSPLcom/android/server/am/ActivityManagerService$Injector;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/am/ActivityManagerService$Injector;->clearCallingIdentity()J
-HPLcom/android/server/am/ActivityManagerService$Injector;->ensureHasNetworkManagementInternal()Z
-HSPLcom/android/server/am/ActivityManagerService$Injector;->getAppOpsService(Ljava/io/File;Ljava/io/File;Landroid/os/Handler;)Lcom/android/server/appop/AppOpsService;
-HSPLcom/android/server/am/ActivityManagerService$Injector;->getBroadcastQueues(Lcom/android/server/am/ActivityManagerService;)[Lcom/android/server/am/BroadcastQueue;
-HPLcom/android/server/am/ActivityManagerService$Injector;->getCallingPid()I
-HPLcom/android/server/am/ActivityManagerService$Injector;->getCallingUid()I
-HSPLcom/android/server/am/ActivityManagerService$Injector;->getContext()Landroid/content/Context;
-HSPLcom/android/server/am/ActivityManagerService$Injector;->getProcessList(Lcom/android/server/am/ActivityManagerService;)Lcom/android/server/am/ProcessList;
-HSPLcom/android/server/am/ActivityManagerService$Injector;->getUiHandler(Lcom/android/server/am/ActivityManagerService;)Landroid/os/Handler;
-HPLcom/android/server/am/ActivityManagerService$Injector;->isNetworkRestrictedForUid(I)Z
-HPLcom/android/server/am/ActivityManagerService$Injector;->restoreCallingIdentity(J)V
-HSPLcom/android/server/am/ActivityManagerService$IntentFirewallInterface;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/ActivityManagerService$IntentFirewallInterface;->getAMSLock()Ljava/lang/Object;
+PLcom/android/server/am/ActivityManagerService$IntentCreatorToken$Key;-><init>(Landroid/content/Intent;Ljava/lang/String;I)V
+PLcom/android/server/am/ActivityManagerService$IntentCreatorToken$Key;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/am/ActivityManagerService$IntentCreatorToken$Key;->hashCode()I
+PLcom/android/server/am/ActivityManagerService$IntentCreatorToken;-><init>(Landroid/content/Intent;Ljava/lang/String;I)V
+PLcom/android/server/am/ActivityManagerService$IntentCreatorToken;->finalize()V
+PLcom/android/server/am/ActivityManagerService$IntentCreatorToken;->isValid(Landroid/content/Intent;)Z
PLcom/android/server/am/ActivityManagerService$ItemMatcher;-><init>()V
-PLcom/android/server/am/ActivityManagerService$ItemMatcher;->build(Ljava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService$ItemMatcher;->match(Ljava/lang/Object;Landroid/content/ComponentName;)Z
+PLcom/android/server/am/ActivityManagerService$ItemMatcher;->match(Landroid/content/ComponentName;Ljava/lang/Object;)Z
HSPLcom/android/server/am/ActivityManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/am/ActivityManagerService$Lifecycle;->getService()Lcom/android/server/am/ActivityManagerService;
HSPLcom/android/server/am/ActivityManagerService$Lifecycle;->onBootPhase(I)V
HSPLcom/android/server/am/ActivityManagerService$Lifecycle;->onStart()V
-HSPLcom/android/server/am/ActivityManagerService$Lifecycle;->startService(Lcom/android/server/SystemServiceManager;Lcom/android/server/wm/ActivityTaskManagerService;)Lcom/android/server/am/ActivityManagerService;
+PLcom/android/server/am/ActivityManagerService$LocalService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/ActivityManagerService$LocalService;Landroid/app/IUnsafeIntentStrictModeCallback;ILandroid/content/Intent;I)V
+PLcom/android/server/am/ActivityManagerService$LocalService$$ExternalSyntheticLambda1;->run()V
HSPLcom/android/server/am/ActivityManagerService$LocalService;-><init>(Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/am/ActivityManagerService$LocalService;->addAppBackgroundRestrictionListener(Landroid/app/ActivityManagerInternal$AppBackgroundRestrictionListener;)V
PLcom/android/server/am/ActivityManagerService$LocalService;->addBindServiceEventListener(Landroid/app/ActivityManagerInternal$BindServiceEventListener;)V
PLcom/android/server/am/ActivityManagerService$LocalService;->addBroadcastEventListener(Landroid/app/ActivityManagerInternal$BroadcastEventListener;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->addCreatorToken(Landroid/content/Intent;Ljava/lang/String;)V
PLcom/android/server/am/ActivityManagerService$LocalService;->addForegroundServiceStateListener(Landroid/app/ActivityManagerInternal$ForegroundServiceStateListener;)V
-PLcom/android/server/am/ActivityManagerService$LocalService;->addPendingTopUid(IILandroid/app/IApplicationThread;)V
-PLcom/android/server/am/ActivityManagerService$LocalService;->applyForegroundServiceNotification(Landroid/app/Notification;Ljava/lang/String;ILjava/lang/String;I)Landroid/app/ActivityManagerInternal$ServiceNotificationPolicy;
+HPLcom/android/server/am/ActivityManagerService$LocalService;->addPendingTopUid(IILandroid/app/IApplicationThread;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->addStartInfoTimestamp(IJIII)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->applyForegroundServiceNotification(Landroid/app/Notification;Ljava/lang/String;ILjava/lang/String;I)Landroid/app/ActivityManagerInternal$ServiceNotificationPolicy;
+PLcom/android/server/am/ActivityManagerService$LocalService;->broadcastCloseSystemDialogs(Ljava/lang/String;)V
PLcom/android/server/am/ActivityManagerService$LocalService;->broadcastGlobalConfigurationChanged(IZ)V
HPLcom/android/server/am/ActivityManagerService$LocalService;->broadcastIntent(Landroid/content/Intent;Landroid/content/IIntentReceiver;[Ljava/lang/String;ZI[ILjava/util/function/BiFunction;Landroid/os/Bundle;)I
PLcom/android/server/am/ActivityManagerService$LocalService;->broadcastIntentInPackage(Ljava/lang/String;Ljava/lang/String;IIILandroid/content/Intent;Ljava/lang/String;Landroid/app/IApplicationThread;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;Landroid/os/Bundle;ZZILandroid/app/BackgroundStartPrivileges;[I)I
-HPLcom/android/server/am/ActivityManagerService$LocalService;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String;
-HPLcom/android/server/am/ActivityManagerService$LocalService;->deletePendingTopUid(IJ)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->broadcastIntentWithCallback(Landroid/content/Intent;Landroid/content/IIntentReceiver;[Ljava/lang/String;I[ILjava/util/function/BiFunction;Landroid/os/Bundle;)I
+PLcom/android/server/am/ActivityManagerService$LocalService;->canAllowWhileInUsePermissionInFgs(IILjava/lang/String;)Z
+HPLcom/android/server/am/ActivityManagerService$LocalService;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;
+PLcom/android/server/am/ActivityManagerService$LocalService;->cleanUpServices(ILandroid/content/ComponentName;Landroid/content/Intent;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->clearPendingIntentAllowBgActivityStarts(Landroid/content/IIntentSender;Landroid/os/IBinder;)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->deletePendingTopUid(IJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
PLcom/android/server/am/ActivityManagerService$LocalService;->enforceBroadcastOptionsPermissions(Landroid/os/Bundle;I)V
PLcom/android/server/am/ActivityManagerService$LocalService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->ensureNotSpecialUser(I)V
PLcom/android/server/am/ActivityManagerService$LocalService;->finishBooting()V
PLcom/android/server/am/ActivityManagerService$LocalService;->getBootTimeTempAllowListDuration()J
PLcom/android/server/am/ActivityManagerService$LocalService;->getCurrentProfileIds()[I
HPLcom/android/server/am/ActivityManagerService$LocalService;->getCurrentUserId()I
PLcom/android/server/am/ActivityManagerService$LocalService;->getInstrumentationSourceUid(I)I
+PLcom/android/server/am/ActivityManagerService$LocalService;->getMemoryStateForProcesses()Ljava/util/List;
+PLcom/android/server/am/ActivityManagerService$LocalService;->getPendingIntentActivityAsApp(ILandroid/content/Intent;ILandroid/os/Bundle;Ljava/lang/String;I)Landroid/app/PendingIntent;
+PLcom/android/server/am/ActivityManagerService$LocalService;->getPendingIntentActivityAsApp(I[Landroid/content/Intent;ILandroid/os/Bundle;Ljava/lang/String;I)Landroid/app/PendingIntent;
HPLcom/android/server/am/ActivityManagerService$LocalService;->getRestrictionLevel(I)I
PLcom/android/server/am/ActivityManagerService$LocalService;->getServiceStartForegroundTimeout()I
HPLcom/android/server/am/ActivityManagerService$LocalService;->getUidProcessState(I)I
HPLcom/android/server/am/ActivityManagerService$LocalService;->handleIncomingUser(IIIZILjava/lang/String;Ljava/lang/String;)I
HPLcom/android/server/am/ActivityManagerService$LocalService;->hasForegroundServiceNotification(Ljava/lang/String;ILjava/lang/String;)Z
PLcom/android/server/am/ActivityManagerService$LocalService;->hasStartedUserState(I)Z
-HPLcom/android/server/am/ActivityManagerService$LocalService;->isAppBad(Ljava/lang/String;I)Z
+PLcom/android/server/am/ActivityManagerService$LocalService;->isActivityStartsLoggingEnabled()Z
+HPLcom/android/server/am/ActivityManagerService$LocalService;->isAppBad(Ljava/lang/String;I)Z+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;
+PLcom/android/server/am/ActivityManagerService$LocalService;->isAppForeground(I)Z
HPLcom/android/server/am/ActivityManagerService$LocalService;->isAppStartModeDisabled(ILjava/lang/String;)Z
HPLcom/android/server/am/ActivityManagerService$LocalService;->isAssociatedCompanionApp(II)Z
+PLcom/android/server/am/ActivityManagerService$LocalService;->isBackgroundActivityStartsEnabled()Z
HPLcom/android/server/am/ActivityManagerService$LocalService;->isBgAutoRestrictedBucketFeatureFlagEnabled()Z
PLcom/android/server/am/ActivityManagerService$LocalService;->isBooted()Z
-PLcom/android/server/am/ActivityManagerService$LocalService;->isBooting()Z
-HPLcom/android/server/am/ActivityManagerService$LocalService;->isDeviceOwner(I)Z
-PLcom/android/server/am/ActivityManagerService$LocalService;->isModernQueueEnabled()Z
-HPLcom/android/server/am/ActivityManagerService$LocalService;->isPendingTopUid(I)Z
+HPLcom/android/server/am/ActivityManagerService$LocalService;->isBooting()Z
+PLcom/android/server/am/ActivityManagerService$LocalService;->isDeviceOwner(I)Z
+HPLcom/android/server/am/ActivityManagerService$LocalService;->isPendingTopUid(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HPLcom/android/server/am/ActivityManagerService$LocalService;->isProfileOwner(I)Z
-PLcom/android/server/am/ActivityManagerService$LocalService;->isSplitConfigurationChange(I)Z
PLcom/android/server/am/ActivityManagerService$LocalService;->isSystemReady()Z
HPLcom/android/server/am/ActivityManagerService$LocalService;->isTempAllowlistedForFgsWhileInUse(I)Z
HPLcom/android/server/am/ActivityManagerService$LocalService;->isUidActive(I)Z
-PLcom/android/server/am/ActivityManagerService$LocalService;->isUserRunning(II)Z
+HPLcom/android/server/am/ActivityManagerService$LocalService;->isUserRunning(II)Z
PLcom/android/server/am/ActivityManagerService$LocalService;->killAllBackgroundProcessesExcept(II)V
PLcom/android/server/am/ActivityManagerService$LocalService;->logFgsApiBegin(III)V
PLcom/android/server/am/ActivityManagerService$LocalService;->logFgsApiEnd(III)V
PLcom/android/server/am/ActivityManagerService$LocalService;->noteAlarmFinish(Landroid/app/PendingIntent;Landroid/os/WorkSource;ILjava/lang/String;)V
-HPLcom/android/server/am/ActivityManagerService$LocalService;->noteAlarmStart(Landroid/app/PendingIntent;Landroid/os/WorkSource;ILjava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->noteAlarmStart(Landroid/app/PendingIntent;Landroid/os/WorkSource;ILjava/lang/String;)V
PLcom/android/server/am/ActivityManagerService$LocalService;->noteWakeupAlarm(Landroid/app/PendingIntent;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;)V
HPLcom/android/server/am/ActivityManagerService$LocalService;->notifyNetworkPolicyRulesUpdated(IJ)V
PLcom/android/server/am/ActivityManagerService$LocalService;->onForegroundServiceNotificationUpdate(ZLandroid/app/Notification;ILjava/lang/String;I)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->onUidBlockedReasonsChanged(II)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->onWakefulnessChanged(I)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->prepareForPossibleShutdown()V
PLcom/android/server/am/ActivityManagerService$LocalService;->registerAnrController(Landroid/app/AnrController;)V
PLcom/android/server/am/ActivityManagerService$LocalService;->registerNetworkPolicyUidObserver(Landroid/app/IUidObserver;IILjava/lang/String;)V
PLcom/android/server/am/ActivityManagerService$LocalService;->registerProcessObserver(Landroid/app/IProcessObserver;)V
-PLcom/android/server/am/ActivityManagerService$LocalService;->scheduleAppGcs()V
+PLcom/android/server/am/ActivityManagerService$LocalService;->reportCurKeyguardUsageEvent(Z)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->scheduleAppGcs()V
PLcom/android/server/am/ActivityManagerService$LocalService;->setBooted(Z)V
PLcom/android/server/am/ActivityManagerService$LocalService;->setBooting(Z)V
PLcom/android/server/am/ActivityManagerService$LocalService;->setCompanionAppUids(ILjava/util/Set;)V
PLcom/android/server/am/ActivityManagerService$LocalService;->setDeviceIdleAllowlist([I[I)V
PLcom/android/server/am/ActivityManagerService$LocalService;->setDeviceOwnerUid(I)V
PLcom/android/server/am/ActivityManagerService$LocalService;->setHasOverlayUi(IZ)V
-PLcom/android/server/am/ActivityManagerService$LocalService;->setPendingIntentAllowBgActivityStarts(Landroid/content/IIntentSender;Landroid/os/IBinder;I)V
-PLcom/android/server/am/ActivityManagerService$LocalService;->setPendingIntentAllowlistDuration(Landroid/content/IIntentSender;Landroid/os/IBinder;JIILjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->setPendingIntentAllowBgActivityStarts(Landroid/content/IIntentSender;Landroid/os/IBinder;I)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->setPendingIntentAllowlistDuration(Landroid/content/IIntentSender;Landroid/os/IBinder;JIILjava/lang/String;)V
PLcom/android/server/am/ActivityManagerService$LocalService;->setProfileOwnerUid(Landroid/util/ArraySet;)V
PLcom/android/server/am/ActivityManagerService$LocalService;->setVoiceInteractionManagerProvider(Landroid/app/ActivityManagerInternal$VoiceInteractionManagerProvider;)V
-PLcom/android/server/am/ActivityManagerService$LocalService;->shouldConfirmCredentials(I)Z
-PLcom/android/server/am/ActivityManagerService$LocalService;->shouldWaitForNetworkRulesUpdate(I)Z
-HPLcom/android/server/am/ActivityManagerService$LocalService;->startProcess(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZZLjava/lang/String;Landroid/content/ComponentName;)V
-HPLcom/android/server/am/ActivityManagerService$LocalService;->startServiceInPackage(ILandroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;ILandroid/app/BackgroundStartPrivileges;)Landroid/content/ComponentName;
-PLcom/android/server/am/ActivityManagerService$LocalService;->trimApplications()V
-PLcom/android/server/am/ActivityManagerService$LocalService;->updateActivityUsageStats(Landroid/content/ComponentName;IILandroid/os/IBinder;Landroid/content/ComponentName;Landroid/app/assist/ActivityId;)V
-PLcom/android/server/am/ActivityManagerService$LocalService;->updateBatteryStats(Landroid/content/ComponentName;IIZ)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->shouldConfirmCredentials(I)Z
+PLcom/android/server/am/ActivityManagerService$LocalService;->shouldDelayHomeLaunch(I)Z
+PLcom/android/server/am/ActivityManagerService$LocalService;->startProcess(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZZLjava/lang/String;Landroid/content/ComponentName;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->startServiceInPackage(ILandroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;ILandroid/app/BackgroundStartPrivileges;)Landroid/content/ComponentName;
+PLcom/android/server/am/ActivityManagerService$LocalService;->tempAllowWhileInUsePermissionInFgs(IJ)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->tempAllowlistForPendingIntent(IIIJIILjava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->triggerUnsafeIntentStrictMode(IILandroid/content/Intent;)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->trimApplications()V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->updateActivityUsageStats(Landroid/content/ComponentName;IILandroid/os/IBinder;Landroid/content/ComponentName;Landroid/app/assist/ActivityId;)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->updateBatteryStats(Landroid/content/ComponentName;IIZ)V
PLcom/android/server/am/ActivityManagerService$LocalService;->updateCpuStats()V
-HPLcom/android/server/am/ActivityManagerService$LocalService;->updateDeviceIdleTempAllowlist([IIZJIILjava/lang/String;I)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->updateDeviceIdleTempAllowlist([IIZJIILjava/lang/String;I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
PLcom/android/server/am/ActivityManagerService$LocalService;->updateForegroundTimeIfOnBattery(Ljava/lang/String;IJ)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->updateOomAdj(I)V
PLcom/android/server/am/ActivityManagerService$LocalService;->updateOomLevelsForDisplay(I)V
-PLcom/android/server/am/ActivityManagerService$MainHandler$$ExternalSyntheticLambda1;-><init>(Landroid/os/Message;)V
-HPLcom/android/server/am/ActivityManagerService$MainHandler$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
-PLcom/android/server/am/ActivityManagerService$MainHandler$$ExternalSyntheticLambda2;-><init>(Landroid/os/Message;)V
-HPLcom/android/server/am/ActivityManagerService$MainHandler$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/am/ActivityManagerService$MainHandler;->$r8$lambda$-BaOH0nhWmB1j4fAdRCLVwJvRCA(Landroid/os/Message;Landroid/app/ActivityManagerInternal$BindServiceEventListener;)V
-HPLcom/android/server/am/ActivityManagerService$MainHandler;->$r8$lambda$bz9CTa7TXqawLiiOdBfpNP_dnbI(Landroid/os/Message;Landroid/app/ActivityManagerInternal$BroadcastEventListener;)V
-HSPLcom/android/server/am/ActivityManagerService$MainHandler;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V
-HPLcom/android/server/am/ActivityManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V
-HPLcom/android/server/am/ActivityManagerService$MainHandler;->lambda$handleMessage$1(Landroid/os/Message;Landroid/app/ActivityManagerInternal$BroadcastEventListener;)V
-HPLcom/android/server/am/ActivityManagerService$MainHandler;->lambda$handleMessage$2(Landroid/os/Message;Landroid/app/ActivityManagerInternal$BindServiceEventListener;)V
+PLcom/android/server/am/ActivityManagerService$MainHandler$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/am/ActivityManagerService$MainHandler$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/am/ActivityManagerService$MainHandler$$ExternalSyntheticLambda1;-><init>(Landroid/os/Message;I)V
+HPLcom/android/server/am/ActivityManagerService$MainHandler$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V+]Landroid/app/ActivityManagerInternal$BindServiceEventListener;Lcom/android/server/am/AppBindServiceEventsTracker;]Landroid/app/ActivityManagerInternal$BroadcastEventListener;Lcom/android/server/am/AppBroadcastEventsTracker;
PLcom/android/server/am/ActivityManagerService$MemBinder$1;-><init>(Lcom/android/server/am/ActivityManagerService$MemBinder;)V
+PLcom/android/server/am/ActivityManagerService$MemBinder$1;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+PLcom/android/server/am/ActivityManagerService$MemBinder$1;->dumpHigh(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
PLcom/android/server/am/ActivityManagerService$MemBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HPLcom/android/server/am/ActivityManagerService$PendingTempAllowlist;-><init>(IJILjava/lang/String;II)V
-PLcom/android/server/am/ActivityManagerService$PermissionController;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HPLcom/android/server/am/ActivityManagerService$PermissionController;->checkPermission(Ljava/lang/String;II)Z
-PLcom/android/server/am/ActivityManagerService$PermissionController;->getPackagesForUid(I)[Ljava/lang/String;
+PLcom/android/server/am/ActivityManagerService$MemBinder;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JJJJI)V
+PLcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JJJJIIZ)V
+PLcom/android/server/am/ActivityManagerService$MyBinderProxyCountEventListener;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HPLcom/android/server/am/ActivityManagerService$PendingTempAllowlist;-><init>(IILjava/lang/String;IJI)V
+PLcom/android/server/am/ActivityManagerService$PermissionController;->checkPermission(Ljava/lang/String;II)Z
+HPLcom/android/server/am/ActivityManagerService$PermissionController;->getPackagesForUid(I)[Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
PLcom/android/server/am/ActivityManagerService$PermissionController;->isRuntimePermission(Ljava/lang/String;)Z
HSPLcom/android/server/am/ActivityManagerService$PidMap;-><init>()V
-HPLcom/android/server/am/ActivityManagerService$PidMap;->doAddInternal(ILcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/ActivityManagerService$PidMap;->doRemoveInternal(ILcom/android/server/am/ProcessRecord;)Z
-HPLcom/android/server/am/ActivityManagerService$PidMap;->get(I)Lcom/android/server/am/ProcessRecord;
-PLcom/android/server/am/ActivityManagerService$PidMap;->size()I
+HSPLcom/android/server/am/ActivityManagerService$PidMap;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HPLcom/android/server/am/ActivityManagerService$PidMap;->get(I)Lcom/android/server/am/ProcessRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
PLcom/android/server/am/ActivityManagerService$PidMap;->valueAt(I)Lcom/android/server/am/ProcessRecord;
-PLcom/android/server/am/ActivityManagerService$ProcessChangeItem;-><init>()V
+PLcom/android/server/am/ActivityManagerService$ProcStatsRunnable;-><init>(Lcom/android/server/am/ProcessStatsService;)V
+PLcom/android/server/am/ActivityManagerService$ProcStatsRunnable;->run()V
PLcom/android/server/am/ActivityManagerService$ProcessInfoService;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-PLcom/android/server/am/ActivityManagerService$StickyBroadcast;-><init>()V
-HPLcom/android/server/am/ActivityManagerService$StickyBroadcast;->create(Landroid/content/Intent;ZII)Lcom/android/server/am/ActivityManagerService$StickyBroadcast;
+PLcom/android/server/am/ActivityManagerService$ProcessInfoService;->getProcessStatesAndOomScoresFromPids([I[I[I)V
HSPLcom/android/server/am/ActivityManagerService$UiHandler;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HPLcom/android/server/am/ActivityManagerService$UiHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/am/ActivityManagerService$VolatileDropboxEntryStates;-><init>(Ljava/lang/Boolean;)V
-PLcom/android/server/am/ActivityManagerService$VolatileDropboxEntryStates;->isProcessFrozen()Ljava/lang/Boolean;
-PLcom/android/server/am/ActivityManagerService$VolatileDropboxEntryStates;->withProcessFrozenState(Z)Lcom/android/server/am/ActivityManagerService$VolatileDropboxEntryStates;
-HSPLcom/android/server/am/ActivityManagerService;->$r8$lambda$4jAnBrF-SmuZoSRgfVhHQN2lKao(Lcom/android/server/am/ActivityManagerService;)V
-PLcom/android/server/am/ActivityManagerService;->$r8$lambda$Dp0egYYO_wvfUqcu1s5QAPQddjA([ILjava/lang/String;Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ActivityManagerService;->$r8$lambda$IE8SqRKSFsLlY7GC_8cKvVDeK0g(Lcom/android/server/am/ActivityManagerService;Ljava/util/LinkedList;)V
-PLcom/android/server/am/ActivityManagerService;->$r8$lambda$IzjUh_o8KWqydvYO0dnNprsu32k(Lcom/android/server/am/ActivityManagerService;JJZZLcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ActivityManagerService;->$r8$lambda$e8WnLKSH7e6sDHRELddgL3PL_d8(Landroid/os/DropBoxManager;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->$r8$lambda$gwpxWp5Qwn61kRYqtmpQ9WyBNik(Lcom/android/server/am/ActivityManagerService;Landroid/app/IUnsafeIntentStrictModeCallback;Landroid/content/Intent;I)V
-PLcom/android/server/am/ActivityManagerService;->$r8$lambda$p1-L-hA5wy-OdXKEh0TX_hvZ7h0(Ljava/lang/StringBuilder;Landroid/content/pm/IPackageManager;ILjava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->-$$Nest$fgetmCompanionAppUidsMap(Lcom/android/server/am/ActivityManagerService;)Ljava/util/Map;
-HPLcom/android/server/am/ActivityManagerService;->-$$Nest$fgetmDeviceOwnerUid(Lcom/android/server/am/ActivityManagerService;)I
-HPLcom/android/server/am/ActivityManagerService;->-$$Nest$fgetmFgsWhileInUseTempAllowList(Lcom/android/server/am/ActivityManagerService;)Lcom/android/server/am/FgsTempAllowList;
-PLcom/android/server/am/ActivityManagerService;->-$$Nest$fgetmNetworkPolicyUidObserver(Lcom/android/server/am/ActivityManagerService;)Landroid/app/IUidObserver;
-HPLcom/android/server/am/ActivityManagerService;->-$$Nest$fgetmPendingStartActivityUids(Lcom/android/server/am/ActivityManagerService;)Lcom/android/server/am/PendingStartActivityUids;
-HPLcom/android/server/am/ActivityManagerService;->-$$Nest$fgetmProfileOwnerUids(Lcom/android/server/am/ActivityManagerService;)Landroid/util/ArraySet;
-PLcom/android/server/am/ActivityManagerService;->-$$Nest$fgetmStrictModeCallbacks(Lcom/android/server/am/ActivityManagerService;)Landroid/util/SparseArray;
-PLcom/android/server/am/ActivityManagerService;->-$$Nest$fgetmUidNetworkBlockedReasons(Lcom/android/server/am/ActivityManagerService;)Landroid/util/SparseIntArray;
-PLcom/android/server/am/ActivityManagerService;->-$$Nest$fputmDeviceOwnerUid(Lcom/android/server/am/ActivityManagerService;I)V
-PLcom/android/server/am/ActivityManagerService;->-$$Nest$fputmNetworkPolicyUidObserver(Lcom/android/server/am/ActivityManagerService;Landroid/app/IUidObserver;)V
-PLcom/android/server/am/ActivityManagerService;->-$$Nest$fputmProfileOwnerUids(Lcom/android/server/am/ActivityManagerService;Landroid/util/ArraySet;)V
+HSPLcom/android/server/am/ActivityManagerService$UiHandler;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V
+HPLcom/android/server/am/ActivityManagerService$UiHandler;->handleMessage$com$android$server$am$ActivityManagerService$UiHandler(Landroid/os/Message;)V
+HPLcom/android/server/am/ActivityManagerService$UiHandler;->handleMessage(Landroid/os/Message;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
+PLcom/android/server/am/ActivityManagerService;->-$$Nest$mcheckExcessivePowerUsage(Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/am/ActivityManagerService;->-$$Nest$mdoDump(Lcom/android/server/am/ActivityManagerService;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
-PLcom/android/server/am/ActivityManagerService;->-$$Nest$mhandleBindApplicationTimeoutHard(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ActivityManagerService;->-$$Nest$mhandleBindApplicationTimeoutSoft(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;I)V
-HPLcom/android/server/am/ActivityManagerService;->-$$Nest$misAppBad(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;I)Z
-PLcom/android/server/am/ActivityManagerService;->-$$Nest$msetHomeTimeout(Lcom/android/server/am/ActivityManagerService;)V
-PLcom/android/server/am/ActivityManagerService;->-$$Nest$msetVoiceInteractionManagerProvider(Lcom/android/server/am/ActivityManagerService;Landroid/app/ActivityManagerInternal$VoiceInteractionManagerProvider;)V
-HSPLcom/android/server/am/ActivityManagerService;->-$$Nest$mstart(Lcom/android/server/am/ActivityManagerService;)V
-PLcom/android/server/am/ActivityManagerService;->-$$Nest$mstartBroadcastObservers(Lcom/android/server/am/ActivityManagerService;)V
-PLcom/android/server/am/ActivityManagerService;->-$$Nest$mtrimApplications(Lcom/android/server/am/ActivityManagerService;ZI)V
+PLcom/android/server/am/ActivityManagerService;->-$$Nest$mhandleFollowUpOomAdjusterUpdate(Lcom/android/server/am/ActivityManagerService;)V
HSPLcom/android/server/am/ActivityManagerService;-><clinit>()V
HSPLcom/android/server/am/ActivityManagerService;-><init>(Landroid/content/Context;Lcom/android/server/wm/ActivityTaskManagerService;)V
-PLcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZLjava/lang/String;I)Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZZILjava/lang/String;ZZLjava/lang/String;I)Lcom/android/server/am/ProcessRecord;
-PLcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZZLjava/lang/String;I)Lcom/android/server/am/ProcessRecord;
-PLcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZZZLjava/lang/String;I)Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/ActivityManagerService;->addBackgroundCheckViolationLocked(Ljava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/am/ActivityManagerService;->addBroadcastStatLocked(Ljava/lang/String;Ljava/lang/String;IIJ)V
-HPLcom/android/server/am/ActivityManagerService;->addErrorToDropBox(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;Ljava/lang/Float;Landroid/os/incremental/IncrementalMetrics;Ljava/util/UUID;Lcom/android/server/am/ActivityManagerService$VolatileDropboxEntryStates;)V
-HPLcom/android/server/am/ActivityManagerService;->addPackageDependency(Ljava/lang/String;)V
-HPLcom/android/server/am/ActivityManagerService;->addPidLocked(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZILjava/lang/String;ZZLjava/lang/String;I)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ActivityManagerService;->addCreatorToken(Landroid/content/Intent;Ljava/lang/String;)V+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/Set;Landroid/util/ArraySet;
+PLcom/android/server/am/ActivityManagerService;->addErrorToDropBox(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;Ljava/lang/Float;Landroid/os/incremental/IncrementalMetrics;Ljava/util/UUID;Lcom/android/server/am/ActivityManagerService$VolatileDropboxEntryStates;)V
+PLcom/android/server/am/ActivityManagerService;->addPackageDependency(Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->addPidLocked(Lcom/android/server/am/ProcessRecord;)V
PLcom/android/server/am/ActivityManagerService;->addServiceToMap(Landroid/util/ArrayMap;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->addStartInfoTimestampInternal(IIIJ)V
HPLcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;ZLjava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->appRestrictedInBackgroundLOSP(ILjava/lang/String;I)I
-PLcom/android/server/am/ActivityManagerService;->appServicesRestrictedInBackgroundLOSP(ILjava/lang/String;I)I
-HPLcom/android/server/am/ActivityManagerService;->appendDropBoxProcessHeaders(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Lcom/android/server/am/ActivityManagerService$VolatileDropboxEntryStates;Ljava/lang/StringBuilder;)V
-HPLcom/android/server/am/ActivityManagerService;->attachApplication(Landroid/app/IApplicationThread;J)V
+PLcom/android/server/am/ActivityManagerService;->appRestrictedInBackgroundLOSP(IILjava/lang/String;)I
+PLcom/android/server/am/ActivityManagerService;->appendDropBoxProcessHeaders(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Lcom/android/server/am/ActivityManagerService$VolatileDropboxEntryStates;Ljava/lang/StringBuilder;)V
+PLcom/android/server/am/ActivityManagerService;->attachApplication(Landroid/app/IApplicationThread;J)V
HPLcom/android/server/am/ActivityManagerService;->attachApplicationLocked(Landroid/app/IApplicationThread;IIJ)V
-PLcom/android/server/am/ActivityManagerService;->backgroundServicesFinishedLocked(I)V
-PLcom/android/server/am/ActivityManagerService;->batteryNeedsCpuUpdate()V
+PLcom/android/server/am/ActivityManagerService;->backupAgentCreated(Ljava/lang/String;Landroid/os/IBinder;I)V
+PLcom/android/server/am/ActivityManagerService;->bindBackupAgent(Ljava/lang/String;IIIZ)Z
HPLcom/android/server/am/ActivityManagerService;->bindServiceInstance(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;Ljava/lang/String;I)I
-HPLcom/android/server/am/ActivityManagerService;->bindServiceInstance(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;ZILjava/lang/String;Landroid/app/IApplicationThread;Ljava/lang/String;I)I
-HPLcom/android/server/am/ActivityManagerService;->boostPriorityForLockedSection()V
-HSPLcom/android/server/am/ActivityManagerService;->boostPriorityForProcLockedSection()V
+HPLcom/android/server/am/ActivityManagerService;->bindServiceInstance(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;ZILjava/lang/String;Lcom/android/server/am/ApplicationThreadDeferred;Ljava/lang/String;I)I+]Landroid/content/Intent;Landroid/content/Intent;
+HPLcom/android/server/am/ActivityManagerService;->boostPriorityForLockedSection()V+]Lcom/android/server/ThreadPriorityBooster;Lcom/android/server/ThreadPriorityBooster;
+HSPLcom/android/server/am/ActivityManagerService;->boostPriorityForProcLockedSection()V+]Lcom/android/server/ThreadPriorityBooster;Lcom/android/server/ThreadPriorityBooster;
PLcom/android/server/am/ActivityManagerService;->bootAnimationComplete()V
-PLcom/android/server/am/ActivityManagerService;->broadcastIntentInPackage(Ljava/lang/String;Ljava/lang/String;IIILandroid/content/Intent;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;Landroid/os/Bundle;ZZILandroid/app/BackgroundStartPrivileges;[I)I
-PLcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZIIIII)I
-HPLcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZIIIIILandroid/app/BackgroundStartPrivileges;[ILjava/util/function/BiFunction;)I
-HPLcom/android/server/am/ActivityManagerService;->broadcastIntentLockedTraced(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;ZZIIIIILandroid/app/BackgroundStartPrivileges;[ILjava/util/function/BiFunction;)I
-HPLcom/android/server/am/ActivityManagerService;->broadcastIntentWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I
-HPLcom/android/server/am/ActivityManagerService;->broadcastQueueForFlags(I)Lcom/android/server/am/BroadcastQueue;
-HPLcom/android/server/am/ActivityManagerService;->broadcastQueueForFlags(ILjava/lang/Object;)Lcom/android/server/am/BroadcastQueue;
-HPLcom/android/server/am/ActivityManagerService;->broadcastQueueForIntent(Landroid/content/Intent;)Lcom/android/server/am/BroadcastQueue;
-HPLcom/android/server/am/ActivityManagerService;->cancelIntentSender(Landroid/content/IIntentSender;)V
-HPLcom/android/server/am/ActivityManagerService;->checkBroadcastFromSystem(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IZLjava/util/List;)V
+PLcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Landroid/content/Intent;Landroid/content/IIntentReceiver;[Ljava/lang/String;Landroid/os/Bundle;ZIIII)I
+HPLcom/android/server/am/ActivityManagerService;->broadcastIntentWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I+]Landroid/content/Intent;Landroid/content/Intent;
+PLcom/android/server/am/ActivityManagerService;->canScheduleUserInitiatedJobs(IILjava/lang/String;)Z
+HPLcom/android/server/am/ActivityManagerService;->cancelIntentSender(Landroid/content/IIntentSender;)V+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
HPLcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
-HPLcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIIZ)I
-HPLcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
-PLcom/android/server/am/ActivityManagerService;->checkExcessivePowerUsage()V
-HPLcom/android/server/am/ActivityManagerService;->checkPermission(Ljava/lang/String;II)I
+HPLcom/android/server/am/ActivityManagerService;->checkComponentPermission(IILjava/lang/String;IIZ)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/am/ActivityManagerService;->checkComponentPermission(IILjava/lang/String;IZ)I
+PLcom/android/server/am/ActivityManagerService;->checkExcessivePowerUsageLPr(JZJLjava/lang/String;ILcom/android/server/am/ProcessRecord;)Z
+PLcom/android/server/am/ActivityManagerService;->checkPermission(Ljava/lang/String;II)I
HPLcom/android/server/am/ActivityManagerService;->checkPermissionForDevice(Ljava/lang/String;III)I
-HPLcom/android/server/am/ActivityManagerService;->checkTime(JLjava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->checkTime(JLjava/lang/String;)V
PLcom/android/server/am/ActivityManagerService;->checkUriPermission(Landroid/net/Uri;IIIILandroid/os/IBinder;)I
PLcom/android/server/am/ActivityManagerService;->checkUriPermission(Landroid/net/Uri;IIIIZLjava/lang/String;)I
-HPLcom/android/server/am/ActivityManagerService;->cleanUpApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;IZZIZZ)Z
-HPLcom/android/server/am/ActivityManagerService;->clearProcessForegroundLocked(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/ActivityManagerService;->collectReceiverComponents(Landroid/content/Intent;Ljava/lang/String;I[I[I)Ljava/util/List;
-HPLcom/android/server/am/ActivityManagerService;->compatibilityInfoForPackage(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
-HPLcom/android/server/am/ActivityManagerService;->doDump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+HPLcom/android/server/am/ActivityManagerService;->cleanUpApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;IZZZZ)Z
+PLcom/android/server/am/ActivityManagerService;->cleanupDisabledPackageComponentsLocked(Ljava/lang/String;I[Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->closeSystemDialogs(Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->collectProcesses(IZ[Ljava/lang/String;)Ljava/util/ArrayList;
+PLcom/android/server/am/ActivityManagerService;->createOrGetIntentCreatorToken(Landroid/content/Intent;Lcom/android/server/am/ActivityManagerService$IntentCreatorToken$Key;)Lcom/android/server/am/ActivityManagerService$IntentCreatorToken;
PLcom/android/server/am/ActivityManagerService;->doStopUidLocked(ILcom/android/server/am/UidRecord;)V
-PLcom/android/server/am/ActivityManagerService;->doesReasonCodeAllowSchedulingUserInitiatedJobs(I)Z
+PLcom/android/server/am/ActivityManagerService;->doesReasonCodeAllowSchedulingUserInitiatedJobs(II)Z
PLcom/android/server/am/ActivityManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->dumpAllResources(Landroid/os/ParcelFileDescriptor;Ljava/io/PrintWriter;)V
+PLcom/android/server/am/ActivityManagerService;->dumpAllowedAssociationsLocked(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->dumpAppRestrictionController(Ljava/io/PrintWriter;)V
+PLcom/android/server/am/ActivityManagerService;->dumpApplicationMemoryUsage(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/am/ActivityManagerService$MemoryUsageDumpOptions;[Ljava/lang/String;Ljava/util/ArrayList;)V
+PLcom/android/server/am/ActivityManagerService;->dumpApplicationMemoryUsageHeader(Ljava/io/PrintWriter;JJZZ)V
+PLcom/android/server/am/ActivityManagerService;->dumpBinderCacheContents(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->dumpDbInfo(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->dumpEverything(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;IZZIZ)V
+PLcom/android/server/am/ActivityManagerService;->dumpGraphicsHardwareUsage(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->dumpLmkLocked(Ljava/io/PrintWriter;)V
+PLcom/android/server/am/ActivityManagerService;->dumpMemItems(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;ZZZZZ)V
+PLcom/android/server/am/ActivityManagerService;->dumpPermissions(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+PLcom/android/server/am/ActivityManagerService;->dumpUsers(Ljava/io/PrintWriter;)V
HPLcom/android/server/am/ActivityManagerService;->enforceAllowedToStartOrBindServiceIfSdkSandbox(Landroid/content/Intent;)V
-PLcom/android/server/am/ActivityManagerService;->enforceBroadcastOptionPermissionsInternal(Landroid/app/BroadcastOptions;I)V
-HPLcom/android/server/am/ActivityManagerService;->enforceBroadcastOptionPermissionsInternal(Landroid/os/Bundle;I)V
-HPLcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/am/ActivityManagerService;->enforceDumpPermissionForPackage(Ljava/lang/String;IILjava/lang/String;)I
+PLcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->enforceDumpPermissionForPackage(IILjava/lang/String;Ljava/lang/String;)I
HPLcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
-HPLcom/android/server/am/ActivityManagerService;->enforceNotIsolatedOrSdkSandboxCaller(Ljava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->enforcePermission(Ljava/lang/String;IILjava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->enforcePermission(IILjava/lang/String;Ljava/lang/String;)V
HPLcom/android/server/am/ActivityManagerService;->enqueueOomAdjTargetLocked(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/ActivityManagerService;->enqueueUidChangeLocked(Lcom/android/server/am/UidRecord;II)V
+HPLcom/android/server/am/ActivityManagerService;->enqueuePendingTopAppIfNecessaryLocked()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/am/ActivityManagerService;->enqueueUidChangeLocked(Lcom/android/server/am/UidRecord;II)V+]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/am/ActivityManagerService;->ensureAllowedAssociations()V
-HPLcom/android/server/am/ActivityManagerService;->filterNonExportedComponents(Landroid/content/Intent;IILjava/util/List;Lcom/android/server/compat/PlatformCompat;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/am/ActivityManagerService;->findAppProcess(Landroid/os/IBinder;Ljava/lang/String;)Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/ActivityManagerService;->finishAttachApplication(J)V
-HPLcom/android/server/am/ActivityManagerService;->finishAttachApplicationInner(JII)V
-HPLcom/android/server/am/ActivityManagerService;->finishBooting()V
-PLcom/android/server/am/ActivityManagerService;->finishForceStopPackageLocked(Ljava/lang/String;I)V
+PLcom/android/server/am/ActivityManagerService;->finishAttachApplication(JJ)V
+HPLcom/android/server/am/ActivityManagerService;->finishAttachApplicationInner(IIJ)V
+PLcom/android/server/am/ActivityManagerService;->finishBooting()V
HPLcom/android/server/am/ActivityManagerService;->finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZI)V
-PLcom/android/server/am/ActivityManagerService;->forceStopPackage(Ljava/lang/String;I)V
-PLcom/android/server/am/ActivityManagerService;->forceStopPackage(Ljava/lang/String;IILjava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->forceStopPackageInternalLocked(Ljava/lang/String;IZZZZZZILjava/lang/String;II)Z
PLcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZZZILjava/lang/String;)Z
-HPLcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZZZILjava/lang/String;I)Z
PLcom/android/server/am/ActivityManagerService;->frozenBinderTransactionDetected(IIII)V
PLcom/android/server/am/ActivityManagerService;->getAppId(Ljava/lang/String;)I
-PLcom/android/server/am/ActivityManagerService;->getAppInfoForUser(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo;
-HPLcom/android/server/am/ActivityManagerService;->getAppOpsManager()Landroid/app/AppOpsManager;
-HPLcom/android/server/am/ActivityManagerService;->getAppStartModeLOSP(ILjava/lang/String;IIZZZ)I
-HPLcom/android/server/am/ActivityManagerService;->getBackgroundLaunchBroadcasts()Landroid/util/ArraySet;
-HPLcom/android/server/am/ActivityManagerService;->getCommonServicesLocked(Z)Landroid/util/ArrayMap;
+PLcom/android/server/am/ActivityManagerService;->getAppOpsManager$1()Landroid/app/AppOpsManager;
+HPLcom/android/server/am/ActivityManagerService;->getAppStartModeLOSP(ILjava/lang/String;IIZZZ)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+PLcom/android/server/am/ActivityManagerService;->getCommonServicesLocked(Z)Landroid/util/ArrayMap;
PLcom/android/server/am/ActivityManagerService;->getConfiguration()Landroid/content/res/Configuration;
HPLcom/android/server/am/ActivityManagerService;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder;
PLcom/android/server/am/ActivityManagerService;->getContentProviderHelper()Lcom/android/server/am/ContentProviderHelper;
PLcom/android/server/am/ActivityManagerService;->getCurrentUser()Landroid/content/pm/UserInfo;
-HPLcom/android/server/am/ActivityManagerService;->getCurrentUserId()I
+PLcom/android/server/am/ActivityManagerService;->getCurrentUserId()I
+PLcom/android/server/am/ActivityManagerService;->getFocusedRootTaskInfo()Landroid/app/ActivityTaskManager$RootTaskInfo;
+PLcom/android/server/am/ActivityManagerService;->getForegroundServiceType(Landroid/content/ComponentName;Landroid/os/IBinder;)I
HPLcom/android/server/am/ActivityManagerService;->getHistoricalProcessExitReasons(Ljava/lang/String;III)Landroid/content/pm/ParceledListSlice;
HPLcom/android/server/am/ActivityManagerService;->getInfoForIntentSender(Landroid/content/IIntentSender;)Landroid/app/ActivityManager$PendingIntentInfo;
+PLcom/android/server/am/ActivityManagerService;->getIntentForIntentSender(Landroid/content/IIntentSender;)Landroid/content/Intent;
HPLcom/android/server/am/ActivityManagerService;->getIntentSenderWithFeature(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)Landroid/content/IIntentSender;
-HPLcom/android/server/am/ActivityManagerService;->getIntentSenderWithFeatureAsApp(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;II)Landroid/content/IIntentSender;
-PLcom/android/server/am/ActivityManagerService;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V
+HPLcom/android/server/am/ActivityManagerService;->getIntentSenderWithFeatureAsApp(IIIIILandroid/os/Bundle;Landroid/os/IBinder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Landroid/content/Intent;[Ljava/lang/String;)Lcom/android/server/am/PendingIntentRecord;+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
+PLcom/android/server/am/ActivityManagerService;->getKsmInfo()[J
+HPLcom/android/server/am/ActivityManagerService;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V
HPLcom/android/server/am/ActivityManagerService;->getMemoryTrimLevel()I
HPLcom/android/server/am/ActivityManagerService;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V
HPLcom/android/server/am/ActivityManagerService;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
-PLcom/android/server/am/ActivityManagerService;->getPackageProcessState(Ljava/lang/String;Ljava/lang/String;)I
-HPLcom/android/server/am/ActivityManagerService;->getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/ActivityManagerService;->getRealProcessStateLocked(Lcom/android/server/am/ProcessRecord;I)I
-HPLcom/android/server/am/ActivityManagerService;->getRecordForAppLOSP(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ActivityManagerService;->getPackageProcessState(Ljava/lang/String;Ljava/lang/String;)I
+PLcom/android/server/am/ActivityManagerService;->getProcessStatesAndOomScoresForPIDs([I[I[I)V
+HPLcom/android/server/am/ActivityManagerService;->getRecordForAppLOSP(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;
HPLcom/android/server/am/ActivityManagerService;->getRecordForAppLOSP(Landroid/os/IBinder;)Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/ActivityManagerService;->getRunningAppProcesses()Ljava/util/List;
-HPLcom/android/server/am/ActivityManagerService;->getRunningUserIds()[I
+HPLcom/android/server/am/ActivityManagerService;->getRunningAppProcesses()Ljava/util/List;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
+PLcom/android/server/am/ActivityManagerService;->getRunningUserIds()[I
PLcom/android/server/am/ActivityManagerService;->getServices(II)Ljava/util/List;
-HPLcom/android/server/am/ActivityManagerService;->getShortAction(Ljava/lang/String;)Ljava/lang/String;
HPLcom/android/server/am/ActivityManagerService;->getTagForIntentSender(Landroid/content/IIntentSender;Ljava/lang/String;)Ljava/lang/String;
HPLcom/android/server/am/ActivityManagerService;->getTagForIntentSenderLocked(Lcom/android/server/am/PendingIntentRecord;Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/am/ActivityManagerService;->getTaskForActivity(Landroid/os/IBinder;Z)I
HSPLcom/android/server/am/ActivityManagerService;->getTopApp()Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/ActivityManagerService;->getUidProcessCapabilityLocked(I)I
-HPLcom/android/server/am/ActivityManagerService;->getUidProcessState(ILjava/lang/String;)I
-PLcom/android/server/am/ActivityManagerService;->getUidProcessStateInnerLOSP(I)I
+PLcom/android/server/am/ActivityManagerService;->getUidProcessState(ILjava/lang/String;)I
HPLcom/android/server/am/ActivityManagerService;->getUidState(I)I
-HPLcom/android/server/am/ActivityManagerService;->getUidStateLocked(I)I
-HPLcom/android/server/am/ActivityManagerService;->grantImplicitAccess(ILandroid/content/Intent;II)V
-HPLcom/android/server/am/ActivityManagerService;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;IZZZ)V
+HPLcom/android/server/am/ActivityManagerService;->grantImplicitAccess(ILandroid/content/Intent;II)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
+PLcom/android/server/am/ActivityManagerService;->grantUriPermission(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/net/Uri;II)V
+HPLcom/android/server/am/ActivityManagerService;->handleAppDiedLocked(ILcom/android/server/am/ProcessRecord;ZZZ)V
HPLcom/android/server/am/ActivityManagerService;->handleApplicationStrictModeViolation(Landroid/os/IBinder;ILandroid/os/StrictMode$ViolationInfo;)V
-HPLcom/android/server/am/ActivityManagerService;->handleApplicationWtf(Landroid/os/IBinder;Ljava/lang/String;ZLandroid/app/ApplicationErrorReport$ParcelableCrashInfo;I)Z
-HPLcom/android/server/am/ActivityManagerService;->handleApplicationWtfInner(IILandroid/os/IBinder;Ljava/lang/String;Landroid/app/ApplicationErrorReport$CrashInfo;)Lcom/android/server/am/ProcessRecord;
-PLcom/android/server/am/ActivityManagerService;->handleBindApplicationTimeoutHard(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/ActivityManagerService;->handleBindApplicationTimeoutSoft(Lcom/android/server/am/ProcessRecord;I)V
+PLcom/android/server/am/ActivityManagerService;->handleApplicationWtf(Landroid/os/IBinder;Ljava/lang/String;ZLandroid/app/ApplicationErrorReport$ParcelableCrashInfo;I)Z
+PLcom/android/server/am/ActivityManagerService;->handleApplicationWtfInner(IILandroid/os/IBinder;Ljava/lang/String;Landroid/app/ApplicationErrorReport$CrashInfo;)Lcom/android/server/am/ProcessRecord;
HPLcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
-PLcom/android/server/am/ActivityManagerService;->handlePendingSystemServerWtfs(Ljava/util/LinkedList;)V
HPLcom/android/server/am/ActivityManagerService;->hasUsageStatsPermission(Ljava/lang/String;)Z
-HPLcom/android/server/am/ActivityManagerService;->hasUsageStatsPermission(Ljava/lang/String;II)Z
-HPLcom/android/server/am/ActivityManagerService;->idleUids()V
-PLcom/android/server/am/ActivityManagerService;->initDropboxRateLimiter()V
-HSPLcom/android/server/am/ActivityManagerService;->initPowerManagement()V
+PLcom/android/server/am/ActivityManagerService;->idleUids()V
PLcom/android/server/am/ActivityManagerService;->isAllowedWhileBooting(Landroid/content/pm/ApplicationInfo;)Z
HPLcom/android/server/am/ActivityManagerService;->isAllowlistedForFgsStartLOSP(I)Lcom/android/server/am/ActivityManagerService$FgsTempAllowListItem;
-HPLcom/android/server/am/ActivityManagerService;->isAppBad(Ljava/lang/String;I)Z
-HPLcom/android/server/am/ActivityManagerService;->isAppFreezerExemptInstPkg()Z
-HPLcom/android/server/am/ActivityManagerService;->isAppStartModeDisabled(ILjava/lang/String;)Z
-PLcom/android/server/am/ActivityManagerService;->isDeviceProvisioned(Landroid/content/Context;)Z
-HPLcom/android/server/am/ActivityManagerService;->isInstantApp(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;I)Z
+PLcom/android/server/am/ActivityManagerService;->isAppFreezerExemptInstPkg()Z
+PLcom/android/server/am/ActivityManagerService;->isBackgroundRestricted(Ljava/lang/String;)Z
+PLcom/android/server/am/ActivityManagerService;->isBackgroundRestrictedNoCheck(ILjava/lang/String;)Z
+PLcom/android/server/am/ActivityManagerService;->isHomeLaunchDelayable()Z
+PLcom/android/server/am/ActivityManagerService;->isIntentSenderAnActivity(Landroid/content/IIntentSender;)Z
PLcom/android/server/am/ActivityManagerService;->isOnDeviceIdleAllowlistLOSP(IZ)Z
-HPLcom/android/server/am/ActivityManagerService;->isReceivingBroadcastLocked(Lcom/android/server/am/ProcessRecord;[I)Z
+PLcom/android/server/am/ActivityManagerService;->isProcessInStateToScheduleUserInitiatedJobsLocked(IJLcom/android/server/am/ProcessRecord;)Z
HPLcom/android/server/am/ActivityManagerService;->isSingleton(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)Z
-PLcom/android/server/am/ActivityManagerService;->isSystemUserOnly(I)Z
-HPLcom/android/server/am/ActivityManagerService;->isUidActive(ILjava/lang/String;)Z
+PLcom/android/server/am/ActivityManagerService;->isTopActivityImmersive()Z
+PLcom/android/server/am/ActivityManagerService;->isTopOfTask(Landroid/os/IBinder;)Z
+PLcom/android/server/am/ActivityManagerService;->isUidActive(ILjava/lang/String;)Z
HPLcom/android/server/am/ActivityManagerService;->isUidActiveLOSP(I)Z
-HPLcom/android/server/am/ActivityManagerService;->isUserAMonkey()Z
+PLcom/android/server/am/ActivityManagerService;->isUserAMonkey()Z
PLcom/android/server/am/ActivityManagerService;->isUserRunning(II)Z
+PLcom/android/server/am/ActivityManagerService;->isValidSingletonCall(II)Z
PLcom/android/server/am/ActivityManagerService;->killAllBackgroundProcessesExcept(II)V
-HPLcom/android/server/am/ActivityManagerService;->lambda$appendDropBoxProcessHeaders$12(Ljava/lang/StringBuilder;Landroid/content/pm/IPackageManager;ILjava/lang/String;)V
-HPLcom/android/server/am/ActivityManagerService;->lambda$checkExcessivePowerUsage$20(JJZZLcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ActivityManagerService;->lambda$filterNonExportedComponents$19(Landroid/app/IUnsafeIntentStrictModeCallback;Landroid/content/Intent;I)V
-PLcom/android/server/am/ActivityManagerService;->lambda$getPackageProcessState$0([ILjava/lang/String;Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ActivityManagerService;->lambda$logStrictModeViolationToDropBox$10(Landroid/os/DropBoxManager;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->lambda$schedulePendingSystemServerWtfs$11(Ljava/util/LinkedList;)V
-HSPLcom/android/server/am/ActivityManagerService;->lambda$scheduleUpdateBinderHeavyHitterWatcherConfig$33()V
+PLcom/android/server/am/ActivityManagerService;->killApplication(Ljava/lang/String;IILjava/lang/String;I)V
+PLcom/android/server/am/ActivityManagerService;->killApplicationProcess(Ljava/lang/String;I)V
+PLcom/android/server/am/ActivityManagerService;->killUidForPermissionChange(IILjava/lang/String;)V
PLcom/android/server/am/ActivityManagerService;->logFgsApiBegin(III)V
-PLcom/android/server/am/ActivityManagerService;->logFgsApiEnd(III)V
-HPLcom/android/server/am/ActivityManagerService;->logStrictModeViolationToDropBox(Lcom/android/server/am/ProcessRecord;Landroid/os/StrictMode$ViolationInfo;)V
-PLcom/android/server/am/ActivityManagerService;->maybeLogUserspaceRebootEvent()V
-HPLcom/android/server/am/ActivityManagerService;->maybeSendBootCompletedLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ActivityManagerService;->logFgsApiEnd(III)V
+HPLcom/android/server/am/ActivityManagerService;->maybeSendBootCompletedLocked(Lcom/android/server/am/ProcessRecord;Z)V
PLcom/android/server/am/ActivityManagerService;->monitor()V
-PLcom/android/server/am/ActivityManagerService;->noteAlarmFinish(Landroid/content/IIntentSender;Landroid/os/WorkSource;ILjava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->noteAlarmStart(Landroid/content/IIntentSender;Landroid/os/WorkSource;ILjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->noteAlarmFinish(Landroid/content/IIntentSender;Landroid/os/WorkSource;ILjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->noteAlarmStart(Landroid/content/IIntentSender;Landroid/os/WorkSource;ILjava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->noteAppRestrictionEnabled(Ljava/lang/String;IIZILjava/lang/String;IJ)V
HPLcom/android/server/am/ActivityManagerService;->noteUidProcessState(III)V
-PLcom/android/server/am/ActivityManagerService;->noteWakeupAlarm(Landroid/content/IIntentSender;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/am/ActivityManagerService;->notifyBroadcastFinishedLocked(Lcom/android/server/am/BroadcastRecord;)V
-HPLcom/android/server/am/ActivityManagerService;->notifyPackageUse(Ljava/lang/String;I)V
-PLcom/android/server/am/ActivityManagerService;->onCoreSettingsChange(Landroid/os/Bundle;)V
-HPLcom/android/server/am/ActivityManagerService;->onProcessFreezableChangedLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ActivityManagerService;->noteWakeupAlarm(Landroid/content/IIntentSender;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->notifyPackageUse(Ljava/lang/String;I)V
PLcom/android/server/am/ActivityManagerService;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V
HPLcom/android/server/am/ActivityManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HPLcom/android/server/am/ActivityManagerService;->processClass(Lcom/android/server/am/ProcessRecord;)Ljava/lang/String;
-HPLcom/android/server/am/ActivityManagerService;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V
-HPLcom/android/server/am/ActivityManagerService;->publishService(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/IBinder;)V
-HPLcom/android/server/am/ActivityManagerService;->pushTempAllowlist()V
+PLcom/android/server/am/ActivityManagerService;->processClass(Lcom/android/server/am/ProcessRecord;)Ljava/lang/String;
+PLcom/android/server/am/ActivityManagerService;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V
+HPLcom/android/server/am/ActivityManagerService;->publishService(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/IBinder;)V+]Landroid/content/Intent;Landroid/content/Intent;
+HPLcom/android/server/am/ActivityManagerService;->pushTempAllowlist()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;
+PLcom/android/server/am/ActivityManagerService;->queryIntentComponentsForIntentSender(Landroid/content/IIntentSender;I)Landroid/content/pm/ParceledListSlice;
HPLcom/android/server/am/ActivityManagerService;->refContentProvider(Landroid/os/IBinder;II)Z
PLcom/android/server/am/ActivityManagerService;->registerProcessObserver(Landroid/app/IProcessObserver;)V
HPLcom/android/server/am/ActivityManagerService;->registerReceiverWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent;
-HPLcom/android/server/am/ActivityManagerService;->registerStrictModeCallback(Landroid/os/IBinder;)V
+PLcom/android/server/am/ActivityManagerService;->registerStrictModeCallback(Landroid/os/IBinder;)V
+PLcom/android/server/am/ActivityManagerService;->registerUidFrozenStateChangedCallback(Landroid/app/IUidFrozenStateChangedCallback;)V
PLcom/android/server/am/ActivityManagerService;->registerUidObserver(Landroid/app/IUidObserver;IILjava/lang/String;)V
-HPLcom/android/server/am/ActivityManagerService;->registerUidObserverForUids(Landroid/app/IUidObserver;IILjava/lang/String;[I)Landroid/os/IBinder;
+PLcom/android/server/am/ActivityManagerService;->registerUidObserverForUids(Landroid/app/IUidObserver;IILjava/lang/String;[I)Landroid/os/IBinder;
PLcom/android/server/am/ActivityManagerService;->registerUserSwitchObserver(Landroid/app/IUserSwitchObserver;Ljava/lang/String;)V
HPLcom/android/server/am/ActivityManagerService;->removeContentProvider(Landroid/os/IBinder;Z)V
-PLcom/android/server/am/ActivityManagerService;->removeLruProcessLocked(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/ActivityManagerService;->removeOomAdjTargetLocked(Lcom/android/server/am/ProcessRecord;Z)V
HPLcom/android/server/am/ActivityManagerService;->removePidLocked(ILcom/android/server/am/ProcessRecord;)Z
-HPLcom/android/server/am/ActivityManagerService;->removeReceiverLocked(Lcom/android/server/am/ReceiverList;)V
-PLcom/android/server/am/ActivityManagerService;->reportCurWakefulnessUsageEvent()V
-PLcom/android/server/am/ActivityManagerService;->reportGlobalUsageEvent(I)V
-HPLcom/android/server/am/ActivityManagerService;->reportUidFrozenStateChanged([I[I)V
-HPLcom/android/server/am/ActivityManagerService;->reportUidInfoMessageLocked(Ljava/lang/String;Ljava/lang/String;I)V
-HPLcom/android/server/am/ActivityManagerService;->resetPriorityAfterLockedSection()V
-HSPLcom/android/server/am/ActivityManagerService;->resetPriorityAfterProcLockedSection()V
+HPLcom/android/server/am/ActivityManagerService;->reportGlobalUsageEvent(I)V
+PLcom/android/server/am/ActivityManagerService;->reportLmkKillAtOrBelow(ILjava/io/PrintWriter;)Z
+HPLcom/android/server/am/ActivityManagerService;->reportStartInfoViewTimestamps(JJ)V
+PLcom/android/server/am/ActivityManagerService;->reportUidInfoMessageLocked(ILjava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->requestBugReportWithDescription(Ljava/lang/String;Ljava/lang/String;IJLjava/util/List;)V
+HPLcom/android/server/am/ActivityManagerService;->resetPriorityAfterLockedSection()V+]Lcom/android/server/ThreadPriorityBooster;Lcom/android/server/ThreadPriorityBooster;
+HSPLcom/android/server/am/ActivityManagerService;->resetPriorityAfterProcLockedSection()V+]Lcom/android/server/ThreadPriorityBooster;Lcom/android/server/ThreadPriorityBooster;
PLcom/android/server/am/ActivityManagerService;->retrieveSettings()V
PLcom/android/server/am/ActivityManagerService;->revokeUriPermission(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/net/Uri;II)V
-HPLcom/android/server/am/ActivityManagerService;->rotateBroadcastStatsIfNeededLocked()V
PLcom/android/server/am/ActivityManagerService;->scheduleApplicationInfoChanged(Ljava/util/List;I)V
-PLcom/android/server/am/ActivityManagerService;->scheduleAsFifoPriority(IZ)Z
-PLcom/android/server/am/ActivityManagerService;->schedulePendingSystemServerWtfs(Ljava/util/LinkedList;)V
-HSPLcom/android/server/am/ActivityManagerService;->scheduleUpdateBinderHeavyHitterWatcherConfig()V
-PLcom/android/server/am/ActivityManagerService;->sendBootBroadcastToAppLocked(Lcom/android/server/am/ProcessRecord;Landroid/content/Intent;I)V
-HPLcom/android/server/am/ActivityManagerService;->sendIntentSender(Landroid/app/IApplicationThread;Landroid/content/IIntentSender;Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I
+PLcom/android/server/am/ActivityManagerService;->scheduleAsFifoPriority(IZ)V
+PLcom/android/server/am/ActivityManagerService;->scheduleAsRegularPriority(IZ)V
+PLcom/android/server/am/ActivityManagerService;->sendBootBroadcastToAppLocked(Lcom/android/server/am/ProcessRecord;Landroid/content/Intent;)V
+PLcom/android/server/am/ActivityManagerService;->sendIntentSender(Landroid/app/IApplicationThread;Landroid/content/IIntentSender;Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I
HPLcom/android/server/am/ActivityManagerService;->serviceDoneExecuting(Landroid/os/IBinder;IIILandroid/content/Intent;)V
-HPLcom/android/server/am/ActivityManagerService;->setAppIdTempAllowlistStateLSP(IZ)V
-PLcom/android/server/am/ActivityManagerService;->setAppOpsPolicy(Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;)V
-PLcom/android/server/am/ActivityManagerService;->setHomeTimeout()V
-HSPLcom/android/server/am/ActivityManagerService;->setInstaller(Lcom/android/server/pm/Installer;)V
-HPLcom/android/server/am/ActivityManagerService;->setProcessTrackerStateLOSP(Lcom/android/server/am/ProcessRecord;I)V
-HPLcom/android/server/am/ActivityManagerService;->setRenderThread(I)V
+PLcom/android/server/am/ActivityManagerService;->setFifoPriority(Lcom/android/server/am/ProcessRecord;Z)V
+PLcom/android/server/am/ActivityManagerService;->setHasTopUi(Z)V
+PLcom/android/server/am/ActivityManagerService;->setProcessImportant(Landroid/os/IBinder;IZLjava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->setProcessStateSummary([B)V
+HPLcom/android/server/am/ActivityManagerService;->setProcessTrackerStateLOSP(ILcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService;->setRenderThread(I)V
PLcom/android/server/am/ActivityManagerService;->setServiceForeground(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;II)V
-HPLcom/android/server/am/ActivityManagerService;->setSystemProcess()V
-HSPLcom/android/server/am/ActivityManagerService;->setSystemServiceManager(Lcom/android/server/SystemServiceManager;)V
HPLcom/android/server/am/ActivityManagerService;->setUidTempAllowlistStateLSP(IZ)V
-PLcom/android/server/am/ActivityManagerService;->setUsageStatsManager(Landroid/app/usage/UsageStatsManagerInternal;)V
-PLcom/android/server/am/ActivityManagerService;->setVoiceInteractionManagerProvider(Landroid/app/ActivityManagerInternal$VoiceInteractionManagerProvider;)V
PLcom/android/server/am/ActivityManagerService;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
-HPLcom/android/server/am/ActivityManagerService;->shouldIgnoreDeliveryGroupPolicy(Ljava/lang/String;)Z
-PLcom/android/server/am/ActivityManagerService;->showConsoleNotificationIfActive()V
-PLcom/android/server/am/ActivityManagerService;->showMteOverrideNotificationIfActive()V
-HSPLcom/android/server/am/ActivityManagerService;->start()V
-HPLcom/android/server/am/ActivityManagerService;->startAssociationLocked(ILjava/lang/String;IIJLandroid/content/ComponentName;Ljava/lang/String;)Lcom/android/server/am/ActivityManagerService$Association;
-PLcom/android/server/am/ActivityManagerService;->startBroadcastObservers()V
-HPLcom/android/server/am/ActivityManagerService;->startInstrumentation(Landroid/content/ComponentName;Ljava/lang/String;ILandroid/os/Bundle;Landroid/app/IInstrumentationWatcher;Landroid/app/IUiAutomationConnection;ILjava/lang/String;)Z
-PLcom/android/server/am/ActivityManagerService;->startObservingNativeCrashes()V
-HPLcom/android/server/am/ActivityManagerService;->startPersistentApps(I)V
-HPLcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILcom/android/server/am/HostingRecord;IZZ)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ActivityManagerService;->startAssociationLocked(ILjava/lang/String;IILandroid/content/ComponentName;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->startPersistentApps(I)V
+PLcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILcom/android/server/am/HostingRecord;IZZ)Lcom/android/server/am/ProcessRecord;
HPLcom/android/server/am/ActivityManagerService;->startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;I)Landroid/content/ComponentName;
-HPLcom/android/server/am/ActivityManagerService;->startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;IZILjava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName;
-HPLcom/android/server/am/ActivityManagerService;->stopAssociationLocked(ILjava/lang/String;IJLandroid/content/ComponentName;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;IZILjava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName;+]Landroid/content/Intent;Landroid/content/Intent;
+PLcom/android/server/am/ActivityManagerService;->stopAppSwitches()V
+HPLcom/android/server/am/ActivityManagerService;->stopAssociationLocked(Landroid/content/ComponentName;Ljava/lang/String;II)V
PLcom/android/server/am/ActivityManagerService;->stopService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I
PLcom/android/server/am/ActivityManagerService;->stopService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IZILjava/lang/String;Ljava/lang/String;)I
HPLcom/android/server/am/ActivityManagerService;->stopServiceToken(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z
-HPLcom/android/server/am/ActivityManagerService;->systemReady(Ljava/lang/Runnable;Lcom/android/server/utils/TimingsTraceAndSlog;)V
-HPLcom/android/server/am/ActivityManagerService;->tempAllowlistUidLocked(IJILjava/lang/String;II)V
-HPLcom/android/server/am/ActivityManagerService;->traceBegin(JLjava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->trimApplications(ZI)V
-HPLcom/android/server/am/ActivityManagerService;->trimApplicationsLocked(ZI)V
-PLcom/android/server/am/ActivityManagerService;->uidOnBackgroundAllowlistLOSP(I)Z
-PLcom/android/server/am/ActivityManagerService;->unbindFinished(Landroid/os/IBinder;Landroid/content/Intent;Z)V
+PLcom/android/server/am/ActivityManagerService;->stringifyKBSize(J)Ljava/lang/String;
+PLcom/android/server/am/ActivityManagerService;->stringifySize(J)Ljava/lang/String;
+PLcom/android/server/am/ActivityManagerService;->systemReady(Lcom/android/server/SystemServer$$ExternalSyntheticLambda7;Lcom/android/server/utils/TimingsTraceAndSlog;)V
+PLcom/android/server/am/ActivityManagerService;->tempAllowlistForPendingIntentLocked(IIIJIILjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->tempAllowlistUidLocked(IILjava/lang/String;IJI)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;
+PLcom/android/server/am/ActivityManagerService;->traceBegin(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->trimApplicationsLocked(IZ)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/am/ActivityManagerService;->unbindBackupAgent(Landroid/content/pm/ApplicationInfo;)V
+PLcom/android/server/am/ActivityManagerService;->unbindFinished(Landroid/os/IBinder;Landroid/content/Intent;)V
HPLcom/android/server/am/ActivityManagerService;->unbindService(Landroid/app/IServiceConnection;)Z
+PLcom/android/server/am/ActivityManagerService;->unlockUser2(ILandroid/os/IProgressListener;)Z
HPLcom/android/server/am/ActivityManagerService;->unregisterReceiver(Landroid/content/IIntentReceiver;)V
-PLcom/android/server/am/ActivityManagerService;->unstableProviderDied(Landroid/os/IBinder;)V
-PLcom/android/server/am/ActivityManagerService;->updateActivityUsageStats(Landroid/content/ComponentName;IILandroid/os/IBinder;Landroid/content/ComponentName;Landroid/app/assist/ActivityId;)V
-PLcom/android/server/am/ActivityManagerService;->updateAppProcessCpuTimeLPr(JZJILcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ActivityManagerService;->updateApplicationInfoLOSP(Ljava/util/List;ZI)V
-PLcom/android/server/am/ActivityManagerService;->updateBatteryStats(Landroid/content/ComponentName;IIZ)V
+PLcom/android/server/am/ActivityManagerService;->updateApplicationInfoLOSP(ILjava/util/List;Z)V
+PLcom/android/server/am/ActivityManagerService;->updateAssociationForApp(Landroid/content/pm/ApplicationInfo;)V
+PLcom/android/server/am/ActivityManagerService;->updateConfiguration(Landroid/content/res/Configuration;)Z
HPLcom/android/server/am/ActivityManagerService;->updateCpuStats()V
PLcom/android/server/am/ActivityManagerService;->updateCpuStatsNow()V
PLcom/android/server/am/ActivityManagerService;->updateForceBackgroundCheck(Z)V
PLcom/android/server/am/ActivityManagerService;->updateForegroundServiceUsageStats(Landroid/content/ComponentName;IZ)V
-HPLcom/android/server/am/ActivityManagerService;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;ZLcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ActivityManagerService;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;Z)V
HSPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(I)V
-HPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;I)Z
+PLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(ILcom/android/server/am/ProcessRecord;)V
HPLcom/android/server/am/ActivityManagerService;->updateOomAdjPendingTargetsLocked(I)V
-PLcom/android/server/am/ActivityManagerService;->updatePhantomProcessCpuTimeLPr(JZJILcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/ActivityManagerService;->updateProcessForegroundLocked(Lcom/android/server/am/ProcessRecord;ZIZZ)V
-HPLcom/android/server/am/ActivityManagerService;->validateAssociationAllowedLocked(Ljava/lang/String;ILjava/lang/String;I)Z
-PLcom/android/server/am/ActivityManagerService;->validateServiceInstanceName(Ljava/lang/String;)V
-HPLcom/android/server/am/ActivityManagerService;->verifyBroadcastLocked(Landroid/content/Intent;)Landroid/content/Intent;
-PLcom/android/server/am/ActivityManagerService;->watchDeviceProvisioning(Landroid/content/Context;)V
+HPLcom/android/server/am/ActivityManagerService;->updateProcessForegroundLocked(ILcom/android/server/am/ProcessRecord;ZZZ)V+]Landroid/app/ActivityManagerInternal$ForegroundServiceStateListener;Lcom/android/server/am/AppFGSTracker;]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ActivityManagerService;->validateAssociationAllowedLocked(IILjava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/am/ActivityManagerService;->waitForNetworkStateUpdate(J)V
PLcom/android/server/am/ActivityManagerShellCommand$1;-><init>(Lcom/android/server/am/ActivityManagerShellCommand;)V
+PLcom/android/server/am/ActivityManagerShellCommand$1;->handleOption(Ljava/lang/String;Landroid/os/ShellCommand;)Z
PLcom/android/server/am/ActivityManagerShellCommand$IntentReceiver;-><init>(Ljava/io/PrintWriter;)V
PLcom/android/server/am/ActivityManagerShellCommand$IntentReceiver;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
-PLcom/android/server/am/ActivityManagerShellCommand$IntentReceiver;->waitForFinish()V
PLcom/android/server/am/ActivityManagerShellCommand;-><clinit>()V
PLcom/android/server/am/ActivityManagerShellCommand;-><init>(Lcom/android/server/am/ActivityManagerService;Z)V
-PLcom/android/server/am/ActivityManagerShellCommand;->makeIntent(I)Landroid/content/Intent;
+PLcom/android/server/am/ActivityManagerShellCommand;->makeIntent()Landroid/content/Intent;
PLcom/android/server/am/ActivityManagerShellCommand;->onCommand(Ljava/lang/String;)I
-PLcom/android/server/am/ActivityManagerShellCommand;->runForceStop(Ljava/io/PrintWriter;)I
-HPLcom/android/server/am/ActivityManagerShellCommand;->runSendBroadcast(Ljava/io/PrintWriter;)I
+PLcom/android/server/am/ActivityManagerShellCommand;->runSendBroadcast(Ljava/io/PrintWriter;)V
PLcom/android/server/am/ActivityManagerUtils;-><clinit>()V
-PLcom/android/server/am/ActivityManagerUtils;->extractByte([BI)I
+PLcom/android/server/am/ActivityManagerUtils;->extractByte(I[B)I
PLcom/android/server/am/ActivityManagerUtils;->getAndroidIdHash()I
PLcom/android/server/am/ActivityManagerUtils;->getUnsignedHashCached(Ljava/lang/String;)I
PLcom/android/server/am/ActivityManagerUtils;->getUnsignedHashUnCached(Ljava/lang/String;)I
-PLcom/android/server/am/ActivityManagerUtils;->logUnsafeIntentEvent(IILandroid/content/Intent;Ljava/lang/String;Z)V
-PLcom/android/server/am/ActivityManagerUtils;->shouldSamplePackageForAtom(Ljava/lang/String;F)Z
+PLcom/android/server/am/ActivityManagerUtils;->shouldSamplePackageForAtom(FLjava/lang/String;)Z
PLcom/android/server/am/ActivityManagerUtils;->unsignedIntFromBytes([B)I
-HSPLcom/android/server/am/AnrHelper$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/am/AnrHelper$$ExternalSyntheticLambda0;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;
-HSPLcom/android/server/am/AnrHelper$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/am/AnrHelper$$ExternalSyntheticLambda1;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;
-PLcom/android/server/am/AnrHelper$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/am/AnrHelper;ILcom/android/internal/os/TimeoutRecord;)V
-PLcom/android/server/am/AnrHelper$$ExternalSyntheticLambda2;->call()Ljava/lang/Object;
-PLcom/android/server/am/AnrHelper$AnrConsumerThread;-><init>(Lcom/android/server/am/AnrHelper;)V
-PLcom/android/server/am/AnrHelper$AnrConsumerThread;->next()Lcom/android/server/am/AnrHelper$AnrRecord;
-PLcom/android/server/am/AnrHelper$AnrConsumerThread;->run()V
-PLcom/android/server/am/AnrHelper$AnrRecord;-><init>(Lcom/android/server/am/AnrHelper;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Lcom/android/server/wm/WindowProcessController;ZLcom/android/internal/os/TimeoutRecord;ZLjava/util/concurrent/Future;)V
-PLcom/android/server/am/AnrHelper$AnrRecord;->appNotResponding(Z)V
-PLcom/android/server/am/AnrHelper;->$r8$lambda$o4U1b8DdepzPilDk5ASRfiFAv34(Lcom/android/server/am/AnrHelper;ILcom/android/internal/os/TimeoutRecord;)Ljava/io/File;
-PLcom/android/server/am/AnrHelper;->$r8$lambda$w_5HmdP7xJVX9IY4uygDlAQ5zxQ(Ljava/lang/Runnable;)Ljava/lang/Thread;
-PLcom/android/server/am/AnrHelper;->$r8$lambda$y7RFlsVN6Rac_UO6nHdK_btKHW0(Ljava/lang/Runnable;)Ljava/lang/Thread;
-PLcom/android/server/am/AnrHelper;->-$$Nest$fgetmAnrRecords(Lcom/android/server/am/AnrHelper;)Ljava/util/ArrayList;
-PLcom/android/server/am/AnrHelper;->-$$Nest$fgetmAuxiliaryTaskExecutor(Lcom/android/server/am/AnrHelper;)Ljava/util/concurrent/ExecutorService;
-PLcom/android/server/am/AnrHelper;->-$$Nest$fgetmRunning(Lcom/android/server/am/AnrHelper;)Ljava/util/concurrent/atomic/AtomicBoolean;
-PLcom/android/server/am/AnrHelper;->-$$Nest$fputmProcessingPid(Lcom/android/server/am/AnrHelper;I)V
-PLcom/android/server/am/AnrHelper;->-$$Nest$mscheduleBinderHeavyHitterAutoSamplerIfNecessary(Lcom/android/server/am/AnrHelper;)V
-PLcom/android/server/am/AnrHelper;->-$$Nest$sfgetEXPIRED_REPORT_TIME_MS()J
-PLcom/android/server/am/AnrHelper;->-$$Nest$sfgetSELF_ONLY_AFTER_BOOT_MS()J
+HSPLcom/android/server/am/AnrHelper$$ExternalSyntheticLambda0;-><init>(I)V
HSPLcom/android/server/am/AnrHelper;-><clinit>()V
HSPLcom/android/server/am/AnrHelper;-><init>(Lcom/android/server/am/ActivityManagerService;)V
HSPLcom/android/server/am/AnrHelper;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/util/concurrent/ExecutorService;Ljava/util/concurrent/ExecutorService;)V
-PLcom/android/server/am/AnrHelper;->appNotResponding(Lcom/android/server/am/ProcessRecord;Lcom/android/internal/os/TimeoutRecord;)V
-PLcom/android/server/am/AnrHelper;->appNotResponding(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Lcom/android/server/wm/WindowProcessController;ZLcom/android/internal/os/TimeoutRecord;Z)V
-PLcom/android/server/am/AnrHelper;->lambda$appNotResponding$2(ILcom/android/internal/os/TimeoutRecord;)Ljava/io/File;
-PLcom/android/server/am/AnrHelper;->lambda$static$0(Ljava/lang/Runnable;)Ljava/lang/Thread;
-PLcom/android/server/am/AnrHelper;->lambda$static$1(Ljava/lang/Runnable;)Ljava/lang/Thread;
-HSPLcom/android/server/am/AnrHelper;->makeExpiringThreadPoolWithSize(ILjava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ThreadPoolExecutor;
-PLcom/android/server/am/AnrHelper;->scheduleBinderHeavyHitterAutoSamplerIfNecessary()V
-PLcom/android/server/am/AnrHelper;->startAnrConsumerIfNeeded()V
-PLcom/android/server/am/AppBatteryExemptionTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/AppBatteryExemptionTracker;)V
-PLcom/android/server/am/AppBatteryExemptionTracker$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
PLcom/android/server/am/AppBatteryExemptionTracker$AppBatteryExemptionPolicy$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/AppBatteryExemptionTracker;)V
PLcom/android/server/am/AppBatteryExemptionTracker$AppBatteryExemptionPolicy$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/am/AppBatteryExemptionTracker$AppBatteryExemptionPolicy;->$r8$lambda$jMixVCQDkf-BsCQ_bwWqAgEzrk0(Lcom/android/server/am/AppBatteryExemptionTracker;)V
-HSPLcom/android/server/am/AppBatteryExemptionTracker$AppBatteryExemptionPolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/AppBatteryExemptionTracker;)V
-PLcom/android/server/am/AppBatteryExemptionTracker$AppBatteryExemptionPolicy;->onMaxTrackingDurationChanged(J)V
-PLcom/android/server/am/AppBatteryExemptionTracker;->$r8$lambda$iWmJGcyLLkDvNkQor9pOnxtCJY0(Lcom/android/server/am/AppBatteryExemptionTracker;Lcom/android/server/am/BaseAppStateTracker;)V
-PLcom/android/server/am/AppBatteryExemptionTracker;->-$$Nest$mtrimDurations(Lcom/android/server/am/AppBatteryExemptionTracker;)V
-HSPLcom/android/server/am/AppBatteryExemptionTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;)V
-HSPLcom/android/server/am/AppBatteryExemptionTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
-PLcom/android/server/am/AppBatteryExemptionTracker;->lambda$onSystemReady$0(Lcom/android/server/am/BaseAppStateTracker;)V
-PLcom/android/server/am/AppBatteryExemptionTracker;->onStateChange(ILjava/lang/String;ZJI)V
+PLcom/android/server/am/AppBatteryExemptionTracker$AppBatteryExemptionPolicy;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/am/AppBatteryExemptionTracker$AppBatteryExemptionPolicy;->onMaxTrackingDurationChanged()V
+PLcom/android/server/am/AppBatteryExemptionTracker;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/am/AppBatteryExemptionTracker;->onStateChange(IIJLjava/lang/String;Z)V
PLcom/android/server/am/AppBatteryExemptionTracker;->onSystemReady()V
-PLcom/android/server/am/AppBatteryExemptionTracker;->trimDurations()V
-HSPLcom/android/server/am/AppBatteryTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/AppBatteryTracker;)V
-HSPLcom/android/server/am/AppBatteryTracker$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/AppBatteryTracker;)V
+HSPLcom/android/server/am/AppBatteryTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/AppBatteryTracker;I)V
+PLcom/android/server/am/AppBatteryTracker$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/am/AppBatteryTracker$$ExternalSyntheticLambda2;-><init>(Ljava/util/concurrent/CountDownLatch;)V
+PLcom/android/server/am/AppBatteryTracker$$ExternalSyntheticLambda2;->queueIdle()Z
+PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy$$ExternalSyntheticOutline0;->m(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Z)V
HSPLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/AppBatteryTracker;)V
+PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->getCurrentDrainThresholdIndex(IJJ)I
HSPLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->getFloatArray(Landroid/content/res/TypedArray;)[F
-PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->getProposedRestrictionLevel(Ljava/lang/String;II)I
+PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->getProposedRestrictionLevel(IILjava/lang/String;)I
+PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->handleUidBatteryUsage(ILcom/android/server/am/AppBatteryTracker$ImmutableBatteryUsage;)V
PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->onSystemReady()V
-PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->onUserInteractionStarted(Ljava/lang/String;I)V
-PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->updateBgCurrentDrainAutoRestrictAbusiveAppsEnabled()V
-PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->updateCurrentDrainDecoupleThresholds()V
-PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->updateCurrentDrainEventDurationBasedThresholdEnabled()V
-PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->updateCurrentDrainExemptedTypes()V
-PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->updateCurrentDrainInteractionGracePeriod()V
-PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->updateCurrentDrainLocationMinDuration()V
-PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->updateCurrentDrainMediaPlaybackMinDuration()V
PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->updateCurrentDrainThreshold()V
-PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->updateCurrentDrainWindow()V
PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->updateTrackerEnabled()V
HSPLcom/android/server/am/AppBatteryTracker$BatteryUsage;-><clinit>()V
HSPLcom/android/server/am/AppBatteryTracker$BatteryUsage;-><init>()V
-HSPLcom/android/server/am/AppBatteryTracker$BatteryUsage;-><init>(DDDDD)V
-HSPLcom/android/server/am/AppBatteryTracker$ImmutableBatteryUsage;-><init>()V
+PLcom/android/server/am/AppBatteryTracker$BatteryUsage;-><init>(Lcom/android/server/am/AppBatteryTracker$BatteryUsage;)V
+PLcom/android/server/am/AppBatteryTracker$BatteryUsage;->calcPercentage(ILcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;)V
+PLcom/android/server/am/AppBatteryTracker$BatteryUsage;->percentageToString()Ljava/lang/String;
+PLcom/android/server/am/AppBatteryTracker$BatteryUsage;->scaleInternal(D)V
+PLcom/android/server/am/AppBatteryTracker$BatteryUsage;->subtract(Lcom/android/server/am/AppBatteryTracker$BatteryUsage;)Lcom/android/server/am/AppBatteryTracker$BatteryUsage;
+PLcom/android/server/am/AppBatteryTracker$BatteryUsage;->toString()Ljava/lang/String;
HSPLcom/android/server/am/AppBatteryTracker;-><clinit>()V
HSPLcom/android/server/am/AppBatteryTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;)V
-HSPLcom/android/server/am/AppBatteryTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
+PLcom/android/server/am/AppBatteryTracker;->checkBatteryUsageStats()V
+PLcom/android/server/am/AppBatteryTracker;->copyUidBatteryUsage(Landroid/util/SparseArray;Landroid/util/SparseArray;)V
+PLcom/android/server/am/AppBatteryTracker;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
PLcom/android/server/am/AppBatteryTracker;->onSystemReady()V
PLcom/android/server/am/AppBatteryTracker;->onUserInteractionStarted(Ljava/lang/String;I)V
PLcom/android/server/am/AppBatteryTracker;->scheduleBatteryUsageStatsUpdateIfNecessary(J)V
+PLcom/android/server/am/AppBatteryTracker;->scheduleBgBatteryUsageStatsCheck()V
+PLcom/android/server/am/AppBatteryTracker;->updateBatteryUsageStatsIfNecessary(JZ)Z
+PLcom/android/server/am/AppBatteryTracker;->updateBatteryUsageStatsOnce(J)V
+PLcom/android/server/am/AppBatteryTracker;->updateBatteryUsageStatsOnceInternal(JLandroid/util/SparseArray;Landroid/os/BatteryUsageStatsQuery$Builder;Landroid/util/ArraySet;Landroid/os/BatteryStatsInternal;)Landroid/os/BatteryUsageStats;
HPLcom/android/server/am/AppBindRecord;-><init>(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/AppBindRecord;->dumpInIntentBind(Ljava/io/PrintWriter;Ljava/lang/String;)V
-HSPLcom/android/server/am/AppBindServiceEventsTracker$AppBindServiceEventsPolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/AppBindServiceEventsTracker;)V
-HSPLcom/android/server/am/AppBindServiceEventsTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;)V
-HSPLcom/android/server/am/AppBindServiceEventsTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
+PLcom/android/server/am/AppBindRecord;->toString()Ljava/lang/String;
+PLcom/android/server/am/AppBindServiceEventsTracker$AppBindServiceEventsPolicy;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
PLcom/android/server/am/AppBindServiceEventsTracker;->createAppStateEvents(ILjava/lang/String;)Lcom/android/server/am/BaseAppStateEvents;
-HPLcom/android/server/am/AppBindServiceEventsTracker;->createAppStateEvents(ILjava/lang/String;)Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;
+PLcom/android/server/am/AppBindServiceEventsTracker;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
PLcom/android/server/am/AppBindServiceEventsTracker;->getTrackerInfoForStatsd(I)[B
PLcom/android/server/am/AppBindServiceEventsTracker;->getType()I
HPLcom/android/server/am/AppBindServiceEventsTracker;->onBindingService(Ljava/lang/String;I)V
PLcom/android/server/am/AppBindServiceEventsTracker;->onSystemReady()V
-HSPLcom/android/server/am/AppBroadcastEventsTracker$AppBroadcastEventsPolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/AppBroadcastEventsTracker;)V
-HSPLcom/android/server/am/AppBroadcastEventsTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;)V
-HSPLcom/android/server/am/AppBroadcastEventsTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
+PLcom/android/server/am/AppBroadcastEventsTracker$AppBroadcastEventsPolicy;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
PLcom/android/server/am/AppBroadcastEventsTracker;->createAppStateEvents(ILjava/lang/String;)Lcom/android/server/am/BaseAppStateEvents;
-PLcom/android/server/am/AppBroadcastEventsTracker;->createAppStateEvents(ILjava/lang/String;)Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;
+PLcom/android/server/am/AppBroadcastEventsTracker;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
HPLcom/android/server/am/AppBroadcastEventsTracker;->onSendingBroadcast(Ljava/lang/String;I)V
PLcom/android/server/am/AppBroadcastEventsTracker;->onSystemReady()V
HSPLcom/android/server/am/AppErrors;-><init>(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;Lcom/android/server/PackageWatchdog;)V
-HPLcom/android/server/am/AppErrors;->isBadProcess(Ljava/lang/String;I)Z
-PLcom/android/server/am/AppErrors;->loadAppsNotReportingCrashesFromConfig(Ljava/lang/String;)V
-HPLcom/android/server/am/AppErrors;->resetProcessCrashTime(Ljava/lang/String;I)V
-PLcom/android/server/am/AppErrors;->resetProcessCrashTime(ZII)V
-PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/AppExitInfoTracker;ILjava/util/ArrayList;I)V
-HPLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda12;-><init>()V
-PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda15;-><init>(Lcom/android/server/am/AppExitInfoTracker;)V
-PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda15;->run()V
-PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/am/AppExitInfoTracker;)V
-PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda16;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HPLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda17;-><init>(Lcom/android/server/am/AppExitInfoTracker;ILjava/util/ArrayList;ILjava/lang/Integer;Ljava/lang/Integer;)V
-HPLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda17;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/am/AppExitInfoTracker;)V
-PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda7;-><init>()V
-PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda7;->get()Ljava/lang/Object;
-PLcom/android/server/am/AppExitInfoTracker$1;-><init>(Lcom/android/server/am/AppExitInfoTracker;)V
-PLcom/android/server/am/AppExitInfoTracker$2;-><init>(Lcom/android/server/am/AppExitInfoTracker;)V
-PLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->$r8$lambda$Y4wPp1NAYnFwArAHF0m1DTLetnA(Landroid/app/ApplicationExitInfo;Landroid/app/ApplicationExitInfo;)I
-PLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->-$$Nest$fputmUid(Lcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;I)V
-HPLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;-><init>(Lcom/android/server/am/AppExitInfoTracker;I)V
+PLcom/android/server/am/AppErrors;->dumpDebugLPr(Landroid/util/proto/ProtoOutputStream;Ljava/lang/String;)V
+PLcom/android/server/am/AppErrors;->dumpLPr(Ljava/io/PrintWriter;Ljava/lang/String;Z)Z
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/AppExitInfoTracker;I)V
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda10;-><init>(I)V
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda10;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/am/AppExitInfoTracker;Ljava/io/PrintWriter;Landroid/icu/text/SimpleDateFormat;)V
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda12;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/am/AppExitInfoTracker;II[ZLjava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Long;)V
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda14;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda5;->get()Ljava/lang/Object;
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda6;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda6;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda7;-><init>(Landroid/util/ArraySet;)V
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda7;->accept(Ljava/io/File;)Z
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda9;-><init>(IILjava/util/List;)V
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda9;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/am/AppExitInfoTracker$1;-><init>(Lcom/android/server/am/AppExitInfoTracker;I)V
+PLcom/android/server/am/AppExitInfoTracker$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;-><init>(Lcom/android/server/am/AppExitInfoTracker;I)V
PLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->addExitInfoLocked(Landroid/app/ApplicationExitInfo;)V
-HPLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->addInfoLocked(Landroid/util/SparseArray;Landroid/app/ApplicationExitInfo;)V
-PLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->getExitInfoLocked(IILjava/util/ArrayList;)V
-PLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->getInfosLocked(Landroid/util/SparseArray;IILjava/util/ArrayList;)V
-PLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->lambda$getInfosLocked$0(Landroid/app/ApplicationExitInfo;Landroid/app/ApplicationExitInfo;)I
-PLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->toListLocked(Ljava/util/List;I)Ljava/util/List;
-HSPLcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;-><init>(Lcom/android/server/am/AppExitInfoTracker;Ljava/lang/String;Ljava/lang/Integer;)V
-HPLcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;->addLocked(IILjava/lang/Object;)V
-HPLcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;->onProcDied(IILjava/lang/Integer;)V
-HPLcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;->remove(II)Landroid/util/Pair;
+HPLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->getExitInfosLocked(IILjava/util/List;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;-><init>(Lcom/android/server/am/AppExitInfoTracker;Ljava/lang/Integer;)V
+PLcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;->addLocked(IILjava/lang/Object;)V
+PLcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;->onProcDied(IILjava/lang/Integer;Ljava/lang/Long;)V
+PLcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;->remove(II)Landroid/util/Pair;
HSPLcom/android/server/am/AppExitInfoTracker$AppTraceRetriever;-><init>(Lcom/android/server/am/AppExitInfoTracker;)V
HSPLcom/android/server/am/AppExitInfoTracker$IsolatedUidRecords;-><init>(Lcom/android/server/am/AppExitInfoTracker;)V
PLcom/android/server/am/AppExitInfoTracker$IsolatedUidRecords;->getUidByIsolatedUid(I)Ljava/lang/Integer;
-PLcom/android/server/am/AppExitInfoTracker$IsolatedUidRecords;->removeIsolatedUidLocked(I)I
HSPLcom/android/server/am/AppExitInfoTracker$KillHandler;-><init>(Lcom/android/server/am/AppExitInfoTracker;Landroid/os/Looper;)V
-HPLcom/android/server/am/AppExitInfoTracker$KillHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/am/AppExitInfoTracker;->$r8$lambda$4bSqVHM7qj6v6DxMNp66FfiZ0SQ(Lcom/android/server/am/AppExitInfoTracker;ILjava/util/ArrayList;ILjava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;
-PLcom/android/server/am/AppExitInfoTracker;->$r8$lambda$8ldOFQfwVDb6WsbCLIHcgkKxIAI(Lcom/android/server/am/AppExitInfoTracker;ILjava/util/ArrayList;ILjava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;
-PLcom/android/server/am/AppExitInfoTracker;->$r8$lambda$h-8YP32HtmCPcUbOWTowipwKDNc(Lcom/android/server/am/AppExitInfoTracker;)V
-HPLcom/android/server/am/AppExitInfoTracker;->-$$Nest$fgetmLock(Lcom/android/server/am/AppExitInfoTracker;)Ljava/lang/Object;
-PLcom/android/server/am/AppExitInfoTracker;->-$$Nest$fgetmService(Lcom/android/server/am/AppExitInfoTracker;)Lcom/android/server/am/ActivityManagerService;
-PLcom/android/server/am/AppExitInfoTracker;->-$$Nest$mupdateExitInfoIfNecessaryLocked(Lcom/android/server/am/AppExitInfoTracker;IILjava/lang/Integer;Ljava/lang/Integer;)Z
-PLcom/android/server/am/AppExitInfoTracker;->-$$Nest$smfindAndRemoveFromSparse2dArray(Landroid/util/SparseArray;II)Ljava/lang/Object;
+PLcom/android/server/am/AppExitInfoTracker$KillHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/am/AppExitInfoTracker;->-$$Nest$smfindAndRemoveFromSparse2dArray(IILandroid/util/SparseArray;)Ljava/lang/Object;
HSPLcom/android/server/am/AppExitInfoTracker;-><clinit>()V
HSPLcom/android/server/am/AppExitInfoTracker;-><init>()V
-HPLcom/android/server/am/AppExitInfoTracker;->addExitInfoInnerLocked(Ljava/lang/String;ILandroid/app/ApplicationExitInfo;Z)V
+PLcom/android/server/am/AppExitInfoTracker;->addExitInfoInnerLocked(Ljava/lang/String;ILandroid/app/ApplicationExitInfo;)V
PLcom/android/server/am/AppExitInfoTracker;->addExitInfoLocked(Landroid/app/ApplicationExitInfo;)Landroid/app/ApplicationExitInfo;
-HPLcom/android/server/am/AppExitInfoTracker;->addExitInfoLocked(Landroid/app/ApplicationExitInfo;Z)Landroid/app/ApplicationExitInfo;
-PLcom/android/server/am/AppExitInfoTracker;->copyToGzFile(Ljava/io/File;Ljava/io/File;JJ)Z
-PLcom/android/server/am/AppExitInfoTracker;->findAndRemoveFromSparse2dArray(Landroid/util/SparseArray;II)Ljava/lang/Object;
-HPLcom/android/server/am/AppExitInfoTracker;->forEachPackageLocked(Ljava/util/function/BiFunction;)V
-HPLcom/android/server/am/AppExitInfoTracker;->getExitInfo(Ljava/lang/String;IIILjava/util/ArrayList;)V
-HPLcom/android/server/am/AppExitInfoTracker;->getExitInfoLocked(Ljava/lang/String;II)Landroid/app/ApplicationExitInfo;
-PLcom/android/server/am/AppExitInfoTracker;->handleLogAnrTrace(II[Ljava/lang/String;Ljava/io/File;JJ)V
+PLcom/android/server/am/AppExitInfoTracker;->dumpHistoryProcessExitInfo(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/am/AppExitInfoTracker;->dumpHistoryProcessExitInfoLocked(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/SparseArray;Landroid/icu/text/SimpleDateFormat;)V
+HPLcom/android/server/am/AppExitInfoTracker;->forEachPackageLocked(Ljava/util/function/BiFunction;)V+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Ljava/util/function/BiFunction;Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda14;,Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda6;,Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda9;
+PLcom/android/server/am/AppExitInfoTracker;->getExitInfo(Ljava/lang/String;IIILjava/util/List;)V
+PLcom/android/server/am/AppExitInfoTracker;->getExitInfoLocked(IILjava/lang/String;)Landroid/app/ApplicationExitInfo;
PLcom/android/server/am/AppExitInfoTracker;->handleNoteAppKillLocked(Landroid/app/ApplicationExitInfo;)V
HPLcom/android/server/am/AppExitInfoTracker;->handleNoteProcessDiedLocked(Landroid/app/ApplicationExitInfo;)V
-PLcom/android/server/am/AppExitInfoTracker;->handleZygoteSigChld(III)V
-HSPLcom/android/server/am/AppExitInfoTracker;->init(Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/am/AppExitInfoTracker;->isFresh(J)Z
-HPLcom/android/server/am/AppExitInfoTracker;->lambda$getExitInfo$3(ILjava/util/ArrayList;ILjava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;
-PLcom/android/server/am/AppExitInfoTracker;->lambda$onSystemReady$0()V
-HPLcom/android/server/am/AppExitInfoTracker;->lambda$updateExitInfoIfNecessaryLocked$2(ILjava/util/ArrayList;ILjava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;
PLcom/android/server/am/AppExitInfoTracker;->loadExistingProcessExitInfo()V
+PLcom/android/server/am/AppExitInfoTracker;->loadPackagesFromProto(Landroid/util/proto/ProtoInputStream;J)V
HPLcom/android/server/am/AppExitInfoTracker;->obtainRawRecord(Lcom/android/server/am/ProcessRecord;J)Landroid/app/ApplicationExitInfo;
-PLcom/android/server/am/AppExitInfoTracker;->onSystemReady()V
-HPLcom/android/server/am/AppExitInfoTracker;->performLogToStatsdLocked(Landroid/app/ApplicationExitInfo;)V
-PLcom/android/server/am/AppExitInfoTracker;->putToSparse2dArray(Landroid/util/SparseArray;IILjava/lang/Object;Ljava/util/function/Supplier;Ljava/util/function/Consumer;)V
-HPLcom/android/server/am/AppExitInfoTracker;->recycleRawRecord(Landroid/app/ApplicationExitInfo;)V
-PLcom/android/server/am/AppExitInfoTracker;->registerForPackageRemoval()V
-PLcom/android/server/am/AppExitInfoTracker;->registerForUserRemoval()V
-PLcom/android/server/am/AppExitInfoTracker;->scheduleChildProcDied(III)V
-PLcom/android/server/am/AppExitInfoTracker;->scheduleLogAnrTrace(II[Ljava/lang/String;Ljava/io/File;JJ)V
-HPLcom/android/server/am/AppExitInfoTracker;->scheduleLogToStatsdLocked(Landroid/app/ApplicationExitInfo;Z)V
+PLcom/android/server/am/AppExitInfoTracker;->performLogToStatsdLocked(Landroid/app/ApplicationExitInfo;)V
+PLcom/android/server/am/AppExitInfoTracker;->persistProcessExitInfo()V
+PLcom/android/server/am/AppExitInfoTracker;->pruneAnrTracesIfNecessaryLocked()V
+PLcom/android/server/am/AppExitInfoTracker;->putToSparse2dArray(Landroid/util/SparseArray;IILjava/lang/Object;Ljava/util/function/Supplier;Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda3;)V
+PLcom/android/server/am/AppExitInfoTracker;->recycleRawRecord(Landroid/app/ApplicationExitInfo;)V
+PLcom/android/server/am/AppExitInfoTracker;->scheduleLogToStatsdLocked(Landroid/app/ApplicationExitInfo;Z)V
PLcom/android/server/am/AppExitInfoTracker;->scheduleNoteAppKill(Lcom/android/server/am/ProcessRecord;IILjava/lang/String;)V
-HPLcom/android/server/am/AppExitInfoTracker;->scheduleNoteLmkdProcKilled(II)V
-HPLcom/android/server/am/AppExitInfoTracker;->scheduleNoteProcessDied(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/AppExitInfoTracker;->schedulePersistProcessExitInfo(Z)V
-HPLcom/android/server/am/AppExitInfoTracker;->updateExistingExitInfoRecordLocked(Landroid/app/ApplicationExitInfo;Ljava/lang/Integer;Ljava/lang/Integer;)V
-HPLcom/android/server/am/AppExitInfoTracker;->updateExitInfoIfNecessaryLocked(IILjava/lang/Integer;Ljava/lang/Integer;)Z
+PLcom/android/server/am/AppExitInfoTracker;->schedulePersistProcessExitInfo(Z)V
+PLcom/android/server/am/AppExitInfoTracker;->setProcessStateSummary(II[B)V
+PLcom/android/server/am/AppExitInfoTracker;->updateExistingExitInfoRecordLocked(Landroid/app/ApplicationExitInfo;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Long;)V
HSPLcom/android/server/am/AppFGSTracker$1;-><init>(Lcom/android/server/am/AppFGSTracker;)V
PLcom/android/server/am/AppFGSTracker$1;->onForegroundActivitiesChanged(IIZ)V
PLcom/android/server/am/AppFGSTracker$1;->onForegroundServicesChanged(III)V
PLcom/android/server/am/AppFGSTracker$1;->onProcessDied(II)V
-HSPLcom/android/server/am/AppFGSTracker$AppFGSPolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/AppFGSTracker;)V
-PLcom/android/server/am/AppFGSTracker$AppFGSPolicy;->getFgsLongRunningThreshold()J
-PLcom/android/server/am/AppFGSTracker$AppFGSPolicy;->onMaxTrackingDurationChanged(J)V
+PLcom/android/server/am/AppFGSTracker$AppFGSPolicy;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/am/AppFGSTracker$AppFGSPolicy;->getExemptionReasonString(IILjava/lang/String;)Ljava/lang/String;
+PLcom/android/server/am/AppFGSTracker$AppFGSPolicy;->onMaxTrackingDurationChanged()V
PLcom/android/server/am/AppFGSTracker$AppFGSPolicy;->onSystemReady()V
PLcom/android/server/am/AppFGSTracker$AppFGSPolicy;->onTrackerEnabled(Z)V
-PLcom/android/server/am/AppFGSTracker$AppFGSPolicy;->updateBgFgsLocationThreshold()V
-PLcom/android/server/am/AppFGSTracker$AppFGSPolicy;->updateBgFgsLongRunningThreshold()V
-PLcom/android/server/am/AppFGSTracker$AppFGSPolicy;->updateBgFgsMediaPlaybackThreshold()V
+PLcom/android/server/am/AppFGSTracker$AppFGSPolicy;->shouldExemptMediaPlaybackFGS(IJJLjava/lang/String;)Z
HSPLcom/android/server/am/AppFGSTracker$MyHandler;-><init>(Lcom/android/server/am/AppFGSTracker;)V
HPLcom/android/server/am/AppFGSTracker$MyHandler;->handleMessage(Landroid/os/Message;)V
HSPLcom/android/server/am/AppFGSTracker$NotificationListener;-><init>(Lcom/android/server/am/AppFGSTracker;)V
-PLcom/android/server/am/AppFGSTracker$NotificationListener;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;)V
+HPLcom/android/server/am/AppFGSTracker$NotificationListener;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;)V
+PLcom/android/server/am/AppFGSTracker$NotificationListener;->onNotificationRemoved(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;I)V
PLcom/android/server/am/AppFGSTracker$PackageDurations;-><clinit>()V
-PLcom/android/server/am/AppFGSTracker$PackageDurations;-><init>(ILjava/lang/String;Lcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;Lcom/android/server/am/AppFGSTracker;)V
+PLcom/android/server/am/AppFGSTracker$PackageDurations;-><init>(ILjava/lang/String;Lcom/android/server/am/BaseAppStateEventsTracker$BaseAppStateEventsPolicy;Lcom/android/server/am/AppFGSTracker;)V
PLcom/android/server/am/AppFGSTracker$PackageDurations;-><init>(Lcom/android/server/am/AppFGSTracker$PackageDurations;)V
-PLcom/android/server/am/AppFGSTracker$PackageDurations;->addEvent(ZJ)V
-PLcom/android/server/am/AppFGSTracker$PackageDurations;->hasForegroundServices()Z
-PLcom/android/server/am/AppFGSTracker$PackageDurations;->isLongRunning()Z
-PLcom/android/server/am/AppFGSTracker$PackageDurations;->notifyListenersOnStateChangeIfNecessary(ZJI)V
+PLcom/android/server/am/AppFGSTracker$PackageDurations;->addEvent(JZ)V
+PLcom/android/server/am/AppFGSTracker$PackageDurations;->formatEventTypeLabel(I)Ljava/lang/String;
+PLcom/android/server/am/AppFGSTracker$PackageDurations;->notifyListenersOnStateChangeIfNecessary(IJZ)V
PLcom/android/server/am/AppFGSTracker$PackageDurations;->setForegroundServiceType(IJ)V
-PLcom/android/server/am/AppFGSTracker;->-$$Nest$fgetmHandler(Lcom/android/server/am/AppFGSTracker;)Lcom/android/server/am/AppFGSTracker$MyHandler;
PLcom/android/server/am/AppFGSTracker;->-$$Nest$mhandleForegroundServiceNotificationUpdated(Lcom/android/server/am/AppFGSTracker;Ljava/lang/String;IIZ)V
PLcom/android/server/am/AppFGSTracker;->-$$Nest$mhandleForegroundServicesChanged(Lcom/android/server/am/AppFGSTracker;Ljava/lang/String;II)V
-PLcom/android/server/am/AppFGSTracker;->-$$Nest$mhandleForegroundServicesChanged(Lcom/android/server/am/AppFGSTracker;Ljava/lang/String;IIZ)V
-PLcom/android/server/am/AppFGSTracker;->-$$Nest$mhandleNotificationPosted(Lcom/android/server/am/AppFGSTracker;Ljava/lang/String;II)V
+PLcom/android/server/am/AppFGSTracker;->-$$Nest$mhandleForegroundServicesChanged(Lcom/android/server/am/AppFGSTracker;Ljava/lang/String;IZ)V
PLcom/android/server/am/AppFGSTracker;->-$$Nest$monBgFgsLongRunningThresholdChanged(Lcom/android/server/am/AppFGSTracker;)V
-PLcom/android/server/am/AppFGSTracker;->-$$Nest$monBgFgsMonitorEnabled(Lcom/android/server/am/AppFGSTracker;Z)V
HSPLcom/android/server/am/AppFGSTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;)V
-HSPLcom/android/server/am/AppFGSTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
-PLcom/android/server/am/AppFGSTracker;->createAppStateEvents(ILjava/lang/String;)Lcom/android/server/am/AppFGSTracker$PackageDurations;
-PLcom/android/server/am/AppFGSTracker;->createAppStateEvents(Lcom/android/server/am/AppFGSTracker$PackageDurations;)Lcom/android/server/am/AppFGSTracker$PackageDurations;
-PLcom/android/server/am/AppFGSTracker;->createAppStateEvents(Lcom/android/server/am/BaseAppStateEvents;)Lcom/android/server/am/BaseAppStateEvents;
+PLcom/android/server/am/AppFGSTracker;->createAppStateEvents(Lcom/android/server/am/BaseAppStateDurations;)Lcom/android/server/am/BaseAppStateEvents;
+PLcom/android/server/am/AppFGSTracker;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/am/AppFGSTracker;->dumpOthers(Ljava/io/PrintWriter;Ljava/lang/String;)V
PLcom/android/server/am/AppFGSTracker;->foregroundServiceTypeToIndex(I)I
PLcom/android/server/am/AppFGSTracker;->getTotalDurations(Lcom/android/server/am/AppFGSTracker$PackageDurations;J)J
-PLcom/android/server/am/AppFGSTracker;->handleForegroundServiceNotificationUpdated(Ljava/lang/String;IIZ)V
-PLcom/android/server/am/AppFGSTracker;->handleForegroundServicesChanged(Ljava/lang/String;II)V
-PLcom/android/server/am/AppFGSTracker;->handleForegroundServicesChanged(Ljava/lang/String;IIZ)V
-PLcom/android/server/am/AppFGSTracker;->handleNotificationPosted(Ljava/lang/String;II)V
-HPLcom/android/server/am/AppFGSTracker;->hasForegroundServices(Ljava/lang/String;I)Z
-PLcom/android/server/am/AppFGSTracker;->onBgFgsLongRunningThresholdChanged()V
-PLcom/android/server/am/AppFGSTracker;->onBgFgsMonitorEnabled(Z)V
+PLcom/android/server/am/AppFGSTracker;->hasForegroundServiceNotificationsLocked(ILjava/lang/String;)Z
PLcom/android/server/am/AppFGSTracker;->onForegroundServiceNotificationUpdated(Ljava/lang/String;IIZ)V
PLcom/android/server/am/AppFGSTracker;->onForegroundServiceStateChanged(Ljava/lang/String;IIZ)V
PLcom/android/server/am/AppFGSTracker;->onSystemReady()V
-HPLcom/android/server/am/AppFGSTracker;->scheduleDurationCheckLocked(J)V
+PLcom/android/server/am/AppFGSTracker;->scheduleDurationCheckLocked(J)V
HSPLcom/android/server/am/AppMediaSessionTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/AppMediaSessionTracker;)V
PLcom/android/server/am/AppMediaSessionTracker$$ExternalSyntheticLambda0;->onActiveSessionsChanged(Ljava/util/List;)V
PLcom/android/server/am/AppMediaSessionTracker$AppMediaSessionPolicy$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/AppMediaSessionTracker;)V
PLcom/android/server/am/AppMediaSessionTracker$AppMediaSessionPolicy$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/am/AppMediaSessionTracker$AppMediaSessionPolicy;->$r8$lambda$vU9Y6O_Ak5yd1fFgiQvvDQnuaxQ(Lcom/android/server/am/AppMediaSessionTracker;)V
-HSPLcom/android/server/am/AppMediaSessionTracker$AppMediaSessionPolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/AppMediaSessionTracker;)V
-PLcom/android/server/am/AppMediaSessionTracker$AppMediaSessionPolicy;->onMaxTrackingDurationChanged(J)V
+PLcom/android/server/am/AppMediaSessionTracker$AppMediaSessionPolicy;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/am/AppMediaSessionTracker$AppMediaSessionPolicy;->onMaxTrackingDurationChanged()V
PLcom/android/server/am/AppMediaSessionTracker$AppMediaSessionPolicy;->onTrackerEnabled(Z)V
-PLcom/android/server/am/AppMediaSessionTracker;->$r8$lambda$QGd-MrvifawKK7V_H96hUv85JPk(Lcom/android/server/am/AppMediaSessionTracker;Ljava/util/List;)V
-PLcom/android/server/am/AppMediaSessionTracker;->-$$Nest$monBgMediaSessionMonitorEnabled(Lcom/android/server/am/AppMediaSessionTracker;Z)V
-PLcom/android/server/am/AppMediaSessionTracker;->-$$Nest$mtrimDurations(Lcom/android/server/am/AppMediaSessionTracker;)V
HSPLcom/android/server/am/AppMediaSessionTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;)V
-HSPLcom/android/server/am/AppMediaSessionTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
-PLcom/android/server/am/AppMediaSessionTracker;->handleMediaSessionChanged(Ljava/util/List;)V
-PLcom/android/server/am/AppMediaSessionTracker;->onBgMediaSessionMonitorEnabled(Z)V
-PLcom/android/server/am/AppMediaSessionTracker;->trimDurations()V
+PLcom/android/server/am/AppMediaSessionTracker;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
HSPLcom/android/server/am/AppPermissionTracker$AppPermissionPolicy;-><clinit>()V
-HSPLcom/android/server/am/AppPermissionTracker$AppPermissionPolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/AppPermissionTracker;)V
-PLcom/android/server/am/AppPermissionTracker$AppPermissionPolicy;->getBgPermissionsInMonitor()[Landroid/util/Pair;
+PLcom/android/server/am/AppPermissionTracker$AppPermissionPolicy;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
PLcom/android/server/am/AppPermissionTracker$AppPermissionPolicy;->onSystemReady()V
PLcom/android/server/am/AppPermissionTracker$AppPermissionPolicy;->onTrackerEnabled(Z)V
HSPLcom/android/server/am/AppPermissionTracker$AppPermissionPolicy;->parsePermissionConfig([Ljava/lang/String;)[Landroid/util/Pair;
PLcom/android/server/am/AppPermissionTracker$AppPermissionPolicy;->updateBgPermissionsInMonitor()V
PLcom/android/server/am/AppPermissionTracker$MyAppOpsCallback;-><init>(Lcom/android/server/am/AppPermissionTracker;)V
-PLcom/android/server/am/AppPermissionTracker$MyAppOpsCallback;-><init>(Lcom/android/server/am/AppPermissionTracker;Lcom/android/server/am/AppPermissionTracker$MyAppOpsCallback-IA;)V
PLcom/android/server/am/AppPermissionTracker$MyAppOpsCallback;->opChanged(IILjava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/am/AppPermissionTracker$MyHandler;-><init>(Lcom/android/server/am/AppPermissionTracker;)V
PLcom/android/server/am/AppPermissionTracker$MyHandler;->handleMessage(Landroid/os/Message;)V
HPLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;-><init>(Lcom/android/server/am/AppPermissionTracker;ILjava/lang/String;I)V
-HPLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;->equals(Ljava/lang/Object;)Z
-HPLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;->hashCode()I
-HPLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;->isGranted()Z
-HPLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;->updateAppOps()V
-HPLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;->updatePermissionState()V
-PLcom/android/server/am/AppPermissionTracker;->-$$Nest$fgetmHandler(Lcom/android/server/am/AppPermissionTracker;)Lcom/android/server/am/AppPermissionTracker$MyHandler;
-PLcom/android/server/am/AppPermissionTracker;->-$$Nest$mhandleAppOpsInit(Lcom/android/server/am/AppPermissionTracker;)V
-PLcom/android/server/am/AppPermissionTracker;->-$$Nest$mhandleOpChanged(Lcom/android/server/am/AppPermissionTracker;IILjava/lang/String;)V
+PLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;->hashCode()I
PLcom/android/server/am/AppPermissionTracker;->-$$Nest$mhandlePermissionsInit(Lcom/android/server/am/AppPermissionTracker;)V
-PLcom/android/server/am/AppPermissionTracker;->-$$Nest$monPermissionTrackerEnabled(Lcom/android/server/am/AppPermissionTracker;Z)V
HSPLcom/android/server/am/AppPermissionTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;)V
-HSPLcom/android/server/am/AppPermissionTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
-PLcom/android/server/am/AppPermissionTracker;->handleAppOpsInit()V
-PLcom/android/server/am/AppPermissionTracker;->handleOpChanged(IILjava/lang/String;)V
+PLcom/android/server/am/AppPermissionTracker;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
PLcom/android/server/am/AppPermissionTracker;->handlePermissionsChangedLocked(I[Lcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;)V
-HPLcom/android/server/am/AppPermissionTracker;->handlePermissionsInit()V
PLcom/android/server/am/AppPermissionTracker;->onLockedBootCompleted()V
PLcom/android/server/am/AppPermissionTracker;->onPermissionTrackerEnabled(Z)V
-PLcom/android/server/am/AppPermissionTracker;->startWatchingMode([Ljava/lang/Integer;)V
+PLcom/android/server/am/AppPermissionTracker;->onPermissionsChanged(I)V
PLcom/android/server/am/AppPermissionTracker;->stopWatchingMode()V
-HSPLcom/android/server/am/AppProfiler$$ExternalSyntheticLambda0;-><init>()V
-HPLcom/android/server/am/AppProfiler$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/AppProfiler$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/AppProfiler;ZJ)V
+PLcom/android/server/am/AppProfiler$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/AppProfiler$$ExternalSyntheticLambda3;-><init>(I)V
+PLcom/android/server/am/AppProfiler$$ExternalSyntheticLambda3;->needed(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z
+HPLcom/android/server/am/AppProfiler$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V
HSPLcom/android/server/am/AppProfiler$1;-><init>(Lcom/android/server/am/AppProfiler;)V
+PLcom/android/server/am/AppProfiler$1;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
HSPLcom/android/server/am/AppProfiler$BgHandler;-><init>(Lcom/android/server/am/AppProfiler;Landroid/os/Looper;)V
HPLcom/android/server/am/AppProfiler$BgHandler;->handleMessage(Landroid/os/Message;)V
-HPLcom/android/server/am/AppProfiler$CachedAppsWatermarkData$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;J)V
-HPLcom/android/server/am/AppProfiler$CachedAppsWatermarkData$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/am/AppProfiler$CachedAppsWatermarkData;->$r8$lambda$zI0BBTvUIJgiEIeZIL8U6fuo_8Y(Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;JLcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/AppProfiler$CachedAppsWatermarkData$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;J)V
+PLcom/android/server/am/AppProfiler$CachedAppsWatermarkData$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
HSPLcom/android/server/am/AppProfiler$CachedAppsWatermarkData;-><init>(Lcom/android/server/am/AppProfiler;)V
-HPLcom/android/server/am/AppProfiler$CachedAppsWatermarkData;->lambda$updateCachedAppsSnapshot$0(JLcom/android/server/am/ProcessRecord;)V
-HSPLcom/android/server/am/AppProfiler$CachedAppsWatermarkData;->updateCachedAppsHighWatermarkIfNecessaryLocked(IJ)V
-HPLcom/android/server/am/AppProfiler$CachedAppsWatermarkData;->updateCachedAppsSnapshot(J)V
+PLcom/android/server/am/AppProfiler$CachedAppsWatermarkData;->updateCachedAppsSnapshot(J)V
PLcom/android/server/am/AppProfiler$CpuBinder$1;-><init>(Lcom/android/server/am/AppProfiler$CpuBinder;)V
+PLcom/android/server/am/AppProfiler$CpuBinder$1;->dumpCritical(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
PLcom/android/server/am/AppProfiler$CpuBinder;-><init>(Lcom/android/server/am/AppProfiler;)V
-HSPLcom/android/server/am/AppProfiler$ProcessCpuThread;-><init>(Lcom/android/server/am/AppProfiler;Ljava/lang/String;)V
+PLcom/android/server/am/AppProfiler$CpuBinder;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/am/AppProfiler$ProcessCpuThread;-><init>(Lcom/android/server/am/AppProfiler;)V
HSPLcom/android/server/am/AppProfiler$ProcessCpuThread;->run()V
HSPLcom/android/server/am/AppProfiler$ProfileData;-><init>(Lcom/android/server/am/AppProfiler;)V
-HSPLcom/android/server/am/AppProfiler$ProfileData;-><init>(Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler$ProfileData-IA;)V
-PLcom/android/server/am/AppProfiler$ProfileData;->getProfileApp()Ljava/lang/String;
-PLcom/android/server/am/AppProfiler$ProfileData;->getProfileProc()Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/AppProfiler;->$r8$lambda$O0KXijwG7-p0M_PB8ZuTBcOSGho(Lcom/android/server/am/ProcessRecord;)V
-HSPLcom/android/server/am/AppProfiler;->-$$Nest$fgetmLastCpuTime(Lcom/android/server/am/AppProfiler;)Ljava/util/concurrent/atomic/AtomicLong;
-HSPLcom/android/server/am/AppProfiler;->-$$Nest$fgetmLastWriteTime(Lcom/android/server/am/AppProfiler;)J
-HSPLcom/android/server/am/AppProfiler;->-$$Nest$fgetmProcessCpuInitLatch(Lcom/android/server/am/AppProfiler;)Ljava/util/concurrent/CountDownLatch;
-HSPLcom/android/server/am/AppProfiler;->-$$Nest$fgetmProcessCpuMutexFree(Lcom/android/server/am/AppProfiler;)Ljava/util/concurrent/atomic/AtomicBoolean;
-HSPLcom/android/server/am/AppProfiler;->-$$Nest$fgetmProcessCpuTracker(Lcom/android/server/am/AppProfiler;)Lcom/android/internal/os/ProcessCpuTracker;
-HPLcom/android/server/am/AppProfiler;->-$$Nest$fgetmService(Lcom/android/server/am/AppProfiler;)Lcom/android/server/am/ActivityManagerService;
-PLcom/android/server/am/AppProfiler;->-$$Nest$mhandleMemoryPressureChangedLocked(Lcom/android/server/am/AppProfiler;II)V
+HPLcom/android/server/am/AppProfiler;->-$$Nest$mcollectRssInBackground(Lcom/android/server/am/AppProfiler;)V+]Landroid/util/IntArray;Landroid/util/IntArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/AppProfiler;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;Lcom/android/server/am/LowMemDetector;)V
-HPLcom/android/server/am/AppProfiler;->doLowMemReportIfNeededLocked(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/AppProfiler;->getCpuDelayTimeForPid(I)J
-PLcom/android/server/am/AppProfiler;->getCpuTimeForPid(I)J
+PLcom/android/server/am/AppProfiler;->doLowMemReportIfNeededLocked(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/AppProfiler;->dumpMemWatchProcessesLPf(Ljava/io/PrintWriter;Z)Z
+PLcom/android/server/am/AppProfiler;->dumpProcessesToGc(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+PLcom/android/server/am/AppProfiler;->forAllCpuStats(Ljava/util/function/Consumer;)V
PLcom/android/server/am/AppProfiler;->getLastMemoryLevelLocked()I
-HPLcom/android/server/am/AppProfiler;->handleMemoryPressureChangedLocked(II)V
-HPLcom/android/server/am/AppProfiler;->isLastMemoryLevelNormal()Z
+PLcom/android/server/am/AppProfiler;->getLowRamTimeSinceIdleLPr(J)J
+HSPLcom/android/server/am/AppProfiler;->isLastMemoryLevelNormal()Z
HPLcom/android/server/am/AppProfiler;->isProfilingPss()Z
-HPLcom/android/server/am/AppProfiler;->lambda$updateLowMemStateLSP$3(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/AppProfiler;->onActivityLaunched()V
-HSPLcom/android/server/am/AppProfiler;->onActivityManagerInternalAdded()V
-HPLcom/android/server/am/AppProfiler;->onAppDiedLocked(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/AppProfiler;->onCleanupApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/AppProfiler;->printCurrentCpuState(Ljava/lang/StringBuilder;J)V
-PLcom/android/server/am/AppProfiler;->retrieveSettings()V
+PLcom/android/server/am/AppProfiler;->requestPssAllProcsLPr(JZ)V
HPLcom/android/server/am/AppProfiler;->scheduleAppGcsLPf()V
-PLcom/android/server/am/AppProfiler;->setAllowLowerMemLevelLocked(Z)V
-PLcom/android/server/am/AppProfiler;->setCpuInfoService()V
-HPLcom/android/server/am/AppProfiler;->setupProfilerInfoLocked(Landroid/app/IApplicationThread;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActiveInstrumentation;)Landroid/app/ProfilerInfo;
-HPLcom/android/server/am/AppProfiler;->updateCpuStats()V
-HPLcom/android/server/am/AppProfiler;->updateCpuStatsNow()V
-HSPLcom/android/server/am/AppProfiler;->updateLowMemStateLSP(IIIJ)Z
-HPLcom/android/server/am/AppProfiler;->updateNextPssTimeLPf(ILcom/android/server/am/ProcessProfileRecord;JZ)V
+PLcom/android/server/am/AppProfiler;->setupProfilerInfoLocked(Landroid/app/IApplicationThread;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActiveInstrumentation;)Landroid/app/ProfilerInfo;
+HSPLcom/android/server/am/AppProfiler;->updateCpuStatsNow()V+]Lcom/android/internal/os/ProcessCpuTracker;Lcom/android/internal/os/ProcessCpuTracker;
+HPLcom/android/server/am/AppProfiler;->updateNextPssTimeLPf(ILcom/android/server/am/ProcessProfileRecord;JZ)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/am/AppProfiler;->writeMemWatchProcessToProtoLPf(Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/am/AppProfiler;->writeProcessesToGcToProto(Landroid/util/proto/ProtoOutputStream;Ljava/lang/String;)V
HSPLcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/AppRestrictionController;)V
-HPLcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda2;-><init>(ILjava/lang/String;I)V
-HPLcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/am/AppRestrictionController;ILcom/android/server/usage/AppStandbyInternal;I)V
-HPLcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda1;->onRoleHoldersChanged(Ljava/lang/String;Landroid/os/UserHandle;)V
+PLcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda2;-><init>(IILjava/lang/String;)V
+PLcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/am/AppRestrictionController;ILcom/android/server/usage/AppStandbyInternal;I)V
+PLcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/am/AppRestrictionController;)V
PLcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda4;->run()V
-HSPLcom/android/server/am/AppRestrictionController$1;-><init>(Lcom/android/server/am/AppRestrictionController;)V
-HSPLcom/android/server/am/AppRestrictionController$2;-><init>(Lcom/android/server/am/AppRestrictionController;)V
-PLcom/android/server/am/AppRestrictionController$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/am/AppRestrictionController$1;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/am/AppRestrictionController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
HSPLcom/android/server/am/AppRestrictionController$3;-><init>(Lcom/android/server/am/AppRestrictionController;)V
HSPLcom/android/server/am/AppRestrictionController$4;-><init>(Lcom/android/server/am/AppRestrictionController;)V
-HPLcom/android/server/am/AppRestrictionController$4;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
+PLcom/android/server/am/AppRestrictionController$4;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
PLcom/android/server/am/AppRestrictionController$4;->onUserInteractionStarted(Ljava/lang/String;I)V
HSPLcom/android/server/am/AppRestrictionController$5;-><init>(Lcom/android/server/am/AppRestrictionController;)V
-HPLcom/android/server/am/AppRestrictionController$5;->onUidActive(I)V
-HPLcom/android/server/am/AppRestrictionController$5;->onUidGone(IZ)V
-HPLcom/android/server/am/AppRestrictionController$5;->onUidIdle(IZ)V
-HPLcom/android/server/am/AppRestrictionController$5;->onUidStateChanged(IIJI)V
+PLcom/android/server/am/AppRestrictionController$5;->onUidActive(I)V
+PLcom/android/server/am/AppRestrictionController$5;->onUidGone(IZ)V
+PLcom/android/server/am/AppRestrictionController$5;->onUidIdle(IZ)V
+PLcom/android/server/am/AppRestrictionController$5;->onUidStateChanged(IIJI)V
HSPLcom/android/server/am/AppRestrictionController$BgHandler;-><init>(Landroid/os/Looper;Lcom/android/server/am/AppRestrictionController$Injector;)V
-HPLcom/android/server/am/AppRestrictionController$BgHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/am/AppRestrictionController$ConstantsObserver;-><init>(Lcom/android/server/am/AppRestrictionController;Landroid/os/Handler;Landroid/content/Context;)V
-PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->start()V
-PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->updateBgAbusiveNotificationMinimalInterval()V
-PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->updateBgAutoRestrictAbusiveApps()V
+HPLcom/android/server/am/AppRestrictionController$BgHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/BaseAppStateTracker;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/concurrent/CopyOnWriteArraySet;Ljava/util/concurrent/CopyOnWriteArraySet;
+HSPLcom/android/server/am/AppRestrictionController$ConstantsObserver;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;)V
+PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->updateBgAutoRestrictedBucketChanged()V
-PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->updateBgLongFgsNotificationMinimalInterval()V
-PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->updateBgPromptAbusiveAppToBgRestricted()V
-PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->updateBgPromptFgsOnLongRunning()V
-PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->updateBgPromptFgsWithNotiOnLongRunning()V
-PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->updateBgPromptFgsWithNotiToBgRestricted()V
PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->updateBgRestrictionExemptedPackages()V
-PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->updateDeviceConfig()V
HSPLcom/android/server/am/AppRestrictionController$Injector;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/am/AppRestrictionController$Injector;->currentTimeMillis()J
-HPLcom/android/server/am/AppRestrictionController$Injector;->getActivityManagerInternal()Landroid/app/ActivityManagerInternal;
-HPLcom/android/server/am/AppRestrictionController$Injector;->getActivityManagerService()Lcom/android/server/am/ActivityManagerService;
-PLcom/android/server/am/AppRestrictionController$Injector;->getAppFGSTracker()Lcom/android/server/am/AppFGSTracker;
-HPLcom/android/server/am/AppRestrictionController$Injector;->getAppHibernationInternal()Lcom/android/server/apphibernation/AppHibernationManagerInternal;
-HPLcom/android/server/am/AppRestrictionController$Injector;->getAppOpsManager()Landroid/app/AppOpsManager;
-PLcom/android/server/am/AppRestrictionController$Injector;->getAppRestrictionController()Lcom/android/server/am/AppRestrictionController;
-HPLcom/android/server/am/AppRestrictionController$Injector;->getAppStandbyInternal()Lcom/android/server/usage/AppStandbyInternal;
-HPLcom/android/server/am/AppRestrictionController$Injector;->getAppStateTracker()Lcom/android/server/AppStateTracker;
-HSPLcom/android/server/am/AppRestrictionController$Injector;->getContext()Landroid/content/Context;
-PLcom/android/server/am/AppRestrictionController$Injector;->getDataSystemDeDirectory(I)Ljava/io/File;
-PLcom/android/server/am/AppRestrictionController$Injector;->getIActivityManager()Landroid/app/IActivityManager;
-HSPLcom/android/server/am/AppRestrictionController$Injector;->getNotificationManager()Landroid/app/NotificationManager;
-HPLcom/android/server/am/AppRestrictionController$Injector;->getPackageManager()Landroid/content/pm/PackageManager;
-HPLcom/android/server/am/AppRestrictionController$Injector;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
-PLcom/android/server/am/AppRestrictionController$Injector;->getPackageName(I)Ljava/lang/String;
+PLcom/android/server/am/AppRestrictionController$Injector;->getAppStandbyInternal()Lcom/android/server/usage/AppStandbyInternal;
+PLcom/android/server/am/AppRestrictionController$Injector;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
PLcom/android/server/am/AppRestrictionController$Injector;->getRoleManager()Landroid/app/role/RoleManager;
-PLcom/android/server/am/AppRestrictionController$Injector;->getTelephonyManager()Landroid/telephony/TelephonyManager;
-HPLcom/android/server/am/AppRestrictionController$Injector;->getUserManagerInternal()Lcom/android/server/pm/UserManagerInternal;
-HSPLcom/android/server/am/AppRestrictionController$Injector;->initAppStateTrackers(Lcom/android/server/am/AppRestrictionController;)V
-PLcom/android/server/am/AppRestrictionController$Injector;->isTest()Z
-PLcom/android/server/am/AppRestrictionController$Injector;->scheduleInitTrackers(Landroid/os/Handler;Ljava/lang/Runnable;)V
-HSPLcom/android/server/am/AppRestrictionController$NotificationHelper$1;-><init>(Lcom/android/server/am/AppRestrictionController$NotificationHelper;)V
+PLcom/android/server/am/AppRestrictionController$Injector;->getUserManagerInternal()Lcom/android/server/pm/UserManagerInternal;
HSPLcom/android/server/am/AppRestrictionController$NotificationHelper;-><clinit>()V
HSPLcom/android/server/am/AppRestrictionController$NotificationHelper;-><init>(Lcom/android/server/am/AppRestrictionController;)V
-HPLcom/android/server/am/AppRestrictionController$NotificationHelper;->notificationTimeAttrToType(Ljava/lang/String;)I
-PLcom/android/server/am/AppRestrictionController$NotificationHelper;->notificationTypeToTimeAttr(I)Ljava/lang/String;
-PLcom/android/server/am/AppRestrictionController$NotificationHelper;->onSystemReady()V
PLcom/android/server/am/AppRestrictionController$PhoneCarrierPrivilegesCallback;-><init>(Lcom/android/server/am/AppRestrictionController;I)V
PLcom/android/server/am/AppRestrictionController$PhoneCarrierPrivilegesCallback;->onCarrierPrivilegesChanged(Ljava/util/Set;Ljava/util/Set;)V
-HPLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->-$$Nest$fgetmCurrentRestrictionLevel(Lcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;)I
-HPLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->-$$Nest$fgetmLevelChangeTime(Lcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;)J
-PLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->-$$Nest$fgetmReason(Lcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;)I
-HPLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;-><init>(Lcom/android/server/am/AppRestrictionController$RestrictionSettings;Ljava/lang/String;I)V
-PLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->getCurrentRestrictionLevel()I
-HPLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->getLastNotificationTime(I)J
-PLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->getPackageName()Ljava/lang/String;
-HPLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->getReason()I
-PLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->getUid()I
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings$$ExternalSyntheticLambda0;-><init>(Ljava/util/ArrayList;)V
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings$$ExternalSyntheticLambda1;->applyAsInt(Ljava/lang/Object;)I
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;-><init>(Lcom/android/server/am/AppRestrictionController$RestrictionSettings;Ljava/lang/String;I)V
PLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->setLevelChangeTime(J)V
-HPLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->update(III)I
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->toString()Ljava/lang/String;
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->update(III)I
HSPLcom/android/server/am/AppRestrictionController$RestrictionSettings;-><init>(Lcom/android/server/am/AppRestrictionController;)V
-HPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->forEachPackageInUidLocked(ILcom/android/internal/util/function/TriConsumer;)V
-HPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->getReason(Ljava/lang/String;I)I
-HPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->getRestrictionLevel(I)I
-HPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->getRestrictionLevel(ILjava/lang/String;)I
-HPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->getRestrictionSettingsLocked(ILjava/lang/String;)Lcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings;->forEachPackageInUidLocked(ILcom/android/internal/util/function/TriConsumer;)V
+HPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->getRestrictionLevel(I)I+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings;->getRestrictionLevel(ILjava/lang/String;)I
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings;->getRestrictionSettingsLocked(ILjava/lang/String;)Lcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;
PLcom/android/server/am/AppRestrictionController$RestrictionSettings;->getXmlFileNameForUser(I)Ljava/io/File;
-HPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->loadFromXml(IZ)V
PLcom/android/server/am/AppRestrictionController$RestrictionSettings;->loadFromXml(Z)V
HPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->loadOneFromXml(Lcom/android/modules/utils/TypedXmlPullParser;J[JZ)V
PLcom/android/server/am/AppRestrictionController$RestrictionSettings;->persistToXml(I)V
PLcom/android/server/am/AppRestrictionController$RestrictionSettings;->scheduleLoadFromXml()V
PLcom/android/server/am/AppRestrictionController$RestrictionSettings;->schedulePersistToXml(I)V
-HPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->toXmlByteArray(I)[B
-HPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->update(Ljava/lang/String;IIII)I
-HSPLcom/android/server/am/AppRestrictionController$TrackerInfo;-><init>(Lcom/android/server/am/AppRestrictionController;)V
-PLcom/android/server/am/AppRestrictionController$TrackerInfo;-><init>(Lcom/android/server/am/AppRestrictionController;I[B)V
-PLcom/android/server/am/AppRestrictionController;->$r8$lambda$_ydL4E-eseJqSvYCC9_LF-yu1d4(ILjava/lang/String;ILandroid/app/ActivityManagerInternal$AppBackgroundRestrictionListener;)V
-PLcom/android/server/am/AppRestrictionController;->$r8$lambda$cCOwIzhwVMmMXJ70sQK3rFQtGL0(Lcom/android/server/am/AppRestrictionController;)V
-PLcom/android/server/am/AppRestrictionController;->$r8$lambda$oY7vGD6ZBYgVNvNPzUZAGcXnf7g(Lcom/android/server/am/AppRestrictionController;ILcom/android/server/usage/AppStandbyInternal;ILjava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;)V
-HSPLcom/android/server/am/AppRestrictionController;->-$$Nest$fgetmAppStateTrackers(Lcom/android/server/am/AppRestrictionController;)Ljava/util/ArrayList;
-HPLcom/android/server/am/AppRestrictionController;->-$$Nest$fgetmBgHandler(Lcom/android/server/am/AppRestrictionController;)Lcom/android/server/am/AppRestrictionController$BgHandler;
-PLcom/android/server/am/AppRestrictionController;->-$$Nest$fgetmCarrierPrivilegedApps(Lcom/android/server/am/AppRestrictionController;)Landroid/util/SparseArray;
-PLcom/android/server/am/AppRestrictionController;->-$$Nest$fgetmCarrierPrivilegedLock(Lcom/android/server/am/AppRestrictionController;)Ljava/lang/Object;
-PLcom/android/server/am/AppRestrictionController;->-$$Nest$fgetmEmptyTrackerInfo(Lcom/android/server/am/AppRestrictionController;)Lcom/android/server/am/AppRestrictionController$TrackerInfo;
-HSPLcom/android/server/am/AppRestrictionController;->-$$Nest$fgetmInjector(Lcom/android/server/am/AppRestrictionController;)Lcom/android/server/am/AppRestrictionController$Injector;
-HSPLcom/android/server/am/AppRestrictionController;->-$$Nest$fgetmLock(Lcom/android/server/am/AppRestrictionController;)Ljava/lang/Object;
-PLcom/android/server/am/AppRestrictionController;->-$$Nest$fgetmRestrictionSettingsXmlLoaded(Lcom/android/server/am/AppRestrictionController;)Ljava/util/concurrent/atomic/AtomicBoolean;
-HSPLcom/android/server/am/AppRestrictionController;->-$$Nest$fgetmSettingsLock(Lcom/android/server/am/AppRestrictionController;)Ljava/lang/Object;
-PLcom/android/server/am/AppRestrictionController;->-$$Nest$mdispatchAppRestrictionLevelChanges(Lcom/android/server/am/AppRestrictionController;ILjava/lang/String;I)V
-PLcom/android/server/am/AppRestrictionController;->-$$Nest$monLockedBootCompleted(Lcom/android/server/am/AppRestrictionController;)V
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings;->toXmlByteArray(I)[B
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings;->update(IIIILjava/lang/String;)V
+HSPLcom/android/server/am/AppRestrictionController$TrackerInfo;-><init>()V
+PLcom/android/server/am/AppRestrictionController$TrackerInfo;-><init>(I[B)V
HSPLcom/android/server/am/AppRestrictionController;-><clinit>()V
HSPLcom/android/server/am/AppRestrictionController;-><init>(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/AppRestrictionController;-><init>(Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/ActivityManagerService;)V
-PLcom/android/server/am/AppRestrictionController;->addAppBackgroundRestrictionListener(Landroid/app/ActivityManagerInternal$AppBackgroundRestrictionListener;)V
-HPLcom/android/server/am/AppRestrictionController;->applyRestrictionLevel(Ljava/lang/String;IILcom/android/server/am/AppRestrictionController$TrackerInfo;IZII)V
-HPLcom/android/server/am/AppRestrictionController;->calcAppRestrictionLevel(IILjava/lang/String;IZZ)Landroid/util/Pair;
-HPLcom/android/server/am/AppRestrictionController;->calcAppRestrictionLevelFromTackers(ILjava/lang/String;I)Landroid/util/Pair;
-HPLcom/android/server/am/AppRestrictionController;->dispatchAppRestrictionLevelChanges(ILjava/lang/String;I)V
-PLcom/android/server/am/AppRestrictionController;->forEachTracker(Ljava/util/function/Consumer;)V
-HSPLcom/android/server/am/AppRestrictionController;->getBackgroundHandler()Landroid/os/Handler;
+PLcom/android/server/am/AppRestrictionController;->applyRestrictionLevel(Ljava/lang/String;IILcom/android/server/am/AppRestrictionController$TrackerInfo;IZII)V
+PLcom/android/server/am/AppRestrictionController;->calcAppRestrictionLevel(IIILjava/lang/String;ZZ)Landroid/util/Pair;
+PLcom/android/server/am/AppRestrictionController;->calcAppRestrictionLevelFromTackers(IILjava/lang/String;)Landroid/util/Pair;
HPLcom/android/server/am/AppRestrictionController;->getBackgroundRestrictionExemptionReason(I)I
-HSPLcom/android/server/am/AppRestrictionController;->getLock()Ljava/lang/Object;
-PLcom/android/server/am/AppRestrictionController;->getPackageName(I)Ljava/lang/String;
-HPLcom/android/server/am/AppRestrictionController;->getPotentialSystemExemptionReason(I)I
+HPLcom/android/server/am/AppRestrictionController;->getPotentialSystemExemptionReason(I)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;
HPLcom/android/server/am/AppRestrictionController;->getPotentialSystemExemptionReason(ILjava/lang/String;)I
HPLcom/android/server/am/AppRestrictionController;->getPotentialUserAllowedExemptionReason(ILjava/lang/String;)I
-HPLcom/android/server/am/AppRestrictionController;->getRestrictionLevel(I)I
-HPLcom/android/server/am/AppRestrictionController;->getRestrictionLevel(ILjava/lang/String;)I
-HPLcom/android/server/am/AppRestrictionController;->handleAppStandbyBucketChanged(ILjava/lang/String;I)V
-HPLcom/android/server/am/AppRestrictionController;->handleUidActive(I)V
-HPLcom/android/server/am/AppRestrictionController;->handleUidGone(I)V
-HPLcom/android/server/am/AppRestrictionController;->handleUidInactive(IZ)V
-HPLcom/android/server/am/AppRestrictionController;->handleUidProcStateChanged(II)V
-HPLcom/android/server/am/AppRestrictionController;->hasForegroundServices(Ljava/lang/String;I)Z
-PLcom/android/server/am/AppRestrictionController;->initBgRestrictionExemptioFromSysConfig()V
+PLcom/android/server/am/AppRestrictionController;->getRestrictionLevelStatsd(I)I
+PLcom/android/server/am/AppRestrictionController;->getUidBatteryExemptedUsageSince(IIJJ)Lcom/android/server/am/AppBatteryTracker$ImmutableBatteryUsage;
+PLcom/android/server/am/AppRestrictionController;->handleUidInactive(I)V
+HPLcom/android/server/am/AppRestrictionController;->hasForegroundServices(ILjava/lang/String;)Z
PLcom/android/server/am/AppRestrictionController;->initRestrictionStates()V
-PLcom/android/server/am/AppRestrictionController;->initRolesInInterest()V
-PLcom/android/server/am/AppRestrictionController;->initSystemModuleNames()V
-HPLcom/android/server/am/AppRestrictionController;->isBgAutoRestrictedBucketFeatureFlagEnabled()Z
-HPLcom/android/server/am/AppRestrictionController;->isCarrierApp(Ljava/lang/String;)Z
-HPLcom/android/server/am/AppRestrictionController;->isExemptedFromSysConfig(Ljava/lang/String;)Z
-HPLcom/android/server/am/AppRestrictionController;->isOnDeviceIdleAllowlist(I)Z
-HPLcom/android/server/am/AppRestrictionController;->isOnSystemDeviceIdleAllowlist(I)Z
-HPLcom/android/server/am/AppRestrictionController;->isRoleHeldByUid(Ljava/lang/String;I)Z
-HPLcom/android/server/am/AppRestrictionController;->isSystemModule(Ljava/lang/String;)Z
-PLcom/android/server/am/AppRestrictionController;->lambda$dispatchAppRestrictionLevelChanges$2(ILjava/lang/String;ILandroid/app/ActivityManagerInternal$AppBackgroundRestrictionListener;)V
-HPLcom/android/server/am/AppRestrictionController;->lambda$handleUidActive$9(ILcom/android/server/usage/AppStandbyInternal;ILjava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;)V
-PLcom/android/server/am/AppRestrictionController;->lambda$onSystemReady$0()V
+PLcom/android/server/am/AppRestrictionController;->isRoleHeldByUid(ILjava/lang/String;)Z
PLcom/android/server/am/AppRestrictionController;->loadAppIdsFromPackageList(Landroid/util/ArraySet;Landroid/util/ArraySet;)V
-PLcom/android/server/am/AppRestrictionController;->onLockedBootCompleted()V
+PLcom/android/server/am/AppRestrictionController;->logAppBackgroundRestrictionInfo(Ljava/lang/String;IIILcom/android/server/am/AppRestrictionController$TrackerInfo;I)V
PLcom/android/server/am/AppRestrictionController;->onRoleHoldersChanged(Ljava/lang/String;Landroid/os/UserHandle;)V
PLcom/android/server/am/AppRestrictionController;->onSystemReady()V
-PLcom/android/server/am/AppRestrictionController;->onUserInteractionStarted(Ljava/lang/String;I)V
-HPLcom/android/server/am/AppRestrictionController;->refreshAppRestrictionLevelForUid(IIIZ)V
-HPLcom/android/server/am/AppRestrictionController;->refreshAppRestrictionLevelForUser(III)V
+PLcom/android/server/am/AppRestrictionController;->refreshAppRestrictionLevelForUid(IIIZ)V
+PLcom/android/server/am/AppRestrictionController;->refreshAppRestrictionLevelForUser(I)V
PLcom/android/server/am/AppRestrictionController;->registerCarrierPrivilegesCallbacks()V
-PLcom/android/server/am/AppRestrictionController;->registerForSystemBroadcasts()V
-PLcom/android/server/am/AppRestrictionController;->registerForUidObservers()V
-PLcom/android/server/am/AppRestrictionController;->setDeviceIdleAllowlist([I[I)V
-PLcom/android/server/am/AppRestrictionController;->standbyBucketToRestrictionLevel(I)I
-PLcom/android/server/am/AppStartInfoTracker$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/am/AppStartInfoTracker;)V
-PLcom/android/server/am/AppStartInfoTracker$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/am/AppStartInfoTracker;)V
-PLcom/android/server/am/AppStartInfoTracker$$ExternalSyntheticLambda6;->run()V
-PLcom/android/server/am/AppStartInfoTracker$1;-><init>(Lcom/android/server/am/AppStartInfoTracker;)V
-PLcom/android/server/am/AppStartInfoTracker$2;-><init>(Lcom/android/server/am/AppStartInfoTracker;)V
-PLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;->$r8$lambda$m8mTdqn0Kp9LC0IM3Ch2QHqUGag(Landroid/app/ApplicationStartInfo;Landroid/app/ApplicationStartInfo;)I
-PLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;->-$$Nest$fputmUid(Lcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;I)V
-HPLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;-><init>(Lcom/android/server/am/AppStartInfoTracker;I)V
-HPLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;->addStartInfoLocked(Landroid/app/ApplicationStartInfo;)V
+PLcom/android/server/am/AppStartInfoTracker$$ExternalSyntheticLambda1;-><init>(I)V
+PLcom/android/server/am/AppStartInfoTracker$$ExternalSyntheticLambda1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/am/AppStartInfoTracker$$ExternalSyntheticLambda2;-><init>(Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/am/AppStartInfoTracker$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/am/AppStartInfoTracker$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/am/AppStartInfoTracker;I)V
+PLcom/android/server/am/AppStartInfoTracker$$ExternalSyntheticLambda4;->run()V
+PLcom/android/server/am/AppStartInfoTracker$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/am/AppStartInfoTracker;Ljava/io/PrintWriter;Landroid/icu/text/SimpleDateFormat;)V
+PLcom/android/server/am/AppStartInfoTracker$$ExternalSyntheticLambda6;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/am/AppStartInfoTracker$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/am/AppStartInfoTracker;)V
+PLcom/android/server/am/AppStartInfoTracker$$ExternalSyntheticLambda8;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/am/AppStartInfoTracker$1;-><init>(Lcom/android/server/am/AppStartInfoTracker;I)V
+PLcom/android/server/am/AppStartInfoTracker$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;-><init>(Lcom/android/server/am/AppStartInfoTracker;I)V
HPLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;->addTimestampToStartLocked(IJ)V
-PLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;->lambda$addStartInfoLocked$0(Landroid/app/ApplicationStartInfo;Landroid/app/ApplicationStartInfo;)I
-PLcom/android/server/am/AppStartInfoTracker;->$r8$lambda$VdR_UMu5lcdcEkpdcV9tz9DCksE(Lcom/android/server/am/AppStartInfoTracker;)V
-PLcom/android/server/am/AppStartInfoTracker;->-$$Nest$smgetStartTimestamp(Landroid/app/ApplicationStartInfo;)J
HSPLcom/android/server/am/AppStartInfoTracker;-><clinit>()V
HSPLcom/android/server/am/AppStartInfoTracker;-><init>()V
HPLcom/android/server/am/AppStartInfoTracker;->addBaseFieldsFromProcessRecord(Landroid/app/ApplicationStartInfo;Lcom/android/server/am/ProcessRecord;)V
HPLcom/android/server/am/AppStartInfoTracker;->addStartInfoLocked(Landroid/app/ApplicationStartInfo;)Landroid/app/ApplicationStartInfo;
-HPLcom/android/server/am/AppStartInfoTracker;->addTimestampToStart(Lcom/android/server/am/ProcessRecord;JI)V
-HPLcom/android/server/am/AppStartInfoTracker;->addTimestampToStart(Ljava/lang/String;IJI)V
+HPLcom/android/server/am/AppStartInfoTracker;->addTimestampToStart(IILjava/lang/String;J)V
PLcom/android/server/am/AppStartInfoTracker;->checkCompletenessAndCallback(Landroid/app/ApplicationStartInfo;)V
-HPLcom/android/server/am/AppStartInfoTracker;->getStartTimestamp(Landroid/app/ApplicationStartInfo;)J
-HPLcom/android/server/am/AppStartInfoTracker;->handleProcessServiceStart(JLcom/android/server/am/ProcessRecord;Lcom/android/server/am/ServiceRecord;Z)V
-HSPLcom/android/server/am/AppStartInfoTracker;->init(Lcom/android/server/am/ActivityManagerService;)V
-PLcom/android/server/am/AppStartInfoTracker;->lambda$onSystemReady$0()V
+PLcom/android/server/am/AppStartInfoTracker;->dumpHistoryProcessStartInfo(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/am/AppStartInfoTracker;->dumpHistoryProcessStartInfoLocked(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/SparseArray;Landroid/icu/text/SimpleDateFormat;)V
+PLcom/android/server/am/AppStartInfoTracker;->forEachPackageLocked(Ljava/util/function/BiFunction;)Z
+PLcom/android/server/am/AppStartInfoTracker;->getMonotonicTime()J
+PLcom/android/server/am/AppStartInfoTracker;->handleProcessBackupStart(JLcom/android/server/am/ProcessRecord;Z)V
+PLcom/android/server/am/AppStartInfoTracker;->handleProcessContentProviderStart(Lcom/android/server/am/ProcessRecord;J)V
PLcom/android/server/am/AppStartInfoTracker;->loadExistingProcessStartInfo()V
-PLcom/android/server/am/AppStartInfoTracker;->onActivityLaunchFinished(JLandroid/content/ComponentName;JI)V
-PLcom/android/server/am/AppStartInfoTracker;->onActivityLaunched(JLandroid/content/ComponentName;JLcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/AppStartInfoTracker;->onIntentStarted(Landroid/content/Intent;J)V
-PLcom/android/server/am/AppStartInfoTracker;->onReportFullyDrawn(JJ)V
-PLcom/android/server/am/AppStartInfoTracker;->onSystemReady()V
-PLcom/android/server/am/AppStartInfoTracker;->registerForPackageRemoval()V
-PLcom/android/server/am/AppStartInfoTracker;->registerForUserRemoval()V
-HPLcom/android/server/am/AppStartInfoTracker;->reportBindApplicationTimeNanos(Lcom/android/server/am/ProcessRecord;J)V
-HPLcom/android/server/am/AppStartInfoTracker;->schedulePersistProcessStartInfo(Z)V
-PLcom/android/server/am/BaseAppStateDurations;-><init>(ILjava/lang/String;ILjava/lang/String;Lcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;)V
-PLcom/android/server/am/BaseAppStateDurations;-><init>(Lcom/android/server/am/BaseAppStateDurations;)V
+PLcom/android/server/am/AppStartInfoTracker;->loadPackagesFromProto(Landroid/util/proto/ProtoInputStream;J)V
+HPLcom/android/server/am/AppStartInfoTracker;->maybeTrimInProgressRecordsLocked()V
+HPLcom/android/server/am/AppStartInfoTracker;->onActivityIntentStarted(Landroid/content/Intent;J)V
+PLcom/android/server/am/AppStartInfoTracker;->onActivityLaunched(JJLcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/AppStartInfoTracker;->persistProcessStartInfo()V
+PLcom/android/server/am/AppStartInfoTracker;->schedulePersistProcessStartInfo(Z)V
+PLcom/android/server/am/ApplicationThreadDeferred$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/ApplicationThreadDeferred;I)V
+PLcom/android/server/am/ApplicationThreadDeferred$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/am/ApplicationThreadDeferred;->$r8$lambda$PP7wSw0gGLmO6hi1tOkPocTG8v8(Lcom/android/server/am/ApplicationThreadDeferred;)V
+PLcom/android/server/am/ApplicationThreadDeferred;->$r8$lambda$pzCGrkeFAdnodnDYXv9us5vUB_A(Lcom/android/server/am/ApplicationThreadDeferred;)V
+HPLcom/android/server/am/ApplicationThreadDeferred;-><init>(Landroid/app/IApplicationThread;Z)V
+HPLcom/android/server/am/ApplicationThreadDeferred;->asBinder()Landroid/os/IBinder;+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;
+PLcom/android/server/am/ApplicationThreadDeferred;->execute(I)V
+PLcom/android/server/am/ApplicationThreadDeferred;->onProcessUnpaused()V
+PLcom/android/server/am/ApplicationThreadDeferred;->updateTimeZone()V
+PLcom/android/server/am/AssistDataRequester$AssistDataRequesterCallbacks;->onAssistRequestCompleted()V
+PLcom/android/server/am/AssistDataRequester;-><init>(Landroid/content/Context;Landroid/view/IWindowManager;Landroid/app/AppOpsManager;Lcom/android/server/am/AssistDataRequester$AssistDataRequesterCallbacks;Ljava/lang/Object;I)V
+PLcom/android/server/am/AssistDataRequester;->dispatchAssistDataReceived(Landroid/os/Bundle;)V
+PLcom/android/server/am/AssistDataRequester;->flushPendingAssistData()V
+PLcom/android/server/am/AssistDataRequester;->onHandleAssistData(Landroid/os/Bundle;)V
+PLcom/android/server/am/AssistDataRequester;->onHandleAssistScreenshot(Landroid/graphics/Bitmap;)V
+PLcom/android/server/am/AssistDataRequester;->requestAssistData(Ljava/util/List;ZZZZZZILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/AssistDataRequester;->tryDispatchRequestComplete()V
+PLcom/android/server/am/BackupRecord;-><init>(Landroid/content/pm/ApplicationInfo;IIIZ)V
PLcom/android/server/am/BaseAppStateDurations;->addEvent(ZLcom/android/server/am/BaseAppStateTimeEvents$BaseTimeEvent;I)V
-PLcom/android/server/am/BaseAppStateDurations;->getTotalDurations(JI)J
-PLcom/android/server/am/BaseAppStateDurations;->getTotalDurationsSince(JJI)J
+PLcom/android/server/am/BaseAppStateDurations;->formatEventSummary(IJ)Ljava/lang/String;
+PLcom/android/server/am/BaseAppStateDurations;->getTotalDurationsSince(IJJ)J
PLcom/android/server/am/BaseAppStateDurations;->isActive(I)Z
-PLcom/android/server/am/BaseAppStateDurations;->subtract(Lcom/android/server/am/BaseAppStateDurations;II)V
+PLcom/android/server/am/BaseAppStateDurations;->subtract(Lcom/android/server/am/BaseAppStateDurationsTracker$UidStateDurations;I)V
PLcom/android/server/am/BaseAppStateDurations;->subtract(Ljava/util/LinkedList;Ljava/util/LinkedList;)Ljava/util/LinkedList;
-PLcom/android/server/am/BaseAppStateDurations;->trimEvents(JI)V
-PLcom/android/server/am/BaseAppStateDurations;->trimEvents(JLjava/util/LinkedList;)V
-PLcom/android/server/am/BaseAppStateDurationsTracker$SimplePackageDurations;-><init>(ILjava/lang/String;Lcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;)V
-PLcom/android/server/am/BaseAppStateDurationsTracker$SimplePackageDurations;->addEvent(ZJ)V
-PLcom/android/server/am/BaseAppStateDurationsTracker$UidStateDurations;-><init>(ILcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;)V
-HSPLcom/android/server/am/BaseAppStateDurationsTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
-PLcom/android/server/am/BaseAppStateDurationsTracker;->getTotalDurations(Ljava/lang/String;IJI)J
-PLcom/android/server/am/BaseAppStateDurationsTracker;->getTotalDurations(Ljava/lang/String;IJIZ)J
+PLcom/android/server/am/BaseAppStateDurations;->trimEvents(IJ)V
+PLcom/android/server/am/BaseAppStateDurationsTracker$SimplePackageDurations;-><init>(ILjava/lang/String;Lcom/android/server/am/BaseAppStateEventsTracker$BaseAppStateEventsPolicy;)V
+HSPLcom/android/server/am/BaseAppStateDurationsTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;)V
+PLcom/android/server/am/BaseAppStateDurationsTracker;->dumpEventLocked(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/am/BaseAppStateEvents;J)V
+PLcom/android/server/am/BaseAppStateDurationsTracker;->getTotalDurationsSince(IILjava/lang/String;JJ)J
PLcom/android/server/am/BaseAppStateDurationsTracker;->onUidGone(I)V
-HPLcom/android/server/am/BaseAppStateDurationsTracker;->onUidProcStateChanged(II)V
+PLcom/android/server/am/BaseAppStateDurationsTracker;->onUidProcStateChanged(II)V
PLcom/android/server/am/BaseAppStateDurationsTracker;->trimLocked(J)V
-HPLcom/android/server/am/BaseAppStateEvents;-><init>(ILjava/lang/String;ILjava/lang/String;Lcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;)V
-PLcom/android/server/am/BaseAppStateEvents;-><init>(Lcom/android/server/am/BaseAppStateEvents;)V
-HPLcom/android/server/am/BaseAppStateEvents;->getEarliest(J)J
-HPLcom/android/server/am/BaseAppStateEvents;->getTotalEvents(JI)I
+PLcom/android/server/am/BaseAppStateEvents;-><init>(ILjava/lang/String;ILcom/android/server/am/BaseAppStateEventsTracker$BaseAppStateEventsPolicy;)V
+PLcom/android/server/am/BaseAppStateEvents;-><init>(Lcom/android/server/am/BaseAppStateDurations;)V
+PLcom/android/server/am/BaseAppStateEvents;->dump(Ljava/io/PrintWriter;Ljava/lang/String;J)V
+PLcom/android/server/am/BaseAppStateEvents;->getEarliest(J)J
PLcom/android/server/am/BaseAppStateEvents;->isEmpty()Z
HSPLcom/android/server/am/BaseAppStateEventsTracker$BaseAppStateEventsPolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateEventsTracker;Ljava/lang/String;ZLjava/lang/String;J)V
-HPLcom/android/server/am/BaseAppStateEventsTracker$BaseAppStateEventsPolicy;->getMaxTrackingDuration()J
+PLcom/android/server/am/BaseAppStateEventsTracker$BaseAppStateEventsPolicy;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/am/BaseAppStateEventsTracker$BaseAppStateEventsPolicy;->getExemptionReasonString(IILjava/lang/String;)Ljava/lang/String;
PLcom/android/server/am/BaseAppStateEventsTracker$BaseAppStateEventsPolicy;->onSystemReady()V
-PLcom/android/server/am/BaseAppStateEventsTracker$BaseAppStateEventsPolicy;->updateMaxTrackingDuration()V
-HSPLcom/android/server/am/BaseAppStateEventsTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
+HSPLcom/android/server/am/BaseAppStateEventsTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;)V
+PLcom/android/server/am/BaseAppStateEventsTracker;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/am/BaseAppStateEventsTracker;->dumpEventLocked(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/am/BaseAppStateEvents;J)V
+PLcom/android/server/am/BaseAppStateEventsTracker;->dumpOthers(Ljava/io/PrintWriter;Ljava/lang/String;)V
PLcom/android/server/am/BaseAppStateEventsTracker;->getUidEventsLocked(I)Lcom/android/server/am/BaseAppStateEvents;
-HPLcom/android/server/am/BaseAppStateEventsTracker;->isUidOnTop(I)Z
-HPLcom/android/server/am/BaseAppStateEventsTracker;->onUidGone(I)V
-HPLcom/android/server/am/BaseAppStateEventsTracker;->onUidProcStateChanged(II)V
-PLcom/android/server/am/BaseAppStateEventsTracker;->onUidProcStateChangedUncheckedLocked(II)V
+PLcom/android/server/am/BaseAppStateEventsTracker;->onUidGone(I)V
+PLcom/android/server/am/BaseAppStateEventsTracker;->onUidProcStateChanged(II)V
PLcom/android/server/am/BaseAppStateEventsTracker;->trim(J)V
PLcom/android/server/am/BaseAppStateEventsTracker;->trimLocked(J)V
HSPLcom/android/server/am/BaseAppStatePolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTracker;Ljava/lang/String;Z)V
-PLcom/android/server/am/BaseAppStatePolicy;->getProposedRestrictionLevel(Ljava/lang/String;II)I
-HPLcom/android/server/am/BaseAppStatePolicy;->isEnabled()Z
-PLcom/android/server/am/BaseAppStatePolicy;->onSystemReady()V
-HPLcom/android/server/am/BaseAppStatePolicy;->shouldExemptUid(I)I
+PLcom/android/server/am/BaseAppStatePolicy;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/am/BaseAppStatePolicy;->getProposedRestrictionLevel(IILjava/lang/String;)I
PLcom/android/server/am/BaseAppStatePolicy;->updateTrackerEnabled()V
PLcom/android/server/am/BaseAppStateTimeEvents$BaseTimeEvent;-><init>(J)V
-PLcom/android/server/am/BaseAppStateTimeEvents$BaseTimeEvent;-><init>(Lcom/android/server/am/BaseAppStateTimeEvents$BaseTimeEvent;)V
PLcom/android/server/am/BaseAppStateTimeEvents$BaseTimeEvent;->clone()Ljava/lang/Object;
-PLcom/android/server/am/BaseAppStateTimeEvents$BaseTimeEvent;->getTimestamp()J
PLcom/android/server/am/BaseAppStateTimeEvents$BaseTimeEvent;->trimTo(J)V
-PLcom/android/server/am/BaseAppStateTimeEvents;-><init>(ILjava/lang/String;ILjava/lang/String;Lcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;)V
-PLcom/android/server/am/BaseAppStateTimeEvents;-><init>(Lcom/android/server/am/BaseAppStateTimeEvents;)V
-PLcom/android/server/am/BaseAppStateTimeSlotEvents;-><init>(ILjava/lang/String;IJLjava/lang/String;Lcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;)V
-HPLcom/android/server/am/BaseAppStateTimeSlotEvents;->addEvent(JI)V
-HPLcom/android/server/am/BaseAppStateTimeSlotEvents;->getSlotStartTime(J)J
-HPLcom/android/server/am/BaseAppStateTimeSlotEvents;->getTotalEventsSince(JJI)I
-HPLcom/android/server/am/BaseAppStateTimeSlotEvents;->trimEvents(JI)V
+PLcom/android/server/am/BaseAppStateTimeSlotEvents;-><init>(ILjava/lang/String;JLcom/android/server/am/BaseAppStateEventsTracker$BaseAppStateEventsPolicy;)V
+PLcom/android/server/am/BaseAppStateTimeSlotEvents;->add(Lcom/android/server/am/BaseAppStateEvents;)V
+HPLcom/android/server/am/BaseAppStateTimeSlotEvents;->addEvent(J)V
+HPLcom/android/server/am/BaseAppStateTimeSlotEvents;->getTotalEventsSince(JJ)I+]Ljava/util/Iterator;Ljava/util/LinkedList$DescendingIterator;]Ljava/util/LinkedList;Ljava/util/LinkedList;
+PLcom/android/server/am/BaseAppStateTimeSlotEvents;->trimEvents(IJ)V
PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;)V
PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->$r8$lambda$kd2ZnF50Kq1e96018ClxXCBOF9w(Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;)V
-HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;Ljava/lang/String;ZLjava/lang/String;JLjava/lang/String;I)V
-HPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->getNumOfEventsThreshold()I
-PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->getProposedRestrictionLevel(Ljava/lang/String;II)I
-PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->getTimeSlotSize()J
-PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->onMaxTrackingDurationChanged(J)V
+HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->getProposedRestrictionLevel(IILjava/lang/String;)I
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->onMaxTrackingDurationChanged()V
PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->onSystemReady()V
PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->onTrackerEnabled(Z)V
-PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->onUserInteractionStarted(Ljava/lang/String;I)V
-HPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->shouldExempt(Ljava/lang/String;I)I
PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->updateNumOfEventsThreshold()V
HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$H;-><init>(Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;)V
-HPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$H;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;-><init>(ILjava/lang/String;JLjava/lang/String;Lcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;)V
-PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->-$$Nest$mtrimEvents(Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;)V
-HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
-PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->getTotalEventsLocked(IJ)I
-HPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->handleNewEvent(Ljava/lang/String;I)V
-PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->onMonitorEnabled(Z)V
-HPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->onNewEvent(Ljava/lang/String;I)V
-PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->onNumOfEventsThresholdChanged(I)V
+HPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$H;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/am/BaseAppStateEventsTracker;Lcom/android/server/am/AppBindServiceEventsTracker;,Lcom/android/server/am/AppBroadcastEventsTracker;
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;->formatEventSummary(IJ)Ljava/lang/String;
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;->formatEventTypeLabel(I)Ljava/lang/String;
+HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;)V
PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->onUserInteractionStarted(Ljava/lang/String;I)V
-PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->trimEvents()V
-HSPLcom/android/server/am/BaseAppStateTracker$Injector;-><init>()V
-PLcom/android/server/am/BaseAppStateTracker$Injector;->getActivityManagerInternal()Landroid/app/ActivityManagerInternal;
-PLcom/android/server/am/BaseAppStateTracker$Injector;->getBatteryManagerInternal()Landroid/os/BatteryManagerInternal;
-PLcom/android/server/am/BaseAppStateTracker$Injector;->getIAppOpsService()Lcom/android/internal/app/IAppOpsService;
-PLcom/android/server/am/BaseAppStateTracker$Injector;->getMediaSessionManager()Landroid/media/session/MediaSessionManager;
-PLcom/android/server/am/BaseAppStateTracker$Injector;->getPackageManager()Landroid/content/pm/PackageManager;
-PLcom/android/server/am/BaseAppStateTracker$Injector;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
-PLcom/android/server/am/BaseAppStateTracker$Injector;->getPermissionManager()Landroid/permission/PermissionManager;
-PLcom/android/server/am/BaseAppStateTracker$Injector;->getPermissionManagerServiceInternal()Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
-PLcom/android/server/am/BaseAppStateTracker$Injector;->getPolicy()Lcom/android/server/am/BaseAppStatePolicy;
-PLcom/android/server/am/BaseAppStateTracker$Injector;->getServiceStartForegroundTimeout()J
-PLcom/android/server/am/BaseAppStateTracker$Injector;->getUserManagerInternal()Lcom/android/server/pm/UserManagerInternal;
-HPLcom/android/server/am/BaseAppStateTracker$Injector;->onSystemReady()V
-HSPLcom/android/server/am/BaseAppStateTracker$Injector;->setPolicy(Lcom/android/server/am/BaseAppStatePolicy;)V
-HSPLcom/android/server/am/BaseAppStateTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
-PLcom/android/server/am/BaseAppStateTracker;->getPolicy()Lcom/android/server/am/BaseAppStatePolicy;
-HPLcom/android/server/am/BaseAppStateTracker;->notifyListenersOnStateChange(ILjava/lang/String;ZJI)V
+HSPLcom/android/server/am/BaseAppStateTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;)V
+PLcom/android/server/am/BaseAppStateTracker;->notifyListenersOnStateChange(IIJLjava/lang/String;Z)V
PLcom/android/server/am/BaseAppStateTracker;->onLockedBootCompleted()V
PLcom/android/server/am/BaseAppStateTracker;->onSystemReady()V
PLcom/android/server/am/BaseAppStateTracker;->onUidGone(I)V
PLcom/android/server/am/BaseAppStateTracker;->onUidProcStateChanged(II)V
PLcom/android/server/am/BaseAppStateTracker;->onUserInteractionStarted(Ljava/lang/String;I)V
-PLcom/android/server/am/BaseAppStateTracker;->registerStateListener(Lcom/android/server/am/BaseAppStateTracker$StateListener;)V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda100;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda100;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda101;-><init>(Lcom/android/server/am/BatteryStatsService;ZJ)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda101;->run()V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda104;-><init>(Lcom/android/server/am/BatteryStatsService;IIIIIIIIJJJJ)V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda104;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda106;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IJJ)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda106;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/BatteryStatsService;JJI)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda0;->run$com$android$server$am$BatteryStatsService$$ExternalSyntheticLambda27()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda0;->run$com$android$server$am$BatteryStatsService$$ExternalSyntheticLambda35()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda0;->run$com$android$server$am$BatteryStatsService$$ExternalSyntheticLambda39()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda0;->run$com$android$server$am$BatteryStatsService$$ExternalSyntheticLambda47()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda0;->run$com$android$server$am$BatteryStatsService$$ExternalSyntheticLambda59()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda0;->run()V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda101;-><init>(Lcom/android/server/am/BatteryStatsService;)V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda103;-><init>(Lcom/android/server/am/BatteryStatsService;)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda103;->get()Ljava/lang/Object;
PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/am/BatteryStatsService;JJJ)V
PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda10;->run()V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/am/BatteryStatsService;IIIIIIIIJJJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/am/BatteryStatsService;IIIIIIIIJJJJI)V
HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda11;->run()V
-HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/am/BatteryStatsService;)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda14;->scheduleAlarm(JLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;)V
-HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda15;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda15;->run()V
-HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/am/BatteryStatsService;)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda16;->get()Ljava/lang/Object;
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda17;-><init>(Lcom/android/server/am/BatteryStatsService;IJ[I)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda17;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda18;-><init>(Lcom/android/server/am/BatteryStatsService;ZIJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/am/BatteryStatsService;IJ[I)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda14;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda15;-><init>(IJJLcom/android/server/am/BatteryStatsService;Z)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda15;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda17;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda17;->run()V+]Landroid/os/WorkSource;Landroid/os/WorkSource;]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda18;-><init>(IIIJJJLcom/android/server/am/BatteryStatsService;)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda18;-><init>(Lcom/android/server/am/BatteryStatsService;IIJJJ)V
PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda18;->run()V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda19;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda19;->run()V
HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/BatteryStatsService;IILjava/lang/String;Ljava/lang/String;IZJJ)V
HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda1;->run()V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda20;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda20;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda23;-><init>(Lcom/android/server/am/BatteryStatsService;IJJ)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda23;->run()V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda28;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;Landroid/os/WorkSource;IJJ)V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda28;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda31;-><init>(Lcom/android/server/am/BatteryStatsService;IIJJ)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda31;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda32;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda32;->run()V
-HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda33;-><init>(Lcom/android/server/am/BatteryStatsService;)V
-HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda33;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda34;-><init>(Lcom/android/server/am/BatteryStatsService;IJJ)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda34;->run()V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda35;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IJJ)V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda35;->run()V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda38;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IJJ)V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda38;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda39;-><init>(Lcom/android/server/am/BatteryStatsService;JJ)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda39;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda41;-><init>(Lcom/android/server/am/BatteryStatsService;IZJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda25;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;Landroid/os/WorkSource;IJJI)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda25;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda26;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/telephony/SignalStrength;JJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda26;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda28;-><init>(Lcom/android/server/am/BatteryStatsService;IIJJI)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda28;->run$com$android$server$am$BatteryStatsService$$ExternalSyntheticLambda76()V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda28;->run()V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda29;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda29;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda2;-><init>(IJJLcom/android/server/am/BatteryStatsService;Z)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/am/BatteryStatsService;IJJI)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda2;->run$com$android$server$am$BatteryStatsService$$ExternalSyntheticLambda37()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda2;->run$com$android$server$am$BatteryStatsService$$ExternalSyntheticLambda40()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda2;->run$com$android$server$am$BatteryStatsService$$ExternalSyntheticLambda49()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda2;->run$com$android$server$am$BatteryStatsService$$ExternalSyntheticLambda72()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda2;->run$com$android$server$am$BatteryStatsService$$ExternalSyntheticLambda90()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda2;->run()V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda30;-><init>(Lcom/android/server/am/BatteryStatsService;I)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda30;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda34;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda34;->run()V+]Landroid/os/WorkSource;Landroid/os/WorkSource;]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda36;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;JJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda36;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda38;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;J)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda38;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;JJI)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda3;->run$com$android$server$am$BatteryStatsService$$ExternalSyntheticLambda56()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda3;->run$com$android$server$am$BatteryStatsService$$ExternalSyntheticLambda62()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda41;-><init>(IJJLandroid/os/WorkSource;Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda41;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda43;-><init>(Lcom/android/server/am/BatteryStatsService;JJ)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda43;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda52;-><init>(Lcom/android/server/am/BatteryStatsService;IJJ)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda52;->run()V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda54;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IJJ)V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda54;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda55;-><init>(Lcom/android/server/am/BatteryStatsService;IIJJ)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda55;->run()V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJI)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;Ljava/lang/String;IJJI)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda5;->run$com$android$server$am$BatteryStatsService$$ExternalSyntheticLambda33()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda5;->run$com$android$server$am$BatteryStatsService$$ExternalSyntheticLambda96()V
HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda5;->run()V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda61;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;Landroid/os/WorkSource;IJJ)V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda61;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda65;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;JJJ)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda65;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda67;-><init>(Lcom/android/server/am/BatteryStatsService;)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda67;->run()V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda68;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IIJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda61;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;JJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda61;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda64;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;IJJI)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda64;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;JJI)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda64;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda66;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;IJJI)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda66;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda68;-><init>(IIIJJJLcom/android/server/am/BatteryStatsService;)V
HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda68;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda71;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/telephony/SignalStrength;JJ)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda71;->run()V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda73;-><init>(Lcom/android/server/am/BatteryStatsService;II)V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda73;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda75;-><init>(Lcom/android/server/am/BatteryStatsService;IJJ)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda75;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda76;-><init>(Lcom/android/server/am/BatteryStatsService;IJJJ)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda76;->run()V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda77;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;IJJ)V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda77;->run()V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ZJJI)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda70;-><init>(Lcom/android/server/am/BatteryStatsService;II)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda70;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda79;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;[I)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda79;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;JJI)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IJJI)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda7;->run$com$android$server$am$BatteryStatsService$$ExternalSyntheticLambda13()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda7;->run$com$android$server$am$BatteryStatsService$$ExternalSyntheticLambda19()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda7;->run$com$android$server$am$BatteryStatsService$$ExternalSyntheticLambda31()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda7;->run$com$android$server$am$BatteryStatsService$$ExternalSyntheticLambda51()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda7;->run$com$android$server$am$BatteryStatsService$$ExternalSyntheticLambda57()V
HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda7;->run()V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda80;-><init>(Lcom/android/server/am/BatteryStatsService;IIJJ)V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda80;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda82;-><init>(Lcom/android/server/am/BatteryStatsService;IIJJ)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda82;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda84;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;JJ)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda84;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda93;-><init>(Lcom/android/server/am/BatteryStatsService;IJJJ)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda93;->run()V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda94;-><init>(Lcom/android/server/am/BatteryStatsService;IJJ)V
-PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda94;->run()V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda98;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
-HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda98;->run()V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda80;-><init>(ILjava/lang/Object;)V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda80;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda81;-><init>(IJJLandroid/os/WorkSource;Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda81;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda89;-><init>(Lcom/android/server/am/BatteryStatsService;IJJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda89;->run()V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda95;-><init>(Lcom/android/server/am/BatteryStatsService;)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda95;->getAsDouble()D
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda99;-><init>(Lcom/android/server/am/BatteryStatsService;ZJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda99;->run()V
HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/am/BatteryStatsService;IILjava/lang/String;Ljava/lang/String;IJJ)V
HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda9;->run()V
HSPLcom/android/server/am/BatteryStatsService$1;-><init>(Lcom/android/server/am/BatteryStatsService;)V
HSPLcom/android/server/am/BatteryStatsService$2;-><init>(Lcom/android/server/am/BatteryStatsService;)V
-HSPLcom/android/server/am/BatteryStatsService$3;-><init>(Lcom/android/server/am/BatteryStatsService;)V
+PLcom/android/server/am/BatteryStatsService$2;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V
+PLcom/android/server/am/BatteryStatsService$2;->onLost(Landroid/net/Network;)V
HSPLcom/android/server/am/BatteryStatsService$LocalService;-><init>(Lcom/android/server/am/BatteryStatsService;)V
-HSPLcom/android/server/am/BatteryStatsService$LocalService;-><init>(Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService$LocalService-IA;)V
+PLcom/android/server/am/BatteryStatsService$LocalService;->getBatteryUsageStats(Ljava/util/List;)Ljava/util/List;
+HPLcom/android/server/am/BatteryStatsService$LocalService;->noteCpuWakingBluetoothProxyPacket(IJ)V
+PLcom/android/server/am/BatteryStatsService$LocalService;->noteCpuWakingNetworkPacket(Landroid/net/Network;JI)V
+PLcom/android/server/am/BatteryStatsService$LocalService;->noteJobsDeferred(IIJ)V
PLcom/android/server/am/BatteryStatsService$LocalService;->noteWakingAlarmBatch(J[I)V
+PLcom/android/server/am/BatteryStatsService$LocalService;->noteWakingSoundTrigger(JI)V
PLcom/android/server/am/BatteryStatsService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/am/BatteryStatsService;)V
-PLcom/android/server/am/BatteryStatsService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService$StatsPullAtomCallbackImpl-IA;)V
+PLcom/android/server/am/BatteryStatsService$StatsPullAtomCallbackImpl;->onPullAtom(ILjava/util/List;)I
HSPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;-><init>(Lcom/android/server/am/BatteryStatsService;)V
HSPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->run()V
HSPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->waitWakeup()Ljava/lang/String;
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$05VuxEHPxv9bihz9kfDhxNYcUeg(Lcom/android/server/am/BatteryStatsService;II)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$0fzjwUAJJ2V4v0Cay7jzrTdU40o(Lcom/android/server/am/BatteryStatsService;IJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$5NUW-CFGVE8WF6xUKrwN74CSvqk(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;JJ)V
-HPLcom/android/server/am/BatteryStatsService;->$r8$lambda$5c9rjGQgA92fhsoBQw9Y09QbGbc(Lcom/android/server/am/BatteryStatsService;IILjava/lang/String;Ljava/lang/String;IZJJ)V
-HPLcom/android/server/am/BatteryStatsService;->$r8$lambda$66TrSI7HPB2r78-NHdlVdzcoo0I(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$6bEZ99kbZB3XX6HcnBga24l6aUc(Lcom/android/server/am/BatteryStatsService;IJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$70eN_K-s58p6l5EY1KYPtppqPbc(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$9YKwtw1IoxWGgto0UI2p_sj-9dQ(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$9grG_uws1JUn8unR54WcHbhwn5c(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;JJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$9w4mwgpslyOzt3AR9Ha0zPYHpwA(Lcom/android/server/am/BatteryStatsService;)Ljava/lang/Long;
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$AVovY0AMHiiXsBa6jBuOU51vHcs(Lcom/android/server/am/BatteryStatsService;Landroid/telephony/SignalStrength;JJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$Aja08BbHSMMTwusvvYTiqkGKBAQ(Lcom/android/server/am/BatteryStatsService;ZIJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$C6FpWSABUutRWNI5WWUNUMlbhX8(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$DU-o6h6aLnoKPvLYt0hicwKfF64(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IIJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$E2zZySja-QLWcx-iSOhrqHJf6yg(Lcom/android/server/am/BatteryStatsService;IIIIIIIIJJJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$EgeH5604sbT6COs9ssH7Gnc9_UY(Lcom/android/server/am/BatteryStatsService;ZJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$HB6PHpsf2JO-bV8EaT-6cBmi25g(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
-HPLcom/android/server/am/BatteryStatsService;->$r8$lambda$HPK3ieJxw8HM__PfnZB13lFXngg(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$I4JXgMyze7aO4AYNI9qaJb5DHnE(Lcom/android/server/am/BatteryStatsService;IIJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$IupxpBj-T3QQ4VPpQdAn45060Bk(Lcom/android/server/am/BatteryStatsService;JJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$KWnpYgez9XnIYTdHYwFXQBEtGWA(Lcom/android/server/am/BatteryStatsService;IZJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$L6Emotnq_h9BsIXrMev47t-2ues(Lcom/android/server/am/BatteryStatsService;)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$OMr0PYqqN0qekZ4Oq5EyCc3f6yY(Lcom/android/server/am/BatteryStatsService;IIJJ)V
-HPLcom/android/server/am/BatteryStatsService;->$r8$lambda$QChUd1G6g1_FJ1G5zg2vCcUJr6g(Lcom/android/server/am/BatteryStatsService;IIJJ)V
-HPLcom/android/server/am/BatteryStatsService;->$r8$lambda$S2EACvTzdacLK36CDf9BLXIiBdE(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$TItPRlBD8FUMtanBE_REU0Bc7wI(Lcom/android/server/am/BatteryStatsService;IILjava/lang/String;Ljava/lang/String;IJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$TQviDJidtGDxQAAKQbSr5Ay1c4w(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$UvPVJvfLJUv7DtJ03YLFls1_iP0(Lcom/android/server/am/BatteryStatsService;JLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;)V
-HPLcom/android/server/am/BatteryStatsService;->$r8$lambda$VOEBeS3jOU02rZfcXEfni9PuRDQ(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$WhP3tsKNyaWq4EKerIaU2_tdTiA(Lcom/android/server/am/BatteryStatsService;JJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$WkwX9rcT9mMOtA9bjNLRt0WfrYM(Lcom/android/server/am/BatteryStatsService;JJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$YruM32EUvUPcBIsiSaEzCqeUrpI(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;Landroid/os/WorkSource;IJJ)V
-HPLcom/android/server/am/BatteryStatsService;->$r8$lambda$ZbDBcGr7GIjhlP9uVlhIJ6H-yI0(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$_wc9i2CN7elpRhTTxnndgHftIik(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$dF-U_JxRR-TXS-G38yOId48wzV8(Lcom/android/server/am/BatteryStatsService;IJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$f7YTA7KXLeuJfd9ui_uSHE_x4U4(Lcom/android/server/am/BatteryStatsService;IIJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$g5F2iod5rkuBWKW51BpAD_uY9EM(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;Landroid/os/WorkSource;IJJ)V
-HSPLcom/android/server/am/BatteryStatsService;->$r8$lambda$hQPDLi0WrcPIkhfpv4ZQEEC1HwU(Lcom/android/server/am/BatteryStatsService;)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$hobJ83HHMdRmCpAK-IwwsUAHx5I(Lcom/android/server/am/BatteryStatsService;IJJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$rbX6PWNefdfv6B_50VnXELEMDf0(Lcom/android/server/am/BatteryStatsService;IJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$sqB_0NoPbXgwuh-ZQaJfwVslwMU(Lcom/android/server/am/BatteryStatsService;IJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$v5i86d7gh9jhycRQIAW4bfFGFFo(Lcom/android/server/am/BatteryStatsService;IJ[I)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$vLt9HebbnK7vzU1AuoOmeTlgDO4(Lcom/android/server/am/BatteryStatsService;IIIIIIIIJJJJ)V
-PLcom/android/server/am/BatteryStatsService;->$r8$lambda$xojdHRayd8rEc5I8EnGVfIYEOYE(Lcom/android/server/am/BatteryStatsService;IJJJ)V
-HPLcom/android/server/am/BatteryStatsService;->$r8$lambda$zkXyGfuKC6HI4x68m_-LppSuQG4(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;IJJ)V
HSPLcom/android/server/am/BatteryStatsService;->-$$Nest$smnativeWaitWakeup(Ljava/nio/ByteBuffer;)I
HSPLcom/android/server/am/BatteryStatsService;-><init>(Landroid/content/Context;Ljava/io/File;)V
-HSPLcom/android/server/am/BatteryStatsService;->create(Landroid/content/Context;Ljava/io/File;Landroid/os/Handler;Lcom/android/server/power/stats/BatteryStatsImpl$BatteryCallback;)Lcom/android/server/am/BatteryStatsService;
-HSPLcom/android/server/am/BatteryStatsService;->createAggregatedPowerStatsConfig()Lcom/android/server/power/stats/AggregatedPowerStatsConfig;
-HSPLcom/android/server/am/BatteryStatsService;->createPowerStatsScheduler(Landroid/content/Context;)Lcom/android/server/power/stats/PowerStatsScheduler;
-HSPLcom/android/server/am/BatteryStatsService;->fillLowPowerStats(Lcom/android/internal/os/RpmStats;)V
-HSPLcom/android/server/am/BatteryStatsService;->fillRailDataStats(Lcom/android/internal/os/RailStats;)V
-HSPLcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/server/power/stats/BatteryStatsImpl;
+HPLcom/android/server/am/BatteryStatsService;->awaitCompletion()V
+PLcom/android/server/am/BatteryStatsService;->computeBatteryTimeRemaining()J
+PLcom/android/server/am/BatteryStatsService;->computeChargeTimeRemaining()J
+PLcom/android/server/am/BatteryStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/am/BatteryStatsService;->dumpHelp$1(Ljava/io/PrintWriter;)V
+PLcom/android/server/am/BatteryStatsService;->dumpUnmonitored(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/am/BatteryStatsService;->fillRailDataStats(Lcom/android/internal/os/RailStats;)V
+PLcom/android/server/am/BatteryStatsService;->getBatteryUsageStats(Ljava/util/List;)Ljava/util/List;
+PLcom/android/server/am/BatteryStatsService;->getCellularBatteryStats()Landroid/os/connectivity/CellularBatteryStats;
+PLcom/android/server/am/BatteryStatsService;->getGpsBatteryStats()Landroid/os/connectivity/GpsBatteryStats;
+HPLcom/android/server/am/BatteryStatsService;->getHealthStatsForUidLocked(I)Landroid/os/health/HealthStatsParceler;+]Landroid/os/BatteryStats$ControllerActivityCounter;Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;]Landroid/os/BatteryStats$Counter;Lcom/android/server/power/stats/BatteryStatsImpl$Counter;]Landroid/os/BatteryStats$LongCounter;Lcom/android/server/power/stats/BatteryStatsImpl$1;,Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;,Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;]Landroid/os/BatteryStats$Uid$Pkg$Serv;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;]Landroid/os/BatteryStats$Uid$Pkg;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;]Landroid/os/BatteryStats$Uid$Proc;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;]Landroid/os/BatteryStats$Uid$Sensor;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Sensor;]Landroid/os/BatteryStats$Uid$Wakelock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;]Landroid/os/BatteryStats$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;
PLcom/android/server/am/BatteryStatsService;->getService()Lcom/android/internal/app/IBatteryStats;
-PLcom/android/server/am/BatteryStatsService;->getSubsystemLowPowerStats()Ljava/lang/String;
-HSPLcom/android/server/am/BatteryStatsService;->initPowerManagement()V
+PLcom/android/server/am/BatteryStatsService;->getWifiBatteryStats()Landroid/os/connectivity/WifiBatteryStats;
+PLcom/android/server/am/BatteryStatsService;->isBatteryUsageStatsAccumulationSupported()Z
PLcom/android/server/am/BatteryStatsService;->isCharging()Z
-PLcom/android/server/am/BatteryStatsService;->isOnBattery()Z
-PLcom/android/server/am/BatteryStatsService;->lambda$createPowerStatsScheduler$0(JLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;)V
-PLcom/android/server/am/BatteryStatsService;->lambda$createPowerStatsScheduler$1()Ljava/lang/Long;
-PLcom/android/server/am/BatteryStatsService;->lambda$noteAlarmFinish$22(Ljava/lang/String;Landroid/os/WorkSource;IJJ)V
-HPLcom/android/server/am/BatteryStatsService;->lambda$noteAlarmStart$21(Ljava/lang/String;Landroid/os/WorkSource;IJJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteBleScanReset$90(JJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteChangeWakelockFromSource$26(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteCpuWakingActivity$2(IJ[I)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteCurrentTimeChanged$99(JJJ)V
-HPLcom/android/server/am/BatteryStatsService;->lambda$noteEvent$14(ILjava/lang/String;IJJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteInteractive$42(ZJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteJobFinish$18(Ljava/lang/String;IIJJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteJobStart$17(Ljava/lang/String;IJJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteNetworkStatsEnabled$84()V
-PLcom/android/server/am/BatteryStatsService;->lambda$notePhoneSignalStrength$47(Landroid/telephony/SignalStrength;JJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$notePhoneState$49(IJJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteProcessAnr$11(Ljava/lang/String;IJJ)V
-HPLcom/android/server/am/BatteryStatsService;->lambda$noteProcessDied$101(II)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteProcessFinish$12(Ljava/lang/String;IJJ)V
-HPLcom/android/server/am/BatteryStatsService;->lambda$noteProcessStart$9(Ljava/lang/String;IJJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteScreenBrightness$39(IJJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteScreenState$38(IJJJ)V
-HPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStartLaunch$105(ILjava/lang/String;Ljava/lang/String;JJ)V
-HPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStartRunning$103(ILjava/lang/String;Ljava/lang/String;JJ)V
-HPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStopLaunch$106(ILjava/lang/String;Ljava/lang/String;JJ)V
-HPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStopRunning$104(ILjava/lang/String;Ljava/lang/String;JJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteStartAudio$52(IJJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteStartSensor$32(IIJJ)V
-HPLcom/android/server/am/BatteryStatsService;->lambda$noteStartWakelock$23(IILjava/lang/String;Ljava/lang/String;IZJJ)V
-HPLcom/android/server/am/BatteryStatsService;->lambda$noteStartWakelockFromSource$25(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteStopAudio$53(IJJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteStopSensor$33(IIJJ)V
-HPLcom/android/server/am/BatteryStatsService;->lambda$noteStopWakelock$24(IILjava/lang/String;Ljava/lang/String;IJJ)V
-HPLcom/android/server/am/BatteryStatsService;->lambda$noteStopWakelockFromSource$27(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IJJ)V
-HPLcom/android/server/am/BatteryStatsService;->lambda$noteUidProcessState$13(IIJJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteUserActivity$40(IIJJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteVibratorOff$35(IJJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteVibratorOn$34(IJJJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteWakupAlarm$20(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;JJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteWifiOn$50(JJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$noteWifiSupplicantStateChanged$69(IZJJ)V
-HSPLcom/android/server/am/BatteryStatsService;->lambda$scheduleWriteToDisk$5()V
-PLcom/android/server/am/BatteryStatsService;->lambda$setBatteryState$96(IIIIIIIIJJJJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$setBatteryState$97(IIIIIIIIJJJJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$updateBatteryStatsOnActivityUsage$100(ZIJJ)V
-PLcom/android/server/am/BatteryStatsService;->lambda$updateForegroundTimeIfOnBattery$98(ILjava/lang/String;JJJ)V
-HPLcom/android/server/am/BatteryStatsService;->monitor()V
-HPLcom/android/server/am/BatteryStatsService;->noteAlarmFinish(Ljava/lang/String;Landroid/os/WorkSource;I)V
-HPLcom/android/server/am/BatteryStatsService;->noteAlarmStart(Ljava/lang/String;Landroid/os/WorkSource;I)V
+PLcom/android/server/am/BatteryStatsService;->monitor()V
PLcom/android/server/am/BatteryStatsService;->noteBleScanReset()V
-PLcom/android/server/am/BatteryStatsService;->noteChangeWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V
-PLcom/android/server/am/BatteryStatsService;->noteCpuWakingActivity(IJ[I)V
+PLcom/android/server/am/BatteryStatsService;->noteBleScanResults(Landroid/os/WorkSource;I)V
+PLcom/android/server/am/BatteryStatsService;->noteBleScanStarted(Landroid/os/WorkSource;Z)V
+PLcom/android/server/am/BatteryStatsService;->noteBleScanStopped(Landroid/os/WorkSource;Z)V
+HPLcom/android/server/am/BatteryStatsService;->noteChangeWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V
+PLcom/android/server/am/BatteryStatsService;->noteConnectivityChanged(ILjava/lang/String;)V
+HPLcom/android/server/am/BatteryStatsService;->noteCpuWakingActivity(IJ[I)V
PLcom/android/server/am/BatteryStatsService;->noteCurrentTimeChanged()V
+PLcom/android/server/am/BatteryStatsService;->noteDeviceIdleMode(ILjava/lang/String;I)V
HPLcom/android/server/am/BatteryStatsService;->noteEvent(ILjava/lang/String;I)V
PLcom/android/server/am/BatteryStatsService;->noteInteractive(Z)V
HPLcom/android/server/am/BatteryStatsService;->noteJobFinish(Ljava/lang/String;II)V
HPLcom/android/server/am/BatteryStatsService;->noteJobStart(Ljava/lang/String;I)V
+PLcom/android/server/am/BatteryStatsService;->noteLongPartialWakelockFinish(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/am/BatteryStatsService;->noteLongPartialWakelockFinishFromSource(Ljava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;)V
+PLcom/android/server/am/BatteryStatsService;->noteLongPartialWakelockStart(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/am/BatteryStatsService;->noteLongPartialWakelockStartFromSource(Ljava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;)V
+PLcom/android/server/am/BatteryStatsService;->noteNetworkInterfaceForTransports(Ljava/lang/String;[I)V
PLcom/android/server/am/BatteryStatsService;->noteNetworkStatsEnabled()V
+PLcom/android/server/am/BatteryStatsService;->notePackageInstalled(JLjava/lang/String;)V
+PLcom/android/server/am/BatteryStatsService;->notePhoneOff()V
+PLcom/android/server/am/BatteryStatsService;->notePhoneOn()V
PLcom/android/server/am/BatteryStatsService;->notePhoneSignalStrength(Landroid/telephony/SignalStrength;)V
PLcom/android/server/am/BatteryStatsService;->notePhoneState(I)V
-PLcom/android/server/am/BatteryStatsService;->noteProcessAnr(Ljava/lang/String;I)V
-HPLcom/android/server/am/BatteryStatsService;->noteProcessDied(II)V
-HPLcom/android/server/am/BatteryStatsService;->noteProcessFinish(Ljava/lang/String;I)V
-HPLcom/android/server/am/BatteryStatsService;->noteProcessStart(Ljava/lang/String;I)V
-PLcom/android/server/am/BatteryStatsService;->noteScreenBrightness(I)V
-PLcom/android/server/am/BatteryStatsService;->noteScreenState(I)V
+PLcom/android/server/am/BatteryStatsService;->noteProcessFinish(ILjava/lang/String;)V
+HPLcom/android/server/am/BatteryStatsService;->noteScreenBrightness(II)V
+HPLcom/android/server/am/BatteryStatsService;->noteScreenState(III)V
HPLcom/android/server/am/BatteryStatsService;->noteServiceStartLaunch(ILjava/lang/String;Ljava/lang/String;)V
HPLcom/android/server/am/BatteryStatsService;->noteServiceStartRunning(ILjava/lang/String;Ljava/lang/String;)V
HPLcom/android/server/am/BatteryStatsService;->noteServiceStopLaunch(ILjava/lang/String;Ljava/lang/String;)V
HPLcom/android/server/am/BatteryStatsService;->noteServiceStopRunning(ILjava/lang/String;Ljava/lang/String;)V
PLcom/android/server/am/BatteryStatsService;->noteStartAudio(I)V
-PLcom/android/server/am/BatteryStatsService;->noteStartSensor(II)V
+HPLcom/android/server/am/BatteryStatsService;->noteStartSensor(II)V
HPLcom/android/server/am/BatteryStatsService;->noteStartWakelock(IILjava/lang/String;Ljava/lang/String;IZ)V
HPLcom/android/server/am/BatteryStatsService;->noteStartWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V
PLcom/android/server/am/BatteryStatsService;->noteStopAudio(I)V
-PLcom/android/server/am/BatteryStatsService;->noteStopSensor(II)V
+HPLcom/android/server/am/BatteryStatsService;->noteStopSensor(II)V
HPLcom/android/server/am/BatteryStatsService;->noteStopWakelock(IILjava/lang/String;Ljava/lang/String;I)V
HPLcom/android/server/am/BatteryStatsService;->noteStopWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;I)V
-HPLcom/android/server/am/BatteryStatsService;->noteUidProcessState(II)V
-PLcom/android/server/am/BatteryStatsService;->noteUserActivity(II)V
-PLcom/android/server/am/BatteryStatsService;->noteVibratorOff(I)V
-PLcom/android/server/am/BatteryStatsService;->noteVibratorOn(IJ)V
+PLcom/android/server/am/BatteryStatsService;->noteSyncFinish(Ljava/lang/String;I)V
+PLcom/android/server/am/BatteryStatsService;->noteSyncStart(Ljava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteUserActivity(II)V
+HPLcom/android/server/am/BatteryStatsService;->noteVibratorOff(I)V
+HPLcom/android/server/am/BatteryStatsService;->noteVibratorOn(IJ)V
+PLcom/android/server/am/BatteryStatsService;->noteWakeUp(Ljava/lang/String;I)V
PLcom/android/server/am/BatteryStatsService;->noteWakeupSensorEvent(JII)V
-HPLcom/android/server/am/BatteryStatsService;->noteWakupAlarm(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;)V
+PLcom/android/server/am/BatteryStatsService;->noteWifiOff()V
PLcom/android/server/am/BatteryStatsService;->noteWifiOn()V
+PLcom/android/server/am/BatteryStatsService;->noteWifiRadioPowerState(IJI)V
+PLcom/android/server/am/BatteryStatsService;->noteWifiRssiChanged(I)V
+PLcom/android/server/am/BatteryStatsService;->noteWifiScanStartedFromSource(Landroid/os/WorkSource;)V
+PLcom/android/server/am/BatteryStatsService;->noteWifiScanStoppedFromSource(Landroid/os/WorkSource;)V
+PLcom/android/server/am/BatteryStatsService;->noteWifiState(ILjava/lang/String;)V
PLcom/android/server/am/BatteryStatsService;->noteWifiSupplicantStateChanged(IZ)V
-PLcom/android/server/am/BatteryStatsService;->onSystemReady()V
PLcom/android/server/am/BatteryStatsService;->populatePowerEntityMaps()V
-HSPLcom/android/server/am/BatteryStatsService;->publish()V
-PLcom/android/server/am/BatteryStatsService;->registerStatsCallbacks()V
HSPLcom/android/server/am/BatteryStatsService;->scheduleWriteToDisk()V
HPLcom/android/server/am/BatteryStatsService;->setBatteryState(IIIIIIIIJ)V
-PLcom/android/server/am/BatteryStatsService;->systemServicesReady()V
-PLcom/android/server/am/BatteryStatsService;->updateBatteryStatsOnActivityUsage(Ljava/lang/String;Ljava/lang/String;IIZ)V
-PLcom/android/server/am/BatteryStatsService;->updateForegroundTimeIfOnBattery(Ljava/lang/String;IJ)V
+PLcom/android/server/am/BatteryStatsService;->shouldCollectExternalStats()Z
+PLcom/android/server/am/BatteryStatsService;->syncStats(Ljava/lang/String;)V
+PLcom/android/server/am/BatteryStatsService;->takeUidSnapshot(I)Landroid/os/health/HealthStatsParceler;
PLcom/android/server/am/BroadcastConstants$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/BroadcastConstants;)V
+PLcom/android/server/am/BroadcastConstants$$ExternalSyntheticLambda0;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
PLcom/android/server/am/BroadcastConstants$SettingsObserver;-><init>(Lcom/android/server/am/BroadcastConstants;Landroid/os/Handler;)V
HSPLcom/android/server/am/BroadcastConstants;-><clinit>()V
HSPLcom/android/server/am/BroadcastConstants;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/am/BroadcastConstants;->getDeviceConfigBoolean(Ljava/lang/String;Z)Z
-HSPLcom/android/server/am/BroadcastConstants;->getDeviceConfigInt(Ljava/lang/String;I)I
-HSPLcom/android/server/am/BroadcastConstants;->getDeviceConfigLong(Ljava/lang/String;J)J
-HSPLcom/android/server/am/BroadcastConstants;->getMaxRunningQueues()I
-HSPLcom/android/server/am/BroadcastConstants;->propertyFor(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/server/am/BroadcastConstants;->propertyOverrideFor(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/am/BroadcastConstants;->dump(Landroid/util/IndentingPrintWriter;)V
+HSPLcom/android/server/am/BroadcastConstants;->getDeviceConfigInt(ILjava/lang/String;)I
+HSPLcom/android/server/am/BroadcastConstants;->getDeviceConfigLong(JLjava/lang/String;)J
PLcom/android/server/am/BroadcastConstants;->startObserving(Landroid/os/Handler;Landroid/content/ContentResolver;)V
HSPLcom/android/server/am/BroadcastConstants;->updateDeviceConfigConstants()V
PLcom/android/server/am/BroadcastConstants;->updateSettingsConstants()V
-HPLcom/android/server/am/BroadcastFilter;-><init>(Landroid/content/IntentFilter;Lcom/android/server/am/ReceiverList;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIZZZ)V
+HPLcom/android/server/am/BroadcastController$1;->allowFilterResult(Ljava/util/List;Ljava/lang/Object;)Z+]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/BroadcastController$1;->getIntentFilter(Ljava/lang/Object;)Landroid/content/IntentFilter;
+HPLcom/android/server/am/BroadcastController$1;->isPackageForFilter(Ljava/lang/String;Ljava/lang/Object;)Z
+PLcom/android/server/am/BroadcastController$1;->newArray(I)[Ljava/lang/Object;
+HPLcom/android/server/am/BroadcastController$1;->newResult(Lcom/android/server/pm/Computer;Ljava/lang/Object;IIJ)Ljava/lang/Object;
+PLcom/android/server/am/BroadcastController$StickyBroadcast;-><init>()V
+HSPLcom/android/server/am/BroadcastController;-><init>(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/BroadcastQueueModernImpl;)V
+HPLcom/android/server/am/BroadcastController;->addBroadcastStatLocked(IILjava/lang/String;Ljava/lang/String;J)V
+PLcom/android/server/am/BroadcastController;->broadcastIntentInPackage(Ljava/lang/String;Ljava/lang/String;IIILandroid/content/Intent;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;Landroid/os/Bundle;ZZILandroid/app/BackgroundStartPrivileges;[I)I
+HPLcom/android/server/am/BroadcastController;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZIIIIILandroid/app/BackgroundStartPrivileges;[ILjava/util/function/BiFunction;)I
+HPLcom/android/server/am/BroadcastController;->broadcastIntentLockedTraced(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;ZZIIIIILandroid/app/BackgroundStartPrivileges;[ILjava/util/function/BiFunction;Lcom/android/server/am/BroadcastSentEventRecord;)I+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/IIntentReceiver;megamorphic_types]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/net/Uri;Landroid/net/Uri$OpaqueUri;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/am/BroadcastController;->checkBroadcastFromSystem(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IZLjava/util/List;)V+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/am/BroadcastController;->collectReceiverComponents(Landroid/content/Intent;Ljava/lang/String;II[I[I)Ljava/util/List;+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+PLcom/android/server/am/BroadcastController;->dumpBroadcastStatsLocked(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/am/BroadcastController;->dumpBroadcastsLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)V
+HPLcom/android/server/am/BroadcastController;->enforceBroadcastOptionPermissionsInternal(ILandroid/os/Bundle;)V
+HPLcom/android/server/am/BroadcastController;->getBackgroundLaunchBroadcasts()Landroid/util/ArraySet;
+HPLcom/android/server/am/BroadcastController;->getRealProcessStateLocked(ILcom/android/server/am/ProcessRecord;)I
+HPLcom/android/server/am/BroadcastController;->getRealUidStateLocked(ILcom/android/server/am/ProcessRecord;)I
+HPLcom/android/server/am/BroadcastController;->getWearRemoteIntentAction()Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;
+HPLcom/android/server/am/BroadcastController;->isInstantApp(ILcom/android/server/am/ProcessRecord;Ljava/lang/String;)Z+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
+HPLcom/android/server/am/BroadcastController;->registerReceiverWithFeatureTraced(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent;+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
+HPLcom/android/server/am/BroadcastController;->removeReceiverLocked(Lcom/android/server/am/ReceiverList;)V+]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;]Ljava/util/HashMap;Ljava/util/HashMap;
+HPLcom/android/server/am/BroadcastController;->rotateBroadcastStatsIfNeededLocked()V
+PLcom/android/server/am/BroadcastController;->sendPackageBroadcastLocked(II[Ljava/lang/String;)V
+HPLcom/android/server/am/BroadcastController;->unregisterReceiverTraced(Landroid/content/IIntentReceiver;)V
+HPLcom/android/server/am/BroadcastController;->verifyBroadcastLocked(Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;
+HPLcom/android/server/am/BroadcastController;->writeBroadcastsToProtoLocked(Landroid/util/proto/ProtoOutputStream;)V
+HPLcom/android/server/am/BroadcastFilter;-><init>(Landroid/content/IntentFilter;Lcom/android/server/am/ReceiverList;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIZZZLandroid/content/pm/ApplicationInfo;Lcom/android/server/compat/PlatformCompat;)V
+HPLcom/android/server/am/BroadcastFilter;->calculateAdjustedPriority(IILandroid/content/pm/ApplicationInfo;Lcom/android/server/compat/PlatformCompat;)I
+PLcom/android/server/am/BroadcastFilter;->dumpBroadcastFilterState(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/am/BroadcastFilter;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/am/BroadcastFilter;->toString()Ljava/lang/String;
HSPLcom/android/server/am/BroadcastHistory;-><init>(Lcom/android/server/am/BroadcastConstants;)V
-HPLcom/android/server/am/BroadcastHistory;->addBroadcastToHistoryLocked(Lcom/android/server/am/BroadcastRecord;)V
-HPLcom/android/server/am/BroadcastHistory;->onBroadcastEnqueuedLocked(Lcom/android/server/am/BroadcastRecord;)V
-HPLcom/android/server/am/BroadcastHistory;->onBroadcastFinishedLocked(Lcom/android/server/am/BroadcastRecord;)V
+PLcom/android/server/am/BroadcastHistory;->dumpBroadcastList(Ljava/io/PrintWriter;Ljava/text/SimpleDateFormat;Ljava/util/ArrayList;Ljava/lang/String;)V
PLcom/android/server/am/BroadcastHistory;->ringAdvance(III)I
PLcom/android/server/am/BroadcastLoopers;-><clinit>()V
HPLcom/android/server/am/BroadcastLoopers;->addMyLooper()V
-PLcom/android/server/am/BroadcastProcessQueue$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/am/BroadcastProcessQueue$$ExternalSyntheticLambda0;-><init>(I)V
PLcom/android/server/am/BroadcastProcessQueue$$ExternalSyntheticLambda0;->test(Lcom/android/server/am/BroadcastRecord;I)Z
-PLcom/android/server/am/BroadcastProcessQueue$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/am/BroadcastProcessQueue$$ExternalSyntheticLambda1;->test(Lcom/android/server/am/BroadcastRecord;I)Z
-PLcom/android/server/am/BroadcastProcessQueue;->$r8$lambda$7jvfHufVyE3JdVe4Li1zoeZOhgw(Lcom/android/server/am/BroadcastRecord;I)Z
-PLcom/android/server/am/BroadcastProcessQueue;->$r8$lambda$uTkPoca9PFx_MiK361g77-Nbtxk(Lcom/android/server/am/BroadcastRecord;I)Z
-HPLcom/android/server/am/BroadcastProcessQueue;-><init>(Lcom/android/server/am/BroadcastConstants;Ljava/lang/String;I)V
-HPLcom/android/server/am/BroadcastProcessQueue;->assertHealthLocked()V
-HPLcom/android/server/am/BroadcastProcessQueue;->assertHealthLocked(Ljava/util/ArrayDeque;)V
-HPLcom/android/server/am/BroadcastProcessQueue;->clearDeferredStates(Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;)V
-HPLcom/android/server/am/BroadcastProcessQueue;->enqueueOrReplaceBroadcast(Lcom/android/server/am/BroadcastRecord;ILcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;)Lcom/android/server/am/BroadcastRecord;
+PLcom/android/server/am/BroadcastProcessQueue;-><init>(Lcom/android/server/am/BroadcastConstants;Ljava/lang/String;I)V
+HPLcom/android/server/am/BroadcastProcessQueue;->assertHealthLocked(Ljava/util/ArrayDeque;)V+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/Iterator;Ljava/util/ArrayDeque$DescendingIterator;
HPLcom/android/server/am/BroadcastProcessQueue;->forEachMatchingBroadcast(Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Z)Z
-HPLcom/android/server/am/BroadcastProcessQueue;->forEachMatchingBroadcastInQueue(Ljava/util/ArrayDeque;Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Z)Z
+HPLcom/android/server/am/BroadcastProcessQueue;->forEachMatchingBroadcastInQueue(Ljava/util/ArrayDeque;Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Z)Z+]Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda17;]Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;megamorphic_types]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/Iterator;Ljava/util/ArrayDeque$DeqIterator;
HPLcom/android/server/am/BroadcastProcessQueue;->getActive()Lcom/android/server/am/BroadcastRecord;
-HPLcom/android/server/am/BroadcastProcessQueue;->getActiveAssumedDeliveryCountSinceIdle()I
-HPLcom/android/server/am/BroadcastProcessQueue;->getActiveCountSinceIdle()I
-HPLcom/android/server/am/BroadcastProcessQueue;->getActiveIndex()I
-HPLcom/android/server/am/BroadcastProcessQueue;->getActiveViaColdStart()Z
-HPLcom/android/server/am/BroadcastProcessQueue;->getActiveWasStopped()Z
-HPLcom/android/server/am/BroadcastProcessQueue;->getPreferredSchedulingGroupLocked()I
-HPLcom/android/server/am/BroadcastProcessQueue;->getQueueForBroadcast(Lcom/android/server/am/BroadcastRecord;)Ljava/util/ArrayDeque;
+PLcom/android/server/am/BroadcastProcessQueue;->getActiveIndex()I
+HPLcom/android/server/am/BroadcastProcessQueue;->getQueueForBroadcast(Lcom/android/server/am/BroadcastRecord;)Ljava/util/ArrayDeque;+]Landroid/content/Intent;Landroid/content/Intent;
HPLcom/android/server/am/BroadcastProcessQueue;->getRunnableAt()J
HPLcom/android/server/am/BroadcastProcessQueue;->insertIntoRunnableList(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;)Lcom/android/server/am/BroadcastProcessQueue;
-HPLcom/android/server/am/BroadcastProcessQueue;->invalidateRunnableAt()V
HPLcom/android/server/am/BroadcastProcessQueue;->isActive()Z
-HPLcom/android/server/am/BroadcastProcessQueue;->isEmpty()Z
-HPLcom/android/server/am/BroadcastProcessQueue;->isPendingManifest()Z
-HPLcom/android/server/am/BroadcastProcessQueue;->isPendingOrdered()Z
-HPLcom/android/server/am/BroadcastProcessQueue;->isPendingResultTo()Z
-HPLcom/android/server/am/BroadcastProcessQueue;->isPendingUrgent()Z
+HPLcom/android/server/am/BroadcastProcessQueue;->isEmpty()Z+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
HPLcom/android/server/am/BroadcastProcessQueue;->isProcessWarm()Z
-HPLcom/android/server/am/BroadcastProcessQueue;->isQueueEmpty(Ljava/util/ArrayDeque;)Z
+PLcom/android/server/am/BroadcastProcessQueue;->isQueueEmpty(Ljava/util/ArrayDeque;)Z
HPLcom/android/server/am/BroadcastProcessQueue;->isRunnable()Z
-PLcom/android/server/am/BroadcastProcessQueue;->lambda$updateDeferredStates$0(Lcom/android/server/am/BroadcastRecord;I)Z
-PLcom/android/server/am/BroadcastProcessQueue;->lambda$updateDeferredStates$1(Lcom/android/server/am/BroadcastRecord;I)Z
-HPLcom/android/server/am/BroadcastProcessQueue;->makeActiveIdle()V
-HPLcom/android/server/am/BroadcastProcessQueue;->makeActiveNextPending()V
-HPLcom/android/server/am/BroadcastProcessQueue;->onBroadcastDequeued(Lcom/android/server/am/BroadcastRecord;I)V
-HPLcom/android/server/am/BroadcastProcessQueue;->onBroadcastEnqueued(Lcom/android/server/am/BroadcastRecord;I)V
-HPLcom/android/server/am/BroadcastProcessQueue;->peekNextBroadcast()Lcom/android/internal/os/SomeArgs;
-HPLcom/android/server/am/BroadcastProcessQueue;->peekNextBroadcastRecord()Lcom/android/server/am/BroadcastRecord;
+HPLcom/android/server/am/BroadcastProcessQueue;->makeActiveNextPending()V+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/am/BroadcastProcessQueue;->onBroadcastDequeued(Lcom/android/server/am/BroadcastRecord;I)V+]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/am/BroadcastProcessQueue;->onBroadcastEnqueued(Lcom/android/server/am/BroadcastRecord;I)V+]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/am/BroadcastProcessQueue;->peekNextBroadcastRecord()Lcom/android/server/am/BroadcastRecord;
HPLcom/android/server/am/BroadcastProcessQueue;->queueForNextBroadcast()Ljava/util/ArrayDeque;
-HPLcom/android/server/am/BroadcastProcessQueue;->queueForNextBroadcast(Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;II)Ljava/util/ArrayDeque;
+HPLcom/android/server/am/BroadcastProcessQueue;->queueForNextBroadcast(Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;II)Ljava/util/ArrayDeque;+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
HPLcom/android/server/am/BroadcastProcessQueue;->removeFromRunnableList(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;)Lcom/android/server/am/BroadcastProcessQueue;
-HPLcom/android/server/am/BroadcastProcessQueue;->removeNextBroadcast()Lcom/android/internal/os/SomeArgs;
-HPLcom/android/server/am/BroadcastProcessQueue;->replaceBroadcast(Lcom/android/server/am/BroadcastRecord;I)Lcom/android/server/am/BroadcastRecord;
-HPLcom/android/server/am/BroadcastProcessQueue;->replaceBroadcastInQueue(Ljava/util/ArrayDeque;Lcom/android/server/am/BroadcastRecord;I)Lcom/android/server/am/BroadcastRecord;
-PLcom/android/server/am/BroadcastProcessQueue;->setActiveViaColdStart(Z)V
HPLcom/android/server/am/BroadcastProcessQueue;->setProcessAndUidState(Lcom/android/server/am/ProcessRecord;ZZ)Z
-HPLcom/android/server/am/BroadcastProcessQueue;->setProcessFreezable(Z)Z
-HPLcom/android/server/am/BroadcastProcessQueue;->setProcessInstrumented(Z)Z
-HPLcom/android/server/am/BroadcastProcessQueue;->setProcessPersistent(Z)Z
-HPLcom/android/server/am/BroadcastProcessQueue;->setTimeoutScheduled(Z)V
-HPLcom/android/server/am/BroadcastProcessQueue;->setUidForeground(Z)Z
HPLcom/android/server/am/BroadcastProcessQueue;->shouldBeDeferred()Z
-HPLcom/android/server/am/BroadcastProcessQueue;->timeoutScheduled()Z
HPLcom/android/server/am/BroadcastProcessQueue;->toShortString()Ljava/lang/String;
PLcom/android/server/am/BroadcastProcessQueue;->toString()Ljava/lang/String;
-HPLcom/android/server/am/BroadcastProcessQueue;->traceActiveBegin()V
-HPLcom/android/server/am/BroadcastProcessQueue;->traceActiveEnd()V
-HPLcom/android/server/am/BroadcastProcessQueue;->traceProcessEnd()V
HPLcom/android/server/am/BroadcastProcessQueue;->traceProcessRunningBegin()V
-HPLcom/android/server/am/BroadcastProcessQueue;->traceProcessStartingBegin()V
-HPLcom/android/server/am/BroadcastProcessQueue;->updateDeferredStates(Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;)V
-HPLcom/android/server/am/BroadcastProcessQueue;->updateRunnableAt()V
-HSPLcom/android/server/am/BroadcastQueue;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;Ljava/lang/String;Lcom/android/server/am/BroadcastSkipPolicy;Lcom/android/server/am/BroadcastHistory;)V
+HPLcom/android/server/am/BroadcastProcessQueue;->updateRunnableAt()V+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
+HSPLcom/android/server/am/BroadcastQueue;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;Lcom/android/server/am/BroadcastSkipPolicy;Lcom/android/server/am/BroadcastHistory;)V
PLcom/android/server/am/BroadcastQueue;->checkState(ZLjava/lang/String;)V
HPLcom/android/server/am/BroadcastQueue;->traceBegin(Ljava/lang/String;)I
HPLcom/android/server/am/BroadcastQueue;->traceEnd(I)V
-HPLcom/android/server/am/BroadcastQueueImpl;->logBootCompletedBroadcastCompletionLatencyIfPossible(Lcom/android/server/am/BroadcastRecord;)V
HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda12;->handleMessage(Landroid/os/Message;)Z
-HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;)V
-PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda13;->accept(Lcom/android/server/am/BroadcastRecord;I)V
-HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda14;->accept(Lcom/android/server/am/BroadcastRecord;I)V
-HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda15;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;)V
-PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda15;->accept(Lcom/android/server/am/BroadcastRecord;I)V
-HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;)V
-PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda16;->accept(Lcom/android/server/am/BroadcastRecord;I)V
-PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda17;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastRecord;Landroid/os/BundleMerger;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda18;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastRecord;Landroid/util/ArrayMap;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda18;->test(Lcom/android/server/am/BroadcastRecord;I)Z
-PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda2;-><init>(I)V
+HPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda12;->handleMessage(Landroid/os/Message;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
+HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda17;-><init>(ILjava/lang/Object;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda17;->accept(Lcom/android/server/am/BroadcastRecord;I)V+]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda18;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastRecord;Ljava/lang/Object;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda18;->test(Lcom/android/server/am/BroadcastRecord;I)Z+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/List;Ljava/util/ArrayList;
+HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda1;-><init>(I)V
+HPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
+PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda2;-><init>(II)V
PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda2;->test(Ljava/lang/Object;)Z
-PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda4;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda6;-><init>()V
-HPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda6;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda7;-><init>()V
-PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda8;-><init>()V
-PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda8;->test(Lcom/android/server/am/BroadcastRecord;I)Z
+PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda3;-><init>(Ljava/lang/String;Ljava/util/Set;)V
+PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda3;->test(Lcom/android/server/am/BroadcastRecord;I)Z
+HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda7;-><init>(I)V
+PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda7;->test(Lcom/android/server/am/BroadcastRecord;I)Z
PLcom/android/server/am/BroadcastQueueModernImpl$1;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;)V
HPLcom/android/server/am/BroadcastQueueModernImpl$1;->onUidStateChanged(IIJI)V
-HSPLcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;Landroid/os/Handler;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;->start(Lcom/android/server/am/BroadcastProcessQueue;J)V
-PLcom/android/server/am/BroadcastQueueModernImpl;->$r8$lambda$1141mqPXqA39gHvm8k1RvJok8ag(Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastRecord;I)V
-PLcom/android/server/am/BroadcastQueueModernImpl;->$r8$lambda$IA0U1TDYlMnhLy7gkIvyunwabTM(ILcom/android/server/am/BroadcastProcessQueue;)Z
-PLcom/android/server/am/BroadcastQueueModernImpl;->$r8$lambda$N57OdIm--GFn45qEJb2p5M2c1j0(Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastRecord;I)V
-PLcom/android/server/am/BroadcastQueueModernImpl;->$r8$lambda$XfkV9LwUrXbMSXZ_yM6OxtAr1eQ(Lcom/android/server/am/BroadcastRecord;I)Z
-HPLcom/android/server/am/BroadcastQueueModernImpl;->$r8$lambda$d79aYiK04-SKNC9AXzRIc2ug0aQ(Lcom/android/server/am/BroadcastQueueModernImpl;Landroid/os/Message;)Z
-PLcom/android/server/am/BroadcastQueueModernImpl;->$r8$lambda$e8id_ODzsrGaHviXqkfUDpIVDZk(Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastRecord;I)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->$r8$lambda$hPIdd26uRdf2eZATmbOexHo1U30(Lcom/android/server/am/BroadcastProcessQueue;)Z
-PLcom/android/server/am/BroadcastQueueModernImpl;->$r8$lambda$iMV30Exe2X2No64mUUsPPvg246Q(Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastRecord;I)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->$r8$lambda$wimp7yt_FsAyLko1-wOxiCNCaqo(Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastRecord;Landroid/util/ArrayMap;Lcom/android/server/am/BroadcastRecord;I)Z
-HPLcom/android/server/am/BroadcastQueueModernImpl;->-$$Nest$fgetmLocalHandler(Lcom/android/server/am/BroadcastQueueModernImpl;)Landroid/os/Handler;
+HPLcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;->getPid(Ljava/lang/Object;)I
+HPLcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;->getUid(Ljava/lang/Object;)I
HSPLcom/android/server/am/BroadcastQueueModernImpl;-><clinit>()V
HSPLcom/android/server/am/BroadcastQueueModernImpl;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;Lcom/android/server/am/BroadcastConstants;Lcom/android/server/am/BroadcastConstants;)V
-HSPLcom/android/server/am/BroadcastQueueModernImpl;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;Lcom/android/server/am/BroadcastConstants;Lcom/android/server/am/BroadcastConstants;Lcom/android/server/am/BroadcastSkipPolicy;Lcom/android/server/am/BroadcastHistory;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->applyDeliveryGroupPolicy(Lcom/android/server/am/BroadcastRecord;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->assertHealthLocked()V
-PLcom/android/server/am/BroadcastQueueModernImpl;->backgroundServicesFinishedLocked(I)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->cancelDeliveryTimeoutLocked(Lcom/android/server/am/BroadcastProcessQueue;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->checkAndRemoveWaitingFor()V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->assertHealthLocked()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
PLcom/android/server/am/BroadcastQueueModernImpl;->checkHealth()V
-PLcom/android/server/am/BroadcastQueueModernImpl;->checkHealthLocked()V
HPLcom/android/server/am/BroadcastQueueModernImpl;->checkPendingColdStartValidityLocked()V
-PLcom/android/server/am/BroadcastQueueModernImpl;->cleanupDisabledPackageReceiversLocked(Ljava/lang/String;Ljava/util/Set;I)Z
-HPLcom/android/server/am/BroadcastQueueModernImpl;->containsAllReceivers(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;Landroid/util/ArrayMap;)Z
+PLcom/android/server/am/BroadcastQueueModernImpl;->cleanupDisabledPackageReceiversLocked(ILjava/lang/String;Ljava/util/Set;)Z
HPLcom/android/server/am/BroadcastQueueModernImpl;->demoteFromRunningLocked(Lcom/android/server/am/BroadcastProcessQueue;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->dispatchReceivers(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastRecord;I)Z
-HPLcom/android/server/am/BroadcastQueueModernImpl;->enqueueBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V
+PLcom/android/server/am/BroadcastQueueModernImpl;->dumpLocked(Ljava/io/PrintWriter;ZZZLjava/lang/String;Z)Z
+HPLcom/android/server/am/BroadcastQueueModernImpl;->enqueueBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda17;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayDeque$DescendingIterator;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/ImmutableCollections$ListN;
HPLcom/android/server/am/BroadcastQueueModernImpl;->enqueueUpdateRunningList()V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->finishReceiverActiveLocked(Lcom/android/server/am/BroadcastProcessQueue;ILjava/lang/String;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->finishReceiverLocked(Lcom/android/server/am/ProcessRecord;ILjava/lang/String;Landroid/os/Bundle;ZZ)Z
-HPLcom/android/server/am/BroadcastQueueModernImpl;->forEachMatchingBroadcast(Ljava/util/function/Predicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Z)Z
-HPLcom/android/server/am/BroadcastQueueModernImpl;->getDeliveryState(Lcom/android/server/am/BroadcastRecord;I)I
-HPLcom/android/server/am/BroadcastQueueModernImpl;->getOrCreateProcessQueue(Ljava/lang/String;I)Lcom/android/server/am/BroadcastProcessQueue;
-HPLcom/android/server/am/BroadcastQueueModernImpl;->getPreferredSchedulingGroupLocked(Lcom/android/server/am/ProcessRecord;)I
+HPLcom/android/server/am/BroadcastQueueModernImpl;->finishReceiverActiveLocked(Lcom/android/server/am/BroadcastProcessQueue;ILjava/lang/String;)V+]Lcom/android/server/utils/AnrTimer$FeatureSwitch;Lcom/android/server/utils/AnrTimer$FeatureEnabled;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/am/BroadcastQueueModernImpl;->finishReceiverLocked(Lcom/android/server/am/ProcessRecord;ILjava/lang/String;Landroid/os/Bundle;Z)Z+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/am/BroadcastQueueModernImpl;->forEachMatchingBroadcast(Ljava/util/function/Predicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/function/Predicate;Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda1;,Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda2;
+HPLcom/android/server/am/BroadcastQueueModernImpl;->getOrCreateProcessQueue(Ljava/lang/String;I)Lcom/android/server/am/BroadcastProcessQueue;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HPLcom/android/server/am/BroadcastQueueModernImpl;->getProcessQueue(Lcom/android/server/am/ProcessRecord;)Lcom/android/server/am/BroadcastProcessQueue;
-HPLcom/android/server/am/BroadcastQueueModernImpl;->getProcessQueue(Ljava/lang/String;I)Lcom/android/server/am/BroadcastProcessQueue;
-HPLcom/android/server/am/BroadcastQueueModernImpl;->getRecordsLookupCache()Landroid/util/ArrayMap;
+HPLcom/android/server/am/BroadcastQueueModernImpl;->getProcessQueue(Ljava/lang/String;I)Lcom/android/server/am/BroadcastProcessQueue;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HPLcom/android/server/am/BroadcastQueueModernImpl;->getRunningIndexOf(Lcom/android/server/am/BroadcastProcessQueue;)I
HPLcom/android/server/am/BroadcastQueueModernImpl;->getRunningSize()I
-HPLcom/android/server/am/BroadcastQueueModernImpl;->getRunningUrgentCount()I
-HPLcom/android/server/am/BroadcastQueueModernImpl;->isPendingColdStartValid()Z
+HPLcom/android/server/am/BroadcastQueueModernImpl;->handleProcessFreezableChanged(Lcom/android/server/am/ProcessRecord;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/am/BroadcastQueueModernImpl;->isProcessFreezable(Lcom/android/server/am/ProcessRecord;)Z
-HPLcom/android/server/am/BroadcastQueueModernImpl;->lambda$applyDeliveryGroupPolicy$3(Lcom/android/server/am/BroadcastRecord;Landroid/util/ArrayMap;Lcom/android/server/am/BroadcastRecord;I)Z
-PLcom/android/server/am/BroadcastQueueModernImpl;->lambda$cleanupDisabledPackageReceiversLocked$4(ILcom/android/server/am/BroadcastProcessQueue;)Z
-HPLcom/android/server/am/BroadcastQueueModernImpl;->lambda$new$0(Landroid/os/Message;)Z
-PLcom/android/server/am/BroadcastQueueModernImpl;->lambda$new$10(Lcom/android/server/am/BroadcastRecord;I)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->lambda$new$11(Lcom/android/server/am/BroadcastRecord;I)V
-PLcom/android/server/am/BroadcastQueueModernImpl;->lambda$new$12(Lcom/android/server/am/BroadcastRecord;I)V
-PLcom/android/server/am/BroadcastQueueModernImpl;->lambda$new$13(Lcom/android/server/am/BroadcastRecord;I)V
-PLcom/android/server/am/BroadcastQueueModernImpl;->lambda$onApplicationCleanupLocked$1(Lcom/android/server/am/BroadcastRecord;I)Z
-PLcom/android/server/am/BroadcastQueueModernImpl;->lambda$static$8(Lcom/android/server/am/BroadcastProcessQueue;)Z
-HPLcom/android/server/am/BroadcastQueueModernImpl;->logBroadcastDeliveryEventReported(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;ILjava/lang/Object;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->notifyFinishBroadcast(Lcom/android/server/am/BroadcastRecord;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->notifyFinishReceiver(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;ILjava/lang/Object;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->notifyFinishBroadcast(Lcom/android/server/am/BroadcastRecord;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/ImmutableCollections$ListN;
HPLcom/android/server/am/BroadcastQueueModernImpl;->notifyScheduleReceiver(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;Landroid/content/pm/ResolveInfo;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->notifyScheduleRegisteredReceiver(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastFilter;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->notifyStartedRunning(Lcom/android/server/am/BroadcastProcessQueue;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->notifyStoppedRunning(Lcom/android/server/am/BroadcastProcessQueue;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->onApplicationAttachedLocked(Lcom/android/server/am/ProcessRecord;)Z
-HPLcom/android/server/am/BroadcastQueueModernImpl;->onApplicationCleanupLocked(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->onProcessFreezableChangedLocked(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->promoteToRunningLocked(Lcom/android/server/am/BroadcastProcessQueue;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->refreshProcessQueueLocked(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->refreshProcessQueuesLocked(I)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->removeProcessQueue(Ljava/lang/String;I)Lcom/android/server/am/BroadcastProcessQueue;
-HPLcom/android/server/am/BroadcastQueueModernImpl;->reportUsageStatsBroadcastDispatched(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->scheduleReceiverColdLocked(Lcom/android/server/am/BroadcastProcessQueue;)Z
-HPLcom/android/server/am/BroadcastQueueModernImpl;->scheduleReceiverWarmLocked(Lcom/android/server/am/BroadcastProcessQueue;)Z
-HPLcom/android/server/am/BroadcastQueueModernImpl;->scheduleResultTo(Lcom/android/server/am/BroadcastRecord;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->setDeliveryState(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;ILjava/lang/Object;ILjava/lang/String;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->setQueueProcess(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->notifyStartedRunning(Lcom/android/server/am/BroadcastProcessQueue;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;
+PLcom/android/server/am/BroadcastQueueModernImpl;->onApplicationAttachedLocked(Lcom/android/server/am/ProcessRecord;)Z
+PLcom/android/server/am/BroadcastQueueModernImpl;->onApplicationCleanupLocked(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/BroadcastQueueModernImpl;->removeProcessQueue(Ljava/lang/String;I)Lcom/android/server/am/BroadcastProcessQueue;
+HPLcom/android/server/am/BroadcastQueueModernImpl;->reportUsageStatsBroadcastDispatched(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/util/LongArrayQueue;Landroid/util/LongArrayQueue;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Lcom/android/server/usage/BroadcastResponseStatsLogger$Data;Lcom/android/server/usage/BroadcastResponseStatsLogger$BroadcastEvent;
+HPLcom/android/server/am/BroadcastQueueModernImpl;->scheduleReceiverWarmLocked(Lcom/android/server/am/BroadcastProcessQueue;)Z+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;,Lcom/android/server/am/SameProcessApplicationThread;]Lcom/android/server/utils/AnrTimer$FeatureSwitch;Lcom/android/server/utils/AnrTimer$FeatureEnabled;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/am/BroadcastQueueModernImpl;->scheduleResultTo(Lcom/android/server/am/BroadcastRecord;)V+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;,Lcom/android/server/am/SameProcessApplicationThread;
+HPLcom/android/server/am/BroadcastQueueModernImpl;->setDeliveryState(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;ILjava/lang/Object;ILjava/lang/String;)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/am/BroadcastQueueModernImpl;->setQueueProcess(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
HPLcom/android/server/am/BroadcastQueueModernImpl;->shouldRetire(Lcom/android/server/am/BroadcastProcessQueue;)Z
-HPLcom/android/server/am/BroadcastQueueModernImpl;->shouldSkipReceiver(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastRecord;I)Ljava/lang/String;
-HPLcom/android/server/am/BroadcastQueueModernImpl;->skipAndCancelReplacedBroadcasts(Landroid/util/ArraySet;)V
-PLcom/android/server/am/BroadcastQueueModernImpl;->start(Landroid/content/ContentResolver;)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->startDeliveryTimeoutLocked(Lcom/android/server/am/BroadcastProcessQueue;I)V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->updateRunnableList(Lcom/android/server/am/BroadcastProcessQueue;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->shouldSkipReceiver(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastRecord;I)Ljava/lang/String;+]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/am/BroadcastQueueModernImpl;->updateRunnableList(Lcom/android/server/am/BroadcastProcessQueue;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/am/BroadcastQueueModernImpl;->updateRunningList()V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->updateRunningListLocked()V
-HPLcom/android/server/am/BroadcastQueueModernImpl;->updateWarmProcess(Lcom/android/server/am/BroadcastProcessQueue;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->updateRunningListLocked()V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/am/BroadcastRecord;-><clinit>()V
-HPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;Ljava/util/List;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZIILandroid/app/BackgroundStartPrivileges;ZLjava/util/function/BiFunction;I)V
-HPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;Ljava/util/List;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZILandroid/app/BackgroundStartPrivileges;ZLjava/util/function/BiFunction;I)V
-HPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastRecord;Landroid/content/Intent;)V
-HPLcom/android/server/am/BroadcastRecord;->applySingletonPolicy(Lcom/android/server/am/ActivityManagerService;)V
-PLcom/android/server/am/BroadcastRecord;->areMatchingKeysEqual(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;)Z
-HPLcom/android/server/am/BroadcastRecord;->calculateBlockedUntilBeyondCount(Ljava/util/List;Z)[I
-HPLcom/android/server/am/BroadcastRecord;->calculateDeferUntilActive(ILandroid/app/BroadcastOptions;Landroid/content/IIntentReceiver;ZZ)Z
-HPLcom/android/server/am/BroadcastRecord;->calculateTypeForLogging()I
-HPLcom/android/server/am/BroadcastRecord;->calculateUrgent(Landroid/content/Intent;Landroid/app/BroadcastOptions;)Z
-PLcom/android/server/am/BroadcastRecord;->clearMatchingRecordsCache()V
-PLcom/android/server/am/BroadcastRecord;->containsAllReceivers(Ljava/util/List;)Z
-HPLcom/android/server/am/BroadcastRecord;->containsReceiver(Ljava/lang/Object;)Z
-HPLcom/android/server/am/BroadcastRecord;->getDeliveryGroupMatchingFilter(Lcom/android/server/am/BroadcastRecord;)Landroid/content/IntentFilter;
-HPLcom/android/server/am/BroadcastRecord;->getDeliveryGroupMatchingKeyFragment(Lcom/android/server/am/BroadcastRecord;)Ljava/lang/String;
-HPLcom/android/server/am/BroadcastRecord;->getDeliveryGroupMatchingNamespaceFragment(Lcom/android/server/am/BroadcastRecord;)Ljava/lang/String;
-HPLcom/android/server/am/BroadcastRecord;->getDeliveryGroupPolicy()I
-HPLcom/android/server/am/BroadcastRecord;->getDeliveryState(I)I
-HPLcom/android/server/am/BroadcastRecord;->getHostingRecordTriggerType()Ljava/lang/String;
-HPLcom/android/server/am/BroadcastRecord;->getReceiverIntent(Ljava/lang/Object;)Landroid/content/Intent;
-HPLcom/android/server/am/BroadcastRecord;->getReceiverPriority(Ljava/lang/Object;)I
-HPLcom/android/server/am/BroadcastRecord;->getReceiverProcessName(Ljava/lang/Object;)Ljava/lang/String;
+HPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;Ljava/util/List;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZILandroid/app/BackgroundStartPrivileges;ZLjava/util/function/BiFunction;ILcom/android/server/compat/PlatformCompat;)V
+HPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;Ljava/util/List;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZIILandroid/app/BackgroundStartPrivileges;ZLjava/util/function/BiFunction;ILcom/android/server/compat/PlatformCompat;)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastRecord;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;
+HPLcom/android/server/am/BroadcastRecord;->calculateBlockedUntilBeyondCount(Ljava/util/List;ZLcom/android/server/compat/PlatformCompat;)[I+]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/ImmutableCollections$ListN;
+HPLcom/android/server/am/BroadcastRecord;->calculateChangeStateForReceivers(Ljava/util/List;JLcom/android/server/compat/PlatformCompat;)[Z+]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/am/BroadcastRecord;->calculateDeferUntilActive(ILandroid/app/BroadcastOptions;Landroid/content/IIntentReceiver;ZZ)Z+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;
+HPLcom/android/server/am/BroadcastRecord;->calculateUrgent(Landroid/content/Intent;Landroid/app/BroadcastOptions;)Z+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;
+HPLcom/android/server/am/BroadcastRecord;->containsReceiver(Ljava/lang/Object;)Z+]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/am/BroadcastRecord;->dump(Ljava/io/PrintWriter;Ljava/text/SimpleDateFormat;)V
+PLcom/android/server/am/BroadcastRecord;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/am/BroadcastRecord;->getReceiverIntent(Ljava/lang/Object;)Landroid/content/Intent;+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Ljava/util/function/BiFunction;Lcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda4;
HPLcom/android/server/am/BroadcastRecord;->getReceiverUid(Ljava/lang/Object;)I
-HPLcom/android/server/am/BroadcastRecord;->isAssumedDelivered(I)Z
-HPLcom/android/server/am/BroadcastRecord;->isBlocked(I)Z
-HPLcom/android/server/am/BroadcastRecord;->isCallerInstrumented(Lcom/android/server/am/ProcessRecord;I)Z
-PLcom/android/server/am/BroadcastRecord;->isDeferUntilActive()Z
-PLcom/android/server/am/BroadcastRecord;->isDeliveryStateBeyond(I)Z
HPLcom/android/server/am/BroadcastRecord;->isDeliveryStateTerminal(I)Z
-HPLcom/android/server/am/BroadcastRecord;->isForeground()Z
-HPLcom/android/server/am/BroadcastRecord;->isMatchingKeyNull(Lcom/android/server/am/BroadcastRecord;)Z
-PLcom/android/server/am/BroadcastRecord;->isNoAbort()Z
-HPLcom/android/server/am/BroadcastRecord;->isOffload()Z
+HPLcom/android/server/am/BroadcastRecord;->isForeground()Z+]Landroid/content/Intent;Landroid/content/Intent;
PLcom/android/server/am/BroadcastRecord;->isPrioritized([IZ)Z
PLcom/android/server/am/BroadcastRecord;->isReceiverEquals(Ljava/lang/Object;Ljava/lang/Object;)Z
-HPLcom/android/server/am/BroadcastRecord;->isReplacePending()Z
-HPLcom/android/server/am/BroadcastRecord;->isUrgent()Z
-HPLcom/android/server/am/BroadcastRecord;->matchesDeliveryGroup(Lcom/android/server/am/BroadcastRecord;)Z
-HPLcom/android/server/am/BroadcastRecord;->matchesDeliveryGroup(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;)Z
-HPLcom/android/server/am/BroadcastRecord;->maybeStripForHistory()Lcom/android/server/am/BroadcastRecord;
-HPLcom/android/server/am/BroadcastRecord;->setDeliveryState(IILjava/lang/String;)Z
-PLcom/android/server/am/BroadcastRecord;->setMatchingRecordsCache(Landroid/util/ArrayMap;)V
-HPLcom/android/server/am/BroadcastRecord;->toShortString()Ljava/lang/String;
+HPLcom/android/server/am/BroadcastRecord;->toShortString()Ljava/lang/String;+]Landroid/content/Intent;Landroid/content/Intent;
HPLcom/android/server/am/BroadcastRecord;->toString()Ljava/lang/String;
-HPLcom/android/server/am/BroadcastRecord;->wasDeliveryAttempted(I)Z
+HPLcom/android/server/am/BroadcastSentEventRecord;->logToStatsd()V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/ImmutableCollections$ListN;
+PLcom/android/server/am/BroadcastSentEventRecord;->setBroadcastRecord(Lcom/android/server/am/BroadcastRecord;)V
HSPLcom/android/server/am/BroadcastSkipPolicy;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HPLcom/android/server/am/BroadcastSkipPolicy;->broadcastDescription(Lcom/android/server/am/BroadcastRecord;Landroid/content/ComponentName;)Ljava/lang/String;
-HPLcom/android/server/am/BroadcastSkipPolicy;->disallowBackgroundStart(Lcom/android/server/am/BroadcastRecord;)Z
-HPLcom/android/server/am/BroadcastSkipPolicy;->isSignaturePerm([Ljava/lang/String;)Z
-PLcom/android/server/am/BroadcastSkipPolicy;->noteOpForManifestReceiver(ILcom/android/server/am/BroadcastRecord;Landroid/content/pm/ResolveInfo;Landroid/content/ComponentName;)Z
-HPLcom/android/server/am/BroadcastSkipPolicy;->noteOpForManifestReceiverInner(ILcom/android/server/am/BroadcastRecord;Landroid/content/pm/ResolveInfo;Landroid/content/ComponentName;Ljava/lang/String;)Z
-HPLcom/android/server/am/BroadcastSkipPolicy;->requestStartTargetPermissionsReviewIfNeededLocked(Lcom/android/server/am/BroadcastRecord;Ljava/lang/String;I)Z
-HPLcom/android/server/am/BroadcastSkipPolicy;->shouldSkipMessage(Lcom/android/server/am/BroadcastRecord;Landroid/content/pm/ResolveInfo;)Ljava/lang/String;
-HPLcom/android/server/am/BroadcastSkipPolicy;->shouldSkipMessage(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastFilter;)Ljava/lang/String;
-HPLcom/android/server/am/BroadcastSkipPolicy;->shouldSkipMessage(Lcom/android/server/am/BroadcastRecord;Ljava/lang/Object;)Ljava/lang/String;
-PLcom/android/server/am/BroadcastStats$1;-><init>()V
-HPLcom/android/server/am/BroadcastStats$ActionEntry;-><init>(Ljava/lang/String;)V
-PLcom/android/server/am/BroadcastStats$PackageEntry;-><init>()V
-PLcom/android/server/am/BroadcastStats$ViolationEntry;-><init>()V
+PLcom/android/server/am/BroadcastSkipPolicy;->broadcastDescription(Lcom/android/server/am/BroadcastRecord;Landroid/content/ComponentName;)Ljava/lang/String;
+HPLcom/android/server/am/BroadcastSkipPolicy;->hasPermissionForDataDelivery(Ljava/lang/String;Ljava/lang/String;[Landroid/content/AttributionSource;)Z
+HPLcom/android/server/am/BroadcastSkipPolicy;->requestStartTargetPermissionsReviewIfNeededLocked(Lcom/android/server/am/BroadcastRecord;Ljava/lang/String;I)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;
+HPLcom/android/server/am/BroadcastSkipPolicy;->shouldSkipMessage(Lcom/android/server/am/BroadcastRecord;Ljava/lang/Object;)Ljava/lang/String;+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/permission/IPermissionManager;Lcom/android/server/pm/permission/PermissionManagerService;
+PLcom/android/server/am/BroadcastStats$$ExternalSyntheticOutline0;->m(ILjava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/BroadcastStats$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/am/BroadcastStats$ActionEntry;-><init>(Ljava/lang/String;)V
PLcom/android/server/am/BroadcastStats;-><clinit>()V
PLcom/android/server/am/BroadcastStats;-><init>()V
-HPLcom/android/server/am/BroadcastStats;->addBackgroundCheckViolation(Ljava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/am/BroadcastStats;->addBroadcast(Ljava/lang/String;Ljava/lang/String;IIJ)V
+PLcom/android/server/am/BroadcastStats;->dumpStats(Ljava/io/PrintWriter;Ljava/lang/String;)Z
HSPLcom/android/server/am/CacheOomRanker$1;-><init>(Lcom/android/server/am/CacheOomRanker;)V
-HSPLcom/android/server/am/CacheOomRanker$CacheUseComparator;-><init>()V
-HSPLcom/android/server/am/CacheOomRanker$CacheUseComparator;-><init>(Lcom/android/server/am/CacheOomRanker$CacheUseComparator-IA;)V
-HSPLcom/android/server/am/CacheOomRanker$LastActivityTimeComparator;-><init>()V
-HSPLcom/android/server/am/CacheOomRanker$LastActivityTimeComparator;-><init>(Lcom/android/server/am/CacheOomRanker$LastActivityTimeComparator-IA;)V
-HSPLcom/android/server/am/CacheOomRanker$LastRssComparator;-><init>()V
-HSPLcom/android/server/am/CacheOomRanker$LastRssComparator;-><init>(Lcom/android/server/am/CacheOomRanker$LastRssComparator-IA;)V
-HSPLcom/android/server/am/CacheOomRanker$ProcessDependenciesImpl;-><init>()V
-HSPLcom/android/server/am/CacheOomRanker$ProcessDependenciesImpl;-><init>(Lcom/android/server/am/CacheOomRanker$ProcessDependenciesImpl-IA;)V
-PLcom/android/server/am/CacheOomRanker$RankedProcessRecord;-><init>()V
-PLcom/android/server/am/CacheOomRanker$RankedProcessRecord;-><init>(Lcom/android/server/am/CacheOomRanker$RankedProcessRecord-IA;)V
-HSPLcom/android/server/am/CacheOomRanker$RssComparator;-><init>()V
-HSPLcom/android/server/am/CacheOomRanker$RssComparator;-><init>(Lcom/android/server/am/CacheOomRanker$RssComparator-IA;)V
-HSPLcom/android/server/am/CacheOomRanker$ScoreComparator;-><init>()V
-HSPLcom/android/server/am/CacheOomRanker$ScoreComparator;-><init>(Lcom/android/server/am/CacheOomRanker$ScoreComparator-IA;)V
+PLcom/android/server/am/CacheOomRanker$1;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+HSPLcom/android/server/am/CacheOomRanker$RssComparator;-><init>(I)V
HSPLcom/android/server/am/CacheOomRanker;-><clinit>()V
-HSPLcom/android/server/am/CacheOomRanker;-><init>(Lcom/android/server/am/ActivityManagerService;)V
HSPLcom/android/server/am/CacheOomRanker;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/CacheOomRanker$ProcessDependencies;)V
PLcom/android/server/am/CacheOomRanker;->getNumberToReRank()I
-PLcom/android/server/am/CacheOomRanker;->init(Ljava/util/concurrent/Executor;)V
-PLcom/android/server/am/CacheOomRanker;->updateLruWeight()V
PLcom/android/server/am/CacheOomRanker;->updateNumberToReRank()V
-PLcom/android/server/am/CacheOomRanker;->updateRssWeight()V
-PLcom/android/server/am/CacheOomRanker;->updateUseOomReranking()V
-PLcom/android/server/am/CacheOomRanker;->updateUsesWeight()V
-HSPLcom/android/server/am/CacheOomRanker;->useOomReranking()Z
PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/CachedAppOptimizer;Z)V
-HPLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/CachedAppOptimizer;Z)V
PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda1;->run()V
PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda2;-><init>(Landroid/util/ArraySet;)V
PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda2;->test(Ljava/lang/Object;)Z
PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda4;-><init>()V
-PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/CachedAppOptimizer;ILjava/lang/String;II)V
-PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda5;->run()V
-HSPLcom/android/server/am/CachedAppOptimizer$1;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
-HSPLcom/android/server/am/CachedAppOptimizer$2;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
+HSPLcom/android/server/am/CachedAppOptimizer$1;-><init>(Lcom/android/server/am/CachedAppOptimizer;I)V
+PLcom/android/server/am/CachedAppOptimizer$1;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
HSPLcom/android/server/am/CachedAppOptimizer$3;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
PLcom/android/server/am/CachedAppOptimizer$3;->removeEldestEntry(Ljava/util/Map$Entry;)Z
HSPLcom/android/server/am/CachedAppOptimizer$4;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
-HPLcom/android/server/am/CachedAppOptimizer$4;->add(Lcom/android/server/am/CachedAppOptimizer$SingleCompactionStats;)Z
-HPLcom/android/server/am/CachedAppOptimizer$4;->add(Ljava/lang/Object;)Z
-PLcom/android/server/am/CachedAppOptimizer$5;-><clinit>()V
-HPLcom/android/server/am/CachedAppOptimizer$AggregatedCompactionStats;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
+PLcom/android/server/am/CachedAppOptimizer$4;->add(Ljava/lang/Object;)Z
HPLcom/android/server/am/CachedAppOptimizer$AggregatedCompactionStats;->addMemStats(JJJJJ)V
-HPLcom/android/server/am/CachedAppOptimizer$AggregatedProcessCompactionStats;-><init>(Lcom/android/server/am/CachedAppOptimizer;Ljava/lang/String;)V
-PLcom/android/server/am/CachedAppOptimizer$AggregatedSourceCompactionStats;-><init>(Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer$CompactSource;)V
-HSPLcom/android/server/am/CachedAppOptimizer$CancelCompactReason;->$values()[Lcom/android/server/am/CachedAppOptimizer$CancelCompactReason;
+PLcom/android/server/am/CachedAppOptimizer$AggregatedCompactionStats;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/am/CachedAppOptimizer$AggregatedProcessCompactionStats;-><init>(Ljava/lang/String;)V
+PLcom/android/server/am/CachedAppOptimizer$AggregatedSourceCompactionStats;-><init>(Lcom/android/server/am/CachedAppOptimizer$CompactSource;)V
HSPLcom/android/server/am/CachedAppOptimizer$CancelCompactReason;-><clinit>()V
-HSPLcom/android/server/am/CachedAppOptimizer$CancelCompactReason;-><init>(Ljava/lang/String;I)V
HSPLcom/android/server/am/CachedAppOptimizer$CancelCompactReason;->values()[Lcom/android/server/am/CachedAppOptimizer$CancelCompactReason;
-PLcom/android/server/am/CachedAppOptimizer$CompactProfile;->$values()[Lcom/android/server/am/CachedAppOptimizer$CompactProfile;
PLcom/android/server/am/CachedAppOptimizer$CompactProfile;-><clinit>()V
-PLcom/android/server/am/CachedAppOptimizer$CompactProfile;-><init>(Ljava/lang/String;I)V
-PLcom/android/server/am/CachedAppOptimizer$CompactProfile;->values()[Lcom/android/server/am/CachedAppOptimizer$CompactProfile;
-HSPLcom/android/server/am/CachedAppOptimizer$CompactSource;->$values()[Lcom/android/server/am/CachedAppOptimizer$CompactSource;
HSPLcom/android/server/am/CachedAppOptimizer$CompactSource;-><clinit>()V
-HSPLcom/android/server/am/CachedAppOptimizer$CompactSource;-><init>(Ljava/lang/String;I)V
HSPLcom/android/server/am/CachedAppOptimizer$CompactSource;->values()[Lcom/android/server/am/CachedAppOptimizer$CompactSource;
-HSPLcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies;-><clinit>()V
-HSPLcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies;-><init>()V
-HSPLcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies;-><init>(Lcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies-IA;)V
-HPLcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies;->getRss(I)[J
-HPLcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies;->performCompaction(Lcom/android/server/am/CachedAppOptimizer$CompactProfile;I)V
-PLcom/android/server/am/CachedAppOptimizer$FreezeHandler$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/CachedAppOptimizer$FreezeHandler$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/am/CachedAppOptimizer$FreezeHandler$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/CachedAppOptimizer$FreezeHandler$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/am/CachedAppOptimizer$FreezeHandler$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/CachedAppOptimizer$FreezeHandler$$ExternalSyntheticLambda2;->run()V
-PLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->$r8$lambda$IAfIfEcFxcOjA58aDQgnJCZBAt4(Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->$r8$lambda$JrdK-GOHWyvTveD-A9PVDkKW66c(Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->$r8$lambda$dwqBiMSA3Eh5CYi4YkeM0J8Nh5U(Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies;->getRss(I)[J
+PLcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies;->performCompaction(Lcom/android/server/am/CachedAppOptimizer$CompactProfile;I)V
PLcom/android/server/am/CachedAppOptimizer$FreezeHandler;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
-PLcom/android/server/am/CachedAppOptimizer$FreezeHandler;-><init>(Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer$FreezeHandler-IA;)V
-HPLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->freezeProcess(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->handleBinderFreezerFailure(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V
-HPLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->lambda$freezeProcess$1(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->lambda$freezeProcess$2(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->lambda$handleBinderFreezerFailure$0(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->freezeProcess(Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Random;Ljava/util/Random;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
+PLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->handleBinderFreezerFailure(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V
+HPLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/app/IUidFrozenStateChangedCallback;Landroid/app/ActivityManager$2;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/ProcLocksReader;Lcom/android/internal/os/ProcLocksReader;
HPLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->reportUnfreeze(Lcom/android/server/am/ProcessRecord;IILjava/lang/String;I)V
PLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
-PLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;-><init>(Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer$MemCompactionHandler-IA;)V
-HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->handleMessage(Landroid/os/Message;)V
-HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->shouldOomAdjThrottleCompaction(Lcom/android/server/am/ProcessRecord;)Z
-HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->shouldRssThrottleCompaction(Lcom/android/server/am/CachedAppOptimizer$CompactProfile;ILjava/lang/String;[J)Z
-HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->shouldThrottleMiscCompaction(Lcom/android/server/am/ProcessRecord;I)Z
-HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->shouldTimeThrottleCompaction(Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/CachedAppOptimizer$CompactProfile;Lcom/android/server/am/CachedAppOptimizer$CompactSource;)Z
+HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/am/CachedAppOptimizer$ProcessDependencies;Lcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/EnumMap;Ljava/util/EnumMap;]Ljava/util/LinkedHashMap;Lcom/android/server/am/CachedAppOptimizer$3;,Ljava/util/LinkedHashMap;]Ljava/util/LinkedList;Lcom/android/server/am/CachedAppOptimizer$4;]Ljava/util/Set;Ljava/util/HashSet;
HSPLcom/android/server/am/CachedAppOptimizer$SettingsContentObserver;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
PLcom/android/server/am/CachedAppOptimizer$SingleCompactionStats;-><clinit>()V
HPLcom/android/server/am/CachedAppOptimizer$SingleCompactionStats;-><init>([JLcom/android/server/am/CachedAppOptimizer$CompactSource;Ljava/lang/String;JJJJJIIII)V
-PLcom/android/server/am/CachedAppOptimizer$SingleCompactionStats;->getRssAfterCompaction()[J
-HPLcom/android/server/am/CachedAppOptimizer$SingleCompactionStats;->sendStat()V
-PLcom/android/server/am/CachedAppOptimizer;->$r8$lambda$50-5szAMI3_Lo87NbZnc0_MNRnM(Lcom/android/server/am/CachedAppOptimizer;ILjava/lang/String;II)V
-PLcom/android/server/am/CachedAppOptimizer;->$r8$lambda$IZHebRIY4Ji4Hhts59PebGRJdjw(Lcom/android/server/am/CachedAppOptimizer;Ljava/lang/Integer;Ljava/lang/Integer;)V
-PLcom/android/server/am/CachedAppOptimizer;->$r8$lambda$JxGAByAESCLWWhMw0Ii9S5PJx-0(Lcom/android/server/am/CachedAppOptimizer;Z)V
-PLcom/android/server/am/CachedAppOptimizer;->$r8$lambda$ZH029cmpkk4u9PrurAANG_5gCdM(Lcom/android/server/am/CachedAppOptimizer;ZLcom/android/server/am/ProcessRecord;)V
-HSPLcom/android/server/am/CachedAppOptimizer;->-$$Nest$fgetmAm(Lcom/android/server/am/CachedAppOptimizer;)Lcom/android/server/am/ActivityManagerService;
-PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$fgetmFreezeHandler(Lcom/android/server/am/CachedAppOptimizer;)Landroid/os/Handler;
-PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$fgetmFreezerOverride(Lcom/android/server/am/CachedAppOptimizer;)Z
-HPLcom/android/server/am/CachedAppOptimizer;->-$$Nest$fgetmFrozenProcesses(Lcom/android/server/am/CachedAppOptimizer;)Landroid/util/SparseArray;
-HPLcom/android/server/am/CachedAppOptimizer;->-$$Nest$fgetmPendingCompactionProcesses(Lcom/android/server/am/CachedAppOptimizer;)Ljava/util/ArrayList;
-HPLcom/android/server/am/CachedAppOptimizer;->-$$Nest$fgetmProcLock(Lcom/android/server/am/CachedAppOptimizer;)Lcom/android/server/am/ActivityManagerGlobalLock;
-PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$fgetmProcLocksReader(Lcom/android/server/am/CachedAppOptimizer;)Lcom/android/internal/os/ProcLocksReader;
-HPLcom/android/server/am/CachedAppOptimizer;->-$$Nest$fgetmProcessDependencies(Lcom/android/server/am/CachedAppOptimizer;)Lcom/android/server/am/CachedAppOptimizer$ProcessDependencies;
-PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$fgetmRandom(Lcom/android/server/am/CachedAppOptimizer;)Ljava/util/Random;
-PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$mbinderErrorLocked(Lcom/android/server/am/CachedAppOptimizer;Landroid/util/IntArray;)V
-PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$mfreezeAppAsyncLSP(Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/ProcessRecord;J)V
-HPLcom/android/server/am/CachedAppOptimizer;->-$$Nest$mgetPerProcessAggregatedCompactStat(Lcom/android/server/am/CachedAppOptimizer;Ljava/lang/String;)Lcom/android/server/am/CachedAppOptimizer$AggregatedProcessCompactionStats;
-PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$mgetPerSourceAggregatedCompactStat(Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer$CompactSource;)Lcom/android/server/am/CachedAppOptimizer$AggregatedSourceCompactionStats;
-PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$mpostUidFrozenMessage(Lcom/android/server/am/CachedAppOptimizer;IZ)V
-HPLcom/android/server/am/CachedAppOptimizer;->-$$Nest$mreportOneUidFrozenStateChanged(Lcom/android/server/am/CachedAppOptimizer;IZ)V
+PLcom/android/server/am/CachedAppOptimizer$SingleCompactionStats;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/am/CachedAppOptimizer$SingleCompactionStats;->sendStat()V
PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$smcompactProcess(II)V
-PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$smgetBinderFreezeInfo(I)I
PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$smgetUsedZramMemory()J
PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$smthreadCpuTimeNs()J
-PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$smtraceAppFreeze(Ljava/lang/String;II)V
HSPLcom/android/server/am/CachedAppOptimizer;-><clinit>()V
-HSPLcom/android/server/am/CachedAppOptimizer;-><init>(Lcom/android/server/am/ActivityManagerService;)V
HSPLcom/android/server/am/CachedAppOptimizer;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/CachedAppOptimizer$PropertyChangedCallbackForTest;Lcom/android/server/am/CachedAppOptimizer$ProcessDependencies;)V
-HPLcom/android/server/am/CachedAppOptimizer;->binderError(ILcom/android/server/am/ProcessRecord;III)V
-HPLcom/android/server/am/CachedAppOptimizer;->binderErrorLocked(Landroid/util/IntArray;)V
-HPLcom/android/server/am/CachedAppOptimizer;->cancelCompactionForProcess(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/CachedAppOptimizer$CancelCompactReason;)V
-HPLcom/android/server/am/CachedAppOptimizer;->compactApp(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/CachedAppOptimizer$CompactProfile;Lcom/android/server/am/CachedAppOptimizer$CompactSource;Z)Z
-HPLcom/android/server/am/CachedAppOptimizer;->enableFreezer(Z)Z
-HPLcom/android/server/am/CachedAppOptimizer;->freezeAppAsyncInternalLSP(Lcom/android/server/am/ProcessRecord;JZ)V
-HPLcom/android/server/am/CachedAppOptimizer;->freezeAppAsyncLSP(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/CachedAppOptimizer;->freezeAppAsyncLSP(Lcom/android/server/am/ProcessRecord;J)V
-HPLcom/android/server/am/CachedAppOptimizer;->freezerExemptInstPkg()Z
-HPLcom/android/server/am/CachedAppOptimizer;->getPerProcessAggregatedCompactStat(Ljava/lang/String;)Lcom/android/server/am/CachedAppOptimizer$AggregatedProcessCompactionStats;
-HPLcom/android/server/am/CachedAppOptimizer;->getPerSourceAggregatedCompactStat(Lcom/android/server/am/CachedAppOptimizer$CompactSource;)Lcom/android/server/am/CachedAppOptimizer$AggregatedSourceCompactionStats;
-HPLcom/android/server/am/CachedAppOptimizer;->getUnfreezeReasonCodeFromOomAdjReason(I)I
-PLcom/android/server/am/CachedAppOptimizer;->init()V
-PLcom/android/server/am/CachedAppOptimizer;->isFreezerSupported()Z
-PLcom/android/server/am/CachedAppOptimizer;->killProcess(ILjava/lang/String;II)V
-PLcom/android/server/am/CachedAppOptimizer;->lambda$binderErrorLocked$3(Ljava/lang/Integer;Ljava/lang/Integer;)V
-PLcom/android/server/am/CachedAppOptimizer;->lambda$enableFreezer$0(ZLcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/CachedAppOptimizer;->lambda$killProcess$2(ILjava/lang/String;II)V
-PLcom/android/server/am/CachedAppOptimizer;->lambda$updateUseFreezer$1(Z)V
-HPLcom/android/server/am/CachedAppOptimizer;->onCleanupApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/CachedAppOptimizer;->onOomAdjustChanged(IILcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/CachedAppOptimizer;->onProcessFrozen(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/CachedAppOptimizer;->onProcessFrozenCancelled(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/CachedAppOptimizer;->cancelCompactionForProcess(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/CachedAppOptimizer$CancelCompactReason;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/EnumMap;Ljava/util/EnumMap;
+HPLcom/android/server/am/CachedAppOptimizer;->compactApp(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/CachedAppOptimizer$CompactProfile;Lcom/android/server/am/CachedAppOptimizer$CompactSource;Z)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/EnumMap;Ljava/util/EnumMap;]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;
+PLcom/android/server/am/CachedAppOptimizer;->enableFreezer(Z)Z
+HPLcom/android/server/am/CachedAppOptimizer;->freezeAppAsyncInternalLSP(JLcom/android/server/am/ProcessRecord;Z)V
+PLcom/android/server/am/CachedAppOptimizer;->getUnfreezeReasonCodeFromOomAdjReason(I)I
+PLcom/android/server/am/CachedAppOptimizer;->onCleanupApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/CachedAppOptimizer;->onProcessFrozen(Lcom/android/server/am/ProcessRecord;)V
PLcom/android/server/am/CachedAppOptimizer;->parseProcStateThrottle(Ljava/lang/String;)Z
HPLcom/android/server/am/CachedAppOptimizer;->postUidFrozenMessage(IZ)V
-HPLcom/android/server/am/CachedAppOptimizer;->reportOneUidFrozenStateChanged(IZ)V
HPLcom/android/server/am/CachedAppOptimizer;->reportProcessFreezableChangedLocked(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/CachedAppOptimizer;->resolveCompactionProfile(Lcom/android/server/am/CachedAppOptimizer$CompactProfile;)Lcom/android/server/am/CachedAppOptimizer$CompactProfile;
-HPLcom/android/server/am/CachedAppOptimizer;->traceAppFreeze(Ljava/lang/String;II)V
-HPLcom/android/server/am/CachedAppOptimizer;->unfreezeAppInternalLSP(Lcom/android/server/am/ProcessRecord;IZ)V
-HPLcom/android/server/am/CachedAppOptimizer;->unfreezeAppLSP(Lcom/android/server/am/ProcessRecord;I)V
-PLcom/android/server/am/CachedAppOptimizer;->unfreezeProcess(II)V
-PLcom/android/server/am/CachedAppOptimizer;->unfreezeTemporarily(Lcom/android/server/am/ProcessRecord;I)V
-HPLcom/android/server/am/CachedAppOptimizer;->unfreezeTemporarily(Lcom/android/server/am/ProcessRecord;IJ)V
-PLcom/android/server/am/CachedAppOptimizer;->updateCompactStatsdSampleRate()V
+HPLcom/android/server/am/CachedAppOptimizer;->traceAppFreeze(IILjava/lang/String;)V
+HPLcom/android/server/am/CachedAppOptimizer;->unfreezeAppInternalLSP(Lcom/android/server/am/ProcessRecord;IZ)Z
+PLcom/android/server/am/CachedAppOptimizer;->unfreezeAppLSP(Lcom/android/server/am/ProcessRecord;IZ)V
+HPLcom/android/server/am/CachedAppOptimizer;->unfreezeProcess(II)V
+HPLcom/android/server/am/CachedAppOptimizer;->unfreezeTemporarily(IJLcom/android/server/am/ProcessRecord;)V
PLcom/android/server/am/CachedAppOptimizer;->updateCompactionThrottles()V
HPLcom/android/server/am/CachedAppOptimizer;->updateEarliestFreezableTime(Lcom/android/server/am/ProcessRecord;J)J
PLcom/android/server/am/CachedAppOptimizer;->updateFreezerDebounceTimeout()V
PLcom/android/server/am/CachedAppOptimizer;->updateFreezerExemptInstPkg()V
-PLcom/android/server/am/CachedAppOptimizer;->updateFreezerStatsdSampleRate()V
-PLcom/android/server/am/CachedAppOptimizer;->updateFullDeltaRssThrottle()V
-PLcom/android/server/am/CachedAppOptimizer;->updateFullRssThrottle()V
-PLcom/android/server/am/CachedAppOptimizer;->updateMaxOomAdjThrottle()V
-PLcom/android/server/am/CachedAppOptimizer;->updateMinOomAdjThrottle()V
PLcom/android/server/am/CachedAppOptimizer;->updateProcStateThrottle()V
PLcom/android/server/am/CachedAppOptimizer;->updateUseCompaction()V
PLcom/android/server/am/CachedAppOptimizer;->updateUseFreezer()V
HPLcom/android/server/am/CachedAppOptimizer;->useCompaction()Z
HPLcom/android/server/am/CachedAppOptimizer;->useFreezer()Z
-PLcom/android/server/am/ComponentAliasResolver$$ExternalSyntheticLambda0;-><init>(Landroid/content/pm/ResolveInfo;)V
-HPLcom/android/server/am/ComponentAliasResolver$$ExternalSyntheticLambda1;-><init>(Landroid/content/Intent;Ljava/lang/String;III)V
HSPLcom/android/server/am/ComponentAliasResolver$1;-><init>(Lcom/android/server/am/ComponentAliasResolver;)V
-HPLcom/android/server/am/ComponentAliasResolver$Resolution;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
-HPLcom/android/server/am/ComponentAliasResolver$Resolution;->getAlias()Ljava/lang/Object;
-PLcom/android/server/am/ComponentAliasResolver$Resolution;->getTarget()Ljava/lang/Object;
-HPLcom/android/server/am/ComponentAliasResolver$Resolution;->isAlias()Z
HSPLcom/android/server/am/ComponentAliasResolver;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-PLcom/android/server/am/ComponentAliasResolver;->onSystemReady(ZLjava/lang/String;)V
-HPLcom/android/server/am/ComponentAliasResolver;->resolveComponentAlias(Ljava/util/function/Supplier;)Lcom/android/server/am/ComponentAliasResolver$Resolution;
-HPLcom/android/server/am/ComponentAliasResolver;->resolveReceiver(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;Ljava/lang/String;JIIZ)Lcom/android/server/am/ComponentAliasResolver$Resolution;
-HPLcom/android/server/am/ComponentAliasResolver;->resolveService(Landroid/content/Intent;Ljava/lang/String;III)Lcom/android/server/am/ComponentAliasResolver$Resolution;
-PLcom/android/server/am/ComponentAliasResolver;->update(ZLjava/lang/String;)V
+PLcom/android/server/am/ComponentAliasResolver;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/am/ComponentAliasResolver;->onSystemReady(Ljava/lang/String;Z)V
+PLcom/android/server/am/ComponentAliasResolver;->update(Ljava/lang/String;Z)V
PLcom/android/server/am/ConnectionRecord;-><clinit>()V
HPLcom/android/server/am/ConnectionRecord;-><init>(Lcom/android/server/am/AppBindRecord;Lcom/android/server/wm/ActivityServiceConnectionsHolder;Landroid/app/IServiceConnection;JILandroid/app/PendingIntent;ILjava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;)V
-PLcom/android/server/am/ConnectionRecord;->getFlags()J
+HPLcom/android/server/am/ConnectionRecord;->computeHostOomAdjLSP(Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/ProcessRecord;ZI)V
HPLcom/android/server/am/ConnectionRecord;->hasFlag(I)Z
-HPLcom/android/server/am/ConnectionRecord;->hasFlag(J)Z
+PLcom/android/server/am/ConnectionRecord;->hasFlag(J)Z
HPLcom/android/server/am/ConnectionRecord;->notHasFlag(I)Z
HPLcom/android/server/am/ConnectionRecord;->startAssociationIfNeeded()V
HPLcom/android/server/am/ConnectionRecord;->stopAssociation()V
@@ -6169,1906 +5076,1178 @@ PLcom/android/server/am/ConnectionRecord;->toString()Ljava/lang/String;
HPLcom/android/server/am/ConnectionRecord;->trackProcState(II)V
HPLcom/android/server/am/ContentProviderConnection;-><init>(Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;I)V
HPLcom/android/server/am/ContentProviderConnection;->adjustCounts(II)V
-HPLcom/android/server/am/ContentProviderConnection;->decrementCount(Z)I
-HPLcom/android/server/am/ContentProviderConnection;->incrementCount(Z)I
-HPLcom/android/server/am/ContentProviderConnection;->initializeCount(Z)V
-PLcom/android/server/am/ContentProviderConnection;->stableCount()I
+PLcom/android/server/am/ContentProviderConnection;->computeHostOomAdjLSP(Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/ProcessRecord;ZI)V
+PLcom/android/server/am/ContentProviderConnection;->decrementCount(Z)I
HPLcom/android/server/am/ContentProviderConnection;->startAssociationIfNeeded()V
-HPLcom/android/server/am/ContentProviderConnection;->stopAssociation()V
-HPLcom/android/server/am/ContentProviderConnection;->totalRefCount()I
-HPLcom/android/server/am/ContentProviderConnection;->trackProcState(II)V
-HPLcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ProcessRecord;Landroid/content/pm/ProviderInfo;)V
+PLcom/android/server/am/ContentProviderConnection;->stopAssociation()V
+PLcom/android/server/am/ContentProviderConnection;->toClientString(Ljava/lang/StringBuilder;)V
+PLcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ProcessRecord;Landroid/content/pm/ProviderInfo;)V
HPLcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HPLcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderConnection;ZZ)V
-HPLcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderConnection;ZZ)V
+PLcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda3;->run()V
PLcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ProcessRecord;)V
PLcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V
PLcom/android/server/am/ContentProviderHelper$DevelopmentSettingsObserver;-><init>(Lcom/android/server/am/ContentProviderHelper;)V
PLcom/android/server/am/ContentProviderHelper$DevelopmentSettingsObserver;->onChange()V
-HPLcom/android/server/am/ContentProviderHelper;->$r8$lambda$7SqNWgaMV7-OpTBuN-1CMmNHiyU(Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ProcessRecord;Landroid/content/pm/ProviderInfo;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/am/ContentProviderHelper;->$r8$lambda$WgT9vu5eZilG5Q2yFu6AlQnBbWA(Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderConnection;ZZ)V
-PLcom/android/server/am/ContentProviderHelper;->$r8$lambda$Ybb6ASgJllmnwf29cCLpR_JR-Yg(Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V
-PLcom/android/server/am/ContentProviderHelper;->-$$Nest$fgetmService(Lcom/android/server/am/ContentProviderHelper;)Lcom/android/server/am/ActivityManagerService;
+PLcom/android/server/am/ContentProviderHelper$DevelopmentSettingsObserver;->onChange(ZLandroid/net/Uri;I)V
HSPLcom/android/server/am/ContentProviderHelper;-><clinit>()V
HSPLcom/android/server/am/ContentProviderHelper;-><init>(Lcom/android/server/am/ActivityManagerService;Z)V
-HPLcom/android/server/am/ContentProviderHelper;->canAccessContentProviderFromSdkSandbox(Landroid/content/pm/ProviderInfo;I)Z
-HPLcom/android/server/am/ContentProviderHelper;->checkAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;)Z
HPLcom/android/server/am/ContentProviderHelper;->checkAssociationAndPermissionLocked(Lcom/android/server/am/ProcessRecord;Landroid/content/pm/ProviderInfo;IIZLjava/lang/String;J)V
-HPLcom/android/server/am/ContentProviderHelper;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String;
-HPLcom/android/server/am/ContentProviderHelper;->checkContentProviderAssociation(Lcom/android/server/am/ProcessRecord;ILandroid/content/pm/ProviderInfo;)Ljava/lang/String;
HPLcom/android/server/am/ContentProviderHelper;->checkContentProviderPermission(Landroid/content/pm/ProviderInfo;IIIZLjava/lang/String;)Ljava/lang/String;
-HPLcom/android/server/am/ContentProviderHelper;->checkTime(JLjava/lang/String;)V
-HPLcom/android/server/am/ContentProviderHelper;->cleanupAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;Z)Z
+PLcom/android/server/am/ContentProviderHelper;->checkTime(JLjava/lang/String;)V
+PLcom/android/server/am/ContentProviderHelper;->cleanupAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;Z)Z
HPLcom/android/server/am/ContentProviderHelper;->decProviderCountLocked(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;ZZZ)Z
+PLcom/android/server/am/ContentProviderHelper;->dumpProvidersLocked(Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)V
HPLcom/android/server/am/ContentProviderHelper;->generateApplicationProvidersLocked(Lcom/android/server/am/ProcessRecord;)Ljava/util/List;
HPLcom/android/server/am/ContentProviderHelper;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder;
HPLcom/android/server/am/ContentProviderHelper;->getContentProviderImpl(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;ZI)Landroid/app/ContentProviderHolder;
-PLcom/android/server/am/ContentProviderHelper;->getProviderInfoLocked(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
-PLcom/android/server/am/ContentProviderHelper;->getProviderMap()Lcom/android/server/am/ProviderMap;
HPLcom/android/server/am/ContentProviderHelper;->handleProviderRemoval(Lcom/android/server/am/ContentProviderConnection;ZZ)V
HPLcom/android/server/am/ContentProviderHelper;->hasProviderConnectionLocked(Lcom/android/server/am/ProcessRecord;)Z
HPLcom/android/server/am/ContentProviderHelper;->incProviderCountLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;ZZJLcom/android/server/am/ProcessList;I)Lcom/android/server/am/ContentProviderConnection;
-PLcom/android/server/am/ContentProviderHelper;->installEncryptionUnawareProviders(I)V
PLcom/android/server/am/ContentProviderHelper;->installSystemProviders()V
-HPLcom/android/server/am/ContentProviderHelper;->isAuthorityRedirectedForCloneProfileCached(Ljava/lang/String;)Z
+HPLcom/android/server/am/ContentProviderHelper;->isAuthorityRedirectedForCloneProfileCached(Ljava/lang/String;)Z+]Ljava/util/Map;Ljava/util/HashMap;
HPLcom/android/server/am/ContentProviderHelper;->isProcessAliveLocked(Lcom/android/server/am/ProcessRecord;)Z
-HPLcom/android/server/am/ContentProviderHelper;->isSingletonOrSystemUserOnly(Landroid/content/pm/ProviderInfo;)Z
-HPLcom/android/server/am/ContentProviderHelper;->lambda$checkContentProviderAssociation$4(Lcom/android/server/am/ProcessRecord;Landroid/content/pm/ProviderInfo;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/am/ContentProviderHelper;->lambda$decProviderCountLocked$3(Lcom/android/server/am/ContentProviderConnection;ZZ)V
-HPLcom/android/server/am/ContentProviderHelper;->lambda$installEncryptionUnawareProviders$2(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V
HPLcom/android/server/am/ContentProviderHelper;->maybeUpdateProviderUsageStatsLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V
HPLcom/android/server/am/ContentProviderHelper;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V
-HPLcom/android/server/am/ContentProviderHelper;->refContentProvider(Landroid/os/IBinder;II)Z
-HPLcom/android/server/am/ContentProviderHelper;->removeContentProvider(Landroid/os/IBinder;Z)V
HPLcom/android/server/am/ContentProviderHelper;->removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z
PLcom/android/server/am/ContentProviderHelper;->requestTargetProviderPermissionsReviewIfNeededLocked(Landroid/content/pm/ProviderInfo;Lcom/android/server/am/ProcessRecord;ILandroid/content/Context;)Z
-PLcom/android/server/am/ContentProviderHelper;->unstableProviderDied(Landroid/os/IBinder;)V
-HPLcom/android/server/am/ContentProviderRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ProviderInfo;Landroid/content/pm/ApplicationInfo;Landroid/content/ComponentName;Z)V
+PLcom/android/server/am/ContentProviderRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ProviderInfo;Landroid/content/pm/ApplicationInfo;Landroid/content/ComponentName;Z)V
HPLcom/android/server/am/ContentProviderRecord;->canRunHere(Lcom/android/server/am/ProcessRecord;)Z
+PLcom/android/server/am/ContentProviderRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+PLcom/android/server/am/ContentProviderRecord;->getComponentName()Landroid/content/ComponentName;
HPLcom/android/server/am/ContentProviderRecord;->hasExternalProcessHandles()Z
HPLcom/android/server/am/ContentProviderRecord;->newHolder(Lcom/android/server/am/ContentProviderConnection;Z)Landroid/app/ContentProviderHolder;
-HPLcom/android/server/am/ContentProviderRecord;->onProviderPublishStatusLocked(Z)V
-HPLcom/android/server/am/ContentProviderRecord;->setProcess(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/ContentProviderRecord;->toString()Ljava/lang/String;
+PLcom/android/server/am/ContentProviderRecord;->onProviderPublishStatusLocked(Z)V
+PLcom/android/server/am/ContentProviderRecord;->setProcess(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ContentProviderRecord;->toShortString()Ljava/lang/String;
+PLcom/android/server/am/ContentProviderRecord;->toString()Ljava/lang/String;
PLcom/android/server/am/CoreSettingsObserver$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/CoreSettingsObserver;)V
-PLcom/android/server/am/CoreSettingsObserver$DeviceConfigEntry;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Object;)V
+PLcom/android/server/am/CoreSettingsObserver$DeviceConfigEntry;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Object;)V
PLcom/android/server/am/CoreSettingsObserver;-><clinit>()V
PLcom/android/server/am/CoreSettingsObserver;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HPLcom/android/server/am/CoreSettingsObserver;->beginObserveCoreSettings()V
-HPLcom/android/server/am/CoreSettingsObserver;->getCoreSettingsLocked()Landroid/os/Bundle;
-PLcom/android/server/am/CoreSettingsObserver;->loadDeviceConfigContextEntries(Landroid/content/Context;)V
-HPLcom/android/server/am/CoreSettingsObserver;->populateSettings(Landroid/os/Bundle;Ljava/util/Map;)V
-HPLcom/android/server/am/CoreSettingsObserver;->populateSettingsFromDeviceConfig()V
+PLcom/android/server/am/CoreSettingsObserver;->onChange(Z)V
+PLcom/android/server/am/CoreSettingsObserver;->populateSettings(Landroid/os/Bundle;Ljava/util/Map;)V
PLcom/android/server/am/CoreSettingsObserver;->sendCoreSettings()V
PLcom/android/server/am/DataConnectionStats$PhoneStateListenerExecutor;-><init>(Landroid/os/Handler;)V
-PLcom/android/server/am/DataConnectionStats$PhoneStateListenerImpl;-><init>(Lcom/android/server/am/DataConnectionStats;Ljava/util/concurrent/Executor;)V
+PLcom/android/server/am/DataConnectionStats$PhoneStateListenerImpl;-><init>(Lcom/android/server/am/DataConnectionStats;Lcom/android/server/am/DataConnectionStats$PhoneStateListenerExecutor;)V
PLcom/android/server/am/DataConnectionStats;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
-PLcom/android/server/am/DataConnectionStats;->notePhoneDataConnectionState()V
+HPLcom/android/server/am/DataConnectionStats;->notePhoneDataConnectionState()V
PLcom/android/server/am/DataConnectionStats;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/am/DataConnectionStats;->startMonitoring()V
-PLcom/android/server/am/DataConnectionStats;->updateSimState(Landroid/content/Intent;)V
-HSPLcom/android/server/am/DropboxRateLimiter$DefaultClock;-><init>()V
-HSPLcom/android/server/am/DropboxRateLimiter$DefaultClock;-><init>(Lcom/android/server/am/DropboxRateLimiter$DefaultClock-IA;)V
-PLcom/android/server/am/DropboxRateLimiter$DefaultClock;->uptimeMillis()J
-PLcom/android/server/am/DropboxRateLimiter$ErrorRecord;-><init>(Lcom/android/server/am/DropboxRateLimiter;JI)V
-PLcom/android/server/am/DropboxRateLimiter$ErrorRecord;->getAllowedEntries()I
-PLcom/android/server/am/DropboxRateLimiter$ErrorRecord;->getBufferDuration()J
-PLcom/android/server/am/DropboxRateLimiter$ErrorRecord;->getCount()I
-PLcom/android/server/am/DropboxRateLimiter$ErrorRecord;->getStartTime()J
-PLcom/android/server/am/DropboxRateLimiter$ErrorRecord;->incrementCount()V
-PLcom/android/server/am/DropboxRateLimiter$ErrorRecord;->isRepeated()Z
-PLcom/android/server/am/DropboxRateLimiter$RateLimitResult;-><init>(Lcom/android/server/am/DropboxRateLimiter;ZI)V
-PLcom/android/server/am/DropboxRateLimiter$RateLimitResult;->createHeader()Ljava/lang/String;
-PLcom/android/server/am/DropboxRateLimiter$RateLimitResult;->droppedCountSinceRateLimitActivated()I
-PLcom/android/server/am/DropboxRateLimiter$RateLimitResult;->shouldRateLimit()Z
-PLcom/android/server/am/DropboxRateLimiter;->-$$Nest$fgetmRateLimitAllowedEntries(Lcom/android/server/am/DropboxRateLimiter;)I
-PLcom/android/server/am/DropboxRateLimiter;->-$$Nest$fgetmRateLimitBufferDuration(Lcom/android/server/am/DropboxRateLimiter;)J
HSPLcom/android/server/am/DropboxRateLimiter;-><init>()V
-HSPLcom/android/server/am/DropboxRateLimiter;-><init>(Lcom/android/server/am/DropboxRateLimiter$Clock;)V
-PLcom/android/server/am/DropboxRateLimiter;->errorKey(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/am/DropboxRateLimiter;->init()V
-PLcom/android/server/am/DropboxRateLimiter;->maybeRemoveExpiredRecords(J)V
-HPLcom/android/server/am/DropboxRateLimiter;->shouldRateLimit(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/am/DropboxRateLimiter$RateLimitResult;
-HPLcom/android/server/am/ErrorDialogController;-><init>(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/ErrorDialogController;->clearAllErrorDialogs()V
+PLcom/android/server/am/ErrorDialogController;-><init>(Lcom/android/server/am/ProcessRecord;)V
PLcom/android/server/am/ErrorDialogController;->clearAnrDialogs()V
-PLcom/android/server/am/ErrorDialogController;->clearCrashDialogs()V
-PLcom/android/server/am/ErrorDialogController;->clearCrashDialogs(Z)V
-PLcom/android/server/am/ErrorDialogController;->clearViolationDialogs()V
-PLcom/android/server/am/ErrorDialogController;->clearWaitingDialog()V
-PLcom/android/server/am/EventLogTags;->writeAmMemFactor(II)V
-HPLcom/android/server/am/EventLogTags;->writeAmProcBound(IILjava/lang/String;)V
-HPLcom/android/server/am/EventLogTags;->writeAmProcDied(IILjava/lang/String;II)V
-PLcom/android/server/am/EventLogTags;->writeAmUidActive(I)V
-PLcom/android/server/am/EventLogTags;->writeAmUidIdle(I)V
-PLcom/android/server/am/EventLogTags;->writeAmUidRunning(I)V
-PLcom/android/server/am/EventLogTags;->writeAmUidStopped(I)V
-PLcom/android/server/am/EventLogTags;->writeAmUserStateChanged(II)V
-HPLcom/android/server/am/EventLogTags;->writeAmWtf(IILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/am/EventLogTags;->writeBootProgressAmsReady(J)V
-PLcom/android/server/am/EventLogTags;->writeBootProgressEnableScreen(J)V
-PLcom/android/server/am/EventLogTags;->writeConfigurationChanged(I)V
-PLcom/android/server/am/FeatureFlagsImpl;-><clinit>()V
-PLcom/android/server/am/FeatureFlagsImpl;-><init>()V
-PLcom/android/server/am/FeatureFlagsImpl;->fgsBootCompleted()Z
-PLcom/android/server/am/FeatureFlagsImpl;->load_overrides_backstage_power()V
-HPLcom/android/server/am/FeatureFlagsImpl;->newFgsRestrictionLogic()Z
-HPLcom/android/server/am/FeatureFlagsImpl;->serviceBindingOomAdjPolicy()Z
+PLcom/android/server/am/EventLogTags;->writeAmMeminfo(JJJJJ)V
+PLcom/android/server/am/FeatureFlagsImpl;->init()V
HSPLcom/android/server/am/FgsTempAllowList;-><init>()V
-HPLcom/android/server/am/FgsTempAllowList;->add(IJLjava/lang/Object;)V
+HPLcom/android/server/am/FgsTempAllowList;->add(IJLjava/lang/Object;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/am/FgsTempAllowList;->forEach(Lcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda23;)V
HPLcom/android/server/am/FgsTempAllowList;->get(I)Landroid/util/Pair;
-HPLcom/android/server/am/FgsTempAllowList;->isAllowed(I)Z
-HPLcom/android/server/am/FgsTempAllowList;->removeUid(I)V
PLcom/android/server/am/Flags;-><clinit>()V
+PLcom/android/server/am/Flags;->appStartInfoIsolatedProcess()Z
PLcom/android/server/am/Flags;->fgsBootCompleted()Z
+PLcom/android/server/am/Flags;->fgsDisableSaw()Z
+PLcom/android/server/am/Flags;->followUpOomadjUpdates()Z
+PLcom/android/server/am/Flags;->migrateFullOomadjUpdates()Z
HPLcom/android/server/am/Flags;->newFgsRestrictionLogic()Z
+HPLcom/android/server/am/Flags;->phantomProcessesFix()Z
+HPLcom/android/server/am/Flags;->pushGlobalStateToOomadjuster()Z
+PLcom/android/server/am/Flags;->resetOnForkEnabled()Z
HPLcom/android/server/am/Flags;->serviceBindingOomAdjPolicy()Z
-PLcom/android/server/am/ForegroundServiceTypeLoggerModule$FgsApiRecord;-><init>(IILjava/lang/String;IJ)V
-HPLcom/android/server/am/ForegroundServiceTypeLoggerModule$UidState;-><init>()V
-PLcom/android/server/am/ForegroundServiceTypeLoggerModule$UidState;-><init>(Lcom/android/server/am/ForegroundServiceTypeLoggerModule$UidState-IA;)V
+HPLcom/android/server/am/Flags;->skipUnimportantConnections()Z
+PLcom/android/server/am/Flags;->unfreezeBindPolicyFix()Z
+HPLcom/android/server/am/Flags;->useCpuTimeCapability()Z
+PLcom/android/server/am/ForegroundServiceTypeLoggerModule$FgsApiRecord;-><init>(J)V
+PLcom/android/server/am/ForegroundServiceTypeLoggerModule$UidState;-><init>()V
HSPLcom/android/server/am/ForegroundServiceTypeLoggerModule;-><init>()V
PLcom/android/server/am/ForegroundServiceTypeLoggerModule;->convertFgsTypeToApiTypes(I)Landroid/util/IntArray;
-PLcom/android/server/am/ForegroundServiceTypeLoggerModule;->hasValidActiveFgs(II)Z
-HPLcom/android/server/am/ForegroundServiceTypeLoggerModule;->logForegroundServiceApiEventBegin(IIILjava/lang/String;)J
-PLcom/android/server/am/ForegroundServiceTypeLoggerModule;->logForegroundServiceApiEventEnd(III)J
-HPLcom/android/server/am/ForegroundServiceTypeLoggerModule;->logForegroundServiceStart(IILcom/android/server/am/ServiceRecord;)V
+PLcom/android/server/am/ForegroundServiceTypeLoggerModule;->logFgsApiEvent(Lcom/android/server/am/ServiceRecord;IIIJ)V
+HPLcom/android/server/am/ForegroundServiceTypeLoggerModule;->logForegroundServiceApiEventBegin(II)V
+HPLcom/android/server/am/ForegroundServiceTypeLoggerModule;->logForegroundServiceApiEventEnd(II)V
+PLcom/android/server/am/ForegroundServiceTypeLoggerModule;->logForegroundServiceStart(ILcom/android/server/am/ServiceRecord;)V
+PLcom/android/server/am/ForegroundServiceTypeLoggerModule;->logForegroundServiceStop(ILcom/android/server/am/ServiceRecord;)V
+PLcom/android/server/am/Freezer;->freezeBinder(IIZ)I
+PLcom/android/server/am/Freezer;->getBinderFreezeInfo(I)I
+PLcom/android/server/am/Freezer;->isFreezerSupported()Z
+PLcom/android/server/am/HealthStatsBatteryStatsWriter;-><init>()V
+PLcom/android/server/am/HealthStatsBatteryStatsWriter;->addTimer(Landroid/os/health/HealthStatsWriter;ILandroid/os/BatteryStats$Timer;)V
+HPLcom/android/server/am/HealthStatsBatteryStatsWriter;->addTimers(Landroid/os/health/HealthStatsWriter;ILjava/lang/String;Landroid/os/BatteryStats$Timer;)V
+PLcom/android/server/am/HostingRecord;-><init>(Landroid/content/ComponentName;)V
HSPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;)V
-PLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Landroid/content/ComponentName;)V
-PLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Landroid/content/ComponentName;I)V
-HPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Landroid/content/ComponentName;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Landroid/content/ComponentName;Z)V
PLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Ljava/lang/String;I)V
HSPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;IZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/am/HostingRecord;->getAction()Ljava/lang/String;
-PLcom/android/server/am/HostingRecord;->getDefiningPackageName()Ljava/lang/String;
-PLcom/android/server/am/HostingRecord;->getDefiningProcessName()Ljava/lang/String;
-PLcom/android/server/am/HostingRecord;->getDefiningUid()I
-HPLcom/android/server/am/HostingRecord;->getHostingTypeIdStatsd(Ljava/lang/String;)I
-PLcom/android/server/am/HostingRecord;->getName()Ljava/lang/String;
-PLcom/android/server/am/HostingRecord;->getTriggerType()Ljava/lang/String;
-HPLcom/android/server/am/HostingRecord;->getTriggerTypeForStatsd(Ljava/lang/String;)I
-PLcom/android/server/am/HostingRecord;->getType()Ljava/lang/String;
-PLcom/android/server/am/HostingRecord;->isTopApp()Z
-HPLcom/android/server/am/HostingRecord;->usesAppZygote()Z
-HPLcom/android/server/am/HostingRecord;->usesWebviewZygote()Z
+PLcom/android/server/am/HostingRecord;->getHostingTypeIdStatsd(Ljava/lang/String;)I
HSPLcom/android/server/am/InstrumentationReporter;-><init>()V
HPLcom/android/server/am/IntentBindRecord;-><init>(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent$FilterComparison;)V
PLcom/android/server/am/IntentBindRecord;->collectFlags()J
-PLcom/android/server/am/IntentBindRecord;->dumpInService(Ljava/io/PrintWriter;Ljava/lang/String;)V
PLcom/android/server/am/LmkdConnection$1;-><init>(Lcom/android/server/am/LmkdConnection;)V
PLcom/android/server/am/LmkdConnection$1;->onFileDescriptorEvents(Ljava/io/FileDescriptor;I)I
-PLcom/android/server/am/LmkdConnection;->-$$Nest$mfileDescriptorEventHandler(Lcom/android/server/am/LmkdConnection;Ljava/io/FileDescriptor;I)I
-HSPLcom/android/server/am/LmkdConnection;-><init>(Landroid/os/MessageQueue;Lcom/android/server/am/LmkdConnection$LmkdConnectionListener;)V
-PLcom/android/server/am/LmkdConnection;->connect()Z
-HPLcom/android/server/am/LmkdConnection;->exchange(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Z
-PLcom/android/server/am/LmkdConnection;->fileDescriptorEventHandler(Ljava/io/FileDescriptor;I)I
-HPLcom/android/server/am/LmkdConnection;->isConnected()Z
+HSPLcom/android/server/am/LmkdConnection;-><init>(Landroid/os/MessageQueue;Lcom/android/server/am/ProcessList$1;)V
PLcom/android/server/am/LmkdConnection;->openSocket()Landroid/net/LocalSocket;
-HPLcom/android/server/am/LmkdConnection;->processIncomingData()V
-HPLcom/android/server/am/LmkdConnection;->read(Ljava/nio/ByteBuffer;)I
-PLcom/android/server/am/LmkdConnection;->waitForConnection(J)Z
-HPLcom/android/server/am/LmkdConnection;->write(Ljava/nio/ByteBuffer;)Z
-HPLcom/android/server/am/LmkdStatsReporter;->logKillOccurred(Ljava/io/DataInputStream;II)V
-PLcom/android/server/am/LmkdStatsReporter;->mapKillReason(I)I
+PLcom/android/server/am/LmkdConnection;->processIncomingData()V
+HPLcom/android/server/am/LmkdConnection;->write(Ljava/nio/ByteBuffer;)Z+]Ljava/io/OutputStream;Landroid/net/LocalSocketImpl$SocketOutputStream;
+PLcom/android/server/am/LmkdStatsReporter;->logKillOccurred(Ljava/io/DataInputStream;II)V
HSPLcom/android/server/am/LowMemDetector$LowMemThread;-><init>(Lcom/android/server/am/LowMemDetector;)V
HSPLcom/android/server/am/LowMemDetector$LowMemThread;->run()V
-PLcom/android/server/am/LowMemDetector;->-$$Nest$fgetmPressureStateLock(Lcom/android/server/am/LowMemDetector;)Ljava/lang/Object;
-PLcom/android/server/am/LowMemDetector;->-$$Nest$fputmPressureState(Lcom/android/server/am/LowMemDetector;I)V
HSPLcom/android/server/am/LowMemDetector;->-$$Nest$mwaitForPressure(Lcom/android/server/am/LowMemDetector;)I
-HSPLcom/android/server/am/LowMemDetector;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/LowMemDetector;->getMemFactor()I
-HSPLcom/android/server/am/LowMemDetector;->isAvailable()Z
-PLcom/android/server/am/MemoryStatUtil$MemoryStat;-><init>()V
+HSPLcom/android/server/am/LowMemDetector;-><init>()V
PLcom/android/server/am/MemoryStatUtil;-><clinit>()V
-PLcom/android/server/am/MemoryStatUtil;->hasMemcg()Z
PLcom/android/server/am/MemoryStatUtil;->parseMemoryStatFromProcfs(Ljava/lang/String;)Lcom/android/server/am/MemoryStatUtil$MemoryStat;
-PLcom/android/server/am/MemoryStatUtil;->readFileContents(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/am/MemoryStatUtil;->readMemoryStatFromFilesystem(II)Lcom/android/server/am/MemoryStatUtil$MemoryStat;
-PLcom/android/server/am/MemoryStatUtil;->readMemoryStatFromProcfs(I)Lcom/android/server/am/MemoryStatUtil$MemoryStat;
PLcom/android/server/am/NativeCrashListener;-><init>(Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/am/NativeCrashListener;->run()V
-HSPLcom/android/server/am/OomAdjProfiler$$ExternalSyntheticLambda0;-><init>()V
-HSPLcom/android/server/am/OomAdjProfiler$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/am/OomAdjProfiler$CpuTimes;-><init>(Lcom/android/server/am/OomAdjProfiler;)V
-HSPLcom/android/server/am/OomAdjProfiler$CpuTimes;-><init>(Lcom/android/server/am/OomAdjProfiler;Lcom/android/server/am/OomAdjProfiler$CpuTimes-IA;)V
-HSPLcom/android/server/am/OomAdjProfiler$CpuTimes;->addCpuTimeMs(JZZ)V
-HSPLcom/android/server/am/OomAdjProfiler$CpuTimes;->addCpuTimeUs(J)V
-HSPLcom/android/server/am/OomAdjProfiler$CpuTimes;->addCpuTimeUs(JZZ)V
-HSPLcom/android/server/am/OomAdjProfiler;->$r8$lambda$c4Q2P5csnq29GPhTB7rlnNqRQWs(Lcom/android/server/am/OomAdjProfiler;ZZZ)V
-HSPLcom/android/server/am/OomAdjProfiler;->-$$Nest$fgetmOnBattery(Lcom/android/server/am/OomAdjProfiler;)Z
-HSPLcom/android/server/am/OomAdjProfiler;->-$$Nest$fgetmScreenOff(Lcom/android/server/am/OomAdjProfiler;)Z
-HSPLcom/android/server/am/OomAdjProfiler;-><init>()V
-HSPLcom/android/server/am/OomAdjProfiler;->batteryPowerChanged(Z)V
-HSPLcom/android/server/am/OomAdjProfiler;->oomAdjEnded()V
-HSPLcom/android/server/am/OomAdjProfiler;->oomAdjStarted()V
-HSPLcom/android/server/am/OomAdjProfiler;->scheduleSystemServerCpuTimeUpdate()V
-HSPLcom/android/server/am/OomAdjProfiler;->updateSystemServerCpuTime(ZZZ)V
-HSPLcom/android/server/am/OomAdjuster$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/am/OomAdjuster$$ExternalSyntheticLambda0;->handleMessage(Landroid/os/Message;)Z
-PLcom/android/server/am/OomAdjuster$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/am/OomAdjuster;)V
-HPLcom/android/server/am/OomAdjuster$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/am/OomAdjuster$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/OomAdjuster;)V
+PLcom/android/server/am/OomAdjuster$$ExternalSyntheticLambda1;->handleMessage(Landroid/os/Message;)Z
HSPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;-><init>(Lcom/android/server/am/OomAdjuster;)V
-HPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->initialize(Lcom/android/server/am/ProcessRecord;IZZIIIII)V
-HPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->onOtherActivity()V
-HPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->onPausedActivity()V
-PLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->onStoppingActivity(Z)V
-HPLcom/android/server/am/OomAdjuster;->$r8$lambda$WdlWDnyVtMFVApq1sSUGD1QBVaM(Landroid/os/Message;)Z
-HSPLcom/android/server/am/OomAdjuster;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessList;Lcom/android/server/am/ActiveUids;)V
-HSPLcom/android/server/am/OomAdjuster;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessList;Lcom/android/server/am/ActiveUids;Lcom/android/server/ServiceThread;)V
-HPLcom/android/server/am/OomAdjuster;->applyOomAdjLSP(Lcom/android/server/am/ProcessRecord;ZJJI)Z
-HSPLcom/android/server/am/OomAdjuster;->assignCachedAdjIfNecessary(Ljava/util/ArrayList;)V
-HSPLcom/android/server/am/OomAdjuster;->checkAndEnqueueOomAdjTargetLocked(Lcom/android/server/am/ProcessRecord;)Z
-HPLcom/android/server/am/OomAdjuster;->collectReachableProcessesLocked(Landroid/util/ArraySet;Ljava/util/ArrayList;Lcom/android/server/am/ActiveUids;)Z
-HPLcom/android/server/am/OomAdjuster;->computeOomAdjLSP(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZJZZIZ)Z
+HSPLcom/android/server/am/OomAdjuster$Injector;-><init>()V
+PLcom/android/server/am/OomAdjuster$Injector;->setThreadPriority(II)V
+HSPLcom/android/server/am/OomAdjuster;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessList;Lcom/android/server/am/ActiveUids;Lcom/android/server/ServiceThread;Lcom/android/server/am/ProcessStateController$GlobalState;Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/OomAdjuster$Injector;)V
+HSPLcom/android/server/am/OomAdjuster;->applyLruAdjust(Ljava/util/ArrayList;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/OomAdjuster;->applyOomAdjLSP(Lcom/android/server/am/ProcessRecord;ZJJIZ)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/OomAdjuster;->collectReachableProcessesLocked(Landroid/util/ArraySet;Ljava/util/ArrayList;Lcom/android/server/am/ActiveUids;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/OomAdjuster;->computeOomAdjLSP(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZJZZIZ)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
HPLcom/android/server/am/OomAdjuster;->computeProviderHostOomAdjLSP(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/ProcessRecord;ZZZIIZZ)Z
HPLcom/android/server/am/OomAdjuster;->computeServiceHostOomAdjLSP(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/ProcessRecord;ZZZIIZZ)Z
-HSPLcom/android/server/am/OomAdjuster;->createAdjusterThread()Lcom/android/server/ServiceThread;
-HPLcom/android/server/am/OomAdjuster;->enqueueOomAdjTargetLocked(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/OomAdjuster;->getBfslCapabilityFromClient(Lcom/android/server/am/ProcessRecord;)I
-HPLcom/android/server/am/OomAdjuster;->getDefaultCapability(Lcom/android/server/am/ProcessRecord;I)I
-HPLcom/android/server/am/OomAdjuster;->getInitialAdj(Lcom/android/server/am/ProcessRecord;)I
-HPLcom/android/server/am/OomAdjuster;->getInitialCapability(Lcom/android/server/am/ProcessRecord;)I
-HPLcom/android/server/am/OomAdjuster;->getInitialIsCurBoundByNonBgRestrictedApp(Lcom/android/server/am/ProcessRecord;)Z
-HPLcom/android/server/am/OomAdjuster;->getInitialProcState(Lcom/android/server/am/ProcessRecord;)I
-HPLcom/android/server/am/OomAdjuster;->idleUidsLocked()V
-PLcom/android/server/am/OomAdjuster;->initSettings()V
-HPLcom/android/server/am/OomAdjuster;->isChangeEnabled(ILandroid/content/pm/ApplicationInfo;Z)Z
-PLcom/android/server/am/OomAdjuster;->isScreenOnOrAnimatingLocked(Lcom/android/server/am/ProcessStateRecord;)Z
-HPLcom/android/server/am/OomAdjuster;->lambda$new$0(Landroid/os/Message;)Z
-HPLcom/android/server/am/OomAdjuster;->maybeUpdateLastTopTime(Lcom/android/server/am/ProcessStateRecord;J)V
-HPLcom/android/server/am/OomAdjuster;->maybeUpdateUsageStatsLSP(Lcom/android/server/am/ProcessRecord;J)V
-PLcom/android/server/am/OomAdjuster;->onProcessEndLocked(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/OomAdjuster;->onProcessOomAdjChanged(Lcom/android/server/am/ProcessRecord;I)V
-PLcom/android/server/am/OomAdjuster;->onProcessStateChanged(Lcom/android/server/am/ProcessRecord;I)V
+PLcom/android/server/am/OomAdjuster;->dumpCacheOomRankerSettings(Ljava/io/PrintWriter;)V
+PLcom/android/server/am/OomAdjuster;->dumpCachedAppOptimizerSettings(Ljava/io/PrintWriter;)V
+HPLcom/android/server/am/OomAdjuster;->enqueuePendingTopAppIfNecessaryLSP()I+]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
+HPLcom/android/server/am/OomAdjuster;->evaluateConnectionPrelude(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/OomAdjuster;->evaluateProviderConnectionAdd(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/OomAdjuster;->getDefaultCapability(ILcom/android/server/am/ProcessRecord;)I
+HPLcom/android/server/am/OomAdjuster;->idleUidsLocked()V+]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/am/OomAdjuster;->isDeviceFullyAwake()Z
+HPLcom/android/server/am/OomAdjuster;->maybeSetProcessFollowUpUpdateLocked(JJLcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/OomAdjuster;->maybeUpdateUsageStatsLSP(Lcom/android/server/am/ProcessRecord;J)V+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;
HSPLcom/android/server/am/OomAdjuster;->oomAdjReasonToString(I)Ljava/lang/String;
-HSPLcom/android/server/am/OomAdjuster;->performUpdateOomAdjLSP(I)V
-HPLcom/android/server/am/OomAdjuster;->performUpdateOomAdjLSP(Lcom/android/server/am/ProcessRecord;I)Z
-HPLcom/android/server/am/OomAdjuster;->performUpdateOomAdjLSP(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;JI)Z
-HPLcom/android/server/am/OomAdjuster;->performUpdateOomAdjPendingTargetsLocked(I)V
-HSPLcom/android/server/am/OomAdjuster;->postUpdateOomAdjInnerLSP(ILcom/android/server/am/ActiveUids;JJJ)V
-HPLcom/android/server/am/OomAdjuster;->removeOomAdjTargetLocked(Lcom/android/server/am/ProcessRecord;Z)V
-HSPLcom/android/server/am/OomAdjuster;->resetUidRecordsLsp(Lcom/android/server/am/ActiveUids;)V
-HPLcom/android/server/am/OomAdjuster;->setAppIdTempAllowlistStateLSP(IZ)V
+HSPLcom/android/server/am/OomAdjuster;->postUpdateOomAdjInnerLSP(ILcom/android/server/am/ActiveUids;JJJZ)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/OomAdjuster;->scheduleFollowUpOomAdjusterUpdateLocked(JJ)V
HPLcom/android/server/am/OomAdjuster;->setAttachingProcessStatesLSP(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/OomAdjuster;->setIntermediateAdjLSP(Lcom/android/server/am/ProcessRecord;III)I
-HPLcom/android/server/am/OomAdjuster;->setIntermediateProcStateLSP(Lcom/android/server/am/ProcessRecord;II)V
+HPLcom/android/server/am/OomAdjuster;->setIntermediateAdjLSP(Lcom/android/server/am/ProcessRecord;II)I
HPLcom/android/server/am/OomAdjuster;->setIntermediateSchedGroupLSP(Lcom/android/server/am/ProcessStateRecord;I)V
-HPLcom/android/server/am/OomAdjuster;->setUidTempAllowlistStateLSP(IZ)V
-HSPLcom/android/server/am/OomAdjuster;->shouldKillExcessiveProcesses(J)Z
-HPLcom/android/server/am/OomAdjuster;->shouldSkipDueToCycle(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessStateRecord;IIZ)Z
-HPLcom/android/server/am/OomAdjuster;->unfreezeTemporarily(Lcom/android/server/am/ProcessRecord;I)V
-HSPLcom/android/server/am/OomAdjuster;->updateAndTrimProcessLSP(JJJLcom/android/server/am/ActiveUids;I)Z
-HPLcom/android/server/am/OomAdjuster;->updateAppFreezeStateLSP(Lcom/android/server/am/ProcessRecord;IZ)V
-HPLcom/android/server/am/OomAdjuster;->updateAppUidRecIfNecessaryLSP(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/OomAdjuster;->updateAppUidRecLSP(Lcom/android/server/am/ProcessRecord;)V
-HSPLcom/android/server/am/OomAdjuster;->updateOomAdjInnerLSP(ILcom/android/server/am/ProcessRecord;Ljava/util/ArrayList;Lcom/android/server/am/ActiveUids;ZZ)V
+PLcom/android/server/am/OomAdjuster;->setProcessGroup(IILjava/lang/String;)V
+HPLcom/android/server/am/OomAdjuster;->unfreezeTemporarily(ILcom/android/server/am/ProcessRecord;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/OomAdjuster;->updateAppFreezeStateLSP(Lcom/android/server/am/ProcessRecord;IZI)V
+HPLcom/android/server/am/OomAdjuster;->updateAppUidRecLSP(Lcom/android/server/am/ProcessRecord;)V+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;
HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLSP(I)V
-HPLcom/android/server/am/OomAdjuster;->updateOomAdjLSP(Lcom/android/server/am/ProcessRecord;I)Z
-HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLocked(I)V
-HPLcom/android/server/am/OomAdjuster;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;I)Z
-HSPLcom/android/server/am/OomAdjuster;->updateOomAdjPendingTargetsLocked(I)V
-HSPLcom/android/server/am/OomAdjuster;->updateUidsLSP(Lcom/android/server/am/ActiveUids;J)V
+HSPLcom/android/server/am/OomAdjuster;->updateOomAdjPendingTargetsLocked(I)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
+HSPLcom/android/server/am/OomAdjuster;->updateUidsLSP(Lcom/android/server/am/ActiveUids;J)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/OomAdjusterDebugLogger;-><init>(Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/ActivityManagerConstants;)V
+HPLcom/android/server/am/OomAdjusterDebugLogger;->shouldLog(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
+HSPLcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionIgnoringReachableClientsConsumer;-><init>(Lcom/android/server/am/OomAdjusterModernImpl;)V
+HPLcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionIgnoringReachableClientsConsumer;->accept(Ljava/lang/Object;Ljava/lang/Object;)V+]Lcom/android/server/am/OomAdjusterModernImpl$Connection;Lcom/android/server/am/ConnectionRecord;,Lcom/android/server/am/ContentProviderConnection;
+HSPLcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionsConsumer;-><init>(Lcom/android/server/am/OomAdjusterModernImpl;)V
+HPLcom/android/server/am/OomAdjusterModernImpl$ComputeConnectionsConsumer;->accept(Lcom/android/server/am/OomAdjusterModernImpl$OomAdjusterArgs;)V
+HSPLcom/android/server/am/OomAdjusterModernImpl$ComputeHostConsumer;-><init>(Lcom/android/server/am/OomAdjusterModernImpl;)V
+HPLcom/android/server/am/OomAdjusterModernImpl$ComputeHostConsumer;->accept(Ljava/lang/Object;Ljava/lang/Object;)V+]Lcom/android/server/am/OomAdjusterModernImpl$Connection;Lcom/android/server/am/ConnectionRecord;,Lcom/android/server/am/ContentProviderConnection;
+HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNode;-><init>(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNode;->unlink()V
+HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$$ExternalSyntheticLambda0;-><init>(I)V
+HPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$$ExternalSyntheticLambda0;->applyAsInt(Ljava/lang/Object;)I
+HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$LinkedProcessRecordList;-><init>(Ljava/util/function/ToIntFunction;)V
+HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$LinkedProcessRecordList;->reset()V
+HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;-><init>(Lcom/android/server/am/OomAdjusterModernImpl;II)V
+HPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;->offer(Lcom/android/server/am/ProcessRecord;)V+]Ljava/util/function/ToIntFunction;Lcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes$$ExternalSyntheticLambda0;
+HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;->poll()Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/OomAdjusterModernImpl$ProcessRecordNodes;->reset()V
+HPLcom/android/server/am/OomAdjusterModernImpl$ReachableCollectingConsumer;->accept(Ljava/lang/Object;Ljava/lang/Object;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/OomAdjusterModernImpl;->-$$Nest$smunimportantConnectionLSP(Lcom/android/server/am/OomAdjusterModernImpl$Connection;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;)Z
+HSPLcom/android/server/am/OomAdjusterModernImpl;-><clinit>()V
+HSPLcom/android/server/am/OomAdjusterModernImpl;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessList;Lcom/android/server/am/ActiveUids;Lcom/android/server/ServiceThread;Lcom/android/server/am/ProcessStateController$GlobalState;Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/OomAdjuster$Injector;)V
+HSPLcom/android/server/am/OomAdjusterModernImpl;->computeConnectionsLSP()V
+HPLcom/android/server/am/OomAdjusterModernImpl;->computeOomAdjIgnoringReachablesLSP(Lcom/android/server/am/OomAdjusterModernImpl$OomAdjusterArgs;)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/OomAdjusterModernImpl;->forEachConnectionLSP(Lcom/android/server/am/ProcessRecord;Ljava/util/function/BiConsumer;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/BiConsumer;Lcom/android/server/am/OomAdjusterModernImpl$ComputeHostConsumer;,Lcom/android/server/am/OomAdjusterModernImpl$ReachableCollectingConsumer;
+PLcom/android/server/am/OomAdjusterModernImpl;->getInitialAdj(Lcom/android/server/am/ProcessRecord;)I
+PLcom/android/server/am/OomAdjusterModernImpl;->getInitialCapability(Lcom/android/server/am/ProcessRecord;)I
+PLcom/android/server/am/OomAdjusterModernImpl;->getInitialIsCurBoundByNonBgRestrictedApp(Lcom/android/server/am/ProcessRecord;)Z
+PLcom/android/server/am/OomAdjusterModernImpl;->getInitialProcState(Lcom/android/server/am/ProcessRecord;)I
+PLcom/android/server/am/OomAdjusterModernImpl;->onProcessEndLocked(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/OomAdjusterModernImpl;->onProcessOomAdjChanged(ILcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/OomAdjusterModernImpl;->onProcessStateChanged(ILcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/OomAdjusterModernImpl;->partialUpdateLSP(ILandroid/util/ArraySet;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HSPLcom/android/server/am/OomAdjusterModernImpl;->performUpdateOomAdjLSP(I)V+]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/OomAdjusterModernImpl;->performUpdateOomAdjLSP(ILcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/OomAdjusterModernImpl;->performUpdateOomAdjPendingTargetsLocked(I)V
HSPLcom/android/server/am/OomConnection$OomConnectionThread;-><init>(Lcom/android/server/am/OomConnection;)V
-HSPLcom/android/server/am/OomConnection$OomConnectionThread;-><init>(Lcom/android/server/am/OomConnection;Lcom/android/server/am/OomConnection$OomConnectionThread-IA;)V
HSPLcom/android/server/am/OomConnection$OomConnectionThread;->run()V
HSPLcom/android/server/am/OomConnection;->-$$Nest$smwaitOom()[Landroid/os/OomKillRecord;
-HSPLcom/android/server/am/OomConnection;-><init>(Lcom/android/server/am/OomConnection$OomConnectionListener;)V
-HPLcom/android/server/am/PackageList;-><init>(Lcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/OomConnection;-><init>(Lcom/android/server/am/ProcessList$1;)V
+PLcom/android/server/am/PackageList;-><init>(Lcom/android/server/am/ProcessRecord;)V
PLcom/android/server/am/PackageList;->clear()V
HPLcom/android/server/am/PackageList;->containsKey(Ljava/lang/Object;)Z
-HPLcom/android/server/am/PackageList;->forEachPackage(Ljava/util/function/BiConsumer;)V
-HPLcom/android/server/am/PackageList;->forEachPackage(Ljava/util/function/Consumer;)V
-HPLcom/android/server/am/PackageList;->forEachPackageProcessStats(Ljava/util/function/Consumer;)V
-HPLcom/android/server/am/PackageList;->get(Ljava/lang/String;)Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;
-HPLcom/android/server/am/PackageList;->getPackageList()[Ljava/lang/String;
-PLcom/android/server/am/PackageList;->getPackageListLocked()Landroid/util/ArrayMap;
-HPLcom/android/server/am/PackageList;->put(Ljava/lang/String;Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;)Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;
+PLcom/android/server/am/PackageList;->forEachPackage(Ljava/util/function/Consumer;)V
+PLcom/android/server/am/PackageList;->forEachPackageProcessStats(Ljava/util/function/Consumer;)V
+PLcom/android/server/am/PackageList;->get(Ljava/lang/String;)Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;
+PLcom/android/server/am/PackageList;->put(Ljava/lang/String;Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;)V
HPLcom/android/server/am/PackageList;->searchEachPackage(Ljava/util/function/Function;)Ljava/lang/Object;
-HPLcom/android/server/am/PackageList;->size()I
+PLcom/android/server/am/PackageList;->size()I
HSPLcom/android/server/am/PendingIntentController;-><init>(Landroid/os/Looper;Lcom/android/server/am/UserController;Lcom/android/server/am/ActivityManagerConstants;)V
-HPLcom/android/server/am/PendingIntentController;->cancelIntentSender(Landroid/content/IIntentSender;)V
-HPLcom/android/server/am/PendingIntentController;->cancelIntentSender(Lcom/android/server/am/PendingIntentRecord;Z)V
-HPLcom/android/server/am/PendingIntentController;->decrementUidStatLocked(Lcom/android/server/am/PendingIntentRecord;)V
-HPLcom/android/server/am/PendingIntentController;->getIntentSender(ILjava/lang/String;Ljava/lang/String;IILandroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;)Lcom/android/server/am/PendingIntentRecord;
-HPLcom/android/server/am/PendingIntentController;->incrementUidStatLocked(Lcom/android/server/am/PendingIntentRecord;)V
-HPLcom/android/server/am/PendingIntentController;->makeIntentSenderCanceled(Lcom/android/server/am/PendingIntentRecord;)V
-HSPLcom/android/server/am/PendingIntentController;->onActivityManagerInternalAdded()V
-PLcom/android/server/am/PendingIntentController;->removePendingIntentsForPackage(Ljava/lang/String;IIZ)Z
-PLcom/android/server/am/PendingIntentController;->setPendingIntentAllowlistDuration(Landroid/content/IIntentSender;Landroid/os/IBinder;JIILjava/lang/String;)V
-PLcom/android/server/am/PendingIntentRecord$$ExternalSyntheticLambda0;-><init>()V
+HPLcom/android/server/am/PendingIntentController;->cancelIntentSender(Lcom/android/server/am/PendingIntentRecord;ZI)V+]Ljava/util/HashMap;Ljava/util/HashMap;
+HPLcom/android/server/am/PendingIntentController;->decrementUidStatLocked(Lcom/android/server/am/PendingIntentRecord;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+PLcom/android/server/am/PendingIntentController;->dumpPendingIntents(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+HPLcom/android/server/am/PendingIntentController;->getIntentSender(IIIIILandroid/os/Bundle;Landroid/os/IBinder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Landroid/content/Intent;[Ljava/lang/String;)Lcom/android/server/am/PendingIntentRecord;+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Ljava/util/HashMap;Ljava/util/HashMap;
+HPLcom/android/server/am/PendingIntentController;->incrementUidStatLocked(Lcom/android/server/am/PendingIntentRecord;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+HPLcom/android/server/am/PendingIntentController;->makeIntentSenderCanceled(Lcom/android/server/am/PendingIntentRecord;I)V
PLcom/android/server/am/PendingIntentRecord$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/am/PendingIntentRecord$Key;-><init>(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILcom/android/server/wm/SafeActivityOptions;I)V
-HPLcom/android/server/am/PendingIntentRecord$Key;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/am/PendingIntentRecord$Key;->hashCode()I
-PLcom/android/server/am/PendingIntentRecord$TempAllowListDuration;-><init>(JIILjava/lang/String;)V
-PLcom/android/server/am/PendingIntentRecord;->$r8$lambda$n7a96RwVvewtpifhQ2aQt1qSbXo(Lcom/android/server/am/PendingIntentRecord;)V
+PLcom/android/server/am/PendingIntentRecord$Key$$ExternalSyntheticOutline0;->m(ILjava/lang/String;Ljava/lang/StringBuilder;)V
+HPLcom/android/server/am/PendingIntentRecord$Key;-><init>(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILcom/android/server/wm/SafeActivityOptions;I)V+]Landroid/content/Intent;Landroid/content/Intent;
+HPLcom/android/server/am/PendingIntentRecord$Key;->equals(Ljava/lang/Object;)Z+]Landroid/content/Intent;Landroid/content/Intent;
+HPLcom/android/server/am/PendingIntentRecord$Key;->hashCode()I
+PLcom/android/server/am/PendingIntentRecord$Key;->typeName()Ljava/lang/String;
HPLcom/android/server/am/PendingIntentRecord;-><init>(Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentRecord$Key;I)V
-PLcom/android/server/am/PendingIntentRecord;->completeFinalize()V
-HPLcom/android/server/am/PendingIntentRecord;->detachCancelListenersLocked()Landroid/os/RemoteCallbackList;
-HPLcom/android/server/am/PendingIntentRecord;->finalize()V
-HPLcom/android/server/am/PendingIntentRecord;->getBackgroundStartPrivilegesForActivitySender(Landroid/util/ArraySet;Landroid/os/IBinder;Landroid/os/Bundle;I)Landroid/app/BackgroundStartPrivileges;
+PLcom/android/server/am/PendingIntentRecord;->cancelReasonToString(I)Ljava/lang/String;
+PLcom/android/server/am/PendingIntentRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/am/PendingIntentRecord;->finalize()V
+PLcom/android/server/am/PendingIntentRecord;->getBackgroundStartPrivilegesForActivitySender(Landroid/util/ArraySet;Landroid/os/IBinder;Landroid/os/Bundle;I)Landroid/app/BackgroundStartPrivileges;
+PLcom/android/server/am/PendingIntentRecord;->getDefaultBackgroundStartPrivileges(ILjava/lang/String;)Landroid/app/BackgroundStartPrivileges;
HPLcom/android/server/am/PendingIntentRecord;->sendInner(Landroid/app/IApplicationThread;ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)I
-PLcom/android/server/am/PendingIntentRecord;->sendWithResult(Landroid/app/IApplicationThread;ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I
-PLcom/android/server/am/PendingIntentRecord;->setAllowBgActivityStarts(Landroid/os/IBinder;I)V
-PLcom/android/server/am/PendingIntentRecord;->setAllowlistDurationLocked(Landroid/os/IBinder;JIILjava/lang/String;)V
+HPLcom/android/server/am/PendingIntentRecord;->setAllowlistDurationLocked(Landroid/os/IBinder;IILjava/lang/String;J)V
+PLcom/android/server/am/PendingIntentRecord;->toString()Ljava/lang/String;
HSPLcom/android/server/am/PendingStartActivityUids;-><init>()V
-PLcom/android/server/am/PendingStartActivityUids;->add(II)Z
-HPLcom/android/server/am/PendingStartActivityUids;->delete(IJ)V
-HPLcom/android/server/am/PendingStartActivityUids;->isPendingTopUid(I)Z
-HSPLcom/android/server/am/PendingTempAllowlists;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HPLcom/android/server/am/PendingTempAllowlists;->indexOfKey(I)I
-HPLcom/android/server/am/PendingTempAllowlists;->put(ILcom/android/server/am/ActivityManagerService$PendingTempAllowlist;)V
-HPLcom/android/server/am/PendingTempAllowlists;->removeAt(I)V
-HPLcom/android/server/am/PendingTempAllowlists;->size()I
-HPLcom/android/server/am/PendingTempAllowlists;->valueAt(I)Lcom/android/server/am/ActivityManagerService$PendingTempAllowlist;
+HSPLcom/android/server/am/PendingTempAllowlists;-><init>()V
+PLcom/android/server/am/PendingTempAllowlists;->size()I
+PLcom/android/server/am/PendingTempAllowlists;->valueAt(I)Lcom/android/server/am/ActivityManagerService$PendingTempAllowlist;
+PLcom/android/server/am/PhantomProcessList$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/PhantomProcessList;)V
+PLcom/android/server/am/PhantomProcessList$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/PhantomProcessList$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/PhantomProcessList;)V
+PLcom/android/server/am/PhantomProcessList$$ExternalSyntheticLambda1;->onFileDescriptorEvents(Ljava/io/FileDescriptor;I)I
HSPLcom/android/server/am/PhantomProcessList$Injector;-><init>()V
-HPLcom/android/server/am/PhantomProcessList$Injector;->openCgroupProcs(Ljava/lang/String;)Ljava/io/InputStream;
-PLcom/android/server/am/PhantomProcessList$Injector;->readCgroupProcs(Ljava/io/InputStream;[BII)I
HSPLcom/android/server/am/PhantomProcessList;-><clinit>()V
HSPLcom/android/server/am/PhantomProcessList;-><init>(Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/am/PhantomProcessList;->addChildPidLocked(Lcom/android/server/am/ProcessRecord;II)V
-PLcom/android/server/am/PhantomProcessList;->forEachPhantomProcessOfApp(Lcom/android/server/am/ProcessRecord;Ljava/util/function/Function;)V
-HPLcom/android/server/am/PhantomProcessList;->getCgroupFilePath(II)Ljava/lang/String;
-PLcom/android/server/am/PhantomProcessList;->getOrCreatePhantomProcessIfNeededLocked(Ljava/lang/String;IIZ)Lcom/android/server/am/PhantomProcessRecord;
-PLcom/android/server/am/PhantomProcessList;->isAppProcess(I)Z
-HPLcom/android/server/am/PhantomProcessList;->lookForPhantomProcessesLocked()V
-HPLcom/android/server/am/PhantomProcessList;->lookForPhantomProcessesLocked(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/PhantomProcessList;->onAppDied(I)V
-HSPLcom/android/server/am/PhantomProcessList;->probeCgroupVersion()V
+PLcom/android/server/am/PhantomProcessList;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/am/PhantomProcessList;->dumpPhantomeProcessLocked(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/SparseArray;)V
+PLcom/android/server/am/PhantomProcessList;->getCgroupFilePath(II)Ljava/lang/String;
+HPLcom/android/server/am/PhantomProcessList;->getOrCreatePhantomProcessIfNeededLocked(ILjava/lang/String;IZ)Lcom/android/server/am/PhantomProcessRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/am/PhantomProcessList;->lookForPhantomProcessesLocked()V
+HPLcom/android/server/am/PhantomProcessList;->lookForPhantomProcessesLocked(Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/io/InputStream;Ljava/io/FileInputStream;
+PLcom/android/server/am/PhantomProcessList;->onPhantomProcessKilledLocked(Lcom/android/server/am/PhantomProcessRecord;)V
PLcom/android/server/am/PhantomProcessList;->pruneStaleProcessesLocked()V
-PLcom/android/server/am/PhantomProcessList;->updateProcessCpuStatesLocked(Lcom/android/internal/os/ProcessCpuTracker;)V
+HPLcom/android/server/am/PhantomProcessList;->updateProcessCpuStatesLocked(Lcom/android/internal/os/ProcessCpuTracker;)V
+PLcom/android/server/am/PhantomProcessRecord$1;-><init>(Lcom/android/server/am/PhantomProcessRecord;)V
+PLcom/android/server/am/PhantomProcessRecord;-><clinit>()V
+PLcom/android/server/am/PhantomProcessRecord;-><init>(Ljava/lang/String;IIILcom/android/server/am/ActivityManagerService;Lcom/android/server/am/PhantomProcessList$$ExternalSyntheticLambda0;)V
+PLcom/android/server/am/PhantomProcessRecord;->onProcDied(Z)V
+PLcom/android/server/am/PhantomProcessRecord;->toString()Ljava/lang/String;
PLcom/android/server/am/PlatformCompatCache$CacheItem;-><init>(Lcom/android/server/compat/PlatformCompat;J)V
HPLcom/android/server/am/PlatformCompatCache$CacheItem;->fetchLocked(Landroid/content/pm/ApplicationInfo;I)Z
-HPLcom/android/server/am/PlatformCompatCache$CacheItem;->invalidate(Landroid/content/pm/ApplicationInfo;)V
-HPLcom/android/server/am/PlatformCompatCache$CacheItem;->isChangeEnabled(Landroid/content/pm/ApplicationInfo;)Z
+PLcom/android/server/am/PlatformCompatCache$CacheItem;->isChangeEnabled(Landroid/content/pm/ApplicationInfo;)Z
PLcom/android/server/am/PlatformCompatCache;-><clinit>()V
PLcom/android/server/am/PlatformCompatCache;-><init>([J)V
-HPLcom/android/server/am/PlatformCompatCache;->getInstance()Lcom/android/server/am/PlatformCompatCache;
-HPLcom/android/server/am/PlatformCompatCache;->invalidate(Landroid/content/pm/ApplicationInfo;)V
-HPLcom/android/server/am/PlatformCompatCache;->isChangeEnabled(ILandroid/content/pm/ApplicationInfo;Z)Z
-HPLcom/android/server/am/PlatformCompatCache;->isChangeEnabled(JLandroid/content/pm/ApplicationInfo;Z)Z
-HPLcom/android/server/am/ProcessCachedOptimizerRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->getEarliestFreezableTime()J
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->getFreezeUnfreezeTime()J
-HPLcom/android/server/am/ProcessCachedOptimizerRecord;->getLastCompactProfile()Lcom/android/server/am/CachedAppOptimizer$CompactProfile;
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->getLastCompactTime()J
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->getLastOomAdjChangeReason()I
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->getLastUsedTimeout()J
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->getReqCompactProfile()Lcom/android/server/am/CachedAppOptimizer$CompactProfile;
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->getReqCompactSource()Lcom/android/server/am/CachedAppOptimizer$CompactSource;
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->hasFreezerOverride()Z
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->hasPendingCompact()Z
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->init(J)V
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->isForceCompact()Z
-HPLcom/android/server/am/ProcessCachedOptimizerRecord;->isFreezeExempt()Z
-HPLcom/android/server/am/ProcessCachedOptimizerRecord;->isFreezeSticky()Z
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->isFrozen()Z
-HPLcom/android/server/am/ProcessCachedOptimizerRecord;->isPendingFreeze()Z
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->setEarliestFreezableTime(J)V
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->setForceCompact(Z)V
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->setFreezeUnfreezeTime(J)V
-HPLcom/android/server/am/ProcessCachedOptimizerRecord;->setFreezerOverride(Z)V
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->setFrozen(Z)V
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->setHasCollectedFrozenPSS(Z)V
-HPLcom/android/server/am/ProcessCachedOptimizerRecord;->setHasPendingCompact(Z)V
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->setLastCompactProfile(Lcom/android/server/am/CachedAppOptimizer$CompactProfile;)V
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->setLastCompactTime(J)V
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->setLastOomAdjChangeReason(I)V
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->setLastUsedTimeout(J)V
-HPLcom/android/server/am/ProcessCachedOptimizerRecord;->setPendingFreeze(Z)V
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->setReqCompactProfile(Lcom/android/server/am/CachedAppOptimizer$CompactProfile;)V
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->setReqCompactSource(Lcom/android/server/am/CachedAppOptimizer$CompactSource;)V
-HPLcom/android/server/am/ProcessCachedOptimizerRecord;->setShouldNotFreeze(Z)V
-HPLcom/android/server/am/ProcessCachedOptimizerRecord;->setShouldNotFreeze(ZZ)Z
-PLcom/android/server/am/ProcessCachedOptimizerRecord;->shouldNotFreeze()Z
-PLcom/android/server/am/ProcessErrorStateRecord$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/internal/os/anr/AnrLatencyTracker;Ljava/lang/String;)V
-PLcom/android/server/am/ProcessErrorStateRecord$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/internal/os/anr/AnrLatencyTracker;)V
-PLcom/android/server/am/ProcessErrorStateRecord$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/am/ProcessErrorStateRecord$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/internal/os/anr/AnrLatencyTracker;ZZ)V
-PLcom/android/server/am/ProcessErrorStateRecord$$ExternalSyntheticLambda3;->call()Ljava/lang/Object;
-PLcom/android/server/am/ProcessErrorStateRecord$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/am/ProcessErrorStateRecord;)V
-PLcom/android/server/am/ProcessErrorStateRecord$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/ProcessErrorStateRecord;)V
-PLcom/android/server/am/ProcessErrorStateRecord;->$r8$lambda$DQtvmgZQqXnoidXVW34IrZY3fRc(Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/internal/os/anr/AnrLatencyTracker;ZZ)Ljava/util/ArrayList;
-PLcom/android/server/am/ProcessErrorStateRecord;->$r8$lambda$iJnj86igrSWbTddnzSwFSnBtv04(Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/internal/os/anr/AnrLatencyTracker;)V
-HPLcom/android/server/am/ProcessErrorStateRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/ProcessErrorStateRecord;->appNotResponding(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Lcom/android/server/wm/WindowProcessController;ZLcom/android/internal/os/TimeoutRecord;Ljava/util/concurrent/ExecutorService;ZZLjava/util/concurrent/Future;)V
-PLcom/android/server/am/ProcessErrorStateRecord;->buildMemoryHeadersFor(I)Ljava/lang/String;
-PLcom/android/server/am/ProcessErrorStateRecord;->getAnrAnnotation()Ljava/lang/String;
-PLcom/android/server/am/ProcessErrorStateRecord;->getDialogController()Lcom/android/server/am/ErrorDialogController;
-PLcom/android/server/am/ProcessErrorStateRecord;->getShowBackground()Z
-PLcom/android/server/am/ProcessErrorStateRecord;->isBad()Z
-HPLcom/android/server/am/ProcessErrorStateRecord;->isCrashing()Z
-PLcom/android/server/am/ProcessErrorStateRecord;->isInterestingForBackgroundTraces()Z
-PLcom/android/server/am/ProcessErrorStateRecord;->isMonitorCpuUsage()Z
-PLcom/android/server/am/ProcessErrorStateRecord;->isNotResponding()Z
-PLcom/android/server/am/ProcessErrorStateRecord;->isSilentAnr()Z
-PLcom/android/server/am/ProcessErrorStateRecord;->lambda$appNotResponding$1(Lcom/android/internal/os/anr/AnrLatencyTracker;)V
-PLcom/android/server/am/ProcessErrorStateRecord;->lambda$appNotResponding$3(Lcom/android/internal/os/anr/AnrLatencyTracker;ZZ)Ljava/util/ArrayList;
-HPLcom/android/server/am/ProcessErrorStateRecord;->onCleanupApplicationRecordLSP()V
-PLcom/android/server/am/ProcessErrorStateRecord;->setAnrAnnotation(Ljava/lang/String;)V
-PLcom/android/server/am/ProcessErrorStateRecord;->setCrashHandler(Ljava/lang/Runnable;)V
-HPLcom/android/server/am/ProcessErrorStateRecord;->setCrashing(Z)V
-HPLcom/android/server/am/ProcessErrorStateRecord;->setNotResponding(Z)V
-PLcom/android/server/am/ProcessErrorStateRecord;->skipAnrLocked(Ljava/lang/String;)Z
-PLcom/android/server/am/ProcessList$$ExternalSyntheticLambda0;-><init>()V
-HPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
-HPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/am/ProcessList$$ExternalSyntheticLambda2;-><init>(ZLjava/util/List;Landroid/util/ArrayMap;Lcom/android/server/am/ProcessRecord;Ljava/util/ArrayList;)V
-PLcom/android/server/am/ProcessList$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/am/ProcessList;J)V
-HPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/am/ProcessList;)V
-PLcom/android/server/am/ProcessList$$ExternalSyntheticLambda4;->onFileDescriptorEvents(Ljava/io/FileDescriptor;I)I
-HPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
-HPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda5;->run()V
+PLcom/android/server/am/PlatformCompatCache;->getInstance()Lcom/android/server/am/PlatformCompatCache;
+PLcom/android/server/am/ProcessCachedOptimizerRecord$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/am/ProcessCachedOptimizerRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ProcessCachedOptimizerRecord;->setShouldNotFreeze(IIZZ)Z
+PLcom/android/server/am/ProcessErrorStateRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ProcessErrorStateRecord;->setNotResponding(Z)V
+PLcom/android/server/am/ProcessList$$ExternalSyntheticLambda1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/am/ProcessList$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessRecord;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
+PLcom/android/server/am/ProcessList$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/am/ProcessList$$ExternalSyntheticLambda3;-><init>(ZLjava/util/List;Landroid/util/ArrayMap;Lcom/android/server/am/ProcessRecord;Ljava/util/ArrayList;)V
+PLcom/android/server/am/ProcessList$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/ProcessList$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/am/ProcessList;J)V
+PLcom/android/server/am/ProcessList$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/ProcessList;)V
+PLcom/android/server/am/ProcessList$$ExternalSyntheticLambda5;->onFileDescriptorEvents(Ljava/io/FileDescriptor;I)I
+PLcom/android/server/am/ProcessList$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessRecord;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
+HPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/am/ProcessList$$ExternalSyntheticOutline0;->m(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
HSPLcom/android/server/am/ProcessList$1;-><init>(Lcom/android/server/am/ProcessList;)V
-HSPLcom/android/server/am/ProcessList$2;-><init>(Lcom/android/server/am/ProcessList;)V
-HPLcom/android/server/am/ProcessList$2;->handleUnsolicitedMessage(Ljava/io/DataInputStream;I)Z
-PLcom/android/server/am/ProcessList$2;->onConnect(Ljava/io/OutputStream;)Z
-HSPLcom/android/server/am/ProcessList$ImperceptibleKillRunner$H;-><init>(Lcom/android/server/am/ProcessList$ImperceptibleKillRunner;Landroid/os/Looper;)V
+PLcom/android/server/am/ProcessList$1;->handleUnsolicitedMessage(Ljava/io/DataInputStream;I)Z
+PLcom/android/server/am/ProcessList$1;->onConnect(Ljava/io/OutputStream;)Z
+PLcom/android/server/am/ProcessList$3;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
HSPLcom/android/server/am/ProcessList$ImperceptibleKillRunner;-><init>(Lcom/android/server/am/ProcessList;Landroid/os/Looper;)V
-HSPLcom/android/server/am/ProcessList$IsolatedUidRange;-><init>(Lcom/android/server/am/ProcessList;II)V
-HPLcom/android/server/am/ProcessList$IsolatedUidRange;->freeIsolatedUidLocked(I)V
-HSPLcom/android/server/am/ProcessList$IsolatedUidRangeAllocator;-><init>(Lcom/android/server/am/ProcessList;III)V
-HSPLcom/android/server/am/ProcessList$KillHandler;-><init>(Lcom/android/server/am/ProcessList;Landroid/os/Looper;)V
+HSPLcom/android/server/am/ProcessList$IsolatedUidRange;-><init>(II)V
+HSPLcom/android/server/am/ProcessList$IsolatedUidRangeAllocator;-><init>(Lcom/android/server/am/ProcessList;)V
PLcom/android/server/am/ProcessList$KillHandler;->handleMessage(Landroid/os/Message;)V
HSPLcom/android/server/am/ProcessList$MyProcessMap;-><init>(Lcom/android/server/am/ProcessList;)V
-HPLcom/android/server/am/ProcessList$MyProcessMap;->put(Ljava/lang/String;ILcom/android/server/am/ProcessRecord;)Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/ProcessList$MyProcessMap;->remove(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ProcessList$MyProcessMap;->put(ILcom/android/server/am/ProcessRecord;Ljava/lang/String;)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ProcessList$MyProcessMap;->remove(ILjava/lang/String;)Lcom/android/server/am/ProcessRecord;
HSPLcom/android/server/am/ProcessList$ProcStartHandler;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V
+HSPLcom/android/server/am/ProcessList$ProcStartHandler;-><init>(Lcom/android/server/am/ProcessList$ImperceptibleKillRunner;Landroid/os/Looper;)V
PLcom/android/server/am/ProcessList$ProcStartHandler;->handleMessage(Landroid/os/Message;)V
-HPLcom/android/server/am/ProcessList$ProcStateMemTracker;-><init>()V
-HPLcom/android/server/am/ProcessList;->$r8$lambda$3Aeowc7Aa0A47bbOcoIMPuNZ44Y(Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
-HPLcom/android/server/am/ProcessList;->$r8$lambda$3aT8AjDesFyouy4iqaLN2hUmayA(Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
-HPLcom/android/server/am/ProcessList;->$r8$lambda$CC7yn4e5nUPqzC8siIAeG5XlMLQ(Lcom/android/server/am/ProcessList;JLcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ProcessList;->$r8$lambda$JNHuPiwSzts8mouEo9gde_DuUw8(ZLjava/util/List;Landroid/util/ArrayMap;Lcom/android/server/am/ProcessRecord;Ljava/util/ArrayList;Ljava/lang/String;)V
-PLcom/android/server/am/ProcessList;->$r8$lambda$_2hhy3f6tCYNbqfLdggq9vFVtX4(Lcom/android/server/am/ProcessList;Ljava/io/FileDescriptor;I)I
-PLcom/android/server/am/ProcessList;->-$$Nest$mhandlePredecessorProcDied(Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ProcessList;->-$$Nest$sfgetsLmkdConnection()Lcom/android/server/am/LmkdConnection;
+PLcom/android/server/am/ProcessList$ProcStateMemTracker;-><init>()V
+PLcom/android/server/am/ProcessList$ProcStateMemTracker;->dumpLine(Ljava/io/PrintWriter;)V
HSPLcom/android/server/am/ProcessList;-><clinit>()V
HSPLcom/android/server/am/ProcessList;-><init>()V
HPLcom/android/server/am/ProcessList;->addProcessNameLocked(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ProcessList;->applyDisplaySize(Lcom/android/server/wm/WindowManagerService;)V
-HPLcom/android/server/am/ProcessList;->buildOomTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIZ)Ljava/lang/String;
+PLcom/android/server/am/ProcessList;->buildOomTag(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
HPLcom/android/server/am/ProcessList;->checkSlow(JLjava/lang/String;)V
+PLcom/android/server/am/ProcessList;->collectProcessesLOSP(IZ[Ljava/lang/String;)Ljava/util/ArrayList;
HPLcom/android/server/am/ProcessList;->computeGidsForProcess(II[IZ)[I
-HPLcom/android/server/am/ProcessList;->computeNextPssTime(ILcom/android/server/am/ProcessList$ProcStateMemTracker;ZZJJ)J
-HSPLcom/android/server/am/ProcessList;->createSystemServerSocketForZygote()Landroid/net/LocalSocket;
-HPLcom/android/server/am/ProcessList;->dispatchProcessDied(II)V
-PLcom/android/server/am/ProcessList;->dispatchProcessStarted(Lcom/android/server/am/ProcessRecord;I)V
-HPLcom/android/server/am/ProcessList;->dispatchProcessesChanged()V
+HPLcom/android/server/am/ProcessList;->dispatchProcessesChanged()V+]Landroid/app/IProcessObserver;Lcom/android/server/am/AppFGSTracker$1;,Lcom/android/server/devicestate/DeviceStateManagerService$1;,Lcom/android/server/media/projection/MediaProjectionManagerService$1;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/am/ProcessList;->dumpLruEntryLocked(Ljava/io/PrintWriter;ILcom/android/server/am/ProcessRecord;Ljava/lang/String;)V
+PLcom/android/server/am/ProcessList;->dumpLruLocked(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/ProcessList;->dumpOomLocked(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+PLcom/android/server/am/ProcessList;->dumpProcessOomList(Ljava/io/PrintWriter;Lcom/android/server/am/ActivityManagerService;Ljava/util/List;ZLjava/lang/String;)V
+PLcom/android/server/am/ProcessList;->dumpProcessesLSP(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;ZLjava/lang/String;I)V
HPLcom/android/server/am/ProcessList;->enqueueProcessChangeItemLocked(II)Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
HPLcom/android/server/am/ProcessList;->fillInProcMemInfoLOSP(Lcom/android/server/am/ProcessRecord;Landroid/app/ActivityManager$RunningAppProcessInfo;I)V
-HPLcom/android/server/am/ProcessList;->findAppProcessLOSP(Landroid/os/IBinder;Ljava/lang/String;)Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessList;->forEachLruProcessesLOSP(ZLjava/util/function/Consumer;)V
+PLcom/android/server/am/ProcessList;->findAppProcessLOSP(Landroid/os/IBinder;Ljava/lang/String;)Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ProcessList;->forEachLruProcessesLOSP(Ljava/util/function/Consumer;Z)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Consumer;Lcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda1;,Lcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda20;,Lcom/android/server/am/ActivityManagerService$MainHandler$$ExternalSyntheticLambda0;,Lcom/android/server/am/AppProfiler$$ExternalSyntheticLambda4;,Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData$$ExternalSyntheticLambda0;
+PLcom/android/server/am/ProcessList;->freezePackageCgroup(IZ)Z
PLcom/android/server/am/ProcessList;->getAppStartInfoTracker()Lcom/android/server/am/AppStartInfoTracker;
-PLcom/android/server/am/ProcessList;->getCachedRestoreThresholdKb()J
-HPLcom/android/server/am/ProcessList;->getLRURecordForAppLOSP(Landroid/os/IBinder;)Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessList;->getLruProcessesLOSP()Ljava/util/ArrayList;
-HSPLcom/android/server/am/ProcessList;->getLruSizeLOSP()I
+HPLcom/android/server/am/ProcessList;->getBlockStateForUid(Lcom/android/server/am/UidRecord;)I
+HPLcom/android/server/am/ProcessList;->getLRURecordForAppLOSP(Landroid/os/IBinder;)Lcom/android/server/am/ProcessRecord;+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/am/ProcessList;->getLmkdKillCount(II)Ljava/lang/Integer;
HSPLcom/android/server/am/ProcessList;->getMemLevel(I)J
-HPLcom/android/server/am/ProcessList;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V
-HPLcom/android/server/am/ProcessList;->getNextProcStateSeq()J
-HPLcom/android/server/am/ProcessList;->getNumForegroundServices()Landroid/util/Pair;
-HPLcom/android/server/am/ProcessList;->getPackageAppDataInfoMap(Landroid/content/pm/PackageManagerInternal;[Ljava/lang/String;I)Ljava/util/Map;
-PLcom/android/server/am/ProcessList;->getProcessNamesLOSP()Lcom/android/server/am/ProcessList$MyProcessMap;
-HPLcom/android/server/am/ProcessList;->getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/ProcessList;->getRunningAppProcessesLOSP(ZIZII)Ljava/util/List;
-HPLcom/android/server/am/ProcessList;->getSdkSandboxProcessesForAppLocked(I)Ljava/util/List;
+PLcom/android/server/am/ProcessList;->getPackageAppDataInfoMap(Landroid/content/pm/PackageManagerInternal;[Ljava/lang/String;I)Ljava/util/Map;
+HPLcom/android/server/am/ProcessList;->getProcessRecordLocked(ILjava/lang/String;)Lcom/android/server/am/ProcessRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/am/ProcessList;->getRunningAppProcessesLOSP(IIIZZ)Ljava/util/List;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/am/ProcessList;->getUidProcStateLOSP(I)I
-HPLcom/android/server/am/ProcessList;->getUidProcessCapabilityLOSP(I)I
-HPLcom/android/server/am/ProcessList;->getUidRecordLOSP(I)Lcom/android/server/am/UidRecord;
-PLcom/android/server/am/ProcessList;->handleDyingAppDeathLocked(Lcom/android/server/am/ProcessRecord;I)Z
+PLcom/android/server/am/ProcessList;->getUidProcessCapabilityLOSP(I)I
+PLcom/android/server/am/ProcessList;->getUidRecordLOSP(I)Lcom/android/server/am/UidRecord;
PLcom/android/server/am/ProcessList;->handlePrecedingAppDiedLocked(Lcom/android/server/am/ProcessRecord;)Z
-PLcom/android/server/am/ProcessList;->handlePredecessorProcDied(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/ProcessList;->handleProcessStart(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
-PLcom/android/server/am/ProcessList;->handleProcessStartWithPredecessor(Lcom/android/server/am/ProcessRecord;Ljava/lang/Runnable;)V
HPLcom/android/server/am/ProcessList;->handleProcessStartedLocked(Lcom/android/server/am/ProcessRecord;IZJZ)Z
-HPLcom/android/server/am/ProcessList;->handleProcessStartedLocked(Lcom/android/server/am/ProcessRecord;Landroid/os/Process$ProcessStartResult;J)Z
-HPLcom/android/server/am/ProcessList;->handleZygoteMessages(Ljava/io/FileDescriptor;I)I
-HPLcom/android/server/am/ProcessList;->hasAppStorage(Landroid/content/pm/PackageManagerInternal;Ljava/lang/String;)Z
-HPLcom/android/server/am/ProcessList;->haveBackgroundProcessLOSP()Z
-HSPLcom/android/server/am/ProcessList;->incrementProcStateSeqAndNotifyAppsLOSP(Lcom/android/server/am/ActiveUids;)V
+HSPLcom/android/server/am/ProcessList;->incrementProcStateSeqAndNotifyAppsLOSP(Lcom/android/server/am/ActiveUids;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/am/ProcessList;->init(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActiveUids;Lcom/android/server/compat/PlatformCompat;)V
-PLcom/android/server/am/ProcessList;->isInLruListLOSP(Lcom/android/server/am/ProcessRecord;)Z
-HPLcom/android/server/am/ProcessList;->isProcStartValidLocked(Lcom/android/server/am/ProcessRecord;J)Ljava/lang/String;
PLcom/android/server/am/ProcessList;->killAllBackgroundProcessesExceptLSP(II)V
-HPLcom/android/server/am/ProcessList;->killAppIfBgRestrictedAndCachedIdleLocked(Lcom/android/server/am/ProcessRecord;J)J
-HPLcom/android/server/am/ProcessList;->killAppIfBgRestrictedAndCachedIdleLocked(Lcom/android/server/am/UidRecord;)V
+PLcom/android/server/am/ProcessList;->killAppIfBgRestrictedAndCachedIdleLocked(Lcom/android/server/am/ProcessRecord;J)J
+PLcom/android/server/am/ProcessList;->killAppZygotesLocked(ILjava/lang/String;IZ)V
HPLcom/android/server/am/ProcessList;->killPackageProcessesLSP(Ljava/lang/String;IIIZZZZZZIILjava/lang/String;)Z
-HPLcom/android/server/am/ProcessList;->killProcessGroup(II)V
-HPLcom/android/server/am/ProcessList;->lambda$handleProcessStart$1(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
-HPLcom/android/server/am/ProcessList;->lambda$killAppIfBgRestrictedAndCachedIdleLocked$5(JLcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/ProcessList;->lambda$startProcessLocked$0(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
-PLcom/android/server/am/ProcessList;->lambda$updateApplicationInfoLOSP$3(ZLjava/util/List;Landroid/util/ArrayMap;Lcom/android/server/am/ProcessRecord;Ljava/util/ArrayList;Ljava/lang/String;)V
-HPLcom/android/server/am/ProcessList;->makeOomAdjString(IZ)Ljava/lang/String;
-PLcom/android/server/am/ProcessList;->makeProcStateString(I)Ljava/lang/String;
-PLcom/android/server/am/ProcessList;->minTimeFromStateChange(Z)J
-HPLcom/android/server/am/ProcessList;->needsStorageDataIsolation(Landroid/os/storage/StorageManagerInternal;Lcom/android/server/am/ProcessRecord;)Z
+PLcom/android/server/am/ProcessList;->killProcessGroup(II)V
+PLcom/android/server/am/ProcessList;->makeOomAdjString(IZ)Ljava/lang/String;
+PLcom/android/server/am/ProcessList;->makeProcStateProtoEnum(I)I
HPLcom/android/server/am/ProcessList;->newProcessRecordLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZIZILjava/lang/String;Lcom/android/server/am/HostingRecord;)Lcom/android/server/am/ProcessRecord;
PLcom/android/server/am/ProcessList;->noteAppKill(Lcom/android/server/am/ProcessRecord;IILjava/lang/String;)V
HPLcom/android/server/am/ProcessList;->noteProcessDiedLocked(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ProcessList;->onLmkdConnect(Ljava/io/OutputStream;)Z
+HPLcom/android/server/am/ProcessList;->offerLruProcessInternalLSP(Lcom/android/server/am/ProcessRecord;JLjava/lang/String;Ljava/lang/Object;Lcom/android/server/am/ProcessRecord;)I
PLcom/android/server/am/ProcessList;->onSystemReady()V
-HPLcom/android/server/am/ProcessList;->procStateToImportance(IILandroid/app/ActivityManager$RunningAppProcessInfo;I)I
-HPLcom/android/server/am/ProcessList;->procStatesDifferForMem(II)Z
-PLcom/android/server/am/ProcessList;->registerProcessObserver(Landroid/app/IProcessObserver;)V
-HPLcom/android/server/am/ProcessList;->remove(I)V
+PLcom/android/server/am/ProcessList;->printOomLevel(ILjava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/am/ProcessList;->remove(I)V
HPLcom/android/server/am/ProcessList;->removeLruProcessLocked(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ProcessList;->removeProcessNameLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/ProcessList;->removeProcessNameLocked(Ljava/lang/String;ILcom/android/server/am/ProcessRecord;)Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/ProcessList;->scheduleDispatchProcessDiedLocked(II)V
-HPLcom/android/server/am/ProcessList;->searchEachLruProcessesLOSP(ZLjava/util/function/Function;)Ljava/lang/Object;
-HPLcom/android/server/am/ProcessList;->setOomAdj(III)V
-HPLcom/android/server/am/ProcessList;->startProcess(Lcom/android/server/am/HostingRecord;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;I[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)Landroid/os/Process$ProcessStartResult;
-HPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/HostingRecord;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;I[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJ)Z
-PLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/HostingRecord;I)V
-HPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/HostingRecord;ILjava/lang/String;)Z
+PLcom/android/server/am/ProcessList;->removeProcessLocked(Lcom/android/server/am/ProcessRecord;ZZIILjava/lang/String;Z)Z
+HPLcom/android/server/am/ProcessList;->removeProcessNameLocked(ILcom/android/server/am/ProcessRecord;Ljava/lang/String;)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ProcessList;->searchEachLruProcessesLOSP(Ljava/util/function/Function;Z)Ljava/lang/Object;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Function;Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda1;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda5;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda6;
+PLcom/android/server/am/ProcessList;->sortProcessOomList(Ljava/lang/String;Ljava/util/List;)Ljava/util/ArrayList;
+HPLcom/android/server/am/ProcessList;->startProcess(Lcom/android/server/am/HostingRecord;Lcom/android/server/am/ProcessRecord;I[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)Landroid/os/Process$ProcessStartResult;
+HPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/HostingRecord;Lcom/android/server/am/ProcessRecord;I[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJ)Z+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Ljava/util/Collection;Ljava/util/concurrent/ConcurrentHashMap$ValuesView;]Ljava/util/Iterator;Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
HPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/HostingRecord;IZZLjava/lang/String;)Z
HPLcom/android/server/am/ProcessList;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILcom/android/server/am/HostingRecord;IZZIZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/Runnable;)Lcom/android/server/am/ProcessRecord;
-PLcom/android/server/am/ProcessList;->startPsiMonitoringAfterBoot()V
-PLcom/android/server/am/ProcessList;->updateApplicationInfoLOSP(Ljava/util/List;IZ)V
-HPLcom/android/server/am/ProcessList;->updateClientActivitiesOrderingLSP(Lcom/android/server/am/ProcessRecord;III)V
-PLcom/android/server/am/ProcessList;->updateCoreSettingsLOSP(Landroid/os/Bundle;)V
-HPLcom/android/server/am/ProcessList;->updateLruProcessInternalLSP(Lcom/android/server/am/ProcessRecord;JIILjava/lang/String;Ljava/lang/Object;Lcom/android/server/am/ProcessRecord;)I
-HPLcom/android/server/am/ProcessList;->updateLruProcessLSP(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;ZZ)V
-HPLcom/android/server/am/ProcessList;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;ZLcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ProcessList;->updateClientActivitiesOrderingLSP(Lcom/android/server/am/ProcessRecord;III)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ProcessList;->updateLruProcessLSP(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;Z)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ProcessList;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;Z)V
HSPLcom/android/server/am/ProcessList;->updateOomLevels(IIZ)V
HPLcom/android/server/am/ProcessList;->updateSeInfo(Lcom/android/server/am/ProcessRecord;)Ljava/lang/String;
HPLcom/android/server/am/ProcessList;->writeLmkd(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Z
+PLcom/android/server/am/ProcessList;->writeProcessesToProtoLSP(Landroid/util/proto/ProtoOutputStream;Ljava/lang/String;)V
PLcom/android/server/am/ProcessProfileRecord$$ExternalSyntheticLambda0;-><init>(Lcom/android/internal/app/procstats/ProcessState;)V
-HPLcom/android/server/am/ProcessProfileRecord$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/am/ProcessProfileRecord$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/ProcessProfileRecord;Lcom/android/internal/app/procstats/ProcessState;Lcom/android/server/am/ProcessStatsService;ILcom/android/internal/app/procstats/ProcessState;)V
-HPLcom/android/server/am/ProcessProfileRecord$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HPLcom/android/server/am/ProcessProfileRecord;->$r8$lambda$IUdC3S34rs87Xa1P5tzUxV1FgmY(Lcom/android/server/am/ProcessProfileRecord;Lcom/android/internal/app/procstats/ProcessState;Lcom/android/server/am/ProcessStatsService;ILcom/android/internal/app/procstats/ProcessState;Ljava/lang/String;Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;)V
-PLcom/android/server/am/ProcessProfileRecord;->$r8$lambda$JxHNnB95IHo4uPFFKjkpWwJexpY(Lcom/android/internal/app/procstats/ProcessState;Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;)V
+PLcom/android/server/am/ProcessProfileRecord$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
HPLcom/android/server/am/ProcessProfileRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ProcessProfileRecord;->abortNextPssTime()V
-PLcom/android/server/am/ProcessProfileRecord;->abortNextPssTime(Lcom/android/server/am/ProcessList$ProcStateMemTracker;)V
+HPLcom/android/server/am/ProcessProfileRecord;->abortNextPssTime()V
HPLcom/android/server/am/ProcessProfileRecord;->addHostingComponentType(I)V
+PLcom/android/server/am/ProcessProfileRecord;->addPss(JJJZIJ)V
HPLcom/android/server/am/ProcessProfileRecord;->clearHostingComponentType(I)V
-HPLcom/android/server/am/ProcessProfileRecord;->computeNextPssTime(IZZJ)J
-PLcom/android/server/am/ProcessProfileRecord;->getBaseProcessTracker()Lcom/android/internal/app/procstats/ProcessState;
-PLcom/android/server/am/ProcessProfileRecord;->getLastPss()J
-HPLcom/android/server/am/ProcessProfileRecord;->getLastPssTime()J
-PLcom/android/server/am/ProcessProfileRecord;->getLastRss()J
-HPLcom/android/server/am/ProcessProfileRecord;->getLastStateTime()J
-HPLcom/android/server/am/ProcessProfileRecord;->getNextPssTime()J
-PLcom/android/server/am/ProcessProfileRecord;->getTrimMemoryLevel()I
-HPLcom/android/server/am/ProcessProfileRecord;->getUidForAttribution(Lcom/android/server/am/ProcessRecord;)I
-HPLcom/android/server/am/ProcessProfileRecord;->hasPendingUiClean()Z
-PLcom/android/server/am/ProcessProfileRecord;->init(J)V
-HPLcom/android/server/am/ProcessProfileRecord;->lambda$onProcessActive$0(Lcom/android/internal/app/procstats/ProcessState;Lcom/android/server/am/ProcessStatsService;ILcom/android/internal/app/procstats/ProcessState;Ljava/lang/String;Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;)V
-HPLcom/android/server/am/ProcessProfileRecord;->lambda$onProcessInactive$1(Lcom/android/internal/app/procstats/ProcessState;Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;)V
-HPLcom/android/server/am/ProcessProfileRecord;->onProcessActive(Landroid/app/IApplicationThread;Lcom/android/server/am/ProcessStatsService;)V
-HPLcom/android/server/am/ProcessProfileRecord;->onProcessFrozen()V
-HPLcom/android/server/am/ProcessProfileRecord;->onProcessInactive(Lcom/android/server/am/ProcessStatsService;)V
-HPLcom/android/server/am/ProcessProfileRecord;->onProcessUnfrozen()V
-PLcom/android/server/am/ProcessProfileRecord;->setBaseProcessTracker(Lcom/android/internal/app/procstats/ProcessState;)V
-PLcom/android/server/am/ProcessProfileRecord;->setLastLowMemory(J)V
-PLcom/android/server/am/ProcessProfileRecord;->setLastRequestedGc(J)V
-HPLcom/android/server/am/ProcessProfileRecord;->setNextPssTime(J)V
-HPLcom/android/server/am/ProcessProfileRecord;->setPendingUiClean(Z)V
-HPLcom/android/server/am/ProcessProfileRecord;->setPid(I)V
-HPLcom/android/server/am/ProcessProfileRecord;->setProcessTrackerState(II)V
-HPLcom/android/server/am/ProcessProfileRecord;->updateProcState(Lcom/android/server/am/ProcessStateRecord;)V
-HPLcom/android/server/am/ProcessProviderRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/ProcessProviderRecord;->addProviderConnection(Lcom/android/server/am/ContentProviderConnection;)V
-PLcom/android/server/am/ProcessProviderRecord;->ensureProviderCapacity(I)V
-PLcom/android/server/am/ProcessProviderRecord;->getLastProviderTime()J
-HPLcom/android/server/am/ProcessProviderRecord;->getProvider(Ljava/lang/String;)Lcom/android/server/am/ContentProviderRecord;
-HPLcom/android/server/am/ProcessProviderRecord;->getProviderAt(I)Lcom/android/server/am/ContentProviderRecord;
-HPLcom/android/server/am/ProcessProviderRecord;->getProviderConnectionAt(I)Lcom/android/server/am/ContentProviderConnection;
-PLcom/android/server/am/ProcessProviderRecord;->hasProvider(Ljava/lang/String;)Z
-PLcom/android/server/am/ProcessProviderRecord;->installProvider(Ljava/lang/String;Lcom/android/server/am/ContentProviderRecord;)V
-HPLcom/android/server/am/ProcessProviderRecord;->numberOfProviderConnections()I
-HPLcom/android/server/am/ProcessProviderRecord;->numberOfProviders()I
-HPLcom/android/server/am/ProcessProviderRecord;->onCleanupApplicationRecordLocked(Z)Z
-HPLcom/android/server/am/ProcessProviderRecord;->removeProviderConnection(Lcom/android/server/am/ContentProviderConnection;)Z
-PLcom/android/server/am/ProcessProviderRecord;->setLastProviderTime(J)V
-HPLcom/android/server/am/ProcessReceiverRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/ProcessReceiverRecord;->addReceiver(Lcom/android/server/am/ReceiverList;)V
-HPLcom/android/server/am/ProcessReceiverRecord;->decrementCurReceivers()V
-HPLcom/android/server/am/ProcessReceiverRecord;->incrementCurReceivers()V
-HPLcom/android/server/am/ProcessReceiverRecord;->numberOfReceivers()I
-HPLcom/android/server/am/ProcessReceiverRecord;->onCleanupApplicationRecordLocked()V
-HPLcom/android/server/am/ProcessReceiverRecord;->removeReceiver(Lcom/android/server/am/ReceiverList;)V
+PLcom/android/server/am/ProcessProviderRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ProcessReceiverRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
PLcom/android/server/am/ProcessRecord$$ExternalSyntheticLambda0;-><init>(Lcom/android/internal/app/procstats/ProcessState;)V
PLcom/android/server/am/ProcessRecord$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/am/ProcessRecord;->$r8$lambda$HANeJKZz4r720moq9uNElrY05J8(Lcom/android/internal/app/procstats/ProcessState;Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;)V
HPLcom/android/server/am/ProcessRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;)V
-PLcom/android/server/am/ProcessRecord;->addOrUpdateBackgroundStartPrivileges(Landroid/os/Binder;Landroid/app/BackgroundStartPrivileges;)V
-HPLcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;JLcom/android/server/am/ProcessStatsService;)Z
-PLcom/android/server/am/ProcessRecord;->getActiveInstrumentation()Lcom/android/server/am/ActiveInstrumentation;
-PLcom/android/server/am/ProcessRecord;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;
-HPLcom/android/server/am/ProcessRecord;->getBindApplicationTime()J
-PLcom/android/server/am/ProcessRecord;->getCompat()Landroid/content/res/CompatibilityInfo;
-HPLcom/android/server/am/ProcessRecord;->getCpuDelayTime()J
-PLcom/android/server/am/ProcessRecord;->getCpuTime()J
-PLcom/android/server/am/ProcessRecord;->getDeathRecipient()Landroid/os/IBinder$DeathRecipient;
-PLcom/android/server/am/ProcessRecord;->getDisabledCompatChanges()[J
-PLcom/android/server/am/ProcessRecord;->getDyingPid()I
-HPLcom/android/server/am/ProcessRecord;->getHostingRecord()Lcom/android/server/am/HostingRecord;
-PLcom/android/server/am/ProcessRecord;->getIsolatedEntryPoint()Ljava/lang/String;
-HPLcom/android/server/am/ProcessRecord;->getLastActivityTime()J
-HPLcom/android/server/am/ProcessRecord;->getLruSeq()I
-HPLcom/android/server/am/ProcessRecord;->getMountMode()I
-PLcom/android/server/am/ProcessRecord;->getOnewayThread()Landroid/app/IApplicationThread;
+HPLcom/android/server/am/ProcessRecord;->addOrUpdateBackgroundStartPrivileges(Landroid/os/Binder;Landroid/app/BackgroundStartPrivileges;)V
+HPLcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;JLcom/android/server/am/ProcessStatsService;)V
+HPLcom/android/server/am/ProcessRecord;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/am/ProcessRecord;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
+PLcom/android/server/am/ProcessRecord;->getBackgroundStartPrivileges()Landroid/app/BackgroundStartPrivileges;
HPLcom/android/server/am/ProcessRecord;->getPackageList()[Ljava/lang/String;
-HPLcom/android/server/am/ProcessRecord;->getPid()I
-PLcom/android/server/am/ProcessRecord;->getPkgDeps()Landroid/util/ArraySet;
-HPLcom/android/server/am/ProcessRecord;->getPkgList()Lcom/android/server/am/PackageList;
+PLcom/android/server/am/ProcessRecord;->getPid()I
PLcom/android/server/am/ProcessRecord;->getProcessClassEnum()I
-HPLcom/android/server/am/ProcessRecord;->getRenderThreadTid()I
-PLcom/android/server/am/ProcessRecord;->getRss(I)J
-HPLcom/android/server/am/ProcessRecord;->getSeInfo()Ljava/lang/String;
-HPLcom/android/server/am/ProcessRecord;->getSetAdj()I
-HPLcom/android/server/am/ProcessRecord;->getSetProcState()I
-HPLcom/android/server/am/ProcessRecord;->getStartElapsedTime()J
-HPLcom/android/server/am/ProcessRecord;->getStartSeq()J
-HPLcom/android/server/am/ProcessRecord;->getStartTime()J
-HPLcom/android/server/am/ProcessRecord;->getStartUid()I
-HPLcom/android/server/am/ProcessRecord;->getStartUptime()J
-HPLcom/android/server/am/ProcessRecord;->getThread()Landroid/app/IApplicationThread;
-HPLcom/android/server/am/ProcessRecord;->getUidRecord()Lcom/android/server/am/UidRecord;
-HPLcom/android/server/am/ProcessRecord;->getWaitingToKill()Ljava/lang/String;
-HPLcom/android/server/am/ProcessRecord;->getWindowProcessController()Lcom/android/server/wm/WindowProcessController;
-HPLcom/android/server/am/ProcessRecord;->hasActivities()Z
+PLcom/android/server/am/ProcessRecord;->getUidRecord()Lcom/android/server/am/UidRecord;
HPLcom/android/server/am/ProcessRecord;->hasActivitiesOrRecentTasks()Z
-HPLcom/android/server/am/ProcessRecord;->isCached()Z
-HPLcom/android/server/am/ProcessRecord;->isDebuggable()Z
-PLcom/android/server/am/ProcessRecord;->isDebugging()Z
-HPLcom/android/server/am/ProcessRecord;->isInFullBackup()Z
-PLcom/android/server/am/ProcessRecord;->isInterestingToUserLocked()Z
-HPLcom/android/server/am/ProcessRecord;->isKilled()Z
-HPLcom/android/server/am/ProcessRecord;->isKilledByAm()Z
-HPLcom/android/server/am/ProcessRecord;->isPendingFinishAttach()Z
-HPLcom/android/server/am/ProcessRecord;->isPendingStart()Z
-HPLcom/android/server/am/ProcessRecord;->isPersistent()Z
-HPLcom/android/server/am/ProcessRecord;->isRemoved()Z
-HPLcom/android/server/am/ProcessRecord;->isThreadReady()Z
-PLcom/android/server/am/ProcessRecord;->isUnlocked()Z
-PLcom/android/server/am/ProcessRecord;->isUsingWrapper()Z
-PLcom/android/server/am/ProcessRecord;->killLocked(Ljava/lang/String;IIZ)V
-PLcom/android/server/am/ProcessRecord;->killLocked(Ljava/lang/String;IIZZ)V
-PLcom/android/server/am/ProcessRecord;->killLocked(Ljava/lang/String;IZ)V
-PLcom/android/server/am/ProcessRecord;->killLocked(Ljava/lang/String;Ljava/lang/String;IIZ)V
-HPLcom/android/server/am/ProcessRecord;->killLocked(Ljava/lang/String;Ljava/lang/String;IIZZ)V
-HPLcom/android/server/am/ProcessRecord;->killProcessGroupIfNecessaryLocked(Z)V
-PLcom/android/server/am/ProcessRecord;->lambda$resetPackageList$0(Lcom/android/internal/app/procstats/ProcessState;Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;)V
-HPLcom/android/server/am/ProcessRecord;->makeActive(Landroid/app/IApplicationThread;Lcom/android/server/am/ProcessStatsService;)V
-HPLcom/android/server/am/ProcessRecord;->makeInactive(Lcom/android/server/am/ProcessStatsService;)V
+PLcom/android/server/am/ProcessRecord;->isDebuggable()Z
+PLcom/android/server/am/ProcessRecord;->isFreezable()Z
+PLcom/android/server/am/ProcessRecord;->isThreadReady()Z
+HPLcom/android/server/am/ProcessRecord;->killLocked(IILjava/lang/String;Ljava/lang/String;ZZ)V
+PLcom/android/server/am/ProcessRecord;->killProcessGroupIfNecessaryLocked(Z)V
+HPLcom/android/server/am/ProcessRecord;->makeActive(Lcom/android/server/am/ApplicationThreadDeferred;Lcom/android/server/am/ProcessStatsService;)V
HPLcom/android/server/am/ProcessRecord;->onCleanupApplicationRecordLSP(Lcom/android/server/am/ProcessStatsService;ZZ)Z
-HPLcom/android/server/am/ProcessRecord;->onProcessFrozen()V
-PLcom/android/server/am/ProcessRecord;->onProcessFrozenCancelled()V
-HPLcom/android/server/am/ProcessRecord;->onProcessUnfrozen()V
-PLcom/android/server/am/ProcessRecord;->onStartActivity(IZLjava/lang/String;J)V
HPLcom/android/server/am/ProcessRecord;->removeBackgroundStartPrivileges(Landroid/os/Binder;)V
-HPLcom/android/server/am/ProcessRecord;->resetPackageList(Lcom/android/server/am/ProcessStatsService;)V
-PLcom/android/server/am/ProcessRecord;->setActiveInstrumentation(Lcom/android/server/am/ActiveInstrumentation;)V
+PLcom/android/server/am/ProcessRecord;->resetPackageList(Lcom/android/server/am/ProcessStatsService;)V
HPLcom/android/server/am/ProcessRecord;->setBackgroundStartPrivileges(Landroid/os/Binder;Landroid/app/BackgroundStartPrivileges;)V
-HPLcom/android/server/am/ProcessRecord;->setBindApplicationTime(J)V
-PLcom/android/server/am/ProcessRecord;->setCompat(Landroid/content/res/CompatibilityInfo;)V
-PLcom/android/server/am/ProcessRecord;->setDeathRecipient(Landroid/os/IBinder$DeathRecipient;)V
-HPLcom/android/server/am/ProcessRecord;->setDebugging(Z)V
-PLcom/android/server/am/ProcessRecord;->setDisabledCompatChanges([J)V
-HPLcom/android/server/am/ProcessRecord;->setDyingPid(I)V
-PLcom/android/server/am/ProcessRecord;->setGids([I)V
-PLcom/android/server/am/ProcessRecord;->setInstructionSet(Ljava/lang/String;)V
-PLcom/android/server/am/ProcessRecord;->setIsolatedEntryPoint(Ljava/lang/String;)V
-PLcom/android/server/am/ProcessRecord;->setIsolatedEntryPointArgs([Ljava/lang/String;)V
-HPLcom/android/server/am/ProcessRecord;->setKilled(Z)V
-HPLcom/android/server/am/ProcessRecord;->setKilledByAm(Z)V
-HPLcom/android/server/am/ProcessRecord;->setLastActivityTime(J)V
-HPLcom/android/server/am/ProcessRecord;->setLruSeq(I)V
-HPLcom/android/server/am/ProcessRecord;->setMountMode(I)V
-HPLcom/android/server/am/ProcessRecord;->setPendingFinishAttach(Z)V
-HPLcom/android/server/am/ProcessRecord;->setPendingStart(Z)V
HPLcom/android/server/am/ProcessRecord;->setPendingUiClean(Z)V
-HPLcom/android/server/am/ProcessRecord;->setPersistent(Z)V
-HPLcom/android/server/am/ProcessRecord;->setPid(I)V
-PLcom/android/server/am/ProcessRecord;->setPkgDeps(Landroid/util/ArraySet;)V
-HPLcom/android/server/am/ProcessRecord;->setRemoved(Z)V
-HPLcom/android/server/am/ProcessRecord;->setRenderThreadTid(I)V
-HPLcom/android/server/am/ProcessRecord;->setRequiredAbi(Ljava/lang/String;)V
-PLcom/android/server/am/ProcessRecord;->setRunningRemoteAnimation(Z)V
-HPLcom/android/server/am/ProcessRecord;->setStartParams(ILcom/android/server/am/HostingRecord;Ljava/lang/String;JJ)V
-HPLcom/android/server/am/ProcessRecord;->setStartSeq(J)V
-HPLcom/android/server/am/ProcessRecord;->setUidRecord(Lcom/android/server/am/UidRecord;)V
-HPLcom/android/server/am/ProcessRecord;->setUnlocked(Z)V
-HPLcom/android/server/am/ProcessRecord;->setUsingWrapper(Z)V
-PLcom/android/server/am/ProcessRecord;->setWaitingToKill(Ljava/lang/String;)V
-PLcom/android/server/am/ProcessRecord;->setWasForceStopped(Z)V
+PLcom/android/server/am/ProcessRecord;->setPid(I)V
+HPLcom/android/server/am/ProcessRecord;->setRunningRemoteAnimation(Z)V
PLcom/android/server/am/ProcessRecord;->toShortString()Ljava/lang/String;
HPLcom/android/server/am/ProcessRecord;->toShortString(Ljava/lang/StringBuilder;)V
HPLcom/android/server/am/ProcessRecord;->toString()Ljava/lang/String;
-HPLcom/android/server/am/ProcessRecord;->unlinkDeathRecipient()V
-PLcom/android/server/am/ProcessRecord;->updateProcessInfo(ZZZ)V
-HPLcom/android/server/am/ProcessRecord;->updateProcessRecordNodes(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ProcessRecord;->updateServiceConnectionActivities()V
-HPLcom/android/server/am/ProcessRecord;->wasForceStopped()Z
+PLcom/android/server/am/ProcessRecord;->unlinkDeathRecipient()V
+HPLcom/android/server/am/ProcessRecord;->updateProcessInfo(ZZZ)V
+PLcom/android/server/am/ProcessRecord;->updateProcessRecordNodes(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ProcessRecord;->useFifoUiScheduling()Z
HPLcom/android/server/am/ProcessServiceRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/ProcessServiceRecord;->addBoundClientUid(ILjava/lang/String;J)V
-HPLcom/android/server/am/ProcessServiceRecord;->addBoundClientUidsOfNewService(Lcom/android/server/am/ServiceRecord;)V
-HPLcom/android/server/am/ProcessServiceRecord;->addConnection(Lcom/android/server/am/ConnectionRecord;)V
-HPLcom/android/server/am/ProcessServiceRecord;->addSdkSandboxConnectionIfNecessary(Lcom/android/server/am/ConnectionRecord;)V
-HPLcom/android/server/am/ProcessServiceRecord;->areAllShortForegroundServicesProcstateTimedOut(J)Z
-HPLcom/android/server/am/ProcessServiceRecord;->areForegroundServiceTypesSame(IZ)Z
-HPLcom/android/server/am/ProcessServiceRecord;->clearBoundClientUids()V
-HPLcom/android/server/am/ProcessServiceRecord;->getConnectionAt(I)Lcom/android/server/am/ConnectionRecord;
-PLcom/android/server/am/ProcessServiceRecord;->getConnectionGroup()I
-HPLcom/android/server/am/ProcessServiceRecord;->getExecutingServiceAt(I)Lcom/android/server/am/ServiceRecord;
-HPLcom/android/server/am/ProcessServiceRecord;->getForegroundServiceTypes()I
-HPLcom/android/server/am/ProcessServiceRecord;->getNumForegroundServices()I
+HPLcom/android/server/am/ProcessServiceRecord;->clearBoundClientUids()V+]Landroid/util/IntArray;Landroid/util/IntArray;
+PLcom/android/server/am/ProcessServiceRecord;->getConnectionAt(I)Lcom/android/server/am/ConnectionRecord;
HPLcom/android/server/am/ProcessServiceRecord;->getRunningServiceAt(I)Lcom/android/server/am/ServiceRecord;
-HPLcom/android/server/am/ProcessServiceRecord;->hasClientActivities()Z
-PLcom/android/server/am/ProcessServiceRecord;->hasForegroundServices()Z
HPLcom/android/server/am/ProcessServiceRecord;->hasNonShortForegroundServices()Z
-PLcom/android/server/am/ProcessServiceRecord;->hasReportedForegroundServices()Z
-HPLcom/android/server/am/ProcessServiceRecord;->hasTopStartedAlmostPerceptibleServices()Z
+HPLcom/android/server/am/ProcessServiceRecord;->hasUndemotedShortForegroundService(J)Z
PLcom/android/server/am/ProcessServiceRecord;->isAlmostPerceptible(Lcom/android/server/am/ServiceRecord;)Z
-HPLcom/android/server/am/ProcessServiceRecord;->isTreatedLikeActivity()Z
HPLcom/android/server/am/ProcessServiceRecord;->modifyRawOomAdj(I)I
-PLcom/android/server/am/ProcessServiceRecord;->noteScheduleServiceTimeoutPending(Z)V
-HPLcom/android/server/am/ProcessServiceRecord;->numberOfConnections()I
-HPLcom/android/server/am/ProcessServiceRecord;->numberOfExecutingServices()I
-HPLcom/android/server/am/ProcessServiceRecord;->numberOfRunningServices()I
-HPLcom/android/server/am/ProcessServiceRecord;->onCleanupApplicationRecordLocked()V
-PLcom/android/server/am/ProcessServiceRecord;->onProcessFrozenCancelled()V
-PLcom/android/server/am/ProcessServiceRecord;->onProcessUnfrozen()V
-HPLcom/android/server/am/ProcessServiceRecord;->removeAllConnections()V
-PLcom/android/server/am/ProcessServiceRecord;->removeAllSdkSandboxConnections()V
-HPLcom/android/server/am/ProcessServiceRecord;->removeConnection(Lcom/android/server/am/ConnectionRecord;)V
-HPLcom/android/server/am/ProcessServiceRecord;->removeSdkSandboxConnectionIfNecessary(Lcom/android/server/am/ConnectionRecord;)V
PLcom/android/server/am/ProcessServiceRecord;->scheduleServiceTimeoutIfNeededLocked()V
-HPLcom/android/server/am/ProcessServiceRecord;->setExecServicesFg(Z)V
-HPLcom/android/server/am/ProcessServiceRecord;->setHasClientActivities(Z)V
-PLcom/android/server/am/ProcessServiceRecord;->setHasForegroundServices(ZIZ)V
-HPLcom/android/server/am/ProcessServiceRecord;->setHasReportedForegroundServices(Z)V
-PLcom/android/server/am/ProcessServiceRecord;->setReportedForegroundServiceTypes(I)V
-HPLcom/android/server/am/ProcessServiceRecord;->shouldExecServicesFg()Z
-HPLcom/android/server/am/ProcessServiceRecord;->startExecutingService(Lcom/android/server/am/ServiceRecord;)V
-HPLcom/android/server/am/ProcessServiceRecord;->startService(Lcom/android/server/am/ServiceRecord;)Z
-PLcom/android/server/am/ProcessServiceRecord;->stopAllExecutingServices()V
-HPLcom/android/server/am/ProcessServiceRecord;->stopExecutingService(Lcom/android/server/am/ServiceRecord;)V
-HPLcom/android/server/am/ProcessServiceRecord;->stopService(Lcom/android/server/am/ServiceRecord;)Z
-HPLcom/android/server/am/ProcessServiceRecord;->updateBoundClientUids()V
+HPLcom/android/server/am/ProcessServiceRecord;->updateBoundClientUids()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/am/ProcessServiceRecord;->updateHasTopStartedAlmostPerceptibleServices()V
HPLcom/android/server/am/ProcessServiceRecord;->updateHostingComonentTypeForBindingsLocked()V
+HSPLcom/android/server/am/ProcessStateController$GlobalState;-><init>()V
+HSPLcom/android/server/am/ProcessStateController;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessList;Lcom/android/server/am/ActiveUids;Lcom/android/server/ServiceThread;Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/OomAdjuster$Injector;Z)V
+PLcom/android/server/am/ProcessStateController;->addPublishedProvider(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Lcom/android/server/am/ContentProviderRecord;)Z
+HPLcom/android/server/am/ProcessStateController;->runFollowUpUpdate()V
+HPLcom/android/server/am/ProcessStateController;->runUpdate(ILcom/android/server/am/ProcessRecord;)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
+PLcom/android/server/am/ProcessStateController;->setForegroundServiceType(ILcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ProcessStateController;->setWakefulness(I)V
+HPLcom/android/server/am/ProcessStateController;->startService(Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ServiceRecord;)Z
+HPLcom/android/server/am/ProcessStateController;->stopService(Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ServiceRecord;)V
HPLcom/android/server/am/ProcessStateRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/ProcessStateRecord;->computeOomAdjFromActivitiesIfNecessary(Lcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;IZZIIIII)V
-HPLcom/android/server/am/ProcessStateRecord;->containsCycle()Z
-HPLcom/android/server/am/ProcessStateRecord;->forceProcessStateUpTo(I)V
-HPLcom/android/server/am/ProcessStateRecord;->getAdjSeq()I
-PLcom/android/server/am/ProcessStateRecord;->getAdjSource()Ljava/lang/Object;
-PLcom/android/server/am/ProcessStateRecord;->getAdjSourceProcState()I
-PLcom/android/server/am/ProcessStateRecord;->getAdjTarget()Ljava/lang/Object;
-PLcom/android/server/am/ProcessStateRecord;->getAdjTypeCode()I
-HPLcom/android/server/am/ProcessStateRecord;->getCachedCompatChange(I)Z
+HPLcom/android/server/am/ProcessStateRecord;->forceProcessStateUpTo(I)V+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;
+HPLcom/android/server/am/ProcessStateRecord;->getCachedCompatChange(I)Z+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
HPLcom/android/server/am/ProcessStateRecord;->getCachedHasActivities()Z
-HPLcom/android/server/am/ProcessStateRecord;->getCachedHasRecentTasks()Z
HPLcom/android/server/am/ProcessStateRecord;->getCachedHasVisibleActivities()Z
-HPLcom/android/server/am/ProcessStateRecord;->getCachedIsHeavyWeight()Z
HPLcom/android/server/am/ProcessStateRecord;->getCachedIsHomeProcess()Z
-HPLcom/android/server/am/ProcessStateRecord;->getCachedIsPreviousProcess()Z
-HPLcom/android/server/am/ProcessStateRecord;->getCachedIsReceivingBroadcast([I)Z
-HPLcom/android/server/am/ProcessStateRecord;->getCompletedAdjSeq()I
-HPLcom/android/server/am/ProcessStateRecord;->getCurAdj()I
-HPLcom/android/server/am/ProcessStateRecord;->getCurCapability()I
-HPLcom/android/server/am/ProcessStateRecord;->getCurProcState()I
-HPLcom/android/server/am/ProcessStateRecord;->getCurRawAdj()I
-HPLcom/android/server/am/ProcessStateRecord;->getCurRawProcState()I
-HPLcom/android/server/am/ProcessStateRecord;->getCurrentSchedulingGroup()I
-PLcom/android/server/am/ProcessStateRecord;->getFgInteractionTime()J
-PLcom/android/server/am/ProcessStateRecord;->getForcingToImportant()Ljava/lang/Object;
-PLcom/android/server/am/ProcessStateRecord;->getInteractionEventTime()J
-PLcom/android/server/am/ProcessStateRecord;->getLastCanKillOnBgRestrictedAndIdleTime()J
-PLcom/android/server/am/ProcessStateRecord;->getLastInvisibleTime()J
-HPLcom/android/server/am/ProcessStateRecord;->getLastStateTime()J
-HPLcom/android/server/am/ProcessStateRecord;->getMaxAdj()I
-HPLcom/android/server/am/ProcessStateRecord;->getReportedProcState()I
-HPLcom/android/server/am/ProcessStateRecord;->getSetAdj()I
-HPLcom/android/server/am/ProcessStateRecord;->getSetCapability()I
-HPLcom/android/server/am/ProcessStateRecord;->getSetProcState()I
-PLcom/android/server/am/ProcessStateRecord;->getSetRawAdj()I
-HPLcom/android/server/am/ProcessStateRecord;->getSetSchedGroup()I
-HPLcom/android/server/am/ProcessStateRecord;->getVerifiedAdj()I
-PLcom/android/server/am/ProcessStateRecord;->getWhenUnimportant()J
-HPLcom/android/server/am/ProcessStateRecord;->hasForegroundActivities()Z
-HPLcom/android/server/am/ProcessStateRecord;->hasOverlayUi()Z
-HPLcom/android/server/am/ProcessStateRecord;->hasProcStateChanged()Z
-PLcom/android/server/am/ProcessStateRecord;->hasRepForegroundActivities()Z
-PLcom/android/server/am/ProcessStateRecord;->hasReportedInteraction()Z
-HPLcom/android/server/am/ProcessStateRecord;->hasShownUi()Z
-HPLcom/android/server/am/ProcessStateRecord;->hasTopUi()Z
-PLcom/android/server/am/ProcessStateRecord;->init(J)V
-HPLcom/android/server/am/ProcessStateRecord;->isBackgroundRestricted()Z
+PLcom/android/server/am/ProcessStateRecord;->getSetAdjWithServices()I
+PLcom/android/server/am/ProcessStateRecord;->getVerifiedAdj()I
HPLcom/android/server/am/ProcessStateRecord;->isCached()Z
-HPLcom/android/server/am/ProcessStateRecord;->isCurBoundByNonBgRestrictedApp()Z
-HPLcom/android/server/am/ProcessStateRecord;->isReachable()Z
-HPLcom/android/server/am/ProcessStateRecord;->isRunningRemoteAnimation()Z
-PLcom/android/server/am/ProcessStateRecord;->isServiceB()Z
-PLcom/android/server/am/ProcessStateRecord;->isSetBoundByNonBgRestrictedApp()Z
-HPLcom/android/server/am/ProcessStateRecord;->isSystemNoUi()Z
-HPLcom/android/server/am/ProcessStateRecord;->onCleanupApplicationRecordLSP()V
HPLcom/android/server/am/ProcessStateRecord;->resetCachedInfo()V
-HPLcom/android/server/am/ProcessStateRecord;->setAdjSeq(I)V
-HPLcom/android/server/am/ProcessStateRecord;->setAdjSource(Ljava/lang/Object;)V
-HPLcom/android/server/am/ProcessStateRecord;->setAdjSourceProcState(I)V
-PLcom/android/server/am/ProcessStateRecord;->setAdjTarget(Ljava/lang/Object;)V
PLcom/android/server/am/ProcessStateRecord;->setAdjType(Ljava/lang/String;)V
-HPLcom/android/server/am/ProcessStateRecord;->setAdjTypeCode(I)V
-HPLcom/android/server/am/ProcessStateRecord;->setBackgroundRestricted(Z)V
-HPLcom/android/server/am/ProcessStateRecord;->setCached(Z)V
-HPLcom/android/server/am/ProcessStateRecord;->setCached(ZZ)Z
-HPLcom/android/server/am/ProcessStateRecord;->setCompletedAdjSeq(I)V
-HPLcom/android/server/am/ProcessStateRecord;->setContainsCycle(Z)V
HPLcom/android/server/am/ProcessStateRecord;->setCurAdj(I)V
-HPLcom/android/server/am/ProcessStateRecord;->setCurBoundByNonBgRestrictedApp(Z)V
-HPLcom/android/server/am/ProcessStateRecord;->setCurCapability(I)V
HPLcom/android/server/am/ProcessStateRecord;->setCurProcState(I)V
-HPLcom/android/server/am/ProcessStateRecord;->setCurRawAdj(I)V
HPLcom/android/server/am/ProcessStateRecord;->setCurRawAdj(IZ)Z
-HPLcom/android/server/am/ProcessStateRecord;->setCurRawProcState(I)V
-HPLcom/android/server/am/ProcessStateRecord;->setCurRawProcState(IZ)Z
HPLcom/android/server/am/ProcessStateRecord;->setCurrentSchedulingGroup(I)V
-HPLcom/android/server/am/ProcessStateRecord;->setEmpty(Z)V
-HPLcom/android/server/am/ProcessStateRecord;->setFgInteractionTime(J)V
-PLcom/android/server/am/ProcessStateRecord;->setForcingToImportant(Ljava/lang/Object;)V
-HPLcom/android/server/am/ProcessStateRecord;->setHasForegroundActivities(Z)V
-PLcom/android/server/am/ProcessStateRecord;->setHasOverlayUi(Z)V
-HPLcom/android/server/am/ProcessStateRecord;->setHasShownUi(Z)V
-HPLcom/android/server/am/ProcessStateRecord;->setHasStartedServices(Z)V
-HPLcom/android/server/am/ProcessStateRecord;->setInteractionEventTime(J)V
-PLcom/android/server/am/ProcessStateRecord;->setLastStateTime(J)V
-PLcom/android/server/am/ProcessStateRecord;->setLastTopTime(J)V
-PLcom/android/server/am/ProcessStateRecord;->setMaxAdj(I)V
-HPLcom/android/server/am/ProcessStateRecord;->setNoKillOnBgRestrictedAndIdle(Z)V
-HPLcom/android/server/am/ProcessStateRecord;->setProcStateChanged(Z)V
-HPLcom/android/server/am/ProcessStateRecord;->setReachable(Z)V
-HPLcom/android/server/am/ProcessStateRecord;->setReportedInteraction(Z)V
HPLcom/android/server/am/ProcessStateRecord;->setReportedProcState(I)V
-PLcom/android/server/am/ProcessStateRecord;->setRunningRemoteAnimation(Z)V
-HPLcom/android/server/am/ProcessStateRecord;->setScheduleLikeTopApp(Z)V
-PLcom/android/server/am/ProcessStateRecord;->setServiceB(Z)V
-PLcom/android/server/am/ProcessStateRecord;->setSetAdj(I)V
-PLcom/android/server/am/ProcessStateRecord;->setSetCached(Z)V
-PLcom/android/server/am/ProcessStateRecord;->setSetCapability(I)V
-PLcom/android/server/am/ProcessStateRecord;->setSetNoKillOnBgRestrictedAndIdle(Z)V
-HPLcom/android/server/am/ProcessStateRecord;->setSetProcState(I)V
-PLcom/android/server/am/ProcessStateRecord;->setSetRawAdj(I)V
-PLcom/android/server/am/ProcessStateRecord;->setSetSchedGroup(I)V
-HPLcom/android/server/am/ProcessStateRecord;->setSystemNoUi(Z)V
-HPLcom/android/server/am/ProcessStateRecord;->setVerifiedAdj(I)V
-HPLcom/android/server/am/ProcessStateRecord;->setWhenUnimportant(J)V
-PLcom/android/server/am/ProcessStateRecord;->shouldNotKillOnBgRestrictedAndIdle()Z
-HPLcom/android/server/am/ProcessStateRecord;->updateLastInvisibleTime(Z)V
+PLcom/android/server/am/ProcessStateRecord;->setVerifiedAdj(I)V
+PLcom/android/server/am/ProcessStatsService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/ProcessStatsService;)V
+PLcom/android/server/am/ProcessStatsService$$ExternalSyntheticLambda0;->run()V
HSPLcom/android/server/am/ProcessStatsService$1;-><init>(Lcom/android/server/am/ProcessStatsService;)V
+PLcom/android/server/am/ProcessStatsService$2;-><init>(Lcom/android/server/am/ProcessStatsService;J)V
+PLcom/android/server/am/ProcessStatsService$2;->run()V
+PLcom/android/server/am/ProcessStatsService$4;-><init>([Landroid/os/ParcelFileDescriptor;[B)V
+PLcom/android/server/am/ProcessStatsService$4;->run()V
HSPLcom/android/server/am/ProcessStatsService$LocalService;-><init>(Lcom/android/server/am/ProcessStatsService;)V
-HSPLcom/android/server/am/ProcessStatsService$LocalService;-><init>(Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService$LocalService-IA;)V
-HSPLcom/android/server/am/ProcessStatsService;-><clinit>()V
HSPLcom/android/server/am/ProcessStatsService;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/io/File;)V
+PLcom/android/server/am/ProcessStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/am/ProcessStatsService;->dumpAggregatedStats(Ljava/io/PrintWriter;JJLjava/lang/String;ZZZZZI)V
+PLcom/android/server/am/ProcessStatsService;->dumpInner(Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/am/ProcessStatsService;->getCommittedFilesLF(IZZ)Ljava/util/ArrayList;
+PLcom/android/server/am/ProcessStatsService;->getCurrentFile()Ljava/io/File;
HSPLcom/android/server/am/ProcessStatsService;->getMemFactorLocked()I
-HPLcom/android/server/am/ProcessStatsService;->getProcessStateLocked(Ljava/lang/String;IJLjava/lang/String;)Lcom/android/internal/app/procstats/ProcessState;
-HPLcom/android/server/am/ProcessStatsService;->getServiceState(Ljava/lang/String;IJLjava/lang/String;Ljava/lang/String;)Lcom/android/internal/app/procstats/ServiceState;
-HSPLcom/android/server/am/ProcessStatsService;->publish()V
-HSPLcom/android/server/am/ProcessStatsService;->setMemFactorLocked(IZJ)Z
-HSPLcom/android/server/am/ProcessStatsService;->shouldWriteNowLocked(J)Z
+PLcom/android/server/am/ProcessStatsService;->getStatsOverTime(J)Landroid/os/ParcelFileDescriptor;
+PLcom/android/server/am/ProcessStatsService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/am/ProcessStatsService;->performWriteState(J)V
+HSPLcom/android/server/am/ProcessStatsService;->setMemFactorLocked(IJZ)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;
+PLcom/android/server/am/ProcessStatsService;->trimHistoricStatesWriteLF()V
HSPLcom/android/server/am/ProcessStatsService;->updateFileLocked()V
-HPLcom/android/server/am/ProcessStatsService;->updateProcessStateHolderLocked(Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;Ljava/lang/String;IJLjava/lang/String;)V
-HSPLcom/android/server/am/ProcessStatsService;->updateTrackingAssociationsLocked(IJ)V
+PLcom/android/server/am/ProcessStatsService;->writeStateLocked(Z)V
+PLcom/android/server/am/ProcessStatsService;->writeStateLocked(ZZ)V
+PLcom/android/server/am/ProviderMap$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
HSPLcom/android/server/am/ProviderMap;-><init>(Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/am/ProviderMap;->collectPackageProvidersLocked(Ljava/lang/String;Ljava/util/Set;ZZILjava/util/ArrayList;)Z
PLcom/android/server/am/ProviderMap;->collectPackageProvidersLocked(Ljava/lang/String;Ljava/util/Set;ZZLjava/util/HashMap;Ljava/util/ArrayList;)Z
-HPLcom/android/server/am/ProviderMap;->getProviderByClass(Landroid/content/ComponentName;I)Lcom/android/server/am/ContentProviderRecord;
-HPLcom/android/server/am/ProviderMap;->getProviderByName(Ljava/lang/String;I)Lcom/android/server/am/ContentProviderRecord;
-HPLcom/android/server/am/ProviderMap;->getProvidersByClass(I)Ljava/util/HashMap;
+PLcom/android/server/am/ProviderMap;->dumpProvider(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/am/ContentProviderRecord;[Ljava/lang/String;Z)V
+PLcom/android/server/am/ProviderMap;->dumpProvidersByClassLocked(Ljava/io/PrintWriter;ZLjava/lang/String;Ljava/lang/String;ZLjava/util/HashMap;)Z
+PLcom/android/server/am/ProviderMap;->dumpProvidersByNameLocked(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;ZLjava/util/HashMap;)Z
+PLcom/android/server/am/ProviderMap;->dumpToTransferPipe(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/am/ContentProviderRecord;Landroid/app/IApplicationThread;[Ljava/lang/String;)V
+PLcom/android/server/am/ProviderMap;->getProviderByClass(ILandroid/content/ComponentName;)Lcom/android/server/am/ContentProviderRecord;
+HPLcom/android/server/am/ProviderMap;->getProviderByName(ILjava/lang/String;)Lcom/android/server/am/ContentProviderRecord;
+PLcom/android/server/am/ProviderMap;->getProvidersByClass(I)Ljava/util/HashMap;
HPLcom/android/server/am/ProviderMap;->getProvidersByName(I)Ljava/util/HashMap;
-HPLcom/android/server/am/ProviderMap;->putProviderByClass(Landroid/content/ComponentName;Lcom/android/server/am/ContentProviderRecord;)V
-HPLcom/android/server/am/ProviderMap;->putProviderByName(Ljava/lang/String;Lcom/android/server/am/ContentProviderRecord;)V
-HPLcom/android/server/am/ProviderMap;->removeProviderByClass(Landroid/content/ComponentName;I)V
-HPLcom/android/server/am/ProviderMap;->removeProviderByName(Ljava/lang/String;I)V
+PLcom/android/server/am/ProviderMap;->getProvidersForName(Ljava/lang/String;)Ljava/util/ArrayList;
+PLcom/android/server/am/ProviderMap;->putProviderByClass(Landroid/content/ComponentName;Lcom/android/server/am/ContentProviderRecord;)V
HPLcom/android/server/am/ReceiverList;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;IIILandroid/content/IIntentReceiver;)V
-HPLcom/android/server/am/ReceiverList;->containsFilter(Landroid/content/IntentFilter;)Z
PLcom/android/server/am/ReceiverList;->equals(Ljava/lang/Object;)Z
HPLcom/android/server/am/ReceiverList;->hashCode()I
+HPLcom/android/server/am/ReceiverList;->toString()Ljava/lang/String;+]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;
PLcom/android/server/am/SameProcessApplicationThread$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/SameProcessApplicationThread;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Landroid/content/res/CompatibilityInfo;ILjava/lang/String;Landroid/os/Bundle;ZZIIILjava/lang/String;)V
PLcom/android/server/am/SameProcessApplicationThread$$ExternalSyntheticLambda0;->run()V
HPLcom/android/server/am/SameProcessApplicationThread$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/SameProcessApplicationThread;Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZIIILjava/lang/String;)V
-HPLcom/android/server/am/SameProcessApplicationThread$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/am/SameProcessApplicationThread;->$r8$lambda$30wFUSGfb92ROcaDhzRGaDhM0Kc(Lcom/android/server/am/SameProcessApplicationThread;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Landroid/content/res/CompatibilityInfo;ILjava/lang/String;Landroid/os/Bundle;ZZIIILjava/lang/String;)V
-PLcom/android/server/am/SameProcessApplicationThread;->$r8$lambda$xSNZcV-izZZ4vzJCToJP1hgj54U(Lcom/android/server/am/SameProcessApplicationThread;Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZIIILjava/lang/String;)V
+HPLcom/android/server/am/SameProcessApplicationThread$$ExternalSyntheticLambda1;->run()V+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;
PLcom/android/server/am/SameProcessApplicationThread;-><init>(Landroid/app/IApplicationThread;Landroid/os/Handler;)V
-PLcom/android/server/am/SameProcessApplicationThread;->lambda$scheduleReceiver$0(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Landroid/content/res/CompatibilityInfo;ILjava/lang/String;Landroid/os/Bundle;ZZIIILjava/lang/String;)V
-HPLcom/android/server/am/SameProcessApplicationThread;->lambda$scheduleRegisteredReceiver$1(Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZIIILjava/lang/String;)V
PLcom/android/server/am/SameProcessApplicationThread;->scheduleReceiver(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Landroid/content/res/CompatibilityInfo;ILjava/lang/String;Landroid/os/Bundle;ZZIIILjava/lang/String;)V
HPLcom/android/server/am/SameProcessApplicationThread;->scheduleRegisteredReceiver(Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZIIILjava/lang/String;)V
-HPLcom/android/server/am/ServiceRecord$1;-><init>(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;I)V
-HPLcom/android/server/am/ServiceRecord$1;->run()V
+PLcom/android/server/am/ServiceRecord$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/ServiceRecord;)V
+PLcom/android/server/am/ServiceRecord$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/am/ServiceRecord$1;-><init>(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;I)V
+HPLcom/android/server/am/ServiceRecord$1;->run()V+]Lcom/android/server/notification/NotificationManagerInternal;Lcom/android/server/notification/NotificationManagerService$13;
PLcom/android/server/am/ServiceRecord$2;-><init>(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;ILandroid/app/Notification;IIZLcom/android/server/am/ServiceRecord;)V
HPLcom/android/server/am/ServiceRecord$2;->run()V
+PLcom/android/server/am/ServiceRecord$3;-><init>(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;III)V
+PLcom/android/server/am/ServiceRecord$3;->run()V
+PLcom/android/server/am/ServiceRecord$4;-><init>(IILjava/lang/String;)V
+PLcom/android/server/am/ServiceRecord$4;->run()V
HPLcom/android/server/am/ServiceRecord$StartItem;-><init>(Lcom/android/server/am/ServiceRecord;ZILandroid/content/Intent;Lcom/android/server/uri/NeededUriGrants;ILjava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/am/ServiceRecord$StartItem;->removeUriPermissionsLocked()V
-PLcom/android/server/am/ServiceRecord;->-$$Nest$msignalForegroundServiceNotification(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;IIZ)V
-HPLcom/android/server/am/ServiceRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/ComponentName;Landroid/content/ComponentName;Ljava/lang/String;ILandroid/content/Intent$FilterComparison;Landroid/content/pm/ServiceInfo;ZLjava/lang/Runnable;Ljava/lang/String;ILjava/lang/String;Z)V
-HPLcom/android/server/am/ServiceRecord;->addConnection(Landroid/os/IBinder;Lcom/android/server/am/ConnectionRecord;)V
-PLcom/android/server/am/ServiceRecord;->allowedChanged(II)Z
+PLcom/android/server/am/ServiceRecord$StartItem;->toString()Ljava/lang/String;
+PLcom/android/server/am/ServiceRecord;->-$$Nest$msignalForegroundServiceNotification(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;IZ)V
+HPLcom/android/server/am/ServiceRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/ComponentName;Landroid/content/ComponentName;Ljava/lang/String;ILandroid/content/Intent$FilterComparison;Landroid/content/pm/ServiceInfo;ZLcom/android/server/am/ActiveServices$ServiceRestarter;Ljava/lang/String;ILjava/lang/String;Z)V
+HPLcom/android/server/am/ServiceRecord;->addConnection(Landroid/os/IBinder;Lcom/android/server/am/ConnectionRecord;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/am/ServiceRecord;->canStopIfKilled(Z)Z
-HPLcom/android/server/am/ServiceRecord;->clearDeliveredStartsLocked()V
-HPLcom/android/server/am/ServiceRecord;->clearFgsAllowStart()V
-HPLcom/android/server/am/ServiceRecord;->clearFgsAllowWiu()V
-HPLcom/android/server/am/ServiceRecord;->clearShortFgsInfo()V
+PLcom/android/server/am/ServiceRecord;->cancelNotification()V
HPLcom/android/server/am/ServiceRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-PLcom/android/server/am/ServiceRecord;->dumpReasonCode(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;I)V
-HPLcom/android/server/am/ServiceRecord;->findDeliveredStart(IZZ)Lcom/android/server/am/ServiceRecord$StartItem;
-PLcom/android/server/am/ServiceRecord;->forceClearTracker()V
-HPLcom/android/server/am/ServiceRecord;->getBackgroundStartPrivilegesWithExclusiveToken()Landroid/app/BackgroundStartPrivileges;
-HPLcom/android/server/am/ServiceRecord;->getComponentName()Landroid/content/ComponentName;
-PLcom/android/server/am/ServiceRecord;->getConnections()Landroid/util/ArrayMap;
+HPLcom/android/server/am/ServiceRecord;->dumpDebug(Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/am/ServiceRecord;->dumpReasonCode(ILjava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/ServiceRecord;->findDeliveredStart(IZZ)Lcom/android/server/am/ServiceRecord$StartItem;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/am/ServiceRecord;->getBackgroundStartPrivilegesWithExclusiveToken()Landroid/app/BackgroundStartPrivileges;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/am/ServiceRecord;->getComponentName()Landroid/content/ComponentName;
PLcom/android/server/am/ServiceRecord;->getFgsAllowStart()I
-PLcom/android/server/am/ServiceRecord;->getFgsAllowStart_legacy()I
-PLcom/android/server/am/ServiceRecord;->getFgsAllowStart_new()I
-HPLcom/android/server/am/ServiceRecord;->getFgsAllowWiu_forCapabilities()I
HPLcom/android/server/am/ServiceRecord;->getFgsAllowWiu_forStart()I
-HPLcom/android/server/am/ServiceRecord;->getFgsAllowWiu_legacy()I
-PLcom/android/server/am/ServiceRecord;->getFgsAllowWiu_new()I
-HPLcom/android/server/am/ServiceRecord;->getLastStartId()I
HPLcom/android/server/am/ServiceRecord;->getTracker()Lcom/android/internal/app/procstats/ServiceState;
-HPLcom/android/server/am/ServiceRecord;->hasAutoCreateConnections()Z
-PLcom/android/server/am/ServiceRecord;->isAppAlive()Z
+HPLcom/android/server/am/ServiceRecord;->hasAutoCreateConnections()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/am/ServiceRecord;->isFgsAllowedStart()Z
HPLcom/android/server/am/ServiceRecord;->isFgsAllowedWiu_forCapabilities()Z
-HPLcom/android/server/am/ServiceRecord;->isFgsAllowedWiu_forStart()Z
HPLcom/android/server/am/ServiceRecord;->isShortFgs()Z
-HPLcom/android/server/am/ServiceRecord;->makeNextStartId()I
PLcom/android/server/am/ServiceRecord;->makeRestarting(IJ)V
PLcom/android/server/am/ServiceRecord;->maybeLogFgsLogicChange()V
HPLcom/android/server/am/ServiceRecord;->postNotification(Z)V
-PLcom/android/server/am/ServiceRecord;->reasonOr(II)I
-PLcom/android/server/am/ServiceRecord;->reasonOr(III)I
-HPLcom/android/server/am/ServiceRecord;->removeConnection(Landroid/os/IBinder;)V
-HPLcom/android/server/am/ServiceRecord;->resetRestartCounter()V
-HPLcom/android/server/am/ServiceRecord;->retrieveAppBindingLocked(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;)Lcom/android/server/am/AppBindRecord;
-PLcom/android/server/am/ServiceRecord;->setAllowedBgActivityStartsByBinding(Z)V
-HPLcom/android/server/am/ServiceRecord;->setProcess(Lcom/android/server/am/ProcessRecord;Landroid/app/IApplicationThread;ILcom/android/server/am/UidRecord;)V
+HPLcom/android/server/am/ServiceRecord;->setProcess(Lcom/android/server/am/ProcessRecord;)V+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/am/ServiceRecord;->shouldTriggerShortFgsTimedEvent(JJ)Z
-PLcom/android/server/am/ServiceRecord;->shouldTriggerShortFgsTimeout(J)Z
-HPLcom/android/server/am/ServiceRecord;->signalForegroundServiceNotification(Ljava/lang/String;IIZ)V
HPLcom/android/server/am/ServiceRecord;->toString()Ljava/lang/String;
-HPLcom/android/server/am/ServiceRecord;->updateAllowUiJobScheduling(Z)V
-PLcom/android/server/am/ServiceRecord;->updateAllowlistManager()V
-HPLcom/android/server/am/ServiceRecord;->updateFgsHasNotificationPermission()V
-PLcom/android/server/am/ServiceRecord;->updateIsAllowedBgActivityStartsByBinding()V
HPLcom/android/server/am/ServiceRecord;->updateKeepWarmLocked()V
-PLcom/android/server/am/ServiceRecord;->updateParentProcessBgActivityStartsToken()V
+HPLcom/android/server/am/ServiceRecord;->updateOomAdjSeq()V
HPLcom/android/server/am/ServiceRecord;->updateProcessStateOnRequest()V
-PLcom/android/server/am/ServiceRecord;->useNewBfslLogic()Z
-HPLcom/android/server/am/ServiceRecord;->useNewWiuLogic_forCapabilities()Z
-HPLcom/android/server/am/ServiceRecord;->useNewWiuLogic_forStart()Z
-PLcom/android/server/am/SettingsToPropertiesMapper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/SettingsToPropertiesMapper;)V
-PLcom/android/server/am/SettingsToPropertiesMapper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/SettingsToPropertiesMapper;)V
-PLcom/android/server/am/SettingsToPropertiesMapper$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/am/SettingsToPropertiesMapper;)V
-PLcom/android/server/am/SettingsToPropertiesMapper$1;-><init>(Lcom/android/server/am/SettingsToPropertiesMapper;Landroid/os/Handler;Ljava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/am/SettingsToPropertiesMapper;-><clinit>()V
+HPLcom/android/server/am/ServiceRecord;->wasOomAdjUpdated()Z
+PLcom/android/server/am/SettingsToPropertiesMapper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/SettingsToPropertiesMapper;I)V
+PLcom/android/server/am/SettingsToPropertiesMapper$$ExternalSyntheticLambda0;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/am/SettingsToPropertiesMapper$1;-><init>(Lcom/android/server/am/SettingsToPropertiesMapper;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/SettingsToPropertiesMapper;-><clinit>()V
PLcom/android/server/am/SettingsToPropertiesMapper;-><init>(Landroid/content/ContentResolver;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V
-PLcom/android/server/am/SettingsToPropertiesMapper;->isNativeFlagsResetPerformed()Z
+PLcom/android/server/am/SettingsToPropertiesMapper;->logErr(Ljava/lang/String;)V
+PLcom/android/server/am/SettingsToPropertiesMapper;->makeAconfigFlagPropertyName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/am/SettingsToPropertiesMapper;->makePropertyName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/am/SettingsToPropertiesMapper;->setProperty(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/am/SettingsToPropertiesMapper;->start(Landroid/content/ContentResolver;)Lcom/android/server/am/SettingsToPropertiesMapper;
-HPLcom/android/server/am/SettingsToPropertiesMapper;->updatePropertiesFromSettings()V
+PLcom/android/server/am/SettingsToPropertiesMapper;->updatePropertiesFromSettings()V
PLcom/android/server/am/SettingsToPropertiesMapper;->updatePropertyFromSetting(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/am/StackTracesDumpHelper$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/am/StackTracesDumpHelper$$ExternalSyntheticLambda1;->applyAsLong(Ljava/lang/Object;)J
-PLcom/android/server/am/StackTracesDumpHelper;-><clinit>()V
-PLcom/android/server/am/StackTracesDumpHelper;->appendtoANRFile(Ljava/lang/String;Ljava/lang/String;)I
-PLcom/android/server/am/StackTracesDumpHelper;->collectPids(Ljava/util/concurrent/Future;Ljava/lang/String;)Ljava/util/ArrayList;
-PLcom/android/server/am/StackTracesDumpHelper;->copyFirstPidTempDump(Ljava/lang/String;Ljava/util/concurrent/Future;JLcom/android/internal/os/anr/AnrLatencyTracker;)Z
-PLcom/android/server/am/StackTracesDumpHelper;->createAnrDumpFile(Ljava/io/File;)Ljava/io/File;
-PLcom/android/server/am/StackTracesDumpHelper;->dumpJavaTracesTombstoned(ILjava/lang/String;J)J
-PLcom/android/server/am/StackTracesDumpHelper;->dumpStackTraces(Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/concurrent/Future;Ljava/util/concurrent/Future;Ljava/util/concurrent/Future;Lcom/android/internal/os/anr/AnrLatencyTracker;)J
-PLcom/android/server/am/StackTracesDumpHelper;->dumpStackTraces(Ljava/util/ArrayList;Lcom/android/internal/os/ProcessCpuTracker;Landroid/util/SparseBooleanArray;Ljava/util/concurrent/Future;Ljava/io/StringWriter;Ljava/util/concurrent/atomic/AtomicLong;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Future;Lcom/android/internal/os/anr/AnrLatencyTracker;)Ljava/io/File;
-PLcom/android/server/am/StackTracesDumpHelper;->dumpStackTracesTempFile(ILcom/android/internal/os/anr/AnrLatencyTracker;)Ljava/io/File;
-PLcom/android/server/am/StackTracesDumpHelper;->maybePruneOldTraces(Ljava/io/File;)V
-PLcom/android/server/am/StackTracesDumpHelper;->writeUptimeStartHeaderForPid(ILjava/lang/String;)I
-HSPLcom/android/server/am/TraceErrorLogger;-><init>()V
-PLcom/android/server/am/TraceErrorLogger;->addProcessInfoAndErrorIdToTrace(Ljava/lang/String;ILjava/util/UUID;)V
-PLcom/android/server/am/TraceErrorLogger;->addSubjectToTrace(Ljava/lang/String;Ljava/util/UUID;)V
-PLcom/android/server/am/TraceErrorLogger;->generateErrorId()Ljava/util/UUID;
-PLcom/android/server/am/TraceErrorLogger;->isAddErrorIdEnabled()Z
+PLcom/android/server/am/StackTracesDumpHelper$$ExternalSyntheticOutline0;->m(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
HSPLcom/android/server/am/UidObserverController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/UidObserverController;)V
HPLcom/android/server/am/UidObserverController$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/am/UidObserverController$ChangeRecord;-><init>()V
HPLcom/android/server/am/UidObserverController$ChangeRecord;->copyTo(Lcom/android/server/am/UidObserverController$ChangeRecord;)V
-HPLcom/android/server/am/UidObserverController$UidObserverRegistration;->-$$Nest$fgetmCutpoint(Lcom/android/server/am/UidObserverController$UidObserverRegistration;)I
-HPLcom/android/server/am/UidObserverController$UidObserverRegistration;->-$$Nest$fgetmUid(Lcom/android/server/am/UidObserverController$UidObserverRegistration;)I
-HPLcom/android/server/am/UidObserverController$UidObserverRegistration;->-$$Nest$fgetmWhich(Lcom/android/server/am/UidObserverController$UidObserverRegistration;)I
PLcom/android/server/am/UidObserverController$UidObserverRegistration;-><clinit>()V
-HPLcom/android/server/am/UidObserverController$UidObserverRegistration;-><init>(ILjava/lang/String;IIZ[ILandroid/os/IBinder;)V
-HPLcom/android/server/am/UidObserverController$UidObserverRegistration;->isWatchingUid(I)Z
-HSPLcom/android/server/am/UidObserverController;-><init>(Landroid/os/Handler;)V
-HPLcom/android/server/am/UidObserverController;->dispatchUidsChanged()V
-HPLcom/android/server/am/UidObserverController;->dispatchUidsChangedForObserver(Landroid/app/IUidObserver;Lcom/android/server/am/UidObserverController$UidObserverRegistration;I)V
-HPLcom/android/server/am/UidObserverController;->enqueueUidChange(Lcom/android/server/am/UidObserverController$ChangeRecord;IIIIJIZ)I
-HPLcom/android/server/am/UidObserverController;->getOrCreateChangeRecordLocked()Lcom/android/server/am/UidObserverController$ChangeRecord;
+PLcom/android/server/am/UidObserverController$UidObserverRegistration;-><init>(ILjava/lang/String;IIZ[ILandroid/os/IBinder;)V
+PLcom/android/server/am/UidObserverController$UidObserverRegistration;->dump(Ljava/io/PrintWriter;Landroid/app/IUidObserver;)V
+PLcom/android/server/am/UidObserverController$UidObserverRegistration;->dumpDebug(Landroid/util/proto/ProtoOutputStream;)V
+HSPLcom/android/server/am/UidObserverController;-><init>(Lcom/android/server/am/ActivityManagerService$UiHandler;)V
+HPLcom/android/server/am/UidObserverController;->dispatchUidsChanged()V+]Landroid/app/IUidObserver;megamorphic_types]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/am/UidObserverController;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/am/UidObserverController;->dumpDebug(Landroid/util/proto/ProtoOutputStream;Ljava/lang/String;)V
PLcom/android/server/am/UidObserverController;->mergeWithPendingChange(II)I
-HPLcom/android/server/am/UidObserverController;->register(Landroid/app/IUidObserver;IILjava/lang/String;I[I)Landroid/os/IBinder;
+PLcom/android/server/am/UidObserverController;->register(Landroid/app/IUidObserver;IILjava/lang/String;I[I)Landroid/os/IBinder;
HSPLcom/android/server/am/UidProcessMap;-><init>()V
-HPLcom/android/server/am/UidProcessMap;->get(ILjava/lang/String;)Ljava/lang/Object;
-PLcom/android/server/am/UidProcessMap;->getMap()Landroid/util/SparseArray;
-HPLcom/android/server/am/UidProcessMap;->put(ILjava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/am/UidProcessMap;->get(ILjava/lang/String;)Ljava/lang/Object;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/am/UidProcessMap;->put(Ljava/lang/String;ILjava/lang/Object;)V
PLcom/android/server/am/UidRecord;-><clinit>()V
-HPLcom/android/server/am/UidRecord;-><init>(ILcom/android/server/am/ActivityManagerService;)V
-PLcom/android/server/am/UidRecord;->addProcess(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/UidRecord;->areAllProcessesFrozen()Z
-HPLcom/android/server/am/UidRecord;->areAllProcessesFrozen(Lcom/android/server/am/ProcessRecord;)Z
-HPLcom/android/server/am/UidRecord;->clearProcAdjChanged()V
-HPLcom/android/server/am/UidRecord;->forEachProcess(Ljava/util/function/Consumer;)V
-PLcom/android/server/am/UidRecord;->getCurCapability()I
+HPLcom/android/server/am/UidRecord;-><init>(I)V
+PLcom/android/server/am/UidRecord;->areAllProcessesFrozen(Lcom/android/server/am/ProcessRecord;)Z
+PLcom/android/server/am/UidRecord;->forEachProcess(Ljava/util/function/Consumer;)V
PLcom/android/server/am/UidRecord;->getCurProcState()I
-PLcom/android/server/am/UidRecord;->getLastBackgroundTime()J
-PLcom/android/server/am/UidRecord;->getLastIdleTime()J
-HPLcom/android/server/am/UidRecord;->getMinProcAdj()I
-HPLcom/android/server/am/UidRecord;->getNumOfProcs()I
-HPLcom/android/server/am/UidRecord;->getProcAdjChanged()Z
-PLcom/android/server/am/UidRecord;->getProcessInPackage(Ljava/lang/String;)Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/UidRecord;->getSetCapability()I
-HPLcom/android/server/am/UidRecord;->getSetProcState()I
-HPLcom/android/server/am/UidRecord;->getUid()I
-HPLcom/android/server/am/UidRecord;->hasForegroundServices()Z
-HPLcom/android/server/am/UidRecord;->isCurAllowListed()Z
-HPLcom/android/server/am/UidRecord;->isEphemeral()Z
-HPLcom/android/server/am/UidRecord;->isFrozen()Z
-HPLcom/android/server/am/UidRecord;->isIdle()Z
-HPLcom/android/server/am/UidRecord;->isSetAllowListed()Z
-HPLcom/android/server/am/UidRecord;->isSetIdle()Z
-PLcom/android/server/am/UidRecord;->noteProcAdjChanged()V
-PLcom/android/server/am/UidRecord;->removeProcess(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/UidRecord;->reset()V
-HPLcom/android/server/am/UidRecord;->setCurAllowListed(Z)V
-PLcom/android/server/am/UidRecord;->setCurCapability(I)V
-PLcom/android/server/am/UidRecord;->setCurProcState(I)V
-HPLcom/android/server/am/UidRecord;->setEphemeral(Z)V
-HPLcom/android/server/am/UidRecord;->setForegroundServices(Z)V
-PLcom/android/server/am/UidRecord;->setFrozen(Z)V
-PLcom/android/server/am/UidRecord;->setIdle(Z)V
-PLcom/android/server/am/UidRecord;->setLastBackgroundTime(J)V
-PLcom/android/server/am/UidRecord;->setLastIdleTime(J)V
-HPLcom/android/server/am/UidRecord;->setLastReportedChange(I)V
-HPLcom/android/server/am/UidRecord;->setSetAllowListed(Z)V
-HPLcom/android/server/am/UidRecord;->setSetCapability(I)V
-HPLcom/android/server/am/UidRecord;->setSetIdle(Z)V
-HPLcom/android/server/am/UidRecord;->setSetProcState(I)V
-HPLcom/android/server/am/UidRecord;->updateHasInternetPermission()V
-PLcom/android/server/am/UserController$$ExternalSyntheticLambda17;-><init>(Lcom/android/server/am/UserController;Landroid/content/pm/UserInfo;)V
+PLcom/android/server/am/UidRecord;->toString()Ljava/lang/String;
+PLcom/android/server/am/UserController$$ExternalSyntheticLambda17;-><init>(ILjava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/am/UserController$$ExternalSyntheticLambda18;-><init>(Lcom/android/server/am/UserController;Landroid/content/Intent;III)V
PLcom/android/server/am/UserController$$ExternalSyntheticLambda18;->run()V
-PLcom/android/server/am/UserController$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/am/UserController;)V
-PLcom/android/server/am/UserController$$ExternalSyntheticLambda4;->run()V
-PLcom/android/server/am/UserController$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/UserController;ILcom/android/server/am/UserState;)V
-PLcom/android/server/am/UserController$$ExternalSyntheticLambda5;->run()V
+PLcom/android/server/am/UserController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/am/UserController;ILjava/lang/Object;I)V
+PLcom/android/server/am/UserController$$ExternalSyntheticLambda3;->run()V
PLcom/android/server/am/UserController$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/am/UserController;I)V
PLcom/android/server/am/UserController$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/am/UserController$$ExternalSyntheticLambda8;-><init>(IILjava/lang/Object;)V
+PLcom/android/server/am/UserController$$ExternalSyntheticLambda8;->run()V
+PLcom/android/server/am/UserController$$ExternalSyntheticOutline0;->m(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/StringBuilder;)Ljava/lang/String;
HSPLcom/android/server/am/UserController$1;-><init>(Lcom/android/server/am/UserController;)V
PLcom/android/server/am/UserController$3;-><init>(Lcom/android/server/am/UserController;I)V
PLcom/android/server/am/UserController$3;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
-PLcom/android/server/am/UserController$8;-><init>(Lcom/android/server/am/UserController;)V
PLcom/android/server/am/UserController$8;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
HSPLcom/android/server/am/UserController$Injector;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HPLcom/android/server/am/UserController$Injector;->broadcastIntent(Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;ILandroid/os/Bundle;ZZIIIII)I
-HPLcom/android/server/am/UserController$Injector;->checkCallingPermission(Ljava/lang/String;)I
-PLcom/android/server/am/UserController$Injector;->checkComponentPermission(Ljava/lang/String;IIIZ)I
-HSPLcom/android/server/am/UserController$Injector;->getContext()Landroid/content/Context;
-HSPLcom/android/server/am/UserController$Injector;->getHandler(Landroid/os/Handler$Callback;)Landroid/os/Handler;
-HSPLcom/android/server/am/UserController$Injector;->getLockPatternUtils()Lcom/android/internal/widget/LockPatternUtils;
-PLcom/android/server/am/UserController$Injector;->getSystemServiceManager()Lcom/android/server/SystemServiceManager;
-HSPLcom/android/server/am/UserController$Injector;->getUiHandler(Landroid/os/Handler$Callback;)Landroid/os/Handler;
-PLcom/android/server/am/UserController$Injector;->getUserJourneyLogger()Lcom/android/server/pm/UserJourneyLogger;
+PLcom/android/server/am/UserController$Injector;->broadcastIntent(Landroid/content/Intent;Landroid/content/IIntentReceiver;[Ljava/lang/String;Landroid/os/Bundle;IIII)V
HPLcom/android/server/am/UserController$Injector;->getUserManager()Lcom/android/server/pm/UserManagerService;
PLcom/android/server/am/UserController$Injector;->getUserManagerInternal()Lcom/android/server/pm/UserManagerInternal;
-PLcom/android/server/am/UserController$Injector;->installEncryptionUnawareProviders(I)V
-HPLcom/android/server/am/UserController$Injector;->isCallerRecents(I)Z
-PLcom/android/server/am/UserController$Injector;->isFirstBootOrUpgrade()Z
-PLcom/android/server/am/UserController$Injector;->isHeadlessSystemUserMode()Z
-PLcom/android/server/am/UserController$Injector;->isRuntimeRestarted()Z
-PLcom/android/server/am/UserController$Injector;->loadUserRecents(I)V
-PLcom/android/server/am/UserController$Injector;->onSystemUserVisibilityChanged(Z)V
PLcom/android/server/am/UserController$Injector;->onUserStarting(I)V
-PLcom/android/server/am/UserController$Injector;->reportCurWakefulnessUsageEvent()V
-PLcom/android/server/am/UserController$Injector;->startPersistentApps(I)V
-PLcom/android/server/am/UserController$Injector;->startUserWidgets(I)V
-PLcom/android/server/am/UserController$Injector;->systemServiceManagerOnUserCompletedEvent(II)V
-HSPLcom/android/server/am/UserController$UserProgressListener;-><init>()V
-HSPLcom/android/server/am/UserController$UserProgressListener;-><init>(Lcom/android/server/am/UserController$UserProgressListener-IA;)V
PLcom/android/server/am/UserController$UserProgressListener;->onFinished(ILandroid/os/Bundle;)V
PLcom/android/server/am/UserController$UserProgressListener;->onProgress(IILandroid/os/Bundle;)V
PLcom/android/server/am/UserController$UserProgressListener;->onStarted(ILandroid/os/Bundle;)V
-PLcom/android/server/am/UserController;->$r8$lambda$0_wyI9pjpiFPa1zdQhMhe6rQbs0(Lcom/android/server/am/UserController;I)V
-PLcom/android/server/am/UserController;->$r8$lambda$CJMUgyUXssLbrLSA211iBjtm80Q(Lcom/android/server/am/UserController;)V
-PLcom/android/server/am/UserController;->$r8$lambda$LYgwFBbxx9XRrYfMSUASCs9H6MY(Lcom/android/server/am/UserController;Landroid/content/Intent;III)V
-PLcom/android/server/am/UserController;->$r8$lambda$aXrMhheLTVS7w6eap82_5eQPhJk(Lcom/android/server/am/UserController;ILcom/android/server/am/UserState;)V
-HSPLcom/android/server/am/UserController;-><init>(Lcom/android/server/am/ActivityManagerService;)V
HSPLcom/android/server/am/UserController;-><init>(Lcom/android/server/am/UserController$Injector;)V
-PLcom/android/server/am/UserController;->canInteractWithAcrossProfilesPermission(IZIILjava/lang/String;)Z
PLcom/android/server/am/UserController;->checkCallingHasOneOfThosePermissions(Ljava/lang/String;[Ljava/lang/String;)V
-PLcom/android/server/am/UserController;->checkCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/am/UserController;->checkGetCurrentUserPermissions()V
-PLcom/android/server/am/UserController;->dispatchLockedBootComplete(I)V
-PLcom/android/server/am/UserController;->ensureNotSpecialUser(I)V
-HPLcom/android/server/am/UserController;->exists(I)Z
-PLcom/android/server/am/UserController;->finishUserBoot(Lcom/android/server/am/UserState;Landroid/content/IIntentReceiver;)V
-PLcom/android/server/am/UserController;->finishUserUnlocked(Lcom/android/server/am/UserState;)V
+PLcom/android/server/am/UserController;->checkGetCurrentUserPermissions()V
+PLcom/android/server/am/UserController;->dumpDebug(Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/am/UserController;->finishUserBoot(Lcom/android/server/am/UserState;Lcom/android/server/am/ActivityManagerService$7;)V
PLcom/android/server/am/UserController;->finishUserUnlockedCompleted(Lcom/android/server/am/UserState;)V
-PLcom/android/server/am/UserController;->finishUserUnlocking(Lcom/android/server/am/UserState;)Z
PLcom/android/server/am/UserController;->getCurrentProfileIds()[I
PLcom/android/server/am/UserController;->getCurrentUser()Landroid/content/pm/UserInfo;
HPLcom/android/server/am/UserController;->getCurrentUserId()I
-HPLcom/android/server/am/UserController;->getCurrentUserIdChecked()I
-HSPLcom/android/server/am/UserController;->getLastUserUnlockingUptime()J
-HPLcom/android/server/am/UserController;->getStartedUserArray()[I
-HPLcom/android/server/am/UserController;->getStartedUserState(I)Lcom/android/server/am/UserState;
-PLcom/android/server/am/UserController;->getTemporaryAppAllowlistBroadcastOptions(I)Landroid/app/BroadcastOptions;
+HPLcom/android/server/am/UserController;->getStartedUserState(I)Lcom/android/server/am/UserState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
PLcom/android/server/am/UserController;->getUserInfo(I)Landroid/content/pm/UserInfo;
-PLcom/android/server/am/UserController;->getUserProperties(I)Landroid/content/pm/UserProperties;
PLcom/android/server/am/UserController;->getUsers()[I
HPLcom/android/server/am/UserController;->handleIncomingUser(IIIZILjava/lang/String;Ljava/lang/String;)I
PLcom/android/server/am/UserController;->handleMessage(Landroid/os/Message;)Z
-HPLcom/android/server/am/UserController;->hasStartedUserState(I)Z
-HPLcom/android/server/am/UserController;->isSameProfileGroup(II)Z
+HPLcom/android/server/am/UserController;->hasStartedUserState(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/am/UserController;->isSameProfileGroup(II)Z
+PLcom/android/server/am/UserController;->isStopUserOnSwitchEnabled()Z
HPLcom/android/server/am/UserController;->isUserOrItsParentRunning(I)Z
HPLcom/android/server/am/UserController;->isUserRunning(II)Z
-PLcom/android/server/am/UserController;->lambda$finishUserUnlockedCompleted$4(Landroid/content/Intent;III)V
-PLcom/android/server/am/UserController;->lambda$finishUserUnlocking$1(ILcom/android/server/am/UserState;)V
-PLcom/android/server/am/UserController;->lambda$handleMessage$18(I)V
-PLcom/android/server/am/UserController;->lambda$scheduleStartProfiles$13()V
-PLcom/android/server/am/UserController;->maybeUnlockUser(I)Z
PLcom/android/server/am/UserController;->maybeUnlockUser(ILandroid/os/IProgressListener;)Z
-PLcom/android/server/am/UserController;->onBootComplete(Landroid/content/IIntentReceiver;)V
-PLcom/android/server/am/UserController;->onSystemReady()V
-PLcom/android/server/am/UserController;->onSystemUserStarting()V
-PLcom/android/server/am/UserController;->registerUserSwitchObserver(Landroid/app/IUserSwitchObserver;Ljava/lang/String;)V
+PLcom/android/server/am/UserController;->onBootComplete(Lcom/android/server/am/ActivityManagerService$7;)V
PLcom/android/server/am/UserController;->reportOnUserCompletedEvent(Ljava/lang/Integer;)V
PLcom/android/server/am/UserController;->scheduleOnUserCompletedEvent(III)V
-PLcom/android/server/am/UserController;->scheduleStartProfiles()V
-PLcom/android/server/am/UserController;->sendLockedBootCompletedBroadcast(Landroid/content/IIntentReceiver;I)V
+PLcom/android/server/am/UserController;->sendLockedBootCompletedBroadcast(Lcom/android/server/am/ActivityManagerService$7;I)V
PLcom/android/server/am/UserController;->sendUserStartedBroadcast(III)V
PLcom/android/server/am/UserController;->sendUserStartingBroadcast(III)V
PLcom/android/server/am/UserController;->sendUserSwitchBroadcasts(II)V
PLcom/android/server/am/UserController;->setAllowUserUnlocking(Z)V
-PLcom/android/server/am/UserController;->setInitialConfig(ZIZ)V
-PLcom/android/server/am/UserController;->shouldConfirmCredentials(I)Z
PLcom/android/server/am/UserController;->startProfiles()V
-HPLcom/android/server/am/UserController;->unsafeConvertIncomingUser(I)I
+PLcom/android/server/am/UserController;->unlockUser(ILandroid/os/IProgressListener;)Z
PLcom/android/server/am/UserController;->updateProfileRelatedCaches()V
HSPLcom/android/server/am/UserController;->updateStartedUserArrayLU()V
HSPLcom/android/server/am/UserState;-><init>(Landroid/os/UserHandle;)V
-HPLcom/android/server/am/UserState;->setState(I)V
+PLcom/android/server/am/UserState;->setState(I)V
PLcom/android/server/am/UserState;->setState(II)Z
PLcom/android/server/am/UserState;->stateToString(I)Ljava/lang/String;
-PLcom/android/server/app/GameManagerService$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/app/GameManagerService$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
-PLcom/android/server/app/GameManagerService$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/app/GameManagerService$$ExternalSyntheticLambda2;-><init>()V
-PLcom/android/server/app/GameManagerService$$ExternalSyntheticLambda2;->apply(I)Ljava/lang/Object;
-PLcom/android/server/app/GameManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/app/GameManagerService;)V
-PLcom/android/server/app/GameManagerService$3;-><init>(Lcom/android/server/app/GameManagerService;)V
-PLcom/android/server/app/GameManagerService$4;-><init>(Lcom/android/server/app/GameManagerService;)V
-PLcom/android/server/app/GameManagerService$DeviceConfigListener;-><init>(Lcom/android/server/app/GameManagerService;)V
-PLcom/android/server/app/GameManagerService$Injector$1;-><init>(Lcom/android/server/app/GameManagerService$Injector;)V
-PLcom/android/server/app/GameManagerService$Injector$1;->getInt(Ljava/lang/String;I)I
-PLcom/android/server/app/GameManagerService$Injector;-><init>()V
-PLcom/android/server/app/GameManagerService$Injector;->createSystemPropertiesWrapper()Lcom/android/server/app/GameManagerServiceSystemPropertiesWrapper;
-PLcom/android/server/app/GameManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
-PLcom/android/server/app/GameManagerService$Lifecycle;->onBootPhase(I)V
-PLcom/android/server/app/GameManagerService$Lifecycle;->onStart()V
-PLcom/android/server/app/GameManagerService$Lifecycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/app/GameManagerService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/app/GameManagerService$LocalService;-><init>(Lcom/android/server/app/GameManagerService;)V
-PLcom/android/server/app/GameManagerService$LocalService;-><init>(Lcom/android/server/app/GameManagerService;Lcom/android/server/app/GameManagerService$LocalService-IA;)V
-HPLcom/android/server/app/GameManagerService$LocalService;->getCompatScale(Ljava/lang/String;I)Landroid/content/res/CompatibilityInfo$CompatScale;
-HPLcom/android/server/app/GameManagerService$LocalService;->getResolutionScalingFactor(Ljava/lang/String;I)F
-PLcom/android/server/app/GameManagerService$MyUidObserver$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/app/GameManagerService$MyUidObserver;I)V
-PLcom/android/server/app/GameManagerService$MyUidObserver$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
-PLcom/android/server/app/GameManagerService$MyUidObserver;->$r8$lambda$mE-7E21f94kUEAgfV42TQXpejok(Lcom/android/server/app/GameManagerService$MyUidObserver;ILjava/lang/String;)Z
-PLcom/android/server/app/GameManagerService$MyUidObserver;-><init>(Lcom/android/server/app/GameManagerService;)V
-HPLcom/android/server/app/GameManagerService$MyUidObserver;->handleUidMovedOffTop(I)V
-PLcom/android/server/app/GameManagerService$MyUidObserver;->handleUidMovedToTop(I)V
-PLcom/android/server/app/GameManagerService$MyUidObserver;->lambda$handleUidMovedToTop$0(ILjava/lang/String;)Z
-PLcom/android/server/app/GameManagerService$MyUidObserver;->onUidGone(IZ)V
-HPLcom/android/server/app/GameManagerService$MyUidObserver;->onUidStateChanged(IIJI)V
-PLcom/android/server/app/GameManagerService$SettingsHandler;-><init>(Lcom/android/server/app/GameManagerService;Landroid/os/Looper;)V
-PLcom/android/server/app/GameManagerService$SettingsHandler;->doHandleMessage(Landroid/os/Message;)V
-PLcom/android/server/app/GameManagerService$SettingsHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/app/GameManagerService;->$r8$lambda$Sir-wtA0n6T1spL0WarCI-ChMjA(Landroid/content/pm/PackageInfo;)Z
-PLcom/android/server/app/GameManagerService;->$r8$lambda$v0loNmftGWUMC3VLYZhDYOY54xM(I)[Ljava/lang/String;
-PLcom/android/server/app/GameManagerService;->-$$Nest$fgetmContext(Lcom/android/server/app/GameManagerService;)Landroid/content/Context;
-HPLcom/android/server/app/GameManagerService;->-$$Nest$fgetmGameForegroundUids(Lcom/android/server/app/GameManagerService;)Ljava/util/Set;
-HPLcom/android/server/app/GameManagerService;->-$$Nest$fgetmNonGameForegroundUids(Lcom/android/server/app/GameManagerService;)Ljava/util/Set;
-PLcom/android/server/app/GameManagerService;->-$$Nest$fgetmPackageManager(Lcom/android/server/app/GameManagerService;)Landroid/content/pm/PackageManager;
-HPLcom/android/server/app/GameManagerService;->-$$Nest$fgetmUidObserverLock(Lcom/android/server/app/GameManagerService;)Ljava/lang/Object;
-HPLcom/android/server/app/GameManagerService;->-$$Nest$mgetGameModeFromSettingsUnchecked(Lcom/android/server/app/GameManagerService;Ljava/lang/String;I)I
-PLcom/android/server/app/GameManagerService;->-$$Nest$mgetInstalledGamePackageNames(Lcom/android/server/app/GameManagerService;I)[Ljava/lang/String;
-PLcom/android/server/app/GameManagerService;->-$$Nest$misPackageGame(Lcom/android/server/app/GameManagerService;Ljava/lang/String;I)Z
-PLcom/android/server/app/GameManagerService;->-$$Nest$mpublishLocalService(Lcom/android/server/app/GameManagerService;)V
-PLcom/android/server/app/GameManagerService;->-$$Nest$mregisterDeviceConfigListener(Lcom/android/server/app/GameManagerService;)V
-PLcom/android/server/app/GameManagerService;->-$$Nest$mregisterPackageReceiver(Lcom/android/server/app/GameManagerService;)V
-PLcom/android/server/app/GameManagerService;->-$$Nest$mregisterStatsCallbacks(Lcom/android/server/app/GameManagerService;)V
-PLcom/android/server/app/GameManagerService;->-$$Nest$mwriteGameModeInterventionsToFile(Lcom/android/server/app/GameManagerService;I)V
-PLcom/android/server/app/GameManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/app/GameManagerService;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
-HPLcom/android/server/app/GameManagerService;-><init>(Landroid/content/Context;Landroid/os/Looper;Ljava/io/File;Lcom/android/server/app/GameManagerService$Injector;)V
-PLcom/android/server/app/GameManagerService;->createServiceThread()Lcom/android/server/ServiceThread;
-PLcom/android/server/app/GameManagerService;->getAllUserIds(I)[I
-HPLcom/android/server/app/GameManagerService;->getConfig(Ljava/lang/String;I)Lcom/android/server/app/GameManagerService$GamePackageConfiguration;
-HPLcom/android/server/app/GameManagerService;->getGameModeFromSettingsUnchecked(Ljava/lang/String;I)I
-PLcom/android/server/app/GameManagerService;->getInstalledGamePackageNames(I)[Ljava/lang/String;
-PLcom/android/server/app/GameManagerService;->getInstalledGamePackageNamesByAllUsers(I)Ljava/util/List;
-HPLcom/android/server/app/GameManagerService;->getResolutionScalingFactorInternal(Ljava/lang/String;II)F
-PLcom/android/server/app/GameManagerService;->isPackageGame(Ljava/lang/String;I)Z
-PLcom/android/server/app/GameManagerService;->lambda$getInstalledGamePackageNames$2(Landroid/content/pm/PackageInfo;)Z
-PLcom/android/server/app/GameManagerService;->lambda$getInstalledGamePackageNames$4(I)[Ljava/lang/String;
-PLcom/android/server/app/GameManagerService;->onBootCompleted()V
-PLcom/android/server/app/GameManagerService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;Ljava/io/File;)V
-PLcom/android/server/app/GameManagerService;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/app/GameManagerService;->publishLocalService()V
-PLcom/android/server/app/GameManagerService;->registerDeviceConfigListener()V
-PLcom/android/server/app/GameManagerService;->registerPackageReceiver()V
-PLcom/android/server/app/GameManagerService;->registerStatsCallbacks()V
-PLcom/android/server/app/GameManagerService;->sendUserMessage(IILjava/lang/String;I)V
-PLcom/android/server/app/GameManagerService;->updateConfigsForUser(IZ[Ljava/lang/String;)V
-PLcom/android/server/app/GameManagerService;->writeGameModeInterventionsToFile(I)V
-PLcom/android/server/app/GameManagerSettings;-><init>(Ljava/io/File;)V
-HPLcom/android/server/app/GameManagerSettings;->getConfigOverrideLocked(Ljava/lang/String;)Lcom/android/server/app/GameManagerService$GamePackageConfiguration;
-HPLcom/android/server/app/GameManagerSettings;->getGameModeLocked(Ljava/lang/String;)I
-PLcom/android/server/app/GameManagerSettings;->readPersistentDataLocked()Z
+PLcom/android/server/ambientcontext/AmbientContextManagerPerUserService$$ExternalSyntheticOutline0;->m(Landroid/content/ComponentName;Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/appbinding/AppBindingConstants;-><init>(Ljava/lang/String;)V
-PLcom/android/server/appbinding/AppBindingConstants;->initializeFromString(Ljava/lang/String;)Lcom/android/server/appbinding/AppBindingConstants;
+PLcom/android/server/appbinding/AppBindingConstants;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/appbinding/AppBindingService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/appbinding/AppBindingService;)V
-PLcom/android/server/appbinding/AppBindingService$$ExternalSyntheticLambda2;-><init>()V
+PLcom/android/server/appbinding/AppBindingService$$ExternalSyntheticLambda1;-><init>(ILjava/io/PrintWriter;)V
+PLcom/android/server/appbinding/AppBindingService$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
PLcom/android/server/appbinding/AppBindingService$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
-PLcom/android/server/appbinding/AppBindingService$1;-><init>(Lcom/android/server/appbinding/AppBindingService;Landroid/os/Handler;)V
+PLcom/android/server/appbinding/AppBindingService$1;-><init>(Lcom/android/server/appbinding/AppBindingService;)V
PLcom/android/server/appbinding/AppBindingService$2;-><init>(Lcom/android/server/appbinding/AppBindingService;)V
-PLcom/android/server/appbinding/AppBindingService$Injector;-><init>()V
-PLcom/android/server/appbinding/AppBindingService$Injector;->getGlobalSettingString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/appbinding/AppBindingService$Injector;->getIPackageManager()Landroid/content/pm/IPackageManager;
+PLcom/android/server/appbinding/AppBindingService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/appbinding/AppBindingService$Lifecycle;-><init>(Landroid/content/Context;)V
-PLcom/android/server/appbinding/AppBindingService$Lifecycle;-><init>(Landroid/content/Context;Lcom/android/server/appbinding/AppBindingService$Injector;)V
PLcom/android/server/appbinding/AppBindingService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/appbinding/AppBindingService$Lifecycle;->onStart()V
PLcom/android/server/appbinding/AppBindingService$Lifecycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/appbinding/AppBindingService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/appbinding/AppBindingService;->-$$Nest$monBootPhase(Lcom/android/server/appbinding/AppBindingService;I)V
-PLcom/android/server/appbinding/AppBindingService;->-$$Nest$monStartUser(Lcom/android/server/appbinding/AppBindingService;I)V
-PLcom/android/server/appbinding/AppBindingService;->-$$Nest$monUnlockUser(Lcom/android/server/appbinding/AppBindingService;I)V
+PLcom/android/server/appbinding/AppBindingService;->-$$Nest$mhandlePackageAddedReplacing(Lcom/android/server/appbinding/AppBindingService;Ljava/lang/String;I)V
PLcom/android/server/appbinding/AppBindingService;-><init>(Lcom/android/server/appbinding/AppBindingService$Injector;Landroid/content/Context;)V
-PLcom/android/server/appbinding/AppBindingService;-><init>(Lcom/android/server/appbinding/AppBindingService$Injector;Landroid/content/Context;Lcom/android/server/appbinding/AppBindingService-IA;)V
-PLcom/android/server/appbinding/AppBindingService;->bindServicesLocked(ILcom/android/server/appbinding/finders/AppServiceFinder;Ljava/lang/String;)V
-PLcom/android/server/appbinding/AppBindingService;->findConnectionLock(ILcom/android/server/appbinding/finders/AppServiceFinder;)Lcom/android/server/appbinding/AppBindingService$AppServiceConnection;
+PLcom/android/server/appbinding/AppBindingService;->bindServicesLocked(ILcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;)V
+PLcom/android/server/appbinding/AppBindingService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/appbinding/AppBindingService;->forAllAppsLocked(Ljava/util/function/Consumer;)V
-PLcom/android/server/appbinding/AppBindingService;->onBootPhase(I)V
-PLcom/android/server/appbinding/AppBindingService;->onPhaseActivityManagerReady()V
-PLcom/android/server/appbinding/AppBindingService;->onPhaseThirdPartyAppsCanStart()V
-PLcom/android/server/appbinding/AppBindingService;->onStartUser(I)V
-PLcom/android/server/appbinding/AppBindingService;->onUnlockUser(I)V
-PLcom/android/server/appbinding/AppBindingService;->rebindAllLocked(Ljava/lang/String;)V
PLcom/android/server/appbinding/AppBindingService;->refreshConstants()V
+PLcom/android/server/appbinding/AppBindingService;->unbindServicesLocked(ILcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;)V
PLcom/android/server/appbinding/AppBindingUtils;->findService(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Class;Landroid/content/pm/IPackageManager;Ljava/lang/StringBuilder;)Landroid/content/pm/ServiceInfo;
-PLcom/android/server/appbinding/finders/AppServiceFinder;-><init>(Landroid/content/Context;Ljava/util/function/BiConsumer;Landroid/os/Handler;)V
-PLcom/android/server/appbinding/finders/AppServiceFinder;->findService(ILandroid/content/pm/IPackageManager;Lcom/android/server/appbinding/AppBindingConstants;)Landroid/content/pm/ServiceInfo;
PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;)V
-PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;-><init>(Landroid/content/Context;Ljava/util/function/BiConsumer;Landroid/os/Handler;)V
-PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->getServiceAction()Ljava/lang/String;
-PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->getServiceClass()Ljava/lang/Class;
-PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->getServicePermission()Ljava/lang/String;
-PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->getTargetPackage(I)Ljava/lang/String;
-PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->isEnabled(Lcom/android/server/appbinding/AppBindingConstants;)Z
-PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->startMonitoring()V
-PLcom/android/server/apphibernation/AppHibernationManagerInternal;-><init>()V
+PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder$$ExternalSyntheticLambda0;->onRoleHoldersChanged(Ljava/lang/String;Landroid/os/UserHandle;)V
+PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;-><init>(Landroid/content/Context;Lcom/android/server/appbinding/AppBindingService$$ExternalSyntheticLambda0;)V
+PLcom/android/server/appfunctions/AppFunctionDumpHelper;->buildAppFunctionMetadataSearchSpec()Landroid/app/appsearch/SearchSpec;
+PLcom/android/server/appfunctions/AppFunctionDumpHelper;->dumpAppFunctionsState(Landroid/content/Context;Ljava/io/PrintWriter;)V
+PLcom/android/server/appfunctions/AppFunctionExecutors;-><clinit>()V
+PLcom/android/server/appfunctions/AppFunctionManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/appfunctions/AppFunctionManagerService;->onStart()V
+PLcom/android/server/appfunctions/AppFunctionManagerService;->onUserUnlocked(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/appfunctions/AppFunctionManagerServiceImpl$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/appfunctions/AppFunctionManagerServiceImpl$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/appfunctions/FutureGlobalSearchSession;)V
+PLcom/android/server/appfunctions/AppFunctionManagerServiceImpl$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appfunctions/AppFunctionManagerServiceImpl$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appfunctions/AppFunctionManagerServiceImpl$AppFunctionMetadataObserver;-><init>(Landroid/content/Context;Landroid/os/UserHandle;)V
+PLcom/android/server/appfunctions/AppFunctionManagerServiceImpl$AppFunctionMetadataObserver;->onDocumentChanged(Landroid/app/appsearch/observer/DocumentChangeInfo;)V
+PLcom/android/server/appfunctions/AppFunctionManagerServiceImpl$AppFunctionMetadataObserver;->onSchemaChanged(Landroid/app/appsearch/observer/SchemaChangeInfo;)V
+PLcom/android/server/appfunctions/AppFunctionManagerServiceImpl;-><clinit>()V
+PLcom/android/server/appfunctions/AppFunctionManagerServiceImpl;-><init>(Landroid/content/Context;Lcom/android/server/appfunctions/RemoteServiceCaller;Lcom/android/server/appfunctions/CallerValidator;Lcom/android/server/appfunctions/ServiceHelper;Lcom/android/server/appfunctions/ServiceConfig;)V
+PLcom/android/server/appfunctions/AppFunctionManagerServiceImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/appfunctions/CallerValidatorImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/appfunctions/FutureAppSearchSessionImpl$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appfunctions/FutureAppSearchSessionImpl$$ExternalSyntheticLambda4;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/appfunctions/FutureAppSearchSessionImpl$$ExternalSyntheticLambda4;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/appfunctions/FutureAppSearchSessionImpl$$ExternalSyntheticLambda7;-><init>(Lcom/android/internal/infra/AndroidFuture;)V
+PLcom/android/server/appfunctions/FutureAppSearchSessionImpl$$ExternalSyntheticLambda7;->accept(Ljava/lang/Object;)V
+PLcom/android/server/appfunctions/FutureAppSearchSessionImpl$$ExternalSyntheticLambda8;-><init>(I)V
+PLcom/android/server/appfunctions/FutureAppSearchSessionImpl$$ExternalSyntheticLambda8;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/appfunctions/FutureAppSearchSessionImpl;-><clinit>()V
+PLcom/android/server/appfunctions/FutureAppSearchSessionImpl;-><init>(Landroid/app/appsearch/AppSearchManager;Ljava/util/concurrent/Executor;Landroid/app/appsearch/AppSearchManager$SearchContext;)V
+PLcom/android/server/appfunctions/FutureAppSearchSessionImpl;->close()V
+PLcom/android/server/appfunctions/FutureAppSearchSessionImpl;->getSessionAsync()Lcom/android/internal/infra/AndroidFuture;
+PLcom/android/server/appfunctions/FutureGlobalSearchSession$$ExternalSyntheticLambda0;-><init>(Landroid/app/appsearch/observer/ObserverSpec;Ljava/util/concurrent/Executor;Lcom/android/server/appfunctions/AppFunctionManagerServiceImpl$AppFunctionMetadataObserver;)V
+PLcom/android/server/appfunctions/FutureGlobalSearchSession$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/appfunctions/FutureGlobalSearchSession$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appfunctions/FutureGlobalSearchSession$$ExternalSyntheticLambda2;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/appfunctions/FutureGlobalSearchSession$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/appfunctions/FutureGlobalSearchSession$$ExternalSyntheticLambda4;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/appfunctions/FutureGlobalSearchSession;-><clinit>()V
+PLcom/android/server/appfunctions/FutureGlobalSearchSession;-><init>(Landroid/app/appsearch/AppSearchManager;Ljava/util/concurrent/Executor;)V
+PLcom/android/server/appfunctions/FutureGlobalSearchSession;->close()V
+PLcom/android/server/appfunctions/FutureSearchResultsImpl$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/appfunctions/FutureSearchResultsImpl;-><init>(Landroid/app/appsearch/SearchResults;Ljava/util/concurrent/Executor;)V
+PLcom/android/server/appfunctions/FutureSearchResultsImpl;->close()V
+PLcom/android/server/appfunctions/FutureSearchResultsImpl;->getNextPage()Lcom/android/internal/infra/AndroidFuture;
+PLcom/android/server/appfunctions/MetadataSyncAdapter$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/appfunctions/MetadataSyncAdapter;Landroid/app/appsearch/AppSearchManager$SearchContext;Landroid/app/appsearch/AppSearchManager$SearchContext;Lcom/android/internal/infra/AndroidFuture;)V
+PLcom/android/server/appfunctions/MetadataSyncAdapter$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/appfunctions/MetadataSyncAdapter;-><init>(Landroid/content/pm/PackageManager;Landroid/app/appsearch/AppSearchManager;)V
+PLcom/android/server/appfunctions/MetadataSyncAdapter;->getAddedFunctionsDiffMap(Landroid/util/ArrayMap;Landroid/util/ArrayMap;)Landroid/util/ArrayMap;
+PLcom/android/server/appfunctions/MetadataSyncAdapter;->getFunctionsDiffMap(Landroid/util/ArrayMap;Landroid/util/ArrayMap;)Landroid/util/ArrayMap;
+PLcom/android/server/appfunctions/MetadataSyncAdapter;->getPackageToFunctionIdMap(Lcom/android/server/appfunctions/FutureAppSearchSession;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/util/ArrayMap;
+PLcom/android/server/appfunctions/MetadataSyncAdapter;->getRemovedFunctionsDiffMap(Landroid/util/ArrayMap;Landroid/util/ArrayMap;)Landroid/util/ArrayMap;
+PLcom/android/server/appfunctions/MetadataSyncAdapter;->submitSyncRequest()Lcom/android/internal/infra/AndroidFuture;
+PLcom/android/server/appfunctions/MetadataSyncAdapter;->trySyncAppFunctionMetadataBlocking(Lcom/android/server/appfunctions/FutureAppSearchSession;Lcom/android/server/appfunctions/FutureAppSearchSession;)V
+PLcom/android/server/appfunctions/MetadataSyncPerUser;-><clinit>()V
+PLcom/android/server/appfunctions/MetadataSyncPerUser;->getPerUserMetadataSyncAdapter(Landroid/content/Context;Landroid/os/UserHandle;)Lcom/android/server/appfunctions/MetadataSyncAdapter;
+PLcom/android/server/appfunctions/NamedThreadFactory;-><init>(Ljava/lang/String;)V
+PLcom/android/server/appfunctions/NamedThreadFactory;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;
+PLcom/android/server/appfunctions/RemoteServiceCallerImpl;-><init>(Landroid/content/Context;Lcom/android/server/appfunctions/AppFunctionManagerServiceImpl$$ExternalSyntheticLambda0;Ljava/util/concurrent/Executor;)V
+PLcom/android/server/appfunctions/ServiceHelperImpl;-><init>(Landroid/content/Context;)V
PLcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/apphibernation/AppHibernationService;)V
HPLcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda0;->onUsageEvent(ILandroid/app/usage/UsageEvents$Event;)V
PLcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/apphibernation/AppHibernationService;)V
PLcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda1;->run()V
PLcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/apphibernation/AppHibernationService;)V
-PLcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/apphibernation/AppHibernationService;Lcom/android/server/apphibernation/HibernationStateDiskStore;I)V
+PLcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda2;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/apphibernation/AppHibernationService;Ljava/lang/Object;II)V
PLcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda3;->run()V
PLcom/android/server/apphibernation/AppHibernationService$1;-><init>(Lcom/android/server/apphibernation/AppHibernationService;)V
+PLcom/android/server/apphibernation/AppHibernationService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/apphibernation/AppHibernationService$AppHibernationServiceStub;-><init>(Lcom/android/server/apphibernation/AppHibernationService;)V
+PLcom/android/server/apphibernation/AppHibernationService$AppHibernationServiceStub;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/apphibernation/AppHibernationService$AppHibernationServiceStub;->isHibernatingGlobally(Ljava/lang/String;)Z
PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;-><init>(Landroid/content/Context;)V
-PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->getActivityManager()Landroid/app/IActivityManager;
-PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->getBackgroundExecutor()Ljava/util/concurrent/Executor;
-PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->getContext()Landroid/content/Context;
-PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->getGlobalLevelDiskStore()Lcom/android/server/apphibernation/HibernationStateDiskStore;
-PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->getPackageManager()Landroid/content/pm/IPackageManager;
-PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
-PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->getStorageStatsManager()Landroid/app/usage/StorageStatsManager;
-PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->getUsageStatsManagerInternal()Landroid/app/usage/UsageStatsManagerInternal;
-PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->getUserLevelDiskStore(I)Lcom/android/server/apphibernation/HibernationStateDiskStore;
-PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->getUserManager()Landroid/os/UserManager;
-PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->isOatArtifactDeletionEnabled()Z
PLcom/android/server/apphibernation/AppHibernationService$LocalService;-><init>(Lcom/android/server/apphibernation/AppHibernationService;)V
-HPLcom/android/server/apphibernation/AppHibernationService$LocalService;->isHibernatingForUser(Ljava/lang/String;I)Z
-PLcom/android/server/apphibernation/AppHibernationService$LocalService;->isHibernatingGlobally(Ljava/lang/String;)Z
PLcom/android/server/apphibernation/AppHibernationService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/apphibernation/AppHibernationService;)V
-PLcom/android/server/apphibernation/AppHibernationService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/apphibernation/AppHibernationService;Lcom/android/server/apphibernation/AppHibernationService$StatsPullAtomCallbackImpl-IA;)V
-PLcom/android/server/apphibernation/AppHibernationService;->$r8$lambda$Fws_Wf_jgjjpMDT6HEIS6H9GGIc(Lcom/android/server/apphibernation/AppHibernationService;)V
-HPLcom/android/server/apphibernation/AppHibernationService;->$r8$lambda$fT12eBCv0K0U7e7DCdE6loRthKg(Lcom/android/server/apphibernation/AppHibernationService;ILandroid/app/usage/UsageEvents$Event;)V
-PLcom/android/server/apphibernation/AppHibernationService;->$r8$lambda$pmiSg0_3IcxhUY6KWcWtKuVRLt4(Lcom/android/server/apphibernation/AppHibernationService;Lcom/android/server/apphibernation/HibernationStateDiskStore;I)V
PLcom/android/server/apphibernation/AppHibernationService;-><init>(Landroid/content/Context;)V
PLcom/android/server/apphibernation/AppHibernationService;-><init>(Lcom/android/server/apphibernation/AppHibernationService$Injector;)V
-HPLcom/android/server/apphibernation/AppHibernationService;->checkUserStatesExist(ILjava/lang/String;Z)Z
-HPLcom/android/server/apphibernation/AppHibernationService;->handleIncomingUser(ILjava/lang/String;)I
+HPLcom/android/server/apphibernation/AppHibernationService;->checkUserStatesExist(ILjava/lang/String;Z)Z+]Landroid/os/UserManager;Landroid/os/UserManager;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/apphibernation/AppHibernationService;->handleIncomingUser(ILjava/lang/String;)I+]Landroid/app/IActivityManager;Lcom/android/server/am/ActivityManagerService;
PLcom/android/server/apphibernation/AppHibernationService;->initializeGlobalHibernationStates(Ljava/util/List;)V
PLcom/android/server/apphibernation/AppHibernationService;->initializeUserHibernationStates(ILjava/util/List;)V
-PLcom/android/server/apphibernation/AppHibernationService;->isAppHibernationEnabled()Z
-PLcom/android/server/apphibernation/AppHibernationService;->isDeviceConfigAppHibernationEnabled()Z
-HPLcom/android/server/apphibernation/AppHibernationService;->isHibernatingForUser(Ljava/lang/String;I)Z
-PLcom/android/server/apphibernation/AppHibernationService;->isHibernatingGlobally(Ljava/lang/String;)Z
-HPLcom/android/server/apphibernation/AppHibernationService;->lambda$new$6(ILandroid/app/usage/UsageEvents$Event;)V
-PLcom/android/server/apphibernation/AppHibernationService;->lambda$onBootPhase$0()V
-PLcom/android/server/apphibernation/AppHibernationService;->lambda$onUserUnlocking$5(Lcom/android/server/apphibernation/HibernationStateDiskStore;I)V
+HPLcom/android/server/apphibernation/AppHibernationService;->isHibernatingForUser(Ljava/lang/String;I)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Map;Landroid/util/ArrayMap;
+HPLcom/android/server/apphibernation/AppHibernationService;->isHibernatingGlobally(Ljava/lang/String;)Z
PLcom/android/server/apphibernation/AppHibernationService;->onBootPhase(I)V
PLcom/android/server/apphibernation/AppHibernationService;->onStart()V
PLcom/android/server/apphibernation/AppHibernationService;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
-HPLcom/android/server/apphibernation/AppHibernationService;->setHibernatingForUser(Ljava/lang/String;IZ)V
-HPLcom/android/server/apphibernation/AppHibernationService;->setHibernatingGlobally(Ljava/lang/String;Z)V
-PLcom/android/server/apphibernation/GlobalLevelHibernationProto;-><init>()V
+HPLcom/android/server/apphibernation/AppHibernationService;->setHibernatingForUser(Ljava/lang/String;IZ)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Map;Landroid/util/ArrayMap;
+HPLcom/android/server/apphibernation/AppHibernationService;->setHibernatingGlobally(Ljava/lang/String;Z)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
PLcom/android/server/apphibernation/GlobalLevelState;-><clinit>()V
-PLcom/android/server/apphibernation/GlobalLevelState;-><init>()V
+PLcom/android/server/apphibernation/GlobalLevelState;->toString()Ljava/lang/String;
PLcom/android/server/apphibernation/HibernationStateDiskStore;-><init>(Ljava/io/File;Lcom/android/server/apphibernation/ProtoReadWriter;Ljava/util/concurrent/ScheduledExecutorService;)V
PLcom/android/server/apphibernation/HibernationStateDiskStore;-><init>(Ljava/io/File;Lcom/android/server/apphibernation/ProtoReadWriter;Ljava/util/concurrent/ScheduledExecutorService;Ljava/lang/String;)V
PLcom/android/server/apphibernation/HibernationStateDiskStore;->readHibernationStates()Ljava/util/List;
-PLcom/android/server/apphibernation/UserLevelHibernationProto;-><init>()V
PLcom/android/server/apphibernation/UserLevelState;-><clinit>()V
-PLcom/android/server/apphibernation/UserLevelState;-><init>()V
+PLcom/android/server/apphibernation/UserLevelState;->toString()Ljava/lang/String;
HSPLcom/android/server/appop/AppOpMigrationHelperImpl;-><init>()V
HSPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;-><init>(Lcom/android/server/appop/AppOpsCheckingServiceInterface;)V
-HSPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->addAppOpsModeChangedListener(Lcom/android/server/appop/AppOpsCheckingServiceInterface$AppOpsModeChangedListener;)Z
+HSPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->addAppOpsModeChangedListener(Lcom/android/server/appop/AppOpsService$2;)Z
HSPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->clearAllModes()V
-HPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getForegroundOps(ILjava/lang/String;)Landroid/util/SparseBooleanArray;
-HPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getForegroundOps(Ljava/lang/String;I)Landroid/util/SparseBooleanArray;
-PLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getNonDefaultPackageModes(Ljava/lang/String;I)Landroid/util/SparseIntArray;
-HPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getPackageMode(Ljava/lang/String;II)I
-HPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getUidMode(ILjava/lang/String;I)I
+PLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getForegroundOps(I)Landroid/util/SparseBooleanArray;
+PLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getForegroundOps(ILjava/lang/String;)Landroid/util/SparseBooleanArray;
+PLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getNonDefaultPackageModes(ILjava/lang/String;)Landroid/util/SparseIntArray;
+PLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getNonDefaultUidModes(I)Landroid/util/SparseIntArray;
+HPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getPackageMode(IILjava/lang/String;)I+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/permission/access/appop/AppOpService;
+HPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getUidMode(IILjava/lang/String;)I+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/permission/access/appop/AppOpService;
HSPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->readState()V
-HPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->removePackage(Ljava/lang/String;I)Z
-PLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->removeUid(I)V
-PLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->setUidMode(ILjava/lang/String;II)Z
+PLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->setPackageMode(IIILjava/lang/String;)V
+PLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->setUidMode(III)Z
PLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->systemReady()V
-HSPLcom/android/server/appop/AppOpsRestrictionsImpl;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/appop/AppOpsRestrictions$AppOpsRestrictionRemovedListener;)V
-HPLcom/android/server/appop/AppOpsRestrictionsImpl;->getUserRestriction(Ljava/lang/Object;II)Z
-HPLcom/android/server/appop/AppOpsRestrictionsImpl;->getUserRestriction(Ljava/lang/Object;IILjava/lang/String;Ljava/lang/String;Z)Z
-PLcom/android/server/appop/AppOpsRestrictionsImpl;->hasGlobalRestrictions(Ljava/lang/Object;)Z
-PLcom/android/server/appop/AppOpsRestrictionsImpl;->hasUserRestrictions(Ljava/lang/Object;)Z
-PLcom/android/server/appop/AppOpsRestrictionsImpl;->putUserRestriction(Ljava/lang/Object;IIZ)Z
-HPLcom/android/server/appop/AppOpsRestrictionsImpl;->putUserRestrictionExclusions(Ljava/lang/Object;ILandroid/os/PackageTagsList;)Z
-PLcom/android/server/appop/AppOpsRestrictionsImpl;->resolveUserId(I)[I
-PLcom/android/server/appop/AppOpsRestrictionsImpl;->setGlobalRestriction(Ljava/lang/Object;IZ)Z
-PLcom/android/server/appop/AppOpsRestrictionsImpl;->setUserRestriction(Ljava/lang/Object;IIZLandroid/os/PackageTagsList;)Z
-PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/appop/AppOpsService;)V
-HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda10;->onUidStateChanged(IIZ)V
-PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda13;-><init>()V
-PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/appop/AppOpsService;Ljava/lang/String;Ljava/lang/String;I)V
-HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda14;->run()V
-PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda15;-><init>()V
-HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda15;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda16;-><init>(Landroid/app/AsyncNotedAppOp;[ZILjava/lang/String;ILjava/lang/String;)V
-HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda16;->accept(Ljava/lang/Object;)V
-PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda3;-><init>()V
-PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/appop/AppOpsService;)V
-PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda5;-><init>()V
-HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda6;-><init>()V
-HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda6;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda8;-><init>()V
-PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/appop/AppOpsService;)V
-HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda9;->execute(Ljava/lang/Runnable;)V
+HSPLcom/android/server/appop/AppOpsRecentAccessPersistence;-><init>(Landroid/util/AtomicFile;Lcom/android/server/appop/AppOpsService;)V
+HSPLcom/android/server/appop/AppOpsRecentAccessPersistence;->readPackage(Lcom/android/modules/utils/TypedXmlPullParser;Landroid/util/SparseArray;)V
+HSPLcom/android/server/appop/AppOpsRecentAccessPersistence;->readRecentAccesses(Landroid/util/SparseArray;)V
+HPLcom/android/server/appop/AppOpsRecentAccessPersistence;->writeDeviceAttributedOps(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/appop/AppOpsService$Op;)V
+PLcom/android/server/appop/AppOpsRecentAccessPersistence;->writeRecentAccesses(Landroid/util/SparseArray;)V
+HSPLcom/android/server/appop/AppOpsRestrictionsImpl;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda7;)V
+PLcom/android/server/appop/AppOpsRestrictionsImpl;->dumpRestrictions(Ljava/io/PrintWriter;ILjava/lang/String;Z)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/appop/AppOpsService;)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda12;->execute(Ljava/lang/Runnable;)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/appop/AppOpsService;)V
+HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda14;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+]Lcom/android/internal/app/IAppOpsNotedCallback;Landroid/app/AppOpsManager$6;
+HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda15;-><init>(Landroid/app/AsyncNotedAppOp;[ZILjava/lang/String;ILjava/lang/String;)V
+HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda15;->accept(Ljava/lang/Object;)V+]Lcom/android/internal/app/IAppOpsAsyncNotedCallback;Lcom/android/internal/app/IAppOpsAsyncNotedCallback$Stub$Proxy;
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda16;-><init>(I)V
+HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda16;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda18;-><init>(Landroid/util/SparseLongArray;I)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda18;->accept(Ljava/lang/Object;)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/appop/AppOpsService;Ljava/lang/String;Lcom/android/internal/app/IAppOpsAsyncNotedCallback;)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda1;->onInterfaceDied(Landroid/os/RemoteCallbackList;Landroid/os/IInterface;Ljava/lang/Object;)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda20;-><init>(Landroid/util/SparseLongArray;Lcom/android/server/appop/AttributedOp;I)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda20;->accept(Ljava/lang/Object;)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda2;-><init>(I)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda6;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/appop/AppOpsService;)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda8;-><init>(I)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/appop/AppOpsService$1$1;-><init>(Lcom/android/server/appop/AppOpsService$1;)V
PLcom/android/server/appop/AppOpsService$1$1;->doInBackground([Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/appop/AppOpsService$1$1;->doInBackground([Ljava/lang/Void;)Ljava/lang/Void;
-HSPLcom/android/server/appop/AppOpsService$1;-><init>(Lcom/android/server/appop/AppOpsService;)V
+HSPLcom/android/server/appop/AppOpsService$1;-><init>(Lcom/android/server/appop/AppOpsService;I)V
PLcom/android/server/appop/AppOpsService$1;->run()V
HSPLcom/android/server/appop/AppOpsService$2;-><init>(Lcom/android/server/appop/AppOpsService;)V
-HSPLcom/android/server/appop/AppOpsService$3;-><init>(Lcom/android/server/appop/AppOpsService;)V
-HPLcom/android/server/appop/AppOpsService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/appop/AppOpsService$4;-><init>(Lcom/android/server/appop/AppOpsService;)V
-PLcom/android/server/appop/AppOpsService$5;-><init>(Lcom/android/server/appop/AppOpsService;)V
-PLcom/android/server/appop/AppOpsService$5;->run()V
-PLcom/android/server/appop/AppOpsService$6;-><init>(Lcom/android/server/appop/AppOpsService;)V
+PLcom/android/server/appop/AppOpsService$2;->onUidModeChanged(IILjava/lang/String;)V
+HSPLcom/android/server/appop/AppOpsService$3;-><init>(Lcom/android/server/appop/AppOpsService;I)V
+PLcom/android/server/appop/AppOpsService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/appop/AppOpsService$6;-><init>(Lcom/android/server/appop/AppOpsService;)V
PLcom/android/server/appop/AppOpsService$7;-><init>(Lcom/android/server/appop/AppOpsService;)V
-PLcom/android/server/appop/AppOpsService$8;-><init>(Lcom/android/server/appop/AppOpsService;Landroid/util/Pair;)V
PLcom/android/server/appop/AppOpsService$9;-><init>(Lcom/android/server/appop/AppOpsService;Landroid/util/ArraySet;)V
-PLcom/android/server/appop/AppOpsService$9;->accept(Landroid/app/AppOpsManager$HistoricalOps;)V
PLcom/android/server/appop/AppOpsService$9;->accept(Ljava/lang/Object;)V
PLcom/android/server/appop/AppOpsService$ActiveCallback;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/internal/app/IAppOpsActiveCallback;III)V
+PLcom/android/server/appop/AppOpsService$ActiveCallback;->toString()Ljava/lang/String;
HSPLcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl;-><init>(Lcom/android/server/appop/AppOpsService;)V
-HSPLcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl-IA;)V
PLcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl;->setDeviceAndProfileOwners(Landroid/util/SparseIntArray;)V
-HPLcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl;->setGlobalRestriction(IZLandroid/os/IBinder;)V
-HSPLcom/android/server/appop/AppOpsService$AppOpsManagerLocalImpl;-><init>(Lcom/android/server/appop/AppOpsService;)V
-HSPLcom/android/server/appop/AppOpsService$AppOpsManagerLocalImpl;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService$AppOpsManagerLocalImpl-IA;)V
-PLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/appop/AppOpsService;)V
-HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda11;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/appop/AppOpsService;)V
-HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda13;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/appop/AppOpsService;)V
-HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/appop/AppOpsService;)V
-HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda5;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/appop/AppOpsService;)V
-HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda7;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/appop/AppOpsService;)V
+PLcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl;->setGlobalRestriction(IZLandroid/os/IBinder;)V
+PLcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl;->setUidModeFromPermissionPolicy(IIILcom/android/internal/app/IAppOpsCallback;)V
+PLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda10;-><init>(ILjava/lang/Object;)V
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda10;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/appop/AppOpsService;I)V
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda3;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda4;-><init>(ILjava/lang/Object;)V
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda4;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda6;-><init>(ILjava/lang/Object;)V
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda6;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/appop/AppOpsService;I)V
HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda9;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->$r8$lambda$9t8iLhni7XlJaYUbHyUsLY8CxCM(Lcom/android/server/appop/AppOpsService;IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp;
-PLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->$r8$lambda$TqGvemNPXzXUjdqWw7kwupm3azw(Lcom/android/server/appop/AppOpsService;IIILjava/lang/String;)I
-HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->$r8$lambda$isKDS9RXD9cfyW6vB1LFop2lwy4(Lcom/android/server/appop/AppOpsService;Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;I)V
-HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->$r8$lambda$p7Z0eGBUU1-Gt7vHG9S-93UhGlY(Lcom/android/server/appop/AppOpsService;IILjava/lang/String;Ljava/lang/String;IZ)I
-PLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->$r8$lambda$q8BbxI-iIBB256_4cFe16ffKxiE(Lcom/android/server/appop/AppOpsService;ILandroid/content/AttributionSource;ZLjava/lang/String;ZZ)Landroid/app/SyncNotedAppOp;
-HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->$r8$lambda$vZeNm9U4ce-mUj2m0fon_vppmA0(Lcom/android/server/appop/AppOpsService;Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;
-PLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->-$$Nest$fgetmCheckOpsDelegate(Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;)Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;
HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;-><init>(Lcom/android/server/appop/AppOpsService;Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;)V
-HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->checkAudioOperation(IIILjava/lang/String;)I
-HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->checkOperation(IILjava/lang/String;Ljava/lang/String;IZ)I
-HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;I)V
-HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->noteOperation(IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp;
-HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->noteProxyOperation(ILandroid/content/AttributionSource;ZLjava/lang/String;ZZ)Landroid/app/SyncNotedAppOp;
-HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->checkOperation(IILjava/lang/String;Ljava/lang/String;IZ)I+]Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;Lcom/android/server/policy/AppOpsPolicy;
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;I)V+]Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;Lcom/android/server/policy/AppOpsPolicy;
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->noteOperation(IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;ZI)Landroid/app/SyncNotedAppOp;+]Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;Lcom/android/server/policy/AppOpsPolicy;
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->noteProxyOperation(ILandroid/content/AttributionSource;ZLjava/lang/String;ZZ)Landroid/app/SyncNotedAppOp;+]Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;Lcom/android/server/policy/AppOpsPolicy;
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;+]Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;Lcom/android/server/policy/AppOpsPolicy;
PLcom/android/server/appop/AppOpsService$ClientGlobalRestrictionState;-><init>(Lcom/android/server/appop/AppOpsService;Landroid/os/IBinder;)V
-PLcom/android/server/appop/AppOpsService$ClientGlobalRestrictionState;->destroy()V
-PLcom/android/server/appop/AppOpsService$ClientGlobalRestrictionState;->isDefault()Z
PLcom/android/server/appop/AppOpsService$ClientGlobalRestrictionState;->setRestriction(IZ)Z
PLcom/android/server/appop/AppOpsService$ClientUserRestrictionState;-><init>(Lcom/android/server/appop/AppOpsService;Landroid/os/IBinder;)V
-PLcom/android/server/appop/AppOpsService$ClientUserRestrictionState;->destroy()V
-HPLcom/android/server/appop/AppOpsService$ClientUserRestrictionState;->hasRestriction(ILjava/lang/String;Ljava/lang/String;IZ)Z
-PLcom/android/server/appop/AppOpsService$ClientUserRestrictionState;->isDefault()Z
+HPLcom/android/server/appop/AppOpsService$ClientUserRestrictionState;->hasRestriction(ZILjava/lang/String;ILjava/lang/String;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
PLcom/android/server/appop/AppOpsService$ClientUserRestrictionState;->setRestriction(IZLandroid/os/PackageTagsList;I)Z
HSPLcom/android/server/appop/AppOpsService$Constants;-><init>(Lcom/android/server/appop/AppOpsService;Landroid/os/Handler;)V
-PLcom/android/server/appop/AppOpsService$Constants;->startMonitoring(Landroid/content/ContentResolver;)V
+PLcom/android/server/appop/AppOpsService$Constants;->dump(Ljava/io/PrintWriter;)V
HSPLcom/android/server/appop/AppOpsService$Constants;->updateConstants()V
-HPLcom/android/server/appop/AppOpsService$ModeCallback;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/internal/app/IAppOpsCallback;IIIII)V
-PLcom/android/server/appop/AppOpsService$ModeCallback;->onOpModeChanged(IILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/appop/AppOpsService$ModeCallback;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/internal/app/IAppOpsCallback;IIII)V
+PLcom/android/server/appop/AppOpsService$ModeCallback;->binderDied()V
+PLcom/android/server/appop/AppOpsService$ModeCallback;->toString()Ljava/lang/String;
PLcom/android/server/appop/AppOpsService$NotedCallback;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/internal/app/IAppOpsNotedCallback;III)V
-HSPLcom/android/server/appop/AppOpsService$Op;->-$$Nest$mgetOrCreateAttribution(Lcom/android/server/appop/AppOpsService$Op;Lcom/android/server/appop/AppOpsService$Op;Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/appop/AttributedOp;
+PLcom/android/server/appop/AppOpsService$NotedCallback;->toString()Ljava/lang/String;
HSPLcom/android/server/appop/AppOpsService$Op;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService$UidState;Ljava/lang/String;II)V
-HPLcom/android/server/appop/AppOpsService$Op;->createEntryLocked()Landroid/app/AppOpsManager$OpEntry;
HSPLcom/android/server/appop/AppOpsService$Op;->getOrCreateAttribution(Lcom/android/server/appop/AppOpsService$Op;Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/appop/AttributedOp;
HPLcom/android/server/appop/AppOpsService$Op;->isRunning()Z
+PLcom/android/server/appop/AppOpsService$Op;->removeAttributionsWithNoTime()V
HSPLcom/android/server/appop/AppOpsService$Ops;-><init>(Ljava/lang/String;Lcom/android/server/appop/AppOpsService$UidState;)V
PLcom/android/server/appop/AppOpsService$PackageVerificationResult;-><init>(Landroid/app/AppOpsManager$RestrictionBypass;Z)V
PLcom/android/server/appop/AppOpsService$StartedCallback;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/internal/app/IAppOpsStartedCallback;III)V
+PLcom/android/server/appop/AppOpsService$StartedCallback;->toString()Ljava/lang/String;
HSPLcom/android/server/appop/AppOpsService$UidState;-><init>(Lcom/android/server/appop/AppOpsService;I)V
-PLcom/android/server/appop/AppOpsService$UidState;->clear()V
+HPLcom/android/server/appop/AppOpsService$UidState;->dump(Ljava/io/PrintWriter;J)V
HPLcom/android/server/appop/AppOpsService$UidState;->evalMode(II)I
-HPLcom/android/server/appop/AppOpsService$UidState;->getState()I
-HPLcom/android/server/appop/AppOpsService;->$r8$lambda$6k_N9hZ8kvjX_OAIx8qy1xpZV_s(Lcom/android/server/appop/AppOpsService;Ljava/lang/Runnable;)V
-HPLcom/android/server/appop/AppOpsService;->$r8$lambda$K1us0zRuosg7DEfhttpLHrRzwQ8(Lcom/android/server/appop/AppOpsService;Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/appop/AppOpsService;->$r8$lambda$KZ8csPYjnHRgqtsqPZIdzSZk2M0(Lcom/android/server/appop/AppOpsService;IZI)V
-PLcom/android/server/appop/AppOpsService;->$r8$lambda$_3mKgx97gA3YgX5RtEESYaD_JvY(Lcom/android/server/appop/AppOpsService;II)V
-PLcom/android/server/appop/AppOpsService;->$r8$lambda$iHRjxQ_m4gxYrCioytzJw8v4y_Q(Landroid/app/AsyncNotedAppOp;[ZILjava/lang/String;ILjava/lang/String;Lcom/android/internal/app/IAppOpsAsyncNotedCallback;)V
-HPLcom/android/server/appop/AppOpsService;->$r8$lambda$sKlvEb6CGkKf4LV4kVBIOznFZ9c(Lcom/android/server/appop/AppOpsService;IIZ)V
-PLcom/android/server/appop/AppOpsService;->$r8$lambda$tCrK7GHyC4CL9PmON8WCNADuzSQ(Lcom/android/server/appop/AppOpsService;IIZLjava/lang/String;)V
-PLcom/android/server/appop/AppOpsService;->$r8$lambda$uCCOXFJxz3bCZJrsIAuF17lDZks(Lcom/android/server/appop/AppOpsService;Landroid/util/ArraySet;IILjava/lang/String;Ljava/lang/String;III)V
-PLcom/android/server/appop/AppOpsService;->$r8$lambda$xAhQeGPgXGiSjmtMzzdf_avZ1GE(Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/OnOpModeChangedListener;IILjava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/appop/AppOpsService;->-$$Nest$fgetmOpGlobalRestrictions(Lcom/android/server/appop/AppOpsService;)Landroid/util/ArrayMap;
-PLcom/android/server/appop/AppOpsService;->-$$Nest$fgetmRarelyUsedPackages(Lcom/android/server/appop/AppOpsService;)Landroid/util/ArraySet;
-PLcom/android/server/appop/AppOpsService;->-$$Nest$fputmRarelyUsedPackages(Lcom/android/server/appop/AppOpsService;Landroid/util/ArraySet;)V
-PLcom/android/server/appop/AppOpsService;->-$$Nest$mcheckAudioOperationImpl(Lcom/android/server/appop/AppOpsService;IIILjava/lang/String;)I
-HPLcom/android/server/appop/AppOpsService;->-$$Nest$mcheckOperationImpl(Lcom/android/server/appop/AppOpsService;IILjava/lang/String;Ljava/lang/String;IZ)I
+HPLcom/android/server/appop/AppOpsService$UidState;->getState()I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+HPLcom/android/server/appop/AppOpsService;->-$$Nest$mcheckAudioOperationImpl(Lcom/android/server/appop/AppOpsService;IIILjava/lang/String;)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/appop/AppOpsService;->-$$Nest$mcheckOperationImpl(Lcom/android/server/appop/AppOpsService;IILjava/lang/String;Ljava/lang/String;IZ)I+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;
HPLcom/android/server/appop/AppOpsService;->-$$Nest$mfinishOperationImpl(Lcom/android/server/appop/AppOpsService;Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/appop/AppOpsService;->-$$Nest$mgetPackageListAndResample(Lcom/android/server/appop/AppOpsService;)Ljava/util/List;
-HPLcom/android/server/appop/AppOpsService;->-$$Nest$mgetPackageManagerInternal(Lcom/android/server/appop/AppOpsService;)Landroid/content/pm/PackageManagerInternal;
-PLcom/android/server/appop/AppOpsService;->-$$Nest$minitializeRarelyUsedPackagesList(Lcom/android/server/appop/AppOpsService;Landroid/util/ArraySet;)V
-HPLcom/android/server/appop/AppOpsService;->-$$Nest$mnoteOperationImpl(Lcom/android/server/appop/AppOpsService;IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp;
-PLcom/android/server/appop/AppOpsService;->-$$Nest$mnoteProxyOperationImpl(Lcom/android/server/appop/AppOpsService;ILandroid/content/AttributionSource;ZLjava/lang/String;ZZ)Landroid/app/SyncNotedAppOp;
-PLcom/android/server/appop/AppOpsService;->-$$Nest$mpackageRemovedLocked(Lcom/android/server/appop/AppOpsService;ILjava/lang/String;)V
+HPLcom/android/server/appop/AppOpsService;->-$$Nest$mnoteOperationImpl(Lcom/android/server/appop/AppOpsService;IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;ZI)Landroid/app/SyncNotedAppOp;
+HPLcom/android/server/appop/AppOpsService;->-$$Nest$mnoteProxyOperationImpl(Lcom/android/server/appop/AppOpsService;ILandroid/content/AttributionSource;ZLjava/lang/String;ZZ)Landroid/app/SyncNotedAppOp;+]Landroid/content/Context;Landroid/app/ContextImpl;
HPLcom/android/server/appop/AppOpsService;->-$$Nest$mstartOperationImpl(Lcom/android/server/appop/AppOpsService;Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;
HSPLcom/android/server/appop/AppOpsService;-><clinit>()V
HSPLcom/android/server/appop/AppOpsService;-><init>(Ljava/io/File;Ljava/io/File;Landroid/os/Handler;Landroid/content/Context;)V
-HPLcom/android/server/appop/AppOpsService;->checkAudioOperation(IIILjava/lang/String;)I
-HPLcom/android/server/appop/AppOpsService;->checkAudioOperationImpl(IIILjava/lang/String;)I
+HPLcom/android/server/appop/AppOpsService;->checkAudioOperation(IIILjava/lang/String;)I+]Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;Lcom/android/server/policy/AppOpsPolicy;
HPLcom/android/server/appop/AppOpsService;->checkOperation(IILjava/lang/String;)I
-PLcom/android/server/appop/AppOpsService;->checkOperationForDevice(IILjava/lang/String;I)I
-HPLcom/android/server/appop/AppOpsService;->checkOperationImpl(IILjava/lang/String;Ljava/lang/String;IZ)I
-HPLcom/android/server/appop/AppOpsService;->checkOperationRaw(IILjava/lang/String;Ljava/lang/String;)I
-HPLcom/android/server/appop/AppOpsService;->checkOperationUnchecked(IILjava/lang/String;Ljava/lang/String;IZ)I
-HPLcom/android/server/appop/AppOpsService;->checkPackage(ILjava/lang/String;)I
+PLcom/android/server/appop/AppOpsService;->checkOperationForDevice(IILjava/lang/String;Ljava/lang/String;I)I
+HPLcom/android/server/appop/AppOpsService;->checkOperationRawForDevice(IILjava/lang/String;Ljava/lang/String;I)I
+HPLcom/android/server/appop/AppOpsService;->checkPackage(ILjava/lang/String;)I+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
PLcom/android/server/appop/AppOpsService;->checkSystemUid(Ljava/lang/String;)V
-HPLcom/android/server/appop/AppOpsService;->collectAsyncNotedOp(ILjava/lang/String;ILjava/lang/String;ILjava/lang/String;Z)V
-HPLcom/android/server/appop/AppOpsService;->collectOps(Lcom/android/server/appop/AppOpsService$Ops;[I)Ljava/util/ArrayList;
-PLcom/android/server/appop/AppOpsService;->createSandboxUidStateIfNotExistsForAppLocked(I)V
-HPLcom/android/server/appop/AppOpsService;->enforceManageAppOpsModes(III)V
+HPLcom/android/server/appop/AppOpsService;->collectAsyncNotedOp(IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V+]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList$Builder$1;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/appop/AppOpsService;->collectOps(Lcom/android/server/appop/AppOpsService$Ops;[ILjava/lang/String;)Ljava/util/ArrayList;+]Landroid/content/Context;Landroid/app/ContextImpl;
+PLcom/android/server/appop/AppOpsService;->doForAllAttributedOpsInUidLocked(ILjava/util/function/Consumer;)V
+HPLcom/android/server/appop/AppOpsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/appop/AppOpsService;->dumpStatesLocked(Ljava/io/PrintWriter;Ljava/lang/String;IJLcom/android/server/appop/AppOpsService$Op;JLjava/text/SimpleDateFormat;Ljava/util/Date;)V
+PLcom/android/server/appop/AppOpsService;->enforceManageAppOpsModes(III)V
PLcom/android/server/appop/AppOpsService;->ensureHistoricalOpRequestIsValid(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;IJJI)V
PLcom/android/server/appop/AppOpsService;->extractAsyncOps(Ljava/lang/String;)Ljava/util/List;
-HPLcom/android/server/appop/AppOpsService;->filterAppAccessUnlocked(Ljava/lang/String;I)Z
HPLcom/android/server/appop/AppOpsService;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/appop/AppOpsService;->finishOperationImpl(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;I)V
HPLcom/android/server/appop/AppOpsService;->finishOperationUnchecked(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;I)V
-HPLcom/android/server/appop/AppOpsService;->getAsyncNotedOpsKey(Ljava/lang/String;I)Landroid/util/Pair;
-HPLcom/android/server/appop/AppOpsService;->getBypassforPackage(Lcom/android/server/pm/pkg/PackageState;)Landroid/app/AppOpsManager$RestrictionBypass;
PLcom/android/server/appop/AppOpsService;->getHistoricalOps(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;IIJJILandroid/os/RemoteCallback;)V
-PLcom/android/server/appop/AppOpsService;->getOpEntryForResult(Lcom/android/server/appop/AppOpsService$Op;)Landroid/app/AppOpsManager$OpEntry;
-HPLcom/android/server/appop/AppOpsService;->getOpLocked(IILjava/lang/String;Ljava/lang/String;ZLandroid/app/AppOpsManager$RestrictionBypass;Z)Lcom/android/server/appop/AppOpsService$Op;
+PLcom/android/server/appop/AppOpsService;->getOpEntryForResult(Lcom/android/server/appop/AppOpsService$Op;Ljava/lang/String;)Landroid/app/AppOpsManager$OpEntry;
HPLcom/android/server/appop/AppOpsService;->getOpLocked(Lcom/android/server/appop/AppOpsService$Ops;IIZ)Lcom/android/server/appop/AppOpsService$Op;
HPLcom/android/server/appop/AppOpsService;->getOpsLocked(ILjava/lang/String;Ljava/lang/String;ZLandroid/app/AppOpsManager$RestrictionBypass;Z)Lcom/android/server/appop/AppOpsService$Ops;
PLcom/android/server/appop/AppOpsService;->getPackageListAndResample()Ljava/util/List;
HPLcom/android/server/appop/AppOpsService;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
-PLcom/android/server/appop/AppOpsService;->getPackageManagerLocal()Lcom/android/server/pm/PackageManagerLocal;
-HPLcom/android/server/appop/AppOpsService;->getPackageNamesForSampling()Ljava/util/List;
-HPLcom/android/server/appop/AppOpsService;->getPackagesForOps([I)Ljava/util/List;
-HPLcom/android/server/appop/AppOpsService;->getPackagesForUid(I)[Ljava/lang/String;
+PLcom/android/server/appop/AppOpsService;->getPackagesForOpsForDevice([ILjava/lang/String;)Ljava/util/List;
+PLcom/android/server/appop/AppOpsService;->getPackagesForUid(I)[Ljava/lang/String;
HPLcom/android/server/appop/AppOpsService;->getPersistentId(I)Ljava/lang/String;
-PLcom/android/server/appop/AppOpsService;->getRuntimeAppOpsList()Ljava/util/List;
-HSPLcom/android/server/appop/AppOpsService;->getUidStateLocked(IZ)Lcom/android/server/appop/AppOpsService$UidState;
-HPLcom/android/server/appop/AppOpsService;->getUidStateTracker()Lcom/android/server/appop/AppOpsUidStateTracker;
-PLcom/android/server/appop/AppOpsService;->getUserManagerInternal()Lcom/android/server/pm/UserManagerInternal;
-PLcom/android/server/appop/AppOpsService;->initializePackageUidStateLocked(IILjava/lang/String;)V
-PLcom/android/server/appop/AppOpsService;->initializeRarelyUsedPackagesList(Landroid/util/ArraySet;)V
+HPLcom/android/server/appop/AppOpsService;->getUidStateLocked(IZ)Lcom/android/server/appop/AppOpsService$UidState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/appop/AppOpsService;->getUidStateTracker()Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
PLcom/android/server/appop/AppOpsService;->initializeUidStates()V
-PLcom/android/server/appop/AppOpsService;->initializeUserUidStatesLocked(ILjava/util/Map;)V
-HPLcom/android/server/appop/AppOpsService;->isAttributionInPackage(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Z
-HPLcom/android/server/appop/AppOpsService;->isIncomingPackageValid(Ljava/lang/String;I)Z
-HPLcom/android/server/appop/AppOpsService;->isOpRestrictedDueToSuspend(ILjava/lang/String;I)Z
-HPLcom/android/server/appop/AppOpsService;->isOpRestrictedLocked(IILjava/lang/String;Ljava/lang/String;ILandroid/app/AppOpsManager$RestrictionBypass;Z)Z
-HPLcom/android/server/appop/AppOpsService;->isPackageExisted(Ljava/lang/String;)Z
+PLcom/android/server/appop/AppOpsService;->initializeUserUidStatesLocked(ILjava/util/Map;Landroid/util/SparseBooleanArray;)V
+PLcom/android/server/appop/AppOpsService;->isAttributionInPackage(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Z
+PLcom/android/server/appop/AppOpsService;->isAttributionTagDefined(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/appop/AppOpsService;->isIncomingPackageValid(ILjava/lang/String;)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
+HPLcom/android/server/appop/AppOpsService;->isOpRestrictedLocked(IILjava/lang/String;Ljava/lang/String;ILandroid/app/AppOpsManager$RestrictionBypass;Z)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
+PLcom/android/server/appop/AppOpsService;->isOperationActive(IILjava/lang/String;)Z
PLcom/android/server/appop/AppOpsService;->isSamplingTarget(Landroid/content/pm/PackageInfo;)Z
-HPLcom/android/server/appop/AppOpsService;->isSpecialPackage(ILjava/lang/String;)Z
-PLcom/android/server/appop/AppOpsService;->isValidVirtualDeviceId(I)Z
-PLcom/android/server/appop/AppOpsService;->lambda$collectAsyncNotedOp$4(Landroid/app/AsyncNotedAppOp;[ZILjava/lang/String;ILjava/lang/String;Lcom/android/internal/app/IAppOpsAsyncNotedCallback;)V
-HPLcom/android/server/appop/AppOpsService;->lambda$getUidStateTracker$0(Ljava/lang/Runnable;)V
-HPLcom/android/server/appop/AppOpsService;->lambda$systemReady$2(Ljava/lang/String;Ljava/lang/String;I)V
-HPLcom/android/server/appop/AppOpsService;->noteOperation(IILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp;
-HPLcom/android/server/appop/AppOpsService;->noteOperationImpl(IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp;
-HPLcom/android/server/appop/AppOpsService;->noteOperationUnchecked(IILjava/lang/String;Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp;
-HPLcom/android/server/appop/AppOpsService;->noteProxyOperationImpl(ILandroid/content/AttributionSource;ZLjava/lang/String;ZZ)Landroid/app/SyncNotedAppOp;
-PLcom/android/server/appop/AppOpsService;->noteProxyOperationWithState(ILandroid/content/AttributionSourceState;ZLjava/lang/String;ZZ)Landroid/app/SyncNotedAppOp;
+HPLcom/android/server/appop/AppOpsService;->isValidVirtualDeviceId(I)Z
+PLcom/android/server/appop/AppOpsService;->logVerifyAndGetBypassFailure(ILjava/lang/SecurityException;Ljava/lang/String;)V
+HPLcom/android/server/appop/AppOpsService;->noteOperation(IILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp;+]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;
+HPLcom/android/server/appop/AppOpsService;->noteOperationUnchecked(IILjava/lang/String;Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;IIZLjava/lang/String;ZI)Landroid/app/SyncNotedAppOp;+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;
+HPLcom/android/server/appop/AppOpsService;->noteOperationsInBatch(Ljava/util/Map;)V
+HPLcom/android/server/appop/AppOpsService;->noteProxyOperationWithState(ILandroid/content/AttributionSourceState;ZLjava/lang/String;ZZ)Landroid/app/SyncNotedAppOp;
PLcom/android/server/appop/AppOpsService;->notifyOpChanged(Landroid/util/ArraySet;IILjava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/appop/AppOpsService;->notifyOpChanged(Lcom/android/server/appop/OnOpModeChangedListener;IILjava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/appop/AppOpsService;->notifyOpChangedForAllPkgsInUid(IIZLjava/lang/String;)V
-PLcom/android/server/appop/AppOpsService;->notifyOpChecked(Landroid/util/ArraySet;IILjava/lang/String;Ljava/lang/String;III)V
-PLcom/android/server/appop/AppOpsService;->notifyStorageManagerOpModeChangedSync(IILjava/lang/String;II)V
+HPLcom/android/server/appop/AppOpsService;->notifyOpChanged(Lcom/android/server/appop/AppOpsService$ModeCallback;IILjava/lang/String;Ljava/lang/String;)V+]Lcom/android/internal/app/IAppOpsCallback;Landroid/app/AppOpsManager$3;,Lcom/android/internal/app/IAppOpsCallback$Stub$Proxy;,Lcom/android/server/am/AppPermissionTracker$MyAppOpsCallback;
PLcom/android/server/appop/AppOpsService;->notifyWatchersOnDefaultDevice(II)V
-HPLcom/android/server/appop/AppOpsService;->onUidStateChanged(IIZ)V
-HPLcom/android/server/appop/AppOpsService;->packageRemovedLocked(ILjava/lang/String;)V
+PLcom/android/server/appop/AppOpsService;->onUidProcessDeathLocked(I)V
PLcom/android/server/appop/AppOpsService;->permissionToOpCode(Ljava/lang/String;)I
PLcom/android/server/appop/AppOpsService;->prepareInternalCallbacks()V
-HSPLcom/android/server/appop/AppOpsService;->publish()V
-HSPLcom/android/server/appop/AppOpsService;->readAttributionOp(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/appop/AppOpsService$Op;Ljava/lang/String;)V
-HSPLcom/android/server/appop/AppOpsService;->readOp(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/appop/AppOpsService$UidState;Ljava/lang/String;)V
-HSPLcom/android/server/appop/AppOpsService;->readPackage(Lcom/android/modules/utils/TypedXmlPullParser;)V
+PLcom/android/server/appop/AppOpsService;->pruneOpLocked(Lcom/android/server/appop/AppOpsService$Op;ILjava/lang/String;)V
HSPLcom/android/server/appop/AppOpsService;->readRecentAccesses()V
-HSPLcom/android/server/appop/AppOpsService;->readRecentAccesses(Landroid/util/AtomicFile;)V
-HSPLcom/android/server/appop/AppOpsService;->readUid(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)V
-HPLcom/android/server/appop/AppOpsService;->reportRuntimeAppOpAccessMessageAndGetConfig(Ljava/lang/String;Landroid/app/SyncNotedAppOp;Ljava/lang/String;)Lcom/android/internal/app/MessageSamplingConfig;
-HPLcom/android/server/appop/AppOpsService;->reportRuntimeAppOpAccessMessageAsyncLocked(ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/appop/AppOpsService;->reportRuntimeAppOpAccessMessageInternalLocked(ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/appop/AppOpsService;->refreshAttributionsLocked(Lcom/android/server/pm/pkg/AndroidPackage;I)V
+PLcom/android/server/appop/AppOpsService;->reportRuntimeAppOpAccessMessageAndGetConfig(Ljava/lang/String;Landroid/app/SyncNotedAppOp;Ljava/lang/String;)Lcom/android/internal/app/MessageSamplingConfig;
+HPLcom/android/server/appop/AppOpsService;->reportRuntimeAppOpAccessMessageInternalLocked(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/appop/AppOpsService;->resampleAppOpForPackageLocked(Ljava/lang/String;Z)V
PLcom/android/server/appop/AppOpsService;->resamplePackageAndAppOpLocked(Ljava/util/List;)V
HPLcom/android/server/appop/AppOpsService;->resolveUid(Ljava/lang/String;)I
PLcom/android/server/appop/AppOpsService;->scheduleFastWriteLocked()V
-HPLcom/android/server/appop/AppOpsService;->scheduleOpActiveChangedIfNeededLocked(IILjava/lang/String;Ljava/lang/String;IZII)V
-HPLcom/android/server/appop/AppOpsService;->scheduleOpNotedIfNeededLocked(IILjava/lang/String;Ljava/lang/String;III)V
-HPLcom/android/server/appop/AppOpsService;->scheduleOpStartedIfNeededLocked(IILjava/lang/String;Ljava/lang/String;IIIIII)V
-HPLcom/android/server/appop/AppOpsService;->scheduleWriteLocked()V
-PLcom/android/server/appop/AppOpsService;->setAppOpsPolicy(Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;)V
-HPLcom/android/server/appop/AppOpsService;->setAudioRestriction(IIII[Ljava/lang/String;)V
+HPLcom/android/server/appop/AppOpsService;->scheduleOpActiveChangedIfNeededLocked(IILjava/lang/String;Ljava/lang/String;IZII)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/appop/AppOpsService;->scheduleOpNotedIfNeededLocked(IIILjava/lang/String;Ljava/lang/String;II)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/appop/AppOpsService;->scheduleOpStartedIfNeededLocked(IILjava/lang/String;Ljava/lang/String;IIIIII)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/appop/AppOpsService;->setAudioRestriction(IIII[Ljava/lang/String;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
PLcom/android/server/appop/AppOpsService;->setMode(IILjava/lang/String;I)V
PLcom/android/server/appop/AppOpsService;->setMode(IILjava/lang/String;ILcom/android/internal/app/IAppOpsCallback;)V
PLcom/android/server/appop/AppOpsService;->setUidMode(III)V
HPLcom/android/server/appop/AppOpsService;->setUidMode(IIILcom/android/internal/app/IAppOpsCallback;)V
-HPLcom/android/server/appop/AppOpsService;->setUserRestriction(IZLandroid/os/IBinder;ILandroid/os/PackageTagsList;)V
-HPLcom/android/server/appop/AppOpsService;->setUserRestrictionNoCheck(IZLandroid/os/IBinder;ILandroid/os/PackageTagsList;)V
+PLcom/android/server/appop/AppOpsService;->setUserRestriction(IZLandroid/os/IBinder;ILandroid/os/PackageTagsList;)V
+PLcom/android/server/appop/AppOpsService;->setUserRestrictionNoCheck(IZLandroid/os/IBinder;ILandroid/os/PackageTagsList;)V
PLcom/android/server/appop/AppOpsService;->setUserRestrictions(Landroid/os/Bundle;Landroid/os/IBinder;I)V
-HPLcom/android/server/appop/AppOpsService;->shouldCollectNotes(I)Z
-PLcom/android/server/appop/AppOpsService;->shouldIgnoreCallback(III)Z
+PLcom/android/server/appop/AppOpsService;->shouldCollectNotes(I)Z
+HPLcom/android/server/appop/AppOpsService;->shouldIgnoreCallback(III)Z
+PLcom/android/server/appop/AppOpsService;->shouldStartForMode(IZ)Z
+HPLcom/android/server/appop/AppOpsService;->shouldUseNewCheckOp()Z
HPLcom/android/server/appop/AppOpsService;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;ZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;
-HPLcom/android/server/appop/AppOpsService;->startOperationImpl(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;
-HPLcom/android/server/appop/AppOpsService;->startOperationUnchecked(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;
-HPLcom/android/server/appop/AppOpsService;->startWatchingActive([ILcom/android/internal/app/IAppOpsActiveCallback;)V
+HPLcom/android/server/appop/AppOpsService;->startOperationUnchecked(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;IIZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;
+PLcom/android/server/appop/AppOpsService;->startWatchingActive([ILcom/android/internal/app/IAppOpsActiveCallback;)V
PLcom/android/server/appop/AppOpsService;->startWatchingAsyncNoted(Ljava/lang/String;Lcom/android/internal/app/IAppOpsAsyncNotedCallback;)V
PLcom/android/server/appop/AppOpsService;->startWatchingMode(ILjava/lang/String;Lcom/android/internal/app/IAppOpsCallback;)V
HPLcom/android/server/appop/AppOpsService;->startWatchingModeWithFlags(ILjava/lang/String;ILcom/android/internal/app/IAppOpsCallback;)V
-HPLcom/android/server/appop/AppOpsService;->startWatchingNoted([ILcom/android/internal/app/IAppOpsNotedCallback;)V
-HPLcom/android/server/appop/AppOpsService;->startWatchingStarted([ILcom/android/internal/app/IAppOpsStartedCallback;)V
+PLcom/android/server/appop/AppOpsService;->startWatchingNoted([ILcom/android/internal/app/IAppOpsNotedCallback;)V
+PLcom/android/server/appop/AppOpsService;->startWatchingStarted([ILcom/android/internal/app/IAppOpsStartedCallback;)V
+PLcom/android/server/appop/AppOpsService;->stopWatchingActive(Lcom/android/internal/app/IAppOpsActiveCallback;)V
+PLcom/android/server/appop/AppOpsService;->stopWatchingAsyncNoted(Ljava/lang/String;Lcom/android/internal/app/IAppOpsAsyncNotedCallback;)V
+HPLcom/android/server/appop/AppOpsService;->stopWatchingMode(Lcom/android/internal/app/IAppOpsCallback;)V+]Landroid/os/IBinder;Landroid/app/AppOpsManager$3;,Landroid/os/BinderProxy;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/app/IAppOpsCallback;Landroid/app/AppOpsManager$3;,Lcom/android/internal/app/IAppOpsCallback$Stub$Proxy;
+PLcom/android/server/appop/AppOpsService;->stopWatchingNoted(Lcom/android/internal/app/IAppOpsNotedCallback;)V
+PLcom/android/server/appop/AppOpsService;->stopWatchingStarted(Lcom/android/internal/app/IAppOpsStartedCallback;)V
HPLcom/android/server/appop/AppOpsService;->switchPackageIfBootTimeOrRarelyUsedLocked(Ljava/lang/String;)V
-HPLcom/android/server/appop/AppOpsService;->systemReady()V
-HPLcom/android/server/appop/AppOpsService;->updatePermissionRevokedCompat(III)V
-PLcom/android/server/appop/AppOpsService;->updateStartedOpModeForUidForDefaultDeviceLocked(IZI)V
-PLcom/android/server/appop/AppOpsService;->updateStartedOpModeForUserForDefaultDevice(IZI)V
-HPLcom/android/server/appop/AppOpsService;->updateUidProcState(III)V
-HPLcom/android/server/appop/AppOpsService;->verifyAndGetBypass(ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/appop/AppOpsService$PackageVerificationResult;
-HPLcom/android/server/appop/AppOpsService;->verifyAndGetBypass(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/appop/AppOpsService$PackageVerificationResult;
-HPLcom/android/server/appop/AppOpsService;->verifyAndGetBypass(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lcom/android/server/appop/AppOpsService$PackageVerificationResult;
-HPLcom/android/server/appop/AppOpsService;->verifyIncomingOp(I)V
-PLcom/android/server/appop/AppOpsService;->verifyIncomingProxyUid(Landroid/content/AttributionSource;)V
-HPLcom/android/server/appop/AppOpsService;->verifyIncomingUid(I)V
-HPLcom/android/server/appop/AppOpsService;->writeRecentAccesses()V
-PLcom/android/server/appop/AppOpsUidStateTracker;->processStateToUidState(I)I
-PLcom/android/server/appop/AppOpsUidStateTrackerImpl$$ExternalSyntheticLambda0;-><init>()V
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/appop/AppOpsUidStateTrackerImpl$$ExternalSyntheticLambda1;-><init>()V
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1$$ExternalSyntheticLambda0;-><init>(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V
+PLcom/android/server/appop/AppOpsService;->systemReady()V
+PLcom/android/server/appop/AppOpsService;->trimUidStatesLocked(Landroid/util/SparseBooleanArray;Ljava/util/Map;)V
+PLcom/android/server/appop/AppOpsService;->updateStartedOpModeForUidForDefaultDeviceLocked(IIZ)V
+HPLcom/android/server/appop/AppOpsService;->validateOpRequest(IILjava/lang/String;Ljava/lang/String;IZ)Ljava/lang/String;
+HPLcom/android/server/appop/AppOpsService;->verifyAndGetBypass(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lcom/android/server/appop/AppOpsService$PackageVerificationResult;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/compat/IPlatformCompat;Lcom/android/server/compat/PlatformCompat;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/appop/AppOpsService;->verifyIncomingOp(I)V+]Landroid/content/Context;Landroid/app/ContextImpl;
+HPLcom/android/server/appop/AppOpsService;->verifyIncomingProxyUid(Landroid/content/AttributionSource;)V
+HPLcom/android/server/appop/AppOpsService;->verifyIncomingUid(I)V+]Landroid/content/Context;Landroid/app/ContextImpl;
+PLcom/android/server/appop/AppOpsService;->writeRecentAccesses()V
+PLcom/android/server/appop/AppOpsUidStateTrackerImpl$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda12;Ljava/lang/Runnable;I)V
HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1$$ExternalSyntheticLambda0;->run()V
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1$$ExternalSyntheticLambda1;-><init>(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1$$ExternalSyntheticLambda1;->run()V
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;->$r8$lambda$BDK_o82z4D0CLSzizoWclTSuQPc(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V
-PLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;->$r8$lambda$Xv0rzRrxYVvZ3ael2cDamJtHe_M(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V
-PLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;-><init>(Landroid/os/Handler;Ljava/util/concurrent/Executor;)V
+PLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;-><init>(Landroid/os/Handler;Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda12;)V
HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;->execute(Ljava/lang/Runnable;)V
HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;->executeDelayed(Ljava/lang/Runnable;J)V
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;->lambda$execute$0(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V
-PLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;->lambda$executeDelayed$1(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V
-PLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog$$ExternalSyntheticLambda0;-><init>(I)V
HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog$$ExternalSyntheticLambda1;-><init>()V
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog$$ExternalSyntheticLambda2;-><init>()V
HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;-><init>(Lcom/android/server/appop/AppOpsUidStateTrackerImpl$DelayableExecutor;Ljava/lang/Thread;)V
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logCommitUidState(IIIZZ)V
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logCommitUidStateAsync(JIIIZZ)V
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logEvalForegroundMode(IIIII)V
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logEvalForegroundModeAsync(JIIIII)V
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logUpdateUidProcState(III)V
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logUpdateUidProcStateAsync(JIII)V
-PLcom/android/server/appop/AppOpsUidStateTrackerImpl;->$r8$lambda$DDarXSJMLhcQjOvjQGC1suxs48A(Lcom/android/server/appop/AppOpsUidStateTrackerImpl;I)V
-PLcom/android/server/appop/AppOpsUidStateTrackerImpl;-><clinit>()V
-PLcom/android/server/appop/AppOpsUidStateTrackerImpl;-><init>(Landroid/app/ActivityManagerInternal;Landroid/os/Handler;Ljava/util/concurrent/Executor;Lcom/android/internal/os/Clock;Lcom/android/server/appop/AppOpsService$Constants;)V
+PLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;-><init>(Lcom/android/server/appop/AppOpsUidStateTrackerImpl$DelayableExecutor;)V
PLcom/android/server/appop/AppOpsUidStateTrackerImpl;-><init>(Landroid/app/ActivityManagerInternal;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$DelayableExecutor;Lcom/android/internal/os/Clock;Lcom/android/server/appop/AppOpsService$Constants;Ljava/lang/Thread;)V
-PLcom/android/server/appop/AppOpsUidStateTrackerImpl;->addUidStateChangedCallback(Ljava/util/concurrent/Executor;Lcom/android/server/appop/AppOpsUidStateTracker$UidStateChangedCallback;)V
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->commitUidPendingState(I)V
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->evalMode(III)I
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->evalModeInternal(IIII)I
-PLcom/android/server/appop/AppOpsUidStateTrackerImpl;->getOpCapability(I)I
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->getUidAppWidgetVisible(I)Z
-PLcom/android/server/appop/AppOpsUidStateTrackerImpl;->getUidCapability(I)I
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->getUidState(I)I
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->getUidStateLocked(I)I
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->updateUidPendingStateIfNeeded(I)V
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->updateUidPendingStateIfNeededLocked(I)V
-HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->updateUidProcState(III)V
-PLcom/android/server/appop/AttributedOp$$ExternalSyntheticLambda0;-><init>()V
-HPLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;-><init>(JJLandroid/os/IBinder;ILjava/lang/String;Ljava/lang/Runnable;ILandroid/app/AppOpsManager$OpEventProxyInfo;III)V
-HPLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->finish()V
-PLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->getAttributionChainId()I
-PLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->getAttributionFlags()I
-PLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->getClientId()Landroid/os/IBinder;
-PLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->getFlags()I
-PLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->getProxy()Landroid/app/AppOpsManager$OpEventProxyInfo;
-PLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->getStartElapsedTime()J
-PLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->getStartTime()J
-PLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->getUidState()I
-PLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->getVirtualDeviceId()I
-HPLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->reinit(JJLandroid/os/IBinder;Ljava/lang/String;ILjava/lang/Runnable;IILandroid/app/AppOpsManager$OpEventProxyInfo;IILandroid/util/Pools$Pool;)V
-HSPLcom/android/server/appop/AttributedOp$InProgressStartOpEventPool;-><init>(Lcom/android/server/appop/AttributedOp$OpEventProxyInfoPool;I)V
-HPLcom/android/server/appop/AttributedOp$InProgressStartOpEventPool;->acquire(JJLandroid/os/IBinder;Ljava/lang/String;ILjava/lang/Runnable;ILjava/lang/String;Ljava/lang/String;IIII)Lcom/android/server/appop/AttributedOp$InProgressStartOpEvent;
-HSPLcom/android/server/appop/AttributedOp$OpEventProxyInfoPool;-><init>(I)V
-HSPLcom/android/server/appop/AttributedOp$OpEventProxyInfoPool;->acquire(ILjava/lang/String;Ljava/lang/String;)Landroid/app/AppOpsManager$OpEventProxyInfo;
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->commitUidPendingState(I)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Ljava/util/concurrent/Executor;Landroid/os/HandlerExecutor;,Lcom/android/server/appop/AppOpsUidStateTrackerImpl$1;
+PLcom/android/server/appop/AppOpsUidStateTrackerImpl;->dumpEvents(Ljava/io/PrintWriter;)V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->evalMode(III)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Ljava/util/concurrent/Executor;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$1;
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->updateUidPendingStateIfNeeded(I)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->updateUidProcState(III)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$DelayableExecutor;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$1;]Ljava/util/concurrent/Executor;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$1;
HSPLcom/android/server/appop/AttributedOp;-><init>(Lcom/android/server/appop/AppOpsService;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/appop/AppOpsService$Op;)V
-HPLcom/android/server/appop/AttributedOp;->accessed(ILjava/lang/String;Ljava/lang/String;II)V
-HSPLcom/android/server/appop/AttributedOp;->accessed(JJILjava/lang/String;Ljava/lang/String;II)V
-HPLcom/android/server/appop/AttributedOp;->createAttributedOpEntryLocked()Landroid/app/AppOpsManager$AttributedOpEntry;
-HPLcom/android/server/appop/AttributedOp;->deepClone(Landroid/util/LongSparseArray;)Landroid/util/LongSparseArray;
-HPLcom/android/server/appop/AttributedOp;->finishOrPause(Landroid/os/IBinder;ZZ)V
-HPLcom/android/server/appop/AttributedOp;->finished(Landroid/os/IBinder;)V
-HPLcom/android/server/appop/AttributedOp;->finished(Landroid/os/IBinder;Z)V
-HPLcom/android/server/appop/AttributedOp;->isPaused()Z
+HSPLcom/android/server/appop/AttributedOp;->accessed(JJILjava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
+PLcom/android/server/appop/AttributedOp;->createAttributedOpEntryLocked()Landroid/app/AppOpsManager$AttributedOpEntry;
+PLcom/android/server/appop/AttributedOp;->deepClone(Landroid/util/LongSparseArray;)Landroid/util/LongSparseArray;
+PLcom/android/server/appop/AttributedOp;->doForAllInProgressStartOpEvents(Ljava/util/function/Consumer;)V
+HPLcom/android/server/appop/AttributedOp;->finishOrPause(Landroid/os/IBinder;ZZ)V+]Landroid/os/IBinder;Landroid/os/Binder;,Landroid/os/BinderProxy;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
+PLcom/android/server/appop/AttributedOp;->isPaused()Z
HPLcom/android/server/appop/AttributedOp;->isRunning()Z
HPLcom/android/server/appop/AttributedOp;->onUidStateChanged(I)V
HPLcom/android/server/appop/AttributedOp;->rejected(II)V
-HSPLcom/android/server/appop/AttributedOp;->rejected(JII)V
-HPLcom/android/server/appop/AttributedOp;->started(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;IIIII)V
-HPLcom/android/server/appop/AttributedOp;->startedOrPaused(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;IIIZZII)V
+HSPLcom/android/server/appop/AttributedOp;->rejected(IIJ)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
+HPLcom/android/server/appop/AttributedOp;->startedOrPaused(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIIZZ)V+]Landroid/os/IBinder;Landroid/os/Binder;,Landroid/os/BinderProxy;
PLcom/android/server/appop/AudioRestrictionManager$Restriction;-><clinit>()V
-PLcom/android/server/appop/AudioRestrictionManager$Restriction;-><init>()V
-PLcom/android/server/appop/AudioRestrictionManager$Restriction;-><init>(Lcom/android/server/appop/AudioRestrictionManager$Restriction-IA;)V
HSPLcom/android/server/appop/AudioRestrictionManager;-><clinit>()V
HSPLcom/android/server/appop/AudioRestrictionManager;-><init>()V
-PLcom/android/server/appop/AudioRestrictionManager;->checkAudioOperation(IIILjava/lang/String;)I
-HPLcom/android/server/appop/AudioRestrictionManager;->checkZenModeRestrictionLocked(IIILjava/lang/String;)I
-HPLcom/android/server/appop/AudioRestrictionManager;->setZenModeAudioRestriction(IIII[Ljava/lang/String;)V
+PLcom/android/server/appop/AudioRestrictionManager;->hasActiveRestrictions()Z
PLcom/android/server/appop/DiscreteRegistry$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/appop/DiscreteRegistry;)V
-PLcom/android/server/appop/DiscreteRegistry$DiscreteOp$$ExternalSyntheticLambda0;-><init>()V
-HPLcom/android/server/appop/DiscreteRegistry$DiscreteOp;-><init>(Lcom/android/server/appop/DiscreteRegistry;)V
-PLcom/android/server/appop/DiscreteRegistry$DiscreteOp;->addDiscreteAccess(Ljava/lang/String;IIJJII)V
-HPLcom/android/server/appop/DiscreteRegistry$DiscreteOp;->deserialize(Lcom/android/modules/utils/TypedXmlPullParser;J)V
-HPLcom/android/server/appop/DiscreteRegistry$DiscreteOp;->getOrCreateDiscreteOpEventsList(Ljava/lang/String;)Ljava/util/List;
-HPLcom/android/server/appop/DiscreteRegistry$DiscreteOp;->merge(Lcom/android/server/appop/DiscreteRegistry$DiscreteOp;)V
-HPLcom/android/server/appop/DiscreteRegistry$DiscreteOp;->serialize(Lcom/android/modules/utils/TypedXmlSerializer;)V
-HPLcom/android/server/appop/DiscreteRegistry$DiscreteOpEvent;->-$$Nest$mserialize(Lcom/android/server/appop/DiscreteRegistry$DiscreteOpEvent;Lcom/android/modules/utils/TypedXmlSerializer;)V
-HPLcom/android/server/appop/DiscreteRegistry$DiscreteOpEvent;-><init>(Lcom/android/server/appop/DiscreteRegistry;JJIIII)V
-HPLcom/android/server/appop/DiscreteRegistry$DiscreteOpEvent;->serialize(Lcom/android/modules/utils/TypedXmlSerializer;)V
-PLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->-$$Nest$mclearHistory(Lcom/android/server/appop/DiscreteRegistry$DiscreteOps;ILjava/lang/String;)V
-PLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->-$$Nest$mreadFromFile(Lcom/android/server/appop/DiscreteRegistry$DiscreteOps;Ljava/io/File;J)V
+PLcom/android/server/appop/DiscreteRegistry$$ExternalSyntheticLambda0;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteDeviceOp;->getOrCreateDiscreteOpEventsList(Ljava/lang/String;)Ljava/util/List;
+PLcom/android/server/appop/DiscreteRegistry$DiscreteOp$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/appop/DiscreteRegistry$DiscreteOp$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/appop/DiscreteRegistry$DiscreteOpEvent;-><init>(IIJJII)V
PLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->-$$Nest$mwriteToStream(Lcom/android/server/appop/DiscreteRegistry$DiscreteOps;Ljava/io/FileOutputStream;)V
-HSPLcom/android/server/appop/DiscreteRegistry$DiscreteOps;-><init>(Lcom/android/server/appop/DiscreteRegistry;I)V
-PLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->addDiscreteAccess(IILjava/lang/String;Ljava/lang/String;IIJJII)V
-HPLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->clearHistory(ILjava/lang/String;)V
+HSPLcom/android/server/appop/DiscreteRegistry$DiscreteOps;-><init>(I)V
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->addDiscreteAccess(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIJJII)V+]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->getOrCreateDiscreteUidOps(I)Lcom/android/server/appop/DiscreteRegistry$DiscreteUidOps;
-PLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->isEmpty()Z
-HPLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->merge(Lcom/android/server/appop/DiscreteRegistry$DiscreteOps;)V
-HPLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->readFromFile(Ljava/io/File;J)V
-HPLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->writeToStream(Ljava/io/FileOutputStream;)V
-HPLcom/android/server/appop/DiscreteRegistry$DiscretePackageOps;-><init>(Lcom/android/server/appop/DiscreteRegistry;)V
-PLcom/android/server/appop/DiscreteRegistry$DiscretePackageOps;->addDiscreteAccess(ILjava/lang/String;IIJJII)V
-HPLcom/android/server/appop/DiscreteRegistry$DiscretePackageOps;->deserialize(Lcom/android/modules/utils/TypedXmlPullParser;J)V
HPLcom/android/server/appop/DiscreteRegistry$DiscretePackageOps;->getOrCreateDiscreteOp(I)Lcom/android/server/appop/DiscreteRegistry$DiscreteOp;
-HPLcom/android/server/appop/DiscreteRegistry$DiscretePackageOps;->merge(Lcom/android/server/appop/DiscreteRegistry$DiscretePackageOps;)V
-HPLcom/android/server/appop/DiscreteRegistry$DiscretePackageOps;->serialize(Lcom/android/modules/utils/TypedXmlSerializer;)V
-HPLcom/android/server/appop/DiscreteRegistry$DiscreteUidOps;-><init>(Lcom/android/server/appop/DiscreteRegistry;)V
-PLcom/android/server/appop/DiscreteRegistry$DiscreteUidOps;->addDiscreteAccess(ILjava/lang/String;Ljava/lang/String;IIJJII)V
-HPLcom/android/server/appop/DiscreteRegistry$DiscreteUidOps;->deserialize(Lcom/android/modules/utils/TypedXmlPullParser;J)V
HPLcom/android/server/appop/DiscreteRegistry$DiscreteUidOps;->getOrCreateDiscretePackageOps(Ljava/lang/String;)Lcom/android/server/appop/DiscreteRegistry$DiscretePackageOps;
-HPLcom/android/server/appop/DiscreteRegistry$DiscreteUidOps;->merge(Lcom/android/server/appop/DiscreteRegistry$DiscreteUidOps;)V
-HPLcom/android/server/appop/DiscreteRegistry$DiscreteUidOps;->serialize(Lcom/android/modules/utils/TypedXmlSerializer;)V
-HPLcom/android/server/appop/DiscreteRegistry;->-$$Nest$smstableListMerge(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
+PLcom/android/server/appop/DiscreteRegistry;->-$$Nest$smdiscretizeDuration(J)J
HSPLcom/android/server/appop/DiscreteRegistry;-><clinit>()V
-HSPLcom/android/server/appop/DiscreteRegistry;-><init>(Ljava/lang/Object;)V
-HPLcom/android/server/appop/DiscreteRegistry;->clearHistory()V
-HPLcom/android/server/appop/DiscreteRegistry;->clearHistory(ILjava/lang/String;)V
-HPLcom/android/server/appop/DiscreteRegistry;->clearOnDiskHistoryLocked()V
-HPLcom/android/server/appop/DiscreteRegistry;->createDiscreteAccessDir()V
-HSPLcom/android/server/appop/DiscreteRegistry;->createDiscreteAccessDirLocked()V
+HSPLcom/android/server/appop/DiscreteRegistry;-><init>(Lcom/android/server/appop/AppOpsService;)V
PLcom/android/server/appop/DiscreteRegistry;->deleteOldDiscreteHistoryFilesLocked()V
-HPLcom/android/server/appop/DiscreteRegistry;->getAllDiscreteOps()Lcom/android/server/appop/DiscreteRegistry$DiscreteOps;
-HPLcom/android/server/appop/DiscreteRegistry;->isDiscreteOp(II)Z
PLcom/android/server/appop/DiscreteRegistry;->parseOpsList(Ljava/lang/String;)[I
-HPLcom/android/server/appop/DiscreteRegistry;->persistDiscreteOpsLocked(Lcom/android/server/appop/DiscreteRegistry$DiscreteOps;)V
-HPLcom/android/server/appop/DiscreteRegistry;->readDiscreteOpsFromDisk(Lcom/android/server/appop/DiscreteRegistry$DiscreteOps;)V
+PLcom/android/server/appop/DiscreteRegistry;->persistDiscreteOpsLocked(Lcom/android/server/appop/DiscreteRegistry$DiscreteOps;)V
HSPLcom/android/server/appop/DiscreteRegistry;->readLargestChainIdFromDiskLocked()I
-HPLcom/android/server/appop/DiscreteRegistry;->recordDiscreteAccess(ILjava/lang/String;ILjava/lang/String;IIJJII)V
+HPLcom/android/server/appop/DiscreteRegistry;->recordDiscreteAccess(ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;IIJJIII)V
PLcom/android/server/appop/DiscreteRegistry;->setDiscreteHistoryParameters(Landroid/provider/DeviceConfig$Properties;)V
-HPLcom/android/server/appop/DiscreteRegistry;->stableListMerge(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
-PLcom/android/server/appop/DiscreteRegistry;->systemReady()V
PLcom/android/server/appop/DiscreteRegistry;->writeAndClearAccessHistory()V
+PLcom/android/server/appop/HistoricalRegistry$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
PLcom/android/server/appop/HistoricalRegistry$1;-><init>(Lcom/android/server/appop/HistoricalRegistry;Landroid/os/Handler;Landroid/content/ContentResolver;)V
-PLcom/android/server/appop/HistoricalRegistry$Persistence;->-$$Nest$mcollectHistoricalOpsDLocked(Lcom/android/server/appop/HistoricalRegistry$Persistence;Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI)V
PLcom/android/server/appop/HistoricalRegistry$Persistence;-><clinit>()V
PLcom/android/server/appop/HistoricalRegistry$Persistence;-><init>(JJ)V
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->clearHistoryDLocked()V
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->clearHistoryDLocked(ILjava/lang/String;)V
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->collectHistoricalOpsBaseDLocked(ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI)Ljava/util/LinkedList;
-PLcom/android/server/appop/HistoricalRegistry$Persistence;->collectHistoricalOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI)V
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->collectHistoricalOpsRecursiveDLocked(Ljava/io/File;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI[JLjava/util/LinkedList;ILjava/util/Set;)Ljava/util/LinkedList;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->computeGlobalIntervalBeginMillis(I)J
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->generateFile(Ljava/io/File;I)Ljava/io/File;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->getHistoricalFileNames(Ljava/io/File;)Ljava/util/Set;
+PLcom/android/server/appop/HistoricalRegistry$Persistence;->clearHistoryDLocked$1()V
+PLcom/android/server/appop/HistoricalRegistry$Persistence;->collectHistoricalOpsBaseDLocked(ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI)Ljava/util/LinkedList;
+PLcom/android/server/appop/HistoricalRegistry$Persistence;->collectHistoricalOpsRecursiveDLocked(Ljava/io/File;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI[JILjava/util/Set;)Ljava/util/LinkedList;
+PLcom/android/server/appop/HistoricalRegistry$Persistence;->generateFile(Ljava/io/File;I)Ljava/io/File;
+PLcom/android/server/appop/HistoricalRegistry$Persistence;->getHistoricalFileNames(Ljava/io/File;)Ljava/util/Set;
PLcom/android/server/appop/HistoricalRegistry$Persistence;->getLastPersistTimeMillisDLocked()J
HPLcom/android/server/appop/HistoricalRegistry$Persistence;->handlePersistHistoricalOpsRecursiveDLocked(Ljava/io/File;Ljava/io/File;Ljava/util/List;Ljava/util/Set;I)V
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->normalizeSnapshotForSlotDuration(Ljava/util/List;J)V
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->persistHistoricalOpsDLocked(Ljava/util/List;)V
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalAttributionOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlPullParser;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalOpsLocked(Ljava/io/File;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI[J)Ljava/util/List;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalOpsLocked(Ljava/io/File;JJILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI[JILjava/util/Set;)Ljava/util/List;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalPackageOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalUidOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;Lcom/android/modules/utils/TypedXmlPullParser;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoryDLocked()Ljava/util/List;
-PLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoryRawDLocked()Ljava/util/List;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readStateDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Ljava/lang/String;ILcom/android/modules/utils/TypedXmlPullParser;ID)Landroid/app/AppOpsManager$HistoricalOps;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readeHistoricalOpsDLocked(Lcom/android/modules/utils/TypedXmlPullParser;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI[J)Landroid/app/AppOpsManager$HistoricalOps;
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalAttributionOpsDLocked(Landroid/app/AppOpsManager$AttributedHistoricalOps;Lcom/android/modules/utils/TypedXmlSerializer;)V
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOp;Lcom/android/modules/utils/TypedXmlSerializer;)V
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOps;Lcom/android/modules/utils/TypedXmlSerializer;)V
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalOpsDLocked(Ljava/util/List;JLjava/io/File;)V
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalPackageOpsDLocked(Landroid/app/AppOpsManager$HistoricalPackageOps;Lcom/android/modules/utils/TypedXmlSerializer;)V
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalUidOpsDLocked(Landroid/app/AppOpsManager$HistoricalUidOps;Lcom/android/modules/utils/TypedXmlSerializer;)V
-HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeStateOnLocked(Landroid/app/AppOpsManager$HistoricalOp;JLcom/android/modules/utils/TypedXmlSerializer;)V
+PLcom/android/server/appop/HistoricalRegistry$Persistence;->persistHistoricalOpsDLocked(Ljava/util/List;)V
+PLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalOpsLocked(Ljava/io/File;JJILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI[JILjava/util/Set;)Ljava/util/List;
+PLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoryDLocked()Ljava/util/List;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readeHistoricalOpsDLocked(Lcom/android/modules/utils/TypedXmlPullParser;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI[J)Landroid/app/AppOpsManager$HistoricalOps;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOps;Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
HSPLcom/android/server/appop/HistoricalRegistry;-><clinit>()V
-HSPLcom/android/server/appop/HistoricalRegistry;-><init>(Ljava/lang/Object;)V
-HPLcom/android/server/appop/HistoricalRegistry;->clearHistory(ILjava/lang/String;)V
-PLcom/android/server/appop/HistoricalRegistry;->getHistoricalOps(ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IIJJI[Ljava/lang/String;Landroid/os/RemoteCallback;)V
-HPLcom/android/server/appop/HistoricalRegistry;->getUpdatedPendingHistoricalOpsMLocked(J)Landroid/app/AppOpsManager$HistoricalOps;
-HPLcom/android/server/appop/HistoricalRegistry;->increaseOpAccessDuration(IILjava/lang/String;Ljava/lang/String;IIJJII)V
-HPLcom/android/server/appop/HistoricalRegistry;->incrementOpAccessedCount(IILjava/lang/String;Ljava/lang/String;IIJII)V
-HPLcom/android/server/appop/HistoricalRegistry;->incrementOpRejected(IILjava/lang/String;Ljava/lang/String;II)V
-HPLcom/android/server/appop/HistoricalRegistry;->isPersistenceInitializedMLocked()Z
+HSPLcom/android/server/appop/HistoricalRegistry;-><init>(Lcom/android/server/appop/AppOpsService;)V
+PLcom/android/server/appop/HistoricalRegistry;->clearHistoricalRegistry()V
+PLcom/android/server/appop/HistoricalRegistry;->clearHistoryOnDiskDLocked()V
+HPLcom/android/server/appop/HistoricalRegistry;->getUpdatedPendingHistoricalOpsMLocked(J)Landroid/app/AppOpsManager$HistoricalOps;+]Ljava/util/LinkedList;Ljava/util/LinkedList;
+HPLcom/android/server/appop/HistoricalRegistry;->incrementOpAccessedCount(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIJIIII)V
+PLcom/android/server/appop/HistoricalRegistry;->isPersistenceInitializedMLocked()Z
+PLcom/android/server/appop/HistoricalRegistry;->offsetHistory(J)V
+PLcom/android/server/appop/HistoricalRegistry;->persistPendingHistory()V
PLcom/android/server/appop/HistoricalRegistry;->persistPendingHistory(Ljava/util/List;)V
PLcom/android/server/appop/HistoricalRegistry;->systemReady(Landroid/content/ContentResolver;)V
PLcom/android/server/appop/HistoricalRegistry;->updateParametersFromSetting(Landroid/content/ContentResolver;)V
-PLcom/android/server/appop/HistoricalRegistry;->writeAndClearDiscreteHistory()V
-HPLcom/android/server/appop/OnOpModeChangedListener;-><init>(IIIII)V
-PLcom/android/server/appop/OnOpModeChangedListener;->getCallingPid()I
-PLcom/android/server/appop/OnOpModeChangedListener;->getCallingUid()I
-PLcom/android/server/appop/OnOpModeChangedListener;->getFlags()I
-PLcom/android/server/appop/OnOpModeChangedListener;->getWatchedOpCode()I
-PLcom/android/server/appop/OnOpModeChangedListener;->getWatchingUid()I
-HPLcom/android/server/appop/OnOpModeChangedListener;->isWatchingUid(I)Z
-PLcom/android/server/attention/AttentionManagerService;->getServiceConfigPackage(Landroid/content/Context;)Ljava/lang/String;
-PLcom/android/server/attention/AttentionManagerService;->isServiceConfigured(Landroid/content/Context;)Z
-PLcom/android/server/audio/AdiDeviceState;->getPeristedMaxSize()I
+PLcom/android/server/audio/AdiDeviceState;-><init>(IILjava/lang/String;)V
+PLcom/android/server/audio/AdiDeviceState;->getAudioDeviceAttributes()Landroid/media/AudioDeviceAttributes;
+PLcom/android/server/audio/AdiDeviceState;->getAudioDeviceCategory()I
+PLcom/android/server/audio/AdiDeviceState;->getDeviceAddress()Ljava/lang/String;
+PLcom/android/server/audio/AdiDeviceState;->getDeviceType()I
+PLcom/android/server/audio/AdiDeviceState;->getInternalDeviceType()I
+PLcom/android/server/audio/AdiDeviceState;->setAudioDeviceCategory(I)V
+PLcom/android/server/audio/AdiDeviceState;->setHasHeadTracker(Z)V
+PLcom/android/server/audio/AdiDeviceState;->setHeadTrackerEnabled(Z)V
+PLcom/android/server/audio/AdiDeviceState;->setSAEnabled(Z)V
+PLcom/android/server/audio/AdiDeviceState;->toPersistableString()Ljava/lang/String;
+PLcom/android/server/audio/AdiDeviceState;->toString()Ljava/lang/String;
+PLcom/android/server/audio/AdiDeviceState;->updateAudioDeviceCategory()Z
+PLcom/android/server/audio/AudioDeviceBroker$$ExternalSyntheticLambda0;-><init>(Ljava/io/PrintWriter;)V
+PLcom/android/server/audio/AudioDeviceBroker$$ExternalSyntheticLambda1;-><init>(I)V
+PLcom/android/server/audio/AudioDeviceBroker$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
PLcom/android/server/audio/AudioDeviceBroker$AudioModeInfo;-><init>(III)V
+PLcom/android/server/audio/AudioDeviceBroker$AudioModeInfo;->toString()Ljava/lang/String;
PLcom/android/server/audio/AudioDeviceBroker$BrokerHandler;-><init>(Lcom/android/server/audio/AudioDeviceBroker;)V
-PLcom/android/server/audio/AudioDeviceBroker$BrokerHandler;-><init>(Lcom/android/server/audio/AudioDeviceBroker;Lcom/android/server/audio/AudioDeviceBroker$BrokerHandler-IA;)V
HPLcom/android/server/audio/AudioDeviceBroker$BrokerHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/audio/AudioDeviceBroker$BrokerThread;-><init>(Lcom/android/server/audio/AudioDeviceBroker;)V
PLcom/android/server/audio/AudioDeviceBroker$BrokerThread;->run()V
-PLcom/android/server/audio/AudioDeviceBroker;->-$$Nest$fgetmBtHelper(Lcom/android/server/audio/AudioDeviceBroker;)Lcom/android/server/audio/BtHelper;
-PLcom/android/server/audio/AudioDeviceBroker;->-$$Nest$fgetmDeviceStateLock(Lcom/android/server/audio/AudioDeviceBroker;)Ljava/lang/Object;
-PLcom/android/server/audio/AudioDeviceBroker;->-$$Nest$fputmBrokerHandler(Lcom/android/server/audio/AudioDeviceBroker;Lcom/android/server/audio/AudioDeviceBroker$BrokerHandler;)V
-PLcom/android/server/audio/AudioDeviceBroker;->-$$Nest$monSetForceUse(Lcom/android/server/audio/AudioDeviceBroker;IIZLjava/lang/String;)V
-PLcom/android/server/audio/AudioDeviceBroker;->-$$Nest$monUpdateCommunicationRouteClient(Lcom/android/server/audio/AudioDeviceBroker;ZLjava/lang/String;)V
-PLcom/android/server/audio/AudioDeviceBroker;->-$$Nest$sfgetMESSAGES_MUTE_MUSIC()Ljava/util/Set;
-PLcom/android/server/audio/AudioDeviceBroker;->-$$Nest$smisMessageHandledUnderWakelock(I)Z
+PLcom/android/server/audio/AudioDeviceBroker$BtDeviceChangedData;-><init>(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothDevice;Landroid/media/BluetoothProfileConnectionInfo;Ljava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceBroker$BtDeviceInfo;-><init>(Lcom/android/server/audio/AudioDeviceBroker$BtDeviceChangedData;Landroid/bluetooth/BluetoothDevice;II)V
+PLcom/android/server/audio/AudioDeviceBroker$BtDeviceInfo;->toString()Ljava/lang/String;
+PLcom/android/server/audio/AudioDeviceBroker$CommunicationDeviceInfo;-><init>(Landroid/os/IBinder;Landroid/content/AttributionSource;Landroid/media/AudioDeviceAttributes;ZILjava/lang/String;Z)V
+PLcom/android/server/audio/AudioDeviceBroker$CommunicationRouteClient;-><init>(Lcom/android/server/audio/AudioDeviceBroker;Landroid/os/IBinder;Landroid/content/AttributionSource;Landroid/media/AudioDeviceAttributes;Z)V
+PLcom/android/server/audio/AudioDeviceBroker$CommunicationRouteClient;->isActive()Z
+PLcom/android/server/audio/AudioDeviceBroker$UpdateCommRouteClientInfo;-><init>(Landroid/content/AttributionSource;Ljava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceBroker;->-$$Nest$monReceiveBtEvent(Lcom/android/server/audio/AudioDeviceBroker;Landroid/content/Intent;)V
+PLcom/android/server/audio/AudioDeviceBroker;->-$$Nest$monUpdateCommunicationRouteClient(Lcom/android/server/audio/AudioDeviceBroker;Landroid/content/AttributionSource;Ljava/lang/String;)V
PLcom/android/server/audio/AudioDeviceBroker;-><clinit>()V
PLcom/android/server/audio/AudioDeviceBroker;-><init>(Landroid/content/Context;Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioSystemAdapter;)V
-PLcom/android/server/audio/AudioDeviceBroker;->clearA2dpSuspended(Z)V
-PLcom/android/server/audio/AudioDeviceBroker;->clearLeAudioSuspended(Z)V
-PLcom/android/server/audio/AudioDeviceBroker;->communnicationDeviceHaCompatOn()Z
-PLcom/android/server/audio/AudioDeviceBroker;->communnicationDeviceLeAudioCompatOn()Z
-PLcom/android/server/audio/AudioDeviceBroker;->dispatchCommunicationDevice()V
+PLcom/android/server/audio/AudioDeviceBroker;->addCommunicationRouteClient(Landroid/os/IBinder;Landroid/content/AttributionSource;Landroid/media/AudioDeviceAttributes;Z)Lcom/android/server/audio/AudioDeviceBroker$CommunicationRouteClient;
+PLcom/android/server/audio/AudioDeviceBroker;->bluetoothScoRequestOwnerAttributionSource()Landroid/content/AttributionSource;
+PLcom/android/server/audio/AudioDeviceBroker;->btMediaMetricRecord(Landroid/bluetooth/BluetoothDevice;Ljava/lang/String;Lcom/android/server/audio/AudioDeviceBroker$BtDeviceChangedData;)V
+PLcom/android/server/audio/AudioDeviceBroker;->checkMessagesMuteMusic(I)V
+PLcom/android/server/audio/AudioDeviceBroker;->createBtDeviceInfo(Lcom/android/server/audio/AudioDeviceBroker$BtDeviceChangedData;Landroid/bluetooth/BluetoothDevice;I)Lcom/android/server/audio/AudioDeviceBroker$BtDeviceInfo;
+PLcom/android/server/audio/AudioDeviceBroker;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/audio/AudioDeviceBroker;->getAvailableCommunicationDevices()Ljava/util/List;
+PLcom/android/server/audio/AudioDeviceBroker;->getCommunicationDevice()Landroid/media/AudioDeviceInfo;
PLcom/android/server/audio/AudioDeviceBroker;->getCommunicationDeviceInt()Landroid/media/AudioDeviceInfo;
-PLcom/android/server/audio/AudioDeviceBroker;->getContext()Landroid/content/Context;
-PLcom/android/server/audio/AudioDeviceBroker;->getDefaultCommunicationDevice()Landroid/media/AudioDeviceAttributes;
+PLcom/android/server/audio/AudioDeviceBroker;->getCommunicationRouteClientForUid(I)Lcom/android/server/audio/AudioDeviceBroker$CommunicationRouteClient;
PLcom/android/server/audio/AudioDeviceBroker;->getImmutableDeviceInventory()Ljava/util/Collection;
-PLcom/android/server/audio/AudioDeviceBroker;->handleCancelFailureToConnectToBtHeadsetService()V
-PLcom/android/server/audio/AudioDeviceBroker;->handleFailureToConnectToBtHeadsetService(I)V
-PLcom/android/server/audio/AudioDeviceBroker;->init()V
-PLcom/android/server/audio/AudioDeviceBroker;->initAudioHalBluetoothState()V
+PLcom/android/server/audio/AudioDeviceBroker;->handleDeviceConnection(Landroid/media/AudioDeviceAttributes;ZLandroid/bluetooth/BluetoothDevice;)Z
PLcom/android/server/audio/AudioDeviceBroker;->initRoutingStrategyIds()V
-PLcom/android/server/audio/AudioDeviceBroker;->isBluetoothA2dpOn()Z
PLcom/android/server/audio/AudioDeviceBroker;->isBluetoothScoRequested()Z
PLcom/android/server/audio/AudioDeviceBroker;->isDeviceActiveForCommunication(I)Z
-PLcom/android/server/audio/AudioDeviceBroker;->isDeviceRequestedForCommunication(I)Z
+PLcom/android/server/audio/AudioDeviceBroker;->isDeviceOnForCommunication(I)Z
PLcom/android/server/audio/AudioDeviceBroker;->isMessageHandledUnderWakelock(I)Z
-PLcom/android/server/audio/AudioDeviceBroker;->isSpeakerphoneActive()Z
PLcom/android/server/audio/AudioDeviceBroker;->isValidCommunicationDevice(Landroid/media/AudioDeviceInfo;)Z
-PLcom/android/server/audio/AudioDeviceBroker;->isValidCommunicationDeviceType(I)Z
-PLcom/android/server/audio/AudioDeviceBroker;->onReadAudioDeviceSettings()V
-PLcom/android/server/audio/AudioDeviceBroker;->onSetForceUse(IIZLjava/lang/String;)V
-PLcom/android/server/audio/AudioDeviceBroker;->onSystemReady()V
-PLcom/android/server/audio/AudioDeviceBroker;->onUpdateCommunicationRouteClient(ZLjava/lang/String;)V
-PLcom/android/server/audio/AudioDeviceBroker;->onUpdatePhoneStrategyDevice(Landroid/media/AudioDeviceAttributes;)V
-PLcom/android/server/audio/AudioDeviceBroker;->postBroadcastScoConnectionState(I)V
-PLcom/android/server/audio/AudioDeviceBroker;->postBtProfileConnected(ILandroid/bluetooth/BluetoothProfile;)V
-PLcom/android/server/audio/AudioDeviceBroker;->postUpdateCommunicationRouteClient(ZLjava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceBroker;->messageMutesMusic(I)Z
+PLcom/android/server/audio/AudioDeviceBroker;->onPersistAudioDeviceSettings()V
+PLcom/android/server/audio/AudioDeviceBroker;->onSetCommunicationDeviceForClient(Lcom/android/server/audio/AudioDeviceBroker$CommunicationDeviceInfo;)V
+PLcom/android/server/audio/AudioDeviceBroker;->onSetForceUse(ILjava/lang/String;IZ)V
+PLcom/android/server/audio/AudioDeviceBroker;->postCheckCommunicationDeviceRemoval(Landroid/media/AudioDeviceAttributes;)V
+PLcom/android/server/audio/AudioDeviceBroker;->postPersistAudioDeviceSettings()V
+PLcom/android/server/audio/AudioDeviceBroker;->postUpdatedAdiDeviceState(Lcom/android/server/audio/AdiDeviceState;Z)V
PLcom/android/server/audio/AudioDeviceBroker;->preferredCommunicationDevice()Landroid/media/AudioDeviceAttributes;
+PLcom/android/server/audio/AudioDeviceBroker;->queueOnBluetoothActiveDeviceChanged(Lcom/android/server/audio/AudioDeviceBroker$BtDeviceChangedData;)V
PLcom/android/server/audio/AudioDeviceBroker;->readDeviceSettings()Ljava/lang/String;
PLcom/android/server/audio/AudioDeviceBroker;->reapplyAudioHalBluetoothState()V
-PLcom/android/server/audio/AudioDeviceBroker;->requestedCommunicationDevice()Landroid/media/AudioDeviceAttributes;
-PLcom/android/server/audio/AudioDeviceBroker;->sendIILMsg(IIIILjava/lang/Object;I)V
-PLcom/android/server/audio/AudioDeviceBroker;->sendIILMsgNoDelay(IIIILjava/lang/Object;)V
-PLcom/android/server/audio/AudioDeviceBroker;->sendILMsgNoDelay(IIILjava/lang/Object;)V
-PLcom/android/server/audio/AudioDeviceBroker;->sendIMsgNoDelay(III)V
-PLcom/android/server/audio/AudioDeviceBroker;->sendMsg(III)V
-PLcom/android/server/audio/AudioDeviceBroker;->setBluetoothScoOn(ZLjava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceBroker;->removeCommunicationRouteClient(Landroid/os/IBinder;)Lcom/android/server/audio/AudioDeviceBroker$CommunicationRouteClient;
+HPLcom/android/server/audio/AudioDeviceBroker;->sendIILMsg(IIIILjava/lang/Object;I)V
+PLcom/android/server/audio/AudioDeviceBroker;->sendLMsgNoDelay(IILjava/lang/Object;)V
+PLcom/android/server/audio/AudioDeviceBroker;->setAvrcpAbsoluteVolumeSupported(Z)V
+PLcom/android/server/audio/AudioDeviceBroker;->setBluetoothA2dpOnInt(Ljava/lang/String;ZZ)V
+PLcom/android/server/audio/AudioDeviceBroker;->setBluetoothScoOn(Ljava/lang/String;Z)V
+PLcom/android/server/audio/AudioDeviceBroker;->setCommunicationDevice(Landroid/os/IBinder;Landroid/content/AttributionSource;Landroid/media/AudioDeviceInfo;ZLjava/lang/String;)Z
+PLcom/android/server/audio/AudioDeviceBroker;->setCommunicationRouteForClient(Landroid/os/IBinder;Landroid/content/AttributionSource;Landroid/media/AudioDeviceAttributes;IZLjava/lang/String;)V
PLcom/android/server/audio/AudioDeviceBroker;->setForceUse_Async(IILjava/lang/String;)V
-PLcom/android/server/audio/AudioDeviceBroker;->setupMessaging(Landroid/content/Context;)V
-PLcom/android/server/audio/AudioDeviceBroker;->startWatchingRoutes(Landroid/media/IAudioRoutesObserver;)Landroid/media/AudioRoutesInfo;
PLcom/android/server/audio/AudioDeviceBroker;->topCommunicationRouteClient()Lcom/android/server/audio/AudioDeviceBroker$CommunicationRouteClient;
PLcom/android/server/audio/AudioDeviceBroker;->updateActiveCommunicationDevice()V
PLcom/android/server/audio/AudioDeviceBroker;->updateAudioHalBluetoothState()V
-PLcom/android/server/audio/AudioDeviceBroker;->updateCommunicationRoute(Ljava/lang/String;)V
+HPLcom/android/server/audio/AudioDeviceBroker;->updateCommunicationRoute(Ljava/lang/String;)V
PLcom/android/server/audio/AudioDeviceBroker;->updateCommunicationRouteClientsActivity(Ljava/util/List;Ljava/util/List;)V
-PLcom/android/server/audio/AudioDeviceBroker;->waitForBrokerHandlerCreation()V
-PLcom/android/server/audio/AudioDeviceInventory$$ExternalSyntheticLambda36;-><init>(Lcom/android/server/audio/AudioDeviceInventory;)V
-PLcom/android/server/audio/AudioDeviceInventory$$ExternalSyntheticLambda37;-><init>(Lcom/android/server/audio/AudioDeviceInventory;)V
-PLcom/android/server/audio/AudioDeviceInventory$$ExternalSyntheticLambda38;-><init>(Lcom/android/server/audio/AudioDeviceInventory;)V
-PLcom/android/server/audio/AudioDeviceInventory$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/audio/AudioDeviceInventory;)V
+PLcom/android/server/audio/AudioDeviceInventory$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/audio/AudioDeviceInventory;I)V
+PLcom/android/server/audio/AudioDeviceInventory$$ExternalSyntheticLambda0;->deviceRoleAction(IILjava/util/List;)I
+PLcom/android/server/audio/AudioDeviceInventory$$ExternalSyntheticLambda10;-><init>(ILjava/io/PrintWriter;)V
+PLcom/android/server/audio/AudioDeviceInventory$$ExternalSyntheticLambda31;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/audio/AudioDeviceInventory$$ExternalSyntheticLambda35;-><init>(Lcom/android/server/audio/AudioDeviceInventory;I)V
+PLcom/android/server/audio/AudioDeviceInventory$$ExternalSyntheticLambda5;-><init>(Ljava/util/concurrent/atomic/AtomicBoolean;)V
+PLcom/android/server/audio/AudioDeviceInventory$$ExternalSyntheticLambda5;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/audio/AudioDeviceInventory$$ExternalSyntheticLambda9;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/audio/AudioDeviceInventory$$ExternalSyntheticLambda9;->accept(Ljava/lang/Object;)V
PLcom/android/server/audio/AudioDeviceInventory$1;-><init>(Lcom/android/server/audio/AudioDeviceInventory;)V
+PLcom/android/server/audio/AudioDeviceInventory$1;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/audio/AudioDeviceInventory$1;->record(Ljava/lang/String;ZLcom/android/server/audio/AudioDeviceInventory$DeviceInfo;)V
+PLcom/android/server/audio/AudioDeviceInventory$1;->remove(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/audio/AudioDeviceInventory$DeviceInfo;-><init>(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceInventory$DeviceInfo;-><init>(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceInventory$DeviceInfo;-><init>(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceInventory$DeviceInfo;-><init>(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/audio/AudioDeviceInventory$DeviceInfo;->makeDeviceListKey(ILjava/lang/String;)Ljava/lang/String;
PLcom/android/server/audio/AudioDeviceInventory;-><clinit>()V
PLcom/android/server/audio/AudioDeviceInventory;-><init>(Lcom/android/server/audio/AudioDeviceBroker;)V
-PLcom/android/server/audio/AudioDeviceInventory;-><init>(Lcom/android/server/audio/AudioDeviceBroker;Lcom/android/server/audio/AudioSystemAdapter;)V
-PLcom/android/server/audio/AudioDeviceInventory;->applyConnectedDevicesRoles()V
+PLcom/android/server/audio/AudioDeviceInventory;->addAudioDeviceInInventoryIfNeeded(ZILjava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceInventory;->addOrUpdateAudioDeviceCategoryInInventory(Lcom/android/server/audio/AdiDeviceState;Z)V
+PLcom/android/server/audio/AudioDeviceInventory;->addOrUpdateDeviceSAStateInInventory(Lcom/android/server/audio/AdiDeviceState;Z)V
PLcom/android/server/audio/AudioDeviceInventory;->applyConnectedDevicesRoles_l()V
-PLcom/android/server/audio/AudioDeviceInventory;->clearDevicesRole(Landroid/util/ArrayMap;Lcom/android/server/audio/AudioDeviceInventory$AudioSystemInterface;II)I
-PLcom/android/server/audio/AudioDeviceInventory;->clearDevicesRoleForStrategy(IIZ)I
-PLcom/android/server/audio/AudioDeviceInventory;->getImmutableDeviceInventory()Ljava/util/Collection;
+PLcom/android/server/audio/AudioDeviceInventory;->checkDeviceInventorySize_l()V
+PLcom/android/server/audio/AudioDeviceInventory;->checkSendBecomingNoisyIntentInt(II)I
+PLcom/android/server/audio/AudioDeviceInventory;->clearDevicesRoleForStrategy(IZ)I
+PLcom/android/server/audio/AudioDeviceInventory;->findBtDeviceStateForAddress(Ljava/lang/String;I)Lcom/android/server/audio/AdiDeviceState;
+HPLcom/android/server/audio/AudioDeviceInventory;->handleDeviceConnection(Landroid/media/AudioDeviceAttributes;ZZLandroid/bluetooth/BluetoothDevice;)Z
+PLcom/android/server/audio/AudioDeviceInventory;->makeA2dpDeviceAvailable(Lcom/android/server/audio/AudioDeviceBroker$BtDeviceInfo;I)V
+PLcom/android/server/audio/AudioDeviceInventory;->makeA2dpDeviceUnavailableNow(ILjava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceInventory;->onReportNewRoutes()V
+PLcom/android/server/audio/AudioDeviceInventory;->onSetBtActiveDevice(Lcom/android/server/audio/AudioDeviceBroker$BtDeviceInfo;II)V
+PLcom/android/server/audio/AudioDeviceInventory;->onSynchronizeAdiDeviceInInventory_l(Lcom/android/server/audio/AdiDeviceState;)V
+PLcom/android/server/audio/AudioDeviceInventory;->onSynchronizeAdiDevicesInInventory(Lcom/android/server/audio/AdiDeviceState;)V
+PLcom/android/server/audio/AudioDeviceInventory;->purgeDevicesRoles_l()V
+PLcom/android/server/audio/AudioDeviceInventory;->purgeRoles(Landroid/util/ArrayMap;Lcom/android/server/audio/AudioDeviceInventory$$ExternalSyntheticLambda0;)V
PLcom/android/server/audio/AudioDeviceInventory;->reapplyExternalDevicesRoles()V
-PLcom/android/server/audio/AudioDeviceInventory;->removePreferredDevicesForStrategyInt(I)I
-PLcom/android/server/audio/AudioDeviceInventory;->startWatchingRoutes(Landroid/media/IAudioRoutesObserver;)Landroid/media/AudioRoutesInfo;
-PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda20;-><init>()V
-PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda20;->test(Ljava/lang/Object;)Z
-PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/audio/AudioService;)V
-PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda6;->accept(Ljava/lang/Object;)V
-PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/audio/AudioService;)V
-PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda8;-><init>()V
-PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda8;->applyAsInt(Ljava/lang/Object;)I
+PLcom/android/server/audio/AudioDeviceInventory;->setBluetoothActiveDevice(Lcom/android/server/audio/AudioDeviceBroker$BtDeviceInfo;)V
+PLcom/android/server/audio/AudioDeviceInventory;->setCurrentAudioRouteNameIfPossible(Ljava/lang/String;Z)V
+PLcom/android/server/audio/AudioDeviceInventory;->setDevicesRole(Landroid/util/ArrayMap;Lcom/android/server/audio/AudioDeviceInventory$$ExternalSyntheticLambda0;Lcom/android/server/audio/AudioDeviceInventory$$ExternalSyntheticLambda0;ILjava/util/List;)I
+PLcom/android/server/audio/AudioDeviceInventory;->setDevicesRoleForStrategy(ILjava/util/List;Z)I
+PLcom/android/server/audio/AudioDeviceInventory;->updateBluetoothPreferredModes_l(Landroid/bluetooth/BluetoothDevice;)V
+PLcom/android/server/audio/AudioServerPermissionProvider$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/audio/AudioServerPermissionProvider$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/audio/AudioServerPermissionProvider$$ExternalSyntheticLambda1;-><init>(I)V
+PLcom/android/server/audio/AudioServerPermissionProvider$$ExternalSyntheticLambda1;->get()Ljava/lang/Object;
+PLcom/android/server/audio/AudioServerPermissionProvider;-><clinit>()V
+PLcom/android/server/audio/AudioServerPermissionProvider;-><init>(Ljava/util/Collection;Lcom/android/server/audio/AudioService$$ExternalSyntheticLambda14;Lcom/android/server/audio/AudioService$$ExternalSyntheticLambda15;)V
+HPLcom/android/server/audio/AudioServerPermissionProvider;->getUidsHoldingPerm(I)[I+]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Set;Ljava/util/HashMap$KeySet;
+PLcom/android/server/audio/AudioServerPermissionProvider;->onModifyPackageState(ILjava/lang/String;Z)V
+PLcom/android/server/audio/AudioServerPermissionProvider;->onPermissionStateChanged()V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda10;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda10;->accept(I)V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda13;-><init>(I)V
+HPLcom/android/server/audio/AudioService$$ExternalSyntheticLambda14;->test(Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda15;-><init>(Lcom/android/server/pm/UserManagerInternal;)V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda15;->get()Ljava/lang/Object;
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda16;-><init>(ILjava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda16;->run()V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda17;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda17;->accept(Ljava/lang/Object;)V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda19;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda1;-><init>(I)V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda1;->applyAsInt(Ljava/lang/Object;)I
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda26;-><init>(Lcom/android/server/audio/AudioService;I)V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda26;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda31;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda31;->run()V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda3;-><init>(I)V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda6;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda6;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/audio/AudioService;Z)V
PLcom/android/server/audio/AudioService$1;-><init>(Lcom/android/server/audio/AudioService;)V
PLcom/android/server/audio/AudioService$1;->onError(I)V
PLcom/android/server/audio/AudioService$2;-><init>(Lcom/android/server/audio/AudioService;)V
@@ -8078,771 +6257,898 @@ PLcom/android/server/audio/AudioService$4;-><init>(Lcom/android/server/audio/Aud
PLcom/android/server/audio/AudioService$5;-><init>(Lcom/android/server/audio/AudioService;)V
PLcom/android/server/audio/AudioService$5;->dispatchPlaybackConfigChange(Ljava/util/List;Z)V
PLcom/android/server/audio/AudioService$6;-><init>(Lcom/android/server/audio/AudioService;)V
-PLcom/android/server/audio/AudioService$7;-><init>(Lcom/android/server/audio/AudioService;Landroid/media/IVolumeController;)V
-PLcom/android/server/audio/AudioService$8;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$6;->dispatchRecordingConfigChange(Ljava/util/List;)V
+PLcom/android/server/audio/AudioService$7$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/audio/AudioServerPermissionProvider;ILjava/lang/String;I)V
+PLcom/android/server/audio/AudioService$7$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/audio/AudioService$7;-><init>(Ljava/util/concurrent/Executor;Lcom/android/server/audio/AudioServerPermissionProvider;)V
+PLcom/android/server/audio/AudioService$7;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/audio/AudioService$8;-><init>(Lcom/android/server/audio/AudioService;Landroid/media/IVolumeController;)V
+PLcom/android/server/audio/AudioService$9;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$AsdProxy;-><init>(Lcom/android/server/audio/AudioService;Landroid/media/IAudioServerStateDispatcher;)V
PLcom/android/server/audio/AudioService$AudioHandler;-><init>(Lcom/android/server/audio/AudioService;)V
-HPLcom/android/server/audio/AudioService$AudioHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/audio/AudioService$AudioHandler;->persistVolume(Lcom/android/server/audio/AudioService$VolumeStreamState;I)V
-PLcom/android/server/audio/AudioService$AudioHandler;->setAllVolumes(Lcom/android/server/audio/AudioService$VolumeStreamState;)V
+HPLcom/android/server/audio/AudioService$AudioHandler;->handleMessage$com$android$server$audio$AudioService$AudioHandler(Landroid/os/Message;)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/media/IAudioModeDispatcher;Landroid/media/IAudioModeDispatcher$Stub$Proxy;]Landroid/media/MediaMetrics$Item;Landroid/media/MediaMetrics$Item;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+PLcom/android/server/audio/AudioService$AudioHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/audio/AudioService$AudioPolicyProxy;-><init>(Lcom/android/server/audio/AudioService;Landroid/media/audiopolicy/AudioPolicyConfig;Landroid/media/audiopolicy/IAudioPolicyCallback;ZZZZLandroid/media/projection/IMediaProjection;Landroid/content/AttributionSource;)V
+PLcom/android/server/audio/AudioService$AudioPolicyProxy;->binderDied()V
+PLcom/android/server/audio/AudioService$AudioPolicyProxy;->connectMixes()I
+PLcom/android/server/audio/AudioService$AudioPolicyProxy;->getRegistrationId()Ljava/lang/String;
+PLcom/android/server/audio/AudioService$AudioPolicyProxy;->hasMixAffectingUsage()Z
+PLcom/android/server/audio/AudioService$AudioPolicyProxy;->logFriendlyAttributeDeviceArrayMap(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/String;
+PLcom/android/server/audio/AudioService$AudioPolicyProxy;->release()V
+PLcom/android/server/audio/AudioService$AudioPolicyProxy;->removeMixes(Ljava/util/ArrayList;)I
+PLcom/android/server/audio/AudioService$AudioPolicyProxy;->toLogFriendlyString()Ljava/lang/String;
PLcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;-><init>(Lcom/android/server/audio/AudioService;)V
-PLcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;-><init>(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver-IA;)V
-HPLcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/audio/AudioService$AudioServiceInternal;-><init>(Lcom/android/server/audio/AudioService;)V
-PLcom/android/server/audio/AudioService$AudioServiceInternal;->getRingerModeInternal()I
-HPLcom/android/server/audio/AudioService$AudioServiceInternal;->setAccessibilityServiceUids(Landroid/util/IntArray;)V
+PLcom/android/server/audio/AudioService$AudioServiceInternal;->setAccessibilityServiceUids(Landroid/util/IntArray;)V
PLcom/android/server/audio/AudioService$AudioServiceInternal;->setInputMethodServiceUid(I)V
PLcom/android/server/audio/AudioService$AudioServiceInternal;->setRingerModeDelegate(Landroid/media/AudioManagerInternal$RingerModeDelegate;)V
PLcom/android/server/audio/AudioService$AudioServiceInternal;->setRingerModeInternal(ILjava/lang/String;)V
PLcom/android/server/audio/AudioService$AudioServiceInternal;->updateRingerModeAffectedStreamsInternal()V
PLcom/android/server/audio/AudioService$AudioServiceUserRestrictionsListener;-><init>(Lcom/android/server/audio/AudioService;)V
-PLcom/android/server/audio/AudioService$AudioServiceUserRestrictionsListener;-><init>(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$AudioServiceUserRestrictionsListener-IA;)V
PLcom/android/server/audio/AudioService$AudioServiceUserRestrictionsListener;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
PLcom/android/server/audio/AudioService$AudioSystemThread;-><init>(Lcom/android/server/audio/AudioService;)V
PLcom/android/server/audio/AudioService$AudioSystemThread;->run()V
+PLcom/android/server/audio/AudioService$DeviceVolumeUpdate;-><init>(IIILjava/lang/String;)V
+PLcom/android/server/audio/AudioService$Lifecycle$$ExternalSyntheticLambda0;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;
PLcom/android/server/audio/AudioService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/audio/AudioService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/audio/AudioService$Lifecycle;->onStart()V
PLcom/android/server/audio/AudioService$MyHdmiCecVolumeControlFeatureListener;-><init>(Lcom/android/server/audio/AudioService;)V
-PLcom/android/server/audio/AudioService$MyHdmiCecVolumeControlFeatureListener;-><init>(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$MyHdmiCecVolumeControlFeatureListener-IA;)V
PLcom/android/server/audio/AudioService$MyHdmiControlStatusChangeListenerCallback;-><init>(Lcom/android/server/audio/AudioService;)V
-PLcom/android/server/audio/AudioService$MyHdmiControlStatusChangeListenerCallback;-><init>(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$MyHdmiControlStatusChangeListenerCallback-IA;)V
PLcom/android/server/audio/AudioService$RestorableParameters$1;-><init>(Lcom/android/server/audio/AudioService$RestorableParameters;)V
-PLcom/android/server/audio/AudioService$RestorableParameters;-><init>()V
-PLcom/android/server/audio/AudioService$RestorableParameters;-><init>(Lcom/android/server/audio/AudioService$RestorableParameters-IA;)V
PLcom/android/server/audio/AudioService$RoleObserver;-><init>(Lcom/android/server/audio/AudioService;)V
-PLcom/android/server/audio/AudioService$RoleObserver;->getAssistantRoleHolder()Ljava/lang/String;
+PLcom/android/server/audio/AudioService$RoleObserver;->onRoleHoldersChanged(Ljava/lang/String;Landroid/os/UserHandle;)V
PLcom/android/server/audio/AudioService$RoleObserver;->register()V
+PLcom/android/server/audio/AudioService$SetModeDeathHandler;-><init>(Lcom/android/server/audio/AudioService;Landroid/os/IBinder;IIZLjava/lang/String;I)V
+PLcom/android/server/audio/AudioService$SetModeDeathHandler;->isActive()Z
PLcom/android/server/audio/AudioService$SettingsObserver;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$SettingsObserver;->onChange(Z)V
+PLcom/android/server/audio/AudioService$SettingsObserver;->updateEncodedSurroundOutput()V
+PLcom/android/server/audio/AudioService$UpdateAudioModeInfo;-><init>(IILjava/lang/String;)V
PLcom/android/server/audio/AudioService$VolumeController;-><init>(Lcom/android/server/audio/AudioService;)V
-PLcom/android/server/audio/AudioService$VolumeController;->asBinder()Landroid/os/IBinder;
-PLcom/android/server/audio/AudioService$VolumeController;->binder(Landroid/media/IVolumeController;)Landroid/os/IBinder;
-PLcom/android/server/audio/AudioService$VolumeController;->isSameBinder(Landroid/media/IVolumeController;)Z
-PLcom/android/server/audio/AudioService$VolumeController;->loadSettings(Landroid/content/ContentResolver;)V
-PLcom/android/server/audio/AudioService$VolumeController;->postDismiss()V
-PLcom/android/server/audio/AudioService$VolumeController;->setController(Landroid/media/IVolumeController;)V
-PLcom/android/server/audio/AudioService$VolumeController;->setLayoutDirection(I)V
-HPLcom/android/server/audio/AudioService$VolumeGroupState;-><init>(Lcom/android/server/audio/AudioService;Landroid/media/audiopolicy/AudioVolumeGroup;)V
-PLcom/android/server/audio/AudioService$VolumeGroupState;-><init>(Lcom/android/server/audio/AudioService;Landroid/media/audiopolicy/AudioVolumeGroup;Lcom/android/server/audio/AudioService$VolumeGroupState-IA;)V
-HPLcom/android/server/audio/AudioService$VolumeGroupState;->applyAllVolumes(Z)V
-PLcom/android/server/audio/AudioService$VolumeGroupState;->clearIndexCache()V
-PLcom/android/server/audio/AudioService$VolumeGroupState;->getDeviceForVolume()I
+PLcom/android/server/audio/AudioService$VolumeController;->toString()Ljava/lang/String;
+PLcom/android/server/audio/AudioService$VolumeGroupState;-><init>(Lcom/android/server/audio/AudioService;Landroid/media/audiopolicy/AudioVolumeGroup;)V
+PLcom/android/server/audio/AudioService$VolumeGroupState;->applyAllVolumes(Z)V
PLcom/android/server/audio/AudioService$VolumeGroupState;->getIndex(I)I
-HPLcom/android/server/audio/AudioService$VolumeGroupState;->getLegacyStreamTypes()[I
-PLcom/android/server/audio/AudioService$VolumeGroupState;->getMinIndex()I
-HPLcom/android/server/audio/AudioService$VolumeGroupState;->getSettingNameForDevice(I)Ljava/lang/String;
-HPLcom/android/server/audio/AudioService$VolumeGroupState;->getValidIndex(I)I
-PLcom/android/server/audio/AudioService$VolumeGroupState;->isMusic()Z
-PLcom/android/server/audio/AudioService$VolumeGroupState;->isMutable()Z
-PLcom/android/server/audio/AudioService$VolumeGroupState;->isMuted()Z
-HPLcom/android/server/audio/AudioService$VolumeGroupState;->isValidStream(I)Z
-HPLcom/android/server/audio/AudioService$VolumeGroupState;->isVssMuteBijective(I)Z
+PLcom/android/server/audio/AudioService$VolumeGroupState;->getSettingNameForDevice(I)Ljava/lang/String;
+PLcom/android/server/audio/AudioService$VolumeGroupState;->getValidIndex(I)I
+PLcom/android/server/audio/AudioService$VolumeGroupState;->isVssMuteBijective(I)Z
PLcom/android/server/audio/AudioService$VolumeGroupState;->mute(Z)Z
-PLcom/android/server/audio/AudioService$VolumeGroupState;->name()Ljava/lang/String;
-PLcom/android/server/audio/AudioService$VolumeGroupState;->persistVolumeGroup(I)V
HPLcom/android/server/audio/AudioService$VolumeGroupState;->readSettings()V
-PLcom/android/server/audio/AudioService$VolumeGroupState;->setSettingName(Ljava/lang/String;)V
-HPLcom/android/server/audio/AudioService$VolumeGroupState;->setVolumeIndexInt(III)V
-HPLcom/android/server/audio/AudioService$VolumeGroupState;->updateVolumeIndex(II)V
-PLcom/android/server/audio/AudioService$VolumeStreamState$1;-><init>(Lcom/android/server/audio/AudioService$VolumeStreamState;I)V
-HPLcom/android/server/audio/AudioService$VolumeStreamState$1;->put(II)V
-HPLcom/android/server/audio/AudioService$VolumeStreamState$1;->record(Ljava/lang/String;II)V
-PLcom/android/server/audio/AudioService$VolumeStreamState;->-$$Nest$fgetmIndexMax(Lcom/android/server/audio/AudioService$VolumeStreamState;)I
-PLcom/android/server/audio/AudioService$VolumeStreamState;->-$$Nest$fgetmIndexMin(Lcom/android/server/audio/AudioService$VolumeStreamState;)I
-HPLcom/android/server/audio/AudioService$VolumeStreamState;->-$$Nest$fgetmIsMuted(Lcom/android/server/audio/AudioService$VolumeStreamState;)Z
-HPLcom/android/server/audio/AudioService$VolumeStreamState;->-$$Nest$fgetmStreamType(Lcom/android/server/audio/AudioService$VolumeStreamState;)I
-PLcom/android/server/audio/AudioService$VolumeStreamState;->-$$Nest$mhasValidSettingsName(Lcom/android/server/audio/AudioService$VolumeStreamState;)Z
-HPLcom/android/server/audio/AudioService$VolumeStreamState;-><init>(Lcom/android/server/audio/AudioService;Ljava/lang/String;I)V
-PLcom/android/server/audio/AudioService$VolumeStreamState;-><init>(Lcom/android/server/audio/AudioService;Ljava/lang/String;ILcom/android/server/audio/AudioService$VolumeStreamState-IA;)V
+PLcom/android/server/audio/AudioService$VolumeGroupState;->setVolumeIndexInt(II)V
+PLcom/android/server/audio/AudioService$VolumeGroupState;->updateVolumeIndex(II)V
+PLcom/android/server/audio/AudioService$VolumeStreamState$1;-><init>(Lcom/android/server/audio/AudioService$VolumeStreamState;)V
+PLcom/android/server/audio/AudioService$VolumeStreamState$1;->put(II)V
+HPLcom/android/server/audio/AudioService$VolumeStreamState$1;->record(IILjava/lang/String;)V
+PLcom/android/server/audio/AudioService$VolumeStreamState;-><init>(ILcom/android/server/audio/AudioService;Ljava/lang/String;)V
HPLcom/android/server/audio/AudioService$VolumeStreamState;->applyAllVolumes()V
HPLcom/android/server/audio/AudioService$VolumeStreamState;->applyDeviceVolume_syncVSS(I)V
-HPLcom/android/server/audio/AudioService$VolumeStreamState;->checkFixedVolumeDevices()V
-HPLcom/android/server/audio/AudioService$VolumeStreamState;->getAbsoluteVolumeIndex(I)I
+PLcom/android/server/audio/AudioService$VolumeStreamState;->checkFixedVolumeDevices()V
+PLcom/android/server/audio/AudioService$VolumeStreamState;->doMute()V
+PLcom/android/server/audio/AudioService$VolumeStreamState;->getAbsoluteVolumeIndex(I)I
HPLcom/android/server/audio/AudioService$VolumeStreamState;->getIndex(I)I
-PLcom/android/server/audio/AudioService$VolumeStreamState;->getMaxIndex()I
-PLcom/android/server/audio/AudioService$VolumeStreamState;->getMinIndex()I
HPLcom/android/server/audio/AudioService$VolumeStreamState;->getSettingNameForDevice(I)Ljava/lang/String;
-PLcom/android/server/audio/AudioService$VolumeStreamState;->getStreamType()I
-HPLcom/android/server/audio/AudioService$VolumeStreamState;->getValidIndex(IZ)I
-HPLcom/android/server/audio/AudioService$VolumeStreamState;->hasIndexForDevice(I)Z
-HPLcom/android/server/audio/AudioService$VolumeStreamState;->hasValidSettingsName()Z
-HPLcom/android/server/audio/AudioService$VolumeStreamState;->isFullyMuted()Z
-PLcom/android/server/audio/AudioService$VolumeStreamState;->isMutable()Z
-HPLcom/android/server/audio/AudioService$VolumeStreamState;->observeDevicesForStream_syncVSS(Z)Ljava/util/Set;
-HPLcom/android/server/audio/AudioService$VolumeStreamState;->readSettings()V
-HPLcom/android/server/audio/AudioService$VolumeStreamState;->setAllIndexes(Lcom/android/server/audio/AudioService$VolumeStreamState;Ljava/lang/String;)V
-HPLcom/android/server/audio/AudioService$VolumeStreamState;->setIndex(IILjava/lang/String;Z)Z
+PLcom/android/server/audio/AudioService$VolumeStreamState;->isFullyMuted()Z
+PLcom/android/server/audio/AudioService$VolumeStreamState;->mute(Ljava/lang/String;Z)Z
+PLcom/android/server/audio/AudioService$VolumeStreamState;->mute(Ljava/lang/String;ZZ)Z
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->observeDevicesForStream_syncVSS(Z)Ljava/util/Set;+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Ljava/util/Set;Ljava/util/TreeSet;
+PLcom/android/server/audio/AudioService$VolumeStreamState;->readSettings()V
+PLcom/android/server/audio/AudioService$VolumeStreamState;->setAllIndexes(Lcom/android/server/audio/AudioService$VolumeStreamState;Ljava/lang/String;)V
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->setIndex(ILjava/lang/String;IZ)Z+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HPLcom/android/server/audio/AudioService$VolumeStreamState;->setStreamVolumeIndex(II)V
-PLcom/android/server/audio/AudioService$VolumeStreamState;->setVolumeGroupState(Lcom/android/server/audio/AudioService$VolumeGroupState;)V
-PLcom/android/server/audio/AudioService$VolumeStreamState;->updateNoPermMinIndex(I)V
-HPLcom/android/server/audio/AudioService$VolumeStreamState;->updateVolumeGroupIndex(IZ)V
-PLcom/android/server/audio/AudioService;->$r8$lambda$8YoXBPw5AJRvFMFFUjQwGxGhzQY(Landroid/media/AudioAttributes;)Z
-PLcom/android/server/audio/AudioService;->$r8$lambda$maUm3rQ2PSmFbQzqlmwf8bqyg_g(Lcom/android/server/audio/AudioService;Landroid/media/PlayerBase;)V
-PLcom/android/server/audio/AudioService;->-$$Nest$fgetmAccessibilityServiceUidsLock(Lcom/android/server/audio/AudioService;)Ljava/lang/Object;
-PLcom/android/server/audio/AudioService;->-$$Nest$fgetmAudioEventWakeLock(Lcom/android/server/audio/AudioService;)Landroid/os/PowerManager$WakeLock;
-PLcom/android/server/audio/AudioService;->-$$Nest$fgetmAudioHandler(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioService$AudioHandler;
-HPLcom/android/server/audio/AudioService;->-$$Nest$fgetmAudioSystem(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioSystemAdapter;
-PLcom/android/server/audio/AudioService;->-$$Nest$fgetmCameraSoundForced(Lcom/android/server/audio/AudioService;)Z
-HPLcom/android/server/audio/AudioService;->-$$Nest$fgetmContentResolver(Lcom/android/server/audio/AudioService;)Landroid/content/ContentResolver;
-PLcom/android/server/audio/AudioService;->-$$Nest$fgetmDisplayManager(Lcom/android/server/audio/AudioService;)Landroid/hardware/display/DisplayManager;
-PLcom/android/server/audio/AudioService;->-$$Nest$fgetmInputMethodServiceUid(Lcom/android/server/audio/AudioService;)I
-PLcom/android/server/audio/AudioService;->-$$Nest$fgetmInputMethodServiceUidLock(Lcom/android/server/audio/AudioService;)Ljava/lang/Object;
-PLcom/android/server/audio/AudioService;->-$$Nest$fgetmIsSingleVolume(Lcom/android/server/audio/AudioService;)Z
-PLcom/android/server/audio/AudioService;->-$$Nest$fgetmMediaFocusControl(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/MediaFocusControl;
-PLcom/android/server/audio/AudioService;->-$$Nest$fgetmMonitorRotation(Lcom/android/server/audio/AudioService;)Z
-PLcom/android/server/audio/AudioService;->-$$Nest$fgetmRingerModeDelegate(Lcom/android/server/audio/AudioService;)Landroid/media/AudioManagerInternal$RingerModeDelegate;
-HPLcom/android/server/audio/AudioService;->-$$Nest$fgetmSettings(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/SettingsAdapter;
-PLcom/android/server/audio/AudioService;->-$$Nest$fgetmSettingsLock(Lcom/android/server/audio/AudioService;)Ljava/lang/Object;
-PLcom/android/server/audio/AudioService;->-$$Nest$fgetmSoundDoseHelper(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/SoundDoseHelper;
-HPLcom/android/server/audio/AudioService;->-$$Nest$fgetmStreamStates(Lcom/android/server/audio/AudioService;)[Lcom/android/server/audio/AudioService$VolumeStreamState;
-PLcom/android/server/audio/AudioService;->-$$Nest$fgetmSupportsMicPrivacyToggle(Lcom/android/server/audio/AudioService;)Z
-HPLcom/android/server/audio/AudioService;->-$$Nest$fgetmSystemServer(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/SystemServerAdapter;
-HPLcom/android/server/audio/AudioService;->-$$Nest$fgetmUseFixedVolume(Lcom/android/server/audio/AudioService;)Z
-PLcom/android/server/audio/AudioService;->-$$Nest$fgetmUserSwitchedReceived(Lcom/android/server/audio/AudioService;)Z
-PLcom/android/server/audio/AudioService;->-$$Nest$fputmAccessibilityServiceUids(Lcom/android/server/audio/AudioService;[I)V
-PLcom/android/server/audio/AudioService;->-$$Nest$fputmAudioHandler(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$AudioHandler;)V
-PLcom/android/server/audio/AudioService;->-$$Nest$fputmEnabledSurroundFormats(Lcom/android/server/audio/AudioService;Ljava/lang/String;)V
-PLcom/android/server/audio/AudioService;->-$$Nest$fputmEncodedSurroundMode(Lcom/android/server/audio/AudioService;I)V
-PLcom/android/server/audio/AudioService;->-$$Nest$fputmInputMethodServiceUid(Lcom/android/server/audio/AudioService;I)V
-PLcom/android/server/audio/AudioService;->-$$Nest$fputmRingerModeDelegate(Lcom/android/server/audio/AudioService;Landroid/media/AudioManagerInternal$RingerModeDelegate;)V
-PLcom/android/server/audio/AudioService;->-$$Nest$fputmUserSwitchedReceived(Lcom/android/server/audio/AudioService;Z)V
-PLcom/android/server/audio/AudioService;->-$$Nest$mgetDeviceSetForStreamDirect(Lcom/android/server/audio/AudioService;I)Ljava/util/Set;
-PLcom/android/server/audio/AudioService;->-$$Nest$misA2dpAbsoluteVolumeDevice(Lcom/android/server/audio/AudioService;I)Z
-PLcom/android/server/audio/AudioService;->-$$Nest$misAbsoluteVolumeDevice(Lcom/android/server/audio/AudioService;I)Z
-HPLcom/android/server/audio/AudioService;->-$$Nest$misFixedVolumeDevice(Lcom/android/server/audio/AudioService;I)Z
-HPLcom/android/server/audio/AudioService;->-$$Nest$misFullVolumeDevice(Lcom/android/server/audio/AudioService;I)Z
+PLcom/android/server/audio/AudioService$VolumeStreamState;->updateIndexFactors()V
+PLcom/android/server/audio/AudioService$VolumeStreamState;->updateVolumeGroupIndex(IZ)V
+PLcom/android/server/audio/AudioService;->-$$Nest$monAccessoryPlugMediaUnmute(Lcom/android/server/audio/AudioService;I)V
+PLcom/android/server/audio/AudioService;->-$$Nest$monConfigurationChanged(Lcom/android/server/audio/AudioService;)V
PLcom/android/server/audio/AudioService;->-$$Nest$monInitStreamsAndVolumes(Lcom/android/server/audio/AudioService;)V
PLcom/android/server/audio/AudioService;->-$$Nest$monObserveDevicesForAllStreams(Lcom/android/server/audio/AudioService;I)V
-PLcom/android/server/audio/AudioService;->-$$Nest$mreadAudioSettings(Lcom/android/server/audio/AudioService;Z)V
-PLcom/android/server/audio/AudioService;->-$$Nest$mrescaleIndex(Lcom/android/server/audio/AudioService;III)I
-PLcom/android/server/audio/AudioService;->-$$Nest$msendBroadcastToAll(Lcom/android/server/audio/AudioService;Landroid/content/Intent;Landroid/os/Bundle;)V
-PLcom/android/server/audio/AudioService;->-$$Nest$mupdateAssistantUIdLocked(Lcom/android/server/audio/AudioService;Z)V
-PLcom/android/server/audio/AudioService;->-$$Nest$mupdateRingerAndZenModeAffectedStreams(Lcom/android/server/audio/AudioService;)Z
-PLcom/android/server/audio/AudioService;->-$$Nest$smisCallStream(I)Z
-PLcom/android/server/audio/AudioService;->-$$Nest$smsendMsg(Landroid/os/Handler;IIIILjava/lang/Object;I)V
+PLcom/android/server/audio/AudioService;->-$$Nest$monPlaybackConfigChange(Lcom/android/server/audio/AudioService;Ljava/util/List;)V
+PLcom/android/server/audio/AudioService;->-$$Nest$monUpdateAccessibilityServiceUids(Lcom/android/server/audio/AudioService;)V
PLcom/android/server/audio/AudioService;-><clinit>()V
-PLcom/android/server/audio/AudioService;-><init>(Landroid/content/Context;Lcom/android/server/audio/AudioSystemAdapter;Lcom/android/server/audio/SystemServerAdapter;Lcom/android/server/audio/SettingsAdapter;Lcom/android/server/audio/AudioPolicyFacade;Landroid/os/Looper;)V
-HPLcom/android/server/audio/AudioService;-><init>(Landroid/content/Context;Lcom/android/server/audio/AudioSystemAdapter;Lcom/android/server/audio/SystemServerAdapter;Lcom/android/server/audio/SettingsAdapter;Lcom/android/server/audio/AudioPolicyFacade;Landroid/os/Looper;Landroid/app/AppOpsManager;Landroid/os/PermissionEnforcer;)V
+PLcom/android/server/audio/AudioService;-><init>(Landroid/content/Context;Lcom/android/server/audio/AudioSystemAdapter;Lcom/android/server/audio/SystemServerAdapter;Lcom/android/server/audio/SettingsAdapter;Lcom/android/server/audio/AudioService$AudioVolumeGroupHelper;Lcom/android/server/audio/DefaultAudioPolicyFacade;Landroid/app/AppOpsManager;Landroid/os/PermissionEnforcer;Lcom/android/server/audio/AudioServerPermissionProvider;Ljava/util/concurrent/Executor;)V
PLcom/android/server/audio/AudioService;->abandonAudioFocus(Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Landroid/media/AudioAttributes;Ljava/lang/String;)I
PLcom/android/server/audio/AudioService;->addAssistantServiceUidsLocked([I)V
-PLcom/android/server/audio/AudioService;->broadcastRingerMode(Ljava/lang/String;I)V
+PLcom/android/server/audio/AudioService;->addOnDevicesForAttributesChangedListener(Landroid/media/AudioAttributes;Landroid/media/IDevicesForAttributesCallback;)V
+PLcom/android/server/audio/AudioService;->areNavigationRepeatSoundEffectsEnabled()Z
+PLcom/android/server/audio/AudioService;->broadcastRingerMode(ILjava/lang/String;)V
PLcom/android/server/audio/AudioService;->broadcastVibrateSetting(I)V
-HPLcom/android/server/audio/AudioService;->checkAllAliasStreamVolumes()V
-PLcom/android/server/audio/AudioService;->checkAllFixedVolumeDevices()V
+PLcom/android/server/audio/AudioService;->callerHasPermission(Ljava/lang/String;)Z
+PLcom/android/server/audio/AudioService;->checkAllAliasStreamVolumes()V
+PLcom/android/server/audio/AudioService;->checkAudioSettingsPermission(Ljava/lang/String;)Z
+PLcom/android/server/audio/AudioService;->checkMonitorAudioServerStatePermission()V
PLcom/android/server/audio/AudioService;->checkMuteAffectedStreams()V
+PLcom/android/server/audio/AudioService;->checkNoteAppOp(IILjava/lang/String;Ljava/lang/String;)Z
PLcom/android/server/audio/AudioService;->checkVolumeRangeInitialization(Ljava/lang/String;)Z
-PLcom/android/server/audio/AudioService;->createAudioSystemThread()V
-PLcom/android/server/audio/AudioService;->createStreamStates()V
-PLcom/android/server/audio/AudioService;->dispatchStreamAliasingUpdate()V
+PLcom/android/server/audio/AudioService;->decrementAudioModeResetCount()V
+PLcom/android/server/audio/AudioService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/audio/AudioService;->dumpAccessibilityServiceUids(Ljava/io/PrintWriter;)V
+PLcom/android/server/audio/AudioService;->dumpAssistantServicesUids(Ljava/io/PrintWriter;)V
+PLcom/android/server/audio/AudioService;->dumpAudioPolicies(Ljava/io/PrintWriter;)V
+PLcom/android/server/audio/AudioService;->dumpDeviceTypes(Ljava/util/Set;)Ljava/lang/String;
+PLcom/android/server/audio/AudioService;->dumpRingerModeStreams(ILjava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/audio/AudioService;->dumpSupportedSystemUsage(Ljava/io/PrintWriter;)V
PLcom/android/server/audio/AudioService;->enforceVolumeController(Ljava/lang/String;)V
-HPLcom/android/server/audio/AudioService;->ensureValidAttributes(Landroid/media/audiopolicy/AudioVolumeGroup;)V
-PLcom/android/server/audio/AudioService;->ensureValidRingerMode(I)V
-HPLcom/android/server/audio/AudioService;->ensureValidStreamType(I)V
-PLcom/android/server/audio/AudioService;->forceFocusDuckingForAccessibility(Landroid/media/AudioAttributes;II)Z
-PLcom/android/server/audio/AudioService;->getAudioAidlHalPids(Ljava/util/HashSet;)V
-PLcom/android/server/audio/AudioService;->getAudioHalHidlPids(Ljava/util/HashSet;)V
-PLcom/android/server/audio/AudioService;->getAudioHalPids()Ljava/util/Set;
-PLcom/android/server/audio/AudioService;->getAudioModeOwner()Lcom/android/server/audio/AudioDeviceBroker$AudioModeInfo;
+PLcom/android/server/audio/AudioService;->ensureValidStreamType(I)V
+PLcom/android/server/audio/AudioService;->ensureValidVolumeGroup(Landroid/media/audiopolicy/AudioVolumeGroup;)Z
+PLcom/android/server/audio/AudioService;->forceVolumeControlStream(ILandroid/os/IBinder;)V
+PLcom/android/server/audio/AudioService;->getAbsoluteVolumeDevicesWithBehavior(I)Ljava/util/Set;
+PLcom/android/server/audio/AudioService;->getActivePlaybackConfigurations()Ljava/util/List;
+PLcom/android/server/audio/AudioService;->getActiveRecordingConfigurations()Ljava/util/List;
+PLcom/android/server/audio/AudioService;->getActiveStreamType(I)I
PLcom/android/server/audio/AudioService;->getAudioModeOwnerHandler()Lcom/android/server/audio/AudioService$SetModeDeathHandler;
+PLcom/android/server/audio/AudioService;->getAudioProductStrategies()Ljava/util/List;
PLcom/android/server/audio/AudioService;->getAudioVolumeGroups()Ljava/util/List;
-PLcom/android/server/audio/AudioService;->getContentResolver()Landroid/content/ContentResolver;
+PLcom/android/server/audio/AudioService;->getAvailableCommunicationDeviceIds()[I
+PLcom/android/server/audio/AudioService;->getBluetoothContextualVolumeStream()I
PLcom/android/server/audio/AudioService;->getCurrentUserId()I
-HPLcom/android/server/audio/AudioService;->getDeviceForStream(I)I
+HPLcom/android/server/audio/AudioService;->getDeviceForStream(I)I+]Ljava/util/Iterator;Ljava/util/TreeMap$KeyIterator;]Ljava/util/Set;Ljava/util/TreeSet;
+PLcom/android/server/audio/AudioService;->getDeviceMaskForStream(I)I
HPLcom/android/server/audio/AudioService;->getDeviceSetForStream(I)Ljava/util/Set;
-HPLcom/android/server/audio/AudioService;->getDeviceSetForStreamDirect(I)Ljava/util/Set;
PLcom/android/server/audio/AudioService;->getDeviceVolumeBehaviorInt(Landroid/media/AudioDeviceAttributes;)I
-HPLcom/android/server/audio/AudioService;->getDevicesForAttributesInt(Landroid/media/AudioAttributes;Z)Ljava/util/ArrayList;
+PLcom/android/server/audio/AudioService;->getDevicesForAttributes(Landroid/media/AudioAttributes;)Ljava/util/List;
+PLcom/android/server/audio/AudioService;->getDevicesForAttributesInt(Landroid/media/AudioAttributes;Z)Ljava/util/ArrayList;
+PLcom/android/server/audio/AudioService;->getFocusStack()Ljava/util/List;
+PLcom/android/server/audio/AudioService;->getLastAudibleStreamVolume(I)I
+PLcom/android/server/audio/AudioService;->getMode()I
+PLcom/android/server/audio/AudioService;->getMutingExpectedDevice()Landroid/media/AudioDeviceAttributes;
+PLcom/android/server/audio/AudioService;->getNewRingerMode(III)I
+PLcom/android/server/audio/AudioService;->getPreferredDevicesForStrategy(I)Ljava/util/List;
PLcom/android/server/audio/AudioService;->getRingerModeExternal()I
PLcom/android/server/audio/AudioService;->getRingerModeInternal()I
+PLcom/android/server/audio/AudioService;->getRingtonePlayer()Landroid/media/IRingtonePlayer;
PLcom/android/server/audio/AudioService;->getSettings()Lcom/android/server/audio/SettingsAdapter;
-PLcom/android/server/audio/AudioService;->getSettingsNameForDeviceVolumeBehavior(I)Ljava/lang/String;
+PLcom/android/server/audio/AudioService;->getSpatializerImmersiveAudioLevel()I
PLcom/android/server/audio/AudioService;->getStreamMaxVolume(I)I
-PLcom/android/server/audio/AudioService;->getUiDefaultRescaledIndex(II)I
+PLcom/android/server/audio/AudioService;->getStreamMinVolume(I)I
+HPLcom/android/server/audio/AudioService;->getStreamVolume(I)I
+HPLcom/android/server/audio/AudioService;->getStreamVolume(II)I
+PLcom/android/server/audio/AudioService;->getUiSoundsStreamType()I
PLcom/android/server/audio/AudioService;->getVibrateSetting(I)I
-PLcom/android/server/audio/AudioService;->getVolumeGroupForStreamType(I)I
-PLcom/android/server/audio/AudioService;->getVssVolumeForStream(I)Lcom/android/server/audio/AudioService$VolumeStreamState;
-PLcom/android/server/audio/AudioService;->ignorePlayerLogs(Landroid/media/PlayerBase;)V
-PLcom/android/server/audio/AudioService;->initA11yMonitoring()V
-PLcom/android/server/audio/AudioService;->initExternalEventReceivers()V
-PLcom/android/server/audio/AudioService;->initMinStreamVolumeWithoutModifyAudioSettings()V
-HPLcom/android/server/audio/AudioService;->initVolumeGroupStates()V
-PLcom/android/server/audio/AudioService;->initVolumeStreamStates()V
-HPLcom/android/server/audio/AudioService;->isA2dpAbsoluteVolumeDevice(I)Z
+PLcom/android/server/audio/AudioService;->getVssForStream(I)Lcom/android/server/audio/AudioService$VolumeStreamState;
+HPLcom/android/server/audio/AudioService;->getVssForStreamOrDefault(I)Lcom/android/server/audio/AudioService$VolumeStreamState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/audio/AudioService;->handleBluetoothActiveDeviceChanged(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothDevice;Landroid/media/BluetoothProfileConnectionInfo;)V
+PLcom/android/server/audio/AudioService;->hasAudioFocusUsers()Z
+PLcom/android/server/audio/AudioService;->hasMediaDynamicPolicy()Z
+PLcom/android/server/audio/AudioService;->initStreamVolumeAlias([I)V
+HPLcom/android/server/audio/AudioService;->isA2dpAbsoluteVolumeDevice(I)Z+]Ljava/util/Set;Ljava/util/HashSet;
HPLcom/android/server/audio/AudioService;->isAbsoluteVolumeDevice(I)Z
+PLcom/android/server/audio/AudioService;->isAndroidNPlus(Ljava/lang/String;)Z
+PLcom/android/server/audio/AudioService;->isAudioServerRunning()Z
PLcom/android/server/audio/AudioService;->isBluetoothA2dpOn()Z
-PLcom/android/server/audio/AudioService;->isCallStream(I)Z
-HPLcom/android/server/audio/AudioService;->isFixedVolumeDevice(I)Z
-HPLcom/android/server/audio/AudioService;->isFullVolumeDevice(I)Z
+PLcom/android/server/audio/AudioService;->isBluetoothPrividged()Z
+PLcom/android/server/audio/AudioService;->isBluetoothScoOn()Z
+PLcom/android/server/audio/AudioService;->isCameraSoundForced()Z
+HPLcom/android/server/audio/AudioService;->isFixedVolumeDevice(I)Z+]Ljava/util/Set;Ljava/util/HashSet;
+HPLcom/android/server/audio/AudioService;->isFullVolumeDevice(I)Z+]Ljava/util/Set;Ljava/util/HashSet;
PLcom/android/server/audio/AudioService;->isInCommunication()Z
-PLcom/android/server/audio/AudioService;->isMicrophoneSupposedToBeMuted()Z
-PLcom/android/server/audio/AudioService;->isPlatformAutomotive()Z
-PLcom/android/server/audio/AudioService;->isPlatformTelevision()Z
+PLcom/android/server/audio/AudioService;->isMicrophoneMuted()Z
+PLcom/android/server/audio/AudioService;->isMusicActive(Z)Z
+PLcom/android/server/audio/AudioService;->isPlaybackActiveForUid(I)Z
+PLcom/android/server/audio/AudioService;->isSpatializerEnabled()Z
PLcom/android/server/audio/AudioService;->isStreamAffectedByMute(I)Z
-HPLcom/android/server/audio/AudioService;->isStreamMute(I)Z
+PLcom/android/server/audio/AudioService;->isStreamAffectedByRingerMode(I)Z
+PLcom/android/server/audio/AudioService;->isStreamBluetoothSco(I)Z
+PLcom/android/server/audio/AudioService;->isStreamMute(I)Z
PLcom/android/server/audio/AudioService;->isStreamMutedByRingerOrZenMode(I)Z
PLcom/android/server/audio/AudioService;->isValidAudioAttributesUsage(Landroid/media/AudioAttributes;)Z
PLcom/android/server/audio/AudioService;->isValidRingerMode(I)Z
PLcom/android/server/audio/AudioService;->isVolumeFixed()Z
-PLcom/android/server/audio/AudioService;->lambda$ensureValidAttributes$11(Landroid/media/AudioAttributes;)Z
-PLcom/android/server/audio/AudioService;->lambda$new$0(Landroid/media/PlayerBase;)V
+PLcom/android/server/audio/AudioService;->maybeSendSystemAudioStatusCommand(Z)V
+HPLcom/android/server/audio/AudioService;->muteAliasStreams(IZ)V
HPLcom/android/server/audio/AudioService;->muteRingerModeStreams()V
+PLcom/android/server/audio/AudioService;->notifyVolumeControllerVisible(Landroid/media/IVolumeController;Z)V
PLcom/android/server/audio/AudioService;->onAccessibilityServicesStateChanged(Landroid/view/accessibility/AccessibilityManager;)V
-PLcom/android/server/audio/AudioService;->onConfigurationChanged()V
PLcom/android/server/audio/AudioService;->onIndicateSystemReady()V
-PLcom/android/server/audio/AudioService;->onInitAdiDeviceStates()V
-PLcom/android/server/audio/AudioService;->onInitSpatializer()V
-PLcom/android/server/audio/AudioService;->onInitStreamsAndVolumes()V
-HPLcom/android/server/audio/AudioService;->onObserveDevicesForAllStreams(I)V
-PLcom/android/server/audio/AudioService;->onPlaybackConfigChange(Ljava/util/List;)V
+PLcom/android/server/audio/AudioService;->onRoutingUpdatedFromAudioThread()V
+PLcom/android/server/audio/AudioService;->onRoutingUpdatedFromNative()V
+PLcom/android/server/audio/AudioService;->onSetStreamVolume(IIIILjava/lang/String;ZZ)V
PLcom/android/server/audio/AudioService;->onSystemReady()V
-PLcom/android/server/audio/AudioService;->onUpdateAccessibilityServiceUids()V
-PLcom/android/server/audio/AudioService;->onUpdateRingerModeServiceInt()V
+PLcom/android/server/audio/AudioService;->onTouchExplorationStateChanged(Z)V
+PLcom/android/server/audio/AudioService;->onUpdateAudioMode(Ljava/lang/String;IIZZ)V
+PLcom/android/server/audio/AudioService;->onUpdateContextualVolumes()V
+PLcom/android/server/audio/AudioService;->onUpdatedAdiDeviceState(Lcom/android/server/audio/AdiDeviceState;Z)V
+PLcom/android/server/audio/AudioService;->permissionUpdateBarrier()V
+PLcom/android/server/audio/AudioService;->playSoundEffect(II)V
PLcom/android/server/audio/AudioService;->playerAttributes(ILandroid/media/AudioAttributes;)V
-PLcom/android/server/audio/AudioService;->playerEvent(III)V
-PLcom/android/server/audio/AudioService;->portEvent(IILandroid/os/PersistableBundle;)V
+HPLcom/android/server/audio/AudioService;->playerEvent(II[I)V
+HPLcom/android/server/audio/AudioService;->portEvent(IILandroid/os/PersistableBundle;)V
+PLcom/android/server/audio/AudioService;->postAccessoryPlugMediaUnmute(I)V
+PLcom/android/server/audio/AudioService;->postObserveDevicesForAllStreams()V
PLcom/android/server/audio/AudioService;->postObserveDevicesForAllStreams(I)V
-PLcom/android/server/audio/AudioService;->postUpdateRingerModeServiceInt()V
-PLcom/android/server/audio/AudioService;->queueMsgUnderWakeLock(Landroid/os/Handler;IIILjava/lang/Object;I)V
+PLcom/android/server/audio/AudioService;->postSetVolumeIndexOnDevice(IIILjava/lang/String;)V
+PLcom/android/server/audio/AudioService;->postUpdateAudioMode(IILjava/lang/String;IIZ)V
+PLcom/android/server/audio/AudioService;->queueMsgUnderWakeLock(Landroid/os/Handler;III)V
PLcom/android/server/audio/AudioService;->readAndSetLowRamDevice()V
PLcom/android/server/audio/AudioService;->readAudioSettings(Z)V
PLcom/android/server/audio/AudioService;->readCameraSoundForced()Z
PLcom/android/server/audio/AudioService;->readDockAudioSettings(Landroid/content/ContentResolver;)V
-HPLcom/android/server/audio/AudioService;->readPersistedSettings()V
+PLcom/android/server/audio/AudioService;->readPersistedSettings()V
PLcom/android/server/audio/AudioService;->readUserRestrictions()V
-HPLcom/android/server/audio/AudioService;->readVolumeGroupsSettings(Z)V
+PLcom/android/server/audio/AudioService;->recorderEvent(II)V
+PLcom/android/server/audio/AudioService;->registerAudioPolicy(Landroid/media/audiopolicy/AudioPolicyConfig;Landroid/media/audiopolicy/IAudioPolicyCallback;ZZZZLandroid/media/projection/IMediaProjection;Landroid/content/AttributionSource;)Ljava/lang/String;
+PLcom/android/server/audio/AudioService;->registerAudioServerStateDispatcher(Landroid/media/IAudioServerStateDispatcher;)V
+PLcom/android/server/audio/AudioService;->registerCommunicationDeviceDispatcher(Landroid/media/ICommunicationDeviceDispatcher;)V
+PLcom/android/server/audio/AudioService;->registerLoudnessCodecUpdatesDispatcher(Landroid/media/ILoudnessCodecUpdatesDispatcher;)V
+PLcom/android/server/audio/AudioService;->registerModeDispatcher(Landroid/media/IAudioModeDispatcher;)V
+PLcom/android/server/audio/AudioService;->registerMuteAwaitConnectionDispatcher(Landroid/media/IMuteAwaitConnectionCallback;Z)V
PLcom/android/server/audio/AudioService;->registerPlaybackCallback(Landroid/media/IPlaybackConfigDispatcher;)V
+PLcom/android/server/audio/AudioService;->registerRecordingCallback(Landroid/media/IRecordingConfigDispatcher;)V
+PLcom/android/server/audio/AudioService;->releasePlayer(I)V
+PLcom/android/server/audio/AudioService;->releaseRecorder(I)V
+PLcom/android/server/audio/AudioService;->removePreferredDevicesForStrategy(I)I
+HPLcom/android/server/audio/AudioService;->replaceBtScoStreamWithVoiceCall(I)I
PLcom/android/server/audio/AudioService;->requestAudioFocus(Landroid/media/AudioAttributes;ILandroid/os/IBinder;Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/media/audiopolicy/IAudioPolicyCallback;I)I
-HPLcom/android/server/audio/AudioService;->rescaleIndex(III)I
+PLcom/android/server/audio/AudioService;->rescaleIndex(III)I
PLcom/android/server/audio/AudioService;->rescaleIndex(IIIII)I
-PLcom/android/server/audio/AudioService;->resetActiveAssistantUidsLocked()V
-PLcom/android/server/audio/AudioService;->restoreDeviceVolumeBehavior()V
-PLcom/android/server/audio/AudioService;->retrieveStoredDeviceVolumeBehavior(I)I
-PLcom/android/server/audio/AudioService;->scheduleLoadSoundEffects()V
-HPLcom/android/server/audio/AudioService;->selectOneAudioDevice(Ljava/util/Set;)I
-HPLcom/android/server/audio/AudioService;->sendBroadcastToAll(Landroid/content/Intent;Landroid/os/Bundle;)V
+PLcom/android/server/audio/AudioService;->retrieveBluetoothAddress(Landroid/media/AudioDeviceAttributes;)Landroid/media/AudioDeviceAttributes;
+PLcom/android/server/audio/AudioService;->sendBroadcastToAll(Landroid/content/Intent;Landroid/os/Bundle;)V
PLcom/android/server/audio/AudioService;->sendEnabledSurroundFormats(Landroid/content/ContentResolver;Z)V
PLcom/android/server/audio/AudioService;->sendEncodedSurroundMode(ILjava/lang/String;)V
-PLcom/android/server/audio/AudioService;->sendEncodedSurroundMode(Landroid/content/ContentResolver;Ljava/lang/String;)V
HPLcom/android/server/audio/AudioService;->sendMsg(Landroid/os/Handler;IIIILjava/lang/Object;I)V
-PLcom/android/server/audio/AudioService;->sendStickyBroadcastToAll(Landroid/content/Intent;)V
-HPLcom/android/server/audio/AudioService;->setDeviceVolume(Lcom/android/server/audio/AudioService$VolumeStreamState;I)V
-PLcom/android/server/audio/AudioService;->setMasterMuteInternalNoCallerCheck(ZIILjava/lang/String;)V
+PLcom/android/server/audio/AudioService;->sendVolumeUpdate(III)V
+PLcom/android/server/audio/AudioService;->setA2dpSuspended(Z)V
+PLcom/android/server/audio/AudioService;->setAvrcpAbsoluteVolumeSupported(Z)V
+PLcom/android/server/audio/AudioService;->setBluetoothA2dpOn(Z)V
+PLcom/android/server/audio/AudioService;->setCommunicationDevice(Landroid/os/IBinder;ILandroid/content/AttributionSource;)Z
+PLcom/android/server/audio/AudioService;->setDeviceVolume(Lcom/android/server/audio/AudioService$VolumeStreamState;I)V
+PLcom/android/server/audio/AudioService;->setDeviceVolumeBehavior(Landroid/media/AudioDeviceAttributes;ILjava/lang/String;)V
+PLcom/android/server/audio/AudioService;->setLeAudioSuspended(Z)V
+PLcom/android/server/audio/AudioService;->setMasterMuteInternalNoCallerCheck(IIZ)V
PLcom/android/server/audio/AudioService;->setMicMuteFromSwitchInput()V
+PLcom/android/server/audio/AudioService;->setMicrophoneMute(ZLjava/lang/String;ILjava/lang/String;)V
PLcom/android/server/audio/AudioService;->setMicrophoneMuteNoCallerCheck(I)V
+PLcom/android/server/audio/AudioService;->setMode(ILandroid/os/IBinder;Ljava/lang/String;)V
+PLcom/android/server/audio/AudioService;->setMusicMute(Z)V
PLcom/android/server/audio/AudioService;->setRingerMode(ILjava/lang/String;Z)V
PLcom/android/server/audio/AudioService;->setRingerModeExt(I)V
PLcom/android/server/audio/AudioService;->setRingerModeInt(IZ)V
PLcom/android/server/audio/AudioService;->setRingerModeInternal(ILjava/lang/String;)V
+HPLcom/android/server/audio/AudioService;->setStreamVolume(IIILandroid/media/AudioDeviceAttributes;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZZ)V
+PLcom/android/server/audio/AudioService;->setStreamVolumeInt(IIILjava/lang/String;ZZ)V
+PLcom/android/server/audio/AudioService;->setStreamVolumeWithAttribution(IIILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/audio/AudioService;->setStreamVolumeWithAttributionInt(IIILandroid/media/AudioDeviceAttributes;Ljava/lang/String;Ljava/lang/String;Z)V
PLcom/android/server/audio/AudioService;->setVolumeController(Landroid/media/IVolumeController;)V
-PLcom/android/server/audio/AudioService;->shouldZenMuteStream(I)Z
+PLcom/android/server/audio/AudioService;->shouldNotificationSoundPlay(Landroid/media/AudioAttributes;)Z
+PLcom/android/server/audio/AudioService;->startLoudnessCodecUpdates(I)V
PLcom/android/server/audio/AudioService;->startWatchingRoutes(Landroid/media/IAudioRoutesObserver;)Landroid/media/AudioRoutesInfo;
-PLcom/android/server/audio/AudioService;->systemReady()V
-PLcom/android/server/audio/AudioService;->trackPlayer(Landroid/media/PlayerBase$PlayerIdCard;)I
+HPLcom/android/server/audio/AudioService;->trackPlayer(Landroid/media/PlayerBase$PlayerIdCard;)I
+PLcom/android/server/audio/AudioService;->trackRecorder(Landroid/os/IBinder;)I
+PLcom/android/server/audio/AudioService;->unregisterModeDispatcher(Landroid/media/IAudioModeDispatcher;)V
+PLcom/android/server/audio/AudioService;->unregisterPlaybackCallback(Landroid/media/IPlaybackConfigDispatcher;)V
+PLcom/android/server/audio/AudioService;->unregisterRecordingCallback(Landroid/media/IRecordingConfigDispatcher;)V
PLcom/android/server/audio/AudioService;->updateA11yVolumeAlias(Z)V
PLcom/android/server/audio/AudioService;->updateActiveAssistantServiceUids()V
-PLcom/android/server/audio/AudioService;->updateAssistantServicesUidsLocked()V
PLcom/android/server/audio/AudioService;->updateAssistantUIdLocked(Z)V
PLcom/android/server/audio/AudioService;->updateAudioHalPids()V
PLcom/android/server/audio/AudioService;->updateAudioModeHandlers(Ljava/util/List;Ljava/util/List;)V
-PLcom/android/server/audio/AudioService;->updateDefaultStreamOverrideDelay(Z)V
PLcom/android/server/audio/AudioService;->updateDefaultVolumes()V
PLcom/android/server/audio/AudioService;->updateMasterBalance(Landroid/content/ContentResolver;)V
PLcom/android/server/audio/AudioService;->updateMasterMono(Landroid/content/ContentResolver;)V
-HPLcom/android/server/audio/AudioService;->updateRingerAndZenModeAffectedStreams()Z
-PLcom/android/server/audio/AudioService;->updateStreamVolumeAlias(ZLjava/lang/String;)V
+PLcom/android/server/audio/AudioService;->updateRingerAndZenModeAffectedStreams()Z
+PLcom/android/server/audio/AudioService;->updateStreamVolumeAlias(Ljava/lang/String;Z)V
PLcom/android/server/audio/AudioService;->updateVibratorInfos()V
-HPLcom/android/server/audio/AudioService;->updateVolumeStates(IILjava/lang/String;)V
-PLcom/android/server/audio/AudioService;->updateZenModeAffectedStreams()Z
+HPLcom/android/server/audio/AudioService;->updateVolumeStates(IILjava/lang/String;)V+]Landroid/media/AudioAttributes$Builder;Landroid/media/AudioAttributes$Builder;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Set;Ljava/util/HashSet;
PLcom/android/server/audio/AudioService;->validateAudioAttributesUsage(Landroid/media/AudioAttributes;)V
-PLcom/android/server/audio/AudioService;->waitForAudioHandlerCreation()V
+PLcom/android/server/audio/AudioService;->volumeAdjustmentAllowedByDnd(II)Z
+PLcom/android/server/audio/AudioService;->wasStreamActiveRecently(II)Z
+PLcom/android/server/audio/AudioService;->wouldToggleZenMode(I)Z
PLcom/android/server/audio/AudioServiceEvents$ForceUseEvent;-><init>(IILjava/lang/String;)V
+PLcom/android/server/audio/AudioServiceEvents$ForceUseEvent;->eventToString()Ljava/lang/String;
+PLcom/android/server/audio/AudioServiceEvents$LoudnessEvent;-><init>(III)V
+PLcom/android/server/audio/AudioServiceEvents$LoudnessEvent;->eventToString()Ljava/lang/String;
+PLcom/android/server/audio/AudioServiceEvents$PhoneStateEvent;-><init>(IIIILjava/lang/String;)V
PLcom/android/server/audio/AudioServiceEvents$RingerZenMutedStreamsEvent;-><init>(ILjava/lang/String;)V
-PLcom/android/server/audio/AudioServiceEvents$VolChangedBroadcastEvent;-><init>(IIII)V
+PLcom/android/server/audio/AudioServiceEvents$RingerZenMutedStreamsEvent;->eventToString()Ljava/lang/String;
+PLcom/android/server/audio/AudioServiceEvents$StreamMuteEvent;-><init>(ILjava/lang/String;Z)V
+PLcom/android/server/audio/AudioServiceEvents$StreamMuteEvent;->eventToString()Ljava/lang/String;
+PLcom/android/server/audio/AudioServiceEvents$VolChangedBroadcastEvent;-><init>(IIILjava/lang/String;)V
+PLcom/android/server/audio/AudioServiceEvents$VolumeEvent;-><init>(I)V
+PLcom/android/server/audio/AudioServiceEvents$VolumeEvent;-><init>(IIIILjava/lang/String;I)V
+PLcom/android/server/audio/AudioServiceEvents$VolumeEvent;-><init>(IZ)V
+PLcom/android/server/audio/AudioServiceEvents$VolumeEvent;-><init>(ZIII)V
+HPLcom/android/server/audio/AudioServiceEvents$VolumeEvent;->logMetricEvent$1()V
PLcom/android/server/audio/AudioSystemAdapter;-><clinit>()V
PLcom/android/server/audio/AudioSystemAdapter;-><init>()V
+PLcom/android/server/audio/AudioSystemAdapter;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/audio/AudioSystemAdapter;->getDefaultAdapter()Lcom/android/server/audio/AudioSystemAdapter;
-HPLcom/android/server/audio/AudioSystemAdapter;->getDevicesForAttributes(Landroid/media/AudioAttributes;Z)Ljava/util/ArrayList;
-HPLcom/android/server/audio/AudioSystemAdapter;->getDevicesForAttributesImpl(Landroid/media/AudioAttributes;Z)Ljava/util/ArrayList;
+HPLcom/android/server/audio/AudioSystemAdapter;->getDevicesForAttributes(Landroid/media/AudioAttributes;Z)Ljava/util/ArrayList;+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
HPLcom/android/server/audio/AudioSystemAdapter;->invalidateRoutingCache()V
-PLcom/android/server/audio/AudioSystemAdapter;->isMicrophoneMuted()Z
-PLcom/android/server/audio/AudioSystemAdapter;->muteMicrophone(Z)I
-PLcom/android/server/audio/AudioSystemAdapter;->onRoutingUpdated()V
-PLcom/android/server/audio/AudioSystemAdapter;->setCurrentImeUid(I)I
-PLcom/android/server/audio/AudioSystemAdapter;->setForceUse(II)I
-PLcom/android/server/audio/AudioSystemAdapter;->setRoutingListener(Lcom/android/server/audio/AudioSystemAdapter$OnRoutingUpdatedListener;)V
-HPLcom/android/server/audio/AudioSystemAdapter;->setStreamVolumeIndexAS(III)I
-PLcom/android/server/audio/AudioSystemAdapter;->setVolRangeInitReqListener(Lcom/android/server/audio/AudioSystemAdapter$OnVolRangeInitRequestListener;)V
+HPLcom/android/server/audio/AudioSystemAdapter;->onRoutingUpdated()V
+PLcom/android/server/audio/AudioSystemAdapter;->setDeviceConnectionState(Landroid/media/AudioDeviceAttributes;II)I
+PLcom/android/server/audio/AudioVolumeGroupHelperBase;-><init>()V
PLcom/android/server/audio/BtHelper$1;-><init>(Lcom/android/server/audio/BtHelper;)V
PLcom/android/server/audio/BtHelper$1;->onServiceConnected(ILandroid/bluetooth/BluetoothProfile;)V
-PLcom/android/server/audio/BtHelper;->-$$Nest$fgetmDeviceBroker(Lcom/android/server/audio/BtHelper;)Lcom/android/server/audio/AudioDeviceBroker;
PLcom/android/server/audio/BtHelper;-><init>(Lcom/android/server/audio/AudioDeviceBroker;Landroid/content/Context;)V
PLcom/android/server/audio/BtHelper;->broadcastScoConnectionState(I)V
+PLcom/android/server/audio/BtHelper;->btHeadsetDeviceToAudioDevice(Landroid/bluetooth/BluetoothDevice;)Landroid/media/AudioDeviceAttributes;
PLcom/android/server/audio/BtHelper;->checkScoAudioState()V
PLcom/android/server/audio/BtHelper;->getBluetoothHeadset()Z
-PLcom/android/server/audio/BtHelper;->isBluetoothScoOn()Z
-PLcom/android/server/audio/BtHelper;->onBroadcastScoConnectionState(I)V
+PLcom/android/server/audio/BtHelper;->getBtDeviceCategory(Ljava/lang/String;)I
+PLcom/android/server/audio/BtHelper;->getCodec(Landroid/bluetooth/BluetoothDevice;I)Landroid/util/Pair;
+PLcom/android/server/audio/BtHelper;->getCodecWithFallback(Landroid/bluetooth/BluetoothDevice;IZLjava/lang/String;)Landroid/util/Pair;
+PLcom/android/server/audio/BtHelper;->handleBtScoActiveDeviceChange(Landroid/bluetooth/BluetoothDevice;Z)Z
+PLcom/android/server/audio/BtHelper;->isProfilePoxyConnected(I)Z
PLcom/android/server/audio/BtHelper;->onBtProfileConnected(ILandroid/bluetooth/BluetoothProfile;)V
PLcom/android/server/audio/BtHelper;->onHeadsetProfileConnected(Landroid/bluetooth/BluetoothHeadset;)V
+PLcom/android/server/audio/BtHelper;->onScoAudioStateChanged(I)V
+PLcom/android/server/audio/BtHelper;->onSetBtScoActiveDevice(Landroid/bluetooth/BluetoothDevice;)V
PLcom/android/server/audio/BtHelper;->onSystemReady()V
PLcom/android/server/audio/BtHelper;->resetBluetoothSco()V
+PLcom/android/server/audio/BtHelper;->scoAudioModeToString(I)Ljava/lang/String;
PLcom/android/server/audio/BtHelper;->sendStickyBroadcastToAll(Landroid/content/Intent;)V
-PLcom/android/server/audio/DefaultAudioPolicyFacade;-><init>()V
-PLcom/android/server/audio/DefaultAudioPolicyFacade;->getAudioPolicyOrInit()Landroid/media/IAudioPolicyService;
+PLcom/android/server/audio/BtHelper;->setAvrcpAbsoluteVolumeIndex(I)V
+PLcom/android/server/audio/DefaultAudioPolicyFacade$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/audio/DefaultAudioPolicyFacade$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/audio/AudioService$$ExternalSyntheticLambda16;)V
+PLcom/android/server/audio/DefaultAudioPolicyFacade$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/audio/DefaultAudioPolicyFacade;-><init>(Ljava/util/concurrent/Executor;)V
PLcom/android/server/audio/FadeConfigurations;-><clinit>()V
PLcom/android/server/audio/FadeConfigurations;-><init>()V
+PLcom/android/server/audio/FadeConfigurations;->getActiveFadeMgrConfigLocked()Landroid/media/FadeManagerConfiguration;
+PLcom/android/server/audio/FadeConfigurations;->getFadeOutVolumeShaperConfig(Landroid/media/AudioAttributes;)Landroid/media/VolumeShaper$Configuration;
+PLcom/android/server/audio/FadeConfigurations;->getUpdatedFadeManagerConfigLocked()Landroid/media/FadeManagerConfiguration;
PLcom/android/server/audio/FadeOutManager;-><init>()V
-PLcom/android/server/audio/FadeOutManager;->removeReleased(Landroid/media/AudioPlaybackConfiguration;)V
PLcom/android/server/audio/FadeOutManager;->unfadeOutUid(ILjava/util/Map;)V
-PLcom/android/server/audio/FocusRequester;-><init>(Landroid/media/AudioAttributes;IILandroid/media/IAudioFocusDispatcher;Landroid/os/IBinder;Ljava/lang/String;Lcom/android/server/audio/MediaFocusControl$AudioFocusDeathHandler;Ljava/lang/String;ILcom/android/server/audio/MediaFocusControl;I)V
+PLcom/android/server/audio/FocusRequester$FocusRequestEvent;-><init>(Lcom/android/server/audio/FocusRequester;ILjava/lang/String;)V
+PLcom/android/server/audio/FocusRequester;-><init>(Landroid/media/AudioAttributes;IILandroid/media/IAudioFocusDispatcher;Landroid/os/IBinder;Ljava/lang/String;Lcom/android/server/audio/MediaFocusControl$AudioFocusDeathHandler;Ljava/lang/String;ILcom/android/server/audio/MediaFocusControl;ILcom/android/server/utils/EventLogger;)V
PLcom/android/server/audio/FocusRequester;->finalize()V
-PLcom/android/server/audio/FocusRequester;->getClientUid()I
-PLcom/android/server/audio/FocusRequester;->handleFocusGainFromRequest(I)V
+PLcom/android/server/audio/FocusRequester;->handleFocusGain()V
+PLcom/android/server/audio/FocusRequester;->handleFocusLoss(ILcom/android/server/audio/FocusRequester;Z)V
+PLcom/android/server/audio/FocusRequester;->handleFocusLossFromGain(ILcom/android/server/audio/FocusRequester;Z)Z
PLcom/android/server/audio/FocusRequester;->hasSameClient(Ljava/lang/String;)Z
-PLcom/android/server/audio/FocusRequester;->maybeRelease()V
PLcom/android/server/audio/FocusRequester;->release()V
PLcom/android/server/audio/FocusRequester;->toAudioFocusInfo()Landroid/media/AudioFocusInfo;
-PLcom/android/server/audio/HardeningEnforcer;-><init>(Landroid/content/Context;Z)V
+PLcom/android/server/audio/HardeningEnforcer;-><clinit>()V
+PLcom/android/server/audio/HardeningEnforcer;-><init>(Landroid/content/Context;ZLandroid/app/AppOpsManager;Landroid/content/pm/PackageManager;)V
+PLcom/android/server/audio/HardeningEnforcer;->blockFocusMethod(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Z
+PLcom/android/server/audio/HardeningEnforcer;->blockVolumeMethod(I)Z
+PLcom/android/server/audio/HardeningEnforcer;->metricsLogFocusReq(IIZZ)V
+PLcom/android/server/audio/LoudnessCodecHelper$$ExternalSyntheticLambda1;-><init>(III)V
+PLcom/android/server/audio/LoudnessCodecHelper$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
+PLcom/android/server/audio/LoudnessCodecHelper$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/audio/LoudnessCodecHelper;Ljava/util/HashSet;I)V
PLcom/android/server/audio/LoudnessCodecHelper$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/audio/LoudnessCodecHelper;)V
+PLcom/android/server/audio/LoudnessCodecHelper$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V
+PLcom/android/server/audio/LoudnessCodecHelper$$ExternalSyntheticLambda5;-><init>(II)V
+PLcom/android/server/audio/LoudnessCodecHelper$$ExternalSyntheticLambda5;->test(Ljava/lang/Object;)Z
PLcom/android/server/audio/LoudnessCodecHelper$LoudnessRemoteCallbackList;-><init>(Lcom/android/server/audio/LoudnessCodecHelper;)V
+PLcom/android/server/audio/LoudnessCodecHelper$LoudnessRemoteCallbackList;->onCallbackDied(Landroid/os/IInterface;Ljava/lang/Object;)V
+PLcom/android/server/audio/LoudnessCodecHelper$LoudnessTrackId;-><init>(II)V
+PLcom/android/server/audio/LoudnessCodecHelper$LoudnessTrackId;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/audio/LoudnessCodecHelper$LoudnessTrackId;->hashCode()I
PLcom/android/server/audio/LoudnessCodecHelper;-><clinit>()V
PLcom/android/server/audio/LoudnessCodecHelper;-><init>(Lcom/android/server/audio/AudioService;)V
-PLcom/android/server/audio/LoudnessCodecHelper;->updateCodecParameters(Ljava/util/List;)V
+PLcom/android/server/audio/LoudnessCodecHelper;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/audio/MediaFocusControl$1;-><init>(Lcom/android/server/audio/MediaFocusControl;Landroid/media/audiopolicy/IAudioPolicyCallback;)V
+PLcom/android/server/audio/MediaFocusControl$1;->run()V
+PLcom/android/server/audio/MediaFocusControl$3;-><init>(Lcom/android/server/audio/MediaFocusControl;Z)V
+PLcom/android/server/audio/MediaFocusControl$3;->run()V
PLcom/android/server/audio/MediaFocusControl$4;-><init>(Lcom/android/server/audio/MediaFocusControl;Landroid/os/Looper;)V
PLcom/android/server/audio/MediaFocusControl$AudioFocusDeathHandler;-><init>(Lcom/android/server/audio/MediaFocusControl;Landroid/os/IBinder;)V
PLcom/android/server/audio/MediaFocusControl$ForgetFadeUidInfo;-><init>(I)V
PLcom/android/server/audio/MediaFocusControl;-><clinit>()V
-PLcom/android/server/audio/MediaFocusControl;-><init>(Landroid/content/Context;Lcom/android/server/audio/PlayerFocusEnforcer;)V
-PLcom/android/server/audio/MediaFocusControl;->abandonAudioFocus(Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Landroid/media/AudioAttributes;Ljava/lang/String;)I
-PLcom/android/server/audio/MediaFocusControl;->canReassignAudioFocus()Z
-PLcom/android/server/audio/MediaFocusControl;->getFocusRampTimeMs(ILandroid/media/AudioAttributes;)I
-PLcom/android/server/audio/MediaFocusControl;->initFocusThreading()V
-PLcom/android/server/audio/MediaFocusControl;->isFocusFrozenForTest()Z
-PLcom/android/server/audio/MediaFocusControl;->maybeDiscardAudioFocusOwner()Z
+PLcom/android/server/audio/MediaFocusControl;-><init>(Landroid/content/Context;Lcom/android/server/audio/PlaybackActivityMonitor;)V
+HPLcom/android/server/audio/MediaFocusControl;->abandonAudioFocus(Ljava/lang/String;Landroid/media/AudioAttributes;Ljava/lang/String;)V
+PLcom/android/server/audio/MediaFocusControl;->getFocusRampTimeMs(Landroid/media/AudioAttributes;)I
+PLcom/android/server/audio/MediaFocusControl;->isLockedFocusOwner(Lcom/android/server/audio/FocusRequester;)Z
PLcom/android/server/audio/MediaFocusControl;->notifyExtPolicyFocusGrant_syncAf(Landroid/media/AudioFocusInfo;I)V
PLcom/android/server/audio/MediaFocusControl;->notifyExtPolicyFocusLoss_syncAf(Landroid/media/AudioFocusInfo;Z)V
PLcom/android/server/audio/MediaFocusControl;->notifyTopOfAudioFocusStack()V
PLcom/android/server/audio/MediaFocusControl;->propagateFocusLossFromGain_syncAf(ILcom/android/server/audio/FocusRequester;Z)V
+PLcom/android/server/audio/MediaFocusControl;->removeFocusFollower(Landroid/media/audiopolicy/IAudioPolicyCallback;)V
PLcom/android/server/audio/MediaFocusControl;->removeFocusStackEntry(Ljava/lang/String;ZZ)V
-HPLcom/android/server/audio/MediaFocusControl;->requestAudioFocus(Landroid/media/AudioAttributes;ILandroid/os/IBinder;Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIZI)I
+HPLcom/android/server/audio/MediaFocusControl;->requestAudioFocus(Landroid/media/AudioAttributes;ILandroid/os/IBinder;Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Ljava/lang/String;IIZI)I
PLcom/android/server/audio/MediaFocusControl;->restoreVShapedPlayers(Lcom/android/server/audio/FocusRequester;)V
PLcom/android/server/audio/MusicFxHelper$1;-><init>(Lcom/android/server/audio/MusicFxHelper;)V
-PLcom/android/server/audio/MusicFxHelper$2;-><init>(Lcom/android/server/audio/MusicFxHelper;)V
PLcom/android/server/audio/MusicFxHelper$MySparseArray;-><init>(Lcom/android/server/audio/MusicFxHelper;)V
-PLcom/android/server/audio/MusicFxHelper$MySparseArray;-><init>(Lcom/android/server/audio/MusicFxHelper;Lcom/android/server/audio/MusicFxHelper$MySparseArray-IA;)V
PLcom/android/server/audio/MusicFxHelper;-><init>(Landroid/content/Context;Lcom/android/server/audio/AudioService$AudioHandler;)V
PLcom/android/server/audio/PlaybackActivityMonitor$1;-><init>(Lcom/android/server/audio/PlaybackActivityMonitor;Landroid/os/Looper;)V
PLcom/android/server/audio/PlaybackActivityMonitor$1;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/audio/PlaybackActivityMonitor$AudioAttrEvent;-><init>(ILandroid/media/AudioAttributes;)V
+PLcom/android/server/audio/PlaybackActivityMonitor$AudioAttrEvent;-><init>(ILandroid/media/AudioPlaybackConfiguration$FormatInfo;)V
+PLcom/android/server/audio/PlaybackActivityMonitor$AudioAttrEvent;->eventToString()Ljava/lang/String;
PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;-><init>()V
-PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;-><init>(Lcom/android/server/audio/PlaybackActivityMonitor$DuckingManager-IA;)V
PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->removeReleased(Landroid/media/AudioPlaybackConfiguration;)V
PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->unduckUid(ILjava/util/HashMap;)V
-HPLcom/android/server/audio/PlaybackActivityMonitor$NewPlayerEvent;-><init>(Landroid/media/AudioPlaybackConfiguration;)V
-PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;-><init>(Landroid/media/IPlaybackConfigDispatcher;Z)V
+PLcom/android/server/audio/PlaybackActivityMonitor$NewPlayerEvent;-><init>(Landroid/media/AudioPlaybackConfiguration;Ljava/lang/String;)V
+PLcom/android/server/audio/PlaybackActivityMonitor$NewPlayerEvent;->eventToString()Ljava/lang/String;
+PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;-><init>(Landroid/media/IPlaybackConfigDispatcher;ZII)V
+PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;->binderDied()V
PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;->dispatchPlaybackConfigChange(Ljava/util/List;Z)V
-PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;->init()Z
-PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;->isPrivileged()Z
-PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;->reachedMaxErrorCount()Z
-PLcom/android/server/audio/PlaybackActivityMonitor$PlayerEvent;-><init>(III)V
-PLcom/android/server/audio/PlaybackActivityMonitor;->-$$Nest$fgetmPlayerLock(Lcom/android/server/audio/PlaybackActivityMonitor;)Ljava/lang/Object;
-PLcom/android/server/audio/PlaybackActivityMonitor;->-$$Nest$fgetmPortIdToPiid(Lcom/android/server/audio/PlaybackActivityMonitor;)Landroid/util/SparseIntArray;
+PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;->toString()Ljava/lang/String;
+PLcom/android/server/audio/PlaybackActivityMonitor$PlayerEvent;-><init>(II[I)V
+PLcom/android/server/audio/PlaybackActivityMonitor$PlayerEvent;->eventToString()Ljava/lang/String;
PLcom/android/server/audio/PlaybackActivityMonitor;-><clinit>()V
-PLcom/android/server/audio/PlaybackActivityMonitor;-><init>(Landroid/content/Context;ILjava/util/function/Consumer;)V
+PLcom/android/server/audio/PlaybackActivityMonitor;-><init>(Landroid/content/Context;ILcom/android/server/audio/AudioService$$ExternalSyntheticLambda17;Lcom/android/server/audio/AudioService$$ExternalSyntheticLambda19;)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->anonymizeForPublicConsumption(Ljava/util/List;)Ljava/util/ArrayList;
PLcom/android/server/audio/PlaybackActivityMonitor;->checkConfigurationCaller(ILandroid/media/AudioPlaybackConfiguration;I)Z
PLcom/android/server/audio/PlaybackActivityMonitor;->checkVolumeForPrivilegedAlarm(Landroid/media/AudioPlaybackConfiguration;I)V
-PLcom/android/server/audio/PlaybackActivityMonitor;->dispatchPlaybackChange(Z)V
+HPLcom/android/server/audio/PlaybackActivityMonitor;->dispatchPlaybackChange(Z)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/audio/PlaybackActivityMonitor;->ignorePlayerIId(I)V
-PLcom/android/server/audio/PlaybackActivityMonitor;->initEventHandler()V
PLcom/android/server/audio/PlaybackActivityMonitor;->maybeMutePlayerAwaitingConnection(Landroid/media/AudioPlaybackConfiguration;)V
-PLcom/android/server/audio/PlaybackActivityMonitor;->playerAttributes(ILandroid/media/AudioAttributes;I)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->mutePlayersForCall([I)V
PLcom/android/server/audio/PlaybackActivityMonitor;->playerDeath(I)V
-PLcom/android/server/audio/PlaybackActivityMonitor;->playerEvent(IIII)V
-PLcom/android/server/audio/PlaybackActivityMonitor;->portEvent(IILandroid/os/PersistableBundle;I)V
PLcom/android/server/audio/PlaybackActivityMonitor;->registerPlaybackCallback(Landroid/media/IPlaybackConfigDispatcher;Z)V
-PLcom/android/server/audio/PlaybackActivityMonitor;->releasePlayer(II)V
-PLcom/android/server/audio/PlaybackActivityMonitor;->restoreVShapedPlayers(Lcom/android/server/audio/FocusRequester;)V
-HPLcom/android/server/audio/PlaybackActivityMonitor;->trackPlayer(Landroid/media/PlayerBase$PlayerIdCard;)I
+HPLcom/android/server/audio/PlaybackActivityMonitor;->releasePlayer(II)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->unmutePlayersForCall()V
+PLcom/android/server/audio/PlaybackActivityMonitor;->unregisterPlaybackCallback(Landroid/media/IPlaybackConfigDispatcher;)V
PLcom/android/server/audio/RecordingActivityMonitor$RecMonitorClient;-><init>(Landroid/media/IRecordingConfigDispatcher;Z)V
-PLcom/android/server/audio/RecordingActivityMonitor$RecMonitorClient;->init()Z
+PLcom/android/server/audio/RecordingActivityMonitor$RecorderDeathHandler;-><init>(ILandroid/os/IBinder;)V
+PLcom/android/server/audio/RecordingActivityMonitor$RecordingEvent;-><init>(IILandroid/media/AudioRecordingConfiguration;)V
+PLcom/android/server/audio/RecordingActivityMonitor$RecordingEvent;->eventToString()Ljava/lang/String;
+PLcom/android/server/audio/RecordingActivityMonitor$RecordingState;-><init>(ILcom/android/server/audio/RecordingActivityMonitor$RecorderDeathHandler;)V
+PLcom/android/server/audio/RecordingActivityMonitor$RecordingState;->isActiveConfiguration()Z
PLcom/android/server/audio/RecordingActivityMonitor;-><clinit>()V
PLcom/android/server/audio/RecordingActivityMonitor;-><init>(Landroid/content/Context;)V
-PLcom/android/server/audio/RecordingActivityMonitor;->initMonitor()V
+PLcom/android/server/audio/RecordingActivityMonitor;->dispatchCallbacks(Ljava/util/List;)V
+PLcom/android/server/audio/RecordingActivityMonitor;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/audio/RecordingActivityMonitor;->getActiveRecordingConfigurations(Z)Ljava/util/List;
+PLcom/android/server/audio/RecordingActivityMonitor;->isRecordingActiveForUid(I)Z
+PLcom/android/server/audio/RecordingActivityMonitor;->onRecordingConfigurationChanged(IIIIIIZ[I[Landroid/media/audiofx/AudioEffect$Descriptor;[Landroid/media/audiofx/AudioEffect$Descriptor;ILjava/lang/String;)V
PLcom/android/server/audio/RecordingActivityMonitor;->registerRecordingCallback(Landroid/media/IRecordingConfigDispatcher;Z)V
-PLcom/android/server/audio/SettingsAdapter;-><init>()V
-PLcom/android/server/audio/SettingsAdapter;->getDefaultAdapter()Lcom/android/server/audio/SettingsAdapter;
-PLcom/android/server/audio/SettingsAdapter;->getGlobalInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
-PLcom/android/server/audio/SettingsAdapter;->getGlobalString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/audio/SettingsAdapter;->getSecureIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I
-PLcom/android/server/audio/SettingsAdapter;->getSecureStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String;
-HPLcom/android/server/audio/SettingsAdapter;->getSystemIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I
-PLcom/android/server/audio/SettingsAdapter;->putGlobalInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
-PLcom/android/server/audio/SettingsAdapter;->putSystemIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)Z
+PLcom/android/server/audio/RecordingActivityMonitor;->unregisterRecordingCallback(Landroid/media/IRecordingConfigDispatcher;)V
+PLcom/android/server/audio/RecordingActivityMonitor;->updateSnapshot(IILandroid/media/AudioRecordingConfiguration;)Ljava/util/List;
+PLcom/android/server/audio/ServiceHolder$$ExternalSyntheticLambda0;-><init>(Ljava/util/function/Consumer;Landroid/os/IInterface;I)V
+PLcom/android/server/audio/ServiceHolder$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/audio/ServiceHolder$1;-><init>(Lcom/android/server/audio/ServiceHolder;)V
+PLcom/android/server/audio/ServiceHolder$1;->onRegistration(Ljava/lang/String;Landroid/os/IBinder;)V
+PLcom/android/server/audio/ServiceHolder;-><init>(Lcom/android/server/audio/DefaultAudioPolicyFacade$$ExternalSyntheticLambda0;Ljava/util/concurrent/Executor;)V
+PLcom/android/server/audio/ServiceHolder;->onServiceInited(Landroid/os/IBinder;)Landroid/os/IInterface;
PLcom/android/server/audio/SoundDoseHelper$1;-><init>(Lcom/android/server/audio/SoundDoseHelper;)V
-PLcom/android/server/audio/SoundDoseHelper;-><init>(Lcom/android/server/audio/AudioService;Landroid/content/Context;Lcom/android/server/audio/AudioService$AudioHandler;Lcom/android/server/audio/SettingsAdapter;Lcom/android/server/audio/AudioService$ISafeHearingVolumeController;)V
-PLcom/android/server/audio/SoundDoseHelper;->configureSafeMedia(ZLjava/lang/String;)V
+PLcom/android/server/audio/SoundDoseHelper;-><init>(Lcom/android/server/audio/AudioService;Landroid/content/Context;Lcom/android/server/audio/AudioService$AudioHandler;Lcom/android/server/audio/SettingsAdapter;Lcom/android/server/audio/AudioService$VolumeController;)V
+PLcom/android/server/audio/SoundDoseHelper;->checkSafeMediaVolume_l(III)Z
+PLcom/android/server/audio/SoundDoseHelper;->configureSafeMedia(Z)V
PLcom/android/server/audio/SoundDoseHelper;->enforceSafeMediaVolume(Ljava/lang/String;)V
-PLcom/android/server/audio/SoundDoseHelper;->enforceSafeMediaVolumeIfActive(Ljava/lang/String;)V
-PLcom/android/server/audio/SoundDoseHelper;->getSafeDeviceMediaVolumeIndex(I)I
PLcom/android/server/audio/SoundDoseHelper;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/audio/SoundDoseHelper;->initCachedAudioDeviceCategories(Ljava/util/Collection;)V
PLcom/android/server/audio/SoundDoseHelper;->initCsd()V
PLcom/android/server/audio/SoundDoseHelper;->initSafeMediaVolumeIndex()V
-PLcom/android/server/audio/SoundDoseHelper;->initSafeVolumes()V
-PLcom/android/server/audio/SoundDoseHelper;->onConfigureSafeMedia(ZLjava/lang/String;)V
-PLcom/android/server/audio/SoundDoseHelper;->onPersistSafeVolumeState(I)V
-PLcom/android/server/audio/SoundDoseHelper;->restoreMusicActiveMs()V
+PLcom/android/server/audio/SoundDoseHelper;->safeDevicesContains(I)Z
PLcom/android/server/audio/SoundDoseHelper;->safeMediaVolumeIndex(I)I
+PLcom/android/server/audio/SoundDoseHelper;->scheduleMusicActiveCheck()V
+PLcom/android/server/audio/SoundDoseHelper;->setAudioDeviceCategory(ILjava/lang/String;Z)V
PLcom/android/server/audio/SoundDoseHelper;->updateCsdEnabled(Ljava/lang/String;)V
-PLcom/android/server/audio/SoundDoseHelper;->updateDoseAttenuation(IIIZ)V
PLcom/android/server/audio/SoundDoseHelper;->updateSafeMediaVolume_l(Ljava/lang/String;)V
-PLcom/android/server/audio/SoundEffectsHelper$1;-><init>(Lcom/android/server/audio/SoundEffectsHelper;)V
+PLcom/android/server/audio/SoundDoseHelper;->willDisplayWarningAfterCheckVolume(IIII)Z
+PLcom/android/server/audio/SoundEffectsHelper$1;-><init>(Lcom/android/server/audio/SoundEffectsHelper;I)V
PLcom/android/server/audio/SoundEffectsHelper$1;->run(Z)V
PLcom/android/server/audio/SoundEffectsHelper$Resource;-><init>(Ljava/lang/String;)V
PLcom/android/server/audio/SoundEffectsHelper$SfxHandler;-><init>(Lcom/android/server/audio/SoundEffectsHelper;)V
-PLcom/android/server/audio/SoundEffectsHelper$SfxHandler;-><init>(Lcom/android/server/audio/SoundEffectsHelper;Lcom/android/server/audio/SoundEffectsHelper$SfxHandler-IA;)V
PLcom/android/server/audio/SoundEffectsHelper$SfxHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/audio/SoundEffectsHelper$SfxWorker;-><init>(Lcom/android/server/audio/SoundEffectsHelper;)V
PLcom/android/server/audio/SoundEffectsHelper$SfxWorker;->run()V
PLcom/android/server/audio/SoundEffectsHelper$SoundPoolLoader;-><init>(Lcom/android/server/audio/SoundEffectsHelper;)V
-PLcom/android/server/audio/SoundEffectsHelper$SoundPoolLoader;->addHandler(Lcom/android/server/audio/SoundEffectsHelper$OnEffectsLoadCompleteHandler;)V
PLcom/android/server/audio/SoundEffectsHelper$SoundPoolLoader;->onComplete(Z)V
-PLcom/android/server/audio/SoundEffectsHelper;->-$$Nest$fgetmSoundPool(Lcom/android/server/audio/SoundEffectsHelper;)Landroid/media/SoundPool;
-PLcom/android/server/audio/SoundEffectsHelper;->-$$Nest$fputmSfxHandler(Lcom/android/server/audio/SoundEffectsHelper;Lcom/android/server/audio/SoundEffectsHelper$SfxHandler;)V
-PLcom/android/server/audio/SoundEffectsHelper;->-$$Nest$fputmSoundPoolLoader(Lcom/android/server/audio/SoundEffectsHelper;Lcom/android/server/audio/SoundEffectsHelper$SoundPoolLoader;)V
-PLcom/android/server/audio/SoundEffectsHelper;->-$$Nest$mlogEvent(Lcom/android/server/audio/SoundEffectsHelper;Ljava/lang/String;)V
PLcom/android/server/audio/SoundEffectsHelper;->-$$Nest$monLoadSoundEffects(Lcom/android/server/audio/SoundEffectsHelper;Lcom/android/server/audio/SoundEffectsHelper$OnEffectsLoadCompleteHandler;)V
-PLcom/android/server/audio/SoundEffectsHelper;-><init>(Landroid/content/Context;Ljava/util/function/Consumer;)V
+PLcom/android/server/audio/SoundEffectsHelper;-><init>(Landroid/content/Context;Lcom/android/server/audio/AudioService$$ExternalSyntheticLambda17;)V
PLcom/android/server/audio/SoundEffectsHelper;->allNavigationRepeatSoundsParsed(Ljava/util/Map;)Z
PLcom/android/server/audio/SoundEffectsHelper;->findOrAddResourceByFileName(Ljava/lang/String;)I
-HPLcom/android/server/audio/SoundEffectsHelper;->getResourceFilePath(Lcom/android/server/audio/SoundEffectsHelper$Resource;)Ljava/lang/String;
-PLcom/android/server/audio/SoundEffectsHelper;->loadSoundAssetDefaults()V
-PLcom/android/server/audio/SoundEffectsHelper;->loadSoundAssets()V
-PLcom/android/server/audio/SoundEffectsHelper;->loadSoundEffects(Lcom/android/server/audio/SoundEffectsHelper$OnEffectsLoadCompleteHandler;)V
+PLcom/android/server/audio/SoundEffectsHelper;->getResourceFilePath(Lcom/android/server/audio/SoundEffectsHelper$Resource;)Ljava/lang/String;
PLcom/android/server/audio/SoundEffectsHelper;->logEvent(Ljava/lang/String;)V
-HPLcom/android/server/audio/SoundEffectsHelper;->onLoadSoundEffects(Lcom/android/server/audio/SoundEffectsHelper$OnEffectsLoadCompleteHandler;)V
-PLcom/android/server/audio/SoundEffectsHelper;->sendMsg(IIILjava/lang/Object;I)V
-PLcom/android/server/audio/SoundEffectsHelper;->startWorker()V
-PLcom/android/server/audio/SpatializerHelper$1;-><init>(I)V
PLcom/android/server/audio/SpatializerHelper$SpatializerHeadTrackingCallback;-><init>(Lcom/android/server/audio/SpatializerHelper;)V
-PLcom/android/server/audio/SpatializerHelper$SpatializerHeadTrackingCallback;-><init>(Lcom/android/server/audio/SpatializerHelper;Lcom/android/server/audio/SpatializerHelper$SpatializerHeadTrackingCallback-IA;)V
PLcom/android/server/audio/SpatializerHelper;-><clinit>()V
PLcom/android/server/audio/SpatializerHelper;-><init>(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioSystemAdapter;Lcom/android/server/audio/AudioDeviceBroker;ZZZ)V
+PLcom/android/server/audio/SpatializerHelper;->findSACompatibleDeviceStateForAudioDeviceAttributes(Landroid/media/AudioDeviceAttributes;)Lcom/android/server/audio/AdiDeviceState;
+PLcom/android/server/audio/SpatializerHelper;->getCanonicalDeviceType(II)I
PLcom/android/server/audio/SpatializerHelper;->init(Z)V
+PLcom/android/server/audio/SpatializerHelper;->isDeviceCompatibleWithSpatializationModes(Landroid/media/AudioDeviceAttributes;)Z
+PLcom/android/server/audio/SpatializerHelper;->isSADevice(Lcom/android/server/audio/AdiDeviceState;)Z
PLcom/android/server/audio/SpatializerHelper;->loglogi(Ljava/lang/String;)V
+PLcom/android/server/audio/SpatializerHelper;->refreshDevice(Landroid/media/AudioDeviceAttributes;Z)V
+PLcom/android/server/audio/SpatializerHelper;->removeCompatibleAudioDevice(Landroid/media/AudioDeviceAttributes;)V
PLcom/android/server/audio/SpatializerHelper;->setFeatureEnabled(Z)V
PLcom/android/server/audio/SystemServerAdapter$1;-><init>(Lcom/android/server/audio/SystemServerAdapter;)V
PLcom/android/server/audio/SystemServerAdapter$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/audio/SystemServerAdapter;-><init>(Landroid/content/Context;)V
-PLcom/android/server/audio/SystemServerAdapter;->getDefaultAdapter(Landroid/content/Context;)Lcom/android/server/audio/SystemServerAdapter;
-PLcom/android/server/audio/SystemServerAdapter;->isPrivileged()Z
-PLcom/android/server/audio/SystemServerAdapter;->registerUserStartedReceiver(Landroid/content/Context;)V
+PLcom/android/server/backup/AppGrammaticalGenderBackupHelper;-><init>(I)V
+PLcom/android/server/backup/AppGrammaticalGenderBackupHelper;->performBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V
+PLcom/android/server/backup/AppSpecificLocalesBackupHelper;-><init>(I)V
+PLcom/android/server/backup/AppSpecificLocalesBackupHelper;->getBackupPayload(Ljava/lang/String;)[B
+PLcom/android/server/backup/BackupAgentConnectionManager$BackupAgentConnection;-><init>(Landroid/content/pm/ApplicationInfo;IZ)V
+PLcom/android/server/backup/BackupAgentConnectionManager;-><init>(Lcom/android/server/backup/internal/LifecycleOperationStorage;Landroid/content/pm/PackageManager;Lcom/android/server/backup/UserBackupManagerService;I)V
+PLcom/android/server/backup/BackupAgentConnectionManager;->bindToAgentSynchronous(Landroid/content/pm/ApplicationInfo;II)Landroid/app/IBackupAgent;
+PLcom/android/server/backup/BackupAgentConnectionManager;->clearNoRestrictedModePackages()V
+PLcom/android/server/backup/BackupAgentConnectionManager;->getCallingUid()I
+PLcom/android/server/backup/BackupAgentConnectionManager;->setNoRestrictedModePackages(ILjava/util/Set;)V
+PLcom/android/server/backup/BackupAgentConnectionManager;->shouldUseRestrictedBackupModeForPackage(ILjava/lang/String;)Z
+PLcom/android/server/backup/BackupAgentConnectionManager;->unbindAgent(Landroid/content/pm/ApplicationInfo;Z)V
PLcom/android/server/backup/BackupAgentTimeoutParameters;-><init>(Landroid/os/Handler;Landroid/content/ContentResolver;)V
+PLcom/android/server/backup/BackupAgentTimeoutParameters;->getFullBackupAgentTimeoutMillis()J
+PLcom/android/server/backup/BackupAgentTimeoutParameters;->getKvBackupAgentTimeoutMillis()J
+PLcom/android/server/backup/BackupAgentTimeoutParameters;->getQuotaExceededTimeoutMillis()J
+PLcom/android/server/backup/BackupAgentTimeoutParameters;->getRestoreAgentTimeoutMillis(I)J
PLcom/android/server/backup/BackupAgentTimeoutParameters;->getSettingValue(Landroid/content/ContentResolver;)Ljava/lang/String;
PLcom/android/server/backup/BackupAgentTimeoutParameters;->update(Landroid/util/KeyValueListParser;)V
PLcom/android/server/backup/BackupAndRestoreFeatureFlags;->getBackupTransportFutureTimeoutMillis()J
-PLcom/android/server/backup/BackupManagerConstants;-><init>(Landroid/os/Handler;Landroid/content/ContentResolver;)V
-PLcom/android/server/backup/BackupManagerConstants;->getKeyValueBackupFuzzMilliseconds()J
+PLcom/android/server/backup/BackupManagerConstants;->getFullBackupIntervalMilliseconds()J
PLcom/android/server/backup/BackupManagerConstants;->getKeyValueBackupIntervalMilliseconds()J
-PLcom/android/server/backup/BackupManagerConstants;->getKeyValueBackupRequireCharging()Z
-PLcom/android/server/backup/BackupManagerConstants;->getKeyValueBackupRequiredNetworkType()I
PLcom/android/server/backup/BackupManagerConstants;->getSettingValue(Landroid/content/ContentResolver;)Ljava/lang/String;
PLcom/android/server/backup/BackupManagerConstants;->update(Landroid/util/KeyValueListParser;)V
PLcom/android/server/backup/BackupManagerService$1;-><init>(Lcom/android/server/backup/BackupManagerService;)V
PLcom/android/server/backup/BackupManagerService$Lifecycle$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/backup/BackupManagerService$Lifecycle$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/backup/BackupManagerService$Lifecycle;->$r8$lambda$tO1pYFIf1Pz1lck-Xhogn_8LPto(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/backup/BackupManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/backup/BackupManagerService$Lifecycle;-><init>(Landroid/content/Context;Lcom/android/server/backup/BackupManagerService;)V
-PLcom/android/server/backup/BackupManagerService$Lifecycle;->lambda$onUserUnlocking$0(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/backup/BackupManagerService$Lifecycle;->onStart()V
PLcom/android/server/backup/BackupManagerService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/backup/BackupManagerService$Lifecycle;->publishService(Ljava/lang/String;Landroid/os/IBinder;)V
-PLcom/android/server/backup/BackupManagerService;->-$$Nest$fputmHasFirstUserUnlockedSinceBoot(Lcom/android/server/backup/BackupManagerService;Z)V
-PLcom/android/server/backup/BackupManagerService;->-$$Nest$mupdateDefaultBackupUserIdIfNeeded(Lcom/android/server/backup/BackupManagerService;)V
PLcom/android/server/backup/BackupManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/backup/BackupManagerService;->agentConnectedForUser(ILjava/lang/String;Landroid/os/IBinder;)V
+PLcom/android/server/backup/BackupManagerService;->backupNow()V
+PLcom/android/server/backup/BackupManagerService;->backupNowForUser(I)V
PLcom/android/server/backup/BackupManagerService;->binderGetCallingUserId()I
-PLcom/android/server/backup/BackupManagerService;->dataChanged(ILjava/lang/String;)V
PLcom/android/server/backup/BackupManagerService;->dataChanged(Ljava/lang/String;)V
-PLcom/android/server/backup/BackupManagerService;->dataChangedForUser(ILjava/lang/String;)V
-PLcom/android/server/backup/BackupManagerService;->enforceCallingPermissionOnUserId(ILjava/lang/String;)V
+HPLcom/android/server/backup/BackupManagerService;->dataChangedForUser(ILjava/lang/String;)V
+PLcom/android/server/backup/BackupManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/backup/BackupManagerService;->getCurrentTransport()Ljava/lang/String;
-PLcom/android/server/backup/BackupManagerService;->getCurrentTransport(I)Ljava/lang/String;
-PLcom/android/server/backup/BackupManagerService;->getCurrentTransportComponent(I)Landroid/content/ComponentName;
PLcom/android/server/backup/BackupManagerService;->getCurrentTransportComponentForUser(I)Landroid/content/ComponentName;
PLcom/android/server/backup/BackupManagerService;->getCurrentTransportForUser(I)Ljava/lang/String;
-PLcom/android/server/backup/BackupManagerService;->getServiceForUserIfCallerHasPermission(ILjava/lang/String;)Lcom/android/server/backup/UserBackupManagerService;
+PLcom/android/server/backup/BackupManagerService;->getDataManagementIntentForUser(ILjava/lang/String;)Landroid/content/Intent;
+HPLcom/android/server/backup/BackupManagerService;->getServiceForUserIfCallerHasPermission(ILjava/lang/String;)Lcom/android/server/backup/UserBackupManagerService;
PLcom/android/server/backup/BackupManagerService;->getSuppressFileForUser(I)Ljava/io/File;
PLcom/android/server/backup/BackupManagerService;->getUserManager()Landroid/os/UserManager;
+PLcom/android/server/backup/BackupManagerService;->isAppEligibleForBackupForUser(ILjava/lang/String;)Z
PLcom/android/server/backup/BackupManagerService;->isBackupActivatedForUser(I)Z
PLcom/android/server/backup/BackupManagerService;->isBackupDisabled()Z
PLcom/android/server/backup/BackupManagerService;->isBackupEnabled()Z
-PLcom/android/server/backup/BackupManagerService;->isBackupEnabled(I)Z
PLcom/android/server/backup/BackupManagerService;->isBackupEnabledForUser(I)Z
+PLcom/android/server/backup/BackupManagerService;->isBackupServiceActive(I)Z
HPLcom/android/server/backup/BackupManagerService;->isUserReadyForBackup(I)Z
+PLcom/android/server/backup/BackupManagerService;->listAllTransports()[Ljava/lang/String;
+PLcom/android/server/backup/BackupManagerService;->listAllTransportsForUser(I)[Ljava/lang/String;
+PLcom/android/server/backup/BackupManagerService;->opCompleteForUser(IIJ)V
PLcom/android/server/backup/BackupManagerService;->postToHandler(Ljava/lang/Runnable;)V
+PLcom/android/server/backup/BackupManagerService;->requestBackup(I[Ljava/lang/String;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;I)I
+PLcom/android/server/backup/BackupManagerService;->requestBackup([Ljava/lang/String;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;I)I
+PLcom/android/server/backup/BackupManagerService;->restoreAtInstallForUser(ILjava/lang/String;I)V
+PLcom/android/server/backup/BackupManagerService;->setBackupEnabled(Z)V
+PLcom/android/server/backup/BackupManagerService;->setBackupEnabledForUser(IZ)V
PLcom/android/server/backup/BackupManagerService;->startServiceForUser(I)V
PLcom/android/server/backup/BackupManagerService;->startServiceForUser(ILcom/android/server/backup/UserBackupManagerService;)V
-PLcom/android/server/backup/BackupManagerService;->updateDefaultBackupUserIdIfNeeded()V
-PLcom/android/server/backup/BackupManagerService;->updateTransportAttributes(ILandroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V
PLcom/android/server/backup/BackupManagerService;->updateTransportAttributesForUser(ILandroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V
-PLcom/android/server/backup/BackupPasswordManager$PasswordHashFileCodec;-><init>()V
-PLcom/android/server/backup/BackupPasswordManager$PasswordHashFileCodec;-><init>(Lcom/android/server/backup/BackupPasswordManager$PasswordHashFileCodec-IA;)V
-PLcom/android/server/backup/BackupPasswordManager$PasswordVersionFileCodec;-><init>()V
-PLcom/android/server/backup/BackupPasswordManager$PasswordVersionFileCodec;-><init>(Lcom/android/server/backup/BackupPasswordManager$PasswordVersionFileCodec-IA;)V
PLcom/android/server/backup/BackupPasswordManager;-><init>(Landroid/content/Context;Ljava/io/File;Ljava/security/SecureRandom;)V
-PLcom/android/server/backup/BackupPasswordManager;->getPasswordHashFile()Ljava/io/File;
-PLcom/android/server/backup/BackupPasswordManager;->getPasswordHashFileCodec()Lcom/android/server/backup/utils/DataStreamFileCodec;
-PLcom/android/server/backup/BackupPasswordManager;->getPasswordVersionFileCodec()Lcom/android/server/backup/utils/DataStreamFileCodec;
-PLcom/android/server/backup/BackupPasswordManager;->loadStateFromFilesystem()V
+PLcom/android/server/backup/BackupUtils;->hashSignatureArray([Landroid/content/pm/Signature;)Ljava/util/ArrayList;
PLcom/android/server/backup/DataChangedJournal;-><init>(Ljava/io/File;)V
-HPLcom/android/server/backup/DataChangedJournal;->addPackage(Ljava/lang/String;)V
PLcom/android/server/backup/DataChangedJournal;->equals(Ljava/lang/Object;)Z
-HPLcom/android/server/backup/DataChangedJournal;->forEach(Ljava/util/function/Consumer;)V
-PLcom/android/server/backup/DataChangedJournal;->listJournals(Ljava/io/File;)Ljava/util/ArrayList;
-PLcom/android/server/backup/DataChangedJournal;->newJournal(Ljava/io/File;)Lcom/android/server/backup/DataChangedJournal;
-PLcom/android/server/backup/JobIdManager;->getJobIdForUserId(III)I
+PLcom/android/server/backup/DataChangedJournal;->forEach(Lcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda10;)V
+PLcom/android/server/backup/FullBackupJob;-><clinit>()V
+PLcom/android/server/backup/FullBackupJob;-><init>()V
+PLcom/android/server/backup/FullBackupJob;->finishBackupPass(I)V
+PLcom/android/server/backup/FullBackupJob;->getJobIdForUserId(I)I
+HPLcom/android/server/backup/FullBackupJob;->onStartJob(Landroid/app/job/JobParameters;)Z
+PLcom/android/server/backup/FullBackupJob;->onStopJob(Landroid/app/job/JobParameters;)Z
+HPLcom/android/server/backup/FullBackupJob;->schedule(ILandroid/content/Context;JLcom/android/server/backup/UserBackupManagerService;)V
PLcom/android/server/backup/KeyValueBackupJob;-><clinit>()V
-PLcom/android/server/backup/KeyValueBackupJob;->cancel(ILandroid/content/Context;)V
-PLcom/android/server/backup/KeyValueBackupJob;->clearScheduledForUserId(I)V
+PLcom/android/server/backup/KeyValueBackupJob;-><init>()V
+PLcom/android/server/backup/KeyValueBackupJob;->cancel(Landroid/content/Context;I)V
PLcom/android/server/backup/KeyValueBackupJob;->getJobIdForUserId(I)I
-HPLcom/android/server/backup/KeyValueBackupJob;->schedule(ILandroid/content/Context;JLcom/android/server/backup/UserBackupManagerService;)V
-PLcom/android/server/backup/KeyValueBackupJob;->schedule(ILandroid/content/Context;Lcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/KeyValueBackupJob;->onStartJob(Landroid/app/job/JobParameters;)Z
+PLcom/android/server/backup/KeyValueBackupJob;->schedule(ILandroid/content/Context;JLcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/PackageManagerBackupAgent$Metadata;-><init>(JLjava/util/ArrayList;)V
+PLcom/android/server/backup/PackageManagerBackupAgent;-><init>(Landroid/content/pm/PackageManager;ILcom/android/server/backup/utils/BackupEligibilityRules;)V
PLcom/android/server/backup/PackageManagerBackupAgent;->getStorableApplications(Landroid/content/pm/PackageManager;ILcom/android/server/backup/utils/BackupEligibilityRules;)Ljava/util/List;
+PLcom/android/server/backup/PackageManagerBackupAgent;->onBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V
+PLcom/android/server/backup/PackageManagerBackupAgent;->writeStateFile(Ljava/util/List;Landroid/os/ParcelFileDescriptor;)V
+PLcom/android/server/backup/PeopleBackupHelper;-><clinit>()V
+PLcom/android/server/backup/PeopleBackupHelper;-><init>(I)V
+PLcom/android/server/backup/PeopleBackupHelper;->getBackupPayload(Ljava/lang/String;)[B
PLcom/android/server/backup/ProcessedPackagesJournal;-><init>(Ljava/io/File;)V
-PLcom/android/server/backup/ProcessedPackagesJournal;->init()V
PLcom/android/server/backup/ProcessedPackagesJournal;->loadFromDisk()V
-PLcom/android/server/backup/SetUtils;->union(Ljava/util/Set;Ljava/util/Set;)Ljava/util/Set;
-PLcom/android/server/backup/TransportManager$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/backup/TransportManager$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/backup/SystemBackupAgent;-><clinit>()V
+PLcom/android/server/backup/SystemBackupAgent;-><init>()V
+PLcom/android/server/backup/SystemBackupAgent;->addHelperIfEligibleForUser(Ljava/lang/String;Landroid/app/backup/BackupHelperWithLogger;)V
+PLcom/android/server/backup/SystemBackupAgent;->onCreate(Landroid/os/UserHandle;I)V
+PLcom/android/server/backup/SystemGrammaticalGenderBackupHelper;-><init>(I)V
+PLcom/android/server/backup/SystemGrammaticalGenderBackupHelper;->performBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V
PLcom/android/server/backup/TransportManager$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
-PLcom/android/server/backup/TransportManager$TransportDescription;->-$$Nest$fgetname(Lcom/android/server/backup/TransportManager$TransportDescription;)Ljava/lang/String;
-PLcom/android/server/backup/TransportManager$TransportDescription;->-$$Nest$fputconfigurationIntent(Lcom/android/server/backup/TransportManager$TransportDescription;Landroid/content/Intent;)V
-PLcom/android/server/backup/TransportManager$TransportDescription;->-$$Nest$fputcurrentDestinationString(Lcom/android/server/backup/TransportManager$TransportDescription;Ljava/lang/String;)V
-PLcom/android/server/backup/TransportManager$TransportDescription;->-$$Nest$fputdataManagementIntent(Lcom/android/server/backup/TransportManager$TransportDescription;Landroid/content/Intent;)V
-PLcom/android/server/backup/TransportManager$TransportDescription;->-$$Nest$fputdataManagementLabel(Lcom/android/server/backup/TransportManager$TransportDescription;Ljava/lang/CharSequence;)V
-PLcom/android/server/backup/TransportManager$TransportDescription;->-$$Nest$fputname(Lcom/android/server/backup/TransportManager$TransportDescription;Ljava/lang/String;)V
+PLcom/android/server/backup/TransportManager$$ExternalSyntheticLambda2;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/backup/TransportManager$$ExternalSyntheticLambda2;->test(Ljava/lang/Object;)Z
PLcom/android/server/backup/TransportManager$TransportDescription;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V
-PLcom/android/server/backup/TransportManager$TransportDescription;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;Lcom/android/server/backup/TransportManager$TransportDescription-IA;)V
-PLcom/android/server/backup/TransportManager;->$r8$lambda$velBFHaSmoGaDDo2t7urM380RiQ(Landroid/content/ComponentName;)Z
PLcom/android/server/backup/TransportManager;-><init>(ILandroid/content/Context;Ljava/util/Set;Ljava/lang/String;)V
PLcom/android/server/backup/TransportManager;->addUserIdToLogMessage(ILjava/lang/String;)Ljava/lang/String;
-PLcom/android/server/backup/TransportManager;->checkCanUseTransport()V
+PLcom/android/server/backup/TransportManager;->disposeOfTransportClient(Lcom/android/server/backup/transport/TransportConnection;Ljava/lang/String;)V
+PLcom/android/server/backup/TransportManager;->dumpTransportClients(Ljava/io/PrintWriter;)V
+PLcom/android/server/backup/TransportManager;->getCurrentTransportClient(Ljava/lang/String;)Lcom/android/server/backup/transport/TransportConnection;
+PLcom/android/server/backup/TransportManager;->getCurrentTransportClientOrThrow()Lcom/android/server/backup/transport/TransportConnection;
PLcom/android/server/backup/TransportManager;->getCurrentTransportComponent()Landroid/content/ComponentName;
-PLcom/android/server/backup/TransportManager;->getCurrentTransportName()Ljava/lang/String;
-PLcom/android/server/backup/TransportManager;->getRegisteredTransportComponentLocked(Ljava/lang/String;)Landroid/content/ComponentName;
-PLcom/android/server/backup/TransportManager;->getRegisteredTransportComponentOrThrowLocked(Ljava/lang/String;)Landroid/content/ComponentName;
-PLcom/android/server/backup/TransportManager;->getRegisteredTransportEntryLocked(Ljava/lang/String;)Ljava/util/Map$Entry;
+PLcom/android/server/backup/TransportManager;->getRegisteredTransportDescriptionOrThrowLocked(Landroid/content/ComponentName;)Lcom/android/server/backup/TransportManager$TransportDescription;
+PLcom/android/server/backup/TransportManager;->getRegisteredTransportDescriptionOrThrowLocked(Ljava/lang/String;)Lcom/android/server/backup/TransportManager$TransportDescription;
+HPLcom/android/server/backup/TransportManager;->getRegisteredTransportEntryLocked(Ljava/lang/String;)Ljava/util/Map$Entry;
+PLcom/android/server/backup/TransportManager;->getTransportClient(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/backup/transport/TransportConnection;
+PLcom/android/server/backup/TransportManager;->getTransportClientOrThrow(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/backup/transport/TransportConnection;
+PLcom/android/server/backup/TransportManager;->getTransportDirName(Landroid/content/ComponentName;)Ljava/lang/String;
+PLcom/android/server/backup/TransportManager;->getTransportDirName(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/backup/TransportManager;->isTransportRegistered(Ljava/lang/String;)Z
PLcom/android/server/backup/TransportManager;->isTransportTrusted(Landroid/content/ComponentName;)Z
-PLcom/android/server/backup/TransportManager;->lambda$registerTransports$2(Landroid/content/ComponentName;)Z
+PLcom/android/server/backup/TransportManager;->onPackageRemoved(Ljava/lang/String;)V
PLcom/android/server/backup/TransportManager;->registerTransport(Landroid/content/ComponentName;)I
PLcom/android/server/backup/TransportManager;->registerTransport(Landroid/content/ComponentName;Lcom/android/server/backup/transport/BackupTransportClient;)V
-PLcom/android/server/backup/TransportManager;->registerTransports()V
PLcom/android/server/backup/TransportManager;->registerTransportsForIntent(Landroid/content/Intent;Ljava/util/function/Predicate;)V
-PLcom/android/server/backup/TransportManager;->setOnTransportRegisteredListener(Lcom/android/server/backup/transport/OnTransportRegisteredListener;)V
-PLcom/android/server/backup/TransportManager;->updateTransportAttributes(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V
-PLcom/android/server/backup/UserBackupManagerFilePersistedSettings;->readBackupEnableState(I)Z
-PLcom/android/server/backup/UserBackupManagerFilePersistedSettings;->readBackupEnableState(Ljava/io/File;)Z
+PLcom/android/server/backup/TransportManager;->registerTransportsFromPackage(Ljava/lang/String;Ljava/util/function/Predicate;)V
+HPLcom/android/server/backup/TransportManager;->updateTransportAttributes(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V
+PLcom/android/server/backup/UsageStatsBackupHelper;-><init>(I)V
+PLcom/android/server/backup/UsageStatsBackupHelper;->getBackupPayload(Ljava/lang/String;)[B
PLcom/android/server/backup/UserBackupManagerFiles;->getBaseStateDir(I)Ljava/io/File;
-PLcom/android/server/backup/UserBackupManagerFiles;->getDataDir(I)Ljava/io/File;
-PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/backup/UserBackupManagerService;Ljava/util/Set;)V
-PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;)V
+PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/backup/UserBackupManagerService;Lcom/android/server/backup/transport/TransportConnection;I)V
+PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda0;->onFinished(Ljava/lang/String;)V
+PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/backup/UserBackupManagerService;Ljava/util/Set;)V
+PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda10;->accept(Ljava/lang/Object;)V
+PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda1;->onTransportRegistered(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/backup/TransportManager;)V
+PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda2;-><init>(ILjava/lang/Object;)V
PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda2;->run()V
-PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
-PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda3;->run()V
-PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/backup/utils/BackupManagerMonitorDumpsysUtils;)V
-PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda4;->run()V
-PLcom/android/server/backup/UserBackupManagerService$1;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/backup/UserBackupManagerService$2;Ljava/lang/String;[Ljava/lang/String;)V
+PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/backup/UserBackupManagerService$1;-><init>(ILcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/UserBackupManagerService$1;->run()V
+PLcom/android/server/backup/UserBackupManagerService$2$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/backup/UserBackupManagerService$2;Ljava/lang/String;I)V
+PLcom/android/server/backup/UserBackupManagerService$2$$ExternalSyntheticLambda1;->run()V
PLcom/android/server/backup/UserBackupManagerService$2;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/UserBackupManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/backup/UserBackupManagerService$4;-><init>(Lcom/android/server/backup/UserBackupManagerService;Ljava/lang/String;Ljava/util/HashSet;)V
PLcom/android/server/backup/UserBackupManagerService$4;->run()V
PLcom/android/server/backup/UserBackupManagerService$BackupWakeLock;-><init>(Landroid/os/PowerManager$WakeLock;I)V
-PLcom/android/server/backup/UserBackupManagerService;->$r8$lambda$60zOjkfZNFT-L6ih-nuCamP1L9M(Lcom/android/server/backup/UserBackupManagerService;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/backup/UserBackupManagerService;->$r8$lambda$heFkS8m3IlrBwPfiAIdWm8iF68E(Lcom/android/server/backup/UserBackupManagerService;Ljava/util/Set;Ljava/lang/String;)V
-PLcom/android/server/backup/UserBackupManagerService;->$r8$lambda$qmyqqN_oMikkXxYcMY9KUtmLjwk(Lcom/android/server/backup/UserBackupManagerService;)V
-PLcom/android/server/backup/UserBackupManagerService;->-$$Nest$mdataChangedImpl(Lcom/android/server/backup/UserBackupManagerService;Ljava/lang/String;Ljava/util/HashSet;)V
-HPLcom/android/server/backup/UserBackupManagerService;-><init>(ILandroid/content/Context;Lcom/android/server/backup/BackupManagerService;Landroid/os/HandlerThread;Ljava/io/File;Ljava/io/File;Lcom/android/server/backup/TransportManager;)V
-PLcom/android/server/backup/UserBackupManagerService;->addPackageParticipantsLocked([Ljava/lang/String;)V
+PLcom/android/server/backup/UserBackupManagerService$BackupWakeLock;->acquire()V
+PLcom/android/server/backup/UserBackupManagerService$BackupWakeLock;->release()V
+PLcom/android/server/backup/UserBackupManagerService;->-$$Nest$mremovePackageParticipantsLocked(Lcom/android/server/backup/UserBackupManagerService;[Ljava/lang/String;I)V
+PLcom/android/server/backup/UserBackupManagerService;-><init>(ILandroid/content/Context;Lcom/android/server/backup/BackupManagerService;Landroid/os/HandlerThread;Ljava/io/File;Ljava/io/File;Lcom/android/server/backup/TransportManager;)V
PLcom/android/server/backup/UserBackupManagerService;->addPackageParticipantsLockedInner(Ljava/lang/String;Ljava/util/List;)V
PLcom/android/server/backup/UserBackupManagerService;->addUserIdToLogMessage(ILjava/lang/String;)Ljava/lang/String;
-HPLcom/android/server/backup/UserBackupManagerService;->allAgentPackages()Ljava/util/List;
+PLcom/android/server/backup/UserBackupManagerService;->allAgentPackages()Ljava/util/List;
+PLcom/android/server/backup/UserBackupManagerService;->backupNow()V
PLcom/android/server/backup/UserBackupManagerService;->createAndInitializeService(ILandroid/content/Context;Lcom/android/server/backup/BackupManagerService;Landroid/os/HandlerThread;Ljava/io/File;Ljava/io/File;Lcom/android/server/backup/TransportManager;)Lcom/android/server/backup/UserBackupManagerService;
-PLcom/android/server/backup/UserBackupManagerService;->createAndInitializeService(ILandroid/content/Context;Lcom/android/server/backup/BackupManagerService;Ljava/util/Set;)Lcom/android/server/backup/UserBackupManagerService;
-PLcom/android/server/backup/UserBackupManagerService;->dataChanged(Ljava/lang/String;)V
PLcom/android/server/backup/UserBackupManagerService;->dataChangedImpl(Ljava/lang/String;)V
-HPLcom/android/server/backup/UserBackupManagerService;->dataChangedImpl(Ljava/lang/String;Ljava/util/HashSet;)V
-HPLcom/android/server/backup/UserBackupManagerService;->dataChangedTargets(Ljava/lang/String;)Ljava/util/HashSet;
-PLcom/android/server/backup/UserBackupManagerService;->getAgentTimeoutParameters()Lcom/android/server/backup/BackupAgentTimeoutParameters;
-PLcom/android/server/backup/UserBackupManagerService;->getConstants()Lcom/android/server/backup/BackupManagerConstants;
-PLcom/android/server/backup/UserBackupManagerService;->getContext()Landroid/content/Context;
-PLcom/android/server/backup/UserBackupManagerService;->getCurrentTransport()Ljava/lang/String;
-PLcom/android/server/backup/UserBackupManagerService;->getCurrentTransportComponent()Landroid/content/ComponentName;
-PLcom/android/server/backup/UserBackupManagerService;->getEligibilityRules(Landroid/content/pm/PackageManager;ILandroid/content/Context;I)Lcom/android/server/backup/utils/BackupEligibilityRules;
-PLcom/android/server/backup/UserBackupManagerService;->getSetupCompleteSettingForUser(Landroid/content/Context;I)Z
-PLcom/android/server/backup/UserBackupManagerService;->getTransportManager()Lcom/android/server/backup/TransportManager;
-PLcom/android/server/backup/UserBackupManagerService;->getUserId()I
-PLcom/android/server/backup/UserBackupManagerService;->initPackageTracking()V
+PLcom/android/server/backup/UserBackupManagerService;->dataChangedImpl(Ljava/lang/String;Ljava/util/HashSet;)V
+HPLcom/android/server/backup/UserBackupManagerService;->dataChangedTargets(Ljava/lang/String;)Ljava/util/HashSet;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/backup/UserBackupManagerService;->dequeueFullBackupLocked(Ljava/lang/String;)V
+PLcom/android/server/backup/UserBackupManagerService;->dump(Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/backup/UserBackupManagerService;->dumpBMMEvents(Ljava/io/PrintWriter;)V
+PLcom/android/server/backup/UserBackupManagerService;->dumpInternal(Ljava/io/PrintWriter;)V
+PLcom/android/server/backup/UserBackupManagerService;->enqueueFullBackup(JLjava/lang/String;)V
+PLcom/android/server/backup/UserBackupManagerService;->fullBackupAllowable(Ljava/lang/String;)Z
+PLcom/android/server/backup/UserBackupManagerService;->generateRandomIntegerToken()I
+PLcom/android/server/backup/UserBackupManagerService;->getActivityManager()Landroid/app/IActivityManager;
+PLcom/android/server/backup/UserBackupManagerService;->getAvailableRestoreToken(Ljava/lang/String;)J
+PLcom/android/server/backup/UserBackupManagerService;->getBMMEventSender(Landroid/app/backup/IBackupManagerMonitor;)Lcom/android/server/backup/utils/BackupManagerMonitorEventSender;
+PLcom/android/server/backup/UserBackupManagerService;->getBackupAgentConnectionManager()Lcom/android/server/backup/BackupAgentConnectionManager;
+PLcom/android/server/backup/UserBackupManagerService;->getBackupDestinationFromTransport(Lcom/android/server/backup/transport/TransportConnection;)I
+PLcom/android/server/backup/UserBackupManagerService;->getEligibilityRulesForOperation(I)Lcom/android/server/backup/utils/BackupEligibilityRules;
+PLcom/android/server/backup/UserBackupManagerService;->getMessageIdForOperationType(I)I
+PLcom/android/server/backup/UserBackupManagerService;->getQueueLock()Ljava/lang/Object;
+PLcom/android/server/backup/UserBackupManagerService;->getRequestBackupParams([Ljava/lang/String;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;ILcom/android/server/backup/utils/BackupEligibilityRules;Lcom/android/server/backup/transport/TransportConnection;Ljava/lang/String;Lcom/android/server/backup/internal/OnTaskFinishedListener;)Lcom/android/server/backup/params/BackupParams;
+PLcom/android/server/backup/UserBackupManagerService;->getWakelock()Lcom/android/server/backup/UserBackupManagerService$BackupWakeLock;
+PLcom/android/server/backup/UserBackupManagerService;->handleCancel(IZ)V
PLcom/android/server/backup/UserBackupManagerService;->initializeBackupEnableState()V
-PLcom/android/server/backup/UserBackupManagerService;->isBackupEnabled()Z
+PLcom/android/server/backup/UserBackupManagerService;->isBackupOperationInProgress()Z
PLcom/android/server/backup/UserBackupManagerService;->isFrameworkSchedulingEnabled()Z
-PLcom/android/server/backup/UserBackupManagerService;->lambda$parseLeftoverJournals$0(Ljava/util/Set;Ljava/lang/String;)V
-PLcom/android/server/backup/UserBackupManagerService;->onTransportRegistered(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/backup/UserBackupManagerService;->parseLeftoverJournals()V
+PLcom/android/server/backup/UserBackupManagerService;->listAllTransports()[Ljava/lang/String;
+PLcom/android/server/backup/UserBackupManagerService;->logBackupComplete(Ljava/lang/String;)V
+PLcom/android/server/backup/UserBackupManagerService;->prepareOperationTimeout(IJLcom/android/server/backup/BackupRestoreTask;I)V
PLcom/android/server/backup/UserBackupManagerService;->readEnabledState()Z
-HPLcom/android/server/backup/UserBackupManagerService;->readFullBackupSchedule()Ljava/util/ArrayList;
+PLcom/android/server/backup/UserBackupManagerService;->readFullBackupSchedule()Ljava/util/ArrayList;
+PLcom/android/server/backup/UserBackupManagerService;->resetBackupState(Ljava/io/File;)V
+PLcom/android/server/backup/UserBackupManagerService;->scheduleNextFullBackupJob(J)V
PLcom/android/server/backup/UserBackupManagerService;->setBackupEnabled(ZZ)V
+PLcom/android/server/backup/UserBackupManagerService;->setRunningFullBackupTask()V
+PLcom/android/server/backup/UserBackupManagerService;->setWorkSource(Landroid/os/WorkSource;)V
+PLcom/android/server/backup/UserBackupManagerService;->shouldUseNewBackupEligibilityRules()Z
PLcom/android/server/backup/UserBackupManagerService;->updateStateOnBackupEnabled(ZZ)V
-PLcom/android/server/backup/UserBackupManagerService;->updateTransportAttributes(ILandroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V
-PLcom/android/server/backup/UserBackupManagerService;->updateTransportAttributes(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V
+HPLcom/android/server/backup/UserBackupManagerService;->updateTransportAttributes(ILandroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V
+PLcom/android/server/backup/UserBackupManagerService;->waitUntilOperationComplete(I)Z
+PLcom/android/server/backup/UserBackupManagerService;->writeEnabledState(Z)V
+PLcom/android/server/backup/UserBackupManagerService;->writeRestoreTokens()V
PLcom/android/server/backup/UserBackupManagerService;->writeToJournalLocked(Ljava/lang/String;)V
PLcom/android/server/backup/UserBackupPreferences;-><init>(Landroid/content/Context;Ljava/io/File;)V
-HPLcom/android/server/backup/fullbackup/FullBackupEntry;-><init>(Ljava/lang/String;J)V
-HPLcom/android/server/backup/fullbackup/FullBackupEntry;->compareTo(Lcom/android/server/backup/fullbackup/FullBackupEntry;)I
+PLcom/android/server/backup/fullbackup/AppMetadataBackupWriter;-><init>(Landroid/app/backup/FullBackupDataOutput;Landroid/content/pm/PackageManager;)V
+PLcom/android/server/backup/fullbackup/AppMetadataBackupWriter;->backupManifest(Landroid/content/pm/PackageInfo;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Z)V
+PLcom/android/server/backup/fullbackup/FullBackupEngine$FullBackupRunner;-><init>(Lcom/android/server/backup/fullbackup/FullBackupEngine;Lcom/android/server/backup/UserBackupManagerService;Landroid/content/pm/PackageInfo;Landroid/app/IBackupAgent;Landroid/os/ParcelFileDescriptor;IZ)V
+PLcom/android/server/backup/fullbackup/FullBackupEngine$FullBackupRunner;->run()V
+PLcom/android/server/backup/fullbackup/FullBackupEngine;-><init>(Lcom/android/server/backup/UserBackupManagerService;Ljava/io/OutputStream;Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupPreflight;Landroid/content/pm/PackageInfo;ZLcom/android/server/backup/BackupRestoreTask;JIILcom/android/server/backup/utils/BackupEligibilityRules;Lcom/android/server/backup/utils/BackupManagerMonitorEventSender;)V
+PLcom/android/server/backup/fullbackup/FullBackupEngine;->backupOnePackage()I
+PLcom/android/server/backup/fullbackup/FullBackupEngine;->initializeAgent()Z
+PLcom/android/server/backup/fullbackup/FullBackupEngine;->preflightCheck()I
+PLcom/android/server/backup/fullbackup/FullBackupEntry;-><init>(JLjava/lang/String;)V
PLcom/android/server/backup/fullbackup/FullBackupEntry;->compareTo(Ljava/lang/Object;)I
-PLcom/android/server/backup/internal/BackupHandler;-><init>(Lcom/android/server/backup/UserBackupManagerService;Lcom/android/server/backup/OperationStorage;Landroid/os/HandlerThread;)V
+PLcom/android/server/backup/fullbackup/FullBackupTask;-><init>(Landroid/app/backup/IFullBackupRestoreObserver;)V
+PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/backup/TransportManager;Lcom/android/server/backup/transport/TransportConnection;)V
+PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$$ExternalSyntheticLambda0;->onFinished(Ljava/lang/String;)V
+PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupPreflight;-><init>(Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;Lcom/android/server/backup/transport/TransportConnection;JII)V
+PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupPreflight;->operationComplete(J)V
+PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupRunner;-><init>(Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;Landroid/os/ParcelFileDescriptor;Landroid/content/pm/PackageInfo;Lcom/android/server/backup/transport/TransportConnection;JII)V
+PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupRunner;->getBackupResultBlocking()I
+PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupRunner;->getPreflightResultBlocking()J
+PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupRunner;->operationComplete(J)V
+PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupRunner;->run()V
+HPLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;-><init>(Lcom/android/server/backup/UserBackupManagerService;Lcom/android/server/backup/OperationStorage;Lcom/android/server/backup/transport/TransportConnection;[Ljava/lang/String;ZLcom/android/server/backup/FullBackupJob;Ljava/util/concurrent/CountDownLatch;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;Lcom/android/server/backup/internal/OnTaskFinishedListener;ZLcom/android/server/backup/utils/BackupEligibilityRules;)V
+PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;->cleanUpPipes([Landroid/os/ParcelFileDescriptor;)V
+HPLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;->run()V
+PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;->setNoRestrictedModePackages(Lcom/android/server/backup/transport/BackupTransportClient;Ljava/util/List;)V
+PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;->unregisterTask()V
+PLcom/android/server/backup/internal/BackupHandler$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/backup/TransportManager;Lcom/android/server/backup/transport/TransportConnection;)V
+PLcom/android/server/backup/internal/BackupHandler$$ExternalSyntheticLambda0;->onFinished(Ljava/lang/String;)V
+PLcom/android/server/backup/internal/BackupHandler;-><init>(Lcom/android/server/backup/UserBackupManagerService;Lcom/android/server/backup/internal/LifecycleOperationStorage;Landroid/os/HandlerThread;)V
PLcom/android/server/backup/internal/BackupHandler;->dispatchMessage(Landroid/os/Message;)V
PLcom/android/server/backup/internal/BackupHandler;->dispatchMessageInternal(Landroid/os/Message;)V
-HPLcom/android/server/backup/internal/BackupHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/backup/internal/BackupHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/backup/internal/LifecycleOperationStorage;-><init>(I)V
+PLcom/android/server/backup/internal/LifecycleOperationStorage;->cancelOperation(IZLjava/util/function/IntConsumer;)V
+PLcom/android/server/backup/internal/LifecycleOperationStorage;->registerOperationForPackages(ILjava/util/Set;Lcom/android/server/backup/BackupRestoreTask;I)V
+PLcom/android/server/backup/internal/LifecycleOperationStorage;->removeOperation(I)V
+PLcom/android/server/backup/internal/Operation;-><init>(Lcom/android/server/backup/BackupRestoreTask;I)V
PLcom/android/server/backup/internal/RunInitializeReceiver;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
-PLcom/android/server/backup/internal/SetupObserver;-><init>(Lcom/android/server/backup/UserBackupManagerService;Landroid/os/Handler;)V
-PLcom/android/server/backup/keyvalue/BackupRequest;-><init>(Ljava/lang/String;)V
+PLcom/android/server/backup/internal/SetupObserver;-><init>(Lcom/android/server/backup/UserBackupManagerService;Lcom/android/server/backup/internal/BackupHandler;)V
+PLcom/android/server/backup/internal/SetupObserver;->onChange(Z)V
+PLcom/android/server/backup/keyvalue/AgentException;-><init>(Z)V
+PLcom/android/server/backup/keyvalue/AgentException;->isTransitory()Z
+PLcom/android/server/backup/keyvalue/AgentException;->permanent()Lcom/android/server/backup/keyvalue/AgentException;
+PLcom/android/server/backup/keyvalue/BackupException;-><init>()V
+PLcom/android/server/backup/keyvalue/BackupRequest;->toString()Ljava/lang/String;
+PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;-><init>(Lcom/android/server/backup/UserBackupManagerService;Landroid/app/backup/IBackupObserver;Lcom/android/server/backup/utils/BackupManagerMonitorEventSender;)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/backup/keyvalue/KeyValueBackupTask;Landroid/app/IBackupAgent;JI)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask$$ExternalSyntheticLambda1;->call(Lcom/android/server/backup/remote/FutureBackupCallback;)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;-><clinit>()V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;-><init>(Lcom/android/server/backup/UserBackupManagerService;Lcom/android/server/backup/OperationStorage;Lcom/android/server/backup/transport/TransportConnection;Ljava/lang/String;Ljava/util/List;Lcom/android/server/backup/DataChangedJournal;Lcom/android/server/backup/keyvalue/KeyValueBackupReporter;Lcom/android/server/backup/internal/OnTaskFinishedListener;Ljava/util/List;ZZLcom/android/server/backup/utils/BackupEligibilityRules;)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->backupPackage(Ljava/lang/String;)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->backupPm()V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->bindAgent(Landroid/content/pm/PackageInfo;)Landroid/app/IBackupAgent;
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->cleanUpAgent(I)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->extractAgentData(Landroid/content/pm/PackageInfo;)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->extractAgentData(Landroid/content/pm/PackageInfo;Landroid/app/IBackupAgent;)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->extractPmAgentData(Landroid/content/pm/PackageInfo;)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->getTopLevelSuccessStateDirectory(Z)Ljava/io/File;
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->informTransportOfUnchangedApps(Ljava/util/Set;)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->run()V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->sendDataToTransport()I
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->sendDataToTransport(Landroid/content/pm/PackageInfo;)I
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->setSuccessState(Ljava/lang/String;Z)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->start(Lcom/android/server/backup/UserBackupManagerService;Lcom/android/server/backup/internal/LifecycleOperationStorage;Lcom/android/server/backup/transport/TransportConnection;Ljava/lang/String;Ljava/util/List;Lcom/android/server/backup/DataChangedJournal;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;Lcom/android/server/backup/internal/OnTaskFinishedListener;Ljava/util/List;ZZLcom/android/server/backup/utils/BackupEligibilityRules;)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->startTask()V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->tryCloseFileDescriptor(Ljava/io/Closeable;Ljava/lang/String;)V
+PLcom/android/server/backup/remote/FutureBackupCallback;-><init>(Ljava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/backup/remote/FutureBackupCallback;->operationComplete(J)V
+PLcom/android/server/backup/remote/RemoteCall$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/backup/remote/RemoteCall;)V
+PLcom/android/server/backup/remote/RemoteCall$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/backup/remote/RemoteCall;-><init>(ZLcom/android/server/backup/remote/RemoteCallable;J)V
+PLcom/android/server/backup/remote/RemoteCall;->call()Lcom/android/server/backup/remote/RemoteResult;
+PLcom/android/server/backup/remote/RemoteResult;-><clinit>()V
+PLcom/android/server/backup/remote/RemoteResult;-><init>(IJ)V
PLcom/android/server/backup/transport/BackupTransportClient$TransportFutures;-><init>()V
-PLcom/android/server/backup/transport/BackupTransportClient$TransportFutures;-><init>(Lcom/android/server/backup/transport/BackupTransportClient$TransportFutures-IA;)V
PLcom/android/server/backup/transport/BackupTransportClient$TransportFutures;->newFuture()Lcom/android/internal/infra/AndroidFuture;
PLcom/android/server/backup/transport/BackupTransportClient$TransportFutures;->remove(Lcom/android/internal/infra/AndroidFuture;)V
PLcom/android/server/backup/transport/BackupTransportClient$TransportStatusCallbackPool;-><init>()V
-PLcom/android/server/backup/transport/BackupTransportClient$TransportStatusCallbackPool;-><init>(Lcom/android/server/backup/transport/BackupTransportClient$TransportStatusCallbackPool-IA;)V
+PLcom/android/server/backup/transport/BackupTransportClient$TransportStatusCallbackPool;->acquire()Lcom/android/server/backup/transport/TransportStatusCallback;
+PLcom/android/server/backup/transport/BackupTransportClient$TransportStatusCallbackPool;->recycle(Lcom/android/server/backup/transport/TransportStatusCallback;)V
PLcom/android/server/backup/transport/BackupTransportClient;-><init>(Lcom/android/internal/backup/IBackupTransport;)V
-PLcom/android/server/backup/transport/BackupTransportClient;->configurationIntent()Landroid/content/Intent;
-PLcom/android/server/backup/transport/BackupTransportClient;->currentDestinationString()Ljava/lang/String;
-PLcom/android/server/backup/transport/BackupTransportClient;->dataManagementIntent()Landroid/content/Intent;
-PLcom/android/server/backup/transport/BackupTransportClient;->dataManagementIntentLabel()Ljava/lang/CharSequence;
-HPLcom/android/server/backup/transport/BackupTransportClient;->getFutureResult(Lcom/android/internal/infra/AndroidFuture;)Ljava/lang/Object;
+PLcom/android/server/backup/transport/BackupTransportClient;->finishBackup()I
+PLcom/android/server/backup/transport/BackupTransportClient;->getBackupManagerMonitor()Landroid/app/backup/IBackupManagerMonitor;
+PLcom/android/server/backup/transport/BackupTransportClient;->getBackupQuota(Ljava/lang/String;Z)J
+PLcom/android/server/backup/transport/BackupTransportClient;->getFutureResult(Lcom/android/internal/infra/AndroidFuture;)Ljava/lang/Object;
+PLcom/android/server/backup/transport/BackupTransportClient;->getPackagesThatShouldNotUseRestrictedMode(ILjava/util/Set;)Ljava/util/Set;
+PLcom/android/server/backup/transport/BackupTransportClient;->getTransportFlags()I
PLcom/android/server/backup/transport/BackupTransportClient;->name()Ljava/lang/String;
-PLcom/android/server/backup/transport/BackupTransportClient;->transportDirName()Ljava/lang/String;
-PLcom/android/server/backup/transport/TransportConnection$$ExternalSyntheticLambda0;-><init>(Ljava/util/concurrent/CompletableFuture;)V
-PLcom/android/server/backup/transport/TransportConnection$$ExternalSyntheticLambda0;->onTransportConnectionResult(Lcom/android/server/backup/transport/BackupTransportClient;Lcom/android/server/backup/transport/TransportConnection;)V
-PLcom/android/server/backup/transport/TransportConnection$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/backup/transport/TransportConnection;Lcom/android/server/backup/transport/TransportConnectionListener;Lcom/android/server/backup/transport/BackupTransportClient;)V
-PLcom/android/server/backup/transport/TransportConnection$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/backup/transport/BackupTransportClient;->performFullBackup(Landroid/content/pm/PackageInfo;Landroid/os/ParcelFileDescriptor;I)I
+PLcom/android/server/backup/transport/BackupTransportClient;->requestFullBackupTime()J
+PLcom/android/server/backup/transport/BackupTransportClient;->sendBackupData(I)I
+PLcom/android/server/backup/transport/TransportConnection$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/backup/transport/TransportConnection;Lcom/android/server/backup/transport/TransportConnection$$ExternalSyntheticLambda1;Lcom/android/server/backup/transport/BackupTransportClient;)V
+PLcom/android/server/backup/transport/TransportConnection$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/backup/transport/TransportConnection$$ExternalSyntheticLambda1;-><init>(Ljava/util/concurrent/CompletableFuture;)V
PLcom/android/server/backup/transport/TransportConnection$TransportConnectionMonitor;-><init>(Landroid/content/Context;Lcom/android/server/backup/transport/TransportConnection;)V
-PLcom/android/server/backup/transport/TransportConnection$TransportConnectionMonitor;-><init>(Landroid/content/Context;Lcom/android/server/backup/transport/TransportConnection;Lcom/android/server/backup/transport/TransportConnection$TransportConnectionMonitor-IA;)V
PLcom/android/server/backup/transport/TransportConnection$TransportConnectionMonitor;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-PLcom/android/server/backup/transport/TransportConnection;->$r8$lambda$_NPv7c2usY4KXACL8fH382mvHRc(Ljava/util/concurrent/CompletableFuture;Lcom/android/server/backup/transport/BackupTransportClient;Lcom/android/server/backup/transport/TransportConnection;)V
-PLcom/android/server/backup/transport/TransportConnection;->$r8$lambda$jVSSVWqIk1ltkKJM8W2iUWztX6Y(Lcom/android/server/backup/transport/TransportConnection;Lcom/android/server/backup/transport/TransportConnectionListener;Lcom/android/server/backup/transport/BackupTransportClient;)V
-PLcom/android/server/backup/transport/TransportConnection;->-$$Nest$monServiceConnected(Lcom/android/server/backup/transport/TransportConnection;Landroid/os/IBinder;)V
-PLcom/android/server/backup/transport/TransportConnection;-><init>(ILandroid/content/Context;Lcom/android/server/backup/transport/TransportStats;Landroid/content/Intent;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)V
HPLcom/android/server/backup/transport/TransportConnection;-><init>(ILandroid/content/Context;Lcom/android/server/backup/transport/TransportStats;Landroid/content/Intent;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Landroid/os/Handler;)V
PLcom/android/server/backup/transport/TransportConnection;->checkState(ZLjava/lang/String;)V
-PLcom/android/server/backup/transport/TransportConnection;->checkStateIntegrityLocked()V
-PLcom/android/server/backup/transport/TransportConnection;->connect(Ljava/lang/String;)Lcom/android/server/backup/transport/BackupTransportClient;
-PLcom/android/server/backup/transport/TransportConnection;->connectAsync(Lcom/android/server/backup/transport/TransportConnectionListener;Ljava/lang/String;)V
+HPLcom/android/server/backup/transport/TransportConnection;->checkStateIntegrityLocked()V
+HPLcom/android/server/backup/transport/TransportConnection;->connect(Ljava/lang/String;)Lcom/android/server/backup/transport/BackupTransportClient;
PLcom/android/server/backup/transport/TransportConnection;->connectOrThrow(Ljava/lang/String;)Lcom/android/server/backup/transport/BackupTransportClient;
PLcom/android/server/backup/transport/TransportConnection;->finalize()V
-PLcom/android/server/backup/transport/TransportConnection;->lambda$connect$0(Ljava/util/concurrent/CompletableFuture;Lcom/android/server/backup/transport/BackupTransportClient;Lcom/android/server/backup/transport/TransportConnection;)V
-PLcom/android/server/backup/transport/TransportConnection;->lambda$notifyListener$1(Lcom/android/server/backup/transport/TransportConnectionListener;Lcom/android/server/backup/transport/BackupTransportClient;)V
PLcom/android/server/backup/transport/TransportConnection;->log(ILjava/lang/String;)V
PLcom/android/server/backup/transport/TransportConnection;->log(ILjava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/backup/transport/TransportConnection;->markAsDisposed()V
-PLcom/android/server/backup/transport/TransportConnection;->notifyListener(Lcom/android/server/backup/transport/TransportConnectionListener;Lcom/android/server/backup/transport/BackupTransportClient;Ljava/lang/String;)V
+PLcom/android/server/backup/transport/TransportConnection;->notifyListener(Lcom/android/server/backup/transport/TransportConnection$$ExternalSyntheticLambda1;Lcom/android/server/backup/transport/BackupTransportClient;Ljava/lang/String;)V
PLcom/android/server/backup/transport/TransportConnection;->notifyListenersAndClearLocked(Lcom/android/server/backup/transport/BackupTransportClient;)V
-PLcom/android/server/backup/transport/TransportConnection;->onServiceConnected(Landroid/os/IBinder;)V
-PLcom/android/server/backup/transport/TransportConnection;->onStateTransition(II)V
HPLcom/android/server/backup/transport/TransportConnection;->saveLogEntry(Ljava/lang/String;)V
HPLcom/android/server/backup/transport/TransportConnection;->setStateLocked(ILcom/android/server/backup/transport/BackupTransportClient;)V
PLcom/android/server/backup/transport/TransportConnection;->stateToString(I)Ljava/lang/String;
-PLcom/android/server/backup/transport/TransportConnection;->toString()Ljava/lang/String;
-PLcom/android/server/backup/transport/TransportConnection;->transitionThroughState(III)I
-PLcom/android/server/backup/transport/TransportConnection;->unbind(Ljava/lang/String;)V
-PLcom/android/server/backup/transport/TransportConnectionManager$$ExternalSyntheticLambda0;-><init>()V
+HPLcom/android/server/backup/transport/TransportConnection;->toString()Ljava/lang/String;
+HPLcom/android/server/backup/transport/TransportConnection;->unbind(Ljava/lang/String;)V
PLcom/android/server/backup/transport/TransportConnectionManager$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/backup/transport/TransportConnectionManager;->$r8$lambda$Pwv1Wjcrv8QltS66ojkBLq7QJvg(Landroid/content/ComponentName;)Landroid/content/Intent;
PLcom/android/server/backup/transport/TransportConnectionManager;-><init>(ILandroid/content/Context;Lcom/android/server/backup/transport/TransportStats;)V
-PLcom/android/server/backup/transport/TransportConnectionManager;-><init>(ILandroid/content/Context;Lcom/android/server/backup/transport/TransportStats;Ljava/util/function/Function;)V
-PLcom/android/server/backup/transport/TransportConnectionManager;->disposeOfTransportClient(Lcom/android/server/backup/transport/TransportConnection;Ljava/lang/String;)V
-PLcom/android/server/backup/transport/TransportConnectionManager;->getRealTransportIntent(Landroid/content/ComponentName;)Landroid/content/Intent;
-PLcom/android/server/backup/transport/TransportConnectionManager;->getTransportClient(Landroid/content/ComponentName;Landroid/os/Bundle;Ljava/lang/String;)Lcom/android/server/backup/transport/TransportConnection;
-PLcom/android/server/backup/transport/TransportConnectionManager;->getTransportClient(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;)Lcom/android/server/backup/transport/TransportConnection;
-PLcom/android/server/backup/transport/TransportStats$Stats;->-$$Nest$mregister(Lcom/android/server/backup/transport/TransportStats$Stats;J)V
-PLcom/android/server/backup/transport/TransportStats$Stats;-><init>()V
-PLcom/android/server/backup/transport/TransportStats$Stats;->register(J)V
+HPLcom/android/server/backup/transport/TransportConnectionManager;->disposeOfTransportClient(Lcom/android/server/backup/transport/TransportConnection;Ljava/lang/String;)V
+HPLcom/android/server/backup/transport/TransportConnectionManager;->getTransportClient(Landroid/content/ComponentName;Landroid/os/Bundle;Ljava/lang/String;)Lcom/android/server/backup/transport/TransportConnection;
PLcom/android/server/backup/transport/TransportStats;-><init>()V
-PLcom/android/server/backup/transport/TransportStats;->registerConnectionTime(Landroid/content/ComponentName;J)V
+HPLcom/android/server/backup/transport/TransportStats;->registerConnectionTime(Landroid/content/ComponentName;J)V
+PLcom/android/server/backup/transport/TransportStatusCallback;-><init>()V
+PLcom/android/server/backup/transport/TransportStatusCallback;->getOperationStatus()I
+PLcom/android/server/backup/transport/TransportStatusCallback;->onOperationComplete()V
+PLcom/android/server/backup/transport/TransportStatusCallback;->onOperationCompleteWithStatus(I)V
HPLcom/android/server/backup/transport/TransportUtils;->formatMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/backup/transport/TransportUtils;->log(ILjava/lang/String;Ljava/lang/String;)V
PLcom/android/server/backup/utils/BackupEligibilityRules;-><clinit>()V
PLcom/android/server/backup/utils/BackupEligibilityRules;-><init>(Landroid/content/pm/PackageManager;Landroid/content/pm/PackageManagerInternal;ILandroid/content/Context;I)V
-PLcom/android/server/backup/utils/BackupEligibilityRules;-><init>(Landroid/content/pm/PackageManager;Landroid/content/pm/PackageManagerInternal;ILandroid/content/Context;IZ)V
-HPLcom/android/server/backup/utils/BackupEligibilityRules;->appGetsFullBackup(Landroid/content/pm/PackageInfo;)Z
-HPLcom/android/server/backup/utils/BackupEligibilityRules;->appIsDisabled(Landroid/content/pm/ApplicationInfo;)Z
-HPLcom/android/server/backup/utils/BackupEligibilityRules;->appIsEligibleForBackup(Landroid/content/pm/ApplicationInfo;)Z
-HPLcom/android/server/backup/utils/BackupEligibilityRules;->isAppBackupAllowed(Landroid/content/pm/ApplicationInfo;)Z
+PLcom/android/server/backup/utils/BackupEligibilityRules;->appGetsFullBackup(Landroid/content/pm/PackageInfo;)Z
+PLcom/android/server/backup/utils/BackupEligibilityRules;->appIsDisabled(Landroid/content/pm/ApplicationInfo;)Z
+PLcom/android/server/backup/utils/BackupEligibilityRules;->appIsEligibleForBackup(Landroid/content/pm/ApplicationInfo;)Z
+PLcom/android/server/backup/utils/BackupEligibilityRules;->appIsRunningAndEligibleForBackupWithTransport(Lcom/android/server/backup/transport/TransportConnection;Ljava/lang/String;)Z
+PLcom/android/server/backup/utils/BackupEligibilityRules;->appIsStopped(Landroid/content/pm/ApplicationInfo;)Z
+PLcom/android/server/backup/utils/BackupEligibilityRules;->isAppBackupAllowed(Landroid/content/pm/ApplicationInfo;)Z
PLcom/android/server/backup/utils/BackupManagerMonitorDumpsysUtils;-><clinit>()V
PLcom/android/server/backup/utils/BackupManagerMonitorDumpsysUtils;-><init>()V
PLcom/android/server/backup/utils/BackupManagerMonitorDumpsysUtils;->deleteExpiredBMMEvents()Z
+PLcom/android/server/backup/utils/BackupManagerMonitorDumpsysUtils;->getBMMEventsFile()Ljava/io/File;
PLcom/android/server/backup/utils/BackupManagerMonitorDumpsysUtils;->getSetUpDateFile()Ljava/io/File;
PLcom/android/server/backup/utils/BackupManagerMonitorDumpsysUtils;->isAfterRetentionPeriod()Z
-PLcom/android/server/backup/utils/DataStreamFileCodec;-><init>(Ljava/io/File;Lcom/android/server/backup/utils/DataStreamCodec;)V
-PLcom/android/server/backup/utils/DataStreamFileCodec;->deserialize()Ljava/lang/Object;
-HPLcom/android/server/backup/utils/SparseArrayUtils;->union(Landroid/util/SparseArray;)Ljava/util/HashSet;
+PLcom/android/server/backup/utils/BackupManagerMonitorEventSender;-><init>(Landroid/app/backup/IBackupManagerMonitor;)V
+PLcom/android/server/backup/utils/BackupManagerMonitorEventSender;->getMonitor()Landroid/app/backup/IBackupManagerMonitor;
+PLcom/android/server/backup/utils/BackupManagerMonitorEventSender;->monitorAgentLoggingResults(Landroid/content/pm/PackageInfo;Landroid/app/IBackupAgent;)V
+PLcom/android/server/backup/utils/BackupManagerMonitorEventSender;->monitorEvent(ILandroid/content/pm/PackageInfo;ILandroid/os/Bundle;)V
+PLcom/android/server/backup/utils/BackupManagerMonitorEventSender;->setMonitor(Landroid/app/backup/IBackupManagerMonitor;)V
+PLcom/android/server/backup/utils/BackupObserverUtils;->sendBackupFinished(Landroid/app/backup/IBackupObserver;I)V
+PLcom/android/server/backup/utils/BackupObserverUtils;->sendBackupOnPackageResult(Landroid/app/backup/IBackupObserver;Ljava/lang/String;I)V
+PLcom/android/server/backup/utils/FullBackupUtils;->routeSocketDataToOutput(Landroid/os/ParcelFileDescriptor;Ljava/io/OutputStream;)V
+PLcom/android/server/biometrics/AuthService$$ExternalSyntheticLambda0;-><init>(Z[Ljava/lang/String;Landroid/content/Context;[Ljava/lang/String;Landroid/hardware/face/IFaceService;)V
+PLcom/android/server/biometrics/AuthService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/biometrics/AuthService$$ExternalSyntheticLambda1;-><init>([Ljava/lang/String;Landroid/content/Context;[Ljava/lang/String;Landroid/hardware/fingerprint/IFingerprintService;)V
+PLcom/android/server/biometrics/AuthService$$ExternalSyntheticLambda1;->run()V
PLcom/android/server/biometrics/AuthService$AuthServiceImpl;-><init>(Lcom/android/server/biometrics/AuthService;)V
-PLcom/android/server/biometrics/AuthService$AuthServiceImpl;-><init>(Lcom/android/server/biometrics/AuthService;Lcom/android/server/biometrics/AuthService$AuthServiceImpl-IA;)V
+PLcom/android/server/biometrics/AuthService$AuthServiceImpl;->canAuthenticate(Ljava/lang/String;II)I
+PLcom/android/server/biometrics/AuthService$AuthServiceImpl;->getAuthenticatorIds(I)[J
+PLcom/android/server/biometrics/AuthService$AuthServiceImpl;->registerAuthenticationStateListener(Landroid/hardware/biometrics/AuthenticationStateListener;)V
+PLcom/android/server/biometrics/AuthService$AuthServiceImpl;->resetLockout(I[B)V
PLcom/android/server/biometrics/AuthService$Injector;-><init>()V
PLcom/android/server/biometrics/AuthService$Injector;->getBiometricService()Landroid/hardware/biometrics/IBiometricService;
PLcom/android/server/biometrics/AuthService$Injector;->getConfiguration(Landroid/content/Context;)[Ljava/lang/String;
+PLcom/android/server/biometrics/AuthService$Injector;->getFaceAidlInstances()[Ljava/lang/String;
+PLcom/android/server/biometrics/AuthService$Injector;->getFaceConfiguration(Landroid/content/Context;)[Ljava/lang/String;
PLcom/android/server/biometrics/AuthService$Injector;->getFaceService()Landroid/hardware/face/IFaceService;
+PLcom/android/server/biometrics/AuthService$Injector;->getFingerprintAidlInstances()[Ljava/lang/String;
+PLcom/android/server/biometrics/AuthService$Injector;->getFingerprintConfiguration(Landroid/content/Context;)[Ljava/lang/String;
PLcom/android/server/biometrics/AuthService$Injector;->getFingerprintService()Landroid/hardware/fingerprint/IFingerprintService;
+PLcom/android/server/biometrics/AuthService$Injector;->getIrisConfiguration(Landroid/content/Context;)[Ljava/lang/String;
PLcom/android/server/biometrics/AuthService$Injector;->getIrisService()Landroid/hardware/iris/IIrisService;
PLcom/android/server/biometrics/AuthService$Injector;->isHidlDisabled(Landroid/content/Context;)Z
PLcom/android/server/biometrics/AuthService$Injector;->publishBinderService(Lcom/android/server/biometrics/AuthService;Landroid/hardware/biometrics/IAuthService$Stub;)V
+PLcom/android/server/biometrics/AuthService;->-$$Nest$mcheckInternalPermission(Lcom/android/server/biometrics/AuthService;)V
+PLcom/android/server/biometrics/AuthService;->-$$Nest$mcheckPermission(Lcom/android/server/biometrics/AuthService;)V
PLcom/android/server/biometrics/AuthService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/biometrics/AuthService;-><init>(Landroid/content/Context;Lcom/android/server/biometrics/AuthService$Injector;)V
-PLcom/android/server/biometrics/AuthService;->access$000(Lcom/android/server/biometrics/AuthService;Ljava/lang/String;Landroid/os/IBinder;)V
PLcom/android/server/biometrics/AuthService;->onStart()V
-PLcom/android/server/biometrics/AuthService;->registerAuthenticators([Lcom/android/server/biometrics/SensorConfig;)V
PLcom/android/server/biometrics/BiometricCameraManagerImpl$1;-><init>(Lcom/android/server/biometrics/BiometricCameraManagerImpl;)V
PLcom/android/server/biometrics/BiometricCameraManagerImpl;-><init>(Landroid/hardware/camera2/CameraManager;Landroid/hardware/SensorPrivacyManager;)V
PLcom/android/server/biometrics/BiometricHandlerProvider;-><clinit>()V
-PLcom/android/server/biometrics/BiometricHandlerProvider;-><init>()V
PLcom/android/server/biometrics/BiometricHandlerProvider;->getBiometricCallbackHandler()Landroid/os/Handler;
-PLcom/android/server/biometrics/BiometricHandlerProvider;->getInstance()Lcom/android/server/biometrics/BiometricHandlerProvider;
-PLcom/android/server/biometrics/BiometricHandlerProvider;->getNewHandler(Ljava/lang/String;)Landroid/os/Handler;
+PLcom/android/server/biometrics/BiometricHandlerProvider;->getFaceHandler()Landroid/os/Handler;
+PLcom/android/server/biometrics/BiometricHandlerProvider;->getFingerprintHandler()Landroid/os/Handler;
+PLcom/android/server/biometrics/BiometricHandlerProvider;->getNewHandler(ILjava/lang/String;)Landroid/os/Handler;
+PLcom/android/server/biometrics/BiometricNotificationLogger;-><init>(Lcom/android/server/biometrics/log/BiometricFrameworkStatsLogger;)V
+PLcom/android/server/biometrics/BiometricNotificationLogger;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;)V
+PLcom/android/server/biometrics/BiometricNotificationLogger;->onNotificationRemoved(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;I)V
PLcom/android/server/biometrics/BiometricService$3;-><init>(Lcom/android/server/biometrics/BiometricService;)V
+PLcom/android/server/biometrics/BiometricService$4;-><init>(Lcom/android/server/biometrics/BiometricService;)V
+PLcom/android/server/biometrics/BiometricService$4;->run()V
+PLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;I)V
+PLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper$$ExternalSyntheticLambda1;->run()V
PLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;-><init>(Lcom/android/server/biometrics/BiometricService;)V
-PLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;-><init>(Lcom/android/server/biometrics/BiometricService;Lcom/android/server/biometrics/BiometricService$BiometricServiceWrapper-IA;)V
+PLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;->canAuthenticate(Ljava/lang/String;III)I
+PLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;->getAuthenticatorIds(I)[J
+PLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;->resetLockout(I[B)V
PLcom/android/server/biometrics/BiometricService$Injector$$ExternalSyntheticLambda0;-><init>(Ljava/util/concurrent/atomic/AtomicLong;)V
PLcom/android/server/biometrics/BiometricService$Injector;-><init>()V
-PLcom/android/server/biometrics/BiometricService$Injector;->getActivityManagerService()Landroid/app/IActivityManager;
-PLcom/android/server/biometrics/BiometricService$Injector;->getBiometricCameraManager(Landroid/content/Context;)Lcom/android/server/biometrics/BiometricCameraManager;
-PLcom/android/server/biometrics/BiometricService$Injector;->getBiometricContext(Landroid/content/Context;)Lcom/android/server/biometrics/log/BiometricContext;
-PLcom/android/server/biometrics/BiometricService$Injector;->getBiometricStrengthController(Lcom/android/server/biometrics/BiometricService;)Lcom/android/server/biometrics/BiometricStrengthController;
-PLcom/android/server/biometrics/BiometricService$Injector;->getDevicePolicyManager(Landroid/content/Context;)Landroid/app/admin/DevicePolicyManager;
-PLcom/android/server/biometrics/BiometricService$Injector;->getGateKeeperService()Landroid/service/gatekeeper/IGateKeeperService;
-PLcom/android/server/biometrics/BiometricService$Injector;->getKeyStore()Landroid/security/KeyStore;
-PLcom/android/server/biometrics/BiometricService$Injector;->getKeystoreAuthorizationService()Landroid/security/authorization/IKeystoreAuthorization;
-PLcom/android/server/biometrics/BiometricService$Injector;->getRequestGenerator()Ljava/util/function/Supplier;
-PLcom/android/server/biometrics/BiometricService$Injector;->getSettingObserver(Landroid/content/Context;Landroid/os/Handler;Ljava/util/List;)Lcom/android/server/biometrics/BiometricService$SettingObserver;
-PLcom/android/server/biometrics/BiometricService$Injector;->getStatusBarService()Lcom/android/internal/statusbar/IStatusBarService;
-PLcom/android/server/biometrics/BiometricService$Injector;->getTrustManager()Landroid/app/trust/ITrustManager;
-PLcom/android/server/biometrics/BiometricService$Injector;->getUserManager(Landroid/content/Context;)Landroid/os/UserManager;
-PLcom/android/server/biometrics/BiometricService$Injector;->publishBinderService(Lcom/android/server/biometrics/BiometricService;Landroid/hardware/biometrics/IBiometricService$Stub;)V
-PLcom/android/server/biometrics/BiometricService$SettingObserver;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/util/List;)V
+PLcom/android/server/biometrics/BiometricService$SettingObserver;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/util/List;Landroid/os/UserManager;Landroid/hardware/fingerprint/FingerprintManager;Landroid/hardware/face/FaceManager;)V
PLcom/android/server/biometrics/BiometricService$SettingObserver;->updateContentObserver()V
+PLcom/android/server/biometrics/BiometricService$SettingObserver;->updateMandatoryBiometricsForAllProfiles(I)V
+PLcom/android/server/biometrics/BiometricService$SettingObserver;->updateMandatoryBiometricsRequirementsForAllProfiles(I)V
+PLcom/android/server/biometrics/BiometricService;->-$$Nest$mcreatePreAuthInfo(Lcom/android/server/biometrics/BiometricService;Ljava/lang/String;II)Lcom/android/server/biometrics/PreAuthInfo;
+PLcom/android/server/biometrics/BiometricService;->-$$Nest$mdumpInternal(Lcom/android/server/biometrics/BiometricService;Ljava/io/PrintWriter;)V
PLcom/android/server/biometrics/BiometricService;-><init>(Landroid/content/Context;)V
PLcom/android/server/biometrics/BiometricService;-><init>(Landroid/content/Context;Lcom/android/server/biometrics/BiometricService$Injector;Lcom/android/server/biometrics/BiometricHandlerProvider;)V
-PLcom/android/server/biometrics/BiometricService;->access$000(Lcom/android/server/biometrics/BiometricService;Ljava/lang/String;Landroid/os/IBinder;)V
PLcom/android/server/biometrics/BiometricService;->onStart()V
PLcom/android/server/biometrics/BiometricStrengthController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/biometrics/BiometricStrengthController;)V
PLcom/android/server/biometrics/BiometricStrengthController;-><init>(Lcom/android/server/biometrics/BiometricService;)V
-PLcom/android/server/biometrics/BiometricStrengthController;->startListening()V
-PLcom/android/server/biometrics/FeatureFlagsImpl;-><clinit>()V
-PLcom/android/server/biometrics/FeatureFlagsImpl;-><init>()V
-PLcom/android/server/biometrics/FeatureFlagsImpl;->deHidl()Z
-PLcom/android/server/biometrics/FeatureFlagsImpl;->load_overrides_biometrics_framework()V
-PLcom/android/server/biometrics/Flags;-><clinit>()V
-PLcom/android/server/biometrics/Flags;->deHidl()Z
-PLcom/android/server/biometrics/log/BiometricContext;->getInstance(Landroid/content/Context;)Lcom/android/server/biometrics/log/BiometricContext;
+PLcom/android/server/biometrics/PreAuthInfo;-><init>(ZIZLjava/util/List;Ljava/util/List;ZLandroid/hardware/biometrics/PromptInfo;IILcom/android/server/biometrics/BiometricCameraManagerImpl;ZZ)V
+PLcom/android/server/biometrics/PreAuthInfo;->create(Landroid/app/trust/ITrustManager;Landroid/app/admin/DevicePolicyManager;Lcom/android/server/biometrics/BiometricService$SettingObserver;Ljava/util/List;ILandroid/hardware/biometrics/PromptInfo;Ljava/lang/String;ZLandroid/content/Context;Lcom/android/server/biometrics/BiometricCameraManagerImpl;Landroid/os/UserManager;)Lcom/android/server/biometrics/PreAuthInfo;
+PLcom/android/server/biometrics/PreAuthInfo;->getInternalStatus()Landroid/util/Pair;
+PLcom/android/server/biometrics/Utils;->authenticatorStatusToBiometricConstant(I)I
+PLcom/android/server/biometrics/Utils;->isCredentialRequested(I)Z
+PLcom/android/server/biometrics/Utils;->isValidAuthenticatorConfig(Landroid/content/Context;I)Z
+PLcom/android/server/biometrics/log/BiometricContext;->getInstance(Landroid/content/Context;)Lcom/android/server/biometrics/log/BiometricContextProvider;
PLcom/android/server/biometrics/log/BiometricContextProvider$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/biometrics/log/BiometricContextProvider;)V
PLcom/android/server/biometrics/log/BiometricContextProvider$1;-><init>(Lcom/android/server/biometrics/log/BiometricContextProvider;)V
PLcom/android/server/biometrics/log/BiometricContextProvider$2;-><init>(Lcom/android/server/biometrics/log/BiometricContextProvider;)V
@@ -8850,2274 +7156,1647 @@ PLcom/android/server/biometrics/log/BiometricContextProvider$2;->onDisplayStateC
PLcom/android/server/biometrics/log/BiometricContextProvider$2;->onFoldChanged(I)V
PLcom/android/server/biometrics/log/BiometricContextProvider$2;->onHardwareIgnoreTouchesChanged(Z)V
PLcom/android/server/biometrics/log/BiometricContextProvider$3;-><init>(Lcom/android/server/biometrics/log/BiometricContextProvider;)V
-PLcom/android/server/biometrics/log/BiometricContextProvider;->-$$Nest$fgetmDisplayState(Lcom/android/server/biometrics/log/BiometricContextProvider;)I
-PLcom/android/server/biometrics/log/BiometricContextProvider;->-$$Nest$fgetmFoldState(Lcom/android/server/biometrics/log/BiometricContextProvider;)I
-PLcom/android/server/biometrics/log/BiometricContextProvider;->-$$Nest$fgetmIsHardwareIgnoringTouches(Lcom/android/server/biometrics/log/BiometricContextProvider;)Z
-PLcom/android/server/biometrics/log/BiometricContextProvider;->-$$Nest$fputmDisplayState(Lcom/android/server/biometrics/log/BiometricContextProvider;I)V
-PLcom/android/server/biometrics/log/BiometricContextProvider;->-$$Nest$mnotifyChanged(Lcom/android/server/biometrics/log/BiometricContextProvider;)V
PLcom/android/server/biometrics/log/BiometricContextProvider;-><init>(Landroid/content/Context;Landroid/view/WindowManager;Lcom/android/internal/statusbar/IStatusBarService;Landroid/os/Handler;Lcom/android/server/biometrics/sensors/AuthSessionCoordinator;)V
-PLcom/android/server/biometrics/log/BiometricContextProvider;->defaultProvider(Landroid/content/Context;)Lcom/android/server/biometrics/log/BiometricContextProvider;
-PLcom/android/server/biometrics/log/BiometricContextProvider;->notifyChanged()V
-PLcom/android/server/biometrics/log/BiometricContextProvider;->notifySubscribers()V
-PLcom/android/server/biometrics/log/BiometricContextProvider;->subscribeBiometricContextListener(Lcom/android/internal/statusbar/IStatusBarService;)V
-PLcom/android/server/biometrics/log/BiometricContextProvider;->subscribeDockState(Landroid/content/Context;)V
+PLcom/android/server/biometrics/log/BiometricFrameworkStatsLogger;-><clinit>()V
PLcom/android/server/biometrics/sensors/AuthResultCoordinator;-><init>()V
-PLcom/android/server/biometrics/sensors/AuthSessionCoordinator$RingBuffer;-><init>(I)V
+PLcom/android/server/biometrics/sensors/AuthSessionCoordinator$RingBuffer;-><init>()V
+PLcom/android/server/biometrics/sensors/AuthSessionCoordinator$RingBuffer;->addApiCall(Ljava/lang/String;)V
PLcom/android/server/biometrics/sensors/AuthSessionCoordinator;-><init>()V
PLcom/android/server/biometrics/sensors/AuthSessionCoordinator;-><init>(Ljava/time/Clock;)V
+PLcom/android/server/biometrics/sensors/AuthSessionCoordinator;->resetLockoutFor(IIJ)V
+PLcom/android/server/biometrics/sensors/MultiBiometricLockoutState$AuthenticatorState;-><init>(Ljava/lang/Integer;)V
PLcom/android/server/biometrics/sensors/MultiBiometricLockoutState;-><init>(Ljava/time/Clock;)V
-PLcom/android/server/blob/BlobStoreConfig$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/biometrics/sensors/MultiBiometricLockoutState;->clearPermanentLockOut(II)V
+PLcom/android/server/biometrics/sensors/MultiBiometricLockoutState;->clearTimedLockout(II)V
+PLcom/android/server/biometrics/sensors/MultiBiometricLockoutState;->getAuthMapForUser(I)Ljava/util/Map;
+PLcom/android/server/biometrics/sensors/face/FaceService;->getDeclaredInstances()[Ljava/lang/String;
+PLcom/android/server/biometrics/sensors/fingerprint/FingerprintService;->getDeclaredInstances()[Ljava/lang/String;
PLcom/android/server/blob/BlobStoreConfig$DeviceConfigProperties$$ExternalSyntheticLambda0;-><init>(Landroid/provider/DeviceConfig$Properties;)V
PLcom/android/server/blob/BlobStoreConfig$DeviceConfigProperties;-><clinit>()V
-PLcom/android/server/blob/BlobStoreConfig$DeviceConfigProperties;->refresh(Landroid/provider/DeviceConfig$Properties;)V
PLcom/android/server/blob/BlobStoreConfig;-><clinit>()V
-PLcom/android/server/blob/BlobStoreConfig;->getBlobStoreRootDir()Ljava/io/File;
-PLcom/android/server/blob/BlobStoreConfig;->getIdleJobPeriodMs()J
-PLcom/android/server/blob/BlobStoreConfig;->initialize(Landroid/content/Context;)V
-PLcom/android/server/blob/BlobStoreIdleJobService;->schedule(Landroid/content/Context;)V
-PLcom/android/server/blob/BlobStoreManagerInternal;-><init>()V
-PLcom/android/server/blob/BlobStoreManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/blob/BlobStoreManagerService;)V
-PLcom/android/server/blob/BlobStoreManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/blob/BlobStoreManagerService;)V
+PLcom/android/server/blob/BlobStoreConfig;->prepareBlobStoreRootDir()Ljava/io/File;
+PLcom/android/server/blob/BlobStoreIdleJobService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/blob/BlobStoreIdleJobService;Landroid/app/job/JobParameters;)V
+PLcom/android/server/blob/BlobStoreIdleJobService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/blob/BlobStoreIdleJobService;-><init>()V
+PLcom/android/server/blob/BlobStoreIdleJobService;->onStartJob(Landroid/app/job/JobParameters;)Z
+PLcom/android/server/blob/BlobStoreManagerService$$ExternalSyntheticLambda12;-><init>(ILjava/util/concurrent/atomic/AtomicLong;)V
+PLcom/android/server/blob/BlobStoreManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/blob/BlobStoreManagerService;Ljava/util/ArrayList;)V
+PLcom/android/server/blob/BlobStoreManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/blob/BlobStoreManagerService;Ljava/util/ArrayList;)V
+PLcom/android/server/blob/BlobStoreManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/blob/BlobStoreManagerService;I)V
+PLcom/android/server/blob/BlobStoreManagerService$$ExternalSyntheticLambda5;->run()V
+PLcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter$$ExternalSyntheticLambda1;-><init>(IZLjava/util/concurrent/atomic/AtomicLong;)V
+PLcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter$$ExternalSyntheticLambda2;-><init>(Ljava/lang/Object;Ljava/util/concurrent/atomic/AtomicLong;I)V
+PLcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter$$ExternalSyntheticLambda3;-><init>(Ljava/lang/String;Landroid/os/UserHandle;ZLjava/util/concurrent/atomic/AtomicLong;)V
PLcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter;-><init>(Lcom/android/server/blob/BlobStoreManagerService;)V
-PLcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter;-><init>(Lcom/android/server/blob/BlobStoreManagerService;Lcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter-IA;)V
+HPLcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter;->augmentStatsForPackageForUser(Landroid/content/pm/PackageStats;Ljava/lang/String;Landroid/os/UserHandle;Z)V
+HPLcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter;->augmentStatsForUid(Landroid/content/pm/PackageStats;IZ)V
+PLcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter;->augmentStatsForUser(Landroid/content/pm/PackageStats;Landroid/os/UserHandle;)V
+PLcom/android/server/blob/BlobStoreManagerService$DumpArgs;-><init>()V
+PLcom/android/server/blob/BlobStoreManagerService$DumpArgs;->shouldDumpAllSections()Z
PLcom/android/server/blob/BlobStoreManagerService$Injector;-><init>()V
-PLcom/android/server/blob/BlobStoreManagerService$Injector;->getBackgroundHandler()Landroid/os/Handler;
-PLcom/android/server/blob/BlobStoreManagerService$Injector;->initializeMessageHandler()Landroid/os/Handler;
PLcom/android/server/blob/BlobStoreManagerService$LocalService;-><init>(Lcom/android/server/blob/BlobStoreManagerService;)V
-PLcom/android/server/blob/BlobStoreManagerService$LocalService;-><init>(Lcom/android/server/blob/BlobStoreManagerService;Lcom/android/server/blob/BlobStoreManagerService$LocalService-IA;)V
-PLcom/android/server/blob/BlobStoreManagerService$PackageChangedReceiver;-><init>(Lcom/android/server/blob/BlobStoreManagerService;)V
-PLcom/android/server/blob/BlobStoreManagerService$PackageChangedReceiver;-><init>(Lcom/android/server/blob/BlobStoreManagerService;Lcom/android/server/blob/BlobStoreManagerService$PackageChangedReceiver-IA;)V
PLcom/android/server/blob/BlobStoreManagerService$SessionStateChangeListener;-><init>(Lcom/android/server/blob/BlobStoreManagerService;)V
PLcom/android/server/blob/BlobStoreManagerService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/blob/BlobStoreManagerService;)V
-PLcom/android/server/blob/BlobStoreManagerService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/blob/BlobStoreManagerService;Lcom/android/server/blob/BlobStoreManagerService$StatsPullAtomCallbackImpl-IA;)V
+PLcom/android/server/blob/BlobStoreManagerService$Stub$$ExternalSyntheticLambda2;-><init>(ILjava/lang/Object;)V
PLcom/android/server/blob/BlobStoreManagerService$Stub;-><init>(Lcom/android/server/blob/BlobStoreManagerService;)V
-PLcom/android/server/blob/BlobStoreManagerService$Stub;-><init>(Lcom/android/server/blob/BlobStoreManagerService;Lcom/android/server/blob/BlobStoreManagerService$Stub-IA;)V
-PLcom/android/server/blob/BlobStoreManagerService$UserActionReceiver;-><init>(Lcom/android/server/blob/BlobStoreManagerService;)V
-PLcom/android/server/blob/BlobStoreManagerService$UserActionReceiver;-><init>(Lcom/android/server/blob/BlobStoreManagerService;Lcom/android/server/blob/BlobStoreManagerService$UserActionReceiver-IA;)V
-PLcom/android/server/blob/BlobStoreManagerService;->-$$Nest$sminitializeMessageHandler()Landroid/os/Handler;
+PLcom/android/server/blob/BlobStoreManagerService$Stub;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/blob/BlobStoreManagerService$UserActionReceiver;-><init>(Lcom/android/server/blob/BlobStoreManagerService;I)V
+PLcom/android/server/blob/BlobStoreManagerService;->-$$Nest$mdumpBlobsLocked(Lcom/android/server/blob/BlobStoreManagerService;Landroid/util/IndentingPrintWriter;Lcom/android/server/blob/BlobStoreManagerService$DumpArgs;)V
+PLcom/android/server/blob/BlobStoreManagerService;->-$$Nest$mdumpSessionsLocked(Lcom/android/server/blob/BlobStoreManagerService;Landroid/util/IndentingPrintWriter;Lcom/android/server/blob/BlobStoreManagerService$DumpArgs;)V
PLcom/android/server/blob/BlobStoreManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/blob/BlobStoreManagerService;-><init>(Landroid/content/Context;Lcom/android/server/blob/BlobStoreManagerService$Injector;)V
+PLcom/android/server/blob/BlobStoreManagerService;->forEachBlob(Ljava/util/function/Consumer;)V
+PLcom/android/server/blob/BlobStoreManagerService;->forEachBlobLocked(Ljava/util/function/Consumer;)V
+HPLcom/android/server/blob/BlobStoreManagerService;->forEachSessionInUser(ILjava/util/function/Consumer;)V
PLcom/android/server/blob/BlobStoreManagerService;->getAllPackages()Landroid/util/SparseArray;
-PLcom/android/server/blob/BlobStoreManagerService;->initializeMessageHandler()Landroid/os/Handler;
+HPLcom/android/server/blob/BlobStoreManagerService;->getUserSessionsLocked(I)Landroid/util/LongSparseArray;
+PLcom/android/server/blob/BlobStoreManagerService;->handleIdleMaintenanceLocked()V
PLcom/android/server/blob/BlobStoreManagerService;->onBootPhase(I)V
PLcom/android/server/blob/BlobStoreManagerService;->onStart()V
PLcom/android/server/blob/BlobStoreManagerService;->readBlobSessionsLocked(Landroid/util/SparseArray;)V
PLcom/android/server/blob/BlobStoreManagerService;->readBlobsInfoLocked(Landroid/util/SparseArray;)V
-PLcom/android/server/blob/BlobStoreManagerService;->registerBlobStorePuller()V
-PLcom/android/server/blob/BlobStoreManagerService;->registerReceivers()V
-PLcom/android/server/clipboard/ClipboardService$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/blob/BlobStoreManagerService;->writeBlobSessionsAsync()V
+PLcom/android/server/blob/BlobStoreManagerService;->writeBlobSessionsLocked()V
+PLcom/android/server/blob/BlobStoreManagerService;->writeBlobsInfoAsync()V
+PLcom/android/server/blob/BlobStoreManagerService;->writeBlobsInfoLocked()V
PLcom/android/server/clipboard/ClipboardService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/clipboard/ClipboardService;)V
-PLcom/android/server/clipboard/ClipboardService$2;-><init>(Lcom/android/server/clipboard/ClipboardService;)V
+PLcom/android/server/clipboard/ClipboardService$$ExternalSyntheticLambda2;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
PLcom/android/server/clipboard/ClipboardService$ClipboardImpl$ClipboardClearHandler;-><init>(Lcom/android/server/clipboard/ClipboardService$ClipboardImpl;Landroid/os/Looper;)V
PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;-><init>(Lcom/android/server/clipboard/ClipboardService;)V
-PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;-><init>(Lcom/android/server/clipboard/ClipboardService;Lcom/android/server/clipboard/ClipboardService$ClipboardImpl-IA;)V
-PLcom/android/server/clipboard/ClipboardService;->-$$Nest$fgetmWorkerHandler(Lcom/android/server/clipboard/ClipboardService;)Landroid/os/Handler;
-HPLcom/android/server/clipboard/ClipboardService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/clipboard/ClipboardService;-><init>(Landroid/content/Context;)V
PLcom/android/server/clipboard/ClipboardService;->onStart()V
-PLcom/android/server/clipboard/ClipboardService;->registerVirtualDeviceListener()V
PLcom/android/server/clipboard/ClipboardService;->updateConfig()V
-PLcom/android/server/companion/AssociationRequestsProcessor$1;-><init>(Lcom/android/server/companion/AssociationRequestsProcessor;Landroid/os/Handler;)V
-PLcom/android/server/companion/AssociationRequestsProcessor;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;Lcom/android/server/companion/AssociationStoreImpl;)V
-PLcom/android/server/companion/AssociationStoreImpl$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/companion/AssociationStoreImpl$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
-PLcom/android/server/companion/AssociationStoreImpl$$ExternalSyntheticLambda2;-><init>(Ljava/lang/String;)V
-PLcom/android/server/companion/AssociationStoreImpl$$ExternalSyntheticLambda2;->test(Ljava/lang/Object;)Z
-PLcom/android/server/companion/AssociationStoreImpl;->$r8$lambda$60CakuEfGvN-UOxE0riiWYdRC3c(Landroid/companion/AssociationInfo;)V
-PLcom/android/server/companion/AssociationStoreImpl;->$r8$lambda$ca2RCDmyc2KpZMlfSXZiv2X6IYw(Ljava/lang/String;Landroid/companion/AssociationInfo;)Z
-PLcom/android/server/companion/AssociationStoreImpl;-><init>()V
-PLcom/android/server/companion/AssociationStoreImpl;->checkNotRevoked(Landroid/companion/AssociationInfo;)V
-PLcom/android/server/companion/AssociationStoreImpl;->clearLocked()V
-PLcom/android/server/companion/AssociationStoreImpl;->getAssociations()Ljava/util/Collection;
-PLcom/android/server/companion/AssociationStoreImpl;->getAssociationsForPackage(ILjava/lang/String;)Ljava/util/List;
-PLcom/android/server/companion/AssociationStoreImpl;->getAssociationsForUser(I)Ljava/util/List;
-PLcom/android/server/companion/AssociationStoreImpl;->getAssociationsForUserLocked(I)Ljava/util/List;
-PLcom/android/server/companion/AssociationStoreImpl;->lambda$getAssociationsForPackage$2(Ljava/lang/String;Landroid/companion/AssociationInfo;)Z
-PLcom/android/server/companion/AssociationStoreImpl;->registerListener(Lcom/android/server/companion/AssociationStore$OnChangeListener;)V
-PLcom/android/server/companion/AssociationStoreImpl;->setAssociations(Ljava/util/Collection;)V
-PLcom/android/server/companion/AssociationStoreImpl;->setAssociationsLocked(Ljava/util/Collection;)V
-PLcom/android/server/companion/BackupRestoreProcessor;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;Lcom/android/server/companion/AssociationStoreImpl;Lcom/android/server/companion/PersistentDataStore;Lcom/android/server/companion/datatransfer/SystemDataTransferRequestStore;Lcom/android/server/companion/AssociationRequestsProcessor;)V
-PLcom/android/server/companion/CompanionApplicationController$AndroidPackageMap;-><init>()V
-PLcom/android/server/companion/CompanionApplicationController$AndroidPackageMap;-><init>(Lcom/android/server/companion/CompanionApplicationController$AndroidPackageMap-IA;)V
-PLcom/android/server/companion/CompanionApplicationController$CompanionServicesRegister;-><init>(Lcom/android/server/companion/CompanionApplicationController;)V
-PLcom/android/server/companion/CompanionApplicationController$CompanionServicesRegister;-><init>(Lcom/android/server/companion/CompanionApplicationController;Lcom/android/server/companion/CompanionApplicationController$CompanionServicesRegister-IA;)V
-PLcom/android/server/companion/CompanionApplicationController;-><init>(Landroid/content/Context;Lcom/android/server/companion/AssociationStore;Lcom/android/server/companion/ObservableUuidStore;Lcom/android/server/companion/presence/CompanionDevicePresenceMonitor;Landroid/os/PowerManagerInternal;)V
-PLcom/android/server/companion/CompanionDeviceConfig;->isEnabled(Ljava/lang/String;)Z
-PLcom/android/server/companion/CompanionDeviceManagerService$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/companion/CompanionDeviceManagerService$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/companion/BackupRestoreProcessor;-><init>(Landroid/content/Context;Landroid/content/pm/PackageManagerInternal;Lcom/android/server/companion/association/AssociationStore;Lcom/android/server/companion/association/AssociationDiskStore;Lcom/android/server/companion/datatransfer/SystemDataTransferRequestStore;Lcom/android/server/companion/association/AssociationRequestsProcessor;)V
+PLcom/android/server/companion/BackupRestoreProcessor;->getBackupPayload(I)[B
+PLcom/android/server/companion/CompanionDeviceConfig;->isEnabled()Z
PLcom/android/server/companion/CompanionDeviceManagerService$1;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;)V
-PLcom/android/server/companion/CompanionDeviceManagerService$2;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;)V
-PLcom/android/server/companion/CompanionDeviceManagerService$3;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;)V
+PLcom/android/server/companion/CompanionDeviceManagerService$1;->onPackageAdded(Ljava/lang/String;I)V
+PLcom/android/server/companion/CompanionDeviceManagerService$1;->onPackageModified(Ljava/lang/String;)V
PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;)V
-PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->addOnAssociationsChangedListener(Landroid/companion/IOnAssociationsChangedListener;I)V
+PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->getAllAssociationsForUser(I)Ljava/util/List;
HPLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->getAssociations(Ljava/lang/String;I)Ljava/util/List;
+PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->getBackupPayload(I)[B
PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
PLcom/android/server/companion/CompanionDeviceManagerService$LocalService;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;)V
-PLcom/android/server/companion/CompanionDeviceManagerService$LocalService;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;Lcom/android/server/companion/CompanionDeviceManagerService$LocalService-IA;)V
-PLcom/android/server/companion/CompanionDeviceManagerService$OnPackageVisibilityChangeListener;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;Landroid/app/ActivityManager;)V
-PLcom/android/server/companion/CompanionDeviceManagerService$PerUserAssociationSet;-><init>()V
-PLcom/android/server/companion/CompanionDeviceManagerService$PersistUserStateHandler;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;)V
-PLcom/android/server/companion/CompanionDeviceManagerService;->$r8$lambda$qPiDU_hiTPYcITYcno5QR8cQB_I(Lcom/android/server/companion/CompanionDeviceManagerService;)V
-PLcom/android/server/companion/CompanionDeviceManagerService;->-$$Nest$fgetmAssociationStore(Lcom/android/server/companion/CompanionDeviceManagerService;)Lcom/android/server/companion/AssociationStoreImpl;
-PLcom/android/server/companion/CompanionDeviceManagerService;->-$$Nest$fgetmListeners(Lcom/android/server/companion/CompanionDeviceManagerService;)Landroid/os/RemoteCallbackList;
-PLcom/android/server/companion/CompanionDeviceManagerService;-><clinit>()V
-HPLcom/android/server/companion/CompanionDeviceManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/companion/CompanionDeviceManagerService;->getFirstAssociationIdForUser(I)I
-PLcom/android/server/companion/CompanionDeviceManagerService;->getLastAssociationIdForUser(I)I
-PLcom/android/server/companion/CompanionDeviceManagerService;->loadAssociationsFromDisk()V
-PLcom/android/server/companion/CompanionDeviceManagerService;->maybeGrantAutoRevokeExemptions()V
+PLcom/android/server/companion/CompanionDeviceManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/companion/CompanionDeviceManagerService;->onBootPhase(I)V
PLcom/android/server/companion/CompanionDeviceManagerService;->onStart()V
PLcom/android/server/companion/CompanionDeviceManagerService;->onUserUnlocked(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/companion/CompanionDeviceManagerService;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/companion/CompanionDeviceManagerService;->updateAtm(ILjava/util/List;)V
-PLcom/android/server/companion/DataStoreUtils;->createStorageFileForUser(ILjava/lang/String;)Landroid/util/AtomicFile;
-PLcom/android/server/companion/DataStoreUtils;->getBaseStorageFileForUser(ILjava/lang/String;)Ljava/io/File;
-PLcom/android/server/companion/DataStoreUtils;->isEndOfTag(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Z
-PLcom/android/server/companion/DataStoreUtils;->isStartOfTag(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Z
-PLcom/android/server/companion/InactiveAssociationsRemovalService;-><clinit>()V
-PLcom/android/server/companion/InactiveAssociationsRemovalService;->schedule(Landroid/content/Context;)V
-PLcom/android/server/companion/ObservableUuidStore$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/companion/ObservableUuidStore;I)V
-PLcom/android/server/companion/ObservableUuidStore$$ExternalSyntheticLambda0;->call()Ljava/lang/Object;
-PLcom/android/server/companion/ObservableUuidStore$$ExternalSyntheticLambda3;-><init>(I)V
-PLcom/android/server/companion/ObservableUuidStore$$ExternalSyntheticLambda3;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/companion/ObservableUuidStore;->$r8$lambda$JBvSPiYXxTY9FJ_T7R_PkgjUDKs(Lcom/android/server/companion/ObservableUuidStore;I)Ljava/util/List;
-PLcom/android/server/companion/ObservableUuidStore;->$r8$lambda$SWFzFG4e-xRsk2J9VzL5XRljRuw(ILjava/lang/Integer;)Landroid/util/AtomicFile;
-PLcom/android/server/companion/ObservableUuidStore;-><init>()V
-PLcom/android/server/companion/ObservableUuidStore;->getObservableUuidsForUser(I)Ljava/util/List;
-PLcom/android/server/companion/ObservableUuidStore;->getStorageFileForUser(I)Landroid/util/AtomicFile;
-PLcom/android/server/companion/ObservableUuidStore;->lambda$getStorageFileForUser$6(ILjava/lang/Integer;)Landroid/util/AtomicFile;
-PLcom/android/server/companion/ObservableUuidStore;->lambda$readObservableUuidsFromCache$5(I)Ljava/util/List;
-PLcom/android/server/companion/ObservableUuidStore;->readObservableUuidFromStore(I)Ljava/util/List;
-PLcom/android/server/companion/ObservableUuidStore;->readObservableUuidsFromCache(I)Ljava/util/List;
-PLcom/android/server/companion/PermissionsUtils;-><clinit>()V
-PLcom/android/server/companion/PermissionsUtils;->checkCallerCanManageAssociationsForPackage(Landroid/content/Context;ILjava/lang/String;)Z
-PLcom/android/server/companion/PermissionsUtils;->checkCallerCanManageCompanionDevice(Landroid/content/Context;)Z
-PLcom/android/server/companion/PermissionsUtils;->checkCallerIsSystemOr(ILjava/lang/String;)Z
-PLcom/android/server/companion/PermissionsUtils;->enforceCallerCanManageAssociationsForPackage(Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/companion/PermissionsUtils;->enforceCallerIsSystemOrCanInteractWithUserId(Landroid/content/Context;I)V
-PLcom/android/server/companion/PersistentDataStore$$ExternalSyntheticLambda1;-><init>(I)V
-PLcom/android/server/companion/PersistentDataStore$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/companion/PersistentDataStore;->$r8$lambda$kZ79xCqh_OiIBnJ6GaylVqvy9jA(ILjava/lang/Integer;)Landroid/util/AtomicFile;
-PLcom/android/server/companion/PersistentDataStore;-><init>()V
-PLcom/android/server/companion/PersistentDataStore;->createAssociationInfoNoThrow(IILjava/lang/String;Ljava/lang/String;Landroid/net/MacAddress;Ljava/lang/CharSequence;Ljava/lang/String;ZZZZJJI)Landroid/companion/AssociationInfo;
-PLcom/android/server/companion/PersistentDataStore;->getStorageFileForUser(I)Landroid/util/AtomicFile;
-PLcom/android/server/companion/PersistentDataStore;->lambda$getStorageFileForUser$1(ILjava/lang/Integer;)Landroid/util/AtomicFile;
-PLcom/android/server/companion/PersistentDataStore;->readAssociationV1(Lcom/android/modules/utils/TypedXmlPullParser;ILjava/util/Collection;)V
-PLcom/android/server/companion/PersistentDataStore;->readAssociationsV1(Lcom/android/modules/utils/TypedXmlPullParser;ILjava/util/Collection;)V
-PLcom/android/server/companion/PersistentDataStore;->readPreviouslyUsedIdsV1(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/Map;)V
-PLcom/android/server/companion/PersistentDataStore;->readStateForUser(ILjava/util/Collection;Ljava/util/Map;)V
-PLcom/android/server/companion/PersistentDataStore;->readStateForUsers(Ljava/util/List;Ljava/util/Set;Landroid/util/SparseArray;)V
-PLcom/android/server/companion/PersistentDataStore;->readStateFromFileLocked(ILandroid/util/AtomicFile;Ljava/lang/String;Ljava/util/Collection;Ljava/util/Map;)I
-PLcom/android/server/companion/PersistentDataStore;->readStateFromInputStream(ILjava/io/InputStream;Ljava/lang/String;Ljava/util/Collection;Ljava/util/Map;)I
-PLcom/android/server/companion/PersistentDataStore;->requireStartOfTag(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V
-PLcom/android/server/companion/PersistentDataStore;->stringToMacAddress(Ljava/lang/String;)Landroid/net/MacAddress;
+PLcom/android/server/companion/CompanionExemptionProcessor$1;-><init>(Lcom/android/server/companion/CompanionExemptionProcessor;)V
+PLcom/android/server/companion/CompanionExemptionProcessor;-><init>(Landroid/content/Context;Landroid/os/PowerExemptionManager;Landroid/app/AppOpsManager;Landroid/content/pm/PackageManagerInternal;Lcom/android/server/wm/ActivityTaskManagerInternal;Landroid/app/ActivityManagerInternal;Lcom/android/server/companion/association/AssociationStore;)V
+PLcom/android/server/companion/CompanionExemptionProcessor;->updateAtm(ILjava/util/List;)V
+PLcom/android/server/companion/association/AssociationDiskStore$$ExternalSyntheticLambda1;-><init>(I)V
+PLcom/android/server/companion/association/AssociationDiskStore$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/companion/association/AssociationDiskStore;-><init>()V
+PLcom/android/server/companion/association/AssociationDiskStore;->getStorageFileForUser(I)Landroid/util/AtomicFile;
+PLcom/android/server/companion/association/AssociationDiskStore;->readAssociationsByUsers(Ljava/util/List;)Ljava/util/Map;
+PLcom/android/server/companion/association/AssociationDiskStore;->readAssociationsFromInputStream(ILjava/io/InputStream;Ljava/lang/String;)Lcom/android/server/companion/association/Associations;
+PLcom/android/server/companion/association/AssociationDiskStore;->requireStartOfTag(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V
+PLcom/android/server/companion/association/AssociationRequestsProcessor$1;-><init>(Lcom/android/server/companion/association/AssociationRequestsProcessor;Landroid/os/Handler;)V
+PLcom/android/server/companion/association/AssociationRequestsProcessor;-><init>(Landroid/content/Context;Landroid/content/pm/PackageManagerInternal;Lcom/android/server/companion/association/AssociationStore;)V
+PLcom/android/server/companion/association/AssociationStore$$ExternalSyntheticLambda0;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/companion/association/AssociationStore$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/companion/association/AssociationStore$$ExternalSyntheticLambda2;-><init>(I)V
+PLcom/android/server/companion/association/AssociationStore$$ExternalSyntheticLambda2;->test(Ljava/lang/Object;)Z
+PLcom/android/server/companion/association/AssociationStore$$ExternalSyntheticLambda3;-><init>(II)V
+PLcom/android/server/companion/association/AssociationStore$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z
+PLcom/android/server/companion/association/AssociationStore$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/companion/association/AssociationStore;)V
+PLcom/android/server/companion/association/AssociationStore$$ExternalSyntheticLambda4;->runOrThrow()V
+PLcom/android/server/companion/association/AssociationStore$$ExternalSyntheticLambda7;-><init>(IILjava/lang/String;)V
+PLcom/android/server/companion/association/AssociationStore$$ExternalSyntheticLambda7;->test(Ljava/lang/Object;)Z
+PLcom/android/server/companion/association/AssociationStore;-><init>(Landroid/content/Context;Landroid/os/UserManager;Lcom/android/server/companion/association/AssociationDiskStore;)V
+PLcom/android/server/companion/association/AssociationStore;->getActiveAssociations()Ljava/util/List;
+PLcom/android/server/companion/association/AssociationStore;->getActiveAssociationsByAddress(Ljava/lang/String;)Ljava/util/List;
+PLcom/android/server/companion/association/AssociationStore;->getActiveAssociationsByPackage(ILjava/lang/String;)Ljava/util/List;
+PLcom/android/server/companion/association/AssociationStore;->getActiveAssociationsByUser(I)Ljava/util/List;
+PLcom/android/server/companion/association/AssociationStore;->getAssociations()Ljava/util/List;
+PLcom/android/server/companion/association/AssociationStore;->getAssociationsByPackage(ILjava/lang/String;)Ljava/util/List;
+PLcom/android/server/companion/association/AssociationStore;->getAssociationsByUser(I)Ljava/util/List;
+PLcom/android/server/companion/association/AssociationStore;->registerLocalListener(Lcom/android/server/companion/association/AssociationStore$OnChangeListener;)V
+PLcom/android/server/companion/association/Associations;-><init>()V
+PLcom/android/server/companion/association/DisassociationProcessor$OnPackageVisibilityChangeListener;-><init>(Lcom/android/server/companion/association/DisassociationProcessor;)V
+PLcom/android/server/companion/association/DisassociationProcessor;-><clinit>()V
+PLcom/android/server/companion/association/DisassociationProcessor;-><init>(Landroid/content/Context;Landroid/app/ActivityManager;Lcom/android/server/companion/association/AssociationStore;Landroid/content/pm/PackageManagerInternal;Lcom/android/server/companion/devicepresence/DevicePresenceProcessor;Lcom/android/server/companion/devicepresence/CompanionAppBinder;Lcom/android/server/companion/datatransfer/SystemDataTransferRequestStore;Lcom/android/server/companion/transport/CompanionTransportManager;)V
+PLcom/android/server/companion/association/DisassociationProcessor;->removeIdleSelfManagedAssociations()V
+PLcom/android/server/companion/association/InactiveAssociationsRemovalService;-><clinit>()V
+PLcom/android/server/companion/association/InactiveAssociationsRemovalService;-><init>()V
+PLcom/android/server/companion/association/InactiveAssociationsRemovalService;->onStartJob(Landroid/app/job/JobParameters;)Z
PLcom/android/server/companion/datatransfer/SystemDataTransferProcessor$1;-><init>(Lcom/android/server/companion/datatransfer/SystemDataTransferProcessor;)V
PLcom/android/server/companion/datatransfer/SystemDataTransferProcessor$2;-><init>(Lcom/android/server/companion/datatransfer/SystemDataTransferProcessor;Landroid/os/Handler;)V
-PLcom/android/server/companion/datatransfer/SystemDataTransferProcessor;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;Landroid/content/pm/PackageManagerInternal;Lcom/android/server/companion/AssociationStore;Lcom/android/server/companion/datatransfer/SystemDataTransferRequestStore;Lcom/android/server/companion/transport/CompanionTransportManager;)V
+PLcom/android/server/companion/datatransfer/SystemDataTransferProcessor;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;Landroid/content/pm/PackageManagerInternal;Lcom/android/server/companion/association/AssociationStore;Lcom/android/server/companion/datatransfer/SystemDataTransferRequestStore;Lcom/android/server/companion/transport/CompanionTransportManager;)V
+PLcom/android/server/companion/datatransfer/SystemDataTransferRequestStore$$ExternalSyntheticLambda6;-><init>(I)V
+PLcom/android/server/companion/datatransfer/SystemDataTransferRequestStore$$ExternalSyntheticLambda6;->apply(Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/companion/datatransfer/SystemDataTransferRequestStore;-><init>()V
+PLcom/android/server/companion/datatransfer/SystemDataTransferRequestStore;->getStorageFileForUser(I)Landroid/util/AtomicFile;
PLcom/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController$1;-><init>(Lcom/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController;)V
PLcom/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController$1;->onTransportsChanged(Ljava/util/List;)V
PLcom/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController$2;-><init>(Lcom/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController;)V
PLcom/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController$CallManager;-><init>(Landroid/content/Context;Lcom/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController$PhoneAccountManager;)V
PLcom/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController$PhoneAccountManager;-><init>(Landroid/content/Context;)V
PLcom/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController;-><init>(Landroid/content/Context;Lcom/android/server/companion/transport/CompanionTransportManager;)V
-PLcom/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController;->onBootCompleted()V
-PLcom/android/server/companion/presence/BleCompanionDeviceScanner$1;-><init>(Lcom/android/server/companion/presence/BleCompanionDeviceScanner;)V
-PLcom/android/server/companion/presence/BleCompanionDeviceScanner$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/companion/presence/BleCompanionDeviceScanner$2;-><init>(Lcom/android/server/companion/presence/BleCompanionDeviceScanner;)V
-PLcom/android/server/companion/presence/BleCompanionDeviceScanner;->-$$Nest$mcheckBleState(Lcom/android/server/companion/presence/BleCompanionDeviceScanner;)V
-PLcom/android/server/companion/presence/BleCompanionDeviceScanner;-><clinit>()V
-PLcom/android/server/companion/presence/BleCompanionDeviceScanner;-><init>(Lcom/android/server/companion/AssociationStore;Lcom/android/server/companion/presence/BleCompanionDeviceScanner$Callback;)V
-PLcom/android/server/companion/presence/BleCompanionDeviceScanner;->checkBleState()V
-PLcom/android/server/companion/presence/BleCompanionDeviceScanner;->enforceInitialized()V
-PLcom/android/server/companion/presence/BleCompanionDeviceScanner;->init(Landroid/content/Context;Landroid/bluetooth/BluetoothAdapter;)V
-PLcom/android/server/companion/presence/BleCompanionDeviceScanner;->registerBluetoothStateBroadcastReceiver(Landroid/content/Context;)V
-PLcom/android/server/companion/presence/BleCompanionDeviceScanner;->startScan()V
-PLcom/android/server/companion/presence/BluetoothCompanionDeviceConnectionListener;-><init>(Landroid/os/UserManager;Lcom/android/server/companion/AssociationStore;Lcom/android/server/companion/ObservableUuidStore;Lcom/android/server/companion/presence/BluetoothCompanionDeviceConnectionListener$Callback;)V
-PLcom/android/server/companion/presence/BluetoothCompanionDeviceConnectionListener;->init(Landroid/bluetooth/BluetoothAdapter;)V
-PLcom/android/server/companion/presence/CompanionDevicePresenceMonitor$SimulatedDevicePresenceSchedulerHelper;-><init>(Lcom/android/server/companion/presence/CompanionDevicePresenceMonitor;)V
-PLcom/android/server/companion/presence/CompanionDevicePresenceMonitor;-><init>(Landroid/os/UserManager;Lcom/android/server/companion/AssociationStore;Lcom/android/server/companion/ObservableUuidStore;Lcom/android/server/companion/presence/CompanionDevicePresenceMonitor$Callback;)V
-PLcom/android/server/companion/presence/CompanionDevicePresenceMonitor;->getPendingConnectedDevices()Landroid/util/SparseArray;
-PLcom/android/server/companion/presence/CompanionDevicePresenceMonitor;->init(Landroid/content/Context;)V
-PLcom/android/server/companion/transport/CompanionTransportManager$$ExternalSyntheticLambda0;-><init>(Landroid/companion/IOnTransportsChangedListener;Ljava/util/List;)V
+PLcom/android/server/companion/devicepresence/BleDeviceProcessor$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/companion/devicepresence/BleDeviceProcessor$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/companion/devicepresence/BleDeviceProcessor$1;-><init>(Lcom/android/server/companion/devicepresence/BleDeviceProcessor;)V
+PLcom/android/server/companion/devicepresence/BleDeviceProcessor$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/companion/devicepresence/BleDeviceProcessor$2;-><init>(Lcom/android/server/companion/devicepresence/BleDeviceProcessor;)V
+PLcom/android/server/companion/devicepresence/BleDeviceProcessor;-><clinit>()V
+PLcom/android/server/companion/devicepresence/BleDeviceProcessor;-><init>(Lcom/android/server/companion/association/AssociationStore;Lcom/android/server/companion/devicepresence/DevicePresenceProcessor;)V
+PLcom/android/server/companion/devicepresence/BleDeviceProcessor;->checkBleState()V
+PLcom/android/server/companion/devicepresence/BleDeviceProcessor;->startScan()V
+PLcom/android/server/companion/devicepresence/BluetoothDeviceProcessor;-><init>(Lcom/android/server/companion/association/AssociationStore;Lcom/android/server/companion/devicepresence/ObservableUuidStore;Lcom/android/server/companion/devicepresence/DevicePresenceProcessor;)V
+PLcom/android/server/companion/devicepresence/BluetoothDeviceProcessor;->onDeviceConnected(Landroid/bluetooth/BluetoothDevice;)V
+PLcom/android/server/companion/devicepresence/BluetoothDeviceProcessor;->onDeviceConnectivityChanged(Landroid/bluetooth/BluetoothDevice;Z)V
+PLcom/android/server/companion/devicepresence/BluetoothDeviceProcessor;->onDeviceDisconnected(Landroid/bluetooth/BluetoothDevice;I)V
+PLcom/android/server/companion/devicepresence/CompanionAppBinder$CompanionServicesRegister;-><init>(Lcom/android/server/companion/devicepresence/CompanionAppBinder;)V
+PLcom/android/server/companion/devicepresence/CompanionAppBinder;-><init>(Landroid/content/Context;)V
+PLcom/android/server/companion/devicepresence/DevicePresenceProcessor$BleDeviceDisappearedScheduler;-><init>(Lcom/android/server/companion/devicepresence/DevicePresenceProcessor;)V
+PLcom/android/server/companion/devicepresence/DevicePresenceProcessor$SimulatedDevicePresenceSchedulerHelper;-><init>(Lcom/android/server/companion/devicepresence/DevicePresenceProcessor;)V
+PLcom/android/server/companion/devicepresence/DevicePresenceProcessor;-><init>(Landroid/content/Context;Lcom/android/server/companion/devicepresence/CompanionAppBinder;Landroid/os/UserManager;Lcom/android/server/companion/association/AssociationStore;Lcom/android/server/companion/devicepresence/ObservableUuidStore;Landroid/os/PowerManagerInternal;Lcom/android/server/companion/CompanionExemptionProcessor;)V
+PLcom/android/server/companion/devicepresence/DevicePresenceProcessor;->sendDevicePresenceEventOnUnlocked(I)V
+PLcom/android/server/companion/devicepresence/ObservableUuidStore$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/companion/devicepresence/ObservableUuidStore;I)V
+PLcom/android/server/companion/devicepresence/ObservableUuidStore$$ExternalSyntheticLambda0;->call()Ljava/lang/Object;
+PLcom/android/server/companion/devicepresence/ObservableUuidStore$$ExternalSyntheticLambda3;-><init>(I)V
+PLcom/android/server/companion/devicepresence/ObservableUuidStore$$ExternalSyntheticLambda3;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/companion/devicepresence/ObservableUuidStore;-><init>()V
+PLcom/android/server/companion/devicepresence/ObservableUuidStore;->readObservableUuidsFromCache(I)Ljava/util/List;
+PLcom/android/server/companion/transport/CompanionTransportManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/companion/transport/CompanionTransportManager;Landroid/companion/IOnTransportsChangedListener;)V
PLcom/android/server/companion/transport/CompanionTransportManager$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/companion/transport/CompanionTransportManager;->$r8$lambda$Nes8XDMe0_gDmUo7HQHaB-4pP6I(Landroid/companion/IOnTransportsChangedListener;Ljava/util/List;Landroid/companion/IOnTransportsChangedListener;)V
-PLcom/android/server/companion/transport/CompanionTransportManager;-><init>(Landroid/content/Context;Lcom/android/server/companion/AssociationStore;)V
+PLcom/android/server/companion/transport/CompanionTransportManager;-><init>(Landroid/content/Context;Lcom/android/server/companion/association/AssociationStore;)V
PLcom/android/server/companion/transport/CompanionTransportManager;->addListener(ILandroid/companion/IOnMessageReceivedListener;)V
PLcom/android/server/companion/transport/CompanionTransportManager;->addListener(Landroid/companion/IOnTransportsChangedListener;)V
-PLcom/android/server/companion/transport/CompanionTransportManager;->lambda$addListener$0(Landroid/companion/IOnTransportsChangedListener;Ljava/util/List;Landroid/companion/IOnTransportsChangedListener;)V
-PLcom/android/server/companion/virtual/VirtualDeviceLog;-><clinit>()V
-PLcom/android/server/companion/virtual/VirtualDeviceLog;-><init>(Landroid/content/Context;)V
-PLcom/android/server/companion/virtual/VirtualDeviceManagerInternal;-><init>()V
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)V
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService$1;-><init>(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)V
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService$2;-><init>(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)V
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService$2;->onInterceptActivityLaunch(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;)Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptResult;
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;-><init>(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)V
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;-><init>(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;Lcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService-IA;)V
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;->getAllPersistentDeviceIds()Ljava/util/Set;
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;->getDeviceIdForDisplayId(I)I
-HPLcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;->getDeviceIdsForUid(I)Landroid/util/ArraySet;
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;->getPreferredLocaleListForUid(I)Landroid/os/LocaleList;
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;->registerPersistentDeviceIdRemovedListener(Ljava/util/function/Consumer;)V
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService$PendingTrampolineMap;-><init>(Landroid/os/Handler;)V
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService$PendingTrampolineMap;->remove(Ljava/lang/String;)Lcom/android/server/companion/virtual/VirtualDeviceImpl$PendingTrampoline;
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService$VirtualDeviceManagerImpl$1;-><init>(Lcom/android/server/companion/virtual/VirtualDeviceManagerService$VirtualDeviceManagerImpl;)V
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService$VirtualDeviceManagerImpl;-><init>(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)V
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService$VirtualDeviceManagerImpl;->getDeviceIdForDisplayId(I)I
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService$VirtualDeviceManagerImpl;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService$VirtualDeviceManagerImpl;->registerVirtualDeviceListener(Landroid/companion/virtual/IVirtualDeviceListener;)V
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService$VirtualDeviceManagerNativeImpl;-><init>(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)V
-HPLcom/android/server/companion/virtual/VirtualDeviceManagerService$VirtualDeviceManagerNativeImpl;->getDeviceIdsForUid(I)[I
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService;->-$$Nest$fgetmActiveAssociations(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)Landroid/util/ArrayMap;
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService;->-$$Nest$fgetmAppsOnVirtualDevices(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)Landroid/util/SparseArray;
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService;->-$$Nest$fgetmImpl(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)Lcom/android/server/companion/virtual/VirtualDeviceManagerService$VirtualDeviceManagerImpl;
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService;->-$$Nest$fgetmLocalService(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)Lcom/android/server/companion/virtual/VirtualDeviceManagerInternal;
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService;->-$$Nest$fgetmPendingTrampolines(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)Lcom/android/server/companion/virtual/VirtualDeviceManagerService$PendingTrampolineMap;
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService;->-$$Nest$fgetmVirtualDeviceListeners(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)Landroid/os/RemoteCallbackList;
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService;->-$$Nest$fgetmVirtualDeviceManagerLock(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)Ljava/lang/Object;
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService;->-$$Nest$mgetVirtualDevicesSnapshot(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)Ljava/util/ArrayList;
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService;-><clinit>()V
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/companion/virtual/VirtualDeviceManagerService;->getVirtualDevicesSnapshot()Ljava/util/ArrayList;
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService;->onCdmAssociationsChanged(Ljava/util/List;)V
-PLcom/android/server/companion/virtual/VirtualDeviceManagerService;->onStart()V
+PLcom/android/server/companion/transport/CompanionTransportManager;->getAssociationsWithTransport()Ljava/util/List;
+PLcom/android/server/companion/utils/DataStoreUtils;->fileToByteArray(Landroid/util/AtomicFile;)[B
+PLcom/android/server/companion/utils/DataStoreUtils;->isEndOfTag(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Z
+PLcom/android/server/companion/utils/DataStoreUtils;->isStartOfTag(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Z
+PLcom/android/server/companion/utils/PermissionsUtils;-><clinit>()V
+PLcom/android/server/companion/utils/PermissionsUtils;->enforceCallerCanManageAssociationsForPackage(ILandroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/companion/utils/PermissionsUtils;->enforceCallerIsSystemOrCanInteractWithUserId(Landroid/content/Context;I)V
HSPLcom/android/server/compat/CompatChange;-><init>(JLjava/lang/String;IIZZLjava/lang/String;Z)V
-HSPLcom/android/server/compat/CompatChange;-><init>(Lcom/android/server/compat/config/Change;)V
-HSPLcom/android/server/compat/CompatChange;->clearOverrides()V
-PLcom/android/server/compat/CompatChange;->defaultValue()Z
-HPLcom/android/server/compat/CompatChange;->isEnabled(Landroid/content/pm/ApplicationInfo;Lcom/android/internal/compat/AndroidBuildClassifier;)Z
-PLcom/android/server/compat/CompatChange;->registerListener(Lcom/android/server/compat/CompatChange$ChangeListener;)V
-HPLcom/android/server/compat/CompatChange;->willBeEnabled(Ljava/lang/String;)Z
+HSPLcom/android/server/compat/CompatChange;->isEnabled(Landroid/content/pm/ApplicationInfo;Lcom/android/internal/compat/AndroidBuildClassifier;)Z+]Lcom/android/internal/compat/AndroidBuildClassifier;Lcom/android/internal/compat/AndroidBuildClassifier;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
+PLcom/android/server/compat/CompatChange;->recheckOverride(Ljava/lang/String;Lcom/android/internal/compat/OverrideAllowedState;Ljava/lang/Long;)Z
+PLcom/android/server/compat/CompatChange;->toString()Ljava/lang/String;
PLcom/android/server/compat/CompatConfig$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/compat/CompatConfig;Ljava/util/concurrent/atomic/AtomicBoolean;J)V
HSPLcom/android/server/compat/CompatConfig;-><init>(Lcom/android/internal/compat/AndroidBuildClassifier;Landroid/content/Context;)V
-HSPLcom/android/server/compat/CompatConfig;->create(Lcom/android/internal/compat/AndroidBuildClassifier;Landroid/content/Context;)Lcom/android/server/compat/CompatConfig;
-HPLcom/android/server/compat/CompatConfig;->getDisabledChanges(Landroid/content/pm/ApplicationInfo;)[J
+PLcom/android/server/compat/CompatConfig;->getVersionCodeOrNull(Ljava/lang/String;)Ljava/lang/Long;
HSPLcom/android/server/compat/CompatConfig;->initConfigFromLib(Ljava/io/File;)V
-HSPLcom/android/server/compat/CompatConfig;->initOverrides()V
HSPLcom/android/server/compat/CompatConfig;->initOverrides(Ljava/io/File;Ljava/io/File;)V
-HSPLcom/android/server/compat/CompatConfig;->invalidateCache()V
-HPLcom/android/server/compat/CompatConfig;->isChangeEnabled(JLandroid/content/pm/ApplicationInfo;)Z
HSPLcom/android/server/compat/CompatConfig;->loadOverrides(Ljava/io/File;)V
-HSPLcom/android/server/compat/CompatConfig;->makeBackupFile(Ljava/io/File;)Ljava/io/File;
-HSPLcom/android/server/compat/CompatConfig;->readConfig(Ljava/io/File;)V
-PLcom/android/server/compat/CompatConfig;->registerContentObserver()V
-PLcom/android/server/compat/CompatConfig;->registerListener(JLcom/android/server/compat/CompatChange$ChangeListener;)Z
-HPLcom/android/server/compat/CompatConfig;->willChangeBeEnabled(JLjava/lang/String;)Z
+PLcom/android/server/compat/CompatConfig;->willChangeBeEnabled(JLjava/lang/String;)Z
PLcom/android/server/compat/OverrideValidatorImpl$SettingsObserver;-><init>(Lcom/android/server/compat/OverrideValidatorImpl;)V
HSPLcom/android/server/compat/OverrideValidatorImpl;-><init>(Lcom/android/internal/compat/AndroidBuildClassifier;Landroid/content/Context;Lcom/android/server/compat/CompatConfig;)V
-PLcom/android/server/compat/OverrideValidatorImpl;->registerContentObserver()V
+PLcom/android/server/compat/OverrideValidatorImpl;->getOverrideAllowedStateInternal(Ljava/lang/String;JZ)Lcom/android/internal/compat/OverrideAllowedState;
PLcom/android/server/compat/PlatformCompat$1;-><init>(Lcom/android/server/compat/PlatformCompat;)V
+PLcom/android/server/compat/PlatformCompat$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
HSPLcom/android/server/compat/PlatformCompat;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/compat/PlatformCompat;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
-HPLcom/android/server/compat/PlatformCompat;->getDisabledChanges(Landroid/content/pm/ApplicationInfo;)[J
-HPLcom/android/server/compat/PlatformCompat;->isChangeEnabled(JLandroid/content/pm/ApplicationInfo;)Z
+PLcom/android/server/compat/PlatformCompat;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/compat/PlatformCompat;->fixTargetSdk(Landroid/content/pm/ApplicationInfo;I)V
+HPLcom/android/server/compat/PlatformCompat;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
+PLcom/android/server/compat/PlatformCompat;->isChangeEnabled(JLandroid/content/pm/ApplicationInfo;)Z
HPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByPackageName(JLjava/lang/String;I)Z
-HPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByUid(JI)Z
-HPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByUidInternal(JI)Z
-HPLcom/android/server/compat/PlatformCompat;->isChangeEnabledInternal(JLandroid/content/pm/ApplicationInfo;)Z
-HPLcom/android/server/compat/PlatformCompat;->isChangeEnabledInternal(JLjava/lang/String;I)Z
-HPLcom/android/server/compat/PlatformCompat;->isChangeEnabledInternalNoLogging(JLandroid/content/pm/ApplicationInfo;)Z
-PLcom/android/server/compat/PlatformCompat;->registerContentObserver()V
-PLcom/android/server/compat/PlatformCompat;->registerListener(JLcom/android/server/compat/CompatChange$ChangeListener;)Z
+HPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByUid(JI)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
+HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledInternal(JLandroid/content/pm/ApplicationInfo;)Z+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/internal/compat/ChangeReporter;Lcom/android/internal/compat/ChangeReporter;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
+HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledInternalNoLogging(JLandroid/content/pm/ApplicationInfo;)Z+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
+PLcom/android/server/compat/PlatformCompat;->registerListener(JLcom/android/server/compat/CompatChange$ChangeListener;)V
PLcom/android/server/compat/PlatformCompat;->registerPackageReceiver(Landroid/content/Context;)V
-PLcom/android/server/compat/PlatformCompat;->reportChangeInternal(JII)V
-HPLcom/android/server/compat/PlatformCompat;->resetReporting(Landroid/content/pm/ApplicationInfo;)V
HSPLcom/android/server/compat/PlatformCompatNative;-><init>(Lcom/android/server/compat/PlatformCompat;)V
-HSPLcom/android/server/compat/config/Change;-><init>()V
-HSPLcom/android/server/compat/config/Change;->getDescription()Ljava/lang/String;
-HSPLcom/android/server/compat/config/Change;->getDisabled()Z
-HSPLcom/android/server/compat/config/Change;->getEnableAfterTargetSdk()I
-HSPLcom/android/server/compat/config/Change;->getEnableSinceTargetSdk()I
-HSPLcom/android/server/compat/config/Change;->getId()J
-HSPLcom/android/server/compat/config/Change;->getLoggingOnly()Z
-HSPLcom/android/server/compat/config/Change;->getName()Ljava/lang/String;
-HSPLcom/android/server/compat/config/Change;->getOverridable()Z
-HSPLcom/android/server/compat/config/Change;->read(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/compat/config/Change;
-HSPLcom/android/server/compat/config/Change;->setDescription(Ljava/lang/String;)V
-HSPLcom/android/server/compat/config/Change;->setDisabled(Z)V
-HSPLcom/android/server/compat/config/Change;->setEnableAfterTargetSdk(I)V
-HSPLcom/android/server/compat/config/Change;->setEnableSinceTargetSdk(I)V
-HSPLcom/android/server/compat/config/Change;->setId(J)V
-HSPLcom/android/server/compat/config/Change;->setName(Ljava/lang/String;)V
-HSPLcom/android/server/compat/config/Change;->setOverridable(Z)V
-HSPLcom/android/server/compat/config/Change;->setValue(Ljava/lang/String;)V
-HSPLcom/android/server/compat/config/Config;-><init>()V
-HSPLcom/android/server/compat/config/Config;->getCompatChange()Ljava/util/List;
-HSPLcom/android/server/compat/config/Config;->read(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/compat/config/Config;
HSPLcom/android/server/compat/config/XmlParser;->read(Ljava/io/InputStream;)Lcom/android/server/compat/config/Config;
-HSPLcom/android/server/compat/config/XmlParser;->readText(Lorg/xmlpull/v1/XmlPullParser;)Ljava/lang/String;
PLcom/android/server/compat/overrides/AppCompatOverridesParser;-><clinit>()V
PLcom/android/server/compat/overrides/AppCompatOverridesParser;-><init>(Landroid/content/pm/PackageManager;)V
-PLcom/android/server/compat/overrides/AppCompatOverridesService$DeviceConfigListener;->-$$Nest$mregister(Lcom/android/server/compat/overrides/AppCompatOverridesService$DeviceConfigListener;)V
+PLcom/android/server/compat/overrides/AppCompatOverridesParser;->parsePackageOverrides(Ljava/lang/String;Ljava/lang/String;JLjava/util/Set;)Ljava/util/Map;
PLcom/android/server/compat/overrides/AppCompatOverridesService$DeviceConfigListener;-><init>(Lcom/android/server/compat/overrides/AppCompatOverridesService;Landroid/content/Context;Ljava/lang/String;)V
-PLcom/android/server/compat/overrides/AppCompatOverridesService$DeviceConfigListener;-><init>(Lcom/android/server/compat/overrides/AppCompatOverridesService;Landroid/content/Context;Ljava/lang/String;Lcom/android/server/compat/overrides/AppCompatOverridesService$DeviceConfigListener-IA;)V
-PLcom/android/server/compat/overrides/AppCompatOverridesService$DeviceConfigListener;->register()V
PLcom/android/server/compat/overrides/AppCompatOverridesService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/compat/overrides/AppCompatOverridesService$Lifecycle;->onStart()V
-PLcom/android/server/compat/overrides/AppCompatOverridesService$PackageReceiver;->-$$Nest$mregister(Lcom/android/server/compat/overrides/AppCompatOverridesService$PackageReceiver;)V
PLcom/android/server/compat/overrides/AppCompatOverridesService$PackageReceiver;-><init>(Lcom/android/server/compat/overrides/AppCompatOverridesService;Landroid/content/Context;)V
-PLcom/android/server/compat/overrides/AppCompatOverridesService$PackageReceiver;-><init>(Lcom/android/server/compat/overrides/AppCompatOverridesService;Landroid/content/Context;Lcom/android/server/compat/overrides/AppCompatOverridesService$PackageReceiver-IA;)V
-PLcom/android/server/compat/overrides/AppCompatOverridesService$PackageReceiver;->register()V
+PLcom/android/server/compat/overrides/AppCompatOverridesService$PackageReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/compat/overrides/AppCompatOverridesService;-><clinit>()V
-PLcom/android/server/compat/overrides/AppCompatOverridesService;-><init>(Landroid/content/Context;)V
PLcom/android/server/compat/overrides/AppCompatOverridesService;-><init>(Landroid/content/Context;Lcom/android/internal/compat/IPlatformCompat;Ljava/util/List;)V
-PLcom/android/server/compat/overrides/AppCompatOverridesService;-><init>(Landroid/content/Context;Lcom/android/server/compat/overrides/AppCompatOverridesService-IA;)V
+PLcom/android/server/compat/overrides/AppCompatOverridesService;->getOverridesToRemove(Ljava/lang/String;Ljava/util/Set;)Ljava/util/Map;
+PLcom/android/server/compat/overrides/AppCompatOverridesService;->getOwnedChangeIds(Ljava/lang/String;)Ljava/util/Set;
+PLcom/android/server/compat/overrides/AppCompatOverridesService;->getVersionCodeOrNull(Ljava/lang/String;)Ljava/lang/Long;
PLcom/android/server/compat/overrides/AppCompatOverridesService;->registerDeviceConfigListeners()V
PLcom/android/server/compat/overrides/AppCompatOverridesService;->registerPackageReceiver()V
PLcom/android/server/connectivity/DefaultNetworkMetrics;-><init>()V
-PLcom/android/server/connectivity/DefaultNetworkMetrics;->newDefaultNetwork(JLandroid/net/Network;IZLandroid/net/LinkProperties;Landroid/net/NetworkCapabilities;)V
-PLcom/android/server/connectivity/IpConnectivityMetrics$$ExternalSyntheticLambda0;-><init>()V
PLcom/android/server/connectivity/IpConnectivityMetrics$$ExternalSyntheticLambda0;->applyAsInt(Ljava/lang/Object;)I
PLcom/android/server/connectivity/IpConnectivityMetrics$Impl;-><init>(Lcom/android/server/connectivity/IpConnectivityMetrics;)V
PLcom/android/server/connectivity/IpConnectivityMetrics$Impl;->addNetdEventCallback(ILandroid/net/INetdEventCallback;)Z
-PLcom/android/server/connectivity/IpConnectivityMetrics$Impl;->enforceNetdEventListeningPermission()V
-PLcom/android/server/connectivity/IpConnectivityMetrics$LoggerImpl;-><init>(Lcom/android/server/connectivity/IpConnectivityMetrics;)V
-PLcom/android/server/connectivity/IpConnectivityMetrics$LoggerImpl;-><init>(Lcom/android/server/connectivity/IpConnectivityMetrics;Lcom/android/server/connectivity/IpConnectivityMetrics$LoggerImpl-IA;)V
-PLcom/android/server/connectivity/IpConnectivityMetrics;->$r8$lambda$vBvdubbZbE8NJB5mMZ6KhHRxliM(Landroid/content/Context;)I
+PLcom/android/server/connectivity/IpConnectivityMetrics$Impl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/connectivity/IpConnectivityMetrics$Impl;->logEvent(Landroid/net/ConnectivityMetricsEvent;)I
PLcom/android/server/connectivity/IpConnectivityMetrics;-><clinit>()V
PLcom/android/server/connectivity/IpConnectivityMetrics;-><init>(Landroid/content/Context;)V
-PLcom/android/server/connectivity/IpConnectivityMetrics;-><init>(Landroid/content/Context;Ljava/util/function/ToIntFunction;)V
PLcom/android/server/connectivity/IpConnectivityMetrics;->bufferCapacity()I
+PLcom/android/server/connectivity/IpConnectivityMetrics;->getEvents()Ljava/util/List;
PLcom/android/server/connectivity/IpConnectivityMetrics;->initBuffer()V
-PLcom/android/server/connectivity/IpConnectivityMetrics;->lambda$static$1(Landroid/content/Context;)I
-PLcom/android/server/connectivity/IpConnectivityMetrics;->makeRateLimitingBuckets()Landroid/util/ArrayMap;
PLcom/android/server/connectivity/IpConnectivityMetrics;->onBootPhase(I)V
PLcom/android/server/connectivity/IpConnectivityMetrics;->onStart()V
PLcom/android/server/connectivity/MultipathPolicyTracker$1;-><init>(Lcom/android/server/connectivity/MultipathPolicyTracker;)V
+PLcom/android/server/connectivity/MultipathPolicyTracker$2$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/connectivity/MultipathPolicyTracker$2;)V
+PLcom/android/server/connectivity/MultipathPolicyTracker$2$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/connectivity/MultipathPolicyTracker$2;-><init>(Lcom/android/server/connectivity/MultipathPolicyTracker;)V
+PLcom/android/server/connectivity/MultipathPolicyTracker$2;->onMeteredIfacesChanged([Ljava/lang/String;)V
PLcom/android/server/connectivity/MultipathPolicyTracker$ConfigChangeReceiver;-><init>(Lcom/android/server/connectivity/MultipathPolicyTracker;)V
-PLcom/android/server/connectivity/MultipathPolicyTracker$ConfigChangeReceiver;-><init>(Lcom/android/server/connectivity/MultipathPolicyTracker;Lcom/android/server/connectivity/MultipathPolicyTracker$ConfigChangeReceiver-IA;)V
-PLcom/android/server/connectivity/MultipathPolicyTracker$Dependencies;-><init>()V
-PLcom/android/server/connectivity/MultipathPolicyTracker$Dependencies;->getClock()Ljava/time/Clock;
+PLcom/android/server/connectivity/MultipathPolicyTracker$ConfigChangeReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/connectivity/MultipathPolicyTracker$SettingsObserver;-><init>(Lcom/android/server/connectivity/MultipathPolicyTracker;Landroid/os/Handler;)V
-PLcom/android/server/connectivity/MultipathPolicyTracker;-><clinit>()V
+PLcom/android/server/connectivity/MultipathPolicyTracker;->-$$Nest$mupdateAllMultipathBudgets(Lcom/android/server/connectivity/MultipathPolicyTracker;)V
PLcom/android/server/connectivity/MultipathPolicyTracker;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
-PLcom/android/server/connectivity/MultipathPolicyTracker;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/connectivity/MultipathPolicyTracker$Dependencies;)V
-PLcom/android/server/connectivity/MultipathPolicyTracker;->registerNetworkPolicyListener()V
-PLcom/android/server/connectivity/MultipathPolicyTracker;->registerTrackMobileCallback()V
PLcom/android/server/connectivity/MultipathPolicyTracker;->start()V
-PLcom/android/server/connectivity/NetdEventListenerService$NetworkMetricsSnapshot;-><init>()V
-PLcom/android/server/connectivity/NetdEventListenerService$NetworkMetricsSnapshot;->collect(JLandroid/util/SparseArray;)Lcom/android/server/connectivity/NetdEventListenerService$NetworkMetricsSnapshot;
-PLcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback;-><init>(Lcom/android/server/connectivity/NetdEventListenerService;)V
-PLcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback;-><init>(Lcom/android/server/connectivity/NetdEventListenerService;Lcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback-IA;)V
-HPLcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback;->getNetworkCapabilities(I)Landroid/net/NetworkCapabilities;
+PLcom/android/server/connectivity/NetdEventListenerService$NetworkMetricsSnapshot;->toString()Ljava/lang/String;
+PLcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback;-><init>()V
+PLcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V
+PLcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback;->onLost(Landroid/net/Network;)V
PLcom/android/server/connectivity/NetdEventListenerService;-><clinit>()V
-PLcom/android/server/connectivity/NetdEventListenerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/connectivity/NetdEventListenerService;-><init>(Landroid/net/ConnectivityManager;)V
-PLcom/android/server/connectivity/NetdEventListenerService;->addNetdEventCallback(ILandroid/net/INetdEventCallback;)Z
HPLcom/android/server/connectivity/NetdEventListenerService;->collectPendingMetricsSnapshot(JZ)V
-HPLcom/android/server/connectivity/NetdEventListenerService;->getMetricsForNetwork(JI)Landroid/net/metrics/NetworkMetrics;
-PLcom/android/server/connectivity/NetdEventListenerService;->isValidCallerType(I)Z
+HPLcom/android/server/connectivity/NetdEventListenerService;->getMetricsForNetwork(IJ)Landroid/net/metrics/NetworkMetrics;
PLcom/android/server/connectivity/NetdEventListenerService;->onConnectEvent(IIILjava/lang/String;II)V
HPLcom/android/server/connectivity/NetdEventListenerService;->onDnsEvent(IIIILjava/lang/String;[Ljava/lang/String;II)V
-PLcom/android/server/connectivity/NetdEventListenerService;->projectSnapshotTime(J)J
+PLcom/android/server/connectivity/NetdEventListenerService;->onPrivateDnsValidationEvent(ILjava/lang/String;Ljava/lang/String;Z)V
+PLcom/android/server/connectivity/NetdEventListenerService;->onTcpSocketStatsEvent([I[I[I[I[I)V
+PLcom/android/server/connectivity/NetdEventListenerService;->onWakeupEvent(Ljava/lang/String;III[BLjava/lang/String;Ljava/lang/String;IIJ)V
PLcom/android/server/connectivity/PacProxyService$1;-><init>(Lcom/android/server/connectivity/PacProxyService;)V
PLcom/android/server/connectivity/PacProxyService$PacRefreshIntentReceiver;-><init>(Lcom/android/server/connectivity/PacProxyService;)V
PLcom/android/server/connectivity/PacProxyService;-><init>(Landroid/content/Context;)V
PLcom/android/server/connectivity/PacProxyService;->addListener(Landroid/net/IPacProxyInstalledListener;)V
-PLcom/android/server/connectivity/Vpn$1;-><init>(Lcom/android/server/connectivity/Vpn;)V
-PLcom/android/server/connectivity/Vpn$Dependencies;-><init>()V
-PLcom/android/server/connectivity/Vpn$Ikev2SessionCreator;-><init>()V
-PLcom/android/server/connectivity/Vpn$SystemServices;-><init>(Landroid/content/Context;)V
-PLcom/android/server/connectivity/Vpn$SystemServices;->getContentResolverAsUser(I)Landroid/content/ContentResolver;
-PLcom/android/server/connectivity/Vpn$SystemServices;->settingsSecureGetIntForUser(Ljava/lang/String;II)I
-PLcom/android/server/connectivity/Vpn$SystemServices;->settingsSecureGetStringForUser(Ljava/lang/String;I)Ljava/lang/String;
-PLcom/android/server/connectivity/Vpn;-><clinit>()V
-PLcom/android/server/connectivity/Vpn;-><init>(Landroid/os/Looper;Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/net/INetd;ILcom/android/server/connectivity/VpnProfileStore;)V
-HPLcom/android/server/connectivity/Vpn;-><init>(Landroid/os/Looper;Landroid/content/Context;Lcom/android/server/connectivity/Vpn$Dependencies;Landroid/os/INetworkManagementService;Landroid/net/INetd;ILcom/android/server/connectivity/VpnProfileStore;Lcom/android/server/connectivity/Vpn$SystemServices;Lcom/android/server/connectivity/Vpn$Ikev2SessionCreator;)V
-PLcom/android/server/connectivity/Vpn;->doesPackageTargetAtLeastQ(Ljava/lang/String;)Z
-PLcom/android/server/connectivity/Vpn;->enforceControlPermissionOrInternalCaller()V
-PLcom/android/server/connectivity/Vpn;->getAlwaysOnPackage()Ljava/lang/String;
-PLcom/android/server/connectivity/Vpn;->getAppUid(Landroid/content/Context;Ljava/lang/String;I)I
-PLcom/android/server/connectivity/Vpn;->isCurrentPreparedPackage(Ljava/lang/String;)Z
-PLcom/android/server/connectivity/Vpn;->isNullOrLegacyVpn(Ljava/lang/String;)Z
-PLcom/android/server/connectivity/Vpn;->loadAlwaysOnPackage()V
-PLcom/android/server/connectivity/Vpn;->setAllowOnlyVpnForUids(ZLjava/util/Collection;)Z
-PLcom/android/server/connectivity/Vpn;->setAlwaysOnPackageInternal(Ljava/lang/String;ZLjava/util/List;)Z
-PLcom/android/server/connectivity/Vpn;->setVpnForcedLocked(Z)V
-PLcom/android/server/connectivity/Vpn;->startAlwaysOnVpn()Z
-PLcom/android/server/connectivity/Vpn;->updateAlwaysOnNotification(Landroid/net/NetworkInfo$DetailedState;)V
-PLcom/android/server/connectivity/VpnProfileStore;-><init>()V
-PLcom/android/server/connectivity/VpnProfileStore;->get(Ljava/lang/String;)[B
PLcom/android/server/content/ContentService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/content/ContentService;)V
+PLcom/android/server/content/ContentService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/content/ContentService;II)V
+PLcom/android/server/content/ContentService$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
PLcom/android/server/content/ContentService$1;-><init>(Lcom/android/server/content/ContentService;)V
+PLcom/android/server/content/ContentService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/content/ContentService$2;-><init>(Landroid/util/SparseIntArray;)V
+PLcom/android/server/content/ContentService$2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
PLcom/android/server/content/ContentService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/content/ContentService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/content/ContentService$Lifecycle;->onStart()V
PLcom/android/server/content/ContentService$Lifecycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/content/ContentService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/content/ContentService$ObserverCollector$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/content/ContentService$ObserverCollector$Key;Ljava/util/List;)V
-PLcom/android/server/content/ContentService$ObserverCollector$$ExternalSyntheticLambda0;->run()V
+HPLcom/android/server/content/ContentService$ObserverCollector$$ExternalSyntheticLambda0;->run()V+]Landroid/database/IContentObserver;Landroid/database/ContentObserver$Transport;,Landroid/database/IContentObserver$Stub$Proxy;]Ljava/util/List;Ljava/util/ArrayList;
PLcom/android/server/content/ContentService$ObserverCollector$Key;-><init>(Landroid/database/IContentObserver;IZII)V
HPLcom/android/server/content/ContentService$ObserverCollector$Key;->hashCode()I
-PLcom/android/server/content/ContentService$ObserverCollector;->$r8$lambda$Enmwrm6HznBNY378PKC1kmqC6_o(Lcom/android/server/content/ContentService$ObserverCollector$Key;Ljava/util/List;)V
HPLcom/android/server/content/ContentService$ObserverCollector;-><init>()V
-HPLcom/android/server/content/ContentService$ObserverCollector;->collect(Landroid/database/IContentObserver;IZLandroid/net/Uri;II)V
-HPLcom/android/server/content/ContentService$ObserverCollector;->dispatch()V
-HPLcom/android/server/content/ContentService$ObserverCollector;->lambda$dispatch$0(Lcom/android/server/content/ContentService$ObserverCollector$Key;Ljava/util/List;)V
-PLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;->-$$Nest$fgetuserHandle(Lcom/android/server/content/ContentService$ObserverNode$ObserverEntry;)I
-HPLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;-><init>(Lcom/android/server/content/ContentService$ObserverNode;Landroid/database/IContentObserver;ZLjava/lang/Object;IIILandroid/net/Uri;)V
+HPLcom/android/server/content/ContentService$ObserverCollector;->dispatch()V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;
+HPLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;-><init>(Lcom/android/server/content/ContentService$ObserverNode;Landroid/database/IContentObserver;ZLjava/lang/Object;IIILandroid/net/Uri;)V+]Lcom/android/internal/os/BinderDeathDispatcher;Lcom/android/internal/os/BinderDeathDispatcher;
PLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;->binderDied()V
HPLcom/android/server/content/ContentService$ObserverNode;-><init>(Ljava/lang/String;)V
-HPLcom/android/server/content/ContentService$ObserverNode;->addObserverLocked(Landroid/net/Uri;ILandroid/database/IContentObserver;ZLjava/lang/Object;III)V
-HPLcom/android/server/content/ContentService$ObserverNode;->addObserverLocked(Landroid/net/Uri;Landroid/database/IContentObserver;ZLjava/lang/Object;III)V
-HPLcom/android/server/content/ContentService$ObserverNode;->collectMyObserversLocked(Landroid/net/Uri;ZLandroid/database/IContentObserver;ZIILcom/android/server/content/ContentService$ObserverCollector;)V
-HPLcom/android/server/content/ContentService$ObserverNode;->collectObserversLocked(Landroid/net/Uri;IILandroid/database/IContentObserver;ZIILcom/android/server/content/ContentService$ObserverCollector;)V
-HPLcom/android/server/content/ContentService$ObserverNode;->countUriSegments(Landroid/net/Uri;)I
-HPLcom/android/server/content/ContentService$ObserverNode;->getUriSegment(Landroid/net/Uri;I)Ljava/lang/String;
-HPLcom/android/server/content/ContentService$ObserverNode;->removeObserverLocked(Landroid/database/IContentObserver;)Z
-PLcom/android/server/content/ContentService;->-$$Nest$sfgetsObserverDeathDispatcher()Lcom/android/internal/os/BinderDeathDispatcher;
+HPLcom/android/server/content/ContentService$ObserverNode;->addObserverLocked(Landroid/net/Uri;ILandroid/database/IContentObserver;ZLjava/lang/Object;III)V+]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Landroid/net/Uri$PathSegments;
+HPLcom/android/server/content/ContentService$ObserverNode;->collectMyObserversLocked(Landroid/net/Uri;ZLandroid/database/IContentObserver;ZIILcom/android/server/content/ContentService$ObserverCollector;)V+]Landroid/database/IContentObserver;Landroid/database/ContentObserver$Transport;,Landroid/database/IContentObserver$Stub$Proxy;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/content/ContentService$ObserverNode;->collectObserversLocked(Landroid/net/Uri;IILandroid/database/IContentObserver;ZIILcom/android/server/content/ContentService$ObserverCollector;)V+]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Landroid/net/Uri$PathSegments;
+PLcom/android/server/content/ContentService$ObserverNode;->dumpLocked(Ljava/io/PrintWriter;Ljava/lang/String;[ILandroid/util/SparseIntArray;)V
+HPLcom/android/server/content/ContentService$ObserverNode;->removeObserverLocked(Landroid/database/IContentObserver;)Z+]Landroid/database/IContentObserver;Landroid/database/ContentObserver$Transport;,Landroid/database/IContentObserver$Stub$Proxy;]Lcom/android/internal/os/BinderDeathDispatcher;Lcom/android/internal/os/BinderDeathDispatcher;]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/content/ContentService;-><clinit>()V
PLcom/android/server/content/ContentService;-><init>(Landroid/content/Context;Z)V
+PLcom/android/server/content/ContentService;->addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V
+PLcom/android/server/content/ContentService;->addStatusChangeListener(ILandroid/content/ISyncStatusObserver;)V
+PLcom/android/server/content/ContentService;->cancelSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)V
+PLcom/android/server/content/ContentService;->cancelSyncAsUser(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;I)V
+PLcom/android/server/content/ContentService;->clampPeriod(J)J
+PLcom/android/server/content/ContentService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/content/ContentService;->enforceCrossUserPermission(ILjava/lang/String;)V
-PLcom/android/server/content/ContentService;->getProcStateForStatsd(I)I
+PLcom/android/server/content/ContentService;->getCurrentSyncs()Ljava/util/List;
+PLcom/android/server/content/ContentService;->getCurrentSyncsAsUser(I)Ljava/util/List;
+PLcom/android/server/content/ContentService;->getIsSyncable(Landroid/accounts/Account;Ljava/lang/String;)I
+PLcom/android/server/content/ContentService;->getIsSyncableAsUser(Landroid/accounts/Account;Ljava/lang/String;I)I
+PLcom/android/server/content/ContentService;->getMasterSyncAutomatically()Z
+PLcom/android/server/content/ContentService;->getMasterSyncAutomaticallyAsUser(I)Z
+PLcom/android/server/content/ContentService;->getPeriodicSyncs(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)Ljava/util/List;
HPLcom/android/server/content/ContentService;->getProviderPackageName(Landroid/net/Uri;I)Ljava/lang/String;
-PLcom/android/server/content/ContentService;->getRestrictionLevelForStatsd(I)I
+HPLcom/android/server/content/ContentService;->getSyncAdapterPackageAsUser(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
HPLcom/android/server/content/ContentService;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String;
+PLcom/android/server/content/ContentService;->getSyncAdapterTypes()[Landroid/content/SyncAdapterType;
+PLcom/android/server/content/ContentService;->getSyncAdapterTypesAsUser(I)[Landroid/content/SyncAdapterType;
+PLcom/android/server/content/ContentService;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z
+PLcom/android/server/content/ContentService;->getSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;I)Z
HPLcom/android/server/content/ContentService;->getSyncExemptionAndCleanUpExtrasForCaller(ILandroid/os/Bundle;)I
-HPLcom/android/server/content/ContentService;->getSyncExemptionForCaller(I)I
HPLcom/android/server/content/ContentService;->getSyncManager()Lcom/android/server/content/SyncManager;
-HPLcom/android/server/content/ContentService;->handleIncomingUser(Landroid/net/Uri;IIIZI)I
+HPLcom/android/server/content/ContentService;->handleIncomingUser(Landroid/net/Uri;IIII)I
+PLcom/android/server/content/ContentService;->hasAccountAccess(Landroid/accounts/Account;I)Z
+PLcom/android/server/content/ContentService;->hasAuthorityAccess(IILjava/lang/String;)Z
HPLcom/android/server/content/ContentService;->invalidateCacheLocked(ILjava/lang/String;Landroid/net/Uri;)V
-HPLcom/android/server/content/ContentService;->notifyChange([Landroid/net/Uri;Landroid/database/IContentObserver;ZIIILjava/lang/String;)V
-PLcom/android/server/content/ContentService;->onBootPhase(I)V
-PLcom/android/server/content/ContentService;->onStartUser(I)V
-PLcom/android/server/content/ContentService;->onUnlockUser(I)V
-HPLcom/android/server/content/ContentService;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/IContentObserver;II)V
+PLcom/android/server/content/ContentService;->isSyncActive(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)Z
+HPLcom/android/server/content/ContentService;->notifyChange([Landroid/net/Uri;Landroid/database/IContentObserver;ZIIILjava/lang/String;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;]Ljava/util/List;Landroid/net/Uri$PathSegments;
+HPLcom/android/server/content/ContentService;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/IContentObserver;II)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;
+PLcom/android/server/content/ContentService;->removePeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/content/ContentService;->setIsSyncable(Landroid/accounts/Account;Ljava/lang/String;I)V
+PLcom/android/server/content/ContentService;->setIsSyncableAsUser(Landroid/accounts/Account;Ljava/lang/String;II)V
+PLcom/android/server/content/ContentService;->setSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;ZI)V
+PLcom/android/server/content/ContentService;->syncAsUser(Landroid/content/SyncRequest;ILjava/lang/String;)V
HPLcom/android/server/content/ContentService;->unregisterContentObserver(Landroid/database/IContentObserver;)V
+PLcom/android/server/content/ContentService;->validateExtras(ILandroid/os/Bundle;)V
+PLcom/android/server/content/SyncAdapterStateFetcher;-><init>()V
+PLcom/android/server/content/SyncJobService;-><clinit>()V
+PLcom/android/server/content/SyncJobService;-><init>()V
+PLcom/android/server/content/SyncJobService;->callJobFinished(ILjava/lang/String;)V
+PLcom/android/server/content/SyncJobService;->jobParametersToString(Landroid/app/job/JobParameters;)Ljava/lang/String;
+PLcom/android/server/content/SyncJobService;->onStartJob(Landroid/app/job/JobParameters;)Z
+PLcom/android/server/content/SyncJobService;->onStopJob(Landroid/app/job/JobParameters;)Z
PLcom/android/server/content/SyncLogger$RotatingFileLogger$MyHandler;-><init>(Lcom/android/server/content/SyncLogger$RotatingFileLogger;Landroid/os/Looper;)V
-PLcom/android/server/content/SyncLogger$RotatingFileLogger$MyHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/content/SyncLogger$RotatingFileLogger$MyHandler;->log(J[Ljava/lang/Object;)V
+HPLcom/android/server/content/SyncLogger$RotatingFileLogger$MyHandler;->handleMessage(Landroid/os/Message;)V+]Ljava/io/Writer;Ljava/io/FileWriter;]Ljava/util/Date;Ljava/util/Date;
PLcom/android/server/content/SyncLogger$RotatingFileLogger;-><clinit>()V
PLcom/android/server/content/SyncLogger$RotatingFileLogger;-><init>()V
-PLcom/android/server/content/SyncLogger$RotatingFileLogger;->closeCurrentLogLocked()V
-PLcom/android/server/content/SyncLogger$RotatingFileLogger;->enabled()Z
+PLcom/android/server/content/SyncLogger$RotatingFileLogger;->dumpAll(Ljava/io/PrintWriter;)V
+PLcom/android/server/content/SyncLogger$RotatingFileLogger;->dumpFile(Ljava/io/PrintWriter;Ljava/io/File;)V
+PLcom/android/server/content/SyncLogger$RotatingFileLogger;->jobParametersToString(Landroid/app/job/JobParameters;)Ljava/lang/String;
PLcom/android/server/content/SyncLogger$RotatingFileLogger;->log([Ljava/lang/Object;)V
-HPLcom/android/server/content/SyncLogger$RotatingFileLogger;->logInner(J[Ljava/lang/Object;)V
HPLcom/android/server/content/SyncLogger$RotatingFileLogger;->openLogLocked(J)V
-PLcom/android/server/content/SyncLogger;-><init>()V
+PLcom/android/server/content/SyncLogger$RotatingFileLogger;->purgeOldLogs()V
PLcom/android/server/content/SyncLogger;->getInstance()Lcom/android/server/content/SyncLogger;
-PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/content/SyncManager;)V
-PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda2;-><init>()V
-PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/content/SyncManager;I)V
+PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/content/SyncManager;)V
+PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda10;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda11;-><init>(Landroid/content/Context;Lcom/android/server/content/SyncManager$OnUnsyncableAccountCheck;)V
+PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda11;->run()V
+PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/content/SyncManager;)V
+PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda2;->onAppPermissionChanged(Landroid/accounts/Account;I)V
+PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/content/SyncManager;II)V
PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda3;->run()V
-PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/content/SyncManager;I)V
-PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda7;->run()V
+PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/content/SyncManager;Landroid/accounts/AccountAndUser;ILjava/lang/String;Landroid/os/Bundle;IJIIILjava/lang/String;)V
+PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda8;-><init>(Ljava/lang/StringBuilder;Lcom/android/server/content/SyncManager$PrintTable;)V
+PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda9;->apply(Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/content/SyncManager$10;-><init>(Lcom/android/server/content/SyncManager;)V
-PLcom/android/server/content/SyncManager$1;-><init>(Lcom/android/server/content/SyncManager;)V
-PLcom/android/server/content/SyncManager$2;-><init>(Lcom/android/server/content/SyncManager;)V
-PLcom/android/server/content/SyncManager$3;-><init>(Lcom/android/server/content/SyncManager;)V
-PLcom/android/server/content/SyncManager$4;-><init>(Lcom/android/server/content/SyncManager;)V
-PLcom/android/server/content/SyncManager$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/content/SyncManager$5;-><init>(Lcom/android/server/content/SyncManager;)V
-PLcom/android/server/content/SyncManager$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/content/SyncManager$11;-><init>(Lcom/android/server/content/SyncManager;Landroid/content/ContentResolver;)V
+PLcom/android/server/content/SyncManager$11;->onChange(Z)V
+PLcom/android/server/content/SyncManager$12;-><init>(I)V
+PLcom/android/server/content/SyncManager$12;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/content/SyncManager$2;-><init>(Lcom/android/server/content/SyncManager;I)V
+PLcom/android/server/content/SyncManager$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/content/SyncManager$6;-><init>(Lcom/android/server/content/SyncManager;)V
PLcom/android/server/content/SyncManager$6;->run()V
PLcom/android/server/content/SyncManager$7;-><init>(Lcom/android/server/content/SyncManager;)V
-PLcom/android/server/content/SyncManager$8;-><init>(Lcom/android/server/content/SyncManager;)V
-PLcom/android/server/content/SyncManager$9;-><init>(Lcom/android/server/content/SyncManager;)V
-PLcom/android/server/content/SyncManager$PackageMonitorImpl;-><init>()V
-PLcom/android/server/content/SyncManager$PackageMonitorImpl;-><init>(Lcom/android/server/content/SyncManager$PackageMonitorImpl-IA;)V
-PLcom/android/server/content/SyncManager$PackageMonitorImpl;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZLandroid/os/Bundle;)Z
-PLcom/android/server/content/SyncManager$PackageMonitorImpl;->onPackageUnstopped(Ljava/lang/String;ILandroid/os/Bundle;)V
+PLcom/android/server/content/SyncManager$ActiveSyncContext;-><init>(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncOperation;JI)V
+PLcom/android/server/content/SyncManager$ActiveSyncContext;->onFinished(Landroid/content/SyncResult;)V
+PLcom/android/server/content/SyncManager$ActiveSyncContext;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/content/SyncManager$ActiveSyncContext;->toString()Ljava/lang/String;
+PLcom/android/server/content/SyncManager$ActiveSyncContext;->toString(Ljava/lang/StringBuilder;Z)V
+PLcom/android/server/content/SyncManager$OnUnsyncableAccountCheck$1;-><init>(Lcom/android/server/content/SyncManager$OnUnsyncableAccountCheck;)V
+PLcom/android/server/content/SyncManager$OnUnsyncableAccountCheck$1;->onUnsyncableAccountDone(Z)V
+PLcom/android/server/content/SyncManager$OnUnsyncableAccountCheck;-><init>(Landroid/content/pm/RegisteredServicesCache$ServiceInfo;Lcom/android/server/content/SyncManager$$ExternalSyntheticLambda5;)V
+PLcom/android/server/content/SyncManager$OnUnsyncableAccountCheck;->onReady()V
+PLcom/android/server/content/SyncManager$OnUnsyncableAccountCheck;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/content/SyncManager$PrintTable;-><init>()V
+PLcom/android/server/content/SyncManager$PrintTable;->printRow(Ljava/io/PrintWriter;[Ljava/lang/String;[Ljava/lang/Object;)V
+PLcom/android/server/content/SyncManager$PrintTable;->set(II[Ljava/lang/Object;)V
+PLcom/android/server/content/SyncManager$ScheduleSyncMessagePayload;-><init>(Lcom/android/server/content/SyncOperation;J)V
+PLcom/android/server/content/SyncManager$ServiceConnectionData;-><init>(Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/os/IBinder;)V
+PLcom/android/server/content/SyncManager$SyncFinishedOrCancelledMessagePayload;-><init>(Landroid/content/SyncResult;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V
PLcom/android/server/content/SyncManager$SyncHandler;-><init>(Lcom/android/server/content/SyncManager;Landroid/os/Looper;)V
+PLcom/android/server/content/SyncManager$SyncHandler;->cancelActiveSyncH(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;)V
+PLcom/android/server/content/SyncManager$SyncHandler;->closeActiveSyncContext(Lcom/android/server/content/SyncManager$ActiveSyncContext;)V
+PLcom/android/server/content/SyncManager$SyncHandler;->computeSyncOpState(Lcom/android/server/content/SyncOperation;)I
+PLcom/android/server/content/SyncManager$SyncHandler;->deferSyncH(Lcom/android/server/content/SyncOperation;JLjava/lang/String;)V
+PLcom/android/server/content/SyncManager$SyncHandler;->findActiveSyncContextH(I)Lcom/android/server/content/SyncManager$ActiveSyncContext;
PLcom/android/server/content/SyncManager$SyncHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/content/SyncManager$SyncHandler;->handleSyncMessage(Landroid/os/Message;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->handleSyncMessage(Landroid/os/Message;)V
+PLcom/android/server/content/SyncManager$SyncHandler;->removePeriodicSyncH(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;Ljava/lang/String;)V
+PLcom/android/server/content/SyncManager$SyncHandler;->runBoundToAdapterH(Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/os/IBinder;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->runSyncFinishedOrCanceledH(Landroid/content/SyncResult;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->startSyncH(Lcom/android/server/content/SyncOperation;)V
+PLcom/android/server/content/SyncManager$SyncHandler;->updateOrAddPeriodicSyncH(Lcom/android/server/content/SyncStorageEngine$EndPoint;JJLandroid/os/Bundle;)V
PLcom/android/server/content/SyncManager$SyncHandler;->updateRunningAccountsH(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
PLcom/android/server/content/SyncManager$SyncTimeTracker;-><init>(Lcom/android/server/content/SyncManager;)V
-PLcom/android/server/content/SyncManager$SyncTimeTracker;-><init>(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$SyncTimeTracker-IA;)V
PLcom/android/server/content/SyncManager$SyncTimeTracker;->update()V
-PLcom/android/server/content/SyncManager;->$r8$lambda$W-Rf2gPTxsU_UZt2y9rLu7Qfz_o(Lcom/android/server/content/SyncManager;I)V
-PLcom/android/server/content/SyncManager;->$r8$lambda$stKFIA2giNVVLgh3fNVz1esLG_U(Lcom/android/server/content/SyncManager;I)V
-PLcom/android/server/content/SyncManager;->-$$Nest$fgetmAccountsLock(Lcom/android/server/content/SyncManager;)Ljava/lang/Object;
-PLcom/android/server/content/SyncManager;->-$$Nest$fgetmLogger(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncLogger;
-PLcom/android/server/content/SyncManager;->-$$Nest$fgetmRunningAccounts(Lcom/android/server/content/SyncManager;)[Landroid/accounts/AccountAndUser;
-PLcom/android/server/content/SyncManager;->-$$Nest$fgetmSyncManagerWakeLock(Lcom/android/server/content/SyncManager;)Landroid/os/PowerManager$WakeLock;
-PLcom/android/server/content/SyncManager;->-$$Nest$fgetmSyncStorageEngine(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncStorageEngine;
-PLcom/android/server/content/SyncManager;->-$$Nest$fputmDataConnectionIsConnected(Lcom/android/server/content/SyncManager;Z)V
-PLcom/android/server/content/SyncManager;->-$$Nest$fputmRunningAccounts(Lcom/android/server/content/SyncManager;[Landroid/accounts/AccountAndUser;)V
-PLcom/android/server/content/SyncManager;->-$$Nest$mgetAllPendingSyncs(Lcom/android/server/content/SyncManager;)Ljava/util/List;
-PLcom/android/server/content/SyncManager;->-$$Nest$monUserUnlocked(Lcom/android/server/content/SyncManager;I)V
-PLcom/android/server/content/SyncManager;->-$$Nest$mreadDataConnectionState(Lcom/android/server/content/SyncManager;)Z
+PLcom/android/server/content/SyncManager$UpdatePeriodicSyncMessagePayload;-><init>(Lcom/android/server/content/SyncStorageEngine$EndPoint;JJLandroid/os/Bundle;)V
+PLcom/android/server/content/SyncManager;->-$$Nest$mcontainsAccountAndUser(Lcom/android/server/content/SyncManager;[Landroid/accounts/AccountAndUser;Landroid/accounts/Account;I)Z
+PLcom/android/server/content/SyncManager;->-$$Nest$mincreaseBackoffSetting(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
+PLcom/android/server/content/SyncManager;->-$$Nest$misSyncStillActiveH(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;)Z
+PLcom/android/server/content/SyncManager;->-$$Nest$mpostMonitorSyncProgressMessage(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V
PLcom/android/server/content/SyncManager;->-$$Nest$mremoveStaleAccounts(Lcom/android/server/content/SyncManager;)V
+PLcom/android/server/content/SyncManager;->-$$Nest$msendSyncFinishedOrCanceledMessage(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/content/SyncResult;)V
PLcom/android/server/content/SyncManager;-><clinit>()V
-HPLcom/android/server/content/SyncManager;-><init>(Landroid/content/Context;Z)V
-PLcom/android/server/content/SyncManager;->allowListExistingSyncAdaptersIfNeeded()V
-PLcom/android/server/content/SyncManager;->cleanupJobs()V
+PLcom/android/server/content/SyncManager;-><init>(Landroid/content/Context;Z)V
+PLcom/android/server/content/SyncManager;->canAccessAccount(Landroid/accounts/Account;Ljava/lang/String;I)Z
+PLcom/android/server/content/SyncManager;->cancelActiveSync(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;Ljava/lang/String;)V
+PLcom/android/server/content/SyncManager;->cancelJob(Lcom/android/server/content/SyncOperation;Ljava/lang/String;)V
+HPLcom/android/server/content/SyncManager;->computeSyncable(Landroid/accounts/Account;ILjava/lang/String;ZZ)I
+PLcom/android/server/content/SyncManager;->dump(Ljava/io/PrintWriter;Z)V
+PLcom/android/server/content/SyncManager;->dumpDayStatistic(Ljava/io/PrintWriter;Lcom/android/server/content/SyncStorageEngine$DayStats;)V
+PLcom/android/server/content/SyncManager;->dumpSyncHistory(Ljava/io/PrintWriter;)V
+PLcom/android/server/content/SyncManager;->dumpTimeSec(Ljava/io/PrintWriter;J)V
+PLcom/android/server/content/SyncManager;->formatDurationHMS(Ljava/lang/StringBuilder;J)V
+PLcom/android/server/content/SyncManager;->formatTime(J)Ljava/lang/String;
PLcom/android/server/content/SyncManager;->getAccountManagerInternal()Landroid/accounts/AccountManagerInternal;
+PLcom/android/server/content/SyncManager;->getAdapterBindIntent(Landroid/content/Context;Landroid/content/ComponentName;I)Landroid/content/Intent;
PLcom/android/server/content/SyncManager;->getAllPendingSyncs()Ljava/util/List;
PLcom/android/server/content/SyncManager;->getConnectivityManager()Landroid/net/ConnectivityManager;
+PLcom/android/server/content/SyncManager;->getInstance()Lcom/android/server/content/SyncManager;
PLcom/android/server/content/SyncManager;->getJobStats()Ljava/lang/String;
-HPLcom/android/server/content/SyncManager;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;II)[Ljava/lang/String;
+PLcom/android/server/content/SyncManager;->getPeriodicSyncs(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Ljava/util/List;
+PLcom/android/server/content/SyncManager;->getSyncAdapterTypes(II)[Landroid/content/SyncAdapterType;
PLcom/android/server/content/SyncManager;->isDeviceProvisioned()Z
-PLcom/android/server/content/SyncManager;->lambda$onStartUser$1(I)V
-PLcom/android/server/content/SyncManager;->lambda$onUnlockUser$2(I)V
-PLcom/android/server/content/SyncManager;->likelyHasPeriodicSyncs()Z
+PLcom/android/server/content/SyncManager;->isPackageStopped(ILjava/lang/String;)Z
PLcom/android/server/content/SyncManager;->migrateSyncJobNamespaceIfNeeded()V
-PLcom/android/server/content/SyncManager;->onBootPhase(I)V
-PLcom/android/server/content/SyncManager;->onStartUser(I)V
-PLcom/android/server/content/SyncManager;->onUnlockUser(I)V
-PLcom/android/server/content/SyncManager;->onUserUnlocked(I)V
-PLcom/android/server/content/SyncManager;->readDataConnectionState()Z
-PLcom/android/server/content/SyncManager;->removeStaleAccounts()V
-HPLcom/android/server/content/SyncManager;->scheduleLocalSync(Landroid/accounts/Account;IILjava/lang/String;IIILjava/lang/String;)V
+PLcom/android/server/content/SyncManager;->postScheduleSyncMessage(Lcom/android/server/content/SyncOperation;J)V
+PLcom/android/server/content/SyncManager;->printTwoDigitNumber(Ljava/lang/StringBuilder;JCZ)Z
+PLcom/android/server/content/SyncManager;->readyToSync(I)Z
+PLcom/android/server/content/SyncManager;->rescheduleSyncs(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)V
PLcom/android/server/content/SyncManager;->scheduleSync(Landroid/accounts/Account;IILjava/lang/String;Landroid/os/Bundle;IIIILjava/lang/String;)V
-HPLcom/android/server/content/SyncManager;->scheduleSync(Landroid/accounts/Account;IILjava/lang/String;Landroid/os/Bundle;IJZIIILjava/lang/String;)V
+HPLcom/android/server/content/SyncManager;->scheduleSync(Landroid/accounts/Account;IILjava/lang/String;Landroid/os/Bundle;IJZIIILjava/lang/String;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/SyncAdapterType;Landroid/content/SyncAdapterType;]Landroid/content/SyncAdaptersCache;Landroid/content/SyncAdaptersCache;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger$RotatingFileLogger;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;,Ljava/util/HashMap$KeyIterator;
+PLcom/android/server/content/SyncManager;->scheduleSyncOperationH(Lcom/android/server/content/SyncOperation;)V
+HPLcom/android/server/content/SyncManager;->scheduleSyncOperationH(Lcom/android/server/content/SyncOperation;J)V
+PLcom/android/server/content/SyncManager;->setAuthorityPendingState(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
+PLcom/android/server/content/SyncManager;->shouldDisableSyncForUser(Landroid/content/pm/UserInfo;Ljava/lang/String;)Z
+PLcom/android/server/content/SyncManager;->syncExtrasEquals(Landroid/os/Bundle;Landroid/os/Bundle;Z)Z
+PLcom/android/server/content/SyncManager;->updateOrAddPeriodicSync(Lcom/android/server/content/SyncStorageEngine$EndPoint;JJLandroid/os/Bundle;)V
PLcom/android/server/content/SyncManager;->updateRunningAccounts(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
PLcom/android/server/content/SyncManager;->verifyJobScheduler()V
PLcom/android/server/content/SyncManagerConstants$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/content/SyncManagerConstants;)V
PLcom/android/server/content/SyncManagerConstants$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/content/SyncManagerConstants;->$r8$lambda$C0hj3KUN5qSzbVr_vPnWooTwtTU(Lcom/android/server/content/SyncManagerConstants;)V
PLcom/android/server/content/SyncManagerConstants;-><init>(Landroid/content/Context;)V
-PLcom/android/server/content/SyncManagerConstants;->lambda$start$0()V
PLcom/android/server/content/SyncManagerConstants;->refresh()V
-PLcom/android/server/content/SyncManagerConstants;->start()V
+PLcom/android/server/content/SyncOperation;-><clinit>()V
+PLcom/android/server/content/SyncOperation;-><init>(Landroid/accounts/Account;IILjava/lang/String;IILjava/lang/String;Landroid/os/Bundle;ZI)V
+HPLcom/android/server/content/SyncOperation;-><init>(Lcom/android/server/content/SyncStorageEngine$EndPoint;ILjava/lang/String;IILandroid/os/Bundle;ZZIJJI)V
+HPLcom/android/server/content/SyncOperation;->dump(Landroid/content/pm/PackageManager;ZLcom/android/server/content/SyncAdapterStateFetcher;Z)Ljava/lang/String;
+HPLcom/android/server/content/SyncOperation;->extrasToStringBuilder(Landroid/os/Bundle;Ljava/lang/StringBuilder;)V+]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
+PLcom/android/server/content/SyncOperation;->getJobBias()I
+HPLcom/android/server/content/SyncOperation;->maybeCreateFromJobExtras(Landroid/os/PersistableBundle;)Lcom/android/server/content/SyncOperation;+]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;
+PLcom/android/server/content/SyncOperation;->reasonToString(Landroid/content/pm/PackageManager;I)Ljava/lang/String;
+HPLcom/android/server/content/SyncOperation;->toJobInfoExtras()Landroid/os/PersistableBundle;
+PLcom/android/server/content/SyncOperation;->toString()Ljava/lang/String;
+PLcom/android/server/content/SyncOperation;->wakeLockName()Ljava/lang/String;
+PLcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;-><init>(Landroid/content/Context;)V
+PLcom/android/server/content/SyncStorageEngine$AccountInfo;-><init>(Landroid/accounts/AccountAndUser;)V
+PLcom/android/server/content/SyncStorageEngine$AuthorityInfo;-><init>(ILcom/android/server/content/SyncStorageEngine$EndPoint;)V
+PLcom/android/server/content/SyncStorageEngine$AuthorityInfo;-><init>(Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;)V
+PLcom/android/server/content/SyncStorageEngine$DayStats;-><init>(I)V
PLcom/android/server/content/SyncStorageEngine$EndPoint;-><clinit>()V
PLcom/android/server/content/SyncStorageEngine$EndPoint;-><init>(Landroid/accounts/Account;Ljava/lang/String;I)V
+PLcom/android/server/content/SyncStorageEngine$EndPoint;->matchesSpec(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z
+PLcom/android/server/content/SyncStorageEngine$EndPoint;->toSafeString()Ljava/lang/String;
+PLcom/android/server/content/SyncStorageEngine$EndPoint;->toString()Ljava/lang/String;
PLcom/android/server/content/SyncStorageEngine$MyHandler;-><init>(Lcom/android/server/content/SyncStorageEngine;Landroid/os/Looper;)V
+PLcom/android/server/content/SyncStorageEngine$MyHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/content/SyncStorageEngine;-><clinit>()V
-HPLcom/android/server/content/SyncStorageEngine;-><init>(Landroid/content/Context;Ljava/io/File;Landroid/os/Looper;)V
-PLcom/android/server/content/SyncStorageEngine;->getAuthorityCount()I
-PLcom/android/server/content/SyncStorageEngine;->getSingleton()Lcom/android/server/content/SyncStorageEngine;
-PLcom/android/server/content/SyncStorageEngine;->init(Landroid/content/Context;Landroid/os/Looper;)V
-PLcom/android/server/content/SyncStorageEngine;->isJobAttributionFixed()Z
-PLcom/android/server/content/SyncStorageEngine;->isJobNamespaceMigrated()Z
-PLcom/android/server/content/SyncStorageEngine;->maybeDeleteLegacyPendingInfoLocked(Ljava/io/File;)V
-PLcom/android/server/content/SyncStorageEngine;->readAccountInfoLocked()V
-PLcom/android/server/content/SyncStorageEngine;->readStatisticsLocked()V
+PLcom/android/server/content/SyncStorageEngine;-><init>(Landroid/content/Context;Ljava/io/File;Landroid/os/Looper;)V
+PLcom/android/server/content/SyncStorageEngine;->calculateDefaultFlexTime(J)J
+PLcom/android/server/content/SyncStorageEngine;->getAuthority(I)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;
+HPLcom/android/server/content/SyncStorageEngine;->getAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;
+PLcom/android/server/content/SyncStorageEngine;->getBackoff(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Landroid/util/Pair;
+PLcom/android/server/content/SyncStorageEngine;->getCurrentDayLocked()I
+PLcom/android/server/content/SyncStorageEngine;->getCurrentSyncsCopy(IZ)Ljava/util/List;
+PLcom/android/server/content/SyncStorageEngine;->getDelayUntilTime(Lcom/android/server/content/SyncStorageEngine$EndPoint;)J
+PLcom/android/server/content/SyncStorageEngine;->getMasterSyncAutomatically(I)Z
+PLcom/android/server/content/SyncStorageEngine;->getOrCreateAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;IZ)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;
+PLcom/android/server/content/SyncStorageEngine;->getOrCreateSyncStatusLocked(I)Landroid/content/SyncStatusInfo;
+PLcom/android/server/content/SyncStorageEngine;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;I)Z
+PLcom/android/server/content/SyncStorageEngine;->isSyncActive(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z
+PLcom/android/server/content/SyncStorageEngine;->markPending(Lcom/android/server/content/SyncStorageEngine$EndPoint;Z)V
+PLcom/android/server/content/SyncStorageEngine;->parseAuthority(Lcom/android/modules/utils/TypedXmlPullParser;ILcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;
+PLcom/android/server/content/SyncStorageEngine;->readDayStatsLocked(Ljava/io/InputStream;)V
PLcom/android/server/content/SyncStorageEngine;->readStatusInfoLocked(Ljava/io/InputStream;)V
PLcom/android/server/content/SyncStorageEngine;->readStatusLocked()V
+PLcom/android/server/content/SyncStorageEngine;->readSyncStatusStatsLocked(Landroid/util/proto/ProtoInputStream;Landroid/content/SyncStatusInfo$Stats;)V
PLcom/android/server/content/SyncStorageEngine;->removeStaleAccounts([Landroid/accounts/Account;I)V
-PLcom/android/server/content/SyncStorageEngine;->setClockValid()V
-PLcom/android/server/content/SyncStorageEngine;->setOnAuthorityRemovedListener(Lcom/android/server/content/SyncStorageEngine$OnAuthorityRemovedListener;)V
-PLcom/android/server/content/SyncStorageEngine;->setOnSyncRequestListener(Lcom/android/server/content/SyncStorageEngine$OnSyncRequestListener;)V
-PLcom/android/server/content/SyncStorageEngine;->setPeriodicSyncAddedListener(Lcom/android/server/content/SyncStorageEngine$PeriodicSyncAddedListener;)V
-PLcom/android/server/content/SyncStorageEngine;->shouldGrantSyncAdaptersAccountAccess()Z
-PLcom/android/server/content/SyncStorageEngine;->upgradeStatisticsIfNeededLocked()V
-PLcom/android/server/content/SyncStorageEngine;->upgradeStatusIfNeededLocked()V
+HPLcom/android/server/content/SyncStorageEngine;->reportChange(IILjava/lang/String;)V
+PLcom/android/server/content/SyncStorageEngine;->reportChange(ILcom/android/server/content/SyncStorageEngine$EndPoint;)V
+PLcom/android/server/content/SyncStorageEngine;->resetTodayStats(Z)V
+PLcom/android/server/content/SyncStorageEngine;->setBackoff(Lcom/android/server/content/SyncStorageEngine$EndPoint;JJ)V
+PLcom/android/server/content/SyncStorageEngine;->setIsSyncable(Landroid/accounts/Account;ILjava/lang/String;III)V
+PLcom/android/server/content/SyncStorageEngine;->setSyncAutomatically(Landroid/accounts/Account;ILjava/lang/String;ZIII)V
+PLcom/android/server/content/SyncStorageEngine;->writeAccountInfoLocked()V
+PLcom/android/server/content/SyncStorageEngine;->writeDayStatsLocked(Ljava/io/OutputStream;)V
+PLcom/android/server/content/SyncStorageEngine;->writeStatisticsLocked()V
+HPLcom/android/server/content/SyncStorageEngine;->writeStatusInfoLocked(Ljava/io/OutputStream;)V
+PLcom/android/server/content/SyncStorageEngine;->writeStatusLocked()V
+PLcom/android/server/content/SyncStorageEngine;->writeStatusStatsLocked(Landroid/util/proto/ProtoOutputStream;Landroid/content/SyncStatusInfo$Stats;)V
PLcom/android/server/coverage/CoverageService;-><clinit>()V
-HPLcom/android/server/cpu/CpuAvailabilityInfo;-><init>(IJIIJ)V
-PLcom/android/server/cpu/CpuInfoReader$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/cpu/CpuInfoReader$$ExternalSyntheticLambda1;->accept(Ljava/io/File;)Z
-PLcom/android/server/cpu/CpuInfoReader$$ExternalSyntheticLambda2;-><init>()V
-PLcom/android/server/cpu/CpuInfoReader$$ExternalSyntheticLambda2;->accept(Ljava/io/File;)Z
-HPLcom/android/server/cpu/CpuInfoReader$CpuInfo;-><init>(IIZJJJJLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;)V
-PLcom/android/server/cpu/CpuInfoReader$CpuInfo;-><init>(IIZJJJLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;)V
-HPLcom/android/server/cpu/CpuInfoReader$CpuInfo;->computeNormalizedAvailableCpuFreqKHz()J
-PLcom/android/server/cpu/CpuInfoReader$CpuInfo;->getNormalizedAvailableCpuFreqKHz()J
-HPLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;-><init>(JJJJJJJJJJ)V
-HPLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;->delta(Lcom/android/server/cpu/CpuInfoReader$CpuUsageStats;)Lcom/android/server/cpu/CpuInfoReader$CpuUsageStats;
+HPLcom/android/server/cpu/CpuAvailabilityInfo;-><init>(IIIJJ)V
+PLcom/android/server/cpu/CpuAvailabilityInfo;->toString()Ljava/lang/String;
+PLcom/android/server/cpu/CpuInfoReader$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/cpu/CpuInfoReader$$ExternalSyntheticLambda0;->accept(Ljava/io/File;)Z
+PLcom/android/server/cpu/CpuInfoReader$CpuInfo;-><init>(IIZJJJJLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;)V
+HPLcom/android/server/cpu/CpuInfoReader$CpuInfo;-><init>(IIZJJJLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;)V
+PLcom/android/server/cpu/CpuInfoReader$CpuInfo;->toString()Ljava/lang/String;
+PLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;-><init>(JJJJJJJJJJ)V
PLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;->diff(JJ)J
-HPLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;->getTotalTimeMillis()J
+PLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;->toString()Ljava/lang/String;
PLcom/android/server/cpu/CpuInfoReader$DynamicPolicyInfo;-><init>(JJJLandroid/util/IntArray;)V
PLcom/android/server/cpu/CpuInfoReader$StaticPolicyInfo;-><init>(Landroid/util/IntArray;)V
-PLcom/android/server/cpu/CpuInfoReader;->$r8$lambda$jQBUynzxWR2ZUcdjqmjLMG5hjjk(Ljava/io/File;)Z
+PLcom/android/server/cpu/CpuInfoReader$StaticPolicyInfo;->toString()Ljava/lang/String;
PLcom/android/server/cpu/CpuInfoReader;-><clinit>()V
-PLcom/android/server/cpu/CpuInfoReader;-><init>()V
PLcom/android/server/cpu/CpuInfoReader;-><init>(Ljava/io/File;Ljava/io/File;Ljava/io/File;J)V
PLcom/android/server/cpu/CpuInfoReader;->calculateAvgCpuFreq(Landroid/util/LongSparseLongArray;)J
-PLcom/android/server/cpu/CpuInfoReader;->calculateDeltaTimeInState(Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;)Landroid/util/LongSparseLongArray;
PLcom/android/server/cpu/CpuInfoReader;->clockTickStrToMillis(Ljava/lang/String;)J
-PLcom/android/server/cpu/CpuInfoReader;->init()Z
-PLcom/android/server/cpu/CpuInfoReader;->lambda$init$0(Ljava/io/File;)Z
PLcom/android/server/cpu/CpuInfoReader;->populateCpuFreqPolicyDirsById([Ljava/io/File;)V
-HPLcom/android/server/cpu/CpuInfoReader;->readAvgTimeInStateCpuFrequency(ILjava/io/File;)J
-HPLcom/android/server/cpu/CpuInfoReader;->readCpuCores(Ljava/io/File;)Landroid/util/IntArray;
-HPLcom/android/server/cpu/CpuInfoReader;->readCpuFreqKHz(Ljava/io/File;)J
-HPLcom/android/server/cpu/CpuInfoReader;->readCpuInfos()Landroid/util/SparseArray;
-PLcom/android/server/cpu/CpuInfoReader;->readCpusetCategories()V
-HPLcom/android/server/cpu/CpuInfoReader;->readCumulativeCpuUsageStats()Landroid/util/SparseArray;
-HPLcom/android/server/cpu/CpuInfoReader;->readDynamicPolicyInfo()Landroid/util/SparseArray;
-HPLcom/android/server/cpu/CpuInfoReader;->readLatestCpuUsageStats()Landroid/util/SparseArray;
-PLcom/android/server/cpu/CpuInfoReader;->readStaticPolicyInfo()V
-HPLcom/android/server/cpu/CpuInfoReader;->readTimeInState(Ljava/io/File;)Landroid/util/LongSparseLongArray;
-PLcom/android/server/cpu/CpuMonitorInternal;-><init>()V
-PLcom/android/server/cpu/CpuMonitorService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/cpu/CpuMonitorService;)V
-PLcom/android/server/cpu/CpuMonitorService$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/cpu/CpuMonitorService$1;-><init>(Lcom/android/server/cpu/CpuMonitorService;)V
+PLcom/android/server/cpu/CpuInfoReader;->readCpuCores(Ljava/io/File;)Landroid/util/IntArray;
+PLcom/android/server/cpu/CpuInfoReader;->readCpuFreqKHz(Ljava/io/File;)J
+HPLcom/android/server/cpu/CpuInfoReader;->readCpuInfos()Landroid/util/SparseArray;+]Landroid/util/IntArray;Landroid/util/IntArray;]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Ljava/io/File;Ljava/io/File;]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/cpu/CpuInfoReader;->readCpusetCategories()Z
+PLcom/android/server/cpu/CpuInfoReader;->toCpusetCategoriesStr(I)Ljava/lang/String;
+PLcom/android/server/cpu/CpuMonitorService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/cpu/CpuMonitorService;I)V
+PLcom/android/server/cpu/CpuMonitorService$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/cpu/CpuMonitorService$CpuMonitorBinder$1;-><init>(Lcom/android/server/cpu/CpuMonitorService$CpuMonitorBinder;)V
+PLcom/android/server/cpu/CpuMonitorService$CpuMonitorBinder$1;->dumpCritical(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
PLcom/android/server/cpu/CpuMonitorService$CpuMonitorBinder;-><init>(Lcom/android/server/cpu/CpuMonitorService;)V
-PLcom/android/server/cpu/CpuMonitorService$CpuMonitorBinder;-><init>(Lcom/android/server/cpu/CpuMonitorService;Lcom/android/server/cpu/CpuMonitorService$CpuMonitorBinder-IA;)V
+PLcom/android/server/cpu/CpuMonitorService$CpuMonitorBinder;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/cpu/CpuMonitorService$CpusetInfo$Snapshot;-><init>(J)V
-HPLcom/android/server/cpu/CpuMonitorService$CpusetInfo$Snapshot;->appendCpuInfo(Lcom/android/server/cpu/CpuInfoReader$CpuInfo;)V
PLcom/android/server/cpu/CpuMonitorService$CpusetInfo$Snapshot;->getAverageAvailableCpuFreqPercent()I
+PLcom/android/server/cpu/CpuMonitorService$CpusetInfo$Snapshot;->toString()Ljava/lang/String;
PLcom/android/server/cpu/CpuMonitorService$CpusetInfo;-><init>(I)V
HPLcom/android/server/cpu/CpuMonitorService$CpusetInfo;->appendCpuInfo(JLcom/android/server/cpu/CpuInfoReader$CpuInfo;)V
-HPLcom/android/server/cpu/CpuMonitorService$CpusetInfo;->getCumulativeAvgAvailabilityPercent(J)I
-PLcom/android/server/cpu/CpuMonitorService$CpusetInfo;->getLatestCpuAvailabilityInfo()Lcom/android/server/cpu/CpuAvailabilityInfo;
-PLcom/android/server/cpu/CpuMonitorService$CpusetInfo;->getPrevCpuAvailabilityPercent()I
HPLcom/android/server/cpu/CpuMonitorService$CpusetInfo;->populateLatestCpuAvailabilityInfo(JJ)V
-PLcom/android/server/cpu/CpuMonitorService;->$r8$lambda$5b7hWobM0wDK4hsjD37skajm2e8(Lcom/android/server/cpu/CpuMonitorService;)V
-PLcom/android/server/cpu/CpuMonitorService;->-$$Nest$sfgetCACHE_DURATION_MILLISECONDS()J
-PLcom/android/server/cpu/CpuMonitorService;->-$$Nest$smcontainsCpuset(II)Z
+PLcom/android/server/cpu/CpuMonitorService$CpusetInfo;->toString()Ljava/lang/String;
+PLcom/android/server/cpu/CpuMonitorService;->-$$Nest$mdoDump(Lcom/android/server/cpu/CpuMonitorService;Landroid/util/IndentingPrintWriter;)V
PLcom/android/server/cpu/CpuMonitorService;-><clinit>()V
PLcom/android/server/cpu/CpuMonitorService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/cpu/CpuMonitorService;-><init>(Landroid/content/Context;Lcom/android/server/cpu/CpuInfoReader;Landroid/os/HandlerThread;ZJJJ)V
+PLcom/android/server/cpu/CpuMonitorService;-><init>(Landroid/content/Context;Lcom/android/server/cpu/CpuInfoReader;Landroid/os/HandlerThread;ZJJJJ)V
PLcom/android/server/cpu/CpuMonitorService;->checkClientThresholdsAndNotifyLocked(Lcom/android/server/cpu/CpuMonitorService$CpusetInfo;)V
-PLcom/android/server/cpu/CpuMonitorService;->containsCpuset(II)Z
-PLcom/android/server/cpu/CpuMonitorService;->hasClientCallbacksLocked()Z
-HPLcom/android/server/cpu/CpuMonitorService;->monitorCpuStats()V
+PLcom/android/server/cpu/CpuMonitorService;->onBootPhase(I)V
PLcom/android/server/cpu/CpuMonitorService;->onStart()V
+PLcom/android/server/crashrecovery/CrashRecoveryAdaptor;->initializeCrashrecoveryModuleService(Lcom/android/server/SystemServiceManager;)V
+PLcom/android/server/crashrecovery/CrashRecoveryHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/crashrecovery/CrashRecoveryHelper;)V
+HSPLcom/android/server/crashrecovery/CrashRecoveryHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/credentials/CredentialManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/credentials/CredentialManagerService;Ljava/util/List;I)V
+PLcom/android/server/credentials/CredentialManagerService$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/credentials/CredentialManagerService$CredentialManagerServiceStub;-><init>(Lcom/android/server/credentials/CredentialManagerService;)V
+PLcom/android/server/credentials/CredentialManagerService$SessionManager;-><init>(Lcom/android/server/credentials/CredentialManagerService;)V
+PLcom/android/server/credentials/CredentialManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/credentials/CredentialManagerService;->getOrConstructSystemServiceListLock(I)Ljava/util/List;
+PLcom/android/server/credentials/CredentialManagerService;->getPrimaryProvidersForUserId(Landroid/content/Context;I)Ljava/util/Set;
+PLcom/android/server/credentials/CredentialManagerService;->getServiceSettingsProperty()Ljava/lang/String;
+PLcom/android/server/credentials/CredentialManagerService;->newServiceListLocked(I[Ljava/lang/String;)Ljava/util/List;
+PLcom/android/server/credentials/CredentialManagerService;->onStart()V
+PLcom/android/server/credentials/CredentialManagerServiceImpl;-><init>(Lcom/android/server/credentials/CredentialManagerService;Ljava/lang/Object;ILjava/lang/String;)V
+PLcom/android/server/credentials/CredentialManagerServiceImpl;->handlePackageUpdateLocked(Ljava/lang/String;)V
+PLcom/android/server/credentials/CredentialManagerServiceImpl;->newServiceInfoLocked(Landroid/content/ComponentName;)Landroid/content/pm/ServiceInfo;
HSPLcom/android/server/criticalevents/CriticalEventLog$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/criticalevents/CriticalEventLog;)V
PLcom/android/server/criticalevents/CriticalEventLog$$ExternalSyntheticLambda0;->run()V
HSPLcom/android/server/criticalevents/CriticalEventLog$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/criticalevents/CriticalEventLog;Lcom/android/server/criticalevents/CriticalEventLog$ILogLoader;)V
HSPLcom/android/server/criticalevents/CriticalEventLog$$ExternalSyntheticLambda1;->run()V
-HSPLcom/android/server/criticalevents/CriticalEventLog$LogLoader;-><init>()V
-HSPLcom/android/server/criticalevents/CriticalEventLog$LogLoader;->load(Ljava/io/File;Lcom/android/server/criticalevents/CriticalEventLog$ThreadSafeRingBuffer;)V
-HSPLcom/android/server/criticalevents/CriticalEventLog$LogLoader;->loadLogFromFile(Ljava/io/File;)Lcom/android/server/criticalevents/nano/CriticalEventLogStorageProto;
-PLcom/android/server/criticalevents/CriticalEventLog$LogSanitizer;-><init>(ILjava/lang/String;I)V
-PLcom/android/server/criticalevents/CriticalEventLog$LogSanitizer;->process(Lcom/android/server/criticalevents/nano/CriticalEventProto;)Lcom/android/server/criticalevents/nano/CriticalEventProto;
HSPLcom/android/server/criticalevents/CriticalEventLog$ThreadSafeRingBuffer;-><init>(Ljava/lang/Class;I)V
-HSPLcom/android/server/criticalevents/CriticalEventLog$ThreadSafeRingBuffer;->append(Ljava/lang/Object;)V
-PLcom/android/server/criticalevents/CriticalEventLog$ThreadSafeRingBuffer;->capacity()I
-PLcom/android/server/criticalevents/CriticalEventLog$ThreadSafeRingBuffer;->toArray()[Ljava/lang/Object;
-HSPLcom/android/server/criticalevents/CriticalEventLog;->$r8$lambda$lY5bRq3e1qTEzCvfI4SPBg_RsKI(Lcom/android/server/criticalevents/CriticalEventLog;Lcom/android/server/criticalevents/CriticalEventLog$ILogLoader;)V
-HSPLcom/android/server/criticalevents/CriticalEventLog;-><clinit>()V
-HSPLcom/android/server/criticalevents/CriticalEventLog;-><init>()V
HSPLcom/android/server/criticalevents/CriticalEventLog;-><init>(Ljava/lang/String;IIJZLcom/android/server/criticalevents/CriticalEventLog$ILogLoader;)V
PLcom/android/server/criticalevents/CriticalEventLog;->appendAndSave(Lcom/android/server/criticalevents/nano/CriticalEventProto;)V
HSPLcom/android/server/criticalevents/CriticalEventLog;->getInstance()Lcom/android/server/criticalevents/CriticalEventLog;
-PLcom/android/server/criticalevents/CriticalEventLog;->getOutputLogProto(ILjava/lang/String;I)Lcom/android/server/criticalevents/nano/CriticalEventLogProto;
PLcom/android/server/criticalevents/CriticalEventLog;->getWallTimeMillis()J
-HSPLcom/android/server/criticalevents/CriticalEventLog;->init()V
-HSPLcom/android/server/criticalevents/CriticalEventLog;->lambda$new$0(Lcom/android/server/criticalevents/CriticalEventLog$ILogLoader;)V
PLcom/android/server/criticalevents/CriticalEventLog;->log(Lcom/android/server/criticalevents/nano/CriticalEventProto;)V
-PLcom/android/server/criticalevents/CriticalEventLog;->logAnr(Ljava/lang/String;ILjava/lang/String;II)V
-PLcom/android/server/criticalevents/CriticalEventLog;->logLinesForTraceFile(ILjava/lang/String;I)Ljava/lang/String;
-PLcom/android/server/criticalevents/CriticalEventLog;->logSystemServerStarted()V
-PLcom/android/server/criticalevents/CriticalEventLog;->recentEventsWithMinTimestamp(J)[Lcom/android/server/criticalevents/nano/CriticalEventProto;
PLcom/android/server/criticalevents/CriticalEventLog;->saveDelayMs()J
-PLcom/android/server/criticalevents/CriticalEventLog;->saveLogToFile()V
PLcom/android/server/criticalevents/CriticalEventLog;->saveLogToFileNow()V
-HPLcom/android/server/devicepolicy/CallerIdentity;-><init>(ILjava/lang/String;Landroid/content/ComponentName;)V
-PLcom/android/server/devicepolicy/CallerIdentity;->getPackageName()Ljava/lang/String;
-PLcom/android/server/devicepolicy/CallerIdentity;->getUid()I
-PLcom/android/server/devicepolicy/CallerIdentity;->getUserId()I
+PLcom/android/server/deviceidle/FeatureFlagsImpl;->init()V
+PLcom/android/server/deviceidle/Flags;-><clinit>()V
+PLcom/android/server/deviceidle/Flags;->removeIdleLocation()Z
+PLcom/android/server/deviceidle/Flags;->useCpuTimeForTempAllowlist()Z
+HPLcom/android/server/devicepolicy/CallerIdentity;-><init>(Landroid/content/ComponentName;ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/CertificateMonitor$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/devicepolicy/CertificateMonitor;I)V
+PLcom/android/server/devicepolicy/CertificateMonitor$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/devicepolicy/CertificateMonitor$1;-><init>(Lcom/android/server/devicepolicy/CertificateMonitor;)V
PLcom/android/server/devicepolicy/CertificateMonitor$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/devicepolicy/CertificateMonitor;->-$$Nest$mupdateInstalledCertificates(Lcom/android/server/devicepolicy/CertificateMonitor;Landroid/os/UserHandle;)V
PLcom/android/server/devicepolicy/CertificateMonitor;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Landroid/os/Handler;)V
PLcom/android/server/devicepolicy/CertificateMonitor;->getInstalledCaCertificates(Landroid/os/UserHandle;)Ljava/util/List;
PLcom/android/server/devicepolicy/CertificateMonitor;->updateInstalledCertificates(Landroid/os/UserHandle;)V
PLcom/android/server/devicepolicy/DeviceAdminServiceController;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyConstants;)V
-PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider$Injector;-><init>()V
-PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider$Injector;->environmentGetDataSystemDirectory()Ljava/io/File;
+PLcom/android/server/devicepolicy/DeviceAdminServiceController;->dump(Landroid/util/IndentingPrintWriter;)V
PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider$ResourcesReaderWriter;-><init>(Lcom/android/server/devicepolicy/DeviceManagementResourcesProvider;)V
-PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider$ResourcesReaderWriter;-><init>(Lcom/android/server/devicepolicy/DeviceManagementResourcesProvider;Lcom/android/server/devicepolicy/DeviceManagementResourcesProvider$ResourcesReaderWriter-IA;)V
PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider$ResourcesReaderWriter;->readFromFileLocked()V
-PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider;->-$$Nest$mgetResourcesFile(Lcom/android/server/devicepolicy/DeviceManagementResourcesProvider;)Ljava/io/File;
PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider;-><init>()V
-PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider;-><init>(Lcom/android/server/devicepolicy/DeviceManagementResourcesProvider$Injector;)V
-PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider;->getDrawable(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/app/admin/ParcelableResource;
-PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider;->getDrawableForSourceLocked(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/app/admin/ParcelableResource;
-PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider;->getResourcesFile()Ljava/io/File;
-PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider;->getString(Ljava/lang/String;)Landroid/app/admin/ParcelableResource;
-PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider;->load()V
PLcom/android/server/devicepolicy/DevicePolicyCacheImpl;-><init>()V
-PLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->getScreenCaptureDisallowedUser()I
-PLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->isScreenCaptureAllowed(I)Z
-PLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->isScreenCaptureAllowedInPolicyEngine(I)Z
-PLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->setAdminCanGrantSensorsPermissions(Z)V
-PLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->setPasswordQuality(II)V
-PLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->setPermissionPolicy(II)V
+PLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->dump(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->getPasswordQuality(I)I
+PLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->getPermissionPolicy(I)I
+HPLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->isScreenCaptureAllowed(I)Z
+PLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->setContentProtectionPolicy(ILjava/lang/Integer;)V
PLcom/android/server/devicepolicy/DevicePolicyConstants;-><init>(Ljava/lang/String;)V
-PLcom/android/server/devicepolicy/DevicePolicyConstants;->loadFromString(Ljava/lang/String;)Lcom/android/server/devicepolicy/DevicePolicyConstants;
-HPLcom/android/server/devicepolicy/DevicePolicyData;-><init>(I)V
-HPLcom/android/server/devicepolicy/DevicePolicyData;->load(Lcom/android/server/devicepolicy/DevicePolicyData;Lcom/android/internal/util/JournaledFile;Ljava/util/function/Function;Landroid/content/ComponentName;)V
+PLcom/android/server/devicepolicy/DevicePolicyConstants;->dump(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/devicepolicy/DevicePolicyData;-><init>(I)V
+PLcom/android/server/devicepolicy/DevicePolicyData;->load(Lcom/android/server/devicepolicy/DevicePolicyData;Lcom/android/internal/util/JournaledFile;Ljava/util/function/Function;Landroid/content/ComponentName;)V
+PLcom/android/server/devicepolicy/DevicePolicyData;->store(Lcom/android/server/devicepolicy/DevicePolicyData;Lcom/android/internal/util/JournaledFile;)Z
PLcom/android/server/devicepolicy/DevicePolicyData;->validatePasswordOwner()V
-PLcom/android/server/devicepolicy/DevicePolicyEngine$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/devicepolicy/DevicePolicyEngine;ILjava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/devicepolicy/DevicePolicyEngine$$ExternalSyntheticLambda6;->runOrThrow()V
+PLcom/android/server/devicepolicy/DevicePolicyEngine$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/devicepolicy/DevicePolicyEngine;ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyEngine$$ExternalSyntheticLambda0;->runOrThrow()V
PLcom/android/server/devicepolicy/DevicePolicyEngine$DevicePoliciesReaderWriter;-><init>(Lcom/android/server/devicepolicy/DevicePolicyEngine;)V
-PLcom/android/server/devicepolicy/DevicePolicyEngine$DevicePoliciesReaderWriter;-><init>(Lcom/android/server/devicepolicy/DevicePolicyEngine;Lcom/android/server/devicepolicy/DevicePolicyEngine$DevicePoliciesReaderWriter-IA;)V
PLcom/android/server/devicepolicy/DevicePolicyEngine$DevicePoliciesReaderWriter;->readFromFileLocked()V
-PLcom/android/server/devicepolicy/DevicePolicyEngine;->$r8$lambda$HEsFA9ci1FtT28qaffzy5LIPWrk(Lcom/android/server/devicepolicy/DevicePolicyEngine;ILjava/lang/String;Ljava/lang/String;)V
PLcom/android/server/devicepolicy/DevicePolicyEngine;-><clinit>()V
PLcom/android/server/devicepolicy/DevicePolicyEngine;-><init>(Landroid/content/Context;Lcom/android/server/devicepolicy/DeviceAdminServiceController;Ljava/lang/Object;)V
PLcom/android/server/devicepolicy/DevicePolicyEngine;->clear()V
+PLcom/android/server/devicepolicy/DevicePolicyEngine;->dump(Landroid/util/IndentingPrintWriter;)V
PLcom/android/server/devicepolicy/DevicePolicyEngine;->getEnforcingAdminsOnUser(I)Ljava/util/Set;
-PLcom/android/server/devicepolicy/DevicePolicyEngine;->handlePackageChanged(Ljava/lang/String;ILjava/lang/String;)V
-PLcom/android/server/devicepolicy/DevicePolicyEngine;->handleStartUser(I)V
-PLcom/android/server/devicepolicy/DevicePolicyEngine;->handleUnlockUser(I)V
-PLcom/android/server/devicepolicy/DevicePolicyEngine;->lambda$handlePackageChanged$6(ILjava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/devicepolicy/DevicePolicyEngine;->load()V
-PLcom/android/server/devicepolicy/DevicePolicyEngine;->reapplyAllPoliciesLocked()V
-PLcom/android/server/devicepolicy/DevicePolicyEngine;->updateDeviceAdminsServicesForUser(IZLjava/lang/String;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda100;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda100;->getOrThrow()Ljava/lang/Object;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda102;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ZILandroid/content/Context;J)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda102;->runOrThrow()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda113;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda132;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda132;->getOrThrow()Ljava/lang/Object;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda142;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda142;->getOrThrow()Ljava/lang/Object;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda161;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ILandroid/app/role/RoleManager;Ljava/lang/String;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda161;->getOrThrow()Ljava/lang/Object;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda163;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda163;->getOrThrow()Ljava/lang/Object;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda177;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda177;->runOrThrow()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda17;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda17;->getOrThrow()Ljava/lang/Object;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda188;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda188;->runOrThrow()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda192;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda192;->runOrThrow()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda195;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda195;->runOrThrow()V
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda199;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ILjava/util/ArrayList;Ljava/util/function/Predicate;)V
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda199;->runOrThrow()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda27;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/DevicePolicyEngine;->getLocalPolicyKeysSetByAllAdmins(Lcom/android/server/devicepolicy/PolicyDefinition;I)Ljava/util/Set;
+PLcom/android/server/devicepolicy/DevicePolicyEngine;->getResolvedPolicy(Lcom/android/server/devicepolicy/PolicyDefinition;I)Ljava/lang/Object;
+HPLcom/android/server/devicepolicy/DevicePolicyEngine;->getResolvedPolicyValue(Lcom/android/server/devicepolicy/PolicyDefinition;I)Landroid/app/admin/PolicyValue;
+PLcom/android/server/devicepolicy/DevicePolicyEngine;->hasGlobalPolicyLocked(Lcom/android/server/devicepolicy/PolicyDefinition;)Z
+HPLcom/android/server/devicepolicy/DevicePolicyEngine;->hasLocalPolicyLocked(Lcom/android/server/devicepolicy/PolicyDefinition;I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/devicepolicy/DevicePolicyEngine;->reapplyAllPoliciesOnBootLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyEngine;->updateDeviceAdminsServicesForUser(IZ)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda106;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ZILandroid/content/Context;J)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda106;->runOrThrow()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda121;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda184;-><init>(Landroid/os/Handler;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda184;->execute(Ljava/lang/Runnable;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda26;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda26;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda27;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyData;I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda27;->runOrThrow()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda38;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda38;->getOrThrow()Ljava/lang/Object;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda42;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda42;->getOrThrow()Ljava/lang/Object;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda46;-><init>(Landroid/content/Context;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda46;->getOrThrow()Ljava/lang/Object;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda55;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda55;->run()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda68;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda68;->getOrThrow()Ljava/lang/Object;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda29;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda31;-><init>(IILjava/lang/Object;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda31;->runOrThrow()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda32;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda32;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda33;-><init>(ILjava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda33;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda37;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/Object;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda37;->run()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda46;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ILjava/util/ArrayList;Ljava/util/function/Predicate;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda46;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/Intent;ILandroid/os/Bundle;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda46;->runOrThrow()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda51;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/Integer;I)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda51;->getOrThrow()Ljava/lang/Object;+]Landroid/os/UserManager;Landroid/os/UserManager;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda57;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda57;->run()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda58;-><init>(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda58;->test(Ljava/lang/Object;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;II)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda6;->getOrThrow()Ljava/lang/Object;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda72;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda72;->getOrThrow()Ljava/lang/Object;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda80;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/CallerIdentity;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda80;->getOrThrow()Ljava/lang/Object;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda86;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda89;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda89;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/CallerIdentity;I)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda7;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda88;-><init>(IILjava/lang/Object;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda9;-><init>(ILcom/android/server/devicepolicy/DevicePolicyManagerService;Z)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda9;->getOrThrow()Ljava/lang/Object;
PLcom/android/server/devicepolicy/DevicePolicyManagerService$1$1;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService$1;I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$1$1;->run()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$1;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$1;-><init>(ILjava/lang/Object;)V
HPLcom/android/server/devicepolicy/DevicePolicyManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$1;->sendDeviceOwnerUserCommand(Ljava/lang/String;I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$2;-><init>()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$1;->sendDeviceOwnerUserCommand(ILjava/lang/String;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$CalculateHasIncompatibleAccountsTask;-><clinit>()V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$CalculateHasIncompatibleAccountsTask;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$CalculateHasIncompatibleAccountsTask;->doInBackground([Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$CalculateHasIncompatibleAccountsTask;->doInBackground([Ljava/lang/Void;)Ljava/util/Map;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$CalculateHasIncompatibleAccountsTask;->hasAccountFeatures(Landroid/accounts/AccountManager;Landroid/accounts/Account;[Ljava/lang/String;)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService$CalculateHasIncompatibleAccountsTask;->onPostExecute(Ljava/lang/Object;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$CalculateHasIncompatibleAccountsTask;->onPostExecute(Ljava/util/Map;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$CalculateHasIncompatibleAccountsTask;->userHasIncompatibleAccounts(I)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyConstantsObserver;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/os/Handler;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyConstantsObserver;->register()V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyManagementRoleObserver;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/Context;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyManagementRoleObserver;->register()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyManagementRoleObserver;->onRoleHoldersChanged(Ljava/lang/String;Landroid/os/UserHandle;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$DpmsUpgradeDataProvider;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$DpmsUpgradeDataProvider;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$DpmsUpgradeDataProvider-IA;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$DpmsUpgradeDataProvider;->makePoliciesVersionJournaledFile(I)Lcom/android/internal/util/JournaledFile;
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;-><init>(Landroid/content/Context;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderClearCallingIdentity()J
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderGetCallingUid()I
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderRestoreCallingIdentity(J)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderWithCleanCallingIdentity(Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderWithCleanCallingIdentity(Lcom/android/internal/util/FunctionalUtils$ThrowingSupplier;)Ljava/lang/Object;
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getActivityManagerInternal()Landroid/app/ActivityManagerInternal;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getActivityTaskManagerInternal()Lcom/android/server/wm/ActivityTaskManagerInternal;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getAlarmManager()Landroid/app/AlarmManager;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getDeviceManagementResourcesProvider()Lcom/android/server/devicepolicy/DeviceManagementResourcesProvider;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getIPackageManager()Landroid/content/pm/IPackageManager;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getIPermissionManager()Landroid/permission/IPermissionManager;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getLockSettingsInternal()Lcom/android/internal/widget/LockSettingsInternal;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getMyLooper()Landroid/os/Looper;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getNetworkPolicyManagerInternal()Lcom/android/server/net/NetworkPolicyManagerInternal;
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getNotificationManager()Landroid/app/NotificationManager;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getPackageManager()Landroid/content/pm/PackageManager;
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getPackageManagerLocal()Lcom/android/server/pm/PackageManagerLocal;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getPersistentDataBlockManagerInternal()Lcom/android/server/pdb/PersistentDataBlockManagerInternal;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getPowerManagerInternal()Landroid/os/PowerManagerInternal;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getRoleManager()Landroid/app/role/RoleManager;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getTelephonyManager()Landroid/telephony/TelephonyManager;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getUsageStatsManagerInternal()Landroid/app/usage/UsageStatsManagerInternal;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getUserManager()Landroid/os/UserManager;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getUserManagerInternal()Lcom/android/server/pm/UserManagerInternal;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->hasFeature()Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->keyChainBindAsUser(Landroid/os/UserHandle;)Landroid/security/KeyChain$KeyChainConnection;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->newLockPatternUtils()Lcom/android/internal/widget/LockPatternUtils;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->newTransferOwnershipMetadataManager()Lcom/android/server/devicepolicy/TransferOwnershipMetadataManager;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->postOnSystemServerInitThreadPool(Ljava/lang/Runnable;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->securityLogIsLoggingEnabled()Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settingsGlobalGetInt(Ljava/lang/String;I)I
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settingsGlobalGetString(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settingsSecureGetIntForUser(Ljava/lang/String;II)I
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->systemPropertiesGet(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->systemPropertiesSet(Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->userHandleGetCallingUserId()I
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onStart()V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onUserUnlocked(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->canSilentlyInstallPackage(Ljava/lang/String;I)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->getDeviceOwnerUserId()I
PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->getDevicePolicyCache()Landroid/app/admin/DevicePolicyCache;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->getDeviceStateCache()Landroid/app/admin/DeviceStateCache;
PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->getProfileOwnerAsUser(I)Landroid/content/ComponentName;
PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->getProfileOwnerOrDeviceOwnerSupervisionComponent(Landroid/os/UserHandle;)Landroid/content/ComponentName;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isActiveDeviceOwner(I)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isActiveProfileOwner(I)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isDeviceOrProfileOwnerInCallingUser(Ljava/lang/String;)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isDeviceOwnerInCallingUser(Ljava/lang/String;)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isProfileOwnerInCallingUser(Ljava/lang/String;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isUserAffiliatedWithDevice(I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isUserOrganizationManaged(I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->reportSeparateProfileChallengeChanged(I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$RestrictionsListener;-><init>(Landroid/content/Context;Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$RestrictionsListener;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$RestrictionsListener;->resetCrossProfileIntentFiltersIfNeeded(ILandroid/os/Bundle;Landroid/os/Bundle;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$RestrictionsListener;->resetUserVpnIfNeeded(ILandroid/os/Bundle;Landroid/os/Bundle;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$SetupContentObserver;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/os/Handler;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$SetupContentObserver;->register()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$SetupContentObserver;->onChange(ZLandroid/net/Uri;I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$UserLifecycleListener;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$UserLifecycleListener;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$UserLifecycleListener-IA;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$-_z8hGRIb6pQyXYE8_6ZYacGvbw(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)Ljava/util/List;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$-q-2R58XHKASAfVcXG9652E3rcY(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ZILandroid/content/Context;J)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$4qgfaLwflxT886ZjrVckFVIasDk(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)Ljava/lang/Integer;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$6U9Tynmb-Pyx3o9fk3BZ0wh6q3E(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)Lcom/android/server/devicepolicy/DevicePolicyData;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$8VXyNGD0KwgqhXPdcXu1QbxETRQ(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/CallerIdentity;)Landroid/content/ComponentName;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$Brh1ZdbohpkBgCPUEetYswzjMkc(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)Ljava/lang/Integer;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$CJDroM2Uh4rlsgC9LEZ9aehyHXM(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)Ljava/lang/Boolean;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$CRXhnBHjweCG-8NoO_CQy53GYYk(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)Ljava/lang/Boolean;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$CYNFk6GsglGWHquGPD3vL3X-AUg(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ILjava/util/ArrayList;Ljava/util/function/Predicate;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$DyPvkrBjVftwiLi5cgJUKifQ0U0(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$JMLEf7na_pJZ1NV2yiBbR9cYggU(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$OK7dCZ1VEShdEVYkeM54BypjnE8(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$U1W3GVfS6PTjHhnIoEaSz9WC9vo(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$Yyzr3b2Kx_xWuoVgRMQEA4r_WrQ(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/app/admin/ParcelableResource;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$bycuYzhfY5R_qaetM6pnmUlgRYw(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)Ljava/lang/Boolean;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$i6aIKV8B6wjNaZ4yPJzuaqQ_iKs(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;)Landroid/app/admin/ParcelableResource;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$iNjWxaW0J6MCxP6Dq9qZBTkpUPU(Landroid/content/Context;)Ljava/lang/Boolean;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$l-CexO0TUb2n-ZZT32CKYYMXM8Q(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ILandroid/app/role/RoleManager;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$nLvlTqg9n5B_Pl5TtcgHJOhZ3Bw(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$oJwZkF-N5rTQ3VjihBKUVksj8oQ(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$qyL5CPTjIZuQtn8bTDK3nNCBcR8(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)Lcom/android/server/devicepolicy/ActiveAdmin;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$y2NbOOaPwzvcsyukbUhSG1v0a0I(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)Landroid/content/pm/UserInfo;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-$$Nest$fgetmPolicyCache(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)Lcom/android/server/devicepolicy/DevicePolicyCacheImpl;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-$$Nest$fputmHasIncompatibleAccounts(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/util/Map;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-$$Nest$mhandlePackagesChanged(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-$$Nest$mhandlePasswordExpirationNotification(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-$$Nest$misManagedProfile(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-$$Nest$misNetworkLoggingEnabledInternalLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-$$Nest$mmakeJournaledFile(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ILjava/lang/String;)Lcom/android/internal/util/JournaledFile;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-$$Nest$mhandlePackagesChanged(ILcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-$$Nest$mmaybeSendAdminEnabledBroadcastLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-$$Nest$mupdatePersonalAppsSuspensionOnUserStart(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;-><clinit>()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/PolicyPathProvider;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;-><clinit>()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/PolicyPathProvider;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->applyManagedSubscriptionsPolicyIfRequired()V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->applyProfileRestrictionsIfDeviceOwnerLocked()V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->calculateHasIncompatibleAccounts()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->canManageUsers(Lcom/android/server/devicepolicy/CallerIdentity;)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->canUsbDataSignalingBeDisabledInternal(Landroid/content/Context;)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->checkCanExecuteOrThrowUnsafe(I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->cleanUpOldUsers()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->doesCallerHoldRole(Lcom/android/server/devicepolicy/CallerIdentity;Ljava/lang/String;)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforcePermission(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforcePermission(Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforcePermissionAndGetEnforcingAdmin(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;I)Lcom/android/server/devicepolicy/EnforcingAdmin;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureDeviceOwnerUserStarted()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->dumpApps(Landroid/util/IndentingPrintWriter;Ljava/lang/String;Ljava/util/List;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->dumpApps(Landroid/util/IndentingPrintWriter;Ljava/lang/String;[Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->dumpImmutableState(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->dumpPerUserPolicyData(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->dumpPersonalAppInfoForSystemUserNoLock(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->dumpResources(Landroid/util/IndentingPrintWriter;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureLocked()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->factoryResetIfDelayedEarlier()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->fetchOemSystemHolders([I)Ljava/util/Set;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->fixupAutoTimeRestrictionDuringOrganizationOwnedDeviceMigration()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getAcceptedCaCertificates(Landroid/os/UserHandle;)Ljava/util/Set;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getAccountTypesWithManagementDisabledAsUser(ILjava/lang/String;Z)[Ljava/lang/String;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminPackagesLocked(I)Ljava/util/Set;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminUncheckedLocked(ILandroid/content/ComponentName;)Lcom/android/server/devicepolicy/ActiveAdmin;
HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdmins(I)Ljava/util/List;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminsForLockscreenPoliciesLocked(I)Ljava/util/List;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminsForUserAndItsManagedProfilesLocked(ILjava/util/function/Predicate;)Ljava/util/List;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCallerIdentity()Lcom/android/server/devicepolicy/CallerIdentity;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminsForLockscreenPoliciesLocked(I)Ljava/util/List;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminsForUserAndItsManagedProfilesLocked(ILjava/util/function/Predicate;)Ljava/util/List;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getAdminWithMinimumFailedPasswordsForWipeLocked(IZ)Lcom/android/server/devicepolicy/ActiveAdmin;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getAggregatedPasswordComplexityLocked(IZ)I
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCallerIdentity(Landroid/content/ComponentName;)Lcom/android/server/devicepolicy/CallerIdentity;
HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCallerIdentity(Landroid/content/ComponentName;Ljava/lang/String;)Lcom/android/server/devicepolicy/CallerIdentity;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCallerIdentity(Ljava/lang/String;)Lcom/android/server/devicepolicy/CallerIdentity;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDefaultRoleHolderPackageName(I)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCredentialOwner(IZ)I
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOrProfileOwnerAdminLocked(I)Lcom/android/server/devicepolicy/ActiveAdmin;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerAdminLocked()Lcom/android/server/devicepolicy/ActiveAdmin;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerComponent(Z)Landroid/content/ComponentName;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerComponentOnUser(I)Landroid/content/ComponentName;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerLocked(I)Lcom/android/server/devicepolicy/ActiveAdmin;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerComponent(Z)Landroid/content/ComponentName;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerComponentOnUser(I)Landroid/content/ComponentName;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerName()Ljava/lang/String;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerOrProfileOwnerOfOrganizationOwnedDeviceLocked()Lcom/android/server/devicepolicy/ActiveAdmin;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerOrProfileOwnerOfOrganizationOwnedDeviceOrSystemPermissionBasedAdminLocked()Lcom/android/server/devicepolicy/ActiveAdmin;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerUserId()I
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerUserIdUncheckedLocked()I
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDpcType(Lcom/android/server/devicepolicy/CallerIdentity;)I
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDrawable(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/app/admin/ParcelableResource;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getEncryptionStatus()I
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getFactoryResetProtectionPolicy(Landroid/content/ComponentName;)Landroid/app/admin/FactoryResetProtectionPolicy;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getFrpManagementAgentUid()I
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getFrpManagementAgentUidOrThrow()I
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getKeepUninstalledPackagesLocked()Ljava/util/List;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;IZ)I
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getLockObject()Ljava/lang/Object;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;IZ)I+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getLockObject()Ljava/lang/Object;+]Lcom/android/internal/util/StatLogger;Lcom/android/internal/util/StatLogger;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getLogoutUserIdUnchecked()I
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getMainUserId()I
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getManagedUserId()I
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getManagedUserId(I)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getMaximumFailedPasswordsForWipe(Landroid/content/ComponentName;IZ)I
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getMaximumTimeToLockPolicyFromAdmins(Ljava/util/List;)J
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getMeteredDisabledPackages(I)Ljava/util/Set;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getMinimumRequiredWifiSecurityLevel()I
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getNetworkLoggingAffectedUser()I
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getNetworkLoggingControllingAdminLocked()Lcom/android/server/devicepolicy/ActiveAdmin;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getOrganizationOwnedProfileUserId()I
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getOwnerComponent(I)Landroid/content/ComponentName;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordExpirationLocked(Landroid/content/ComponentName;IZ)J
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordMinimumMetricsUnchecked(IZ)Landroid/app/admin/PasswordMetrics;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordQuality(Landroid/content/ComponentName;IZ)I
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPolicyFileDirectory(I)Ljava/io/File;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPermissionPolicy(Landroid/content/ComponentName;)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPermittedAccessibilityServicesForUser(I)Ljava/util/List;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPolicyManagedProfiles(Landroid/os/UserHandle;)Ljava/util/List;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPowerManagerInternal()Landroid/os/PowerManagerInternal;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerAdminLocked(I)Lcom/android/server/devicepolicy/ActiveAdmin;
HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerAsUser(I)Landroid/content/ComponentName;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerName(I)Ljava/lang/String;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerNameUnchecked(I)Ljava/lang/String;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerOfOrganizationOwnedDeviceLocked()Lcom/android/server/devicepolicy/ActiveAdmin;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerOrDeviceOwnerLocked(I)Lcom/android/server/devicepolicy/ActiveAdmin;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerOrDeviceOwnerSupervisionComponent(Landroid/os/UserHandle;)Landroid/content/ComponentName;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileParentId(I)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileParentId(I)I
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileParentUserIfRequested(IZ)I
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getRoleHolderPackageNameOnUser(Ljava/lang/String;I)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getRequiredStrongAuthTimeout(Landroid/content/ComponentName;IZ)J
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getString(Ljava/lang/String;)Landroid/app/admin/ParcelableResource;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getSystemUpdatePolicy()Landroid/app/admin/SystemUpdatePolicy;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUnsafeOperationReason(I)I
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserData(I)Lcom/android/server/devicepolicy/DevicePolicyData;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserDataUnchecked(I)Lcom/android/server/devicepolicy/DevicePolicyData;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserData(I)Lcom/android/server/devicepolicy/DevicePolicyData;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserDataUnchecked(I)Lcom/android/server/devicepolicy/DevicePolicyData;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserProvisioningState(I)I
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handleOnUserUnlocked(I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handlePackagesChanged(Ljava/lang/String;I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handlePasswordExpirationNotification(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getWifiSsidPolicy(Ljava/lang/String;)Landroid/app/admin/WifiSsidPolicy;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handleStartUser(I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handleUnlockUser(I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasCallingOrSelfPermission(Ljava/lang/String;)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasCrossUsersPermission(Lcom/android/server/devicepolicy/CallerIdentity;I)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasCrossUsersPermission(Lcom/android/server/devicepolicy/CallerIdentity;I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasDeviceOwner()Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasFullCrossUsersPermission(Lcom/android/server/devicepolicy/CallerIdentity;I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasIncompatibleAccountsOnAnyUser()Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasPermission(Ljava/lang/String;Ljava/lang/String;)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->invalidateBinderCaches()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCallerDevicePolicyManagementRoleHolder(Lcom/android/server/devicepolicy/CallerIdentity;)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCallingFromPackage(Ljava/lang/String;I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasPermission(Ljava/lang/String;Ljava/lang/String;I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isAdminActive(Landroid/content/ComponentName;I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCallingFromPackage(ILjava/lang/String;)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCommonCriteriaModeEnabled(Landroid/content/ComponentName;)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDefaultDeviceOwner(Lcom/android/server/devicepolicy/CallerIdentity;)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDeviceOwnerLocked(Lcom/android/server/devicepolicy/CallerIdentity;)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDeviceOwnerUserId(I)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isFinancedDeviceOwner(Lcom/android/server/devicepolicy/CallerIdentity;)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isManagedProfile(I)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isNetworkLoggingEnabledInternalLocked()Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isOrganizationOwnedDeviceWithManagedProfile()Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isPermissionCheckFlagEnabled()Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isProfileOwner(Lcom/android/server/devicepolicy/CallerIdentity;)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isProfileOwner(Lcom/android/server/devicepolicy/CallerIdentity;)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isProfileOwnerOfOrganizationOwnedDevice(I)Z
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSeparateProfileChallengeEnabled(I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isProfileOwnerOfOrganizationOwnedDevice(Lcom/android/server/devicepolicy/CallerIdentity;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSeparateProfileChallengeEnabled(I)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSupervisionComponentLocked(Landroid/content/ComponentName;)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isUnicornFlagEnabled()Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isUsbDataSignalingEnabledInternalLocked()Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSystemUid(Lcom/android/server/devicepolicy/CallerIdentity;)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isUserAffiliatedWithDeviceLocked(I)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$canUsbDataSignalingBeDisabledInternal$179(Landroid/content/Context;)Ljava/lang/Boolean;
-HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getActiveAdminsForUserAndItsManagedProfilesLocked$22(ILjava/util/ArrayList;Ljava/util/function/Predicate;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getDrawable$185(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/app/admin/ParcelableResource;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getNetworkLoggingAffectedUser$146()Ljava/lang/Integer;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getPolicyManagedProfiles$196(I)Ljava/util/List;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getProfileOwnerOfOrganizationOwnedDeviceLocked$83()Lcom/android/server/devicepolicy/ActiveAdmin;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getProfileParentId$86(I)Ljava/lang/Integer;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getRoleHolderPackageNameOnUser$173(ILandroid/app/role/RoleManager;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getString$189(Ljava/lang/String;)Landroid/app/admin/ParcelableResource;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getUserDataUnchecked$5(I)Lcom/android/server/devicepolicy/DevicePolicyData;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getUserInfo$38(I)Landroid/content/pm/UserInfo;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$isProfileOwner$73(Lcom/android/server/devicepolicy/CallerIdentity;)Landroid/content/ComponentName;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$isSeparateProfileChallengeEnabled$24(I)Ljava/lang/Boolean;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$loadAdminDataAsync$14()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$migrateAccountManagementDisabledPolicyLocked$203()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$migratePermittedInputMethodsPolicyLocked$202()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$migratePoliciesToDevicePolicyEngine$200()Ljava/lang/Boolean;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$migrateScreenCapturePolicyLocked$201()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$migrateUserControlDisabledPackagesLocked$204()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setExpirationAlarmCheckLocked$6(ZILandroid/content/Context;J)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$shouldMigrateToDevicePolicyEngine$199()Ljava/lang/Boolean;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$updateMaximumTimeToLockLocked$40(I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->loadAdminDataAsync()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->loadConstants()Lcom/android/server/devicepolicy/DevicePolicyConstants;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->loadOwners()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->loadSettingsLocked(Lcom/android/server/devicepolicy/DevicePolicyData;I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->makeJournaledFile(I)Lcom/android/internal/util/JournaledFile;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->makeJournaledFile(ILjava/lang/String;)Lcom/android/internal/util/JournaledFile;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->makeOwners(Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/PolicyPathProvider;)Lcom/android/server/devicepolicy/Owners;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeLogStart()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeSendAdminEnabledBroadcastLocked(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeMigrateMemoryTaggingLocked()Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeMigratePoliciesPostUpgradeToDevicePolicyEngineLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeMigrateResetPasswordTokenLocked()Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeMigrateSetKeyguardDisabledFeatures()Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeMigrateSuspendedPackagesLocked()Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeSetDefaultProfileOwnerUserRestrictions()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeStartSecurityLogMonitorOnActivityManagerReady()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->migrateAccountManagementDisabledPolicyLocked()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->migratePermittedInputMethodsPolicyLocked()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->migratePoliciesToDevicePolicyEngine()Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->migrateScreenCapturePolicyLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->migratePoliciesToPolicyEngineLocked()V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->migrateToProfileOnOrganizationOwnedDeviceIfCompLocked()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->migrateUserControlDisabledPackagesLocked()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->onInstalledCertificatesChanged(Landroid/os/UserHandle;Ljava/util/Collection;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->nonTestNonPrecreatedUsersExist()Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->onLockSettingsReady()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->performPolicyVersionUpgrade()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->pushActiveAdminPackages()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->pushAllMeteredRestrictedPackages()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->packageHasActiveAdmins(Ljava/lang/String;I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->removeCaApprovalsIfNeeded(I)Ljava/util/Set;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->reportFailedPasswordAttempt(IZ)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->reportPasswordChanged(Landroid/app/admin/PasswordMetrics;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->reportSuccessfulPasswordAttempt(I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->revertTransferOwnershipIfNecessaryLocked()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setDeviceOwnershipSystemPropertyLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->saveSettingsLocked(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminCommandForLockscreenPoliciesLocked(IILjava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminCommandLocked(IILandroid/os/Bundle;Ljava/lang/String;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setExpirationAlarmCheckLocked(Landroid/content/Context;IZ)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setUserControlDisabledPackages(Landroid/content/ComponentName;Ljava/lang/String;Ljava/util/List;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->shouldMigrateToDevicePolicyEngine()Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->showNewUserDisclaimerIfNecessary(I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->startOwnerService(ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->shouldAllowBypassingDevicePolicyManagementRoleQualification()Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->startOwnerService(I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->suspendPersonalAppsInternal(IIZ)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->systemReady(I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->unsuspendWorkAppsIfNecessary()V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateAdminCanGrantSensorsPermissionCache(I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateMaximumTimeToLockLocked(I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateNetworkPreferenceForUser(ILjava/util/List;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updatePasswordExpirationsLocked(I)Ljava/util/Set;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updatePasswordQualityCacheForUserGroup(I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updatePermissionPolicyCache(I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updatePersonalAppsSuspensionOnUserStart(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updatePasswordValidityCheckpointLocked(IZ)Ljava/util/Set;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateSystemUpdateFreezePeriodsRecord(Z)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateUsbDataSignal(Landroid/content/Context;Z)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateUserSetupCompleteAndPaired()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->wtfIfInLock()V
+PLcom/android/server/devicepolicy/DeviceStateCacheImpl$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;ZLandroid/util/IndentingPrintWriter;Ljava/lang/String;)Ljava/lang/StringBuilder;
PLcom/android/server/devicepolicy/DeviceStateCacheImpl;-><init>()V
-PLcom/android/server/devicepolicy/DeviceStateCacheImpl;->setDeviceOwnerType(I)V
-PLcom/android/server/devicepolicy/DeviceStateCacheImpl;->setDeviceProvisioned(Z)V
+PLcom/android/server/devicepolicy/DeviceStateCacheImpl;->dump(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/devicepolicy/DeviceStateCacheImpl;->isDeviceProvisioned()Z
+PLcom/android/server/devicepolicy/DeviceStateCacheImpl;->isUserOrganizationManaged(I)Z
PLcom/android/server/devicepolicy/DeviceStateCacheImpl;->setHasProfileOwner(IZ)V
-PLcom/android/server/devicepolicy/OverlayPackagesProvider$DefaultInjector;-><init>()V
-PLcom/android/server/devicepolicy/OverlayPackagesProvider$DefaultInjector;-><init>(Lcom/android/server/devicepolicy/OverlayPackagesProvider$DefaultInjector-IA;)V
+PLcom/android/server/devicepolicy/EnforcingAdmin;->getRoleAuthorityOf(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/devicepolicy/MostRestrictive;-><init>(Ljava/util/List;)V
+PLcom/android/server/devicepolicy/OverlayPackagesProvider$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/devicepolicy/OverlayPackagesProvider$$ExternalSyntheticLambda0;->apply(I)Ljava/lang/Object;
PLcom/android/server/devicepolicy/OverlayPackagesProvider;-><clinit>()V
-PLcom/android/server/devicepolicy/OverlayPackagesProvider;-><init>(Landroid/content/Context;)V
-PLcom/android/server/devicepolicy/OverlayPackagesProvider;-><init>(Landroid/content/Context;Lcom/android/server/devicepolicy/OverlayPackagesProvider$Injector;)V
-PLcom/android/server/devicepolicy/Owners$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/devicepolicy/OverlayPackagesProvider;-><init>(Landroid/content/Context;Lcom/android/server/devicepolicy/OverlayPackagesProvider$Injector;Lcom/android/server/devicepolicy/RecursiveStringArrayResourceResolver;)V
+PLcom/android/server/devicepolicy/OverlayPackagesProvider;->resolveStringArray(I)Ljava/util/Set;
PLcom/android/server/devicepolicy/Owners$$ExternalSyntheticLambda0;->applyAsInt(Ljava/lang/Object;)I
-PLcom/android/server/devicepolicy/Owners;->$r8$lambda$6w4HWUbvXPWGKa7vKtQD2v4JRdk(Landroid/content/pm/UserInfo;)I
PLcom/android/server/devicepolicy/Owners;-><init>(Landroid/os/UserManager;Lcom/android/server/pm/UserManagerInternal;Landroid/content/pm/PackageManagerInternal;Lcom/android/server/wm/ActivityTaskManagerInternal;Landroid/app/ActivityManagerInternal;Lcom/android/server/devicepolicy/DeviceStateCacheImpl;Lcom/android/server/devicepolicy/PolicyPathProvider;)V
PLcom/android/server/devicepolicy/Owners;->getDeviceOwnerComponent()Landroid/content/ComponentName;
PLcom/android/server/devicepolicy/Owners;->getDeviceOwnerUidLocked()I
-HPLcom/android/server/devicepolicy/Owners;->getDeviceOwnerUserId()I
+PLcom/android/server/devicepolicy/Owners;->getDeviceOwnerUserId()I
HPLcom/android/server/devicepolicy/Owners;->getProfileOwnerComponent(I)Landroid/content/ComponentName;
PLcom/android/server/devicepolicy/Owners;->getProfileOwnerKeys()Ljava/util/Set;
-PLcom/android/server/devicepolicy/Owners;->getProfileOwnerUidsLocked()Ljava/util/Set;
PLcom/android/server/devicepolicy/Owners;->getSystemUpdatePolicy()Landroid/app/admin/SystemUpdatePolicy;
HPLcom/android/server/devicepolicy/Owners;->hasDeviceOwner()Z
PLcom/android/server/devicepolicy/Owners;->hasProfileOwner(I)Z
-PLcom/android/server/devicepolicy/Owners;->isMigratedToPolicyEngine()Z
PLcom/android/server/devicepolicy/Owners;->isProfileOwnerOfOrganizationOwnedDevice(I)Z
-PLcom/android/server/devicepolicy/Owners;->lambda$load$0(Landroid/content/pm/UserInfo;)I
PLcom/android/server/devicepolicy/Owners;->load()V
-PLcom/android/server/devicepolicy/Owners;->markMigrationToPolicyEngine()V
PLcom/android/server/devicepolicy/Owners;->notifyChangeLocked()V
PLcom/android/server/devicepolicy/Owners;->pushDeviceOwnerUidToActivityTaskManagerLocked()V
PLcom/android/server/devicepolicy/Owners;->pushProfileOwnerUidsToActivityTaskManagerLocked()V
PLcom/android/server/devicepolicy/Owners;->pushToActivityManagerLocked()V
PLcom/android/server/devicepolicy/Owners;->pushToAppOpsLocked()V
-PLcom/android/server/devicepolicy/Owners;->pushToDevicePolicyManager()V
-PLcom/android/server/devicepolicy/Owners;->pushToPackageManagerLocked()V
PLcom/android/server/devicepolicy/Owners;->systemReady()V
PLcom/android/server/devicepolicy/OwnersData$DeviceOwnerReadWriter;-><init>(Lcom/android/server/devicepolicy/OwnersData;)V
-PLcom/android/server/devicepolicy/OwnersData$DeviceOwnerReadWriter;->shouldWrite()Z
+PLcom/android/server/devicepolicy/OwnersData$DeviceOwnerReadWriter;->readInner(ILcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)Z
PLcom/android/server/devicepolicy/OwnersData$FileReadWriter;-><init>(Ljava/io/File;)V
PLcom/android/server/devicepolicy/OwnersData$FileReadWriter;->readFromFileLocked()V
-PLcom/android/server/devicepolicy/OwnersData$FileReadWriter;->writeToFileLocked()Z
PLcom/android/server/devicepolicy/OwnersData$ProfileOwnerReadWriter;-><init>(Lcom/android/server/devicepolicy/OwnersData;I)V
PLcom/android/server/devicepolicy/OwnersData;-><init>(Lcom/android/server/devicepolicy/PolicyPathProvider;)V
+PLcom/android/server/devicepolicy/OwnersData;->dump(Landroid/util/IndentingPrintWriter;)V
PLcom/android/server/devicepolicy/OwnersData;->getDeviceOwnerFile()Ljava/io/File;
PLcom/android/server/devicepolicy/OwnersData;->getProfileOwnerFile(I)Ljava/io/File;
PLcom/android/server/devicepolicy/OwnersData;->load([I)V
-PLcom/android/server/devicepolicy/OwnersData;->writeDeviceOwner()Z
-PLcom/android/server/devicepolicy/PolicyPathProvider;->getDataSystemDirectory()Ljava/io/File;
-PLcom/android/server/devicepolicy/PolicyPathProvider;->getUserSystemDirectory(I)Ljava/io/File;
+PLcom/android/server/devicepolicy/PersonalAppsSuspensionHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/devicepolicy/PersonalAppsSuspensionHelper;->getAccessibilityServices()Ljava/util/List;
+PLcom/android/server/devicepolicy/PersonalAppsSuspensionHelper;->getInputMethodPackages()Ljava/util/List;
+PLcom/android/server/devicepolicy/PersonalAppsSuspensionHelper;->getPersonalAppsForSuspension()[Ljava/lang/String;
+PLcom/android/server/devicepolicy/PersonalAppsSuspensionHelper;->getSystemLauncherPackages()Ljava/util/List;
+PLcom/android/server/devicepolicy/PolicyDefinition$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/devicepolicy/PolicyDefinition;-><clinit>()V
+PLcom/android/server/devicepolicy/PolicyDefinition;-><init>(Landroid/app/admin/PolicyKey;Lcom/android/server/devicepolicy/ResolutionMechanism;ILcom/android/internal/util/function/QuadFunction;Lcom/android/server/devicepolicy/PolicySerializer;)V
+PLcom/android/server/devicepolicy/PolicyDefinition;->isGlobalOnlyPolicy()Z
+PLcom/android/server/devicepolicy/PolicyDefinition;->isNonCoexistablePolicy()Z
PLcom/android/server/devicepolicy/PolicyVersionUpgrader;-><init>(Lcom/android/server/devicepolicy/PolicyUpgraderDataProvider;Lcom/android/server/devicepolicy/PolicyPathProvider;)V
-PLcom/android/server/devicepolicy/PolicyVersionUpgrader;->getVersionFile()Lcom/android/internal/util/JournaledFile;
-PLcom/android/server/devicepolicy/PolicyVersionUpgrader;->readVersion()I
-PLcom/android/server/devicepolicy/PolicyVersionUpgrader;->upgradePolicy(I)V
+PLcom/android/server/devicepolicy/RecursiveStringArrayResourceResolver;-><init>(Landroid/content/res/Resources;)V
+PLcom/android/server/devicepolicy/RecursiveStringArrayResourceResolver;->resolve(ILjava/lang/String;Ljava/util/Collection;)Ljava/util/Set;
PLcom/android/server/devicepolicy/RemoteBugreportManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/devicepolicy/RemoteBugreportManager;)V
-PLcom/android/server/devicepolicy/RemoteBugreportManager$1;-><init>(Lcom/android/server/devicepolicy/RemoteBugreportManager;)V
-PLcom/android/server/devicepolicy/RemoteBugreportManager$2;-><init>(Lcom/android/server/devicepolicy/RemoteBugreportManager;)V
+PLcom/android/server/devicepolicy/RemoteBugreportManager$1;-><init>(Lcom/android/server/devicepolicy/RemoteBugreportManager;I)V
PLcom/android/server/devicepolicy/RemoteBugreportManager;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;)V
PLcom/android/server/devicepolicy/SecurityLogMonitor;-><clinit>()V
-PLcom/android/server/devicepolicy/SecurityLogMonitor;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
-PLcom/android/server/devicepolicy/SecurityLogMonitor;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;J)V
+PLcom/android/server/devicepolicy/SecurityLogMonitor;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/os/Handler;)V
+PLcom/android/server/devicepolicy/TopPriority;-><init>(Ljava/util/List;)V
PLcom/android/server/devicepolicy/TransferOwnershipMetadataManager$Injector;-><init>()V
-PLcom/android/server/devicepolicy/TransferOwnershipMetadataManager$Injector;->getOwnerTransferMetadataDir()Ljava/io/File;
-PLcom/android/server/devicepolicy/TransferOwnershipMetadataManager;-><clinit>()V
-PLcom/android/server/devicepolicy/TransferOwnershipMetadataManager;-><init>()V
PLcom/android/server/devicepolicy/TransferOwnershipMetadataManager;-><init>(Lcom/android/server/devicepolicy/TransferOwnershipMetadataManager$Injector;)V
-PLcom/android/server/devicepolicy/TransferOwnershipMetadataManager;->metadataFileExists()Z
-PLcom/android/server/devicestate/DeviceState;-><init>(ILjava/lang/String;I)V
-PLcom/android/server/devicestate/DeviceState;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/devicestate/DeviceState;->getIdentifier()I
-PLcom/android/server/devicestate/DeviceState;->getName()Ljava/lang/String;
-PLcom/android/server/devicestate/DeviceState;->hasFlag(I)Z
-PLcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda0;-><init>()V
PLcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda0;->setDebugTracingDeviceStateProperty(Ljava/lang/String;)V
PLcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
-PLcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
-PLcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
-PLcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda4;->run()V
-PLcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
-PLcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;I)V
PLcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda6;->run()V
PLcom/android/server/devicestate/DeviceStateManagerService$1;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
PLcom/android/server/devicestate/DeviceStateManagerService$1;->onForegroundActivitiesChanged(IIZ)V
PLcom/android/server/devicestate/DeviceStateManagerService$1;->onForegroundServicesChanged(III)V
PLcom/android/server/devicestate/DeviceStateManagerService$1;->onProcessDied(II)V
PLcom/android/server/devicestate/DeviceStateManagerService$BinderService;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
-PLcom/android/server/devicestate/DeviceStateManagerService$BinderService;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;Lcom/android/server/devicestate/DeviceStateManagerService$BinderService-IA;)V
-PLcom/android/server/devicestate/DeviceStateManagerService$BinderService;->registerCallback(Landroid/hardware/devicestate/IDeviceStateManagerCallback;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$BinderService;->registerCallback(Landroid/hardware/devicestate/IDeviceStateManagerCallback;)Landroid/hardware/devicestate/DeviceStateInfo;
PLcom/android/server/devicestate/DeviceStateManagerService$DeviceStateProviderListener;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
-PLcom/android/server/devicestate/DeviceStateManagerService$DeviceStateProviderListener;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;Lcom/android/server/devicestate/DeviceStateManagerService$DeviceStateProviderListener-IA;)V
-PLcom/android/server/devicestate/DeviceStateManagerService$DeviceStateProviderListener;->onStateChanged(I)V
-PLcom/android/server/devicestate/DeviceStateManagerService$DeviceStateProviderListener;->onSupportedDeviceStatesChanged([Lcom/android/server/devicestate/DeviceState;I)V
+PLcom/android/server/devicestate/DeviceStateManagerService$HalService;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$HalService;->getMaxTransactionId()I
+PLcom/android/server/devicestate/DeviceStateManagerService$HalService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
PLcom/android/server/devicestate/DeviceStateManagerService$LocalService;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
-PLcom/android/server/devicestate/DeviceStateManagerService$LocalService;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;Lcom/android/server/devicestate/DeviceStateManagerService$LocalService-IA;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$LocalService;->getSupportedStateIdentifiers()[I
PLcom/android/server/devicestate/DeviceStateManagerService$OverrideRequestScreenObserver;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
-PLcom/android/server/devicestate/DeviceStateManagerService$OverrideRequestScreenObserver;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;Lcom/android/server/devicestate/DeviceStateManagerService$OverrideRequestScreenObserver-IA;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$OverrideRequestScreenObserver;->onAwakeStateChanged(Z)V
PLcom/android/server/devicestate/DeviceStateManagerService$OverrideRequestScreenObserver;->onKeyguardStateChanged(Z)V
-PLcom/android/server/devicestate/DeviceStateManagerService$ProcessRecord$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService$ProcessRecord;Landroid/hardware/devicestate/DeviceStateInfo;)V
-PLcom/android/server/devicestate/DeviceStateManagerService$ProcessRecord$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/devicestate/DeviceStateManagerService$ProcessRecord;->$r8$lambda$nIhPLI20eH9RacaP39kxGqE_dy4(Lcom/android/server/devicestate/DeviceStateManagerService$ProcessRecord;Landroid/hardware/devicestate/DeviceStateInfo;)V
-PLcom/android/server/devicestate/DeviceStateManagerService$ProcessRecord;-><init>(Landroid/hardware/devicestate/IDeviceStateManagerCallback;ILcom/android/server/devicestate/DeviceStateManagerService$ProcessRecord$DeathListener;Landroid/os/Handler;)V
-PLcom/android/server/devicestate/DeviceStateManagerService$ProcessRecord;->lambda$notifyDeviceStateInfoAsync$0(Landroid/hardware/devicestate/DeviceStateInfo;)V
-PLcom/android/server/devicestate/DeviceStateManagerService$ProcessRecord;->notifyDeviceStateInfoAsync(Landroid/hardware/devicestate/DeviceStateInfo;)V
-PLcom/android/server/devicestate/DeviceStateManagerService;->$r8$lambda$6S_FM3Urv4lHJLVX2jHkYwHw8e8(Lcom/android/server/devicestate/DeviceStateManagerService;)V
-PLcom/android/server/devicestate/DeviceStateManagerService;->$r8$lambda$77DysMvX-MjvuW05plFI2snaWgo(Ljava/lang/String;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$ProcessRecord;-><init>(Landroid/hardware/devicestate/IDeviceStateManagerCallback;ILcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda1;Landroid/os/Handler;)V
PLcom/android/server/devicestate/DeviceStateManagerService;->$r8$lambda$Pt9nYBQnPB5YrI3sLG37X4OCyMY(Lcom/android/server/devicestate/DeviceStateManagerService;)V
-PLcom/android/server/devicestate/DeviceStateManagerService;->-$$Nest$fgetmLock(Lcom/android/server/devicestate/DeviceStateManagerService;)Ljava/lang/Object;
-PLcom/android/server/devicestate/DeviceStateManagerService;->-$$Nest$mregisterProcess(Lcom/android/server/devicestate/DeviceStateManagerService;ILandroid/hardware/devicestate/IDeviceStateManagerCallback;)V
-PLcom/android/server/devicestate/DeviceStateManagerService;->-$$Nest$msetBaseState(Lcom/android/server/devicestate/DeviceStateManagerService;I)V
-PLcom/android/server/devicestate/DeviceStateManagerService;->-$$Nest$mshouldCancelOverrideRequestWhenRequesterNotOnTop(Lcom/android/server/devicestate/DeviceStateManagerService;)Z
-PLcom/android/server/devicestate/DeviceStateManagerService;->-$$Nest$mupdateSupportedStates(Lcom/android/server/devicestate/DeviceStateManagerService;[Lcom/android/server/devicestate/DeviceState;I)V
+PLcom/android/server/devicestate/DeviceStateManagerService;->-$$Nest$mdumpInternal(Lcom/android/server/devicestate/DeviceStateManagerService;Ljava/io/PrintWriter;)V
+PLcom/android/server/devicestate/DeviceStateManagerService;->-$$Nest$mregisterProcess(Lcom/android/server/devicestate/DeviceStateManagerService;ILandroid/hardware/devicestate/IDeviceStateManagerCallback;)Landroid/hardware/devicestate/DeviceStateInfo;
+PLcom/android/server/devicestate/DeviceStateManagerService;-><clinit>()V
PLcom/android/server/devicestate/DeviceStateManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/devicestate/DeviceStateManagerService;-><init>(Landroid/content/Context;Lcom/android/server/devicestate/DeviceStatePolicy;)V
PLcom/android/server/devicestate/DeviceStateManagerService;-><init>(Landroid/content/Context;Lcom/android/server/devicestate/DeviceStatePolicy;Lcom/android/server/devicestate/DeviceStateManagerService$SystemPropertySetter;)V
-PLcom/android/server/devicestate/DeviceStateManagerService;->commitPendingState()V
PLcom/android/server/devicestate/DeviceStateManagerService;->getDeviceStateInfoLocked()Landroid/hardware/devicestate/DeviceStateInfo;
+PLcom/android/server/devicestate/DeviceStateManagerService;->getOverrideState()Ljava/util/Optional;
PLcom/android/server/devicestate/DeviceStateManagerService;->getStateLocked(I)Ljava/util/Optional;
PLcom/android/server/devicestate/DeviceStateManagerService;->getSupportedStateIdentifiersLocked()[I
-PLcom/android/server/devicestate/DeviceStateManagerService;->isSupportedStateLocked(I)Z
-PLcom/android/server/devicestate/DeviceStateManagerService;->lambda$new$0(Ljava/lang/String;)V
+PLcom/android/server/devicestate/DeviceStateManagerService;->getSupportedStatesLocked()Ljava/util/List;
PLcom/android/server/devicestate/DeviceStateManagerService;->notifyDeviceStateInfoChangedAsync()V
-PLcom/android/server/devicestate/DeviceStateManagerService;->notifyPolicyIfNeeded()V
PLcom/android/server/devicestate/DeviceStateManagerService;->onStart()V
-PLcom/android/server/devicestate/DeviceStateManagerService;->readFoldedStates()Ljava/util/Set;
-PLcom/android/server/devicestate/DeviceStateManagerService;->readStatesAvailableForRequestFromApps()V
-PLcom/android/server/devicestate/DeviceStateManagerService;->registerProcess(ILandroid/hardware/devicestate/IDeviceStateManagerCallback;)V
PLcom/android/server/devicestate/DeviceStateManagerService;->setBaseState(I)V
-PLcom/android/server/devicestate/DeviceStateManagerService;->setRearDisplayStateLocked()V
PLcom/android/server/devicestate/DeviceStateManagerService;->shouldCancelOverrideRequestWhenRequesterNotOnTop()Z
PLcom/android/server/devicestate/DeviceStateManagerService;->updatePendingStateLocked()Z
-PLcom/android/server/devicestate/DeviceStateManagerService;->updateSupportedStates([Lcom/android/server/devicestate/DeviceState;I)V
PLcom/android/server/devicestate/DeviceStateNotificationController$NotificationInfoProvider;-><init>(Landroid/content/Context;)V
-PLcom/android/server/devicestate/DeviceStateNotificationController;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/Runnable;)V
PLcom/android/server/devicestate/DeviceStateNotificationController;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/Runnable;Lcom/android/server/devicestate/DeviceStateNotificationController$NotificationInfoProvider;Landroid/content/pm/PackageManager;Landroid/app/NotificationManager;)V
-PLcom/android/server/devicestate/DeviceStatePolicy$DefaultProvider;-><init>()V
-PLcom/android/server/devicestate/DeviceStatePolicy$DefaultProvider;->instantiate(Landroid/content/Context;)Lcom/android/server/devicestate/DeviceStatePolicy;
-PLcom/android/server/devicestate/DeviceStatePolicy$Provider;->fromResources(Landroid/content/res/Resources;)Lcom/android/server/devicestate/DeviceStatePolicy$Provider;
-PLcom/android/server/devicestate/DeviceStatePolicy;-><init>(Landroid/content/Context;)V
-PLcom/android/server/devicestate/OverrideRequestController;-><init>(Lcom/android/server/devicestate/OverrideRequestController$StatusChangeListener;)V
-PLcom/android/server/devicestate/OverrideRequestController;->cancelStickyRequest()V
-PLcom/android/server/devicestate/OverrideRequestController;->handleBaseStateChanged(I)V
-PLcom/android/server/devicestate/OverrideRequestController;->handleNewSupportedStates([II)V
-PLcom/android/server/devicestate/OverrideRequestController;->setStickyRequestsAllowed(Z)V
-HSPLcom/android/server/display/BrightnessMappingStrategy;-><clinit>()V
+PLcom/android/server/devicestate/OverrideRequestController;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda1;)V
+PLcom/android/server/devicestate/OverrideRequestController;->dumpInternal(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/AutomaticBrightnessController$1;-><init>(Lcom/android/server/display/AutomaticBrightnessController;)V
+HPLcom/android/server/display/AutomaticBrightnessController$1;->run()V
+PLcom/android/server/display/AutomaticBrightnessController$2;-><init>(Lcom/android/server/display/AutomaticBrightnessController;)V
+PLcom/android/server/display/AutomaticBrightnessController$2;->onAccuracyChanged(Landroid/hardware/Sensor;I)V
+HPLcom/android/server/display/AutomaticBrightnessController$2;->onSensorChanged(Landroid/hardware/SensorEvent;)V
+HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->getTime(I)J
+HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->prune(J)V
+PLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->toString()Ljava/lang/String;
+PLcom/android/server/display/AutomaticBrightnessController$AutomaticBrightnessHandler;-><init>(Lcom/android/server/display/AutomaticBrightnessController;Landroid/os/Looper;)V
+HPLcom/android/server/display/AutomaticBrightnessController$AutomaticBrightnessHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/display/AutomaticBrightnessController$RealClock;-><init>(Z)V
+HPLcom/android/server/display/AutomaticBrightnessController$RealClock;->getSensorEventScaleTime()J
+PLcom/android/server/display/AutomaticBrightnessController$ShortTermModel;->-$$Nest$mmaybeReset(Lcom/android/server/display/AutomaticBrightnessController$ShortTermModel;F)Z
+PLcom/android/server/display/AutomaticBrightnessController$ShortTermModel;-><init>(Lcom/android/server/display/AutomaticBrightnessController;)V
+PLcom/android/server/display/AutomaticBrightnessController$ShortTermModel;->toString()Ljava/lang/String;
+PLcom/android/server/display/AutomaticBrightnessController$TaskStackListenerImpl;-><init>(Lcom/android/server/display/AutomaticBrightnessController;)V
+PLcom/android/server/display/AutomaticBrightnessController$TaskStackListenerImpl;->onTaskStackChanged()V
+PLcom/android/server/display/AutomaticBrightnessController;-><init>(Lcom/android/server/display/AutomaticBrightnessController$Injector;Lcom/android/server/display/AutomaticBrightnessController$Callbacks;Landroid/os/Looper;Landroid/hardware/SensorManager;Landroid/hardware/Sensor;Landroid/util/SparseArray;IFFFIIJJJJZLcom/android/server/display/config/HysteresisLevels;Lcom/android/server/display/config/HysteresisLevels;Lcom/android/server/display/config/HysteresisLevels;Lcom/android/server/display/config/HysteresisLevels;Landroid/content/Context;Lcom/android/server/display/BrightnessRangeController;Lcom/android/server/display/BrightnessThrottler;IIFFLcom/android/server/display/feature/DisplayManagerFlags;)V
+HPLcom/android/server/display/AutomaticBrightnessController;->calculateAmbientLux(JJ)F
+HPLcom/android/server/display/AutomaticBrightnessController;->clampScreenBrightness(F)F
+HPLcom/android/server/display/AutomaticBrightnessController;->configure(ILandroid/hardware/display/BrightnessConfiguration;FZFZIIZZ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/BrightnessMappingStrategy;Lcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;
+HPLcom/android/server/display/AutomaticBrightnessController;->getAutomaticScreenBrightness(Lcom/android/server/display/brightness/BrightnessEvent;)F+]Lcom/android/server/display/BrightnessMappingStrategy;Lcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;
+PLcom/android/server/display/AutomaticBrightnessController;->isInIdleMode()Z
+HPLcom/android/server/display/AutomaticBrightnessController;->nextAmbientLightBrighteningTransition(J)J
+HPLcom/android/server/display/AutomaticBrightnessController;->nextAmbientLightDarkeningTransition(J)J
+PLcom/android/server/display/AutomaticBrightnessController;->resetShortTermModel()V
+HPLcom/android/server/display/AutomaticBrightnessController;->setAmbientLux(F)V
+HPLcom/android/server/display/AutomaticBrightnessController;->setLightSensorEnabled(Z)Z+]Landroid/app/IActivityTaskManager;Lcom/android/server/wm/ActivityTaskManagerService;]Landroid/hardware/SensorManager;Landroid/hardware/SystemSensorManager;
+PLcom/android/server/display/AutomaticBrightnessController;->setScreenBrightnessByUser(FF)Z
+HPLcom/android/server/display/AutomaticBrightnessController;->shouldApplyDozeScaleFactor()Z+]Lcom/android/server/display/BrightnessMappingStrategy;Lcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;
+HPLcom/android/server/display/AutomaticBrightnessController;->switchMode(IZ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/BrightnessMappingStrategy;Lcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;
+HPLcom/android/server/display/AutomaticBrightnessController;->updateAmbientLux(J)V
+HPLcom/android/server/display/AutomaticBrightnessController;->updateAutoBrightness(ZZ)V
+HPLcom/android/server/display/AutomaticBrightnessController;->updateForegroundApp()V
+PLcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;FLjava/io/PrintWriter;Ljava/lang/String;)Ljava/lang/StringBuilder;
+PLcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;-><init>([F[FFJII)V
+PLcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;->addUserDataPoint(FF)V
+PLcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;->clearUserDataPoints()V
+PLcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;->computeSpline$1()V
+PLcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;->convertToAdjustedNits(F)F
+PLcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;->convertToNits(F)F
+PLcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;->dump(Ljava/io/PrintWriter;F)V
+PLcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;->getAutoBrightnessAdjustment()F
+PLcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;->getBrightness(FILjava/lang/String;)F
+HPLcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;->getMode()I
+PLcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;->getShortTermModelTimeout()J
+PLcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;->getUserBrightness()F
+PLcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;->getUserLux()F
+PLcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;->hasUserDataPoints()Z
+PLcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;->setBrightnessConfiguration(Landroid/hardware/display/BrightnessConfiguration;)Z
+PLcom/android/server/display/BrightnessMappingStrategy;-><clinit>()V
PLcom/android/server/display/BrightnessMappingStrategy;->create(Landroid/content/Context;Lcom/android/server/display/DisplayDeviceConfig;ILcom/android/server/display/whitebalance/DisplayWhiteBalanceController;)Lcom/android/server/display/BrightnessMappingStrategy;
-HSPLcom/android/server/display/BrightnessMappingStrategy;->getFloatArray(Landroid/content/res/TypedArray;)[F
+PLcom/android/server/display/BrightnessMappingStrategy;->getAdjustedCurve([F[FFFFF)Landroid/util/Pair;
+PLcom/android/server/display/BrightnessMappingStrategy;->inferAutoBrightnessAdjustment(FFF)F
+PLcom/android/server/display/BrightnessMappingStrategy;->insertControlPoint([F[FFF)Landroid/util/Pair;
PLcom/android/server/display/BrightnessMappingStrategy;->isValidMapping([F[F)Z
-PLcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda4;-><init>(Ljava/lang/Runnable;)V
+PLcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/display/BrightnessRangeController;F)V
+PLcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda2;->getAsBoolean()Z
+PLcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/display/BrightnessRangeController;F)V
+HPLcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda4;-><init>(Ljava/lang/Object;)V
PLcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/display/BrightnessRangeController;I)V
-PLcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda5;->getAsBoolean()Z
+HPLcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda5;->getAsBoolean()Z
PLcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/display/BrightnessRangeController;I)V
-PLcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda6;->run()V
-PLcom/android/server/display/BrightnessRangeController;->$r8$lambda$dKtp9_j8KRcoYxWMg8d00hzlVN0(Lcom/android/server/display/BrightnessRangeController;I)V
-PLcom/android/server/display/BrightnessRangeController;->$r8$lambda$zpmKQQW2rDvBS46nbBqX3mXvWvI(Lcom/android/server/display/BrightnessRangeController;I)Z
-PLcom/android/server/display/BrightnessRangeController;-><init>(Lcom/android/server/display/HighBrightnessModeController;Ljava/lang/Runnable;Lcom/android/server/display/DisplayDeviceConfig;Landroid/os/Handler;Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/os/IBinder;Lcom/android/server/display/DisplayDeviceInfo;)V
-PLcom/android/server/display/BrightnessRangeController;-><init>(Lcom/android/server/display/HighBrightnessModeController;Ljava/lang/Runnable;Lcom/android/server/display/DisplayDeviceConfig;Lcom/android/server/display/brightness/clamper/HdrClamper;Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/os/IBinder;Lcom/android/server/display/DisplayDeviceInfo;)V
-PLcom/android/server/display/BrightnessRangeController;->applyChanges(Ljava/util/function/BooleanSupplier;Ljava/lang/Runnable;)V
+HPLcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/display/BrightnessRangeController;-><init>(Lcom/android/server/display/HighBrightnessModeController;Ljava/lang/Runnable;Lcom/android/server/display/DisplayDeviceConfig;Lcom/android/server/display/NormalBrightnessModeController;Lcom/android/server/display/brightness/clamper/HdrClamper;Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/os/IBinder;Lcom/android/server/display/DisplayDeviceInfo;)V
+HPLcom/android/server/display/BrightnessRangeController;->applyChanges(Ljava/util/function/BooleanSupplier;Ljava/lang/Runnable;)V+]Ljava/lang/Runnable;Lcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda3;,Lcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda6;]Ljava/util/function/BooleanSupplier;Lcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda2;,Lcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda5;
HPLcom/android/server/display/BrightnessRangeController;->getCurrentBrightnessMax()F
-PLcom/android/server/display/BrightnessRangeController;->getCurrentBrightnessMin()F
-PLcom/android/server/display/BrightnessRangeController;->getHighBrightnessMode()I
-PLcom/android/server/display/BrightnessRangeController;->getTransitionPoint()F
-PLcom/android/server/display/BrightnessRangeController;->lambda$setAutoBrightnessEnabled$4(I)Z
-PLcom/android/server/display/BrightnessRangeController;->lambda$setAutoBrightnessEnabled$5(I)V
-PLcom/android/server/display/BrightnessRangeController;->onBrightnessChanged(FFI)V
-PLcom/android/server/display/BrightnessRangeController;->setAutoBrightnessEnabled(I)V
+PLcom/android/server/display/BrightnessRangeController;->onAmbientLuxChange(F)V
PLcom/android/server/display/BrightnessRangeController;->updateHdrClamper(Lcom/android/server/display/DisplayDeviceInfo;Landroid/os/IBinder;Lcom/android/server/display/DisplayDeviceConfig;)V
PLcom/android/server/display/BrightnessSetting$1;-><init>(Lcom/android/server/display/BrightnessSetting;Landroid/os/Looper;)V
+HPLcom/android/server/display/BrightnessSetting$1;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/display/BrightnessSetting;-><init>(ILcom/android/server/display/PersistentDataStore;Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/DisplayManagerService$SyncRoot;)V
-PLcom/android/server/display/BrightnessSetting;->getBrightness()F
-PLcom/android/server/display/BrightnessSetting;->registerListener(Lcom/android/server/display/BrightnessSetting$BrightnessSettingListener;)V
-PLcom/android/server/display/BrightnessThrottler$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/display/BrightnessThrottler$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/display/BrightnessThrottler$$ExternalSyntheticLambda2;-><init>(ILjava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/display/BrightnessThrottler$$ExternalSyntheticLambda2;->run()V
PLcom/android/server/display/BrightnessThrottler$DeviceConfigListener;-><init>(Lcom/android/server/display/BrightnessThrottler;)V
-PLcom/android/server/display/BrightnessThrottler$DeviceConfigListener;->startListening()V
-PLcom/android/server/display/BrightnessThrottler$Injector;-><init>()V
-PLcom/android/server/display/BrightnessThrottler$Injector;->getDeviceConfig()Landroid/provider/DeviceConfigInterface;
+PLcom/android/server/display/BrightnessThrottler$DeviceConfigListener;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
PLcom/android/server/display/BrightnessThrottler$SkinThermalStatusObserver;-><init>(Lcom/android/server/display/BrightnessThrottler;Lcom/android/server/display/BrightnessThrottler$Injector;Landroid/os/Handler;)V
PLcom/android/server/display/BrightnessThrottler$SkinThermalStatusObserver;->stopObserving()V
-PLcom/android/server/display/BrightnessThrottler;->-$$Nest$fgetmConfigParameterProvider(Lcom/android/server/display/BrightnessThrottler;)Lcom/android/server/display/feature/DeviceConfigParameterProvider;
-PLcom/android/server/display/BrightnessThrottler;->-$$Nest$fgetmDeviceConfigHandler(Lcom/android/server/display/BrightnessThrottler;)Landroid/os/Handler;
-PLcom/android/server/display/BrightnessThrottler;->-$$Nest$sfgetDEBUG()Z
PLcom/android/server/display/BrightnessThrottler;-><clinit>()V
-PLcom/android/server/display/BrightnessThrottler;-><init>(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/String;Ljava/lang/String;Ljava/util/HashMap;)V
-PLcom/android/server/display/BrightnessThrottler;-><init>(Lcom/android/server/display/BrightnessThrottler$Injector;Landroid/os/Handler;Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/String;Ljava/lang/String;Ljava/util/HashMap;)V
-PLcom/android/server/display/BrightnessThrottler;->deviceSupportsThrottling()Z
+PLcom/android/server/display/BrightnessThrottler;-><init>(Lcom/android/server/display/BrightnessThrottler$Injector;Landroid/os/Handler;Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lcom/android/server/display/config/SensorData;)V
PLcom/android/server/display/BrightnessThrottler;->getConfigFromId(Ljava/lang/String;)Lcom/android/server/display/DisplayDeviceConfig$ThermalBrightnessThrottlingData;
PLcom/android/server/display/BrightnessThrottler;->loadThermalBrightnessThrottlingDataFromDeviceConfig()V
-PLcom/android/server/display/BrightnessThrottler;->loadThermalBrightnessThrottlingDataFromDisplayDeviceConfig(Ljava/util/HashMap;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/display/BrightnessThrottler;->resetThermalThrottlingData()V
-PLcom/android/server/display/BrightnessThrottler;->stop()V
+PLcom/android/server/display/BrightnessTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/BrightnessTracker;Ljava/io/PrintWriter;)V
+PLcom/android/server/display/BrightnessTracker$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/display/BrightnessTracker$DisplayListener;-><init>(Lcom/android/server/display/BrightnessTracker;)V
+HPLcom/android/server/display/BrightnessTracker$DisplayListener;->onDisplayChanged(I)V
PLcom/android/server/display/BrightnessTracker$Injector;-><init>()V
-PLcom/android/server/display/BrightnessTracker$Injector;->getBackgroundHandler()Landroid/os/Handler;
+PLcom/android/server/display/BrightnessTracker$Injector;->isBrightnessModeAutomatic(Landroid/content/ContentResolver;)Z
PLcom/android/server/display/BrightnessTracker$TrackerHandler;-><init>(Lcom/android/server/display/BrightnessTracker;Landroid/os/Looper;)V
+PLcom/android/server/display/BrightnessTracker$TrackerHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/display/BrightnessTracker;-><clinit>()V
-PLcom/android/server/display/BrightnessTracker;-><init>(Landroid/content/Context;Lcom/android/server/display/BrightnessTracker$Injector;)V
-HSPLcom/android/server/display/DeviceStateToLayoutMap;-><clinit>()V
-HSPLcom/android/server/display/DeviceStateToLayoutMap;-><init>(Lcom/android/server/display/layout/DisplayIdProducer;Lcom/android/server/display/feature/DisplayManagerFlags;)V
-HSPLcom/android/server/display/DeviceStateToLayoutMap;-><init>(Lcom/android/server/display/layout/DisplayIdProducer;Lcom/android/server/display/feature/DisplayManagerFlags;Ljava/io/File;)V
+PLcom/android/server/display/BrightnessTracker;-><init>(Landroid/content/Context;)V
+PLcom/android/server/display/BrightnessTracker;->disableColorSampling()V
+PLcom/android/server/display/BrightnessTracker;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/BrightnessTracker;->enableColorSampling()V
+PLcom/android/server/display/BrightnessTracker;->startDisplayListener()V
+PLcom/android/server/display/BrightnessTracker;->startSensorListener()V
+PLcom/android/server/display/BrightnessTracker;->stopSensorListener()V
+HSPLcom/android/server/display/DeviceStateToLayoutMap;-><init>(Lcom/android/server/display/LogicalDisplayMapper$$ExternalSyntheticLambda2;Lcom/android/server/display/feature/DisplayManagerFlags;)V
HSPLcom/android/server/display/DeviceStateToLayoutMap;->createLayout(I)Lcom/android/server/display/layout/Layout;
HSPLcom/android/server/display/DeviceStateToLayoutMap;->get(I)Lcom/android/server/display/layout/Layout;
-HSPLcom/android/server/display/DeviceStateToLayoutMap;->getConfigFile()Ljava/io/File;
HSPLcom/android/server/display/DeviceStateToLayoutMap;->loadLayoutsFromConfig(Ljava/io/File;)V
-HSPLcom/android/server/display/DeviceStateToLayoutMap;->size()I
HSPLcom/android/server/display/DisplayAdapter$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/DisplayAdapter;)V
HSPLcom/android/server/display/DisplayAdapter$$ExternalSyntheticLambda0;->run()V
HSPLcom/android/server/display/DisplayAdapter$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/display/DisplayAdapter;Lcom/android/server/display/DisplayDevice;I)V
HSPLcom/android/server/display/DisplayAdapter$$ExternalSyntheticLambda1;->run()V
-HSPLcom/android/server/display/DisplayAdapter;->$r8$lambda$9V0Zb4R5pN2d6Ym6JsffUDuLT04(Lcom/android/server/display/DisplayAdapter;)V
-HSPLcom/android/server/display/DisplayAdapter;->$r8$lambda$m53kLy5P6p-BQH88mDK_wnWdYlc(Lcom/android/server/display/DisplayAdapter;Lcom/android/server/display/DisplayDevice;I)V
HSPLcom/android/server/display/DisplayAdapter;-><clinit>()V
HSPLcom/android/server/display/DisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Ljava/lang/String;Lcom/android/server/display/feature/DisplayManagerFlags;)V
-HSPLcom/android/server/display/DisplayAdapter;->createMode(IIFF[F[I)Landroid/view/Display$Mode;
-HSPLcom/android/server/display/DisplayAdapter;->getContext()Landroid/content/Context;
-HSPLcom/android/server/display/DisplayAdapter;->getFeatureFlags()Lcom/android/server/display/feature/DisplayManagerFlags;
-HSPLcom/android/server/display/DisplayAdapter;->getHandler()Landroid/os/Handler;
-PLcom/android/server/display/DisplayAdapter;->getSyncRoot()Lcom/android/server/display/DisplayManagerService$SyncRoot;
-HSPLcom/android/server/display/DisplayAdapter;->lambda$sendDisplayDeviceEventLocked$0(Lcom/android/server/display/DisplayDevice;I)V
-HSPLcom/android/server/display/DisplayAdapter;->lambda$sendTraversalRequestLocked$1()V
-HSPLcom/android/server/display/DisplayAdapter;->registerLocked()V
+PLcom/android/server/display/DisplayAdapter;->dumpLocked(Ljava/io/PrintWriter;)V
HSPLcom/android/server/display/DisplayAdapter;->sendDisplayDeviceEventLocked(Lcom/android/server/display/DisplayDevice;I)V
HSPLcom/android/server/display/DisplayAdapter;->sendTraversalRequestLocked()V
HPLcom/android/server/display/DisplayBrightnessState$Builder;-><init>()V
-PLcom/android/server/display/DisplayBrightnessState$Builder;->build()Lcom/android/server/display/DisplayBrightnessState;
-HPLcom/android/server/display/DisplayBrightnessState$Builder;->from(Lcom/android/server/display/DisplayBrightnessState;)Lcom/android/server/display/DisplayBrightnessState$Builder;
-PLcom/android/server/display/DisplayBrightnessState$Builder;->getBrightness()F
-PLcom/android/server/display/DisplayBrightnessState$Builder;->getBrightnessReason()Lcom/android/server/display/brightness/BrightnessReason;
-PLcom/android/server/display/DisplayBrightnessState$Builder;->getCustomAnimationRate()F
-PLcom/android/server/display/DisplayBrightnessState$Builder;->getDisplayBrightnessStrategyName()Ljava/lang/String;
-PLcom/android/server/display/DisplayBrightnessState$Builder;->getMaxBrightness()F
-PLcom/android/server/display/DisplayBrightnessState$Builder;->getMinBrightness()F
-PLcom/android/server/display/DisplayBrightnessState$Builder;->getSdrBrightness()F
-PLcom/android/server/display/DisplayBrightnessState$Builder;->getShouldUseAutoBrightness()Z
-PLcom/android/server/display/DisplayBrightnessState$Builder;->isSlowChange()Z
-PLcom/android/server/display/DisplayBrightnessState$Builder;->setBrightness(F)Lcom/android/server/display/DisplayBrightnessState$Builder;
-PLcom/android/server/display/DisplayBrightnessState$Builder;->setBrightnessReason(Lcom/android/server/display/brightness/BrightnessReason;)Lcom/android/server/display/DisplayBrightnessState$Builder;
-PLcom/android/server/display/DisplayBrightnessState$Builder;->setCustomAnimationRate(F)Lcom/android/server/display/DisplayBrightnessState$Builder;
-PLcom/android/server/display/DisplayBrightnessState$Builder;->setDisplayBrightnessStrategyName(Ljava/lang/String;)Lcom/android/server/display/DisplayBrightnessState$Builder;
-PLcom/android/server/display/DisplayBrightnessState$Builder;->setIsSlowChange(Z)Lcom/android/server/display/DisplayBrightnessState$Builder;
-PLcom/android/server/display/DisplayBrightnessState$Builder;->setMaxBrightness(F)Lcom/android/server/display/DisplayBrightnessState$Builder;
-PLcom/android/server/display/DisplayBrightnessState$Builder;->setMinBrightness(F)Lcom/android/server/display/DisplayBrightnessState$Builder;
-PLcom/android/server/display/DisplayBrightnessState$Builder;->setSdrBrightness(F)Lcom/android/server/display/DisplayBrightnessState$Builder;
-PLcom/android/server/display/DisplayBrightnessState$Builder;->setShouldUpdateScreenBrightnessSetting(Z)Lcom/android/server/display/DisplayBrightnessState$Builder;
-PLcom/android/server/display/DisplayBrightnessState$Builder;->setShouldUseAutoBrightness(Z)Lcom/android/server/display/DisplayBrightnessState$Builder;
-PLcom/android/server/display/DisplayBrightnessState$Builder;->shouldUpdateScreenBrightnessSetting()Z
HPLcom/android/server/display/DisplayBrightnessState;-><init>(Lcom/android/server/display/DisplayBrightnessState$Builder;)V
-PLcom/android/server/display/DisplayBrightnessState;-><init>(Lcom/android/server/display/DisplayBrightnessState$Builder;Lcom/android/server/display/DisplayBrightnessState-IA;)V
-PLcom/android/server/display/DisplayBrightnessState;->builder()Lcom/android/server/display/DisplayBrightnessState$Builder;
-PLcom/android/server/display/DisplayBrightnessState;->getBrightness()F
-PLcom/android/server/display/DisplayBrightnessState;->getBrightnessReason()Lcom/android/server/display/brightness/BrightnessReason;
-PLcom/android/server/display/DisplayBrightnessState;->getCustomAnimationRate()F
-PLcom/android/server/display/DisplayBrightnessState;->getDisplayBrightnessStrategyName()Ljava/lang/String;
-PLcom/android/server/display/DisplayBrightnessState;->getMaxBrightness()F
-PLcom/android/server/display/DisplayBrightnessState;->getMinBrightness()F
-PLcom/android/server/display/DisplayBrightnessState;->getSdrBrightness()F
-PLcom/android/server/display/DisplayBrightnessState;->getShouldUseAutoBrightness()Z
-PLcom/android/server/display/DisplayBrightnessState;->isSlowChange()Z
-PLcom/android/server/display/DisplayBrightnessState;->shouldUpdateScreenBrightnessSetting()Z
PLcom/android/server/display/DisplayControl;->getHdrOutputConversionSupport()Z
HSPLcom/android/server/display/DisplayControl;->getPhysicalDisplayIds()[J
HSPLcom/android/server/display/DisplayControl;->getPhysicalDisplayToken(J)Landroid/os/IBinder;
HSPLcom/android/server/display/DisplayDevice;-><clinit>()V
-HSPLcom/android/server/display/DisplayDevice;-><init>(Lcom/android/server/display/DisplayAdapter;Landroid/os/IBinder;Ljava/lang/String;Landroid/content/Context;)V
+HSPLcom/android/server/display/DisplayDevice;-><init>(Lcom/android/server/display/DisplayAdapter;Landroid/os/IBinder;Ljava/lang/String;Landroid/content/Context;Z)V
+PLcom/android/server/display/DisplayDevice;->dumpLocked(Ljava/io/PrintWriter;)V
PLcom/android/server/display/DisplayDevice;->getDisplayIdToMirrorLocked()I
-PLcom/android/server/display/DisplayDevice;->getDisplayTokenLocked()Landroid/os/IBinder;
-HSPLcom/android/server/display/DisplayDevice;->getUniqueId()Ljava/lang/String;
PLcom/android/server/display/DisplayDevice;->isWindowManagerMirroringLocked()Z
PLcom/android/server/display/DisplayDevice;->performTraversalLocked(Landroid/view/SurfaceControl$Transaction;)V
-HPLcom/android/server/display/DisplayDevice;->populateViewportLocked(Landroid/hardware/display/DisplayViewport;)V
-PLcom/android/server/display/DisplayDevice;->setDisplayFlagsLocked(Landroid/view/SurfaceControl$Transaction;I)V
-PLcom/android/server/display/DisplayDevice;->setLayerStackLocked(Landroid/view/SurfaceControl$Transaction;II)V
-HPLcom/android/server/display/DisplayDevice;->setProjectionLocked(Landroid/view/SurfaceControl$Transaction;ILandroid/graphics/Rect;Landroid/graphics/Rect;)V
-PLcom/android/server/display/DisplayDeviceConfig$BrightnessLimitMapType;->$values()[Lcom/android/server/display/DisplayDeviceConfig$BrightnessLimitMapType;
+HSPLcom/android/server/display/DisplayDeviceConfig$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/display/DisplayDeviceConfig;)V
+HSPLcom/android/server/display/DisplayDeviceConfig$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/display/DisplayDeviceConfig$$ExternalSyntheticOutline0;->m([FLjava/lang/StringBuilder;Ljava/lang/String;)V
PLcom/android/server/display/DisplayDeviceConfig$BrightnessLimitMapType;-><clinit>()V
-PLcom/android/server/display/DisplayDeviceConfig$BrightnessLimitMapType;-><init>(Ljava/lang/String;I)V
HSPLcom/android/server/display/DisplayDeviceConfig;-><clinit>()V
HSPLcom/android/server/display/DisplayDeviceConfig;-><init>(Landroid/content/Context;Lcom/android/server/display/feature/DisplayManagerFlags;)V
-HSPLcom/android/server/display/DisplayDeviceConfig;->constraintInRangeIfNeeded([F)[F
-HSPLcom/android/server/display/DisplayDeviceConfig;->copyUninitializedValuesFromSecondaryConfig(Lcom/android/server/display/config/DisplayConfiguration;)V
-HSPLcom/android/server/display/DisplayDeviceConfig;->create(Landroid/content/Context;JZLcom/android/server/display/feature/DisplayManagerFlags;)Lcom/android/server/display/DisplayDeviceConfig;
-HSPLcom/android/server/display/DisplayDeviceConfig;->create(Landroid/content/Context;ZLcom/android/server/display/feature/DisplayManagerFlags;)Lcom/android/server/display/DisplayDeviceConfig;
-HSPLcom/android/server/display/DisplayDeviceConfig;->createWithoutDefaultValues(Landroid/content/Context;JZLcom/android/server/display/feature/DisplayManagerFlags;)Lcom/android/server/display/DisplayDeviceConfig;
-HSPLcom/android/server/display/DisplayDeviceConfig;->getAmbientLightSensor()Lcom/android/server/display/config/SensorData;
-PLcom/android/server/display/DisplayDeviceConfig;->getAutoBrightnessBrighteningLevels(II)[F
-PLcom/android/server/display/DisplayDeviceConfig;->getAutoBrightnessBrighteningLevelsLux(II)[F
-PLcom/android/server/display/DisplayDeviceConfig;->getAutoBrightnessBrighteningLevelsNits()[F
-PLcom/android/server/display/DisplayDeviceConfig;->getBacklightFromBrightness(F)F
-PLcom/android/server/display/DisplayDeviceConfig;->getBrightness()[F
-PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessCapForWearBedtimeMode()F
-HSPLcom/android/server/display/DisplayDeviceConfig;->getBrightnessDefault()F
-HSPLcom/android/server/display/DisplayDeviceConfig;->getBrightnessLevelAndPercentage(Lcom/android/server/display/config/BrightnessThresholds;II[F[F)Landroid/util/Pair;
-HSPLcom/android/server/display/DisplayDeviceConfig;->getBrightnessLevelAndPercentage(Lcom/android/server/display/config/BrightnessThresholds;II[F[FZ)Landroid/util/Pair;
-PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessRampDecreaseMaxIdleMillis()J
-PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessRampDecreaseMaxMillis()J
-PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessRampFastDecrease()F
-PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessRampFastIncrease()F
-PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessRampIncreaseMaxIdleMillis()J
-PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessRampIncreaseMaxMillis()J
-PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessRampSlowDecrease()F
-PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessRampSlowDecreaseIdle()F
-PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessRampSlowIncrease()F
-PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessRampSlowIncreaseIdle()F
-HSPLcom/android/server/display/DisplayDeviceConfig;->getConfigFromGlobalXml(Landroid/content/Context;Lcom/android/server/display/feature/DisplayManagerFlags;)Lcom/android/server/display/DisplayDeviceConfig;
+HSPLcom/android/server/display/DisplayDeviceConfig;->constrainNitsAndBacklightArrays()V
+HPLcom/android/server/display/DisplayDeviceConfig;->getAutoBrightnessBrighteningLevels(II)[F+]Ljava/util/Map;Ljava/util/HashMap;
+HPLcom/android/server/display/DisplayDeviceConfig;->getAutoBrightnessBrighteningLevelsLux(II)[F+]Ljava/util/Map;Ljava/util/HashMap;
+HSPLcom/android/server/display/DisplayDeviceConfig;->getBrightnessFromBacklight(F)F
HSPLcom/android/server/display/DisplayDeviceConfig;->getConfigFromSuffix(Landroid/content/Context;Ljava/io/File;Ljava/lang/String;JLcom/android/server/display/feature/DisplayManagerFlags;)Lcom/android/server/display/DisplayDeviceConfig;
-HSPLcom/android/server/display/DisplayDeviceConfig;->getDefaultHighBlockingZoneRefreshRate()I
-HSPLcom/android/server/display/DisplayDeviceConfig;->getDefaultLowBlockingZoneRefreshRate()I
-HSPLcom/android/server/display/DisplayDeviceConfig;->getDefaultPeakRefreshRate()I
-HSPLcom/android/server/display/DisplayDeviceConfig;->getDefaultRefreshRate()I
-HSPLcom/android/server/display/DisplayDeviceConfig;->getDefaultRefreshRateInHbmHdr()I
-HSPLcom/android/server/display/DisplayDeviceConfig;->getDefaultRefreshRateInHbmSunlight()I
-HSPLcom/android/server/display/DisplayDeviceConfig;->getDensityMapping()Lcom/android/server/display/DensityMapping;
-HSPLcom/android/server/display/DisplayDeviceConfig;->getFirstExistingFile(Ljava/util/Collection;)Ljava/io/File;
-HSPLcom/android/server/display/DisplayDeviceConfig;->getFloatArray(Landroid/content/res/TypedArray;F)[F
-PLcom/android/server/display/DisplayDeviceConfig;->getHdrBrightnessData()Lcom/android/server/display/config/HdrBrightnessData;
-HSPLcom/android/server/display/DisplayDeviceConfig;->getHighAmbientBrightnessThresholds()[F
-HSPLcom/android/server/display/DisplayDeviceConfig;->getHighBlockingZoneThermalMap()Landroid/util/SparseArray;
-PLcom/android/server/display/DisplayDeviceConfig;->getHighBrightnessModeData()Lcom/android/server/display/DisplayDeviceConfig$HighBrightnessModeData;
-HSPLcom/android/server/display/DisplayDeviceConfig;->getHighDisplayBrightnessThresholds()[F
-HSPLcom/android/server/display/DisplayDeviceConfig;->getLowAmbientBrightnessThresholds()[F
-HSPLcom/android/server/display/DisplayDeviceConfig;->getLowBlockingZoneThermalMap()Landroid/util/SparseArray;
-HSPLcom/android/server/display/DisplayDeviceConfig;->getLowDisplayBrightnessThresholds()[F
-HSPLcom/android/server/display/DisplayDeviceConfig;->getLuxLevels([I)[F
-PLcom/android/server/display/DisplayDeviceConfig;->getLuxThrottlingData()Ljava/util/Map;
-HSPLcom/android/server/display/DisplayDeviceConfig;->getName()Ljava/lang/String;
-PLcom/android/server/display/DisplayDeviceConfig;->getNits()[F
PLcom/android/server/display/DisplayDeviceConfig;->getNitsFromBacklight(F)F
-PLcom/android/server/display/DisplayDeviceConfig;->getPowerThrottlingConfigData()Lcom/android/server/display/DisplayDeviceConfig$PowerThrottlingConfigData;
-PLcom/android/server/display/DisplayDeviceConfig;->getPowerThrottlingDataMapByThrottlingId()Ljava/util/HashMap;
-PLcom/android/server/display/DisplayDeviceConfig;->getProximitySensor()Lcom/android/server/display/config/SensorData;
-HSPLcom/android/server/display/DisplayDeviceConfig;->getRefreshRange(Ljava/lang/String;)Landroid/view/SurfaceControl$RefreshRateRange;
-PLcom/android/server/display/DisplayDeviceConfig;->getThermalBrightnessThrottlingDataMapByThrottlingId()Ljava/util/HashMap;
-HSPLcom/android/server/display/DisplayDeviceConfig;->getThermalRefreshRateThrottlingData(Ljava/lang/String;)Landroid/util/SparseArray;
-HSPLcom/android/server/display/DisplayDeviceConfig;->hasQuirk(Ljava/lang/String;)Z
-PLcom/android/server/display/DisplayDeviceConfig;->hasSdrToHdrRatioSpline()Z
HSPLcom/android/server/display/DisplayDeviceConfig;->initFromFile(Ljava/io/File;)Z
-HSPLcom/android/server/display/DisplayDeviceConfig;->initFromGlobalXml()V
-HSPLcom/android/server/display/DisplayDeviceConfig;->isAllInRange([FFF)Z
-PLcom/android/server/display/DisplayDeviceConfig;->isAutoBrightnessAvailable()Z
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadAmbientBrightnessThresholds(Lcom/android/server/display/config/DisplayConfiguration;)V
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadAmbientBrightnessThresholdsIdle(Lcom/android/server/display/config/DisplayConfiguration;)V
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadAutoBrightnessAvailableFromConfigXml()V
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadAutoBrightnessConfigsFromConfigXml()V
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadBrightnessCapForWearBedtimeModeFromConfigXml()V
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadBrightnessChangeThresholds(Lcom/android/server/display/config/DisplayConfiguration;)V
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadBrightnessChangeThresholdsFromXml()V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadAutoBrightnessConfigValues(Lcom/android/server/display/config/DisplayConfiguration;)V
HSPLcom/android/server/display/DisplayDeviceConfig;->loadBrightnessConstraintsFromConfigXml()V
HSPLcom/android/server/display/DisplayDeviceConfig;->loadBrightnessDefaultFromConfigXml()V
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadBrightnessMapFromConfigXml()V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadBrightnessMap(Lcom/android/server/display/config/DisplayConfiguration;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadBrightnessRamps(Lcom/android/server/display/config/DisplayConfiguration;)V
HSPLcom/android/server/display/DisplayDeviceConfig;->loadBrightnessRampsFromConfigXml()V
HSPLcom/android/server/display/DisplayDeviceConfig;->loadConfigFromDirectory(Landroid/content/Context;Ljava/io/File;JLcom/android/server/display/feature/DisplayManagerFlags;)Lcom/android/server/display/DisplayDeviceConfig;
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadDefaultConfigurationXml(Landroid/content/Context;)Lcom/android/server/display/config/DisplayConfiguration;
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadDefaultRefreshRate(Lcom/android/server/display/config/RefreshRateConfigs;)V
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadDefaultRefreshRateInHbm(Lcom/android/server/display/config/RefreshRateConfigs;)V
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadDisplayBrightnessThresholds(Lcom/android/server/display/config/DisplayConfiguration;)V
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadDisplayBrightnessThresholdsIdle(Lcom/android/server/display/config/DisplayConfiguration;)V
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadHigherBlockingZoneDefaultRefreshRate(Lcom/android/server/display/config/BlockingZoneConfig;)V
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadHigherBrightnessThresholds(Lcom/android/server/display/config/BlockingZoneConfig;)V
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadHigherRefreshRateBlockingZones(Lcom/android/server/display/config/BlockingZoneConfig;)V
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadLowerBlockingZoneDefaultRefreshRate(Lcom/android/server/display/config/BlockingZoneConfig;)V
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadLowerBrightnessThresholds(Lcom/android/server/display/config/BlockingZoneConfig;)V
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadLowerRefreshRateBlockingZones(Lcom/android/server/display/config/BlockingZoneConfig;)V
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadPeakDefaultRefreshRate(Lcom/android/server/display/config/RefreshRateConfigs;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadDensityMapping(Lcom/android/server/display/config/DisplayConfiguration;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadDozeBrightness(Lcom/android/server/display/config/DisplayConfiguration;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadIdleScreenRefreshRateTimeoutConfigs(Lcom/android/server/display/config/DisplayConfiguration;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadLuxThrottling(Lcom/android/server/display/config/DisplayConfiguration;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadPowerThrottlingConfigData(Lcom/android/server/display/config/DisplayConfiguration;)V
HSPLcom/android/server/display/DisplayDeviceConfig;->loadRefreshRateSetting(Lcom/android/server/display/config/DisplayConfiguration;)V
-HSPLcom/android/server/display/DisplayDeviceConfig;->loadRefreshRateZoneProfiles(Lcom/android/server/display/config/RefreshRateConfigs;)V
-HSPLcom/android/server/display/DisplayDeviceConfig;->setSimpleMappingStrategyValues()V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadThermalThrottlingConfig(Lcom/android/server/display/config/DisplayConfiguration;)V
+PLcom/android/server/display/DisplayDeviceConfig;->toString()Ljava/lang/String;
HSPLcom/android/server/display/DisplayDeviceInfo;-><init>()V
HPLcom/android/server/display/DisplayDeviceInfo;->diff(Lcom/android/server/display/DisplayDeviceInfo;)I
-PLcom/android/server/display/DisplayDeviceInfo;->equals(Lcom/android/server/display/DisplayDeviceInfo;)Z
PLcom/android/server/display/DisplayDeviceInfo;->equals(Ljava/lang/Object;)Z
-HSPLcom/android/server/display/DisplayDeviceInfo;->flagsToString(I)Ljava/lang/String;
HSPLcom/android/server/display/DisplayDeviceInfo;->toString()Ljava/lang/String;
-HSPLcom/android/server/display/DisplayDeviceInfo;->touchToString(I)Ljava/lang/String;
HSPLcom/android/server/display/DisplayDeviceRepository;-><clinit>()V
HSPLcom/android/server/display/DisplayDeviceRepository;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Lcom/android/server/display/PersistentDataStore;)V
-HSPLcom/android/server/display/DisplayDeviceRepository;->addListener(Lcom/android/server/display/DisplayDeviceRepository$Listener;)V
-HSPLcom/android/server/display/DisplayDeviceRepository;->containsLocked(Lcom/android/server/display/DisplayDevice;)Z
+PLcom/android/server/display/DisplayDeviceRepository;->forEachLocked(Ljava/util/function/Consumer;)V
HSPLcom/android/server/display/DisplayDeviceRepository;->getByAddressLocked(Landroid/view/DisplayAddress;)Lcom/android/server/display/DisplayDevice;
-HSPLcom/android/server/display/DisplayDeviceRepository;->handleDisplayDeviceAdded(Lcom/android/server/display/DisplayDevice;)V
-HPLcom/android/server/display/DisplayDeviceRepository;->handleDisplayDeviceChanged(Lcom/android/server/display/DisplayDevice;)V
HSPLcom/android/server/display/DisplayDeviceRepository;->onDisplayDeviceEvent(Lcom/android/server/display/DisplayDevice;I)V
-HSPLcom/android/server/display/DisplayDeviceRepository;->onTraversalRequested()V
-PLcom/android/server/display/DisplayDeviceRepository;->sendChangedEventLocked(Lcom/android/server/display/DisplayDevice;I)V
+HPLcom/android/server/display/DisplayDeviceRepository;->sendChangedEventLocked(Lcom/android/server/display/DisplayDevice;I)V
HSPLcom/android/server/display/DisplayDeviceRepository;->sendEventLocked(Lcom/android/server/display/DisplayDevice;I)V
HSPLcom/android/server/display/DisplayGroup;-><init>(I)V
-HSPLcom/android/server/display/DisplayGroup;->addDisplayLocked(Lcom/android/server/display/LogicalDisplay;)V
-HSPLcom/android/server/display/DisplayGroup;->containsLocked(Lcom/android/server/display/LogicalDisplay;)Z
-HSPLcom/android/server/display/DisplayGroup;->getChangeCountLocked()I
-HPLcom/android/server/display/DisplayGroup;->getIdLocked(I)I
-HPLcom/android/server/display/DisplayGroup;->getSizeLocked()I
-HSPLcom/android/server/display/DisplayGroup;->isEmptyLocked()Z
-HSPLcom/android/server/display/DisplayInfoProxy;-><init>(Landroid/view/DisplayInfo;)V
-HSPLcom/android/server/display/DisplayInfoProxy;->get()Landroid/view/DisplayInfo;
HSPLcom/android/server/display/DisplayInfoProxy;->set(Landroid/view/DisplayInfo;)V
-PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/display/DisplayManagerService;I)V
-PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;)V
-PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda15;-><init>(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/LogicalDisplay;)V
-PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda15;->run()V
-PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/display/DisplayManagerService;)V
-PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/display/DisplayManagerService;Landroid/util/SparseArray;Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
-PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/display/DisplayManagerService;)V
-PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda6;->accept(Ljava/lang/Object;)V
-PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/display/DisplayManagerService;)V
-PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda7;->accept(Ljava/lang/Object;)V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/LogicalDisplay;)V
+HPLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda13;->run()V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/display/DisplayManagerService;II)V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda14;->accept(Ljava/lang/Object;)V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda17;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda17;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/display/DisplayManagerService;I)V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda3;-><init>(ILjava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+HPLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda4;->getDisplayDeviceConfig(I)Lcom/android/server/display/DisplayDeviceConfig;
+HSPLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda7;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;I)V
+HPLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda7;->accept(Ljava/lang/Object;)V
HSPLcom/android/server/display/DisplayManagerService$1;-><init>(Lcom/android/server/display/DisplayManagerService;)V
-PLcom/android/server/display/DisplayManagerService$1;->requestDisplayState(IIFF)V
-HSPLcom/android/server/display/DisplayManagerService$2;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+HSPLcom/android/server/display/DisplayManagerService$2;-><init>(Lcom/android/server/display/DisplayManagerService;I)V
+HPLcom/android/server/display/DisplayManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
HSPLcom/android/server/display/DisplayManagerService$BinderService;-><init>(Lcom/android/server/display/DisplayManagerService;)V
-PLcom/android/server/display/DisplayManagerService$BinderService;->getBrightness(I)F
-PLcom/android/server/display/DisplayManagerService$BinderService;->getBrightnessInfo(I)Landroid/hardware/display/BrightnessInfo;
-HPLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayIds(Z)[I
+PLcom/android/server/display/DisplayManagerService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/display/DisplayManagerService$BinderService;->getBrightness(I)F
+HPLcom/android/server/display/DisplayManagerService$BinderService;->getBrightnessInfo(I)Landroid/hardware/display/BrightnessInfo;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayIds(Z)[I+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayInfo(I)Landroid/view/DisplayInfo;
HSPLcom/android/server/display/DisplayManagerService$BinderService;->getOverlaySupport()Landroid/hardware/OverlayProperties;
HSPLcom/android/server/display/DisplayManagerService$BinderService;->getPreferredWideGamutColorSpaceId()I
PLcom/android/server/display/DisplayManagerService$BinderService;->getStableDisplaySize()Landroid/graphics/Point;
PLcom/android/server/display/DisplayManagerService$BinderService;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus;
-HPLcom/android/server/display/DisplayManagerService$BinderService;->registerCallbackWithEventMask(Landroid/hardware/display/IDisplayManagerCallback;J)V
-HSPLcom/android/server/display/DisplayManagerService$BrightnessPair;-><init>(Lcom/android/server/display/DisplayManagerService;FF)V
-HPLcom/android/server/display/DisplayManagerService$CallbackRecord;-><init>(Lcom/android/server/display/DisplayManagerService;IILandroid/hardware/display/IDisplayManagerCallback;J)V
-HPLcom/android/server/display/DisplayManagerService$CallbackRecord;->notifyDisplayEventAsync(II)Z
-PLcom/android/server/display/DisplayManagerService$CallbackRecord;->shouldSendEvent(I)Z
-PLcom/android/server/display/DisplayManagerService$CallbackRecord;->updateEventsMask(J)V
+PLcom/android/server/display/DisplayManagerService$BinderService;->registerCallbackWithEventMask(Landroid/hardware/display/IDisplayManagerCallback;J)V
+PLcom/android/server/display/DisplayManagerService$BinderService;->setBrightness(IF)V
+PLcom/android/server/display/DisplayManagerService$CallbackRecord;-><init>(IIJLandroid/hardware/display/IDisplayManagerCallback;Lcom/android/server/display/DisplayManagerService;)V
+PLcom/android/server/display/DisplayManagerService$CallbackRecord;->binderDied()V
+HPLcom/android/server/display/DisplayManagerService$CallbackRecord;->notifyDisplayEventAsync(II)Z+]Landroid/hardware/display/IDisplayManagerCallback;Landroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;,Landroid/hardware/display/IDisplayManagerCallback$Stub$Proxy;
PLcom/android/server/display/DisplayManagerService$DesiredDisplayModeSpecsObserver$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/DisplayManagerService$DesiredDisplayModeSpecsObserver;)V
PLcom/android/server/display/DisplayManagerService$DesiredDisplayModeSpecsObserver$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/display/DisplayManagerService$DesiredDisplayModeSpecsObserver;->$r8$lambda$kO7ZAVjumuDiLx2z8mCVaTQeBAM(Lcom/android/server/display/DisplayManagerService$DesiredDisplayModeSpecsObserver;Lcom/android/server/display/LogicalDisplay;)V
PLcom/android/server/display/DisplayManagerService$DesiredDisplayModeSpecsObserver;-><init>(Lcom/android/server/display/DisplayManagerService;)V
-PLcom/android/server/display/DisplayManagerService$DesiredDisplayModeSpecsObserver;->lambda$new$0(Lcom/android/server/display/LogicalDisplay;)V
PLcom/android/server/display/DisplayManagerService$DesiredDisplayModeSpecsObserver;->onDesiredDisplayModeSpecsChanged()V
PLcom/android/server/display/DisplayManagerService$DeviceStateListener;-><init>(Lcom/android/server/display/DisplayManagerService;)V
-PLcom/android/server/display/DisplayManagerService$DeviceStateListener;->onBaseStateChanged(I)V
-PLcom/android/server/display/DisplayManagerService$DeviceStateListener;->onStateChanged(I)V
+PLcom/android/server/display/DisplayManagerService$DeviceStateListener;->onDeviceStateChanged(Landroid/hardware/devicestate/DeviceState;)V
HSPLcom/android/server/display/DisplayManagerService$DisplayManagerHandler;-><init>(Lcom/android/server/display/DisplayManagerService;Landroid/os/Looper;)V
-HSPLcom/android/server/display/DisplayManagerService$DisplayManagerHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector;-><init>(Lcom/android/server/display/DisplayManagerService;)V
-HSPLcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector;-><init>(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector-IA;)V
-HSPLcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector;->getDisplayNotificationManager()Lcom/android/server/display/notifications/DisplayNotificationManager;
-HSPLcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector;->getFlags()Lcom/android/server/display/feature/DisplayManagerFlags;
-HSPLcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector;->getHandler()Landroid/os/Handler;
-HSPLcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector;->getLogicalDisplayMapper()Lcom/android/server/display/LogicalDisplayMapper;
-HSPLcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector;->getSyncRoot()Lcom/android/server/display/DisplayManagerService$SyncRoot;
-PLcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector;->getThermalService()Landroid/os/IThermalService;
+HSPLcom/android/server/display/DisplayManagerService$DisplayManagerHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/wm/WindowManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
HSPLcom/android/server/display/DisplayManagerService$Injector;-><init>()V
-HSPLcom/android/server/display/DisplayManagerService$Injector;->getDefaultDisplayDelayTimeout()J
-HSPLcom/android/server/display/DisplayManagerService$Injector;->getFlags()Lcom/android/server/display/feature/DisplayManagerFlags;
-PLcom/android/server/display/DisplayManagerService$Injector;->getHdrOutputConversionSupport()Z
-HSPLcom/android/server/display/DisplayManagerService$Injector;->getLocalDisplayAdapter(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/notifications/DisplayNotificationManager;)Lcom/android/server/display/LocalDisplayAdapter;
-HSPLcom/android/server/display/DisplayManagerService$Injector;->getVirtualDisplayAdapter(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Lcom/android/server/display/feature/DisplayManagerFlags;)Lcom/android/server/display/VirtualDisplayAdapter;
-PLcom/android/server/display/DisplayManagerService$LocalService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/DisplayManagerService$LocalService;Ljava/util/Set;Landroid/util/IntArray;)V
-PLcom/android/server/display/DisplayManagerService$LocalService$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/display/DisplayManagerService$LocalService;->$r8$lambda$89AgyCQh3snd66tyHFfbP9_BZ4s(Lcom/android/server/display/DisplayManagerService$LocalService;Ljava/util/Set;Landroid/util/IntArray;Lcom/android/server/display/LogicalDisplay;)V
HSPLcom/android/server/display/DisplayManagerService$LocalService;-><init>(Lcom/android/server/display/DisplayManagerService;)V
PLcom/android/server/display/DisplayManagerService$LocalService;->getAmbientLightSensorData(I)Landroid/hardware/display/DisplayManagerInternal$AmbientLightSensorData;
PLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayGroupIds()Landroid/util/IntArray;
-HPLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayIdToMirror(I)I
+HPLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayIdToMirror(I)I+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;
+PLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayIdsForGroup(I)[I
HPLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayInfo(I)Landroid/view/DisplayInfo;
PLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayWindowPolicyController(I)Landroid/window/DisplayWindowPolicyController;
-PLcom/android/server/display/DisplayManagerService$LocalService;->getNonOverrideDisplayInfo(ILandroid/view/DisplayInfo;)V
+HPLcom/android/server/display/DisplayManagerService$LocalService;->getNonOverrideDisplayInfo(ILandroid/view/DisplayInfo;)V
+PLcom/android/server/display/DisplayManagerService$LocalService;->getPossibleDisplayInfo(I)Ljava/util/Set;
HPLcom/android/server/display/DisplayManagerService$LocalService;->getRefreshRateSwitchingType()I
PLcom/android/server/display/DisplayManagerService$LocalService;->initPowerManagement(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;Landroid/os/Handler;Landroid/hardware/SensorManager;)V
-PLcom/android/server/display/DisplayManagerService$LocalService;->isProximitySensorAvailable()Z
-PLcom/android/server/display/DisplayManagerService$LocalService;->lambda$getDisplayGroupIds$0(Ljava/util/Set;Landroid/util/IntArray;Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService$LocalService;->isProximitySensorAvailable(I)Z
+PLcom/android/server/display/DisplayManagerService$LocalService;->onEarlyInteractivityChange(Z)V
HPLcom/android/server/display/DisplayManagerService$LocalService;->performTraversal(Landroid/view/SurfaceControl$Transaction;Landroid/util/SparseArray;)V
PLcom/android/server/display/DisplayManagerService$LocalService;->registerDisplayGroupListener(Landroid/hardware/display/DisplayManagerInternal$DisplayGroupListener;)V
PLcom/android/server/display/DisplayManagerService$LocalService;->registerDisplayOffloader(ILandroid/hardware/display/DisplayManagerInternal$DisplayOffloader;)Landroid/hardware/display/DisplayManagerInternal$DisplayOffloadSession;
-HPLcom/android/server/display/DisplayManagerService$LocalService;->requestPowerState(ILandroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z
+HPLcom/android/server/display/DisplayManagerService$LocalService;->requestPowerState(ILandroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayAccessUIDs(Landroid/util/SparseArray;)V
PLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayInfoOverrideFromWindowManager(ILandroid/view/DisplayInfo;)V
HPLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayProperties(IZFIFFZZZ)V
-HSPLcom/android/server/display/DisplayManagerService$LogicalDisplayListener;-><init>(Lcom/android/server/display/DisplayManagerService;)V
-HSPLcom/android/server/display/DisplayManagerService$LogicalDisplayListener;-><init>(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$LogicalDisplayListener-IA;)V
-HSPLcom/android/server/display/DisplayManagerService$LogicalDisplayListener;->onDisplayGroupEventLocked(II)V
-HSPLcom/android/server/display/DisplayManagerService$LogicalDisplayListener;->onLogicalDisplayEventLocked(Lcom/android/server/display/LogicalDisplay;I)V
-HSPLcom/android/server/display/DisplayManagerService$LogicalDisplayListener;->onTraversalRequested()V
+HPLcom/android/server/display/DisplayManagerService$LocalService;->setScreenBrightnessOverrideFromWindowManager(Landroid/util/SparseArray;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/display/DisplayManagerService$PendingCallback;-><init>(Lcom/android/server/display/DisplayManagerService$CallbackRecord;II)V
+HPLcom/android/server/display/DisplayManagerService$PendingCallback;->addDisplayEvent(II)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/display/DisplayManagerService$PendingCallback;->sendPendingDisplayEvent()V
PLcom/android/server/display/DisplayManagerService$SettingsObserver;-><init>(Lcom/android/server/display/DisplayManagerService;)V
-HSPLcom/android/server/display/DisplayManagerService$SyncRoot;-><init>()V
HSPLcom/android/server/display/DisplayManagerService$UidImportanceListener;-><init>(Lcom/android/server/display/DisplayManagerService;)V
-HSPLcom/android/server/display/DisplayManagerService$UidImportanceListener;-><init>(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$UidImportanceListener-IA;)V
-HPLcom/android/server/display/DisplayManagerService$UidImportanceListener;->onUidImportance(II)V
-PLcom/android/server/display/DisplayManagerService;->$r8$lambda$0MAlsLZlHa5skv0nhkou167e-6I(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/LogicalDisplay;)V
-PLcom/android/server/display/DisplayManagerService;->$r8$lambda$7iX7XzFpN-QayQDgHGWOvHZ4RH4(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/LogicalDisplay;)V
-PLcom/android/server/display/DisplayManagerService;->$r8$lambda$oYWCtx3PEcj2fx_7P6LhCa_tIsw(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/LogicalDisplay;)Lcom/android/server/display/DisplayPowerControllerInterface;
-PLcom/android/server/display/DisplayManagerService;->$r8$lambda$sbGEKbzmOtvlr0tn0wH0Gqp3iQE(Lcom/android/server/display/DisplayManagerService;ILcom/android/server/display/LogicalDisplay;)V
-PLcom/android/server/display/DisplayManagerService;->$r8$lambda$vHSuA5rkAynhvjoHbD27CpXaGlI(Lcom/android/server/display/DisplayManagerService;Landroid/util/SparseArray;Landroid/view/SurfaceControl$Transaction;Lcom/android/server/display/LogicalDisplay;)V
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmContext(Lcom/android/server/display/DisplayManagerService;)Landroid/content/Context;
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmDisplayGroupListeners(Lcom/android/server/display/DisplayManagerService;)Ljava/util/concurrent/CopyOnWriteArrayList;
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmDisplayModeDirector(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/mode/DisplayModeDirector;
-HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmDisplayNotificationManager(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/notifications/DisplayNotificationManager;
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmDisplayPowerCallbacks(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmDisplayPowerControllers(Lcom/android/server/display/DisplayManagerService;)Landroid/util/SparseArray;
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmDisplayStates(Lcom/android/server/display/DisplayManagerService;)Landroid/util/SparseIntArray;
-HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmFlags(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/feature/DisplayManagerFlags;
-HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmHandler(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayManagerService$DisplayManagerHandler;
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmInputManagerInternal(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/input/InputManagerInternal;
-HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmLogicalDisplayMapper(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/LogicalDisplayMapper;
-HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmSyncRoot(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayManagerService$SyncRoot;
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmTempViewports(Lcom/android/server/display/DisplayManagerService;)Ljava/util/ArrayList;
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmViewports(Lcom/android/server/display/DisplayManagerService;)Ljava/util/ArrayList;
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmWindowManagerInternal(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/wm/WindowManagerInternal;
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$fputmDisplayPowerCallbacks(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;)V
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$fputmPowerHandler(Lcom/android/server/display/DisplayManagerService;Landroid/os/Handler;)V
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$fputmSensorManager(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/SensorManager;)V
-HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$mdeliverDisplayEvent(Lcom/android/server/display/DisplayManagerService;ILandroid/util/ArraySet;I)V
-HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$mdeliverDisplayGroupEvent(Lcom/android/server/display/DisplayManagerService;II)V
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$mextraLogging(Lcom/android/server/display/DisplayManagerService;Ljava/lang/String;)Z
+HPLcom/android/server/display/DisplayManagerService$UidImportanceListener;->onUidImportance(II)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$mdeliverDisplayEvent(Lcom/android/server/display/DisplayManagerService;ILandroid/util/ArraySet;I)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$mdumpInternal(Lcom/android/server/display/DisplayManagerService;Ljava/io/PrintWriter;)V
HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$mgetDisplayInfoInternal(Lcom/android/server/display/DisplayManagerService;II)Landroid/view/DisplayInfo;
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$mgetNonOverrideDisplayInfoInternal(Lcom/android/server/display/DisplayManagerService;ILandroid/view/DisplayInfo;)V
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$mgetStableDisplaySizeInternal(Lcom/android/server/display/DisplayManagerService;)Landroid/graphics/Point;
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$mgetWifiDisplayStatusInternal(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/WifiDisplayStatus;
HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$mhandleLogicalDisplayAddedLocked(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/LogicalDisplay;)V
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$mhandleLogicalDisplayChangedLocked(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/LogicalDisplay;)V
-HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$mhandleLogicalDisplayConnectedLocked(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/LogicalDisplay;)V
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$mhandleLogicalDisplayFrameRateOverridesChangedLocked(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/LogicalDisplay;)V
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$minitializeDisplayPowerControllersLocked(Lcom/android/server/display/DisplayManagerService;)V
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$mloadBrightnessConfigurations(Lcom/android/server/display/DisplayManagerService;)V
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$mregisterCallbackInternal(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/display/IDisplayManagerCallback;IIJ)V
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$mregisterCallbackInternal(IIJLandroid/hardware/display/IDisplayManagerCallback;Lcom/android/server/display/DisplayManagerService;)V
HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$mregisterDefaultDisplayAdapters(Lcom/android/server/display/DisplayManagerService;)V
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$mrequestDisplayStateInternal(Lcom/android/server/display/DisplayManagerService;IIFF)V
-HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$mscheduleTraversalLocked(Lcom/android/server/display/DisplayManagerService;Z)V
-HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$msendDisplayGroupEvent(Lcom/android/server/display/DisplayManagerService;II)V
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$msetDisplayAccessUIDsInternal(Lcom/android/server/display/DisplayManagerService;Landroid/util/SparseArray;)V
-PLcom/android/server/display/DisplayManagerService;->-$$Nest$sfgetDEBUG()Z
+HPLcom/android/server/display/DisplayManagerService;->-$$Nest$mrequestDisplayStateInternal(Lcom/android/server/display/DisplayManagerService;IIFF)V
HSPLcom/android/server/display/DisplayManagerService;-><clinit>()V
HSPLcom/android/server/display/DisplayManagerService;-><init>(Landroid/content/Context;)V
HSPLcom/android/server/display/DisplayManagerService;-><init>(Landroid/content/Context;Lcom/android/server/display/DisplayManagerService$Injector;)V
-HSPLcom/android/server/display/DisplayManagerService;->addDisplayPowerControllerLocked(Lcom/android/server/display/LogicalDisplay;)Lcom/android/server/display/DisplayPowerControllerInterface;
-PLcom/android/server/display/DisplayManagerService;->applyDisplayChangedLocked(Lcom/android/server/display/LogicalDisplay;)V
-PLcom/android/server/display/DisplayManagerService;->clampBrightness(IF)F
-PLcom/android/server/display/DisplayManagerService;->clearViewportsLocked()V
-HSPLcom/android/server/display/DisplayManagerService;->configureColorModeLocked(Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/DisplayDevice;)V
-HPLcom/android/server/display/DisplayManagerService;->configureDisplayLocked(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/display/DisplayDevice;)V
+HSPLcom/android/server/display/DisplayManagerService;->addDisplayPowerControllerLocked(Lcom/android/server/display/LogicalDisplay;)Lcom/android/server/display/DisplayPowerController;
+HSPLcom/android/server/display/DisplayManagerService;->applyDisplayChangedLocked(Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService;->clampBrightness(FI)F
HSPLcom/android/server/display/DisplayManagerService;->configurePreferredDisplayModeLocked(Lcom/android/server/display/LogicalDisplay;)V
-HSPLcom/android/server/display/DisplayManagerService;->deliverDisplayEvent(ILandroid/util/ArraySet;I)V
-HSPLcom/android/server/display/DisplayManagerService;->deliverDisplayGroupEvent(II)V
-PLcom/android/server/display/DisplayManagerService;->extraLogging(Ljava/lang/String;)Z
-PLcom/android/server/display/DisplayManagerService;->getBrightnessConfigForDisplayWithPdsFallbackLocked(Ljava/lang/String;I)Landroid/hardware/display/BrightnessConfiguration;
+HPLcom/android/server/display/DisplayManagerService;->extraLogging(Ljava/lang/String;)Z
+PLcom/android/server/display/DisplayManagerService;->getBrightnessConfigForDisplayWithPdsFallbackLocked(ILjava/lang/String;)Landroid/hardware/display/BrightnessConfiguration;
+PLcom/android/server/display/DisplayManagerService;->getDeviceForDisplayLocked(I)Lcom/android/server/display/DisplayDevice;
HSPLcom/android/server/display/DisplayManagerService;->getDisplayInfoForFrameRateOverride([Landroid/view/DisplayEventReceiver$FrameRateOverride;Landroid/view/DisplayInfo;I)Landroid/view/DisplayInfo;
-HSPLcom/android/server/display/DisplayManagerService;->getDisplayInfoInternal(II)Landroid/view/DisplayInfo;
-HSPLcom/android/server/display/DisplayManagerService;->getFloatArray(Landroid/content/res/TypedArray;)[F
-PLcom/android/server/display/DisplayManagerService;->getNonOverrideDisplayInfoInternal(ILandroid/view/DisplayInfo;)V
-HSPLcom/android/server/display/DisplayManagerService;->getOverlaySupportInternal()Landroid/hardware/OverlayProperties;
-HSPLcom/android/server/display/DisplayManagerService;->getPreferredWideGamutColorSpaceIdInternal()I
-HPLcom/android/server/display/DisplayManagerService;->getRefreshRateSwitchingTypeInternal()I
-PLcom/android/server/display/DisplayManagerService;->getStableDisplaySizeInternal()Landroid/graphics/Point;
-PLcom/android/server/display/DisplayManagerService;->getUserManager()Landroid/os/UserManager;
-HPLcom/android/server/display/DisplayManagerService;->getViewportLocked(ILjava/lang/String;)Landroid/hardware/display/DisplayViewport;
-PLcom/android/server/display/DisplayManagerService;->getViewportType(Lcom/android/server/display/DisplayDeviceInfo;)Ljava/util/Optional;
-PLcom/android/server/display/DisplayManagerService;->getWifiDisplayStatusInternal()Landroid/hardware/display/WifiDisplayStatus;
-PLcom/android/server/display/DisplayManagerService;->handleBrightnessChange(Lcom/android/server/display/LogicalDisplay;)V
-HSPLcom/android/server/display/DisplayManagerService;->handleLogicalDisplayAddedLocked(Lcom/android/server/display/LogicalDisplay;)V
-PLcom/android/server/display/DisplayManagerService;->handleLogicalDisplayChangedLocked(Lcom/android/server/display/LogicalDisplay;)V
-HSPLcom/android/server/display/DisplayManagerService;->handleLogicalDisplayConnectedLocked(Lcom/android/server/display/LogicalDisplay;)V
-PLcom/android/server/display/DisplayManagerService;->handleLogicalDisplayFrameRateOverridesChangedLocked(Lcom/android/server/display/LogicalDisplay;)V
-PLcom/android/server/display/DisplayManagerService;->initializeDisplayPowerControllersLocked()V
+HPLcom/android/server/display/DisplayManagerService;->getViewportType(Lcom/android/server/display/DisplayDeviceInfo;)Ljava/util/Optional;
+HPLcom/android/server/display/DisplayManagerService;->handleLogicalDisplayChangedLocked(Lcom/android/server/display/LogicalDisplay;)V
HPLcom/android/server/display/DisplayManagerService;->isMinimalPostProcessingAllowed()Z
-PLcom/android/server/display/DisplayManagerService;->isResolutionAndRefreshRateValid(Landroid/view/Display$Mode;)Z
-PLcom/android/server/display/DisplayManagerService;->isUidCached(I)Z
-PLcom/android/server/display/DisplayManagerService;->lambda$addDisplayPowerControllerLocked$14(Lcom/android/server/display/LogicalDisplay;)V
-PLcom/android/server/display/DisplayManagerService;->lambda$loadBrightnessConfigurations$10(ILcom/android/server/display/LogicalDisplay;)V
-HPLcom/android/server/display/DisplayManagerService;->lambda$performTraversalLocked$11(Landroid/util/SparseArray;Landroid/view/SurfaceControl$Transaction;Lcom/android/server/display/LogicalDisplay;)V
-PLcom/android/server/display/DisplayManagerService;->lambda$updateUserPreferredDisplayModeSettingsLocked$4(Lcom/android/server/display/LogicalDisplay;)V
-PLcom/android/server/display/DisplayManagerService;->loadBrightnessConfigurations()V
HSPLcom/android/server/display/DisplayManagerService;->loadStableDisplayValuesLocked()V
-HSPLcom/android/server/display/DisplayManagerService;->notifyDefaultDisplayDeviceUpdated(Lcom/android/server/display/LogicalDisplay;)V
HSPLcom/android/server/display/DisplayManagerService;->onBootPhase(I)V
HSPLcom/android/server/display/DisplayManagerService;->onStart()V
-HPLcom/android/server/display/DisplayManagerService;->performTraversalInternal(Landroid/view/SurfaceControl$Transaction;Landroid/util/SparseArray;)V
-HPLcom/android/server/display/DisplayManagerService;->performTraversalLocked(Landroid/view/SurfaceControl$Transaction;Landroid/util/SparseArray;)V
-HPLcom/android/server/display/DisplayManagerService;->populateViewportLocked(IILcom/android/server/display/DisplayDevice;Lcom/android/server/display/DisplayDeviceInfo;)V
-HSPLcom/android/server/display/DisplayManagerService;->recordStableDisplayStatsIfNeededLocked(Lcom/android/server/display/LogicalDisplay;)V
+HPLcom/android/server/display/DisplayManagerService;->performTraversalInternal(Landroid/view/SurfaceControl$Transaction;Landroid/util/SparseArray;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
HSPLcom/android/server/display/DisplayManagerService;->recordTopInsetLocked(Lcom/android/server/display/LogicalDisplay;)V
-PLcom/android/server/display/DisplayManagerService;->registerAdditionalDisplayAdapters()V
-HPLcom/android/server/display/DisplayManagerService;->registerCallbackInternal(Landroid/hardware/display/IDisplayManagerCallback;IIJ)V
-HSPLcom/android/server/display/DisplayManagerService;->registerDefaultDisplayAdapters()V
-HSPLcom/android/server/display/DisplayManagerService;->registerDisplayAdapterLocked(Lcom/android/server/display/DisplayAdapter;)V
-PLcom/android/server/display/DisplayManagerService;->registerOverlayDisplayAdapterLocked()V
PLcom/android/server/display/DisplayManagerService;->registerWifiDisplayAdapterLocked()V
-HPLcom/android/server/display/DisplayManagerService;->requestDisplayStateInternal(IIFF)V
HSPLcom/android/server/display/DisplayManagerService;->scheduleTraversalLocked(Z)V
-PLcom/android/server/display/DisplayManagerService;->sendDisplayEventFrameRateOverrideLocked(I)V
HSPLcom/android/server/display/DisplayManagerService;->sendDisplayEventIfEnabledLocked(Lcom/android/server/display/LogicalDisplay;I)V
HSPLcom/android/server/display/DisplayManagerService;->sendDisplayEventLocked(Lcom/android/server/display/LogicalDisplay;I)V
-HSPLcom/android/server/display/DisplayManagerService;->sendDisplayGroupEvent(II)V
-PLcom/android/server/display/DisplayManagerService;->setDisplayAccessUIDsInternal(Landroid/util/SparseArray;)V
PLcom/android/server/display/DisplayManagerService;->setDisplayInfoOverrideFromWindowManagerInternal(ILandroid/view/DisplayInfo;)V
-HPLcom/android/server/display/DisplayManagerService;->setDisplayPropertiesInternal(IZFIFFZZZ)V
+HPLcom/android/server/display/DisplayManagerService;->setDockedAndIdleEnabled(Z)V
PLcom/android/server/display/DisplayManagerService;->setHdrConversionModeInternal(Landroid/hardware/display/HdrConversionMode;)V
PLcom/android/server/display/DisplayManagerService;->setMinimalPostProcessingAllowed(Z)V
HSPLcom/android/server/display/DisplayManagerService;->setupLogicalDisplay(Lcom/android/server/display/LogicalDisplay;)V
-PLcom/android/server/display/DisplayManagerService;->setupSchedulerPolicies()V
-PLcom/android/server/display/DisplayManagerService;->shouldRegisterNonEssentialDisplayAdaptersLocked()Z
+PLcom/android/server/display/DisplayManagerService;->stopWifiDisplayScanLocked(Lcom/android/server/display/DisplayManagerService$CallbackRecord;)V
PLcom/android/server/display/DisplayManagerService;->systemReady(Z)V
-PLcom/android/server/display/DisplayManagerService;->updateDisplayPowerControllerLeaderLocked(Lcom/android/server/display/DisplayPowerControllerInterface;I)V
+PLcom/android/server/display/DisplayManagerService;->updateDisplayPowerControllerLeaderLocked(Lcom/android/server/display/DisplayPowerController;I)V
HSPLcom/android/server/display/DisplayManagerService;->updateDisplayStateLocked(Lcom/android/server/display/DisplayDevice;)Ljava/lang/Runnable;
-PLcom/android/server/display/DisplayManagerService;->updateHdrConversionModeSettingsLocked()V
-HSPLcom/android/server/display/DisplayManagerService;->updateLogicalDisplayState(Lcom/android/server/display/LogicalDisplay;)V
-PLcom/android/server/display/DisplayManagerService;->updateSettingsLocked()V
PLcom/android/server/display/DisplayManagerService;->updateUserDisabledHdrTypesFromSettingsLocked()V
PLcom/android/server/display/DisplayManagerService;->updateUserPreferredDisplayModeSettingsLocked()V
-HPLcom/android/server/display/DisplayManagerService;->updateViewportPowerStateLocked(Lcom/android/server/display/LogicalDisplay;)V
+HPLcom/android/server/display/DisplayManagerService;->updateViewportPowerStateLocked(Lcom/android/server/display/LogicalDisplay;)V+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
PLcom/android/server/display/DisplayManagerService;->windowManagerAndInputReady()V
-PLcom/android/server/display/DisplayOffloadSessionImpl;-><init>(Landroid/hardware/display/DisplayManagerInternal$DisplayOffloader;Lcom/android/server/display/DisplayPowerControllerInterface;)V
+PLcom/android/server/display/DisplayOffloadSessionImpl;-><clinit>()V
+PLcom/android/server/display/DisplayOffloadSessionImpl;-><init>(Landroid/hardware/display/DisplayManagerInternal$DisplayOffloader;Lcom/android/server/display/DisplayPowerController;)V
+HPLcom/android/server/display/DisplayOffloadSessionImpl;->allowAutoBrightnessInDoze()Z
+PLcom/android/server/display/DisplayOffloadSessionImpl;->blockScreenOn(Ljava/lang/Runnable;)Z
PLcom/android/server/display/DisplayOffloadSessionImpl;->getAutoBrightnessLevels(I)[F
-PLcom/android/server/display/DisplayOffloadSessionImpl;->getAutoBrightnessLuxLevels(I)[F
-PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/display/DisplayPowerController;)V
+HPLcom/android/server/display/DisplayOffloadSessionImpl;->getAutoBrightnessLuxLevels(I)[F
+PLcom/android/server/display/DisplayOffloadSessionImpl;->getBrightness()F
+PLcom/android/server/display/DisplayOffloadSessionImpl;->getDozeBrightness()F
+HPLcom/android/server/display/DisplayOffloadSessionImpl;->setDozeStateOverride(I)V
+PLcom/android/server/display/DisplayOffloadSessionImpl;->updateBrightness(F)V
+PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/display/DisplayPowerController;)V
PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/display/DisplayPowerController;)V
-PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/display/DisplayPowerController;)V
-PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda4;->run()V
-PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/display/DisplayPowerController;)V
-PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/display/DisplayPowerController;)V
-PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/display/DisplayPowerController;)V
-PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/display/DisplayPowerController;)V
+PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda1;-><init>(ILjava/lang/Object;)V
+HPLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda1;->run()V
+HPLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/display/DisplayPowerController;ZZLcom/android/server/display/DisplayDevice;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/display/DisplayDeviceConfig;Ljava/lang/String;Landroid/os/IBinder;Lcom/android/server/display/DisplayDeviceInfo;Lcom/android/server/display/HighBrightnessModeMetadata;ZLjava/lang/String;)V
+HPLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/display/DisplayPowerController;Ljava/lang/Object;I)V
+PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;ILandroid/util/IndentingPrintWriter;Ljava/lang/String;)Ljava/lang/StringBuilder;
PLcom/android/server/display/DisplayPowerController$1;-><init>(Lcom/android/server/display/DisplayPowerController;)V
PLcom/android/server/display/DisplayPowerController$2;-><init>(Lcom/android/server/display/DisplayPowerController;)V
-PLcom/android/server/display/DisplayPowerController$3;-><init>(Lcom/android/server/display/DisplayPowerController;)V
-PLcom/android/server/display/DisplayPowerController$CachedBrightnessInfo;-><init>()V
PLcom/android/server/display/DisplayPowerController$CachedBrightnessInfo;->checkAndSetFloat(Landroid/util/MutableFloat;F)Z
-PLcom/android/server/display/DisplayPowerController$CachedBrightnessInfo;->checkAndSetInt(Landroid/util/MutableInt;I)Z
PLcom/android/server/display/DisplayPowerController$DisplayControllerHandler;-><init>(Lcom/android/server/display/DisplayPowerController;Landroid/os/Looper;)V
-PLcom/android/server/display/DisplayPowerController$DisplayControllerHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/display/DisplayPowerController$Injector$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/display/DisplayPowerController$Injector$$ExternalSyntheticLambda0;->uptimeMillis()J
+HPLcom/android/server/display/DisplayPowerController$DisplayControllerHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy2;Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;
PLcom/android/server/display/DisplayPowerController$Injector;-><init>()V
-PLcom/android/server/display/DisplayPowerController$Injector;->getBrightnessClamperController(Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;Landroid/content/Context;Lcom/android/server/display/feature/DisplayManagerFlags;)Lcom/android/server/display/brightness/clamper/BrightnessClamperController;
-PLcom/android/server/display/DisplayPowerController$Injector;->getBrightnessRangeController(Lcom/android/server/display/HighBrightnessModeController;Ljava/lang/Runnable;Lcom/android/server/display/DisplayDeviceConfig;Landroid/os/Handler;Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/os/IBinder;Lcom/android/server/display/DisplayDeviceInfo;)Lcom/android/server/display/BrightnessRangeController;
-PLcom/android/server/display/DisplayPowerController$Injector;->getClock()Lcom/android/server/display/DisplayPowerController$Clock;
-PLcom/android/server/display/DisplayPowerController$Injector;->getDefaultModeBrightnessMapper(Landroid/content/Context;Lcom/android/server/display/DisplayDeviceConfig;Lcom/android/server/display/whitebalance/DisplayWhiteBalanceController;)Lcom/android/server/display/BrightnessMappingStrategy;
-PLcom/android/server/display/DisplayPowerController$Injector;->getDisplayPowerProximityStateController(Lcom/android/server/display/WakelockController;Lcom/android/server/display/DisplayDeviceConfig;Landroid/os/Looper;Ljava/lang/Runnable;ILandroid/hardware/SensorManager;)Lcom/android/server/display/DisplayPowerProximityStateController;
-PLcom/android/server/display/DisplayPowerController$Injector;->getDisplayPowerState(Lcom/android/server/display/DisplayBlanker;Lcom/android/server/display/ColorFade;II)Lcom/android/server/display/DisplayPowerState;
-PLcom/android/server/display/DisplayPowerController$Injector;->getDisplayWhiteBalanceController(Landroid/os/Handler;Landroid/hardware/SensorManager;Landroid/content/res/Resources;)Lcom/android/server/display/whitebalance/DisplayWhiteBalanceController;
-PLcom/android/server/display/DisplayPowerController$Injector;->getDualRampAnimator(Lcom/android/server/display/DisplayPowerState;Landroid/util/FloatProperty;Landroid/util/FloatProperty;)Lcom/android/server/display/RampAnimator$DualRampAnimator;
-PLcom/android/server/display/DisplayPowerController$Injector;->getHighBrightnessModeController(Landroid/os/Handler;IILandroid/os/IBinder;Ljava/lang/String;FFLcom/android/server/display/DisplayDeviceConfig$HighBrightnessModeData;Lcom/android/server/display/HighBrightnessModeController$HdrBrightnessDeviceConfig;Ljava/lang/Runnable;Lcom/android/server/display/HighBrightnessModeMetadata;Landroid/content/Context;)Lcom/android/server/display/HighBrightnessModeController;
-PLcom/android/server/display/DisplayPowerController$Injector;->getWakelockController(ILandroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;)Lcom/android/server/display/WakelockController;
-PLcom/android/server/display/DisplayPowerController$Injector;->isColorFadeEnabled()Z
-PLcom/android/server/display/DisplayPowerController$SettingsObserver;-><init>(Lcom/android/server/display/DisplayPowerController;Landroid/os/Handler;)V
-PLcom/android/server/display/DisplayPowerController;->$r8$lambda$3lWZJ4BpIHcX_GeenBdRfMVq_oU(Lcom/android/server/display/DisplayPowerController;)V
-PLcom/android/server/display/DisplayPowerController;->-$$Nest$fputmBootCompleted(Lcom/android/server/display/DisplayPowerController;Z)V
-PLcom/android/server/display/DisplayPowerController;->-$$Nest$mupdatePowerState(Lcom/android/server/display/DisplayPowerController;)V
+PLcom/android/server/display/DisplayPowerController$Injector;->getDisplayWhiteBalanceController(Lcom/android/server/display/DisplayPowerController$DisplayControllerHandler;Landroid/hardware/SensorManager;Landroid/content/res/Resources;)Lcom/android/server/display/whitebalance/DisplayWhiteBalanceController;
+PLcom/android/server/display/DisplayPowerController$ScreenOffUnblocker;-><init>(Lcom/android/server/display/DisplayPowerController;)V
+PLcom/android/server/display/DisplayPowerController$ScreenOffUnblocker;->onScreenOff()V
+PLcom/android/server/display/DisplayPowerController$ScreenOnUnblocker;-><init>(Lcom/android/server/display/DisplayPowerController;)V
+PLcom/android/server/display/DisplayPowerController$SettingsObserver;-><init>(Lcom/android/server/display/DisplayPowerController;Lcom/android/server/display/DisplayPowerController$DisplayControllerHandler;)V
+PLcom/android/server/display/DisplayPowerController$SettingsObserver;->onChange(ZLandroid/net/Uri;)V
PLcom/android/server/display/DisplayPowerController;-><clinit>()V
-HPLcom/android/server/display/DisplayPowerController;-><init>(Landroid/content/Context;Lcom/android/server/display/DisplayPowerController$Injector;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;Landroid/os/Handler;Landroid/hardware/SensorManager;Lcom/android/server/display/DisplayBlanker;Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/BrightnessTracker;Lcom/android/server/display/BrightnessSetting;Ljava/lang/Runnable;Lcom/android/server/display/HighBrightnessModeMetadata;ZLcom/android/server/display/feature/DisplayManagerFlags;)V
-PLcom/android/server/display/DisplayPowerController;->animateScreenBrightness(FFF)V
-PLcom/android/server/display/DisplayPowerController;->animateScreenBrightness(FFFZ)V
-PLcom/android/server/display/DisplayPowerController;->animateScreenStateChange(IZ)V
+PLcom/android/server/display/DisplayPowerController;-><init>(Landroid/content/Context;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;Landroid/os/Handler;Landroid/hardware/SensorManager;Lcom/android/server/display/DisplayManagerService$1;Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/BrightnessTracker;Lcom/android/server/display/BrightnessSetting;Lcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda13;Lcom/android/server/display/HighBrightnessModeMetadata;ZLcom/android/server/display/feature/DisplayManagerFlags;)V
+HPLcom/android/server/display/DisplayPowerController;->animateScreenBrightness(FFFZ)V
+HPLcom/android/server/display/DisplayPowerController;->animateScreenStateChange(IIZ)V
HPLcom/android/server/display/DisplayPowerController;->clampScreenBrightness(F)F
-PLcom/android/server/display/DisplayPowerController;->convertBrightnessReasonToStatsEnum(I)I
-PLcom/android/server/display/DisplayPowerController;->createBrightnessThrottlerLocked()Lcom/android/server/display/BrightnessThrottler;
-PLcom/android/server/display/DisplayPowerController;->createHbmControllerLocked(Lcom/android/server/display/HighBrightnessModeMetadata;Ljava/lang/Runnable;)Lcom/android/server/display/HighBrightnessModeController;
-HPLcom/android/server/display/DisplayPowerController;->getAutoBrightnessLevels(I)[F
-HPLcom/android/server/display/DisplayPowerController;->getAutoBrightnessLuxLevels(I)[F
HPLcom/android/server/display/DisplayPowerController;->getBrightnessInfo()Landroid/hardware/display/BrightnessInfo;
-PLcom/android/server/display/DisplayPowerController;->getLeadDisplayId()I
-PLcom/android/server/display/DisplayPowerController;->getScreenBrightnessSetting()F
PLcom/android/server/display/DisplayPowerController;->handleBrightnessModeChange()V
-PLcom/android/server/display/DisplayPowerController;->initialize(I)V
-PLcom/android/server/display/DisplayPowerController;->isProximitySensorAvailable()Z
PLcom/android/server/display/DisplayPowerController;->loadBrightnessRampRates()V
PLcom/android/server/display/DisplayPowerController;->loadNitsRange(Landroid/content/res/Resources;)V
-HPLcom/android/server/display/DisplayPowerController;->logBrightnessEvent(Lcom/android/server/display/brightness/BrightnessEvent;F)V
+HPLcom/android/server/display/DisplayPowerController;->logBrightnessEvent(Lcom/android/server/display/brightness/BrightnessEvent;FLcom/android/server/display/DisplayBrightnessState;)V
PLcom/android/server/display/DisplayPowerController;->logDisplayPolicyChanged(I)V
-PLcom/android/server/display/DisplayPowerController;->nitsToRangeIndex(F)I
-PLcom/android/server/display/DisplayPowerController;->noteScreenBrightness(F)V
-PLcom/android/server/display/DisplayPowerController;->noteScreenState(I)V
-PLcom/android/server/display/DisplayPowerController;->notifyBrightnessTrackerChanged(FZZZZZ)V
-PLcom/android/server/display/DisplayPowerController;->onBootCompleted()V
-PLcom/android/server/display/DisplayPowerController;->postBrightnessChangeRunnable()V
-PLcom/android/server/display/DisplayPowerController;->readyToUpdateDisplayState()Z
-HPLcom/android/server/display/DisplayPowerController;->requestPowerState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z
-PLcom/android/server/display/DisplayPowerController;->saveBrightnessInfo(F)Z
+HPLcom/android/server/display/DisplayPowerController;->noteScreenBrightness(F)V
+HPLcom/android/server/display/DisplayPowerController;->notifyBrightnessTrackerChanged(FZZZZZ)V
+HPLcom/android/server/display/DisplayPowerController;->onDisplayChanged(Lcom/android/server/display/HighBrightnessModeMetadata;I)V
+HPLcom/android/server/display/DisplayPowerController;->postBrightnessChangeRunnable()V
+HPLcom/android/server/display/DisplayPowerController;->requestPowerState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z+]Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;
HPLcom/android/server/display/DisplayPowerController;->saveBrightnessInfo(FFLcom/android/server/display/DisplayBrightnessState;)Z
-PLcom/android/server/display/DisplayPowerController;->saveBrightnessInfo(FLcom/android/server/display/DisplayBrightnessState;)Z
PLcom/android/server/display/DisplayPowerController;->sendOnStateChangedWithWakelock()V
PLcom/android/server/display/DisplayPowerController;->sendUpdatePowerState()V
-PLcom/android/server/display/DisplayPowerController;->sendUpdatePowerStateLocked()V
-PLcom/android/server/display/DisplayPowerController;->setAnimatorRampSpeeds(Z)V
-PLcom/android/server/display/DisplayPowerController;->setDisplayOffloadSession(Landroid/hardware/display/DisplayManagerInternal$DisplayOffloadSession;)V
+HPLcom/android/server/display/DisplayPowerController;->sendUpdatePowerStateLocked()V
+HPLcom/android/server/display/DisplayPowerController;->setAnimatorRampSpeeds(Z)V
PLcom/android/server/display/DisplayPowerController;->setReportedScreenState(I)V
-PLcom/android/server/display/DisplayPowerController;->setScreenState(I)Z
-PLcom/android/server/display/DisplayPowerController;->setScreenState(IZ)Z
+HPLcom/android/server/display/DisplayPowerController;->setScreenState(IIZ)Z+]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;
PLcom/android/server/display/DisplayPowerController;->setUpAutoBrightness(Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/display/DisplayPowerController;->unblockScreenOff()V
PLcom/android/server/display/DisplayPowerController;->unblockScreenOn()V
-PLcom/android/server/display/DisplayPowerController;->unblockScreenOnByDisplayOffload()V
-PLcom/android/server/display/DisplayPowerController;->updatePowerState()V
-HPLcom/android/server/display/DisplayPowerController;->updatePowerStateInternal()V
+HPLcom/android/server/display/DisplayPowerController;->unblockScreenOnByDisplayOffload()V
+HPLcom/android/server/display/DisplayPowerController;->updatePowerState()V+]Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/util/RingBuffer;Lcom/android/internal/util/RingBuffer;]Lcom/android/server/display/brightness/clamper/BrightnessStateModifier;megamorphic_types]Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy2;Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;]Lcom/android/server/display/brightness/strategy/DisplayBrightnessStrategy;Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;,Lcom/android/server/display/brightness/strategy/FallbackBrightnessStrategy;,Lcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;,Lcom/android/server/display/brightness/strategy/ScreenOffBrightnessStrategy;]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/display/DisplayPowerProximityStateController$1;-><init>(Lcom/android/server/display/DisplayPowerProximityStateController;)V
PLcom/android/server/display/DisplayPowerProximityStateController$DisplayPowerProximityStateHandler;-><init>(Lcom/android/server/display/DisplayPowerProximityStateController;Landroid/os/Looper;)V
-PLcom/android/server/display/DisplayPowerProximityStateController$Injector$$ExternalSyntheticLambda0;-><init>()V
PLcom/android/server/display/DisplayPowerProximityStateController$Injector;-><init>()V
-PLcom/android/server/display/DisplayPowerProximityStateController$Injector;->createClock()Lcom/android/server/display/DisplayPowerProximityStateController$Clock;
-PLcom/android/server/display/DisplayPowerProximityStateController;-><init>(Lcom/android/server/display/WakelockController;Lcom/android/server/display/DisplayDeviceConfig;Landroid/os/Looper;Ljava/lang/Runnable;ILandroid/hardware/SensorManager;Lcom/android/server/display/DisplayPowerProximityStateController$Injector;)V
-PLcom/android/server/display/DisplayPowerProximityStateController;->isProximitySensorAvailable()Z
-PLcom/android/server/display/DisplayPowerProximityStateController;->isScreenOffBecauseOfProximity()Z
+PLcom/android/server/display/DisplayPowerProximityStateController;-><init>(Lcom/android/server/display/WakelockController;Lcom/android/server/display/DisplayDeviceConfig;Landroid/os/Looper;Lcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda1;ILandroid/hardware/SensorManager;)V
PLcom/android/server/display/DisplayPowerProximityStateController;->loadProximitySensor()V
-HPLcom/android/server/display/DisplayPowerProximityStateController;->setPendingWaitForNegativeProximityLocked(Z)Z
-PLcom/android/server/display/DisplayPowerProximityStateController;->setProximitySensorEnabled(Z)V
-PLcom/android/server/display/DisplayPowerProximityStateController;->shouldSkipRampBecauseOfProximityChangeToNegative()Z
-PLcom/android/server/display/DisplayPowerProximityStateController;->updatePendingProximityRequestsLocked()V
-PLcom/android/server/display/DisplayPowerProximityStateController;->updateProximityState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;I)V
-PLcom/android/server/display/DisplayPowerState$1;-><init>(Ljava/lang/String;)V
-PLcom/android/server/display/DisplayPowerState$2;-><init>(Ljava/lang/String;)V
-PLcom/android/server/display/DisplayPowerState$2;->setValue(Lcom/android/server/display/DisplayPowerState;F)V
-PLcom/android/server/display/DisplayPowerState$2;->setValue(Ljava/lang/Object;F)V
-PLcom/android/server/display/DisplayPowerState$3;-><init>(Ljava/lang/String;)V
-PLcom/android/server/display/DisplayPowerState$3;->setValue(Lcom/android/server/display/DisplayPowerState;F)V
-PLcom/android/server/display/DisplayPowerState$3;->setValue(Ljava/lang/Object;F)V
-PLcom/android/server/display/DisplayPowerState$4;-><init>(Lcom/android/server/display/DisplayPowerState;)V
+HPLcom/android/server/display/DisplayPowerProximityStateController;->setProximitySensorEnabled(Z)V
+HPLcom/android/server/display/DisplayPowerProximityStateController;->updatePendingProximityRequestsLocked()V
+PLcom/android/server/display/DisplayPowerState$1;-><init>(Ljava/lang/String;I)V
+HPLcom/android/server/display/DisplayPowerState$1;->setValue(Ljava/lang/Object;F)V
+PLcom/android/server/display/DisplayPowerState$4;-><init>(Lcom/android/server/display/DisplayPowerState;I)V
HPLcom/android/server/display/DisplayPowerState$4;->run()V
-PLcom/android/server/display/DisplayPowerState$5;-><init>(Lcom/android/server/display/DisplayPowerState;)V
PLcom/android/server/display/DisplayPowerState$PhotonicModulator;-><init>(Lcom/android/server/display/DisplayPowerState;)V
HPLcom/android/server/display/DisplayPowerState$PhotonicModulator;->run()V
-PLcom/android/server/display/DisplayPowerState$PhotonicModulator;->setState(IFF)Z
-PLcom/android/server/display/DisplayPowerState;->-$$Nest$fgetmBlanker(Lcom/android/server/display/DisplayPowerState;)Lcom/android/server/display/DisplayBlanker;
-PLcom/android/server/display/DisplayPowerState;->-$$Nest$fgetmColorFadeLevel(Lcom/android/server/display/DisplayPowerState;)F
-PLcom/android/server/display/DisplayPowerState;->-$$Nest$fgetmDisplayId(Lcom/android/server/display/DisplayPowerState;)I
-PLcom/android/server/display/DisplayPowerState;->-$$Nest$fgetmPhotonicModulator(Lcom/android/server/display/DisplayPowerState;)Lcom/android/server/display/DisplayPowerState$PhotonicModulator;
-PLcom/android/server/display/DisplayPowerState;->-$$Nest$fgetmScreenBrightness(Lcom/android/server/display/DisplayPowerState;)F
-PLcom/android/server/display/DisplayPowerState;->-$$Nest$fgetmScreenState(Lcom/android/server/display/DisplayPowerState;)I
-PLcom/android/server/display/DisplayPowerState;->-$$Nest$fgetmSdrScreenBrightness(Lcom/android/server/display/DisplayPowerState;)F
-PLcom/android/server/display/DisplayPowerState;->-$$Nest$fputmScreenReady(Lcom/android/server/display/DisplayPowerState;Z)V
-PLcom/android/server/display/DisplayPowerState;->-$$Nest$fputmScreenUpdatePending(Lcom/android/server/display/DisplayPowerState;Z)V
-PLcom/android/server/display/DisplayPowerState;->-$$Nest$minvokeCleanListenerIfNeeded(Lcom/android/server/display/DisplayPowerState;)V
-PLcom/android/server/display/DisplayPowerState;->-$$Nest$mpostScreenUpdateThreadSafe(Lcom/android/server/display/DisplayPowerState;)V
-PLcom/android/server/display/DisplayPowerState;->-$$Nest$sfgetDEBUG()Z
PLcom/android/server/display/DisplayPowerState;-><clinit>()V
-PLcom/android/server/display/DisplayPowerState;-><init>(Lcom/android/server/display/DisplayBlanker;Lcom/android/server/display/ColorFade;II)V
PLcom/android/server/display/DisplayPowerState;-><init>(Lcom/android/server/display/DisplayBlanker;Lcom/android/server/display/ColorFade;IILjava/util/concurrent/Executor;)V
-PLcom/android/server/display/DisplayPowerState;->dismissColorFade()V
-PLcom/android/server/display/DisplayPowerState;->getColorFadeLevel()F
-PLcom/android/server/display/DisplayPowerState;->getScreenBrightness()F
-PLcom/android/server/display/DisplayPowerState;->getScreenState()I
-PLcom/android/server/display/DisplayPowerState;->getSdrScreenBrightness()F
-PLcom/android/server/display/DisplayPowerState;->invokeCleanListenerIfNeeded()V
-PLcom/android/server/display/DisplayPowerState;->postScreenUpdateThreadSafe()V
-PLcom/android/server/display/DisplayPowerState;->scheduleScreenUpdate()V
+HPLcom/android/server/display/DisplayPowerState;->dismissColorFade()V
+HPLcom/android/server/display/DisplayPowerState;->scheduleScreenUpdate()V
PLcom/android/server/display/DisplayPowerState;->setColorFadeLevel(F)V
-PLcom/android/server/display/DisplayPowerState;->setScreenBrightness(F)V
-PLcom/android/server/display/DisplayPowerState;->setSdrScreenBrightness(F)V
-PLcom/android/server/display/DisplayPowerState;->waitUntilClean(Ljava/lang/Runnable;)Z
+HPLcom/android/server/display/DisplayPowerState;->waitUntilClean(Lcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda1;)Z
PLcom/android/server/display/ExternalDisplayPolicy$SkinThermalStatusObserver;-><init>(Lcom/android/server/display/ExternalDisplayPolicy;)V
-PLcom/android/server/display/ExternalDisplayPolicy$SkinThermalStatusObserver;-><init>(Lcom/android/server/display/ExternalDisplayPolicy;Lcom/android/server/display/ExternalDisplayPolicy$SkinThermalStatusObserver-IA;)V
PLcom/android/server/display/ExternalDisplayPolicy$SkinThermalStatusObserver;->notifyThrottling(Landroid/os/Temperature;)V
-PLcom/android/server/display/ExternalDisplayPolicy;->-$$Nest$fgetmStatus(Lcom/android/server/display/ExternalDisplayPolicy;)I
-PLcom/android/server/display/ExternalDisplayPolicy;->-$$Nest$fputmStatus(Lcom/android/server/display/ExternalDisplayPolicy;I)V
HSPLcom/android/server/display/ExternalDisplayPolicy;-><clinit>()V
-HSPLcom/android/server/display/ExternalDisplayPolicy;-><init>(Lcom/android/server/display/ExternalDisplayPolicy$Injector;)V
-HSPLcom/android/server/display/ExternalDisplayPolicy;->isExternalDisplay(Lcom/android/server/display/LogicalDisplay;)Z
-PLcom/android/server/display/ExternalDisplayPolicy;->onBootCompleted()V
-PLcom/android/server/display/ExternalDisplayPolicy;->registerThermalServiceListener(Landroid/os/IThermalEventListener$Stub;)Z
+HSPLcom/android/server/display/ExternalDisplayPolicy;-><init>(Lcom/android/server/display/DisplayManagerService$1;)V
+HSPLcom/android/server/display/ExternalDisplayPolicy;->isExternalDisplayLocked(Lcom/android/server/display/LogicalDisplay;)Z
+HSPLcom/android/server/display/ExternalDisplayStatsService$1$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/ExternalDisplayStatsService$1;I)V
+HSPLcom/android/server/display/ExternalDisplayStatsService$1;-><init>(Lcom/android/server/display/ExternalDisplayStatsService;)V
+HSPLcom/android/server/display/ExternalDisplayStatsService$2;-><init>(Lcom/android/server/display/ExternalDisplayStatsService;)V
+HSPLcom/android/server/display/ExternalDisplayStatsService$Injector;-><init>(Landroid/content/Context;Lcom/android/server/display/DisplayManagerService$DisplayManagerHandler;Lcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda5;)V
+HSPLcom/android/server/display/ExternalDisplayStatsService;-><clinit>()V
+HSPLcom/android/server/display/ExternalDisplayStatsService;-><init>(Lcom/android/server/display/ExternalDisplayStatsService$Injector;)V
PLcom/android/server/display/HighBrightnessModeController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/HighBrightnessModeController;)V
+PLcom/android/server/display/HighBrightnessModeController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/display/HighBrightnessModeController;Ljava/io/PrintWriter;)V
+PLcom/android/server/display/HighBrightnessModeController$$ExternalSyntheticLambda1;->run()V
PLcom/android/server/display/HighBrightnessModeController$HdrListener;-><init>(Lcom/android/server/display/HighBrightnessModeController;)V
-PLcom/android/server/display/HighBrightnessModeController$Injector$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/display/HighBrightnessModeController$Injector;-><init>()V
-PLcom/android/server/display/HighBrightnessModeController$Injector;->getClock()Lcom/android/server/display/DisplayManagerService$Clock;
PLcom/android/server/display/HighBrightnessModeController$SettingsObserver;-><init>(Lcom/android/server/display/HighBrightnessModeController;Landroid/os/Handler;)V
-PLcom/android/server/display/HighBrightnessModeController$SettingsObserver;->stopObserving()V
-PLcom/android/server/display/HighBrightnessModeController;->-$$Nest$fputmIsBlockedByLowPowerMode(Lcom/android/server/display/HighBrightnessModeController;Z)V
+PLcom/android/server/display/HighBrightnessModeController$SettingsObserver;->updateLowPower()V
PLcom/android/server/display/HighBrightnessModeController;-><clinit>()V
-PLcom/android/server/display/HighBrightnessModeController;-><init>(Landroid/os/Handler;IILandroid/os/IBinder;Ljava/lang/String;FFLcom/android/server/display/DisplayDeviceConfig$HighBrightnessModeData;Lcom/android/server/display/HighBrightnessModeController$HdrBrightnessDeviceConfig;Ljava/lang/Runnable;Lcom/android/server/display/HighBrightnessModeMetadata;Landroid/content/Context;)V
-PLcom/android/server/display/HighBrightnessModeController;-><init>(Lcom/android/server/display/HighBrightnessModeController$Injector;Landroid/os/Handler;IILandroid/os/IBinder;Ljava/lang/String;FFLcom/android/server/display/DisplayDeviceConfig$HighBrightnessModeData;Lcom/android/server/display/HighBrightnessModeController$HdrBrightnessDeviceConfig;Ljava/lang/Runnable;Lcom/android/server/display/HighBrightnessModeMetadata;Landroid/content/Context;)V
-PLcom/android/server/display/HighBrightnessModeController;->deviceSupportsHbm()Z
-PLcom/android/server/display/HighBrightnessModeController;->getCurrentBrightnessMax()F
-PLcom/android/server/display/HighBrightnessModeController;->getCurrentBrightnessMin()F
-PLcom/android/server/display/HighBrightnessModeController;->getHighBrightnessMode()I
-PLcom/android/server/display/HighBrightnessModeController;->getTransitionPoint()F
-PLcom/android/server/display/HighBrightnessModeController;->onBrightnessChanged(FFI)V
-PLcom/android/server/display/HighBrightnessModeController;->resetHbmData(IILandroid/os/IBinder;Ljava/lang/String;Lcom/android/server/display/DisplayDeviceConfig$HighBrightnessModeData;Lcom/android/server/display/HighBrightnessModeController$HdrBrightnessDeviceConfig;)V
-PLcom/android/server/display/HighBrightnessModeController;->setAutoBrightnessEnabled(I)V
-PLcom/android/server/display/HighBrightnessModeController;->unregisterHdrListener()V
+PLcom/android/server/display/HighBrightnessModeController;-><init>(Lcom/android/server/display/HighBrightnessModeController$Injector;Landroid/os/Handler;IILandroid/os/IBinder;Ljava/lang/String;FFLcom/android/server/display/config/HighBrightnessModeData;Lcom/android/server/display/HighBrightnessModeController$HdrBrightnessDeviceConfig;Ljava/lang/Runnable;Lcom/android/server/display/HighBrightnessModeMetadata;Landroid/content/Context;)V
+HPLcom/android/server/display/HighBrightnessModeController;->calculateRemainingTime(J)J+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/Iterator;Ljava/util/ArrayDeque$DeqIterator;
+HPLcom/android/server/display/HighBrightnessModeController;->deviceSupportsHbm()Z
+HPLcom/android/server/display/HighBrightnessModeController;->getCurrentBrightnessMax()F
+HPLcom/android/server/display/HighBrightnessModeController;->isHbmCurrentlyAllowed()Z
+HPLcom/android/server/display/HighBrightnessModeController;->onBrightnessChanged(FFI)V
+HPLcom/android/server/display/HighBrightnessModeController;->recalculateTimeAllowance()V
+PLcom/android/server/display/HighBrightnessModeController;->resetHbmData(IILandroid/os/IBinder;Ljava/lang/String;Lcom/android/server/display/config/HighBrightnessModeData;Lcom/android/server/display/HighBrightnessModeController$HdrBrightnessDeviceConfig;)V
+HPLcom/android/server/display/HighBrightnessModeController;->updateHbmMode()V
+PLcom/android/server/display/HighBrightnessModeMetadata;-><init>()V
HSPLcom/android/server/display/HighBrightnessModeMetadataMapper;-><init>()V
-PLcom/android/server/display/HighBrightnessModeMetadataMapper;->getHighBrightnessModeMetadataLocked(Lcom/android/server/display/LogicalDisplay;)Lcom/android/server/display/HighBrightnessModeMetadata;
+HPLcom/android/server/display/HighBrightnessModeMetadataMapper;->getHighBrightnessModeMetadataLocked(Lcom/android/server/display/LogicalDisplay;)Lcom/android/server/display/HighBrightnessModeMetadata;
HSPLcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;-><init>(Landroid/os/IBinder;ZLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;)V
-PLcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;->setBacklight(FFFF)V
-HSPLcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;->setForceSurfaceControl(Z)V
+HPLcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;->setBacklight(FFFF)V
+PLcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;->toString()Ljava/lang/String;
HSPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;-><init>(Landroid/view/SurfaceControl$DisplayMode;[F)V
HSPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;->hasMatchingMode(Landroid/view/SurfaceControl$DisplayMode;)Z
-HSPLcom/android/server/display/LocalDisplayAdapter$Injector;-><init>()V
-HSPLcom/android/server/display/LocalDisplayAdapter$Injector;->createDisplayDeviceConfig(Landroid/content/Context;JZLcom/android/server/display/feature/DisplayManagerFlags;)Lcom/android/server/display/DisplayDeviceConfig;
-HSPLcom/android/server/display/LocalDisplayAdapter$Injector;->getSurfaceControlProxy()Lcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;
-HSPLcom/android/server/display/LocalDisplayAdapter$Injector;->setDisplayEventListenerLocked(Landroid/os/Looper;Lcom/android/server/display/LocalDisplayAdapter$DisplayEventListener;)V
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;->toString()Ljava/lang/String;
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$$ExternalSyntheticLambda0;-><init>(I)V
PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;-><init>(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;IIZFFJLcom/android/server/display/DisplayOffloadSessionImpl;Landroid/os/IBinder;)V
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->backlightToNits(F)F
+HPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;-><init>(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;IIZFFJLcom/android/server/display/DisplayOffloadSessionImpl;Landroid/os/IBinder;)V
PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->brightnessToBacklight(F)F
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->run()V
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setCommittedState(I)V
-HPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setDisplayBrightness(FF)V
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setDisplayState(I)V
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->$r8$lambda$nQXuR3rRi3rSRLFK9tosCrQw4ig(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;Landroid/os/IBinder;Landroid/view/SurfaceControl$DesiredDisplayModeSpecs;)V
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->-$$Nest$fgetmBacklightAdapter(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;)Lcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->-$$Nest$fputmBrightnessState(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;F)V
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->-$$Nest$fputmCommittedState(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;I)V
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->-$$Nest$fputmSdrBrightnessState(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;F)V
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->-$$Nest$mupdateDeviceInfoLocked(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;)V
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;-><clinit>()V
+HPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->run()V
+HPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setDisplayState(I)V
HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;-><init>(Lcom/android/server/display/LocalDisplayAdapter;Landroid/os/IBinder;JLandroid/view/SurfaceControl$StaticDisplayInfo;Landroid/view/SurfaceControl$DynamicDisplayInfo;Landroid/view/SurfaceControl$DesiredDisplayModeSpecs;Z)V
PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->applyPendingDisplayDeviceInfoChangesLocked()V
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findDisplayModeRecord(Landroid/view/SurfaceControl$DisplayMode;Ljava/util/List;)Lcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->dumpLocked(Ljava/io/PrintWriter;)V
HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findMatchingModeIdLocked(I)I
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findSfDisplayModeIdLocked(II)I
+HPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findSfDisplayModeIdLocked(II)I
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findUserPreferredModeIdLocked(Landroid/view/Display$Mode;)I
HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getDisplayDeviceConfig()Lcom/android/server/display/DisplayDeviceConfig;
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getDisplayDeviceInfoLocked()Lcom/android/server/display/DisplayDeviceInfo;
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getDisplayModes(Landroid/util/SparseArray;)[Landroid/view/Display$Mode;
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getLogicalDensity()I
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getDisplayDeviceInfoLocked()Lcom/android/server/display/DisplayDeviceInfo;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getModeById([Landroid/view/SurfaceControl$DisplayMode;I)Landroid/view/SurfaceControl$DisplayMode;
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getPreferredModeId()I
HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->hasStableUniqueId()Z
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->loadDisplayDeviceConfig()V
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->onActiveDisplayModeChangedLocked(IF)V
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->onFrameRateOverridesChanged([Landroid/view/DisplayEventReceiver$FrameRateOverride;)V
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->requestColorModeLocked(I)V
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->requestDisplayStateLocked(IFFLcom/android/server/display/DisplayOffloadSessionImpl;)Ljava/lang/Runnable;
+HPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->requestDisplayStateLocked(IFFLcom/android/server/display/DisplayOffloadSessionImpl;)Ljava/lang/Runnable;
PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setAutoLowLatencyModeLocked(Z)V
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setDesiredDisplayModeSpecsAsync(Landroid/os/IBinder;Landroid/view/SurfaceControl$DesiredDisplayModeSpecs;)V
HPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setDesiredDisplayModeSpecsLocked(Lcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;)V
PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setGameContentTypeLocked(Z)V
PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setRequestedColorModeLocked(I)V
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateActiveModeLocked(IF)Z
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateAllmSupport(Z)Z
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateColorModesLocked([II)Z
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setUserPreferredDisplayModeLocked(Landroid/view/Display$Mode;)V
PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateDeviceInfoLocked()V
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateDisplayModesLocked([Landroid/view/SurfaceControl$DisplayMode;IIFLandroid/view/SurfaceControl$DesiredDisplayModeSpecs;)Z
HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateDisplayPropertiesLocked(Landroid/view/SurfaceControl$StaticDisplayInfo;Landroid/view/SurfaceControl$DynamicDisplayInfo;Landroid/view/SurfaceControl$DesiredDisplayModeSpecs;)Z
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateFrameRateOverridesLocked([Landroid/view/DisplayEventReceiver$FrameRateOverride;)Z
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateGameContentTypeSupport(Z)Z
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateHdrCapabilitiesLocked(Landroid/view/Display$HdrCapabilities;)Z
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateStaticInfo(Landroid/view/SurfaceControl$StaticDisplayInfo;)Z
HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayEventListener;-><init>(Lcom/android/server/display/LocalDisplayAdapter;)V
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayEventListener;-><init>(Lcom/android/server/display/LocalDisplayAdapter;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayEventListener-IA;)V
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayEventListener;->onFrameRateOverridesChanged(JJ[Landroid/view/DisplayEventReceiver$FrameRateOverride;)V
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayEventListener;->onModeChanged(JJIJ)V
-HSPLcom/android/server/display/LocalDisplayAdapter$ProxyDisplayEventReceiver;-><init>(Landroid/os/Looper;Lcom/android/server/display/LocalDisplayAdapter$DisplayEventListener;)V
-PLcom/android/server/display/LocalDisplayAdapter$ProxyDisplayEventReceiver;->onFrameRateOverridesChanged(JJ[Landroid/view/DisplayEventReceiver$FrameRateOverride;)V
+HSPLcom/android/server/display/LocalDisplayAdapter$ProxyDisplayEventReceiver;-><init>(Landroid/os/Looper;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayEventListener;)V
PLcom/android/server/display/LocalDisplayAdapter$ProxyDisplayEventReceiver;->onModeChanged(JJIJ)V
HSPLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;-><init>()V
-HSPLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;->getBootDisplayModeSupport()Z
-HSPLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;->getDesiredDisplayModeSpecs(Landroid/os/IBinder;)Landroid/view/SurfaceControl$DesiredDisplayModeSpecs;
-HSPLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;->getDisplayBrightnessSupport(Landroid/os/IBinder;)Z
-HSPLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;->getDynamicDisplayInfo(J)Landroid/view/SurfaceControl$DynamicDisplayInfo;
-HSPLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;->getPhysicalDisplayIds()[J
-HSPLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;->getPhysicalDisplayToken(J)Landroid/os/IBinder;
-HSPLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;->getStaticDisplayInfo(J)Landroid/view/SurfaceControl$StaticDisplayInfo;
-PLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;->setDesiredDisplayModeSpecs(Landroid/os/IBinder;Landroid/view/SurfaceControl$DesiredDisplayModeSpecs;)Z
-PLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;->setDisplayPowerMode(Landroid/os/IBinder;I)V
-PLcom/android/server/display/LocalDisplayAdapter;->-$$Nest$fgetmDevices(Lcom/android/server/display/LocalDisplayAdapter;)Landroid/util/LongSparseArray;
-HSPLcom/android/server/display/LocalDisplayAdapter;->-$$Nest$fgetmInjector(Lcom/android/server/display/LocalDisplayAdapter;)Lcom/android/server/display/LocalDisplayAdapter$Injector;
-HSPLcom/android/server/display/LocalDisplayAdapter;->-$$Nest$fgetmSurfaceControlProxy(Lcom/android/server/display/LocalDisplayAdapter;)Lcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;
-HSPLcom/android/server/display/LocalDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/notifications/DisplayNotificationManager;)V
HSPLcom/android/server/display/LocalDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/notifications/DisplayNotificationManager;Lcom/android/server/display/LocalDisplayAdapter$Injector;)V
-HSPLcom/android/server/display/LocalDisplayAdapter;->getOverlayContext()Landroid/content/Context;
-PLcom/android/server/display/LocalDisplayAdapter;->getPowerModeForState(I)I
HSPLcom/android/server/display/LocalDisplayAdapter;->registerLocked()V
HSPLcom/android/server/display/LocalDisplayAdapter;->tryConnectDisplayLocked(J)V
HSPLcom/android/server/display/LogicalDisplay;-><clinit>()V
-HSPLcom/android/server/display/LogicalDisplay;-><init>(IILcom/android/server/display/DisplayDevice;)V
-HPLcom/android/server/display/LogicalDisplay;->configureDisplayLocked(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/display/DisplayDevice;Z)V
-PLcom/android/server/display/LogicalDisplay;->getDesiredDisplayModeSpecsLocked()Lcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;
-HSPLcom/android/server/display/LogicalDisplay;->getDisplayGroupNameLocked()Ljava/lang/String;
-HSPLcom/android/server/display/LogicalDisplay;->getDisplayIdLocked()I
+HSPLcom/android/server/display/LogicalDisplay;-><init>(IILcom/android/server/display/DisplayDevice;ZZ)V
+PLcom/android/server/display/LogicalDisplay;->dumpLocked(Ljava/io/PrintWriter;)V
HSPLcom/android/server/display/LogicalDisplay;->getDisplayInfoLocked()Landroid/view/DisplayInfo;
-PLcom/android/server/display/LogicalDisplay;->getDisplayOffloadSessionLocked()Lcom/android/server/display/DisplayOffloadSessionImpl;
-HSPLcom/android/server/display/LogicalDisplay;->getFrameRateOverrides()[Landroid/view/DisplayEventReceiver$FrameRateOverride;
-PLcom/android/server/display/LogicalDisplay;->getInsets()Landroid/graphics/Rect;
-PLcom/android/server/display/LogicalDisplay;->getLeadDisplayIdLocked()I
HSPLcom/android/server/display/LogicalDisplay;->getMaskingInsets(Lcom/android/server/display/DisplayDeviceInfo;)Landroid/graphics/Rect;
-HSPLcom/android/server/display/LogicalDisplay;->getNonOverrideDisplayInfoLocked(Landroid/view/DisplayInfo;)V
-PLcom/android/server/display/LogicalDisplay;->getPowerThrottlingDataIdLocked()Ljava/lang/String;
-HSPLcom/android/server/display/LogicalDisplay;->getPrimaryDisplayDeviceLocked()Lcom/android/server/display/DisplayDevice;
-PLcom/android/server/display/LogicalDisplay;->getRequestedMinimalPostProcessingLocked()Z
-PLcom/android/server/display/LogicalDisplay;->hasContentLocked()Z
-HSPLcom/android/server/display/LogicalDisplay;->isDirtyLocked()Z
-HSPLcom/android/server/display/LogicalDisplay;->isEnabledLocked()Z
-PLcom/android/server/display/LogicalDisplay;->isInTransitionLocked()Z
-HSPLcom/android/server/display/LogicalDisplay;->isValidLocked()Z
-PLcom/android/server/display/LogicalDisplay;->setDesiredDisplayModeSpecsLocked(Lcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;)V
-HSPLcom/android/server/display/LogicalDisplay;->setDevicePositionLocked(I)V
-HSPLcom/android/server/display/LogicalDisplay;->setDisplayGroupNameLocked(Ljava/lang/String;)V
-PLcom/android/server/display/LogicalDisplay;->setDisplayInfoOverrideFromWindowManagerLocked(Landroid/view/DisplayInfo;)Z
-PLcom/android/server/display/LogicalDisplay;->setDisplayOffloadSessionLocked(Lcom/android/server/display/DisplayOffloadSessionImpl;)V
-HSPLcom/android/server/display/LogicalDisplay;->setLeadDisplayLocked(I)V
-HSPLcom/android/server/display/LogicalDisplay;->setPowerThrottlingDataIdLocked(Ljava/lang/String;)V
HSPLcom/android/server/display/LogicalDisplay;->setPrimaryDisplayDeviceLocked(Lcom/android/server/display/DisplayDevice;)Lcom/android/server/display/DisplayDevice;
-HSPLcom/android/server/display/LogicalDisplay;->setRequestedColorModeLocked(I)V
-HSPLcom/android/server/display/LogicalDisplay;->setThermalBrightnessThrottlingDataIdLocked(Ljava/lang/String;)V
-HSPLcom/android/server/display/LogicalDisplay;->swapDisplaysLocked(Lcom/android/server/display/LogicalDisplay;)V
-HSPLcom/android/server/display/LogicalDisplay;->updateDisplayGroupIdLocked(I)V
-HSPLcom/android/server/display/LogicalDisplay;->updateFrameRateOverrides(Lcom/android/server/display/DisplayDeviceInfo;)V
-HSPLcom/android/server/display/LogicalDisplay;->updateLayoutLimitedRefreshRateLocked(Landroid/view/SurfaceControl$RefreshRateRange;)V
-HSPLcom/android/server/display/LogicalDisplay;->updateLocked(Lcom/android/server/display/DisplayDeviceRepository;)V
-HSPLcom/android/server/display/LogicalDisplay;->updateThermalRefreshRateThrottling(Landroid/util/SparseArray;)V
-HSPLcom/android/server/display/LogicalDisplayMapper$$ExternalSyntheticLambda0;-><init>()V
-HSPLcom/android/server/display/LogicalDisplayMapper$$ExternalSyntheticLambda3;-><init>()V
-HSPLcom/android/server/display/LogicalDisplayMapper$$ExternalSyntheticLambda3;->getId(Z)I
+HSPLcom/android/server/display/LogicalDisplay;->updateLocked(Lcom/android/server/display/DisplayDeviceRepository;Lcom/android/server/display/mode/SyntheticModeManager;)V
+HSPLcom/android/server/display/LogicalDisplayMapper$$ExternalSyntheticLambda2;-><init>(I)V
+HSPLcom/android/server/display/LogicalDisplayMapper$$ExternalSyntheticLambda2;->getId(Z)I
HSPLcom/android/server/display/LogicalDisplayMapper$LogicalDisplayMapperHandler;-><init>(Lcom/android/server/display/LogicalDisplayMapper;Landroid/os/Looper;)V
-HSPLcom/android/server/display/LogicalDisplayMapper;->$r8$lambda$CLkgta2MkaptkxpiszN50MW0yV0(Z)I
HSPLcom/android/server/display/LogicalDisplayMapper;-><clinit>()V
-HSPLcom/android/server/display/LogicalDisplayMapper;-><init>(Landroid/content/Context;Lcom/android/server/utils/FoldSettingProvider;Lcom/android/server/display/DisplayDeviceRepository;Lcom/android/server/display/LogicalDisplayMapper$Listener;Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/os/Handler;Lcom/android/server/display/DeviceStateToLayoutMap;Lcom/android/server/display/feature/DisplayManagerFlags;)V
-HSPLcom/android/server/display/LogicalDisplayMapper;-><init>(Landroid/content/Context;Lcom/android/server/utils/FoldSettingProvider;Lcom/android/server/display/DisplayDeviceRepository;Lcom/android/server/display/LogicalDisplayMapper$Listener;Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/os/Handler;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+HSPLcom/android/server/display/LogicalDisplayMapper;-><init>(Landroid/content/Context;Lcom/android/server/utils/FoldSettingProvider;Lcom/android/internal/foldables/FoldGracePeriodProvider;Lcom/android/server/display/DisplayDeviceRepository;Lcom/android/server/display/DisplayManagerService$1;Lcom/android/server/display/DisplayManagerService$SyncRoot;Lcom/android/server/display/DisplayManagerService$DisplayManagerHandler;Lcom/android/server/display/feature/DisplayManagerFlags;)V
HSPLcom/android/server/display/LogicalDisplayMapper;->applyLayoutLocked()V
PLcom/android/server/display/LogicalDisplayMapper;->areAllTransitioningDisplaysOffLocked()Z
-HSPLcom/android/server/display/LogicalDisplayMapper;->assignDisplayGroupIdLocked(ZLjava/lang/String;ZLjava/lang/Integer;)I
-HSPLcom/android/server/display/LogicalDisplayMapper;->assignDisplayGroupLocked(Lcom/android/server/display/LogicalDisplay;)V
-HSPLcom/android/server/display/LogicalDisplayMapper;->assignLayerStackLocked(I)I
HSPLcom/android/server/display/LogicalDisplayMapper;->createNewLogicalDisplayLocked(Lcom/android/server/display/DisplayDevice;I)Lcom/android/server/display/LogicalDisplay;
-PLcom/android/server/display/LogicalDisplayMapper;->finishStateTransitionLocked(Z)V
-PLcom/android/server/display/LogicalDisplayMapper;->forEachLocked(Ljava/util/function/Consumer;)V
-HPLcom/android/server/display/LogicalDisplayMapper;->forEachLocked(Ljava/util/function/Consumer;Z)V
+PLcom/android/server/display/LogicalDisplayMapper;->dumpLocked(Ljava/io/PrintWriter;)V
+HPLcom/android/server/display/LogicalDisplayMapper;->finishStateTransitionLocked(Z)V
+HPLcom/android/server/display/LogicalDisplayMapper;->forEachLocked(Ljava/util/function/Consumer;Z)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/function/Consumer;Lcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda7;
HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayGroupIdFromDisplayIdLocked(I)I
-HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayGroupLocked(I)Lcom/android/server/display/DisplayGroup;
-HPLcom/android/server/display/LogicalDisplayMapper;->getDisplayIdsLocked(IZ)[I
-HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayLocked(I)Lcom/android/server/display/LogicalDisplay;
-HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayLocked(IZ)Lcom/android/server/display/LogicalDisplay;
-HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayLocked(Lcom/android/server/display/DisplayDevice;)Lcom/android/server/display/LogicalDisplay;
-HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayLocked(Lcom/android/server/display/DisplayDevice;Z)Lcom/android/server/display/LogicalDisplay;
-HSPLcom/android/server/display/LogicalDisplayMapper;->handleDisplayDeviceAddedLocked(Lcom/android/server/display/DisplayDevice;)V
-HSPLcom/android/server/display/LogicalDisplayMapper;->initializeDefaultDisplayDeviceLocked(Lcom/android/server/display/DisplayDevice;)V
-HSPLcom/android/server/display/LogicalDisplayMapper;->lambda$new$0(Z)I
-PLcom/android/server/display/LogicalDisplayMapper;->onBootCompleted()V
-PLcom/android/server/display/LogicalDisplayMapper;->onDisplayDeviceChangedLocked(Lcom/android/server/display/DisplayDevice;I)V
-HSPLcom/android/server/display/LogicalDisplayMapper;->onDisplayDeviceEventLocked(Lcom/android/server/display/DisplayDevice;I)V
-HSPLcom/android/server/display/LogicalDisplayMapper;->onTraversalRequested()V
+HPLcom/android/server/display/LogicalDisplayMapper;->getDisplayIdsForGroupLocked(I)[I
+PLcom/android/server/display/LogicalDisplayMapper;->getDisplayInfoForStateLocked(II)Landroid/view/DisplayInfo;
+HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayLocked(IZ)Lcom/android/server/display/LogicalDisplay;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayLocked(Lcom/android/server/display/DisplayDevice;)Lcom/android/server/display/LogicalDisplay;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
PLcom/android/server/display/LogicalDisplayMapper;->resetLayoutLocked(IIZ)V
-HSPLcom/android/server/display/LogicalDisplayMapper;->sendUpdatesForDisplaysLocked(I)V
+HSPLcom/android/server/display/LogicalDisplayMapper;->sendUpdatesForDisplaysLocked(I)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HSPLcom/android/server/display/LogicalDisplayMapper;->sendUpdatesForGroupsLocked(I)V
-PLcom/android/server/display/LogicalDisplayMapper;->setDeviceStateLocked(IZ)V
+PLcom/android/server/display/LogicalDisplayMapper;->setDeviceStateLocked(Landroid/hardware/devicestate/DeviceState;)V
HSPLcom/android/server/display/LogicalDisplayMapper;->setEnabledLocked(Lcom/android/server/display/LogicalDisplay;Z)V
-PLcom/android/server/display/LogicalDisplayMapper;->shouldDeviceBePutToSleep(IIZZZ)Z
-PLcom/android/server/display/LogicalDisplayMapper;->shouldDeviceBeWoken(IIZZ)Z
-HSPLcom/android/server/display/LogicalDisplayMapper;->toSparseBooleanArray([I)Landroid/util/SparseBooleanArray;
+PLcom/android/server/display/LogicalDisplayMapper;->shouldDeviceBePutToSleep(Landroid/hardware/devicestate/DeviceState;Landroid/hardware/devicestate/DeviceState;ZZ)Z
+PLcom/android/server/display/LogicalDisplayMapper;->shouldDeviceBeWoken(Landroid/hardware/devicestate/DeviceState;Landroid/hardware/devicestate/DeviceState;ZZ)Z
PLcom/android/server/display/LogicalDisplayMapper;->transitionToPendingStateLocked()V
-HSPLcom/android/server/display/LogicalDisplayMapper;->updateLogicalDisplaysLocked()V
-HSPLcom/android/server/display/LogicalDisplayMapper;->updateLogicalDisplaysLocked(I)V
-HSPLcom/android/server/display/LogicalDisplayMapper;->updateLogicalDisplaysLocked(IZ)V
-PLcom/android/server/display/NormalBrightnessModeController;-><init>()V
-PLcom/android/server/display/NormalBrightnessModeController;->getCurrentBrightnessMax()F
-PLcom/android/server/display/NormalBrightnessModeController;->recalculateMaxBrightness()Z
-PLcom/android/server/display/NormalBrightnessModeController;->resetNbmData(Ljava/util/Map;)Z
-PLcom/android/server/display/NormalBrightnessModeController;->setAutoBrightnessState(I)Z
+HPLcom/android/server/display/LogicalDisplayMapper;->updateAndGetMaskForDisplayPropertyChanges(Landroid/view/DisplayInfo;)I
+HSPLcom/android/server/display/LogicalDisplayMapper;->updateLogicalDisplaysLocked$1()V
+HSPLcom/android/server/display/LogicalDisplayMapper;->updateLogicalDisplaysLocked(IZ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/display/NormalBrightnessModeController;->recalculateMaxBrightness()Z
PLcom/android/server/display/OverlayDisplayAdapter$1$1;-><init>(Lcom/android/server/display/OverlayDisplayAdapter$1;Landroid/os/Handler;)V
PLcom/android/server/display/OverlayDisplayAdapter$1;-><init>(Lcom/android/server/display/OverlayDisplayAdapter;)V
PLcom/android/server/display/OverlayDisplayAdapter$1;->run()V
-PLcom/android/server/display/OverlayDisplayAdapter;->-$$Nest$mupdateOverlayDisplayDevices(Lcom/android/server/display/OverlayDisplayAdapter;)V
PLcom/android/server/display/OverlayDisplayAdapter;-><clinit>()V
PLcom/android/server/display/OverlayDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Landroid/os/Handler;Lcom/android/server/display/feature/DisplayManagerFlags;)V
-PLcom/android/server/display/OverlayDisplayAdapter;->registerLocked()V
-PLcom/android/server/display/OverlayDisplayAdapter;->updateOverlayDisplayDevices()V
+PLcom/android/server/display/OverlayDisplayAdapter;->dumpLocked(Ljava/io/PrintWriter;)V
PLcom/android/server/display/OverlayDisplayAdapter;->updateOverlayDisplayDevicesLocked()V
+PLcom/android/server/display/PersistentDataStore$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/PersistentDataStore;Ljava/io/ByteArrayOutputStream;)V
+PLcom/android/server/display/PersistentDataStore$$ExternalSyntheticLambda0;->run()V
HSPLcom/android/server/display/PersistentDataStore$BrightnessConfigurations;-><init>()V
-PLcom/android/server/display/PersistentDataStore$BrightnessConfigurations;->getBrightnessConfiguration(I)Landroid/hardware/display/BrightnessConfiguration;
+PLcom/android/server/display/PersistentDataStore$BrightnessConfigurations;->dump(Ljava/io/PrintWriter;)V
HSPLcom/android/server/display/PersistentDataStore$BrightnessConfigurations;->loadFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)V
+PLcom/android/server/display/PersistentDataStore$BrightnessConfigurations;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;)V
+HSPLcom/android/server/display/PersistentDataStore$DisplayState;-><init>()V
+HPLcom/android/server/display/PersistentDataStore$DisplayState;->getBrightness(I)F
HSPLcom/android/server/display/PersistentDataStore$Injector;-><init>()V
-HSPLcom/android/server/display/PersistentDataStore$Injector;->openRead()Ljava/io/InputStream;
-HSPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->-$$Nest$mgetDisplaySize(Lcom/android/server/display/PersistentDataStore$StableDeviceValues;)Landroid/graphics/Point;
-HSPLcom/android/server/display/PersistentDataStore$StableDeviceValues;-><init>()V
-HSPLcom/android/server/display/PersistentDataStore$StableDeviceValues;-><init>(Lcom/android/server/display/PersistentDataStore$StableDeviceValues-IA;)V
-HSPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->getDisplaySize()Landroid/graphics/Point;
-HSPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->loadFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)V
-HSPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->loadIntValue(Lcom/android/modules/utils/TypedXmlPullParser;)I
-HSPLcom/android/server/display/PersistentDataStore;-><init>()V
+PLcom/android/server/display/PersistentDataStore$Injector;->finishWrite(Ljava/io/OutputStream;)V
HSPLcom/android/server/display/PersistentDataStore;-><init>(Lcom/android/server/display/PersistentDataStore$Injector;)V
HSPLcom/android/server/display/PersistentDataStore;-><init>(Lcom/android/server/display/PersistentDataStore$Injector;Landroid/os/Handler;)V
-HSPLcom/android/server/display/PersistentDataStore;->clearState()V
-PLcom/android/server/display/PersistentDataStore;->getBrightness(Lcom/android/server/display/DisplayDevice;I)F
-PLcom/android/server/display/PersistentDataStore;->getBrightnessConfiguration(I)Landroid/hardware/display/BrightnessConfiguration;
-PLcom/android/server/display/PersistentDataStore;->getBrightnessConfigurationForDisplayLocked(Ljava/lang/String;I)Landroid/hardware/display/BrightnessConfiguration;
-HSPLcom/android/server/display/PersistentDataStore;->getColorMode(Lcom/android/server/display/DisplayDevice;)I
+PLcom/android/server/display/PersistentDataStore;->dump(Ljava/io/PrintWriter;)V
HSPLcom/android/server/display/PersistentDataStore;->getDisplayState(Ljava/lang/String;Z)Lcom/android/server/display/PersistentDataStore$DisplayState;
-HSPLcom/android/server/display/PersistentDataStore;->getStableDisplaySize()Landroid/graphics/Point;
-HSPLcom/android/server/display/PersistentDataStore;->getUserPreferredRefreshRate(Lcom/android/server/display/DisplayDevice;)F
-HSPLcom/android/server/display/PersistentDataStore;->getUserPreferredResolution(Lcom/android/server/display/DisplayDevice;)Landroid/graphics/Point;
-HSPLcom/android/server/display/PersistentDataStore;->load()V
-HSPLcom/android/server/display/PersistentDataStore;->loadDisplaysFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)V
HSPLcom/android/server/display/PersistentDataStore;->loadFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)V
HSPLcom/android/server/display/PersistentDataStore;->loadIfNeeded()V
-HSPLcom/android/server/display/PersistentDataStore;->loadRememberedWifiDisplaysFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)V
-PLcom/android/server/display/PersistentDataStore;->saveIfNeeded()V
-PLcom/android/server/display/RampAnimator$$ExternalSyntheticLambda0;-><init>()V
+HSPLcom/android/server/display/PersistentDataStore;->saveIfNeeded()V
+HPLcom/android/server/display/PersistentDataStore;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;)V
+HPLcom/android/server/display/PersistentDataStore;->setBrightness(Lcom/android/server/display/DisplayDevice;FI)V
PLcom/android/server/display/RampAnimator$DualRampAnimator$1;-><init>(Lcom/android/server/display/RampAnimator$DualRampAnimator;)V
-PLcom/android/server/display/RampAnimator$DualRampAnimator;-><init>(Ljava/lang/Object;Landroid/util/FloatProperty;Landroid/util/FloatProperty;)V
-PLcom/android/server/display/RampAnimator$DualRampAnimator;->animateTo(FFFZ)Z
-PLcom/android/server/display/RampAnimator$DualRampAnimator;->isAnimating()Z
-PLcom/android/server/display/RampAnimator$DualRampAnimator;->setAnimationTimeLimits(JJ)V
-PLcom/android/server/display/RampAnimator$DualRampAnimator;->setListener(Lcom/android/server/display/RampAnimator$Listener;)V
+PLcom/android/server/display/RampAnimator$DualRampAnimator;-><init>(Ljava/lang/Object;Lcom/android/server/display/DisplayPowerState$1;Lcom/android/server/display/DisplayPowerState$1;)V
+HPLcom/android/server/display/RampAnimator$DualRampAnimator;->isAnimating()Z
PLcom/android/server/display/RampAnimator;-><init>(Ljava/lang/Object;Landroid/util/FloatProperty;)V
-PLcom/android/server/display/RampAnimator;-><init>(Ljava/lang/Object;Landroid/util/FloatProperty;Lcom/android/server/display/RampAnimator$Clock;)V
-PLcom/android/server/display/RampAnimator;->isAnimating()Z
-PLcom/android/server/display/RampAnimator;->setAnimationTarget(FFFF)Z
-PLcom/android/server/display/RampAnimator;->setAnimationTarget(FFZ)Z
+HPLcom/android/server/display/RampAnimator;->setAnimationTarget(FFZ)Z
PLcom/android/server/display/RampAnimator;->setAnimationTimeLimits(JJ)V
-PLcom/android/server/display/RampAnimator;->setPropertyValue(F)V
PLcom/android/server/display/SmallAreaDetectionController$OnPropertiesChangedListener;-><init>(Lcom/android/server/display/SmallAreaDetectionController;)V
-PLcom/android/server/display/SmallAreaDetectionController$OnPropertiesChangedListener;-><init>(Lcom/android/server/display/SmallAreaDetectionController;Lcom/android/server/display/SmallAreaDetectionController$OnPropertiesChangedListener-IA;)V
+PLcom/android/server/display/SmallAreaDetectionController$OnPropertiesChangedListener;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
PLcom/android/server/display/SmallAreaDetectionController$PackageReceiver;-><init>(Lcom/android/server/display/SmallAreaDetectionController;)V
-PLcom/android/server/display/SmallAreaDetectionController$PackageReceiver;-><init>(Lcom/android/server/display/SmallAreaDetectionController;Lcom/android/server/display/SmallAreaDetectionController$PackageReceiver-IA;)V
+PLcom/android/server/display/SmallAreaDetectionController$PackageReceiver;->onPackageAdded(Ljava/lang/String;I)V
PLcom/android/server/display/SmallAreaDetectionController;-><init>(Landroid/content/Context;Landroid/provider/DeviceConfigInterface;)V
-PLcom/android/server/display/SmallAreaDetectionController;->create(Landroid/content/Context;)Lcom/android/server/display/SmallAreaDetectionController;
PLcom/android/server/display/SmallAreaDetectionController;->updateAllowlist(Ljava/lang/String;)V
-HSPLcom/android/server/display/VirtualDisplayAdapter$1;-><init>()V
HSPLcom/android/server/display/VirtualDisplayAdapter;-><clinit>()V
HSPLcom/android/server/display/VirtualDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Lcom/android/server/display/VirtualDisplayAdapter$SurfaceControlDisplayFactory;Lcom/android/server/display/feature/DisplayManagerFlags;)V
-HSPLcom/android/server/display/VirtualDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Lcom/android/server/display/feature/DisplayManagerFlags;)V
-HSPLcom/android/server/display/VirtualDisplayAdapter;->registerLocked()V
-PLcom/android/server/display/WakelockController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/WakelockController;)V
-PLcom/android/server/display/WakelockController$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/display/WakelockController;->$r8$lambda$DC3Jjdcy5pC5tkL4-1bzHZx_j9Q(Lcom/android/server/display/WakelockController;)V
+PLcom/android/server/display/WakelockController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/WakelockController;I)V
+HPLcom/android/server/display/WakelockController$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/display/WakelockController;-><clinit>()V
PLcom/android/server/display/WakelockController;-><init>(ILandroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;)V
-PLcom/android/server/display/WakelockController;->acquireStateChangedSuspendBlocker()Z
-PLcom/android/server/display/WakelockController;->acquireUnfinishedBusinessSuspendBlocker()Z
-PLcom/android/server/display/WakelockController;->acquireWakelock(I)Z
-PLcom/android/server/display/WakelockController;->acquireWakelockInternal(I)Z
-PLcom/android/server/display/WakelockController;->getOnStateChangedRunnable()Ljava/lang/Runnable;
-PLcom/android/server/display/WakelockController;->lambda$getOnStateChangedRunnable$1()V
-PLcom/android/server/display/WakelockController;->releaseUnfinishedBusinessSuspendBlocker()Z
-PLcom/android/server/display/WakelockController;->releaseWakelock(I)Z
-PLcom/android/server/display/WakelockController;->releaseWakelockInternal(I)Z
+HPLcom/android/server/display/WakelockController;->acquireWakelock(I)Z+]Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;Lcom/android/server/power/PowerManagerService$1;
+PLcom/android/server/display/WakelockController;->hasUnfinishedBusiness()Z
+PLcom/android/server/display/WakelockController;->isOnStateChangedPending()Z
+PLcom/android/server/display/WakelockController;->isOverrideDozeScreenStateAcquired()Z
+PLcom/android/server/display/WakelockController;->isProximityNegativeAcquired()Z
+PLcom/android/server/display/WakelockController;->isProximityPositiveAcquired()Z
+PLcom/android/server/display/WakelockController;->releaseWakelock()V
+HPLcom/android/server/display/WakelockController;->releaseWakelockInternal(I)Z
PLcom/android/server/display/brightness/BrightnessEvent;-><clinit>()V
-PLcom/android/server/display/brightness/BrightnessEvent;-><init>(I)V
-PLcom/android/server/display/brightness/BrightnessEvent;-><init>(Lcom/android/server/display/brightness/BrightnessEvent;)V
+HPLcom/android/server/display/brightness/BrightnessEvent;-><init>(I)V
+HPLcom/android/server/display/brightness/BrightnessEvent;-><init>(Lcom/android/server/display/brightness/BrightnessEvent;)V
HPLcom/android/server/display/brightness/BrightnessEvent;->copyFrom(Lcom/android/server/display/brightness/BrightnessEvent;)V
HPLcom/android/server/display/brightness/BrightnessEvent;->equalsMainData(Lcom/android/server/display/brightness/BrightnessEvent;)Z
-PLcom/android/server/display/brightness/BrightnessEvent;->flagsToString()Ljava/lang/String;
-PLcom/android/server/display/brightness/BrightnessEvent;->getAdjustmentFlags()I
+HPLcom/android/server/display/brightness/BrightnessEvent;->flagsToString()Ljava/lang/String;
PLcom/android/server/display/brightness/BrightnessEvent;->getBrightness()F
-PLcom/android/server/display/brightness/BrightnessEvent;->getDisplayBrightnessStrategyName()Ljava/lang/String;
-PLcom/android/server/display/brightness/BrightnessEvent;->getDisplayId()I
-PLcom/android/server/display/brightness/BrightnessEvent;->getFlags()I
-PLcom/android/server/display/brightness/BrightnessEvent;->getHbmMax()F
-PLcom/android/server/display/brightness/BrightnessEvent;->getHbmMode()I
-PLcom/android/server/display/brightness/BrightnessEvent;->getInitialBrightness()F
-PLcom/android/server/display/brightness/BrightnessEvent;->getLux()F
-PLcom/android/server/display/brightness/BrightnessEvent;->getPhysicalDisplayId()Ljava/lang/String;
-PLcom/android/server/display/brightness/BrightnessEvent;->getPowerFactor()F
-PLcom/android/server/display/brightness/BrightnessEvent;->getPreThresholdBrightness()F
-PLcom/android/server/display/brightness/BrightnessEvent;->getPreThresholdLux()F
-PLcom/android/server/display/brightness/BrightnessEvent;->getRbcStrength()I
-PLcom/android/server/display/brightness/BrightnessEvent;->getReason()Lcom/android/server/display/brightness/BrightnessReason;
-PLcom/android/server/display/brightness/BrightnessEvent;->getRecommendedBrightness()F
-PLcom/android/server/display/brightness/BrightnessEvent;->getThermalMax()F
-PLcom/android/server/display/brightness/BrightnessEvent;->getTime()J
-PLcom/android/server/display/brightness/BrightnessEvent;->isAutomaticBrightnessEnabled()Z
-PLcom/android/server/display/brightness/BrightnessEvent;->isLowPowerModeSet()Z
-PLcom/android/server/display/brightness/BrightnessEvent;->isRbcEnabled()Z
HPLcom/android/server/display/brightness/BrightnessEvent;->reset()V
PLcom/android/server/display/brightness/BrightnessEvent;->setAdjustmentFlags(I)V
-PLcom/android/server/display/brightness/BrightnessEvent;->setAutomaticBrightnessEnabled(Z)V
-PLcom/android/server/display/brightness/BrightnessEvent;->setBrightness(F)V
-PLcom/android/server/display/brightness/BrightnessEvent;->setDisplayBrightnessStrategyName(Ljava/lang/String;)V
-PLcom/android/server/display/brightness/BrightnessEvent;->setFlags(I)V
-PLcom/android/server/display/brightness/BrightnessEvent;->setHbmMax(F)V
-PLcom/android/server/display/brightness/BrightnessEvent;->setHbmMode(I)V
PLcom/android/server/display/brightness/BrightnessEvent;->setInitialBrightness(F)V
-PLcom/android/server/display/brightness/BrightnessEvent;->setPhysicalDisplayId(Ljava/lang/String;)V
-PLcom/android/server/display/brightness/BrightnessEvent;->setPowerFactor(F)V
-PLcom/android/server/display/brightness/BrightnessEvent;->setRbcStrength(I)V
-PLcom/android/server/display/brightness/BrightnessEvent;->setReason(Lcom/android/server/display/brightness/BrightnessReason;)V
-PLcom/android/server/display/brightness/BrightnessEvent;->setTime(J)V
-PLcom/android/server/display/brightness/BrightnessEvent;->setWasShortTermModelActive(Z)Z
HPLcom/android/server/display/brightness/BrightnessEvent;->toString(Z)Ljava/lang/String;
-PLcom/android/server/display/brightness/BrightnessEvent;->wasShortTermModelActive()Z
-PLcom/android/server/display/brightness/BrightnessReason;-><init>()V
-PLcom/android/server/display/brightness/BrightnessReason;->addModifier(I)V
-PLcom/android/server/display/brightness/BrightnessReason;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/display/brightness/BrightnessReason;->getModifier()I
+PLcom/android/server/display/brightness/BrightnessReason;-><init>(I)V
+HPLcom/android/server/display/brightness/BrightnessReason;->addModifier(I)V
+HPLcom/android/server/display/brightness/BrightnessReason;->equals(Ljava/lang/Object;)Z
PLcom/android/server/display/brightness/BrightnessReason;->getReason()I
-PLcom/android/server/display/brightness/BrightnessReason;->reasonToString(I)Ljava/lang/String;
-PLcom/android/server/display/brightness/BrightnessReason;->set(Lcom/android/server/display/brightness/BrightnessReason;)V
-PLcom/android/server/display/brightness/BrightnessReason;->setModifier(I)V
-PLcom/android/server/display/brightness/BrightnessReason;->setReason(I)V
+HPLcom/android/server/display/brightness/BrightnessReason;->set(Lcom/android/server/display/brightness/BrightnessReason;)V
+HPLcom/android/server/display/brightness/BrightnessReason;->setModifier(I)V
+HPLcom/android/server/display/brightness/BrightnessReason;->setReason(I)V
PLcom/android/server/display/brightness/BrightnessReason;->toString()Ljava/lang/String;
HPLcom/android/server/display/brightness/BrightnessReason;->toString(I)Ljava/lang/String;
-PLcom/android/server/display/brightness/BrightnessUtils;->clampAbsoluteBrightness(F)F
-PLcom/android/server/display/brightness/BrightnessUtils;->clampBrightnessAdjustment(F)F
-PLcom/android/server/display/brightness/BrightnessUtils;->constructDisplayBrightnessState(IFFLjava/lang/String;)Lcom/android/server/display/DisplayBrightnessState;
-HPLcom/android/server/display/brightness/BrightnessUtils;->constructDisplayBrightnessState(IFFLjava/lang/String;Z)Lcom/android/server/display/DisplayBrightnessState;
-PLcom/android/server/display/brightness/BrightnessUtils;->isValidBrightnessValue(F)Z
+PLcom/android/server/display/brightness/BrightnessUtils;->constructDisplayBrightnessState(IFLjava/lang/String;Z)Lcom/android/server/display/DisplayBrightnessState;
+HPLcom/android/server/display/brightness/BrightnessUtils;->isValidBrightnessValue(F)Z
PLcom/android/server/display/brightness/DisplayBrightnessController$Injector;-><init>()V
-PLcom/android/server/display/brightness/DisplayBrightnessController$Injector;->getDisplayBrightnessStrategySelector(Landroid/content/Context;ILcom/android/server/display/feature/DisplayManagerFlags;)Lcom/android/server/display/brightness/DisplayBrightnessStrategySelector;
-PLcom/android/server/display/brightness/DisplayBrightnessController;-><init>(Landroid/content/Context;Lcom/android/server/display/brightness/DisplayBrightnessController$Injector;IFLcom/android/server/display/BrightnessSetting;Ljava/lang/Runnable;Landroid/os/HandlerExecutor;Lcom/android/server/display/feature/DisplayManagerFlags;)V
-PLcom/android/server/display/brightness/DisplayBrightnessController;->addAutomaticBrightnessState(Lcom/android/server/display/DisplayBrightnessState;)Lcom/android/server/display/DisplayBrightnessState;
-PLcom/android/server/display/brightness/DisplayBrightnessController;->convertToAdjustedNits(F)F
-PLcom/android/server/display/brightness/DisplayBrightnessController;->getAutomaticBrightnessStrategy()Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;
-PLcom/android/server/display/brightness/DisplayBrightnessController;->getCurrentBrightness()F
-PLcom/android/server/display/brightness/DisplayBrightnessController;->getLastUserSetScreenBrightness()F
+PLcom/android/server/display/brightness/DisplayBrightnessController;-><init>(Landroid/content/Context;IFLcom/android/server/display/BrightnessSetting;Lcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda1;Landroid/os/HandlerExecutor;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+HPLcom/android/server/display/brightness/DisplayBrightnessController;->constructStrategySelectionRequest(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;ILcom/android/server/display/DisplayOffloadSessionImpl;Z)Lcom/android/server/display/brightness/StrategySelectionRequest;
+HPLcom/android/server/display/brightness/DisplayBrightnessController;->convertToAdjustedNits(F)F+]Lcom/android/server/display/BrightnessMappingStrategy;Lcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;
+HPLcom/android/server/display/brightness/DisplayBrightnessController;->getCurrentBrightness()F
HPLcom/android/server/display/brightness/DisplayBrightnessController;->getScreenBrightnessSetting()F
PLcom/android/server/display/brightness/DisplayBrightnessController;->isAllowAutoBrightnessWhileDozingConfig()Z
-PLcom/android/server/display/brightness/DisplayBrightnessController;->registerBrightnessSettingChangeListener(Lcom/android/server/display/BrightnessSetting$BrightnessSettingListener;)V
-PLcom/android/server/display/brightness/DisplayBrightnessController;->updateBrightness(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;I)Lcom/android/server/display/DisplayBrightnessState;
-PLcom/android/server/display/brightness/DisplayBrightnessController;->updateUserSetScreenBrightness()Z
+PLcom/android/server/display/brightness/DisplayBrightnessController;->setAutomaticBrightnessController(Lcom/android/server/display/AutomaticBrightnessController;)V
+HPLcom/android/server/display/brightness/DisplayBrightnessController;->setBrightness(FF)V
+HPLcom/android/server/display/brightness/DisplayBrightnessController;->updateScreenBrightnessSetting(FF)V
+HPLcom/android/server/display/brightness/DisplayBrightnessController;->updateUserSetScreenBrightness()Z+]Landroid/os/HandlerExecutor;Landroid/os/HandlerExecutor;
PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;-><init>()V
-PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;->getAutomaticBrightnessStrategy(Landroid/content/Context;I)Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;
-PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;->getBoostBrightnessStrategy()Lcom/android/server/display/brightness/strategy/BoostBrightnessStrategy;
-PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;->getDozeBrightnessStrategy()Lcom/android/server/display/brightness/strategy/DozeBrightnessStrategy;
-PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;->getFollowerBrightnessStrategy(I)Lcom/android/server/display/brightness/strategy/FollowerBrightnessStrategy;
-PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;->getInvalidBrightnessStrategy()Lcom/android/server/display/brightness/strategy/InvalidBrightnessStrategy;
-PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;->getOffloadBrightnessStrategy()Lcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;
-PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;->getOverrideBrightnessStrategy()Lcom/android/server/display/brightness/strategy/OverrideBrightnessStrategy;
-PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;->getScreenOffBrightnessStrategy()Lcom/android/server/display/brightness/strategy/ScreenOffBrightnessStrategy;
-PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;->getTemporaryBrightnessStrategy()Lcom/android/server/display/brightness/strategy/TemporaryBrightnessStrategy;
-PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector;-><init>(Landroid/content/Context;Lcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;ILcom/android/server/display/feature/DisplayManagerFlags;)V
-PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector;->getAutomaticBrightnessStrategy()Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;
-PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector;->isAllowAutoBrightnessWhileDozingConfig()Z
-HPLcom/android/server/display/brightness/DisplayBrightnessStrategySelector;->selectStrategy(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;I)Lcom/android/server/display/brightness/strategy/DisplayBrightnessStrategy;
-PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector;->shouldUseDozeBrightnessStrategy(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)Z
-PLcom/android/server/display/brightness/clamper/BrightnessClamper;-><init>(Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;)V
+PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector;-><init>(Landroid/content/Context;ILcom/android/server/display/feature/DisplayManagerFlags;)V
+PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/display/brightness/DisplayBrightnessStrategySelector;->selectStrategy(Lcom/android/server/display/brightness/StrategySelectionRequest;)Lcom/android/server/display/brightness/strategy/DisplayBrightnessStrategy;+]Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy2;Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;]Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;]Lcom/android/server/display/brightness/strategy/DisplayBrightnessStrategy;megamorphic_types
+HPLcom/android/server/display/brightness/DisplayBrightnessStrategySelector;->setAllowAutoBrightnessWhileDozing(Landroid/hardware/display/DisplayManagerInternal$DisplayOffloadSession;)V+]Landroid/hardware/display/DisplayManagerInternal$DisplayOffloadSession;Lcom/android/server/display/DisplayOffloadSessionImpl;
+HPLcom/android/server/display/brightness/StrategyExecutionRequest;-><init>(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;FZZ)V
+HPLcom/android/server/display/brightness/StrategySelectionNotifyRequest;-><init>(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;ILcom/android/server/display/brightness/strategy/DisplayBrightnessStrategy;FZZZZ)V
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V
+HPLcom/android/server/display/brightness/clamper/BrightnessClamperController$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/display/brightness/clamper/BrightnessClamperController$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z+]Lcom/android/server/display/brightness/clamper/BrightnessStateModifier;megamorphic_types
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;)V
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
PLcom/android/server/display/brightness/clamper/BrightnessClamperController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessClamperController;)V
-PLcom/android/server/display/brightness/clamper/BrightnessClamperController$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessClamperController;Ljava/lang/Runnable;)V
-PLcom/android/server/display/brightness/clamper/BrightnessClamperController$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessClamperController;)V
-PLcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/display/DisplayDeviceConfig;)V
-PLcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;->getBrightnessWearBedtimeModeCap()F
-PLcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;->getPowerThrottlingConfigData()Lcom/android/server/display/DisplayDeviceConfig$PowerThrottlingConfigData;
-PLcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;->getPowerThrottlingData()Lcom/android/server/display/DisplayDeviceConfig$PowerThrottlingData;
-PLcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;->getPowerThrottlingDataId()Ljava/lang/String;
-PLcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;->getThermalBrightnessThrottlingData()Lcom/android/server/display/DisplayDeviceConfig$ThermalBrightnessThrottlingData;
-PLcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;->getThermalThrottlingDataId()Ljava/lang/String;
-PLcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;->getUniqueDisplayId()Ljava/lang/String;
+HPLcom/android/server/display/brightness/clamper/BrightnessClamperController$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessClamperController;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$$ExternalSyntheticLambda3;)V
+HPLcom/android/server/display/brightness/clamper/BrightnessClamperController$$ExternalSyntheticLambda4;->onChanged()V
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessClamperController;)V
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$$ExternalSyntheticLambda6;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$$ExternalSyntheticLambda8;-><init>(I)V
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;)V
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$1;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessClamperController;)V
+HPLcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/display/DisplayDeviceConfig;IILandroid/os/IBinder;I)V
PLcom/android/server/display/brightness/clamper/BrightnessClamperController$Injector;-><init>()V
-PLcom/android/server/display/brightness/clamper/BrightnessClamperController$Injector;->getClampers(Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/content/Context;)Ljava/util/List;
-PLcom/android/server/display/brightness/clamper/BrightnessClamperController$Injector;->getDeviceConfigParameterProvider()Lcom/android/server/display/feature/DeviceConfigParameterProvider;
-PLcom/android/server/display/brightness/clamper/BrightnessClamperController$Injector;->getModifiers(Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;)Ljava/util/List;
-PLcom/android/server/display/brightness/clamper/BrightnessClamperController;-><init>(Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;Landroid/content/Context;Lcom/android/server/display/feature/DisplayManagerFlags;)V
-PLcom/android/server/display/brightness/clamper/BrightnessClamperController;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessClamperController$Injector;Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;Landroid/content/Context;Lcom/android/server/display/feature/DisplayManagerFlags;)V
-HPLcom/android/server/display/brightness/clamper/BrightnessClamperController;->clamp(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;FZ)Lcom/android/server/display/DisplayBrightnessState;
-PLcom/android/server/display/brightness/clamper/BrightnessClamperController;->getBrightnessMaxReason()I
-PLcom/android/server/display/brightness/clamper/BrightnessClamperController;->start()V
-PLcom/android/server/display/brightness/clamper/BrightnessLowPowerModeModifier;-><init>()V
+HPLcom/android/server/display/brightness/clamper/BrightnessClamperController$ModifiersAggregatedState;-><init>()V
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController;-><init>(Lcom/android/server/display/DisplayPowerController$DisplayControllerHandler;Lcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda4;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;Landroid/content/Context;Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/hardware/SensorManager;F)V
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessClamperController$Injector;Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;Landroid/content/Context;Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/hardware/SensorManager;F)V
+HPLcom/android/server/display/brightness/clamper/BrightnessClamperController;->adjustLightSensorSubscription()V+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/stream/Stream;Ljava/util/stream/ReferencePipeline$Head;
+PLcom/android/server/display/brightness/clamper/BrightnessLowPowerModeModifier;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/display/brightness/clamper/BrightnessLowPowerModeModifier;->shouldApply(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)Z
+PLcom/android/server/display/brightness/clamper/BrightnessLowPowerModeModifier;->shouldListenToLightSensor()Z
PLcom/android/server/display/brightness/clamper/BrightnessModifier;-><init>()V
-PLcom/android/server/display/brightness/clamper/BrightnessModifier;->apply(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Lcom/android/server/display/DisplayBrightnessState$Builder;)V
-PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper$$ExternalSyntheticLambda2;-><init>()V
-PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessPowerClamper;Lcom/android/server/display/brightness/clamper/BrightnessPowerClamper$PowerData;)V
-PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper$$ExternalSyntheticLambda3;->run()V
-PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper$Injector;-><init>()V
-PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper$Injector;->getDeviceConfigParameterProvider()Lcom/android/server/display/feature/DeviceConfigParameterProvider;
-PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper;->$r8$lambda$-hfcoJ5P6TW4qcVQWR4feG_Xmbw(Lcom/android/server/display/brightness/clamper/BrightnessPowerClamper;Lcom/android/server/display/brightness/clamper/BrightnessPowerClamper$PowerData;)V
-PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper;-><init>(Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessPowerClamper$PowerData;)V
-PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessPowerClamper$Injector;Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessPowerClamper$PowerData;)V
-PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper;->lambda$new$1(Lcom/android/server/display/brightness/clamper/BrightnessPowerClamper$PowerData;)V
-PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper;->loadOverrideData()V
-PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper;->setDisplayData(Lcom/android/server/display/brightness/clamper/BrightnessPowerClamper$PowerData;)V
-PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper;->start()V
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper;Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper$ThermalData;)V
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$1$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper$1;I)V
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$1$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$1;->$r8$lambda$ENq4KcyEOUIqb1nFJWEAw_M1iU0(Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper$1;I)V
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$1;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper;)V
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$1;->lambda$notifyThrottling$0(I)V
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$1;->notifyThrottling(Landroid/os/Temperature;)V
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$Injector;-><init>()V
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$Injector;->getDeviceConfigParameterProvider()Lcom/android/server/display/feature/DeviceConfigParameterProvider;
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$Injector;->getThermalService()Landroid/os/IThermalService;
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper;->$r8$lambda$Mo-cWrPIfBxywgDfbuUnjZBYHLg(Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper;Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper$ThermalData;)V
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper;->-$$Nest$mthermalStatusChanged(Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper;I)V
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper;-><init>(Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper$ThermalData;)V
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper$Injector;Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper$ThermalData;)V
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper;->lambda$new$1(Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper$ThermalData;)V
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper;->loadOverrideData()V
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper;->setDisplayData(Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper$ThermalData;)V
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper;->start()V
-PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper;->thermalStatusChanged(I)V
-PLcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeClamper$1;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeClamper;Landroid/os/Handler;)V
-PLcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeClamper$Injector;-><init>()V
-PLcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeClamper$Injector;->registerBedtimeModeObserver(Landroid/content/ContentResolver;Landroid/database/ContentObserver;)V
-PLcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeClamper;-><init>(Landroid/os/Handler;Landroid/content/Context;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeClamper$WearBedtimeModeData;)V
-PLcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeClamper;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeClamper$Injector;Landroid/os/Handler;Landroid/content/Context;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeClamper$WearBedtimeModeData;)V
-PLcom/android/server/display/brightness/clamper/DisplayDimModifier;-><init>(Landroid/content/Context;)V
-PLcom/android/server/display/brightness/clamper/DisplayDimModifier;->getBrightnessAdjusted(FLandroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)F
-PLcom/android/server/display/brightness/clamper/DisplayDimModifier;->getModifier()I
+HPLcom/android/server/display/brightness/clamper/BrightnessModifier;->apply(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Lcom/android/server/display/DisplayBrightnessState$Builder;)V+]Lcom/android/server/display/brightness/clamper/BrightnessModifier;Lcom/android/server/display/brightness/clamper/BrightnessLowPowerModeModifier;,Lcom/android/server/display/brightness/clamper/DisplayDimModifier;
+PLcom/android/server/display/brightness/clamper/BrightnessThermalModifier$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessThermalModifier;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;)V
+HPLcom/android/server/display/brightness/clamper/BrightnessThermalModifier$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalModifier$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessThermalModifier;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalModifier$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalModifier$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessThermalModifier;)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalModifier$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalModifier$Injector;-><init>()V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalModifier$ThermalStatusObserver$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessThermalModifier$ThermalStatusObserver;I)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalModifier$ThermalStatusObserver$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalModifier$ThermalStatusObserver;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessThermalModifier;Lcom/android/server/display/brightness/clamper/BrightnessThermalModifier$Injector;Landroid/os/Handler;)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalModifier$ThermalStatusObserver;->notifyThrottling(Landroid/os/Temperature;)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalModifier$ThermalStatusObserver;->registerThermalListener()V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalModifier;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessThermalModifier$Injector;Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;)V
+HPLcom/android/server/display/brightness/clamper/BrightnessThermalModifier;->apply(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Lcom/android/server/display/DisplayBrightnessState$Builder;)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalModifier;->applyStateChange(Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ModifiersAggregatedState;)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalModifier;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalModifier;->onDeviceConfigChanged()V
+HPLcom/android/server/display/brightness/clamper/BrightnessThermalModifier;->onDisplayChanged(Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;)V
+HPLcom/android/server/display/brightness/clamper/BrightnessThermalModifier;->recalculateActiveData$1()V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalModifier;->recalculateBrightnessCap$1()V
+HPLcom/android/server/display/brightness/clamper/BrightnessThermalModifier;->setDisplayData(Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalModifier;->shouldListenToLightSensor()Z
+PLcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeModifier$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeModifier;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;)V
+HPLcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeModifier$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeModifier$1;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeModifier;Landroid/os/Handler;)V
+PLcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeModifier$Injector;-><init>()V
+PLcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeModifier;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeModifier$Injector;Landroid/os/Handler;Landroid/content/Context;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeModifier$WearBedtimeModeData;)V
+HPLcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeModifier;->apply(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Lcom/android/server/display/DisplayBrightnessState$Builder;)V
+PLcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeModifier;->applyStateChange(Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ModifiersAggregatedState;)V
+PLcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeModifier;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeModifier;->onDisplayChanged(Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;)V
+PLcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeModifier;->shouldListenToLightSensor()Z
+PLcom/android/server/display/brightness/clamper/DisplayDimModifier;-><init>(Landroid/content/Context;I)V
+PLcom/android/server/display/brightness/clamper/DisplayDimModifier;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/display/brightness/clamper/DisplayDimModifier;->shouldApply(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)Z
+PLcom/android/server/display/brightness/clamper/DisplayDimModifier;->shouldListenToLightSensor()Z
+PLcom/android/server/display/brightness/clamper/HdrBrightnessModifier$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/brightness/clamper/HdrBrightnessModifier;)V
+PLcom/android/server/display/brightness/clamper/HdrBrightnessModifier$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/display/brightness/clamper/HdrBrightnessModifier;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;)V
+PLcom/android/server/display/brightness/clamper/HdrBrightnessModifier$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/display/brightness/clamper/HdrBrightnessModifier$1;-><init>(Lcom/android/server/display/brightness/clamper/HdrBrightnessModifier;)V
+PLcom/android/server/display/brightness/clamper/HdrBrightnessModifier$2;-><init>(Lcom/android/server/display/brightness/clamper/HdrBrightnessModifier;Landroid/os/Handler;)V
+PLcom/android/server/display/brightness/clamper/HdrBrightnessModifier$Injector;-><init>(Landroid/content/Context;)V
+PLcom/android/server/display/brightness/clamper/HdrBrightnessModifier$Mode;-><clinit>()V
+PLcom/android/server/display/brightness/clamper/HdrBrightnessModifier;-><init>(Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/HdrBrightnessModifier$Injector;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;)V
+HPLcom/android/server/display/brightness/clamper/HdrBrightnessModifier;->apply(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Lcom/android/server/display/DisplayBrightnessState$Builder;)V
+PLcom/android/server/display/brightness/clamper/HdrBrightnessModifier;->applyStateChange(Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ModifiersAggregatedState;)V
+PLcom/android/server/display/brightness/clamper/HdrBrightnessModifier;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/brightness/clamper/HdrBrightnessModifier;->findBrightnessLimit(Lcom/android/server/display/config/HdrBrightnessData;F)F
+HPLcom/android/server/display/brightness/clamper/HdrBrightnessModifier;->onDisplayChanged(Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;)V
+PLcom/android/server/display/brightness/clamper/HdrBrightnessModifier;->recalculateMode(Lcom/android/server/display/config/HdrBrightnessData;)Lcom/android/server/display/brightness/clamper/HdrBrightnessModifier$Mode;
+HPLcom/android/server/display/brightness/clamper/HdrBrightnessModifier;->shouldListenToLightSensor()Z
+PLcom/android/server/display/brightness/clamper/HdrBrightnessModifier;->unregisterHdrListener()V
PLcom/android/server/display/brightness/clamper/HdrClamper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/brightness/clamper/HdrClamper;)V
PLcom/android/server/display/brightness/clamper/HdrClamper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/display/brightness/clamper/HdrClamper;)V
-PLcom/android/server/display/brightness/clamper/HdrClamper$HdrLayerInfoListener;->-$$Nest$fgetmHdrMinPixels(Lcom/android/server/display/brightness/clamper/HdrClamper$HdrLayerInfoListener;)F
-PLcom/android/server/display/brightness/clamper/HdrClamper$HdrLayerInfoListener;->-$$Nest$fputmHdrMinPixels(Lcom/android/server/display/brightness/clamper/HdrClamper$HdrLayerInfoListener;F)V
-PLcom/android/server/display/brightness/clamper/HdrClamper$HdrLayerInfoListener;-><init>(Lcom/android/server/display/brightness/clamper/HdrClamper$HdrListener;Landroid/os/Handler;)V
-PLcom/android/server/display/brightness/clamper/HdrClamper$Injector;-><init>()V
-PLcom/android/server/display/brightness/clamper/HdrClamper$Injector;->getHdrListener(Lcom/android/server/display/brightness/clamper/HdrClamper$HdrListener;Landroid/os/Handler;)Lcom/android/server/display/brightness/clamper/HdrClamper$HdrLayerInfoListener;
-PLcom/android/server/display/brightness/clamper/HdrClamper;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Landroid/os/Handler;)V
+PLcom/android/server/display/brightness/clamper/HdrClamper$HdrLayerInfoListener;-><init>(Lcom/android/server/display/brightness/clamper/HdrClamper$$ExternalSyntheticLambda1;Landroid/os/Handler;)V
PLcom/android/server/display/brightness/clamper/HdrClamper;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/HdrClamper$Injector;)V
PLcom/android/server/display/brightness/clamper/HdrClamper;->recalculateBrightnessCap(Lcom/android/server/display/config/HdrBrightnessData;FZ)V
-PLcom/android/server/display/brightness/clamper/HdrClamper;->reset()V
-PLcom/android/server/display/brightness/clamper/HdrClamper;->resetHdrConfig(Lcom/android/server/display/config/HdrBrightnessData;IIFLandroid/os/IBinder;)V
-PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;-><init>(Landroid/content/Context;I)V
-PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->accommodateUserBrightnessChanges(ZFILandroid/hardware/display/BrightnessConfiguration;I)V
-PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->getAutoBrightnessAdjustmentChanged()Z
-PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->getAutoBrightnessAdjustmentSetting()F
+PLcom/android/server/display/brightness/clamper/LightSensorController$1;-><init>(Lcom/android/server/display/brightness/clamper/LightSensorController;)V
+PLcom/android/server/display/brightness/clamper/LightSensorController;-><clinit>()V
+PLcom/android/server/display/brightness/clamper/LightSensorController;-><init>(Landroid/hardware/SensorManager;Landroid/content/res/Resources;Lcom/android/server/display/brightness/clamper/LightSensorController$LightSensorListener;Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/LightSensorController$Injector;)V
+PLcom/android/server/display/brightness/clamper/LightSensorController;->stop()V
+PLcom/android/server/display/brightness/strategy/AutoBrightnessFallbackStrategy$RealInjector;->getScreenOffBrightnessSensor(Landroid/hardware/SensorManager;Lcom/android/server/display/DisplayDeviceConfig;)Landroid/hardware/Sensor;
+PLcom/android/server/display/brightness/strategy/AutoBrightnessFallbackStrategy;-><init>()V
+PLcom/android/server/display/brightness/strategy/AutoBrightnessFallbackStrategy;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/brightness/strategy/AutoBrightnessFallbackStrategy;->setupAutoBrightnessFallbackSensor(Landroid/hardware/SensorManager;Lcom/android/server/display/DisplayDeviceConfig;Landroid/os/Handler;Lcom/android/server/display/BrightnessMappingStrategy;ZI)V
+PLcom/android/server/display/brightness/strategy/AutoBrightnessFallbackStrategy;->strategySelectionPostProcessor(Lcom/android/server/display/brightness/StrategySelectionNotifyRequest;)V
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy$RealInjector;->getBrightnessEvent(I)Lcom/android/server/display/brightness/BrightnessEvent;
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy2;-><init>(Landroid/content/Context;I)V
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;-><init>(Landroid/content/Context;ILcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy$Injector;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+HPLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->accommodateUserBrightnessChanges(ZFIIZLandroid/hardware/display/BrightnessConfiguration;I)V+]Lcom/android/server/display/BrightnessMappingStrategy;Lcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;
+HPLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->adjustAutomaticBrightnessStateIfValid(F)V
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->getName()Ljava/lang/String;
PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->isAutoBrightnessDisabledDueToDisplayOff()Z
-PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->isAutoBrightnessEnabled()Z
+HPLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->isAutoBrightnessEnabled()Z
PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->isShortTermModelActive()Z
PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->isTemporaryAutoBrightnessAdjustmentApplied()Z
-PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->processPendingAutoBrightnessAdjustments()Z
-PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->setAutoBrightnessApplied(Z)V
-PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->setAutoBrightnessState(IZIIFZ)V
+HPLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->processPendingAutoBrightnessAdjustments()V
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->putAutoBrightnessAdjustmentSetting(F)V
+HPLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->setAutoBrightnessState(IZIIZFZZ)V+]Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->setAutomaticBrightnessController(Lcom/android/server/display/AutomaticBrightnessController;)V
PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->setUseAutoBrightness(Z)V
PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->shouldUseAutoBrightness()Z
-PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->updateTemporaryAutoBrightnessAdjustments()F
-PLcom/android/server/display/brightness/strategy/BoostBrightnessStrategy;-><init>()V
-PLcom/android/server/display/brightness/strategy/DozeBrightnessStrategy;-><init>()V
+HPLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->strategySelectionPostProcessor(Lcom/android/server/display/brightness/StrategySelectionNotifyRequest;)V
+HPLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->updateBrightness(Lcom/android/server/display/brightness/StrategyExecutionRequest;)Lcom/android/server/display/DisplayBrightnessState;
+HPLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->updatePendingAutoBrightnessAdjustments()V
+PLcom/android/server/display/brightness/strategy/BoostBrightnessStrategy;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/brightness/strategy/BoostBrightnessStrategy;->strategySelectionPostProcessor(Lcom/android/server/display/brightness/StrategySelectionNotifyRequest;)V
+PLcom/android/server/display/brightness/strategy/DozeBrightnessStrategy;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/brightness/strategy/DozeBrightnessStrategy;->strategySelectionPostProcessor(Lcom/android/server/display/brightness/StrategySelectionNotifyRequest;)V
+PLcom/android/server/display/brightness/strategy/FallbackBrightnessStrategy;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/brightness/strategy/FallbackBrightnessStrategy;->getName()Ljava/lang/String;
+PLcom/android/server/display/brightness/strategy/FallbackBrightnessStrategy;->strategySelectionPostProcessor(Lcom/android/server/display/brightness/StrategySelectionNotifyRequest;)V
+HPLcom/android/server/display/brightness/strategy/FallbackBrightnessStrategy;->updateBrightness(Lcom/android/server/display/brightness/StrategyExecutionRequest;)Lcom/android/server/display/DisplayBrightnessState;
PLcom/android/server/display/brightness/strategy/FollowerBrightnessStrategy;-><init>(I)V
-PLcom/android/server/display/brightness/strategy/FollowerBrightnessStrategy;->getBrightnessToFollow()F
-PLcom/android/server/display/brightness/strategy/InvalidBrightnessStrategy;-><init>()V
-PLcom/android/server/display/brightness/strategy/InvalidBrightnessStrategy;->getName()Ljava/lang/String;
-PLcom/android/server/display/brightness/strategy/InvalidBrightnessStrategy;->updateBrightness(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)Lcom/android/server/display/DisplayBrightnessState;
-PLcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;-><init>()V
-PLcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;->getOffloadScreenBrightness()F
-PLcom/android/server/display/brightness/strategy/OverrideBrightnessStrategy;-><init>()V
+PLcom/android/server/display/brightness/strategy/FollowerBrightnessStrategy;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/brightness/strategy/FollowerBrightnessStrategy;->strategySelectionPostProcessor(Lcom/android/server/display/brightness/StrategySelectionNotifyRequest;)V
+PLcom/android/server/display/brightness/strategy/InvalidBrightnessStrategy;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/brightness/strategy/InvalidBrightnessStrategy;->strategySelectionPostProcessor(Lcom/android/server/display/brightness/StrategySelectionNotifyRequest;)V
+PLcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;-><init>(Lcom/android/server/display/feature/DisplayManagerFlags;)V
+PLcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;->getName()Ljava/lang/String;
+HPLcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;->strategySelectionPostProcessor(Lcom/android/server/display/brightness/StrategySelectionNotifyRequest;)V+]Lcom/android/server/display/brightness/strategy/DisplayBrightnessStrategy;Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;,Lcom/android/server/display/brightness/strategy/FallbackBrightnessStrategy;,Lcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;,Lcom/android/server/display/brightness/strategy/ScreenOffBrightnessStrategy;
+PLcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;->updateBrightness(Lcom/android/server/display/brightness/StrategyExecutionRequest;)Lcom/android/server/display/DisplayBrightnessState;
+PLcom/android/server/display/brightness/strategy/OverrideBrightnessStrategy;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/display/brightness/strategy/OverrideBrightnessStrategy;->getName()Ljava/lang/String;
-PLcom/android/server/display/brightness/strategy/OverrideBrightnessStrategy;->updateBrightness(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)Lcom/android/server/display/DisplayBrightnessState;
-PLcom/android/server/display/brightness/strategy/ScreenOffBrightnessStrategy;-><init>()V
-PLcom/android/server/display/brightness/strategy/TemporaryBrightnessStrategy;-><init>()V
-PLcom/android/server/display/brightness/strategy/TemporaryBrightnessStrategy;->getTemporaryScreenBrightness()F
-PLcom/android/server/display/color/AppSaturationController$SaturationController;->-$$Nest$maddColorTransformController(Lcom/android/server/display/color/AppSaturationController$SaturationController;Ljava/lang/ref/WeakReference;)Z
+PLcom/android/server/display/brightness/strategy/OverrideBrightnessStrategy;->getReason()I
+PLcom/android/server/display/brightness/strategy/OverrideBrightnessStrategy;->strategySelectionPostProcessor(Lcom/android/server/display/brightness/StrategySelectionNotifyRequest;)V
+PLcom/android/server/display/brightness/strategy/OverrideBrightnessStrategy;->updateBrightness(Lcom/android/server/display/brightness/StrategyExecutionRequest;)Lcom/android/server/display/DisplayBrightnessState;
+PLcom/android/server/display/brightness/strategy/ScreenOffBrightnessStrategy;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/brightness/strategy/ScreenOffBrightnessStrategy;->getName()Ljava/lang/String;
+PLcom/android/server/display/brightness/strategy/ScreenOffBrightnessStrategy;->getReason()I
+PLcom/android/server/display/brightness/strategy/ScreenOffBrightnessStrategy;->strategySelectionPostProcessor(Lcom/android/server/display/brightness/StrategySelectionNotifyRequest;)V
+PLcom/android/server/display/brightness/strategy/ScreenOffBrightnessStrategy;->updateBrightness(Lcom/android/server/display/brightness/StrategyExecutionRequest;)Lcom/android/server/display/DisplayBrightnessState;
+PLcom/android/server/display/brightness/strategy/TemporaryBrightnessStrategy;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/brightness/strategy/TemporaryBrightnessStrategy;->strategySelectionPostProcessor(Lcom/android/server/display/brightness/StrategySelectionNotifyRequest;)V
+PLcom/android/server/display/color/AppSaturationController$SaturationController;->-$$Nest$mdump(Lcom/android/server/display/color/AppSaturationController$SaturationController;Ljava/io/PrintWriter;)V
PLcom/android/server/display/color/AppSaturationController$SaturationController;-><init>()V
-PLcom/android/server/display/color/AppSaturationController$SaturationController;-><init>(Lcom/android/server/display/color/AppSaturationController$SaturationController-IA;)V
-PLcom/android/server/display/color/AppSaturationController$SaturationController;->addColorTransformController(Ljava/lang/ref/WeakReference;)Z
-PLcom/android/server/display/color/AppSaturationController$SaturationController;->clearExpiredReferences()V
PLcom/android/server/display/color/AppSaturationController;-><clinit>()V
PLcom/android/server/display/color/AppSaturationController;-><init>()V
-PLcom/android/server/display/color/AppSaturationController;->addColorTransformController(Ljava/lang/String;ILjava/lang/ref/WeakReference;)Z
-PLcom/android/server/display/color/AppSaturationController;->getOrCreateSaturationControllerLocked(Landroid/util/SparseArray;I)Lcom/android/server/display/color/AppSaturationController$SaturationController;
-PLcom/android/server/display/color/AppSaturationController;->getOrCreateUserIdMapLocked(Ljava/lang/String;)Landroid/util/SparseArray;
-PLcom/android/server/display/color/AppSaturationController;->getSaturationControllerLocked(Ljava/lang/String;I)Lcom/android/server/display/color/AppSaturationController$SaturationController;
+HPLcom/android/server/display/color/AppSaturationController;->getSaturationControllerLocked(ILjava/lang/String;)Lcom/android/server/display/color/AppSaturationController$SaturationController;
+PLcom/android/server/display/color/ColorDisplayService$1;-><init>(Lcom/android/server/display/color/ColorDisplayService;Landroid/os/Handler;Landroid/content/ContentResolver;)V
+PLcom/android/server/display/color/ColorDisplayService$1;->onChange(ZLandroid/net/Uri;)V
PLcom/android/server/display/color/ColorDisplayService$2;-><init>(Lcom/android/server/display/color/ColorDisplayService;Landroid/os/Handler;)V
PLcom/android/server/display/color/ColorDisplayService$BinderService;-><init>(Lcom/android/server/display/color/ColorDisplayService;)V
+PLcom/android/server/display/color/ColorDisplayService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;-><init>(Lcom/android/server/display/color/ColorDisplayService;)V
-PLcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;->attachColorTransformController(Ljava/lang/String;ILjava/lang/ref/WeakReference;)Z
-PLcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;->getReduceBrightColorsStrength()I
-PLcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;->setReduceBrightColorsListener(Lcom/android/server/display/color/ColorDisplayService$ReduceBrightColorsListener;)Z
PLcom/android/server/display/color/ColorDisplayService$ColorMatrixEvaluator;-><init>()V
-PLcom/android/server/display/color/ColorDisplayService$ColorMatrixEvaluator;-><init>(Lcom/android/server/display/color/ColorDisplayService$ColorMatrixEvaluator-IA;)V
PLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;-><init>(Lcom/android/server/display/color/ColorDisplayService;)V
-PLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;-><init>(Lcom/android/server/display/color/ColorDisplayService;Lcom/android/server/display/color/ColorDisplayService$NightDisplayTintController-IA;)V
PLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->isAvailable(Landroid/content/Context;)Z
PLcom/android/server/display/color/ColorDisplayService$TintHandler;-><init>(Lcom/android/server/display/color/ColorDisplayService;Landroid/os/Looper;)V
-PLcom/android/server/display/color/ColorDisplayService$TintHandler;-><init>(Lcom/android/server/display/color/ColorDisplayService;Landroid/os/Looper;Lcom/android/server/display/color/ColorDisplayService$TintHandler-IA;)V
PLcom/android/server/display/color/ColorDisplayService$TintHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/display/color/ColorDisplayService;->-$$Nest$fgetmAppSaturationController(Lcom/android/server/display/color/ColorDisplayService;)Lcom/android/server/display/color/AppSaturationController;
-PLcom/android/server/display/color/ColorDisplayService;->-$$Nest$fgetmReduceBrightColorsTintController(Lcom/android/server/display/color/ColorDisplayService;)Lcom/android/server/display/color/ReduceBrightColorsTintController;
-PLcom/android/server/display/color/ColorDisplayService;->-$$Nest$fputmReduceBrightColorsListener(Lcom/android/server/display/color/ColorDisplayService;Lcom/android/server/display/color/ColorDisplayService$ReduceBrightColorsListener;)V
-PLcom/android/server/display/color/ColorDisplayService;->-$$Nest$msetUp(Lcom/android/server/display/color/ColorDisplayService;)V
+PLcom/android/server/display/color/ColorDisplayService;->-$$Nest$mdumpInternal(Lcom/android/server/display/color/ColorDisplayService;Ljava/io/PrintWriter;)V
PLcom/android/server/display/color/ColorDisplayService;-><clinit>()V
PLcom/android/server/display/color/ColorDisplayService;-><init>(Landroid/content/Context;)V
PLcom/android/server/display/color/ColorDisplayService;->getColorModeInternal()I
-PLcom/android/server/display/color/ColorDisplayService;->getCurrentColorModeFromSystemProperties()I
-PLcom/android/server/display/color/ColorDisplayService;->isAccessibilityEnabled()Z
-PLcom/android/server/display/color/ColorDisplayService;->isAccessiblityDaltonizerEnabled()Z
-PLcom/android/server/display/color/ColorDisplayService;->isAccessiblityInversionEnabled()Z
PLcom/android/server/display/color/ColorDisplayService;->isColorModeAvailable(I)Z
-PLcom/android/server/display/color/ColorDisplayService;->isUserSetupCompleted(Landroid/content/ContentResolver;I)Z
PLcom/android/server/display/color/ColorDisplayService;->onAccessibilityDaltonizerChanged()V
PLcom/android/server/display/color/ColorDisplayService;->onAccessibilityInversionChanged()V
PLcom/android/server/display/color/ColorDisplayService;->onBootPhase(I)V
@@ -11125,528 +8804,345 @@ PLcom/android/server/display/color/ColorDisplayService;->onDisplayColorModeChang
PLcom/android/server/display/color/ColorDisplayService;->onStart()V
PLcom/android/server/display/color/ColorDisplayService;->onUserChanged(I)V
PLcom/android/server/display/color/ColorDisplayService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
-HPLcom/android/server/display/color/ColorDisplayService;->setUp()V
-PLcom/android/server/display/color/ColorDisplayService;->setUpDisplayCompositionColorSpaces(Landroid/content/res/Resources;)V
-PLcom/android/server/display/color/ColorTemperatureTintController;-><init>()V
+PLcom/android/server/display/color/ColorDisplayService;->setUp()V
PLcom/android/server/display/color/DisplayTransformManager;-><clinit>()V
PLcom/android/server/display/color/DisplayTransformManager;-><init>()V
PLcom/android/server/display/color/DisplayTransformManager;->setColorMatrix(I[F)V
-PLcom/android/server/display/color/DisplayTransformManager;->setDaltonizerMode(I)V
+PLcom/android/server/display/color/DisplayTransformManager;->setDaltonizerMode(II)V
PLcom/android/server/display/color/DisplayWhiteBalanceTintController;-><init>(Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/feature/DisplayManagerFlags;)V
PLcom/android/server/display/color/DisplayWhiteBalanceTintController;->isAvailable(Landroid/content/Context;)Z
PLcom/android/server/display/color/GlobalSaturationTintController;-><init>()V
PLcom/android/server/display/color/ReduceBrightColorsTintController;-><init>()V
-PLcom/android/server/display/color/ReduceBrightColorsTintController;->getStrength()I
-PLcom/android/server/display/color/ReduceBrightColorsTintController;->isActivated()Z
-PLcom/android/server/display/color/ReduceBrightColorsTintController;->isAvailable(Landroid/content/Context;)Z
PLcom/android/server/display/color/TintController;-><init>()V
PLcom/android/server/display/color/TintController;->isActivated()Z
-HSPLcom/android/server/display/config/AutoBrightnessModeName;->$values()[Lcom/android/server/display/config/AutoBrightnessModeName;
+HSPLcom/android/server/display/config/AutoBrightness;->getLuxToBrightnessMapping()Ljava/util/List;
HSPLcom/android/server/display/config/AutoBrightnessModeName;-><clinit>()V
-HSPLcom/android/server/display/config/AutoBrightnessModeName;-><init>(Ljava/lang/String;ILjava/lang/String;)V
+HSPLcom/android/server/display/config/AutoBrightnessModeName;-><init>(ILjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/display/config/AutoBrightnessModeName;->fromString(Ljava/lang/String;)Lcom/android/server/display/config/AutoBrightnessModeName;
HSPLcom/android/server/display/config/AutoBrightnessModeName;->getRawName()Ljava/lang/String;
-HSPLcom/android/server/display/config/AutoBrightnessSettingName;->$values()[Lcom/android/server/display/config/AutoBrightnessSettingName;
+HSPLcom/android/server/display/config/AutoBrightnessModeName;->values()[Lcom/android/server/display/config/AutoBrightnessModeName;
HSPLcom/android/server/display/config/AutoBrightnessSettingName;-><clinit>()V
-HSPLcom/android/server/display/config/AutoBrightnessSettingName;-><init>(Ljava/lang/String;ILjava/lang/String;)V
+HSPLcom/android/server/display/config/AutoBrightnessSettingName;-><init>(ILjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/display/config/AutoBrightnessSettingName;->fromString(Ljava/lang/String;)Lcom/android/server/display/config/AutoBrightnessSettingName;
HSPLcom/android/server/display/config/AutoBrightnessSettingName;->getRawName()Ljava/lang/String;
+HSPLcom/android/server/display/config/AutoBrightnessSettingName;->values()[Lcom/android/server/display/config/AutoBrightnessSettingName;
HSPLcom/android/server/display/config/DisplayBrightnessMappingConfig;-><clinit>()V
HSPLcom/android/server/display/config/DisplayBrightnessMappingConfig;-><init>(Landroid/content/Context;Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/config/AutoBrightness;Landroid/util/Spline;)V
-PLcom/android/server/display/config/DisplayBrightnessMappingConfig;->autoBrightnessModeToString(I)Ljava/lang/String;
+HPLcom/android/server/display/config/DisplayBrightnessMappingConfig;->autoBrightnessModeToString(I)Ljava/lang/String;
PLcom/android/server/display/config/DisplayBrightnessMappingConfig;->autoBrightnessPresetToString(I)Ljava/lang/String;
-HSPLcom/android/server/display/config/DisplayBrightnessMappingConfig;->brightnessArrayIntToFloat([ILandroid/util/Spline;)[F
-HPLcom/android/server/display/config/DisplayBrightnessMappingConfig;->getBrightnessArray(II)[F
-HPLcom/android/server/display/config/DisplayBrightnessMappingConfig;->getLuxArray(II)[F
-PLcom/android/server/display/config/DisplayBrightnessMappingConfig;->getNitsArray()[F
-HSPLcom/android/server/display/config/SensorData;-><init>()V
+PLcom/android/server/display/config/DisplayBrightnessMappingConfig;->toString()Ljava/lang/String;
+HSPLcom/android/server/display/config/HdrBrightnessData;-><init>(Ljava/util/Map;JFJFFFFZLandroid/util/Spline;F)V
+HSPLcom/android/server/display/config/HdrBrightnessData;->loadConfig(Lcom/android/server/display/config/DisplayConfiguration;Lcom/android/server/display/DisplayDeviceConfig$$ExternalSyntheticLambda1;)Lcom/android/server/display/config/HdrBrightnessData;
+PLcom/android/server/display/config/HdrBrightnessData;->toString()Ljava/lang/String;
+HSPLcom/android/server/display/config/HighBrightnessModeData;-><init>(FFJJJZFLandroid/util/Spline;Landroid/view/SurfaceControl$RefreshRateRange;Z)V
+HSPLcom/android/server/display/config/HighBrightnessModeData;->loadHighBrightnessModeData(Lcom/android/server/display/config/DisplayConfiguration;Lcom/android/server/display/DisplayDeviceConfig$$ExternalSyntheticLambda1;)Lcom/android/server/display/config/HighBrightnessModeData;
+PLcom/android/server/display/config/HighBrightnessModeData;->toString()Ljava/lang/String;
+HSPLcom/android/server/display/config/HysteresisLevels;-><clinit>()V
+HSPLcom/android/server/display/config/HysteresisLevels;-><init>([F[F[F[FFF)V
+HSPLcom/android/server/display/config/HysteresisLevels;->createHysteresisLevels(Lcom/android/server/display/config/Thresholds;III[F[F[FLandroid/content/res/Resources;Z)Lcom/android/server/display/config/HysteresisLevels;
+HPLcom/android/server/display/config/HysteresisLevels;->getBrighteningThreshold(F)F
+HSPLcom/android/server/display/config/HysteresisLevels;->getBrightnessLevelAndPercentage(Lcom/android/server/display/config/BrightnessThresholds;II[F[FZLandroid/content/res/Resources;)Landroid/util/Pair;
+HPLcom/android/server/display/config/HysteresisLevels;->getDarkeningThreshold(F)F
+PLcom/android/server/display/config/HysteresisLevels;->getReferenceLevel(F[F[F)F
+HSPLcom/android/server/display/config/HysteresisLevels;->setArrayFormat(F[F)[F
+PLcom/android/server/display/config/HysteresisLevels;->toString()Ljava/lang/String;
+HSPLcom/android/server/display/config/NitsMap;->read(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/display/config/NitsMap;
+HSPLcom/android/server/display/config/NonNegativeFloatToFloatMap;->getPoint()Ljava/util/List;
+HSPLcom/android/server/display/config/NonNegativeFloatToFloatMap;->read(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/display/config/NonNegativeFloatToFloatMap;
+HSPLcom/android/server/display/config/RefreshRateData;-><clinit>()V
+HSPLcom/android/server/display/config/RefreshRateData;-><init>(IIIILjava/util/List;Ljava/util/List;)V
+HSPLcom/android/server/display/config/RefreshRateData;->loadRefreshRateData(Lcom/android/server/display/config/DisplayConfiguration;Landroid/content/res/Resources;)Lcom/android/server/display/config/RefreshRateData;
+PLcom/android/server/display/config/RefreshRateData;->toString()Ljava/lang/String;
+HSPLcom/android/server/display/config/SensorData;-><clinit>()V
HSPLcom/android/server/display/config/SensorData;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/display/config/SensorData;-><init>(Ljava/lang/String;Ljava/lang/String;FF)V
HSPLcom/android/server/display/config/SensorData;-><init>(Ljava/lang/String;Ljava/lang/String;FFLjava/util/List;)V
-HSPLcom/android/server/display/config/SensorData;->loadAmbientLightSensorConfig(Landroid/content/res/Resources;)Lcom/android/server/display/config/SensorData;
-HSPLcom/android/server/display/config/SensorData;->loadSensorUnspecifiedConfig()Lcom/android/server/display/config/SensorData;
+HSPLcom/android/server/display/config/SensorData;->loadProxSensorConfig(Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/config/DisplayConfiguration;)Lcom/android/server/display/config/SensorData;
+PLcom/android/server/display/config/SensorData;->toString()Ljava/lang/String;
+HSPLcom/android/server/display/config/SupportedModeData;->load(Lcom/android/server/display/config/NonNegativeFloatToFloatMap;)Ljava/util/List;
+HSPLcom/android/server/display/config/XmlParser;->read(Ljava/io/InputStream;)Lcom/android/server/display/config/DisplayConfiguration;
+HSPLcom/android/server/display/config/XmlParser;->readText(Lorg/xmlpull/v1/XmlPullParser;)Ljava/lang/String;
HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;-><init>(Landroid/provider/DeviceConfigInterface;)V
-PLcom/android/server/display/feature/DeviceConfigParameterProvider;->addOnPropertiesChangedListener(Ljava/util/concurrent/Executor;Landroid/provider/DeviceConfig$OnPropertiesChangedListener;)V
-PLcom/android/server/display/feature/DeviceConfigParameterProvider;->getBrightnessThrottlingData()Ljava/lang/String;
-HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;->getHighAmbientBrightnessThresholds()[F
-HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;->getHighDisplayBrightnessThresholds()[F
HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;->getIntArrayProperty(Ljava/lang/String;)[I
-HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;->getLowAmbientBrightnessThresholds()[F
-HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;->getLowDisplayBrightnessThresholds()[F
-HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;->getPeakRefreshRateDefault()F
-PLcom/android/server/display/feature/DeviceConfigParameterProvider;->getPowerThrottlingData()Ljava/lang/String;
-HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;->getRefreshRateInHbmHdr()I
-HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;->getRefreshRateInHbmSunlight()I
-HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;->getRefreshRateInHighZone()I
-HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;->getRefreshRateInLowZone()I
-PLcom/android/server/display/feature/DeviceConfigParameterProvider;->isDisableScreenWakeLocksWhileCachedFeatureEnabled()Z
-PLcom/android/server/display/feature/DeviceConfigParameterProvider;->isHdrOutputControlFeatureEnabled()Z
-PLcom/android/server/display/feature/DeviceConfigParameterProvider;->removeOnPropertiesChangedListener(Landroid/provider/DeviceConfig$OnPropertiesChangedListener;)V
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda0;-><init>()V
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda10;-><init>()V
-PLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda10;->get()Ljava/lang/Object;
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda11;-><init>()V
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda11;->get()Ljava/lang/Object;
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda12;-><init>()V
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda12;->get()Ljava/lang/Object;
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda13;-><init>()V
-PLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda13;->get()Ljava/lang/Object;
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda14;-><init>()V
-PLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda14;->get()Ljava/lang/Object;
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda15;-><init>()V
-PLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda15;->get()Ljava/lang/Object;
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda16;-><init>()V
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda17;-><init>()V
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda17;->get()Ljava/lang/Object;
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda18;-><init>()V
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda18;->get()Ljava/lang/Object;
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda19;-><init>()V
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda19;->get()Ljava/lang/Object;
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda1;->get()Ljava/lang/Object;
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda20;-><init>()V
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda20;->get()Ljava/lang/Object;
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda2;-><init>()V
-PLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda2;->get()Ljava/lang/Object;
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda3;-><init>()V
-PLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda3;->get()Ljava/lang/Object;
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda4;-><init>()V
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda4;->get()Ljava/lang/Object;
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda5;-><init>()V
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda6;-><init>()V
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda7;-><init>()V
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda8;-><init>()V
-PLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda8;->get()Ljava/lang/Object;
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda9;-><init>()V
-HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda9;->get()Ljava/lang/Object;
-HSPLcom/android/server/display/feature/DisplayManagerFlags$FlagState;->-$$Nest$misEnabled(Lcom/android/server/display/feature/DisplayManagerFlags$FlagState;)Z
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda1;-><init>(I)V
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda1;->get()Ljava/lang/Object;
+PLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;Lcom/android/server/display/feature/DisplayManagerFlags$FlagState;Ljava/io/PrintWriter;Ljava/lang/String;)Ljava/lang/StringBuilder;
HSPLcom/android/server/display/feature/DisplayManagerFlags$FlagState;-><init>(Ljava/lang/String;Ljava/util/function/Supplier;)V
-HSPLcom/android/server/display/feature/DisplayManagerFlags$FlagState;-><init>(Ljava/lang/String;Ljava/util/function/Supplier;Lcom/android/server/display/feature/DisplayManagerFlags$FlagState-IA;)V
-HSPLcom/android/server/display/feature/DisplayManagerFlags$FlagState;->flagOrSystemProperty(Ljava/util/function/Supplier;Ljava/lang/String;)Z
-HSPLcom/android/server/display/feature/DisplayManagerFlags$FlagState;->isEnabled()Z
-HSPLcom/android/server/display/feature/DisplayManagerFlags;->-$$Nest$sfgetDEBUG()Z
+HSPLcom/android/server/display/feature/DisplayManagerFlags$FlagState;->isEnabled()Z+]Ljava/util/function/Supplier;Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda1;
+PLcom/android/server/display/feature/DisplayManagerFlags$FlagState;->toString()Ljava/lang/String;
HSPLcom/android/server/display/feature/DisplayManagerFlags;-><clinit>()V
HSPLcom/android/server/display/feature/DisplayManagerFlags;-><init>()V
-HSPLcom/android/server/display/feature/DisplayManagerFlags;->areAutoBrightnessModesEnabled()Z
-PLcom/android/server/display/feature/DisplayManagerFlags;->isAdaptiveTone1Enabled()Z
+PLcom/android/server/display/feature/DisplayManagerFlags;->dump(Ljava/io/PrintWriter;)V
HSPLcom/android/server/display/feature/DisplayManagerFlags;->isBackUpSmoothDisplayAndForcePeakRefreshRateEnabled()Z
-HSPLcom/android/server/display/feature/DisplayManagerFlags;->isBrightnessIntRangeUserPerceptionEnabled()Z
-PLcom/android/server/display/feature/DisplayManagerFlags;->isBrightnessWearBedtimeModeClamperEnabled()Z
-HSPLcom/android/server/display/feature/DisplayManagerFlags;->isConnectedDisplayErrorHandlingEnabled()Z
-HSPLcom/android/server/display/feature/DisplayManagerFlags;->isConnectedDisplayManagementEnabled()Z
HSPLcom/android/server/display/feature/DisplayManagerFlags;->isDisplayOffloadEnabled()Z
-HSPLcom/android/server/display/feature/DisplayManagerFlags;->isDisplayResolutionRangeVotingEnabled()Z
-HSPLcom/android/server/display/feature/DisplayManagerFlags;->isDisplaysRefreshRatesSynchronizationEnabled()Z
-PLcom/android/server/display/feature/DisplayManagerFlags;->isEvenDimmerEnabled()Z
-HSPLcom/android/server/display/feature/DisplayManagerFlags;->isExternalDisplayLimitModeEnabled()Z
PLcom/android/server/display/feature/DisplayManagerFlags;->isFastHdrTransitionsEnabled()Z
-PLcom/android/server/display/feature/DisplayManagerFlags;->isHdrClamperEnabled()Z
-PLcom/android/server/display/feature/DisplayManagerFlags;->isNbmControllerEnabled()Z
-HSPLcom/android/server/display/feature/DisplayManagerFlags;->isPortInDisplayLayoutEnabled()Z
-PLcom/android/server/display/feature/DisplayManagerFlags;->isPowerThrottlingClamperEnabled()Z
-HSPLcom/android/server/display/feature/DisplayManagerFlags;->isRefreshRateVotingTelemetryEnabled()Z
-PLcom/android/server/display/feature/DisplayManagerFlags;->isSmallAreaDetectionEnabled()Z
-HSPLcom/android/server/display/feature/DisplayManagerFlags;->isUserPreferredModeVoteEnabled()Z
+HPLcom/android/server/display/feature/DisplayManagerFlags;->isNormalBrightnessForDozeParameterEnabled(Landroid/content/Context;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;
HSPLcom/android/server/display/layout/Layout$Display;-><init>(Landroid/view/DisplayAddress;IZLjava/lang/String;Ljava/lang/String;ILandroid/view/DisplayAddress;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/display/layout/Layout$Display;-><init>(Landroid/view/DisplayAddress;IZLjava/lang/String;Ljava/lang/String;ILandroid/view/DisplayAddress;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/display/layout/Layout$Display-IA;)V
-HSPLcom/android/server/display/layout/Layout$Display;->getAddress()Landroid/view/DisplayAddress;
-HSPLcom/android/server/display/layout/Layout$Display;->getDisplayGroupName()Ljava/lang/String;
-HSPLcom/android/server/display/layout/Layout$Display;->getLeadDisplayId()I
-HSPLcom/android/server/display/layout/Layout$Display;->getLogicalDisplayId()I
-HSPLcom/android/server/display/layout/Layout$Display;->getPosition()I
-HSPLcom/android/server/display/layout/Layout$Display;->getPowerThrottlingMapId()Ljava/lang/String;
-HSPLcom/android/server/display/layout/Layout$Display;->getRefreshRateThermalThrottlingMapId()Ljava/lang/String;
-HSPLcom/android/server/display/layout/Layout$Display;->getRefreshRateZoneId()Ljava/lang/String;
-HSPLcom/android/server/display/layout/Layout$Display;->getThermalBrightnessThrottlingMapId()Ljava/lang/String;
-HSPLcom/android/server/display/layout/Layout$Display;->isEnabled()Z
HSPLcom/android/server/display/layout/Layout$Display;->toString()Ljava/lang/String;
HSPLcom/android/server/display/layout/Layout;-><init>()V
-HSPLcom/android/server/display/layout/Layout;->contains(Landroid/view/DisplayAddress;)Z
-HSPLcom/android/server/display/layout/Layout;->createDefaultDisplayLocked(Landroid/view/DisplayAddress;Lcom/android/server/display/layout/DisplayIdProducer;)V
-HSPLcom/android/server/display/layout/Layout;->createDisplayLocked(Landroid/view/DisplayAddress;ZZLjava/lang/String;Lcom/android/server/display/layout/DisplayIdProducer;ILandroid/view/DisplayAddress;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/display/layout/Layout;->getAt(I)Lcom/android/server/display/layout/Layout$Display;
+HSPLcom/android/server/display/layout/Layout;->createDisplayLocked(Landroid/view/DisplayAddress;ZZLjava/lang/String;Lcom/android/server/display/LogicalDisplayMapper$$ExternalSyntheticLambda2;ILandroid/view/DisplayAddress;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
HSPLcom/android/server/display/layout/Layout;->getByAddress(Landroid/view/DisplayAddress;)Lcom/android/server/display/layout/Layout$Display;
HSPLcom/android/server/display/layout/Layout;->getById(I)Lcom/android/server/display/layout/Layout$Display;
-HSPLcom/android/server/display/layout/Layout;->size()I
HSPLcom/android/server/display/layout/Layout;->toString()Ljava/lang/String;
HSPLcom/android/server/display/mode/DisplayModeDirector$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;)V
-PLcom/android/server/display/mode/DisplayModeDirector$$ExternalSyntheticLambda0;->onChanged()V
-HSPLcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;)V
-HPLcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;->findModeByIdLocked(II)Landroid/view/Display$Mode;
-HPLcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;->setAppPreferredRefreshRateRangeLocked(IFF)V
-HPLcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;->setAppRequest(IIFF)V
-HPLcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;->setAppRequestedModeLocked(II)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda10;->call()Ljava/lang/Object;
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/display/DisplayDeviceConfig;)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda11;->call()Ljava/lang/Object;
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda12;->call()Ljava/lang/Object;
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/display/DisplayDeviceConfig;)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda13;->call()Ljava/lang/Object;
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda2;-><init>()V
+HSPLcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+HPLcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;->findModeLocked(IIF)Landroid/view/Display$Mode;
+HPLcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;->setAppRequest(IIFFF)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;I)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda0;->call()Ljava/lang/Object;
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/display/DisplayDeviceConfig;I)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda1;->call()Ljava/lang/Object;
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda2;-><init>(I)V
HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda5;-><init>()V
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda5;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda6;->call()Ljava/lang/Object;
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/display/DisplayDeviceConfig;)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda7;->call()Ljava/lang/Object;
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda8;->call()Ljava/lang/Object;
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/display/DisplayDeviceConfig;)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda9;->call()Ljava/lang/Object;
HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$1;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)V
HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$LightSensorEventListener$1;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;)V
HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$LightSensorEventListener-IA;)V
-PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;->removeCallbacks()V
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->$r8$lambda$8DAn56bU6WgFgsFx-a9p7-LZAcI(Lcom/android/server/display/DisplayDeviceConfig;)[F
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->$r8$lambda$Ay2prysMHDYMO6gnyiTQlctgcyI(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)[F
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->$r8$lambda$IKnEMBFyGRQBJ1PKPV09LlnUYcQ(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)[F
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->$r8$lambda$QQJ_8KNK1PlQxWszYy-c-kL2A3U(Lcom/android/server/display/DisplayDeviceConfig;)[F
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->$r8$lambda$TOfl-cGYXuStF3el4JR8AneQz-w(Lcom/android/server/display/DisplayDeviceConfig;)[F
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->$r8$lambda$horxynV7MmybweJstKDz3KJXC50(Lcom/android/server/display/DisplayDeviceConfig;)[F
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->$r8$lambda$q9lF_A0quq49fCqX-dNNPJaLYQ8(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)[F
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->$r8$lambda$ukYjuV9AUGT_8BbrisQUwkGAqfM(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)[F
-PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->-$$Nest$fgetmHandler(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)Landroid/os/Handler;
-PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->-$$Nest$mobserve(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;Landroid/hardware/SensorManager;)V
+PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->-$$Nest$monDeviceConfigLowBrightnessThresholdsChanged(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;[F[F)V
HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->-$$Nest$mreloadLightSensor(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;Lcom/android/server/display/DisplayDeviceConfig;)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/mode/DisplayModeDirector$Injector;ZLcom/android/server/display/feature/DisplayManagerFlags;)V
-PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->getBrightness(I)F
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->lambda$loadHighBrightnessThresholds$4()[F
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->lambda$loadHighBrightnessThresholds$5(Lcom/android/server/display/DisplayDeviceConfig;)[F
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->lambda$loadHighBrightnessThresholds$6()[F
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->lambda$loadHighBrightnessThresholds$7(Lcom/android/server/display/DisplayDeviceConfig;)[F
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->lambda$loadLowBrightnessThresholds$0()[F
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->lambda$loadLowBrightnessThresholds$1(Lcom/android/server/display/DisplayDeviceConfig;)[F
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->lambda$loadLowBrightnessThresholds$2()[F
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->lambda$loadLowBrightnessThresholds$3(Lcom/android/server/display/DisplayDeviceConfig;)[F
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;Landroid/content/Context;Lcom/android/server/display/DisplayManagerService$DisplayManagerHandler;Lcom/android/server/display/mode/DisplayModeDirector$Injector;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->dumpLocked(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->getIdleScreenRefreshRateConfig()Landroid/view/SurfaceControl$IdleScreenRefreshRateConfig;
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->hasLowLightVrrConfig()Z
HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->loadBrightnessThresholds(Ljava/util/concurrent/Callable;Ljava/util/concurrent/Callable;ILcom/android/server/display/DisplayDeviceConfig;ZLjava/util/function/Function;)[F
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->loadHighBrightnessThresholds(Lcom/android/server/display/DisplayDeviceConfig;Z)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->loadLowBrightnessThresholds(Lcom/android/server/display/DisplayDeviceConfig;Z)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->loadIdleScreenRefreshRateConfigs(Lcom/android/server/display/DisplayDeviceConfig;)V
HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->loadRefreshRateInHighZone(Lcom/android/server/display/DisplayDeviceConfig;Z)V
HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->loadRefreshRateInLowZone(Lcom/android/server/display/DisplayDeviceConfig;Z)V
-PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->observe(Landroid/hardware/SensorManager;)V
HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->onBrightnessChangedLocked()V
-PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->onDisplayChanged(I)V
+HPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->onDisplayChanged(I)V+]Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;
PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->onLowPowerModeEnabledLocked(Z)V
PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->onRefreshRateSettingChangedLocked(FF)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->reloadLightSensor(Lcom/android/server/display/DisplayDeviceConfig;)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->reloadLightSensorData(Lcom/android/server/display/DisplayDeviceConfig;)V
HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->restartObserver()V
-PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->setDefaultDisplayState(I)V
-PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->unregisterSensorListener()V
+HPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->setDefaultDisplayState(I)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->shouldRegisterLightSensor()Z
+HPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->unregisterSensorListener()V
HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->updateBlockingZoneThresholds(Lcom/android/server/display/DisplayDeviceConfig;Z)V
-PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->updateDefaultDisplayState()V
HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->updateSensorStatus()V
HSPLcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;-><init>()V
-PLcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;-><init>(IZLandroid/view/SurfaceControl$RefreshRateRanges;Landroid/view/SurfaceControl$RefreshRateRanges;)V
-PLcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;->copyFrom(Lcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;)V
+PLcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;-><init>(IZLandroid/view/SurfaceControl$RefreshRateRanges;Landroid/view/SurfaceControl$RefreshRateRanges;Landroid/view/SurfaceControl$IdleScreenRefreshRateConfig;)V
HPLcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;->equals(Ljava/lang/Object;)Z
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda0;->getAsInt()I
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/display/DisplayDeviceConfig;)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda1;->getAsInt()I
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda2;->getAsInt()I
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/display/DisplayDeviceConfig;)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda3;->getAsInt()I
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->$r8$lambda$4IM44pR3egbsLgKCJgtproSJ4HU(Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;)I
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->$r8$lambda$UjQJH7qg8DdCnUYR-DTJghZFPuQ(Lcom/android/server/display/DisplayDeviceConfig;)I
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->$r8$lambda$Zlf8FUrJAId9oJETwAtYDKb3u9M(Lcom/android/server/display/DisplayDeviceConfig;)I
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->$r8$lambda$p85UmY-pmP6AkHPGqUwdtsPukFw(Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;)I
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->-$$Nest$mgetRefreshRateInHbmHdr(Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;Lcom/android/server/display/DisplayDeviceConfig;)I
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->-$$Nest$mgetRefreshRateInHbmSunlight(Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;Lcom/android/server/display/DisplayDeviceConfig;)I
+PLcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;->toString()Ljava/lang/String;
HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings-IA;)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->getRefreshRate(Ljava/util/function/IntSupplier;Ljava/util/function/IntSupplier;ILcom/android/server/display/DisplayDeviceConfig;)I
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->getRefreshRateInHbmHdr(Lcom/android/server/display/DisplayDeviceConfig;)I
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->getRefreshRateInHbmSunlight(Lcom/android/server/display/DisplayDeviceConfig;)I
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->lambda$getRefreshRateInHbmHdr$0()I
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->lambda$getRefreshRateInHbmHdr$1(Lcom/android/server/display/DisplayDeviceConfig;)I
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->lambda$getRefreshRateInHbmSunlight$2()I
-HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->lambda$getRefreshRateInHbmSunlight$3(Lcom/android/server/display/DisplayDeviceConfig;)I
-PLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->startListening()V
+PLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
HSPLcom/android/server/display/mode/DisplayModeDirector$DisplayModeDirectorHandler;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;Landroid/os/Looper;)V
PLcom/android/server/display/mode/DisplayModeDirector$DisplayModeDirectorHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$DisplayObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/mode/VotesStorage;)V
-PLcom/android/server/display/mode/DisplayModeDirector$DisplayObserver;->getDisplayInfo(I)Landroid/view/DisplayInfo;
-PLcom/android/server/display/mode/DisplayModeDirector$DisplayObserver;->isExternalDisplayLocked(I)Z
-PLcom/android/server/display/mode/DisplayModeDirector$DisplayObserver;->observe()V
+HSPLcom/android/server/display/mode/DisplayModeDirector$DisplayObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;Landroid/content/Context;Lcom/android/server/display/DisplayManagerService$DisplayManagerHandler;Lcom/android/server/display/mode/VotesStorage;)V
+HPLcom/android/server/display/mode/DisplayModeDirector$DisplayObserver;->getDisplayInfo(I)Landroid/view/DisplayInfo;
+HPLcom/android/server/display/mode/DisplayModeDirector$DisplayObserver;->onDisplayChanged(I)V
+HPLcom/android/server/display/mode/DisplayModeDirector$DisplayObserver;->updateDisplayDeviceConfig(I)V
+HPLcom/android/server/display/mode/DisplayModeDirector$DisplayObserver;->updateDisplayModes(ILandroid/view/DisplayInfo;)V
+PLcom/android/server/display/mode/DisplayModeDirector$DisplayObserver;->updateHasArrSupport(ILandroid/view/DisplayInfo;)V
+HPLcom/android/server/display/mode/DisplayModeDirector$DisplayObserver;->updateLayoutLimitedFrameRate(ILandroid/view/DisplayInfo;)V
+HPLcom/android/server/display/mode/DisplayModeDirector$DisplayObserver;->updateUserSettingDisplayPreferredSize(Landroid/view/DisplayInfo;)V
HSPLcom/android/server/display/mode/DisplayModeDirector$HbmObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;Lcom/android/server/display/mode/DisplayModeDirector$Injector;Lcom/android/server/display/mode/VotesStorage;Landroid/os/Handler;Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;)V
-PLcom/android/server/display/mode/DisplayModeDirector$HbmObserver;->observe()V
-PLcom/android/server/display/mode/DisplayModeDirector$HbmObserver;->onDisplayChanged(I)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$HbmObserver;->setupHdrRefreshRates(Lcom/android/server/display/DisplayDeviceConfig;)V
+PLcom/android/server/display/mode/DisplayModeDirector$HbmObserver;->dumpLocked(Ljava/io/PrintWriter;)V
+HPLcom/android/server/display/mode/DisplayModeDirector$HbmObserver;->onDisplayChanged(I)V
PLcom/android/server/display/mode/DisplayModeDirector$Injector;-><clinit>()V
HSPLcom/android/server/display/mode/DisplayModeDirector$RealInjector;-><init>(Landroid/content/Context;)V
-PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getBrightnessInfo(I)Landroid/hardware/display/BrightnessInfo;
-HSPLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getDeviceConfig()Landroid/provider/DeviceConfigInterface;
-PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getDisplay(I)Landroid/view/Display;
-PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getDisplayInfo(ILandroid/view/DisplayInfo;)Z
-PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getDisplayManager()Landroid/hardware/display/DisplayManager;
-PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getDisplayManagerInternal()Landroid/hardware/display/DisplayManagerInternal;
-PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getDisplays()[Landroid/view/Display;
-PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getSensorManagerInternal()Lcom/android/server/sensors/SensorManagerInternal;
-PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getStatusBarManagerInternal()Lcom/android/server/statusbar/StatusBarManagerInternal;
-PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getThermalService()Landroid/os/IThermalService;
-HSPLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getVotesStatsReporter(Z)Lcom/android/server/display/mode/VotesStatsReporter;
-PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->isDozeState(Landroid/view/Display;)Z
-PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;)V
-PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;J)V
-PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->registerMinRefreshRateObserver(Landroid/content/ContentResolver;Landroid/database/ContentObserver;)V
-PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->registerPeakRefreshRateObserver(Landroid/content/ContentResolver;Landroid/database/ContentObserver;)V
-PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->registerThermalServiceListener(Landroid/os/IThermalEventListener;)Z
-HSPLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->supportsFrameRateOverride()Z
-HSPLcom/android/server/display/mode/DisplayModeDirector$SensorObserver;-><init>(Landroid/content/Context;Lcom/android/server/display/mode/VotesStorage;Lcom/android/server/display/mode/DisplayModeDirector$Injector;)V
-PLcom/android/server/display/mode/DisplayModeDirector$SensorObserver;->observe()V
-PLcom/android/server/display/mode/DisplayModeDirector$SensorObserver;->onProximityActive(Z)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;Landroid/content/Context;Landroid/os/Handler;ZLcom/android/server/display/feature/DisplayManagerFlags;)V
-PLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;->observe()V
+HPLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getDisplayManager()Landroid/hardware/display/DisplayManager;
+HSPLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver$1;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;)V
+HPLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver$1;->onDisplayChanged(I)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;Landroid/content/Context;Lcom/android/server/display/DisplayManagerService$DisplayManagerHandler;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+PLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;->onDeviceConfigDefaultPeakRefreshRateChanged(Ljava/lang/Float;)V
HSPLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;->setDefaultPeakRefreshRate(Lcom/android/server/display/DisplayDeviceConfig;Z)V
HSPLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;->setRefreshRates(Lcom/android/server/display/DisplayDeviceConfig;Z)V
+HPLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;->updateLowPowerModeAllowedModesLocked()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
PLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;->updateLowPowerModeSettingLocked()V
PLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;->updateModeSwitchingTypeSettingLocked()V
PLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;->updateRefreshRateSettingLocked()V
PLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;->updateRefreshRateSettingLocked(FFFI)V
PLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;->updateRefreshRateSettingLocked(I)V
HSPLcom/android/server/display/mode/DisplayModeDirector$UdfpsObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;)V
-HSPLcom/android/server/display/mode/DisplayModeDirector$UdfpsObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;Lcom/android/server/display/mode/DisplayModeDirector$UdfpsObserver-IA;)V
-PLcom/android/server/display/mode/DisplayModeDirector$UdfpsObserver;->observe()V
-PLcom/android/server/display/mode/DisplayModeDirector;->$r8$lambda$CBSdi5wPAhAASfeb2bCpd2owPvs(Lcom/android/server/display/mode/DisplayModeDirector;)V
-PLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmBrightnessObserver(Lcom/android/server/display/mode/DisplayModeDirector;)Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;
-HSPLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmConfigParameterProvider(Lcom/android/server/display/mode/DisplayModeDirector;)Lcom/android/server/display/feature/DeviceConfigParameterProvider;
-PLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmContext(Lcom/android/server/display/mode/DisplayModeDirector;)Landroid/content/Context;
-PLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmDefaultDisplayDeviceConfig(Lcom/android/server/display/mode/DisplayModeDirector;)Lcom/android/server/display/DisplayDeviceConfig;
-PLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmDefaultModeByDisplay(Lcom/android/server/display/mode/DisplayModeDirector;)Landroid/util/SparseArray;
-PLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmDeviceConfigDisplaySettings(Lcom/android/server/display/mode/DisplayModeDirector;)Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;
-PLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmInjector(Lcom/android/server/display/mode/DisplayModeDirector;)Lcom/android/server/display/mode/DisplayModeDirector$Injector;
-PLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmIsBackUpSmoothDisplayAndForcePeakRefreshRateEnabled(Lcom/android/server/display/mode/DisplayModeDirector;)Z
-HSPLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmLock(Lcom/android/server/display/mode/DisplayModeDirector;)Ljava/lang/Object;
-PLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmModeSwitchingType(Lcom/android/server/display/mode/DisplayModeDirector;)I
-HPLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmSupportedModesByDisplay(Lcom/android/server/display/mode/DisplayModeDirector;)Landroid/util/SparseArray;
-PLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmVotesStorage(Lcom/android/server/display/mode/DisplayModeDirector;)Lcom/android/server/display/mode/VotesStorage;
+PLcom/android/server/display/mode/DisplayModeDirector$UdfpsObserver;->dumpLocked(Ljava/io/PrintWriter;)V
PLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$mgetMaxRefreshRateLocked(Lcom/android/server/display/mode/DisplayModeDirector;I)F
-HSPLcom/android/server/display/mode/DisplayModeDirector;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/feature/DisplayManagerFlags;)V
-HSPLcom/android/server/display/mode/DisplayModeDirector;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/mode/DisplayModeDirector$Injector;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector;-><init>(Landroid/content/Context;Lcom/android/server/display/DisplayManagerService$DisplayManagerHandler;Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda4;)V
HSPLcom/android/server/display/mode/DisplayModeDirector;->defaultDisplayDeviceUpdated(Lcom/android/server/display/DisplayDeviceConfig;)V
-PLcom/android/server/display/mode/DisplayModeDirector;->getAppRequestObserver()Lcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;
-HPLcom/android/server/display/mode/DisplayModeDirector;->getDesiredDisplayModeSpecs(I)Lcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;
-PLcom/android/server/display/mode/DisplayModeDirector;->getMaxRefreshRateLocked(I)F
-HPLcom/android/server/display/mode/DisplayModeDirector;->getModeSwitchingType()I
+PLcom/android/server/display/mode/DisplayModeDirector;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/mode/DisplayModeDirector;->getDesiredDisplayModeSpecs(I)Lcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;
+PLcom/android/server/display/mode/DisplayModeDirector;->isVrrSupportedLocked(I)Z
PLcom/android/server/display/mode/DisplayModeDirector;->notifyDesiredDisplayModeSpecsChangedLocked()V
PLcom/android/server/display/mode/DisplayModeDirector;->onBootCompleted()V
-PLcom/android/server/display/mode/DisplayModeDirector;->setDesiredDisplayModeSpecsListener(Lcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecsListener;)V
PLcom/android/server/display/mode/DisplayModeDirector;->start(Landroid/hardware/SensorManager;)V
-PLcom/android/server/display/mode/RefreshRateVote$RenderVote;-><init>(FF)V
+HSPLcom/android/server/display/mode/ProximitySensorObserver;-><init>(Lcom/android/server/display/mode/VotesStorage;Lcom/android/server/display/mode/DisplayModeDirector$Injector;)V
+PLcom/android/server/display/mode/ProximitySensorObserver;->observe()V
+HPLcom/android/server/display/mode/ProximitySensorObserver;->onDisplayChanged(I)V
+PLcom/android/server/display/mode/ProximitySensorObserver;->onProximityActive(Z)V
+PLcom/android/server/display/mode/ProximitySensorObserver;->recalculateVotesLocked()V
PLcom/android/server/display/mode/RefreshRateVote$RenderVote;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/display/mode/RefreshRateVote$RenderVote;->toString()Ljava/lang/String;
PLcom/android/server/display/mode/RefreshRateVote$RenderVote;->updateSummary(Lcom/android/server/display/mode/VoteSummary;)V
PLcom/android/server/display/mode/RefreshRateVote;-><init>(FF)V
-HSPLcom/android/server/display/mode/SkinThermalStatusObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$Injector;Lcom/android/server/display/mode/VotesStorage;)V
+PLcom/android/server/display/mode/RefreshRateVote;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/display/mode/RefreshRateVote;->toString()Ljava/lang/String;
+PLcom/android/server/display/mode/SkinThermalStatusObserver$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/mode/SkinThermalStatusObserver;II)V
+HPLcom/android/server/display/mode/SkinThermalStatusObserver$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/display/mode/SkinThermalStatusObserver$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/display/mode/SkinThermalStatusObserver;)V
+PLcom/android/server/display/mode/SkinThermalStatusObserver$$ExternalSyntheticLambda1;->run()V
HSPLcom/android/server/display/mode/SkinThermalStatusObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$Injector;Lcom/android/server/display/mode/VotesStorage;Landroid/os/Handler;)V
+PLcom/android/server/display/mode/SkinThermalStatusObserver;->dumpLocked(Ljava/io/PrintWriter;)V
PLcom/android/server/display/mode/SkinThermalStatusObserver;->notifyThrottling(Landroid/os/Temperature;)V
PLcom/android/server/display/mode/SkinThermalStatusObserver;->observe()V
-PLcom/android/server/display/mode/SkinThermalStatusObserver;->populateInitialDisplayInfo()V
-PLcom/android/server/display/mode/Vote;->forRenderFrameRates(FF)Lcom/android/server/display/mode/Vote;
+PLcom/android/server/display/mode/SkinThermalStatusObserver;->onDisplayChanged(I)V
+HPLcom/android/server/display/mode/SkinThermalStatusObserver;->reportThrottlingIfNeeded(IILandroid/util/SparseArray;)V
+HPLcom/android/server/display/mode/SkinThermalStatusObserver;->updateThermalRefreshRateThrottling(I)V
+HSPLcom/android/server/display/mode/SyntheticModeManager;-><init>(Lcom/android/server/display/feature/DisplayManagerFlags;)V
+HSPLcom/android/server/display/mode/SystemRequestObserver$1;-><init>(Lcom/android/server/display/mode/SystemRequestObserver;)V
+HSPLcom/android/server/display/mode/SystemRequestObserver;-><init>(Lcom/android/server/display/mode/VotesStorage;)V
PLcom/android/server/display/mode/Vote;->priorityToString(I)Ljava/lang/String;
PLcom/android/server/display/mode/VoteSummary;-><init>(ZZZZ)V
PLcom/android/server/display/mode/VoteSummary;->adjustSize(Landroid/view/Display$Mode;[Landroid/view/Display$Mode;)V
-PLcom/android/server/display/mode/VoteSummary;->applyVotes(Landroid/util/SparseArray;II)V
+PLcom/android/server/display/mode/VoteSummary;->applyVotes(IILandroid/util/SparseArray;)V
PLcom/android/server/display/mode/VoteSummary;->equalsWithinFloatTolerance(FF)Z
PLcom/android/server/display/mode/VoteSummary;->filterModes([Landroid/view/Display$Mode;)Ljava/util/List;
PLcom/android/server/display/mode/VoteSummary;->isRenderRateAchievable(F)Z
-PLcom/android/server/display/mode/VoteSummary;->isValid()Z
PLcom/android/server/display/mode/VoteSummary;->limitRefreshRanges(Lcom/android/server/display/mode/VoteSummary;)V
PLcom/android/server/display/mode/VoteSummary;->reset()V
-PLcom/android/server/display/mode/VoteSummary;->selectBaseMode(Ljava/util/List;Landroid/view/Display$Mode;)Landroid/view/Display$Mode;
-PLcom/android/server/display/mode/VoteSummary;->validateModeRenderRateAchievable(Landroid/view/Display$Mode;)Z
-PLcom/android/server/display/mode/VoteSummary;->validateModeSize(Landroid/view/Display$Mode;)Z
-PLcom/android/server/display/mode/VoteSummary;->validateModeSupported(Landroid/view/Display$Mode;)Z
-PLcom/android/server/display/mode/VoteSummary;->validateModeWithinPhysicalRefreshRange(Landroid/view/Display$Mode;)Z
-PLcom/android/server/display/mode/VoteSummary;->validateModeWithinRenderRefreshRange(Landroid/view/Display$Mode;)Z
HSPLcom/android/server/display/mode/VotesStatsReporter;-><init>(ZZ)V
PLcom/android/server/display/mode/VotesStatsReporter;->getMaxRefreshRate(Lcom/android/server/display/mode/Vote;Z)I
-PLcom/android/server/display/mode/VotesStatsReporter;->reportVoteAdded(IILcom/android/server/display/mode/Vote;)V
PLcom/android/server/display/mode/VotesStatsReporter;->reportVoteChanged(IILcom/android/server/display/mode/Vote;)V
-PLcom/android/server/display/mode/VotesStatsReporter;->reportVotesActivated(IILandroid/view/Display$Mode;Landroid/util/SparseArray;)V
-HSPLcom/android/server/display/mode/VotesStorage;-><init>(Lcom/android/server/display/mode/VotesStorage$Listener;Lcom/android/server/display/mode/VotesStatsReporter;)V
+HSPLcom/android/server/display/mode/VotesStorage;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$$ExternalSyntheticLambda0;Lcom/android/server/display/mode/VotesStatsReporter;)V
PLcom/android/server/display/mode/VotesStorage;->getVotes(I)Landroid/util/SparseArray;
-PLcom/android/server/display/mode/VotesStorage;->updateGlobalVote(ILcom/android/server/display/mode/Vote;)V
-PLcom/android/server/display/mode/VotesStorage;->updateVote(IILcom/android/server/display/mode/Vote;)V
+HPLcom/android/server/display/mode/VotesStorage;->updateVote(IILcom/android/server/display/mode/Vote;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/lang/Object;Lcom/android/server/display/mode/RefreshRateVote$RenderVote;
PLcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector$$ExternalSyntheticLambda0;-><init>(Landroid/content/Context;)V
-PLcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector$$ExternalSyntheticLambda0;->getUsbManager()Landroid/hardware/usb/UsbManager;
-PLcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector;->$r8$lambda$PN4BrLCfdXQAp9PYfft5KYnxARY(Landroid/content/Context;)Landroid/hardware/usb/UsbManager;
-PLcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector;-><init>(Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/content/Context;)V
PLcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector;-><init>(Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/content/Context;Lcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector$Injector;)V
-PLcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector;->lambda$new$0(Landroid/content/Context;)Landroid/hardware/usb/UsbManager;
-PLcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector;->registerListener(Lcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector$Listener;)V
-HSPLcom/android/server/display/notifications/DisplayNotificationManager$1;-><init>(Landroid/content/Context;Lcom/android/server/display/feature/DisplayManagerFlags;)V
-PLcom/android/server/display/notifications/DisplayNotificationManager$1;->getNotificationManager()Landroid/app/NotificationManager;
-PLcom/android/server/display/notifications/DisplayNotificationManager$1;->getUsbErrorsDetector()Lcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector;
-HSPLcom/android/server/display/notifications/DisplayNotificationManager;-><init>(Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/content/Context;)V
+HSPLcom/android/server/display/notifications/DisplayNotificationManager$1;-><init>(Landroid/content/Context;Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/ExternalDisplayStatsService;)V
HSPLcom/android/server/display/notifications/DisplayNotificationManager;-><init>(Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/content/Context;Lcom/android/server/display/notifications/DisplayNotificationManager$Injector;)V
-PLcom/android/server/display/notifications/DisplayNotificationManager;->onBootCompleted()V
-PLcom/android/server/display/state/DisplayStateController;-><clinit>()V
-PLcom/android/server/display/state/DisplayStateController;-><init>(Lcom/android/server/display/DisplayPowerProximityStateController;)V
-PLcom/android/server/display/state/DisplayStateController;->shouldPerformScreenOffTransition()Z
-PLcom/android/server/display/state/DisplayStateController;->updateDisplayState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;ZZ)I
-PLcom/android/server/display/utils/AmbientFilter$WeightedMovingAverageAmbientFilter;-><init>(Ljava/lang/String;IF)V
-PLcom/android/server/display/utils/AmbientFilter$WeightedMovingAverageAmbientFilter;->validateArguments(F)V
+HSPLcom/android/server/display/plugin/PluginManager;-><init>(Landroid/content/Context;Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/plugin/PluginManager$Injector;)V
+PLcom/android/server/display/plugin/PluginManager;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/plugin/PluginStorage$$ExternalSyntheticLambda1;-><init>(Ljava/util/Map;)V
+HSPLcom/android/server/display/plugin/PluginStorage;-><init>()V
+PLcom/android/server/display/utils/AmbientFilter$WeightedMovingAverageAmbientFilter;-><init>(FILjava/lang/String;)V
PLcom/android/server/display/utils/AmbientFilter;-><init>(Ljava/lang/String;I)V
-PLcom/android/server/display/utils/AmbientFilter;->validateArguments(I)V
-PLcom/android/server/display/utils/AmbientFilterFactory;->createAmbientFilter(Ljava/lang/String;IF)Lcom/android/server/display/utils/AmbientFilter;
-PLcom/android/server/display/utils/AmbientFilterFactory;->createBrightnessFilter(Ljava/lang/String;Landroid/content/res/Resources;)Lcom/android/server/display/utils/AmbientFilter;
-PLcom/android/server/display/utils/AmbientFilterFactory;->getFloat(Landroid/content/res/Resources;I)F
HSPLcom/android/server/display/utils/DebugUtils;-><clinit>()V
HSPLcom/android/server/display/utils/DebugUtils;->isDebuggable(Ljava/lang/String;)Z
HSPLcom/android/server/display/utils/DeviceConfigParsingUtils;->ambientBrightnessThresholdsIntToFloat([I)[F
HSPLcom/android/server/display/utils/DeviceConfigParsingUtils;->displayBrightnessThresholdsIntToFloat([I)[F
PLcom/android/server/display/utils/DeviceConfigParsingUtils;->parseDeviceConfigMap(Ljava/lang/String;Ljava/util/function/BiFunction;Ljava/util/function/Function;)Ljava/util/Map;
-PLcom/android/server/display/utils/History;-><init>(I)V
-PLcom/android/server/display/utils/History;-><init>(ILjava/time/Clock;)V
-HSPLcom/android/server/display/utils/Plog$SystemPlog;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/display/utils/Plog;-><init>()V
-HSPLcom/android/server/display/utils/Plog;->createSystemPlog(Ljava/lang/String;)Lcom/android/server/display/utils/Plog;
-PLcom/android/server/display/utils/RollingBuffer;-><init>()V
-PLcom/android/server/display/utils/RollingBuffer;->clear()V
+PLcom/android/server/display/utils/History;-><init>()V
PLcom/android/server/display/utils/SensorUtils;->findSensor(Landroid/hardware/SensorManager;Lcom/android/server/display/config/SensorData;I)Landroid/hardware/Sensor;
PLcom/android/server/display/utils/SensorUtils;->findSensor(Landroid/hardware/SensorManager;Ljava/lang/String;Ljava/lang/String;I)Landroid/hardware/Sensor;
+PLcom/android/server/display/utils/SensorUtils;->getSensorTemperatureType(Lcom/android/server/display/config/SensorData;)I
PLcom/android/server/display/whitebalance/AmbientSensor$1;-><init>(Lcom/android/server/display/whitebalance/AmbientSensor;)V
-PLcom/android/server/display/whitebalance/AmbientSensor$AmbientBrightnessSensor;-><init>(Landroid/os/Handler;Landroid/hardware/SensorManager;I)V
-HPLcom/android/server/display/whitebalance/AmbientSensor$AmbientColorTemperatureSensor;-><init>(Landroid/os/Handler;Landroid/hardware/SensorManager;Ljava/lang/String;I)V
PLcom/android/server/display/whitebalance/AmbientSensor;-><init>(Ljava/lang/String;Landroid/os/Handler;Landroid/hardware/SensorManager;I)V
-PLcom/android/server/display/whitebalance/AmbientSensor;->validateArguments(Landroid/os/Handler;Landroid/hardware/SensorManager;I)V
-PLcom/android/server/display/whitebalance/DisplayWhiteBalanceFactory;->create(Landroid/os/Handler;Landroid/hardware/SensorManager;Landroid/content/res/Resources;)Lcom/android/server/display/whitebalance/DisplayWhiteBalanceController;
PLcom/android/server/display/whitebalance/DisplayWhiteBalanceFactory;->createBrightnessSensor(Landroid/os/Handler;Landroid/hardware/SensorManager;Landroid/content/res/Resources;)Lcom/android/server/display/whitebalance/AmbientSensor$AmbientBrightnessSensor;
PLcom/android/server/display/whitebalance/DisplayWhiteBalanceFactory;->createColorTemperatureSensor(Landroid/os/Handler;Landroid/hardware/SensorManager;Landroid/content/res/Resources;)Lcom/android/server/display/whitebalance/AmbientSensor$AmbientColorTemperatureSensor;
+PLcom/android/server/dreams/DreamController$DreamRecord$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/dreams/DreamController$DreamRecord;Landroid/os/IBinder;)V
+HPLcom/android/server/dreams/DreamController$DreamRecord$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/dreams/DreamController$DreamRecord$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/dreams/DreamController$DreamRecord;I)V
+PLcom/android/server/dreams/DreamController$DreamRecord$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/dreams/DreamController$DreamRecord$1;-><init>(Lcom/android/server/dreams/DreamController$DreamRecord;)V
+PLcom/android/server/dreams/DreamController$DreamRecord$1;->sendResult(Landroid/os/Bundle;)V
+HPLcom/android/server/dreams/DreamController$DreamRecord;-><init>(Lcom/android/server/dreams/DreamController;Landroid/os/Binder;Landroid/content/ComponentName;ZZILandroid/os/PowerManager$WakeLock;)V
+PLcom/android/server/dreams/DreamController$DreamRecord;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/dreams/DreamController$DreamRecord;->releaseWakeLockIfNeeded()V
PLcom/android/server/dreams/DreamController;-><clinit>()V
-PLcom/android/server/dreams/DreamController;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/dreams/DreamController$Listener;)V
-PLcom/android/server/dreams/DreamController;->createDreamingStartedStoppedOptions()Landroid/os/Bundle;
+PLcom/android/server/dreams/DreamController;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/dreams/DreamManagerService$4;)V
+PLcom/android/server/dreams/DreamController;->stopDream(ZLjava/lang/String;)V
+HPLcom/android/server/dreams/DreamController;->stopDreamInstance(ZLjava/lang/String;Lcom/android/server/dreams/DreamController$DreamRecord;)V
+PLcom/android/server/dreams/DreamController;->stopPreviousDreams()V
+PLcom/android/server/dreams/DreamManagerService$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/dreams/DreamManagerService$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/dreams/DreamManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/dreams/DreamManagerService;Ljava/lang/Object;I)V
+PLcom/android/server/dreams/DreamManagerService$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/dreams/DreamManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/dreams/DreamManagerService;I)V
+PLcom/android/server/dreams/DreamManagerService$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/dreams/DreamManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/dreams/DreamManagerService;ZLjava/lang/String;)V
+PLcom/android/server/dreams/DreamManagerService$$ExternalSyntheticLambda4;->run()V
+PLcom/android/server/dreams/DreamManagerService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/dreams/DreamManagerService;Landroid/content/ComponentName;Landroid/os/Binder;ZZILandroid/os/PowerManager$WakeLock;Ljava/lang/String;)V
+HPLcom/android/server/dreams/DreamManagerService$$ExternalSyntheticLambda7;->run()V
+PLcom/android/server/dreams/DreamManagerService$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
+PLcom/android/server/dreams/DreamManagerService$$ExternalSyntheticLambda8;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
PLcom/android/server/dreams/DreamManagerService$1;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
-PLcom/android/server/dreams/DreamManagerService$2;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
-PLcom/android/server/dreams/DreamManagerService$3;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
+PLcom/android/server/dreams/DreamManagerService$2;-><init>(Lcom/android/server/dreams/DreamManagerService;I)V
+PLcom/android/server/dreams/DreamManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/dreams/DreamManagerService$4;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
+PLcom/android/server/dreams/DreamManagerService$4;->onDreamStopped(Landroid/os/Binder;)V
+PLcom/android/server/dreams/DreamManagerService$5;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
PLcom/android/server/dreams/DreamManagerService$5;-><init>(Lcom/android/server/dreams/DreamManagerService;Landroid/os/Handler;)V
PLcom/android/server/dreams/DreamManagerService$6;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
PLcom/android/server/dreams/DreamManagerService$BinderService;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
-PLcom/android/server/dreams/DreamManagerService$BinderService;-><init>(Lcom/android/server/dreams/DreamManagerService;Lcom/android/server/dreams/DreamManagerService$BinderService-IA;)V
-PLcom/android/server/dreams/DreamManagerService$DreamHandler;-><init>(Landroid/os/Looper;)V
+PLcom/android/server/dreams/DreamManagerService$BinderService;->awaken()V
+PLcom/android/server/dreams/DreamManagerService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/dreams/DreamManagerService$BinderService;->finishSelfOneway(Landroid/os/IBinder;Z)V
+PLcom/android/server/dreams/DreamManagerService$BinderService;->isDreaming()Z
+PLcom/android/server/dreams/DreamManagerService$BinderService;->startDozingOneway(Landroid/os/IBinder;IIFIZ)V
+PLcom/android/server/dreams/DreamManagerService$BinderService;->stopDozing(Landroid/os/IBinder;)V
+PLcom/android/server/dreams/DreamManagerService$DreamRecord;-><init>(Landroid/content/ComponentName;IZZ)V
+PLcom/android/server/dreams/DreamManagerService$DreamRecord;->toString()Ljava/lang/String;
PLcom/android/server/dreams/DreamManagerService$LocalService;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
-PLcom/android/server/dreams/DreamManagerService$LocalService;-><init>(Lcom/android/server/dreams/DreamManagerService;Lcom/android/server/dreams/DreamManagerService$LocalService-IA;)V
HPLcom/android/server/dreams/DreamManagerService$LocalService;->isDreaming()Z
PLcom/android/server/dreams/DreamManagerService$LocalService;->registerDreamManagerStateListener(Landroid/service/dreams/DreamManagerInternal$DreamManagerStateListener;)V
-PLcom/android/server/dreams/DreamManagerService$SettingsObserver;-><init>(Lcom/android/server/dreams/DreamManagerService;Landroid/os/Handler;)V
-PLcom/android/server/dreams/DreamManagerService;->-$$Nest$fgetmDreamManagerStateListeners(Lcom/android/server/dreams/DreamManagerService;)Ljava/util/concurrent/CopyOnWriteArrayList;
-PLcom/android/server/dreams/DreamManagerService;->-$$Nest$misDreamingInternal(Lcom/android/server/dreams/DreamManagerService;)Z
-PLcom/android/server/dreams/DreamManagerService;->-$$Nest$mshouldKeepDreamingWhenUnplugging(Lcom/android/server/dreams/DreamManagerService;)Z
-HPLcom/android/server/dreams/DreamManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/dreams/DreamManagerService;->getDozeComponent()Landroid/content/ComponentName;
-PLcom/android/server/dreams/DreamManagerService;->getDozeComponent(I)Landroid/content/ComponentName;
-PLcom/android/server/dreams/DreamManagerService;->getServiceInfo(Landroid/content/ComponentName;)Landroid/content/pm/ServiceInfo;
-PLcom/android/server/dreams/DreamManagerService;->isDreamingInternal()Z
+PLcom/android/server/dreams/DreamManagerService$LocalService;->startDream(ZLjava/lang/String;)V
+PLcom/android/server/dreams/DreamManagerService$LocalService;->stopDream(ZLjava/lang/String;)V
+PLcom/android/server/dreams/DreamManagerService$PerUserPackageMonitor;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
+PLcom/android/server/dreams/DreamManagerService;->-$$Nest$mcheckPermission(Lcom/android/server/dreams/DreamManagerService;Ljava/lang/String;)V
+PLcom/android/server/dreams/DreamManagerService;->-$$Nest$mdumpInternal(Lcom/android/server/dreams/DreamManagerService;Ljava/io/PrintWriter;)V
+PLcom/android/server/dreams/DreamManagerService;->-$$Nest$mfinishSelfInternal(Lcom/android/server/dreams/DreamManagerService;Landroid/os/IBinder;Z)V
+HPLcom/android/server/dreams/DreamManagerService;->-$$Nest$mstartDozingInternal(Lcom/android/server/dreams/DreamManagerService;Landroid/os/IBinder;IIFIZ)V
+PLcom/android/server/dreams/DreamManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/dreams/DreamManagerService;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/dreams/DreamManagerService;->cleanupDreamLocked()V
+HPLcom/android/server/dreams/DreamManagerService;->isDreamingInternal()Z
PLcom/android/server/dreams/DreamManagerService;->onBootPhase(I)V
PLcom/android/server/dreams/DreamManagerService;->onStart()V
-PLcom/android/server/dreams/DreamManagerService;->shouldKeepDreamingWhenUnplugging()Z
+PLcom/android/server/dreams/DreamManagerService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/dreams/DreamManagerService;->startDreamInternal(Ljava/lang/String;Z)V
+HPLcom/android/server/dreams/DreamManagerService;->startDreamLocked(Landroid/content/ComponentName;ZZILjava/lang/String;)V
+PLcom/android/server/dreams/DreamManagerService;->stopDozingInternal(Landroid/os/IBinder;)V
+PLcom/android/server/dreams/DreamManagerService;->stopDreamInternal(Ljava/lang/String;Z)V
+HPLcom/android/server/dreams/DreamManagerService;->stopDreamLocked(Ljava/lang/String;Z)V
PLcom/android/server/dreams/DreamManagerService;->updateWhenToDreamSettings()V
-PLcom/android/server/dreams/DreamManagerService;->validateDream(Landroid/content/ComponentName;)Z
+PLcom/android/server/dreams/DreamManagerService;->validateDream(ILandroid/content/ComponentName;)Z
PLcom/android/server/dreams/DreamManagerService;->writePulseGestureEnabled()V
PLcom/android/server/dreams/DreamUiEventLoggerImpl;-><init>([Ljava/lang/String;)V
+PLcom/android/server/dreams/Flags;-><clinit>()V
+PLcom/android/server/dreams/Flags;->useBatteryChangedBroadcast()Z
PLcom/android/server/emergency/EmergencyAffordanceService$1;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;)V
PLcom/android/server/emergency/EmergencyAffordanceService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/emergency/EmergencyAffordanceService$2;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;)V
PLcom/android/server/emergency/EmergencyAffordanceService$BinderService;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;)V
-PLcom/android/server/emergency/EmergencyAffordanceService$BinderService;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;Lcom/android/server/emergency/EmergencyAffordanceService$BinderService-IA;)V
+PLcom/android/server/emergency/EmergencyAffordanceService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/emergency/EmergencyAffordanceService$MyHandler;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;Landroid/os/Looper;)V
PLcom/android/server/emergency/EmergencyAffordanceService$MyHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/emergency/EmergencyAffordanceService;->-$$Nest$fgetmHandler(Lcom/android/server/emergency/EmergencyAffordanceService;)Lcom/android/server/emergency/EmergencyAffordanceService$MyHandler;
-PLcom/android/server/emergency/EmergencyAffordanceService;->-$$Nest$mhandleInitializeState(Lcom/android/server/emergency/EmergencyAffordanceService;)V
-PLcom/android/server/emergency/EmergencyAffordanceService;->-$$Nest$mhandleNetworkCountryChanged(Lcom/android/server/emergency/EmergencyAffordanceService;Ljava/lang/String;I)V
PLcom/android/server/emergency/EmergencyAffordanceService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/emergency/EmergencyAffordanceService;->handleInitializeState()V
-PLcom/android/server/emergency/EmergencyAffordanceService;->handleNetworkCountryChanged(Ljava/lang/String;I)V
-PLcom/android/server/emergency/EmergencyAffordanceService;->handleThirdPartyBootPhase()V
-PLcom/android/server/emergency/EmergencyAffordanceService;->handleUpdateAirplaneModeStatus()V
PLcom/android/server/emergency/EmergencyAffordanceService;->handleUpdateSimSubscriptionInfo()V
-PLcom/android/server/emergency/EmergencyAffordanceService;->isoRequiresEmergencyAffordance(Ljava/lang/String;)Z
PLcom/android/server/emergency/EmergencyAffordanceService;->onBootPhase(I)V
PLcom/android/server/emergency/EmergencyAffordanceService;->onStart()V
PLcom/android/server/emergency/EmergencyAffordanceService;->updateEmergencyAffordanceNeeded()V
PLcom/android/server/emergency/EmergencyAffordanceService;->updateNetworkCountry()V
-PLcom/android/server/feature/flags/FeatureFlagsImpl;-><clinit>()V
-PLcom/android/server/feature/flags/FeatureFlagsImpl;-><init>()V
-HPLcom/android/server/feature/flags/FeatureFlagsImpl;->enableReadDropboxPermission()Z
-PLcom/android/server/feature/flags/FeatureFlagsImpl;->load_overrides_preload_safety()V
-PLcom/android/server/feature/flags/Flags;-><clinit>()V
-HPLcom/android/server/feature/flags/Flags;->enableReadDropboxPermission()Z
-HSPLcom/android/server/firewall/AndFilter$1;-><init>(Ljava/lang/String;)V
HSPLcom/android/server/firewall/AndFilter;-><clinit>()V
-HSPLcom/android/server/firewall/CategoryFilter$1;-><init>(Ljava/lang/String;)V
HSPLcom/android/server/firewall/CategoryFilter;-><clinit>()V
HSPLcom/android/server/firewall/FilterFactory;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/FilterFactory;->getTagName()Ljava/lang/String;
HSPLcom/android/server/firewall/IntentFirewall$FirewallHandler;-><init>(Lcom/android/server/firewall/IntentFirewall;Landroid/os/Looper;)V
HSPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;-><init>()V
-HSPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;-><init>(Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver-IA;)V
-HPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->queryByComponent(Landroid/content/ComponentName;Ljava/util/List;)V
-PLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->sortResults(Ljava/util/List;)V
+HPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->sortResults(Ljava/util/List;)V
HSPLcom/android/server/firewall/IntentFirewall$RuleObserver;-><init>(Lcom/android/server/firewall/IntentFirewall;Ljava/io/File;)V
HSPLcom/android/server/firewall/IntentFirewall;-><clinit>()V
-HSPLcom/android/server/firewall/IntentFirewall;-><init>(Lcom/android/server/firewall/IntentFirewall$AMSInterface;Landroid/os/Handler;)V
-HPLcom/android/server/firewall/IntentFirewall;->checkBroadcast(Landroid/content/Intent;IILjava/lang/String;I)Z
-HPLcom/android/server/firewall/IntentFirewall;->checkIntent(Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;Landroid/content/ComponentName;ILandroid/content/Intent;IILjava/lang/String;I)Z
-HPLcom/android/server/firewall/IntentFirewall;->checkService(Landroid/content/ComponentName;Landroid/content/Intent;IILjava/lang/String;Landroid/content/pm/ApplicationInfo;)Z
-PLcom/android/server/firewall/IntentFirewall;->checkStartActivity(Landroid/content/Intent;IILjava/lang/String;Landroid/content/pm/ApplicationInfo;)Z
+HSPLcom/android/server/firewall/IntentFirewall;-><init>(Lcom/android/server/am/ActivityManagerService$PidMap;Lcom/android/server/am/ActivityManagerService$UiHandler;)V
+HPLcom/android/server/firewall/IntentFirewall;->checkIntent(Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;Landroid/content/ComponentName;ILandroid/content/Intent;IILjava/lang/String;I)Z+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/firewall/IntentFirewall;->getPackageManager()Landroid/content/pm/PackageManagerInternal;
-HSPLcom/android/server/firewall/IntentFirewall;->getRulesDir()Ljava/io/File;
HSPLcom/android/server/firewall/IntentFirewall;->readRulesDir(Ljava/io/File;)V
-HSPLcom/android/server/firewall/NotFilter$1;-><init>(Ljava/lang/String;)V
HSPLcom/android/server/firewall/NotFilter;-><clinit>()V
-HSPLcom/android/server/firewall/OrFilter$1;-><init>(Ljava/lang/String;)V
HSPLcom/android/server/firewall/OrFilter;-><clinit>()V
-HSPLcom/android/server/firewall/PortFilter$1;-><init>(Ljava/lang/String;)V
HSPLcom/android/server/firewall/PortFilter;-><clinit>()V
-HSPLcom/android/server/firewall/SenderFilter$1;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/SenderFilter$2;-><init>()V
-HSPLcom/android/server/firewall/SenderFilter$3;-><init>()V
-HSPLcom/android/server/firewall/SenderFilter$4;-><init>()V
-HSPLcom/android/server/firewall/SenderFilter$5;-><init>()V
+HSPLcom/android/server/firewall/SenderFilter$2;-><init>(I)V
HSPLcom/android/server/firewall/SenderFilter;-><clinit>()V
-HSPLcom/android/server/firewall/SenderPackageFilter$1;-><init>(Ljava/lang/String;)V
HSPLcom/android/server/firewall/SenderPackageFilter;-><clinit>()V
-HSPLcom/android/server/firewall/SenderPermissionFilter$1;-><init>(Ljava/lang/String;)V
HSPLcom/android/server/firewall/SenderPermissionFilter;-><clinit>()V
-HSPLcom/android/server/firewall/StringFilter$10;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$1;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$2;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$3;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$4;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$5;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$6;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$7;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$8;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$9;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$ValueProvider;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/StringFilter$1;-><init>(Ljava/lang/String;I)V
HSPLcom/android/server/firewall/StringFilter;-><clinit>()V
-HSPLcom/android/server/flags/DynamicFlagBinderDelegate$$ExternalSyntheticLambda0;-><init>()V
HSPLcom/android/server/flags/DynamicFlagBinderDelegate$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
HSPLcom/android/server/flags/DynamicFlagBinderDelegate$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/flags/DynamicFlagBinderDelegate;)V
HSPLcom/android/server/flags/DynamicFlagBinderDelegate$1;-><init>(Lcom/android/server/flags/DynamicFlagBinderDelegate;)V
HSPLcom/android/server/flags/DynamicFlagBinderDelegate$BinderGriever;-><init>(Lcom/android/server/flags/DynamicFlagBinderDelegate;I)V
-HSPLcom/android/server/flags/DynamicFlagBinderDelegate$BinderGriever;-><init>(Lcom/android/server/flags/DynamicFlagBinderDelegate;ILcom/android/server/flags/DynamicFlagBinderDelegate$BinderGriever-IA;)V
-HSPLcom/android/server/flags/DynamicFlagBinderDelegate;->$r8$lambda$vcppf9Un-gROJ-J-LEIMgIKeYoY(Ljava/lang/Integer;)Ljava/util/Set;
HSPLcom/android/server/flags/DynamicFlagBinderDelegate;-><clinit>()V
HSPLcom/android/server/flags/DynamicFlagBinderDelegate;-><init>(Lcom/android/server/flags/FlagOverrideStore;)V
-HSPLcom/android/server/flags/DynamicFlagBinderDelegate;->lambda$static$0(Ljava/lang/Integer;)Ljava/util/Set;
-HSPLcom/android/server/flags/DynamicFlagBinderDelegate;->registerCallback(ILandroid/flags/IFeatureFlagsCallback;)V
HSPLcom/android/server/flags/FeatureFlagsBinder;-><init>(Lcom/android/server/flags/FlagOverrideStore;Lcom/android/server/flags/FlagsShellCommand;Lcom/android/server/flags/FeatureFlagsService$PermissionsChecker;)V
HSPLcom/android/server/flags/FeatureFlagsBinder;->registerCallback(Landroid/flags/IFeatureFlagsCallback;)V
HSPLcom/android/server/flags/FeatureFlagsService$PermissionsChecker;-><init>(Landroid/content/Context;)V
HSPLcom/android/server/flags/FeatureFlagsService;-><init>(Landroid/content/Context;)V
HSPLcom/android/server/flags/FeatureFlagsService;->onBootPhase(I)V
HSPLcom/android/server/flags/FeatureFlagsService;->onStart()V
-HSPLcom/android/server/flags/FlagCache$$ExternalSyntheticLambda0;-><init>()V
HSPLcom/android/server/flags/FlagCache;-><init>()V
-HSPLcom/android/server/flags/FlagOverrideStore;-><init>(Lcom/android/server/flags/SettingsProxy;)V
-HSPLcom/android/server/flags/FlagOverrideStore;->setChangeCallback(Lcom/android/server/flags/FlagOverrideStore$FlagChangeCallback;)V
+HSPLcom/android/server/flags/FlagOverrideStore;-><init>(Lcom/android/server/flags/GlobalSettingsProxy;)V
HSPLcom/android/server/flags/FlagsShellCommand;-><init>(Lcom/android/server/flags/FlagOverrideStore;)V
HSPLcom/android/server/flags/GlobalSettingsProxy;-><init>(Landroid/content/ContentResolver;)V
PLcom/android/server/gpu/GpuService;-><init>(Landroid/content/Context;)V
@@ -11654,26 +9150,14 @@ PLcom/android/server/gpu/GpuService;->onBootPhase(I)V
PLcom/android/server/gpu/GpuService;->onStart()V
PLcom/android/server/grammaticalinflection/GrammaticalInflectionBackupHelper;-><clinit>()V
PLcom/android/server/grammaticalinflection/GrammaticalInflectionBackupHelper;-><init>(Lcom/android/server/grammaticalinflection/GrammaticalInflectionService;Landroid/content/pm/PackageManager;)V
-PLcom/android/server/grammaticalinflection/GrammaticalInflectionManagerInternal;-><init>()V
PLcom/android/server/grammaticalinflection/GrammaticalInflectionService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/grammaticalinflection/GrammaticalInflectionService;Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/grammaticalinflection/GrammaticalInflectionService$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionBinderService;-><init>(Lcom/android/server/grammaticalinflection/GrammaticalInflectionService;)V
-PLcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionBinderService;-><init>(Lcom/android/server/grammaticalinflection/GrammaticalInflectionService;Lcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionBinderService-IA;)V
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionBinderService;->peekSystemGrammaticalGenderByUserId(Landroid/content/AttributionSource;I)I
PLcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionManagerInternalImpl;-><init>(Lcom/android/server/grammaticalinflection/GrammaticalInflectionService;)V
-PLcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionManagerInternalImpl;-><init>(Lcom/android/server/grammaticalinflection/GrammaticalInflectionService;Lcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionManagerInternalImpl-IA;)V
-HPLcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionManagerInternalImpl;->canGetSystemGrammaticalGender(ILjava/lang/String;)Z
-PLcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionManagerInternalImpl;->getSystemGrammaticalGender(I)I
-PLcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionManagerInternalImpl;->retrieveSystemGrammaticalGender(Landroid/content/res/Configuration;)I
-PLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->$r8$lambda$sWnJ5Api2DUCiEAZO1zYUXFfRbI(Lcom/android/server/grammaticalinflection/GrammaticalInflectionService;Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->-$$Nest$fgetmContext(Lcom/android/server/grammaticalinflection/GrammaticalInflectionService;)Landroid/content/Context;
-HPLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->-$$Nest$mcanGetSystemGrammaticalGender(Lcom/android/server/grammaticalinflection/GrammaticalInflectionService;Landroid/content/AttributionSource;)Z
-PLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->-$$Nest$mcheckSystemTermsOfAddressIsEnabled(Lcom/android/server/grammaticalinflection/GrammaticalInflectionService;)Z
PLcom/android/server/grammaticalinflection/GrammaticalInflectionService;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->canGetSystemGrammaticalGender(Landroid/content/AttributionSource;)Z
-HPLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->checkSystemTermsOfAddressIsEnabled()Z
-PLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->getGrammaticalGenderFile(I)Ljava/io/File;
-PLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->getSystemGrammaticalGender(Landroid/content/AttributionSource;I)I
-PLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->lambda$onUserUnlocked$0(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->checkSystemTermsOfAddressIsEnabled()Z
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->getSystemGrammaticalGender(I)I
PLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->onStart()V
PLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->onUserUnlocked(Lcom/android/server/SystemService$TargetUser;)V
HPLcom/android/server/grammaticalinflection/GrammaticalInflectionUtils;->checkSystemGrammaticalGenderPermission(Landroid/permission/PermissionManager;Landroid/content/AttributionSource;)Z
@@ -11681,98 +9165,67 @@ PLcom/android/server/graphics/fonts/FontManagerService$$ExternalSyntheticLambda0
PLcom/android/server/graphics/fonts/FontManagerService$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/graphics/fonts/FontManagerService$FsverityUtilImpl;-><init>([Ljava/lang/String;)V
PLcom/android/server/graphics/fonts/FontManagerService$Lifecycle$1;-><init>(Lcom/android/server/graphics/fonts/FontManagerService$Lifecycle;)V
-HPLcom/android/server/graphics/fonts/FontManagerService$Lifecycle$1;->getSerializedSystemFontMap()Landroid/os/SharedMemory;
-HPLcom/android/server/graphics/fonts/FontManagerService$Lifecycle;->-$$Nest$fgetmService(Lcom/android/server/graphics/fonts/FontManagerService$Lifecycle;)Lcom/android/server/graphics/fonts/FontManagerService;
-HPLcom/android/server/graphics/fonts/FontManagerService$Lifecycle;->-$$Nest$fgetmServiceStarted(Lcom/android/server/graphics/fonts/FontManagerService$Lifecycle;)Ljava/util/concurrent/CompletableFuture;
PLcom/android/server/graphics/fonts/FontManagerService$Lifecycle;-><init>(Landroid/content/Context;Z)V
PLcom/android/server/graphics/fonts/FontManagerService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/graphics/fonts/FontManagerService$Lifecycle;->onStart()V
-PLcom/android/server/graphics/fonts/FontManagerService;->$r8$lambda$6ntzwgOp0lINWCpV58rCsi7uat4(Lcom/android/server/graphics/fonts/FontManagerService;Ljava/util/concurrent/CompletableFuture;)V
PLcom/android/server/graphics/fonts/FontManagerService;-><init>(Landroid/content/Context;ZLjava/util/concurrent/CompletableFuture;)V
-PLcom/android/server/graphics/fonts/FontManagerService;-><init>(Landroid/content/Context;ZLjava/util/concurrent/CompletableFuture;Lcom/android/server/graphics/fonts/FontManagerService-IA;)V
PLcom/android/server/graphics/fonts/FontManagerService;->createUpdatableFontDir()Lcom/android/server/graphics/fonts/UpdatableFontDir;
-HPLcom/android/server/graphics/fonts/FontManagerService;->getCurrentFontMap()Landroid/os/SharedMemory;
+PLcom/android/server/graphics/fonts/FontManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/graphics/fonts/FontManagerService;->getSystemFontConfig()Landroid/text/FontConfig;
PLcom/android/server/graphics/fonts/FontManagerService;->initialize()V
-PLcom/android/server/graphics/fonts/FontManagerService;->lambda$new$0(Ljava/util/concurrent/CompletableFuture;)V
-PLcom/android/server/graphics/fonts/FontManagerService;->serializeFontMap(Landroid/text/FontConfig;)Landroid/os/SharedMemory;
-PLcom/android/server/graphics/fonts/FontManagerService;->setSerializedFontMap(Landroid/os/SharedMemory;)V
-PLcom/android/server/graphics/fonts/FontManagerService;->setSystemFontMap()V
PLcom/android/server/graphics/fonts/FontManagerService;->updateSerializedFontMap()V
-PLcom/android/server/graphics/fonts/OtfFontFileParser;-><init>()V
+PLcom/android/server/graphics/fonts/FontManagerShellCommand;-><init>(Lcom/android/server/graphics/fonts/FontManagerService;)V
+PLcom/android/server/graphics/fonts/FontManagerShellCommand;->dumpFontConfig(Landroid/util/IndentingPrintWriter;Landroid/text/FontConfig;)V
+PLcom/android/server/graphics/fonts/FontManagerShellCommand;->dumpSingleFontConfig(Landroid/util/IndentingPrintWriter;Landroid/text/FontConfig$Font;)V
PLcom/android/server/graphics/fonts/PersistentSystemFontConfig$Config;-><init>()V
-PLcom/android/server/graphics/fonts/UpdatableFontDir$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/graphics/fonts/UpdatableFontDir$$ExternalSyntheticLambda1;-><init>()V
PLcom/android/server/graphics/fonts/UpdatableFontDir$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/graphics/fonts/UpdatableFontDir;->$r8$lambda$l6wKUt3kHk5foaoReX8Hx16jJGk(Ljava/util/Map;)Landroid/text/FontConfig;
-PLcom/android/server/graphics/fonts/UpdatableFontDir;-><init>(Ljava/io/File;Lcom/android/server/graphics/fonts/UpdatableFontDir$FontFileParser;Lcom/android/server/graphics/fonts/UpdatableFontDir$FsverityUtil;Ljava/io/File;)V
-PLcom/android/server/graphics/fonts/UpdatableFontDir;-><init>(Ljava/io/File;Lcom/android/server/graphics/fonts/UpdatableFontDir$FontFileParser;Lcom/android/server/graphics/fonts/UpdatableFontDir$FsverityUtil;Ljava/io/File;Ljava/util/function/Supplier;Ljava/util/function/Function;)V
+PLcom/android/server/graphics/fonts/UpdatableFontDir;-><init>(Ljava/io/File;Lcom/android/server/graphics/fonts/OtfFontFileParser;Lcom/android/server/graphics/fonts/FontManagerService$FsverityUtilImpl;Ljava/io/File;)V
PLcom/android/server/graphics/fonts/UpdatableFontDir;->getPostScriptMap()Ljava/util/Map;
PLcom/android/server/graphics/fonts/UpdatableFontDir;->getSystemFontConfig()Landroid/text/FontConfig;
-PLcom/android/server/graphics/fonts/UpdatableFontDir;->lambda$new$0(Ljava/util/Map;)Landroid/text/FontConfig;
PLcom/android/server/graphics/fonts/UpdatableFontDir;->loadFontFileMap()V
PLcom/android/server/graphics/fonts/UpdatableFontDir;->readPersistentConfig()Lcom/android/server/graphics/fonts/PersistentSystemFontConfig$Config;
PLcom/android/server/health/HealthHalCallbackHidl;-><clinit>()V
-PLcom/android/server/health/HealthHalCallbackHidl;-><init>(Lcom/android/server/health/HealthInfoCallback;)V
-PLcom/android/server/health/HealthHalCallbackHidl;->healthInfoChanged_2_1(Landroid/hardware/health/V2_1/HealthInfo;)V
-PLcom/android/server/health/HealthHalCallbackHidl;->onRegistration(Landroid/hardware/health/V2_0/IHealth;Landroid/hardware/health/V2_0/IHealth;Ljava/lang/String;)V
-PLcom/android/server/health/HealthHalCallbackHidl;->traceBegin(Ljava/lang/String;)V
-PLcom/android/server/health/HealthHalCallbackHidl;->traceEnd()V
PLcom/android/server/health/HealthRegCallbackAidl$HalInfoCallback;-><init>(Lcom/android/server/health/HealthRegCallbackAidl;)V
-PLcom/android/server/health/HealthRegCallbackAidl$HalInfoCallback;-><init>(Lcom/android/server/health/HealthRegCallbackAidl;Lcom/android/server/health/HealthRegCallbackAidl$HalInfoCallback-IA;)V
-PLcom/android/server/health/HealthRegCallbackAidl;-><init>(Lcom/android/server/health/HealthInfoCallback;)V
-PLcom/android/server/health/HealthServiceWrapper$1;-><init>()V
-PLcom/android/server/health/HealthServiceWrapper$2;-><init>()V
-PLcom/android/server/health/HealthServiceWrapper$3;-><init>()V
-PLcom/android/server/health/HealthServiceWrapper;-><init>()V
-PLcom/android/server/health/HealthServiceWrapper;->create(Lcom/android/server/health/HealthInfoCallback;)Lcom/android/server/health/HealthServiceWrapper;
+PLcom/android/server/health/HealthRegCallbackAidl$HalInfoCallback;->asBinder()Landroid/os/IBinder;
+HPLcom/android/server/health/HealthRegCallbackAidl$HalInfoCallback;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/health/HealthRegCallbackAidl;-><init>(Lcom/android/server/BatteryService$$ExternalSyntheticLambda6;)V
+PLcom/android/server/health/HealthRegCallbackAidl;->onRegistration(Landroid/hardware/health/IHealth;Landroid/hardware/health/IHealth;)V
+PLcom/android/server/health/HealthServiceWrapper;->create(Lcom/android/server/BatteryService$$ExternalSyntheticLambda6;)Lcom/android/server/health/HealthServiceWrapper;
PLcom/android/server/health/HealthServiceWrapper;->create(Lcom/android/server/health/HealthRegCallbackAidl;Lcom/android/server/health/HealthServiceWrapperAidl$ServiceManagerStub;Lcom/android/server/health/HealthServiceWrapperHidl$Callback;Lcom/android/server/health/HealthServiceWrapperHidl$IServiceManagerSupplier;Lcom/android/server/health/HealthServiceWrapperHidl$IHealthSupplier;)Lcom/android/server/health/HealthServiceWrapper;
+PLcom/android/server/health/HealthServiceWrapperAidl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/health/HealthServiceWrapperAidl;)V
+PLcom/android/server/health/HealthServiceWrapperAidl$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/health/HealthServiceWrapperAidl$ServiceCallback$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/health/HealthServiceWrapperAidl$ServiceCallback;Landroid/os/IBinder;)V
+PLcom/android/server/health/HealthServiceWrapperAidl$ServiceCallback$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/health/HealthServiceWrapperAidl$ServiceCallback;-><init>(Lcom/android/server/health/HealthServiceWrapperAidl;)V
-PLcom/android/server/health/HealthServiceWrapperAidl$ServiceCallback;-><init>(Lcom/android/server/health/HealthServiceWrapperAidl;Lcom/android/server/health/HealthServiceWrapperAidl$ServiceCallback-IA;)V
-PLcom/android/server/health/HealthServiceWrapperAidl$ServiceManagerStub;->waitForDeclaredService(Ljava/lang/String;)Landroid/hardware/health/IHealth;
+PLcom/android/server/health/HealthServiceWrapperAidl$ServiceCallback;->onRegistration(Ljava/lang/String;Landroid/os/IBinder;)V
PLcom/android/server/health/HealthServiceWrapperAidl;-><clinit>()V
PLcom/android/server/health/HealthServiceWrapperAidl;-><init>(Lcom/android/server/health/HealthRegCallbackAidl;Lcom/android/server/health/HealthServiceWrapperAidl$ServiceManagerStub;)V
-PLcom/android/server/health/HealthServiceWrapperAidl;->traceBegin(Ljava/lang/String;)V
+PLcom/android/server/health/HealthServiceWrapperAidl;->getHandlerThread()Landroid/os/HandlerThread;
+PLcom/android/server/health/HealthServiceWrapperAidl;->getHealthInfo()Landroid/hardware/health/HealthInfo;
+HPLcom/android/server/health/HealthServiceWrapperAidl;->getProperty(ILandroid/os/BatteryProperty;)I
+HPLcom/android/server/health/HealthServiceWrapperAidl;->getPropertyInternal(ILandroid/os/BatteryProperty;)I
+PLcom/android/server/health/HealthServiceWrapperAidl;->scheduleUpdate()V
PLcom/android/server/health/HealthServiceWrapperAidl;->traceEnd()V
-PLcom/android/server/health/HealthServiceWrapperHidl$$ExternalSyntheticLambda4;-><init>(Landroid/util/MutableInt;Landroid/os/BatteryProperty;)V
-PLcom/android/server/health/HealthServiceWrapperHidl$$ExternalSyntheticLambda4;->onValues(II)V
-PLcom/android/server/health/HealthServiceWrapperHidl$IHealthSupplier;->get(Ljava/lang/String;)Landroid/hardware/health/V2_0/IHealth;
-PLcom/android/server/health/HealthServiceWrapperHidl$IServiceManagerSupplier;->get()Landroid/hidl/manager/V1_0/IServiceManager;
-PLcom/android/server/health/HealthServiceWrapperHidl$Notification$1;-><init>(Lcom/android/server/health/HealthServiceWrapperHidl$Notification;)V
-PLcom/android/server/health/HealthServiceWrapperHidl$Notification$1;->run()V
-PLcom/android/server/health/HealthServiceWrapperHidl$Notification;-><init>(Lcom/android/server/health/HealthServiceWrapperHidl;)V
-PLcom/android/server/health/HealthServiceWrapperHidl$Notification;-><init>(Lcom/android/server/health/HealthServiceWrapperHidl;Lcom/android/server/health/HealthServiceWrapperHidl$Notification-IA;)V
-PLcom/android/server/health/HealthServiceWrapperHidl$Notification;->onRegistration(Ljava/lang/String;Ljava/lang/String;Z)V
-PLcom/android/server/health/HealthServiceWrapperHidl;->$r8$lambda$eetuJn3PsYCN-V7Scb_L05ajA3Q(Landroid/util/MutableInt;Landroid/os/BatteryProperty;II)V
-PLcom/android/server/health/HealthServiceWrapperHidl;->-$$Nest$fgetmHandlerThread(Lcom/android/server/health/HealthServiceWrapperHidl;)Landroid/os/HandlerThread;
-PLcom/android/server/health/HealthServiceWrapperHidl;->-$$Nest$fgetmHealthSupplier(Lcom/android/server/health/HealthServiceWrapperHidl;)Lcom/android/server/health/HealthServiceWrapperHidl$IHealthSupplier;
-PLcom/android/server/health/HealthServiceWrapperHidl;->-$$Nest$fgetmInstanceName(Lcom/android/server/health/HealthServiceWrapperHidl;)Ljava/lang/String;
-PLcom/android/server/health/HealthServiceWrapperHidl;->-$$Nest$fgetmLastService(Lcom/android/server/health/HealthServiceWrapperHidl;)Ljava/util/concurrent/atomic/AtomicReference;
-HPLcom/android/server/health/HealthServiceWrapperHidl;-><init>(Lcom/android/server/health/HealthServiceWrapperHidl$Callback;Lcom/android/server/health/HealthServiceWrapperHidl$IServiceManagerSupplier;Lcom/android/server/health/HealthServiceWrapperHidl$IHealthSupplier;)V
-PLcom/android/server/health/HealthServiceWrapperHidl;->getProperty(ILandroid/os/BatteryProperty;)I
-PLcom/android/server/health/HealthServiceWrapperHidl;->lambda$getProperty$3(Landroid/util/MutableInt;Landroid/os/BatteryProperty;II)V
-PLcom/android/server/health/HealthServiceWrapperHidl;->traceBegin(Ljava/lang/String;)V
-PLcom/android/server/health/HealthServiceWrapperHidl;->traceEnd()V
PLcom/android/server/incident/IncidentCompanionService$BinderService;-><init>(Lcom/android/server/incident/IncidentCompanionService;)V
-PLcom/android/server/incident/IncidentCompanionService$BinderService;-><init>(Lcom/android/server/incident/IncidentCompanionService;Lcom/android/server/incident/IncidentCompanionService$BinderService-IA;)V
+PLcom/android/server/incident/IncidentCompanionService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/incident/IncidentCompanionService;-><clinit>()V
PLcom/android/server/incident/IncidentCompanionService;-><init>(Landroid/content/Context;)V
PLcom/android/server/incident/IncidentCompanionService;->onBootPhase(I)V
PLcom/android/server/incident/IncidentCompanionService;->onStart()V
PLcom/android/server/incident/PendingReports;-><init>(Landroid/content/Context;)V
-PLcom/android/server/incident/PendingReports;->onBootCompleted()V
PLcom/android/server/incident/RequestQueue$1;-><init>(Lcom/android/server/incident/RequestQueue;)V
PLcom/android/server/incident/RequestQueue;-><init>(Landroid/os/Handler;)V
-PLcom/android/server/incident/RequestQueue;->start()V
PLcom/android/server/infra/AbstractMasterSystemService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/infra/AbstractMasterSystemService;)V
-PLcom/android/server/infra/AbstractMasterSystemService$1$$ExternalSyntheticLambda0;-><init>(Ljava/lang/String;)V
PLcom/android/server/infra/AbstractMasterSystemService$1;-><init>(Lcom/android/server/infra/AbstractMasterSystemService;)V
-PLcom/android/server/infra/AbstractMasterSystemService$1;->getActiveServicePackageNameLocked()Ljava/lang/String;
PLcom/android/server/infra/AbstractMasterSystemService$1;->handlePackageUpdateLocked(Ljava/lang/String;)V
-PLcom/android/server/infra/AbstractMasterSystemService$1;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
+PLcom/android/server/infra/AbstractMasterSystemService$1;->onPackageModified(Ljava/lang/String;)V
+PLcom/android/server/infra/AbstractMasterSystemService$1;->onPackageUpdateFinished(Ljava/lang/String;I)V
+PLcom/android/server/infra/AbstractMasterSystemService$1;->onPackageUpdateStarted(Ljava/lang/String;I)V
PLcom/android/server/infra/AbstractMasterSystemService$SettingsObserver;-><init>(Lcom/android/server/infra/AbstractMasterSystemService;Landroid/os/Handler;)V
-PLcom/android/server/infra/AbstractMasterSystemService;-><init>(Landroid/content/Context;Lcom/android/server/infra/ServiceNameResolver;Ljava/lang/String;)V
-PLcom/android/server/infra/AbstractMasterSystemService;-><init>(Landroid/content/Context;Lcom/android/server/infra/ServiceNameResolver;Ljava/lang/String;I)V
+PLcom/android/server/infra/AbstractMasterSystemService$SettingsObserver;->onChange(ZLandroid/net/Uri;I)V
+PLcom/android/server/infra/AbstractMasterSystemService;-><init>(Landroid/content/Context;Lcom/android/server/infra/FrameworkResourcesServiceNameResolver;Ljava/lang/String;)V
+PLcom/android/server/infra/AbstractMasterSystemService;-><init>(Landroid/content/Context;Lcom/android/server/infra/ServiceNameBaseResolver;Ljava/lang/String;I)V
+PLcom/android/server/infra/AbstractMasterSystemService;->getServiceForUserLocked(I)Lcom/android/server/infra/AbstractPerUserSystemService;
PLcom/android/server/infra/AbstractMasterSystemService;->getServiceListForUserLocked(I)Ljava/util/List;
PLcom/android/server/infra/AbstractMasterSystemService;->getServiceSettingsProperty()Ljava/lang/String;
PLcom/android/server/infra/AbstractMasterSystemService;->isDisabledLocked(I)Z
@@ -11782,112 +9235,106 @@ PLcom/android/server/infra/AbstractMasterSystemService;->onServiceRemoved(Lcom/a
PLcom/android/server/infra/AbstractMasterSystemService;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/infra/AbstractMasterSystemService;->peekServiceForUserLocked(I)Lcom/android/server/infra/AbstractPerUserSystemService;
PLcom/android/server/infra/AbstractMasterSystemService;->peekServiceListForUserLocked(I)Ljava/util/List;
-PLcom/android/server/infra/AbstractMasterSystemService;->registerForExtraSettingsChanges(Landroid/content/ContentResolver;Landroid/database/ContentObserver;)V
-PLcom/android/server/infra/AbstractMasterSystemService;->removeCachedServiceListLocked(I)Ljava/util/List;
-PLcom/android/server/infra/AbstractMasterSystemService;->startTrackingPackageChanges()V
-PLcom/android/server/infra/AbstractMasterSystemService;->updateCachedServiceListLocked(IZ)Ljava/util/List;
+PLcom/android/server/infra/AbstractMasterSystemService;->registerForExtraSettingsChanges(Landroid/content/ContentResolver;Lcom/android/server/infra/AbstractMasterSystemService$SettingsObserver;)V
+PLcom/android/server/infra/AbstractMasterSystemService;->removeCachedServiceListLocked(I)V
+PLcom/android/server/infra/AbstractMasterSystemService;->updateCachedServiceListLocked(IZ)V
PLcom/android/server/infra/AbstractMasterSystemService;->updateCachedServiceLocked(I)V
-PLcom/android/server/infra/AbstractMasterSystemService;->visitServicesLocked(Lcom/android/server/infra/AbstractMasterSystemService$Visitor;)V
PLcom/android/server/infra/AbstractPerUserSystemService;-><init>(Lcom/android/server/infra/AbstractMasterSystemService;Ljava/lang/Object;I)V
PLcom/android/server/infra/AbstractPerUserSystemService;->getComponentNameLocked()Ljava/lang/String;
-PLcom/android/server/infra/AbstractPerUserSystemService;->getContext()Landroid/content/Context;
PLcom/android/server/infra/AbstractPerUserSystemService;->getServiceComponent(Ljava/lang/String;)Landroid/content/ComponentName;
+PLcom/android/server/infra/AbstractPerUserSystemService;->getServiceComponentName()Landroid/content/ComponentName;
+PLcom/android/server/infra/AbstractPerUserSystemService;->handlePackageUpdateLocked(Ljava/lang/String;)V
PLcom/android/server/infra/AbstractPerUserSystemService;->isEnabledLocked()Z
-PLcom/android/server/infra/AbstractPerUserSystemService;->updateIsSetupComplete(I)V
PLcom/android/server/infra/AbstractPerUserSystemService;->updateLocked(Z)Z
PLcom/android/server/infra/AbstractPerUserSystemService;->updateServiceInfoListLocked()[Landroid/content/ComponentName;
PLcom/android/server/infra/AbstractPerUserSystemService;->updateServiceInfoLocked()Landroid/content/ComponentName;
PLcom/android/server/infra/FrameworkResourcesServiceNameResolver;-><init>(Landroid/content/Context;I)V
PLcom/android/server/infra/FrameworkResourcesServiceNameResolver;->readServiceName(I)Ljava/lang/String;
-PLcom/android/server/infra/ServiceNameBaseResolver;-><clinit>()V
+PLcom/android/server/infra/SecureSettingsServiceNameResolver;-><init>(Landroid/content/Context;Ljava/lang/String;Z)V
+PLcom/android/server/infra/SecureSettingsServiceNameResolver;->readServiceNameList(I)[Ljava/lang/String;
PLcom/android/server/infra/ServiceNameBaseResolver;-><init>(Landroid/content/Context;Z)V
PLcom/android/server/infra/ServiceNameBaseResolver;->getDefaultServiceNameList(I)[Ljava/lang/String;
PLcom/android/server/infra/ServiceNameBaseResolver;->getServiceName(I)Ljava/lang/String;
PLcom/android/server/infra/ServiceNameBaseResolver;->getServiceNameList(I)[Ljava/lang/String;
-PLcom/android/server/infra/ServiceNameBaseResolver;->isConfiguredInMultipleMode()Z
-PLcom/android/server/infra/ServiceNameBaseResolver;->setOnTemporaryServiceNameChangedCallback(Lcom/android/server/infra/ServiceNameResolver$NameResolverListener;)V
PLcom/android/server/input/AmbientKeyboardBacklightController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/input/AmbientKeyboardBacklightController;)V
PLcom/android/server/input/AmbientKeyboardBacklightController$$ExternalSyntheticLambda0;->handleMessage(Landroid/os/Message;)Z
-PLcom/android/server/input/AmbientKeyboardBacklightController$BrightnessStep;->-$$Nest$fgetmDecreaseLuxThreshold(Lcom/android/server/input/AmbientKeyboardBacklightController$BrightnessStep;)I
-PLcom/android/server/input/AmbientKeyboardBacklightController$BrightnessStep;->-$$Nest$fgetmIncreaseLuxThreshold(Lcom/android/server/input/AmbientKeyboardBacklightController$BrightnessStep;)I
PLcom/android/server/input/AmbientKeyboardBacklightController$BrightnessStep;-><init>(III)V
-PLcom/android/server/input/AmbientKeyboardBacklightController$BrightnessStep;-><init>(IIILcom/android/server/input/AmbientKeyboardBacklightController$BrightnessStep-IA;)V
-PLcom/android/server/input/AmbientKeyboardBacklightController;->$r8$lambda$JJuuzJTMpjI9ZCGBKjwNrMezjco(Lcom/android/server/input/AmbientKeyboardBacklightController;Landroid/os/Message;)Z
PLcom/android/server/input/AmbientKeyboardBacklightController;-><clinit>()V
PLcom/android/server/input/AmbientKeyboardBacklightController;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
PLcom/android/server/input/AmbientKeyboardBacklightController;->getAmbientLightSensor(Landroid/hardware/display/DisplayManagerInternal$AmbientLightSensorData;)Landroid/hardware/Sensor;
-PLcom/android/server/input/AmbientKeyboardBacklightController;->handleDisplayChange()V
-PLcom/android/server/input/AmbientKeyboardBacklightController;->handleMessage(Landroid/os/Message;)Z
-PLcom/android/server/input/AmbientKeyboardBacklightController;->initConfiguration()V
-PLcom/android/server/input/AmbientKeyboardBacklightController;->systemRunning()V
-PLcom/android/server/input/BatteryController$$ExternalSyntheticLambda6;-><init>()V
-PLcom/android/server/input/BatteryController$$ExternalSyntheticLambda6;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/input/AmbientKeyboardBacklightController;->handleDisplayChange()V
+PLcom/android/server/input/AmbientKeyboardBacklightController;->onDisplayChanged(I)V
+PLcom/android/server/input/AppLaunchShortcutManager$InterceptKeyResult;-><clinit>()V
+PLcom/android/server/input/AppLaunchShortcutManager$InterceptKeyResult;-><init>(ZLandroid/hardware/input/AppLaunchData;)V
+PLcom/android/server/input/AppLaunchShortcutManager;-><clinit>()V
+PLcom/android/server/input/AppLaunchShortcutManager;-><init>(Landroid/content/Context;)V
+PLcom/android/server/input/BatteryController$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/input/BatteryController$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/input/BatteryController$$ExternalSyntheticLambda1;-><init>(I)V
+PLcom/android/server/input/BatteryController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/input/BatteryController;)V
PLcom/android/server/input/BatteryController$1;-><init>(Lcom/android/server/input/BatteryController;)V
PLcom/android/server/input/BatteryController$1;->onInputDeviceAdded(I)V
PLcom/android/server/input/BatteryController$1;->onInputDeviceChanged(I)V
PLcom/android/server/input/BatteryController$LocalBluetoothBatteryManager$1;-><init>(Lcom/android/server/input/BatteryController$LocalBluetoothBatteryManager;)V
PLcom/android/server/input/BatteryController$LocalBluetoothBatteryManager;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
-PLcom/android/server/input/BatteryController;->$r8$lambda$n6_ejU_h9YIm1A7iCB3zx5esPWg(Landroid/view/InputDevice;)Ljava/lang/Boolean;
-PLcom/android/server/input/BatteryController;->-$$Nest$fgetmDeviceMonitors(Lcom/android/server/input/BatteryController;)Landroid/util/ArrayMap;
-PLcom/android/server/input/BatteryController;->-$$Nest$fgetmLock(Lcom/android/server/input/BatteryController;)Ljava/lang/Object;
-PLcom/android/server/input/BatteryController;->-$$Nest$misUsiDevice(Lcom/android/server/input/BatteryController;I)Z
PLcom/android/server/input/BatteryController;-><clinit>()V
-PLcom/android/server/input/BatteryController;-><init>(Landroid/content/Context;Lcom/android/server/input/NativeInputManagerService;Landroid/os/Looper;Lcom/android/server/input/UEventManager;)V
PLcom/android/server/input/BatteryController;-><init>(Landroid/content/Context;Lcom/android/server/input/NativeInputManagerService;Landroid/os/Looper;Lcom/android/server/input/UEventManager;Lcom/android/server/input/BatteryController$BluetoothBatteryManager;)V
-PLcom/android/server/input/BatteryController;->isUsiDevice(I)Z
-PLcom/android/server/input/BatteryController;->lambda$isUsiDevice$1(Landroid/view/InputDevice;)Ljava/lang/Boolean;
+PLcom/android/server/input/BatteryController;->findIf(Landroid/util/ArrayMap;Ljava/util/function/Predicate;)Ljava/lang/Object;
PLcom/android/server/input/BatteryController;->monitor()V
PLcom/android/server/input/BatteryController;->processInputDevice(ILjava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
-PLcom/android/server/input/BatteryController;->systemRunning()V
+PLcom/android/server/input/BatteryController;->updatePollingLocked(Z)V
PLcom/android/server/input/GestureMonitorSpyWindow;-><init>(Landroid/os/IBinder;Ljava/lang/String;IIILandroid/view/SurfaceControl;Landroid/view/InputChannel;)V
-PLcom/android/server/input/InputFeatureFlagProvider;-><clinit>()V
-PLcom/android/server/input/InputFeatureFlagProvider;->isAmbientKeyboardBacklightControlEnabled()Z
-PLcom/android/server/input/InputFeatureFlagProvider;->isKeyboardBacklightControlEnabled()Z
-PLcom/android/server/input/InputManagerInternal;-><init>()V
-PLcom/android/server/input/InputManagerService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/input/InputManagerService;Landroid/view/InputChannel;)V
-PLcom/android/server/input/InputManagerService$$ExternalSyntheticLambda8;-><init>(Ljava/util/List;)V
-PLcom/android/server/input/InputManagerService$1;-><init>(Lcom/android/server/input/InputManagerService;)V
-PLcom/android/server/input/InputManagerService$2;-><init>()V
-PLcom/android/server/input/InputManagerService$4;-><init>(Lcom/android/server/input/InputManagerService;)V
+PLcom/android/server/input/GestureMonitorSpyWindow;->dump()Ljava/lang/String;
+PLcom/android/server/input/InputDataStore$FileInjector;-><init>()V
+PLcom/android/server/input/InputDataStore$FileInjector;->getAtomicFileForUserId(I)Landroid/util/AtomicFile;
+PLcom/android/server/input/InputDataStore;-><init>()V
+PLcom/android/server/input/InputDataStore;->loadInputGestures(I)Ljava/util/List;
+PLcom/android/server/input/InputGestureManager;-><clinit>()V
+PLcom/android/server/input/InputGestureManager;-><init>(Landroid/content/Context;)V
+PLcom/android/server/input/InputGestureManager;->createKeyGesture(III)Landroid/hardware/input/InputGestureData;
+PLcom/android/server/input/InputGestureManager;->getCustomGestureForKeyEvent(Landroid/view/KeyEvent;I)Landroid/hardware/input/InputGestureData;
+PLcom/android/server/input/InputGestureManager;->removeAllCustomInputGestures(ILandroid/hardware/input/InputGestureData$Filter;)V
+PLcom/android/server/input/InputManagerService$$ExternalSyntheticLambda3;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/input/InputManagerService$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/input/InputManagerService;Landroid/view/InputChannel;)V
+PLcom/android/server/input/InputManagerService$2;-><init>(Lcom/android/server/input/InputManagerService;)V
+PLcom/android/server/input/InputManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/input/InputManagerService$3;-><init>(Lcom/android/server/input/InputManagerService;)V
+PLcom/android/server/input/InputManagerService$3;->isKeyGestureSupported(I)Z
HSPLcom/android/server/input/InputManagerService$AdditionalDisplayInputProperties;-><init>()V
-HSPLcom/android/server/input/InputManagerService$AdditionalDisplayInputProperties;->reset()V
-PLcom/android/server/input/InputManagerService$Injector;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/input/UEventManager;)V
-PLcom/android/server/input/InputManagerService$Injector;->getContext()Landroid/content/Context;
-PLcom/android/server/input/InputManagerService$Injector;->getLooper()Landroid/os/Looper;
-PLcom/android/server/input/InputManagerService$Injector;->getNativeService(Lcom/android/server/input/InputManagerService;)Lcom/android/server/input/NativeInputManagerService;
-PLcom/android/server/input/InputManagerService$Injector;->getUEventManager()Lcom/android/server/input/UEventManager;
-PLcom/android/server/input/InputManagerService$Injector;->registerLocalService(Lcom/android/server/input/InputManagerInternal;)V
+PLcom/android/server/input/InputManagerService$Injector;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/input/InputManagerService$1;)V
PLcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;-><init>(Lcom/android/server/input/InputManagerService;ILandroid/hardware/input/IInputDevicesChangedListener;)V
-PLcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;->notifyInputDevicesChanged([I)V
+PLcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;->binderDied()V
+PLcom/android/server/input/InputManagerService$InputFilterHost;-><init>(Lcom/android/server/input/InputManagerService;)V
+PLcom/android/server/input/InputManagerService$InputFilterHost;->sendInputEvent(Landroid/view/InputEvent;I)V
PLcom/android/server/input/InputManagerService$InputManagerHandler;-><init>(Lcom/android/server/input/InputManagerService;Landroid/os/Looper;)V
PLcom/android/server/input/InputManagerService$InputManagerHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/input/InputManagerService$InputMonitorHost;-><init>(Lcom/android/server/input/InputManagerService;Landroid/os/IBinder;)V
+PLcom/android/server/input/InputManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/input/InputManagerService$Lifecycle;->getService()Lcom/android/server/input/InputManagerService;
+PLcom/android/server/input/InputManagerService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/input/InputManagerService$Lifecycle;->onStart()V
PLcom/android/server/input/InputManagerService$LocalService;-><init>(Lcom/android/server/input/InputManagerService;)V
-PLcom/android/server/input/InputManagerService$LocalService;-><init>(Lcom/android/server/input/InputManagerService;Lcom/android/server/input/InputManagerService$LocalService-IA;)V
-PLcom/android/server/input/InputManagerService$LocalService;->notifyUserActivity()V
PLcom/android/server/input/InputManagerService$LocalService;->onInputMethodSubtypeChangedForKeyboardLayoutMapping(ILcom/android/internal/inputmethod/InputMethodSubtypeHandle;Landroid/view/inputmethod/InputMethodSubtype;)V
-PLcom/android/server/input/InputManagerService$LocalService;->setDisplayViewports(Ljava/util/List;)V
-PLcom/android/server/input/InputManagerService$LocalService;->setPulseGestureEnabled(Z)V
-PLcom/android/server/input/InputManagerService$LocalService;->setStylusButtonMotionEventsEnabled(Z)V
-PLcom/android/server/input/InputManagerService;->-$$Nest$fgetmDoubleTouchGestureEnableFile(Lcom/android/server/input/InputManagerService;)Ljava/io/File;
-PLcom/android/server/input/InputManagerService;->-$$Nest$fgetmKeyboardBacklightController(Lcom/android/server/input/InputManagerService;)Lcom/android/server/input/InputManagerService$KeyboardBacklightControllerInterface;
-PLcom/android/server/input/InputManagerService;->-$$Nest$fgetmKeyboardLayoutManager(Lcom/android/server/input/InputManagerService;)Lcom/android/server/input/KeyboardLayoutManager;
-PLcom/android/server/input/InputManagerService;->-$$Nest$fgetmNative(Lcom/android/server/input/InputManagerService;)Lcom/android/server/input/NativeInputManagerService;
-PLcom/android/server/input/InputManagerService;->-$$Nest$mdeliverInputDevicesChanged(Lcom/android/server/input/InputManagerService;[Landroid/view/InputDevice;)V
-PLcom/android/server/input/InputManagerService;->-$$Nest$mreloadDeviceAliases(Lcom/android/server/input/InputManagerService;)V
-PLcom/android/server/input/InputManagerService;->-$$Nest$msetDisplayViewportsInternal(Lcom/android/server/input/InputManagerService;Ljava/util/List;)V
+HPLcom/android/server/input/InputManagerService$LocalService;->setDisplayInteractivities(Landroid/util/SparseBooleanArray;)V
+PLcom/android/server/input/InputManagerService;->-$$Nest$monBootPhase(Lcom/android/server/input/InputManagerService;I)V
HSPLcom/android/server/input/InputManagerService;-><clinit>()V
PLcom/android/server/input/InputManagerService;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/input/InputManagerService;-><init>(Lcom/android/server/input/InputManagerService$Injector;)V
-PLcom/android/server/input/InputManagerService;->applyAdditionalDisplayInputProperties()V
-PLcom/android/server/input/InputManagerService;->applyAdditionalDisplayInputPropertiesLocked(Lcom/android/server/input/InputManagerService$AdditionalDisplayInputProperties;)V
-PLcom/android/server/input/InputManagerService;->canDispatchToDisplay(II)Z
+PLcom/android/server/input/InputManagerService;-><init>(Lcom/android/server/input/InputManagerService$Injector;)V
PLcom/android/server/input/InputManagerService;->checkCallingPermission(Ljava/lang/String;Ljava/lang/String;)Z
PLcom/android/server/input/InputManagerService;->checkCallingPermission(Ljava/lang/String;Ljava/lang/String;Z)Z
-PLcom/android/server/input/InputManagerService;->createInputChannel(Ljava/lang/String;)Landroid/view/InputChannel;
PLcom/android/server/input/InputManagerService;->createSpyWindowGestureMonitor(Landroid/os/IBinder;Ljava/lang/String;Landroid/view/SurfaceControl;III)Landroid/view/InputChannel;
-HPLcom/android/server/input/InputManagerService;->deliverInputDevicesChanged([Landroid/view/InputDevice;)V
+PLcom/android/server/input/InputManagerService;->deliverInputDevicesChanged([Landroid/view/InputDevice;)V
+PLcom/android/server/input/InputManagerService;->disableInputDevice(I)V
+PLcom/android/server/input/InputManagerService;->dispatchUnhandledKey(Landroid/os/IBinder;Landroid/view/KeyEvent;I)Landroid/view/KeyEvent;
+PLcom/android/server/input/InputManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/input/InputManagerService;->dumpAssociations(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/input/InputManagerService;->dumpDisplayInputPropertiesValues(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/input/InputManagerService;->dumpSpyWindowGestureMonitors(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/input/InputManagerService;->enableInputDevice(I)V
+PLcom/android/server/input/InputManagerService;->enforceManageKeyGesturePermission()V
+PLcom/android/server/input/InputManagerService;->filterInputEvent(Landroid/view/InputEvent;I)Z
PLcom/android/server/input/InputManagerService;->flatten(Ljava/util/Map;)[Ljava/lang/String;
+PLcom/android/server/input/InputManagerService;->getAppLaunchBookmarks()[Landroid/hardware/input/AidlInputGestureData;
PLcom/android/server/input/InputManagerService;->getDeviceAlias(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/input/InputManagerService;->getDeviceTypeAssociations()[Ljava/lang/String;
PLcom/android/server/input/InputManagerService;->getDoubleTapTimeout()I
@@ -11898,1920 +9345,1353 @@ PLcom/android/server/input/InputManagerService;->getInputDevice(I)Landroid/view/
PLcom/android/server/input/InputManagerService;->getInputDeviceIds()[I
PLcom/android/server/input/InputManagerService;->getInputDevices()[Landroid/view/InputDevice;
PLcom/android/server/input/InputManagerService;->getInputPortAssociations()[Ljava/lang/String;
-PLcom/android/server/input/InputManagerService;->getInputUniqueIdAssociations()[Ljava/lang/String;
-PLcom/android/server/input/InputManagerService;->getKeyCodeState(III)I
+PLcom/android/server/input/InputManagerService;->getInputUniqueIdAssociationsByDescriptor()[Ljava/lang/String;
+PLcom/android/server/input/InputManagerService;->getInputUniqueIdAssociationsByPort()[Ljava/lang/String;
PLcom/android/server/input/InputManagerService;->getKeyboardLayoutAssociations()[Ljava/lang/String;
PLcom/android/server/input/InputManagerService;->getKeyboardLayoutOverlay(Landroid/hardware/input/InputDeviceIdentifier;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
PLcom/android/server/input/InputManagerService;->getLights(I)Ljava/util/List;
PLcom/android/server/input/InputManagerService;->getLongPressTimeout()I
-PLcom/android/server/input/InputManagerService;->getScanCodeState(III)I
-PLcom/android/server/input/InputManagerService;->getSwitchState(III)I
PLcom/android/server/input/InputManagerService;->getTouchCalibrationForInputDevice(Ljava/lang/String;I)Landroid/hardware/input/TouchCalibration;
PLcom/android/server/input/InputManagerService;->getVelocityTrackerStrategy()Ljava/lang/String;
PLcom/android/server/input/InputManagerService;->getVirtualKeyQuietTimeMillis()I
-PLcom/android/server/input/InputManagerService;->isInputDeviceEnabled(I)Z
+PLcom/android/server/input/InputManagerService;->initKeyGestures()V
+PLcom/android/server/input/InputManagerService;->injectInputEventToTarget(Landroid/view/InputEvent;II)Z
+HPLcom/android/server/input/InputManagerService;->interceptKeyBeforeDispatching(Landroid/os/IBinder;Landroid/view/KeyEvent;I)J
+HPLcom/android/server/input/InputManagerService;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I
+PLcom/android/server/input/InputManagerService;->interceptMotionBeforeQueueingNonInteractive(IIIJI)I
+PLcom/android/server/input/InputManagerService;->interceptUnhandledKey(Landroid/view/KeyEvent;Landroid/os/IBinder;)Z
PLcom/android/server/input/InputManagerService;->isMicMuted()I
PLcom/android/server/input/InputManagerService;->loadStaticInputPortAssociations()Ljava/util/Map;
-HPLcom/android/server/input/InputManagerService;->monitor()V
+PLcom/android/server/input/InputManagerService;->monitor()V
PLcom/android/server/input/InputManagerService;->monitorGestureInput(Landroid/os/IBinder;Ljava/lang/String;I)Landroid/view/InputMonitor;
PLcom/android/server/input/InputManagerService;->monitorInput(Ljava/lang/String;I)Landroid/view/InputChannel;
-PLcom/android/server/input/InputManagerService;->notifyConfigurationChanged(J)V
PLcom/android/server/input/InputManagerService;->notifyFocusChanged(Landroid/os/IBinder;Landroid/os/IBinder;)V
+PLcom/android/server/input/InputManagerService;->notifyInputChannelBroken(Landroid/os/IBinder;)V
PLcom/android/server/input/InputManagerService;->notifyInputDevicesChanged([Landroid/view/InputDevice;)V
+PLcom/android/server/input/InputManagerService;->onBootPhase(I)V
+PLcom/android/server/input/InputManagerService;->onInputDevicesChangedListenerDied(I)V
+PLcom/android/server/input/InputManagerService;->onPointerDownOutsideFocus(Landroid/os/IBinder;)V
PLcom/android/server/input/InputManagerService;->registerInputDevicesChangedListener(Landroid/hardware/input/IInputDevicesChangedListener;)V
+PLcom/android/server/input/InputManagerService;->registerKeyGestureHandler(Landroid/hardware/input/IKeyGestureHandler;)V
PLcom/android/server/input/InputManagerService;->registerLidSwitchCallbackInternal(Lcom/android/server/input/InputManagerInternal$LidSwitchCallback;)V
PLcom/android/server/input/InputManagerService;->reloadDeviceAliases()V
PLcom/android/server/input/InputManagerService;->removeInputChannel(Landroid/os/IBinder;)V
PLcom/android/server/input/InputManagerService;->setAccessibilityBounceKeysThreshold(I)V
PLcom/android/server/input/InputManagerService;->setAccessibilitySlowKeysThreshold(I)V
PLcom/android/server/input/InputManagerService;->setAccessibilityStickyKeysEnabled(Z)V
-PLcom/android/server/input/InputManagerService;->setDisplayViewportsInternal(Ljava/util/List;)V
+HPLcom/android/server/input/InputManagerService;->setDisplayViewportsInternal(Ljava/util/List;)V
PLcom/android/server/input/InputManagerService;->setFocusedApplication(ILandroid/view/InputApplicationHandle;)V
PLcom/android/server/input/InputManagerService;->setFocusedDisplay(I)V
PLcom/android/server/input/InputManagerService;->setInTouchMode(ZIIZI)Z
PLcom/android/server/input/InputManagerService;->setInputDispatchMode(ZZ)V
+PLcom/android/server/input/InputManagerService;->setInputFilter(Landroid/view/IInputFilter;)V
+PLcom/android/server/input/InputManagerService;->setPointerFillStyle(I)V
+PLcom/android/server/input/InputManagerService;->setPointerScale(F)V
+PLcom/android/server/input/InputManagerService;->setPointerStrokeStyle(I)V
+PLcom/android/server/input/InputManagerService;->setSystemUiLightsOut(Z)V
PLcom/android/server/input/InputManagerService;->setUseLargePointerIcons(Z)V
PLcom/android/server/input/InputManagerService;->setWindowManagerCallbacks(Lcom/android/server/input/InputManagerService$WindowManagerCallbacks;)V
PLcom/android/server/input/InputManagerService;->start()V
PLcom/android/server/input/InputManagerService;->systemRunning()V
-PLcom/android/server/input/InputManagerService;->updatePointerDisplayIdLocked(I)Z
PLcom/android/server/input/InputManagerService;->updatePointerLocationEnabled(Z)V
PLcom/android/server/input/InputManagerService;->updateShowKeyPresses(Z)V
PLcom/android/server/input/InputManagerService;->updateShowRotaryInput(Z)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+PLcom/android/server/input/InputManagerService;->updateTouchpadVisualizerEnabled(Z)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/input/InputSettingsObserver;I)V
PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda10;->accept(Ljava/lang/Object;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda11;->accept(Ljava/lang/Object;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda12;->accept(Ljava/lang/Object;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda14;->accept(Ljava/lang/Object;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda15;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda15;->accept(Ljava/lang/Object;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda16;->accept(Ljava/lang/Object;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda17;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda17;->accept(Ljava/lang/Object;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda18;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda18;->accept(Ljava/lang/Object;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda6;->accept(Ljava/lang/Object;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda7;->accept(Ljava/lang/Object;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
-PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda9;->accept(Ljava/lang/Object;)V
PLcom/android/server/input/InputSettingsObserver$1;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
-HPLcom/android/server/input/InputSettingsObserver$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$8-nmfADGlbXR2y7cYvJjCtqiCDU(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$B6UbsHTKEzcrp2SmYSj1UeL9fa0(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$E77TZbEY0Eiqo5odbeeaxq9YVVY(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$EZo0BN6vEeXLyFlM39mQLCNLQRU(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$H1paEVQ6iS1w225jbFS3KlGpUH0(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$IAIqOWxGj0NqFaNlwpNZXIwerhY(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$MotvkOT12GYIlX8NWJLa1hYA0GA(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$QdnpwXhg1-UovvW3vm6K6ReunTA(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$Rr0lgi-WpfNxFXW9-C-Qm7EPPAQ(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$ZZJw7liozvnfpwJy3dHpbXK6TBs(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$_fP8LM44ztL2nXy491rpD7KkA8M(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$bQ6Pakt0-8gsVCTKD29WSS6maqM(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$fenPZ8hwNeHQiC5wNUY7p_Nan68(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$fuEgvfKd7GY8eVSNTB3BzuuJKHQ(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$k6knUOK1nWWHQJdmB93hBPmnk4g(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$pqYW_K7ai5UbiF55BnWTwJfksFE(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$tCrW_EpGwbX9GnJRAW5H1bM6Rsc(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$uo0KjrciiUrgeyPJZXw8X_RZfIU(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$uxAhDD-5nvRXXpXuIseeY9peJ1s(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->-$$Nest$fgetmObservers(Lcom/android/server/input/InputSettingsObserver;)Ljava/util/Map;
-HPLcom/android/server/input/InputSettingsObserver;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/input/InputManagerService;Lcom/android/server/input/NativeInputManagerService;)V
-PLcom/android/server/input/InputSettingsObserver;->configureUserActivityPokeInterval()V
-PLcom/android/server/input/InputSettingsObserver;->constrainPointerSpeedValue(I)I
-PLcom/android/server/input/InputSettingsObserver;->getBoolean(Ljava/lang/String;Z)Z
-PLcom/android/server/input/InputSettingsObserver;->lambda$new$0(Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->lambda$new$1(Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->lambda$new$10(Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->lambda$new$11(Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->lambda$new$12(Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->lambda$new$13(Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->lambda$new$14(Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->lambda$new$15(Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->lambda$new$16(Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->lambda$new$17(Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->lambda$new$18(Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->lambda$new$2(Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->lambda$new$3(Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->lambda$new$4(Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->lambda$new$5(Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->lambda$new$6(Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->lambda$new$7(Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->lambda$new$8(Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->lambda$new$9(Ljava/lang/String;)V
-HPLcom/android/server/input/InputSettingsObserver;->registerAndUpdate()V
-PLcom/android/server/input/InputSettingsObserver;->updateAccessibilityBounceKeys()V
-PLcom/android/server/input/InputSettingsObserver;->updateAccessibilityLargePointer()V
-PLcom/android/server/input/InputSettingsObserver;->updateAccessibilitySlowKeys()V
-PLcom/android/server/input/InputSettingsObserver;->updateAccessibilityStickyKeys()V
+PLcom/android/server/input/InputSettingsObserver$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/input/InputSettingsObserver;-><init>(Landroid/content/Context;Lcom/android/server/input/InputManagerService$InputManagerHandler;Lcom/android/server/input/InputManagerService;Lcom/android/server/input/NativeInputManagerService$NativeImpl;)V
+PLcom/android/server/input/InputSettingsObserver;->getBoolean(Ljava/lang/String;)Z
PLcom/android/server/input/InputSettingsObserver;->updateKeyRepeatInfo()V
-PLcom/android/server/input/InputSettingsObserver;->updateLongPressTimeout(Ljava/lang/String;)V
-PLcom/android/server/input/InputSettingsObserver;->updateMaximumObscuringOpacityForTouch()V
-PLcom/android/server/input/InputSettingsObserver;->updateMousePointerSpeed()V
-PLcom/android/server/input/InputSettingsObserver;->updatePointerLocation()V
-PLcom/android/server/input/InputSettingsObserver;->updateShowKeyPresses()V
-PLcom/android/server/input/InputSettingsObserver;->updateShowRotaryInput()V
-PLcom/android/server/input/InputSettingsObserver;->updateShowTouches()V
-PLcom/android/server/input/InputSettingsObserver;->updateStylusPointerIconEnabled()V
-PLcom/android/server/input/InputSettingsObserver;->updateTouchpadNaturalScrollingEnabled()V
-PLcom/android/server/input/InputSettingsObserver;->updateTouchpadPointerSpeed()V
-PLcom/android/server/input/InputSettingsObserver;->updateTouchpadRightClickZoneEnabled()V
-PLcom/android/server/input/InputSettingsObserver;->updateTouchpadTapDraggingEnabled()V
-PLcom/android/server/input/InputSettingsObserver;->updateTouchpadTapToClickEnabled()V
+PLcom/android/server/input/KeyGestureController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/input/KeyGestureController;)V
+HPLcom/android/server/input/KeyGestureController$$ExternalSyntheticLambda0;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/input/KeyGestureController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/input/KeyGestureController;)V
+PLcom/android/server/input/KeyGestureController$$ExternalSyntheticLambda1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/input/KeyGestureController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/input/KeyGestureController;)V
+PLcom/android/server/input/KeyGestureController$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/input/KeyGestureController$1;-><init>(Lcom/android/server/input/KeyGestureController;I)V
+PLcom/android/server/input/KeyGestureController$1;->cancel()V
+PLcom/android/server/input/KeyGestureController$1;->getGestureType()I
+PLcom/android/server/input/KeyGestureController$1;->getKeyInterceptDelayMs()J
+PLcom/android/server/input/KeyGestureController$1;->preCondition()Z
+PLcom/android/server/input/KeyGestureController$KeyGestureHandlerRecord;-><init>(Lcom/android/server/input/KeyGestureController;ILandroid/hardware/input/IKeyGestureHandler;)V
+PLcom/android/server/input/KeyGestureController$SettingsObserver;-><init>(Lcom/android/server/input/KeyGestureController;Landroid/os/Handler;)V
+PLcom/android/server/input/KeyGestureController;->-$$Nest$mhandleMultiKeyGesture(Lcom/android/server/input/KeyGestureController;[IIII)V
+HPLcom/android/server/input/KeyGestureController;->-$$Nest$misKeyGestureSupported(Lcom/android/server/input/KeyGestureController;I)Z
+PLcom/android/server/input/KeyGestureController;-><clinit>()V
+PLcom/android/server/input/KeyGestureController;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/input/InputDataStore;)V
+HPLcom/android/server/input/KeyGestureController;->createKeyGestureEvent(I[IIIIIILandroid/hardware/input/AppLaunchData;)Landroid/hardware/input/AidlKeyGestureEvent;
+PLcom/android/server/input/KeyGestureController;->handleKeyGesture(I[IIIIILandroid/os/IBinder;ILandroid/hardware/input/AppLaunchData;)Z
+PLcom/android/server/input/KeyGestureController;->handleKeyGesture(Landroid/hardware/input/AidlKeyGestureEvent;Landroid/os/IBinder;)Z
+PLcom/android/server/input/KeyGestureController;->initBehaviorsFromSettings()V
PLcom/android/server/input/KeyRemapper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/input/KeyRemapper;)V
PLcom/android/server/input/KeyRemapper$$ExternalSyntheticLambda0;->handleMessage(Landroid/os/Message;)Z
-PLcom/android/server/input/KeyRemapper;->$r8$lambda$N4TqxA4BYCMFcqyr3TCvlujPC84(Lcom/android/server/input/KeyRemapper;Landroid/os/Message;)Z
-PLcom/android/server/input/KeyRemapper;-><init>(Landroid/content/Context;Lcom/android/server/input/NativeInputManagerService;Lcom/android/server/input/PersistentDataStore;Landroid/os/Looper;)V
-PLcom/android/server/input/KeyRemapper;->handleMessage(Landroid/os/Message;)Z
-PLcom/android/server/input/KeyRemapper;->onInputDeviceAdded(I)V
-PLcom/android/server/input/KeyRemapper;->onInputDeviceChanged(I)V
-PLcom/android/server/input/KeyRemapper;->supportRemapping()Z
-PLcom/android/server/input/KeyRemapper;->systemRunning()V
-PLcom/android/server/input/KeyboardBacklightController$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/input/KeyRemapper;-><init>(Landroid/content/Context;Lcom/android/server/input/NativeInputManagerService$NativeImpl;Lcom/android/server/input/PersistentDataStore;Landroid/os/Looper;)V
+PLcom/android/server/input/KeyRemapper;->getKeyRemapping()Ljava/util/Map;
+PLcom/android/server/input/KeyRemapper;->setKeyRemapping(Ljava/util/Map;)V
PLcom/android/server/input/KeyboardBacklightController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/input/KeyboardBacklightController;)V
-PLcom/android/server/input/KeyboardBacklightController$$ExternalSyntheticLambda2;->handleMessage(Landroid/os/Message;)Z
+HPLcom/android/server/input/KeyboardBacklightController$$ExternalSyntheticLambda2;->handleMessage(Landroid/os/Message;)Z
PLcom/android/server/input/KeyboardBacklightController$1;-><init>(Lcom/android/server/input/KeyboardBacklightController;)V
-PLcom/android/server/input/KeyboardBacklightController;->$r8$lambda$x56uNWQ8yZ3aSFy91aBfHRGVrXg(Lcom/android/server/input/KeyboardBacklightController;Landroid/os/Message;)Z
PLcom/android/server/input/KeyboardBacklightController;-><clinit>()V
-PLcom/android/server/input/KeyboardBacklightController;-><init>(Landroid/content/Context;Lcom/android/server/input/NativeInputManagerService;Lcom/android/server/input/PersistentDataStore;Landroid/os/Looper;Lcom/android/server/input/KeyboardBacklightController$AnimatorFactory;Lcom/android/server/input/UEventManager;)V
-PLcom/android/server/input/KeyboardBacklightController;-><init>(Landroid/content/Context;Lcom/android/server/input/NativeInputManagerService;Lcom/android/server/input/PersistentDataStore;Landroid/os/Looper;Lcom/android/server/input/UEventManager;)V
-PLcom/android/server/input/KeyboardBacklightController;->getInputDevice(I)Landroid/view/InputDevice;
-PLcom/android/server/input/KeyboardBacklightController;->getKeyboardBacklight(Landroid/view/InputDevice;)Landroid/hardware/lights/Light;
-PLcom/android/server/input/KeyboardBacklightController;->handleMessage(Landroid/os/Message;)Z
-PLcom/android/server/input/KeyboardBacklightController;->handleUserActivity()V
-PLcom/android/server/input/KeyboardBacklightController;->handleUserInactivity()V
-PLcom/android/server/input/KeyboardBacklightController;->notifyUserActivity()V
+PLcom/android/server/input/KeyboardBacklightController;-><init>(Landroid/content/Context;Lcom/android/server/input/NativeInputManagerService;Landroid/os/Looper;Lcom/android/server/input/KeyboardBacklightController$AnimatorFactory;Lcom/android/server/input/UEventManager;)V
+PLcom/android/server/input/KeyboardBacklightController;->handleInteractiveStateChange(Z)V
+HPLcom/android/server/input/KeyboardBacklightController;->handleUserActivity()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
PLcom/android/server/input/KeyboardBacklightController;->onInputDeviceAdded(I)V
PLcom/android/server/input/KeyboardBacklightController;->onInputDeviceChanged(I)V
-PLcom/android/server/input/KeyboardBacklightController;->systemRunning()V
PLcom/android/server/input/KeyboardBacklightController;->updateAmbientLightListener()V
-PLcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/input/KeyboardLayoutManager;)V
-PLcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda5;->handleMessage(Landroid/os/Message;)Z
-PLcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda7;-><init>(Ljava/util/HashSet;)V
-HPLcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda7;->visitKeyboardLayout(Landroid/content/res/Resources;ILandroid/hardware/input/KeyboardLayout;)V
+PLcom/android/server/input/KeyboardGlyphManager$1;-><init>(Lcom/android/server/input/KeyboardGlyphManager;)V
+PLcom/android/server/input/KeyboardGlyphManager$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/input/KeyboardGlyphManager;-><clinit>()V
+PLcom/android/server/input/KeyboardGlyphManager;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
+PLcom/android/server/input/KeyboardGlyphManager;->loadGlyphMapDataList()Ljava/util/List;
+PLcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V
+HPLcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda0;->visitKeyboardLayout(Landroid/content/res/Resources;ILandroid/hardware/input/KeyboardLayout;)V
+PLcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/input/KeyboardLayoutManager;)V
+PLcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda4;->handleMessage(Landroid/os/Message;)Z
PLcom/android/server/input/KeyboardLayoutManager$1;-><init>(Lcom/android/server/input/KeyboardLayoutManager;)V
-PLcom/android/server/input/KeyboardLayoutManager$3;-><init>(Lcom/android/server/input/KeyboardLayoutManager;Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/input/KeyboardLayoutManager$3;->visitKeyboardLayout(Landroid/content/res/Resources;ILandroid/hardware/input/KeyboardLayout;)V
+PLcom/android/server/input/KeyboardLayoutManager$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/input/KeyboardLayoutManager$2;-><init>(Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/input/KeyboardLayoutManager$2;->visitKeyboardLayout(Landroid/content/res/Resources;ILandroid/hardware/input/KeyboardLayout;)V
PLcom/android/server/input/KeyboardLayoutManager$ImeInfo;-><init>(ILcom/android/internal/inputmethod/InputMethodSubtypeHandle;Landroid/view/inputmethod/InputMethodSubtype;)V
-HPLcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;->-$$Nest$fgetmIdentifier(Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;)Landroid/hardware/input/InputDeviceIdentifier;
-PLcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;->-$$Nest$fgetmLanguageTag(Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;)Ljava/lang/String;
PLcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;-><init>(Landroid/hardware/input/InputDeviceIdentifier;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;-><init>(Landroid/hardware/input/InputDeviceIdentifier;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier-IA;)V
-HPLcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;->toString()Ljava/lang/String;
-HPLcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutDescriptor;->format(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/input/KeyboardLayoutManager$LayoutKey;-><init>(Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;Lcom/android/server/input/KeyboardLayoutManager$ImeInfo;)V
-PLcom/android/server/input/KeyboardLayoutManager$LayoutKey;-><init>(Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;Lcom/android/server/input/KeyboardLayoutManager$ImeInfo;Lcom/android/server/input/KeyboardLayoutManager$LayoutKey-IA;)V
-HPLcom/android/server/input/KeyboardLayoutManager$LayoutKey;->toString()Ljava/lang/String;
-PLcom/android/server/input/KeyboardLayoutManager;->$r8$lambda$OSXbhKl2Ydsv_pJa-G91vzms3iI(Ljava/util/HashSet;Landroid/content/res/Resources;ILandroid/hardware/input/KeyboardLayout;)V
-PLcom/android/server/input/KeyboardLayoutManager;->$r8$lambda$y-LzIDNoOFY2WLN0_gSck9p-JRA(Lcom/android/server/input/KeyboardLayoutManager;Landroid/os/Message;)Z
-HPLcom/android/server/input/KeyboardLayoutManager;->-$$Nest$smisLayoutCompatibleWithLanguageTag(Landroid/hardware/input/KeyboardLayout;Ljava/lang/String;)Z
+PLcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;->toString()Ljava/lang/String;
PLcom/android/server/input/KeyboardLayoutManager;-><clinit>()V
-PLcom/android/server/input/KeyboardLayoutManager;-><init>(Landroid/content/Context;Lcom/android/server/input/NativeInputManagerService;Lcom/android/server/input/PersistentDataStore;Landroid/os/Looper;)V
-PLcom/android/server/input/KeyboardLayoutManager;->getDefaultKeyboardLayoutBasedOnImeInfo(Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;Lcom/android/server/input/KeyboardLayoutManager$ImeInfo;[Landroid/hardware/input/KeyboardLayout;)Lcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutInfo;
+PLcom/android/server/input/KeyboardLayoutManager;-><init>(Landroid/content/Context;Lcom/android/server/input/NativeInputManagerService$NativeImpl;Lcom/android/server/input/PersistentDataStore;Landroid/os/Looper;)V
+PLcom/android/server/input/KeyboardLayoutManager;->getDefaultKeyboardLayoutBasedOnImeInfo(Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;Lcom/android/server/input/KeyboardLayoutManager$ImeInfo;[Landroid/hardware/input/KeyboardLayout;)Landroid/hardware/input/KeyboardLayoutSelectionResult;
PLcom/android/server/input/KeyboardLayoutManager;->getInputDevice(I)Landroid/view/InputDevice;
-HPLcom/android/server/input/KeyboardLayoutManager;->getKeyboardLayoutForInputDeviceInternal(Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;Lcom/android/server/input/KeyboardLayoutManager$ImeInfo;)Lcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutInfo;
-HPLcom/android/server/input/KeyboardLayoutManager;->getKeyboardLayoutListForInputDeviceInternal(Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;Lcom/android/server/input/KeyboardLayoutManager$ImeInfo;)[Landroid/hardware/input/KeyboardLayout;
-PLcom/android/server/input/KeyboardLayoutManager;->getKeyboardLayoutOverlay(Landroid/hardware/input/InputDeviceIdentifier;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
-HPLcom/android/server/input/KeyboardLayoutManager;->getLocalesFromLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList;
-PLcom/android/server/input/KeyboardLayoutManager;->getMatchingLayoutForProvidedLanguageTag(Ljava/util/List;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/input/KeyboardLayoutManager;->getKeyboardLayoutForInputDeviceInternal(Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;Lcom/android/server/input/KeyboardLayoutManager$ImeInfo;)Landroid/hardware/input/KeyboardLayoutSelectionResult;
+PLcom/android/server/input/KeyboardLayoutManager;->getKeyboardLayoutListForInputDeviceInternal(Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;Lcom/android/server/input/KeyboardLayoutManager$ImeInfo;)[Landroid/hardware/input/KeyboardLayout;
+PLcom/android/server/input/KeyboardLayoutManager;->getMatchingLayoutForProvidedLanguageTag(Ljava/lang/String;Ljava/util/List;)Ljava/lang/String;
PLcom/android/server/input/KeyboardLayoutManager;->getMatchingLayoutForProvidedLanguageTagAndLayoutType([Landroid/hardware/input/KeyboardLayout;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/input/KeyboardLayoutManager;->handleMessage(Landroid/os/Message;)Z
-HPLcom/android/server/input/KeyboardLayoutManager;->isLayoutCompatibleWithLanguageTag(Landroid/hardware/input/KeyboardLayout;Ljava/lang/String;)Z
-HPLcom/android/server/input/KeyboardLayoutManager;->lambda$updateKeyboardLayouts$1(Ljava/util/HashSet;Landroid/content/res/Resources;ILandroid/hardware/input/KeyboardLayout;)V
-PLcom/android/server/input/KeyboardLayoutManager;->onInputDeviceAdded(I)V
PLcom/android/server/input/KeyboardLayoutManager;->onInputDeviceChanged(I)V
PLcom/android/server/input/KeyboardLayoutManager;->onInputDeviceChangedInternal(IZ)V
-PLcom/android/server/input/KeyboardLayoutManager;->onInputMethodSubtypeChanged(ILcom/android/internal/inputmethod/InputMethodSubtypeHandle;Landroid/view/inputmethod/InputMethodSubtype;)V
-PLcom/android/server/input/KeyboardLayoutManager;->reloadKeyboardLayouts()V
-PLcom/android/server/input/KeyboardLayoutManager;->systemRunning()V
PLcom/android/server/input/KeyboardLayoutManager;->updateKeyboardLayouts()V
-PLcom/android/server/input/KeyboardLayoutManager;->useNewSettingsUi()Z
-HPLcom/android/server/input/KeyboardLayoutManager;->visitAllKeyboardLayouts(Lcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutVisitor;)V
-HPLcom/android/server/input/KeyboardLayoutManager;->visitKeyboardLayoutsInPackage(Landroid/content/pm/PackageManager;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutVisitor;)V
+PLcom/android/server/input/KeyboardLayoutManager;->visitAllKeyboardLayouts(Lcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutVisitor;)V
+HPLcom/android/server/input/KeyboardLayoutManager;->visitKeyboardLayoutsInPackage(Landroid/content/pm/PackageManager;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutVisitor;)V+]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser;]Lcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutVisitor;Lcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda0;,Lcom/android/server/input/KeyboardLayoutManager$2;]Ljava/lang/CharSequence;Ljava/lang/String;
+PLcom/android/server/input/KeyboardLedController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/input/KeyboardLedController;)V
+PLcom/android/server/input/KeyboardLedController$$ExternalSyntheticLambda0;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/input/KeyboardLedController$1;-><init>(Lcom/android/server/input/KeyboardLedController;I)V
+PLcom/android/server/input/KeyboardLedController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/input/KeyboardLedController;-><clinit>()V
+PLcom/android/server/input/KeyboardLedController;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/input/NativeInputManagerService$NativeImpl;)V
+PLcom/android/server/input/KeyboardLedController;->getKeyboardMicMuteLight(Landroid/view/InputDevice;)Landroid/hardware/lights/Light;
+PLcom/android/server/input/KeyboardLedController;->getKeyboardVolumeMuteLight(Landroid/view/InputDevice;)Landroid/hardware/lights/Light;
+PLcom/android/server/input/KeyboardLedController;->onInputDeviceChanged(I)V
+PLcom/android/server/input/KeyboardMetricsCollector;-><clinit>()V
PLcom/android/server/input/NativeInputManagerService$NativeImpl;-><init>(Lcom/android/server/input/InputManagerService;Landroid/os/MessageQueue;)V
PLcom/android/server/input/PersistentDataStore$Injector;-><init>()V
-PLcom/android/server/input/PersistentDataStore$Injector;->openRead()Ljava/io/InputStream;
-PLcom/android/server/input/PersistentDataStore;-><init>()V
PLcom/android/server/input/PersistentDataStore;-><init>(Lcom/android/server/input/PersistentDataStore$Injector;)V
-PLcom/android/server/input/PersistentDataStore;->clearState()V
-PLcom/android/server/input/PersistentDataStore;->getInputDeviceState(Ljava/lang/String;)Lcom/android/server/input/PersistentDataStore$InputDeviceState;
-PLcom/android/server/input/PersistentDataStore;->getKeyboardLayout(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/input/PersistentDataStore;->getTouchCalibration(Ljava/lang/String;I)Landroid/hardware/input/TouchCalibration;
-PLcom/android/server/input/PersistentDataStore;->load()V
PLcom/android/server/input/PersistentDataStore;->loadIfNeeded()V
-PLcom/android/server/input/PersistentDataStore;->removeUninstalledKeyboardLayouts(Ljava/util/Set;)Z
+PLcom/android/server/input/PersistentDataStore;->removeUninstalledKeyboardLayouts(Ljava/util/Set;)V
PLcom/android/server/input/PersistentDataStore;->saveIfNeeded()V
+PLcom/android/server/input/PointerIconCache$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/input/PointerIconCache;II)V
+PLcom/android/server/input/PointerIconCache$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/input/PointerIconCache$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/input/PointerIconCache;F)V
+PLcom/android/server/input/PointerIconCache$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/input/PointerIconCache$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/input/PointerIconCache;Z)V
+PLcom/android/server/input/PointerIconCache$$ExternalSyntheticLambda4;->run()V
+PLcom/android/server/input/PointerIconCache$1;-><init>(Lcom/android/server/input/PointerIconCache;)V
+PLcom/android/server/input/PointerIconCache$1;->onDisplayAdded(I)V
+HPLcom/android/server/input/PointerIconCache$1;->onDisplayChanged(I)V
+PLcom/android/server/input/PointerIconCache;-><init>(Landroid/content/Context;Lcom/android/server/input/NativeInputManagerService;Landroid/os/Handler;)V
+PLcom/android/server/input/PointerIconCache;->monitor()V
+HPLcom/android/server/input/PointerIconCache;->updateDisplayDensityLocked(I)Z
PLcom/android/server/input/StickyModifierStateController;-><clinit>()V
PLcom/android/server/input/StickyModifierStateController;-><init>()V
PLcom/android/server/input/UEventManager$UEventListener$1;-><init>(Lcom/android/server/input/UEventManager$UEventListener;)V
-PLcom/android/server/input/UEventManager$UEventListener;->-$$Nest$fgetmObserver(Lcom/android/server/input/UEventManager$UEventListener;)Landroid/os/UEventObserver;
PLcom/android/server/input/UEventManager$UEventListener;-><init>()V
-PLcom/android/server/input/UEventManager;->addListener(Lcom/android/server/input/UEventManager$UEventListener;Ljava/lang/String;)V
+PLcom/android/server/input/debug/TouchpadDebugViewController;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/input/InputManagerService;)V
PLcom/android/server/inputmethod/AdditionalSubtypeMap;-><clinit>()V
PLcom/android/server/inputmethod/AdditionalSubtypeMap;-><init>(Landroid/util/ArrayMap;)V
-PLcom/android/server/inputmethod/AdditionalSubtypeMap;->get(Ljava/lang/String;)Ljava/util/List;
-PLcom/android/server/inputmethod/AdditionalSubtypeUtils;->getAdditionalSubtypeFile(Ljava/io/File;)Landroid/util/AtomicFile;
-PLcom/android/server/inputmethod/AdditionalSubtypeUtils;->getInputMethodDir(I)Ljava/io/File;
-PLcom/android/server/inputmethod/AdditionalSubtypeUtils;->load(I)Lcom/android/server/inputmethod/AdditionalSubtypeMap;
-PLcom/android/server/inputmethod/AutofillSuggestionsController;-><clinit>()V
-PLcom/android/server/inputmethod/AutofillSuggestionsController;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/AdditionalSubtypeMapRepository$SingleThreadedBackgroundWriter$1;-><init>(Lcom/android/server/inputmethod/AdditionalSubtypeMapRepository$SingleThreadedBackgroundWriter;)V
+PLcom/android/server/inputmethod/AdditionalSubtypeMapRepository$SingleThreadedBackgroundWriter$1;->run()V
+PLcom/android/server/inputmethod/AdditionalSubtypeMapRepository$SingleThreadedBackgroundWriter;-><init>()V
+PLcom/android/server/inputmethod/AdditionalSubtypeMapRepository;-><clinit>()V
+PLcom/android/server/inputmethod/AdditionalSubtypeMapRepository;->get(I)Lcom/android/server/inputmethod/AdditionalSubtypeMap;
+PLcom/android/server/inputmethod/AutofillSuggestionsController;-><init>(Lcom/android/server/inputmethod/InputMethodBindingController;)V
PLcom/android/server/inputmethod/AutofillSuggestionsController;->performOnCreateInlineSuggestionsRequest()V
PLcom/android/server/inputmethod/ClientController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/inputmethod/ClientController;Lcom/android/server/inputmethod/IInputMethodClientInvoker;)V
PLcom/android/server/inputmethod/ClientController$$ExternalSyntheticLambda0;->binderDied()V
-PLcom/android/server/inputmethod/ClientController;->$r8$lambda$eF4cD2NQlJ6H-Idt0s1NiLWRSeA(Lcom/android/server/inputmethod/ClientController;Lcom/android/server/inputmethod/IInputMethodClientInvoker;)V
PLcom/android/server/inputmethod/ClientController;-><init>(Landroid/content/pm/PackageManagerInternal;)V
-HPLcom/android/server/inputmethod/ClientController;->addClient(Lcom/android/server/inputmethod/IInputMethodClientInvoker;Lcom/android/internal/inputmethod/IRemoteInputConnection;III)Lcom/android/server/inputmethod/ClientState;
-PLcom/android/server/inputmethod/ClientController;->addClientControllerCallback(Lcom/android/server/inputmethod/ClientController$ClientControllerCallback;)V
+PLcom/android/server/inputmethod/ClientController;->addClient(Lcom/android/server/inputmethod/IInputMethodClientInvoker;Lcom/android/internal/inputmethod/IRemoteInputConnection;III)V
+PLcom/android/server/inputmethod/ClientController;->forAllClients(Ljava/util/function/Consumer;)V
PLcom/android/server/inputmethod/ClientController;->getClient(Landroid/os/IBinder;)Lcom/android/server/inputmethod/ClientState;
-PLcom/android/server/inputmethod/ClientController;->lambda$addClient$0(Lcom/android/server/inputmethod/IInputMethodClientInvoker;)V
PLcom/android/server/inputmethod/ClientController;->removeClientAsBinder(Landroid/os/IBinder;)Z
-HPLcom/android/server/inputmethod/ClientState;-><init>(Lcom/android/server/inputmethod/IInputMethodClientInvoker;Lcom/android/internal/inputmethod/IRemoteInputConnection;IIILandroid/os/IBinder$DeathRecipient;)V
+PLcom/android/server/inputmethod/ClientState;-><init>(Lcom/android/server/inputmethod/IInputMethodClientInvoker;Lcom/android/internal/inputmethod/IRemoteInputConnection;IIILcom/android/server/inputmethod/ClientController$$ExternalSyntheticLambda0;)V
PLcom/android/server/inputmethod/ClientState;->toString()Ljava/lang/String;
PLcom/android/server/inputmethod/DefaultImeVisibilityApplier;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
PLcom/android/server/inputmethod/DefaultImeVisibilityApplier;->applyImeVisibility(Landroid/os/IBinder;Landroid/view/inputmethod/ImeTracker$Token;II)V
-PLcom/android/server/inputmethod/HandwritingModeController;-><clinit>()V
-PLcom/android/server/inputmethod/HandwritingModeController;-><init>(Landroid/content/Context;Landroid/os/Looper;Ljava/lang/Runnable;Ljava/util/function/IntConsumer;)V
+PLcom/android/server/inputmethod/HandwritingModeController;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/inputmethod/InputMethodManagerService$InkWindowInitializer;Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda7;)V
PLcom/android/server/inputmethod/HandwritingModeController;->clearPendingHandwritingDelegation()V
-PLcom/android/server/inputmethod/HandwritingModeController;->reset()V
PLcom/android/server/inputmethod/HandwritingModeController;->reset(Z)V
-PLcom/android/server/inputmethod/HardwareKeyboardShortcutController;-><init>(Lcom/android/server/inputmethod/InputMethodMap;I)V
-PLcom/android/server/inputmethod/HardwareKeyboardShortcutController;->getUserId()I
-PLcom/android/server/inputmethod/HardwareKeyboardShortcutController;->reset(Lcom/android/server/inputmethod/InputMethodMap;)V
+PLcom/android/server/inputmethod/HardwareKeyboardShortcutController;-><init>()V
+PLcom/android/server/inputmethod/HardwareKeyboardShortcutController;->update(Lcom/android/server/inputmethod/InputMethodSettings;)V
PLcom/android/server/inputmethod/IInputMethodClientInvoker;-><init>(Lcom/android/internal/inputmethod/IInputMethodClient;ZLandroid/os/Handler;)V
-PLcom/android/server/inputmethod/IInputMethodClientInvoker;->asBinder()Landroid/os/IBinder;
-PLcom/android/server/inputmethod/IInputMethodClientInvoker;->create(Lcom/android/internal/inputmethod/IInputMethodClient;Landroid/os/Handler;)Lcom/android/server/inputmethod/IInputMethodClientInvoker;
-PLcom/android/server/inputmethod/IInputMethodClientInvoker;->onBindMethod(Lcom/android/internal/inputmethod/InputBindResult;)V
PLcom/android/server/inputmethod/IInputMethodClientInvoker;->onBindMethodInternal(Lcom/android/internal/inputmethod/InputBindResult;)V
-PLcom/android/server/inputmethod/IInputMethodClientInvoker;->onUnbindMethod(II)V
-PLcom/android/server/inputmethod/IInputMethodClientInvoker;->onUnbindMethodInternal(II)V
-PLcom/android/server/inputmethod/IInputMethodClientInvoker;->reportFullscreenMode(Z)V
-PLcom/android/server/inputmethod/IInputMethodClientInvoker;->reportFullscreenModeInternal(Z)V
+PLcom/android/server/inputmethod/IInputMethodClientInvoker;->onStartInputResultInternal(Lcom/android/internal/inputmethod/InputBindResult;I)V
PLcom/android/server/inputmethod/IInputMethodClientInvoker;->setActive(ZZ)V
-PLcom/android/server/inputmethod/IInputMethodClientInvoker;->setActiveInternal(ZZ)V
+PLcom/android/server/inputmethod/IInputMethodClientInvoker;->setImeVisibility(ZLandroid/view/inputmethod/ImeTracker$Token;)V
PLcom/android/server/inputmethod/IInputMethodInvoker;-><init>(Lcom/android/internal/inputmethod/IInputMethod;)V
-PLcom/android/server/inputmethod/IInputMethodInvoker;->asBinder()Landroid/os/IBinder;
-PLcom/android/server/inputmethod/IInputMethodInvoker;->bindInput(Landroid/view/inputmethod/InputBinding;)V
-PLcom/android/server/inputmethod/IInputMethodInvoker;->create(Lcom/android/internal/inputmethod/IInputMethod;)Lcom/android/server/inputmethod/IInputMethodInvoker;
-PLcom/android/server/inputmethod/IInputMethodInvoker;->createSession(Landroid/view/InputChannel;Lcom/android/internal/inputmethod/IInputMethodSessionCallback;)V
-PLcom/android/server/inputmethod/IInputMethodInvoker;->initializeInternal(Landroid/os/IBinder;Lcom/android/internal/inputmethod/IInputMethodPrivilegedOperations;I)V
-PLcom/android/server/inputmethod/IInputMethodInvoker;->setSessionEnabled(Lcom/android/internal/inputmethod/IInputMethodSession;Z)V
-PLcom/android/server/inputmethod/IInputMethodInvoker;->startInput(Landroid/os/IBinder;Lcom/android/internal/inputmethod/IRemoteInputConnection;Landroid/view/inputmethod/EditorInfo;ZILandroid/window/ImeOnBackInvokedDispatcher;)V
+PLcom/android/server/inputmethod/IInputMethodManagerImpl;-><init>(Lcom/android/server/inputmethod/ZeroJankProxy;)V
+PLcom/android/server/inputmethod/IInputMethodManagerImpl;->addClient(Lcom/android/internal/inputmethod/IInputMethodClient;Lcom/android/internal/inputmethod/IRemoteInputConnection;I)V
+PLcom/android/server/inputmethod/IInputMethodManagerImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/inputmethod/IInputMethodManagerImpl;->getEnabledInputMethodList(I)Lcom/android/internal/inputmethod/InputMethodInfoSafeList;
+PLcom/android/server/inputmethod/IInputMethodManagerImpl;->getEnabledInputMethodSubtypeList(Ljava/lang/String;ZI)Ljava/util/List;
+PLcom/android/server/inputmethod/IInputMethodManagerImpl;->getImeTrackerService()Lcom/android/internal/inputmethod/IImeTracker;
+PLcom/android/server/inputmethod/IInputMethodManagerImpl;->getInputMethodList(II)Lcom/android/internal/inputmethod/InputMethodInfoSafeList;
+PLcom/android/server/inputmethod/IInputMethodManagerImpl;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V
+PLcom/android/server/inputmethod/IInputMethodManagerImpl;->removeImeSurface(I)V
+PLcom/android/server/inputmethod/IInputMethodManagerImpl;->removeImeSurfaceFromWindowAsync(Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/IInputMethodManagerImpl;->reportPerceptibleAsync(Landroid/os/IBinder;Z)V
+HPLcom/android/server/inputmethod/IInputMethodManagerImpl;->startInputOrWindowGainedFocusAsync(ILcom/android/internal/inputmethod/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/inputmethod/IRemoteInputConnection;Lcom/android/internal/inputmethod/IRemoteAccessibilityInputConnection;IILandroid/window/ImeOnBackInvokedDispatcher;IZ)V
+PLcom/android/server/inputmethod/ImeBindingState;-><init>(Landroid/os/IBinder;ILcom/android/server/inputmethod/ClientState;Landroid/view/inputmethod/EditorInfo;)V
+PLcom/android/server/inputmethod/ImeBindingState;->dump(Landroid/util/Printer;Ljava/lang/String;)V
PLcom/android/server/inputmethod/ImePlatformCompatUtils;-><init>()V
-PLcom/android/server/inputmethod/ImePlatformCompatUtils;->isChangeEnabledByUid(JI)Z
-PLcom/android/server/inputmethod/ImePlatformCompatUtils;->shouldClearShowForcedFlag(I)Z
-PLcom/android/server/inputmethod/ImeTrackerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/inputmethod/ImeTrackerService;Landroid/view/inputmethod/ImeTracker$Token;)V
-PLcom/android/server/inputmethod/ImeTrackerService$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fgetmDuration(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)J
-PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fgetmFromUser(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)Z
-PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fgetmOrigin(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)I
-PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fgetmPhase(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)I
-PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fgetmReason(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)I
-PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fgetmStartTime(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)J
-PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fgetmStatus(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)I
-PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fgetmType(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)I
-PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fgetmUid(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)I
-PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fputmDuration(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;J)V
-PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fputmPhase(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;I)V
-PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fputmStatus(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;I)V
-HPLcom/android/server/inputmethod/ImeTrackerService$History$Entry;-><init>(Ljava/lang/String;IIIIIZ)V
-PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;-><init>(Ljava/lang/String;IIIIIZLcom/android/server/inputmethod/ImeTrackerService$History$Entry-IA;)V
-PLcom/android/server/inputmethod/ImeTrackerService$History;->-$$Nest$maddEntry(Lcom/android/server/inputmethod/ImeTrackerService$History;Landroid/os/IBinder;Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)V
-PLcom/android/server/inputmethod/ImeTrackerService$History;->-$$Nest$mgetEntry(Lcom/android/server/inputmethod/ImeTrackerService$History;Landroid/os/IBinder;)Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;
-PLcom/android/server/inputmethod/ImeTrackerService$History;->-$$Nest$msetFinished(Lcom/android/server/inputmethod/ImeTrackerService$History;Landroid/view/inputmethod/ImeTracker$Token;II)V
-PLcom/android/server/inputmethod/ImeTrackerService$History;->-$$Nest$sfgetsSequenceNumber()Ljava/util/concurrent/atomic/AtomicInteger;
+PLcom/android/server/inputmethod/ImeTrackerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/inputmethod/ImeTrackerService;Landroid/view/inputmethod/ImeTracker$Token;)V
+PLcom/android/server/inputmethod/ImeTrackerService$$ExternalSyntheticLambda0;->run()V
+HPLcom/android/server/inputmethod/ImeTrackerService$History$Entry;-><init>(IILjava/lang/String;IIZ)V
+PLcom/android/server/inputmethod/ImeTrackerService$History;->-$$Nest$mdump(Lcom/android/server/inputmethod/ImeTrackerService$History;Ljava/io/PrintWriter;)V
+HPLcom/android/server/inputmethod/ImeTrackerService$History;->-$$Nest$msetFinished(Lcom/android/server/inputmethod/ImeTrackerService$History;Landroid/view/inputmethod/ImeTracker$Token;II)V
PLcom/android/server/inputmethod/ImeTrackerService$History;-><clinit>()V
PLcom/android/server/inputmethod/ImeTrackerService$History;-><init>()V
-PLcom/android/server/inputmethod/ImeTrackerService$History;-><init>(Lcom/android/server/inputmethod/ImeTrackerService$History-IA;)V
-PLcom/android/server/inputmethod/ImeTrackerService$History;->addEntry(Landroid/os/IBinder;Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)V
-PLcom/android/server/inputmethod/ImeTrackerService$History;->getEntry(Landroid/os/IBinder;)Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;
-HPLcom/android/server/inputmethod/ImeTrackerService$History;->setFinished(Landroid/view/inputmethod/ImeTracker$Token;II)V
-PLcom/android/server/inputmethod/ImeTrackerService;->$r8$lambda$iu5qDG_Qa1HHpnJA5w-tOh7aP38(Lcom/android/server/inputmethod/ImeTrackerService;Landroid/view/inputmethod/ImeTracker$Token;)V
-PLcom/android/server/inputmethod/ImeTrackerService;-><init>(Landroid/os/Looper;)V
-PLcom/android/server/inputmethod/ImeTrackerService;->lambda$onRequestHide$1(Landroid/view/inputmethod/ImeTracker$Token;)V
+PLcom/android/server/inputmethod/ImeTrackerService$History;->dumpEntry(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;Ljava/io/PrintWriter;Ljava/lang/String;Ljava/time/format/DateTimeFormatter;)V
+PLcom/android/server/inputmethod/ImeTrackerService;-><init>(Landroid/os/Handler;)V
PLcom/android/server/inputmethod/ImeTrackerService;->onCancelled(Landroid/view/inputmethod/ImeTracker$Token;I)V
-PLcom/android/server/inputmethod/ImeTrackerService;->onProgress(Landroid/os/IBinder;I)V
-PLcom/android/server/inputmethod/ImeTrackerService;->onRequestHide(Ljava/lang/String;IIIZ)Landroid/view/inputmethod/ImeTracker$Token;
+PLcom/android/server/inputmethod/ImeTrackerService;->onFailed(Landroid/view/inputmethod/ImeTracker$Token;I)V
+PLcom/android/server/inputmethod/ImeTrackerService;->onHidden(Landroid/view/inputmethod/ImeTracker$Token;)V
+HPLcom/android/server/inputmethod/ImeTrackerService;->onProgress(Landroid/os/IBinder;I)V
+PLcom/android/server/inputmethod/ImeTrackerService;->onShown(Landroid/view/inputmethod/ImeTracker$Token;)V
+PLcom/android/server/inputmethod/ImeTrackerService;->onStart(Ljava/lang/String;IIIIZ)Landroid/view/inputmethod/ImeTracker$Token;
PLcom/android/server/inputmethod/ImeVisibilityStateComputer$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowManagerInternal;)V
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer$1;-><init>(Lcom/android/server/inputmethod/ImeVisibilityStateComputer;)V
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer$1;->onImeInputTargetVisibilityChanged(Landroid/os/IBinder;ZZ)V
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;->-$$Nest$fgetmSoftInputModeState(Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;)I
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;->-$$Nest$msetImeDisplayId(Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;I)V
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;->-$$Nest$msetRequestedImeVisible(Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;Z)V
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;-><init>(IIZZZI)V
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;->getWindowFlags()I
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;->hasEditorFocused()Z
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;->hasImeFocusChanged()Z
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;->isRequestedImeVisible()Z
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;->setImeDisplayId(I)V
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;->setRequestImeToken(Landroid/os/IBinder;)V
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;->setRequestedImeVisible(Z)V
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityPolicy;->-$$Nest$fgetmPendingA11yRequestingHideKeyboard(Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityPolicy;)Z
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityPolicy;-><init>()V
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityPolicy;->isImeHiddenByDisplayPolicy()Z
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityPolicy;->setImeHiddenByDisplayPolicy(Z)V
+HPLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;-><init>(IIZZZI)V
PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityResult;-><init>(II)V
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityResult;->getReason()I
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityResult;->getState()I
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->-$$Nest$fgetmCurVisibleImeInputTarget(Lcom/android/server/inputmethod/ImeVisibilityStateComputer;)Landroid/os/IBinder;
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->-$$Nest$fputmCurVisibleImeInputTarget(Lcom/android/server/inputmethod/ImeVisibilityStateComputer;Landroid/os/IBinder;)V
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/inputmethod/InputMethodManagerService$ImeDisplayValidator;Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityPolicy;)V
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->canHideIme(Landroid/view/inputmethod/ImeTracker$Token;I)Z
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->clearImeShowFlags()V
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->computeImeDisplayId(Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;I)I
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->computeState(Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;Z)Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityResult;
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->getImePolicy()Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityPolicy;
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->getOrCreateWindowState(Landroid/os/IBinder;)Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->getWindowStateOrNull(Landroid/os/IBinder;)Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->requestImeVisibility(Landroid/os/IBinder;Z)V
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->setWindowState(Landroid/os/IBinder;Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;)V
-PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->setWindowStateInner(Landroid/os/IBinder;Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;)V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/inputmethod/ImeVisibilityStateComputer$$ExternalSyntheticLambda0;Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityPolicy;I)V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->getWindowTokenFrom(ILandroid/os/IBinder;)Landroid/os/IBinder;
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->getWindowTokenFrom(Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;)Landroid/os/IBinder;
+HPLcom/android/server/inputmethod/ImeVisibilityStateComputer;->requestImeVisibility(Landroid/os/IBinder;Z)V
+PLcom/android/server/inputmethod/ImmutableSparseArray;-><clinit>()V
+PLcom/android/server/inputmethod/ImmutableSparseArray;-><init>(Landroid/util/SparseArray;)V
+PLcom/android/server/inputmethod/ImmutableSparseArray;->cloneWithPutOrSelf(ILjava/lang/Object;)Lcom/android/server/inputmethod/ImmutableSparseArray;
PLcom/android/server/inputmethod/InputMethodBindingController$1;-><init>(Lcom/android/server/inputmethod/InputMethodBindingController;)V
+PLcom/android/server/inputmethod/InputMethodBindingController$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
PLcom/android/server/inputmethod/InputMethodBindingController$2;-><init>(Lcom/android/server/inputmethod/InputMethodBindingController;)V
PLcom/android/server/inputmethod/InputMethodBindingController$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodBindingController$2;->onServiceDisconnected(Landroid/content/ComponentName;)V
PLcom/android/server/inputmethod/InputMethodBindingController$2;->updateCurrentMethodUid()V
-PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fgetmCurIntent(Lcom/android/server/inputmethod/InputMethodBindingController;)Landroid/content/Intent;
-PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fgetmCurMethod(Lcom/android/server/inputmethod/InputMethodBindingController;)Lcom/android/server/inputmethod/IInputMethodInvoker;
-PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fgetmCurMethodUid(Lcom/android/server/inputmethod/InputMethodBindingController;)I
-PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fgetmCurToken(Lcom/android/server/inputmethod/InputMethodBindingController;)Landroid/os/IBinder;
-PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fgetmLatchForTesting(Lcom/android/server/inputmethod/InputMethodBindingController;)Ljava/util/concurrent/CountDownLatch;
-PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fgetmPackageManagerInternal(Lcom/android/server/inputmethod/InputMethodBindingController;)Landroid/content/pm/PackageManagerInternal;
-PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fgetmSelectedMethodId(Lcom/android/server/inputmethod/InputMethodBindingController;)Ljava/lang/String;
-PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fgetmService(Lcom/android/server/inputmethod/InputMethodBindingController;)Lcom/android/server/inputmethod/InputMethodManagerService;
-PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fgetmSupportsStylusHw(Lcom/android/server/inputmethod/InputMethodBindingController;)Z
-PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fputmCurMethod(Lcom/android/server/inputmethod/InputMethodBindingController;Lcom/android/server/inputmethod/IInputMethodInvoker;)V
-PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fputmCurMethodUid(Lcom/android/server/inputmethod/InputMethodBindingController;I)V
-PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fputmSupportsStylusHw(Lcom/android/server/inputmethod/InputMethodBindingController;Z)V
-PLcom/android/server/inputmethod/InputMethodBindingController;-><clinit>()V
-PLcom/android/server/inputmethod/InputMethodBindingController;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
-PLcom/android/server/inputmethod/InputMethodBindingController;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;ILjava/util/concurrent/CountDownLatch;)V
-PLcom/android/server/inputmethod/InputMethodBindingController;->addFreshWindowToken()V
-PLcom/android/server/inputmethod/InputMethodBindingController;->advanceSequenceNumber()V
+PLcom/android/server/inputmethod/InputMethodBindingController;-><init>(ILcom/android/server/inputmethod/InputMethodManagerService;)V
PLcom/android/server/inputmethod/InputMethodBindingController;->bindCurrentInputMethodService(Landroid/content/ServiceConnection;I)Z
-PLcom/android/server/inputmethod/InputMethodBindingController;->bindCurrentInputMethodServiceMainConnection()Z
PLcom/android/server/inputmethod/InputMethodBindingController;->bindCurrentMethod()Lcom/android/internal/inputmethod/InputBindResult;
PLcom/android/server/inputmethod/InputMethodBindingController;->clearCurMethodAndSessions()V
-PLcom/android/server/inputmethod/InputMethodBindingController;->createImeBindingIntent(Landroid/content/ComponentName;)Landroid/content/Intent;
-PLcom/android/server/inputmethod/InputMethodBindingController;->getCurId()Ljava/lang/String;
-PLcom/android/server/inputmethod/InputMethodBindingController;->getCurMethod()Lcom/android/server/inputmethod/IInputMethodInvoker;
-PLcom/android/server/inputmethod/InputMethodBindingController;->getCurMethodUid()I
-PLcom/android/server/inputmethod/InputMethodBindingController;->getCurToken()Landroid/os/IBinder;
-PLcom/android/server/inputmethod/InputMethodBindingController;->getLastBindTime()J
-PLcom/android/server/inputmethod/InputMethodBindingController;->getSelectedMethodId()Ljava/lang/String;
-PLcom/android/server/inputmethod/InputMethodBindingController;->getSequenceNumber()I
-PLcom/android/server/inputmethod/InputMethodBindingController;->hasMainConnection()Z
-PLcom/android/server/inputmethod/InputMethodBindingController;->isVisibleBound()Z
-PLcom/android/server/inputmethod/InputMethodBindingController;->removeCurrentToken()V
-PLcom/android/server/inputmethod/InputMethodBindingController;->setCurrentMethodNotVisible()V
-PLcom/android/server/inputmethod/InputMethodBindingController;->setSelectedMethodId(Ljava/lang/String;)V
-PLcom/android/server/inputmethod/InputMethodBindingController;->supportsStylusHandwriting()Z
+PLcom/android/server/inputmethod/InputMethodBindingController;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/inputmethod/InputMethodBindingController;->getCurrentInputMethodSubtype()Landroid/view/inputmethod/InputMethodSubtype;
PLcom/android/server/inputmethod/InputMethodBindingController;->unbindCurrentMethod()V
-PLcom/android/server/inputmethod/InputMethodBindingController;->unbindMainConnection()V
PLcom/android/server/inputmethod/InputMethodDeviceConfigs$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/inputmethod/InputMethodDeviceConfigs;)V
PLcom/android/server/inputmethod/InputMethodDeviceConfigs;-><init>()V
+PLcom/android/server/inputmethod/InputMethodDialogWindowContext;-><init>()V
+PLcom/android/server/inputmethod/InputMethodDrawsNavBarResourceMonitor$1;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda1;)V
+PLcom/android/server/inputmethod/InputMethodDrawsNavBarResourceMonitor;->evaluate(Landroid/content/Context;I)Z
PLcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder;-><init>()V
-PLcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder;-><init>(Lcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder-IA;)V
-PLcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder;->build()Ljava/util/ArrayList;
-PLcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder;->fillAuxiliaryImes(Ljava/util/List;Landroid/content/Context;)Lcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder;
-PLcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder;->fillImes(Ljava/util/List;Landroid/content/Context;ZLjava/util/Locale;ZLjava/lang/String;)Lcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder;
-PLcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder;->isEmpty()Z
+PLcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder;->fillImes(Ljava/util/List;Landroid/content/Context;ZLjava/util/Locale;ZLjava/lang/String;)V
+PLcom/android/server/inputmethod/InputMethodInfoUtils;->-$$Nest$smisSystemAuxilialyImeThatHasAutomaticSubtype(Landroid/view/inputmethod/InputMethodInfo;Landroid/content/Context;Z)Z
PLcom/android/server/inputmethod/InputMethodInfoUtils;-><clinit>()V
-PLcom/android/server/inputmethod/InputMethodInfoUtils;->chooseSystemVoiceIme(Lcom/android/server/inputmethod/InputMethodMap;Ljava/lang/String;Ljava/lang/String;)Landroid/view/inputmethod/InputMethodInfo;
PLcom/android/server/inputmethod/InputMethodInfoUtils;->getDefaultEnabledImes(Landroid/content/Context;Ljava/util/List;Z)Ljava/util/ArrayList;
-PLcom/android/server/inputmethod/InputMethodInfoUtils;->getFallbackLocaleForDefaultIme(Ljava/util/List;Landroid/content/Context;)Ljava/util/Locale;
-PLcom/android/server/inputmethod/InputMethodInfoUtils;->getMinimumKeyboardSetWithSystemLocale(Ljava/util/List;Landroid/content/Context;Ljava/util/Locale;Ljava/util/Locale;)Lcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder;
PLcom/android/server/inputmethod/InputMethodInfoUtils;->getMostApplicableDefaultIME(Ljava/util/List;)Landroid/view/inputmethod/InputMethodInfo;
-PLcom/android/server/inputmethod/InputMethodManagerInternal$1;-><init>()V
+PLcom/android/server/inputmethod/InputMethodInfoUtils;->isSystemImeThatHasSubtypeOf(Landroid/view/inputmethod/InputMethodInfo;Landroid/content/Context;ZLjava/util/Locale;ZLjava/lang/String;)Z
PLcom/android/server/inputmethod/InputMethodManagerInternal;-><clinit>()V
-PLcom/android/server/inputmethod/InputMethodManagerInternal;-><init>()V
-PLcom/android/server/inputmethod/InputMethodManagerInternal;->get()Lcom/android/server/inputmethod/InputMethodManagerInternal;
-PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;I)V
-PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda2;-><init>(Ljava/util/List;I)V
-PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;IILcom/android/server/inputmethod/InputMethodSettings;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda5;->test(Ljava/lang/Object;)Z
-PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Z)V
-PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda7;->runOrThrow()V
-PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda9;->onClientRemoved(Lcom/android/server/inputmethod/ClientState;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$1;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/server/inputmethod/IInputMethodInvoker;Landroid/view/InputChannel;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$1;->sessionCreated(Lcom/android/internal/inputmethod/IInputMethodSession;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$3;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/hardware/input/InputManager;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$3;->onInputDeviceChanged(I)V
-PLcom/android/server/inputmethod/InputMethodManagerService$3;->remove(I)V
-PLcom/android/server/inputmethod/InputMethodManagerService$6;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+HPLcom/android/server/inputmethod/InputMethodManagerInternal;->get()Lcom/android/server/inputmethod/InputMethodManagerInternal;
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/server/inputmethod/ClientState;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;IILcom/android/server/inputmethod/InputMethodSettings;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda14;->test(Ljava/lang/Object;)Z
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda16;-><init>(IILjava/lang/Object;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda16;->accept(Ljava/lang/Object;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda18;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Z)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda18;->runOrThrow()V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda1;->register(Landroid/os/Handler;Landroid/content/ContentResolver;[Ljava/lang/String;Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda1;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda26;-><init>(Landroid/util/Printer;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda26;->accept(Ljava/lang/Object;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda2;-><init>(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda4;-><init>(ILcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda4;->apply(I)Ljava/lang/Object;
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$1;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$2;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/server/inputmethod/IInputMethodInvoker;Landroid/view/InputChannel;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$2;->sessionCreated(Lcom/android/internal/inputmethod/IInputMethodSession;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$4;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/hardware/input/InputManager;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$4;->onInputDeviceChanged(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$5;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$5;->dumpAsProtoNoCheck(Ljava/io/FileDescriptor;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$5;->dumpCritical(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+PLcom/android/server/inputmethod/InputMethodManagerService$5;->dumpNormal(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
PLcom/android/server/inputmethod/InputMethodManagerService$ImmsBroadcastReceiverForAllUsers;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$ImmsBroadcastReceiverForAllUsers;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/server/inputmethod/InputMethodManagerService$ImmsBroadcastReceiverForAllUsers-IA;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$ImmsBroadcastReceiverForAllUsers;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/inputmethod/InputMethodManagerService$InkWindowInitializer;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$InkWindowInitializer;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/server/inputmethod/InputMethodManagerService$InkWindowInitializer-IA;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->reportFullscreenModeAsync(Z)V
-PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->reportStartInputAsync(Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Lcom/android/server/inputmethod/UserData;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->calledWithValidTokenLocked(Landroid/os/IBinder;Lcom/android/server/inputmethod/UserData;)Z
+PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->notifyUserActionAsync()V
+HPLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->reportFullscreenModeAsync(Z)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->reportStartInputAsync(Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->setImeWindowStatusAsync(II)V
PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->updateStatusIconAsync(Ljava/lang/String;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;II)V
+PLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;[I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle$$ExternalSyntheticLambda3;->run()V
PLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;-><init>(Landroid/content/Context;Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;->initializeUsersAsync([I)V
PLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;->onStart()V
PLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;ZI)V
+PLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl-IA;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;->onImeParentChanged(I)V
-PLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;->removeImeSurface(I)V
-PLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;->reportImeControl(Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;->getEnabledInputMethodListAsUser(I)Ljava/util/List;
+HPLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;->onImeInputTargetVisibilityChanged(IZLandroid/os/IBinder;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;->onImeParentChanged(I)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;->reportImeControl(Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;->setHasVisibleImeLayeringOverlay(IZ)V
+PLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;->setInteractive(Z)V
+PLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;->updateImeWindowStatus(IZ)V
PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->addKnownImePackageNameLocked(Ljava/lang/String;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->clearKnownImePackageNamesLocked()V
-PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->clearPackageChangeState()V
-PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->isChangingPackagesOfCurrentUserLocked()Z
PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onBeginPackageChanges()V
-PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onFinishPackageChanges()V
-PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onFinishPackageChangesInternal()V
-PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
-PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->shouldRebuildInputMethodListLocked()Z
-PLcom/android/server/inputmethod/InputMethodManagerService$SessionState;-><init>(Lcom/android/server/inputmethod/ClientState;Lcom/android/server/inputmethod/IInputMethodInvoker;Lcom/android/internal/inputmethod/IInputMethodSession;Landroid/view/InputChannel;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$SettingsObserver;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/Handler;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$SettingsObserver;->registerContentObserverLocked(I)V
-PLcom/android/server/inputmethod/InputMethodManagerService$SoftInputShowHideHistory;-><clinit>()V
-PLcom/android/server/inputmethod/InputMethodManagerService$SoftInputShowHideHistory;-><init>()V
-PLcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory$Entry;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService$StartInputInfo;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory$Entry;->set(Lcom/android/server/inputmethod/InputMethodManagerService$StartInputInfo;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory;-><init>()V
-PLcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory-IA;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory;->addEntry(Lcom/android/server/inputmethod/InputMethodManagerService$StartInputInfo;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory;->getEntrySize()I
-PLcom/android/server/inputmethod/InputMethodManagerService$StartInputInfo;-><clinit>()V
-PLcom/android/server/inputmethod/InputMethodManagerService$StartInputInfo;-><init>(ILandroid/os/IBinder;ILjava/lang/String;IZIILandroid/os/IBinder;Landroid/view/inputmethod/EditorInfo;II)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->$r8$lambda$Ldb_lZJoevH2yGpbOQAZ4KPTou4(Lcom/android/server/inputmethod/InputMethodManagerService;I)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->$r8$lambda$MzZJToGrqrCYCFD7Mqd0xPdMqLo(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/server/inputmethod/ClientState;)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->$r8$lambda$PHzs3DePqjjuRsDB9un1spyitV8(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Z)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->$r8$lambda$apwJ5GwwA3tRoPWo5dXQONTyNlc(Lcom/android/server/inputmethod/InputMethodManagerService;IILcom/android/server/inputmethod/InputMethodSettings;Landroid/view/inputmethod/InputMethodInfo;)Z
-PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$fgetmHandler(Lcom/android/server/inputmethod/InputMethodManagerService;)Landroid/os/Handler;
-PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$fgetmSettings(Lcom/android/server/inputmethod/InputMethodManagerService;)Lcom/android/server/inputmethod/InputMethodSettings;
-PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$fputmCurPerceptible(Lcom/android/server/inputmethod/InputMethodManagerService;Z)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$mpublishLocalService(Lcom/android/server/inputmethod/InputMethodManagerService;)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$mremoveStylusDeviceIdLocked(Lcom/android/server/inputmethod/InputMethodManagerService;I)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$mreportFullscreenMode(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Z)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$mreportStartInput(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Landroid/os/IBinder;)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$mupdateStatusIcon(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Ljava/lang/String;I)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$smisStylusDevice(Landroid/view/InputDevice;)Z
-PLcom/android/server/inputmethod/InputMethodManagerService;-><clinit>()V
-PLcom/android/server/inputmethod/InputMethodManagerService;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/inputmethod/InputMethodManagerService;-><init>(Landroid/content/Context;Lcom/android/server/ServiceThread;Lcom/android/server/inputmethod/InputMethodBindingController;)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->addClient(Lcom/android/internal/inputmethod/IInputMethodClient;Lcom/android/internal/inputmethod/IRemoteInputConnection;I)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->advanceSequenceNumberLocked()V
-PLcom/android/server/inputmethod/InputMethodManagerService;->attachNewAccessibilityLocked(IZ)V
-HPLcom/android/server/inputmethod/InputMethodManagerService;->attachNewInputLocked(IZ)Lcom/android/internal/inputmethod/InputBindResult;
-HPLcom/android/server/inputmethod/InputMethodManagerService;->buildInputMethodListLocked(Z)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->calledWithValidTokenLocked(Landroid/os/IBinder;)Z
+HPLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onFinishPackageChanges()V
+PLcom/android/server/inputmethod/InputMethodManagerService$SessionState;-><init>(Lcom/android/server/inputmethod/ClientState;Lcom/android/server/inputmethod/IInputMethodInvoker;Lcom/android/internal/inputmethod/IInputMethodSession;Landroid/view/InputChannel;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$SessionState;->toString()Ljava/lang/String;
+PLcom/android/server/inputmethod/InputMethodManagerService$ShellCommandImpl;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$ShellCommandImpl;->onCommand(Ljava/lang/String;)I
+PLcom/android/server/inputmethod/InputMethodManagerService$ShellCommandImpl;->onCommandWithSystemIdentity(Ljava/lang/String;)I
+PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$mdumpAsStringNoCheck(Lcom/android/server/inputmethod/InputMethodManagerService;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$mhandleShellCommandTraceInputMethod(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/server/inputmethod/InputMethodManagerService$ShellCommandImpl;)I
+PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$mupdateStatusIconLocked(Lcom/android/server/inputmethod/InputMethodManagerService;Ljava/lang/String;ILcom/android/server/inputmethod/UserData;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;-><init>(Landroid/content/Context;ZLandroid/os/Looper;Landroid/os/Handler;Ljava/util/function/IntFunction;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->attachNewAccessibilityLocked(IIZ)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->attachNewInputLocked(IIZ)Lcom/android/internal/inputmethod/InputBindResult;
PLcom/android/server/inputmethod/InputMethodManagerService;->canCallerAccessInputMethod(Ljava/lang/String;IILcom/android/server/inputmethod/InputMethodSettings;)Z
-PLcom/android/server/inputmethod/InputMethodManagerService;->chooseNewDefaultIMELocked()Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->chooseNewDefaultIMELocked(I)Z
PLcom/android/server/inputmethod/InputMethodManagerService;->clearClientSessionForAccessibilityLocked(Lcom/android/server/inputmethod/ClientState;)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->clearClientSessionLocked(Lcom/android/server/inputmethod/ClientState;)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->clearClientSessionsLocked()V
-PLcom/android/server/inputmethod/InputMethodManagerService;->computeCurrentDeviceMethodIdLocked(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/inputmethod/InputMethodManagerService;->computeImeDisplayIdForTarget(ILcom/android/server/inputmethod/InputMethodManagerService$ImeDisplayValidator;)I
PLcom/android/server/inputmethod/InputMethodManagerService;->createAccessibilityInputMethodSessions(Landroid/util/SparseArray;)Landroid/util/SparseArray;
-PLcom/android/server/inputmethod/InputMethodManagerService;->createStatsTokenForFocusedClient(ZIIZ)Landroid/view/inputmethod/ImeTracker$Token;
-PLcom/android/server/inputmethod/InputMethodManagerService;->filterInputMethodServices(Lcom/android/server/inputmethod/AdditionalSubtypeMap;Ljava/util/List;Landroid/content/Context;Ljava/util/List;)Lcom/android/server/inputmethod/InputMethodMap;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->createStatsTokenForFocusedClient(IIZ)Landroid/view/inputmethod/ImeTracker$Token;
+PLcom/android/server/inputmethod/InputMethodManagerService;->dumpAsStringNoCheckForUser(Lcom/android/server/inputmethod/UserData;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->dumpDebug(Landroid/util/proto/ProtoOutputStream;)V
PLcom/android/server/inputmethod/InputMethodManagerService;->finishSessionLocked(Lcom/android/server/inputmethod/InputMethodManagerService$SessionState;)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->getCurIdLocked()Ljava/lang/String;
-PLcom/android/server/inputmethod/InputMethodManagerService;->getCurMethodLocked()Lcom/android/server/inputmethod/IInputMethodInvoker;
-PLcom/android/server/inputmethod/InputMethodManagerService;->getCurMethodUidLocked()I
-PLcom/android/server/inputmethod/InputMethodManagerService;->getCurTokenDisplayIdLocked()I
-PLcom/android/server/inputmethod/InputMethodManagerService;->getCurTokenLocked()Landroid/os/IBinder;
-PLcom/android/server/inputmethod/InputMethodManagerService;->getCurrentImeUserIdLocked()I
-PLcom/android/server/inputmethod/InputMethodManagerService;->getDisplayIdToShowImeLocked()I
-PLcom/android/server/inputmethod/InputMethodManagerService;->getEnabledInputMethodList(I)Ljava/util/List;
-PLcom/android/server/inputmethod/InputMethodManagerService;->getEnabledInputMethodListLocked(II)Ljava/util/List;
-PLcom/android/server/inputmethod/InputMethodManagerService;->getImeTrackerService()Lcom/android/internal/inputmethod/IImeTracker;
-PLcom/android/server/inputmethod/InputMethodManagerService;->getInputMethodNavButtonFlagsLocked()I
-PLcom/android/server/inputmethod/InputMethodManagerService;->getLastBindTimeLocked()J
+PLcom/android/server/inputmethod/InputMethodManagerService;->getEnabledInputMethodListInternal(II)Ljava/util/List;
+PLcom/android/server/inputmethod/InputMethodManagerService;->getEnabledInputMethodSubtypeListInternal(ILjava/lang/String;IZ)Ljava/util/List;
+PLcom/android/server/inputmethod/InputMethodManagerService;->getInputMethodListInternal(III)Ljava/util/List;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->getInputMethodNavButtonFlagsLocked(Lcom/android/server/inputmethod/UserData;)I
PLcom/android/server/inputmethod/InputMethodManagerService;->getPackageManagerForUser(Landroid/content/Context;I)Landroid/content/pm/PackageManager;
-PLcom/android/server/inputmethod/InputMethodManagerService;->getSelectedMethodIdLocked()Ljava/lang/String;
-PLcom/android/server/inputmethod/InputMethodManagerService;->getSequenceNumberLocked()I
-PLcom/android/server/inputmethod/InputMethodManagerService;->getStylusInputDeviceIds(Landroid/hardware/input/InputManager;)Landroid/util/IntArray;
-PLcom/android/server/inputmethod/InputMethodManagerService;->handleMessage(Landroid/os/Message;)Z
-PLcom/android/server/inputmethod/InputMethodManagerService;->hasConnectionLocked()Z
-HPLcom/android/server/inputmethod/InputMethodManagerService;->hideCurrentInputLocked(Landroid/os/IBinder;Landroid/view/inputmethod/ImeTracker$Token;ILandroid/os/ResultReceiver;I)Z
-PLcom/android/server/inputmethod/InputMethodManagerService;->hideStatusBarIconLocked()V
-PLcom/android/server/inputmethod/InputMethodManagerService;->initializeImeLocked(Lcom/android/server/inputmethod/IInputMethodInvoker;Landroid/os/IBinder;)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->isImeTraceEnabled()Z
-PLcom/android/server/inputmethod/InputMethodManagerService;->isSelectedMethodBoundLocked()Z
-PLcom/android/server/inputmethod/InputMethodManagerService;->isShowRequestedForCurrentWindow()Z
+HPLcom/android/server/inputmethod/InputMethodManagerService;->getUserData(I)Lcom/android/server/inputmethod/UserData;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->hideCurrentInputLocked(ILandroid/os/IBinder;I)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->hideCurrentInputLocked(Landroid/os/IBinder;Landroid/view/inputmethod/ImeTracker$Token;II)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->hideStatusBarIconLocked(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->isShowRequestedForCurrentWindow(I)Z
PLcom/android/server/inputmethod/InputMethodManagerService;->isStylusDevice(Landroid/view/InputDevice;)Z
-PLcom/android/server/inputmethod/InputMethodManagerService;->lambda$getEnabledInputMethodListLocked$6(IILcom/android/server/inputmethod/InputMethodSettings;Landroid/view/inputmethod/InputMethodInfo;)Z
-PLcom/android/server/inputmethod/InputMethodManagerService;->lambda$new$0(Lcom/android/server/inputmethod/ClientState;)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->lambda$reportPerceptibleAsync$7(Landroid/os/IBinder;Z)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->lambda$systemRunning$4(I)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->maybeInitImeNavbarConfigLocked(I)V
PLcom/android/server/inputmethod/InputMethodManagerService;->notifyInputMethodSubtypeChangedLocked(ILandroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->onClientRemoved(Lcom/android/server/inputmethod/ClientState;)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->onSessionCreated(Lcom/android/server/inputmethod/IInputMethodInvoker;Lcom/android/internal/inputmethod/IInputMethodSession;Landroid/view/InputChannel;)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->onUnbindCurrentMethodByReset()V
-PLcom/android/server/inputmethod/InputMethodManagerService;->onUnlockUser(I)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->performOnCreateInlineSuggestionsRequestLocked()V
-PLcom/android/server/inputmethod/InputMethodManagerService;->prepareClientSwitchLocked(Lcom/android/server/inputmethod/ClientState;)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->publishLocalService()V
-PLcom/android/server/inputmethod/InputMethodManagerService;->queryInputMethodForCurrentUserLocked(Ljava/lang/String;)Landroid/view/inputmethod/InputMethodInfo;
-PLcom/android/server/inputmethod/InputMethodManagerService;->queryInputMethodServicesInternal(Landroid/content/Context;ILcom/android/server/inputmethod/AdditionalSubtypeMap;I)Lcom/android/server/inputmethod/InputMethodSettings;
-PLcom/android/server/inputmethod/InputMethodManagerService;->reRequestCurrentClientSessionLocked()V
+PLcom/android/server/inputmethod/InputMethodManagerService;->onSecureSettingsChangedLocked(ILjava/lang/String;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->onSessionCreated(Lcom/android/server/inputmethod/IInputMethodInvoker;Lcom/android/internal/inputmethod/IInputMethodSession;Landroid/view/InputChannel;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->onShowHideSoftInputRequested(ZLandroid/os/IBinder;ILandroid/view/inputmethod/ImeTracker$Token;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->onUnbindCurrentMethodByReset(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->onUserReadyLocked(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->postInputMethodSettingUpdatedLocked(IZ)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->queryRawInputMethodServiceMap(Landroid/content/Context;I)Lcom/android/server/inputmethod/RawInputMethodMap;
PLcom/android/server/inputmethod/InputMethodManagerService;->registerDeviceListenerAndCheckStylusSupport()V
-PLcom/android/server/inputmethod/InputMethodManagerService;->removeImeSurfaceFromWindowAsync(Landroid/os/IBinder;)V
PLcom/android/server/inputmethod/InputMethodManagerService;->removeStylusDeviceIdLocked(I)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->reportFullscreenMode(Landroid/os/IBinder;Z)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->reportPerceptibleAsync(Landroid/os/IBinder;Z)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->reportStartInput(Landroid/os/IBinder;Landroid/os/IBinder;)V
PLcom/android/server/inputmethod/InputMethodManagerService;->requestClientSessionForAccessibilityLocked(Lcom/android/server/inputmethod/ClientState;)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->requestClientSessionLocked(Lcom/android/server/inputmethod/ClientState;)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->resetCurrentMethodAndClientLocked(I)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->resetSelectedInputMethodAndSubtypeLocked(Ljava/lang/String;)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->resetSystemUiLocked()V
-PLcom/android/server/inputmethod/InputMethodManagerService;->scheduleNotifyImeUidToAudioService(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->requestClientSessionLocked(Lcom/android/server/inputmethod/ClientState;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->resetDefaultImeLocked(Landroid/content/Context;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->resetSelectedInputMethodAndSubtypeLocked(ILjava/lang/String;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->resolveImeUserIdFromDisplayIdLocked(I)I
+PLcom/android/server/inputmethod/InputMethodManagerService;->resolveImeUserIdFromWindowLocked(Landroid/os/IBinder;)I
PLcom/android/server/inputmethod/InputMethodManagerService;->scheduleResetStylusHandwriting()V
-PLcom/android/server/inputmethod/InputMethodManagerService;->sendOnNavButtonFlagsChangedLocked()V
-PLcom/android/server/inputmethod/InputMethodManagerService;->setCurTokenDisplayIdLocked(I)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->setEnabledSessionForAccessibilityLocked(Landroid/util/SparseArray;)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->setEnabledSessionLocked(Lcom/android/server/inputmethod/InputMethodManagerService$SessionState;)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->setInputMethodEnabledLocked(Ljava/lang/String;Z)Z
-PLcom/android/server/inputmethod/InputMethodManagerService;->setInputMethodLocked(Ljava/lang/String;I)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->setInputMethodLocked(Ljava/lang/String;II)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->setSelectedInputMethodAndSubtypeLocked(Landroid/view/inputmethod/InputMethodInfo;IZ)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->setSelectedMethodIdLocked(Ljava/lang/String;)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->shouldPreventImeStartupLocked(Ljava/lang/String;II)Z
-PLcom/android/server/inputmethod/InputMethodManagerService;->shouldShowImeSwitcherLocked(I)Z
-HPLcom/android/server/inputmethod/InputMethodManagerService;->startInputOrWindowGainedFocus(ILcom/android/internal/inputmethod/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/inputmethod/IRemoteInputConnection;Lcom/android/internal/inputmethod/IRemoteAccessibilityInputConnection;IILandroid/window/ImeOnBackInvokedDispatcher;)Lcom/android/internal/inputmethod/InputBindResult;
-HPLcom/android/server/inputmethod/InputMethodManagerService;->startInputOrWindowGainedFocusInternalLocked(ILcom/android/internal/inputmethod/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/inputmethod/IRemoteInputConnection;Lcom/android/internal/inputmethod/IRemoteAccessibilityInputConnection;IILandroid/window/ImeOnBackInvokedDispatcher;Lcom/android/server/inputmethod/ClientState;)Lcom/android/internal/inputmethod/InputBindResult;
-HPLcom/android/server/inputmethod/InputMethodManagerService;->startInputUncheckedLocked(Lcom/android/server/inputmethod/ClientState;Lcom/android/internal/inputmethod/IRemoteInputConnection;Lcom/android/internal/inputmethod/IRemoteAccessibilityInputConnection;Landroid/view/inputmethod/EditorInfo;IIILandroid/window/ImeOnBackInvokedDispatcher;)Lcom/android/internal/inputmethod/InputBindResult;
-PLcom/android/server/inputmethod/InputMethodManagerService;->systemRunning()V
-PLcom/android/server/inputmethod/InputMethodManagerService;->tryReuseConnectionLocked(Lcom/android/server/inputmethod/ClientState;)Lcom/android/internal/inputmethod/InputBindResult;
-PLcom/android/server/inputmethod/InputMethodManagerService;->unbindCurrentClientLocked(I)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->updateDefaultVoiceImeIfNeededLocked()V
-PLcom/android/server/inputmethod/InputMethodManagerService;->updateFromSettingsLocked(Z)V
-HPLcom/android/server/inputmethod/InputMethodManagerService;->updateInputMethodsFromSettingsLocked(Z)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->updateStatusIcon(Landroid/os/IBinder;Ljava/lang/String;I)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->updateSystemUiLocked()V
-PLcom/android/server/inputmethod/InputMethodManagerService;->updateSystemUiLocked(II)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->sendOnNavButtonFlagsChangedLocked(Lcom/android/server/inputmethod/UserData;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->setImeVisibilityOnFocusedWindowClient(ZLcom/android/server/inputmethod/UserData;Landroid/view/inputmethod/ImeTracker$Token;)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->setInputMethodEnabledLocked(ILjava/lang/String;Z)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->setInputMethodLocked(IIILjava/lang/String;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->setSelectedInputMethodAndSubtypeLocked(Landroid/view/inputmethod/InputMethodInfo;IZI)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->shouldShowImeSwitcherLocked(II)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->showCurrentInputInternal(Landroid/os/IBinder;Landroid/view/inputmethod/ImeTracker$Token;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->showCurrentInputLocked(Landroid/os/IBinder;Landroid/view/inputmethod/ImeTracker$Token;III)Z
+HPLcom/android/server/inputmethod/InputMethodManagerService;->startInputOrWindowGainedFocusInternalLocked(ILandroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/inputmethod/IRemoteInputConnection;Lcom/android/internal/inputmethod/IRemoteAccessibilityInputConnection;ILcom/android/server/inputmethod/InputMethodBindingController;Landroid/window/ImeOnBackInvokedDispatcher;Lcom/android/server/inputmethod/ClientState;)Lcom/android/internal/inputmethod/InputBindResult;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->startInputUncheckedLocked(Lcom/android/server/inputmethod/ClientState;Lcom/android/internal/inputmethod/IRemoteInputConnection;Lcom/android/internal/inputmethod/IRemoteAccessibilityInputConnection;Landroid/view/inputmethod/EditorInfo;IIILandroid/window/ImeOnBackInvokedDispatcher;Lcom/android/server/inputmethod/InputMethodBindingController;)Lcom/android/internal/inputmethod/InputBindResult;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->unbindCurrentClientLocked(II)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->updateInputMethodsFromSettingsLocked(IZ)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->updateSystemUiLocked(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->updateSystemUiLocked(III)V
PLcom/android/server/inputmethod/InputMethodMap;-><clinit>()V
PLcom/android/server/inputmethod/InputMethodMap;-><init>(Landroid/util/ArrayMap;)V
-PLcom/android/server/inputmethod/InputMethodMap;->containsKey(Ljava/lang/String;)Z
-PLcom/android/server/inputmethod/InputMethodMap;->emptyMap()Lcom/android/server/inputmethod/InputMethodMap;
PLcom/android/server/inputmethod/InputMethodMap;->get(Ljava/lang/String;)Landroid/view/inputmethod/InputMethodInfo;
-PLcom/android/server/inputmethod/InputMethodMap;->of(Landroid/util/ArrayMap;)Lcom/android/server/inputmethod/InputMethodMap;
-PLcom/android/server/inputmethod/InputMethodMap;->values()Ljava/util/List;
-PLcom/android/server/inputmethod/InputMethodMenuController;-><clinit>()V
-PLcom/android/server/inputmethod/InputMethodMenuController;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
-PLcom/android/server/inputmethod/InputMethodMenuController;->getSwitchingDialogLocked()Landroid/app/AlertDialog;
-PLcom/android/server/inputmethod/InputMethodMenuController;->hideInputMethodMenuLocked()V
-PLcom/android/server/inputmethod/InputMethodMenuController;->updateKeyboardFromSettingsLocked()V
+PLcom/android/server/inputmethod/InputMethodMenuControllerNew;-><init>()V
+PLcom/android/server/inputmethod/InputMethodMenuControllerNew;->hide(II)V
+PLcom/android/server/inputmethod/InputMethodMenuControllerNew;->isShowing()Z
PLcom/android/server/inputmethod/InputMethodSettings;-><clinit>()V
PLcom/android/server/inputmethod/InputMethodSettings;-><init>(Lcom/android/server/inputmethod/InputMethodMap;I)V
-PLcom/android/server/inputmethod/InputMethodSettings;->addSubtypeToHistory(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/inputmethod/InputMethodSettings;->create(Lcom/android/server/inputmethod/InputMethodMap;I)Lcom/android/server/inputmethod/InputMethodSettings;
-PLcom/android/server/inputmethod/InputMethodSettings;->createEmptyMap(I)Lcom/android/server/inputmethod/InputMethodSettings;
-HPLcom/android/server/inputmethod/InputMethodSettings;->createEnabledInputMethodList(Ljava/util/List;Ljava/util/function/Predicate;)Ljava/util/ArrayList;
-PLcom/android/server/inputmethod/InputMethodSettings;->getDefaultVoiceInputMethod()Ljava/lang/String;
-PLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodList()Ljava/util/ArrayList;
PLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodListWithFilter(Ljava/util/function/Predicate;)Ljava/util/ArrayList;
-HPLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodSubtypeList(Landroid/view/inputmethod/InputMethodInfo;)Ljava/util/List;
-PLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodSubtypeList(Landroid/view/inputmethod/InputMethodInfo;Z)Ljava/util/List;
+HPLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodSubtypeList(Landroid/view/inputmethod/InputMethodInfo;Z)Ljava/util/List;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodsAndSubtypeList()Ljava/util/List;
-PLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodsStr()Ljava/lang/String;
-PLcom/android/server/inputmethod/InputMethodSettings;->getInt(Ljava/lang/String;I)I
-PLcom/android/server/inputmethod/InputMethodSettings;->getMethodList()Ljava/util/List;
-PLcom/android/server/inputmethod/InputMethodSettings;->getMethodMap()Lcom/android/server/inputmethod/InputMethodMap;
PLcom/android/server/inputmethod/InputMethodSettings;->getSelectedInputMethod()Ljava/lang/String;
-PLcom/android/server/inputmethod/InputMethodSettings;->getSelectedInputMethodSubtypeHashCode()I
-PLcom/android/server/inputmethod/InputMethodSettings;->getSelectedInputMethodSubtypeId(Ljava/lang/String;)I
-PLcom/android/server/inputmethod/InputMethodSettings;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/inputmethod/InputMethodSettings;->getSubtypeHistoryStr()Ljava/lang/String;
-PLcom/android/server/inputmethod/InputMethodSettings;->getUserId()I
+PLcom/android/server/inputmethod/InputMethodSettings;->getSelectedInputMethodSubtypeIndex(Ljava/lang/String;)I
PLcom/android/server/inputmethod/InputMethodSettings;->loadInputMethodAndSubtypeHistory()Ljava/util/List;
-PLcom/android/server/inputmethod/InputMethodSettings;->putInt(Ljava/lang/String;I)V
PLcom/android/server/inputmethod/InputMethodSettings;->putSelectedDefaultDeviceInputMethod(Ljava/lang/String;)V
-PLcom/android/server/inputmethod/InputMethodSettings;->putSelectedInputMethod(Ljava/lang/String;)V
-PLcom/android/server/inputmethod/InputMethodSettings;->putSelectedSubtype(I)V
PLcom/android/server/inputmethod/InputMethodSettings;->putString(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/inputmethod/InputMethodSettings;->putSubtypeHistoryStr(Ljava/lang/String;)V
-PLcom/android/server/inputmethod/InputMethodSettings;->saveCurrentInputMethodAndSubtypeToHistory(Ljava/lang/String;Landroid/view/inputmethod/InputMethodSubtype;)V
-PLcom/android/server/inputmethod/InputMethodSettings;->saveSubtypeHistory(Ljava/util/List;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;-><init>(Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$StaticRotationList;)V
-PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;->createFrom(Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;Ljava/util/List;)Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;
-PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;->filterImeSubtypeList(Ljava/util/List;Z)Ljava/util/List;
-PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;->-$$Nest$fgetmImeSubtypeList(Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;)Ljava/util/List;
-PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;-><clinit>()V
-PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;-><init>(Ljava/util/List;)V
-PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;-><init>(Ljava/util/List;Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList-IA;)V
-PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;-><init>(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/view/inputmethod/InputMethodInfo;ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/inputmethod/InputMethodSettingsRepository;-><clinit>()V
+PLcom/android/server/inputmethod/InputMethodSettingsRepository;->get(I)Lcom/android/server/inputmethod/InputMethodSettings;
+PLcom/android/server/inputmethod/InputMethodSettingsRepository;->put(ILcom/android/server/inputmethod/InputMethodSettings;)V
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;-><init>(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/view/inputmethod/InputMethodInfo;ILjava/lang/String;Ljava/lang/String;)V
PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$StaticRotationList;->-$$Nest$fgetmImeSubtypeList(Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$StaticRotationList;)Ljava/util/List;
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;->toString()Ljava/lang/String;
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$RotationList;->-$$Nest$mdump(Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$RotationList;Landroid/util/Printer;Ljava/lang/String;)V
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$RotationList;-><init>(ILjava/util/List;)V
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$RotationList;->getIndex(Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;Z)I
PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$StaticRotationList;-><init>(Ljava/util/List;)V
-PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;-><clinit>()V
-PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;-><init>(Landroid/content/Context;Lcom/android/server/inputmethod/InputMethodMap;I)V
-PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->createInstanceLocked(Landroid/content/Context;Lcom/android/server/inputmethod/InputMethodMap;I)Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;
-HPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->getSortedInputMethodAndSubtypeList(ZZZLandroid/content/Context;Lcom/android/server/inputmethod/InputMethodMap;I)Ljava/util/List;
-PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->getUserId()I
-PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->resetCircularListLocked(Lcom/android/server/inputmethod/InputMethodMap;)V
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->filterImeSubtypeList(Ljava/util/List;Z)Ljava/util/List;
+HPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->getSortedInputMethodAndSubtypeList(ZZZLandroid/content/Context;Lcom/android/server/inputmethod/InputMethodSettings;)Ljava/util/List;
+HPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->resetCircularListLocked(Landroid/content/Context;Lcom/android/server/inputmethod/InputMethodSettings;)V
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->update(Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/inputmethod/InputMethodUtils$$ExternalSyntheticLambda0;-><init>(Landroid/util/ArraySet;)V
PLcom/android/server/inputmethod/InputMethodUtils$$ExternalSyntheticLambda0;-><init>(Ljava/util/ArrayList;)V
PLcom/android/server/inputmethod/InputMethodUtils$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/inputmethod/InputMethodUtils$$ExternalSyntheticLambda1;-><init>(Landroid/util/ArraySet;)V
-PLcom/android/server/inputmethod/InputMethodUtils$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
-PLcom/android/server/inputmethod/InputMethodUtils;->canAddToLastInputMethod(Landroid/view/inputmethod/InputMethodSubtype;)Z
-PLcom/android/server/inputmethod/InputMethodUtils;->checkIfPackageBelongsToUid(Landroid/content/pm/PackageManagerInternal;ILjava/lang/String;)Z
-PLcom/android/server/inputmethod/InputMethodUtils;->concatEnabledImeIds(Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/inputmethod/InputMethodUtils;->convertIdToComponentName(Ljava/lang/String;)Landroid/content/ComponentName;
-PLcom/android/server/inputmethod/InputMethodUtils;->getEnabledInputMethodIdsForFiltering(Landroid/content/Context;I)Ljava/util/List;
-PLcom/android/server/inputmethod/InputMethodUtils;->isSoftInputModeStateVisibleAllowed(II)Z
-PLcom/android/server/inputmethod/InputMethodUtils;->resolveUserId(IILjava/io/PrintWriter;)[I
PLcom/android/server/inputmethod/InputMethodUtils;->setNonSelectedSystemImesDisabledUntilUsed(Landroid/content/pm/PackageManager;Ljava/util/List;)V
PLcom/android/server/inputmethod/InputMethodUtils;->splitEnabledImeStr(Ljava/lang/String;Ljava/util/function/Consumer;)V
-PLcom/android/server/inputmethod/LocaleUtils;->getSystemLocaleFromContext(Landroid/content/Context;)Ljava/util/Locale;
-PLcom/android/server/inputmethod/OverlayableSystemBooleanResourceWrapper$$ExternalSyntheticLambda0;-><init>(Landroid/content/Context;Landroid/content/BroadcastReceiver;)V
-PLcom/android/server/inputmethod/OverlayableSystemBooleanResourceWrapper$1;-><init>(Landroid/content/Context;ILjava/util/concurrent/atomic/AtomicBoolean;Ljava/util/function/Consumer;Lcom/android/server/inputmethod/OverlayableSystemBooleanResourceWrapper;)V
-PLcom/android/server/inputmethod/OverlayableSystemBooleanResourceWrapper;-><init>(ILjava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicReference;)V
-PLcom/android/server/inputmethod/OverlayableSystemBooleanResourceWrapper;->create(Landroid/content/Context;ILandroid/os/Handler;Ljava/util/function/Consumer;)Lcom/android/server/inputmethod/OverlayableSystemBooleanResourceWrapper;
-PLcom/android/server/inputmethod/OverlayableSystemBooleanResourceWrapper;->evaluate(Landroid/content/Context;I)Z
-PLcom/android/server/inputmethod/OverlayableSystemBooleanResourceWrapper;->get()Z
-PLcom/android/server/inputmethod/SecureSettingsWrapper$1;-><init>()V
-PLcom/android/server/inputmethod/SecureSettingsWrapper$2;-><init>(I)V
+PLcom/android/server/inputmethod/RawInputMethodMap;-><clinit>()V
+PLcom/android/server/inputmethod/RawInputMethodMap;-><init>(Landroid/util/ArrayMap;)V
+PLcom/android/server/inputmethod/RawInputMethodMap;->toInputMethodMap(Lcom/android/server/inputmethod/AdditionalSubtypeMap;IZ)Lcom/android/server/inputmethod/InputMethodMap;
+PLcom/android/server/inputmethod/SecureSettingsChangeCallback$1$$ExternalSyntheticLambda0;-><init>(Landroid/util/ArrayMap;Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda1;II)V
+PLcom/android/server/inputmethod/SecureSettingsChangeCallback$1$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/inputmethod/SecureSettingsChangeCallback$1;-><init>(Landroid/os/Handler;Landroid/util/ArrayMap;Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda1;)V
+PLcom/android/server/inputmethod/SecureSettingsChangeCallback$1;->onChange(ZLjava/util/Collection;II)V
PLcom/android/server/inputmethod/SecureSettingsWrapper$LockedUserImpl;-><init>(ILandroid/content/ContentResolver;)V
-PLcom/android/server/inputmethod/SecureSettingsWrapper$LockedUserImpl;->getInt(Ljava/lang/String;I)I
PLcom/android/server/inputmethod/SecureSettingsWrapper$LockedUserImpl;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/inputmethod/SecureSettingsWrapper$LockedUserImpl;->putInt(Ljava/lang/String;I)V
+PLcom/android/server/inputmethod/SecureSettingsWrapper$LockedUserImpl;->putInt(ILjava/lang/String;)V
PLcom/android/server/inputmethod/SecureSettingsWrapper$LockedUserImpl;->putString(Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/inputmethod/SecureSettingsWrapper$UnlockedUserImpl;-><init>(ILandroid/content/ContentResolver;)V
-PLcom/android/server/inputmethod/SecureSettingsWrapper$UnlockedUserImpl;->getInt(Ljava/lang/String;I)I
-HPLcom/android/server/inputmethod/SecureSettingsWrapper$UnlockedUserImpl;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/inputmethod/SecureSettingsWrapper$UnlockedUserImpl;->putInt(Ljava/lang/String;I)V
+PLcom/android/server/inputmethod/SecureSettingsWrapper$UnlockedUserImpl;->getInt(ILjava/lang/String;)I
+PLcom/android/server/inputmethod/SecureSettingsWrapper$UnlockedUserImpl;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/inputmethod/SecureSettingsWrapper$UnlockedUserImpl;->putInt(ILjava/lang/String;)V
PLcom/android/server/inputmethod/SecureSettingsWrapper$UnlockedUserImpl;->putString(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/inputmethod/SecureSettingsWrapper;->-$$Nest$smgetUserIdForClonedSettings(Ljava/lang/String;I)I
PLcom/android/server/inputmethod/SecureSettingsWrapper;-><clinit>()V
-PLcom/android/server/inputmethod/SecureSettingsWrapper;->createImpl(Lcom/android/server/pm/UserManagerInternal;I)Lcom/android/server/inputmethod/SecureSettingsWrapper$ReaderWriter;
-HPLcom/android/server/inputmethod/SecureSettingsWrapper;->get(I)Lcom/android/server/inputmethod/SecureSettingsWrapper$ReaderWriter;
-PLcom/android/server/inputmethod/SecureSettingsWrapper;->getBoolean(Ljava/lang/String;ZI)Z
-PLcom/android/server/inputmethod/SecureSettingsWrapper;->getInt(Ljava/lang/String;II)I
+PLcom/android/server/inputmethod/SecureSettingsWrapper;->get(I)Lcom/android/server/inputmethod/SecureSettingsWrapper$ReaderWriter;
PLcom/android/server/inputmethod/SecureSettingsWrapper;->getString(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
-PLcom/android/server/inputmethod/SecureSettingsWrapper;->getUserIdForClonedSettings(Ljava/lang/String;I)I
-PLcom/android/server/inputmethod/SecureSettingsWrapper;->onStart(Landroid/content/Context;)V
-PLcom/android/server/inputmethod/SecureSettingsWrapper;->onUserStarting(I)V
-PLcom/android/server/inputmethod/SecureSettingsWrapper;->onUserUnlocking(I)V
-PLcom/android/server/inputmethod/SecureSettingsWrapper;->putInt(Ljava/lang/String;II)V
-PLcom/android/server/inputmethod/SecureSettingsWrapper;->putOrGet(ILcom/android/server/inputmethod/SecureSettingsWrapper$ReaderWriter;)Lcom/android/server/inputmethod/SecureSettingsWrapper$ReaderWriter;
-PLcom/android/server/inputmethod/SecureSettingsWrapper;->putString(Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/inputmethod/SubtypeUtils$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/inputmethod/SecureSettingsWrapper;->putOrGet(ILcom/android/server/inputmethod/SecureSettingsWrapper$UnlockedUserImpl;)Lcom/android/server/inputmethod/SecureSettingsWrapper$ReaderWriter;
+PLcom/android/server/inputmethod/SoftInputShowHideHistory$Entry;-><init>(Lcom/android/server/inputmethod/ClientState;Landroid/view/inputmethod/EditorInfo;Ljava/lang/String;IIZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/inputmethod/SoftInputShowHideHistory;-><clinit>()V
+PLcom/android/server/inputmethod/SoftInputShowHideHistory;-><init>()V
+PLcom/android/server/inputmethod/SoftInputShowHideHistory;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/inputmethod/StartInputHistory$Entry;->set(Lcom/android/server/inputmethod/StartInputInfo;)V
+PLcom/android/server/inputmethod/StartInputHistory;-><init>()V
+PLcom/android/server/inputmethod/StartInputHistory;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/inputmethod/StartInputInfo;-><clinit>()V
+HPLcom/android/server/inputmethod/StartInputInfo;-><init>(ILandroid/os/IBinder;ILjava/lang/String;IZIILandroid/os/IBinder;Landroid/view/inputmethod/EditorInfo;II)V
PLcom/android/server/inputmethod/SubtypeUtils;-><clinit>()V
-PLcom/android/server/inputmethod/SubtypeUtils;->getImplicitlyApplicableSubtypes(Landroid/os/LocaleList;Landroid/view/inputmethod/InputMethodInfo;)Ljava/util/ArrayList;
-PLcom/android/server/inputmethod/SubtypeUtils;->getImplicitlyApplicableSubtypesImpl(Landroid/os/LocaleList;Landroid/view/inputmethod/InputMethodInfo;)Ljava/util/ArrayList;
-PLcom/android/server/inputmethod/SubtypeUtils;->getSubtypeIdFromHashCode(Landroid/view/inputmethod/InputMethodInfo;I)I
-PLcom/android/server/inputmethod/SubtypeUtils;->getSubtypes(Landroid/view/inputmethod/InputMethodInfo;)Ljava/util/ArrayList;
-PLcom/android/server/inputmethod/SystemLocaleWrapper$LocaleChangeListener;-><init>(Landroid/content/Context;Lcom/android/server/inputmethod/SystemLocaleWrapper$Callback;)V
+PLcom/android/server/inputmethod/SubtypeUtils;->containsSubtypeOf(Landroid/view/inputmethod/InputMethodInfo;Ljava/util/Locale;ZLjava/lang/String;)Z
+HPLcom/android/server/inputmethod/SubtypeUtils;->getImplicitlyApplicableSubtypes(Landroid/os/LocaleList;Landroid/view/inputmethod/InputMethodInfo;)Ljava/util/ArrayList;
+PLcom/android/server/inputmethod/SubtypeUtils;->getSubtypeIndexFromHashCode(Landroid/view/inputmethod/InputMethodInfo;I)I
+PLcom/android/server/inputmethod/SystemLocaleWrapper$LocaleChangeListener;-><init>(Landroid/content/Context;Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda1;)V
+PLcom/android/server/inputmethod/SystemLocaleWrapper$LocaleChangeListener;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/inputmethod/SystemLocaleWrapper;-><clinit>()V
-PLcom/android/server/inputmethod/SystemLocaleWrapper;->get(I)Landroid/os/LocaleList;
-PLcom/android/server/inputmethod/SystemLocaleWrapper;->onStart(Landroid/content/Context;Lcom/android/server/inputmethod/SystemLocaleWrapper$Callback;Landroid/os/Handler;)V
+PLcom/android/server/inputmethod/SystemLocaleWrapper;->get()Landroid/os/LocaleList;
+PLcom/android/server/inputmethod/UserData;-><init>(ILcom/android/server/inputmethod/InputMethodBindingController;Lcom/android/server/inputmethod/ImeVisibilityStateComputer;)V
+PLcom/android/server/inputmethod/UserDataRepository;-><init>(Ljava/util/function/IntFunction;Lcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda4;)V
+PLcom/android/server/inputmethod/UserDataRepository;->forAllUserData(Ljava/util/function/Consumer;)V
+PLcom/android/server/inputmethod/ZeroJankProxy$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/inputmethod/ZeroJankProxy;Lcom/android/internal/inputmethod/IInputMethodClient;Lcom/android/internal/inputmethod/IRemoteInputConnection;I)V
+PLcom/android/server/inputmethod/ZeroJankProxy$$ExternalSyntheticLambda12;->runOrThrow()V
+PLcom/android/server/inputmethod/ZeroJankProxy$$ExternalSyntheticLambda13;-><init>(Ljava/lang/Runnable;J)V
+HPLcom/android/server/inputmethod/ZeroJankProxy$$ExternalSyntheticLambda13;->run()V
+HPLcom/android/server/inputmethod/ZeroJankProxy$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/inputmethod/ZeroJankProxy;ILcom/android/internal/inputmethod/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/inputmethod/IRemoteInputConnection;Lcom/android/internal/inputmethod/IRemoteAccessibilityInputConnection;IILandroid/window/ImeOnBackInvokedDispatcher;I)V
+HPLcom/android/server/inputmethod/ZeroJankProxy$$ExternalSyntheticLambda8;->runOrThrow()V
+PLcom/android/server/inputmethod/ZeroJankProxy;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda184;Lcom/android/server/inputmethod/InputMethodManagerService;)V
+HPLcom/android/server/inputmethod/ZeroJankProxy;->offloadInner(Ljava/lang/Runnable;)V
PLcom/android/server/integrity/AppIntegrityManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/integrity/AppIntegrityManagerService;->onStart()V
-PLcom/android/server/integrity/AppIntegrityManagerServiceImpl$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/integrity/AppIntegrityManagerServiceImpl$1;-><init>(Lcom/android/server/integrity/AppIntegrityManagerServiceImpl;)V
-PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;-><clinit>()V
-PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;-><init>(Landroid/content/Context;Landroid/content/pm/PackageManagerInternal;Ljava/util/function/Supplier;Lcom/android/server/integrity/engine/RuleEvaluationEngine;Lcom/android/server/integrity/IntegrityFileManager;Landroid/os/Handler;)V
-PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->create(Landroid/content/Context;)Lcom/android/server/integrity/AppIntegrityManagerServiceImpl;
-PLcom/android/server/integrity/IntegrityFileManager;-><clinit>()V
-PLcom/android/server/integrity/IntegrityFileManager;-><init>()V
-PLcom/android/server/integrity/IntegrityFileManager;-><init>(Lcom/android/server/integrity/parser/RuleParser;Lcom/android/server/integrity/serializer/RuleSerializer;Ljava/io/File;)V
-PLcom/android/server/integrity/IntegrityFileManager;->getInstance()Lcom/android/server/integrity/IntegrityFileManager;
-PLcom/android/server/integrity/IntegrityFileManager;->updateRuleIndexingController()V
-PLcom/android/server/integrity/engine/RuleEvaluationEngine;-><init>(Lcom/android/server/integrity/IntegrityFileManager;)V
-PLcom/android/server/integrity/engine/RuleEvaluationEngine;->getRuleEvaluationEngine()Lcom/android/server/integrity/engine/RuleEvaluationEngine;
-PLcom/android/server/integrity/parser/RuleBinaryParser;-><init>()V
-PLcom/android/server/integrity/serializer/RuleBinarySerializer;-><init>()V
-PLcom/android/server/job/FeatureFlagsImpl;-><clinit>()V
-PLcom/android/server/job/FeatureFlagsImpl;-><init>()V
-PLcom/android/server/job/FeatureFlagsImpl;->batchActiveBucketJobs()Z
-PLcom/android/server/job/FeatureFlagsImpl;->batchConnectivityJobsPerNetwork()Z
-PLcom/android/server/job/FeatureFlagsImpl;->doNotForceRushExecutionAtBoot()Z
-PLcom/android/server/job/FeatureFlagsImpl;->load_overrides_backstage_power()V
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;-><init>(Landroid/content/Context;Landroid/content/pm/PackageManagerInternal;Landroid/os/Handler;)V
+PLcom/android/server/job/FeatureFlagsImpl;->init()V
PLcom/android/server/job/Flags;-><clinit>()V
+PLcom/android/server/job/Flags;->adjustQuotaDefaultConstants()Z
PLcom/android/server/job/Flags;->batchActiveBucketJobs()Z
PLcom/android/server/job/Flags;->batchConnectivityJobsPerNetwork()Z
-PLcom/android/server/job/GrantedUriPermissions;->checkGrantFlags(I)Z
-PLcom/android/server/job/JobConcurrencyManager$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/job/JobConcurrencyManager$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/job/Flags;->countQuotaFix()Z
+PLcom/android/server/job/Flags;->createWorkChainByDefault()Z
+PLcom/android/server/job/Flags;->doNotForceRushExecutionAtBoot()Z
+HPLcom/android/server/job/Flags;->enforceQuotaPolicyToFgsJobs()Z
+HPLcom/android/server/job/Flags;->enforceQuotaPolicyToTopStartedJobs()Z
+PLcom/android/server/job/Flags;->relaxPrefetchConnectivityConstraintOnlyOnCharger()Z
+PLcom/android/server/job/Flags;->thermalRestrictionsToFgsJobs()Z
+HPLcom/android/server/job/Flags;->useCorrectProcessStateForLogging()Z
+HPLcom/android/server/job/JobConcurrencyManager$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
PLcom/android/server/job/JobConcurrencyManager$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/job/JobConcurrencyManager;)V
-PLcom/android/server/job/JobConcurrencyManager$$ExternalSyntheticLambda2;-><init>()V
-PLcom/android/server/job/JobConcurrencyManager$$ExternalSyntheticLambda2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/job/JobConcurrencyManager$$ExternalSyntheticLambda1;->run()V
+HPLcom/android/server/job/JobConcurrencyManager$$ExternalSyntheticLambda2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/job/JobConcurrencyManager$$ExternalSyntheticLambda3;-><init>(Landroid/util/IndentingPrintWriter;)V
PLcom/android/server/job/JobConcurrencyManager$1;-><init>(Lcom/android/server/job/JobConcurrencyManager;)V
+HPLcom/android/server/job/JobConcurrencyManager$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/job/JobConcurrencyManager$AssignmentInfo;-><init>()V
-HPLcom/android/server/job/JobConcurrencyManager$AssignmentInfo;->clear()V
PLcom/android/server/job/JobConcurrencyManager$ContextAssignment;-><init>()V
HPLcom/android/server/job/JobConcurrencyManager$ContextAssignment;->clear()V
PLcom/android/server/job/JobConcurrencyManager$GracePeriodObserver;-><init>(Landroid/content/Context;)V
PLcom/android/server/job/JobConcurrencyManager$Injector;-><init>()V
-PLcom/android/server/job/JobConcurrencyManager$Injector;->createJobServiceContext(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobNotificationCoordinator;Lcom/android/internal/app/IBatteryStats;Lcom/android/server/job/JobPackageTracker;Landroid/os/Looper;)Lcom/android/server/job/JobServiceContext;
-PLcom/android/server/job/JobConcurrencyManager$PackageStats;->-$$Nest$madjustRunningCount(Lcom/android/server/job/JobConcurrencyManager$PackageStats;ZZ)V
-PLcom/android/server/job/JobConcurrencyManager$PackageStats;->-$$Nest$madjustStagedCount(Lcom/android/server/job/JobConcurrencyManager$PackageStats;ZZ)V
-PLcom/android/server/job/JobConcurrencyManager$PackageStats;->-$$Nest$mresetStagedCount(Lcom/android/server/job/JobConcurrencyManager$PackageStats;)V
-PLcom/android/server/job/JobConcurrencyManager$PackageStats;->-$$Nest$msetPackage(Lcom/android/server/job/JobConcurrencyManager$PackageStats;ILjava/lang/String;)V
+HPLcom/android/server/job/JobConcurrencyManager$PackageStats;->-$$Nest$madjustRunningCount(Lcom/android/server/job/JobConcurrencyManager$PackageStats;ZZ)V
+HPLcom/android/server/job/JobConcurrencyManager$PackageStats;->-$$Nest$madjustStagedCount(Lcom/android/server/job/JobConcurrencyManager$PackageStats;ZZ)V
PLcom/android/server/job/JobConcurrencyManager$PackageStats;-><init>()V
-HPLcom/android/server/job/JobConcurrencyManager$PackageStats;->adjustRunningCount(ZZ)V
-HPLcom/android/server/job/JobConcurrencyManager$PackageStats;->adjustStagedCount(ZZ)V
-HPLcom/android/server/job/JobConcurrencyManager$PackageStats;->resetStagedCount()V
-HPLcom/android/server/job/JobConcurrencyManager$PackageStats;->setPackage(ILjava/lang/String;)V
PLcom/android/server/job/JobConcurrencyManager$WorkConfigLimitsPerMemoryTrimLevel;-><init>(Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;)V
PLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;-><init>()V
-HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->adjustPendingJobCount(IZ)I
-HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->canJobStart(I)I
-PLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->decrementPendingJobCount(I)V
-HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->getRunningJobCount(I)I
-PLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->incrementPendingJobCount(I)V
-HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->incrementRunningJobCount(I)V
-HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->maybeAdjustReservations(I)V
-HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->onCountDone()V
-HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->onJobFinished(I)V
-HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->onJobStarted(I)V
-HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->resetCounts()V
-HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->resetStagingCount()V
-HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->setConfig(Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;)V
+HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->adjustPendingJobCount(IZ)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->canJobStart(I)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+PLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->getPendingJobCount(I)I
+HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->maybeAdjustReservations(I)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->stageJob(II)V
-HPLcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;-><init>(Ljava/lang/String;IILjava/util/List;Ljava/util/List;)V
-PLcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;->getMax(I)I
-PLcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;->getMaxTotal()I
+PLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->toString()Ljava/lang/String;
+PLcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;-><init>(Ljava/lang/String;IILjava/util/List;Ljava/util/List;)V
+PLcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;->dump(Landroid/util/IndentingPrintWriter;)V
PLcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;->getMaxValue(Landroid/provider/DeviceConfig$Properties;Ljava/lang/String;II)I
-PLcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;->getMinReserved(I)I
PLcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;->getMinValue(Landroid/provider/DeviceConfig$Properties;Ljava/lang/String;III)I
-HPLcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;->update(Landroid/provider/DeviceConfig$Properties;I)V
-PLcom/android/server/job/JobConcurrencyManager;->$r8$lambda$VhD--0a_vmTAP5SEQ54BuaJ_sSE(Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;)I
-PLcom/android/server/job/JobConcurrencyManager;->$r8$lambda$nNxi-L4_H0efU9cBGIS9vGrT-zc(Lcom/android/server/job/JobConcurrencyManager$PackageStats;)V
-HPLcom/android/server/job/JobConcurrencyManager;-><clinit>()V
-PLcom/android/server/job/JobConcurrencyManager;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-HPLcom/android/server/job/JobConcurrencyManager;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobConcurrencyManager$Injector;)V
-HPLcom/android/server/job/JobConcurrencyManager;->assignJobsToContextsInternalLocked()V
-HPLcom/android/server/job/JobConcurrencyManager;->assignJobsToContextsLocked()V
-HPLcom/android/server/job/JobConcurrencyManager;->carryOutAssignmentChangesLocked(Landroid/util/ArraySet;)V
-HPLcom/android/server/job/JobConcurrencyManager;->cleanUpAfterAssignmentChangesLocked(Landroid/util/ArraySet;Landroid/util/ArraySet;Ljava/util/List;Ljava/util/List;Lcom/android/server/job/JobConcurrencyManager$AssignmentInfo;Landroid/util/SparseIntArray;)V
-HPLcom/android/server/job/JobConcurrencyManager;->determineAssignmentsLocked(Landroid/util/ArraySet;Landroid/util/ArraySet;Ljava/util/List;Ljava/util/List;Lcom/android/server/job/JobConcurrencyManager$AssignmentInfo;)V
-HPLcom/android/server/job/JobConcurrencyManager;->getJobWorkTypes(Lcom/android/server/job/controllers/JobStatus;)I
-HPLcom/android/server/job/JobConcurrencyManager;->getPkgStatsLocked(ILjava/lang/String;)Lcom/android/server/job/JobConcurrencyManager$PackageStats;
-HPLcom/android/server/job/JobConcurrencyManager;->getRunningJobsLocked()Landroid/util/ArraySet;
+PLcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;->update(Landroid/provider/DeviceConfig$Properties;I)V
+PLcom/android/server/job/JobConcurrencyManager;->-$$Nest$mstopOvertimeJobsLocked(Lcom/android/server/job/JobConcurrencyManager;Ljava/lang/String;)V
+PLcom/android/server/job/JobConcurrencyManager;-><clinit>()V
+PLcom/android/server/job/JobConcurrencyManager;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobConcurrencyManager$Injector;)V
+HPLcom/android/server/job/JobConcurrencyManager;->assignJobsToContextsLocked()V+]Landroid/util/Pools$SimplePool;Landroid/util/Pools$SimplePool;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/job/JobConcurrencyManager;->createNewJobServiceContext()Lcom/android/server/job/JobServiceContext;
+HPLcom/android/server/job/JobConcurrencyManager;->determineAssignmentsLocked(Landroid/util/ArraySet;Landroid/util/ArraySet;Ljava/util/List;Ljava/util/List;Lcom/android/server/job/JobConcurrencyManager$AssignmentInfo;)V+]Landroid/util/Pools$SimplePool;Landroid/util/Pools$SimplePool;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/job/JobConcurrencyManager;->dumpContextInfoLocked(Landroid/util/IndentingPrintWriter;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda5;JJ)V
+PLcom/android/server/job/JobConcurrencyManager;->dumpLocked(Landroid/util/IndentingPrintWriter;JJ)V
+HPLcom/android/server/job/JobConcurrencyManager;->getJobWorkTypes(Lcom/android/server/job/controllers/JobStatus;)I+]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;
+HPLcom/android/server/job/JobConcurrencyManager;->getPkgStatsLocked(ILjava/lang/String;)Lcom/android/server/job/JobConcurrencyManager$PackageStats;+]Landroid/util/Pools$SimplePool;Landroid/util/Pools$SimplePool;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;
+PLcom/android/server/job/JobConcurrencyManager;->getRunningJobServiceContextLocked(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/JobServiceContext;
HPLcom/android/server/job/JobConcurrencyManager;->hasImmediacyPrivilegeLocked(Lcom/android/server/job/controllers/JobStatus;Landroid/util/SparseIntArray;)Z
-HPLcom/android/server/job/JobConcurrencyManager;->isJobRunningLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/JobConcurrencyManager;->isNotificationAssociatedWithAnyUserInitiatedJobs(IILjava/lang/String;)Z
-PLcom/android/server/job/JobConcurrencyManager;->isNotificationChannelAssociatedWithAnyUserInitiatedJobs(Ljava/lang/String;ILjava/lang/String;)Z
HPLcom/android/server/job/JobConcurrencyManager;->isPkgConcurrencyLimitedLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-HPLcom/android/server/job/JobConcurrencyManager;->lambda$static$0(Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;)I
HPLcom/android/server/job/JobConcurrencyManager;->noteConcurrency(Z)V
-PLcom/android/server/job/JobConcurrencyManager;->onInteractiveStateChanged(Z)V
-HPLcom/android/server/job/JobConcurrencyManager;->onJobCompletedLocked(Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/controllers/JobStatus;I)V
-PLcom/android/server/job/JobConcurrencyManager;->onSystemReady()V
+HPLcom/android/server/job/JobConcurrencyManager;->onInteractiveStateChanged(Z)V
PLcom/android/server/job/JobConcurrencyManager;->onThirdPartyAppsCanStart()V
-PLcom/android/server/job/JobConcurrencyManager;->onUidBiasChangedLocked(II)V
-HPLcom/android/server/job/JobConcurrencyManager;->prepareForAssignmentDeterminationLocked(Landroid/util/ArraySet;Ljava/util/List;Ljava/util/List;Lcom/android/server/job/JobConcurrencyManager$AssignmentInfo;)V
-HPLcom/android/server/job/JobConcurrencyManager;->refreshSystemStateLocked()Z
-HPLcom/android/server/job/JobConcurrencyManager;->shouldRunAsFgUserJob(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/JobConcurrencyManager;->shouldStopRunningJobLocked(Lcom/android/server/job/JobServiceContext;)Ljava/lang/String;
-HPLcom/android/server/job/JobConcurrencyManager;->startJobLocked(Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/controllers/JobStatus;I)V
-PLcom/android/server/job/JobConcurrencyManager;->stopJobOnServiceContextLocked(Lcom/android/server/job/controllers/JobStatus;IILjava/lang/String;)Z
-PLcom/android/server/job/JobConcurrencyManager;->stopNonReadyActiveJobsLocked()V
-HPLcom/android/server/job/JobConcurrencyManager;->updateCounterConfigLocked()V
+HPLcom/android/server/job/JobConcurrencyManager;->prepareForAssignmentDeterminationLocked(Landroid/util/ArraySet;Ljava/util/List;Ljava/util/List;Lcom/android/server/job/JobConcurrencyManager$AssignmentInfo;)V+]Landroid/util/Pools$SimplePool;Landroid/util/Pools$SimplePool;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/job/JobConcurrencyManager;->shouldRunAsFgUserJob(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobConcurrencyManager;->shouldStopRunningJobLocked(Lcom/android/server/job/JobServiceContext;)Ljava/lang/String;
+HPLcom/android/server/job/JobConcurrencyManager;->startJobLocked(ILcom/android/server/job/JobServiceContext;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/job/JobConcurrencyManager;->stopJobOnServiceContextLocked(Lcom/android/server/job/controllers/JobStatus;IILjava/lang/String;)Z
+HPLcom/android/server/job/JobConcurrencyManager;->updateCounterConfigLocked()V+]Landroid/app/IActivityManager;Lcom/android/server/am/ActivityManagerService;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/internal/util/jobs/StatLogger;Lcom/android/internal/util/jobs/StatLogger;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$1;
HPLcom/android/server/job/JobConcurrencyManager;->updateNonRunningPrioritiesLocked(Lcom/android/server/job/PendingJobQueue;Z)V
PLcom/android/server/job/JobNotificationCoordinator;-><init>()V
-PLcom/android/server/job/JobNotificationCoordinator;->isNotificationAssociatedWithAnyUserInitiatedJobs(IILjava/lang/String;)Z
-PLcom/android/server/job/JobNotificationCoordinator;->isNotificationChannelAssociatedWithAnyUserInitiatedJobs(Ljava/lang/String;ILjava/lang/String;)Z
-HPLcom/android/server/job/JobNotificationCoordinator;->removeNotificationAssociation(Lcom/android/server/job/JobServiceContext;ILcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobNotificationCoordinator;->removeNotificationAssociation(ILcom/android/server/job/JobServiceContext;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/JobPackageTracker$DataSet;-><init>()V
-HPLcom/android/server/job/JobPackageTracker$DataSet;->decActive(ILjava/lang/String;JI)V
-HPLcom/android/server/job/JobPackageTracker$DataSet;->decPending(ILjava/lang/String;J)V
-HPLcom/android/server/job/JobPackageTracker$DataSet;->getEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry;
-HPLcom/android/server/job/JobPackageTracker$DataSet;->getOrCreateEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry;
-HPLcom/android/server/job/JobPackageTracker$DataSet;->getTotalTime(J)J
-HPLcom/android/server/job/JobPackageTracker$DataSet;->incActive(ILjava/lang/String;J)V
-HPLcom/android/server/job/JobPackageTracker$DataSet;->incPending(ILjava/lang/String;J)V
+PLcom/android/server/job/JobPackageTracker$DataSet;-><init>(Lcom/android/server/job/JobPackageTracker$DataSet;)V
+PLcom/android/server/job/JobPackageTracker$DataSet;->addTo(Lcom/android/server/job/JobPackageTracker$DataSet;J)V
+PLcom/android/server/job/JobPackageTracker$DataSet;->dump(IJJLandroid/util/IndentingPrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/job/JobPackageTracker$DataSet;->getOrCreateEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/job/JobPackageTracker$DataSet;->getTotalTime(J)J
+PLcom/android/server/job/JobPackageTracker$DataSet;->printDuration(IJJLandroid/util/IndentingPrintWriter;Ljava/lang/String;)Z
PLcom/android/server/job/JobPackageTracker$PackageEntry;-><init>()V
-HPLcom/android/server/job/JobPackageTracker$PackageEntry;->getActiveTime(J)J
-HPLcom/android/server/job/JobPackageTracker$PackageEntry;->getPendingTime(J)J
+PLcom/android/server/job/JobPackageTracker$PackageEntry;->getActiveTime(J)J
+PLcom/android/server/job/JobPackageTracker$PackageEntry;->getPendingTime(J)J
PLcom/android/server/job/JobPackageTracker;-><init>()V
-HPLcom/android/server/job/JobPackageTracker;->addEvent(IILjava/lang/String;IILjava/lang/String;)V
-HPLcom/android/server/job/JobPackageTracker;->getLoadFactor(Lcom/android/server/job/controllers/JobStatus;)F
+HPLcom/android/server/job/JobPackageTracker;->addEvent(IILjava/lang/String;Ljava/lang/String;II)V
+PLcom/android/server/job/JobPackageTracker;->dump(Landroid/util/IndentingPrintWriter;I)V
+PLcom/android/server/job/JobPackageTracker;->dumpHistory(Landroid/util/IndentingPrintWriter;I)Z
HPLcom/android/server/job/JobPackageTracker;->noteActive(Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/JobPackageTracker;->noteConcurrency(II)V
-HPLcom/android/server/job/JobPackageTracker;->noteInactive(Lcom/android/server/job/controllers/JobStatus;ILjava/lang/String;)V
HPLcom/android/server/job/JobPackageTracker;->noteNonpending(Lcom/android/server/job/controllers/JobStatus;)V
HPLcom/android/server/job/JobPackageTracker;->notePending(Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/JobPackageTracker;->rebatchIfNeeded(J)V
-PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+HPLcom/android/server/job/JobPackageTracker;->rebatchIfNeeded(J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/JobSchedulerService;I)V
PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/job/JobSchedulerService;I)V
HPLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
-PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/job/JobSchedulerService;I)V
+PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda3;->run()V
PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-HPLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda4;->getCategory(ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/utils/quota/Category;
-PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda6;->run()V
-PLcom/android/server/job/JobSchedulerService$1;-><init>(Ljava/time/ZoneId;)V
+HPLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda4;->getCategory(Ljava/lang/String;)Lcom/android/server/utils/quota/Category;
+PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda5;-><init>(II)V
+PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda5;->test(Ljava/lang/Object;)Z
+PLcom/android/server/job/JobSchedulerService$1;-><init>(Ljava/time/ZoneId;I)V
HPLcom/android/server/job/JobSchedulerService$1;->millis()J
-PLcom/android/server/job/JobSchedulerService$2;-><init>(Ljava/time/ZoneId;)V
-HPLcom/android/server/job/JobSchedulerService$2;->millis()J
-PLcom/android/server/job/JobSchedulerService$3;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService$3;-><init>(ILjava/lang/Object;)V
PLcom/android/server/job/JobSchedulerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/job/JobSchedulerService$4;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-HPLcom/android/server/job/JobSchedulerService$4;->onUidActive(I)V
-HPLcom/android/server/job/JobSchedulerService$4;->onUidGone(IZ)V
-HPLcom/android/server/job/JobSchedulerService$4;->onUidIdle(IZ)V
+PLcom/android/server/job/JobSchedulerService$4;->onUidActive(I)V
+PLcom/android/server/job/JobSchedulerService$4;->onUidGone(IZ)V
+PLcom/android/server/job/JobSchedulerService$4;->onUidIdle(IZ)V
HPLcom/android/server/job/JobSchedulerService$4;->onUidStateChanged(IIJI)V
-PLcom/android/server/job/JobSchedulerService$5;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService$6;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
PLcom/android/server/job/JobSchedulerService$BatteryStateTracker;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-PLcom/android/server/job/JobSchedulerService$BatteryStateTracker;->isBatteryNotLow()Z
-HPLcom/android/server/job/JobSchedulerService$BatteryStateTracker;->isCharging()Z
HPLcom/android/server/job/JobSchedulerService$BatteryStateTracker;->isConsideredCharging()Z
-PLcom/android/server/job/JobSchedulerService$BatteryStateTracker;->isPowerConnected()Z
PLcom/android/server/job/JobSchedulerService$BatteryStateTracker;->onChargingPolicyChanged(I)V
PLcom/android/server/job/JobSchedulerService$BatteryStateTracker;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/job/JobSchedulerService$BatteryStateTracker;->onReceiveInternal(Landroid/content/Intent;)V
-PLcom/android/server/job/JobSchedulerService$BatteryStateTracker;->startTracking()V
+HPLcom/android/server/job/JobSchedulerService$BatteryStateTracker;->onReceiveInternal(Landroid/content/Intent;)V
PLcom/android/server/job/JobSchedulerService$CloudProviderChangeListener;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-PLcom/android/server/job/JobSchedulerService$CloudProviderChangeListener;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService$CloudProviderChangeListener-IA;)V
-PLcom/android/server/job/JobSchedulerService$Constants;->-$$Nest$mupdateTareSettingsLocked(Lcom/android/server/job/JobSchedulerService$Constants;I)Z
+PLcom/android/server/job/JobSchedulerService$Constants$$ExternalSyntheticOutline0;->m(ILandroid/util/IndentingPrintWriter;Ljava/lang/String;)V
+PLcom/android/server/job/JobSchedulerService$Constants$$ExternalSyntheticOutline0;->m(JLandroid/util/IndentingPrintWriter;Ljava/lang/String;)V
PLcom/android/server/job/JobSchedulerService$Constants;-><clinit>()V
-PLcom/android/server/job/JobSchedulerService$Constants;-><init>()V
PLcom/android/server/job/JobSchedulerService$Constants;->copyTransportBatchThresholdDefaults()V
-PLcom/android/server/job/JobSchedulerService$Constants;->updateTareSettingsLocked(I)Z
+PLcom/android/server/job/JobSchedulerService$Constants;->dump(Landroid/util/IndentingPrintWriter;)V
PLcom/android/server/job/JobSchedulerService$ConstantsObserver;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-PLcom/android/server/job/JobSchedulerService$ConstantsObserver;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService$ConstantsObserver-IA;)V
PLcom/android/server/job/JobSchedulerService$ConstantsObserver;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
-PLcom/android/server/job/JobSchedulerService$ConstantsObserver;->onTareEnabledModeChanged(I)V
-PLcom/android/server/job/JobSchedulerService$ConstantsObserver;->start()V
-PLcom/android/server/job/JobSchedulerService$DeferredJobCounter;-><init>()V
-PLcom/android/server/job/JobSchedulerService$DeferredJobCounter;->numDeferred()I
+PLcom/android/server/job/JobSchedulerService$DeferredJobCounter;->accept(Ljava/lang/Object;)V
PLcom/android/server/job/JobSchedulerService$JobHandler;-><init>(Lcom/android/server/job/JobSchedulerService;Landroid/os/Looper;)V
-HPLcom/android/server/job/JobSchedulerService$JobHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/job/JobSchedulerService$JobHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->canPersistJobs(II)Z
HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->cancel(Ljava/lang/String;I)V
PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->cancelAllInNamespace(Ljava/lang/String;)V
-HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enforceBuilderApiPermissions(IILandroid/app/job/JobInfo;)Landroid/app/job/JobInfo;
+PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enforceBuilderApiPermissions(IILandroid/app/job/JobInfo;)Landroid/app/job/JobInfo;
HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enforceValidJobRequest(IILandroid/app/job/JobInfo;)V
-HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enqueue(Ljava/lang/String;Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I
+PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enqueue(Ljava/lang/String;Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I
HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->getAllPendingJobsInNamespace(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;
-HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->getPendingJob(Ljava/lang/String;I)Landroid/app/job/JobInfo;
+PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->getPendingJob(Ljava/lang/String;I)Landroid/app/job/JobInfo;
HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->schedule(Ljava/lang/String;Landroid/app/job/JobInfo;)I
+PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->scheduleAsPackage(Ljava/lang/String;Landroid/app/job/JobInfo;Ljava/lang/String;ILjava/lang/String;)I
HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->validateJob(Landroid/app/job/JobInfo;IIILjava/lang/String;Landroid/app/job/JobWorkItem;)I
HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->validateNamespace(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/job/JobSchedulerService$LocalService;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService$LocalService;->addBackingUpUid(I)V
PLcom/android/server/job/JobSchedulerService$LocalService;->getPersistStats()Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;
+PLcom/android/server/job/JobSchedulerService$LocalService;->getSystemScheduledOwnJobs(Ljava/lang/String;)Ljava/util/List;
HPLcom/android/server/job/JobSchedulerService$LocalService;->isAppConsideredBuggy(ILjava/lang/String;ILjava/lang/String;)Z
-PLcom/android/server/job/JobSchedulerService$LocalService;->isNotificationAssociatedWithAnyUserInitiatedJobs(IILjava/lang/String;)Z
-PLcom/android/server/job/JobSchedulerService$LocalService;->isNotificationChannelAssociatedWithAnyUserInitiatedJobs(Ljava/lang/String;ILjava/lang/String;)Z
-PLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-PLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/job/JobSchedulerService$LocalService;->isNotificationAssociatedWithAnyUserInitiatedJobs(IILjava/lang/String;)Z
+HPLcom/android/server/job/JobSchedulerService$LocalService;->isNotificationChannelAssociatedWithAnyUserInitiatedJobs(Ljava/lang/String;ILjava/lang/String;)Z
+PLcom/android/server/job/JobSchedulerService$LocalService;->removeBackingUpUid(I)V
PLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-HPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->accept(Ljava/lang/Object;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->postProcessLocked()V
HPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->reset()V
PLcom/android/server/job/JobSchedulerService$MySimpleClock;-><init>(Ljava/time/ZoneId;)V
-PLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->-$$Nest$mpostProcessLocked(Lcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;)V
PLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-HPLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->accept(Ljava/lang/Object;)V
-PLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->postProcessLocked()V
+HPLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->accept(Ljava/lang/Object;)V+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
PLcom/android/server/job/JobSchedulerService$StandbyTracker;-><init>(Lcom/android/server/job/JobSchedulerService;)V
PLcom/android/server/job/JobSchedulerService$StandbyTracker;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
PLcom/android/server/job/JobSchedulerService$StandbyTracker;->onUserInteractionStarted(Ljava/lang/String;I)V
-HPLcom/android/server/job/JobSchedulerService;->$r8$lambda$Q16HuucOPC3Nu2dDmrkdR058M08(Lcom/android/server/job/JobSchedulerService;ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/utils/quota/Category;
-PLcom/android/server/job/JobSchedulerService;->$r8$lambda$Ulq0lH6hWnerIiBupp3Llq6NoQA(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/JobSchedulerService;->$r8$lambda$_qsiROTbT1bHvhwbOpkod1sMBXE(Lcom/android/server/job/JobSchedulerService;)V
-PLcom/android/server/job/JobSchedulerService;->$r8$lambda$kFq7qP-VcLL1Ltl-JO7FUKK_Zis(Lcom/android/server/job/JobSchedulerService;I)Z
-PLcom/android/server/job/JobSchedulerService;->-$$Nest$fgetmChangedJobList(Lcom/android/server/job/JobSchedulerService;)Landroid/util/ArraySet;
-HPLcom/android/server/job/JobSchedulerService;->-$$Nest$fgetmDeviceIdleJobsController(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/DeviceIdleJobsController;
-HPLcom/android/server/job/JobSchedulerService;->-$$Nest$fgetmPendingJobQueue(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/PendingJobQueue;
-HPLcom/android/server/job/JobSchedulerService;->-$$Nest$fgetmQuotaTracker(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/utils/quota/CountQuotaTracker;
-PLcom/android/server/job/JobSchedulerService;->-$$Nest$mcancelJob(Lcom/android/server/job/JobSchedulerService;ILjava/lang/String;III)Z
-PLcom/android/server/job/JobSchedulerService;->-$$Nest$mcancelJobsForPackageAndUidLocked(Lcom/android/server/job/JobSchedulerService;Ljava/lang/String;IZZIILjava/lang/String;)V
-PLcom/android/server/job/JobSchedulerService;->-$$Nest$mcancelJobsForUid(Lcom/android/server/job/JobSchedulerService;IZZLjava/lang/String;IILjava/lang/String;)Z
-PLcom/android/server/job/JobSchedulerService;->-$$Nest$mcheckChangedJobListLocked(Lcom/android/server/job/JobSchedulerService;)V
-PLcom/android/server/job/JobSchedulerService;->-$$Nest$mgetPendingJob(Lcom/android/server/job/JobSchedulerService;ILjava/lang/String;I)Landroid/app/job/JobInfo;
-PLcom/android/server/job/JobSchedulerService;->-$$Nest$mgetPendingJobsInNamespace(Lcom/android/server/job/JobSchedulerService;ILjava/lang/String;)Ljava/util/List;
-PLcom/android/server/job/JobSchedulerService;->-$$Nest$mhasPermission(Lcom/android/server/job/JobSchedulerService;IILjava/lang/String;)Z
+PLcom/android/server/job/JobSchedulerService;->-$$Nest$mcancelJobsForPackageAndUidLocked(Lcom/android/server/job/JobSchedulerService;Ljava/lang/String;IZILjava/lang/String;)V
+HPLcom/android/server/job/JobSchedulerService;->-$$Nest$mgetPendingJob(IILcom/android/server/job/JobSchedulerService;Ljava/lang/String;)Landroid/app/job/JobInfo;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
+HPLcom/android/server/job/JobSchedulerService;->-$$Nest$mgetPendingJobsInNamespace(Lcom/android/server/job/JobSchedulerService;ILjava/lang/String;)Ljava/util/List;
+HPLcom/android/server/job/JobSchedulerService;->-$$Nest$mhasPermission(IILcom/android/server/job/JobSchedulerService;Ljava/lang/String;)Z
PLcom/android/server/job/JobSchedulerService;->-$$Nest$mmaybeQueueReadyJobsForExecutionLocked(Lcom/android/server/job/JobSchedulerService;)V
-PLcom/android/server/job/JobSchedulerService;->-$$Nest$mqueueReadyJobsForExecutionLocked(Lcom/android/server/job/JobSchedulerService;)V
-HPLcom/android/server/job/JobSchedulerService;-><clinit>()V
-HPLcom/android/server/job/JobSchedulerService;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/job/JobSchedulerService;->adjustJobBias(ILcom/android/server/job/controllers/JobStatus;)I
-HPLcom/android/server/job/JobSchedulerService;->areComponentsInPlaceLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/JobSchedulerService;-><clinit>()V
+PLcom/android/server/job/JobSchedulerService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/job/JobSchedulerService;->adjustJobBias(Lcom/android/server/job/controllers/JobStatus;I)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$1;
HPLcom/android/server/job/JobSchedulerService;->areUsersStartedLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-HPLcom/android/server/job/JobSchedulerService;->cancelJob(ILjava/lang/String;III)Z
+HPLcom/android/server/job/JobSchedulerService;->cancelJob(IIIILjava/lang/String;)Z
HPLcom/android/server/job/JobSchedulerService;->cancelJobImplLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;IILjava/lang/String;)V
-PLcom/android/server/job/JobSchedulerService;->cancelJobsForNonExistentUsers()V
-PLcom/android/server/job/JobSchedulerService;->cancelJobsForPackageAndUidLocked(Ljava/lang/String;IZZIILjava/lang/String;)V
-PLcom/android/server/job/JobSchedulerService;->cancelJobsForUid(IZZLjava/lang/String;IILjava/lang/String;)Z
-HPLcom/android/server/job/JobSchedulerService;->checkChangedJobListLocked()V
-HPLcom/android/server/job/JobSchedulerService;->checkIfRestricted(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/restrictions/JobRestriction;
+PLcom/android/server/job/JobSchedulerService;->cancelJobsForUid(IIIZZLjava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/job/JobSchedulerService;->checkIfRestricted(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/restrictions/ThermalStatusRestriction;+]Ljava/util/List;Ljava/util/ArrayList;
PLcom/android/server/job/JobSchedulerService;->clearPendingJobQueue()V
HPLcom/android/server/job/JobSchedulerService;->deriveWorkSource(ILjava/lang/String;)Landroid/os/WorkSource;
-HPLcom/android/server/job/JobSchedulerService;->evaluateControllerStatesLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-HPLcom/android/server/job/JobSchedulerService;->evaluateJobBiasLocked(Lcom/android/server/job/controllers/JobStatus;)I
-PLcom/android/server/job/JobSchedulerService;->getConstants()Lcom/android/server/job/JobSchedulerService$Constants;
-HPLcom/android/server/job/JobSchedulerService;->getJobStore()Lcom/android/server/job/JobStore;
-PLcom/android/server/job/JobSchedulerService;->getLock()Ljava/lang/Object;
+HPLcom/android/server/job/JobSchedulerService;->dumpInternal(Landroid/util/IndentingPrintWriter;I)V
+HPLcom/android/server/job/JobSchedulerService;->evaluateControllerStatesLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/job/JobSchedulerService;->evaluateJobBiasLocked(Lcom/android/server/job/controllers/JobStatus;)I+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HPLcom/android/server/job/JobSchedulerService;->getMaxJobExecutionTimeMs(Lcom/android/server/job/controllers/JobStatus;)J
HPLcom/android/server/job/JobSchedulerService;->getMinJobExecutionGuaranteeMs(Lcom/android/server/job/controllers/JobStatus;)J
-PLcom/android/server/job/JobSchedulerService;->getPackageName(Landroid/content/Intent;)Ljava/lang/String;
HPLcom/android/server/job/JobSchedulerService;->getPackagesForUidLocked(I)Landroid/util/ArraySet;
-HPLcom/android/server/job/JobSchedulerService;->getPendingJob(ILjava/lang/String;I)Landroid/app/job/JobInfo;
-HPLcom/android/server/job/JobSchedulerService;->getPendingJobQueue()Lcom/android/server/job/PendingJobQueue;
-HPLcom/android/server/job/JobSchedulerService;->getPendingJobsInNamespace(ILjava/lang/String;)Ljava/util/List;
+PLcom/android/server/job/JobSchedulerService;->getRescheduleJobForFailureLocked(Lcom/android/server/job/controllers/JobStatus;II)Lcom/android/server/job/controllers/JobStatus;
PLcom/android/server/job/JobSchedulerService;->getRescheduleJobForPeriodic(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/controllers/JobStatus;
-PLcom/android/server/job/JobSchedulerService;->getTestableContext()Landroid/content/Context;
-HPLcom/android/server/job/JobSchedulerService;->getUidBias(I)I
+HPLcom/android/server/job/JobSchedulerService;->getUidBias(I)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HPLcom/android/server/job/JobSchedulerService;->getUidProcState(I)I
-HPLcom/android/server/job/JobSchedulerService;->hasPermission(IILjava/lang/String;)Z
HPLcom/android/server/job/JobSchedulerService;->isBatteryCharging()Z
-HPLcom/android/server/job/JobSchedulerService;->isBatteryNotLow()Z
-HPLcom/android/server/job/JobSchedulerService;->isComponentUsable(Lcom/android/server/job/controllers/JobStatus;)Z
-HPLcom/android/server/job/JobSchedulerService;->isCurrentlyRunningLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/JobSchedulerService;->isBatteryNotLow()Z
+HPLcom/android/server/job/JobSchedulerService;->isComponentUsable(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;
+PLcom/android/server/job/JobSchedulerService;->isCurrentlyRunningLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/JobSchedulerService;->isJobInOvertimeLocked(Lcom/android/server/job/controllers/JobStatus;)Z
PLcom/android/server/job/JobSchedulerService;->isPowerConnected()Z
HPLcom/android/server/job/JobSchedulerService;->isReadyToBeExecutedLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-HPLcom/android/server/job/JobSchedulerService;->isReadyToBeExecutedLocked(Lcom/android/server/job/controllers/JobStatus;Z)Z
-PLcom/android/server/job/JobSchedulerService;->isUidActive(I)Z
-HPLcom/android/server/job/JobSchedulerService;->lambda$new$2(ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/utils/quota/Category;
-HPLcom/android/server/job/JobSchedulerService;->lambda$onBootPhase$4(Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/JobSchedulerService;->lambda$startControllerTrackingAsync$5()V
+HPLcom/android/server/job/JobSchedulerService;->isReadyToBeExecutedLocked(Lcom/android/server/job/controllers/JobStatus;Z)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;
HPLcom/android/server/job/JobSchedulerService;->maybeProcessBuggyJob(Lcom/android/server/job/controllers/JobStatus;I)V
-PLcom/android/server/job/JobSchedulerService;->maybeQueueReadyJobsForExecutionLocked()V
HPLcom/android/server/job/JobSchedulerService;->maybeRunPendingJobsLocked()V
-PLcom/android/server/job/JobSchedulerService;->noteJobPending(Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/JobSchedulerService;->noteJobsPending(Landroid/util/ArraySet;)V
-HPLcom/android/server/job/JobSchedulerService;->onBootPhase(I)V
+PLcom/android/server/job/JobSchedulerService;->onBootPhase(I)V
HPLcom/android/server/job/JobSchedulerService;->onControllerStateChanged(Landroid/util/ArraySet;)V
-HPLcom/android/server/job/JobSchedulerService;->onJobCompletedLocked(Lcom/android/server/job/controllers/JobStatus;IIZ)V
PLcom/android/server/job/JobSchedulerService;->onRunJobNow(Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/JobSchedulerService;->onStart()V
PLcom/android/server/job/JobSchedulerService;->onUserCompletedEvent(Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$UserCompletedEventType;)V
PLcom/android/server/job/JobSchedulerService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/job/JobSchedulerService;->queueReadyJobsForExecutionLocked()V
-HPLcom/android/server/job/JobSchedulerService;->reportActiveLocked()V
-HPLcom/android/server/job/JobSchedulerService;->resetPendingJobReasonCache(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobSchedulerService;->queueReadyJobsForExecutionLocked()V
+HPLcom/android/server/job/JobSchedulerService;->reportActiveLocked()V+]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;
+HPLcom/android/server/job/JobSchedulerService;->resetPendingJobReasonsCache(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;
PLcom/android/server/job/JobSchedulerService;->safelyScaleBytesToKBForHistogram(J)I
HPLcom/android/server/job/JobSchedulerService;->scheduleAsPackage(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)I
-HPLcom/android/server/job/JobSchedulerService;->standbyBucketForPackage(Ljava/lang/String;IJ)I
+HPLcom/android/server/job/JobSchedulerService;->standbyBucketForPackage(ILjava/lang/String;J)I+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;
PLcom/android/server/job/JobSchedulerService;->standbyBucketToBucketIndex(I)I
-PLcom/android/server/job/JobSchedulerService;->startControllerTrackingAsync()V
-HPLcom/android/server/job/JobSchedulerService;->startTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobSchedulerService;->startTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/job/JobSchedulerService;->stopNonReadyActiveJobsLocked()V
-HPLcom/android/server/job/JobSchedulerService;->stopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)Z
+HPLcom/android/server/job/JobSchedulerService;->stopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)Z+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/job/JobSchedulerService;->updateQuotaTracker()V
-HPLcom/android/server/job/JobSchedulerService;->updateUidState(III)V
+HPLcom/android/server/job/JobSchedulerService;->updateUidState(III)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/job/JobServiceContext$JobCallback;-><init>(Lcom/android/server/job/JobServiceContext;)V
PLcom/android/server/job/JobServiceContext$JobCallback;->acknowledgeStartMessage(IZ)V
+PLcom/android/server/job/JobServiceContext$JobCallback;->acknowledgeStopMessage(IZ)V
PLcom/android/server/job/JobServiceContext$JobCallback;->completeWork(II)Z
PLcom/android/server/job/JobServiceContext$JobCallback;->dequeueWork(I)Landroid/app/job/JobWorkItem;
-PLcom/android/server/job/JobServiceContext$JobCallback;->jobFinished(IZ)V
+PLcom/android/server/job/JobServiceContext$JobCallback;->handleAbandonedJob(I)V
+HPLcom/android/server/job/JobServiceContext$JobCallback;->jobFinished(IZ)V
PLcom/android/server/job/JobServiceContext$JobServiceHandler;-><init>(Lcom/android/server/job/JobServiceContext;Landroid/os/Looper;)V
+PLcom/android/server/job/JobServiceContext$JobServiceHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/job/JobServiceContext;-><clinit>()V
PLcom/android/server/job/JobServiceContext;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobNotificationCoordinator;Lcom/android/internal/app/IBatteryStats;Lcom/android/server/job/JobPackageTracker;Landroid/os/Looper;)V
HPLcom/android/server/job/JobServiceContext;->applyStoppedReasonLocked(Ljava/lang/String;)V
PLcom/android/server/job/JobServiceContext;->assertCallerLocked(Lcom/android/server/job/JobServiceContext$JobCallback;)Z
-PLcom/android/server/job/JobServiceContext;->canGetNetworkInformation(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/JobServiceContext;->clearPreferredUid()V
-HPLcom/android/server/job/JobServiceContext;->closeAndCleanupJobLocked(ZLjava/lang/String;)V
-PLcom/android/server/job/JobServiceContext;->doAcknowledgeStartMessage(Lcom/android/server/job/JobServiceContext$JobCallback;IZ)V
+HPLcom/android/server/job/JobServiceContext;->canGetNetworkInformation(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/JobServiceContext;->cancelExecutingJobLocked(IILjava/lang/String;)V
+HPLcom/android/server/job/JobServiceContext;->closeAndCleanupJobLocked(Ljava/lang/String;Z)V
HPLcom/android/server/job/JobServiceContext;->doCallback(Lcom/android/server/job/JobServiceContext$JobCallback;ZLjava/lang/String;)V
-HPLcom/android/server/job/JobServiceContext;->doCallbackLocked(ZLjava/lang/String;)V
-PLcom/android/server/job/JobServiceContext;->doCompleteWork(Lcom/android/server/job/JobServiceContext$JobCallback;II)Z
-HPLcom/android/server/job/JobServiceContext;->doDequeueWork(Lcom/android/server/job/JobServiceContext$JobCallback;I)Landroid/app/job/JobWorkItem;
-HPLcom/android/server/job/JobServiceContext;->doJobFinished(Lcom/android/server/job/JobServiceContext$JobCallback;IZ)V
-PLcom/android/server/job/JobServiceContext;->doServiceBoundLocked()V
+HPLcom/android/server/job/JobServiceContext;->doCallbackLocked(Ljava/lang/String;Z)V
+HPLcom/android/server/job/JobServiceContext;->doServiceBoundLocked()V
+PLcom/android/server/job/JobServiceContext;->dumpLocked(Landroid/util/IndentingPrintWriter;J)V
HPLcom/android/server/job/JobServiceContext;->executeRunnableJob(Lcom/android/server/job/controllers/JobStatus;I)Z
-PLcom/android/server/job/JobServiceContext;->getExecutionStartTimeElapsed()J
-PLcom/android/server/job/JobServiceContext;->getId()I
-PLcom/android/server/job/JobServiceContext;->getPreferredUid()I
-PLcom/android/server/job/JobServiceContext;->getRemainingGuaranteedTimeMs(J)J
-PLcom/android/server/job/JobServiceContext;->getRunningJobLocked()Lcom/android/server/job/controllers/JobStatus;
-PLcom/android/server/job/JobServiceContext;->getRunningJobWorkType()I
-PLcom/android/server/job/JobServiceContext;->getStartActionId(Lcom/android/server/job/controllers/JobStatus;)I
-PLcom/android/server/job/JobServiceContext;->handleFinishedLocked(ZLjava/lang/String;)V
-HPLcom/android/server/job/JobServiceContext;->handleServiceBoundLocked()V
-HPLcom/android/server/job/JobServiceContext;->handleStartedLocked(Z)V
+PLcom/android/server/job/JobServiceContext;->getRunningJobNameLocked()Ljava/lang/String;
+PLcom/android/server/job/JobServiceContext;->handleCancelLocked(Ljava/lang/String;)V
+PLcom/android/server/job/JobServiceContext;->handleFinishedLocked(Ljava/lang/String;Z)V
+PLcom/android/server/job/JobServiceContext;->handleOpTimeoutLocked()V
+PLcom/android/server/job/JobServiceContext;->informOfNetworkChangeLocked(Landroid/net/Network;)V
PLcom/android/server/job/JobServiceContext;->isWithinExecutionGuaranteeTime()Z
+PLcom/android/server/job/JobServiceContext;->onBindingDied(Landroid/content/ComponentName;)V
HPLcom/android/server/job/JobServiceContext;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/job/JobServiceContext;->onServiceDisconnected(Landroid/content/ComponentName;)V
HPLcom/android/server/job/JobServiceContext;->removeOpTimeOutLocked()V
HPLcom/android/server/job/JobServiceContext;->scheduleOpTimeOutLocked()V
+HPLcom/android/server/job/JobServiceContext;->sendStopMessageLocked(Ljava/lang/String;)V
PLcom/android/server/job/JobServiceContext;->verifyCallerLocked(Lcom/android/server/job/JobServiceContext$JobCallback;)Z
+PLcom/android/server/job/JobStore$$ExternalSyntheticLambda0;-><init>(JLjava/util/ArrayList;Ljava/util/ArrayList;)V
+PLcom/android/server/job/JobStore$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
PLcom/android/server/job/JobStore$1;-><init>(Lcom/android/server/job/JobStore;)V
PLcom/android/server/job/JobStore$1;->run()V
-PLcom/android/server/job/JobStore$2$CopyConsumer;->-$$Nest$fgetmJobStoreCopy(Lcom/android/server/job/JobStore$2$CopyConsumer;)Landroid/util/SparseArray;
PLcom/android/server/job/JobStore$2$CopyConsumer;->-$$Nest$mprepare(Lcom/android/server/job/JobStore$2$CopyConsumer;)V
-PLcom/android/server/job/JobStore$2$CopyConsumer;->-$$Nest$mreset(Lcom/android/server/job/JobStore$2$CopyConsumer;)V
PLcom/android/server/job/JobStore$2$CopyConsumer;-><init>(Lcom/android/server/job/JobStore$2;)V
-HPLcom/android/server/job/JobStore$2$CopyConsumer;->accept(Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/JobStore$2$CopyConsumer;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/job/JobStore$2$CopyConsumer;->prepare()V
-PLcom/android/server/job/JobStore$2$CopyConsumer;->reset()V
+HPLcom/android/server/job/JobStore$2$CopyConsumer;->accept(Ljava/lang/Object;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Ljava/util/List;Ljava/util/ArrayList;
PLcom/android/server/job/JobStore$2;-><init>(Lcom/android/server/job/JobStore;)V
HPLcom/android/server/job/JobStore$2;->addAttributesToJobTag(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/JobStore$2;->deepCopyBundle(Landroid/os/PersistableBundle;I)Landroid/os/PersistableBundle;
+HPLcom/android/server/job/JobStore$2;->deepCopyBundle(ILandroid/os/PersistableBundle;)Landroid/os/PersistableBundle;
HPLcom/android/server/job/JobStore$2;->run()V
-PLcom/android/server/job/JobStore$2;->writeBundleToXml(Landroid/os/PersistableBundle;Lorg/xmlpull/v1/XmlSerializer;)V
HPLcom/android/server/job/JobStore$2;->writeConstraintsToXml(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/JobStore$2;->writeDebugInfoToXml(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V
HPLcom/android/server/job/JobStore$2;->writeExecutionCriteriaToXml(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/JobStore$2;->writeJobWorkItemListToXml(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/util/List;)V
-PLcom/android/server/job/JobStore$2;->writeJobWorkItemsToXml(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/JobStore$2;->writeJobsMapImpl(Landroid/util/AtomicFile;Ljava/util/List;)V
-PLcom/android/server/job/JobStore$JobSet$$ExternalSyntheticLambda0;-><init>([I)V
+PLcom/android/server/job/JobStore$JobSet$$ExternalSyntheticLambda0;-><init>(I[I)V
PLcom/android/server/job/JobStore$JobSet$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
-PLcom/android/server/job/JobStore$JobSet$$ExternalSyntheticLambda1;-><init>([I)V
-PLcom/android/server/job/JobStore$JobSet$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
-PLcom/android/server/job/JobStore$JobSet;->$r8$lambda$Ogrjy8cbnKakGMK8Ug9l_r3Ikrk([ILcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/JobStore$JobSet;->$r8$lambda$RA6YfP6IBdA_T2lAW98eyR1LWXw([ILcom/android/server/job/controllers/JobStatus;)Z
PLcom/android/server/job/JobStore$JobSet;-><init>()V
HPLcom/android/server/job/JobStore$JobSet;->add(Lcom/android/server/job/controllers/JobStatus;)Z
-HPLcom/android/server/job/JobStore$JobSet;->contains(Lcom/android/server/job/controllers/JobStatus;)Z
-HPLcom/android/server/job/JobStore$JobSet;->countJobsForUid(I)I
-HPLcom/android/server/job/JobStore$JobSet;->forEachJob(Ljava/util/function/Predicate;Ljava/util/function/Consumer;)V
-HPLcom/android/server/job/JobStore$JobSet;->forEachJobForSourceUid(ILjava/util/function/Consumer;)V
-HPLcom/android/server/job/JobStore$JobSet;->get(ILjava/lang/String;I)Lcom/android/server/job/controllers/JobStatus;
-HPLcom/android/server/job/JobStore$JobSet;->getJobsBySourceUid(I)Landroid/util/ArraySet;
+HPLcom/android/server/job/JobStore$JobSet;->forEachJob(Ljava/util/function/Predicate;Ljava/util/function/Consumer;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/function/Consumer;megamorphic_types]Ljava/util/function/Predicate;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda5;,Lcom/android/server/job/controllers/ComponentController$$ExternalSyntheticLambda0;,Lcom/android/server/job/controllers/DeviceIdleJobsController$$ExternalSyntheticLambda0;
+HPLcom/android/server/job/JobStore$JobSet;->get(IILjava/lang/String;)Lcom/android/server/job/controllers/JobStatus;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/job/JobStore$JobSet;->getAllJobs()Ljava/util/List;
HPLcom/android/server/job/JobStore$JobSet;->getJobsBySourceUid(ILjava/util/Set;)V
-HPLcom/android/server/job/JobStore$JobSet;->getJobsByUid(I)Landroid/util/ArraySet;
-HPLcom/android/server/job/JobStore$JobSet;->getJobsByUid(ILjava/util/Set;)V
-PLcom/android/server/job/JobStore$JobSet;->lambda$removeJobsOfUnlistedUsers$0([ILcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/JobStore$JobSet;->lambda$removeJobsOfUnlistedUsers$1([ILcom/android/server/job/controllers/JobStatus;)Z
HPLcom/android/server/job/JobStore$JobSet;->remove(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/JobStore$JobSet;->removeAll(Ljava/util/function/Predicate;)V
-PLcom/android/server/job/JobStore$JobSet;->removeJobsOfUnlistedUsers([I)V
PLcom/android/server/job/JobStore$JobSet;->size()I
PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;-><init>(Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore$JobSet;ZLjava/util/concurrent/CountDownLatch;)V
-HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildBuilderFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)Landroid/app/job/JobInfo$Builder;
-HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildConstraintsFromXml(Landroid/app/job/JobInfo$Builder;Lcom/android/modules/utils/TypedXmlPullParser;)V
-HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildRtcExecutionTimesFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)Landroid/util/Pair;
-PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->intern(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->maybeBuildBackoffPolicyFromXml(Landroid/app/job/JobInfo$Builder;Lorg/xmlpull/v1/XmlPullParser;)V
-HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->readJobMapImpl(Ljava/io/InputStream;ZJ)Ljava/util/List;
-HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->restoreJobFromXml(ZLcom/android/modules/utils/TypedXmlPullParser;IJ)Lcom/android/server/job/controllers/JobStatus;
-HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->run()V
-PLcom/android/server/job/JobStore;->-$$Nest$fgetmCurrentJobSetSize(Lcom/android/server/job/JobStore;)I
-PLcom/android/server/job/JobStore;->-$$Nest$fgetmEventLogger(Lcom/android/server/job/JobStore;)Landroid/util/SystemConfigFileCommitEventLogger;
-PLcom/android/server/job/JobStore;->-$$Nest$fgetmJobFileDirectory(Lcom/android/server/job/JobStore;)Ljava/io/File;
-PLcom/android/server/job/JobStore;->-$$Nest$fgetmPendingJobWriteUids(Lcom/android/server/job/JobStore;)Landroid/util/SparseBooleanArray;
-PLcom/android/server/job/JobStore;->-$$Nest$fgetmPersistInfo(Lcom/android/server/job/JobStore;)Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;
-PLcom/android/server/job/JobStore;->-$$Nest$fgetmScheduledJob30MinHighWaterMark(Lcom/android/server/job/JobStore;)I
-PLcom/android/server/job/JobStore;->-$$Nest$fgetmScheduledJobHighWaterMarkLoggingRunnable(Lcom/android/server/job/JobStore;)Ljava/lang/Runnable;
-PLcom/android/server/job/JobStore;->-$$Nest$fgetmSplitFileMigrationNeeded(Lcom/android/server/job/JobStore;)Z
-PLcom/android/server/job/JobStore;->-$$Nest$fgetmUseSplitFiles(Lcom/android/server/job/JobStore;)Z
-PLcom/android/server/job/JobStore;->-$$Nest$fgetmWriteInProgress(Lcom/android/server/job/JobStore;)Z
-PLcom/android/server/job/JobStore;->-$$Nest$fputmCurrentJobSetSize(Lcom/android/server/job/JobStore;I)V
-PLcom/android/server/job/JobStore;->-$$Nest$fputmScheduledJob30MinHighWaterMark(Lcom/android/server/job/JobStore;I)V
-PLcom/android/server/job/JobStore;->-$$Nest$fputmWriteInProgress(Lcom/android/server/job/JobStore;Z)V
-PLcom/android/server/job/JobStore;->-$$Nest$fputmWriteScheduled(Lcom/android/server/job/JobStore;Z)V
-PLcom/android/server/job/JobStore;->-$$Nest$mcreateJobFile(Lcom/android/server/job/JobStore;Ljava/io/File;)Landroid/util/AtomicFile;
-PLcom/android/server/job/JobStore;->-$$Nest$mcreateJobFile(Lcom/android/server/job/JobStore;Ljava/lang/String;)Landroid/util/AtomicFile;
-PLcom/android/server/job/JobStore;->-$$Nest$sfgetDEBUG()Z
-PLcom/android/server/job/JobStore;->-$$Nest$sfgetSPLIT_FILE_PATTERN()Ljava/util/regex/Pattern;
-PLcom/android/server/job/JobStore;->-$$Nest$sfgetsScheduledJob30MinHighWaterMarkLogger()Lcom/android/modules/expresslog/Histogram;
-PLcom/android/server/job/JobStore;->-$$Nest$smconvertRtcBoundsToElapsed(Landroid/util/Pair;J)Landroid/util/Pair;
-PLcom/android/server/job/JobStore;->-$$Nest$smisSyncJob(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildConstraintsFromXml(Landroid/app/job/JobInfo$Builder;Lcom/android/modules/utils/TypedXmlPullParser;)V
+PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->readJobMapImpl(JLjava/io/InputStream;Z)Ljava/util/List;
+PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->run()V
PLcom/android/server/job/JobStore;-><clinit>()V
-PLcom/android/server/job/JobStore;-><init>(Landroid/content/Context;Ljava/lang/Object;Ljava/io/File;)V
-HPLcom/android/server/job/JobStore;->add(Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/JobStore;->containsJob(Lcom/android/server/job/controllers/JobStatus;)Z
-HPLcom/android/server/job/JobStore;->convertRtcBoundsToElapsed(Landroid/util/Pair;J)Landroid/util/Pair;
-HPLcom/android/server/job/JobStore;->countJobsForUid(I)I
-PLcom/android/server/job/JobStore;->createJobFile(Ljava/io/File;)Landroid/util/AtomicFile;
-PLcom/android/server/job/JobStore;->createJobFile(Ljava/lang/String;)Landroid/util/AtomicFile;
-HPLcom/android/server/job/JobStore;->forEachJob(Ljava/util/function/Consumer;)V
+PLcom/android/server/job/JobStore;-><init>(Ljava/lang/Object;Ljava/io/File;)V
+HPLcom/android/server/job/JobStore;->containsJob(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/job/JobStore;->convertRtcBoundsToElapsed(Landroid/util/Pair;J)Landroid/util/Pair;
+HPLcom/android/server/job/JobStore;->countJobsForUid(I)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/job/JobStore;->forEachJob(Ljava/util/function/Consumer;)V
PLcom/android/server/job/JobStore;->forEachJob(Ljava/util/function/Predicate;Ljava/util/function/Consumer;)V
-HPLcom/android/server/job/JobStore;->forEachJobForSourceUid(ILjava/util/function/Consumer;)V
-PLcom/android/server/job/JobStore;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/JobStore;
-HPLcom/android/server/job/JobStore;->getJobByUidAndJobId(ILjava/lang/String;I)Lcom/android/server/job/controllers/JobStatus;
-HPLcom/android/server/job/JobStore;->getJobsBySourceUid(I)Landroid/util/ArraySet;
+HPLcom/android/server/job/JobStore;->forEachJobForSourceUid(ILjava/util/function/Consumer;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/function/Consumer;Lcom/android/server/job/JobSchedulerService$DeferredJobCounter;,Lcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;,Lcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleUpdateFunctor;,Lcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;
HPLcom/android/server/job/JobStore;->getJobsByUid(I)Landroid/util/ArraySet;
-PLcom/android/server/job/JobStore;->getJobsByUid(ILjava/util/Set;)V
PLcom/android/server/job/JobStore;->getPersistStats()Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;
-PLcom/android/server/job/JobStore;->initAsync(Ljava/util/concurrent/CountDownLatch;)V
-PLcom/android/server/job/JobStore;->intArrayToString([I)Ljava/lang/String;
-PLcom/android/server/job/JobStore;->isSyncJob(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/JobStore;->jobTimesInflatedValid()Z
-HPLcom/android/server/job/JobStore;->maybeUpdateHighWaterMark()V
+HPLcom/android/server/job/JobStore;->intArrayToString([I)Ljava/lang/String;
PLcom/android/server/job/JobStore;->maybeWriteStatusToDiskAsync()V
-HPLcom/android/server/job/JobStore;->remove(Lcom/android/server/job/controllers/JobStatus;Z)Z
PLcom/android/server/job/JobStore;->removeJobsOfUnlistedUsers([I)V
PLcom/android/server/job/JobStore;->stringToIntArray(Ljava/lang/String;)[I
PLcom/android/server/job/JobStore;->touchJob(Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/PendingJobQueue$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/job/PendingJobQueue$AppJobQueue$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;-><init>()V
-PLcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;-><init>(Lcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus-IA;)V
-PLcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;->clear()V
+PLcom/android/server/job/PendingJobQueue$$ExternalSyntheticLambda0;-><init>(I)V
+HPLcom/android/server/job/PendingJobQueue$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
PLcom/android/server/job/PendingJobQueue$AppJobQueue;-><clinit>()V
PLcom/android/server/job/PendingJobQueue$AppJobQueue;-><init>()V
-PLcom/android/server/job/PendingJobQueue$AppJobQueue;-><init>(Lcom/android/server/job/PendingJobQueue$AppJobQueue-IA;)V
-HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->add(Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/PendingJobQueue$AppJobQueue;->addAll(Ljava/util/List;)V
-HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->clear()V
HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->indexOf(Lcom/android/server/job/controllers/JobStatus;)I
-HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->next()Lcom/android/server/job/controllers/JobStatus;
-HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->peekNextTimestamp()J
-HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->remove(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/PendingJobQueue$AppJobQueue;->resetIterator(J)V
-PLcom/android/server/job/PendingJobQueue$AppJobQueue;->size()I
+HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->peekNextOverrideState()I+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->peekNextTimestamp()J+]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/job/PendingJobQueue;-><init>()V
HPLcom/android/server/job/PendingJobQueue;->add(Lcom/android/server/job/controllers/JobStatus;)V
HPLcom/android/server/job/PendingJobQueue;->addAll(Landroid/util/ArraySet;)V
-PLcom/android/server/job/PendingJobQueue;->clear()V
-HPLcom/android/server/job/PendingJobQueue;->contains(Lcom/android/server/job/controllers/JobStatus;)Z
-HPLcom/android/server/job/PendingJobQueue;->getAppJobQueue(IZ)Lcom/android/server/job/PendingJobQueue$AppJobQueue;
-HPLcom/android/server/job/PendingJobQueue;->next()Lcom/android/server/job/controllers/JobStatus;
-HPLcom/android/server/job/PendingJobQueue;->remove(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/PendingJobQueue;->contains(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/PendingJobQueue;->getAppJobQueue(IZ)Lcom/android/server/job/PendingJobQueue$AppJobQueue;+]Landroid/util/Pools$SimplePool;Landroid/util/Pools$SimplePool;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/job/PendingJobQueue;->next()Lcom/android/server/job/controllers/JobStatus;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;
+HPLcom/android/server/job/PendingJobQueue;->remove(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/util/Pools$SimplePool;Landroid/util/Pools$SimplePool;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;
PLcom/android/server/job/PendingJobQueue;->resetIterator()V
-PLcom/android/server/job/PendingJobQueue;->size()I
+PLcom/android/server/job/controllers/BackgroundJobsController$$ExternalSyntheticLambda0;-><init>(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/job/controllers/BackgroundJobsController$$ExternalSyntheticLambda0;->accept(ILjava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/job/controllers/BackgroundJobsController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/job/controllers/BackgroundJobsController;Ljava/lang/Object;I)V
+PLcom/android/server/job/controllers/BackgroundJobsController$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
PLcom/android/server/job/controllers/BackgroundJobsController$1;-><init>(Lcom/android/server/job/controllers/BackgroundJobsController;)V
PLcom/android/server/job/controllers/BackgroundJobsController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/job/controllers/BackgroundJobsController$2;-><init>(Lcom/android/server/job/controllers/BackgroundJobsController;)V
-HPLcom/android/server/job/controllers/BackgroundJobsController$2;->updateAllJobs()V
-HPLcom/android/server/job/controllers/BackgroundJobsController$2;->updateJobsForUid(IZ)V
+PLcom/android/server/job/controllers/BackgroundJobsController$2;->updateAllJobs()V
+PLcom/android/server/job/controllers/BackgroundJobsController$2;->updateJobsForUid(IZ)V
PLcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;-><init>(Lcom/android/server/job/controllers/BackgroundJobsController;)V
-PLcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;-><init>(Lcom/android/server/job/controllers/BackgroundJobsController;Lcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor-IA;)V
-HPLcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V
HPLcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;->prepare(I)V
-PLcom/android/server/job/controllers/BackgroundJobsController;->-$$Nest$fgetmPackageStoppedState(Lcom/android/server/job/controllers/BackgroundJobsController;)Landroid/util/SparseArrayMap;
-HPLcom/android/server/job/controllers/BackgroundJobsController;->-$$Nest$mupdateAllJobRestrictionsLocked(Lcom/android/server/job/controllers/BackgroundJobsController;)V
-HPLcom/android/server/job/controllers/BackgroundJobsController;->-$$Nest$mupdateJobRestrictionsForUidLocked(Lcom/android/server/job/controllers/BackgroundJobsController;IZ)V
-PLcom/android/server/job/controllers/BackgroundJobsController;->-$$Nest$mupdateJobRestrictionsLocked(Lcom/android/server/job/controllers/BackgroundJobsController;II)V
-PLcom/android/server/job/controllers/BackgroundJobsController;->-$$Nest$sfgetDEBUG()Z
PLcom/android/server/job/controllers/BackgroundJobsController;-><clinit>()V
PLcom/android/server/job/controllers/BackgroundJobsController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/controllers/BackgroundJobsController;->dumpControllerStateLocked(Landroid/util/IndentingPrintWriter;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda5;)V
HPLcom/android/server/job/controllers/BackgroundJobsController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/controllers/BackgroundJobsController;->isPackageStoppedLocked(Ljava/lang/String;I)Z
+HPLcom/android/server/job/controllers/BackgroundJobsController;->isPackageStoppedLocked(ILjava/lang/String;)Z+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
HPLcom/android/server/job/controllers/BackgroundJobsController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/BackgroundJobsController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/BackgroundJobsController;->startTrackingLocked()V
-HPLcom/android/server/job/controllers/BackgroundJobsController;->updateAllJobRestrictionsLocked()V
-HPLcom/android/server/job/controllers/BackgroundJobsController;->updateJobRestrictionsForUidLocked(IZ)V
HPLcom/android/server/job/controllers/BackgroundJobsController;->updateJobRestrictionsLocked(II)V
-HPLcom/android/server/job/controllers/BackgroundJobsController;->updateSingleJobRestrictionLocked(Lcom/android/server/job/controllers/JobStatus;JI)Z
+HPLcom/android/server/job/controllers/BackgroundJobsController;->updateSingleJobRestrictionLocked(Lcom/android/server/job/controllers/JobStatus;JI)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
+PLcom/android/server/job/controllers/BatteryController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/controllers/BatteryController;)V
+PLcom/android/server/job/controllers/BatteryController$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/job/controllers/BatteryController;-><clinit>()V
PLcom/android/server/job/controllers/BatteryController;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/FlexibilityController;)V
-HPLcom/android/server/job/controllers/BatteryController;->hasTopExemptionLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/controllers/BatteryController;->dumpControllerStateLocked(Landroid/util/IndentingPrintWriter;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda5;)V
HPLcom/android/server/job/controllers/BatteryController;->maybeReportNewChargingStateLocked()V
HPLcom/android/server/job/controllers/BatteryController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/controllers/BatteryController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/BatteryController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/BatteryController;->onBatteryStateChangedLocked()V
PLcom/android/server/job/controllers/BatteryController;->onUidBiasChangedLocked(III)V
PLcom/android/server/job/controllers/BatteryController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/ComponentController$$ExternalSyntheticLambda0;-><init>(ILjava/lang/String;)V
+PLcom/android/server/job/controllers/ComponentController$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
PLcom/android/server/job/controllers/ComponentController$$ExternalSyntheticLambda1;-><init>(I)V
PLcom/android/server/job/controllers/ComponentController$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
PLcom/android/server/job/controllers/ComponentController$1;-><init>(Lcom/android/server/job/controllers/ComponentController;)V
PLcom/android/server/job/controllers/ComponentController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/job/controllers/ComponentController$ComponentStateUpdateFunctor;->-$$Nest$mreset(Lcom/android/server/job/controllers/ComponentController$ComponentStateUpdateFunctor;)V
PLcom/android/server/job/controllers/ComponentController$ComponentStateUpdateFunctor;-><init>(Lcom/android/server/job/controllers/ComponentController;)V
-PLcom/android/server/job/controllers/ComponentController$ComponentStateUpdateFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/ComponentController$ComponentStateUpdateFunctor;->accept(Ljava/lang/Object;)V
-PLcom/android/server/job/controllers/ComponentController$ComponentStateUpdateFunctor;->reset()V
-PLcom/android/server/job/controllers/ComponentController;->$r8$lambda$M1UwXxQ2lQGkgK0HrVMJlW9dX54(ILcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/controllers/ComponentController;->-$$Nest$mupdateComponentEnabledStateLocked(Lcom/android/server/job/controllers/ComponentController;Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/controllers/ComponentController;->-$$Nest$mupdateComponentStateForUser(Lcom/android/server/job/controllers/ComponentController;I)V
+PLcom/android/server/job/controllers/ComponentController;->-$$Nest$mupdateComponentStateForPackage(Lcom/android/server/job/controllers/ComponentController;ILjava/lang/String;)V
PLcom/android/server/job/controllers/ComponentController;-><clinit>()V
PLcom/android/server/job/controllers/ComponentController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-HPLcom/android/server/job/controllers/ComponentController;->getServiceProcessLocked(Lcom/android/server/job/controllers/JobStatus;)Ljava/lang/String;
-PLcom/android/server/job/controllers/ComponentController;->lambda$updateComponentStateForUser$1(ILcom/android/server/job/controllers/JobStatus;)Z
-HPLcom/android/server/job/controllers/ComponentController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/ComponentController;->clearComponentsForPackageLocked(ILjava/lang/String;)V
+PLcom/android/server/job/controllers/ComponentController;->dumpControllerStateLocked(Landroid/util/IndentingPrintWriter;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda5;)V
+PLcom/android/server/job/controllers/ComponentController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/ComponentController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/ComponentController;->startTrackingLocked()V
HPLcom/android/server/job/controllers/ComponentController;->updateComponentEnabledStateLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/controllers/ComponentController;->updateComponentStateForUser(I)V
PLcom/android/server/job/controllers/ComponentController;->updateComponentStatesLocked(Ljava/util/function/Predicate;)V
-PLcom/android/server/job/controllers/ConnectivityController$1;-><init>(Lcom/android/server/job/controllers/ConnectivityController;)V
-PLcom/android/server/job/controllers/ConnectivityController$2;-><init>(Lcom/android/server/job/controllers/ConnectivityController;)V
-PLcom/android/server/job/controllers/ConnectivityController$3;-><init>(Lcom/android/server/job/controllers/ConnectivityController;)V
+PLcom/android/server/job/controllers/ConnectivityController$2;-><init>(Lcom/android/server/job/controllers/ConnectivityController;I)V
+PLcom/android/server/job/controllers/ConnectivityController$2;->maybeRegisterSignalStrengthCallbackLocked(Landroid/net/NetworkCapabilities;)V
+PLcom/android/server/job/controllers/ConnectivityController$2;->maybeUnregisterSignalStrengthCallbackLocked(Landroid/net/NetworkCapabilities;)V
+PLcom/android/server/job/controllers/ConnectivityController$2;->maybeUpdateFlexConstraintLocked(Lcom/android/server/job/controllers/ConnectivityController$CachedNetworkMetadata;)V
+PLcom/android/server/job/controllers/ConnectivityController$2;->onAvailable(Landroid/net/Network;)V
+PLcom/android/server/job/controllers/ConnectivityController$2;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V
+PLcom/android/server/job/controllers/ConnectivityController$2;->onLost(Landroid/net/Network;)V
PLcom/android/server/job/controllers/ConnectivityController$4;-><init>(Lcom/android/server/job/controllers/ConnectivityController;)V
-PLcom/android/server/job/controllers/ConnectivityController$CcConfig;->-$$Nest$fgetmFlexIsEnabled(Lcom/android/server/job/controllers/ConnectivityController$CcConfig;)Z
-PLcom/android/server/job/controllers/ConnectivityController$CcConfig;->-$$Nest$fgetmShouldReprocessNetworkCapabilities(Lcom/android/server/job/controllers/ConnectivityController$CcConfig;)Z
-PLcom/android/server/job/controllers/ConnectivityController$CcConfig;->-$$Nest$fputmFlexIsEnabled(Lcom/android/server/job/controllers/ConnectivityController$CcConfig;Z)V
-PLcom/android/server/job/controllers/ConnectivityController$CcConfig;->-$$Nest$fputmShouldReprocessNetworkCapabilities(Lcom/android/server/job/controllers/ConnectivityController$CcConfig;Z)V
-PLcom/android/server/job/controllers/ConnectivityController$CcConfig;-><init>(Lcom/android/server/job/controllers/ConnectivityController;)V
+PLcom/android/server/job/controllers/ConnectivityController$4;->onRestrictBackgroundChanged(Z)V
+PLcom/android/server/job/controllers/ConnectivityController$CachedNetworkMetadata;->toString()Ljava/lang/String;
PLcom/android/server/job/controllers/ConnectivityController$CcHandler;-><init>(Lcom/android/server/job/controllers/ConnectivityController;Landroid/os/Looper;)V
-HPLcom/android/server/job/controllers/ConnectivityController$CcHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;->-$$Nest$fgetmBlockedReasons(Lcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;)I
-PLcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;->-$$Nest$fgetmDefaultNetwork(Lcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;)Landroid/net/Network;
-PLcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;->-$$Nest$msetUid(Lcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;I)V
+PLcom/android/server/job/controllers/ConnectivityController$CcHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;-><init>(Lcom/android/server/job/controllers/ConnectivityController;)V
-PLcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;-><init>(Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback-IA;)V
-PLcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;->setUid(I)V
-HPLcom/android/server/job/controllers/ConnectivityController$UidStats;-><init>(I)V
-PLcom/android/server/job/controllers/ConnectivityController$UidStats;-><init>(ILcom/android/server/job/controllers/ConnectivityController$UidStats-IA;)V
+PLcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;->onAvailable(Landroid/net/Network;)V
+HPLcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;->onBlockedStatusChanged(Landroid/net/Network;I)V
+PLcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;->onLost(Landroid/net/Network;)V
+PLcom/android/server/job/controllers/ConnectivityController$UidStats;-><init>(I)V
PLcom/android/server/job/controllers/ConnectivityController;->-$$Nest$mmaybeAdjustRegisteredCallbacksLocked(Lcom/android/server/job/controllers/ConnectivityController;)V
PLcom/android/server/job/controllers/ConnectivityController;-><clinit>()V
-HPLcom/android/server/job/controllers/ConnectivityController;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/FlexibilityController;)V
-HPLcom/android/server/job/controllers/ConnectivityController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/controllers/ConnectivityController;->getNetworkLocked(Lcom/android/server/job/controllers/JobStatus;)Landroid/net/Network;
-PLcom/android/server/job/controllers/ConnectivityController;->getNetworkMetadata(Landroid/net/Network;)Lcom/android/server/job/controllers/ConnectivityController$CachedNetworkMetadata;
-HPLcom/android/server/job/controllers/ConnectivityController;->getUidStats(ILjava/lang/String;Z)Lcom/android/server/job/controllers/ConnectivityController$UidStats;
+PLcom/android/server/job/controllers/ConnectivityController;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/FlexibilityController;)V
+PLcom/android/server/job/controllers/ConnectivityController;->dumpConstants(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/job/controllers/ConnectivityController;->dumpControllerStateLocked(Landroid/util/IndentingPrintWriter;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda5;)V
+HPLcom/android/server/job/controllers/ConnectivityController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
+HPLcom/android/server/job/controllers/ConnectivityController;->getNetworkLocked(Lcom/android/server/job/controllers/JobStatus;)Landroid/net/Network;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/job/controllers/ConnectivityController;->getNetworkMetadata(Landroid/net/Network;)Lcom/android/server/job/controllers/ConnectivityController$CachedNetworkMetadata;
+HPLcom/android/server/job/controllers/ConnectivityController;->getUidStats(ILjava/lang/String;Z)Lcom/android/server/job/controllers/ConnectivityController$UidStats;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HPLcom/android/server/job/controllers/ConnectivityController;->isNetworkAvailable(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/controllers/ConnectivityController;->isSatisfied(Lcom/android/server/job/controllers/JobStatus;Landroid/net/Network;Landroid/net/NetworkCapabilities;Lcom/android/server/job/JobSchedulerService$Constants;)Z
-HPLcom/android/server/job/controllers/ConnectivityController;->isStandbyExceptionRequestedLocked(I)Z
-HPLcom/android/server/job/controllers/ConnectivityController;->maybeAdjustRegisteredCallbacksLocked()V
-HPLcom/android/server/job/controllers/ConnectivityController;->maybeRegisterDefaultNetworkCallbackLocked(Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/controllers/ConnectivityController;->maybeRevokeStandbyExceptionLocked(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/ConnectivityController;->isSatisfied(Lcom/android/server/job/controllers/JobStatus;Landroid/net/Network;Landroid/net/NetworkCapabilities;Lcom/android/server/job/JobSchedulerService$Constants;)Z+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/net/NetworkPolicyManager;Landroid/net/NetworkPolicyManager;]Landroid/net/NetworkRequest;Landroid/net/NetworkRequest;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
+HPLcom/android/server/job/controllers/ConnectivityController;->isStandbyExceptionRequestedLocked(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/job/controllers/ConnectivityController;->maybeRevokeStandbyExceptionLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;
HPLcom/android/server/job/controllers/ConnectivityController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
HPLcom/android/server/job/controllers/ConnectivityController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/ConnectivityController;->onBatteryStateChangedLocked()V
PLcom/android/server/job/controllers/ConnectivityController;->onConstantsUpdatedLocked()V
-HPLcom/android/server/job/controllers/ConnectivityController;->onUidBiasChangedLocked(III)V
+PLcom/android/server/job/controllers/ConnectivityController;->onUidBiasChangedLocked(III)V
PLcom/android/server/job/controllers/ConnectivityController;->postAdjustCallbacks()V
-PLcom/android/server/job/controllers/ConnectivityController;->postAdjustCallbacks(J)V
-HPLcom/android/server/job/controllers/ConnectivityController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/ConnectivityController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/ConnectivityController;->prepareForUpdatedConstantsLocked()V
-HPLcom/android/server/job/controllers/ConnectivityController;->registerPendingUidCallbacksLocked()V
+PLcom/android/server/job/controllers/ConnectivityController;->reevaluateStateLocked(I)V
+PLcom/android/server/job/controllers/ConnectivityController;->registerPendingUidCallbacksLocked()V
+PLcom/android/server/job/controllers/ConnectivityController;->requestStandbyExceptionLocked(Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/ConnectivityController;->startTrackingLocked()V
-HPLcom/android/server/job/controllers/ConnectivityController;->updateConstraintsSatisfied(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/controllers/ConnectivityController;->updateAllTrackedJobsLocked(Z)V
+HPLcom/android/server/job/controllers/ConnectivityController;->updateConstraintsSatisfied(Lcom/android/server/job/controllers/JobStatus;)V
HPLcom/android/server/job/controllers/ConnectivityController;->updateConstraintsSatisfied(Lcom/android/server/job/controllers/JobStatus;JLandroid/net/Network;Lcom/android/server/job/controllers/ConnectivityController$CachedNetworkMetadata;)Z
-HPLcom/android/server/job/controllers/ContentObserverController$JobInstance;-><init>(Lcom/android/server/job/controllers/ContentObserverController;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/ConnectivityController;->updateTrackedJobsLocked(Landroid/net/Network;I)V
+HPLcom/android/server/job/controllers/ConnectivityController;->updateTrackedJobsLocked(Landroid/util/ArraySet;Landroid/net/Network;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/lang/Object;Landroid/net/Network;
+PLcom/android/server/job/controllers/ConnectivityController;->updateTransportAffinitySatisfaction(Lcom/android/server/job/controllers/ConnectivityController$CachedNetworkMetadata;)Z
+PLcom/android/server/job/controllers/ContentObserverController$JobInstance;-><init>(Lcom/android/server/job/controllers/ContentObserverController;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/ContentObserverController$JobInstance;->detachLocked()V
+PLcom/android/server/job/controllers/ContentObserverController$JobInstance;->scheduleLocked()V
PLcom/android/server/job/controllers/ContentObserverController$ObserverInstance;-><init>(Lcom/android/server/job/controllers/ContentObserverController;Landroid/os/Handler;Landroid/app/job/JobInfo$TriggerContentUri;I)V
+PLcom/android/server/job/controllers/ContentObserverController$ObserverInstance;->onChange(ZLandroid/net/Uri;)V
PLcom/android/server/job/controllers/ContentObserverController$TriggerRunnable;-><init>(Lcom/android/server/job/controllers/ContentObserverController$JobInstance;)V
-PLcom/android/server/job/controllers/ContentObserverController;->-$$Nest$sfgetDEBUG()Z
+PLcom/android/server/job/controllers/ContentObserverController$TriggerRunnable;->run()V
PLcom/android/server/job/controllers/ContentObserverController;-><clinit>()V
PLcom/android/server/job/controllers/ContentObserverController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-HPLcom/android/server/job/controllers/ContentObserverController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/ContentObserverController;->dumpControllerStateLocked(Landroid/util/IndentingPrintWriter;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda5;)V
+PLcom/android/server/job/controllers/ContentObserverController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/ContentObserverController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/ContentObserverController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/ContentObserverController;->rescheduleForFailureLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/DeviceIdleJobsController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/controllers/DeviceIdleJobsController;)V
+PLcom/android/server/job/controllers/DeviceIdleJobsController$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/job/controllers/DeviceIdleJobsController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/job/controllers/DeviceIdleJobsController;Ljava/lang/Object;I)V
+PLcom/android/server/job/controllers/DeviceIdleJobsController$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
PLcom/android/server/job/controllers/DeviceIdleJobsController$1;-><init>(Lcom/android/server/job/controllers/DeviceIdleJobsController;)V
HPLcom/android/server/job/controllers/DeviceIdleJobsController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleJobsDelayHandler;-><init>(Lcom/android/server/job/controllers/DeviceIdleJobsController;Landroid/os/Looper;)V
+PLcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleJobsDelayHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleUpdateFunctor;-><init>(Lcom/android/server/job/controllers/DeviceIdleJobsController;)V
-HPLcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleUpdateFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleUpdateFunctor;->accept(Ljava/lang/Object;)V
HPLcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleUpdateFunctor;->prepare()V
-PLcom/android/server/job/controllers/DeviceIdleJobsController;->-$$Nest$fgetmAllowInIdleJobs(Lcom/android/server/job/controllers/DeviceIdleJobsController;)Landroid/util/ArraySet;
-PLcom/android/server/job/controllers/DeviceIdleJobsController;->-$$Nest$fgetmLocalDeviceIdleController(Lcom/android/server/job/controllers/DeviceIdleJobsController;)Lcom/android/server/DeviceIdleInternal;
-HPLcom/android/server/job/controllers/DeviceIdleJobsController;->-$$Nest$fputmPowerSaveTempWhitelistAppIds(Lcom/android/server/job/controllers/DeviceIdleJobsController;[I)V
-PLcom/android/server/job/controllers/DeviceIdleJobsController;->-$$Nest$mupdateTaskStateLocked(Lcom/android/server/job/controllers/DeviceIdleJobsController;Lcom/android/server/job/controllers/JobStatus;J)Z
-HPLcom/android/server/job/controllers/DeviceIdleJobsController;->-$$Nest$sfgetDEBUG()Z
PLcom/android/server/job/controllers/DeviceIdleJobsController;-><clinit>()V
PLcom/android/server/job/controllers/DeviceIdleJobsController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-PLcom/android/server/job/controllers/DeviceIdleJobsController;->isTempWhitelistedLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-HPLcom/android/server/job/controllers/DeviceIdleJobsController;->isWhitelistedLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/controllers/DeviceIdleJobsController;->dumpControllerStateLocked(Landroid/util/IndentingPrintWriter;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda5;)V
HPLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
HPLcom/android/server/job/controllers/DeviceIdleJobsController;->setUidActiveLocked(IZ)V
HPLcom/android/server/job/controllers/DeviceIdleJobsController;->updateTaskStateLocked(Lcom/android/server/job/controllers/JobStatus;J)Z
-PLcom/android/server/job/controllers/FlexibilityController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/controllers/FlexibilityController;)V
-PLcom/android/server/job/controllers/FlexibilityController$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/job/controllers/FlexibilityController$$ExternalSyntheticLambda0;-><init>(Landroid/util/IndentingPrintWriter;J)V
+PLcom/android/server/job/controllers/FlexibilityController$$ExternalSyntheticLambda0;->accept(ILjava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/job/controllers/FlexibilityController$1;-><init>(Lcom/android/server/job/controllers/FlexibilityController;)V
-PLcom/android/server/job/controllers/FlexibilityController$2;-><init>(Lcom/android/server/job/controllers/FlexibilityController;)V
-PLcom/android/server/job/controllers/FlexibilityController$FcConfig;->-$$Nest$fgetmShouldReevaluateConstraints(Lcom/android/server/job/controllers/FlexibilityController$FcConfig;)Z
-PLcom/android/server/job/controllers/FlexibilityController$FcConfig;->-$$Nest$fputmShouldReevaluateConstraints(Lcom/android/server/job/controllers/FlexibilityController$FcConfig;Z)V
PLcom/android/server/job/controllers/FlexibilityController$FcConfig;-><clinit>()V
PLcom/android/server/job/controllers/FlexibilityController$FcConfig;-><init>(Lcom/android/server/job/controllers/FlexibilityController;)V
-PLcom/android/server/job/controllers/FlexibilityController$FcHandler$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/controllers/FlexibilityController$FcHandler;)V
-PLcom/android/server/job/controllers/FlexibilityController$FcHandler$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
-PLcom/android/server/job/controllers/FlexibilityController$FcHandler$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/job/controllers/FlexibilityController$FcHandler;JLandroid/util/ArraySet;)V
-PLcom/android/server/job/controllers/FlexibilityController$FcHandler$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
-PLcom/android/server/job/controllers/FlexibilityController$FcHandler;->$r8$lambda$5CvPVqmgOUfjOuy9DIWNcoGKJmo(Lcom/android/server/job/controllers/FlexibilityController$FcHandler;Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/controllers/FlexibilityController$FcHandler;->$r8$lambda$yWWuwRoUvOTH-mThpIBxsAo7feI(Lcom/android/server/job/controllers/FlexibilityController$FcHandler;JLandroid/util/ArraySet;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/FlexibilityController$FcHandler;-><init>(Lcom/android/server/job/controllers/FlexibilityController;Landroid/os/Looper;)V
PLcom/android/server/job/controllers/FlexibilityController$FcHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/job/controllers/FlexibilityController$FcHandler;->lambda$handleMessage$0(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/controllers/FlexibilityController$FcHandler;->lambda$handleMessage$1(JLandroid/util/ArraySet;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;-><init>(Lcom/android/server/job/controllers/FlexibilityController;Landroid/content/Context;Landroid/os/Looper;)V
-PLcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;-><init>(Lcom/android/server/job/controllers/FlexibilityController;Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue-IA;)V
+PLcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;->processExpiredAlarms(Landroid/util/ArraySet;)V
HPLcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;->scheduleDropNumConstraintsAlarm(Lcom/android/server/job/controllers/JobStatus;J)V
PLcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;-><init>(Lcom/android/server/job/controllers/FlexibilityController;I)V
HPLcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;->add(Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;->remove(Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/controllers/FlexibilityController$JobScoreTracker$JobScoreBucket;-><init>()V
-PLcom/android/server/job/controllers/FlexibilityController$JobScoreTracker$JobScoreBucket;-><init>(Lcom/android/server/job/controllers/FlexibilityController$JobScoreTracker$JobScoreBucket-IA;)V
+PLcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;->calculateNumDroppedConstraints(Lcom/android/server/job/controllers/JobStatus;J)V
PLcom/android/server/job/controllers/FlexibilityController$JobScoreTracker;-><init>()V
-PLcom/android/server/job/controllers/FlexibilityController$JobScoreTracker;-><init>(Lcom/android/server/job/controllers/FlexibilityController$JobScoreTracker-IA;)V
HPLcom/android/server/job/controllers/FlexibilityController$JobScoreTracker;->addScore(IJ)V
-HPLcom/android/server/job/controllers/FlexibilityController$JobScoreTracker;->getScore(J)I
-PLcom/android/server/job/controllers/FlexibilityController;->$r8$lambda$fmLZ0Eyb4DjWbt0tDV_WmGlhcUg(Lcom/android/server/job/controllers/FlexibilityController;)V
-HPLcom/android/server/job/controllers/FlexibilityController;->-$$Nest$fgetmDeadlineProximityLimitMs(Lcom/android/server/job/controllers/FlexibilityController;)J
-PLcom/android/server/job/controllers/FlexibilityController;->-$$Nest$fgetmMinTimeBetweenFlexibilityAlarmsMs(Lcom/android/server/job/controllers/FlexibilityController;)J
-PLcom/android/server/job/controllers/FlexibilityController;->-$$Nest$fgetmPackagesToCheck(Lcom/android/server/job/controllers/FlexibilityController;)Landroid/util/ArraySet;
-HPLcom/android/server/job/controllers/FlexibilityController;->-$$Nest$sfgetDEBUG()Z
+PLcom/android/server/job/controllers/FlexibilityController$SpecialAppTracker$1;-><init>(Lcom/android/server/job/controllers/FlexibilityController$SpecialAppTracker;)V
+PLcom/android/server/job/controllers/FlexibilityController$SpecialAppTracker;-><init>(Lcom/android/server/job/controllers/FlexibilityController;)V
PLcom/android/server/job/controllers/FlexibilityController;-><clinit>()V
-HPLcom/android/server/job/controllers/FlexibilityController;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/PrefetchController;)V
+PLcom/android/server/job/controllers/FlexibilityController;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/PrefetchController;)V
+PLcom/android/server/job/controllers/FlexibilityController;->dumpConstants(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/job/controllers/FlexibilityController;->dumpControllerStateLocked(Landroid/util/IndentingPrintWriter;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda5;)V
+PLcom/android/server/job/controllers/FlexibilityController;->getCurPercentOfLifecycleLocked(Lcom/android/server/job/controllers/JobStatus;J)I
HPLcom/android/server/job/controllers/FlexibilityController;->getLifeCycleBeginningElapsedLocked(Lcom/android/server/job/controllers/JobStatus;)J
HPLcom/android/server/job/controllers/FlexibilityController;->getLifeCycleEndElapsedLocked(Lcom/android/server/job/controllers/JobStatus;JJ)J
HPLcom/android/server/job/controllers/FlexibilityController;->getNextConstraintDropTimeElapsedLocked(Lcom/android/server/job/controllers/JobStatus;JJ)J
HPLcom/android/server/job/controllers/FlexibilityController;->getPercentsToDropConstraints(I)[I
-HPLcom/android/server/job/controllers/FlexibilityController;->getRelevantAppliedConstraintsLocked(Lcom/android/server/job/controllers/JobStatus;)I
+PLcom/android/server/job/controllers/FlexibilityController;->getRelevantAppliedConstraintsLocked(Lcom/android/server/job/controllers/JobStatus;)I
HPLcom/android/server/job/controllers/FlexibilityController;->getScoreLocked(ILjava/lang/String;J)I
-PLcom/android/server/job/controllers/FlexibilityController;->isEnabled()Z
HPLcom/android/server/job/controllers/FlexibilityController;->isFlexibilitySatisfiedLocked(Lcom/android/server/job/controllers/JobStatus;)Z
HPLcom/android/server/job/controllers/FlexibilityController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
HPLcom/android/server/job/controllers/FlexibilityController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/FlexibilityController;->onConstantsUpdatedLocked()V
PLcom/android/server/job/controllers/FlexibilityController;->onSystemServicesReady()V
-HPLcom/android/server/job/controllers/FlexibilityController;->onUidBiasChangedLocked(III)V
+HPLcom/android/server/job/controllers/FlexibilityController;->onUidBiasChangedLocked(III)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
HPLcom/android/server/job/controllers/FlexibilityController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/FlexibilityController;->prepareForUpdatedConstantsLocked()V
-PLcom/android/server/job/controllers/FlexibilityController;->setConstraintSatisfied(IZJ)V
+PLcom/android/server/job/controllers/FlexibilityController;->setConstraintSatisfied(IJZ)V
PLcom/android/server/job/controllers/FlexibilityController;->startTrackingLocked()V
-PLcom/android/server/job/controllers/FlexibilityController;->updatePowerAllowlistCache()V
PLcom/android/server/job/controllers/IdleController;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/FlexibilityController;)V
-PLcom/android/server/job/controllers/IdleController;->initIdleStateTracker()V
-HPLcom/android/server/job/controllers/IdleController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/IdleController;->dumpConstants(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/job/controllers/IdleController;->dumpControllerStateLocked(Landroid/util/IndentingPrintWriter;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda5;)V
+PLcom/android/server/job/controllers/IdleController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/IdleController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/IdleController;->onBatteryStateChangedLocked()V
+PLcom/android/server/job/controllers/IdleController;->reportNewIdleState(Z)V
PLcom/android/server/job/controllers/IdleController;->startTrackingLocked()V
PLcom/android/server/job/controllers/JobStatus;-><clinit>()V
-HPLcom/android/server/job/controllers/JobStatus;-><init>(Landroid/app/job/JobInfo;ILjava/lang/String;IILjava/lang/String;Ljava/lang/String;IIJJJJJII)V
-PLcom/android/server/job/controllers/JobStatus;-><init>(Landroid/app/job/JobInfo;ILjava/lang/String;IILjava/lang/String;Ljava/lang/String;JJJJJLandroid/util/Pair;II)V
-HPLcom/android/server/job/controllers/JobStatus;-><init>(Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/controllers/JobStatus;-><init>(Lcom/android/server/job/controllers/JobStatus;JJIIJJJ)V
+HPLcom/android/server/job/controllers/JobStatus;-><init>(Landroid/app/job/JobInfo;ILjava/lang/String;IILjava/lang/String;Ljava/lang/String;IIIJJJJJII)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/net/NetworkRequest$Builder;Landroid/net/NetworkRequest$Builder;]Landroid/net/NetworkRequest;Landroid/net/NetworkRequest;]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate;
+PLcom/android/server/job/controllers/JobStatus;-><init>(Lcom/android/server/job/controllers/JobStatus;JJIIIJJJ)V
HPLcom/android/server/job/controllers/JobStatus;->addDynamicConstraints(I)V
-PLcom/android/server/job/controllers/JobStatus;->addInternalFlags(I)V
-HPLcom/android/server/job/controllers/JobStatus;->canApplyTransportAffinities()Z
-HPLcom/android/server/job/controllers/JobStatus;->canRunInBatterySaver()Z
-HPLcom/android/server/job/controllers/JobStatus;->canRunInDoze()Z
-PLcom/android/server/job/controllers/JobStatus;->clearPersistedUtcTimes()V
+PLcom/android/server/job/controllers/JobStatus;->applyBasicPiiFilters(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/job/controllers/JobStatus;->bucketName(I)Ljava/lang/String;
+HPLcom/android/server/job/controllers/JobStatus;->canRunInDoze()Z+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
HPLcom/android/server/job/controllers/JobStatus;->clearTrackingController(I)Z
-PLcom/android/server/job/controllers/JobStatus;->completeWorkLocked(I)Z
+HPLcom/android/server/job/controllers/JobStatus;->constraintsToPendingJobReasons(I)Ljava/util/ArrayList;
HPLcom/android/server/job/controllers/JobStatus;->createFromJobInfo(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/job/controllers/JobStatus;
-HPLcom/android/server/job/controllers/JobStatus;->dequeueWorkLocked()Landroid/app/job/JobWorkItem;
-HPLcom/android/server/job/controllers/JobStatus;->enqueueWorkLocked(Landroid/app/job/JobWorkItem;)V
-PLcom/android/server/job/controllers/JobStatus;->generateLoggingId(Ljava/lang/String;I)J
-HPLcom/android/server/job/controllers/JobStatus;->generateNamespaceHash(Ljava/lang/String;)Ljava/lang/String;
-HPLcom/android/server/job/controllers/JobStatus;->getAppTraceTag()Ljava/lang/String;
-PLcom/android/server/job/controllers/JobStatus;->getBatteryName()Ljava/lang/String;
-HPLcom/android/server/job/controllers/JobStatus;->getBias()I
-PLcom/android/server/job/controllers/JobStatus;->getCallingPackageName()Ljava/lang/String;
-PLcom/android/server/job/controllers/JobStatus;->getCumulativeExecutionTimeMs()J
-HPLcom/android/server/job/controllers/JobStatus;->getEarliestRunTime()J
-HPLcom/android/server/job/controllers/JobStatus;->getEffectivePriority()I
-HPLcom/android/server/job/controllers/JobStatus;->getEffectiveStandbyBucket()I
-HPLcom/android/server/job/controllers/JobStatus;->getEstimatedNetworkDownloadBytes()J
-HPLcom/android/server/job/controllers/JobStatus;->getEstimatedNetworkUploadBytes()J
-HPLcom/android/server/job/controllers/JobStatus;->getFilteredDebugTags()[Ljava/lang/String;
-HPLcom/android/server/job/controllers/JobStatus;->getFilteredTraceTag()Ljava/lang/String;
-PLcom/android/server/job/controllers/JobStatus;->getFirstForceBatchedTimeElapsed()J
-HPLcom/android/server/job/controllers/JobStatus;->getFlags()I
-HPLcom/android/server/job/controllers/JobStatus;->getInternalFlags()I
-PLcom/android/server/job/controllers/JobStatus;->getJob()Landroid/app/job/JobInfo;
-HPLcom/android/server/job/controllers/JobStatus;->getJobId()I
-PLcom/android/server/job/controllers/JobStatus;->getLastFailedRunTime()J
-PLcom/android/server/job/controllers/JobStatus;->getLastSuccessfulRunTime()J
-HPLcom/android/server/job/controllers/JobStatus;->getLatestRunTimeElapsed()J
-PLcom/android/server/job/controllers/JobStatus;->getLoggingJobId()J
-PLcom/android/server/job/controllers/JobStatus;->getNamespace()Ljava/lang/String;
-PLcom/android/server/job/controllers/JobStatus;->getNamespaceHash()Ljava/lang/String;
-PLcom/android/server/job/controllers/JobStatus;->getNumAppliedFlexibleConstraints()I
-HPLcom/android/server/job/controllers/JobStatus;->getNumDroppedFlexibleConstraints()I
-PLcom/android/server/job/controllers/JobStatus;->getNumFailures()I
-HPLcom/android/server/job/controllers/JobStatus;->getNumPreviousAttempts()I
-HPLcom/android/server/job/controllers/JobStatus;->getNumRequiredFlexibleConstraints()I
-PLcom/android/server/job/controllers/JobStatus;->getNumSystemStops()I
-PLcom/android/server/job/controllers/JobStatus;->getOriginalLatestRunTimeElapsed()J
-PLcom/android/server/job/controllers/JobStatus;->getPersistedUtcTimes()Landroid/util/Pair;
-PLcom/android/server/job/controllers/JobStatus;->getProtoConstraint(I)I
-HPLcom/android/server/job/controllers/JobStatus;->getServiceComponent()Landroid/content/ComponentName;
-HPLcom/android/server/job/controllers/JobStatus;->getSourcePackageName()Ljava/lang/String;
-HPLcom/android/server/job/controllers/JobStatus;->getSourceTag()Ljava/lang/String;
-HPLcom/android/server/job/controllers/JobStatus;->getSourceUid()I
-HPLcom/android/server/job/controllers/JobStatus;->getSourceUserId()I
-HPLcom/android/server/job/controllers/JobStatus;->getStandbyBucket()I
-HPLcom/android/server/job/controllers/JobStatus;->getTimeoutBlamePackageName()Ljava/lang/String;
+HPLcom/android/server/job/controllers/JobStatus;->dump(Landroid/util/IndentingPrintWriter;ZJ)V
+HPLcom/android/server/job/controllers/JobStatus;->dumpConstraints(ILjava/io/PrintWriter;)V
+PLcom/android/server/job/controllers/JobStatus;->enqueueWorkLocked(Landroid/app/job/JobWorkItem;)V
+HPLcom/android/server/job/controllers/JobStatus;->getEffectivePriority()I+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
+HPLcom/android/server/job/controllers/JobStatus;->getEffectiveStandbyBucket()I+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/JobSchedulerInternal;Lcom/android/server/job/JobSchedulerService$LocalService;
+HPLcom/android/server/job/controllers/JobStatus;->getFilteredDebugTags()[Ljava/lang/String;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
+HPLcom/android/server/job/controllers/JobStatus;->getFilteredTraceTag()Ljava/lang/String;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
+PLcom/android/server/job/controllers/JobStatus;->getNumPreviousAttempts()I
+PLcom/android/server/job/controllers/JobStatus;->getNumRequiredFlexibleConstraints()I
+PLcom/android/server/job/controllers/JobStatus;->getSourceUid()I
+HPLcom/android/server/job/controllers/JobStatus;->getTimeoutBlamePackageName()Ljava/lang/String;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
HPLcom/android/server/job/controllers/JobStatus;->getTimeoutBlameUserId()I
-HPLcom/android/server/job/controllers/JobStatus;->getUid()I
-HPLcom/android/server/job/controllers/JobStatus;->getUserId()I
+PLcom/android/server/job/controllers/JobStatus;->getTriggerContentMaxDelay()J
+PLcom/android/server/job/controllers/JobStatus;->getTriggerContentUpdateDelay()J
HPLcom/android/server/job/controllers/JobStatus;->getWakelockTag()Ljava/lang/String;
-PLcom/android/server/job/controllers/JobStatus;->getWhenStandbyDeferred()J
-HPLcom/android/server/job/controllers/JobStatus;->getWorkCount()I
-HPLcom/android/server/job/controllers/JobStatus;->hasBatteryNotLowConstraint()Z
-HPLcom/android/server/job/controllers/JobStatus;->hasChargingConstraint()Z
+HPLcom/android/server/job/controllers/JobStatus;->getWorkCount()I+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/job/controllers/JobStatus;->hasConnectivityConstraint()Z
HPLcom/android/server/job/controllers/JobStatus;->hasConstraint(I)Z
HPLcom/android/server/job/controllers/JobStatus;->hasContentTriggerConstraint()Z
-HPLcom/android/server/job/controllers/JobStatus;->hasDeadlineConstraint()Z
-PLcom/android/server/job/controllers/JobStatus;->hasExecutingWorkLocked()Z
-HPLcom/android/server/job/controllers/JobStatus;->hasFlexibilityConstraint()Z
-HPLcom/android/server/job/controllers/JobStatus;->hasIdleConstraint()Z
-HPLcom/android/server/job/controllers/JobStatus;->hasPowerConstraint()Z
-HPLcom/android/server/job/controllers/JobStatus;->hasStorageNotLowConstraint()Z
-HPLcom/android/server/job/controllers/JobStatus;->hasTimingDelayConstraint()Z
-PLcom/android/server/job/controllers/JobStatus;->incrementCumulativeExecutionTime(J)V
+PLcom/android/server/job/controllers/JobStatus;->hasFlexibilityConstraint()Z
HPLcom/android/server/job/controllers/JobStatus;->isConstraintSatisfied(I)Z
HPLcom/android/server/job/controllers/JobStatus;->isConstraintsSatisfied(I)Z
-HPLcom/android/server/job/controllers/JobStatus;->isPersisted()Z
-HPLcom/android/server/job/controllers/JobStatus;->isPreparedLocked()Z
-HPLcom/android/server/job/controllers/JobStatus;->isProxyJob()Z
-HPLcom/android/server/job/controllers/JobStatus;->isReady()Z
HPLcom/android/server/job/controllers/JobStatus;->isReady(I)Z
-HPLcom/android/server/job/controllers/JobStatus;->isRequestedExpeditedJob()Z
+HPLcom/android/server/job/controllers/JobStatus;->isRequestedExpeditedJob()Z+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
HPLcom/android/server/job/controllers/JobStatus;->isUserVisibleJob()Z
-HPLcom/android/server/job/controllers/JobStatus;->maybeAddForegroundExemption(Ljava/util/function/Predicate;)V
+HPLcom/android/server/job/controllers/JobStatus;->maybeAddForegroundExemption(Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda1;)V
HPLcom/android/server/job/controllers/JobStatus;->prepareLocked()V
+PLcom/android/server/job/controllers/JobStatus;->printUniqueId(Ljava/io/PrintWriter;)V
HPLcom/android/server/job/controllers/JobStatus;->readinessStatusWithConstraint(IZ)Z
-HPLcom/android/server/job/controllers/JobStatus;->setBackgroundNotRestrictedConstraintSatisfied(JZZ)Z
-PLcom/android/server/job/controllers/JobStatus;->setBatteryNotLowConstraintSatisfied(JZ)Z
-PLcom/android/server/job/controllers/JobStatus;->setChargingConstraintSatisfied(JZ)Z
-PLcom/android/server/job/controllers/JobStatus;->setConnectivityConstraintSatisfied(JZ)Z
-HPLcom/android/server/job/controllers/JobStatus;->setConstraintSatisfied(IJZ)Z
-PLcom/android/server/job/controllers/JobStatus;->setContentTriggerConstraintSatisfied(JZ)Z
-PLcom/android/server/job/controllers/JobStatus;->setDeadlineConstraintSatisfied(JZ)Z
-HPLcom/android/server/job/controllers/JobStatus;->setDeviceNotDozingConstraintSatisfied(JZZ)Z
-HPLcom/android/server/job/controllers/JobStatus;->setExpeditedJobQuotaApproved(JZ)Z
-HPLcom/android/server/job/controllers/JobStatus;->setExpeditedJobTareApproved(JZ)Z
-HPLcom/android/server/job/controllers/JobStatus;->setFlexibilityConstraintSatisfied(JZ)Z
-PLcom/android/server/job/controllers/JobStatus;->setIdleConstraintSatisfied(JZ)Z
-HPLcom/android/server/job/controllers/JobStatus;->setNumAppliedFlexibleConstraints(I)V
-HPLcom/android/server/job/controllers/JobStatus;->setQuotaConstraintSatisfied(JZ)Z
-PLcom/android/server/job/controllers/JobStatus;->setStandbyBucket(I)V
-HPLcom/android/server/job/controllers/JobStatus;->setTareWealthConstraintSatisfied(JZ)Z
-PLcom/android/server/job/controllers/JobStatus;->setTimingDelayConstraintSatisfied(JZ)Z
-HPLcom/android/server/job/controllers/JobStatus;->setTrackingController(I)V
-PLcom/android/server/job/controllers/JobStatus;->setTransportAffinitiesSatisfied(Z)V
-HPLcom/android/server/job/controllers/JobStatus;->setUidActive(Z)Z
-HPLcom/android/server/job/controllers/JobStatus;->shouldBlameSourceForTimeout()Z
+HPLcom/android/server/job/controllers/JobStatus;->setConstraintSatisfied(IJZ)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList$SubList;,Ljava/util/ArrayList;
+PLcom/android/server/job/controllers/JobStatus;->setTrackingController(I)V
HPLcom/android/server/job/controllers/JobStatus;->shouldTreatAsExpeditedJob()Z
-HPLcom/android/server/job/controllers/JobStatus;->shouldTreatAsUserInitiatedJob()Z
-HPLcom/android/server/job/controllers/JobStatus;->stopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/controllers/JobStatus;->ungrantWorkItem(Landroid/app/job/JobWorkItem;)V
-PLcom/android/server/job/controllers/JobStatus;->ungrantWorkList(Ljava/util/ArrayList;)V
+HPLcom/android/server/job/controllers/JobStatus;->shouldTreatAsUserInitiatedJob()Z+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
+HPLcom/android/server/job/controllers/JobStatus;->toShortString()Ljava/lang/String;
+HPLcom/android/server/job/controllers/JobStatus;->toString()Ljava/lang/String;
HPLcom/android/server/job/controllers/JobStatus;->unprepareLocked()V
-PLcom/android/server/job/controllers/JobStatus;->updateExpeditedDependencies()V
HPLcom/android/server/job/controllers/JobStatus;->updateMediaBackupExemptionStatus()Z
-HPLcom/android/server/job/controllers/JobStatus;->updateNetworkBytesLocked()V
-HPLcom/android/server/job/controllers/JobStatus;->wouldBeReadyWithConstraint(I)Z
+HPLcom/android/server/job/controllers/JobStatus;->updateNetworkBytesLocked()V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/job/controllers/PrefetchController$$ExternalSyntheticLambda1;-><init>(Landroid/util/IndentingPrintWriter;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda5;)V
PLcom/android/server/job/controllers/PrefetchController$1;-><init>(Lcom/android/server/job/controllers/PrefetchController;)V
-PLcom/android/server/job/controllers/PrefetchController$1;->onEstimatedLaunchTimeChanged(ILjava/lang/String;J)V
-PLcom/android/server/job/controllers/PrefetchController$PcConstants;->-$$Nest$fgetmShouldReevaluateConstraints(Lcom/android/server/job/controllers/PrefetchController$PcConstants;)Z
-PLcom/android/server/job/controllers/PrefetchController$PcConstants;->-$$Nest$fputmShouldReevaluateConstraints(Lcom/android/server/job/controllers/PrefetchController$PcConstants;Z)V
PLcom/android/server/job/controllers/PrefetchController$PcConstants;-><init>(Lcom/android/server/job/controllers/PrefetchController;)V
PLcom/android/server/job/controllers/PrefetchController$PcHandler;-><init>(Lcom/android/server/job/controllers/PrefetchController;Landroid/os/Looper;)V
-PLcom/android/server/job/controllers/PrefetchController$PcHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/job/controllers/PrefetchController$PcHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/job/controllers/PrefetchController$ThresholdAlarmListener;-><init>(Lcom/android/server/job/controllers/PrefetchController;Landroid/content/Context;Landroid/os/Looper;)V
-PLcom/android/server/job/controllers/PrefetchController$ThresholdAlarmListener;-><init>(Lcom/android/server/job/controllers/PrefetchController;Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/job/controllers/PrefetchController$ThresholdAlarmListener-IA;)V
-PLcom/android/server/job/controllers/PrefetchController;->-$$Nest$fgetmHandler(Lcom/android/server/job/controllers/PrefetchController;)Lcom/android/server/job/controllers/PrefetchController$PcHandler;
-PLcom/android/server/job/controllers/PrefetchController;->-$$Nest$mmaybeUpdateConstraintForUid(Lcom/android/server/job/controllers/PrefetchController;I)V
PLcom/android/server/job/controllers/PrefetchController;->-$$Nest$mprocessUpdatedEstimatedLaunchTime(Lcom/android/server/job/controllers/PrefetchController;ILjava/lang/String;J)V
PLcom/android/server/job/controllers/PrefetchController;-><clinit>()V
PLcom/android/server/job/controllers/PrefetchController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/controllers/PrefetchController;->dumpConstants(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/job/controllers/PrefetchController;->dumpControllerStateLocked(Landroid/util/IndentingPrintWriter;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda5;)V
HPLcom/android/server/job/controllers/PrefetchController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
HPLcom/android/server/job/controllers/PrefetchController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/controllers/PrefetchController;->maybeUpdateConstraintForUid(I)V
PLcom/android/server/job/controllers/PrefetchController;->onConstantsUpdatedLocked()V
PLcom/android/server/job/controllers/PrefetchController;->onSystemServicesReady()V
PLcom/android/server/job/controllers/PrefetchController;->onUidBiasChangedLocked(III)V
PLcom/android/server/job/controllers/PrefetchController;->prepareForUpdatedConstantsLocked()V
-PLcom/android/server/job/controllers/PrefetchController;->processUpdatedEstimatedLaunchTime(ILjava/lang/String;J)V
PLcom/android/server/job/controllers/PrefetchController;->startTrackingLocked()V
-PLcom/android/server/job/controllers/QuotaController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/controllers/QuotaController;)V
+PLcom/android/server/job/controllers/QuotaController$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/job/controllers/QuotaController$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/job/controllers/QuotaController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/job/controllers/QuotaController;I)V
+PLcom/android/server/job/controllers/QuotaController$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/job/controllers/QuotaController$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda5;Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/job/controllers/QuotaController$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V
PLcom/android/server/job/controllers/QuotaController$1;-><init>(Lcom/android/server/job/controllers/QuotaController;)V
-PLcom/android/server/job/controllers/QuotaController$EarliestEndTimeFunctor;-><init>(Lcom/android/server/job/controllers/QuotaController;)V
-PLcom/android/server/job/controllers/QuotaController$EarliestEndTimeFunctor;-><init>(Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController$EarliestEndTimeFunctor-IA;)V
+PLcom/android/server/job/controllers/QuotaController$EarliestEndTimeFunctor;->accept(Ljava/lang/Object;)V
PLcom/android/server/job/controllers/QuotaController$ExecutionStats;-><init>()V
+PLcom/android/server/job/controllers/QuotaController$ExecutionStats;->toString()Ljava/lang/String;
PLcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;-><init>(Lcom/android/server/job/controllers/QuotaController;Landroid/content/Context;Landroid/os/Looper;)V
-PLcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;-><init>(Lcom/android/server/job/controllers/QuotaController;Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue-IA;)V
-PLcom/android/server/job/controllers/QuotaController$QcConstants;->-$$Nest$fgetmShouldReevaluateConstraints(Lcom/android/server/job/controllers/QuotaController$QcConstants;)Z
-PLcom/android/server/job/controllers/QuotaController$QcConstants;->-$$Nest$fputmEJLimitConstantsUpdated(Lcom/android/server/job/controllers/QuotaController$QcConstants;Z)V
-PLcom/android/server/job/controllers/QuotaController$QcConstants;->-$$Nest$fputmExecutionPeriodConstantsUpdated(Lcom/android/server/job/controllers/QuotaController$QcConstants;Z)V
-PLcom/android/server/job/controllers/QuotaController$QcConstants;->-$$Nest$fputmQuotaBumpConstantsUpdated(Lcom/android/server/job/controllers/QuotaController$QcConstants;Z)V
-PLcom/android/server/job/controllers/QuotaController$QcConstants;->-$$Nest$fputmRateLimitingConstantsUpdated(Lcom/android/server/job/controllers/QuotaController$QcConstants;Z)V
-PLcom/android/server/job/controllers/QuotaController$QcConstants;->-$$Nest$fputmShouldReevaluateConstraints(Lcom/android/server/job/controllers/QuotaController$QcConstants;Z)V
+PLcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;->processExpiredAlarms(Landroid/util/ArraySet;)V
PLcom/android/server/job/controllers/QuotaController$QcConstants;-><init>(Lcom/android/server/job/controllers/QuotaController;)V
PLcom/android/server/job/controllers/QuotaController$QcHandler;-><init>(Lcom/android/server/job/controllers/QuotaController;Landroid/os/Looper;)V
-HPLcom/android/server/job/controllers/QuotaController$QcHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/job/controllers/QuotaController$QcHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;
PLcom/android/server/job/controllers/QuotaController$QcUidObserver;-><init>(Lcom/android/server/job/controllers/QuotaController;)V
-PLcom/android/server/job/controllers/QuotaController$QcUidObserver;-><init>(Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController$QcUidObserver-IA;)V
-HPLcom/android/server/job/controllers/QuotaController$QcUidObserver;->onUidStateChanged(IIJI)V
-PLcom/android/server/job/controllers/QuotaController$ShrinkableDebits;-><init>(I)V
-PLcom/android/server/job/controllers/QuotaController$ShrinkableDebits;->getStandbyBucketLocked()I
-PLcom/android/server/job/controllers/QuotaController$ShrinkableDebits;->getTallyLocked()J
-PLcom/android/server/job/controllers/QuotaController$ShrinkableDebits;->setStandbyBucketLocked(I)V
+PLcom/android/server/job/controllers/QuotaController$QcUidObserver;->onUidStateChanged(IIJI)V
+PLcom/android/server/job/controllers/QuotaController$ShrinkableDebits;->toString()Ljava/lang/String;
PLcom/android/server/job/controllers/QuotaController$ShrinkableDebits;->transactLocked(J)J
-HPLcom/android/server/job/controllers/QuotaController$StandbyTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/controllers/QuotaController$StandbyTracker;IILjava/lang/String;)V
+PLcom/android/server/job/controllers/QuotaController$StandbyTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/controllers/QuotaController$StandbyTracker;IILjava/lang/String;)V
PLcom/android/server/job/controllers/QuotaController$StandbyTracker$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/job/controllers/QuotaController$StandbyTracker;->$r8$lambda$t09qsupi5NrKPja4qQPLgVYLvys(Lcom/android/server/job/controllers/QuotaController$StandbyTracker;IILjava/lang/String;)V
PLcom/android/server/job/controllers/QuotaController$StandbyTracker;-><init>(Lcom/android/server/job/controllers/QuotaController;)V
-PLcom/android/server/job/controllers/QuotaController$StandbyTracker;->lambda$onAppIdleStateChanged$0(IILjava/lang/String;)V
-HPLcom/android/server/job/controllers/QuotaController$StandbyTracker;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
+PLcom/android/server/job/controllers/QuotaController$StandbyTracker;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
PLcom/android/server/job/controllers/QuotaController$TempAllowlistTracker;-><init>(Lcom/android/server/job/controllers/QuotaController;)V
HPLcom/android/server/job/controllers/QuotaController$TempAllowlistTracker;->onAppAdded(I)V
HPLcom/android/server/job/controllers/QuotaController$TempAllowlistTracker;->onAppRemoved(I)V
-PLcom/android/server/job/controllers/QuotaController$TimedEventTooOldPredicate;-><init>()V
-PLcom/android/server/job/controllers/QuotaController$TimedEventTooOldPredicate;-><init>(Lcom/android/server/job/controllers/QuotaController$TimedEventTooOldPredicate-IA;)V
-HPLcom/android/server/job/controllers/QuotaController$Timer;-><init>(Lcom/android/server/job/controllers/QuotaController;IILjava/lang/String;Z)V
-PLcom/android/server/job/controllers/QuotaController$Timer;->emitSessionLocked(J)V
-PLcom/android/server/job/controllers/QuotaController$Timer;->getCurrentDuration(J)J
-PLcom/android/server/job/controllers/QuotaController$Timer;->isActive()Z
+PLcom/android/server/job/controllers/QuotaController$Timer;-><init>(Lcom/android/server/job/controllers/QuotaController;IILjava/lang/String;Z)V
+PLcom/android/server/job/controllers/QuotaController$Timer;->cancelCutoff()V
+PLcom/android/server/job/controllers/QuotaController$Timer;->dump(Landroid/util/IndentingPrintWriter;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda5;)V
+HPLcom/android/server/job/controllers/QuotaController$Timer;->emitSessionLocked(J)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;
+HPLcom/android/server/job/controllers/QuotaController$Timer;->getCurrentDuration(J)J
+HPLcom/android/server/job/controllers/QuotaController$Timer;->isActive()Z
PLcom/android/server/job/controllers/QuotaController$Timer;->onStateChangedLocked(JZ)V
-HPLcom/android/server/job/controllers/QuotaController$Timer;->shouldTrackLocked()Z
-HPLcom/android/server/job/controllers/QuotaController$Timer;->startTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/QuotaController$Timer;->scheduleCutoff()V
+HPLcom/android/server/job/controllers/QuotaController$Timer;->shouldTrackLocked()Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;
HPLcom/android/server/job/controllers/QuotaController$Timer;->stopTrackingJob(Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/controllers/QuotaController$TimerChargingUpdateFunctor;-><init>(Lcom/android/server/job/controllers/QuotaController;)V
-PLcom/android/server/job/controllers/QuotaController$TimerChargingUpdateFunctor;-><init>(Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController$TimerChargingUpdateFunctor-IA;)V
+PLcom/android/server/job/controllers/QuotaController$TimerChargingUpdateFunctor;->accept(Ljava/lang/Object;)V
+PLcom/android/server/job/controllers/QuotaController$TimingSession;-><init>(IJJ)V
+PLcom/android/server/job/controllers/QuotaController$TimingSession;->dump(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/job/controllers/QuotaController$TimingSession;->getEndTimeElapsed()J
PLcom/android/server/job/controllers/QuotaController$TopAppTimer;-><init>(Lcom/android/server/job/controllers/QuotaController;ILjava/lang/String;)V
-PLcom/android/server/job/controllers/QuotaController$TopAppTimer;->calculateTimeChunks(J)I
-PLcom/android/server/job/controllers/QuotaController$TopAppTimer;->getPendingReward(J)J
-PLcom/android/server/job/controllers/QuotaController$TopAppTimer;->processEventLocked(Landroid/app/usage/UsageEvents$Event;)V
+HPLcom/android/server/job/controllers/QuotaController$TopAppTimer;->processEventLocked(Landroid/app/usage/UsageEvents$Event;)V
PLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;-><init>(Lcom/android/server/job/controllers/QuotaController;)V
-PLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;-><init>(Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController$UidConstraintUpdater-IA;)V
-HPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->accept(Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->postProcess()V
-HPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->prepare()V
-HPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->reset()V
+HPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->accept(Ljava/lang/Object;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;
PLcom/android/server/job/controllers/QuotaController$UsageEventTracker;-><init>(Lcom/android/server/job/controllers/QuotaController;)V
-HPLcom/android/server/job/controllers/QuotaController$UsageEventTracker;->onUsageEvent(ILandroid/app/usage/UsageEvents$Event;)V
-HPLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmEJGracePeriodTempAllowlistMs(Lcom/android/server/job/controllers/QuotaController;)J
-PLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmEJGracePeriodTopAppMs(Lcom/android/server/job/controllers/QuotaController;)J
-HPLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmEJPkgTimers(Lcom/android/server/job/controllers/QuotaController;)Landroid/util/SparseArrayMap;
-PLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmEJRewardInteractionMs(Lcom/android/server/job/controllers/QuotaController;)J
-PLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmEJRewardTopAppMs(Lcom/android/server/job/controllers/QuotaController;)J
-PLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmEJTopAppTimeChunkSizeMs(Lcom/android/server/job/controllers/QuotaController;)J
-HPLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmForegroundUids(Lcom/android/server/job/controllers/QuotaController;)Landroid/util/SparseBooleanArray;
-HPLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmHandler(Lcom/android/server/job/controllers/QuotaController;)Lcom/android/server/job/controllers/QuotaController$QcHandler;
-PLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmInQuotaAlarmQueue(Lcom/android/server/job/controllers/QuotaController;)Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;
-HPLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmPkgTimers(Lcom/android/server/job/controllers/QuotaController;)Landroid/util/SparseArrayMap;
-HPLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmTempAllowlistCache(Lcom/android/server/job/controllers/QuotaController;)Landroid/util/SparseBooleanArray;
-PLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmTempAllowlistGraceCache(Lcom/android/server/job/controllers/QuotaController;)Landroid/util/SparseLongArray;
-HPLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmTopAppCache(Lcom/android/server/job/controllers/QuotaController;)Landroid/util/SparseBooleanArray;
-PLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmTopAppGraceCache(Lcom/android/server/job/controllers/QuotaController;)Landroid/util/SparseLongArray;
-PLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmTopAppTrackers(Lcom/android/server/job/controllers/QuotaController;)Landroid/util/SparseArrayMap;
+PLcom/android/server/job/controllers/QuotaController$UsageEventTracker;->onUsageEvent(ILandroid/app/usage/UsageEvents$Event;)V
PLcom/android/server/job/controllers/QuotaController;->-$$Nest$mgrantRewardForInstantEvent(Lcom/android/server/job/controllers/QuotaController;ILjava/lang/String;J)V
-PLcom/android/server/job/controllers/QuotaController;->-$$Nest$mhasTempAllowlistExemptionLocked(Lcom/android/server/job/controllers/QuotaController;IIJ)Z
-PLcom/android/server/job/controllers/QuotaController;->-$$Nest$misQuotaFreeLocked(Lcom/android/server/job/controllers/QuotaController;I)Z
-PLcom/android/server/job/controllers/QuotaController;->-$$Nest$misTopStartedJobLocked(Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/controllers/QuotaController;->-$$Nest$mmaybeUpdateConstraintForPkgLocked(Lcom/android/server/job/controllers/QuotaController;JILjava/lang/String;)Landroid/util/ArraySet;
-HPLcom/android/server/job/controllers/QuotaController;->-$$Nest$mmaybeUpdateConstraintForUidLocked(Lcom/android/server/job/controllers/QuotaController;I)Landroid/util/ArraySet;
-PLcom/android/server/job/controllers/QuotaController;->-$$Nest$msetConstraintSatisfied(Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/JobStatus;JZZ)Z
-PLcom/android/server/job/controllers/QuotaController;->-$$Nest$msetExpeditedQuotaApproved(Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/JobStatus;JZ)Z
-PLcom/android/server/job/controllers/QuotaController;->-$$Nest$mtransactQuotaLocked(Lcom/android/server/job/controllers/QuotaController;ILjava/lang/String;JLcom/android/server/job/controllers/QuotaController$ShrinkableDebits;J)Z
-HPLcom/android/server/job/controllers/QuotaController;->-$$Nest$sfgetDEBUG()Z
+HPLcom/android/server/job/controllers/QuotaController;->-$$Nest$mmaybeUpdateConstraintForUidLocked(Lcom/android/server/job/controllers/QuotaController;I)Landroid/util/ArraySet;+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;
+PLcom/android/server/job/controllers/QuotaController;->-$$Nest$smhashLong(J)I
PLcom/android/server/job/controllers/QuotaController;-><clinit>()V
-HPLcom/android/server/job/controllers/QuotaController;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/BackgroundJobsController;Lcom/android/server/job/controllers/ConnectivityController;)V
+PLcom/android/server/job/controllers/QuotaController;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/BackgroundJobsController;Lcom/android/server/job/controllers/ConnectivityController;)V
PLcom/android/server/job/controllers/QuotaController;->cacheInstallerPackagesLocked(I)V
+HPLcom/android/server/job/controllers/QuotaController;->calculateTimeUntilQuotaConsumedLocked(JJLjava/util/List;)J+]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/job/controllers/QuotaController;->dumpConstants(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/job/controllers/QuotaController;->dumpControllerStateLocked(Landroid/util/IndentingPrintWriter;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda5;)V
HPLcom/android/server/job/controllers/QuotaController;->getEJDebitsLocked(ILjava/lang/String;)Lcom/android/server/job/controllers/QuotaController$ShrinkableDebits;
-HPLcom/android/server/job/controllers/QuotaController;->getEJLimitMsLocked(ILjava/lang/String;I)J
+HPLcom/android/server/job/controllers/QuotaController;->getEJLimitMsLocked(IILjava/lang/String;)J
PLcom/android/server/job/controllers/QuotaController;->getExecutionStatsLocked(ILjava/lang/String;I)Lcom/android/server/job/controllers/QuotaController$ExecutionStats;
-HPLcom/android/server/job/controllers/QuotaController;->getExecutionStatsLocked(ILjava/lang/String;IZ)Lcom/android/server/job/controllers/QuotaController$ExecutionStats;
-HPLcom/android/server/job/controllers/QuotaController;->getMaxJobExecutionTimeMsLocked(Lcom/android/server/job/controllers/JobStatus;)J
-HPLcom/android/server/job/controllers/QuotaController;->getRemainingEJExecutionTimeLocked(ILjava/lang/String;)J
-PLcom/android/server/job/controllers/QuotaController;->grantRewardForInstantEvent(ILjava/lang/String;J)V
+HPLcom/android/server/job/controllers/QuotaController;->getExecutionStatsLocked(ILjava/lang/String;IZ)Lcom/android/server/job/controllers/QuotaController$ExecutionStats;+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;
+HPLcom/android/server/job/controllers/QuotaController;->getMaxJobExecutionTimeMsLocked(Lcom/android/server/job/controllers/JobStatus;)J+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
+PLcom/android/server/job/controllers/QuotaController;->getProcessStateQuotaFreeThreshold(I)I
+HPLcom/android/server/job/controllers/QuotaController;->getRemainingEJExecutionTimeLocked(ILjava/lang/String;)J+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/job/controllers/QuotaController;->getRemainingExecutionTimeLocked(ILjava/lang/String;)J
+PLcom/android/server/job/controllers/QuotaController;->getRemainingExecutionTimeLocked(Lcom/android/server/job/controllers/JobStatus;)J
+HPLcom/android/server/job/controllers/QuotaController;->getTimeUntilEJQuotaConsumedLocked(ILjava/lang/String;)J
+HPLcom/android/server/job/controllers/QuotaController;->getTimeUntilQuotaConsumedLocked(ILjava/lang/String;)J+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/util/List;Ljava/util/ArrayList;
PLcom/android/server/job/controllers/QuotaController;->hasTempAllowlistExemptionLocked(IIJ)Z
-HPLcom/android/server/job/controllers/QuotaController;->isQuotaFreeLocked(I)Z
+HPLcom/android/server/job/controllers/QuotaController;->incrementJobCountLocked(ILjava/lang/String;I)V
+HPLcom/android/server/job/controllers/QuotaController;->invalidateAllExecutionStatsLocked(ILjava/lang/String;)V
+PLcom/android/server/job/controllers/QuotaController;->isQuotaFreeLocked(I)Z
HPLcom/android/server/job/controllers/QuotaController;->isTopStartedJobLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-HPLcom/android/server/job/controllers/QuotaController;->isUidInForeground(I)Z
-HPLcom/android/server/job/controllers/QuotaController;->isUnderJobCountQuotaLocked(Lcom/android/server/job/controllers/QuotaController$ExecutionStats;I)Z
-HPLcom/android/server/job/controllers/QuotaController;->isUnderSessionCountQuotaLocked(Lcom/android/server/job/controllers/QuotaController$ExecutionStats;I)Z
+HPLcom/android/server/job/controllers/QuotaController;->isUidInForeground(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
+HPLcom/android/server/job/controllers/QuotaController;->isUnderJobCountQuotaLocked(Lcom/android/server/job/controllers/QuotaController$ExecutionStats;)Z
+HPLcom/android/server/job/controllers/QuotaController;->isUnderSessionCountQuotaLocked(Lcom/android/server/job/controllers/QuotaController$ExecutionStats;)Z
PLcom/android/server/job/controllers/QuotaController;->isWithinEJQuotaLocked(Lcom/android/server/job/controllers/JobStatus;)Z
HPLcom/android/server/job/controllers/QuotaController;->isWithinQuotaLocked(ILjava/lang/String;I)Z
HPLcom/android/server/job/controllers/QuotaController;->isWithinQuotaLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-HPLcom/android/server/job/controllers/QuotaController;->maybeScheduleStartAlarmLocked(ILjava/lang/String;I)V
+PLcom/android/server/job/controllers/QuotaController;->maybeScheduleCleanupAlarmLocked()V
+HPLcom/android/server/job/controllers/QuotaController;->maybeScheduleStartAlarmLocked(ILjava/lang/String;I)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;
HPLcom/android/server/job/controllers/QuotaController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
HPLcom/android/server/job/controllers/QuotaController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/controllers/QuotaController;->maybeUpdateConstraintForPkgLocked(JILjava/lang/String;)Landroid/util/ArraySet;
-HPLcom/android/server/job/controllers/QuotaController;->maybeUpdateConstraintForUidLocked(I)Landroid/util/ArraySet;
+PLcom/android/server/job/controllers/QuotaController;->maybeUpdateAllConstraintsLocked()V
+HPLcom/android/server/job/controllers/QuotaController;->maybeUpdateConstraintForPkgLocked(ILjava/lang/String;J)Landroid/util/ArraySet;+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;
+PLcom/android/server/job/controllers/QuotaController;->onBatteryStateChangedLocked()V
PLcom/android/server/job/controllers/QuotaController;->onConstantsUpdatedLocked()V
PLcom/android/server/job/controllers/QuotaController;->onSystemServicesReady()V
HPLcom/android/server/job/controllers/QuotaController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/QuotaController;->prepareForUpdatedConstantsLocked()V
+PLcom/android/server/job/controllers/QuotaController;->saveTimingSession(ILjava/lang/String;Lcom/android/server/job/controllers/QuotaController$TimingSession;ZJ)V
HPLcom/android/server/job/controllers/QuotaController;->setConstraintSatisfied(Lcom/android/server/job/controllers/JobStatus;JZZ)Z
-HPLcom/android/server/job/controllers/QuotaController;->setExpeditedQuotaApproved(Lcom/android/server/job/controllers/JobStatus;JZ)Z
+HPLcom/android/server/job/controllers/QuotaController;->setExpeditedQuotaApproved(Lcom/android/server/job/controllers/JobStatus;Z)Z
PLcom/android/server/job/controllers/QuotaController;->transactQuotaLocked(ILjava/lang/String;JLcom/android/server/job/controllers/QuotaController$ShrinkableDebits;J)Z
HPLcom/android/server/job/controllers/QuotaController;->unprepareFromExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/controllers/QuotaController;->updateExecutionStatsLocked(ILjava/lang/String;Lcom/android/server/job/controllers/QuotaController$ExecutionStats;)V
-HPLcom/android/server/job/controllers/QuotaController;->updateStandbyBucket(ILjava/lang/String;I)V
-PLcom/android/server/job/controllers/RestrictingController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-HPLcom/android/server/job/controllers/StateController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-PLcom/android/server/job/controllers/StateController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/QuotaController;->updateExecutionStatsLocked(ILjava/lang/String;Lcom/android/server/job/controllers/QuotaController$ExecutionStats;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/job/controllers/QuotaController;->updateStandbyBucket(ILjava/lang/String;I)V
+PLcom/android/server/job/controllers/StateController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/controllers/StateController;->dumpConstants(Landroid/util/IndentingPrintWriter;)V
+HPLcom/android/server/job/controllers/StateController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/StateController;->logDeviceWideConstraintStateToStatsd(IZ)V
+PLcom/android/server/job/controllers/StateController;->onBatteryStateChangedLocked()V
PLcom/android/server/job/controllers/StateController;->onConstantsUpdatedLocked()V
PLcom/android/server/job/controllers/StateController;->onSystemServicesReady()V
PLcom/android/server/job/controllers/StateController;->onUidBiasChangedLocked(III)V
+PLcom/android/server/job/controllers/StateController;->packageToString(ILjava/lang/String;)Ljava/lang/String;
PLcom/android/server/job/controllers/StateController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/StateController;->prepareForUpdatedConstantsLocked()V
+PLcom/android/server/job/controllers/StateController;->reevaluateStateLocked(I)V
+PLcom/android/server/job/controllers/StateController;->rescheduleForFailureLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/StateController;->startTrackingLocked()V
-HPLcom/android/server/job/controllers/StateController;->wouldBeReadyWithConstraintLocked(Lcom/android/server/job/controllers/JobStatus;I)Z
+HPLcom/android/server/job/controllers/StateController;->wouldBeReadyWithConstraintLocked(Lcom/android/server/job/controllers/JobStatus;I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
PLcom/android/server/job/controllers/StorageController$StorageTracker;-><init>(Lcom/android/server/job/controllers/StorageController;)V
-PLcom/android/server/job/controllers/StorageController$StorageTracker;->startTracking()V
PLcom/android/server/job/controllers/StorageController;-><clinit>()V
PLcom/android/server/job/controllers/StorageController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-HPLcom/android/server/job/controllers/StorageController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/StorageController;->dumpControllerStateLocked(Landroid/util/IndentingPrintWriter;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda5;)V
+PLcom/android/server/job/controllers/StorageController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/StorageController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/StorageController;->startTrackingLocked()V
-PLcom/android/server/job/controllers/TareController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/controllers/TareController;)V
-HPLcom/android/server/job/controllers/TareController;-><clinit>()V
-PLcom/android/server/job/controllers/TareController;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/BackgroundJobsController;Lcom/android/server/job/controllers/ConnectivityController;)V
-HPLcom/android/server/job/controllers/TareController;->addJobToBillList(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/tare/EconomyManagerInternal$ActionBill;)V
-PLcom/android/server/job/controllers/TareController;->canAffordExpeditedBillLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-HPLcom/android/server/job/controllers/TareController;->getPossibleStartBills(Lcom/android/server/job/controllers/JobStatus;)Landroid/util/ArraySet;
-PLcom/android/server/job/controllers/TareController;->getRunningActionId(Lcom/android/server/job/controllers/JobStatus;)I
-HPLcom/android/server/job/controllers/TareController;->getRunningBill(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/tare/EconomyManagerInternal$ActionBill;
-HPLcom/android/server/job/controllers/TareController;->hasEnoughWealthLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-HPLcom/android/server/job/controllers/TareController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/controllers/TareController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/controllers/TareController;->onConstantsUpdatedLocked()V
-HPLcom/android/server/job/controllers/TareController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/controllers/TareController;->removeJobFromBillList(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/tare/EconomyManagerInternal$ActionBill;)V
-HPLcom/android/server/job/controllers/TareController;->setExpeditedTareApproved(Lcom/android/server/job/controllers/JobStatus;JZ)Z
-PLcom/android/server/job/controllers/TimeController$1;-><init>(Lcom/android/server/job/controllers/TimeController;)V
-PLcom/android/server/job/controllers/TimeController$2;-><init>(Lcom/android/server/job/controllers/TimeController;)V
+HPLcom/android/server/job/controllers/TimeController$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/job/controllers/TimeController$2;-><init>(Lcom/android/server/job/controllers/TimeController;I)V
PLcom/android/server/job/controllers/TimeController$2;->onAlarm()V
-PLcom/android/server/job/controllers/TimeController;->-$$Nest$fputmLastFiredDelayExpiredElapsedMillis(Lcom/android/server/job/controllers/TimeController;J)V
-PLcom/android/server/job/controllers/TimeController;->-$$Nest$sfgetDEBUG()Z
PLcom/android/server/job/controllers/TimeController;-><clinit>()V
PLcom/android/server/job/controllers/TimeController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
HPLcom/android/server/job/controllers/TimeController;->canStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-HPLcom/android/server/job/controllers/TimeController;->checkExpiredDeadlinesAndResetAlarm()V
-HPLcom/android/server/job/controllers/TimeController;->checkExpiredDelaysAndResetAlarm()V
-PLcom/android/server/job/controllers/TimeController;->ensureAlarmServiceLocked()V
-HPLcom/android/server/job/controllers/TimeController;->evaluateDeadlineConstraint(Lcom/android/server/job/controllers/JobStatus;J)Z
-HPLcom/android/server/job/controllers/TimeController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/controllers/TimeController;->evaluateTimingDelayConstraint(Lcom/android/server/job/controllers/JobStatus;J)Z
-HPLcom/android/server/job/controllers/TimeController;->maybeAdjustAlarmTime(J)J
+HPLcom/android/server/job/controllers/TimeController;->checkExpiredDeadlinesAndResetAlarm()V+]Ljava/util/Iterator;Ljava/util/PriorityQueue$Itr;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;
+HPLcom/android/server/job/controllers/TimeController;->checkExpiredDelaysAndResetAlarm()V+]Ljava/util/Iterator;Ljava/util/PriorityQueue$Itr;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;
+PLcom/android/server/job/controllers/TimeController;->dumpControllerStateLocked(Landroid/util/IndentingPrintWriter;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda5;)V
+PLcom/android/server/job/controllers/TimeController;->evaluateDeadlineConstraint(Lcom/android/server/job/controllers/JobStatus;J)Z
+HPLcom/android/server/job/controllers/TimeController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;
HPLcom/android/server/job/controllers/TimeController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
HPLcom/android/server/job/controllers/TimeController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/TimeController;->reevaluateStateLocked(I)V
HPLcom/android/server/job/controllers/TimeController;->setDeadlineExpiredAlarmLocked(JLandroid/os/WorkSource;)V
HPLcom/android/server/job/controllers/TimeController;->setDelayExpiredAlarmLocked(JLandroid/os/WorkSource;)V
HPLcom/android/server/job/controllers/TimeController;->updateAlarmWithListenerLocked(Ljava/lang/String;ILandroid/app/AlarmManager$OnAlarmListener;JLandroid/os/WorkSource;)V
PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/controllers/idle/DeviceIdlenessTracker;)V
PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/job/controllers/idle/DeviceIdlenessTracker;)V
+PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker$$ExternalSyntheticLambda1;->onAlarm()V
PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;-><clinit>()V
PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;-><init>()V
+PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;->dumpConstants(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;->exitIdle()V
+PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;->handleIdleTrigger()V
PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;->isIdle()Z
-PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;->startTracking(Landroid/content/Context;Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/idle/IdlenessListener;)V
-PLcom/android/server/job/restrictions/JobRestriction;-><init>(Lcom/android/server/job/JobSchedulerService;III)V
+HPLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;->maybeScheduleIdlenessCheck(Ljava/lang/String;)V
+PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;->onBatteryStateChanged(ZZ)V
+HPLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;->startTracking(Landroid/content/Context;Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/IdleController;)V
PLcom/android/server/job/restrictions/ThermalStatusRestriction$1;-><init>(Lcom/android/server/job/restrictions/ThermalStatusRestriction;)V
PLcom/android/server/job/restrictions/ThermalStatusRestriction$1;->onThermalStatusChanged(I)V
-PLcom/android/server/job/restrictions/ThermalStatusRestriction;->-$$Nest$fgetmThermalStatus(Lcom/android/server/job/restrictions/ThermalStatusRestriction;)I
-PLcom/android/server/job/restrictions/ThermalStatusRestriction;->-$$Nest$fputmThermalStatus(Lcom/android/server/job/restrictions/ThermalStatusRestriction;I)V
PLcom/android/server/job/restrictions/ThermalStatusRestriction;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-HPLcom/android/server/job/restrictions/ThermalStatusRestriction;->isJobRestricted(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/restrictions/ThermalStatusRestriction;->onSystemServicesReady()V
-HSPLcom/android/server/lights/LightsManager;-><init>()V
+HPLcom/android/server/job/restrictions/ThermalStatusRestriction;->isJobRestricted(Lcom/android/server/job/controllers/JobStatus;I)Z+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;
HSPLcom/android/server/lights/LightsService$1;-><init>(Lcom/android/server/lights/LightsService;)V
-HSPLcom/android/server/lights/LightsService$1;->getLight(I)Lcom/android/server/lights/LogicalLight;
-HSPLcom/android/server/lights/LightsService$LightImpl;->-$$Nest$fgetmHwLight(Lcom/android/server/lights/LightsService$LightImpl;)Landroid/hardware/light/HwLight;
-HSPLcom/android/server/lights/LightsService$LightImpl;-><init>(Lcom/android/server/lights/LightsService;Landroid/content/Context;Landroid/hardware/light/HwLight;)V
-HSPLcom/android/server/lights/LightsService$LightImpl;-><init>(Lcom/android/server/lights/LightsService;Landroid/content/Context;Landroid/hardware/light/HwLight;Lcom/android/server/lights/LightsService$LightImpl-IA;)V
-PLcom/android/server/lights/LightsService$LightImpl;->setBrightness(F)V
-PLcom/android/server/lights/LightsService$LightImpl;->setBrightness(FI)V
-PLcom/android/server/lights/LightsService$LightImpl;->setLightLocked(IIIII)V
-HPLcom/android/server/lights/LightsService$LightImpl;->setLightUnchecked(IIIII)V
-PLcom/android/server/lights/LightsService$LightImpl;->shouldBeInLowPersistenceMode()Z
+PLcom/android/server/lights/LightsService$1;->getLight(I)Lcom/android/server/lights/LightsService$LightImpl;
+HSPLcom/android/server/lights/LightsService$LightImpl;-><init>(Lcom/android/server/lights/LightsService;Landroid/hardware/light/HwLight;)V
+PLcom/android/server/lights/LightsService$LightImpl;->setColor(I)V
+HPLcom/android/server/lights/LightsService$LightImpl;->setLightLocked(IIII)V
+PLcom/android/server/lights/LightsService$LightImpl;->turnOff()V
HSPLcom/android/server/lights/LightsService$LightsManagerBinderService;-><init>(Lcom/android/server/lights/LightsService;)V
-HSPLcom/android/server/lights/LightsService$VintfHalCache;-><init>()V
-HSPLcom/android/server/lights/LightsService$VintfHalCache;-><init>(Lcom/android/server/lights/LightsService$VintfHalCache-IA;)V
-HSPLcom/android/server/lights/LightsService$VintfHalCache;->get()Landroid/hardware/light/ILights;
+PLcom/android/server/lights/LightsService$LightsManagerBinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
HSPLcom/android/server/lights/LightsService$VintfHalCache;->get()Ljava/lang/Object;
-HSPLcom/android/server/lights/LightsService;->-$$Nest$fgetmLightsByType(Lcom/android/server/lights/LightsService;)[Lcom/android/server/lights/LightsService$LightImpl;
-PLcom/android/server/lights/LightsService;->-$$Nest$fgetmVintfLights(Lcom/android/server/lights/LightsService;)Ljava/util/function/Supplier;
HSPLcom/android/server/lights/LightsService;-><init>(Landroid/content/Context;)V
HSPLcom/android/server/lights/LightsService;-><init>(Landroid/content/Context;Ljava/util/function/Supplier;Landroid/os/Looper;)V
HSPLcom/android/server/lights/LightsService;->onBootPhase(I)V
HSPLcom/android/server/lights/LightsService;->onStart()V
-HSPLcom/android/server/lights/LightsService;->populateAvailableLights(Landroid/content/Context;)V
-HSPLcom/android/server/lights/LightsService;->populateAvailableLightsFromAidl(Landroid/content/Context;)V
-HSPLcom/android/server/lights/LogicalLight;-><init>()V
+PLcom/android/server/locales/AppLocaleChangedAtomRecord;-><init>(I)V
+PLcom/android/server/locales/AppLocaleChangedAtomRecord;->convertEmptyLocales(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/locales/LocaleManagerBackupHelper$UserMonitor;-><init>(Lcom/android/server/locales/LocaleManagerBackupHelper;)V
-PLcom/android/server/locales/LocaleManagerBackupHelper$UserMonitor;-><init>(Lcom/android/server/locales/LocaleManagerBackupHelper;Lcom/android/server/locales/LocaleManagerBackupHelper$UserMonitor-IA;)V
PLcom/android/server/locales/LocaleManagerBackupHelper;-><clinit>()V
-PLcom/android/server/locales/LocaleManagerBackupHelper;-><init>(Landroid/content/Context;Lcom/android/server/locales/LocaleManagerService;Landroid/content/pm/PackageManager;Ljava/time/Clock;Landroid/util/SparseArray;Landroid/os/HandlerThread;Landroid/content/SharedPreferences;)V
-PLcom/android/server/locales/LocaleManagerBackupHelper;-><init>(Lcom/android/server/locales/LocaleManagerService;Landroid/content/pm/PackageManager;Landroid/os/HandlerThread;)V
-PLcom/android/server/locales/LocaleManagerBackupHelper;->createPersistedInfo()Landroid/content/SharedPreferences;
-PLcom/android/server/locales/LocaleManagerInternal;-><init>()V
-PLcom/android/server/locales/LocaleManagerService$1;-><init>(Lcom/android/server/locales/LocaleManagerService;Lcom/android/server/locales/SystemAppUpdateTracker;)V
+PLcom/android/server/locales/LocaleManagerBackupHelper;-><init>(Landroid/content/Context;Lcom/android/server/locales/LocaleManagerService;Landroid/content/pm/PackageManager;Ljava/time/Clock;Landroid/os/HandlerThread;Landroid/util/SparseArray;Ljava/io/File;Landroid/content/SharedPreferences;)V
+PLcom/android/server/locales/LocaleManagerBackupHelper;->checkStageDataAndApplyRestore(ILjava/lang/String;)V
+PLcom/android/server/locales/LocaleManagerBackupHelper;->cleanStagedDataForOldEntriesLocked(I)V
+PLcom/android/server/locales/LocaleManagerBackupHelper;->getArchivedPackagesFile()Ljava/io/File;
+PLcom/android/server/locales/LocaleManagerBackupHelper;->getStagedDataSp(I)Landroid/content/SharedPreferences;
+PLcom/android/server/locales/LocaleManagerBackupHelper;->persistLocalesModificationInfo(Ljava/lang/String;IZZ)V
+PLcom/android/server/locales/LocaleManagerService$1;-><init>(Lcom/android/server/locales/SystemAppUpdateTracker;)V
PLcom/android/server/locales/LocaleManagerService$1;->run()V
PLcom/android/server/locales/LocaleManagerService$LocaleManagerBinderService;-><init>(Lcom/android/server/locales/LocaleManagerService;)V
-PLcom/android/server/locales/LocaleManagerService$LocaleManagerBinderService;-><init>(Lcom/android/server/locales/LocaleManagerService;Lcom/android/server/locales/LocaleManagerService$LocaleManagerBinderService-IA;)V
+PLcom/android/server/locales/LocaleManagerService$LocaleManagerBinderService;->setApplicationLocales(Ljava/lang/String;ILandroid/os/LocaleList;Z)V
PLcom/android/server/locales/LocaleManagerService$LocaleManagerInternalImpl;-><init>(Lcom/android/server/locales/LocaleManagerService;)V
-PLcom/android/server/locales/LocaleManagerService$LocaleManagerInternalImpl;-><init>(Lcom/android/server/locales/LocaleManagerService;Lcom/android/server/locales/LocaleManagerService$LocaleManagerInternalImpl-IA;)V
+PLcom/android/server/locales/LocaleManagerService$LocaleManagerInternalImpl;->getBackupPayload(I)[B
PLcom/android/server/locales/LocaleManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/locales/LocaleManagerService;->getApplicationLocales(Ljava/lang/String;I)Landroid/os/LocaleList;
+PLcom/android/server/locales/LocaleManagerService;->getApplicationLocalesUnchecked(ILjava/lang/String;)Landroid/os/LocaleList;
+PLcom/android/server/locales/LocaleManagerService;->getInstallingPackageName(ILjava/lang/String;)Ljava/lang/String;
+PLcom/android/server/locales/LocaleManagerService;->getPackageUid(Ljava/lang/String;I)I
+PLcom/android/server/locales/LocaleManagerService;->isPackageOwnedByCaller(Ljava/lang/String;ILcom/android/server/locales/AppLocaleChangedAtomRecord;Lcom/android/server/locales/AppSupportedLocalesChangedAtomRecord;)Z
PLcom/android/server/locales/LocaleManagerService;->onStart()V
-PLcom/android/server/locales/LocaleManagerServicePackageMonitor;-><init>(Lcom/android/server/locales/LocaleManagerBackupHelper;Lcom/android/server/locales/SystemAppUpdateTracker;Lcom/android/server/locales/LocaleManagerService;)V
+PLcom/android/server/locales/LocaleManagerService;->setApplicationLocales(Ljava/lang/String;ILandroid/os/LocaleList;ZI)V
+PLcom/android/server/locales/LocaleManagerService;->setApplicationLocalesUnchecked(Ljava/lang/String;ILandroid/os/LocaleList;Lcom/android/server/locales/AppLocaleChangedAtomRecord;)V
+PLcom/android/server/locales/LocaleManagerServicePackageMonitor;->onPackageAddedWithExtras(Ljava/lang/String;ILandroid/os/Bundle;)V
+PLcom/android/server/locales/LocaleManagerServicePackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V
PLcom/android/server/locales/SystemAppUpdateTracker;-><init>(Landroid/content/Context;Lcom/android/server/locales/LocaleManagerService;Landroid/util/AtomicFile;)V
-PLcom/android/server/locales/SystemAppUpdateTracker;-><init>(Lcom/android/server/locales/LocaleManagerService;)V
-PLcom/android/server/locales/SystemAppUpdateTracker;->init()V
-PLcom/android/server/locales/SystemAppUpdateTracker;->loadUpdatedSystemApps()V
-PLcom/android/server/location/GeocoderProxy;-><init>(Landroid/content/Context;)V
-PLcom/android/server/location/GeocoderProxy;->createAndRegister(Landroid/content/Context;)Lcom/android/server/location/GeocoderProxy;
-PLcom/android/server/location/GeocoderProxy;->register()Z
+PLcom/android/server/locales/SystemAppUpdateTracker;->readFromXml(Ljava/io/InputStream;)V
+PLcom/android/server/locales/SystemAppUpdateTracker;->updateBroadcastedAppsList(Ljava/lang/String;)V
+PLcom/android/server/locales/SystemAppUpdateTracker;->writeToXmlLocked(Ljava/io/OutputStream;)V
PLcom/android/server/location/HardwareActivityRecognitionProxy;-><init>(Landroid/content/Context;)V
-PLcom/android/server/location/HardwareActivityRecognitionProxy;->createAndRegister(Landroid/content/Context;)Lcom/android/server/location/HardwareActivityRecognitionProxy;
-PLcom/android/server/location/HardwareActivityRecognitionProxy;->onBind(Landroid/os/IBinder;Lcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;)V
PLcom/android/server/location/HardwareActivityRecognitionProxy;->onBind(Landroid/os/IBinder;Lcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;)V
-PLcom/android/server/location/HardwareActivityRecognitionProxy;->register()Z
-PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/location/LocationManagerService;)V
-PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda11;-><init>(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;ILandroid/os/PackageTagsList;)V
-PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda11;->run()V
-PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda12;-><init>(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;ILandroid/os/PackageTagsList;)V
-PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda12;->run()V
+PLcom/android/server/location/HardwareActivityRecognitionProxy;->onUnbind()V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda0;-><init>(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda10;-><init>(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;ILandroid/os/PackageTagsList;I)V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda10;->run()V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/LocationManagerService;)V
+HPLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda1;->onOpNoted(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;II)V
PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/location/LocationManagerService;)V
-PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda2;->onOpNoted(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;II)V
PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/location/LocationManagerService;)V
-PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/location/LocationManagerService;)V
-PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/location/LocationManagerService;)V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda3;->onSettingChanged(I)V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/location/LocationManagerService;I)V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda4;->onSettingChanged()V
PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/location/LocationManagerService;)V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda6;->onUserChanged(II)V
PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/location/LocationManagerService;)V
-PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda7;->onUserChanged(II)V
-PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/location/LocationManagerService;)V
-PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/location/LocationManagerService;)V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda7;->onStateChanged()V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/location/LocationManagerService;I)V
PLcom/android/server/location/LocationManagerService$Lifecycle$LifecycleUserInfoHelper;-><init>(Landroid/content/Context;)V
-PLcom/android/server/location/LocationManagerService$Lifecycle$LifecycleUserInfoHelper;->onUserStarted(I)V
+PLcom/android/server/location/LocationManagerService$Lifecycle$LifecycleUserInfoHelper;->getActivityManagerInternal()Landroid/app/ActivityManagerInternal;
+PLcom/android/server/location/LocationManagerService$Lifecycle$LifecycleUserInfoHelper;->getCurrentUserId()I
+PLcom/android/server/location/LocationManagerService$Lifecycle$LifecycleUserInfoHelper;->getRunningUserIds()[I
+PLcom/android/server/location/LocationManagerService$Lifecycle$LifecycleUserInfoHelper;->getUserManager()Landroid/os/UserManager;
+PLcom/android/server/location/LocationManagerService$Lifecycle$LifecycleUserInfoHelper;->isVisibleUserId(I)Z
PLcom/android/server/location/LocationManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/location/LocationManagerService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/location/LocationManagerService$Lifecycle;->onStart()V
PLcom/android/server/location/LocationManagerService$Lifecycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/location/LocationManagerService$LocalService$$ExternalSyntheticLambda0;-><init>(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;ILandroid/os/PackageTagsList;)V
-PLcom/android/server/location/LocationManagerService$LocalService$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/location/LocationManagerService$LocalService;->$r8$lambda$zOgkdbQhX97ia_6zLR94eXWADOo(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;ILandroid/os/PackageTagsList;)V
PLcom/android/server/location/LocationManagerService$LocalService;-><init>(Lcom/android/server/location/LocationManagerService;)V
PLcom/android/server/location/LocationManagerService$LocalService;->addProviderEnabledListener(Ljava/lang/String;Landroid/location/LocationManagerInternal$ProviderEnabledListener;)V
-HPLcom/android/server/location/LocationManagerService$LocalService;->isProvider(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;)Z
-HPLcom/android/server/location/LocationManagerService$LocalService;->isProviderEnabledForUser(Ljava/lang/String;I)Z
-PLcom/android/server/location/LocationManagerService$LocalService;->lambda$setLocationPackageTagsListener$0(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;ILandroid/os/PackageTagsList;)V
+PLcom/android/server/location/LocationManagerService$LocalService;->isProvider(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;)Z
+PLcom/android/server/location/LocationManagerService$LocalService;->isProviderEnabledForUser(Ljava/lang/String;I)Z
+PLcom/android/server/location/LocationManagerService$LocalService;->removeProviderEnabledListener(Ljava/lang/String;Landroid/location/LocationManagerInternal$ProviderEnabledListener;)V
PLcom/android/server/location/LocationManagerService$LocalService;->setLocationPackageTagsListener(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;)V
-PLcom/android/server/location/LocationManagerService$SystemInjector;-><init>(Landroid/content/Context;Lcom/android/server/location/injector/SystemUserInfoHelper;)V
-PLcom/android/server/location/LocationManagerService$SystemInjector;->getAlarmHelper()Lcom/android/server/location/injector/AlarmHelper;
-PLcom/android/server/location/LocationManagerService$SystemInjector;->getAppForegroundHelper()Lcom/android/server/location/injector/AppForegroundHelper;
-PLcom/android/server/location/LocationManagerService$SystemInjector;->getAppOpsHelper()Lcom/android/server/location/injector/AppOpsHelper;
-PLcom/android/server/location/LocationManagerService$SystemInjector;->getEmergencyHelper()Lcom/android/server/location/injector/EmergencyHelper;
-PLcom/android/server/location/LocationManagerService$SystemInjector;->getLocationPermissionsHelper()Lcom/android/server/location/injector/LocationPermissionsHelper;
-PLcom/android/server/location/LocationManagerService$SystemInjector;->getLocationPowerSaveModeHelper()Lcom/android/server/location/injector/LocationPowerSaveModeHelper;
-PLcom/android/server/location/LocationManagerService$SystemInjector;->getLocationSettings()Lcom/android/server/location/settings/LocationSettings;
-PLcom/android/server/location/LocationManagerService$SystemInjector;->getLocationUsageLogger()Lcom/android/server/location/injector/LocationUsageLogger;
-PLcom/android/server/location/LocationManagerService$SystemInjector;->getPackageResetHelper()Lcom/android/server/location/injector/PackageResetHelper;
-PLcom/android/server/location/LocationManagerService$SystemInjector;->getScreenInteractiveHelper()Lcom/android/server/location/injector/ScreenInteractiveHelper;
-PLcom/android/server/location/LocationManagerService$SystemInjector;->getSettingsHelper()Lcom/android/server/location/injector/SettingsHelper;
-PLcom/android/server/location/LocationManagerService$SystemInjector;->getUserInfoHelper()Lcom/android/server/location/injector/UserInfoHelper;
-PLcom/android/server/location/LocationManagerService$SystemInjector;->onSystemReady()V
-PLcom/android/server/location/LocationManagerService;->$r8$lambda$eyTQ4ijUbfA4AoGXfSy3i0Mr-d8(Lcom/android/server/location/LocationManagerService;II)V
-PLcom/android/server/location/LocationManagerService;->$r8$lambda$kwp4RhvxNBiY1jhPHD3YdojaxUw(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;ILandroid/os/PackageTagsList;)V
-PLcom/android/server/location/LocationManagerService;->$r8$lambda$nPBMjpla8mzhPFk-pAdPm6o8AMI(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;ILandroid/os/PackageTagsList;)V
-PLcom/android/server/location/LocationManagerService;->$r8$lambda$ujQuQQ3Bc3ydTqqn2V1w-z0TnO4(Lcom/android/server/location/LocationManagerService;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;II)V
-PLcom/android/server/location/LocationManagerService;->-$$Nest$mlogEmergencyState(Lcom/android/server/location/LocationManagerService;)V
-PLcom/android/server/location/LocationManagerService;->-$$Nest$mlogLocationEnabledState(Lcom/android/server/location/LocationManagerService;)V
+PLcom/android/server/location/LocationManagerService$SystemInjector;-><init>(Landroid/content/Context;Lcom/android/server/location/LocationManagerService$Lifecycle$LifecycleUserInfoHelper;)V
+PLcom/android/server/location/LocationManagerService$SystemInjector;->getEmergencyHelper()Lcom/android/server/location/injector/SystemEmergencyHelper;
PLcom/android/server/location/LocationManagerService;-><clinit>()V
-PLcom/android/server/location/LocationManagerService;-><init>(Landroid/content/Context;Lcom/android/server/location/injector/Injector;)V
+PLcom/android/server/location/LocationManagerService;-><init>(Landroid/content/Context;Lcom/android/server/location/LocationManagerService$SystemInjector;)V
PLcom/android/server/location/LocationManagerService;->addLocationProviderManager(Lcom/android/server/location/provider/LocationProviderManager;Lcom/android/server/location/provider/AbstractLocationProvider;)V
-HPLcom/android/server/location/LocationManagerService;->calculateAppOpsLocationSourceTags(I)Landroid/os/PackageTagsList;
-PLcom/android/server/location/LocationManagerService;->geocoderIsPresent()Z
+PLcom/android/server/location/LocationManagerService;->addProviderRequestListener(Landroid/location/provider/IProviderRequestListener;)V
+PLcom/android/server/location/LocationManagerService;->calculateAppOpsLocationSourceTags(I)Landroid/os/PackageTagsList;
+PLcom/android/server/location/LocationManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/location/LocationManagerService;->getAllProviders()Ljava/util/List;
-HPLcom/android/server/location/LocationManagerService;->getLastLocation(Ljava/lang/String;Landroid/location/LastLocationRequest;Ljava/lang/String;Ljava/lang/String;)Landroid/location/Location;
-HPLcom/android/server/location/LocationManagerService;->getLocationProviderManager(Ljava/lang/String;)Lcom/android/server/location/provider/LocationProviderManager;
+PLcom/android/server/location/LocationManagerService;->getExtraLocationControllerPackage()Ljava/lang/String;
+PLcom/android/server/location/LocationManagerService;->getLastLocation(Ljava/lang/String;Landroid/location/LastLocationRequest;Ljava/lang/String;Ljava/lang/String;)Landroid/location/Location;
+PLcom/android/server/location/LocationManagerService;->getLocationProviderManager(Ljava/lang/String;)Lcom/android/server/location/provider/LocationProviderManager;
PLcom/android/server/location/LocationManagerService;->getProviderProperties(Ljava/lang/String;)Landroid/location/provider/ProviderProperties;
PLcom/android/server/location/LocationManagerService;->getProviders(Landroid/location/Criteria;Z)Ljava/util/List;
PLcom/android/server/location/LocationManagerService;->hasProvider(Ljava/lang/String;)Z
+PLcom/android/server/location/LocationManagerService;->isGeocodeAvailable()Z
HPLcom/android/server/location/LocationManagerService;->isLocationEnabledForUser(I)Z
PLcom/android/server/location/LocationManagerService;->isProviderEnabledForUser(Ljava/lang/String;I)Z
-PLcom/android/server/location/LocationManagerService;->lambda$new$2(II)V
-PLcom/android/server/location/LocationManagerService;->lambda$onStateChanged$7(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;ILandroid/os/PackageTagsList;)V
-PLcom/android/server/location/LocationManagerService;->lambda$onStateChanged$8(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;ILandroid/os/PackageTagsList;)V
-PLcom/android/server/location/LocationManagerService;->lambda$onSystemReady$5(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;II)V
+PLcom/android/server/location/LocationManagerService;->isProviderPackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
PLcom/android/server/location/LocationManagerService;->logEmergencyState()V
PLcom/android/server/location/LocationManagerService;->logLocationEnabledState()V
-HPLcom/android/server/location/LocationManagerService;->onStateChanged(Ljava/lang/String;Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)V
-PLcom/android/server/location/LocationManagerService;->onSystemReady()V
-HPLcom/android/server/location/LocationManagerService;->onSystemThirdPartyAppsCanStart()V
-HPLcom/android/server/location/LocationManagerService;->refreshAppOpsRestrictions(I)V
+PLcom/android/server/location/LocationManagerService;->refreshAppOpsRestrictions(I)V
PLcom/android/server/location/LocationManagerService;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/location/LocationManagerService;->registerLocationListener(Ljava/lang/String;Landroid/location/LocationRequest;Landroid/location/ILocationListener;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/location/LocationManagerService;->registerLocationListener(Ljava/lang/String;Landroid/location/LocationRequest;Landroid/location/ILocationListener;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/location/LocationManagerService;->reverseGeocode(Landroid/location/provider/ReverseGeocodeRequest;Landroid/location/provider/IGeocodeCallback;)V
PLcom/android/server/location/LocationManagerService;->setExtraLocationControllerPackageEnabled(Z)V
PLcom/android/server/location/LocationManagerService;->setLocationEnabledForUser(ZI)V
+PLcom/android/server/location/LocationManagerService;->setProxyPopulationDensityProvider(Lcom/android/server/location/provider/proxy/ProxyPopulationDensityProvider;)V
PLcom/android/server/location/LocationManagerService;->unregisterLocationListener(Landroid/location/ILocationListener;)V
-PLcom/android/server/location/LocationManagerService;->validateLastLocationRequest(Ljava/lang/String;Landroid/location/LastLocationRequest;Landroid/location/util/identity/CallerIdentity;)Landroid/location/LastLocationRequest;
-HPLcom/android/server/location/LocationManagerService;->validateLocationRequest(Ljava/lang/String;Landroid/location/LocationRequest;Landroid/location/util/identity/CallerIdentity;)Landroid/location/LocationRequest;
+PLcom/android/server/location/LocationManagerService;->validateLocationRequest(Ljava/lang/String;Landroid/location/LocationRequest;Landroid/location/util/identity/CallerIdentity;)Landroid/location/LocationRequest;
PLcom/android/server/location/LocationPermissions;->asAppOp(I)I
-PLcom/android/server/location/LocationPermissions;->asPermission(I)Ljava/lang/String;
-PLcom/android/server/location/LocationPermissions;->checkCallingOrSelfLocationPermission(Landroid/content/Context;I)Z
-PLcom/android/server/location/LocationPermissions;->checkLocationPermission(II)Z
PLcom/android/server/location/LocationPermissions;->enforceLocationPermission(III)V
-PLcom/android/server/location/LocationPermissions;->getCallingOrSelfPermissionLevel(Landroid/content/Context;)I
PLcom/android/server/location/LocationPermissions;->getPermissionLevel(Landroid/content/Context;II)I
PLcom/android/server/location/altitude/AltitudeService$Lifecycle;-><clinit>()V
PLcom/android/server/location/altitude/AltitudeService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/location/altitude/AltitudeService$Lifecycle;->onStart()V
PLcom/android/server/location/altitude/AltitudeService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/location/contexthub/ConcurrentLinkedEvictingDeque;-><init>(I)V
+PLcom/android/server/location/contexthub/ConcurrentLinkedEvictingDeque;-><init>()V
PLcom/android/server/location/contexthub/ConcurrentLinkedEvictingDeque;->add(Ljava/lang/Object;)Z
-PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/contexthub/ContextHubClientBroker;)V
-PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda1;->runOrThrow()V
-PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/location/contexthub/ContextHubClientBroker;)V
-PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda2;->runOrThrow()V
-PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda3;-><init>(Landroid/hardware/location/NanoAppMessage;)V
-PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda3;->accept(Landroid/hardware/location/IContextHubClientCallback;)V
-PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/location/contexthub/ContextHubClientBroker;JLandroid/hardware/location/NanoAppMessage;)V
-PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/location/contexthub/ContextHubClientBroker;Landroid/hardware/location/NanoAppMessage;)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/contexthub/ContextHubClientBroker;I)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda0;->runOrThrow()V
+PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda5;-><init>(Landroid/hardware/location/NanoAppMessage;)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda5;->accept(Landroid/hardware/location/IContextHubClientCallback;)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/location/contexthub/ContextHubClientBroker;JLandroid/hardware/location/NanoAppMessage;)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda6;->get()Ljava/lang/Object;
+PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/location/contexthub/ContextHubClientBroker;Landroid/hardware/location/NanoAppMessage;)V
PLcom/android/server/location/contexthub/ContextHubClientBroker$1;-><init>(Lcom/android/server/location/contexthub/ContextHubClientBroker;)V
-PLcom/android/server/location/contexthub/ContextHubClientBroker$PendingIntentRequest;-><init>()V
-PLcom/android/server/location/contexthub/ContextHubClientBroker$PendingIntentRequest;->hasPendingIntent()Z
-PLcom/android/server/location/contexthub/ContextHubClientBroker$PendingIntentRequest;->isValid()Z
-PLcom/android/server/location/contexthub/ContextHubClientBroker;->$r8$lambda$5LN1r8kQkqBv9B8howzlawnr-GI(Landroid/hardware/location/NanoAppMessage;Landroid/hardware/location/IContextHubClientCallback;)V
-PLcom/android/server/location/contexthub/ContextHubClientBroker;->$r8$lambda$7GaKk9ODLn9h9dIT1DAjkZFa4iM(Lcom/android/server/location/contexthub/ContextHubClientBroker;)V
-PLcom/android/server/location/contexthub/ContextHubClientBroker;->$r8$lambda$QjaJyLv-rQuyhtluWSnqhPk-eIU(Lcom/android/server/location/contexthub/ContextHubClientBroker;)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker$1;->onQueryResponse(ILjava/util/List;)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker$2;-><init>(Lcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda7;Lcom/android/server/location/contexthub/ContextHubClientBroker;)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker$2;->onSendFinished(Landroid/app/PendingIntent;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V
PLcom/android/server/location/contexthub/ContextHubClientBroker;-><init>(Landroid/content/Context;Lcom/android/server/location/contexthub/IContextHubWrapper;Lcom/android/server/location/contexthub/ContextHubClientManager;Landroid/hardware/location/ContextHubInfo;SLandroid/hardware/location/IContextHubClientCallback;Ljava/lang/String;Lcom/android/server/location/contexthub/ContextHubTransactionManager;Landroid/app/PendingIntent;JLjava/lang/String;)V
-PLcom/android/server/location/contexthub/ContextHubClientBroker;-><init>(Landroid/content/Context;Lcom/android/server/location/contexthub/IContextHubWrapper;Lcom/android/server/location/contexthub/ContextHubClientManager;Landroid/hardware/location/ContextHubInfo;SLandroid/hardware/location/IContextHubClientCallback;Ljava/lang/String;Lcom/android/server/location/contexthub/ContextHubTransactionManager;Ljava/lang/String;)V
-PLcom/android/server/location/contexthub/ContextHubClientBroker;->acquireWakeLock()V
-PLcom/android/server/location/contexthub/ContextHubClientBroker;->attachDeathRecipient()V
PLcom/android/server/location/contexthub/ContextHubClientBroker;->callbackFinished()V
-PLcom/android/server/location/contexthub/ContextHubClientBroker;->getAttachedContextHubId()I
-PLcom/android/server/location/contexthub/ContextHubClientBroker;->getHostEndPointId()S
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->checkNanoappPermsAsync()V
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->createIntent(I)Landroid/content/Intent;
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->doSendMessageToNanoApp(Landroid/hardware/location/NanoAppMessage;Landroid/hardware/location/IContextHubTransactionCallback;)I
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->doSendPendingIntent(Landroid/app/PendingIntent;Landroid/content/Intent;Landroid/app/PendingIntent$OnFinished;)B
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->getId()I
PLcom/android/server/location/contexthub/ContextHubClientBroker;->hasPermissions(Ljava/util/List;)Z
PLcom/android/server/location/contexthub/ContextHubClientBroker;->invokeCallback(Lcom/android/server/location/contexthub/ContextHubClientBroker$CallbackConsumer;)B
-PLcom/android/server/location/contexthub/ContextHubClientBroker;->lambda$acquireWakeLock$12()V
-PLcom/android/server/location/contexthub/ContextHubClientBroker;->lambda$releaseWakeLock$13()V
-PLcom/android/server/location/contexthub/ContextHubClientBroker;->lambda$sendMessageToClient$0(Landroid/hardware/location/NanoAppMessage;Landroid/hardware/location/IContextHubClientCallback;)V
-PLcom/android/server/location/contexthub/ContextHubClientBroker;->notePermissions(Ljava/util/List;Ljava/lang/String;)Z
-PLcom/android/server/location/contexthub/ContextHubClientBroker;->releaseWakeLock()V
PLcom/android/server/location/contexthub/ContextHubClientBroker;->sendHostEndpointConnectedEvent()V
PLcom/android/server/location/contexthub/ContextHubClientBroker;->sendMessageToClient(Landroid/hardware/location/NanoAppMessage;Ljava/util/List;Ljava/util/List;)B
-PLcom/android/server/location/contexthub/ContextHubClientBroker;->sendPendingIntent(Ljava/util/function/Supplier;JLjava/util/function/Consumer;)B
-PLcom/android/server/location/contexthub/ContextHubClientBroker;->startMonitoringOpChanges()V
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->sendMessageToNanoApp(Landroid/hardware/location/NanoAppMessage;)I
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->sendPendingIntent(Ljava/util/function/Supplier;JLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda7;)B
PLcom/android/server/location/contexthub/ContextHubClientBroker;->toString()Ljava/lang/String;
-PLcom/android/server/location/contexthub/ContextHubClientBroker;->updateNanoAppAuthState(JLjava/util/List;Z)I
PLcom/android/server/location/contexthub/ContextHubClientBroker;->updateNanoAppAuthState(JLjava/util/List;ZZ)I
-PLcom/android/server/location/contexthub/ContextHubClientManager$RegistrationRecord;-><init>(Lcom/android/server/location/contexthub/ContextHubClientManager;Ljava/lang/String;I)V
+PLcom/android/server/location/contexthub/ContextHubClientManager$RegistrationRecord;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/location/contexthub/ContextHubClientManager$RegistrationRecord;->toString()Ljava/lang/String;
PLcom/android/server/location/contexthub/ContextHubClientManager;-><init>(Landroid/content/Context;Lcom/android/server/location/contexthub/IContextHubWrapper;)V
+PLcom/android/server/location/contexthub/ContextHubClientManager;->getClientBroker(ILandroid/app/PendingIntent;J)Lcom/android/server/location/contexthub/ContextHubClientBroker;
PLcom/android/server/location/contexthub/ContextHubClientManager;->getHostEndPointId()S
PLcom/android/server/location/contexthub/ContextHubClientManager;->onMessageFromNanoApp(ISLandroid/hardware/location/NanoAppMessage;Ljava/util/List;Ljava/util/List;)B
PLcom/android/server/location/contexthub/ContextHubClientManager;->registerClient(Landroid/hardware/location/ContextHubInfo;Landroid/hardware/location/IContextHubClientCallback;Ljava/lang/String;Lcom/android/server/location/contexthub/ContextHubTransactionManager;Ljava/lang/String;)Landroid/hardware/location/IContextHubClient;
+PLcom/android/server/location/contexthub/ContextHubClientManager;->toString()Ljava/lang/String;
PLcom/android/server/location/contexthub/ContextHubEventLogger$ContextHubEventBase;-><init>(JI)V
-PLcom/android/server/location/contexthub/ContextHubEventLogger$NanoappEventBase;-><init>(JIJZ)V
+PLcom/android/server/location/contexthub/ContextHubEventLogger$NanoappEventBase;-><init>(IJJZ)V
PLcom/android/server/location/contexthub/ContextHubEventLogger$NanoappMessageEvent;-><init>(JILandroid/hardware/location/NanoAppMessage;Z)V
-PLcom/android/server/location/contexthub/ContextHubEventLogger;-><clinit>()V
+PLcom/android/server/location/contexthub/ContextHubEventLogger$NanoappMessageEvent;->toString()Ljava/lang/String;
PLcom/android/server/location/contexthub/ContextHubEventLogger;-><init>()V
PLcom/android/server/location/contexthub/ContextHubEventLogger;->getInstance()Lcom/android/server/location/contexthub/ContextHubEventLogger;
PLcom/android/server/location/contexthub/ContextHubEventLogger;->logMessageFromNanoapp(ILandroid/hardware/location/NanoAppMessage;Z)V
-PLcom/android/server/location/contexthub/ContextHubService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/contexthub/ContextHubService;)V
+PLcom/android/server/location/contexthub/ContextHubEventLogger;->toString()Ljava/lang/String;
PLcom/android/server/location/contexthub/ContextHubService$$ExternalSyntheticLambda2;-><init>(Landroid/hardware/location/NanoAppFilter;Ljava/util/ArrayList;)V
-HPLcom/android/server/location/contexthub/ContextHubService$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/location/contexthub/ContextHubService$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/location/contexthub/ContextHubService$$ExternalSyntheticLambda3;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/location/contexthub/ContextHubService$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
PLcom/android/server/location/contexthub/ContextHubService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/location/contexthub/ContextHubService;)V
-PLcom/android/server/location/contexthub/ContextHubService$$ExternalSyntheticLambda4;->onSensorPrivacyChanged(IZ)V
-PLcom/android/server/location/contexthub/ContextHubService$10;-><init>(Lcom/android/server/location/contexthub/ContextHubService;I)V
-PLcom/android/server/location/contexthub/ContextHubService$10;->onQueryResponse(ILjava/util/List;)V
+PLcom/android/server/location/contexthub/ContextHubService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/location/contexthub/ContextHubService;)V
+PLcom/android/server/location/contexthub/ContextHubService$$ExternalSyntheticLambda6;->onSensorPrivacyChanged(IZ)V
PLcom/android/server/location/contexthub/ContextHubService$1;-><init>(Lcom/android/server/location/contexthub/ContextHubService;I)V
PLcom/android/server/location/contexthub/ContextHubService$1;->finishCallback()V
PLcom/android/server/location/contexthub/ContextHubService$1;->onMessageFromNanoApp(Landroid/hardware/location/NanoAppMessage;)V
-PLcom/android/server/location/contexthub/ContextHubService$2;-><init>(Lcom/android/server/location/contexthub/ContextHubService;Landroid/os/Handler;)V
-PLcom/android/server/location/contexthub/ContextHubService$3;-><init>(Lcom/android/server/location/contexthub/ContextHubService;)V
+PLcom/android/server/location/contexthub/ContextHubService$2;-><init>(Lcom/android/server/location/contexthub/ContextHubService;I)V
+PLcom/android/server/location/contexthub/ContextHubService$2;->onChange(Z)V
+PLcom/android/server/location/contexthub/ContextHubService$3;-><init>(Lcom/android/server/location/contexthub/ContextHubService;I)V
PLcom/android/server/location/contexthub/ContextHubService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/location/contexthub/ContextHubService$4;-><init>(Lcom/android/server/location/contexthub/ContextHubService;Landroid/os/Handler;)V
-PLcom/android/server/location/contexthub/ContextHubService$5;-><init>(Lcom/android/server/location/contexthub/ContextHubService;Landroid/os/Handler;)V
-PLcom/android/server/location/contexthub/ContextHubService$6;-><init>(Lcom/android/server/location/contexthub/ContextHubService;)V
-PLcom/android/server/location/contexthub/ContextHubService$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/location/contexthub/ContextHubService$7;-><init>(Lcom/android/server/location/contexthub/ContextHubService;Landroid/os/Handler;)V
+PLcom/android/server/location/contexthub/ContextHubService$9;-><init>(Lcom/android/server/location/contexthub/ContextHubService;II)V
+PLcom/android/server/location/contexthub/ContextHubService$9;->onQueryResponse(ILjava/util/List;)V
PLcom/android/server/location/contexthub/ContextHubService$ContextHubServiceCallback;-><init>(Lcom/android/server/location/contexthub/ContextHubService;I)V
PLcom/android/server/location/contexthub/ContextHubService$ContextHubServiceCallback;->handleNanoappInfo(Ljava/util/List;)V
PLcom/android/server/location/contexthub/ContextHubService$ContextHubServiceCallback;->handleNanoappMessage(SLandroid/hardware/location/NanoAppMessage;Ljava/util/List;Ljava/util/List;)V
-PLcom/android/server/location/contexthub/ContextHubService;->$r8$lambda$bctfr7Wm6zM1mt5FwQ_kHaH8yCA(Lcom/android/server/location/contexthub/ContextHubService;IZ)V
-PLcom/android/server/location/contexthub/ContextHubService;->$r8$lambda$oZBCHNRjaf6Cw4wdWNHDMe-IVbc(Landroid/hardware/location/NanoAppFilter;Ljava/util/ArrayList;Landroid/hardware/location/NanoAppInstanceInfo;)V
-PLcom/android/server/location/contexthub/ContextHubService;->-$$Nest$fgetmDefaultClientMap(Lcom/android/server/location/contexthub/ContextHubService;)Ljava/util/Map;
-PLcom/android/server/location/contexthub/ContextHubService;->-$$Nest$fgetmNanoAppStateManager(Lcom/android/server/location/contexthub/ContextHubService;)Lcom/android/server/location/contexthub/NanoAppStateManager;
PLcom/android/server/location/contexthub/ContextHubService;->-$$Nest$mhandleClientMessageCallback(Lcom/android/server/location/contexthub/ContextHubService;ISLandroid/hardware/location/NanoAppMessage;Ljava/util/List;Ljava/util/List;)V
-PLcom/android/server/location/contexthub/ContextHubService;->-$$Nest$mhandleQueryAppsCallback(Lcom/android/server/location/contexthub/ContextHubService;ILjava/util/List;)V
-PLcom/android/server/location/contexthub/ContextHubService;->-$$Nest$monMessageReceiptOldApi(Lcom/android/server/location/contexthub/ContextHubService;III[B)I
-PLcom/android/server/location/contexthub/ContextHubService;->-$$Nest$msendBtSettingUpdate(Lcom/android/server/location/contexthub/ContextHubService;Z)V
-PLcom/android/server/location/contexthub/ContextHubService;->-$$Nest$msendWifiSettingUpdate(Lcom/android/server/location/contexthub/ContextHubService;Z)V
PLcom/android/server/location/contexthub/ContextHubService;-><init>(Landroid/content/Context;Lcom/android/server/location/contexthub/IContextHubWrapper;)V
PLcom/android/server/location/contexthub/ContextHubService;->checkHalProxyAndContextHubId(ILandroid/hardware/location/IContextHubTransactionCallback;I)Z
-PLcom/android/server/location/contexthub/ContextHubService;->createDefaultClientCallback(I)Landroid/hardware/location/IContextHubClientCallback;
-PLcom/android/server/location/contexthub/ContextHubService;->createQueryTransactionCallback(I)Landroid/hardware/location/IContextHubTransactionCallback;
+PLcom/android/server/location/contexthub/ContextHubService;->cleanupReliableMessageRecordQueue()V
+PLcom/android/server/location/contexthub/ContextHubService;->createClient(ILandroid/hardware/location/IContextHubClientCallback;Ljava/lang/String;Ljava/lang/String;)Landroid/hardware/location/IContextHubClient;
+PLcom/android/server/location/contexthub/ContextHubService;->createPendingIntentClient(ILandroid/app/PendingIntent;JLjava/lang/String;)Landroid/hardware/location/IContextHubClient;
+PLcom/android/server/location/contexthub/ContextHubService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/location/contexthub/ContextHubService;->findNanoAppOnHub(ILandroid/hardware/location/NanoAppFilter;)[I
PLcom/android/server/location/contexthub/ContextHubService;->getCallingPackageName()Ljava/lang/String;
PLcom/android/server/location/contexthub/ContextHubService;->getContextHubHandles()[I
PLcom/android/server/location/contexthub/ContextHubService;->getContextHubInfo(I)Landroid/hardware/location/ContextHubInfo;
PLcom/android/server/location/contexthub/ContextHubService;->getContextHubs()Ljava/util/List;
PLcom/android/server/location/contexthub/ContextHubService;->getCurrentUserId()I
-PLcom/android/server/location/contexthub/ContextHubService;->handleClientMessageCallback(ISLandroid/hardware/location/NanoAppMessage;Ljava/util/List;Ljava/util/List;)V
-PLcom/android/server/location/contexthub/ContextHubService;->handleQueryAppsCallback(ILjava/util/List;)V
-PLcom/android/server/location/contexthub/ContextHubService;->initAirplaneModeSettingNotifications()V
-PLcom/android/server/location/contexthub/ContextHubService;->initBtSettingNotifications()V
-PLcom/android/server/location/contexthub/ContextHubService;->initContextHubServiceState(J)Z
-PLcom/android/server/location/contexthub/ContextHubService;->initDefaultClientMap()V
-PLcom/android/server/location/contexthub/ContextHubService;->initLocationSettingNotifications()V
-PLcom/android/server/location/contexthub/ContextHubService;->initMicrophoneSettingNotifications()V
-PLcom/android/server/location/contexthub/ContextHubService;->initWifiSettingNotifications()V
-PLcom/android/server/location/contexthub/ContextHubService;->isValidContextHubId(I)Z
-PLcom/android/server/location/contexthub/ContextHubService;->lambda$findNanoAppOnHub$1(Landroid/hardware/location/NanoAppFilter;Ljava/util/ArrayList;Landroid/hardware/location/NanoAppInstanceInfo;)V
-PLcom/android/server/location/contexthub/ContextHubService;->lambda$initMicrophoneSettingNotifications$0(IZ)V
PLcom/android/server/location/contexthub/ContextHubService;->onMessageReceiptOldApi(III[B)I
PLcom/android/server/location/contexthub/ContextHubService;->queryNanoApps(ILandroid/hardware/location/IContextHubTransactionCallback;)V
PLcom/android/server/location/contexthub/ContextHubService;->queryNanoAppsInternal(I)Z
@@ -13820,199 +10700,145 @@ PLcom/android/server/location/contexthub/ContextHubService;->scheduleDailyMetric
PLcom/android/server/location/contexthub/ContextHubService;->sendAirplaneModeSettingUpdate()V
PLcom/android/server/location/contexthub/ContextHubService;->sendBtSettingUpdate(Z)V
PLcom/android/server/location/contexthub/ContextHubService;->sendLocationSettingUpdate()V
-PLcom/android/server/location/contexthub/ContextHubService;->sendMicrophoneDisableSettingUpdate(Z)V
PLcom/android/server/location/contexthub/ContextHubService;->sendMicrophoneDisableSettingUpdateForCurrentUser()V
-HPLcom/android/server/location/contexthub/ContextHubService;->sendWifiSettingUpdate(Z)V
+PLcom/android/server/location/contexthub/ContextHubService;->sendWifiSettingUpdate(Z)V
PLcom/android/server/location/contexthub/ContextHubServiceTransaction;-><init>(IILjava/lang/String;)V
PLcom/android/server/location/contexthub/ContextHubServiceTransaction;->getTimeout(Ljava/util/concurrent/TimeUnit;)J
-PLcom/android/server/location/contexthub/ContextHubServiceTransaction;->getTransactionType()I
-PLcom/android/server/location/contexthub/ContextHubServiceTransaction;->setComplete()V
PLcom/android/server/location/contexthub/ContextHubServiceTransaction;->toString()Ljava/lang/String;
PLcom/android/server/location/contexthub/ContextHubServiceUtil;-><clinit>()V
-PLcom/android/server/location/contexthub/ContextHubServiceUtil;->createContextHubInfoMap(Ljava/util/List;)Ljava/util/HashMap;
-PLcom/android/server/location/contexthub/ContextHubServiceUtil;->createNanoAppMessage(Landroid/hardware/contexthub/ContextHubMessage;)Landroid/hardware/location/NanoAppMessage;
-PLcom/android/server/location/contexthub/ContextHubServiceUtil;->createNanoAppStateList([Landroid/hardware/contexthub/NanoappInfo;)Ljava/util/List;
-PLcom/android/server/location/contexthub/ContextHubServiceUtil;->createPrimitiveIntArray(Ljava/util/Collection;)[I
-PLcom/android/server/location/contexthub/ContextHubStatsLog;->write(IJI)V
-PLcom/android/server/location/contexthub/ContextHubTransactionManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/contexthub/ContextHubTransactionManager;Lcom/android/server/location/contexthub/ContextHubServiceTransaction;)V
-PLcom/android/server/location/contexthub/ContextHubTransactionManager$6;-><init>(Lcom/android/server/location/contexthub/ContextHubTransactionManager;IILjava/lang/String;ILandroid/hardware/location/IContextHubTransactionCallback;)V
+PLcom/android/server/location/contexthub/ContextHubServiceUtil;->createAidlContextHubMessage(SLandroid/hardware/location/NanoAppMessage;)Landroid/hardware/contexthub/ContextHubMessage;
+PLcom/android/server/location/contexthub/ContextHubServiceUtil;->formatDateFromTimestamp(J)Ljava/lang/String;
+PLcom/android/server/location/contexthub/ContextHubTestModeManager;-><init>()V
+PLcom/android/server/location/contexthub/ContextHubTransactionManager$$ExternalSyntheticLambda2;->acceptTransaction(Lcom/android/server/location/contexthub/ContextHubServiceTransaction;)Z
+PLcom/android/server/location/contexthub/ContextHubTransactionManager$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/location/contexthub/ContextHubTransactionManager;Lcom/android/server/location/contexthub/ContextHubServiceTransaction;)V
+PLcom/android/server/location/contexthub/ContextHubTransactionManager$6;-><init>(Lcom/android/server/location/contexthub/ContextHubTransactionManager;ILjava/lang/String;ILandroid/hardware/location/IContextHubTransactionCallback;)V
PLcom/android/server/location/contexthub/ContextHubTransactionManager$6;->onQueryResponse(ILjava/util/List;)V
PLcom/android/server/location/contexthub/ContextHubTransactionManager$6;->onTransact()I
-PLcom/android/server/location/contexthub/ContextHubTransactionManager$TransactionRecord;-><init>(Lcom/android/server/location/contexthub/ContextHubTransactionManager;Ljava/lang/String;)V
-PLcom/android/server/location/contexthub/ContextHubTransactionManager;->-$$Nest$fgetmContextHubProxy(Lcom/android/server/location/contexthub/ContextHubTransactionManager;)Lcom/android/server/location/contexthub/IContextHubWrapper;
+PLcom/android/server/location/contexthub/ContextHubTransactionManager$TransactionRecord;-><init>(Ljava/lang/String;)V
+PLcom/android/server/location/contexthub/ContextHubTransactionManager$TransactionRecord;->toString()Ljava/lang/String;
+PLcom/android/server/location/contexthub/ContextHubTransactionManager;-><clinit>()V
PLcom/android/server/location/contexthub/ContextHubTransactionManager;-><init>(Lcom/android/server/location/contexthub/IContextHubWrapper;Lcom/android/server/location/contexthub/ContextHubClientManager;Lcom/android/server/location/contexthub/NanoAppStateManager;)V
PLcom/android/server/location/contexthub/ContextHubTransactionManager;->addTransaction(Lcom/android/server/location/contexthub/ContextHubServiceTransaction;)V
-PLcom/android/server/location/contexthub/ContextHubTransactionManager;->createQueryTransaction(ILandroid/hardware/location/IContextHubTransactionCallback;Ljava/lang/String;)Lcom/android/server/location/contexthub/ContextHubServiceTransaction;
+PLcom/android/server/location/contexthub/ContextHubTransactionManager;->getTransactionAndHandleNext(Lcom/android/server/location/contexthub/ContextHubTransactionManager$TransactionAcceptConditions;)Lcom/android/server/location/contexthub/ContextHubServiceTransaction;
PLcom/android/server/location/contexthub/ContextHubTransactionManager;->onQueryResponse(Ljava/util/List;)V
-PLcom/android/server/location/contexthub/ContextHubTransactionManager;->removeTransactionAndStartNext()V
-PLcom/android/server/location/contexthub/ContextHubTransactionManager;->startNextTransaction()V
-PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/contexthub/IContextHubWrapper$ICallback;)V
-PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;Ljava/util/List;)V
+PLcom/android/server/location/contexthub/ContextHubTransactionManager;->startNextTransaction$1()V
+PLcom/android/server/location/contexthub/ContextHubTransactionManager;->toString()Ljava/lang/String;
+PLcom/android/server/location/contexthub/HubInfoRegistry;-><init>(Lcom/android/server/location/contexthub/IContextHubWrapper;)V
+PLcom/android/server/location/contexthub/HubInfoRegistry;->refreshCachedHubs()V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$$ExternalSyntheticLambda0;-><init>(SLandroid/hardware/location/NanoAppMessage;Landroid/hardware/contexthub/IContextHub;I)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$$ExternalSyntheticLambda0;->call()Ljava/lang/Object;
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/contexthub/ContextHubService$ContextHubServiceCallback;)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;Ljava/lang/Object;I)V
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;Landroid/hardware/contexthub/ContextHubMessage;[Ljava/lang/String;)V
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback$$ExternalSyntheticLambda3;->run()V
-PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;->$r8$lambda$73t3WS8YfVk6BW0zU3MPErwk2sU(Lcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;Landroid/hardware/contexthub/ContextHubMessage;[Ljava/lang/String;)V
-PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;->$r8$lambda$hrYSC_xKcGsK1WsvqlKFNelyQUI(Lcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;Ljava/util/List;)V
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;-><clinit>()V
-PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;-><init>(Lcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;ILcom/android/server/location/contexthub/IContextHubWrapper$ICallback;)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;-><init>(Lcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;Lcom/android/server/location/contexthub/ContextHubService$ContextHubServiceCallback;)V
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;->handleContextHubMessage(Landroid/hardware/contexthub/ContextHubMessage;[Ljava/lang/String;)V
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;->handleNanoappInfo([Landroid/hardware/contexthub/NanoappInfo;)V
-PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;->lambda$handleContextHubMessage$1(Landroid/hardware/contexthub/ContextHubMessage;[Ljava/lang/String;)V
-PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;->lambda$handleNanoappInfo$0(Ljava/util/List;)V
-PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->-$$Nest$fgetmHandler(Lcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;)Landroid/os/Handler;
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;-><init>(Landroid/hardware/contexthub/IContextHub;)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->getContextHubs()Landroid/util/Pair;
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->getHub()Landroid/hardware/contexthub/IContextHub;
-PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->getHubs()Landroid/util/Pair;
-PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->linkWrapperToHubDeath()V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->getHubs()Ljava/util/List;
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->getPreloadedNanoappIds(I)[J
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onAirplaneModeSettingChanged(Z)V
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onBtMainSettingChanged(Z)V
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onBtScanningSettingChanged(Z)V
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onHostEndpointConnected(Landroid/hardware/contexthub/HostEndpointInfo;)V
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onLocationSettingChanged(Z)V
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onMicrophoneSettingChanged(Z)V
-PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onSettingChanged(BZ)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onSettingChanged(ZB)V
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onWifiMainSettingChanged(Z)V
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onWifiScanningSettingChanged(Z)V
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onWifiSettingChanged(Z)V
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->queryNanoapps(I)I
-PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->registerCallback(ILcom/android/server/location/contexthub/IContextHubWrapper$ICallback;)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->registerCallback(ILcom/android/server/location/contexthub/ContextHubService$ContextHubServiceCallback;)V
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->registerExistingCallback(I)V
-PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->setHub(Landroid/hardware/contexthub/IContextHub;)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->sendMessageToContextHub(SILandroid/hardware/location/NanoAppMessage;)I
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->supportsAirplaneModeSettingNotifications()Z
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->supportsBtSettingNotifications()Z
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->supportsLocationSettingNotifications()Z
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->supportsMicrophoneSettingNotifications()Z
PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->supportsWifiSettingNotifications()Z
-PLcom/android/server/location/contexthub/IContextHubWrapper;-><init>()V
-PLcom/android/server/location/contexthub/IContextHubWrapper;->getContextHubWrapper()Lcom/android/server/location/contexthub/IContextHubWrapper;
-PLcom/android/server/location/contexthub/IContextHubWrapper;->maybeConnectToAidl()Lcom/android/server/location/contexthub/IContextHubWrapper;
PLcom/android/server/location/contexthub/IContextHubWrapper;->maybeConnectToAidlGetProxy()Landroid/hardware/contexthub/IContextHub;
PLcom/android/server/location/contexthub/NanoAppStateManager;-><init>()V
-HPLcom/android/server/location/contexthub/NanoAppStateManager;->addNanoAppInstance(IJI)V
+PLcom/android/server/location/contexthub/NanoAppStateManager;->addNanoAppInstance(IIJ)V
PLcom/android/server/location/contexthub/NanoAppStateManager;->foreachNanoAppInstanceInfo(Ljava/util/function/Consumer;)V
-HPLcom/android/server/location/contexthub/NanoAppStateManager;->getNanoAppHandle(IJ)I
-PLcom/android/server/location/contexthub/NanoAppStateManager;->handleQueryAppEntry(IJI)V
-PLcom/android/server/location/contexthub/NanoAppStateManager;->removeNanoAppInstance(IJ)V
-HPLcom/android/server/location/contexthub/NanoAppStateManager;->updateCache(ILjava/util/List;)V
+HPLcom/android/server/location/contexthub/NanoAppStateManager;->getNanoAppHandle(IJ)I+]Landroid/hardware/location/NanoAppInstanceInfo;Landroid/hardware/location/NanoAppInstanceInfo;]Ljava/util/Collection;Ljava/util/HashMap$Values;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$ValueIterator;
+PLcom/android/server/location/contexthub/NanoAppStateManager;->handleQueryAppEntry(IIJ)V
PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector$1;-><init>(Lcom/android/server/location/countrydetector/ComprehensiveCountryDetector;)V
PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector$1;->onCountryDetected(Landroid/location/Country;)V
PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector$2;-><init>(Lcom/android/server/location/countrydetector/ComprehensiveCountryDetector;Landroid/location/Country;Landroid/location/Country;ZZ)V
PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector$2;->run()V
PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector$3;-><init>(Lcom/android/server/location/countrydetector/ComprehensiveCountryDetector;)V
PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector$4;-><init>(Lcom/android/server/location/countrydetector/ComprehensiveCountryDetector;)V
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->-$$Nest$fputmCountryFromLocation(Lcom/android/server/location/countrydetector/ComprehensiveCountryDetector;Landroid/location/Country;)V
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->-$$Nest$mdetectCountry(Lcom/android/server/location/countrydetector/ComprehensiveCountryDetector;ZZ)Landroid/location/Country;
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->-$$Nest$mstopLocationBasedDetector(Lcom/android/server/location/countrydetector/ComprehensiveCountryDetector;)V
PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;-><init>(Landroid/content/Context;)V
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->addPhoneStateListener()V
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->addToLogs(Landroid/location/Country;)V
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->cancelLocationRefresh()V
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->createLocationBasedCountryDetector()Lcom/android/server/location/countrydetector/CountryDetectorBase;
PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->detectCountry()Landroid/location/Country;
PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->detectCountry(ZZ)Landroid/location/Country;
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->getCountry()Landroid/location/Country;
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->getLastKnownLocationBasedCountry()Landroid/location/Country;
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->getLocaleCountry()Landroid/location/Country;
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->getNetworkBasedCountry()Landroid/location/Country;
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->getSimBasedCountry()Landroid/location/Country;
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->isAirplaneModeOff()Z
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->isGeoCoderImplemented()Z
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->isNetworkCountryCodeAvailable()Z
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->notifyIfCountryChanged(Landroid/location/Country;Landroid/location/Country;)V
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->removePhoneStateListener()V
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->runAfterDetection(Landroid/location/Country;Landroid/location/Country;ZZ)V
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->runAfterDetectionAsync(Landroid/location/Country;Landroid/location/Country;ZZ)V
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->scheduleLocationRefresh()V
PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->setCountryListener(Landroid/location/CountryListener;)V
-PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->startLocationBasedDetector(Landroid/location/CountryListener;)V
PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->stopLocationBasedDetector()V
PLcom/android/server/location/countrydetector/CountryDetectorBase;-><init>(Landroid/content/Context;)V
-PLcom/android/server/location/countrydetector/CountryDetectorBase;->notifyListener(Landroid/location/Country;)V
-PLcom/android/server/location/countrydetector/CountryDetectorBase;->setCountryListener(Landroid/location/CountryListener;)V
PLcom/android/server/location/countrydetector/LocationBasedCountryDetector$1;-><init>(Lcom/android/server/location/countrydetector/LocationBasedCountryDetector;)V
+PLcom/android/server/location/countrydetector/LocationBasedCountryDetector$1;->onLocationChanged(Landroid/location/Location;)V
PLcom/android/server/location/countrydetector/LocationBasedCountryDetector$2;-><init>(Lcom/android/server/location/countrydetector/LocationBasedCountryDetector;)V
PLcom/android/server/location/countrydetector/LocationBasedCountryDetector$2;->run()V
PLcom/android/server/location/countrydetector/LocationBasedCountryDetector$3;-><init>(Lcom/android/server/location/countrydetector/LocationBasedCountryDetector;Landroid/location/Location;)V
PLcom/android/server/location/countrydetector/LocationBasedCountryDetector$3;->run()V
-PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;->-$$Nest$mqueryCountryCode(Lcom/android/server/location/countrydetector/LocationBasedCountryDetector;Landroid/location/Location;)V
-PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;-><init>(Landroid/content/Context;)V
PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;->detectCountry()Landroid/location/Country;
-PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;->getEnabledProviders()Ljava/util/List;
PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;->getLastKnownLocation()Landroid/location/Location;
-PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;->getQueryLocationTimeout()J
-PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;->isAcceptableProvider(Ljava/lang/String;)Z
PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;->queryCountryCode(Landroid/location/Location;)V
-PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;->registerListener(Ljava/lang/String;Landroid/location/LocationListener;)V
PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;->stop()V
-PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;->unregisterListener(Landroid/location/LocationListener;)V
+PLcom/android/server/location/eventlog/LocalEventLog$LogIterator;-><init>(Lcom/android/server/location/eventlog/LocalEventLog;)V
+PLcom/android/server/location/eventlog/LocalEventLog$LogIterator;->hasNext()Z
+PLcom/android/server/location/eventlog/LocalEventLog$LogIterator;->increment()V
+PLcom/android/server/location/eventlog/LocalEventLog$LogIterator;->next()V
PLcom/android/server/location/eventlog/LocalEventLog;-><clinit>()V
-PLcom/android/server/location/eventlog/LocalEventLog;-><init>(ILjava/lang/Class;)V
-HPLcom/android/server/location/eventlog/LocalEventLog;->addLog(JLjava/lang/Object;)V
-HPLcom/android/server/location/eventlog/LocalEventLog;->addLogEventInternal(ZILjava/lang/Object;)V
-PLcom/android/server/location/eventlog/LocalEventLog;->countTrailingZeros(I)I
-PLcom/android/server/location/eventlog/LocalEventLog;->createEntry(ZI)I
-PLcom/android/server/location/eventlog/LocalEventLog;->incrementIndex(I)I
-PLcom/android/server/location/eventlog/LocalEventLog;->isEmpty()Z
-PLcom/android/server/location/eventlog/LocalEventLog;->wrapIndex(I)I
-PLcom/android/server/location/eventlog/LocationEventLog$AggregateStats;-><init>()V
-PLcom/android/server/location/eventlog/LocationEventLog$AggregateStats;->markRequestActive()V
-PLcom/android/server/location/eventlog/LocationEventLog$AggregateStats;->markRequestAdded(J)V
-PLcom/android/server/location/eventlog/LocationEventLog$AggregateStats;->markRequestForeground()V
-PLcom/android/server/location/eventlog/LocationEventLog$AggregateStats;->markRequestInactive()V
-PLcom/android/server/location/eventlog/LocationEventLog$AggregateStats;->markRequestRemoved()V
+PLcom/android/server/location/eventlog/LocalEventLog;-><init>(I)V
+PLcom/android/server/location/eventlog/LocalEventLog;->addLog(JLjava/lang/Object;)V
+PLcom/android/server/location/eventlog/LocalEventLog;->addLogEventInternal(Ljava/lang/Object;IZ)V
+PLcom/android/server/location/eventlog/LocalEventLog;->iterate(Lcom/android/server/location/eventlog/LocationEventLog$$ExternalSyntheticLambda0;[Lcom/android/server/location/eventlog/LocalEventLog;)V
+PLcom/android/server/location/eventlog/LocationEventLog$$ExternalSyntheticLambda0;-><init>(Ljava/lang/String;Ljava/lang/StringBuilder;JLjava/util/function/Consumer;)V
+PLcom/android/server/location/eventlog/LocationEventLog$AggregateStats;->intervalToString(J)Ljava/lang/String;
+PLcom/android/server/location/eventlog/LocationEventLog$AggregateStats;->toString()Ljava/lang/String;
PLcom/android/server/location/eventlog/LocationEventLog$AggregateStats;->updateTotals()V
-PLcom/android/server/location/eventlog/LocationEventLog$LocationsEventLog;-><init>(I)V
+PLcom/android/server/location/eventlog/LocationEventLog$LocationEnabledEvent;-><init>(IIZ)V
+PLcom/android/server/location/eventlog/LocationEventLog$LocationEnabledEvent;->toString()Ljava/lang/String;
PLcom/android/server/location/eventlog/LocationEventLog$ProviderClientRegisterEvent;-><init>(Ljava/lang/String;ZLandroid/location/util/identity/CallerIdentity;Landroid/location/LocationRequest;)V
-PLcom/android/server/location/eventlog/LocationEventLog$ProviderEnabledEvent;-><init>(Ljava/lang/String;IZ)V
+PLcom/android/server/location/eventlog/LocationEventLog$ProviderClientRegisterEvent;->toString()Ljava/lang/String;
+PLcom/android/server/location/eventlog/LocationEventLog$ProviderDeliverLocationEvent;-><init>(Ljava/lang/String;ILandroid/location/util/identity/CallerIdentity;)V
+PLcom/android/server/location/eventlog/LocationEventLog$ProviderDeliverLocationEvent;->toString()Ljava/lang/String;
+PLcom/android/server/location/eventlog/LocationEventLog$ProviderEnabledEvent;-><init>(ILjava/lang/String;Z)V
+PLcom/android/server/location/eventlog/LocationEventLog$ProviderEnabledEvent;->toString()Ljava/lang/String;
PLcom/android/server/location/eventlog/LocationEventLog$ProviderEvent;-><init>(Ljava/lang/String;)V
+PLcom/android/server/location/eventlog/LocationEventLog$ProviderReceiveLocationEvent;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/location/eventlog/LocationEventLog$ProviderReceiveLocationEvent;->toString()Ljava/lang/String;
PLcom/android/server/location/eventlog/LocationEventLog$ProviderUpdateEvent;-><init>(Ljava/lang/String;Landroid/location/provider/ProviderRequest;)V
-PLcom/android/server/location/eventlog/LocationEventLog$UserVisibilityChangedEvent;-><init>(IZ)V
+PLcom/android/server/location/eventlog/LocationEventLog$ProviderUpdateEvent;->toString()Ljava/lang/String;
PLcom/android/server/location/eventlog/LocationEventLog;-><clinit>()V
PLcom/android/server/location/eventlog/LocationEventLog;-><init>()V
-PLcom/android/server/location/eventlog/LocationEventLog;->addLog(Ljava/lang/Object;)V
-HPLcom/android/server/location/eventlog/LocationEventLog;->getAggregateStats(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;)Lcom/android/server/location/eventlog/LocationEventLog$AggregateStats;
-PLcom/android/server/location/eventlog/LocationEventLog;->getLocationsLogSize()I
-PLcom/android/server/location/eventlog/LocationEventLog;->getLogSize()I
-PLcom/android/server/location/eventlog/LocationEventLog;->logProviderClientActive(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;)V
+PLcom/android/server/location/eventlog/LocationEventLog;->addLog$1(Ljava/lang/Object;)V
+PLcom/android/server/location/eventlog/LocationEventLog;->getAggregateStats(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;)Lcom/android/server/location/eventlog/LocationEventLog$AggregateStats;
+PLcom/android/server/location/eventlog/LocationEventLog;->iterate(Ljava/lang/String;Ljava/util/function/Consumer;)V
PLcom/android/server/location/eventlog/LocationEventLog;->logProviderClientForeground(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;)V
-PLcom/android/server/location/eventlog/LocationEventLog;->logProviderClientInactive(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;)V
-PLcom/android/server/location/eventlog/LocationEventLog;->logProviderClientRegistered(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;Landroid/location/LocationRequest;)V
-PLcom/android/server/location/eventlog/LocationEventLog;->logProviderClientUnregistered(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;)V
-PLcom/android/server/location/eventlog/LocationEventLog;->logProviderEnabled(Ljava/lang/String;IZ)V
-PLcom/android/server/location/eventlog/LocationEventLog;->logProviderUpdateRequest(Ljava/lang/String;Landroid/location/provider/ProviderRequest;)V
-PLcom/android/server/location/eventlog/LocationEventLog;->logUserVisibilityChanged(IZ)V
+PLcom/android/server/location/eventlog/LocationEventLog;->logProviderDeliveredLocations(Ljava/lang/String;ILandroid/location/util/identity/CallerIdentity;)V
PLcom/android/server/location/fudger/LocationFudger;-><clinit>()V
-PLcom/android/server/location/fudger/LocationFudger;-><init>(F)V
PLcom/android/server/location/fudger/LocationFudger;-><init>(FLjava/time/Clock;Ljava/util/Random;)V
PLcom/android/server/location/fudger/LocationFudger;->nextRandomOffset()D
-PLcom/android/server/location/fudger/LocationFudger;->resetOffsets()V
PLcom/android/server/location/geofence/GeofenceManager$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/geofence/GeofenceManager;)V
-PLcom/android/server/location/geofence/GeofenceManager$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/location/geofence/GeofenceManager;)V
-PLcom/android/server/location/geofence/GeofenceManager$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/location/geofence/GeofenceManager;)V
+PLcom/android/server/location/geofence/GeofenceManager$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/location/geofence/GeofenceManager;I)V
PLcom/android/server/location/geofence/GeofenceManager$1;-><init>(Lcom/android/server/location/geofence/GeofenceManager;)V
-PLcom/android/server/location/geofence/GeofenceManager;-><init>(Landroid/content/Context;Lcom/android/server/location/injector/Injector;)V
+PLcom/android/server/location/geofence/GeofenceManager;-><init>(Landroid/content/Context;Lcom/android/server/location/LocationManagerService$SystemInjector;)V
PLcom/android/server/location/geofence/GeofenceProxy$GeofenceProxyServiceConnection$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/geofence/GeofenceProxy;)V
PLcom/android/server/location/geofence/GeofenceProxy$GeofenceProxyServiceConnection;-><init>(Lcom/android/server/location/geofence/GeofenceProxy;)V
PLcom/android/server/location/geofence/GeofenceProxy$GeofenceProxyServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-PLcom/android/server/location/geofence/GeofenceProxy;-><init>(Landroid/content/Context;Landroid/location/IGpsGeofenceHardware;)V
-PLcom/android/server/location/geofence/GeofenceProxy;->createAndBind(Landroid/content/Context;Landroid/location/IGpsGeofenceHardware;)Lcom/android/server/location/geofence/GeofenceProxy;
-PLcom/android/server/location/geofence/GeofenceProxy;->onBind(Landroid/os/IBinder;Lcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;)V
+PLcom/android/server/location/geofence/GeofenceProxy;-><init>(Landroid/content/Context;Lcom/android/server/location/gnss/GnssGeofenceProxy;)V
PLcom/android/server/location/geofence/GeofenceProxy;->onBind(Landroid/os/IBinder;Lcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;)V
-PLcom/android/server/location/geofence/GeofenceProxy;->register(Landroid/content/Context;)Z
-PLcom/android/server/location/geofence/GeofenceProxy;->updateGeofenceHardware(Landroid/os/IBinder;)V
-PLcom/android/server/location/gnss/ExponentialBackOff;-><init>(JJ)V
+PLcom/android/server/location/geofence/GeofenceProxy;->onUnbind()V
+PLcom/android/server/location/gnss/ExponentialBackOff;-><init>()V
+PLcom/android/server/location/gnss/ExponentialBackOff;->toString()Ljava/lang/String;
PLcom/android/server/location/gnss/GnssAntennaInfoProvider;-><init>(Lcom/android/server/location/gnss/hal/GnssNative;)V
PLcom/android/server/location/gnss/GnssAntennaInfoProvider;->onHalStarted()V
-PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda0;->set(I)Z
-PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda1;->set(I)Z
-PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda3;-><init>()V
-PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda3;->set(I)Z
-PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda4;-><init>()V
-PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda4;->set(I)Z
-PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda5;-><init>()V
-PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda5;->set(I)Z
+PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda0;-><init>(I)V
PLcom/android/server/location/gnss/GnssConfiguration$HalInterfaceVersion;-><init>(II)V
PLcom/android/server/location/gnss/GnssConfiguration;->$r8$lambda$3fQhh0HIdjq4jMHxYVTiFqO2lhg(I)Z
PLcom/android/server/location/gnss/GnssConfiguration;->$r8$lambda$F9k7STpxBfONZ7Aqgxh165D_nWw(I)Z
@@ -14021,269 +10847,152 @@ PLcom/android/server/location/gnss/GnssConfiguration;->$r8$lambda$eXF9XL5ObtAcQa
PLcom/android/server/location/gnss/GnssConfiguration;->$r8$lambda$vT_XZFD-4uMu_ePbNOLadVMKlCY(I)Z
PLcom/android/server/location/gnss/GnssConfiguration;-><clinit>()V
PLcom/android/server/location/gnss/GnssConfiguration;-><init>(Landroid/content/Context;)V
-PLcom/android/server/location/gnss/GnssConfiguration;->getBooleanConfig(Ljava/lang/String;Z)Z
-PLcom/android/server/location/gnss/GnssConfiguration;->getC2KHost()Ljava/lang/String;
-PLcom/android/server/location/gnss/GnssConfiguration;->getC2KPort(I)I
-PLcom/android/server/location/gnss/GnssConfiguration;->getEsExtensionSec()I
-PLcom/android/server/location/gnss/GnssConfiguration;->getHalInterfaceVersion()Lcom/android/server/location/gnss/GnssConfiguration$HalInterfaceVersion;
-PLcom/android/server/location/gnss/GnssConfiguration;->getIntConfig(Ljava/lang/String;I)I
-PLcom/android/server/location/gnss/GnssConfiguration;->getProxyApps()Ljava/util/List;
-PLcom/android/server/location/gnss/GnssConfiguration;->getRangeCheckedConfigEsExtensionSec()I
-PLcom/android/server/location/gnss/GnssConfiguration;->getSuplEs(I)I
-PLcom/android/server/location/gnss/GnssConfiguration;->getSuplHost()Ljava/lang/String;
-PLcom/android/server/location/gnss/GnssConfiguration;->getSuplMode(I)I
-PLcom/android/server/location/gnss/GnssConfiguration;->getSuplPort(I)I
-PLcom/android/server/location/gnss/GnssConfiguration;->isActiveSimEmergencySuplEnabled()Z
-PLcom/android/server/location/gnss/GnssConfiguration;->isConfigEsExtensionSecSupported(Lcom/android/server/location/gnss/GnssConfiguration$HalInterfaceVersion;)Z
-PLcom/android/server/location/gnss/GnssConfiguration;->isConfigGpsLockSupported(Lcom/android/server/location/gnss/GnssConfiguration$HalInterfaceVersion;)Z
-PLcom/android/server/location/gnss/GnssConfiguration;->isConfigSuplEsSupported(Lcom/android/server/location/gnss/GnssConfiguration$HalInterfaceVersion;)Z
-PLcom/android/server/location/gnss/GnssConfiguration;->isNiSuplMessageInjectionEnabled()Z
-PLcom/android/server/location/gnss/GnssConfiguration;->isSimAbsent(Landroid/content/Context;)Z
-HPLcom/android/server/location/gnss/GnssConfiguration;->loadPropertiesFromCarrierConfig(ZI)V
+PLcom/android/server/location/gnss/GnssConfiguration;->getIntConfig(Ljava/lang/String;)I
+PLcom/android/server/location/gnss/GnssConfiguration;->loadPropertiesFromCarrierConfig(IZ)V
PLcom/android/server/location/gnss/GnssConfiguration;->loadPropertiesFromGpsDebugConfig(Ljava/util/Properties;Ljava/lang/String;)V
-PLcom/android/server/location/gnss/GnssConfiguration;->loadPropertiesFromResource(Landroid/content/Context;Ljava/util/Properties;)V
-HPLcom/android/server/location/gnss/GnssConfiguration;->logConfigurations()V
-PLcom/android/server/location/gnss/GnssConfiguration;->reloadGpsProperties()V
-HPLcom/android/server/location/gnss/GnssConfiguration;->reloadGpsProperties(ZI)V
+PLcom/android/server/location/gnss/GnssConfiguration;->reloadGpsProperties(IZ)V
PLcom/android/server/location/gnss/GnssConfiguration;->setSatelliteBlocklist([I[I)V
PLcom/android/server/location/gnss/GnssGeofenceProxy;-><init>(Lcom/android/server/location/gnss/hal/GnssNative;)V
PLcom/android/server/location/gnss/GnssGeofenceProxy;->isHardwareGeofenceSupported()Z
PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/gnss/GnssListenerMultiplexer;)V
-PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda13;-><init>(Ljava/lang/String;)V
-PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda13;->test(Ljava/lang/Object;)Z
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda10;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda10;->test(Ljava/lang/Object;)Z
PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/gnss/GnssListenerMultiplexer;)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda1;->onProviderEnabledChanged(Ljava/lang/String;IZ)V
PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/location/gnss/GnssListenerMultiplexer;)V
PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/location/gnss/GnssListenerMultiplexer;)V
PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/location/gnss/GnssListenerMultiplexer;)V
-HPLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda4;->onAppForegroundChanged(IZ)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda4;->onAppForegroundChanged(IZ)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda5;-><init>(II)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda5;->test(Ljava/lang/Object;)Z
PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda9;-><init>(IZ)V
-HPLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda9;->test(Ljava/lang/Object;)Z
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda9;->test(Ljava/lang/Object;)Z
PLcom/android/server/location/gnss/GnssListenerMultiplexer$1;-><init>(Lcom/android/server/location/gnss/GnssListenerMultiplexer;)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$1;->onLocationPermissionsChanged(I)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$1;->onLocationPermissionsChanged(Ljava/lang/String;)V
PLcom/android/server/location/gnss/GnssListenerMultiplexer$2;-><init>(Lcom/android/server/location/gnss/GnssListenerMultiplexer;)V
PLcom/android/server/location/gnss/GnssListenerMultiplexer$2;->onPackageReset(Ljava/lang/String;)V
PLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;-><init>(Lcom/android/server/location/gnss/GnssListenerMultiplexer;Ljava/lang/Object;Landroid/location/util/identity/CallerIdentity;Landroid/os/IInterface;)V
-PLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;->getBinderFromKey(Landroid/os/IBinder;)Landroid/os/IBinder;
PLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;->getBinderFromKey(Ljava/lang/Object;)Landroid/os/IBinder;
-PLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;->getIdentity()Landroid/location/util/identity/CallerIdentity;
-PLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;->getRequest()Ljava/lang/Object;
-PLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;->isForeground()Z
-PLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;->isPermitted()Z
-HPLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;->onForegroundChanged(IZ)Z
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;->getOwner()Lcom/android/server/location/listeners/ListenerMultiplexer;
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;->getTag()Ljava/lang/String;
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;->onLocationPermissionsChanged$2()Z
PLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;->onRegister()V
-PLcom/android/server/location/gnss/GnssListenerMultiplexer;->$r8$lambda$G2kqDLkfuxQMtoPsbj2WpYf8X5s(IZLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;)Z
-HPLcom/android/server/location/gnss/GnssListenerMultiplexer;->$r8$lambda$_Gfvn5VW9-dlsJfSAPdr0oFIo4s(Lcom/android/server/location/gnss/GnssListenerMultiplexer;IZ)V
-PLcom/android/server/location/gnss/GnssListenerMultiplexer;->$r8$lambda$vTTdgGmunMW7m6DFokt_QlVxjDg(Ljava/lang/String;Lcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;)Z
-PLcom/android/server/location/gnss/GnssListenerMultiplexer;->-$$Nest$monPackageReset(Lcom/android/server/location/gnss/GnssListenerMultiplexer;Ljava/lang/String;)V
-PLcom/android/server/location/gnss/GnssListenerMultiplexer;-><init>(Lcom/android/server/location/injector/Injector;)V
-PLcom/android/server/location/gnss/GnssListenerMultiplexer;->addListener(Landroid/location/util/identity/CallerIdentity;Landroid/os/IInterface;)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;->toString()Ljava/lang/String;
+PLcom/android/server/location/gnss/GnssListenerMultiplexer;-><init>(Lcom/android/server/location/LocationManagerService$SystemInjector;)V
PLcom/android/server/location/gnss/GnssListenerMultiplexer;->addListener(Ljava/lang/Object;Landroid/location/util/identity/CallerIdentity;Landroid/os/IInterface;)V
PLcom/android/server/location/gnss/GnssListenerMultiplexer;->createRegistration(Ljava/lang/Object;Landroid/location/util/identity/CallerIdentity;Landroid/os/IInterface;)Lcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;
-PLcom/android/server/location/gnss/GnssListenerMultiplexer;->isActive(Landroid/location/util/identity/CallerIdentity;)Z
-PLcom/android/server/location/gnss/GnssListenerMultiplexer;->isActive(Lcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;)Z
-PLcom/android/server/location/gnss/GnssListenerMultiplexer;->isActive(Lcom/android/server/location/listeners/ListenerRegistration;)Z
+PLcom/android/server/location/gnss/GnssListenerMultiplexer;->getServiceState()Ljava/lang/String;
+PLcom/android/server/location/gnss/GnssListenerMultiplexer;->isActive(Lcom/android/server/location/listeners/RemovableListenerRegistration;)Z
PLcom/android/server/location/gnss/GnssListenerMultiplexer;->isSupported()Z
-HPLcom/android/server/location/gnss/GnssListenerMultiplexer;->lambda$onAppForegroundChanged$6(IZLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;)Z
-PLcom/android/server/location/gnss/GnssListenerMultiplexer;->lambda$onPackageReset$7(Ljava/lang/String;Lcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;)Z
PLcom/android/server/location/gnss/GnssListenerMultiplexer;->mergeRegistrations(Ljava/util/Collection;)Ljava/lang/Object;
-PLcom/android/server/location/gnss/GnssListenerMultiplexer;->onAppForegroundChanged(IZ)V
-PLcom/android/server/location/gnss/GnssListenerMultiplexer;->onPackageReset(Ljava/lang/String;)V
PLcom/android/server/location/gnss/GnssListenerMultiplexer;->onRegister()V
-PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;)V
-PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/location/gnss/NetworkTimeHelper;)V
-PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda10;->run()V
-PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;)V
-PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer;->onUnregister()V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;Ljava/lang/Object;I)V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda11;->run()V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;I)V
PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda15;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;)V
-PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda18;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;[I[I)V
-PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda18;->run()V
-PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda21;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;)V
-PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda22;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;Ljava/lang/Runnable;)V
-PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda22;->run()V
-PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;)V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda19;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;[I[I)V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda19;->run()V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda20;->onLocationChanged(Landroid/location/Location;)V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda21;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;I)V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda21;->onLocationChanged(Landroid/location/Location;)V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;ZZ)V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda4;->run()V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;I)V
PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda8;->run()V
-PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/location/gnss/GnssSatelliteBlocklistHelper;)V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda9;-><init>(ILjava/lang/Object;)V
PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda9;->run()V
PLcom/android/server/location/gnss/GnssLocationProvider$1;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;)V
-PLcom/android/server/location/gnss/GnssLocationProvider$2;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;)V
PLcom/android/server/location/gnss/GnssLocationProvider$3;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;Landroid/os/Handler;)V
-PLcom/android/server/location/gnss/GnssLocationProvider$4;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;)V
+PLcom/android/server/location/gnss/GnssLocationProvider$3;->onChange(Z)V
+PLcom/android/server/location/gnss/GnssLocationProvider$4;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;I)V
PLcom/android/server/location/gnss/GnssLocationProvider$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/location/gnss/GnssLocationProvider$LocationExtras;-><init>()V
-PLcom/android/server/location/gnss/GnssLocationProvider;->$r8$lambda$5cN3NMHDdgiSS9srfJvXXqvdWzA(Lcom/android/server/location/gnss/GnssLocationProvider;Ljava/lang/Runnable;)V
-PLcom/android/server/location/gnss/GnssLocationProvider;->$r8$lambda$P4av5E7_VcXCDWc2O4WPS0B6dK8(Lcom/android/server/location/gnss/GnssLocationProvider;[I[I)V
-PLcom/android/server/location/gnss/GnssLocationProvider;->$r8$lambda$WJfBSnGxBdV92rwB-RR4u-lMzmQ(Lcom/android/server/location/gnss/GnssLocationProvider;)V
-PLcom/android/server/location/gnss/GnssLocationProvider;->$r8$lambda$pvaCHGEUSphUSz5n1PWLLEnhwVM(Lcom/android/server/location/gnss/GnssLocationProvider;)V
-PLcom/android/server/location/gnss/GnssLocationProvider;->-$$Nest$msubscriptionOrCarrierConfigChanged(Lcom/android/server/location/gnss/GnssLocationProvider;)V
-PLcom/android/server/location/gnss/GnssLocationProvider;->-$$Nest$sfgetDEBUG()Z
PLcom/android/server/location/gnss/GnssLocationProvider;-><clinit>()V
-HPLcom/android/server/location/gnss/GnssLocationProvider;-><init>(Landroid/content/Context;Lcom/android/server/location/gnss/hal/GnssNative;Lcom/android/server/location/gnss/GnssMetrics;)V
-PLcom/android/server/location/gnss/GnssLocationProvider;->demandUtcTimeInjection()V
-PLcom/android/server/location/gnss/GnssLocationProvider;->handleEnable()V
-PLcom/android/server/location/gnss/GnssLocationProvider;->handleInitialize()V
-PLcom/android/server/location/gnss/GnssLocationProvider;->isGpsEnabled()Z
-PLcom/android/server/location/gnss/GnssLocationProvider;->lambda$onCapabilitiesChanged$11()V
-PLcom/android/server/location/gnss/GnssLocationProvider;->lambda$onUpdateSatelliteBlocklist$0([I[I)V
-PLcom/android/server/location/gnss/GnssLocationProvider;->lambda$postWithWakeLockHeld$10(Ljava/lang/Runnable;)V
-PLcom/android/server/location/gnss/GnssLocationProvider;->onCapabilitiesChanged(Landroid/location/GnssCapabilities;Landroid/location/GnssCapabilities;)V
-PLcom/android/server/location/gnss/GnssLocationProvider;->onReportAGpsStatus(II[B)V
-PLcom/android/server/location/gnss/GnssLocationProvider;->onRequestSetID(I)V
+PLcom/android/server/location/gnss/GnssLocationProvider;-><init>(Landroid/content/Context;Lcom/android/server/location/gnss/hal/GnssNative;Lcom/android/server/location/gnss/GnssMetrics;)V
+PLcom/android/server/location/gnss/GnssLocationProvider;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/location/gnss/GnssLocationProvider;->onCapabilitiesChanged(Landroid/location/GnssCapabilities;)V
PLcom/android/server/location/gnss/GnssLocationProvider;->onSetRequest(Landroid/location/provider/ProviderRequest;)V
-PLcom/android/server/location/gnss/GnssLocationProvider;->onSystemReady()V
-PLcom/android/server/location/gnss/GnssLocationProvider;->onUpdateSatelliteBlocklist([I[I)V
PLcom/android/server/location/gnss/GnssLocationProvider;->postWithWakeLockHeld(Ljava/lang/Runnable;)V
PLcom/android/server/location/gnss/GnssLocationProvider;->reloadGpsProperties()V
-PLcom/android/server/location/gnss/GnssLocationProvider;->restartLocationRequest()V
PLcom/android/server/location/gnss/GnssLocationProvider;->setGpsEnabled(Z)V
PLcom/android/server/location/gnss/GnssLocationProvider;->setStarted(Z)V
-PLcom/android/server/location/gnss/GnssLocationProvider;->setSuplHostPort()V
PLcom/android/server/location/gnss/GnssLocationProvider;->stopBatching()V
PLcom/android/server/location/gnss/GnssLocationProvider;->stopNavigating()V
-PLcom/android/server/location/gnss/GnssLocationProvider;->subscriptionOrCarrierConfigChanged()V
PLcom/android/server/location/gnss/GnssLocationProvider;->updateClientUids(Landroid/os/WorkSource;)V
PLcom/android/server/location/gnss/GnssLocationProvider;->updateEnabled()V
PLcom/android/server/location/gnss/GnssLocationProvider;->updateRequirements()V
PLcom/android/server/location/gnss/GnssManagerService$GnssCapabilitiesHalModule;-><init>(Lcom/android/server/location/gnss/GnssManagerService;Lcom/android/server/location/gnss/hal/GnssNative;)V
-PLcom/android/server/location/gnss/GnssManagerService$GnssCapabilitiesHalModule;->onCapabilitiesChanged(Landroid/location/GnssCapabilities;Landroid/location/GnssCapabilities;)V
+PLcom/android/server/location/gnss/GnssManagerService$GnssCapabilitiesHalModule;->onCapabilitiesChanged(Landroid/location/GnssCapabilities;)V
PLcom/android/server/location/gnss/GnssManagerService$GnssGeofenceHalModule;-><init>(Lcom/android/server/location/gnss/GnssManagerService;Lcom/android/server/location/gnss/hal/GnssNative;)V
PLcom/android/server/location/gnss/GnssManagerService;-><clinit>()V
-PLcom/android/server/location/gnss/GnssManagerService;-><init>(Landroid/content/Context;Lcom/android/server/location/injector/Injector;Lcom/android/server/location/gnss/hal/GnssNative;)V
-PLcom/android/server/location/gnss/GnssManagerService;->getGnssGeofenceProxy()Landroid/location/IGpsGeofenceHardware;
-PLcom/android/server/location/gnss/GnssManagerService;->getGnssLocationProvider()Lcom/android/server/location/gnss/GnssLocationProvider;
-PLcom/android/server/location/gnss/GnssManagerService;->onSystemReady()V
-PLcom/android/server/location/gnss/GnssManagerService;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/location/gnss/GnssMeasurementsProvider;-><init>(Lcom/android/server/location/injector/Injector;Lcom/android/server/location/gnss/hal/GnssNative;)V
+PLcom/android/server/location/gnss/GnssManagerService;-><init>(Landroid/content/Context;Lcom/android/server/location/LocationManagerService$SystemInjector;Lcom/android/server/location/gnss/hal/GnssNative;)V
+PLcom/android/server/location/gnss/GnssManagerService;->dump(Ljava/io/FileDescriptor;Landroid/util/IndentingPrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/location/gnss/GnssMeasurementsProvider;-><init>(Lcom/android/server/location/LocationManagerService$SystemInjector;Lcom/android/server/location/gnss/hal/GnssNative;)V
+PLcom/android/server/location/gnss/GnssMeasurementsProvider;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/location/gnss/GnssMeasurementsProvider;->isSupported()Z
PLcom/android/server/location/gnss/GnssMetrics$GnssPowerMetrics;-><init>(Lcom/android/server/location/gnss/GnssMetrics;Lcom/android/internal/app/IBatteryStats;)V
-PLcom/android/server/location/gnss/GnssMetrics$Statistics;-><init>()V
+PLcom/android/server/location/gnss/GnssMetrics$Statistics;->getCount()I
PLcom/android/server/location/gnss/GnssMetrics$Statistics;->reset()V
PLcom/android/server/location/gnss/GnssMetrics$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/location/gnss/GnssMetrics;)V
PLcom/android/server/location/gnss/GnssMetrics;-><init>(Landroid/content/Context;Lcom/android/internal/app/IBatteryStats;Lcom/android/server/location/gnss/hal/GnssNative;)V
-PLcom/android/server/location/gnss/GnssMetrics;->registerGnssStats()V
PLcom/android/server/location/gnss/GnssMetrics;->reset()V
-PLcom/android/server/location/gnss/GnssMetrics;->resetConstellationTypes()V
-PLcom/android/server/location/gnss/GnssNavigationMessageProvider;-><init>(Lcom/android/server/location/injector/Injector;Lcom/android/server/location/gnss/hal/GnssNative;)V
-PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/gnss/GnssNetworkConnectivityHandler;)V
-PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/location/gnss/GnssNetworkConnectivityHandler;Ljava/lang/Runnable;)V
-PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/location/gnss/GnssNavigationMessageProvider;-><init>(Lcom/android/server/location/LocationManagerService$SystemInjector;Lcom/android/server/location/gnss/hal/GnssNative;)V
PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler$1;-><init>(Lcom/android/server/location/gnss/GnssNetworkConnectivityHandler;)V
PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler$2;-><init>(Lcom/android/server/location/gnss/GnssNetworkConnectivityHandler;)V
-PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->$r8$lambda$UI75ZGR_wWeGCDtuWWZygqNH2WI(Lcom/android/server/location/gnss/GnssNetworkConnectivityHandler;)V
-PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->$r8$lambda$uaMjsdErTcMigR-QvUtvFZgEPNE(Lcom/android/server/location/gnss/GnssNetworkConnectivityHandler;Ljava/lang/Runnable;)V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler$2;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler$2;->onLost(Landroid/net/Network;)V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->-$$Nest$mhandleUpdateNetworkState(Lcom/android/server/location/gnss/GnssNetworkConnectivityHandler;Landroid/net/Network;ZLandroid/net/NetworkCapabilities;)V
PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;-><clinit>()V
-PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;-><init>(Landroid/content/Context;Lcom/android/server/location/gnss/GnssNetworkConnectivityHandler$GnssNetworkListener;Landroid/os/Looper;Lcom/android/internal/location/GpsNetInitiatedHandler;)V
-PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->createNetworkConnectivityCallback()Landroid/net/ConnectivityManager$NetworkCallback;
-PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->handleReleaseSuplConnection(I)V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;-><init>(Landroid/content/Context;Lcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda15;Landroid/os/Looper;Lcom/android/internal/location/GpsNetInitiatedHandler;)V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->agpsDataConnStateAsString()Ljava/lang/String;
PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->isNativeAgpsRilSupported()Z
-PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->lambda$onReportAGpsStatus$1()V
-PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->lambda$runEventAndReleaseWakeLock$2(Ljava/lang/Runnable;)V
-PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->onReportAGpsStatus(II[B)V
PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->registerNetworkCallbacks()V
-PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->runEventAndReleaseWakeLock(Ljava/lang/Runnable;)Ljava/lang/Runnable;
-PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->runOnHandler(Ljava/lang/Runnable;)V
-PLcom/android/server/location/gnss/GnssNmeaProvider;-><init>(Lcom/android/server/location/injector/Injector;Lcom/android/server/location/gnss/hal/GnssNative;)V
+PLcom/android/server/location/gnss/GnssNmeaProvider;-><init>(Lcom/android/server/location/LocationManagerService$SystemInjector;Lcom/android/server/location/gnss/hal/GnssNative;)V
PLcom/android/server/location/gnss/GnssSatelliteBlocklistHelper$1;-><init>(Lcom/android/server/location/gnss/GnssSatelliteBlocklistHelper;Landroid/os/Handler;)V
-PLcom/android/server/location/gnss/GnssSatelliteBlocklistHelper;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/location/gnss/GnssSatelliteBlocklistHelper$GnssSatelliteBlocklistCallback;)V
+PLcom/android/server/location/gnss/GnssSatelliteBlocklistHelper$1;->onChange(Z)V
+PLcom/android/server/location/gnss/GnssSatelliteBlocklistHelper;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/location/gnss/GnssLocationProvider;)V
PLcom/android/server/location/gnss/GnssSatelliteBlocklistHelper;->parseSatelliteBlocklist(Ljava/lang/String;)Ljava/util/List;
PLcom/android/server/location/gnss/GnssSatelliteBlocklistHelper;->updateSatelliteBlocklist()V
-PLcom/android/server/location/gnss/GnssStatusProvider;-><init>(Lcom/android/server/location/injector/Injector;Lcom/android/server/location/gnss/hal/GnssNative;)V
-PLcom/android/server/location/gnss/GnssStatusProvider;->addListener(Landroid/location/util/identity/CallerIdentity;Landroid/location/IGnssStatusListener;)V
-PLcom/android/server/location/gnss/GnssStatusProvider;->onRegistrationAdded(Landroid/os/IBinder;Lcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;)V
-PLcom/android/server/location/gnss/GnssStatusProvider;->onRegistrationAdded(Ljava/lang/Object;Lcom/android/server/location/listeners/ListenerRegistration;)V
-PLcom/android/server/location/gnss/GnssStatusProvider;->registerWithService(Ljava/lang/Object;Ljava/util/Collection;)Z
-PLcom/android/server/location/gnss/GnssStatusProvider;->registerWithService(Ljava/lang/Void;Ljava/util/Collection;)Z
+PLcom/android/server/location/gnss/GnssStatusProvider;-><init>(Lcom/android/server/location/LocationManagerService$SystemInjector;Lcom/android/server/location/gnss/hal/GnssNative;)V
+PLcom/android/server/location/gnss/GnssStatusProvider;->onRegistrationAdded(Ljava/lang/Object;Lcom/android/server/location/listeners/RemovableListenerRegistration;)V
+PLcom/android/server/location/gnss/GnssStatusProvider;->onRegistrationRemoved(Ljava/lang/Object;Lcom/android/server/location/listeners/RemovableListenerRegistration;)V
+PLcom/android/server/location/gnss/GnssStatusProvider;->registerWithService(Ljava/util/Collection;Ljava/lang/Object;)Z
+PLcom/android/server/location/gnss/GnssStatusProvider;->unregisterWithService()V
PLcom/android/server/location/gnss/GnssVisibilityControl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/gnss/GnssVisibilityControl;Z)V
PLcom/android/server/location/gnss/GnssVisibilityControl$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/location/gnss/GnssVisibilityControl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/gnss/GnssVisibilityControl;Ljava/util/List;)V
+PLcom/android/server/location/gnss/GnssVisibilityControl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/gnss/GnssVisibilityControl;Ljava/lang/Object;I)V
PLcom/android/server/location/gnss/GnssVisibilityControl$$ExternalSyntheticLambda1;->run()V
PLcom/android/server/location/gnss/GnssVisibilityControl$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/location/gnss/GnssVisibilityControl;)V
PLcom/android/server/location/gnss/GnssVisibilityControl$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/location/gnss/GnssVisibilityControl;)V
PLcom/android/server/location/gnss/GnssVisibilityControl$$ExternalSyntheticLambda4;->run()V
-PLcom/android/server/location/gnss/GnssVisibilityControl$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/location/gnss/GnssVisibilityControl;Ljava/lang/Runnable;)V
-PLcom/android/server/location/gnss/GnssVisibilityControl$$ExternalSyntheticLambda6;->run()V
PLcom/android/server/location/gnss/GnssVisibilityControl$1;-><init>(Lcom/android/server/location/gnss/GnssVisibilityControl;)V
-PLcom/android/server/location/gnss/GnssVisibilityControl;->$r8$lambda$-C_A0LLAtzxFw2GtgzhvWwBB6Yo(Lcom/android/server/location/gnss/GnssVisibilityControl;Ljava/util/List;)V
-PLcom/android/server/location/gnss/GnssVisibilityControl;->$r8$lambda$QSIGEde0V8a2umZ6weceH27oZBU(Lcom/android/server/location/gnss/GnssVisibilityControl;Ljava/lang/Runnable;)V
-PLcom/android/server/location/gnss/GnssVisibilityControl;->$r8$lambda$UFJaGDOfHy8H_6ZhRklIms-8o_A(Lcom/android/server/location/gnss/GnssVisibilityControl;Z)V
-PLcom/android/server/location/gnss/GnssVisibilityControl;->$r8$lambda$dJecQTgcsVi1z20DN2Mq2OZgcLo(Lcom/android/server/location/gnss/GnssVisibilityControl;)V
+PLcom/android/server/location/gnss/GnssVisibilityControl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/location/gnss/GnssVisibilityControl;-><clinit>()V
PLcom/android/server/location/gnss/GnssVisibilityControl;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/internal/location/GpsNetInitiatedHandler;)V
PLcom/android/server/location/gnss/GnssVisibilityControl;->getLocationPermissionEnabledProxyApps()[Ljava/lang/String;
-PLcom/android/server/location/gnss/GnssVisibilityControl;->handleGpsEnabledChanged(Z)V
-PLcom/android/server/location/gnss/GnssVisibilityControl;->handleInitialize()V
-PLcom/android/server/location/gnss/GnssVisibilityControl;->handleUpdateProxyApps(Ljava/util/List;)V
-PLcom/android/server/location/gnss/GnssVisibilityControl;->isProxyAppListUpdated(Ljava/util/List;)Z
-PLcom/android/server/location/gnss/GnssVisibilityControl;->lambda$onConfigurationUpdated$4(Ljava/util/List;)V
-PLcom/android/server/location/gnss/GnssVisibilityControl;->lambda$onGpsEnabledChanged$2(Z)V
-PLcom/android/server/location/gnss/GnssVisibilityControl;->lambda$runEventAndReleaseWakeLock$6(Ljava/lang/Runnable;)V
-PLcom/android/server/location/gnss/GnssVisibilityControl;->listenForProxyAppsPackageUpdates()V
-PLcom/android/server/location/gnss/GnssVisibilityControl;->onConfigurationUpdated(Lcom/android/server/location/gnss/GnssConfiguration;)V
-PLcom/android/server/location/gnss/GnssVisibilityControl;->onGpsEnabledChanged(Z)V
-PLcom/android/server/location/gnss/GnssVisibilityControl;->runEventAndReleaseWakeLock(Ljava/lang/Runnable;)Ljava/lang/Runnable;
PLcom/android/server/location/gnss/GnssVisibilityControl;->runOnHandler(Ljava/lang/Runnable;)V
PLcom/android/server/location/gnss/GnssVisibilityControl;->setNfwLocationAccessProxyAppsInGnssHal([Ljava/lang/String;)V
-PLcom/android/server/location/gnss/NetworkTimeHelper;-><init>()V
-PLcom/android/server/location/gnss/NetworkTimeHelper;->create(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/location/gnss/NetworkTimeHelper$InjectTimeCallback;)Lcom/android/server/location/gnss/NetworkTimeHelper;
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;)V
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;Ljava/lang/String;)V
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;)V
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl;->$r8$lambda$dEkDddYB5Iz8T29obuGL0xQsU6Y(Lcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;Ljava/lang/String;)V
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl;-><init>(Landroid/os/Looper;)V
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl;->clearDelayedTimeQueryCallback()V
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl;->getLatestNetworkTime()Lcom/android/server/timedetector/NetworkTimeSuggestion;
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl;->lambda$requestImmediateTimeQueryCallback$0(Lcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;Ljava/lang/String;)V
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl;->requestDelayedTimeQueryCallback(Lcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;J)V
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl;->requestImmediateTimeQueryCallback(Lcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;Ljava/lang/String;)V
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl;->setNetworkTimeUpdateListener(Lcom/android/server/timezonedetector/StateChangeListener;)V
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;-><clinit>()V
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;-><init>(Lcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$Environment;Lcom/android/server/location/gnss/NetworkTimeHelper$InjectTimeCallback;)V
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;->calculateTimeSignalAgeMillis(Lcom/android/server/timedetector/NetworkTimeSuggestion;)J
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;->demandUtcTimeInjection()V
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;->isInUse()Z
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;->logToDumpLog(Ljava/lang/String;)V
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;->maybeInjectNetworkTime(Lcom/android/server/timedetector/NetworkTimeSuggestion;Ljava/lang/String;)V
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;->queryAndInjectNetworkTime(Ljava/lang/String;)V
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;->removePeriodicNetworkTimeQuery()V
-PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;->setPeriodicTimeInjectionMode(Z)V
-PLcom/android/server/location/gnss/hal/GnssNative$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/location/gnss/hal/GnssNative;Landroid/location/GnssCapabilities;Landroid/location/GnssCapabilities;)V
-PLcom/android/server/location/gnss/hal/GnssNative$$ExternalSyntheticLambda16;->runOrThrow()V
-PLcom/android/server/location/gnss/hal/GnssNative$$ExternalSyntheticLambda23;-><init>(Lcom/android/server/location/gnss/hal/GnssNative;I)V
-PLcom/android/server/location/gnss/hal/GnssNative$$ExternalSyntheticLambda23;->runOrThrow()V
-PLcom/android/server/location/gnss/hal/GnssNative$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/location/gnss/hal/GnssNative;II[B)V
-PLcom/android/server/location/gnss/hal/GnssNative$$ExternalSyntheticLambda4;->runOrThrow()V
-PLcom/android/server/location/gnss/hal/GnssNative$BaseCallbacks;->onCapabilitiesChanged(Landroid/location/GnssCapabilities;Landroid/location/GnssCapabilities;)V
+PLcom/android/server/location/gnss/NtpNetworkTimeHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/gnss/NtpNetworkTimeHelper;)V
+PLcom/android/server/location/gnss/NtpNetworkTimeHelper$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/location/gnss/NtpNetworkTimeHelper$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/location/gnss/NtpNetworkTimeHelper;JJI)V
+PLcom/android/server/location/gnss/NtpNetworkTimeHelper$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/location/gnss/NtpNetworkTimeHelper;-><clinit>()V
+PLcom/android/server/location/gnss/NtpNetworkTimeHelper;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/location/gnss/NetworkTimeHelper$InjectTimeCallback;Landroid/util/NtpTrustedTime;)V
+PLcom/android/server/location/gnss/NtpNetworkTimeHelper;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/location/gnss/NtpNetworkTimeHelper;->maybeInjectCachedNtpTime(Ljava/lang/String;)Z
+PLcom/android/server/location/gnss/NtpNetworkTimeHelper;->onNetworkAvailable()V
+PLcom/android/server/location/gnss/NtpNetworkTimeHelper;->retrieveAndInjectNtpTime(Ljava/lang/String;)V
+PLcom/android/server/location/gnss/NtpNetworkTimeHelper;->setPeriodicTimeInjectionMode(Z)V
+PLcom/android/server/location/gnss/hal/GnssNative$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/location/gnss/hal/GnssNative;I)V
+PLcom/android/server/location/gnss/hal/GnssNative$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/location/gnss/hal/GnssNative;ZZ)V
+PLcom/android/server/location/gnss/hal/GnssNative$$ExternalSyntheticLambda14;->runOrThrow()V
+PLcom/android/server/location/gnss/hal/GnssNative$$ExternalSyntheticLambda18;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;I)V
+PLcom/android/server/location/gnss/hal/GnssNative$$ExternalSyntheticLambda18;->runOrThrow()V
+PLcom/android/server/location/gnss/hal/GnssNative$BaseCallbacks;->onCapabilitiesChanged(Landroid/location/GnssCapabilities;)V
PLcom/android/server/location/gnss/hal/GnssNative$BaseCallbacks;->onHalStarted()V
PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;-><init>()V
-PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->classInitOnce()V
-PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->cleanup()V
-PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->init()Z
-PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->initBatching()Z
-PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->initOnce(Lcom/android/server/location/gnss/hal/GnssNative;Z)V
-PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->isGeofencingSupported()Z
-PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->isGnssVisibilityControlSupported()Z
-PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->isPsdsSupported()Z
-PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->isSupported()Z
-PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->setAgpsServer(ILjava/lang/String;I)V
-PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->setAgpsSetId(ILjava/lang/String;)V
-PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->startAntennaInfoListening()Z
-PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->startSvStatusCollection()Z
-PLcom/android/server/location/gnss/hal/GnssNative;->$r8$lambda$1tvOlZmXGrQw0TxJr3KhvBNnqY4(Lcom/android/server/location/gnss/hal/GnssNative;II[B)V
-PLcom/android/server/location/gnss/hal/GnssNative;->$r8$lambda$f8mnaV-CqxjxteNWGUfaMwcgJL8(Lcom/android/server/location/gnss/hal/GnssNative;Landroid/location/GnssCapabilities;Landroid/location/GnssCapabilities;)V
-PLcom/android/server/location/gnss/hal/GnssNative;->$r8$lambda$kX3GdWZHTIR8BsDyWlCdiVJuuvA(Lcom/android/server/location/gnss/hal/GnssNative;I)V
-PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$mnative_init_once(Lcom/android/server/location/gnss/hal/GnssNative;Z)V
-PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_agps_set_id(ILjava/lang/String;)V
-PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_class_init_once()V
-PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_cleanup()V
-PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_init()Z
-PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_init_batching()Z
-PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_is_geofence_supported()Z
-PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_is_gnss_visibility_control_supported()Z
-PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_is_supported()Z
-PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_set_agps_server(ILjava/lang/String;I)V
-PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_start_antenna_info_listening()Z
-PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_start_sv_status_collection()Z
-PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_supports_psds()Z
PLcom/android/server/location/gnss/hal/GnssNative;-><init>(Lcom/android/server/location/gnss/hal/GnssNative$GnssHal;Lcom/android/server/location/injector/Injector;Lcom/android/server/location/gnss/GnssConfiguration;)V
PLcom/android/server/location/gnss/hal/GnssNative;->addAntennaInfoCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$AntennaInfoCallbacks;)V
PLcom/android/server/location/gnss/hal/GnssNative;->addBaseCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$BaseCallbacks;)V
@@ -14293,1278 +11002,1282 @@ PLcom/android/server/location/gnss/hal/GnssNative;->addNavigationMessageCallback
PLcom/android/server/location/gnss/hal/GnssNative;->addNmeaCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$NmeaCallbacks;)V
PLcom/android/server/location/gnss/hal/GnssNative;->addStatusCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$StatusCallbacks;)V
PLcom/android/server/location/gnss/hal/GnssNative;->addSvStatusCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$SvStatusCallbacks;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->cleanup()V
+PLcom/android/server/location/gnss/hal/GnssNative;->cleanupBatching()V
PLcom/android/server/location/gnss/hal/GnssNative;->create(Lcom/android/server/location/injector/Injector;Lcom/android/server/location/gnss/GnssConfiguration;)Lcom/android/server/location/gnss/hal/GnssNative;
-PLcom/android/server/location/gnss/hal/GnssNative;->getCapabilities()Landroid/location/GnssCapabilities;
-PLcom/android/server/location/gnss/hal/GnssNative;->getConfiguration()Lcom/android/server/location/gnss/GnssConfiguration;
+PLcom/android/server/location/gnss/hal/GnssNative;->getBatchSize()I
+PLcom/android/server/location/gnss/hal/GnssNative;->getInternalState()Ljava/lang/String;
PLcom/android/server/location/gnss/hal/GnssNative;->init()Z
PLcom/android/server/location/gnss/hal/GnssNative;->initBatching()Z
PLcom/android/server/location/gnss/hal/GnssNative;->initializeGnss(Z)V
PLcom/android/server/location/gnss/hal/GnssNative;->initializeHal()V
+PLcom/android/server/location/gnss/hal/GnssNative;->injectLocation(Landroid/location/Location;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->injectTime(JJI)V
+PLcom/android/server/location/gnss/hal/GnssNative;->isAntennaInfoSupported()Z
PLcom/android/server/location/gnss/hal/GnssNative;->isGeofencingSupported()Z
PLcom/android/server/location/gnss/hal/GnssNative;->isGnssVisibilityControlSupported()Z
+PLcom/android/server/location/gnss/hal/GnssNative;->isMeasurementSupported()Z
+PLcom/android/server/location/gnss/hal/GnssNative;->isNavigationMessageCollectionSupported()Z
PLcom/android/server/location/gnss/hal/GnssNative;->isPsdsSupported()Z
PLcom/android/server/location/gnss/hal/GnssNative;->isSupported()Z
-PLcom/android/server/location/gnss/hal/GnssNative;->lambda$onCapabilitiesChanged$8(Landroid/location/GnssCapabilities;Landroid/location/GnssCapabilities;)V
-PLcom/android/server/location/gnss/hal/GnssNative;->lambda$reportAGpsStatus$3(II[B)V
-PLcom/android/server/location/gnss/hal/GnssNative;->lambda$requestSetID$17(I)V
+PLcom/android/server/location/gnss/hal/GnssNative;->lambda$onCapabilitiesChanged$13(Landroid/location/GnssCapabilities;Landroid/location/GnssCapabilities;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->lambda$requestLocation$24(ZZ)V
PLcom/android/server/location/gnss/hal/GnssNative;->onCapabilitiesChanged(Landroid/location/GnssCapabilities;Landroid/location/GnssCapabilities;)V
PLcom/android/server/location/gnss/hal/GnssNative;->register()V
-PLcom/android/server/location/gnss/hal/GnssNative;->reportAGpsStatus(II[B)V
-PLcom/android/server/location/gnss/hal/GnssNative;->requestSetID(I)V
+PLcom/android/server/location/gnss/hal/GnssNative;->requestLocation(ZZ)V
PLcom/android/server/location/gnss/hal/GnssNative;->setAGpsCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$AGpsCallbacks;)V
PLcom/android/server/location/gnss/hal/GnssNative;->setAgpsServer(ILjava/lang/String;I)V
-PLcom/android/server/location/gnss/hal/GnssNative;->setAgpsSetId(ILjava/lang/String;)V
PLcom/android/server/location/gnss/hal/GnssNative;->setGeofenceCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$GeofenceCallbacks;)V
PLcom/android/server/location/gnss/hal/GnssNative;->setGnssHardwareModelName(Ljava/lang/String;)V
PLcom/android/server/location/gnss/hal/GnssNative;->setGnssYearOfHardware(I)V
PLcom/android/server/location/gnss/hal/GnssNative;->setLocationRequestCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$LocationRequestCallbacks;)V
PLcom/android/server/location/gnss/hal/GnssNative;->setNotificationCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$NotificationCallbacks;)V
PLcom/android/server/location/gnss/hal/GnssNative;->setPsdsCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$PsdsCallbacks;)V
-PLcom/android/server/location/gnss/hal/GnssNative;->setSubHalMeasurementCorrectionsCapabilities(I)V
+PLcom/android/server/location/gnss/hal/GnssNative;->setSignalTypeCapabilities(Ljava/util/List;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->setSubHalPowerIndicationCapabilities(I)V
PLcom/android/server/location/gnss/hal/GnssNative;->setTimeCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$TimeCallbacks;)V
PLcom/android/server/location/gnss/hal/GnssNative;->setTopHalCapabilities(IZ)V
PLcom/android/server/location/gnss/hal/GnssNative;->startAntennaInfoListening()Z
PLcom/android/server/location/gnss/hal/GnssNative;->startSvStatusCollection()Z
-PLcom/android/server/location/injector/AlarmHelper;-><init>()V
-PLcom/android/server/location/injector/AppForegroundHelper;-><init>()V
-PLcom/android/server/location/injector/AppForegroundHelper;->addListener(Lcom/android/server/location/injector/AppForegroundHelper$AppForegroundListener;)V
-PLcom/android/server/location/injector/AppForegroundHelper;->isForeground(I)Z
-HPLcom/android/server/location/injector/AppForegroundHelper;->notifyAppForeground(IZ)V
-PLcom/android/server/location/injector/AppOpsHelper;-><init>()V
-PLcom/android/server/location/injector/AppOpsHelper;->addListener(Lcom/android/server/location/injector/AppOpsHelper$LocationAppOpListener;)V
-PLcom/android/server/location/injector/AppOpsHelper;->notifyAppOpChanged(Ljava/lang/String;)V
-PLcom/android/server/location/injector/DeviceIdleHelper;-><init>()V
-PLcom/android/server/location/injector/DeviceStationaryHelper;-><init>()V
+PLcom/android/server/location/gnss/hal/GnssNative;->stopSvStatusCollection()Z
PLcom/android/server/location/injector/EmergencyHelper;-><init>()V
-PLcom/android/server/location/injector/EmergencyHelper;->addOnEmergencyStateChangedListener(Lcom/android/server/location/injector/EmergencyHelper$EmergencyStateChangedListener;)V
-PLcom/android/server/location/injector/LocationPermissionsHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/injector/LocationPermissionsHelper;)V
-PLcom/android/server/location/injector/LocationPermissionsHelper$$ExternalSyntheticLambda0;->onAppOpsChanged(Ljava/lang/String;)V
-PLcom/android/server/location/injector/LocationPermissionsHelper;->$r8$lambda$WoTjr4sbCqNtECb33nGPjU7MTXA(Lcom/android/server/location/injector/LocationPermissionsHelper;Ljava/lang/String;)V
-PLcom/android/server/location/injector/LocationPermissionsHelper;-><init>(Lcom/android/server/location/injector/AppOpsHelper;)V
-PLcom/android/server/location/injector/LocationPermissionsHelper;->addListener(Lcom/android/server/location/injector/LocationPermissionsHelper$LocationPermissionsListener;)V
-PLcom/android/server/location/injector/LocationPermissionsHelper;->hasLocationPermissions(ILandroid/location/util/identity/CallerIdentity;)Z
-PLcom/android/server/location/injector/LocationPermissionsHelper;->notifyLocationPermissionsChanged(Ljava/lang/String;)V
-PLcom/android/server/location/injector/LocationPermissionsHelper;->onAppOpsChanged(Ljava/lang/String;)V
-PLcom/android/server/location/injector/LocationPowerSaveModeHelper;-><init>()V
-PLcom/android/server/location/injector/LocationPowerSaveModeHelper;->addListener(Lcom/android/server/location/injector/LocationPowerSaveModeHelper$LocationPowerSaveModeChangedListener;)V
-PLcom/android/server/location/injector/LocationUsageLogger;-><init>()V
-PLcom/android/server/location/injector/LocationUsageLogger;->bucketizeDistance(F)I
-PLcom/android/server/location/injector/LocationUsageLogger;->bucketizeExpireIn(J)I
-PLcom/android/server/location/injector/LocationUsageLogger;->bucketizeInterval(J)I
+PLcom/android/server/location/injector/EmergencyHelper;->dispatchEmergencyStateChanged()V
+PLcom/android/server/location/injector/LocationPermissionsHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/injector/SystemLocationPermissionsHelper;)V
PLcom/android/server/location/injector/LocationUsageLogger;->bucketizeProvider(Ljava/lang/String;)I
-PLcom/android/server/location/injector/LocationUsageLogger;->categorizeActivityImportance(Z)I
-PLcom/android/server/location/injector/LocationUsageLogger;->getCallbackType(IZZ)I
PLcom/android/server/location/injector/LocationUsageLogger;->hitApiUsageLogCap()Z
-PLcom/android/server/location/injector/LocationUsageLogger;->logEmergencyStateChanged(Z)V
-HPLcom/android/server/location/injector/LocationUsageLogger;->logLocationApiUsage(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/location/LocationRequest;ZZLandroid/location/Geofence;Z)V
-PLcom/android/server/location/injector/LocationUsageLogger;->logLocationEnabledStateChanged(Z)V
-PLcom/android/server/location/injector/PackageResetHelper;-><init>()V
-PLcom/android/server/location/injector/PackageResetHelper;->notifyPackageReset(Ljava/lang/String;)V
-PLcom/android/server/location/injector/PackageResetHelper;->register(Lcom/android/server/location/injector/PackageResetHelper$Responder;)V
-PLcom/android/server/location/injector/ScreenInteractiveHelper;-><init>()V
-PLcom/android/server/location/injector/ScreenInteractiveHelper;->addListener(Lcom/android/server/location/injector/ScreenInteractiveHelper$ScreenInteractiveChangedListener;)V
-PLcom/android/server/location/injector/SettingsHelper;-><init>()V
+PLcom/android/server/location/injector/LocationUsageLogger;->logLocationApiUsage(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/location/LocationRequest;ZZLandroid/location/Geofence;Z)V
+PLcom/android/server/location/injector/SettingsHelper$GlobalSettingChangedListener;->onSettingChanged(I)V
PLcom/android/server/location/injector/SystemAlarmHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/injector/SystemAlarmHelper;->cancel(Landroid/app/AlarmManager$OnAlarmListener;)V
+PLcom/android/server/location/injector/SystemAlarmHelper;->setDelayedAlarm(JLandroid/app/AlarmManager$OnAlarmListener;)V
PLcom/android/server/location/injector/SystemAppForegroundHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/injector/SystemAppForegroundHelper;)V
HPLcom/android/server/location/injector/SystemAppForegroundHelper$$ExternalSyntheticLambda0;->onUidImportance(II)V
-HPLcom/android/server/location/injector/SystemAppForegroundHelper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/injector/SystemAppForegroundHelper;IZ)V
-HPLcom/android/server/location/injector/SystemAppForegroundHelper$$ExternalSyntheticLambda1;->run()V
-HPLcom/android/server/location/injector/SystemAppForegroundHelper;->$r8$lambda$UCfitvFhYxwpzpERUdvbWiHsEkc(Lcom/android/server/location/injector/SystemAppForegroundHelper;IZ)V
-HPLcom/android/server/location/injector/SystemAppForegroundHelper;->$r8$lambda$kCA01rHRoDFHvlSG_pyah-tjHeE(Lcom/android/server/location/injector/SystemAppForegroundHelper;II)V
+PLcom/android/server/location/injector/SystemAppForegroundHelper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/injector/SystemAppForegroundHelper;IZ)V
+HPLcom/android/server/location/injector/SystemAppForegroundHelper$$ExternalSyntheticLambda1;->run()V+]Lcom/android/server/location/injector/AppForegroundHelper$AppForegroundListener;Lcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda4;,Lcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda7;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;
PLcom/android/server/location/injector/SystemAppForegroundHelper;-><init>(Landroid/content/Context;)V
PLcom/android/server/location/injector/SystemAppForegroundHelper;->isAppForeground(I)Z
-PLcom/android/server/location/injector/SystemAppForegroundHelper;->lambda$onAppForegroundChanged$0(IZ)V
-HPLcom/android/server/location/injector/SystemAppForegroundHelper;->onAppForegroundChanged(II)V
-PLcom/android/server/location/injector/SystemAppForegroundHelper;->onSystemReady()V
PLcom/android/server/location/injector/SystemAppOpsHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/injector/SystemAppOpsHelper;)V
PLcom/android/server/location/injector/SystemAppOpsHelper$$ExternalSyntheticLambda0;->onOpChanged(Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/location/injector/SystemAppOpsHelper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/injector/SystemAppOpsHelper;Ljava/lang/String;)V
PLcom/android/server/location/injector/SystemAppOpsHelper$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/location/injector/SystemAppOpsHelper;->$r8$lambda$dkvV9ErqRUvUhFKYCKm0OGHp7dQ(Lcom/android/server/location/injector/SystemAppOpsHelper;Ljava/lang/String;)V
-PLcom/android/server/location/injector/SystemAppOpsHelper;->$r8$lambda$nvkNbjGehQgduXV6waQG27WlKTE(Lcom/android/server/location/injector/SystemAppOpsHelper;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/location/injector/SystemAppOpsHelper;-><init>(Landroid/content/Context;)V
-PLcom/android/server/location/injector/SystemAppOpsHelper;->checkOpNoThrow(ILandroid/location/util/identity/CallerIdentity;)Z
PLcom/android/server/location/injector/SystemAppOpsHelper;->finishOp(ILandroid/location/util/identity/CallerIdentity;)V
-PLcom/android/server/location/injector/SystemAppOpsHelper;->lambda$onSystemReady$0(Ljava/lang/String;)V
-PLcom/android/server/location/injector/SystemAppOpsHelper;->lambda$onSystemReady$1(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/location/injector/SystemAppOpsHelper;->onSystemReady()V
-PLcom/android/server/location/injector/SystemAppOpsHelper;->startOpNoThrow(ILandroid/location/util/identity/CallerIdentity;)Z
+PLcom/android/server/location/injector/SystemAppOpsHelper;->noteOpNoThrow(ILandroid/location/util/identity/CallerIdentity;)Z
+PLcom/android/server/location/injector/SystemAppOpsHelper;->startOpNoThrow(ILandroid/location/util/identity/CallerIdentity;)V
PLcom/android/server/location/injector/SystemDeviceIdleHelper;-><init>(Landroid/content/Context;)V
PLcom/android/server/location/injector/SystemDeviceIdleHelper;->onRegistrationStateChanged()V
-PLcom/android/server/location/injector/SystemDeviceIdleHelper;->onSystemReady()V
-PLcom/android/server/location/injector/SystemDeviceStationaryHelper;-><init>()V
-PLcom/android/server/location/injector/SystemDeviceStationaryHelper;->onSystemReady()V
-PLcom/android/server/location/injector/SystemEmergencyHelper$1;-><init>(Lcom/android/server/location/injector/SystemEmergencyHelper;)V
-PLcom/android/server/location/injector/SystemEmergencyHelper$2;-><init>(Lcom/android/server/location/injector/SystemEmergencyHelper;)V
+PLcom/android/server/location/injector/SystemEmergencyHelper$1;-><init>(Lcom/android/server/location/injector/SystemEmergencyHelper;I)V
+PLcom/android/server/location/injector/SystemEmergencyHelper$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/location/injector/SystemEmergencyHelper$EmergencyCallTelephonyCallback;-><init>(Lcom/android/server/location/injector/SystemEmergencyHelper;)V
+PLcom/android/server/location/injector/SystemEmergencyHelper$EmergencyCallTelephonyCallback;->onCallStateChanged(I)V
PLcom/android/server/location/injector/SystemEmergencyHelper;-><init>(Landroid/content/Context;)V
PLcom/android/server/location/injector/SystemEmergencyHelper;->isInEmergency(J)Z
PLcom/android/server/location/injector/SystemEmergencyHelper;->onSystemReady()V
PLcom/android/server/location/injector/SystemLocationPermissionsHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/injector/SystemLocationPermissionsHelper;)V
-PLcom/android/server/location/injector/SystemLocationPermissionsHelper;-><init>(Landroid/content/Context;Lcom/android/server/location/injector/AppOpsHelper;)V
-PLcom/android/server/location/injector/SystemLocationPermissionsHelper;->hasPermission(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;)Z
-PLcom/android/server/location/injector/SystemLocationPermissionsHelper;->onSystemReady()V
+PLcom/android/server/location/injector/SystemLocationPermissionsHelper$$ExternalSyntheticLambda0;->onPermissionsChanged(I)V
+PLcom/android/server/location/injector/SystemLocationPermissionsHelper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/injector/SystemLocationPermissionsHelper;I)V
+PLcom/android/server/location/injector/SystemLocationPermissionsHelper$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/location/injector/SystemLocationPermissionsHelper;-><init>(Landroid/content/Context;Lcom/android/server/location/injector/SystemAppOpsHelper;)V
+PLcom/android/server/location/injector/SystemLocationPermissionsHelper;->hasLocationPermissions(ILandroid/location/util/identity/CallerIdentity;)Z
PLcom/android/server/location/injector/SystemLocationPowerSaveModeHelper;-><init>(Landroid/content/Context;)V
-PLcom/android/server/location/injector/SystemLocationPowerSaveModeHelper;->getLocationPowerSaveMode()I
-PLcom/android/server/location/injector/SystemLocationPowerSaveModeHelper;->onSystemReady()V
-PLcom/android/server/location/injector/SystemPackageResetHelper$Receiver$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/injector/SystemPackageResetHelper$Receiver;Ljava/lang/String;)V
-PLcom/android/server/location/injector/SystemPackageResetHelper$Receiver$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/location/injector/SystemPackageResetHelper$Receiver;->$r8$lambda$nQjWM_LpqGA0LL_igYwAYJnsylE(Lcom/android/server/location/injector/SystemPackageResetHelper$Receiver;Ljava/lang/String;)V
+PLcom/android/server/location/injector/SystemPackageResetHelper$Receiver$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/injector/SystemPackageResetHelper$Receiver;Ljava/lang/String;I)V
+PLcom/android/server/location/injector/SystemPackageResetHelper$Receiver$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/location/injector/SystemPackageResetHelper$Receiver;-><init>(Lcom/android/server/location/injector/SystemPackageResetHelper;)V
-PLcom/android/server/location/injector/SystemPackageResetHelper$Receiver;-><init>(Lcom/android/server/location/injector/SystemPackageResetHelper;Lcom/android/server/location/injector/SystemPackageResetHelper$Receiver-IA;)V
-PLcom/android/server/location/injector/SystemPackageResetHelper$Receiver;->lambda$onReceive$1(Ljava/lang/String;)V
PLcom/android/server/location/injector/SystemPackageResetHelper$Receiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/location/injector/SystemPackageResetHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/injector/SystemPackageResetHelper;->notifyPackageReset(Ljava/lang/String;)V
PLcom/android/server/location/injector/SystemPackageResetHelper;->onRegister()V
+PLcom/android/server/location/injector/SystemPackageResetHelper;->register(Lcom/android/server/location/injector/PackageResetHelper$Responder;)V
+PLcom/android/server/location/injector/SystemPackageResetHelper;->unregister(Lcom/android/server/location/injector/PackageResetHelper$Responder;)V
PLcom/android/server/location/injector/SystemScreenInteractiveHelper$1;-><init>(Lcom/android/server/location/injector/SystemScreenInteractiveHelper;)V
+HPLcom/android/server/location/injector/SystemScreenInteractiveHelper$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/location/injector/SystemScreenInteractiveHelper;-><init>(Landroid/content/Context;)V
-PLcom/android/server/location/injector/SystemScreenInteractiveHelper;->onSystemReady()V
-PLcom/android/server/location/injector/SystemSettingsHelper$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/location/injector/SystemSettingsHelper$$ExternalSyntheticLambda0;-><init>(I)V
PLcom/android/server/location/injector/SystemSettingsHelper$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
-PLcom/android/server/location/injector/SystemSettingsHelper$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/location/injector/SystemSettingsHelper$$ExternalSyntheticLambda2;-><init>()V
-PLcom/android/server/location/injector/SystemSettingsHelper$BooleanGlobalSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Handler;)V
-PLcom/android/server/location/injector/SystemSettingsHelper$DeviceConfigSetting;-><init>(Ljava/lang/String;)V
-PLcom/android/server/location/injector/SystemSettingsHelper$DeviceConfigSetting;->addListener(Lcom/android/server/location/injector/SettingsHelper$GlobalSettingChangedListener;)V
-PLcom/android/server/location/injector/SystemSettingsHelper$DeviceConfigSetting;->register()V
-PLcom/android/server/location/injector/SystemSettingsHelper$IntegerSecureSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Handler;)V
-HPLcom/android/server/location/injector/SystemSettingsHelper$IntegerSecureSetting;->getValueForUser(II)I
-PLcom/android/server/location/injector/SystemSettingsHelper$IntegerSecureSetting;->register()V
-PLcom/android/server/location/injector/SystemSettingsHelper$LongGlobalSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Handler;)V
-PLcom/android/server/location/injector/SystemSettingsHelper$LongGlobalSetting;->register()V
+PLcom/android/server/location/injector/SystemSettingsHelper$LongGlobalSetting;-><init>(Landroid/content/Context;Landroid/os/Handler;I)V
PLcom/android/server/location/injector/SystemSettingsHelper$ObservingSetting;-><init>(Landroid/os/Handler;)V
PLcom/android/server/location/injector/SystemSettingsHelper$ObservingSetting;->addListener(Lcom/android/server/location/injector/SettingsHelper$UserSettingChangedListener;)V
-PLcom/android/server/location/injector/SystemSettingsHelper$ObservingSetting;->isRegistered()Z
+PLcom/android/server/location/injector/SystemSettingsHelper$ObservingSetting;->onChange(ZLandroid/net/Uri;I)V
PLcom/android/server/location/injector/SystemSettingsHelper$ObservingSetting;->register(Landroid/content/Context;Landroid/net/Uri;)V
+PLcom/android/server/location/injector/SystemSettingsHelper$ObservingSetting;->removeListener(Lcom/android/server/location/injector/SettingsHelper$UserSettingChangedListener;)V
PLcom/android/server/location/injector/SystemSettingsHelper$PackageTagsListSetting;-><init>(Ljava/lang/String;Ljava/util/function/Supplier;)V
+PLcom/android/server/location/injector/SystemSettingsHelper$PackageTagsListSetting;->getValue()Landroid/os/PackageTagsList;
+PLcom/android/server/location/injector/SystemSettingsHelper$PackageTagsListSetting;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
PLcom/android/server/location/injector/SystemSettingsHelper$StringListCachedSecureSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Handler;)V
PLcom/android/server/location/injector/SystemSettingsHelper$StringListCachedSecureSetting;->getValueForUser(I)Ljava/util/List;
-PLcom/android/server/location/injector/SystemSettingsHelper$StringListCachedSecureSetting;->register()V
-PLcom/android/server/location/injector/SystemSettingsHelper$StringSetCachedGlobalSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/util/function/Supplier;Landroid/os/Handler;)V
+PLcom/android/server/location/injector/SystemSettingsHelper$StringSetCachedGlobalSetting;-><init>(Landroid/content/Context;Lcom/android/server/location/injector/SystemSettingsHelper$$ExternalSyntheticLambda0;Landroid/os/Handler;)V
PLcom/android/server/location/injector/SystemSettingsHelper$StringSetCachedGlobalSetting;->getValue()Ljava/util/Set;
-PLcom/android/server/location/injector/SystemSettingsHelper$StringSetCachedGlobalSetting;->register()V
-PLcom/android/server/location/injector/SystemSettingsHelper;->$r8$lambda$D5hSJ3ILCWeTxjNZR6hpkxtM3qo()Landroid/util/ArraySet;
PLcom/android/server/location/injector/SystemSettingsHelper;-><init>(Landroid/content/Context;)V
-PLcom/android/server/location/injector/SystemSettingsHelper;->addAdasAllowlistChangedListener(Lcom/android/server/location/injector/SettingsHelper$GlobalSettingChangedListener;)V
-PLcom/android/server/location/injector/SystemSettingsHelper;->addIgnoreSettingsAllowlistChangedListener(Lcom/android/server/location/injector/SettingsHelper$GlobalSettingChangedListener;)V
-PLcom/android/server/location/injector/SystemSettingsHelper;->addOnBackgroundThrottleIntervalChangedListener(Lcom/android/server/location/injector/SettingsHelper$GlobalSettingChangedListener;)V
-PLcom/android/server/location/injector/SystemSettingsHelper;->addOnBackgroundThrottlePackageWhitelistChangedListener(Lcom/android/server/location/injector/SettingsHelper$GlobalSettingChangedListener;)V
-PLcom/android/server/location/injector/SystemSettingsHelper;->addOnLocationEnabledChangedListener(Lcom/android/server/location/injector/SettingsHelper$UserSettingChangedListener;)V
-PLcom/android/server/location/injector/SystemSettingsHelper;->addOnLocationPackageBlacklistChangedListener(Lcom/android/server/location/injector/SettingsHelper$UserSettingChangedListener;)V
-PLcom/android/server/location/injector/SystemSettingsHelper;->getBackgroundThrottlePackageWhitelist()Ljava/util/Set;
-PLcom/android/server/location/injector/SystemSettingsHelper;->getCoarseLocationAccuracyM()F
-PLcom/android/server/location/injector/SystemSettingsHelper;->isLocationEnabled(I)Z
+HPLcom/android/server/location/injector/SystemSettingsHelper;->isLocationEnabled(I)Z+]Landroid/content/Context;Landroid/app/ContextImpl;
PLcom/android/server/location/injector/SystemSettingsHelper;->isLocationPackageBlacklisted(ILjava/lang/String;)Z
-PLcom/android/server/location/injector/SystemSettingsHelper;->lambda$new$0()Landroid/util/ArraySet;
PLcom/android/server/location/injector/SystemSettingsHelper;->onSystemReady()V
-PLcom/android/server/location/injector/SystemSettingsHelper;->setLocationEnabled(ZI)V
-PLcom/android/server/location/injector/SystemUserInfoHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/injector/SystemUserInfoHelper;)V
+PLcom/android/server/location/injector/SystemUserInfoHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/LocationManagerService$Lifecycle$LifecycleUserInfoHelper;)V
PLcom/android/server/location/injector/SystemUserInfoHelper$$ExternalSyntheticLambda0;->onUserVisibilityChanged(IZ)V
-PLcom/android/server/location/injector/SystemUserInfoHelper;->$r8$lambda$rmbCOanELEWco8WhmNYmOOvB1A0(Lcom/android/server/location/injector/SystemUserInfoHelper;IZ)V
-PLcom/android/server/location/injector/SystemUserInfoHelper;-><init>(Landroid/content/Context;)V
-PLcom/android/server/location/injector/SystemUserInfoHelper;->getActivityManager()Landroid/app/IActivityManager;
-PLcom/android/server/location/injector/SystemUserInfoHelper;->getActivityManagerInternal()Landroid/app/ActivityManagerInternal;
-PLcom/android/server/location/injector/SystemUserInfoHelper;->getCurrentUserId()I
-PLcom/android/server/location/injector/SystemUserInfoHelper;->getRunningUserIds()[I
-PLcom/android/server/location/injector/SystemUserInfoHelper;->isVisibleUserId(I)Z
-PLcom/android/server/location/injector/SystemUserInfoHelper;->lambda$onSystemReady$0(IZ)V
-PLcom/android/server/location/injector/SystemUserInfoHelper;->onSystemReady()V
-PLcom/android/server/location/injector/UserInfoHelper;-><init>()V
-PLcom/android/server/location/injector/UserInfoHelper;->addListener(Lcom/android/server/location/injector/UserInfoHelper$UserListener;)V
-PLcom/android/server/location/injector/UserInfoHelper;->dispatchOnUserStarted(I)V
-PLcom/android/server/location/injector/UserInfoHelper;->dispatchOnVisibleUserChanged(IZ)V
-PLcom/android/server/location/listeners/BinderListenerRegistration;-><init>(Ljava/util/concurrent/Executor;Ljava/lang/Object;)V
+PLcom/android/server/location/listeners/BinderListenerRegistration;->binderDied()V
PLcom/android/server/location/listeners/BinderListenerRegistration;->onRegister()V
+PLcom/android/server/location/listeners/BinderListenerRegistration;->onUnregister()V
PLcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;-><init>(Lcom/android/server/location/listeners/ListenerMultiplexer;)V
-HPLcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;->acquire()Lcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;
+HPLcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;->acquire()V
HPLcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;->close()V
PLcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;->isReentrant()Z
PLcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;-><init>(Lcom/android/server/location/listeners/ListenerMultiplexer;)V
-HPLcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;->acquire()Lcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;
+PLcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;->acquire()V
HPLcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;->close()V
-PLcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;->isBuffered()Z
-PLcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;->markUpdateServiceRequired()V
-HPLcom/android/server/location/listeners/ListenerMultiplexer;-><init>()V
+PLcom/android/server/location/listeners/ListenerMultiplexer;-><init>()V
+PLcom/android/server/location/listeners/ListenerMultiplexer;->deliverToListeners(Ljava/util/function/Function;)V
+PLcom/android/server/location/listeners/ListenerMultiplexer;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/location/listeners/ListenerMultiplexer;->getServiceState()Ljava/lang/String;
PLcom/android/server/location/listeners/ListenerMultiplexer;->onActive()V
-PLcom/android/server/location/listeners/ListenerMultiplexer;->onRegistrationActiveChanged(Lcom/android/server/location/listeners/ListenerRegistration;)V
-PLcom/android/server/location/listeners/ListenerMultiplexer;->putRegistration(Ljava/lang/Object;Lcom/android/server/location/listeners/ListenerRegistration;)V
+PLcom/android/server/location/listeners/ListenerMultiplexer;->onInactive()V
+PLcom/android/server/location/listeners/ListenerMultiplexer;->onRegistrationActiveChanged(Lcom/android/server/location/listeners/RemovableListenerRegistration;)V
+PLcom/android/server/location/listeners/ListenerMultiplexer;->putRegistration(Ljava/lang/Object;Lcom/android/server/location/listeners/RemovableListenerRegistration;)V
PLcom/android/server/location/listeners/ListenerMultiplexer;->removeRegistration(I)V
PLcom/android/server/location/listeners/ListenerMultiplexer;->removeRegistration(Ljava/lang/Object;)V
-HPLcom/android/server/location/listeners/ListenerMultiplexer;->replaceRegistration(Ljava/lang/Object;Ljava/lang/Object;Lcom/android/server/location/listeners/ListenerRegistration;)V
-PLcom/android/server/location/listeners/ListenerMultiplexer;->unregister(Lcom/android/server/location/listeners/ListenerRegistration;)V
-HPLcom/android/server/location/listeners/ListenerMultiplexer;->updateRegistrations(Ljava/util/function/Predicate;)V
-HPLcom/android/server/location/listeners/ListenerMultiplexer;->updateService()V
-PLcom/android/server/location/listeners/ListenerRegistration;-><init>(Ljava/util/concurrent/Executor;Ljava/lang/Object;)V
-PLcom/android/server/location/listeners/ListenerRegistration;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/location/listeners/ListenerRegistration;->getExecutor()Ljava/util/concurrent/Executor;
-PLcom/android/server/location/listeners/ListenerRegistration;->isActive()Z
-PLcom/android/server/location/listeners/ListenerRegistration;->isRegistered()Z
-PLcom/android/server/location/listeners/ListenerRegistration;->onActive()V
-PLcom/android/server/location/listeners/ListenerRegistration;->onRegister(Ljava/lang/Object;)V
-PLcom/android/server/location/listeners/ListenerRegistration;->onUnregister()V
-PLcom/android/server/location/listeners/ListenerRegistration;->setActive(Z)Z
-PLcom/android/server/location/listeners/ListenerRegistration;->unregisterInternal()V
+PLcom/android/server/location/listeners/ListenerMultiplexer;->removeRegistration(Ljava/lang/Object;Lcom/android/server/location/listeners/RemovableListenerRegistration;)V
+HPLcom/android/server/location/listeners/ListenerMultiplexer;->updateRegistrations(Ljava/util/function/Predicate;)V+]Ljava/util/function/Predicate;megamorphic_types
+PLcom/android/server/location/listeners/ListenerMultiplexer;->updateService()V
+PLcom/android/server/location/listeners/ListenerRegistration$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/listeners/RemovableListenerRegistration;)V
+PLcom/android/server/location/listeners/ListenerRegistration$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
+PLcom/android/server/location/listeners/ListenerRegistration$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/listeners/RemovableListenerRegistration;)V
PLcom/android/server/location/listeners/RemovableListenerRegistration;-><init>(Ljava/util/concurrent/Executor;Ljava/lang/Object;)V
-PLcom/android/server/location/listeners/RemovableListenerRegistration;->getKey()Ljava/lang/Object;
-PLcom/android/server/location/listeners/RemovableListenerRegistration;->onRegister()V
-PLcom/android/server/location/listeners/RemovableListenerRegistration;->onRegister(Ljava/lang/Object;)V
-PLcom/android/server/location/listeners/RemovableListenerRegistration;->onUnregister()V
+PLcom/android/server/location/listeners/RemovableListenerRegistration;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/location/listeners/RemovableListenerRegistration;->executeOperation(Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;)V
+PLcom/android/server/location/listeners/RemovableListenerRegistration;->onActive()V
+PLcom/android/server/location/listeners/RemovableListenerRegistration;->onInactive()V
+PLcom/android/server/location/listeners/RemovableListenerRegistration;->onListenerUnregister()V
+PLcom/android/server/location/listeners/RemovableListenerRegistration;->remove()V
PLcom/android/server/location/provider/AbstractLocationProvider$$ExternalSyntheticLambda0;-><init>(Z)V
PLcom/android/server/location/provider/AbstractLocationProvider$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/location/provider/AbstractLocationProvider$$ExternalSyntheticLambda1;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/location/provider/AbstractLocationProvider$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/location/provider/AbstractLocationProvider$$ExternalSyntheticLambda2;-><init>(Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/function/UnaryOperator;)V
PLcom/android/server/location/provider/AbstractLocationProvider$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/location/provider/AbstractLocationProvider$Controller$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/provider/AbstractLocationProvider;)V
+PLcom/android/server/location/provider/AbstractLocationProvider$Controller$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/provider/AbstractLocationProvider;I)V
PLcom/android/server/location/provider/AbstractLocationProvider$Controller$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/location/provider/AbstractLocationProvider$Controller$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/provider/AbstractLocationProvider$Controller;Landroid/location/provider/ProviderRequest;)V
PLcom/android/server/location/provider/AbstractLocationProvider$Controller$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/location/provider/AbstractLocationProvider$Controller$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/location/provider/AbstractLocationProvider$Listener;)V
-PLcom/android/server/location/provider/AbstractLocationProvider$Controller$$ExternalSyntheticLambda4;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/location/provider/AbstractLocationProvider$Controller;->$r8$lambda$LeNcBraXlYCSFuemITl6ZhAWq-s(Lcom/android/server/location/provider/AbstractLocationProvider$Controller;Landroid/location/provider/ProviderRequest;)V
-PLcom/android/server/location/provider/AbstractLocationProvider$Controller;->$r8$lambda$ymAsNas0LO3WeFO8o8yVE4_uJQA(Lcom/android/server/location/provider/AbstractLocationProvider$Listener;Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;)Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;
PLcom/android/server/location/provider/AbstractLocationProvider$Controller;-><init>(Lcom/android/server/location/provider/AbstractLocationProvider;)V
-PLcom/android/server/location/provider/AbstractLocationProvider$Controller;->isStarted()Z
-PLcom/android/server/location/provider/AbstractLocationProvider$Controller;->lambda$setListener$0(Lcom/android/server/location/provider/AbstractLocationProvider$Listener;Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;)Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;
-PLcom/android/server/location/provider/AbstractLocationProvider$Controller;->lambda$setRequest$1(Landroid/location/provider/ProviderRequest;)V
-HPLcom/android/server/location/provider/AbstractLocationProvider$Controller;->setListener(Lcom/android/server/location/provider/AbstractLocationProvider$Listener;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
+PLcom/android/server/location/provider/AbstractLocationProvider$Controller;->setListener(Lcom/android/server/location/provider/AbstractLocationProvider$Listener;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
PLcom/android/server/location/provider/AbstractLocationProvider$Controller;->setRequest(Landroid/location/provider/ProviderRequest;)V
PLcom/android/server/location/provider/AbstractLocationProvider$Controller;->start()V
PLcom/android/server/location/provider/AbstractLocationProvider$InternalState;-><init>(Lcom/android/server/location/provider/AbstractLocationProvider$Listener;Lcom/android/server/location/provider/AbstractLocationProvider$State;)V
-PLcom/android/server/location/provider/AbstractLocationProvider$InternalState;->withListener(Lcom/android/server/location/provider/AbstractLocationProvider$Listener;)Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;
-PLcom/android/server/location/provider/AbstractLocationProvider$InternalState;->withState(Lcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;
-PLcom/android/server/location/provider/AbstractLocationProvider$InternalState;->withState(Ljava/util/function/UnaryOperator;)Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;
PLcom/android/server/location/provider/AbstractLocationProvider$State;-><clinit>()V
PLcom/android/server/location/provider/AbstractLocationProvider$State;-><init>(ZLandroid/location/provider/ProviderProperties;Landroid/location/util/identity/CallerIdentity;Ljava/util/Set;)V
PLcom/android/server/location/provider/AbstractLocationProvider$State;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/location/provider/AbstractLocationProvider$State;->withAllowed(Z)Lcom/android/server/location/provider/AbstractLocationProvider$State;
-PLcom/android/server/location/provider/AbstractLocationProvider$State;->withExtraAttributionTags(Ljava/util/Set;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
-PLcom/android/server/location/provider/AbstractLocationProvider$State;->withIdentity(Landroid/location/util/identity/CallerIdentity;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
PLcom/android/server/location/provider/AbstractLocationProvider$State;->withProperties(Landroid/location/provider/ProviderProperties;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
-PLcom/android/server/location/provider/AbstractLocationProvider;->$r8$lambda$CeuvNTBi50NGKIcNe9haAXCHlUo(Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/function/UnaryOperator;Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;)Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;
-PLcom/android/server/location/provider/AbstractLocationProvider;->$r8$lambda$xmpiQinuk56UCsTwnnQ2qoBXpWE(ZLcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
-PLcom/android/server/location/provider/AbstractLocationProvider;->-$$Nest$fgetmInternalState(Lcom/android/server/location/provider/AbstractLocationProvider;)Ljava/util/concurrent/atomic/AtomicReference;
-HPLcom/android/server/location/provider/AbstractLocationProvider;-><init>(Ljava/util/concurrent/Executor;Landroid/location/util/identity/CallerIdentity;Landroid/location/provider/ProviderProperties;Ljava/util/Set;)V
-PLcom/android/server/location/provider/AbstractLocationProvider;->getController()Lcom/android/server/location/provider/LocationProviderController;
-HPLcom/android/server/location/provider/AbstractLocationProvider;->getState()Lcom/android/server/location/provider/AbstractLocationProvider$State;
-PLcom/android/server/location/provider/AbstractLocationProvider;->lambda$setAllowed$1(ZLcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
-PLcom/android/server/location/provider/AbstractLocationProvider;->lambda$setState$0(Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/function/UnaryOperator;Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;)Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;
+PLcom/android/server/location/provider/AbstractLocationProvider;-><init>(Ljava/util/concurrent/Executor;Landroid/location/util/identity/CallerIdentity;Landroid/location/provider/ProviderProperties;Ljava/util/Set;)V
PLcom/android/server/location/provider/AbstractLocationProvider;->onStart()V
-PLcom/android/server/location/provider/AbstractLocationProvider;->setAllowed(Z)V
-HPLcom/android/server/location/provider/AbstractLocationProvider;->setState(Ljava/util/function/UnaryOperator;)V
+PLcom/android/server/location/provider/AbstractLocationProvider;->reportLocation(Landroid/location/LocationResult;)V
+PLcom/android/server/location/provider/AbstractLocationProvider;->setState(Ljava/util/function/UnaryOperator;)V
+PLcom/android/server/location/provider/DelegateLocationProvider$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/location/provider/DelegateLocationProvider$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda0;->onUserChanged(II)V
-PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
-PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/location/provider/LocationProviderManager;Landroid/location/provider/ProviderRequest;)V
-PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda13;->run()V
-PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda16;-><init>(I)V
-PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda16;->test(Ljava/lang/Object;)Z
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda12;-><init>(I)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda12;->test(Ljava/lang/Object;)Z
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda13;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda13;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/location/provider/LocationProviderManager;Landroid/location/Location;)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/location/provider/LocationProviderManager;Landroid/location/provider/ProviderRequest;)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda14;->run()V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/location/provider/LocationProviderManager;[Landroid/location/LocationManagerInternal$ProviderEnabledListener;IZ)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda16;->run()V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda17;-><init>(II)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda17;->test(Ljava/lang/Object;)Z
PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
-PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda20;-><init>(I)V
-PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda20;->test(Ljava/lang/Object;)Z
-PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda26;-><init>()V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda26;-><init>(Z)V
PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda26;->test(Ljava/lang/Object;)Z
-PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda27;-><init>(Lcom/android/server/location/provider/LocationProviderManager;Lcom/android/server/location/provider/LocationProviderManager$StateChangedListener;Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)V
-PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda27;->run()V
-HPLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda29;-><init>(IZ)V
-HPLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda29;->test(Ljava/lang/Object;)Z
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda29;-><init>(Lcom/android/server/location/provider/LocationProviderManager;Lcom/android/server/location/LocationManagerService;Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda29;->run()V
PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
-PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda32;-><init>(Ljava/lang/String;)V
-PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda32;->test(Ljava/lang/Object;)Z
-PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda34;-><init>(Ljava/lang/String;)V
-PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda34;->test(Ljava/lang/Object;)Z
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda2;->onStateChanged()V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda30;-><init>(IZ)V
+HPLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda30;->test(Ljava/lang/Object;)Z
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda31;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda31;->test(Ljava/lang/Object;)Z
PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
-PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
-PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
-PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
-HPLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda6;->onAppForegroundChanged(IZ)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/location/provider/LocationProviderManager;I)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda4;->onSettingChanged(I)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/location/provider/LocationProviderManager;I)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda5;->onSettingChanged()V
PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
-PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
-PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda7;->onAppForegroundChanged(IZ)V
PLcom/android/server/location/provider/LocationProviderManager$1;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
+PLcom/android/server/location/provider/LocationProviderManager$1;->onLocationPermissionsChanged(I)V
PLcom/android/server/location/provider/LocationProviderManager$1;->onLocationPermissionsChanged(Ljava/lang/String;)V
PLcom/android/server/location/provider/LocationProviderManager$2;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
PLcom/android/server/location/provider/LocationProviderManager$2;->onPackageReset(Ljava/lang/String;)V
PLcom/android/server/location/provider/LocationProviderManager$ExternalWakeLockReleaser;-><init>(Landroid/location/util/identity/CallerIdentity;Landroid/os/PowerManager$WakeLock;)V
+PLcom/android/server/location/provider/LocationProviderManager$ExternalWakeLockReleaser;->sendResult(Landroid/os/Bundle;)V
PLcom/android/server/location/provider/LocationProviderManager$LocationListenerRegistration;-><init>(Lcom/android/server/location/provider/LocationProviderManager;Landroid/location/LocationRequest;Landroid/location/util/identity/CallerIdentity;Lcom/android/server/location/provider/LocationProviderManager$LocationListenerTransport;I)V
+PLcom/android/server/location/provider/LocationProviderManager$LocationListenerRegistration;->binderDied()V
PLcom/android/server/location/provider/LocationProviderManager$LocationListenerRegistration;->onRegister()V
PLcom/android/server/location/provider/LocationProviderManager$LocationListenerRegistration;->onUnregister()V
PLcom/android/server/location/provider/LocationProviderManager$LocationListenerTransport;-><init>(Landroid/location/ILocationListener;)V
+PLcom/android/server/location/provider/LocationProviderManager$LocationListenerTransport;->deliverOnLocationChanged(Landroid/location/LocationResult;Lcom/android/server/location/provider/LocationProviderManager$ExternalWakeLockReleaser;)V
PLcom/android/server/location/provider/LocationProviderManager$LocationListenerTransport;->deliverOnProviderEnabledChanged(Ljava/lang/String;Z)V
PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/provider/LocationProviderManager$LocationRegistration;)V
PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/provider/LocationProviderManager$LocationRegistration;Z)V
PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$$ExternalSyntheticLambda1;->operate(Ljava/lang/Object;)V
PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/location/provider/LocationProviderManager$LocationRegistration;)V
-PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->$r8$lambda$HKlWp9d0ULfN4Uyj27WwtckCg8Y(Lcom/android/server/location/provider/LocationProviderManager$LocationRegistration;ZLcom/android/server/location/provider/LocationProviderManager$ProviderTransport;)V
-PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->$r8$lambda$MbgOAywiWwljbCZ3_TvCtA84c4I(Lcom/android/server/location/provider/LocationProviderManager$LocationRegistration;)Lcom/android/server/location/provider/LocationProviderManager$ProviderTransport;
-HPLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;-><init>(Lcom/android/server/location/provider/LocationProviderManager;Landroid/location/LocationRequest;Landroid/location/util/identity/CallerIdentity;Ljava/util/concurrent/Executor;Lcom/android/server/location/provider/LocationProviderManager$LocationTransport;I)V
-PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->lambda$onProviderEnabledChanged$0()Lcom/android/server/location/provider/LocationProviderManager$ProviderTransport;
-PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->lambda$onProviderEnabledChanged$1(ZLcom/android/server/location/provider/LocationProviderManager$ProviderTransport;)V
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$1;-><init>(Lcom/android/server/location/provider/LocationProviderManager$LocationRegistration;)V
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$1;->test(Ljava/lang/Object;)Z
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$2;-><init>(Lcom/android/server/location/provider/LocationProviderManager$LocationRegistration;Landroid/location/LocationResult;Z)V
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$2;->onPostExecute(Z)V
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$2;->onPreExecute()V
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$2;->operate(Ljava/lang/Object;)V
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;-><init>(Lcom/android/server/location/provider/LocationProviderManager;Landroid/location/LocationRequest;Landroid/location/util/identity/CallerIdentity;Ljava/util/concurrent/Executor;Lcom/android/server/location/provider/LocationProviderManager$LocationTransport;I)V
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->acceptLocationChange(Landroid/location/LocationResult;)Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;
PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->onActive()V
PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->onListenerUnregister()V
PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->onProviderEnabledChanged(Ljava/lang/String;IZ)V
PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->onRegister()V
PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->onUnregister()V
-HPLcom/android/server/location/provider/LocationProviderManager$Registration;-><init>(Lcom/android/server/location/provider/LocationProviderManager;Landroid/location/LocationRequest;Landroid/location/util/identity/CallerIdentity;Ljava/util/concurrent/Executor;Lcom/android/server/location/provider/LocationProviderManager$LocationTransport;I)V
+PLcom/android/server/location/provider/LocationProviderManager$Registration;-><init>(Lcom/android/server/location/provider/LocationProviderManager;Landroid/location/LocationRequest;Landroid/location/util/identity/CallerIdentity;Ljava/util/concurrent/Executor;Lcom/android/server/location/provider/LocationProviderManager$LocationTransport;I)V
PLcom/android/server/location/provider/LocationProviderManager$Registration;->calculateProviderLocationRequest()Landroid/location/LocationRequest;
-PLcom/android/server/location/provider/LocationProviderManager$Registration;->getIdentity()Landroid/location/util/identity/CallerIdentity;
PLcom/android/server/location/provider/LocationProviderManager$Registration;->getLastDeliveredLocation()Landroid/location/Location;
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->getOwner()Lcom/android/server/location/listeners/ListenerMultiplexer;
PLcom/android/server/location/provider/LocationProviderManager$Registration;->getPermissionLevel()I
PLcom/android/server/location/provider/LocationProviderManager$Registration;->getRequest()Landroid/location/LocationRequest;
PLcom/android/server/location/provider/LocationProviderManager$Registration;->isForeground()Z
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->isOnlyBypassPermitted()Z
PLcom/android/server/location/provider/LocationProviderManager$Registration;->isPermitted()Z
-PLcom/android/server/location/provider/LocationProviderManager$Registration;->isThrottlingExempt()Z
PLcom/android/server/location/provider/LocationProviderManager$Registration;->isUsingHighPower()Z
PLcom/android/server/location/provider/LocationProviderManager$Registration;->onActive()V
-HPLcom/android/server/location/provider/LocationProviderManager$Registration;->onForegroundChanged(IZ)Z
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->onBypassLocationPermissionsChanged(Z)Z
PLcom/android/server/location/provider/LocationProviderManager$Registration;->onHighPowerUsageChanged()V
PLcom/android/server/location/provider/LocationProviderManager$Registration;->onInactive()V
-PLcom/android/server/location/provider/LocationProviderManager$Registration;->onLocationPermissionsChanged(Ljava/lang/String;)Z
-PLcom/android/server/location/provider/LocationProviderManager$Registration;->onProviderPropertiesChanged()Z
-HPLcom/android/server/location/provider/LocationProviderManager$Registration;->onRegister()V
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->onLocationPermissionsChanged$2$1()Z
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->onProviderLocationRequestChanged()Z
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->onRegister()V
PLcom/android/server/location/provider/LocationProviderManager$Registration;->onUnregister()V
-PLcom/android/server/location/provider/LocationProviderManager;->$r8$lambda$6v8wLALl9xMKUcHODJ2SqBgIS5w(Ljava/lang/String;Lcom/android/server/location/provider/LocationProviderManager$Registration;)Z
-PLcom/android/server/location/provider/LocationProviderManager;->$r8$lambda$BdUB__o6u_lJsqreFzvuZ5h1yeE(Lcom/android/server/location/provider/LocationProviderManager;Landroid/location/provider/ProviderRequest;)V
-PLcom/android/server/location/provider/LocationProviderManager;->$r8$lambda$O3CIvdiVBWRXOJSW05H8AlBIHWw(ILcom/android/server/location/provider/LocationProviderManager$Registration;)Z
-PLcom/android/server/location/provider/LocationProviderManager;->$r8$lambda$TlPJnIwBbkvrT20UYrQqqAp6Ncw(IZLcom/android/server/location/provider/LocationProviderManager$Registration;)Z
-PLcom/android/server/location/provider/LocationProviderManager;->$r8$lambda$UTCpk95Vv15pE_v1KFHCIiq6q2A(ILcom/android/server/location/provider/LocationProviderManager$Registration;)Z
-PLcom/android/server/location/provider/LocationProviderManager;->$r8$lambda$ZXN_h6DDTo8Q9vBhqWUlQSLwz7I(Lcom/android/server/location/provider/LocationProviderManager;II)V
-PLcom/android/server/location/provider/LocationProviderManager;->$r8$lambda$a3Z8nDABZyLkK2LFh8YIMBZZX6E(Lcom/android/server/location/provider/LocationProviderManager;IZ)V
-PLcom/android/server/location/provider/LocationProviderManager;->$r8$lambda$aikqiu08UDXI5758wflyUhISwW4(Ljava/lang/String;Lcom/android/server/location/provider/LocationProviderManager$Registration;)Z
-PLcom/android/server/location/provider/LocationProviderManager;->$r8$lambda$nfd58ulm5V48RW-bXnpKnI6wsiQ(Lcom/android/server/location/provider/LocationProviderManager;Lcom/android/server/location/provider/LocationProviderManager$StateChangedListener;Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)V
-PLcom/android/server/location/provider/LocationProviderManager;->-$$Nest$monLocationPermissionsChanged(Lcom/android/server/location/provider/LocationProviderManager;Ljava/lang/String;)V
-PLcom/android/server/location/provider/LocationProviderManager;->-$$Nest$monPackageReset(Lcom/android/server/location/provider/LocationProviderManager;Ljava/lang/String;)V
-PLcom/android/server/location/provider/LocationProviderManager;-><init>(Landroid/content/Context;Lcom/android/server/location/injector/Injector;Ljava/lang/String;Lcom/android/server/location/provider/PassiveLocationProviderManager;)V
-HPLcom/android/server/location/provider/LocationProviderManager;-><init>(Landroid/content/Context;Lcom/android/server/location/injector/Injector;Ljava/lang/String;Lcom/android/server/location/provider/PassiveLocationProviderManager;Ljava/util/Collection;)V
-PLcom/android/server/location/provider/LocationProviderManager;->access$000(Lcom/android/server/location/provider/LocationProviderManager;)Ljava/lang/Object;
-PLcom/android/server/location/provider/LocationProviderManager;->access$100(Lcom/android/server/location/provider/LocationProviderManager;)Ljava/lang/Object;
-PLcom/android/server/location/provider/LocationProviderManager;->access$200(Lcom/android/server/location/provider/LocationProviderManager;)Ljava/lang/Object;
-PLcom/android/server/location/provider/LocationProviderManager;->access$300(Lcom/android/server/location/provider/LocationProviderManager;)Ljava/lang/Object;
-PLcom/android/server/location/provider/LocationProviderManager;->access$400(Lcom/android/server/location/provider/LocationProviderManager;)Ljava/lang/Object;
-PLcom/android/server/location/provider/LocationProviderManager;->access$500(Lcom/android/server/location/provider/LocationProviderManager;)Ljava/lang/Object;
-PLcom/android/server/location/provider/LocationProviderManager;->access$600(Lcom/android/server/location/provider/LocationProviderManager;)Ljava/lang/Object;
-HPLcom/android/server/location/provider/LocationProviderManager;->access$900(Lcom/android/server/location/provider/LocationProviderManager;)Ljava/lang/Object;
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->toString()Ljava/lang/String;
+PLcom/android/server/location/provider/LocationProviderManager;-><init>(Landroid/content/Context;Lcom/android/server/location/LocationManagerService$SystemInjector;Ljava/lang/String;Lcom/android/server/location/provider/PassiveLocationProviderManager;)V
+PLcom/android/server/location/provider/LocationProviderManager;-><init>(Landroid/content/Context;Lcom/android/server/location/LocationManagerService$SystemInjector;Ljava/lang/String;Lcom/android/server/location/provider/PassiveLocationProviderManager;Ljava/util/Collection;)V
PLcom/android/server/location/provider/LocationProviderManager;->addEnabledListener(Landroid/location/LocationManagerInternal$ProviderEnabledListener;)V
-PLcom/android/server/location/provider/LocationProviderManager;->calculateLastLocationRequest(Landroid/location/LastLocationRequest;Landroid/location/util/identity/CallerIdentity;)Landroid/location/LastLocationRequest;
-PLcom/android/server/location/provider/LocationProviderManager;->getLastLocation(Landroid/location/LastLocationRequest;Landroid/location/util/identity/CallerIdentity;I)Landroid/location/Location;
-PLcom/android/server/location/provider/LocationProviderManager;->getLastLocationUnsafe(IIZJ)Landroid/location/Location;
-PLcom/android/server/location/provider/LocationProviderManager;->getName()Ljava/lang/String;
-PLcom/android/server/location/provider/LocationProviderManager;->getPermittedLocation(Landroid/location/Location;I)Landroid/location/Location;
-PLcom/android/server/location/provider/LocationProviderManager;->getProperties()Landroid/location/provider/ProviderProperties;
-PLcom/android/server/location/provider/LocationProviderManager;->getProviderIdentity()Landroid/location/util/identity/CallerIdentity;
-PLcom/android/server/location/provider/LocationProviderManager;->getState()Lcom/android/server/location/provider/AbstractLocationProvider$State;
-PLcom/android/server/location/provider/LocationProviderManager;->isActive(Lcom/android/server/location/listeners/ListenerRegistration;)Z
-PLcom/android/server/location/provider/LocationProviderManager;->isActive(Lcom/android/server/location/provider/LocationProviderManager$Registration;)Z
-HPLcom/android/server/location/provider/LocationProviderManager;->isActive(ZLandroid/location/util/identity/CallerIdentity;)Z
-HPLcom/android/server/location/provider/LocationProviderManager;->isEnabled(I)Z
-HPLcom/android/server/location/provider/LocationProviderManager;->isVisibleToCaller()Z
-PLcom/android/server/location/provider/LocationProviderManager;->lambda$onAppForegroundChanged$10(IZLcom/android/server/location/provider/LocationProviderManager$Registration;)Z
-PLcom/android/server/location/provider/LocationProviderManager;->lambda$onEnabledChanged$21(ILcom/android/server/location/provider/LocationProviderManager$Registration;)Z
-PLcom/android/server/location/provider/LocationProviderManager;->lambda$onLocationPermissionsChanged$12(Ljava/lang/String;Lcom/android/server/location/provider/LocationProviderManager$Registration;)Z
-PLcom/android/server/location/provider/LocationProviderManager;->lambda$onPackageReset$14(Ljava/lang/String;Lcom/android/server/location/provider/LocationProviderManager$Registration;)Z
-PLcom/android/server/location/provider/LocationProviderManager;->lambda$onStateChanged$16(Lcom/android/server/location/provider/LocationProviderManager$StateChangedListener;Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)V
-PLcom/android/server/location/provider/LocationProviderManager;->lambda$onUserChanged$6(ILcom/android/server/location/provider/LocationProviderManager$Registration;)Z
-PLcom/android/server/location/provider/LocationProviderManager;->lambda$setProviderRequest$5(Landroid/location/provider/ProviderRequest;)V
-HPLcom/android/server/location/provider/LocationProviderManager;->onAppForegroundChanged(IZ)V
-HPLcom/android/server/location/provider/LocationProviderManager;->onEnabledChanged(I)V
-PLcom/android/server/location/provider/LocationProviderManager;->onLocationPermissionsChanged(Ljava/lang/String;)V
-PLcom/android/server/location/provider/LocationProviderManager;->onPackageReset(Ljava/lang/String;)V
+PLcom/android/server/location/provider/LocationProviderManager;->calculateRequestDelayMillis(JLjava/util/Collection;)J
+PLcom/android/server/location/provider/LocationProviderManager;->dump(Ljava/io/FileDescriptor;Landroid/util/IndentingPrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/location/provider/LocationProviderManager;->getLastLocationUnsafe(IIJZ)Landroid/location/Location;
+PLcom/android/server/location/provider/LocationProviderManager;->getPermittedLocationResult(Landroid/location/LocationResult;I)Landroid/location/LocationResult;
+PLcom/android/server/location/provider/LocationProviderManager;->getServiceState()Ljava/lang/String;
+PLcom/android/server/location/provider/LocationProviderManager;->isActive(Lcom/android/server/location/listeners/RemovableListenerRegistration;)Z
+PLcom/android/server/location/provider/LocationProviderManager;->isActive(ZLandroid/location/util/identity/CallerIdentity;)Z
+PLcom/android/server/location/provider/LocationProviderManager;->isEnabled(I)Z
+PLcom/android/server/location/provider/LocationProviderManager;->isVisibleToCaller()Z
+PLcom/android/server/location/provider/LocationProviderManager;->mergeRegistrations(Ljava/util/Collection;)Landroid/location/provider/ProviderRequest;
+PLcom/android/server/location/provider/LocationProviderManager;->mergeRegistrations(Ljava/util/Collection;)Ljava/lang/Object;
+PLcom/android/server/location/provider/LocationProviderManager;->onEnabledChanged(I)V
PLcom/android/server/location/provider/LocationProviderManager;->onRegister()V
-PLcom/android/server/location/provider/LocationProviderManager;->onRegistrationAdded(Ljava/lang/Object;Lcom/android/server/location/listeners/ListenerRegistration;)V
-PLcom/android/server/location/provider/LocationProviderManager;->onRegistrationAdded(Ljava/lang/Object;Lcom/android/server/location/provider/LocationProviderManager$Registration;)V
-PLcom/android/server/location/provider/LocationProviderManager;->onRegistrationRemoved(Ljava/lang/Object;Lcom/android/server/location/listeners/ListenerRegistration;)V
-PLcom/android/server/location/provider/LocationProviderManager;->onRegistrationRemoved(Ljava/lang/Object;Lcom/android/server/location/provider/LocationProviderManager$Registration;)V
-HPLcom/android/server/location/provider/LocationProviderManager;->onStateChanged(Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)V
-PLcom/android/server/location/provider/LocationProviderManager;->onUserChanged(II)V
+PLcom/android/server/location/provider/LocationProviderManager;->onRegistrationAdded(Ljava/lang/Object;Lcom/android/server/location/listeners/RemovableListenerRegistration;)V
+PLcom/android/server/location/provider/LocationProviderManager;->onRegistrationRemoved(Ljava/lang/Object;Lcom/android/server/location/listeners/RemovableListenerRegistration;)V
+PLcom/android/server/location/provider/LocationProviderManager;->onReportLocation(Landroid/location/LocationResult;)V
+PLcom/android/server/location/provider/LocationProviderManager;->onStateChanged(Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)V
PLcom/android/server/location/provider/LocationProviderManager;->onUserStarted(I)V
-PLcom/android/server/location/provider/LocationProviderManager;->registerLocationRequest(Landroid/location/LocationRequest;Landroid/location/util/identity/CallerIdentity;ILandroid/location/ILocationListener;)V
-PLcom/android/server/location/provider/LocationProviderManager;->registerWithService(Landroid/location/provider/ProviderRequest;Ljava/util/Collection;)Z
-PLcom/android/server/location/provider/LocationProviderManager;->registerWithService(Ljava/lang/Object;Ljava/util/Collection;)Z
+PLcom/android/server/location/provider/LocationProviderManager;->registerWithService(Ljava/util/Collection;Ljava/lang/Object;)Z
PLcom/android/server/location/provider/LocationProviderManager;->removeEnabledListener(Landroid/location/LocationManagerInternal$ProviderEnabledListener;)V
-PLcom/android/server/location/provider/LocationProviderManager;->reregisterWithService(Landroid/location/provider/ProviderRequest;Landroid/location/provider/ProviderRequest;Ljava/util/Collection;)Z
+PLcom/android/server/location/provider/LocationProviderManager;->reregisterWithService(Landroid/location/provider/ProviderRequest;Landroid/location/provider/ProviderRequest;Ljava/util/Collection;)V
+PLcom/android/server/location/provider/LocationProviderManager;->reregisterWithService(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/Collection;)Z
+PLcom/android/server/location/provider/LocationProviderManager;->setLastLocation(ILandroid/location/Location;)V
PLcom/android/server/location/provider/LocationProviderManager;->setProviderRequest(Landroid/location/provider/ProviderRequest;)V
PLcom/android/server/location/provider/LocationProviderManager;->setRealProvider(Lcom/android/server/location/provider/AbstractLocationProvider;)V
-HPLcom/android/server/location/provider/LocationProviderManager;->startManager(Lcom/android/server/location/provider/LocationProviderManager$StateChangedListener;)V
-PLcom/android/server/location/provider/LocationProviderManager;->unregisterLocationRequest(Landroid/location/ILocationListener;)V
-PLcom/android/server/location/provider/MockableLocationProvider$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/provider/AbstractLocationProvider$State;)V
-PLcom/android/server/location/provider/MockableLocationProvider$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/location/provider/MockableLocationProvider$ListenerWrapper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/provider/AbstractLocationProvider$State;)V
-PLcom/android/server/location/provider/MockableLocationProvider$ListenerWrapper$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/location/provider/MockableLocationProvider$ListenerWrapper;->$r8$lambda$-OaxEM5nNcchTLhF3jHu6bbV1hc(Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
+PLcom/android/server/location/provider/LocationProviderManager;->startManager(Lcom/android/server/location/LocationManagerService;)V
+PLcom/android/server/location/provider/LocationProviderManager;->unregisterWithService()V
PLcom/android/server/location/provider/MockableLocationProvider$ListenerWrapper;-><init>(Lcom/android/server/location/provider/MockableLocationProvider;Lcom/android/server/location/provider/AbstractLocationProvider;)V
-PLcom/android/server/location/provider/MockableLocationProvider$ListenerWrapper;->lambda$onStateChanged$0(Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
+PLcom/android/server/location/provider/MockableLocationProvider$ListenerWrapper;->onReportLocation(Landroid/location/LocationResult;)V
PLcom/android/server/location/provider/MockableLocationProvider$ListenerWrapper;->onStateChanged(Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)V
-PLcom/android/server/location/provider/MockableLocationProvider;->$r8$lambda$va9Z2xDqK0vFpiJbyUFkO_K-fVw(Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
-PLcom/android/server/location/provider/MockableLocationProvider;->-$$Nest$fgetmProvider(Lcom/android/server/location/provider/MockableLocationProvider;)Lcom/android/server/location/provider/AbstractLocationProvider;
PLcom/android/server/location/provider/MockableLocationProvider;-><init>(Ljava/lang/Object;)V
+PLcom/android/server/location/provider/MockableLocationProvider;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/location/provider/MockableLocationProvider;->isMock()Z
-PLcom/android/server/location/provider/MockableLocationProvider;->lambda$setProviderLocked$0(Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
PLcom/android/server/location/provider/MockableLocationProvider;->onSetRequest(Landroid/location/provider/ProviderRequest;)V
PLcom/android/server/location/provider/MockableLocationProvider;->onStart()V
-HPLcom/android/server/location/provider/MockableLocationProvider;->setProviderLocked(Lcom/android/server/location/provider/AbstractLocationProvider;)V
-PLcom/android/server/location/provider/MockableLocationProvider;->setRealProvider(Lcom/android/server/location/provider/AbstractLocationProvider;)V
+PLcom/android/server/location/provider/MockableLocationProvider;->setProviderLocked(Lcom/android/server/location/provider/AbstractLocationProvider;)V
PLcom/android/server/location/provider/PassiveLocationProvider;-><clinit>()V
-PLcom/android/server/location/provider/PassiveLocationProvider;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/provider/PassiveLocationProvider;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/location/provider/PassiveLocationProvider;->onSetRequest(Landroid/location/provider/ProviderRequest;)V
-PLcom/android/server/location/provider/PassiveLocationProviderManager;-><init>(Landroid/content/Context;Lcom/android/server/location/injector/Injector;)V
PLcom/android/server/location/provider/PassiveLocationProviderManager;->calculateRequestDelayMillis(JLjava/util/Collection;)J
+PLcom/android/server/location/provider/PassiveLocationProviderManager;->getServiceState()Ljava/lang/String;
PLcom/android/server/location/provider/PassiveLocationProviderManager;->mergeRegistrations(Ljava/util/Collection;)Landroid/location/provider/ProviderRequest;
PLcom/android/server/location/provider/PassiveLocationProviderManager;->mergeRegistrations(Ljava/util/Collection;)Ljava/lang/Object;
PLcom/android/server/location/provider/PassiveLocationProviderManager;->setRealProvider(Lcom/android/server/location/provider/AbstractLocationProvider;)V
+PLcom/android/server/location/provider/proxy/ProxyGeocodeProvider$1;-><init>(Landroid/location/provider/ReverseGeocodeRequest;Landroid/location/provider/IGeocodeCallback;)V
+PLcom/android/server/location/provider/proxy/ProxyGeocodeProvider$1;->run(Landroid/os/IBinder;)V
+PLcom/android/server/location/provider/proxy/ProxyGeocodeProvider;-><init>(Landroid/content/Context;)V
PLcom/android/server/location/provider/proxy/ProxyLocationProvider$$ExternalSyntheticLambda1;-><init>(Landroid/location/provider/ProviderRequest;)V
-PLcom/android/server/location/provider/proxy/ProxyLocationProvider$1$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/location/provider/proxy/ProxyLocationProvider$1$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/location/provider/proxy/ProxyLocationProvider$1;->$r8$lambda$NpVYyz_7AUBxLdPXQhWgbBcYbjI(Lcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider$$ExternalSyntheticLambda1;->run(Landroid/os/IBinder;)V
PLcom/android/server/location/provider/proxy/ProxyLocationProvider$1;-><init>(Lcom/android/server/location/provider/proxy/ProxyLocationProvider;)V
-PLcom/android/server/location/provider/proxy/ProxyLocationProvider$1;->lambda$run$0(Lcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
-PLcom/android/server/location/provider/proxy/ProxyLocationProvider$1;->run()V
PLcom/android/server/location/provider/proxy/ProxyLocationProvider$Proxy$$ExternalSyntheticLambda0;-><init>(ZLandroid/location/provider/ProviderProperties;Landroid/location/util/identity/CallerIdentity;Landroid/util/ArraySet;)V
PLcom/android/server/location/provider/proxy/ProxyLocationProvider$Proxy$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/location/provider/proxy/ProxyLocationProvider$Proxy;->$r8$lambda$ahStkXOFheXDf68f4rSpZILgStI(ZLandroid/location/provider/ProviderProperties;Landroid/location/util/identity/CallerIdentity;Landroid/util/ArraySet;Lcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
PLcom/android/server/location/provider/proxy/ProxyLocationProvider$Proxy;-><init>(Lcom/android/server/location/provider/proxy/ProxyLocationProvider;)V
-PLcom/android/server/location/provider/proxy/ProxyLocationProvider$Proxy;->lambda$onInitialize$0(ZLandroid/location/provider/ProviderProperties;Landroid/location/util/identity/CallerIdentity;Landroid/util/ArraySet;Lcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
-HPLcom/android/server/location/provider/proxy/ProxyLocationProvider$Proxy;->onInitialize(ZLandroid/location/provider/ProviderProperties;Ljava/lang/String;)V
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider$Proxy;->onInitialize(ZLandroid/location/provider/ProviderProperties;Ljava/lang/String;)V
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider$Proxy;->onReportLocation(Landroid/location/Location;)V
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider$Proxy;->onSetAllowed(Z)V
PLcom/android/server/location/provider/proxy/ProxyLocationProvider;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;II)V
-PLcom/android/server/location/provider/proxy/ProxyLocationProvider;->access$000(Lcom/android/server/location/provider/proxy/ProxyLocationProvider;Ljava/util/function/UnaryOperator;)V
-PLcom/android/server/location/provider/proxy/ProxyLocationProvider;->access$100(Lcom/android/server/location/provider/proxy/ProxyLocationProvider;Ljava/util/function/UnaryOperator;)V
-PLcom/android/server/location/provider/proxy/ProxyLocationProvider;->checkServiceResolves()Z
-PLcom/android/server/location/provider/proxy/ProxyLocationProvider;->create(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/location/provider/proxy/ProxyLocationProvider;
-PLcom/android/server/location/provider/proxy/ProxyLocationProvider;->onBind(Landroid/os/IBinder;Lcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;)V
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/location/provider/proxy/ProxyLocationProvider;->onBind(Landroid/os/IBinder;Lcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;)V
PLcom/android/server/location/provider/proxy/ProxyLocationProvider;->onSetRequest(Landroid/location/provider/ProviderRequest;)V
PLcom/android/server/location/provider/proxy/ProxyLocationProvider;->onStart()V
PLcom/android/server/location/provider/proxy/ProxyLocationProvider;->onUnbind()V
+PLcom/android/server/location/provider/proxy/ProxyPopulationDensityProvider;-><init>(Landroid/content/Context;)V
PLcom/android/server/location/settings/LocationSettings;-><init>(Landroid/content/Context;)V
-PLcom/android/server/location/settings/LocationSettings;->registerLocationUserSettingsListener(Lcom/android/server/location/settings/LocationSettings$LocationUserSettingsListener;)V
+PLcom/android/server/locksettings/BiometricDeferredQueue$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/locksettings/BiometricDeferredQueue;I[B)V
+PLcom/android/server/locksettings/BiometricDeferredQueue$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/locksettings/BiometricDeferredQueue$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/locksettings/BiometricDeferredQueue;)V
+PLcom/android/server/locksettings/BiometricDeferredQueue$$ExternalSyntheticLambda1;->run()V
PLcom/android/server/locksettings/BiometricDeferredQueue$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/locksettings/BiometricDeferredQueue;)V
-PLcom/android/server/locksettings/BiometricDeferredQueue;-><init>(Lcom/android/server/locksettings/SyntheticPasswordManager;Landroid/os/Handler;)V
-PLcom/android/server/locksettings/BiometricDeferredQueue;->systemReady(Landroid/hardware/fingerprint/FingerprintManager;Landroid/hardware/face/FaceManager;Landroid/hardware/biometrics/BiometricManager;)V
+PLcom/android/server/locksettings/BiometricDeferredQueue$UserAuthInfo;-><init>(I[B)V
+PLcom/android/server/locksettings/BiometricDeferredQueue;-><init>(Lcom/android/server/locksettings/SyntheticPasswordManager;)V
+PLcom/android/server/locksettings/BiometricDeferredQueue;->requestHatFromGatekeeperPassword(Lcom/android/server/locksettings/SyntheticPasswordManager;Lcom/android/server/locksettings/BiometricDeferredQueue$UserAuthInfo;J)[B
+PLcom/android/server/locksettings/LockSettingsService$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/locksettings/LockSettingsService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/locksettings/LockSettingsService;Lcom/android/internal/widget/LockscreenCredential;I)V
+PLcom/android/server/locksettings/LockSettingsService$$ExternalSyntheticLambda4;->run()V
+PLcom/android/server/locksettings/LockSettingsService$$ExternalSyntheticLambda5;-><init>(I)V
+PLcom/android/server/locksettings/LockSettingsService$$ExternalSyntheticLambda5;->run()V
PLcom/android/server/locksettings/LockSettingsService$1;-><init>(Lcom/android/server/locksettings/LockSettingsService;I)V
PLcom/android/server/locksettings/LockSettingsService$1;->run()V
PLcom/android/server/locksettings/LockSettingsService$2;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V
PLcom/android/server/locksettings/LockSettingsService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/locksettings/LockSettingsService$3;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V
+PLcom/android/server/locksettings/LockSettingsService$4;-><init>(Ljava/util/concurrent/CountDownLatch;)V
+PLcom/android/server/locksettings/LockSettingsService$4;->onFinished(ILandroid/os/Bundle;)V
PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V
PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->isProvisioned()Z
-PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->onSystemReady()V
+PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->onChange(ZLandroid/net/Uri;I)V
PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->updateRegistration()V
PLcom/android/server/locksettings/LockSettingsService$GateKeeperDiedRecipient;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V
-PLcom/android/server/locksettings/LockSettingsService$GateKeeperDiedRecipient;-><init>(Lcom/android/server/locksettings/LockSettingsService;Lcom/android/server/locksettings/LockSettingsService$GateKeeperDiedRecipient-IA;)V
-PLcom/android/server/locksettings/LockSettingsService$Injector$1;-><init>(Lcom/android/server/locksettings/LockSettingsService$Injector;Lcom/android/server/locksettings/LockSettingsStorage;)V
-PLcom/android/server/locksettings/LockSettingsService$Injector;-><init>(Landroid/content/Context;)V
-PLcom/android/server/locksettings/LockSettingsService$Injector;->getActivityManager()Landroid/app/IActivityManager;
-PLcom/android/server/locksettings/LockSettingsService$Injector;->getBiometricManager()Landroid/hardware/biometrics/BiometricManager;
-PLcom/android/server/locksettings/LockSettingsService$Injector;->getContext()Landroid/content/Context;
-PLcom/android/server/locksettings/LockSettingsService$Injector;->getFaceManager()Landroid/hardware/face/FaceManager;
-PLcom/android/server/locksettings/LockSettingsService$Injector;->getFingerprintManager()Landroid/hardware/fingerprint/FingerprintManager;
-PLcom/android/server/locksettings/LockSettingsService$Injector;->getHandler(Lcom/android/server/ServiceThread;)Landroid/os/Handler;
-PLcom/android/server/locksettings/LockSettingsService$Injector;->getJavaKeyStore()Ljava/security/KeyStore;
-PLcom/android/server/locksettings/LockSettingsService$Injector;->getNotificationManager()Landroid/app/NotificationManager;
-PLcom/android/server/locksettings/LockSettingsService$Injector;->getRebootEscrowManager(Lcom/android/server/locksettings/RebootEscrowManager$Callbacks;Lcom/android/server/locksettings/LockSettingsStorage;)Lcom/android/server/locksettings/RebootEscrowManager;
-PLcom/android/server/locksettings/LockSettingsService$Injector;->getRecoverableKeyStoreManager()Lcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;
-PLcom/android/server/locksettings/LockSettingsService$Injector;->getServiceThread()Lcom/android/server/ServiceThread;
-PLcom/android/server/locksettings/LockSettingsService$Injector;->getStorage()Lcom/android/server/locksettings/LockSettingsStorage;
-PLcom/android/server/locksettings/LockSettingsService$Injector;->getStorageManager()Landroid/os/storage/IStorageManager;
-PLcom/android/server/locksettings/LockSettingsService$Injector;->getStrongAuth()Lcom/android/server/locksettings/LockSettingsStrongAuth;
-PLcom/android/server/locksettings/LockSettingsService$Injector;->getStrongAuthTracker()Lcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTracker;
-PLcom/android/server/locksettings/LockSettingsService$Injector;->getSyntheticPasswordManager(Lcom/android/server/locksettings/LockSettingsStorage;)Lcom/android/server/locksettings/SyntheticPasswordManager;
-PLcom/android/server/locksettings/LockSettingsService$Injector;->getUnifiedProfilePasswordCache(Ljava/security/KeyStore;)Lcom/android/server/locksettings/UnifiedProfilePasswordCache;
-PLcom/android/server/locksettings/LockSettingsService$Injector;->getUserManager()Landroid/os/UserManager;
-PLcom/android/server/locksettings/LockSettingsService$Injector;->isGsiRunning()Z
+PLcom/android/server/locksettings/LockSettingsService$Injector$1;-><init>(Ljava/lang/Object;)V
PLcom/android/server/locksettings/LockSettingsService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onStart()V
PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/locksettings/LockSettingsService$LocalService;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V
-PLcom/android/server/locksettings/LockSettingsService$LocalService;-><init>(Lcom/android/server/locksettings/LockSettingsService;Lcom/android/server/locksettings/LockSettingsService$LocalService-IA;)V
+PLcom/android/server/locksettings/LockSettingsService$LocalService;->getUserPasswordMetrics(I)Landroid/app/admin/PasswordMetrics;
PLcom/android/server/locksettings/LockSettingsService$LocalService;->onThirdPartyAppsStarted()V
+PLcom/android/server/locksettings/LockSettingsService$LocalService;->registerLockSettingsStateListener(Lcom/android/internal/widget/LockSettingsStateListener;)V
PLcom/android/server/locksettings/LockSettingsService$LocalService;->setRebootEscrowListener(Lcom/android/internal/widget/RebootEscrowListener;)V
-PLcom/android/server/locksettings/LockSettingsService$RebootEscrowCallbacks;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V
-PLcom/android/server/locksettings/LockSettingsService$RebootEscrowCallbacks;-><init>(Lcom/android/server/locksettings/LockSettingsService;Lcom/android/server/locksettings/LockSettingsService$RebootEscrowCallbacks-IA;)V
-PLcom/android/server/locksettings/LockSettingsService$RebootEscrowCallbacks;->isUserSecure(I)Z
-PLcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTracker;-><init>(Landroid/content/Context;)V
PLcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTracker;->getStrongAuthForUser(I)I
PLcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTracker;->handleStrongAuthRequiredChanged(II)V
-PLcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTracker;->register(Lcom/android/server/locksettings/LockSettingsStrongAuth;)V
-PLcom/android/server/locksettings/LockSettingsService;->-$$Nest$fgetmContext(Lcom/android/server/locksettings/LockSettingsService;)Landroid/content/Context;
-PLcom/android/server/locksettings/LockSettingsService;->-$$Nest$fgetmRebootEscrowManager(Lcom/android/server/locksettings/LockSettingsService;)Lcom/android/server/locksettings/RebootEscrowManager;
-PLcom/android/server/locksettings/LockSettingsService;->-$$Nest$mhideEncryptionNotification(Lcom/android/server/locksettings/LockSettingsService;Landroid/os/UserHandle;)V
-PLcom/android/server/locksettings/LockSettingsService;->-$$Nest$misUserSecure(Lcom/android/server/locksettings/LockSettingsService;I)Z
-PLcom/android/server/locksettings/LockSettingsService;->-$$Nest$mloadEscrowData(Lcom/android/server/locksettings/LockSettingsService;)V
-PLcom/android/server/locksettings/LockSettingsService;->-$$Nest$monThirdPartyAppsStarted(Lcom/android/server/locksettings/LockSettingsService;)V
-PLcom/android/server/locksettings/LockSettingsService;->-$$Nest$monUserStarting(Lcom/android/server/locksettings/LockSettingsService;I)V
-PLcom/android/server/locksettings/LockSettingsService;->-$$Nest$monUserUnlocking(Lcom/android/server/locksettings/LockSettingsService;I)V
PLcom/android/server/locksettings/LockSettingsService;-><clinit>()V
-PLcom/android/server/locksettings/LockSettingsService;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/locksettings/LockSettingsService;-><init>(Lcom/android/server/locksettings/LockSettingsService$Injector;)V
+PLcom/android/server/locksettings/LockSettingsService;-><init>(Lcom/android/server/locksettings/LockSettingsService$Injector;)V
PLcom/android/server/locksettings/LockSettingsService;->callToAuthSecretIfNeeded(ILcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;Z)V
-PLcom/android/server/locksettings/LockSettingsService;->checkDatabaseReadPermission(Ljava/lang/String;I)V
-PLcom/android/server/locksettings/LockSettingsService;->checkPasswordHavePermission()V
+PLcom/android/server/locksettings/LockSettingsService;->checkCredential(Lcom/android/internal/widget/LockscreenCredential;ILcom/android/internal/widget/ICheckCredentialProgressCallback;)Lcom/android/internal/widget/VerifyCredentialResponse;
+PLcom/android/server/locksettings/LockSettingsService;->checkDatabaseReadPermission(ILjava/lang/String;)V
PLcom/android/server/locksettings/LockSettingsService;->checkPasswordReadPermission()V
PLcom/android/server/locksettings/LockSettingsService;->checkWritePermission()V
PLcom/android/server/locksettings/LockSettingsService;->deleteRepairModePersistentDataIfNeeded()V
-PLcom/android/server/locksettings/LockSettingsService;->getAuthSecretHal()V
+PLcom/android/server/locksettings/LockSettingsService;->disableEscrowTokenOnNonManagedDevicesIfNeeded(I)V
+PLcom/android/server/locksettings/LockSettingsService;->doVerifyCredential(Lcom/android/internal/widget/LockscreenCredential;ILcom/android/internal/widget/ICheckCredentialProgressCallback;I)Lcom/android/internal/widget/VerifyCredentialResponse;
+PLcom/android/server/locksettings/LockSettingsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/locksettings/LockSettingsService;->dumpInternal(Ljava/io/PrintWriter;)V
+PLcom/android/server/locksettings/LockSettingsService;->enforceFrpNotActive()V
+PLcom/android/server/locksettings/LockSettingsService;->generateKey(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/locksettings/LockSettingsService;->getBoolean(Ljava/lang/String;ZI)Z
PLcom/android/server/locksettings/LockSettingsService;->getCredentialType(I)I
PLcom/android/server/locksettings/LockSettingsService;->getCredentialTypeInternal(I)I
PLcom/android/server/locksettings/LockSettingsService;->getCurrentLskfBasedProtectorId(I)J
PLcom/android/server/locksettings/LockSettingsService;->getGateKeeperService()Landroid/service/gatekeeper/IGateKeeperService;
+PLcom/android/server/locksettings/LockSettingsService;->getKey(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/locksettings/LockSettingsService;->getKeyChainSnapshot()Landroid/security/keystore/recovery/KeyChainSnapshot;
PLcom/android/server/locksettings/LockSettingsService;->getLong(Ljava/lang/String;JI)J
+PLcom/android/server/locksettings/LockSettingsService;->getProfilesWithSameLockScreen(I)Ljava/util/Set;
+PLcom/android/server/locksettings/LockSettingsService;->getRecoverySecretTypes()[I
+PLcom/android/server/locksettings/LockSettingsService;->getRecoveryStatus()Ljava/util/Map;
+PLcom/android/server/locksettings/LockSettingsService;->getSeparateProfileChallengeEnabledInternal(I)Z
PLcom/android/server/locksettings/LockSettingsService;->getString(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
-PLcom/android/server/locksettings/LockSettingsService;->getUserManagerFromCache(I)Landroid/os/UserManager;
+PLcom/android/server/locksettings/LockSettingsService;->getUserPasswordMetrics(I)Landroid/app/admin/PasswordMetrics;
PLcom/android/server/locksettings/LockSettingsService;->hasPermission(Ljava/lang/String;)Z
-PLcom/android/server/locksettings/LockSettingsService;->hideEncryptionNotification(Landroid/os/UserHandle;)V
+PLcom/android/server/locksettings/LockSettingsService;->hasSecureLockScreen()Z
+PLcom/android/server/locksettings/LockSettingsService;->initRecoveryServiceWithSigFile(Ljava/lang/String;[B[B)V
PLcom/android/server/locksettings/LockSettingsService;->isCeStorageUnlocked(I)Z
PLcom/android/server/locksettings/LockSettingsService;->isCredentialSharableWithParent(I)Z
+PLcom/android/server/locksettings/LockSettingsService;->isProfileWithUnifiedLock(I)Z
PLcom/android/server/locksettings/LockSettingsService;->isUserSecure(I)Z
-PLcom/android/server/locksettings/LockSettingsService;->loadEscrowData()V
PLcom/android/server/locksettings/LockSettingsService;->maybeShowEncryptionNotificationForUser(ILjava/lang/String;)V
-PLcom/android/server/locksettings/LockSettingsService;->migrateOldData()V
PLcom/android/server/locksettings/LockSettingsService;->migrateOldDataAfterSystemReady()V
+PLcom/android/server/locksettings/LockSettingsService;->onCredentialVerified(Lcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;Landroid/app/admin/PasswordMetrics;I)V
+PLcom/android/server/locksettings/LockSettingsService;->onPostPasswordChanged(Lcom/android/internal/widget/LockscreenCredential;I)V
PLcom/android/server/locksettings/LockSettingsService;->onSyntheticPasswordKnown(ILcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;Z)V
-PLcom/android/server/locksettings/LockSettingsService;->onSyntheticPasswordUnlocked(ILcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;)V
-PLcom/android/server/locksettings/LockSettingsService;->onThirdPartyAppsStarted()V
-PLcom/android/server/locksettings/LockSettingsService;->onUserStarting(I)V
-PLcom/android/server/locksettings/LockSettingsService;->onUserUnlocking(I)V
PLcom/android/server/locksettings/LockSettingsService;->registerStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V
+PLcom/android/server/locksettings/LockSettingsService;->removeBiometricsForUser(I)V
+PLcom/android/server/locksettings/LockSettingsService;->removeKeystoreProfileKey(I)V
+PLcom/android/server/locksettings/LockSettingsService;->scheduleGc()V
+PLcom/android/server/locksettings/LockSettingsService;->sendBroadcast(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;)V
+PLcom/android/server/locksettings/LockSettingsService;->sendCredentialsOnChangeIfRequired(IZLcom/android/internal/widget/LockscreenCredential;)V
+PLcom/android/server/locksettings/LockSettingsService;->setBoolean(Ljava/lang/String;ZI)V
+PLcom/android/server/locksettings/LockSettingsService;->setCurrentLskfBasedProtectorId(IJ)V
+PLcom/android/server/locksettings/LockSettingsService;->setLockCredential(Lcom/android/internal/widget/LockscreenCredential;Lcom/android/internal/widget/LockscreenCredential;I)Z
+PLcom/android/server/locksettings/LockSettingsService;->setLockCredentialInternal(Lcom/android/internal/widget/LockscreenCredential;Lcom/android/internal/widget/LockscreenCredential;IZ)Z
+PLcom/android/server/locksettings/LockSettingsService;->setLockCredentialWithSpLocked(Lcom/android/internal/widget/LockscreenCredential;Lcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;I)V
+PLcom/android/server/locksettings/LockSettingsService;->setLong(Ljava/lang/String;JI)V
+PLcom/android/server/locksettings/LockSettingsService;->setRecoverySecretTypes([I)V
+PLcom/android/server/locksettings/LockSettingsService;->setRecoveryStatus(Ljava/lang/String;I)V
+PLcom/android/server/locksettings/LockSettingsService;->setSeparateProfileChallengeEnabledLocked(IZLcom/android/internal/widget/LockscreenCredential;)V
+PLcom/android/server/locksettings/LockSettingsService;->setServerParams([B)V
+PLcom/android/server/locksettings/LockSettingsService;->setSnapshotCreatedPendingIntent(Landroid/app/PendingIntent;)V
PLcom/android/server/locksettings/LockSettingsService;->systemReady()V
+PLcom/android/server/locksettings/LockSettingsService;->tieProfileLockIfNecessary(Lcom/android/internal/widget/LockscreenCredential;I)V
PLcom/android/server/locksettings/LockSettingsService;->unlockCeStorage(ILcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;)V
-PLcom/android/server/locksettings/LockSettingsService;->unlockKeystore(ILcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;)V
+PLcom/android/server/locksettings/LockSettingsService;->unlockUser(I)V
PLcom/android/server/locksettings/LockSettingsService;->unlockUserKeyIfUnsecured(I)V
PLcom/android/server/locksettings/LockSettingsService;->userPresent(I)V
-PLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;-><init>()V
-PLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;-><init>(Lcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey-IA;)V
-HPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->equals(Ljava/lang/Object;)Z
-HPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->hashCode()I
-HPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->set(ILjava/lang/String;I)Lcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;
-PLcom/android/server/locksettings/LockSettingsStorage$Cache;->-$$Nest$mgetVersion(Lcom/android/server/locksettings/LockSettingsStorage$Cache;)I
+PLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->hashCode()I
PLcom/android/server/locksettings/LockSettingsStorage$Cache;-><init>()V
-PLcom/android/server/locksettings/LockSettingsStorage$Cache;-><init>(Lcom/android/server/locksettings/LockSettingsStorage$Cache-IA;)V
-HPLcom/android/server/locksettings/LockSettingsStorage$Cache;->contains(ILjava/lang/String;I)Z
-PLcom/android/server/locksettings/LockSettingsStorage$Cache;->copyOf([B)[B
-PLcom/android/server/locksettings/LockSettingsStorage$Cache;->getVersion()I
-PLcom/android/server/locksettings/LockSettingsStorage$Cache;->hasFile(Ljava/io/File;)Z
-PLcom/android/server/locksettings/LockSettingsStorage$Cache;->hasKeyValue(Ljava/lang/String;I)Z
-PLcom/android/server/locksettings/LockSettingsStorage$Cache;->isFetched(I)Z
-HPLcom/android/server/locksettings/LockSettingsStorage$Cache;->peek(ILjava/lang/String;I)Ljava/lang/Object;
-PLcom/android/server/locksettings/LockSettingsStorage$Cache;->peekFile(Ljava/io/File;)[B
-PLcom/android/server/locksettings/LockSettingsStorage$Cache;->peekKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->contains(IILjava/lang/String;)Z
PLcom/android/server/locksettings/LockSettingsStorage$Cache;->put(ILjava/lang/String;Ljava/lang/Object;I)V
-PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putFileIfUnchanged(Ljava/io/File;[BI)V
-HPLcom/android/server/locksettings/LockSettingsStorage$Cache;->putIfUnchanged(ILjava/lang/String;Ljava/lang/Object;II)V
-PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putKeyValueIfUnchanged(Ljava/lang/String;Ljava/lang/Object;II)V
-PLcom/android/server/locksettings/LockSettingsStorage$Cache;->remove(ILjava/lang/String;I)V
-PLcom/android/server/locksettings/LockSettingsStorage$Cache;->removeKey(Ljava/lang/String;I)V
-PLcom/android/server/locksettings/LockSettingsStorage$Cache;->setFetched(I)V
-PLcom/android/server/locksettings/LockSettingsStorage$DatabaseHelper;-><init>(Landroid/content/Context;)V
-PLcom/android/server/locksettings/LockSettingsStorage$DatabaseHelper;->setCallback(Lcom/android/server/locksettings/LockSettingsStorage$Callback;)V
-PLcom/android/server/locksettings/LockSettingsStorage;->-$$Nest$sfgetDEFAULT()Ljava/lang/Object;
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putIfUnchanged(ILjava/lang/String;Ljava/lang/Object;II)V
+PLcom/android/server/locksettings/LockSettingsStorage$PersistentData;-><clinit>()V
+PLcom/android/server/locksettings/LockSettingsStorage$PersistentData;-><init>(III[B)V
+PLcom/android/server/locksettings/LockSettingsStorage$PersistentData;->fromBytes([B)Lcom/android/server/locksettings/LockSettingsStorage$PersistentData;
+PLcom/android/server/locksettings/LockSettingsStorage$PersistentData;->toBytes(III[B)[B
PLcom/android/server/locksettings/LockSettingsStorage;-><clinit>()V
PLcom/android/server/locksettings/LockSettingsStorage;-><init>(Landroid/content/Context;)V
+PLcom/android/server/locksettings/LockSettingsStorage;->deleteFile(Ljava/io/File;)V
+PLcom/android/server/locksettings/LockSettingsStorage;->fsyncDirectory(Ljava/io/File;)V
PLcom/android/server/locksettings/LockSettingsStorage;->getBoolean(Ljava/lang/String;ZI)Z
-PLcom/android/server/locksettings/LockSettingsStorage;->getLong(Ljava/lang/String;JI)J
+PLcom/android/server/locksettings/LockSettingsStorage;->getChildProfileLockFile(I)Ljava/io/File;
+PLcom/android/server/locksettings/LockSettingsStorage;->getLockCredentialFileForUser(ILjava/lang/String;)Ljava/io/File;
+PLcom/android/server/locksettings/LockSettingsStorage;->getPersistentDataBlockManager()Lcom/android/server/pdb/PersistentDataBlockManagerInternal;
+PLcom/android/server/locksettings/LockSettingsStorage;->getRepairModePersistentDataFile()Ljava/io/File;
PLcom/android/server/locksettings/LockSettingsStorage;->getString(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
PLcom/android/server/locksettings/LockSettingsStorage;->getSyntheticPasswordDirectoryForUser(I)Ljava/io/File;
-HPLcom/android/server/locksettings/LockSettingsStorage;->getSyntheticPasswordStateFileForUser(IJLjava/lang/String;)Ljava/io/File;
+PLcom/android/server/locksettings/LockSettingsStorage;->getSyntheticPasswordStateFileForUser(ILjava/lang/String;J)Ljava/io/File;
+PLcom/android/server/locksettings/LockSettingsStorage;->listSyntheticPasswordProtectorsForAllUsers(Ljava/lang/String;)Ljava/util/Map;
+PLcom/android/server/locksettings/LockSettingsStorage;->listSyntheticPasswordProtectorsForUser(ILjava/lang/String;)Ljava/util/List;
PLcom/android/server/locksettings/LockSettingsStorage;->prefetchUser(I)V
-HPLcom/android/server/locksettings/LockSettingsStorage;->readFile(Ljava/io/File;)[B
-HPLcom/android/server/locksettings/LockSettingsStorage;->readKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
-PLcom/android/server/locksettings/LockSettingsStorage;->readSyntheticPasswordState(IJLjava/lang/String;)[B
-HPLcom/android/server/locksettings/LockSettingsStorage;->removeKey(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;I)V
+PLcom/android/server/locksettings/LockSettingsStorage;->readFile(Ljava/io/File;)[B
+PLcom/android/server/locksettings/LockSettingsStorage;->readKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
+PLcom/android/server/locksettings/LockSettingsStorage;->readPersistentDataBlock()Lcom/android/server/locksettings/LockSettingsStorage$PersistentData;
PLcom/android/server/locksettings/LockSettingsStorage;->removeKey(Ljava/lang/String;I)V
-PLcom/android/server/locksettings/LockSettingsStorage;->setDatabaseOnCreateCallback(Lcom/android/server/locksettings/LockSettingsStorage$Callback;)V
+PLcom/android/server/locksettings/LockSettingsStorage;->setString(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/locksettings/LockSettingsStorage;->writeFile(Ljava/io/File;[BZ)V
+PLcom/android/server/locksettings/LockSettingsStorage;->writeKeyValue(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/locksettings/LockSettingsStorage;->writeKeyValue(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/locksettings/LockSettingsStorage;->writePersistentDataBlock(III[B)V
PLcom/android/server/locksettings/LockSettingsStrongAuth$1;-><init>(Lcom/android/server/locksettings/LockSettingsStrongAuth;Landroid/os/Looper;)V
PLcom/android/server/locksettings/LockSettingsStrongAuth$1;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/locksettings/LockSettingsStrongAuth$Injector;-><init>()V
PLcom/android/server/locksettings/LockSettingsStrongAuth$Injector;->getAlarmManager(Landroid/content/Context;)Landroid/app/AlarmManager;
PLcom/android/server/locksettings/LockSettingsStrongAuth$Injector;->getDefaultStrongAuthFlags(Landroid/content/Context;)I
-PLcom/android/server/locksettings/LockSettingsStrongAuth;->-$$Nest$mhandleAddStrongAuthTracker(Lcom/android/server/locksettings/LockSettingsStrongAuth;Landroid/app/trust/IStrongAuthTracker;)V
-PLcom/android/server/locksettings/LockSettingsStrongAuth;->-$$Nest$mhandleRequireStrongAuth(Lcom/android/server/locksettings/LockSettingsStrongAuth;II)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth$Injector;->getElapsedRealtimeMs()J
+PLcom/android/server/locksettings/LockSettingsStrongAuth$StrongAuthTimeoutAlarmListener;-><init>(Lcom/android/server/locksettings/LockSettingsStrongAuth;JI)V
PLcom/android/server/locksettings/LockSettingsStrongAuth;-><clinit>()V
-PLcom/android/server/locksettings/LockSettingsStrongAuth;-><init>(Landroid/content/Context;)V
PLcom/android/server/locksettings/LockSettingsStrongAuth;-><init>(Landroid/content/Context;Lcom/android/server/locksettings/LockSettingsStrongAuth$Injector;)V
-PLcom/android/server/locksettings/LockSettingsStrongAuth;->handleAddStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V
-PLcom/android/server/locksettings/LockSettingsStrongAuth;->handleRequireStrongAuth(II)V
-PLcom/android/server/locksettings/LockSettingsStrongAuth;->handleRequireStrongAuthOneUser(II)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->cancelNonStrongBiometricAlarmListener(I)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->cancelNonStrongBiometricIdleAlarmListener(I)V
PLcom/android/server/locksettings/LockSettingsStrongAuth;->notifyStrongAuthTrackers(II)V
-PLcom/android/server/locksettings/LockSettingsStrongAuth;->registerStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V
-PLcom/android/server/locksettings/LockSettingsStrongAuth;->reportUnlock(I)V
PLcom/android/server/locksettings/LockSettingsStrongAuth;->requireStrongAuth(II)V
-PLcom/android/server/locksettings/PasswordSlotManager;-><init>()V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->rescheduleStrongAuthTimeoutAlarm(IJ)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->setIsNonStrongBiometricAllowed(ZI)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->setIsNonStrongBiometricAllowedOneUser(IZ)V
+PLcom/android/server/locksettings/PasswordSlotManager;->ensureSlotMapLoaded()V
+PLcom/android/server/locksettings/PasswordSlotManager;->getGsiImageNumber()I
+PLcom/android/server/locksettings/PasswordSlotManager;->getMode()Ljava/lang/String;
+PLcom/android/server/locksettings/PasswordSlotManager;->getSlotMapDir()Ljava/lang/String;
+PLcom/android/server/locksettings/PasswordSlotManager;->markSlotInUse(I)V
+PLcom/android/server/locksettings/PasswordSlotManager;->refreshActiveSlots(Ljava/util/Set;)V
+PLcom/android/server/locksettings/PasswordSlotManager;->saveSlotMap()V
+PLcom/android/server/locksettings/PasswordSlotManager;->saveSlotMap(Ljava/io/OutputStream;)V
PLcom/android/server/locksettings/RebootEscrowKeyStoreManager;-><init>()V
-PLcom/android/server/locksettings/RebootEscrowManager$Injector;-><init>(Landroid/content/Context;Lcom/android/server/locksettings/LockSettingsStorage;)V
-PLcom/android/server/locksettings/RebootEscrowManager$Injector;->getEventLog()Lcom/android/server/locksettings/RebootEscrowManager$RebootEscrowEventLog;
-PLcom/android/server/locksettings/RebootEscrowManager$Injector;->getKeyStoreManager()Lcom/android/server/locksettings/RebootEscrowKeyStoreManager;
-PLcom/android/server/locksettings/RebootEscrowManager$Injector;->getUserManager()Landroid/os/UserManager;
+PLcom/android/server/locksettings/RebootEscrowManager$Injector;-><init>(Landroid/content/Context;Lcom/android/server/locksettings/LockSettingsStorage;Lcom/android/server/pm/UserManagerInternal;)V
PLcom/android/server/locksettings/RebootEscrowManager$RebootEscrowEventLog;-><init>()V
-PLcom/android/server/locksettings/RebootEscrowManager;-><init>(Landroid/content/Context;Lcom/android/server/locksettings/RebootEscrowManager$Callbacks;Lcom/android/server/locksettings/LockSettingsStorage;Landroid/os/Handler;)V
PLcom/android/server/locksettings/RebootEscrowManager;-><init>(Lcom/android/server/locksettings/RebootEscrowManager$Injector;Lcom/android/server/locksettings/RebootEscrowManager$Callbacks;Lcom/android/server/locksettings/LockSettingsStorage;Landroid/os/Handler;)V
-PLcom/android/server/locksettings/RebootEscrowManager;->callToRebootEscrowIfNeeded(IB[B)V
PLcom/android/server/locksettings/RebootEscrowManager;->clearMetricsStorage()V
-PLcom/android/server/locksettings/RebootEscrowManager;->loadRebootEscrowDataIfAvailable(Landroid/os/Handler;)V
-PLcom/android/server/locksettings/RebootEscrowManager;->setRebootEscrowListener(Lcom/android/internal/widget/RebootEscrowListener;)V
-PLcom/android/server/locksettings/SP800Derive;-><init>([B)V
-PLcom/android/server/locksettings/SP800Derive;->getMac()Ljavax/crypto/Mac;
-PLcom/android/server/locksettings/SP800Derive;->update32(Ljavax/crypto/Mac;I)V
-PLcom/android/server/locksettings/SP800Derive;->withContext([B[B)[B
+PLcom/android/server/locksettings/SecureRandomUtils;-><clinit>()V
+PLcom/android/server/locksettings/SecureRandomUtils;->randomBytes(I)[B
PLcom/android/server/locksettings/SyntheticPasswordCrypto;-><clinit>()V
-PLcom/android/server/locksettings/SyntheticPasswordCrypto;->androidKeystoreProviderName()Ljava/lang/String;
-PLcom/android/server/locksettings/SyntheticPasswordCrypto;->decrypt(Ljavax/crypto/SecretKey;[B)[B
+PLcom/android/server/locksettings/SyntheticPasswordCrypto;->decrypt([BLjavax/crypto/SecretKey;)[B
PLcom/android/server/locksettings/SyntheticPasswordCrypto;->decrypt([B[B[B)[B
-PLcom/android/server/locksettings/SyntheticPasswordCrypto;->decryptBlob(Ljava/lang/String;[B[B)[B
+PLcom/android/server/locksettings/SyntheticPasswordCrypto;->encrypt([BLjavax/crypto/SecretKey;)[B
+PLcom/android/server/locksettings/SyntheticPasswordCrypto;->encrypt([B[B[B)[B
PLcom/android/server/locksettings/SyntheticPasswordCrypto;->getKeyStore()Ljava/security/KeyStore;
-PLcom/android/server/locksettings/SyntheticPasswordCrypto;->keyNamespace()I
PLcom/android/server/locksettings/SyntheticPasswordCrypto;->personalizedHash([B[[B)[B
-PLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationResult;-><init>()V
+PLcom/android/server/locksettings/SyntheticPasswordManager$PasswordData;->fromBytes([B)Lcom/android/server/locksettings/SyntheticPasswordManager$PasswordData;
+PLcom/android/server/locksettings/SyntheticPasswordManager$PasswordData;->toBytes()[B
PLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;-><init>(B)V
-PLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;->deriveFileBasedEncryptionKey()[B
-PLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;->deriveGkPassword()[B
-PLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;->deriveKeyStorePassword()[B
PLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;->deriveSubkey([B)[B
-PLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;->getSyntheticPassword()[B
-PLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;->getVersion()B
-PLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;->recreateDirectly([B)V
-PLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPasswordBlob;-><init>()V
PLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPasswordBlob;->fromBytes([B)Lcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPasswordBlob;
-PLcom/android/server/locksettings/SyntheticPasswordManager;->-$$Nest$sfgetPERSONALIZATION_CONTEXT()[B
-PLcom/android/server/locksettings/SyntheticPasswordManager;->-$$Nest$sfgetPERSONALIZATION_FBE_KEY()[B
-PLcom/android/server/locksettings/SyntheticPasswordManager;->-$$Nest$sfgetPERSONALIZATION_KEY_STORE_PASSWORD()[B
-PLcom/android/server/locksettings/SyntheticPasswordManager;->-$$Nest$sfgetPERSONALIZATION_SP_GK_AUTH()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager$WeaverDiedRecipient;-><init>(Lcom/android/server/locksettings/SyntheticPasswordManager;)V
PLcom/android/server/locksettings/SyntheticPasswordManager;-><clinit>()V
PLcom/android/server/locksettings/SyntheticPasswordManager;-><init>(Landroid/content/Context;Lcom/android/server/locksettings/LockSettingsStorage;Landroid/os/UserManager;Lcom/android/server/locksettings/PasswordSlotManager;)V
PLcom/android/server/locksettings/SyntheticPasswordManager;->bytesToHex([B)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->createLskfBasedProtector(Landroid/service/gatekeeper/IGateKeeperService;Lcom/android/internal/widget/LockscreenCredential;Lcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;I)J
+PLcom/android/server/locksettings/SyntheticPasswordManager;->createSpBlob(Ljava/lang/String;[B[BJ)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->createSyntheticPasswordBlob(JBLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;[BJI)V
PLcom/android/server/locksettings/SyntheticPasswordManager;->decryptSpBlob(Ljava/lang/String;[B[B)[B
-PLcom/android/server/locksettings/SyntheticPasswordManager;->getCredentialType(JI)I
+PLcom/android/server/locksettings/SyntheticPasswordManager;->destroyLskfBasedProtector(IJ)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->destroyProtectorKey(Ljava/lang/String;)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->destroyState(ILjava/lang/String;J)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->destroyWeaverSlot(IJ)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->getNextAvailableWeaverSlot()I
+PLcom/android/server/locksettings/SyntheticPasswordManager;->getPendingTokensForUser(I)Ljava/util/Set;
PLcom/android/server/locksettings/SyntheticPasswordManager;->getProtectorKeyAlias(J)Ljava/lang/String;
-PLcom/android/server/locksettings/SyntheticPasswordManager;->loadSecdiscardable(JI)[B
-PLcom/android/server/locksettings/SyntheticPasswordManager;->loadState(Ljava/lang/String;JI)[B
-PLcom/android/server/locksettings/SyntheticPasswordManager;->loadSyntheticPasswordHandle(I)[B
-PLcom/android/server/locksettings/SyntheticPasswordManager;->loadWeaverSlot(JI)I
+PLcom/android/server/locksettings/SyntheticPasswordManager;->getSpecialUserPersistentData(I)Lcom/android/server/locksettings/LockSettingsStorage$PersistentData;
+PLcom/android/server/locksettings/SyntheticPasswordManager;->getUsedWeaverSlots()Ljava/util/Set;
+PLcom/android/server/locksettings/SyntheticPasswordManager;->getWeaverService()Landroid/hardware/weaver/IWeaver;
+PLcom/android/server/locksettings/SyntheticPasswordManager;->getWeaverServiceInternal()Landroid/hardware/weaver/IWeaver;
+PLcom/android/server/locksettings/SyntheticPasswordManager;->hasPasswordMetrics(JI)Z
+PLcom/android/server/locksettings/SyntheticPasswordManager;->hasState(ILjava/lang/String;J)Z
+PLcom/android/server/locksettings/SyntheticPasswordManager;->isAutoPinConfirmationFeatureAvailable()Z
+PLcom/android/server/locksettings/SyntheticPasswordManager;->loadState(ILjava/lang/String;J)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->loadWeaverSlot(IJ)I
+PLcom/android/server/locksettings/SyntheticPasswordManager;->savePasswordMetrics(Lcom/android/internal/widget/LockscreenCredential;Lcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;JI)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->saveState(Ljava/lang/String;[BJI)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->scrypt([B[BIIII)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->shouldSynchronizeFrpCredential(Lcom/android/server/locksettings/SyntheticPasswordManager$PasswordData;I)Z
PLcom/android/server/locksettings/SyntheticPasswordManager;->stretchLskf(Lcom/android/internal/widget/LockscreenCredential;Lcom/android/server/locksettings/SyntheticPasswordManager$PasswordData;)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->stretchedLskfToWeaverKey([B)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->syncState(I)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->synchronizeGatekeeperFrpPassword(Lcom/android/server/locksettings/SyntheticPasswordManager$PasswordData;II)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->synchronizeWeaverFrpPassword(Lcom/android/server/locksettings/SyntheticPasswordManager$PasswordData;III)V
PLcom/android/server/locksettings/SyntheticPasswordManager;->transformUnderSecdiscardable([B[B)[B
PLcom/android/server/locksettings/SyntheticPasswordManager;->unlockLskfBasedProtector(Landroid/service/gatekeeper/IGateKeeperService;JLcom/android/internal/widget/LockscreenCredential;ILcom/android/internal/widget/ICheckCredentialProgressCallback;)Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationResult;
PLcom/android/server/locksettings/SyntheticPasswordManager;->unwrapSyntheticPasswordBlob(JB[BJI)Lcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;
-PLcom/android/server/locksettings/SyntheticPasswordManager;->verifyChallenge(Landroid/service/gatekeeper/IGateKeeperService;Lcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;JI)Lcom/android/internal/widget/VerifyCredentialResponse;
-PLcom/android/server/locksettings/SyntheticPasswordManager;->verifyChallengeInternal(Landroid/service/gatekeeper/IGateKeeperService;[BJI)Lcom/android/internal/widget/VerifyCredentialResponse;
+PLcom/android/server/locksettings/SyntheticPasswordManager;->verifyChallengeInternal(IJLandroid/service/gatekeeper/IGateKeeperService;[B)Lcom/android/internal/widget/VerifyCredentialResponse;
+PLcom/android/server/locksettings/SyntheticPasswordManager;->weaverEnroll(Landroid/hardware/weaver/IWeaver;I[B[B)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->weaverVerify(Landroid/hardware/weaver/IWeaver;I[B)Lcom/android/internal/widget/VerifyCredentialResponse;
PLcom/android/server/locksettings/UnifiedProfilePasswordCache;-><clinit>()V
PLcom/android/server/locksettings/UnifiedProfilePasswordCache;-><init>(Ljava/security/KeyStore;)V
+PLcom/android/server/locksettings/UnifiedProfilePasswordCache;->removePassword(I)V
PLcom/android/server/locksettings/recoverablekeystore/KeyStoreProxyImpl;-><init>(Ljava/security/KeyStore;)V
-PLcom/android/server/locksettings/recoverablekeystore/KeyStoreProxyImpl;->getAndLoadAndroidKeyStore()Ljava/security/KeyStore;
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;-><init>(Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;Lcom/android/server/locksettings/recoverablekeystore/RecoverySnapshotListenersStorage;II[BZLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;Lcom/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelper;Landroid/security/Scrypt;)V
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->generateAndStoreCounterId(I)J
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->getKeysToSync(I)Ljava/util/Map;
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->getSnapshotVersion(IZ)I
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->getUiFormat(I)I
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->hashCredentialsBySaltedSha256([B[B)[B
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->run()V
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->syncKeys()V
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->syncKeysForAgent(I)V
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncUtils;-><clinit>()V
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncUtils;->encryptKeysWithRecoveryKey(Ljavax/crypto/SecretKey;Ljava/util/Map;)Ljava/util/Map;
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncUtils;->locallyEncryptRecoveryKey([BLjavax/crypto/SecretKey;)[B
+PLcom/android/server/locksettings/recoverablekeystore/PlatformDecryptionKey;-><init>(ILjavax/crypto/SecretKey;)V
+PLcom/android/server/locksettings/recoverablekeystore/PlatformEncryptionKey;-><init>(ILjavax/crypto/SecretKey;)V
PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;-><clinit>()V
PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;-><init>(Landroid/content/Context;Lcom/android/server/locksettings/recoverablekeystore/KeyStoreProxy;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;)V
-PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->getAndLoadAndroidKeyStore()Ljava/security/KeyStore;
+PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->ensureDecryptionKeyIsValid(ILcom/android/server/locksettings/recoverablekeystore/PlatformDecryptionKey;)V
+PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->generateAndLoadKey(II)V
+PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->getDecryptAlias(II)Ljava/lang/String;
+PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->getDecryptKeyInternal(I)Lcom/android/server/locksettings/recoverablekeystore/PlatformDecryptionKey;
+PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->getEncryptAlias(II)Ljava/lang/String;
+PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->getEncryptKey(I)Lcom/android/server/locksettings/recoverablekeystore/PlatformEncryptionKey;
+PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->getEncryptKeyInternal(I)Lcom/android/server/locksettings/recoverablekeystore/PlatformEncryptionKey;
PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->getInstance(Landroid/content/Context;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;)Lcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;
+PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->init(I)V
+PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->isKeyLoaded(II)Z
PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyGenerator;-><init>(Ljavax/crypto/KeyGenerator;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;)V
-PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyGenerator;->newInstance(Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;)Lcom/android/server/locksettings/recoverablekeystore/RecoverableKeyGenerator;
+PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyGenerator;->generateAndStoreKey(Lcom/android/server/locksettings/recoverablekeystore/PlatformEncryptionKey;IILjava/lang/String;[B)[B
PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;-><init>(Landroid/content/Context;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverySessionStorage;Ljava/util/concurrent/ScheduledExecutorService;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;Lcom/android/server/locksettings/recoverablekeystore/RecoverySnapshotListenersStorage;Lcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;Lcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;Lcom/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelper;Lcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;Lcom/android/server/locksettings/recoverablekeystore/storage/RemoteLockscreenValidationSessionStorage;)V
-PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->getInstance(Landroid/content/Context;)Lcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;
-PLcom/android/server/locksettings/recoverablekeystore/RecoverySnapshotListenersStorage;-><init>()V
-PLcom/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelper;-><init>()V
+PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->checkRecoverKeyStorePermission()V
+PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->generateKeyWithMetadata(Ljava/lang/String;[B)Ljava/lang/String;
+PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->getAlias(IILjava/lang/String;)Ljava/lang/String;
+PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->initRecoveryService(Ljava/lang/String;[B)V
+PLcom/android/server/locksettings/recoverablekeystore/RecoverySnapshotListenersStorage;->tryToSendIntent(ILandroid/app/PendingIntent;)V
+PLcom/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelper;->getDefaultCertificateAliasIfEmpty(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelper;->getRootCertificate(Ljava/lang/String;)Ljava/security/cert/X509Certificate;
+PLcom/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelper;->getValidationDate(Ljava/lang/String;)Ljava/util/Date;
+PLcom/android/server/locksettings/recoverablekeystore/WrappedKey;-><init>([B[B[BII)V
+PLcom/android/server/locksettings/recoverablekeystore/WrappedKey;->fromSecretKey(Lcom/android/server/locksettings/recoverablekeystore/PlatformEncryptionKey;Ljavax/crypto/SecretKey;[B)Lcom/android/server/locksettings/recoverablekeystore/WrappedKey;
+PLcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;->buildCertPath(Ljava/security/cert/PKIXParameters;)Ljava/security/cert/CertPath;
+PLcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;->buildPkixParams(Ljava/util/Date;Ljava/security/cert/X509Certificate;Ljava/util/List;Ljava/security/cert/X509Certificate;)Ljava/security/cert/PKIXParameters;
+PLcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;->decodeBase64(Ljava/lang/String;)[B
+PLcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;->decodeCert([B)Ljava/security/cert/X509Certificate;
+PLcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;->getXmlDirectChildren(Lorg/w3c/dom/Element;Ljava/lang/String;)Ljava/util/List;
+PLcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;->getXmlNodeContents(ILorg/w3c/dom/Element;[Ljava/lang/String;)Ljava/util/List;
+PLcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;->getXmlRootNode([B)Lorg/w3c/dom/Element;
+PLcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;->validateCert(Ljava/util/Date;Ljava/security/cert/X509Certificate;Ljava/util/List;Ljava/security/cert/X509Certificate;)Ljava/security/cert/CertPath;
+PLcom/android/server/locksettings/recoverablekeystore/certificate/CertXml;-><init>(JLjava/util/List;Ljava/util/List;)V
+PLcom/android/server/locksettings/recoverablekeystore/certificate/CertXml;->getEndpointCert(ILjava/util/Date;Ljava/security/cert/X509Certificate;)Ljava/security/cert/CertPath;
+PLcom/android/server/locksettings/recoverablekeystore/certificate/CertXml;->parse([B)Lcom/android/server/locksettings/recoverablekeystore/certificate/CertXml;
+PLcom/android/server/locksettings/recoverablekeystore/certificate/SigXml;-><init>(Ljava/util/List;Ljava/security/cert/X509Certificate;[B)V
+PLcom/android/server/locksettings/recoverablekeystore/certificate/SigXml;->parse([B)Lcom/android/server/locksettings/recoverablekeystore/certificate/SigXml;
+PLcom/android/server/locksettings/recoverablekeystore/certificate/SigXml;->verifyFileSignature(Ljava/security/cert/X509Certificate;[BLjava/util/Date;)V
+PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->deserializeInternal(Ljava/io/InputStream;)Landroid/security/keystore/recovery/KeyChainSnapshot;
+PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readBlobTag(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)[B
+PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readIntTag(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)I
+PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readText(Lcom/android/modules/utils/TypedXmlPullParser;)Ljava/lang/String;
+PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializer;->serialize(Landroid/security/keystore/recovery/KeyChainSnapshot;Ljava/io/OutputStream;)V
+PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializer;->writePropertyTag(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;J)V
+PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializer;->writePropertyTag([BLjava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;)V
PLcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;-><init>(Lcom/android/server/locksettings/recoverablekeystore/KeyStoreProxy;)V
PLcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;->getInstance()Lcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;
+PLcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;->getInternalAlias(IILjava/lang/String;)Ljava/lang/String;
+PLcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;->setSymmetricKeyEntry(Ljava/lang/String;II[B)V
PLcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager$1;-><init>(Lcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;)V
PLcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;-><init>(Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;Landroid/os/UserManager;Lcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;)V
-PLcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;->getInstance(Landroid/content/Context;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;Lcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;)Lcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;
+PLcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;->registerRecoveryAgent(I)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;->storeUserSerialNumber(IJ)V
PLcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;->verifyKnownUsers()V
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb$$ExternalSyntheticLambda0;-><init>(Ljava/util/StringJoiner;)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb$$ExternalSyntheticLambda0;->accept(I)V
PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;-><init>(Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelper;)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->ensureRecoveryServiceMetadataEntryExists(II)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->ensureRootOfTrustEntryExists(IILjava/lang/String;)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->ensureUserMetadataEntryExists(I)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getActiveRootOfTrust(II)Ljava/lang/String;
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getAllKeys(III)Ljava/util/Map;
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getBadRemoteGuessCounter(I)I
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getBytes(IILjava/lang/String;)[B
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getLong(IILjava/lang/String;)Ljava/lang/Long;
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getPlatformKeyGenerationId(I)I
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getRecoveryAgents(I)Ljava/util/List;
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getRecoverySecretTypes(II)[I
PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getUserSerialNumbers()Ljava/util/Map;
-PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->newInstance(Landroid/content/Context;)Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;
-PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelper;-><init>(Landroid/content/Context;)V
-PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelper;->getDbVersion(Landroid/content/Context;)I
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->insertKey(IILjava/lang/String;Lcom/android/server/locksettings/recoverablekeystore/WrappedKey;)J
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setLong(IILjava/lang/String;J)J
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setRecoveryServiceCertPath(IILjava/lang/String;Ljava/security/cert/CertPath;)J
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setRecoveryServiceCertSerial(IILjava/lang/String;J)J
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setShouldCreateSnapshot(II)J
PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverySessionStorage;-><init>()V
PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;-><init>(Ljava/io/File;)V
-PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;->newInstance()Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;->get(I)Landroid/security/keystore/recovery/KeyChainSnapshot;
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;->getSnapshotFile(I)Ljava/io/File;
PLcom/android/server/locksettings/recoverablekeystore/storage/RemoteLockscreenValidationSessionStorage;-><init>()V
PLcom/android/server/logcat/LogcatManagerService$BinderService;-><init>(Lcom/android/server/logcat/LogcatManagerService;)V
-PLcom/android/server/logcat/LogcatManagerService$BinderService;-><init>(Lcom/android/server/logcat/LogcatManagerService;Lcom/android/server/logcat/LogcatManagerService$BinderService-IA;)V
-PLcom/android/server/logcat/LogcatManagerService$Injector$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/logcat/LogcatManagerService$Injector;-><init>()V
-PLcom/android/server/logcat/LogcatManagerService$Injector;->createClock()Ljava/util/function/Supplier;
-PLcom/android/server/logcat/LogcatManagerService$Injector;->getLooper()Landroid/os/Looper;
PLcom/android/server/logcat/LogcatManagerService$LogAccessDialogCallback;-><init>(Lcom/android/server/logcat/LogcatManagerService;)V
PLcom/android/server/logcat/LogcatManagerService$LogAccessRequestHandler;-><init>(Landroid/os/Looper;Lcom/android/server/logcat/LogcatManagerService;)V
PLcom/android/server/logcat/LogcatManagerService;-><clinit>()V
PLcom/android/server/logcat/LogcatManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/logcat/LogcatManagerService;-><init>(Landroid/content/Context;Lcom/android/server/logcat/LogcatManagerService$Injector;)V
PLcom/android/server/logcat/LogcatManagerService;->onStart()V
+PLcom/android/server/media/AudioManagerRouteController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/media/AudioManagerRouteController;)V
+PLcom/android/server/media/AudioManagerRouteController$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/media/AudioManagerRouteController$$ExternalSyntheticLambda1;-><init>(I)V
+PLcom/android/server/media/AudioManagerRouteController$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/media/AudioManagerRouteController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/media/AudioManagerRouteController;)V
+PLcom/android/server/media/AudioManagerRouteController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/media/AudioManagerRouteController;)V
+PLcom/android/server/media/AudioManagerRouteController$$ExternalSyntheticLambda3;->onDevicesForAttributesChanged(Landroid/media/AudioAttributes;Ljava/util/List;)V
+PLcom/android/server/media/AudioManagerRouteController$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/media/AudioManagerRouteController;)V
+PLcom/android/server/media/AudioManagerRouteController$$ExternalSyntheticLambda4;->onBluetoothRoutesUpdated()V
+PLcom/android/server/media/AudioManagerRouteController$AudioDeviceCallbackImpl;-><init>(Lcom/android/server/media/AudioManagerRouteController;)V
+PLcom/android/server/media/AudioManagerRouteController$AudioDeviceCallbackImpl;->onAudioDevicesAdded([Landroid/media/AudioDeviceInfo;)V
+PLcom/android/server/media/AudioManagerRouteController$AudioDeviceCallbackImpl;->onAudioDevicesRemoved([Landroid/media/AudioDeviceInfo;)V
+PLcom/android/server/media/AudioManagerRouteController$MediaRoute2InfoHolder;-><init>(Landroid/media/MediaRoute2Info;IZ)V
+PLcom/android/server/media/AudioManagerRouteController$SystemRouteInfo;-><init>(IILjava/lang/String;)V
+PLcom/android/server/media/AudioManagerRouteController;-><clinit>()V
+PLcom/android/server/media/AudioManagerRouteController;-><init>(Landroid/content/Context;Landroid/media/AudioManager;Landroid/os/Looper;Landroid/media/audiopolicy/AudioProductStrategy;Landroid/bluetooth/BluetoothAdapter;Lcom/android/server/media/SystemMediaRoute2Provider$$ExternalSyntheticLambda1;)V
+HPLcom/android/server/media/AudioManagerRouteController;->createMediaRoute2Info(Ljava/lang/String;ILjava/lang/CharSequence;Ljava/lang/String;)Landroid/media/MediaRoute2Info;
+PLcom/android/server/media/AudioManagerRouteController;->createMediaRoute2InfoFromAudioDeviceInfo(Landroid/media/AudioDeviceInfo;)Landroid/media/MediaRoute2Info;
+PLcom/android/server/media/AudioManagerRouteController;->getAvailableRoutes()Ljava/util/List;
+PLcom/android/server/media/AudioManagerRouteController;->getSelectedRoute()Landroid/media/MediaRoute2Info;
+HPLcom/android/server/media/AudioManagerRouteController;->rebuildAvailableRoutes()V
+PLcom/android/server/media/AudioManagerRouteController;->rebuildAvailableRoutesAndNotify()V
+PLcom/android/server/media/AudioManagerRouteController;->start(Landroid/os/UserHandle;)V
+PLcom/android/server/media/AudioManagerRouteController;->updateVolume(I)Z
PLcom/android/server/media/AudioPlayerStateMonitor$AudioManagerPlaybackListener;-><init>(Lcom/android/server/media/AudioPlayerStateMonitor;)V
-PLcom/android/server/media/AudioPlayerStateMonitor$AudioManagerPlaybackListener;-><init>(Lcom/android/server/media/AudioPlayerStateMonitor;Lcom/android/server/media/AudioPlayerStateMonitor$AudioManagerPlaybackListener-IA;)V
-HPLcom/android/server/media/AudioPlayerStateMonitor$AudioManagerPlaybackListener;->onPlaybackConfigChanged(Ljava/util/List;)V
+HPLcom/android/server/media/AudioPlayerStateMonitor$AudioManagerPlaybackListener;->onPlaybackConfigChanged(Ljava/util/List;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
PLcom/android/server/media/AudioPlayerStateMonitor$MessageHandler;-><init>(Landroid/os/Looper;Lcom/android/server/media/AudioPlayerStateMonitor$OnAudioPlayerActiveStateChangedListener;)V
-PLcom/android/server/media/AudioPlayerStateMonitor;->-$$Nest$fgetmLock(Lcom/android/server/media/AudioPlayerStateMonitor;)Ljava/lang/Object;
+PLcom/android/server/media/AudioPlayerStateMonitor$MessageHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/media/AudioPlayerStateMonitor;->-$$Nest$msendAudioPlayerActiveStateChangedMessageLocked(Lcom/android/server/media/AudioPlayerStateMonitor;Landroid/media/AudioPlaybackConfiguration;Z)V
PLcom/android/server/media/AudioPlayerStateMonitor;-><clinit>()V
PLcom/android/server/media/AudioPlayerStateMonitor;-><init>(Landroid/content/Context;)V
+PLcom/android/server/media/AudioPlayerStateMonitor;->dump(Landroid/content/Context;Ljava/io/PrintWriter;)V
PLcom/android/server/media/AudioPlayerStateMonitor;->getInstance(Landroid/content/Context;)Lcom/android/server/media/AudioPlayerStateMonitor;
-PLcom/android/server/media/AudioPlayerStateMonitor;->getSortedAudioPlaybackClientUids()Ljava/util/List;
PLcom/android/server/media/AudioPlayerStateMonitor;->isPlaybackActive(I)Z
PLcom/android/server/media/AudioPlayerStateMonitor;->registerListener(Lcom/android/server/media/AudioPlayerStateMonitor$OnAudioPlayerActiveStateChangedListener;Landroid/os/Handler;)V
+PLcom/android/server/media/AudioRoutingUtils;-><clinit>()V
+PLcom/android/server/media/BluetoothDeviceRoutesManager$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/media/BluetoothDeviceRoutesManager$DeviceStateChangedReceiver$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/media/BluetoothDeviceRoutesManager$DeviceStateChangedReceiver;)V
+PLcom/android/server/media/BluetoothDeviceRoutesManager$DeviceStateChangedReceiver$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/media/BluetoothDeviceRoutesManager$DeviceStateChangedReceiver;-><init>(Lcom/android/server/media/BluetoothDeviceRoutesManager;I)V
+PLcom/android/server/media/BluetoothDeviceRoutesManager$DeviceStateChangedReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/media/BluetoothDeviceRoutesManager;-><init>(Landroid/content/Context;Landroid/os/Handler;Landroid/bluetooth/BluetoothAdapter;Lcom/android/server/media/BluetoothProfileMonitor;Lcom/android/server/media/BluetoothRouteController$BluetoothRoutesUpdatedListener;)V
+PLcom/android/server/media/BluetoothDeviceRoutesManager;->createBluetoothRoute(Landroid/bluetooth/BluetoothDevice;)Lcom/android/server/media/BluetoothDeviceRoutesManager$BluetoothRouteInfo;
+PLcom/android/server/media/BluetoothDeviceRoutesManager;->getDeviceName(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String;
+PLcom/android/server/media/BluetoothDeviceRoutesManager;->getRouteIdForType(Landroid/bluetooth/BluetoothDevice;I)Ljava/lang/String;
+PLcom/android/server/media/BluetoothDeviceRoutesManager;->updateBluetoothRoutes()V
+PLcom/android/server/media/BluetoothProfileMonitor$ProfileListener;-><init>(Lcom/android/server/media/BluetoothProfileMonitor;)V
+PLcom/android/server/media/BluetoothProfileMonitor$ProfileListener;->onServiceConnected(ILandroid/bluetooth/BluetoothProfile;)V
+PLcom/android/server/media/BluetoothProfileMonitor;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothAdapter;)V
+PLcom/android/server/media/BluetoothProfileMonitor;->isProfileSupported(Landroid/bluetooth/BluetoothDevice;I)Z
+PLcom/android/server/media/BluetoothRouteController$NoOpBluetoothRouteController;->getAllBluetoothRoutes()Ljava/util/List;
+PLcom/android/server/media/BluetoothRouteController$NoOpBluetoothRouteController;->getSelectedRoute()Landroid/media/MediaRoute2Info;
+PLcom/android/server/media/BluetoothRouteController$NoOpBluetoothRouteController;->getTransferableRoutes()Ljava/util/List;
+PLcom/android/server/media/BluetoothRouteController$NoOpBluetoothRouteController;->start(Landroid/os/UserHandle;)V
+PLcom/android/server/media/BluetoothRouteController$NoOpBluetoothRouteController;->updateVolumeForDevices(II)Z
PLcom/android/server/media/HandlerExecutor;-><init>(Landroid/os/Handler;)V
-PLcom/android/server/media/MediaButtonReceiverHolder;->unflattenFromString(Landroid/content/Context;Ljava/lang/String;)Lcom/android/server/media/MediaButtonReceiverHolder;
-PLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/media/MediaRouter2ServiceImpl;)V
-HPLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda13;->onUidImportance(II)V
-PLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/media/MediaRouter2ServiceImpl;)V
+PLcom/android/server/media/MediaButtonReceiverHolder;-><init>(ILandroid/app/PendingIntent;Landroid/content/ComponentName;I)V
+PLcom/android/server/media/MediaButtonReceiverHolder;->create(Ljava/lang/String;Landroid/app/PendingIntent;I)Lcom/android/server/media/MediaButtonReceiverHolder;
+PLcom/android/server/media/MediaRoute2Provider;-><init>(Landroid/content/ComponentName;Z)V
+PLcom/android/server/media/MediaRoute2Provider;->notifyProviderState()V
+HPLcom/android/server/media/MediaRoute2Provider;->setProviderState(Landroid/media/MediaRoute2ProviderInfo;)V
+PLcom/android/server/media/MediaRoute2ProviderWatcher$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/media/MediaRoute2ProviderWatcher;)V
+PLcom/android/server/media/MediaRoute2ProviderWatcher$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/media/MediaRoute2ProviderWatcher$1;-><init>(Lcom/android/server/media/MediaRoute2ProviderWatcher;)V
+PLcom/android/server/media/MediaRoute2ProviderWatcher$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/media/MediaRoute2ProviderWatcher;-><clinit>()V
+PLcom/android/server/media/MediaRoute2ProviderWatcher;-><init>(Landroid/content/Context;Lcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;Lcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;I)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/media/MediaRouter2ServiceImpl;)V
+HPLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda10;->onUidImportance(II)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/media/MediaRouter2ServiceImpl;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda11;->onPermissionsChanged(I)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda15;-><init>(I)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda15;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda20;-><init>(II)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda20;->test(Ljava/lang/Object;)Z
+PLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda22;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda22;->test(Ljava/lang/Object;)Z
+PLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda4;-><init>(I)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda6;-><init>(I)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda6;->accept(Ljava/lang/Object;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda8;-><init>(I)V
+HPLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/media/MediaRouter2ServiceImpl$1;-><init>(Lcom/android/server/media/MediaRouter2ServiceImpl;)V
-HPLcom/android/server/media/MediaRouter2ServiceImpl;->$r8$lambda$ataqgynQFVsOBE3vUnQ_-XD3XQg(Lcom/android/server/media/MediaRouter2ServiceImpl;II)V
+HPLcom/android/server/media/MediaRouter2ServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$2;-><init>(Lcom/android/server/media/MediaRouter2ServiceImpl;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$RouterRecord;-><init>(Lcom/android/server/media/MediaRouter2ServiceImpl;Landroid/content/Context;Lcom/android/server/media/MediaRouter2ServiceImpl$UserRecord;Landroid/media/IMediaRouter2;IILjava/lang/String;ZZZZ)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$RouterRecord;->getVisibleRoutes(Ljava/util/List;)Ljava/util/List;
+PLcom/android/server/media/MediaRouter2ServiceImpl$RouterRecord;->hasSystemRoutingPermission()Z
+PLcom/android/server/media/MediaRouter2ServiceImpl$RouterRecord;->maybeClearTransferInitiatorIdentity(Landroid/media/RoutingSessionInfo;)Landroid/media/RoutingSessionInfo;
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;-><init>(Lcom/android/server/media/MediaRouter2ServiceImpl;Lcom/android/server/media/MediaRouter2ServiceImpl$UserRecord;Landroid/os/Looper;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->getManagerRecords()Ljava/util/List;
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->getRouterRecords(Z)Ljava/util/List;
+HPLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->maybeUpdateDiscoveryPreferenceForUid(I)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->notifyRoutesUpdatedToRouterRecords(Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->notifySessionInfoChangedToRouters(Ljava/util/List;Landroid/media/RoutingSessionInfo;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->toLoggingMessage(Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;)Ljava/lang/String;
+HPLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->updateDiscoveryPreferenceOnHandler()V
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserRecord$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;ILjava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/StringBuilder;
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserRecord$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;ZLjava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/StringBuilder;
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserRecord;-><init>(Lcom/android/server/media/MediaRouter2ServiceImpl;ILandroid/os/Looper;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl;->$r8$lambda$_KlJMldyh-EHjCtdEMZwMuezeUQ(Lcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;)V
PLcom/android/server/media/MediaRouter2ServiceImpl;-><clinit>()V
-PLcom/android/server/media/MediaRouter2ServiceImpl;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/media/MediaRouter2ServiceImpl;->lambda$new$0(II)V
-PLcom/android/server/media/MediaRouter2ServiceImpl;->updateRunningUserAndProfiles(I)V
+PLcom/android/server/media/MediaRouter2ServiceImpl;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl;->checkCallerHasBluetoothPermissions(II)Z
+PLcom/android/server/media/MediaRouter2ServiceImpl;->checkMediaContentControlPermission(II)Z
+PLcom/android/server/media/MediaRouter2ServiceImpl;->checkMediaRoutingControlPermission(IILjava/lang/String;)Z
+PLcom/android/server/media/MediaRouter2ServiceImpl;->getOrCreateUserRecordLocked(I)Lcom/android/server/media/MediaRouter2ServiceImpl$UserRecord;
+PLcom/android/server/media/MediaRouter2ServiceImpl;->getSystemSessionInfo(Ljava/lang/String;Ljava/lang/String;Z)Landroid/media/RoutingSessionInfo;
+PLcom/android/server/media/MediaRouter2ServiceImpl;->registerRouter2Locked(Landroid/media/IMediaRouter2;IILjava/lang/String;IZZZZ)V
PLcom/android/server/media/MediaRouterService$1;-><init>(Lcom/android/server/media/MediaRouterService;)V
PLcom/android/server/media/MediaRouterService$AudioPlayerActiveStateChangedListenerImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/media/MediaRouterService;)V
+PLcom/android/server/media/MediaRouterService$AudioPlayerActiveStateChangedListenerImpl$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/media/MediaRouterService$AudioPlayerActiveStateChangedListenerImpl;-><init>(Lcom/android/server/media/MediaRouterService;)V
-PLcom/android/server/media/MediaRouterService$AudioPlayerActiveStateChangedListenerImpl;-><init>(Lcom/android/server/media/MediaRouterService;Lcom/android/server/media/MediaRouterService$AudioPlayerActiveStateChangedListenerImpl-IA;)V
+PLcom/android/server/media/MediaRouterService$AudioPlayerActiveStateChangedListenerImpl;->onAudioPlayerActiveStateChanged(Landroid/media/AudioPlaybackConfiguration;Z)V
PLcom/android/server/media/MediaRouterService$AudioRoutesObserverImpl;-><init>(Lcom/android/server/media/MediaRouterService;)V
-PLcom/android/server/media/MediaRouterService$AudioRoutesObserverImpl;-><init>(Lcom/android/server/media/MediaRouterService;Lcom/android/server/media/MediaRouterService$AudioRoutesObserverImpl-IA;)V
+PLcom/android/server/media/MediaRouterService$AudioRoutesObserverImpl;->dispatchAudioRoutesChanged(Landroid/media/AudioRoutesInfo;)V
PLcom/android/server/media/MediaRouterService$ClientRecord;-><init>(Lcom/android/server/media/MediaRouterService;Lcom/android/server/media/MediaRouterService$UserRecord;Landroid/media/IMediaRouterClient;IILjava/lang/String;Z)V
-PLcom/android/server/media/MediaRouterService$ClientRecord;->getState()Landroid/media/MediaRouterClientState;
+PLcom/android/server/media/MediaRouterService$ClientRecord;->binderDied()V
+PLcom/android/server/media/MediaRouterService$ClientRecord;->toString()Ljava/lang/String;
PLcom/android/server/media/MediaRouterService$MediaRouterServiceBroadcastReceiver;-><init>(Lcom/android/server/media/MediaRouterService;)V
-PLcom/android/server/media/MediaRouterService$UserHandler;-><init>(Lcom/android/server/media/MediaRouterService;Lcom/android/server/media/MediaRouterService$UserRecord;)V
+PLcom/android/server/media/MediaRouterService$MediaRouterServiceBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/media/MediaRouterService$UserHandler;-><init>(Lcom/android/server/media/MediaRouterService;Lcom/android/server/media/MediaRouterService$UserRecord;Landroid/os/Looper;)V
PLcom/android/server/media/MediaRouterService$UserHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/media/MediaRouterService$UserHandler;->start()V
+PLcom/android/server/media/MediaRouterService$UserRecord$1;-><init>(Lcom/android/server/media/MediaRouterService$UserRecord;Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/media/MediaRouterService$UserRecord$1;->run()V
PLcom/android/server/media/MediaRouterService$UserRecord;-><init>(Lcom/android/server/media/MediaRouterService;I)V
-PLcom/android/server/media/MediaRouterService;->-$$Nest$fgetmContext(Lcom/android/server/media/MediaRouterService;)Landroid/content/Context;
+PLcom/android/server/media/MediaRouterService$UserRecord;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/media/MediaRouterService$UserRecord;->toString()Ljava/lang/String;
PLcom/android/server/media/MediaRouterService;-><clinit>()V
PLcom/android/server/media/MediaRouterService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/media/MediaRouterService;->disposeUserIfNeededLocked(Lcom/android/server/media/MediaRouterService$UserRecord;)V
+PLcom/android/server/media/MediaRouterService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/media/MediaRouterService;->getState(Landroid/media/IMediaRouterClient;)Landroid/media/MediaRouterClientState;
-PLcom/android/server/media/MediaRouterService;->getStateLocked(Landroid/media/IMediaRouterClient;)Landroid/media/MediaRouterClientState;
-PLcom/android/server/media/MediaRouterService;->initializeClientLocked(Lcom/android/server/media/MediaRouterService$ClientRecord;)V
-PLcom/android/server/media/MediaRouterService;->initializeUserLocked(Lcom/android/server/media/MediaRouterService$UserRecord;)V
+PLcom/android/server/media/MediaRouterService;->getSystemRoutes(Ljava/lang/String;Z)Ljava/util/List;
+PLcom/android/server/media/MediaRouterService;->getSystemSessionInfo()Landroid/media/RoutingSessionInfo;
PLcom/android/server/media/MediaRouterService;->isPlaybackActive(Landroid/media/IMediaRouterClient;)Z
-PLcom/android/server/media/MediaRouterService;->isUserActiveLocked(I)Z
PLcom/android/server/media/MediaRouterService;->monitor()V
PLcom/android/server/media/MediaRouterService;->registerClientAsUser(Landroid/media/IMediaRouterClient;Ljava/lang/String;I)V
PLcom/android/server/media/MediaRouterService;->registerClientLocked(Landroid/media/IMediaRouterClient;IILjava/lang/String;IZ)V
+PLcom/android/server/media/MediaRouterService;->registerRouter2(Landroid/media/IMediaRouter2;Ljava/lang/String;)V
+PLcom/android/server/media/MediaRouterService;->restoreBluetoothA2dp()V
PLcom/android/server/media/MediaRouterService;->setDiscoveryRequest(Landroid/media/IMediaRouterClient;IZ)V
PLcom/android/server/media/MediaRouterService;->setDiscoveryRequestLocked(Landroid/media/IMediaRouterClient;IZ)V
PLcom/android/server/media/MediaRouterService;->setSelectedRoute(Landroid/media/IMediaRouterClient;Ljava/lang/String;Z)V
PLcom/android/server/media/MediaRouterService;->setSelectedRouteLocked(Landroid/media/IMediaRouterClient;Ljava/lang/String;Z)V
-PLcom/android/server/media/MediaRouterService;->systemRunning()V
+PLcom/android/server/media/MediaRouterService;->unregisterClientLocked(Landroid/media/IMediaRouterClient;Z)V
PLcom/android/server/media/MediaRouterService;->updateRunningUserAndProfiles(I)V
-PLcom/android/server/media/MediaRouterService;->validatePackageName(ILjava/lang/String;)Z
-PLcom/android/server/media/MediaServerUtils;->enforcePackageName(Landroid/content/Context;Ljava/lang/String;I)V
-PLcom/android/server/media/MediaSessionDeviceConfig$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/media/MediaRouterService;->validatePackageName$1(ILjava/lang/String;)Z
+PLcom/android/server/media/MediaServerUtils;->enforcePackageName(Ljava/lang/String;Landroid/content/Context;I)V
+PLcom/android/server/media/MediaSessionDeviceConfig$$ExternalSyntheticLambda0;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
PLcom/android/server/media/MediaSessionDeviceConfig$$ExternalSyntheticLambda1;-><init>(Landroid/provider/DeviceConfig$Properties;)V
-PLcom/android/server/media/MediaSessionDeviceConfig;-><clinit>()V
-PLcom/android/server/media/MediaSessionDeviceConfig;->initialize(Landroid/content/Context;)V
-PLcom/android/server/media/MediaSessionDeviceConfig;->refresh(Landroid/provider/DeviceConfig$Properties;)V
-PLcom/android/server/media/MediaSessionRecord$3;-><init>(Lcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionDeviceConfig$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/media/MediaSessionRecord$$ExternalSyntheticLambda1;-><init>(ILcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionRecord$$ExternalSyntheticLambda3;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/media/MediaSessionRecord$$ExternalSyntheticLambda3;->performOn(Lcom/android/server/media/MediaSessionRecord$ISessionControllerCallbackHolder;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/media/MediaSessionRecord$ControllerStub;Landroid/media/session/ISessionControllerCallback;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub$$ExternalSyntheticLambda0;->binderDied()V
PLcom/android/server/media/MediaSessionRecord$ControllerStub;-><init>(Lcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getExtras()Landroid/os/Bundle;
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getFlags()J
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getLaunchPendingIntent()Landroid/app/PendingIntent;
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getMetadata()Landroid/media/MediaMetadata;
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getPackageName()Ljava/lang/String;
+HPLcom/android/server/media/MediaSessionRecord$ControllerStub;->getPlaybackState()Landroid/media/session/PlaybackState;
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getQueue()Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getQueueTitle()Ljava/lang/CharSequence;
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getRatingType()I
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getSessionInfo()Landroid/os/Bundle;
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getVolumeAttributes()Landroid/media/session/MediaController$PlaybackInfo;
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->next(Ljava/lang/String;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->pause(Ljava/lang/String;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->play(Ljava/lang/String;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->playFromMediaId(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->registerCallback(Ljava/lang/String;Landroid/media/session/ISessionControllerCallback;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->sendCommand(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ResultReceiver;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->stop(Ljava/lang/String;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->unregisterCallback(Landroid/media/session/ISessionControllerCallback;)V
+PLcom/android/server/media/MediaSessionRecord$ISessionControllerCallbackHolder;-><init>(Landroid/media/session/ISessionControllerCallback;Ljava/lang/String;Lcom/android/server/media/MediaSessionRecord$ControllerStub$$ExternalSyntheticLambda0;)V
PLcom/android/server/media/MediaSessionRecord$MessageHandler;-><init>(Lcom/android/server/media/MediaSessionRecord;Landroid/os/Looper;)V
PLcom/android/server/media/MediaSessionRecord$MessageHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/media/MediaSessionRecord$MessageHandler;->post(I)V
-PLcom/android/server/media/MediaSessionRecord$MessageHandler;->post(ILjava/lang/Object;)V
-PLcom/android/server/media/MediaSessionRecord$SessionCb;->-$$Nest$fgetmCb(Lcom/android/server/media/MediaSessionRecord$SessionCb;)Landroid/media/session/ISessionCallback;
PLcom/android/server/media/MediaSessionRecord$SessionCb;-><init>(Lcom/android/server/media/MediaSessionRecord;Landroid/media/session/ISessionCallback;)V
+PLcom/android/server/media/MediaSessionRecord$SessionStub$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/media/MediaSessionRecord$SessionStub;)V
+PLcom/android/server/media/MediaSessionRecord$SessionStub$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
PLcom/android/server/media/MediaSessionRecord$SessionStub;-><init>(Lcom/android/server/media/MediaSessionRecord;)V
-PLcom/android/server/media/MediaSessionRecord$SessionStub;-><init>(Lcom/android/server/media/MediaSessionRecord;Lcom/android/server/media/MediaSessionRecord$SessionStub-IA;)V
+PLcom/android/server/media/MediaSessionRecord$SessionStub;->destroySession()V
+PLcom/android/server/media/MediaSessionRecord$SessionStub;->getBinderForSetQueue()Landroid/os/IBinder;
PLcom/android/server/media/MediaSessionRecord$SessionStub;->getController()Landroid/media/session/ISessionController;
+PLcom/android/server/media/MediaSessionRecord$SessionStub;->sanitizeMediaMetadata(Landroid/media/MediaMetadata;)Landroid/media/MediaMetadata;
+PLcom/android/server/media/MediaSessionRecord$SessionStub;->setActive(Z)V
+PLcom/android/server/media/MediaSessionRecord$SessionStub;->setExtras(Landroid/os/Bundle;)V
PLcom/android/server/media/MediaSessionRecord$SessionStub;->setFlags(I)V
+PLcom/android/server/media/MediaSessionRecord$SessionStub;->setLaunchPendingIntent(Landroid/app/PendingIntent;)V
+PLcom/android/server/media/MediaSessionRecord$SessionStub;->setMediaButtonReceiver(Landroid/app/PendingIntent;)V
+PLcom/android/server/media/MediaSessionRecord$SessionStub;->setMetadata(Landroid/media/MediaMetadata;JLjava/lang/String;)V
+HPLcom/android/server/media/MediaSessionRecord$SessionStub;->setPlaybackState(Landroid/media/session/PlaybackState;)V
PLcom/android/server/media/MediaSessionRecord$SessionStub;->setPlaybackToLocal(Landroid/media/AudioAttributes;)V
-PLcom/android/server/media/MediaSessionRecord;->-$$Nest$fgetmController(Lcom/android/server/media/MediaSessionRecord;)Lcom/android/server/media/MediaSessionRecord$ControllerStub;
-PLcom/android/server/media/MediaSessionRecord;->-$$Nest$fgetmHandler(Lcom/android/server/media/MediaSessionRecord;)Lcom/android/server/media/MediaSessionRecord$MessageHandler;
-PLcom/android/server/media/MediaSessionRecord;->-$$Nest$fgetmLock(Lcom/android/server/media/MediaSessionRecord;)Ljava/lang/Object;
-PLcom/android/server/media/MediaSessionRecord;->-$$Nest$fgetmService(Lcom/android/server/media/MediaSessionRecord;)Lcom/android/server/media/MediaSessionService;
-PLcom/android/server/media/MediaSessionRecord;->-$$Nest$fgetmVolumeType(Lcom/android/server/media/MediaSessionRecord;)I
-PLcom/android/server/media/MediaSessionRecord;->-$$Nest$fputmAudioAttrs(Lcom/android/server/media/MediaSessionRecord;Landroid/media/AudioAttributes;)V
-PLcom/android/server/media/MediaSessionRecord;->-$$Nest$fputmFlags(Lcom/android/server/media/MediaSessionRecord;J)V
-PLcom/android/server/media/MediaSessionRecord;->-$$Nest$fputmVolumeControlId(Lcom/android/server/media/MediaSessionRecord;Ljava/lang/String;)V
-PLcom/android/server/media/MediaSessionRecord;->-$$Nest$fputmVolumeType(Lcom/android/server/media/MediaSessionRecord;I)V
+PLcom/android/server/media/MediaSessionRecord$SessionStub;->setQueueTitle(Ljava/lang/CharSequence;)V
+PLcom/android/server/media/MediaSessionRecord$SessionStub;->setRatingType(I)V
+PLcom/android/server/media/MediaSessionRecord;->-$$Nest$mgetControllerHolderIndexForCb(Lcom/android/server/media/MediaSessionRecord;Landroid/media/session/ISessionControllerCallback;)I
+PLcom/android/server/media/MediaSessionRecord;->-$$Nest$mpushMetadataUpdate(Lcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionRecord;->-$$Nest$mpushPlaybackStateUpdate(Lcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionRecord;->-$$Nest$mpushQueueTitleUpdate(Lcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionRecord;->-$$Nest$mpushQueueUpdate(Lcom/android/server/media/MediaSessionRecord;)V
PLcom/android/server/media/MediaSessionRecord;-><clinit>()V
-PLcom/android/server/media/MediaSessionRecord;-><init>(IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;Landroid/os/Bundle;Lcom/android/server/media/MediaSessionService;Landroid/os/Looper;I)V
-PLcom/android/server/media/MediaSessionRecord;->createForegroundServiceDelegationOptions()Landroid/app/ForegroundServiceDelegationOptions;
+PLcom/android/server/media/MediaSessionRecord;-><init>(IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;Landroid/os/Bundle;Lcom/android/server/media/MediaSessionService;Landroid/os/Looper;)V
+PLcom/android/server/media/MediaSessionRecord;->binderDied()V
+PLcom/android/server/media/MediaSessionRecord;->checkPlaybackActiveState(Z)Z
+PLcom/android/server/media/MediaSessionRecord;->close()V
+PLcom/android/server/media/MediaSessionRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
PLcom/android/server/media/MediaSessionRecord;->getPackageName()Ljava/lang/String;
-PLcom/android/server/media/MediaSessionRecord;->getSessionBinder()Landroid/media/session/ISession;
+PLcom/android/server/media/MediaSessionRecord;->getSessionPolicies()I
PLcom/android/server/media/MediaSessionRecord;->getUid()I
PLcom/android/server/media/MediaSessionRecord;->getUserId()I
+PLcom/android/server/media/MediaSessionRecord;->getVolumeAttributes()Landroid/media/session/MediaController$PlaybackInfo;
+PLcom/android/server/media/MediaSessionRecord;->getVolumeStream(Landroid/media/AudioAttributes;)I
PLcom/android/server/media/MediaSessionRecord;->isActive()Z
-PLcom/android/server/media/MediaSessionRecord;->toString()Ljava/lang/String;
-PLcom/android/server/media/MediaSessionService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/media/MediaSessionService;)V
+PLcom/android/server/media/MediaSessionRecord;->isClosed()Z
+PLcom/android/server/media/MediaSessionRecord;->isSystemPriority()Z
+PLcom/android/server/media/MediaSessionRecord;->performOnCallbackHolders(Ljava/lang/String;Lcom/android/server/media/MediaSessionRecord$ControllerCallbackCall;)V
+PLcom/android/server/media/MediaSessionRecord;->sendMediaButton(Ljava/lang/String;IIZLandroid/view/KeyEvent;ILandroid/os/ResultReceiver;)Z
+HPLcom/android/server/media/MediaSessionRecord;->toString()Ljava/lang/String;
+PLcom/android/server/media/MediaSessionRecord;->updateUserEngagedStateIfNeededLocked(ZZ)V
+PLcom/android/server/media/MediaSessionRecordImpl;-><clinit>()V
+PLcom/android/server/media/MediaSessionRecordImpl;-><init>()V
+PLcom/android/server/media/MediaSessionRecordImpl;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/media/MediaSessionRecordImpl;->hashCode()I
+PLcom/android/server/media/MediaSessionService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/media/MediaSessionService;)V
+PLcom/android/server/media/MediaSessionService$$ExternalSyntheticLambda1;->onAudioPlayerActiveStateChanged(Landroid/media/AudioPlaybackConfiguration;Z)V
+PLcom/android/server/media/MediaSessionService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/media/MediaSessionService;)V
+PLcom/android/server/media/MediaSessionService$$ExternalSyntheticLambda2;->run()V
PLcom/android/server/media/MediaSessionService$1;-><init>(Lcom/android/server/media/MediaSessionService;)V
PLcom/android/server/media/MediaSessionService$2;-><init>(Lcom/android/server/media/MediaSessionService;)V
PLcom/android/server/media/MediaSessionService$FullUserRecord$OnMediaKeyEventSessionChangedListenerRecord;-><init>(Lcom/android/server/media/MediaSessionService$FullUserRecord;Landroid/media/session/IOnMediaKeyEventSessionChangedListener;I)V
-PLcom/android/server/media/MediaSessionService$FullUserRecord;->-$$Nest$fgetmFullUserId(Lcom/android/server/media/MediaSessionService$FullUserRecord;)I
-PLcom/android/server/media/MediaSessionService$FullUserRecord;->-$$Nest$fgetmPriorityStack(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Lcom/android/server/media/MediaSessionStack;
-PLcom/android/server/media/MediaSessionService$FullUserRecord;->-$$Nest$fgetmUidToSessionCount(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Landroid/util/SparseIntArray;
PLcom/android/server/media/MediaSessionService$FullUserRecord;-><init>(Lcom/android/server/media/MediaSessionService;I)V
-PLcom/android/server/media/MediaSessionService$FullUserRecord;->addOnMediaKeyEventSessionChangedListenerLocked(Landroid/media/session/IOnMediaKeyEventSessionChangedListener;I)V
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->dumpLocked(Ljava/io/PrintWriter;)V
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->getMediaButtonSessionLocked()Lcom/android/server/media/MediaSessionRecordImpl;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->pushAddressedPlayerChangedLocked()V
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->rememberMediaButtonReceiverLocked(Lcom/android/server/media/MediaSessionRecordImpl;)V
PLcom/android/server/media/MediaSessionService$MessageHandler;-><init>(Lcom/android/server/media/MediaSessionService;)V
PLcom/android/server/media/MediaSessionService$MessageHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/media/MediaSessionService$MessageHandler;->postSessionsChanged(Lcom/android/server/media/MediaSessionRecordImpl;)V
+PLcom/android/server/media/MediaSessionService$NotificationListener;-><init>(Lcom/android/server/media/MediaSessionService;)V
PLcom/android/server/media/MediaSessionService$SessionManagerImpl$KeyEventHandler;-><init>(Lcom/android/server/media/MediaSessionService$SessionManagerImpl;I)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl$KeyEventHandler;->handleKeyEventLocked(Ljava/lang/String;IIZLandroid/view/KeyEvent;ZLjava/lang/String;IZ)V
PLcom/android/server/media/MediaSessionService$SessionManagerImpl$KeyEventWakeLockReceiver;-><init>(Lcom/android/server/media/MediaSessionService$SessionManagerImpl;Landroid/os/Handler;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl$KeyEventWakeLockReceiver;->onReceiveResult(ILandroid/os/Bundle;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->-$$Nest$misVoiceKey(Lcom/android/server/media/MediaSessionService$SessionManagerImpl;I)Z
PLcom/android/server/media/MediaSessionService$SessionManagerImpl;-><init>(Lcom/android/server/media/MediaSessionService;)V
PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->addOnMediaKeyEventSessionChangedListener(Landroid/media/session/IOnMediaKeyEventSessionChangedListener;Ljava/lang/String;)V
PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->addSessionsListener(Landroid/media/session/IActiveSessionsListener;Landroid/content/ComponentName;I)V
PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->createSession(Ljava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;Landroid/os/Bundle;I)Landroid/media/session/ISession;
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->dispatchMediaKeyEvent(Ljava/lang/String;ZLandroid/view/KeyEvent;Z)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->dispatchMediaKeyEventLocked(Ljava/lang/String;IIZLandroid/view/KeyEvent;Z)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->getSessions(Landroid/content/ComponentName;I)Ljava/util/List;
PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->handleIncomingUser(IIILjava/lang/String;)I
-PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->verifySessionsRequest(Landroid/content/ComponentName;III)I
PLcom/android/server/media/MediaSessionService$SessionsListenerRecord;-><init>(Lcom/android/server/media/MediaSessionService;Landroid/media/session/IActiveSessionsListener;Landroid/content/ComponentName;III)V
-PLcom/android/server/media/MediaSessionService;->-$$Nest$fgetmAudioPlayerStateMonitor(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/AudioPlayerStateMonitor;
-PLcom/android/server/media/MediaSessionService;->-$$Nest$fgetmContext(Lcom/android/server/media/MediaSessionService;)Landroid/content/Context;
-PLcom/android/server/media/MediaSessionService;->-$$Nest$fgetmHandler(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/MediaSessionService$MessageHandler;
-PLcom/android/server/media/MediaSessionService;->-$$Nest$fgetmLock(Lcom/android/server/media/MediaSessionService;)Ljava/lang/Object;
-PLcom/android/server/media/MediaSessionService;->-$$Nest$fgetmSessionsListeners(Lcom/android/server/media/MediaSessionService;)Ljava/util/ArrayList;
+PLcom/android/server/media/MediaSessionService;->$r8$lambda$dlVeOBNx_uSHjGzXxTVqSiM_-dE(Lcom/android/server/media/MediaSessionService;)V
PLcom/android/server/media/MediaSessionService;->-$$Nest$mcreateSessionInternal(Lcom/android/server/media/MediaSessionService;IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;Landroid/os/Bundle;)Lcom/android/server/media/MediaSessionRecord;
-PLcom/android/server/media/MediaSessionService;->-$$Nest$menforceMediaPermissions(Lcom/android/server/media/MediaSessionService;Ljava/lang/String;III)V
PLcom/android/server/media/MediaSessionService;->-$$Nest$mfindIndexOfSessionsListenerLocked(Lcom/android/server/media/MediaSessionService;Landroid/media/session/IActiveSessionsListener;)I
-PLcom/android/server/media/MediaSessionService;->-$$Nest$mgetActiveSessionsLocked(Lcom/android/server/media/MediaSessionService;I)Ljava/util/List;
-PLcom/android/server/media/MediaSessionService;->-$$Nest$mgetFullUserRecordLocked(Lcom/android/server/media/MediaSessionService;I)Lcom/android/server/media/MediaSessionService$FullUserRecord;
-PLcom/android/server/media/MediaSessionService;->-$$Nest$mpushSession1Changed(Lcom/android/server/media/MediaSessionService;I)V
+PLcom/android/server/media/MediaSessionService;->-$$Nest$mgetCallingPackageName(Lcom/android/server/media/MediaSessionService;I)Ljava/lang/String;
PLcom/android/server/media/MediaSessionService;-><clinit>()V
PLcom/android/server/media/MediaSessionService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/media/MediaSessionService;->createSessionInternal(IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;Landroid/os/Bundle;)Lcom/android/server/media/MediaSessionRecord;
-PLcom/android/server/media/MediaSessionService;->enforceMediaPermissions(Ljava/lang/String;III)V
-PLcom/android/server/media/MediaSessionService;->enforcePhoneStatePermission(II)V
-PLcom/android/server/media/MediaSessionService;->findIndexOfSessionsListenerLocked(Landroid/media/session/IActiveSessionsListener;)I
+PLcom/android/server/media/MediaSessionService;->destroySessionLocked(Lcom/android/server/media/MediaSessionRecordImpl;)V
+PLcom/android/server/media/MediaSessionService;->enforceMediaPermissions(IIILjava/lang/String;)V
PLcom/android/server/media/MediaSessionService;->getActiveSessionsLocked(I)Ljava/util/List;
PLcom/android/server/media/MediaSessionService;->getFullUserRecordLocked(I)Lcom/android/server/media/MediaSessionService$FullUserRecord;
PLcom/android/server/media/MediaSessionService;->hasMediaControlPermission(II)Z
-PLcom/android/server/media/MediaSessionService;->hasStatusBarServicePermission(II)Z
PLcom/android/server/media/MediaSessionService;->instantiateCustomDispatcher(Ljava/lang/String;)V
PLcom/android/server/media/MediaSessionService;->instantiateCustomProvider(Ljava/lang/String;)V
PLcom/android/server/media/MediaSessionService;->isGlobalPriorityActiveLocked()Z
PLcom/android/server/media/MediaSessionService;->monitor()V
PLcom/android/server/media/MediaSessionService;->onBootPhase(I)V
+PLcom/android/server/media/MediaSessionService;->onMediaButtonReceiverChanged(Lcom/android/server/media/MediaSessionRecordImpl;)V
+PLcom/android/server/media/MediaSessionService;->onSessionActiveStateChanged(Lcom/android/server/media/MediaSessionRecordImpl;Landroid/media/session/PlaybackState;)V
+HPLcom/android/server/media/MediaSessionService;->onSessionPlaybackStateChanged(Lcom/android/server/media/MediaSessionRecordImpl;ZLandroid/media/session/PlaybackState;)V
PLcom/android/server/media/MediaSessionService;->onStart()V
PLcom/android/server/media/MediaSessionService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/media/MediaSessionService;->pushRemoteVolumeUpdateLocked(I)V
-PLcom/android/server/media/MediaSessionService;->pushSession1Changed(I)V
+HPLcom/android/server/media/MediaSessionService;->reportMediaInteractionEvent(Lcom/android/server/media/MediaSessionRecordImpl;Z)V
PLcom/android/server/media/MediaSessionService;->setGlobalPrioritySession(Lcom/android/server/media/MediaSessionRecord;)V
+HPLcom/android/server/media/MediaSessionService;->tempAllowlistTargetPkgIfPossible(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
PLcom/android/server/media/MediaSessionService;->updateUser()V
PLcom/android/server/media/MediaSessionStack;-><clinit>()V
-PLcom/android/server/media/MediaSessionStack;-><init>(Lcom/android/server/media/AudioPlayerStateMonitor;Lcom/android/server/media/MediaSessionStack$OnMediaButtonSessionChangedListener;)V
-PLcom/android/server/media/MediaSessionStack;->addSession(Lcom/android/server/media/MediaSessionRecordImpl;)V
-PLcom/android/server/media/MediaSessionStack;->clearCache(I)V
-PLcom/android/server/media/MediaSessionStack;->contains(Lcom/android/server/media/MediaSessionRecordImpl;)Z
-PLcom/android/server/media/MediaSessionStack;->getActiveSessions(I)Ljava/util/List;
-PLcom/android/server/media/MediaSessionStack;->getDefaultRemoteSession(I)Lcom/android/server/media/MediaSessionRecordImpl;
-PLcom/android/server/media/MediaSessionStack;->getPriorityList(ZI)Ljava/util/List;
+PLcom/android/server/media/MediaSessionStack;-><init>(Lcom/android/server/media/AudioPlayerStateMonitor;Lcom/android/server/media/MediaSessionService$FullUserRecord;)V
+PLcom/android/server/media/MediaSessionStack;->findMediaButtonSession(I)Lcom/android/server/media/MediaSessionRecordImpl;
+PLcom/android/server/media/MediaSessionStack;->getPriorityList(IZ)Ljava/util/List;
+PLcom/android/server/media/MediaSessionStack;->onPlaybackStateChanged(Lcom/android/server/media/MediaSessionRecordImpl;Z)V
PLcom/android/server/media/MediaSessionStack;->removeSession(Lcom/android/server/media/MediaSessionRecordImpl;)V
+PLcom/android/server/media/MediaSessionStack;->updateMediaButtonSession(Lcom/android/server/media/MediaSessionRecordImpl;)V
PLcom/android/server/media/MediaSessionStack;->updateMediaButtonSessionIfNeeded()V
PLcom/android/server/media/RemoteDisplayProviderWatcher$1;-><init>(Lcom/android/server/media/RemoteDisplayProviderWatcher;)V
PLcom/android/server/media/RemoteDisplayProviderWatcher$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/media/RemoteDisplayProviderWatcher$2;-><init>(Lcom/android/server/media/RemoteDisplayProviderWatcher;)V
PLcom/android/server/media/RemoteDisplayProviderWatcher$2;->run()V
PLcom/android/server/media/RemoteDisplayProviderWatcher;->-$$Nest$mscanPackages(Lcom/android/server/media/RemoteDisplayProviderWatcher;)V
-PLcom/android/server/media/RemoteDisplayProviderWatcher;->-$$Nest$sfgetDEBUG()Z
PLcom/android/server/media/RemoteDisplayProviderWatcher;-><clinit>()V
-PLcom/android/server/media/RemoteDisplayProviderWatcher;-><init>(Landroid/content/Context;Lcom/android/server/media/RemoteDisplayProviderWatcher$Callback;Landroid/os/Handler;I)V
-PLcom/android/server/media/RemoteDisplayProviderWatcher;->scanPackages()V
-PLcom/android/server/media/RemoteDisplayProviderWatcher;->start()V
+PLcom/android/server/media/RemoteDisplayProviderWatcher;-><init>(Landroid/content/Context;Lcom/android/server/media/MediaRouterService$UserHandler;Lcom/android/server/media/MediaRouterService$UserHandler;I)V
+PLcom/android/server/media/SystemMediaRoute2Provider$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/media/SystemMediaRoute2Provider;)V
+PLcom/android/server/media/SystemMediaRoute2Provider$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/media/SystemMediaRoute2Provider;I)V
+PLcom/android/server/media/SystemMediaRoute2Provider$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/media/SystemMediaRoute2Provider$AudioManagerBroadcastReceiver;-><init>(Lcom/android/server/media/SystemMediaRoute2Provider;)V
+PLcom/android/server/media/SystemMediaRoute2Provider$AudioManagerBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/media/SystemMediaRoute2Provider;-><clinit>()V
+PLcom/android/server/media/SystemMediaRoute2Provider;-><init>(Landroid/content/Context;Landroid/content/ComponentName;Landroid/os/UserHandle;Landroid/os/Looper;)V
+PLcom/android/server/media/SystemMediaRoute2Provider;->notifySessionInfoUpdated()V
+PLcom/android/server/media/SystemMediaRoute2Provider;->reportPendingSessionRequestResultLockedIfNeeded(Landroid/media/RoutingSessionInfo;)V
+HPLcom/android/server/media/SystemMediaRoute2Provider;->updateProviderState()V
+HPLcom/android/server/media/SystemMediaRoute2Provider;->updateSessionInfosIfNeeded()Z
+PLcom/android/server/media/SystemMediaRoute2Provider;->updateVolume()V
PLcom/android/server/media/metrics/MediaMetricsManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/media/metrics/MediaMetricsManagerService;)V
+PLcom/android/server/media/metrics/MediaMetricsManagerService$$ExternalSyntheticLambda0;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
PLcom/android/server/media/metrics/MediaMetricsManagerService$BinderService;-><init>(Lcom/android/server/media/metrics/MediaMetricsManagerService;)V
-PLcom/android/server/media/metrics/MediaMetricsManagerService$BinderService;-><init>(Lcom/android/server/media/metrics/MediaMetricsManagerService;Lcom/android/server/media/metrics/MediaMetricsManagerService$BinderService-IA;)V
+PLcom/android/server/media/metrics/MediaMetricsManagerService$BinderService;->getPlaybackSessionId(I)Ljava/lang/String;
+PLcom/android/server/media/metrics/MediaMetricsManagerService$BinderService;->getSessionIdInternal()Ljava/lang/String;
+HPLcom/android/server/media/metrics/MediaMetricsManagerService$BinderService;->loggingLevel()I
+PLcom/android/server/media/metrics/MediaMetricsManagerService$BinderService;->loggingLevelInternal([Ljava/lang/String;Ljava/util/List;Ljava/lang/String;)Ljava/lang/Integer;
+PLcom/android/server/media/metrics/MediaMetricsManagerService$BinderService;->reportNetworkEvent(Ljava/lang/String;Landroid/media/metrics/NetworkEvent;I)V
+PLcom/android/server/media/metrics/MediaMetricsManagerService$BinderService;->reportPlaybackMetrics(Ljava/lang/String;Landroid/media/metrics/PlaybackMetrics;I)V
+PLcom/android/server/media/metrics/MediaMetricsManagerService$BinderService;->reportPlaybackStateEvent(Ljava/lang/String;Landroid/media/metrics/PlaybackStateEvent;I)V
PLcom/android/server/media/metrics/MediaMetricsManagerService;-><clinit>()V
PLcom/android/server/media/metrics/MediaMetricsManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/media/metrics/MediaMetricsManagerService;->getListLocked(Ljava/lang/String;)Ljava/util/List;
PLcom/android/server/media/metrics/MediaMetricsManagerService;->onStart()V
-PLcom/android/server/media/projection/FrameworkStatsLogWrapper;-><init>()V
+PLcom/android/server/media/projection/MediaProjectionManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/media/projection/MediaProjectionManagerService;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
PLcom/android/server/media/projection/MediaProjectionManagerService$1;-><init>(Lcom/android/server/media/projection/MediaProjectionManagerService;)V
PLcom/android/server/media/projection/MediaProjectionManagerService$1;->onForegroundActivitiesChanged(IIZ)V
PLcom/android/server/media/projection/MediaProjectionManagerService$1;->onForegroundServicesChanged(III)V
PLcom/android/server/media/projection/MediaProjectionManagerService$1;->onProcessDied(II)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$2;-><init>(Lcom/android/server/media/projection/MediaProjectionManagerService;Landroid/media/projection/IMediaProjectionWatcherCallback;)V
PLcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-><init>(Lcom/android/server/media/projection/MediaProjectionManagerService;Landroid/content/Context;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$BinderService;->addCallback(Landroid/media/projection/IMediaProjectionWatcherCallback;)Landroid/media/projection/MediaProjectionInfo;
+PLcom/android/server/media/projection/MediaProjectionManagerService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/media/projection/MediaProjectionManagerService$CallbackDelegate;-><init>(Landroid/os/Looper;)V
-PLcom/android/server/media/projection/MediaProjectionManagerService$Injector$$ExternalSyntheticLambda0;-><init>()V
PLcom/android/server/media/projection/MediaProjectionManagerService$Injector;-><init>()V
-PLcom/android/server/media/projection/MediaProjectionManagerService$Injector;->createCallbackLooper()Landroid/os/Looper;
-PLcom/android/server/media/projection/MediaProjectionManagerService$Injector;->createClock()Lcom/android/server/media/projection/MediaProjectionManagerService$Clock;
-PLcom/android/server/media/projection/MediaProjectionManagerService$Injector;->mediaProjectionMetricsLogger(Landroid/content/Context;)Lcom/android/server/media/projection/MediaProjectionMetricsLogger;
PLcom/android/server/media/projection/MediaProjectionManagerService$MediaRouterCallback;-><init>(Lcom/android/server/media/projection/MediaProjectionManagerService;)V
-PLcom/android/server/media/projection/MediaProjectionManagerService$MediaRouterCallback;-><init>(Lcom/android/server/media/projection/MediaProjectionManagerService;Lcom/android/server/media/projection/MediaProjectionManagerService$MediaRouterCallback-IA;)V
-PLcom/android/server/media/projection/MediaProjectionManagerService;->-$$Nest$mhandleForegroundServicesChanged(Lcom/android/server/media/projection/MediaProjectionManagerService;III)V
PLcom/android/server/media/projection/MediaProjectionManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/media/projection/MediaProjectionManagerService;-><init>(Landroid/content/Context;Lcom/android/server/media/projection/MediaProjectionManagerService$Injector;)V
-PLcom/android/server/media/projection/MediaProjectionManagerService;->handleForegroundServicesChanged(III)V
+PLcom/android/server/media/projection/MediaProjectionManagerService;->addCallback(Landroid/media/projection/IMediaProjectionWatcherCallback;)Landroid/media/projection/MediaProjectionInfo;
PLcom/android/server/media/projection/MediaProjectionManagerService;->monitor()V
PLcom/android/server/media/projection/MediaProjectionManagerService;->onStart()V
-PLcom/android/server/media/projection/MediaProjectionMetricsLogger;-><clinit>()V
PLcom/android/server/media/projection/MediaProjectionMetricsLogger;-><init>(Lcom/android/server/media/projection/FrameworkStatsLogWrapper;Lcom/android/server/media/projection/MediaProjectionSessionIdGenerator;Lcom/android/server/media/projection/MediaProjectionTimestampStore;)V
-PLcom/android/server/media/projection/MediaProjectionMetricsLogger;->getInstance(Landroid/content/Context;)Lcom/android/server/media/projection/MediaProjectionMetricsLogger;
PLcom/android/server/media/projection/MediaProjectionSessionIdGenerator;-><clinit>()V
PLcom/android/server/media/projection/MediaProjectionSessionIdGenerator;-><init>(Landroid/content/SharedPreferences;)V
-PLcom/android/server/media/projection/MediaProjectionSessionIdGenerator;->getInstance(Landroid/content/Context;)Lcom/android/server/media/projection/MediaProjectionSessionIdGenerator;
+PLcom/android/server/media/projection/MediaProjectionStopController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/media/projection/MediaProjectionStopController;)V
+PLcom/android/server/media/projection/MediaProjectionStopController$$ExternalSyntheticLambda0;->onKeyguardLockedStateChanged(Z)V
+PLcom/android/server/media/projection/MediaProjectionStopController$ProjectionTelephonyCallback;-><init>(Lcom/android/server/media/projection/MediaProjectionStopController;)V
+PLcom/android/server/media/projection/MediaProjectionStopController$ProjectionTelephonyCallback;->onCallStateChanged(I)V
+PLcom/android/server/media/projection/MediaProjectionStopController;-><init>(Landroid/content/Context;Lcom/android/server/media/projection/MediaProjectionManagerService$$ExternalSyntheticLambda0;)V
+PLcom/android/server/media/projection/MediaProjectionStopController;->callStateChanged()V
+PLcom/android/server/media/projection/MediaProjectionStopController;->isExempt(Lcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;IZ)Z
+PLcom/android/server/media/projection/MediaProjectionStopController;->onKeyguardLockedStateChanged(Z)V
PLcom/android/server/media/projection/MediaProjectionTimestampStore;-><clinit>()V
PLcom/android/server/media/projection/MediaProjectionTimestampStore;-><init>(Landroid/content/SharedPreferences;Ljava/time/InstantSource;)V
-PLcom/android/server/media/projection/MediaProjectionTimestampStore;->getInstance(Landroid/content/Context;)Lcom/android/server/media/projection/MediaProjectionTimestampStore;
-PLcom/android/server/net/FeatureFlagsImpl;-><clinit>()V
-PLcom/android/server/net/FeatureFlagsImpl;-><init>()V
-PLcom/android/server/net/FeatureFlagsImpl;->load_overrides_backstage_power()V
-PLcom/android/server/net/FeatureFlagsImpl;->networkBlockedForTopSleepingAndAbove()Z
+PLcom/android/server/net/FeatureFlagsImpl;->init()V
PLcom/android/server/net/Flags;-><clinit>()V
-PLcom/android/server/net/Flags;->networkBlockedForTopSleepingAndAbove()Z
-PLcom/android/server/net/NetworkManagementInternal;-><init>()V
-PLcom/android/server/net/NetworkManagementService$$ExternalSyntheticLambda3;-><init>(Ljava/lang/String;Landroid/net/LinkAddress;)V
-PLcom/android/server/net/NetworkManagementService$$ExternalSyntheticLambda4;-><init>(Ljava/lang/String;Z)V
-PLcom/android/server/net/NetworkManagementService$$ExternalSyntheticLambda7;-><init>(Ljava/lang/String;Landroid/net/LinkAddress;)V
-PLcom/android/server/net/NetworkManagementService$$ExternalSyntheticLambda8;-><init>(Landroid/net/RouteInfo;)V
-PLcom/android/server/net/NetworkManagementService$$ExternalSyntheticLambda9;-><init>(Landroid/net/RouteInfo;)V
-PLcom/android/server/net/NetworkManagementService$Dependencies;-><init>()V
-HPLcom/android/server/net/NetworkManagementService$Dependencies;->getCallingUid()I
-PLcom/android/server/net/NetworkManagementService$Dependencies;->getNetd()Landroid/net/INetd;
-PLcom/android/server/net/NetworkManagementService$Dependencies;->getService(Ljava/lang/String;)Landroid/os/IBinder;
-PLcom/android/server/net/NetworkManagementService$Dependencies;->registerLocalService(Lcom/android/server/net/NetworkManagementInternal;)V
+PLcom/android/server/net/Flags;->neverApplyRulesToCoreUids()Z
+PLcom/android/server/net/Flags;->useDifferentDelaysForBackgroundChain()Z
+PLcom/android/server/net/Flags;->useMeteredFirewallChains()Z
+PLcom/android/server/net/NetworkManagementService$$ExternalSyntheticLambda0;-><init>(IIJZ)V
+PLcom/android/server/net/NetworkManagementService$$ExternalSyntheticLambda0;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
+PLcom/android/server/net/NetworkManagementService$$ExternalSyntheticLambda1;-><init>(ILjava/lang/String;Z)V
+PLcom/android/server/net/NetworkManagementService$$ExternalSyntheticLambda1;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
+PLcom/android/server/net/NetworkManagementService$$ExternalSyntheticLambda2;-><init>(Ljava/lang/String;ILjava/lang/Object;)V
+PLcom/android/server/net/NetworkManagementService$$ExternalSyntheticLambda2;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
+PLcom/android/server/net/NetworkManagementService$$ExternalSyntheticLambda4;-><init>(Ljava/lang/String;J[Ljava/lang/String;)V
+PLcom/android/server/net/NetworkManagementService$$ExternalSyntheticLambda4;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
PLcom/android/server/net/NetworkManagementService$LocalService;-><init>(Lcom/android/server/net/NetworkManagementService;)V
-PLcom/android/server/net/NetworkManagementService$LocalService;-><init>(Lcom/android/server/net/NetworkManagementService;Lcom/android/server/net/NetworkManagementService$LocalService-IA;)V
-HPLcom/android/server/net/NetworkManagementService$LocalService;->isNetworkRestrictedForUid(I)Z
-PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;Z)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;I)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;ZI)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;ZLandroid/net/RouteInfo;)V
PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda2;->run()V
-PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;Landroid/net/LinkAddress;)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;IZJI)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;Ljava/lang/Object;I)V
PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda6;->run()V
-PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;Landroid/net/LinkAddress;)V
-PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda7;->run()V
-PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;ZLandroid/net/RouteInfo;)V
-PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda8;->run()V
-PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->$r8$lambda$6H1IPP0xbuUOBJ0zARtLg6fMa-E(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;Z)V
-PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->$r8$lambda$cEZjblgQTbkhVOZAra8yyTiiXlk(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;Landroid/net/LinkAddress;)V
-PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->$r8$lambda$iqW51JeHJZy_bOi_o6JJ3a9MFEY(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;Landroid/net/LinkAddress;)V
-PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->$r8$lambda$k450O0AvGFGVDrE8Q-YRBpOJme4(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;ZLandroid/net/RouteInfo;)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;J[Ljava/lang/String;)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda9;->run()V
PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;-><init>(Lcom/android/server/net/NetworkManagementService;)V
-PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;-><init>(Lcom/android/server/net/NetworkManagementService;Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener-IA;)V
-PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->lambda$onInterfaceAddressRemoved$4(Ljava/lang/String;Landroid/net/LinkAddress;)V
-PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->lambda$onInterfaceAddressUpdated$3(Ljava/lang/String;Landroid/net/LinkAddress;)V
-PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->lambda$onInterfaceLinkStateChanged$8(Ljava/lang/String;Z)V
-PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->lambda$onRouteChanged$9(ZLandroid/net/RouteInfo;)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->onInterfaceAdded(Ljava/lang/String;)V
PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->onInterfaceAddressRemoved(Ljava/lang/String;Ljava/lang/String;II)V
PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->onInterfaceAddressUpdated(Ljava/lang/String;Ljava/lang/String;II)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->onInterfaceClassActivityChanged(ZIJI)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->onInterfaceDnsServerInfo(Ljava/lang/String;J[Ljava/lang/String;)V
PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->onInterfaceLinkStateChanged(Ljava/lang/String;Z)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->onInterfaceRemoved(Ljava/lang/String;)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->onQuotaLimitReached(Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->onRouteChanged(ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/net/NetworkManagementService;->-$$Nest$fgetmDaemonHandler(Lcom/android/server/net/NetworkManagementService;)Landroid/os/Handler;
-HPLcom/android/server/net/NetworkManagementService;->-$$Nest$misNetworkRestrictedInternal(Lcom/android/server/net/NetworkManagementService;I)Z
-PLcom/android/server/net/NetworkManagementService;->-$$Nest$mnotifyAddressRemoved(Lcom/android/server/net/NetworkManagementService;Ljava/lang/String;Landroid/net/LinkAddress;)V
-PLcom/android/server/net/NetworkManagementService;->-$$Nest$mnotifyAddressUpdated(Lcom/android/server/net/NetworkManagementService;Ljava/lang/String;Landroid/net/LinkAddress;)V
-PLcom/android/server/net/NetworkManagementService;->-$$Nest$mnotifyInterfaceLinkStateChanged(Lcom/android/server/net/NetworkManagementService;Ljava/lang/String;Z)V
-PLcom/android/server/net/NetworkManagementService;->-$$Nest$mnotifyRouteChange(Lcom/android/server/net/NetworkManagementService;ZLandroid/net/RouteInfo;)V
PLcom/android/server/net/NetworkManagementService;-><clinit>()V
PLcom/android/server/net/NetworkManagementService;-><init>(Landroid/content/Context;Lcom/android/server/net/NetworkManagementService$Dependencies;)V
-PLcom/android/server/net/NetworkManagementService;->connectNativeNetdService()V
PLcom/android/server/net/NetworkManagementService;->create(Landroid/content/Context;)Lcom/android/server/net/NetworkManagementService;
-PLcom/android/server/net/NetworkManagementService;->create(Landroid/content/Context;Lcom/android/server/net/NetworkManagementService$Dependencies;)Lcom/android/server/net/NetworkManagementService;
+PLcom/android/server/net/NetworkManagementService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/net/NetworkManagementService;->dumpUidFirewallRule(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/SparseIntArray;)V
+PLcom/android/server/net/NetworkManagementService;->dumpUidRuleOnQuotaLocked(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/SparseBooleanArray;)V
HPLcom/android/server/net/NetworkManagementService;->enforceSystemUid()V
-PLcom/android/server/net/NetworkManagementService;->getBatteryStats()Lcom/android/internal/app/IBatteryStats;
-PLcom/android/server/net/NetworkManagementService;->getFirewallChainName(I)Ljava/lang/String;
-HPLcom/android/server/net/NetworkManagementService;->getFirewallChainState(I)Z
+HPLcom/android/server/net/NetworkManagementService;->getFirewallChainState(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
HPLcom/android/server/net/NetworkManagementService;->getUidFirewallRulesLR(I)Landroid/util/SparseIntArray;
PLcom/android/server/net/NetworkManagementService;->invokeForAllObservers(Lcom/android/server/net/NetworkManagementService$NetworkManagementEventCallback;)V
PLcom/android/server/net/NetworkManagementService;->isBandwidthControlEnabled()Z
-HPLcom/android/server/net/NetworkManagementService;->isNetworkRestrictedInternal(I)Z
-PLcom/android/server/net/NetworkManagementService;->notifyAddressRemoved(Ljava/lang/String;Landroid/net/LinkAddress;)V
-PLcom/android/server/net/NetworkManagementService;->notifyAddressUpdated(Ljava/lang/String;Landroid/net/LinkAddress;)V
-PLcom/android/server/net/NetworkManagementService;->notifyInterfaceLinkStateChanged(Ljava/lang/String;Z)V
-PLcom/android/server/net/NetworkManagementService;->notifyRouteChange(ZLandroid/net/RouteInfo;)V
+HPLcom/android/server/net/NetworkManagementService;->isNetworkRestrictedInternal(I)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
PLcom/android/server/net/NetworkManagementService;->prepareNativeDaemon()V
PLcom/android/server/net/NetworkManagementService;->registerObserver(Landroid/net/INetworkManagementEventObserver;)V
+PLcom/android/server/net/NetworkManagementService;->removeInterfaceQuota(Ljava/lang/String;)V
PLcom/android/server/net/NetworkManagementService;->setDataSaverModeEnabled(Z)Z
PLcom/android/server/net/NetworkManagementService;->setFirewallChainEnabled(IZ)V
-PLcom/android/server/net/NetworkManagementService;->setFirewallChainState(IZ)V
PLcom/android/server/net/NetworkManagementService;->setFirewallEnabled(Z)V
-HPLcom/android/server/net/NetworkManagementService;->setFirewallUidRule(III)V
-HPLcom/android/server/net/NetworkManagementService;->setFirewallUidRuleLocked(III)V
+HPLcom/android/server/net/NetworkManagementService;->setFirewallUidRule(III)V+]Landroid/net/ConnectivityManager;Landroid/net/ConnectivityManager;
PLcom/android/server/net/NetworkManagementService;->setFirewallUidRules(I[I[I)V
-HPLcom/android/server/net/NetworkManagementService;->setUidCleartextNetworkPolicy(II)V
-HPLcom/android/server/net/NetworkManagementService;->setUidOnMeteredNetworkAllowlist(IZ)V
-HPLcom/android/server/net/NetworkManagementService;->setUidOnMeteredNetworkList(IZZ)V
+PLcom/android/server/net/NetworkManagementService;->setInterfaceQuota(Ljava/lang/String;J)V
+HPLcom/android/server/net/NetworkManagementService;->setUidCleartextNetworkPolicy(II)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
PLcom/android/server/net/NetworkManagementService;->syncFirewallChainLocked(ILjava/lang/String;)V
-PLcom/android/server/net/NetworkManagementService;->systemReady()V
-HPLcom/android/server/net/NetworkManagementService;->updateFirewallUidRuleLocked(III)Z
-PLcom/android/server/net/NetworkPolicyLogger$Data;-><init>()V
-HPLcom/android/server/net/NetworkPolicyLogger$Data;-><init>(Lcom/android/server/net/NetworkPolicyLogger$Data-IA;)V
-HPLcom/android/server/net/NetworkPolicyLogger$Data;->reset()V
-PLcom/android/server/net/NetworkPolicyLogger$LogBuffer$$ExternalSyntheticLambda0;-><init>()V
-HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
-PLcom/android/server/net/NetworkPolicyLogger$LogBuffer$$ExternalSyntheticLambda1;-><init>()V
+HPLcom/android/server/net/NetworkManagementService;->updateFirewallUidRuleLocked(III)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+PLcom/android/server/net/NetworkPolicyLogger$LogBuffer$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
PLcom/android/server/net/NetworkPolicyLogger$LogBuffer$$ExternalSyntheticLambda1;->apply(I)Ljava/lang/Object;
-PLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->$r8$lambda$-TUy9RKzfUlNRcVYDQQgCGgal-o(I)[Lcom/android/server/net/NetworkPolicyLogger$Data;
-HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->$r8$lambda$kDNlKKkLZ8vfiKJuYgxljbBLzHE()Lcom/android/server/net/NetworkPolicyLogger$Data;
PLcom/android/server/net/NetworkPolicyLogger$LogBuffer;-><clinit>()V
PLcom/android/server/net/NetworkPolicyLogger$LogBuffer;-><init>(I)V
-HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->appIdleStateChanged(IZ)V
-PLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->event(Ljava/lang/String;)V
-PLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->firewallChainEnabled(IZ)V
-PLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->lambda$new$0(I)[Lcom/android/server/net/NetworkPolicyLogger$Data;
-HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->meteredAllowlistChanged(IZ)V
-HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->networkBlocked(IIII)V
-PLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->paroleStateChanged(Z)V
-HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->tempPowerSaveWlChanged(IZILjava/lang/String;)V
-HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->uidFirewallRuleChanged(III)V
-HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->uidStateChanged(IIJI)V
+PLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->reverseDump(Lcom/android/internal/util/IndentingPrintWriter;)V
PLcom/android/server/net/NetworkPolicyLogger;-><clinit>()V
PLcom/android/server/net/NetworkPolicyLogger;-><init>()V
-HPLcom/android/server/net/NetworkPolicyLogger;->appIdleStateChanged(IZ)V
+PLcom/android/server/net/NetworkPolicyLogger;->appIdleStateChanged(IZ)V
+PLcom/android/server/net/NetworkPolicyLogger;->appIdleWlChanged(IZ)V
+PLcom/android/server/net/NetworkPolicyLogger;->deviceIdleModeEnabled(Z)V
+PLcom/android/server/net/NetworkPolicyLogger;->dumpLogs(Lcom/android/internal/util/IndentingPrintWriter;)V
PLcom/android/server/net/NetworkPolicyLogger;->firewallChainEnabled(IZ)V
PLcom/android/server/net/NetworkPolicyLogger;->firewallRulesChanged(I[I[I)V
PLcom/android/server/net/NetworkPolicyLogger;->getFirewallChainName(I)Ljava/lang/String;
-HPLcom/android/server/net/NetworkPolicyLogger;->meteredAllowlistChanged(IZ)V
+PLcom/android/server/net/NetworkPolicyLogger;->getTempPowerSaveWlChangedLog(ILjava/lang/String;IZ)Ljava/lang/String;
+PLcom/android/server/net/NetworkPolicyLogger;->getUidFirewallRuleChangedLog(III)Ljava/lang/String;
+PLcom/android/server/net/NetworkPolicyLogger;->interfacesChanged(ILandroid/util/ArraySet;)V
PLcom/android/server/net/NetworkPolicyLogger;->meteredRestrictedPkgsChanged(Ljava/util/Set;)V
-HPLcom/android/server/net/NetworkPolicyLogger;->networkBlocked(ILcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;)V
+PLcom/android/server/net/NetworkPolicyLogger;->meterednessChanged(IZ)V
PLcom/android/server/net/NetworkPolicyLogger;->paroleStateChanged(Z)V
-HPLcom/android/server/net/NetworkPolicyLogger;->tempPowerSaveWlChanged(IZILjava/lang/String;)V
+PLcom/android/server/net/NetworkPolicyLogger;->restrictBackgroundChanged(ZZ)V
+PLcom/android/server/net/NetworkPolicyLogger;->roamingChanged(IZ)V
+HPLcom/android/server/net/NetworkPolicyLogger;->tempPowerSaveWlChanged(ILjava/lang/String;IZ)V
HPLcom/android/server/net/NetworkPolicyLogger;->uidFirewallRuleChanged(III)V
-HPLcom/android/server/net/NetworkPolicyLogger;->uidStateChanged(IIJI)V
-PLcom/android/server/net/NetworkPolicyManagerInternal;-><init>()V
-PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+HPLcom/android/server/net/NetworkPolicyLogger;->uidStateChanged(IIIJ)V
+PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;I)V
PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda0;->accept(I)V
-PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-HPLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda2;->accept(I)V
+PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;Landroid/util/SparseIntArray;)V
+PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda2;->accept(I)V
PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;Ljava/util/concurrent/CountDownLatch;)V
PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda4;->run()V
PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda5;-><init>(Landroid/util/SparseBooleanArray;ILjava/util/function/IntConsumer;)V
-HPLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V
+PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V
PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda7;->accept(I)V
-PLcom/android/server/net/NetworkPolicyManagerService$10;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
PLcom/android/server/net/NetworkPolicyManagerService$11;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$11;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V
+PLcom/android/server/net/NetworkPolicyManagerService$11;->onLinkPropertiesChanged(Landroid/net/Network;Landroid/net/LinkProperties;)V
+PLcom/android/server/net/NetworkPolicyManagerService$11;->onLost(Landroid/net/Network;)V
PLcom/android/server/net/NetworkPolicyManagerService$12;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$13;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$14;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$14;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/net/NetworkPolicyManagerService$15;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$15;->handleMessage(Landroid/os/Message;)Z
-PLcom/android/server/net/NetworkPolicyManagerService$16;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-HPLcom/android/server/net/NetworkPolicyManagerService$16;->handleMessage(Landroid/os/Message;)Z
-PLcom/android/server/net/NetworkPolicyManagerService$1;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$2;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$12;->limitReached(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/net/NetworkPolicyManagerService$15;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;I)V
+HPLcom/android/server/net/NetworkPolicyManagerService$15;->handleMessage$com$android$server$net$NetworkPolicyManagerService$15(Landroid/os/Message;)Z+]Landroid/app/usage/NetworkStatsManager;Landroid/app/usage/NetworkStatsManager;]Landroid/net/INetworkPolicyListener;Landroid/net/INetworkPolicyListener$Stub$Proxy;,Lcom/android/server/connectivity/MultipathPolicyTracker$2;,Lcom/android/server/job/controllers/ConnectivityController$4;]Landroid/os/INetworkManagementService;Lcom/android/server/net/NetworkManagementService;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;
+HPLcom/android/server/net/NetworkPolicyManagerService$15;->handleMessage(Landroid/os/Message;)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/net/NetworkPolicyManagerService$1;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;I)V
PLcom/android/server/net/NetworkPolicyManagerService$3;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
PLcom/android/server/net/NetworkPolicyManagerService$4;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-HPLcom/android/server/net/NetworkPolicyManagerService$4;->onUidGone(IZ)V
-HPLcom/android/server/net/NetworkPolicyManagerService$4;->onUidStateChanged(IIJI)V
-PLcom/android/server/net/NetworkPolicyManagerService$5;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$6;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$7;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$8;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$9;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$4;->onUidGone(IZ)V
+HPLcom/android/server/net/NetworkPolicyManagerService$4;->onUidStateChanged(IIJI)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/net/NetworkPolicyManagerService$6;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;I)V
+PLcom/android/server/net/NetworkPolicyManagerService$6;->onReceive$com$android$server$net$NetworkPolicyManagerService$14(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/net/NetworkPolicyManagerService$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/net/NetworkPolicyManagerService$ActiveDataSubIdListener;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$ActiveDataSubIdListener;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService$ActiveDataSubIdListener-IA;)V
+PLcom/android/server/net/NetworkPolicyManagerService$ActiveDataSubIdListener;->onActiveDataSubscriptionIdChanged(I)V
PLcom/android/server/net/NetworkPolicyManagerService$Dependencies;-><init>(Landroid/content/Context;)V
-PLcom/android/server/net/NetworkPolicyManagerService$Dependencies;->getActivateDataSubId()I
-PLcom/android/server/net/NetworkPolicyManagerService$Dependencies;->getDefaultDataSubId()I
+PLcom/android/server/net/NetworkPolicyManagerService$IfaceQuotas;-><init>(JJLjava/lang/String;)V
PLcom/android/server/net/NetworkPolicyManagerService$NetPolicyAppIdleStateChangeListener;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$NetPolicyAppIdleStateChangeListener;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService$NetPolicyAppIdleStateChangeListener-IA;)V
-HPLcom/android/server/net/NetworkPolicyManagerService$NetPolicyAppIdleStateChangeListener;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
+PLcom/android/server/net/NetworkPolicyManagerService$NetPolicyAppIdleStateChangeListener;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
PLcom/android/server/net/NetworkPolicyManagerService$NetPolicyAppIdleStateChangeListener;->onParoleStateChanged(Z)V
PLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl-IA;)V
-PLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->onAdminDataAvailable()V
-HPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->onTempPowerSaveWhitelistChange(IZILjava/lang/String;)V
-PLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->setMeteredRestrictedPackagesAsync(Ljava/util/Set;I)V
-PLcom/android/server/net/NetworkPolicyManagerService$RestrictedModeObserver;-><init>(Landroid/content/Context;Lcom/android/server/net/NetworkPolicyManagerService$RestrictedModeObserver$RestrictedModeListener;)V
-PLcom/android/server/net/NetworkPolicyManagerService$RestrictedModeObserver;->isRestrictedModeEnabled()Z
+HPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->onTempPowerSaveWhitelistChange(ILjava/lang/String;IZ)V
+PLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->updateBlockedReasonsWithProcState(I)I
+PLcom/android/server/net/NetworkPolicyManagerService$RestrictedModeObserver;-><init>(Landroid/content/Context;Lcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda6;)V
PLcom/android/server/net/NetworkPolicyManagerService$StatsCallback;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$StatsCallback;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService$StatsCallback-IA;)V
+PLcom/android/server/net/NetworkPolicyManagerService$StatsCallback;->onThresholdReached(ILjava/lang/String;)V
PLcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;-><clinit>()V
PLcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;-><init>()V
-HPLcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;-><init>(III)V
-HPLcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;->copyFrom(Lcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;)V
+PLcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;->allowedReasonToString(I)Ljava/lang/String;
+PLcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;->blockedReasonToString(I)Ljava/lang/String;
+PLcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;->blockedReasonsToString(I)Ljava/lang/String;
+HPLcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;->deriveUidRules()I
PLcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;->getEffectiveBlockedReasons(II)I
+PLcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;->toString()Ljava/lang/String;
+PLcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;->toString(III)Ljava/lang/String;
HPLcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;->updateEffectiveBlockedReasons()V
-HPLcom/android/server/net/NetworkPolicyManagerService$UidStateCallbackInfo;-><init>()V
-PLcom/android/server/net/NetworkPolicyManagerService$UidStateCallbackInfo;-><init>(Lcom/android/server/net/NetworkPolicyManagerService$UidStateCallbackInfo-IA;)V
-HPLcom/android/server/net/NetworkPolicyManagerService$UidStateCallbackInfo;->update(IIJI)V
-PLcom/android/server/net/NetworkPolicyManagerService;->$r8$lambda$3GuQhs92xi8ei4ZPpN0P0tku59c(Lcom/android/server/net/NetworkPolicyManagerService;I)V
-PLcom/android/server/net/NetworkPolicyManagerService;->$r8$lambda$5Bzemdqa4u7WtPncTGtyV6odZ1o(Lcom/android/server/net/NetworkPolicyManagerService;I)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->$r8$lambda$RXPnC-uth1T2bDapl3O5AR4Dkhs(Lcom/android/server/net/NetworkPolicyManagerService;I)V
-PLcom/android/server/net/NetworkPolicyManagerService;->$r8$lambda$Vjvidsl51zqXS7fNCzjK8IojqZ8(Lcom/android/server/net/NetworkPolicyManagerService;Ljava/util/concurrent/CountDownLatch;)V
-PLcom/android/server/net/NetworkPolicyManagerService;->$r8$lambda$y6NbbUE5w9mVKKbVy0XCA9aA5_c(Landroid/util/SparseBooleanArray;ILjava/util/function/IntConsumer;Lcom/android/server/pm/pkg/AndroidPackage;)V
-PLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$fgetmAdminDataAvailableLatch(Lcom/android/server/net/NetworkPolicyManagerService;)Ljava/util/concurrent/CountDownLatch;
-HPLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$fgetmContext(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/content/Context;
-PLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$fgetmDeps(Lcom/android/server/net/NetworkPolicyManagerService;)Lcom/android/server/net/NetworkPolicyManagerService$Dependencies;
-HPLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$fgetmLogger(Lcom/android/server/net/NetworkPolicyManagerService;)Lcom/android/server/net/NetworkPolicyLogger;
-HPLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$fgetmPowerSaveTempWhitelistAppIds(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/util/SparseBooleanArray;
-HPLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$fgetmUidStateCallbackInfos(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/util/SparseArray;
+PLcom/android/server/net/NetworkPolicyManagerService$UidStateCallbackInfo;->toString()Ljava/lang/String;
PLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$msetMeteredRestrictedPackagesInternal(Lcom/android/server/net/NetworkPolicyManagerService;Ljava/util/Set;I)V
-PLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$mupdateRulesForAppIdleParoleUL(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$mupdateRulesForPowerRestrictionsUL(Lcom/android/server/net/NetworkPolicyManagerService;I)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$mupdateRulesForTempAllowlistChangeUL(Lcom/android/server/net/NetworkPolicyManagerService;I)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$sfgetLOGV()Z
+PLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$smupdateCapabilityChange(Landroid/util/SparseBooleanArray;ZLandroid/net/Network;)Z
PLcom/android/server/net/NetworkPolicyManagerService;-><clinit>()V
-PLcom/android/server/net/NetworkPolicyManagerService;-><init>(Landroid/content/Context;Landroid/app/IActivityManager;Landroid/os/INetworkManagementService;)V
-HPLcom/android/server/net/NetworkPolicyManagerService;-><init>(Landroid/content/Context;Landroid/app/IActivityManager;Landroid/os/INetworkManagementService;Landroid/content/pm/IPackageManager;Ljava/time/Clock;Ljava/io/File;ZLcom/android/server/net/NetworkPolicyManagerService$Dependencies;)V
-PLcom/android/server/net/NetworkPolicyManagerService;->addDefaultRestrictBackgroundAllowlistUidsUL()Z
+PLcom/android/server/net/NetworkPolicyManagerService;-><init>(Landroid/content/Context;Landroid/app/IActivityManager;Landroid/os/INetworkManagementService;Landroid/content/pm/IPackageManager;Ljava/time/Clock;Ljava/io/File;ZLcom/android/server/net/NetworkPolicyManagerService$Dependencies;)V
+PLcom/android/server/net/NetworkPolicyManagerService;-><init>(Landroid/content/Context;Landroid/app/IActivityManager;Lcom/android/server/net/NetworkManagementService;)V
PLcom/android/server/net/NetworkPolicyManagerService;->addDefaultRestrictBackgroundAllowlistUidsUL(I)Z
-PLcom/android/server/net/NetworkPolicyManagerService;->addSdkSandboxUidsIfNeeded(Landroid/util/SparseIntArray;)V
PLcom/android/server/net/NetworkPolicyManagerService;->bindConnectivityManager()V
-PLcom/android/server/net/NetworkPolicyManagerService;->checkAnyPermissionOf([Ljava/lang/String;)Z
+PLcom/android/server/net/NetworkPolicyManagerService;->collectKeys(Landroid/util/SparseArray;Landroid/util/SparseBooleanArray;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/net/NetworkPolicyManagerService;->enableFirewallChainUL(IZ)V
PLcom/android/server/net/NetworkPolicyManagerService;->enforceAnyPermissionOf([Ljava/lang/String;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->findRelevantSubIdNL(Landroid/net/NetworkTemplate;)I
PLcom/android/server/net/NetworkPolicyManagerService;->forEachUid(Ljava/lang/String;Ljava/util/function/IntConsumer;)V
-PLcom/android/server/net/NetworkPolicyManagerService;->getBlockedReasons(I)I
-PLcom/android/server/net/NetworkPolicyManagerService;->getDefaultClock()Ljava/time/Clock;
-PLcom/android/server/net/NetworkPolicyManagerService;->getDefaultSystemDir()Ljava/io/File;
-HPLcom/android/server/net/NetworkPolicyManagerService;->getOrCreateUidBlockedStateForUid(Landroid/util/SparseArray;I)Lcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;
+PLcom/android/server/net/NetworkPolicyManagerService;->getBackgroundTransitioningDelay(I)J
+PLcom/android/server/net/NetworkPolicyManagerService;->getNetworkPolicies(Ljava/lang/String;)[Landroid/net/NetworkPolicy;
+HPLcom/android/server/net/NetworkPolicyManagerService;->getOrCreateUidBlockedStateForUid(ILandroid/util/SparseArray;)Lcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/net/NetworkPolicyManagerService;->getPrimarySubscriptionPlanLocked(I)Landroid/telephony/SubscriptionPlan;
PLcom/android/server/net/NetworkPolicyManagerService;->getRestrictBackgroundStatus(I)I
PLcom/android/server/net/NetworkPolicyManagerService;->getRestrictBackgroundStatusInternal(I)I
-PLcom/android/server/net/NetworkPolicyManagerService;->getRestrictedModeFirewallRule(I)I
+PLcom/android/server/net/NetworkPolicyManagerService;->getSubscriptionPlan(Landroid/net/NetworkTemplate;)Landroid/telephony/SubscriptionPlan;
PLcom/android/server/net/NetworkPolicyManagerService;->getUidPolicy(I)I
+HPLcom/android/server/net/NetworkPolicyManagerService;->handleBlockedReasonsChanged(III)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->handleDeviceIdleModeDisabledUL()V
PLcom/android/server/net/NetworkPolicyManagerService;->handleRestrictedPackagesChangeUL(Ljava/util/Set;Ljava/util/Set;)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->handleUidChanged(Lcom/android/server/net/NetworkPolicyManagerService$UidStateCallbackInfo;)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->handleUidGone(I)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->hasInternetPermissionUL(I)Z
-PLcom/android/server/net/NetworkPolicyManagerService;->hasRestrictedModeAccess(I)Z
-HPLcom/android/server/net/NetworkPolicyManagerService;->initService(Ljava/util/concurrent/CountDownLatch;)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->isAllowlistedFromLowPowerStandbyUL(I)Z
-HPLcom/android/server/net/NetworkPolicyManagerService;->isAllowlistedFromPowerSaveExceptIdleUL(I)Z
-HPLcom/android/server/net/NetworkPolicyManagerService;->isAllowlistedFromPowerSaveUL(IZ)Z
-PLcom/android/server/net/NetworkPolicyManagerService;->isBandwidthControlEnabled()Z
-HPLcom/android/server/net/NetworkPolicyManagerService;->isRestrictedByAdminUL(I)Z
-PLcom/android/server/net/NetworkPolicyManagerService;->isSystem(I)Z
-HPLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictBackgroundUL(I)Z
-HPLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictPowerUL(I)Z
-HPLcom/android/server/net/NetworkPolicyManagerService;->isUidIdle(II)Z
-HPLcom/android/server/net/NetworkPolicyManagerService;->isUidNetworkingBlocked(IZ)Z
-PLcom/android/server/net/NetworkPolicyManagerService;->isUidRestrictedOnMeteredNetworks(I)Z
-HPLcom/android/server/net/NetworkPolicyManagerService;->isUidTop(I)Z
-HPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForAllowlistRulesUL(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->hasInternetPermissionUL(I)Z+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
+HPLcom/android/server/net/NetworkPolicyManagerService;->isAllowlistedFromPowerSaveUL(IZ)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
+PLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictBackgroundUL(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictPowerUL(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/net/NetworkPolicyManagerService;->isUidIdle(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isUidIdle(II)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
HPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForDenylistRulesUL(I)Z
-HPLcom/android/server/net/NetworkPolicyManagerService;->lambda$forEachUid$7(Landroid/util/SparseBooleanArray;ILjava/util/function/IntConsumer;Lcom/android/server/pm/pkg/AndroidPackage;)V
-PLcom/android/server/net/NetworkPolicyManagerService;->lambda$networkScoreAndNetworkManagementServiceReady$1(Ljava/util/concurrent/CountDownLatch;)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->lambda$updateRestrictedModeAllowlistUL$3(I)V
-PLcom/android/server/net/NetworkPolicyManagerService;->lambda$updateRulesForRestrictBackgroundUL$6(I)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->lambda$updateRulesForRestrictPowerUL$5(I)V
-PLcom/android/server/net/NetworkPolicyManagerService;->networkScoreAndNetworkManagementServiceReady()Ljava/util/concurrent/CountDownLatch;
-HPLcom/android/server/net/NetworkPolicyManagerService;->readPolicyAL()V
+HPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForRulesUL(I)Z
+PLcom/android/server/net/NetworkPolicyManagerService;->normalizePoliciesNL([Landroid/net/NetworkPolicy;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->readPolicyAL()V
PLcom/android/server/net/NetworkPolicyManagerService;->registerListener(Landroid/net/INetworkPolicyListener;)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->removeUidStateUL(I)Z
-HPLcom/android/server/net/NetworkPolicyManagerService;->setMeteredNetworkAllowlist(IZ)V
-PLcom/android/server/net/NetworkPolicyManagerService;->setMeteredRestrictedPackagesInternal(Ljava/util/Set;I)V
-PLcom/android/server/net/NetworkPolicyManagerService;->setRestrictBackgroundUL(ZLjava/lang/String;)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRuleUL(III)V
+PLcom/android/server/net/NetworkPolicyManagerService;->removeUidStateUL(I)Z
+PLcom/android/server/net/NetworkPolicyManagerService;->setAppIdleWhitelist(IZ)V
+PLcom/android/server/net/NetworkPolicyManagerService;->setDeviceIdleMode(Z)V
+PLcom/android/server/net/NetworkPolicyManagerService;->setRestrictBackground(Z)V
+PLcom/android/server/net/NetworkPolicyManagerService;->setRestrictBackgroundUL(Ljava/lang/String;Z)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRuleUL(III)V+]Landroid/os/INetworkManagementService;Lcom/android/server/net/NetworkManagementService;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
PLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRulesUL(ILandroid/util/SparseIntArray;)V
PLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRulesUL(ILandroid/util/SparseIntArray;I)V
-PLcom/android/server/net/NetworkPolicyManagerService;->setUidPolicyUncheckedUL(IIZ)V
-PLcom/android/server/net/NetworkPolicyManagerService;->systemReady(Ljava/util/concurrent/CountDownLatch;)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->updateBlockedReasonsForRestrictedModeUL(I)I
-HPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkStats(IZ)V
-PLcom/android/server/net/NetworkPolicyManagerService;->updateNotificationsNL()V
+PLcom/android/server/net/NetworkPolicyManagerService;->setUidPolicyUncheckedUL(II)V
+PLcom/android/server/net/NetworkPolicyManagerService;->unregisterListener(Landroid/net/INetworkPolicyListener;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateBlockedReasonsForRestrictedModeUL(I)I
+PLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkEnabledNL()V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkRulesNL()V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkStats(IZ)V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateNetworksInternal()V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateNotificationsNL()V
PLcom/android/server/net/NetworkPolicyManagerService;->updatePowerSaveAllowlistUL()V
-HPLcom/android/server/net/NetworkPolicyManagerService;->updateRestrictBackgroundRulesOnUidStatusChangedUL(ILandroid/net/NetworkPolicyManager$UidState;Landroid/net/NetworkPolicyManager$UidState;)V
PLcom/android/server/net/NetworkPolicyManagerService;->updateRestrictedModeAllowlistUL()V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateRestrictedModeForUidUL(I)V
HPLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForAppIdleUL(II)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForDeviceIdleUL(I)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForRestrictPowerUL(I)V
-PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAllowlistedPowerSaveUL(IZI)V
-PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAllowlistedPowerSaveUL(ZILandroid/util/SparseIntArray;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForBackgroundUL(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;
+PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAllowlistedAppIds(Landroid/util/SparseIntArray;Landroid/util/SparseBooleanArray;I)V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAllowlistedPowerSaveUL(IZ)V
PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAppIdleParoleUL()V
PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAppIdleUL()V
-HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDataUsageRestrictionsUL(I)V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForBackgroundChainUL()V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDataUsageRestrictionsUL(I)V
HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDataUsageRestrictionsULInner(I)V
-PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDeviceIdleUL()V
PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForGlobalChangeAL(Z)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(I)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(II)V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(II)V
HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(IZ)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsULInner(IZ)V
-PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerSaveUL()V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsULInner(IZ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;
PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForRestrictBackgroundUL()V
PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForRestrictPowerUL()V
-HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForTempAllowlistChangeUL(I)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->updateUidStateUL(IIJI)Z
-PLcom/android/server/net/NetworkPolicyManagerService;->waitForAdminData()V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateSubscriptions()V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateUidStateUL(IIIJ)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService;
PLcom/android/server/net/NetworkPolicyManagerService;->writePolicyAL()V
+HPLcom/android/server/net/watchlist/DigestUtils;->getSha256Hash(Ljava/io/File;)[B+]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate;
PLcom/android/server/net/watchlist/NetworkWatchlistService$1;-><init>(Lcom/android/server/net/watchlist/NetworkWatchlistService;)V
PLcom/android/server/net/watchlist/NetworkWatchlistService$1;->onConnectEvent(Ljava/lang/String;IJI)V
HPLcom/android/server/net/watchlist/NetworkWatchlistService$1;->onDnsEvent(IIILjava/lang/String;[Ljava/lang/String;IJI)V
PLcom/android/server/net/watchlist/NetworkWatchlistService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/net/watchlist/NetworkWatchlistService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/net/watchlist/NetworkWatchlistService$Lifecycle;->onStart()V
-PLcom/android/server/net/watchlist/NetworkWatchlistService;->-$$Nest$fgetmIsLoggingEnabled(Lcom/android/server/net/watchlist/NetworkWatchlistService;)Z
-PLcom/android/server/net/watchlist/NetworkWatchlistService;->-$$Nest$minit(Lcom/android/server/net/watchlist/NetworkWatchlistService;)V
-PLcom/android/server/net/watchlist/NetworkWatchlistService;->-$$Nest$minitIpConnectivityMetrics(Lcom/android/server/net/watchlist/NetworkWatchlistService;)V
PLcom/android/server/net/watchlist/NetworkWatchlistService;-><clinit>()V
PLcom/android/server/net/watchlist/NetworkWatchlistService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/net/watchlist/NetworkWatchlistService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/net/watchlist/NetworkWatchlistService;->enforceWatchlistLoggingPermission()V
-PLcom/android/server/net/watchlist/NetworkWatchlistService;->init()V
-PLcom/android/server/net/watchlist/NetworkWatchlistService;->initIpConnectivityMetrics()V
+PLcom/android/server/net/watchlist/NetworkWatchlistService;->reportWatchlistIfNecessary()V
PLcom/android/server/net/watchlist/NetworkWatchlistService;->startWatchlistLogging()Z
PLcom/android/server/net/watchlist/NetworkWatchlistService;->startWatchlistLoggingImpl()Z
+PLcom/android/server/net/watchlist/PrivacyUtils;->createDpEncodedReportMap(Z[BLjava/util/List;Lcom/android/server/net/watchlist/WatchlistReportDbHelper$AggregatedResult;)Ljava/util/Map;
+PLcom/android/server/net/watchlist/PrivacyUtils;->createSecureDPEncoder([BLjava/lang/String;)Landroid/privacy/DifferentialPrivacyEncoder;
+PLcom/android/server/net/watchlist/ReportEncoder;->serializeReport(Lcom/android/server/net/watchlist/WatchlistConfig;Ljava/util/Map;)[B
PLcom/android/server/net/watchlist/ReportWatchlistJobService;-><clinit>()V
-PLcom/android/server/net/watchlist/ReportWatchlistJobService;->schedule(Landroid/content/Context;)V
+PLcom/android/server/net/watchlist/ReportWatchlistJobService;-><init>()V
+PLcom/android/server/net/watchlist/ReportWatchlistJobService;->onStartJob(Landroid/app/job/JobParameters;)Z
PLcom/android/server/net/watchlist/WatchlistConfig;-><clinit>()V
-PLcom/android/server/net/watchlist/WatchlistConfig;-><init>()V
PLcom/android/server/net/watchlist/WatchlistConfig;-><init>(Ljava/io/File;)V
-HPLcom/android/server/net/watchlist/WatchlistConfig;->containsDomain(Ljava/lang/String;)Z
-PLcom/android/server/net/watchlist/WatchlistConfig;->containsIp(Ljava/lang/String;)Z
-PLcom/android/server/net/watchlist/WatchlistConfig;->getInstance()Lcom/android/server/net/watchlist/WatchlistConfig;
+PLcom/android/server/net/watchlist/WatchlistConfig;->getWatchlistConfigHash()[B
PLcom/android/server/net/watchlist/WatchlistConfig;->reloadConfig()V
-PLcom/android/server/net/watchlist/WatchlistConfig;->removeTestModeConfig()V
+PLcom/android/server/net/watchlist/WatchlistLoggingHandler$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/net/watchlist/WatchlistLoggingHandler;I)V
+PLcom/android/server/net/watchlist/WatchlistLoggingHandler$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/net/watchlist/WatchlistLoggingHandler;-><clinit>()V
PLcom/android/server/net/watchlist/WatchlistLoggingHandler;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
-HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->asyncNetworkEvent(Ljava/lang/String;[Ljava/lang/String;I)V
-HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->getAllSubDomains(Ljava/lang/String;)[Ljava/lang/String;
-PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->getLastMidnightTime()J
-PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->getMidnightTimestamp(I)J
-PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->getPrimaryUserId()I
+HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->asyncNetworkEvent(Ljava/lang/String;I[Ljava/lang/String;)V
+PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->getAllDigestsForReport(Lcom/android/server/net/watchlist/WatchlistReportDbHelper$AggregatedResult;)Ljava/util/List;
+PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->getAllSubDomains(Ljava/lang/String;)[Ljava/lang/String;
HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->handleMessage(Landroid/os/Message;)V
-HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->handleNetworkEvent(Ljava/lang/String;[Ljava/lang/String;IJ)V
-PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->isHostInWatchlist(Ljava/lang/String;)Z
-PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->isIpInWatchlist(Ljava/lang/String;)Z
-PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->reportWatchlistIfNecessary()V
-PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->searchAllSubDomainsInWatchlist(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->searchIpInWatchlist([Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->shouldReportNetworkWatchlist(J)Z
PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->tryAggregateRecords(J)V
+PLcom/android/server/net/watchlist/WatchlistReportDbHelper$AggregatedResult;-><init>(Ljava/util/Set;Ljava/util/HashMap;)V
PLcom/android/server/net/watchlist/WatchlistReportDbHelper;-><clinit>()V
-PLcom/android/server/net/watchlist/WatchlistReportDbHelper;-><init>(Landroid/content/Context;)V
-PLcom/android/server/net/watchlist/WatchlistReportDbHelper;->getInstance(Landroid/content/Context;)Lcom/android/server/net/watchlist/WatchlistReportDbHelper;
-PLcom/android/server/net/watchlist/WatchlistReportDbHelper;->getSystemWatchlistDbFile()Ljava/io/File;
+PLcom/android/server/net/watchlist/WatchlistReportDbHelper;->cleanup(J)V
+PLcom/android/server/net/watchlist/WatchlistReportDbHelper;->getAggregatedRecords(J)Lcom/android/server/net/watchlist/WatchlistReportDbHelper$AggregatedResult;
PLcom/android/server/net/watchlist/WatchlistSettings;-><clinit>()V
-PLcom/android/server/net/watchlist/WatchlistSettings;-><init>()V
PLcom/android/server/net/watchlist/WatchlistSettings;-><init>(Ljava/io/File;)V
-PLcom/android/server/net/watchlist/WatchlistSettings;->getInstance()Lcom/android/server/net/watchlist/WatchlistSettings;
-PLcom/android/server/net/watchlist/WatchlistSettings;->getSystemWatchlistFile()Ljava/io/File;
-PLcom/android/server/net/watchlist/WatchlistSettings;->parseSecretKey(Lorg/xmlpull/v1/XmlPullParser;)[B
-PLcom/android/server/net/watchlist/WatchlistSettings;->reloadSettings()V
-PLcom/android/server/notification/AlertRateLimiter;-><init>()V
PLcom/android/server/notification/BadgeExtractor;-><init>()V
PLcom/android/server/notification/BadgeExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
-HPLcom/android/server/notification/BadgeExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+HPLcom/android/server/notification/BadgeExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
PLcom/android/server/notification/BadgeExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
PLcom/android/server/notification/BadgeExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
PLcom/android/server/notification/BubbleExtractor;-><init>()V
PLcom/android/server/notification/BubbleExtractor;->canPresentAsBubble(Lcom/android/server/notification/NotificationRecord;)Z
PLcom/android/server/notification/BubbleExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
-PLcom/android/server/notification/BubbleExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+HPLcom/android/server/notification/BubbleExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/BubbleExtractor;Lcom/android/server/notification/BubbleExtractor;
PLcom/android/server/notification/BubbleExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
-PLcom/android/server/notification/BubbleExtractor;->setShortcutHelper(Lcom/android/server/notification/ShortcutHelper;)V
PLcom/android/server/notification/BubbleExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
-PLcom/android/server/notification/CalendarTracker$1;-><init>(Lcom/android/server/notification/CalendarTracker;Landroid/os/Handler;)V
-PLcom/android/server/notification/CalendarTracker$CheckEventResult;-><init>()V
+PLcom/android/server/notification/CalendarTracker$1;-><init>(Lcom/android/server/notification/CalendarTracker;)V
PLcom/android/server/notification/CalendarTracker;-><clinit>()V
PLcom/android/server/notification/CalendarTracker;-><init>(Landroid/content/Context;Landroid/content/Context;)V
-PLcom/android/server/notification/CalendarTracker;->checkEvent(Landroid/service/notification/ZenModeConfig$EventInfo;J)Lcom/android/server/notification/CalendarTracker$CheckEventResult;
-PLcom/android/server/notification/CalendarTracker;->getCalendarsWithAccess()Landroid/util/ArraySet;
-PLcom/android/server/notification/CalendarTracker;->setCallback(Lcom/android/server/notification/CalendarTracker$Callback;)V
-PLcom/android/server/notification/CalendarTracker;->setRegistered(Z)V
-PLcom/android/server/notification/ConditionProviders$ConditionRecord;-><init>(Landroid/net/Uri;Landroid/content/ComponentName;)V
-PLcom/android/server/notification/ConditionProviders$ConditionRecord;-><init>(Landroid/net/Uri;Landroid/content/ComponentName;Lcom/android/server/notification/ConditionProviders$ConditionRecord-IA;)V
+PLcom/android/server/notification/CalendarTracker;->setCallback(Lcom/android/server/notification/EventConditionProvider$2;)V
+PLcom/android/server/notification/ConditionProviders$ConditionRecord;-><init>(Landroid/content/ComponentName;Landroid/net/Uri;)V
+PLcom/android/server/notification/ConditionProviders$ConditionRecord;->toString()Ljava/lang/String;
PLcom/android/server/notification/ConditionProviders;-><init>(Landroid/content/Context;Lcom/android/server/notification/ManagedServices$UserProfiles;Landroid/content/pm/IPackageManager;)V
PLcom/android/server/notification/ConditionProviders;->addSystemProvider(Lcom/android/server/notification/SystemConditionProviderService;)V
-PLcom/android/server/notification/ConditionProviders;->checkServiceToken(Landroid/service/notification/IConditionProvider;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
+PLcom/android/server/notification/ConditionProviders;->dump(Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
PLcom/android/server/notification/ConditionProviders;->ensureRecordExists(Landroid/content/ComponentName;Landroid/net/Uri;Landroid/service/notification/IConditionProvider;)V
HPLcom/android/server/notification/ConditionProviders;->getConfig()Lcom/android/server/notification/ManagedServices$Config;
-HPLcom/android/server/notification/ConditionProviders;->getRecordLocked(Landroid/net/Uri;Landroid/content/ComponentName;Z)Lcom/android/server/notification/ConditionProviders$ConditionRecord;
+PLcom/android/server/notification/ConditionProviders;->getRecordLocked(Landroid/net/Uri;Landroid/content/ComponentName;Z)Lcom/android/server/notification/ConditionProviders$ConditionRecord;
PLcom/android/server/notification/ConditionProviders;->getRequiredPermission()Ljava/lang/String;
-PLcom/android/server/notification/ConditionProviders;->getSystemProviders()Ljava/lang/Iterable;
PLcom/android/server/notification/ConditionProviders;->getValidConditions(Ljava/lang/String;[Landroid/service/notification/Condition;)[Landroid/service/notification/Condition;
-PLcom/android/server/notification/ConditionProviders;->isSystemProviderEnabled(Ljava/lang/String;)Z
-PLcom/android/server/notification/ConditionProviders;->notifyConditions(Ljava/lang/String;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;[Landroid/service/notification/Condition;)V
-PLcom/android/server/notification/ConditionProviders;->onBootPhaseAppsCanStart()V
+PLcom/android/server/notification/ConditionProviders;->isValidEntry(ILjava/lang/String;)Z
PLcom/android/server/notification/ConditionProviders;->onPackagesChanged(Z[Ljava/lang/String;[I)V
PLcom/android/server/notification/ConditionProviders;->onServiceAdded(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
-PLcom/android/server/notification/ConditionProviders;->onUserSwitched(I)V
-PLcom/android/server/notification/ConditionProviders;->provider(Lcom/android/server/notification/ConditionProviders$ConditionRecord;)Landroid/service/notification/IConditionProvider;
-PLcom/android/server/notification/ConditionProviders;->provider(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/IConditionProvider;
-PLcom/android/server/notification/ConditionProviders;->safeSet([Ljava/lang/Object;)Landroid/util/ArraySet;
-PLcom/android/server/notification/ConditionProviders;->setCallback(Lcom/android/server/notification/ConditionProviders$Callback;)V
-PLcom/android/server/notification/ConditionProviders;->subscribeIfNecessary(Landroid/content/ComponentName;Landroid/net/Uri;)Z
PLcom/android/server/notification/ConditionProviders;->subscribeLocked(Lcom/android/server/notification/ConditionProviders$ConditionRecord;)V
PLcom/android/server/notification/ConditionProviders;->writeDefaults(Lcom/android/modules/utils/TypedXmlSerializer;)V
PLcom/android/server/notification/CountdownConditionProvider$Receiver;-><init>(Lcom/android/server/notification/CountdownConditionProvider;)V
-PLcom/android/server/notification/CountdownConditionProvider$Receiver;-><init>(Lcom/android/server/notification/CountdownConditionProvider;Lcom/android/server/notification/CountdownConditionProvider$Receiver-IA;)V
PLcom/android/server/notification/CountdownConditionProvider;-><clinit>()V
PLcom/android/server/notification/CountdownConditionProvider;-><init>()V
-PLcom/android/server/notification/CountdownConditionProvider;->asInterface()Landroid/service/notification/IConditionProvider;
-PLcom/android/server/notification/CountdownConditionProvider;->attachBase(Landroid/content/Context;)V
-PLcom/android/server/notification/CountdownConditionProvider;->getComponent()Landroid/content/ComponentName;
+PLcom/android/server/notification/CountdownConditionProvider;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/notification/CountdownConditionProvider;->isValidConditionId(Landroid/net/Uri;)Z
PLcom/android/server/notification/CountdownConditionProvider;->onBootComplete()V
PLcom/android/server/notification/CountdownConditionProvider;->onConnected()V
@@ -15573,1106 +12286,804 @@ PLcom/android/server/notification/CriticalNotificationExtractor;->initialize(Lan
PLcom/android/server/notification/CriticalNotificationExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
PLcom/android/server/notification/CriticalNotificationExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
PLcom/android/server/notification/CriticalNotificationExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
-PLcom/android/server/notification/CriticalNotificationExtractor;->supportsCriticalNotifications(Landroid/content/Context;)Z
-PLcom/android/server/notification/DefaultDeviceEffectsApplier$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/notification/DefaultDeviceEffectsApplier;Landroid/service/notification/ZenDeviceEffects;I)V
-PLcom/android/server/notification/DefaultDeviceEffectsApplier$$ExternalSyntheticLambda0;->runOrThrow()V
+PLcom/android/server/notification/CustomManualConditionProvider;-><clinit>()V
+PLcom/android/server/notification/CustomManualConditionProvider;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/notification/CustomManualConditionProvider;->isValidConditionId(Landroid/net/Uri;)Z
+PLcom/android/server/notification/CustomManualConditionProvider;->onBootComplete()V
+PLcom/android/server/notification/CustomManualConditionProvider;->onConnected()V
PLcom/android/server/notification/DefaultDeviceEffectsApplier$1;-><init>(Lcom/android/server/notification/DefaultDeviceEffectsApplier;)V
-PLcom/android/server/notification/DefaultDeviceEffectsApplier;->$r8$lambda$4LDHIsj0iI2D9FidhGDL9DsNFGA(Lcom/android/server/notification/DefaultDeviceEffectsApplier;Landroid/service/notification/ZenDeviceEffects;I)V
PLcom/android/server/notification/DefaultDeviceEffectsApplier;-><clinit>()V
PLcom/android/server/notification/DefaultDeviceEffectsApplier;-><init>(Landroid/content/Context;)V
-PLcom/android/server/notification/DefaultDeviceEffectsApplier;->apply(Landroid/service/notification/ZenDeviceEffects;I)V
-PLcom/android/server/notification/DefaultDeviceEffectsApplier;->lambda$apply$0(Landroid/service/notification/ZenDeviceEffects;I)V
-PLcom/android/server/notification/EventConditionProvider$1;-><init>(Lcom/android/server/notification/EventConditionProvider;)V
+PLcom/android/server/notification/DefaultDeviceEffectsApplier;->maybeDimWallpaper(Z)V
+PLcom/android/server/notification/DefaultDeviceEffectsApplier;->maybeDisplayGrayscale(Z)V
+PLcom/android/server/notification/DefaultDeviceEffectsApplier;->maybeSuppressAmbientDisplay(Z)V
+PLcom/android/server/notification/DefaultDeviceEffectsApplier;->maybeUseNightMode(ZI)V
+PLcom/android/server/notification/EventConditionProvider$1;-><init>(Lcom/android/server/notification/EventConditionProvider;I)V
PLcom/android/server/notification/EventConditionProvider$2;-><init>(Lcom/android/server/notification/EventConditionProvider;)V
-PLcom/android/server/notification/EventConditionProvider$3;-><init>(Lcom/android/server/notification/EventConditionProvider;)V
-PLcom/android/server/notification/EventConditionProvider$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/notification/EventConditionProvider$4;-><init>(Lcom/android/server/notification/EventConditionProvider;)V
PLcom/android/server/notification/EventConditionProvider$4;->run()V
-PLcom/android/server/notification/EventConditionProvider;->-$$Nest$mevaluateSubscriptions(Lcom/android/server/notification/EventConditionProvider;)V
-PLcom/android/server/notification/EventConditionProvider;->-$$Nest$mevaluateSubscriptionsW(Lcom/android/server/notification/EventConditionProvider;)V
-PLcom/android/server/notification/EventConditionProvider;->-$$Nest$sfgetDEBUG()Z
PLcom/android/server/notification/EventConditionProvider;-><clinit>()V
PLcom/android/server/notification/EventConditionProvider;-><init>()V
-PLcom/android/server/notification/EventConditionProvider;->asInterface()Landroid/service/notification/IConditionProvider;
-PLcom/android/server/notification/EventConditionProvider;->attachBase(Landroid/content/Context;)V
-PLcom/android/server/notification/EventConditionProvider;->createCondition(Landroid/net/Uri;I)Landroid/service/notification/Condition;
+PLcom/android/server/notification/EventConditionProvider;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/notification/EventConditionProvider;->evaluateSubscriptions()V
-HPLcom/android/server/notification/EventConditionProvider;->evaluateSubscriptionsW()V
-PLcom/android/server/notification/EventConditionProvider;->getComponent()Landroid/content/ComponentName;
-PLcom/android/server/notification/EventConditionProvider;->getPendingIntent(J)Landroid/app/PendingIntent;
PLcom/android/server/notification/EventConditionProvider;->isValidConditionId(Landroid/net/Uri;)Z
PLcom/android/server/notification/EventConditionProvider;->onBootComplete()V
PLcom/android/server/notification/EventConditionProvider;->onConnected()V
-PLcom/android/server/notification/EventConditionProvider;->onSubscribe(Landroid/net/Uri;)V
-PLcom/android/server/notification/EventConditionProvider;->reloadTrackers()V
+PLcom/android/server/notification/EventConditionProvider;->reloadTrackers(Landroid/os/UserHandle;)V
PLcom/android/server/notification/EventConditionProvider;->rescheduleAlarm(JJ)V
PLcom/android/server/notification/EventConditionProvider;->setRegistered(Z)V
-PLcom/android/server/notification/FeatureFlagsImpl;-><clinit>()V
-PLcom/android/server/notification/FeatureFlagsImpl;-><init>()V
-PLcom/android/server/notification/FeatureFlagsImpl;->crossAppPoliteNotifications()Z
-PLcom/android/server/notification/FeatureFlagsImpl;->expireBitmaps()Z
-PLcom/android/server/notification/FeatureFlagsImpl;->load_overrides_systemui()V
-HPLcom/android/server/notification/FeatureFlagsImpl;->notificationReduceMessagequeueUsage()Z
-PLcom/android/server/notification/FeatureFlagsImpl;->politeNotifications()Z
-PLcom/android/server/notification/FeatureFlagsImpl;->refactorAttentionHelper()Z
-PLcom/android/server/notification/FeatureFlagsImpl;->sensitiveNotificationAppProtection()Z
-PLcom/android/server/notification/FeatureFlagsImpl;->vibrateWhileUnlocked()Z
+PLcom/android/server/notification/FeatureFlagsImpl;->init()V
PLcom/android/server/notification/Flags;-><clinit>()V
+PLcom/android/server/notification/Flags;->allNotifsNeedTtl()Z
PLcom/android/server/notification/Flags;->crossAppPoliteNotifications()Z
PLcom/android/server/notification/Flags;->expireBitmaps()Z
+HPLcom/android/server/notification/Flags;->notificationForceGroupConversations()Z
+PLcom/android/server/notification/Flags;->notificationForceGroupSingletons()Z
PLcom/android/server/notification/Flags;->notificationReduceMessagequeueUsage()Z
+PLcom/android/server/notification/Flags;->notificationVerifyChannelSoundUri()Z
+PLcom/android/server/notification/Flags;->notificationVibrationInSoundUri()Z
+PLcom/android/server/notification/Flags;->persistIncompleteRestoreData()Z
PLcom/android/server/notification/Flags;->politeNotifications()Z
-PLcom/android/server/notification/Flags;->refactorAttentionHelper()Z
-PLcom/android/server/notification/Flags;->sensitiveNotificationAppProtection()Z
+PLcom/android/server/notification/Flags;->politeNotificationsAttnUpdate()Z
+PLcom/android/server/notification/Flags;->rejectOldNotifications()Z
+PLcom/android/server/notification/Flags;->traceCancelEvents()Z
+PLcom/android/server/notification/Flags;->useSsmUserSwitchSignal()Z
PLcom/android/server/notification/Flags;->vibrateWhileUnlocked()Z
-PLcom/android/server/notification/GlobalSortKeyComparator;-><init>()V
-PLcom/android/server/notification/GlobalSortKeyComparator;->compare(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)I
-PLcom/android/server/notification/GlobalSortKeyComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/notification/GroupHelper$NotificationAttributes;-><init>(ILandroid/graphics/drawable/Icon;I)V
-PLcom/android/server/notification/GroupHelper;-><init>(Landroid/content/Context;Landroid/content/pm/PackageManager;ILcom/android/server/notification/GroupHelper$Callback;)V
-PLcom/android/server/notification/GroupHelper;->generatePackageKey(ILjava/lang/String;)Ljava/lang/String;
-HPLcom/android/server/notification/GroupHelper;->maybeGroup(Landroid/service/notification/StatusBarNotification;Z)V
-PLcom/android/server/notification/GroupHelper;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;Z)V
+HPLcom/android/server/notification/GlobalSortKeyComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/notification/GroupHelper$$ExternalSyntheticLambda0;-><init>(I)V
+HPLcom/android/server/notification/GroupHelper$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/notification/GroupHelper$FullyQualifiedGroupKey;-><init>(ILjava/lang/String;Lcom/android/server/notification/GroupHelper$NotificationSectioner;)V
+PLcom/android/server/notification/GroupHelper$FullyQualifiedGroupKey;-><init>(ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/notification/GroupHelper$FullyQualifiedGroupKey;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/notification/GroupHelper$FullyQualifiedGroupKey;->hashCode()I
+HPLcom/android/server/notification/GroupHelper$FullyQualifiedGroupKey;->toString()Ljava/lang/String;
+PLcom/android/server/notification/GroupHelper$NotificationAttributes;-><init>(ILandroid/graphics/drawable/Icon;IIILjava/lang/String;)V
+PLcom/android/server/notification/GroupHelper$NotificationSectioner;-><init>(Ljava/lang/String;ILjava/util/function/Predicate;)V
+HPLcom/android/server/notification/GroupHelper$NotificationSectioner;->isInSection(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/GroupHelper;-><clinit>()V
+PLcom/android/server/notification/GroupHelper;-><init>(Landroid/content/Context;Landroid/content/pm/PackageManager;ILcom/android/server/notification/NotificationManagerService$1;)V
+PLcom/android/server/notification/GroupHelper;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/notification/GroupHelper;->findCanceledSummary(Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/GroupHelper$CachedSummary;
+PLcom/android/server/notification/GroupHelper;->findCanceledSummary(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;)Lcom/android/server/notification/GroupHelper$CachedSummary;
+PLcom/android/server/notification/GroupHelper;->getAutobundledSummaryAttributes(Ljava/lang/String;Ljava/util/List;)Lcom/android/server/notification/GroupHelper$NotificationAttributes;
+PLcom/android/server/notification/GroupHelper;->getAutogroupSummaryFlags(Landroid/util/ArrayMap;)I
+PLcom/android/server/notification/GroupHelper;->getNotificationShadeSections()Ljava/util/List;
+PLcom/android/server/notification/GroupHelper;->getPreviousValidSectionKey(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/GroupHelper$FullyQualifiedGroupKey;
+PLcom/android/server/notification/GroupHelper;->getSection(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/GroupHelper$NotificationSectioner;
+HPLcom/android/server/notification/GroupHelper;->isUpdateForCanceledSummary(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/GroupHelper;->maybeCancelGroupChildrenForCanceledSummary(IIILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/notification/GroupHelper;->maybeClearCanceledSummariesCache(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;)V
+HPLcom/android/server/notification/GroupHelper;->maybeGroupWithSections(Lcom/android/server/notification/NotificationRecord;Z)Z
+PLcom/android/server/notification/GroupHelper;->maybeUngroupWithSections(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/GroupHelper$FullyQualifiedGroupKey;)V
+PLcom/android/server/notification/GroupHelper;->onNotificationPosted(Lcom/android/server/notification/NotificationRecord;Z)Z
+PLcom/android/server/notification/GroupHelper;->onNotificationPostedWithDelay(Lcom/android/server/notification/NotificationRecord;Ljava/util/List;Ljava/util/Map;)V
+HPLcom/android/server/notification/GroupHelper;->onNotificationRemoved(Lcom/android/server/notification/NotificationRecord;Ljava/util/List;)V
+PLcom/android/server/notification/GroupHelper;->updateAggregateAppGroup(Lcom/android/server/notification/GroupHelper$FullyQualifiedGroupKey;Ljava/lang/String;ZI)V
PLcom/android/server/notification/ImportanceExtractor;-><init>()V
PLcom/android/server/notification/ImportanceExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
-PLcom/android/server/notification/ImportanceExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+HPLcom/android/server/notification/ImportanceExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
PLcom/android/server/notification/ImportanceExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
PLcom/android/server/notification/ImportanceExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
-HPLcom/android/server/notification/ManagedServices$1;-><init>(Lcom/android/server/notification/ManagedServices;ILandroid/util/Pair;ZII)V
-HPLcom/android/server/notification/ManagedServices$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/notification/ManagedServices$1;-><init>(Lcom/android/server/notification/ManagedServices;ILandroid/util/Pair;II)V
+PLcom/android/server/notification/ManagedServices$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
PLcom/android/server/notification/ManagedServices$1;->onServiceDisconnected(Landroid/content/ComponentName;)V
-PLcom/android/server/notification/ManagedServices$Config;-><init>()V
-HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;-><init>(Lcom/android/server/notification/ManagedServices;Landroid/os/IInterface;Landroid/content/ComponentName;IZLandroid/content/ServiceConnection;II)V
+PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;-><init>(Lcom/android/server/notification/ManagedServices;Landroid/os/IInterface;Landroid/content/ComponentName;IZLcom/android/server/notification/ManagedServices$1;II)V
PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->binderDied()V
HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->enabledAndUserMatches(I)Z
-PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->getService()Landroid/os/IInterface;
HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->hashCode()I
HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isEnabledForCurrentProfiles()Z
-PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isGuest(Lcom/android/server/notification/ManagedServices;)Z
-PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isSameUser(I)Z
-PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isSystem()Z
PLcom/android/server/notification/ManagedServices$UserProfiles;-><init>()V
-HPLcom/android/server/notification/ManagedServices$UserProfiles;->getCurrentProfileIds()Landroid/util/IntArray;
+PLcom/android/server/notification/ManagedServices$UserProfiles;->getCurrentProfileIds()Landroid/util/IntArray;
PLcom/android/server/notification/ManagedServices$UserProfiles;->isCurrentProfile(I)Z
-PLcom/android/server/notification/ManagedServices$UserProfiles;->isProfileUser(I)Z
+PLcom/android/server/notification/ManagedServices$UserProfiles;->isProfileUser(Landroid/content/Context;I)Z
PLcom/android/server/notification/ManagedServices$UserProfiles;->updateCache(Landroid/content/Context;)V
-PLcom/android/server/notification/ManagedServices;->-$$Nest$fgetmEnabledServicesForCurrentProfiles(Lcom/android/server/notification/ManagedServices;)Landroid/util/ArraySet;
-PLcom/android/server/notification/ManagedServices;->-$$Nest$fgetmServices(Lcom/android/server/notification/ManagedServices;)Ljava/util/ArrayList;
-PLcom/android/server/notification/ManagedServices;->-$$Nest$fgetmServicesRebinding(Lcom/android/server/notification/ManagedServices;)Landroid/util/ArraySet;
-PLcom/android/server/notification/ManagedServices;->-$$Nest$mgetCaption(Lcom/android/server/notification/ManagedServices;)Ljava/lang/String;
-PLcom/android/server/notification/ManagedServices;->-$$Nest$mnewServiceInfo(Lcom/android/server/notification/ManagedServices;Landroid/os/IInterface;Landroid/content/ComponentName;IZLandroid/content/ServiceConnection;II)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
-PLcom/android/server/notification/ManagedServices;->-$$Nest$mremoveServiceImpl(Lcom/android/server/notification/ManagedServices;Landroid/os/IInterface;I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
-HPLcom/android/server/notification/ManagedServices;-><init>(Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/notification/ManagedServices$UserProfiles;Landroid/content/pm/IPackageManager;)V
-HPLcom/android/server/notification/ManagedServices;->addApprovedList(Ljava/lang/String;IZLjava/lang/String;)V
-HPLcom/android/server/notification/ManagedServices;->bindToServices(Landroid/util/SparseArray;)V
+PLcom/android/server/notification/ManagedServices;-><init>(Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/notification/ManagedServices$UserProfiles;Landroid/content/pm/IPackageManager;)V
+PLcom/android/server/notification/ManagedServices;->addApprovedList(ILjava/lang/String;Ljava/lang/String;Z)V
PLcom/android/server/notification/ManagedServices;->checkNotNull(Landroid/os/IInterface;)V
PLcom/android/server/notification/ManagedServices;->checkServiceTokenLocked(Landroid/os/IInterface;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
+PLcom/android/server/notification/ManagedServices;->dump(Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
PLcom/android/server/notification/ManagedServices;->getAllowedComponents(I)Ljava/util/List;
-HPLcom/android/server/notification/ManagedServices;->getAllowedComponents(Landroid/util/IntArray;)Landroid/util/SparseArray;
+PLcom/android/server/notification/ManagedServices;->getAllowedComponents(Landroid/util/IntArray;)Landroid/util/SparseArray;
PLcom/android/server/notification/ManagedServices;->getAllowedPackages(I)Ljava/util/List;
PLcom/android/server/notification/ManagedServices;->getApprovedValue(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/notification/ManagedServices;->getBindFlags()I
-PLcom/android/server/notification/ManagedServices;->getCaption()Ljava/lang/String;
-PLcom/android/server/notification/ManagedServices;->getDefaultComponents()Landroid/util/ArraySet;
PLcom/android/server/notification/ManagedServices;->getPackageName(Ljava/lang/String;)Ljava/lang/String;
-HPLcom/android/server/notification/ManagedServices;->getRemovableConnectedServices()Ljava/util/Set;
-HPLcom/android/server/notification/ManagedServices;->getServiceFromTokenLocked(Landroid/os/IInterface;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
-PLcom/android/server/notification/ManagedServices;->getServiceInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ServiceInfo;
+PLcom/android/server/notification/ManagedServices;->getRemovableConnectedServices()Ljava/util/Set;
+HPLcom/android/server/notification/ManagedServices;->getServiceFromTokenLocked(Landroid/os/IInterface;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;+]Landroid/os/IInterface;Landroid/service/notification/ConditionProviderService$Provider;,Landroid/service/notification/INotificationListener$Stub$Proxy;,Landroid/service/notification/NotificationListenerService$NotificationListenerWrapper;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/notification/ManagedServices;->getServiceInfo(ILandroid/content/ComponentName;)Landroid/content/pm/ServiceInfo;
HPLcom/android/server/notification/ManagedServices;->getServices()Ljava/util/List;
-PLcom/android/server/notification/ManagedServices;->isAutobindAllowed(Landroid/content/pm/ServiceInfo;)Z
-PLcom/android/server/notification/ManagedServices;->isComponentEnabledForPackage(Ljava/lang/String;)Z
-PLcom/android/server/notification/ManagedServices;->isPackageAllowed(Ljava/lang/String;I)Z
-HPLcom/android/server/notification/ManagedServices;->isPackageOrComponentAllowed(Ljava/lang/String;I)Z
-PLcom/android/server/notification/ManagedServices;->isSameUser(Landroid/os/IInterface;I)Z
-PLcom/android/server/notification/ManagedServices;->isServiceTokenValidLocked(Landroid/os/IInterface;)Z
-HPLcom/android/server/notification/ManagedServices;->loadComponentNamesFromValues(Landroid/util/ArraySet;I)Landroid/util/ArraySet;
-PLcom/android/server/notification/ManagedServices;->newServiceInfo(Landroid/os/IInterface;Landroid/content/ComponentName;IZLandroid/content/ServiceConnection;II)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
-PLcom/android/server/notification/ManagedServices;->onBootPhaseAppsCanStart()V
+PLcom/android/server/notification/ManagedServices;->isPackageAllowed(ILjava/lang/String;)Z
+HPLcom/android/server/notification/ManagedServices;->isPackageOrComponentAllowed(ILjava/lang/String;)Z
+PLcom/android/server/notification/ManagedServices;->isValidEntry(ILjava/lang/String;)Z
PLcom/android/server/notification/ManagedServices;->onPackagesChanged(Z[Ljava/lang/String;[I)V
-PLcom/android/server/notification/ManagedServices;->onUserSwitched(I)V
-PLcom/android/server/notification/ManagedServices;->onUserUnlocked(I)V
-HPLcom/android/server/notification/ManagedServices;->populateComponentsToBind(Landroid/util/SparseArray;Landroid/util/IntArray;Landroid/util/SparseArray;)V
+PLcom/android/server/notification/ManagedServices;->populateComponentsToBind(Landroid/util/SparseArray;Landroid/util/IntArray;Landroid/util/SparseArray;)V
PLcom/android/server/notification/ManagedServices;->populateComponentsToUnbind(ZLjava/util/Set;Landroid/util/SparseArray;Landroid/util/SparseArray;)V
-PLcom/android/server/notification/ManagedServices;->queryPackageForServices(Ljava/lang/String;I)Ljava/util/Set;
-HPLcom/android/server/notification/ManagedServices;->queryPackageForServices(Ljava/lang/String;II)Landroid/util/ArraySet;
-PLcom/android/server/notification/ManagedServices;->readDefaults(Lcom/android/modules/utils/TypedXmlPullParser;)V
-PLcom/android/server/notification/ManagedServices;->readExtraAttributes(Ljava/lang/String;Lcom/android/modules/utils/TypedXmlPullParser;I)V
-HPLcom/android/server/notification/ManagedServices;->readXml(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/function/TriPredicate;ZI)V
-HPLcom/android/server/notification/ManagedServices;->rebindServices(ZI)V
-PLcom/android/server/notification/ManagedServices;->registerGuestService(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+PLcom/android/server/notification/ManagedServices;->queryPackageForServices(IILjava/lang/String;)Landroid/util/ArraySet;
+PLcom/android/server/notification/ManagedServices;->readExtraAttributes(ILcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)V
+PLcom/android/server/notification/ManagedServices;->readXml(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda2;ZI)V
+PLcom/android/server/notification/ManagedServices;->rebindServices(IZ)V
PLcom/android/server/notification/ManagedServices;->registerService(Landroid/content/ComponentName;I)V
PLcom/android/server/notification/ManagedServices;->registerService(Landroid/content/pm/ServiceInfo;I)V
-PLcom/android/server/notification/ManagedServices;->registerServiceImpl(Landroid/os/IInterface;Landroid/content/ComponentName;III)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
PLcom/android/server/notification/ManagedServices;->registerServiceImpl(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
-PLcom/android/server/notification/ManagedServices;->registerServiceLocked(Landroid/content/ComponentName;I)V
-HPLcom/android/server/notification/ManagedServices;->registerServiceLocked(Landroid/content/ComponentName;IZ)V
-PLcom/android/server/notification/ManagedServices;->registerSystemService(Landroid/os/IInterface;Landroid/content/ComponentName;II)V
+PLcom/android/server/notification/ManagedServices;->registerServiceLocked(ILandroid/content/ComponentName;)V
PLcom/android/server/notification/ManagedServices;->removeServiceImpl(Landroid/os/IInterface;I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
PLcom/android/server/notification/ManagedServices;->removeServiceLocked(I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
-PLcom/android/server/notification/ManagedServices;->setPackageOrComponentEnabled(Ljava/lang/String;IZZ)V
-PLcom/android/server/notification/ManagedServices;->setPackageOrComponentEnabled(Ljava/lang/String;IZZZ)V
-PLcom/android/server/notification/ManagedServices;->shouldReflectToSettings()Z
PLcom/android/server/notification/ManagedServices;->unbindFromServices(Landroid/util/SparseArray;)V
-PLcom/android/server/notification/ManagedServices;->unbindOtherUserServices(I)V
-PLcom/android/server/notification/ManagedServices;->unbindService(Landroid/content/ServiceConnection;Landroid/content/ComponentName;I)V
-PLcom/android/server/notification/ManagedServices;->unbindServicesImpl(IZ)V
-PLcom/android/server/notification/ManagedServices;->unregisterService(Landroid/content/ComponentName;I)V
-PLcom/android/server/notification/ManagedServices;->unregisterService(Landroid/os/IInterface;I)V
-PLcom/android/server/notification/ManagedServices;->unregisterServiceImpl(Landroid/os/IInterface;I)V
-PLcom/android/server/notification/ManagedServices;->unregisterServiceLocked(Landroid/content/ComponentName;I)V
HPLcom/android/server/notification/ManagedServices;->writeDefaults(Lcom/android/modules/utils/TypedXmlSerializer;)V
PLcom/android/server/notification/ManagedServices;->writeExtraAttributes(Lcom/android/modules/utils/TypedXmlSerializer;I)V
PLcom/android/server/notification/ManagedServices;->writeExtraXmlTags(Lcom/android/modules/utils/TypedXmlSerializer;)V
-HPLcom/android/server/notification/ManagedServices;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;ZI)V
+HPLcom/android/server/notification/ManagedServices;->writeXml(ILcom/android/modules/utils/TypedXmlSerializer;Z)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/ConditionProviders;,Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;,Lcom/android/server/notification/NotificationManagerService$NotificationListeners;
PLcom/android/server/notification/NotificationAdjustmentExtractor;-><init>()V
PLcom/android/server/notification/NotificationAdjustmentExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
-PLcom/android/server/notification/NotificationAdjustmentExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+HPLcom/android/server/notification/NotificationAdjustmentExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
PLcom/android/server/notification/NotificationAdjustmentExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
+PLcom/android/server/notification/NotificationAdjustmentExtractor;->setGroupHelper(Lcom/android/server/notification/GroupHelper;)V
PLcom/android/server/notification/NotificationAdjustmentExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
+PLcom/android/server/notification/NotificationAttentionHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/notification/NotificationAttentionHelper;I)V
+PLcom/android/server/notification/NotificationAttentionHelper$$ExternalSyntheticLambda0;->isExempted(Lcom/android/server/notification/NotificationRecord;)Z
PLcom/android/server/notification/NotificationAttentionHelper$1;-><init>(Lcom/android/server/notification/NotificationAttentionHelper;)V
PLcom/android/server/notification/NotificationAttentionHelper$3;-><init>(Lcom/android/server/notification/NotificationAttentionHelper;)V
HPLcom/android/server/notification/NotificationAttentionHelper$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;-><init>(IIII)V
-PLcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;->getChannelKey(Lcom/android/server/notification/NotificationRecord;)Ljava/lang/String;
-PLcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;->getLastNotificationUpdateTimeMs(Lcom/android/server/notification/NotificationRecord;)J
-PLcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;->getNextState(IJ)I
-PLcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;->getPolitenessState(Lcom/android/server/notification/NotificationRecord;)I
-PLcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;->setApplyCooldownPerPackage(Z)V
-PLcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;->shouldIgnoreNotification(Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/NotificationAttentionHelper$SettingsObserver;->-$$Nest$sfgetNOTIFICATION_COOLDOWN_ALL_URI()Landroid/net/Uri;
-PLcom/android/server/notification/NotificationAttentionHelper$SettingsObserver;->-$$Nest$sfgetNOTIFICATION_COOLDOWN_ENABLED_URI()Landroid/net/Uri;
-PLcom/android/server/notification/NotificationAttentionHelper$SettingsObserver;->-$$Nest$sfgetNOTIFICATION_COOLDOWN_VIBRATE_UNLOCKED_URI()Landroid/net/Uri;
-PLcom/android/server/notification/NotificationAttentionHelper$SettingsObserver;->-$$Nest$sfgetNOTIFICATION_LIGHT_PULSE_URI()Landroid/net/Uri;
+PLcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;-><init>(IIIILcom/android/server/notification/NotificationAttentionHelper$$ExternalSyntheticLambda0;)V
+HPLcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;->getChannelKey(Lcom/android/server/notification/NotificationRecord;)Ljava/lang/String;
+HPLcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;->getPolitenessState(Lcom/android/server/notification/NotificationRecord;)I
PLcom/android/server/notification/NotificationAttentionHelper$SettingsObserver;-><clinit>()V
PLcom/android/server/notification/NotificationAttentionHelper$SettingsObserver;-><init>(Lcom/android/server/notification/NotificationAttentionHelper;)V
-PLcom/android/server/notification/NotificationAttentionHelper$Signals;->-$$Nest$fgetlistenerHints(Lcom/android/server/notification/NotificationAttentionHelper$Signals;)I
-PLcom/android/server/notification/NotificationAttentionHelper$Signals;-><init>(ZI)V
-PLcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;-><init>(IIIIILcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;)V
+PLcom/android/server/notification/NotificationAttentionHelper$Signals;-><init>(IZ)V
+PLcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;-><init>(IIIIILcom/android/server/notification/NotificationAttentionHelper$StrategyPerApp;Lcom/android/server/notification/NotificationAttentionHelper$$ExternalSyntheticLambda0;)V
PLcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;->getChannelKey(Lcom/android/server/notification/NotificationRecord;)Ljava/lang/String;
-PLcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;->getLastNotificationUpdateTimeMs(Lcom/android/server/notification/NotificationRecord;)J
-PLcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;->isAvalancheActive()Z
-PLcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;->onNotificationPosted(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;->getPolitenessState(Lcom/android/server/notification/NotificationRecord;)I
+HPLcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;->isAvalancheActive()Z
+PLcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;->isAvalancheExempted(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;->isAvalancheExemptedFullVolume(Lcom/android/server/notification/NotificationRecord;)Z
PLcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;->setApplyCooldownPerPackage(Z)V
-PLcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;->setTriggerTimeMs(J)V
-PLcom/android/server/notification/NotificationAttentionHelper$StrategyPerApp;-><init>(IIIII)V
-PLcom/android/server/notification/NotificationAttentionHelper$StrategyPerApp;->onNotificationPosted(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationAttentionHelper;->-$$Nest$fgetmNotificationLight(Lcom/android/server/notification/NotificationAttentionHelper;)Lcom/android/server/lights/LogicalLight;
-PLcom/android/server/notification/NotificationAttentionHelper;->-$$Nest$fgetmStrategy(Lcom/android/server/notification/NotificationAttentionHelper;)Lcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;
-PLcom/android/server/notification/NotificationAttentionHelper;->-$$Nest$fputmUserPresent(Lcom/android/server/notification/NotificationAttentionHelper;Z)V
-PLcom/android/server/notification/NotificationAttentionHelper;->-$$Nest$mloadUserSettings(Lcom/android/server/notification/NotificationAttentionHelper;)V
+PLcom/android/server/notification/NotificationAttentionHelper$StrategyPerApp;-><init>(IIIIILcom/android/server/notification/NotificationAttentionHelper$$ExternalSyntheticLambda0;)V
PLcom/android/server/notification/NotificationAttentionHelper;-><clinit>()V
-PLcom/android/server/notification/NotificationAttentionHelper;-><init>(Landroid/content/Context;Lcom/android/server/lights/LightsManager;Landroid/view/accessibility/AccessibilityManager;Landroid/content/pm/PackageManager;Landroid/os/UserManager;Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationManagerPrivate;Lcom/android/server/notification/ZenModeHelper;Lcom/android/internal/config/sysui/SystemUiSystemPropertiesFlags$FlagResolver;)V
+PLcom/android/server/notification/NotificationAttentionHelper;-><init>(Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/lights/LightsManager;Landroid/view/accessibility/AccessibilityManager;Landroid/content/pm/PackageManager;Landroid/os/UserManager;Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationManagerService$1;Lcom/android/server/notification/ZenModeHelper;Lcom/android/internal/config/sysui/SystemUiSystemPropertiesFlags$FlagResolver;)V
HPLcom/android/server/notification/NotificationAttentionHelper;->buzzBeepBlinkLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationAttentionHelper$Signals;)I
-PLcom/android/server/notification/NotificationAttentionHelper;->canShowLightsLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationAttentionHelper$Signals;Z)Z
-PLcom/android/server/notification/NotificationAttentionHelper;->createPolitenessStrategy()Lcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;
-PLcom/android/server/notification/NotificationAttentionHelper;->disableNotificationEffects(Lcom/android/server/notification/NotificationRecord;I)Ljava/lang/String;
-PLcom/android/server/notification/NotificationAttentionHelper;->getManagedProfileId(I)I
-PLcom/android/server/notification/NotificationAttentionHelper;->getPoliteBit(Lcom/android/server/notification/NotificationRecord;)I
+PLcom/android/server/notification/NotificationAttentionHelper;->callStateToString(I)Ljava/lang/String;
+PLcom/android/server/notification/NotificationAttentionHelper;->clearEffectsLocked(Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationAttentionHelper;->dumpLocked(Ljava/io/PrintWriter;)V
PLcom/android/server/notification/NotificationAttentionHelper;->getPolitenessState(Lcom/android/server/notification/NotificationRecord;)I
PLcom/android/server/notification/NotificationAttentionHelper;->isNotificationForCurrentUser(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationAttentionHelper$Signals;)Z
-PLcom/android/server/notification/NotificationAttentionHelper;->isNotificationForWorkProfile(Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/NotificationAttentionHelper;->isPoliteNotificationFeatureEnabled(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationAttentionHelper;->isPoliteNotificationFeatureEnabled(Lcom/android/server/notification/NotificationRecord;)Z
PLcom/android/server/notification/NotificationAttentionHelper;->loadUserSettings()V
-PLcom/android/server/notification/NotificationAttentionHelper;->onSystemReady()V
-PLcom/android/server/notification/NotificationAttentionHelper;->registerBroadcastListeners()V
PLcom/android/server/notification/NotificationAttentionHelper;->sendAccessibilityEvent(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationAttentionHelper;->shouldMuteNotificationLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationAttentionHelper$Signals;)Z
-PLcom/android/server/notification/NotificationBitmapJobService;->getRunAfterMs()J
+PLcom/android/server/notification/NotificationAttentionHelper;->updateLightsLocked()V
+PLcom/android/server/notification/NotificationBackupHelper;-><clinit>()V
+PLcom/android/server/notification/NotificationBackupHelper;-><init>(I)V
+PLcom/android/server/notification/NotificationBackupHelper;->getBackupPayload(Ljava/lang/String;)[B
+PLcom/android/server/notification/NotificationBitmapJobService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/notification/NotificationBitmapJobService;Landroid/app/job/JobParameters;)V
+PLcom/android/server/notification/NotificationBitmapJobService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/notification/NotificationBitmapJobService;-><init>()V
+PLcom/android/server/notification/NotificationBitmapJobService;->attachBaseContext(Landroid/content/Context;)V
PLcom/android/server/notification/NotificationBitmapJobService;->getTimeUntilRemoval(Ljava/time/ZonedDateTime;Ljava/time/ZonedDateTime;Ljava/time/ZonedDateTime;)J
+PLcom/android/server/notification/NotificationBitmapJobService;->onStartJob(Landroid/app/job/JobParameters;)Z
+PLcom/android/server/notification/NotificationBitmapJobService;->onStopJob(Landroid/app/job/JobParameters;)Z
PLcom/android/server/notification/NotificationBitmapJobService;->scheduleJob(Landroid/content/Context;)V
PLcom/android/server/notification/NotificationChannelExtractor;-><init>()V
PLcom/android/server/notification/NotificationChannelExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
-PLcom/android/server/notification/NotificationChannelExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+HPLcom/android/server/notification/NotificationChannelExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
+PLcom/android/server/notification/NotificationChannelExtractor;->setCompatChangeLogger(Lcom/android/internal/compat/IPlatformCompat;)V
PLcom/android/server/notification/NotificationChannelExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
PLcom/android/server/notification/NotificationChannelExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
-PLcom/android/server/notification/NotificationChannelLogger$NotificationChannelEvent;->$values()[Lcom/android/server/notification/NotificationChannelLogger$NotificationChannelEvent;
PLcom/android/server/notification/NotificationChannelLogger$NotificationChannelEvent;-><clinit>()V
-PLcom/android/server/notification/NotificationChannelLogger$NotificationChannelEvent;-><init>(Ljava/lang/String;II)V
+PLcom/android/server/notification/NotificationChannelLogger$NotificationChannelEvent;-><init>(IILjava/lang/String;)V
PLcom/android/server/notification/NotificationChannelLogger$NotificationChannelEvent;->getId()I
-PLcom/android/server/notification/NotificationChannelLogger$NotificationChannelEvent;->getUpdated(Z)Lcom/android/server/notification/NotificationChannelLogger$NotificationChannelEvent;
-PLcom/android/server/notification/NotificationChannelLogger;->getConversationIdHash(Landroid/app/NotificationChannel;)I
-PLcom/android/server/notification/NotificationChannelLogger;->getIdHash(Landroid/app/NotificationChannel;)I
-HPLcom/android/server/notification/NotificationChannelLogger;->getLoggingImportance(Landroid/app/NotificationChannel;)I
-HPLcom/android/server/notification/NotificationChannelLogger;->getLoggingImportance(Landroid/app/NotificationChannel;I)I
+PLcom/android/server/notification/NotificationChannelLogger;->getLoggingImportance(Landroid/app/NotificationChannel;I)I
PLcom/android/server/notification/NotificationChannelLogger;->logNotificationChannelModified(Landroid/app/NotificationChannel;ILjava/lang/String;IZ)V
-PLcom/android/server/notification/NotificationChannelLoggerImpl;-><init>()V
-PLcom/android/server/notification/NotificationChannelLoggerImpl;->logNotificationChannel(Lcom/android/server/notification/NotificationChannelLogger$NotificationChannelEvent;Landroid/app/NotificationChannel;ILjava/lang/String;II)V
-PLcom/android/server/notification/NotificationComparator$1;-><init>(Lcom/android/server/notification/NotificationComparator;)V
-PLcom/android/server/notification/NotificationComparator;-><init>(Landroid/content/Context;)V
-PLcom/android/server/notification/NotificationComparator;->compare(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)I
-PLcom/android/server/notification/NotificationComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/notification/NotificationComparator;->isCallCategory(Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/NotificationComparator;->isCallStyle(Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/NotificationComparator;->isImportantColorized(Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/NotificationComparator;->isImportantMessaging(Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/NotificationComparator;->isImportantOngoing(Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/NotificationComparator;->isImportantPeople(Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/NotificationComparator;->isMediaNotification(Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/NotificationComparator;->isSystemMax(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationChannelLoggerImpl;->logNotificationChannel(Lcom/android/server/notification/NotificationChannelLogger$NotificationChannelEvent;Landroid/app/NotificationChannel;ILjava/lang/String;II)V
PLcom/android/server/notification/NotificationHistoryJobService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/notification/NotificationHistoryJobService;Landroid/app/job/JobParameters;)V
PLcom/android/server/notification/NotificationHistoryJobService$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/notification/NotificationHistoryJobService;->$r8$lambda$PfUuCVFQEsG_hup-ySw0DwJnttY(Lcom/android/server/notification/NotificationHistoryJobService;Landroid/app/job/JobParameters;)V
PLcom/android/server/notification/NotificationHistoryJobService;-><clinit>()V
PLcom/android/server/notification/NotificationHistoryJobService;-><init>()V
PLcom/android/server/notification/NotificationHistoryJobService;->attachBaseContext(Landroid/content/Context;)V
-PLcom/android/server/notification/NotificationHistoryJobService;->lambda$onStartJob$0(Landroid/app/job/JobParameters;)V
PLcom/android/server/notification/NotificationHistoryJobService;->onStartJob(Landroid/app/job/JobParameters;)Z
PLcom/android/server/notification/NotificationHistoryJobService;->scheduleJob(Landroid/content/Context;)V
PLcom/android/server/notification/NotificationHistoryManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/notification/NotificationHistoryManager;Landroid/app/NotificationHistory$HistoricalNotification;)V
PLcom/android/server/notification/NotificationHistoryManager$$ExternalSyntheticLambda0;->runOrThrow()V
-PLcom/android/server/notification/NotificationHistoryManager$SettingsObserver;-><init>(Lcom/android/server/notification/NotificationHistoryManager;Landroid/os/Handler;)V
-PLcom/android/server/notification/NotificationHistoryManager$SettingsObserver;->observe()V
+PLcom/android/server/notification/NotificationHistoryManager$SettingsObserver;-><init>(Lcom/android/server/notification/NotificationHistoryManager;Lcom/android/server/notification/NotificationManagerService$WorkerHandler;)V
PLcom/android/server/notification/NotificationHistoryManager$SettingsObserver;->update(Landroid/net/Uri;I)V
-PLcom/android/server/notification/NotificationHistoryManager;->$r8$lambda$h_Z1DxUiaHb-t4mnDIKe8ap8bgM(Lcom/android/server/notification/NotificationHistoryManager;Landroid/app/NotificationHistory$HistoricalNotification;)V
-PLcom/android/server/notification/NotificationHistoryManager;->-$$Nest$fgetmContext(Lcom/android/server/notification/NotificationHistoryManager;)Landroid/content/Context;
-PLcom/android/server/notification/NotificationHistoryManager;->-$$Nest$fgetmLock(Lcom/android/server/notification/NotificationHistoryManager;)Ljava/lang/Object;
-PLcom/android/server/notification/NotificationHistoryManager;->-$$Nest$fgetmUserManager(Lcom/android/server/notification/NotificationHistoryManager;)Landroid/os/UserManager;
PLcom/android/server/notification/NotificationHistoryManager;-><clinit>()V
-PLcom/android/server/notification/NotificationHistoryManager;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
-PLcom/android/server/notification/NotificationHistoryManager;->addNotification(Landroid/app/NotificationHistory$HistoricalNotification;)V
-PLcom/android/server/notification/NotificationHistoryManager;->cleanupHistoryFiles()V
+PLcom/android/server/notification/NotificationHistoryManager;-><init>(Landroid/content/Context;Lcom/android/server/notification/NotificationManagerService$WorkerHandler;)V
PLcom/android/server/notification/NotificationHistoryManager;->getUserHistoryAndInitializeIfNeededLocked(I)Lcom/android/server/notification/NotificationHistoryDatabase;
-PLcom/android/server/notification/NotificationHistoryManager;->lambda$addNotification$0(Landroid/app/NotificationHistory$HistoricalNotification;)V
-PLcom/android/server/notification/NotificationHistoryManager;->onBootPhaseAppsCanStart()V
-PLcom/android/server/notification/NotificationHistoryManager;->onHistoryEnabledChanged(IZ)V
PLcom/android/server/notification/NotificationHistoryManager;->onUserUnlocked(I)V
-PLcom/android/server/notification/NotificationIntrusivenessExtractor$1;-><init>(Lcom/android/server/notification/NotificationIntrusivenessExtractor;Ljava/lang/String;J)V
PLcom/android/server/notification/NotificationIntrusivenessExtractor$1;->applyChangesLocked(Lcom/android/server/notification/NotificationRecord;)V
PLcom/android/server/notification/NotificationIntrusivenessExtractor$1;->work()V
PLcom/android/server/notification/NotificationIntrusivenessExtractor;-><clinit>()V
PLcom/android/server/notification/NotificationIntrusivenessExtractor;-><init>()V
PLcom/android/server/notification/NotificationIntrusivenessExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
-PLcom/android/server/notification/NotificationIntrusivenessExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+HPLcom/android/server/notification/NotificationIntrusivenessExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
PLcom/android/server/notification/NotificationIntrusivenessExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
PLcom/android/server/notification/NotificationIntrusivenessExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
-PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
-PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda12;-><init>()V
-PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/notification/NotificationManagerService;Ljava/util/List;Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;)V
-PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda14;->run()V
-PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda2;->run()V
-PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/notification/NotificationManagerService;ZLandroid/app/Notification;ILjava/lang/String;I)V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;I)V
+HPLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda10;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda11;-><init>(ILjava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda11;->runOrThrow()V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda13;-><init>(I)V
+HPLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda16;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;I)V
+HPLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda16;->run()V+]Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;]Ljava/lang/Runnable;Lcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda16;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/SystemService$TargetUser;I)V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda4;-><init>(Ljava/lang/Object;)V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;I)V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda5;->run()V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda6;-><init>(ILjava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda6;->run()V
+HPLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/notification/NotificationManagerService;ZLandroid/app/Notification;ILjava/lang/String;I)V
PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda8;->run()V
-PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;I)V
-PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda9;->getOrThrow()Ljava/lang/Object;
-PLcom/android/server/notification/NotificationManagerService$10;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$11;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$12$$ExternalSyntheticLambda0;-><init>(I)V
-PLcom/android/server/notification/NotificationManagerService$12$$ExternalSyntheticLambda0;->getOrThrow()Ljava/lang/Object;
PLcom/android/server/notification/NotificationManagerService$12$1;-><init>(Lcom/android/server/notification/NotificationManagerService$12;Ljava/lang/String;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;[Landroid/service/notification/Condition;)V
PLcom/android/server/notification/NotificationManagerService$12$1;->run()V
-PLcom/android/server/notification/NotificationManagerService$12;->$r8$lambda$9e1Zv0Eb_mTwUeFMV5TGSei42ck(I)Ljava/lang/Boolean;
PLcom/android/server/notification/NotificationManagerService$12;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
PLcom/android/server/notification/NotificationManagerService$12;->addToListIfNeeded(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/util/ArrayList;I)V
-HPLcom/android/server/notification/NotificationManagerService$12;->applyEnqueuedAdjustmentFromAssistant(Landroid/service/notification/INotificationListener;Landroid/service/notification/Adjustment;)V
-PLcom/android/server/notification/NotificationManagerService$12;->canManageGlobalZenPolicy(Ljava/lang/String;I)Z
+PLcom/android/server/notification/NotificationManagerService$12;->areNotificationsEnabled(Ljava/lang/String;)Z
+PLcom/android/server/notification/NotificationManagerService$12;->areNotificationsEnabledForPackage(Ljava/lang/String;I)Z
HPLcom/android/server/notification/NotificationManagerService$12;->canNotifyAsPackage(Ljava/lang/String;Ljava/lang/String;I)Z
+PLcom/android/server/notification/NotificationManagerService$12;->cancelAllNotifications(Ljava/lang/String;I)V
HPLcom/android/server/notification/NotificationManagerService$12;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V
-PLcom/android/server/notification/NotificationManagerService$12;->checkPolicyAccess(Ljava/lang/String;)Z
+PLcom/android/server/notification/NotificationManagerService$12;->cancelToast(Ljava/lang/String;Landroid/os/IBinder;)V
PLcom/android/server/notification/NotificationManagerService$12;->computeZenOrigin(Z)I
-PLcom/android/server/notification/NotificationManagerService$12;->createNotificationChannelGroups(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
+HPLcom/android/server/notification/NotificationManagerService$12;->createNotificationChannelGroups(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
HPLcom/android/server/notification/NotificationManagerService$12;->createNotificationChannels(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
HPLcom/android/server/notification/NotificationManagerService$12;->createNotificationChannelsImpl(Ljava/lang/String;ILandroid/content/pm/ParceledListSlice;I)V
HPLcom/android/server/notification/NotificationManagerService$12;->deleteNotificationChannel(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService$12;->enforceDeletingChannelHasNoFgService(Ljava/lang/String;ILjava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService$12;->enforceDeletingChannelHasNoUserInitiatedJob(Ljava/lang/String;ILjava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService$12;->enforcePolicyAccess(Ljava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/notification/NotificationManagerService$12;->enforceSystemOrSystemUI(Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService$12;->enforceUserOriginOnlyFromSystem(ZLjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$12;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$12;->enforceDeletingChannelHasNoFgService(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$12;->enforceDeletingChannelHasNoUserInitiatedJob(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$12;->enforcePolicyAccess(ILjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$12;->enforceSystemOrSystemUI(Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$12;->enforceSystemOrSystemUIOrSamePackage(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$12;->enforceUserOriginOnlyFromSystem(Ljava/lang/String;Z)V
+PLcom/android/server/notification/NotificationManagerService$12;->enqueueNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/app/Notification;I)V
+PLcom/android/server/notification/NotificationManagerService$12;->enqueueTextToast(Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/CharSequence;IZILandroid/app/ITransientNotificationCallback;)Z
+PLcom/android/server/notification/NotificationManagerService$12;->enqueueToast(Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/CharSequence;Landroid/app/ITransientNotification;IZILandroid/app/ITransientNotificationCallback;)Z
+PLcom/android/server/notification/NotificationManagerService$12;->finishToken(Ljava/lang/String;Landroid/os/IBinder;)V
PLcom/android/server/notification/NotificationManagerService$12;->getActiveNotificationsFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/notification/NotificationManagerService$12;->getActiveNotificationsWithAttribution(Ljava/lang/String;Ljava/lang/String;)[Landroid/service/notification/StatusBarNotification;
HPLcom/android/server/notification/NotificationManagerService$12;->getAppActiveNotifications(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/notification/NotificationManagerService$12;->getConversationNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Landroid/app/NotificationChannel;
+PLcom/android/server/notification/NotificationManagerService$12;->getAutomaticZenRules()Ljava/util/Map;
+PLcom/android/server/notification/NotificationManagerService$12;->getBackupPayload(I)[B
+PLcom/android/server/notification/NotificationManagerService$12;->getBubblePreferenceForPackage(Ljava/lang/String;I)I
+PLcom/android/server/notification/NotificationManagerService$12;->getCallingZenUser()Landroid/os/UserHandle;
+PLcom/android/server/notification/NotificationManagerService$12;->getConsolidatedNotificationPolicy()Landroid/app/NotificationManager$Policy;
+HPLcom/android/server/notification/NotificationManagerService$12;->getConversationNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Landroid/app/NotificationChannel;
PLcom/android/server/notification/NotificationManagerService$12;->getHintsFromListener(Landroid/service/notification/INotificationListener;)I
PLcom/android/server/notification/NotificationManagerService$12;->getInterruptionFilterFromListener(Landroid/service/notification/INotificationListener;)I
PLcom/android/server/notification/NotificationManagerService$12;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannel;
+PLcom/android/server/notification/NotificationManagerService$12;->getNotificationChannelGroup(Ljava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannelGroup;
+PLcom/android/server/notification/NotificationManagerService$12;->getNotificationChannelGroups(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;
PLcom/android/server/notification/NotificationManagerService$12;->getNotificationChannels(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/notification/NotificationManagerService$12;->getNotificationPolicy(Ljava/lang/String;)Landroid/app/NotificationManager$Policy;
-HPLcom/android/server/notification/NotificationManagerService$12;->getZenMode()I
-PLcom/android/server/notification/NotificationManagerService$12;->lambda$canManageGlobalZenPolicy$3(I)Ljava/lang/Boolean;
+PLcom/android/server/notification/NotificationManagerService$12;->getNotificationDelegate(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/notification/NotificationManagerService$12;->getZenMode()I
+PLcom/android/server/notification/NotificationManagerService$12;->getZenModeConfig()Landroid/service/notification/ZenModeConfig;
+PLcom/android/server/notification/NotificationManagerService$12;->isImportanceLocked(Ljava/lang/String;I)Z
+PLcom/android/server/notification/NotificationManagerService$12;->isPackagePaused(Ljava/lang/String;)Z
+PLcom/android/server/notification/NotificationManagerService$12;->matchesCallFilter(Landroid/os/Bundle;)Z
PLcom/android/server/notification/NotificationManagerService$12;->notifyConditions(Ljava/lang/String;Landroid/service/notification/IConditionProvider;[Landroid/service/notification/Condition;)V
PLcom/android/server/notification/NotificationManagerService$12;->registerListener(Landroid/service/notification/INotificationListener;Landroid/content/ComponentName;I)V
PLcom/android/server/notification/NotificationManagerService$12;->requestHintsFromListener(Landroid/service/notification/INotificationListener;I)V
-HPLcom/android/server/notification/NotificationManagerService$12;->sanitizeSbn(Ljava/lang/String;ILandroid/service/notification/StatusBarNotification;)Landroid/service/notification/StatusBarNotification;
-HPLcom/android/server/notification/NotificationManagerService$12;->setNotificationPolicy(Ljava/lang/String;Landroid/app/NotificationManager$Policy;Z)V
-HPLcom/android/server/notification/NotificationManagerService$12;->setNotificationsEnabledForPackage(Ljava/lang/String;IZ)V
+PLcom/android/server/notification/NotificationManagerService$12;->sanitizeSbn(Ljava/lang/String;ILandroid/service/notification/StatusBarNotification;)Landroid/service/notification/StatusBarNotification;
+PLcom/android/server/notification/NotificationManagerService$12;->setAutomaticZenRuleState(Ljava/lang/String;Landroid/service/notification/Condition;)V
+PLcom/android/server/notification/NotificationManagerService$12;->setNotificationDelegate(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$12;->setNotificationsEnabledForPackage(Ljava/lang/String;IZ)V
+PLcom/android/server/notification/NotificationManagerService$13$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/notification/NotificationManagerService$13;Ljava/lang/String;III)V
+PLcom/android/server/notification/NotificationManagerService$13$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/notification/NotificationManagerService$13;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
HPLcom/android/server/notification/NotificationManagerService$13;->areNotificationsEnabledForPackage(Ljava/lang/String;I)Z
+PLcom/android/server/notification/NotificationManagerService$13;->cancelNotification(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;II)V
PLcom/android/server/notification/NotificationManagerService$13;->cleanupHistoryFiles()V
PLcom/android/server/notification/NotificationManagerService$13;->enqueueNotification(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;IZ)V
PLcom/android/server/notification/NotificationManagerService$13;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;)Landroid/app/NotificationChannel;
-PLcom/android/server/notification/NotificationManagerService$14;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$17$$ExternalSyntheticLambda0;-><init>(II)V
-PLcom/android/server/notification/NotificationManagerService$17$$ExternalSyntheticLambda0;->apply(I)Z
-PLcom/android/server/notification/NotificationManagerService$17;->$r8$lambda$7xcXDOw4oRqp0sGOkb6DeyNjqYA(III)Z
-HPLcom/android/server/notification/NotificationManagerService$17;-><init>(Lcom/android/server/notification/NotificationManagerService;IILjava/lang/String;IIIILjava/lang/String;J)V
-PLcom/android/server/notification/NotificationManagerService$17;->lambda$run$0(III)Z
-HPLcom/android/server/notification/NotificationManagerService$17;->run()V
+PLcom/android/server/notification/NotificationManagerService$13;->getNumNotificationChannelsForPackage(Ljava/lang/String;IZ)I
+PLcom/android/server/notification/NotificationManagerService$13;->onConversationRemoved(Ljava/lang/String;ILjava/util/Set;)V
+PLcom/android/server/notification/NotificationManagerService$13;->removeBitmaps()V
+PLcom/android/server/notification/NotificationManagerService$13;->removeFlagFromNotificationLocked(IIILjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$13;->removeForegroundServiceFlagFromNotification(Ljava/lang/String;II)V
+PLcom/android/server/notification/NotificationManagerService$13;->setDeviceEffectsApplier(Landroid/service/notification/DeviceEffectsApplier;)V
+PLcom/android/server/notification/NotificationManagerService$16$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/notification/NotificationManagerService$16$$ExternalSyntheticLambda0;->apply(I)Z
+HPLcom/android/server/notification/NotificationManagerService$16;-><init>(Lcom/android/server/notification/NotificationManagerService;IILjava/lang/String;IIILjava/lang/String;J)V
+HPLcom/android/server/notification/NotificationManagerService$16;->run()V
PLcom/android/server/notification/NotificationManagerService$1;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$2;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$3;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$4;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$5;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/notification/NotificationManagerService$6;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$6;->isProfileUnavailable(Ljava/lang/String;)Z
-PLcom/android/server/notification/NotificationManagerService$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/notification/NotificationManagerService$7;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$7;->onConfigChanged()V
+PLcom/android/server/notification/NotificationManagerService$1;->addAutoGroup(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$1;->addAutoGroupSummary(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;ILcom/android/server/notification/GroupHelper$NotificationAttributes;)V
+PLcom/android/server/notification/NotificationManagerService$1;->isActivityStartAllowed(ILjava/lang/String;Ljava/util/Collection;)Z
+PLcom/android/server/notification/NotificationManagerService$1;->onNotificationClear(IILjava/lang/String;ILjava/lang/String;IILcom/android/internal/statusbar/NotificationVisibility;)V
+PLcom/android/server/notification/NotificationManagerService$1;->removeAutoGroupSummary(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$1;->updateAutogroupSummary(ILjava/lang/String;Ljava/lang/String;Lcom/android/server/notification/GroupHelper$NotificationAttributes;)V
+PLcom/android/server/notification/NotificationManagerService$3;-><init>(Lcom/android/server/notification/NotificationManagerService;I)V
+HPLcom/android/server/notification/NotificationManagerService$3;->onReceive$com$android$server$notification$NotificationManagerService$6(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/notification/NotificationManagerService$3;->onReceive$com$android$server$notification$NotificationManagerService$7(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/notification/NotificationManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/notification/NotificationManagerService$8$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/notification/NotificationManagerService$8;Landroid/app/NotificationManager$Policy;I)V
+PLcom/android/server/notification/NotificationManagerService$8$$ExternalSyntheticLambda0;->runOrThrow()V
+PLcom/android/server/notification/NotificationManagerService$8$$ExternalSyntheticLambda3;-><init>(ILjava/lang/Object;)V
+HPLcom/android/server/notification/NotificationManagerService$8$$ExternalSyntheticLambda3;->runOrThrow()V
PLcom/android/server/notification/NotificationManagerService$8;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$8;->onConfigChanged()V
+PLcom/android/server/notification/NotificationManagerService$8;->onConsolidatedPolicyChanged(Landroid/app/NotificationManager$Policy;)V
+PLcom/android/server/notification/NotificationManagerService$8;->onPolicyChanged(Landroid/app/NotificationManager$Policy;)V
+PLcom/android/server/notification/NotificationManagerService$9$$ExternalSyntheticLambda0;-><init>(Ljava/lang/Object;Ljava/lang/Object;II)V
+PLcom/android/server/notification/NotificationManagerService$9$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/notification/NotificationManagerService$9;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$9;->onOpChanged(Ljava/lang/String;Ljava/lang/String;I)V
PLcom/android/server/notification/NotificationManagerService$Archive;-><init>(I)V
-PLcom/android/server/notification/NotificationManagerService$Archive;->updateHistoryEnabled(IZ)V
+PLcom/android/server/notification/NotificationManagerService$Archive;->dumpImpl(Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+PLcom/android/server/notification/NotificationManagerService$Archive;->toString()Ljava/lang/String;
HPLcom/android/server/notification/NotificationManagerService$CancelNotificationRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;IILjava/lang/String;Ljava/lang/String;IIIZIIIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;J)V
HPLcom/android/server/notification/NotificationManagerService$CancelNotificationRunnable;->run()V
-PLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;ILcom/android/server/notification/NotificationRecord;ZLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;)V
+PLcom/android/server/notification/NotificationManagerService$DumpFilter;->matches(Landroid/content/ComponentName;)Z
+PLcom/android/server/notification/NotificationManagerService$DumpFilter;->matches(Ljava/lang/String;)Z
+HPLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;ILcom/android/server/notification/NotificationRecord;ZZLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;)V
HPLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;->enqueueNotification()Z
PLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;->run()V
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->-$$Nest$monNotificationEnqueuedLocked(Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/NotificationRecord;)V
PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/notification/ManagedServices$UserProfiles;Landroid/content/pm/IPackageManager;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->addApprovedList(Ljava/lang/String;IZLjava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->asInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->ensureFilters(Landroid/content/pm/ServiceInfo;I)V
HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->getConfig()Lcom/android/server/notification/ManagedServices$Config;
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->getRequiredPermission()Ljava/lang/String;
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->hasUserSet(I)Z
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->isEnabled()Z
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->isVerboseLogEnabled()Z
-HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onNotificationEnqueuedLocked(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onServiceAdded(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onServiceRemovedLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onUserUnlocked(I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->readExtraTag(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)V
PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->resetDefaultAssistantsIfNecessary()V
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->setPackageOrComponentEnabled(Ljava/lang/String;IZZZ)V
-HPLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda2;->run()V
-HPLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V
-HPLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda4;->run()V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/NotificationRankingUpdate;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda8;->run()V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda9;->run()V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->$r8$lambda$0iWeY82Ox6K-WVRWLCpMEXmz-hA(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->$r8$lambda$6V9RGqXihQs6v7F21expZx6F_zc(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->$r8$lambda$OSrMhYvlV-R3E77qIoH5pzE972U(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/NotificationRankingUpdate;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->$r8$lambda$VmcY63y9deVrzSb6PhmE8Uor26s(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/notification/ManagedServices$UserProfiles;Landroid/content/pm/IPackageManager;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->writeExtraXmlTags(Lcom/android/modules/utils/TypedXmlSerializer;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;Landroid/service/notification/NotificationStats;I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda5;->run()V+]Landroid/service/notification/INotificationListener;Landroid/service/notification/INotificationListener$Stub$Proxy;,Landroid/service/notification/NotificationListenerService$NotificationListenerWrapper;
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda6;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;II)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda7;->run()V
PLcom/android/server/notification/NotificationManagerService$NotificationListeners;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/notification/ManagedServices$UserProfiles;Landroid/content/pm/IPackageManager;Z)V
PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->asInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->checkType(Landroid/os/IInterface;)Z
-HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->ensureFilters(Landroid/content/pm/ServiceInfo;I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->ensureFilters(Landroid/content/pm/ServiceInfo;I)V
PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getBindFlags()I
HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getConfig()Lcom/android/server/notification/ManagedServices$Config;
HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getNotificationListenerFilter(Landroid/util/Pair;)Landroid/service/notification/NotificationListenerFilter;
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getOnNotificationPostedTrim(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)I
PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getRequiredPermission()Ljava/lang/String;
PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getTypesFromStringList(Ljava/lang/String;)I
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->hasSensitiveContent(Lcom/android/server/notification/NotificationRecord;)Z
-HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->isAppTrustedNotificationListenerService(ILjava/lang/String;)Z
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->isListenerPackage(Ljava/lang/String;)Z
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->hasAllowedListener(ILjava/lang/String;)Z
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->hasSensitiveContent(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->isAppTrustedNotificationListenerService(ILjava/lang/String;)Z
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->isListenerPackage(Ljava/lang/String;)Z+]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->isUidTrusted(I)Z
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->lambda$notifyListenerHintsChangedLocked$7(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->lambda$notifyNotificationChannelGroupChanged$10(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->lambda$notifyRankingUpdateLocked$6(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/NotificationRankingUpdate;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->lambda$prepareNotifyPostedLocked$3(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyListenerHintsChanged(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyListenerHintsChangedLocked(I)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelChanged(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelGroupChanged(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V
-HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelGroupChanged(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V
-HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyPosted(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyRankingUpdate(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/NotificationRankingUpdate;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelChanged(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelGroupChanged(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V+]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyPosted(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V+]Landroid/service/notification/INotificationListener;Landroid/service/notification/INotificationListener$Stub$Proxy;,Landroid/service/notification/NotificationListenerService$NotificationListenerWrapper;
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyPostedLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyPostedLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Z)V
PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyRankingUpdateLocked(Ljava/util/List;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyRemoved(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;Landroid/service/notification/NotificationStats;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyRemovedLocked(Lcom/android/server/notification/NotificationRecord;ILandroid/service/notification/NotificationStats;)V
PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->onPackagesChanged(Z[Ljava/lang/String;[I)V
-HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->onServiceAdded(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->onServiceAdded(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->onServiceRemovedLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
-HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->prepareNotifyPostedLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Z)Ljava/util/List;
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->readExtraTag(Ljava/lang/String;Lcom/android/modules/utils/TypedXmlPullParser;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->shouldReflectToSettings()Z
-HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->updateUriPermissionsForActiveNotificationsLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Z)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->prepareNotifyPostedLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Z)Ljava/util/List;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->readExtraTag(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->updateUriPermissionsForActiveNotificationsLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Z)V
HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->writeExtraXmlTags(Lcom/android/modules/utils/TypedXmlSerializer;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationTrampolineCallback;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationTrampolineCallback;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService$NotificationTrampolineCallback-IA;)V
-PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;Landroid/service/notification/StatusBarNotification;)V
-PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->$r8$lambda$PZAL6WwFJkUEKBKj8Ma3rhxMHGQ(Lcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;Landroid/service/notification/StatusBarNotification;)V
-PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;Ljava/lang/String;ILcom/android/server/notification/NotificationManagerService$PostNotificationTracker;)V
-PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->lambda$postNotification$0(Landroid/service/notification/StatusBarNotification;)V
+HPLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;Ljava/lang/String;ILcom/android/server/notification/NotificationManagerService$PostNotificationTracker;)V
HPLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->postNotification()Z
PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->run()V
-PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;)V
-PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker$$ExternalSyntheticLambda0;->runOrThrow()V
-PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;)V
-PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker$$ExternalSyntheticLambda1;->runOrThrow()V
-PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;->$r8$lambda$Sj35ThxKAaMQVMJuJW7BiRrLEAE(Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;)V
-PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;->$r8$lambda$utPF6Nzeh5_1soUTRhYEbXDXUko(Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;)V
-PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;-><init>(Landroid/os/PowerManager$WakeLock;)V
+HPLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;-><init>(Landroid/os/PowerManager$WakeLock;)V
PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;->cancel()V
-PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;->finish()J
-PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;->getStartTime()J
PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;->isOngoing()Z
-PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;->lambda$cancel$0()V
-PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;->lambda$finish$1()V
-PLcom/android/server/notification/NotificationManagerService$PostNotificationTrackerFactory;->newTracker(Landroid/os/PowerManager$WakeLock;)Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;
PLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Looper;)V
-PLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->requestReconsideration(Lcom/android/server/notification/RankingReconsideration;)V
+HPLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->handleMessage(Landroid/os/Message;)V+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/app/NotificationManager$Policy;Landroid/app/NotificationManager$Policy;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/RankingReconsideration;Lcom/android/server/notification/NotificationIntrusivenessExtractor$1;,Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->requestSort()V
PLcom/android/server/notification/NotificationManagerService$RoleObserver;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/content/Context;Landroid/app/role/RoleManager;Landroid/content/pm/IPackageManager;Landroid/os/Looper;)V
-PLcom/android/server/notification/NotificationManagerService$RoleObserver;->getUidForPackage(Ljava/lang/String;I)I
-HPLcom/android/server/notification/NotificationManagerService$RoleObserver;->init()V
+PLcom/android/server/notification/NotificationManagerService$RoleObserver;->getUidForPackage(ILjava/lang/String;)I
+PLcom/android/server/notification/NotificationManagerService$RoleObserver;->onRoleHoldersChanged(Ljava/lang/String;Landroid/os/UserHandle;)V
PLcom/android/server/notification/NotificationManagerService$RoleObserver;->updateTrampolineExemptUidsForUsers([Landroid/os/UserHandle;)V
PLcom/android/server/notification/NotificationManagerService$SavePolicyFileRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$SavePolicyFileRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService$SavePolicyFileRunnable-IA;)V
HPLcom/android/server/notification/NotificationManagerService$SavePolicyFileRunnable;->run()V
PLcom/android/server/notification/NotificationManagerService$SettingsObserver;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Handler;)V
-PLcom/android/server/notification/NotificationManagerService$SettingsObserver;->observe()V
-HPLcom/android/server/notification/NotificationManagerService$SettingsObserver;->update(Landroid/net/Uri;)V
+PLcom/android/server/notification/NotificationManagerService$SettingsObserver;->update(Landroid/net/Uri;)V
PLcom/android/server/notification/NotificationManagerService$SettingsObserver;->update(Landroid/net/Uri;I)V
PLcom/android/server/notification/NotificationManagerService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService$StatsPullAtomCallbackImpl-IA;)V
-PLcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;-><init>(Landroid/service/notification/StatusBarNotification;)V
-PLcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;->get()Landroid/service/notification/StatusBarNotification;
PLcom/android/server/notification/NotificationManagerService$StrongAuthTracker;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/content/Context;)V
-PLcom/android/server/notification/NotificationManagerService$StrongAuthTracker;->containsFlag(II)Z
-PLcom/android/server/notification/NotificationManagerService$StrongAuthTracker;->isInLockDownMode(I)Z
PLcom/android/server/notification/NotificationManagerService$StrongAuthTracker;->onStrongAuthRequiredChanged(I)V
-PLcom/android/server/notification/NotificationManagerService$TrimCache;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;)V
-HPLcom/android/server/notification/NotificationManagerService$TrimCache;->ForListener(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/StatusBarNotification;
PLcom/android/server/notification/NotificationManagerService$WorkerHandler;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Looper;)V
-PLcom/android/server/notification/NotificationManagerService$WorkerHandler;->handleMessage(Landroid/os/Message;)V
-HPLcom/android/server/notification/NotificationManagerService$WorkerHandler;->scheduleCancelNotification(Lcom/android/server/notification/NotificationManagerService$CancelNotificationRunnable;)V
-PLcom/android/server/notification/NotificationManagerService$WorkerHandler;->scheduleOnPackageChanged(ZI[Ljava/lang/String;[I)V
-PLcom/android/server/notification/NotificationManagerService$WorkerHandler;->scheduleSendRankingUpdate()V
-PLcom/android/server/notification/NotificationManagerService;->$r8$lambda$KSVXNwYpWbJWXlirKt8w96U7ekE(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;I)Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;
-PLcom/android/server/notification/NotificationManagerService;->$r8$lambda$PUVk3ua6QO93dcxSaJqKaWqdiZ8(Lcom/android/server/notification/NotificationManagerService;ZLandroid/app/Notification;ILjava/lang/String;I)V
-PLcom/android/server/notification/NotificationManagerService;->$r8$lambda$bR17TwoBJJHHkkEdLkhQoDbOUCY(Lcom/android/server/notification/NotificationManagerService;Ljava/util/List;Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;)V
-PLcom/android/server/notification/NotificationManagerService;->$r8$lambda$o10mSbBYEzv2ExOhfnJTDZ0y_3k(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmAmi(Lcom/android/server/notification/NotificationManagerService;)Landroid/app/ActivityManagerInternal;
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmArchive(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$Archive;
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmAtm(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/wm/ActivityTaskManagerInternal;
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmConditionProviders(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ConditionProviders;
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmGroupHelper(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/GroupHelper;
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmHistoryManager(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationHistoryManager;
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmInterruptionFilter(Lcom/android/server/notification/NotificationManagerService;)I
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmListenerHints(Lcom/android/server/notification/NotificationManagerService;)I
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmListeners(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$NotificationListeners;
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmMaxPackageEnqueueRate(Lcom/android/server/notification/NotificationManagerService;)F
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmNotificationInstanceIdSequence(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/internal/logging/InstanceIdSequence;
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmNotificationRecordLogger(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationRecordLogger;
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmPackageManagerClient(Lcom/android/server/notification/NotificationManagerService;)Landroid/content/pm/PackageManager;
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmPermissionHelper(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/PermissionHelper;
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmPolicyFile(Lcom/android/server/notification/NotificationManagerService;)Landroid/util/AtomicFile;
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmSettingsObserver(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$SettingsObserver;
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmShortcutHelper(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ShortcutHelper;
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmUm(Lcom/android/server/notification/NotificationManagerService;)Landroid/os/UserManager;
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmUsageStats(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationUsageStats;
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmUsageStatsManagerInternal(Lcom/android/server/notification/NotificationManagerService;)Landroid/app/usage/UsageStatsManagerInternal;
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmUserProfiles(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ManagedServices$UserProfiles;
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fputmMaxPackageEnqueueRate(Lcom/android/server/notification/NotificationManagerService;F)V
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$maddDisabledHints(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mapplyAdjustment(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Landroid/service/notification/Adjustment;)V
-HPLcom/android/server/notification/NotificationManagerService;->-$$Nest$mareNotificationsEnabledForPackageInt(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;I)Z
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mcancelAllNotificationsByListLocked(Lcom/android/server/notification/NotificationManagerService;Ljava/util/ArrayList;Ljava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;ZJ)V
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mcheckCallerIsSameApp(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mcheckCallerIsSystem(Lcom/android/server/notification/NotificationManagerService;)V
-HPLcom/android/server/notification/NotificationManagerService;->-$$Nest$mcheckCallerIsSystemOrSameApp(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mhandleGroupedNotificationLocked(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;II)V
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mhandleListenerHintsChanged(Lcom/android/server/notification/NotificationManagerService;I)V
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mhandleRankingReconsideration(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Message;)V
+HPLcom/android/server/notification/NotificationManagerService$WorkerHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/notification/NotificationManagerService$WorkerHandler;->scheduleCancelNotification(Lcom/android/server/notification/NotificationManagerService$CancelNotificationRunnable;I)V
+HPLcom/android/server/notification/NotificationManagerService;->-$$Nest$mcancelAllNotificationsByListLocked(Lcom/android/server/notification/NotificationManagerService;Ljava/util/ArrayList;Ljava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;ZJ)V+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationManagerService$FlagChecker;Lcom/android/server/notification/NotificationManagerService$16$$ExternalSyntheticLambda0;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mcheckCallerIsSystemOrSameApp(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mhandleDurationReached(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/toast/ToastRecord;)V
+HPLcom/android/server/notification/NotificationManagerService;->-$$Nest$mhandleGroupedNotificationLocked(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;II)V
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mhandleKillTokenTimeout(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/toast/ToastRecord;)V
+HPLcom/android/server/notification/NotificationManagerService;->-$$Nest$mhandleListenerHintsChanged(Lcom/android/server/notification/NotificationManagerService;I)V
PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mhandleSendRankingUpdate(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mhasAutoGroupSummaryLocked(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;)Z
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$misCallNotification(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;I)Z
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$misCritical(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mnotifyListenersPostedAndLogLocked(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;)V
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mremoveDisabledHints(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mupdateEffectsSuppressorLocked(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mupdateListenerHintsLocked(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mupdateNotificationBubbleFlags(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Z)V
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mwritePolicyXml(Lcom/android/server/notification/NotificationManagerService;Ljava/io/OutputStream;ZI)V
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$sfgetMY_PID()I
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$sfgetMY_UID()I
-PLcom/android/server/notification/NotificationManagerService;->-$$Nest$smfindNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;)Lcom/android/server/notification/NotificationRecord;
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mhasAutoGroupSummaryLocked(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$misCallerSystemOrSystemUiOrShell(Lcom/android/server/notification/NotificationManagerService;)Z
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mmaybeNotifySystemUiListenerLifetimeExtendedListLocked(Lcom/android/server/notification/NotificationManagerService;Ljava/util/List;I)V
+HPLcom/android/server/notification/NotificationManagerService;->-$$Nest$mnotifyListenersPostedAndLogLocked(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;)V
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mremoveBitmapAndRepost(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mremoveFromNotificationListsLocked(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationManagerService;->-$$Nest$mupdateEffectsSuppressorLocked(Lcom/android/server/notification/NotificationManagerService;)V
+HPLcom/android/server/notification/NotificationManagerService;->-$$Nest$mupdateListenerHintsLocked(Lcom/android/server/notification/NotificationManagerService;)V
PLcom/android/server/notification/NotificationManagerService;-><clinit>()V
PLcom/android/server/notification/NotificationManagerService;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/notification/NotificationManagerService;-><init>(Landroid/content/Context;Lcom/android/server/notification/NotificationRecordLogger;Lcom/android/internal/logging/InstanceIdSequence;)V
-PLcom/android/server/notification/NotificationManagerService;->acquireWakeLockForPost(Ljava/lang/String;I)Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;
+PLcom/android/server/notification/NotificationManagerService;-><init>(Landroid/content/Context;Lcom/android/server/notification/NotificationRecordLogger;Lcom/android/internal/logging/InstanceIdSequence;)V
+PLcom/android/server/notification/NotificationManagerService;->addAutoGroupAdjustment(Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->addAutogroupKeyLocked(Ljava/lang/String;Ljava/lang/String;Z)V
PLcom/android/server/notification/NotificationManagerService;->addDisabledHint(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
-PLcom/android/server/notification/NotificationManagerService;->addDisabledHints(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
-PLcom/android/server/notification/NotificationManagerService;->allowAssistant(ILandroid/content/ComponentName;)Z
-PLcom/android/server/notification/NotificationManagerService;->applyAdjustment(Lcom/android/server/notification/NotificationRecord;Landroid/service/notification/Adjustment;)V
-PLcom/android/server/notification/NotificationManagerService;->applyZenModeLocked(Lcom/android/server/notification/NotificationRecord;)V
-HPLcom/android/server/notification/NotificationManagerService;->areNotificationsEnabledForPackageInt(Ljava/lang/String;I)Z
PLcom/android/server/notification/NotificationManagerService;->calculateHints()I
-PLcom/android/server/notification/NotificationManagerService;->calculateSuppressedEffects()J
-PLcom/android/server/notification/NotificationManagerService;->calculateSuppressedVisualEffects(Landroid/app/NotificationManager$Policy;Landroid/app/NotificationManager$Policy;I)I
PLcom/android/server/notification/NotificationManagerService;->canUseManagedServices(Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/String;)Z
-HPLcom/android/server/notification/NotificationManagerService;->cancelAllNotificationsByListLocked(Ljava/util/ArrayList;Ljava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;ZJ)V
-HPLcom/android/server/notification/NotificationManagerService;->cancelAllNotificationsInt(IILjava/lang/String;Ljava/lang/String;IIII)V
+HPLcom/android/server/notification/NotificationManagerService;->cancelAllNotificationsInt(IIILjava/lang/String;Ljava/lang/String;II)V
+PLcom/android/server/notification/NotificationManagerService;->cancelGroupChildrenByListLocked(Ljava/util/ArrayList;ILjava/lang/String;IILjava/lang/String;ZZLcom/android/server/notification/NotificationManagerService$FlagChecker;Lcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda13;Ljava/lang/String;IJ)V
+PLcom/android/server/notification/NotificationManagerService;->cancelGroupChildrenLocked(ILjava/lang/String;IILjava/lang/String;ZLcom/android/server/notification/NotificationManagerService$FlagChecker;Lcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda13;Ljava/lang/String;IJ)V
HPLcom/android/server/notification/NotificationManagerService;->cancelNotification(IILjava/lang/String;Ljava/lang/String;IIIZIIIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
-PLcom/android/server/notification/NotificationManagerService;->cancelNotification(IILjava/lang/String;Ljava/lang/String;IIIZIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+PLcom/android/server/notification/NotificationManagerService;->cancelNotification(IILjava/lang/String;Ljava/lang/String;IIZIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
HPLcom/android/server/notification/NotificationManagerService;->cancelNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;III)V
+HPLcom/android/server/notification/NotificationManagerService;->cancelNotificationLocked(Lcom/android/server/notification/NotificationRecord;ZIIIZLjava/lang/String;J)V
+PLcom/android/server/notification/NotificationManagerService;->cancelToastLocked(I)V
+HPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSameApp(IILjava/lang/String;)V
HPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSameApp(Ljava/lang/String;)V
-HPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSameApp(Ljava/lang/String;II)V
PLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystem()V
-HPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystemOrSameApp(Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService;->checkComponentPermission(Ljava/lang/String;IIZ)I
HPLcom/android/server/notification/NotificationManagerService;->checkDisqualifyingFeatures(IIILjava/lang/String;Lcom/android/server/notification/NotificationRecord;ZZ)Z
-PLcom/android/server/notification/NotificationManagerService;->checkRemoteViews(Ljava/lang/String;Ljava/lang/String;ILandroid/app/Notification;)V
-PLcom/android/server/notification/NotificationManagerService;->checkRestrictedCategories(Landroid/app/Notification;)V
-PLcom/android/server/notification/NotificationManagerService;->clamp(III)I
-PLcom/android/server/notification/NotificationManagerService;->createNotificationChannelGroup(Ljava/lang/String;ILandroid/app/NotificationChannelGroup;ZZ)V
-PLcom/android/server/notification/NotificationManagerService;->createToastRateLimiter()Lcom/android/server/utils/quota/MultiRateLimiter;
-PLcom/android/server/notification/NotificationManagerService;->enqueueNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;IZ)V
-HPLcom/android/server/notification/NotificationManagerService;->enqueueNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;IZLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Z)Z
-PLcom/android/server/notification/NotificationManagerService;->enqueueNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;IZZ)V
-PLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;)Lcom/android/server/notification/NotificationRecord;
-HPLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord;
-HPLcom/android/server/notification/NotificationManagerService;->findNotificationLocked(Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord;
-PLcom/android/server/notification/NotificationManagerService;->findNotificationRecordIndexLocked(Lcom/android/server/notification/NotificationRecord;)I
+PLcom/android/server/notification/NotificationManagerService;->clearAutogroupSummaryLocked(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->convertSummaryToNotificationLocked(Ljava/lang/String;)Z
+HPLcom/android/server/notification/NotificationManagerService;->createNotificationChannelGroup(Ljava/lang/String;ILandroid/app/NotificationChannelGroup;ZZ)V
+PLcom/android/server/notification/NotificationManagerService;->destroyPermissionOwner(ILandroid/os/IBinder;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->dumpImpl(Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;Landroid/util/ArrayMap;)V
+PLcom/android/server/notification/NotificationManagerService;->dumpNotificationRecords(Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+HPLcom/android/server/notification/NotificationManagerService;->enqueueNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;IZLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;ZZ)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/job/JobSchedulerInternal;Lcom/android/server/job/JobSchedulerService$LocalService;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Set;Ljava/util/ImmutableCollections$SetN;
+HPLcom/android/server/notification/NotificationManagerService;->enqueueNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;IZZZ)V
+PLcom/android/server/notification/NotificationManagerService;->findNotificationByKeyLocked(Ljava/lang/String;)Lcom/android/server/notification/NotificationRecord;
+HPLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/lang/String;Ljava/util/ArrayList;)Lcom/android/server/notification/NotificationRecord;
+HPLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/notification/NotificationManagerService;->findNotificationLocked(IILjava/lang/String;Ljava/lang/String;)Lcom/android/server/notification/NotificationRecord;
HPLcom/android/server/notification/NotificationManagerService;->fixNotification(Landroid/app/Notification;Ljava/lang/String;Ljava/lang/String;IIILandroid/app/ActivityManagerInternal$ServiceNotificationPolicy;Z)V
-PLcom/android/server/notification/NotificationManagerService;->getCompanionManager()Landroid/companion/ICompanionDeviceManager;
-PLcom/android/server/notification/NotificationManagerService;->getGroupHelper()Lcom/android/server/notification/GroupHelper;
-PLcom/android/server/notification/NotificationManagerService;->getGroupInstanceId(Ljava/lang/String;)Lcom/android/internal/logging/InstanceId;
+PLcom/android/server/notification/NotificationManagerService;->getAllUsersNotificationPermissions()Landroid/util/ArrayMap;
PLcom/android/server/notification/NotificationManagerService;->getHistoryText(Landroid/app/Notification;)Ljava/lang/String;
-PLcom/android/server/notification/NotificationManagerService;->getHistoryTitle(Landroid/app/Notification;)Ljava/lang/String;
-PLcom/android/server/notification/NotificationManagerService;->getNotificationChannelRestoreDeleted(Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannel;
-PLcom/android/server/notification/NotificationManagerService;->getRealUserId(I)I
-PLcom/android/server/notification/NotificationManagerService;->getStringArrayResource(I)[Ljava/lang/String;
-PLcom/android/server/notification/NotificationManagerService;->getSuppressors()Ljava/util/ArrayList;
-HPLcom/android/server/notification/NotificationManagerService;->grantUriPermission(Landroid/os/IBinder;Landroid/net/Uri;ILjava/lang/String;I)V
-PLcom/android/server/notification/NotificationManagerService;->handleGroupedNotificationLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;II)V
-PLcom/android/server/notification/NotificationManagerService;->handleListenerHintsChanged(I)V
-PLcom/android/server/notification/NotificationManagerService;->handleOnPackageChanged(ZI[Ljava/lang/String;[I)V
-PLcom/android/server/notification/NotificationManagerService;->handleRankingReconsideration(Landroid/os/Message;)V
-PLcom/android/server/notification/NotificationManagerService;->handleRankingSort()V
+HPLcom/android/server/notification/NotificationManagerService;->getNotificationCount(IILjava/lang/String;Ljava/lang/String;)I
+HPLcom/android/server/notification/NotificationManagerService;->getPackageImportanceWithIdentity(Ljava/lang/String;)I
+PLcom/android/server/notification/NotificationManagerService;->grantUriPermission(Landroid/os/IBinder;Landroid/net/Uri;ILjava/lang/String;I)V
PLcom/android/server/notification/NotificationManagerService;->handleSavePolicyFile()V
-PLcom/android/server/notification/NotificationManagerService;->handleSendRankingUpdate()V
-PLcom/android/server/notification/NotificationManagerService;->hasAutoGroupSummaryLocked(Landroid/service/notification/StatusBarNotification;)Z
-PLcom/android/server/notification/NotificationManagerService;->hasCompanionDevice(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
-HPLcom/android/server/notification/NotificationManagerService;->hasCompanionDevice(Ljava/lang/String;ILjava/util/Set;)Z
-PLcom/android/server/notification/NotificationManagerService;->indexOfNotificationLocked(Ljava/lang/String;)I
-HPLcom/android/server/notification/NotificationManagerService;->init(Lcom/android/server/notification/NotificationManagerService$WorkerHandler;Lcom/android/server/notification/RankingHandler;Landroid/content/pm/IPackageManager;Landroid/content/pm/PackageManager;Lcom/android/server/lights/LightsManager;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/ConditionProviders;Landroid/companion/ICompanionDeviceManager;Lcom/android/server/notification/SnoozeHelper;Lcom/android/server/notification/NotificationUsageStats;Landroid/util/AtomicFile;Landroid/app/ActivityManager;Lcom/android/server/notification/GroupHelper;Landroid/app/IActivityManager;Lcom/android/server/wm/ActivityTaskManagerInternal;Landroid/app/usage/UsageStatsManagerInternal;Landroid/app/admin/DevicePolicyManagerInternal;Landroid/app/IUriGrantsManager;Lcom/android/server/uri/UriGrantsManagerInternal;Landroid/app/AppOpsManager;Landroid/os/UserManager;Lcom/android/server/notification/NotificationHistoryManager;Landroid/app/StatsManager;Landroid/telephony/TelephonyManager;Landroid/app/ActivityManagerInternal;Lcom/android/server/utils/quota/MultiRateLimiter;Lcom/android/server/notification/PermissionHelper;Landroid/app/usage/UsageStatsManagerInternal;Landroid/telecom/TelecomManager;Lcom/android/server/notification/NotificationChannelLogger;Lcom/android/internal/config/sysui/SystemUiSystemPropertiesFlags$FlagResolver;Landroid/permission/PermissionManager;Landroid/os/PowerManager;Lcom/android/server/notification/NotificationManagerService$PostNotificationTrackerFactory;)V
-PLcom/android/server/notification/NotificationManagerService;->isCallNotification(Ljava/lang/String;I)Z
+HPLcom/android/server/notification/NotificationManagerService;->hasCompanionDevice(ILjava/lang/String;Ljava/util/Set;)Z+]Landroid/companion/ICompanionDeviceManager;Lcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;,Ljava/util/Collections$EmptyIterator;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+PLcom/android/server/notification/NotificationManagerService;->indexOfToastLocked(Landroid/os/IBinder;Ljava/lang/String;)I
+PLcom/android/server/notification/NotificationManagerService;->init(Lcom/android/server/notification/NotificationManagerService$WorkerHandler;Lcom/android/server/notification/RankingHandler;Landroid/content/pm/IPackageManager;Landroid/content/pm/PackageManager;Lcom/android/server/lights/LightsManager;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/ConditionProviders;Landroid/companion/ICompanionDeviceManager;Lcom/android/server/notification/SnoozeHelper;Lcom/android/server/notification/NotificationUsageStats;Landroid/util/AtomicFile;Landroid/app/ActivityManager;Lcom/android/server/notification/GroupHelper;Landroid/app/IActivityManager;Lcom/android/server/wm/ActivityTaskManagerInternal;Landroid/app/usage/UsageStatsManagerInternal;Landroid/app/admin/DevicePolicyManagerInternal;Landroid/app/IUriGrantsManager;Lcom/android/server/uri/UriGrantsManagerInternal;Landroid/app/AppOpsManager;Landroid/os/UserManager;Lcom/android/server/notification/NotificationHistoryManager;Landroid/app/StatsManager;Landroid/app/ActivityManagerInternal;Lcom/android/server/utils/quota/MultiRateLimiter;Lcom/android/server/notification/PermissionHelper;Landroid/app/usage/UsageStatsManagerInternal;Landroid/telecom/TelecomManager;Lcom/android/server/notification/NotificationChannelLogger;Lcom/android/internal/config/sysui/SystemUiSystemPropertiesFlags$FlagResolver;Landroid/permission/PermissionManager;Landroid/os/PowerManager;Lcom/android/server/notification/NotificationManagerService$PostNotificationTrackerFactory;)V
+HPLcom/android/server/notification/NotificationManagerService;->isCallNotification(Ljava/lang/String;)Z
PLcom/android/server/notification/NotificationManagerService;->isCallerInstantApp(II)Z
-PLcom/android/server/notification/NotificationManagerService;->isCallerSameApp(Ljava/lang/String;II)Z
-HPLcom/android/server/notification/NotificationManagerService;->isCallerSystemOrPhone()Z
+PLcom/android/server/notification/NotificationManagerService;->isCallerSystemOrPhone()Z
HPLcom/android/server/notification/NotificationManagerService;->isCallerSystemOrSystemUi()Z
-PLcom/android/server/notification/NotificationManagerService;->isCallingUidSystem()Z
-PLcom/android/server/notification/NotificationManagerService;->isCritical(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationManagerService;->isChildOfCurrentGroupChecker(Lcom/android/server/notification/NotificationRecord;ILjava/lang/String;Ljava/lang/String;)Z
PLcom/android/server/notification/NotificationManagerService;->isDNDMigrationDone(I)Z
-HPLcom/android/server/notification/NotificationManagerService;->isInLockDownMode(I)Z
HPLcom/android/server/notification/NotificationManagerService;->isInteractionVisibleToListener(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)Z
PLcom/android/server/notification/NotificationManagerService;->isNASMigrationDone(I)Z
-PLcom/android/server/notification/NotificationManagerService;->isNotificationShownInternal(Ljava/lang/String;Ljava/lang/String;II)Z
-PLcom/android/server/notification/NotificationManagerService;->isPackagePausedOrSuspended(Ljava/lang/String;I)Z
-PLcom/android/server/notification/NotificationManagerService;->isPackageSuspendedForUser(Ljava/lang/String;I)Z
-PLcom/android/server/notification/NotificationManagerService;->isRecordBlockedLocked(Lcom/android/server/notification/NotificationRecord;)Z
-HPLcom/android/server/notification/NotificationManagerService;->isServiceTokenValid(Landroid/os/IInterface;)Z
+HPLcom/android/server/notification/NotificationManagerService;->isPackagePausedOrSuspended(ILjava/lang/String;)Z
+HPLcom/android/server/notification/NotificationManagerService;->isRecordBlockedLocked(Lcom/android/server/notification/NotificationRecord;)Z
HPLcom/android/server/notification/NotificationManagerService;->isUidSystemOrPhone(I)Z
-HPLcom/android/server/notification/NotificationManagerService;->isVisibleToListener(Landroid/service/notification/StatusBarNotification;ILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
-PLcom/android/server/notification/NotificationManagerService;->isVisuallyInterruptive(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)Z
-HPLcom/android/server/notification/NotificationManagerService;->lambda$acquireWakeLockForPost$8(Ljava/lang/String;I)Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;
-HPLcom/android/server/notification/NotificationManagerService;->lambda$notifyListenersPostedAndLogLocked$13(Ljava/util/List;Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;)V
-PLcom/android/server/notification/NotificationManagerService;->lambda$onUserUnlocked$4(Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/notification/NotificationManagerService;->lambda$reportForegroundServiceUpdate$7(ZLandroid/app/Notification;ILjava/lang/String;I)V
+HPLcom/android/server/notification/NotificationManagerService;->isVisibleToListener(Landroid/service/notification/StatusBarNotification;ILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z+]Landroid/service/notification/NotificationListenerFilter;Landroid/service/notification/NotificationListenerFilter;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;
+HPLcom/android/server/notification/NotificationManagerService;->isVisuallyInterruptive(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationManagerService;->keepProcessAliveForToastIfNeededLocked(I)V
PLcom/android/server/notification/NotificationManagerService;->loadPolicyFile()V
-HPLcom/android/server/notification/NotificationManagerService;->makeRankingUpdateLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/NotificationRankingUpdate;
+HPLcom/android/server/notification/NotificationManagerService;->makeRankingUpdateLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/NotificationRankingUpdate;+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/notification/NotificationManagerService;->maybeNotifySystemUiListenerLifetimeExtendedLocked(Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;I)V
HPLcom/android/server/notification/NotificationManagerService;->maybeRecordInterruptionLocked(Lcom/android/server/notification/NotificationRecord;)V
PLcom/android/server/notification/NotificationManagerService;->maybeRegisterMessageSent(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationManagerService;->maybeReportForegroundServiceUpdate(Lcom/android/server/notification/NotificationRecord;Z)V
-PLcom/android/server/notification/NotificationManagerService;->maybeShowInitialReviewPermissionsNotification()V
-PLcom/android/server/notification/NotificationManagerService;->migrateDefaultNAS()V
-HPLcom/android/server/notification/NotificationManagerService;->notificationMatchesUserId(Lcom/android/server/notification/NotificationRecord;IZ)Z
-PLcom/android/server/notification/NotificationManagerService;->notifyListenersPostedAndLogLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;)V
+HPLcom/android/server/notification/NotificationManagerService;->notificationMatchesUserId(ILcom/android/server/notification/NotificationRecord;Z)Z+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
+PLcom/android/server/notification/NotificationManagerService;->notifyCallNotificationEventListenerOnRemoved(Lcom/android/server/notification/NotificationRecord;)V
PLcom/android/server/notification/NotificationManagerService;->onBootPhase(I)V
-HPLcom/android/server/notification/NotificationManagerService;->onBootPhase(ILandroid/os/Looper;)V
-HPLcom/android/server/notification/NotificationManagerService;->onStart()V
+PLcom/android/server/notification/NotificationManagerService;->onBootPhase(ILandroid/os/Looper;)V
+PLcom/android/server/notification/NotificationManagerService;->onStart()V
PLcom/android/server/notification/NotificationManagerService;->onUserUnlocked(Lcom/android/server/SystemService$TargetUser;)V
-HPLcom/android/server/notification/NotificationManagerService;->readPolicyXml(Ljava/io/InputStream;ZI)V
-PLcom/android/server/notification/NotificationManagerService;->registerDeviceConfigChange()V
-PLcom/android/server/notification/NotificationManagerService;->registerNotificationPreferencesPullers()V
-PLcom/android/server/notification/NotificationManagerService;->removeDisabledHints(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
+PLcom/android/server/notification/NotificationManagerService;->privateSpaceFlagsEnabled()Z
+PLcom/android/server/notification/NotificationManagerService;->readPolicyXml(Ljava/io/InputStream;ZILandroid/app/backup/BackupRestoreEventLogger;)V
PLcom/android/server/notification/NotificationManagerService;->removeDisabledHints(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)Z
PLcom/android/server/notification/NotificationManagerService;->removeRemoteView(Ljava/lang/String;Ljava/lang/String;ILandroid/widget/RemoteViews;)Z
-PLcom/android/server/notification/NotificationManagerService;->reportForegroundServiceUpdate(ZLandroid/app/Notification;ILjava/lang/String;I)V
PLcom/android/server/notification/NotificationManagerService;->resetDefaultDndIfNecessary()V
HPLcom/android/server/notification/NotificationManagerService;->resolveNotificationUid(Ljava/lang/String;Ljava/lang/String;II)I
PLcom/android/server/notification/NotificationManagerService;->revokeUriPermission(Landroid/os/IBinder;Landroid/net/Uri;ILjava/lang/String;I)V
-PLcom/android/server/notification/NotificationManagerService;->scheduleListenerHintsChanged(I)V
-PLcom/android/server/notification/NotificationManagerService;->scheduleTimeoutLocked(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationManagerService;->sendRegisteredOnlyBroadcast(Landroid/content/Intent;)V
-PLcom/android/server/notification/NotificationManagerService;->sendRegisteredOnlyBroadcast(Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService;->sendRegisteredOnlyBroadcast(Landroid/content/Intent;)V
PLcom/android/server/notification/NotificationManagerService;->setDefaultAssistantForUser(I)V
-PLcom/android/server/notification/NotificationManagerService;->setNotificationAssistantAccessGrantedForUserInternal(Landroid/content/ComponentName;IZZ)V
-PLcom/android/server/notification/NotificationManagerService;->updateEffectsSuppressorLocked()V
-PLcom/android/server/notification/NotificationManagerService;->updateListenerHintsLocked()V
-PLcom/android/server/notification/NotificationManagerService;->updateNotificationBubbleFlags(Lcom/android/server/notification/NotificationRecord;Z)V
+PLcom/android/server/notification/NotificationManagerService;->showNextToastLocked(Z)V
+PLcom/android/server/notification/NotificationManagerService;->updateAutobundledSummaryLocked(ILjava/lang/String;Ljava/lang/String;Lcom/android/server/notification/GroupHelper$NotificationAttributes;Z)V
PLcom/android/server/notification/NotificationManagerService;->updateUriPermissions(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;I)V
-HPLcom/android/server/notification/NotificationManagerService;->updateUriPermissions(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;IZ)V
-HPLcom/android/server/notification/NotificationManagerService;->writePolicyXml(Ljava/io/OutputStream;ZI)V
-PLcom/android/server/notification/NotificationManagerService;->writeSecureNotificationsPolicy(Lcom/android/modules/utils/TypedXmlSerializer;)V
+HPLcom/android/server/notification/NotificationManagerService;->updateUriPermissions(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;IZ)V+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
+HPLcom/android/server/notification/NotificationManagerService;->writePolicyXml(Ljava/io/OutputStream;ZILandroid/app/backup/BackupRestoreEventLogger;)V+]Landroid/service/notification/ZenModeConfig;Landroid/service/notification/ZenModeConfig;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;
PLcom/android/server/notification/NotificationRecord$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationRecord$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/notification/NotificationRecord;->$r8$lambda$m3xVdeXccEasPWsrg0D9LxsE8QE(Lcom/android/server/notification/NotificationRecord;Landroid/net/Uri;)V
+HPLcom/android/server/notification/NotificationRecord$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
PLcom/android/server/notification/NotificationRecord;-><clinit>()V
HPLcom/android/server/notification/NotificationRecord;-><init>(Landroid/content/Context;Landroid/service/notification/StatusBarNotification;Landroid/app/NotificationChannel;)V
-PLcom/android/server/notification/NotificationRecord;->addAdjustment(Landroid/service/notification/Adjustment;)V
HPLcom/android/server/notification/NotificationRecord;->applyAdjustments()V
-PLcom/android/server/notification/NotificationRecord;->calculateAttributes()Landroid/media/AudioAttributes;
-PLcom/android/server/notification/NotificationRecord;->calculateGrantableUris()V
HPLcom/android/server/notification/NotificationRecord;->calculateImportance()V
-HPLcom/android/server/notification/NotificationRecord;->calculateInitialImportance()I
-PLcom/android/server/notification/NotificationRecord;->calculateLights()Lcom/android/server/notification/NotificationRecord$Light;
-PLcom/android/server/notification/NotificationRecord;->calculateRankingTimeMs(J)J
-PLcom/android/server/notification/NotificationRecord;->calculateSound()Landroid/net/Uri;
-PLcom/android/server/notification/NotificationRecord;->calculateUserSentiment()V
-PLcom/android/server/notification/NotificationRecord;->calculateVibration()Landroid/os/VibrationEffect;
-HPLcom/android/server/notification/NotificationRecord;->canBubble()Z
-HPLcom/android/server/notification/NotificationRecord;->canShowBadge()Z
-PLcom/android/server/notification/NotificationRecord;->getAdjustmentIssuer()Ljava/lang/String;
-PLcom/android/server/notification/NotificationRecord;->getAssistantImportance()I
-PLcom/android/server/notification/NotificationRecord;->getAudioAttributes()Landroid/media/AudioAttributes;
-PLcom/android/server/notification/NotificationRecord;->getAuthoritativeRank()I
-PLcom/android/server/notification/NotificationRecord;->getChannel()Landroid/app/NotificationChannel;
-PLcom/android/server/notification/NotificationRecord;->getContactAffinity()F
-PLcom/android/server/notification/NotificationRecord;->getCriticality()I
+HPLcom/android/server/notification/NotificationRecord;->calculateInitialImportance()I+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
+HPLcom/android/server/notification/NotificationRecord;->calculateRankingTimeMs(J)J
+HPLcom/android/server/notification/NotificationRecord;->calculateUserSentiment()V
+HPLcom/android/server/notification/NotificationRecord;->calculateVibration()Landroid/os/VibrationEffect;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
+HPLcom/android/server/notification/NotificationRecord;->copyRankingInformation(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+PLcom/android/server/notification/NotificationRecord;->dumpNotification(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/app/Notification;Z)V
+PLcom/android/server/notification/NotificationRecord;->formatRemoteViews(Landroid/widget/RemoteViews;)Ljava/lang/String;
PLcom/android/server/notification/NotificationRecord;->getExposureMs(J)I
HPLcom/android/server/notification/NotificationRecord;->getFlags()I
-PLcom/android/server/notification/NotificationRecord;->getFreshnessMs(J)I
-PLcom/android/server/notification/NotificationRecord;->getGlobalSortKey()Ljava/lang/String;
-PLcom/android/server/notification/NotificationRecord;->getGrantableUris()Landroid/util/ArraySet;
-PLcom/android/server/notification/NotificationRecord;->getGroupKey()Ljava/lang/String;
-HPLcom/android/server/notification/NotificationRecord;->getImportance()I
HPLcom/android/server/notification/NotificationRecord;->getImportanceExplanation()Ljava/lang/CharSequence;
-PLcom/android/server/notification/NotificationRecord;->getImportanceExplanationCode()I
-PLcom/android/server/notification/NotificationRecord;->getInitialImportance()I
-PLcom/android/server/notification/NotificationRecord;->getInitialImportanceExplanationCode()I
-PLcom/android/server/notification/NotificationRecord;->getInterruptionMs(J)I
-HPLcom/android/server/notification/NotificationRecord;->getKey()Ljava/lang/String;
-PLcom/android/server/notification/NotificationRecord;->getKeyguardManager()Landroid/app/KeyguardManager;
-PLcom/android/server/notification/NotificationRecord;->getLastAudiblyAlertedMs()J
-PLcom/android/server/notification/NotificationRecord;->getLastIntrusive()J
-PLcom/android/server/notification/NotificationRecord;->getLifespanMs(J)I
PLcom/android/server/notification/NotificationRecord;->getLogMaker()Landroid/metrics/LogMaker;
HPLcom/android/server/notification/NotificationRecord;->getLogMaker(J)Landroid/metrics/LogMaker;
-HPLcom/android/server/notification/NotificationRecord;->getNotification()Landroid/app/Notification;
HPLcom/android/server/notification/NotificationRecord;->getNotificationType()I
-PLcom/android/server/notification/NotificationRecord;->getPackagePriority()I
-HPLcom/android/server/notification/NotificationRecord;->getPackageVisibilityOverride()I
-PLcom/android/server/notification/NotificationRecord;->getPeopleOverride()Ljava/util/ArrayList;
-HPLcom/android/server/notification/NotificationRecord;->getProposedImportance()I
-HPLcom/android/server/notification/NotificationRecord;->getRankingScore()F
-HPLcom/android/server/notification/NotificationRecord;->getSbn()Landroid/service/notification/StatusBarNotification;
-PLcom/android/server/notification/NotificationRecord;->getShortcutInfo()Landroid/content/pm/ShortcutInfo;
-PLcom/android/server/notification/NotificationRecord;->getSmartReplies()Ljava/util/ArrayList;
-PLcom/android/server/notification/NotificationRecord;->getSnoozeCriteria()Ljava/util/ArrayList;
-PLcom/android/server/notification/NotificationRecord;->getSound()Landroid/net/Uri;
-HPLcom/android/server/notification/NotificationRecord;->getSuppressedVisualEffects()I
-PLcom/android/server/notification/NotificationRecord;->getSystemGeneratedSmartActions()Ljava/util/ArrayList;
-PLcom/android/server/notification/NotificationRecord;->getUid()I
-HPLcom/android/server/notification/NotificationRecord;->getUser()Landroid/os/UserHandle;
-HPLcom/android/server/notification/NotificationRecord;->getUserId()I
-PLcom/android/server/notification/NotificationRecord;->getUserSentiment()I
-PLcom/android/server/notification/NotificationRecord;->getVibration()Landroid/os/VibrationEffect;
-PLcom/android/server/notification/NotificationRecord;->getVibrationForChannel(Landroid/app/NotificationChannel;Lcom/android/server/notification/VibratorHelper;Z)Landroid/os/VibrationEffect;
-PLcom/android/server/notification/NotificationRecord;->hasRecordedInterruption()Z
-PLcom/android/server/notification/NotificationRecord;->hasSensitiveContent()Z
-PLcom/android/server/notification/NotificationRecord;->hasUndecoratedRemoteView()Z
PLcom/android/server/notification/NotificationRecord;->isCategory(Ljava/lang/String;)Z
-HPLcom/android/server/notification/NotificationRecord;->isConversation()Z
-PLcom/android/server/notification/NotificationRecord;->isForegroundService()Z
-PLcom/android/server/notification/NotificationRecord;->isHidden()Z
-PLcom/android/server/notification/NotificationRecord;->isIntercepted()Z
-PLcom/android/server/notification/NotificationRecord;->isInterruptive()Z
-PLcom/android/server/notification/NotificationRecord;->isLocked()Z
-PLcom/android/server/notification/NotificationRecord;->isPreChannelsNotification()Z
-PLcom/android/server/notification/NotificationRecord;->isRecentlyIntrusive()Z
-HPLcom/android/server/notification/NotificationRecord;->isTextChanged()Z
-PLcom/android/server/notification/NotificationRecord;->lambda$calculateGrantableUris$0(Landroid/net/Uri;)V
-PLcom/android/server/notification/NotificationRecord;->setAllowBubble(Z)V
-PLcom/android/server/notification/NotificationRecord;->setAudiblyAlerted(Z)V
-PLcom/android/server/notification/NotificationRecord;->setAuthoritativeRank(I)V
-PLcom/android/server/notification/NotificationRecord;->setContactAffinity(F)V
-PLcom/android/server/notification/NotificationRecord;->setFlagBubbleRemoved(Z)V
-PLcom/android/server/notification/NotificationRecord;->setGlobalSortKey(Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationRecord;->setHasSentValidMsg(Z)V
-PLcom/android/server/notification/NotificationRecord;->setHidden(Z)V
-PLcom/android/server/notification/NotificationRecord;->setImportanceFixed(Z)V
-PLcom/android/server/notification/NotificationRecord;->setIntercepted(Z)Z
+HPLcom/android/server/notification/NotificationRecord;->isConversation()Z+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
PLcom/android/server/notification/NotificationRecord;->setInterruptive(Z)V
-PLcom/android/server/notification/NotificationRecord;->setIsAppImportanceLocked(Z)V
-PLcom/android/server/notification/NotificationRecord;->setPackagePriority(I)V
-PLcom/android/server/notification/NotificationRecord;->setPackageVisibilityOverride(I)V
-PLcom/android/server/notification/NotificationRecord;->setPkgAllowedAsConvo(Z)V
-PLcom/android/server/notification/NotificationRecord;->setPostSilently(Z)V
-PLcom/android/server/notification/NotificationRecord;->setRecentlyIntrusive(Z)V
-PLcom/android/server/notification/NotificationRecord;->setRecordedInterruption(Z)V
-PLcom/android/server/notification/NotificationRecord;->setShortcutInfo(Landroid/content/pm/ShortcutInfo;)V
-PLcom/android/server/notification/NotificationRecord;->setShowBadge(Z)V
-PLcom/android/server/notification/NotificationRecord;->setSuppressedVisualEffects(I)V
-PLcom/android/server/notification/NotificationRecord;->setTextChanged(Z)V
-PLcom/android/server/notification/NotificationRecord;->shouldPostSilently()Z
-PLcom/android/server/notification/NotificationRecord;->updateNotificationChannel(Landroid/app/NotificationChannel;)V
-PLcom/android/server/notification/NotificationRecord;->userDemotedAppFromConvoSpace(Z)V
-PLcom/android/server/notification/NotificationRecord;->visitGrantableUri(Landroid/net/Uri;ZZ)V
+PLcom/android/server/notification/NotificationRecord;->toString()Ljava/lang/String;
+HPLcom/android/server/notification/NotificationRecord;->updateNotificationChannel(Landroid/app/NotificationChannel;)V
+HPLcom/android/server/notification/NotificationRecord;->visitGrantableUri(Landroid/net/Uri;ZZ)V
+HPLcom/android/server/notification/NotificationRecordExtractorData;-><init>(IIZZZLandroid/app/NotificationChannel;Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/util/ArrayList;Ljava/util/ArrayList;IFZIZ)V
+HPLcom/android/server/notification/NotificationRecordExtractorData;->hasDiffForRankingLocked(Lcom/android/server/notification/NotificationRecord;I)Z
+PLcom/android/server/notification/NotificationRecordLogger$NotificationCancelledEvent;-><clinit>()V
+PLcom/android/server/notification/NotificationRecordLogger$NotificationCancelledEvent;-><init>(IILjava/lang/String;)V
+PLcom/android/server/notification/NotificationRecordLogger$NotificationCancelledEvent;->getId()I
+PLcom/android/server/notification/NotificationRecordLogger$NotificationCancelledEvent;->values()[Lcom/android/server/notification/NotificationRecordLogger$NotificationCancelledEvent;
PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;-><init>(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getAssistantHash()I
-PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getChannelIdHash()I
-PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getGroupIdHash()I
-PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getInstanceId()I
-PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getNotificationIdHash()I
-PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getNumPeople()I
-PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getNumPeople(Landroid/os/Bundle;)I
-PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getStyle()I
-PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getStyle(Landroid/os/Bundle;)I
-PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->shouldLogReported(I)Z
HPLcom/android/server/notification/NotificationRecordLogger$NotificationReported;-><init>(Lcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;Lcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;IILcom/android/internal/logging/InstanceId;)V
-PLcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;->$values()[Lcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;
PLcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;-><clinit>()V
-PLcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;-><init>(Ljava/lang/String;II)V
-PLcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;->fromRecordPair(Lcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;)Lcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;
+PLcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;-><init>(IILjava/lang/String;)V
PLcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;->getId()I
-PLcom/android/server/notification/NotificationRecordLogger;->getAgeInMinutes(JJ)I
-PLcom/android/server/notification/NotificationRecordLogger;->getFsiState(ZZLcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;)I
-PLcom/android/server/notification/NotificationRecordLogger;->getLoggingImportance(Lcom/android/server/notification/NotificationRecord;)I
-PLcom/android/server/notification/NotificationRecordLogger;->isForegroundService(Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/NotificationRecordLogger;->isNonDismissible(Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/NotificationRecordLogger;->prepareToLogNotificationPosted(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;IILcom/android/internal/logging/InstanceId;)Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;
-PLcom/android/server/notification/NotificationRecordLoggerImpl;-><init>()V
-PLcom/android/server/notification/NotificationRecordLoggerImpl;->logNotificationPosted(Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;)V
+HPLcom/android/server/notification/NotificationRecordLogger;->prepareToLogNotificationPosted(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;IILcom/android/internal/logging/InstanceId;)Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;
+PLcom/android/server/notification/NotificationRecordLoggerImpl;->log(Lcom/android/internal/logging/UiEventLogger$UiEventEnum;Lcom/android/server/notification/NotificationRecord;)V
HPLcom/android/server/notification/NotificationRecordLoggerImpl;->writeNotificationReportedAtom(Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;)V
+PLcom/android/server/notification/NotificationSignalExtractor;->setCompatChangeLogger(Lcom/android/internal/compat/IPlatformCompat;)V
+PLcom/android/server/notification/NotificationSignalExtractor;->setGroupHelper(Lcom/android/server/notification/GroupHelper;)V
+HPLcom/android/server/notification/NotificationTimeComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
PLcom/android/server/notification/NotificationUsageStats$1;-><init>(Lcom/android/server/notification/NotificationUsageStats;Landroid/os/Looper;)V
-HPLcom/android/server/notification/NotificationUsageStats$AggregatedStats;-><init>(Landroid/content/Context;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationUsageStats$1;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;-><init>(Landroid/content/Context;Ljava/lang/String;)V
HPLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->countApiUse(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->updateInterarrivalEstimate(J)V
+PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->emit()V
+PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->maybeCount(ILjava/lang/String;)V
+PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->toStringWithIndent(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;-><clinit>()V
-HPLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;-><init>(Landroid/content/Context;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;-><init>(Landroid/content/Context;Ljava/lang/String;)V
PLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;->increment(I)V
-PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;-><init>()V
-PLcom/android/server/notification/NotificationUsageStats;-><clinit>()V
+PLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;->maybeCount(Lcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;)V
+PLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;->toString()Ljava/lang/String;
+PLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;->update(Lcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;)V
+PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->onVisibilityChanged(Z)V
+PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->toString()Ljava/lang/String;
+HPLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->updateFrom(Lcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;)V
PLcom/android/server/notification/NotificationUsageStats;-><init>(Landroid/content/Context;)V
-PLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Lcom/android/server/notification/NotificationRecord;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;
-HPLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Ljava/lang/String;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;
-HPLcom/android/server/notification/NotificationUsageStats;->getOrCreateAggregatedStatsLocked(Ljava/lang/String;)Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;
-PLcom/android/server/notification/NotificationUsageStats;->registerEnqueuedByApp(Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationUsageStats;->registerEnqueuedByAppAndAccepted(Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationUsageStats;->registerPeopleAffinity(Lcom/android/server/notification/NotificationRecord;ZZZ)V
+PLcom/android/server/notification/NotificationUsageStats;->dump(Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+HPLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Ljava/lang/String;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
+HPLcom/android/server/notification/NotificationUsageStats;->getOrCreateAggregatedStatsLocked(Ljava/lang/String;)Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;+]Ljava/util/Map;Ljava/util/HashMap;
+PLcom/android/server/notification/NotificationUsageStats;->registerBlocked(Lcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/NotificationUsageStats;->registerPeopleAffinity(Lcom/android/server/notification/NotificationRecord;ZZZ)V+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;
PLcom/android/server/notification/NotificationUsageStats;->registerPostedByApp(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationUsageStats;->releaseAggregatedStatsLocked([Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;)V
+HPLcom/android/server/notification/NotificationUsageStats;->registerUpdatedByApp(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/NotificationUsageStats;->releaseAggregatedStatsLocked([Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;)V+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
+PLcom/android/server/notification/PermissionHelper$$ExternalSyntheticLambda0;-><init>(ILandroid/net/Uri;Lcom/android/server/uri/UriGrantsManagerInternal;)V
+HPLcom/android/server/notification/PermissionHelper$$ExternalSyntheticLambda0;->runOrThrow()V
PLcom/android/server/notification/PermissionHelper;-><init>(Landroid/content/Context;Landroid/content/pm/IPackageManager;Landroid/permission/IPermissionManager;)V
-HPLcom/android/server/notification/PermissionHelper;->hasPermission(I)Z
+PLcom/android/server/notification/PermissionHelper;->getNotificationPermissionValues(I)Landroid/util/ArrayMap;
+HPLcom/android/server/notification/PermissionHelper;->grantUriPermission(ILandroid/net/Uri;Lcom/android/server/uri/UriGrantsManagerInternal;)V
+HPLcom/android/server/notification/PermissionHelper;->hasPermission(I)Z+]Landroid/content/Context;Landroid/app/ContextImpl;
HPLcom/android/server/notification/PermissionHelper;->isPermissionFixed(Ljava/lang/String;I)Z
-PLcom/android/server/notification/PermissionHelper;->isPermissionUserSet(Ljava/lang/String;I)Z
-PLcom/android/server/notification/PreferencesHelper$Delegate;-><init>(Ljava/lang/String;IZ)V
-HPLcom/android/server/notification/PreferencesHelper$PackagePreferences;-><init>()V
-PLcom/android/server/notification/PreferencesHelper$PackagePreferences;-><init>(Lcom/android/server/notification/PreferencesHelper$PackagePreferences-IA;)V
-PLcom/android/server/notification/PreferencesHelper;-><init>(Landroid/content/Context;Landroid/content/pm/PackageManager;Lcom/android/server/notification/RankingHandler;Lcom/android/server/notification/ZenModeHelper;Lcom/android/server/notification/PermissionHelper;Landroid/permission/PermissionManager;Lcom/android/server/notification/NotificationChannelLogger;Landroid/app/AppOpsManager;Lcom/android/server/notification/ManagedServices$UserProfiles;Z)V
-PLcom/android/server/notification/PreferencesHelper;->badgingEnabled(Landroid/os/UserHandle;)Z
-PLcom/android/server/notification/PreferencesHelper;->bubblesEnabled(Landroid/os/UserHandle;)Z
-PLcom/android/server/notification/PreferencesHelper;->canShowBadge(Ljava/lang/String;I)Z
-PLcom/android/server/notification/PreferencesHelper;->canShowNotificationsOnLockscreen(I)Z
-PLcom/android/server/notification/PreferencesHelper;->canShowPrivateNotificationsOnLockScreen(I)Z
+HPLcom/android/server/notification/PermissionHelper;->isPermissionUserSet(ILjava/lang/String;)Z
+PLcom/android/server/notification/PreferencesHelper$Delegate;-><init>(ILjava/lang/String;Z)V
+PLcom/android/server/notification/PreferencesHelper;-><clinit>()V
+PLcom/android/server/notification/PreferencesHelper;-><init>(Landroid/content/Context;Landroid/content/pm/PackageManager;Lcom/android/server/notification/RankingHandler;Lcom/android/server/notification/ZenModeHelper;Lcom/android/server/notification/PermissionHelper;Landroid/permission/PermissionManager;Lcom/android/server/notification/NotificationChannelLogger;Landroid/app/AppOpsManager;Lcom/android/server/notification/ManagedServices$UserProfiles;Lcom/android/server/uri/UriGrantsManagerInternal;ZLjava/time/Clock;)V
+HPLcom/android/server/notification/PreferencesHelper;->bubblesEnabled(Landroid/os/UserHandle;)Z
+PLcom/android/server/notification/PreferencesHelper;->canBePromoted(ILjava/lang/String;)Z
PLcom/android/server/notification/PreferencesHelper;->channelIsLiveLocked(Lcom/android/server/notification/PreferencesHelper$PackagePreferences;Landroid/app/NotificationChannel;)Z
-HPLcom/android/server/notification/PreferencesHelper;->createDefaultChannelIfNeededLocked(Lcom/android/server/notification/PreferencesHelper$PackagePreferences;)Z
-HPLcom/android/server/notification/PreferencesHelper;->createNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;ZZIZ)Z
-HPLcom/android/server/notification/PreferencesHelper;->createNotificationChannelGroup(Ljava/lang/String;ILandroid/app/NotificationChannelGroup;ZIZ)V
-HPLcom/android/server/notification/PreferencesHelper;->deleteDefaultChannelIfNeededLocked(Lcom/android/server/notification/PreferencesHelper$PackagePreferences;)Z
-PLcom/android/server/notification/PreferencesHelper;->deleteNotificationChannel(Ljava/lang/String;ILjava/lang/String;IZ)Z
-PLcom/android/server/notification/PreferencesHelper;->getBubblePreference(Ljava/lang/String;I)I
+PLcom/android/server/notification/PreferencesHelper;->createDefaultChannelIfNeededLocked(Lcom/android/server/notification/PreferencesHelper$PackagePreferences;)Z
+HPLcom/android/server/notification/PreferencesHelper;->createNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;ZIZ)Z
+PLcom/android/server/notification/PreferencesHelper;->dump(Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;Landroid/util/ArrayMap;)V
+PLcom/android/server/notification/PreferencesHelper;->dumpPackagePreferencesLocked(Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V
+PLcom/android/server/notification/PreferencesHelper;->getChannelLog(Landroid/app/NotificationChannel;Ljava/lang/String;)Landroid/metrics/LogMaker;
HPLcom/android/server/notification/PreferencesHelper;->getConversationNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZZ)Landroid/app/NotificationChannel;
-PLcom/android/server/notification/PreferencesHelper;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;Z)Landroid/app/NotificationChannel;
-PLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroup(Ljava/lang/String;Ljava/lang/String;I)Landroid/app/NotificationChannelGroup;
-HPLcom/android/server/notification/PreferencesHelper;->getNotificationChannels(Ljava/lang/String;IZ)Landroid/content/pm/ParceledListSlice;
-HPLcom/android/server/notification/PreferencesHelper;->getOrCreatePackagePreferencesLocked(Ljava/lang/String;I)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;
-HPLcom/android/server/notification/PreferencesHelper;->getOrCreatePackagePreferencesLocked(Ljava/lang/String;IIIIIZI)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;
-HPLcom/android/server/notification/PreferencesHelper;->getPackagePreferencesLocked(Ljava/lang/String;I)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;
+HPLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroup(ILjava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannelGroup;
+PLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroupWithChannels(ILjava/lang/String;Ljava/lang/String;Z)Landroid/app/NotificationChannelGroup;
+PLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroups(ILjava/lang/String;Ljava/util/Set;ZZZ)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/notification/PreferencesHelper;->getNotificationChannels(Ljava/lang/String;IZZ)Landroid/content/pm/ParceledListSlice;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/notification/PreferencesHelper;->getOrCreatePackagePreferencesLocked(ILjava/lang/String;)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;+]Ljava/time/Clock;Ljava/time/Clock$SystemClock;
+HPLcom/android/server/notification/PreferencesHelper;->getOrCreatePackagePreferencesLocked(Ljava/lang/String;IIIIIZIJ)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;
+HPLcom/android/server/notification/PreferencesHelper;->getPackagePreferencesLocked(ILjava/lang/String;)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;
PLcom/android/server/notification/PreferencesHelper;->hasSentValidMsg(Ljava/lang/String;I)Z
PLcom/android/server/notification/PreferencesHelper;->hasUserDemotedInvalidMsgApp(Ljava/lang/String;I)Z
-HPLcom/android/server/notification/PreferencesHelper;->isDeletionOk(Landroid/app/NotificationChannel;)Z
-PLcom/android/server/notification/PreferencesHelper;->isGroupBlocked(Ljava/lang/String;ILjava/lang/String;)Z
+HPLcom/android/server/notification/PreferencesHelper;->isGroupBlocked(ILjava/lang/String;Ljava/lang/String;)Z
PLcom/android/server/notification/PreferencesHelper;->isInInvalidMsgState(Ljava/lang/String;I)Z
-PLcom/android/server/notification/PreferencesHelper;->isMediaNotificationFilteringEnabled()Z
-HPLcom/android/server/notification/PreferencesHelper;->isShortcutOk(Landroid/app/NotificationChannel;)Z
PLcom/android/server/notification/PreferencesHelper;->migrateNotificationPermissions(Ljava/util/List;)V
-PLcom/android/server/notification/PreferencesHelper;->onPackagesChanged(ZI[Ljava/lang/String;[I)Z
-HPLcom/android/server/notification/PreferencesHelper;->packagePreferencesKey(Ljava/lang/String;I)Ljava/lang/String;
-HPLcom/android/server/notification/PreferencesHelper;->readXml(Lcom/android/modules/utils/TypedXmlPullParser;ZI)V
-HPLcom/android/server/notification/PreferencesHelper;->restoreChannel(Lcom/android/modules/utils/TypedXmlPullParser;ZLcom/android/server/notification/PreferencesHelper$PackagePreferences;)V
+PLcom/android/server/notification/PreferencesHelper;->onlyHasDefaultChannel(Ljava/lang/String;I)Z
+HPLcom/android/server/notification/PreferencesHelper;->packagePreferencesKey(ILjava/lang/String;)Ljava/lang/String;
+PLcom/android/server/notification/PreferencesHelper;->restoreChannel(Lcom/android/modules/utils/TypedXmlPullParser;ZLcom/android/server/notification/PreferencesHelper$PackagePreferences;)V
HPLcom/android/server/notification/PreferencesHelper;->restorePackage(Lcom/android/modules/utils/TypedXmlPullParser;ZILjava/lang/String;ZZ)V
-HPLcom/android/server/notification/PreferencesHelper;->shouldHaveDefaultChannel(Lcom/android/server/notification/PreferencesHelper$PackagePreferences;)Z
PLcom/android/server/notification/PreferencesHelper;->syncChannelsBypassingDnd()V
-PLcom/android/server/notification/PreferencesHelper;->unrestoredPackageKey(Ljava/lang/String;I)Ljava/lang/String;
+PLcom/android/server/notification/PreferencesHelper;->unrestoredPackageKey(ILjava/lang/String;)Ljava/lang/String;
PLcom/android/server/notification/PreferencesHelper;->updateBadgingEnabled()V
PLcom/android/server/notification/PreferencesHelper;->updateBubblesEnabled()V
PLcom/android/server/notification/PreferencesHelper;->updateConfig()V
PLcom/android/server/notification/PreferencesHelper;->updateCurrentUserHasChannelsBypassingDnd(IZ)V
PLcom/android/server/notification/PreferencesHelper;->updateDefaultApps(ILandroid/util/ArraySet;Landroid/util/ArraySet;)V
-HPLcom/android/server/notification/PreferencesHelper;->updateFixedImportance(Ljava/util/List;)V
-PLcom/android/server/notification/PreferencesHelper;->updateLockScreenPrivateNotifications()V
-PLcom/android/server/notification/PreferencesHelper;->updateLockScreenShowNotifications()V
PLcom/android/server/notification/PreferencesHelper;->updateMediaNotificationFilteringEnabled()V
-HPLcom/android/server/notification/PreferencesHelper;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;ZI)V
+HPLcom/android/server/notification/PreferencesHelper;->updateNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;ZIZ)V
+HPLcom/android/server/notification/PreferencesHelper;->writePackageXml(Lcom/android/server/notification/PreferencesHelper$PackagePreferences;Lcom/android/modules/utils/TypedXmlSerializer;Landroid/util/ArrayMap;Z)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;,Ljava/util/concurrent/ConcurrentHashMap$ValuesView;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;
PLcom/android/server/notification/PriorityExtractor;-><init>()V
PLcom/android/server/notification/PriorityExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
-PLcom/android/server/notification/PriorityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+HPLcom/android/server/notification/PriorityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
PLcom/android/server/notification/PriorityExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
PLcom/android/server/notification/PriorityExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
-PLcom/android/server/notification/PropConfig;->getStringArray(Landroid/content/Context;Ljava/lang/String;I)[Ljava/lang/String;
-PLcom/android/server/notification/RankingHelper;-><init>(Landroid/content/Context;Lcom/android/server/notification/RankingHandler;Lcom/android/server/notification/RankingConfig;Lcom/android/server/notification/ZenModeHelper;Lcom/android/server/notification/NotificationUsageStats;[Ljava/lang/String;)V
-PLcom/android/server/notification/RankingHelper;->extractSignals(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/RankingHelper;->findExtractor(Ljava/lang/Class;)Lcom/android/server/notification/NotificationSignalExtractor;
-PLcom/android/server/notification/RankingHelper;->indexOf(Ljava/util/ArrayList;Lcom/android/server/notification/NotificationRecord;)I
-HPLcom/android/server/notification/RankingHelper;->sort(Ljava/util/ArrayList;)V
-PLcom/android/server/notification/RankingReconsideration;-><init>(Ljava/lang/String;J)V
-PLcom/android/server/notification/RankingReconsideration;->getDelay(Ljava/util/concurrent/TimeUnit;)J
-PLcom/android/server/notification/RankingReconsideration;->getKey()Ljava/lang/String;
+PLcom/android/server/notification/RankingHelper;-><init>(Landroid/content/Context;Lcom/android/server/notification/RankingHandler;Lcom/android/server/notification/RankingConfig;Lcom/android/server/notification/ZenModeHelper;Lcom/android/server/notification/NotificationUsageStats;[Ljava/lang/String;Lcom/android/internal/compat/IPlatformCompat;Lcom/android/server/notification/GroupHelper;)V
+HPLcom/android/server/notification/RankingHelper;->extractSignals(Lcom/android/server/notification/NotificationRecord;)V+]Lcom/android/server/notification/NotificationSignalExtractor;megamorphic_types
+HPLcom/android/server/notification/RankingHelper;->sort(Ljava/util/ArrayList;)V+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/notification/RankingReconsideration;-><init>(JLjava/lang/String;)V
PLcom/android/server/notification/RankingReconsideration;->run()V
-PLcom/android/server/notification/RateEstimator;-><init>()V
-PLcom/android/server/notification/RateEstimator;->getInterarrivalEstimate(J)D
-PLcom/android/server/notification/RateEstimator;->update(J)V
+HPLcom/android/server/notification/RateEstimator;->getInterarrivalEstimate(J)D
PLcom/android/server/notification/ReviewNotificationPermissionsReceiver;-><clinit>()V
-PLcom/android/server/notification/ReviewNotificationPermissionsReceiver;-><init>()V
-PLcom/android/server/notification/ReviewNotificationPermissionsReceiver;->getFilter()Landroid/content/IntentFilter;
PLcom/android/server/notification/ScheduleConditionProvider$1;-><init>(Lcom/android/server/notification/ScheduleConditionProvider;)V
PLcom/android/server/notification/ScheduleConditionProvider$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/notification/ScheduleConditionProvider;->-$$Nest$mevaluateSubscriptions(Lcom/android/server/notification/ScheduleConditionProvider;)V
PLcom/android/server/notification/ScheduleConditionProvider;-><clinit>()V
-PLcom/android/server/notification/ScheduleConditionProvider;-><init>()V
-PLcom/android/server/notification/ScheduleConditionProvider;->asInterface()Landroid/service/notification/IConditionProvider;
-PLcom/android/server/notification/ScheduleConditionProvider;->attachBase(Landroid/content/Context;)V
-PLcom/android/server/notification/ScheduleConditionProvider;->conditionSnoozed(Landroid/net/Uri;)Z
-PLcom/android/server/notification/ScheduleConditionProvider;->createCondition(Landroid/net/Uri;ILjava/lang/String;)Landroid/service/notification/Condition;
+PLcom/android/server/notification/ScheduleConditionProvider;-><init>(Ljava/time/Clock;)V
+PLcom/android/server/notification/ScheduleConditionProvider;->createCondition(ILjava/lang/String;Landroid/net/Uri;)Landroid/service/notification/Condition;
+PLcom/android/server/notification/ScheduleConditionProvider;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/notification/ScheduleConditionProvider;->evaluateSubscriptionLocked(Landroid/net/Uri;Landroid/service/notification/ScheduleCalendar;JJ)Landroid/service/notification/Condition;
-HPLcom/android/server/notification/ScheduleConditionProvider;->evaluateSubscriptions()V
-PLcom/android/server/notification/ScheduleConditionProvider;->getComponent()Landroid/content/ComponentName;
-PLcom/android/server/notification/ScheduleConditionProvider;->getNextAlarm()J
+PLcom/android/server/notification/ScheduleConditionProvider;->evaluateSubscriptions$1()V
PLcom/android/server/notification/ScheduleConditionProvider;->getPendingIntent(J)Landroid/app/PendingIntent;
PLcom/android/server/notification/ScheduleConditionProvider;->isValidConditionId(Landroid/net/Uri;)Z
PLcom/android/server/notification/ScheduleConditionProvider;->onBootComplete()V
PLcom/android/server/notification/ScheduleConditionProvider;->onConnected()V
PLcom/android/server/notification/ScheduleConditionProvider;->onSubscribe(Landroid/net/Uri;)V
-PLcom/android/server/notification/ScheduleConditionProvider;->readSnoozed()V
-PLcom/android/server/notification/ScheduleConditionProvider;->setRegistered(Z)V
-PLcom/android/server/notification/ScheduleConditionProvider;->updateAlarm(JJ)V
+PLcom/android/server/notification/ScheduleConditionProvider;->removeSnoozed(Landroid/net/Uri;)V
+PLcom/android/server/notification/ScheduleConditionProvider;->setRegistered$1(Z)V
PLcom/android/server/notification/ShortcutHelper$1;-><init>(Lcom/android/server/notification/ShortcutHelper;)V
PLcom/android/server/notification/ShortcutHelper;-><clinit>()V
-PLcom/android/server/notification/ShortcutHelper;-><init>(Landroid/content/pm/LauncherApps;Lcom/android/server/notification/ShortcutHelper$ShortcutListener;Landroid/content/pm/ShortcutServiceInternal;Landroid/os/UserManager;)V
-PLcom/android/server/notification/ShortcutHelper;->getValidShortcutInfo(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ShortcutInfo;
-PLcom/android/server/notification/ShortcutHelper;->maybeListenForShortcutChangesForBubbles(Lcom/android/server/notification/NotificationRecord;ZLandroid/os/Handler;)V
-PLcom/android/server/notification/SmallHash;->hash(I)I
-PLcom/android/server/notification/SmallHash;->hash(Ljava/lang/String;)I
-PLcom/android/server/notification/SnoozeHelper$$ExternalSyntheticLambda3;-><init>(JLcom/android/modules/utils/TypedXmlSerializer;)V
-PLcom/android/server/notification/SnoozeHelper$$ExternalSyntheticLambda4;-><init>(Lcom/android/modules/utils/TypedXmlSerializer;)V
+PLcom/android/server/notification/ShortcutHelper;-><init>(Landroid/content/pm/LauncherApps;Lcom/android/server/notification/NotificationManagerService$1;Landroid/content/pm/ShortcutServiceInternal;Landroid/os/UserManager;)V
+HPLcom/android/server/notification/ShortcutHelper;->getValidShortcutInfo(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ShortcutInfo;
+HPLcom/android/server/notification/ShortcutHelper;->maybeListenForShortcutChangesForBubbles(Lcom/android/server/notification/NotificationRecord;Z)V
PLcom/android/server/notification/SnoozeHelper$1;-><init>(Lcom/android/server/notification/SnoozeHelper;)V
PLcom/android/server/notification/SnoozeHelper;-><clinit>()V
-PLcom/android/server/notification/SnoozeHelper;-><init>(Landroid/content/Context;Lcom/android/server/notification/SnoozeHelper$Callback;Lcom/android/server/notification/ManagedServices$UserProfiles;)V
-PLcom/android/server/notification/SnoozeHelper;->cancel(ILjava/lang/String;)Z
-HPLcom/android/server/notification/SnoozeHelper;->cancel(ILjava/lang/String;Ljava/lang/String;I)Z
-PLcom/android/server/notification/SnoozeHelper;->getSnoozeContextForUnpostedNotification(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/notification/SnoozeHelper;->getSnoozeTimeForUnpostedNotification(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/Long;
-HPLcom/android/server/notification/SnoozeHelper;->getSnoozed(ILjava/lang/String;)Ljava/util/Collection;
+PLcom/android/server/notification/SnoozeHelper;-><init>(Landroid/content/Context;Lcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda4;Lcom/android/server/notification/ManagedServices$UserProfiles;)V
+HPLcom/android/server/notification/SnoozeHelper;->cancel(IILjava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/notification/SnoozeHelper;->cancel(ILjava/lang/String;)V
+PLcom/android/server/notification/SnoozeHelper;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/notification/SnoozeHelper;->getSnoozeContextForUnpostedNotification(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/notification/SnoozeHelper;->getSnoozeTimeForUnpostedNotification(Ljava/lang/String;)Ljava/lang/Long;
+PLcom/android/server/notification/SnoozeHelper;->getSnoozed(ILjava/lang/String;)Ljava/util/Collection;
PLcom/android/server/notification/SnoozeHelper;->getTrimmedString(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/notification/SnoozeHelper;->isSnoozed(ILjava/lang/String;Ljava/lang/String;)Z
-PLcom/android/server/notification/SnoozeHelper;->readXml(Lcom/android/modules/utils/TypedXmlPullParser;J)V
-PLcom/android/server/notification/SnoozeHelper;->scheduleRepostsForPersistedNotifications(J)V
-HPLcom/android/server/notification/SnoozeHelper;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;)V
-PLcom/android/server/notification/SnoozeHelper;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;Landroid/util/ArrayMap;Ljava/lang/String;Lcom/android/server/notification/SnoozeHelper$Inserter;)V
-PLcom/android/server/notification/SystemConditionProviderService;-><init>()V
-PLcom/android/server/notification/SystemConditionProviderService;->formatDuration(J)Ljava/lang/String;
-HPLcom/android/server/notification/SystemConditionProviderService;->ts(J)Ljava/lang/String;
+PLcom/android/server/notification/SnoozeHelper;->isSnoozed(Ljava/lang/String;)Z
+PLcom/android/server/notification/SnoozeHelper;->repostGroupSummary(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/notification/SystemConditionProviderService;->attachBase(Landroid/content/Context;)V
+PLcom/android/server/notification/SystemConditionProviderService;->dumpUpcomingTime(Ljava/io/PrintWriter;JJ)V
+PLcom/android/server/notification/SystemConditionProviderService;->ts(J)Ljava/lang/String;
+HPLcom/android/server/notification/TimeToLiveHelper$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/notification/TimeToLiveHelper$1;-><init>(Lcom/android/server/notification/TimeToLiveHelper;)V
+PLcom/android/server/notification/TimeToLiveHelper;-><init>(Lcom/android/server/notification/NotificationManagerService$1;Landroid/content/Context;)V
+PLcom/android/server/notification/TimeToLiveHelper;->cancelScheduledTimeoutLocked(Lcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/TimeToLiveHelper;->getAlarmPendingIntent(ILjava/lang/String;)Landroid/app/PendingIntent;
+HPLcom/android/server/notification/TimeToLiveHelper;->maybeScheduleFirstAlarm()V
+HPLcom/android/server/notification/TimeToLiveHelper;->removeMatchingEntry(Ljava/lang/String;)V
+HPLcom/android/server/notification/TimeToLiveHelper;->scheduleTimeoutLocked(Lcom/android/server/notification/NotificationRecord;J)V
PLcom/android/server/notification/ValidateNotificationPeople$1;-><init>(Lcom/android/server/notification/ValidateNotificationPeople;Landroid/os/Handler;)V
+PLcom/android/server/notification/ValidateNotificationPeople$1;->onChange(ZLandroid/net/Uri;I)V
+PLcom/android/server/notification/ValidateNotificationPeople$LookupResult;-><init>()V
+PLcom/android/server/notification/ValidateNotificationPeople$LookupResult;->getAffinity()F
+PLcom/android/server/notification/ValidateNotificationPeople$LookupResult;->isExpired()Z
+PLcom/android/server/notification/ValidateNotificationPeople$LookupResult;->mergeContact(Landroid/database/Cursor;)V
+PLcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;-><init>(Lcom/android/server/notification/ValidateNotificationPeople;Landroid/content/Context;Ljava/lang/String;Ljava/util/LinkedList;)V
+PLcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;->addContacts(Lcom/android/server/notification/ValidateNotificationPeople$LookupResult;Landroid/content/Context;Landroid/net/Uri;)V
+PLcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;->applyChangesLocked(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;->searchContacts(Landroid/content/Context;Landroid/net/Uri;)Lcom/android/server/notification/ValidateNotificationPeople$LookupResult;
+PLcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;->work()V
PLcom/android/server/notification/ValidateNotificationPeople;-><clinit>()V
PLcom/android/server/notification/ValidateNotificationPeople;-><init>()V
-PLcom/android/server/notification/ValidateNotificationPeople;->combineLists([Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;
-PLcom/android/server/notification/ValidateNotificationPeople;->getContextAsUser(Landroid/os/UserHandle;)Landroid/content/Context;
-PLcom/android/server/notification/ValidateNotificationPeople;->getExtraPeople(Landroid/os/Bundle;)[Ljava/lang/String;
-PLcom/android/server/notification/ValidateNotificationPeople;->getExtraPeopleForKey(Landroid/os/Bundle;Ljava/lang/String;)[Ljava/lang/String;
+PLcom/android/server/notification/ValidateNotificationPeople;->getCacheKey(ILjava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/notification/ValidateNotificationPeople;->getContextAsUser(Landroid/os/UserHandle;)Landroid/content/Context;
+HPLcom/android/server/notification/ValidateNotificationPeople;->getExtraPeople(Landroid/os/Bundle;)[Ljava/lang/String;
+HPLcom/android/server/notification/ValidateNotificationPeople;->getExtraPeopleForKey(Ljava/lang/String;Landroid/os/Bundle;)[Ljava/lang/String;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/notification/ValidateNotificationPeople;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
-PLcom/android/server/notification/ValidateNotificationPeople;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+HPLcom/android/server/notification/ValidateNotificationPeople;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
PLcom/android/server/notification/ValidateNotificationPeople;->setConfig(Lcom/android/server/notification/RankingConfig;)V
PLcom/android/server/notification/ValidateNotificationPeople;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
-PLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
-PLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;Ljava/util/List;[FLandroid/util/ArraySet;)Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;
+HPLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+HPLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;Ljava/util/List;[FLandroid/util/ArraySet;)Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;
PLcom/android/server/notification/VibratorHelper;-><clinit>()V
-HPLcom/android/server/notification/VibratorHelper;-><init>(Landroid/content/Context;)V
-PLcom/android/server/notification/VibratorHelper;->getFloatArray(Landroid/content/res/Resources;I)[F
-PLcom/android/server/notification/VibratorHelper;->getLongArray(Landroid/content/res/Resources;II[J)[J
+HPLcom/android/server/notification/VibratorHelper;-><init>(Landroid/content/Context;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;
+PLcom/android/server/notification/VibratorHelper;->createDefaultVibration(Z)Landroid/os/VibrationEffect;
+PLcom/android/server/notification/VibratorHelper;->createVibrationEffectFromSoundUri(Landroid/net/Uri;)Landroid/os/VibrationEffect;
+PLcom/android/server/notification/VibratorHelper;->createWaveformVibration([JZ)Landroid/os/VibrationEffect;
+HPLcom/android/server/notification/VibratorHelper;->getFloatArray(Landroid/content/res/Resources;I)[F+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;
PLcom/android/server/notification/VisibilityExtractor;-><init>()V
-PLcom/android/server/notification/VisibilityExtractor;->adminAllowsKeyguardFeature(II)Z
PLcom/android/server/notification/VisibilityExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
-PLcom/android/server/notification/VisibilityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+HPLcom/android/server/notification/VisibilityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Landroid/app/admin/DevicePolicyManager;Landroid/app/admin/DevicePolicyManager;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
PLcom/android/server/notification/VisibilityExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
PLcom/android/server/notification/VisibilityExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
PLcom/android/server/notification/ZenLog;-><clinit>()V
HPLcom/android/server/notification/ZenLog;->append(ILjava/lang/String;)V
PLcom/android/server/notification/ZenLog;->componentListToString(Ljava/util/List;)Ljava/lang/String;
-PLcom/android/server/notification/ZenLog;->componentToString(Landroid/content/ComponentName;)Ljava/lang/String;
-PLcom/android/server/notification/ZenLog;->hintsToString(I)Ljava/lang/String;
-PLcom/android/server/notification/ZenLog;->subscribeResult(Landroid/service/notification/IConditionProvider;Landroid/os/RemoteException;)Ljava/lang/String;
+PLcom/android/server/notification/ZenLog;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/notification/ZenLog;->ringerModeToString(I)Ljava/lang/String;
PLcom/android/server/notification/ZenLog;->traceConfig(Ljava/lang/String;Landroid/content/ComponentName;Landroid/service/notification/ZenModeConfig;Landroid/service/notification/ZenModeConfig;I)V
-PLcom/android/server/notification/ZenLog;->traceDisableEffects(Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;)V
-PLcom/android/server/notification/ZenLog;->traceEffectsSuppressorChanged(Ljava/util/List;Ljava/util/List;J)V
-PLcom/android/server/notification/ZenLog;->traceListenerHintsChanged(III)V
-PLcom/android/server/notification/ZenLog;->traceSetNotificationPolicy(Ljava/lang/String;ILandroid/app/NotificationManager$Policy;)V
-HPLcom/android/server/notification/ZenLog;->traceSetZenMode(ILjava/lang/String;)V
-PLcom/android/server/notification/ZenLog;->traceSubscribe(Landroid/net/Uri;Landroid/service/notification/IConditionProvider;Landroid/os/RemoteException;)V
+PLcom/android/server/notification/ZenLog;->traceMatchesCallFilter(ILjava/lang/String;Z)V
+PLcom/android/server/notification/ZenLog;->traceSetZenMode(ILjava/lang/String;)V
PLcom/android/server/notification/ZenLog;->typeToString(I)Ljava/lang/String;
-PLcom/android/server/notification/ZenLog;->zenModeToString(I)Ljava/lang/String;
PLcom/android/server/notification/ZenModeConditions;-><clinit>()V
PLcom/android/server/notification/ZenModeConditions;-><init>(Lcom/android/server/notification/ZenModeHelper;Lcom/android/server/notification/ConditionProviders;)V
-HPLcom/android/server/notification/ZenModeConditions;->evaluateConfig(Landroid/service/notification/ZenModeConfig;Landroid/content/ComponentName;Z)V
-HPLcom/android/server/notification/ZenModeConditions;->evaluateRule(Landroid/service/notification/ZenModeConfig$ZenRule;Landroid/util/ArraySet;Landroid/content/ComponentName;Z)V
-PLcom/android/server/notification/ZenModeConditions;->onBootComplete()V
-PLcom/android/server/notification/ZenModeConditions;->onConditionChanged(Landroid/net/Uri;Landroid/service/notification/Condition;)V
-PLcom/android/server/notification/ZenModeConditions;->onUserSwitched()V
-PLcom/android/server/notification/ZenModeConditions;->updateSnoozing(Landroid/service/notification/ZenModeConfig$ZenRule;)Z
-HPLcom/android/server/notification/ZenModeEventLogger$ZenModeInfo;-><init>(ILandroid/service/notification/ZenModeConfig;Landroid/app/NotificationManager$Policy;)V
-PLcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;->-$$Nest$minit(Lcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;Lcom/android/server/notification/ZenModeEventLogger$ZenModeInfo;Lcom/android/server/notification/ZenModeEventLogger$ZenModeInfo;II)V
-PLcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;->-$$Nest$mshouldLogChanges(Lcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;)Z
+PLcom/android/server/notification/ZenModeConditions;->evaluateConfig(Landroid/service/notification/ZenModeConfig;Landroid/content/ComponentName;Z)V
+HPLcom/android/server/notification/ZenModeConditions;->evaluateRule(Landroid/service/notification/ZenModeConfig$ZenRule;Landroid/util/ArraySet;Landroid/content/ComponentName;ZZ)V
PLcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;-><init>()V
-PLcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;->hasActiveRuleCountDiff()Z
-HPLcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;->init(Lcom/android/server/notification/ZenModeEventLogger$ZenModeInfo;Lcom/android/server/notification/ZenModeEventLogger$ZenModeInfo;II)V
-PLcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;->numActiveRulesInConfig(Landroid/service/notification/ZenModeConfig;)I
+PLcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;->activeRulesList(Landroid/service/notification/ZenModeConfig;)Ljava/util/List;
PLcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;->shouldLogChanges()Z
-PLcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;->zenModeFlipped()Z
PLcom/android/server/notification/ZenModeEventLogger;-><init>(Landroid/content/pm/PackageManager;)V
-PLcom/android/server/notification/ZenModeEventLogger;->maybeLogZenChange(Lcom/android/server/notification/ZenModeEventLogger$ZenModeInfo;Lcom/android/server/notification/ZenModeEventLogger$ZenModeInfo;II)V
PLcom/android/server/notification/ZenModeExtractor;-><clinit>()V
PLcom/android/server/notification/ZenModeExtractor;-><init>()V
PLcom/android/server/notification/ZenModeExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
-PLcom/android/server/notification/ZenModeExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+HPLcom/android/server/notification/ZenModeExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
PLcom/android/server/notification/ZenModeExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
PLcom/android/server/notification/ZenModeExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
PLcom/android/server/notification/ZenModeFiltering$RepeatCallers;-><init>()V
-PLcom/android/server/notification/ZenModeFiltering$RepeatCallers;-><init>(Lcom/android/server/notification/ZenModeFiltering$RepeatCallers-IA;)V
+PLcom/android/server/notification/ZenModeFiltering$RepeatCallers;->cleanUp(Landroid/util/ArrayMap;J)V
+PLcom/android/server/notification/ZenModeFiltering$RepeatCallers;->recordCallers([Ljava/lang/String;Landroid/util/ArraySet;J)V
PLcom/android/server/notification/ZenModeFiltering;-><clinit>()V
PLcom/android/server/notification/ZenModeFiltering;-><init>(Landroid/content/Context;)V
+PLcom/android/server/notification/ZenModeFiltering;->isCall(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/ZenModeFiltering;->matchesCallFilter(Landroid/content/Context;ILandroid/app/NotificationManager$Policy;Landroid/os/UserHandle;Landroid/os/Bundle;Lcom/android/server/notification/ValidateNotificationPeople;I)Z
PLcom/android/server/notification/ZenModeFiltering;->shouldIntercept(ILandroid/app/NotificationManager$Policy;Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/ZenModeHelper$Callback;-><init>()V
-PLcom/android/server/notification/ZenModeHelper$H;->-$$Nest$mpostMetricsTimer(Lcom/android/server/notification/ZenModeHelper$H;)V
-PLcom/android/server/notification/ZenModeHelper$H;->-$$Nest$mpostUpdateRingerAndAudio(Lcom/android/server/notification/ZenModeHelper$H;Z)V
+PLcom/android/server/notification/ZenModeHelper$Callback;->onConsolidatedPolicyChanged(Landroid/app/NotificationManager$Policy;)V
+PLcom/android/server/notification/ZenModeHelper$Callback;->onPolicyChanged(Landroid/app/NotificationManager$Policy;)V
PLcom/android/server/notification/ZenModeHelper$H;-><init>(Lcom/android/server/notification/ZenModeHelper;Landroid/os/Looper;)V
-PLcom/android/server/notification/ZenModeHelper$H;-><init>(Lcom/android/server/notification/ZenModeHelper;Landroid/os/Looper;Lcom/android/server/notification/ZenModeHelper$H-IA;)V
PLcom/android/server/notification/ZenModeHelper$H;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/notification/ZenModeHelper$H;->postMetricsTimer()V
-PLcom/android/server/notification/ZenModeHelper$H;->postUpdateRingerAndAudio(Z)V
PLcom/android/server/notification/ZenModeHelper$Metrics;-><init>(Lcom/android/server/notification/ZenModeHelper;)V
-PLcom/android/server/notification/ZenModeHelper$Metrics;-><init>(Lcom/android/server/notification/ZenModeHelper;Lcom/android/server/notification/ZenModeHelper$Metrics-IA;)V
PLcom/android/server/notification/ZenModeHelper$Metrics;->emit()V
-PLcom/android/server/notification/ZenModeHelper$Metrics;->emitDndType()V
-PLcom/android/server/notification/ZenModeHelper$Metrics;->emitRules()V
-PLcom/android/server/notification/ZenModeHelper$Metrics;->emitZenMode()V
PLcom/android/server/notification/ZenModeHelper$Metrics;->onConfigChanged()V
PLcom/android/server/notification/ZenModeHelper$RingerModeDelegate;-><init>(Lcom/android/server/notification/ZenModeHelper;)V
PLcom/android/server/notification/ZenModeHelper$RingerModeDelegate;->getRingerModeAffectedStreams(I)I
PLcom/android/server/notification/ZenModeHelper$RingerModeDelegate;->onSetRingerModeInternal(IILjava/lang/String;ILandroid/media/VolumePolicy;)I
+PLcom/android/server/notification/ZenModeHelper$RingerModeDelegate;->toString()Ljava/lang/String;
PLcom/android/server/notification/ZenModeHelper$SettingsObserver;-><init>(Lcom/android/server/notification/ZenModeHelper;Landroid/os/Handler;)V
-PLcom/android/server/notification/ZenModeHelper$SettingsObserver;->observe()V
PLcom/android/server/notification/ZenModeHelper$SettingsObserver;->update(Landroid/net/Uri;)V
-PLcom/android/server/notification/ZenModeHelper;->-$$Nest$fgetmConfigLock(Lcom/android/server/notification/ZenModeHelper;)Ljava/lang/Object;
-PLcom/android/server/notification/ZenModeHelper;->-$$Nest$fgetmContext(Lcom/android/server/notification/ZenModeHelper;)Landroid/content/Context;
-PLcom/android/server/notification/ZenModeHelper;->-$$Nest$fgetmHandler(Lcom/android/server/notification/ZenModeHelper;)Lcom/android/server/notification/ZenModeHelper$H;
-PLcom/android/server/notification/ZenModeHelper;->-$$Nest$msetPreviousRingerModeSetting(Lcom/android/server/notification/ZenModeHelper;Ljava/lang/Integer;)V
-PLcom/android/server/notification/ZenModeHelper;->-$$Nest$mupdateRingerAndAudio(Lcom/android/server/notification/ZenModeHelper;Z)V
PLcom/android/server/notification/ZenModeHelper;-><clinit>()V
-HPLcom/android/server/notification/ZenModeHelper;-><init>(Landroid/content/Context;Landroid/os/Looper;Ljava/time/Clock;Lcom/android/server/notification/ConditionProviders;Lcom/android/internal/config/sysui/SystemUiSystemPropertiesFlags$FlagResolver;Lcom/android/server/notification/ZenModeEventLogger;)V
-PLcom/android/server/notification/ZenModeHelper;->addCallback(Lcom/android/server/notification/ZenModeHelper$Callback;)V
+PLcom/android/server/notification/ZenModeHelper;-><init>(Landroid/content/Context;Landroid/os/Looper;Ljava/time/Clock;Lcom/android/server/notification/ConditionProviders;Lcom/android/internal/config/sysui/SystemUiSystemPropertiesFlags$FlagResolver;Lcom/android/server/notification/ZenModeEventLogger;)V
PLcom/android/server/notification/ZenModeHelper;->applyConsolidatedDeviceEffects(I)V
HPLcom/android/server/notification/ZenModeHelper;->applyRestrictions()V
PLcom/android/server/notification/ZenModeHelper;->applyRestrictions(ZZI)V
PLcom/android/server/notification/ZenModeHelper;->applyRestrictions(ZZII)V
+PLcom/android/server/notification/ZenModeHelper;->canManageAutomaticZenRule(Landroid/service/notification/ZenModeConfig$ZenRule;)Z
+PLcom/android/server/notification/ZenModeHelper;->checkSetRuleStateOrigin(ILjava/lang/String;)V
PLcom/android/server/notification/ZenModeHelper;->cleanUpZenRules()V
-PLcom/android/server/notification/ZenModeHelper;->computeZenMode()I
PLcom/android/server/notification/ZenModeHelper;->deleteRulesWithoutOwner(Landroid/util/ArrayMap;)V
-PLcom/android/server/notification/ZenModeHelper;->dispatchOnConfigChanged()V
-HPLcom/android/server/notification/ZenModeHelper;->evaluateZenModeLocked(ILjava/lang/String;Z)V
-PLcom/android/server/notification/ZenModeHelper;->findMatchingRules(Landroid/service/notification/ZenModeConfig;Landroid/net/Uri;Landroid/service/notification/Condition;)Ljava/util/List;
+PLcom/android/server/notification/ZenModeHelper;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/notification/ZenModeHelper;->evaluateZenModeLocked(ILjava/lang/String;Z)V
PLcom/android/server/notification/ZenModeHelper;->getConfig()Landroid/service/notification/ZenModeConfig;
-PLcom/android/server/notification/ZenModeHelper;->getNotificationPolicy()Landroid/app/NotificationManager$Policy;
-PLcom/android/server/notification/ZenModeHelper;->getNotificationPolicy(Landroid/service/notification/ZenModeConfig;)Landroid/app/NotificationManager$Policy;
-PLcom/android/server/notification/ZenModeHelper;->getSuppressedEffects()J
-PLcom/android/server/notification/ZenModeHelper;->getZenMode()I
-PLcom/android/server/notification/ZenModeHelper;->getZenModeListenerInterruptionFilter()I
-PLcom/android/server/notification/ZenModeHelper;->initZenMode()V
-PLcom/android/server/notification/ZenModeHelper;->loadConfigForUser(ILjava/lang/String;)V
-PLcom/android/server/notification/ZenModeHelper;->onSystemReady()V
-PLcom/android/server/notification/ZenModeHelper;->onUserSwitched(I)V
-PLcom/android/server/notification/ZenModeHelper;->readDefaultConfig(Landroid/content/res/Resources;)Landroid/service/notification/ZenModeConfig;
-PLcom/android/server/notification/ZenModeHelper;->readXml(Lcom/android/modules/utils/TypedXmlPullParser;ZI)V
-PLcom/android/server/notification/ZenModeHelper;->requirePublicOrigin(Ljava/lang/String;I)V
-PLcom/android/server/notification/ZenModeHelper;->ruleMatches(Landroid/net/Uri;Landroid/service/notification/Condition;Landroid/service/notification/ZenModeConfig$ZenRule;)Z
-PLcom/android/server/notification/ZenModeHelper;->setAutomaticZenRuleState(Landroid/net/Uri;Landroid/service/notification/Condition;II)V
+PLcom/android/server/notification/ZenModeHelper;->getConfigLocked(Landroid/os/UserHandle;)Landroid/service/notification/ZenModeConfig;
+PLcom/android/server/notification/ZenModeHelper;->getNotificationPolicy(Landroid/os/UserHandle;)Landroid/app/NotificationManager$Policy;
+PLcom/android/server/notification/ZenModeHelper;->getZenRules(Landroid/os/UserHandle;)Ljava/util/List;
+PLcom/android/server/notification/ZenModeHelper;->readXml(Lcom/android/modules/utils/TypedXmlPullParser;ZILandroid/app/backup/BackupRestoreEventLogger;)Z
PLcom/android/server/notification/ZenModeHelper;->setAutomaticZenRuleStateLocked(Landroid/service/notification/ZenModeConfig;Ljava/util/List;Landroid/service/notification/Condition;II)V
-HPLcom/android/server/notification/ZenModeHelper;->setConfigLocked(Landroid/service/notification/ZenModeConfig;ILjava/lang/String;Landroid/content/ComponentName;ZI)Z
-PLcom/android/server/notification/ZenModeHelper;->setConfigLocked(Landroid/service/notification/ZenModeConfig;Landroid/content/ComponentName;ILjava/lang/String;I)Z
+PLcom/android/server/notification/ZenModeHelper;->setConfigLocked(Landroid/service/notification/ZenModeConfig;ILjava/lang/String;Landroid/content/ComponentName;ZI)Z
PLcom/android/server/notification/ZenModeHelper;->setDeviceEffectsApplier(Landroid/service/notification/DeviceEffectsApplier;)V
-PLcom/android/server/notification/ZenModeHelper;->setNotificationPolicy(Landroid/app/NotificationManager$Policy;II)V
PLcom/android/server/notification/ZenModeHelper;->setPreviousRingerModeSetting(Ljava/lang/Integer;)V
-PLcom/android/server/notification/ZenModeHelper;->setPriorityOnlyDndExemptPackages([Ljava/lang/String;)V
-PLcom/android/server/notification/ZenModeHelper;->setSuppressedEffects(J)V
PLcom/android/server/notification/ZenModeHelper;->setZenModeSetting(I)V
-PLcom/android/server/notification/ZenModeHelper;->shouldIntercept(Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/ZenModeHelper;->showZenUpgradeNotification(I)V
-HPLcom/android/server/notification/ZenModeHelper;->updateAndApplyConsolidatedPolicyAndDeviceEffects(ILjava/lang/String;)V
+PLcom/android/server/notification/ZenModeHelper;->updateAndApplyConsolidatedPolicyAndDeviceEffects(ILjava/lang/String;)V
HPLcom/android/server/notification/ZenModeHelper;->updateConfigAndZenModeLocked(Landroid/service/notification/ZenModeConfig;ILjava/lang/String;ZI)V
-PLcom/android/server/notification/ZenModeHelper;->updateDefaultAutomaticRuleNames()V
-PLcom/android/server/notification/ZenModeHelper;->updateDefaultAutomaticRulePolicies()V
-PLcom/android/server/notification/ZenModeHelper;->updateRingerAndAudio(Z)V
-PLcom/android/server/notification/ZenModeHelper;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;ZLjava/lang/Integer;I)V
-PLcom/android/server/oemlock/OemLock;-><init>()V
+PLcom/android/server/notification/ZenModeHelper;->updateRuleStringsForCurrentLocale(Landroid/content/Context;Landroid/service/notification/ZenModeConfig;)V
+PLcom/android/server/notification/ZenModeHelper;->zenRuleToAutomaticZenRule(Landroid/service/notification/ZenModeConfig$ZenRule;)Landroid/app/AutomaticZenRule;
+PLcom/android/server/notification/toast/TextToastRecord;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/statusbar/StatusBarManagerService$1;IILjava/lang/String;ZLandroid/os/IBinder;Ljava/lang/CharSequence;ILandroid/os/Binder;ILandroid/app/ITransientNotificationCallback;)V
+PLcom/android/server/notification/toast/TextToastRecord;->hide()V
+PLcom/android/server/notification/toast/TextToastRecord;->isAppRendered()Z
+PLcom/android/server/notification/toast/TextToastRecord;->show()Z
+PLcom/android/server/notification/toast/ToastRecord;-><init>(Lcom/android/server/notification/NotificationManagerService;IILjava/lang/String;ZLandroid/os/IBinder;ILandroid/os/Binder;I)V
PLcom/android/server/oemlock/OemLockService$1;-><init>(Lcom/android/server/oemlock/OemLockService;)V
PLcom/android/server/oemlock/OemLockService$1;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
PLcom/android/server/oemlock/OemLockService$2;-><init>(Lcom/android/server/oemlock/OemLockService;)V
PLcom/android/server/oemlock/OemLockService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/oemlock/OemLockService;-><init>(Landroid/content/Context;Lcom/android/server/oemlock/OemLock;)V
-PLcom/android/server/oemlock/OemLockService;->getOemLock(Landroid/content/Context;)Lcom/android/server/oemlock/OemLock;
PLcom/android/server/oemlock/OemLockService;->onStart()V
-PLcom/android/server/oemlock/PersistentDataBlockLock;-><init>(Landroid/content/Context;)V
PLcom/android/server/oemlock/VendorLockAidl;->getOemLockHalService()Landroid/hardware/oemlock/IOemLock;
-PLcom/android/server/oemlock/VendorLockHidl;->getOemLockHalService()Landroid/hardware/oemlock/V1_0/IOemLock;
-PLcom/android/server/om/IdmapDaemon$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/oemlock/VendorLockHidl;->getOemLockHalService()Landroid/hardware/oemlock/V1_0/IOemLock$Proxy;
PLcom/android/server/om/IdmapDaemon$$ExternalSyntheticLambda0;->binderDied()V
PLcom/android/server/om/IdmapDaemon$Connection$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/om/IdmapDaemon$Connection;)V
PLcom/android/server/om/IdmapDaemon$Connection$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/om/IdmapDaemon$Connection;->$r8$lambda$_PxKgIA4Eqf9yi0zZSqVFth5eU0(Lcom/android/server/om/IdmapDaemon$Connection;)V
-HPLcom/android/server/om/IdmapDaemon$Connection;-><init>(Lcom/android/server/om/IdmapDaemon;Landroid/os/IIdmap2;)V
-PLcom/android/server/om/IdmapDaemon$Connection;-><init>(Lcom/android/server/om/IdmapDaemon;Landroid/os/IIdmap2;Lcom/android/server/om/IdmapDaemon$Connection-IA;)V
-HPLcom/android/server/om/IdmapDaemon$Connection;->close()V
-PLcom/android/server/om/IdmapDaemon$Connection;->getIdmap2()Landroid/os/IIdmap2;
-PLcom/android/server/om/IdmapDaemon$Connection;->lambda$close$0()V
-PLcom/android/server/om/IdmapDaemon;->$r8$lambda$pEh2sDZUhfJliWY8-qy5fFqPH_A()V
-PLcom/android/server/om/IdmapDaemon;->-$$Nest$fgetmIdmapToken(Lcom/android/server/om/IdmapDaemon;)Ljava/lang/Object;
-PLcom/android/server/om/IdmapDaemon;->-$$Nest$fgetmOpenedCount(Lcom/android/server/om/IdmapDaemon;)Ljava/util/concurrent/atomic/AtomicInteger;
-PLcom/android/server/om/IdmapDaemon;->-$$Nest$fgetmService(Lcom/android/server/om/IdmapDaemon;)Landroid/os/IIdmap2;
-PLcom/android/server/om/IdmapDaemon;->-$$Nest$fputmService(Lcom/android/server/om/IdmapDaemon;Landroid/os/IIdmap2;)V
-PLcom/android/server/om/IdmapDaemon;->-$$Nest$smstopIdmapService()V
+PLcom/android/server/om/IdmapDaemon$Connection;-><init>(Lcom/android/server/om/IdmapDaemon;Landroid/os/IIdmap2;)V
+PLcom/android/server/om/IdmapDaemon$Connection;->close()V
PLcom/android/server/om/IdmapDaemon;-><init>()V
-HPLcom/android/server/om/IdmapDaemon;->connect()Lcom/android/server/om/IdmapDaemon$Connection;
-PLcom/android/server/om/IdmapDaemon;->createIdmap(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZI)Ljava/lang/String;
-PLcom/android/server/om/IdmapDaemon;->getFabricatedOverlayInfos()Ljava/util/List;
+PLcom/android/server/om/IdmapDaemon;->connect()Lcom/android/server/om/IdmapDaemon$Connection;
+PLcom/android/server/om/IdmapDaemon;->createIdmap(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
PLcom/android/server/om/IdmapDaemon;->getIdmapService()Landroid/os/IBinder;
-PLcom/android/server/om/IdmapDaemon;->getInstance()Lcom/android/server/om/IdmapDaemon;
-PLcom/android/server/om/IdmapDaemon;->idmapExists(Ljava/lang/String;I)Z
-PLcom/android/server/om/IdmapDaemon;->lambda$getIdmapService$0()V
-PLcom/android/server/om/IdmapDaemon;->stopIdmapService()V
-HPLcom/android/server/om/IdmapDaemon;->verifyIdmap(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZI)Z
+PLcom/android/server/om/IdmapDaemon;->verifyIdmap(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Z
PLcom/android/server/om/IdmapManager;-><clinit>()V
-PLcom/android/server/om/IdmapManager;-><init>(Lcom/android/server/om/IdmapDaemon;Lcom/android/server/om/PackageManagerHelper;)V
-HPLcom/android/server/om/IdmapManager;->calculateFulfilledPolicies(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/pkg/AndroidPackage;I)I
-HPLcom/android/server/om/IdmapManager;->createIdmap(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;Ljava/lang/String;I)I
-PLcom/android/server/om/IdmapManager;->enforceOverlayable(Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/pkg/AndroidPackage;)Z
+PLcom/android/server/om/IdmapManager;-><init>(Lcom/android/server/om/IdmapDaemon;Lcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;)V
+PLcom/android/server/om/IdmapManager;->calculateFulfilledPolicies(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/pkg/AndroidPackage;I)I
PLcom/android/server/om/IdmapManager;->getFabricatedOverlayInfos()Ljava/util/List;
PLcom/android/server/om/IdmapManager;->idmapExists(Landroid/content/om/OverlayInfo;)Z
-PLcom/android/server/om/IdmapManager;->matchesActorSignature(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;I)Z
-PLcom/android/server/om/OverlayActorEnforcer$ActorState;->$values()[Lcom/android/server/om/OverlayActorEnforcer$ActorState;
PLcom/android/server/om/OverlayActorEnforcer$ActorState;-><clinit>()V
-PLcom/android/server/om/OverlayActorEnforcer$ActorState;-><init>(Ljava/lang/String;I)V
-PLcom/android/server/om/OverlayActorEnforcer;-><init>(Lcom/android/server/om/PackageManagerHelper;)V
-HPLcom/android/server/om/OverlayActorEnforcer;->getPackageNameForActor(Ljava/lang/String;Ljava/util/Map;)Landroid/util/Pair;
+PLcom/android/server/om/OverlayActorEnforcer;-><init>(Lcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;)V
+PLcom/android/server/om/OverlayActorEnforcer;->getPackageNameForActor(Ljava/lang/String;Ljava/util/Map;)Landroid/util/Pair;
+PLcom/android/server/om/OverlayActorEnforcer;->isAllowedActor(Ljava/lang/String;Landroid/content/om/OverlayInfo;II)Lcom/android/server/om/OverlayActorEnforcer$ActorState;
PLcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda0;-><init>(Ljava/lang/String;)V
PLcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
PLcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/om/OverlayManagerService;Ljava/util/List;ILandroid/util/ArraySet;)V
@@ -16681,366 +13092,277 @@ PLcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda2;-><init>
PLcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda2;->acceptOrThrow(Ljava/lang/Object;)V
PLcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda3;-><init>(ILandroid/app/ActivityManagerInternal;)V
PLcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda3;->acceptOrThrow(Ljava/lang/Object;)V
-PLcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda4;-><init>()V
+PLcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda4;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/om/OverlayManagerService$1;-><init>(Lcom/android/server/om/OverlayManagerService;)V
-PLcom/android/server/om/OverlayManagerService$1;->getOverlayInfoByIdentifier(Landroid/content/om/OverlayIdentifier;I)Landroid/content/om/OverlayInfo;
+PLcom/android/server/om/OverlayManagerService$1;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/om/OverlayManagerService$1;->enforceActor(ILandroid/content/om/OverlayIdentifier;Ljava/lang/String;)V
PLcom/android/server/om/OverlayManagerService$1;->handleIncomingUser(ILjava/lang/String;)I
+PLcom/android/server/om/OverlayManagerService$1;->setEnabled(Ljava/lang/String;ZI)Z
PLcom/android/server/om/OverlayManagerService$OverlayManagerPackageMonitor;-><init>(Lcom/android/server/om/OverlayManagerService;)V
-PLcom/android/server/om/OverlayManagerService$OverlayManagerPackageMonitor;-><init>(Lcom/android/server/om/OverlayManagerService;Lcom/android/server/om/OverlayManagerService$OverlayManagerPackageMonitor-IA;)V
+PLcom/android/server/om/OverlayManagerService$OverlayManagerPackageMonitor;->onPackageAppearedWithExtras(Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/om/OverlayManagerService$OverlayManagerPackageMonitor;->onPackageChangedWithExtras(Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/om/OverlayManagerService$OverlayManagerPackageMonitor;->onPackageDisappearedWithExtras(Ljava/lang/String;Landroid/os/Bundle;)V
PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;I)V
PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl$PackageStateUsers;->-$$Nest$fgetmInstalledUsers(Lcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl$PackageStateUsers;)Ljava/util/Set;
-PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl$PackageStateUsers;->-$$Nest$fgetmPackageState(Lcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl$PackageStateUsers;)Lcom/android/server/pm/pkg/PackageState;
-PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl$PackageStateUsers;-><init>(Lcom/android/server/pm/pkg/PackageState;)V
-PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl$PackageStateUsers;-><init>(Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl$PackageStateUsers-IA;)V
-PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->$r8$lambda$OwbHhRYnQy2yMeQN_5EmmuVHt4k(Lcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;ILcom/android/server/pm/pkg/PackageStateInternal;)V
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl$PackageStateUsers;-><init>(Lcom/android/server/pm/pkg/PackageStateInternal;)V
PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->addPackageUser(Lcom/android/server/pm/pkg/PackageState;I)Lcom/android/server/pm/pkg/PackageState;
-PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->getConfigSignaturePackage()Ljava/lang/String;
-PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->getNamedActors()Ljava/util/Map;
-PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->getOverlayableForTarget(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/om/OverlayableInfo;
-HPLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->getPackageStateForUser(Ljava/lang/String;I)Lcom/android/server/pm/pkg/PackageState;
-PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->initializeForUser(I)Landroid/util/ArrayMap;
-HPLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->lambda$initializeForUser$0(ILcom/android/server/pm/pkg/PackageStateInternal;)V
-PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->signaturesMatching(Ljava/lang/String;Ljava/lang/String;I)Z
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->addPackageUser(ILjava/lang/String;)Lcom/android/server/pm/pkg/PackageState;
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->addPackageUser(Lcom/android/server/pm/pkg/PackageStateInternal;I)Lcom/android/server/pm/pkg/PackageState;
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->doesTargetDefineOverlayable(ILjava/lang/String;)Z
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->dump(Ljava/io/PrintWriter;Lcom/android/server/om/DumpState;)V
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->getPackageStateForUser(ILjava/lang/String;)Lcom/android/server/pm/pkg/PackageState;
+PLcom/android/server/om/OverlayManagerService$UserLifecycleListener;-><init>(Lcom/android/server/om/OverlayManagerService;)V
PLcom/android/server/om/OverlayManagerService$UserReceiver;-><init>(Lcom/android/server/om/OverlayManagerService;)V
-PLcom/android/server/om/OverlayManagerService$UserReceiver;-><init>(Lcom/android/server/om/OverlayManagerService;Lcom/android/server/om/OverlayManagerService$UserReceiver-IA;)V
-PLcom/android/server/om/OverlayManagerService;->$r8$lambda$GzMpaQrsjSzVXIS6Ewd4ZVcwe0E(Landroid/util/SparseArray;Landroid/content/pm/UserPackage;)V
-PLcom/android/server/om/OverlayManagerService;->$r8$lambda$VKUwGCBEaC1c_ubMSsuE2Rf3650(ILandroid/app/ActivityManagerInternal;Ljava/lang/String;)V
-PLcom/android/server/om/OverlayManagerService;->$r8$lambda$gmoodzoVnIfdn8kZYi3Op37no2g(Lcom/android/server/om/OverlayManagerService;Ljava/util/List;ILandroid/util/ArraySet;)V
-PLcom/android/server/om/OverlayManagerService;->$r8$lambda$rFdAtDXTB46MBaeMgzs6tfJWKtk(Ljava/lang/String;Landroid/content/om/OverlayInfo;)Z
-PLcom/android/server/om/OverlayManagerService;->-$$Nest$fgetmImpl(Lcom/android/server/om/OverlayManagerService;)Lcom/android/server/om/OverlayManagerServiceImpl;
-PLcom/android/server/om/OverlayManagerService;->-$$Nest$fgetmLock(Lcom/android/server/om/OverlayManagerService;)Ljava/lang/Object;
-HPLcom/android/server/om/OverlayManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/om/OverlayManagerService;->broadcastActionOverlayChanged(Ljava/util/Set;I)V
+PLcom/android/server/om/OverlayManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/om/OverlayManagerService;->getDefaultOverlayPackages()[Ljava/lang/String;
-PLcom/android/server/om/OverlayManagerService;->groupTargetsByUserId(Ljava/util/Set;)Landroid/util/SparseArray;
PLcom/android/server/om/OverlayManagerService;->initIfNeeded()V
-HPLcom/android/server/om/OverlayManagerService;->lambda$broadcastActionOverlayChanged$3(ILandroid/app/ActivityManagerInternal;Ljava/lang/String;)V
-PLcom/android/server/om/OverlayManagerService;->lambda$groupTargetsByUserId$2(Landroid/util/SparseArray;Landroid/content/pm/UserPackage;)V
-PLcom/android/server/om/OverlayManagerService;->lambda$new$0(Ljava/lang/String;Landroid/content/om/OverlayInfo;)Z
-PLcom/android/server/om/OverlayManagerService;->lambda$updateTargetPackagesLocked$1(Ljava/util/List;ILandroid/util/ArraySet;)V
PLcom/android/server/om/OverlayManagerService;->onStart()V
PLcom/android/server/om/OverlayManagerService;->onStartUser(I)V
PLcom/android/server/om/OverlayManagerService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/om/OverlayManagerService;->persistSettingsLocked()V
PLcom/android/server/om/OverlayManagerService;->restoreSettings()V
-PLcom/android/server/om/OverlayManagerService;->updateActivityManager(Ljava/util/List;I)V
-HPLcom/android/server/om/OverlayManagerService;->updatePackageManagerLocked(Ljava/util/Collection;I)Ljava/util/List;
+PLcom/android/server/om/OverlayManagerService;->updatePackageManagerLocked(Ljava/util/Collection;I)Ljava/util/List;
PLcom/android/server/om/OverlayManagerService;->updateTargetPackagesLocked(Ljava/util/Set;)V
-PLcom/android/server/om/OverlayManagerServiceImpl$$ExternalSyntheticLambda0;-><init>(Landroid/util/ArrayMap;)V
+PLcom/android/server/om/OverlayManagerServiceImpl$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V
PLcom/android/server/om/OverlayManagerServiceImpl$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
-PLcom/android/server/om/OverlayManagerServiceImpl$$ExternalSyntheticLambda2;-><init>(Ljava/util/Set;)V
PLcom/android/server/om/OverlayManagerServiceImpl$$ExternalSyntheticLambda3;-><init>(ILjava/util/function/Predicate;)V
PLcom/android/server/om/OverlayManagerServiceImpl$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z
-PLcom/android/server/om/OverlayManagerServiceImpl;->$r8$lambda$4_u0zZtyj6jePmGinO-0D6huxCc(Landroid/util/ArrayMap;Landroid/content/om/OverlayInfo;)Z
-PLcom/android/server/om/OverlayManagerServiceImpl;->$r8$lambda$Tz06Z6gMGNWEvNzQgIVBx0FKDBw(ILjava/util/function/Predicate;Landroid/content/om/OverlayInfo;)Z
-PLcom/android/server/om/OverlayManagerServiceImpl;-><init>(Lcom/android/server/om/PackageManagerHelper;Lcom/android/server/om/IdmapManager;Lcom/android/server/om/OverlayManagerSettings;Lcom/android/internal/content/om/OverlayConfig;[Ljava/lang/String;)V
-PLcom/android/server/om/OverlayManagerServiceImpl;->calculateNewState(Landroid/content/om/OverlayInfo;Lcom/android/server/pm/pkg/AndroidPackage;III)I
-PLcom/android/server/om/OverlayManagerServiceImpl;->cleanStaleResourceCache()V
-HPLcom/android/server/om/OverlayManagerServiceImpl;->getEnabledOverlayPaths(Ljava/lang/String;IZ)Landroid/content/pm/overlay/OverlayPaths;
-PLcom/android/server/om/OverlayManagerServiceImpl;->getFabricatedOverlayInfos()Ljava/util/List;
-PLcom/android/server/om/OverlayManagerServiceImpl;->getOverlayInfo(Landroid/content/om/OverlayIdentifier;I)Landroid/content/om/OverlayInfo;
-PLcom/android/server/om/OverlayManagerServiceImpl;->getPackageConfiguredPriority(Lcom/android/server/pm/pkg/AndroidPackage;)I
-PLcom/android/server/om/OverlayManagerServiceImpl;->isPackageConfiguredEnabled(Lcom/android/server/pm/pkg/AndroidPackage;)Z
-PLcom/android/server/om/OverlayManagerServiceImpl;->isPackageConfiguredMutable(Lcom/android/server/pm/pkg/AndroidPackage;)Z
-PLcom/android/server/om/OverlayManagerServiceImpl;->lambda$removeOverlaysForUser$2(ILjava/util/function/Predicate;Landroid/content/om/OverlayInfo;)Z
-PLcom/android/server/om/OverlayManagerServiceImpl;->lambda$updateOverlaysForUser$0(Landroid/util/ArrayMap;Landroid/content/om/OverlayInfo;)Z
-HPLcom/android/server/om/OverlayManagerServiceImpl;->mustReinitializeOverlay(Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/om/OverlayInfo;)Z
-PLcom/android/server/om/OverlayManagerServiceImpl;->removeOverlaysForUser(Ljava/util/function/Predicate;I)Ljava/util/Set;
-HPLcom/android/server/om/OverlayManagerServiceImpl;->updateOverlaysForUser(I)Landroid/util/ArraySet;
-HPLcom/android/server/om/OverlayManagerServiceImpl;->updatePackageOverlays(Lcom/android/server/pm/pkg/AndroidPackage;II)Ljava/util/Set;
-HPLcom/android/server/om/OverlayManagerServiceImpl;->updateState(Landroid/content/om/CriticalOverlayInfo;II)Z
-PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda11;-><init>()V
-PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda11;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda12;-><init>(I)V
-PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda12;->test(Ljava/lang/Object;)Z
-PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda2;-><init>()V
-PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda2;->applyAsInt(Ljava/lang/Object;)I
-PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda3;-><init>(Ljava/lang/String;)V
-HPLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z
-PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda4;-><init>(Ljava/util/Set;)V
-PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V
-PLcom/android/server/om/OverlayManagerSettings$BadKeyException;-><init>(Landroid/content/om/OverlayIdentifier;I)V
-PLcom/android/server/om/OverlayManagerSettings$Serializer;->persist(Ljava/util/ArrayList;Ljava/io/OutputStream;)V
-HPLcom/android/server/om/OverlayManagerSettings$Serializer;->persistRow(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)V
-PLcom/android/server/om/OverlayManagerSettings$Serializer;->restore(Ljava/util/ArrayList;Ljava/io/InputStream;)V
-HPLcom/android/server/om/OverlayManagerSettings$Serializer;->restoreRow(Lcom/android/modules/utils/TypedXmlPullParser;I)Lcom/android/server/om/OverlayManagerSettings$SettingsItem;
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmBaseCodePath(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmCategory(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmIsEnabled(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmIsFabricated(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmIsMutable(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
-HPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmOverlay(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Landroid/content/om/OverlayIdentifier;
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmPriority(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmState(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmTargetOverlayableName(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmTargetPackageName(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
-HPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmUserId(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
+PLcom/android/server/om/OverlayManagerServiceImpl;-><init>(Lcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;Lcom/android/server/om/IdmapManager;Lcom/android/server/om/OverlayManagerSettings;Lcom/android/internal/content/om/OverlayConfig;[Ljava/lang/String;)V
+PLcom/android/server/om/OverlayManagerServiceImpl;->dump(Ljava/io/PrintWriter;Lcom/android/server/om/DumpState;)V
+PLcom/android/server/om/OverlayManagerServiceImpl;->getEnabledOverlayPaths(ILjava/lang/String;Z)Landroid/content/pm/overlay/OverlayPaths;
+PLcom/android/server/om/OverlayManagerServiceImpl;->mustReinitializeOverlay(Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/om/OverlayInfo;)Z
+PLcom/android/server/om/OverlayManagerServiceImpl;->reconcileSettingsForPackage(IILjava/lang/String;)Ljava/util/Set;
+PLcom/android/server/om/OverlayManagerServiceImpl;->removeOverlaysForUser(ILjava/util/function/Predicate;)Ljava/util/Set;
+PLcom/android/server/om/OverlayManagerServiceImpl;->setEnabled(ILandroid/content/om/OverlayIdentifier;Z)Ljava/util/Set;
+PLcom/android/server/om/OverlayManagerServiceImpl;->updateOverlaysForTarget(IILjava/lang/String;)Ljava/util/Set;
+PLcom/android/server/om/OverlayManagerServiceImpl;->updateOverlaysForUser(I)Landroid/util/ArraySet;
+PLcom/android/server/om/OverlayManagerServiceImpl;->updatePackageOverlays(Lcom/android/server/pm/pkg/AndroidPackage;II)Ljava/util/Set;
+PLcom/android/server/om/OverlayManagerServiceImpl;->updateState(Landroid/content/om/CriticalOverlayInfo;II)Z
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda0;-><init>(II)V
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda1;->applyAsInt(Ljava/lang/Object;)I
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda2;-><init>(ILjava/util/Set;)V
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda3;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/om/OverlayManagerSettings;Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda7;->accept(Ljava/lang/Object;)V
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda9;-><init>(I)V
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda9;->apply(Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$mgetOverlayInfo(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Landroid/content/om/OverlayInfo;
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$mgetPriority(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$mgetState(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$mgetTargetPackageName(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$mgetUserId(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$misEnabled(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$msetBaseCodePath(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;Ljava/lang/String;)Z
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$msetCategory(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;Ljava/lang/String;)Z
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$msetState(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;I)Z
-HPLcom/android/server/om/OverlayManagerSettings$SettingsItem;-><init>(Landroid/content/om/OverlayIdentifier;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IZZILjava/lang/String;Z)V
-HPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getOverlayInfo()Landroid/content/om/OverlayInfo;
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getPriority()I
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getState()I
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getTargetPackageName()Ljava/lang/String;
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getUserId()I
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->invalidateCache()V
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->isEnabled()Z
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->setBaseCodePath(Ljava/lang/String;)Z
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->setCategory(Ljava/lang/String;)Z
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->setState(I)Z
-HPLcom/android/server/om/OverlayManagerSettings;->$r8$lambda$09biqz89cy9hpldr4q1PFVNuWP0(Ljava/lang/String;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
-PLcom/android/server/om/OverlayManagerSettings;->$r8$lambda$6NW65LIpjrluanlvM01K9BiQbu8(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
-PLcom/android/server/om/OverlayManagerSettings;->$r8$lambda$UJI7EebfpGNorHvdj0-tvz36dZM(ILcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
-PLcom/android/server/om/OverlayManagerSettings;->$r8$lambda$YzjH3ppJzDqsTP84tx6Vx4SWtMQ(Ljava/lang/String;)Ljava/util/List;
-PLcom/android/server/om/OverlayManagerSettings;->$r8$lambda$kDyA0E1XFyUdbniZy8flqK7NCTI(Ljava/util/Set;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)V
-PLcom/android/server/om/OverlayManagerSettings;->$r8$lambda$kdu1J4VP2rTGaX3uyigDkFiHHyI(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Landroid/content/om/OverlayInfo;
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;-><init>(Landroid/content/om/OverlayIdentifier;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IZZILjava/lang/String;Z)V
PLcom/android/server/om/OverlayManagerSettings;-><init>()V
-PLcom/android/server/om/OverlayManagerSettings;->getAllBaseCodePaths()Ljava/util/Set;
-HPLcom/android/server/om/OverlayManagerSettings;->getEnabled(Landroid/content/om/OverlayIdentifier;I)Z
-HPLcom/android/server/om/OverlayManagerSettings;->getNullableOverlayInfo(Landroid/content/om/OverlayIdentifier;I)Landroid/content/om/OverlayInfo;
-HPLcom/android/server/om/OverlayManagerSettings;->getOverlayInfo(Landroid/content/om/OverlayIdentifier;I)Landroid/content/om/OverlayInfo;
-HPLcom/android/server/om/OverlayManagerSettings;->getOverlaysForTarget(Ljava/lang/String;I)Ljava/util/List;
+PLcom/android/server/om/OverlayManagerSettings;->getNullableOverlayInfo(Landroid/content/om/OverlayIdentifier;I)Landroid/content/om/OverlayInfo;
+PLcom/android/server/om/OverlayManagerSettings;->getOverlayInfo(Landroid/content/om/OverlayIdentifier;I)Landroid/content/om/OverlayInfo;
+PLcom/android/server/om/OverlayManagerSettings;->getOverlaysForTarget(ILjava/lang/String;)Ljava/util/List;
PLcom/android/server/om/OverlayManagerSettings;->getOverlaysForUser(I)Landroid/util/ArrayMap;
-HPLcom/android/server/om/OverlayManagerSettings;->getState(Landroid/content/om/OverlayIdentifier;I)I
PLcom/android/server/om/OverlayManagerSettings;->getUsers()[I
-PLcom/android/server/om/OverlayManagerSettings;->init(Landroid/content/om/OverlayIdentifier;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZILjava/lang/String;Z)Landroid/content/om/OverlayInfo;
PLcom/android/server/om/OverlayManagerSettings;->insert(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)V
-PLcom/android/server/om/OverlayManagerSettings;->lambda$getAllBaseCodePaths$1(Ljava/util/Set;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)V
-PLcom/android/server/om/OverlayManagerSettings;->lambda$getOverlaysForUser$0(Ljava/lang/String;)Ljava/util/List;
-PLcom/android/server/om/OverlayManagerSettings;->lambda$selectWhereTarget$12(Ljava/lang/String;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
-HPLcom/android/server/om/OverlayManagerSettings;->lambda$selectWhereUser$10(ILcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
PLcom/android/server/om/OverlayManagerSettings;->persist(Ljava/io/OutputStream;)V
PLcom/android/server/om/OverlayManagerSettings;->remove(Landroid/content/om/OverlayIdentifier;I)Z
PLcom/android/server/om/OverlayManagerSettings;->removeIf(Ljava/util/function/Predicate;)Ljava/util/List;
PLcom/android/server/om/OverlayManagerSettings;->restore(Ljava/io/InputStream;)V
-HPLcom/android/server/om/OverlayManagerSettings;->select(Landroid/content/om/OverlayIdentifier;I)I
-HPLcom/android/server/om/OverlayManagerSettings;->selectWhereTarget(Ljava/lang/String;I)Ljava/util/List;
-HPLcom/android/server/om/OverlayManagerSettings;->selectWhereUser(I)Ljava/util/List;
-HPLcom/android/server/om/OverlayManagerSettings;->setBaseCodePath(Landroid/content/om/OverlayIdentifier;ILjava/lang/String;)Z
-HPLcom/android/server/om/OverlayManagerSettings;->setCategory(Landroid/content/om/OverlayIdentifier;ILjava/lang/String;)Z
-PLcom/android/server/om/OverlayManagerSettings;->setState(Landroid/content/om/OverlayIdentifier;II)Z
-HSPLcom/android/server/om/OverlayReferenceMapper$1;-><init>(Lcom/android/server/om/OverlayReferenceMapper;)V
-HPLcom/android/server/om/OverlayReferenceMapper$1;->getActorPkg(Ljava/lang/String;)Ljava/lang/String;
-HPLcom/android/server/om/OverlayReferenceMapper$1;->getTargetToOverlayables(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/util/Map;
-HSPLcom/android/server/om/OverlayReferenceMapper;-><init>(ZLcom/android/server/om/OverlayReferenceMapper$Provider;)V
-HPLcom/android/server/om/OverlayReferenceMapper;->addOverlay(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;Ljava/util/Collection;)V
+PLcom/android/server/om/OverlayManagerSettings;->select(Landroid/content/om/OverlayIdentifier;I)I
+PLcom/android/server/om/OverlayManagerSettings;->setBaseCodePath(ILandroid/content/om/OverlayIdentifier;Ljava/lang/String;)Z
+PLcom/android/server/om/OverlayManagerSettings;->setEnabled(ILandroid/content/om/OverlayIdentifier;Z)Z
+PLcom/android/server/om/OverlayReferenceMapper$1;->getActorPkg(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/om/OverlayReferenceMapper$1;->getTargetToOverlayables(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/util/Map;
+HSPLcom/android/server/om/OverlayReferenceMapper;-><init>(Lcom/android/server/om/OverlayReferenceMapper$Provider;)V
+HSPLcom/android/server/om/OverlayReferenceMapper;->addOverlay(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;Ljava/util/Collection;)V
PLcom/android/server/om/OverlayReferenceMapper;->addOverlayToMap(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Collection;)V
-HPLcom/android/server/om/OverlayReferenceMapper;->addPkg(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;)Landroid/util/ArraySet;
-HPLcom/android/server/om/OverlayReferenceMapper;->addTarget(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;Ljava/util/Collection;)V
-HPLcom/android/server/om/OverlayReferenceMapper;->addTargetToMap(Ljava/lang/String;Ljava/lang/String;Ljava/util/Collection;)V
-HPLcom/android/server/om/OverlayReferenceMapper;->ensureMapBuilt()V
+HSPLcom/android/server/om/OverlayReferenceMapper;->addPkg(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;)Landroid/util/ArraySet;
+HPLcom/android/server/om/OverlayReferenceMapper;->addTarget(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;Ljava/util/Collection;)V+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Map;Ljava/util/Collections$EmptyMap;,Ljava/util/Collections$UnmodifiableMap;,Ljava/util/HashMap;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;,Ljava/util/HashSet;
+PLcom/android/server/om/OverlayReferenceMapper;->addTargetToMap(Ljava/lang/String;Ljava/lang/String;Ljava/util/Collection;)V
HPLcom/android/server/om/OverlayReferenceMapper;->isValidActor(Ljava/lang/String;Ljava/lang/String;)Z
PLcom/android/server/om/OverlayReferenceMapper;->rebuild()V
-PLcom/android/server/om/OverlayReferenceMapper;->rebuildIfDeferred()V
-PLcom/android/server/om/OverlayReferenceMapper;->removeOverlay(Ljava/lang/String;Ljava/util/Collection;)V
-HPLcom/android/server/om/OverlayReferenceMapper;->removeTarget(Ljava/lang/String;Ljava/util/Collection;)V
+HSPLcom/android/server/om/OverlayReferenceMapper;->removeOverlay(Ljava/lang/String;Ljava/util/Collection;)V
+PLcom/android/server/om/OverlayReferenceMapper;->removePkg(Ljava/lang/String;)Landroid/util/ArraySet;
+PLcom/android/server/om/OverlayReferenceMapper;->removeTarget(Ljava/lang/String;Ljava/util/Collection;)V
+PLcom/android/server/ondeviceintelligence/InferenceInfoStore;-><init>(J)V
+PLcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService;I)V
+PLcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService;Ljava/lang/String;I)V
+PLcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService$$ExternalSyntheticLambda2;->runOrThrow()V
+PLcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService;)V
+PLcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService$1;-><init>(Lcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService;)V
+PLcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService;-><clinit>()V
+PLcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService;->ensureRemoteInferenceServiceInitialized()V
+PLcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService;->getServiceNames()[Ljava/lang/String;
+PLcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService;->onBootPhase(I)V
+PLcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService;->onStart()V
+PLcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService;->onUserUnlocked(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService;->validateServiceElevated(Ljava/lang/String;Z)V
PLcom/android/server/os/BugreportManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/os/BugreportManagerService;->onStart()V
PLcom/android/server/os/BugreportManagerServiceImpl$BugreportFileManager;-><init>(Landroid/util/AtomicFile;)V
-PLcom/android/server/os/BugreportManagerServiceImpl$Injector;-><init>(Landroid/content/Context;Landroid/util/ArraySet;Landroid/util/AtomicFile;)V
-PLcom/android/server/os/BugreportManagerServiceImpl$Injector;->getAllowlistedPackages()Landroid/util/ArraySet;
-PLcom/android/server/os/BugreportManagerServiceImpl$Injector;->getContext()Landroid/content/Context;
-PLcom/android/server/os/BugreportManagerServiceImpl$Injector;->getMappingFile()Landroid/util/AtomicFile;
-PLcom/android/server/os/BugreportManagerServiceImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/os/BugreportManagerServiceImpl$BugreportFileManager;->canSkipConsentScreen(Ljava/lang/String;Z)Z
+PLcom/android/server/os/BugreportManagerServiceImpl$DumpstateListener;-><init>(Lcom/android/server/os/BugreportManagerServiceImpl;Landroid/os/IDumpstateListener;Landroid/os/IDumpstate;Landroid/util/Pair;ZZZZ)V
+PLcom/android/server/os/BugreportManagerServiceImpl$DumpstateListener;->binderDied()V
+PLcom/android/server/os/BugreportManagerServiceImpl$DumpstateListener;->onFinished(Ljava/lang/String;)V
+PLcom/android/server/os/BugreportManagerServiceImpl$DumpstateListener;->onProgress(I)V
+PLcom/android/server/os/BugreportManagerServiceImpl$DumpstateListener;->releaseItselfLocked()V
+PLcom/android/server/os/BugreportManagerServiceImpl$DumpstateListener;->reportFinishedLocked(Ljava/lang/String;)V
+PLcom/android/server/os/BugreportManagerServiceImpl$Injector$RoleManagerWrapper;-><init>(Lcom/android/server/os/BugreportManagerServiceImpl$Injector;)V
+PLcom/android/server/os/BugreportManagerServiceImpl;-><clinit>()V
PLcom/android/server/os/BugreportManagerServiceImpl;-><init>(Lcom/android/server/os/BugreportManagerServiceImpl$Injector;)V
+PLcom/android/server/os/BugreportManagerServiceImpl;->callerToString(Landroid/util/Pair;)Ljava/lang/String;
+PLcom/android/server/os/BugreportManagerServiceImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/os/BugreportManagerServiceImpl;->enforcePermission(ILjava/lang/String;Z)V
+PLcom/android/server/os/BugreportManagerServiceImpl;->startAndGetDumpstateBinderServiceLocked()Landroid/os/IDumpstate;
+PLcom/android/server/os/BugreportManagerServiceImpl;->startBugreport(ILjava/lang/String;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;IILandroid/os/IDumpstateListener;ZZ)V
+PLcom/android/server/os/BugreportManagerServiceImpl;->startBugreportLocked(ILjava/lang/String;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;IILandroid/os/IDumpstateListener;Z)V
HSPLcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;-><init>(Landroid/content/Context;)V
-PLcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;->checkPackageBelongsToCaller(Ljava/lang/String;)Z
PLcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;->getSerial()Ljava/lang/String;
PLcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;->getSerialForPackage(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
HSPLcom/android/server/os/DeviceIdentifiersPolicyService;-><init>(Landroid/content/Context;)V
HSPLcom/android/server/os/DeviceIdentifiersPolicyService;->onStart()V
-HPLcom/android/server/os/NativeTombstoneManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/os/NativeTombstoneManager;IIILjava/util/ArrayList;ILjava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/os/NativeTombstoneManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/os/NativeTombstoneManager;IIILjava/util/ArrayList;ILjava/util/concurrent/CompletableFuture;)V
PLcom/android/server/os/NativeTombstoneManager$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/os/NativeTombstoneManager$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/os/NativeTombstoneManager;)V
PLcom/android/server/os/NativeTombstoneManager$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/os/NativeTombstoneManager$1;-><init>(Lcom/android/server/os/NativeTombstoneManager;)V
-PLcom/android/server/os/NativeTombstoneManager$2;-><init>(Lcom/android/server/os/NativeTombstoneManager;)V
-HPLcom/android/server/os/NativeTombstoneManager$TombstoneFile;->parse(Landroid/os/ParcelFileDescriptor;)Ljava/util/Optional;
-PLcom/android/server/os/NativeTombstoneManager$TombstoneWatcher$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/os/NativeTombstoneManager$TombstoneWatcher;Ljava/lang/String;)V
-PLcom/android/server/os/NativeTombstoneManager$TombstoneWatcher$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/os/NativeTombstoneManager$TombstoneWatcher;->$r8$lambda$A74hOANgR204PBre_Brq7oIduOU(Lcom/android/server/os/NativeTombstoneManager$TombstoneWatcher;Ljava/lang/String;)V
+PLcom/android/server/os/NativeTombstoneManager$1;-><init>(Lcom/android/server/os/NativeTombstoneManager;I)V
PLcom/android/server/os/NativeTombstoneManager$TombstoneWatcher;-><init>(Lcom/android/server/os/NativeTombstoneManager;)V
-PLcom/android/server/os/NativeTombstoneManager$TombstoneWatcher;->lambda$onEvent$0(Ljava/lang/String;)V
-PLcom/android/server/os/NativeTombstoneManager$TombstoneWatcher;->onEvent(ILjava/lang/String;)V
-PLcom/android/server/os/NativeTombstoneManager;->$r8$lambda$d5FKVJLhf8wmcpGmXSaNGRF1qVM(Lcom/android/server/os/NativeTombstoneManager;IIILjava/util/ArrayList;ILjava/util/concurrent/CompletableFuture;)V
-PLcom/android/server/os/NativeTombstoneManager;->$r8$lambda$gBT9xmTreiWpNj0UDSi2eO2Yau4(Lcom/android/server/os/NativeTombstoneManager;)V
-PLcom/android/server/os/NativeTombstoneManager;->-$$Nest$fgetmHandler(Lcom/android/server/os/NativeTombstoneManager;)Landroid/os/Handler;
-PLcom/android/server/os/NativeTombstoneManager;->-$$Nest$sfgetTAG()Ljava/lang/String;
-PLcom/android/server/os/NativeTombstoneManager;->-$$Nest$sfgetTOMBSTONE_DIR()Ljava/io/File;
PLcom/android/server/os/NativeTombstoneManager;-><clinit>()V
PLcom/android/server/os/NativeTombstoneManager;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/os/NativeTombstoneManager;->collectTombstones(Ljava/util/ArrayList;III)V
-HPLcom/android/server/os/NativeTombstoneManager;->handleProtoTombstone(Ljava/io/File;Z)Ljava/util/Optional;
-HPLcom/android/server/os/NativeTombstoneManager;->handleTombstone(Ljava/io/File;)V
-PLcom/android/server/os/NativeTombstoneManager;->lambda$collectTombstones$3(IIILjava/util/ArrayList;ILjava/util/concurrent/CompletableFuture;)V
-PLcom/android/server/os/NativeTombstoneManager;->lambda$onSystemReady$0()V
-PLcom/android/server/os/NativeTombstoneManager;->onSystemReady()V
-PLcom/android/server/os/NativeTombstoneManager;->registerForPackageRemoval()V
-PLcom/android/server/os/NativeTombstoneManager;->registerForUserRemoval()V
+PLcom/android/server/os/NativeTombstoneManager;->collectTombstones(Ljava/util/ArrayList;III)V
PLcom/android/server/os/NativeTombstoneManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/os/NativeTombstoneManagerService;->onBootPhase(I)V
PLcom/android/server/os/NativeTombstoneManagerService;->onStart()V
PLcom/android/server/os/SchedulingPolicyService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/os/SchedulingPolicyService;)V
PLcom/android/server/os/SchedulingPolicyService$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/os/SchedulingPolicyService$1;-><init>(Lcom/android/server/os/SchedulingPolicyService;)V
-PLcom/android/server/os/SchedulingPolicyService;->$r8$lambda$KlPgkKRnOe1m4zokkdzlozJ7zLQ(Lcom/android/server/os/SchedulingPolicyService;)V
PLcom/android/server/os/SchedulingPolicyService;-><clinit>()V
PLcom/android/server/os/SchedulingPolicyService;-><init>()V
-PLcom/android/server/os/SchedulingPolicyService;->disableCpusetBoost(I)I
-PLcom/android/server/os/SchedulingPolicyService;->isPermitted()Z
-PLcom/android/server/os/SchedulingPolicyService;->lambda$new$0()V
+PLcom/android/server/os/SchedulingPolicyService;->disableCpusetBoost(I)V
PLcom/android/server/os/SchedulingPolicyService;->requestPriority(IIIZ)I
+PLcom/android/server/os/instrumentation/DynamicInstrumentationManagerService$BinderService;-><init>(Lcom/android/server/os/instrumentation/DynamicInstrumentationManagerService;)V
+PLcom/android/server/os/instrumentation/DynamicInstrumentationManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/os/instrumentation/DynamicInstrumentationManagerService;->onStart()V
PLcom/android/server/pdb/PersistentDataBlockService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pdb/PersistentDataBlockService;)V
PLcom/android/server/pdb/PersistentDataBlockService$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/pdb/PersistentDataBlockService$1;-><init>(Lcom/android/server/pdb/PersistentDataBlockService;)V
+PLcom/android/server/pdb/PersistentDataBlockService$1;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/pdb/PersistentDataBlockService$1;->enforcePersistentDataBlockAccess()V
+PLcom/android/server/pdb/PersistentDataBlockService$1;->getDataBlockSize()I
+PLcom/android/server/pdb/PersistentDataBlockService$1;->getFlashLockState()I
PLcom/android/server/pdb/PersistentDataBlockService$1;->getMaximumDataBlockSize()J
+PLcom/android/server/pdb/PersistentDataBlockService$1;->getOemUnlockEnabled()Z
+PLcom/android/server/pdb/PersistentDataBlockService$1;->hasFrpCredentialHandle()Z
+PLcom/android/server/pdb/PersistentDataBlockService$1;->isFactoryResetProtectionActive()Z
+PLcom/android/server/pdb/PersistentDataBlockService$1;->printFrpDataFileContents(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+PLcom/android/server/pdb/PersistentDataBlockService$1;->printFrpStatus(Ljava/io/PrintWriter;Z)V
PLcom/android/server/pdb/PersistentDataBlockService$1;->read()[B
+PLcom/android/server/pdb/PersistentDataBlockService$1;->setFactoryResetProtectionSecret([B)Z
PLcom/android/server/pdb/PersistentDataBlockService$1;->write([B)I
PLcom/android/server/pdb/PersistentDataBlockService$InternalService;-><init>(Lcom/android/server/pdb/PersistentDataBlockService;)V
-PLcom/android/server/pdb/PersistentDataBlockService$InternalService;-><init>(Lcom/android/server/pdb/PersistentDataBlockService;Lcom/android/server/pdb/PersistentDataBlockService$InternalService-IA;)V
-PLcom/android/server/pdb/PersistentDataBlockService$InternalService;->getAllowedUid()I
-PLcom/android/server/pdb/PersistentDataBlockService$InternalService;->getTestHarnessModeData()[B
-PLcom/android/server/pdb/PersistentDataBlockService$InternalService;->readInternal(JI)[B
-PLcom/android/server/pdb/PersistentDataBlockService;->$r8$lambda$konnAXJEAnzKBClo_dB4T2g6MZ4(Lcom/android/server/pdb/PersistentDataBlockService;)V
-PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$fgetmAllowedUid(Lcom/android/server/pdb/PersistentDataBlockService;)I
-PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$fgetmDataBlockFile(Lcom/android/server/pdb/PersistentDataBlockService;)Ljava/lang/String;
-PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$fgetmIsWritable(Lcom/android/server/pdb/PersistentDataBlockService;)Z
-PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$fgetmLock(Lcom/android/server/pdb/PersistentDataBlockService;)Ljava/lang/Object;
-PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$mcomputeAndWriteDigestLocked(Lcom/android/server/pdb/PersistentDataBlockService;)Z
+PLcom/android/server/pdb/PersistentDataBlockService$InternalService;->readInternal(IJ)[B
+PLcom/android/server/pdb/PersistentDataBlockService$InternalService;->writeDataBuffer(JLjava/nio/ByteBuffer;)Z
+PLcom/android/server/pdb/PersistentDataBlockService$InternalService;->writeInternal(J[BI)V
PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$mdoGetMaximumDataBlockSize(Lcom/android/server/pdb/PersistentDataBlockService;)J
-PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$menforceChecksumValidity(Lcom/android/server/pdb/PersistentDataBlockService;)Z
-PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$menforceUid(Lcom/android/server/pdb/PersistentDataBlockService;I)V
-PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$mgetBlockOutputChannel(Lcom/android/server/pdb/PersistentDataBlockService;)Ljava/nio/channels/FileChannel;
-PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$mgetTotalDataSizeLocked(Lcom/android/server/pdb/PersistentDataBlockService;Ljava/io/DataInputStream;)I
+PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$menforceOemUnlockReadPermission(Lcom/android/server/pdb/PersistentDataBlockService;)V
PLcom/android/server/pdb/PersistentDataBlockService;-><clinit>()V
PLcom/android/server/pdb/PersistentDataBlockService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pdb/PersistentDataBlockService;->automaticallyDeactivateFrpIfPossible()Z
PLcom/android/server/pdb/PersistentDataBlockService;->computeAndWriteDigestLocked()Z
-HPLcom/android/server/pdb/PersistentDataBlockService;->computeDigestLocked([B)[B
-PLcom/android/server/pdb/PersistentDataBlockService;->doGetMaximumDataBlockSize()J
+PLcom/android/server/pdb/PersistentDataBlockService;->computeDigestLocked([B)[B
+PLcom/android/server/pdb/PersistentDataBlockService;->deactivateFrp([B)Z
+PLcom/android/server/pdb/PersistentDataBlockService;->deactivateFrpWithFileSecret(Ljava/lang/String;)Z
PLcom/android/server/pdb/PersistentDataBlockService;->doGetOemUnlockEnabled()Z
PLcom/android/server/pdb/PersistentDataBlockService;->enforceChecksumValidity()Z
PLcom/android/server/pdb/PersistentDataBlockService;->enforceFactoryResetProtectionInactive()V
-PLcom/android/server/pdb/PersistentDataBlockService;->enforceUid(I)V
-PLcom/android/server/pdb/PersistentDataBlockService;->formatIfOemUnlockEnabled()V
-PLcom/android/server/pdb/PersistentDataBlockService;->getAllowedUid()I
+PLcom/android/server/pdb/PersistentDataBlockService;->enforceUid(IZ)V
PLcom/android/server/pdb/PersistentDataBlockService;->getBlockDeviceSize()J
-PLcom/android/server/pdb/PersistentDataBlockService;->getBlockOutputChannel()Ljava/nio/channels/FileChannel;
-PLcom/android/server/pdb/PersistentDataBlockService;->getBlockOutputChannelIgnoringFrp()Ljava/nio/channels/FileChannel;
PLcom/android/server/pdb/PersistentDataBlockService;->getFrpCredentialDataOffset()J
+PLcom/android/server/pdb/PersistentDataBlockService;->getFrpSecretDataOffset()J
+PLcom/android/server/pdb/PersistentDataBlockService;->getFrpSecretMagicOffset()J
PLcom/android/server/pdb/PersistentDataBlockService;->getOemUnlockDataOffset()J
PLcom/android/server/pdb/PersistentDataBlockService;->getTestHarnessModeDataOffset()J
-PLcom/android/server/pdb/PersistentDataBlockService;->getTotalDataSizeLocked(Ljava/io/DataInputStream;)I
-PLcom/android/server/pdb/PersistentDataBlockService;->lambda$onStart$0()V
+PLcom/android/server/pdb/PersistentDataBlockService;->isFrpActive()Z
+PLcom/android/server/pdb/PersistentDataBlockService;->moveFrpTempFileToPrimary()V
PLcom/android/server/pdb/PersistentDataBlockService;->onBootPhase(I)V
PLcom/android/server/pdb/PersistentDataBlockService;->onStart()V
-PLcom/android/server/pdb/PersistentDataBlockService;->setOemUnlockEnabledProperty(Z)V
-PLcom/android/server/pdb/PersistentDataBlockService;->setProperty(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pdb/PersistentDataBlockService;->readDataBlock(JI)[B
+PLcom/android/server/pdb/PersistentDataBlockService;->setOldSettingForBackworkCompatibility(Z)V
PLcom/android/server/pdb/PersistentDataBlockService;->signalInitDone()V
-PLcom/android/server/pdb/PersistentDataBlockService;->waitForInitDoneSignal()V
PLcom/android/server/people/PeopleService$1;-><init>(Lcom/android/server/people/PeopleService;)V
PLcom/android/server/people/PeopleService$ConversationListenerHelper;-><init>()V
PLcom/android/server/people/PeopleService$LocalService;-><init>(Lcom/android/server/people/PeopleService;)V
+PLcom/android/server/people/PeopleService$LocalService;->getBackupPayload(I)[B
+PLcom/android/server/people/PeopleService$LocalService;->pruneDataForUser(ILandroid/os/CancellationSignal;)V
PLcom/android/server/people/PeopleService;-><init>(Landroid/content/Context;)V
PLcom/android/server/people/PeopleService;->getDataManager()Lcom/android/server/people/data/DataManager;
PLcom/android/server/people/PeopleService;->initLazyStuff()V
PLcom/android/server/people/PeopleService;->onStart()V
PLcom/android/server/people/PeopleService;->onStart(Z)V
PLcom/android/server/people/PeopleService;->onUserUnlocked(Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/people/PeopleServiceInternal;-><init>()V
PLcom/android/server/people/data/CallLogQueryHelper;-><clinit>()V
-PLcom/android/server/people/data/CallLogQueryHelper;-><init>(Landroid/content/Context;Ljava/util/function/BiConsumer;)V
-PLcom/android/server/people/data/ConversationStatusExpirationBroadcastReceiver;-><init>()V
-PLcom/android/server/people/data/ConversationStatusExpirationBroadcastReceiver;->getFilter()Landroid/content/IntentFilter;
+PLcom/android/server/people/data/CallLogQueryHelper;-><init>(Landroid/content/Context;Lcom/android/server/people/data/DataManager$CallLogContentObserver;)V
+PLcom/android/server/people/data/ContactsQueryHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/people/data/ContactsQueryHelper;->queryContact(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Z
+PLcom/android/server/people/data/DataMaintenanceService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/people/data/DataMaintenanceService;ILandroid/app/job/JobParameters;)V
+PLcom/android/server/people/data/DataMaintenanceService$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/people/data/DataMaintenanceService;-><clinit>()V
-PLcom/android/server/people/data/DataMaintenanceService;->getJobId(I)I
+PLcom/android/server/people/data/DataMaintenanceService;-><init>()V
+PLcom/android/server/people/data/DataMaintenanceService;->onStartJob(Landroid/app/job/JobParameters;)Z
PLcom/android/server/people/data/DataMaintenanceService;->scheduleJob(Landroid/content/Context;I)V
-PLcom/android/server/people/data/DataManager$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/people/data/DataManager;I)V
-PLcom/android/server/people/data/DataManager$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/people/data/DataManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/people/data/DataManager;II)V
+PLcom/android/server/people/data/DataManager$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/people/data/DataManager$$ExternalSyntheticLambda11;-><init>(Ljava/util/Set;)V
+PLcom/android/server/people/data/DataManager$$ExternalSyntheticLambda11;->accept(Ljava/lang/Object;)V
+PLcom/android/server/people/data/DataManager$$ExternalSyntheticLambda12;-><init>(ILjava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/people/data/DataManager$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/people/data/DataManager;Landroid/os/CancellationSignal;I)V
PLcom/android/server/people/data/DataManager$CallLogContentObserver;-><init>(Lcom/android/server/people/data/DataManager;Landroid/os/Handler;)V
-PLcom/android/server/people/data/DataManager$CallLogContentObserver;-><init>(Lcom/android/server/people/data/DataManager;Landroid/os/Handler;Lcom/android/server/people/data/DataManager$CallLogContentObserver-IA;)V
+PLcom/android/server/people/data/DataManager$CallLogContentObserver;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/people/data/DataManager$CallLogContentObserver;->onChange(Z)V
PLcom/android/server/people/data/DataManager$ContactsContentObserver;-><init>(Lcom/android/server/people/data/DataManager;Landroid/os/Handler;)V
-PLcom/android/server/people/data/DataManager$ContactsContentObserver;-><init>(Lcom/android/server/people/data/DataManager;Landroid/os/Handler;Lcom/android/server/people/data/DataManager$ContactsContentObserver-IA;)V
+PLcom/android/server/people/data/DataManager$ContactsContentObserver;->onChange(ZLandroid/net/Uri;I)V
PLcom/android/server/people/data/DataManager$Injector;-><init>()V
-PLcom/android/server/people/data/DataManager$Injector;->createCallLogQueryHelper(Landroid/content/Context;Ljava/util/function/BiConsumer;)Lcom/android/server/people/data/CallLogQueryHelper;
-PLcom/android/server/people/data/DataManager$Injector;->createMmsQueryHelper(Landroid/content/Context;Ljava/util/function/BiConsumer;)Lcom/android/server/people/data/MmsQueryHelper;
-PLcom/android/server/people/data/DataManager$Injector;->createScheduledExecutor()Ljava/util/concurrent/ScheduledExecutorService;
-PLcom/android/server/people/data/DataManager$Injector;->createSmsQueryHelper(Landroid/content/Context;Ljava/util/function/BiConsumer;)Lcom/android/server/people/data/SmsQueryHelper;
-PLcom/android/server/people/data/DataManager$Injector;->createUsageStatsQueryHelper(ILjava/util/function/Function;Lcom/android/server/people/data/UsageStatsQueryHelper$EventListener;)Lcom/android/server/people/data/UsageStatsQueryHelper;
+PLcom/android/server/people/data/DataManager$MmsSmsContentObserver$$ExternalSyntheticLambda0;-><init>(Ljava/lang/String;Lcom/android/server/people/data/Event;I)V
+PLcom/android/server/people/data/DataManager$MmsSmsContentObserver$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
PLcom/android/server/people/data/DataManager$MmsSmsContentObserver;-><init>(Lcom/android/server/people/data/DataManager;Landroid/os/Handler;)V
-PLcom/android/server/people/data/DataManager$MmsSmsContentObserver;-><init>(Lcom/android/server/people/data/DataManager;Landroid/os/Handler;Lcom/android/server/people/data/DataManager$MmsSmsContentObserver-IA;)V
-PLcom/android/server/people/data/DataManager$NotificationListener$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/people/data/DataManager$NotificationListener;Landroid/service/notification/StatusBarNotification;Ljava/lang/String;)V
+PLcom/android/server/people/data/DataManager$NotificationListener$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/people/data/DataManager$NotificationListener;Landroid/service/notification/StatusBarNotification;Ljava/lang/String;I)V
PLcom/android/server/people/data/DataManager$NotificationListener;-><init>(Lcom/android/server/people/data/DataManager;I)V
-PLcom/android/server/people/data/DataManager$NotificationListener;-><init>(Lcom/android/server/people/data/DataManager;ILcom/android/server/people/data/DataManager$NotificationListener-IA;)V
-PLcom/android/server/people/data/DataManager$NotificationListener;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;)V
+PLcom/android/server/people/data/DataManager$NotificationListener;->onNotificationChannelModified(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V
+HPLcom/android/server/people/data/DataManager$NotificationListener;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;)V
+PLcom/android/server/people/data/DataManager$NotificationListener;->onNotificationRemoved(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;I)V
PLcom/android/server/people/data/DataManager$PerUserBroadcastReceiver;-><init>(Lcom/android/server/people/data/DataManager;I)V
-PLcom/android/server/people/data/DataManager$PerUserBroadcastReceiver;-><init>(Lcom/android/server/people/data/DataManager;ILcom/android/server/people/data/DataManager$PerUserBroadcastReceiver-IA;)V
PLcom/android/server/people/data/DataManager$PerUserPackageMonitor;-><init>(Lcom/android/server/people/data/DataManager;)V
-PLcom/android/server/people/data/DataManager$PerUserPackageMonitor;-><init>(Lcom/android/server/people/data/DataManager;Lcom/android/server/people/data/DataManager$PerUserPackageMonitor-IA;)V
+PLcom/android/server/people/data/DataManager$ShortcutServiceCallback$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/people/data/DataManager$ShortcutServiceCallback;Ljava/lang/String;Landroid/os/UserHandle;Ljava/util/List;)V
+PLcom/android/server/people/data/DataManager$ShortcutServiceCallback$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/people/data/DataManager$ShortcutServiceCallback;Ljava/util/List;Ljava/lang/String;Landroid/os/UserHandle;)V
+PLcom/android/server/people/data/DataManager$ShortcutServiceCallback$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/people/data/DataManager$ShortcutServiceCallback;-><init>(Lcom/android/server/people/data/DataManager;)V
-PLcom/android/server/people/data/DataManager$ShortcutServiceCallback;-><init>(Lcom/android/server/people/data/DataManager;Lcom/android/server/people/data/DataManager$ShortcutServiceCallback-IA;)V
+PLcom/android/server/people/data/DataManager$ShortcutServiceCallback;->onShortcutsAddedOrUpdated(Ljava/lang/String;Ljava/util/List;Landroid/os/UserHandle;)V
+PLcom/android/server/people/data/DataManager$ShortcutServiceCallback;->onShortcutsRemoved(Ljava/lang/String;Ljava/util/List;Landroid/os/UserHandle;)V
PLcom/android/server/people/data/DataManager$ShutdownBroadcastReceiver;-><init>(Lcom/android/server/people/data/DataManager;)V
-PLcom/android/server/people/data/DataManager$ShutdownBroadcastReceiver;-><init>(Lcom/android/server/people/data/DataManager;Lcom/android/server/people/data/DataManager$ShutdownBroadcastReceiver-IA;)V
PLcom/android/server/people/data/DataManager$UsageStatsQueryRunnable$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/people/data/DataManager$UsageStatsQueryRunnable;I)V
-HPLcom/android/server/people/data/DataManager$UsageStatsQueryRunnable$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HPLcom/android/server/people/data/DataManager$UsageStatsQueryRunnable;->$r8$lambda$cVW9hPliqF0sjWNbpn4Xp9GLrWc(Lcom/android/server/people/data/DataManager$UsageStatsQueryRunnable;ILjava/lang/String;)Lcom/android/server/people/data/PackageData;
+PLcom/android/server/people/data/DataManager$UsageStatsQueryRunnable$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/people/data/DataManager$UsageStatsQueryRunnable;-><init>(Lcom/android/server/people/data/DataManager;I)V
-PLcom/android/server/people/data/DataManager$UsageStatsQueryRunnable;-><init>(Lcom/android/server/people/data/DataManager;ILcom/android/server/people/data/DataManager$UsageStatsQueryRunnable-IA;)V
-PLcom/android/server/people/data/DataManager$UsageStatsQueryRunnable;->lambda$new$0(ILjava/lang/String;)Lcom/android/server/people/data/PackageData;
PLcom/android/server/people/data/DataManager$UsageStatsQueryRunnable;->run()V
-PLcom/android/server/people/data/DataManager;->$r8$lambda$1-ISRhLNWfPETJJig6xBTzQCJ7w(Lcom/android/server/people/data/DataManager;I)V
-PLcom/android/server/people/data/DataManager;->-$$Nest$fgetmContext(Lcom/android/server/people/data/DataManager;)Landroid/content/Context;
-PLcom/android/server/people/data/DataManager;->-$$Nest$fgetmInjector(Lcom/android/server/people/data/DataManager;)Lcom/android/server/people/data/DataManager$Injector;
+PLcom/android/server/people/data/DataManager;->-$$Nest$mforAllUnlockedUsers(Lcom/android/server/people/data/DataManager;Ljava/util/function/Consumer;)V
PLcom/android/server/people/data/DataManager;->-$$Nest$mgetPackageIfConversationExists(Lcom/android/server/people/data/DataManager;Landroid/service/notification/StatusBarNotification;Ljava/util/function/Consumer;)Lcom/android/server/people/data/PackageData;
PLcom/android/server/people/data/DataManager;-><init>(Landroid/content/Context;)V
-PLcom/android/server/people/data/DataManager;-><init>(Landroid/content/Context;Lcom/android/server/people/data/DataManager$Injector;Landroid/os/Looper;)V
-PLcom/android/server/people/data/DataManager;->addConversationsListener(Lcom/android/server/people/PeopleService$ConversationsListener;)V
-PLcom/android/server/people/data/DataManager;->getPackage(Ljava/lang/String;I)Lcom/android/server/people/data/PackageData;
-PLcom/android/server/people/data/DataManager;->getPackageIfConversationExists(Landroid/service/notification/StatusBarNotification;Ljava/util/function/Consumer;)Lcom/android/server/people/data/PackageData;
-HPLcom/android/server/people/data/DataManager;->getUnlockedUserData(I)Lcom/android/server/people/data/UserData;
+PLcom/android/server/people/data/DataManager;->getPackage(ILjava/lang/String;)Lcom/android/server/people/data/PackageData;
+PLcom/android/server/people/data/DataManager;->getUnlockedUserData(I)Lcom/android/server/people/data/UserData;
PLcom/android/server/people/data/DataManager;->initialize()V
-PLcom/android/server/people/data/DataManager;->lambda$onUserUnlocked$0(I)V
-PLcom/android/server/people/data/DataManager;->onUserUnlocked(I)V
-HPLcom/android/server/people/data/DataManager;->setupUser(I)V
-PLcom/android/server/people/data/DataManager;->updateDefaultDialer(Lcom/android/server/people/data/UserData;)V
-PLcom/android/server/people/data/DataManager;->updateDefaultSmsApp(Lcom/android/server/people/data/UserData;)V
+PLcom/android/server/people/data/DataManager;->removeConversations(ILjava/lang/String;Ljava/util/Set;)V
+PLcom/android/server/people/data/Event$Builder;-><init>(JI)V
+PLcom/android/server/people/data/Event;-><clinit>()V
+PLcom/android/server/people/data/Event;-><init>(Lcom/android/server/people/data/Event$Builder;)V
PLcom/android/server/people/data/MmsQueryHelper;-><clinit>()V
-PLcom/android/server/people/data/MmsQueryHelper;-><init>(Landroid/content/Context;Ljava/util/function/BiConsumer;)V
-PLcom/android/server/people/data/PackageData;->packagesDataFromDisk(ILjava/util/function/Predicate;Ljava/util/function/Predicate;Ljava/util/concurrent/ScheduledExecutorService;Ljava/io/File;)Ljava/util/Map;
+PLcom/android/server/people/data/MmsQueryHelper;-><init>(Landroid/content/Context;Lcom/android/server/people/data/DataManager$MmsSmsContentObserver;)V
PLcom/android/server/people/data/SmsQueryHelper;-><clinit>()V
-PLcom/android/server/people/data/SmsQueryHelper;-><init>(Landroid/content/Context;Ljava/util/function/BiConsumer;)V
-PLcom/android/server/people/data/UsageStatsQueryHelper;-><init>(ILjava/util/function/Function;Lcom/android/server/people/data/UsageStatsQueryHelper$EventListener;)V
-PLcom/android/server/people/data/UsageStatsQueryHelper;->getLastEventTimestamp()J
-PLcom/android/server/people/data/UsageStatsQueryHelper;->getUsageStatsManagerInternal()Landroid/app/usage/UsageStatsManagerInternal;
-PLcom/android/server/people/data/UsageStatsQueryHelper;->querySince(J)Z
-PLcom/android/server/people/data/UserData$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/people/data/UserData;)V
-PLcom/android/server/people/data/UserData$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/people/data/UserData;)V
-PLcom/android/server/people/data/UserData;-><clinit>()V
+PLcom/android/server/people/data/SmsQueryHelper;-><init>(Landroid/content/Context;Lcom/android/server/people/data/DataManager$MmsSmsContentObserver;)V
+PLcom/android/server/people/data/UsageStatsQueryHelper;-><init>(ILcom/android/server/people/data/DataManager$UsageStatsQueryRunnable$$ExternalSyntheticLambda0;Lcom/android/server/people/data/DataManager$UsageStatsQueryRunnable;)V
+PLcom/android/server/people/data/UserData$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/people/data/UserData;I)V
PLcom/android/server/people/data/UserData;-><init>(ILjava/util/concurrent/ScheduledExecutorService;)V
-HPLcom/android/server/people/data/UserData;->getPackageData(Ljava/lang/String;)Lcom/android/server/people/data/PackageData;
-PLcom/android/server/people/data/UserData;->getUserId()I
-PLcom/android/server/people/data/UserData;->isUnlocked()Z
+PLcom/android/server/people/data/UserData;->forAllPackages(Ljava/util/function/Consumer;)V
PLcom/android/server/people/data/UserData;->loadUserData()V
-PLcom/android/server/people/data/UserData;->setDefaultDialer(Ljava/lang/String;)V
-PLcom/android/server/people/data/UserData;->setDefaultSmsApp(Ljava/lang/String;)V
-PLcom/android/server/people/data/UserData;->setUserUnlocked()V
PLcom/android/server/people/data/Utils;->getCurrentCountryIso(Landroid/content/Context;)Ljava/lang/String;
HSPLcom/android/server/permission/access/AccessCheckingService;-><init>(Landroid/content/Context;)V
PLcom/android/server/permission/access/AccessCheckingService;->access$getPersistence$p(Lcom/android/server/permission/access/AccessCheckingService;)Lcom/android/server/permission/access/AccessPersistence;
-HPLcom/android/server/permission/access/AccessCheckingService;->access$getPolicy$p(Lcom/android/server/permission/access/AccessCheckingService;)Lcom/android/server/permission/access/AccessPolicy;
+PLcom/android/server/permission/access/AccessCheckingService;->access$getPolicy$p(Lcom/android/server/permission/access/AccessCheckingService;)Lcom/android/server/permission/access/AccessPolicy;
HPLcom/android/server/permission/access/AccessCheckingService;->access$getState$p(Lcom/android/server/permission/access/AccessCheckingService;)Lcom/android/server/permission/access/AccessState;
-HPLcom/android/server/permission/access/AccessCheckingService;->access$getStateLock$p(Lcom/android/server/permission/access/AccessCheckingService;)Ljava/lang/Object;
-HPLcom/android/server/permission/access/AccessCheckingService;->access$setState$p(Lcom/android/server/permission/access/AccessCheckingService;Lcom/android/server/permission/access/AccessState;)V
+PLcom/android/server/permission/access/AccessCheckingService;->access$getStateLock$p(Lcom/android/server/permission/access/AccessCheckingService;)Ljava/lang/Object;
+PLcom/android/server/permission/access/AccessCheckingService;->access$setState$p(Lcom/android/server/permission/access/AccessCheckingService;Lcom/android/server/permission/access/AccessState;)V
HSPLcom/android/server/permission/access/AccessCheckingService;->getAllPackageStates(Lcom/android/server/pm/PackageManagerLocal;)Lcom/android/server/permission/jarjar/kotlin/Pair;
HSPLcom/android/server/permission/access/AccessCheckingService;->getImplicitToSourcePermissions(Lcom/android/server/SystemConfig;)Lcom/android/server/permission/access/immutable/IndexedMap;
HSPLcom/android/server/permission/access/AccessCheckingService;->getKnownPackages(Landroid/content/pm/PackageManagerInternal;)Lcom/android/server/permission/access/immutable/IntMap;
@@ -17048,2790 +13370,2114 @@ HSPLcom/android/server/permission/access/AccessCheckingService;->getPrivilegedPe
HSPLcom/android/server/permission/access/AccessCheckingService;->getSchemePolicy$frameworks__base__services__permission__android_common__services_permission_pre_jarjar(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/permission/access/SchemePolicy;
HSPLcom/android/server/permission/access/AccessCheckingService;->initialize()V
HSPLcom/android/server/permission/access/AccessCheckingService;->isLeanback(Lcom/android/server/SystemConfig;)Z
+PLcom/android/server/permission/access/AccessCheckingService;->onPackageAdded$frameworks__base__services__permission__android_common__services_permission_pre_jarjar(Ljava/lang/String;)V
+PLcom/android/server/permission/access/AccessCheckingService;->onPackageInstalled$frameworks__base__services__permission__android_common__services_permission_pre_jarjar(Ljava/lang/String;I)V
HSPLcom/android/server/permission/access/AccessCheckingService;->onStart()V
PLcom/android/server/permission/access/AccessCheckingService;->onStorageVolumeMounted$frameworks__base__services__permission__android_common__services_permission_pre_jarjar(Ljava/lang/String;Ljava/util/List;Z)V
PLcom/android/server/permission/access/AccessCheckingService;->onSystemReady$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()V
-HSPLcom/android/server/permission/access/AccessPersistence$Companion;-><init>()V
-HSPLcom/android/server/permission/access/AccessPersistence$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
HSPLcom/android/server/permission/access/AccessPersistence$WriteHandler;-><init>(Lcom/android/server/permission/access/AccessPersistence;Landroid/os/Looper;)V
PLcom/android/server/permission/access/AccessPersistence$WriteHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/permission/access/AccessPersistence;-><clinit>()V
HSPLcom/android/server/permission/access/AccessPersistence;-><init>(Lcom/android/server/permission/access/AccessPolicy;)V
-PLcom/android/server/permission/access/AccessPersistence;->access$writePendingState(Lcom/android/server/permission/access/AccessPersistence;I)V
-HSPLcom/android/server/permission/access/AccessPersistence;->getSystemFile()Ljava/io/File;
-PLcom/android/server/permission/access/AccessPersistence;->getUserFile(I)Ljava/io/File;
-HSPLcom/android/server/permission/access/AccessPersistence;->initialize()V
-HSPLcom/android/server/permission/access/AccessPersistence;->read(Lcom/android/server/permission/access/MutableAccessState;)V
-HSPLcom/android/server/permission/access/AccessPersistence;->readSystemState(Lcom/android/server/permission/access/MutableAccessState;)V
-PLcom/android/server/permission/access/AccessPersistence;->readUserState(Lcom/android/server/permission/access/MutableAccessState;I)V
-HPLcom/android/server/permission/access/AccessPersistence;->write(Lcom/android/server/permission/access/AccessState;)V
-HPLcom/android/server/permission/access/AccessPersistence;->write(Lcom/android/server/permission/access/WritableState;Lcom/android/server/permission/access/AccessState;I)V
-HPLcom/android/server/permission/access/AccessPersistence;->writePendingState(I)V
-HPLcom/android/server/permission/access/AccessPersistence;->writeSystemState(Lcom/android/server/permission/access/AccessState;)V
-HPLcom/android/server/permission/access/AccessPersistence;->writeUserState(Lcom/android/server/permission/access/AccessState;I)V
-HSPLcom/android/server/permission/access/AccessPolicy$Companion;-><init>()V
-HSPLcom/android/server/permission/access/AccessPolicy$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HSPLcom/android/server/permission/access/AccessPolicy;-><clinit>()V
+HPLcom/android/server/permission/access/AccessPersistence;->write(Lcom/android/server/permission/access/MutableAccessState;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/permission/access/AccessPersistence;->write(Lcom/android/server/permission/access/WritableState;Lcom/android/server/permission/access/MutableAccessState;I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/permission/access/WritableState;Lcom/android/server/permission/access/MutableSystemState;,Lcom/android/server/permission/access/MutableUserState;
+PLcom/android/server/permission/access/AccessPersistence;->writePendingState(I)V
+PLcom/android/server/permission/access/AccessPersistence;->writeSystemState(Lcom/android/server/permission/access/AccessState;)V
+PLcom/android/server/permission/access/AccessPersistence;->writeUserState(Lcom/android/server/permission/access/AccessState;I)V
HSPLcom/android/server/permission/access/AccessPolicy;-><init>()V
-HSPLcom/android/server/permission/access/AccessPolicy;-><init>(Lcom/android/server/permission/access/immutable/IndexedMap;)V
HSPLcom/android/server/permission/access/AccessPolicy;->_init_$lambda$1$addPolicy(Lcom/android/server/permission/access/immutable/MutableIndexedMap;Lcom/android/server/permission/access/SchemePolicy;)V
-HSPLcom/android/server/permission/access/AccessPolicy;->getSchemePolicy(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/permission/access/SchemePolicy;
-HSPLcom/android/server/permission/access/AccessPolicy;->initialize(Lcom/android/server/permission/access/MutableAccessState;Lcom/android/server/permission/access/immutable/IntSet;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/permission/access/immutable/IntMap;ZLjava/util/Map;Lcom/android/server/permission/access/immutable/IndexedListSet;Lcom/android/server/pm/permission/PermissionAllowlist;Lcom/android/server/permission/access/immutable/IndexedMap;)V
-PLcom/android/server/permission/access/AccessPolicy;->onInitialized(Lcom/android/server/permission/access/MutateStateScope;)V
-HPLcom/android/server/permission/access/AccessPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V
-HPLcom/android/server/permission/access/AccessPolicy;->onStorageVolumeMounted(Lcom/android/server/permission/access/MutateStateScope;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/permission/access/immutable/IntMap;Ljava/lang/String;Ljava/util/List;Z)V
-PLcom/android/server/permission/access/AccessPolicy;->onSystemReady(Lcom/android/server/permission/access/MutateStateScope;)V
-PLcom/android/server/permission/access/AccessPolicy;->parseDefaultPermissionGrant(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
-HPLcom/android/server/permission/access/AccessPolicy;->parsePackageVersion(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/immutable/MutableIndexedMap;)V
-HPLcom/android/server/permission/access/AccessPolicy;->parsePackageVersions(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
+PLcom/android/server/permission/access/AccessPolicy;->onPackageAdded(Lcom/android/server/permission/access/MutateStateScope;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/permission/access/immutable/IntMap;Ljava/lang/String;)V
+PLcom/android/server/permission/access/AccessPolicy;->onPackageInstalled(Lcom/android/server/permission/access/MutateStateScope;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/permission/access/immutable/IntMap;Ljava/lang/String;I)V
+PLcom/android/server/permission/access/AccessPolicy;->onStorageVolumeMounted(Lcom/android/server/permission/access/MutateStateScope;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/permission/access/immutable/IntMap;Ljava/lang/String;Ljava/util/List;Z)V
HSPLcom/android/server/permission/access/AccessPolicy;->parseSystemState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;)V
-HPLcom/android/server/permission/access/AccessPolicy;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
-PLcom/android/server/permission/access/AccessPolicy;->serializeDefaultPermissionGrantFingerprint(Lcom/android/modules/utils/BinaryXmlSerializer;Ljava/lang/String;)V
-HPLcom/android/server/permission/access/AccessPolicy;->serializePackageVersions(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/immutable/IndexedMap;)V
-HPLcom/android/server/permission/access/AccessPolicy;->serializeSystemState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;)V
-HPLcom/android/server/permission/access/AccessPolicy;->serializeUserState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;I)V
-HPLcom/android/server/permission/access/AccessPolicy;->upgradePackageVersion(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;I)V
+HSPLcom/android/server/permission/access/AccessPolicy;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
+PLcom/android/server/permission/access/AccessPolicy;->serializeSystemState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;)V
+HPLcom/android/server/permission/access/AccessPolicy;->serializeUserState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;I)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer;]Lcom/android/server/permission/access/SchemePolicy;Lcom/android/server/permission/access/appop/AppIdAppOpPolicy;,Lcom/android/server/permission/access/appop/PackageAppOpPolicy;,Lcom/android/server/permission/access/permission/AppIdPermissionPolicy;,Lcom/android/server/permission/access/permission/DevicePermissionPolicy;]Ljava/lang/Number;Ljava/lang/Integer;
+PLcom/android/server/permission/access/AccessPolicy;->upgradePackageVersion(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;I)V
HSPLcom/android/server/permission/access/AccessState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;)V
-HSPLcom/android/server/permission/access/AccessState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HSPLcom/android/server/permission/access/AccessState;->getExternalState()Lcom/android/server/permission/access/ExternalState;
-HSPLcom/android/server/permission/access/AccessState;->getExternalStateReference$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Lcom/android/server/permission/access/immutable/MutableReference;
-HPLcom/android/server/permission/access/AccessState;->getSystemState()Lcom/android/server/permission/access/SystemState;
-HSPLcom/android/server/permission/access/AccessState;->getSystemStateReference$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Lcom/android/server/permission/access/immutable/MutableReference;
-HPLcom/android/server/permission/access/AccessState;->getUserStates()Lcom/android/server/permission/access/immutable/IntReferenceMap;
-HSPLcom/android/server/permission/access/AccessState;->getUserStatesReference$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Lcom/android/server/permission/access/immutable/MutableReference;
+HSPLcom/android/server/permission/access/AccessState;->getExternalState()Lcom/android/server/permission/access/MutableExternalState;
+HPLcom/android/server/permission/access/AccessState;->getSystemState()Lcom/android/server/permission/access/MutableSystemState;
+HPLcom/android/server/permission/access/AccessState;->getUserStates()Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;
HPLcom/android/server/permission/access/AccessState;->toMutable()Lcom/android/server/permission/access/MutableAccessState;
-HSPLcom/android/server/permission/access/ExternalState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/IntMap;ZLjava/util/Map;Lcom/android/server/permission/access/immutable/IndexedListSet;Lcom/android/server/pm/permission/PermissionAllowlist;Lcom/android/server/permission/access/immutable/IndexedMap;Z)V
-HSPLcom/android/server/permission/access/ExternalState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/IntMap;ZLjava/util/Map;Lcom/android/server/permission/access/immutable/IndexedListSet;Lcom/android/server/pm/permission/PermissionAllowlist;Lcom/android/server/permission/access/immutable/IndexedMap;ZLcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HPLcom/android/server/permission/access/ExternalState;->getAppIdPackageNames()Lcom/android/server/permission/access/immutable/IntReferenceMap;
-HSPLcom/android/server/permission/access/ExternalState;->getAppIdPackageNamesReference()Lcom/android/server/permission/access/immutable/MutableReference;
-PLcom/android/server/permission/access/ExternalState;->getConfigPermissions()Ljava/util/Map;
-PLcom/android/server/permission/access/ExternalState;->getDisabledSystemPackageStates()Ljava/util/Map;
-PLcom/android/server/permission/access/ExternalState;->getImplicitToSourcePermissions()Lcom/android/server/permission/access/immutable/IndexedMap;
-PLcom/android/server/permission/access/ExternalState;->getKnownPackages()Lcom/android/server/permission/access/immutable/IntMap;
-HSPLcom/android/server/permission/access/ExternalState;->getPackageStates()Ljava/util/Map;
-PLcom/android/server/permission/access/ExternalState;->getPermissionAllowlist()Lcom/android/server/pm/permission/PermissionAllowlist;
-PLcom/android/server/permission/access/ExternalState;->getPrivilegedPermissionAllowlistPackages()Lcom/android/server/permission/access/immutable/IndexedListSet;
-HPLcom/android/server/permission/access/ExternalState;->getUserIds()Lcom/android/server/permission/access/immutable/IntSet;
-HSPLcom/android/server/permission/access/ExternalState;->getUserIdsReference()Lcom/android/server/permission/access/immutable/MutableReference;
-PLcom/android/server/permission/access/ExternalState;->isLeanback()Z
-PLcom/android/server/permission/access/ExternalState;->isSystemReady()Z
-HSPLcom/android/server/permission/access/ExternalState;->setConfigPermissions(Ljava/util/Map;)V
-HSPLcom/android/server/permission/access/ExternalState;->setDisabledSystemPackageStates(Ljava/util/Map;)V
-HSPLcom/android/server/permission/access/ExternalState;->setImplicitToSourcePermissions(Lcom/android/server/permission/access/immutable/IndexedMap;)V
-HSPLcom/android/server/permission/access/ExternalState;->setKnownPackages(Lcom/android/server/permission/access/immutable/IntMap;)V
-HSPLcom/android/server/permission/access/ExternalState;->setLeanback(Z)V
-HSPLcom/android/server/permission/access/ExternalState;->setPackageStates(Ljava/util/Map;)V
-HSPLcom/android/server/permission/access/ExternalState;->setPermissionAllowlist(Lcom/android/server/pm/permission/PermissionAllowlist;)V
-HSPLcom/android/server/permission/access/ExternalState;->setPrivilegedPermissionAllowlistPackages(Lcom/android/server/permission/access/immutable/IndexedListSet;)V
-PLcom/android/server/permission/access/ExternalState;->setSystemReady(Z)V
-PLcom/android/server/permission/access/ExternalState;->toMutable()Lcom/android/server/permission/access/MutableExternalState;
-PLcom/android/server/permission/access/ExternalState;->toMutable()Ljava/lang/Object;
PLcom/android/server/permission/access/GetStateScope;-><init>(Lcom/android/server/permission/access/AccessState;)V
-PLcom/android/server/permission/access/GetStateScope;->getState()Lcom/android/server/permission/access/AccessState;
-HSPLcom/android/server/permission/access/MutableAccessState;-><init>()V
-HPLcom/android/server/permission/access/MutableAccessState;-><init>(Lcom/android/server/permission/access/AccessState;)V
-HSPLcom/android/server/permission/access/MutableAccessState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;)V
HSPLcom/android/server/permission/access/MutableAccessState;->mutateExternalState()Lcom/android/server/permission/access/MutableExternalState;
-HPLcom/android/server/permission/access/MutableAccessState;->mutateSystemState$default(Lcom/android/server/permission/access/MutableAccessState;IILjava/lang/Object;)Lcom/android/server/permission/access/MutableSystemState;
-HSPLcom/android/server/permission/access/MutableAccessState;->mutateSystemState(I)Lcom/android/server/permission/access/MutableSystemState;
-PLcom/android/server/permission/access/MutableAccessState;->mutateUserState$default(Lcom/android/server/permission/access/MutableAccessState;IIILjava/lang/Object;)Lcom/android/server/permission/access/MutableUserState;
-PLcom/android/server/permission/access/MutableAccessState;->mutateUserState(II)Lcom/android/server/permission/access/MutableUserState;
-HSPLcom/android/server/permission/access/MutableAccessState;->mutateUserStatesNoWrite()Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;
-HSPLcom/android/server/permission/access/MutableExternalState;-><init>()V
-PLcom/android/server/permission/access/MutableExternalState;-><init>(Lcom/android/server/permission/access/ExternalState;)V
+HPLcom/android/server/permission/access/MutableAccessState;->mutateSystemState$default(Lcom/android/server/permission/access/MutableAccessState;)Lcom/android/server/permission/access/MutableSystemState;
+HSPLcom/android/server/permission/access/MutableAccessState;->mutateUserState(II)Lcom/android/server/permission/access/MutableUserState;
HSPLcom/android/server/permission/access/MutableExternalState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/IntMap;ZLjava/util/Map;Lcom/android/server/permission/access/immutable/IndexedListSet;Lcom/android/server/pm/permission/PermissionAllowlist;Lcom/android/server/permission/access/immutable/IndexedMap;Z)V
-HSPLcom/android/server/permission/access/MutableExternalState;->mutateAppIdPackageNames()Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;
-HSPLcom/android/server/permission/access/MutableExternalState;->mutateUserIds()Lcom/android/server/permission/access/immutable/MutableIntSet;
-HSPLcom/android/server/permission/access/MutableExternalState;->setConfigPermissionsPublic(Ljava/util/Map;)V
-HSPLcom/android/server/permission/access/MutableExternalState;->setDisabledSystemPackageStatesPublic(Ljava/util/Map;)V
-HSPLcom/android/server/permission/access/MutableExternalState;->setImplicitToSourcePermissionsPublic(Lcom/android/server/permission/access/immutable/IndexedMap;)V
-HSPLcom/android/server/permission/access/MutableExternalState;->setKnownPackagesPublic(Lcom/android/server/permission/access/immutable/IntMap;)V
-HSPLcom/android/server/permission/access/MutableExternalState;->setLeanbackPublic(Z)V
-HSPLcom/android/server/permission/access/MutableExternalState;->setPackageStatesPublic(Ljava/util/Map;)V
-HSPLcom/android/server/permission/access/MutableExternalState;->setPermissionAllowlistPublic(Lcom/android/server/pm/permission/PermissionAllowlist;)V
-HSPLcom/android/server/permission/access/MutableExternalState;->setPrivilegedPermissionAllowlistPackagesPublic(Lcom/android/server/permission/access/immutable/IndexedListSet;)V
-PLcom/android/server/permission/access/MutableExternalState;->setSystemReadyPublic(Z)V
-HSPLcom/android/server/permission/access/MutableSystemState;-><init>()V
-PLcom/android/server/permission/access/MutableSystemState;-><init>(Lcom/android/server/permission/access/SystemState;)V
-HSPLcom/android/server/permission/access/MutableSystemState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;I)V
-PLcom/android/server/permission/access/MutableSystemState;->mutatePermissionGroups()Lcom/android/server/permission/access/immutable/MutableIndexedMap;
-HSPLcom/android/server/permission/access/MutableSystemState;->mutatePermissionTrees()Lcom/android/server/permission/access/immutable/MutableIndexedMap;
+HSPLcom/android/server/permission/access/MutableExternalState;->getAppIdPackageNames()Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;
+HSPLcom/android/server/permission/access/MutableExternalState;->getUserIds()Lcom/android/server/permission/access/immutable/MutableIntSet;
+PLcom/android/server/permission/access/MutableExternalState;->toMutable()Ljava/lang/Object;
+HSPLcom/android/server/permission/access/MutableSystemState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;)V
+PLcom/android/server/permission/access/MutableSystemState;->getPermissionGroups()Lcom/android/server/permission/access/immutable/IndexedMap;
+PLcom/android/server/permission/access/MutableSystemState;->getPermissionTrees()Lcom/android/server/permission/access/immutable/IndexedMap;
+HPLcom/android/server/permission/access/MutableSystemState;->getPermissions()Lcom/android/server/permission/access/immutable/IndexedMap;
+PLcom/android/server/permission/access/MutableSystemState;->getWriteMode()I
HSPLcom/android/server/permission/access/MutableSystemState;->mutatePermissions()Lcom/android/server/permission/access/immutable/MutableIndexedMap;
-HSPLcom/android/server/permission/access/MutableSystemState;->requestWriteMode(I)V
+PLcom/android/server/permission/access/MutableSystemState;->toMutable()Ljava/lang/Object;
HSPLcom/android/server/permission/access/MutableUserState;-><init>()V
-PLcom/android/server/permission/access/MutableUserState;-><init>(Lcom/android/server/permission/access/UserState;)V
-HSPLcom/android/server/permission/access/MutableUserState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Ljava/lang/String;I)V
-PLcom/android/server/permission/access/MutableUserState;->mutateAppIdAppOpModes()Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;
-PLcom/android/server/permission/access/MutableUserState;->mutateAppIdDevicePermissionFlags()Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;
-PLcom/android/server/permission/access/MutableUserState;->mutateAppIdPermissionFlags()Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;
-PLcom/android/server/permission/access/MutableUserState;->mutatePackageAppOpModes()Lcom/android/server/permission/access/immutable/MutableIndexedReferenceMap;
-HPLcom/android/server/permission/access/MutableUserState;->mutatePackageVersions()Lcom/android/server/permission/access/immutable/MutableIndexedMap;
-PLcom/android/server/permission/access/MutableUserState;->requestWriteMode(I)V
-PLcom/android/server/permission/access/MutableUserState;->setDefaultPermissionGrantFingerprintPublic(Ljava/lang/String;)V
-HPLcom/android/server/permission/access/MutateStateScope;-><init>(Lcom/android/server/permission/access/AccessState;Lcom/android/server/permission/access/MutableAccessState;)V
-PLcom/android/server/permission/access/MutateStateScope;->getNewState()Lcom/android/server/permission/access/MutableAccessState;
-PLcom/android/server/permission/access/MutateStateScope;->getOldState()Lcom/android/server/permission/access/AccessState;
-HSPLcom/android/server/permission/access/SchemePolicy;-><init>()V
-PLcom/android/server/permission/access/SchemePolicy;->onAppIdAdded(Lcom/android/server/permission/access/MutateStateScope;I)V
-PLcom/android/server/permission/access/SchemePolicy;->onInitialized(Lcom/android/server/permission/access/MutateStateScope;)V
-PLcom/android/server/permission/access/SchemePolicy;->onStorageVolumeMounted(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;Ljava/util/List;Z)V
-PLcom/android/server/permission/access/SchemePolicy;->onSystemReady(Lcom/android/server/permission/access/MutateStateScope;)V
+HSPLcom/android/server/permission/access/MutableUserState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Ljava/lang/String;)V
+HSPLcom/android/server/permission/access/MutableUserState;->getAppIdAppOpModes()Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;
+PLcom/android/server/permission/access/MutableUserState;->getAppIdDevicePermissionFlags()Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;
+HPLcom/android/server/permission/access/MutableUserState;->getAppIdPermissionFlags()Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;
+PLcom/android/server/permission/access/MutableUserState;->getPackageAppOpModes()Lcom/android/server/permission/access/immutable/MutableIndexedReferenceMap;
+PLcom/android/server/permission/access/MutableUserState;->getWriteMode()I
+HSPLcom/android/server/permission/access/MutableUserState;->mutatePackageVersions()Lcom/android/server/permission/access/immutable/MutableIndexedMap;
+HSPLcom/android/server/permission/access/MutableUserState;->requestWriteMode(I)V
+PLcom/android/server/permission/access/MutableUserState;->toMutable()Ljava/lang/Object;
+PLcom/android/server/permission/access/MutateStateScope;-><init>(Lcom/android/server/permission/access/AccessState;Lcom/android/server/permission/access/MutableAccessState;)V
+PLcom/android/server/permission/access/SchemePolicy;->onPackageAdded(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;)V
+PLcom/android/server/permission/access/SchemePolicy;->onPackageInstalled(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;I)V
+PLcom/android/server/permission/access/SchemePolicy;->onStorageVolumeMounted(Lcom/android/server/permission/access/MutateStateScope;Ljava/util/List;Z)V
+PLcom/android/server/permission/access/SchemePolicy;->onSystemReady()V
HSPLcom/android/server/permission/access/SchemePolicy;->parseSystemState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;)V
PLcom/android/server/permission/access/SchemePolicy;->serializeSystemState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;)V
-HSPLcom/android/server/permission/access/SystemState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;I)V
-HSPLcom/android/server/permission/access/SystemState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;ILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-PLcom/android/server/permission/access/SystemState;->getPermissionGroups()Lcom/android/server/permission/access/immutable/IndexedMap;
-PLcom/android/server/permission/access/SystemState;->getPermissionGroupsReference()Lcom/android/server/permission/access/immutable/MutableReference;
-HPLcom/android/server/permission/access/SystemState;->getPermissionTrees()Lcom/android/server/permission/access/immutable/IndexedMap;
-HSPLcom/android/server/permission/access/SystemState;->getPermissionTreesReference()Lcom/android/server/permission/access/immutable/MutableReference;
-HPLcom/android/server/permission/access/SystemState;->getPermissions()Lcom/android/server/permission/access/immutable/IndexedMap;
-HSPLcom/android/server/permission/access/SystemState;->getPermissionsReference()Lcom/android/server/permission/access/immutable/MutableReference;
-HSPLcom/android/server/permission/access/SystemState;->getWriteMode()I
-HSPLcom/android/server/permission/access/SystemState;->setWriteMode(I)V
-PLcom/android/server/permission/access/SystemState;->toMutable()Lcom/android/server/permission/access/MutableSystemState;
-PLcom/android/server/permission/access/SystemState;->toMutable()Ljava/lang/Object;
-HSPLcom/android/server/permission/access/UserState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Ljava/lang/String;I)V
-HSPLcom/android/server/permission/access/UserState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Ljava/lang/String;ILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HPLcom/android/server/permission/access/UserState;->getAppIdAppOpModes()Lcom/android/server/permission/access/immutable/IntReferenceMap;
-PLcom/android/server/permission/access/UserState;->getAppIdAppOpModesReference$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Lcom/android/server/permission/access/immutable/MutableReference;
-PLcom/android/server/permission/access/UserState;->getAppIdDevicePermissionFlags()Lcom/android/server/permission/access/immutable/IntReferenceMap;
-PLcom/android/server/permission/access/UserState;->getAppIdDevicePermissionFlagsReference$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Lcom/android/server/permission/access/immutable/MutableReference;
-HPLcom/android/server/permission/access/UserState;->getAppIdPermissionFlags()Lcom/android/server/permission/access/immutable/IntReferenceMap;
-PLcom/android/server/permission/access/UserState;->getAppIdPermissionFlagsReference$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Lcom/android/server/permission/access/immutable/MutableReference;
-PLcom/android/server/permission/access/UserState;->getDefaultPermissionGrantFingerprint()Ljava/lang/String;
-HPLcom/android/server/permission/access/UserState;->getPackageAppOpModes()Lcom/android/server/permission/access/immutable/IndexedReferenceMap;
-PLcom/android/server/permission/access/UserState;->getPackageAppOpModesReference$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Lcom/android/server/permission/access/immutable/MutableReference;
-HPLcom/android/server/permission/access/UserState;->getPackageVersions()Lcom/android/server/permission/access/immutable/IndexedMap;
-PLcom/android/server/permission/access/UserState;->getPackageVersionsReference$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Lcom/android/server/permission/access/immutable/MutableReference;
-PLcom/android/server/permission/access/UserState;->getWriteMode()I
-PLcom/android/server/permission/access/UserState;->setDefaultPermissionGrantFingerprint(Ljava/lang/String;)V
-PLcom/android/server/permission/access/UserState;->setWriteMode(I)V
-PLcom/android/server/permission/access/UserState;->toMutable()Lcom/android/server/permission/access/MutableUserState;
-PLcom/android/server/permission/access/UserState;->toMutable()Ljava/lang/Object;
-HSPLcom/android/server/permission/access/appop/AppIdAppOpMigration$Companion;-><init>()V
-HSPLcom/android/server/permission/access/appop/AppIdAppOpMigration$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HSPLcom/android/server/permission/access/appop/AppIdAppOpMigration;-><clinit>()V
-HSPLcom/android/server/permission/access/appop/AppIdAppOpMigration;-><init>()V
-HSPLcom/android/server/permission/access/appop/AppIdAppOpPersistence$Companion;-><init>()V
-HSPLcom/android/server/permission/access/appop/AppIdAppOpPersistence$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HSPLcom/android/server/permission/access/appop/AppIdAppOpPersistence;-><clinit>()V
-HSPLcom/android/server/permission/access/appop/AppIdAppOpPersistence;-><init>()V
-HPLcom/android/server/permission/access/appop/AppIdAppOpPersistence;->parseAppId(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;)V
-HPLcom/android/server/permission/access/appop/AppIdAppOpPersistence;->parseAppIdAppOps(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
-PLcom/android/server/permission/access/appop/AppIdAppOpPersistence;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
-HPLcom/android/server/permission/access/appop/AppIdAppOpPersistence;->serializeAppId(Lcom/android/modules/utils/BinaryXmlSerializer;ILcom/android/server/permission/access/immutable/IndexedMap;)V
-HPLcom/android/server/permission/access/appop/AppIdAppOpPersistence;->serializeAppIdAppOps(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/immutable/IntReferenceMap;)V
-PLcom/android/server/permission/access/appop/AppIdAppOpPersistence;->serializeUserState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;I)V
-HSPLcom/android/server/permission/access/appop/AppIdAppOpPolicy$Companion;-><init>()V
-HSPLcom/android/server/permission/access/appop/AppIdAppOpPolicy$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-PLcom/android/server/permission/access/appop/AppIdAppOpPolicy$OnAppOpModeChangedListener;-><init>()V
-HSPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;-><clinit>()V
+HSPLcom/android/server/permission/access/appop/AppIdAppOpPersistence;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
+HPLcom/android/server/permission/access/appop/AppIdAppOpPersistence;->serializeUserState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;I)V
HSPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;-><init>()V
-PLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->addOnAppOpModeChangedListener(Lcom/android/server/permission/access/appop/AppIdAppOpPolicy$OnAppOpModeChangedListener;)V
-HPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->getAppOpMode(Lcom/android/server/permission/access/GetStateScope;IILjava/lang/String;)I
-HPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->getAppOpModes(Lcom/android/server/permission/access/GetStateScope;II)Lcom/android/server/permission/access/immutable/IndexedMap;
HSPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->getSubjectScheme()Ljava/lang/String;
-HPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V
-PLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->removeAppOpModes(Lcom/android/server/permission/access/MutateStateScope;II)Z
-HPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->setAppOpMode(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;I)Z
+HPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->onStateMutated()V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Ljava/lang/Number;Ljava/lang/Integer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->setAppOpMode(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;I)Z
HSPLcom/android/server/permission/access/appop/AppIdAppOpUpgrade;-><init>(Lcom/android/server/permission/access/appop/AppIdAppOpPolicy;)V
-PLcom/android/server/permission/access/appop/AppOpService$OnAppIdAppOpModeChangedListener;-><init>(Lcom/android/server/permission/access/appop/AppOpService;)V
-HPLcom/android/server/permission/access/appop/AppOpService$OnAppIdAppOpModeChangedListener;->onStateMutated()V
-PLcom/android/server/permission/access/appop/AppOpService$OnPackageAppOpModeChangedListener;-><init>(Lcom/android/server/permission/access/appop/AppOpService;)V
-HPLcom/android/server/permission/access/appop/AppOpService$OnPackageAppOpModeChangedListener;->onStateMutated()V
+HSPLcom/android/server/permission/access/appop/AppOpService$OnAppIdAppOpModeChangedListener;-><init>(Lcom/android/server/permission/access/appop/AppOpService;)V
+HSPLcom/android/server/permission/access/appop/AppOpService$OnPackageAppOpModeChangedListener;-><init>(Lcom/android/server/permission/access/appop/AppOpService;)V
+PLcom/android/server/permission/access/appop/AppOpService$OnPermissionFlagsChangedListener;-><init>(Lcom/android/server/permission/access/appop/AppOpService;)V
+PLcom/android/server/permission/access/appop/AppOpService$OnPermissionFlagsChangedListener;->addPendingChangedModeIfNeeded(IILjava/lang/String;IIIII)V
+PLcom/android/server/permission/access/appop/AppOpService$OnPermissionFlagsChangedListener;->onDevicePermissionFlagsChanged(IILjava/lang/String;Ljava/lang/String;II)V
+PLcom/android/server/permission/access/appop/AppOpService$OnPermissionFlagsChangedListener;->onPermissionFlagsChanged(IIIILjava/lang/String;)V
+HPLcom/android/server/permission/access/appop/AppOpService$OnPermissionFlagsChangedListener;->onStateMutated()V+]Ljava/lang/Number;Ljava/lang/Integer;
HSPLcom/android/server/permission/access/appop/AppOpService;-><init>(Lcom/android/server/permission/access/AccessCheckingService;)V
-PLcom/android/server/permission/access/appop/AppOpService;->access$getAppIdPolicy$p(Lcom/android/server/permission/access/appop/AppOpService;)Lcom/android/server/permission/access/appop/AppIdAppOpPolicy;
-HPLcom/android/server/permission/access/appop/AppOpService;->access$getListeners$p(Lcom/android/server/permission/access/appop/AppOpService;)Landroid/util/ArraySet;
-PLcom/android/server/permission/access/appop/AppOpService;->access$getPackagePolicy$p(Lcom/android/server/permission/access/appop/AppOpService;)Lcom/android/server/permission/access/appop/PackageAppOpPolicy;
-HSPLcom/android/server/permission/access/appop/AppOpService;->addAppOpsModeChangedListener(Lcom/android/server/appop/AppOpsCheckingServiceInterface$AppOpsModeChangedListener;)Z
+HSPLcom/android/server/permission/access/appop/AppOpService;->addAppOpsModeChangedListener(Lcom/android/server/appop/AppOpsService$2;)Z
HSPLcom/android/server/permission/access/appop/AppOpService;->clearAllModes()V
-HPLcom/android/server/permission/access/appop/AppOpService;->getForegroundOps(ILjava/lang/String;)Landroid/util/SparseBooleanArray;
-HPLcom/android/server/permission/access/appop/AppOpService;->getForegroundOps(Ljava/lang/String;I)Landroid/util/SparseBooleanArray;
-HPLcom/android/server/permission/access/appop/AppOpService;->getNonDefaultPackageModes(Ljava/lang/String;I)Landroid/util/SparseIntArray;
-HPLcom/android/server/permission/access/appop/AppOpService;->getPackageMode(Ljava/lang/String;II)I
-HPLcom/android/server/permission/access/appop/AppOpService;->getPackageModes(Ljava/lang/String;I)Landroid/util/ArrayMap;
-HPLcom/android/server/permission/access/appop/AppOpService;->getUidMode(ILjava/lang/String;I)I
-HPLcom/android/server/permission/access/appop/AppOpService;->getUidModes(I)Landroid/util/ArrayMap;
-PLcom/android/server/permission/access/appop/AppOpService;->initialize()V
+HPLcom/android/server/permission/access/appop/AppOpService;->evaluateModeFromPermissionFlags(II)I
+HPLcom/android/server/permission/access/appop/AppOpService;->getForegroundOps(I)Landroid/util/SparseBooleanArray;+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Ljava/lang/Number;Ljava/lang/Integer;
+HPLcom/android/server/permission/access/appop/AppOpService;->getForegroundOps(ILjava/lang/String;)Landroid/util/SparseBooleanArray;+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
+PLcom/android/server/permission/access/appop/AppOpService;->getNonDefaultPackageModes(ILjava/lang/String;)Landroid/util/SparseIntArray;
+HPLcom/android/server/permission/access/appop/AppOpService;->getNonDefaultUidModes(I)Landroid/util/SparseIntArray;+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Ljava/lang/Number;Ljava/lang/Integer;
+HPLcom/android/server/permission/access/appop/AppOpService;->getPackageMode(IILjava/lang/String;)I+]Ljava/lang/Number;Ljava/lang/Integer;
+HPLcom/android/server/permission/access/appop/AppOpService;->getPackageModes(ILjava/lang/String;)Landroid/util/ArrayMap;
+HPLcom/android/server/permission/access/appop/AppOpService;->getUidMode(IILjava/lang/String;)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/lang/Number;Ljava/lang/Integer;
+HPLcom/android/server/permission/access/appop/AppOpService;->getUidModeFromPermissionState(IILcom/android/server/permission/access/GetStateScope;Ljava/lang/String;Ljava/lang/String;)I
PLcom/android/server/permission/access/appop/AppOpService;->opNameMapToOpSparseArray(Landroid/util/ArrayMap;)Landroid/util/SparseIntArray;
HSPLcom/android/server/permission/access/appop/AppOpService;->readState()V
-HPLcom/android/server/permission/access/appop/AppOpService;->removePackage(Ljava/lang/String;I)Z
-PLcom/android/server/permission/access/appop/AppOpService;->removeUid(I)V
-HPLcom/android/server/permission/access/appop/AppOpService;->setUidMode(ILjava/lang/String;II)Z
+PLcom/android/server/permission/access/appop/AppOpService;->setPackageMode(IIILjava/lang/String;)V
+HPLcom/android/server/permission/access/appop/AppOpService;->setUidMode(III)Z
PLcom/android/server/permission/access/appop/AppOpService;->systemReady()V
-HSPLcom/android/server/permission/access/appop/BaseAppOpPersistence$Companion;-><init>()V
-HSPLcom/android/server/permission/access/appop/BaseAppOpPersistence$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HSPLcom/android/server/permission/access/appop/BaseAppOpPersistence;-><clinit>()V
-HSPLcom/android/server/permission/access/appop/BaseAppOpPersistence;-><init>()V
-HPLcom/android/server/permission/access/appop/BaseAppOpPersistence;->parseAppOp(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/immutable/MutableIndexedMap;)V
-HPLcom/android/server/permission/access/appop/BaseAppOpPersistence;->parseAppOps(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/immutable/MutableIndexedMap;)V
-PLcom/android/server/permission/access/appop/BaseAppOpPersistence;->serializeAppOp(Lcom/android/modules/utils/BinaryXmlSerializer;Ljava/lang/String;I)V
-PLcom/android/server/permission/access/appop/BaseAppOpPersistence;->serializeAppOps(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/immutable/IndexedMap;)V
+HSPLcom/android/server/permission/access/appop/BaseAppOpPersistence;->parseAppOps(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/immutable/MutableIndexedMap;)V
+HPLcom/android/server/permission/access/appop/BaseAppOpPersistence;->serializeAppOps(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/immutable/IndexedMap;)V
HSPLcom/android/server/permission/access/appop/BaseAppOpPolicy;-><init>(Lcom/android/server/permission/access/appop/BaseAppOpPersistence;)V
HSPLcom/android/server/permission/access/appop/BaseAppOpPolicy;->getObjectScheme()Ljava/lang/String;
-PLcom/android/server/permission/access/appop/BaseAppOpPolicy;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
+HSPLcom/android/server/permission/access/appop/BaseAppOpPolicy;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
PLcom/android/server/permission/access/appop/BaseAppOpPolicy;->serializeUserState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;I)V
-HSPLcom/android/server/permission/access/appop/PackageAppOpMigration$Companion;-><init>()V
-HSPLcom/android/server/permission/access/appop/PackageAppOpMigration$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HSPLcom/android/server/permission/access/appop/PackageAppOpMigration;-><clinit>()V
-HSPLcom/android/server/permission/access/appop/PackageAppOpMigration;-><init>()V
-HSPLcom/android/server/permission/access/appop/PackageAppOpPersistence$Companion;-><init>()V
-HSPLcom/android/server/permission/access/appop/PackageAppOpPersistence$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HSPLcom/android/server/permission/access/appop/PackageAppOpPersistence;-><clinit>()V
-HSPLcom/android/server/permission/access/appop/PackageAppOpPersistence;-><init>()V
-PLcom/android/server/permission/access/appop/PackageAppOpPersistence;->parsePackage(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/immutable/MutableIndexedReferenceMap;)V
-PLcom/android/server/permission/access/appop/PackageAppOpPersistence;->parsePackageAppOps(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
-PLcom/android/server/permission/access/appop/PackageAppOpPersistence;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
-PLcom/android/server/permission/access/appop/PackageAppOpPersistence;->serializePackage(Lcom/android/modules/utils/BinaryXmlSerializer;Ljava/lang/String;Lcom/android/server/permission/access/immutable/IndexedMap;)V
-PLcom/android/server/permission/access/appop/PackageAppOpPersistence;->serializePackageAppOps(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/immutable/IndexedReferenceMap;)V
+HSPLcom/android/server/permission/access/appop/PackageAppOpPersistence;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
PLcom/android/server/permission/access/appop/PackageAppOpPersistence;->serializeUserState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;I)V
-HSPLcom/android/server/permission/access/appop/PackageAppOpPolicy$Companion;-><init>()V
-HSPLcom/android/server/permission/access/appop/PackageAppOpPolicy$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-PLcom/android/server/permission/access/appop/PackageAppOpPolicy$OnAppOpModeChangedListener;-><init>()V
-HSPLcom/android/server/permission/access/appop/PackageAppOpPolicy;-><clinit>()V
HSPLcom/android/server/permission/access/appop/PackageAppOpPolicy;-><init>()V
-PLcom/android/server/permission/access/appop/PackageAppOpPolicy;->addOnAppOpModeChangedListener(Lcom/android/server/permission/access/appop/PackageAppOpPolicy$OnAppOpModeChangedListener;)V
-HPLcom/android/server/permission/access/appop/PackageAppOpPolicy;->getAppOpMode(Lcom/android/server/permission/access/GetStateScope;Ljava/lang/String;ILjava/lang/String;)I
-HPLcom/android/server/permission/access/appop/PackageAppOpPolicy;->getAppOpModes(Lcom/android/server/permission/access/GetStateScope;Ljava/lang/String;I)Lcom/android/server/permission/access/immutable/IndexedMap;
HSPLcom/android/server/permission/access/appop/PackageAppOpPolicy;->getSubjectScheme()Ljava/lang/String;
-HPLcom/android/server/permission/access/appop/PackageAppOpPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V
-HPLcom/android/server/permission/access/appop/PackageAppOpPolicy;->removeAppOpModes(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;I)Z
+HPLcom/android/server/permission/access/appop/PackageAppOpPolicy;->onStateMutated()V+]Ljava/lang/Number;Ljava/lang/Integer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/permission/access/appop/PackageAppOpPolicy;->setAppOpMode(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;ILjava/lang/String;I)V
HSPLcom/android/server/permission/access/appop/PackageAppOpUpgrade;-><init>(Lcom/android/server/permission/access/appop/PackageAppOpPolicy;)V
-HSPLcom/android/server/permission/access/collection/ArraySetExtensionsKt;->arraySetOf([Ljava/lang/Object;)Landroid/util/ArraySet;
-PLcom/android/server/permission/access/immutable/IndexedList;-><init>(Ljava/util/ArrayList;)V
-HPLcom/android/server/permission/access/immutable/IndexedList;-><init>(Ljava/util/ArrayList;Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-PLcom/android/server/permission/access/immutable/IndexedList;->get(I)Ljava/lang/Object;
-PLcom/android/server/permission/access/immutable/IndexedList;->getList$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Ljava/util/ArrayList;
-HPLcom/android/server/permission/access/immutable/IndexedList;->getSize()I
HSPLcom/android/server/permission/access/immutable/IndexedListSet;-><init>(Ljava/util/ArrayList;)V
-HSPLcom/android/server/permission/access/immutable/IndexedListSet;-><init>(Ljava/util/ArrayList;Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HPLcom/android/server/permission/access/immutable/IndexedListSet;->contains(Ljava/lang/Object;)Z
-HPLcom/android/server/permission/access/immutable/IndexedListSet;->elementAt(I)Ljava/lang/Object;
-HSPLcom/android/server/permission/access/immutable/IndexedListSet;->getList$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Ljava/util/ArrayList;
-HPLcom/android/server/permission/access/immutable/IndexedListSet;->getSize()I
-HPLcom/android/server/permission/access/immutable/IndexedListSet;->toMutable()Lcom/android/server/permission/access/immutable/MutableIndexedListSet;
PLcom/android/server/permission/access/immutable/IndexedListSet;->toMutable()Ljava/lang/Object;
-PLcom/android/server/permission/access/immutable/IndexedListSetExtensionsKt;->plus(Lcom/android/server/permission/access/immutable/IndexedListSet;Ljava/lang/Object;)Lcom/android/server/permission/access/immutable/MutableIndexedListSet;
HSPLcom/android/server/permission/access/immutable/IndexedMap;-><init>(Landroid/util/ArrayMap;)V
-HSPLcom/android/server/permission/access/immutable/IndexedMap;-><init>(Landroid/util/ArrayMap;Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HSPLcom/android/server/permission/access/immutable/IndexedMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/permission/access/immutable/IndexedMap;->getMap$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Landroid/util/ArrayMap;
-HSPLcom/android/server/permission/access/immutable/IndexedMap;->getSize()I
-HPLcom/android/server/permission/access/immutable/IndexedMap;->indexOfKey(Ljava/lang/Object;)I
-HSPLcom/android/server/permission/access/immutable/IndexedMap;->keyAt(I)Ljava/lang/Object;
-PLcom/android/server/permission/access/immutable/IndexedMap;->toMutable()Lcom/android/server/permission/access/immutable/MutableIndexedMap;
PLcom/android/server/permission/access/immutable/IndexedMap;->toMutable()Ljava/lang/Object;
-HSPLcom/android/server/permission/access/immutable/IndexedMap;->valueAt(I)Ljava/lang/Object;
HPLcom/android/server/permission/access/immutable/IndexedMapExtensionsKt;->getWithDefault(Lcom/android/server/permission/access/immutable/IndexedMap;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/permission/access/immutable/IndexedMapExtensionsKt;->putWithDefault(Lcom/android/server/permission/access/immutable/MutableIndexedMap;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/permission/access/immutable/IndexedReferenceMap;-><init>(Landroid/util/ArrayMap;)V
-HSPLcom/android/server/permission/access/immutable/IndexedReferenceMap;-><init>(Landroid/util/ArrayMap;Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HPLcom/android/server/permission/access/immutable/IndexedReferenceMap;->get(Ljava/lang/Object;)Lcom/android/server/permission/access/immutable/Immutable;
-PLcom/android/server/permission/access/immutable/IndexedReferenceMap;->getMap$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Landroid/util/ArrayMap;
-PLcom/android/server/permission/access/immutable/IndexedReferenceMap;->getSize()I
-HPLcom/android/server/permission/access/immutable/IndexedReferenceMap;->indexOfKey(Ljava/lang/Object;)I
-PLcom/android/server/permission/access/immutable/IndexedReferenceMap;->keyAt(I)Ljava/lang/Object;
-PLcom/android/server/permission/access/immutable/IndexedReferenceMap;->valueAt(I)Lcom/android/server/permission/access/immutable/Immutable;
-HSPLcom/android/server/permission/access/immutable/IndexedSet;-><init>(Landroid/util/ArraySet;)V
-HSPLcom/android/server/permission/access/immutable/IndexedSet;-><init>(Landroid/util/ArraySet;Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-PLcom/android/server/permission/access/immutable/IndexedSet;->elementAt(I)Ljava/lang/Object;
-PLcom/android/server/permission/access/immutable/IndexedSet;->getSet$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Landroid/util/ArraySet;
-HPLcom/android/server/permission/access/immutable/IndexedSet;->getSize()I
-PLcom/android/server/permission/access/immutable/IndexedSet;->isEmpty()Z
-HSPLcom/android/server/permission/access/immutable/IndexedSetExtensionsKt;->indexedSetOf([Ljava/lang/Object;)Lcom/android/server/permission/access/immutable/IndexedSet;
-HPLcom/android/server/permission/access/immutable/IndexedSetExtensionsKt;->plusAssign(Lcom/android/server/permission/access/immutable/MutableIndexedSet;Ljava/util/Collection;)V
+PLcom/android/server/permission/access/immutable/IndexedMapExtensionsKt;->putWithDefault(Lcom/android/server/permission/access/immutable/MutableIndexedMap;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/permission/access/immutable/IndexedSetExtensionsKt;->indexedSetOf([Ljava/lang/Object;)Lcom/android/server/permission/access/immutable/MutableIndexedSet;
HSPLcom/android/server/permission/access/immutable/IntMap;-><init>(Landroid/util/SparseArray;)V
-HSPLcom/android/server/permission/access/immutable/IntMap;-><init>(Landroid/util/SparseArray;Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-PLcom/android/server/permission/access/immutable/IntMap;->get(I)Ljava/lang/Object;
-HSPLcom/android/server/permission/access/immutable/IntMap;->getArray$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Landroid/util/SparseArray;
-HPLcom/android/server/permission/access/immutable/IntMap;->getSize()I
-HSPLcom/android/server/permission/access/immutable/IntMapExtensionsKt;->set(Lcom/android/server/permission/access/immutable/MutableIntMap;ILjava/lang/Object;)V
-PLcom/android/server/permission/access/immutable/IntMapKt;->gc(Landroid/util/SparseArray;)V
-HSPLcom/android/server/permission/access/immutable/IntMapKt;->putReturnOld(Landroid/util/SparseArray;ILjava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/permission/access/immutable/IntReferenceMap;-><init>(Landroid/util/SparseArray;)V
-HSPLcom/android/server/permission/access/immutable/IntReferenceMap;-><init>(Landroid/util/SparseArray;Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HPLcom/android/server/permission/access/immutable/IntReferenceMap;->contains(I)Z
-HPLcom/android/server/permission/access/immutable/IntReferenceMap;->get(I)Lcom/android/server/permission/access/immutable/Immutable;
-HSPLcom/android/server/permission/access/immutable/IntReferenceMap;->getArray$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Landroid/util/SparseArray;
-HPLcom/android/server/permission/access/immutable/IntReferenceMap;->getSize()I
-PLcom/android/server/permission/access/immutable/IntReferenceMap;->indexOfKey(I)I
-HPLcom/android/server/permission/access/immutable/IntReferenceMap;->keyAt(I)I
-PLcom/android/server/permission/access/immutable/IntReferenceMap;->toMutable()Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;
-PLcom/android/server/permission/access/immutable/IntReferenceMap;->toMutable()Ljava/lang/Object;
-HPLcom/android/server/permission/access/immutable/IntReferenceMap;->valueAt(I)Lcom/android/server/permission/access/immutable/Immutable;
+PLcom/android/server/permission/access/immutable/IntReferenceMapExtensionsKt;->minusAssign(Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;I)V
HSPLcom/android/server/permission/access/immutable/IntReferenceMapExtensionsKt;->set(Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;ILcom/android/server/permission/access/immutable/Immutable;)V
-HSPLcom/android/server/permission/access/immutable/IntSet;-><init>(Landroid/util/SparseBooleanArray;)V
-HSPLcom/android/server/permission/access/immutable/IntSet;-><init>(Landroid/util/SparseBooleanArray;Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HSPLcom/android/server/permission/access/immutable/IntSet;->elementAt(I)I
-HSPLcom/android/server/permission/access/immutable/IntSet;->getArray$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Landroid/util/SparseBooleanArray;
-HSPLcom/android/server/permission/access/immutable/IntSet;->getSize()I
-HSPLcom/android/server/permission/access/immutable/IntSetExtensionsKt;->MutableIntSet([I)Lcom/android/server/permission/access/immutable/MutableIntSet;
-HSPLcom/android/server/permission/access/immutable/IntSetExtensionsKt;->plusAssign(Lcom/android/server/permission/access/immutable/MutableIntSet;I)V
-HSPLcom/android/server/permission/access/immutable/IntSetExtensionsKt;->plusAssign(Lcom/android/server/permission/access/immutable/MutableIntSet;Lcom/android/server/permission/access/immutable/IntSet;)V
-HSPLcom/android/server/permission/access/immutable/IntSetExtensionsKt;->plusAssign(Lcom/android/server/permission/access/immutable/MutableIntSet;[I)V
-HPLcom/android/server/permission/access/immutable/MutableIndexedList;-><init>(Ljava/util/ArrayList;)V
-HPLcom/android/server/permission/access/immutable/MutableIndexedList;-><init>(Ljava/util/ArrayList;ILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HPLcom/android/server/permission/access/immutable/MutableIndexedList;->add(Ljava/lang/Object;)V
-PLcom/android/server/permission/access/immutable/MutableIndexedListSet;-><init>(Lcom/android/server/permission/access/immutable/IndexedListSet;)V
-HSPLcom/android/server/permission/access/immutable/MutableIndexedListSet;-><init>(Ljava/util/ArrayList;)V
-HSPLcom/android/server/permission/access/immutable/MutableIndexedListSet;-><init>(Ljava/util/ArrayList;ILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HSPLcom/android/server/permission/access/immutable/MutableIndexedListSet;->add(Ljava/lang/Object;)Z
-HSPLcom/android/server/permission/access/immutable/MutableIndexedMap;-><init>(Landroid/util/ArrayMap;)V
-HSPLcom/android/server/permission/access/immutable/MutableIndexedMap;-><init>(Landroid/util/ArrayMap;ILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-PLcom/android/server/permission/access/immutable/MutableIndexedMap;-><init>(Lcom/android/server/permission/access/immutable/IndexedMap;)V
-HSPLcom/android/server/permission/access/immutable/MutableIndexedMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HPLcom/android/server/permission/access/immutable/MutableIndexedMap;->putAt(ILjava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/permission/access/immutable/MutableIndexedMap;->removeAt(I)Ljava/lang/Object;
+HSPLcom/android/server/permission/access/immutable/MutableIndexedListSet;-><init>()V
+HSPLcom/android/server/permission/access/immutable/MutableIndexedListSet;->add(Ljava/lang/Object;)V
+HSPLcom/android/server/permission/access/immutable/MutableIndexedMap;-><init>()V
+HSPLcom/android/server/permission/access/immutable/MutableIndexedMap;->put(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/permission/access/immutable/MutableIndexedReferenceMap;-><init>()V
HSPLcom/android/server/permission/access/immutable/MutableIndexedReferenceMap;-><init>(Landroid/util/ArrayMap;)V
-HSPLcom/android/server/permission/access/immutable/MutableIndexedReferenceMap;-><init>(Landroid/util/ArrayMap;ILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-PLcom/android/server/permission/access/immutable/MutableIndexedReferenceMap;->put(Ljava/lang/Object;Lcom/android/server/permission/access/immutable/Immutable;)Lcom/android/server/permission/access/immutable/Immutable;
+HPLcom/android/server/permission/access/immutable/MutableIndexedReferenceMap;->get(Ljava/lang/Object;)Lcom/android/server/permission/access/immutable/Immutable;
+HSPLcom/android/server/permission/access/immutable/MutableIndexedReferenceMap;->put(Ljava/lang/Object;Lcom/android/server/permission/access/immutable/MutableIndexedMap;)V
+PLcom/android/server/permission/access/immutable/MutableIndexedReferenceMap;->remove$1(Ljava/lang/Object;)V
+PLcom/android/server/permission/access/immutable/MutableIndexedReferenceMap;->toMutable()Ljava/lang/Object;
+HSPLcom/android/server/permission/access/immutable/MutableIndexedReferenceMap;->valueAt(I)Lcom/android/server/permission/access/immutable/Immutable;
+HSPLcom/android/server/permission/access/immutable/MutableIndexedSet;-><init>()V
HSPLcom/android/server/permission/access/immutable/MutableIndexedSet;-><init>(Landroid/util/ArraySet;)V
-HSPLcom/android/server/permission/access/immutable/MutableIndexedSet;-><init>(Landroid/util/ArraySet;ILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HPLcom/android/server/permission/access/immutable/MutableIndexedSet;->add(Ljava/lang/Object;)Z
-HSPLcom/android/server/permission/access/immutable/MutableIntMap;-><init>(Landroid/util/SparseArray;)V
-HSPLcom/android/server/permission/access/immutable/MutableIntMap;-><init>(Landroid/util/SparseArray;ILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-PLcom/android/server/permission/access/immutable/MutableIntMap;->clear()V
-PLcom/android/server/permission/access/immutable/MutableIntMap;->remove(I)Ljava/lang/Object;
+PLcom/android/server/permission/access/immutable/MutableIndexedSet;->add(Ljava/lang/Object;)V
+HSPLcom/android/server/permission/access/immutable/MutableIntMap;-><init>()V
+HSPLcom/android/server/permission/access/immutable/MutableIntReferenceMap;-><init>()V
HSPLcom/android/server/permission/access/immutable/MutableIntReferenceMap;-><init>(Landroid/util/SparseArray;)V
-HSPLcom/android/server/permission/access/immutable/MutableIntReferenceMap;-><init>(Landroid/util/SparseArray;ILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-PLcom/android/server/permission/access/immutable/MutableIntReferenceMap;-><init>(Lcom/android/server/permission/access/immutable/IntReferenceMap;)V
+HPLcom/android/server/permission/access/immutable/MutableIntReferenceMap;->get(I)Lcom/android/server/permission/access/immutable/Immutable;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/permission/access/immutable/MutableIntReferenceMap;->keyAt(I)I
HSPLcom/android/server/permission/access/immutable/MutableIntReferenceMap;->mutate(I)Lcom/android/server/permission/access/immutable/Immutable;
-HSPLcom/android/server/permission/access/immutable/MutableIntReferenceMap;->put(ILcom/android/server/permission/access/immutable/Immutable;)Lcom/android/server/permission/access/immutable/Immutable;
+HSPLcom/android/server/permission/access/immutable/MutableIntReferenceMap;->put(ILcom/android/server/permission/access/immutable/Immutable;)V
+PLcom/android/server/permission/access/immutable/MutableIntReferenceMap;->toMutable()Ljava/lang/Object;
+HSPLcom/android/server/permission/access/immutable/MutableIntReferenceMap;->valueAt(I)Lcom/android/server/permission/access/immutable/Immutable;
+HSPLcom/android/server/permission/access/immutable/MutableIntSet;-><init>()V
HSPLcom/android/server/permission/access/immutable/MutableIntSet;-><init>(Landroid/util/SparseBooleanArray;)V
-HSPLcom/android/server/permission/access/immutable/MutableIntSet;-><init>(Landroid/util/SparseBooleanArray;ILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HPLcom/android/server/permission/access/immutable/MutableIntSet;->clear()V
-HSPLcom/android/server/permission/access/immutable/MutableReference;-><init>(Lcom/android/server/permission/access/immutable/Immutable;)V
HSPLcom/android/server/permission/access/immutable/MutableReference;-><init>(Lcom/android/server/permission/access/immutable/Immutable;Lcom/android/server/permission/access/immutable/Immutable;)V
-HSPLcom/android/server/permission/access/immutable/MutableReference;->get()Lcom/android/server/permission/access/immutable/Immutable;
-HSPLcom/android/server/permission/access/immutable/MutableReference;->mutate()Lcom/android/server/permission/access/immutable/Immutable;
-HPLcom/android/server/permission/access/immutable/MutableReference;->toImmutable()Lcom/android/server/permission/access/immutable/MutableReference;
-HSPLcom/android/server/permission/access/permission/AppIdPermissionMigration$Companion;-><init>()V
-HSPLcom/android/server/permission/access/permission/AppIdPermissionMigration$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HSPLcom/android/server/permission/access/permission/AppIdPermissionMigration;-><clinit>()V
-HSPLcom/android/server/permission/access/permission/AppIdPermissionMigration;-><init>()V
-HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence$Companion;-><init>()V
-HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;-><clinit>()V
-HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;-><init>()V
-HPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->parseAppId(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;)V
-HPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->parseAppIdPermission(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/immutable/MutableIndexedMap;)V
-HPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->parseAppIdPermissions(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
-HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->parsePermission(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/immutable/MutableIndexedMap;)V
+HSPLcom/android/server/permission/access/immutable/MutableReference;->mutate()Lcom/android/server/permission/access/immutable/Immutable;+]Lcom/android/server/permission/access/immutable/Immutable;megamorphic_types
+PLcom/android/server/permission/access/immutable/MutableReference;->toImmutable()Lcom/android/server/permission/access/immutable/MutableReference;
HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->parsePermissions(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;Z)V
-HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->parseSystemState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;)V
-PLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
-HPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializeAppId(Lcom/android/modules/utils/BinaryXmlSerializer;ILcom/android/server/permission/access/immutable/IndexedMap;)V
-HPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializeAppIdPermission(Lcom/android/modules/utils/BinaryXmlSerializer;Ljava/lang/String;I)V
-PLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializeAppIdPermissions(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/immutable/IntReferenceMap;)V
-HPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializePermission(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/permission/Permission;)V
-HPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializePermissions(Lcom/android/modules/utils/BinaryXmlSerializer;Ljava/lang/String;Lcom/android/server/permission/access/immutable/IndexedMap;)V
-PLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializeSystemState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;)V
-PLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializeUserState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;I)V
-HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy$Companion;-><init>()V
-HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializePermissions(Lcom/android/modules/utils/BinaryXmlSerializer;Ljava/lang/String;Lcom/android/server/permission/access/immutable/IndexedMap;)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer;
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;-><clinit>()V
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;-><init>()V
-PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->addOnPermissionFlagsChangedListener(Lcom/android/server/permission/access/permission/AppIdPermissionPolicy$OnPermissionFlagsChangedListener;)V
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->addPermissionGroups(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;)V
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->addPermissionGroups(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;)V
HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->addPermissions(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/immutable/MutableIndexedSet;)V
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->adoptPermissions(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/immutable/MutableIndexedSet;)V
-PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->canAdoptPermissions(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;Ljava/lang/String;)Z
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->checkPrivilegedPermissionAllowlist(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/permission/Permission;)Z
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->evaluateAllPermissionStatesForPackage(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/pkg/PackageState;)V
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->adoptPermissions(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/immutable/MutableIndexedSet;)V
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->evaluateAllPermissionStatesForPackage(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/pkg/PackageState;)V
HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->evaluateAllPermissionStatesForPackageAndUser(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;ILcom/android/server/pm/pkg/PackageState;)V
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->evaluatePermissionState(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;Lcom/android/server/pm/pkg/PackageState;)V
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->evaluatePermissionStateForAllPackages(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;Lcom/android/server/pm/pkg/PackageState;)V
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->findPermissionTree(Lcom/android/server/permission/access/GetStateScope;Ljava/lang/String;)Lcom/android/server/permission/access/permission/Permission;
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->evaluatePermissionState(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;Lcom/android/server/pm/pkg/PackageState;)V+]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/pm/permission/CompatibilityPermissionInfo;Lcom/android/internal/pm/permission/CompatibilityPermissionInfo;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->evaluatePermissionStateForAllPackages(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;)V
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->findPermissionTree(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;)Lcom/android/server/permission/access/permission/Permission;
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getAppIdTargetSdkVersion(ILjava/lang/String;Lcom/android/server/permission/access/AccessState;)I
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getObjectScheme()Ljava/lang/String;
-PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getOldStatePermissionFlags(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;)I
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPermissionFlags(Lcom/android/server/permission/access/AccessState;IILjava/lang/String;)I
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPermissionFlags(Lcom/android/server/permission/access/GetStateScope;IILjava/lang/String;)I
-PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPermissionGroups(Lcom/android/server/permission/access/GetStateScope;)Lcom/android/server/permission/access/immutable/IndexedMap;
-PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPermissionTrees(Lcom/android/server/permission/access/GetStateScope;)Lcom/android/server/permission/access/immutable/IndexedMap;
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPermissions(Lcom/android/server/permission/access/GetStateScope;)Lcom/android/server/permission/access/immutable/IndexedMap;
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPrivilegedPermissionAllowlistState(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Ljava/lang/String;)Ljava/lang/Boolean;
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPermissionFlags(Lcom/android/server/permission/access/AccessState;IILjava/lang/String;)I+]Ljava/lang/Number;Ljava/lang/Integer;
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getSubjectScheme()Ljava/lang/String;
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getUidPermissionFlags(Lcom/android/server/permission/access/GetStateScope;II)Lcom/android/server/permission/access/immutable/IndexedMap;
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->inheritImplicitPermissionStates(Lcom/android/server/permission/access/MutateStateScope;II)V
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->onInitialized(Lcom/android/server/permission/access/MutateStateScope;)V
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->onStorageVolumeMounted(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;Ljava/util/List;Z)V
-PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->onSystemReady(Lcom/android/server/permission/access/MutateStateScope;)V
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->inheritImplicitPermissionStates(Lcom/android/server/permission/access/MutateStateScope;II)V
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->onPackageAdded(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;)V
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->onPackageInstalled(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;I)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->onStateMutated()V+]Lcom/android/server/permission/access/permission/AppIdPermissionPolicy$OnPermissionFlagsChangedListener;Lcom/android/server/permission/access/appop/AppOpService$OnPermissionFlagsChangedListener;,Lcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->onStorageVolumeMounted(Lcom/android/server/permission/access/MutateStateScope;Ljava/util/List;Z)V
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->onSystemReady()V
HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->parseSystemState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;)V
-PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->revokePermissionsOnPackageUpdate(Lcom/android/server/permission/access/MutateStateScope;I)V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->revokePermissionsOnPackageUpdate(Lcom/android/server/permission/access/MutateStateScope;I)V
PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->serializeSystemState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;)V
-PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->serializeUserState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;I)V
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->setPermissionFlags(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;I)Z
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->shouldGrantPermissionByProtectionFlags(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/permission/Permission;)Z
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->shouldGrantPermissionBySignature(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/permission/Permission;)Z
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->serializeUserState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer;]Ljava/lang/Number;Ljava/lang/Integer;
HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->shouldGrantPrivilegedOrOemPermission(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/permission/Permission;)Z
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->trimPermissionStates(Lcom/android/server/permission/access/MutateStateScope;I)V
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->trimPermissions(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;Lcom/android/server/permission/access/immutable/MutableIndexedSet;)V
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->updatePermissionFlags(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;II)Z
-HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->updatePermissionIfDynamic(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/permission/access/permission/Permission;)Lcom/android/server/permission/access/permission/Permission;
-HSPLcom/android/server/permission/access/permission/AppIdPermissionUpgrade$Companion;-><init>()V
-HSPLcom/android/server/permission/access/permission/AppIdPermissionUpgrade$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->trimPermissionStates(Lcom/android/server/permission/access/MutateStateScope;I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Iterable;Ljava/util/Collections$UnmodifiableSet;]Ljava/lang/Number;Ljava/lang/Integer;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->trimPermissions(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;Lcom/android/server/permission/access/immutable/MutableIndexedSet;)V+]Lcom/android/internal/pm/pkg/component/ParsedPermission;Lcom/android/internal/pm/pkg/component/ParsedPermissionImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->updatePermissionExemptFlags(Lcom/android/server/permission/access/MutateStateScope;IILcom/android/server/permission/access/permission/Permission;II)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->updatePermissionFlags(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;II)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/permission/access/permission/AppIdPermissionPolicy$OnPermissionFlagsChangedListener;Lcom/android/server/permission/access/appop/AppOpService$OnPermissionFlagsChangedListener;,Lcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;]Ljava/lang/Number;Ljava/lang/Integer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/permission/access/permission/AppIdPermissionUpgrade;-><clinit>()V
HSPLcom/android/server/permission/access/permission/AppIdPermissionUpgrade;-><init>(Lcom/android/server/permission/access/permission/AppIdPermissionPolicy;)V
-HSPLcom/android/server/permission/access/permission/DevicePermissionPersistence$Companion;-><init>()V
-HSPLcom/android/server/permission/access/permission/DevicePermissionPersistence$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HSPLcom/android/server/permission/access/permission/DevicePermissionPersistence;-><clinit>()V
-HSPLcom/android/server/permission/access/permission/DevicePermissionPersistence;-><init>()V
-PLcom/android/server/permission/access/permission/DevicePermissionPersistence;->parseAppIdDevicePermissions(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
-PLcom/android/server/permission/access/permission/DevicePermissionPersistence;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
-PLcom/android/server/permission/access/permission/DevicePermissionPersistence;->serializeUserState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;I)V
-HSPLcom/android/server/permission/access/permission/DevicePermissionPolicy$Companion;-><init>()V
-HSPLcom/android/server/permission/access/permission/DevicePermissionPolicy$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HSPLcom/android/server/permission/access/permission/DevicePermissionPolicy;-><clinit>()V
HSPLcom/android/server/permission/access/permission/DevicePermissionPolicy;-><init>()V
-PLcom/android/server/permission/access/permission/DevicePermissionPolicy;->addOnPermissionFlagsChangedListener(Lcom/android/server/permission/access/permission/DevicePermissionPolicy$OnDevicePermissionFlagsChangedListener;)V
HSPLcom/android/server/permission/access/permission/DevicePermissionPolicy;->getObjectScheme()Ljava/lang/String;
HSPLcom/android/server/permission/access/permission/DevicePermissionPolicy;->getSubjectScheme()Ljava/lang/String;
-HPLcom/android/server/permission/access/permission/DevicePermissionPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V
-HPLcom/android/server/permission/access/permission/DevicePermissionPolicy;->onStorageVolumeMounted(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;Ljava/util/List;Z)V
-PLcom/android/server/permission/access/permission/DevicePermissionPolicy;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
+PLcom/android/server/permission/access/permission/DevicePermissionPolicy;->onPackageAdded(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;)V
+HPLcom/android/server/permission/access/permission/DevicePermissionPolicy;->onStateMutated()V+]Lcom/android/server/permission/access/permission/DevicePermissionPolicy$OnDevicePermissionFlagsChangedListener;Lcom/android/server/permission/access/appop/AppOpService$OnPermissionFlagsChangedListener;,Lcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/permission/access/permission/DevicePermissionPolicy;->onStorageVolumeMounted(Lcom/android/server/permission/access/MutateStateScope;Ljava/util/List;Z)V
+HSPLcom/android/server/permission/access/permission/DevicePermissionPolicy;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
PLcom/android/server/permission/access/permission/DevicePermissionPolicy;->serializeUserState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;I)V
-PLcom/android/server/permission/access/permission/DevicePermissionPolicy;->trimDevicePermissionStates(Lcom/android/server/permission/access/MutateStateScope;Ljava/util/Set;)V
-HPLcom/android/server/permission/access/permission/DevicePermissionPolicy;->trimPermissionStates(Lcom/android/server/permission/access/MutateStateScope;I)V
-HSPLcom/android/server/permission/access/permission/Permission$Companion;-><init>()V
-HSPLcom/android/server/permission/access/permission/Permission$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-HSPLcom/android/server/permission/access/permission/Permission;-><clinit>()V
+HPLcom/android/server/permission/access/permission/DevicePermissionPolicy;->trimPermissionStates$1(Lcom/android/server/permission/access/MutateStateScope;I)V
+HSPLcom/android/server/permission/access/permission/Permission;-><init>(Landroid/content/pm/PermissionInfo;ZII)V
HSPLcom/android/server/permission/access/permission/Permission;-><init>(Landroid/content/pm/PermissionInfo;ZII[IZ)V
-HSPLcom/android/server/permission/access/permission/Permission;-><init>(Landroid/content/pm/PermissionInfo;ZII[IZILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-PLcom/android/server/permission/access/permission/Permission;->copy$default(Lcom/android/server/permission/access/permission/Permission;Landroid/content/pm/PermissionInfo;ZII[IZILjava/lang/Object;)Lcom/android/server/permission/access/permission/Permission;
-HPLcom/android/server/permission/access/permission/Permission;->copy(Landroid/content/pm/PermissionInfo;ZII[IZ)Lcom/android/server/permission/access/permission/Permission;
-PLcom/android/server/permission/access/permission/Permission;->getAppId()I
-PLcom/android/server/permission/access/permission/Permission;->getGids()[I
HPLcom/android/server/permission/access/permission/Permission;->getGidsForUser(I)[I
-HSPLcom/android/server/permission/access/permission/Permission;->getPermissionInfo()Landroid/content/pm/PermissionInfo;
-PLcom/android/server/permission/access/permission/Permission;->getType()I
-PLcom/android/server/permission/access/permission/PermissionFlags;-><clinit>()V
-PLcom/android/server/permission/access/permission/PermissionFlags;-><init>()V
-HPLcom/android/server/permission/access/permission/PermissionFlags;->fromApiFlags(ILcom/android/server/permission/access/permission/Permission;I)I
+HPLcom/android/server/permission/access/permission/PermissionFlags;->isAppOpGranted(I)Z
HPLcom/android/server/permission/access/permission/PermissionFlags;->isPermissionGranted(I)Z
HPLcom/android/server/permission/access/permission/PermissionFlags;->toApiFlags(I)I
-PLcom/android/server/permission/access/permission/PermissionFlags;->updateFlags(Lcom/android/server/permission/access/permission/Permission;III)I
-PLcom/android/server/permission/access/permission/PermissionFlags;->updateRuntimePermissionGranted(IZ)I
-HSPLcom/android/server/permission/access/permission/PermissionService$Companion;-><init>()V
-HSPLcom/android/server/permission/access/permission/PermissionService$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-PLcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;-><init>(Lcom/android/server/permission/access/permission/PermissionService;)V
+PLcom/android/server/permission/access/permission/PermissionFlags;->toString(I)Ljava/lang/String;
+HPLcom/android/server/permission/access/permission/PermissionFlags;->updateFlags(Lcom/android/server/permission/access/permission/Permission;III)I
+HSPLcom/android/server/permission/access/permission/PermissionManagerLocalImpl;-><init>(Lcom/android/server/permission/access/AccessCheckingService;)V
+PLcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener$onStateMutated$2$1;-><init>(ZLcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;ILcom/android/server/permission/access/permission/PermissionService;Ljava/lang/String;)V
+PLcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener$onStateMutated$2$1;->run()V
+PLcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener$onStateMutated$3$1;-><init>(Lcom/android/server/permission/access/permission/PermissionService;I)V
+PLcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener$onStateMutated$3$1;->run()V
+HSPLcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;-><init>(Lcom/android/server/permission/access/permission/PermissionService;)V
PLcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;->onDevicePermissionFlagsChanged(IILjava/lang/String;Ljava/lang/String;II)V
-PLcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;->onPermissionFlagsChanged(IILjava/lang/String;II)V
-HPLcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;->onStateMutated()V
-PLcom/android/server/permission/access/permission/PermissionService$OnPermissionsChangeListeners$Companion;-><init>()V
-PLcom/android/server/permission/access/permission/PermissionService$OnPermissionsChangeListeners$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
-PLcom/android/server/permission/access/permission/PermissionService$OnPermissionsChangeListeners;-><clinit>()V
-PLcom/android/server/permission/access/permission/PermissionService$OnPermissionsChangeListeners;-><init>(Landroid/os/Looper;)V
-PLcom/android/server/permission/access/permission/PermissionService$OnPermissionsChangeListeners;->addListener(Landroid/permission/IOnPermissionsChangeListener;)V
-PLcom/android/server/permission/access/permission/PermissionService$OnPermissionsChangeListeners;->removeListener(Landroid/permission/IOnPermissionsChangeListener;)V
-PLcom/android/server/permission/access/permission/PermissionService$onSystemReady$2;-><init>(Lcom/android/server/permission/access/permission/PermissionService;)V
+PLcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;->onPermissionFlagsChanged(IIIILjava/lang/String;)V
+HPLcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;->onStateMutated()V+]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Ljava/lang/Iterable;Ljava/util/LinkedHashSet;]Ljava/util/Iterator;Ljava/util/LinkedHashMap$LinkedKeyIterator;
+HSPLcom/android/server/permission/access/permission/PermissionService$OnPermissionsChangeListeners;-><init>(Landroid/os/Looper;)V
+PLcom/android/server/permission/access/permission/PermissionService$OnPermissionsChangeListeners;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/permission/access/permission/PermissionService$onSystemReady$2;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/permission/access/permission/PermissionService$onSystemReady$2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/permission/access/permission/PermissionService$restoreDelayedRuntimePermissions$3;-><init>(ILjava/lang/String;)V
+PLcom/android/server/permission/access/permission/PermissionService$restoreDelayedRuntimePermissions$3;-><init>(Lcom/android/server/permission/access/permission/PermissionService;I)V
+PLcom/android/server/permission/access/permission/PermissionService$restoreDelayedRuntimePermissions$3;->accept(Ljava/lang/Object;)V
HSPLcom/android/server/permission/access/permission/PermissionService;-><clinit>()V
HSPLcom/android/server/permission/access/permission/PermissionService;-><init>(Lcom/android/server/permission/access/AccessCheckingService;)V
-PLcom/android/server/permission/access/permission/PermissionService;->access$getDevicePolicy$p(Lcom/android/server/permission/access/permission/PermissionService;)Lcom/android/server/permission/access/permission/DevicePermissionPolicy;
-PLcom/android/server/permission/access/permission/PermissionService;->access$getOnPermissionFlagsChangedListener$p(Lcom/android/server/permission/access/permission/PermissionService;)Lcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;
-PLcom/android/server/permission/access/permission/PermissionService;->access$getPolicy$p(Lcom/android/server/permission/access/permission/PermissionService;)Lcom/android/server/permission/access/permission/AppIdPermissionPolicy;
-PLcom/android/server/permission/access/permission/PermissionService;->access$getService$p(Lcom/android/server/permission/access/permission/PermissionService;)Lcom/android/server/permission/access/AccessCheckingService;
+PLcom/android/server/permission/access/permission/PermissionService;->access$killUid(Lcom/android/server/permission/access/permission/PermissionService;ILjava/lang/String;)V
PLcom/android/server/permission/access/permission/PermissionService;->access$setRuntimePermissionGranted(Lcom/android/server/permission/access/permission/PermissionService;Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;ILjava/lang/String;Ljava/lang/String;ZZZZLjava/lang/String;)V
-PLcom/android/server/permission/access/permission/PermissionService;->access$updatePermissionFlags(Lcom/android/server/permission/access/permission/PermissionService;Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;Ljava/lang/String;IIZZZLjava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/permission/access/permission/PermissionService;->addOnPermissionsChangeListener(Landroid/permission/IOnPermissionsChangeListener;)V
-HPLcom/android/server/permission/access/permission/PermissionService;->checkPermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I
-HPLcom/android/server/permission/access/permission/PermissionService;->checkUidPermission(ILjava/lang/String;I)I
-HPLcom/android/server/permission/access/permission/PermissionService;->enforceCallingOrSelfAnyPermission(Ljava/lang/String;[Ljava/lang/String;)V
-HPLcom/android/server/permission/access/permission/PermissionService;->enforceCallingOrSelfCrossUserPermission(IZZLjava/lang/String;)V
-HPLcom/android/server/permission/access/permission/PermissionService;->filtered(Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;II)Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;
-PLcom/android/server/permission/access/permission/PermissionService;->generatePermissionGroupInfo(Landroid/content/pm/PermissionGroupInfo;I)Landroid/content/pm/PermissionGroupInfo;
-PLcom/android/server/permission/access/permission/PermissionService;->generatePermissionInfo$default(Lcom/android/server/permission/access/permission/PermissionService;Lcom/android/server/permission/access/permission/Permission;IIILjava/lang/Object;)Landroid/content/pm/PermissionInfo;
+HPLcom/android/server/permission/access/permission/PermissionService;->access$updatePermissionFlags(Lcom/android/server/permission/access/permission/PermissionService;Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;Ljava/lang/String;IIZZZLjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/permission/access/permission/PermissionService;->addOnPermissionsChangeListener(Landroid/permission/IOnPermissionsChangeListener;)V
+PLcom/android/server/permission/access/permission/PermissionService;->backupRuntimePermissions(I)[B
+HPLcom/android/server/permission/access/permission/PermissionService;->checkPermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;
+HPLcom/android/server/permission/access/permission/PermissionService;->checkUidPermission(ILjava/lang/String;Ljava/lang/String;)I+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+PLcom/android/server/permission/access/permission/PermissionService;->dump(Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/permission/access/permission/PermissionService;->dumpAppIdState(Landroid/util/IndentingPrintWriter;ILcom/android/server/permission/access/AccessState;Lcom/android/server/permission/access/immutable/MutableIndexedSet;)V
+HPLcom/android/server/permission/access/permission/PermissionService;->enforceCallingOrSelfAnyPermission(Ljava/lang/String;[Ljava/lang/String;)V+]Landroid/content/Context;Landroid/app/ContextImpl;
+HPLcom/android/server/permission/access/permission/PermissionService;->enforceCallingOrSelfCrossUserPermission(Ljava/lang/String;IZZ)V
HPLcom/android/server/permission/access/permission/PermissionService;->generatePermissionInfo(Lcom/android/server/permission/access/permission/Permission;II)Landroid/content/pm/PermissionInfo;
-HPLcom/android/server/permission/access/permission/PermissionService;->getAllAppOpPermissionPackages()Ljava/util/Map;
-PLcom/android/server/permission/access/permission/PermissionService;->getAllPermissionsWithProtection(I)Ljava/util/List;
-PLcom/android/server/permission/access/permission/PermissionService;->getAllPermissionsWithProtectionFlags(I)Ljava/util/List;
+PLcom/android/server/permission/access/permission/PermissionService;->getAllAppIdPackageNames(Lcom/android/server/permission/access/AccessState;)Lcom/android/server/permission/access/immutable/MutableIndexedMap;
+PLcom/android/server/permission/access/permission/PermissionService;->getAllAppOpPermissionPackages()Ljava/util/Map;
+PLcom/android/server/permission/access/permission/PermissionService;->getAllPermissionGroups(I)Ljava/util/List;
+HPLcom/android/server/permission/access/permission/PermissionService;->getAllPermissionsWithProtection()Ljava/util/List;+]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;
+PLcom/android/server/permission/access/permission/PermissionService;->getAllPermissionsWithProtectionFlags()Ljava/util/List;
+HPLcom/android/server/permission/access/permission/PermissionService;->getAllowlistedRestrictedPermissions(IILjava/lang/String;)Ljava/util/ArrayList;
+PLcom/android/server/permission/access/permission/PermissionService;->getAllowlistedRestrictedPermissions(Ljava/lang/String;II)Ljava/util/List;
+HPLcom/android/server/permission/access/permission/PermissionService;->getAllowlistedRestrictedPermissionsUnchecked(III)Ljava/util/ArrayList;+]Ljava/lang/Number;Ljava/lang/Integer;
PLcom/android/server/permission/access/permission/PermissionService;->getAppOpPermissionPackages(Ljava/lang/String;)[Ljava/lang/String;
PLcom/android/server/permission/access/permission/PermissionService;->getDefaultPermissionGrantFingerprint(I)Ljava/lang/String;
-HPLcom/android/server/permission/access/permission/PermissionService;->getGidsForUid(I)[I
-HPLcom/android/server/permission/access/permission/PermissionService;->getGrantedPermissions(Ljava/lang/String;I)Ljava/util/Set;
+HPLcom/android/server/permission/access/permission/PermissionService;->getGidsForUid(I)[I+]Ljava/lang/Number;Ljava/lang/Integer;
+HPLcom/android/server/permission/access/permission/PermissionService;->getGrantedPermissions(ILjava/lang/String;)Ljava/util/Set;+]Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Number;Ljava/lang/Integer;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
HPLcom/android/server/permission/access/permission/PermissionService;->getInstalledPermissions(Ljava/lang/String;)Ljava/util/Set;
-HPLcom/android/server/permission/access/permission/PermissionService;->getLegacyPermissionState(I)Lcom/android/server/pm/permission/LegacyPermissionState;
-HPLcom/android/server/permission/access/permission/PermissionService;->getLegacyPermissions()Ljava/util/List;
-HPLcom/android/server/permission/access/permission/PermissionService;->getPackageState(Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageState;
-HPLcom/android/server/permission/access/permission/PermissionService;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I
-HPLcom/android/server/permission/access/permission/PermissionService;->getPermissionFlagsWithPolicy(Lcom/android/server/permission/access/GetStateScope;IILjava/lang/String;Ljava/lang/String;)I
-PLcom/android/server/permission/access/permission/PermissionService;->getPermissionGids(Ljava/lang/String;I)[I
+HPLcom/android/server/permission/access/permission/PermissionService;->getLegacyPermissionState(I)Lcom/android/server/pm/permission/LegacyPermissionState;+]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Ljava/lang/Number;Ljava/lang/Integer;
+PLcom/android/server/permission/access/permission/PermissionService;->getLegacyPermissions()Ljava/util/List;
+HPLcom/android/server/permission/access/permission/PermissionService;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/permission/access/permission/PermissionService;->getPermissionFlagsWithPolicy(IILcom/android/server/permission/access/GetStateScope;Ljava/lang/String;Ljava/lang/String;)I
+PLcom/android/server/permission/access/permission/PermissionService;->getPermissionGids(ILjava/lang/String;)[I
HPLcom/android/server/permission/access/permission/PermissionService;->getPermissionGroupInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionGroupInfo;
-HPLcom/android/server/permission/access/permission/PermissionService;->getPermissionInfo(Ljava/lang/String;ILjava/lang/String;)Landroid/content/pm/PermissionInfo;
-HPLcom/android/server/permission/access/permission/PermissionService;->getPersistentDeviceId(I)Ljava/lang/String;
-PLcom/android/server/permission/access/permission/PermissionService;->getSplitPermissions()Ljava/util/List;
+HPLcom/android/server/permission/access/permission/PermissionService;->getPermissionInfo(ILjava/lang/String;Ljava/lang/String;)Landroid/content/pm/PermissionInfo;+]Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
+PLcom/android/server/permission/access/permission/PermissionService;->getPermissionTEMP(Ljava/lang/String;)Lcom/android/server/pm/permission/Permission;
+HSPLcom/android/server/permission/access/permission/PermissionService;->getSplitPermissions()Ljava/util/List;
PLcom/android/server/permission/access/permission/PermissionService;->grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/permission/access/permission/PermissionService;->initialize()V
-HPLcom/android/server/permission/access/permission/PermissionService;->isPackageVisibleToUid(Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Ljava/lang/String;I)Z
-HPLcom/android/server/permission/access/permission/PermissionService;->isPackageVisibleToUid(Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Ljava/lang/String;II)Z
-HPLcom/android/server/permission/access/permission/PermissionService;->isPermissionGranted(Lcom/android/server/permission/access/GetStateScope;Lcom/android/server/pm/pkg/PackageState;ILjava/lang/String;Ljava/lang/String;)Z
-HPLcom/android/server/permission/access/permission/PermissionService;->isPermissionsReviewRequired(Ljava/lang/String;I)Z
-HPLcom/android/server/permission/access/permission/PermissionService;->isRootOrSystemOrShellUid(I)Z
-HPLcom/android/server/permission/access/permission/PermissionService;->isRootOrSystemUid(I)Z
-HPLcom/android/server/permission/access/permission/PermissionService;->isShellUid(I)Z
+HPLcom/android/server/permission/access/permission/PermissionService;->isPackageVisibleToUid(Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Ljava/lang/String;I)Z+]Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;]Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;
+HPLcom/android/server/permission/access/permission/PermissionService;->isPermissionGranted(Lcom/android/server/permission/access/GetStateScope;Lcom/android/server/pm/pkg/PackageState;ILjava/lang/String;Ljava/lang/String;)Z+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HPLcom/android/server/permission/access/permission/PermissionService;->isPermissionsReviewRequired(ILjava/lang/String;)Z+]Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Number;Ljava/lang/Integer;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;
+PLcom/android/server/permission/access/permission/PermissionService;->isRootOrSystemUid(I)Z
HPLcom/android/server/permission/access/permission/PermissionService;->isSinglePermissionGranted(Lcom/android/server/permission/access/GetStateScope;IIZLjava/lang/String;Ljava/lang/String;)Z
-HPLcom/android/server/permission/access/permission/PermissionService;->isSystemUidPermissionGranted(ILjava/lang/String;)Z
-HPLcom/android/server/permission/access/permission/PermissionService;->isUidInstantApp(Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;I)Z
-HPLcom/android/server/permission/access/permission/PermissionService;->onPackageAdded(Lcom/android/server/pm/pkg/PackageState;ZLcom/android/server/pm/pkg/AndroidPackage;)V
+HPLcom/android/server/permission/access/permission/PermissionService;->isUidInstantApp(I)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
+HSPLcom/android/server/permission/access/permission/PermissionService;->onPackageAdded(Lcom/android/server/pm/PackageSetting;ZLcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/permission/access/permission/PermissionService;->onPackageInstalled(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PackageInstalledParams;I)V
+PLcom/android/server/permission/access/permission/PermissionService;->onPackageRemoved(Lcom/android/server/pm/pkg/AndroidPackage;)V
PLcom/android/server/permission/access/permission/PermissionService;->onStorageVolumeMounted(Ljava/lang/String;Z)V
PLcom/android/server/permission/access/permission/PermissionService;->onSystemReady()V
-PLcom/android/server/permission/access/permission/PermissionService;->readLegacyPermissionStateTEMP()V
+HPLcom/android/server/permission/access/permission/PermissionService;->queryPermissionsByGroup(ILjava/lang/String;)Ljava/util/List;+]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;
+HSPLcom/android/server/permission/access/permission/PermissionService;->readLegacyPermissionStateTEMP()V
HSPLcom/android/server/permission/access/permission/PermissionService;->readLegacyPermissionsTEMP(Lcom/android/server/pm/permission/LegacyPermissionSettings;)V
PLcom/android/server/permission/access/permission/PermissionService;->removeOnPermissionsChangeListener(Landroid/permission/IOnPermissionsChangeListener;)V
-PLcom/android/server/permission/access/permission/PermissionService;->setPermissionFlagsWithPolicy(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;Ljava/lang/String;I)Z
-PLcom/android/server/permission/access/permission/PermissionService;->setRuntimePermissionGranted$default(Lcom/android/server/permission/access/permission/PermissionService;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZZLjava/lang/String;ILjava/lang/Object;)V
-HPLcom/android/server/permission/access/permission/PermissionService;->setRuntimePermissionGranted(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;ILjava/lang/String;Ljava/lang/String;ZZZZLjava/lang/String;)V
-HPLcom/android/server/permission/access/permission/PermissionService;->setRuntimePermissionGranted(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZZLjava/lang/String;)V
-PLcom/android/server/permission/access/permission/PermissionService;->toLegacyPermissions(Lcom/android/server/permission/access/immutable/IndexedMap;)Ljava/util/List;
-HPLcom/android/server/permission/access/permission/PermissionService;->updatePermissionFlags(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;Ljava/lang/String;IIZZZLjava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/permission/access/permission/PermissionService;->updatePermissionFlags(Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;I)V
-HPLcom/android/server/permission/access/permission/PermissionService;->withFilteredSnapshot(Lcom/android/server/pm/PackageManagerLocal;II)Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;
+PLcom/android/server/permission/access/permission/PermissionService;->restoreDelayedRuntimePermissions(Ljava/lang/String;I)V
+PLcom/android/server/permission/access/permission/PermissionService;->setAllowlistedRestrictedPermissionsUnchecked(Lcom/android/server/pm/pkg/AndroidPackage;ILjava/util/List;II)V
+HPLcom/android/server/permission/access/permission/PermissionService;->setPermissionFlagsWithPolicy(IIILcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/permission/access/permission/PermissionService;->setRuntimePermissionGranted$default(Lcom/android/server/permission/access/permission/PermissionService;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;I)V
+PLcom/android/server/permission/access/permission/PermissionService;->shouldShowRequestPermissionRationale(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/permission/access/permission/PermissionService;->toLegacyPermissions(Lcom/android/server/permission/access/immutable/IndexedMap;)Ljava/util/List;
+HPLcom/android/server/permission/access/permission/PermissionService;->updatePermissionFlags(Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;I)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/permission/access/SchemePolicy;Lcom/android/server/permission/access/appop/AppIdAppOpPolicy;,Lcom/android/server/permission/access/appop/PackageAppOpPolicy;,Lcom/android/server/permission/access/permission/AppIdPermissionPolicy;,Lcom/android/server/permission/access/permission/DevicePermissionPolicy;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
PLcom/android/server/permission/access/permission/PermissionService;->writeLegacyPermissionStateTEMP()V
PLcom/android/server/permission/access/permission/PermissionService;->writeLegacyPermissionsTEMP(Lcom/android/server/pm/permission/LegacyPermissionSettings;)V
-PLcom/android/server/permission/access/util/IntExtensionsKt;->andInv(II)I
PLcom/android/server/permission/access/util/IntExtensionsKt;->hasAnyBit(II)Z
HPLcom/android/server/permission/access/util/IntExtensionsKt;->hasBits(II)Z
-HSPLcom/android/server/permission/access/util/PermissionApex;-><clinit>()V
-HSPLcom/android/server/permission/access/util/PermissionApex;-><init>()V
-HSPLcom/android/server/permission/access/util/PermissionApex;->getApexEnvironment()Landroid/content/ApexEnvironment;
-HSPLcom/android/server/permission/access/util/PermissionApex;->getSystemDataDirectory()Ljava/io/File;
-PLcom/android/server/permission/access/util/PermissionApex;->getUserDataDirectory(I)Ljava/io/File;
HSPLcom/android/server/permission/jarjar/kotlin/Pair;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
HSPLcom/android/server/permission/jarjar/kotlin/Pair;->component1()Ljava/lang/Object;
HSPLcom/android/server/permission/jarjar/kotlin/Pair;->component2()Ljava/lang/Object;
-HSPLcom/android/server/permission/jarjar/kotlin/TuplesKt;->to(Ljava/lang/Object;Ljava/lang/Object;)Lcom/android/server/permission/jarjar/kotlin/Pair;
+PLcom/android/server/permission/jarjar/kotlin/Triple;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/permission/jarjar/kotlin/Triple;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/permission/jarjar/kotlin/Triple;->getFirst()Ljava/lang/Object;
+PLcom/android/server/permission/jarjar/kotlin/Triple;->getSecond()Ljava/lang/Object;
+PLcom/android/server/permission/jarjar/kotlin/Triple;->getThird()Ljava/lang/Object;
+PLcom/android/server/permission/jarjar/kotlin/Triple;->hashCode()I
PLcom/android/server/permission/jarjar/kotlin/Unit;-><clinit>()V
-PLcom/android/server/permission/jarjar/kotlin/Unit;-><init>()V
-HSPLcom/android/server/permission/jarjar/kotlin/collections/ArraysKt;->asList([Ljava/lang/Object;)Ljava/util/List;
PLcom/android/server/permission/jarjar/kotlin/collections/ArraysKt;->contains([Ljava/lang/Object;Ljava/lang/Object;)Z
-PLcom/android/server/permission/jarjar/kotlin/collections/ArraysKt;->first([Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/permission/jarjar/kotlin/collections/ArraysKt___ArraysJvmKt;->asList([Ljava/lang/Object;)Ljava/util/List;
-HPLcom/android/server/permission/jarjar/kotlin/collections/ArraysKt___ArraysKt;->contains([Ljava/lang/Object;Ljava/lang/Object;)Z
-PLcom/android/server/permission/jarjar/kotlin/collections/ArraysKt___ArraysKt;->first([Ljava/lang/Object;)Ljava/lang/Object;
-HPLcom/android/server/permission/jarjar/kotlin/collections/ArraysKt___ArraysKt;->indexOf([Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLcom/android/server/permission/jarjar/kotlin/collections/ArraysUtilJVM;->asList([Ljava/lang/Object;)Ljava/util/List;
PLcom/android/server/permission/jarjar/kotlin/collections/CollectionsKt;->elementAt(Ljava/lang/Iterable;I)Ljava/lang/Object;
-HPLcom/android/server/permission/jarjar/kotlin/collections/CollectionsKt___CollectionsKt$elementAt$1;-><init>(I)V
-PLcom/android/server/permission/jarjar/kotlin/collections/CollectionsKt___CollectionsKt;->elementAt(Ljava/lang/Iterable;I)Ljava/lang/Object;
-HPLcom/android/server/permission/jarjar/kotlin/collections/CollectionsKt___CollectionsKt;->elementAtOrElse(Ljava/lang/Iterable;ILcom/android/server/permission/jarjar/kotlin/jvm/functions/Function1;)Ljava/lang/Object;
+PLcom/android/server/permission/jarjar/kotlin/collections/CollectionsKt___CollectionsKt$elementAt$1;-><init>(I)V
HSPLcom/android/server/permission/jarjar/kotlin/collections/EmptyMap;-><clinit>()V
HSPLcom/android/server/permission/jarjar/kotlin/collections/EmptyMap;-><init>()V
-HSPLcom/android/server/permission/jarjar/kotlin/collections/EmptySet;-><clinit>()V
-HSPLcom/android/server/permission/jarjar/kotlin/collections/EmptySet;-><init>()V
-HSPLcom/android/server/permission/jarjar/kotlin/collections/MapsKt;->emptyMap()Ljava/util/Map;
HSPLcom/android/server/permission/jarjar/kotlin/collections/MapsKt__MapsKt;->emptyMap()Ljava/util/Map;
-HSPLcom/android/server/permission/jarjar/kotlin/collections/SetsKt;->emptySet()Ljava/util/Set;
-HSPLcom/android/server/permission/jarjar/kotlin/collections/SetsKt__SetsKt;->emptySet()Ljava/util/Set;
-PLcom/android/server/permission/jarjar/kotlin/io/CloseableKt;->closeFinally(Ljava/io/Closeable;Ljava/lang/Throwable;)V
-HSPLcom/android/server/permission/jarjar/kotlin/jdk7/AutoCloseableKt;->closeFinally(Ljava/lang/AutoCloseable;Ljava/lang/Throwable;)V
-HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z
-PLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V
-HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)V
-HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V
-HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V
-PLcom/android/server/permission/jarjar/kotlin/jvm/internal/Lambda;-><init>(I)V
+HSPLcom/android/server/permission/jarjar/kotlin/io/CloseableKt;->closeFinally(Ljava/io/Closeable;Ljava/lang/Throwable;)V
+HSPLcom/android/server/permission/jarjar/kotlin/jdk7/AutoCloseableKt;->closeFinally(Ljava/lang/AutoCloseable;Ljava/lang/Throwable;)V+]Ljava/lang/AutoCloseable;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;,Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;
+HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z+]Ljava/lang/Object;Ljava/lang/Integer;,Ljava/lang/String;
+HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V
+HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/String;Ljava/lang/Object;)V
+HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->checkNotNullExpressionValue(Ljava/lang/String;Ljava/lang/Object;)V
+PLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/String;Ljava/lang/Object;)V
+PLcom/android/server/permission/jarjar/kotlin/jvm/internal/Lambda;-><init>()V
PLcom/android/server/permission/jarjar/kotlin/jvm/internal/Ref$BooleanRef;-><init>()V
+PLcom/android/server/permission/jarjar/kotlin/jvm/internal/Ref$IntRef;-><init>()V
PLcom/android/server/permission/jarjar/kotlin/jvm/internal/Ref$ObjectRef;-><init>()V
-PLcom/android/server/permission/jarjar/kotlin/ranges/RangesKt;->coerceAtMost(II)I
-PLcom/android/server/permission/jarjar/kotlin/ranges/RangesKt;->coerceAtMost(JJ)J
-PLcom/android/server/permission/jarjar/kotlin/ranges/RangesKt___RangesKt;->coerceAtMost(II)I
-PLcom/android/server/permission/jarjar/kotlin/ranges/RangesKt___RangesKt;->coerceAtMost(JJ)J
-HPLcom/android/server/permission/jarjar/kotlin/text/StringsKt;->startsWith$default(Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Z
-PLcom/android/server/permission/jarjar/kotlin/text/StringsKt__StringsJVMKt;->startsWith$default(Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Z
-PLcom/android/server/permission/jarjar/kotlin/text/StringsKt__StringsJVMKt;->startsWith(Ljava/lang/String;Ljava/lang/String;Z)Z
+PLcom/android/server/pinner/PinRangeSourceStatic;->read(Lcom/android/server/pinner/PinnerService$PinRange;)Z
+PLcom/android/server/pinner/PinnedFile;-><init>(JJJLjava/lang/String;)V
+PLcom/android/server/pinner/PinnerService$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/pinner/PinnerService$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/pinner/PinnerService$$ExternalSyntheticLambda4;-><init>(Ljava/lang/String;)V
+PLcom/android/server/pinner/PinnerService$$ExternalSyntheticLambda4;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pinner/PinnerService$1;-><init>(Lcom/android/server/pinner/PinnerService;)V
+PLcom/android/server/pinner/PinnerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/pinner/PinnerService$2;-><init>(Lcom/android/server/pinner/PinnerService;)V
+PLcom/android/server/pinner/PinnerService$2;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/pinner/PinnerService$3;-><init>(Lcom/android/server/pinner/PinnerService;Landroid/net/Uri;)V
+PLcom/android/server/pinner/PinnerService$3;->onChange(ZLandroid/net/Uri;)V
+PLcom/android/server/pinner/PinnerService$4;-><init>(Lcom/android/server/pinner/PinnerService;)V
+PLcom/android/server/pinner/PinnerService$4;->onUidActive(I)V
+PLcom/android/server/pinner/PinnerService$4;->onUidGone(IZ)V
+PLcom/android/server/pinner/PinnerService$BinderService;-><init>(Lcom/android/server/pinner/PinnerService;)V
+PLcom/android/server/pinner/PinnerService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/pinner/PinnerService$Injector;-><init>()V
+PLcom/android/server/pinner/PinnerService$Injector;->pinFileInternal(Lcom/android/server/pinner/PinnerService;Ljava/lang/String;JZ)Lcom/android/server/pinner/PinnedFile;
+PLcom/android/server/pinner/PinnerService$PinnerHandler;-><init>(Lcom/android/server/pinner/PinnerService;Landroid/os/Looper;)V
+PLcom/android/server/pinner/PinnerService$PinnerHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/pinner/PinnerService;-><clinit>()V
+PLcom/android/server/pinner/PinnerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pinner/PinnerService;-><init>(Landroid/content/Context;Lcom/android/server/pinner/PinnerService$Injector;)V
+PLcom/android/server/pinner/PinnerService;->createPinKeys()Landroid/util/ArraySet;
+PLcom/android/server/pinner/PinnerService;->getAllPinsForGroup(Ljava/lang/String;)Ljava/util/List;
+PLcom/android/server/pinner/PinnerService;->maybeOpenPinMetaInZip(Ljava/util/zip/ZipFile;Ljava/lang/String;)Ljava/io/InputStream;
+PLcom/android/server/pinner/PinnerService;->onStart()V
+PLcom/android/server/pinner/PinnerService;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/pinner/PinnerService;->pinAppsInternal(IZ)V
+PLcom/android/server/pinner/PinnerService;->pinFile(Ljava/lang/String;JLandroid/content/pm/ApplicationInfo;Ljava/lang/String;Z)Lcom/android/server/pinner/PinnedFile;
+PLcom/android/server/pinner/PinnerService;->pinFileRanges(Ljava/lang/String;JLcom/android/server/pinner/PinRangeSource;)Lcom/android/server/pinner/PinnedFile;
+PLcom/android/server/pinner/PinnerService;->refreshPinAnonConfig()V
+PLcom/android/server/pinner/PinnerService;->sendPinAppsMessage(I)V
+PLcom/android/server/pinner/PinnerService;->unpinFile(Ljava/lang/String;)V
+PLcom/android/server/pinner/PinnerService;->update(Landroid/util/ArraySet;Z)V
+PLcom/android/server/pinner/PinnerService;->updateActiveState(IZ)V
+PLcom/android/server/pinner/PinnerUtils;->safeClose(Ljava/io/Closeable;)V
+PLcom/android/server/pinner/PinnerUtils;->safeClose(Ljava/io/FileDescriptor;)V
+PLcom/android/server/pm/AbstractStatsBase$1;-><init>(Lcom/android/server/pm/AbstractStatsBase;Ljava/lang/String;Ljava/lang/Object;)V
+PLcom/android/server/pm/AbstractStatsBase$1;->run()V
HSPLcom/android/server/pm/AbstractStatsBase;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V
PLcom/android/server/pm/AbstractStatsBase;->getFile()Landroid/util/AtomicFile;
-PLcom/android/server/pm/AbstractStatsBase;->read(Ljava/lang/Object;)V
-HSPLcom/android/server/pm/ApexManager$1;-><init>()V
-HSPLcom/android/server/pm/ApexManager$1;->create()Lcom/android/server/pm/ApexManager;
+PLcom/android/server/pm/AbstractStatsBase;->maybeWriteAsync(Ljava/lang/Object;)Z
+PLcom/android/server/pm/AbstractStatsBase;->read(Lcom/android/server/utils/WatchedArrayMap;)V
+PLcom/android/server/pm/AbstractStatsBase;->writeImpl(Ljava/lang/Object;)V
HSPLcom/android/server/pm/ApexManager$1;->create()Ljava/lang/Object;
HSPLcom/android/server/pm/ApexManager$ActiveApexInfo;-><init>(Landroid/apex/ApexInfo;)V
-HSPLcom/android/server/pm/ApexManager$ActiveApexInfo;-><init>(Ljava/lang/String;Ljava/io/File;Ljava/io/File;ZLjava/io/File;Z)V
HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;-><init>()V
-PLcom/android/server/pm/ApexManager$ApexManagerImpl;->destroyCeSnapshotsNotSpecified(I[I)Z
HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;->getActiveApexInfos()Ljava/util/List;
HPLcom/android/server/pm/ApexManager$ApexManagerImpl;->getActivePackageNameForApexModuleName(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/pm/ApexManager$ApexManagerImpl;->getAllApexInfos()[Landroid/apex/ApexInfo;
-PLcom/android/server/pm/ApexManager$ApexManagerImpl;->getApexSystemServices()Ljava/util/List;
PLcom/android/server/pm/ApexManager$ApexManagerImpl;->getApksInApex(Ljava/lang/String;)Ljava/util/List;
-HPLcom/android/server/pm/ApexManager$ApexManagerImpl;->getBackingApexFile(Ljava/io/File;)Ljava/io/File;
-PLcom/android/server/pm/ApexManager$ApexManagerImpl;->getSessions()Landroid/util/SparseArray;
-PLcom/android/server/pm/ApexManager$ApexManagerImpl;->markBootCompleted()V
-PLcom/android/server/pm/ApexManager$ApexManagerImpl;->notifyScanResult(Ljava/util/List;)V
-PLcom/android/server/pm/ApexManager$ApexManagerImpl;->notifyScanResultLocked(Ljava/util/List;)V
-HPLcom/android/server/pm/ApexManager$ApexManagerImpl;->registerApkInApex(Lcom/android/server/pm/pkg/AndroidPackage;)V
-PLcom/android/server/pm/ApexManager$ApexManagerImpl;->reportErrorWithApkInApex(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->getBackingApexFile(Ljava/io/File;)Ljava/io/File;
+HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;->notifyScanResultLocked(Ljava/util/List;)V
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->registerApkInApex(Lcom/android/server/pm/pkg/AndroidPackage;)V
HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;->waitForApexService()Landroid/apex/IApexService;
-PLcom/android/server/pm/ApexManager$ScanResult;-><init>(Landroid/apex/ApexInfo;Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)V
+HSPLcom/android/server/pm/ApexManager$ScanResult;-><init>(Landroid/apex/ApexInfo;Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)V
HSPLcom/android/server/pm/ApexManager;-><clinit>()V
-HSPLcom/android/server/pm/ApexManager;-><init>()V
HSPLcom/android/server/pm/ApexManager;->getInstance()Lcom/android/server/pm/ApexManager;
-PLcom/android/server/pm/ApexSystemServiceInfo;-><init>(Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/pm/ApexSystemServiceInfo;->getJarPath()Ljava/lang/String;
-PLcom/android/server/pm/ApexSystemServiceInfo;->getName()Ljava/lang/String;
-PLcom/android/server/pm/AppDataHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/AppDataHelper;Ljava/util/List;I)V
+PLcom/android/server/pm/ApexSystemServiceInfo;-><init>(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pm/ApkChecksums$Injector;-><init>(Lcom/android/server/pm/ApkChecksums$Injector$Producer;Lcom/android/server/pm/ApkChecksums$Injector$Producer;Lcom/android/server/pm/ApkChecksums$Injector$Producer;Lcom/android/server/pm/ApkChecksums$Injector$Producer;)V
+PLcom/android/server/pm/ApkChecksums$Injector;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
+PLcom/android/server/pm/ApkChecksums;-><clinit>()V
+PLcom/android/server/pm/ApkChecksums;->buildDigestsPathForApk(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/pm/ApkChecksums;->calculateChecksumIfRequested(Ljava/util/Map;Ljava/lang/String;Ljava/io/File;II)V
+PLcom/android/server/pm/ApkChecksums;->convertToSet([Ljava/security/cert/Certificate;)Ljava/util/Set;
+PLcom/android/server/pm/ApkChecksums;->getAvailableApkChecksums(Ljava/lang/String;Ljava/io/File;ILjava/lang/String;[Ljava/security/cert/Certificate;Ljava/util/Map;Lcom/android/server/pm/ApkChecksums$Injector;)V
+PLcom/android/server/pm/ApkChecksums;->getChecksums(Ljava/util/List;IILjava/lang/String;[Ljava/security/cert/Certificate;Landroid/content/pm/IOnChecksumsReadyListener;Lcom/android/server/pm/ApkChecksums$Injector;)V
+PLcom/android/server/pm/ApkChecksums;->getRequiredApkChecksums(Ljava/lang/String;Ljava/io/File;ILjava/util/Map;)V
+PLcom/android/server/pm/ApkChecksums;->isRequired(IILjava/util/Map;)Z
+PLcom/android/server/pm/ApkChecksums;->needToWait(Ljava/io/File;ILjava/util/Map;Lcom/android/server/pm/ApkChecksums$Injector;)Z
+PLcom/android/server/pm/ApkChecksums;->processRequiredChecksums(Ljava/util/List;Ljava/util/List;ILandroid/content/pm/IOnChecksumsReadyListener;Lcom/android/server/pm/ApkChecksums$Injector;J)V
+PLcom/android/server/pm/ApkChecksums;->readChecksums(Ljava/io/File;)[Landroid/content/pm/Checksum;
+PLcom/android/server/pm/ApkChecksums;->writeChecksums(Ljava/io/OutputStream;[Landroid/content/pm/Checksum;)V
+PLcom/android/server/pm/AppDataHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/AppDataHelper;ZLcom/android/server/pm/PackageSetting;II)V
PLcom/android/server/pm/AppDataHelper$$ExternalSyntheticLambda0;->run()V
-HPLcom/android/server/pm/AppDataHelper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/AppDataHelper;ZLcom/android/server/pm/PackageSetting;II)V
+PLcom/android/server/pm/AppDataHelper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/AppDataHelper;Ljava/util/List;I)V
PLcom/android/server/pm/AppDataHelper$$ExternalSyntheticLambda1;->run()V
-HPLcom/android/server/pm/AppDataHelper$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/pm/AppDataHelper;Ljava/lang/String;Ljava/lang/String;IILandroid/os/CreateAppDataArgs;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;)V
-HPLcom/android/server/pm/AppDataHelper$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/pm/AppDataHelper;->$r8$lambda$2BeLf97yLOm88wYtplb9WF4eyqo(Lcom/android/server/pm/AppDataHelper;ZLcom/android/server/pm/PackageSetting;II)V
-PLcom/android/server/pm/AppDataHelper;->$r8$lambda$M0YumYvb8z5b5xIpxD3ih_G5vRU(Lcom/android/server/pm/AppDataHelper;Ljava/lang/String;Ljava/lang/String;IILandroid/os/CreateAppDataArgs;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Landroid/os/CreateAppDataResult;Ljava/lang/Throwable;)V
-PLcom/android/server/pm/AppDataHelper;->$r8$lambda$YFf7DSMx-MyHV4nCg6MSaBHl8TQ(Lcom/android/server/pm/AppDataHelper;Ljava/util/List;I)V
+PLcom/android/server/pm/AppDataHelper$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/pm/UserManagerService$LocalService;ILcom/android/server/pm/PackageSetting;Landroid/os/storage/StorageManagerInternal;)V
+PLcom/android/server/pm/AppDataHelper$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/pm/AppDataHelper$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/pm/AppDataHelper;Ljava/lang/String;Ljava/lang/String;IILandroid/os/CreateAppDataArgs;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/pm/AppDataHelper$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
HSPLcom/android/server/pm/AppDataHelper;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-HPLcom/android/server/pm/AppDataHelper;->assertPackageStorageValid(Lcom/android/server/pm/Computer;Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/pm/AppDataHelper;->assertPackageStorageValid(Lcom/android/server/pm/Computer;Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/pm/AppDataHelper;->clearAppDataLIF(Lcom/android/server/pm/pkg/AndroidPackage;II)V
+PLcom/android/server/pm/AppDataHelper;->clearAppProfilesLIF(Lcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/pm/AppDataHelper;->destroyAppProfilesLIF(Ljava/lang/String;)V
PLcom/android/server/pm/AppDataHelper;->executeBatchLI(Lcom/android/server/pm/Installer$Batch;)V
PLcom/android/server/pm/AppDataHelper;->fixAppsDataOnBoot()Ljava/util/concurrent/Future;
-HPLcom/android/server/pm/AppDataHelper;->lambda$fixAppsDataOnBoot$3(Ljava/util/List;I)V
-HPLcom/android/server/pm/AppDataHelper;->lambda$prepareAppData$2(Ljava/lang/String;Ljava/lang/String;IILandroid/os/CreateAppDataArgs;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Landroid/os/CreateAppDataResult;Ljava/lang/Throwable;)V
-PLcom/android/server/pm/AppDataHelper;->lambda$prepareAppDataAndMigrate$1(ZLcom/android/server/pm/PackageSetting;II)V
-HPLcom/android/server/pm/AppDataHelper;->maybeMigrateAppDataLIF(Lcom/android/server/pm/PackageSetting;I)Z
HPLcom/android/server/pm/AppDataHelper;->prepareAppData(Lcom/android/server/pm/Installer$Batch;Lcom/android/server/pm/PackageSetting;III)Ljava/util/concurrent/CompletableFuture;
-HPLcom/android/server/pm/AppDataHelper;->prepareAppDataAndMigrate(Lcom/android/server/pm/Installer$Batch;Lcom/android/server/pm/pkg/AndroidPackage;IIZ)V
-HPLcom/android/server/pm/AppDataHelper;->prepareAppDataContentsLeafLIF(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;II)V
-PLcom/android/server/pm/AppDataHelper;->reconcileAppsData(IIZ)V
-PLcom/android/server/pm/AppDataHelper;->reconcileAppsDataLI(Ljava/lang/String;IIZ)V
-HPLcom/android/server/pm/AppDataHelper;->reconcileAppsDataLI(Ljava/lang/String;IIZZ)Ljava/util/List;
-HPLcom/android/server/pm/AppDataHelper;->shouldHaveAppStorage(Lcom/android/server/pm/pkg/AndroidPackage;)Z
+PLcom/android/server/pm/AppDataHelper;->prepareAppDataAndMigrate(Lcom/android/server/pm/Installer$Batch;Lcom/android/server/pm/pkg/PackageStateInternal;IIZ)V
+PLcom/android/server/pm/AppDataHelper;->prepareAppDataContentsLeafLIF(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;II)V
+PLcom/android/server/pm/AppDataHelper;->prepareAppDataPostCommitLIF(Lcom/android/server/pm/PackageSetting;[I)V
+PLcom/android/server/pm/AppDataHelper;->reconcileAppsDataLI(Ljava/lang/String;IIZZ)Ljava/util/List;
+PLcom/android/server/pm/AppDataHelper;->shouldHaveAppStorage(Lcom/android/server/pm/pkg/PackageStateInternal;)Z
HSPLcom/android/server/pm/AppIdSettingMap;-><init>()V
HSPLcom/android/server/pm/AppIdSettingMap;-><init>(Lcom/android/server/pm/AppIdSettingMap;)V
-HSPLcom/android/server/pm/AppIdSettingMap;->getSetting(I)Lcom/android/server/pm/SettingBase;
+PLcom/android/server/pm/AppIdSettingMap;->acquireAndRegisterNewAppId(Lcom/android/server/pm/SettingBase;)I
HSPLcom/android/server/pm/AppIdSettingMap;->registerExistingAppId(ILcom/android/server/pm/SettingBase;Ljava/lang/Object;)Z
-HSPLcom/android/server/pm/AppIdSettingMap;->registerObserver(Lcom/android/server/utils/Watcher;)V
-PLcom/android/server/pm/AppIdSettingMap;->removeSetting(I)V
-PLcom/android/server/pm/AppIdSettingMap;->setFirstAvailableAppId(I)V
-HSPLcom/android/server/pm/AppIdSettingMap;->snapshot()Lcom/android/server/pm/AppIdSettingMap;
PLcom/android/server/pm/AppStateHelper;-><clinit>()V
PLcom/android/server/pm/AppStateHelper;-><init>(Landroid/content/Context;)V
-PLcom/android/server/pm/AppsFilterBase$$ExternalSyntheticLambda0;-><init>(Landroid/util/SparseArray;[ILcom/android/internal/util/function/QuadFunction;)V
-HPLcom/android/server/pm/AppsFilterBase$$ExternalSyntheticLambda0;->toString(Ljava/lang/Object;)Ljava/lang/String;
-PLcom/android/server/pm/AppsFilterBase;->$r8$lambda$EzD-3Qgs3agQ0FfI--Dk-PGWLFc(Landroid/util/SparseArray;[ILcom/android/internal/util/function/QuadFunction;Ljava/lang/Integer;)Ljava/lang/String;
+PLcom/android/server/pm/AppsFilterBase$$ExternalSyntheticLambda0;-><init>(Landroid/util/SparseArray;[ILcom/android/server/pm/ComputerEngine$$ExternalSyntheticLambda2;)V
+PLcom/android/server/pm/AppsFilterBase$$ExternalSyntheticLambda0;->toString(Ljava/lang/Object;)Ljava/lang/String;
HSPLcom/android/server/pm/AppsFilterBase;-><init>()V
-PLcom/android/server/pm/AppsFilterBase;->dumpForceQueryable(Ljava/io/PrintWriter;Ljava/lang/Integer;Lcom/android/server/pm/AppsFilterBase$ToString;)V
-HPLcom/android/server/pm/AppsFilterBase;->dumpPackageSet(Ljava/io/PrintWriter;Ljava/lang/Object;Landroid/util/ArraySet;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/pm/AppsFilterBase$ToString;)V
-HPLcom/android/server/pm/AppsFilterBase;->dumpQueries(Ljava/io/PrintWriter;Ljava/lang/Integer;Lcom/android/server/pm/DumpState;[ILcom/android/internal/util/function/QuadFunction;)V
-HPLcom/android/server/pm/AppsFilterBase;->dumpQueriesMap(Ljava/io/PrintWriter;Ljava/lang/Integer;Lcom/android/server/utils/WatchedSparseSetArray;Ljava/lang/String;Lcom/android/server/pm/AppsFilterBase$ToString;)V
-PLcom/android/server/pm/AppsFilterBase;->dumpQueriesViaComponent(Ljava/io/PrintWriter;Ljava/lang/Integer;Lcom/android/server/pm/AppsFilterBase$ToString;)V
-HPLcom/android/server/pm/AppsFilterBase;->dumpQueriesViaImplicitlyQueryable(Ljava/io/PrintWriter;Ljava/lang/Integer;[ILcom/android/server/pm/AppsFilterBase$ToString;)V
-PLcom/android/server/pm/AppsFilterBase;->dumpQueriesViaPackage(Ljava/io/PrintWriter;Ljava/lang/Integer;Lcom/android/server/pm/AppsFilterBase$ToString;)V
-PLcom/android/server/pm/AppsFilterBase;->dumpQueriesViaUsesLibrary(Ljava/io/PrintWriter;Ljava/lang/Integer;Lcom/android/server/pm/AppsFilterBase$ToString;)V
+PLcom/android/server/pm/AppsFilterBase;->canQueryPackage(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Z
+PLcom/android/server/pm/AppsFilterBase;->dumpForceQueryable(Ljava/io/PrintWriter;Ljava/lang/Integer;Lcom/android/server/pm/AppsFilterBase$$ExternalSyntheticLambda0;)V
+PLcom/android/server/pm/AppsFilterBase;->dumpPackageSet(Ljava/io/PrintWriter;Ljava/lang/Object;Landroid/util/ArraySet;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/pm/AppsFilterBase$$ExternalSyntheticLambda0;)V
+PLcom/android/server/pm/AppsFilterBase;->dumpQueriesMap(Ljava/io/PrintWriter;Ljava/lang/Integer;Lcom/android/server/utils/WatchedSparseSetArray;Ljava/lang/String;Lcom/android/server/pm/AppsFilterBase$$ExternalSyntheticLambda0;)V
+PLcom/android/server/pm/AppsFilterBase;->dumpQueriesViaComponent(Ljava/io/PrintWriter;Ljava/lang/Integer;Lcom/android/server/pm/AppsFilterBase$$ExternalSyntheticLambda0;)V
+PLcom/android/server/pm/AppsFilterBase;->dumpQueriesViaImplicitlyQueryable(Ljava/io/PrintWriter;Ljava/lang/Integer;[ILcom/android/server/pm/AppsFilterBase$$ExternalSyntheticLambda0;)V
+PLcom/android/server/pm/AppsFilterBase;->dumpQueriesViaPackage(Ljava/io/PrintWriter;Ljava/lang/Integer;Lcom/android/server/pm/AppsFilterBase$$ExternalSyntheticLambda0;)V
+PLcom/android/server/pm/AppsFilterBase;->dumpQueriesViaUsesLibrary(Ljava/io/PrintWriter;Ljava/lang/Integer;Lcom/android/server/pm/AppsFilterBase$$ExternalSyntheticLambda0;)V
PLcom/android/server/pm/AppsFilterBase;->getVisibilityAllowList(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/pkg/PackageStateInternal;[ILandroid/util/ArrayMap;)Landroid/util/SparseArray;
-HPLcom/android/server/pm/AppsFilterBase;->isForceQueryable(I)Z
-HPLcom/android/server/pm/AppsFilterBase;->isImplicitlyQueryable(II)Z
-HPLcom/android/server/pm/AppsFilterBase;->isQueryableViaComponent(II)Z
-HPLcom/android/server/pm/AppsFilterBase;->isQueryableViaComponentWhenRequireRecompute(Landroid/util/ArrayMap;Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/util/ArraySet;Lcom/android/server/pm/pkg/AndroidPackage;II)Z
-HPLcom/android/server/pm/AppsFilterBase;->isQueryableViaPackage(II)Z
-HPLcom/android/server/pm/AppsFilterBase;->isQueryableViaUsesLibrary(II)Z
-HPLcom/android/server/pm/AppsFilterBase;->isQueryableViaUsesPermission(II)Z
-HPLcom/android/server/pm/AppsFilterBase;->isRetainedImplicitlyQueryable(II)Z
-HPLcom/android/server/pm/AppsFilterBase;->lambda$dumpQueries$0(Landroid/util/SparseArray;[ILcom/android/internal/util/function/QuadFunction;Ljava/lang/Integer;)Ljava/lang/String;
-PLcom/android/server/pm/AppsFilterBase;->log(Ljava/lang/Object;Lcom/android/server/pm/pkg/PackageStateInternal;Ljava/lang/String;)V
-HSPLcom/android/server/pm/AppsFilterBase;->shouldFilterApplication(Lcom/android/server/pm/snapshot/PackageDataSnapshot;ILjava/lang/Object;Lcom/android/server/pm/pkg/PackageStateInternal;I)Z
-HPLcom/android/server/pm/AppsFilterBase;->shouldFilterApplicationInternal(Lcom/android/server/pm/Computer;ILjava/lang/Object;Lcom/android/server/pm/pkg/PackageStateInternal;I)Z
+PLcom/android/server/pm/AppsFilterBase;->getVisibilityAllowList(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/pkg/PackageStateInternal;[ILcom/android/server/utils/WatchedArrayMap;)Landroid/util/SparseArray;
+PLcom/android/server/pm/AppsFilterBase;->isForceQueryable(I)Z
+HPLcom/android/server/pm/AppsFilterBase;->isImplicitlyQueryable(II)Z+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;
+HPLcom/android/server/pm/AppsFilterBase;->isQueryableViaComponent(II)Z+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;
+HPLcom/android/server/pm/AppsFilterBase;->isQueryableViaPackage(II)Z+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;
+HPLcom/android/server/pm/AppsFilterBase;->isQueryableViaUsesLibrary(II)Z+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;
+HPLcom/android/server/pm/AppsFilterBase;->isQueryableViaUsesPermission(II)Z+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;
+HPLcom/android/server/pm/AppsFilterBase;->isRetainedImplicitlyQueryable(II)Z+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;
+HSPLcom/android/server/pm/AppsFilterBase;->shouldFilterApplication(Lcom/android/server/pm/snapshot/PackageDataSnapshot;ILjava/lang/Object;Lcom/android/server/pm/pkg/PackageStateInternal;I)Z+]Lcom/android/server/pm/AppsFilterBase;Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/FeatureConfig;Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/AppsFilterBase;->shouldFilterApplicationInternal(Lcom/android/server/pm/Computer;ILjava/lang/Object;Lcom/android/server/pm/pkg/PackageStateInternal;I)Z+]Lcom/android/server/pm/AppsFilterBase;Lcom/android/server/pm/AppsFilterImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/FeatureConfig;Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
HPLcom/android/server/pm/AppsFilterBase;->shouldFilterApplicationUsingCache(III)Z
HSPLcom/android/server/pm/AppsFilterImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/AppsFilterImpl;)V
-PLcom/android/server/pm/AppsFilterImpl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/AppsFilterImpl;Landroid/content/pm/PackageManagerInternal;IJ)V
+PLcom/android/server/pm/AppsFilterImpl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/AppsFilterImpl;Landroid/content/pm/PackageManagerInternal;J)V
PLcom/android/server/pm/AppsFilterImpl$$ExternalSyntheticLambda1;->run()V
-HSPLcom/android/server/pm/AppsFilterImpl$1;-><init>(Lcom/android/server/pm/AppsFilterImpl;Lcom/android/server/pm/AppsFilterSnapshot;Lcom/android/server/utils/Watchable;)V
-HSPLcom/android/server/pm/AppsFilterImpl$1;->createSnapshot()Lcom/android/server/pm/AppsFilterSnapshot;
+HSPLcom/android/server/pm/AppsFilterImpl$1;-><init>(Lcom/android/server/pm/AppsFilterImpl;Lcom/android/server/pm/AppsFilterImpl;Lcom/android/server/pm/AppsFilterImpl;)V
HSPLcom/android/server/pm/AppsFilterImpl$1;->createSnapshot()Ljava/lang/Object;
PLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;)V
+PLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl$$ExternalSyntheticLambda0;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;-><init>(Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerServiceInjector;)V
-HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;-><init>(Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl-IA;)V
HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;-><init>(Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;)V
-HPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->enableLogging(IZ)V
+HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->enableLogging(IZ)V
HPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->isGloballyEnabled()Z
-HPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->isLoggingEnabled(I)Z
+PLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->isLoggingEnabled(I)Z
PLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->onSystemReady()V
-HPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->packageIsEnabled(Lcom/android/server/pm/pkg/AndroidPackage;)Z
-HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->setAppsFilter(Lcom/android/server/pm/AppsFilterImpl;)V
-HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->snapshot()Lcom/android/server/pm/FeatureConfig;
-HPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->updateEnabledState(Lcom/android/server/pm/pkg/AndroidPackage;)V
-HPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->updatePackageState(Lcom/android/server/pm/pkg/PackageStateInternal;Z)V
-PLcom/android/server/pm/AppsFilterImpl;->$r8$lambda$z8pKsxG_4fqX35js78wjP4SRLPM(Lcom/android/server/pm/AppsFilterImpl;Landroid/content/pm/PackageManagerInternal;IJ)V
-PLcom/android/server/pm/AppsFilterImpl;->-$$Nest$monChanged(Lcom/android/server/pm/AppsFilterImpl;)V
+HPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->packageIsEnabled(Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->snapshot()Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;
+HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->updateEnabledState(Lcom/android/server/pm/pkg/AndroidPackage;)V
+HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->updatePackageState(Lcom/android/server/pm/pkg/PackageStateInternal;Z)V
HSPLcom/android/server/pm/AppsFilterImpl;-><init>(Lcom/android/server/pm/FeatureConfig;[Ljava/lang/String;ZLcom/android/server/om/OverlayReferenceMapper$Provider;Landroid/os/Handler;)V
-HPLcom/android/server/pm/AppsFilterImpl;->addPackage(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/PackageStateInternal;ZZ)V
-HPLcom/android/server/pm/AppsFilterImpl;->addPackageInternal(Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/util/ArrayMap;)Landroid/util/ArraySet;
-HSPLcom/android/server/pm/AppsFilterImpl;->create(Lcom/android/server/pm/PackageManagerServiceInjector;Landroid/content/pm/PackageManagerInternal;)Lcom/android/server/pm/AppsFilterImpl;
-HPLcom/android/server/pm/AppsFilterImpl;->dispatchChange(Lcom/android/server/utils/Watchable;)V
-HPLcom/android/server/pm/AppsFilterImpl;->grantImplicitAccess(IIZ)Z
-HPLcom/android/server/pm/AppsFilterImpl;->invalidateCache(Ljava/lang/String;)V
+HSPLcom/android/server/pm/AppsFilterImpl;->addPackage(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/PackageStateInternal;ZZ)V
+HSPLcom/android/server/pm/AppsFilterImpl;->addPackageInternal(Landroid/util/ArrayMap;Lcom/android/server/pm/pkg/PackageStateInternal;)Landroid/util/ArraySet;+]Lcom/android/internal/pm/pkg/component/ParsedPermission;Lcom/android/internal/pm/pkg/component/ParsedPermissionImpl;]Lcom/android/internal/pm/pkg/component/ParsedUsesPermission;Lcom/android/internal/pm/pkg/component/ParsedUsesPermissionImpl;]Lcom/android/server/pm/FeatureConfig;Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
+HSPLcom/android/server/pm/AppsFilterImpl;->dispatchChange(Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/pm/AppsFilterImpl;->invalidateCache(Ljava/lang/String;)V
+HPLcom/android/server/pm/AppsFilterImpl;->isForceQueryable(I)Z
+HPLcom/android/server/pm/AppsFilterImpl;->isImplicitlyQueryable(II)Z
+PLcom/android/server/pm/AppsFilterImpl;->isQueryableViaComponent(II)Z
PLcom/android/server/pm/AppsFilterImpl;->isQueryableViaComponentWhenRequireRecompute(Landroid/util/ArrayMap;Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/util/ArraySet;Lcom/android/server/pm/pkg/AndroidPackage;II)Z
-HPLcom/android/server/pm/AppsFilterImpl;->isSystemSigned(Landroid/content/pm/SigningDetails;Lcom/android/server/pm/pkg/PackageStateInternal;)Z
-PLcom/android/server/pm/AppsFilterImpl;->lambda$updateEntireShouldFilterCacheAsync$0(Landroid/content/pm/PackageManagerInternal;IJ)V
-PLcom/android/server/pm/AppsFilterImpl;->logCacheRebuilt(IJII)V
-HPLcom/android/server/pm/AppsFilterImpl;->onChanged()V
-PLcom/android/server/pm/AppsFilterImpl;->onSystemReady(Landroid/content/pm/PackageManagerInternal;)V
-HPLcom/android/server/pm/AppsFilterImpl;->pkgInstruments(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;)Z
-HSPLcom/android/server/pm/AppsFilterImpl;->readCacheEnabledSysProp()V
-PLcom/android/server/pm/AppsFilterImpl;->recomputeComponentVisibility(Landroid/util/ArrayMap;)V
+HPLcom/android/server/pm/AppsFilterImpl;->isQueryableViaPackage(II)Z
+HPLcom/android/server/pm/AppsFilterImpl;->isQueryableViaUsesLibrary(II)Z
+PLcom/android/server/pm/AppsFilterImpl;->isQueryableViaUsesPermission(II)Z
+HPLcom/android/server/pm/AppsFilterImpl;->isRetainedImplicitlyQueryable(II)Z
+HSPLcom/android/server/pm/AppsFilterImpl;->pkgInstruments(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
HSPLcom/android/server/pm/AppsFilterImpl;->registerObserver(Lcom/android/server/utils/Watcher;)V
-HSPLcom/android/server/pm/AppsFilterImpl;->snapshot()Lcom/android/server/pm/AppsFilterSnapshot;
-PLcom/android/server/pm/AppsFilterImpl;->updateEntireShouldFilterCacheAsync(Landroid/content/pm/PackageManagerInternal;I)V
-PLcom/android/server/pm/AppsFilterImpl;->updateEntireShouldFilterCacheAsync(Landroid/content/pm/PackageManagerInternal;JI)V
-HPLcom/android/server/pm/AppsFilterImpl;->updateEntireShouldFilterCacheInner(Lcom/android/server/pm/Computer;Landroid/util/ArrayMap;[Landroid/content/pm/UserInfo;I)V
-PLcom/android/server/pm/AppsFilterImpl;->updateShouldFilterCacheForImplicitAccess()V
+PLcom/android/server/pm/AppsFilterImpl;->removeAppIdFromVisibilityCache(I)V
+PLcom/android/server/pm/AppsFilterImpl;->removePackageInternal(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/PackageStateInternal;ZZ)V
+PLcom/android/server/pm/AppsFilterImpl;->shouldFilterApplicationUsingCache(III)Z
+HSPLcom/android/server/pm/AppsFilterImpl;->snapshot()Lcom/android/server/pm/AppsFilterBase;
+PLcom/android/server/pm/AppsFilterImpl;->updateEntireShouldFilterCacheInner(Lcom/android/server/pm/Computer;Landroid/util/ArrayMap;[Landroid/content/pm/UserInfo;I)V
PLcom/android/server/pm/AppsFilterImpl;->updateShouldFilterCacheForImplicitAccess(Lcom/android/server/utils/WatchedSparseSetArray;)V
-HPLcom/android/server/pm/AppsFilterImpl;->updateShouldFilterCacheForPackage(Lcom/android/server/pm/Computer;Ljava/lang/String;Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/util/ArrayMap;[Landroid/content/pm/UserInfo;II)V
-HPLcom/android/server/pm/AppsFilterImpl;->updateShouldFilterCacheForUser(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/PackageStateInternal;[Landroid/content/pm/UserInfo;Lcom/android/server/pm/pkg/PackageStateInternal;I)V
-HSPLcom/android/server/pm/AppsFilterLocked;-><init>()V
-HPLcom/android/server/pm/AppsFilterLocked;->isForceQueryable(I)Z
-PLcom/android/server/pm/AppsFilterLocked;->isImplicitlyQueryable(II)Z
-HPLcom/android/server/pm/AppsFilterLocked;->isQueryableViaComponent(II)Z
-HPLcom/android/server/pm/AppsFilterLocked;->isQueryableViaPackage(II)Z
-HPLcom/android/server/pm/AppsFilterLocked;->isQueryableViaUsesLibrary(II)Z
-HPLcom/android/server/pm/AppsFilterLocked;->isQueryableViaUsesPermission(II)Z
-PLcom/android/server/pm/AppsFilterLocked;->isRetainedImplicitlyQueryable(II)Z
-HSPLcom/android/server/pm/AppsFilterSnapshotImpl;-><init>(Lcom/android/server/pm/AppsFilterImpl;)V
+HPLcom/android/server/pm/AppsFilterImpl;->updateShouldFilterCacheForPackage(Lcom/android/server/pm/Computer;Ljava/lang/String;Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/util/ArrayMap;[Landroid/content/pm/UserInfo;II)V+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/AppsFilterImpl;->updateShouldFilterCacheForUser(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/PackageStateInternal;[Landroid/content/pm/UserInfo;Lcom/android/server/pm/pkg/PackageStateInternal;I)V+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
PLcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility;Lcom/android/server/pm/pkg/PackageStateInternal;)V
-PLcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility$$ExternalSyntheticLambda0;->call()Ljava/lang/Object;
-PLcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility;->$r8$lambda$UMa2mVXysTyYjRdBqkvUdM8dmxQ(Lcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility;Lcom/android/server/pm/pkg/PackageStateInternal;)Landroid/util/ArraySet;
+HPLcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility$$ExternalSyntheticLambda0;->call()Ljava/lang/Object;+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
PLcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility;-><init>(Landroid/util/ArrayMap;Landroid/util/ArraySet;Lcom/android/server/utils/WatchedArraySet;)V
-HPLcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility;->execute()Landroid/util/SparseSetArray;
-HPLcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility;->getVisibleListOfQueryViaComponents(Lcom/android/server/pm/pkg/PackageStateInternal;)Landroid/util/ArraySet;
-PLcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility;->lambda$execute$0(Lcom/android/server/pm/pkg/PackageStateInternal;)Landroid/util/ArraySet;
-HPLcom/android/server/pm/AppsFilterUtils;->canQueryAsInstaller(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/pkg/AndroidPackage;)Z
-HPLcom/android/server/pm/AppsFilterUtils;->canQueryAsUpdateOwner(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/pkg/AndroidPackage;)Z
-HPLcom/android/server/pm/AppsFilterUtils;->canQueryViaComponents(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/utils/WatchedArraySet;)Z
-HPLcom/android/server/pm/AppsFilterUtils;->canQueryViaPackage(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;)Z
-HPLcom/android/server/pm/AppsFilterUtils;->canQueryViaUsesLibrary(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;)Z
-HPLcom/android/server/pm/AppsFilterUtils;->matchesAnyComponents(Landroid/content/Intent;Ljava/util/List;Lcom/android/server/utils/WatchedArraySet;)Z
-HPLcom/android/server/pm/AppsFilterUtils;->matchesAnyFilter(Landroid/content/Intent;Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/server/utils/WatchedArraySet;)Z
-HPLcom/android/server/pm/AppsFilterUtils;->matchesIntentFilter(Landroid/content/Intent;Landroid/content/IntentFilter;Lcom/android/server/utils/WatchedArraySet;)Z
-HPLcom/android/server/pm/AppsFilterUtils;->matchesPackage(Landroid/content/Intent;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/utils/WatchedArraySet;)Z
-HPLcom/android/server/pm/AppsFilterUtils;->matchesProviders(Ljava/util/Set;Lcom/android/server/pm/pkg/AndroidPackage;)Z
-HPLcom/android/server/pm/AppsFilterUtils;->requestsQueryAllPackages(Lcom/android/server/pm/pkg/AndroidPackage;)Z
-PLcom/android/server/pm/BackgroundInstallControlCallbackHelper;-><init>()V
-PLcom/android/server/pm/BackgroundInstallControlService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/BackgroundInstallControlService;)V
-HPLcom/android/server/pm/BackgroundInstallControlService$$ExternalSyntheticLambda0;->onUsageEvent(ILandroid/app/usage/UsageEvents$Event;)V
-PLcom/android/server/pm/BackgroundInstallControlService$1;-><init>(Lcom/android/server/pm/BackgroundInstallControlService;)V
-PLcom/android/server/pm/BackgroundInstallControlService$BinderService;-><init>(Lcom/android/server/pm/BackgroundInstallControlService;)V
-PLcom/android/server/pm/BackgroundInstallControlService$EventHandler;-><init>(Landroid/os/Looper;Lcom/android/server/pm/BackgroundInstallControlService;)V
-PLcom/android/server/pm/BackgroundInstallControlService$EventHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/pm/BackgroundInstallControlService$InjectorImpl;-><init>(Landroid/content/Context;)V
-PLcom/android/server/pm/BackgroundInstallControlService$InjectorImpl;->getBackgroundInstallControlCallbackHelper()Lcom/android/server/pm/BackgroundInstallControlCallbackHelper;
-PLcom/android/server/pm/BackgroundInstallControlService$InjectorImpl;->getContext()Landroid/content/Context;
-PLcom/android/server/pm/BackgroundInstallControlService$InjectorImpl;->getDiskFile()Ljava/io/File;
-PLcom/android/server/pm/BackgroundInstallControlService$InjectorImpl;->getLooper()Landroid/os/Looper;
-PLcom/android/server/pm/BackgroundInstallControlService$InjectorImpl;->getPackageManager()Landroid/content/pm/PackageManager;
-PLcom/android/server/pm/BackgroundInstallControlService$InjectorImpl;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
-PLcom/android/server/pm/BackgroundInstallControlService$InjectorImpl;->getPermissionManager()Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
-PLcom/android/server/pm/BackgroundInstallControlService$InjectorImpl;->getUsageStatsManagerInternal()Landroid/app/usage/UsageStatsManagerInternal;
-HPLcom/android/server/pm/BackgroundInstallControlService;->$r8$lambda$r3_D5ZCfbKAc8o--pXGNM2kXs6w(Lcom/android/server/pm/BackgroundInstallControlService;ILandroid/app/usage/UsageEvents$Event;)V
-PLcom/android/server/pm/BackgroundInstallControlService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/pm/BackgroundInstallControlService;-><init>(Lcom/android/server/pm/BackgroundInstallControlService$Injector;)V
-PLcom/android/server/pm/BackgroundInstallControlService;->handleUsageEvent(Landroid/app/usage/UsageEvents$Event;I)V
-PLcom/android/server/pm/BackgroundInstallControlService;->isInstaller(Ljava/lang/String;I)Z
-HPLcom/android/server/pm/BackgroundInstallControlService;->lambda$new$0(ILandroid/app/usage/UsageEvents$Event;)V
-PLcom/android/server/pm/BackgroundInstallControlService;->onStart()V
-PLcom/android/server/pm/BackgroundInstallControlService;->onStart(Z)V
-HSPLcom/android/server/pm/BroadcastHelper;-><clinit>()V
+HPLcom/android/server/pm/AppsFilterUtils;->canQueryAsInstaller(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+HPLcom/android/server/pm/AppsFilterUtils;->canQueryViaComponents(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/utils/WatchedArraySet;)Z+]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
+HPLcom/android/server/pm/AppsFilterUtils;->canQueryViaUsesLibrary(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
+HPLcom/android/server/pm/AppsFilterUtils;->matchesAnyComponents(Landroid/content/Intent;Ljava/util/List;Lcom/android/server/utils/WatchedArraySet;)Z+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$UnmodifiableRandomAccessList;
+PLcom/android/server/pm/BackgroundUserSoundNotifier$1;-><init>(Lcom/android/server/pm/BackgroundUserSoundNotifier;Landroid/app/ActivityManager;)V
+PLcom/android/server/pm/BackgroundUserSoundNotifier$BackgroundUserListener;-><init>(Lcom/android/server/pm/BackgroundUserSoundNotifier;)V
+PLcom/android/server/pm/BackgroundUserSoundNotifier$BackgroundUserListener;->onAudioFocusGrant(Landroid/media/AudioFocusInfo;I)V
+PLcom/android/server/pm/BackgroundUserSoundNotifier$BackgroundUserListener;->onAudioFocusLoss(Landroid/media/AudioFocusInfo;Z)V
+PLcom/android/server/pm/BackgroundUserSoundNotifier;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/BackgroundUserSoundNotifier;->dismissNotificationIfNecessary(I)V
+PLcom/android/server/pm/BackgroundUserSoundNotifier;->getAudioFocusInfoForNotification(I)Landroid/media/AudioFocusInfo;
+PLcom/android/server/pm/BackgroundUserSoundNotifier;->notifyForegroundUserAboutSoundIfNecessary(Landroid/media/AudioFocusInfo;)V
+PLcom/android/server/pm/BroadcastHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/BroadcastHelper;Ljava/lang/String;ZLjava/util/ArrayList;ILjava/lang/String;[I[ILandroid/util/SparseArray;Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/Computer;I)V
+PLcom/android/server/pm/BroadcastHelper$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/pm/BroadcastHelper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/BroadcastHelper;Ljava/lang/String;I[I[IZILandroid/util/SparseArray;)V
+PLcom/android/server/pm/BroadcastHelper$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/pm/BroadcastHelper$$ExternalSyntheticLambda3;-><init>(I)V
+PLcom/android/server/pm/BroadcastHelper$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/pm/BroadcastHelper$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/pm/BroadcastHelper;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;[I[ILandroid/util/SparseArray;Landroid/os/Bundle;)V
+PLcom/android/server/pm/BroadcastHelper$$ExternalSyntheticLambda4;->run()V
HSPLcom/android/server/pm/BroadcastHelper;-><init>(Lcom/android/server/pm/PackageManagerServiceInjector;)V
-PLcom/android/server/pm/BroadcastHelper;->broadcastIntent(Landroid/content/Intent;Landroid/content/IIntentReceiver;ZILandroid/util/SparseArray;Ljava/util/function/BiFunction;Landroid/os/Bundle;)V
-PLcom/android/server/pm/BroadcastHelper;->doSendBroadcast(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;Landroid/content/IIntentReceiver;[IZLandroid/util/SparseArray;Ljava/util/function/BiFunction;Landroid/os/Bundle;)V
-PLcom/android/server/pm/BroadcastHelper;->sendPackageBroadcast(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;Landroid/content/IIntentReceiver;[I[ILandroid/util/SparseArray;Ljava/util/function/BiFunction;Landroid/os/Bundle;)V
+PLcom/android/server/pm/BroadcastHelper;->doSendBroadcast(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;[IZLandroid/util/SparseArray;Ljava/util/function/BiFunction;Landroid/os/Bundle;[Ljava/lang/String;)V
+PLcom/android/server/pm/BroadcastHelper;->isPrivacySafetyLabelChangeNotificationsEnabled(Landroid/content/Context;)Z
+PLcom/android/server/pm/BroadcastHelper;->sendPackageAddedForNewUsers(Lcom/android/server/pm/Computer;Ljava/lang/String;ZZI[I[IZI)V
+PLcom/android/server/pm/BroadcastHelper;->sendPackageBroadcast(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;[I[ILandroid/util/SparseArray;Ljava/util/function/BiFunction;Landroid/os/Bundle;[Ljava/lang/String;)V
+PLcom/android/server/pm/BroadcastHelper;->sendPackageBroadcastAndNotify(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;[I[ILandroid/util/SparseArray;Landroid/os/Bundle;)V
+PLcom/android/server/pm/BroadcastHelper;->sendPackageChangedBroadcast(Lcom/android/server/pm/Computer;Ljava/lang/String;ZLjava/util/ArrayList;ILjava/lang/String;)V
+PLcom/android/server/pm/BroadcastHelper;->sendPackageChangedBroadcastWithPermissions(Ljava/lang/String;ZLjava/util/ArrayList;ILjava/lang/String;[I[ILandroid/util/SparseArray;Ljava/lang/String;[Ljava/lang/String;)V
+PLcom/android/server/pm/BroadcastHelper;->sendPackageRemovedBroadcasts(Lcom/android/server/pm/PackageRemovedInfo;Lcom/android/server/pm/PackageSender;ZZZ)V
+PLcom/android/server/pm/BroadcastHelper;->sendPreferredActivityChangedBroadcast(I)V
+PLcom/android/server/pm/BroadcastHelper;->sendSessionCommitBroadcast(Lcom/android/server/pm/Computer;Landroid/content/pm/PackageInstaller$SessionInfo;ILjava/lang/String;)V
HSPLcom/android/server/pm/ChangedPackagesTracker;-><init>()V
-PLcom/android/server/pm/ChangedPackagesTracker;->getChangedPackages(II)Landroid/content/pm/ChangedPackages;
-PLcom/android/server/pm/ChangedPackagesTracker;->getSequenceNumber()I
+PLcom/android/server/pm/CleanUpArgs;-><init>([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pm/CompilerStats$PackageStats;-><init>(Ljava/lang/String;)V
+PLcom/android/server/pm/CompilerStats$PackageStats;->setCompileTime(JLjava/lang/String;)V
HSPLcom/android/server/pm/CompilerStats;-><init>()V
-PLcom/android/server/pm/CompilerStats;->getPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats;
+PLcom/android/server/pm/CompilerStats;->getOrCreatePackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats;
PLcom/android/server/pm/CompilerStats;->read()V
-PLcom/android/server/pm/CompilerStats;->readInternal(Ljava/lang/Object;)V
-PLcom/android/server/pm/CompilerStats;->readInternal(Ljava/lang/Void;)V
+PLcom/android/server/pm/CompilerStats;->read(Ljava/io/Reader;)V
+PLcom/android/server/pm/CompilerStats;->readInternal(Lcom/android/server/utils/WatchedArrayMap;)V
+PLcom/android/server/pm/CompilerStats;->write(Ljava/io/Writer;)V
+PLcom/android/server/pm/CompilerStats;->writeInternal(Ljava/lang/Object;)V
PLcom/android/server/pm/ComputerEngine$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/ComputerEngine$Settings;)V
-HSPLcom/android/server/pm/ComputerEngine$$ExternalSyntheticLambda1;-><init>()V
-HPLcom/android/server/pm/ComputerEngine$$ExternalSyntheticLambda1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/pm/ComputerEngine$$ExternalSyntheticLambda1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
PLcom/android/server/pm/ComputerEngine$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/pm/ComputerEngine;)V
-HPLcom/android/server/pm/ComputerEngine$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/pm/ComputerEngine$Settings;-><init>(Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/Settings;)V
-PLcom/android/server/pm/ComputerEngine$Settings;->dumpKeySet(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/pm/DumpState;)V
-PLcom/android/server/pm/ComputerEngine$Settings;->dumpPackages(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;Z)V
-PLcom/android/server/pm/ComputerEngine$Settings;->dumpPermissions(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;)V
-PLcom/android/server/pm/ComputerEngine$Settings;->dumpPreferred(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
-PLcom/android/server/pm/ComputerEngine$Settings;->dumpSharedUsers(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;Z)V
-PLcom/android/server/pm/ComputerEngine$Settings;->getApplicationEnabledSetting(Ljava/lang/String;I)I
-HPLcom/android/server/pm/ComputerEngine$Settings;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I
-HPLcom/android/server/pm/ComputerEngine$Settings;->getCrossProfileIntentResolver(I)Lcom/android/server/pm/CrossProfileIntentResolver;
-HSPLcom/android/server/pm/ComputerEngine$Settings;->getDisabledSystemPackages()Landroid/util/ArrayMap;
-HPLcom/android/server/pm/ComputerEngine$Settings;->getDisabledSystemPkg(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateInternal;
-HSPLcom/android/server/pm/ComputerEngine$Settings;->getPackage(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateInternal;
+PLcom/android/server/pm/ComputerEngine$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/pm/ComputerEngine$Settings;-><init>(Lcom/android/server/pm/Settings;)V
+HPLcom/android/server/pm/ComputerEngine$Settings;->getApplicationEnabledSetting(Ljava/lang/String;I)I
+HPLcom/android/server/pm/ComputerEngine$Settings;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I+]Lcom/android/server/pm/pkg/PackageUserStateInternal;Lcom/android/server/pm/pkg/PackageUserStateImpl;
HSPLcom/android/server/pm/ComputerEngine$Settings;->getPackages()Landroid/util/ArrayMap;
-HSPLcom/android/server/pm/ComputerEngine$Settings;->getRenamedPackageLPr(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/server/pm/ComputerEngine$Settings;->getSettingBase(I)Lcom/android/server/pm/SettingBase;
-HPLcom/android/server/pm/ComputerEngine$Settings;->getSharedUserFromAppId(I)Lcom/android/server/pm/pkg/SharedUserApi;
-PLcom/android/server/pm/ComputerEngine$Settings;->getSharedUserFromId(Ljava/lang/String;)Lcom/android/server/pm/SharedUserSetting;
-HPLcom/android/server/pm/ComputerEngine$Settings;->getSharedUserFromPackageName(Ljava/lang/String;)Lcom/android/server/pm/pkg/SharedUserApi;
-PLcom/android/server/pm/ComputerEngine$Settings;->getVolumePackages(Ljava/lang/String;)Ljava/util/List;
-HPLcom/android/server/pm/ComputerEngine$Settings;->isEnabledAndMatch(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;JI)Z
-PLcom/android/server/pm/ComputerEngine;->$r8$lambda$ZsQO-GMd1VCddKx0WIWHtlgezQI(Landroid/content/pm/ProviderInfo;Landroid/content/pm/ProviderInfo;)I
+HPLcom/android/server/pm/ComputerEngine$Settings;->isEnabledAndMatch(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;JI)Z+]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/ComputerEngine;-><clinit>()V
HSPLcom/android/server/pm/ComputerEngine;-><init>(Lcom/android/server/pm/PackageManagerService$Snapshot;I)V
-HPLcom/android/server/pm/ComputerEngine;->addPackageHoldingPermissions(Ljava/util/ArrayList;Lcom/android/server/pm/pkg/PackageStateInternal;[Ljava/lang/String;[ZJI)V
-HPLcom/android/server/pm/ComputerEngine;->applyPostResolutionFilter(Ljava/util/List;Ljava/lang/String;ZIZILandroid/content/Intent;)Ljava/util/List;
-HPLcom/android/server/pm/ComputerEngine;->applyPostServiceResolutionFilter(Ljava/util/List;Ljava/lang/String;II)Ljava/util/List;
-PLcom/android/server/pm/ComputerEngine;->areWebInstantAppsDisabled(I)Z
+PLcom/android/server/pm/ComputerEngine;->androidApplication()Landroid/content/pm/ApplicationInfo;
+HPLcom/android/server/pm/ComputerEngine;->applyPostResolutionFilter(Ljava/util/List;Ljava/lang/String;ZIZILandroid/content/Intent;)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+HPLcom/android/server/pm/ComputerEngine;->applyPostServiceResolutionFilter(IILjava/lang/String;Ljava/util/List;)V+]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/pm/ComputerEngine;->canQueryPackage(ILjava/lang/String;)Z
PLcom/android/server/pm/ComputerEngine;->canViewInstantApps(II)Z
+PLcom/android/server/pm/ComputerEngine;->canonicalToCurrentPackageNames([Ljava/lang/String;)[Ljava/lang/String;
+PLcom/android/server/pm/ComputerEngine;->checkPackageFrozen(Ljava/lang/String;)V
HPLcom/android/server/pm/ComputerEngine;->checkSignatures(Ljava/lang/String;Ljava/lang/String;I)I
PLcom/android/server/pm/ComputerEngine;->checkSignaturesInternal(Landroid/content/pm/SigningDetails;Landroid/content/pm/SigningDetails;)I
HPLcom/android/server/pm/ComputerEngine;->checkUidPermission(Ljava/lang/String;I)I
-HPLcom/android/server/pm/ComputerEngine;->dump(ILjava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;)V
-PLcom/android/server/pm/ComputerEngine;->dumpKeySet(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/pm/DumpState;)V
-PLcom/android/server/pm/ComputerEngine;->dumpPackages(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;Z)V
+PLcom/android/server/pm/ComputerEngine;->checkUidSignatures(II)I
+PLcom/android/server/pm/ComputerEngine;->dump(ILjava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;)V
+PLcom/android/server/pm/ComputerEngine;->dumpApexPackageStates(Ljava/util/List;ZLjava/lang/String;Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/pm/ComputerEngine;->dumpKeySet(Lcom/android/server/pm/DumpState;Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/pm/ComputerEngine;->dumpPackages(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;Z)V
PLcom/android/server/pm/ComputerEngine;->dumpPermissions(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;)V
PLcom/android/server/pm/ComputerEngine;->dumpSharedUsers(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;Z)V
-HPLcom/android/server/pm/ComputerEngine;->enforceCrossUserOrProfilePermission(IIZZLjava/lang/String;)V
-HPLcom/android/server/pm/ComputerEngine;->enforceCrossUserPermission(IIZZLjava/lang/String;)V
-HPLcom/android/server/pm/ComputerEngine;->enforceCrossUserPermission(IIZZZLjava/lang/String;)V
+HPLcom/android/server/pm/ComputerEngine;->enforceCrossUserOrProfilePermission(IILjava/lang/String;)V
+HPLcom/android/server/pm/ComputerEngine;->enforceCrossUserPermission(IZLjava/lang/String;IZZ)V
+HPLcom/android/server/pm/ComputerEngine;->enforceCrossUserPermission(Ljava/lang/String;IIZZ)V
PLcom/android/server/pm/ComputerEngine;->filterAppAccess(II)Z
-HSPLcom/android/server/pm/ComputerEngine;->filterAppAccess(Ljava/lang/String;IIZ)Z
-PLcom/android/server/pm/ComputerEngine;->filterIfNotSystemUser(Ljava/util/List;I)Ljava/util/List;
+HSPLcom/android/server/pm/ComputerEngine;->filterAppAccess(ILjava/lang/String;IZ)Z
+PLcom/android/server/pm/ComputerEngine;->filterIfNotSystemUser(ILjava/util/List;)V
HSPLcom/android/server/pm/ComputerEngine;->filterOnlySystemPackages([Ljava/lang/String;)[Ljava/lang/String;
-HPLcom/android/server/pm/ComputerEngine;->filterSdkLibPackage(Lcom/android/server/pm/pkg/PackageStateInternal;IIJ)Z
-HPLcom/android/server/pm/ComputerEngine;->filterSharedLibPackage(Lcom/android/server/pm/pkg/PackageStateInternal;IIJ)Z
-HPLcom/android/server/pm/ComputerEngine;->filterStaticSharedLibPackage(Lcom/android/server/pm/pkg/PackageStateInternal;IIJ)Z
-HPLcom/android/server/pm/ComputerEngine;->generatePackageInfo(Lcom/android/server/pm/pkg/PackageStateInternal;JI)Landroid/content/pm/PackageInfo;
-PLcom/android/server/pm/ComputerEngine;->getActivityInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ActivityInfo;
-HPLcom/android/server/pm/ComputerEngine;->getActivityInfoInternal(Landroid/content/ComponentName;JII)Landroid/content/pm/ActivityInfo;
-HPLcom/android/server/pm/ComputerEngine;->getActivityInfoInternalBody(Landroid/content/ComponentName;JII)Landroid/content/pm/ActivityInfo;
-PLcom/android/server/pm/ComputerEngine;->getApplicationEnabledSetting(Ljava/lang/String;I)I
+HPLcom/android/server/pm/ComputerEngine;->filterSharedLibPackage(Lcom/android/server/pm/pkg/PackageStateInternal;IIJ)Z+]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+PLcom/android/server/pm/ComputerEngine;->findPersistentPreferredActivity(Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;ZI)Landroid/content/pm/ResolveInfo;
+PLcom/android/server/pm/ComputerEngine;->findPreferredActivityInternal(Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;ZZZIZ)Lcom/android/server/pm/PackageManagerService$FindPreferredActivityBodyResult;
+PLcom/android/server/pm/ComputerEngine;->generateApplicationInfoFromSettings(IILjava/lang/String;J)Landroid/content/pm/ApplicationInfo;
+HPLcom/android/server/pm/ComputerEngine;->generatePackageInfo(Lcom/android/server/pm/pkg/PackageStateInternal;JI)Landroid/content/pm/PackageInfo;+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/internal/pm/pkg/component/ParsedAttribution;Lcom/android/internal/pm/pkg/component/ParsedAttributionImpl;]Lcom/android/internal/pm/pkg/component/ParsedPermission;Lcom/android/internal/pm/pkg/component/ParsedPermissionImpl;]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/internal/pm/pkg/component/ParsedUsesPermission;Lcom/android/internal/pm/pkg/component/ParsedUsesPermissionImpl;]Lcom/android/internal/pm/pkg/parsing/ParsingPackageHidden;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/ApexManager;Lcom/android/server/pm/ApexManager$ApexManagerImpl;]Lcom/android/server/pm/permission/PermissionManagerServiceInterface;Lcom/android/server/permission/access/permission/PermissionService;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/Set;Landroid/util/ArraySet;,Ljava/util/Collections$UnmodifiableSet;
+HPLcom/android/server/pm/ComputerEngine;->getActivityInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/pm/ComputerEngine;->getActivityInfoInternal(IIJLandroid/content/ComponentName;)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/pm/ComputerEngine;->getActivityInfoInternalBody(IIJLandroid/content/ComponentName;)Landroid/content/pm/ActivityInfo;+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;
+HPLcom/android/server/pm/ComputerEngine;->getApplicationEnabledSetting(Ljava/lang/String;I)I
HPLcom/android/server/pm/ComputerEngine;->getApplicationInfo(Ljava/lang/String;JI)Landroid/content/pm/ApplicationInfo;
-HPLcom/android/server/pm/ComputerEngine;->getApplicationInfoInternal(Ljava/lang/String;JII)Landroid/content/pm/ApplicationInfo;
-HPLcom/android/server/pm/ComputerEngine;->getApplicationInfoInternalBody(Ljava/lang/String;JII)Landroid/content/pm/ApplicationInfo;
-PLcom/android/server/pm/ComputerEngine;->getBaseSdkSandboxUid()I
+HPLcom/android/server/pm/ComputerEngine;->getApplicationInfoInternal(IILjava/lang/String;J)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
+PLcom/android/server/pm/ComputerEngine;->getBlockUninstall(ILjava/lang/String;)Z
HPLcom/android/server/pm/ComputerEngine;->getComponentEnabledSetting(Landroid/content/ComponentName;II)I
HPLcom/android/server/pm/ComputerEngine;->getComponentEnabledSettingInternal(Landroid/content/ComponentName;II)I
HPLcom/android/server/pm/ComputerEngine;->getComponentResolver()Lcom/android/server/pm/resolution/ComponentResolverApi;
-HPLcom/android/server/pm/ComputerEngine;->getDisabledSystemPackage(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateInternal;
+HPLcom/android/server/pm/ComputerEngine;->getDeclaredSharedLibraries(Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;
+PLcom/android/server/pm/ComputerEngine;->getDefaultHomeActivity(I)Landroid/content/ComponentName;
+PLcom/android/server/pm/ComputerEngine;->getDisabledSystemPackage(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/ComputerEngine;->getDisabledSystemPackageStates()Landroid/util/ArrayMap;
-PLcom/android/server/pm/ComputerEngine;->getHarmfulAppWarning(Ljava/lang/String;I)Ljava/lang/CharSequence;
-HPLcom/android/server/pm/ComputerEngine;->getInstallSource(Ljava/lang/String;II)Lcom/android/server/pm/InstallSource;
-HPLcom/android/server/pm/ComputerEngine;->getInstallSourceInfo(Ljava/lang/String;I)Landroid/content/pm/InstallSourceInfo;
-HPLcom/android/server/pm/ComputerEngine;->getInstalledApplications(JIIZ)Ljava/util/List;
-HPLcom/android/server/pm/ComputerEngine;->getInstalledPackages(JI)Landroid/content/pm/ParceledListSlice;
-HPLcom/android/server/pm/ComputerEngine;->getInstalledPackagesBody(JII)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/ComputerEngine;->getInstallerPackageName(Ljava/lang/String;I)Ljava/lang/String;
-HSPLcom/android/server/pm/ComputerEngine;->getInstantAppPackageName(I)Ljava/lang/String;
-PLcom/android/server/pm/ComputerEngine;->getInstrumentationInfoAsUser(Landroid/content/ComponentName;II)Landroid/content/pm/InstrumentationInfo;
-HPLcom/android/server/pm/ComputerEngine;->getMatchingCrossProfileIntentFilters(Landroid/content/Intent;Ljava/lang/String;I)Ljava/util/List;
+HPLcom/android/server/pm/ComputerEngine;->getHarmfulAppWarning(Ljava/lang/String;I)Ljava/lang/CharSequence;
+PLcom/android/server/pm/ComputerEngine;->getHomeActivitiesAsUser(ILjava/util/List;)Landroid/content/ComponentName;
+PLcom/android/server/pm/ComputerEngine;->getHomeIntent()Landroid/content/Intent;
+PLcom/android/server/pm/ComputerEngine;->getInstallReason(Ljava/lang/String;I)I
+HPLcom/android/server/pm/ComputerEngine;->getInstallSourceInfo(Ljava/lang/String;I)Landroid/content/pm/InstallSourceInfo;+]Landroid/app/admin/DevicePolicyManagerInternal;Lcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;
+HPLcom/android/server/pm/ComputerEngine;->getInstalledApplications(IIJZ)Ljava/util/List;+]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
+HPLcom/android/server/pm/ComputerEngine;->getInstalledPackages(JI)Landroid/content/pm/ParceledListSlice;+]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;,Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/Collections$UnmodifiableCollection$1;
+PLcom/android/server/pm/ComputerEngine;->getInstallerPackageName(ILjava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/pm/ComputerEngine;->getInstantAppPackageName(I)Ljava/lang/String;+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HPLcom/android/server/pm/ComputerEngine;->getMatchingCrossProfileIntentFilters(Landroid/content/Intent;Ljava/lang/String;I)Ljava/util/List;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HPLcom/android/server/pm/ComputerEngine;->getNameForUid(I)Ljava/lang/String;
-HPLcom/android/server/pm/ComputerEngine;->getNamesForUids([I)[Ljava/lang/String;
+PLcom/android/server/pm/ComputerEngine;->getNamesForUids([I)[Ljava/lang/String;
+PLcom/android/server/pm/ComputerEngine;->getNotifyPackagesForReplacedReceived([Ljava/lang/String;)Landroid/util/ArraySet;
HPLcom/android/server/pm/ComputerEngine;->getPackage(I)Lcom/android/server/pm/pkg/AndroidPackage;
HPLcom/android/server/pm/ComputerEngine;->getPackage(Ljava/lang/String;)Lcom/android/server/pm/pkg/AndroidPackage;
HPLcom/android/server/pm/ComputerEngine;->getPackageGids(Ljava/lang/String;JI)[I
HPLcom/android/server/pm/ComputerEngine;->getPackageInfo(Ljava/lang/String;JI)Landroid/content/pm/PackageInfo;
-HPLcom/android/server/pm/ComputerEngine;->getPackageInfoInternal(Ljava/lang/String;JJII)Landroid/content/pm/PackageInfo;
-HPLcom/android/server/pm/ComputerEngine;->getPackageInfoInternalBody(Ljava/lang/String;JJII)Landroid/content/pm/PackageInfo;
-HPLcom/android/server/pm/ComputerEngine;->getPackageStartability(ZLjava/lang/String;II)I
-HPLcom/android/server/pm/ComputerEngine;->getPackageStateFiltered(Ljava/lang/String;II)Lcom/android/server/pm/pkg/PackageStateInternal;
-HPLcom/android/server/pm/ComputerEngine;->getPackageStateForInstalledAndFiltered(Ljava/lang/String;II)Lcom/android/server/pm/pkg/PackageStateInternal;
-HSPLcom/android/server/pm/ComputerEngine;->getPackageStateInternal(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateInternal;
-HSPLcom/android/server/pm/ComputerEngine;->getPackageStateInternal(Ljava/lang/String;I)Lcom/android/server/pm/pkg/PackageStateInternal;
+HPLcom/android/server/pm/ComputerEngine;->getPackageInfoInternal(IILjava/lang/String;JJ)Landroid/content/pm/PackageInfo;+]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+HPLcom/android/server/pm/ComputerEngine;->getPackageStartability(ILjava/lang/String;IZ)I+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HPLcom/android/server/pm/ComputerEngine;->getPackageStateFiltered(IILjava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/ComputerEngine;->getPackageStateForInstalledAndFiltered(IILjava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/ComputerEngine;->getPackageStateInternal(ILjava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/ComputerEngine;->getPackageStateInternal(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/ComputerEngine;->getPackageStates()Landroid/util/ArrayMap;
HPLcom/android/server/pm/ComputerEngine;->getPackageUid(Ljava/lang/String;JI)I
-HPLcom/android/server/pm/ComputerEngine;->getPackageUidInternal(Ljava/lang/String;JII)I
+HPLcom/android/server/pm/ComputerEngine;->getPackageUidInternal(IILjava/lang/String;J)I+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;
+PLcom/android/server/pm/ComputerEngine;->getPackagesForAppId(I)Ljava/util/List;
HPLcom/android/server/pm/ComputerEngine;->getPackagesForUid(I)[Ljava/lang/String;
HPLcom/android/server/pm/ComputerEngine;->getPackagesForUidInternal(II)[Ljava/lang/String;
-HPLcom/android/server/pm/ComputerEngine;->getPackagesForUidInternalBody(IIIZ)[Ljava/lang/String;
-HPLcom/android/server/pm/ComputerEngine;->getPackagesHoldingPermissions([Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/ComputerEngine;->getPackagesUsingSharedLibrary(Landroid/content/pm/SharedLibraryInfo;JII)Landroid/util/Pair;
-HPLcom/android/server/pm/ComputerEngine;->getPersistentApplications(ZI)Ljava/util/List;
-HPLcom/android/server/pm/ComputerEngine;->getProcessesForUid(I)Landroid/util/ArrayMap;
-HPLcom/android/server/pm/ComputerEngine;->getProviderInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ProviderInfo;
+HPLcom/android/server/pm/ComputerEngine;->getPackagesForUidInternalBody(IIIZ)[Ljava/lang/String;+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HPLcom/android/server/pm/ComputerEngine;->getPackagesHoldingPermissions([Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
+HPLcom/android/server/pm/ComputerEngine;->getPackagesUsingSharedLibrary(Landroid/content/pm/SharedLibraryInfo;JII)Landroid/util/Pair;+]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
+PLcom/android/server/pm/ComputerEngine;->getPersistentApplications(IZ)Ljava/util/List;
+PLcom/android/server/pm/ComputerEngine;->getProcessesForUid(I)Landroid/util/ArrayMap;
+PLcom/android/server/pm/ComputerEngine;->getProfileParent(I)Landroid/content/pm/UserInfo;
+PLcom/android/server/pm/ComputerEngine;->getProviderInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ProviderInfo;
HPLcom/android/server/pm/ComputerEngine;->getReceiverInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ActivityInfo;
-HPLcom/android/server/pm/ComputerEngine;->getServiceInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ServiceInfo;
-HPLcom/android/server/pm/ComputerEngine;->getServiceInfoBody(Landroid/content/ComponentName;JII)Landroid/content/pm/ServiceInfo;
+HPLcom/android/server/pm/ComputerEngine;->getServiceInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ServiceInfo;+]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;
PLcom/android/server/pm/ComputerEngine;->getSharedLibraries()Lcom/android/server/utils/WatchedArrayMap;
-HSPLcom/android/server/pm/ComputerEngine;->getSharedLibraryInfo(Ljava/lang/String;J)Landroid/content/pm/SharedLibraryInfo;
-HPLcom/android/server/pm/ComputerEngine;->getSharedUser(I)Lcom/android/server/pm/pkg/SharedUserApi;
-HPLcom/android/server/pm/ComputerEngine;->getSharedUserPackagesForPackage(Ljava/lang/String;I)[Ljava/lang/String;
+PLcom/android/server/pm/ComputerEngine;->getSharedLibraries(Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;
+HSPLcom/android/server/pm/ComputerEngine;->getSharedLibraryInfo(JLjava/lang/String;)Landroid/content/pm/SharedLibraryInfo;
+PLcom/android/server/pm/ComputerEngine;->getSharedUser(I)Lcom/android/server/pm/SharedUserSetting;
+HPLcom/android/server/pm/ComputerEngine;->getSharedUserPackagesForPackage(ILjava/lang/String;)[Ljava/lang/String;
HPLcom/android/server/pm/ComputerEngine;->getSigningDetails(I)Landroid/content/pm/SigningDetails;
-HPLcom/android/server/pm/ComputerEngine;->getSystemSharedLibraryNamesAndPaths()Landroid/util/ArrayMap;
-HPLcom/android/server/pm/ComputerEngine;->getTargetSdkVersion(Ljava/lang/String;)I
+PLcom/android/server/pm/ComputerEngine;->getSigningDetailsAndFilterAccess(III)Landroid/content/pm/SigningDetails;
+PLcom/android/server/pm/ComputerEngine;->getSystemSharedLibraryNamesAndPaths()Landroid/util/ArrayMap;
+HPLcom/android/server/pm/ComputerEngine;->getTargetSdkVersion(Ljava/lang/String;)I+]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
PLcom/android/server/pm/ComputerEngine;->getUidForSharedUser(Ljava/lang/String;)I
-HPLcom/android/server/pm/ComputerEngine;->getUidTargetSdkVersion(I)I
-HPLcom/android/server/pm/ComputerEngine;->getUsed()I
-HPLcom/android/server/pm/ComputerEngine;->getUserInfos()[Landroid/content/pm/UserInfo;
-HPLcom/android/server/pm/ComputerEngine;->getUserStateOrDefaultForUser(Ljava/lang/String;I)Lcom/android/server/pm/pkg/PackageUserStateInternal;
+HPLcom/android/server/pm/ComputerEngine;->getUidTargetSdkVersion(I)I+]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+PLcom/android/server/pm/ComputerEngine;->getUsed()I
+HSPLcom/android/server/pm/ComputerEngine;->getUserInfos()[Landroid/content/pm/UserInfo;
+HPLcom/android/server/pm/ComputerEngine;->getUserStateOrDefaultForUser(ILjava/lang/String;)Lcom/android/server/pm/pkg/PackageUserStateInternal;
HPLcom/android/server/pm/ComputerEngine;->getVersion()I
PLcom/android/server/pm/ComputerEngine;->getVisibilityAllowLists(Ljava/lang/String;[I)Landroid/util/SparseArray;
PLcom/android/server/pm/ComputerEngine;->getVolumePackages(Ljava/lang/String;)Ljava/util/List;
HPLcom/android/server/pm/ComputerEngine;->hasCrossUserPermission(IIIZZ)Z
-HPLcom/android/server/pm/ComputerEngine;->hasNonNegativePriority(Ljava/util/List;)Z
-PLcom/android/server/pm/ComputerEngine;->hasPermission(Ljava/lang/String;)Z
-PLcom/android/server/pm/ComputerEngine;->instantAppInstallerActivity()Landroid/content/pm/ActivityInfo;
+PLcom/android/server/pm/ComputerEngine;->hasPermission(ILjava/lang/String;)Z
+PLcom/android/server/pm/ComputerEngine;->hasSigningCertificate(Ljava/lang/String;[BI)Z
+HPLcom/android/server/pm/ComputerEngine;->instantAppInstallerActivity()Landroid/content/pm/ActivityInfo;
HPLcom/android/server/pm/ComputerEngine;->isApexPackage(Ljava/lang/String;)Z
-HSPLcom/android/server/pm/ComputerEngine;->isCallerSameApp(Ljava/lang/String;I)Z
-HSPLcom/android/server/pm/ComputerEngine;->isCallerSameApp(Ljava/lang/String;IZ)Z
-PLcom/android/server/pm/ComputerEngine;->isComponentEffectivelyEnabled(Landroid/content/pm/ComponentInfo;Landroid/os/UserHandle;)Z
-HPLcom/android/server/pm/ComputerEngine;->isImplicitImageCaptureIntentAndNotSetByDpc(Landroid/content/Intent;ILjava/lang/String;J)Z
+PLcom/android/server/pm/ComputerEngine;->isApplicationEffectivelyEnabled(Ljava/lang/String;Landroid/os/UserHandle;)Z
+HPLcom/android/server/pm/ComputerEngine;->isCallerInstallerOfRecord(Lcom/android/server/pm/pkg/AndroidPackage;I)Z
+HSPLcom/android/server/pm/ComputerEngine;->isCallerSameApp(ILjava/lang/String;Z)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+HPLcom/android/server/pm/ComputerEngine;->isImplicitImageCaptureIntentAndNotSetByDpc(Landroid/content/Intent;Ljava/lang/String;JI)Z+]Landroid/content/Intent;Landroid/content/Intent;
HPLcom/android/server/pm/ComputerEngine;->isInstantApp(Ljava/lang/String;I)Z
-HPLcom/android/server/pm/ComputerEngine;->isInstantAppInternal(Ljava/lang/String;II)Z
-HPLcom/android/server/pm/ComputerEngine;->isInstantAppInternalBody(Ljava/lang/String;II)Z
-HPLcom/android/server/pm/ComputerEngine;->isInstantAppResolutionAllowed(Landroid/content/Intent;Ljava/util/List;IZJ)Z
-HPLcom/android/server/pm/ComputerEngine;->isPackageAvailable(Ljava/lang/String;I)Z
+HPLcom/android/server/pm/ComputerEngine;->isInstantAppInternal(IILjava/lang/String;)Z+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HPLcom/android/server/pm/ComputerEngine;->isInstantAppResolutionAllowed(Landroid/content/Intent;Ljava/util/List;IZJ)Z+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;
+PLcom/android/server/pm/ComputerEngine;->isKnownIsolatedComputeApp(I)Z
+HPLcom/android/server/pm/ComputerEngine;->isPackageAvailable(Ljava/lang/String;I)Z+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
PLcom/android/server/pm/ComputerEngine;->isPackageStoppedForUser(Ljava/lang/String;I)Z
PLcom/android/server/pm/ComputerEngine;->isPackageSuspendedForUser(Ljava/lang/String;I)Z
HPLcom/android/server/pm/ComputerEngine;->isRecentsAccessingChildProfiles(II)Z
-HPLcom/android/server/pm/ComputerEngine;->lambda$static$0(Landroid/content/pm/ProviderInfo;Landroid/content/pm/ProviderInfo;)I
HPLcom/android/server/pm/ComputerEngine;->queryContentProviders(Ljava/lang/String;IJLjava/lang/String;)Landroid/content/pm/ParceledListSlice;
HPLcom/android/server/pm/ComputerEngine;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
PLcom/android/server/pm/ComputerEngine;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;JII)Ljava/util/List;
-HPLcom/android/server/pm/ComputerEngine;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;JJIIZZ)Ljava/util/List;
-HPLcom/android/server/pm/ComputerEngine;->queryIntentActivitiesInternalBody(Landroid/content/Intent;Ljava/lang/String;JIIZZLjava/lang/String;Ljava/lang/String;)Lcom/android/server/pm/QueryIntentActivitiesResult;
-HPLcom/android/server/pm/ComputerEngine;->queryIntentServicesInternal(Landroid/content/Intent;Ljava/lang/String;JIIZ)Ljava/util/List;
-HPLcom/android/server/pm/ComputerEngine;->queryIntentServicesInternalBody(Landroid/content/Intent;Ljava/lang/String;JIILjava/lang/String;)Ljava/util/List;
-PLcom/android/server/pm/ComputerEngine;->resolveComponentName()Landroid/content/ComponentName;
-HPLcom/android/server/pm/ComputerEngine;->resolveContentProvider(Ljava/lang/String;JII)Landroid/content/pm/ProviderInfo;
-HPLcom/android/server/pm/ComputerEngine;->resolveExternalPackageName(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/lang/String;
-HPLcom/android/server/pm/ComputerEngine;->resolveInternalPackageName(Ljava/lang/String;J)Ljava/lang/String;
-HSPLcom/android/server/pm/ComputerEngine;->resolveInternalPackageNameInternalLocked(Ljava/lang/String;JI)Ljava/lang/String;
-PLcom/android/server/pm/ComputerEngine;->safeMode()Z
+HPLcom/android/server/pm/ComputerEngine;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;JIIIZZ)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolver;,Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/pm/ComputerEngine;->queryIntentServicesInternal(Landroid/content/Intent;Ljava/lang/String;JIIIZ)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;
+HPLcom/android/server/pm/ComputerEngine;->resolveContentProvider(IILjava/lang/String;J)Landroid/content/pm/ProviderInfo;+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;
+HPLcom/android/server/pm/ComputerEngine;->resolveExternalPackageName(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/lang/String;+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+PLcom/android/server/pm/ComputerEngine;->resolveInternalPackageName(JLjava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/pm/ComputerEngine;->resolveInternalPackageNameInternalLocked(ILjava/lang/String;J)Ljava/lang/String;
HPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/SharedUserSetting;II)Z
HPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/pkg/PackageStateInternal;II)Z
-HPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/pkg/PackageStateInternal;ILandroid/content/ComponentName;II)Z
-HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/pkg/PackageStateInternal;ILandroid/content/ComponentName;IIZ)Z
-HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/pkg/PackageStateInternal;ILandroid/content/ComponentName;IIZZ)Z
-HPLcom/android/server/pm/ComputerEngine;->shouldFilterApplicationIncludingUninstalled(Lcom/android/server/pm/SharedUserSetting;II)Z
+HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/pkg/PackageStateInternal;ILandroid/content/ComponentName;IIZZ)Z+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;
+PLcom/android/server/pm/ComputerEngine;->shouldFilterApplicationIncludingUninstalled(Lcom/android/server/pm/SharedUserSetting;II)Z
HPLcom/android/server/pm/ComputerEngine;->shouldFilterApplicationIncludingUninstalled(Lcom/android/server/pm/pkg/PackageStateInternal;II)Z
-HPLcom/android/server/pm/ComputerEngine;->shouldFilterApplicationIncludingUninstalledNotArchived(Lcom/android/server/pm/pkg/PackageStateInternal;II)Z
-HPLcom/android/server/pm/ComputerEngine;->updateFlags(JI)J
-PLcom/android/server/pm/ComputerEngine;->updateFlagsForApplication(JI)J
-HPLcom/android/server/pm/ComputerEngine;->updateFlagsForComponent(JI)J
-HPLcom/android/server/pm/ComputerEngine;->updateFlagsForPackage(JI)J
-HPLcom/android/server/pm/ComputerEngine;->updateFlagsForResolve(JIIZZ)J
+HPLcom/android/server/pm/ComputerEngine;->updateFlags(IJ)J
+HPLcom/android/server/pm/ComputerEngine;->updateFlagsForPackage(IJ)J
+HPLcom/android/server/pm/ComputerEngine;->updateFlagsForResolve(IIJZZ)J
HPLcom/android/server/pm/ComputerEngine;->updateFlagsForResolve(JIIZZZ)J
-HSPLcom/android/server/pm/ComputerEngine;->use()Lcom/android/server/pm/Computer;
-HSPLcom/android/server/pm/ComputerLocked;-><init>(Lcom/android/server/pm/PackageManagerService$Snapshot;)V
+HSPLcom/android/server/pm/ComputerEngine;->use()Lcom/android/server/pm/ComputerEngine;
+PLcom/android/server/pm/ComputerLocked;->instantAppInstallerActivity()Landroid/content/pm/ActivityInfo;
PLcom/android/server/pm/CrossProfileAppsService;-><init>(Landroid/content/Context;)V
PLcom/android/server/pm/CrossProfileAppsService;->onStart()V
-PLcom/android/server/pm/CrossProfileAppsServiceImpl$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/pm/CrossProfileAppsServiceImpl;ILjava/lang/String;)V
-PLcom/android/server/pm/CrossProfileAppsServiceImpl$$ExternalSyntheticLambda7;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/pm/CrossProfileAppsServiceImpl$$ExternalSyntheticLambda3;-><init>(IILcom/android/server/pm/CrossProfileAppsServiceImpl;Ljava/lang/String;)V
+PLcom/android/server/pm/CrossProfileAppsServiceImpl$$ExternalSyntheticLambda3;->getOrThrow()Ljava/lang/Object;
PLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;-><init>(Landroid/content/Context;)V
-PLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;->checkComponentPermission(Ljava/lang/String;IIZ)I
+PLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;->checkComponentPermission(ILjava/lang/String;)I
PLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;->getUserManager()Landroid/os/UserManager;
PLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;->withCleanCallingIdentity(Lcom/android/internal/util/FunctionalUtils$ThrowingSupplier;)Ljava/lang/Object;
PLcom/android/server/pm/CrossProfileAppsServiceImpl$LocalService;-><init>(Lcom/android/server/pm/CrossProfileAppsServiceImpl;)V
PLcom/android/server/pm/CrossProfileAppsServiceImpl$LocalService;->getTargetUserProfiles(Ljava/lang/String;I)Ljava/util/List;
PLcom/android/server/pm/CrossProfileAppsServiceImpl$LocalService;->verifyUidHasInteractAcrossProfilePermission(Ljava/lang/String;I)Z
-PLcom/android/server/pm/CrossProfileAppsServiceImpl;->$r8$lambda$vikD5Mw9q_Jc9YJF2vwkg_I5o_A(Lcom/android/server/pm/CrossProfileAppsServiceImpl;ILjava/lang/String;)Ljava/util/List;
-PLcom/android/server/pm/CrossProfileAppsServiceImpl;->-$$Nest$mgetTargetUserProfilesUnchecked(Lcom/android/server/pm/CrossProfileAppsServiceImpl;Ljava/lang/String;I)Ljava/util/List;
-PLcom/android/server/pm/CrossProfileAppsServiceImpl;->-$$Nest$mhasInteractAcrossProfilesPermission(Lcom/android/server/pm/CrossProfileAppsServiceImpl;Ljava/lang/String;II)Z
-PLcom/android/server/pm/CrossProfileAppsServiceImpl;-><init>(Landroid/content/Context;)V
PLcom/android/server/pm/CrossProfileAppsServiceImpl;-><init>(Landroid/content/Context;Lcom/android/server/pm/CrossProfileAppsServiceImpl$Injector;)V
-PLcom/android/server/pm/CrossProfileAppsServiceImpl;->getLocalService()Landroid/content/pm/CrossProfileAppsInternal;
-PLcom/android/server/pm/CrossProfileAppsServiceImpl;->getTargetUserProfilesUnchecked(Ljava/lang/String;I)Ljava/util/List;
-PLcom/android/server/pm/CrossProfileAppsServiceImpl;->hasInteractAcrossProfilesPermission(Ljava/lang/String;II)Z
-PLcom/android/server/pm/CrossProfileAppsServiceImpl;->isPermissionGranted(Ljava/lang/String;I)Z
-PLcom/android/server/pm/CrossProfileAppsServiceImpl;->lambda$getTargetUserProfilesUnchecked$3(ILjava/lang/String;)Ljava/util/List;
+PLcom/android/server/pm/CrossProfileAppsServiceImpl;->getTargetUserProfilesUnchecked(ILjava/lang/String;)Ljava/util/List;
+PLcom/android/server/pm/CrossProfileAppsServiceImpl;->hasInteractAcrossProfilesPermission(IILjava/lang/String;)Z
+PLcom/android/server/pm/CrossProfileAppsServiceImpl;->isPermissionGranted(ILjava/lang/String;)Z
HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;-><init>(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/DefaultAppProvider;Landroid/content/Context;)V
-HPLcom/android/server/pm/CrossProfileIntentResolverEngine;->combineFilterAndCreateQueryActivitiesResponse(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZJIIZLjava/util/List;Ljava/util/List;ZZZLjava/util/function/Function;)Lcom/android/server/pm/QueryIntentActivitiesResult;
-HPLcom/android/server/pm/CrossProfileIntentResolverEngine;->resolveInfoFromCrossProfileDomainInfo(Ljava/util/List;)Ljava/util/List;
-HPLcom/android/server/pm/CrossProfileIntentResolverEngine;->resolveIntent(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;IJLjava/lang/String;ZZLjava/util/function/Function;)Ljava/util/List;
-HPLcom/android/server/pm/CrossProfileIntentResolverEngine;->resolveIntentInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;IIJLjava/lang/String;ZZLjava/util/function/Function;Ljava/util/Set;)Ljava/util/List;
-HPLcom/android/server/pm/CrossProfileIntentResolverEngine;->shouldSkipCurrentProfile(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;I)Z
+HPLcom/android/server/pm/CrossProfileIntentResolverEngine;->resolveInfoFromCrossProfileDomainInfo(Ljava/util/List;)Ljava/util/List;+]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/pm/CrossProfileIntentResolverEngine;->resolveIntentInternal(Lcom/android/server/pm/ComputerEngine;Landroid/content/Intent;Ljava/lang/String;IIJLjava/lang/String;ZZLjava/util/function/Function;Ljava/util/Set;)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;
+HPLcom/android/server/pm/CrossProfileIntentResolverEngine;->shouldSkipCurrentProfile(Lcom/android/server/pm/ComputerEngine;Landroid/content/Intent;Ljava/lang/String;I)Z
HSPLcom/android/server/pm/DataLoaderManagerService$DataLoaderManagerBinderService;-><init>(Lcom/android/server/pm/DataLoaderManagerService;)V
HSPLcom/android/server/pm/DataLoaderManagerService;-><init>(Landroid/content/Context;)V
HSPLcom/android/server/pm/DataLoaderManagerService;->onStart()V
-HSPLcom/android/server/pm/DefaultAppProvider;-><init>(Ljava/util/function/Supplier;Ljava/util/function/Supplier;)V
-HSPLcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;-><init>(IIZ)V
-HSPLcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;->addAction(Ljava/lang/String;)Lcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;
-HSPLcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;->addCategory(Ljava/lang/String;)Lcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;
-HSPLcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;->addDataScheme(Ljava/lang/String;)Lcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;
-HSPLcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;->addDataType(Ljava/lang/String;)Lcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;
-HSPLcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;->build()Lcom/android/server/pm/DefaultCrossProfileIntentFilter;
+HSPLcom/android/server/pm/DefaultAppProvider;-><init>(Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda41;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda49;)V
+PLcom/android/server/pm/DefaultAppProvider;->getRoleHolder(ILjava/lang/String;)Ljava/lang/String;
HSPLcom/android/server/pm/DefaultCrossProfileIntentFilter;-><init>(Lcom/android/server/pm/WatchedIntentFilter;IIZ)V
-HSPLcom/android/server/pm/DefaultCrossProfileIntentFilter;-><init>(Lcom/android/server/pm/WatchedIntentFilter;IIZLcom/android/server/pm/DefaultCrossProfileIntentFilter-IA;)V
HSPLcom/android/server/pm/DefaultCrossProfileIntentFiltersUtils;-><clinit>()V
-HSPLcom/android/server/pm/DefaultCrossProfileIntentFiltersUtils;->getDefaultCloneProfileFilters()Ljava/util/List;
HSPLcom/android/server/pm/DefaultCrossProfileIntentFiltersUtils;->getDefaultCrossProfileTelephonyIntentFilters(Z)Ljava/util/List;
-HSPLcom/android/server/pm/DefaultCrossProfileIntentFiltersUtils;->getDefaultManagedProfileFilters()Ljava/util/List;
HSPLcom/android/server/pm/DeletePackageHelper;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/RemovePackageHelper;Lcom/android/server/pm/BroadcastHelper;)V
PLcom/android/server/pm/DexOptHelper$1;-><init>(Lcom/android/server/art/ArtManagerLocal;)V
PLcom/android/server/pm/DexOptHelper$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/pm/DexOptHelper$DexoptDoneHandler;-><init>(Lcom/android/server/pm/DexOptHelper;)V
-PLcom/android/server/pm/DexOptHelper$DexoptDoneHandler;-><init>(Lcom/android/server/pm/DexOptHelper;Lcom/android/server/pm/DexOptHelper$DexoptDoneHandler-IA;)V
-HSPLcom/android/server/pm/DexOptHelper;-><clinit>()V
+PLcom/android/server/pm/DexOptHelper$DexoptDoneHandler;->onDexoptDone(Lcom/android/server/art/model/DexoptResult;)V
+PLcom/android/server/pm/DexOptHelper$StagedApexObserver;-><init>(Lcom/android/server/art/ArtManagerLocal;)V
HSPLcom/android/server/pm/DexOptHelper;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-PLcom/android/server/pm/DexOptHelper;->dumpDexoptState(Lcom/android/internal/util/IndentingPrintWriter;Ljava/lang/String;)V
+PLcom/android/server/pm/DexOptHelper;->dexoptPackageUsingArtService(Lcom/android/server/pm/InstallRequest;Lcom/android/server/pm/dex/DexoptOptions;)Lcom/android/server/art/model/DexoptResult;
PLcom/android/server/pm/DexOptHelper;->getArtManagerLocal()Lcom/android/server/art/ArtManagerLocal;
-HPLcom/android/server/pm/DexOptHelper;->getBcpApexes()Ljava/util/List;
-HPLcom/android/server/pm/DexOptHelper;->getDexUseManagerLocal()Lcom/android/server/art/DexUseManagerLocal;
-PLcom/android/server/pm/DexOptHelper;->hasBcpApexesChanged()Z
+PLcom/android/server/pm/DexOptHelper;->getDexUseManagerLocal()Lcom/android/server/art/DexUseManagerLocal;
PLcom/android/server/pm/DexOptHelper;->initializeArtManagerLocal(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)V
-PLcom/android/server/pm/DexOptHelper;->performPackageDexOptUpgradeIfNeeded()V
-HSPLcom/android/server/pm/DexOptHelper;->useArtService()Z
+PLcom/android/server/pm/DexOptHelper;->performDexoptIfNeeded(Lcom/android/server/pm/InstallRequest;Lcom/android/server/pm/dex/DexManager;Landroid/content/Context;Lcom/android/server/pm/PackageManagerTracedLock$RawLock;)V
HSPLcom/android/server/pm/DistractingPackageHelper;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/BroadcastHelper;Lcom/android/server/pm/SuspendPackageHelper;)V
HSPLcom/android/server/pm/DomainVerificationConnection;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-HSPLcom/android/server/pm/DomainVerificationConnection;->doesUserExist(I)Z
-HSPLcom/android/server/pm/DomainVerificationConnection;->filterAppAccess(Ljava/lang/String;II)Z
-HSPLcom/android/server/pm/DomainVerificationConnection;->getCallingUid()I
-HSPLcom/android/server/pm/DomainVerificationConnection;->getCallingUserId()I
HSPLcom/android/server/pm/DomainVerificationConnection;->scheduleWriteSettings()V
-HPLcom/android/server/pm/DumpHelper;-><init>(Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/StorageEventHelper;Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/PackageInstallerService;[Ljava/lang/String;Lcom/android/server/pm/KnownPackages;Lcom/android/server/pm/ChangedPackagesTracker;Landroid/util/ArrayMap;Landroid/util/ArraySet;[Landroid/os/incremental/PerUidReadTimeouts;Lcom/android/server/pm/SnapshotStatistics;)V
-PLcom/android/server/pm/DumpHelper;->doDump(Lcom/android/server/pm/Computer;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/pm/DumpState;-><init>()V
-PLcom/android/server/pm/DumpState;->getSharedUser()Lcom/android/server/pm/SharedUserSetting;
-PLcom/android/server/pm/DumpState;->getTargetPackageName()Ljava/lang/String;
-PLcom/android/server/pm/DumpState;->getTitlePrinted()Z
-PLcom/android/server/pm/DumpState;->isCheckIn()Z
+PLcom/android/server/pm/DumpHelper$$ExternalSyntheticLambda0;-><init>(Ljava/io/PrintWriter;)V
+PLcom/android/server/pm/DumpHelper$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/pm/DumpState;->isDumping(I)Z
PLcom/android/server/pm/DumpState;->isOptionEnabled(I)Z
-HPLcom/android/server/pm/DumpState;->onTitlePrinted()Z
-PLcom/android/server/pm/DumpState;->setOptionEnabled(I)V
-PLcom/android/server/pm/DumpState;->setSharedUser(Lcom/android/server/pm/SharedUserSetting;)V
-PLcom/android/server/pm/DumpState;->setTargetPackageName(Ljava/lang/String;)V
-PLcom/android/server/pm/DumpState;->setTitlePrinted(Z)V
HSPLcom/android/server/pm/FreeStorageHelper;-><clinit>()V
HSPLcom/android/server/pm/FreeStorageHelper;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-HSPLcom/android/server/pm/FreeStorageHelper;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerServiceInjector;Landroid/content/Context;Z)V
-PLcom/android/server/pm/FreeStorageHelper;->performFstrimIfNeeded()V
PLcom/android/server/pm/GentleUpdateHelper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/GentleUpdateHelper;)V
-HPLcom/android/server/pm/GentleUpdateHelper$$ExternalSyntheticLambda1;->onUidImportance(II)V
-HPLcom/android/server/pm/GentleUpdateHelper$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/pm/GentleUpdateHelper;Ljava/lang/String;I)V
+PLcom/android/server/pm/GentleUpdateHelper$$ExternalSyntheticLambda1;->onUidImportance(II)V
+PLcom/android/server/pm/GentleUpdateHelper$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/pm/GentleUpdateHelper;Ljava/lang/String;I)V
PLcom/android/server/pm/GentleUpdateHelper$$ExternalSyntheticLambda3;->run()V
-PLcom/android/server/pm/GentleUpdateHelper;->$r8$lambda$9Vy9TsTEIaX26UUSrPw3MGLRU-s(Lcom/android/server/pm/GentleUpdateHelper;Ljava/lang/String;I)V
HPLcom/android/server/pm/GentleUpdateHelper;->$r8$lambda$JQiy908NuzFx59XC1nxYVaiXKqM(Lcom/android/server/pm/GentleUpdateHelper;II)V
PLcom/android/server/pm/GentleUpdateHelper;-><clinit>()V
PLcom/android/server/pm/GentleUpdateHelper;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/pm/AppStateHelper;)V
-PLcom/android/server/pm/GentleUpdateHelper;->lambda$onUidImportance$4(Ljava/lang/String;I)V
-HPLcom/android/server/pm/GentleUpdateHelper;->onUidImportance(II)V
-PLcom/android/server/pm/GentleUpdateHelper;->onUidImportance(Ljava/lang/String;I)V
-PLcom/android/server/pm/GentleUpdateHelper;->systemReady()V
-PLcom/android/server/pm/IPackageManagerBase;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/content/Context;Lcom/android/server/pm/DexOptHelper;Lcom/android/server/pm/ModuleInfoProvider;Lcom/android/server/pm/PreferredActivityHelper;Lcom/android/server/pm/ResolveIntentHelper;Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/DomainVerificationConnection;Lcom/android/server/pm/PackageInstallerService;Lcom/android/server/pm/PackageProperty;Landroid/content/ComponentName;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/pm/IPackageManagerBase;->checkPermission(Ljava/lang/String;Ljava/lang/String;I)I
-PLcom/android/server/pm/IPackageManagerBase;->checkSignatures(Ljava/lang/String;Ljava/lang/String;I)I
-HPLcom/android/server/pm/IPackageManagerBase;->checkUidPermission(Ljava/lang/String;I)I
-PLcom/android/server/pm/IPackageManagerBase;->getActivityInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ActivityInfo;
-PLcom/android/server/pm/IPackageManagerBase;->getApplicationEnabledSetting(Ljava/lang/String;I)I
-HPLcom/android/server/pm/IPackageManagerBase;->getApplicationInfo(Ljava/lang/String;JI)Landroid/content/pm/ApplicationInfo;
-PLcom/android/server/pm/IPackageManagerBase;->getAttentionServicePackageName()Ljava/lang/String;
-HPLcom/android/server/pm/IPackageManagerBase;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I
-PLcom/android/server/pm/IPackageManagerBase;->getDefaultTextClassifierPackageName()Ljava/lang/String;
-PLcom/android/server/pm/IPackageManagerBase;->getHarmfulAppWarning(Ljava/lang/String;I)Ljava/lang/CharSequence;
-HPLcom/android/server/pm/IPackageManagerBase;->getInstallSourceInfo(Ljava/lang/String;I)Landroid/content/pm/InstallSourceInfo;
-PLcom/android/server/pm/IPackageManagerBase;->getInstalledApplications(JI)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/IPackageManagerBase;->getInstalledModules(I)Ljava/util/List;
-HPLcom/android/server/pm/IPackageManagerBase;->getInstalledPackages(JI)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/IPackageManagerBase;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/pm/IPackageManagerBase;->getInstrumentationInfoAsUser(Landroid/content/ComponentName;II)Landroid/content/pm/InstrumentationInfo;
-PLcom/android/server/pm/IPackageManagerBase;->getModuleInfo(Ljava/lang/String;I)Landroid/content/pm/ModuleInfo;
-HPLcom/android/server/pm/IPackageManagerBase;->getNameForUid(I)Ljava/lang/String;
-HPLcom/android/server/pm/IPackageManagerBase;->getPackageGids(Ljava/lang/String;JI)[I
-HPLcom/android/server/pm/IPackageManagerBase;->getPackageInfo(Ljava/lang/String;JI)Landroid/content/pm/PackageInfo;
-PLcom/android/server/pm/IPackageManagerBase;->getPackageInstaller()Landroid/content/pm/IPackageInstaller;
-HPLcom/android/server/pm/IPackageManagerBase;->getPackageUid(Ljava/lang/String;JI)I
-HPLcom/android/server/pm/IPackageManagerBase;->getPackagesForUid(I)[Ljava/lang/String;
-PLcom/android/server/pm/IPackageManagerBase;->getPackagesHoldingPermissions([Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/IPackageManagerBase;->getPersistentApplications(I)Landroid/content/pm/ParceledListSlice;
-HPLcom/android/server/pm/IPackageManagerBase;->getPropertyAsUser(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/PackageManager$Property;
-HPLcom/android/server/pm/IPackageManagerBase;->getProviderInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ProviderInfo;
-PLcom/android/server/pm/IPackageManagerBase;->getRotationResolverPackageName()Ljava/lang/String;
-PLcom/android/server/pm/IPackageManagerBase;->getSdkSandboxPackageName()Ljava/lang/String;
-HPLcom/android/server/pm/IPackageManagerBase;->getServiceInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ServiceInfo;
-PLcom/android/server/pm/IPackageManagerBase;->getServicesSystemSharedLibraryPackageName()Ljava/lang/String;
-PLcom/android/server/pm/IPackageManagerBase;->getSetupWizardPackageName()Ljava/lang/String;
-PLcom/android/server/pm/IPackageManagerBase;->getSystemCaptionsServicePackageName()Ljava/lang/String;
-PLcom/android/server/pm/IPackageManagerBase;->getSystemSharedLibraryNames()[Ljava/lang/String;
-PLcom/android/server/pm/IPackageManagerBase;->getSystemTextClassifierPackageName()Ljava/lang/String;
-HPLcom/android/server/pm/IPackageManagerBase;->getTargetSdkVersion(Ljava/lang/String;)I
-PLcom/android/server/pm/IPackageManagerBase;->getUidForSharedUser(Ljava/lang/String;)I
-PLcom/android/server/pm/IPackageManagerBase;->getWellbeingPackageName()Ljava/lang/String;
-HPLcom/android/server/pm/IPackageManagerBase;->hasSystemFeature(Ljava/lang/String;I)Z
-PLcom/android/server/pm/IPackageManagerBase;->hasSystemUidErrors()Z
-PLcom/android/server/pm/IPackageManagerBase;->isDeviceUpgrading()Z
-PLcom/android/server/pm/IPackageManagerBase;->isFirstBoot()Z
-PLcom/android/server/pm/IPackageManagerBase;->isInstantApp(Ljava/lang/String;I)Z
-HPLcom/android/server/pm/IPackageManagerBase;->isPackageAvailable(Ljava/lang/String;I)Z
-PLcom/android/server/pm/IPackageManagerBase;->isPackageSuspendedForUser(Ljava/lang/String;I)Z
-PLcom/android/server/pm/IPackageManagerBase;->isSafeMode()Z
-HPLcom/android/server/pm/IPackageManagerBase;->queryContentProviders(Ljava/lang/String;IJLjava/lang/String;)Landroid/content/pm/ParceledListSlice;
-HPLcom/android/server/pm/IPackageManagerBase;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/IPackageManagerBase;->queryIntentContentProviders(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;
-HPLcom/android/server/pm/IPackageManagerBase;->queryIntentReceivers(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;
-HPLcom/android/server/pm/IPackageManagerBase;->queryIntentServices(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;
-HPLcom/android/server/pm/IPackageManagerBase;->resolveContentProvider(Ljava/lang/String;JI)Landroid/content/pm/ProviderInfo;
-HPLcom/android/server/pm/IPackageManagerBase;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ResolveInfo;
-PLcom/android/server/pm/IPackageManagerBase;->resolveService(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ResolveInfo;
-HPLcom/android/server/pm/IPackageManagerBase;->snapshot()Lcom/android/server/pm/Computer;
PLcom/android/server/pm/InitAppsHelper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/InitAppsHelper;Landroid/util/ArrayMap;)V
PLcom/android/server/pm/InitAppsHelper$$ExternalSyntheticLambda1;->forEachPackage(Lcom/android/internal/util/function/TriConsumer;)V
PLcom/android/server/pm/InitAppsHelper$$ExternalSyntheticLambda2;-><init>(Lcom/android/internal/util/function/TriConsumer;Landroid/util/ArrayMap;)V
PLcom/android/server/pm/InitAppsHelper$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
-PLcom/android/server/pm/InitAppsHelper;->$r8$lambda$VJZW-c31uI8Yaywv2gsqfy0KEng(Lcom/android/internal/util/function/TriConsumer;Landroid/util/ArrayMap;Lcom/android/server/pm/pkg/PackageStateInternal;)V
-PLcom/android/server/pm/InitAppsHelper;->$r8$lambda$VWF6nFCGGoc9b6Gi7rkF04KUDnc(Lcom/android/server/pm/InitAppsHelper;Landroid/util/ArrayMap;Lcom/android/internal/util/function/TriConsumer;)V
-PLcom/android/server/pm/InitAppsHelper;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/ApexManager;Lcom/android/server/pm/InstallPackageHelper;Ljava/util/List;)V
-PLcom/android/server/pm/InitAppsHelper;->fixSystemPackages([I)V
-PLcom/android/server/pm/InitAppsHelper;->getApexScanPartitions()Ljava/util/List;
-PLcom/android/server/pm/InitAppsHelper;->getDirsToScanAsSystem()Ljava/util/List;
-PLcom/android/server/pm/InitAppsHelper;->getSystemScanPartitions()Ljava/util/List;
+HSPLcom/android/server/pm/InitAppsHelper;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/ApexManager;Lcom/android/server/pm/InstallPackageHelper;Ljava/util/List;)V
PLcom/android/server/pm/InitAppsHelper;->initNonSystemApps(Lcom/android/internal/pm/parsing/PackageParser2;[IJ)V
-HPLcom/android/server/pm/InitAppsHelper;->initSystemApps(Lcom/android/internal/pm/parsing/PackageParser2;Lcom/android/server/utils/WatchedArrayMap;[IJ)Lcom/android/internal/content/om/OverlayConfig;
-PLcom/android/server/pm/InitAppsHelper;->isExpectingBetter(Ljava/lang/String;)Z
-PLcom/android/server/pm/InitAppsHelper;->lambda$initSystemApps$0(Lcom/android/internal/util/function/TriConsumer;Landroid/util/ArrayMap;Lcom/android/server/pm/pkg/PackageStateInternal;)V
-PLcom/android/server/pm/InitAppsHelper;->lambda$initSystemApps$1(Landroid/util/ArrayMap;Lcom/android/internal/util/function/TriConsumer;)V
-PLcom/android/server/pm/InitAppsHelper;->logNonSystemAppScanningTime(J)V
-PLcom/android/server/pm/InitAppsHelper;->logSystemAppsScanningTime(J)V
-HPLcom/android/server/pm/InitAppsHelper;->resolveApexToScanPartition(Lcom/android/server/pm/ApexManager$ActiveApexInfo;)Lcom/android/server/pm/ScanPartition;
-PLcom/android/server/pm/InitAppsHelper;->scanApexPackagesTraced(Lcom/android/internal/pm/parsing/PackageParser2;)Ljava/util/List;
-HPLcom/android/server/pm/InitAppsHelper;->scanDirTracedLI(Ljava/io/File;IILcom/android/internal/pm/parsing/PackageParser2;Ljava/util/concurrent/ExecutorService;Lcom/android/server/pm/ApexManager$ActiveApexInfo;)V
-HPLcom/android/server/pm/InitAppsHelper;->scanSystemDirs(Lcom/android/internal/pm/parsing/PackageParser2;Ljava/util/concurrent/ExecutorService;)V
-PLcom/android/server/pm/InitAppsHelper;->updateStubSystemAppsList(Ljava/util/List;)V
-PLcom/android/server/pm/InstallPackageHelper$$ExternalSyntheticLambda3;-><init>(Landroid/util/ArrayMap;)V
-PLcom/android/server/pm/InstallPackageHelper$$ExternalSyntheticLambda3;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/pm/InstallPackageHelper;->$r8$lambda$tl1xpBbhI4eWYKVkhUKxKCDJBRM(Landroid/util/ArrayMap;Lcom/android/server/pm/ParallelPackageParser$ParseResult;Lcom/android/server/pm/ParallelPackageParser$ParseResult;)I
+HSPLcom/android/server/pm/InitAppsHelper;->initSystemApps(Lcom/android/internal/pm/parsing/PackageParser2;Lcom/android/server/utils/WatchedArrayMap;[IJ)Lcom/android/internal/content/om/OverlayConfig;
+HSPLcom/android/server/pm/InitAppsHelper;->scanDirTracedLI(Ljava/io/File;IILcom/android/internal/pm/parsing/PackageParser2;Ljava/util/concurrent/ExecutorService;Lcom/android/server/pm/ApexManager$ActiveApexInfo;)V
+PLcom/android/server/pm/InstallArgs;-><init>(Lcom/android/server/pm/OriginInfo;Lcom/android/server/pm/MoveInfo;Landroid/content/pm/IPackageInstallObserver2;IILcom/android/server/pm/InstallSource;Ljava/lang/String;Ljava/lang/String;Landroid/util/ArrayMap;Ljava/util/List;ILjava/lang/String;ILandroid/content/pm/SigningDetails;IIZIIZLjava/lang/String;)V
+PLcom/android/server/pm/InstallDependencyHelper$CallOnceProxy$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/InstallDependencyHelper$CallOnceProxy;)V
+PLcom/android/server/pm/InstallDependencyHelper$CallOnceProxy$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/pm/InstallDependencyHelper$CallOnceProxy;-><init>(Landroid/os/Handler;Lcom/android/server/pm/PackageInstallerSession$6;)V
+PLcom/android/server/pm/InstallDependencyHelper$CallOnceProxy;->onResult()V
+PLcom/android/server/pm/InstallDependencyHelper;-><clinit>()V
+PLcom/android/server/pm/InstallDependencyHelper;-><init>(Landroid/content/Context;Lcom/android/server/pm/SharedLibrariesImpl;Lcom/android/server/pm/PackageInstallerService;)V
+PLcom/android/server/pm/InstallDependencyHelper;->notifySessionComplete(I)V
+PLcom/android/server/pm/InstallDependencyHelper;->resolveLibraryDependenciesIfNeededInternal(Landroid/content/pm/parsing/PackageLite;Lcom/android/server/pm/Computer;ILandroid/os/Handler;Lcom/android/server/pm/InstallDependencyHelper$CallOnceProxy;)V
+PLcom/android/server/pm/InstallPackageHelper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/InstallPackageHelper;[ILjava/lang/String;II)V
+PLcom/android/server/pm/InstallPackageHelper$$ExternalSyntheticLambda1;->run()V
+HSPLcom/android/server/pm/InstallPackageHelper$$ExternalSyntheticLambda5;-><init>(Landroid/util/ArrayMap;)V
+HSPLcom/android/server/pm/InstallPackageHelper$$ExternalSyntheticLambda5;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/pm/InstallPackageHelper$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/pm/InstallPackageHelper;ZLcom/android/server/pm/InstallRequest;)V
+PLcom/android/server/pm/InstallPackageHelper$$ExternalSyntheticLambda6;->run()V
HSPLcom/android/server/pm/InstallPackageHelper;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/AppDataHelper;Lcom/android/server/pm/RemovePackageHelper;Lcom/android/server/pm/DeletePackageHelper;Lcom/android/server/pm/BroadcastHelper;)V
-HPLcom/android/server/pm/InstallPackageHelper;->addForInitLI(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IILandroid/os/UserHandle;Lcom/android/server/pm/ApexManager$ActiveApexInfo;)Lcom/android/server/pm/pkg/AndroidPackage;
-HPLcom/android/server/pm/InstallPackageHelper;->adjustScanFlags(ILcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Landroid/os/UserHandle;Lcom/android/server/pm/pkg/AndroidPackage;)I
-PLcom/android/server/pm/InstallPackageHelper;->assertOverlayIsValid(Lcom/android/server/pm/pkg/AndroidPackage;II)V
-HPLcom/android/server/pm/InstallPackageHelper;->assertPackageIsValid(Lcom/android/server/pm/pkg/AndroidPackage;II)V
-HPLcom/android/server/pm/InstallPackageHelper;->assertPackageWithSharedUserIdIsPrivileged(Lcom/android/server/pm/pkg/AndroidPackage;)V
-PLcom/android/server/pm/InstallPackageHelper;->checkExistingBetterPackages(Landroid/util/ArrayMap;Ljava/util/List;II)V
-PLcom/android/server/pm/InstallPackageHelper;->cleanupDisabledPackageSettings(Ljava/util/List;[II)V
-HPLcom/android/server/pm/InstallPackageHelper;->commitPackageSettings(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/ReconciledPackage;)V
-HPLcom/android/server/pm/InstallPackageHelper;->commitReconciledScanResultLocked(Lcom/android/server/pm/ReconciledPackage;[I)Lcom/android/server/pm/pkg/AndroidPackage;
-HPLcom/android/server/pm/InstallPackageHelper;->getOriginalPackageLocked(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
-PLcom/android/server/pm/InstallPackageHelper;->hasLauncherEntry(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;)Z
-HPLcom/android/server/pm/InstallPackageHelper;->installPackagesFromDir(Ljava/io/File;IILcom/android/internal/pm/parsing/PackageParser2;Ljava/util/concurrent/ExecutorService;Lcom/android/server/pm/ApexManager$ActiveApexInfo;)V
-PLcom/android/server/pm/InstallPackageHelper;->installSystemStubPackages(Ljava/util/List;I)V
-PLcom/android/server/pm/InstallPackageHelper;->lambda$scanApexPackages$3(Landroid/util/ArrayMap;Lcom/android/server/pm/ParallelPackageParser$ParseResult;Lcom/android/server/pm/ParallelPackageParser$ParseResult;)I
-HPLcom/android/server/pm/InstallPackageHelper;->maybeClearProfilesForUpgradesLI(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/pkg/AndroidPackage;)V
-PLcom/android/server/pm/InstallPackageHelper;->needSignatureMatchToSystem(Ljava/lang/String;)Z
-HPLcom/android/server/pm/InstallPackageHelper;->optimisticallyRegisterAppId(Lcom/android/server/pm/InstallRequest;)Z
-HPLcom/android/server/pm/InstallPackageHelper;->prepareInitialScanRequest(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IILandroid/os/UserHandle;Ljava/lang/String;)Lcom/android/server/pm/ScanRequest;
-PLcom/android/server/pm/InstallPackageHelper;->prepareSystemPackageCleanUp(Lcom/android/server/utils/WatchedArrayMap;Ljava/util/List;Landroid/util/ArrayMap;[I)V
-HPLcom/android/server/pm/InstallPackageHelper;->scanApexPackages([Landroid/apex/ApexInfo;IILcom/android/internal/pm/parsing/PackageParser2;Ljava/util/concurrent/ExecutorService;)Ljava/util/List;
-HPLcom/android/server/pm/InstallPackageHelper;->scanPackageNewLI(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IIJLandroid/os/UserHandle;Ljava/lang/String;)Lcom/android/server/pm/ScanResult;
-HPLcom/android/server/pm/InstallPackageHelper;->scanSystemPackageLI(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IILandroid/os/UserHandle;)Landroid/util/Pair;
-HPLcom/android/server/pm/InstallRequest;-><init>(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IILandroid/os/UserHandle;Lcom/android/server/pm/ScanResult;Lcom/android/server/pm/PackageSetting;)V
-HPLcom/android/server/pm/InstallRequest;->assertScanResultExists()V
-PLcom/android/server/pm/InstallRequest;->getApexModuleName()Ljava/lang/String;
-PLcom/android/server/pm/InstallRequest;->getDisabledPackageSetting()Lcom/android/server/pm/PackageSetting;
-PLcom/android/server/pm/InstallRequest;->getDynamicSharedLibraryInfos()Ljava/util/List;
-HPLcom/android/server/pm/InstallRequest;->getInstallSource()Lcom/android/server/pm/InstallSource;
-PLcom/android/server/pm/InstallRequest;->getParseFlags()I
-PLcom/android/server/pm/InstallRequest;->getParsedPackage()Lcom/android/internal/pm/parsing/pkg/ParsedPackage;
-PLcom/android/server/pm/InstallRequest;->getPreVerifiedDomains()Landroid/content/pm/verify/domain/DomainSet;
-HPLcom/android/server/pm/InstallRequest;->getRealPackageName()Ljava/lang/String;
-PLcom/android/server/pm/InstallRequest;->getScanFlags()I
-HPLcom/android/server/pm/InstallRequest;->getScanRequestOldPackage()Lcom/android/server/pm/pkg/AndroidPackage;
-HPLcom/android/server/pm/InstallRequest;->getScanRequestOldPackageSetting()Lcom/android/server/pm/PackageSetting;
-HPLcom/android/server/pm/InstallRequest;->getScanRequestOriginalPackageSetting()Lcom/android/server/pm/PackageSetting;
-HPLcom/android/server/pm/InstallRequest;->getScanRequestPackageSetting()Lcom/android/server/pm/PackageSetting;
-HPLcom/android/server/pm/InstallRequest;->getScannedPackageSetting()Lcom/android/server/pm/PackageSetting;
-PLcom/android/server/pm/InstallRequest;->getSdkSharedLibraryInfo()Landroid/content/pm/SharedLibraryInfo;
-HPLcom/android/server/pm/InstallRequest;->getStaticSharedLibraryInfo()Landroid/content/pm/SharedLibraryInfo;
-PLcom/android/server/pm/InstallRequest;->getUserId()I
-HPLcom/android/server/pm/InstallRequest;->isExistingSettingCopied()Z
-HPLcom/android/server/pm/InstallRequest;->isForceQueryableOverride()Z
-PLcom/android/server/pm/InstallRequest;->isInstallReplace()Z
-PLcom/android/server/pm/InstallRequest;->isInstallSystem()Z
-HPLcom/android/server/pm/InstallRequest;->isRollback()Z
-HPLcom/android/server/pm/InstallRequest;->needsNewAppId()Z
-HPLcom/android/server/pm/InstallRequest;->onReconcileFinished()V
-HPLcom/android/server/pm/InstallRequest;->onReconcileStarted()V
+HSPLcom/android/server/pm/InstallPackageHelper;->addForInitLI(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IILandroid/os/UserHandle;Lcom/android/server/pm/ApexManager$ActiveApexInfo;)Lcom/android/server/pm/pkg/AndroidPackage;
+HSPLcom/android/server/pm/InstallPackageHelper;->assertOverlayIsValid(Lcom/android/server/pm/pkg/AndroidPackage;II)V
+HSPLcom/android/server/pm/InstallPackageHelper;->assertPackageIsValid(Lcom/android/server/pm/pkg/AndroidPackage;II)V
+HSPLcom/android/server/pm/InstallPackageHelper;->assertPackageWithSharedUserIdIsPrivileged(Lcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/pm/InstallPackageHelper;->commitInstallPackages(Ljava/util/List;)V
+HSPLcom/android/server/pm/InstallPackageHelper;->commitPackageSettings(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/ReconciledPackage;)V
+HPLcom/android/server/pm/InstallPackageHelper;->commitPackagesLocked(Ljava/util/List;[I)V
+HSPLcom/android/server/pm/InstallPackageHelper;->commitReconciledScanResultLocked(Lcom/android/server/pm/ReconciledPackage;[I)Lcom/android/server/pm/pkg/AndroidPackage;
+PLcom/android/server/pm/InstallPackageHelper;->completeInstallProcess(Ljava/util/List;Ljava/util/Map;Z)V
+PLcom/android/server/pm/InstallPackageHelper;->doRenameLI(Lcom/android/server/pm/InstallRequest;Lcom/android/internal/pm/parsing/pkg/ParsedPackage;)V
+PLcom/android/server/pm/InstallPackageHelper;->doesSignatureMatchForPermissions(Ljava/lang/String;Lcom/android/internal/pm/parsing/pkg/ParsedPackage;I)Z
+PLcom/android/server/pm/InstallPackageHelper;->executePostCommitStepsLIF(Ljava/util/List;)V
+PLcom/android/server/pm/InstallPackageHelper;->getNewUsers(Lcom/android/server/pm/InstallRequest;[I)[I
+HSPLcom/android/server/pm/InstallPackageHelper;->getOriginalPackageLocked(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/InstallPackageHelper;->installPackagesFromDir(Ljava/io/File;IILcom/android/internal/pm/parsing/PackageParser2;Ljava/util/concurrent/ExecutorService;Lcom/android/server/pm/ApexManager$ActiveApexInfo;)V
+HSPLcom/android/server/pm/InstallPackageHelper;->optimisticallyRegisterAppId(Lcom/android/server/pm/InstallRequest;)Z
+PLcom/android/server/pm/InstallPackageHelper;->prepPerformDexoptIfNeeded(Ljava/util/List;)V
+HSPLcom/android/server/pm/InstallPackageHelper;->prepareInitialScanRequest(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IILandroid/os/UserHandle;Ljava/lang/String;)Lcom/android/server/pm/ScanRequest;
+PLcom/android/server/pm/InstallPackageHelper;->prepareInstallPackages(Ljava/util/List;)Z
+HPLcom/android/server/pm/InstallPackageHelper;->preparePackage(Lcom/android/server/pm/InstallRequest;)V
+PLcom/android/server/pm/InstallPackageHelper;->reconcileInstallPackages(Ljava/util/List;Ljava/util/Map;)Ljava/util/List;
+PLcom/android/server/pm/InstallPackageHelper;->releaseWakeLock(J)V
+PLcom/android/server/pm/InstallPackageHelper;->renameAndUpdatePaths(Ljava/util/List;)Z
+PLcom/android/server/pm/InstallPackageHelper;->restoreAndPostInstall(Lcom/android/server/pm/InstallRequest;)V
+HSPLcom/android/server/pm/InstallPackageHelper;->scanApexPackages([Landroid/apex/ApexInfo;IILcom/android/internal/pm/parsing/PackageParser2;Ljava/util/concurrent/ExecutorService;)Ljava/util/List;
+PLcom/android/server/pm/InstallPackageHelper;->scanInstallPackages(Ljava/util/List;Ljava/util/Map;Ljava/util/Map;)Z
+HSPLcom/android/server/pm/InstallPackageHelper;->scanPackageForInitLI(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IILandroid/os/UserHandle;)Landroid/util/Pair;
+HSPLcom/android/server/pm/InstallPackageHelper;->scanPackageNew(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IIJLandroid/os/UserHandle;Ljava/lang/String;)Lcom/android/server/pm/ScanResult;
+PLcom/android/server/pm/InstallPackageHelper;->setUpFsVerity(Lcom/android/server/pm/pkg/AndroidPackage;)V
+HSPLcom/android/server/pm/InstallRequest;-><init>(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IILandroid/os/UserHandle;Lcom/android/server/pm/ScanResult;Lcom/android/server/pm/PackageSetting;)V
+PLcom/android/server/pm/InstallRequest;-><init>(Lcom/android/server/pm/InstallingSession;)V
+HSPLcom/android/server/pm/InstallRequest;->assertScanResultExists()V
+PLcom/android/server/pm/InstallRequest;->getCodeFile()Ljava/io/File;
+HSPLcom/android/server/pm/InstallRequest;->getInstallFlags()I
+PLcom/android/server/pm/InstallRequest;->getInstallerPackageName()Ljava/lang/String;
+HSPLcom/android/server/pm/InstallRequest;->getScannedPackageSetting()Lcom/android/server/pm/PackageSetting;
+PLcom/android/server/pm/InstallRequest;->getVolumeUuid()Ljava/lang/String;
+PLcom/android/server/pm/InstallRequest;->isInstallMove()Z
+PLcom/android/server/pm/InstallRequest;->onDexoptFinished(Lcom/android/server/art/model/DexoptResult;)V
PLcom/android/server/pm/InstallRequest;->setApexModuleName(Ljava/lang/String;)V
-PLcom/android/server/pm/InstallRequest;->setLibraryConsumers(Ljava/util/ArrayList;)V
-HPLcom/android/server/pm/InstallRequest;->setScannedPackageSettingAppId(I)V
+PLcom/android/server/pm/InstallRequest;->setName(Ljava/lang/String;)V
+PLcom/android/server/pm/InstallRequest;->setOriginUsers([I)V
+PLcom/android/server/pm/InstallRequest;->setPrepareResult(ZIILcom/android/server/pm/PackageSetting;Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Landroid/content/pm/ArchivedPackageParcel;ZZLcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;)V
+PLcom/android/server/pm/InstallRequest;->setRemovedInfo(Lcom/android/server/pm/PackageRemovedInfo;)V
+PLcom/android/server/pm/InstallRequest;->setReturnCode()V
HSPLcom/android/server/pm/InstallSource;-><clinit>()V
-HSPLcom/android/server/pm/InstallSource;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZZLcom/android/server/pm/PackageSignatures;I)V
+HSPLcom/android/server/pm/InstallSource;-><init>(IILcom/android/server/pm/PackageSignatures;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)V
HSPLcom/android/server/pm/InstallSource;->create(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;IZZ)Lcom/android/server/pm/InstallSource;
-HSPLcom/android/server/pm/InstallSource;->createInternal(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;IZZLcom/android/server/pm/PackageSignatures;)Lcom/android/server/pm/InstallSource;
+HSPLcom/android/server/pm/InstallSource;->createInternal(IILcom/android/server/pm/PackageSignatures;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)Lcom/android/server/pm/InstallSource;
HSPLcom/android/server/pm/InstallSource;->intern(Ljava/lang/String;)Ljava/lang/String;
-HPLcom/android/server/pm/InstallSource;->setIsOrphaned(Z)Lcom/android/server/pm/InstallSource;
-HPLcom/android/server/pm/InstallSource;->setUpdateOwnerPackageName(Ljava/lang/String;)Lcom/android/server/pm/InstallSource;
+HSPLcom/android/server/pm/InstallSource;->setUpdateOwnerPackageName(Ljava/lang/String;)Lcom/android/server/pm/InstallSource;
HSPLcom/android/server/pm/Installer$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/Installer;)V
PLcom/android/server/pm/Installer$Batch;-><init>()V
PLcom/android/server/pm/Installer$Batch;->createAppData(Landroid/os/CreateAppDataArgs;)Ljava/util/concurrent/CompletableFuture;
-HPLcom/android/server/pm/Installer$Batch;->execute(Lcom/android/server/pm/Installer;)V
+PLcom/android/server/pm/Installer$Batch;->execute(Lcom/android/server/pm/Installer;)V
HSPLcom/android/server/pm/Installer;-><init>(Landroid/content/Context;)V
HSPLcom/android/server/pm/Installer;-><init>(Landroid/content/Context;Z)V
-HPLcom/android/server/pm/Installer;->buildCreateAppDataArgs(Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;IZ)Landroid/os/CreateAppDataArgs;
-HSPLcom/android/server/pm/Installer;->checkBeforeRemote()Z
-PLcom/android/server/pm/Installer;->cleanupInvalidPackageDirs(Ljava/lang/String;II)V
+PLcom/android/server/pm/Installer;->buildCreateAppDataArgs(IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Landroid/os/CreateAppDataArgs;
+HSPLcom/android/server/pm/Installer;->checkBeforeRemote()Z+]Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;
+PLcom/android/server/pm/Installer;->clearAppData(Ljava/lang/String;Ljava/lang/String;IIJ)V
HSPLcom/android/server/pm/Installer;->connect()V
-PLcom/android/server/pm/Installer;->createAppDataBatched([Landroid/os/CreateAppDataArgs;)[Landroid/os/CreateAppDataResult;
-PLcom/android/server/pm/Installer;->createUserData(Ljava/lang/String;III)V
-PLcom/android/server/pm/Installer;->destroyCeSnapshotsNotSpecified(I[I)Z
-HSPLcom/android/server/pm/Installer;->executeDeferredActions()V
-PLcom/android/server/pm/Installer;->fixupAppData(Ljava/lang/String;I)V
-HSPLcom/android/server/pm/Installer;->invalidateMounts()V
-PLcom/android/server/pm/Installer;->linkNativeLibraryDirectory(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/pm/Installer;->getAppSize(Ljava/lang/String;[Ljava/lang/String;III[J[Ljava/lang/String;Landroid/content/pm/PackageStats;)V+]Landroid/os/IInstalld;Landroid/os/IInstalld$Stub$Proxy;]Ldalvik/system/BlockGuard$VmPolicy;Landroid/os/StrictMode$5;
+PLcom/android/server/pm/Installer;->getUserSize(Ljava/lang/String;II[ILandroid/content/pm/PackageStats;)V
HSPLcom/android/server/pm/Installer;->onStart()V
+PLcom/android/server/pm/Installer;->rmPackageDir(Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/pm/Installer;->setWarnIfHeld(Ljava/lang/Object;)V
+PLcom/android/server/pm/InstallingSession$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/pm/InstallingSession$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/pm/InstallingSession$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/pm/InstallingSession;Ljava/lang/Object;I)V
+PLcom/android/server/pm/InstallingSession$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/pm/InstallingSession;-><init>(ILjava/io/File;Lcom/android/server/pm/PackageInstallerSession$7;Landroid/content/pm/PackageInstaller$SessionParams;Lcom/android/server/pm/InstallSource;Landroid/os/UserHandle;Landroid/content/pm/SigningDetails;ILandroid/content/pm/parsing/PackageLite;Landroid/content/pm/verify/domain/DomainSet;Lcom/android/server/pm/PackageManagerService;Z)V
+PLcom/android/server/pm/InstallingSession;->handleReturnCode(Lcom/android/server/pm/InstallRequest;)V
+PLcom/android/server/pm/InstallingSession;->handleStartCopy(Lcom/android/server/pm/InstallRequest;)V
+PLcom/android/server/pm/InstallingSession;->processApkInstallRequests(Ljava/util/List;Z)V
+PLcom/android/server/pm/InstallingSession;->processInstallRequests(Ljava/util/List;Z)V
+PLcom/android/server/pm/InstantAppRegistry$$ExternalSyntheticLambda2;-><init>(ILjava/lang/Object;)V
HSPLcom/android/server/pm/InstantAppRegistry$1;-><init>(Lcom/android/server/pm/InstantAppRegistry;)V
-HSPLcom/android/server/pm/InstantAppRegistry$2;-><init>(Lcom/android/server/pm/InstantAppRegistry;Lcom/android/server/pm/InstantAppRegistry;Lcom/android/server/utils/Watchable;)V
-HSPLcom/android/server/pm/InstantAppRegistry$2;->createSnapshot()Lcom/android/server/pm/InstantAppRegistry;
HSPLcom/android/server/pm/InstantAppRegistry$2;->createSnapshot()Ljava/lang/Object;
HSPLcom/android/server/pm/InstantAppRegistry$CookiePersistence;-><init>(Lcom/android/server/pm/InstantAppRegistry;Landroid/os/Looper;)V
-HSPLcom/android/server/pm/InstantAppRegistry;->-$$Nest$fgetmWatchable(Lcom/android/server/pm/InstantAppRegistry;)Lcom/android/server/utils/WatchableImpl;
-HSPLcom/android/server/pm/InstantAppRegistry;-><init>(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/DeletePackageHelper;)V
+HSPLcom/android/server/pm/InstantAppRegistry;-><init>(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;Lcom/android/server/pm/UserManagerService$LocalService;Lcom/android/server/pm/DeletePackageHelper;)V
HSPLcom/android/server/pm/InstantAppRegistry;-><init>(Lcom/android/server/pm/InstantAppRegistry;)V
-HSPLcom/android/server/pm/InstantAppRegistry;-><init>(Lcom/android/server/pm/InstantAppRegistry;Lcom/android/server/pm/InstantAppRegistry-IA;)V
-HSPLcom/android/server/pm/InstantAppRegistry;->makeCache()Lcom/android/server/utils/SnapshotCache;
+PLcom/android/server/pm/InstantAppRegistry;->getInstantApplicationDir(ILjava/lang/String;)Ljava/io/File;
+PLcom/android/server/pm/InstantAppRegistry;->isInstantAccessGranted(III)Z
+PLcom/android/server/pm/InstantAppRegistry;->parseMetadataFile(Ljava/io/File;)Lcom/android/server/pm/InstantAppRegistry$UninstalledInstantAppState;
+PLcom/android/server/pm/InstantAppRegistry;->peekInstantCookieFile(ILjava/lang/String;)Ljava/io/File;
+PLcom/android/server/pm/InstantAppRegistry;->propagateInstantAppPermissionsIfNeeded(Lcom/android/server/pm/pkg/AndroidPackage;I)V
HSPLcom/android/server/pm/InstantAppRegistry;->registerObserver(Lcom/android/server/utils/Watcher;)V
-HSPLcom/android/server/pm/InstantAppRegistry;->snapshot()Lcom/android/server/pm/InstantAppRegistry;
+PLcom/android/server/pm/InstantAppRegistry;->removeUninstalledInstantAppStateLPw(ILjava/util/function/Predicate;)V
PLcom/android/server/pm/InstantAppResolverConnection$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/InstantAppResolverConnection;)V
PLcom/android/server/pm/InstantAppResolverConnection$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/pm/InstantAppResolverConnection$GetInstantAppResolveInfoCaller$1;-><init>(Lcom/android/server/pm/InstantAppResolverConnection$GetInstantAppResolveInfoCaller;)V
PLcom/android/server/pm/InstantAppResolverConnection$GetInstantAppResolveInfoCaller;-><init>()V
PLcom/android/server/pm/InstantAppResolverConnection$MyServiceConnection;-><init>(Lcom/android/server/pm/InstantAppResolverConnection;)V
-PLcom/android/server/pm/InstantAppResolverConnection$MyServiceConnection;-><init>(Lcom/android/server/pm/InstantAppResolverConnection;Lcom/android/server/pm/InstantAppResolverConnection$MyServiceConnection-IA;)V
PLcom/android/server/pm/InstantAppResolverConnection$MyServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-PLcom/android/server/pm/InstantAppResolverConnection;->$r8$lambda$66W2s2mMKe4pk_xXCScH9RCqav8(Lcom/android/server/pm/InstantAppResolverConnection;)V
-PLcom/android/server/pm/InstantAppResolverConnection;->-$$Nest$fgetmBindState(Lcom/android/server/pm/InstantAppResolverConnection;)I
-PLcom/android/server/pm/InstantAppResolverConnection;->-$$Nest$fgetmLock(Lcom/android/server/pm/InstantAppResolverConnection;)Ljava/lang/Object;
-PLcom/android/server/pm/InstantAppResolverConnection;->-$$Nest$fputmRemoteInstance(Lcom/android/server/pm/InstantAppResolverConnection;Landroid/app/IInstantAppResolver;)V
-PLcom/android/server/pm/InstantAppResolverConnection;->-$$Nest$sfgetCALL_SERVICE_TIMEOUT_MS()J
-PLcom/android/server/pm/InstantAppResolverConnection;->-$$Nest$sfgetDEBUG_INSTANT()Z
+PLcom/android/server/pm/InstantAppResolverConnection$MyServiceConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V
PLcom/android/server/pm/InstantAppResolverConnection;-><clinit>()V
-PLcom/android/server/pm/InstantAppResolverConnection;-><init>(Landroid/content/Context;Landroid/content/ComponentName;Ljava/lang/String;)V
+PLcom/android/server/pm/InstantAppResolverConnection;-><init>(Landroid/content/Context;Landroid/content/ComponentName;)V
PLcom/android/server/pm/InstantAppResolverConnection;->bind(Ljava/lang/String;)Landroid/app/IInstantAppResolver;
-PLcom/android/server/pm/InstantAppResolverConnection;->lambda$optimisticBind$0()V
-PLcom/android/server/pm/InstantAppResolverConnection;->optimisticBind()V
+PLcom/android/server/pm/InstantAppResolverConnection;->handleBinderDiedLocked()V
PLcom/android/server/pm/InstantAppResolverConnection;->waitForBindLocked(Ljava/lang/String;)V
-PLcom/android/server/pm/InstructionSets;-><clinit>()V
-HPLcom/android/server/pm/InstructionSets;->getDexCodeInstructionSet(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/pm/InstructionSets;->getPreferredInstructionSet()Ljava/lang/String;
-HPLcom/android/server/pm/InstructionSets;->getPrimaryInstructionSet(Lcom/android/server/pm/PackageAbiHelper$Abis;)Ljava/lang/String;
+HSPLcom/android/server/pm/InstructionSets;-><clinit>()V
+PLcom/android/server/pm/InstructionSets;->getAppDexInstructionSets(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
+PLcom/android/server/pm/KeySetHandle;-><init>(J)V
HSPLcom/android/server/pm/KeySetHandle;-><init>(JI)V
-HSPLcom/android/server/pm/KeySetHandle;->getRefCountLPr()I
-HSPLcom/android/server/pm/KeySetHandle;->setRefCountLPw(I)V
-HSPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;-><init>(Lcom/android/server/pm/KeySetManagerService;JILjava/security/PublicKey;)V
-HSPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;-><init>(Lcom/android/server/pm/KeySetManagerService;JILjava/security/PublicKey;Lcom/android/server/pm/KeySetManagerService$PublicKeyHandle-IA;)V
-PLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;->getKey()Ljava/security/PublicKey;
-HSPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;->incrRefCountLPw()V
+PLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;-><init>(Ljava/security/PublicKey;)V
+HSPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;-><init>(Ljava/security/PublicKey;I)V
HSPLcom/android/server/pm/KeySetManagerService;-><init>(Lcom/android/server/pm/KeySetManagerService;Lcom/android/server/utils/WatchedArrayMap;)V
HSPLcom/android/server/pm/KeySetManagerService;-><init>(Lcom/android/server/utils/WatchedArrayMap;)V
-HPLcom/android/server/pm/KeySetManagerService;->addDefinedKeySetsToPackageLPw(Lcom/android/server/pm/PackageSetting;Ljava/util/Map;)V
-HSPLcom/android/server/pm/KeySetManagerService;->addRefCountsFromSavedPackagesLPw(Landroid/util/ArrayMap;)V
-HPLcom/android/server/pm/KeySetManagerService;->addScannedPackageLPw(Lcom/android/server/pm/pkg/AndroidPackage;)V
-HPLcom/android/server/pm/KeySetManagerService;->addSigningKeySetToPackageLPw(Lcom/android/server/pm/PackageSetting;Landroid/util/ArraySet;)V
-HPLcom/android/server/pm/KeySetManagerService;->addUpgradeKeySetsToPackageLPw(Lcom/android/server/pm/PackageSetting;Ljava/util/Set;)V
-HPLcom/android/server/pm/KeySetManagerService;->assertScannedPackageValid(Lcom/android/server/pm/pkg/AndroidPackage;)V
-HPLcom/android/server/pm/KeySetManagerService;->dumpLPr(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/pm/DumpState;)V
-HPLcom/android/server/pm/KeySetManagerService;->getPublicKeysFromKeySetLPr(J)Landroid/util/ArraySet;
-HSPLcom/android/server/pm/KeySetManagerService;->readKeySetListLPw(Lcom/android/modules/utils/TypedXmlPullParser;)V
-HSPLcom/android/server/pm/KeySetManagerService;->readKeySetsLPw(Lcom/android/modules/utils/TypedXmlPullParser;Landroid/util/ArrayMap;)V
-HSPLcom/android/server/pm/KeySetManagerService;->readKeysLPw(Lcom/android/modules/utils/TypedXmlPullParser;)V
-HSPLcom/android/server/pm/KeySetManagerService;->readPublicKeyLPw(Lcom/android/modules/utils/TypedXmlPullParser;)V
-PLcom/android/server/pm/KeySetManagerService;->shouldCheckUpgradeKeySetLocked(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/pkg/SharedUserApi;I)Z
-PLcom/android/server/pm/KeySetManagerService;->writeKeySetManagerServiceLPr(Lcom/android/modules/utils/TypedXmlSerializer;)V
-HPLcom/android/server/pm/KeySetManagerService;->writeKeySetsLPr(Lcom/android/modules/utils/TypedXmlSerializer;)V
-HPLcom/android/server/pm/KeySetManagerService;->writePublicKeysLPr(Lcom/android/modules/utils/TypedXmlSerializer;)V
-HSPLcom/android/server/pm/KnownPackages;-><init>(Lcom/android/server/pm/DefaultAppProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pm/KeySetManagerService;->addKeySetLPw(Landroid/util/ArraySet;)Lcom/android/server/pm/KeySetHandle;
+HSPLcom/android/server/pm/KeySetManagerService;->addScannedPackageLPw(Lcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/pm/KeySetManagerService;->decrementKeySetLPw(J)V
+PLcom/android/server/pm/KeySetManagerService;->decrementPublicKeyLPw(J)V
+HSPLcom/android/server/pm/KeySetManagerService;->getPublicKeysFromKeySetLPr(J)Landroid/util/ArraySet;
+HSPLcom/android/server/pm/KeySetManagerService;->readKeySetsLPw(Landroid/util/ArrayMap;Lcom/android/modules/utils/TypedXmlPullParser;)V
+HSPLcom/android/server/pm/KeySetManagerService;->shouldCheckUpgradeKeySetLocked(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;I)Z
+HPLcom/android/server/pm/KeySetManagerService;->writeKeySetManagerServiceLPr(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/security/PublicKey;Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;,Lcom/android/org/conscrypt/OpenSSLRSAPublicKey;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
+HSPLcom/android/server/pm/KnownPackages;-><init>(Lcom/android/server/pm/DefaultAppProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
HSPLcom/android/server/pm/KnownPackages;->getKnownPackageNames(Lcom/android/server/pm/Computer;II)[Ljava/lang/String;
-PLcom/android/server/pm/LauncherAppsService$BroadcastCookie;-><init>(Landroid/os/UserHandle;Ljava/lang/String;II)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Landroid/os/UserHandle;)V
-HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/LauncherAppsService$BroadcastCookie;-><init>(IILandroid/os/UserHandle;Ljava/lang/String;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Ljava/lang/String;ILandroid/os/UserHandle;)V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$$ExternalSyntheticLambda2;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Ljava/util/function/BiConsumer;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Landroid/os/UserHandle;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$$ExternalSyntheticLambda7;->accept(Ljava/lang/Object;)V
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$LocalService;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)V
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;Ljava/lang/String;I)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->$r8$lambda$vtWdDInHNEcUSDBzImmSY0mx-XU(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;Ljava/lang/String;I)V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor-IA;)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->lambda$onShortcutChanged$0(Ljava/lang/String;I)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onPackageAdded(Ljava/lang/String;I)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onPackageChanged(Ljava/lang/String;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onShortcutChanged(Ljava/lang/String;I)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onShortcutChangedInner(Ljava/lang/String;I)V
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageCallbackList;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageLoadingProgressCallback;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Ljava/lang/String;Landroid/os/UserHandle;)V
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageRemovedListener;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageRemovedListener;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageRemovedListener-IA;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageRemovedListener;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$SecureSettingsObserver;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$SecureSettingsObserver;->getPrivateProfile()Landroid/os/UserHandle;
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$ShortcutChangeHandler;-><init>(Lcom/android/server/pm/UserManagerInternal;)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->$r8$lambda$kx0EDd9EHlGq1e2ICkr064uuOvo(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Landroid/os/UserHandle;Lcom/android/server/pm/pkg/AndroidPackage;)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->-$$Nest$fgetmListeners(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageCallbackList;
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->-$$Nest$fgetmShortcutServiceInternal(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)Landroid/content/pm/ShortcutServiceInternal;
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->-$$Nest$misEnabledProfileOf(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Landroid/os/UserHandle;Landroid/os/UserHandle;Ljava/lang/String;)Z
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->-$$Nest$misPackageVisibleToListener(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Ljava/lang/String;Lcom/android/server/pm/LauncherAppsService$BroadcastCookie;Landroid/os/UserHandle;)Z
-HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$ShortcutChangeHandler;->onShortcutEvent(Ljava/lang/String;Ljava/util/List;Landroid/os/UserHandle;Z)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$ShortcutChangeHandler;->onShortcutsAddedOrUpdated(Ljava/lang/String;Ljava/util/List;Landroid/os/UserHandle;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$ShortcutChangeHandler;->onShortcutsRemoved(Ljava/lang/String;Ljava/util/List;Landroid/os/UserHandle;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;-><init>(Landroid/content/Context;)V
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->addOnAppsChangedListener(Ljava/lang/String;Landroid/content/pm/IOnAppsChangedListener;)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile(IIIILjava/lang/String;)Z
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile(ILjava/lang/String;)Z
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->ensureShortcutPermission(IILjava/lang/String;)V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile(ILjava/lang/String;)Z+]Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->ensureShortcutPermission(Ljava/lang/String;)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->generateLauncherActivitiesForArchivedApp(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List;
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getActivitiesForArchivedApp(Ljava/lang/String;Landroid/os/UserHandle;Landroid/content/pm/ParceledListSlice;)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getApplicationInfoListForAllArchivedApps(Landroid/os/UserHandle;)Ljava/util/List;
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->forEachViewCaptureWindow(Ljava/util/function/BiConsumer;)V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->generateLauncherActivitiesForArchivedApp(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getApplicationInfo(Ljava/lang/String;Ljava/lang/String;ILandroid/os/UserHandle;)Landroid/content/pm/ApplicationInfo;
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getCallingUserId()I
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getLauncherActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getLauncherActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;+]Landroid/app/admin/DevicePolicyManager;Landroid/app/admin/DevicePolicyManager;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/LauncherActivityInfoInternal;Landroid/content/pm/LauncherActivityInfoInternal;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/pm/ParceledListSlice;Landroid/content/pm/ParceledListSlice;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;]Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getShortcuts(Ljava/lang/String;Landroid/content/pm/ShortcutQueryWrapper;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->hasDefaultEnableLauncherActivity(Ljava/lang/String;)Z
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectBinderCallingPid()I
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectBinderCallingUid()I
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectCallingUserId()I
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectClearCallingIdentity()J
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectRestoreCallingIdentity(J)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isEnabledProfileOf(Landroid/os/UserHandle;Landroid/os/UserHandle;Ljava/lang/String;)Z
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isManagedProfileAdmin(Landroid/os/UserHandle;Ljava/lang/String;)Z
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isPackageVisibleToListener(Ljava/lang/String;Lcom/android/server/pm/LauncherAppsService$BroadcastCookie;Landroid/os/UserHandle;)Z
-HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->lambda$registerLoadingProgressForIncrementalApps$6(Landroid/os/UserHandle;Lcom/android/server/pm/pkg/AndroidPackage;)V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isActivityEnabled(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Z
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isEnabledProfileOf(Landroid/os/UserHandle;Lcom/android/server/pm/LauncherAppsService$BroadcastCookie;Ljava/lang/String;)Z
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isHiddenProfile(Landroid/os/UserHandle;)Z
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isPackageVisibleToListener(Landroid/os/UserHandle;Lcom/android/server/pm/LauncherAppsService$BroadcastCookie;Ljava/lang/String;)Z
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->postToPackageMonitorHandler(Ljava/lang/Runnable;)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryActivitiesForUser(Ljava/lang/String;Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
-HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryIntentLauncherActivities(Landroid/content/Intent;ILandroid/os/UserHandle;)Ljava/util/List;
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->registerLoadingProgressForIncrementalApps()V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->requestsPermissions(Lcom/android/server/pm/pkg/AndroidPackage;)Z
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->shouldShowSyntheticActivity(Landroid/os/UserHandle;Landroid/content/pm/ApplicationInfo;)Z
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryActivitiesForUser(Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryIntentLauncherActivities(Landroid/content/Intent;ILandroid/os/UserHandle;)Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->shouldShowSyntheticActivity(Landroid/os/UserHandle;Landroid/content/pm/ApplicationInfo;)Z+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->startWatchingPackageBroadcasts()V
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->verifyCallingPackage(Ljava/lang/String;)V
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->verifyCallingPackage(Ljava/lang/String;I)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsServiceInternal;-><init>()V
PLcom/android/server/pm/LauncherAppsService;-><clinit>()V
PLcom/android/server/pm/LauncherAppsService;-><init>(Landroid/content/Context;)V
PLcom/android/server/pm/LauncherAppsService;->onStart()V
PLcom/android/server/pm/ModuleInfoProvider;-><init>(Landroid/content/Context;)V
-PLcom/android/server/pm/ModuleInfoProvider;->getInstalledModules(I)Ljava/util/List;
PLcom/android/server/pm/ModuleInfoProvider;->getModuleInfo(Ljava/lang/String;I)Landroid/content/pm/ModuleInfo;
-PLcom/android/server/pm/ModuleInfoProvider;->getPackageManager()Landroid/content/pm/IPackageManager;
PLcom/android/server/pm/ModuleInfoProvider;->loadModuleMetadata(Landroid/content/res/XmlResourceParser;Landroid/content/res/Resources;)V
-PLcom/android/server/pm/ModuleInfoProvider;->systemReady()V
HSPLcom/android/server/pm/MovePackageHelper$MoveCallbacks;-><init>(Landroid/os/Looper;)V
+PLcom/android/server/pm/OriginInfo;-><init>(Ljava/io/File;ZZ)V
PLcom/android/server/pm/OtaDexoptService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)V
-PLcom/android/server/pm/OtaDexoptService;->main(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/OtaDexoptService;
-PLcom/android/server/pm/OtaDexoptService;->moveAbArtifacts(Lcom/android/server/pm/Installer;)V
-HPLcom/android/server/pm/PackageAbiHelper$Abis;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;-><init>(Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;->applyTo(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;)V
-HSPLcom/android/server/pm/PackageAbiHelperImpl;-><init>()V
-HPLcom/android/server/pm/PackageAbiHelperImpl;->calculateBundledApkRoot(Ljava/lang/String;)Ljava/lang/String;
-HPLcom/android/server/pm/PackageAbiHelperImpl;->deriveCodePathName(Ljava/lang/String;)Ljava/lang/String;
-HPLcom/android/server/pm/PackageAbiHelperImpl;->deriveNativeLibraryPaths(Lcom/android/server/pm/PackageAbiHelper$Abis;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;ZZ)Lcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;
-HPLcom/android/server/pm/PackageAbiHelperImpl;->deriveNativeLibraryPaths(Lcom/android/server/pm/pkg/AndroidPackage;ZZLjava/io/File;)Lcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;
+PLcom/android/server/pm/OtaDexoptService;->main(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)V
+HSPLcom/android/server/pm/PackageAbiHelper$Abis;-><init>(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;-><init>(Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;->applyTo(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;)V
+PLcom/android/server/pm/PackageAbiHelperImpl;->calculateBundledApkRoot(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/pm/PackageAbiHelperImpl;->deriveCodePathName(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageAbiHelperImpl;->deriveNativeLibraryPaths(Lcom/android/server/pm/PackageAbiHelper$Abis;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;ZZ)Lcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;
+HSPLcom/android/server/pm/PackageAbiHelperImpl;->deriveNativeLibraryPaths(Lcom/android/server/pm/pkg/AndroidPackage;ZZLjava/io/File;)Lcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;
PLcom/android/server/pm/PackageAbiHelperImpl;->derivePackageAbi(Lcom/android/server/pm/pkg/AndroidPackage;ZZLjava/lang/String;Ljava/io/File;)Landroid/util/Pair;
PLcom/android/server/pm/PackageAbiHelperImpl;->getAdjustedAbiForSharedUser(Landroid/util/ArraySet;Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/lang/String;
-PLcom/android/server/pm/PackageAbiHelperImpl;->shouldExtractLibs(Lcom/android/server/pm/pkg/AndroidPackage;ZZ)Z
+PLcom/android/server/pm/PackageAbiHelperImpl;->maybeThrowExceptionForMultiArchCopy(ILjava/lang/String;Z)V
HSPLcom/android/server/pm/PackageArchiver;-><clinit>()V
PLcom/android/server/pm/PackageArchiver;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)V
-HSPLcom/android/server/pm/PackageArchiver;->isArchived(Lcom/android/server/pm/pkg/PackageUserState;)Z
-PLcom/android/server/pm/PackageArchiver;->isArchivingEnabled()Z
-HSPLcom/android/server/pm/PackageDexOptimizer$1;-><init>()V
-HSPLcom/android/server/pm/PackageDexOptimizer$1;->getPowerManager(Landroid/content/Context;)Landroid/os/PowerManager;
+PLcom/android/server/pm/PackageArchiver;->clearArchiveState(Lcom/android/server/pm/PackageSetting;I)V
+HSPLcom/android/server/pm/PackageArchiver;->isArchived(Lcom/android/server/pm/pkg/PackageUserState;)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;
HSPLcom/android/server/pm/PackageDexOptimizer;-><clinit>()V
-HSPLcom/android/server/pm/PackageDexOptimizer;-><init>(Lcom/android/server/pm/Installer;Ljava/lang/Object;Landroid/content/Context;Ljava/lang/String;)V
-HSPLcom/android/server/pm/PackageDexOptimizer;-><init>(Lcom/android/server/pm/PackageDexOptimizer$Injector;Lcom/android/server/pm/Installer;Ljava/lang/Object;Landroid/content/Context;Ljava/lang/String;)V
-PLcom/android/server/pm/PackageDexOptimizer;->systemReady()V
+HSPLcom/android/server/pm/PackageDexOptimizer;-><init>(Lcom/android/server/pm/Installer;Lcom/android/server/pm/PackageManagerTracedLock;Landroid/content/Context;Ljava/lang/String;)V
+HSPLcom/android/server/pm/PackageDexOptimizer;-><init>(Lcom/android/server/pm/PackageDexOptimizer$Injector;Lcom/android/server/pm/Installer;Lcom/android/server/pm/PackageManagerTracedLock;Landroid/content/Context;Ljava/lang/String;)V
+PLcom/android/server/pm/PackageFreezer;-><init>(Ljava/lang/String;ILjava/lang/String;Lcom/android/server/pm/PackageManagerService;ILcom/android/server/pm/InstallRequest;Z)V
+PLcom/android/server/pm/PackageFreezer;->close()V
+PLcom/android/server/pm/PackageFreezer;->finalize()V
HSPLcom/android/server/pm/PackageHandler;-><init>(Landroid/os/Looper;Lcom/android/server/pm/PackageManagerService;)V
PLcom/android/server/pm/PackageHandler;->doHandleMessage(Landroid/os/Message;)V
PLcom/android/server/pm/PackageHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/pm/PackageInstallerService$$ExternalSyntheticLambda4;-><init>(I)V
-PLcom/android/server/pm/PackageInstallerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/pm/PackageInstallerService;Lcom/android/server/pm/Computer;I)V
-PLcom/android/server/pm/PackageInstallerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/pm/PackageInstallerService;)V
-PLcom/android/server/pm/PackageInstallerService$$ExternalSyntheticLambda6;->get()Ljava/lang/Object;
-PLcom/android/server/pm/PackageInstallerService$1;-><init>()V
+PLcom/android/server/pm/PackageInstallerHistoricalSession;-><init>(IIILjava/lang/String;Lcom/android/server/pm/InstallSource;IJJJLjava/io/File;Ljava/lang/String;FFZZZZZZIIILjava/lang/String;Landroid/content/pm/PackageInstaller$SessionParams;I[IZZZILjava/lang/String;Landroid/content/pm/PackageInstaller$PreapprovalDetails;Landroid/content/pm/verify/domain/DomainSet;Ljava/lang/String;)V
+PLcom/android/server/pm/PackageInstallerHistoricalSession;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/pm/PackageInstallerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/PackageInstallerService;Lcom/android/server/pm/Computer;II)V
+PLcom/android/server/pm/PackageInstallerService$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/PackageInstallerService$$ExternalSyntheticLambda6;-><init>(I)V
+PLcom/android/server/pm/PackageInstallerService$$ExternalSyntheticLambda6;->test(I)Z
+PLcom/android/server/pm/PackageInstallerService$$ExternalSyntheticLambda8;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/pm/PackageInstallerService$$ExternalSyntheticLambda8;->get()Ljava/lang/Object;
PLcom/android/server/pm/PackageInstallerService$1;->accept(Ljava/io/File;Ljava/lang/String;)Z
PLcom/android/server/pm/PackageInstallerService$BroadcastCookie;-><init>(ILjava/util/function/IntPredicate;)V
PLcom/android/server/pm/PackageInstallerService$Callbacks;-><init>(Lcom/android/server/pm/PackageInstallerService;Landroid/os/Looper;)V
-PLcom/android/server/pm/PackageInstallerService$Callbacks;->register(Landroid/content/pm/IPackageInstallerCallback;Lcom/android/server/pm/PackageInstallerService$BroadcastCookie;)V
+PLcom/android/server/pm/PackageInstallerService$Callbacks;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/pm/PackageInstallerService$Callbacks;->invokeCallback(Landroid/content/pm/IPackageInstallerCallback;Landroid/os/Message;)V
+PLcom/android/server/pm/PackageInstallerService$InternalCallback$1;-><init>(Lcom/android/server/pm/PackageInstallerService$InternalCallback;Lcom/android/server/pm/PackageInstallerSession;Z)V
+PLcom/android/server/pm/PackageInstallerService$InternalCallback$1;->run()V
PLcom/android/server/pm/PackageInstallerService$InternalCallback;-><init>(Lcom/android/server/pm/PackageInstallerService;)V
+PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionChanged(Lcom/android/server/pm/PackageInstallerSession;)V
PLcom/android/server/pm/PackageInstallerService$Lifecycle;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageInstallerService;)V
PLcom/android/server/pm/PackageInstallerService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/pm/PackageInstallerService$Lifecycle;->onStart()V
-PLcom/android/server/pm/PackageInstallerService;->$r8$lambda$wY7L0Z422az4MHHhP9QFuryN2S8(Lcom/android/server/pm/PackageInstallerService;)Ljava/lang/Boolean;
-PLcom/android/server/pm/PackageInstallerService;->-$$Nest$monBroadcastReady(Lcom/android/server/pm/PackageInstallerService;)V
-PLcom/android/server/pm/PackageInstallerService;-><clinit>()V
-HPLcom/android/server/pm/PackageInstallerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Ljava/util/function/Supplier;)V
+PLcom/android/server/pm/PackageInstallerService$ParentChildSessionMap;-><init>()V
+PLcom/android/server/pm/PackageInstallerService$ParentChildSessionMap;->dump(Ljava/lang/String;Lcom/android/internal/util/IndentingPrintWriter;)V
+HSPLcom/android/server/pm/PackageInstallerService;-><clinit>()V
+PLcom/android/server/pm/PackageInstallerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda41;)V
+PLcom/android/server/pm/PackageInstallerService;->addHistoricalSessionLocked(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/PackageInstallerService;->allocateSessionIdLocked()I
+PLcom/android/server/pm/PackageInstallerService;->createSession(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;Ljava/lang/String;I)I
+PLcom/android/server/pm/PackageInstallerService;->createSessionInternal(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;Ljava/lang/String;II)I
+PLcom/android/server/pm/PackageInstallerService;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
PLcom/android/server/pm/PackageInstallerService;->expireSessionsLocked()V
+PLcom/android/server/pm/PackageInstallerService;->getAllSessions(I)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/PackageInstallerService;->getExistingDraftSessionIdInternal(ILandroid/content/pm/PackageInstaller$SessionParams;I)I
PLcom/android/server/pm/PackageInstallerService;->getMySessions(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/PackageInstallerService;->getSession(I)Lcom/android/server/pm/PackageInstallerSession;
+HPLcom/android/server/pm/PackageInstallerService;->getSessionInfo(I)Landroid/content/pm/PackageInstaller$SessionInfo;
PLcom/android/server/pm/PackageInstallerService;->getStagedSessions()Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/PackageInstallerService;->getStagingDirsOnVolume(Ljava/lang/String;)Landroid/util/ArraySet;
-PLcom/android/server/pm/PackageInstallerService;->getStagingManager()Lcom/android/server/pm/StagingManager;
-PLcom/android/server/pm/PackageInstallerService;->getTmpSessionDir(Ljava/lang/String;)Ljava/io/File;
-HPLcom/android/server/pm/PackageInstallerService;->isStageName(Ljava/lang/String;)Z
-PLcom/android/server/pm/PackageInstallerService;->lambda$new$0()Ljava/lang/Boolean;
-PLcom/android/server/pm/PackageInstallerService;->newArraySet([Ljava/lang/Object;)Landroid/util/ArraySet;
-PLcom/android/server/pm/PackageInstallerService;->onBroadcastReady()V
+PLcom/android/server/pm/PackageInstallerService;->isCallingUidOwner(Lcom/android/server/pm/PackageInstallerSession;)Z
+HSPLcom/android/server/pm/PackageInstallerService;->isStageName(Ljava/lang/String;)Z
+PLcom/android/server/pm/PackageInstallerService;->openSession(I)Landroid/content/pm/IPackageInstallerSession;
+PLcom/android/server/pm/PackageInstallerService;->openSessionInternal(I)Lcom/android/server/pm/PackageInstallerSession;
+PLcom/android/server/pm/PackageInstallerService;->prepareStageDir(Ljava/io/File;)V
PLcom/android/server/pm/PackageInstallerService;->readSessionsLocked()V
PLcom/android/server/pm/PackageInstallerService;->reconcileStagesLocked(Ljava/lang/String;)V
PLcom/android/server/pm/PackageInstallerService;->registerCallback(Landroid/content/pm/IPackageInstallerCallback;I)V
-PLcom/android/server/pm/PackageInstallerService;->registerCallback(Landroid/content/pm/IPackageInstallerCallback;Ljava/util/function/IntPredicate;)V
+PLcom/android/server/pm/PackageInstallerService;->removeActiveSession(Lcom/android/server/pm/PackageInstallerSession;)V
PLcom/android/server/pm/PackageInstallerService;->removeStagingDirs(Landroid/util/ArraySet;)V
PLcom/android/server/pm/PackageInstallerService;->restoreAndApplyStagedSessionIfNeeded()V
-PLcom/android/server/pm/PackageInstallerService;->systemReady()V
-PLcom/android/server/pm/PackageInstallerService;->writeSessions()Z
+PLcom/android/server/pm/PackageInstallerService;->shouldFilterSession(Lcom/android/server/pm/Computer;ILandroid/content/pm/PackageInstaller$SessionInfo;)Z
+PLcom/android/server/pm/PackageInstallerService;->updateSessionAppIcon(ILandroid/graphics/Bitmap;)V
+PLcom/android/server/pm/PackageInstallerService;->updateSessionAppLabel(ILjava/lang/String;)V
+PLcom/android/server/pm/PackageInstallerSession$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/PackageInstallerSession$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/pm/PackageInstallerSession$$ExternalSyntheticLambda10;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/pm/PackageInstallerSession$$ExternalSyntheticLambda10;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/PackageInstallerSession$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/pm/PackageInstallerSession;ILjava/lang/String;)V
+PLcom/android/server/pm/PackageInstallerSession$$ExternalSyntheticLambda12;->run()V
+PLcom/android/server/pm/PackageInstallerSession$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/pm/PackageInstallerSession;Landroid/system/Int64Ref;)V
+PLcom/android/server/pm/PackageInstallerSession$$ExternalSyntheticLambda4;->onProgress(J)V
+PLcom/android/server/pm/PackageInstallerSession$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/PackageInstallerSession$$ExternalSyntheticLambda8;->onResult(ILjava/lang/String;)V
+PLcom/android/server/pm/PackageInstallerSession$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/pm/PackageInstallerSession;Ljava/util/List;)V
+PLcom/android/server/pm/PackageInstallerSession$$ExternalSyntheticLambda9;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/pm/PackageInstallerSession$1;-><init>(I)V
+PLcom/android/server/pm/PackageInstallerSession$1;->accept(Ljava/io/File;)Z
+PLcom/android/server/pm/PackageInstallerSession$5;-><init>(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/PackageInstallerSession$5;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/pm/PackageInstallerSession$6;-><init>(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/PackageInstallerSession$6;->onResult(Ljava/lang/Object;)V
+PLcom/android/server/pm/PackageInstallerSession$7;-><init>(Lcom/android/server/pm/PackageInstallerSession;Ljava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/pm/PackageInstallerSession$7;->onPackageInstalled(Ljava/lang/String;ILjava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/pm/PackageInstallerSession$InstallResult;-><init>(Lcom/android/server/pm/PackageInstallerSession;Landroid/os/Bundle;)V
+PLcom/android/server/pm/PackageInstallerSession$PerFileChecksum;-><init>([Landroid/content/pm/Checksum;[B)V
+HSPLcom/android/server/pm/PackageInstallerSession;-><clinit>()V
+PLcom/android/server/pm/PackageInstallerSession;-><init>(Lcom/android/server/pm/PackageInstallerService$InternalCallback;Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageInstallerService;Lcom/android/server/pm/SilentUpdatePolicy;Landroid/os/Looper;Lcom/android/server/pm/StagingManager;IIILcom/android/server/pm/InstallSource;Landroid/content/pm/PackageInstaller$SessionParams;JJLjava/io/File;Ljava/lang/String;[Landroid/content/pm/InstallationFile;Landroid/util/ArrayMap;ZZZZ[IIZZZILjava/lang/String;Landroid/content/pm/verify/domain/DomainSet;Lcom/android/server/pm/InstallDependencyHelper;)V
+PLcom/android/server/pm/PackageInstallerSession;->abandon()V
+PLcom/android/server/pm/PackageInstallerSession;->assertCallerIsOwnerOrRoot()V
+PLcom/android/server/pm/PackageInstallerSession;->assertCallerIsOwnerOrRootOrSystem()V
+PLcom/android/server/pm/PackageInstallerSession;->assertCallerIsOwnerRootOrVerifier()V
+PLcom/android/server/pm/PackageInstallerSession;->assertCanWrite(Z)V
+PLcom/android/server/pm/PackageInstallerSession;->assertNoWriteFileTransfersOpenLocked()V
+PLcom/android/server/pm/PackageInstallerSession;->assertNotChild(Ljava/lang/String;)V
+PLcom/android/server/pm/PackageInstallerSession;->assertNotLocked(Ljava/lang/String;)V
+PLcom/android/server/pm/PackageInstallerSession;->assertPackageConsistentLocked(Ljava/lang/String;JLjava/lang/String;)V
+PLcom/android/server/pm/PackageInstallerSession;->assertPreparedAndNotCommittedOrDestroyedLocked(Ljava/lang/String;)V
+PLcom/android/server/pm/PackageInstallerSession;->assertPreparedAndNotDestroyedLocked(Ljava/lang/String;)V
+PLcom/android/server/pm/PackageInstallerSession;->assertPreparedAndNotSealedLocked(Ljava/lang/String;)V
+PLcom/android/server/pm/PackageInstallerSession;->close()V
+PLcom/android/server/pm/PackageInstallerSession;->commit(Landroid/content/IntentSender;Z)V
+HPLcom/android/server/pm/PackageInstallerSession;->computeProgressLocked(Z)V
+PLcom/android/server/pm/PackageInstallerSession;->createInstallingSession(Ljava/util/concurrent/CompletableFuture;)Lcom/android/server/pm/InstallingSession;
+PLcom/android/server/pm/PackageInstallerSession;->deactivate()V
+PLcom/android/server/pm/PackageInstallerSession;->destroy(Ljava/lang/String;)V
+PLcom/android/server/pm/PackageInstallerSession;->destroyInternal(Ljava/lang/String;)V
+PLcom/android/server/pm/PackageInstallerSession;->dispatchSessionFinished(ILjava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/pm/PackageInstallerSession;->doWriteInternal(Ljava/lang/String;JJLandroid/os/ParcelFileDescriptor;)Landroid/os/ParcelFileDescriptor;
+PLcom/android/server/pm/PackageInstallerSession;->extractNativeLibraries()V
+PLcom/android/server/pm/PackageInstallerSession;->extractNativeLibraries(Landroid/content/pm/parsing/PackageLite;Ljava/io/File;Ljava/lang/String;Z)V
+PLcom/android/server/pm/PackageInstallerSession;->filterFiles(Ljava/io/File;[Ljava/lang/String;Ljava/io/FileFilter;)Ljava/util/ArrayList;
+PLcom/android/server/pm/PackageInstallerSession;->generateInfoForCaller(IZ)Landroid/content/pm/PackageInstaller$SessionInfo;
+HPLcom/android/server/pm/PackageInstallerSession;->generateInfoInternal(ZZ)Landroid/content/pm/PackageInstaller$SessionInfo;
+PLcom/android/server/pm/PackageInstallerSession;->getAddedApksLocked()Ljava/util/List;
+PLcom/android/server/pm/PackageInstallerSession;->getChildSessionIdsLocked()[I
+PLcom/android/server/pm/PackageInstallerSession;->getChildSessions()Ljava/util/List;
+PLcom/android/server/pm/PackageInstallerSession;->getChildSessionsLocked()Ljava/util/List;
+PLcom/android/server/pm/PackageInstallerSession;->getDataLoaderParams()Landroid/content/pm/DataLoaderParamsParcel;
+PLcom/android/server/pm/PackageInstallerSession;->getInstallSource()Lcom/android/server/pm/InstallSource;
+PLcom/android/server/pm/PackageInstallerSession;->getInstallationFilesLocked()[Landroid/content/pm/InstallationFile;
+HPLcom/android/server/pm/PackageInstallerSession;->getNames()[Ljava/lang/String;
+PLcom/android/server/pm/PackageInstallerSession;->getNamesLocked()[Ljava/lang/String;
+PLcom/android/server/pm/PackageInstallerSession;->getOrParsePackageLiteLocked(Ljava/io/File;)Landroid/content/pm/parsing/PackageLite;
+PLcom/android/server/pm/PackageInstallerSession;->getPackageName()Ljava/lang/String;
+PLcom/android/server/pm/PackageInstallerSession;->getRemoteStatusReceiver()Landroid/content/IntentSender;
+PLcom/android/server/pm/PackageInstallerSession;->hasParentSessionId()Z
+PLcom/android/server/pm/PackageInstallerSession;->install()Ljava/util/concurrent/CompletableFuture;
+PLcom/android/server/pm/PackageInstallerSession;->isApexSession()Z
+PLcom/android/server/pm/PackageInstallerSession;->isDataLoaderInstallation(Landroid/content/pm/PackageInstaller$SessionParams;)Z
+PLcom/android/server/pm/PackageInstallerSession;->isDestroyed()Z
+PLcom/android/server/pm/PackageInstallerSession;->isEmergencyInstallerEnabled(IILcom/android/server/pm/Computer;Ljava/lang/String;)Z
+PLcom/android/server/pm/PackageInstallerSession;->isInTerminalState()Z
+PLcom/android/server/pm/PackageInstallerSession;->isIncrementalInstallation()Z
+PLcom/android/server/pm/PackageInstallerSession;->isInstallerDeviceOwnerOrAffiliatedProfileOwner()Z
+PLcom/android/server/pm/PackageInstallerSession;->isMultiPackage()Z
+PLcom/android/server/pm/PackageInstallerSession;->isSealed()Z
+PLcom/android/server/pm/PackageInstallerSession;->isStaged()Z
+PLcom/android/server/pm/PackageInstallerSession;->isSystemDataLoaderInstallation(Landroid/content/pm/PackageInstaller$SessionParams;)Z
+PLcom/android/server/pm/PackageInstallerSession;->markAsSealed(Landroid/content/IntentSender;Z)Z
+PLcom/android/server/pm/PackageInstallerSession;->maybeFinishChildSessions(ILjava/lang/String;)V
+PLcom/android/server/pm/PackageInstallerSession;->maybeStageFsveritySignatureLocked(Ljava/io/File;Ljava/io/File;Z)V
+PLcom/android/server/pm/PackageInstallerSession;->open()V
+PLcom/android/server/pm/PackageInstallerSession;->openWrite(Ljava/lang/String;JJ)Landroid/os/ParcelFileDescriptor;
+PLcom/android/server/pm/PackageInstallerSession;->openWriteAppMetadata()Landroid/os/ParcelFileDescriptor;
+PLcom/android/server/pm/PackageInstallerSession;->parseApk()V
+PLcom/android/server/pm/PackageInstallerSession;->prepareDataLoaderLocked()Z
+PLcom/android/server/pm/PackageInstallerSession;->prepareInheritedFiles()V
+PLcom/android/server/pm/PackageInstallerSession;->resolveAndStageFileLocked(Ljava/io/File;Ljava/io/File;Ljava/util/List;)V
+PLcom/android/server/pm/PackageInstallerSession;->sealLocked()V
+PLcom/android/server/pm/PackageInstallerSession;->sendPendingUserActionIntentIfNeeded(Z)Z
+PLcom/android/server/pm/PackageInstallerSession;->sendUpdateToRemoteStatusReceiver(ILjava/lang/String;Landroid/os/Bundle;Z)V
+PLcom/android/server/pm/PackageInstallerSession;->sessionContains(Ljava/util/function/Predicate;)Z
+PLcom/android/server/pm/PackageInstallerSession;->setChecksums(Ljava/lang/String;[Landroid/content/pm/Checksum;[B)V
+PLcom/android/server/pm/PackageInstallerSession;->setClientProgress(F)V
+PLcom/android/server/pm/PackageInstallerSession;->setClientProgressLocked(F)V
+PLcom/android/server/pm/PackageInstallerSession;->setSessionReady()V
+PLcom/android/server/pm/PackageInstallerSession;->stageFileLocked(Ljava/io/File;Ljava/io/File;)V
+PLcom/android/server/pm/PackageInstallerSession;->streamValidateAndCommit()Z
+HPLcom/android/server/pm/PackageInstallerSession;->validateApkInstallLocked()V
+PLcom/android/server/pm/PackageInstallerSession;->verify()V
+PLcom/android/server/pm/PackageInstallerSession;->verifyNonStaged()V
+HPLcom/android/server/pm/PackageInstallerSession;->write(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/io/File;)V
+PLcom/android/server/pm/PackageInstallerSession;->write(Ljava/lang/String;JJLandroid/os/ParcelFileDescriptor;)V
HSPLcom/android/server/pm/PackageKeySetData;-><init>()V
HSPLcom/android/server/pm/PackageKeySetData;-><init>(Lcom/android/server/pm/PackageKeySetData;)V
-PLcom/android/server/pm/PackageKeySetData;->getAliases()Landroid/util/ArrayMap;
-PLcom/android/server/pm/PackageKeySetData;->getProperSigningKeySet()J
-PLcom/android/server/pm/PackageKeySetData;->isUsingDefinedKeySets()Z
-HPLcom/android/server/pm/PackageKeySetData;->isUsingUpgradeKeySets()Z
-HPLcom/android/server/pm/PackageKeySetData;->removeAllDefinedKeySets()V
-HPLcom/android/server/pm/PackageKeySetData;->removeAllUpgradeKeySets()V
-HPLcom/android/server/pm/PackageKeySetData;->setAliases(Ljava/util/Map;)V
-HSPLcom/android/server/pm/PackageKeySetData;->setProperSigningKeySet(J)V
PLcom/android/server/pm/PackageList;-><init>(Ljava/util/List;Landroid/content/pm/PackageManagerInternal$PackageListObserver;)V
-PLcom/android/server/pm/PackageList;->getPackageNames()Ljava/util/List;
+PLcom/android/server/pm/PackageList;->onPackageAdded(Ljava/lang/String;I)V
+PLcom/android/server/pm/PackageList;->onPackageChanged(ILjava/lang/String;)V
PLcom/android/server/pm/PackageManagerException;-><init>(ILjava/lang/String;)V
PLcom/android/server/pm/PackageManagerException;-><init>(ILjava/lang/String;Ljava/lang/Throwable;)V
-HSPLcom/android/server/pm/PackageManagerInternalBase;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-PLcom/android/server/pm/PackageManagerInternalBase;->canAccessInstantApps(II)Z
-HPLcom/android/server/pm/PackageManagerInternalBase;->canQueryPackage(ILjava/lang/String;)Z
-PLcom/android/server/pm/PackageManagerInternalBase;->filterAppAccess(II)Z
-HPLcom/android/server/pm/PackageManagerInternalBase;->filterAppAccess(Ljava/lang/String;IIZ)Z
-PLcom/android/server/pm/PackageManagerInternalBase;->forEachInstalledPackage(Ljava/util/function/Consumer;I)V
-PLcom/android/server/pm/PackageManagerInternalBase;->forEachPackage(Ljava/util/function/Consumer;)V
-PLcom/android/server/pm/PackageManagerInternalBase;->forEachPackageState(Ljava/util/function/Consumer;)V
-HPLcom/android/server/pm/PackageManagerInternalBase;->getApplicationEnabledState(Ljava/lang/String;I)I
-HPLcom/android/server/pm/PackageManagerInternalBase;->getApplicationInfo(Ljava/lang/String;JII)Landroid/content/pm/ApplicationInfo;
-HPLcom/android/server/pm/PackageManagerInternalBase;->getDisabledComponents(Ljava/lang/String;I)Landroid/util/ArraySet;
-PLcom/android/server/pm/PackageManagerInternalBase;->getDistractingPackageRestrictions(Ljava/lang/String;I)I
-HPLcom/android/server/pm/PackageManagerInternalBase;->getEnabledComponents(Ljava/lang/String;I)Landroid/util/ArraySet;
-PLcom/android/server/pm/PackageManagerInternalBase;->getInstalledApplications(JII)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerInternalBase;->getInstalledApplicationsCrossUser(JII)Ljava/util/List;
-HPLcom/android/server/pm/PackageManagerInternalBase;->getInstantAppPackageName(I)Ljava/lang/String;
-HSPLcom/android/server/pm/PackageManagerInternalBase;->getKnownPackageNames(II)[Ljava/lang/String;
-HPLcom/android/server/pm/PackageManagerInternalBase;->getPackage(I)Lcom/android/server/pm/pkg/AndroidPackage;
-HPLcom/android/server/pm/PackageManagerInternalBase;->getPackage(Ljava/lang/String;)Lcom/android/server/pm/pkg/AndroidPackage;
-HPLcom/android/server/pm/PackageManagerInternalBase;->getPackageInfo(Ljava/lang/String;JII)Landroid/content/pm/PackageInfo;
-HPLcom/android/server/pm/PackageManagerInternalBase;->getPackageStateInternal(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateInternal;
-PLcom/android/server/pm/PackageManagerInternalBase;->getPackageTargetSdkVersion(Ljava/lang/String;)I
-HPLcom/android/server/pm/PackageManagerInternalBase;->getPackageUid(Ljava/lang/String;JI)I
-PLcom/android/server/pm/PackageManagerInternalBase;->getPermissionGids(Ljava/lang/String;I)[I
-HPLcom/android/server/pm/PackageManagerInternalBase;->getProcessesForUid(I)Landroid/util/ArrayMap;
-HPLcom/android/server/pm/PackageManagerInternalBase;->getSharedUserPackagesForPackage(Ljava/lang/String;I)[Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerInternalBase;->getSystemUiServiceComponent()Landroid/content/ComponentName;
-HPLcom/android/server/pm/PackageManagerInternalBase;->getUidTargetSdkVersion(I)I
-HPLcom/android/server/pm/PackageManagerInternalBase;->grantImplicitAccess(ILandroid/content/Intent;IIZ)V
-HPLcom/android/server/pm/PackageManagerInternalBase;->grantImplicitAccess(ILandroid/content/Intent;IIZZ)V
-HPLcom/android/server/pm/PackageManagerInternalBase;->isInstantApp(Ljava/lang/String;I)Z
-PLcom/android/server/pm/PackageManagerInternalBase;->isInstantAppInstallerComponent(Landroid/content/ComponentName;)Z
-HPLcom/android/server/pm/PackageManagerInternalBase;->isPackageEphemeral(ILjava/lang/String;)Z
-HPLcom/android/server/pm/PackageManagerInternalBase;->isPackageFrozen(Ljava/lang/String;II)Z
-HPLcom/android/server/pm/PackageManagerInternalBase;->isPackageStateProtected(Ljava/lang/String;I)Z
-PLcom/android/server/pm/PackageManagerInternalBase;->isPackageStopped(Ljava/lang/String;I)Z
-HPLcom/android/server/pm/PackageManagerInternalBase;->isPackageSuspended(Ljava/lang/String;I)Z
-HPLcom/android/server/pm/PackageManagerInternalBase;->isPermissionsReviewRequired(Ljava/lang/String;I)Z
-HPLcom/android/server/pm/PackageManagerInternalBase;->notifyComponentUsed(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/pm/PackageManagerInternalBase;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;JII)Ljava/util/List;
-HPLcom/android/server/pm/PackageManagerInternalBase;->queryIntentReceivers(Landroid/content/Intent;Ljava/lang/String;JIIZ)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerInternalBase;->reconcileAppsData(IIZ)V
-PLcom/android/server/pm/PackageManagerInternalBase;->resolveContentProvider(Ljava/lang/String;JII)Landroid/content/pm/ProviderInfo;
-PLcom/android/server/pm/PackageManagerInternalBase;->resolveIntentExported(Landroid/content/Intent;Ljava/lang/String;JJIZII)Landroid/content/pm/ResolveInfo;
-HPLcom/android/server/pm/PackageManagerInternalBase;->resolveService(Landroid/content/Intent;Ljava/lang/String;JII)Landroid/content/pm/ResolveInfo;
-PLcom/android/server/pm/PackageManagerInternalBase;->setPackageStoppedState(Ljava/lang/String;ZI)V
-HSPLcom/android/server/pm/PackageManagerInternalBase;->snapshot()Lcom/android/server/pm/Computer;
-HPLcom/android/server/pm/PackageManagerInternalBase;->snapshot()Lcom/android/server/pm/snapshot/PackageDataSnapshot;
-PLcom/android/server/pm/PackageManagerInternalBase;->wasPackageEverLaunched(Ljava/lang/String;I)Z
+PLcom/android/server/pm/PackageManagerException;-><init>(Ljava/lang/String;I)V
PLcom/android/server/pm/PackageManagerNative;-><init>(Lcom/android/server/pm/PackageManagerService;)V
PLcom/android/server/pm/PackageManagerNative;->getInstallerForPackage(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerNative;->getModuleMetadataPackageName()Ljava/lang/String;
PLcom/android/server/pm/PackageManagerNative;->getNamesForUids([I)[Ljava/lang/String;
PLcom/android/server/pm/PackageManagerNative;->getTargetSdkVersionForPackage(Ljava/lang/String;)I
PLcom/android/server/pm/PackageManagerNative;->getVersionCodeForPackage(Ljava/lang/String;)J
PLcom/android/server/pm/PackageManagerNative;->hasSystemFeature(Ljava/lang/String;I)Z
PLcom/android/server/pm/PackageManagerNative;->isAudioPlaybackCaptureAllowed([Ljava/lang/String;)[Z
PLcom/android/server/pm/PackageManagerNative;->registerStagedApexObserver(Landroid/content/pm/IStagedApexObserver;)V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda10;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda10;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda11;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda11;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda12;-><init>()V
-PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda12;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda13;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda14;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda15;-><init>()V
-PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda15;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda16;-><init>()V
-PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda16;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda18;-><init>()V
-PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda18;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda19;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda19;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda1;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda11;-><init>(Landroid/content/Context;I)V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda11;->produce(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerServiceInjector;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;-><init>(I)V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;->produce(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerServiceInjector;)Ljava/lang/Object;
HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda20;-><init>(Lcom/android/server/pm/verify/domain/DomainVerificationService;)V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda20;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda21;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda21;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda22;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda22;->produce(Ljava/lang/Class;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda23;-><init>(Landroid/content/Context;)V
-PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda23;->produce(Ljava/lang/Class;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda24;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda24;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda25;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda26;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda26;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda27;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda28;-><init>(Landroid/content/Context;Lcom/android/server/pm/Installer;Ljava/lang/Object;Lcom/android/server/pm/PackageManagerTracedLock;)V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda28;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda29;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda29;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda21;-><init>(Lcom/android/server/pm/verify/domain/DomainVerificationService;)V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda21;->produce(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerServiceInjector;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda28;-><init>(Landroid/content/Context;Lcom/android/server/pm/Installer;Lcom/android/server/pm/PackageManagerTracedLock;Lcom/android/server/pm/PackageManagerTracedLock;)V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda28;->produce(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerServiceInjector;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/pm/PackageManagerService;I)V
PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda30;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda30;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda31;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda32;-><init>(Lcom/android/server/pm/verify/domain/DomainVerificationService;Landroid/os/Handler;Lcom/android/server/pm/PackageManagerTracedLock;)V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda32;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda33;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda33;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda34;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda34;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda35;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda35;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda36;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda36;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda37;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda37;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda38;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda38;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda40;-><init>(Lcom/android/server/pm/PackageManagerService;Z)V
-PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda40;->run()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda41;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda42;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda43;-><init>(Lcom/android/server/pm/PackageManagerService;[I)V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda31;-><init>(Lcom/android/server/pm/verify/domain/DomainVerificationService;Landroid/os/Handler;Lcom/android/server/pm/PackageManagerTracedLock;)V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda31;->produce(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerServiceInjector;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda38;-><init>(Lcom/android/server/pm/PackageManagerService;I)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda40;-><init>(ILjava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda40;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda41;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda41;->get()Ljava/lang/Object;
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda42;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda42;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda43;-><init>(IZZ)V
PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda43;->accept(Ljava/lang/Object;)V
-PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda44;-><init>(IZZ)V
-PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda44;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda45;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;I)V
-HPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda45;->run()V
-PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda46;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;Landroid/os/Bundle;[ILandroid/util/SparseArray;)V
-PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda46;->run()V
-PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda48;-><init>(Lcom/android/server/pm/PackageManagerServiceInjector;)V
-PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda4;-><init>()V
-PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda4;->apply(I)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda50;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda51;-><init>()V
-PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda55;-><init>(ILjava/util/function/Consumer;)V
-HPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda55;->accept(Ljava/lang/Object;)V
-PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda63;-><init>(ILandroid/util/ArrayMap;Ljava/util/Set;ILandroid/util/ArrayMap;)V
-PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda63;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda6;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda6;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda7;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda7;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda8;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda8;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda9;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda9;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerService$1;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda44;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;I)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda44;->run()V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda45;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;Landroid/os/Bundle;[ILandroid/util/SparseArray;)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda45;->run()V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda46;-><init>(Lcom/android/server/pm/PackageManagerService;I)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda46;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda49;->get()Ljava/lang/Object;
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda50;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/os/Handler;Ljava/util/List;IILjava/lang/String;[Ljava/security/cert/Certificate;Landroid/content/pm/IOnChecksumsReadyListener;I)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda50;->run()V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda52;-><init>(IILjava/lang/Object;)V
+HPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda52;->accept(Ljava/lang/Object;)V+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/function/Consumer;Lcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda5;,Lcom/android/server/people/data/DataManager$$ExternalSyntheticLambda11;,Lcom/android/server/policy/role/RoleServicePlatformHelperImpl$$ExternalSyntheticLambda0;
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda54;-><init>(Lcom/android/server/pm/PackageManagerService;I)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda54;->produce()Ljava/lang/Object;
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda55;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda5;->apply(I)Ljava/lang/Object;
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda60;-><init>(ILandroid/util/ArrayMap;Ljava/util/Set;ILandroid/util/ArrayMap;)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda60;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda6;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+HSPLcom/android/server/pm/PackageManagerService$1;-><init>()V
HSPLcom/android/server/pm/PackageManagerService$1;->onChange(Lcom/android/server/utils/Watchable;)V
-HSPLcom/android/server/pm/PackageManagerService$2;-><init>()V
PLcom/android/server/pm/PackageManagerService$2;->handleMessage(Landroid/os/Message;)Z
HSPLcom/android/server/pm/PackageManagerService$3;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/compat/PlatformCompat;)V
+HSPLcom/android/server/pm/PackageManagerService$3;->getHiddenApiWhitelistedApps()Ljava/util/Set;
+PLcom/android/server/pm/PackageManagerService$3;->isChangeEnabled(JLandroid/content/pm/ApplicationInfo;)Z
PLcom/android/server/pm/PackageManagerService$4;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/os/Handler;Landroid/content/ContentResolver;)V
PLcom/android/server/pm/PackageManagerService$4;->onChange(Z)V
-PLcom/android/server/pm/PackageManagerService$5;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/PackageManagerService$5;-><init>(Lcom/android/server/pm/PackageManagerService;I)V
PLcom/android/server/pm/PackageManagerService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/pm/PackageManagerService$6;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-HSPLcom/android/server/pm/PackageManagerService$DefaultSystemWrapper;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$DefaultSystemWrapper;-><init>(Lcom/android/server/pm/PackageManagerService$DefaultSystemWrapper-IA;)V
HSPLcom/android/server/pm/PackageManagerService$DefaultSystemWrapper;->disablePackageCaches()V
PLcom/android/server/pm/PackageManagerService$DefaultSystemWrapper;->enablePackageCaches()V
-PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/pm/Computer;II)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl$$ExternalSyntheticLambda19;-><init>(Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;ILjava/lang/String;ILjava/lang/String;I)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl$$ExternalSyntheticLambda19;->applyOrThrow(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;III)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl$$ExternalSyntheticLambda9;-><init>(II)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl$$ExternalSyntheticLambda9;->accept(Ljava/lang/Object;)V
PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->canonicalToCurrentPackageNames([Ljava/lang/String;)[Ljava/lang/String;
HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->checkPackageStartable(Ljava/lang/String;I)V
-HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->checkPermission(Ljava/lang/String;Ljava/lang/String;I)I
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->checkSignatures(Ljava/lang/String;Ljava/lang/String;I)I
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->checkUidPermission(Ljava/lang/String;I)I
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->checkUidSignatures(II)I
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->finishPackageInstall(IZ)V
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getActivityInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ActivityInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getAppMetadataFd(Ljava/lang/String;I)Landroid/os/ParcelFileDescriptor;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getAppMetadataSource(Ljava/lang/String;I)I
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getApplicationEnabledSetting(Ljava/lang/String;I)I
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getApplicationInfo(Ljava/lang/String;JI)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getArtManager()Landroid/content/pm/dex/IArtManager;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getAttentionServicePackageName()Ljava/lang/String;
PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getChangedPackages(II)Landroid/content/pm/ChangedPackages;
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getDeclaredSharedLibraries(Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getDefaultAppsBackup(I)[B
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getDefaultTextClassifierPackageName()Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getDomainVerificationBackup(I)[B
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getHarmfulAppWarning(Ljava/lang/String;I)Ljava/lang/CharSequence;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getInstallReason(Ljava/lang/String;I)I
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getInstallSourceInfo(Ljava/lang/String;I)Landroid/content/pm/InstallSourceInfo;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getInstalledApplications(JI)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getInstalledModules(I)Ljava/util/List;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getInstalledPackages(JI)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getInstantAppAndroidId(Ljava/lang/String;I)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getModuleInfo(Ljava/lang/String;I)Landroid/content/pm/ModuleInfo;
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getNameForUid(I)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getPackageGids(Ljava/lang/String;JI)[I
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getPackageInfo(Ljava/lang/String;JI)Landroid/content/pm/PackageInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getPackageInstaller()Landroid/content/pm/IPackageInstaller;
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getPackageUid(Ljava/lang/String;JI)I+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getPackagesForUid(I)[Ljava/lang/String;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getPackagesHoldingPermissions([Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;
PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getPermissionControllerPackageName()Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getPersistentApplications(I)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getPreferredActivityBackup(I)[B
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getPropertyAsUser(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/PackageManager$Property;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getProviderInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ProviderInfo;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getReceiverInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ActivityInfo;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getRotationResolverPackageName()Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getSdkSandboxPackageName()Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getServiceInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ServiceInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getServicesSystemSharedLibraryPackageName()Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getSetupWizardPackageName()Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getSharedLibraries(Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;
PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getSplashScreenTheme(Ljava/lang/String;I)Ljava/lang/String;
-HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getSystemAvailableFeatures()Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getSystemAvailableFeatures()Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getSystemCaptionsServicePackageName()Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getSystemSharedLibraryNames()[Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getSystemTextClassifierPackageName()Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getTargetSdkVersion(Ljava/lang/String;)I+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getUidForSharedUser(Ljava/lang/String;)I
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getUnsuspendablePackagesForUser([Ljava/lang/String;I)[Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getUserMinAspectRatio(Ljava/lang/String;I)I
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getWellbeingPackageName()Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->hasSigningCertificate(Ljava/lang/String;[BI)Z
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->hasSystemFeature(Ljava/lang/String;I)Z
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->hasSystemUidErrors()Z
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->isDeviceUpgrading()Z
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->isFirstBoot()Z
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->isInstantApp(Ljava/lang/String;I)Z
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->isPackageAvailable(Ljava/lang/String;I)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->isPackageSuspendedForUser(Ljava/lang/String;I)Z
HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->isProtectedBroadcast(Ljava/lang/String;)Z
-HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->logAppProcessStartIfNeeded(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->isSafeMode()Z
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->logAppProcessStartIfNeeded(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;I)V
HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->notifyDexLoad(Ljava/lang/String;Ljava/util/Map;Ljava/lang/String;)V
-HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->notifyPackageUse(Ljava/lang/String;I)V
-HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->notifyPackageUse(Ljava/lang/String;I)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->notifyPackagesReplacedReceived([Ljava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V
HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->queryContentProviders(Ljava/lang/String;IJLjava/lang/String;)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->queryIntentContentProviders(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->queryIntentReceivers(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->queryIntentServices(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->queryProperty(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
-HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->registerPackageMonitorCallback(Landroid/os/IRemoteCallback;I)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->registerPackageMonitorCallback(Landroid/os/IRemoteCallback;I)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->replacePreferredActivity(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->requestPackageChecksums(Ljava/lang/String;ZIILjava/util/List;Landroid/content/pm/IOnChecksumsReadyListener;I)V
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->resolveContentProvider(Ljava/lang/String;JI)Landroid/content/pm/ProviderInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ResolveInfo;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->resolveService(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ResolveInfo;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->setApplicationCategoryHint(Ljava/lang/String;ILjava/lang/String;)V
PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->setApplicationEnabledSetting(Ljava/lang/String;IIILjava/lang/String;)V
HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->setComponentEnabledSetting(Landroid/content/ComponentName;IIILjava/lang/String;)V
-PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->setPackageStoppedState(Ljava/lang/String;ZI)V
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;Ljava/lang/String;Landroid/os/Bundle;I[ILandroid/util/SparseArray;)V
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl$$ExternalSyntheticLambda2;->run()V
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl$$ExternalSyntheticLambda3;-><init>(Ljava/util/List;)V
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl$$ExternalSyntheticLambda4;-><init>(Ljava/util/ArrayList;)V
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->$r8$lambda$6BzoV0knGY9C14_caifkEEMMdVU(Ljava/util/List;Lcom/android/server/pm/pkg/PackageStateInternal;)V
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->$r8$lambda$EQuwNqG4N0yM_qw6ZX3BhqlsDtw(Ljava/util/ArrayList;Lcom/android/server/pm/pkg/PackageStateInternal;)V
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->$r8$lambda$oFinl0bGSorgAoKfFRg-vRv_2cE(Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;Ljava/lang/String;Landroid/os/Bundle;I[ILandroid/util/SparseArray;)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->setComponentEnabledSettings(Ljava/util/List;ILjava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->unregisterPackageMonitorCallback(Landroid/os/IRemoteCallback;)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->verifyPendingInstall(II)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;Ljava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl$$ExternalSyntheticLambda1;->run()V
HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getAppDataHelper()Lcom/android/server/pm/AppDataHelper;
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getContext()Landroid/content/Context;
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getDisabledSystemPackageName(Ljava/lang/String;)Ljava/lang/String;
-HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getIncrementalStatesInfo(Ljava/lang/String;II)Landroid/content/pm/IncrementalStatesInfo;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->canQueryPackage(ILjava/lang/String;)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->filterAppAccess(ILjava/lang/String;IZ)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->forEachInstalledPackage(ILjava/util/function/Consumer;)V+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->forEachPackage(Ljava/util/function/Consumer;)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->forEachPackageState(Ljava/util/function/Consumer;)V
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getApplicationInfo(IILjava/lang/String;J)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getIncrementalStatesInfo(IILjava/lang/String;)Landroid/content/pm/IncrementalStatesInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getInstalledApplications(IIJ)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getInstantAppPackageName(I)Ljava/lang/String;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getKnownPackageNames(II)[Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackage(I)Lcom/android/server/pm/pkg/AndroidPackage;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackage(Ljava/lang/String;)Lcom/android/server/pm/pkg/AndroidPackage;
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackageInfo(IILjava/lang/String;J)Landroid/content/pm/PackageInfo;
PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackageList(Landroid/content/pm/PackageManagerInternal$PackageListObserver;)Lcom/android/server/pm/PackageList;
-HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPermissionManager()Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
-HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getProtectedPackages()Lcom/android/server/pm/ProtectedPackages;
-HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getResolveIntentHelper()Lcom/android/server/pm/ResolveIntentHelper;
-HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getSuspendPackageHelper()Lcom/android/server/pm/SuspendPackageHelper;
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getTargetPackageNames(I)Ljava/util/List;
-HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->hasSignatureCapability(III)Z
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPackagePersistent(Ljava/lang/String;)Z
-HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPlatformSigned(Ljava/lang/String;)Z
-HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isSameApp(Ljava/lang/String;II)Z
-HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isSameApp(Ljava/lang/String;JII)Z
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->lambda$getPackageList$0(Ljava/util/ArrayList;Lcom/android/server/pm/pkg/PackageStateInternal;)V
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->lambda$getTargetPackageNames$2(Ljava/util/List;Lcom/android/server/pm/pkg/PackageStateInternal;)V
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->lambda$sendPackageRestartedBroadcast$4(Ljava/lang/String;Landroid/os/Bundle;I[ILandroid/util/SparseArray;)V
-HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->notifyPackageUse(Ljava/lang/String;I)V
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->sendPackageRestartedBroadcast(Ljava/lang/String;II)V
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setDeviceAndProfileOwnerPackages(ILjava/lang/String;Landroid/util/SparseArray;)V
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackageStateInternal(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateInternal;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackageUid(Ljava/lang/String;JI)I+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getSharedUserPackagesForPackage(ILjava/lang/String;)[Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getSystemUiServiceComponent()Landroid/content/ComponentName;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getUidTargetSdkVersion(I)I+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->grantImplicitAccess(ILandroid/content/Intent;IIZZ)V+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->hasSignatureCapability(II)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isInstantApp(Ljava/lang/String;I)Z
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPackageEphemeral(ILjava/lang/String;)Z+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPackageFrozen(IILjava/lang/String;)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPackageSuspended(ILjava/lang/String;)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPermissionsReviewRequired(ILjava/lang/String;)Z+]Lcom/android/server/pm/permission/PermissionManagerServiceInterface;Lcom/android/server/permission/access/permission/PermissionService;
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPlatformSigned(Ljava/lang/String;)Z
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isSameApp(IILjava/lang/String;J)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->notifyComponentUsed(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->onPackageProcessKilledForUninstall(Ljava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;JII)Ljava/util/List;
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->reconcileAppsData(IIZ)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->registerInstalledLoadingProgressCallback(Ljava/lang/String;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageLoadingProgressCallback;I)Z
PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setEnabledOverlayPackages(ILandroid/util/ArrayMap;Ljava/util/Set;Ljava/util/Set;)V
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setExternalSourcesPolicy(Landroid/content/pm/PackageManagerInternal$ExternalSourcesPolicy;)V
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->snapshot()Lcom/android/server/pm/Computer;+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;
HSPLcom/android/server/pm/PackageManagerService$Snapshot;-><init>(Lcom/android/server/pm/PackageManagerService;I)V
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$3kw1stMVsxw0hUSyOsS2FPnzpHQ(Landroid/content/Context;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/DefaultAppProvider;
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$49MB1VcYhb5vNzYT8bGtg2MigyY(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/SystemConfig;
-PLcom/android/server/pm/PackageManagerService;->$r8$lambda$5zfMCrLbAea9InASGoniwjwLP1g(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;Landroid/content/ComponentName;)Lcom/android/server/pm/InstantAppResolverConnection;
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$Ak19Qy9hQiUyM128pbH0sxNNbxE(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Landroid/os/Handler;
-PLcom/android/server/pm/PackageManagerService;->$r8$lambda$AtsdeBa8co53jl7kYt8ysrzmEo8(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/internal/pm/parsing/PackageParser2;
-PLcom/android/server/pm/PackageManagerService;->$r8$lambda$JCnmoBuRlexuCDDmhAlJO4FAjhg(ILandroid/util/ArrayMap;Ljava/util/Set;ILandroid/util/ArrayMap;Lcom/android/server/pm/pkg/mutate/PackageStateMutator;)V
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$LT765XNHeztBOay7rENBSJ4FpQo(Lcom/android/server/pm/verify/domain/DomainVerificationService;Landroid/os/Handler;Lcom/android/server/pm/PackageManagerTracedLock;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/Settings;
-PLcom/android/server/pm/PackageManagerService;->$r8$lambda$Ob4Lx_QzpY-udQ1-YTziQadgFcc(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;Landroid/os/Bundle;[ILandroid/util/SparseArray;)V
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$OdKicpQs5x3SrKKW4-UnxBv2k4k(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/dex/ArtManagerService;
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$P8SY61CGf4lgD7vmEgc6OJo18Jc(Landroid/content/Context;Lcom/android/server/pm/Installer;Ljava/lang/Object;Lcom/android/server/pm/PackageManagerTracedLock;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/UserManagerService;
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$RJDxvoMUIzns2AakZT-srNoyjqA(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/BackgroundDexOptService;
-PLcom/android/server/pm/PackageManagerService;->$r8$lambda$SVfaWm0ftYEb_i0fK608nQic6a8(ILjava/util/function/Consumer;Lcom/android/server/pm/pkg/PackageStateInternal;)V
-PLcom/android/server/pm/PackageManagerService;->$r8$lambda$Sj0TiBD2qrAz-kSBJZjvN19KwM8(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;I)V
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$Ss9DVkISkXku8V-CYhxH_GTx3uk(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/compat/PlatformCompat;
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$WTjLzvsZwKnygY1dXmiEXrU4wns(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Landroid/os/incremental/IncrementalManager;
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$XIxgBW0a_Dim0prfYI26N63QYA8(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/permission/LegacyPermissionManagerInternal;
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$XK0jyd8NWE8sX2dLVxJDSWyX-fc(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/resolution/ComponentResolver;
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$bP6O2EM4vQjnURNcnMI3AEd8jvE(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/ApexManager;
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$biXVbknQI0VSnqBwrsRYdId7lOg(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Landroid/util/DisplayMetrics;
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$cgf9HzQDpIYBAM1FfODw1LJfeaA(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/SharedLibrariesImpl;
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$f76IiBvzWjWrK7cEm3Fwh4D5vPI(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageDexOptimizer;
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$g8phPHwnEQKwNibO76kbTV-ernk(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/UpdateOwnershipHelper;
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$gIhdWIFiJVJIMETTUG8yHCSxQyU(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/dex/DexManager;
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$gt9gWkZ6s9W-_z9hX2383OetJQg(Lcom/android/server/pm/verify/domain/DomainVerificationService;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$hV-hx61rt_I-GSVq2c9QBKlQU-A(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/AppsFilterImpl;
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$jI7_wgzMOIg2_ALwQh3N7aqxwk0(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageMonitorCallbackHelper;
-PLcom/android/server/pm/PackageManagerService;->$r8$lambda$kLempGNYbwTngE5VfwmJi2ujEMA(Lcom/android/server/pm/PackageManagerService;[ILcom/android/server/pm/pkg/PackageStateInternal;)V
-PLcom/android/server/pm/PackageManagerService;->$r8$lambda$lrT8YtmB66bCdNFFrQigcIEKlkk(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageInstallerService;
-PLcom/android/server/pm/PackageManagerService;->$r8$lambda$o-iKpv5pW-KnOFqF1r6GTvXljZ0(IZZLcom/android/server/pm/pkg/mutate/PackageStateWrite;)V
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$peRMMEdjCdKA187FsiE-4lz5Nvw(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/dex/DynamicCodeLogger;
-PLcom/android/server/pm/PackageManagerService;->$r8$lambda$x-LxCO1xlxJ6o3haCm6qjxrkCF4(Lcom/android/server/pm/PackageManagerService;Z)V
-PLcom/android/server/pm/PackageManagerService;->$r8$lambda$xeK55D47HzV-aDVTdJQUUfbLB-s(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/ModuleInfoProvider;
-PLcom/android/server/pm/PackageManagerService;->$r8$lambda$ycLid5CfrcIKxha4GPTBH7u22Kc(I)[Ljava/lang/Integer;
-HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$yd0vfnhyLdiG7JVKGsIrzU91iec(Landroid/content/Context;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
-HSPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmAndroidApplication(Lcom/android/server/pm/PackageManagerService;)Landroid/content/pm/ApplicationInfo;
-PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmAppDataHelper(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/AppDataHelper;
-PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmAvailableFeatures(Lcom/android/server/pm/PackageManagerService;)Landroid/util/ArrayMap;
-PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmBroadcastHelper(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/BroadcastHelper;
-PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmDefaultAppProvider(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/DefaultAppProvider;
-PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmDexOptHelper(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/DexOptHelper;
-PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmDomainVerificationConnection(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/DomainVerificationConnection;
-HSPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmFrozenPackagesSnapshot(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/utils/SnapshotCache;
-HSPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmInstantAppInstallerInfo(Lcom/android/server/pm/PackageManagerService;)Landroid/content/pm/ResolveInfo;
-HSPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmInstrumentation(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/utils/WatchedArrayMap;
-HSPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmInstrumentationSnapshot(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/utils/SnapshotCache;
-HSPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmIsolatedOwnersSnapshot(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/utils/SnapshotCache;
-PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmModuleInfoProvider(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/ModuleInfoProvider;
-PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmPackageMonitorCallbackHelper(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageMonitorCallbackHelper;
-PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmPackageObserverHelper(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageObserverHelper;
-PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmPackageProperty(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageProperty;
-HSPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmPackagesSnapshot(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/utils/SnapshotCache;
-PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmPlatformPackage(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/pkg/AndroidPackage;
-PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmPreferredActivityHelper(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PreferredActivityHelper;
-HSPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmResolveActivity(Lcom/android/server/pm/PackageManagerService;)Landroid/content/pm/ActivityInfo;
-HPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmResolveIntentHelper(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/ResolveIntentHelper;
-HSPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmSharedLibraries(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/SharedLibrariesImpl;
-PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmSnapshotStatistics(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/SnapshotStatistics;
-PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmStorageEventHelper(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/StorageEventHelper;
-HPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmSuspendPackageHelper(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/SuspendPackageHelper;
-HSPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmWebInstantAppsDisabled(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/utils/WatchedSparseBooleanArray;
HPLcom/android/server/pm/PackageManagerService;->-$$Nest$mnotifyPackageUseInternal(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;I)V
-PLcom/android/server/pm/PackageManagerService;->-$$Nest$msetEnabledOverlayPackages(Lcom/android/server/pm/PackageManagerService;ILandroid/util/ArrayMap;Ljava/util/Set;Ljava/util/Set;)V
-HPLcom/android/server/pm/PackageManagerService;->-$$Nest$msetEnabledSettings(Lcom/android/server/pm/PackageManagerService;Ljava/util/List;ILjava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService;->-$$Nest$msetEnabledSettings(Lcom/android/server/pm/PackageManagerService;Ljava/util/List;ILjava/lang/String;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/ImmutableCollections$List12;
HSPLcom/android/server/pm/PackageManagerService;-><clinit>()V
HSPLcom/android/server/pm/PackageManagerService;-><init>(Lcom/android/server/pm/PackageManagerServiceInjector;ZLjava/lang/String;ZZILjava/lang/String;)V
-HPLcom/android/server/pm/PackageManagerService;->addAllPackageProperties(Lcom/android/server/pm/pkg/AndroidPackage;)V
-PLcom/android/server/pm/PackageManagerService;->addInstrumentation(Landroid/content/ComponentName;Lcom/android/internal/pm/pkg/component/ParsedInstrumentation;)V
+HSPLcom/android/server/pm/PackageManagerService;->addAllPackageProperties(Lcom/android/server/pm/pkg/AndroidPackage;)V
PLcom/android/server/pm/PackageManagerService;->applyUpdatedSystemOverlayPaths()V
-HSPLcom/android/server/pm/PackageManagerService;->boostPriorityForPackageManagerTracedLockedSection()V
-PLcom/android/server/pm/PackageManagerService;->canSetOverlayPaths(Landroid/content/pm/overlay/OverlayPaths;Landroid/content/pm/overlay/OverlayPaths;)Z
-HPLcom/android/server/pm/PackageManagerService;->checkPackageStartable(Lcom/android/server/pm/Computer;Ljava/lang/String;I)V
-HPLcom/android/server/pm/PackageManagerService;->checkPermission(Ljava/lang/String;Ljava/lang/String;I)I
+PLcom/android/server/pm/PackageManagerService;->checkPermission(Ljava/lang/String;Ljava/lang/String;I)I
PLcom/android/server/pm/PackageManagerService;->commitPackageStateMutation(Lcom/android/server/pm/pkg/mutate/PackageStateMutator$InitialState;Ljava/lang/String;Ljava/util/function/Consumer;)Lcom/android/server/pm/pkg/mutate/PackageStateMutator$Result;
-PLcom/android/server/pm/PackageManagerService;->commitPackageStateMutation(Lcom/android/server/pm/pkg/mutate/PackageStateMutator$InitialState;Ljava/util/function/Consumer;)Lcom/android/server/pm/pkg/mutate/PackageStateMutator$Result;
-HSPLcom/android/server/pm/PackageManagerService;->createLiveComputer()Lcom/android/server/pm/ComputerLocked;
-PLcom/android/server/pm/PackageManagerService;->disableSkuSpecificApps()V
+PLcom/android/server/pm/PackageManagerService;->commitPackageStateMutation(Ljava/util/function/Consumer;)Lcom/android/server/pm/pkg/mutate/PackageStateMutator$Result;
+PLcom/android/server/pm/PackageManagerService;->decodeCertificates(Ljava/util/List;)[Ljava/security/cert/Certificate;
PLcom/android/server/pm/PackageManagerService;->ensureSystemPackageName(Lcom/android/server/pm/Computer;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->forEachInstalledPackage(Lcom/android/server/pm/Computer;Ljava/util/function/Consumer;I)V
-HPLcom/android/server/pm/PackageManagerService;->forEachPackage(Lcom/android/server/pm/Computer;Ljava/util/function/Consumer;)V
-HPLcom/android/server/pm/PackageManagerService;->forEachPackageState(Landroid/util/ArrayMap;Ljava/util/function/Consumer;)V
+PLcom/android/server/pm/PackageManagerService;->extrasForInstallResult(Lcom/android/server/pm/InstallRequest;)Landroid/os/Bundle;
+PLcom/android/server/pm/PackageManagerService;->flushPackageRestrictionsAsUserInternalLocked(I)V
PLcom/android/server/pm/PackageManagerService;->forEachPackageState(Lcom/android/server/pm/Computer;Ljava/util/function/Consumer;)V
-PLcom/android/server/pm/PackageManagerService;->getAppInstallDir()Ljava/io/File;
-PLcom/android/server/pm/PackageManagerService;->getCoreAndroidApplication()Landroid/content/pm/ApplicationInfo;
+PLcom/android/server/pm/PackageManagerService;->freeStorage(ILjava/lang/String;J)V
+PLcom/android/server/pm/PackageManagerService;->freezePackage(Ljava/lang/String;ILjava/lang/String;ILcom/android/server/pm/InstallRequest;)Lcom/android/server/pm/PackageFreezer;
PLcom/android/server/pm/PackageManagerService;->getDefParseFlags()I
-HSPLcom/android/server/pm/PackageManagerService;->getDefaultAppProvider()Lcom/android/server/pm/DefaultAppProvider;
-PLcom/android/server/pm/PackageManagerService;->getDefaultTimeouts()Ljava/lang/String;
-HSPLcom/android/server/pm/PackageManagerService;->getDexManager()Lcom/android/server/pm/dex/DexManager;
-PLcom/android/server/pm/PackageManagerService;->getDexOptHelper()Lcom/android/server/pm/DexOptHelper;
-PLcom/android/server/pm/PackageManagerService;->getDomainVerificationAgentComponentNameLPr(Lcom/android/server/pm/Computer;)Landroid/content/ComponentName;
-PLcom/android/server/pm/PackageManagerService;->getInstantAppInstallerLPr()Landroid/content/pm/ActivityInfo;
+PLcom/android/server/pm/PackageManagerService;->getDomainVerificationAgentComponentNameLPr(Lcom/android/server/pm/ComputerLocked;)Landroid/content/ComponentName;
PLcom/android/server/pm/PackageManagerService;->getInstantAppResolver(Lcom/android/server/pm/Computer;)Landroid/content/ComponentName;
-PLcom/android/server/pm/PackageManagerService;->getInstantAppResolverSettingsLPr(Lcom/android/server/pm/Computer;Landroid/content/ComponentName;)Landroid/content/ComponentName;
-PLcom/android/server/pm/PackageManagerService;->getIntentFilterVerifierComponentNameLPr(Lcom/android/server/pm/Computer;)Landroid/content/ComponentName;
-PLcom/android/server/pm/PackageManagerService;->getKnownDigestersList()Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getInstantAppResolverSettingsLPr(Lcom/android/server/pm/ComputerLocked;Landroid/content/ComponentName;)Landroid/content/ComponentName;
+PLcom/android/server/pm/PackageManagerService;->getIntentFilterVerifierComponentNameLPr(Lcom/android/server/pm/ComputerLocked;)Landroid/content/ComponentName;
HSPLcom/android/server/pm/PackageManagerService;->getKnownPackageNamesInternal(Lcom/android/server/pm/Computer;II)[Ljava/lang/String;
PLcom/android/server/pm/PackageManagerService;->getPackageFromComponentString(I)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->getPackageSettingForMutation(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
PLcom/android/server/pm/PackageManagerService;->getPerUidReadTimeouts(Lcom/android/server/pm/Computer;)[Landroid/os/incremental/PerUidReadTimeouts;
-HPLcom/android/server/pm/PackageManagerService;->getPlatformPackage()Lcom/android/server/pm/pkg/AndroidPackage;
-PLcom/android/server/pm/PackageManagerService;->getRequiredButNotReallyRequiredVerifiersLPr(Lcom/android/server/pm/Computer;)[Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->getRequiredInstallerLPr(Lcom/android/server/pm/Computer;)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->getRequiredPermissionControllerLPr(Lcom/android/server/pm/Computer;)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->getRequiredSdkSandboxPackageName(Lcom/android/server/pm/Computer;)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->getRequiredServicesExtensionPackageLPr(Lcom/android/server/pm/Computer;)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->getRequiredSharedLibrary(Lcom/android/server/pm/Computer;Ljava/lang/String;I)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->getRequiredUninstallerLPr(Lcom/android/server/pm/Computer;)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getRequiredButNotReallyRequiredVerifiersLPr(Lcom/android/server/pm/ComputerLocked;)[Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getRequiredInstallerLPr(Lcom/android/server/pm/ComputerLocked;)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getRequiredPermissionControllerLPr(Lcom/android/server/pm/ComputerLocked;)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getRequiredSdkSandboxPackageName(Lcom/android/server/pm/ComputerLocked;)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getRequiredServicesExtensionPackageLPr(Lcom/android/server/pm/ComputerLocked;)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getRequiredSharedLibrary(Lcom/android/server/pm/ComputerLocked;)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getRequiredUninstallerLPr(Lcom/android/server/pm/ComputerLocked;)Ljava/lang/String;
PLcom/android/server/pm/PackageManagerService;->getRetailDemoPackageName()Ljava/lang/String;
-HPLcom/android/server/pm/PackageManagerService;->getSafeMode()Z
-PLcom/android/server/pm/PackageManagerService;->getSdkSandboxPackageName()Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->getSdkVersion()I
-HPLcom/android/server/pm/PackageManagerService;->getSettingsVersionForPackage(Lcom/android/server/pm/pkg/AndroidPackage;)Lcom/android/server/pm/Settings$VersionInfo;
-PLcom/android/server/pm/PackageManagerService;->getSetupWizardPackageNameImpl(Lcom/android/server/pm/Computer;)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->getStorageManagerPackageName(Lcom/android/server/pm/Computer;)Ljava/lang/String;
-HPLcom/android/server/pm/PackageManagerService;->getSystemPackageScanFlags(Ljava/io/File;)I
-HPLcom/android/server/pm/PackageManagerService;->grantImplicitAccess(Lcom/android/server/pm/Computer;ILandroid/content/Intent;IIZZ)V
+HSPLcom/android/server/pm/PackageManagerService;->getSettingsVersionForPackage(Lcom/android/server/pm/pkg/AndroidPackage;)Lcom/android/server/pm/Settings$VersionInfo;
+PLcom/android/server/pm/PackageManagerService;->getSetupWizardPackageNameImpl(Lcom/android/server/pm/ComputerLocked;)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getStorageManagerPackageName(Lcom/android/server/pm/ComputerLocked;)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->getSystemPackageScanFlags(Ljava/io/File;)I
+HPLcom/android/server/pm/PackageManagerService;->grantImplicitAccess(Lcom/android/server/pm/Computer;ILandroid/content/Intent;IIZZ)V+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+PLcom/android/server/pm/PackageManagerService;->handlePackagePostInstall(Lcom/android/server/pm/InstallRequest;Z)V
HPLcom/android/server/pm/PackageManagerService;->hasSystemFeature(Ljava/lang/String;I)Z
-PLcom/android/server/pm/PackageManagerService;->installAllowlistedSystemPackages()V
HSPLcom/android/server/pm/PackageManagerService;->invalidatePackageInfoCache()V
-HPLcom/android/server/pm/PackageManagerService;->isDeviceUpgrading()Z
-PLcom/android/server/pm/PackageManagerService;->isExpectingBetter(Ljava/lang/String;)Z
-PLcom/android/server/pm/PackageManagerService;->isFirstBoot()Z
-HPLcom/android/server/pm/PackageManagerService;->isPreNMR1Upgrade()Z
-HPLcom/android/server/pm/PackageManagerService;->lambda$forEachInstalledPackage$60(ILjava/util/function/Consumer;Lcom/android/server/pm/pkg/PackageStateInternal;)V
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$12(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/resolution/ComponentResolver;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$13(Landroid/content/Context;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$14(Landroid/content/Context;Lcom/android/server/pm/Installer;Ljava/lang/Object;Lcom/android/server/pm/PackageManagerTracedLock;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/UserManagerService;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$15(Lcom/android/server/pm/verify/domain/DomainVerificationService;Landroid/os/Handler;Lcom/android/server/pm/PackageManagerTracedLock;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/Settings;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$16(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/AppsFilterImpl;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$17(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/compat/PlatformCompat;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$18(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/SystemConfig;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$19(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageDexOptimizer;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$20(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/dex/DexManager;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$21(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/dex/DynamicCodeLogger;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$22(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/dex/ArtManagerService;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$23(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/ApexManager;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$24(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Landroid/os/incremental/IncrementalManager;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$27(Landroid/content/Context;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/DefaultAppProvider;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$28(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Landroid/util/DisplayMetrics;
-PLcom/android/server/pm/PackageManagerService;->lambda$main$29(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/internal/pm/parsing/PackageParser2;
-PLcom/android/server/pm/PackageManagerService;->lambda$main$32(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageInstallerService;
-PLcom/android/server/pm/PackageManagerService;->lambda$main$33(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;Landroid/content/ComponentName;)Lcom/android/server/pm/InstantAppResolverConnection;
-PLcom/android/server/pm/PackageManagerService;->lambda$main$34(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/ModuleInfoProvider;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$35(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/permission/LegacyPermissionManagerInternal;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$36(Lcom/android/server/pm/verify/domain/DomainVerificationService;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$37(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Landroid/os/Handler;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$38(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/BackgroundDexOptService;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$40(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/SharedLibrariesImpl;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$42(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/UpdateOwnershipHelper;
-HSPLcom/android/server/pm/PackageManagerService;->lambda$main$43(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageMonitorCallbackHelper;
-PLcom/android/server/pm/PackageManagerService;->lambda$new$48([ILcom/android/server/pm/pkg/PackageStateInternal;)V
-PLcom/android/server/pm/PackageManagerService;->lambda$setEnabledOverlayPackages$59(ILandroid/util/ArrayMap;Ljava/util/Set;ILandroid/util/ArrayMap;Lcom/android/server/pm/pkg/mutate/PackageStateMutator;)V
-PLcom/android/server/pm/PackageManagerService;->lambda$setPackageStoppedState$56(IZZLcom/android/server/pm/pkg/mutate/PackageStateWrite;)V
-PLcom/android/server/pm/PackageManagerService;->lambda$setPackageStoppedState$57(Ljava/lang/String;I)V
-PLcom/android/server/pm/PackageManagerService;->lambda$setPackageStoppedState$58(Ljava/lang/String;Landroid/os/Bundle;[ILandroid/util/SparseArray;)V
-PLcom/android/server/pm/PackageManagerService;->lambda$tryWriteSettings$10(Z)V
-PLcom/android/server/pm/PackageManagerService;->lambda$writePendingRestrictions$9(I)[Ljava/lang/Integer;
+HSPLcom/android/server/pm/PackageManagerService;->isDeviceUpgrading()Z
+PLcom/android/server/pm/PackageManagerService;->isPackageDeviceAdmin(ILjava/lang/String;)Z
+PLcom/android/server/pm/PackageManagerService;->isUserRestricted(ILjava/lang/String;)Z
+PLcom/android/server/pm/PackageManagerService;->killApplication(Ljava/lang/String;IILjava/lang/String;I)V
HSPLcom/android/server/pm/PackageManagerService;->main(Landroid/content/Context;Lcom/android/server/pm/Installer;Lcom/android/server/pm/verify/domain/DomainVerificationService;Z)Lcom/android/server/pm/PackageManagerService;
-PLcom/android/server/pm/PackageManagerService;->maybeUpdateSystemOverlays(Ljava/lang/String;Landroid/content/pm/overlay/OverlayPaths;)V
-HPLcom/android/server/pm/PackageManagerService;->notifyComponentUsed(Lcom/android/server/pm/Computer;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/pm/PackageManagerService;->notifyPackageUseInternal(Ljava/lang/String;I)V
-HSPLcom/android/server/pm/PackageManagerService;->onChange(Lcom/android/server/utils/Watchable;)V
-HSPLcom/android/server/pm/PackageManagerService;->onChanged()V
-PLcom/android/server/pm/PackageManagerService;->parsePerUidReadTimeouts(Lcom/android/server/pm/Computer;)[Landroid/os/incremental/PerUidReadTimeouts;
+PLcom/android/server/pm/PackageManagerService;->notifyInstallObserver(Lcom/android/server/pm/InstallRequest;)V
+PLcom/android/server/pm/PackageManagerService;->notifyInstallObserver(Ljava/lang/String;Z)V
+PLcom/android/server/pm/PackageManagerService;->notifyPackageChanged(ILjava/lang/String;)V
+HSPLcom/android/server/pm/PackageManagerService;->onChange()V
PLcom/android/server/pm/PackageManagerService;->performFstrimIfNeeded()V
-HSPLcom/android/server/pm/PackageManagerService;->rebuildSnapshot(Lcom/android/server/pm/Computer;I)Lcom/android/server/pm/Computer;
-HSPLcom/android/server/pm/PackageManagerService;->registerObservers(Z)V
-PLcom/android/server/pm/PackageManagerService;->reportSettingsProblem(ILjava/lang/String;)V
-HSPLcom/android/server/pm/PackageManagerService;->resetPriorityAfterPackageManagerTracedLockedSection()V
+HSPLcom/android/server/pm/PackageManagerService;->rebuildSnapshot(Lcom/android/server/pm/Computer;I)Lcom/android/server/pm/ComputerEngine;
+PLcom/android/server/pm/PackageManagerService;->recordInitialState()Lcom/android/server/pm/pkg/mutate/PackageStateMutator$InitialState;
+HSPLcom/android/server/pm/PackageManagerService;->registerObservers()V
+PLcom/android/server/pm/PackageManagerService;->requestChecksumsInternal(Lcom/android/server/pm/Computer;Ljava/lang/String;ZIILjava/util/List;Landroid/content/pm/IOnChecksumsReadyListener;ILjava/util/concurrent/Executor;Landroid/os/Handler;)V
PLcom/android/server/pm/PackageManagerService;->resolveUserIds(I)[I
+PLcom/android/server/pm/PackageManagerService;->restorePermissionsAndUpdateRolesForNewUserInstall(ILjava/lang/String;)V
PLcom/android/server/pm/PackageManagerService;->schedulePruneUnusedStaticSharedLibraries(Z)V
PLcom/android/server/pm/PackageManagerService;->scheduleWritePackageRestrictions(I)V
HSPLcom/android/server/pm/PackageManagerService;->scheduleWriteSettings()V
-HPLcom/android/server/pm/PackageManagerService;->setEnabledOverlayPackages(ILandroid/util/ArrayMap;Ljava/util/Set;Ljava/util/Set;)V
HPLcom/android/server/pm/PackageManagerService;->setEnabledSettingInternalLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageManager$ComponentEnabledSetting;ILjava/lang/String;)Z
-HPLcom/android/server/pm/PackageManagerService;->setEnabledSettings(Ljava/util/List;ILjava/lang/String;)V
-HPLcom/android/server/pm/PackageManagerService;->setPackageStoppedState(Lcom/android/server/pm/Computer;Ljava/lang/String;ZI)V
-PLcom/android/server/pm/PackageManagerService;->setPlatformPackage(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;)V
-PLcom/android/server/pm/PackageManagerService;->setUpCustomResolverActivity(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;)V
-PLcom/android/server/pm/PackageManagerService;->setUpInstantAppInstallerActivityLP(Landroid/content/pm/ActivityInfo;)V
+HPLcom/android/server/pm/PackageManagerService;->setPackageStoppedState(ILcom/android/server/pm/Computer;Ljava/lang/String;Z)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
HSPLcom/android/server/pm/PackageManagerService;->snapshotComputer()Lcom/android/server/pm/Computer;
-HSPLcom/android/server/pm/PackageManagerService;->snapshotComputer(Z)Lcom/android/server/pm/Computer;
-HPLcom/android/server/pm/PackageManagerService;->systemReady()V
-PLcom/android/server/pm/PackageManagerService;->tryUnderLock(ZJLjava/lang/Runnable;)Z
-PLcom/android/server/pm/PackageManagerService;->tryWriteSettings(Z)Z
-PLcom/android/server/pm/PackageManagerService;->updateInstantAppInstallerLocked(Ljava/lang/String;)V
+HSPLcom/android/server/pm/PackageManagerService;->snapshotComputer(Z)Lcom/android/server/pm/Computer;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
+PLcom/android/server/pm/PackageManagerService;->systemReady()V
+HPLcom/android/server/pm/PackageManagerService;->updateInstantAppInstallerLocked(Ljava/lang/String;)V
PLcom/android/server/pm/PackageManagerService;->updatePackagesIfNeeded()V
-PLcom/android/server/pm/PackageManagerService;->waitForAppDataPrepared()V
-PLcom/android/server/pm/PackageManagerService;->writePendingRestrictions()V
+PLcom/android/server/pm/PackageManagerService;->updateSequenceNumberLP(Lcom/android/server/pm/PackageSetting;[I)V
+PLcom/android/server/pm/PackageManagerService;->verifyReplacingVersionCode(Landroid/content/pm/PackageInfoLite;JI)Landroid/util/Pair;
+PLcom/android/server/pm/PackageManagerService;->writeSettings(Z)V
PLcom/android/server/pm/PackageManagerService;->writeSettingsLPrTEMP()V
PLcom/android/server/pm/PackageManagerService;->writeSettingsLPrTEMP(Z)V
HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;-><clinit>()V
-HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->checkProperties()V
HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->getAndCheckValidity(I)Ljava/lang/String;
HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->getSystemPropertyName(I)Ljava/lang/String;
-HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->isFilterAllowedForReason(ILjava/lang/String;)Z
HSPLcom/android/server/pm/PackageManagerServiceInjector$Singleton;-><init>(Lcom/android/server/pm/PackageManagerServiceInjector$Producer;)V
-HSPLcom/android/server/pm/PackageManagerServiceInjector$Singleton;->get(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerTracedLock;Lcom/android/server/pm/Installer;Ljava/lang/Object;Lcom/android/server/pm/PackageAbiHelper;Landroid/os/Handler;Ljava/util/List;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$ProducerWithArgument;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$SystemWrapper;Lcom/android/server/pm/PackageManagerServiceInjector$ServiceProducer;Lcom/android/server/pm/PackageManagerServiceInjector$ServiceProducer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;)V
+HSPLcom/android/server/pm/PackageManagerServiceInjector$Singleton;->get(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerServiceInjector;)Ljava/lang/Object;+]Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerTracedLock;Lcom/android/server/pm/Installer;Lcom/android/server/pm/PackageManagerTracedLock;Lcom/android/server/pm/PackageAbiHelperImpl;Landroid/os/Handler;Ljava/util/List;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda11;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda28;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda31;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda11;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda21;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$DefaultSystemWrapper;Lcom/android/server/autofill/AutofillManagerService$1$$ExternalSyntheticLambda0;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda11;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda11;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;)V
HSPLcom/android/server/pm/PackageManagerServiceInjector;->bootstrap(Lcom/android/server/pm/PackageManagerService;)V
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getAbiHelper()Lcom/android/server/pm/PackageAbiHelper;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getActivityManagerInternal()Landroid/app/ActivityManagerInternal;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getApexManager()Lcom/android/server/pm/ApexManager;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getAppsFilter()Lcom/android/server/pm/AppsFilterImpl;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getArtManagerService()Lcom/android/server/pm/dex/ArtManagerService;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getBackgroundDexOptService()Lcom/android/server/pm/BackgroundDexOptService;
-PLcom/android/server/pm/PackageManagerServiceInjector;->getBackgroundExecutor()Ljava/util/concurrent/Executor;
+PLcom/android/server/pm/PackageManagerServiceInjector;->getAbiHelper()Lcom/android/server/pm/PackageAbiHelper;
HSPLcom/android/server/pm/PackageManagerServiceInjector;->getBackgroundHandler()Landroid/os/Handler;
HSPLcom/android/server/pm/PackageManagerServiceInjector;->getCompatibility()Lcom/android/server/compat/PlatformCompat;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getComponentResolver()Lcom/android/server/pm/resolution/ComponentResolver;
HSPLcom/android/server/pm/PackageManagerServiceInjector;->getContext()Landroid/content/Context;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getDefaultAppProvider()Lcom/android/server/pm/DefaultAppProvider;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getDexManager()Lcom/android/server/pm/dex/DexManager;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getDisplayMetrics()Landroid/util/DisplayMetrics;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getDomainVerificationManagerInternal()Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getDynamicCodeLogger()Lcom/android/server/pm/dex/DynamicCodeLogger;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getHandler()Landroid/os/Handler;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getIncrementalManager()Landroid/os/incremental/IncrementalManager;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getInstallLock()Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getInstallLock()Lcom/android/server/pm/PackageManagerTracedLock;
HSPLcom/android/server/pm/PackageManagerServiceInjector;->getInstaller()Lcom/android/server/pm/Installer;
PLcom/android/server/pm/PackageManagerServiceInjector;->getInstantAppResolverConnection(Landroid/content/ComponentName;)Lcom/android/server/pm/InstantAppResolverConnection;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getLegacyPermissionManagerInternal()Lcom/android/server/pm/permission/LegacyPermissionManagerInternal;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getLocalService(Ljava/lang/Class;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getLegacyPermissionManagerInternal()Lcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;
HSPLcom/android/server/pm/PackageManagerServiceInjector;->getLock()Lcom/android/server/pm/PackageManagerTracedLock;
PLcom/android/server/pm/PackageManagerServiceInjector;->getModuleInfoProvider()Lcom/android/server/pm/ModuleInfoProvider;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getPackageDexOptimizer()Lcom/android/server/pm/PackageDexOptimizer;
-PLcom/android/server/pm/PackageManagerServiceInjector;->getPackageInstallerService()Lcom/android/server/pm/PackageInstallerService;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getPackageMonitorCallbackHelper()Lcom/android/server/pm/PackageMonitorCallbackHelper;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getPermissionManagerServiceInternal()Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
-PLcom/android/server/pm/PackageManagerServiceInjector;->getScanningCachingPackageParser()Lcom/android/internal/pm/parsing/PackageParser2;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getSettings()Lcom/android/server/pm/Settings;
+PLcom/android/server/pm/PackageManagerServiceInjector;->getPreparingPackageParser()Lcom/android/internal/pm/parsing/PackageParser2;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getScanningCachingPackageParser()Lcom/android/internal/pm/parsing/PackageParser2;
HSPLcom/android/server/pm/PackageManagerServiceInjector;->getSharedLibrariesImpl()Lcom/android/server/pm/SharedLibrariesImpl;
HSPLcom/android/server/pm/PackageManagerServiceInjector;->getSystemConfig()Lcom/android/server/SystemConfig;
-PLcom/android/server/pm/PackageManagerServiceInjector;->getSystemPartitions()Ljava/util/List;
-PLcom/android/server/pm/PackageManagerServiceInjector;->getSystemService(Ljava/lang/Class;)Ljava/lang/Object;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getSystemWrapper()Lcom/android/server/pm/PackageManagerServiceInjector$SystemWrapper;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getUpdateOwnershipHelper()Lcom/android/server/pm/UpdateOwnershipHelper;
-HSPLcom/android/server/pm/PackageManagerServiceInjector;->getUserManagerInternal()Lcom/android/server/pm/UserManagerInternal;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getSystemPartitions()Ljava/util/List;
HSPLcom/android/server/pm/PackageManagerServiceInjector;->getUserManagerService()Lcom/android/server/pm/UserManagerService;
-HSPLcom/android/server/pm/PackageManagerServiceUtils$$ExternalSyntheticLambda0;-><init>()V
-HSPLcom/android/server/pm/PackageManagerServiceUtils$$ExternalSyntheticLambda1;-><init>()V
-HSPLcom/android/server/pm/PackageManagerServiceUtils$$ExternalSyntheticLambda2;-><init>()V
-PLcom/android/server/pm/PackageManagerServiceUtils$$ExternalSyntheticLambda2;->get()Ljava/lang/Object;
-PLcom/android/server/pm/PackageManagerServiceUtils;->$r8$lambda$mxnDkt23XLV3hc1smQVQ_dWQlso()Ljava/lang/Boolean;
+HSPLcom/android/server/pm/PackageManagerServiceUtils$$ExternalSyntheticLambda0;-><init>(I)V
HSPLcom/android/server/pm/PackageManagerServiceUtils;-><clinit>()V
-HPLcom/android/server/pm/PackageManagerServiceUtils;->applyEnforceIntentFilterMatching(Lcom/android/server/compat/PlatformCompat;Lcom/android/server/pm/resolution/ComponentResolverApi;Ljava/util/List;ZLandroid/content/Intent;Ljava/lang/String;I)V
-PLcom/android/server/pm/PackageManagerServiceUtils;->arrayToString([I)Ljava/lang/String;
-HPLcom/android/server/pm/PackageManagerServiceUtils;->canJoinSharedUserId(Ljava/lang/String;Landroid/content/pm/SigningDetails;Lcom/android/server/pm/SharedUserSetting;I)Z
+PLcom/android/server/pm/PackageManagerServiceUtils;->canJoinSharedUserId(Ljava/lang/String;Landroid/content/pm/SigningDetails;Lcom/android/server/pm/SharedUserSetting;I)Z
+PLcom/android/server/pm/PackageManagerServiceUtils;->checkDowngrade(JI[Ljava/lang/String;[ILandroid/content/pm/PackageInfoLite;)V
PLcom/android/server/pm/PackageManagerServiceUtils;->comparePackageSignatures(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/SigningDetails;)Z
-HPLcom/android/server/pm/PackageManagerServiceUtils;->compareSignatureArrays([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
-HPLcom/android/server/pm/PackageManagerServiceUtils;->compareSignatures(Landroid/content/pm/SigningDetails;Landroid/content/pm/SigningDetails;)I
-HPLcom/android/server/pm/PackageManagerServiceUtils;->compressedFileExists(Ljava/lang/String;)Z
-HPLcom/android/server/pm/PackageManagerServiceUtils;->deriveAbiOverride(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerServiceUtils;->enforceShellRestriction(Lcom/android/server/pm/UserManagerInternal;Ljava/lang/String;II)V
-PLcom/android/server/pm/PackageManagerServiceUtils;->enforceSystemOrPhoneCaller(Ljava/lang/String;I)V
+PLcom/android/server/pm/PackageManagerServiceUtils;->compareSignatureArrays([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
+PLcom/android/server/pm/PackageManagerServiceUtils;->dumpCriticalInfo(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/pm/PackageManagerServiceUtils;->enforceShellRestriction(Lcom/android/server/pm/UserManagerService$LocalService;II)V
+PLcom/android/server/pm/PackageManagerServiceUtils;->enforceSystemOrPhoneCaller(ILjava/lang/String;)V
PLcom/android/server/pm/PackageManagerServiceUtils;->enforceSystemOrRoot(Ljava/lang/String;)V
-HPLcom/android/server/pm/PackageManagerServiceUtils;->getCompressedFiles(Ljava/lang/String;)[Ljava/io/File;
-HPLcom/android/server/pm/PackageManagerServiceUtils;->getLastModifiedTime(Lcom/android/server/pm/pkg/AndroidPackage;)J
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->getCompressedFiles(Ljava/lang/String;)[Ljava/io/File;
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->getLastModifiedTime(Lcom/android/server/pm/pkg/AndroidPackage;)J
+PLcom/android/server/pm/PackageManagerServiceUtils;->getMinimalPackageInfo(Landroid/content/Context;Landroid/content/pm/parsing/PackageLite;Ljava/lang/String;ILjava/lang/String;)Landroid/content/pm/PackageInfoLite;
+PLcom/android/server/pm/PackageManagerServiceUtils;->getNextCodePath(Ljava/io/File;Ljava/lang/String;)Ljava/io/File;
PLcom/android/server/pm/PackageManagerServiceUtils;->getPackageManagerLocal()Lcom/android/server/pm/PackageManagerLocal;
PLcom/android/server/pm/PackageManagerServiceUtils;->getSettingsProblemFile()Ljava/io/File;
-HPLcom/android/server/pm/PackageManagerServiceUtils;->isSystemOrRoot()Z
+PLcom/android/server/pm/PackageManagerServiceUtils;->isDowngradePermitted(IZ)Z
+PLcom/android/server/pm/PackageManagerServiceUtils;->isInstalledByAdb(Ljava/lang/String;)Z
+PLcom/android/server/pm/PackageManagerServiceUtils;->isRootOrShell(I)Z
PLcom/android/server/pm/PackageManagerServiceUtils;->isSystemOrRoot(I)Z
HSPLcom/android/server/pm/PackageManagerServiceUtils;->isSystemOrRootOrShell(I)Z
-PLcom/android/server/pm/PackageManagerServiceUtils;->lambda$static$2()Ljava/lang/Boolean;
-PLcom/android/server/pm/PackageManagerServiceUtils;->logCriticalInfo(ILjava/lang/String;)V
-PLcom/android/server/pm/PackageManagerServiceUtils;->preparePackageParserCache(ZZLjava/lang/String;)Ljava/io/File;
-HPLcom/android/server/pm/PackageManagerServiceUtils;->verifySignatures(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/PackageSetting;Landroid/content/pm/SigningDetails;ZZZ)Z
-PLcom/android/server/pm/PackageManagerShellCommand$$ExternalSyntheticLambda1;-><init>()V
-HPLcom/android/server/pm/PackageManagerShellCommand$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/pm/PackageManagerShellCommand;->$r8$lambda$SBUnEmlcik68djMk5muLDWebS_E(Ljava/lang/String;)Ljava/util/List;
+PLcom/android/server/pm/PackageManagerServiceUtils;->makeDirRecursive(Ljava/io/File;I)V
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->preparePackageParserCache(Ljava/lang/String;ZZ)Ljava/io/File;
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->verifySignatures(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/PackageSetting;Landroid/content/pm/SigningDetails;ZZZ)Z
+PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver$1;-><init>(Lcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;)V
+PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver$1;->send(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;-><init>()V
+PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;->getIntentSender()Landroid/content/IntentSender;
+PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;->getResult()Landroid/content/Intent;
PLcom/android/server/pm/PackageManagerShellCommand;-><clinit>()V
-HPLcom/android/server/pm/PackageManagerShellCommand;-><init>(Landroid/content/pm/IPackageManager;Landroid/content/Context;Lcom/android/server/pm/verify/domain/DomainVerificationShell;)V
-PLcom/android/server/pm/PackageManagerShellCommand;->displayPackageFilePath(Ljava/lang/String;I)I
-HPLcom/android/server/pm/PackageManagerShellCommand;->lambda$runListPackages$1(Ljava/lang/String;)Ljava/util/List;
+PLcom/android/server/pm/PackageManagerShellCommand;-><init>(Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;Landroid/content/Context;Lcom/android/server/pm/verify/domain/DomainVerificationShell;)V
+PLcom/android/server/pm/PackageManagerShellCommand;->doCommitSession(I)I
+PLcom/android/server/pm/PackageManagerShellCommand;->doCreateSession(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;I)I
+PLcom/android/server/pm/PackageManagerShellCommand;->doRunInstall(Lcom/android/server/pm/PackageManagerShellCommand$InstallParams;)I
+PLcom/android/server/pm/PackageManagerShellCommand;->doWriteSplit(ILjava/lang/String;JLjava/lang/String;Z)I
+PLcom/android/server/pm/PackageManagerShellCommand;->getRemainingArgs()Ljava/util/ArrayList;
+PLcom/android/server/pm/PackageManagerShellCommand;->makeInstallParams(Ljava/util/Set;)Lcom/android/server/pm/PackageManagerShellCommand$InstallParams;
PLcom/android/server/pm/PackageManagerShellCommand;->onCommand(Ljava/lang/String;)I
-HPLcom/android/server/pm/PackageManagerShellCommand;->runGrantRevokePermission(Z)I
-PLcom/android/server/pm/PackageManagerShellCommand;->runList()I
-PLcom/android/server/pm/PackageManagerShellCommand;->runListPackages(Z)I
-HPLcom/android/server/pm/PackageManagerShellCommand;->runListPackages(ZZ)I
-PLcom/android/server/pm/PackageManagerShellCommand;->runPath()I
+PLcom/android/server/pm/PackageManagerShellCommand;->openInFile(JLjava/lang/String;)Landroid/util/Pair;
+PLcom/android/server/pm/PackageManagerShellCommand;->runArtServiceCommand()I
+PLcom/android/server/pm/PackageManagerShellCommand;->runInstall()I
PLcom/android/server/pm/PackageManagerShellCommand;->translateUserId(IILjava/lang/String;)I
+HSPLcom/android/server/pm/PackageManagerTracedLock$RawLock;-><init>(Ljava/lang/String;)V
HSPLcom/android/server/pm/PackageManagerTracedLock;-><init>()V
-PLcom/android/server/pm/PackageMonitorCallbackHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/PackageMonitorCallbackHelper;Landroid/os/RemoteCallbackList;I[ILandroid/content/Intent;Ljava/util/function/BiFunction;)V
-PLcom/android/server/pm/PackageMonitorCallbackHelper$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/pm/PackageMonitorCallbackHelper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/PackageMonitorCallbackHelper;I[ILandroid/content/Intent;Ljava/util/function/BiFunction;)V
-HPLcom/android/server/pm/PackageMonitorCallbackHelper$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HPLcom/android/server/pm/PackageMonitorCallbackHelper$RegisterUser;-><init>(Lcom/android/server/pm/PackageMonitorCallbackHelper;II)V
-PLcom/android/server/pm/PackageMonitorCallbackHelper$RegisterUser;->getUid()I
-PLcom/android/server/pm/PackageMonitorCallbackHelper$RegisterUser;->getUserId()I
-PLcom/android/server/pm/PackageMonitorCallbackHelper;->$r8$lambda$dmkKmZn9cGbMJXri8hyHR8QP-n4(Lcom/android/server/pm/PackageMonitorCallbackHelper;I[ILandroid/content/Intent;Ljava/util/function/BiFunction;Landroid/os/IRemoteCallback;Ljava/lang/Object;)V
-PLcom/android/server/pm/PackageMonitorCallbackHelper;->$r8$lambda$sc6g1dLrUYtbyMa4_swsXTtzJPE(Lcom/android/server/pm/PackageMonitorCallbackHelper;Landroid/os/RemoteCallbackList;I[ILandroid/content/Intent;Ljava/util/function/BiFunction;)V
+HSPLcom/android/server/pm/PackageManagerTracedLock;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/pm/PackageManagerTracedLock;->acquireLock()V
+PLcom/android/server/pm/PackageManagerTracedLock;->close()V
+PLcom/android/server/pm/PackageMetrics$1;-><init>(Ljava/io/File;Ljava/util/concurrent/atomic/AtomicLong;)V
+PLcom/android/server/pm/PackageMetrics$1;->preVisitDirectory(Ljava/lang/Object;Ljava/nio/file/attribute/BasicFileAttributes;)Ljava/nio/file/FileVisitResult;
+PLcom/android/server/pm/PackageMetrics$1;->visitFile(Ljava/lang/Object;Ljava/nio/file/attribute/BasicFileAttributes;)Ljava/nio/file/FileVisitResult;
+PLcom/android/server/pm/PackageMetrics$InstallStep;-><init>()V
+PLcom/android/server/pm/PackageMetrics$InstallStep;-><init>(J)V
+PLcom/android/server/pm/PackageMetrics;-><init>(Lcom/android/server/pm/InstallRequest;)V
+PLcom/android/server/pm/PackageMetrics;->onStepFinished(I)V
+PLcom/android/server/pm/PackageMetrics;->onStepStarted(I)V
+PLcom/android/server/pm/PackageMetrics;->reportInstallationStats(Z)V
+PLcom/android/server/pm/PackageMonitorCallbackHelper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/PackageMonitorCallbackHelper;Landroid/os/RemoteCallbackList;I[ILandroid/content/Intent;Lcom/android/server/pm/BroadcastHelper$$ExternalSyntheticLambda6;)V
+PLcom/android/server/pm/PackageMonitorCallbackHelper$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/pm/PackageMonitorCallbackHelper$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/pm/PackageMonitorCallbackHelper;I[ILandroid/content/Intent;Lcom/android/server/pm/BroadcastHelper$$ExternalSyntheticLambda6;)V
+PLcom/android/server/pm/PackageMonitorCallbackHelper$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
HSPLcom/android/server/pm/PackageMonitorCallbackHelper;-><init>()V
-PLcom/android/server/pm/PackageMonitorCallbackHelper;->doNotifyCallbacks(Landroid/os/RemoteCallbackList;Landroid/content/Intent;I[ILandroid/os/Handler;Ljava/util/function/BiFunction;)V
-PLcom/android/server/pm/PackageMonitorCallbackHelper;->doNotifyCallbacksByAction(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;[ILandroid/util/SparseArray;Landroid/os/Handler;Ljava/util/function/BiFunction;)V
-PLcom/android/server/pm/PackageMonitorCallbackHelper;->invokeCallback(Landroid/os/IRemoteCallback;Landroid/content/Intent;)V
+PLcom/android/server/pm/PackageMonitorCallbackHelper;->doNotifyCallbacksByAction(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;[ILandroid/util/SparseArray;Landroid/os/Handler;Lcom/android/server/pm/BroadcastHelper$$ExternalSyntheticLambda6;)V
PLcom/android/server/pm/PackageMonitorCallbackHelper;->isAllowedCallbackAction(Ljava/lang/String;)Z
-PLcom/android/server/pm/PackageMonitorCallbackHelper;->lambda$doNotifyCallbacks$0(I[ILandroid/content/Intent;Ljava/util/function/BiFunction;Landroid/os/IRemoteCallback;Ljava/lang/Object;)V
-PLcom/android/server/pm/PackageMonitorCallbackHelper;->lambda$doNotifyCallbacks$1(Landroid/os/RemoteCallbackList;I[ILandroid/content/Intent;Ljava/util/function/BiFunction;)V
-PLcom/android/server/pm/PackageMonitorCallbackHelper;->notifyPackageMonitor(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;[I[ILandroid/util/SparseArray;Landroid/os/Handler;Ljava/util/function/BiFunction;)V
-HPLcom/android/server/pm/PackageMonitorCallbackHelper;->registerPackageMonitorCallback(Landroid/os/IRemoteCallback;II)V
+PLcom/android/server/pm/PackageMonitorCallbackHelper;->notifyPackageMonitor(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;[I[ILandroid/util/SparseArray;Landroid/os/Handler;Lcom/android/server/pm/BroadcastHelper$$ExternalSyntheticLambda6;)V
HSPLcom/android/server/pm/PackageObserverHelper;-><init>()V
-PLcom/android/server/pm/PackageObserverHelper;->addObserver(Landroid/content/pm/PackageManagerInternal$PackageListObserver;)V
HSPLcom/android/server/pm/PackageProperty;-><init>()V
-HPLcom/android/server/pm/PackageProperty;->addAllProperties(Lcom/android/server/pm/pkg/AndroidPackage;)V
-HPLcom/android/server/pm/PackageProperty;->addComponentProperties(Ljava/util/List;Landroid/util/ArrayMap;)Landroid/util/ArrayMap;
-HPLcom/android/server/pm/PackageProperty;->addProperties(Ljava/util/Map;Landroid/util/ArrayMap;)Landroid/util/ArrayMap;
-HPLcom/android/server/pm/PackageProperty;->getApplicationProperty(Ljava/lang/String;Ljava/lang/String;)Landroid/content/pm/PackageManager$Property;
-PLcom/android/server/pm/PackageProperty;->getComponentProperty(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/content/pm/PackageManager$Property;
-PLcom/android/server/pm/PackageProperty;->getProperty(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/content/pm/PackageManager$Property;
+HSPLcom/android/server/pm/PackageProperty;->addComponentProperties(Ljava/util/List;Landroid/util/ArrayMap;)Landroid/util/ArrayMap;
+HSPLcom/android/server/pm/PackageProperty;->addProperties(Ljava/util/Map;Landroid/util/ArrayMap;)Landroid/util/ArrayMap;
PLcom/android/server/pm/PackageProperty;->getProperty(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/util/ArrayMap;)Landroid/content/pm/PackageManager$Property;
-PLcom/android/server/pm/PackageProperty;->queryProperty(Ljava/lang/String;ILjava/util/function/Predicate;)Ljava/util/List;
-PLcom/android/server/pm/PackageSessionVerifier;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/ApexManager;Ljava/util/function/Supplier;Landroid/os/Looper;)V
-HSPLcom/android/server/pm/PackageSetting$1;-><init>(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/utils/Watchable;)V
-HSPLcom/android/server/pm/PackageSetting$1;->createSnapshot()Lcom/android/server/pm/PackageSetting;
+PLcom/android/server/pm/PackageProperty;->removeComponentProperties(Ljava/util/List;Landroid/util/ArrayMap;)Landroid/util/ArrayMap;
+PLcom/android/server/pm/PackageProperty;->removeProperties(Ljava/util/Map;Landroid/util/ArrayMap;)Landroid/util/ArrayMap;
+PLcom/android/server/pm/PackageRemovedInfo;-><clinit>()V
+PLcom/android/server/pm/PackageRemovedInfo;-><init>()V
+PLcom/android/server/pm/PackageSessionVerifier$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/PackageSessionVerifier;Ljava/lang/Object;Lcom/android/server/pm/PackageInstallerSession$$ExternalSyntheticLambda8;I)V
+PLcom/android/server/pm/PackageSessionVerifier$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/pm/PackageSessionVerifier$1;-><init>(Lcom/android/server/pm/PackageSessionVerifier;Lcom/android/server/pm/PackageInstallerSession;Lcom/android/server/pm/PackageInstallerSession$$ExternalSyntheticLambda8;)V
+PLcom/android/server/pm/PackageSessionVerifier$1;->onPackageInstalled(Ljava/lang/String;ILjava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/pm/PackageSessionVerifier;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/ApexManager;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda41;Landroid/os/Looper;)V
+PLcom/android/server/pm/PackageSessionVerifier;->checkApexSignature(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/PackageSessionVerifier;->checkApexUpdateAllowed(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/PackageSessionVerifier;->checkRebootlessApex(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/PackageSessionVerifier;->createVerifyingSession(Lcom/android/server/pm/PackageInstallerSession;Lcom/android/server/pm/PackageSessionVerifier$1;)Lcom/android/server/pm/VerifyingSession;
+PLcom/android/server/pm/PackageSessionVerifier;->storeSession(Lcom/android/server/pm/StagingManager$StagedSession;)V
+PLcom/android/server/pm/PackageSessionVerifier;->verifyAPK(Lcom/android/server/pm/PackageInstallerSession;Lcom/android/server/pm/PackageInstallerSession$$ExternalSyntheticLambda8;)V
HSPLcom/android/server/pm/PackageSetting$1;->createSnapshot()Ljava/lang/Object;
-HPLcom/android/server/pm/PackageSetting;-><init>(Lcom/android/server/pm/PackageSetting;)V
HSPLcom/android/server/pm/PackageSetting;-><init>(Lcom/android/server/pm/PackageSetting;Z)V
HSPLcom/android/server/pm/PackageSetting;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;IILjava/util/UUID;)V
HSPLcom/android/server/pm/PackageSetting;->copyMimeGroups(Ljava/util/Map;)V
-HSPLcom/android/server/pm/PackageSetting;->copyPackageSetting(Lcom/android/server/pm/PackageSetting;Z)V
-HPLcom/android/server/pm/PackageSetting;->disableComponentLPw(Ljava/lang/String;I)Z
-HPLcom/android/server/pm/PackageSetting;->enableComponentLPw(Ljava/lang/String;I)Z
+HSPLcom/android/server/pm/PackageSetting;->copyPackageSetting(Lcom/android/server/pm/PackageSetting;Z)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
HPLcom/android/server/pm/PackageSetting;->getAndroidPackage()Lcom/android/server/pm/pkg/AndroidPackage;
HPLcom/android/server/pm/PackageSetting;->getApexModuleName()Ljava/lang/String;
HSPLcom/android/server/pm/PackageSetting;->getAppId()I
-PLcom/android/server/pm/PackageSetting;->getAppMetadataFilePath()Ljava/lang/String;
-HPLcom/android/server/pm/PackageSetting;->getAppMetadataSource()I
-HPLcom/android/server/pm/PackageSetting;->getBoolean(I)Z
+HSPLcom/android/server/pm/PackageSetting;->getBoolean(I)Z
HPLcom/android/server/pm/PackageSetting;->getCategoryOverride()I
-PLcom/android/server/pm/PackageSetting;->getCpuAbiOverride()Ljava/lang/String;
-HPLcom/android/server/pm/PackageSetting;->getCurrentEnabledStateLPr(Ljava/lang/String;I)I
-PLcom/android/server/pm/PackageSetting;->getDomainSetId()Ljava/util/UUID;
-PLcom/android/server/pm/PackageSetting;->getEnabled(I)I
+HPLcom/android/server/pm/PackageSetting;->getCpuAbiOverride()Ljava/lang/String;
+PLcom/android/server/pm/PackageSetting;->getHiddenApiEnforcementPolicy()I
+PLcom/android/server/pm/PackageSetting;->getInstallReason(I)I
PLcom/android/server/pm/PackageSetting;->getInstallSource()Lcom/android/server/pm/InstallSource;
-HPLcom/android/server/pm/PackageSetting;->getInstalled(I)Z
-HPLcom/android/server/pm/PackageSetting;->getInstantApp(I)Z
-HSPLcom/android/server/pm/PackageSetting;->getKeySetData()Lcom/android/server/pm/PackageKeySetData;
-HPLcom/android/server/pm/PackageSetting;->getLastModifiedTime()J
+PLcom/android/server/pm/PackageSetting;->getInstalled(I)Z
+HSPLcom/android/server/pm/PackageSetting;->getInstantApp(I)Z
HPLcom/android/server/pm/PackageSetting;->getLastUpdateTime()J
-PLcom/android/server/pm/PackageSetting;->getLegacyNativeLibraryPath()Ljava/lang/String;
-HSPLcom/android/server/pm/PackageSetting;->getLegacyPermissionState()Lcom/android/server/pm/permission/LegacyPermissionState;
-HPLcom/android/server/pm/PackageSetting;->getLoadingCompletedTime()J
-HPLcom/android/server/pm/PackageSetting;->getLoadingProgress()F
-HPLcom/android/server/pm/PackageSetting;->getMimeGroups()Ljava/util/Map;
-PLcom/android/server/pm/PackageSetting;->getOldPaths()Ljava/util/LinkedHashSet;
-PLcom/android/server/pm/PackageSetting;->getOrCreateUserState(I)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+PLcom/android/server/pm/PackageSetting;->getMimeGroups()Ljava/util/Map;
HSPLcom/android/server/pm/PackageSetting;->getPackageName()Ljava/lang/String;
PLcom/android/server/pm/PackageSetting;->getPath()Ljava/io/File;
-PLcom/android/server/pm/PackageSetting;->getPathString()Ljava/lang/String;
-HSPLcom/android/server/pm/PackageSetting;->getPkg()Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;
-HPLcom/android/server/pm/PackageSetting;->getPkgState()Lcom/android/server/pm/pkg/PackageStateUnserialized;
-HPLcom/android/server/pm/PackageSetting;->getPrimaryCpuAbi()Ljava/lang/String;
-PLcom/android/server/pm/PackageSetting;->getPrimaryCpuAbiLegacy()Ljava/lang/String;
-PLcom/android/server/pm/PackageSetting;->getRealName()Ljava/lang/String;
+HSPLcom/android/server/pm/PackageSetting;->getPrimaryCpuAbi()Ljava/lang/String;+]Lcom/android/internal/pm/parsing/pkg/AndroidPackageHidden;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
PLcom/android/server/pm/PackageSetting;->getRestrictUpdateHash()[B
HPLcom/android/server/pm/PackageSetting;->getSeInfo()Ljava/lang/String;
-HPLcom/android/server/pm/PackageSetting;->getSecondaryCpuAbi()Ljava/lang/String;
-HPLcom/android/server/pm/PackageSetting;->getSecondaryCpuAbiLegacy()Ljava/lang/String;
-HPLcom/android/server/pm/PackageSetting;->getSharedLibraryDependencies()Ljava/util/List;
-HSPLcom/android/server/pm/PackageSetting;->getSharedUserAppId()I
-HSPLcom/android/server/pm/PackageSetting;->getSignatures()Lcom/android/server/pm/PackageSignatures;
-HPLcom/android/server/pm/PackageSetting;->getSigningDetails()Landroid/content/pm/SigningDetails;
+HSPLcom/android/server/pm/PackageSetting;->getSecondaryCpuAbi()Ljava/lang/String;+]Lcom/android/internal/pm/parsing/pkg/AndroidPackageHidden;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+HSPLcom/android/server/pm/PackageSetting;->getSharedLibraryDependencies()Ljava/util/List;
+PLcom/android/server/pm/PackageSetting;->getSharedUserAppId()I
+PLcom/android/server/pm/PackageSetting;->getSigningDetails()Landroid/content/pm/SigningDetails;
+PLcom/android/server/pm/PackageSetting;->getSigningInfo()Landroid/content/pm/SigningInfo;
+PLcom/android/server/pm/PackageSetting;->getStateForUser(Landroid/os/UserHandle;)Lcom/android/server/pm/pkg/PackageUserState;
PLcom/android/server/pm/PackageSetting;->getTargetSdkVersion()I
-HPLcom/android/server/pm/PackageSetting;->getTransientState()Lcom/android/server/pm/pkg/PackageStateUnserialized;
HSPLcom/android/server/pm/PackageSetting;->getUserStates()Landroid/util/SparseArray;
-HPLcom/android/server/pm/PackageSetting;->getUsesLibraryFiles()Ljava/util/List;
-HPLcom/android/server/pm/PackageSetting;->getUsesSdkLibraries()[Ljava/lang/String;
-HPLcom/android/server/pm/PackageSetting;->getUsesSdkLibrariesOptional()[Z
-HPLcom/android/server/pm/PackageSetting;->getUsesSdkLibrariesVersionsMajor()[J
-HPLcom/android/server/pm/PackageSetting;->getUsesStaticLibraries()[Ljava/lang/String;
-HPLcom/android/server/pm/PackageSetting;->getUsesStaticLibrariesVersions()[J
-HPLcom/android/server/pm/PackageSetting;->getVersionCode()J
-HPLcom/android/server/pm/PackageSetting;->getVirtualPreload(I)Z
-HPLcom/android/server/pm/PackageSetting;->getVolumeUuid()Ljava/lang/String;
+PLcom/android/server/pm/PackageSetting;->getUsesLibraryFiles()Ljava/util/List;
+PLcom/android/server/pm/PackageSetting;->getUsesSdkLibraries()[Ljava/lang/String;
+PLcom/android/server/pm/PackageSetting;->getUsesSdkLibrariesOptional()[Z
+PLcom/android/server/pm/PackageSetting;->getUsesSdkLibrariesVersionsMajor()[J
+PLcom/android/server/pm/PackageSetting;->getUsesStaticLibraries()[Ljava/lang/String;
+PLcom/android/server/pm/PackageSetting;->getUsesStaticLibrariesVersions()[J
+PLcom/android/server/pm/PackageSetting;->getVersionCode()J
+HSPLcom/android/server/pm/PackageSetting;->getVolumeUuid()Ljava/lang/String;
HSPLcom/android/server/pm/PackageSetting;->hasSharedUser()Z
+HSPLcom/android/server/pm/PackageSetting;->isApex()Z
PLcom/android/server/pm/PackageSetting;->isDefaultToDeviceProtectedStorage()Z
-HPLcom/android/server/pm/PackageSetting;->isForceQueryableOverride()Z
+PLcom/android/server/pm/PackageSetting;->isExternalStorage()Z
+HSPLcom/android/server/pm/PackageSetting;->isForceQueryableOverride()Z
HPLcom/android/server/pm/PackageSetting;->isHiddenUntilInstalled()Z
-PLcom/android/server/pm/PackageSetting;->isIncremental()Z
PLcom/android/server/pm/PackageSetting;->isInstallPermissionsFixed()Z
-HPLcom/android/server/pm/PackageSetting;->isLoading()Z
-HPLcom/android/server/pm/PackageSetting;->isOdm()Z
-HPLcom/android/server/pm/PackageSetting;->isOem()Z
-PLcom/android/server/pm/PackageSetting;->isPendingRestore()Z
-HPLcom/android/server/pm/PackageSetting;->isPrivileged()Z
-HPLcom/android/server/pm/PackageSetting;->isProduct()Z
-HPLcom/android/server/pm/PackageSetting;->isScannedAsStoppedSystemApp()Z
-HPLcom/android/server/pm/PackageSetting;->isSystem()Z
-HPLcom/android/server/pm/PackageSetting;->isSystemExt()Z
-HPLcom/android/server/pm/PackageSetting;->isUpdateAvailable()Z
-HPLcom/android/server/pm/PackageSetting;->isUpdatedSystemApp()Z
-HPLcom/android/server/pm/PackageSetting;->isVendor()Z
-HSPLcom/android/server/pm/PackageSetting;->makeCache()Lcom/android/server/utils/SnapshotCache;
+PLcom/android/server/pm/PackageSetting;->isLeavingSharedUser()Z
+PLcom/android/server/pm/PackageSetting;->isLoading()Z
+HSPLcom/android/server/pm/PackageSetting;->isOdm()Z
+HSPLcom/android/server/pm/PackageSetting;->isOem()Z
+PLcom/android/server/pm/PackageSetting;->isPersistent()Z
+HSPLcom/android/server/pm/PackageSetting;->isPrivileged()Z
+HSPLcom/android/server/pm/PackageSetting;->isProduct()Z
+PLcom/android/server/pm/PackageSetting;->isScannedAsStoppedSystemApp()Z
+HSPLcom/android/server/pm/PackageSetting;->isSystem()Z
+HSPLcom/android/server/pm/PackageSetting;->isSystemExt()Z
+HSPLcom/android/server/pm/PackageSetting;->isUpdatedSystemApp()Z
+HSPLcom/android/server/pm/PackageSetting;->isVendor()Z
HSPLcom/android/server/pm/PackageSetting;->modifyUserState(I)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HPLcom/android/server/pm/PackageSetting;->modifyUserStateComponents(IZZ)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HPLcom/android/server/pm/PackageSetting;->readUserState(I)Lcom/android/server/pm/pkg/PackageUserStateInternal;
-HPLcom/android/server/pm/PackageSetting;->restoreComponentLPw(Ljava/lang/String;I)Z
-HSPLcom/android/server/pm/PackageSetting;->setAppId(I)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->setAppMetadataFilePath(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->setAppMetadataSource(I)Lcom/android/server/pm/PackageSetting;
+PLcom/android/server/pm/PackageSetting;->modifyUserStateComponents(IZZ)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+PLcom/android/server/pm/PackageSetting;->queryInstalledUsers([IZ)[I
+PLcom/android/server/pm/PackageSetting;->queryUsersInstalledOrHasData([I)[I
+HSPLcom/android/server/pm/PackageSetting;->readUserState(I)Lcom/android/server/pm/pkg/PackageUserStateInternal;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/pm/PackageSetting;->restoreComponentLPw(ILjava/lang/String;)Z
+PLcom/android/server/pm/PackageSetting;->restoreComponentSettings(I)V
+HSPLcom/android/server/pm/PackageSetting;->setAppId(I)V
+HSPLcom/android/server/pm/PackageSetting;->setAppMetadataFilePath(Ljava/lang/String;)V
+HSPLcom/android/server/pm/PackageSetting;->setAppMetadataSource(I)V
HSPLcom/android/server/pm/PackageSetting;->setBoolean(IZ)V
-HSPLcom/android/server/pm/PackageSetting;->setCategoryOverride(I)Lcom/android/server/pm/PackageSetting;
-HPLcom/android/server/pm/PackageSetting;->setCeDataInode(JI)V
-HSPLcom/android/server/pm/PackageSetting;->setCpuAbiOverride(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
-HPLcom/android/server/pm/PackageSetting;->setDeDataInode(JI)V
-HPLcom/android/server/pm/PackageSetting;->setDomainSetId(Ljava/util/UUID;)Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/PackageSetting;->setEnabled(IILjava/lang/String;)V
-HPLcom/android/server/pm/PackageSetting;->setFirstInstallTime(JI)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->setForceQueryableOverride(Z)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->setInstallSource(Lcom/android/server/pm/InstallSource;)Lcom/android/server/pm/PackageSetting;
-HPLcom/android/server/pm/PackageSetting;->setIsOrphaned(Z)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->setLastModifiedTime(J)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->setLastUpdateTime(J)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->setLegacyNativeLibraryPath(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->setLoadingCompletedTime(J)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->setLoadingProgress(F)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->setLongVersionCode(J)Lcom/android/server/pm/PackageSetting;
-HPLcom/android/server/pm/PackageSetting;->setMimeGroups(Ljava/util/Map;)Lcom/android/server/pm/PackageSetting;
-HPLcom/android/server/pm/PackageSetting;->setPkg(Lcom/android/server/pm/pkg/AndroidPackage;)Lcom/android/server/pm/PackageSetting;
-HPLcom/android/server/pm/PackageSetting;->setPkgStateLibraryFiles(Ljava/util/Collection;)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->setPrimaryCpuAbi(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->setRestrictUpdateHash([B)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->setScannedAsStoppedSystemApp(Z)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->setSecondaryCpuAbi(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->setSharedUserAppId(I)Lcom/android/server/pm/PackageSetting;
-HPLcom/android/server/pm/PackageSetting;->setSigningDetails(Landroid/content/pm/SigningDetails;)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->setTargetSdkVersion(I)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->setUpdateAvailable(Z)Lcom/android/server/pm/PackageSetting;
-HPLcom/android/server/pm/PackageSetting;->setUpdateOwnerPackage(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setFirstInstallTime(IJ)V
+PLcom/android/server/pm/PackageSetting;->setInstalled(IZ)V
+HSPLcom/android/server/pm/PackageSetting;->setLastUpdateTime(J)V
+HSPLcom/android/server/pm/PackageSetting;->setPageSizeAppCompatFlags(I)V
+PLcom/android/server/pm/PackageSetting;->setPath(Ljava/io/File;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setSharedUserAppId(I)V
+PLcom/android/server/pm/PackageSetting;->setUninstallReason(II)V
+HSPLcom/android/server/pm/PackageSetting;->setUpdateOwnerPackage(Ljava/lang/String;)V
HSPLcom/android/server/pm/PackageSetting;->setUserState(IJJIZZZZILandroid/util/ArrayMap;ZZLjava/lang/String;Landroid/util/ArraySet;Landroid/util/ArraySet;IILjava/lang/String;Ljava/lang/String;JILcom/android/server/pm/pkg/ArchiveState;)V
-HPLcom/android/server/pm/PackageSetting;->setUsesSdkLibraries([Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
-HPLcom/android/server/pm/PackageSetting;->setUsesSdkLibrariesOptional([Z)Lcom/android/server/pm/PackageSetting;
-HPLcom/android/server/pm/PackageSetting;->setUsesSdkLibrariesVersionsMajor([J)Lcom/android/server/pm/PackageSetting;
-HPLcom/android/server/pm/PackageSetting;->setUsesStaticLibraries([Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
-HPLcom/android/server/pm/PackageSetting;->setUsesStaticLibrariesVersions([J)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->setVolumeUuid(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/PackageSetting;->snapshot()Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/PackageSetting;->snapshot()Ljava/lang/Object;
-HPLcom/android/server/pm/PackageSetting;->toString()Ljava/lang/String;
-HPLcom/android/server/pm/PackageSetting;->updateFrom(Lcom/android/server/pm/PackageSetting;)V
-HPLcom/android/server/pm/PackageSetting;->updateMimeGroups(Ljava/util/Set;)Lcom/android/server/pm/PackageSetting;
+PLcom/android/server/pm/PackageSetting;->toString()Ljava/lang/String;
+HSPLcom/android/server/pm/PackageSetting;->updateMimeGroups(Ljava/util/Set;)V
HSPLcom/android/server/pm/PackageSignatures;-><init>()V
HSPLcom/android/server/pm/PackageSignatures;->readCertsListXml(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/ArrayList;Ljava/util/ArrayList;IZLandroid/content/pm/SigningDetails$Builder;)I
HSPLcom/android/server/pm/PackageSignatures;->readXml(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/ArrayList;)V
HPLcom/android/server/pm/PackageSignatures;->toString()Ljava/lang/String;
-HPLcom/android/server/pm/PackageSignatures;->writeCertsListXml(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/util/ArrayList;[Landroid/content/pm/Signature;Z)V
-HPLcom/android/server/pm/PackageSignatures;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Ljava/util/ArrayList;)V
+HPLcom/android/server/pm/PackageSignatures;->writeCertsListXml(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/util/ArrayList;[Landroid/content/pm/Signature;Z)V+]Landroid/content/pm/Signature;Landroid/content/pm/Signature;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/pm/PackageSignatures;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Ljava/util/ArrayList;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
HSPLcom/android/server/pm/PackageUsage;-><init>()V
-PLcom/android/server/pm/PackageUsage;->readInternal(Ljava/lang/Object;)V
-PLcom/android/server/pm/PackageUsage;->readInternal(Ljava/util/Map;)V
-HPLcom/android/server/pm/ParallelPackageParser$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/ParallelPackageParser;Ljava/io/File;I)V
-HPLcom/android/server/pm/ParallelPackageParser$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/pm/ParallelPackageParser$ParseResult;-><init>()V
-PLcom/android/server/pm/ParallelPackageParser;->$r8$lambda$uW6lAW1ixaCdJ_8ZINGbyQGIceg(Lcom/android/server/pm/ParallelPackageParser;Ljava/io/File;I)V
-HPLcom/android/server/pm/ParallelPackageParser;-><init>(Lcom/android/internal/pm/parsing/PackageParser2;Ljava/util/concurrent/ExecutorService;)V
-HPLcom/android/server/pm/ParallelPackageParser;->lambda$submit$0(Ljava/io/File;I)V
-PLcom/android/server/pm/ParallelPackageParser;->makeExecutorService()Ljava/util/concurrent/ExecutorService;
-HPLcom/android/server/pm/ParallelPackageParser;->parsePackage(Ljava/io/File;I)Lcom/android/internal/pm/parsing/pkg/ParsedPackage;
-HPLcom/android/server/pm/ParallelPackageParser;->submit(Ljava/io/File;I)V
-HPLcom/android/server/pm/ParallelPackageParser;->take()Lcom/android/server/pm/ParallelPackageParser$ParseResult;
+PLcom/android/server/pm/PackageUsage;->parseAsLong(Ljava/lang/String;)J
+PLcom/android/server/pm/PackageUsage;->readInternal(Lcom/android/server/utils/WatchedArrayMap;)V
+PLcom/android/server/pm/PackageUsage;->readLine(Ljava/io/InputStream;Ljava/lang/StringBuilder;)Ljava/lang/String;
+PLcom/android/server/pm/PackageUsage;->readVersion1LP(Ljava/util/Map;Ljava/io/InputStream;Ljava/lang/StringBuilder;)V
+PLcom/android/server/pm/PackageUsage;->writeInternal(Ljava/lang/Object;)V
+PLcom/android/server/pm/PackageVerificationResponse;-><init>(II)V
+PLcom/android/server/pm/PackageVerificationState;-><init>(Lcom/android/server/pm/VerifyingSession;)V
+PLcom/android/server/pm/PackageVerificationState;->isVerificationComplete()Z
+PLcom/android/server/pm/PackageVerificationState;->setVerifierResponse(II)V
+HSPLcom/android/server/pm/ParallelPackageParser$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/ParallelPackageParser;Ljava/io/File;I)V
+HSPLcom/android/server/pm/ParallelPackageParser$$ExternalSyntheticLambda0;->run()V
+HSPLcom/android/server/pm/ParallelPackageParser;-><init>(Lcom/android/internal/pm/parsing/PackageParser2;Ljava/util/concurrent/ExecutorService;)V
+HSPLcom/android/server/pm/ParallelPackageParser;->parsePackage(Ljava/io/File;I)Lcom/android/internal/pm/parsing/pkg/ParsedPackage;
+HSPLcom/android/server/pm/ParallelPackageParser;->take()Lcom/android/server/pm/ParallelPackageParser$ParseResult;
+PLcom/android/server/pm/PendingPackageBroadcasts$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
HSPLcom/android/server/pm/PendingPackageBroadcasts;-><init>()V
-PLcom/android/server/pm/PerPackageReadTimeouts;->parseDigestersList(Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
-HSPLcom/android/server/pm/Policy$PolicyBuilder;->-$$Nest$fgetmCerts(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/util/Set;
-HSPLcom/android/server/pm/Policy$PolicyBuilder;->-$$Nest$fgetmPkgMap(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/util/Map;
-HSPLcom/android/server/pm/Policy$PolicyBuilder;->-$$Nest$fgetmSeinfo(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/lang/String;
+PLcom/android/server/pm/PendingPackageBroadcasts;->addComponent(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pm/PendingPackageBroadcasts;->copiedMap()Landroid/util/SparseArray;
+PLcom/android/server/pm/PendingPackageBroadcasts;->getOrAllocate(ILjava/lang/String;)Ljava/util/ArrayList;
HSPLcom/android/server/pm/Policy$PolicyBuilder;-><init>()V
-HSPLcom/android/server/pm/Policy$PolicyBuilder;->addSignature(Ljava/lang/String;)Lcom/android/server/pm/Policy$PolicyBuilder;
-HSPLcom/android/server/pm/Policy$PolicyBuilder;->build()Lcom/android/server/pm/Policy;
-HSPLcom/android/server/pm/Policy$PolicyBuilder;->setGlobalSeinfoOrThrow(Ljava/lang/String;)Lcom/android/server/pm/Policy$PolicyBuilder;
-HSPLcom/android/server/pm/Policy$PolicyBuilder;->validateValue(Ljava/lang/String;)Z
-HSPLcom/android/server/pm/Policy;->-$$Nest$fgetmCerts(Lcom/android/server/pm/Policy;)Ljava/util/Set;
-HSPLcom/android/server/pm/Policy;->-$$Nest$fgetmPkgMap(Lcom/android/server/pm/Policy;)Ljava/util/Map;
-HSPLcom/android/server/pm/Policy;->-$$Nest$fgetmSeinfo(Lcom/android/server/pm/Policy;)Ljava/lang/String;
+HSPLcom/android/server/pm/Policy$PolicyBuilder;->addSignature(Ljava/lang/String;)V
HSPLcom/android/server/pm/Policy;-><init>(Lcom/android/server/pm/Policy$PolicyBuilder;)V
-HSPLcom/android/server/pm/Policy;-><init>(Lcom/android/server/pm/Policy$PolicyBuilder;Lcom/android/server/pm/Policy-IA;)V
-HPLcom/android/server/pm/Policy;->getMatchedSeInfo(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/lang/String;
-HSPLcom/android/server/pm/Policy;->getSignatures()Ljava/util/Set;
-HSPLcom/android/server/pm/Policy;->hasInnerPackages()Z
-HSPLcom/android/server/pm/PolicyComparator;-><init>()V
-HSPLcom/android/server/pm/PolicyComparator;->compare(Lcom/android/server/pm/Policy;Lcom/android/server/pm/Policy;)I
+HSPLcom/android/server/pm/Policy;->getMatchedSeInfo(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/lang/String;
HSPLcom/android/server/pm/PolicyComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLcom/android/server/pm/PolicyComparator;->foundDuplicate()Z
-HSPLcom/android/server/pm/PreferredActivity$1;-><init>(Lcom/android/server/pm/PreferredActivity;Lcom/android/server/pm/PreferredActivity;Lcom/android/server/utils/Watchable;)V
-HSPLcom/android/server/pm/PreferredActivity$1;->createSnapshot()Lcom/android/server/pm/PreferredActivity;
HSPLcom/android/server/pm/PreferredActivity$1;->createSnapshot()Ljava/lang/Object;
HSPLcom/android/server/pm/PreferredActivity;-><init>(Lcom/android/modules/utils/TypedXmlPullParser;)V
HSPLcom/android/server/pm/PreferredActivity;-><init>(Lcom/android/server/pm/PreferredActivity;)V
-HSPLcom/android/server/pm/PreferredActivity;-><init>(Lcom/android/server/pm/PreferredActivity;Lcom/android/server/pm/PreferredActivity-IA;)V
-HSPLcom/android/server/pm/PreferredActivity;->makeCache()Lcom/android/server/utils/SnapshotCache;
-HSPLcom/android/server/pm/PreferredActivity;->onReadTag(Ljava/lang/String;Lcom/android/modules/utils/TypedXmlPullParser;)Z
-HSPLcom/android/server/pm/PreferredActivity;->snapshot()Lcom/android/server/pm/PreferredActivity;
-PLcom/android/server/pm/PreferredActivity;->writeToXml(Lcom/android/modules/utils/TypedXmlSerializer;Z)V
+PLcom/android/server/pm/PreferredActivity;-><init>(Lcom/android/server/pm/WatchedIntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;Z)V
+PLcom/android/server/pm/PreferredActivityHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/PreferredActivityHelper;I)V
+PLcom/android/server/pm/PreferredActivityHelper$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
HSPLcom/android/server/pm/PreferredActivityHelper;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/BroadcastHelper;)V
-HSPLcom/android/server/pm/PreferredComponent;-><init>(Lcom/android/server/pm/PreferredComponent$Callbacks;Lcom/android/modules/utils/TypedXmlPullParser;)V
-HSPLcom/android/server/pm/PreferredComponent;->getParseError()Ljava/lang/String;
-HPLcom/android/server/pm/PreferredComponent;->writeToXml(Lcom/android/modules/utils/TypedXmlSerializer;Z)V
-HSPLcom/android/server/pm/PreferredIntentResolver$1;-><init>(Lcom/android/server/pm/PreferredIntentResolver;Lcom/android/server/pm/PreferredIntentResolver;Lcom/android/server/utils/Watchable;)V
-HSPLcom/android/server/pm/PreferredIntentResolver$1;->createSnapshot()Lcom/android/server/pm/PreferredIntentResolver;
+PLcom/android/server/pm/PreferredActivityHelper;->addPreferredActivity(Lcom/android/server/pm/Computer;Lcom/android/server/pm/WatchedIntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;ZIZ)V
+PLcom/android/server/pm/PreferredActivityHelper;->findPreferredActivityNotLocked(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;ZZI)Landroid/content/pm/ResolveInfo;
+PLcom/android/server/pm/PreferredActivityHelper;->findPreferredActivityNotLocked(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;ZZZIZ)Landroid/content/pm/ResolveInfo;
+PLcom/android/server/pm/PreferredActivityHelper;->isHomeFilter(Lcom/android/server/pm/WatchedIntentFilter;)Z
+HPLcom/android/server/pm/PreferredActivityHelper;->replacePreferredActivity(Lcom/android/server/pm/Computer;Lcom/android/server/pm/WatchedIntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V
+PLcom/android/server/pm/PreferredActivityHelper;->updateDefaultHomeNotLocked(Lcom/android/server/pm/Computer;I)Z
+PLcom/android/server/pm/PreferredComponent;-><init>(Lcom/android/server/pm/PreferredActivity;I[Landroid/content/ComponentName;Landroid/content/ComponentName;Z)V
+HSPLcom/android/server/pm/PreferredComponent;-><init>(Lcom/android/server/pm/PreferredActivity;Lcom/android/modules/utils/TypedXmlPullParser;)V
HSPLcom/android/server/pm/PreferredIntentResolver$1;->createSnapshot()Ljava/lang/Object;
HSPLcom/android/server/pm/PreferredIntentResolver;-><init>()V
HSPLcom/android/server/pm/PreferredIntentResolver;-><init>(Lcom/android/server/pm/PreferredIntentResolver;)V
-HSPLcom/android/server/pm/PreferredIntentResolver;-><init>(Lcom/android/server/pm/PreferredIntentResolver;Lcom/android/server/pm/PreferredIntentResolver-IA;)V
-HSPLcom/android/server/pm/PreferredIntentResolver;->getIntentFilter(Lcom/android/server/pm/PreferredActivity;)Landroid/content/IntentFilter;
+PLcom/android/server/pm/PreferredIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/Object;)V
HSPLcom/android/server/pm/PreferredIntentResolver;->getIntentFilter(Ljava/lang/Object;)Landroid/content/IntentFilter;
-PLcom/android/server/pm/PreferredIntentResolver;->isPackageForFilter(Ljava/lang/String;Lcom/android/server/pm/PreferredActivity;)Z
-PLcom/android/server/pm/PreferredIntentResolver;->isPackageForFilter(Ljava/lang/String;Ljava/lang/Object;)Z
-HSPLcom/android/server/pm/PreferredIntentResolver;->makeCache()Lcom/android/server/utils/SnapshotCache;
-HSPLcom/android/server/pm/PreferredIntentResolver;->newArray(I)[Lcom/android/server/pm/PreferredActivity;
HSPLcom/android/server/pm/PreferredIntentResolver;->newArray(I)[Ljava/lang/Object;
-HSPLcom/android/server/pm/PreferredIntentResolver;->shouldAddPreferredActivity(Lcom/android/server/pm/PreferredActivity;)Z
-HSPLcom/android/server/pm/PreferredIntentResolver;->snapshot()Lcom/android/server/pm/PreferredIntentResolver;
HSPLcom/android/server/pm/PreferredIntentResolver;->snapshot()Ljava/lang/Object;
-HSPLcom/android/server/pm/PreferredIntentResolver;->snapshot(Lcom/android/server/pm/PreferredActivity;)Lcom/android/server/pm/PreferredActivity;
HSPLcom/android/server/pm/PreferredIntentResolver;->snapshot(Ljava/lang/Object;)Ljava/lang/Object;
HSPLcom/android/server/pm/ProcessLoggingHandler;-><init>()V
HSPLcom/android/server/pm/ProtectedPackages;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/pm/ProtectedPackages;->hasDeviceOwnerOrProfileOwner(ILjava/lang/String;)Z
-HPLcom/android/server/pm/ProtectedPackages;->hasProtectedPackages(I)Z
-HPLcom/android/server/pm/ProtectedPackages;->isOwnerProtectedPackage(ILjava/lang/String;)Z
-HPLcom/android/server/pm/ProtectedPackages;->isPackageProtectedForUser(ILjava/lang/String;)Z
+PLcom/android/server/pm/ProtectedPackages;->getDeviceOwnerOrProfileOwnerPackage(I)Ljava/lang/String;
+PLcom/android/server/pm/ProtectedPackages;->hasDeviceOwnerOrProfileOwner(ILjava/lang/String;)Z
+PLcom/android/server/pm/ProtectedPackages;->isPackageProtectedForUser(ILjava/lang/String;)Z
PLcom/android/server/pm/ProtectedPackages;->isPackageStateProtected(ILjava/lang/String;)Z
-HPLcom/android/server/pm/ProtectedPackages;->isProtectedPackage(ILjava/lang/String;)Z
-PLcom/android/server/pm/ProtectedPackages;->setDeviceAndProfileOwnerPackages(ILjava/lang/String;Landroid/util/SparseArray;)V
-HPLcom/android/server/pm/QueryIntentActivitiesResult;-><init>(ZZLjava/util/List;)V
-PLcom/android/server/pm/ReconcilePackageUtils;-><clinit>()V
-HPLcom/android/server/pm/ReconcilePackageUtils;->isCompatSignatureUpdateNeeded(Lcom/android/server/pm/Settings$VersionInfo;)Z
-HPLcom/android/server/pm/ReconcilePackageUtils;->isRecoverSignatureUpdateNeeded(Lcom/android/server/pm/Settings$VersionInfo;)Z
-HPLcom/android/server/pm/ReconcilePackageUtils;->reconcilePackages(Ljava/util/List;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/pm/SharedLibrariesImpl;Lcom/android/server/pm/KeySetManagerService;Lcom/android/server/pm/Settings;)Ljava/util/List;
-HPLcom/android/server/pm/ReconciledPackage;-><init>(Ljava/util/List;Ljava/util/Map;Lcom/android/server/pm/InstallRequest;Lcom/android/server/pm/DeletePackageAction;Ljava/util/List;Landroid/content/pm/SigningDetails;ZZ)V
-HPLcom/android/server/pm/ReconciledPackage;->getCombinedAvailablePackages()Ljava/util/Map;
+PLcom/android/server/pm/ProtectedPackages;->isProtectedPackage(ILjava/lang/String;)Z
+HSPLcom/android/server/pm/ReconcilePackageUtils;-><clinit>()V
+PLcom/android/server/pm/ReconcilePackageUtils;->isRecoverSignatureUpdateNeeded(Lcom/android/server/pm/Settings$VersionInfo;)Z
+HSPLcom/android/server/pm/ReconcilePackageUtils;->reconcilePackages(Ljava/util/List;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/pm/SharedLibrariesImpl;Lcom/android/server/pm/KeySetManagerService;Lcom/android/server/pm/Settings;Lcom/android/server/SystemConfig;)Ljava/util/List;
+HSPLcom/android/server/pm/ReconciledPackage;-><init>(Ljava/util/List;Ljava/util/Map;Lcom/android/server/pm/InstallRequest;Lcom/android/server/pm/DeletePackageAction;Ljava/util/List;Landroid/content/pm/SigningDetails;ZZ)V
HSPLcom/android/server/pm/RemovePackageHelper;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/AppDataHelper;Lcom/android/server/pm/BroadcastHelper;)V
+PLcom/android/server/pm/RemovePackageHelper;->cleanPackageDataStructuresLILPw(Lcom/android/server/pm/pkg/AndroidPackage;Z)V
+PLcom/android/server/pm/RemovePackageHelper;->cleanUpResources(Ljava/io/File;Ljava/lang/String;)V
+PLcom/android/server/pm/RemovePackageHelper;->removeCodePathLI(Ljava/io/File;)V
+PLcom/android/server/pm/RemovePackageHelper;->removePackage(Lcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/pm/RemovePackageHelper;->removePackageLI(Ljava/lang/String;)V
HSPLcom/android/server/pm/ResilientAtomicFile;-><init>(Ljava/io/File;Ljava/io/File;Ljava/io/File;ILjava/lang/String;Lcom/android/server/pm/ResilientAtomicFile$ReadEventLogger;)V
HSPLcom/android/server/pm/ResilientAtomicFile;->close()V
-HPLcom/android/server/pm/ResilientAtomicFile;->finalizeOutStream(Ljava/io/FileOutputStream;)V
HPLcom/android/server/pm/ResilientAtomicFile;->finishWrite(Ljava/io/FileOutputStream;)V
HSPLcom/android/server/pm/ResilientAtomicFile;->openRead()Ljava/io/FileInputStream;
HPLcom/android/server/pm/ResilientAtomicFile;->startWrite()Ljava/io/FileOutputStream;
-HSPLcom/android/server/pm/ResolveIntentHelper;-><init>(Landroid/content/Context;Lcom/android/server/pm/PreferredActivityHelper;Lcom/android/server/compat/PlatformCompat;Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/UserNeedsBadgingCache;Ljava/util/function/Supplier;Ljava/util/function/Supplier;Landroid/os/Handler;)V
-PLcom/android/server/pm/ResolveIntentHelper;->applyPostContentProviderResolutionFilter(Lcom/android/server/pm/Computer;Ljava/util/List;Ljava/lang/String;II)Ljava/util/List;
+PLcom/android/server/pm/ResilientAtomicFile;->toString()Ljava/lang/String;
+HSPLcom/android/server/pm/ResolveIntentHelper;-><init>(Landroid/content/Context;Lcom/android/server/pm/PreferredActivityHelper;Lcom/android/server/compat/PlatformCompat;Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/UserNeedsBadgingCache;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda38;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda38;)V
+PLcom/android/server/pm/ResolveIntentHelper;->applyPostContentProviderResolutionFilter(Lcom/android/server/pm/Computer;Ljava/util/List;Ljava/lang/String;II)V
HPLcom/android/server/pm/ResolveIntentHelper;->chooseBestActivity(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JJLjava/util/List;IZ)Landroid/content/pm/ResolveInfo;
-PLcom/android/server/pm/ResolveIntentHelper;->filterNonExportedComponents(Landroid/content/Intent;IILjava/util/List;Lcom/android/server/compat/PlatformCompat;Ljava/lang/String;Lcom/android/server/pm/Computer;Landroid/os/Handler;)V
-PLcom/android/server/pm/ResolveIntentHelper;->queryIntentContentProvidersInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
-PLcom/android/server/pm/ResolveIntentHelper;->queryIntentReceiversInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JII)Ljava/util/List;
-HPLcom/android/server/pm/ResolveIntentHelper;->queryIntentReceiversInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JIIZ)Ljava/util/List;
-PLcom/android/server/pm/ResolveIntentHelper;->resolveIntentInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JJIZI)Landroid/content/pm/ResolveInfo;
-HPLcom/android/server/pm/ResolveIntentHelper;->resolveIntentInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JJIZIZI)Landroid/content/pm/ResolveInfo;
-HPLcom/android/server/pm/ResolveIntentHelper;->resolveServiceInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JII)Landroid/content/pm/ResolveInfo;
+HPLcom/android/server/pm/ResolveIntentHelper;->queryIntentReceiversInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JIIIZ)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;
+HPLcom/android/server/pm/ResolveIntentHelper;->resolveIntentInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JJIZII)Landroid/content/pm/ResolveInfo;
+HPLcom/android/server/pm/ResolveIntentHelper;->resolveServiceInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JIIIZ)Landroid/content/pm/ResolveInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
HSPLcom/android/server/pm/RestrictionsSet;-><init>()V
HPLcom/android/server/pm/RestrictionsSet;->getRestrictions(I)Landroid/os/Bundle;
-PLcom/android/server/pm/RestrictionsSet;->getRestrictionsNonNull(I)Landroid/os/Bundle;
HSPLcom/android/server/pm/RestrictionsSet;->updateRestrictions(ILandroid/os/Bundle;)Z
HSPLcom/android/server/pm/SELinuxMMAC;-><clinit>()V
-HPLcom/android/server/pm/SELinuxMMAC;->getPartition(Lcom/android/server/pm/pkg/PackageState;)Ljava/lang/String;
-HPLcom/android/server/pm/SELinuxMMAC;->getSeInfo(Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/SharedUserApi;Lcom/android/server/compat/PlatformCompat;)Ljava/lang/String;
-HPLcom/android/server/pm/SELinuxMMAC;->getSeInfo(Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/pkg/AndroidPackage;ZI)Ljava/lang/String;
-HPLcom/android/server/pm/SELinuxMMAC;->getTargetSdkVersionForSeInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/SharedUserApi;Lcom/android/server/compat/PlatformCompat;)I
-HSPLcom/android/server/pm/SELinuxMMAC;->readInstallPolicy()Z
-HSPLcom/android/server/pm/SELinuxMMAC;->readSeinfo(Lorg/xmlpull/v1/XmlPullParser;)V
+HSPLcom/android/server/pm/SELinuxMMAC;->getSeInfo(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/compat/PlatformCompat;)Ljava/lang/String;
+HSPLcom/android/server/pm/SELinuxMMAC;->getSeInfo(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/pkg/AndroidPackage;ZI)Ljava/lang/String;
+HSPLcom/android/server/pm/SELinuxMMAC;->readInstallPolicy()V
HSPLcom/android/server/pm/SELinuxMMAC;->readSignerOrThrow(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/pm/Policy;
-HPLcom/android/server/pm/ScanPackageUtils;->adjustScanFlagsWithPackageSetting(ILcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Landroid/os/UserHandle;)I
-HPLcom/android/server/pm/ScanPackageUtils;->applyAdjustedAbiToSharedUser(Lcom/android/server/pm/SharedUserSetting;Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Ljava/lang/String;)Ljava/util/List;
-HPLcom/android/server/pm/ScanPackageUtils;->applyPolicy(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ILcom/android/server/pm/pkg/AndroidPackage;Z)V
-HPLcom/android/server/pm/ScanPackageUtils;->assertMinSignatureSchemeIsValid(Lcom/android/server/pm/pkg/AndroidPackage;I)V
+PLcom/android/server/pm/SaferIntentUtils$$ExternalSyntheticLambda1;->get()Ljava/lang/Object;
+HPLcom/android/server/pm/SaferIntentUtils$IntentArgs;-><init>(Landroid/content/Intent;Ljava/lang/String;ZZII)V
+HPLcom/android/server/pm/SaferIntentUtils$IntentArgs;->isChangeEnabled(J)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
+PLcom/android/server/pm/SaferIntentUtils$IntentArgs;->reportEvent(IZ)V
+PLcom/android/server/pm/SaferIntentUtils;-><clinit>()V
+HPLcom/android/server/pm/SaferIntentUtils;->blockNullAction(Lcom/android/server/pm/SaferIntentUtils$IntentArgs;Ljava/util/List;)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+HPLcom/android/server/pm/SaferIntentUtils;->enforceIntentFilterMatching(Lcom/android/server/pm/SaferIntentUtils$IntentArgs;Ljava/util/List;)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/pm/SaferIntentUtils;->filterNonExportedComponents(Lcom/android/server/pm/SaferIntentUtils$IntentArgs;Ljava/util/List;)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/pm/SaferIntentUtils;->infoToComponent(Landroid/content/pm/ComponentInfo;Lcom/android/server/pm/resolution/ComponentResolverApi;Z)Lcom/android/internal/pm/pkg/component/ParsedMainComponent;+]Landroid/content/pm/ComponentInfo;Landroid/content/pm/ActivityInfo;,Landroid/content/pm/ServiceInfo;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;
+PLcom/android/server/pm/SaferIntentUtils;->reportUnsafeIntentEvent(IIILandroid/content/Intent;Ljava/lang/String;Z)V
+PLcom/android/server/pm/ScanPackageUtils;->apkHasCode(Ljava/lang/String;)Z
+PLcom/android/server/pm/ScanPackageUtils;->applyAdjustedAbiToSharedUser(Lcom/android/server/pm/SharedUserSetting;Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Ljava/lang/String;)Ljava/util/List;
+HSPLcom/android/server/pm/ScanPackageUtils;->applyPolicy(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ILcom/android/server/pm/pkg/AndroidPackage;Z)V
PLcom/android/server/pm/ScanPackageUtils;->assertPackageProcesses(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/List;Ljava/util/Map;Ljava/lang/String;)V
-HPLcom/android/server/pm/ScanPackageUtils;->assertProcessesAreValid(Lcom/android/server/pm/pkg/AndroidPackage;)V
-HPLcom/android/server/pm/ScanPackageUtils;->collectCertificatesLI(Lcom/android/server/pm/PackageSetting;Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Lcom/android/server/pm/Settings$VersionInfo;ZZZ)V
-HPLcom/android/server/pm/ScanPackageUtils;->configurePackageComponents(Lcom/android/server/pm/pkg/AndroidPackage;)V
-HPLcom/android/server/pm/ScanPackageUtils;->getAppLib32InstallDir()Ljava/io/File;
-HPLcom/android/server/pm/ScanPackageUtils;->getRealPackageName(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;Z)Ljava/lang/String;
-PLcom/android/server/pm/ScanPackageUtils;->getVendorPartitionVersion()I
-HPLcom/android/server/pm/ScanPackageUtils;->isPackageRenamed(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Z
-HPLcom/android/server/pm/ScanPackageUtils;->scanPackageOnlyLI(Lcom/android/server/pm/ScanRequest;Lcom/android/server/pm/PackageManagerServiceInjector;ZJ)Lcom/android/server/pm/ScanResult;
-PLcom/android/server/pm/ScanPackageUtils;->setInstantAppForUser(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageSetting;IZZ)V
+HSPLcom/android/server/pm/ScanPackageUtils;->assertProcessesAreValid(Lcom/android/server/pm/pkg/AndroidPackage;)V
+HSPLcom/android/server/pm/ScanPackageUtils;->getVendorPartitionVersion()I
+HSPLcom/android/server/pm/ScanPackageUtils;->scanPackageOnly(Lcom/android/server/pm/ScanRequest;Lcom/android/server/pm/PackageManagerServiceInjector;ZJ)Lcom/android/server/pm/ScanResult;
+HSPLcom/android/server/pm/ScanPackageUtils;->setInstantAppForUser(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageSetting;IZZ)V
HSPLcom/android/server/pm/ScanPartition;-><init>(Landroid/content/pm/PackagePartitions$SystemPartition;)V
-HPLcom/android/server/pm/ScanPartition;-><init>(Ljava/io/File;Lcom/android/server/pm/ScanPartition;Lcom/android/server/pm/ApexManager$ActiveApexInfo;)V
-HSPLcom/android/server/pm/ScanPartition;->scanFlagForPartition(Landroid/content/pm/PackagePartitions$SystemPartition;)I
-HPLcom/android/server/pm/ScanPartition;->toString()Ljava/lang/String;
-HPLcom/android/server/pm/ScanRequest;-><init>(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Ljava/lang/String;IIZLandroid/os/UserHandle;Ljava/lang/String;)V
-HPLcom/android/server/pm/ScanResult;-><init>(Lcom/android/server/pm/ScanRequest;Lcom/android/server/pm/PackageSetting;Ljava/util/List;ZILandroid/content/pm/SharedLibraryInfo;Landroid/content/pm/SharedLibraryInfo;Ljava/util/List;)V
+HSPLcom/android/server/pm/ScanPartition;-><init>(Ljava/io/File;Lcom/android/server/pm/ScanPartition;Lcom/android/server/pm/ApexManager$ActiveApexInfo;)V
+HSPLcom/android/server/pm/ScanPartition;->toString()Ljava/lang/String;
+HSPLcom/android/server/pm/ScanRequest;-><init>(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Ljava/lang/String;IIZLandroid/os/UserHandle;Ljava/lang/String;)V
+HSPLcom/android/server/pm/ScanResult;-><init>(Lcom/android/server/pm/ScanRequest;Lcom/android/server/pm/PackageSetting;ZLandroid/content/pm/SharedLibraryInfo;Landroid/content/pm/SharedLibraryInfo;Ljava/util/List;)V
HSPLcom/android/server/pm/SettingBase;-><init>(II)V
HSPLcom/android/server/pm/SettingBase;-><init>(Lcom/android/server/pm/SettingBase;)V
-HSPLcom/android/server/pm/SettingBase;->copySettingBase(Lcom/android/server/pm/SettingBase;)V
HSPLcom/android/server/pm/SettingBase;->dispatchChange(Lcom/android/server/utils/Watchable;)V
-HSPLcom/android/server/pm/SettingBase;->getFlags()I
-HSPLcom/android/server/pm/SettingBase;->getLegacyPermissionState()Lcom/android/server/pm/permission/LegacyPermissionState;
-HSPLcom/android/server/pm/SettingBase;->getPrivateFlags()I
-HSPLcom/android/server/pm/SettingBase;->onChanged()V
+HSPLcom/android/server/pm/SettingBase;->onChanged$2()V
HSPLcom/android/server/pm/SettingBase;->registerObserver(Lcom/android/server/utils/Watcher;)V
-HSPLcom/android/server/pm/SettingBase;->setFlags(I)Lcom/android/server/pm/SettingBase;
-HSPLcom/android/server/pm/SettingBase;->setPrivateFlags(I)Lcom/android/server/pm/SettingBase;
+HSPLcom/android/server/pm/SettingBase;->setPrivateFlags(I)V
HSPLcom/android/server/pm/SettingBase;->unregisterObserver(Lcom/android/server/utils/Watcher;)V
PLcom/android/server/pm/Settings$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/Settings;IJZ)V
PLcom/android/server/pm/Settings$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/pm/Settings$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/utils/WatchedArrayMap;)V
-PLcom/android/server/pm/Settings$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/pm/Settings;)V
-PLcom/android/server/pm/Settings$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/Settings$$ExternalSyntheticLambda1;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/pm/Settings$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
HSPLcom/android/server/pm/Settings$1;-><init>(Lcom/android/server/pm/Settings;)V
HSPLcom/android/server/pm/Settings$1;->onChange(Lcom/android/server/utils/Watchable;)V
-HSPLcom/android/server/pm/Settings$2;-><init>(Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;Lcom/android/server/utils/Watchable;)V
-HSPLcom/android/server/pm/Settings$2;->createSnapshot()Lcom/android/server/pm/Settings;
HSPLcom/android/server/pm/Settings$2;->createSnapshot()Ljava/lang/Object;
HSPLcom/android/server/pm/Settings$3;-><init>(Lcom/android/server/pm/Settings;)V
-PLcom/android/server/pm/Settings$3;->accept(Ljava/lang/Integer;)V
PLcom/android/server/pm/Settings$3;->accept(Ljava/lang/Object;)V
-PLcom/android/server/pm/Settings$KeySetToValueMap;-><init>(Ljava/util/Set;Ljava/lang/Object;)V
-PLcom/android/server/pm/Settings$KeySetToValueMap;->keySet()Ljava/util/Set;
-HPLcom/android/server/pm/Settings$KeySetToValueMap;->size()I
-PLcom/android/server/pm/Settings$RuntimePermissionPersistence$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;Lcom/android/server/pm/PackageManagerTracedLock;ZLcom/android/server/pm/permission/LegacyPermissionDataProvider;ILcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;Landroid/os/Handler;)V
+HSPLcom/android/server/pm/Settings$KeySetToValueMap;-><init>(Ljava/util/Set;Ljava/lang/Object;)V
+HSPLcom/android/server/pm/Settings$KeySetToValueMap;->keySet()Ljava/util/Set;
+HSPLcom/android/server/pm/Settings$KeySetToValueMap;->size()I
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;Lcom/android/server/pm/PackageManagerTracedLock;ZLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;ILcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;Landroid/os/Handler;)V
PLcom/android/server/pm/Settings$RuntimePermissionPersistence$$ExternalSyntheticLambda0;->run()V
-HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;-><init>(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;)V
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;-><init>(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;I)V
PLcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence$PersistenceHandler;-><init>(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;)V
-PLcom/android/server/pm/Settings$RuntimePermissionPersistence$PersistenceHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->$r8$lambda$jSdj7sarDYdqZlpU1yKlMrhFaeI(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;Lcom/android/server/pm/PackageManagerTracedLock;ZLcom/android/server/pm/permission/LegacyPermissionDataProvider;ILcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;Landroid/os/Handler;)V
-PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->-$$Nest$fgetmInvokeWriteUserStateAsyncCallback(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;)Ljava/util/function/Consumer;
-PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->-$$Nest$mwritePendingStates(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;)V
HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;-><clinit>()V
-HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;-><init>(Lcom/android/permission/persistence/RuntimePermissionsPersistence;Ljava/util/function/Consumer;)V
-PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->getExtendedFingerprint(J)Ljava/lang/String;
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;-><init>(Lcom/android/permission/persistence/RuntimePermissionsPersistence;Lcom/android/server/pm/Settings$3;)V
PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->getPackagePermissions(ILcom/android/server/utils/WatchedArrayMap;)Ljava/util/Map;
PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->getPermissionsFromPermissionsState(Lcom/android/server/pm/permission/LegacyPermissionState;I)Ljava/util/List;
PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->getShareUsersPermissions(ILcom/android/server/utils/WatchedArrayMap;)Ljava/util/Map;
-PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->lambda$writeStateForUser$0(Lcom/android/server/pm/PackageManagerTracedLock;ZLcom/android/server/pm/permission/LegacyPermissionDataProvider;ILcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;Landroid/os/Handler;)V
-PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->nextWritePermissionDelayMillis()J
HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->readPermissionsState(Ljava/util/List;Lcom/android/server/pm/permission/LegacyPermissionState;I)V
HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->readStateForUserSync(ILcom/android/server/pm/Settings$VersionInfo;Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;Ljava/io/File;)V
-PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->setPermissionControllerVersion(J)V
-PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->uniformRandom(DD)J
PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writePendingStates()V
-PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writeStateForUser(ILcom/android/server/pm/permission/LegacyPermissionDataProvider;Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;Landroid/os/Handler;Lcom/android/server/pm/PackageManagerTracedLock;Z)V
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writeStateForUser(ILcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;Landroid/os/Handler;Lcom/android/server/pm/PackageManagerTracedLock;Z)V
PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writeStateForUserAsync(I)V
-HSPLcom/android/server/pm/Settings$VersionInfo;-><init>()V
-PLcom/android/server/pm/Settings;->$r8$lambda$53NmgrwLNm2y5xSEATqhfDNuHBU(Lcom/android/server/pm/Settings;Lcom/android/server/pm/SharedUserSetting;)V
-PLcom/android/server/pm/Settings;->$r8$lambda$xF8vBosZYCuleRIdy4wr1C_PPCw(Lcom/android/server/pm/Settings;IJZ)V
-PLcom/android/server/pm/Settings;->-$$Nest$fgetmHandler(Lcom/android/server/pm/Settings;)Landroid/os/Handler;
-PLcom/android/server/pm/Settings;->-$$Nest$fgetmLock(Lcom/android/server/pm/Settings;)Lcom/android/server/pm/PackageManagerTracedLock;
-PLcom/android/server/pm/Settings;->-$$Nest$fgetmPermissionDataProvider(Lcom/android/server/pm/Settings;)Lcom/android/server/pm/permission/LegacyPermissionDataProvider;
-PLcom/android/server/pm/Settings;->-$$Nest$fgetmRuntimePermissionsPersistence(Lcom/android/server/pm/Settings;)Lcom/android/server/pm/Settings$RuntimePermissionPersistence;
-HSPLcom/android/server/pm/Settings;->-$$Nest$fgetmWatchable(Lcom/android/server/pm/Settings;)Lcom/android/server/utils/WatchableImpl;
HSPLcom/android/server/pm/Settings;-><clinit>()V
HSPLcom/android/server/pm/Settings;-><init>(Lcom/android/server/pm/Settings;)V
-HSPLcom/android/server/pm/Settings;-><init>(Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings-IA;)V
-HSPLcom/android/server/pm/Settings;-><init>(Ljava/io/File;Lcom/android/permission/persistence/RuntimePermissionsPersistence;Lcom/android/server/pm/permission/LegacyPermissionDataProvider;Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Landroid/os/Handler;Lcom/android/server/pm/PackageManagerTracedLock;)V
+HSPLcom/android/server/pm/Settings;-><init>(Ljava/io/File;Lcom/android/permission/persistence/RuntimePermissionsPersistence;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Landroid/os/Handler;Lcom/android/server/pm/PackageManagerTracedLock;)V
HSPLcom/android/server/pm/Settings;->addInstallerPackageNames(Lcom/android/server/pm/InstallSource;)V
HSPLcom/android/server/pm/Settings;->addPackageLPw(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;IIILjava/util/UUID;)Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/Settings;->addPackageSettingLPw(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;)V
-HSPLcom/android/server/pm/Settings;->addSharedUserLPw(Ljava/lang/String;III)Lcom/android/server/pm/SharedUserSetting;
+HSPLcom/android/server/pm/Settings;->addSharedUserLPw(IIILjava/lang/String;)Lcom/android/server/pm/SharedUserSetting;
PLcom/android/server/pm/Settings;->checkAndPruneSharedUserLPw(Lcom/android/server/pm/SharedUserSetting;Z)Z
-HPLcom/android/server/pm/Settings;->createMimeGroups(Ljava/util/Set;)Ljava/util/Map;
-HPLcom/android/server/pm/Settings;->createNewSetting(Ljava/lang/String;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Ljava/lang/String;Lcom/android/server/pm/SharedUserSetting;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JIILandroid/os/UserHandle;ZZZZLcom/android/server/pm/UserManagerService;[Ljava/lang/String;[J[Z[Ljava/lang/String;[JLjava/util/Set;Ljava/util/UUID;I[B)Lcom/android/server/pm/PackageSetting;
+PLcom/android/server/pm/Settings;->disableSystemPackageLPw(Ljava/lang/String;)Z
HSPLcom/android/server/pm/Settings;->dispatchChange(Lcom/android/server/utils/Watchable;)V
PLcom/android/server/pm/Settings;->dumpGidsLPr(Ljava/io/PrintWriter;Ljava/lang/String;[I)V
-HPLcom/android/server/pm/Settings;->dumpInstallPermissionsLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/permission/LegacyPermissionState;Ljava/util/List;)V
-PLcom/android/server/pm/Settings;->dumpPackageLPr(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/permission/LegacyPermissionState;Ljava/text/SimpleDateFormat;Ljava/util/Date;Ljava/util/List;ZZ)V
-HPLcom/android/server/pm/Settings;->dumpPackagesLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;Z)V
-PLcom/android/server/pm/Settings;->dumpPermissions(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;)V
-HPLcom/android/server/pm/Settings;->dumpPreferred(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
+HPLcom/android/server/pm/Settings;->dumpInstallPermissionsLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/permission/LegacyPermissionState;Ljava/util/List;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/io/PrintWriter;Lcom/android/internal/util/FastPrintWriter;]Ljava/util/Collection;Ljava/util/Collections$EmptyList;,Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/ArrayList$Itr;,Ljava/util/Collections$EmptyIterator;,Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/pm/Settings;->dumpPackageLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/permission/LegacyPermissionState;Ljava/text/SimpleDateFormat;Ljava/util/Date;Ljava/util/List;ZZ)V
HPLcom/android/server/pm/Settings;->dumpRuntimePermissionsLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Ljava/util/Collection;Z)V
-HPLcom/android/server/pm/Settings;->dumpSharedUsersLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;Z)V
-HPLcom/android/server/pm/Settings;->dumpSplitNames(Ljava/io/PrintWriter;Lcom/android/server/pm/pkg/AndroidPackage;)V
HSPLcom/android/server/pm/Settings;->editPreferredActivitiesLPw(I)Lcom/android/server/pm/PreferredIntentResolver;
HSPLcom/android/server/pm/Settings;->findOrCreateVersion(Ljava/lang/String;)Lcom/android/server/pm/Settings$VersionInfo;
-PLcom/android/server/pm/Settings;->getActiveUsers(Lcom/android/server/pm/UserManagerService;Z)Ljava/util/List;
PLcom/android/server/pm/Settings;->getAllSharedUsersLPw()Ljava/util/Collection;
-PLcom/android/server/pm/Settings;->getAllUsers(Lcom/android/server/pm/UserManagerService;)Ljava/util/List;
-PLcom/android/server/pm/Settings;->getApplicationEnabledSettingLPr(Ljava/lang/String;I)I
-HPLcom/android/server/pm/Settings;->getComponentEnabledSettingLPr(Landroid/content/ComponentName;I)I
-HPLcom/android/server/pm/Settings;->getCrossProfileIntentResolver(I)Lcom/android/server/pm/CrossProfileIntentResolver;
-HSPLcom/android/server/pm/Settings;->getDisabledSystemPackagesLocked()Lcom/android/server/utils/WatchedArrayMap;
-HPLcom/android/server/pm/Settings;->getDisabledSystemPkgLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/Settings;->getInternalVersion()Lcom/android/server/pm/Settings$VersionInfo;
-PLcom/android/server/pm/Settings;->getKeySetManagerService()Lcom/android/server/pm/KeySetManagerService;
+HSPLcom/android/server/pm/Settings;->getDisabledSystemPkgLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/Settings;->getPackageLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/Settings;->getPackagesLocked()Lcom/android/server/utils/WatchedArrayMap;
HSPLcom/android/server/pm/Settings;->getRenamedPackageLPr(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/server/pm/Settings;->getSettingLPr(I)Lcom/android/server/pm/SettingBase;
-HSPLcom/android/server/pm/Settings;->getSettingsFile()Lcom/android/server/pm/ResilientAtomicFile;
-HPLcom/android/server/pm/Settings;->getSharedUserLPw(Ljava/lang/String;IIZ)Lcom/android/server/pm/SharedUserSetting;
+HSPLcom/android/server/pm/Settings;->getSettingLPr(I)Lcom/android/server/pm/SettingBase;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/pm/Settings;->getSharedUserLPw(Ljava/lang/String;Z)Lcom/android/server/pm/SharedUserSetting;
HSPLcom/android/server/pm/Settings;->getSharedUserSettingLPr(Lcom/android/server/pm/PackageSetting;)Lcom/android/server/pm/SharedUserSetting;
-HPLcom/android/server/pm/Settings;->getSharedUserSettingLPr(Ljava/lang/String;)Lcom/android/server/pm/SharedUserSetting;
HSPLcom/android/server/pm/Settings;->getUserPackagesStateFile(I)Lcom/android/server/pm/ResilientAtomicFile;
-HSPLcom/android/server/pm/Settings;->getUserRuntimePermissionsFile(I)Ljava/io/File;
HSPLcom/android/server/pm/Settings;->getUserSystemDirectory(I)Ljava/io/File;
-HPLcom/android/server/pm/Settings;->getUsers(Lcom/android/server/pm/UserManagerService;ZZ)Ljava/util/List;
+HSPLcom/android/server/pm/Settings;->getUsers(Lcom/android/server/pm/UserManagerService;ZZ)Ljava/util/List;
PLcom/android/server/pm/Settings;->getVolumePackagesLPr(Ljava/lang/String;)Ljava/util/List;
-HPLcom/android/server/pm/Settings;->insertPackageSettingLPw(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/pkg/AndroidPackage;)V
-PLcom/android/server/pm/Settings;->invalidatePackageCache()V
-PLcom/android/server/pm/Settings;->lambda$pruneSharedUsersLPw$0(Lcom/android/server/pm/SharedUserSetting;)V
-PLcom/android/server/pm/Settings;->lambda$writePackageRestrictionsLPr$1(IJZ)V
-HSPLcom/android/server/pm/Settings;->makeCache()Lcom/android/server/utils/SnapshotCache;
-PLcom/android/server/pm/Settings;->onChanged()V
-HSPLcom/android/server/pm/Settings;->parseAppId(Lcom/android/modules/utils/TypedXmlPullParser;)I
-HSPLcom/android/server/pm/Settings;->parseSharedUserAppId(Lcom/android/modules/utils/TypedXmlPullParser;)I
-HPLcom/android/server/pm/Settings;->permissionFlagsToString(Ljava/lang/String;I)Ljava/lang/String;
-HPLcom/android/server/pm/Settings;->printFlags(Ljava/io/PrintWriter;I[Ljava/lang/Object;)V
-PLcom/android/server/pm/Settings;->pruneRenamedPackagesLPw()V
-PLcom/android/server/pm/Settings;->pruneSharedUsersLPw()V
+PLcom/android/server/pm/Settings;->permissionFlagsToString(I)Ljava/lang/String;
+HPLcom/android/server/pm/Settings;->printFlags(Ljava/io/PrintWriter;I[Ljava/lang/Object;)V+]Ljava/io/PrintWriter;Lcom/android/internal/util/FastPrintWriter;
HSPLcom/android/server/pm/Settings;->readComponentsLPr(Lcom/android/modules/utils/TypedXmlPullParser;)Landroid/util/ArraySet;
-HSPLcom/android/server/pm/Settings;->readCrossProfileIntentFiltersLPw(Lcom/android/modules/utils/TypedXmlPullParser;I)V
+HSPLcom/android/server/pm/Settings;->readCrossProfileIntentFiltersLPw(ILcom/android/modules/utils/TypedXmlPullParser;)V
HSPLcom/android/server/pm/Settings;->readDefaultApps(Lorg/xmlpull/v1/XmlPullParser;)Ljava/lang/String;
-HSPLcom/android/server/pm/Settings;->readDefaultAppsLPw(Lorg/xmlpull/v1/XmlPullParser;I)V
-HSPLcom/android/server/pm/Settings;->readLPw(Lcom/android/server/pm/Computer;Ljava/util/List;)Z
+HSPLcom/android/server/pm/Settings;->readDisabledSysPackageLPw(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/List;)V
+HSPLcom/android/server/pm/Settings;->readLPw(Lcom/android/server/pm/ComputerLocked;Ljava/util/List;)Z
HSPLcom/android/server/pm/Settings;->readPackageLPw(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/ArrayList;Landroid/util/ArrayMap;Ljava/util/List;Landroid/util/ArrayMap;)V
HSPLcom/android/server/pm/Settings;->readPackageRestrictionsLPr(ILandroid/util/ArrayMap;)V
-HSPLcom/android/server/pm/Settings;->readPersistentPreferredActivitiesLPw(Lcom/android/modules/utils/TypedXmlPullParser;I)V
-HSPLcom/android/server/pm/Settings;->readPreferredActivitiesLPw(Lcom/android/modules/utils/TypedXmlPullParser;I)V
-HSPLcom/android/server/pm/Settings;->readSettingsLPw(Lcom/android/server/pm/Computer;Ljava/util/List;Landroid/util/ArrayMap;)Z
+HSPLcom/android/server/pm/Settings;->readPersistentPreferredActivitiesLPw(ILcom/android/modules/utils/TypedXmlPullParser;)V
+HSPLcom/android/server/pm/Settings;->readPreferredActivitiesLPw(ILcom/android/modules/utils/TypedXmlPullParser;)V
+HSPLcom/android/server/pm/Settings;->readSettingsLPw(Lcom/android/server/pm/ComputerLocked;Ljava/util/List;Landroid/util/ArrayMap;)Z
HSPLcom/android/server/pm/Settings;->readSharedUserLPw(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/ArrayList;Ljava/util/List;)V
+PLcom/android/server/pm/Settings;->registerAppIdLPw(Lcom/android/server/pm/PackageSetting;)Z
HSPLcom/android/server/pm/Settings;->registerObserver(Lcom/android/server/utils/Watcher;)V
-HSPLcom/android/server/pm/Settings;->registerObservers()V
+HSPLcom/android/server/pm/Settings;->registerObservers$1()V
PLcom/android/server/pm/Settings;->removeAppIdLPw(I)V
-PLcom/android/server/pm/Settings;->removeRenamedPackageLPw(Ljava/lang/String;)V
+PLcom/android/server/pm/Settings;->removeFilters(Lcom/android/server/pm/PreferredIntentResolver;Ljava/util/List;)V
PLcom/android/server/pm/Settings;->setPermissionControllerVersion(J)V
-HSPLcom/android/server/pm/Settings;->snapshot()Lcom/android/server/pm/Settings;
PLcom/android/server/pm/Settings;->systemReady(Lcom/android/server/pm/resolution/ComponentResolver;)Ljava/util/ArrayList;
-HPLcom/android/server/pm/Settings;->updatePackageSetting(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/SharedUserSetting;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILcom/android/server/pm/UserManagerService;[Ljava/lang/String;[J[Z[Ljava/lang/String;[JLjava/util/Set;Ljava/util/UUID;I[BZ)V
-PLcom/android/server/pm/Settings;->writeAllRuntimePermissionsLPr()V
PLcom/android/server/pm/Settings;->writeAllUsersPackageRestrictionsLPr(Z)V
PLcom/android/server/pm/Settings;->writeArchiveStateLPr(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/pkg/ArchiveState;)V
PLcom/android/server/pm/Settings;->writeBlockUninstallPackagesLPr(Lcom/android/modules/utils/TypedXmlSerializer;I)V
PLcom/android/server/pm/Settings;->writeCrossProfileIntentFiltersLPr(Lcom/android/modules/utils/TypedXmlSerializer;I)V
PLcom/android/server/pm/Settings;->writeDefaultApps(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;)V
-PLcom/android/server/pm/Settings;->writeDefaultAppsLPr(Lorg/xmlpull/v1/XmlSerializer;I)V
+PLcom/android/server/pm/Settings;->writeDisabledSysPackageLPr(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/PackageSetting;)V
HSPLcom/android/server/pm/Settings;->writeKernelMappingLPr()V
-HPLcom/android/server/pm/Settings;->writeKeySetAliasesLPr(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V
-HPLcom/android/server/pm/Settings;->writeLPr(Lcom/android/server/pm/Computer;Z)V
-HPLcom/android/server/pm/Settings;->writeMimeGroupLPr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/util/Map;)V
-HPLcom/android/server/pm/Settings;->writePackageLPr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/util/ArrayList;Lcom/android/server/pm/PackageSetting;)V
-PLcom/android/server/pm/Settings;->writePackageListLPr()V
+PLcom/android/server/pm/Settings;->writeKernelMappingLPr(Lcom/android/server/pm/PackageSetting;)V
+HPLcom/android/server/pm/Settings;->writeLPr(Lcom/android/server/pm/Computer;Z)V+]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;
+HPLcom/android/server/pm/Settings;->writePackageLPr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/util/ArrayList;Lcom/android/server/pm/PackageSetting;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;,Ljava/util/Collections$EmptyIterator;]Ljava/util/Map;Ljava/util/Collections$EmptyMap;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;,Ljava/util/Collections$EmptySet;
PLcom/android/server/pm/Settings;->writePackageListLPr(I)V
-HPLcom/android/server/pm/Settings;->writePackageListLPrInternal(I)V
-HPLcom/android/server/pm/Settings;->writePackageRestrictions(IJZ)V
-PLcom/android/server/pm/Settings;->writePackageRestrictions([Ljava/lang/Integer;)V
+HPLcom/android/server/pm/Settings;->writePackageListLPrInternal(I)V+]Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/io/File;Ljava/io/File;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;
+HPLcom/android/server/pm/Settings;->writePackageRestrictions(IJZ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;
PLcom/android/server/pm/Settings;->writePackageRestrictionsLPr(IZ)V
PLcom/android/server/pm/Settings;->writePersistentPreferredActivitiesLPr(Lcom/android/modules/utils/TypedXmlSerializer;I)V
-HPLcom/android/server/pm/Settings;->writePreferredActivitiesLPr(Lcom/android/modules/utils/TypedXmlSerializer;IZ)V
-HPLcom/android/server/pm/Settings;->writeSigningKeySetLPr(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V
-HPLcom/android/server/pm/Settings;->writeUpgradeKeySetsLPr(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V
-HPLcom/android/server/pm/Settings;->writeUserRestrictionsLPw(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;)V
-HPLcom/android/server/pm/Settings;->writeUsesSdkLibLPw(Lcom/android/modules/utils/TypedXmlSerializer;[Ljava/lang/String;[J[Z)V
-HPLcom/android/server/pm/Settings;->writeUsesStaticLibLPw(Lcom/android/modules/utils/TypedXmlSerializer;[Ljava/lang/String;[J)V
+PLcom/android/server/pm/Settings;->writePreferredActivitiesLPr(ILcom/android/modules/utils/TypedXmlSerializer;Z)V
+PLcom/android/server/pm/Settings;->writeUsesSdkLibLPw(Lcom/android/modules/utils/TypedXmlSerializer;[Ljava/lang/String;[J[Z)V
+PLcom/android/server/pm/Settings;->writeUsesStaticLibLPw(Lcom/android/modules/utils/TypedXmlSerializer;[Ljava/lang/String;[J)V
HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;-><init>(Lcom/android/modules/utils/TypedXmlPullParser;)V
-HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->children()Lcom/android/server/pm/SettingsXml$ChildSection;
-HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->getBoolean(Ljava/lang/String;)Z
-HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->getBoolean(Ljava/lang/String;Z)Z
-HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->getInt(Ljava/lang/String;)I
-HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->getInt(Ljava/lang/String;I)I
-HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->getName()Ljava/lang/String;
+PLcom/android/server/pm/SettingsXml$ReadSectionImpl;-><init>(Lcom/android/modules/utils/TypedXmlSerializer;)V
+PLcom/android/server/pm/SettingsXml$ReadSectionImpl;->attribute(ILjava/lang/String;)V
+HPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->attribute(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->children()Lcom/android/server/pm/SettingsXml$ReadSectionImpl;
+HPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->close()V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/Stack;Ljava/util/Stack;
+HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->getInt(ILjava/lang/String;)I
HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->getString(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->moveToFirstTag()V
-HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->moveToNext()Z
-HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->moveToNext(Ljava/lang/String;)Z
HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->moveToNextInternal(Ljava/lang/String;)Z
-PLcom/android/server/pm/SettingsXml$Serializer;-><init>(Lcom/android/modules/utils/TypedXmlSerializer;)V
-PLcom/android/server/pm/SettingsXml$Serializer;-><init>(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/SettingsXml$Serializer-IA;)V
-PLcom/android/server/pm/SettingsXml$Serializer;->close()V
-PLcom/android/server/pm/SettingsXml$Serializer;->startSection(Ljava/lang/String;)Lcom/android/server/pm/SettingsXml$WriteSection;
-PLcom/android/server/pm/SettingsXml$WriteSectionImpl;->-$$Nest$mcloseCompletely(Lcom/android/server/pm/SettingsXml$WriteSectionImpl;)V
-PLcom/android/server/pm/SettingsXml$WriteSectionImpl;-><init>(Lcom/android/modules/utils/TypedXmlSerializer;)V
-PLcom/android/server/pm/SettingsXml$WriteSectionImpl;-><init>(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/SettingsXml$WriteSectionImpl-IA;)V
-PLcom/android/server/pm/SettingsXml$WriteSectionImpl;->attribute(Ljava/lang/String;I)Lcom/android/server/pm/SettingsXml$WriteSection;
-PLcom/android/server/pm/SettingsXml$WriteSectionImpl;->attribute(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/pm/SettingsXml$WriteSection;
-PLcom/android/server/pm/SettingsXml$WriteSectionImpl;->attribute(Ljava/lang/String;Z)Lcom/android/server/pm/SettingsXml$WriteSection;
-HPLcom/android/server/pm/SettingsXml$WriteSectionImpl;->close()V
-PLcom/android/server/pm/SettingsXml$WriteSectionImpl;->closeCompletely()V
-HPLcom/android/server/pm/SettingsXml$WriteSectionImpl;->finish()V
-HPLcom/android/server/pm/SettingsXml$WriteSectionImpl;->startSection(Ljava/lang/String;)Lcom/android/server/pm/SettingsXml$WriteSection;
-HSPLcom/android/server/pm/SettingsXml;->parser(Lcom/android/modules/utils/TypedXmlPullParser;)Lcom/android/server/pm/SettingsXml$ReadSection;
-PLcom/android/server/pm/SettingsXml;->serializer(Lcom/android/modules/utils/TypedXmlSerializer;)Lcom/android/server/pm/SettingsXml$Serializer;
-PLcom/android/server/pm/SharedLibrariesImpl$$ExternalSyntheticLambda0;-><init>()V
+HPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->startSection(Ljava/lang/String;)V
+PLcom/android/server/pm/SharedLibrariesImpl$$ExternalSyntheticLambda0;-><init>(I)V
PLcom/android/server/pm/SharedLibrariesImpl$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
HSPLcom/android/server/pm/SharedLibrariesImpl$1;-><init>(Lcom/android/server/pm/SharedLibrariesImpl;)V
HSPLcom/android/server/pm/SharedLibrariesImpl$1;->onChange(Lcom/android/server/utils/Watchable;)V
-HSPLcom/android/server/pm/SharedLibrariesImpl$2;-><init>(Lcom/android/server/pm/SharedLibrariesImpl;Lcom/android/server/pm/SharedLibrariesImpl;Lcom/android/server/utils/Watchable;)V
-HSPLcom/android/server/pm/SharedLibrariesImpl$2;->createSnapshot()Lcom/android/server/pm/SharedLibrariesImpl;
HSPLcom/android/server/pm/SharedLibrariesImpl$2;->createSnapshot()Ljava/lang/Object;
-PLcom/android/server/pm/SharedLibrariesImpl;->$r8$lambda$x5pbt1IWAO8LsYjbRIDnwkV8JxE(Landroid/content/pm/SharedLibraryInfo;Landroid/content/pm/SharedLibraryInfo;)V
-HSPLcom/android/server/pm/SharedLibrariesImpl;->-$$Nest$fgetmWatchable(Lcom/android/server/pm/SharedLibrariesImpl;)Lcom/android/server/utils/WatchableImpl;
HSPLcom/android/server/pm/SharedLibrariesImpl;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerServiceInjector;)V
HSPLcom/android/server/pm/SharedLibrariesImpl;-><init>(Lcom/android/server/pm/SharedLibrariesImpl;)V
-HSPLcom/android/server/pm/SharedLibrariesImpl;-><init>(Lcom/android/server/pm/SharedLibrariesImpl;Lcom/android/server/pm/SharedLibrariesImpl-IA;)V
HSPLcom/android/server/pm/SharedLibrariesImpl;->addBuiltInSharedLibraryLPw(Lcom/android/server/SystemConfig$SharedLibraryEntry;)V
-HPLcom/android/server/pm/SharedLibrariesImpl;->addSharedLibraryLPr(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Set;Landroid/content/pm/SharedLibraryInfo;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;)V
PLcom/android/server/pm/SharedLibrariesImpl;->applyDefiningSharedLibraryUpdateLPr(Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/pm/SharedLibraryInfo;Ljava/util/function/BiConsumer;)V
-HPLcom/android/server/pm/SharedLibrariesImpl;->collectSharedLibraryInfos(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;Ljava/util/Map;)Ljava/util/ArrayList;
-HPLcom/android/server/pm/SharedLibrariesImpl;->collectSharedLibraryInfos(Ljava/util/List;[J[[Ljava/lang/String;[ZLjava/lang/String;Ljava/lang/String;ZILjava/util/ArrayList;Ljava/util/Map;Ljava/util/Map;)Ljava/util/ArrayList;
-HPLcom/android/server/pm/SharedLibrariesImpl;->commitSharedLibraryChanges(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Ljava/util/List;Ljava/util/Map;I)Ljava/util/ArrayList;
+PLcom/android/server/pm/SharedLibrariesImpl;->collectSharedLibraryInfos(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;Ljava/util/Map;)Ljava/util/ArrayList;
+PLcom/android/server/pm/SharedLibrariesImpl;->collectSharedLibraryInfos(Ljava/util/List;[J[[Ljava/lang/String;[ZLjava/lang/String;Ljava/lang/String;ZILjava/util/ArrayList;Ljava/util/Map;Ljava/util/Map;Ljava/util/List;)Ljava/util/ArrayList;
+HSPLcom/android/server/pm/SharedLibrariesImpl;->commitSharedLibraryChanges(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Ljava/util/List;Ljava/util/Map;I)Ljava/util/ArrayList;
HSPLcom/android/server/pm/SharedLibrariesImpl;->commitSharedLibraryInfoLPw(Landroid/content/pm/SharedLibraryInfo;)V
HSPLcom/android/server/pm/SharedLibrariesImpl;->dispatchChange(Lcom/android/server/utils/Watchable;)V
-HPLcom/android/server/pm/SharedLibrariesImpl;->executeSharedLibrariesUpdateLPw(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Ljava/util/ArrayList;[I)V
-PLcom/android/server/pm/SharedLibrariesImpl;->getAll()Lcom/android/server/utils/WatchedArrayMap;
-HPLcom/android/server/pm/SharedLibrariesImpl;->getAllowedSharedLibInfos(Lcom/android/server/pm/InstallRequest;)Ljava/util/List;
-PLcom/android/server/pm/SharedLibrariesImpl;->getLibraryPackage(Lcom/android/server/pm/Computer;Landroid/content/pm/SharedLibraryInfo;)Lcom/android/server/pm/pkg/PackageStateInternal;
-HSPLcom/android/server/pm/SharedLibrariesImpl;->getSharedLibraryInfo(Ljava/lang/String;J)Landroid/content/pm/SharedLibraryInfo;
-HSPLcom/android/server/pm/SharedLibrariesImpl;->getStaticLibraryInfos(Ljava/lang/String;)Lcom/android/server/utils/WatchedLongSparseArray;
-PLcom/android/server/pm/SharedLibrariesImpl;->lambda$executeSharedLibrariesUpdateLPw$0(Landroid/content/pm/SharedLibraryInfo;Landroid/content/pm/SharedLibraryInfo;)V
-HSPLcom/android/server/pm/SharedLibrariesImpl;->makeCache()Lcom/android/server/utils/SnapshotCache;
+PLcom/android/server/pm/SharedLibrariesImpl;->executeSharedLibrariesUpdateLPw(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Ljava/util/ArrayList;[I)V
+HSPLcom/android/server/pm/SharedLibrariesImpl;->getAllowedSharedLibInfos(Lcom/android/server/pm/InstallRequest;)Ljava/util/List;
+HSPLcom/android/server/pm/SharedLibrariesImpl;->getSharedLibraryInfo(JLjava/lang/String;)Landroid/content/pm/SharedLibraryInfo;
PLcom/android/server/pm/SharedLibrariesImpl;->pruneUnusedStaticSharedLibraries(Lcom/android/server/pm/Computer;JJ)Z
HSPLcom/android/server/pm/SharedLibrariesImpl;->registerObserver(Lcom/android/server/utils/Watcher;)V
-HSPLcom/android/server/pm/SharedLibrariesImpl;->registerObservers()V
+PLcom/android/server/pm/SharedLibrariesImpl;->removeSharedLibrary(JLjava/lang/String;)V
HSPLcom/android/server/pm/SharedLibrariesImpl;->setDeletePackageHelper(Lcom/android/server/pm/DeletePackageHelper;)V
-HSPLcom/android/server/pm/SharedLibrariesImpl;->snapshot()Lcom/android/server/pm/SharedLibrariesRead;
-HPLcom/android/server/pm/SharedLibrariesImpl;->updateAllSharedLibrariesLPw(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Ljava/util/Map;)Ljava/util/ArrayList;
-HPLcom/android/server/pm/SharedLibrariesImpl;->updateSharedLibraries(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Ljava/util/Map;)V
-PLcom/android/server/pm/SharedLibraryUtils;->addSharedLibraryToPackageVersionMap(Ljava/util/Map;Landroid/content/pm/SharedLibraryInfo;)Z
-HPLcom/android/server/pm/SharedLibraryUtils;->getSharedLibraryInfo(Ljava/lang/String;JLjava/util/Map;Ljava/util/Map;)Landroid/content/pm/SharedLibraryInfo;
+PLcom/android/server/pm/SharedLibrariesImpl;->updateAllSharedLibrariesLPw(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Ljava/util/Map;)Ljava/util/ArrayList;
+PLcom/android/server/pm/SharedLibrariesImpl;->updateSharedLibraries(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Ljava/util/Map;)V
HSPLcom/android/server/pm/SharedUserSetting$1;-><init>(Lcom/android/server/pm/SharedUserSetting;)V
HSPLcom/android/server/pm/SharedUserSetting$1;->onChange(Lcom/android/server/utils/Watchable;)V
-HSPLcom/android/server/pm/SharedUserSetting$2;-><init>(Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/utils/Watchable;)V
-HSPLcom/android/server/pm/SharedUserSetting$2;->createSnapshot()Lcom/android/server/pm/SharedUserSetting;
HSPLcom/android/server/pm/SharedUserSetting$2;->createSnapshot()Ljava/lang/Object;
+HSPLcom/android/server/pm/SharedUserSetting;-><init>(IILjava/lang/String;)V
HSPLcom/android/server/pm/SharedUserSetting;-><init>(Lcom/android/server/pm/SharedUserSetting;)V
-HSPLcom/android/server/pm/SharedUserSetting;-><init>(Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/SharedUserSetting-IA;)V
-HSPLcom/android/server/pm/SharedUserSetting;-><init>(Ljava/lang/String;II)V
HSPLcom/android/server/pm/SharedUserSetting;->addPackage(Lcom/android/server/pm/PackageSetting;)V
-HPLcom/android/server/pm/SharedUserSetting;->addProcesses(Ljava/util/Map;)V
-HPLcom/android/server/pm/SharedUserSetting;->fixSeInfoLocked()V
-PLcom/android/server/pm/SharedUserSetting;->getDisabledPackageSettings()Lcom/android/server/utils/WatchedArraySet;
-PLcom/android/server/pm/SharedUserSetting;->getPackageSettings()Lcom/android/server/utils/WatchedArraySet;
-HPLcom/android/server/pm/SharedUserSetting;->getPackageStates()Landroid/util/ArraySet;
-HPLcom/android/server/pm/SharedUserSetting;->getPackages()Ljava/util/List;
-PLcom/android/server/pm/SharedUserSetting;->getSeInfoTargetSdkVersion()I
-PLcom/android/server/pm/SharedUserSetting;->getSigningDetails()Landroid/content/pm/SigningDetails;
-HPLcom/android/server/pm/SharedUserSetting;->isPrivileged()Z
-HSPLcom/android/server/pm/SharedUserSetting;->makeCache()Lcom/android/server/utils/SnapshotCache;
-HSPLcom/android/server/pm/SharedUserSetting;->registerObservers()V
-HSPLcom/android/server/pm/SharedUserSetting;->snapshot()Lcom/android/server/pm/SharedUserSetting;
+PLcom/android/server/pm/SharedUserSetting;->addProcesses(Ljava/util/Map;)V
+PLcom/android/server/pm/SharedUserSetting;->fixSeInfoLocked()V
+PLcom/android/server/pm/SharedUserSetting;->getPackageStates()Landroid/util/ArraySet;
+PLcom/android/server/pm/SharedUserSetting;->getPackages()Ljava/util/List;
+PLcom/android/server/pm/SharedUserSetting;->isPrivileged()Z
HSPLcom/android/server/pm/SharedUserSetting;->snapshot()Ljava/lang/Object;
PLcom/android/server/pm/SharedUserSetting;->toString()Ljava/lang/String;
-HPLcom/android/server/pm/SharedUserSetting;->updateProcesses()V
-PLcom/android/server/pm/ShortcutBitmapSaver$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/ShortcutBitmapSaver;)V
-PLcom/android/server/pm/ShortcutBitmapSaver$$ExternalSyntheticLambda1;-><init>(Ljava/util/concurrent/CountDownLatch;)V
-PLcom/android/server/pm/ShortcutBitmapSaver$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/pm/ShortcutBitmapSaver;->$r8$lambda$0cDwbUuQexB0Dry-KJy6ApKQ1Ic(Ljava/util/concurrent/CountDownLatch;)V
-PLcom/android/server/pm/ShortcutBitmapSaver;-><init>(Lcom/android/server/pm/ShortcutService;)V
-PLcom/android/server/pm/ShortcutBitmapSaver;->lambda$waitForAllSavesLocked$0(Ljava/util/concurrent/CountDownLatch;)V
+PLcom/android/server/pm/SharedUserSetting;->updateProcesses()V
+PLcom/android/server/pm/ShortcutBitmapSaver$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/pm/ShortcutBitmapSaver$$ExternalSyntheticLambda0;->run()V
+HPLcom/android/server/pm/ShortcutBitmapSaver;-><init>(Lcom/android/server/pm/ShortcutService;)V
+PLcom/android/server/pm/ShortcutBitmapSaver;->dumpLocked(Ljava/io/PrintWriter;)V
+PLcom/android/server/pm/ShortcutBitmapSaver;->removeIcon(Landroid/content/pm/ShortcutInfo;)V
PLcom/android/server/pm/ShortcutBitmapSaver;->waitForAllSavesLocked()Z
+PLcom/android/server/pm/ShortcutDumpFiles$$ExternalSyntheticLambda0;-><init>([B)V
+PLcom/android/server/pm/ShortcutDumpFiles$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
PLcom/android/server/pm/ShortcutDumpFiles;-><init>(Lcom/android/server/pm/ShortcutService;)V
+PLcom/android/server/pm/ShortcutDumpFiles;->dumpAll(Ljava/io/PrintWriter;)V
+PLcom/android/server/pm/ShortcutDumpFiles;->save(Ljava/lang/String;Ljava/util/function/Consumer;)Z
PLcom/android/server/pm/ShortcutLauncher;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;I)V
-PLcom/android/server/pm/ShortcutLauncher;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;ILcom/android/server/pm/ShortcutPackageInfo;)V
-PLcom/android/server/pm/ShortcutLauncher;->getPinnedShortcutIds(Ljava/lang/String;I)Landroid/util/ArraySet;
+PLcom/android/server/pm/ShortcutLauncher;->getOwnerUserId()I
+PLcom/android/server/pm/ShortcutLauncher;->getPinnedShortcutIds(ILjava/lang/String;)Landroid/util/ArraySet;
+PLcom/android/server/pm/ShortcutLauncher;->getShortcutPackageItemFile()Ljava/io/File;
+PLcom/android/server/pm/ShortcutLauncher;->loadFromFile(Ljava/io/File;Lcom/android/server/pm/ShortcutUser;IZ)Lcom/android/server/pm/ShortcutLauncher;
+PLcom/android/server/pm/ShortcutLauncher;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;Z)V
PLcom/android/server/pm/ShortcutNonPersistentUser;-><init>(I)V
-PLcom/android/server/pm/ShortcutNonPersistentUser;->hasHostPackage(Ljava/lang/String;)Z
-PLcom/android/server/pm/ShortcutNonPersistentUser;->setShortcutHostPackage(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pm/ShortcutNonPersistentUser;->dump(Ljava/io/PrintWriter;Lcom/android/server/pm/ShortcutService$DumpFilter;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda10;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda10;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda13;-><init>(ILjava/util/List;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda14;-><init>(I)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda14;->accept(Ljava/lang/Object;)V
PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda17;-><init>(J)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda17;->accept(Ljava/lang/Object;)V
PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/ShortcutPackage;J)V
-PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda23;-><init>(Lcom/android/server/pm/ShortcutPackage;Landroid/util/ArrayMap;)V
-PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda24;-><init>(Landroid/util/ArraySet;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda20;-><init>(ILandroid/util/ArraySet;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda20;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda23;-><init>(ILjava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda23;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda28;-><init>(Lcom/android/server/pm/ShortcutPackage;Ljava/util/ArrayList;Lcom/android/server/pm/ShortcutService;[Z)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda28;->apply(Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda29;-><init>(Lcom/android/server/pm/ShortcutPackage;Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;Landroid/util/ArraySet;Z)V
PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda29;->accept(Ljava/lang/Object;)V
-PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/pm/ShortcutPackage;Lcom/android/server/pm/ShortcutService;Landroid/content/res/Resources;)V
-PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda36;-><init>(Ljava/util/function/Consumer;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda2;-><init>(Landroid/content/res/Resources;Lcom/android/server/pm/ShortcutService;Ljava/util/List;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda2;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;I)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda36;-><init>(ILjava/lang/Object;)V
PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda36;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda38;-><init>()V
-PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda38;->test(Ljava/lang/Object;)Z
-PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda7;-><init>()V
-PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda8;-><init>()V
-PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda9;-><init>()V
-PLcom/android/server/pm/ShortcutPackage;->$r8$lambda$PHafQNXd3rG88ujYp-2FnsxrvDY(Ljava/util/function/Consumer;Landroid/content/pm/ShortcutInfo;)Ljava/lang/Boolean;
-PLcom/android/server/pm/ShortcutPackage;->$r8$lambda$siuXAQT-OivpKlIZX1n0iIppP6o(Lcom/android/server/pm/ShortcutPackage;Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;Landroid/util/ArraySet;ZLandroid/content/pm/ShortcutInfo;)V
-PLcom/android/server/pm/ShortcutPackage;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;)V
-PLcom/android/server/pm/ShortcutPackage;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;Lcom/android/server/pm/ShortcutPackageInfo;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda4;-><init>(I)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda4;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda52;-><init>(I)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda52;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/pm/ShortcutPackage;Ljava/lang/Object;II)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda7;-><init>(I)V
+HPLcom/android/server/pm/ShortcutPackage;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;)V
+PLcom/android/server/pm/ShortcutPackage;->addOrReplaceDynamicShortcut(Landroid/content/pm/ShortcutInfo;)V
PLcom/android/server/pm/ShortcutPackage;->adjustRanks()V
-PLcom/android/server/pm/ShortcutPackage;->ensureImmutableShortcutsNotIncludedWithIds(Ljava/util/List;Z)V
-PLcom/android/server/pm/ShortcutPackage;->ensureNotImmutable(Landroid/content/pm/ShortcutInfo;Z)V
-PLcom/android/server/pm/ShortcutPackage;->ensureNotImmutable(Ljava/lang/String;Z)V
-PLcom/android/server/pm/ShortcutPackage;->filter(Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;Landroid/util/ArraySet;ZLandroid/content/pm/ShortcutInfo;)V
-PLcom/android/server/pm/ShortcutPackage;->findAll(Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;IZ)V
+PLcom/android/server/pm/ShortcutPackage;->deleteAllDynamicShortcuts()Ljava/util/List;
+PLcom/android/server/pm/ShortcutPackage;->deleteOrDisableWithId(Ljava/lang/String;ZZZIZ)Landroid/content/pm/ShortcutInfo;
+PLcom/android/server/pm/ShortcutPackage;->enforceShortcutCountsBeforeOperation(ILjava/util/List;)V
+PLcom/android/server/pm/ShortcutPackage;->ensureImmutableShortcutsNotIncluded(Ljava/util/List;)V
+PLcom/android/server/pm/ShortcutPackage;->ensureImmutableShortcutsNotIncludedWithIds(Ljava/util/List;)V
+PLcom/android/server/pm/ShortcutPackage;->ensureNoBitmapIconIfShortcutIsLongLived(Ljava/util/List;)V
+PLcom/android/server/pm/ShortcutPackage;->ensureNotImmutable(Landroid/content/pm/ShortcutInfo;)V
+HPLcom/android/server/pm/ShortcutPackage;->findAll(Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;IZ)V
PLcom/android/server/pm/ShortcutPackage;->findShortcutById(Ljava/lang/String;)Landroid/content/pm/ShortcutInfo;
PLcom/android/server/pm/ShortcutPackage;->forEachShortcut(Ljava/util/function/Consumer;)V
PLcom/android/server/pm/ShortcutPackage;->forEachShortcutMutate(Ljava/util/function/Consumer;)V
-PLcom/android/server/pm/ShortcutPackage;->forEachShortcutStopWhen(Ljava/util/function/Function;)V
-PLcom/android/server/pm/ShortcutPackage;->getPackageResources()Landroid/content/res/Resources;
-PLcom/android/server/pm/ShortcutPackage;->getShortcutCount()I
+HPLcom/android/server/pm/ShortcutPackage;->forEachShortcutStopWhen(Ljava/util/function/Function;)V
+PLcom/android/server/pm/ShortcutPackage;->forceDeleteShortcutInner(Ljava/lang/String;)V
+PLcom/android/server/pm/ShortcutPackage;->forceReplaceShortcutInner(Landroid/content/pm/ShortcutInfo;)V
+PLcom/android/server/pm/ShortcutPackage;->getApiCallCount(Z)I
+PLcom/android/server/pm/ShortcutPackage;->getOwnerUserId()I
PLcom/android/server/pm/ShortcutPackage;->getShortcutPackageItemFile()Ljava/io/File;
-PLcom/android/server/pm/ShortcutPackage;->hasNoShortcut()Z
-PLcom/android/server/pm/ShortcutPackage;->hasShareTargets()Z
+PLcom/android/server/pm/ShortcutPackage;->incrementCountForActivity(Landroid/util/ArrayMap;Landroid/content/ComponentName;I)V
PLcom/android/server/pm/ShortcutPackage;->isAppSearchEnabled()Z
PLcom/android/server/pm/ShortcutPackage;->isShortcutExistsAndVisibleToPublisher(Ljava/lang/String;)Z
-PLcom/android/server/pm/ShortcutPackage;->lambda$findAll$13(Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;Landroid/util/ArraySet;ZLandroid/content/pm/ShortcutInfo;)V
-PLcom/android/server/pm/ShortcutPackage;->lambda$forEachShortcut$37(Ljava/util/function/Consumer;Landroid/content/pm/ShortcutInfo;)Ljava/lang/Boolean;
-PLcom/android/server/pm/ShortcutPackage;->loadFromFile(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;Ljava/io/File;Z)Lcom/android/server/pm/ShortcutPackage;
-PLcom/android/server/pm/ShortcutPackage;->loadFromXml(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;Lcom/android/modules/utils/TypedXmlPullParser;Z)Lcom/android/server/pm/ShortcutPackage;
-PLcom/android/server/pm/ShortcutPackage;->parseIntent(Lcom/android/modules/utils/TypedXmlPullParser;)Landroid/content/Intent;
-HPLcom/android/server/pm/ShortcutPackage;->parseShortcut(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;IZ)Landroid/content/pm/ShortcutInfo;
-PLcom/android/server/pm/ShortcutPackage;->publishManifestShortcuts(Ljava/util/List;)Z
-PLcom/android/server/pm/ShortcutPackage;->rescanPackageIfNeeded(ZZ)Z
+PLcom/android/server/pm/ShortcutPackage;->loadFromFile(Lcom/android/server/pm/ShortcutUser;Ljava/io/File;Z)Lcom/android/server/pm/ShortcutPackage;
+PLcom/android/server/pm/ShortcutPackage;->loadFromXml(Lcom/android/server/pm/ShortcutUser;Lcom/android/modules/utils/TypedXmlPullParser;Z)Lcom/android/server/pm/ShortcutPackage;
+PLcom/android/server/pm/ShortcutPackage;->parseShortcut(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;IZ)Landroid/content/pm/ShortcutInfo;
+PLcom/android/server/pm/ShortcutPackage;->pushDynamicShortcut(Landroid/content/pm/ShortcutInfo;Ljava/util/List;)Z
+PLcom/android/server/pm/ShortcutPackage;->refreshPinnedFlags()V
+PLcom/android/server/pm/ShortcutPackage;->removeOrphans()Ljava/util/List;
+PLcom/android/server/pm/ShortcutPackage;->reportShortcutUsed(Landroid/app/usage/UsageStatsManagerInternal;Ljava/lang/String;)V
+HPLcom/android/server/pm/ShortcutPackage;->rescanPackageIfNeeded(ZZ)Z
HPLcom/android/server/pm/ShortcutPackage;->saveShortcut(Lcom/android/modules/utils/TypedXmlSerializer;Landroid/content/pm/ShortcutInfo;ZZ)V
-PLcom/android/server/pm/ShortcutPackage;->saveShortcutsAsync(Ljava/util/Collection;)V
-PLcom/android/server/pm/ShortcutPackage;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;Z)V
+PLcom/android/server/pm/ShortcutPackage;->saveShortcut([Landroid/content/pm/ShortcutInfo;)V
+HPLcom/android/server/pm/ShortcutPackage;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;Z)V
PLcom/android/server/pm/ShortcutPackage;->scheduleSaveToAppSearchLocked()V
PLcom/android/server/pm/ShortcutPackage;->sortShortcutsToActivities()Landroid/util/ArrayMap;
-PLcom/android/server/pm/ShortcutPackageInfo;-><init>(JJLjava/util/ArrayList;Z)V
-PLcom/android/server/pm/ShortcutPackageInfo;->getVersionCode()J
-PLcom/android/server/pm/ShortcutPackageInfo;->isBackupAllowed()Z
-PLcom/android/server/pm/ShortcutPackageInfo;->isShadow()Z
+PLcom/android/server/pm/ShortcutPackage;->tryApiCall(Z)Z
+PLcom/android/server/pm/ShortcutPackageInfo;-><init>(JJLjava/util/ArrayList;)V
+PLcom/android/server/pm/ShortcutPackageInfo;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
PLcom/android/server/pm/ShortcutPackageInfo;->loadFromXml(Lcom/android/modules/utils/TypedXmlPullParser;Z)V
-PLcom/android/server/pm/ShortcutPackageInfo;->newEmpty()Lcom/android/server/pm/ShortcutPackageInfo;
PLcom/android/server/pm/ShortcutPackageInfo;->saveToXml(Lcom/android/server/pm/ShortcutService;Lcom/android/modules/utils/TypedXmlSerializer;Z)V
-PLcom/android/server/pm/ShortcutPackageInfo;->updateFromPackageInfo(Landroid/content/pm/PackageInfo;)V
PLcom/android/server/pm/ShortcutPackageItem$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/ShortcutPackageItem;)V
PLcom/android/server/pm/ShortcutPackageItem$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/pm/ShortcutPackageItem;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;Lcom/android/server/pm/ShortcutPackageInfo;)V
+HPLcom/android/server/pm/ShortcutPackageItem;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;Lcom/android/server/pm/ShortcutPackageInfo;)V
PLcom/android/server/pm/ShortcutPackageItem;->attemptToRestoreIfNeededAndSave()V
-PLcom/android/server/pm/ShortcutPackageItem;->getPackageInfo()Lcom/android/server/pm/ShortcutPackageInfo;
-PLcom/android/server/pm/ShortcutPackageItem;->getPackageName()Ljava/lang/String;
-PLcom/android/server/pm/ShortcutPackageItem;->getPackageUserId()I
-HPLcom/android/server/pm/ShortcutPackageItem;->getResilientFile(Ljava/io/File;)Lcom/android/server/pm/ResilientAtomicFile;
-PLcom/android/server/pm/ShortcutPackageItem;->getUser()Lcom/android/server/pm/ShortcutUser;
-PLcom/android/server/pm/ShortcutPackageItem;->saveShortcutPackageItem()V
-PLcom/android/server/pm/ShortcutPackageItem;->saveToFileLocked(Ljava/io/File;Z)V
+PLcom/android/server/pm/ShortcutPackageItem;->getResilientFile(Ljava/io/File;)Lcom/android/server/pm/ResilientAtomicFile;
+PLcom/android/server/pm/ShortcutPackageItem;->removeIcon(Landroid/content/pm/ShortcutInfo;)V
+PLcom/android/server/pm/ShortcutPackageItem;->saveToFileLocked(Ljava/io/File;)V
PLcom/android/server/pm/ShortcutPackageItem;->scheduleSave()V
-PLcom/android/server/pm/ShortcutPackageItem;->waitForBitmapSaves()Z
+PLcom/android/server/pm/ShortcutPackageItem;->scheduleSaveToAppSearchLocked()V
+PLcom/android/server/pm/ShortcutPackageItem;->waitForBitmapSaves()V
+PLcom/android/server/pm/ShortcutParser;->parseShortcutAttributes(Lcom/android/server/pm/ShortcutService;Landroid/util/AttributeSet;Ljava/lang/String;Landroid/content/ComponentName;II)Landroid/content/pm/ShortcutInfo;
PLcom/android/server/pm/ShortcutParser;->parseShortcuts(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;ILjava/util/List;)Ljava/util/List;
-PLcom/android/server/pm/ShortcutParser;->parseShortcutsOneFile(Lcom/android/server/pm/ShortcutService;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILjava/util/List;Ljava/util/List;)Ljava/util/List;
+HPLcom/android/server/pm/ShortcutParser;->parseShortcutsOneFile(Lcom/android/server/pm/ShortcutService;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILjava/util/List;Ljava/util/List;)Ljava/util/List;
PLcom/android/server/pm/ShortcutRequestPinProcessor;-><init>(Lcom/android/server/pm/ShortcutService;Ljava/lang/Object;)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda10;-><init>(I)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda10;->test(Ljava/lang/Object;)Z
PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/pm/ShortcutService;Ljava/util/ArrayList;)V
PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;)V
PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/pm/ShortcutService;ILjava/util/List;Ljava/lang/String;Landroid/os/UserHandle;Ljava/util/List;)V
PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda16;->run()V
-PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda18;-><init>()V
-PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda18;->test(Ljava/lang/Object;)Z
PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda22;-><init>(Lcom/android/server/pm/ShortcutService;I)V
PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda22;->test(Ljava/lang/Object;)Z
-PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda26;-><init>(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;I)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda27;-><init>(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;IZ)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda27;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda3;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda4;-><init>(I)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda5;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda5;->run()V
PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/pm/ShortcutService;JI)V
PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda6;->run()V
-PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/pm/ShortcutService;)V
-PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda8;->run()V
-PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/pm/ShortcutService;ILjava/lang/String;)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda7;-><init>(I)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V
PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda9;->run()V
-PLcom/android/server/pm/ShortcutService$1;-><init>()V
-PLcom/android/server/pm/ShortcutService$1;->test(Landroid/content/pm/ResolveInfo;)Z
+PLcom/android/server/pm/ShortcutService$1;-><init>(I)V
PLcom/android/server/pm/ShortcutService$1;->test(Ljava/lang/Object;)Z
-PLcom/android/server/pm/ShortcutService$2;-><init>()V
-PLcom/android/server/pm/ShortcutService$2;->test(Landroid/content/pm/PackageInfo;)Z
-PLcom/android/server/pm/ShortcutService$2;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/ShortcutService$3$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/ShortcutService$3;Landroid/os/UserHandle;)V
+PLcom/android/server/pm/ShortcutService$3$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/pm/ShortcutService$3;-><init>(Lcom/android/server/pm/ShortcutService;)V
+PLcom/android/server/pm/ShortcutService$3;->onRoleHoldersChanged(Ljava/lang/String;Landroid/os/UserHandle;)V
HPLcom/android/server/pm/ShortcutService$4$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/ShortcutService$4;II)V
PLcom/android/server/pm/ShortcutService$4$$ExternalSyntheticLambda0;->run()V
-HPLcom/android/server/pm/ShortcutService$4$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/ShortcutService$4;I)V
+PLcom/android/server/pm/ShortcutService$4$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/ShortcutService$4;I)V
PLcom/android/server/pm/ShortcutService$4$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/pm/ShortcutService$4;->$r8$lambda$T38dA-CIlJpPfJ4NeUI0t9KKVrc(Lcom/android/server/pm/ShortcutService$4;I)V
-PLcom/android/server/pm/ShortcutService$4;->$r8$lambda$hFVl7KreRTWPjzcQMzQwU2JU-Sg(Lcom/android/server/pm/ShortcutService$4;II)V
PLcom/android/server/pm/ShortcutService$4;-><init>(Lcom/android/server/pm/ShortcutService;)V
-PLcom/android/server/pm/ShortcutService$4;->lambda$onUidGone$1(I)V
-PLcom/android/server/pm/ShortcutService$4;->lambda$onUidStateChanged$0(II)V
-HPLcom/android/server/pm/ShortcutService$4;->onUidGone(IZ)V
+PLcom/android/server/pm/ShortcutService$4;->onUidGone(IZ)V
HPLcom/android/server/pm/ShortcutService$4;->onUidStateChanged(IIJI)V
-PLcom/android/server/pm/ShortcutService$5;-><init>(Lcom/android/server/pm/ShortcutService;)V
-PLcom/android/server/pm/ShortcutService$6;-><init>(Lcom/android/server/pm/ShortcutService;)V
-PLcom/android/server/pm/ShortcutService$7;-><init>(Lcom/android/server/pm/ShortcutService;)V
+PLcom/android/server/pm/ShortcutService$5;-><init>(Lcom/android/server/pm/ShortcutService;I)V
+PLcom/android/server/pm/ShortcutService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/pm/ShortcutService$DumpFilter;-><init>()V
+PLcom/android/server/pm/ShortcutService$DumpFilter;->isPackageMatch(Ljava/lang/String;)Z
+PLcom/android/server/pm/ShortcutService$DumpFilter;->isUserMatch(I)Z
PLcom/android/server/pm/ShortcutService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/pm/ShortcutService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/pm/ShortcutService$Lifecycle;->onStart()V
PLcom/android/server/pm/ShortcutService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/pm/ShortcutService$LocalService$$ExternalSyntheticLambda11;-><init>(JLandroid/util/ArraySet;Landroid/util/ArraySet;Landroid/content/ComponentName;ZZZZZ)V
-PLcom/android/server/pm/ShortcutService$LocalService$$ExternalSyntheticLambda11;->test(Ljava/lang/Object;)Z
-PLcom/android/server/pm/ShortcutService$LocalService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/pm/ShortcutService$LocalService;ILjava/lang/String;Ljava/util/List;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;III)V
-PLcom/android/server/pm/ShortcutService$LocalService$$ExternalSyntheticLambda6;->accept(Ljava/lang/Object;)V
-PLcom/android/server/pm/ShortcutService$LocalService;->$r8$lambda$3lWA6IdBBMst2VF_gQSz1s4aYQs(Lcom/android/server/pm/ShortcutService$LocalService;ILjava/lang/String;Ljava/util/List;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;IIILcom/android/server/pm/ShortcutPackage;)V
-PLcom/android/server/pm/ShortcutService$LocalService;->$r8$lambda$4oN-teeezN_bMPNKBELK1aAUWLM(JLandroid/util/ArraySet;Landroid/util/ArraySet;Landroid/content/ComponentName;ZZZZZLandroid/content/pm/ShortcutInfo;)Z
+HPLcom/android/server/pm/ShortcutService$LocalService$$ExternalSyntheticLambda10;-><init>(JLandroid/util/ArraySet;Landroid/util/ArraySet;Landroid/content/ComponentName;ZZZZZ)V
+PLcom/android/server/pm/ShortcutService$LocalService$$ExternalSyntheticLambda10;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/ShortcutService$LocalService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/pm/ShortcutService$LocalService;ILjava/lang/String;Ljava/util/List;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;III)V
+HPLcom/android/server/pm/ShortcutService$LocalService$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V
PLcom/android/server/pm/ShortcutService$LocalService;-><init>(Lcom/android/server/pm/ShortcutService;)V
-PLcom/android/server/pm/ShortcutService$LocalService;-><init>(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService$LocalService-IA;)V
PLcom/android/server/pm/ShortcutService$LocalService;->addListener(Landroid/content/pm/ShortcutServiceInternal$ShortcutChangeListener;)V
PLcom/android/server/pm/ShortcutService$LocalService;->addShortcutChangeCallback(Landroid/content/pm/LauncherApps$ShortcutChangeCallback;)V
-PLcom/android/server/pm/ShortcutService$LocalService;->getFilterFromQuery(Landroid/util/ArraySet;Ljava/util/List;JLandroid/content/ComponentName;IZ)Ljava/util/function/Predicate;
-PLcom/android/server/pm/ShortcutService$LocalService;->getShortcuts(ILjava/lang/String;JLjava/lang/String;Ljava/util/List;Ljava/util/List;Landroid/content/ComponentName;IIII)Ljava/util/List;
+HPLcom/android/server/pm/ShortcutService$LocalService;->getShortcuts(ILjava/lang/String;JLjava/lang/String;Ljava/util/List;Ljava/util/List;Landroid/content/ComponentName;IIII)Ljava/util/List;
PLcom/android/server/pm/ShortcutService$LocalService;->getShortcutsInnerLocked(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;III)V
PLcom/android/server/pm/ShortcutService$LocalService;->hasShortcutHostPermission(ILjava/lang/String;II)Z
-PLcom/android/server/pm/ShortcutService$LocalService;->lambda$getFilterFromQuery$1(JLandroid/util/ArraySet;Landroid/util/ArraySet;Landroid/content/ComponentName;ZZZZZLandroid/content/pm/ShortcutInfo;)Z
-PLcom/android/server/pm/ShortcutService$LocalService;->lambda$getShortcuts$0(ILjava/lang/String;Ljava/util/List;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;IIILcom/android/server/pm/ShortcutPackage;)V
PLcom/android/server/pm/ShortcutService$LocalService;->setShortcutHostPackage(Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/pm/ShortcutService;->$r8$lambda$7rv-mE0g49gCi8ScAXXEokztNMo(Lcom/android/server/pm/ShortcutService;JI)V
-PLcom/android/server/pm/ShortcutService;->$r8$lambda$BDhOaAE5veHHQ_RtN3GY5v87JoE(Lcom/android/server/pm/ShortcutService;ILandroid/content/pm/ResolveInfo;)Z
-PLcom/android/server/pm/ShortcutService;->$r8$lambda$J6T1wdAzRJXSyM3Fjbs4z0aR2q4(Lcom/android/server/pm/ShortcutService;Ljava/util/ArrayList;Lcom/android/server/pm/ShortcutPackageItem;)V
-PLcom/android/server/pm/ShortcutService;->$r8$lambda$PNh5C8HPIJGGYj6-U9dEpCWj8E4(Landroid/content/pm/ResolveInfo;)Z
-PLcom/android/server/pm/ShortcutService;->$r8$lambda$qmXsSrkG1sY5mQZKbh8vonwJC94(Lcom/android/server/pm/ShortcutService;ILjava/util/List;Ljava/lang/String;Landroid/os/UserHandle;Ljava/util/List;)V
-PLcom/android/server/pm/ShortcutService;->$r8$lambda$yKU4jgBsUzyszwnIVxSwO_MEiaM(Lcom/android/server/pm/ShortcutService;ILjava/lang/String;)V
-PLcom/android/server/pm/ShortcutService;->-$$Nest$fgetmListeners(Lcom/android/server/pm/ShortcutService;)Ljava/util/ArrayList;
-PLcom/android/server/pm/ShortcutService;->-$$Nest$fgetmLock(Lcom/android/server/pm/ShortcutService;)Ljava/lang/Object;
-PLcom/android/server/pm/ShortcutService;->-$$Nest$fgetmShortcutChangeCallbacks(Lcom/android/server/pm/ShortcutService;)Ljava/util/ArrayList;
-PLcom/android/server/pm/ShortcutService;->-$$Nest$msetReturnedByServer(Lcom/android/server/pm/ShortcutService;Ljava/util/List;)Ljava/util/List;
-PLcom/android/server/pm/ShortcutService;->-$$Nest$smisInstalled(Landroid/content/pm/PackageInfo;)Z
+PLcom/android/server/pm/ShortcutService;->-$$Nest$mhandlePackageAdded(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V
+PLcom/android/server/pm/ShortcutService;->-$$Nest$mhandlePackageChanged(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V
+PLcom/android/server/pm/ShortcutService;->-$$Nest$mhandlePackageUpdateFinished(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V
PLcom/android/server/pm/ShortcutService;-><clinit>()V
-PLcom/android/server/pm/ShortcutService;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/pm/ShortcutService;-><init>(Landroid/content/Context;Landroid/os/Looper;Z)V
-PLcom/android/server/pm/ShortcutService;->canSeeAnyPinnedShortcut(Ljava/lang/String;III)Z
+PLcom/android/server/pm/ShortcutService;-><init>(Landroid/content/Context;Landroid/os/Looper;Z)V
+PLcom/android/server/pm/ShortcutService;->addDynamicShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z
+PLcom/android/server/pm/ShortcutService;->addShortcutIdsToSet(Landroid/util/ArraySet;Ljava/util/List;)V
+PLcom/android/server/pm/ShortcutService;->assignImplicitRanks(Ljava/util/List;)V
+HPLcom/android/server/pm/ShortcutService;->canSeeAnyPinnedShortcut(IIILjava/lang/String;)Z
PLcom/android/server/pm/ShortcutService;->checkPackageChanges(I)V
+PLcom/android/server/pm/ShortcutService;->cleanUpPackageForAllLoadedUsers(ILjava/lang/String;Z)V
+PLcom/android/server/pm/ShortcutService;->cleanUpPackageLocked(Ljava/lang/String;IIZ)V
+PLcom/android/server/pm/ShortcutService;->cleanupBitmapsForPackage(ILjava/lang/String;)V
PLcom/android/server/pm/ShortcutService;->cleanupDanglingBitmapDirectoriesLocked(I)V
-PLcom/android/server/pm/ShortcutService;->forUpdatedPackages(IJZLjava/util/function/Consumer;)V
-PLcom/android/server/pm/ShortcutService;->getActivityInfoWithMetadata(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo;
+PLcom/android/server/pm/ShortcutService;->disableShortcuts(Ljava/lang/String;Ljava/util/List;Ljava/lang/CharSequence;II)V
+PLcom/android/server/pm/ShortcutService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/pm/ShortcutService;->dumpInner(Ljava/io/PrintWriter;Lcom/android/server/pm/ShortcutService$DumpFilter;)V
+PLcom/android/server/pm/ShortcutService;->dumpNoCheck(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/pm/ShortcutService;->fillInDefaultActivity(Ljava/util/List;)V
+PLcom/android/server/pm/ShortcutService;->fixUpIncomingShortcutInfo(Landroid/content/pm/ShortcutInfo;ZZ)V
+PLcom/android/server/pm/ShortcutService;->fixUpShortcutResourceNamesAndValues(Landroid/content/pm/ShortcutInfo;)V
+PLcom/android/server/pm/ShortcutService;->forEachLoadedUserLocked(Ljava/util/function/Consumer;)V
PLcom/android/server/pm/ShortcutService;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
+PLcom/android/server/pm/ShortcutService;->getBackupPayload(I)[B
PLcom/android/server/pm/ShortcutService;->getBaseStateFile()Lcom/android/server/pm/ResilientAtomicFile;
-PLcom/android/server/pm/ShortcutService;->getBgLooper()Landroid/os/Looper;
PLcom/android/server/pm/ShortcutService;->getDefaultLauncher(I)Ljava/lang/String;
PLcom/android/server/pm/ShortcutService;->getInstalledPackages(I)Ljava/util/List;
-PLcom/android/server/pm/ShortcutService;->getLastResetTimeLocked()J
-PLcom/android/server/pm/ShortcutService;->getLauncherShortcutsLocked(Ljava/lang/String;II)Lcom/android/server/pm/ShortcutLauncher;
-PLcom/android/server/pm/ShortcutService;->getMainActivityIntent()Landroid/content/Intent;
-PLcom/android/server/pm/ShortcutService;->getNonPersistentUserLocked(I)Lcom/android/server/pm/ShortcutNonPersistentUser;
-PLcom/android/server/pm/ShortcutService;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
+PLcom/android/server/pm/ShortcutService;->getLauncherShortcutsLocked(IILjava/lang/String;)Lcom/android/server/pm/ShortcutLauncher;
+PLcom/android/server/pm/ShortcutService;->getMaxShortcutCountPerActivity(Ljava/lang/String;I)I
PLcom/android/server/pm/ShortcutService;->getPackageInfo(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo;
-PLcom/android/server/pm/ShortcutService;->getPackageShortcutsForPublisherLocked(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutPackage;
-PLcom/android/server/pm/ShortcutService;->getParentOrSelfUserId(I)I
-PLcom/android/server/pm/ShortcutService;->getStatStartTime()J
-PLcom/android/server/pm/ShortcutService;->getUserBitmapFilePath(I)Ljava/io/File;
+PLcom/android/server/pm/ShortcutService;->getPackageShortcutsForPublisherLocked(ILjava/lang/String;)Lcom/android/server/pm/ShortcutPackage;
+PLcom/android/server/pm/ShortcutService;->getShortcuts(Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
PLcom/android/server/pm/ShortcutService;->getUserFile(I)Lcom/android/server/pm/ResilientAtomicFile;
-PLcom/android/server/pm/ShortcutService;->getUserShortcutsLocked(I)Lcom/android/server/pm/ShortcutUser;
-HPLcom/android/server/pm/ShortcutService;->handleOnUidStateChanged(II)V
-PLcom/android/server/pm/ShortcutService;->handleUnlockUser(I)V
-PLcom/android/server/pm/ShortcutService;->hasShortcutHostPermission(Ljava/lang/String;III)Z
+HPLcom/android/server/pm/ShortcutService;->getUserShortcutsLocked(I)Lcom/android/server/pm/ShortcutUser;
+PLcom/android/server/pm/ShortcutService;->handleOnUidStateChanged(II)V
+PLcom/android/server/pm/ShortcutService;->handlePackageRemoved(Ljava/lang/String;I)V
PLcom/android/server/pm/ShortcutService;->hasShortcutHostPermissionInner(Ljava/lang/String;I)Z
-PLcom/android/server/pm/ShortcutService;->initialize()V
PLcom/android/server/pm/ShortcutService;->injectApplicationInfoWithUninstalled(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
+PLcom/android/server/pm/ShortcutService;->injectBinderCallingPid()I
PLcom/android/server/pm/ShortcutService;->injectBinderCallingUid()I
-PLcom/android/server/pm/ShortcutService;->injectBuildFingerprint()Ljava/lang/String;
-PLcom/android/server/pm/ShortcutService;->injectClearCallingIdentity()J
PLcom/android/server/pm/ShortcutService;->injectCurrentTimeMillis()J
PLcom/android/server/pm/ShortcutService;->injectDipToPixel(I)I
PLcom/android/server/pm/ShortcutService;->injectElapsedRealtime()J
PLcom/android/server/pm/ShortcutService;->injectGetActivityInfoWithMetadataWithUninstalled(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo;
+PLcom/android/server/pm/ShortcutService;->injectGetDefaultMainActivity(ILjava/lang/String;)Landroid/content/ComponentName;
PLcom/android/server/pm/ShortcutService;->injectGetHomeRoleHolderAsUser(I)Ljava/lang/String;
-PLcom/android/server/pm/ShortcutService;->injectGetLocaleTagsForUser(I)Ljava/lang/String;
-PLcom/android/server/pm/ShortcutService;->injectGetMainActivities(Ljava/lang/String;I)Ljava/util/List;
-PLcom/android/server/pm/ShortcutService;->injectGetPackageUid(Ljava/lang/String;I)I
+PLcom/android/server/pm/ShortcutService;->injectGetPackageUid(ILjava/lang/String;)I
PLcom/android/server/pm/ShortcutService;->injectGetPackagesWithUninstalled(I)Ljava/util/List;
-PLcom/android/server/pm/ShortcutService;->injectGetResourcesForApplicationAsUser(Ljava/lang/String;I)Landroid/content/res/Resources;
+PLcom/android/server/pm/ShortcutService;->injectGetResourcesForApplicationAsUser(ILjava/lang/String;)Landroid/content/res/Resources;
PLcom/android/server/pm/ShortcutService;->injectHasAccessShortcutsPermission(II)Z
+PLcom/android/server/pm/ShortcutService;->injectHasUnlimitedShortcutsApiCallsPermission(II)Z
+PLcom/android/server/pm/ShortcutService;->injectIsActivityEnabledAndExported(Landroid/content/ComponentName;I)Z
PLcom/android/server/pm/ShortcutService;->injectIsLowRamDevice()Z
-PLcom/android/server/pm/ShortcutService;->injectIsSafeModeEnabled()Z
+PLcom/android/server/pm/ShortcutService;->injectIsMainActivity(ILandroid/content/ComponentName;)Z
PLcom/android/server/pm/ShortcutService;->injectPackageInfoWithUninstalled(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo;
-HPLcom/android/server/pm/ShortcutService;->injectPostToHandler(Ljava/lang/Runnable;)V
+PLcom/android/server/pm/ShortcutService;->injectPostToHandler(Ljava/lang/Runnable;)V
PLcom/android/server/pm/ShortcutService;->injectPostToHandlerDebounced(Ljava/lang/Object;Ljava/lang/Runnable;)V
PLcom/android/server/pm/ShortcutService;->injectRegisterRoleHoldersListener(Landroid/app/role/OnRoleHoldersChangedListener;)V
PLcom/android/server/pm/ShortcutService;->injectRegisterUidObserver(Landroid/app/IUidObserver;I)V
-PLcom/android/server/pm/ShortcutService;->injectRestoreCallingIdentity(J)V
-PLcom/android/server/pm/ShortcutService;->injectRunOnNewThread(Ljava/lang/Runnable;)V
PLcom/android/server/pm/ShortcutService;->injectShortcutManagerConstants()Ljava/lang/String;
PLcom/android/server/pm/ShortcutService;->injectShouldPerformVerification()Z
PLcom/android/server/pm/ShortcutService;->injectSystemDataPath()Ljava/io/File;
PLcom/android/server/pm/ShortcutService;->injectUserDataPath(I)Ljava/io/File;
-PLcom/android/server/pm/ShortcutService;->injectXmlMetaData(Landroid/content/pm/ActivityInfo;Ljava/lang/String;)Landroid/content/res/XmlResourceParser;
-PLcom/android/server/pm/ShortcutService;->isAppSearchEnabled()Z
PLcom/android/server/pm/ShortcutService;->isCallerSystem()Z
-PLcom/android/server/pm/ShortcutService;->isEphemeralApp(Landroid/content/pm/ApplicationInfo;)Z
-PLcom/android/server/pm/ShortcutService;->isEphemeralApp(Ljava/lang/String;I)Z
-PLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/ActivityInfo;)Z
PLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/ApplicationInfo;)Z
-PLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/PackageInfo;)Z
-PLcom/android/server/pm/ShortcutService;->isInstalledOrNull(Landroid/content/pm/ActivityInfo;)Landroid/content/pm/ActivityInfo;
-PLcom/android/server/pm/ShortcutService;->isInstalledOrNull(Landroid/content/pm/ApplicationInfo;)Landroid/content/pm/ApplicationInfo;
-PLcom/android/server/pm/ShortcutService;->isInstalledOrNull(Landroid/content/pm/PackageInfo;)Landroid/content/pm/PackageInfo;
-PLcom/android/server/pm/ShortcutService;->isPackageInstalled(Ljava/lang/String;I)Z
-PLcom/android/server/pm/ShortcutService;->isProcessStateForeground(I)Z
-PLcom/android/server/pm/ShortcutService;->isSystem(Landroid/content/pm/ActivityInfo;)Z
-PLcom/android/server/pm/ShortcutService;->isSystem(Landroid/content/pm/ApplicationInfo;)Z
-PLcom/android/server/pm/ShortcutService;->isUserUnlockedL(I)Z
-PLcom/android/server/pm/ShortcutService;->lambda$checkPackageChanges$14(Ljava/util/ArrayList;Lcom/android/server/pm/ShortcutPackageItem;)V
-PLcom/android/server/pm/ShortcutService;->lambda$handleUnlockUser$1(JI)V
-PLcom/android/server/pm/ShortcutService;->lambda$notifyListenerRunnable$2(ILjava/lang/String;)V
-PLcom/android/server/pm/ShortcutService;->lambda$notifyShortcutChangeCallbacks$3(ILjava/util/List;Ljava/lang/String;Landroid/os/UserHandle;Ljava/util/List;)V
-PLcom/android/server/pm/ShortcutService;->lambda$queryActivities$16(ILandroid/content/pm/ResolveInfo;)Z
-PLcom/android/server/pm/ShortcutService;->lambda$static$0(Landroid/content/pm/ResolveInfo;)Z
+PLcom/android/server/pm/ShortcutService;->isPackageInstalled(ILjava/lang/String;)Z
+PLcom/android/server/pm/ShortcutService;->isUidForegroundLocked(I)Z
+HPLcom/android/server/pm/ShortcutService;->isUserUnlockedL(I)Z
PLcom/android/server/pm/ShortcutService;->loadBaseStateLocked()V
-PLcom/android/server/pm/ShortcutService;->loadConfigurationLocked()V
PLcom/android/server/pm/ShortcutService;->loadUserInternal(ILjava/io/InputStream;Z)Lcom/android/server/pm/ShortcutUser;
PLcom/android/server/pm/ShortcutService;->loadUserLocked(I)Lcom/android/server/pm/ShortcutUser;
PLcom/android/server/pm/ShortcutService;->logDurationStat(IJ)V
-PLcom/android/server/pm/ShortcutService;->notifyListenerRunnable(Ljava/lang/String;I)Ljava/lang/Runnable;
-PLcom/android/server/pm/ShortcutService;->notifyShortcutChangeCallbacks(Ljava/lang/String;ILjava/util/List;Ljava/util/List;)V
-PLcom/android/server/pm/ShortcutService;->onBootPhase(I)V
PLcom/android/server/pm/ShortcutService;->packageShortcutsChanged(Lcom/android/server/pm/ShortcutPackage;Ljava/util/List;Ljava/util/List;)V
-PLcom/android/server/pm/ShortcutService;->parseBooleanAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)Z
-PLcom/android/server/pm/ShortcutService;->parseBooleanAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;Z)Z
-PLcom/android/server/pm/ShortcutService;->parseComponentNameAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)Landroid/content/ComponentName;
-PLcom/android/server/pm/ShortcutService;->parseIntAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)I
-PLcom/android/server/pm/ShortcutService;->parseIntAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;I)I
-PLcom/android/server/pm/ShortcutService;->parseIntentAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)Landroid/content/Intent;
-PLcom/android/server/pm/ShortcutService;->parseIntentAttributeNoDefault(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)Landroid/content/Intent;
-PLcom/android/server/pm/ShortcutService;->parseLongAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)J
PLcom/android/server/pm/ShortcutService;->parseLongAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;J)J
-PLcom/android/server/pm/ShortcutService;->parseStringAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;IZ)Ljava/util/List;
+PLcom/android/server/pm/ShortcutService;->prepareChangedShortcuts(Landroid/util/ArraySet;Landroid/util/ArraySet;Ljava/util/List;Lcom/android/server/pm/ShortcutPackage;)Ljava/util/List;
+PLcom/android/server/pm/ShortcutService;->pushDynamicShortcut(Ljava/lang/String;Landroid/content/pm/ShortcutInfo;I)V
+HPLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;IZ)Ljava/util/List;
PLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;Ljava/lang/String;Landroid/content/ComponentName;I)Ljava/util/List;
+PLcom/android/server/pm/ShortcutService;->removeAllDynamicShortcuts(Ljava/lang/String;I)V
PLcom/android/server/pm/ShortcutService;->removeDynamicShortcuts(Ljava/lang/String;Ljava/util/List;I)V
+PLcom/android/server/pm/ShortcutService;->removeLongLivedShortcuts(Ljava/lang/String;Ljava/util/List;I)V
PLcom/android/server/pm/ShortcutService;->removeNonKeyFields(Ljava/util/List;)Ljava/util/List;
-PLcom/android/server/pm/ShortcutService;->rescanUpdatedPackagesLocked(IJ)V
+PLcom/android/server/pm/ShortcutService;->reportShortcutUsed(Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/pm/ShortcutService;->rescanUpdatedPackagesLocked(IJ)V
+PLcom/android/server/pm/ShortcutService;->saveBaseState()V
PLcom/android/server/pm/ShortcutService;->saveDirtyInfo()V
+PLcom/android/server/pm/ShortcutService;->saveIconAndFixUpShortcutLocked(Lcom/android/server/pm/ShortcutPackage;Landroid/content/pm/ShortcutInfo;)V
PLcom/android/server/pm/ShortcutService;->saveUser(I)V
-PLcom/android/server/pm/ShortcutService;->saveUserInternalLocked(ILjava/io/OutputStream;Z)V
+PLcom/android/server/pm/ShortcutService;->saveUserInternalLocked(Ljava/io/OutputStream;ZI)V
PLcom/android/server/pm/ShortcutService;->scheduleSaveInner(I)V
-PLcom/android/server/pm/ShortcutService;->scheduleSaveUser(I)V
-PLcom/android/server/pm/ShortcutService;->setReturnedByServer(Ljava/util/List;)Ljava/util/List;
-PLcom/android/server/pm/ShortcutService;->setShortcutHostPackage(Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/pm/ShortcutService;->shouldBackupApp(Landroid/content/pm/PackageInfo;)Z
PLcom/android/server/pm/ShortcutService;->throwIfUserLockedL(I)V
PLcom/android/server/pm/ShortcutService;->updateConfigurationLocked(Ljava/lang/String;)Z
PLcom/android/server/pm/ShortcutService;->updateTimesLocked()V
-PLcom/android/server/pm/ShortcutService;->verifyCaller(Ljava/lang/String;I)V
+PLcom/android/server/pm/ShortcutService;->verifyCaller(ILjava/lang/String;)V
+PLcom/android/server/pm/ShortcutService;->verifyShortcutInfoPackage(Ljava/lang/String;Landroid/content/pm/ShortcutInfo;)V
+PLcom/android/server/pm/ShortcutService;->verifyShortcutInfoPackages(Ljava/lang/String;Ljava/util/List;)V
PLcom/android/server/pm/ShortcutService;->verifyStates()V
PLcom/android/server/pm/ShortcutService;->writeAttr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;J)V
-PLcom/android/server/pm/ShortcutService;->writeAttr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Landroid/content/ComponentName;)V
-PLcom/android/server/pm/ShortcutService;->writeAttr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Landroid/content/Intent;)V
-HPLcom/android/server/pm/ShortcutService;->writeAttr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Ljava/lang/CharSequence;)V
+PLcom/android/server/pm/ShortcutService;->writeAttr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Ljava/lang/CharSequence;)V
PLcom/android/server/pm/ShortcutService;->writeAttr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Z)V
-PLcom/android/server/pm/ShortcutService;->writeTagExtra(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Landroid/os/PersistableBundle;)V
+PLcom/android/server/pm/ShortcutUser$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/pm/ShortcutUser$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
PLcom/android/server/pm/ShortcutUser$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;Z)V
PLcom/android/server/pm/ShortcutUser$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
PLcom/android/server/pm/ShortcutUser$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/pm/ShortcutUser;IZ)V
-PLcom/android/server/pm/ShortcutUser;->$r8$lambda$BeZCg8-9BP9faEuabdbH0SUoZS0(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;ZLjava/io/File;)V
+PLcom/android/server/pm/ShortcutUser$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/ShortcutUser$$ExternalSyntheticLambda8;-><init>(ILjava/lang/String;Lcom/android/server/pm/ShortcutUser$$ExternalSyntheticLambda0;)V
+PLcom/android/server/pm/ShortcutUser$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;)V
PLcom/android/server/pm/ShortcutUser;-><init>(Lcom/android/server/pm/ShortcutService;I)V
PLcom/android/server/pm/ShortcutUser;->detectLocaleChange()V
+PLcom/android/server/pm/ShortcutUser;->dump(Ljava/io/PrintWriter;Lcom/android/server/pm/ShortcutService$DumpFilter;)V
+PLcom/android/server/pm/ShortcutUser;->dumpDirectorySize(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/io/File;)V
PLcom/android/server/pm/ShortcutUser;->forAllLaunchers(Ljava/util/function/Consumer;)V
-PLcom/android/server/pm/ShortcutUser;->forAllPackageItems(Ljava/util/function/Consumer;)V
PLcom/android/server/pm/ShortcutUser;->forAllPackages(Ljava/util/function/Consumer;)V
PLcom/android/server/pm/ShortcutUser;->forMainFilesIn(Ljava/io/File;Ljava/util/function/Consumer;)V
-PLcom/android/server/pm/ShortcutUser;->getCachedLauncher()Ljava/lang/String;
-PLcom/android/server/pm/ShortcutUser;->getLastAppScanOsFingerprint()Ljava/lang/String;
-PLcom/android/server/pm/ShortcutUser;->getLastAppScanTime()J
-PLcom/android/server/pm/ShortcutUser;->getLauncherShortcuts(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutLauncher;
PLcom/android/server/pm/ShortcutUser;->getPackageShortcuts(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage;
PLcom/android/server/pm/ShortcutUser;->getPackageShortcutsIfExists(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage;
-PLcom/android/server/pm/ShortcutUser;->getUserId()I
-PLcom/android/server/pm/ShortcutUser;->lambda$loadFromXml$3(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;ZLjava/io/File;)V
-PLcom/android/server/pm/ShortcutUser;->loadFromXml(Lcom/android/server/pm/ShortcutService;Lcom/android/modules/utils/TypedXmlPullParser;IZ)Lcom/android/server/pm/ShortcutUser;
-PLcom/android/server/pm/ShortcutUser;->logSharingShortcutStats(Lcom/android/internal/logging/MetricsLogger;)V
-PLcom/android/server/pm/ShortcutUser;->onCalledByPublisher(Ljava/lang/String;)V
-PLcom/android/server/pm/ShortcutUser;->rescanPackageIfNeeded(Ljava/lang/String;Z)V
-PLcom/android/server/pm/ShortcutUser;->saveShortcutPackageItem(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/ShortcutPackageItem;Z)V
-PLcom/android/server/pm/ShortcutUser;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;Z)V
-PLcom/android/server/pm/ShortcutUser;->setCachedLauncher(Ljava/lang/String;)V
-PLcom/android/server/pm/ShortcutUser;->setLastAppScanOsFingerprint(Ljava/lang/String;)V
-PLcom/android/server/pm/ShortcutUser;->setLastAppScanTime(J)V
+HPLcom/android/server/pm/ShortcutUser;->rescanPackageIfNeeded(Ljava/lang/String;Z)V
PLcom/android/server/pm/SilentUpdatePolicy;-><clinit>()V
PLcom/android/server/pm/SilentUpdatePolicy;-><init>()V
HSPLcom/android/server/pm/SnapshotStatistics$1;-><init>(Lcom/android/server/pm/SnapshotStatistics;Landroid/os/Looper;)V
PLcom/android/server/pm/SnapshotStatistics$1;->handleMessage(Landroid/os/Message;)V
HSPLcom/android/server/pm/SnapshotStatistics$BinMap;-><init>([I)V
-HSPLcom/android/server/pm/SnapshotStatistics$BinMap;->count()I
HSPLcom/android/server/pm/SnapshotStatistics$BinMap;->getBin(I)I
-PLcom/android/server/pm/SnapshotStatistics$Stats;->-$$Nest$mcomplete(Lcom/android/server/pm/SnapshotStatistics$Stats;J)V
+PLcom/android/server/pm/SnapshotStatistics$Stats;->-$$Nest$mdump(Lcom/android/server/pm/SnapshotStatistics$Stats;Ljava/io/PrintWriter;JZLjava/lang/String;)V
HSPLcom/android/server/pm/SnapshotStatistics$Stats;->-$$Nest$mrebuild(Lcom/android/server/pm/SnapshotStatistics$Stats;IIIIZZ)V
HSPLcom/android/server/pm/SnapshotStatistics$Stats;-><init>(Lcom/android/server/pm/SnapshotStatistics;J)V
-HSPLcom/android/server/pm/SnapshotStatistics$Stats;-><init>(Lcom/android/server/pm/SnapshotStatistics;JLcom/android/server/pm/SnapshotStatistics$Stats-IA;)V
-PLcom/android/server/pm/SnapshotStatistics$Stats;->complete(J)V
-HSPLcom/android/server/pm/SnapshotStatistics$Stats;->rebuild(IIIIZZ)V
-HSPLcom/android/server/pm/SnapshotStatistics;->-$$Nest$fgetmTimeBins(Lcom/android/server/pm/SnapshotStatistics;)Lcom/android/server/pm/SnapshotStatistics$BinMap;
-HSPLcom/android/server/pm/SnapshotStatistics;->-$$Nest$fgetmUseBins(Lcom/android/server/pm/SnapshotStatistics;)Lcom/android/server/pm/SnapshotStatistics$BinMap;
-PLcom/android/server/pm/SnapshotStatistics;->-$$Nest$mhandleMessage(Lcom/android/server/pm/SnapshotStatistics;Landroid/os/Message;)V
+PLcom/android/server/pm/SnapshotStatistics$Stats;-><init>(Lcom/android/server/pm/SnapshotStatistics;Lcom/android/server/pm/SnapshotStatistics$Stats;)V
+PLcom/android/server/pm/SnapshotStatistics$Stats;->dumpPrefix(Ljava/io/PrintWriter;JZLjava/lang/String;)V
+PLcom/android/server/pm/SnapshotStatistics$Stats;->durationToString(J)Ljava/lang/String;
HSPLcom/android/server/pm/SnapshotStatistics;-><clinit>()V
HSPLcom/android/server/pm/SnapshotStatistics;-><init>()V
-PLcom/android/server/pm/SnapshotStatistics;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/pm/SnapshotStatistics;->rebuild(JJII)V
-HSPLcom/android/server/pm/SnapshotStatistics;->scheduleTick()V
+PLcom/android/server/pm/SnapshotStatistics;->dump(Ljava/io/PrintWriter;J[Lcom/android/server/pm/SnapshotStatistics$Stats;[Lcom/android/server/pm/SnapshotStatistics$Stats;Ljava/lang/String;)V
PLcom/android/server/pm/SnapshotStatistics;->shift([Lcom/android/server/pm/SnapshotStatistics$Stats;J)V
-HPLcom/android/server/pm/SnapshotStatistics;->tick()V
-PLcom/android/server/pm/StagingManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/StagingManager;)V
+PLcom/android/server/pm/StagingManager$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V
PLcom/android/server/pm/StagingManager$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/pm/StagingManager$1;-><init>(Lcom/android/server/pm/StagingManager;Landroid/content/pm/IStagedApexObserver;)V
PLcom/android/server/pm/StagingManager$2;-><init>(Lcom/android/server/pm/StagingManager;)V
@@ -19839,57 +15485,39 @@ PLcom/android/server/pm/StagingManager$2;->onReceive(Landroid/content/Context;La
PLcom/android/server/pm/StagingManager$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/pm/StagingManager$Lifecycle;->onBootPhase(I)V
PLcom/android/server/pm/StagingManager$Lifecycle;->onStart()V
-PLcom/android/server/pm/StagingManager$Lifecycle;->startService(Lcom/android/server/pm/StagingManager;)V
-PLcom/android/server/pm/StagingManager;->$r8$lambda$Tc-8JeWCdIuusiZU02QNaF3RrX8(Lcom/android/server/pm/StagingManager;)V
-PLcom/android/server/pm/StagingManager;->-$$Nest$mmarkBootCompleted(Lcom/android/server/pm/StagingManager;)V
-PLcom/android/server/pm/StagingManager;->-$$Nest$mmarkStagedSessionsAsSuccessful(Lcom/android/server/pm/StagingManager;)V
-PLcom/android/server/pm/StagingManager;-><init>(Landroid/content/Context;)V
PLcom/android/server/pm/StagingManager;-><init>(Landroid/content/Context;Lcom/android/server/pm/ApexManager;)V
-PLcom/android/server/pm/StagingManager;->handleNonReadyAndDestroyedSessions(Ljava/util/List;)V
-PLcom/android/server/pm/StagingManager;->lambda$onBootCompletedBroadcastReceived$1()V
-PLcom/android/server/pm/StagingManager;->logFailedApexSessionsIfNecessary()V
-PLcom/android/server/pm/StagingManager;->markBootCompleted()V
-PLcom/android/server/pm/StagingManager;->markStagedSessionsAsSuccessful()V
PLcom/android/server/pm/StagingManager;->onBootCompletedBroadcastReceived()V
-PLcom/android/server/pm/StagingManager;->registerStagedApexObserver(Landroid/content/pm/IStagedApexObserver;)V
-PLcom/android/server/pm/StagingManager;->restoreSessions(Ljava/util/List;Z)V
-PLcom/android/server/pm/StagingManager;->systemReady()V
HSPLcom/android/server/pm/StorageEventHelper;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/DeletePackageHelper;Lcom/android/server/pm/RemovePackageHelper;)V
-PLcom/android/server/pm/StorageEventHelper;->collectAbsoluteCodePaths(Lcom/android/server/pm/Computer;)Ljava/util/List;
PLcom/android/server/pm/StorageEventHelper;->onVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V
PLcom/android/server/pm/StorageEventHelper;->reconcileApps(Lcom/android/server/pm/Computer;Ljava/lang/String;)V
HSPLcom/android/server/pm/SuspendPackageHelper;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/BroadcastHelper;Lcom/android/server/pm/ProtectedPackages;)V
-HPLcom/android/server/pm/SuspendPackageHelper;->isPackageSuspended(Lcom/android/server/pm/Computer;Ljava/lang/String;II)Z
+PLcom/android/server/pm/SuspendPackageHelper;->canSuspendPackageForUser(Lcom/android/server/pm/Computer;[Ljava/lang/String;II)[Z
+PLcom/android/server/pm/SuspendPackageHelper;->getKnownPackageName(Lcom/android/server/pm/Computer;II)Ljava/lang/String;
+PLcom/android/server/pm/SuspendPackageHelper;->isSuspendAllowedForUser(Lcom/android/server/pm/Computer;II)Z
HSPLcom/android/server/pm/UpdateOwnershipHelper;-><init>()V
-HPLcom/android/server/pm/UpdateOwnershipHelper;->hasValidOwnershipDenyList(Lcom/android/server/pm/PackageSetting;)Z
-HPLcom/android/server/pm/UpdateOwnershipHelper;->isUpdateOwnershipDenylisted(Ljava/lang/String;)Z
-HSPLcom/android/server/pm/UserDataPreparer;-><init>(Lcom/android/server/pm/Installer;Ljava/lang/Object;Landroid/content/Context;)V
+HSPLcom/android/server/pm/UpdateOwnershipHelper;->hasValidOwnershipDenyList(Lcom/android/server/pm/PackageSetting;)Z
+HSPLcom/android/server/pm/UserDataPreparer;-><init>(Lcom/android/server/pm/Installer;Lcom/android/server/pm/PackageManagerTracedLock;Landroid/content/Context;)V
PLcom/android/server/pm/UserDataPreparer;->enforceSerialNumber(Ljava/io/File;I)V
PLcom/android/server/pm/UserDataPreparer;->getDataSystemCeDirectory(I)Ljava/io/File;
PLcom/android/server/pm/UserDataPreparer;->getDataUserCeDirectory(Ljava/lang/String;I)Ljava/io/File;
PLcom/android/server/pm/UserDataPreparer;->getSerialNumber(Ljava/io/File;)I
-PLcom/android/server/pm/UserDataPreparer;->prepareUserData(Landroid/content/pm/UserInfo;I)V
+PLcom/android/server/pm/UserDataPreparer;->prepareUserData(ILandroid/content/pm/UserInfo;)V
PLcom/android/server/pm/UserDataPreparer;->prepareUserDataLI(Ljava/lang/String;Landroid/content/pm/UserInfo;IZ)V
-PLcom/android/server/pm/UserDataPreparer;->reconcileUsers(Ljava/lang/String;Ljava/util/List;)V
PLcom/android/server/pm/UserDataPreparer;->reconcileUsers(Ljava/lang/String;Ljava/util/List;Ljava/util/List;)V
HSPLcom/android/server/pm/UserJourneyLogger;-><init>()V
-PLcom/android/server/pm/UserJourneyLogger;->findUserJourneySession(I)Lcom/android/server/pm/UserJourneyLogger$UserJourneySession;
PLcom/android/server/pm/UserJourneyLogger;->getUserTypeForStatsd(Ljava/lang/String;)I
PLcom/android/server/pm/UserJourneyLogger;->logUserLifecycleEvent(III)V
PLcom/android/server/pm/UserJourneyLogger;->logUserLifecycleEventOccurred(Lcom/android/server/pm/UserJourneyLogger$UserJourneySession;IIII)V
PLcom/android/server/pm/UserJourneyLogger;->writeUserLifecycleEventOccurred(JIIII)V
-HSPLcom/android/server/pm/UserManagerInternal;-><init>()V
PLcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/UserManagerService;Landroid/os/Bundle;I)V
PLcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/pm/UserManagerService;)V
+PLcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda1;-><init>(Landroid/os/IUserRestrictionsListener;)V
HSPLcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/UserManagerService;)V
-HSPLcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/pm/UserManagerService;I)V
-PLcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda9;-><init>(Landroid/os/IUserRestrictionsListener;)V
-PLcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda9;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
-HSPLcom/android/server/pm/UserManagerService$1;-><init>(Lcom/android/server/pm/UserManagerService;)V
-HSPLcom/android/server/pm/UserManagerService$2;-><init>(Lcom/android/server/pm/UserManagerService;)V
-HSPLcom/android/server/pm/UserManagerService$3;-><init>(Lcom/android/server/pm/UserManagerService;)V
-PLcom/android/server/pm/UserManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda1;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
+HSPLcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/pm/UserManagerService;I)V
+PLcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/pm/UserManagerService;)V
+HSPLcom/android/server/pm/UserManagerService$1;-><init>(Lcom/android/server/pm/UserManagerService;I)V
+PLcom/android/server/pm/UserManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/pm/UserManagerService$4;-><init>(Lcom/android/server/pm/UserManagerService;ILandroid/os/Bundle;Landroid/os/Bundle;)V
PLcom/android/server/pm/UserManagerService$4;->run()V
PLcom/android/server/pm/UserManagerService$LifeCycle;-><init>(Landroid/content/Context;)V
@@ -19898,7 +15526,6 @@ PLcom/android/server/pm/UserManagerService$LifeCycle;->onStart()V
PLcom/android/server/pm/UserManagerService$LifeCycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/pm/UserManagerService$LifeCycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
HSPLcom/android/server/pm/UserManagerService$LocalService;-><init>(Lcom/android/server/pm/UserManagerService;)V
-HSPLcom/android/server/pm/UserManagerService$LocalService;-><init>(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService$LocalService-IA;)V
PLcom/android/server/pm/UserManagerService$LocalService;->addUserLifecycleListener(Lcom/android/server/pm/UserManagerInternal$UserLifecycleListener;)V
PLcom/android/server/pm/UserManagerService$LocalService;->addUserRestrictionsListener(Lcom/android/server/pm/UserManagerInternal$UserRestrictionsListener;)V
PLcom/android/server/pm/UserManagerService$LocalService;->addUserVisibilityListener(Lcom/android/server/pm/UserManagerInternal$UserVisibilityListener;)V
@@ -19907,275 +15534,186 @@ PLcom/android/server/pm/UserManagerService$LocalService;->getCommunalProfileId()
PLcom/android/server/pm/UserManagerService$LocalService;->getMainUserId()I
PLcom/android/server/pm/UserManagerService$LocalService;->getProfileIds(IZ)[I
PLcom/android/server/pm/UserManagerService$LocalService;->getProfileParentId(I)I
+PLcom/android/server/pm/UserManagerService$LocalService;->getUserAssignedToDisplay(I)I
PLcom/android/server/pm/UserManagerService$LocalService;->getUserIds()[I
HPLcom/android/server/pm/UserManagerService$LocalService;->getUserInfo(I)Landroid/content/pm/UserInfo;
-HPLcom/android/server/pm/UserManagerService$LocalService;->getUserInfos()[Landroid/content/pm/UserInfo;
+HSPLcom/android/server/pm/UserManagerService$LocalService;->getUserInfos()[Landroid/content/pm/UserInfo;
HPLcom/android/server/pm/UserManagerService$LocalService;->getUserProperties(I)Landroid/content/pm/UserProperties;
PLcom/android/server/pm/UserManagerService$LocalService;->getUserRestriction(ILjava/lang/String;)Z
+PLcom/android/server/pm/UserManagerService$LocalService;->getUserTypesForStatsd([I)[I
PLcom/android/server/pm/UserManagerService$LocalService;->getUsers(Z)Ljava/util/List;
-HSPLcom/android/server/pm/UserManagerService$LocalService;->getUsers(ZZZ)Ljava/util/List;
HPLcom/android/server/pm/UserManagerService$LocalService;->hasUserRestriction(Ljava/lang/String;I)Z
-PLcom/android/server/pm/UserManagerService$LocalService;->isProfileAccessible(IILjava/lang/String;Z)Z
+PLcom/android/server/pm/UserManagerService$LocalService;->isProfileAccessible(ILjava/lang/String;IZ)Z
+PLcom/android/server/pm/UserManagerService$LocalService;->isUserInitialized(I)Z
HPLcom/android/server/pm/UserManagerService$LocalService;->isUserRunning(I)Z
-HPLcom/android/server/pm/UserManagerService$LocalService;->isUserUnlocked(I)Z
+PLcom/android/server/pm/UserManagerService$LocalService;->isUserUnlocked(I)Z
HPLcom/android/server/pm/UserManagerService$LocalService;->isUserUnlockingOrUnlocked(I)Z
HPLcom/android/server/pm/UserManagerService$LocalService;->isUserVisible(I)Z
-PLcom/android/server/pm/UserManagerService$LocalService;->onSystemUserVisibilityChanged(Z)V
+PLcom/android/server/pm/UserManagerService$LocalService;->isVisibleBackgroundFullUser(I)Z
+PLcom/android/server/pm/UserManagerService$LocalService;->onSystemUserVisibilityChanged()V
PLcom/android/server/pm/UserManagerService$LocalService;->setUserState(II)V
HSPLcom/android/server/pm/UserManagerService$MainHandler;-><init>(Lcom/android/server/pm/UserManagerService;)V
PLcom/android/server/pm/UserManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/pm/UserManagerService$SettingsObserver;-><init>(Lcom/android/server/pm/UserManagerService;Landroid/os/Handler;)V
+HSPLcom/android/server/pm/UserManagerService$SettingsObserver;-><init>(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService$MainHandler;)V
HSPLcom/android/server/pm/UserManagerService$UserData;-><init>()V
-PLcom/android/server/pm/UserManagerService$UserData;->getIgnorePrepareStorageErrors()Z
-PLcom/android/server/pm/UserManagerService$UserData;->getLastRequestQuietModeEnabledMillis()J
-HSPLcom/android/server/pm/UserManagerService$UserData;->setLastRequestQuietModeEnabledMillis(J)V
-HSPLcom/android/server/pm/UserManagerService$WatchedUserStates;-><init>(Lcom/android/server/pm/UserManagerService;)V
-HPLcom/android/server/pm/UserManagerService$WatchedUserStates;->get(II)I
-HSPLcom/android/server/pm/UserManagerService$WatchedUserStates;->invalidateIsUserUnlockedCache()V
-HSPLcom/android/server/pm/UserManagerService$WatchedUserStates;->put(II)V
-PLcom/android/server/pm/UserManagerService;->$r8$lambda$GUi0BCW04izr6742i0VPIXzrq1o(Lcom/android/server/pm/UserManagerService;Landroid/os/Bundle;I)V
-PLcom/android/server/pm/UserManagerService;->$r8$lambda$LvInK5qZJcI6bZ0Fs5Aic8iLG5s(Landroid/os/IUserRestrictionsListener;ILandroid/os/Bundle;Landroid/os/Bundle;)V
-PLcom/android/server/pm/UserManagerService;->-$$Nest$fgetmContext(Lcom/android/server/pm/UserManagerService;)Landroid/content/Context;
-PLcom/android/server/pm/UserManagerService;->-$$Nest$fgetmPackagesLock(Lcom/android/server/pm/UserManagerService;)Ljava/lang/Object;
-PLcom/android/server/pm/UserManagerService;->-$$Nest$fgetmPm(Lcom/android/server/pm/UserManagerService;)Lcom/android/server/pm/PackageManagerService;
-PLcom/android/server/pm/UserManagerService;->-$$Nest$fgetmUserLifecycleListeners(Lcom/android/server/pm/UserManagerService;)Ljava/util/ArrayList;
-PLcom/android/server/pm/UserManagerService;->-$$Nest$fgetmUserRestrictionsListeners(Lcom/android/server/pm/UserManagerService;)Ljava/util/ArrayList;
-HPLcom/android/server/pm/UserManagerService;->-$$Nest$fgetmUserStates(Lcom/android/server/pm/UserManagerService;)Lcom/android/server/pm/UserManagerService$WatchedUserStates;
-HPLcom/android/server/pm/UserManagerService;->-$$Nest$fgetmUserVisibilityMediator(Lcom/android/server/pm/UserManagerService;)Lcom/android/server/pm/UserVisibilityMediator;
-HPLcom/android/server/pm/UserManagerService;->-$$Nest$fgetmUsers(Lcom/android/server/pm/UserManagerService;)Landroid/util/SparseArray;
-HPLcom/android/server/pm/UserManagerService;->-$$Nest$fgetmUsersLock(Lcom/android/server/pm/UserManagerService;)Ljava/lang/Object;
-PLcom/android/server/pm/UserManagerService;->-$$Nest$mcleanupPartialUsers(Lcom/android/server/pm/UserManagerService;)V
-PLcom/android/server/pm/UserManagerService;->-$$Nest$mgetCommunalProfileIdUnchecked(Lcom/android/server/pm/UserManagerService;)I
-HPLcom/android/server/pm/UserManagerService;->-$$Nest$mgetEffectiveUserRestrictions(Lcom/android/server/pm/UserManagerService;I)Landroid/os/Bundle;
-PLcom/android/server/pm/UserManagerService;->-$$Nest$mgetMainUserIdUnchecked(Lcom/android/server/pm/UserManagerService;)I
-PLcom/android/server/pm/UserManagerService;->-$$Nest$mgetProfileIdsLU(Lcom/android/server/pm/UserManagerService;ILjava/lang/String;ZZ)Landroid/util/IntArray;
-PLcom/android/server/pm/UserManagerService;->-$$Nest$mgetProfileParentIdUnchecked(Lcom/android/server/pm/UserManagerService;I)I
-PLcom/android/server/pm/UserManagerService;->-$$Nest$mgetUserDataLU(Lcom/android/server/pm/UserManagerService;I)Lcom/android/server/pm/UserManagerService$UserData;
-PLcom/android/server/pm/UserManagerService;->-$$Nest$mgetUserDataNoChecks(Lcom/android/server/pm/UserManagerService;I)Lcom/android/server/pm/UserManagerService$UserData;
-HSPLcom/android/server/pm/UserManagerService;->-$$Nest$mgetUserInfoNoChecks(Lcom/android/server/pm/UserManagerService;I)Landroid/content/pm/UserInfo;
-HPLcom/android/server/pm/UserManagerService;->-$$Nest$mgetUserPropertiesInternal(Lcom/android/server/pm/UserManagerService;I)Landroid/content/pm/UserProperties;
-HSPLcom/android/server/pm/UserManagerService;->-$$Nest$mgetUsersInternal(Lcom/android/server/pm/UserManagerService;ZZZ)Ljava/util/List;
-PLcom/android/server/pm/UserManagerService;->-$$Nest$minvalidateOwnerNameIfNecessary(Lcom/android/server/pm/UserManagerService;Landroid/content/res/Resources;Z)V
-PLcom/android/server/pm/UserManagerService;->-$$Nest$mregisterStatsCallbacks(Lcom/android/server/pm/UserManagerService;)V
-PLcom/android/server/pm/UserManagerService;->-$$Nest$msetLastEnteredForegroundTimeToNow(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService$UserData;)V
-PLcom/android/server/pm/UserManagerService;->-$$Nest$mwriteUserLP(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService$UserData;)V
+HSPLcom/android/server/pm/UserManagerService$WatchedUserStates;-><init>()V
+HPLcom/android/server/pm/UserManagerService$WatchedUserStates;->get(I)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
HSPLcom/android/server/pm/UserManagerService;-><clinit>()V
-HSPLcom/android/server/pm/UserManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/UserDataPreparer;Ljava/lang/Object;)V
HSPLcom/android/server/pm/UserManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/UserDataPreparer;Ljava/lang/Object;Ljava/io/File;Landroid/util/SparseArray;)V
PLcom/android/server/pm/UserManagerService;->addUserRestrictionsListener(Landroid/os/IUserRestrictionsListener;)V
-PLcom/android/server/pm/UserManagerService;->applyUserRestrictionsLR(I)V
PLcom/android/server/pm/UserManagerService;->autoLockPrivateSpace()V
-HPLcom/android/server/pm/UserManagerService;->checkCreateUsersPermission(Ljava/lang/String;)V
-HPLcom/android/server/pm/UserManagerService;->checkManageOrInteractPermissionIfCallerInOtherProfileGroup(ILjava/lang/String;)V
+PLcom/android/server/pm/UserManagerService;->canAddPrivateProfile(I)Z
+HSPLcom/android/server/pm/UserManagerService;->checkCreateUsersPermission(Ljava/lang/String;)V
+PLcom/android/server/pm/UserManagerService;->checkManageOrInteractPermissionIfCallerInOtherProfileGroup(ILjava/lang/String;)V
PLcom/android/server/pm/UserManagerService;->checkManageUsersPermission(Ljava/lang/String;)V
-HPLcom/android/server/pm/UserManagerService;->checkQueryOrCreateUsersPermission(Ljava/lang/String;)V
+PLcom/android/server/pm/UserManagerService;->checkQueryOrCreateUsersPermission(Ljava/lang/String;)V
PLcom/android/server/pm/UserManagerService;->checkQueryOrInteractPermissionIfCallerInOtherProfileGroup(ILjava/lang/String;)V
-PLcom/android/server/pm/UserManagerService;->cleanupPartialUsers()V
-HPLcom/android/server/pm/UserManagerService;->computeEffectiveUserRestrictionsLR(I)Landroid/os/Bundle;
-HSPLcom/android/server/pm/UserManagerService;->emulateSystemUserModeIfNeeded()V
-HPLcom/android/server/pm/UserManagerService;->exists(I)Z
+PLcom/android/server/pm/UserManagerService;->computeEffectiveUserRestrictionsLR(I)Landroid/os/Bundle;
+PLcom/android/server/pm/UserManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/pm/UserManagerService;->dumpTimeAgo(Ljava/io/PrintWriter;Ljava/lang/StringBuilder;JJ)V
+PLcom/android/server/pm/UserManagerService;->dumpUserLocked(Ljava/io/PrintWriter;Lcom/android/server/pm/UserManagerService$UserData;Ljava/lang/StringBuilder;JJ)V
+PLcom/android/server/pm/UserManagerService;->enforceCurrentUserIfVisibleBackgroundEnabled(I)V
+PLcom/android/server/pm/UserManagerService;->getActivityManagerInternal()Landroid/app/ActivityManagerInternal;
+PLcom/android/server/pm/UserManagerService;->getAliveUsersExcludingGuestsCountLU()I
PLcom/android/server/pm/UserManagerService;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle;
HPLcom/android/server/pm/UserManagerService;->getApplicationRestrictionsForUser(Ljava/lang/String;I)Landroid/os/Bundle;
PLcom/android/server/pm/UserManagerService;->getCommunalProfileIdUnchecked()I
-HPLcom/android/server/pm/UserManagerService;->getEffectiveUserRestrictions(I)Landroid/os/Bundle;
+PLcom/android/server/pm/UserManagerService;->getCredentialOwnerProfile(I)I
+PLcom/android/server/pm/UserManagerService;->getCurrentUserId()I
+PLcom/android/server/pm/UserManagerService;->getEffectiveUserRestrictions(I)Landroid/os/Bundle;
HSPLcom/android/server/pm/UserManagerService;->getInstance()Lcom/android/server/pm/UserManagerService;
-HSPLcom/android/server/pm/UserManagerService;->getInternalForInjectorOnly()Lcom/android/server/pm/UserManagerInternal;
PLcom/android/server/pm/UserManagerService;->getMainUserId()I
-HPLcom/android/server/pm/UserManagerService;->getMainUserIdUnchecked()I
-HSPLcom/android/server/pm/UserManagerService;->getOwnerName()Ljava/lang/String;
-PLcom/android/server/pm/UserManagerService;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
+PLcom/android/server/pm/UserManagerService;->getMainUserIdUnchecked()I
PLcom/android/server/pm/UserManagerService;->getPrimaryUser()Landroid/content/pm/UserInfo;
PLcom/android/server/pm/UserManagerService;->getPrivateProfileUserId()I
-HPLcom/android/server/pm/UserManagerService;->getProfileIds(ILjava/lang/String;ZZ)[I
PLcom/android/server/pm/UserManagerService;->getProfileIds(IZ)[I
+HPLcom/android/server/pm/UserManagerService;->getProfileIds(Ljava/lang/String;IZZ)[I+]Landroid/util/IntArray;Landroid/util/IntArray;
PLcom/android/server/pm/UserManagerService;->getProfileIdsExcludingHidden(IZ)[I
-HPLcom/android/server/pm/UserManagerService;->getProfileIdsLU(ILjava/lang/String;ZZ)Landroid/util/IntArray;
+HPLcom/android/server/pm/UserManagerService;->getProfileIdsLU(Ljava/lang/String;IZZ)Landroid/util/IntArray;+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
HPLcom/android/server/pm/UserManagerService;->getProfileParent(I)Landroid/content/pm/UserInfo;
PLcom/android/server/pm/UserManagerService;->getProfileParentIdUnchecked(I)I
-HPLcom/android/server/pm/UserManagerService;->getProfileParentLU(I)Landroid/content/pm/UserInfo;
-HPLcom/android/server/pm/UserManagerService;->getProfileType(I)Ljava/lang/String;
-HPLcom/android/server/pm/UserManagerService;->getProfiles(IZ)Ljava/util/List;
-HPLcom/android/server/pm/UserManagerService;->getProfilesLU(ILjava/lang/String;ZZ)Ljava/util/List;
-HPLcom/android/server/pm/UserManagerService;->getUidForPackage(Ljava/lang/String;)I
+PLcom/android/server/pm/UserManagerService;->getProfileParentLU(I)Landroid/content/pm/UserInfo;
+PLcom/android/server/pm/UserManagerService;->getProfileType(I)Ljava/lang/String;
+PLcom/android/server/pm/UserManagerService;->getProfiles(IZ)Ljava/util/List;
+PLcom/android/server/pm/UserManagerService;->getProfilesLU(IZZ)Ljava/util/List;
+PLcom/android/server/pm/UserManagerService;->getUserCreationTime(I)J
HPLcom/android/server/pm/UserManagerService;->getUserDataLU(I)Lcom/android/server/pm/UserManagerService$UserData;
PLcom/android/server/pm/UserManagerService;->getUserDataNoChecks(I)Lcom/android/server/pm/UserManagerService$UserData;
HSPLcom/android/server/pm/UserManagerService;->getUserFile(I)Lcom/android/server/pm/ResilientAtomicFile;
PLcom/android/server/pm/UserManagerService;->getUserHandle(I)I
-HPLcom/android/server/pm/UserManagerService;->getUserIds()[I
+HSPLcom/android/server/pm/UserManagerService;->getUserIds()[I
HSPLcom/android/server/pm/UserManagerService;->getUserIdsIncludingPreCreated()[I
-HPLcom/android/server/pm/UserManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo;
-HPLcom/android/server/pm/UserManagerService;->getUserInfoLU(I)Landroid/content/pm/UserInfo;
-HSPLcom/android/server/pm/UserManagerService;->getUserInfoNoChecks(I)Landroid/content/pm/UserInfo;
-PLcom/android/server/pm/UserManagerService;->getUserJourneyLogger()Lcom/android/server/pm/UserJourneyLogger;
+PLcom/android/server/pm/UserManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo;
+HPLcom/android/server/pm/UserManagerService;->getUserInfoLU(I)Landroid/content/pm/UserInfo;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/pm/UserManagerService;->getUserInfoNoChecks(I)Landroid/content/pm/UserInfo;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/pm/UserManagerService;->getUserListFile()Lcom/android/server/pm/ResilientAtomicFile;
-HPLcom/android/server/pm/UserManagerService;->getUserPropertiesCopy(I)Landroid/content/pm/UserProperties;
+PLcom/android/server/pm/UserManagerService;->getUserName()Ljava/lang/String;
+PLcom/android/server/pm/UserManagerService;->getUserPropertiesCopy(I)Landroid/content/pm/UserProperties;
HPLcom/android/server/pm/UserManagerService;->getUserPropertiesInternal(I)Landroid/content/pm/UserProperties;
+PLcom/android/server/pm/UserManagerService;->getUserRestrictionSources(Ljava/lang/String;I)Ljava/util/List;
PLcom/android/server/pm/UserManagerService;->getUserRestrictions(I)Landroid/os/Bundle;
-HPLcom/android/server/pm/UserManagerService;->getUserSerialNumber(I)I
-PLcom/android/server/pm/UserManagerService;->getUserStartRealtime()J
PLcom/android/server/pm/UserManagerService;->getUserUnlockRealtime()J
-PLcom/android/server/pm/UserManagerService;->getUsers(Z)Ljava/util/List;
-HPLcom/android/server/pm/UserManagerService;->getUsers(ZZZ)Ljava/util/List;
-HSPLcom/android/server/pm/UserManagerService;->getUsersInternal(ZZZ)Ljava/util/List;
+HSPLcom/android/server/pm/UserManagerService;->getUsers(ZZZ)Ljava/util/List;
+HSPLcom/android/server/pm/UserManagerService;->getUsersInternal(ZZZ)Ljava/util/List;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
PLcom/android/server/pm/UserManagerService;->getVisibleUsers()[I
-HPLcom/android/server/pm/UserManagerService;->hasCreateUsersPermission()Z
-HPLcom/android/server/pm/UserManagerService;->hasManageUsersOrPermission(Ljava/lang/String;)Z
-HPLcom/android/server/pm/UserManagerService;->hasManageUsersPermission()Z
-HPLcom/android/server/pm/UserManagerService;->hasManageUsersPermission(I)Z
-HPLcom/android/server/pm/UserManagerService;->hasPermissionGranted(Ljava/lang/String;I)Z
-HPLcom/android/server/pm/UserManagerService;->hasProfile(I)Z
+PLcom/android/server/pm/UserManagerService;->hasBaseUserRestriction(Ljava/lang/String;I)Z
+HSPLcom/android/server/pm/UserManagerService;->hasManageUsersOrPermission(Ljava/lang/String;)Z
+PLcom/android/server/pm/UserManagerService;->hasManageUsersPermission()Z
+PLcom/android/server/pm/UserManagerService;->hasPermissionGranted(ILjava/lang/String;)Z
PLcom/android/server/pm/UserManagerService;->hasQueryOrCreateUsersPermission()Z
-HPLcom/android/server/pm/UserManagerService;->hasQueryUsersPermission()Z
-HPLcom/android/server/pm/UserManagerService;->hasUserRestriction(Ljava/lang/String;I)Z
+PLcom/android/server/pm/UserManagerService;->hasUserRestriction(Ljava/lang/String;I)Z
HSPLcom/android/server/pm/UserManagerService;->initDefaultGuestRestrictions()V
-PLcom/android/server/pm/UserManagerService;->installWhitelistedSystemPackages(ZZLandroid/util/ArraySet;)Z
HSPLcom/android/server/pm/UserManagerService;->invalidateOwnerNameIfNecessary(Landroid/content/res/Resources;Z)V
+HPLcom/android/server/pm/UserManagerService;->isAdminUser(I)Z
PLcom/android/server/pm/UserManagerService;->isAutoLockForPrivateSpaceEnabled()Z
-PLcom/android/server/pm/UserManagerService;->isAutoLockingPrivateSpaceOnRestartsEnabled()Z
+PLcom/android/server/pm/UserManagerService;->isCreationOverrideEnabled()Z
PLcom/android/server/pm/UserManagerService;->isDemoUser(I)Z
PLcom/android/server/pm/UserManagerService;->isHeadlessSystemUserMode()Z
PLcom/android/server/pm/UserManagerService;->isPreCreated(I)Z
-PLcom/android/server/pm/UserManagerService;->isProfileHidden(I)Z
-HPLcom/android/server/pm/UserManagerService;->isProfileOf(Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;)Z
PLcom/android/server/pm/UserManagerService;->isQuietModeEnabled(I)Z
PLcom/android/server/pm/UserManagerService;->isRestricted(I)Z
PLcom/android/server/pm/UserManagerService;->isSameProfileGroup(II)Z
HPLcom/android/server/pm/UserManagerService;->isSettingRestrictedForUser(Ljava/lang/String;ILjava/lang/String;I)Z
-HPLcom/android/server/pm/UserManagerService;->isUserRunning(I)Z
-HSPLcom/android/server/pm/UserManagerService;->isUserTypeSubtypeOfFull(Ljava/lang/String;)Z
-HSPLcom/android/server/pm/UserManagerService;->isUserTypeSubtypeOfProfile(Ljava/lang/String;)Z
-HSPLcom/android/server/pm/UserManagerService;->isUserTypeSubtypeOfSystem(Ljava/lang/String;)Z
-HPLcom/android/server/pm/UserManagerService;->isUserUnlocked(I)Z
-HPLcom/android/server/pm/UserManagerService;->isUserUnlockingOrUnlocked(I)Z
-PLcom/android/server/pm/UserManagerService;->lambda$addUserRestrictionsListener$3(Landroid/os/IUserRestrictionsListener;ILandroid/os/Bundle;Landroid/os/Bundle;)V
-PLcom/android/server/pm/UserManagerService;->lambda$updateUserRestrictionsInternalLR$4(Landroid/os/Bundle;I)V
-PLcom/android/server/pm/UserManagerService;->markEphemeralUsersForRemoval()V
-PLcom/android/server/pm/UserManagerService;->onBeforeUnlockUser(I)V
+PLcom/android/server/pm/UserManagerService;->isUserForeground(I)Z
+PLcom/android/server/pm/UserManagerService;->isUserLimitReached()Z
+PLcom/android/server/pm/UserManagerService;->isUserOfType(ILjava/lang/String;)Z
+PLcom/android/server/pm/UserManagerService;->isUserRunning(I)Z
+PLcom/android/server/pm/UserManagerService;->isUserTypeEnabled(Lcom/android/server/pm/UserTypeDetails;)Z
+PLcom/android/server/pm/UserManagerService;->isUserTypeEnabled(Ljava/lang/String;)Z
+PLcom/android/server/pm/UserManagerService;->isUserUnlocked(I)Z
+PLcom/android/server/pm/UserManagerService;->isUserUnlockingOrUnlocked(I)Z
PLcom/android/server/pm/UserManagerService;->onUserLoggedIn(I)V
-HPLcom/android/server/pm/UserManagerService;->packageToRestrictionsFileName(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/pm/UserManagerService;->propagateUserRestrictionsLR(ILandroid/os/Bundle;Landroid/os/Bundle;)V
-HPLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLAr(Landroid/util/AtomicFile;)Landroid/os/Bundle;
-HPLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLAr(Ljava/lang/String;I)Landroid/os/Bundle;
+PLcom/android/server/pm/UserManagerService;->packageToRestrictionsFileName(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLAr(Landroid/util/AtomicFile;)Landroid/os/Bundle;
HSPLcom/android/server/pm/UserManagerService;->readUserLP(II)Lcom/android/server/pm/UserManagerService$UserData;
-HPLcom/android/server/pm/UserManagerService;->readUserLP(ILjava/io/InputStream;I)Lcom/android/server/pm/UserManagerService$UserData;
+HSPLcom/android/server/pm/UserManagerService;->readUserLP(ILjava/io/InputStream;I)Lcom/android/server/pm/UserManagerService$UserData;
HSPLcom/android/server/pm/UserManagerService;->readUserListLP()V
PLcom/android/server/pm/UserManagerService;->reconcileUsers(Ljava/lang/String;)V
-PLcom/android/server/pm/UserManagerService;->registerStatsCallbacks()V
PLcom/android/server/pm/UserManagerService;->scheduleWriteUser(I)V
-PLcom/android/server/pm/UserManagerService;->setLastEnteredForegroundTimeToNow(Lcom/android/server/pm/UserManagerService$UserData;)V
PLcom/android/server/pm/UserManagerService;->setOrUpdateAutoLockPreferenceForPrivateProfile(I)V
PLcom/android/server/pm/UserManagerService;->setUserRestriction(Ljava/lang/String;ZI)V
-PLcom/android/server/pm/UserManagerService;->systemReady()V
HSPLcom/android/server/pm/UserManagerService;->updateUserIds()V
-PLcom/android/server/pm/UserManagerService;->updateUserRestrictionsInternalLR(Landroid/os/Bundle;I)V
-HSPLcom/android/server/pm/UserManagerService;->updateUsersWithFeatureFlags(Z)V
-HSPLcom/android/server/pm/UserManagerService;->upgradeIfNecessaryLP()V
+PLcom/android/server/pm/UserManagerService;->updateUserRestrictionsInternalLR(ILandroid/os/Bundle;)V
HSPLcom/android/server/pm/UserManagerService;->upgradeIfNecessaryLP(II)V
PLcom/android/server/pm/UserManagerService;->userExists(I)Z
HSPLcom/android/server/pm/UserManagerService;->userWithName(Landroid/content/pm/UserInfo;)Landroid/content/pm/UserInfo;
PLcom/android/server/pm/UserManagerService;->writeUserLP(Lcom/android/server/pm/UserManagerService$UserData;)V
-HPLcom/android/server/pm/UserManagerService;->writeUserLP(Lcom/android/server/pm/UserManagerService$UserData;Ljava/io/OutputStream;)V
+PLcom/android/server/pm/UserManagerService;->writeUserLP(Lcom/android/server/pm/UserManagerService$UserData;Ljava/io/OutputStream;)V
HSPLcom/android/server/pm/UserNeedsBadgingCache;-><init>(Lcom/android/server/pm/UserManagerService;)V
-HPLcom/android/server/pm/UserNeedsBadgingCache;->get(I)Z
+HPLcom/android/server/pm/UserNeedsBadgingCache;->get(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
HSPLcom/android/server/pm/UserRestrictionsUtils;-><clinit>()V
-PLcom/android/server/pm/UserRestrictionsUtils;->applyUserRestrictions(Landroid/content/Context;ILandroid/os/Bundle;Landroid/os/Bundle;)V
HSPLcom/android/server/pm/UserRestrictionsUtils;->areEqual(Landroid/os/Bundle;Landroid/os/Bundle;)Z
-HPLcom/android/server/pm/UserRestrictionsUtils;->isSettingRestrictedForUser(Landroid/content/Context;Ljava/lang/String;ILjava/lang/String;I)Z
-HPLcom/android/server/pm/UserRestrictionsUtils;->isValidRestriction(Ljava/lang/String;)Z
+PLcom/android/server/pm/UserRestrictionsUtils;->dumpRestrictions(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/pm/UserRestrictionsUtils;->isValidRestriction(Ljava/lang/String;)Z
HSPLcom/android/server/pm/UserRestrictionsUtils;->merge(Landroid/os/Bundle;Landroid/os/Bundle;)V
-HSPLcom/android/server/pm/UserRestrictionsUtils;->newSetWithUniqueCheck([Ljava/lang/String;)Ljava/util/Set;
-PLcom/android/server/pm/UserRestrictionsUtils;->nonNull(Landroid/os/Bundle;)Landroid/os/Bundle;
HSPLcom/android/server/pm/UserRestrictionsUtils;->readRestrictions(Lcom/android/modules/utils/TypedXmlPullParser;)Landroid/os/Bundle;
HSPLcom/android/server/pm/UserRestrictionsUtils;->readRestrictions(Lcom/android/modules/utils/TypedXmlPullParser;Landroid/os/Bundle;)V
PLcom/android/server/pm/UserRestrictionsUtils;->restrictionsChanged(Landroid/os/Bundle;Landroid/os/Bundle;[Ljava/lang/String;)Z
PLcom/android/server/pm/UserRestrictionsUtils;->writeRestrictions(Lcom/android/modules/utils/TypedXmlSerializer;Landroid/os/Bundle;Ljava/lang/String;)V
-HSPLcom/android/server/pm/UserSystemPackageInstaller;-><clinit>()V
HSPLcom/android/server/pm/UserSystemPackageInstaller;-><init>(Lcom/android/server/pm/UserManagerService;Landroid/util/ArrayMap;)V
-PLcom/android/server/pm/UserSystemPackageInstaller;->checkWhitelistedSystemPackages(I)V
HSPLcom/android/server/pm/UserSystemPackageInstaller;->determineWhitelistedPackagesForUserTypes(Lcom/android/server/SystemConfig;)Landroid/util/ArrayMap;
-HSPLcom/android/server/pm/UserSystemPackageInstaller;->getAndSortKeysFromMap(Landroid/util/ArrayMap;)[Ljava/lang/String;
-HSPLcom/android/server/pm/UserSystemPackageInstaller;->getBaseTypeBitSets()Ljava/util/Map;
-PLcom/android/server/pm/UserSystemPackageInstaller;->getDeviceDefaultWhitelistMode()I
+PLcom/android/server/pm/UserSystemPackageInstaller;->dump(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/pm/UserSystemPackageInstaller;->dumpPackageWhitelistProblems(Landroid/util/IndentingPrintWriter;IZZ)V
+PLcom/android/server/pm/UserSystemPackageInstaller;->getPackagesWhitelistErrors(I)Ljava/util/List;
PLcom/android/server/pm/UserSystemPackageInstaller;->getPackagesWhitelistWarnings()Ljava/util/List;
HSPLcom/android/server/pm/UserSystemPackageInstaller;->getTypesBitSet(Ljava/lang/Iterable;Ljava/util/Map;)J
HSPLcom/android/server/pm/UserSystemPackageInstaller;->getUserTypeMask(Ljava/lang/String;)J
PLcom/android/server/pm/UserSystemPackageInstaller;->getWhitelistMode()I
-PLcom/android/server/pm/UserSystemPackageInstaller;->getWhitelistedSystemPackages()Ljava/util/Set;
-PLcom/android/server/pm/UserSystemPackageInstaller;->installWhitelistedSystemPackages(ZZLandroid/util/ArraySet;)Z
-PLcom/android/server/pm/UserSystemPackageInstaller;->isEnforceMode(I)Z
-PLcom/android/server/pm/UserSystemPackageInstaller;->isImplicitWhitelistMode(I)Z
-PLcom/android/server/pm/UserSystemPackageInstaller;->isLogMode(I)Z
PLcom/android/server/pm/UserSystemPackageInstaller;->modeToString(I)Ljava/lang/String;
-PLcom/android/server/pm/UserSystemPackageInstaller;->shouldUseOverlayTargetName(Lcom/android/server/pm/pkg/AndroidPackage;)Z
+PLcom/android/server/pm/UserSystemPackageInstaller;->showIssues(Landroid/util/IndentingPrintWriter;ZLjava/util/List;Ljava/lang/String;)V
HSPLcom/android/server/pm/UserTypeDetails$Builder;-><init>()V
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->checkSystemAndMainUserPreconditions()V
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->createUserTypeDetails()Lcom/android/server/pm/UserTypeDetails;
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->getDefaultUserProperties()Landroid/content/pm/UserProperties;
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->hasBadge()Z
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->hasValidBaseType()Z
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->hasValidPropertyFlags()Z
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->isProfile()Z
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->setBadgeColors([I)Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->setBadgeLabels([I)Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->setBadgeNoBackground(I)Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->setBadgePlain(I)Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->setBaseType(I)Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->setDarkThemeBadgeColors([I)Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->setDefaultCrossProfileIntentFilters(Ljava/util/List;)Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->setDefaultRestrictions(Landroid/os/Bundle;)Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->setDefaultSecureSettings(Landroid/os/Bundle;)Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->setDefaultUserInfoPropertyFlags(I)Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->setDefaultUserProperties(Landroid/content/pm/UserProperties$Builder;)Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->setEnabled(I)Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->setIconBadge(I)Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->setLabels([I)Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->setMaxAllowed(I)Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->setMaxAllowedPerParent(I)Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->setName(Ljava/lang/String;)Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeDetails$Builder;->setStatusBarIcon(I)Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeDetails;-><init>(Ljava/lang/String;ZIII[IIIIII[I[I[ILandroid/os/Bundle;Landroid/os/Bundle;Landroid/os/Bundle;Ljava/util/List;Landroid/content/pm/UserProperties;)V
-HSPLcom/android/server/pm/UserTypeDetails;-><init>(Ljava/lang/String;ZIII[IIIIII[I[I[ILandroid/os/Bundle;Landroid/os/Bundle;Landroid/os/Bundle;Ljava/util/List;Landroid/content/pm/UserProperties;Lcom/android/server/pm/UserTypeDetails-IA;)V
-HSPLcom/android/server/pm/UserTypeDetails;->addDefaultRestrictionsTo(Landroid/os/Bundle;)V
-HSPLcom/android/server/pm/UserTypeDetails;->getDefaultUserPropertiesReference()Landroid/content/pm/UserProperties;
-HSPLcom/android/server/pm/UserTypeDetails;->isFull()Z
+HSPLcom/android/server/pm/UserTypeDetails;-><init>(Ljava/lang/String;ZIII[IIIIII[I[I[ILandroid/os/Bundle;Landroid/os/Bundle;Ljava/util/List;ILandroid/content/pm/UserProperties;)V
HSPLcom/android/server/pm/UserTypeDetails;->isProfile()Z
-HSPLcom/android/server/pm/UserTypeDetails;->isSystem()Z
HSPLcom/android/server/pm/UserTypeFactory;->customizeBuilders(Landroid/util/ArrayMap;Landroid/content/res/XmlResourceParser;)V
HSPLcom/android/server/pm/UserTypeFactory;->getDefaultBuilders()Landroid/util/ArrayMap;
-HSPLcom/android/server/pm/UserTypeFactory;->getDefaultCloneCrossProfileIntentFilter()Ljava/util/List;
-HSPLcom/android/server/pm/UserTypeFactory;->getDefaultGuestUserRestrictions()Landroid/os/Bundle;
-HSPLcom/android/server/pm/UserTypeFactory;->getDefaultManagedCrossProfileIntentFilter()Ljava/util/List;
-HSPLcom/android/server/pm/UserTypeFactory;->getDefaultManagedProfileSecureSettings()Landroid/os/Bundle;
-HSPLcom/android/server/pm/UserTypeFactory;->getDefaultNonManagedProfileSecureSettings()Landroid/os/Bundle;
-HSPLcom/android/server/pm/UserTypeFactory;->getDefaultProfileRestrictions()Landroid/os/Bundle;
-HSPLcom/android/server/pm/UserTypeFactory;->getDefaultSecondaryUserRestrictions()Landroid/os/Bundle;
-HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeFullDemo()Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeFullGuest()Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeFullRestricted()Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeFullSecondary()Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeFullSystem()Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeProfileClone()Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeProfileCommunal()Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeProfileManaged()Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeProfilePrivate()Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeProfileTest()Lcom/android/server/pm/UserTypeDetails$Builder;
-HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeSystemHeadless()Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultPrivateProfileRestrictions()Landroid/os/Bundle;
HSPLcom/android/server/pm/UserTypeFactory;->getUserTypeVersion()I
HSPLcom/android/server/pm/UserTypeFactory;->getUserTypeVersion(Landroid/content/res/XmlResourceParser;)I
-HSPLcom/android/server/pm/UserTypeFactory;->getUserTypes()Landroid/util/ArrayMap;
PLcom/android/server/pm/UserVisibilityMediator$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/UserManagerInternal$UserVisibilityListener;IZ)V
PLcom/android/server/pm/UserVisibilityMediator$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/pm/UserVisibilityMediator;->$r8$lambda$RwzqKlQYDyxdAxTJhHVafFhaCRE(Lcom/android/server/pm/UserManagerInternal$UserVisibilityListener;IZ)V
HSPLcom/android/server/pm/UserVisibilityMediator;-><clinit>()V
-HSPLcom/android/server/pm/UserVisibilityMediator;-><init>(Landroid/os/Handler;)V
HSPLcom/android/server/pm/UserVisibilityMediator;-><init>(ZZLandroid/os/Handler;)V
-PLcom/android/server/pm/UserVisibilityMediator;->addListener(Lcom/android/server/pm/UserManagerInternal$UserVisibilityListener;)V
PLcom/android/server/pm/UserVisibilityMediator;->dispatchVisibilityChanged(Ljava/util/concurrent/CopyOnWriteArrayList;IZ)V
+PLcom/android/server/pm/UserVisibilityMediator;->dump(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/pm/UserVisibilityMediator;->dump(Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/pm/UserVisibilityMediator;->dumpSparseIntArray(Landroid/util/IndentingPrintWriter;Landroid/util/SparseIntArray;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pm/UserVisibilityMediator;->getUserAssignedToDisplay(IZ)I
PLcom/android/server/pm/UserVisibilityMediator;->getVisibleUsers()Landroid/util/IntArray;
HPLcom/android/server/pm/UserVisibilityMediator;->isCurrentUserOrRunningProfileOfCurrentUser(I)Z
HPLcom/android/server/pm/UserVisibilityMediator;->isUserVisible(I)Z
-PLcom/android/server/pm/UserVisibilityMediator;->lambda$dispatchVisibilityChanged$0(Lcom/android/server/pm/UserManagerInternal$UserVisibilityListener;IZ)V
-PLcom/android/server/pm/UserVisibilityMediator;->onSystemUserVisibilityChanged(Z)V
+PLcom/android/server/pm/VerificationInfo;-><init>(Landroid/net/Uri;Landroid/net/Uri;II)V
+PLcom/android/server/pm/VerificationUtils;->broadcastPackageVerified(ILandroid/net/Uri;ILjava/lang/String;ILandroid/os/UserHandle;Landroid/content/Context;)V
+PLcom/android/server/pm/VerificationUtils;->processVerificationResponse(ILcom/android/server/pm/PackageVerificationState;ILjava/lang/String;Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/VerificationUtils;->processVerificationResponse(ILcom/android/server/pm/PackageVerificationState;Lcom/android/server/pm/PackageVerificationResponse;Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/VerificationUtils;->processVerificationResponseOnTimeout(ILcom/android/server/pm/PackageVerificationState;Lcom/android/server/pm/PackageVerificationResponse;Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/VerifyingSession$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/pm/VerifyingSession$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/pm/VerifyingSession;-><init>(Landroid/os/UserHandle;Ljava/io/File;Lcom/android/server/pm/PackageSessionVerifier$1;Landroid/content/pm/PackageInstaller$SessionParams;Lcom/android/server/pm/InstallSource;ILandroid/content/pm/SigningDetails;ILandroid/content/pm/parsing/PackageLite;ZLcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/VerifyingSession;->getDefaultVerificationResponse()I
+PLcom/android/server/pm/VerifyingSession;->handleReturnCode()V
+HPLcom/android/server/pm/VerifyingSession;->handleStartVerify()V
+PLcom/android/server/pm/VerifyingSession;->isAdbVerificationEnabled(Landroid/content/pm/PackageInfoLite;IZ)Z
+PLcom/android/server/pm/VerifyingSession;->matchComponentForVerifier(Ljava/lang/String;Ljava/util/List;)Landroid/content/ComponentName;
HSPLcom/android/server/pm/WatchedIntentFilter;-><init>()V
HSPLcom/android/server/pm/WatchedIntentFilter;-><init>(Landroid/content/IntentFilter;)V
HSPLcom/android/server/pm/WatchedIntentFilter;-><init>(Lcom/android/server/pm/WatchedIntentFilter;)V
@@ -20183,409 +15721,269 @@ HSPLcom/android/server/pm/WatchedIntentFilter;->addAction(Ljava/lang/String;)V
HSPLcom/android/server/pm/WatchedIntentFilter;->addCategory(Ljava/lang/String;)V
HSPLcom/android/server/pm/WatchedIntentFilter;->addDataScheme(Ljava/lang/String;)V
HSPLcom/android/server/pm/WatchedIntentFilter;->addDataType(Ljava/lang/String;)V
-HSPLcom/android/server/pm/WatchedIntentFilter;->getIntentFilter()Landroid/content/IntentFilter;
-HSPLcom/android/server/pm/WatchedIntentFilter;->onChanged()V
+HSPLcom/android/server/pm/WatchedIntentFilter;->getIntentFilter$3()Landroid/content/IntentFilter;
HSPLcom/android/server/pm/WatchedIntentResolver$1;-><init>(Lcom/android/server/pm/WatchedIntentResolver;)V
-HSPLcom/android/server/pm/WatchedIntentResolver$2;-><init>()V
HSPLcom/android/server/pm/WatchedIntentResolver;-><clinit>()V
HSPLcom/android/server/pm/WatchedIntentResolver;-><init>()V
-HSPLcom/android/server/pm/WatchedIntentResolver;->addFilter(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/WatchedIntentFilter;)V
-HSPLcom/android/server/pm/WatchedIntentResolver;->copyFrom(Lcom/android/server/pm/WatchedIntentResolver;)V
+HSPLcom/android/server/pm/WatchedIntentResolver;->addFilter(Lcom/android/server/pm/Computer;Lcom/android/server/pm/WatchedIntentFilter;)V
HSPLcom/android/server/pm/WatchedIntentResolver;->dispatchChange(Lcom/android/server/utils/Watchable;)V
HSPLcom/android/server/pm/WatchedIntentResolver;->findFilters(Lcom/android/server/pm/WatchedIntentFilter;)Ljava/util/ArrayList;
-HSPLcom/android/server/pm/WatchedIntentResolver;->onChanged()V
HSPLcom/android/server/pm/WatchedIntentResolver;->registerObserver(Lcom/android/server/utils/Watcher;)V
-HSPLcom/android/server/pm/dex/ArtManagerService$ArtManagerInternalImpl;-><init>(Lcom/android/server/pm/dex/ArtManagerService;)V
-HSPLcom/android/server/pm/dex/ArtManagerService$ArtManagerInternalImpl;-><init>(Lcom/android/server/pm/dex/ArtManagerService;Lcom/android/server/pm/dex/ArtManagerService$ArtManagerInternalImpl-IA;)V
-PLcom/android/server/pm/dex/ArtManagerService$ArtManagerInternalImpl;->checkIorapCompiledTrace(Ljava/lang/String;Ljava/lang/String;J)Z
-PLcom/android/server/pm/dex/ArtManagerService$ArtManagerInternalImpl;->getPackageOptimizationInfo(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Ljava/lang/String;)Landroid/content/pm/dex/PackageOptimizationInfo;
-PLcom/android/server/pm/dex/ArtManagerService;->-$$Nest$sfgetDEBUG()Z
-PLcom/android/server/pm/dex/ArtManagerService;->-$$Nest$smgetCompilationFilterTronValue(Ljava/lang/String;)I
-PLcom/android/server/pm/dex/ArtManagerService;->-$$Nest$smgetCompilationReasonTronValue(Ljava/lang/String;)I
+PLcom/android/server/pm/WatchedIntentResolver;->removeFilter(Lcom/android/server/pm/WatchedIntentFilter;)V
+PLcom/android/server/pm/WatchedIntentResolver;->removeFilterInternal(Ljava/lang/Object;)V
+PLcom/android/server/pm/WatchedIntentResolver;->sortResults(Ljava/util/List;)V
+PLcom/android/server/pm/dex/ArtManagerService$$ExternalSyntheticLambda0;-><init>(Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback;Landroid/os/ParcelFileDescriptor;Ljava/lang/String;)V
+PLcom/android/server/pm/dex/ArtManagerService$$ExternalSyntheticLambda0;->run()V
+HPLcom/android/server/pm/dex/ArtManagerService$ArtManagerInternalImpl;->getPackageOptimizationInfo(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Ljava/lang/String;)Landroid/content/pm/dex/PackageOptimizationInfo;
HSPLcom/android/server/pm/dex/ArtManagerService;-><clinit>()V
-HSPLcom/android/server/pm/dex/ArtManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/Installer;Ljava/lang/Object;)V
-PLcom/android/server/pm/dex/ArtManagerService;->getCompilationFilterTronValue(Ljava/lang/String;)I
+HSPLcom/android/server/pm/dex/ArtManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/dex/ArtManagerService;->checkAndroidPermissions(ILjava/lang/String;)Z
HSPLcom/android/server/pm/dex/ArtManagerService;->getCompilationReasonTronValue(Ljava/lang/String;)I
-HSPLcom/android/server/pm/dex/ArtManagerService;->verifyTronLoggingConstants()V
-HSPLcom/android/server/pm/dex/ArtStatsLogUtils$ArtStatsLogger;-><init>()V
-HPLcom/android/server/pm/dex/DexManager$PackageCodeLocations;-><init>(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
-PLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->mergeAppDataDirs(Ljava/lang/String;I)V
-PLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->updateCodeLocation(Ljava/lang/String;[Ljava/lang/String;)V
-PLcom/android/server/pm/dex/DexManager;->-$$Nest$smputIfAbsent(Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/pm/dex/ArtManagerService;->isRuntimeProfilingEnabled(ILjava/lang/String;)Z
+PLcom/android/server/pm/dex/ArtManagerService;->postSuccess(Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback;Landroid/os/ParcelFileDescriptor;Ljava/lang/String;)V
+PLcom/android/server/pm/dex/ArtManagerService;->snapshotRuntimeProfile(ILjava/lang/String;Ljava/lang/String;Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback;Ljava/lang/String;)V
+PLcom/android/server/pm/dex/DexManager$PackageCodeLocations;-><init>([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
HSPLcom/android/server/pm/dex/DexManager;-><clinit>()V
-HSPLcom/android/server/pm/dex/DexManager;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageDexOptimizer;Lcom/android/server/pm/Installer;Ljava/lang/Object;Lcom/android/server/pm/dex/DynamicCodeLogger;)V
-HSPLcom/android/server/pm/dex/DexManager;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageDexOptimizer;Lcom/android/server/pm/Installer;Ljava/lang/Object;Lcom/android/server/pm/dex/DynamicCodeLogger;Landroid/content/pm/IPackageManager;)V
-HPLcom/android/server/pm/dex/DexManager;->cachePackageCodeLocation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;I)V
-PLcom/android/server/pm/dex/DexManager;->cachePackageInfo(Landroid/content/pm/PackageInfo;I)V
+HSPLcom/android/server/pm/dex/DexManager;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageDexOptimizer;Lcom/android/server/pm/dex/DynamicCodeLogger;Landroid/content/pm/IPackageManager;)V
+PLcom/android/server/pm/dex/DexManager;->cachePackageCodeLocation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;I)V
PLcom/android/server/pm/dex/DexManager;->load(Ljava/util/Map;)V
-HPLcom/android/server/pm/dex/DexManager;->loadInternal(Ljava/util/Map;)V
-HPLcom/android/server/pm/dex/DexManager;->putIfAbsent(Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/pm/dex/DynamicCodeLogger$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/pm/dex/DexManager;->loadInternal(Ljava/util/Map;)V
+PLcom/android/server/pm/dex/DexManager;->notifyPackageUpdated([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pm/dex/DexoptOptions;-><init>(IILjava/lang/String;)V
+PLcom/android/server/pm/dex/DexoptOptions;-><init>(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pm/dex/DexoptOptions;->convertToArtServiceDexoptReason(I)Ljava/lang/String;
+PLcom/android/server/pm/dex/DexoptOptions;->convertToDexoptParams(I)Lcom/android/server/art/model/DexoptParams;
PLcom/android/server/pm/dex/DynamicCodeLogger$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/pm/dex/DynamicCodeLogger;->$r8$lambda$11aZGEwigi4eqhfsE87EXQLEOD8(Ljava/lang/String;)Ljava/util/Set;
HSPLcom/android/server/pm/dex/DynamicCodeLogger;-><init>(Lcom/android/server/pm/Installer;)V
-PLcom/android/server/pm/dex/DynamicCodeLogger;->lambda$load$0(Ljava/lang/String;)Ljava/util/Set;
-HPLcom/android/server/pm/dex/DynamicCodeLogger;->load(Ljava/util/Map;)V
-PLcom/android/server/pm/dex/DynamicCodeLogger;->readAndSync(Ljava/util/Map;)V
-PLcom/android/server/pm/dex/OdsignStatsLogger$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/pm/dex/DynamicCodeLogger;->load(Ljava/util/Map;)V
PLcom/android/server/pm/dex/OdsignStatsLogger$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/pm/dex/OdsignStatsLogger;->$r8$lambda$5UQTBxO3KU1lWEi5-bo1kDq6QXM()V
-PLcom/android/server/pm/dex/OdsignStatsLogger;->triggerStatsWrite()V
-PLcom/android/server/pm/dex/OdsignStatsLogger;->writeStats()V
HSPLcom/android/server/pm/dex/PackageDexUsage;-><init>()V
-PLcom/android/server/pm/dex/PackageDexUsage;->read()V
-PLcom/android/server/pm/dex/PackageDexUsage;->readInternal(Ljava/lang/Object;)V
-PLcom/android/server/pm/dex/PackageDexUsage;->readInternal(Ljava/lang/Void;)V
-PLcom/android/server/pm/dex/PackageDexUsage;->syncData(Ljava/util/Map;Ljava/util/Map;Ljava/util/List;)V
+PLcom/android/server/pm/dex/PackageDexUsage;->read$1(Ljava/io/Reader;)V
+PLcom/android/server/pm/dex/PackageDexUsage;->readInternal(Lcom/android/server/utils/WatchedArrayMap;)V
+PLcom/android/server/pm/dex/PackageDexUsage;->syncData(Ljava/util/List;Ljava/util/Map;Ljava/util/Map;)V
HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading;-><clinit>()V
HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading;-><init>()V
-PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->read()V
-PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->readInternal(Ljava/lang/Object;)V
-PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->readInternal(Ljava/lang/Void;)V
-PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->syncData(Ljava/util/Map;)V
+PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->read(Ljava/io/InputStream;)V
+PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->readInternal(Lcom/android/server/utils/WatchedArrayMap;)V
HSPLcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;-><init>(Lcom/android/server/pm/snapshot/PackageDataSnapshot;)V
-HSPLcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;-><init>(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl-IA;)V
HSPLcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;->checkClosed()V
HSPLcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;->close()V
-HPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;-><init>(ILandroid/os/UserHandle;Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;)V
-HPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;-><init>(ILandroid/os/UserHandle;Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl-IA;)V
-HPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->checkClosed()V
+HPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;-><init>(ILandroid/os/UserHandle;Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;Lcom/android/server/pm/PackageSetting;)V
+PLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->checkClosed()V
HPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->close()V
-HPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->getPackageState(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageState;
-HPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->getPackageStates()Ljava/util/Map;
-HSPLcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;-><init>(Lcom/android/server/pm/snapshot/PackageDataSnapshot;)V
-HSPLcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;-><init>(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl-IA;)V
+HPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->getPackageState(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageState;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
+PLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->getPackageStates()Ljava/util/Map;
HSPLcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;->close()V
HPLcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;->filtered(ILandroid/os/UserHandle;)Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;
HSPLcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;->getDisabledSystemPackageStates()Ljava/util/Map;
-HSPLcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;->getPackageStates()Ljava/util/Map;
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;->getPackageStates()Ljava/util/Map;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;
HSPLcom/android/server/pm/local/PackageManagerLocalImpl;-><init>(Lcom/android/server/pm/PackageManagerService;)V
HPLcom/android/server/pm/local/PackageManagerLocalImpl;->withFilteredSnapshot()Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;
-HPLcom/android/server/pm/local/PackageManagerLocalImpl;->withFilteredSnapshot()Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;
HPLcom/android/server/pm/local/PackageManagerLocalImpl;->withFilteredSnapshot(ILandroid/os/UserHandle;)Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;
-HPLcom/android/server/pm/local/PackageManagerLocalImpl;->withFilteredSnapshot(ILandroid/os/UserHandle;)Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;
+HPLcom/android/server/pm/local/PackageManagerLocalImpl;->withFilteredSnapshot(ILandroid/os/UserHandle;Lcom/android/server/pm/PackageSetting;)Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;
HSPLcom/android/server/pm/local/PackageManagerLocalImpl;->withUnfilteredSnapshot()Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;
-HSPLcom/android/server/pm/local/PackageManagerLocalImpl;->withUnfilteredSnapshot()Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;
-PLcom/android/server/pm/parsing/PackageCacher;-><clinit>()V
-PLcom/android/server/pm/parsing/PackageCacher;-><init>(Ljava/io/File;)V
-HPLcom/android/server/pm/parsing/PackageCacher;->fromCacheEntry([B)Lcom/android/internal/pm/parsing/pkg/ParsedPackage;
-HPLcom/android/server/pm/parsing/PackageCacher;->fromCacheEntryStatic([B)Lcom/android/internal/pm/parsing/pkg/ParsedPackage;
-HPLcom/android/server/pm/parsing/PackageCacher;->getCacheKey(Ljava/io/File;I)Ljava/lang/String;
-HPLcom/android/server/pm/parsing/PackageCacher;->getCachedResult(Ljava/io/File;I)Lcom/android/internal/pm/parsing/pkg/ParsedPackage;
-HPLcom/android/server/pm/parsing/PackageCacher;->isCacheUpToDate(Ljava/io/File;Ljava/io/File;)Z
-HPLcom/android/server/pm/parsing/PackageInfoUtils$CachedApplicationInfoGenerator;-><init>()V
-HPLcom/android/server/pm/parsing/PackageInfoUtils$CachedApplicationInfoGenerator;->generate(Lcom/android/server/pm/pkg/AndroidPackage;JLcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ApplicationInfo;
-PLcom/android/server/pm/parsing/PackageInfoUtils;-><clinit>()V
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoFlags(ILcom/android/server/pm/pkg/PackageStateInternal;)I
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoFlags(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;)I
-PLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoPrivateFlags(ILcom/android/server/pm/pkg/PackageStateInternal;)I
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoPrivateFlags(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;)I
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoPrivateFlagsExt(ILcom/android/server/pm/pkg/PackageStateInternal;)I
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->assignFieldsComponentInfoParsedMainComponent(Landroid/content/pm/ComponentInfo;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;)V
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->assignFieldsComponentInfoParsedMainComponent(Landroid/content/pm/ComponentInfo;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/server/pm/pkg/PackageStateInternal;I)V
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->assignFieldsPackageItemInfoParsedComponent(Landroid/content/pm/PackageItemInfo;Lcom/android/internal/pm/pkg/component/ParsedComponent;)V
-PLcom/android/server/pm/parsing/PackageInfoUtils;->assignFieldsPackageItemInfoParsedComponent(Landroid/content/pm/PackageItemInfo;Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/server/pm/pkg/PackageStateInternal;I)V
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->checkUseInstalledOrHidden(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/pkg/PackageUserStateInternal;J)Z
-PLcom/android/server/pm/parsing/PackageInfoUtils;->flag(ZI)I
-PLcom/android/server/pm/parsing/PackageInfoUtils;->generate(Lcom/android/server/pm/pkg/AndroidPackage;[IJJJLjava/util/Set;Ljava/util/Set;Lcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/PackageInfo;
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateActivityInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedActivity;JLcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ActivityInfo;
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateActivityInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedActivity;JLcom/android/server/pm/pkg/PackageUserStateInternal;Landroid/content/pm/ApplicationInfo;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ActivityInfo;
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateApplicationInfo(Lcom/android/server/pm/pkg/AndroidPackage;JLcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ApplicationInfo;
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateInstrumentationInfo(Lcom/android/internal/pm/pkg/component/ParsedInstrumentation;Lcom/android/server/pm/pkg/AndroidPackage;JLcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/InstrumentationInfo;
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->generatePermissionGroupInfo(Lcom/android/internal/pm/pkg/component/ParsedPermissionGroup;J)Landroid/content/pm/PermissionGroupInfo;
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->generatePermissionInfo(Lcom/android/internal/pm/pkg/component/ParsedPermission;J)Landroid/content/pm/PermissionInfo;
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateProcessInfo(Ljava/util/Map;J)Landroid/util/ArrayMap;
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateProviderInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedProvider;JLcom/android/server/pm/pkg/PackageUserStateInternal;Landroid/content/pm/ApplicationInfo;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ProviderInfo;
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateServiceInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedService;JLcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ServiceInfo;
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateServiceInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedService;JLcom/android/server/pm/pkg/PackageUserStateInternal;Landroid/content/pm/ApplicationInfo;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ServiceInfo;
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateWithComponents(Lcom/android/server/pm/pkg/AndroidPackage;[IJJJLjava/util/Set;Ljava/util/Set;Lcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/PackageInfo;
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->getDataDir(Lcom/android/server/pm/pkg/PackageStateInternal;I)Ljava/io/File;
+PLcom/android/server/pm/parsing/PackageCacher$$ExternalSyntheticLambda0;-><init>(Ljava/lang/String;)V
+PLcom/android/server/pm/parsing/PackageCacher$$ExternalSyntheticLambda0;->accept(Ljava/io/File;Ljava/lang/String;)Z
+HSPLcom/android/server/pm/parsing/PackageCacher;-><clinit>()V
+HSPLcom/android/server/pm/parsing/PackageCacher;-><init>(Ljava/io/File;Lcom/android/server/pm/PackageManagerService$3;)V
+PLcom/android/server/pm/parsing/PackageCacher;->cacheResult(Ljava/io/File;ILcom/android/internal/pm/parsing/pkg/ParsedPackage;)V
+PLcom/android/server/pm/parsing/PackageCacher;->cleanCachedResult(Ljava/io/File;)V
+HSPLcom/android/server/pm/parsing/PackageCacher;->fromCacheEntry([B)Lcom/android/internal/pm/parsing/pkg/ParsedPackage;
+HSPLcom/android/server/pm/parsing/PackageCacher;->fromCacheEntryStatic([BLcom/android/server/pm/PackageManagerService$3;)Lcom/android/internal/pm/parsing/pkg/ParsedPackage;
+HSPLcom/android/server/pm/parsing/PackageCacher;->getCacheKey(Ljava/io/File;I)Ljava/lang/String;
+HSPLcom/android/server/pm/parsing/PackageCacher;->getCachedResult(Ljava/io/File;I)Lcom/android/internal/pm/parsing/pkg/ParsedPackage;
+HSPLcom/android/server/pm/parsing/PackageCacher;->isCacheFileUpToDate(Ljava/io/File;Ljava/io/File;)Z
+PLcom/android/server/pm/parsing/PackageCacher;->toCacheEntry(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;)[B
+PLcom/android/server/pm/parsing/PackageCacher;->toCacheEntryStatic(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;)[B
+PLcom/android/server/pm/parsing/PackageInfoUtils$CachedApplicationInfoGenerator;-><init>()V
+HSPLcom/android/server/pm/parsing/PackageInfoUtils;-><clinit>()V
+HSPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoFlags(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/pkg/AndroidPackage;)I
+HSPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoPrivateFlags(Lcom/android/server/pm/pkg/AndroidPackage;)I
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->assignFieldsComponentInfoParsedMainComponent(Landroid/content/pm/ComponentInfo;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/server/pm/pkg/PackageStateInternal;I)V+]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->assignFieldsPackageItemInfoParsedComponent(Landroid/content/pm/PackageItemInfo;Lcom/android/internal/pm/pkg/component/ParsedComponent;)V+]Lcom/android/internal/pm/pkg/component/ParsedComponent;megamorphic_types
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->checkUseInstalledOrHidden(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/pkg/PackageUserStateInternal;J)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+PLcom/android/server/pm/parsing/PackageInfoUtils;->generateActivityInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedActivity;JLcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateActivityInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedActivity;JLcom/android/server/pm/pkg/PackageUserStateInternal;Landroid/content/pm/ApplicationInfo;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ActivityInfo;+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateApplicationInfo(Lcom/android/server/pm/pkg/AndroidPackage;JLcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ApplicationInfo;+]Lcom/android/internal/pm/parsing/pkg/AndroidPackageHidden;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/internal/pm/parsing/pkg/PackageImpl;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+PLcom/android/server/pm/parsing/PackageInfoUtils;->generatePermissionGroupInfo(Lcom/android/internal/pm/pkg/component/ParsedPermissionGroup;J)Landroid/content/pm/PermissionGroupInfo;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->generatePermissionInfo(Lcom/android/internal/pm/pkg/component/ParsedPermission;J)Landroid/content/pm/PermissionInfo;+]Lcom/android/internal/pm/pkg/component/ParsedPermission;Lcom/android/internal/pm/pkg/component/ParsedPermissionImpl;
+PLcom/android/server/pm/parsing/PackageInfoUtils;->generateProcessInfo(Ljava/util/Map;)Landroid/util/ArrayMap;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateProviderInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedProvider;JLcom/android/server/pm/pkg/PackageUserStateInternal;Landroid/content/pm/ApplicationInfo;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ProviderInfo;+]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateServiceInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedService;JLcom/android/server/pm/pkg/PackageUserStateInternal;Landroid/content/pm/ApplicationInfo;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ServiceInfo;+]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->getDataDir(Lcom/android/server/pm/PackageSetting;I)Ljava/io/File;
HPLcom/android/server/pm/parsing/PackageInfoUtils;->getDeprecatedSignatures(Landroid/content/pm/SigningDetails;J)[Landroid/content/pm/Signature;
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->initForUser(Landroid/content/pm/ApplicationInfo;Lcom/android/server/pm/pkg/AndroidPackage;ILcom/android/server/pm/pkg/PackageUserStateInternal;)V
-PLcom/android/server/pm/parsing/PackageInfoUtils;->initForUser(Landroid/content/pm/InstrumentationInfo;Lcom/android/server/pm/pkg/AndroidPackage;ILcom/android/server/pm/pkg/PackageUserStateInternal;)V
-HPLcom/android/server/pm/parsing/PackageInfoUtils;->updateApplicationInfo(Landroid/content/pm/ApplicationInfo;JLcom/android/server/pm/pkg/PackageUserState;)V
-HPLcom/android/server/pm/parsing/ParsedComponentStateUtils;->getNonLocalizedLabelAndIcon(Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/server/pm/pkg/PackageStateInternal;I)Landroid/util/Pair;
-PLcom/android/server/pm/parsing/library/AndroidHidlUpdater;-><init>()V
-HPLcom/android/server/pm/parsing/library/AndroidHidlUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
-PLcom/android/server/pm/parsing/library/AndroidNetIpSecIkeUpdater;-><init>()V
-HPLcom/android/server/pm/parsing/library/AndroidNetIpSecIkeUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
-PLcom/android/server/pm/parsing/library/AndroidTestBaseUpdater;-><init>()V
-HPLcom/android/server/pm/parsing/library/AndroidTestBaseUpdater;->isChangeEnabled(Lcom/android/server/pm/pkg/AndroidPackage;Z)Z
-HPLcom/android/server/pm/parsing/library/AndroidTestBaseUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
-PLcom/android/server/pm/parsing/library/ApexSharedLibraryUpdater;-><init>(Landroid/util/ArrayMap;)V
-HPLcom/android/server/pm/parsing/library/ApexSharedLibraryUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
-HPLcom/android/server/pm/parsing/library/ApexSharedLibraryUpdater;->updateSharedLibraryForPackage(Lcom/android/server/SystemConfig$SharedLibraryEntry;Lcom/android/internal/pm/parsing/pkg/ParsedPackage;)V
-PLcom/android/server/pm/parsing/library/ComGoogleAndroidMapsUpdater;-><init>()V
-HPLcom/android/server/pm/parsing/library/ComGoogleAndroidMapsUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
-PLcom/android/server/pm/parsing/library/OrgApacheHttpLegacyUpdater;-><init>()V
-HPLcom/android/server/pm/parsing/library/OrgApacheHttpLegacyUpdater;->apkTargetsApiLevelLessThanOrEqualToOMR1(Lcom/android/server/pm/pkg/AndroidPackage;)Z
-HPLcom/android/server/pm/parsing/library/OrgApacheHttpLegacyUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
-PLcom/android/server/pm/parsing/library/PackageBackwardCompatibility$AndroidTestRunnerSplitUpdater;-><init>()V
-HPLcom/android/server/pm/parsing/library/PackageBackwardCompatibility$AndroidTestRunnerSplitUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
-PLcom/android/server/pm/parsing/library/PackageBackwardCompatibility;-><clinit>()V
-PLcom/android/server/pm/parsing/library/PackageBackwardCompatibility;-><init>(Z[Lcom/android/server/pm/parsing/library/PackageSharedLibraryUpdater;)V
-PLcom/android/server/pm/parsing/library/PackageBackwardCompatibility;->addUpdaterForAndroidTestBase(Ljava/util/List;)Z
-PLcom/android/server/pm/parsing/library/PackageBackwardCompatibility;->modifySharedLibraries(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
-HPLcom/android/server/pm/parsing/library/PackageBackwardCompatibility;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
-PLcom/android/server/pm/parsing/library/PackageSharedLibraryUpdater;-><init>()V
-HPLcom/android/server/pm/parsing/library/PackageSharedLibraryUpdater;->isLibraryPresent(Ljava/util/List;Ljava/util/List;Ljava/lang/String;)Z
-HPLcom/android/server/pm/parsing/library/PackageSharedLibraryUpdater;->prefixImplicitDependency(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/pm/parsing/library/PackageSharedLibraryUpdater;->prefixRequiredLibrary(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Ljava/lang/String;)V
-HPLcom/android/server/pm/parsing/library/PackageSharedLibraryUpdater;->removeLibrary(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Ljava/lang/String;)V
-PLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->createNativeLibraryHandle(Lcom/android/server/pm/pkg/AndroidPackage;)Lcom/android/internal/content/NativeLibraryHelper$Handle;
-PLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->createSharedLibraryForDynamic(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Landroid/content/pm/SharedLibraryInfo;
-HPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->fillVersionCodes(Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/pm/PackageInfo;)V
-PLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->generateAppInfoWithoutState(Lcom/android/server/pm/pkg/AndroidPackage;)Landroid/content/pm/ApplicationInfo;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->updateApplicationInfo(JLandroid/content/pm/ApplicationInfo;Lcom/android/server/pm/pkg/PackageUserStateInternal;)V+]Landroid/content/pm/overlay/OverlayPaths;Landroid/content/pm/overlay/OverlayPaths;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/pm/parsing/ParsedComponentStateUtils;->getNonLocalizedLabelAndIcon(Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/server/pm/pkg/PackageStateInternal;I)Landroid/util/Pair;+]Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserStateInternal;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/parsing/library/AndroidHidlUpdater;-><init>()V
+HSPLcom/android/server/pm/parsing/library/AndroidHidlUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
+HSPLcom/android/server/pm/parsing/library/AndroidNetIpSecIkeUpdater;-><init>()V
+HSPLcom/android/server/pm/parsing/library/AndroidNetIpSecIkeUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
+HSPLcom/android/server/pm/parsing/library/AndroidTestBaseUpdater;-><init>()V
+HSPLcom/android/server/pm/parsing/library/AndroidTestBaseUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
+HSPLcom/android/server/pm/parsing/library/ApexSharedLibraryUpdater;-><init>(Landroid/util/ArrayMap;)V
+HSPLcom/android/server/pm/parsing/library/ApexSharedLibraryUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
+HSPLcom/android/server/pm/parsing/library/ComGoogleAndroidMapsUpdater;-><init>()V
+HSPLcom/android/server/pm/parsing/library/ComGoogleAndroidMapsUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
+HSPLcom/android/server/pm/parsing/library/OrgApacheHttpLegacyUpdater;-><init>()V
+HSPLcom/android/server/pm/parsing/library/OrgApacheHttpLegacyUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
+HSPLcom/android/server/pm/parsing/library/PackageBackwardCompatibility$AndroidTestRunnerSplitUpdater;-><init>()V
+HSPLcom/android/server/pm/parsing/library/PackageBackwardCompatibility$AndroidTestRunnerSplitUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
+HSPLcom/android/server/pm/parsing/library/PackageBackwardCompatibility;-><clinit>()V
+HSPLcom/android/server/pm/parsing/library/PackageBackwardCompatibility;-><init>(Z[Lcom/android/server/pm/parsing/library/PackageSharedLibraryUpdater;)V
+HSPLcom/android/server/pm/parsing/library/PackageBackwardCompatibility;->modifySharedLibraries(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
+HSPLcom/android/server/pm/parsing/library/PackageBackwardCompatibility;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
+HSPLcom/android/server/pm/parsing/library/PackageSharedLibraryUpdater;-><init>()V
+HSPLcom/android/server/pm/parsing/library/PackageSharedLibraryUpdater;->prefixImplicitDependency(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Ljava/lang/String;)V
+HSPLcom/android/server/pm/parsing/library/PackageSharedLibraryUpdater;->prefixRequiredLibrary(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Ljava/lang/String;)V
PLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->getAllCodePaths(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/util/List;
-HPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->getRawPrimaryCpuAbi(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/lang/String;
-HPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->getRawSecondaryCpuAbi(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/lang/String;
-HPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->getRealPackageOrNull(Lcom/android/server/pm/pkg/AndroidPackage;Z)Ljava/lang/String;
-HPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->hasComponentClassName(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Z
-HPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->isEncryptionAware(Lcom/android/server/pm/pkg/AndroidPackage;)Z
-HPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->isLibrary(Lcom/android/server/pm/pkg/AndroidPackage;)Z
-HPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->isMatchForSystemOnly(Lcom/android/server/pm/pkg/PackageState;J)Z
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->getHiddenApiEnforcementPolicy(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;)I
+HSPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->getRealPackageOrNull(Lcom/android/server/pm/pkg/AndroidPackage;Z)Ljava/lang/String;
+HPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->hasComponentClassName(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Z+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
+PLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->isLibrary(Lcom/android/server/pm/pkg/AndroidPackage;)Z
+PLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->validatePackageDexMetadata(Lcom/android/server/pm/pkg/AndroidPackage;)V
HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;-><init>(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;)V
-HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;->getPackageInfo(Ljava/lang/String;)Landroid/content/pm/PackageInfo;
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;->getPermissionFlags(Ljava/lang/String;Landroid/content/pm/PackageInfo;Landroid/os/UserHandle;)I
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;->getPackageInfo(Ljava/lang/String;)Landroid/content/pm/PackageInfo;
PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;->getPermissionInfo(Ljava/lang/String;)Landroid/content/pm/PermissionInfo;
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;->isGranted(Ljava/lang/String;Landroid/content/pm/PackageInfo;Landroid/os/UserHandle;)Z
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;->updatePermissionFlags(Ljava/lang/String;Landroid/content/pm/PackageInfo;IILandroid/os/UserHandle;)V
HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$2;-><init>(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;Landroid/os/Looper;)V
PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$2;->handleMessage(Landroid/os/Message;)V
-HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DefaultPermissionGrant;-><init>(Ljava/lang/String;ZZ)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DefaultPermissionGrant;-><init>(Ljava/lang/String;ZZ)V
HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;-><init>(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;)V
-HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;-><init>(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper-IA;)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;->getBackgroundPermission(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;->getSystemPackageInfo(Ljava/lang/String;)Landroid/content/pm/PackageInfo;
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;->isPermissionRestricted(Ljava/lang/String;)Z
PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;->isSysComponentOrPersistentPlatformSignedPrivApp(Landroid/content/pm/PackageInfo;)Z
PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;->isSystemPackage(Landroid/content/pm/PackageInfo;)Z
PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;->isSystemPackage(Ljava/lang/String;)Z
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->-$$Nest$fgetNO_PM_CACHE(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;)Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->-$$Nest$fgetmContext(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;)Landroid/content/Context;
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->-$$Nest$fgetmGrantExceptions(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;)Landroid/util/ArrayMap;
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->-$$Nest$fgetmLock(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;)Ljava/lang/Object;
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->-$$Nest$fgetmServiceInternal(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;)Landroid/content/pm/PackageManagerInternal;
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->-$$Nest$fputmGrantExceptions(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;Landroid/util/ArrayMap;)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->-$$Nest$mreadDefaultPermissionExceptionsLocked(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;)Landroid/util/ArrayMap;
HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;-><clinit>()V
HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->doesPackageSupportRuntimePermissions(Landroid/content/pm/PackageInfo;)Z
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getDefaultPermissionFiles()[Ljava/io/File;
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToEnabledImsServices([Ljava/lang/String;I)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToEnabledTelephonyDataServices([Ljava/lang/String;I)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantPermissionsToPackage(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Landroid/content/pm/PackageInfo;IZZZ[Ljava/util/Set;)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->doesPackageSupportRuntimePermissions(Landroid/content/pm/PackageInfo;)Z
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantPermissionsToPackage(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Landroid/content/pm/PackageInfo;IZZ[Ljava/util/Set;)V
PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantPermissionsToSystemPackage(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Ljava/lang/String;IZ[Ljava/util/Set;)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantPermissionsToSystemPackage(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Ljava/lang/String;I[Ljava/util/Set;)V
-HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantRuntimePermissions(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Landroid/content/pm/PackageInfo;Ljava/util/Set;ZZZI)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantSystemFixedPermissionsToSystemPackage(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Ljava/lang/String;I[Ljava/util/Set;)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->isFixedOrUserSet(I)Z
-HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->isSystemOrCertificateMatchingPackage(Landroid/content/pm/PackageInfo;Ljava/lang/String;)Z
-HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->parse(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/Map;)V
-HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->parseExceptions(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/Map;)V
-HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->parsePermission(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/List;)V
-HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->readDefaultPermissionExceptionsLocked(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;)Landroid/util/ArrayMap;
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->revokeDefaultPermissionsFromDisabledTelephonyDataServices([Ljava/lang/String;I)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->scheduleReadDefaultPermissionExceptions()V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setDialerAppPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setLocationExtraPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setLocationPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setSimCallManagerPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setSmsAppPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setSyncAdapterPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$SyncAdapterPackagesProvider;)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setUseOpenWifiAppPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setVoiceInteractionPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
-HPLcom/android/server/pm/permission/LegacyPermission;-><init>(Landroid/content/pm/PermissionInfo;II[I)V
-HSPLcom/android/server/pm/permission/LegacyPermission;-><init>(Ljava/lang/String;Ljava/lang/String;I)V
-HPLcom/android/server/pm/permission/LegacyPermission;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/Set;ZZLcom/android/server/pm/DumpState;)Z
-PLcom/android/server/pm/permission/LegacyPermission;->getPermissionInfo()Landroid/content/pm/PermissionInfo;
-HSPLcom/android/server/pm/permission/LegacyPermission;->read(Ljava/util/Map;Lcom/android/modules/utils/TypedXmlPullParser;)Z
-HSPLcom/android/server/pm/permission/LegacyPermission;->readInt(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;Ljava/lang/String;I)I
-HPLcom/android/server/pm/permission/LegacyPermission;->write(Lcom/android/modules/utils/TypedXmlSerializer;)V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/permission/LegacyPermissionManagerService;[Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantRuntimePermissions(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Landroid/content/pm/PackageInfo;Ljava/util/Set;ZZI)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->parse(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/Map;)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->readDefaultPermissionExceptionsLocked(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;)Landroid/util/ArrayMap;
+HSPLcom/android/server/pm/permission/LegacyPermission;-><init>(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pm/permission/LegacyPermission;-><init>(Landroid/content/pm/PermissionInfo;II[I)V
+HPLcom/android/server/pm/permission/LegacyPermission;->write(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
+PLcom/android/server/pm/permission/LegacyPermissionManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/permission/LegacyPermissionManagerService;[Ljava/lang/String;II)V
PLcom/android/server/pm/permission/LegacyPermissionManagerService$$ExternalSyntheticLambda0;->runOrThrow()V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/pm/permission/LegacyPermissionManagerService;[Ljava/lang/String;I)V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService$$ExternalSyntheticLambda3;->runOrThrow()V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/pm/permission/LegacyPermissionManagerService;[Ljava/lang/String;I)V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService$$ExternalSyntheticLambda6;->runOrThrow()V
HSPLcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;-><init>(Landroid/content/Context;)V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;->checkPermission(Ljava/lang/String;II)I
-PLcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;->getCallingPid()I
-PLcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;->getCallingUid()I
-PLcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;->getPackageUidForUser(Ljava/lang/String;I)I
HSPLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;-><init>(Lcom/android/server/pm/permission/LegacyPermissionManagerService;)V
-HSPLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;-><init>(Lcom/android/server/pm/permission/LegacyPermissionManagerService;Lcom/android/server/pm/permission/LegacyPermissionManagerService$Internal-IA;)V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;->scheduleReadDefaultPermissionExceptions()V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;->setDialerAppPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;->setLocationExtraPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;->setLocationPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;->setSimCallManagerPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;->setSmsAppPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;->setSyncAdapterPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$SyncAdapterPackagesProvider;)V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;->setUseOpenWifiAppPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;->setVoiceInteractionPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService;->$r8$lambda$XJRM--KlcwdVcvJ6T-8uozQ32tE(Lcom/android/server/pm/permission/LegacyPermissionManagerService;[Ljava/lang/String;I)V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService;->$r8$lambda$lv-8Ha9p9dV0QQzCs6vFH7LiTB8(Lcom/android/server/pm/permission/LegacyPermissionManagerService;[Ljava/lang/String;I)V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService;->$r8$lambda$u77Y4zP2_UA0sARUr92T0pFuRWw(Lcom/android/server/pm/permission/LegacyPermissionManagerService;[Ljava/lang/String;I)V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService;->-$$Nest$fgetmDefaultPermissionGrantPolicy(Lcom/android/server/pm/permission/LegacyPermissionManagerService;)Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;
-HSPLcom/android/server/pm/permission/LegacyPermissionManagerService;-><init>(Landroid/content/Context;)V
HSPLcom/android/server/pm/permission/LegacyPermissionManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;)V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService;->checkDeviceIdentifierAccess(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)I
-PLcom/android/server/pm/permission/LegacyPermissionManagerService;->checkPhoneNumberAccess(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)I
-HSPLcom/android/server/pm/permission/LegacyPermissionManagerService;->create(Landroid/content/Context;)Lcom/android/server/pm/permission/LegacyPermissionManagerInternal;
+HPLcom/android/server/pm/permission/LegacyPermissionManagerService;->checkDeviceIdentifierAccess(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)I
+HPLcom/android/server/pm/permission/LegacyPermissionManagerService;->checkPhoneNumberAccess(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)I
PLcom/android/server/pm/permission/LegacyPermissionManagerService;->grantDefaultPermissionsToEnabledImsServices([Ljava/lang/String;I)V
PLcom/android/server/pm/permission/LegacyPermissionManagerService;->grantDefaultPermissionsToEnabledTelephonyDataServices([Ljava/lang/String;I)V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService;->lambda$grantDefaultPermissionsToEnabledImsServices$3([Ljava/lang/String;I)V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService;->lambda$grantDefaultPermissionsToEnabledTelephonyDataServices$4([Ljava/lang/String;I)V
-PLcom/android/server/pm/permission/LegacyPermissionManagerService;->lambda$revokeDefaultPermissionsFromDisabledTelephonyDataServices$5([Ljava/lang/String;I)V
PLcom/android/server/pm/permission/LegacyPermissionManagerService;->revokeDefaultPermissionsFromDisabledTelephonyDataServices([Ljava/lang/String;I)V
-HPLcom/android/server/pm/permission/LegacyPermissionManagerService;->verifyCallerCanCheckAccess(Ljava/lang/String;Ljava/lang/String;II)V
+HPLcom/android/server/pm/permission/LegacyPermissionManagerService;->verifyCallerCanCheckAccess(IILjava/lang/String;Ljava/lang/String;)V
HSPLcom/android/server/pm/permission/LegacyPermissionSettings;-><init>()V
-HPLcom/android/server/pm/permission/LegacyPermissionSettings;->dumpPermissions(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Ljava/util/List;Ljava/util/Map;ZLcom/android/server/pm/DumpState;)V
HSPLcom/android/server/pm/permission/LegacyPermissionSettings;->readPermissionTrees(Lcom/android/modules/utils/TypedXmlPullParser;)V
HSPLcom/android/server/pm/permission/LegacyPermissionSettings;->readPermissions(Landroid/util/ArrayMap;Lcom/android/modules/utils/TypedXmlPullParser;)V
HSPLcom/android/server/pm/permission/LegacyPermissionSettings;->readPermissions(Lcom/android/modules/utils/TypedXmlPullParser;)V
PLcom/android/server/pm/permission/LegacyPermissionSettings;->replacePermissionTrees(Ljava/util/List;)V
-PLcom/android/server/pm/permission/LegacyPermissionSettings;->replacePermissions(Ljava/util/List;)V
+HPLcom/android/server/pm/permission/LegacyPermissionSettings;->replacePermissions(Ljava/util/List;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/pm/permission/LegacyPermissionSettings;->writePermissionTrees(Lcom/android/modules/utils/TypedXmlSerializer;)V
-PLcom/android/server/pm/permission/LegacyPermissionSettings;->writePermissions(Lcom/android/modules/utils/TypedXmlSerializer;)V
-HPLcom/android/server/pm/permission/LegacyPermissionState$PermissionState;-><init>(Ljava/lang/String;ZZI)V
-PLcom/android/server/pm/permission/LegacyPermissionState$PermissionState;->getFlags()I
-PLcom/android/server/pm/permission/LegacyPermissionState$PermissionState;->getName()Ljava/lang/String;
-PLcom/android/server/pm/permission/LegacyPermissionState$PermissionState;->isGranted()Z
-PLcom/android/server/pm/permission/LegacyPermissionState$PermissionState;->isRuntime()Z
+HPLcom/android/server/pm/permission/LegacyPermissionSettings;->writePermissions(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
+PLcom/android/server/pm/permission/LegacyPermissionState$PermissionState;-><init>(Ljava/lang/String;IZZ)V
PLcom/android/server/pm/permission/LegacyPermissionState$UserState;-><init>()V
-PLcom/android/server/pm/permission/LegacyPermissionState$UserState;->getPermissionState(Ljava/lang/String;)Lcom/android/server/pm/permission/LegacyPermissionState$PermissionState;
-PLcom/android/server/pm/permission/LegacyPermissionState$UserState;->getPermissionStates()Ljava/util/Collection;
-PLcom/android/server/pm/permission/LegacyPermissionState$UserState;->putPermissionState(Lcom/android/server/pm/permission/LegacyPermissionState$PermissionState;)V
HSPLcom/android/server/pm/permission/LegacyPermissionState;-><init>()V
HSPLcom/android/server/pm/permission/LegacyPermissionState;->checkUserId(I)V
-HSPLcom/android/server/pm/permission/LegacyPermissionState;->copyFrom(Lcom/android/server/pm/permission/LegacyPermissionState;)V
-HPLcom/android/server/pm/permission/LegacyPermissionState;->getPermissionState(Ljava/lang/String;I)Lcom/android/server/pm/permission/LegacyPermissionState$PermissionState;
+HSPLcom/android/server/pm/permission/LegacyPermissionState;->copyFrom(Lcom/android/server/pm/permission/LegacyPermissionState;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
HPLcom/android/server/pm/permission/LegacyPermissionState;->getPermissionStates(I)Ljava/util/Collection;
-HPLcom/android/server/pm/permission/LegacyPermissionState;->putPermissionState(Lcom/android/server/pm/permission/LegacyPermissionState$PermissionState;I)V
-HSPLcom/android/server/pm/permission/LegacyPermissionState;->setMissing(ZI)V
+HPLcom/android/server/pm/permission/LegacyPermissionState;->putPermissionState(Lcom/android/server/pm/permission/LegacyPermissionState$PermissionState;I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/pm/permission/LegacyPermissionState;->setMissing(IZ)V
+PLcom/android/server/pm/permission/OneTimePermissionUserManager$1;-><init>(Lcom/android/server/pm/permission/OneTimePermissionUserManager;)V
+PLcom/android/server/pm/permission/OneTimePermissionUserManager;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/permission/OneTimePermissionUserManager;->stopPackageOneTimeSession(Ljava/lang/String;)V
+PLcom/android/server/pm/permission/Permission;-><init>(Landroid/content/pm/PermissionInfo;I)V
+PLcom/android/server/pm/permission/Permission;->getPackageName()Ljava/lang/String;
HSPLcom/android/server/pm/permission/PermissionAllowlist;-><init>()V
-PLcom/android/server/pm/permission/PermissionAllowlist;->getApexPrivilegedAppAllowlistState(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Boolean;
-HSPLcom/android/server/pm/permission/PermissionAllowlist;->getApexPrivilegedAppAllowlists()Landroid/util/ArrayMap;
HSPLcom/android/server/pm/permission/PermissionAllowlist;->getPrivilegedAppAllowlist()Landroid/util/ArrayMap;
-HPLcom/android/server/pm/permission/PermissionAllowlist;->getPrivilegedAppAllowlistState(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Boolean;
-HSPLcom/android/server/pm/permission/PermissionAllowlist;->getProductPrivilegedAppAllowlist()Landroid/util/ArrayMap;
-HPLcom/android/server/pm/permission/PermissionAllowlist;->getProductPrivilegedAppAllowlistState(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Boolean;
-HPLcom/android/server/pm/permission/PermissionAllowlist;->getSystemExtPrivilegedAppAllowlistState(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Boolean;
+PLcom/android/server/pm/permission/PermissionAllowlist;->getPrivilegedAppAllowlistState(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Boolean;
HSPLcom/android/server/pm/permission/PermissionManagerService$AttributionSourceRegistry;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/pm/permission/PermissionManagerService$AttributionSourceRegistry;->isRegisteredAttributionSource(Landroid/content/AttributionSource;)Z
+HPLcom/android/server/pm/permission/PermissionManagerService$AttributionSourceRegistry;->isRegisteredAttributionSource(Landroid/content/AttributionSource;)Z+]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap;
HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;-><clinit>()V
HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkAppOpPermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;ZZ)I
PLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkOp(ILandroid/content/AttributionSourceState;Ljava/lang/String;ZZ)I
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkOp(Landroid/content/Context;ILcom/android/server/pm/permission/PermissionManagerServiceInternal;Landroid/content/AttributionSource;Ljava/lang/String;ZZ)I
-HPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkPermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Ljava/lang/String;Landroid/content/AttributionSource;)Z
-HPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkPermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;ZZZI)I
+HPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkPermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;Ljava/lang/String;Landroid/content/AttributionSource;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/util/Set;Landroid/util/ArraySet;,Ljava/util/Collections$EmptySet;
+HPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkPermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;ZZZI)I+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap;
HPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkPermission(Ljava/lang/String;Landroid/content/AttributionSourceState;Ljava/lang/String;ZZZI)I
-HPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkRuntimePermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;ZZZI)I
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->getAttributionChainId(ZLandroid/content/AttributionSource;)I
-HPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->performOpTransaction(Landroid/content/Context;Landroid/os/IBinder;ILandroid/content/AttributionSource;Ljava/lang/String;ZZZZZIIII)I
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->resolveAttributionSource(Landroid/content/Context;Landroid/content/AttributionSource;)Landroid/content/AttributionSource;
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->finishDataDelivery(ILandroid/content/AttributionSourceState;Z)V
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->finishDataDelivery(Landroid/content/Context;ILandroid/content/AttributionSourceState;Z)V
+HPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->performOpTransaction(Landroid/content/Context;Landroid/os/IBinder;ILandroid/content/AttributionSource;Ljava/lang/String;ZZZZZIIII)I+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->resolveAttributionFlags(Landroid/content/AttributionSource;Landroid/content/AttributionSource;ZZZZZ)I
PLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->resolvePackageName(Landroid/content/Context;Landroid/content/AttributionSource;)Ljava/lang/String;
HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;-><init>(Lcom/android/server/pm/permission/PermissionManagerService;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;-><init>(Lcom/android/server/pm/permission/PermissionManagerService;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl-IA;)V
-HPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->checkPermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I
-HPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->checkUidPermission(ILjava/lang/String;I)I
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getAllAppOpPermissionPackages()Ljava/util/Map;
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getAllPermissionsWithProtection(I)Ljava/util/List;
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getAllPermissionsWithProtectionFlags(I)Ljava/util/List;
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getAppOpPermissionPackages(Ljava/lang/String;)[Ljava/lang/String;
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getDefaultPermissionGrantFingerprint(I)Ljava/lang/String;
-HPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getGidsForUid(I)[I
-HPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getGrantedPermissions(Ljava/lang/String;I)Ljava/util/Set;
-HPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getInstalledPermissions(Ljava/lang/String;)Ljava/util/Set;
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getLegacyPermissionState(I)Lcom/android/server/pm/permission/LegacyPermissionState;
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getLegacyPermissions()Ljava/util/List;
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getPermissionGids(Ljava/lang/String;I)[I
-HPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->isPermissionsReviewRequired(Ljava/lang/String;I)Z
-HPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->onPackageAdded(Lcom/android/server/pm/pkg/PackageState;ZLcom/android/server/pm/pkg/AndroidPackage;)V
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->onStorageVolumeMounted(Ljava/lang/String;Z)V
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->onSystemReady()V
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->readLegacyPermissionStateTEMP()V
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->backupRuntimePermissions(I)[B
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getGidsForUid(I)[I
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getPermissionTEMP(Ljava/lang/String;)Lcom/android/server/pm/permission/Permission;
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->onPackageInstalled(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PackageInstalledParams;I)V
HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->readLegacyPermissionsTEMP(Lcom/android/server/pm/permission/LegacyPermissionSettings;)V
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->writeLegacyPermissionStateTEMP()V
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->writeLegacyPermissionsTEMP(Lcom/android/server/pm/permission/LegacyPermissionSettings;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService;->-$$Nest$fgetmPermissionManagerServiceImpl(Lcom/android/server/pm/permission/PermissionManagerService;)Lcom/android/server/pm/permission/PermissionManagerServiceInterface;
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->restoreDelayedRuntimePermissions(Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/PermissionManagerService$RegisteredAttribution$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/permission/PermissionManagerService$RegisteredAttribution;Landroid/content/Context;ILandroid/content/AttributionSource;Z)V
+PLcom/android/server/pm/permission/PermissionManagerService$RegisteredAttribution;-><init>(Landroid/content/Context;ILandroid/content/AttributionSource;Z)V
+PLcom/android/server/pm/permission/PermissionManagerService$RegisteredAttribution;->unregister()Z
HSPLcom/android/server/pm/permission/PermissionManagerService;-><clinit>()V
HSPLcom/android/server/pm/permission/PermissionManagerService;-><init>(Landroid/content/Context;Landroid/util/ArrayMap;)V
PLcom/android/server/pm/permission/PermissionManagerService;->addOnPermissionsChangeListener(Landroid/permission/IOnPermissionsChangeListener;)V
-HPLcom/android/server/pm/permission/PermissionManagerService;->checkPermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I
-HPLcom/android/server/pm/permission/PermissionManagerService;->checkUidPermission(ILjava/lang/String;I)I
-HSPLcom/android/server/pm/permission/PermissionManagerService;->create(Landroid/content/Context;Landroid/util/ArrayMap;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
-HPLcom/android/server/pm/permission/PermissionManagerService;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I
+HPLcom/android/server/pm/permission/PermissionManagerService;->checkPermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/pm/permission/PermissionManagerServiceInterface;Lcom/android/server/permission/access/permission/PermissionService;
+HPLcom/android/server/pm/permission/PermissionManagerService;->checkUidPermission(ILjava/lang/String;I)I+]Lcom/android/server/pm/permission/PermissionManagerServiceInterface;Lcom/android/server/permission/access/permission/PermissionService;
+PLcom/android/server/pm/permission/PermissionManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/pm/permission/PermissionManagerService;->getAllPermissionGroups(I)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/permission/PermissionManagerService;->getAllowlistedRestrictedPermissions(Ljava/lang/String;II)Ljava/util/List;
+PLcom/android/server/pm/permission/PermissionManagerService;->getOneTimePermissionUserManager(I)Lcom/android/server/pm/permission/OneTimePermissionUserManager;
+HPLcom/android/server/pm/permission/PermissionManagerService;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/pm/permission/PermissionManagerServiceInterface;Lcom/android/server/permission/access/permission/PermissionService;
PLcom/android/server/pm/permission/PermissionManagerService;->getPermissionGroupInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionGroupInfo;
HPLcom/android/server/pm/permission/PermissionManagerService;->getPermissionInfo(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/PermissionInfo;
-PLcom/android/server/pm/permission/PermissionManagerService;->getSplitPermissions()Ljava/util/List;
+HPLcom/android/server/pm/permission/PermissionManagerService;->getPersistentDeviceId(I)Ljava/lang/String;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->getSplitPermissions()Ljava/util/List;
PLcom/android/server/pm/permission/PermissionManagerService;->grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
HPLcom/android/server/pm/permission/PermissionManagerService;->isRegisteredAttributionSource(Landroid/content/AttributionSourceState;)Z
+PLcom/android/server/pm/permission/PermissionManagerService;->queryPermissionsByGroup(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
PLcom/android/server/pm/permission/PermissionManagerService;->removeOnPermissionsChangeListener(Landroid/permission/IOnPermissionsChangeListener;)V
+PLcom/android/server/pm/permission/PermissionManagerService;->shouldShowRequestPermissionRationale(Ljava/lang/String;Ljava/lang/String;II)Z
+PLcom/android/server/pm/permission/PermissionManagerService;->stopOneTimePermissionSession(Ljava/lang/String;I)V
PLcom/android/server/pm/permission/PermissionManagerService;->updatePermissionFlags(Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;I)V
-HSPLcom/android/server/pm/permission/PermissionMigrationHelperImpl;-><clinit>()V
-HSPLcom/android/server/pm/permission/PermissionMigrationHelperImpl;-><init>()V
-HPLcom/android/server/pm/pkg/PackageStateInternal;->getUserStateOrDefault(I)Lcom/android/server/pm/pkg/PackageUserState;
-HSPLcom/android/server/pm/pkg/PackageStateInternal;->getUserStateOrDefault(I)Lcom/android/server/pm/pkg/PackageUserStateInternal;
+PLcom/android/server/pm/permission/PermissionManagerServiceInternal$PackageInstalledParams;-><clinit>()V
+PLcom/android/server/pm/permission/PermissionManagerServiceInternal$PackageInstalledParams;-><init>(Landroid/util/ArrayMap;Ljava/util/List;I)V
+HPLcom/android/server/pm/pkg/PackageStateInternal;->getUserStateOrDefault(I)Lcom/android/server/pm/pkg/PackageUserState;+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/pkg/PackageStateInternal;->getUserStateOrDefault(I)Lcom/android/server/pm/pkg/PackageUserStateInternal;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;
HSPLcom/android/server/pm/pkg/PackageStateUnserialized;-><init>(Lcom/android/server/pm/PackageSetting;)V
-PLcom/android/server/pm/pkg/PackageStateUnserialized;->getApexModuleName()Ljava/lang/String;
HPLcom/android/server/pm/pkg/PackageStateUnserialized;->getLastPackageUsageTimeInMills()[J
-PLcom/android/server/pm/pkg/PackageStateUnserialized;->getOverrideSeInfo()Ljava/lang/String;
-PLcom/android/server/pm/pkg/PackageStateUnserialized;->getSeInfo()Ljava/lang/String;
-PLcom/android/server/pm/pkg/PackageStateUnserialized;->getUsesLibraryFiles()Ljava/util/List;
-PLcom/android/server/pm/pkg/PackageStateUnserialized;->getUsesLibraryInfos()Ljava/util/List;
-HPLcom/android/server/pm/pkg/PackageStateUnserialized;->isHiddenUntilInstalled()Z
-HPLcom/android/server/pm/pkg/PackageStateUnserialized;->isUpdatedSystemApp()Z
-HPLcom/android/server/pm/pkg/PackageStateUnserialized;->lazyInitLastPackageUsageTimeInMills()[J
-HPLcom/android/server/pm/pkg/PackageStateUnserialized;->setApexModuleName(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateUnserialized;
-HPLcom/android/server/pm/pkg/PackageStateUnserialized;->setApkInUpdatedApex(Z)Lcom/android/server/pm/pkg/PackageStateUnserialized;
-HPLcom/android/server/pm/pkg/PackageStateUnserialized;->setLastPackageUsageTimeInMills(IJ)Lcom/android/server/pm/pkg/PackageStateUnserialized;
-HPLcom/android/server/pm/pkg/PackageStateUnserialized;->setOverrideSeInfo(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateUnserialized;
-HPLcom/android/server/pm/pkg/PackageStateUnserialized;->setSeInfo(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateUnserialized;
-PLcom/android/server/pm/pkg/PackageStateUnserialized;->setUsesLibraryFiles(Ljava/util/List;)Lcom/android/server/pm/pkg/PackageStateUnserialized;
-HPLcom/android/server/pm/pkg/PackageStateUnserialized;->setUsesLibraryInfos(Ljava/util/List;)Lcom/android/server/pm/pkg/PackageStateUnserialized;
-HSPLcom/android/server/pm/pkg/PackageStateUnserialized;->updateFrom(Lcom/android/server/pm/pkg/PackageStateUnserialized;)V
-HPLcom/android/server/pm/pkg/PackageStateUtils;->isEnabledAndMatches(Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/content/pm/ComponentInfo;JI)Z
-HPLcom/android/server/pm/pkg/PackageStateUtils;->isEnabledAndMatches(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;JI)Z
-PLcom/android/server/pm/pkg/PackageUserStateDefault;-><init>()V
+PLcom/android/server/pm/pkg/PackageStateUnserialized;->getLatestPackageUseTimeInMills()J
+PLcom/android/server/pm/pkg/PackageStateUnserialized;->setUsesLibraryInfos(Ljava/util/List;)V
+HSPLcom/android/server/pm/pkg/PackageStateUtils;->getEarliestFirstInstallTime(Landroid/util/SparseArray;)J
+HPLcom/android/server/pm/pkg/PackageStateUtils;->isEnabledAndMatches(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;JI)Z+]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
PLcom/android/server/pm/pkg/PackageUserStateDefault;->getAllOverlayPaths()Landroid/content/pm/overlay/OverlayPaths;
PLcom/android/server/pm/pkg/PackageUserStateDefault;->getArchiveState()Lcom/android/server/pm/pkg/ArchiveState;
PLcom/android/server/pm/pkg/PackageUserStateDefault;->getEnabledState()I
-PLcom/android/server/pm/pkg/PackageUserStateDefault;->getFirstInstallTimeMillis()J
PLcom/android/server/pm/pkg/PackageUserStateDefault;->isHidden()Z
PLcom/android/server/pm/pkg/PackageUserStateDefault;->isInstalled()Z
PLcom/android/server/pm/pkg/PackageUserStateDefault;->isInstantApp()Z
+PLcom/android/server/pm/pkg/PackageUserStateDefault;->isNotLaunched()Z
PLcom/android/server/pm/pkg/PackageUserStateDefault;->isQuarantined()Z
PLcom/android/server/pm/pkg/PackageUserStateDefault;->isStopped()Z
PLcom/android/server/pm/pkg/PackageUserStateDefault;->isSuspended()Z
PLcom/android/server/pm/pkg/PackageUserStateDefault;->isVirtualPreload()Z
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl$1;-><init>(Lcom/android/server/pm/pkg/PackageUserStateImpl;Lcom/android/server/pm/pkg/PackageUserStateImpl;Lcom/android/server/utils/Watchable;)V
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl$1;->createSnapshot()Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl$1;-><init>(Lcom/android/server/pm/pkg/PackageUserStateImpl;Lcom/android/server/pm/pkg/PackageUserStateImpl;Lcom/android/server/pm/pkg/PackageUserStateImpl;)V
HSPLcom/android/server/pm/pkg/PackageUserStateImpl$1;->createSnapshot()Ljava/lang/Object;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->-$$Nest$fgetmWatchable(Lcom/android/server/pm/pkg/PackageUserStateImpl;)Lcom/android/server/utils/Watchable;
HSPLcom/android/server/pm/pkg/PackageUserStateImpl;-><init>(Lcom/android/server/utils/Watchable;)V
HSPLcom/android/server/pm/pkg/PackageUserStateImpl;-><init>(Lcom/android/server/utils/Watchable;Lcom/android/server/pm/pkg/PackageUserStateImpl;)V
-PLcom/android/server/pm/pkg/PackageUserStateImpl;->equals(Ljava/lang/Object;)Z
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->equals(Ljava/lang/Object;)Z
HPLcom/android/server/pm/pkg/PackageUserStateImpl;->getAllOverlayPaths()Landroid/content/pm/overlay/OverlayPaths;
HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getArchiveState()Lcom/android/server/pm/pkg/ArchiveState;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getBoolean(I)Z
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getBoolean$1(I)Z
PLcom/android/server/pm/pkg/PackageUserStateImpl;->getCeDataInode()J
-PLcom/android/server/pm/pkg/PackageUserStateImpl;->getDeDataInode()J
-HPLcom/android/server/pm/pkg/PackageUserStateImpl;->getDisabledComponents()Landroid/util/ArraySet;
-PLcom/android/server/pm/pkg/PackageUserStateImpl;->getDisabledComponentsNoCopy()Lcom/android/server/utils/WatchedArraySet;
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->getDeDataInode()J
+PLcom/android/server/pm/pkg/PackageUserStateImpl;->getDisabledComponents()Landroid/util/ArraySet;
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->getDisabledComponentsNoCopy()Lcom/android/server/utils/WatchedArraySet;
PLcom/android/server/pm/pkg/PackageUserStateImpl;->getDistractionFlags()I
HPLcom/android/server/pm/pkg/PackageUserStateImpl;->getEnabledComponents()Landroid/util/ArraySet;
-PLcom/android/server/pm/pkg/PackageUserStateImpl;->getEnabledComponentsNoCopy()Lcom/android/server/utils/WatchedArraySet;
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->getEnabledComponentsNoCopy()Lcom/android/server/utils/WatchedArraySet;
HPLcom/android/server/pm/pkg/PackageUserStateImpl;->getEnabledState()I
-HPLcom/android/server/pm/pkg/PackageUserStateImpl;->getFirstInstallTimeMillis()J
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getFirstInstallTimeMillis()J
PLcom/android/server/pm/pkg/PackageUserStateImpl;->getHarmfulAppWarning()Ljava/lang/String;
-HPLcom/android/server/pm/pkg/PackageUserStateImpl;->getInstallReason()I
+PLcom/android/server/pm/pkg/PackageUserStateImpl;->getInstallReason()I
PLcom/android/server/pm/pkg/PackageUserStateImpl;->getLastDisableAppCaller()Ljava/lang/String;
-HPLcom/android/server/pm/pkg/PackageUserStateImpl;->getMinAspectRatio()I
+PLcom/android/server/pm/pkg/PackageUserStateImpl;->getMinAspectRatio()I
PLcom/android/server/pm/pkg/PackageUserStateImpl;->getOverlayPaths()Landroid/content/pm/overlay/OverlayPaths;
HPLcom/android/server/pm/pkg/PackageUserStateImpl;->getOverrideLabelIconForComponent(Landroid/content/ComponentName;)Landroid/util/Pair;
PLcom/android/server/pm/pkg/PackageUserStateImpl;->getSharedLibraryOverlayPaths()Ljava/util/Map;
@@ -20596,2252 +15994,2177 @@ HPLcom/android/server/pm/pkg/PackageUserStateImpl;->isComponentEnabled(Ljava/lan
HPLcom/android/server/pm/pkg/PackageUserStateImpl;->isHidden()Z
HPLcom/android/server/pm/pkg/PackageUserStateImpl;->isInstalled()Z
HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->isInstantApp()Z
-PLcom/android/server/pm/pkg/PackageUserStateImpl;->isNotLaunched()Z
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->isNotLaunched()Z
HPLcom/android/server/pm/pkg/PackageUserStateImpl;->isQuarantined()Z
HPLcom/android/server/pm/pkg/PackageUserStateImpl;->isStopped()Z
HPLcom/android/server/pm/pkg/PackageUserStateImpl;->isSuspended()Z
-HPLcom/android/server/pm/pkg/PackageUserStateImpl;->isVirtualPreload()Z
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->makeCache()Lcom/android/server/utils/SnapshotCache;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->onChanged()V
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setArchiveState(Lcom/android/server/pm/pkg/ArchiveState;)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setBoolean(IZ)V
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setCeDataInode(J)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setDeDataInode(J)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setDisabledComponents(Landroid/util/ArraySet;)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setDistractionFlags(I)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setEnabledComponents(Landroid/util/ArraySet;)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setEnabledState(I)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setFirstInstallTimeMillis(J)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setHarmfulAppWarning(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setHidden(Z)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setInstallReason(I)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setInstalled(Z)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setInstantApp(Z)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setLastDisableAppCaller(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setMinAspectRatio(I)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setNotLaunched(Z)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-PLcom/android/server/pm/pkg/PackageUserStateImpl;->setOverlayPaths(Landroid/content/pm/overlay/OverlayPaths;)Z
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setSplashScreenTheme(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setStopped(Z)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setSuspendParams(Landroid/util/ArrayMap;)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setUninstallReason(I)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setVirtualPreload(Z)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HPLcom/android/server/pm/pkg/PackageUserStateImpl;->setWatchable(Lcom/android/server/utils/Watchable;)Lcom/android/server/pm/pkg/PackageUserStateImpl;
-HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->snapshot()Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->isVirtualPreload()Z
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->onChanged$4()V
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setBoolean$1(IZ)V
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setDisabledComponents(Landroid/util/ArraySet;)V
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setEnabledComponents(Landroid/util/ArraySet;)V
PLcom/android/server/pm/pkg/PackageUserStateInternal;-><clinit>()V
-HPLcom/android/server/pm/pkg/PackageUserStateUtils;->isAvailable(Lcom/android/server/pm/pkg/PackageUserState;J)Z
-HPLcom/android/server/pm/pkg/PackageUserStateUtils;->isEnabled(Lcom/android/server/pm/pkg/PackageUserState;ZZLjava/lang/String;J)Z
-HPLcom/android/server/pm/pkg/PackageUserStateUtils;->isMatch(Lcom/android/server/pm/pkg/PackageUserState;Landroid/content/pm/ComponentInfo;J)Z
-HPLcom/android/server/pm/pkg/PackageUserStateUtils;->isMatch(Lcom/android/server/pm/pkg/PackageUserState;ZZLcom/android/internal/pm/pkg/component/ParsedMainComponent;J)Z
-HPLcom/android/server/pm/pkg/PackageUserStateUtils;->isMatch(Lcom/android/server/pm/pkg/PackageUserState;ZZZZLjava/lang/String;J)Z
-PLcom/android/server/pm/pkg/PackageUserStateUtils;->reportIfDebug(ZJ)Z
-HPLcom/android/server/pm/pkg/SELinuxUtil;->getSeinfoUser(Lcom/android/server/pm/pkg/PackageUserState;)Ljava/lang/String;
+HPLcom/android/server/pm/pkg/PackageUserStateUtils;->isAvailable(Lcom/android/server/pm/pkg/PackageUserStateInternal;J)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HPLcom/android/server/pm/pkg/PackageUserStateUtils;->isEnabled(Lcom/android/server/pm/pkg/PackageUserStateInternal;ZZLjava/lang/String;J)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HPLcom/android/server/pm/pkg/PackageUserStateUtils;->isMatch(Lcom/android/server/pm/pkg/PackageUserStateInternal;ZZZZLjava/lang/String;J)Z
PLcom/android/server/pm/pkg/SharedLibraryWrapper;-><init>(Landroid/content/pm/SharedLibraryInfo;)V
PLcom/android/server/pm/pkg/SharedLibraryWrapper;->getAllCodePaths()Ljava/util/List;
PLcom/android/server/pm/pkg/SharedLibraryWrapper;->getDependencies()Ljava/util/List;
-PLcom/android/server/pm/pkg/SharedLibraryWrapper;->getInfo()Landroid/content/pm/SharedLibraryInfo;
+PLcom/android/server/pm/pkg/SharedLibraryWrapper;->getPackageName()Ljava/lang/String;
+PLcom/android/server/pm/pkg/SharedLibraryWrapper;->getPath()Ljava/lang/String;
+PLcom/android/server/pm/pkg/SharedLibraryWrapper;->getType()I
PLcom/android/server/pm/pkg/SharedLibraryWrapper;->isNative()Z
+PLcom/android/server/pm/pkg/mutate/PackageStateMutator$InitialState;-><init>(IJ)V
PLcom/android/server/pm/pkg/mutate/PackageStateMutator$Result;-><clinit>()V
PLcom/android/server/pm/pkg/mutate/PackageStateMutator$Result;-><init>(ZZZZ)V
-HSPLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper$UserStateWriteWrapper;-><init>()V
-HSPLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper$UserStateWriteWrapper;-><init>(Lcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper$UserStateWriteWrapper-IA;)V
-PLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper$UserStateWriteWrapper;->setOverlayPaths(Landroid/content/pm/overlay/OverlayPaths;)Lcom/android/server/pm/pkg/mutate/PackageUserStateWrite;
-PLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper$UserStateWriteWrapper;->setStates(Lcom/android/server/pm/pkg/PackageUserStateImpl;)Lcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper$UserStateWriteWrapper;
-PLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper$UserStateWriteWrapper;->setStopped(Z)Lcom/android/server/pm/pkg/mutate/PackageUserStateWrite;
+PLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper$UserStateWriteWrapper;->setOverlayPaths(Landroid/content/pm/overlay/OverlayPaths;)V
HSPLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper;-><init>()V
-HSPLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper;-><init>(Lcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper-IA;)V
-PLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper;->onChanged()V
-PLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper;->setState(Lcom/android/server/pm/PackageSetting;)Lcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper;
-PLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper;->userState(I)Lcom/android/server/pm/pkg/mutate/PackageUserStateWrite;
+PLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper;->userState(I)Lcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper$UserStateWriteWrapper;
HSPLcom/android/server/pm/pkg/mutate/PackageStateMutator;-><clinit>()V
HSPLcom/android/server/pm/pkg/mutate/PackageStateMutator;-><init>(Ljava/util/function/Function;Ljava/util/function/Function;)V
-PLcom/android/server/pm/pkg/mutate/PackageStateMutator;->forPackage(Ljava/lang/String;)Lcom/android/server/pm/pkg/mutate/PackageStateWrite;
-PLcom/android/server/pm/pkg/mutate/PackageStateMutator;->generateResult(Lcom/android/server/pm/pkg/mutate/PackageStateMutator$InitialState;I)Lcom/android/server/pm/pkg/mutate/PackageStateMutator$Result;
-PLcom/android/server/pm/pkg/mutate/PackageStateMutator;->onFinished()V
-HSPLcom/android/server/pm/pkg/mutate/PackageStateMutator;->onPackageStateChanged()V
-PLcom/android/server/pm/pkg/mutate/PackageStateMutator;->setState(Lcom/android/server/pm/PackageSetting;)Lcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper;
-HSPLcom/android/server/pm/resolution/ComponentResolver$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/pm/pkg/mutate/PackageStateMutator;->forPackage(Ljava/lang/String;)Lcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper;
HPLcom/android/server/pm/resolution/ComponentResolver$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLcom/android/server/pm/resolution/ComponentResolver$1;-><init>(Lcom/android/server/pm/resolution/ComponentResolver;Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/utils/Watchable;Lcom/android/server/pm/UserNeedsBadgingCache;)V
-HSPLcom/android/server/pm/resolution/ComponentResolver$1;->createSnapshot()Lcom/android/server/pm/resolution/ComponentResolverApi;
+PLcom/android/server/pm/resolution/ComponentResolver$$ExternalSyntheticLambda1;-><init>(I)V
+PLcom/android/server/pm/resolution/ComponentResolver$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/pm/resolution/ComponentResolver$1;-><init>(Lcom/android/server/pm/resolution/ComponentResolver;Lcom/android/server/pm/resolution/ComponentResolver;Lcom/android/server/pm/resolution/ComponentResolver;Lcom/android/server/pm/UserNeedsBadgingCache;)V
HSPLcom/android/server/pm/resolution/ComponentResolver$1;->createSnapshot()Ljava/lang/Object;
HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;-><init>(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserNeedsBadgingCache;)V
HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;-><init>(Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserNeedsBadgingCache;)V
-HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->addActivity(Lcom/android/server/pm/Computer;Lcom/android/internal/pm/pkg/component/ParsedActivity;Ljava/lang/String;Ljava/util/List;)V
-HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->addFilter(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Landroid/util/Pair;)V
-HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->allowFilterResult(Landroid/util/Pair;Ljava/util/List;)Z
-HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->allowFilterResult(Ljava/lang/Object;Ljava/util/List;)Z
-HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/Pair;)V
-HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/Object;)V
-HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->getIntentFilter(Landroid/util/Pair;)Landroid/content/IntentFilter;
-HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->getIntentFilter(Ljava/lang/Object;)Landroid/content/IntentFilter;
-HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/util/Pair;)Z
-HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->isPackageForFilter(Ljava/lang/String;Ljava/lang/Object;)Z
-HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->newArray(I)[Landroid/util/Pair;
-HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->newArray(I)[Ljava/lang/Object;
-HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->newResult(Lcom/android/server/pm/Computer;Landroid/util/Pair;IIJ)Landroid/content/pm/ResolveInfo;
-HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->newResult(Lcom/android/server/pm/Computer;Ljava/lang/Object;IIJ)Ljava/lang/Object;
+HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->addActivity(Lcom/android/server/pm/Computer;Lcom/android/internal/pm/pkg/component/ParsedActivity;Ljava/lang/String;Ljava/util/List;)V+]Landroid/content/IntentFilter;Landroid/content/IntentFilter;]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->allowFilterResult(Ljava/util/List;Ljava/lang/Object;)Z+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->dumpFilterLabel(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/Object;I)V+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Ljava/io/PrintWriter;Lcom/android/internal/util/FastPrintWriter;
+PLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->filterToLabel(Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->getIntentFilter(Ljava/lang/Object;)Landroid/content/IntentFilter;+]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->isPackageForFilter(Ljava/lang/String;Ljava/lang/Object;)Z+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;
+PLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->newArray(I)[Ljava/lang/Object;
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->newResult(Lcom/android/server/pm/Computer;Ljava/lang/Object;IIJ)Ljava/lang/Object;+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->queryIntent(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
-HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->queryIntentForPackage(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;
-HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->sortResults(Ljava/util/List;)V
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->queryIntentForPackage(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$UnmodifiableRandomAccessList;
+PLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->removeActivity(Lcom/android/internal/pm/pkg/component/ParsedActivity;)V
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->sortResults(Ljava/util/List;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;-><init>(Lcom/android/server/pm/UserManagerService;)V
HSPLcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;-><init>(Lcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;Lcom/android/server/pm/UserManagerService;)V
-HPLcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;->addFilter(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Landroid/util/Pair;)V
-HPLcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;->applyMimeGroups(Lcom/android/server/pm/Computer;Landroid/util/Pair;)V
-HPLcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;->isFilterStopped(Lcom/android/server/pm/Computer;Landroid/util/Pair;I)Z
-HPLcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;->isFilterStopped(Lcom/android/server/pm/Computer;Ljava/lang/Object;I)Z
-HSPLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;-><init>(Lcom/android/server/pm/UserManagerService;)V
-HSPLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;-><init>(Lcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;Lcom/android/server/pm/UserManagerService;)V
-HPLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->addProvider(Lcom/android/server/pm/Computer;Lcom/android/internal/pm/pkg/component/ParsedProvider;)V
-PLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/Pair;)V
-PLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/Object;)V
-PLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->getIntentFilter(Landroid/util/Pair;)Landroid/content/IntentFilter;
-PLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->getIntentFilter(Ljava/lang/Object;)Landroid/content/IntentFilter;
-PLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/util/Pair;)Z
-PLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->isPackageForFilter(Ljava/lang/String;Ljava/lang/Object;)Z
-PLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->newArray(I)[Landroid/util/Pair;
-PLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->newArray(I)[Ljava/lang/Object;
-PLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->queryIntent(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
-PLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->sortResults(Ljava/util/List;)V
-HSPLcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;-><init>(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserNeedsBadgingCache;)V
-HSPLcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;-><init>(Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserNeedsBadgingCache;)V
-HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;-><init>(Lcom/android/server/pm/UserManagerService;)V
+HPLcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;->addFilter(Lcom/android/server/pm/Computer;Landroid/util/Pair;)V
+HPLcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;->isFilterStopped(Lcom/android/server/pm/Computer;Ljava/lang/Object;I)Z+]Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
+PLcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;->removeFilterInternal(Ljava/lang/Object;)V
+HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;-><init>(Lcom/android/server/pm/UserManagerService;I)V
HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;-><init>(Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;Lcom/android/server/pm/UserManagerService;)V
-PLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->addFilter(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Landroid/util/Pair;)V
-HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->addService(Lcom/android/server/pm/Computer;Lcom/android/internal/pm/pkg/component/ParsedService;)V
-HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->allowFilterResult(Landroid/util/Pair;Ljava/util/List;)Z
-HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->allowFilterResult(Ljava/lang/Object;Ljava/util/List;)Z
-HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/Pair;)V
-HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/Object;)V
-HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->getIntentFilter(Landroid/util/Pair;)Landroid/content/IntentFilter;
-HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->getIntentFilter(Ljava/lang/Object;)Landroid/content/IntentFilter;
-HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/util/Pair;)Z
-HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->isPackageForFilter(Ljava/lang/String;Ljava/lang/Object;)Z
-HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->newArray(I)[Landroid/util/Pair;
-HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->newArray(I)[Ljava/lang/Object;
-HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->newResult(Lcom/android/server/pm/Computer;Landroid/util/Pair;IIJ)Landroid/content/pm/ResolveInfo;
-HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->newResult(Lcom/android/server/pm/Computer;Ljava/lang/Object;IIJ)Ljava/lang/Object;
-HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->queryIntent(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
-HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->queryIntentForPackage(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;
+HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;-><init>(Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;Lcom/android/server/pm/UserManagerService;B)V
+HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->allowFilterResult(Ljava/util/List;Ljava/lang/Object;)Z+]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->dumpFilterLabel(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/Object;I)V
+PLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->filterToLabel(Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->getIntentFilter(Ljava/lang/Object;)Landroid/content/IntentFilter;+]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;
+HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->isPackageForFilter(Ljava/lang/String;Ljava/lang/Object;)Z+]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;
+PLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->newArray(I)[Ljava/lang/Object;
+HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->newResult(Lcom/android/server/pm/Computer;Ljava/lang/Object;IIJ)Ljava/lang/Object;+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;
HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->sortResults(Ljava/util/List;)V
-HPLcom/android/server/pm/resolution/ComponentResolver;->$r8$lambda$UVMyfxjaimXrgxK-y9k5NRVVfkI(Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;)I
HSPLcom/android/server/pm/resolution/ComponentResolver;-><clinit>()V
HSPLcom/android/server/pm/resolution/ComponentResolver;-><init>(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserNeedsBadgingCache;)V
-HPLcom/android/server/pm/resolution/ComponentResolver;->addActivitiesLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/List;Z)V
-HPLcom/android/server/pm/resolution/ComponentResolver;->addAllComponents(Lcom/android/server/pm/pkg/AndroidPackage;ZLjava/lang/String;Lcom/android/server/pm/Computer;)V
-HPLcom/android/server/pm/resolution/ComponentResolver;->addProvidersLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Z)V
-HPLcom/android/server/pm/resolution/ComponentResolver;->addReceiversLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Z)V
-HPLcom/android/server/pm/resolution/ComponentResolver;->addServicesLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Z)V
-HPLcom/android/server/pm/resolution/ComponentResolver;->adjustPriority(Lcom/android/server/pm/Computer;Ljava/util/List;Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Ljava/lang/String;)V
+HSPLcom/android/server/pm/resolution/ComponentResolver;->addAllComponents(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;Lcom/android/server/pm/Computer;)V+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$UnmodifiableRandomAccessList;
+HSPLcom/android/server/pm/resolution/ComponentResolver;->addProvidersLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;)V
+HSPLcom/android/server/pm/resolution/ComponentResolver;->addServicesLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/pm/resolution/ComponentResolver;->assertProvidersNotDefined(Lcom/android/server/pm/pkg/AndroidPackage;)V
PLcom/android/server/pm/resolution/ComponentResolver;->fixProtectedFilterPriorities(Ljava/lang/String;)V
-HPLcom/android/server/pm/resolution/ComponentResolver;->isProtectedAction(Landroid/content/IntentFilter;)Z
-HPLcom/android/server/pm/resolution/ComponentResolver;->lambda$static$0(Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;)I
-PLcom/android/server/pm/resolution/ComponentResolver;->onChanged()V
-HSPLcom/android/server/pm/resolution/ComponentResolver;->snapshot()Lcom/android/server/pm/resolution/ComponentResolverApi;
+PLcom/android/server/pm/resolution/ComponentResolver;->getIntentListSubset(Ljava/util/List;Ljava/util/function/Function;Ljava/util/Iterator;)V
+PLcom/android/server/pm/resolution/ComponentResolver;->removeAllComponentsLocked(Lcom/android/server/pm/pkg/AndroidPackage;)V
HSPLcom/android/server/pm/resolution/ComponentResolverBase;-><init>(Lcom/android/server/pm/UserManagerService;)V
-PLcom/android/server/pm/resolution/ComponentResolverBase;->dumpActivityResolvers(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
-HPLcom/android/server/pm/resolution/ComponentResolverBase;->dumpContentProviders(Lcom/android/server/pm/Computer;Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
-PLcom/android/server/pm/resolution/ComponentResolverBase;->dumpProviderResolvers(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
-PLcom/android/server/pm/resolution/ComponentResolverBase;->dumpReceiverResolvers(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
-PLcom/android/server/pm/resolution/ComponentResolverBase;->dumpServiceResolvers(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
+PLcom/android/server/pm/resolution/ComponentResolverBase;->dumpActivityResolvers(Lcom/android/server/pm/DumpState;Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/pm/resolution/ComponentResolverBase;->dumpContentProviders(Lcom/android/server/pm/Computer;Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
+PLcom/android/server/pm/resolution/ComponentResolverBase;->dumpProviderResolvers(Lcom/android/server/pm/DumpState;Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/pm/resolution/ComponentResolverBase;->dumpReceiverResolvers(Lcom/android/server/pm/DumpState;Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/pm/resolution/ComponentResolverBase;->dumpServicePermissions(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;)V
+PLcom/android/server/pm/resolution/ComponentResolverBase;->dumpServiceResolvers(Lcom/android/server/pm/DumpState;Ljava/io/PrintWriter;Ljava/lang/String;)V
HPLcom/android/server/pm/resolution/ComponentResolverBase;->getActivity(Landroid/content/ComponentName;)Lcom/android/internal/pm/pkg/component/ParsedActivity;
-HPLcom/android/server/pm/resolution/ComponentResolverBase;->getProvider(Landroid/content/ComponentName;)Lcom/android/internal/pm/pkg/component/ParsedProvider;
+PLcom/android/server/pm/resolution/ComponentResolverBase;->getProvider(Landroid/content/ComponentName;)Lcom/android/internal/pm/pkg/component/ParsedProvider;
HPLcom/android/server/pm/resolution/ComponentResolverBase;->getReceiver(Landroid/content/ComponentName;)Lcom/android/internal/pm/pkg/component/ParsedActivity;
HPLcom/android/server/pm/resolution/ComponentResolverBase;->getService(Landroid/content/ComponentName;)Lcom/android/internal/pm/pkg/component/ParsedService;
-PLcom/android/server/pm/resolution/ComponentResolverBase;->isActivityDefined(Landroid/content/ComponentName;)Z
-HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryActivities(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
-HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryActivities(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;
-HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryProvider(Lcom/android/server/pm/Computer;Ljava/lang/String;JI)Landroid/content/pm/ProviderInfo;
+HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryActivities(Lcom/android/server/pm/ComputerEngine;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
+HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryActivities(Lcom/android/server/pm/ComputerEngine;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;
+HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryProvider(Lcom/android/server/pm/ComputerEngine;Ljava/lang/String;JI)Landroid/content/pm/ProviderInfo;+]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
PLcom/android/server/pm/resolution/ComponentResolverBase;->queryProviders(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
-HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryProviders(Lcom/android/server/pm/Computer;Ljava/lang/String;Ljava/lang/String;IJI)Ljava/util/List;
+HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryProviders(Lcom/android/server/pm/ComputerEngine;Ljava/lang/String;Ljava/lang/String;IJI)Ljava/util/List;+]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;
HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryReceivers(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryReceivers(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;
-HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryServices(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
-HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryServices(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;
+HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryServices(Lcom/android/server/pm/ComputerEngine;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
+HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryServices(Lcom/android/server/pm/ComputerEngine;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;+]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$UnmodifiableRandomAccessList;
HSPLcom/android/server/pm/resolution/ComponentResolverLocked;-><init>(Lcom/android/server/pm/UserManagerService;)V
-PLcom/android/server/pm/resolution/ComponentResolverLocked;->isActivityDefined(Landroid/content/ComponentName;)Z
-PLcom/android/server/pm/resolution/ComponentResolverLocked;->queryActivities(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
-PLcom/android/server/pm/resolution/ComponentResolverLocked;->queryActivities(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;
+PLcom/android/server/pm/resolution/ComponentResolverLocked;->queryActivities(Lcom/android/server/pm/ComputerEngine;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
+PLcom/android/server/pm/resolution/ComponentResolverLocked;->queryActivities(Lcom/android/server/pm/ComputerEngine;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;
PLcom/android/server/pm/resolution/ComponentResolverLocked;->queryReceivers(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
-PLcom/android/server/pm/resolution/ComponentResolverLocked;->queryServices(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
+PLcom/android/server/pm/resolution/ComponentResolverLocked;->queryServices(Lcom/android/server/pm/ComputerEngine;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
HSPLcom/android/server/pm/resolution/ComponentResolverSnapshot;-><init>(Lcom/android/server/pm/resolution/ComponentResolver;Lcom/android/server/pm/UserNeedsBadgingCache;)V
PLcom/android/server/pm/utils/RequestThrottle$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/utils/RequestThrottle;)V
-PLcom/android/server/pm/utils/RequestThrottle;-><init>(Landroid/os/Handler;IIILjava/util/function/Supplier;)V
-PLcom/android/server/pm/utils/RequestThrottle;-><init>(Landroid/os/Handler;Ljava/util/function/Supplier;)V
+PLcom/android/server/pm/utils/RequestThrottle$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/pm/utils/RequestThrottle;-><init>(Landroid/os/Handler;Lcom/android/server/pm/PackageInstallerService$$ExternalSyntheticLambda8;)V
PLcom/android/server/pm/utils/RequestThrottle;->runInternal()Z
-PLcom/android/server/pm/utils/RequestThrottle;->runNow()Z
-HSPLcom/android/server/pm/verify/domain/DomainVerificationCollector$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/pm/utils/RequestThrottle;->schedule()V
PLcom/android/server/pm/verify/domain/DomainVerificationCollector$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/pm/verify/domain/DomainVerificationCollector;->$r8$lambda$batCCh6Ga6j4xiWi4NlYNy9upmc(Landroid/util/ArraySet;Ljava/lang/String;)Ljava/lang/Boolean;
HSPLcom/android/server/pm/verify/domain/DomainVerificationCollector;-><clinit>()V
HSPLcom/android/server/pm/verify/domain/DomainVerificationCollector;-><init>(Lcom/android/server/compat/PlatformCompat;Lcom/android/server/SystemConfig;)V
-HPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectAllWebDomains(Lcom/android/server/pm/pkg/AndroidPackage;)Landroid/util/ArraySet;
-HPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectDomains(Lcom/android/server/pm/pkg/AndroidPackage;ZZ)Landroid/util/ArraySet;
-HPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectDomains(Lcom/android/server/pm/pkg/AndroidPackage;ZZLjava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
-HPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectDomainsInternal(Lcom/android/server/pm/pkg/AndroidPackage;ZZLjava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
-HPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectDomainsLegacy(Lcom/android/server/pm/pkg/AndroidPackage;ZZLjava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
-PLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectInvalidAutoVerifyDomains(Lcom/android/server/pm/pkg/AndroidPackage;)Landroid/util/ArraySet;
-HPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectValidAutoVerifyDomains(Lcom/android/server/pm/pkg/AndroidPackage;)Landroid/util/ArraySet;
-HPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->isValidHost(Ljava/lang/String;)Z
-PLcom/android/server/pm/verify/domain/DomainVerificationCollector;->lambda$static$0(Landroid/util/ArraySet;Ljava/lang/String;)Ljava/lang/Boolean;
+HSPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectDomains(Lcom/android/server/pm/pkg/AndroidPackage;ZZ)Landroid/util/ArraySet;
+HSPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectDomains(Lcom/android/server/pm/pkg/AndroidPackage;ZZLjava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
+HSPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectDomainsInternal(Lcom/android/server/pm/pkg/AndroidPackage;ZZLjava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/function/BiFunction;Lcom/android/server/pm/verify/domain/DomainVerificationCollector$$ExternalSyntheticLambda0;
HSPLcom/android/server/pm/verify/domain/DomainVerificationDebug;-><init>(Lcom/android/server/pm/verify/domain/DomainVerificationCollector;)V
-HPLcom/android/server/pm/verify/domain/DomainVerificationDebug;->printState(Landroid/util/IndentingPrintWriter;Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;ILcom/android/server/pm/verify/domain/models/DomainVerificationInternalUserState;Landroid/util/ArraySet;Landroid/util/ArraySet;Z)Z
-HPLcom/android/server/pm/verify/domain/DomainVerificationDebug;->printState(Landroid/util/IndentingPrintWriter;Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/util/ArrayMap;Z)Z
+PLcom/android/server/pm/verify/domain/DomainVerificationDebug;->printState(Landroid/util/IndentingPrintWriter;Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;ILcom/android/server/pm/verify/domain/models/DomainVerificationInternalUserState;Landroid/util/ArraySet;Landroid/util/ArraySet;Z)V
+PLcom/android/server/pm/verify/domain/DomainVerificationDebug;->printState(Landroid/util/IndentingPrintWriter;Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/util/ArrayMap;)Z
PLcom/android/server/pm/verify/domain/DomainVerificationDebug;->printState(Landroid/util/IndentingPrintWriter;Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/Integer;Landroid/util/ArraySet;Z)V
-HPLcom/android/server/pm/verify/domain/DomainVerificationDebug;->printState(Landroid/util/IndentingPrintWriter;Ljava/lang/String;Ljava/lang/Integer;Lcom/android/server/pm/Computer;Lcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationDebug;->printState(Landroid/util/IndentingPrintWriter;Ljava/lang/String;Ljava/lang/Integer;Lcom/android/server/pm/Computer;Lcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;)V
HSPLcom/android/server/pm/verify/domain/DomainVerificationEnforcer;-><init>(Landroid/content/Context;)V
PLcom/android/server/pm/verify/domain/DomainVerificationEnforcer;->assertApprovedQuerent(ILcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationEnforcer;->assertApprovedVerifier(ILcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy;)V
PLcom/android/server/pm/verify/domain/DomainVerificationEnforcer;->assertInternal(I)V
-HSPLcom/android/server/pm/verify/domain/DomainVerificationEnforcer;->callerIsLegacyUserSelector(IILjava/lang/String;I)Z
-HSPLcom/android/server/pm/verify/domain/DomainVerificationEnforcer;->setCallback(Lcom/android/server/pm/verify/domain/DomainVerificationEnforcer$Callback;)V
-HSPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings$LegacyState;-><init>()V
-HSPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings$LegacyState;->addUserState(II)V
-PLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings$LegacyState;->getUserStates()Landroid/util/SparseIntArray;
HSPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;-><init>()V
-HSPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;->add(Ljava/lang/String;II)V
HSPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;->getOrCreateStateLocked(Ljava/lang/String;)Lcom/android/server/pm/verify/domain/DomainVerificationLegacySettings$LegacyState;
-HSPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;->readSettings(Lcom/android/modules/utils/TypedXmlPullParser;)V
-HSPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;->readUserState(Lcom/android/server/pm/SettingsXml$ReadSection;Lcom/android/server/pm/verify/domain/DomainVerificationLegacySettings$LegacyState;)V
-HSPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;->readUserStates(Lcom/android/server/pm/SettingsXml$ReadSection;)V
-HPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;->writeSettings(Lcom/android/modules/utils/TypedXmlSerializer;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;->remove(Ljava/lang/String;)Landroid/content/pm/IntentFilterVerificationInfo;
+HSPLcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;-><clinit>()V
HSPLcom/android/server/pm/verify/domain/DomainVerificationManagerStub;-><init>(Lcom/android/server/pm/verify/domain/DomainVerificationService;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationManagerStub;->getDomainVerificationInfo(Ljava/lang/String;)Landroid/content/pm/verify/domain/DomainVerificationInfo;
+PLcom/android/server/pm/verify/domain/DomainVerificationManagerStub;->queryValidVerificationPackageNames()Ljava/util/List;
+PLcom/android/server/pm/verify/domain/DomainVerificationManagerStub;->setDomainVerificationStatus(Ljava/lang/String;Landroid/content/pm/verify/domain/DomainSet;I)I
HSPLcom/android/server/pm/verify/domain/DomainVerificationPersistence$ReadResult;-><init>(Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V
-HSPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->createPkgStateFromXml(Lcom/android/server/pm/SettingsXml$ReadSection;)Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;
-HSPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->readDomainStates(Lcom/android/server/pm/SettingsXml$ReadSection;Landroid/util/ArrayMap;)V
HSPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->readFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)Lcom/android/server/pm/verify/domain/DomainVerificationPersistence$ReadResult;
-HSPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->readPackageStates(Lcom/android/server/pm/SettingsXml$ReadSection;Landroid/util/ArrayMap;)V
-PLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writePackageStates(Lcom/android/server/pm/SettingsXml$WriteSection;Ljava/util/Collection;ILjava/util/function/Function;)V
-HPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writePkgStateToXml(Lcom/android/server/pm/SettingsXml$WriteSection;Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;ILjava/util/function/Function;)V
-HPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writeStateMap(Lcom/android/server/pm/SettingsXml$WriteSection;Landroid/util/ArrayMap;)V
-PLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writeToXml(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;Landroid/util/ArrayMap;Landroid/util/ArrayMap;ILjava/util/function/Function;)V
-HPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writeUriRelativeFilterGroupMap(Lcom/android/server/pm/SettingsXml$WriteSection;Landroid/util/ArrayMap;)V
-PLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writeUserStates(Lcom/android/server/pm/SettingsXml$WriteSection;ILandroid/util/SparseArray;)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->readPackageStates(Lcom/android/server/pm/SettingsXml$ReadSectionImpl;Landroid/util/ArrayMap;)V
+HPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writePackageStates(Lcom/android/server/pm/SettingsXml$ReadSectionImpl;Ljava/util/Collection;ILcom/android/server/pm/verify/domain/DomainVerificationService$$ExternalSyntheticLambda1;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/Collection;Landroid/util/ArraySet;,Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
+HPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writeStateMap(Lcom/android/server/pm/SettingsXml$ReadSectionImpl;Landroid/util/ArrayMap;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writeToXml(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;Landroid/util/ArrayMap;Landroid/util/ArrayMap;ILcom/android/server/pm/verify/domain/DomainVerificationService$$ExternalSyntheticLambda1;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writeUriRelativeFilterGroupMap(Lcom/android/server/pm/SettingsXml$ReadSectionImpl;Landroid/util/ArrayMap;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/Computer;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationService$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/pm/verify/domain/DomainVerificationService$GetAttachedResult;-><init>(Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;I)V
HSPLcom/android/server/pm/verify/domain/DomainVerificationService;-><init>(Landroid/content/Context;Lcom/android/server/SystemConfig;Lcom/android/server/compat/PlatformCompat;)V
PLcom/android/server/pm/verify/domain/DomainVerificationService;->addIfShouldBroadcastLocked(Ljava/util/Collection;Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;Z)V
-HPLcom/android/server/pm/verify/domain/DomainVerificationService;->addPackage(Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/content/pm/verify/domain/DomainSet;)V
-HPLcom/android/server/pm/verify/domain/DomainVerificationService;->applyImmutableState(Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/util/ArrayMap;Landroid/util/ArraySet;)Z
-HPLcom/android/server/pm/verify/domain/DomainVerificationService;->generateNewId()Ljava/util/UUID;
+HSPLcom/android/server/pm/verify/domain/DomainVerificationService;->addPackage(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/verify/domain/DomainSet;)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationService;->applyImmutableState(Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/util/ArrayMap;Landroid/util/ArraySet;)Z
+PLcom/android/server/pm/verify/domain/DomainVerificationService;->applyPreVerifiedState(Landroid/util/ArrayMap;Landroid/util/ArraySet;Landroid/content/pm/verify/domain/DomainSet;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationService;->getAndValidateAttachedLocked(Ljava/util/UUID;Ljava/util/Set;ZILjava/lang/Integer;Lcom/android/server/pm/Computer;)Lcom/android/server/pm/verify/domain/DomainVerificationService$GetAttachedResult;
PLcom/android/server/pm/verify/domain/DomainVerificationService;->getCollector()Lcom/android/server/pm/verify/domain/DomainVerificationCollector;
-PLcom/android/server/pm/verify/domain/DomainVerificationService;->getShell()Lcom/android/server/pm/verify/domain/DomainVerificationShell;
-PLcom/android/server/pm/verify/domain/DomainVerificationService;->hasRealVerifier()Z
+PLcom/android/server/pm/verify/domain/DomainVerificationService;->getDomainVerificationInfo(Ljava/lang/String;)Landroid/content/pm/verify/domain/DomainVerificationInfo;
+PLcom/android/server/pm/verify/domain/DomainVerificationService;->migrateState(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Landroid/content/pm/verify/domain/DomainSet;)V
PLcom/android/server/pm/verify/domain/DomainVerificationService;->onBootPhase(I)V
HSPLcom/android/server/pm/verify/domain/DomainVerificationService;->onStart()V
PLcom/android/server/pm/verify/domain/DomainVerificationService;->onUserUnlocked(Lcom/android/server/SystemService$TargetUser;)V
-HPLcom/android/server/pm/verify/domain/DomainVerificationService;->printState(Lcom/android/server/pm/Computer;Landroid/util/IndentingPrintWriter;Ljava/lang/String;Ljava/lang/Integer;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationService;->printState(Landroid/util/IndentingPrintWriter;Lcom/android/server/pm/Computer;Ljava/lang/Integer;Ljava/lang/String;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationService;->queryValidVerificationPackageNames()Ljava/util/List;
HSPLcom/android/server/pm/verify/domain/DomainVerificationService;->readLegacySettings(Lcom/android/modules/utils/TypedXmlPullParser;)V
-HSPLcom/android/server/pm/verify/domain/DomainVerificationService;->readSettings(Lcom/android/server/pm/Computer;Lcom/android/modules/utils/TypedXmlPullParser;)V
-HSPLcom/android/server/pm/verify/domain/DomainVerificationService;->setConnection(Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal$Connection;)V
-HSPLcom/android/server/pm/verify/domain/DomainVerificationService;->setLegacyUserState(Ljava/lang/String;II)Z
+HSPLcom/android/server/pm/verify/domain/DomainVerificationService;->readSettings(Lcom/android/server/pm/ComputerLocked;Lcom/android/modules/utils/TypedXmlPullParser;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationService;->removeUserStatesForDomain(Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;Ljava/lang/String;)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationService;->setConnection(Lcom/android/server/pm/DomainVerificationConnection;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationService;->setDomainVerificationStatusInternal(ILjava/util/UUID;Ljava/util/Set;I)I
+HSPLcom/android/server/pm/verify/domain/DomainVerificationService;->setLegacyUserState(IILjava/lang/String;)Z
PLcom/android/server/pm/verify/domain/DomainVerificationService;->setProxy(Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy;)V
-PLcom/android/server/pm/verify/domain/DomainVerificationService;->shouldReBroadcastPackage(Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;)Z
PLcom/android/server/pm/verify/domain/DomainVerificationService;->verifyPackages(Ljava/util/List;Z)V
-PLcom/android/server/pm/verify/domain/DomainVerificationService;->writeSettings(Lcom/android/server/pm/Computer;Lcom/android/modules/utils/TypedXmlSerializer;ZI)V
+HPLcom/android/server/pm/verify/domain/DomainVerificationService;->writeSettings(Lcom/android/server/pm/Computer;Lcom/android/modules/utils/TypedXmlSerializer;ZI)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/Stack;Ljava/util/Stack;
HSPLcom/android/server/pm/verify/domain/DomainVerificationSettings;-><init>(Lcom/android/server/pm/verify/domain/DomainVerificationCollector;)V
-HSPLcom/android/server/pm/verify/domain/DomainVerificationSettings;->readSettings(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;Lcom/android/server/pm/Computer;)V
-HPLcom/android/server/pm/verify/domain/DomainVerificationSettings;->removePendingState(Ljava/lang/String;)Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;
-PLcom/android/server/pm/verify/domain/DomainVerificationSettings;->writeSettings(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;ILjava/util/function/Function;)V
-HSPLcom/android/server/pm/verify/domain/DomainVerificationShell;-><init>(Lcom/android/server/pm/verify/domain/DomainVerificationShell$Callback;)V
-PLcom/android/server/pm/verify/domain/DomainVerificationUtils$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/pm/verify/domain/DomainVerificationUtils;-><clinit>()V
-HPLcom/android/server/pm/verify/domain/DomainVerificationUtils;->buildMockAppInfo(Lcom/android/server/pm/pkg/AndroidPackage;)Landroid/content/pm/ApplicationInfo;
-HPLcom/android/server/pm/verify/domain/DomainVerificationUtils;->isChangeEnabled(Lcom/android/server/compat/PlatformCompat;Lcom/android/server/pm/pkg/AndroidPackage;J)Z
-HPLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;-><init>(Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;Ljava/util/UUID;Z)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationSettings;->readSettings(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;Lcom/android/server/pm/ComputerLocked;)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationShell;-><init>(Lcom/android/server/pm/verify/domain/DomainVerificationService;)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationUtils;-><clinit>()V
HSPLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;-><init>(Ljava/lang/String;Ljava/util/UUID;ZLandroid/util/ArrayMap;Landroid/util/SparseArray;Ljava/lang/String;Landroid/util/ArrayMap;)V
-PLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;->getBackupSignatureHash()Ljava/lang/String;
-PLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;->getId()Ljava/util/UUID;
-HSPLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;->getPackageName()Ljava/lang/String;
-PLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;->getStateMap()Landroid/util/ArrayMap;
-PLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;->getUriRelativeFilterGroupMap()Landroid/util/ArrayMap;
-PLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;->getUserStates()Landroid/util/SparseArray;
+PLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;->equals(Ljava/lang/Object;)Z
PLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;->hashCode()I
-PLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;->isHasAutoVerifyDomains()Z
-PLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;->userStatesHashCode()I
HSPLcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;-><init>()V
-HSPLcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;->get(Ljava/lang/String;)Ljava/lang/Object;
-HPLcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;->put(Ljava/lang/String;Ljava/util/UUID;Ljava/lang/Object;)V
-PLcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;->size()I
-PLcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;->valueAt(I)Ljava/lang/Object;
-PLcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy;->makeProxy(Landroid/content/ComponentName;Landroid/content/ComponentName;Landroid/content/Context;Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/verify/domain/DomainVerificationCollector;Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV1$Connection;)Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy;
-PLcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyCombined;-><init>(Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy;Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy;)V
-HSPLcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyUnavailable;-><init>()V
-PLcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV1;-><init>(Landroid/content/Context;Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/verify/domain/DomainVerificationCollector;Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV1$Connection;Landroid/content/ComponentName;)V
-PLcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV2;-><init>(Landroid/content/Context;Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV2$Connection;Landroid/content/ComponentName;)V
+HSPLcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;->put(Ljava/lang/String;Ljava/util/UUID;Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;)V
+PLcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy;->makeProxy(Landroid/content/ComponentName;Landroid/content/ComponentName;Landroid/content/Context;Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/verify/domain/DomainVerificationCollector;Lcom/android/server/pm/DomainVerificationConnection;)Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy;
+PLcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyCombined;-><init>(Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV1;Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV2;)V
+PLcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyCombined;->getComponentName()Landroid/content/ComponentName;
+PLcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyCombined;->isCallerVerifier(I)Z
+PLcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV1;-><init>(Landroid/content/Context;Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/verify/domain/DomainVerificationCollector;Lcom/android/server/pm/DomainVerificationConnection;Landroid/content/ComponentName;)V
+PLcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV2;-><init>(Landroid/content/Context;Lcom/android/server/pm/DomainVerificationConnection;Landroid/content/ComponentName;)V
+PLcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV2;->isCallerVerifier(I)Z
PLcom/android/server/policy/AppOpsPolicy$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/policy/AppOpsPolicy;)V
PLcom/android/server/policy/AppOpsPolicy$$ExternalSyntheticLambda0;->onLocationPackageTagsChanged(ILandroid/os/PackageTagsList;)V
PLcom/android/server/policy/AppOpsPolicy$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/policy/AppOpsPolicy;)V
+PLcom/android/server/policy/AppOpsPolicy$$ExternalSyntheticLambda1;->onRoleHoldersChanged(Ljava/lang/String;Landroid/os/UserHandle;)V
PLcom/android/server/policy/AppOpsPolicy$1;-><init>(Lcom/android/server/policy/AppOpsPolicy;)V
-PLcom/android/server/policy/AppOpsPolicy;->$r8$lambda$laOMxe-XDRkQA64xS88xc0B7in4(Lcom/android/server/policy/AppOpsPolicy;ILandroid/os/PackageTagsList;)V
+PLcom/android/server/policy/AppOpsPolicy$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/policy/AppOpsPolicy;-><clinit>()V
PLcom/android/server/policy/AppOpsPolicy;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/policy/AppOpsPolicy;->checkAudioOperation(IIILjava/lang/String;Lcom/android/internal/util/function/QuadFunction;)I
-HPLcom/android/server/policy/AppOpsPolicy;->checkOperation(IILjava/lang/String;Ljava/lang/String;IZLcom/android/internal/util/function/HexFunction;)I
-PLcom/android/server/policy/AppOpsPolicy;->clearActivityRecognitionTags()V
-HPLcom/android/server/policy/AppOpsPolicy;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;ILcom/android/internal/util/function/HexConsumer;)V
+HPLcom/android/server/policy/AppOpsPolicy;->checkAudioOperation(IIILjava/lang/String;Lcom/android/internal/util/function/QuadFunction;)I+]Lcom/android/internal/util/function/QuadFunction;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda3;
+HPLcom/android/server/policy/AppOpsPolicy;->checkOperation(IILjava/lang/String;Ljava/lang/String;IZLcom/android/internal/util/function/HexFunction;)I+]Lcom/android/internal/util/function/HexFunction;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda9;
+PLcom/android/server/policy/AppOpsPolicy;->dumpTags(Ljava/io/PrintWriter;)V
+HPLcom/android/server/policy/AppOpsPolicy;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;ILcom/android/internal/util/function/HexConsumer;)V+]Lcom/android/internal/util/function/HexConsumer;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda10;
PLcom/android/server/policy/AppOpsPolicy;->initializeActivityRecognizersTags()V
-PLcom/android/server/policy/AppOpsPolicy;->isDatasourceAttributionTag(ILjava/lang/String;Ljava/lang/String;Ljava/util/Map;)Z
PLcom/android/server/policy/AppOpsPolicy;->isHotwordDetectionServiceRequired(Landroid/content/pm/PackageManager;)Z
-HPLcom/android/server/policy/AppOpsPolicy;->lambda$new$0(ILandroid/os/PackageTagsList;)V
-HPLcom/android/server/policy/AppOpsPolicy;->noteOperation(IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;ZLcom/android/internal/util/function/OctFunction;)Landroid/app/SyncNotedAppOp;
-HPLcom/android/server/policy/AppOpsPolicy;->noteProxyOperation(ILandroid/content/AttributionSource;ZLjava/lang/String;ZZLcom/android/internal/util/function/HexFunction;)Landroid/app/SyncNotedAppOp;
-PLcom/android/server/policy/AppOpsPolicy;->resolveArOp(I)I
-HPLcom/android/server/policy/AppOpsPolicy;->resolveDatasourceOp(IILjava/lang/String;Ljava/lang/String;)I
-PLcom/android/server/policy/AppOpsPolicy;->resolveLocationOp(I)I
-PLcom/android/server/policy/AppOpsPolicy;->resolveRecordAudioOp(II)I
-HPLcom/android/server/policy/AppOpsPolicy;->resolveSandboxedServiceOp(II)I
+HPLcom/android/server/policy/AppOpsPolicy;->noteOperation(IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;ZILcom/android/internal/util/function/NonaFunction;)Landroid/app/SyncNotedAppOp;+]Lcom/android/internal/util/function/NonaFunction;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda4;
+HPLcom/android/server/policy/AppOpsPolicy;->noteProxyOperation(ILandroid/content/AttributionSource;ZLjava/lang/String;ZZLcom/android/internal/util/function/HexFunction;)Landroid/app/SyncNotedAppOp;+]Lcom/android/internal/util/function/HexFunction;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda9;
+HPLcom/android/server/policy/AppOpsPolicy;->resolveDatasourceOp(IILjava/lang/String;Ljava/lang/String;)I+]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;
HPLcom/android/server/policy/AppOpsPolicy;->resolveUid(II)I
-HPLcom/android/server/policy/AppOpsPolicy;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZIILcom/android/internal/util/function/DodecFunction;)Landroid/app/SyncNotedAppOp;
-PLcom/android/server/policy/AppOpsPolicy;->updateAllowListedTagsForPackageLocked(ILandroid/os/PackageTagsList;Ljava/util/concurrent/ConcurrentHashMap;)V
+HPLcom/android/server/policy/AppOpsPolicy;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZIILcom/android/internal/util/function/DodecFunction;)Landroid/app/SyncNotedAppOp;+]Lcom/android/internal/util/function/DodecFunction;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda6;
+PLcom/android/server/policy/AppOpsPolicy;->writeTags(Ljava/util/Map;Ljava/io/PrintWriter;)V
+PLcom/android/server/policy/DeferredKeyActionExecutor$TimedActionsBuffer;-><init>(IJ)V
PLcom/android/server/policy/DeferredKeyActionExecutor;-><init>()V
+PLcom/android/server/policy/DeferredKeyActionExecutor;->queueKeyAction(IJLjava/lang/Runnable;)V
PLcom/android/server/policy/DeviceStatePolicyImpl;-><init>(Landroid/content/Context;)V
-PLcom/android/server/policy/DeviceStatePolicyImpl;->configureDeviceForState(ILjava/lang/Runnable;)V
-PLcom/android/server/policy/DeviceStatePolicyImpl;->getDeviceStateProvider()Lcom/android/server/devicestate/DeviceStateProvider;
-PLcom/android/server/policy/DeviceStateProviderImpl$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/policy/DeviceStateProviderImpl$$ExternalSyntheticLambda0;-><init>(I)V
PLcom/android/server/policy/DeviceStateProviderImpl$$ExternalSyntheticLambda0;->getAsBoolean()Z
-PLcom/android/server/policy/DeviceStateProviderImpl$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/policy/DeviceStateProviderImpl$$ExternalSyntheticLambda2;-><init>()V
-PLcom/android/server/policy/DeviceStateProviderImpl;->$r8$lambda$t8JSrrBv0J146lhB0w0iIONBa0A()Z
PLcom/android/server/policy/DeviceStateProviderImpl;-><clinit>()V
PLcom/android/server/policy/DeviceStateProviderImpl;-><init>(Landroid/content/Context;Ljava/util/List;Ljava/util/List;)V
-PLcom/android/server/policy/DeviceStateProviderImpl;->create(Landroid/content/Context;)Lcom/android/server/policy/DeviceStateProviderImpl;
PLcom/android/server/policy/DeviceStateProviderImpl;->createFromConfig(Landroid/content/Context;Lcom/android/server/policy/DeviceStateProviderImpl$ReadableConfig;)Lcom/android/server/policy/DeviceStateProviderImpl;
-PLcom/android/server/policy/DeviceStateProviderImpl;->getConfigurationFile()Ljava/io/File;
-PLcom/android/server/policy/DeviceStateProviderImpl;->hasPowerSaveSensitiveState(Ljava/util/List;)Z
-PLcom/android/server/policy/DeviceStateProviderImpl;->hasThermalSensitiveState(Ljava/util/List;)Z
-PLcom/android/server/policy/DeviceStateProviderImpl;->isThermalStatusCriticalOrAbove(I)Z
-PLcom/android/server/policy/DeviceStateProviderImpl;->lambda$static$0()Z
+PLcom/android/server/policy/DeviceStateProviderImpl;->dump(Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/policy/DeviceStateProviderImpl;->notifyDeviceStateChangedIfNeeded()V
PLcom/android/server/policy/DeviceStateProviderImpl;->notifySupportedStatesChanged(I)V
-PLcom/android/server/policy/DeviceStateProviderImpl;->setListener(Lcom/android/server/devicestate/DeviceStateProvider$Listener;)V
-PLcom/android/server/policy/DeviceStateProviderImpl;->setStateConditions(Ljava/util/List;Ljava/util/List;)V
PLcom/android/server/policy/DisplayFoldController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/policy/DisplayFoldController;)V
PLcom/android/server/policy/DisplayFoldController$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/policy/DisplayFoldController;->$r8$lambda$UP61ySHIdmxonM9JQcOhYZ_jOG0(Lcom/android/server/policy/DisplayFoldController;Ljava/lang/Boolean;)V
-PLcom/android/server/policy/DisplayFoldController;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerInternal;Landroid/hardware/display/DisplayManagerInternal;ILandroid/graphics/Rect;Landroid/os/Handler;)V
-PLcom/android/server/policy/DisplayFoldController;->create(Landroid/content/Context;I)Lcom/android/server/policy/DisplayFoldController;
-PLcom/android/server/policy/DisplayFoldController;->finishedWakingUp()V
-PLcom/android/server/policy/DisplayFoldController;->lambda$new$0(Ljava/lang/Boolean;)V
-PLcom/android/server/policy/DisplayFoldController;->onDefaultDisplayFocusChanged(Ljava/lang/String;)V
-PLcom/android/server/policy/DisplayFoldController;->setDeviceFolded(Z)V
+PLcom/android/server/policy/DisplayFoldController;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerInternal;Landroid/hardware/display/DisplayManagerInternal;Landroid/graphics/Rect;Landroid/os/Handler;)V
PLcom/android/server/policy/DisplayFoldDurationLogger;-><init>()V
-PLcom/android/server/policy/DisplayFoldDurationLogger;->isOn()Z
-PLcom/android/server/policy/DisplayFoldDurationLogger;->logFocusedAppWithFoldState(ZLjava/lang/String;)V
-PLcom/android/server/policy/DisplayFoldDurationLogger;->onFinishedWakingUp(Ljava/lang/Boolean;)V
-PLcom/android/server/policy/DisplayFoldDurationLogger;->setDeviceFolded(Z)V
-PLcom/android/server/policy/EventLogTags;->writeScreenToggled(I)V
-PLcom/android/server/policy/FeatureFlagsImpl;-><clinit>()V
-PLcom/android/server/policy/FeatureFlagsImpl;-><init>()V
-PLcom/android/server/policy/FeatureFlagsImpl;->load_overrides_wear_frameworks()V
-PLcom/android/server/policy/FeatureFlagsImpl;->supportInputWakeupDelegate()Z
+PLcom/android/server/policy/DisplayFoldDurationLogger;->log()V
PLcom/android/server/policy/Flags;-><clinit>()V
PLcom/android/server/policy/Flags;->supportInputWakeupDelegate()Z
-PLcom/android/server/policy/GlobalKeyManager$GlobalKeyAction;-><init>(Lcom/android/server/policy/GlobalKeyManager;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/policy/GlobalActions$1;-><init>(Lcom/android/server/policy/GlobalActions;)V
+PLcom/android/server/policy/GlobalActions;-><init>(Landroid/content/Context;Lcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;)V
+PLcom/android/server/policy/GlobalActions;->onGlobalActionsAvailableChanged(Z)V
+PLcom/android/server/policy/GlobalKeyManager$GlobalKeyAction;-><init>(Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/policy/GlobalKeyManager;-><init>(Landroid/content/Context;)V
-PLcom/android/server/policy/GlobalKeyManager;->loadGlobalKeys(Landroid/content/Context;)V
+PLcom/android/server/policy/GlobalKeyManager;->handleGlobalKey(Landroid/content/Context;ILandroid/view/KeyEvent;)Z
+PLcom/android/server/policy/KeyCombinationManager$$ExternalSyntheticLambda0;-><init>(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/policy/KeyCombinationManager$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/policy/KeyCombinationManager$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/policy/KeyCombinationManager;I)V
+PLcom/android/server/policy/KeyCombinationManager$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/policy/KeyCombinationManager$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/policy/KeyCombinationManager$TwoKeysCombinationRule;I)V
+PLcom/android/server/policy/KeyCombinationManager$$ExternalSyntheticLambda4;->run()V
PLcom/android/server/policy/KeyCombinationManager$TwoKeysCombinationRule;-><init>(II)V
PLcom/android/server/policy/KeyCombinationManager$TwoKeysCombinationRule;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/policy/KeyCombinationManager$TwoKeysCombinationRule;->getKeyInterceptDelayMs()J
+PLcom/android/server/policy/KeyCombinationManager$TwoKeysCombinationRule;->shouldInterceptKey(I)Z
+PLcom/android/server/policy/KeyCombinationManager$TwoKeysCombinationRule;->toString()Ljava/lang/String;
PLcom/android/server/policy/KeyCombinationManager;-><init>(Landroid/os/Handler;)V
PLcom/android/server/policy/KeyCombinationManager;->addRule(Lcom/android/server/policy/KeyCombinationManager$TwoKeysCombinationRule;)V
+PLcom/android/server/policy/KeyCombinationManager;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/policy/KeyCombinationManager;->forAllRules(Ljava/util/ArrayList;Ljava/util/function/Consumer;)V
+PLcom/android/server/policy/KeyCombinationManager;->getKeyInterceptTimeout(I)J
+HPLcom/android/server/policy/KeyCombinationManager;->interceptKeyLocked(Landroid/view/KeyEvent;Z)Z
+PLcom/android/server/policy/KeyCombinationManager;->isKeyConsumed(Landroid/view/KeyEvent;)Z
+PLcom/android/server/policy/ModifierShortcutManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/policy/ModifierShortcutManager;)V
+PLcom/android/server/policy/ModifierShortcutManager$$ExternalSyntheticLambda0;->onRoleHoldersChanged(Ljava/lang/String;Landroid/os/UserHandle;)V
+PLcom/android/server/policy/ModifierShortcutManager$$ExternalSyntheticLambda4;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/policy/ModifierShortcutManager$$ExternalSyntheticLambda4;->test(Ljava/lang/Object;)Z
+PLcom/android/server/policy/ModifierShortcutManager$Bookmark;-><init>(CZ)V
+PLcom/android/server/policy/ModifierShortcutManager$CategoryBookmark;-><init>(CZLjava/lang/String;)V
+PLcom/android/server/policy/ModifierShortcutManager$CategoryBookmark;->getIntent(Landroid/content/Context;)Landroid/content/Intent;
+PLcom/android/server/policy/ModifierShortcutManager$RoleBookmark;-><init>(CZLjava/lang/String;)V
+PLcom/android/server/policy/ModifierShortcutManager$RoleBookmark;->getIntent(Landroid/content/Context;)Landroid/content/Intent;
PLcom/android/server/policy/ModifierShortcutManager;-><clinit>()V
-PLcom/android/server/policy/ModifierShortcutManager;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
-PLcom/android/server/policy/ModifierShortcutManager;->loadShortcuts()V
-PLcom/android/server/policy/PermissionPolicyInternal;-><init>()V
+PLcom/android/server/policy/ModifierShortcutManager;-><init>(Landroid/content/Context;Landroid/os/UserHandle;)V
+PLcom/android/server/policy/ModifierShortcutManager;->getRoleLaunchIntent(Landroid/content/Context;Ljava/lang/String;)Landroid/content/Intent;
+PLcom/android/server/policy/ModifierShortcutManager;->shortcutInfoFromIntent(CLandroid/content/Intent;Z)Landroid/view/KeyboardShortcutInfo;
PLcom/android/server/policy/PermissionPolicyService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/policy/PermissionPolicyService;)V
+PLcom/android/server/policy/PermissionPolicyService$$ExternalSyntheticLambda0;->onPermissionsChanged(I)V
PLcom/android/server/policy/PermissionPolicyService$$ExternalSyntheticLambda1;-><init>(Landroid/permission/PermissionControllerManager;)V
PLcom/android/server/policy/PermissionPolicyService$$ExternalSyntheticLambda1;->run()V
PLcom/android/server/policy/PermissionPolicyService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;)V
-HPLcom/android/server/policy/PermissionPolicyService$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
+PLcom/android/server/policy/PermissionPolicyService$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
+PLcom/android/server/policy/PermissionPolicyService$$ExternalSyntheticLambda4;-><init>(I)V
+PLcom/android/server/policy/PermissionPolicyService$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/policy/PermissionPolicyService$1;-><init>(Lcom/android/server/policy/PermissionPolicyService;)V
+PLcom/android/server/policy/PermissionPolicyService$1;->onPackageAdded(Ljava/lang/String;I)V
+PLcom/android/server/policy/PermissionPolicyService$1;->onPackageChanged(ILjava/lang/String;)V
PLcom/android/server/policy/PermissionPolicyService$2;-><init>(Lcom/android/server/policy/PermissionPolicyService;)V
+PLcom/android/server/policy/PermissionPolicyService$2;->opChanged(IILjava/lang/String;Ljava/lang/String;)V
PLcom/android/server/policy/PermissionPolicyService$3;-><init>(Lcom/android/server/policy/PermissionPolicyService;)V
+PLcom/android/server/policy/PermissionPolicyService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/policy/PermissionPolicyService$3;->updateUid(I)V
PLcom/android/server/policy/PermissionPolicyService$4;-><init>(Lcom/android/server/policy/PermissionPolicyService;)V
+PLcom/android/server/policy/PermissionPolicyService$Internal$1$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/policy/PermissionPolicyService$Internal$1;Landroid/content/pm/ActivityInfo;Landroid/app/TaskInfo;Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;)V
+PLcom/android/server/policy/PermissionPolicyService$Internal$1$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/policy/PermissionPolicyService$Internal$1;-><init>(Lcom/android/server/policy/PermissionPolicyService$Internal;)V
-PLcom/android/server/policy/PermissionPolicyService$Internal$1;->onActivityLaunched(Landroid/app/TaskInfo;Landroid/content/pm/ActivityInfo;Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;)V
+HPLcom/android/server/policy/PermissionPolicyService$Internal$1;->onActivityLaunched(Landroid/app/TaskInfo;Landroid/content/pm/ActivityInfo;Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;)V
PLcom/android/server/policy/PermissionPolicyService$Internal$1;->onInterceptActivityLaunch(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;)Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptResult;
-PLcom/android/server/policy/PermissionPolicyService$Internal;->-$$Nest$monActivityManagerReady(Lcom/android/server/policy/PermissionPolicyService$Internal;)V
-PLcom/android/server/policy/PermissionPolicyService$Internal;->-$$Nest$mshouldShowNotificationDialogOrClearFlags(Lcom/android/server/policy/PermissionPolicyService$Internal;Landroid/app/TaskInfo;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Landroid/app/ActivityOptions;Ljava/lang/String;Z)Z
PLcom/android/server/policy/PermissionPolicyService$Internal;-><init>(Lcom/android/server/policy/PermissionPolicyService;)V
-PLcom/android/server/policy/PermissionPolicyService$Internal;-><init>(Lcom/android/server/policy/PermissionPolicyService;Lcom/android/server/policy/PermissionPolicyService$Internal-IA;)V
-PLcom/android/server/policy/PermissionPolicyService$Internal;->checkStartActivity(Landroid/content/Intent;ILjava/lang/String;)Z
-PLcom/android/server/policy/PermissionPolicyService$Internal;->isActionRemovedForCallingPackage(Landroid/content/Intent;ILjava/lang/String;)Z
-HPLcom/android/server/policy/PermissionPolicyService$Internal;->isIntentToPermissionDialog(Landroid/content/Intent;)Z
-PLcom/android/server/policy/PermissionPolicyService$Internal;->isLauncherIntent(Landroid/content/Intent;)Z
-PLcom/android/server/policy/PermissionPolicyService$Internal;->isTaskPotentialTrampoline(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/TaskInfo;Landroid/content/Intent;)Z
-PLcom/android/server/policy/PermissionPolicyService$Internal;->isTaskStartedFromLauncher(Ljava/lang/String;Landroid/app/TaskInfo;)Z
-PLcom/android/server/policy/PermissionPolicyService$Internal;->onActivityManagerReady()V
-PLcom/android/server/policy/PermissionPolicyService$Internal;->shouldShowNotificationDialogForTask(Landroid/app/TaskInfo;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;)Z
-PLcom/android/server/policy/PermissionPolicyService$Internal;->shouldShowNotificationDialogOrClearFlags(Landroid/app/TaskInfo;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Landroid/app/ActivityOptions;Ljava/lang/String;Z)Z
-HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser$OpToChange;-><init>(Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;ILjava/lang/String;I)V
-PLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->-$$Nest$msyncPackages(Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;)V
-HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;-><init>(Lcom/android/server/policy/PermissionPolicyService;Landroid/content/Context;)V
-HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->addAppOps(Landroid/content/pm/PackageInfo;Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)V
-HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->addExtraAppOp(Landroid/content/pm/PackageInfo;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/pm/PermissionInfo;)V
-HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->addPackage(Ljava/lang/String;)V
-HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->addPermissionAppOp(Landroid/content/pm/PackageInfo;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/pm/PermissionInfo;)V
+PLcom/android/server/policy/PermissionPolicyService$Internal;->checkStartActivity(Landroid/content/Intent;Ljava/lang/String;I)Z
+HPLcom/android/server/policy/PermissionPolicyService$Internal;->isLauncherIntent(Landroid/content/Intent;)Z
+HPLcom/android/server/policy/PermissionPolicyService$Internal;->shouldShowNotificationDialogOrClearFlags(Landroid/app/TaskInfo;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Landroid/app/ActivityOptions;Ljava/lang/String;Z)Z
+PLcom/android/server/policy/PermissionPolicyService$Internal;->showNotificationPromptIfNeeded(Ljava/lang/String;IILcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;)V
+PLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser$OpToChange;-><init>(IILjava/lang/String;)V
+HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->-$$Nest$msyncPackages(Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;)V
+HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;-><init>(Lcom/android/server/policy/PermissionPolicyService;Landroid/content/Context;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/pm/permission/PermissionManagerServiceInterface;Lcom/android/server/permission/access/permission/PermissionService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->addPackage(Ljava/lang/String;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Lcom/android/server/policy/SoftRestrictedPermissionPolicy;Lcom/android/server/policy/SoftRestrictedPermissionPolicy$2;,Lcom/android/server/policy/SoftRestrictedPermissionPolicy$3;]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->setUidMode(IIILjava/lang/String;)V
-PLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->setUidModeAllowed(IILjava/lang/String;)V
-PLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->setUidModeForeground(IILjava/lang/String;)V
-HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->setUidModeIgnored(IILjava/lang/String;)V
-HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->shouldGrantAppOp(Landroid/content/pm/PackageInfo;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/pm/PermissionInfo;)Z
-HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->syncPackages()V
+PLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->shouldGrantAppOp(Landroid/content/pm/PackageInfo;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/pm/PermissionInfo;)Z
PLcom/android/server/policy/PermissionPolicyService$PhoneCarrierPrivilegesCallback;-><init>(Lcom/android/server/policy/PermissionPolicyService;I)V
PLcom/android/server/policy/PermissionPolicyService$PhoneCarrierPrivilegesCallback;->onCarrierPrivilegesChanged(Ljava/util/Set;Ljava/util/Set;)V
-PLcom/android/server/policy/PermissionPolicyService;->$r8$lambda$rznrndUGsirjpBcjHOGDjKWoSAo(Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;Lcom/android/server/pm/pkg/AndroidPackage;)V
-PLcom/android/server/policy/PermissionPolicyService;->-$$Nest$fgetmPackageManager(Lcom/android/server/policy/PermissionPolicyService;)Landroid/content/pm/PackageManager;
-PLcom/android/server/policy/PermissionPolicyService;->-$$Nest$fgetmTelephonyManager(Lcom/android/server/policy/PermissionPolicyService;)Landroid/telephony/TelephonyManager;
-PLcom/android/server/policy/PermissionPolicyService;->-$$Nest$minitTelephonyManagerIfNeeded(Lcom/android/server/policy/PermissionPolicyService;)V
-HPLcom/android/server/policy/PermissionPolicyService;->-$$Nest$smgetSwitchOp(Ljava/lang/String;)I
-PLcom/android/server/policy/PermissionPolicyService;-><clinit>()V
PLcom/android/server/policy/PermissionPolicyService;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/policy/PermissionPolicyService;->getSwitchOp(Ljava/lang/String;)I
PLcom/android/server/policy/PermissionPolicyService;->getUserContext(Landroid/content/Context;Landroid/os/UserHandle;)Landroid/content/Context;
-PLcom/android/server/policy/PermissionPolicyService;->grantOrUpgradeDefaultRuntimePermissionsIfNeeded(I)V
-PLcom/android/server/policy/PermissionPolicyService;->initTelephonyManagerIfNeeded()V
PLcom/android/server/policy/PermissionPolicyService;->isStarted(I)Z
-HPLcom/android/server/policy/PermissionPolicyService;->lambda$synchronizePermissionsAndAppOpsForUser$1(Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;Lcom/android/server/pm/pkg/AndroidPackage;)V
PLcom/android/server/policy/PermissionPolicyService;->onBootPhase(I)V
-HPLcom/android/server/policy/PermissionPolicyService;->onStart()V
-PLcom/android/server/policy/PermissionPolicyService;->onStartUser(I)V
+PLcom/android/server/policy/PermissionPolicyService;->onStart()V
+PLcom/android/server/policy/PermissionPolicyService;->onStartUser$1(I)V
PLcom/android/server/policy/PermissionPolicyService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/policy/PermissionPolicyService;->registerCarrierPrivilegesCallbacks()V
-PLcom/android/server/policy/PermissionPolicyService;->synchronizePermissionsAndAppOpsForUser(I)V
-PLcom/android/server/policy/PhoneWindowManager$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
-PLcom/android/server/policy/PhoneWindowManager$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/policy/PhoneWindowManager$13;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
-PLcom/android/server/policy/PhoneWindowManager$14;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PermissionPolicyService;->resetAppOpPermissionsIfNotRequestedForUid(I)V
+PLcom/android/server/policy/PermissionPolicyService;->synchronizeUidPermissionsAndAppOps(I)V
+PLcom/android/server/policy/PermissionPolicyService;->synchronizeUidPermissionsAndAppOpsAsync(I)V
+PLcom/android/server/policy/PhoneWindowManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/policy/PhoneWindowManager;Landroid/view/KeyEvent;ZZ)V
+PLcom/android/server/policy/PhoneWindowManager$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/policy/PhoneWindowManager$$ExternalSyntheticLambda3;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/policy/PhoneWindowManager$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/policy/PhoneWindowManager$12$$ExternalSyntheticLambda0;->test(I)Z
+PLcom/android/server/policy/PhoneWindowManager$12;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager$12;->handleKeyGestureEvent(Landroid/hardware/input/KeyGestureEvent;Landroid/os/IBinder;)Z
+PLcom/android/server/policy/PhoneWindowManager$12;->isKeyGestureSupported(I)Z
+PLcom/android/server/policy/PhoneWindowManager$14;-><init>(Lcom/android/server/policy/PhoneWindowManager;I)V
PLcom/android/server/policy/PhoneWindowManager$14;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/policy/PhoneWindowManager$1;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
-PLcom/android/server/policy/PhoneWindowManager$1;->onDrawn()V
+PLcom/android/server/policy/PhoneWindowManager$16;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager$1;-><init>(Ljava/lang/Object;)V
+PLcom/android/server/policy/PhoneWindowManager$1;->onShowingChanged()V
PLcom/android/server/policy/PhoneWindowManager$2;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
PLcom/android/server/policy/PhoneWindowManager$3;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
-PLcom/android/server/policy/PhoneWindowManager$4;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager$4;-><init>(ILjava/lang/Object;)V
PLcom/android/server/policy/PhoneWindowManager$5;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
-PLcom/android/server/policy/PhoneWindowManager$5;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
-PLcom/android/server/policy/PhoneWindowManager$5;->onAppTransitionStartingLocked(JJ)I
-PLcom/android/server/policy/PhoneWindowManager$6;-><init>(Lcom/android/server/policy/PhoneWindowManager;II)V
-PLcom/android/server/policy/PhoneWindowManager$7;-><init>(Lcom/android/server/policy/PhoneWindowManager;II)V
-PLcom/android/server/policy/PhoneWindowManager$8;-><init>(Lcom/android/server/policy/PhoneWindowManager;II)V
-PLcom/android/server/policy/PhoneWindowManager$9;-><init>(Lcom/android/server/policy/PhoneWindowManager;II)V
-PLcom/android/server/policy/PhoneWindowManager$ButtonOverridePermissionChecker;-><init>()V
+PLcom/android/server/policy/PhoneWindowManager$5;->onAppTransitionCancelledLocked(Z)V
+HPLcom/android/server/policy/PhoneWindowManager$5;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
+PLcom/android/server/policy/PhoneWindowManager$5;->onAppTransitionStartingLocked(J)I
+PLcom/android/server/policy/PhoneWindowManager$BackKeyRule;-><init>(I)V
+PLcom/android/server/policy/PhoneWindowManager$BackKeyRule;-><init>(Lcom/android/server/policy/PhoneWindowManager;I)V
+PLcom/android/server/policy/PhoneWindowManager$BackKeyRule;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/policy/PhoneWindowManager$BackKeyRule;->getLongPressTimeoutMs()J
+PLcom/android/server/policy/PhoneWindowManager$BackKeyRule;->getMaxMultiPressCount()I
+PLcom/android/server/policy/PhoneWindowManager$BackKeyRule;->supportLongPress()Z
+PLcom/android/server/policy/PhoneWindowManager$BackKeyRule;->supportVeryLongPress()Z
+PLcom/android/server/policy/PhoneWindowManager$BackKeyRule;->toString()Ljava/lang/String;
PLcom/android/server/policy/PhoneWindowManager$Injector$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/policy/PhoneWindowManager$Injector;)V
-PLcom/android/server/policy/PhoneWindowManager$Injector$1;-><init>(Lcom/android/server/policy/PhoneWindowManager$Injector;)V
-PLcom/android/server/policy/PhoneWindowManager$Injector$1;->onShowingChanged()V
-PLcom/android/server/policy/PhoneWindowManager$Injector;->-$$Nest$fgetmWindowManagerFuncs(Lcom/android/server/policy/PhoneWindowManager$Injector;)Lcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;
+PLcom/android/server/policy/PhoneWindowManager$Injector$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
PLcom/android/server/policy/PhoneWindowManager$Injector;-><init>(Landroid/content/Context;Lcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;)V
-PLcom/android/server/policy/PhoneWindowManager$Injector;->getAccessibilityShortcutController(Landroid/content/Context;Landroid/os/Handler;I)Lcom/android/internal/accessibility/AccessibilityShortcutController;
-PLcom/android/server/policy/PhoneWindowManager$Injector;->getActivityManagerService()Landroid/app/IActivityManager;
-PLcom/android/server/policy/PhoneWindowManager$Injector;->getButtonOverridePermissionChecker()Lcom/android/server/policy/PhoneWindowManager$ButtonOverridePermissionChecker;
-PLcom/android/server/policy/PhoneWindowManager$Injector;->getContext()Landroid/content/Context;
-PLcom/android/server/policy/PhoneWindowManager$Injector;->getGlobalActionsFactory()Ljava/util/function/Supplier;
-PLcom/android/server/policy/PhoneWindowManager$Injector;->getKeyguardServiceDelegate()Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;
-PLcom/android/server/policy/PhoneWindowManager$Injector;->getLooper()Landroid/os/Looper;
-PLcom/android/server/policy/PhoneWindowManager$Injector;->getTalkbackShortcutController()Lcom/android/server/policy/TalkbackShortcutController;
-PLcom/android/server/policy/PhoneWindowManager$Injector;->getWindowManagerFuncs()Lcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;
-PLcom/android/server/policy/PhoneWindowManager$Injector;->getWindowWakeUpPolicy()Lcom/android/server/policy/WindowWakeUpPolicy;
-PLcom/android/server/policy/PhoneWindowManager$MyWakeGestureListener;-><init>(Lcom/android/server/policy/PhoneWindowManager;Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/policy/PhoneWindowManager$MyWakeGestureListener;-><init>(Lcom/android/server/policy/PhoneWindowManager;Landroid/content/Context;Lcom/android/server/policy/PhoneWindowManager$PolicyHandler;)V
PLcom/android/server/policy/PhoneWindowManager$PolicyHandler;-><init>(Lcom/android/server/policy/PhoneWindowManager;Landroid/os/Looper;)V
-PLcom/android/server/policy/PhoneWindowManager$PolicyHandler;-><init>(Lcom/android/server/policy/PhoneWindowManager;Landroid/os/Looper;Lcom/android/server/policy/PhoneWindowManager$PolicyHandler-IA;)V
-PLcom/android/server/policy/PhoneWindowManager$PolicyHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/policy/PhoneWindowManager$PowerKeyRule;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
-PLcom/android/server/policy/PhoneWindowManager$ScreenLockTimeout;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
-PLcom/android/server/policy/PhoneWindowManager$SettingsObserver;-><init>(Lcom/android/server/policy/PhoneWindowManager;Landroid/os/Handler;)V
-HPLcom/android/server/policy/PhoneWindowManager$SettingsObserver;->observe()V
+HPLcom/android/server/policy/PhoneWindowManager$PolicyHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/policy/PhoneWindowManager$SettingsObserver;-><init>(Lcom/android/server/policy/PhoneWindowManager;Lcom/android/server/policy/PhoneWindowManager$PolicyHandler;)V
PLcom/android/server/policy/PhoneWindowManager$SettingsObserver;->onChange(Z)V
-PLcom/android/server/policy/PhoneWindowManager$StemPrimaryKeyRule;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
-PLcom/android/server/policy/PhoneWindowManager;->$r8$lambda$bJVVU3mazaPNgbIaoQkxeoMODLQ(Lcom/android/server/policy/PhoneWindowManager;)V
-PLcom/android/server/policy/PhoneWindowManager;->-$$Nest$fgetmHandler(Lcom/android/server/policy/PhoneWindowManager;)Landroid/os/Handler;
-PLcom/android/server/policy/PhoneWindowManager;->-$$Nest$fgetmLock(Lcom/android/server/policy/PhoneWindowManager;)Ljava/lang/Object;
-PLcom/android/server/policy/PhoneWindowManager;->-$$Nest$fputmLockAfterDreamingTransitionFinished(Lcom/android/server/policy/PhoneWindowManager;Z)V
PLcom/android/server/policy/PhoneWindowManager;->-$$Nest$mfinishKeyguardDrawn(Lcom/android/server/policy/PhoneWindowManager;)V
-PLcom/android/server/policy/PhoneWindowManager;->-$$Nest$mfinishWindowsDrawn(Lcom/android/server/policy/PhoneWindowManager;I)V
-PLcom/android/server/policy/PhoneWindowManager;->-$$Nest$mgetDreamManagerInternal(Lcom/android/server/policy/PhoneWindowManager;)Landroid/service/dreams/DreamManagerInternal;
-PLcom/android/server/policy/PhoneWindowManager;->-$$Nest$mhandleTransitionForKeyguardLw(Lcom/android/server/policy/PhoneWindowManager;ZZ)I
-PLcom/android/server/policy/PhoneWindowManager;->-$$Nest$mupdateSettings(Lcom/android/server/policy/PhoneWindowManager;)V
+HPLcom/android/server/policy/PhoneWindowManager;->-$$Nest$mpowerPress(Lcom/android/server/policy/PhoneWindowManager;JII)V
+PLcom/android/server/policy/PhoneWindowManager;->-$$Nest$mstemPrimaryLongPress(Lcom/android/server/policy/PhoneWindowManager;J)V
+PLcom/android/server/policy/PhoneWindowManager;->-$$Nest$mstemPrimaryPress(Lcom/android/server/policy/PhoneWindowManager;I)V
PLcom/android/server/policy/PhoneWindowManager;-><clinit>()V
PLcom/android/server/policy/PhoneWindowManager;-><init>()V
-PLcom/android/server/policy/PhoneWindowManager;->adjustConfigurationLw(Landroid/content/res/Configuration;II)V
+HPLcom/android/server/policy/PhoneWindowManager;->applyKeyguardOcclusionChange()I
PLcom/android/server/policy/PhoneWindowManager;->applyLidSwitchState()V
PLcom/android/server/policy/PhoneWindowManager;->bindKeyguard()V
-PLcom/android/server/policy/PhoneWindowManager;->canDismissBootAnimation()Z
-PLcom/android/server/policy/PhoneWindowManager;->checkAddPermission(IZLjava/lang/String;[I)I
-PLcom/android/server/policy/PhoneWindowManager;->enableScreen(Lcom/android/server/policy/WindowManagerPolicy$ScreenOnListener;Z)V
-PLcom/android/server/policy/PhoneWindowManager;->enableScreenAfterBoot()V
-PLcom/android/server/policy/PhoneWindowManager;->finishKeyguardDrawn()V
-PLcom/android/server/policy/PhoneWindowManager;->finishScreenTurningOn()V
-PLcom/android/server/policy/PhoneWindowManager;->finishWindowsDrawn(I)V
-PLcom/android/server/policy/PhoneWindowManager;->finishedWakingUp(II)V
-PLcom/android/server/policy/PhoneWindowManager;->getDreamManagerInternal()Landroid/service/dreams/DreamManagerInternal;
-PLcom/android/server/policy/PhoneWindowManager;->getKeyguardDrawnTimeout()J
-PLcom/android/server/policy/PhoneWindowManager;->getLidBehavior()I
-PLcom/android/server/policy/PhoneWindowManager;->getMaxMultiPressStemPrimaryCount()I
-PLcom/android/server/policy/PhoneWindowManager;->getWallpaperManagerInternal()Lcom/android/server/wallpaper/WallpaperManagerInternal;
-PLcom/android/server/policy/PhoneWindowManager;->handleTransitionForKeyguardLw(ZZ)I
-PLcom/android/server/policy/PhoneWindowManager;->hasLongPressOnBackBehavior()Z
-PLcom/android/server/policy/PhoneWindowManager;->hasStemPrimaryBehavior()Z
-PLcom/android/server/policy/PhoneWindowManager;->inKeyguardRestrictedKeyInputMode()Z
+PLcom/android/server/policy/PhoneWindowManager;->checkAddPermission(IZLjava/lang/String;[II)I
+PLcom/android/server/policy/PhoneWindowManager;->createHomeDockIntent()Landroid/content/Intent;
+PLcom/android/server/policy/PhoneWindowManager;->dismissKeyboardShortcutsMenu()V
+PLcom/android/server/policy/PhoneWindowManager;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/policy/PhoneWindowManager;->dumpDebug(Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/policy/PhoneWindowManager;->enableKeyguard(Z)V
+PLcom/android/server/policy/PhoneWindowManager;->enableScreen(Lcom/android/server/display/DisplayPowerController$ScreenOnUnblocker;Z)V
+HPLcom/android/server/policy/PhoneWindowManager;->finishedGoingToSleep(II)V
+PLcom/android/server/policy/PhoneWindowManager;->finishedWakingUp(I)V
+PLcom/android/server/policy/PhoneWindowManager;->getMaxMultiPressPowerCount()I
+PLcom/android/server/policy/PhoneWindowManager;->getResolvedLongPressOnPowerBehavior()I
+PLcom/android/server/policy/PhoneWindowManager;->getStatusBarManagerInternal()Lcom/android/server/statusbar/StatusBarManagerService$1;
+PLcom/android/server/policy/PhoneWindowManager;->getStatusBarService()Lcom/android/internal/statusbar/IStatusBarService;
+PLcom/android/server/policy/PhoneWindowManager;->getTelecommService()Landroid/telecom/TelecomManager;
+HPLcom/android/server/policy/PhoneWindowManager;->handleCameraGesture(Landroid/view/KeyEvent;Z)Z
+PLcom/android/server/policy/PhoneWindowManager;->handleKeyGestureEvent(Landroid/hardware/input/KeyGestureEvent;Landroid/os/IBinder;)Z
PLcom/android/server/policy/PhoneWindowManager;->init(Landroid/content/Context;Lcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;)V
-HPLcom/android/server/policy/PhoneWindowManager;->init(Lcom/android/server/policy/PhoneWindowManager$Injector;)V
-PLcom/android/server/policy/PhoneWindowManager;->initKeyCombinationRules()V
-PLcom/android/server/policy/PhoneWindowManager;->initSingleKeyGestureRules(Landroid/os/Looper;)V
-PLcom/android/server/policy/PhoneWindowManager;->initializeHdmiState()V
+PLcom/android/server/policy/PhoneWindowManager;->init(Lcom/android/server/policy/PhoneWindowManager$Injector;)V
PLcom/android/server/policy/PhoneWindowManager;->initializeHdmiStateInternal()V
-PLcom/android/server/policy/PhoneWindowManager;->isKeyguardHostWindow(Landroid/view/WindowManager$LayoutParams;)Z
-PLcom/android/server/policy/PhoneWindowManager;->isKeyguardLocked()Z
+PLcom/android/server/policy/PhoneWindowManager;->interceptKeyBeforeDispatching(Landroid/view/KeyEvent;Landroid/os/IBinder;)J
+HPLcom/android/server/policy/PhoneWindowManager;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I
+PLcom/android/server/policy/PhoneWindowManager;->interceptPowerKeyBeforeDispatching(Landroid/view/KeyEvent;Landroid/os/IBinder;)Z
+PLcom/android/server/policy/PhoneWindowManager;->isKeyEventForCurrentUser(I)Z
PLcom/android/server/policy/PhoneWindowManager;->isKeyguardOccluded()Z
-HPLcom/android/server/policy/PhoneWindowManager;->isKeyguardSecure(I)Z
+HPLcom/android/server/policy/PhoneWindowManager;->isKeyguardSecure(I)Z+]Lcom/android/internal/widget/LockPatternUtils;Lcom/android/internal/widget/LockPatternUtils;
HPLcom/android/server/policy/PhoneWindowManager;->isKeyguardShowing()Z
HPLcom/android/server/policy/PhoneWindowManager;->isKeyguardShowingAndNotOccluded()Z
-PLcom/android/server/policy/PhoneWindowManager;->isScreenOn()Z
-PLcom/android/server/policy/PhoneWindowManager;->keyguardOn()Z
-PLcom/android/server/policy/PhoneWindowManager;->lambda$updateSettings$1()V
-PLcom/android/server/policy/PhoneWindowManager;->notifyLidSwitchChanged(JZ)V
-PLcom/android/server/policy/PhoneWindowManager;->okToAnimate(Z)Z
-PLcom/android/server/policy/PhoneWindowManager;->onDefaultDisplayFocusChangedLw(Lcom/android/server/policy/WindowManagerPolicy$WindowState;)V
-PLcom/android/server/policy/PhoneWindowManager;->onSystemUiStarted()V
-PLcom/android/server/policy/PhoneWindowManager;->readCameraLensCoverState()V
-HPLcom/android/server/policy/PhoneWindowManager;->readConfigurationDependentBehaviors()V
-PLcom/android/server/policy/PhoneWindowManager;->readLidState()V
-PLcom/android/server/policy/PhoneWindowManager;->reportScreenStateToVrManager(Z)V
-PLcom/android/server/policy/PhoneWindowManager;->reportScreenTurnedOnToWallpaper(I)V
-PLcom/android/server/policy/PhoneWindowManager;->reportScreenTurningOnToWallpaper(I)V
+PLcom/android/server/policy/PhoneWindowManager;->isUserSetupComplete()Z
+PLcom/android/server/policy/PhoneWindowManager;->isValidGlobalKey(I)Z
+HPLcom/android/server/policy/PhoneWindowManager;->keyguardOn()Z
+PLcom/android/server/policy/PhoneWindowManager;->launchAssistAction(IILjava/lang/String;J)V
+PLcom/android/server/policy/PhoneWindowManager;->launchHomeFromHotKey(IZZ)V
+PLcom/android/server/policy/PhoneWindowManager;->notifyKeyGestureCompleted(Landroid/view/KeyEvent;I)V
+PLcom/android/server/policy/PhoneWindowManager;->notifyKeyGestureCompletedOnActionUp(Landroid/view/KeyEvent;I)V
+HPLcom/android/server/policy/PhoneWindowManager;->okToAnimate(Z)Z
+PLcom/android/server/policy/PhoneWindowManager;->onKeyguardOccludedChangedLw(Z)V
+PLcom/android/server/policy/PhoneWindowManager;->performHapticFeedback(IILjava/lang/String;)V
+PLcom/android/server/policy/PhoneWindowManager;->prepareToSendSystemKeyToApplication(Landroid/view/KeyEvent;Landroid/os/IBinder;)Z
+PLcom/android/server/policy/PhoneWindowManager;->readConfigurationDependentBehaviors()V
+PLcom/android/server/policy/PhoneWindowManager;->screenTurnedOff(IZ)V
PLcom/android/server/policy/PhoneWindowManager;->screenTurnedOn(I)V
-PLcom/android/server/policy/PhoneWindowManager;->screenTurningOn(ILcom/android/server/policy/WindowManagerPolicy$ScreenOnListener;)V
-HPLcom/android/server/policy/PhoneWindowManager;->setAllowLockscreenWhenOn(IZ)V
-PLcom/android/server/policy/PhoneWindowManager;->setDefaultDisplay(Lcom/android/server/policy/WindowManagerPolicy$DisplayContentInfo;)V
-PLcom/android/server/policy/PhoneWindowManager;->setDismissImeOnBackKeyPressed(Z)V
-PLcom/android/server/policy/PhoneWindowManager;->setSafeMode(Z)V
-PLcom/android/server/policy/PhoneWindowManager;->setTopFocusedDisplay(I)V
+PLcom/android/server/policy/PhoneWindowManager;->screenTurningOff(ILcom/android/server/display/DisplayPowerController$ScreenOffUnblocker;)V
+HPLcom/android/server/policy/PhoneWindowManager;->screenTurningOn(ILcom/android/server/display/DisplayPowerController$ScreenOnUnblocker;)V
+PLcom/android/server/policy/PhoneWindowManager;->sendSystemKeyToStatusBarAsync(Landroid/view/KeyEvent;)V
+PLcom/android/server/policy/PhoneWindowManager;->setDeferredKeyActionsExecutableAsync(IJ)V
+PLcom/android/server/policy/PhoneWindowManager;->shouldDispatchInputWhenNonInteractive(I)Z
PLcom/android/server/policy/PhoneWindowManager;->shouldEnableWakeGestureLp()Z
+PLcom/android/server/policy/PhoneWindowManager;->showGlobalActions()V
+PLcom/android/server/policy/PhoneWindowManager;->showGlobalActionsInternal()V
+PLcom/android/server/policy/PhoneWindowManager;->startActivityAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Z)V
+PLcom/android/server/policy/PhoneWindowManager;->startDockOrHome(Ljava/lang/String;IZZ)V
+PLcom/android/server/policy/PhoneWindowManager;->startedGoingToSleep(II)V
PLcom/android/server/policy/PhoneWindowManager;->startedWakingUp(II)V
PLcom/android/server/policy/PhoneWindowManager;->systemBooted()V
PLcom/android/server/policy/PhoneWindowManager;->systemReady()V
-HPLcom/android/server/policy/PhoneWindowManager;->updateLockScreenTimeout()V
-PLcom/android/server/policy/PhoneWindowManager;->updateRotation(Z)V
-PLcom/android/server/policy/PhoneWindowManager;->updateScreenOffSleepToken(ZZ)V
-PLcom/android/server/policy/PhoneWindowManager;->updateSettings()V
-HPLcom/android/server/policy/PhoneWindowManager;->updateSettings(Landroid/os/Handler;)V
-PLcom/android/server/policy/PhoneWindowManager;->updateUiMode()V
+HPLcom/android/server/policy/PhoneWindowManager;->updateLockScreenTimeout()V+]Ljava/util/HashSet;Ljava/util/HashSet;
+PLcom/android/server/policy/PhoneWindowManager;->updateSettings(Lcom/android/server/policy/PhoneWindowManager$PolicyHandler;)V
PLcom/android/server/policy/PhoneWindowManager;->updateWakeGestureListenerLp()V
-PLcom/android/server/policy/PhoneWindowManager;->userActivity(II)V
+PLcom/android/server/policy/PhoneWindowManager;->wakeUpFromWakeKey(IJZ)V
+PLcom/android/server/policy/PhoneWindowManager;->wakeUpFromWakeKey(Landroid/view/KeyEvent;)V
PLcom/android/server/policy/SideFpsEventHandler$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/policy/SideFpsEventHandler;)V
-PLcom/android/server/policy/SideFpsEventHandler$$ExternalSyntheticLambda1;-><init>()V
PLcom/android/server/policy/SideFpsEventHandler$1;-><init>(Lcom/android/server/policy/SideFpsEventHandler;)V
-PLcom/android/server/policy/SideFpsEventHandler;-><init>(Landroid/content/Context;Landroid/os/Handler;Landroid/os/PowerManager;)V
+PLcom/android/server/policy/SideFpsEventHandler$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/policy/SideFpsEventHandler;-><init>(Landroid/content/Context;Landroid/os/Handler;Landroid/os/PowerManager;Lcom/android/server/policy/SideFpsEventHandler$DialogProvider;)V
-PLcom/android/server/policy/SideFpsEventHandler;->onFingerprintSensorReady()V
PLcom/android/server/policy/SingleKeyGestureDetector$KeyHandler;-><init>(Lcom/android/server/policy/SingleKeyGestureDetector;Landroid/os/Looper;)V
-PLcom/android/server/policy/SingleKeyGestureDetector$SingleKeyRule;-><init>(I)V
-PLcom/android/server/policy/SingleKeyGestureDetector$SingleKeyRule;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/policy/SingleKeyGestureDetector$KeyHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/policy/SingleKeyGestureDetector$MessageObject;-><init>(Lcom/android/server/policy/PhoneWindowManager$BackKeyRule;IILandroid/view/KeyEvent;)V
PLcom/android/server/policy/SingleKeyGestureDetector;-><clinit>()V
PLcom/android/server/policy/SingleKeyGestureDetector;-><init>(Landroid/os/Looper;)V
-PLcom/android/server/policy/SingleKeyGestureDetector;->addRule(Lcom/android/server/policy/SingleKeyGestureDetector$SingleKeyRule;)V
-PLcom/android/server/policy/SingleKeyGestureDetector;->get(Landroid/content/Context;Landroid/os/Looper;)Lcom/android/server/policy/SingleKeyGestureDetector;
-PLcom/android/server/policy/SoftRestrictedPermissionPolicy$1;-><init>()V
-HPLcom/android/server/policy/SoftRestrictedPermissionPolicy$2;-><init>(ZIZZZZZZ)V
+PLcom/android/server/policy/SingleKeyGestureDetector;->addRule(Lcom/android/server/policy/PhoneWindowManager$BackKeyRule;)V
+HPLcom/android/server/policy/SingleKeyGestureDetector;->interceptKey(Landroid/view/KeyEvent;ZZ)V
+PLcom/android/server/policy/SingleKeyGestureDetector;->reset()V
+PLcom/android/server/policy/SoftRestrictedPermissionPolicy$2;-><init>(ZIZZZZZZ)V
PLcom/android/server/policy/SoftRestrictedPermissionPolicy$2;->getExtraAppOpCode()I
-HPLcom/android/server/policy/SoftRestrictedPermissionPolicy$2;->mayAllowExtraAppOp()Z
+PLcom/android/server/policy/SoftRestrictedPermissionPolicy$2;->mayAllowExtraAppOp()Z
PLcom/android/server/policy/SoftRestrictedPermissionPolicy$2;->mayDenyExtraAppOpIfGranted()Z
PLcom/android/server/policy/SoftRestrictedPermissionPolicy$2;->mayGrantPermission()Z
-HPLcom/android/server/policy/SoftRestrictedPermissionPolicy$3;-><init>(ZI)V
+PLcom/android/server/policy/SoftRestrictedPermissionPolicy$3;-><init>(IZ)V
PLcom/android/server/policy/SoftRestrictedPermissionPolicy$3;->mayGrantPermission()Z
PLcom/android/server/policy/SoftRestrictedPermissionPolicy;-><clinit>()V
-PLcom/android/server/policy/SoftRestrictedPermissionPolicy;-><init>()V
-HPLcom/android/server/policy/SoftRestrictedPermissionPolicy;->forPermission(Landroid/content/Context;Landroid/content/pm/ApplicationInfo;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/os/UserHandle;Ljava/lang/String;)Lcom/android/server/policy/SoftRestrictedPermissionPolicy;
+PLcom/android/server/policy/SoftRestrictedPermissionPolicy;->forPermission(Landroid/content/Context;Landroid/content/pm/ApplicationInfo;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/os/UserHandle;Ljava/lang/String;)Lcom/android/server/policy/SoftRestrictedPermissionPolicy;
PLcom/android/server/policy/SoftRestrictedPermissionPolicy;->getExtraAppOpCode()I
-PLcom/android/server/policy/SoftRestrictedPermissionPolicy;->getForcedScopedStorageAppWhitelist()[Ljava/lang/String;
-HPLcom/android/server/policy/SoftRestrictedPermissionPolicy;->getMinimumTargetSDK(Landroid/content/Context;Landroid/content/pm/ApplicationInfo;Landroid/os/UserHandle;)I
-HPLcom/android/server/policy/SoftRestrictedPermissionPolicy;->hasUidRequestedLegacyExternalStorage(ILandroid/content/Context;)Z
-HPLcom/android/server/policy/SoftRestrictedPermissionPolicy;->hasWriteMediaStorageGrantedForUid(ILandroid/content/Context;)Z
+PLcom/android/server/policy/SoftRestrictedPermissionPolicy;->getMinimumTargetSDK(Landroid/content/Context;Landroid/content/pm/ApplicationInfo;Landroid/os/UserHandle;)I
PLcom/android/server/policy/TalkbackShortcutController;-><init>(Landroid/content/Context;)V
PLcom/android/server/policy/TalkbackShortcutController;->isTalkBackShortcutGestureEnabled()Z
-PLcom/android/server/policy/WakeGestureListener$1;-><init>(Lcom/android/server/policy/WakeGestureListener;)V
-PLcom/android/server/policy/WakeGestureListener$2;-><init>(Lcom/android/server/policy/WakeGestureListener;)V
-PLcom/android/server/policy/WakeGestureListener;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
-PLcom/android/server/policy/WakeGestureListener;->cancelWakeUpTrigger()V
-PLcom/android/server/policy/WakeGestureListener;->isSupported()Z
-PLcom/android/server/policy/WindowManagerPolicy;->getMaxWindowLayer()I
+PLcom/android/server/policy/WakeGestureListener$1;-><init>(Lcom/android/server/policy/PhoneWindowManager$MyWakeGestureListener;)V
+PLcom/android/server/policy/WakeGestureListener$2;-><init>(Lcom/android/server/policy/PhoneWindowManager$MyWakeGestureListener;)V
HPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerFromTypeLw(I)I
-HPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerFromTypeLw(IZ)I
-PLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerFromTypeLw(IZZ)I
-HPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerLw(Lcom/android/server/policy/WindowManagerPolicy$WindowState;)I
+HPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerFromTypeLw(IZZ)I
PLcom/android/server/policy/WindowWakeUpPolicy$LocalService;-><init>(Lcom/android/server/policy/WindowWakeUpPolicy;)V
-PLcom/android/server/policy/WindowWakeUpPolicy$LocalService;-><init>(Lcom/android/server/policy/WindowWakeUpPolicy;Lcom/android/server/policy/WindowWakeUpPolicy$LocalService-IA;)V
PLcom/android/server/policy/WindowWakeUpPolicy$LocalService;->setInputWakeUpDelegate(Lcom/android/server/policy/WindowWakeUpPolicyInternal$InputWakeUpDelegate;)V
-PLcom/android/server/policy/WindowWakeUpPolicy;->-$$Nest$fputmInputWakeUpDelegate(Lcom/android/server/policy/WindowWakeUpPolicy;Lcom/android/server/policy/WindowWakeUpPolicyInternal$InputWakeUpDelegate;)V
-PLcom/android/server/policy/WindowWakeUpPolicy;-><init>(Landroid/content/Context;)V
PLcom/android/server/policy/WindowWakeUpPolicy;-><init>(Landroid/content/Context;Lcom/android/internal/os/Clock;)V
+PLcom/android/server/policy/WindowWakeUpPolicy;->canWakeUp(Z)Z
PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$1;-><init>(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$1;->onDreamingStarted()V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$1;->onDreamingStopped()V
PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$2;-><init>(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)V
PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardShowDelegate;-><init>(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener;)V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardShowDelegate;-><init>(Lcom/android/server/policy/PhoneWindowManager$1;)V
PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardShowDelegate;->onDrawn()V
-PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardState;-><init>()V
-PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardState;->reset()V
-PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->-$$Nest$fgetmCallback(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;
-PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->-$$Nest$fgetmContext(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)Landroid/content/Context;
-PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->-$$Nest$fgetmDrawnListenerWhenConnect(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener;
-PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->-$$Nest$fgetmKeyguardState(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardState;
-PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->-$$Nest$fputmDrawnListenerWhenConnect(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener;)V
-PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;-><init>(Landroid/content/Context;Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;)V
-PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->bindService(Landroid/content/Context;)V
-PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->hasKeyguard()Z
-HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isInputRestricted()Z
-HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isOccluded()Z
-HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isSecure(I)Z
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;-><init>(Landroid/content/Context;Lcom/android/server/policy/PhoneWindowManager$1;)V
HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isShowing()Z
-PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onBootCompleted()V
-PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onFinishedWakingUp()V
-PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onScreenTurnedOn()V
-PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onScreenTurningOn(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener;)V
-PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onStartedWakingUp(IZ)V
-PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onSystemReady()V
-PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;-><init>(Landroid/content/Context;Lcom/android/internal/policy/IKeyguardService;Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;)V
-PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->isInputRestricted()Z
-HPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->isSecure(I)Z
-HPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->isShowing()Z
PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onBootCompleted()V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onDreamingStarted()V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onDreamingStopped()V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onFinishedGoingToSleep(IZ)V
PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onFinishedWakingUp()V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onScreenTurnedOff()V
PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onScreenTurnedOn()V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onScreenTurningOff()V
PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onScreenTurningOn(Lcom/android/internal/policy/IKeyguardDrawnCallback;)V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onShortPowerPressedGoHome()V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onStartedGoingToSleep(I)V
PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onStartedWakingUp(IZ)V
PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onSystemReady()V
-PLcom/android/server/policy/keyguard/KeyguardStateMonitor;-><init>(Landroid/content/Context;Lcom/android/internal/policy/IKeyguardService;Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;)V
-PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isInputRestricted()Z
-HPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isSecure(I)Z
-HPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isShowing()Z
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->setKeyguardEnabled(Z)V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->setOccluded(ZZ)V
+PLcom/android/server/policy/keyguard/KeyguardStateMonitor;-><init>(Landroid/content/Context;Lcom/android/internal/policy/IKeyguardService;Lcom/android/server/policy/PhoneWindowManager$1;)V
PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onInputRestrictedStateChanged(Z)V
PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onShowingStateChanged(ZI)V
PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onSimSecureStateChanged(Z)V
PLcom/android/server/policy/role/RoleServicePlatformHelperImpl$$ExternalSyntheticLambda0;-><init>(Ljava/io/DataOutputStream;Landroid/content/pm/PackageManagerInternal;I)V
-HPLcom/android/server/policy/role/RoleServicePlatformHelperImpl$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/policy/role/RoleServicePlatformHelperImpl$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V+]Landroid/content/pm/Signature;Landroid/content/pm/Signature;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/io/DataOutputStream;Ljava/io/DataOutputStream;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet;
PLcom/android/server/policy/role/RoleServicePlatformHelperImpl$MessageDigestOutputStream;-><init>()V
-PLcom/android/server/policy/role/RoleServicePlatformHelperImpl$MessageDigestOutputStream;->getDigestAsString()Ljava/lang/String;
PLcom/android/server/policy/role/RoleServicePlatformHelperImpl$MessageDigestOutputStream;->write([BII)V
-PLcom/android/server/policy/role/RoleServicePlatformHelperImpl;->$r8$lambda$iHIoFGt-sugSqlklSHHOwdIQL9Y(Ljava/io/DataOutputStream;Landroid/content/pm/PackageManagerInternal;ILcom/android/server/pm/pkg/AndroidPackage;)V
-PLcom/android/server/policy/role/RoleServicePlatformHelperImpl;-><clinit>()V
PLcom/android/server/policy/role/RoleServicePlatformHelperImpl;-><init>(Landroid/content/Context;)V
PLcom/android/server/policy/role/RoleServicePlatformHelperImpl;->computePackageStateHash(I)Ljava/lang/String;
-HPLcom/android/server/policy/role/RoleServicePlatformHelperImpl;->lambda$computePackageStateHash$0(Ljava/io/DataOutputStream;Landroid/content/pm/PackageManagerInternal;ILcom/android/server/pm/pkg/AndroidPackage;)V
-HSPLcom/android/server/power/AmbientDisplaySuppressionController;-><init>(Lcom/android/server/power/AmbientDisplaySuppressionController$AmbientDisplaySuppressionChangedCallback;)V
+HSPLcom/android/server/power/AmbientDisplaySuppressionController;-><init>(Lcom/android/server/power/PowerManagerService$4;)V
+PLcom/android/server/power/AmbientDisplaySuppressionController;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/power/AmbientDisplaySuppressionController;->isSuppressed()Z
PLcom/android/server/power/AttentionDetector$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/AttentionDetector;)V
PLcom/android/server/power/AttentionDetector$1;-><init>(Lcom/android/server/power/AttentionDetector;Landroid/os/Handler;Landroid/content/Context;)V
PLcom/android/server/power/AttentionDetector$UserSwitchObserver;-><init>(Lcom/android/server/power/AttentionDetector;)V
-PLcom/android/server/power/AttentionDetector$UserSwitchObserver;-><init>(Lcom/android/server/power/AttentionDetector;Lcom/android/server/power/AttentionDetector$UserSwitchObserver-IA;)V
-HSPLcom/android/server/power/AttentionDetector;-><init>(Ljava/lang/Runnable;Ljava/lang/Object;)V
-PLcom/android/server/power/AttentionDetector;->cancelCurrentRequestIfAny()V
+HSPLcom/android/server/power/AttentionDetector;-><init>(Lcom/android/server/power/PowerManagerService$$ExternalSyntheticLambda0;Ljava/lang/Object;)V
+PLcom/android/server/power/AttentionDetector;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/power/AttentionDetector;->getMaxExtensionMillis()J
PLcom/android/server/power/AttentionDetector;->getPostDimCheckDurationMillis()J
PLcom/android/server/power/AttentionDetector;->getPreDimCheckDurationMillis()J
-PLcom/android/server/power/AttentionDetector;->onUserActivity(JI)I
+PLcom/android/server/power/AttentionDetector;->isAttentionServiceSupported()Z
PLcom/android/server/power/AttentionDetector;->readValuesFromDeviceConfig()V
-PLcom/android/server/power/AttentionDetector;->resetConsecutiveExtensionCount()V
+HPLcom/android/server/power/AttentionDetector;->resetConsecutiveExtensionCount()V
PLcom/android/server/power/AttentionDetector;->systemReady(Landroid/content/Context;)V
PLcom/android/server/power/AttentionDetector;->updateEnabledFromSettings(Landroid/content/Context;)V
-HPLcom/android/server/power/AttentionDetector;->updateUserActivity(JJ)J
PLcom/android/server/power/FaceDownDetector$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/FaceDownDetector;)V
HSPLcom/android/server/power/FaceDownDetector$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/FaceDownDetector;)V
PLcom/android/server/power/FaceDownDetector$$ExternalSyntheticLambda1;->run()V
-HSPLcom/android/server/power/FaceDownDetector$ExponentialMovingAverage;-><init>(Lcom/android/server/power/FaceDownDetector;F)V
-HSPLcom/android/server/power/FaceDownDetector$ExponentialMovingAverage;-><init>(Lcom/android/server/power/FaceDownDetector;FF)V
+HSPLcom/android/server/power/FaceDownDetector$ExponentialMovingAverage;-><init>()V
HSPLcom/android/server/power/FaceDownDetector$ScreenStateReceiver;-><init>(Lcom/android/server/power/FaceDownDetector;)V
-HSPLcom/android/server/power/FaceDownDetector$ScreenStateReceiver;-><init>(Lcom/android/server/power/FaceDownDetector;Lcom/android/server/power/FaceDownDetector$ScreenStateReceiver-IA;)V
-PLcom/android/server/power/FaceDownDetector;->$r8$lambda$caCdnIB7OSGcXiz4jSr9FVtZVGw(Lcom/android/server/power/FaceDownDetector;)V
-HSPLcom/android/server/power/FaceDownDetector;-><init>(Ljava/util/function/Consumer;)V
-PLcom/android/server/power/FaceDownDetector;->getAccelerationThreshold()F
-PLcom/android/server/power/FaceDownDetector;->getFloatFlagValue(Ljava/lang/String;FFF)F
-PLcom/android/server/power/FaceDownDetector;->getLongFlagValue(Ljava/lang/String;JJJ)J
-PLcom/android/server/power/FaceDownDetector;->getSensorMaxLatencyMicros()I
-PLcom/android/server/power/FaceDownDetector;->getTimeThreshold()Ljava/time/Duration;
-PLcom/android/server/power/FaceDownDetector;->getUserInteractionBackoffMillis()J
-PLcom/android/server/power/FaceDownDetector;->getZAccelerationThreshold()F
+HSPLcom/android/server/power/FaceDownDetector;-><init>(Lcom/android/server/power/PowerManagerService$$ExternalSyntheticLambda1;)V
+PLcom/android/server/power/FaceDownDetector;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/power/FaceDownDetector;->getFloatFlagValue(FFFLjava/lang/String;)F
PLcom/android/server/power/FaceDownDetector;->isEnabled()Z
-PLcom/android/server/power/FaceDownDetector;->lambda$new$0()V
PLcom/android/server/power/FaceDownDetector;->readValuesFromDeviceConfig()V
-PLcom/android/server/power/FaceDownDetector;->systemReady(Landroid/content/Context;)V
PLcom/android/server/power/FaceDownDetector;->updateActiveState()V
-PLcom/android/server/power/FaceDownDetector;->userActivity(I)V
+PLcom/android/server/power/FrameworkStatsLogger$WakelockEventType;-><clinit>()V
HSPLcom/android/server/power/InattentiveSleepWarningController;-><init>()V
-PLcom/android/server/power/InattentiveSleepWarningController;->isShown()Z
HSPLcom/android/server/power/LowPowerStandbyController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/LowPowerStandbyController;)V
-HSPLcom/android/server/power/LowPowerStandbyController$$ExternalSyntheticLambda2;-><init>()V
-HSPLcom/android/server/power/LowPowerStandbyController$1;-><init>(Lcom/android/server/power/LowPowerStandbyController;)V
-HSPLcom/android/server/power/LowPowerStandbyController$2;-><init>(Lcom/android/server/power/LowPowerStandbyController;)V
-HSPLcom/android/server/power/LowPowerStandbyController$3;-><init>(Lcom/android/server/power/LowPowerStandbyController;)V
+HSPLcom/android/server/power/LowPowerStandbyController$1;-><init>(Lcom/android/server/power/LowPowerStandbyController;I)V
HSPLcom/android/server/power/LowPowerStandbyController$DeviceConfigWrapper;-><init>()V
HSPLcom/android/server/power/LowPowerStandbyController$LocalService;-><init>(Lcom/android/server/power/LowPowerStandbyController;)V
-HSPLcom/android/server/power/LowPowerStandbyController$LocalService;-><init>(Lcom/android/server/power/LowPowerStandbyController;Lcom/android/server/power/LowPowerStandbyController$LocalService-IA;)V
HSPLcom/android/server/power/LowPowerStandbyController$LowPowerStandbyHandler;-><init>(Lcom/android/server/power/LowPowerStandbyController;Landroid/os/Looper;)V
HSPLcom/android/server/power/LowPowerStandbyController$PhoneCallServiceTracker;-><init>(Lcom/android/server/power/LowPowerStandbyController;)V
-HSPLcom/android/server/power/LowPowerStandbyController$RealClock;-><init>()V
-HSPLcom/android/server/power/LowPowerStandbyController$RealClock;-><init>(Lcom/android/server/power/LowPowerStandbyController$RealClock-IA;)V
-HSPLcom/android/server/power/LowPowerStandbyController$SettingsObserver;-><init>(Lcom/android/server/power/LowPowerStandbyController;Landroid/os/Handler;)V
+HSPLcom/android/server/power/LowPowerStandbyController$SettingsObserver;-><init>(Lcom/android/server/power/LowPowerStandbyController;Lcom/android/server/power/LowPowerStandbyController$LowPowerStandbyHandler;)V
HSPLcom/android/server/power/LowPowerStandbyController$TempAllowlistChangeListener;-><init>(Lcom/android/server/power/LowPowerStandbyController;)V
HSPLcom/android/server/power/LowPowerStandbyController;-><clinit>()V
-HSPLcom/android/server/power/LowPowerStandbyController;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
HSPLcom/android/server/power/LowPowerStandbyController;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/power/LowPowerStandbyController$Clock;Lcom/android/server/power/LowPowerStandbyController$DeviceConfigWrapper;Ljava/util/function/Supplier;Ljava/io/File;)V
+PLcom/android/server/power/LowPowerStandbyController;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/power/LowPowerStandbyController;->getActiveStandbyPorts()Ljava/util/List;
+PLcom/android/server/power/LowPowerStandbyController;->getAllowlistUidsLocked()[I
+PLcom/android/server/power/LowPowerStandbyController;->getPolicy()Landroid/os/PowerManager$LowPowerStandbyPolicy;
+PLcom/android/server/power/LowPowerStandbyController;->isEnabled()Z
PLcom/android/server/power/LowPowerStandbyController;->systemReady()V
-HSPLcom/android/server/power/LowPowerStandbyControllerInternal;-><init>()V
-PLcom/android/server/power/Notifier$2;-><init>(Lcom/android/server/power/Notifier;)V
-PLcom/android/server/power/Notifier$3;-><init>(Lcom/android/server/power/Notifier;)V
+PLcom/android/server/power/Notifier$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/Notifier;I)V
+PLcom/android/server/power/Notifier$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/Notifier;II)V
+HPLcom/android/server/power/Notifier$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/power/Notifier$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/Notifier;III)V
+HPLcom/android/server/power/Notifier$$ExternalSyntheticLambda1;->run()V
+HPLcom/android/server/power/Notifier$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/power/Notifier;ZLjava/lang/String;IIILandroid/os/WorkSource;Ljava/lang/String;Ljava/lang/String;JLandroid/os/IWakeLockCallback;)V
+HPLcom/android/server/power/Notifier$$ExternalSyntheticLambda2;->run()V+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;
+HPLcom/android/server/power/Notifier$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/power/Notifier;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V
+HPLcom/android/server/power/Notifier$$ExternalSyntheticLambda5;->run()V
+PLcom/android/server/power/Notifier$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/power/Notifier;I)V
+HPLcom/android/server/power/Notifier$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/power/Notifier$1;-><init>(Lcom/android/server/power/Notifier;I)V
+PLcom/android/server/power/Notifier$1;->run()V
+PLcom/android/server/power/Notifier$2;-><init>(Lcom/android/server/power/Notifier;I)V
+HPLcom/android/server/power/Notifier$2;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
PLcom/android/server/power/Notifier$Interactivity;-><init>()V
-PLcom/android/server/power/Notifier$Interactivity;-><init>(Lcom/android/server/power/Notifier$Interactivity-IA;)V
PLcom/android/server/power/Notifier$NotifierHandler;-><init>(Lcom/android/server/power/Notifier;Landroid/os/Looper;)V
-HPLcom/android/server/power/Notifier$NotifierHandler;->handleMessage(Landroid/os/Message;)V
-HPLcom/android/server/power/Notifier;->-$$Nest$mscreenPolicyChanging(Lcom/android/server/power/Notifier;II)V
-PLcom/android/server/power/Notifier;->-$$Nest$msendUserActivity(Lcom/android/server/power/Notifier;II)V
+HPLcom/android/server/power/Notifier$NotifierHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/telephony/TelephonyManager;Landroid/telephony/TelephonyManager;
PLcom/android/server/power/Notifier;-><clinit>()V
-HPLcom/android/server/power/Notifier;-><init>(Landroid/os/Looper;Landroid/content/Context;Lcom/android/internal/app/IBatteryStats;Lcom/android/server/power/SuspendBlocker;Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/power/FaceDownDetector;Lcom/android/server/power/ScreenUndimDetector;Ljava/util/concurrent/Executor;)V
-PLcom/android/server/power/Notifier;->createScreenOnOffBroadcastOptions()Landroid/os/Bundle;
-PLcom/android/server/power/Notifier;->getBatteryStatsWakeLockMonitorType(I)I
-PLcom/android/server/power/Notifier;->notifyWakeLockListener(Landroid/os/IWakeLockCallback;Ljava/lang/String;Z)V
-HPLcom/android/server/power/Notifier;->onScreenPolicyUpdate(II)V
-PLcom/android/server/power/Notifier;->onUserActivity(III)V
-HPLcom/android/server/power/Notifier;->onWakeLockAcquired(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;)V
-HPLcom/android/server/power/Notifier;->onWakeLockChanging(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;)V
-HPLcom/android/server/power/Notifier;->onWakeLockReleased(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;)V
-HPLcom/android/server/power/Notifier;->screenPolicyChanging(II)V
-PLcom/android/server/power/Notifier;->sendUserActivity(II)V
-PLcom/android/server/power/PowerGroup;-><clinit>()V
-PLcom/android/server/power/PowerGroup;-><init>(ILcom/android/server/power/PowerGroup$PowerGroupListener;Lcom/android/server/power/Notifier;Landroid/hardware/display/DisplayManagerInternal;J)V
-HPLcom/android/server/power/PowerGroup;->getDesiredScreenPolicyLocked(ZZZZZ)I
+PLcom/android/server/power/Notifier;-><init>(Landroid/os/Looper;Landroid/content/Context;Lcom/android/internal/app/IBatteryStats;Lcom/android/server/power/PowerManagerService$SuspendBlockerImpl;Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/power/FaceDownDetector;Lcom/android/server/power/ScreenUndimDetector;Ljava/util/concurrent/Executor;Lcom/android/server/power/feature/PowerManagerFlags;)V
+PLcom/android/server/power/Notifier;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/power/Notifier;->getBatteryStatsWakeLockMonitorType(I)I
+HPLcom/android/server/power/Notifier;->handleLateGlobalInteractiveChange()V
+HPLcom/android/server/power/Notifier;->handleLateInteractiveChange(I)V
+HPLcom/android/server/power/Notifier;->logWakelockStateChanged(ILjava/lang/String;ILandroid/os/WorkSource;Lcom/android/server/power/FrameworkStatsLogger$WakelockEventType;)V
+HPLcom/android/server/power/Notifier;->onGlobalWakefulnessChangeStarted(IIJ)V
+HPLcom/android/server/power/Notifier;->onGroupWakefulnessChangeStarted(IIIJ)V
+HPLcom/android/server/power/Notifier;->onUserActivity(III)V+]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;
+HPLcom/android/server/power/Notifier;->onWakeLockAcquired(IIILandroid/os/IWakeLockCallback;Landroid/os/WorkSource;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/power/Notifier;->onWakeLockReleased(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;I)V
+PLcom/android/server/power/Notifier;->playChargingStartedFeedback(IZ)V
+HPLcom/android/server/power/Notifier;->sendNextBroadcast()V
+HPLcom/android/server/power/Notifier;->updatePendingBroadcastLocked()V
+PLcom/android/server/power/PowerGroup;-><init>(Lcom/android/server/power/PowerManagerService$PowerGroupWakefulnessChangeListener;Lcom/android/server/power/Notifier;Landroid/hardware/display/DisplayManagerInternal;JLcom/android/server/power/feature/PowerManagerFlags;)V
PLcom/android/server/power/PowerGroup;->getGroupId()I
-PLcom/android/server/power/PowerGroup;->getLastSleepTimeLocked()J
PLcom/android/server/power/PowerGroup;->getLastUserActivityTimeLocked()J
PLcom/android/server/power/PowerGroup;->getLastUserActivityTimeNoChangeLightsLocked()J
-PLcom/android/server/power/PowerGroup;->getLastWakeTimeLocked()J
PLcom/android/server/power/PowerGroup;->getUserActivitySummaryLocked()I
-HPLcom/android/server/power/PowerGroup;->getWakeLockSummaryLocked()I
-HPLcom/android/server/power/PowerGroup;->getWakefulnessLocked()I
-HPLcom/android/server/power/PowerGroup;->isBrightOrDimLocked()Z
-PLcom/android/server/power/PowerGroup;->isPolicyBrightLocked()Z
-HPLcom/android/server/power/PowerGroup;->isPoweringOnLocked()Z
-HPLcom/android/server/power/PowerGroup;->isReadyLocked()Z
-PLcom/android/server/power/PowerGroup;->isSandmanSummonedLocked()Z
-HPLcom/android/server/power/PowerGroup;->needSuspendBlockerLocked(ZZ)Z
-PLcom/android/server/power/PowerGroup;->setLastUserActivityTimeLocked(JI)V
-PLcom/android/server/power/PowerGroup;->setLastUserActivityTimeNoChangeLightsLocked(JI)V
-HPLcom/android/server/power/PowerGroup;->setReadyLocked(Z)Z
-PLcom/android/server/power/PowerGroup;->setUserActivitySummaryLocked(I)V
-HPLcom/android/server/power/PowerGroup;->setWakeLockSummaryLocked(I)V
-HPLcom/android/server/power/PowerGroup;->supportsSandmanLocked()Z
-HPLcom/android/server/power/PowerGroup;->updateLocked(FZZIFZLandroid/os/PowerSaveState;ZZZZZZ)Z
-PLcom/android/server/power/PowerGroup;->wakeUpLocked(JILjava/lang/String;ILjava/lang/String;ILcom/android/internal/util/LatencyTracker;)V
+PLcom/android/server/power/PowerGroup;->getWakeLockSummaryLocked()I
+HPLcom/android/server/power/PowerGroup;->setWakefulnessLocked(IJIIILjava/lang/String;Ljava/lang/String;)V
HSPLcom/android/server/power/PowerManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/PowerManagerService;)V
HSPLcom/android/server/power/PowerManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/PowerManagerService;)V
PLcom/android/server/power/PowerManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/power/PowerManagerService;)V
+PLcom/android/server/power/PowerManagerService$$ExternalSyntheticLambda2;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/power/PowerManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/power/PowerManagerService;)V
HSPLcom/android/server/power/PowerManagerService$1;-><init>(Lcom/android/server/power/PowerManagerService;)V
-PLcom/android/server/power/PowerManagerService$1;->acquireSuspendBlocker(Ljava/lang/String;)V
-PLcom/android/server/power/PowerManagerService$1;->onDisplayStateChange(ZZ)V
+HPLcom/android/server/power/PowerManagerService$1;->acquireSuspendBlocker(Ljava/lang/String;)V
+HPLcom/android/server/power/PowerManagerService$1;->onDisplayStateChange(ZZ)V
PLcom/android/server/power/PowerManagerService$1;->onStateChanged()V
-PLcom/android/server/power/PowerManagerService$1;->releaseSuspendBlocker(Ljava/lang/String;)V
+HPLcom/android/server/power/PowerManagerService$1;->releaseSuspendBlocker(Ljava/lang/String;)V
HSPLcom/android/server/power/PowerManagerService$4;-><init>(Lcom/android/server/power/PowerManagerService;)V
PLcom/android/server/power/PowerManagerService$BatteryReceiver;-><init>(Lcom/android/server/power/PowerManagerService;)V
PLcom/android/server/power/PowerManagerService$BatteryReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
HSPLcom/android/server/power/PowerManagerService$BinderService;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/content/Context;)V
-HPLcom/android/server/power/PowerManagerService$BinderService;->acquireWakeLock(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;ILandroid/os/IWakeLockCallback;)V
+HPLcom/android/server/power/PowerManagerService$BinderService;->acquireWakeLock(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;ILandroid/os/IWakeLockCallback;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/os/WorkSource;Landroid/os/WorkSource;
PLcom/android/server/power/PowerManagerService$BinderService;->acquireWakeLockAsync(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;)V
-PLcom/android/server/power/PowerManagerService$BinderService;->getBrightnessConstraint(I)F
+PLcom/android/server/power/PowerManagerService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/power/PowerManagerService$BinderService;->getBrightnessConstraint(II)F
PLcom/android/server/power/PowerManagerService$BinderService;->getLastShutdownReason()I
PLcom/android/server/power/PowerManagerService$BinderService;->getPowerSaveState(I)Landroid/os/PowerSaveState;
-PLcom/android/server/power/PowerManagerService$BinderService;->isDeviceIdleMode()Z
-HSPLcom/android/server/power/PowerManagerService$BinderService;->isInteractive()Z
+PLcom/android/server/power/PowerManagerService$BinderService;->goToSleep(JII)V
+HPLcom/android/server/power/PowerManagerService$BinderService;->isDeviceIdleMode()Z
+HSPLcom/android/server/power/PowerManagerService$BinderService;->isDisplayInteractive(I)Z
PLcom/android/server/power/PowerManagerService$BinderService;->isLightDeviceIdleMode()Z
-HPLcom/android/server/power/PowerManagerService$BinderService;->isPowerSaveMode()Z
-PLcom/android/server/power/PowerManagerService$BinderService;->isWakeLockLevelSupported(I)Z
-HPLcom/android/server/power/PowerManagerService$BinderService;->releaseWakeLock(Landroid/os/IBinder;I)V
+PLcom/android/server/power/PowerManagerService$BinderService;->isLowPowerStandbyEnabled()Z
+PLcom/android/server/power/PowerManagerService$BinderService;->isPowerSaveMode()Z
+PLcom/android/server/power/PowerManagerService$BinderService;->isWakeLockLevelSupportedWithDisplayId(II)Z
+HPLcom/android/server/power/PowerManagerService$BinderService;->releaseWakeLock(Landroid/os/IBinder;I)V+]Landroid/content/Context;Landroid/app/ContextImpl;
PLcom/android/server/power/PowerManagerService$BinderService;->releaseWakeLockAsync(Landroid/os/IBinder;I)V
PLcom/android/server/power/PowerManagerService$BinderService;->setDozeAfterScreenOff(Z)V
PLcom/android/server/power/PowerManagerService$BinderService;->updateWakeLockUids(Landroid/os/IBinder;[I)V
PLcom/android/server/power/PowerManagerService$BinderService;->updateWakeLockUidsAsync(Landroid/os/IBinder;[I)V
HPLcom/android/server/power/PowerManagerService$BinderService;->updateWakeLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;)V
-PLcom/android/server/power/PowerManagerService$BinderService;->userActivity(IJII)V
+HPLcom/android/server/power/PowerManagerService$BinderService;->userActivity(IJII)V
PLcom/android/server/power/PowerManagerService$BinderService;->wakeUp(JILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/power/PowerManagerService$BinderService;->wakeUpWithDisplayId(JILjava/lang/String;Ljava/lang/String;I)V
HSPLcom/android/server/power/PowerManagerService$Constants;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/Handler;)V
-PLcom/android/server/power/PowerManagerService$Constants;->start(Landroid/content/ContentResolver;)V
+PLcom/android/server/power/PowerManagerService$Constants;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/power/PowerManagerService$Constants;->updateConstants()V
PLcom/android/server/power/PowerManagerService$DeviceStateListener;-><init>(Lcom/android/server/power/PowerManagerService;)V
-PLcom/android/server/power/PowerManagerService$DeviceStateListener;->onStateChanged(I)V
+PLcom/android/server/power/PowerManagerService$DeviceStateListener;->onDeviceStateChanged(Landroid/hardware/devicestate/DeviceState;)V
PLcom/android/server/power/PowerManagerService$DisplayGroupPowerChangeListener;-><init>(Lcom/android/server/power/PowerManagerService;)V
-PLcom/android/server/power/PowerManagerService$DisplayGroupPowerChangeListener;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$DisplayGroupPowerChangeListener-IA;)V
-PLcom/android/server/power/PowerManagerService$DockReceiver;-><init>(Lcom/android/server/power/PowerManagerService;)V
-PLcom/android/server/power/PowerManagerService$DockReceiver;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$DockReceiver-IA;)V
+PLcom/android/server/power/PowerManagerService$DockReceiver;-><init>(Lcom/android/server/power/PowerManagerService;I)V
+PLcom/android/server/power/PowerManagerService$DockReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/power/PowerManagerService$DreamManagerStateListener;-><init>(Lcom/android/server/power/PowerManagerService;)V
-PLcom/android/server/power/PowerManagerService$DreamManagerStateListener;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$DreamManagerStateListener-IA;)V
PLcom/android/server/power/PowerManagerService$DreamManagerStateListener;->onKeepDreamingWhenUnpluggingChanged(Z)V
-PLcom/android/server/power/PowerManagerService$DreamReceiver;-><init>(Lcom/android/server/power/PowerManagerService;)V
-PLcom/android/server/power/PowerManagerService$DreamReceiver;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$DreamReceiver-IA;)V
PLcom/android/server/power/PowerManagerService$ForegroundProfileObserver;-><init>(Lcom/android/server/power/PowerManagerService;)V
-PLcom/android/server/power/PowerManagerService$ForegroundProfileObserver;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$ForegroundProfileObserver-IA;)V
-HSPLcom/android/server/power/PowerManagerService$Injector$$ExternalSyntheticLambda0;-><init>()V
-HSPLcom/android/server/power/PowerManagerService$Injector$1;-><init>(Lcom/android/server/power/PowerManagerService$Injector;)V
-HSPLcom/android/server/power/PowerManagerService$Injector$1;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/power/PowerManagerService$Injector$1;->set(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/power/PowerManagerService$Injector$2;-><init>(Lcom/android/server/power/PowerManagerService$Injector;)V
-HPLcom/android/server/power/PowerManagerService$Injector$2;->uptimeMillis()J
-HSPLcom/android/server/power/PowerManagerService$Injector$3;-><init>(Lcom/android/server/power/PowerManagerService$Injector;)V
HSPLcom/android/server/power/PowerManagerService$Injector;-><init>()V
-HSPLcom/android/server/power/PowerManagerService$Injector;->createAmbientDisplayConfiguration(Landroid/content/Context;)Landroid/hardware/display/AmbientDisplayConfiguration;
-HSPLcom/android/server/power/PowerManagerService$Injector;->createAmbientDisplaySuppressionController(Lcom/android/server/power/AmbientDisplaySuppressionController$AmbientDisplaySuppressionChangedCallback;)Lcom/android/server/power/AmbientDisplaySuppressionController;
-HSPLcom/android/server/power/PowerManagerService$Injector;->createClock()Lcom/android/server/power/PowerManagerService$Clock;
-HSPLcom/android/server/power/PowerManagerService$Injector;->createDeviceConfigParameterProvider()Lcom/android/server/display/feature/DeviceConfigParameterProvider;
-HSPLcom/android/server/power/PowerManagerService$Injector;->createFoldGracePeriodProvider()Lcom/android/internal/foldables/FoldGracePeriodProvider;
-HSPLcom/android/server/power/PowerManagerService$Injector;->createHandler(Landroid/os/Looper;Landroid/os/Handler$Callback;)Landroid/os/Handler;
-HSPLcom/android/server/power/PowerManagerService$Injector;->createInattentiveSleepWarningController()Lcom/android/server/power/InattentiveSleepWarningController;
-HSPLcom/android/server/power/PowerManagerService$Injector;->createLowPowerStandbyController(Landroid/content/Context;Landroid/os/Looper;)Lcom/android/server/power/LowPowerStandbyController;
-HSPLcom/android/server/power/PowerManagerService$Injector;->createNativeWrapper()Lcom/android/server/power/PowerManagerService$NativeWrapper;
-PLcom/android/server/power/PowerManagerService$Injector;->createNotifier(Landroid/os/Looper;Landroid/content/Context;Lcom/android/internal/app/IBatteryStats;Lcom/android/server/power/SuspendBlocker;Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/power/FaceDownDetector;Lcom/android/server/power/ScreenUndimDetector;Ljava/util/concurrent/Executor;)Lcom/android/server/power/Notifier;
-HSPLcom/android/server/power/PowerManagerService$Injector;->createPermissionCheckerWrapper()Lcom/android/server/power/PowerManagerService$PermissionCheckerWrapper;
-HSPLcom/android/server/power/PowerManagerService$Injector;->createPowerPropertiesWrapper()Lcom/android/server/power/PowerManagerService$PowerPropertiesWrapper;
-HSPLcom/android/server/power/PowerManagerService$Injector;->createSuspendBlocker(Lcom/android/server/power/PowerManagerService;Ljava/lang/String;)Lcom/android/server/power/SuspendBlocker;
-HSPLcom/android/server/power/PowerManagerService$Injector;->createSystemPropertiesWrapper()Lcom/android/server/power/SystemPropertiesWrapper;
-PLcom/android/server/power/PowerManagerService$Injector;->createWirelessChargerDetector(Landroid/hardware/SensorManager;Lcom/android/server/power/SuspendBlocker;Landroid/os/Handler;)Lcom/android/server/power/WirelessChargerDetector;
-HSPLcom/android/server/power/PowerManagerService$Injector;->getFlags()Lcom/android/server/power/feature/PowerManagerFlags;
-HSPLcom/android/server/power/PowerManagerService$Injector;->invalidateIsInteractiveCaches()V
+HSPLcom/android/server/power/PowerManagerService$Injector;->createSuspendBlocker(Lcom/android/server/power/PowerManagerService;Ljava/lang/String;)Lcom/android/server/power/PowerManagerService$SuspendBlockerImpl;
HSPLcom/android/server/power/PowerManagerService$LocalService;-><init>(Lcom/android/server/power/PowerManagerService;)V
HPLcom/android/server/power/PowerManagerService$LocalService;->finishUidChanges()V
+PLcom/android/server/power/PowerManagerService$LocalService;->getLastGoToSleep()Landroid/os/PowerManager$SleepData;
HSPLcom/android/server/power/PowerManagerService$LocalService;->getLowPowerState(I)Landroid/os/PowerSaveState;
+PLcom/android/server/power/PowerManagerService$LocalService;->interceptPowerKeyDown(Landroid/view/KeyEvent;)Z
HSPLcom/android/server/power/PowerManagerService$LocalService;->registerLowPowerModeObserver(Landroid/os/PowerManagerInternal$LowPowerModeListener;)V
-HPLcom/android/server/power/PowerManagerService$LocalService;->setDeviceIdleTempWhitelist([I)V
+PLcom/android/server/power/PowerManagerService$LocalService;->setDeviceIdleMode(Z)Z
+PLcom/android/server/power/PowerManagerService$LocalService;->setDeviceIdleTempWhitelist([I)V
PLcom/android/server/power/PowerManagerService$LocalService;->setDeviceIdleWhitelist([I)V
+HPLcom/android/server/power/PowerManagerService$LocalService;->setDozeOverrideFromDreamManager(IIFIZ)V
+PLcom/android/server/power/PowerManagerService$LocalService;->setLightDeviceIdleMode(Z)Z
PLcom/android/server/power/PowerManagerService$LocalService;->setMaximumScreenOffTimeoutFromDeviceAdmin(IJ)V
PLcom/android/server/power/PowerManagerService$LocalService;->setPowerBoost(II)V
PLcom/android/server/power/PowerManagerService$LocalService;->setPowerMode(IZ)V
-PLcom/android/server/power/PowerManagerService$LocalService;->setScreenBrightnessOverrideFromWindowManager(F)V
-PLcom/android/server/power/PowerManagerService$LocalService;->setUserActivityTimeoutOverrideFromWindowManager(J)V
+HPLcom/android/server/power/PowerManagerService$LocalService;->setUserActivityTimeoutOverrideFromWindowManager(J)V
+PLcom/android/server/power/PowerManagerService$LocalService;->setUserInactiveOverrideFromWindowManager()V
HPLcom/android/server/power/PowerManagerService$LocalService;->startUidChanges()V
-HPLcom/android/server/power/PowerManagerService$LocalService;->uidActive(I)V
+PLcom/android/server/power/PowerManagerService$LocalService;->uidActive(I)V
PLcom/android/server/power/PowerManagerService$LocalService;->uidGone(I)V
-HPLcom/android/server/power/PowerManagerService$LocalService;->uidIdle(I)V
-HPLcom/android/server/power/PowerManagerService$LocalService;->updateUidProcState(II)V
+PLcom/android/server/power/PowerManagerService$LocalService;->uidIdle(I)V
+HPLcom/android/server/power/PowerManagerService$LocalService;->updateUidProcState(II)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HSPLcom/android/server/power/PowerManagerService$NativeWrapper;-><init>()V
-HSPLcom/android/server/power/PowerManagerService$NativeWrapper;->nativeAcquireSuspendBlocker(Ljava/lang/String;)V
-HSPLcom/android/server/power/PowerManagerService$NativeWrapper;->nativeInit(Lcom/android/server/power/PowerManagerService;)V
-PLcom/android/server/power/PowerManagerService$NativeWrapper;->nativeReleaseSuspendBlocker(Ljava/lang/String;)V
-HSPLcom/android/server/power/PowerManagerService$NativeWrapper;->nativeSetAutoSuspend(Z)V
-PLcom/android/server/power/PowerManagerService$NativeWrapper;->nativeSetPowerBoost(II)V
-HSPLcom/android/server/power/PowerManagerService$NativeWrapper;->nativeSetPowerMode(IZ)Z
HSPLcom/android/server/power/PowerManagerService$PowerGroupWakefulnessChangeListener;-><init>(Lcom/android/server/power/PowerManagerService;)V
-HSPLcom/android/server/power/PowerManagerService$PowerGroupWakefulnessChangeListener;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$PowerGroupWakefulnessChangeListener-IA;)V
HSPLcom/android/server/power/PowerManagerService$PowerManagerHandlerCallback;-><init>(Lcom/android/server/power/PowerManagerService;)V
-HSPLcom/android/server/power/PowerManagerService$PowerManagerHandlerCallback;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$PowerManagerHandlerCallback-IA;)V
-PLcom/android/server/power/PowerManagerService$PowerManagerHandlerCallback;->handleMessage(Landroid/os/Message;)Z
+HPLcom/android/server/power/PowerManagerService$PowerManagerHandlerCallback;->handleMessage(Landroid/os/Message;)Z+]Landroid/os/Handler;Landroid/os/Handler;]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/power/PowerManagerService$SettingsObserver;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/Handler;)V
+PLcom/android/server/power/PowerManagerService$SettingsObserver;->onChange(ZLandroid/net/Uri;)V
HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;-><init>(Lcom/android/server/power/PowerManagerService;Ljava/lang/String;)V
HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->acquire()V
-HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->acquire(Ljava/lang/String;)V
-HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->recordReferenceLocked(Ljava/lang/String;)V
+HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->acquire(Ljava/lang/String;)V+]Landroid/util/LongArray;Landroid/util/LongArray;
PLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->release()V
-HPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->release(Ljava/lang/String;)V
-HPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->removeReferenceLocked(Ljava/lang/String;)V
+HPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->release(Ljava/lang/String;)V+]Landroid/util/LongArray;Landroid/util/LongArray;
+PLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->toString()Ljava/lang/String;
PLcom/android/server/power/PowerManagerService$UidState;-><init>(I)V
PLcom/android/server/power/PowerManagerService$UserSwitchedReceiver;-><init>(Lcom/android/server/power/PowerManagerService;)V
PLcom/android/server/power/PowerManagerService$UserSwitchedReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HPLcom/android/server/power/PowerManagerService$WakeLock;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;IILcom/android/server/power/PowerManagerService$UidState;Landroid/os/IWakeLockCallback;)V
-HPLcom/android/server/power/PowerManagerService$WakeLock;->getPowerGroupId()Ljava/lang/Integer;
-HPLcom/android/server/power/PowerManagerService$WakeLock;->hasSameProperties(ILjava/lang/String;Landroid/os/WorkSource;IILandroid/os/IWakeLockCallback;)Z
-HPLcom/android/server/power/PowerManagerService$WakeLock;->hasSameWorkSource(Landroid/os/WorkSource;)Z
-HPLcom/android/server/power/PowerManagerService$WakeLock;->linkToDeath()V
-HPLcom/android/server/power/PowerManagerService$WakeLock;->setDisabled(Z)Z
-HPLcom/android/server/power/PowerManagerService$WakeLock;->unlinkToDeath()V
-HPLcom/android/server/power/PowerManagerService$WakeLock;->updateWorkSource(Landroid/os/WorkSource;)V
-HSPLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmBatterySaverSupported(Lcom/android/server/power/PowerManagerService;)Z
-PLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmBootCompleted(Lcom/android/server/power/PowerManagerService;)Z
-PLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmClock(Lcom/android/server/power/PowerManagerService;)Lcom/android/server/power/PowerManagerService$Clock;
-HPLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmContext(Lcom/android/server/power/PowerManagerService;)Landroid/content/Context;
-PLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmDecoupleHalAutoSuspendModeFromDisplayConfig(Lcom/android/server/power/PowerManagerService;)Z
-PLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmDecoupleHalInteractiveModeFromDisplayConfig(Lcom/android/server/power/PowerManagerService;)Z
-PLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmDirty(Lcom/android/server/power/PowerManagerService;)I
-HPLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmDisplayManagerInternal(Lcom/android/server/power/PowerManagerService;)Landroid/hardware/display/DisplayManagerInternal;
-PLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmDisplaySuspendBlocker(Lcom/android/server/power/PowerManagerService;)Lcom/android/server/power/SuspendBlocker;
-PLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmLock(Lcom/android/server/power/PowerManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmNativeWrapper(Lcom/android/server/power/PowerManagerService;)Lcom/android/server/power/PowerManagerService$NativeWrapper;
-PLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmPowerGroups(Lcom/android/server/power/PowerManagerService;)Landroid/util/SparseArray;
-HSPLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmSuspendBlockers(Lcom/android/server/power/PowerManagerService;)Ljava/util/ArrayList;
-HPLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmSystemReady(Lcom/android/server/power/PowerManagerService;)Z
-PLcom/android/server/power/PowerManagerService;->-$$Nest$fputmDirty(Lcom/android/server/power/PowerManagerService;I)V
-PLcom/android/server/power/PowerManagerService;->-$$Nest$fputmKeepDreamingWhenUnplugging(Lcom/android/server/power/PowerManagerService;Z)V
-HPLcom/android/server/power/PowerManagerService;->-$$Nest$macquireWakeLockInternal(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;IILandroid/os/IWakeLockCallback;)V
-PLcom/android/server/power/PowerManagerService;->-$$Nest$mhandleBatteryStateChangedLocked(Lcom/android/server/power/PowerManagerService;)V
-PLcom/android/server/power/PowerManagerService;->-$$Nest$mhandleSandman(Lcom/android/server/power/PowerManagerService;I)V
+HPLcom/android/server/power/PowerManagerService$WakeLock;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;IILcom/android/server/power/PowerManagerService$UidState;Landroid/os/IWakeLockCallback;)V+]Landroid/os/IBinder;Landroid/os/Binder;,Landroid/os/BinderProxy;
+PLcom/android/server/power/PowerManagerService$WakeLock;->binderDied()V
+HPLcom/android/server/power/PowerManagerService$WakeLock;->getPowerGroupId()Ljava/lang/Integer;+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;
+PLcom/android/server/power/PowerManagerService$WakeLock;->toString()Ljava/lang/String;
+HPLcom/android/server/power/PowerManagerService;->-$$Nest$macquireWakeLockInternal(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;IILandroid/os/IWakeLockCallback;)V+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/power/PowerManagerService;->-$$Nest$mgoToSleepInternal(Lcom/android/server/power/PowerManagerService;Landroid/util/IntArray;JII)V
+HPLcom/android/server/power/PowerManagerService;->-$$Nest$mhandleSandman(Lcom/android/server/power/PowerManagerService;I)V+]Landroid/service/dreams/DreamManagerInternal;Lcom/android/server/dreams/DreamManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;
PLcom/android/server/power/PowerManagerService;->-$$Nest$mhandleUserActivityTimeout(Lcom/android/server/power/PowerManagerService;)V
-HSPLcom/android/server/power/PowerManagerService;->-$$Nest$misGloballyInteractiveInternal(Lcom/android/server/power/PowerManagerService;)Z
-PLcom/android/server/power/PowerManagerService;->-$$Nest$misWakeLockLevelSupportedInternal(Lcom/android/server/power/PowerManagerService;I)Z
-HSPLcom/android/server/power/PowerManagerService;->-$$Nest$mnativeInit(Lcom/android/server/power/PowerManagerService;)V
-HPLcom/android/server/power/PowerManagerService;->-$$Nest$mreleaseWakeLockInternal(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;I)V
-PLcom/android/server/power/PowerManagerService;->-$$Nest$msetDozeAfterScreenOffInternal(Lcom/android/server/power/PowerManagerService;Z)V
-PLcom/android/server/power/PowerManagerService;->-$$Nest$msetPowerBoostInternal(Lcom/android/server/power/PowerManagerService;II)V
-PLcom/android/server/power/PowerManagerService;->-$$Nest$msetPowerModeInternal(Lcom/android/server/power/PowerManagerService;IZ)Z
-PLcom/android/server/power/PowerManagerService;->-$$Nest$msetScreenBrightnessOverrideFromWindowManagerInternal(Lcom/android/server/power/PowerManagerService;F)V
-PLcom/android/server/power/PowerManagerService;->-$$Nest$msetUserActivityTimeoutOverrideFromWindowManagerInternal(Lcom/android/server/power/PowerManagerService;J)V
-PLcom/android/server/power/PowerManagerService;->-$$Nest$mupdatePowerStateLocked(Lcom/android/server/power/PowerManagerService;)V
+HSPLcom/android/server/power/PowerManagerService;->-$$Nest$misInteractiveInternal(Lcom/android/server/power/PowerManagerService;II)Z
+PLcom/android/server/power/PowerManagerService;->-$$Nest$misWakeLockLevelSupportedInternal(Lcom/android/server/power/PowerManagerService;II)Z
+HPLcom/android/server/power/PowerManagerService;->-$$Nest$mreleaseWakeLockInternal(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;I)V+]Landroid/os/IBinder;Landroid/os/Binder;,Landroid/os/BinderProxy;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/power/PowerManagerService;->-$$Nest$mupdateWakeLockWorkSourceInternal(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;I)V
-PLcom/android/server/power/PowerManagerService;->-$$Nest$muserActivityInternal(Lcom/android/server/power/PowerManagerService;IJIII)V
-PLcom/android/server/power/PowerManagerService;->-$$Nest$mwakePowerGroupLocked(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerGroup;JILjava/lang/String;ILjava/lang/String;I)V
-HPLcom/android/server/power/PowerManagerService;->-$$Nest$smcopyWorkSource(Landroid/os/WorkSource;)Landroid/os/WorkSource;
HSPLcom/android/server/power/PowerManagerService;->-$$Nest$smnativeAcquireSuspendBlocker(Ljava/lang/String;)V
PLcom/android/server/power/PowerManagerService;->-$$Nest$smnativeReleaseSuspendBlocker(Ljava/lang/String;)V
-HSPLcom/android/server/power/PowerManagerService;->-$$Nest$smnativeSetAutoSuspend(Z)V
PLcom/android/server/power/PowerManagerService;->-$$Nest$smnativeSetPowerBoost(II)V
-HSPLcom/android/server/power/PowerManagerService;->-$$Nest$smnativeSetPowerMode(IZ)Z
+PLcom/android/server/power/PowerManagerService;->-$$Nest$smnativeSetPowerMode(IZ)Z
HSPLcom/android/server/power/PowerManagerService;-><clinit>()V
HSPLcom/android/server/power/PowerManagerService;-><init>(Landroid/content/Context;)V
HSPLcom/android/server/power/PowerManagerService;-><init>(Landroid/content/Context;Lcom/android/server/power/PowerManagerService$Injector;)V
-HPLcom/android/server/power/PowerManagerService;->acquireWakeLockInternal(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;IILandroid/os/IWakeLockCallback;)V
PLcom/android/server/power/PowerManagerService;->addPowerGroupsForNonDefaultDisplayGroupLocked()V
-PLcom/android/server/power/PowerManagerService;->adjustWakeLockSummary(II)I
-HPLcom/android/server/power/PowerManagerService;->applyWakeLockFlagsOnAcquireLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
-HPLcom/android/server/power/PowerManagerService;->applyWakeLockFlagsOnReleaseLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
-HPLcom/android/server/power/PowerManagerService;->areAllPowerGroupsReadyLocked()Z
-HPLcom/android/server/power/PowerManagerService;->checkForLongWakeLocks()V
-HPLcom/android/server/power/PowerManagerService;->copyWorkSource(Landroid/os/WorkSource;)Landroid/os/WorkSource;
+HPLcom/android/server/power/PowerManagerService;->adjustWakeLockSummary(II)I
+HPLcom/android/server/power/PowerManagerService;->applyWakeLockFlagsOnAcquireLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/power/PowerManagerService;->areAllPowerGroupsReadyLocked()Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/power/PowerManagerService;->canDreamLocked(Lcom/android/server/power/PowerGroup;)Z
HPLcom/android/server/power/PowerManagerService;->doesIdleStateBlockWakeLocksLocked()Z
-PLcom/android/server/power/PowerManagerService;->enqueueNotifyLongMsgLocked(J)V
-HPLcom/android/server/power/PowerManagerService;->findWakeLockIndexLocked(Landroid/os/IBinder;)I
-HPLcom/android/server/power/PowerManagerService;->finishUidChangesInternal()V
-HPLcom/android/server/power/PowerManagerService;->finishWakefulnessChangeIfNeededLocked()V
+HPLcom/android/server/power/PowerManagerService;->dozePowerGroupLocked(Lcom/android/server/power/PowerGroup;JII)Z
+PLcom/android/server/power/PowerManagerService;->dumpInternal$5(Ljava/io/PrintWriter;)V
+HPLcom/android/server/power/PowerManagerService;->findWakeLockIndexLocked(Landroid/os/IBinder;)I+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/power/PowerManagerService;->finishWakefulnessChangeIfNeededLocked()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HPLcom/android/server/power/PowerManagerService;->getAttentiveTimeoutLocked()J
+HPLcom/android/server/power/PowerManagerService;->getDefaultGroupScreenOffTimeoutOverrideLocked(JJ)J
HSPLcom/android/server/power/PowerManagerService;->getGlobalWakefulnessLocked()I
PLcom/android/server/power/PowerManagerService;->getLastShutdownReasonInternal()I
-HPLcom/android/server/power/PowerManagerService;->getNextProfileTimeoutLocked(J)J
-HPLcom/android/server/power/PowerManagerService;->getScreenDimDurationLocked(J)J
HPLcom/android/server/power/PowerManagerService;->getScreenOffTimeoutLocked(JJ)J
-HPLcom/android/server/power/PowerManagerService;->getScreenOffTimeoutWithFaceDownLocked(JJ)J
HPLcom/android/server/power/PowerManagerService;->getSleepTimeoutLocked(J)J
-HPLcom/android/server/power/PowerManagerService;->getWakeLockSummaryFlags(Lcom/android/server/power/PowerManagerService$WakeLock;)I
-PLcom/android/server/power/PowerManagerService;->handleBatteryStateChangedLocked()V
-HPLcom/android/server/power/PowerManagerService;->handleSandman(I)V
PLcom/android/server/power/PowerManagerService;->handleSettingsChangedLocked()V
PLcom/android/server/power/PowerManagerService;->handleUidStateChangeLocked()V
-PLcom/android/server/power/PowerManagerService;->handleUserActivityTimeout()V
-PLcom/android/server/power/PowerManagerService;->incrementBootCount()V
HPLcom/android/server/power/PowerManagerService;->isAttentiveTimeoutExpired(Lcom/android/server/power/PowerGroup;J)Z
HPLcom/android/server/power/PowerManagerService;->isBeingKeptAwakeLocked(Lcom/android/server/power/PowerGroup;)Z
-PLcom/android/server/power/PowerManagerService;->isDeviceIdleModeInternal()Z
-HSPLcom/android/server/power/PowerManagerService;->isGloballyInteractiveInternal()Z
HPLcom/android/server/power/PowerManagerService;->isItBedTimeYetLocked(Lcom/android/server/power/PowerGroup;)Z
-PLcom/android/server/power/PowerManagerService;->isLightDeviceIdleModeInternal()Z
HPLcom/android/server/power/PowerManagerService;->isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()Z
-PLcom/android/server/power/PowerManagerService;->isSameCallback(Landroid/os/IWakeLockCallback;Landroid/os/IWakeLockCallback;)Z
PLcom/android/server/power/PowerManagerService;->isScreenLock(Lcom/android/server/power/PowerManagerService$WakeLock;)Z
-PLcom/android/server/power/PowerManagerService;->isValidBrightness(F)Z
-PLcom/android/server/power/PowerManagerService;->isWakeLockLevelSupportedInternal(I)Z
-HPLcom/android/server/power/PowerManagerService;->maybeHideInattentiveSleepWarningLocked(JJ)Z
-PLcom/android/server/power/PowerManagerService;->maybeUpdateForegroundProfileLastActivityLocked(J)V
PLcom/android/server/power/PowerManagerService;->monitor()V
-HPLcom/android/server/power/PowerManagerService;->needSuspendBlockerLocked()Z
HPLcom/android/server/power/PowerManagerService;->notifyWakeLockAcquiredLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
HPLcom/android/server/power/PowerManagerService;->notifyWakeLockChangingLocked(Lcom/android/server/power/PowerManagerService$WakeLock;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;)V
-HPLcom/android/server/power/PowerManagerService;->notifyWakeLockLongFinishedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
-HPLcom/android/server/power/PowerManagerService;->notifyWakeLockReleasedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
+HPLcom/android/server/power/PowerManagerService;->notifyWakeLockLongFinishedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V+]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;
+PLcom/android/server/power/PowerManagerService;->notifyWakeLockLongStartedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
+HPLcom/android/server/power/PowerManagerService;->notifyWakeLockReleasedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;I)V
HSPLcom/android/server/power/PowerManagerService;->onBootPhase(I)V
HSPLcom/android/server/power/PowerManagerService;->onStart()V
PLcom/android/server/power/PowerManagerService;->readConfigurationLocked()V
-HPLcom/android/server/power/PowerManagerService;->releaseWakeLockInternal(Landroid/os/IBinder;I)V
-HPLcom/android/server/power/PowerManagerService;->removeWakeLockLocked(Lcom/android/server/power/PowerManagerService$WakeLock;I)V
-HPLcom/android/server/power/PowerManagerService;->restartNofifyLongTimerLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
-HPLcom/android/server/power/PowerManagerService;->scheduleSandmanLocked()V
-HPLcom/android/server/power/PowerManagerService;->scheduleUserInactivityTimeout(J)V
-HPLcom/android/server/power/PowerManagerService;->setDeviceIdleTempWhitelistInternal([I)V
-PLcom/android/server/power/PowerManagerService;->setDeviceIdleWhitelistInternal([I)V
-PLcom/android/server/power/PowerManagerService;->setDozeAfterScreenOffInternal(Z)V
+PLcom/android/server/power/PowerManagerService;->recalculateGlobalWakefulnessLocked()I
+HPLcom/android/server/power/PowerManagerService;->removeWakeLockNoUpdateLocked(Lcom/android/server/power/PowerManagerService$WakeLock;II)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/power/PowerManagerService;->restartNofifyLongTimerLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V+]Landroid/os/Handler;Landroid/os/Handler;
+HPLcom/android/server/power/PowerManagerService;->scheduleSandmanLocked()V+]Landroid/os/Handler;Landroid/os/Handler;]Landroid/util/SparseArray;Landroid/util/SparseArray;
HPLcom/android/server/power/PowerManagerService;->setHalAutoSuspendModeLocked(Z)V
HPLcom/android/server/power/PowerManagerService;->setHalInteractiveModeLocked(Z)V
-PLcom/android/server/power/PowerManagerService;->setMaximumScreenOffTimeoutFromDeviceAdminInternal(IJ)V
-PLcom/android/server/power/PowerManagerService;->setPowerBoostInternal(II)V
-PLcom/android/server/power/PowerManagerService;->setPowerModeInternal(IZ)Z
-HPLcom/android/server/power/PowerManagerService;->setScreenBrightnessOverrideFromWindowManagerInternal(F)V
-PLcom/android/server/power/PowerManagerService;->setUserActivityTimeoutOverrideFromWindowManagerInternal(J)V
+HPLcom/android/server/power/PowerManagerService;->setPowerModeInternal(IZ)Z
HPLcom/android/server/power/PowerManagerService;->setWakeLockDisabledStateLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)Z
-PLcom/android/server/power/PowerManagerService;->shouldBoostScreenBrightness()Z
-HPLcom/android/server/power/PowerManagerService;->shouldUseProximitySensorLocked()Z
-PLcom/android/server/power/PowerManagerService;->shouldWakeUpWhenPluggedOrUnpluggedLocked(ZIZ)Z
-HPLcom/android/server/power/PowerManagerService;->startUidChangesInternal()V
-HPLcom/android/server/power/PowerManagerService;->systemReady()V
-HPLcom/android/server/power/PowerManagerService;->uidActiveInternal(I)V
-HPLcom/android/server/power/PowerManagerService;->uidGoneInternal(I)V
-HPLcom/android/server/power/PowerManagerService;->uidIdleInternal(I)V
-HPLcom/android/server/power/PowerManagerService;->updateAttentiveStateLocked(JI)V
-PLcom/android/server/power/PowerManagerService;->updateDeviceConfigLocked()V
-HPLcom/android/server/power/PowerManagerService;->updateDreamLocked(IZ)V
-HPLcom/android/server/power/PowerManagerService;->updateIsPoweredLocked(I)V
-HPLcom/android/server/power/PowerManagerService;->updatePowerGroupsLocked(I)Z
+PLcom/android/server/power/PowerManagerService;->sleepPowerGroupLocked(Lcom/android/server/power/PowerGroup;JII)Z
+HPLcom/android/server/power/PowerManagerService;->updateAttentiveStateLocked(IJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/power/PowerManagerService;->updateGlobalWakefulnessLocked(IILjava/lang/String;Ljava/lang/String;IJ)V
+HPLcom/android/server/power/PowerManagerService;->updateIsPoweredLocked(I)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/os/BatteryManagerInternal;Lcom/android/server/BatteryService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/power/PowerManagerService;->updatePowerGroupsLocked(I)Z+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/util/LatencyTracker;Lcom/android/internal/util/LatencyTracker;
HPLcom/android/server/power/PowerManagerService;->updatePowerStateLocked()V
-HPLcom/android/server/power/PowerManagerService;->updateProfilesLocked(J)V
-PLcom/android/server/power/PowerManagerService;->updateScreenBrightnessBoostLocked(I)V
-HPLcom/android/server/power/PowerManagerService;->updateSettingsLocked()V
-HPLcom/android/server/power/PowerManagerService;->updateStayOnLocked(I)V
-HPLcom/android/server/power/PowerManagerService;->updateSuspendBlockerLocked()V
-HPLcom/android/server/power/PowerManagerService;->updateUidProcStateInternal(II)V
-HPLcom/android/server/power/PowerManagerService;->updateUserActivitySummaryLocked(JI)V
+HPLcom/android/server/power/PowerManagerService;->updateProfilesLocked(J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/power/PowerManagerService;->updateSettingsLocked$1()V
+HPLcom/android/server/power/PowerManagerService;->updateSuspendBlockerLocked()V+]Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/power/PowerManagerService;->updateUserActivitySummaryLocked(IJ)V+]Landroid/os/Handler;Landroid/os/Handler;]Landroid/util/SparseArray;Landroid/util/SparseArray;
PLcom/android/server/power/PowerManagerService;->updateWakeLockDisabledStatesLocked()V
-HPLcom/android/server/power/PowerManagerService;->updateWakeLockSummaryLocked(I)V
-HPLcom/android/server/power/PowerManagerService;->updateWakeLockWorkSourceInternal(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;I)V
-HPLcom/android/server/power/PowerManagerService;->updateWakefulnessLocked(I)Z
-PLcom/android/server/power/PowerManagerService;->userActivityInternal(IJIII)V
-PLcom/android/server/power/PowerManagerService;->userActivityNoUpdateLocked(JIII)Z
-HPLcom/android/server/power/PowerManagerService;->userActivityNoUpdateLocked(Lcom/android/server/power/PowerGroup;JIII)Z
-PLcom/android/server/power/PowerManagerService;->wakePowerGroupLocked(Lcom/android/server/power/PowerGroup;JILjava/lang/String;ILjava/lang/String;I)V
+HPLcom/android/server/power/PowerManagerService;->updateWakeLockSummaryLocked(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/power/PowerManagerService;->updateWakefulnessLocked(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/power/PowerManagerService;->userActivityFromNative(JIII)V
+HPLcom/android/server/power/PowerManagerService;->userActivityInternal(IIIIJ)V
+PLcom/android/server/power/PowerManagerService;->userActivityNoUpdateLocked(IIIJ)Z
+HPLcom/android/server/power/PowerManagerService;->userActivityNoUpdateLocked(Lcom/android/server/power/PowerGroup;JIII)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/power/PowerManagerService;->wakePowerGroupLocked(Lcom/android/server/power/PowerGroup;JILjava/lang/String;ILjava/lang/String;I)V
+HSPLcom/android/server/power/PowerManagerShellCommand$1;-><init>(Lcom/android/server/power/PowerManagerShellCommand;)V
HSPLcom/android/server/power/PowerManagerShellCommand;-><init>(Landroid/content/Context;Lcom/android/server/power/PowerManagerService$BinderService;)V
+PLcom/android/server/power/ScreenTimeoutOverridePolicy;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/power/ScreenUndimDetector$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/ScreenUndimDetector;)V
-HSPLcom/android/server/power/ScreenUndimDetector$InternalClock;-><init>()V
-PLcom/android/server/power/ScreenUndimDetector$InternalClock;->getCurrentTime()J
HSPLcom/android/server/power/ScreenUndimDetector;-><clinit>()V
-HSPLcom/android/server/power/ScreenUndimDetector;-><init>()V
-PLcom/android/server/power/ScreenUndimDetector;->readKeepScreenOnForMillis()J
-PLcom/android/server/power/ScreenUndimDetector;->readKeepScreenOnNotificationEnabled()Z
-PLcom/android/server/power/ScreenUndimDetector;->readMaxDurationBetweenUndimsMillis()J
-PLcom/android/server/power/ScreenUndimDetector;->readUndimsRequired()I
+PLcom/android/server/power/ScreenUndimDetector;->checkAndLogUndim(I)V
PLcom/android/server/power/ScreenUndimDetector;->readValuesFromDeviceConfig()V
-HPLcom/android/server/power/ScreenUndimDetector;->recordScreenPolicy(II)V
-PLcom/android/server/power/ScreenUndimDetector;->systemReady(Landroid/content/Context;)V
-PLcom/android/server/power/ScreenUndimDetector;->userActivity(I)V
+PLcom/android/server/power/ScreenUndimDetector;->reset()V
PLcom/android/server/power/ThermalManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/ThermalManagerService;)V
-PLcom/android/server/power/ThermalManagerService$$ExternalSyntheticLambda0;->onValues(Landroid/os/Temperature;)V
-PLcom/android/server/power/ThermalManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/ThermalManagerService;)V
-PLcom/android/server/power/ThermalManagerService$$ExternalSyntheticLambda2;-><init>(Landroid/os/IThermalEventListener;Landroid/os/Temperature;)V
-PLcom/android/server/power/ThermalManagerService$$ExternalSyntheticLambda2;->run()V
-PLcom/android/server/power/ThermalManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/power/ThermalManagerService;Landroid/os/IThermalStatusListener;)V
-PLcom/android/server/power/ThermalManagerService$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/power/ThermalManagerService$$ExternalSyntheticLambda1;-><init>(ILjava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/power/ThermalManagerService$$ExternalSyntheticLambda1;->run()V
HSPLcom/android/server/power/ThermalManagerService$1;-><init>(Lcom/android/server/power/ThermalManagerService;)V
-PLcom/android/server/power/ThermalManagerService$1;->getCurrentTemperatures()[Landroid/os/Temperature;
-PLcom/android/server/power/ThermalManagerService$1;->getCurrentThermalStatus()I
-PLcom/android/server/power/ThermalManagerService$1;->registerThermalEventListener(Landroid/os/IThermalEventListener;)Z
-HPLcom/android/server/power/ThermalManagerService$1;->registerThermalEventListenerWithType(Landroid/os/IThermalEventListener;I)Z
-PLcom/android/server/power/ThermalManagerService$1;->registerThermalStatusListener(Landroid/os/IThermalStatusListener;)Z
+PLcom/android/server/power/ThermalManagerService$1;->onTemperatureChanged(Landroid/os/Temperature;)V
+HSPLcom/android/server/power/ThermalManagerService$2;-><init>(Lcom/android/server/power/ThermalManagerService;)V
+PLcom/android/server/power/ThermalManagerService$2;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/power/ThermalManagerService$2;->getCurrentTemperatures()[Landroid/os/Temperature;
+PLcom/android/server/power/ThermalManagerService$2;->getCurrentThermalStatus()I
+PLcom/android/server/power/ThermalManagerService$2;->registerThermalEventListener(Landroid/os/IThermalEventListener;)Z
+PLcom/android/server/power/ThermalManagerService$2;->registerThermalEventListenerWithType(Landroid/os/IThermalEventListener;I)Z
+PLcom/android/server/power/ThermalManagerService$2;->registerThermalStatusListener(Landroid/os/IThermalStatusListener;)Z
+PLcom/android/server/power/ThermalManagerService$2;->unregisterThermalStatusListener(Landroid/os/IThermalStatusListener;)Z
+PLcom/android/server/power/ThermalManagerService$HeadroomCallbackData;->toString()Ljava/lang/String;
+PLcom/android/server/power/ThermalManagerService$TemperatureWatcher$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/power/ThermalManagerService$TemperatureWatcher$Sample;-><init>(JF)V
HSPLcom/android/server/power/ThermalManagerService$TemperatureWatcher;-><init>(Lcom/android/server/power/ThermalManagerService;)V
+PLcom/android/server/power/ThermalManagerService$TemperatureWatcher;->getAndUpdateThresholds()V
+PLcom/android/server/power/ThermalManagerService$TemperatureWatcher;->getForecast(I)F
+PLcom/android/server/power/ThermalManagerService$TemperatureWatcher;->getHeadroomCallbackDataLocked()Lcom/android/server/power/ThermalManagerService$HeadroomCallbackData;
+PLcom/android/server/power/ThermalManagerService$TemperatureWatcher;->getSlopeOf(Ljava/util/List;)F
PLcom/android/server/power/ThermalManagerService$TemperatureWatcher;->normalizeTemperature(FF)F
-PLcom/android/server/power/ThermalManagerService$TemperatureWatcher;->updateHeadroomThreshold(IFF)V
-PLcom/android/server/power/ThermalManagerService$TemperatureWatcher;->updateThresholds()V
+PLcom/android/server/power/ThermalManagerService$TemperatureWatcher;->updateTemperatureSampleLocked(JLandroid/os/Temperature;)V
+PLcom/android/server/power/ThermalManagerService$TemperatureWatcher;->updateTemperatureThresholdLocked(Landroid/hardware/thermal/TemperatureThreshold;Z)V
PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper$$ExternalSyntheticLambda0;-><init>(I)V
PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper$1;-><init>(Lcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;)V
PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper$1;->notifyThrottling(Landroid/hardware/thermal/Temperature;)V
-PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;->$r8$lambda$eU14JIDh7_eSiFFdcxpGZaa7E5A(ILandroid/hardware/thermal/TemperatureThreshold;)Z
-PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;-><init>(Lcom/android/server/power/ThermalManagerService$ThermalHalWrapper$TemperatureChangedCallback;)V
+PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;-><init>(Lcom/android/server/power/ThermalManagerService$1;)V
PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;->connectToHal()Z
-PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;->getCurrentTemperatures(ZI)Ljava/util/List;
-PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;->getTemperatureThresholds(ZI)Ljava/util/List;
+PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;->getCurrentCoolingDevices(IZ)Ljava/util/List;
+PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;->getCurrentTemperatures(IZ)Ljava/util/List;
+PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;->getTemperatureThresholds(IZ)Ljava/util/List;
PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;->initProxyAndRegisterCallback(Landroid/os/IBinder;)V
-PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;->lambda$getTemperatureThresholds$0(ILandroid/hardware/thermal/TemperatureThreshold;)Z
PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;->registerThermalChangedCallback()V
-PLcom/android/server/power/ThermalManagerService$ThermalHalWrapper;-><clinit>()V
PLcom/android/server/power/ThermalManagerService$ThermalHalWrapper;-><init>()V
-PLcom/android/server/power/ThermalManagerService;->$r8$lambda$CphJwWjbL-B4w7BxLr49x93aXVc(Lcom/android/server/power/ThermalManagerService;Landroid/os/Temperature;)V
-PLcom/android/server/power/ThermalManagerService;->$r8$lambda$_4zrfyVY81QkL3mSI38hIUpwup8(Lcom/android/server/power/ThermalManagerService;Landroid/os/IThermalStatusListener;)V
-PLcom/android/server/power/ThermalManagerService;->$r8$lambda$_wu3L1d49Z7doBi6Ga_7WZSQLrk(Landroid/os/IThermalEventListener;Landroid/os/Temperature;)V
-PLcom/android/server/power/ThermalManagerService;->-$$Nest$fgetmHalReady(Lcom/android/server/power/ThermalManagerService;)Ljava/util/concurrent/atomic/AtomicBoolean;
-PLcom/android/server/power/ThermalManagerService;->-$$Nest$fgetmHalWrapper(Lcom/android/server/power/ThermalManagerService;)Lcom/android/server/power/ThermalManagerService$ThermalHalWrapper;
-PLcom/android/server/power/ThermalManagerService;->-$$Nest$fgetmLock(Lcom/android/server/power/ThermalManagerService;)Ljava/lang/Object;
-PLcom/android/server/power/ThermalManagerService;->-$$Nest$fgetmStatus(Lcom/android/server/power/ThermalManagerService;)I
-PLcom/android/server/power/ThermalManagerService;->-$$Nest$fgetmThermalEventListeners(Lcom/android/server/power/ThermalManagerService;)Landroid/os/RemoteCallbackList;
-PLcom/android/server/power/ThermalManagerService;->-$$Nest$fgetmThermalStatusListeners(Lcom/android/server/power/ThermalManagerService;)Landroid/os/RemoteCallbackList;
-PLcom/android/server/power/ThermalManagerService;->-$$Nest$mpostEventListenerCurrentTemperatures(Lcom/android/server/power/ThermalManagerService;Landroid/os/IThermalEventListener;Ljava/lang/Integer;)V
-PLcom/android/server/power/ThermalManagerService;->-$$Nest$mpostStatusListener(Lcom/android/server/power/ThermalManagerService;Landroid/os/IThermalStatusListener;)V
-PLcom/android/server/power/ThermalManagerService;->-$$Nest$smthermalSeverityToStatsdStatus(I)I
-HSPLcom/android/server/power/ThermalManagerService;-><clinit>()V
HSPLcom/android/server/power/ThermalManagerService;-><init>(Landroid/content/Context;)V
HSPLcom/android/server/power/ThermalManagerService;-><init>(Landroid/content/Context;Lcom/android/server/power/ThermalManagerService$ThermalHalWrapper;)V
-PLcom/android/server/power/ThermalManagerService;->lambda$postEventListener$1(Landroid/os/IThermalEventListener;Landroid/os/Temperature;)V
-PLcom/android/server/power/ThermalManagerService;->lambda$postStatusListener$0(Landroid/os/IThermalStatusListener;)V
+PLcom/android/server/power/ThermalManagerService;->checkAndNotifyHeadroomListenersLocked(Lcom/android/server/power/ThermalManagerService$HeadroomCallbackData;)V
+PLcom/android/server/power/ThermalManagerService;->dumpInternal(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/power/ThermalManagerService;->dumpItemsLocked(Ljava/io/PrintWriter;Ljava/util/Collection;)V
+PLcom/android/server/power/ThermalManagerService;->dumpTemperatureThresholds(Ljava/io/PrintWriter;Ljava/util/List;)V
PLcom/android/server/power/ThermalManagerService;->notifyEventListenersLocked(Landroid/os/Temperature;)V
-PLcom/android/server/power/ThermalManagerService;->onActivityManagerReady()V
HSPLcom/android/server/power/ThermalManagerService;->onBootPhase(I)V
HSPLcom/android/server/power/ThermalManagerService;->onStart()V
PLcom/android/server/power/ThermalManagerService;->onTemperatureChanged(Landroid/os/Temperature;Z)V
-PLcom/android/server/power/ThermalManagerService;->onTemperatureChangedCallback(Landroid/os/Temperature;)V
PLcom/android/server/power/ThermalManagerService;->onTemperatureMapChangedLocked()V
-PLcom/android/server/power/ThermalManagerService;->postEventListener(Landroid/os/Temperature;Landroid/os/IThermalEventListener;Ljava/lang/Integer;)V
-PLcom/android/server/power/ThermalManagerService;->postEventListenerCurrentTemperatures(Landroid/os/IThermalEventListener;Ljava/lang/Integer;)V
-PLcom/android/server/power/ThermalManagerService;->postStatusListener(Landroid/os/IThermalStatusListener;)V
-PLcom/android/server/power/ThermalManagerService;->registerStatsCallbacks()V
+PLcom/android/server/power/ThermalManagerService;->postEventListenerLocked(Landroid/os/Temperature;Landroid/os/IThermalEventListener;Ljava/lang/Integer;)V
PLcom/android/server/power/ThermalManagerService;->setStatusLocked(I)V
-PLcom/android/server/power/ThermalManagerService;->shutdownIfNeeded(Landroid/os/Temperature;)V
-PLcom/android/server/power/ThermalManagerService;->thermalSeverityToStatsdStatus(I)I
-PLcom/android/server/power/WakeLockLog$EntryByteTranslator;-><init>(Lcom/android/server/power/WakeLockLog$TagDatabase;)V
-PLcom/android/server/power/WakeLockLog$EntryByteTranslator;->getRelativeTime(JJ)I
-HPLcom/android/server/power/WakeLockLog$EntryByteTranslator;->toBytes(Lcom/android/server/power/WakeLockLog$LogEntry;[BJ)I
-PLcom/android/server/power/WakeLockLog$Injector;-><init>()V
-HPLcom/android/server/power/WakeLockLog$Injector;->currentTimeMillis()J
-PLcom/android/server/power/WakeLockLog$Injector;->getDateFormat()Ljava/text/SimpleDateFormat;
-PLcom/android/server/power/WakeLockLog$Injector;->getLogSize()I
-PLcom/android/server/power/WakeLockLog$Injector;->getTagDatabaseSize()I
-HPLcom/android/server/power/WakeLockLog$LogEntry;-><init>(JILcom/android/server/power/WakeLockLog$TagData;I)V
-HPLcom/android/server/power/WakeLockLog$LogEntry;->set(JILcom/android/server/power/WakeLockLog$TagData;I)V
-HPLcom/android/server/power/WakeLockLog$TagData;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/power/WakeLockLog$LogEntry;-><init>(JILcom/android/server/power/WakeLockLog$TagData;I)V
+HPLcom/android/server/power/WakeLockLog$LogEntry;->toStringInternal(Ljava/text/SimpleDateFormat;)Ljava/lang/String;
+PLcom/android/server/power/WakeLockLog$LogEntry;->updatePackageName(Landroid/util/SparseArray;Landroid/content/pm/PackageManager;)V
HPLcom/android/server/power/WakeLockLog$TagData;->equals(Ljava/lang/Object;)Z
PLcom/android/server/power/WakeLockLog$TagDatabase;-><init>(Lcom/android/server/power/WakeLockLog$Injector;)V
-HPLcom/android/server/power/WakeLockLog$TagDatabase;->findOrCreateTag(Ljava/lang/String;IZ)Lcom/android/server/power/WakeLockLog$TagData;
-HPLcom/android/server/power/WakeLockLog$TagDatabase;->getTagIndex(Lcom/android/server/power/WakeLockLog$TagData;)I
-PLcom/android/server/power/WakeLockLog$TagDatabase;->setCallback(Lcom/android/server/power/WakeLockLog$TagDatabase$Callback;)V
-HPLcom/android/server/power/WakeLockLog$TagDatabase;->setToIndex(Lcom/android/server/power/WakeLockLog$TagData;I)V
-HPLcom/android/server/power/WakeLockLog$TagDatabase;->updateTagTime(Lcom/android/server/power/WakeLockLog$TagData;J)V
-PLcom/android/server/power/WakeLockLog$TheLog$1;-><init>(Lcom/android/server/power/WakeLockLog$TheLog;)V
-PLcom/android/server/power/WakeLockLog$TheLog;-><init>(Lcom/android/server/power/WakeLockLog$Injector;Lcom/android/server/power/WakeLockLog$EntryByteTranslator;Lcom/android/server/power/WakeLockLog$TagDatabase;)V
-HPLcom/android/server/power/WakeLockLog$TheLog;->addEntry(Lcom/android/server/power/WakeLockLog$LogEntry;)V
-HPLcom/android/server/power/WakeLockLog$TheLog;->getAvailableSpace()I
-HPLcom/android/server/power/WakeLockLog$TheLog;->isBufferEmpty()Z
-HPLcom/android/server/power/WakeLockLog$TheLog;->makeSpace(I)Z
-HPLcom/android/server/power/WakeLockLog$TheLog;->writeBytesAt(I[BI)V
-PLcom/android/server/power/WakeLockLog;->-$$Nest$sfgetDATE_FORMAT()Ljava/text/SimpleDateFormat;
+HPLcom/android/server/power/WakeLockLog$TagDatabase;->findOrCreateTag(ILjava/lang/String;)Lcom/android/server/power/WakeLockLog$TagData;
+PLcom/android/server/power/WakeLockLog$TheLog$1;-><init>(Ljava/lang/Object;)V
+HPLcom/android/server/power/WakeLockLog$TheLog$1;->toBytes(Lcom/android/server/power/WakeLockLog$LogEntry;[BJ)I
+PLcom/android/server/power/WakeLockLog$TheLog$2;-><init>(Lcom/android/server/power/WakeLockLog$TheLog;Lcom/android/server/power/WakeLockLog$LogEntry;)V
+HPLcom/android/server/power/WakeLockLog$TheLog$2;->checkState()V
+PLcom/android/server/power/WakeLockLog$TheLog$2;->hasNext()Z
+PLcom/android/server/power/WakeLockLog$TheLog$2;->next()Ljava/lang/Object;
+PLcom/android/server/power/WakeLockLog$TheLog;-><init>(Lcom/android/server/power/WakeLockLog$Injector;Lcom/android/server/power/WakeLockLog$TheLog$1;Lcom/android/server/power/WakeLockLog$TagDatabase;)V
+HPLcom/android/server/power/WakeLockLog$TheLog;->addEntry(Lcom/android/server/power/WakeLockLog$LogEntry;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/power/WakeLockLog$TheLog;->readEntryAt(IJLcom/android/server/power/WakeLockLog$LogEntry;)Lcom/android/server/power/WakeLockLog$LogEntry;
PLcom/android/server/power/WakeLockLog;-><clinit>()V
-PLcom/android/server/power/WakeLockLog;-><init>(Landroid/content/Context;)V
PLcom/android/server/power/WakeLockLog;-><init>(Lcom/android/server/power/WakeLockLog$Injector;Landroid/content/Context;)V
-HPLcom/android/server/power/WakeLockLog;->handleWakeLockEventInternal(ILjava/lang/String;IIJ)V
-HPLcom/android/server/power/WakeLockLog;->onWakeLockAcquired(Ljava/lang/String;II)V
-HPLcom/android/server/power/WakeLockLog;->onWakeLockEvent(ILjava/lang/String;II)V
-HPLcom/android/server/power/WakeLockLog;->onWakeLockReleased(Ljava/lang/String;I)V
-HPLcom/android/server/power/WakeLockLog;->tagNameReducer(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/power/WakeLockLog;->translateFlagsFromPowerManager(I)I
+PLcom/android/server/power/WakeLockLog;->dump(Ljava/io/PrintWriter;Z)V
+HPLcom/android/server/power/WakeLockLog;->onWakeLockEvent(ILjava/lang/String;IIJ)V
+PLcom/android/server/power/WakefulnessSessionObserver$1;-><init>(Lcom/android/server/power/WakefulnessSessionObserver;Landroid/os/Handler;)V
+PLcom/android/server/power/WakefulnessSessionObserver$1;->onChange(Z)V
+PLcom/android/server/power/WakefulnessSessionObserver$2;-><init>(Lcom/android/server/power/WakefulnessSessionObserver;)V
+PLcom/android/server/power/WakefulnessSessionObserver$2;->onDisplayChanged(I)V
+PLcom/android/server/power/WakefulnessSessionObserver$Injector;-><init>()V
+PLcom/android/server/power/WakefulnessSessionObserver$UserSwitchObserver;-><init>(Lcom/android/server/power/WakefulnessSessionObserver;)V
+PLcom/android/server/power/WakefulnessSessionObserver$WakefulnessSessionPowerGroup;-><init>(Lcom/android/server/power/WakefulnessSessionObserver;I)V
+HPLcom/android/server/power/WakefulnessSessionObserver$WakefulnessSessionPowerGroup;->checkAndLogDimIfQualified(IJ)V
+PLcom/android/server/power/WakefulnessSessionObserver$WakefulnessSessionPowerGroup;->isInOverrideTimeout()Z
+PLcom/android/server/power/WakefulnessSessionObserver;-><clinit>()V
+PLcom/android/server/power/WakefulnessSessionObserver;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/power/WakefulnessSessionObserver;->notifyUserActivity(IIJ)V
+PLcom/android/server/power/WakefulnessSessionObserver;->updateSettingScreenOffTimeout(Landroid/content/Context;)V
PLcom/android/server/power/WirelessChargerDetector$1;-><init>(Lcom/android/server/power/WirelessChargerDetector;)V
PLcom/android/server/power/WirelessChargerDetector$2;-><init>(Lcom/android/server/power/WirelessChargerDetector;)V
PLcom/android/server/power/WirelessChargerDetector;-><clinit>()V
-PLcom/android/server/power/WirelessChargerDetector;-><init>(Landroid/hardware/SensorManager;Lcom/android/server/power/SuspendBlocker;Landroid/os/Handler;)V
-PLcom/android/server/power/WirelessChargerDetector;->update(ZI)Z
-HSPLcom/android/server/power/feature/PowerManagerFlags$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/power/WirelessChargerDetector;-><init>(Landroid/hardware/SensorManager;Lcom/android/server/power/PowerManagerService$SuspendBlockerImpl;Landroid/os/Handler;)V
+PLcom/android/server/power/WirelessChargerDetector;->dump(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/power/feature/PowerManagerFlags$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/power/feature/PowerManagerFlags$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
HSPLcom/android/server/power/feature/PowerManagerFlags$FlagState;-><init>(Ljava/lang/String;Ljava/util/function/Supplier;)V
-HSPLcom/android/server/power/feature/PowerManagerFlags$FlagState;-><init>(Ljava/lang/String;Ljava/util/function/Supplier;Lcom/android/server/power/feature/PowerManagerFlags$FlagState-IA;)V
+HPLcom/android/server/power/feature/PowerManagerFlags$FlagState;->isEnabled()Z+]Ljava/util/function/Supplier;Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda1;
+PLcom/android/server/power/feature/PowerManagerFlags$FlagState;->toString()Ljava/lang/String;
HSPLcom/android/server/power/feature/PowerManagerFlags;-><init>()V
+PLcom/android/server/power/feature/PowerManagerFlags;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/power/hint/FeatureFlagsImpl;->init()V
+PLcom/android/server/power/hint/Flags;-><clinit>()V
+PLcom/android/server/power/hint/Flags;->adpfSessionTag()Z
+PLcom/android/server/power/hint/Flags;->powerhintThreadCleanup()Z
PLcom/android/server/power/hint/HintManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/hint/HintManagerService;)V
-HSPLcom/android/server/power/hint/HintManagerService$BinderService;-><init>(Lcom/android/server/power/hint/HintManagerService;)V
-PLcom/android/server/power/hint/HintManagerService$BinderService;->createHintSession(Landroid/os/IBinder;[IJ)Landroid/os/IHintSession;
+PLcom/android/server/power/hint/HintManagerService$BinderService;-><init>(Lcom/android/server/power/hint/HintManagerService;)V
+PLcom/android/server/power/hint/HintManagerService$BinderService;->createHintSessionWithConfig(Landroid/os/IBinder;ILandroid/os/SessionCreationConfig;Landroid/hardware/power/SessionConfig;)Landroid/os/IHintSession;
+PLcom/android/server/power/hint/HintManagerService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/power/hint/HintManagerService$BinderService;->getCpuHeadroom(Landroid/os/CpuHeadroomParamsInternal;)Landroid/hardware/power/CpuHeadroomResult;
+PLcom/android/server/power/hint/HintManagerService$BinderService;->getGpuHeadroom(Landroid/os/GpuHeadroomParamsInternal;)Landroid/hardware/power/GpuHeadroomResult;
PLcom/android/server/power/hint/HintManagerService$BinderService;->getHintSessionPreferredRate()J
-HSPLcom/android/server/power/hint/HintManagerService$Injector;-><init>()V
-HSPLcom/android/server/power/hint/HintManagerService$Injector;->createNativeWrapper()Lcom/android/server/power/hint/HintManagerService$NativeWrapper;
-HPLcom/android/server/power/hint/HintManagerService$MyUidObserver$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/hint/HintManagerService$MyUidObserver;II)V
-HPLcom/android/server/power/hint/HintManagerService$MyUidObserver$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/power/hint/HintManagerService$BinderService;->getSessionChannel(Landroid/os/IBinder;)Landroid/hardware/power/ChannelConfig;
+PLcom/android/server/power/hint/HintManagerService$ChannelItem;-><init>(Lcom/android/server/power/hint/HintManagerService;IILandroid/os/IBinder;)V
+PLcom/android/server/power/hint/HintManagerService$ChannelItem;->binderDied()V
+PLcom/android/server/power/hint/HintManagerService$ChannelItem;->closeChannel()V
+PLcom/android/server/power/hint/HintManagerService$ChannelItem;->openChannel()V
+PLcom/android/server/power/hint/HintManagerService$CleanUpHandler;-><init>(Lcom/android/server/power/hint/HintManagerService;Landroid/os/Looper;)V
+PLcom/android/server/power/hint/HintManagerService$Injector;-><init>()V
+PLcom/android/server/power/hint/HintManagerService$MyUidObserver$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/hint/HintManagerService$MyUidObserver;II)V
+HPLcom/android/server/power/hint/HintManagerService$MyUidObserver$$ExternalSyntheticLambda0;->run()V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
PLcom/android/server/power/hint/HintManagerService$MyUidObserver$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/hint/HintManagerService$MyUidObserver;I)V
PLcom/android/server/power/hint/HintManagerService$MyUidObserver$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/power/hint/HintManagerService$MyUidObserver;->$r8$lambda$8-3q2FSoHxKJS5M75tlJXQ5W92M(Lcom/android/server/power/hint/HintManagerService$MyUidObserver;I)V
-PLcom/android/server/power/hint/HintManagerService$MyUidObserver;->$r8$lambda$G5ujTcrPvq25wCnbVcETC3ZVxqA(Lcom/android/server/power/hint/HintManagerService$MyUidObserver;II)V
-HSPLcom/android/server/power/hint/HintManagerService$MyUidObserver;-><init>(Lcom/android/server/power/hint/HintManagerService;)V
-HPLcom/android/server/power/hint/HintManagerService$MyUidObserver;->isUidForeground(I)Z
-HPLcom/android/server/power/hint/HintManagerService$MyUidObserver;->lambda$onUidGone$0(I)V
-HPLcom/android/server/power/hint/HintManagerService$MyUidObserver;->lambda$onUidStateChanged$1(II)V
-HPLcom/android/server/power/hint/HintManagerService$MyUidObserver;->onUidGone(IZ)V
+PLcom/android/server/power/hint/HintManagerService$MyUidObserver;-><init>(Lcom/android/server/power/hint/HintManagerService;)V
+PLcom/android/server/power/hint/HintManagerService$MyUidObserver;->onUidGone(IZ)V
HPLcom/android/server/power/hint/HintManagerService$MyUidObserver;->onUidStateChanged(IIJI)V
-HSPLcom/android/server/power/hint/HintManagerService$NativeWrapper;-><init>()V
-HSPLcom/android/server/power/hint/HintManagerService$NativeWrapper;->halGetHintSessionPreferredRate()J
-HSPLcom/android/server/power/hint/HintManagerService$NativeWrapper;->halInit()V
-HPLcom/android/server/power/hint/HintManagerService;->-$$Nest$fgetmActiveSessions(Lcom/android/server/power/hint/HintManagerService;)Landroid/util/ArrayMap;
-PLcom/android/server/power/hint/HintManagerService;->-$$Nest$fgetmLock(Lcom/android/server/power/hint/HintManagerService;)Ljava/lang/Object;
-PLcom/android/server/power/hint/HintManagerService;->-$$Nest$misHalSupported(Lcom/android/server/power/hint/HintManagerService;)Z
-HSPLcom/android/server/power/hint/HintManagerService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/power/hint/HintManagerService;-><init>(Landroid/content/Context;Lcom/android/server/power/hint/HintManagerService$Injector;)V
-PLcom/android/server/power/hint/HintManagerService;->isHalSupported()Z
-HSPLcom/android/server/power/hint/HintManagerService;->onBootPhase(I)V
-HSPLcom/android/server/power/hint/HintManagerService;->onStart()V
-PLcom/android/server/power/hint/HintManagerService;->registerStatsCallbacks()V
-PLcom/android/server/power/hint/HintManagerService;->systemReady()V
-HSPLcom/android/server/power/optimization/FeatureFlagsImpl;-><clinit>()V
-HSPLcom/android/server/power/optimization/FeatureFlagsImpl;-><init>()V
-HSPLcom/android/server/power/optimization/FeatureFlagsImpl;->disableSystemServicePowerAttr()Z
-PLcom/android/server/power/optimization/FeatureFlagsImpl;->load_overrides_backstage_power()V
-PLcom/android/server/power/optimization/FeatureFlagsImpl;->streamlinedBatteryStats()Z
-HSPLcom/android/server/power/optimization/Flags;-><clinit>()V
-HSPLcom/android/server/power/optimization/Flags;->disableSystemServicePowerAttr()Z
-PLcom/android/server/power/optimization/Flags;->streamlinedBatteryStats()Z
-HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig$1;-><init>()V
-HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;-><init>(I)V
-HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;->getPowerComponentId()I
-HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;->getProcessor()Lcom/android/server/power/stats/AggregatedPowerStatsProcessor;
-HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;->setProcessor(Lcom/android/server/power/stats/AggregatedPowerStatsProcessor;)Lcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;
-HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;->trackDeviceStates([I)Lcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;
-HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;->trackUidStates([I)Lcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;
-HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig;->-$$Nest$sfgetNO_OP_PROCESSOR()Lcom/android/server/power/stats/AggregatedPowerStatsProcessor;
-HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig;-><clinit>()V
-HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig;-><init>()V
-HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig;->getPowerComponentsAggregatedStatsConfigs()Ljava/util/List;
-HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig;->trackPowerComponent(I)Lcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;
-HSPLcom/android/server/power/stats/AggregatedPowerStatsProcessor;-><init>()V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda0;-><init>()V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda0;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;
+PLcom/android/server/power/hint/HintManagerService$NativeWrapper;-><init>()V
+PLcom/android/server/power/hint/HintManagerService$NativeWrapper;->halGetHintSessionPreferredRate()J
+PLcom/android/server/power/hint/HintManagerService$NativeWrapper;->halInit()V
+PLcom/android/server/power/hint/HintManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/power/hint/HintManagerService;-><init>(Landroid/content/Context;Lcom/android/server/power/hint/HintManagerService$Injector;)V
+PLcom/android/server/power/hint/HintManagerService;->onBootPhase(I)V
+PLcom/android/server/power/hint/HintManagerService;->onStart()V
+PLcom/android/server/power/hint/HintManagerService;->removeChannelItem(Ljava/lang/Integer;Ljava/lang/Integer;)V
+PLcom/android/server/power/stats/AccumulatedBatteryUsageStatsSection$Reader;->read(Lcom/android/modules/utils/TypedXmlPullParser;)Lcom/android/server/power/stats/PowerStatsSpan$Section;
+PLcom/android/server/power/stats/AccumulatedBatteryUsageStatsSection;-><init>(Landroid/os/BatteryUsageStats$Builder;)V
+PLcom/android/server/power/stats/AccumulatedBatteryUsageStatsSection;->write(Lcom/android/modules/utils/TypedXmlSerializer;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda2;->run()V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda5;-><init>(Ljava/lang/Runnable;)V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda5;->run()V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda6;-><init>(Landroid/os/SynchronousResultReceiver;)V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda6;->onWifiActivityEnergyInfo(Landroid/os/connectivity/WifiActivityEnergyInfo;)V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda7;->run()V
-HPLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;I)V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda8;->run()V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda2;-><init>(Landroid/os/SynchronousResultReceiver;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda2;->onWifiActivityEnergyInfo(Landroid/os/connectivity/WifiActivityEnergyInfo;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;I)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda5;->run()V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda6;->run()V
HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$1;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$1;->run()V
+HPLcom/android/server/power/stats/BatteryExternalStatsWorker$1;->run()V
HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$2;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$2;->run()V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker$3;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$2;->run()V
PLcom/android/server/power/stats/BatteryExternalStatsWorker$3;->execute(Ljava/lang/Runnable;)V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker$4;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;Landroid/os/SynchronousResultReceiver;)V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker$4;->onBluetoothActivityEnergyInfoAvailable(Landroid/bluetooth/BluetoothActivityEnergyInfo;)V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker$5;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;Ljava/util/concurrent/CompletableFuture;)V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker$5;->onError(Landroid/telephony/TelephonyManager$ModemActivityInfoException;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$5;-><init>(Ljava/util/concurrent/CompletableFuture;)V
PLcom/android/server/power/stats/BatteryExternalStatsWorker$5;->onError(Ljava/lang/Throwable;)V
HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$Injector;-><init>(Landroid/content/Context;)V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker$Injector;->getLocalService(Ljava/lang/Class;)Ljava/lang/Object;
-PLcom/android/server/power/stats/BatteryExternalStatsWorker$Injector;->getSystemService(Ljava/lang/Class;)Ljava/lang/Object;
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->$r8$lambda$TgNX_p2V0O5r6X5mUinj9SCyWf4(Ljava/lang/Runnable;)V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker;->$r8$lambda$Wx33MmwbjqfDxlQQrg9moONX6GA(Landroid/os/SynchronousResultReceiver;Landroid/os/connectivity/WifiActivityEnergyInfo;)V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker;->$r8$lambda$fzONXx64Mcwd9mw55thi-ZcrYmg(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker;->$r8$lambda$gqMSfdpdVW3FAyYkJhAyC8ggBas(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker;->$r8$lambda$j2OKKiCfbZA6ci9IVMhM3dJE-Hk(Lcom/android/server/power/stats/BatteryExternalStatsWorker;I)V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker;->$r8$lambda$teZaibf_MXjhvvOUBkWARv-cTiA(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->$r8$lambda$xuE6vcYTQgXCEAaRtlmzQWy8b9c(Ljava/lang/Runnable;)Ljava/lang/Thread;
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fgetmCurrentReason(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)Ljava/lang/String;
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fgetmOnBattery(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)Z
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fgetmOnBatteryScreenOff(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)Z
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fgetmPerDisplayScreenStates(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)[I
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fgetmScreenState(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)I
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fgetmStats(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)Lcom/android/server/power/stats/BatteryStatsImpl;
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fgetmUpdateFlags(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)I
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fgetmUseLatestStates(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)Z
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fgetmWorkerLock(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)Ljava/lang/Object;
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fputmCurrentFuture(Lcom/android/server/power/stats/BatteryExternalStatsWorker;Ljava/util/concurrent/Future;)V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fputmCurrentReason(Lcom/android/server/power/stats/BatteryExternalStatsWorker;Ljava/lang/String;)V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fputmLastCollectionTimeStamp(Lcom/android/server/power/stats/BatteryExternalStatsWorker;J)V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fputmUpdateFlags(Lcom/android/server/power/stats/BatteryExternalStatsWorker;I)V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fputmUseLatestStates(Lcom/android/server/power/stats/BatteryExternalStatsWorker;Z)V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$mcancelSyncDueToBatteryLevelChangeLocked(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$mupdateExternalStatsLocked(Lcom/android/server/power/stats/BatteryExternalStatsWorker;Ljava/lang/String;IZZI[IZ)V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;-><init>(Landroid/content/Context;Lcom/android/server/power/stats/BatteryStatsImpl;)V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker$Injector;Lcom/android/server/power/stats/BatteryStatsImpl;)V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->awaitControllerInfo(Landroid/os/SynchronousResultReceiver;)Landroid/os/Parcelable;
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->cancelCpuSyncDueToWakelockChange()V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->cancelSyncDueToBatteryLevelChangeLocked()V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->cancelSyncDueToProcessStateChange()V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->getEnergyConsumersLocked(I)Ljava/util/concurrent/CompletableFuture;
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->lambda$new$0(Ljava/lang/Runnable;)V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->lambda$new$1(Ljava/lang/Runnable;)Ljava/lang/Thread;
-PLcom/android/server/power/stats/BatteryExternalStatsWorker;->lambda$scheduleCpuSyncDueToWakelockChange$2()V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker;->lambda$scheduleCpuSyncDueToWakelockChange$3()V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker;->lambda$scheduleSyncDueToBatteryLevelChange$4()V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker;->lambda$scheduleSyncDueToProcessStateChange$5(I)V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker;->lambda$updateExternalStatsLocked$8(Landroid/os/SynchronousResultReceiver;Landroid/os/connectivity/WifiActivityEnergyInfo;)V
+HPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$mupdateExternalStatsLocked(Lcom/android/server/power/stats/BatteryExternalStatsWorker;Ljava/lang/String;IZZ[IZ)V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker$Injector;Lcom/android/server/power/stats/BatteryStatsImpl;Landroid/os/Handler;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->awaitControllerInfo(Landroid/os/SynchronousResultReceiver;)Landroid/os/Parcelable;
+HPLcom/android/server/power/stats/BatteryExternalStatsWorker;->extractDeltaLocked(Landroid/os/connectivity/WifiActivityEnergyInfo;)Landroid/os/connectivity/WifiActivityEnergyInfo;
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->getEnergyConsumersLocked(I)Ljava/util/concurrent/CompletableFuture;
PLcom/android/server/power/stats/BatteryExternalStatsWorker;->populateEnergyConsumerSubsystemMapsLocked()Landroid/util/SparseArray;
-PLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleCpuSyncDueToWakelockChange(J)Ljava/util/concurrent/Future;
-HPLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleDelayedSyncLocked(Ljava/util/concurrent/Future;Ljava/lang/Runnable;J)Ljava/util/concurrent/Future;
-PLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleRunnable(Ljava/lang/Runnable;)V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleSync(Ljava/lang/String;I)Ljava/util/concurrent/Future;
-PLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleSyncDueToBatteryLevelChange(J)Ljava/util/concurrent/Future;
-HPLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleSyncDueToProcessStateChange(IJ)V
-PLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleSyncDueToScreenStateChange(IZZI[I)Ljava/util/concurrent/Future;
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleSyncLocked(Ljava/lang/String;I)Ljava/util/concurrent/Future;
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleWrite()Ljava/util/concurrent/Future;
+HPLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleDelayedSyncLocked(IJLjava/lang/Runnable;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleSync(ILjava/lang/String;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleSyncLocked(ILjava/lang/String;)V
PLcom/android/server/power/stats/BatteryExternalStatsWorker;->systemServicesReady()V
-HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->updateExternalStatsLocked(Ljava/lang/String;IZZI[IZ)V
HSPLcom/android/server/power/stats/BatteryStatsDumpHelperImpl;-><init>(Lcom/android/server/power/stats/BatteryUsageStatsProvider;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
-PLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda10;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda7;->run()V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$1;-><init>()V
+PLcom/android/server/power/stats/BatteryStatsDumpHelperImpl;->getBatteryUsageStats(Landroid/os/BatteryStats;Z)Landroid/os/BatteryUsageStats;
+PLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;Landroid/app/AlarmManager;J)V
+PLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;Landroid/app/AlarmManager;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda12;->run()V
+PLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;JJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda1;->onUidCpuTime(ILjava/lang/Object;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda4;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda4;->run()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;JJZZZII[ILcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda7;->onUidCpuTime(ILjava/lang/Object;)V+]Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/internal/os/CpuScalingPolicies;]Lcom/android/server/power/stats/BatteryStatsImpl$UserInfoProvider;Lcom/android/server/am/BatteryStatsService$3;
+PLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;JJZLcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda8;->onUidCpuTime(ILjava/lang/Object;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;JJIZLandroid/util/SparseLongArray;)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda9;->onUidCpuTime(ILjava/lang/Object;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$1;->getCountLocked(I)J
HSPLcom/android/server/power/stats/BatteryStatsImpl$2;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
-PLcom/android/server/power/stats/BatteryStatsImpl$3;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
-PLcom/android/server/power/stats/BatteryStatsImpl$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$4;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
-PLcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;-><init>(Lcom/android/internal/os/Clock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;ILcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
-PLcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;->abortLastDuration(J)V
-PLcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;->addDuration(JJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;->computeOverage(J)J
+HSPLcom/android/server/power/stats/BatteryStatsImpl$5;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$6;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$7;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$8;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;Ljava/lang/Object;JI)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$8;->run()V
+PLcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;->computeCurrentCountLocked()I
+PLcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;->computeRunTimeLocked(JJ)J
+PLcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;->onTimeStarted(JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;->onTimeStopped(JJJ)V
PLcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;->recomputeLastDuration(JZ)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;->-$$Nest$fgetmPowerStatsThrottlePeriodCpu(Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;)J
-HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;->-$$Nest$fgetmResetOnUnplugAfterSignificantCharge(Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;)Z
-HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;->-$$Nest$fgetmResetOnUnplugHighBatteryLevel(Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;)Z
+PLcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;->reset(JZ)Z
+HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;-><clinit>()V
HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;-><init>()V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;->build()Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;->setPowerStatsThrottlePeriodCpu(J)Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;->setResetOnUnplugAfterSignificantCharge(Z)Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;->setResetOnUnplugHighBatteryLevel(Z)Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;
HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig-IA;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig;->getPowerStatsThrottlePeriodCpu()J
HSPLcom/android/server/power/stats/BatteryStatsImpl$BinderCallStats;-><init>()V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$BluetoothActivityInfoCache;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$BluetoothActivityInfoCache;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl$BluetoothActivityInfoCache-IA;)V
-PLcom/android/server/power/stats/BatteryStatsImpl$BluetoothActivityInfoCache;->set(Landroid/bluetooth/BluetoothActivityEnergyInfo;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Constants;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;Landroid/os/Handler;)V
-PLcom/android/server/power/stats/BatteryStatsImpl$Constants;->getPerUidModemModel(Ljava/lang/String;)I
+PLcom/android/server/power/stats/BatteryStatsImpl$BluetoothStatsRetrieverImpl;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;Landroid/bluetooth/BluetoothManager;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Constants;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl$MyHandler;)V
PLcom/android/server/power/stats/BatteryStatsImpl$Constants;->onChange()V
-PLcom/android/server/power/stats/BatteryStatsImpl$Constants;->startObserving(Landroid/content/ContentResolver;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Constants;->onChange(ZLandroid/net/Uri;)V
PLcom/android/server/power/stats/BatteryStatsImpl$Constants;->updateBatteryChargedDelayMsLocked()V
PLcom/android/server/power/stats/BatteryStatsImpl$Constants;->updateBatteryChargingEnforceLevelLocked()V
PLcom/android/server/power/stats/BatteryStatsImpl$Constants;->updateConstants()V
PLcom/android/server/power/stats/BatteryStatsImpl$Constants;->updateKernelUidReadersThrottleTime(JJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl$Constants;->updateUidRemoveDelay(J)V
+PLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->-$$Nest$mgetOrCreateRxTimeCounter(Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;)Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
+PLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->-$$Nest$mgetOrCreateTxTimeCounters(Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;)[Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
+PLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->-$$Nest$msetState(Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;IJ)V
HSPLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;-><init>(Lcom/android/internal/os/Clock;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;I)V
+PLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->createTimeMultiStateCounter()Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
+PLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->getIdleTimeCounter()Landroid/os/BatteryStats$LongCounter;
+PLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->getMonitoredRailChargeConsumedMaMs()Landroid/os/BatteryStats$LongCounter;
+PLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->getPowerCounter()Landroid/os/BatteryStats$LongCounter;
+PLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->getRxTimeCounter()Landroid/os/BatteryStats$LongCounter;
+PLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->getScanTimeCounter()Landroid/os/BatteryStats$LongCounter;
+PLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->getSleepTimeCounter()Landroid/os/BatteryStats$LongCounter;
+PLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->getTxTimeCounters()[Landroid/os/BatteryStats$LongCounter;
HSPLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->readSummaryFromParcel(Landroid/os/Parcel;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->readTimeMultiStateCounter(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->readTimeMultiStateCounters(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;I)[Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->writeSummaryToParcel(Landroid/os/Parcel;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->writeTimeMultiStateCounter(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->writeTimeMultiStateCounters(Landroid/os/Parcel;[Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->reset(J)V
+PLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->writeSummaryToParcel(Landroid/os/Parcel;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->writeTimeMultiStateCounter(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;)V
HSPLcom/android/server/power/stats/BatteryStatsImpl$Counter;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Counter;->addAtomic(I)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Counter;->detach()V
+PLcom/android/server/power/stats/BatteryStatsImpl$Counter;->getCountLocked(I)I
+PLcom/android/server/power/stats/BatteryStatsImpl$Counter;->onTimeStarted(JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Counter;->onTimeStopped(JJJ)V
HSPLcom/android/server/power/stats/BatteryStatsImpl$Counter;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Counter;->writeSummaryFromParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$DisplayBatteryStats;-><init>(Lcom/android/internal/os/Clock;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$DisplayBatteryStats;->readSummaryFromParcel(Landroid/os/Parcel;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$DisplayBatteryStats;->writeSummaryToParcel(Landroid/os/Parcel;J)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;-><init>(Lcom/android/internal/os/Clock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Counter;->reset(JZ)Z
+HPLcom/android/server/power/stats/BatteryStatsImpl$Counter;->stepAtomic()V
+PLcom/android/server/power/stats/BatteryStatsImpl$Counter;->writeSummaryFromParcelLocked(Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Ljava/util/ArrayList;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->detach()V
+PLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->getSubTimer()Landroid/os/BatteryStats$Timer;
HSPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->startRunningLocked(J)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->stopRunningLocked(J)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;-><init>(Lcom/android/internal/os/Clock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->getCurrentDurationMsLocked(J)J
-HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->getMaxDurationMsLocked(J)J
-HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->getTotalDurationMsLocked(J)J
+PLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->reset(JZ)Z
+HPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->startRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;
+HPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->stopRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;
+PLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Ljava/util/ArrayList;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->getCurrentDurationMsLocked(J)J
+PLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->getMaxDurationMsLocked(J)J
+PLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->getTotalDurationMsLocked(J)J
+HPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->onTimeStarted(JJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->onTimeStopped(JJJ)V
HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->reset(JZ)Z
HPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->startRunningLocked(J)V
HPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->stopRunningLocked(J)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
-PLcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;->batteryLevelChanged(I)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;->batterySaverModeChanged(Z)V
-PLcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;->chargingStateChanged(I)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;->deviceIdleModeStateChanged(I)V
-PLcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;->pluggedStateChanged(I)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;->uidProcessStateChanged(II)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;->wakelockStateChanged(ILandroid/os/WorkSource$WorkChain;Ljava/lang/String;IIZ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V
HSPLcom/android/server/power/stats/BatteryStatsImpl$HistoryStepDetailsCalculatorImpl;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$HistoryStepDetailsCalculatorImpl;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl$HistoryStepDetailsCalculatorImpl-IA;)V
HSPLcom/android/server/power/stats/BatteryStatsImpl$HistoryStepDetailsCalculatorImpl;->clear()V
-PLcom/android/server/power/stats/BatteryStatsImpl$HistoryStepDetailsCalculatorImpl;->finishAddingCpuLocked()V
-HPLcom/android/server/power/stats/BatteryStatsImpl$HistoryStepDetailsCalculatorImpl;->getHistoryStepDetails()Landroid/os/BatteryStats$HistoryStepDetails;
+HPLcom/android/server/power/stats/BatteryStatsImpl$HistoryStepDetailsCalculatorImpl;->getHistoryStepDetails()Landroid/os/BatteryStats$HistoryStepDetails;+]Landroid/power/PowerStatsInternal;Lcom/android/server/powerstats/PowerStatsService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;
HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->reset(ZJ)Z
-HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->writeSummaryFromParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->-$$Nest$mreadSummaryFromParcelLocked(Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;Landroid/os/Parcel;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->-$$Nest$mwriteSummaryToParcelLocked(Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;Landroid/os/Parcel;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->addCountLocked(J)V
+PLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->addCountLocked(JZ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->detach()V
+PLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->getCountLocked(I)J
+PLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->onTimeStarted(JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->onTimeStopped(JJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->reset(JZ)Z
HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->readSummaryFromParcelLocked(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->writeSummaryToParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->writeSummaryToParcelLocked(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->addCountLocked([JZ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->detach()V
+PLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->getCountsLocked(I)[J
+PLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->onTimeStarted(JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->onTimeStopped(JJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->reset(JZ)Z
HSPLcom/android/server/power/stats/BatteryStatsImpl$MyHandler;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;Landroid/os/Looper;)V
PLcom/android/server/power/stats/BatteryStatsImpl$MyHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;I)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;->add(Ljava/lang/String;Ljava/lang/Object;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;->getMap()Landroid/util/ArrayMap;
-HPLcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;->startObject(Ljava/lang/String;J)Ljava/lang/Object;
-HPLcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;->stopObject(Ljava/lang/String;J)Ljava/lang/Object;
+PLcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
+PLcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector$$ExternalSyntheticLambda1;->get()Ljava/lang/Object;
+PLcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector$$ExternalSyntheticLambda3;->getAsLong()J
+PLcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector$$ExternalSyntheticLambda4;->getAsLong()J
+HSPLcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector;->getPowerStatsCollectionThrottlePeriod(Ljava/lang/String;)J
HSPLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;-><init>(Lcom/android/internal/os/Clock;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->computeCurrentCountLocked()I
-HSPLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->computeRunTimeLocked(JJ)J
-HSPLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->endSample(J)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->getUpdateVersion()I
-HSPLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->setUpdateVersion(I)V
-PLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->update(JIJ)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->update(JJIJ)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;-><init>(Lcom/android/internal/os/Clock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->computeCurrentCountLocked()I
-HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->computeRunTimeLocked(JJ)J
+PLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->computeCurrentCountLocked()I
+PLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->computeRunTimeLocked(JJ)J
+PLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->onTimeStarted(JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->onTimeStopped(JJJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->update(JJIJ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Ljava/util/ArrayList;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;I)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->computeCurrentCountLocked()I
+HPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->computeRunTimeLocked(JJ)J+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->detach()V
PLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->isRunningLocked()Z
+HPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->onTimeStopped(JJJ)V
HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->refreshTimersLocked(JLjava/util/ArrayList;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;)J
-HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->setTimeout(J)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->startRunningLocked(J)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->stopRunningLocked(J)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->refreshTimersLocked(JLjava/util/ArrayList;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->reset(JZ)Z
+PLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->setMark(J)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->startRunningLocked(J)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->stopRunningLocked(J)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;-><init>(Z)V
HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->add(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->computeRealtime(JI)J
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->computeUptime(JI)J
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->getRealtime(J)J
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->getUptime(J)J
+PLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->computeRealtime(J)J
+HPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->getRealtime(J)J
+PLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->getUptime(J)J
HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->init(JJ)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->isRunning()Z
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->readSummaryFromParcel(Landroid/os/Parcel;)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->setRunning(ZJJ)Z
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->writeSummaryToParcel(Landroid/os/Parcel;JJ)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;->-$$Nest$mwriteToParcel(Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;Landroid/os/Parcel;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;->-$$Nest$smreadFromParcel(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;IIJ)Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/LongArrayMultiStateCounter;J)V
-PLcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;->getCounter()Lcom/android/internal/os/LongArrayMultiStateCounter;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;->getStateCount()I
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;->readFromParcel(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;IIJ)Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;->writeToParcel(Landroid/os/Parcel;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->remove(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->setRunning(JJZ)Z+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;megamorphic_types]Ljava/util/Collection;Ljava/util/ArrayList;,Ljava/util/HashSet;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;,Ljava/util/HashMap$KeyIterator;
+PLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->writeSummaryToParcel(Landroid/os/Parcel;JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->-$$Nest$mincrement(Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;JJ)V
PLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->-$$Nest$msetState(Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;IJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->-$$Nest$mupdate(Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;JJ)J
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->-$$Nest$mwriteToParcel(Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;Landroid/os/Parcel;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->-$$Nest$smreadFromParcel(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;IJ)Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
-HPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;IJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;IJLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter-IA;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->-$$Nest$smreadFromParcel(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;J)Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
+PLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;IJ)V
HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/LongMultiStateCounter;J)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->getStateCount()I
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->readFromParcel(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;IJ)Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
-HPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->setState(IJ)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->update(JJ)J
-HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->writeToParcel(Landroid/os/Parcel;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Timer;-><init>(Lcom/android/internal/os/Clock;ILcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->detach()V
+PLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->getCountLocked(I)J
+PLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->onTimeStarted(JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->onTimeStopped(JJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->reset(JZ)Z
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Timer;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Timer;->detach()V
+PLcom/android/server/power/stats/BatteryStatsImpl$Timer;->getCountLocked(I)I
+PLcom/android/server/power/stats/BatteryStatsImpl$Timer;->getTimeSinceMarkLocked(J)J
+HPLcom/android/server/power/stats/BatteryStatsImpl$Timer;->getTotalTimeLocked(JI)J+]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
+PLcom/android/server/power/stats/BatteryStatsImpl$Timer;->onTimeStarted(JJ)V
HSPLcom/android/server/power/stats/BatteryStatsImpl$Timer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Timer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$1;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl;I)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid$1;->instantiateObject()Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;
-PLcom/android/server/power/stats/BatteryStatsImpl$Uid$1;->instantiateObject()Ljava/lang/Object;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$2;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl;I)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$3;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl;I)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid$3;->instantiateObject()Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;
-PLcom/android/server/power/stats/BatteryStatsImpl$Uid$3;->instantiateObject()Ljava/lang/Object;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->getStartTimeToNowLocked(J)J
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->startLaunchedLocked(J)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->startRunningLocked(J)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->stopLaunchedLocked(J)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->stopRunningLocked(J)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$Timer;->reset(JZ)Z
+PLcom/android/server/power/stats/BatteryStatsImpl$Timer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$1;-><init>(I)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$1;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl;II)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$1;->add(Ljava/lang/String;Ljava/lang/Object;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$1;->cleanup(J)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$1;->instantiateObject()Ljava/lang/Object;
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid$1;->startObject(JLjava/lang/String;)Ljava/lang/Object;
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid$1;->stopObject(JLjava/lang/String;)Ljava/lang/Object;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->detach()V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->getLaunches(I)I
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->getStartTime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->getStarts(I)I
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->onTimeStarted(JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->onTimeStopped(JJJ)V
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;->newServiceStatsLocked()Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Sensor;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;I)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->-$$Nest$fgetmMobileRadioApWakeupCount(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;)Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->-$$Nest$fgetmUidEnergyConsumerStats(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;)Lcom/android/internal/power/EnergyConsumerStats;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->-$$Nest$fgetmWifiRadioApWakeupCount(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;)Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->-$$Nest$fputmMobileRadioApWakeupCount(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->-$$Nest$fputmUidEnergyConsumerStats(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/internal/power/EnergyConsumerStats;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->-$$Nest$fputmWifiRadioApWakeupCount(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;)V
-PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->-$$Nest$mgetProcStateScreenOffTimeCounter(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;J)Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;
-PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->-$$Nest$mgetProcStateTimeCounter(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;J)Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;->detach()V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;->getServiceStats()Landroid/util/ArrayMap;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;->getWakeupAlarmStats()Landroid/util/ArrayMap;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;->noteWakeupAlarmLocked(Ljava/lang/String;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;->onTimeStarted(JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;->onTimeStopped(JJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;->countExcessivePowers()I
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;->detach()V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;->getForegroundTime(I)J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;->getNumAnrs(I)I
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;->getNumCrashes(I)I
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;->getStarts(I)I
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;->getSystemTime(I)J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;->getUserTime(I)J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;->onTimeStarted(JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;->onTimeStopped(JJJ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Sensor;-><init>(I)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Sensor;->getHandle()I
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Sensor;->getSensorBackgroundTime()Landroid/os/BatteryStats$Timer;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Sensor;->getSensorTime()Landroid/os/BatteryStats$Timer;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;->getWakeTime(I)Landroid/os/BatteryStats$Timer;
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;-><clinit>()V
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;IJJ)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->createAggregatedPartialWakelockTimerLocked()Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->createAudioTurnedOnTimerLocked()Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->createForegroundActivityTimerLocked()Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->createForegroundServiceTimerLocked()Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
-PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->createVibratorOnTimerLocked()Lcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;
-PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->ensureMultiStateCounters(J)V
-PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getBluetoothControllerActivity()Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getCpuActiveTimeCounter()Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->detachFromTimeBase()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->ensureNetworkActivityLocked()V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getAggregatedPartialWakelockTimer()Landroid/os/BatteryStats$Timer;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getAudioTurnedOnTimer()Landroid/os/BatteryStats$Timer;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getBluetoothControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getBluetoothScanTimer()Landroid/os/BatteryStats$Timer;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getCameraTurnedOnTimer()Landroid/os/BatteryStats$Timer;
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getCpuActiveTimeCounter()Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;+]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getCpuFreqTimes(I)[J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getCpuFreqTimes([JI)Z
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getDeferredJobsCheckinLineLocked(Ljava/lang/StringBuilder;I)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getDeferredJobsLineLocked(Ljava/lang/StringBuilder;I)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getFlashlightTurnedOnTimer()Landroid/os/BatteryStats$Timer;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getForegroundActivityTimer()Landroid/os/BatteryStats$Timer;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getForegroundServiceTimer()Landroid/os/BatteryStats$Timer;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getFullWifiLockTime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getJobCompletionStats()Landroid/util/ArrayMap;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getJobStats()Landroid/util/ArrayMap;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getMobileRadioActiveCount(I)I
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getMobileRadioActiveTime(I)J
HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getMobileRadioActiveTimeCounter()Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getOrCreateEnergyConsumerStatsIfSupportedLocked()Lcom/android/internal/power/EnergyConsumerStats;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getMobileRadioActiveTimeInProcessState(I)J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getMobileRadioApWakeupCount(I)J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getModemControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getMulticastWakelockStats()Landroid/os/BatteryStats$Timer;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getNetworkActivityBytes(II)J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getNetworkActivityPackets(II)J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getOrCreateWifiControllerActivityLocked()Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getPackageStats()Landroid/util/ArrayMap;
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getPackageStatsLocked(Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getPidStatsLocked(I)Landroid/os/BatteryStats$Uid$Pid;
-PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getProcStateScreenOffTimeCounter(J)Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;
-PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getProcStateTimeCounter(J)Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getPidStats()Landroid/util/SparseArray;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getProcessStateTime(IJI)J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getProcessStateTimer(I)Landroid/os/BatteryStats$Timer;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getProcessStats()Landroid/util/ArrayMap;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getProcessStatsLocked(Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getScreenOffCpuFreqTimes(I)[J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getScreenOffCpuFreqTimes([JI)Z
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getSensorStats()Landroid/util/SparseArray;
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getSensorTimerLocked(IZ)Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getServiceStatsLocked(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getSyncStats()Landroid/util/ArrayMap;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getSystemCpuTimeUs(I)J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getUid()I
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getUserActivityCount(II)I
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getUserCpuTimeUs(I)J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getVibratorOnTimer()Landroid/os/BatteryStats$Timer;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getVideoTurnedOnTimer()Landroid/os/BatteryStats$Timer;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWakelockStats()Landroid/util/ArrayMap;
HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWakelockTimerLocked(Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;I)Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWifiControllerActivity()Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->makeProcessState(ILandroid/os/Parcel;)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->maybeScheduleExternalStatsSync(II)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWifiBatchedScanTime(IJI)J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWifiControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWifiMulticastTime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWifiRadioApWakeupCount(I)J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWifiRunningTime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWifiScanActualTime(J)J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWifiScanBackgroundCount(I)I
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWifiScanBackgroundTime(J)J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWifiScanCount(I)I
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWifiScanTime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->hasUserActivity()Z
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->initUserActivityLocked()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->makeProcessState(I)V
PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteActivityPausedLocked(J)V
PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteActivityResumedLocked(J)V
-PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteAudioTurnedOffLocked(J)V
-PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteAudioTurnedOnLocked(J)V
-PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteForegroundServicePausedLocked(J)V
-PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteForegroundServiceResumedLocked(J)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStartJobLocked(Ljava/lang/String;J)V
-PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStartSensor(IJ)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStartWakeLocked(ILjava/lang/String;IJ)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStopJobLocked(Ljava/lang/String;JI)V
-PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStopSensor(IJ)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStopWakeLocked(ILjava/lang/String;IJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteVibratorOffLocked(J)V
-PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteVibratorOnLocked(JJ)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->readJobCompletionsFromParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->readWakeSummaryFromParcelLocked(Ljava/lang/String;Landroid/os/Parcel;)V
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->updateOnBatteryBgTimeBase(JJ)Z
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->updateOnBatteryScreenOffBgTimeBase(JJ)Z
-HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->updateUidProcessStateLocked(IJJ)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->writeJobCompletionsToParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl$UserInfoProvider;-><init>()V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteNetworkActivityLocked(IJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteUserActivityLocked(I)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteWifiScanStartedLocked(J)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteWifiScanStoppedLocked(J)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->nullIfAllZeros(Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;I)[J
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->reset(JJI)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
+PLcom/android/server/power/stats/BatteryStatsImpl$UserInfoProvider;->exists(I)Z
+PLcom/android/server/power/stats/BatteryStatsImpl$UserInfoProvider;->refreshUserIds()V
PLcom/android/server/power/stats/BatteryStatsImpl;->$r8$lambda$4oR0MyxxkPH0JSQXqVxAZgbHyhc(Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/internal/os/PowerStats;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->$r8$lambda$55y1ivO2sjC-T6ZAKfbd9ZmL96Q(Lcom/android/server/power/stats/BatteryStatsImpl;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmAudioTurnedOnTimers(Lcom/android/server/power/stats/BatteryStatsImpl;)Ljava/util/ArrayList;
-PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmCallback(Lcom/android/server/power/stats/BatteryStatsImpl;)Lcom/android/server/power/stats/BatteryStatsImpl$BatteryCallback;
-PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmDeferSetCharging(Lcom/android/server/power/stats/BatteryStatsImpl;)Ljava/lang/Runnable;
-HPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmExternalSync(Lcom/android/server/power/stats/BatteryStatsImpl;)Lcom/android/server/power/stats/BatteryStatsImpl$ExternalStatsSync;
-PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmFullTimers(Lcom/android/server/power/stats/BatteryStatsImpl;)Ljava/util/ArrayList;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmFullWifiLockTimers(Lcom/android/server/power/stats/BatteryStatsImpl;)Ljava/util/ArrayList;
-PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmHistory(Lcom/android/server/power/stats/BatteryStatsImpl;)Lcom/android/internal/os/BatteryStatsHistory;
-PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmPlatformIdleStateCallback(Lcom/android/server/power/stats/BatteryStatsImpl;)Lcom/android/server/power/stats/BatteryStatsImpl$PlatformIdleStateCallback;
-PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmPowerStatsCollectorEnabled(Lcom/android/server/power/stats/BatteryStatsImpl;)Z
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmSensorTimers(Lcom/android/server/power/stats/BatteryStatsImpl;)Landroid/util/SparseArray;
-PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmSystemReady(Lcom/android/server/power/stats/BatteryStatsImpl;)Z
-PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmUidStats(Lcom/android/server/power/stats/BatteryStatsImpl;)Landroid/util/SparseArray;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmWifiMulticastTimers(Lcom/android/server/power/stats/BatteryStatsImpl;)Ljava/util/ArrayList;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmWifiRunningTimers(Lcom/android/server/power/stats/BatteryStatsImpl;)Ljava/util/ArrayList;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmWifiScanTimers(Lcom/android/server/power/stats/BatteryStatsImpl;)Ljava/util/ArrayList;
-HPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$mgetPowerManagerWakeLockLevel(Lcom/android/server/power/stats/BatteryStatsImpl;I)I
-HPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$mmapIsolatedUid(Lcom/android/server/power/stats/BatteryStatsImpl;I)I
-PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$mnoteUsbConnectionStateLocked(Lcom/android/server/power/stats/BatteryStatsImpl;ZJJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$mrequestImmediateCpuUpdate(Lcom/android/server/power/stats/BatteryStatsImpl;)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$mtrackPerProcStateCpuTimes(Lcom/android/server/power/stats/BatteryStatsImpl;)Z
-HPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$sfgetMAX_WAKELOCKS_PER_UID()I
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$smdetachIfNotNull(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;)V
-HPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$smisActiveRadioPowerState(I)Z
+PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$mretrieveBluetoothScanTimesLocked(Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BluetoothPowerStatsCollector$$ExternalSyntheticLambda0;)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$mretrieveWifiScanTimesLocked(Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/WifiPowerStatsCollector$$ExternalSyntheticLambda1;)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$smdetachIfNotNull(Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;)V
HSPLcom/android/server/power/stats/BatteryStatsImpl;-><clinit>()V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig;Lcom/android/internal/os/Clock;Lcom/android/internal/os/MonotonicClock;Ljava/io/File;Landroid/os/Handler;Lcom/android/server/power/stats/BatteryStatsImpl$PlatformIdleStateCallback;Lcom/android/server/power/stats/BatteryStatsImpl$EnergyStatsRetriever;Lcom/android/server/power/stats/BatteryStatsImpl$UserInfoProvider;Lcom/android/internal/os/PowerProfile;Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/server/power/stats/PowerStatsUidResolver;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig;Lcom/android/internal/os/Clock;Lcom/android/internal/os/MonotonicClock;Ljava/io/File;Landroid/os/Handler;Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService$3;Lcom/android/internal/os/PowerProfile;Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/server/power/stats/PowerStatsUidResolver;)V
HSPLcom/android/server/power/stats/BatteryStatsImpl;->access$000()Z
PLcom/android/server/power/stats/BatteryStatsImpl;->access$100()Z
PLcom/android/server/power/stats/BatteryStatsImpl;->access$200()Z
-PLcom/android/server/power/stats/BatteryStatsImpl;->adjustStartClockTime(J)V
-HPLcom/android/server/power/stats/BatteryStatsImpl;->aggregateLastWakeupUptimeLocked(JJ)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->clearPendingRemovedUidsLocked()V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->computeRealtime(JI)J
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->computeUptime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->addCpuStatsLocked(IIIIIIII)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->clearPendingRemovedUidsLocked()V
+PLcom/android/server/power/stats/BatteryStatsImpl;->collectPowerStatsSamples()V
+PLcom/android/server/power/stats/BatteryStatsImpl;->computeBatteryRealtime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->computeBatteryScreenOffRealtime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->computeBatteryScreenOffUptime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->computeBatteryTimeRemaining(J)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->computeBatteryUptime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->computeChargeTimeRemaining(J)J
+HPLcom/android/server/power/stats/BatteryStatsImpl;->computeDelta(Landroid/net/NetworkStats;Landroid/net/NetworkStats;)Ljava/util/List;+]Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry;
+PLcom/android/server/power/stats/BatteryStatsImpl;->computeRealtime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->computeUptime(JI)J
HSPLcom/android/server/power/stats/BatteryStatsImpl;->detachIfNotNull(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;)V
HSPLcom/android/server/power/stats/BatteryStatsImpl;->detachIfNotNull([Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;)V
HSPLcom/android/server/power/stats/BatteryStatsImpl;->detachIfNotNull([[Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->ensureKernelSingleUidTimeReaderLocked()V
+PLcom/android/server/power/stats/BatteryStatsImpl;->dump(Landroid/content/Context;Ljava/io/PrintWriter;IIJLandroid/os/BatteryStats$BatteryStatsDumpHelper;)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->dumpConstantsLocked(Ljava/io/PrintWriter;)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->dumpEnergyConsumerStatsLocked(Ljava/io/PrintWriter;)V
PLcom/android/server/power/stats/BatteryStatsImpl;->evaluateOverallScreenBrightnessBinLocked()I
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->fillLowPowerStats()V
-PLcom/android/server/power/stats/BatteryStatsImpl;->finishAddingCpuStatsLocked()V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->getAvailableUidStatsLocked(I)Lcom/android/server/power/stats/BatteryStatsImpl$Uid;
-HPLcom/android/server/power/stats/BatteryStatsImpl;->getBatteryUptimeLocked(J)J
-PLcom/android/server/power/stats/BatteryStatsImpl;->getBatteryVoltageMvLocked()I
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->getDischargeAmountScreenDozeSinceCharge()I
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->getDischargeAmountScreenOffSinceCharge()I
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->getDischargeAmountScreenOnSinceCharge()I
+PLcom/android/server/power/stats/BatteryStatsImpl;->excludeFromStringArray(Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;
+PLcom/android/server/power/stats/BatteryStatsImpl;->fillLowPowerStats()V
+PLcom/android/server/power/stats/BatteryStatsImpl;->getActiveRadioDurationMs(IIIJ)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getActiveRxRadioDurationMs(IIJ)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getActiveTxRadioDurationMs(IIIJ)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getBatteryUptime(J)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getBluetoothControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getBluetoothScanTime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getCellularBatteryStats()Landroid/os/connectivity/CellularBatteryStats;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getChargeLevelStepTracker()Landroid/os/BatteryStats$LevelStepTracker;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getCpuScalingPolicies()Lcom/android/internal/os/CpuScalingPolicies;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getCurrentDailyStartTime()J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getCustomEnergyConsumerNames()[Ljava/lang/String;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getDailyChargeLevelStepTracker()Landroid/os/BatteryStats$LevelStepTracker;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getDailyDischargeLevelStepTracker()Landroid/os/BatteryStats$LevelStepTracker;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getDailyItemLocked(I)Landroid/os/BatteryStats$DailyItem;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getDailyPackageChanges()Ljava/util/ArrayList;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getDeviceIdleModeCount(II)I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getDeviceIdleModeTime(IJI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getDeviceIdlingCount(II)I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getDeviceIdlingTime(IJI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getDischargeAmountScreenDozeSinceCharge()I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getDischargeAmountScreenOffSinceCharge()I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getDischargeAmountScreenOnSinceCharge()I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getDischargeLevelStepTracker()Landroid/os/BatteryStats$LevelStepTracker;
PLcom/android/server/power/stats/BatteryStatsImpl;->getDisplayCount()I
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->getHighDischargeAmountSinceCharge()I
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->getHistory()Lcom/android/internal/os/BatteryStatsHistory;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->getIsOnBattery()Z
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->getKernelWakelockTimerLocked(Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->getLowDischargeAmountSinceCharge()I
-PLcom/android/server/power/stats/BatteryStatsImpl;->getPowerManagerWakeLockLevel(I)I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getDisplayScreenBrightnessTime(IIJ)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getDisplayScreenDozeTime(IJ)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getDisplayScreenOnTime(IJ)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getEndPlatformVersion()Ljava/lang/String;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getEstimatedBatteryCapacity()I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getExternalStatsCollectionRateLimitMs()J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getGlobalWifiRunningTime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getGpsBatteryDrainMaMs()J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getGpsBatteryStats()Landroid/os/connectivity/GpsBatteryStats;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getGpsSignalQualityTime(IJI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getHighDischargeAmountSinceCharge()I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getHistoryStringPoolBytes()I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getHistoryStringPoolSize()I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getHistoryTagPoolString(I)Ljava/lang/String;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getHistoryTagPoolUid(I)I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getHistoryTotalSize()I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getHistoryUsedSize()I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getInteractiveTime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getIsOnBattery()Z
+PLcom/android/server/power/stats/BatteryStatsImpl;->getKernelMemoryStats()Landroid/util/LongSparseArray;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getKernelWakelockStats()Ljava/util/Map;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getLearnedBatteryCapacity()I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getLongestDeviceIdleModeTime(I)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getLowDischargeAmountSinceCharge()I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getMaxLearnedBatteryCapacity()I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getMinLearnedBatteryCapacity()I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getMobileRadioActiveAdjustedTime(I)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getMobileRadioActiveCount(I)I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getMobileRadioActiveTime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getMobileRadioActiveUnknownTime(I)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getModemControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getNetworkActivityBytes(II)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getNetworkActivityPackets(II)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getNextMaxDailyDeadline()J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getNextMinDailyDeadline()J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getNumConnectivityChange(I)I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getParcelVersion()I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getPhoneDataConnectionCount(II)I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getPhoneDataConnectionTime(IJI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getPhoneOnTime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getPhoneSignalScanningTime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getPhoneSignalStrengthCount(II)I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getPhoneSignalStrengthTime(IJI)J
+HPLcom/android/server/power/stats/BatteryStatsImpl;->getPowerManagerWakeLockLevel(I)I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getPowerSaveModeEnabledTime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getPowerStatsCollector(I)Lcom/android/server/power/stats/PowerStatsCollector;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getRpmStats()Ljava/util/Map;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->getRpmTimerLocked(Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;
-HPLcom/android/server/power/stats/BatteryStatsImpl;->getServiceStatsLocked(ILjava/lang/String;Ljava/lang/String;JJ)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->getStartClockTime()J
-PLcom/android/server/power/stats/BatteryStatsImpl;->getUidStatsLocked(I)Lcom/android/server/power/stats/BatteryStatsImpl$Uid;
-HPLcom/android/server/power/stats/BatteryStatsImpl;->getUidStatsLocked(IJJ)Lcom/android/server/power/stats/BatteryStatsImpl$Uid;
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->informThatAllExternalStatsAreFlushed()V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->initDischarge(J)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->getScreenBrightnessTime(IJI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getScreenDozeTime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getScreenOffRpmStats()Ljava/util/Map;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getScreenOnCount(I)I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getScreenOnTime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getStartClockTime()J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getStartCount()I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getStartPlatformVersion()Ljava/lang/String;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getUahDischarge(I)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getUahDischargeDeepDoze(I)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getUahDischargeLightDoze(I)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getUahDischargeScreenDoze(I)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getUahDischargeScreenOff(I)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getUidStats()Landroid/util/SparseArray;
+HPLcom/android/server/power/stats/BatteryStatsImpl;->getUidStatsLocked(IJJ)Lcom/android/server/power/stats/BatteryStatsImpl$Uid;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getWakeupReasonStats()Ljava/util/Map;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getWifiActiveTime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getWifiBatteryStats()Landroid/os/connectivity/WifiBatteryStats;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getWifiControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter;
+PLcom/android/server/power/stats/BatteryStatsImpl;->getWifiMulticastWakelockCount(I)I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getWifiMulticastWakelockTime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getWifiOnTime(JI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getWifiSignalStrengthCount(II)I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getWifiSignalStrengthTime(IJI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getWifiStateCount(II)I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getWifiStateTime(IJI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getWifiSupplStateCount(II)I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getWifiSupplStateTime(IJI)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->incrementPerRatDataLocked(Landroid/telephony/ModemActivityInfo;J)Lcom/android/server/power/stats/BatteryStatsImpl$RxTxConsumption;
+PLcom/android/server/power/stats/BatteryStatsImpl;->initActiveHistoryEventsLocked(JJ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->initDischarge()V
PLcom/android/server/power/stats/BatteryStatsImpl;->initEnergyConsumerStatsLocked([Z[Ljava/lang/String;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->initKernelStatsReaders()V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->initPowerProfile()V
HSPLcom/android/server/power/stats/BatteryStatsImpl;->initTimersAndCounters()V
HSPLcom/android/server/power/stats/BatteryStatsImpl;->initTimes(JJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->isActiveRadioPowerState(I)Z
-PLcom/android/server/power/stats/BatteryStatsImpl;->isCharging()Z
-HPLcom/android/server/power/stats/BatteryStatsImpl;->isOnBattery()Z
-PLcom/android/server/power/stats/BatteryStatsImpl;->isOnBattery(II)Z
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->isOnBatteryLocked()Z
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->isOnBatteryScreenOffLocked()Z
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->lambda$new$10()V
-HPLcom/android/server/power/stats/BatteryStatsImpl;->mapIsolatedUid(I)I
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->mapUid(I)I
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->markPartialTimersAsEligible()V
-PLcom/android/server/power/stats/BatteryStatsImpl;->maybeUpdateOverallScreenBrightness(IJJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->noteActivityPausedLocked(IJJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->noteActivityResumedLocked(IJJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->noteAlarmFinishLocked(Ljava/lang/String;Landroid/os/WorkSource;IJJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->noteAlarmStartLocked(Ljava/lang/String;Landroid/os/WorkSource;IJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->isMobileRadioEnergyConsumerSupportedLocked()Z
+PLcom/android/server/power/stats/BatteryStatsImpl;->isProcessStateDataAvailable()Z
+PLcom/android/server/power/stats/BatteryStatsImpl;->iterateBatteryStatsHistory(JJ)Lcom/android/internal/os/BatteryStatsHistoryIterator;
+HPLcom/android/server/power/stats/BatteryStatsImpl;->mapUid(I)I
+PLcom/android/server/power/stats/BatteryStatsImpl;->markPartialTimersAsEligible()V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->maybeUpdateOverallScreenBrightness(IJJ)V
PLcom/android/server/power/stats/BatteryStatsImpl;->noteAlarmStartOrFinishLocked(ILjava/lang/String;Landroid/os/WorkSource;IJJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->noteAudioOffLocked(IJJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->noteAudioOnLocked(IJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteBluetoothScanStartedLocked(Landroid/os/WorkSource$WorkChain;IZJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteBluetoothScanStoppedLocked(Landroid/os/WorkSource$WorkChain;IZJJ)V
PLcom/android/server/power/stats/BatteryStatsImpl;->noteChangeWakelockFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->noteCurrentTimeChangedLocked(JJJ)V
-HPLcom/android/server/power/stats/BatteryStatsImpl;->noteEventLocked(ILjava/lang/String;IJJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->noteInteractiveLocked(ZJ)V
-HPLcom/android/server/power/stats/BatteryStatsImpl;->noteJobFinishLocked(Ljava/lang/String;IIJJ)V
-HPLcom/android/server/power/stats/BatteryStatsImpl;->noteJobStartLocked(Ljava/lang/String;IJJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->notePhoneSignalStrengthLocked(ILandroid/util/SparseIntArray;JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteDeviceIdleModeLocked(IILjava/lang/String;JJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteJobFinishLocked(IILjava/lang/String;JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteJobsDeferredLocked(IIJJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteLongPartialWakeLockFinishInternal(ILjava/lang/String;Ljava/lang/String;JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteLongPartialWakeLockStartInternal(ILjava/lang/String;Ljava/lang/String;JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteNetworkInterfaceForTransports(Ljava/lang/String;[I)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->notePhoneOnLocked(JJ)V
PLcom/android/server/power/stats/BatteryStatsImpl;->notePhoneSignalStrengthLocked(Landroid/telephony/SignalStrength;JJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->notePhoneStateLocked(IIJJ)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->notePowerSaveModeLockedInit(ZJJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->noteProcessAnrLocked(Ljava/lang/String;IJJ)V
-HPLcom/android/server/power/stats/BatteryStatsImpl;->noteProcessDiedLocked(II)V
-HPLcom/android/server/power/stats/BatteryStatsImpl;->noteProcessFinishLocked(Ljava/lang/String;IJJ)V
-HPLcom/android/server/power/stats/BatteryStatsImpl;->noteProcessStartLocked(Ljava/lang/String;IJJ)V
PLcom/android/server/power/stats/BatteryStatsImpl;->noteResetBluetoothScanLocked(JJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->noteScreenBrightnessLocked(IIJJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->noteScreenStateLocked(IIJJJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->noteStartSensorLocked(IIJJ)V
-HPLcom/android/server/power/stats/BatteryStatsImpl;->noteStartWakeFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
-HPLcom/android/server/power/stats/BatteryStatsImpl;->noteStartWakeLocked(IILandroid/os/WorkSource$WorkChain;Ljava/lang/String;Ljava/lang/String;IZJJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->noteStopSensorLocked(IIJJ)V
-HPLcom/android/server/power/stats/BatteryStatsImpl;->noteStopWakeFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IJJ)V
-HPLcom/android/server/power/stats/BatteryStatsImpl;->noteStopWakeLocked(IILandroid/os/WorkSource$WorkChain;Ljava/lang/String;Ljava/lang/String;IJJ)V
-HPLcom/android/server/power/stats/BatteryStatsImpl;->noteUidProcessStateLocked(IIJJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->noteUsbConnectionStateLocked(ZJJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteScreenBrightnessLocked(IIJJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteScreenStateLocked(IIIJJJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteStartWakeLocked(IILandroid/os/WorkSource$WorkChain;Ljava/lang/String;Ljava/lang/String;IZJJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Map;Ljava/util/HashMap;
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteStopWakeLocked(IILandroid/os/WorkSource$WorkChain;Ljava/lang/String;Ljava/lang/String;IJJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Map;Ljava/util/HashMap;
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteUidProcessStateLocked(IIJJ)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteUsbConnectionStateLocked(JJZ)V
PLcom/android/server/power/stats/BatteryStatsImpl;->noteUserActivityLocked(IIJJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->noteVibratorOffLocked(IJJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->noteVibratorOnLocked(IJJJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteWakeupReasonLocked(JJLjava/lang/String;)V
PLcom/android/server/power/stats/BatteryStatsImpl;->noteWakupAlarmLocked(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;JJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->noteWifiOnLocked(JJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->noteWifiSupplicantStateChangedLocked(IZJJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->onSystemReady()V
-PLcom/android/server/power/stats/BatteryStatsImpl;->postBatteryNeedsCpuUpdateMsg()V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->pullPendingStateUpdatesLocked()V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteWifiRadioPowerState(IIJJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteWifiRssiChangedLocked(IJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteWifiScanStartedLocked(IJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteWifiScanStoppedLocked(IJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->onSystemReady(Landroid/content/Context;)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->prepareForDumpLocked()V
+PLcom/android/server/power/stats/BatteryStatsImpl;->pullPendingStateUpdatesLocked()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->readDailyItemTagDetailsLocked(Lcom/android/modules/utils/TypedXmlPullParser;Landroid/os/BatteryStats$DailyItem;ZLjava/lang/String;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->readDailyItemTagLocked(Lcom/android/modules/utils/TypedXmlPullParser;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->readDailyItemsLocked(Lcom/android/modules/utils/TypedXmlPullParser;)V
HSPLcom/android/server/power/stats/BatteryStatsImpl;->readDailyStatsLocked()V
+PLcom/android/server/power/stats/BatteryStatsImpl;->readKernelUidCpuActiveTimesLocked(Z)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->readKernelUidCpuClusterTimesLocked(ZLcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->readKernelUidCpuFreqTimesLocked(Ljava/util/ArrayList;ZZLcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->readKernelUidCpuTimesLocked(Ljava/util/ArrayList;Landroid/util/SparseLongArray;Z)V
HSPLcom/android/server/power/stats/BatteryStatsImpl;->readLocked()V
+PLcom/android/server/power/stats/BatteryStatsImpl;->readMobileNetworkStatsLocked(Landroid/app/usage/NetworkStatsManager;)Landroid/net/NetworkStats;
HSPLcom/android/server/power/stats/BatteryStatsImpl;->readSummaryFromParcel(Landroid/os/Parcel;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->recordDailyStatsIfNeededLocked(ZJ)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->recordHistoryEventLocked(JJILjava/lang/String;I)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->recordPowerStats(Lcom/android/internal/os/PowerStats;)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->registerUsbStateReceiver(Landroid/content/Context;)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->reportChangesToStatsLog(III)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->requestImmediateCpuUpdate()V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->saveBatteryUsageStatsOnReset(Lcom/android/server/power/stats/BatteryUsageStatsProvider;Lcom/android/server/power/stats/PowerStatsStore;)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->readWifiNetworkStatsLocked(Landroid/app/usage/NetworkStatsManager;)Landroid/net/NetworkStats;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->recordDailyStatsIfNeededLocked(JZ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->recordDailyStatsLocked()V
+PLcom/android/server/power/stats/BatteryStatsImpl;->resetAllStatsLocked(IJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->resetIfNotNull(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;J)Z
+PLcom/android/server/power/stats/BatteryStatsImpl;->resetIfNotNull([Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;J)Z
+PLcom/android/server/power/stats/BatteryStatsImpl;->scheduleNextResetWhilePluggedInCheck()V
PLcom/android/server/power/stats/BatteryStatsImpl;->schedulePowerStatsSampleCollection()V
-PLcom/android/server/power/stats/BatteryStatsImpl;->scheduleSyncExternalStatsLocked(Ljava/lang/String;I)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->scheduleSyncExternalStatsLocked(ILjava/lang/String;)V
HPLcom/android/server/power/stats/BatteryStatsImpl;->setBatteryStateLocked(IIIIIIIIJJJJ)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->setCallback(Lcom/android/server/power/stats/BatteryStatsImpl$BatteryCallback;)V
PLcom/android/server/power/stats/BatteryStatsImpl;->setChargingLocked(Z)Z
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->setDisplayCountLocked(I)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->setExternalStatsSyncLocked(Lcom/android/server/power/stats/BatteryStatsImpl$ExternalStatsSync;)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->setPowerStatsCollectorEnabled(Z)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->setRadioScanningTimeoutLocked(J)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->startAddingCpuStatsLocked()Z
+PLcom/android/server/power/stats/BatteryStatsImpl;->setPowerStatsCollectorEnabled(IZ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->startAddingCpuStatsLocked()Z
PLcom/android/server/power/stats/BatteryStatsImpl;->systemServicesReady(Landroid/content/Context;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->trackPerProcStateCpuTimes()Z
PLcom/android/server/power/stats/BatteryStatsImpl;->updateAllPhoneStateLocked(IIIJJ)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->updateBluetoothStateLocked(Landroid/bluetooth/BluetoothActivityEnergyInfo;JJJ)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateCpuTimeLocked(ZZ[J)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateCpuTimesForAllUids()V
+PLcom/android/server/power/stats/BatteryStatsImpl;->updateCellularBatteryStats(Landroid/telephony/ModemActivityInfo;Ljava/util/List;JJJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->updateClusterSpeedTimes(Landroid/util/SparseLongArray;ZLcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/internal/os/CpuScalingPolicies;]Lcom/android/internal/os/KernelCpuSpeedReader;Lcom/android/internal/os/KernelCpuSpeedReader;
+HPLcom/android/server/power/stats/BatteryStatsImpl;->updateCpuTimeLocked(ZZ[J)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->updateCpuTimesForAllUids()V
HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateDailyDeadlineLocked()V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateKernelMemoryBandwidthLocked(J)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateKernelWakelocksLocked(J)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->updateProcStateCpuTimesLocked(IJJ)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateRailStatsLocked()V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateRpmStatsLocked(J)V
-PLcom/android/server/power/stats/BatteryStatsImpl;->updateTimeBasesLocked(ZIJJ)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->writeAsyncLocked()V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->writeHistoryLocked()V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->writeParcelToFileLocked(Landroid/os/Parcel;Landroid/util/AtomicFile;)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->writeStatsLocked()V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->writeSummaryToParcel(Landroid/os/Parcel;Z)V
-HSPLcom/android/server/power/stats/BatteryStatsImpl;->writeSyncLocked()V
-HSPLcom/android/server/power/stats/BatteryUsageStatsProvider;-><init>(Landroid/content/Context;Lcom/android/server/power/stats/PowerStatsExporter;Lcom/android/internal/os/PowerProfile;Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/server/power/stats/PowerStatsStore;Lcom/android/internal/os/Clock;)V
-PLcom/android/server/power/stats/BatteryUsageStatsProvider;->setPowerStatsExporterEnabled(Z)V
-HSPLcom/android/server/power/stats/CpuAggregatedPowerStatsProcessor;-><clinit>()V
-HSPLcom/android/server/power/stats/CpuAggregatedPowerStatsProcessor;-><init>(Lcom/android/internal/os/PowerProfile;Lcom/android/internal/os/CpuScalingPolicies;)V
-HSPLcom/android/server/power/stats/CpuPowerStatsCollector$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/power/stats/CpuPowerStatsCollector$$ExternalSyntheticLambda1;->get()Ljava/lang/Object;
-PLcom/android/server/power/stats/CpuPowerStatsCollector$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/power/stats/CpuPowerStatsCollector;)V
-PLcom/android/server/power/stats/CpuPowerStatsCollector$$ExternalSyntheticLambda2;->processUidStats(I[J)V
-PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;-><init>()V
-PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;->addDeviceSectionCpuTimeByCluster(I)V
-PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;->addDeviceSectionCpuTimeByScalingStep(I)V
-PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;->addUidSectionCpuTimeByPowerBracket([I)V
-PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;->getCpuPowerBracketCount()I
-PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;->getCpuScalingStepCount()I
-PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;->getScalingStepToPowerBracketMap()[I
-PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;->setTimeByScalingStep([JIJ)V
-PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;->setUidTimeByPowerBracket([JIJ)V
-PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;->toExtras(Landroid/os/PersistableBundle;)V
-PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;->updatePowerBracketCount()V
-HSPLcom/android/server/power/stats/CpuPowerStatsCollector$KernelCpuStatsReader;-><init>()V
-PLcom/android/server/power/stats/CpuPowerStatsCollector$UidStats;-><init>()V
-PLcom/android/server/power/stats/CpuPowerStatsCollector$UidStats;-><init>(Lcom/android/server/power/stats/CpuPowerStatsCollector$UidStats-IA;)V
-PLcom/android/server/power/stats/CpuPowerStatsCollector;->$r8$lambda$TmdX3HefCA-y-kG8N7EsBWpyOqo()Landroid/power/PowerStatsInternal;
-PLcom/android/server/power/stats/CpuPowerStatsCollector;->$r8$lambda$l7KbxBakyCEoVp9gpEIBpVgzupw(Lcom/android/server/power/stats/CpuPowerStatsCollector;I[J)V
-HSPLcom/android/server/power/stats/CpuPowerStatsCollector;-><init>(Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/internal/os/PowerProfile;Landroid/os/Handler;Lcom/android/server/power/stats/CpuPowerStatsCollector$KernelCpuStatsReader;Lcom/android/server/power/stats/PowerStatsUidResolver;Ljava/util/function/Supplier;Ljava/util/function/IntSupplier;JLcom/android/internal/os/Clock;II)V
-HSPLcom/android/server/power/stats/CpuPowerStatsCollector;-><init>(Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/internal/os/PowerProfile;Lcom/android/server/power/stats/PowerStatsUidResolver;Ljava/util/function/IntSupplier;Landroid/os/Handler;J)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->updateDischargeScreenLevelsLocked(II)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->updateKernelMemoryBandwidthLocked(J)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->updateKernelWakelocksLocked(J)V+]Ljava/util/HashMap;Lcom/android/server/power/stats/KernelWakelockStats;,Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;
+PLcom/android/server/power/stats/BatteryStatsImpl;->updateRailStatsLocked()V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->updateRpmStatsLocked(J)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->updateTimeBasesLocked(IJJZ)V+]Landroid/os/IBatteryPropertiesRegistrar;Lcom/android/server/BatteryService$BatteryPropertiesRegistrar;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/power/stats/BatteryStatsImpl;->updateWifiBatteryStats(Landroid/os/connectivity/WifiActivityEnergyInfo;Ljava/util/List;JJJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/internal/os/PowerProfile;Lcom/android/internal/os/PowerProfile;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/power/stats/BatteryStatsImpl;->updateWifiState(Landroid/os/connectivity/WifiActivityEnergyInfo;JJJLandroid/app/usage/NetworkStatsManager;)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->writeAsyncLocked()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->writeDailyItemsLocked(Lcom/android/modules/utils/TypedXmlSerializer;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->writeDailyLevelSteps(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Landroid/os/BatteryStats$LevelStepTracker;Ljava/lang/StringBuilder;)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->writeParcelToFileLocked(Landroid/os/Parcel;Landroid/util/AtomicFile;)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->writeSummaryToParcel(Landroid/os/Parcel;Z)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/internal/os/MonotonicClock;Lcom/android/internal/os/MonotonicClock;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;,Ljava/util/HashMap$EntryIterator;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;,Ljava/util/HashMap$Node;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;,Ljava/util/HashMap$EntrySet;
+PLcom/android/server/power/stats/BatteryStatsImpl;->writeSyncLocked()V
+PLcom/android/server/power/stats/BatteryUsageStatsProvider$$ExternalSyntheticLambda0;-><init>(Landroid/os/BatteryUsageStats$Builder;)V
+PLcom/android/server/power/stats/BatteryUsageStatsProvider$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/power/stats/BatteryUsageStatsProvider$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/stats/BatteryUsageStatsProvider;Lcom/android/server/power/stats/BatteryStatsImpl;)V
+PLcom/android/server/power/stats/BatteryUsageStatsProvider$$ExternalSyntheticLambda1;->run()V
+HSPLcom/android/server/power/stats/BatteryUsageStatsProvider;-><init>(Landroid/content/Context;Lcom/android/server/power/stats/processor/MultiStatePowerAttributor;Lcom/android/internal/os/PowerProfile;Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/server/power/stats/PowerStatsStore;ILcom/android/internal/os/Clock;Lcom/android/internal/os/MonotonicClock;)V
+PLcom/android/server/power/stats/BatteryUsageStatsProvider;->accumulateBatteryUsageStats(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+PLcom/android/server/power/stats/BatteryUsageStatsProvider;->getBatteryUsageStats(Lcom/android/server/power/stats/BatteryStatsImpl;Landroid/os/BatteryUsageStatsQuery;J)Landroid/os/BatteryUsageStats;
+PLcom/android/server/power/stats/BatteryUsageStatsProvider;->getPowerCalculators()Ljava/util/List;
+PLcom/android/server/power/stats/BatteryUsageStatsProvider;->loadAccumulatedBatteryUsageStats()Lcom/android/server/power/stats/BatteryUsageStatsProvider$AccumulatedBatteryUsageStats;
+PLcom/android/server/power/stats/BatteryUsageStatsProvider;->populateGeneralInfo(Landroid/os/BatteryUsageStats$Builder;Lcom/android/server/power/stats/BatteryStatsImpl;)V
+PLcom/android/server/power/stats/BatteryUsageStatsProvider;->updateAccumulatedBatteryUsageStats(Lcom/android/server/power/stats/BatteryUsageStatsProvider$AccumulatedBatteryUsageStats;Lcom/android/server/power/stats/BatteryStatsImpl;)V
+PLcom/android/server/power/stats/BluetoothPowerStatsCollector$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/stats/BluetoothPowerStatsCollector;)V
+PLcom/android/server/power/stats/BluetoothPowerStatsCollector$1;-><init>(Ljava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/power/stats/BluetoothPowerStatsCollector$1;->onBluetoothActivityEnergyInfoAvailable(Landroid/bluetooth/BluetoothActivityEnergyInfo;)V
+PLcom/android/server/power/stats/BluetoothPowerStatsCollector$1;->onBluetoothActivityEnergyInfoError(I)V
+HSPLcom/android/server/power/stats/BluetoothPowerStatsCollector;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector;)V
+HPLcom/android/server/power/stats/BluetoothPowerStatsCollector;->collectStats()Lcom/android/internal/os/PowerStats;
+PLcom/android/server/power/stats/CpuPowerStatsCollector$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/stats/CpuPowerStatsCollector;)V
+HPLcom/android/server/power/stats/CpuPowerStatsCollector$$ExternalSyntheticLambda0;->processUidStats(I[J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/power/stats/CpuPowerStatsCollector;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector;)V
HPLcom/android/server/power/stats/CpuPowerStatsCollector;->collectStats()Lcom/android/internal/os/PowerStats;
-PLcom/android/server/power/stats/CpuPowerStatsCollector;->ensureInitialized()Z
+PLcom/android/server/power/stats/CpuPowerStatsCollector;->ensureInitialized$1()Z
+PLcom/android/server/power/stats/CpuPowerStatsCollector;->getCpuPowerBracketDescription(I)Ljava/lang/String;
PLcom/android/server/power/stats/CpuPowerStatsCollector;->initDefaultPowerBrackets(I)[I
-PLcom/android/server/power/stats/CpuPowerStatsCollector;->initPowerBrackets()[I
-PLcom/android/server/power/stats/CpuPowerStatsCollector;->lambda$new$0()Landroid/power/PowerStatsInternal;
PLcom/android/server/power/stats/CpuPowerStatsCollector;->mapScalingStepsToDefaultBrackets([I[DI)V
-PLcom/android/server/power/stats/CpuPowerStatsCollector;->processUidStats(I[J)V
-PLcom/android/server/power/stats/CpuPowerStatsCollector;->readCpuEnergyConsumerIds()V
+HSPLcom/android/server/power/stats/CustomEnergyConsumerPowerStatsCollector;-><clinit>()V
+HSPLcom/android/server/power/stats/CustomEnergyConsumerPowerStatsCollector;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector;)V
+PLcom/android/server/power/stats/CustomEnergyConsumerPowerStatsCollector;->ensureInitialized()V
+PLcom/android/server/power/stats/CustomEnergyConsumerPowerStatsCollector;->forceSchedule()Z
+PLcom/android/server/power/stats/CustomEnergyConsumerPowerStatsCollector;->schedule()Z
+HSPLcom/android/server/power/stats/EnergyConsumerPowerStatsCollector;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector;ILjava/lang/String;IILcom/android/server/power/stats/format/EnergyConsumerPowerStatsLayout;)V
+PLcom/android/server/power/stats/EnergyConsumerPowerStatsCollector;->collectStats()Lcom/android/internal/os/PowerStats;
HSPLcom/android/server/power/stats/KernelWakelockReader;-><clinit>()V
HSPLcom/android/server/power/stats/KernelWakelockReader;-><init>()V
-HSPLcom/android/server/power/stats/KernelWakelockReader;->getWakelockStatsFromSystemSuspend(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;
-HSPLcom/android/server/power/stats/KernelWakelockReader;->readKernelWakelockStats(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;
-HSPLcom/android/server/power/stats/KernelWakelockReader;->removeOldStats(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;
-HSPLcom/android/server/power/stats/KernelWakelockReader;->updateVersion(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;
-HSPLcom/android/server/power/stats/KernelWakelockReader;->updateWakelockStats([Landroid/system/suspend/internal/WakeLockInfo;Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;
-HSPLcom/android/server/power/stats/KernelWakelockReader;->waitForSuspendControlService()Landroid/system/suspend/internal/ISuspendControlServiceInternal;
-HSPLcom/android/server/power/stats/KernelWakelockStats$Entry;-><init>(IJJI)V
+PLcom/android/server/power/stats/KernelWakelockReader;->getWakelockStatsFromSystemSuspend(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;
+PLcom/android/server/power/stats/KernelWakelockReader;->readKernelWakelockStats(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;
+HPLcom/android/server/power/stats/KernelWakelockReader;->removeOldStats(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;+]Ljava/util/Collection;Ljava/util/HashMap$Values;]Ljava/util/HashMap;Lcom/android/server/power/stats/KernelWakelockStats;]Ljava/util/Iterator;Ljava/util/HashMap$ValueIterator;
+PLcom/android/server/power/stats/KernelWakelockReader;->updateVersion(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;
+HPLcom/android/server/power/stats/KernelWakelockReader;->updateWakelockStats([Landroid/system/suspend/internal/WakeLockInfo;Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;+]Ljava/util/HashMap;Lcom/android/server/power/stats/KernelWakelockStats;
+PLcom/android/server/power/stats/KernelWakelockStats$Entry;-><init>(IIJJ)V
HSPLcom/android/server/power/stats/KernelWakelockStats;-><init>()V
-HSPLcom/android/server/power/stats/PowerStatsAggregator;-><init>(Lcom/android/server/power/stats/AggregatedPowerStatsConfig;Lcom/android/internal/os/BatteryStatsHistory;)V
-HSPLcom/android/server/power/stats/PowerStatsCollector$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/stats/PowerStatsCollector;)V
-PLcom/android/server/power/stats/PowerStatsCollector$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;-><init>()V
-PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->addDeviceSection(I)I
-PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->addDeviceSectionEnergyConsumers(I)V
-PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->addDeviceSectionPowerEstimate()V
-PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->addDeviceSectionUsageDuration()V
-PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->addUidSection(I)I
-PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->addUidSectionPowerEstimate()V
-PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->getDeviceStatsArrayLength()I
-PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->getUidStatsArrayLength()I
-PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->putIntArray(Landroid/os/PersistableBundle;Ljava/lang/String;[I)V
-PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->setUsageDuration([JJ)V
-PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->toExtras(Landroid/os/PersistableBundle;)V
-HSPLcom/android/server/power/stats/PowerStatsCollector;-><init>(Landroid/os/Handler;JLcom/android/internal/os/Clock;)V
+PLcom/android/server/power/stats/MobileRadioPowerStatsCollector$1;-><init>(Ljava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/power/stats/MobileRadioPowerStatsCollector$1;->onError(Ljava/lang/Throwable;)V
+PLcom/android/server/power/stats/MobileRadioPowerStatsCollector$1;->onResult(Ljava/lang/Object;)V
+HSPLcom/android/server/power/stats/MobileRadioPowerStatsCollector;-><clinit>()V
+HSPLcom/android/server/power/stats/MobileRadioPowerStatsCollector;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector;Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda5;)V
+HPLcom/android/server/power/stats/MobileRadioPowerStatsCollector;->collectStats()Lcom/android/internal/os/PowerStats;
+HSPLcom/android/server/power/stats/PowerStatsCollector$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/stats/PowerStatsCollector;)V
+PLcom/android/server/power/stats/PowerStatsCollector$$ExternalSyntheticLambda0;->run()V
+HSPLcom/android/server/power/stats/PowerStatsCollector$1;-><init>(Lcom/android/server/power/stats/PowerStatsCollector;)V
+PLcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyHelper;-><init>(Lcom/android/server/power/stats/PowerStatsCollector;Lcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyRetrieverImpl;I)V
+PLcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyHelper;->collectConsumedEnergy(Lcom/android/internal/os/PowerStats;Lcom/android/server/power/stats/format/PowerStatsLayout;)Z
+PLcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyHelper;->ensureInitialized()V
+PLcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyHelper;->getEnergyConsumerCount()I
+PLcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyRetrieverImpl;-><init>(Landroid/power/PowerStatsInternal;Lcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector$$ExternalSyntheticLambda2;)V
+PLcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyRetrieverImpl;->getEnergyConsumerIds(I)[I
+HSPLcom/android/server/power/stats/PowerStatsCollector;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$MyHandler;JLcom/android/server/power/stats/PowerStatsUidResolver;Lcom/android/internal/os/Clock;)V
HSPLcom/android/server/power/stats/PowerStatsCollector;->addConsumer(Ljava/util/function/Consumer;)V
-PLcom/android/server/power/stats/PowerStatsCollector;->collectAndDeliverStats()V
PLcom/android/server/power/stats/PowerStatsCollector;->forceSchedule()Z
-PLcom/android/server/power/stats/PowerStatsCollector;->isEnabled()Z
-PLcom/android/server/power/stats/PowerStatsCollector;->schedule()Z
-PLcom/android/server/power/stats/PowerStatsCollector;->setEnabled(Z)V
-HSPLcom/android/server/power/stats/PowerStatsExporter;-><clinit>()V
-HSPLcom/android/server/power/stats/PowerStatsExporter;-><init>(Lcom/android/server/power/stats/PowerStatsStore;Lcom/android/server/power/stats/PowerStatsAggregator;)V
-HSPLcom/android/server/power/stats/PowerStatsExporter;-><init>(Lcom/android/server/power/stats/PowerStatsStore;Lcom/android/server/power/stats/PowerStatsAggregator;J)V
-PLcom/android/server/power/stats/PowerStatsScheduler$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/stats/PowerStatsScheduler;)V
+HPLcom/android/server/power/stats/PowerStatsCollector;->schedule()Z
+PLcom/android/server/power/stats/PowerStatsScheduler$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/stats/PowerStatsScheduler;I)V
PLcom/android/server/power/stats/PowerStatsScheduler$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/power/stats/PowerStatsScheduler$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/power/stats/PowerStatsScheduler;)V
-PLcom/android/server/power/stats/PowerStatsScheduler;->$r8$lambda$GEaV9AQjfxC9uJ1Tfs7f2eF4_H0(Lcom/android/server/power/stats/PowerStatsScheduler;)V
+PLcom/android/server/power/stats/PowerStatsScheduler$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/power/stats/PowerStatsScheduler;)V
+PLcom/android/server/power/stats/PowerStatsScheduler$$ExternalSyntheticLambda2;->onAlarm()V
HSPLcom/android/server/power/stats/PowerStatsScheduler;-><clinit>()V
-HSPLcom/android/server/power/stats/PowerStatsScheduler;-><init>(Ljava/lang/Runnable;Lcom/android/server/power/stats/PowerStatsAggregator;JJLcom/android/server/power/stats/PowerStatsStore;Lcom/android/server/power/stats/PowerStatsScheduler$AlarmScheduler;Lcom/android/internal/os/Clock;Lcom/android/internal/os/MonotonicClock;Ljava/util/function/Supplier;Landroid/os/Handler;)V
-PLcom/android/server/power/stats/PowerStatsScheduler;->aggregateAndStorePowerStats()V
+HSPLcom/android/server/power/stats/PowerStatsScheduler;-><init>(Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda80;Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/server/power/stats/processor/MultiStatePowerAttributor;JJLcom/android/server/power/stats/PowerStatsStore;Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda101;Lcom/android/internal/os/Clock;Lcom/android/internal/os/MonotonicClock;Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda103;Landroid/os/Handler;)V
PLcom/android/server/power/stats/PowerStatsScheduler;->alignToWallClock(JJJJ)J
PLcom/android/server/power/stats/PowerStatsScheduler;->getLastSavedSpanEndMonotonicTime()J
PLcom/android/server/power/stats/PowerStatsScheduler;->scheduleNextPowerStatsAggregation()V
PLcom/android/server/power/stats/PowerStatsScheduler;->schedulePowerStatsAggregation()V
-PLcom/android/server/power/stats/PowerStatsScheduler;->start(Z)V
-PLcom/android/server/power/stats/PowerStatsSpan$Metadata$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/power/stats/PowerStatsSpan$Metadata$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/power/stats/PowerStatsSpan$Metadata;-><clinit>()V
PLcom/android/server/power/stats/PowerStatsSpan$Metadata;-><init>(J)V
-PLcom/android/server/power/stats/PowerStatsSpan$Metadata;->addSection(Ljava/lang/String;)V
-PLcom/android/server/power/stats/PowerStatsSpan$Metadata;->addTimeFrame(Lcom/android/server/power/stats/PowerStatsSpan$TimeFrame;)V
-PLcom/android/server/power/stats/PowerStatsSpan$Metadata;->getSections()Ljava/util/List;
PLcom/android/server/power/stats/PowerStatsSpan$Metadata;->read(Lcom/android/modules/utils/TypedXmlPullParser;)Lcom/android/server/power/stats/PowerStatsSpan$Metadata;
+PLcom/android/server/power/stats/PowerStatsSpan$Section;-><init>(Ljava/lang/String;)V
PLcom/android/server/power/stats/PowerStatsSpan$TimeFrame;-><init>(JJJ)V
-PLcom/android/server/power/stats/PowerStatsSpan$TimeFrame;->read(Lcom/android/modules/utils/TypedXmlPullParser;)Lcom/android/server/power/stats/PowerStatsSpan$TimeFrame;
-PLcom/android/server/power/stats/PowerStatsSpan;->-$$Nest$smisCompatibleXmlFormat(I)Z
PLcom/android/server/power/stats/PowerStatsSpan;-><clinit>()V
-PLcom/android/server/power/stats/PowerStatsSpan;->isCompatibleXmlFormat(I)Z
-HSPLcom/android/server/power/stats/PowerStatsStore$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/stats/PowerStatsStore;)V
-HSPLcom/android/server/power/stats/PowerStatsStore$$ExternalSyntheticLambda1;->run()V
-HSPLcom/android/server/power/stats/PowerStatsStore$DefaultSectionReader;-><init>(Lcom/android/server/power/stats/AggregatedPowerStatsConfig;)V
-HSPLcom/android/server/power/stats/PowerStatsStore;->$r8$lambda$B2PF4qXDAYWwxqhYeVyGoe0li4E(Lcom/android/server/power/stats/PowerStatsStore;)V
-HSPLcom/android/server/power/stats/PowerStatsStore;-><init>(Ljava/io/File;JLandroid/os/Handler;Lcom/android/server/power/stats/PowerStatsSpan$SectionReader;)V
-HSPLcom/android/server/power/stats/PowerStatsStore;-><init>(Ljava/io/File;Landroid/os/Handler;Lcom/android/server/power/stats/AggregatedPowerStatsConfig;)V
+PLcom/android/server/power/stats/PowerStatsSpan;-><init>(J)V
+PLcom/android/server/power/stats/PowerStatsSpan;-><init>(Lcom/android/server/power/stats/PowerStatsSpan$Metadata;)V
+PLcom/android/server/power/stats/PowerStatsSpan;->addSection(Lcom/android/server/power/stats/PowerStatsSpan$Section;)V
+PLcom/android/server/power/stats/PowerStatsSpan;->read(Ljava/io/InputStream;Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/Map;[Ljava/lang/String;)Lcom/android/server/power/stats/PowerStatsSpan;
+HPLcom/android/server/power/stats/PowerStatsSpan;->writeXml(Ljava/io/OutputStream;Lcom/android/modules/utils/TypedXmlSerializer;)V
+HSPLcom/android/server/power/stats/PowerStatsStore$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/stats/PowerStatsStore;)V
+PLcom/android/server/power/stats/PowerStatsStore$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/power/stats/PowerStatsStore$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/power/stats/PowerStatsSpan;)V
+PLcom/android/server/power/stats/PowerStatsStore$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/power/stats/PowerStatsStore$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/power/stats/PowerStatsStore;Lcom/android/server/power/stats/PowerStatsSpan;Lcom/android/server/power/stats/BatteryUsageStatsProvider$$ExternalSyntheticLambda0;)V
+PLcom/android/server/power/stats/PowerStatsStore$$ExternalSyntheticLambda3;->run()V
+HSPLcom/android/server/power/stats/PowerStatsStore;-><init>(Ljava/io/File;JLandroid/os/Handler;)V
PLcom/android/server/power/stats/PowerStatsStore;->getTableOfContents()Ljava/util/List;
+PLcom/android/server/power/stats/PowerStatsStore;->loadPowerStatsSpan(J[Ljava/lang/String;)Lcom/android/server/power/stats/PowerStatsSpan;
PLcom/android/server/power/stats/PowerStatsStore;->lockStoreDirectory()V
-HSPLcom/android/server/power/stats/PowerStatsStore;->maybeClearLegacyStore()V
+PLcom/android/server/power/stats/PowerStatsStore;->removeOldSpansLocked()V
+PLcom/android/server/power/stats/PowerStatsStore;->storePowerStatsSpan(Lcom/android/server/power/stats/PowerStatsSpan;)V
PLcom/android/server/power/stats/PowerStatsStore;->unlockStoreDirectory()V
HSPLcom/android/server/power/stats/PowerStatsUidResolver;-><init>()V
HSPLcom/android/server/power/stats/PowerStatsUidResolver;->addListener(Lcom/android/server/power/stats/PowerStatsUidResolver$Listener;)V
-HSPLcom/android/server/power/stats/PowerStatsUidResolver;->mapUid(I)I
+PLcom/android/server/power/stats/PowerStatsUidResolver;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/power/stats/PowerStatsUidResolver;->mapUid(I)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+PLcom/android/server/power/stats/ScreenPowerStatsCollector$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/stats/ScreenPowerStatsCollector;)V
+PLcom/android/server/power/stats/ScreenPowerStatsCollector$$ExternalSyntheticLambda0;->onUidTopActivityTime(IJ)V
+HSPLcom/android/server/power/stats/ScreenPowerStatsCollector;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector;)V
+HPLcom/android/server/power/stats/ScreenPowerStatsCollector;->collectStats()Lcom/android/internal/os/PowerStats;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;
+PLcom/android/server/power/stats/UsageBasedPowerEstimator;-><init>(D)V
+PLcom/android/server/power/stats/UserPowerCalculator;->calculate(Landroid/os/BatteryUsageStats$Builder;Lcom/android/server/power/stats/BatteryStatsImpl;JJLandroid/os/BatteryUsageStatsQuery;)V
+HSPLcom/android/server/power/stats/WakelockPowerStatsCollector;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector;)V
+HPLcom/android/server/power/stats/WakelockPowerStatsCollector;->collectStats()Lcom/android/internal/os/PowerStats;
+HPLcom/android/server/power/stats/WakelockStatsFrameworkEvents$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/power/stats/WakelockStatsFrameworkEvents$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/power/stats/WakelockStatsFrameworkEvents$$ExternalSyntheticLambda3;-><init>(J)V
+HPLcom/android/server/power/stats/WakelockStatsFrameworkEvents$$ExternalSyntheticLambda3;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/power/stats/WakelockStatsFrameworkEvents$StatsPullCallbackHandler;-><init>(Lcom/android/server/power/stats/WakelockStatsFrameworkEvents;)V
+HPLcom/android/server/power/stats/WakelockStatsFrameworkEvents$WakeLockKey;-><init>(IILjava/lang/String;)V
+HPLcom/android/server/power/stats/WakelockStatsFrameworkEvents$WakeLockKey;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/power/stats/WakelockStatsFrameworkEvents$WakeLockKey;->hashCode()I
+PLcom/android/server/power/stats/WakelockStatsFrameworkEvents$WakeLockStats;-><init>()V
+HSPLcom/android/server/power/stats/WakelockStatsFrameworkEvents;-><init>()V
+HPLcom/android/server/power/stats/WakelockStatsFrameworkEvents;->inOverflow()Z+]Ljava/util/Map;Ljava/util/HashMap;
+PLcom/android/server/power/stats/WifiPowerStatsCollector$$ExternalSyntheticLambda0;-><init>(Ljava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/power/stats/WifiPowerStatsCollector$$ExternalSyntheticLambda0;->onWifiActivityEnergyInfo(Landroid/os/connectivity/WifiActivityEnergyInfo;)V
+PLcom/android/server/power/stats/WifiPowerStatsCollector$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/stats/WifiPowerStatsCollector;)V
+HSPLcom/android/server/power/stats/WifiPowerStatsCollector;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector;Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda5;)V
+HPLcom/android/server/power/stats/WifiPowerStatsCollector;->collectStats()Lcom/android/internal/os/PowerStats;
+HSPLcom/android/server/power/stats/format/BasePowerStatsLayout;-><init>()V
+PLcom/android/server/power/stats/format/BasePowerStatsLayout;->toExtras(Landroid/os/PersistableBundle;)V
+HSPLcom/android/server/power/stats/format/BinaryStatePowerStatsLayout;-><init>()V
+PLcom/android/server/power/stats/format/BluetoothPowerStatsLayout;->toExtras(Landroid/os/PersistableBundle;)V
+PLcom/android/server/power/stats/format/CpuPowerStatsLayout;->toExtras(Landroid/os/PersistableBundle;)V
+HSPLcom/android/server/power/stats/format/EnergyConsumerPowerStatsLayout;-><init>()V
+HSPLcom/android/server/power/stats/format/GnssPowerStatsLayout;-><init>()V
+PLcom/android/server/power/stats/format/GnssPowerStatsLayout;->toExtras(Landroid/os/PersistableBundle;)V
+PLcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;-><init>(Lcom/android/internal/os/PowerStats$Descriptor;)V
+PLcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;->addDeviceSectionPowerEstimate()V
+PLcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;->addRxTxTimesForRat(Landroid/util/SparseArray;IIJ[I)V
+PLcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;->toExtras(Landroid/os/PersistableBundle;)V
+HSPLcom/android/server/power/stats/format/PowerStatsLayout;-><init>()V
+HPLcom/android/server/power/stats/format/PowerStatsLayout;-><init>(Lcom/android/internal/os/PowerStats$Descriptor;)V
+HSPLcom/android/server/power/stats/format/PowerStatsLayout;->addDeviceSection(IILjava/lang/String;)I
+HSPLcom/android/server/power/stats/format/PowerStatsLayout;->addDeviceSectionEnergyConsumers(I)V
+HSPLcom/android/server/power/stats/format/PowerStatsLayout;->addDeviceSectionPowerEstimate()V
+HSPLcom/android/server/power/stats/format/PowerStatsLayout;->addDeviceSectionUsageDuration()V
+HSPLcom/android/server/power/stats/format/PowerStatsLayout;->addUidSection(IILjava/lang/String;)I
+HSPLcom/android/server/power/stats/format/PowerStatsLayout;->addUidSectionPowerEstimate()V
+HSPLcom/android/server/power/stats/format/PowerStatsLayout;->appendFormat(Ljava/lang/StringBuilder;IILjava/lang/String;I)V
+HPLcom/android/server/power/stats/format/PowerStatsLayout;->getUidUsageDuration([J)J
+PLcom/android/server/power/stats/format/PowerStatsLayout;->getUsageDuration([J)J
+PLcom/android/server/power/stats/format/PowerStatsLayout;->setDevicePowerEstimate([JD)V
+HPLcom/android/server/power/stats/format/PowerStatsLayout;->setUidPowerEstimate([JD)V
+HPLcom/android/server/power/stats/format/PowerStatsLayout;->toExtras(Landroid/os/PersistableBundle;)V
+PLcom/android/server/power/stats/format/ScreenPowerStatsLayout;-><init>(Lcom/android/internal/os/PowerStats$Descriptor;)V
+PLcom/android/server/power/stats/format/ScreenPowerStatsLayout;->addDeviceSectionPowerEstimate()V
+PLcom/android/server/power/stats/format/ScreenPowerStatsLayout;->toExtras(Landroid/os/PersistableBundle;)V
+PLcom/android/server/power/stats/format/SensorPowerStatsLayout;-><init>(Ljava/util/Map;)V
+PLcom/android/server/power/stats/format/SensorPowerStatsLayout;->toExtras(Landroid/os/PersistableBundle;)V
+PLcom/android/server/power/stats/format/WakelockPowerStatsLayout;-><init>()V
+PLcom/android/server/power/stats/format/WifiPowerStatsLayout;->toExtras(Landroid/os/PersistableBundle;)V
+PLcom/android/server/power/stats/processor/AggregatedPowerStats;-><init>(Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig;Landroid/util/SparseBooleanArray;)V
+PLcom/android/server/power/stats/processor/AggregatedPowerStats;->addClockUpdate(JJ)V
+PLcom/android/server/power/stats/processor/AggregatedPowerStats;->addPowerStats(Lcom/android/internal/os/PowerStats;J)V
+HPLcom/android/server/power/stats/processor/AggregatedPowerStats;->reset()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/power/stats/processor/AggregatedPowerStats;->setDeviceState(IIJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$1;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V
+HSPLcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;-><init>(I)V
+HPLcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;->getDeviceStateConfig()[Lcom/android/server/power/stats/processor/MultiStateStats$States;
+HPLcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;->getUidStateConfig()[Lcom/android/server/power/stats/processor/MultiStateStats$States;
+HPLcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;->isTracked(I[I)Z
+HSPLcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;->trackDeviceStates([I)V
+HSPLcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;->trackUidStates([I)V
+HSPLcom/android/server/power/stats/processor/AggregatedPowerStatsConfig;-><clinit>()V
+HSPLcom/android/server/power/stats/processor/AggregatedPowerStatsConfig;-><init>()V
+HSPLcom/android/server/power/stats/processor/AggregatedPowerStatsConfig;->trackPowerComponent(I)Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;
+HSPLcom/android/server/power/stats/processor/AggregatedPowerStatsConfig;->trackPowerComponent(II)Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;
+HSPLcom/android/server/power/stats/processor/AggregatedPowerStatsSection$Reader;-><init>(Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig;)V
+PLcom/android/server/power/stats/processor/AggregatedPowerStatsSection;-><init>(Lcom/android/server/power/stats/processor/AggregatedPowerStats;)V
+HPLcom/android/server/power/stats/processor/AggregatedPowerStatsSection;->write(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/PowerStats$Descriptor;Lcom/android/internal/os/PowerStats$Descriptor;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
+PLcom/android/server/power/stats/processor/AmbientDisplayPowerStatsProcessor$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/stats/processor/AmbientDisplayPowerStatsProcessor;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;)V
+PLcom/android/server/power/stats/processor/AmbientDisplayPowerStatsProcessor$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/power/stats/processor/AmbientDisplayPowerStatsProcessor;-><init>()V
+PLcom/android/server/power/stats/processor/AmbientDisplayPowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V
+HPLcom/android/server/power/stats/processor/AudioPowerStatsProcessor;->getBinaryState(Landroid/os/BatteryStats$HistoryItem;)I
+PLcom/android/server/power/stats/processor/BasePowerStatsProcessor;-><clinit>()V
+PLcom/android/server/power/stats/processor/BasePowerStatsProcessor;-><init>(Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda95;)V
+HPLcom/android/server/power/stats/processor/BasePowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/power/stats/processor/PowerStatsProcessor;Lcom/android/server/power/stats/processor/BasePowerStatsProcessor;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/power/stats/processor/BasePowerStatsProcessor;->noteBatteryLevel(IIJ)V
+HPLcom/android/server/power/stats/processor/BasePowerStatsProcessor;->setUidState(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;IIJ)V
+PLcom/android/server/power/stats/processor/BasePowerStatsProcessor;->start(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V
+PLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;-><init>(ID)V
+PLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;-><init>(IDLcom/android/server/power/stats/format/BinaryStatePowerStatsLayout;)V
+HPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->computeDevicePowerEstimates(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;Z)V
+HPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->ensureInitialized()V
+HPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Lcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->flushPowerStats(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V
+HPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->noteStateChange(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Landroid/os/BatteryStats$HistoryItem;)V+]Lcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;megamorphic_types
+PLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->recordUsageDuration(Lcom/android/internal/os/PowerStats;IJ)V
+PLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->start(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V
+PLcom/android/server/power/stats/processor/BluetoothPowerStatsProcessor;-><init>(Lcom/android/internal/os/PowerProfile;)V
+HPLcom/android/server/power/stats/processor/BluetoothPowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Lcom/android/internal/os/PowerStats$Descriptor;Lcom/android/internal/os/PowerStats$Descriptor;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/power/stats/processor/CameraPowerStatsProcessor;->getBinaryState(Landroid/os/BatteryStats$HistoryItem;)I
+PLcom/android/server/power/stats/processor/CpuPowerStatsProcessor;-><clinit>()V
+PLcom/android/server/power/stats/processor/CpuPowerStatsProcessor;-><init>(Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/internal/os/PowerProfile;)V
+HPLcom/android/server/power/stats/processor/CpuPowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Lcom/android/internal/os/PowerStats$Descriptor;Lcom/android/internal/os/PowerStats$Descriptor;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
+HPLcom/android/server/power/stats/processor/FlashlightPowerStatsProcessor;->getBinaryState(Landroid/os/BatteryStats$HistoryItem;)I
+PLcom/android/server/power/stats/processor/GnssPowerStatsProcessor;-><clinit>()V
+PLcom/android/server/power/stats/processor/GnssPowerStatsProcessor;-><init>(Lcom/android/internal/os/PowerProfile;)V
+PLcom/android/server/power/stats/processor/GnssPowerStatsProcessor;->computeDevicePowerEstimates(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;Z)V
+HPLcom/android/server/power/stats/processor/GnssPowerStatsProcessor;->getBinaryState(Landroid/os/BatteryStats$HistoryItem;)I
+HPLcom/android/server/power/stats/processor/GnssPowerStatsProcessor;->noteStateChange(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Landroid/os/BatteryStats$HistoryItem;)V
+PLcom/android/server/power/stats/processor/GnssPowerStatsProcessor;->recordUsageDuration(Lcom/android/internal/os/PowerStats;IJ)V
+PLcom/android/server/power/stats/processor/GnssPowerStatsProcessor;->start(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V
+PLcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;[ILcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor$Intermediates;)V
+PLcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor$$ExternalSyntheticLambda0;->accept(I)V
+PLcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor;-><clinit>()V
+PLcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor;-><init>(Lcom/android/internal/os/PowerProfile;)V
+HPLcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/PowerStats$Descriptor;Lcom/android/internal/os/PowerStats$Descriptor;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda17;-><init>(Lcom/android/server/power/stats/processor/MultiStatePowerAttributor;[J)V
+PLcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda17;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda1;-><init>(Lcom/android/internal/os/PowerProfile;I)V
+PLcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda1;->get()Ljava/lang/Object;
+HSPLcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda5;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda5;->get()Ljava/lang/Object;
+HSPLcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda6;-><init>(I)V
+PLcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda6;->get()Ljava/lang/Object;
+HSPLcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda8;-><init>(Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/internal/os/PowerProfile;)V
+PLcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda8;->get()Ljava/lang/Object;
+HSPLcom/android/server/power/stats/processor/MultiStatePowerAttributor;-><init>(Lcom/android/server/power/stats/PowerStatsStore;Lcom/android/server/power/stats/processor/PowerStatsAggregator;)V
+PLcom/android/server/power/stats/processor/MultiStatePowerAttributor;->createPowerStatsSpan(Lcom/android/server/power/stats/processor/AggregatedPowerStats;)Lcom/android/server/power/stats/PowerStatsSpan;
+PLcom/android/server/power/stats/processor/MultiStatePowerAttributor;->estimatePowerConsumption(Landroid/os/BatteryUsageStats$Builder;Lcom/android/internal/os/BatteryStatsHistory;JJ)V
+HSPLcom/android/server/power/stats/processor/MultiStatePowerAttributor;->setPowerComponentSupported(IZ)V
+PLcom/android/server/power/stats/processor/MultiStatePowerAttributor;->storeAggregatedPowerStats(Lcom/android/server/power/stats/processor/AggregatedPowerStats;)V
+HPLcom/android/server/power/stats/processor/MultiStateStats$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/modules/utils/TypedXmlSerializer;[J)V
+HPLcom/android/server/power/stats/processor/MultiStateStats$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/power/stats/processor/MultiStateStats$Factory;-><init>(I[Lcom/android/server/power/stats/processor/MultiStateStats$States;)V
+HPLcom/android/server/power/stats/processor/MultiStateStats$Factory;->getSerialState([I)I
+HPLcom/android/server/power/stats/processor/MultiStateStats$States;-><init>(Ljava/lang/String;Z[Ljava/lang/String;)V
+HPLcom/android/server/power/stats/processor/MultiStateStats$States;->findTrackedStateByName([Lcom/android/server/power/stats/processor/MultiStateStats$States;Ljava/lang/String;)I
+HPLcom/android/server/power/stats/processor/MultiStateStats$States;->forEachTrackedStateCombination(Ljava/util/function/Consumer;[Lcom/android/server/power/stats/processor/MultiStateStats$States;[II)V+]Ljava/util/function/Consumer;megamorphic_types
+HPLcom/android/server/power/stats/processor/MultiStateStats;-><init>(Lcom/android/server/power/stats/processor/MultiStateStats$Factory;I)V
+HPLcom/android/server/power/stats/processor/MultiStateStats;->setState(IIJ)V
+HPLcom/android/server/power/stats/processor/MultiStateStats;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;)V
+HPLcom/android/server/power/stats/processor/MultiStateStats;->writeXmlForStates(Lcom/android/modules/utils/TypedXmlSerializer;[I[J)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;
+PLcom/android/server/power/stats/processor/PhoneCallPowerStatsProcessor$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/stats/processor/PhoneCallPowerStatsProcessor;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;)V
+PLcom/android/server/power/stats/processor/PhoneCallPowerStatsProcessor$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/power/stats/processor/PhoneCallPowerStatsProcessor;-><init>()V
+PLcom/android/server/power/stats/processor/PhoneCallPowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V
+PLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;-><init>(Lcom/android/server/power/stats/processor/AggregatedPowerStats;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;)V
+HPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->addProcessedPowerStats(Lcom/android/internal/os/PowerStats;J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->collectUids(Ljava/util/Collection;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Collection;Ljava/util/ArrayList;
+HPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->createDeviceStats(J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->createStateStats(I)Lcom/android/server/power/stats/processor/MultiStateStats;
+HPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->createUidStats(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats$UidStats;J)V
+HPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->getDeviceStats([I[J)Z
+HPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->getUidStats(I)Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats$UidStats;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->getUidStats(I[I[J)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->setDeviceStats([I[J)V
+HPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->setUidStats(I[I[J)V
+HSPLcom/android/server/power/stats/processor/PowerStatsAggregator;-><init>(Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig;)V
+HPLcom/android/server/power/stats/processor/PowerStatsAggregator;->aggregatePowerStats(Lcom/android/internal/os/BatteryStatsHistory;JJLjava/util/function/Consumer;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/internal/os/BatteryStatsHistoryIterator;Lcom/android/internal/os/BatteryStatsHistoryIterator;]Lcom/android/internal/os/PowerStats$Descriptor;Lcom/android/internal/os/PowerStats$Descriptor;]Lcom/android/server/power/stats/processor/PowerStatsProcessor;megamorphic_types]Ljava/util/function/Consumer;Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda17;,Lcom/android/server/power/stats/processor/PowerStatsExporter$$ExternalSyntheticLambda0;]Ljava/util/function/Supplier;Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda1;,Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda5;,Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda6;,Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda8;
+HSPLcom/android/server/power/stats/processor/PowerStatsAggregator;->setPowerComponentEnabled(IZ)V
+PLcom/android/server/power/stats/processor/PowerStatsExporter$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/stats/processor/PowerStatsExporter;Landroid/os/BatteryUsageStats$Builder;)V
+PLcom/android/server/power/stats/processor/PowerStatsExporter$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/power/stats/processor/PowerStatsExporter$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/stats/processor/PowerStatsExporter;IILcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;[J[DLcom/android/server/power/stats/format/PowerStatsLayout;[JZLcom/android/server/power/stats/processor/PowerStatsExporter$BatteryLevelInfo;)V
+HPLcom/android/server/power/stats/processor/PowerStatsExporter$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/power/stats/processor/PowerStatsExporter$$ExternalSyntheticLambda2;-><init>(IILcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;[JILcom/android/server/power/stats/format/PowerStatsLayout;Z[D[J)V
+HPLcom/android/server/power/stats/processor/PowerStatsExporter$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/power/stats/processor/PowerStatsExporter;-><clinit>()V
+HSPLcom/android/server/power/stats/processor/PowerStatsExporter;-><init>(Lcom/android/server/power/stats/PowerStatsStore;Lcom/android/server/power/stats/processor/PowerStatsAggregator;)V
+HPLcom/android/server/power/stats/processor/PowerStatsExporter;->areMatchingStates(II[I)Z
+HPLcom/android/server/power/stats/processor/PowerStatsExporter;->populateAggregatedBatteryConsumer(Landroid/os/BatteryUsageStats$Builder;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/format/PowerStatsLayout;[JLcom/android/server/power/stats/processor/PowerStatsExporter$BatteryLevelInfo;II)V
+HPLcom/android/server/power/stats/processor/PowerStatsExporter;->populateBatteryUsageStatsBuilder(Landroid/os/BatteryUsageStats$Builder;Lcom/android/server/power/stats/processor/AggregatedPowerStats;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;
+PLcom/android/server/power/stats/processor/PowerStatsProcessor$$ExternalSyntheticLambda0;-><init>(Ljava/util/List;)V
+PLcom/android/server/power/stats/processor/PowerStatsProcessor$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/power/stats/processor/PowerStatsProcessor$CombinedDeviceStateEstimate;-><init>([Lcom/android/server/power/stats/processor/MultiStateStats$States;[I)V
+PLcom/android/server/power/stats/processor/PowerStatsProcessor$DeviceStateEstimation;-><init>([Lcom/android/server/power/stats/processor/MultiStateStats$States;[I)V
+HPLcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;-><init>(Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;->combineDeviceStateEstimationsRecursively([Lcom/android/server/power/stats/processor/MultiStateStats$States;[Lcom/android/server/power/stats/processor/MultiStateStats$States;[II)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;->getCombinedDeviceStateEstimate([Lcom/android/server/power/stats/processor/MultiStateStats$States;[I)Lcom/android/server/power/stats/processor/PowerStatsProcessor$CombinedDeviceStateEstimate;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;->resetIntermediates()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/power/stats/processor/PowerStatsProcessor$UidStateEstimate;-><init>(Lcom/android/server/power/stats/processor/PowerStatsProcessor$CombinedDeviceStateEstimate;[Lcom/android/server/power/stats/processor/MultiStateStats$States;)V
+PLcom/android/server/power/stats/processor/PowerStatsProcessor$UidStateProportionalEstimate;-><init>([I)V
+HPLcom/android/server/power/stats/processor/PowerStatsProcessor;->-$$Nest$smconcatLabels([Lcom/android/server/power/stats/processor/MultiStateStats$States;[I)Ljava/lang/String;
+PLcom/android/server/power/stats/processor/PowerStatsProcessor;->-$$Nest$smgetAllTrackedStateCombinations([Lcom/android/server/power/stats/processor/MultiStateStats$States;)[[I
+PLcom/android/server/power/stats/processor/PowerStatsProcessor;->addPowerStats(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/internal/os/PowerStats;J)V
+PLcom/android/server/power/stats/processor/PowerStatsProcessor;->noteBatteryLevel(IIJ)V
+HPLcom/android/server/power/stats/processor/PowerStatsProcessor;->noteStateChange(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Landroid/os/BatteryStats$HistoryItem;)V
+HPLcom/android/server/power/stats/processor/PowerStatsProcessor;->setUidState(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;IIJ)V
+PLcom/android/server/power/stats/processor/PowerStatsProcessor;->start(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V
+PLcom/android/server/power/stats/processor/ScreenPowerStatsProcessor;-><init>(Lcom/android/internal/os/PowerProfile;)V
+HPLcom/android/server/power/stats/processor/ScreenPowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V
+PLcom/android/server/power/stats/processor/SensorPowerStatsProcessor$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/power/stats/processor/SensorPowerStatsProcessor$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/stats/processor/SensorPowerStatsProcessor;Ljava/util/List;)V
+HPLcom/android/server/power/stats/processor/SensorPowerStatsProcessor$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
+PLcom/android/server/power/stats/processor/SensorPowerStatsProcessor;-><init>(Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda5;)V
+HPLcom/android/server/power/stats/processor/SensorPowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Landroid/hardware/SensorManager;Landroid/hardware/SystemSensorManager;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;
+PLcom/android/server/power/stats/processor/SensorPowerStatsProcessor;->flushPowerStats$1(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V
+HPLcom/android/server/power/stats/processor/SensorPowerStatsProcessor;->noteStateChange(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Landroid/os/BatteryStats$HistoryItem;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/power/stats/processor/SensorPowerStatsProcessor;->recordUsageDuration(Lcom/android/server/power/stats/processor/SensorPowerStatsProcessor$SensorState;J)V
+PLcom/android/server/power/stats/processor/SensorPowerStatsProcessor;->start(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V
+HPLcom/android/server/power/stats/processor/VideoPowerStatsProcessor;->getBinaryState(Landroid/os/BatteryStats$HistoryItem;)I
+PLcom/android/server/power/stats/processor/WakelockPowerStatsProcessor;-><clinit>()V
+PLcom/android/server/power/stats/processor/WakelockPowerStatsProcessor;-><init>(Lcom/android/internal/os/PowerProfile;)V
+PLcom/android/server/power/stats/processor/WakelockPowerStatsProcessor;->addPowerStats(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/internal/os/PowerStats;J)V
+PLcom/android/server/power/stats/processor/WakelockPowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V
+PLcom/android/server/power/stats/processor/WifiPowerStatsProcessor;-><init>(Lcom/android/internal/os/PowerProfile;)V
+HPLcom/android/server/power/stats/processor/WifiPowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Lcom/android/internal/os/PowerStats$Descriptor;Lcom/android/internal/os/PowerStats$Descriptor;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/stats/wakeups/CpuWakeupStats;)V
PLcom/android/server/power/stats/wakeups/CpuWakeupStats$$ExternalSyntheticLambda0;->getAsLong()J
+PLcom/android/server/power/stats/wakeups/CpuWakeupStats$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/stats/wakeups/CpuWakeupStats;Lcom/android/server/power/stats/wakeups/CpuWakeupStats$Wakeup;)V
+HPLcom/android/server/power/stats/wakeups/CpuWakeupStats$$ExternalSyntheticLambda1;->run()V
HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats$Config;-><clinit>()V
-HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats$Config;-><init>()V
+PLcom/android/server/power/stats/wakeups/CpuWakeupStats$Config;->dump(Landroid/util/IndentingPrintWriter;)V
PLcom/android/server/power/stats/wakeups/CpuWakeupStats$Config;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
-PLcom/android/server/power/stats/wakeups/CpuWakeupStats$Config;->register(Ljava/util/concurrent/Executor;)V
-HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;-><init>(Ljava/util/function/LongSupplier;)V
-HPLcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;->recordActivity(IJLandroid/util/SparseIntArray;)V
-PLcom/android/server/power/stats/wakeups/CpuWakeupStats;->$r8$lambda$l-D7NPzbgSwY5OseXB1GuV8c9rM(Lcom/android/server/power/stats/wakeups/CpuWakeupStats;)J
+PLcom/android/server/power/stats/wakeups/CpuWakeupStats$Wakeup$IrqDevice;->toString()Ljava/lang/String;
+PLcom/android/server/power/stats/wakeups/CpuWakeupStats$Wakeup;-><clinit>()V
+HPLcom/android/server/power/stats/wakeups/CpuWakeupStats$Wakeup;->parseWakeup(Ljava/lang/String;JJLcom/android/server/power/stats/wakeups/IrqDeviceMap;)Lcom/android/server/power/stats/wakeups/CpuWakeupStats$Wakeup;
+PLcom/android/server/power/stats/wakeups/CpuWakeupStats$Wakeup;->toString()Ljava/lang/String;
+HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;-><init>(Lcom/android/server/power/stats/wakeups/CpuWakeupStats$$ExternalSyntheticLambda0;)V
+PLcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;->dump(Landroid/util/IndentingPrintWriter;J)V
+HPLcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;->recordActivity(IJLandroid/util/SparseIntArray;)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+PLcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;->removeBetween(IJJ)Landroid/util/SparseIntArray;
HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats;-><clinit>()V
-HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats;-><init>(Landroid/content/Context;ILandroid/os/Handler;)V
-HPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->attemptAttributionWith(IJLandroid/util/SparseIntArray;)Z
-PLcom/android/server/power/stats/wakeups/CpuWakeupStats;->lambda$new$0()J
-HPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->noteUidProcessState(II)V
-HPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->noteWakingActivity(IJ[I)V
+HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+HPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->attemptAttributionFor(Lcom/android/server/power/stats/wakeups/CpuWakeupStats$Wakeup;)V
+HPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->attemptAttributionWith(IJLandroid/util/SparseIntArray;)Z+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+PLcom/android/server/power/stats/wakeups/CpuWakeupStats;->dump(Landroid/util/IndentingPrintWriter;J)V
+PLcom/android/server/power/stats/wakeups/CpuWakeupStats;->noteWakeupTimeAndReason(JJLjava/lang/String;)V
+HPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->noteWakingActivity(IJ[I)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+PLcom/android/server/power/stats/wakeups/CpuWakeupStats;->subsystemToString(I)Ljava/lang/String;
PLcom/android/server/power/stats/wakeups/CpuWakeupStats;->systemServicesReady()V
HSPLcom/android/server/power/stats/wakeups/IrqDeviceMap;-><clinit>()V
HSPLcom/android/server/power/stats/wakeups/IrqDeviceMap;-><init>(Landroid/content/res/XmlResourceParser;)V
-HSPLcom/android/server/power/stats/wakeups/IrqDeviceMap;->getInstance(Landroid/content/Context;I)Lcom/android/server/power/stats/wakeups/IrqDeviceMap;
+PLcom/android/server/power/stats/wakeups/IrqDeviceMap;->dump(Landroid/util/IndentingPrintWriter;)V
PLcom/android/server/powerstats/BatteryTrigger$1;-><init>(Lcom/android/server/powerstats/BatteryTrigger;)V
HPLcom/android/server/powerstats/BatteryTrigger$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/powerstats/BatteryTrigger;->-$$Nest$fgetmBatteryLevel(Lcom/android/server/powerstats/BatteryTrigger;)I
-PLcom/android/server/powerstats/BatteryTrigger;->-$$Nest$fputmBatteryLevel(Lcom/android/server/powerstats/BatteryTrigger;I)V
-PLcom/android/server/powerstats/BatteryTrigger;-><clinit>()V
-PLcom/android/server/powerstats/BatteryTrigger;-><init>(Landroid/content/Context;Lcom/android/server/powerstats/PowerStatsLogger;Z)V
-PLcom/android/server/powerstats/PowerStatsDataStorage;-><clinit>()V
-PLcom/android/server/powerstats/PowerStatsDataStorage;-><init>(Landroid/content/Context;Ljava/io/File;Ljava/lang/String;)V
+PLcom/android/server/powerstats/BatteryTrigger;-><init>(Landroid/content/Context;Lcom/android/server/powerstats/PowerStatsLogger;)V
+PLcom/android/server/powerstats/Flags;-><clinit>()V
+PLcom/android/server/powerstats/Flags;->alarmBasedPowerstatsLogging()Z
+PLcom/android/server/powerstats/PowerStatsDataStorage$DataRewriter;->read(Ljava/io/InputStream;)V
+PLcom/android/server/powerstats/PowerStatsDataStorage$DataRewriter;->reset()V
+PLcom/android/server/powerstats/PowerStatsDataStorage$DataRewriter;->shouldWrite()Z
+PLcom/android/server/powerstats/PowerStatsDataStorage$DataRewriter;->write(Ljava/io/OutputStream;)V
+PLcom/android/server/powerstats/PowerStatsDataStorage;-><init>(Ljava/io/File;Ljava/lang/String;)V
+PLcom/android/server/powerstats/PowerStatsDataStorage;->dump(Landroid/util/IndentingPrintWriter;)V
PLcom/android/server/powerstats/PowerStatsDataStorage;->write([B)V
-HSPLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL10WrapperImpl;-><init>()V
-PLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL10WrapperImpl;->getEnergyConsumed([I)[Landroid/hardware/power/stats/EnergyConsumerResult;
-PLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL10WrapperImpl;->getEnergyConsumerInfo()[Landroid/hardware/power/stats/EnergyConsumer;
-PLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL10WrapperImpl;->getEnergyMeterInfo()[Landroid/hardware/power/stats/Channel;
-PLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL10WrapperImpl;->getPowerEntityInfo()[Landroid/hardware/power/stats/PowerEntity;
-PLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL10WrapperImpl;->getStateResidency([I)[Landroid/hardware/power/stats/StateResidencyResult;
-HSPLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL10WrapperImpl;->isInitialized()Z
-PLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL10WrapperImpl;->readEnergyMeter([I)[Landroid/hardware/power/stats/EnergyMeasurement;
-HSPLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL20WrapperImpl;-><init>()V
+PLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL20WrapperImpl;->getEnergyConsumed([I)[Landroid/hardware/power/stats/EnergyConsumerResult;
+PLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL20WrapperImpl;->getEnergyConsumerInfo()[Landroid/hardware/power/stats/EnergyConsumer;
+PLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL20WrapperImpl;->getEnergyMeterInfo()[Landroid/hardware/power/stats/Channel;
+PLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL20WrapperImpl;->getPowerEntityInfo()[Landroid/hardware/power/stats/PowerEntity;
+PLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL20WrapperImpl;->getStateResidency([I)[Landroid/hardware/power/stats/StateResidencyResult;
HSPLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL20WrapperImpl;->isInitialized()Z
-HSPLcom/android/server/powerstats/PowerStatsHALWrapper$VintfHalCache;-><init>()V
-HSPLcom/android/server/powerstats/PowerStatsHALWrapper$VintfHalCache;-><init>(Lcom/android/server/powerstats/PowerStatsHALWrapper$VintfHalCache-IA;)V
-HSPLcom/android/server/powerstats/PowerStatsHALWrapper$VintfHalCache;->get()Landroid/hardware/power/stats/IPowerStats;
+PLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL20WrapperImpl;->readEnergyMeter([I)[Landroid/hardware/power/stats/EnergyMeasurement;
HSPLcom/android/server/powerstats/PowerStatsHALWrapper$VintfHalCache;->get()Ljava/lang/Object;
-HSPLcom/android/server/powerstats/PowerStatsHALWrapper;-><clinit>()V
-HSPLcom/android/server/powerstats/PowerStatsHALWrapper;->getPowerStatsHalImpl()Lcom/android/server/powerstats/PowerStatsHALWrapper$IPowerStatsHALWrapper;
-PLcom/android/server/powerstats/PowerStatsLogTrigger;-><clinit>()V
PLcom/android/server/powerstats/PowerStatsLogTrigger;-><init>(Landroid/content/Context;Lcom/android/server/powerstats/PowerStatsLogger;)V
-PLcom/android/server/powerstats/PowerStatsLogTrigger;->logPowerStatsData(I)V
-PLcom/android/server/powerstats/PowerStatsLogger;-><clinit>()V
-PLcom/android/server/powerstats/PowerStatsLogger;-><init>(Landroid/content/Context;Landroid/os/Looper;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/powerstats/PowerStatsHALWrapper$IPowerStatsHALWrapper;)V
+PLcom/android/server/powerstats/PowerStatsLogger;-><init>(Landroid/os/Looper;Ljava/io/File;Lcom/android/server/powerstats/PowerStatsHALWrapper$IPowerStatsHALWrapper;)V
PLcom/android/server/powerstats/PowerStatsLogger;->dataChanged(Ljava/lang/String;[B)Z
PLcom/android/server/powerstats/PowerStatsLogger;->handleMessage(Landroid/os/Message;)V
HSPLcom/android/server/powerstats/PowerStatsService$1;-><init>(Lcom/android/server/powerstats/PowerStatsService;)V
+PLcom/android/server/powerstats/PowerStatsService$1;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
HSPLcom/android/server/powerstats/PowerStatsService$DeviceConfigListener;-><init>(Lcom/android/server/powerstats/PowerStatsService;)V
-HSPLcom/android/server/powerstats/PowerStatsService$DeviceConfigListener;-><init>(Lcom/android/server/powerstats/PowerStatsService;Lcom/android/server/powerstats/PowerStatsService$DeviceConfigListener-IA;)V
-PLcom/android/server/powerstats/PowerStatsService$DeviceConfigListener;->startListening()V
HSPLcom/android/server/powerstats/PowerStatsService$Injector;-><init>()V
-PLcom/android/server/powerstats/PowerStatsService$Injector;->createBatteryTrigger(Landroid/content/Context;Lcom/android/server/powerstats/PowerStatsLogger;)Lcom/android/server/powerstats/BatteryTrigger;
-PLcom/android/server/powerstats/PowerStatsService$Injector;->createDataStoragePath()Ljava/io/File;
-PLcom/android/server/powerstats/PowerStatsService$Injector;->createMeterCacheFilename()Ljava/lang/String;
-PLcom/android/server/powerstats/PowerStatsService$Injector;->createMeterFilename()Ljava/lang/String;
-PLcom/android/server/powerstats/PowerStatsService$Injector;->createModelCacheFilename()Ljava/lang/String;
-PLcom/android/server/powerstats/PowerStatsService$Injector;->createModelFilename()Ljava/lang/String;
-PLcom/android/server/powerstats/PowerStatsService$Injector;->createPowerStatsLogger(Landroid/content/Context;Landroid/os/Looper;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/powerstats/PowerStatsHALWrapper$IPowerStatsHALWrapper;)Lcom/android/server/powerstats/PowerStatsLogger;
-PLcom/android/server/powerstats/PowerStatsService$Injector;->createResidencyCacheFilename()Ljava/lang/String;
-PLcom/android/server/powerstats/PowerStatsService$Injector;->createResidencyFilename()Ljava/lang/String;
-PLcom/android/server/powerstats/PowerStatsService$Injector;->createStatsPullerImpl(Landroid/content/Context;Landroid/power/PowerStatsInternal;)Lcom/android/server/powerstats/StatsPullAtomCallbackImpl;
-PLcom/android/server/powerstats/PowerStatsService$Injector;->createTimerTrigger(Landroid/content/Context;Lcom/android/server/powerstats/PowerStatsLogger;)Lcom/android/server/powerstats/TimerTrigger;
-HSPLcom/android/server/powerstats/PowerStatsService$Injector;->getClock()Lcom/android/internal/os/Clock;
-HSPLcom/android/server/powerstats/PowerStatsService$Injector;->getDeviceConfig()Landroid/provider/DeviceConfigInterface;
-HSPLcom/android/server/powerstats/PowerStatsService$Injector;->getPowerStatsHALWrapperImpl()Lcom/android/server/powerstats/PowerStatsHALWrapper$IPowerStatsHALWrapper;
-PLcom/android/server/powerstats/PowerStatsService$LocalService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/powerstats/PowerStatsService$LocalService;Ljava/util/concurrent/CompletableFuture;[I)V
-PLcom/android/server/powerstats/PowerStatsService$LocalService$$ExternalSyntheticLambda2;->run()V
-PLcom/android/server/powerstats/PowerStatsService$LocalService;->$r8$lambda$Jf7j_oHA5ZXXBvvutpd1qM7z0CY(Lcom/android/server/powerstats/PowerStatsService$LocalService;Ljava/util/concurrent/CompletableFuture;[I)V
+PLcom/android/server/powerstats/PowerStatsService$LocalService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/powerstats/PowerStatsService$LocalService;Ljava/util/concurrent/CompletableFuture;[II)V
+PLcom/android/server/powerstats/PowerStatsService$LocalService$$ExternalSyntheticLambda0;->run()V
HSPLcom/android/server/powerstats/PowerStatsService$LocalService;-><init>(Lcom/android/server/powerstats/PowerStatsService;)V
-HSPLcom/android/server/powerstats/PowerStatsService$LocalService;-><init>(Lcom/android/server/powerstats/PowerStatsService;Lcom/android/server/powerstats/PowerStatsService$LocalService-IA;)V
-PLcom/android/server/powerstats/PowerStatsService$LocalService;->getEnergyConsumerInfo()[Landroid/hardware/power/stats/EnergyConsumer;
-PLcom/android/server/powerstats/PowerStatsService$LocalService;->getEnergyMeterInfo()[Landroid/hardware/power/stats/Channel;
-PLcom/android/server/powerstats/PowerStatsService$LocalService;->getPowerEntityInfo()[Landroid/hardware/power/stats/PowerEntity;
PLcom/android/server/powerstats/PowerStatsService$LocalService;->getStateResidencyAsync([I)Ljava/util/concurrent/CompletableFuture;
-PLcom/android/server/powerstats/PowerStatsService$LocalService;->lambda$getStateResidencyAsync$1(Ljava/util/concurrent/CompletableFuture;[I)V
-PLcom/android/server/powerstats/PowerStatsService;->-$$Nest$fgetmDeviceConfig(Lcom/android/server/powerstats/PowerStatsService;)Landroid/provider/DeviceConfigInterface;
HSPLcom/android/server/powerstats/PowerStatsService;->-$$Nest$mgetHandler(Lcom/android/server/powerstats/PowerStatsService;)Landroid/os/Handler;
-PLcom/android/server/powerstats/PowerStatsService;->-$$Nest$mgetPowerStatsHal(Lcom/android/server/powerstats/PowerStatsService;)Lcom/android/server/powerstats/PowerStatsHALWrapper$IPowerStatsHALWrapper;
-PLcom/android/server/powerstats/PowerStatsService;->-$$Nest$mgetStateResidencyAsync(Lcom/android/server/powerstats/PowerStatsService;Ljava/util/concurrent/CompletableFuture;[I)V
-HSPLcom/android/server/powerstats/PowerStatsService;-><clinit>()V
HSPLcom/android/server/powerstats/PowerStatsService;-><init>(Landroid/content/Context;)V
HSPLcom/android/server/powerstats/PowerStatsService;-><init>(Landroid/content/Context;Lcom/android/server/powerstats/PowerStatsService$Injector;)V
-HSPLcom/android/server/powerstats/PowerStatsService;->getHandler()Landroid/os/Handler;
HSPLcom/android/server/powerstats/PowerStatsService;->getLooper()Landroid/os/Looper;
HSPLcom/android/server/powerstats/PowerStatsService;->getPowerStatsHal()Lcom/android/server/powerstats/PowerStatsHALWrapper$IPowerStatsHALWrapper;
-PLcom/android/server/powerstats/PowerStatsService;->getStateResidencyAsync(Ljava/util/concurrent/CompletableFuture;[I)V
-PLcom/android/server/powerstats/PowerStatsService;->onBootCompleted()V
+HSPLcom/android/server/powerstats/PowerStatsService;->getPowerStatsInternal()Landroid/power/PowerStatsInternal;
HSPLcom/android/server/powerstats/PowerStatsService;->onBootPhase(I)V
HSPLcom/android/server/powerstats/PowerStatsService;->onStart()V
-PLcom/android/server/powerstats/PowerStatsService;->onSystemServicesReady()V
-PLcom/android/server/powerstats/PowerStatsService;->refreshFlags()V
-PLcom/android/server/powerstats/PowerStatsService;->setPowerMonitorApiEnabled(Z)V
-PLcom/android/server/powerstats/ProtoStreamUtils$ChannelUtils;->getProtoBytes([Landroid/hardware/power/stats/Channel;)[B
PLcom/android/server/powerstats/ProtoStreamUtils$ChannelUtils;->packProtoMessage([Landroid/hardware/power/stats/Channel;Landroid/util/proto/ProtoOutputStream;)V
-PLcom/android/server/powerstats/ProtoStreamUtils$EnergyConsumerResultUtils;->adjustTimeSinceBootToEpoch([Landroid/hardware/power/stats/EnergyConsumerResult;J)V
-PLcom/android/server/powerstats/ProtoStreamUtils$EnergyConsumerResultUtils;->getProtoBytes([Landroid/hardware/power/stats/EnergyConsumerResult;Z)[B
-PLcom/android/server/powerstats/ProtoStreamUtils$EnergyConsumerResultUtils;->packProtoMessage([Landroid/hardware/power/stats/EnergyConsumerResult;Landroid/util/proto/ProtoOutputStream;Z)V
-PLcom/android/server/powerstats/ProtoStreamUtils$EnergyConsumerUtils;->getProtoBytes([Landroid/hardware/power/stats/EnergyConsumer;)[B
-PLcom/android/server/powerstats/ProtoStreamUtils$EnergyConsumerUtils;->packProtoMessage([Landroid/hardware/power/stats/EnergyConsumer;Landroid/util/proto/ProtoOutputStream;)V
-PLcom/android/server/powerstats/ProtoStreamUtils$EnergyMeasurementUtils;->adjustTimeSinceBootToEpoch([Landroid/hardware/power/stats/EnergyMeasurement;J)V
-PLcom/android/server/powerstats/ProtoStreamUtils$EnergyMeasurementUtils;->getProtoBytes([Landroid/hardware/power/stats/EnergyMeasurement;)[B
-PLcom/android/server/powerstats/ProtoStreamUtils$EnergyMeasurementUtils;->packProtoMessage([Landroid/hardware/power/stats/EnergyMeasurement;Landroid/util/proto/ProtoOutputStream;)V
-PLcom/android/server/powerstats/ProtoStreamUtils$PowerEntityUtils;->getProtoBytes([Landroid/hardware/power/stats/PowerEntity;)[B
-PLcom/android/server/powerstats/ProtoStreamUtils$PowerEntityUtils;->packProtoMessage([Landroid/hardware/power/stats/PowerEntity;Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/powerstats/ProtoStreamUtils$ChannelUtils;->packProtoMessage([Landroid/hardware/power/stats/EnergyConsumer;Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/powerstats/ProtoStreamUtils$ChannelUtils;->packProtoMessage([Landroid/hardware/power/stats/EnergyConsumerResult;Landroid/util/proto/ProtoOutputStream;Z)V
+PLcom/android/server/powerstats/ProtoStreamUtils$ChannelUtils;->packProtoMessage([Landroid/hardware/power/stats/EnergyMeasurement;Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/powerstats/ProtoStreamUtils$ChannelUtils;->packProtoMessage([Landroid/hardware/power/stats/PowerEntity;Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/powerstats/ProtoStreamUtils$ChannelUtils;->packProtoMessage([Landroid/hardware/power/stats/StateResidencyResult;Landroid/util/proto/ProtoOutputStream;)V
PLcom/android/server/powerstats/StatsPullAtomCallbackImpl;-><clinit>()V
-PLcom/android/server/powerstats/StatsPullAtomCallbackImpl;-><init>(Landroid/content/Context;Landroid/power/PowerStatsInternal;)V
-PLcom/android/server/powerstats/StatsPullAtomCallbackImpl;->initPullOnDevicePowerMeasurement()Z
-PLcom/android/server/powerstats/StatsPullAtomCallbackImpl;->initSubsystemSleepState()Z
-PLcom/android/server/powerstats/TimerTrigger$1;-><init>(Lcom/android/server/powerstats/TimerTrigger;)V
-PLcom/android/server/powerstats/TimerTrigger$1;->run()V
-PLcom/android/server/powerstats/TimerTrigger$2;-><init>(Lcom/android/server/powerstats/TimerTrigger;)V
-PLcom/android/server/powerstats/TimerTrigger$2;->run()V
-PLcom/android/server/powerstats/TimerTrigger;->-$$Nest$fgetmHandler(Lcom/android/server/powerstats/TimerTrigger;)Landroid/os/Handler;
-PLcom/android/server/powerstats/TimerTrigger;->-$$Nest$fgetmLogDataHighFrequency(Lcom/android/server/powerstats/TimerTrigger;)Ljava/lang/Runnable;
-PLcom/android/server/powerstats/TimerTrigger;->-$$Nest$fgetmLogDataLowFrequency(Lcom/android/server/powerstats/TimerTrigger;)Ljava/lang/Runnable;
-PLcom/android/server/powerstats/TimerTrigger;-><clinit>()V
-PLcom/android/server/powerstats/TimerTrigger;-><init>(Landroid/content/Context;Lcom/android/server/powerstats/PowerStatsLogger;Z)V
+HPLcom/android/server/powerstats/StatsPullAtomCallbackImpl;->onPullAtom(ILjava/util/List;)I
+PLcom/android/server/powerstats/TimerTrigger$PeriodicTimer;-><init>(Lcom/android/server/powerstats/TimerTrigger;Ljava/lang/String;JI)V
+PLcom/android/server/powerstats/TimerTrigger$PeriodicTimer;->run()V
+PLcom/android/server/powerstats/TimerTrigger;-><init>(Landroid/content/Context;Lcom/android/server/powerstats/PowerStatsLogger;)V
PLcom/android/server/profcollect/ProfcollectForwardingService;-><clinit>()V
PLcom/android/server/profcollect/ProfcollectForwardingService;->enabled()Z
HSPLcom/android/server/recoverysystem/RecoverySystemService$Injector;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/recoverysystem/RecoverySystemService$Injector;->getContext()Landroid/content/Context;
-PLcom/android/server/recoverysystem/RecoverySystemService$Injector;->getLockSettingsService()Lcom/android/internal/widget/LockSettingsInternal;
HSPLcom/android/server/recoverysystem/RecoverySystemService$Lifecycle;-><init>(Landroid/content/Context;)V
HSPLcom/android/server/recoverysystem/RecoverySystemService$Lifecycle;->onBootPhase(I)V
HSPLcom/android/server/recoverysystem/RecoverySystemService$Lifecycle;->onStart()V
HSPLcom/android/server/recoverysystem/RecoverySystemService$PreferencesManager;-><init>(Landroid/content/Context;)V
HSPLcom/android/server/recoverysystem/RecoverySystemService;-><clinit>()V
-HSPLcom/android/server/recoverysystem/RecoverySystemService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/recoverysystem/RecoverySystemService;-><init>(Landroid/content/Context;Lcom/android/server/recoverysystem/RecoverySystemService-IA;)V
HSPLcom/android/server/recoverysystem/RecoverySystemService;-><init>(Lcom/android/server/recoverysystem/RecoverySystemService$Injector;)V
PLcom/android/server/recoverysystem/RecoverySystemService;->onSystemServicesReady()V
PLcom/android/server/resources/ResourcesManagerService$1;-><init>(Lcom/android/server/resources/ResourcesManagerService;)V
+PLcom/android/server/resources/ResourcesManagerService$1;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/resources/ResourcesManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/resources/ResourcesManagerService;->onStart()V
-PLcom/android/server/resources/ResourcesManagerService;->setActivityManagerService(Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/restrictions/RestrictionsManagerService$RestrictionsManagerImpl;-><init>(Lcom/android/server/restrictions/RestrictionsManagerService;Landroid/content/Context;)V
PLcom/android/server/restrictions/RestrictionsManagerService$RestrictionsManagerImpl;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle;
PLcom/android/server/restrictions/RestrictionsManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/restrictions/RestrictionsManagerService;->access$000(Lcom/android/server/restrictions/RestrictionsManagerService;Ljava/lang/String;)Landroid/os/IBinder;
-PLcom/android/server/restrictions/RestrictionsManagerService;->access$100(Lcom/android/server/restrictions/RestrictionsManagerService;Ljava/lang/String;)Landroid/os/IBinder;
-PLcom/android/server/restrictions/RestrictionsManagerService;->access$200(Lcom/android/server/restrictions/RestrictionsManagerService;Ljava/lang/Class;)Ljava/lang/Object;
PLcom/android/server/restrictions/RestrictionsManagerService;->onStart()V
PLcom/android/server/rollback/AppDataRollbackHelper;-><init>(Lcom/android/server/pm/Installer;)V
PLcom/android/server/rollback/RollbackManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/rollback/RollbackManagerService;->onBootPhase(I)V
PLcom/android/server/rollback/RollbackManagerService;->onStart()V
PLcom/android/server/rollback/RollbackManagerService;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;II)V
PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda12;->get()Ljava/lang/Object;
PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda14;->run()V
-PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;I)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;Landroid/content/Context;)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda8;->run()V
-PLcom/android/server/rollback/RollbackManagerServiceImpl$1;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl$2;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl$3;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl$4;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl$5;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda2;->get()Ljava/lang/Object;
+PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;Ljava/lang/Object;I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda7;->run()V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$1;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/rollback/RollbackManagerServiceImpl$SessionCallback;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl$SessionCallback;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;Lcom/android/server/rollback/RollbackManagerServiceImpl$SessionCallback-IA;)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->$r8$lambda$5ba2COgc7nscJnHcl1QkhQ-HxvI(Lcom/android/server/rollback/RollbackManagerServiceImpl;Landroid/content/Context;)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->$r8$lambda$5ePSTVmaLxSjKqVxrnrccgGY6zE(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->$r8$lambda$bbfHD4WtP5OoGBOtkEzNdwF9g2M(Lcom/android/server/rollback/RollbackManagerServiceImpl;)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->$r8$lambda$fQDZo-8mYW8tPdxnapF0CQgGj4w(Lcom/android/server/rollback/RollbackManagerServiceImpl;I)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->$r8$lambda$l0jOsI4D4tsO9tHi89vVcHGslz8(Lcom/android/server/rollback/RollbackManagerServiceImpl;I)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->-$$Nest$fgetmRelativeBootTime(Lcom/android/server/rollback/RollbackManagerServiceImpl;)J
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->-$$Nest$fgetmRollbacks(Lcom/android/server/rollback/RollbackManagerServiceImpl;)Ljava/util/List;
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->-$$Nest$fputmRelativeBootTime(Lcom/android/server/rollback/RollbackManagerServiceImpl;J)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->-$$Nest$massertInWorkerThread(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->-$$Nest$smcalculateRelativeBootTime()J
+PLcom/android/server/rollback/RollbackManagerServiceImpl$SessionCallback;->onActiveChanged(IZ)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$SessionCallback;->onBadgingChanged(I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$SessionCallback;->onCreated(I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$SessionCallback;->onFinished(IZ)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$SessionCallback;->onProgressChanged(IF)V
PLcom/android/server/rollback/RollbackManagerServiceImpl;-><clinit>()V
-HPLcom/android/server/rollback/RollbackManagerServiceImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;-><init>(Landroid/content/Context;)V
PLcom/android/server/rollback/RollbackManagerServiceImpl;->assertInWorkerThread()V
PLcom/android/server/rollback/RollbackManagerServiceImpl;->assertNotInWorkerThread()V
PLcom/android/server/rollback/RollbackManagerServiceImpl;->awaitResult(Ljava/lang/Runnable;)V
PLcom/android/server/rollback/RollbackManagerServiceImpl;->awaitResult(Ljava/util/function/Supplier;)Ljava/lang/Object;
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->calculateRelativeBootTime()J
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->destroyCeSnapshotsForExpiredRollbacks(I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/rollback/RollbackManagerServiceImpl;->enforceManageRollbacks(Ljava/lang/String;)V
PLcom/android/server/rollback/RollbackManagerServiceImpl;->getAvailableRollbacks()Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->getContextAsUser(Landroid/os/UserHandle;)Landroid/content/Context;
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->getHandler()Landroid/os/Handler;
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$getAvailableRollbacks$1()Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$new$0(Landroid/content/Context;)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$onBootCompleted$11()V
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$onUnlockUser$8(I)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$onUnlockUser$9(I)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->onBootCompleted()V
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->onUnlockUser(I)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->registerTimeChangeReceiver()V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->getPackageInfo(Ljava/lang/String;)Landroid/content/pm/PackageInfo;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->getRollbackForSession(I)Lcom/android/server/rollback/Rollback;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->onPackageReplaced(Ljava/lang/String;)V
PLcom/android/server/rollback/RollbackManagerServiceImpl;->registerUserCallbacks(Landroid/os/UserHandle;)V
PLcom/android/server/rollback/RollbackManagerServiceImpl;->runExpiration()V
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->runExpirationDefaultRollbackLifetime()V
PLcom/android/server/rollback/RollbackManagerServiceImpl;->updateRollbackLifetimeDurationInMillis()V
-PLcom/android/server/rollback/RollbackPackageHealthObserver$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/rollback/RollbackPackageHealthObserver;)V
-PLcom/android/server/rollback/RollbackPackageHealthObserver$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/rollback/RollbackPackageHealthObserver;->$r8$lambda$mH9BjKzFj781_SE7sCPceKzVQGQ(Lcom/android/server/rollback/RollbackPackageHealthObserver;)V
-PLcom/android/server/rollback/RollbackPackageHealthObserver;-><init>(Landroid/content/Context;)V
-PLcom/android/server/rollback/RollbackPackageHealthObserver;->assertInWorkerThread()V
-PLcom/android/server/rollback/RollbackPackageHealthObserver;->getName()Ljava/lang/String;
-PLcom/android/server/rollback/RollbackPackageHealthObserver;->lambda$onBootCompletedAsync$4()V
-PLcom/android/server/rollback/RollbackPackageHealthObserver;->onBootCompleted()V
-PLcom/android/server/rollback/RollbackPackageHealthObserver;->onBootCompletedAsync()V
-PLcom/android/server/rollback/RollbackPackageHealthObserver;->popLastStagedRollbackIds()Landroid/util/SparseArray;
-PLcom/android/server/rollback/RollbackPackageHealthObserver;->readStagedRollbackIds(Ljava/io/File;)Landroid/util/SparseArray;
-PLcom/android/server/rollback/RollbackPackageHealthObserver;->writeBoolean(Ljava/io/File;Z)V
PLcom/android/server/rollback/RollbackStore;-><init>(Ljava/io/File;Ljava/io/File;)V
-PLcom/android/server/rollback/RollbackStore;->loadRollbacks()Ljava/util/List;
PLcom/android/server/rollback/RollbackStore;->loadRollbacks(Ljava/io/File;)Ljava/util/List;
-PLcom/android/server/rotationresolver/RotationResolverManagerService;-><clinit>()V
-PLcom/android/server/rotationresolver/RotationResolverManagerService;->getServiceConfigPackage(Landroid/content/Context;)Ljava/lang/String;
-PLcom/android/server/rotationresolver/RotationResolverManagerService;->isServiceConfigured(Landroid/content/Context;)Z
PLcom/android/server/security/AttestationVerificationManagerService$1;-><init>(Lcom/android/server/security/AttestationVerificationManagerService;)V
+PLcom/android/server/security/AttestationVerificationManagerService$1;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/security/AttestationVerificationManagerService$DumpLogger;-><init>()V
PLcom/android/server/security/AttestationVerificationManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/security/AttestationVerificationManagerService;->onStart()V
PLcom/android/server/security/AttestationVerificationPeerDeviceVerifier;-><clinit>()V
-PLcom/android/server/security/AttestationVerificationPeerDeviceVerifier;-><init>(Landroid/content/Context;)V
-PLcom/android/server/security/AttestationVerificationPeerDeviceVerifier;->getCertificateBytes(Ljava/lang/String;)[B
-PLcom/android/server/security/AttestationVerificationPeerDeviceVerifier;->getTrustAnchorResources()[Ljava/lang/String;
-PLcom/android/server/security/AttestationVerificationPeerDeviceVerifier;->getTrustAnchors()Ljava/util/Set;
+PLcom/android/server/security/AttestationVerificationPeerDeviceVerifier;-><init>(Landroid/content/Context;Lcom/android/server/security/AttestationVerificationManagerService$DumpLogger;)V
PLcom/android/server/security/FileIntegrity;->setUpFsVerity(Landroid/os/ParcelFileDescriptor;)V
PLcom/android/server/security/FileIntegrity;->setUpFsVerity(Ljava/io/File;)V
-HSPLcom/android/server/security/FileIntegrityService$1;-><init>(Lcom/android/server/security/FileIntegrityService;)V
-PLcom/android/server/security/FileIntegrityService$1;->isApkVeritySupported()Z
+HSPLcom/android/server/security/FileIntegrityService$BinderService;-><init>(Lcom/android/server/security/FileIntegrityService;Landroid/content/Context;)V
+PLcom/android/server/security/FileIntegrityService$BinderService;->isApkVeritySupported()Z
HSPLcom/android/server/security/FileIntegrityService;-><init>(Landroid/content/Context;)V
HSPLcom/android/server/security/FileIntegrityService;->collectCertificate([B)V
-HSPLcom/android/server/security/FileIntegrityService;->loadAllCertificates()V
HSPLcom/android/server/security/FileIntegrityService;->loadCertificatesFromDirectory(Ljava/nio/file/Path;)V
HSPLcom/android/server/security/FileIntegrityService;->onStart()V
-HSPLcom/android/server/security/FileIntegrityService;->toCertificate([B)Ljava/security/cert/X509Certificate;
PLcom/android/server/security/KeyAttestationApplicationIdProviderService;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/security/KeyAttestationApplicationIdProviderService;->getKeyAttestationApplicationId(I)Landroid/security/keystore/KeyAttestationApplicationId;
+PLcom/android/server/security/KeyAttestationApplicationIdProviderService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
PLcom/android/server/security/KeyChainSystemService$1;-><init>(Lcom/android/server/security/KeyChainSystemService;)V
+PLcom/android/server/security/KeyChainSystemService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/security/KeyChainSystemService;-><init>(Landroid/content/Context;)V
PLcom/android/server/security/KeyChainSystemService;->onStart()V
+PLcom/android/server/security/authenticationpolicy/AuthenticationPolicyService$1;-><init>(Lcom/android/server/security/authenticationpolicy/AuthenticationPolicyService;)V
+PLcom/android/server/security/authenticationpolicy/AuthenticationPolicyService$1;->onAuthenticationFailed(I)V
+PLcom/android/server/security/authenticationpolicy/AuthenticationPolicyService$1;->onAuthenticationSucceeded(I)V
+PLcom/android/server/security/authenticationpolicy/AuthenticationPolicyService$2;-><init>(Lcom/android/server/security/authenticationpolicy/AuthenticationPolicyService;)V
+PLcom/android/server/security/authenticationpolicy/AuthenticationPolicyService$3;-><init>(Lcom/android/server/security/authenticationpolicy/AuthenticationPolicyService;Landroid/os/Looper;)V
+PLcom/android/server/security/authenticationpolicy/AuthenticationPolicyService$3;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/security/authenticationpolicy/AuthenticationPolicyService$4;-><init>(Lcom/android/server/security/authenticationpolicy/AuthenticationPolicyService;)V
+PLcom/android/server/security/authenticationpolicy/AuthenticationPolicyService;-><clinit>()V
+PLcom/android/server/security/authenticationpolicy/AuthenticationPolicyService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/security/authenticationpolicy/AuthenticationPolicyService;-><init>(Landroid/content/Context;Lcom/android/internal/widget/LockPatternUtils;)V
+PLcom/android/server/security/authenticationpolicy/AuthenticationPolicyService;->init()V
+PLcom/android/server/security/authenticationpolicy/AuthenticationPolicyService;->onBootPhase(I)V
+PLcom/android/server/security/authenticationpolicy/AuthenticationPolicyService;->onStart()V
+PLcom/android/server/security/authenticationpolicy/AuthenticationPolicyService;->reportAuthAttempt(IIZ)V
+PLcom/android/server/security/authenticationpolicy/SecureLockDeviceService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/security/authenticationpolicy/SecureLockDeviceService$Lifecycle;->onStart()V
+PLcom/android/server/security/rkp/RemoteProvisioningRegistration$1;-><init>(Lcom/android/server/security/rkp/RemoteProvisioningRegistration;Landroid/security/rkp/IGetKeyCallback;)V
+PLcom/android/server/security/rkp/RemoteProvisioningRegistration$1;->onError(Ljava/lang/Throwable;)V
+PLcom/android/server/security/rkp/RemoteProvisioningRegistration$1;->onResult(Ljava/lang/Object;)V
+PLcom/android/server/security/rkp/RemoteProvisioningRegistration;-><init>(Landroid/security/rkp/service/RegistrationProxy;Ljava/util/concurrent/Executor;)V
+PLcom/android/server/security/rkp/RemoteProvisioningRegistration;->getKey(ILandroid/security/rkp/IGetKeyCallback;)V
+PLcom/android/server/security/rkp/RemoteProvisioningService$RegistrationReceiver;-><init>(Ljava/util/concurrent/Executor;Landroid/security/rkp/IGetRegistrationCallback;)V
+PLcom/android/server/security/rkp/RemoteProvisioningService$RegistrationReceiver;->onResult(Ljava/lang/Object;)V
PLcom/android/server/security/rkp/RemoteProvisioningService$RemoteProvisioningImpl;-><init>(Lcom/android/server/security/rkp/RemoteProvisioningService;)V
-PLcom/android/server/security/rkp/RemoteProvisioningService$RemoteProvisioningImpl;-><init>(Lcom/android/server/security/rkp/RemoteProvisioningService;Lcom/android/server/security/rkp/RemoteProvisioningService$RemoteProvisioningImpl-IA;)V
+PLcom/android/server/security/rkp/RemoteProvisioningService$RemoteProvisioningImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/security/rkp/RemoteProvisioningService$RemoteProvisioningImpl;->getRegistration(Ljava/lang/String;Landroid/security/rkp/IGetRegistrationCallback;)V
PLcom/android/server/security/rkp/RemoteProvisioningService;-><clinit>()V
PLcom/android/server/security/rkp/RemoteProvisioningService;-><init>(Landroid/content/Context;)V
PLcom/android/server/security/rkp/RemoteProvisioningService;->onStart()V
-PLcom/android/server/selinux/QuotaLimiter;-><init>(I)V
+PLcom/android/server/security/rkp/RemoteProvisioningShellCommand$Injector;->getIrpcBinder(Ljava/lang/String;)Landroid/hardware/security/keymint/IRemotelyProvisionedComponent;
+PLcom/android/server/security/rkp/RemoteProvisioningShellCommand;-><clinit>()V
+PLcom/android/server/security/rkp/RemoteProvisioningShellCommand;-><init>(Landroid/content/Context;I)V
+PLcom/android/server/security/rkp/RemoteProvisioningShellCommand;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/security/rkp/RemoteProvisioningShellCommand;->dumpRpcInstance(Ljava/io/PrintWriter;Ljava/lang/String;)V
PLcom/android/server/selinux/QuotaLimiter;-><init>(Lcom/android/internal/os/Clock;Ljava/time/Duration;I)V
-PLcom/android/server/selinux/RateLimiter;-><init>(Lcom/android/internal/os/Clock;Ljava/time/Duration;)V
-PLcom/android/server/selinux/RateLimiter;-><init>(Ljava/time/Duration;)V
+HSPLcom/android/server/selinux/RateLimiter;-><init>(Lcom/android/internal/os/Clock;Ljava/time/Duration;)V
+HSPLcom/android/server/selinux/RateLimiter;-><init>(Ljava/time/Duration;)V
+PLcom/android/server/selinux/SelinuxAuditLogBuilder$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/selinux/SelinuxAuditLogBuilder$$ExternalSyntheticLambda1;->apply(I)Ljava/lang/Object;
+PLcom/android/server/selinux/SelinuxAuditLogBuilder;-><clinit>()V
+PLcom/android/server/selinux/SelinuxAuditLogBuilder;-><init>()V
+PLcom/android/server/selinux/SelinuxAuditLogBuilder;->nextTokenMatches(Ljava/util/regex/Matcher;)Z
PLcom/android/server/selinux/SelinuxAuditLogsCollector;-><clinit>()V
PLcom/android/server/selinux/SelinuxAuditLogsCollector;-><init>(Lcom/android/server/selinux/RateLimiter;Lcom/android/server/selinux/QuotaLimiter;)V
+PLcom/android/server/selinux/SelinuxAuditLogsJob;-><init>(Lcom/android/server/selinux/SelinuxAuditLogsCollector;)V
+PLcom/android/server/selinux/SelinuxAuditLogsService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/selinux/SelinuxAuditLogsService;Landroid/app/job/JobParameters;)V
+HPLcom/android/server/selinux/SelinuxAuditLogsService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/selinux/SelinuxAuditLogsService$LogsCollectorJobScheduler;-><init>(Landroid/app/job/JobScheduler;)V
+PLcom/android/server/selinux/SelinuxAuditLogsService$LogsCollectorJobScheduler;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/selinux/SelinuxAuditLogsService$LogsCollectorJobScheduler;->schedule()V
PLcom/android/server/selinux/SelinuxAuditLogsService;-><clinit>()V
+PLcom/android/server/selinux/SelinuxAuditLogsService;-><init>()V
+PLcom/android/server/selinux/SelinuxAuditLogsService;->onStartJob(Landroid/app/job/JobParameters;)Z
PLcom/android/server/selinux/SelinuxAuditLogsService;->schedule(Landroid/content/Context;)V
-PLcom/android/server/sensorprivacy/AllSensorStateController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/sensorprivacy/AllSensorStateController;)V
-PLcom/android/server/sensorprivacy/AllSensorStateController$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
-PLcom/android/server/sensorprivacy/AllSensorStateController;->$r8$lambda$xChE0OJhLjTDhwgTSFp_J6v0xhA(Lcom/android/server/sensorprivacy/AllSensorStateController;Z)V
-PLcom/android/server/sensorprivacy/AllSensorStateController;-><clinit>()V
+PLcom/android/server/sensorprivacy/AllSensorStateController$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/sensorprivacy/AllSensorStateController$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
PLcom/android/server/sensorprivacy/AllSensorStateController;-><init>()V
-PLcom/android/server/sensorprivacy/AllSensorStateController;->getAllSensorStateLocked()Z
-PLcom/android/server/sensorprivacy/AllSensorStateController;->getInstance()Lcom/android/server/sensorprivacy/AllSensorStateController;
-PLcom/android/server/sensorprivacy/AllSensorStateController;->persist(Z)V
-PLcom/android/server/sensorprivacy/AllSensorStateController;->schedulePersistLocked()V
-PLcom/android/server/sensorprivacy/AllSensorStateController;->setAllSensorPrivacyListenerLocked(Landroid/os/Handler;Lcom/android/server/sensorprivacy/SensorPrivacyStateController$AllSensorPrivacyListener;)V
PLcom/android/server/sensorprivacy/CameraPrivacyLightController;-><clinit>()V
-PLcom/android/server/sensorprivacy/CameraPrivacyLightController;-><init>(Landroid/content/Context;)V
PLcom/android/server/sensorprivacy/CameraPrivacyLightController;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
-PLcom/android/server/sensorprivacy/PersistedState$$ExternalSyntheticLambda0;-><init>()V
PLcom/android/server/sensorprivacy/PersistedState$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/sensorprivacy/PersistedState$PVersion2;->-$$Nest$fgetmStates(Lcom/android/server/sensorprivacy/PersistedState$PVersion2;)Landroid/util/ArrayMap;
PLcom/android/server/sensorprivacy/PersistedState$PVersion2;-><init>(I)V
-PLcom/android/server/sensorprivacy/PersistedState$PVersion2;-><init>(ILcom/android/server/sensorprivacy/PersistedState$PVersion2-IA;)V
PLcom/android/server/sensorprivacy/PersistedState$TypeUserSensor;-><init>(III)V
PLcom/android/server/sensorprivacy/PersistedState$TypeUserSensor;->hashCode()I
-PLcom/android/server/sensorprivacy/PersistedState;->$r8$lambda$7IQf-UpFyGa5zIamP1HgWaOc-kY(Lcom/android/server/sensorprivacy/PersistedState;Landroid/util/ArrayMap;)V
-PLcom/android/server/sensorprivacy/PersistedState;-><clinit>()V
-PLcom/android/server/sensorprivacy/PersistedState;-><init>(Ljava/lang/String;)V
-PLcom/android/server/sensorprivacy/PersistedState;->forEachKnownState(Lcom/android/internal/util/function/QuadConsumer;)V
-PLcom/android/server/sensorprivacy/PersistedState;->fromFile(Ljava/lang/String;)Lcom/android/server/sensorprivacy/PersistedState;
-PLcom/android/server/sensorprivacy/PersistedState;->getState(III)Lcom/android/server/sensorprivacy/SensorState;
-PLcom/android/server/sensorprivacy/PersistedState;->persist(Landroid/util/ArrayMap;)V
+PLcom/android/server/sensorprivacy/PersistedState;-><init>()V
PLcom/android/server/sensorprivacy/PersistedState;->readPVersion2(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/sensorprivacy/PersistedState$PVersion2;)V
-PLcom/android/server/sensorprivacy/PersistedState;->readState()V
-PLcom/android/server/sensorprivacy/PersistedState;->schedulePersist()V
PLcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper$CallStateCallback;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper$CallStateCallback;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper;Lcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper$CallStateCallback-IA;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper$CallStateCallback;->onCallStateChanged(I)V
PLcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper$OutgoingEmergencyStateCallback;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper$OutgoingEmergencyStateCallback;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper;Lcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper$OutgoingEmergencyStateCallback-IA;)V
PLcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService;)V
PLcom/android/server/sensorprivacy/SensorPrivacyService$DeathRecipient;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService;Landroid/hardware/ISensorPrivacyListener;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyHandler;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService;Landroid/os/Looper;Landroid/content/Context;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyHandler;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService;Landroid/os/Looper;)V
PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyHandler;->addDeathRecipient(Landroid/hardware/ISensorPrivacyListener;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyHandler;->addListener(Landroid/hardware/ISensorPrivacyListener;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyHandler;->addToggleListener(Landroid/hardware/ISensorPrivacyListener;)V
-HPLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyHandler;->handleSensorPrivacyChanged(IIIZ)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyHandler;->handleSensorPrivacyChanged(IIIZ)V
PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl$$ExternalSyntheticLambda0;-><init>(Landroid/hardware/SensorPrivacyManagerInternal$OnUserSensorPrivacyChangedListener;IZ)V
PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl;->$r8$lambda$6c5oG3NqTqZpXs8uPF7TL16NWZ0(Landroid/hardware/SensorPrivacyManagerInternal$OnUserSensorPrivacyChangedListener;IZ)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl;->-$$Nest$mdispatch(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl;IIZ)V
PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService;Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl-IA;)V
PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl;->addSensorPrivacyListenerForAllUsers(ILandroid/hardware/SensorPrivacyManagerInternal$OnUserSensorPrivacyChangedListener;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl;->dispatch(IIZ)V
PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl;->isSensorPrivacyEnabled(II)Z
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl;->lambda$dispatch$0(Landroid/hardware/SensorPrivacyManagerInternal$OnUserSensorPrivacyChangedListener;IZ)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyHandler;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;[ZI[Z[ZI[Z)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$$ExternalSyntheticLambda3;->run()V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;[ZI[Z[ZI[Z)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$$ExternalSyntheticLambda4;->run()V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$1;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;Lcom/android/server/sensorprivacy/SensorPrivacyService;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$2;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;Lcom/android/server/sensorprivacy/SensorPrivacyService;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyHandler;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;[ZI[Z[ZI[ZI)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$1;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;I)V
PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$3;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;Landroid/os/Handler;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->$r8$lambda$6z1C7T_x7l1R1AsWqbHQW2XLR5s(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;[ZI[Z[ZI[Z)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->$r8$lambda$in8xHyZSF77Hcq9nYZVt7IxVErs(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;[ZI[Z[ZI[Z)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->-$$Nest$misToggleSensorPrivacyEnabledInternal(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;III)Z
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->-$$Nest$mregisterSettingsObserver(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->-$$Nest$msetGlobalRestriction(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;IZ)V
PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->-$$Nest$mshowSensorStateChangedActivity(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;II)V
PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->-$$Nest$muserSwitching(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;II)V
PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService;)V
PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->addSensorPrivacyListener(Landroid/hardware/ISensorPrivacyListener;)V
PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->addToggleSensorPrivacyListener(Landroid/hardware/ISensorPrivacyListener;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->correctStateIfNeeded()V
-HPLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->enforceObserveSensorPrivacyPermission()V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->enforcePermission(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->enforceObserveSensorPrivacyPermission()V
PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->isCombinedToggleSensorPrivacyEnabled(I)Z
PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->isSensorPrivacyEnabled()Z
PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->isToggleSensorPrivacyEnabled(II)Z
PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->isToggleSensorPrivacyEnabledInternal(III)Z
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->lambda$userSwitching$5([ZI[Z[ZI[Z)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->lambda$userSwitching$6([ZI[Z[ZI[Z)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->onOpNoted(IILjava/lang/String;Ljava/lang/String;II)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->onOpStarted(IILjava/lang/String;Ljava/lang/String;II)V
PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->registerSettingsObserver()V
PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->setGlobalRestriction(IZ)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->showSensorStateChangedActivity(II)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->showSensorUseDialog(I)V
PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->supportsSensorToggle(II)Z
-PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->userSwitching(II)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$fgetmAppOpsManager(Lcom/android/server/sensorprivacy/SensorPrivacyService;)Landroid/app/AppOpsManager;
-PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$fgetmAppOpsManagerInternal(Lcom/android/server/sensorprivacy/SensorPrivacyService;)Landroid/app/AppOpsManagerInternal;
-PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$fgetmAppOpsRestrictionToken(Lcom/android/server/sensorprivacy/SensorPrivacyService;)Landroid/os/IBinder;
-PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$fgetmContext(Lcom/android/server/sensorprivacy/SensorPrivacyService;)Landroid/content/Context;
-PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$fgetmCurrentUser(Lcom/android/server/sensorprivacy/SensorPrivacyService;)I
-PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$fgetmPackageManagerInternal(Lcom/android/server/sensorprivacy/SensorPrivacyService;)Landroid/content/pm/PackageManagerInternal;
-PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$fgetmSensorPrivacyManagerInternal(Lcom/android/server/sensorprivacy/SensorPrivacyService;)Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl;
-PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$fgetmSensorPrivacyServiceImpl(Lcom/android/server/sensorprivacy/SensorPrivacyService;)Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;
-PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$fgetmTelephonyManager(Lcom/android/server/sensorprivacy/SensorPrivacyService;)Landroid/telephony/TelephonyManager;
-PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$fgetmUserManagerInternal(Lcom/android/server/sensorprivacy/SensorPrivacyService;)Lcom/android/server/pm/UserManagerInternal;
-PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$sfgetACTION_DISABLE_TOGGLE_SENSOR_PRIVACY()Ljava/lang/String;
PLcom/android/server/sensorprivacy/SensorPrivacyService;-><clinit>()V
PLcom/android/server/sensorprivacy/SensorPrivacyService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyService;->getCurrentTimeMillis()J
PLcom/android/server/sensorprivacy/SensorPrivacyService;->onBootPhase(I)V
PLcom/android/server/sensorprivacy/SensorPrivacyService;->onStart()V
PLcom/android/server/sensorprivacy/SensorPrivacyService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyStateController;-><init>()V
-PLcom/android/server/sensorprivacy/SensorPrivacyStateController;->atomic(Ljava/lang/Runnable;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyStateController;->forEachState(Lcom/android/server/sensorprivacy/SensorPrivacyStateController$SensorPrivacyStateConsumer;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyStateController;->getAllSensorState()Z
-PLcom/android/server/sensorprivacy/SensorPrivacyStateController;->getInstance()Lcom/android/server/sensorprivacy/SensorPrivacyStateController;
-PLcom/android/server/sensorprivacy/SensorPrivacyStateController;->getState(III)Lcom/android/server/sensorprivacy/SensorState;
-PLcom/android/server/sensorprivacy/SensorPrivacyStateController;->persistAll()V
-PLcom/android/server/sensorprivacy/SensorPrivacyStateController;->setAllSensorPrivacyListener(Landroid/os/Handler;Lcom/android/server/sensorprivacy/SensorPrivacyStateController$AllSensorPrivacyListener;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyStateController;->setSensorPrivacyListener(Landroid/os/Handler;Lcom/android/server/sensorprivacy/SensorPrivacyStateController$SensorPrivacyListener;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyStateControllerImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyStateController$SensorPrivacyStateConsumer;)V
PLcom/android/server/sensorprivacy/SensorPrivacyStateControllerImpl;-><init>()V
-PLcom/android/server/sensorprivacy/SensorPrivacyStateControllerImpl;->forEachStateLocked(Lcom/android/server/sensorprivacy/SensorPrivacyStateController$SensorPrivacyStateConsumer;)V
-PLcom/android/server/sensorprivacy/SensorPrivacyStateControllerImpl;->getDefaultSensorState()Lcom/android/server/sensorprivacy/SensorState;
-PLcom/android/server/sensorprivacy/SensorPrivacyStateControllerImpl;->getInstance()Lcom/android/server/sensorprivacy/SensorPrivacyStateController;
-PLcom/android/server/sensorprivacy/SensorPrivacyStateControllerImpl;->getStateLocked(III)Lcom/android/server/sensorprivacy/SensorState;
+PLcom/android/server/sensorprivacy/SensorPrivacyStateControllerImpl;->atomic(Ljava/lang/Runnable;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyStateControllerImpl;->dumpLocked(Lcom/android/internal/util/dump/DualDumpOutputStream;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyStateControllerImpl;->getState(III)Lcom/android/server/sensorprivacy/SensorState;
PLcom/android/server/sensorprivacy/SensorPrivacyStateControllerImpl;->schedulePersistLocked()V
-PLcom/android/server/sensorprivacy/SensorPrivacyStateControllerImpl;->setSensorPrivacyListenerLocked(Landroid/os/Handler;Lcom/android/server/sensorprivacy/SensorPrivacyStateController$SensorPrivacyListener;)V
PLcom/android/server/sensorprivacy/SensorState;-><init>(I)V
-PLcom/android/server/sensorprivacy/SensorState;-><init>(Z)V
-PLcom/android/server/sensorprivacy/SensorState;->enabledToState(Z)I
-PLcom/android/server/sensorprivacy/SensorState;->getState()I
PLcom/android/server/sensorprivacy/SensorState;->isEnabled()Z
-PLcom/android/server/sensors/SensorManagerInternal;-><init>()V
PLcom/android/server/sensors/SensorService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/sensors/SensorService;)V
PLcom/android/server/sensors/SensorService$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/sensors/SensorService$LocalService;-><init>(Lcom/android/server/sensors/SensorService;)V
-PLcom/android/server/sensors/SensorService$LocalService;->addProximityActiveListener(Ljava/util/concurrent/Executor;Lcom/android/server/sensors/SensorManagerInternal$ProximityActiveListener;)V
PLcom/android/server/sensors/SensorService$ProximityListenerDelegate;-><init>(Lcom/android/server/sensors/SensorService;)V
-PLcom/android/server/sensors/SensorService$ProximityListenerDelegate;-><init>(Lcom/android/server/sensors/SensorService;Lcom/android/server/sensors/SensorService$ProximityListenerDelegate-IA;)V
PLcom/android/server/sensors/SensorService$ProximityListenerDelegate;->onProximityActive(Z)V
PLcom/android/server/sensors/SensorService$ProximityListenerProxy$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/sensors/SensorService$ProximityListenerProxy;Z)V
PLcom/android/server/sensors/SensorService$ProximityListenerProxy$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/sensors/SensorService$ProximityListenerProxy;->$r8$lambda$lZwMJTdMAI1bCMIxj5Bw6uRSXWw(Lcom/android/server/sensors/SensorService$ProximityListenerProxy;Z)V
-PLcom/android/server/sensors/SensorService$ProximityListenerProxy;-><init>(Ljava/util/concurrent/Executor;Lcom/android/server/sensors/SensorManagerInternal$ProximityActiveListener;)V
-PLcom/android/server/sensors/SensorService$ProximityListenerProxy;->lambda$onProximityActive$0(Z)V
+PLcom/android/server/sensors/SensorService$ProximityListenerProxy;-><init>(Ljava/util/concurrent/Executor;Lcom/android/server/display/mode/ProximitySensorObserver;)V
PLcom/android/server/sensors/SensorService$ProximityListenerProxy;->onProximityActive(Z)V
PLcom/android/server/sensors/SensorService;->$r8$lambda$tuvhrgJDhAzfGFTh_3IUBIw3Spg(Lcom/android/server/sensors/SensorService;)V
-PLcom/android/server/sensors/SensorService;->-$$Nest$fgetmLock(Lcom/android/server/sensors/SensorService;)Ljava/lang/Object;
-PLcom/android/server/sensors/SensorService;->-$$Nest$fgetmProximityListeners(Lcom/android/server/sensors/SensorService;)Landroid/util/ArrayMap;
-PLcom/android/server/sensors/SensorService;->-$$Nest$fgetmPtr(Lcom/android/server/sensors/SensorService;)J
PLcom/android/server/sensors/SensorService;->-$$Nest$smregisterProximityActiveListenerNative(J)V
PLcom/android/server/sensors/SensorService;-><init>(Landroid/content/Context;)V
PLcom/android/server/sensors/SensorService;->lambda$new$0()V
PLcom/android/server/sensors/SensorService;->onBootPhase(I)V
PLcom/android/server/sensors/SensorService;->onStart()V
-PLcom/android/server/servicewatcher/CurrentUserServiceSupplier$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/servicewatcher/CurrentUserServiceSupplier$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;-><init>(Ljava/lang/String;ILandroid/content/ComponentName;ILandroid/os/Bundle;)V
-PLcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;-><init>(Ljava/lang/String;Landroid/content/pm/ResolveInfo;)V
-PLcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;->getMetadata()Landroid/os/Bundle;
-PLcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;->getVersion()I
-PLcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;->parseUid(Landroid/content/pm/ResolveInfo;)I
-PLcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;->parseVersion(Landroid/content/pm/ResolveInfo;)I
-PLcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;->toString()Ljava/lang/String;
-PLcom/android/server/servicewatcher/CurrentUserServiceSupplier;->$r8$lambda$mcjFxv-ycpNDxZX_ks8oCqSOl1s(Lcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;Lcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;)I
-PLcom/android/server/servicewatcher/CurrentUserServiceSupplier;-><clinit>()V
-PLcom/android/server/servicewatcher/CurrentUserServiceSupplier;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
-PLcom/android/server/servicewatcher/CurrentUserServiceSupplier;->create(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/servicewatcher/CurrentUserServiceSupplier;
-PLcom/android/server/servicewatcher/CurrentUserServiceSupplier;->createFromConfig(Landroid/content/Context;Ljava/lang/String;II)Lcom/android/server/servicewatcher/CurrentUserServiceSupplier;
-HPLcom/android/server/servicewatcher/CurrentUserServiceSupplier;->getServiceInfo()Lcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;
-PLcom/android/server/servicewatcher/CurrentUserServiceSupplier;->getServiceInfo()Lcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;
-PLcom/android/server/servicewatcher/CurrentUserServiceSupplier;->hasMatchingService()Z
-PLcom/android/server/servicewatcher/CurrentUserServiceSupplier;->lambda$static$0(Lcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;Lcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;)I
-HPLcom/android/server/servicewatcher/CurrentUserServiceSupplier;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HPLcom/android/server/servicewatcher/CurrentUserServiceSupplier;->register(Lcom/android/server/servicewatcher/ServiceWatcher$ServiceChangedListener;)V
-PLcom/android/server/servicewatcher/CurrentUserServiceSupplier;->retrieveExplicitPackage(Landroid/content/Context;II)Ljava/lang/String;
-PLcom/android/server/servicewatcher/ServiceWatcher$BinderOperation;->onError(Ljava/lang/Throwable;)V
-PLcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;-><init>(Ljava/lang/String;ILandroid/content/ComponentName;)V
-PLcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;->getAction()Ljava/lang/String;
-PLcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;->getComponentName()Landroid/content/ComponentName;
-PLcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;->getUserId()I
-HPLcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;->toString()Ljava/lang/String;
-PLcom/android/server/servicewatcher/ServiceWatcher;->create(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;Lcom/android/server/servicewatcher/ServiceWatcher$ServiceSupplier;Lcom/android/server/servicewatcher/ServiceWatcher$ServiceListener;)Lcom/android/server/servicewatcher/ServiceWatcher;
-PLcom/android/server/servicewatcher/ServiceWatcher;->create(Landroid/content/Context;Ljava/lang/String;Lcom/android/server/servicewatcher/ServiceWatcher$ServiceSupplier;Lcom/android/server/servicewatcher/ServiceWatcher$ServiceListener;)Lcom/android/server/servicewatcher/ServiceWatcher;
-PLcom/android/server/servicewatcher/ServiceWatcherImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;Lcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;)V
-PLcom/android/server/servicewatcher/ServiceWatcherImpl$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/servicewatcher/ServiceWatcherImpl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;Lcom/android/server/servicewatcher/ServiceWatcher$BinderOperation;)V
-PLcom/android/server/servicewatcher/ServiceWatcherImpl$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/servicewatcher/ServiceWatcherImpl$1;-><init>(Lcom/android/server/servicewatcher/ServiceWatcherImpl;)V
-PLcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;-><init>(Lcom/android/server/servicewatcher/ServiceWatcherImpl;Lcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;)V
-HPLcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;->bind()V
-PLcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;->getBoundServiceInfo()Lcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;
-PLcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;->isConnected()Z
-HPLcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-PLcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V
-PLcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;->runOnBinder(Lcom/android/server/servicewatcher/ServiceWatcher$BinderOperation;)V
-HPLcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;->unbind()V
-PLcom/android/server/servicewatcher/ServiceWatcherImpl;->$r8$lambda$GCGDYqQZRK7jCQUNZnY8QjXgR2Y(Lcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;Lcom/android/server/servicewatcher/ServiceWatcher$BinderOperation;)V
-PLcom/android/server/servicewatcher/ServiceWatcherImpl;->$r8$lambda$zTLizm-3rVzoLRcwgUDZzwsvYD8(Lcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;Lcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;)V
-PLcom/android/server/servicewatcher/ServiceWatcherImpl;-><clinit>()V
-PLcom/android/server/servicewatcher/ServiceWatcherImpl;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;Lcom/android/server/servicewatcher/ServiceWatcher$ServiceSupplier;Lcom/android/server/servicewatcher/ServiceWatcher$ServiceListener;)V
-PLcom/android/server/servicewatcher/ServiceWatcherImpl;->checkServiceResolves()Z
-PLcom/android/server/servicewatcher/ServiceWatcherImpl;->lambda$onServiceChanged$1(Lcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;Lcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;)V
-PLcom/android/server/servicewatcher/ServiceWatcherImpl;->lambda$runOnBinder$0(Lcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;Lcom/android/server/servicewatcher/ServiceWatcher$BinderOperation;)V
-PLcom/android/server/servicewatcher/ServiceWatcherImpl;->onServiceChanged()V
-HPLcom/android/server/servicewatcher/ServiceWatcherImpl;->onServiceChanged(Z)V
-PLcom/android/server/servicewatcher/ServiceWatcherImpl;->register()V
-PLcom/android/server/servicewatcher/ServiceWatcherImpl;->runOnBinder(Lcom/android/server/servicewatcher/ServiceWatcher$BinderOperation;)V
-PLcom/android/server/signedconfig/SignedConfigService$UpdateReceiver;-><init>()V
-PLcom/android/server/signedconfig/SignedConfigService$UpdateReceiver;-><init>(Lcom/android/server/signedconfig/SignedConfigService$UpdateReceiver-IA;)V
+PLcom/android/server/signedconfig/SignedConfigService$UpdateReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/signedconfig/SignedConfigService;->registerUpdateReceiver(Landroid/content/Context;)V
-PLcom/android/server/soundtrigger/DeviceStateHandler$SoundTriggerDeviceState;->$values()[Lcom/android/server/soundtrigger/DeviceStateHandler$SoundTriggerDeviceState;
+PLcom/android/server/soundtrigger/DeviceStateHandler$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/soundtrigger/DeviceStateHandler$DeviceStateListener;Lcom/android/server/soundtrigger/DeviceStateHandler$SoundTriggerDeviceState;I)V
+PLcom/android/server/soundtrigger/DeviceStateHandler$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/soundtrigger/DeviceStateHandler$SoundTriggerDeviceState;-><clinit>()V
-PLcom/android/server/soundtrigger/DeviceStateHandler$SoundTriggerDeviceState;-><init>(Ljava/lang/String;I)V
PLcom/android/server/soundtrigger/DeviceStateHandler$SoundTriggerPowerEvent;-><init>(I)V
+PLcom/android/server/soundtrigger/DeviceStateHandler$SoundTriggerPowerEvent;->eventToString()Ljava/lang/String;
PLcom/android/server/soundtrigger/DeviceStateHandler;-><init>(Ljava/util/concurrent/Executor;Lcom/android/server/utils/EventLogger;)V
PLcom/android/server/soundtrigger/DeviceStateHandler;->onPowerModeChanged(I)V
+PLcom/android/server/soundtrigger/DeviceStateHandler;->registerListener(Lcom/android/server/soundtrigger/DeviceStateHandler$DeviceStateListener;)V
PLcom/android/server/soundtrigger/PhoneCallStateHandler$1;-><init>(Lcom/android/server/soundtrigger/PhoneCallStateHandler;)V
-PLcom/android/server/soundtrigger/PhoneCallStateHandler;-><init>(Landroid/telephony/SubscriptionManager;Landroid/telephony/TelephonyManager;Lcom/android/server/soundtrigger/PhoneCallStateHandler$Callback;)V
-PLcom/android/server/soundtrigger/SoundTriggerDbHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/soundtrigger/PhoneCallStateHandler;-><init>(Landroid/telephony/SubscriptionManager;Landroid/telephony/TelephonyManager;Lcom/android/server/soundtrigger/DeviceStateHandler;)V
+PLcom/android/server/soundtrigger/SoundTriggerDbHelper;->onCreate(Landroid/database/sqlite/SQLiteDatabase;)V
+PLcom/android/server/soundtrigger/SoundTriggerEvent$ServiceEvent$Type;-><clinit>()V
+PLcom/android/server/soundtrigger/SoundTriggerEvent$ServiceEvent;-><init>(Lcom/android/server/soundtrigger/SoundTriggerEvent$ServiceEvent$Type;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/soundtrigger/SoundTriggerEvent$ServiceEvent;-><init>(Lcom/android/server/soundtrigger/SoundTriggerEvent$SessionEvent$Type;Ljava/util/UUID;Ljava/lang/String;)V
+PLcom/android/server/soundtrigger/SoundTriggerEvent$ServiceEvent;->eventToString()Ljava/lang/String;
+PLcom/android/server/soundtrigger/SoundTriggerEvent$ServiceEvent;->printLog(ILjava/lang/String;)Lcom/android/server/utils/EventLogger$Event;
+PLcom/android/server/soundtrigger/SoundTriggerEvent$SessionEvent$Type;-><clinit>()V
+PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;-><init>(Ljava/util/UUID;I)V
+PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->clearState()V
+PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->getCallback()Landroid/hardware/soundtrigger/IRecognitionStatusCallback;
+PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->getHandle()I
+PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->getModelId()Ljava/util/UUID;
+PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->isKeyphraseModel()Z
+PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->isModelLoaded()Z
+PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->isModelStarted()Z
+PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->isRequested()Z
+PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->setRequested(Z)V
+PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->setStopped()V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;-><init>(Landroid/content/Context;Lcom/android/server/utils/EventLogger;Lcom/android/server/soundtrigger/SoundTriggerService$$ExternalSyntheticLambda1;ILcom/android/server/soundtrigger/SoundTriggerService$$ExternalSyntheticLambda2;)V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->detach()V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->forceStopAndUnloadModelLocked(Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;Ljava/lang/Exception;Ljava/util/Iterator;)V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->getKeyphraseModelDataLocked(I)Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->getModelDataForLocked(I)Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->getModuleProperties()Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->isRecognitionAllowed(Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;)Z
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->onDeviceStateChanged(Lcom/android/server/soundtrigger/DeviceStateHandler$SoundTriggerDeviceState;)V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->onKeyphraseRecognitionLocked(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;)V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->onRecognition(Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;)V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->onRecognitionAbortLocked(Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;)V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->onResourcesAvailable()V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->startRecognition(Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;Z)I
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->stopKeyphraseRecognition(ILandroid/hardware/soundtrigger/IRecognitionStatusCallback;)I
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->stopRecognition(Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;)I
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->stopRecognitionLocked(Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;Z)I
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->unloadKeyphraseSoundModel(I)I
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->updateAllRecognitionsLocked()V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->updateRecognitionLocked(Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;Z)I
+PLcom/android/server/soundtrigger/SoundTriggerService$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/soundtrigger/SoundTriggerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService;ILandroid/media/permission/Identity;Landroid/media/permission/Identity;Z)V
+PLcom/android/server/soundtrigger/SoundTriggerService$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/soundtrigger/SoundTriggerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService;Landroid/media/permission/Identity;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$$ExternalSyntheticLambda2;->get()Ljava/lang/Object;
PLcom/android/server/soundtrigger/SoundTriggerService$1;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService;Landroid/os/PowerManager;)V
-PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService;Landroid/content/Context;)V
-PLcom/android/server/soundtrigger/SoundTriggerService$SoundModelStatTracker;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService$SessionImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService$SessionImpl;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService$SessionImpl$$ExternalSyntheticLambda0;->binderDied()V
+PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService$SessionImpl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService$SessionImpl;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService$SessionImpl$$ExternalSyntheticLambda1;->onSoundTriggerDeviceStateUpdate(Lcom/android/server/soundtrigger/DeviceStateHandler$SoundTriggerDeviceState;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService$SessionImpl$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/soundtrigger/SoundTriggerHelper;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService$SessionImpl$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService$SessionImpl;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService;Lcom/android/server/soundtrigger/SoundTriggerHelper;Landroid/os/IBinder;Lcom/android/server/utils/EventLogger;Landroid/media/permission/Identity;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService$SessionImpl;->clientDied()V
+PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService$SessionImpl;->detachInternal()V
+PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService$SessionImpl;->startRecognition(ILandroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;Lcom/android/server/voiceinteraction/HotwordDetectionConnection$SoundTriggerCallback;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;Z)I
+PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService;->attach(Landroid/os/IBinder;Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;Z)Lcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService$SessionImpl;
+PLcom/android/server/soundtrigger/SoundTriggerService$MyAppOpsListener;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService;Landroid/media/permission/Identity;Ljava/util/function/Consumer;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$MyAppOpsListener;->onOpChanged(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$SoundModelStatTracker;-><init>()V
PLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;->attachAsOriginator(Landroid/media/permission/Identity;Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;Landroid/os/IBinder;)Lcom/android/internal/app/ISoundTriggerSession;
+PLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;->listModuleProperties(Landroid/media/permission/Identity;)Ljava/util/List;
+PLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerSessionStub$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerSessionStub;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerSessionStub$$ExternalSyntheticLambda0;->binderDied()V
+PLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerSessionStub$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerSessionStub;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerSessionStub$$ExternalSyntheticLambda1;->onSoundTriggerDeviceStateUpdate(Lcom/android/server/soundtrigger/DeviceStateHandler$SoundTriggerDeviceState;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerSessionStub;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService;Landroid/os/IBinder;Lcom/android/server/soundtrigger/SoundTriggerHelper;Lcom/android/server/utils/EventLogger;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerSessionStub;->clientDied()V
+PLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerSessionStub;->enforceCallingPermission(Ljava/lang/String;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerSessionStub;->getModuleProperties()Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;
PLcom/android/server/soundtrigger/SoundTriggerService;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/soundtrigger/SoundTriggerService;->onBootPhase(I)V
+PLcom/android/server/soundtrigger/SoundTriggerService;->listUnderlyingModuleProperties(Landroid/media/permission/Identity;)Ljava/util/List;
+PLcom/android/server/soundtrigger/SoundTriggerService;->newSoundTriggerHelper(Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;Lcom/android/server/utils/EventLogger;Z)Lcom/android/server/soundtrigger/SoundTriggerHelper;
+PLcom/android/server/soundtrigger/SoundTriggerService;->onBootPhase(I)V
PLcom/android/server/soundtrigger/SoundTriggerService;->onStart()V
-PLcom/android/server/soundtrigger_middleware/AudioSessionProviderImpl;-><init>()V
+PLcom/android/server/soundtrigger_middleware/ConversionUtil;->aidl2hidlRecognitionModes(I)I
+PLcom/android/server/soundtrigger_middleware/ConversionUtil;->aidl2hidlSoundModel(Landroid/media/soundtrigger/SoundModel;)Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$SoundModel;
+PLcom/android/server/soundtrigger_middleware/ConversionUtil;->aidl2hidlUuid(Ljava/lang/String;)Landroid/hardware/audio/common/V2_0/Uuid;
+PLcom/android/server/soundtrigger_middleware/ConversionUtil;->hidl2aidlProperties(Landroid/hardware/soundtrigger/V2_3/Properties;)Landroid/media/soundtrigger/Properties;
+PLcom/android/server/soundtrigger_middleware/ConversionUtil;->hidl2aidlRecognitionEvent(Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$RecognitionEvent;)Landroid/media/soundtrigger/RecognitionEvent;
+PLcom/android/server/soundtrigger_middleware/ConversionUtil;->hidl2aidlRecognitionModes(I)I
+PLcom/android/server/soundtrigger_middleware/DefaultHalFactory$$ExternalSyntheticLambda0;-><init>(I)V
PLcom/android/server/soundtrigger_middleware/DefaultHalFactory;-><clinit>()V
-PLcom/android/server/soundtrigger_middleware/DefaultHalFactory;-><init>()V
PLcom/android/server/soundtrigger_middleware/DefaultHalFactory;->create()Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal;
PLcom/android/server/soundtrigger_middleware/ExternalCaptureStateTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/soundtrigger_middleware/ExternalCaptureStateTracker;)V
PLcom/android/server/soundtrigger_middleware/ExternalCaptureStateTracker$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/soundtrigger_middleware/ExternalCaptureStateTracker;->$r8$lambda$hBoIWCt1wAYBh9Th4QLOGaxIoV0(Lcom/android/server/soundtrigger_middleware/ExternalCaptureStateTracker;)V
PLcom/android/server/soundtrigger_middleware/ExternalCaptureStateTracker;-><init>()V
+PLcom/android/server/soundtrigger_middleware/ExternalCaptureStateTracker;->registerListener(Lcom/android/server/soundtrigger_middleware/ICaptureStateNotifier$Listener;)Z
PLcom/android/server/soundtrigger_middleware/ExternalCaptureStateTracker;->run()V
PLcom/android/server/soundtrigger_middleware/ExternalCaptureStateTracker;->setCaptureState(Z)V
PLcom/android/server/soundtrigger_middleware/FakeHalFactory$$ExternalSyntheticLambda0;-><init>(Landroid/media/soundtrigger_middleware/IInjectGlobalEvent;)V
-PLcom/android/server/soundtrigger_middleware/FakeHalFactory$1;-><init>(Lcom/android/server/soundtrigger_middleware/FakeHalFactory;Landroid/os/IBinder;Ljava/lang/Runnable;Landroid/media/soundtrigger_middleware/IInjectGlobalEvent;)V
-PLcom/android/server/soundtrigger_middleware/FakeHalFactory;-><init>(Landroid/media/soundtrigger_middleware/ISoundTriggerInjection;)V
+PLcom/android/server/soundtrigger_middleware/FakeHalFactory$1;-><init>(Lcom/android/server/soundtrigger_middleware/FakeHalFactory;Lcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;Lcom/android/server/soundtrigger_middleware/FakeHalFactory$$ExternalSyntheticLambda0;Landroid/media/soundtrigger_middleware/IInjectGlobalEvent;)V
+PLcom/android/server/soundtrigger_middleware/FakeHalFactory;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerInjection;)V
PLcom/android/server/soundtrigger_middleware/FakeHalFactory;->create()Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal;
PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;)V
PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$$ExternalSyntheticLambda0;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$1$$ExternalSyntheticLambda3;-><init>(ILjava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$1$$ExternalSyntheticLambda3;->run()V
PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$1;-><init>(Lcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$CallbackDispatcher;->-$$Nest$mwrap$2(Lcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$CallbackDispatcher;Lcom/android/internal/util/FunctionalUtils$ThrowingConsumer;)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$CallbackDispatcher;-><init>(Landroid/hardware/soundtrigger3/ISoundTriggerHwGlobalCallback;)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$CallbackDispatcher;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerInjection;)V
PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$ExecutorHolder;-><clinit>()V
-PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$GlobalCallbackDispatcher;-><init>(Landroid/hardware/soundtrigger3/ISoundTriggerHwGlobalCallback;)V
-PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$GlobalCallbackDispatcher;-><init>(Landroid/hardware/soundtrigger3/ISoundTriggerHwGlobalCallback;Lcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$GlobalCallbackDispatcher-IA;)V
-PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher;Lcom/android/internal/util/FunctionalUtils$ThrowingConsumer;)V
-PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher;->$r8$lambda$pnpqzoQdTdzjstzdqhpQnNpOVVU(Lcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher;Lcom/android/internal/util/FunctionalUtils$ThrowingConsumer;)V
-PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher;->-$$Nest$mwrap(Lcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher;Lcom/android/internal/util/FunctionalUtils$ThrowingConsumer;)V
-PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher;-><init>(Landroid/media/soundtrigger_middleware/ISoundTriggerInjection;)V
-PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher;-><init>(Landroid/media/soundtrigger_middleware/ISoundTriggerInjection;Lcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher-IA;)V
-PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher;->lambda$wrap$0(Lcom/android/internal/util/FunctionalUtils$ThrowingConsumer;)V
-PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher;->wrap(Lcom/android/internal/util/FunctionalUtils$ThrowingConsumer;)V
-PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;->$r8$lambda$_r7zgC45YMbhkVPbRFw41fe6CNU(Lcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;Landroid/media/soundtrigger_middleware/ISoundTriggerInjection;)V
-PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;-><init>(Landroid/media/soundtrigger_middleware/ISoundTriggerInjection;)V
-PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;->createDefaultProperties()Landroid/media/soundtrigger/Properties;
-PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;->getGlobalEventInjection()Landroid/media/soundtrigger_middleware/IInjectGlobalEvent;
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerInjection;)V
PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;->getProperties()Landroid/media/soundtrigger/Properties;
-PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;->lambda$new$0(Landroid/media/soundtrigger_middleware/ISoundTriggerInjection;)V
PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;->linkToDeath(Landroid/os/IBinder$DeathRecipient;I)V
PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;->registerGlobalCallback(Landroid/hardware/soundtrigger3/ISoundTriggerHwGlobalCallback;)V
+PLcom/android/server/soundtrigger_middleware/ObjectPrinter;->print$1(Ljava/lang/StringBuilder;Ljava/lang/Object;)V
+PLcom/android/server/soundtrigger_middleware/ObjectPrinter;->print(Ljava/lang/Object;)Ljava/lang/String;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerDuplicateModelHandler$$ExternalSyntheticLambda0;-><init>(Ljava/lang/String;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerDuplicateModelHandler$ModelData;-><init>(ILjava/lang/String;)V
PLcom/android/server/soundtrigger_middleware/SoundTriggerDuplicateModelHandler;-><init>(Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal;)V
-PLcom/android/server/soundtrigger_middleware/SoundTriggerDuplicateModelHandler;->getProperties()Landroid/media/soundtrigger/Properties;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerDuplicateModelHandler;->checkDuplicateModelUuid(Ljava/lang/String;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerDuplicateModelHandler;->clientAttached(Landroid/os/IBinder;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerDuplicateModelHandler;->clientDetached(Landroid/os/IBinder;)V
PLcom/android/server/soundtrigger_middleware/SoundTriggerDuplicateModelHandler;->linkToDeath(Landroid/os/IBinder$DeathRecipient;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerDuplicateModelHandler;->loadPhraseSoundModel(Landroid/media/soundtrigger/PhraseSoundModel;Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$ModelCallback;)I
PLcom/android/server/soundtrigger_middleware/SoundTriggerDuplicateModelHandler;->registerCallback(Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$GlobalCallback;)V
-PLcom/android/server/soundtrigger_middleware/SoundTriggerHalEnforcer;-><init>(Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerDuplicateModelHandler;->startRecognition(IIILandroid/media/soundtrigger/RecognitionConfig;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerDuplicateModelHandler;->stopRecognition(I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerDuplicateModelHandler;->unloadSoundModel(I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler;Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$GlobalCallback;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler$$ExternalSyntheticLambda0;->onResourcesAvailable()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler$$ExternalSyntheticLambda1;-><init>(ILcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler$LoadedModel;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler;Landroid/os/IBinder$DeathRecipient;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler$$ExternalSyntheticLambda3;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler$CallbackThread;-><init>()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler$CallbackThread;->pop()Ljava/lang/Runnable;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler$CallbackThread;->push(Ljava/lang/Runnable;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler$CallbackThread;->run()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler$CallbackWrapper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler$CallbackWrapper;ILandroid/media/soundtrigger_middleware/PhraseRecognitionEventSys;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler$CallbackWrapper$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler$CallbackWrapper;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler;Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$ModelCallback;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler$CallbackWrapper;->phraseRecognitionCallback(ILandroid/media/soundtrigger_middleware/PhraseRecognitionEventSys;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler$LoadedModel;-><init>(ILcom/android/server/soundtrigger_middleware/ISoundTriggerHal$ModelCallback;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerHalMaxModelLimiter;Lcom/android/server/soundtrigger_middleware/ICaptureStateNotifier;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler;->abortAllActiveModels()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler;->clientAttached(Landroid/os/IBinder;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler;->clientDetached(Landroid/os/IBinder;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler;->getProperties()Landroid/media/soundtrigger/Properties;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler;->linkToDeath(Landroid/os/IBinder$DeathRecipient;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler;->loadPhraseSoundModel(Landroid/media/soundtrigger/PhraseSoundModel;Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$ModelCallback;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler;->registerCallback(Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$GlobalCallback;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler;->startRecognition(IIILandroid/media/soundtrigger/RecognitionConfig;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler;->stopRecognition(I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalConcurrentCaptureHandler;->unloadSoundModel(I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalEnforcer$ModelCallbackEnforcer;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerHalEnforcer;Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$ModelCallback;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalEnforcer$ModelCallbackEnforcer;->phraseRecognitionCallback(ILandroid/media/soundtrigger_middleware/PhraseRecognitionEventSys;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalEnforcer$ModelState;-><clinit>()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalEnforcer;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalEnforcer;->clientAttached(Landroid/os/IBinder;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalEnforcer;->clientDetached(Landroid/os/IBinder;)V
PLcom/android/server/soundtrigger_middleware/SoundTriggerHalEnforcer;->getProperties()Landroid/media/soundtrigger/Properties;
PLcom/android/server/soundtrigger_middleware/SoundTriggerHalEnforcer;->linkToDeath(Landroid/os/IBinder$DeathRecipient;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalEnforcer;->loadPhraseSoundModel(Landroid/media/soundtrigger/PhraseSoundModel;Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$ModelCallback;)I
PLcom/android/server/soundtrigger_middleware/SoundTriggerHalEnforcer;->registerCallback(Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$GlobalCallback;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalEnforcer;->startRecognition(IIILandroid/media/soundtrigger/RecognitionConfig;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalEnforcer;->stopRecognition(I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalEnforcer;->unloadSoundModel(I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalMaxModelLimiter;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalMaxModelLimiter;->linkToDeath(Landroid/os/IBinder$DeathRecipient;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalMaxModelLimiter;->loadPhraseSoundModel(Landroid/media/soundtrigger/PhraseSoundModel;Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$ModelCallback;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalMaxModelLimiter;->startRecognition(IIILandroid/media/soundtrigger/RecognitionConfig;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalMaxModelLimiter;->stopRecognition(I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalMaxModelLimiter;->unloadSoundModel(I)V
PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog$Watchdog$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog$Watchdog;)V
PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog$Watchdog;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;)V
PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog$Watchdog;->close()V
-PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;->-$$Nest$fgetmTimer(Lcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;)Lcom/android/server/soundtrigger_middleware/UptimeTimer;
-PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;-><init>(Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerDuplicateModelHandler;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;->clientAttached(Landroid/os/IBinder;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;->clientDetached(Landroid/os/IBinder;)V
PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;->getProperties()Landroid/media/soundtrigger/Properties;
PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;->linkToDeath(Landroid/os/IBinder$DeathRecipient;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;->loadPhraseSoundModel(Landroid/media/soundtrigger/PhraseSoundModel;Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$ModelCallback;)I
PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;->registerCallback(Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$GlobalCallback;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;->startRecognition(IIILandroid/media/soundtrigger/RecognitionConfig;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;->stopRecognition(I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;->unloadSoundModel(I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat$$ExternalSyntheticLambda0;-><init>(Landroid/os/IBinder$DeathRecipient;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat$$ExternalSyntheticLambda1;-><init>(Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicReference;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat$$ExternalSyntheticLambda3;-><init>(Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat$ModelCallbackWrapper;-><init>(Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$ModelCallback;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat$ModelCallbackWrapper;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat$ModelCallbackWrapper;->phraseRecognitionCallback_2_1(Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$RecognitionEvent;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;-><init>(Landroid/os/IHwBinder;Ljava/lang/Runnable;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->as2_3()Landroid/hardware/soundtrigger/V2_3/ISoundTriggerHw$Proxy;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->create(Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;Ljava/lang/Runnable;Lcom/android/server/soundtrigger_middleware/ICaptureStateNotifier;)Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->handleHalStatus(ILjava/lang/String;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->linkToDeath(Landroid/os/IBinder$DeathRecipient;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->loadPhraseSoundModel(Landroid/media/soundtrigger/PhraseSoundModel;Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$ModelCallback;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->startRecognition(IIILandroid/media/soundtrigger/RecognitionConfig;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->stopRecognition(I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->unloadSoundModel(I)V
PLcom/android/server/soundtrigger_middleware/SoundTriggerHw3Compat$GlobalCallbackAdaper;-><init>(Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$GlobalCallback;)V
PLcom/android/server/soundtrigger_middleware/SoundTriggerHw3Compat;-><init>(Landroid/os/IBinder;Ljava/lang/Runnable;)V
PLcom/android/server/soundtrigger_middleware/SoundTriggerHw3Compat;->getProperties()Landroid/media/soundtrigger/Properties;
@@ -22849,1528 +18172,1294 @@ PLcom/android/server/soundtrigger_middleware/SoundTriggerHw3Compat;->linkToDeath
PLcom/android/server/soundtrigger_middleware/SoundTriggerHw3Compat;->registerCallback(Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$GlobalCallback;)V
PLcom/android/server/soundtrigger_middleware/SoundTriggerInjection;-><init>()V
PLcom/android/server/soundtrigger_middleware/SoundTriggerInjection;->registerGlobalEventInjection(Landroid/media/soundtrigger_middleware/IInjectGlobalEvent;)V
-PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl$AudioSessionProvider;-><init>()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl$AudioSessionProvider$AudioSession;-><init>(III)V
PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl;-><init>([Lcom/android/server/soundtrigger_middleware/HalFactory;Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl$AudioSessionProvider;)V
-PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging;-><init>(Landroid/content/Context;Lcom/android/server/soundtrigger_middleware/ISoundTriggerMiddlewareInternal;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl;->attach(ILandroid/media/soundtrigger_middleware/ISoundTriggerCallback;Z)Landroid/media/soundtrigger_middleware/ISoundTriggerModule;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl;->listModules()[Landroid/media/soundtrigger_middleware/SoundTriggerModuleDescriptor;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$$ExternalSyntheticLambda2;->apply(I)Ljava/lang/Object;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$BatteryStatsHolder;-><clinit>()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$CallbackLogging;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging;Landroid/media/soundtrigger_middleware/ISoundTriggerCallback;Lcom/android/server/utils/EventLogger;Landroid/media/permission/Identity;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$CallbackLogging;->asBinder()Landroid/os/IBinder;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$CallbackLogging;->onPhraseRecognition(ILandroid/media/soundtrigger_middleware/PhraseRecognitionEventSys;I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$CallbackLogging;->onResourcesAvailable()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$ModuleLogging;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$ModuleLogging;->detach()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$ModuleLogging;->loadPhraseModel(Landroid/media/soundtrigger/PhraseSoundModel;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$ModuleLogging;->startRecognition(ILandroid/media/soundtrigger/RecognitionConfig;)Landroid/os/IBinder;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$ModuleLogging;->stopRecognition(I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$ModuleLogging;->toString()Ljava/lang/String;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$ModuleLogging;->unloadModel(I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$ModulePropertySummary;->toString()Ljava/lang/String;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$ServiceEvent$Type;-><clinit>()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$ServiceEvent;-><init>(Ljava/lang/Exception;Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$ServiceEvent$Type;Ljava/lang/String;Ljava/lang/Object;[Ljava/lang/Object;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$ServiceEvent;->eventToString()Ljava/lang/String;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$ServiceEvent;->printLog(ILjava/lang/String;)Lcom/android/server/utils/EventLogger$Event;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$SessionEvent$Type;-><clinit>()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$SessionEvent;-><init>(Ljava/lang/Exception;Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$SessionEvent$Type;Ljava/lang/Object;[Ljava/lang/Object;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$SessionEvent;->createForReturn(Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$SessionEvent$Type;Ljava/lang/Object;[Ljava/lang/Object;)Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$SessionEvent;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$SessionEvent;->createForVoid(Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$SessionEvent$Type;[Ljava/lang/Object;)Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$SessionEvent;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$SessionEvent;->eventToString()Ljava/lang/String;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$SessionEvent;->printLog(ILjava/lang/String;)Lcom/android/server/utils/EventLogger$Event;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging;->-$$Nest$mstartKeyphraseEventLatencyTracking(Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging;Landroid/media/soundtrigger/PhraseRecognitionEvent;)V
PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging;-><init>(Lcom/android/internal/util/LatencyTracker;Ljava/util/function/Supplier;Lcom/android/server/soundtrigger_middleware/ISoundTriggerMiddlewareInternal;)V
-PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission;-><init>(Lcom/android/server/soundtrigger_middleware/ISoundTriggerMiddlewareInternal;Landroid/content/Context;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging;->attach(ILandroid/media/soundtrigger_middleware/ISoundTriggerCallback;Z)Landroid/media/soundtrigger_middleware/ISoundTriggerModule;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging;->listModules()[Landroid/media/soundtrigger_middleware/SoundTriggerModuleDescriptor;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission$ModuleWrapper$CallbackWrapper;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission$ModuleWrapper;Landroid/media/soundtrigger_middleware/ISoundTriggerCallback;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission$ModuleWrapper$CallbackWrapper;->asBinder()Landroid/os/IBinder;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission$ModuleWrapper$CallbackWrapper;->enforcePermissions(Ljava/lang/String;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission$ModuleWrapper$CallbackWrapper;->onPhraseRecognition(ILandroid/media/soundtrigger_middleware/PhraseRecognitionEventSys;I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission$ModuleWrapper$CallbackWrapper;->onResourcesAvailable()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission$ModuleWrapper;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission;Landroid/media/permission/Identity;Landroid/media/soundtrigger_middleware/ISoundTriggerCallback;Z)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission$ModuleWrapper;->detach()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission$ModuleWrapper;->enforcePermissions()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission$ModuleWrapper;->loadPhraseModel(Landroid/media/soundtrigger/PhraseSoundModel;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission$ModuleWrapper;->startRecognition(ILandroid/media/soundtrigger/RecognitionConfig;)Landroid/os/IBinder;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission$ModuleWrapper;->stopRecognition(I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission$ModuleWrapper;->toString()Ljava/lang/String;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission$ModuleWrapper;->unloadModel(I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation;Landroid/content/Context;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission;->attach(ILandroid/media/soundtrigger_middleware/ISoundTriggerCallback;Z)Landroid/media/soundtrigger_middleware/ISoundTriggerModule;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission;->enforcePermissionForPreflight(Landroid/content/Context;Landroid/media/permission/Identity;Ljava/lang/String;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission;->enforcePermissionsForPreflight(Landroid/media/permission/Identity;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission;->listModules()[Landroid/media/soundtrigger_middleware/SoundTriggerModuleDescriptor;
PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$Lifecycle;->onStart()V
-PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;-><init>(Lcom/android/server/soundtrigger_middleware/ISoundTriggerMiddlewareInternal;Landroid/content/Context;Lcom/android/server/soundtrigger_middleware/SoundTriggerInjection;)V
-PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;-><init>(Lcom/android/server/soundtrigger_middleware/ISoundTriggerMiddlewareInternal;Landroid/content/Context;Lcom/android/server/soundtrigger_middleware/SoundTriggerInjection;Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService-IA;)V
-PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation;-><init>(Lcom/android/server/soundtrigger_middleware/ISoundTriggerMiddlewareInternal;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModuleService;-><init>(Landroid/media/soundtrigger_middleware/ISoundTriggerModule;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModuleService;->detach()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModuleService;->loadPhraseModel(Landroid/media/soundtrigger/PhraseSoundModel;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModuleService;->startRecognition(ILandroid/media/soundtrigger/RecognitionConfig;)Landroid/os/IBinder;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModuleService;->stopRecognition(I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModuleService;->unloadModel(I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging;Landroid/content/Context;Lcom/android/server/soundtrigger_middleware/SoundTriggerInjection;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;->attachAsMiddleman(ILandroid/media/permission/Identity;Landroid/media/permission/Identity;Landroid/media/soundtrigger_middleware/ISoundTriggerCallback;Z)Landroid/media/soundtrigger_middleware/ISoundTriggerModule;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;->listModulesAsMiddleman(Landroid/media/permission/Identity;Landroid/media/permission/Identity;)[Landroid/media/soundtrigger_middleware/SoundTriggerModuleDescriptor;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation$ModelState$Activity;-><clinit>()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation$ModelState;-><init>(Landroid/media/soundtrigger/PhraseSoundModel;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation$ModuleStatus;-><clinit>()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation$Session$CallbackWrapper;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation$Session;Landroid/media/soundtrigger_middleware/ISoundTriggerCallback;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation$Session$CallbackWrapper;->onPhraseRecognition(ILandroid/media/soundtrigger_middleware/PhraseRecognitionEventSys;I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation$Session$CallbackWrapper;->onResourcesAvailable()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation$Session;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation;ILandroid/media/soundtrigger_middleware/ISoundTriggerCallback;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation$Session;->attach(Landroid/media/soundtrigger_middleware/ISoundTriggerModule;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation$Session;->detach()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation$Session;->detachInternal()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation$Session;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation$Session;->loadPhraseModel(Landroid/media/soundtrigger/PhraseSoundModel;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation$Session;->startRecognition(ILandroid/media/soundtrigger/RecognitionConfig;)Landroid/os/IBinder;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation$Session;->stopRecognition(I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation$Session;->toString()Ljava/lang/String;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation$Session;->unloadModel(I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation;->attach(ILandroid/media/soundtrigger_middleware/ISoundTriggerCallback;Z)Landroid/media/soundtrigger_middleware/ISoundTriggerModule;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation;->listModules()[Landroid/media/soundtrigger_middleware/SoundTriggerModuleDescriptor;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$ModelState;-><clinit>()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->-$$Nest$mload(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;Landroid/media/soundtrigger/PhraseSoundModel;Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl$AudioSessionProvider$AudioSession;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->-$$Nest$mstartRecognition(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;Landroid/media/soundtrigger/RecognitionConfig;)Landroid/os/IBinder;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->phraseRecognitionCallback(ILandroid/media/soundtrigger_middleware/PhraseRecognitionEventSys;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->setState(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$ModelState;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule;Landroid/media/soundtrigger_middleware/ISoundTriggerCallback;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;->checkValid()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;->detach()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;->loadPhraseModel(Landroid/media/soundtrigger/PhraseSoundModel;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;->startRecognition(ILandroid/media/soundtrigger/RecognitionConfig;)Landroid/os/IBinder;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;->stopRecognition(I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;->unloadModel(I)V
PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;-><init>(Lcom/android/server/soundtrigger_middleware/HalFactory;Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl$AudioSessionProvider;)V
PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->attachToHal()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->onResourcesAvailable()V
PLcom/android/server/soundtrigger_middleware/UptimeTimer$TaskImpl;-><init>(Landroid/os/Handler;Ljava/lang/Object;)V
-PLcom/android/server/soundtrigger_middleware/UptimeTimer$TaskImpl;->cancel()V
-PLcom/android/server/soundtrigger_middleware/UptimeTimer;-><init>(Ljava/lang/String;)V
-PLcom/android/server/soundtrigger_middleware/UptimeTimer;->createTask(Ljava/lang/Runnable;J)Lcom/android/server/soundtrigger_middleware/UptimeTimer$Task;
+PLcom/android/server/soundtrigger_middleware/UptimeTimer;-><init>()V
+PLcom/android/server/soundtrigger_middleware/UuidUtil;-><clinit>()V
+PLcom/android/server/soundtrigger_middleware/ValidationUtil;->validateModel(Landroid/media/soundtrigger/SoundModel;I)V
PLcom/android/server/speech/SpeechRecognitionManagerService$SpeechRecognitionManagerServiceStub;-><init>(Lcom/android/server/speech/SpeechRecognitionManagerService;)V
-PLcom/android/server/speech/SpeechRecognitionManagerService;-><clinit>()V
PLcom/android/server/speech/SpeechRecognitionManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/speech/SpeechRecognitionManagerService;->newServiceLocked(IZ)Lcom/android/server/infra/AbstractPerUserSystemService;
-PLcom/android/server/speech/SpeechRecognitionManagerService;->newServiceLocked(IZ)Lcom/android/server/speech/SpeechRecognitionManagerServiceImpl;
PLcom/android/server/speech/SpeechRecognitionManagerService;->onStart()V
-PLcom/android/server/speech/SpeechRecognitionManagerServiceImpl;-><clinit>()V
PLcom/android/server/speech/SpeechRecognitionManagerServiceImpl;-><init>(Lcom/android/server/speech/SpeechRecognitionManagerService;Ljava/lang/Object;I)V
-PLcom/android/server/speech/SpeechRecognitionManagerServiceImpl;->updateLocked(Z)Z
-PLcom/android/server/stats/FeatureFlagsImpl;-><init>()V
-PLcom/android/server/stats/FeatureFlagsImpl;->addMobileBytesTransferByProcStatePuller()Z
-PLcom/android/server/stats/Flags;-><clinit>()V
-PLcom/android/server/stats/Flags;->addMobileBytesTransferByProcStatePuller()Z
PLcom/android/server/stats/bootstrap/StatsBootstrapAtomService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/stats/bootstrap/StatsBootstrapAtomService$Lifecycle;->onStart()V
-PLcom/android/server/stats/bootstrap/StatsBootstrapAtomService;-><init>()V
-PLcom/android/server/stats/pull/ProcfsMemoryUtil$MemorySnapshot;-><init>()V
-PLcom/android/server/stats/pull/ProcfsMemoryUtil;-><clinit>()V
-PLcom/android/server/stats/pull/ProcfsMemoryUtil;->readMemorySnapshotFromProcfs(I)Lcom/android/server/stats/pull/ProcfsMemoryUtil$MemorySnapshot;
-PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HPLcom/android/server/stats/bootstrap/StatsBootstrapAtomService;->reportBootstrapAtom(Landroid/os/StatsBootstrapAtom;)V
+PLcom/android/server/stats/pull/AggregatedMobileDataStatsPuller$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/stats/pull/AggregatedMobileDataStatsPuller;)V
+PLcom/android/server/stats/pull/AggregatedMobileDataStatsPuller$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/stats/pull/AggregatedMobileDataStatsPuller$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/stats/pull/AggregatedMobileDataStatsPuller;II)V
+HPLcom/android/server/stats/pull/AggregatedMobileDataStatsPuller$$ExternalSyntheticLambda1;->run()V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;
+PLcom/android/server/stats/pull/AggregatedMobileDataStatsPuller;-><init>(Landroid/app/usage/NetworkStatsManager;)V
+HPLcom/android/server/stats/pull/AggregatedMobileDataStatsPuller;->isEmpty(Landroid/net/NetworkStats;)Z
+HPLcom/android/server/stats/pull/AggregatedMobileDataStatsPuller;->updateNetworkStats(Landroid/app/usage/NetworkStatsManager;)V+]Landroid/app/usage/NetworkStatsManager;Landroid/app/usage/NetworkStatsManager;]Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry;
+PLcom/android/server/stats/pull/SettingsStatsUtil$FlagsData;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/stats/pull/SettingsStatsUtil;-><clinit>()V
+PLcom/android/server/stats/pull/SettingsStatsUtil;->createStatsEvent(IIILjava/lang/String;Ljava/lang/String;)Landroid/util/StatsEvent;
+PLcom/android/server/stats/pull/SettingsStatsUtil;->getList(Ljava/lang/String;)Lcom/android/service/nano/StringListParamProto;
+PLcom/android/server/stats/pull/SettingsStatsUtil;->logGlobalSettings(Landroid/content/Context;II)Ljava/util/List;
+PLcom/android/server/stats/pull/SettingsStatsUtil;->logSecureSettings(Landroid/content/Context;II)Ljava/util/List;
+PLcom/android/server/stats/pull/SettingsStatsUtil;->logSystemSettings(Landroid/content/Context;II)Ljava/util/List;
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;I)V
PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
-PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda2;-><init>()V
-PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda3;-><init>()V
-PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda5;-><init>()V
-PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
-PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
-PLcom/android/server/stats/pull/StatsPullAtomService$ConnectivityStatsCallback;-><init>()V
-PLcom/android/server/stats/pull/StatsPullAtomService$ConnectivityStatsCallback;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService$ConnectivityStatsCallback-IA;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda13;-><init>(Landroid/os/SynchronousResultReceiver;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda13;->onWifiActivityEnergyInfo(Landroid/os/connectivity/WifiActivityEnergyInfo;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda14;-><init>(IILjava/util/List;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda14;->onUidCpuTime(ILjava/lang/Object;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda16;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda16;->test(Ljava/lang/Object;)Z
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda17;-><init>(Landroid/util/SparseArray;I[I[J[D)V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda17;->onUidCpuTime(ILjava/lang/Object;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda18;-><init>(ILjava/util/List;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda18;->onUidStorageStats(IJJJJJJJJJJ)V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda19;-><init>(ILandroid/util/SparseArray;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda19;->accept(Ljava/lang/Object;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda2;-><init>(I)V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda4;-><init>(Landroid/net/NetworkTemplate;Z)V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda4;->test(Ljava/lang/Object;)Z
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;I)V
+PLcom/android/server/stats/pull/StatsPullAtomService$1;-><init>(Landroid/os/SynchronousResultReceiver;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$1;->onBluetoothActivityEnergyInfoAvailable(Landroid/bluetooth/BluetoothActivityEnergyInfo;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$2;->execute(Ljava/lang/Runnable;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$3;-><init>(Ljava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$3;->onResult(Ljava/lang/Object;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$ConnectivityStatsCallback;->onAvailable(Landroid/net/Network;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$ConnectivityStatsCallback;->onLost(Landroid/net/Network;)V
PLcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
-PLcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;Lcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomCallbackImpl-IA;)V
+HPLcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomCallbackImpl;->onPullAtom(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomServiceInternalImpl;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
PLcom/android/server/stats/pull/StatsPullAtomService$StatsSubscriptionsListener;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;Landroid/telephony/SubscriptionManager;)V
-PLcom/android/server/stats/pull/StatsPullAtomService$ThermalEventListener;-><init>()V
-PLcom/android/server/stats/pull/StatsPullAtomService$ThermalEventListener;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService$ThermalEventListener-IA;)V
PLcom/android/server/stats/pull/StatsPullAtomService$ThermalEventListener;->notifyThrottling(Landroid/os/Temperature;)V
-PLcom/android/server/stats/pull/StatsPullAtomService;->$r8$lambda$nNR4Gctk6hlu9qnTsuOvrymZzfk(Lcom/android/server/stats/pull/StatsPullAtomService;)V
PLcom/android/server/stats/pull/StatsPullAtomService;->$r8$lambda$qb74jErDmbpYjoDRKkDDIHHyoHk(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$fgetmBinderCallsStatsLock(Lcom/android/server/stats/pull/StatsPullAtomService;)Ljava/lang/Object;
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$fgetmBluetoothActivityInfoLock(Lcom/android/server/stats/pull/StatsPullAtomService;)Ljava/lang/Object;
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$fgetmBluetoothBytesTransferLock(Lcom/android/server/stats/pull/StatsPullAtomService;)Ljava/lang/Object;
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$fgetmCategorySizeLock(Lcom/android/server/stats/pull/StatsPullAtomService;)Ljava/lang/Object;
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$fgetmCpuTimePerClusterFreqLock(Lcom/android/server/stats/pull/StatsPullAtomService;)Ljava/lang/Object;
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$fgetmCpuTimePerUidLock(Lcom/android/server/stats/pull/StatsPullAtomService;)Ljava/lang/Object;
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$fgetmDataBytesTransferLock(Lcom/android/server/stats/pull/StatsPullAtomService;)Ljava/lang/Object;
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$fgetmDirectoryUsageLock(Lcom/android/server/stats/pull/StatsPullAtomService;)Ljava/lang/Object;
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$fgetmDiskIoLock(Lcom/android/server/stats/pull/StatsPullAtomService;)Ljava/lang/Object;
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$fgetmDiskStatsLock(Lcom/android/server/stats/pull/StatsPullAtomService;)Ljava/lang/Object;
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$fgetmHealthHalLock(Lcom/android/server/stats/pull/StatsPullAtomService;)Ljava/lang/Object;
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$fgetmKernelWakelockLock(Lcom/android/server/stats/pull/StatsPullAtomService;)Ljava/lang/Object;
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$fgetmLooperStatsLock(Lcom/android/server/stats/pull/StatsPullAtomService;)Ljava/lang/Object;
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$fgetmModemActivityInfoLock(Lcom/android/server/stats/pull/StatsPullAtomService;)Ljava/lang/Object;
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$fgetmProcessCpuTimeLock(Lcom/android/server/stats/pull/StatsPullAtomService;)Ljava/lang/Object;
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$fgetmProcessMemoryHighWaterMarkLock(Lcom/android/server/stats/pull/StatsPullAtomService;)Ljava/lang/Object;
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$fgetmSettingsStatsLock(Lcom/android/server/stats/pull/StatsPullAtomService;)Ljava/lang/Object;
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$fgetmSystemUptimeLock(Lcom/android/server/stats/pull/StatsPullAtomService;)Ljava/lang/Object;
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$fgetmTemperatureLock(Lcom/android/server/stats/pull/StatsPullAtomService;)Ljava/lang/Object;
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$fgetmWifiActivityInfoLock(Lcom/android/server/stats/pull/StatsPullAtomService;)Ljava/lang/Object;
+HPLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$mpullDataBytesTransferLocked(Lcom/android/server/stats/pull/StatsPullAtomService;ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->-$$Nest$mpullHealthHalLocked(Lcom/android/server/stats/pull/StatsPullAtomService;ILjava/util/List;)I
PLcom/android/server/stats/pull/StatsPullAtomService;-><clinit>()V
-HPLcom/android/server/stats/pull/StatsPullAtomService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/stats/pull/StatsPullAtomService;->canQueryNetworkStatsForTypeProxy()Z
-PLcom/android/server/stats/pull/StatsPullAtomService;->collectNetworkStatsSnapshotForAtom(I)Ljava/util/List;
-HPLcom/android/server/stats/pull/StatsPullAtomService;->getDataUsageBytesTransferSnapshotForOemManaged()Ljava/util/List;
+PLcom/android/server/stats/pull/StatsPullAtomService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/stats/pull/StatsPullAtomService;->awaitControllerInfo(Landroid/os/SynchronousResultReceiver;)Landroid/os/Parcelable;
+PLcom/android/server/stats/pull/StatsPullAtomService;->collectNetworkStatsSnapshotForAtomLocked(I)Ljava/util/List;
+PLcom/android/server/stats/pull/StatsPullAtomService;->fetchBluetoothData()Landroid/bluetooth/BluetoothActivityEnergyInfo;
PLcom/android/server/stats/pull/StatsPullAtomService;->getIKeystoreMetricsService()Landroid/security/metrics/IKeystoreMetrics;
PLcom/android/server/stats/pull/StatsPullAtomService;->getIThermalService()Landroid/os/IThermalService;
-HPLcom/android/server/stats/pull/StatsPullAtomService;->getUidNetworkStatsSnapshotForTemplate(Landroid/net/NetworkTemplate;Z)Landroid/net/NetworkStats;
-PLcom/android/server/stats/pull/StatsPullAtomService;->getUidNetworkStatsSnapshotForTransport(I)Landroid/net/NetworkStats;
-PLcom/android/server/stats/pull/StatsPullAtomService;->initAndRegisterDeferredPullers()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->initAndRegisterNetworkStatsPullers()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->initMobileDataStatsPuller()V
-HPLcom/android/server/stats/pull/StatsPullAtomService;->initializePullersState()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$onBootPhase$0()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$onBootPhase$1()V
+HPLcom/android/server/stats/pull/StatsPullAtomService;->getUidNetworkStatsSnapshotForTemplateLocked(Landroid/net/NetworkTemplate;Z)Landroid/net/NetworkStats;
+PLcom/android/server/stats/pull/StatsPullAtomService;->getUidNetworkStatsSnapshotForTemplateLocked(Landroid/net/NetworkTemplate;ZJJ)Landroid/net/NetworkStats;
+PLcom/android/server/stats/pull/StatsPullAtomService;->getUidNetworkStatsSnapshotForTransportLocked(I)Landroid/net/NetworkStats;
PLcom/android/server/stats/pull/StatsPullAtomService;->onBootPhase(I)V
PLcom/android/server/stats/pull/StatsPullAtomService;->onStart()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerAccessibilityFloatingMenuStats()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerAccessibilityShortcutStats()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerAppOps()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerAppSize()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerAppsOnExternalStorageInfo()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerAttributedAppOps()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerBatteryCycleCount()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerBatteryLevel()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerBatteryVoltage()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerBinderCallsStats()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerBinderCallsStatsExceptions()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerBluetoothActivityInfo()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerBluetoothBytesTransfer()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerBuildInformation()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerBytesTransferByTagAndMetered()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerCachedAppsHighWatermarkPuller()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerCategorySize()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerCoolingDevice()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuActiveTime()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuClusterTime()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuCyclesPerThreadGroupCluster()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuCyclesPerUidCluster()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuTimePerClusterFreq()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuTimePerThreadFreq()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuTimePerUid()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuTimePerUidFreq()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerDangerousPermissionState()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerDangerousPermissionStateSampled()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerDataUsageBytesTransfer()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerDebugElapsedClock()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerDebugFailingElapsedClock()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerDeviceCalculatedPowerUse()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerDirectoryUsage()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerDiskIO()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerDiskStats()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerEventListeners()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerExternalStorageInfo()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerFaceSettings()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerFullBatteryCapacity()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerHdrCapabilitiesPuller()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerInstalledIncrementalPackages()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerIonHeapSize()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerKernelWakelock()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerKeystoreAtomWithOverflow()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerKeystoreCrashStats()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerKeystoreKeyCreationWithAuthInfo()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerKeystoreKeyCreationWithGeneralInfo()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerKeystoreKeyCreationWithPurposeModesInfo()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerKeystoreKeyOperationWithGeneralInfo()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerKeystoreKeyOperationWithPurposeAndModesInfo()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerKeystoreStorageStats()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerLooperStats()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerMediaCapabilitiesStats()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerMobileBytesTransfer()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerMobileBytesTransferBackground()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerModemActivityInfo()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerNotificationRemoteViews()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerNumFacesEnrolled()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerNumFingerprintsEnrolled()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerOemManagedBytesTransfer()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerPendingIntentsPerPackagePuller()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerPinnerServiceStats()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerPowerProfile()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerProcStats()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerProcStatsPkgProc()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessAssociation()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessCpuTime()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessDmabufMemory()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessMemoryHighWaterMark()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessMemorySnapshot()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessMemoryState()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessState()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessSystemIonHeapSize()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerProxyBytesTransferBackground()V
-HPLcom/android/server/stats/pull/StatsPullAtomService;->registerPullers()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerRemainingBatteryCapacity()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerRkpErrorStats()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerRoleHolder()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerRuntimeAppOpAccessMessage()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerSettingsStats()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerSystemElapsedRealtime()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerSystemIonHeapSize()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerSystemMemory()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerSystemUptime()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerTemperature()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerTimeZoneDataInfo()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerTimeZoneDetectorState()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerUwbActivityInfo()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerVmStat()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerWifiActivityInfo()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerWifiBytesTransfer()V
-PLcom/android/server/stats/pull/StatsPullAtomService;->registerWifiBytesTransferBackground()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullBinderCallsStatsLocked(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullBluetoothActivityInfoLocked(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullBluetoothBytesTransferLocked(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullCategorySizeLocked(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullCpuCyclesPerUidClusterLocked(ILjava/util/List;)V
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullCpuTimePerClusterFreqLocked(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullCpuTimePerUidLocked(ILjava/util/List;)V
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullDirectoryUsageLocked(ILjava/util/List;)V
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullDiskIOLocked(ILjava/util/List;)V
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullDiskStatsLocked(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullKernelWakelockLocked(ILjava/util/List;)V
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullLooperStatsLocked(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullModemActivityInfoLocked(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullProcessCpuTimeLocked(ILjava/util/List;)V+]Lcom/android/internal/os/ProcessCpuTracker;Lcom/android/internal/os/ProcessCpuTracker;]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullProcessMemoryHighWaterMarkLocked(ILjava/util/List;)V
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullProcessMemorySnapshot(ILjava/util/List;)V
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullSettingsStatsLocked(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullSystemUptimeLocked(ILjava/util/List;)V
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullTemperatureLocked(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullWifiActivityInfoLocked(ILjava/util/List;)I
PLcom/android/server/stats/pull/StatsPullAtomService;->sliceNetworkStats(Landroid/net/NetworkStats;Ljava/util/function/Function;)Landroid/net/NetworkStats;
-PLcom/android/server/stats/pull/StatsPullAtomService;->sliceNetworkStatsByUid(Landroid/net/NetworkStats;)Landroid/net/NetworkStats;
-PLcom/android/server/stats/pull/StatsPullAtomService;->sliceNetworkStatsByUidAndFgbg(Landroid/net/NetworkStats;)Landroid/net/NetworkStats;
-PLcom/android/server/stats/pull/StatsPullAtomService;->sliceNetworkStatsByUidTagAndMetered(Landroid/net/NetworkStats;)Landroid/net/NetworkStats;
+PLcom/android/server/stats/pull/netstats/NetworkStatsAccumulator;-><init>(Landroid/net/NetworkTemplate;ZJJ)V
PLcom/android/server/stats/pull/netstats/NetworkStatsExt;-><init>(Landroid/net/NetworkStats;[IZ)V
-HPLcom/android/server/stats/pull/netstats/NetworkStatsExt;-><init>(Landroid/net/NetworkStats;[IZZZILcom/android/server/stats/pull/netstats/SubInfo;IZ)V
+PLcom/android/server/stats/pull/netstats/NetworkStatsExt;-><init>(Landroid/net/NetworkStats;[IZZZILcom/android/server/stats/pull/netstats/SubInfo;IZ)V
+HPLcom/android/server/stats/pull/netstats/NetworkStatsUtils;->fromBucket(Landroid/app/usage/NetworkStats$Bucket;)Landroid/net/NetworkStats$Entry;
+PLcom/android/server/stats/pull/netstats/NetworkStatsUtils;->fromPublicNetworkStats(Landroid/app/usage/NetworkStats;)Landroid/net/NetworkStats;
PLcom/android/server/statusbar/SessionMonitor;-><init>(Landroid/content/Context;)V
-PLcom/android/server/statusbar/SessionMonitor;->registerSessionListener(ILcom/android/internal/statusbar/ISessionListener;)V
-PLcom/android/server/statusbar/SessionMonitor;->requireListenerPermissions(I)V
-PLcom/android/server/statusbar/StatusBarManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;ILandroid/os/IBinder;IIZ)V
+PLcom/android/server/statusbar/StatusBarManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;I)V
PLcom/android/server/statusbar/StatusBarManagerService$$ExternalSyntheticLambda2;->run()V
-PLcom/android/server/statusbar/StatusBarManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V
-PLcom/android/server/statusbar/StatusBarManagerService$$ExternalSyntheticLambda5;->run()V
-PLcom/android/server/statusbar/StatusBarManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V
-PLcom/android/server/statusbar/StatusBarManagerService$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/statusbar/StatusBarManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;IIIZ)V
+HPLcom/android/server/statusbar/StatusBarManagerService$$ExternalSyntheticLambda4;->run()V
PLcom/android/server/statusbar/StatusBarManagerService$1;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V
-PLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionFinished(I)V
-PLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionPending(I)V
-PLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionStarting(IJJ)V
-PLcom/android/server/statusbar/StatusBarManagerService$1;->onSystemBarAttributesChanged(II[Lcom/android/internal/view/AppearanceRegion;ZIILjava/lang/String;[Lcom/android/internal/statusbar/LetterboxDetails;)V
-PLcom/android/server/statusbar/StatusBarManagerService$1;->setIconVisibility(Ljava/lang/String;Z)V
-PLcom/android/server/statusbar/StatusBarManagerService$1;->setImeWindowStatus(ILandroid/os/IBinder;IIZ)V
-PLcom/android/server/statusbar/StatusBarManagerService$1;->setNotificationDelegate(Lcom/android/server/notification/NotificationDelegate;)V
-PLcom/android/server/statusbar/StatusBarManagerService$1;->setUdfpsRefreshRateCallback(Landroid/hardware/fingerprint/IUdfpsRefreshRateRequestCallback;)V
PLcom/android/server/statusbar/StatusBarManagerService$2;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V
PLcom/android/server/statusbar/StatusBarManagerService$DeathRecipient;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V
-PLcom/android/server/statusbar/StatusBarManagerService$DeathRecipient;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;Lcom/android/server/statusbar/StatusBarManagerService$DeathRecipient-IA;)V
-PLcom/android/server/statusbar/StatusBarManagerService$DeathRecipient;->linkToDeath()V
-PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmAppearance(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)I
-PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmAppearanceRegions(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)[Lcom/android/internal/view/AppearanceRegion;
-PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmBehavior(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)I
-PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmImeBackDisposition(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)I
-PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmImeToken(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)Landroid/os/IBinder;
-PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmImeWindowVis(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)I
-PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmLetterboxDetails(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)[Lcom/android/internal/statusbar/LetterboxDetails;
-PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmNavbarColorManagedByIme(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)Z
-PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmPackageName(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)Ljava/lang/String;
-PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmRequestedVisibleTypes(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)I
-PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmShowImeSwitcher(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)Z
-PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmTransientBarTypes(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)I
-PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$msetBarAttributes(Lcom/android/server/statusbar/StatusBarManagerService$UiState;I[Lcom/android/internal/view/AppearanceRegion;ZIILjava/lang/String;[Lcom/android/internal/statusbar/LetterboxDetails;)V
-PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$msetImeWindowState(Lcom/android/server/statusbar/StatusBarManagerService$UiState;IIZLandroid/os/IBinder;)V
PLcom/android/server/statusbar/StatusBarManagerService$UiState;-><init>()V
-PLcom/android/server/statusbar/StatusBarManagerService$UiState;-><init>(Lcom/android/server/statusbar/StatusBarManagerService$UiState-IA;)V
-PLcom/android/server/statusbar/StatusBarManagerService$UiState;->setBarAttributes(I[Lcom/android/internal/view/AppearanceRegion;ZIILjava/lang/String;[Lcom/android/internal/statusbar/LetterboxDetails;)V
-PLcom/android/server/statusbar/StatusBarManagerService$UiState;->setImeWindowState(IIZLandroid/os/IBinder;)V
-PLcom/android/server/statusbar/StatusBarManagerService;->$r8$lambda$_iMEqk__BS_LQF7mYRJx_L2r6wc(Lcom/android/server/statusbar/StatusBarManagerService;)V
-PLcom/android/server/statusbar/StatusBarManagerService;->$r8$lambda$f4g8csS8sA9WBCaVg_JpeSlGvUA(Lcom/android/server/statusbar/StatusBarManagerService;ILandroid/os/IBinder;IIZ)V
-PLcom/android/server/statusbar/StatusBarManagerService;->$r8$lambda$nWjxl9WE61ral9X4QCz5jQbdFdw(Lcom/android/server/statusbar/StatusBarManagerService;)V
-PLcom/android/server/statusbar/StatusBarManagerService;->-$$Nest$fgetmBar(Lcom/android/server/statusbar/StatusBarManagerService;)Lcom/android/internal/statusbar/IStatusBar;
-PLcom/android/server/statusbar/StatusBarManagerService;->-$$Nest$fgetmDeathRecipient(Lcom/android/server/statusbar/StatusBarManagerService;)Lcom/android/server/statusbar/StatusBarManagerService$DeathRecipient;
-PLcom/android/server/statusbar/StatusBarManagerService;->-$$Nest$fgetmLock(Lcom/android/server/statusbar/StatusBarManagerService;)Ljava/lang/Object;
-PLcom/android/server/statusbar/StatusBarManagerService;->-$$Nest$fputmNotificationDelegate(Lcom/android/server/statusbar/StatusBarManagerService;Lcom/android/server/notification/NotificationDelegate;)V
-PLcom/android/server/statusbar/StatusBarManagerService;->-$$Nest$fputmUdfpsRefreshRateRequestCallback(Lcom/android/server/statusbar/StatusBarManagerService;Landroid/hardware/fingerprint/IUdfpsRefreshRateRequestCallback;)V
-PLcom/android/server/statusbar/StatusBarManagerService;->-$$Nest$menforceStatusBarService(Lcom/android/server/statusbar/StatusBarManagerService;)V
-PLcom/android/server/statusbar/StatusBarManagerService;->-$$Nest$mgetUiState(Lcom/android/server/statusbar/StatusBarManagerService;I)Lcom/android/server/statusbar/StatusBarManagerService$UiState;
PLcom/android/server/statusbar/StatusBarManagerService;-><clinit>()V
PLcom/android/server/statusbar/StatusBarManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/statusbar/StatusBarManagerService;->checkCanCollapseStatusBar(Ljava/lang/String;)Z
+PLcom/android/server/statusbar/StatusBarManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/statusbar/StatusBarManagerService;->enforceStatusBar()V
PLcom/android/server/statusbar/StatusBarManagerService;->enforceStatusBarService()V
+PLcom/android/server/statusbar/StatusBarManagerService;->enforceValidCallingUser()V
PLcom/android/server/statusbar/StatusBarManagerService;->gatherDisableActionsLocked(II)I
PLcom/android/server/statusbar/StatusBarManagerService;->getUiState(I)Lcom/android/server/statusbar/StatusBarManagerService$UiState;
-PLcom/android/server/statusbar/StatusBarManagerService;->lambda$notifyBarAttachChanged$2()V
-PLcom/android/server/statusbar/StatusBarManagerService;->lambda$notifyBarAttachChanged$3()V
-PLcom/android/server/statusbar/StatusBarManagerService;->lambda$setImeWindowStatus$1(ILandroid/os/IBinder;IIZ)V
-PLcom/android/server/statusbar/StatusBarManagerService;->notifyBarAttachChanged()V
+PLcom/android/server/statusbar/StatusBarManagerService;->handleSystemKey(Landroid/view/KeyEvent;)V
+PLcom/android/server/statusbar/StatusBarManagerService;->isVisibleBackgroundUserOnDisplay(I)Z
PLcom/android/server/statusbar/StatusBarManagerService;->onDisplayChanged(I)V
+PLcom/android/server/statusbar/StatusBarManagerService;->onGlobalActionsHidden()V
+PLcom/android/server/statusbar/StatusBarManagerService;->onGlobalActionsShown()V
+PLcom/android/server/statusbar/StatusBarManagerService;->onNotificationClear(Ljava/lang/String;ILjava/lang/String;IILcom/android/internal/statusbar/NotificationVisibility;)V
PLcom/android/server/statusbar/StatusBarManagerService;->publishGlobalActionsProvider()V
PLcom/android/server/statusbar/StatusBarManagerService;->registerSessionListener(ILcom/android/internal/statusbar/ISessionListener;)V
PLcom/android/server/statusbar/StatusBarManagerService;->registerStatusBar(Lcom/android/internal/statusbar/IStatusBar;)Lcom/android/internal/statusbar/RegisterStatusBarResult;
PLcom/android/server/statusbar/StatusBarManagerService;->setBiometicContextListener(Landroid/hardware/biometrics/IBiometricContextListener;)V
PLcom/android/server/statusbar/StatusBarManagerService;->setIconVisibility(Ljava/lang/String;Z)V
-PLcom/android/server/statusbar/StatusBarManagerService;->setImeWindowStatus(ILandroid/os/IBinder;IIZ)V
+PLcom/android/server/statusbar/StatusBarManagerService;->setImeWindowStatus(IIIZ)V
PLcom/android/server/statusbar/StatusBarManagerService;->setUdfpsRefreshRateCallback(Landroid/hardware/fingerprint/IUdfpsRefreshRateRequestCallback;)V
+PLcom/android/server/statusbar/TileRequestTracker$$ExternalSyntheticLambda0;-><init>(Landroid/util/IndentingPrintWriter;)V
PLcom/android/server/statusbar/TileRequestTracker$1;-><init>(Lcom/android/server/statusbar/TileRequestTracker;)V
+PLcom/android/server/statusbar/TileRequestTracker$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/statusbar/TileRequestTracker;-><init>(Landroid/content/Context;)V
+PLcom/android/server/storage/AppCollector$BackgroundHandler;-><init>(Lcom/android/server/storage/AppCollector;Landroid/os/Looper;Landroid/os/storage/VolumeInfo;Landroid/content/pm/PackageManager;Landroid/os/UserManager;Landroid/app/usage/StorageStatsManager;)V
+PLcom/android/server/storage/AppCollector$BackgroundHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/storage/AppCollector;-><init>(Lcom/android/server/storage/DiskStatsLoggingService;Landroid/os/storage/VolumeInfo;)V
+PLcom/android/server/storage/CacheQuotaStrategy$1$1;-><init>(Lcom/android/server/storage/CacheQuotaStrategy$1;Landroid/os/IBinder;)V
+PLcom/android/server/storage/CacheQuotaStrategy$1$1;->run()V
+PLcom/android/server/storage/CacheQuotaStrategy$1;-><init>(Lcom/android/server/storage/CacheQuotaStrategy;)V
+PLcom/android/server/storage/CacheQuotaStrategy$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/storage/CacheQuotaStrategy;->-$$Nest$mgetUnfulfilledRequests(Lcom/android/server/storage/CacheQuotaStrategy;)Ljava/util/List;
PLcom/android/server/storage/CacheQuotaStrategy;-><init>(Landroid/content/Context;Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/pm/Installer;Landroid/util/ArrayMap;)V
-PLcom/android/server/storage/CacheQuotaStrategy;->disconnectService()V
+PLcom/android/server/storage/CacheQuotaStrategy;->getRequestFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)Landroid/app/usage/CacheQuotaHint;
+PLcom/android/server/storage/CacheQuotaStrategy;->onResult(Landroid/os/Bundle;)V
PLcom/android/server/storage/CacheQuotaStrategy;->pushProcessedQuotas(Ljava/util/List;)V
PLcom/android/server/storage/CacheQuotaStrategy;->readFromXml(Ljava/io/InputStream;)Landroid/util/Pair;
+PLcom/android/server/storage/CacheQuotaStrategy;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/util/List;J)V
PLcom/android/server/storage/CacheQuotaStrategy;->setupQuotasFromFile()J
PLcom/android/server/storage/DeviceStorageMonitorService$1;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService;Landroid/os/Looper;)V
PLcom/android/server/storage/DeviceStorageMonitorService$1;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/storage/DeviceStorageMonitorService$2;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService;)V
PLcom/android/server/storage/DeviceStorageMonitorService$3;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService;)V
-PLcom/android/server/storage/DeviceStorageMonitorService$CacheFileDeletedObserver;-><init>()V
-PLcom/android/server/storage/DeviceStorageMonitorService$State;->-$$Nest$smisEntering(III)Z
-PLcom/android/server/storage/DeviceStorageMonitorService$State;->-$$Nest$smisLeaving(III)Z
-PLcom/android/server/storage/DeviceStorageMonitorService$State;-><init>()V
-PLcom/android/server/storage/DeviceStorageMonitorService$State;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService$State-IA;)V
-PLcom/android/server/storage/DeviceStorageMonitorService$State;->isEntering(III)Z
-PLcom/android/server/storage/DeviceStorageMonitorService$State;->isLeaving(III)Z
-PLcom/android/server/storage/DeviceStorageMonitorService;->-$$Nest$mcheckLow(Lcom/android/server/storage/DeviceStorageMonitorService;)V
+PLcom/android/server/storage/DeviceStorageMonitorService$3;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/storage/DeviceStorageMonitorService;-><clinit>()V
PLcom/android/server/storage/DeviceStorageMonitorService;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/storage/DeviceStorageMonitorService;->checkLow()V
-PLcom/android/server/storage/DeviceStorageMonitorService;->findOrCreateState(Ljava/util/UUID;)Lcom/android/server/storage/DeviceStorageMonitorService$State;
PLcom/android/server/storage/DeviceStorageMonitorService;->onStart()V
-HPLcom/android/server/storage/DeviceStorageMonitorService;->updateBroadcasts(Landroid/os/storage/VolumeInfo;III)V
-PLcom/android/server/storage/DeviceStorageMonitorService;->updateNotifications(Landroid/os/storage/VolumeInfo;II)V
+PLcom/android/server/storage/DiskStatsFileLogger;->addAppsToJson(Lorg/json/JSONObject;)V
+PLcom/android/server/storage/DiskStatsFileLogger;->dumpToFile(Ljava/io/File;)V
+PLcom/android/server/storage/DiskStatsLoggingService$LogRunnable;-><clinit>()V
+PLcom/android/server/storage/DiskStatsLoggingService$LogRunnable;-><init>()V
+PLcom/android/server/storage/DiskStatsLoggingService$LogRunnable;->run()V
PLcom/android/server/storage/DiskStatsLoggingService;-><clinit>()V
-PLcom/android/server/storage/DiskStatsLoggingService;->schedule(Landroid/content/Context;)V
+PLcom/android/server/storage/DiskStatsLoggingService;-><init>()V
+PLcom/android/server/storage/DiskStatsLoggingService;->isDumpsysTaskEnabled(Landroid/content/ContentResolver;)Z
+PLcom/android/server/storage/DiskStatsLoggingService;->onStartJob(Landroid/app/job/JobParameters;)Z
+PLcom/android/server/storage/FileCollector;-><clinit>()V
+PLcom/android/server/storage/FileCollector;->collectFiles(Ljava/io/File;Lcom/android/server/storage/FileCollector$MeasurementResult;)V
+PLcom/android/server/storage/FileCollector;->getMeasurementResult(Lcom/android/server/storage/DiskStatsLoggingService;)Lcom/android/server/storage/FileCollector$MeasurementResult;
PLcom/android/server/storage/StorageSessionController;-><init>(Landroid/content/Context;)V
PLcom/android/server/storage/StorageSessionController;->getConnectionUserIdForVolume(Landroid/os/storage/VolumeInfo;)I
-PLcom/android/server/storage/StorageSessionController;->getExternalStorageServiceComponentName()Landroid/content/ComponentName;
-PLcom/android/server/storage/StorageSessionController;->initExternalStorageServiceComponent()V
-PLcom/android/server/storage/StorageSessionController;->isEmulatedOrPublic(Landroid/os/storage/VolumeInfo;)Z
-PLcom/android/server/storage/StorageSessionController;->isSupportedVolume(Landroid/os/storage/VolumeInfo;)Z
PLcom/android/server/storage/StorageSessionController;->notifyVolumeStateChanged(Landroid/os/storage/VolumeInfo;)V
-PLcom/android/server/storage/StorageSessionController;->onReset(Landroid/os/IVold;Ljava/lang/Runnable;)V
PLcom/android/server/storage/StorageSessionController;->onUnlockUser(I)V
PLcom/android/server/storage/StorageSessionController;->onVolumeMount(Landroid/os/ParcelFileDescriptor;Landroid/os/storage/VolumeInfo;)V
-PLcom/android/server/storage/StorageSessionController;->resolveExternalStorageServiceAsUser(I)Landroid/content/pm/ServiceInfo;
PLcom/android/server/storage/StorageSessionController;->shouldHandle(Landroid/os/storage/VolumeInfo;)Z
-PLcom/android/server/storage/StorageSessionController;->supportsExternalStorage(I)Z
PLcom/android/server/storage/StorageUserConnection$ActiveConnection$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/storage/StorageUserConnection$Session;Landroid/os/ParcelFileDescriptor;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection$$ExternalSyntheticLambda1;-><init>(Ljava/lang/String;Landroid/os/storage/StorageVolume;)V
PLcom/android/server/storage/StorageUserConnection$ActiveConnection$$ExternalSyntheticLambda1;->run(Landroid/service/storage/IExternalStorageService;Landroid/os/RemoteCallback;)V
PLcom/android/server/storage/StorageUserConnection$ActiveConnection$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/storage/StorageUserConnection$ActiveConnection;Ljava/util/concurrent/CompletableFuture;)V
PLcom/android/server/storage/StorageUserConnection$ActiveConnection$$ExternalSyntheticLambda3;->onResult(Landroid/os/Bundle;)V
-PLcom/android/server/storage/StorageUserConnection$ActiveConnection$$ExternalSyntheticLambda4;-><init>(Ljava/lang/String;Landroid/os/storage/StorageVolume;)V
-PLcom/android/server/storage/StorageUserConnection$ActiveConnection$$ExternalSyntheticLambda4;->run(Landroid/service/storage/IExternalStorageService;Landroid/os/RemoteCallback;)V
PLcom/android/server/storage/StorageUserConnection$ActiveConnection$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/storage/StorageUserConnection$AsyncStorageServiceCall;Landroid/os/RemoteCallback;Ljava/util/concurrent/CompletableFuture;)V
PLcom/android/server/storage/StorageUserConnection$ActiveConnection$$ExternalSyntheticLambda5;->apply(Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/storage/StorageUserConnection$ActiveConnection$1;-><init>(Lcom/android/server/storage/StorageUserConnection$ActiveConnection;Ljava/util/concurrent/CompletableFuture;)V
-PLcom/android/server/storage/StorageUserConnection$ActiveConnection$1;->handleConnection(Landroid/os/IBinder;)V
PLcom/android/server/storage/StorageUserConnection$ActiveConnection$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->$r8$lambda$FmJboNYjokBfJEVj67KD2wZpm14(Lcom/android/server/storage/StorageUserConnection$AsyncStorageServiceCall;Landroid/os/RemoteCallback;Ljava/util/concurrent/CompletableFuture;Landroid/service/storage/IExternalStorageService;)Ljava/util/concurrent/CompletionStage;
-PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->$r8$lambda$GXIyazwVX_rUkeKdlCrCHRfXRB8(Lcom/android/server/storage/StorageUserConnection$ActiveConnection;Ljava/util/concurrent/CompletableFuture;Landroid/os/Bundle;)V
-PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->$r8$lambda$ZUID6_fjlmkWslb1Z-5VMQs3jZA(Lcom/android/server/storage/StorageUserConnection$Session;Landroid/os/ParcelFileDescriptor;Landroid/service/storage/IExternalStorageService;Landroid/os/RemoteCallback;)V
-PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->$r8$lambda$aiyAMsuUyqAtzW9JiGlGmzYO5Ms(Ljava/lang/String;Landroid/os/storage/StorageVolume;Landroid/service/storage/IExternalStorageService;Landroid/os/RemoteCallback;)V
-PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->-$$Nest$fgetmLock(Lcom/android/server/storage/StorageUserConnection$ActiveConnection;)Ljava/lang/Object;
PLcom/android/server/storage/StorageUserConnection$ActiveConnection;-><init>(Lcom/android/server/storage/StorageUserConnection;)V
-PLcom/android/server/storage/StorageUserConnection$ActiveConnection;-><init>(Lcom/android/server/storage/StorageUserConnection;Lcom/android/server/storage/StorageUserConnection$ActiveConnection-IA;)V
-PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->connectIfNeeded()Ljava/util/concurrent/CompletableFuture;
-PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->lambda$notifyVolumeStateChanged$4(Ljava/lang/String;Landroid/os/storage/StorageVolume;Landroid/service/storage/IExternalStorageService;Landroid/os/RemoteCallback;)V
-PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->lambda$startSession$2(Lcom/android/server/storage/StorageUserConnection$Session;Landroid/os/ParcelFileDescriptor;Landroid/service/storage/IExternalStorageService;Landroid/os/RemoteCallback;)V
-PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->lambda$waitForAsync$1(Lcom/android/server/storage/StorageUserConnection$AsyncStorageServiceCall;Landroid/os/RemoteCallback;Ljava/util/concurrent/CompletableFuture;Landroid/service/storage/IExternalStorageService;)Ljava/util/concurrent/CompletionStage;
-PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->lambda$waitForAsyncVoid$0(Ljava/util/concurrent/CompletableFuture;Landroid/os/Bundle;)V
-PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->notifyVolumeStateChanged(Ljava/lang/String;Landroid/os/storage/StorageVolume;)V
-PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->setResult(Landroid/os/Bundle;Ljava/util/concurrent/CompletableFuture;)V
-PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->startSession(Lcom/android/server/storage/StorageUserConnection$Session;Landroid/os/ParcelFileDescriptor;)V
-PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->waitForAsync(Lcom/android/server/storage/StorageUserConnection$AsyncStorageServiceCall;Landroid/os/RemoteCallback;Ljava/util/concurrent/CompletableFuture;Ljava/util/ArrayList;J)Ljava/lang/Object;
PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->waitForAsyncVoid(Lcom/android/server/storage/StorageUserConnection$AsyncStorageServiceCall;)V
PLcom/android/server/storage/StorageUserConnection$Session;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/storage/StorageUserConnection;->-$$Nest$fgetmContext(Lcom/android/server/storage/StorageUserConnection;)Landroid/content/Context;
-PLcom/android/server/storage/StorageUserConnection;->-$$Nest$fgetmHandlerThread(Lcom/android/server/storage/StorageUserConnection;)Landroid/os/HandlerThread;
-PLcom/android/server/storage/StorageUserConnection;->-$$Nest$fgetmSessionController(Lcom/android/server/storage/StorageUserConnection;)Lcom/android/server/storage/StorageSessionController;
-PLcom/android/server/storage/StorageUserConnection;->-$$Nest$fgetmUserId(Lcom/android/server/storage/StorageUserConnection;)I
PLcom/android/server/storage/StorageUserConnection;-><init>(Landroid/content/Context;ILcom/android/server/storage/StorageSessionController;)V
PLcom/android/server/storage/StorageUserConnection;->notifyVolumeStateChanged(Ljava/lang/String;Landroid/os/storage/StorageVolume;)V
-PLcom/android/server/storage/StorageUserConnection;->startSession(Ljava/lang/String;Landroid/os/ParcelFileDescriptor;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/tare/Agent$ActionAffordabilityNote;->-$$Nest$msetNewAffordability(Lcom/android/server/tare/Agent$ActionAffordabilityNote;Z)V
-HPLcom/android/server/tare/Agent$ActionAffordabilityNote;-><init>(Lcom/android/server/tare/EconomyManagerInternal$ActionBill;Lcom/android/server/tare/EconomyManagerInternal$AffordabilityChangeListener;Lcom/android/server/tare/EconomicPolicy;)V
-HPLcom/android/server/tare/Agent$ActionAffordabilityNote;->equals(Ljava/lang/Object;)Z
-HPLcom/android/server/tare/Agent$ActionAffordabilityNote;->hashCode()I
-PLcom/android/server/tare/Agent$ActionAffordabilityNote;->setNewAffordability(Z)V
-PLcom/android/server/tare/Agent$AgentHandler;-><init>(Lcom/android/server/tare/Agent;Landroid/os/Looper;)V
-PLcom/android/server/tare/Agent$BalanceThresholdAlarmQueue;-><init>(Lcom/android/server/tare/Agent;Landroid/content/Context;Landroid/os/Looper;)V
-PLcom/android/server/tare/Agent$BalanceThresholdAlarmQueue;-><init>(Lcom/android/server/tare/Agent;Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/tare/Agent$BalanceThresholdAlarmQueue-IA;)V
-PLcom/android/server/tare/Agent$OngoingEventUpdater;-><init>(Lcom/android/server/tare/Agent;)V
-PLcom/android/server/tare/Agent$OngoingEventUpdater;-><init>(Lcom/android/server/tare/Agent;Lcom/android/server/tare/Agent$OngoingEventUpdater-IA;)V
-PLcom/android/server/tare/Agent$TotalDeltaCalculator;-><init>(Lcom/android/server/tare/Agent;)V
-PLcom/android/server/tare/Agent$TotalDeltaCalculator;-><init>(Lcom/android/server/tare/Agent;Lcom/android/server/tare/Agent$TotalDeltaCalculator-IA;)V
-PLcom/android/server/tare/Agent$TrendCalculator;-><init>()V
-PLcom/android/server/tare/Agent;-><clinit>()V
-PLcom/android/server/tare/Agent;-><init>(Lcom/android/server/tare/InternalResourceService;Lcom/android/server/tare/Scribe;Lcom/android/server/tare/Analyst;)V
-HPLcom/android/server/tare/Agent;->registerAffordabilityChangeListenerLocked(ILjava/lang/String;Lcom/android/server/tare/EconomyManagerInternal$AffordabilityChangeListener;Lcom/android/server/tare/EconomyManagerInternal$ActionBill;)V
-HPLcom/android/server/tare/Agent;->scheduleBalanceCheckLocked(ILjava/lang/String;)V
-HPLcom/android/server/tare/Agent;->unregisterAffordabilityChangeListenerLocked(ILjava/lang/String;Lcom/android/server/tare/EconomyManagerInternal$AffordabilityChangeListener;Lcom/android/server/tare/EconomyManagerInternal$ActionBill;)V
-PLcom/android/server/tare/AlarmManagerEconomicPolicy;-><clinit>()V
-PLcom/android/server/tare/AlarmManagerEconomicPolicy;-><init>(Lcom/android/server/tare/InternalResourceService;Lcom/android/server/tare/EconomicPolicy$Injector;)V
-PLcom/android/server/tare/AlarmManagerEconomicPolicy;->getAction(I)Lcom/android/server/tare/EconomicPolicy$Action;
-PLcom/android/server/tare/AlarmManagerEconomicPolicy;->getCostModifiers()[I
-HPLcom/android/server/tare/AlarmManagerEconomicPolicy;->loadConstants(Ljava/lang/String;Landroid/provider/DeviceConfig$Properties;)V
-PLcom/android/server/tare/Analyst;-><clinit>()V
-PLcom/android/server/tare/Analyst;-><init>()V
-PLcom/android/server/tare/Analyst;-><init>(Lcom/android/internal/app/IBatteryStats;)V
-PLcom/android/server/tare/ChargingModifier$ChargingTracker;-><init>(Lcom/android/server/tare/ChargingModifier;)V
-PLcom/android/server/tare/ChargingModifier$ChargingTracker;-><init>(Lcom/android/server/tare/ChargingModifier;Lcom/android/server/tare/ChargingModifier$ChargingTracker-IA;)V
-PLcom/android/server/tare/ChargingModifier;-><clinit>()V
-PLcom/android/server/tare/ChargingModifier;-><init>(Lcom/android/server/tare/InternalResourceService;)V
-PLcom/android/server/tare/CompleteEconomicPolicy$CompleteInjector;-><init>()V
-PLcom/android/server/tare/CompleteEconomicPolicy$CompleteInjector;->isPolicyEnabled(ILandroid/provider/DeviceConfig$Properties;)Z
-PLcom/android/server/tare/CompleteEconomicPolicy;-><clinit>()V
-PLcom/android/server/tare/CompleteEconomicPolicy;-><init>(Lcom/android/server/tare/InternalResourceService;)V
-PLcom/android/server/tare/CompleteEconomicPolicy;-><init>(Lcom/android/server/tare/InternalResourceService;Lcom/android/server/tare/CompleteEconomicPolicy$CompleteInjector;)V
-HPLcom/android/server/tare/CompleteEconomicPolicy;->getAction(I)Lcom/android/server/tare/EconomicPolicy$Action;
-PLcom/android/server/tare/CompleteEconomicPolicy;->getCostModifiers()[I
-PLcom/android/server/tare/CompleteEconomicPolicy;->isPolicyEnabled(I)Z
-PLcom/android/server/tare/DeviceIdleModifier$DeviceIdleTracker;-><init>(Lcom/android/server/tare/DeviceIdleModifier;)V
-PLcom/android/server/tare/DeviceIdleModifier;-><clinit>()V
-PLcom/android/server/tare/DeviceIdleModifier;-><init>(Lcom/android/server/tare/InternalResourceService;)V
-PLcom/android/server/tare/EconomicPolicy$Action;-><init>(IJJ)V
-PLcom/android/server/tare/EconomicPolicy$Action;-><init>(IJJZ)V
-PLcom/android/server/tare/EconomicPolicy$Injector;-><init>()V
-PLcom/android/server/tare/EconomicPolicy$Reward;-><init>(IJJJ)V
-PLcom/android/server/tare/EconomicPolicy;-><clinit>()V
-PLcom/android/server/tare/EconomicPolicy;-><init>(Lcom/android/server/tare/InternalResourceService;)V
-PLcom/android/server/tare/EconomicPolicy;->getConstantAsCake(Ljava/lang/String;J)J
-HPLcom/android/server/tare/EconomicPolicy;->getConstantAsCake(Ljava/lang/String;JJ)J
-PLcom/android/server/tare/EconomicPolicy;->initModifier(ILcom/android/server/tare/InternalResourceService;)V
-PLcom/android/server/tare/EconomyManagerInternal$ActionBill$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/tare/EconomyManagerInternal$ActionBill$$ExternalSyntheticLambda0;->applyAsInt(Ljava/lang/Object;)I
-PLcom/android/server/tare/EconomyManagerInternal$ActionBill;->$r8$lambda$jbYRct5AtAlpj4cxb-8ZcW2zmwE(Lcom/android/server/tare/EconomyManagerInternal$AnticipatedAction;)I
-PLcom/android/server/tare/EconomyManagerInternal$ActionBill;-><clinit>()V
-HPLcom/android/server/tare/EconomyManagerInternal$ActionBill;-><init>(Ljava/util/List;)V
-PLcom/android/server/tare/EconomyManagerInternal$ActionBill;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/tare/EconomyManagerInternal$ActionBill;->getAnticipatedActions()Ljava/util/List;
-PLcom/android/server/tare/EconomyManagerInternal$ActionBill;->hashCode()I
-PLcom/android/server/tare/EconomyManagerInternal$ActionBill;->lambda$static$0(Lcom/android/server/tare/EconomyManagerInternal$AnticipatedAction;)I
-PLcom/android/server/tare/EconomyManagerInternal$AnticipatedAction;-><init>(IIJ)V
-PLcom/android/server/tare/EconomyManagerInternal$AnticipatedAction;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/tare/EconomyManagerInternal$AnticipatedAction;->hashCode()I
-PLcom/android/server/tare/InternalResourceService$1;-><init>(Lcom/android/server/tare/InternalResourceService;)V
-PLcom/android/server/tare/InternalResourceService$2;-><init>(Lcom/android/server/tare/InternalResourceService;)V
-PLcom/android/server/tare/InternalResourceService$3;-><init>(Lcom/android/server/tare/InternalResourceService;)V
-PLcom/android/server/tare/InternalResourceService$4;-><init>(Lcom/android/server/tare/InternalResourceService;)V
-PLcom/android/server/tare/InternalResourceService$ConfigObserver;-><init>(Lcom/android/server/tare/InternalResourceService;Landroid/os/Handler;Landroid/content/Context;)V
-PLcom/android/server/tare/InternalResourceService$ConfigObserver;->getAllDeviceConfigProperties()Landroid/provider/DeviceConfig$Properties;
-PLcom/android/server/tare/InternalResourceService$ConfigObserver;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
-PLcom/android/server/tare/InternalResourceService$ConfigObserver;->start()V
-PLcom/android/server/tare/InternalResourceService$ConfigObserver;->updateEnabledStatus()V
-PLcom/android/server/tare/InternalResourceService$EconomyManagerStub;-><init>(Lcom/android/server/tare/InternalResourceService;)V
-PLcom/android/server/tare/InternalResourceService$IrsHandler;-><init>(Lcom/android/server/tare/InternalResourceService;Landroid/os/Looper;)V
-PLcom/android/server/tare/InternalResourceService$IrsHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/tare/InternalResourceService$LocalService;-><init>(Lcom/android/server/tare/InternalResourceService;)V
-PLcom/android/server/tare/InternalResourceService$LocalService;-><init>(Lcom/android/server/tare/InternalResourceService;Lcom/android/server/tare/InternalResourceService$LocalService-IA;)V
-PLcom/android/server/tare/InternalResourceService$LocalService;->getEnabledMode(I)I
-PLcom/android/server/tare/InternalResourceService$LocalService;->noteInstantaneousEvent(ILjava/lang/String;ILjava/lang/String;)V
-PLcom/android/server/tare/InternalResourceService$LocalService;->noteOngoingEventStarted(ILjava/lang/String;ILjava/lang/String;)V
-PLcom/android/server/tare/InternalResourceService$LocalService;->noteOngoingEventStopped(ILjava/lang/String;ILjava/lang/String;)V
-HPLcom/android/server/tare/InternalResourceService$LocalService;->registerAffordabilityChangeListener(ILjava/lang/String;Lcom/android/server/tare/EconomyManagerInternal$AffordabilityChangeListener;Lcom/android/server/tare/EconomyManagerInternal$ActionBill;)V
-PLcom/android/server/tare/InternalResourceService$LocalService;->registerTareStateChangeListener(Lcom/android/server/tare/EconomyManagerInternal$TareStateChangeListener;I)V
-HPLcom/android/server/tare/InternalResourceService$LocalService;->unregisterAffordabilityChangeListener(ILjava/lang/String;Lcom/android/server/tare/EconomyManagerInternal$AffordabilityChangeListener;Lcom/android/server/tare/EconomyManagerInternal$ActionBill;)V
-HPLcom/android/server/tare/InternalResourceService;->-$$Nest$fgetmAgent(Lcom/android/server/tare/InternalResourceService;)Lcom/android/server/tare/Agent;
-HPLcom/android/server/tare/InternalResourceService;->-$$Nest$fgetmEnabledMode(Lcom/android/server/tare/InternalResourceService;)I
-PLcom/android/server/tare/InternalResourceService;->-$$Nest$fgetmHandler(Lcom/android/server/tare/InternalResourceService;)Landroid/os/Handler;
-HPLcom/android/server/tare/InternalResourceService;->-$$Nest$fgetmLock(Lcom/android/server/tare/InternalResourceService;)Ljava/lang/Object;
-PLcom/android/server/tare/InternalResourceService;->-$$Nest$fgetmStateChangeListeners(Lcom/android/server/tare/InternalResourceService;)Landroid/util/SparseSetArray;
-HPLcom/android/server/tare/InternalResourceService;->-$$Nest$misTareSupported(Lcom/android/server/tare/InternalResourceService;)Z
-PLcom/android/server/tare/InternalResourceService;-><clinit>()V
-HPLcom/android/server/tare/InternalResourceService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/tare/InternalResourceService;->getCompleteEconomicPolicyLocked()Lcom/android/server/tare/CompleteEconomicPolicy;
-PLcom/android/server/tare/InternalResourceService;->getEnabledMode()I
-PLcom/android/server/tare/InternalResourceService;->getEnabledMode(I)I
-PLcom/android/server/tare/InternalResourceService;->getLock()Ljava/lang/Object;
-HPLcom/android/server/tare/InternalResourceService;->getUid(ILjava/lang/String;)I
-HPLcom/android/server/tare/InternalResourceService;->isSystem(ILjava/lang/String;)Z
-HPLcom/android/server/tare/InternalResourceService;->isTareSupported()Z
-PLcom/android/server/tare/InternalResourceService;->onBootPhase(I)V
-PLcom/android/server/tare/InternalResourceService;->onBootPhaseBootCompleted()V
-PLcom/android/server/tare/InternalResourceService;->onBootPhaseSystemServicesReady()V
-PLcom/android/server/tare/InternalResourceService;->onBootPhaseThirdPartyAppsCanStart()V
-PLcom/android/server/tare/InternalResourceService;->onStart()V
-PLcom/android/server/tare/JobSchedulerEconomicPolicy;-><clinit>()V
-PLcom/android/server/tare/JobSchedulerEconomicPolicy;-><init>(Lcom/android/server/tare/InternalResourceService;Lcom/android/server/tare/EconomicPolicy$Injector;)V
-PLcom/android/server/tare/JobSchedulerEconomicPolicy;->getAction(I)Lcom/android/server/tare/EconomicPolicy$Action;
-PLcom/android/server/tare/JobSchedulerEconomicPolicy;->getCostModifiers()[I
-HPLcom/android/server/tare/JobSchedulerEconomicPolicy;->loadConstants(Ljava/lang/String;Landroid/provider/DeviceConfig$Properties;)V
-PLcom/android/server/tare/Modifier;-><init>()V
-PLcom/android/server/tare/PowerSaveModeModifier$PowerSaveModeTracker;-><init>(Lcom/android/server/tare/PowerSaveModeModifier;)V
-PLcom/android/server/tare/PowerSaveModeModifier$PowerSaveModeTracker;-><init>(Lcom/android/server/tare/PowerSaveModeModifier;Lcom/android/server/tare/PowerSaveModeModifier$PowerSaveModeTracker-IA;)V
-PLcom/android/server/tare/PowerSaveModeModifier;->-$$Nest$fgetmIrs(Lcom/android/server/tare/PowerSaveModeModifier;)Lcom/android/server/tare/InternalResourceService;
-PLcom/android/server/tare/PowerSaveModeModifier;-><clinit>()V
-PLcom/android/server/tare/PowerSaveModeModifier;-><init>(Lcom/android/server/tare/InternalResourceService;)V
-PLcom/android/server/tare/ProcessStateModifier$1;-><init>(Lcom/android/server/tare/ProcessStateModifier;)V
-PLcom/android/server/tare/ProcessStateModifier;-><clinit>()V
-PLcom/android/server/tare/ProcessStateModifier;-><init>(Lcom/android/server/tare/InternalResourceService;)V
-PLcom/android/server/tare/Scribe$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/tare/Scribe;)V
-PLcom/android/server/tare/Scribe$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/tare/Scribe;)V
-PLcom/android/server/tare/Scribe;-><clinit>()V
-PLcom/android/server/tare/Scribe;-><init>(Lcom/android/server/tare/InternalResourceService;Lcom/android/server/tare/Analyst;)V
-PLcom/android/server/tare/Scribe;-><init>(Lcom/android/server/tare/InternalResourceService;Lcom/android/server/tare/Analyst;Ljava/io/File;)V
-PLcom/android/server/tare/TareHandlerThread;-><init>()V
-PLcom/android/server/tare/TareHandlerThread;->ensureThreadLocked()V
-PLcom/android/server/tare/TareHandlerThread;->get()Lcom/android/server/tare/TareHandlerThread;
-PLcom/android/server/tare/TareHandlerThread;->getExecutor()Ljava/util/concurrent/Executor;
+PLcom/android/server/supervision/SupervisionService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/supervision/SupervisionService$Lifecycle;->onStart()V
+PLcom/android/server/supervision/SupervisionService$Lifecycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/supervision/SupervisionService$SupervisionManagerInternalImpl;-><init>(Lcom/android/server/supervision/SupervisionService;)V
+PLcom/android/server/supervision/SupervisionService$UserLifecycleListener;-><init>(Lcom/android/server/supervision/SupervisionService;)V
+PLcom/android/server/supervision/SupervisionService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/supervision/SupervisionService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/supervision/SupervisionService;->getUserDataLocked(I)Lcom/android/server/supervision/SupervisionUserData;
+PLcom/android/server/supervision/SupervisionUserData;-><init>(I)V
+PLcom/android/server/supervision/SupervisionUserData;->dump(Landroid/util/IndentingPrintWriter;)V
PLcom/android/server/telecom/InternalServiceRepository$1;-><init>(Lcom/android/server/telecom/InternalServiceRepository;)V
PLcom/android/server/telecom/InternalServiceRepository;-><init>(Lcom/android/server/DeviceIdleInternal;)V
-PLcom/android/server/telecom/InternalServiceRepository;->ensureSystemProcess()V
PLcom/android/server/telecom/InternalServiceRepository;->getDeviceIdleController()Lcom/android/internal/telecom/IDeviceIdleControllerAdapter;
-PLcom/android/server/telecom/TelecomLoaderService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
-PLcom/android/server/telecom/TelecomLoaderService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
-PLcom/android/server/telecom/TelecomLoaderService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
+PLcom/android/server/telecom/TelecomLoaderService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/telecom/TelecomLoaderService;I)V
PLcom/android/server/telecom/TelecomLoaderService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
+PLcom/android/server/telecom/TelecomLoaderService$$ExternalSyntheticLambda3;->onRoleHoldersChanged(Ljava/lang/String;Landroid/os/UserHandle;)V
PLcom/android/server/telecom/TelecomLoaderService$1;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
PLcom/android/server/telecom/TelecomLoaderService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
-PLcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;-><init>(Lcom/android/server/telecom/TelecomLoaderService;Lcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection-IA;)V
PLcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-PLcom/android/server/telecom/TelecomLoaderService;->-$$Nest$fgetmContext(Lcom/android/server/telecom/TelecomLoaderService;)Landroid/content/Context;
-PLcom/android/server/telecom/TelecomLoaderService;->-$$Nest$fgetmDefaultSimCallManagerRequests(Lcom/android/server/telecom/TelecomLoaderService;)Landroid/util/IntArray;
-PLcom/android/server/telecom/TelecomLoaderService;->-$$Nest$fgetmLock(Lcom/android/server/telecom/TelecomLoaderService;)Ljava/lang/Object;
-PLcom/android/server/telecom/TelecomLoaderService;->-$$Nest$fgetmServiceRepo(Lcom/android/server/telecom/TelecomLoaderService;)Lcom/android/server/telecom/InternalServiceRepository;
-PLcom/android/server/telecom/TelecomLoaderService;->-$$Nest$mupdateSimCallManagerPermissions(Lcom/android/server/telecom/TelecomLoaderService;I)V
PLcom/android/server/telecom/TelecomLoaderService;-><clinit>()V
PLcom/android/server/telecom/TelecomLoaderService;-><init>(Landroid/content/Context;)V
PLcom/android/server/telecom/TelecomLoaderService;->connectToTelecom()V
PLcom/android/server/telecom/TelecomLoaderService;->onBootPhase(I)V
PLcom/android/server/telecom/TelecomLoaderService;->onStart()V
-PLcom/android/server/telecom/TelecomLoaderService;->registerCarrierConfigChangedReceiver()V
-PLcom/android/server/telecom/TelecomLoaderService;->registerDefaultAppNotifier()V
-PLcom/android/server/telecom/TelecomLoaderService;->registerDefaultAppProviders()V
-PLcom/android/server/telecom/TelecomLoaderService;->setupServiceRepository()V
PLcom/android/server/telecom/TelecomLoaderService;->updateSimCallManagerPermissions(I)V
PLcom/android/server/testharness/TestHarnessModeService$1;-><init>(Lcom/android/server/testharness/TestHarnessModeService;)V
-PLcom/android/server/testharness/TestHarnessModeService;-><clinit>()V
PLcom/android/server/testharness/TestHarnessModeService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/testharness/TestHarnessModeService;->completeTestHarnessModeSetup()V
PLcom/android/server/testharness/TestHarnessModeService;->getPersistentDataBlock()Lcom/android/server/pdb/PersistentDataBlockManagerInternal;
-PLcom/android/server/testharness/TestHarnessModeService;->getTestHarnessModeData()[B
PLcom/android/server/testharness/TestHarnessModeService;->onBootPhase(I)V
PLcom/android/server/testharness/TestHarnessModeService;->onStart()V
-PLcom/android/server/testharness/TestHarnessModeService;->setUpTestHarnessMode()V
-PLcom/android/server/testharness/TestHarnessModeService;->showNotificationIfEnabled()V
-PLcom/android/server/textclassifier/FixedSizeQueue;-><init>(ILcom/android/server/textclassifier/FixedSizeQueue$OnEntryEvictedListener;)V
-PLcom/android/server/textclassifier/FixedSizeQueue;->isEmpty()Z
+PLcom/android/server/textclassifier/FixedSizeQueue;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState$$ExternalSyntheticLambda0;)V
+PLcom/android/server/textclassifier/FixedSizeQueue;->add(Lcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;)V
PLcom/android/server/textclassifier/IconsContentProvider$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/textclassifier/IconsContentProvider;)V
PLcom/android/server/textclassifier/IconsContentProvider;-><init>()V
PLcom/android/server/textclassifier/IconsContentProvider;->onCreate()Z
-PLcom/android/server/textclassifier/TextClassificationManagerService$1;-><init>()V
+PLcom/android/server/textclassifier/TextClassificationManagerService$$ExternalSyntheticLambda0;-><init>(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/ConversationActions$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$$ExternalSyntheticLambda0;-><init>(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextLinks$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$$ExternalSyntheticLambda0;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$$ExternalSyntheticLambda11;-><init>(Landroid/service/textclassifier/ITextClassifierCallback;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$$ExternalSyntheticLambda12;-><init>(Ljava/lang/String;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$$ExternalSyntheticLambda1;-><init>(ILjava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$$ExternalSyntheticLambda1;->runOrThrow()V
PLcom/android/server/textclassifier/TextClassificationManagerService$2;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$CallbackWrapper;-><init>(Landroid/service/textclassifier/ITextClassifierCallback;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$CallbackWrapper;->onSuccess(Landroid/os/Bundle;)V
PLcom/android/server/textclassifier/TextClassificationManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/textclassifier/TextClassificationManagerService$Lifecycle;->onStart()V
PLcom/android/server/textclassifier/TextClassificationManagerService$Lifecycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/textclassifier/TextClassificationManagerService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/textclassifier/TextClassificationManagerService$Lifecycle;->processAnyPendingWork(I)V
PLcom/android/server/textclassifier/TextClassificationManagerService$Lifecycle;->updatePackageStateForUser(I)V
-PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;-><init>(Ljava/lang/String;Lcom/android/server/textclassifier/TextClassificationManagerService$$ExternalSyntheticLambda1;Lcom/android/server/textclassifier/TextClassificationManagerService$$ExternalSyntheticLambda11;Landroid/os/IBinder;Lcom/android/server/textclassifier/TextClassificationManagerService;Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;I)V
PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState$TextClassifierServiceConnection;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;I)V
-PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->-$$Nest$mbindIfHasPendingRequestsLocked(Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;)Z
-PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->-$$Nest$mupdatePackageStateLocked(Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState$TextClassifierServiceConnection;->init(Landroid/service/textclassifier/ITextClassifierService;Landroid/content/ComponentName;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState$TextClassifierServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->-$$Nest$mdump(Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->-$$Nest$mhandlePendingRequestsLocked(Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;)V
PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;ILjava/lang/String;Z)V
-PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;ILjava/lang/String;ZLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState-IA;)V
-PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->bindIfHasPendingRequestsLocked()Z
-PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->createBindServiceFlags(Ljava/lang/String;)I
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->bindLocked()Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->checkRequestAcceptedLocked(ILjava/lang/String;)Z
PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->isPackageInstalledForUser()Z
PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->isServiceEnabledForUser()Z
-PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->updatePackageStateLocked()V
PLcom/android/server/textclassifier/TextClassificationManagerService$SessionCache$1;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService$SessionCache;)V
-PLcom/android/server/textclassifier/TextClassificationManagerService$SessionCache$2;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService$SessionCache;I)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$SessionCache$2;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService$SessionCache;)V
PLcom/android/server/textclassifier/TextClassificationManagerService$SessionCache;-><init>(Ljava/lang/Object;)V
PLcom/android/server/textclassifier/TextClassificationManagerService$TextClassifierSettingsListener;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;Landroid/content/Context;)V
-PLcom/android/server/textclassifier/TextClassificationManagerService$TextClassifierSettingsListener;->registerObserver()V
-PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->-$$Nest$mupdatePackageStateLocked(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$TextClassifierSettingsListener;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState$$ExternalSyntheticLambda0;-><init>(Landroid/view/textclassifier/TextClassificationConstants;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState$$ExternalSyntheticLambda0;->getOrThrow()Ljava/lang/Object;
PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;I)V
-PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;ILcom/android/server/textclassifier/TextClassificationManagerService$UserState-IA;)V
-PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->bindIfHasPendingRequestsLocked()V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->dump(Lcom/android/internal/util/IndentingPrintWriter;Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;Ljava/lang/String;)V
PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->getAllServiceStatesLocked()Ljava/util/List;
-PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->updatePackageStateLocked()V
-PLcom/android/server/textclassifier/TextClassificationManagerService;->-$$Nest$fgetmContext(Lcom/android/server/textclassifier/TextClassificationManagerService;)Landroid/content/Context;
-PLcom/android/server/textclassifier/TextClassificationManagerService;->-$$Nest$fgetmDefaultTextClassifierPackage(Lcom/android/server/textclassifier/TextClassificationManagerService;)Ljava/lang/String;
-PLcom/android/server/textclassifier/TextClassificationManagerService;->-$$Nest$fgetmLock(Lcom/android/server/textclassifier/TextClassificationManagerService;)Ljava/lang/Object;
-PLcom/android/server/textclassifier/TextClassificationManagerService;->-$$Nest$fgetmSettings(Lcom/android/server/textclassifier/TextClassificationManagerService;)Landroid/view/textclassifier/TextClassificationConstants;
-PLcom/android/server/textclassifier/TextClassificationManagerService;->-$$Nest$fgetmSystemTextClassifierPackage(Lcom/android/server/textclassifier/TextClassificationManagerService;)Ljava/lang/String;
-PLcom/android/server/textclassifier/TextClassificationManagerService;->-$$Nest$mgetUserStateLocked(Lcom/android/server/textclassifier/TextClassificationManagerService;I)Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;
-PLcom/android/server/textclassifier/TextClassificationManagerService;->-$$Nest$mstartListenSettings(Lcom/android/server/textclassifier/TextClassificationManagerService;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->getServiceStateLocked(Z)Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->onTextClassifierServicePackageOverrideChangedLocked()V
PLcom/android/server/textclassifier/TextClassificationManagerService;-><clinit>()V
PLcom/android/server/textclassifier/TextClassificationManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/textclassifier/TextClassificationManagerService;-><init>(Landroid/content/Context;Lcom/android/server/textclassifier/TextClassificationManagerService-IA;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/textclassifier/TextClassificationManagerService;->getUserStateLocked(I)Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;
-PLcom/android/server/textclassifier/TextClassificationManagerService;->startListenSettings()V
-PLcom/android/server/textclassifier/TextClassificationManagerService;->startTrackingPackageChanges()V
-PLcom/android/server/textservices/TextServicesManagerInternal$1;-><init>()V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->handleRequest(Landroid/view/textclassifier/SystemTextClassifierMetadata;ZZLcom/android/internal/util/FunctionalUtils$ThrowingConsumer;Ljava/lang/String;Landroid/service/textclassifier/ITextClassifierCallback;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->onGenerateLinks(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextLinks$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->onSuggestConversationActions(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/ConversationActions$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
+PLcom/android/server/textservices/TextServicesManagerInternal$1;->getCurrentSpellCheckerForUser(I)Landroid/view/textservice/SpellCheckerInfo;
PLcom/android/server/textservices/TextServicesManagerInternal;-><clinit>()V
-PLcom/android/server/textservices/TextServicesManagerInternal;-><init>()V
-PLcom/android/server/textservices/TextServicesManagerInternal;->get()Lcom/android/server/textservices/TextServicesManagerInternal;
-PLcom/android/server/textservices/TextServicesManagerService$Lifecycle$1;-><init>(Lcom/android/server/textservices/TextServicesManagerService$Lifecycle;)V
-PLcom/android/server/textservices/TextServicesManagerService$Lifecycle$1;->getCurrentSpellCheckerForUser(I)Landroid/view/textservice/SpellCheckerInfo;
-PLcom/android/server/textservices/TextServicesManagerService$Lifecycle;->-$$Nest$fgetmService(Lcom/android/server/textservices/TextServicesManagerService$Lifecycle;)Lcom/android/server/textservices/TextServicesManagerService;
-PLcom/android/server/textservices/TextServicesManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
-PLcom/android/server/textservices/TextServicesManagerService$Lifecycle;->onStart()V
-PLcom/android/server/textservices/TextServicesManagerService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->-$$Nest$fgetmSpellCheckerList(Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;)Ljava/util/ArrayList;
-PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->-$$Nest$minitializeTextServicesData(Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;)V
-PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;-><init>(ILandroid/content/Context;)V
-PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->getCurrentSpellChecker()Landroid/view/textservice/SpellCheckerInfo;
-PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->getInt(Ljava/lang/String;I)I
-PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->getSelectedSpellChecker()Ljava/lang/String;
-PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->getSelectedSpellCheckerSubtype(I)I
-PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->initializeTextServicesData()V
-PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->putInt(Ljava/lang/String;I)V
-PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->putSelectedSpellChecker(Ljava/lang/String;)V
-PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->putSelectedSpellCheckerSubtype(I)V
-PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->putString(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->setCurrentSpellChecker(Landroid/view/textservice/SpellCheckerInfo;)V
-PLcom/android/server/textservices/TextServicesManagerService$TextServicesMonitor;-><init>(Lcom/android/server/textservices/TextServicesManagerService;)V
-PLcom/android/server/textservices/TextServicesManagerService$TextServicesMonitor;-><init>(Lcom/android/server/textservices/TextServicesManagerService;Lcom/android/server/textservices/TextServicesManagerService$TextServicesMonitor-IA;)V
-PLcom/android/server/textservices/TextServicesManagerService;->-$$Nest$mgetCurrentSpellCheckerForUser(Lcom/android/server/textservices/TextServicesManagerService;I)Landroid/view/textservice/SpellCheckerInfo;
-PLcom/android/server/textservices/TextServicesManagerService;-><clinit>()V
-PLcom/android/server/textservices/TextServicesManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/textservices/TextServicesManagerService;->findAvailSystemSpellCheckerLocked(Ljava/lang/String;Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;)Landroid/view/textservice/SpellCheckerInfo;
-PLcom/android/server/textservices/TextServicesManagerService;->getCurrentSpellCheckerForUser(I)Landroid/view/textservice/SpellCheckerInfo;
-PLcom/android/server/textservices/TextServicesManagerService;->getCurrentSpellCheckerSubtype(IZ)Landroid/view/textservice/SpellCheckerSubtype;
-PLcom/android/server/textservices/TextServicesManagerService;->getDataFromCallingUserIdLocked(I)Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;
-PLcom/android/server/textservices/TextServicesManagerService;->initializeInternalStateLocked(I)V
-PLcom/android/server/textservices/TextServicesManagerService;->onUnlockUser(I)V
-PLcom/android/server/textservices/TextServicesManagerService;->setCurrentSpellCheckerLocked(Landroid/view/textservice/SpellCheckerInfo;Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;)V
-PLcom/android/server/textservices/TextServicesManagerService;->verifyUser(I)V
-PLcom/android/server/texttospeech/TextToSpeechManagerPerUserService;-><clinit>()V
-PLcom/android/server/texttospeech/TextToSpeechManagerPerUserService;-><init>(Lcom/android/server/texttospeech/TextToSpeechManagerService;Ljava/lang/Object;I)V
+PLcom/android/server/texttospeech/TextToSpeechManagerPerUserService$TextToSpeechSessionConnection$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/texttospeech/TextToSpeechManagerPerUserService$TextToSpeechSessionConnection$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/texttospeech/TextToSpeechManagerPerUserService$TextToSpeechSessionConnection;)V
+PLcom/android/server/texttospeech/TextToSpeechManagerPerUserService$TextToSpeechSessionConnection$$ExternalSyntheticLambda1;->binderDied()V
+PLcom/android/server/texttospeech/TextToSpeechManagerPerUserService$TextToSpeechSessionConnection$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/texttospeech/TextToSpeechManagerPerUserService$TextToSpeechSessionConnection;)V
+PLcom/android/server/texttospeech/TextToSpeechManagerPerUserService$TextToSpeechSessionConnection$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/texttospeech/TextToSpeechManagerPerUserService$TextToSpeechSessionConnection$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/texttospeech/TextToSpeechManagerPerUserService$TextToSpeechSessionConnection;)V
+PLcom/android/server/texttospeech/TextToSpeechManagerPerUserService$TextToSpeechSessionConnection$1;-><init>(Lcom/android/server/texttospeech/TextToSpeechManagerPerUserService$TextToSpeechSessionConnection;)V
+PLcom/android/server/texttospeech/TextToSpeechManagerPerUserService$TextToSpeechSessionConnection$1;->disconnect()V
+PLcom/android/server/texttospeech/TextToSpeechManagerPerUserService$TextToSpeechSessionConnection;->$r8$lambda$3-yVGMsgcEZQX1SgaZp7W8CoFnU(Lcom/android/server/texttospeech/TextToSpeechManagerPerUserService$TextToSpeechSessionConnection;Landroid/speech/tts/ITextToSpeechService;)V
+PLcom/android/server/texttospeech/TextToSpeechManagerPerUserService$TextToSpeechSessionConnection;-><init>(Landroid/content/Context;ILjava/lang/String;Landroid/speech/tts/ITextToSpeechSessionCallback;)V
+PLcom/android/server/texttospeech/TextToSpeechManagerPerUserService$TextToSpeechSessionConnection;->getAutoDisconnectTimeoutMs()J
+PLcom/android/server/texttospeech/TextToSpeechManagerPerUserService$TextToSpeechSessionConnection;->onServiceConnectionStatusChanged(Landroid/os/IInterface;Z)V
+PLcom/android/server/texttospeech/TextToSpeechManagerPerUserService$TextToSpeechSessionConnection;->start(Landroid/content/Context;ILjava/lang/String;Landroid/speech/tts/ITextToSpeechSessionCallback;)V
+PLcom/android/server/texttospeech/TextToSpeechManagerPerUserService$TextToSpeechSessionConnection;->unbindEngine(Ljava/lang/String;)V
PLcom/android/server/texttospeech/TextToSpeechManagerService$TextToSpeechManagerServiceStub;-><init>(Lcom/android/server/texttospeech/TextToSpeechManagerService;)V
-PLcom/android/server/texttospeech/TextToSpeechManagerService$TextToSpeechManagerServiceStub;-><init>(Lcom/android/server/texttospeech/TextToSpeechManagerService;Lcom/android/server/texttospeech/TextToSpeechManagerService$TextToSpeechManagerServiceStub-IA;)V
-PLcom/android/server/texttospeech/TextToSpeechManagerService;-><clinit>()V
+PLcom/android/server/texttospeech/TextToSpeechManagerService$TextToSpeechManagerServiceStub;->createSession(Ljava/lang/String;Landroid/speech/tts/ITextToSpeechSessionCallback;)V
PLcom/android/server/texttospeech/TextToSpeechManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/texttospeech/TextToSpeechManagerService;->newServiceLocked(IZ)Lcom/android/server/infra/AbstractPerUserSystemService;
-PLcom/android/server/texttospeech/TextToSpeechManagerService;->newServiceLocked(IZ)Lcom/android/server/texttospeech/TextToSpeechManagerPerUserService;
PLcom/android/server/texttospeech/TextToSpeechManagerService;->onStart()V
-PLcom/android/server/timedetector/ConfigurationInternal$$ExternalSyntheticLambda0;-><init>()V
PLcom/android/server/timedetector/ConfigurationInternal$$ExternalSyntheticLambda0;->apply(I)Ljava/lang/Object;
-PLcom/android/server/timedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmAutoDetectionEnabledSetting(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)Z
-PLcom/android/server/timedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmAutoDetectionSupported(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)Z
-PLcom/android/server/timedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmAutoSuggestionLowerBound(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)Ljava/time/Instant;
-PLcom/android/server/timedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmManualSuggestionLowerBound(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)Ljava/time/Instant;
-PLcom/android/server/timedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmOriginPriorities(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)[I
-PLcom/android/server/timedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmSuggestionUpperBound(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)Ljava/time/Instant;
-PLcom/android/server/timedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmSystemClockConfidenceThresholdMillis(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)I
-PLcom/android/server/timedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmSystemClockUpdateThresholdMillis(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)I
-PLcom/android/server/timedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmUserConfigAllowed(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)Z
-PLcom/android/server/timedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmUserId(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)I
PLcom/android/server/timedetector/ConfigurationInternal$Builder;-><init>(I)V
-PLcom/android/server/timedetector/ConfigurationInternal$Builder;->build()Lcom/android/server/timedetector/ConfigurationInternal;
-PLcom/android/server/timedetector/ConfigurationInternal$Builder;->setAutoDetectionEnabledSetting(Z)Lcom/android/server/timedetector/ConfigurationInternal$Builder;
-PLcom/android/server/timedetector/ConfigurationInternal$Builder;->setAutoDetectionSupported(Z)Lcom/android/server/timedetector/ConfigurationInternal$Builder;
-PLcom/android/server/timedetector/ConfigurationInternal$Builder;->setAutoSuggestionLowerBound(Ljava/time/Instant;)Lcom/android/server/timedetector/ConfigurationInternal$Builder;
-PLcom/android/server/timedetector/ConfigurationInternal$Builder;->setManualSuggestionLowerBound(Ljava/time/Instant;)Lcom/android/server/timedetector/ConfigurationInternal$Builder;
-PLcom/android/server/timedetector/ConfigurationInternal$Builder;->setOriginPriorities([I)Lcom/android/server/timedetector/ConfigurationInternal$Builder;
-PLcom/android/server/timedetector/ConfigurationInternal$Builder;->setSuggestionUpperBound(Ljava/time/Instant;)Lcom/android/server/timedetector/ConfigurationInternal$Builder;
-PLcom/android/server/timedetector/ConfigurationInternal$Builder;->setSystemClockConfidenceThresholdMillis(I)Lcom/android/server/timedetector/ConfigurationInternal$Builder;
-PLcom/android/server/timedetector/ConfigurationInternal$Builder;->setSystemClockUpdateThresholdMillis(I)Lcom/android/server/timedetector/ConfigurationInternal$Builder;
-PLcom/android/server/timedetector/ConfigurationInternal$Builder;->setUserConfigAllowed(Z)Lcom/android/server/timedetector/ConfigurationInternal$Builder;
PLcom/android/server/timedetector/ConfigurationInternal;-><init>(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)V
-PLcom/android/server/timedetector/ConfigurationInternal;-><init>(Lcom/android/server/timedetector/ConfigurationInternal$Builder;Lcom/android/server/timedetector/ConfigurationInternal-IA;)V
+PLcom/android/server/timedetector/ConfigurationInternal;->createCapabilitiesAndConfig()Landroid/app/time/TimeCapabilitiesAndConfig;
PLcom/android/server/timedetector/ConfigurationInternal;->equals(Ljava/lang/Object;)Z
PLcom/android/server/timedetector/ConfigurationInternal;->getAutoDetectionEnabledBehavior()Z
-PLcom/android/server/timedetector/ConfigurationInternal;->isAutoDetectionSupported()Z
-HPLcom/android/server/timedetector/ConfigurationInternal;->toString()Ljava/lang/String;
+PLcom/android/server/timedetector/ConfigurationInternal;->toString()Ljava/lang/String;
PLcom/android/server/timedetector/EnvironmentImpl;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
-PLcom/android/server/timedetector/EnvironmentImpl;->addDebugLogEntry(Ljava/lang/String;)V
+PLcom/android/server/timedetector/EnvironmentImpl;->acquireWakeLock()V
+PLcom/android/server/timedetector/EnvironmentImpl;->checkWakeLockHeld()V
+PLcom/android/server/timedetector/EnvironmentImpl;->dumpDebugLog(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/timedetector/EnvironmentImpl;->releaseWakeLock()V
+PLcom/android/server/timedetector/EnvironmentImpl;->systemClockConfidence()I
+PLcom/android/server/timedetector/GnssTimeUpdateService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/timedetector/GnssTimeUpdateService;)V
+PLcom/android/server/timedetector/GnssTimeUpdateService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/timedetector/GnssTimeUpdateService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/timedetector/GnssTimeUpdateService$Lifecycle;->onStart()V
+PLcom/android/server/timedetector/GnssTimeUpdateService;-><clinit>()V
+PLcom/android/server/timedetector/GnssTimeUpdateService;-><init>(Landroid/content/Context;Landroid/app/AlarmManager;Landroid/location/LocationManager;Landroid/location/LocationManagerInternal;Lcom/android/server/timedetector/TimeDetectorInternal;)V
+PLcom/android/server/timedetector/GnssTimeUpdateService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/timedetector/GnssTimeUpdateService;->logDebug(Ljava/lang/String;)V
+PLcom/android/server/timedetector/GnssTimeUpdateService;->startGnssListeningInternal()Z
+PLcom/android/server/timedetector/GnssTimeUpdateService;->startGnssListeningLocked()V
+PLcom/android/server/timedetector/NetworkTimeSuggestion;-><init>(Landroid/app/time/UnixEpochTime;I)V
+PLcom/android/server/timedetector/NetworkTimeSuggestion;->addDebugInfo([Ljava/lang/String;)V
+PLcom/android/server/timedetector/NetworkTimeSuggestion;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/timedetector/NetworkTimeSuggestion;->toString()Ljava/lang/String;
+PLcom/android/server/timedetector/NetworkTimeUpdateService$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
+PLcom/android/server/timedetector/NetworkTimeUpdateService$1;-><init>(Lcom/android/server/timedetector/NetworkTimeUpdateService;Landroid/app/AlarmManager;Lcom/android/server/timedetector/TimeDetectorInternal;)V
+PLcom/android/server/timedetector/NetworkTimeUpdateService$AutoTimeSettingObserver;-><init>(Lcom/android/server/timedetector/NetworkTimeUpdateService;Landroid/os/Handler;Landroid/content/Context;)V
+PLcom/android/server/timedetector/NetworkTimeUpdateService$EngineImpl;-><init>(Ljava/util/function/Supplier;IIILandroid/util/NtpTrustedTime;)V
+PLcom/android/server/timedetector/NetworkTimeUpdateService$EngineImpl;->formatElapsedRealtimeMillis(J)Ljava/lang/String;
+PLcom/android/server/timedetector/NetworkTimeUpdateService$EngineImpl;->logToDebugAndDumpsys(Ljava/lang/String;)V
+PLcom/android/server/timedetector/NetworkTimeUpdateService$EngineImpl;->makeNetworkTimeSuggestion(Landroid/util/NtpTrustedTime$TimeResult;Ljava/lang/String;Lcom/android/server/timedetector/NetworkTimeUpdateService$1;)V
+PLcom/android/server/timedetector/NetworkTimeUpdateService$EngineImpl;->refreshAndRescheduleIfRequired(Landroid/net/Network;Ljava/lang/String;Lcom/android/server/timedetector/NetworkTimeUpdateService$1;)V
+PLcom/android/server/timedetector/NetworkTimeUpdateService$NetworkConnectivityCallback;-><init>(Lcom/android/server/timedetector/NetworkTimeUpdateService;)V
+PLcom/android/server/timedetector/NetworkTimeUpdateService$NetworkConnectivityCallback;->onAvailable(Landroid/net/Network;)V
+PLcom/android/server/timedetector/NetworkTimeUpdateService$NetworkConnectivityCallback;->onLost(Landroid/net/Network;)V
+PLcom/android/server/timedetector/NetworkTimeUpdateService$ScheduledRefreshAlarmListener;-><init>(Lcom/android/server/timedetector/NetworkTimeUpdateService;)V
+PLcom/android/server/timedetector/NetworkTimeUpdateService$ScheduledRefreshAlarmListener;->onAlarm()V
+PLcom/android/server/timedetector/NetworkTimeUpdateService$ScheduledRefreshAlarmListener;->run()V
+PLcom/android/server/timedetector/NetworkTimeUpdateService;->-$$Nest$monPollNetworkTime(Lcom/android/server/timedetector/NetworkTimeUpdateService;Ljava/lang/String;)V
+PLcom/android/server/timedetector/NetworkTimeUpdateService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/timedetector/NetworkTimeUpdateService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/timedetector/ServerFlags$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/timedetector/ServerFlags;)V
PLcom/android/server/timedetector/ServerFlags;-><clinit>()V
PLcom/android/server/timedetector/ServerFlags;-><init>(Landroid/content/Context;)V
PLcom/android/server/timedetector/ServerFlags;->addListener(Lcom/android/server/timezonedetector/StateChangeListener;Ljava/util/Set;)V
-PLcom/android/server/timedetector/ServerFlags;->getBoolean(Ljava/lang/String;Z)Z
+PLcom/android/server/timedetector/ServerFlags;->getDurationFromMillis(Ljava/lang/String;Ljava/time/Duration;)Ljava/time/Duration;
PLcom/android/server/timedetector/ServerFlags;->getInstance(Landroid/content/Context;)Lcom/android/server/timedetector/ServerFlags;
-PLcom/android/server/timedetector/ServerFlags;->getOptionalBoolean(Ljava/lang/String;)Ljava/util/Optional;
-PLcom/android/server/timedetector/ServerFlags;->getOptionalInstant(Ljava/lang/String;)Ljava/util/Optional;
-PLcom/android/server/timedetector/ServerFlags;->getOptionalString(Ljava/lang/String;)Ljava/util/Optional;
-PLcom/android/server/timedetector/ServerFlags;->getOptionalStringArray(Ljava/lang/String;)Ljava/util/Optional;
-PLcom/android/server/timedetector/ServerFlags;->parseOptionalBoolean(Ljava/lang/String;)Ljava/util/Optional;
PLcom/android/server/timedetector/ServiceConfigAccessorImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/timedetector/ServiceConfigAccessorImpl;)V
PLcom/android/server/timedetector/ServiceConfigAccessorImpl$1;-><init>(Lcom/android/server/timedetector/ServiceConfigAccessorImpl;)V
PLcom/android/server/timedetector/ServiceConfigAccessorImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/timedetector/ServiceConfigAccessorImpl$2;-><init>(Lcom/android/server/timedetector/ServiceConfigAccessorImpl;Landroid/os/Handler;)V
-PLcom/android/server/timedetector/ServiceConfigAccessorImpl$BaseOriginPrioritiesSupplier;-><init>()V
-PLcom/android/server/timedetector/ServiceConfigAccessorImpl$BaseOriginPrioritiesSupplier;-><init>(Lcom/android/server/timedetector/ServiceConfigAccessorImpl$BaseOriginPrioritiesSupplier-IA;)V
-PLcom/android/server/timedetector/ServiceConfigAccessorImpl$BaseOriginPrioritiesSupplier;->get()[I
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl$3$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/timedetector/ServiceConfigAccessorImpl$3;ILandroid/os/Bundle;Landroid/os/Bundle;)V
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl$3$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl$3;-><init>(Lcom/android/server/timedetector/ServiceConfigAccessorImpl;Landroid/os/Handler;)V
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl$3;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
PLcom/android/server/timedetector/ServiceConfigAccessorImpl$ConfigOriginPrioritiesSupplier;-><init>(Landroid/content/Context;)V
-PLcom/android/server/timedetector/ServiceConfigAccessorImpl$ConfigOriginPrioritiesSupplier;-><init>(Landroid/content/Context;Lcom/android/server/timedetector/ServiceConfigAccessorImpl$ConfigOriginPrioritiesSupplier-IA;)V
-PLcom/android/server/timedetector/ServiceConfigAccessorImpl$ConfigOriginPrioritiesSupplier;->lookupPriorityStrings()[Ljava/lang/String;
-PLcom/android/server/timedetector/ServiceConfigAccessorImpl$ServerFlagsOriginPrioritiesSupplier;-><init>(Lcom/android/server/timedetector/ServerFlags;)V
-PLcom/android/server/timedetector/ServiceConfigAccessorImpl$ServerFlagsOriginPrioritiesSupplier;-><init>(Lcom/android/server/timedetector/ServerFlags;Lcom/android/server/timedetector/ServiceConfigAccessorImpl$ServerFlagsOriginPrioritiesSupplier-IA;)V
-PLcom/android/server/timedetector/ServiceConfigAccessorImpl$ServerFlagsOriginPrioritiesSupplier;->lookupPriorityStrings()[Ljava/lang/String;
-PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->-$$Nest$mhandleConfigurationInternalChangeOnMainThread(Lcom/android/server/timedetector/ServiceConfigAccessorImpl;)V
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl$ConfigOriginPrioritiesSupplier;-><init>(Lcom/android/server/timedetector/ServerFlags;)V
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl$ConfigOriginPrioritiesSupplier;->get()[I
PLcom/android/server/timedetector/ServiceConfigAccessorImpl;-><clinit>()V
PLcom/android/server/timedetector/ServiceConfigAccessorImpl;-><init>(Landroid/content/Context;)V
-PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->addConfigurationInternalChangeListener(Lcom/android/server/timezonedetector/StateChangeListener;)V
-PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->getAutoDetectionEnabledSetting()Z
-PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->getAutoSuggestionLowerBound()Ljava/time/Instant;
PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->getConfigurationInternal(I)Lcom/android/server/timedetector/ConfigurationInternal;
-PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->getCurrentUserConfigurationInternal()Lcom/android/server/timedetector/ConfigurationInternal;
-PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->getInstance(Landroid/content/Context;)Lcom/android/server/timedetector/ServiceConfigAccessor;
-PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->getOriginPriorities()[I
-PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->getSystemClockConfidenceUpgradeThresholdMillis()I
-PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->getSystemClockUpdateThresholdMillis()I
PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->handleConfigurationInternalChangeOnMainThread()V
PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->isAutoDetectionSupported()Z
-PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->isUserConfigAllowed(I)Z
-PLcom/android/server/timedetector/TimeDetectorInternalImpl;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/timezonedetector/CurrentUserIdentityInjector;Lcom/android/server/timedetector/ServiceConfigAccessor;Lcom/android/server/timedetector/TimeDetectorStrategy;)V
-PLcom/android/server/timedetector/TimeDetectorInternalImpl;->addNetworkTimeUpdateListener(Lcom/android/server/timezonedetector/StateChangeListener;)V
-PLcom/android/server/timedetector/TimeDetectorInternalImpl;->getLatestNetworkSuggestion()Lcom/android/server/timedetector/NetworkTimeSuggestion;
+PLcom/android/server/timedetector/TimeDetectorInternalImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/timedetector/TimeDetectorInternalImpl;Ljava/lang/Object;I)V
+PLcom/android/server/timedetector/TimeDetectorInternalImpl$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/timedetector/TimeDetectorInternalImpl;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/timedetector/ServiceConfigAccessorImpl;Lcom/android/server/timedetector/TimeDetectorStrategyImpl;)V
+PLcom/android/server/timedetector/TimeDetectorService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/timedetector/TimeDetectorService;Ljava/lang/Object;I)V
+PLcom/android/server/timedetector/TimeDetectorService$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/timedetector/TimeDetectorService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/timedetector/TimeDetectorService;)V
PLcom/android/server/timedetector/TimeDetectorService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/timedetector/TimeDetectorService$Lifecycle;->onStart()V
PLcom/android/server/timedetector/TimeDetectorService;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/timezonedetector/CallerIdentityInjector;Lcom/android/server/timedetector/TimeDetectorStrategy;Landroid/util/NtpTrustedTime;)V
-HPLcom/android/server/timedetector/TimeDetectorService;->latestNetworkTime()Landroid/app/time/UnixEpochTime;
+PLcom/android/server/timedetector/TimeDetectorService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/timedetector/TimeDetectorService;->suggestExternalTime(Landroid/app/time/ExternalTimeSuggestion;)V
PLcom/android/server/timedetector/TimeDetectorStrategy;->originToString(I)Ljava/lang/String;
PLcom/android/server/timedetector/TimeDetectorStrategy;->stringToOrigin(Ljava/lang/String;)I
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/timezonedetector/StateChangeListener;)V
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/timedetector/TimeDetectorStrategyImpl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/timedetector/TimeDetectorStrategyImpl;)V
PLcom/android/server/timedetector/TimeDetectorStrategyImpl$$ExternalSyntheticLambda1;->onChange()V
-PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->$r8$lambda$Ev1hBuSMiy0SsdTUkkpw6YwrYmA(Lcom/android/server/timedetector/TimeDetectorStrategyImpl;)V
PLcom/android/server/timedetector/TimeDetectorStrategyImpl;-><init>(Lcom/android/server/timedetector/TimeDetectorStrategyImpl$Environment;Lcom/android/server/timedetector/ServiceConfigAccessor;)V
-PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->addChangeListener(Lcom/android/server/timezonedetector/StateChangeListener;)V
-PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->addDebugLogEntry(Ljava/lang/String;)V
-PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->addNetworkTimeUpdateListener(Lcom/android/server/timezonedetector/StateChangeListener;)V
-PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->create(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/timedetector/ServiceConfigAccessor;)Lcom/android/server/timedetector/TimeDetectorStrategy;
-HPLcom/android/server/timedetector/TimeDetectorStrategyImpl;->getLatestNetworkSuggestion()Lcom/android/server/timedetector/NetworkTimeSuggestion;
-PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->handleConfigurationInternalMaybeChanged()V
-PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->notifyStateChangeListenersAsynchronously()V
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->doAutoTimeDetection(Ljava/lang/String;)V
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->dump(Landroid/util/IndentingPrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->findLatestValidExternalSuggestion()Landroid/app/time/ExternalTimeSuggestion;
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->findLatestValidNetworkSuggestion()Lcom/android/server/timedetector/NetworkTimeSuggestion;
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->notifyNetworkTimeUpdateListenersAsynchronously()V
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->suggestNetworkTime(Lcom/android/server/timedetector/NetworkTimeSuggestion;)V
PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->updateCurrentConfigurationInternalIfRequired(Ljava/lang/String;)V
-PLcom/android/server/timezonedetector/ArrayMapWithHistory;-><init>(I)V
-PLcom/android/server/timezonedetector/ArrayMapWithHistory;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/timezonedetector/CallerIdentityInjector$Real;-><init>()V
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->validateAutoSuggestionTime(Landroid/app/time/UnixEpochTime;Ljava/lang/Object;)Z
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->validateSuggestionAgainstLowerBound(Landroid/app/time/UnixEpochTime;Ljava/lang/Object;Ljava/time/Instant;)Z
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->validateSuggestionCommon(Landroid/app/time/UnixEpochTime;Ljava/lang/Object;)Z
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->validateSuggestionUnixEpochTime(JLandroid/app/time/UnixEpochTime;)Z
+PLcom/android/server/timezonedetector/ArrayMapWithHistory;->dump(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/timezonedetector/ArrayMapWithHistory;->put(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/timezonedetector/ArrayMapWithHistory;->valueAt(I)Ljava/lang/Object;
PLcom/android/server/timezonedetector/CallerIdentityInjector;-><clinit>()V
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmAutoDetectionEnabledSetting(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)Z
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmEnhancedMetricsCollectionEnabled(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)Z
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmGeoDetectionEnabledSetting(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)Z
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmGeoDetectionRunInBackgroundEnabled(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)Z
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmGeoDetectionSupported(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)Z
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmLocationEnabledSetting(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)Z
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmTelephonyDetectionSupported(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)Z
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmTelephonyFallbackSupported(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)Z
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmUserConfigAllowed(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)Z
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmUserId(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)Ljava/lang/Integer;
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;-><init>()V
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->build()Lcom/android/server/timezonedetector/ConfigurationInternal;
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->setAutoDetectionEnabledSetting(Z)Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->setEnhancedMetricsCollectionEnabled(Z)Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->setGeoDetectionEnabledSetting(Z)Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->setGeoDetectionFeatureSupported(Z)Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->setGeoDetectionRunInBackgroundEnabled(Z)Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->setLocationEnabledSetting(Z)Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->setTelephonyDetectionFeatureSupported(Z)Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->setTelephonyFallbackSupported(Z)Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->setUserConfigAllowed(Z)Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;
-PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->setUserId(I)Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;
PLcom/android/server/timezonedetector/ConfigurationInternal;-><init>(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)V
-PLcom/android/server/timezonedetector/ConfigurationInternal;-><init>(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;Lcom/android/server/timezonedetector/ConfigurationInternal-IA;)V
+PLcom/android/server/timezonedetector/ConfigurationInternal;->asCapabilities()Landroid/app/time/TimeZoneCapabilities;
PLcom/android/server/timezonedetector/ConfigurationInternal;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/timezonedetector/ConfigurationInternal;->getAutoDetectionEnabledBehavior()Z
-PLcom/android/server/timezonedetector/ConfigurationInternal;->getAutoDetectionEnabledSetting()Z
PLcom/android/server/timezonedetector/ConfigurationInternal;->getDetectionMode()I
PLcom/android/server/timezonedetector/ConfigurationInternal;->isAutoDetectionSupported()Z
-PLcom/android/server/timezonedetector/ConfigurationInternal;->isGeoDetectionSupported()Z
-PLcom/android/server/timezonedetector/ConfigurationInternal;->isTelephonyDetectionSupported()Z
+PLcom/android/server/timezonedetector/ConfigurationInternal;->isGeoDetectionExecutionEnabled()Z
PLcom/android/server/timezonedetector/ConfigurationInternal;->toString()Ljava/lang/String;
-PLcom/android/server/timezonedetector/CurrentUserIdentityInjector$Real;-><init>()V
-PLcom/android/server/timezonedetector/CurrentUserIdentityInjector;-><clinit>()V
PLcom/android/server/timezonedetector/DeviceActivityMonitorImpl$1;-><init>(Lcom/android/server/timezonedetector/DeviceActivityMonitorImpl;Landroid/os/Handler;Landroid/content/ContentResolver;)V
PLcom/android/server/timezonedetector/DeviceActivityMonitorImpl;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
-PLcom/android/server/timezonedetector/DeviceActivityMonitorImpl;->addListener(Lcom/android/server/timezonedetector/DeviceActivityMonitor$Listener;)V
-PLcom/android/server/timezonedetector/DeviceActivityMonitorImpl;->create(Landroid/content/Context;Landroid/os/Handler;)Lcom/android/server/timezonedetector/DeviceActivityMonitor;
+PLcom/android/server/timezonedetector/DeviceActivityMonitorImpl;->dump(Landroid/util/IndentingPrintWriter;[Ljava/lang/String;)V
PLcom/android/server/timezonedetector/EnvironmentImpl;-><init>(Landroid/os/Handler;)V
PLcom/android/server/timezonedetector/EnvironmentImpl;->addDebugLogEntry(Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/EnvironmentImpl;->dumpDebugLog(Ljava/io/PrintWriter;)V
PLcom/android/server/timezonedetector/EnvironmentImpl;->elapsedRealtimeMillis()J
-PLcom/android/server/timezonedetector/ReferenceWithHistory;-><init>(I)V
+PLcom/android/server/timezonedetector/EnvironmentImpl;->getDeviceTimeZone()Ljava/lang/String;
+PLcom/android/server/timezonedetector/EnvironmentImpl;->getDeviceTimeZoneConfidence()I
+PLcom/android/server/timezonedetector/EnvironmentImpl;->runAsync(Lcom/android/server/timedetector/TimeDetectorStrategyImpl$$ExternalSyntheticLambda0;)V
+PLcom/android/server/timezonedetector/LocationAlgorithmEvent;-><init>(Landroid/app/time/LocationTimeZoneAlgorithmStatus;Lcom/android/server/timezonedetector/GeolocationTimeZoneSuggestion;)V
+PLcom/android/server/timezonedetector/LocationAlgorithmEvent;->addDebugInfo([Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/LocationAlgorithmEvent;->toString()Ljava/lang/String;
+PLcom/android/server/timezonedetector/ReferenceWithHistory;->dump(Landroid/util/IndentingPrintWriter;)V
PLcom/android/server/timezonedetector/ReferenceWithHistory;->get()Ljava/lang/Object;
PLcom/android/server/timezonedetector/ReferenceWithHistory;->set(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/timezonedetector/ReferenceWithHistory;->toString()Ljava/lang/String;
PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/timezonedetector/ServiceConfigAccessorImpl;)V
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/timezonedetector/ServiceConfigAccessorImpl$3;ILandroid/os/Bundle;Landroid/os/Bundle;)V
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl$$ExternalSyntheticLambda1;->run()V
PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl$1;-><init>(Lcom/android/server/timezonedetector/ServiceConfigAccessorImpl;)V
PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl$2;-><init>(Lcom/android/server/timezonedetector/ServiceConfigAccessorImpl;Landroid/os/Handler;)V
-PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->-$$Nest$mhandleConfigurationInternalChangeOnMainThread(Lcom/android/server/timezonedetector/ServiceConfigAccessorImpl;)V
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl$2;->onChange(Z)V
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl$3;-><init>(Lcom/android/server/timezonedetector/ServiceConfigAccessorImpl;Landroid/os/Handler;)V
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl$3;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;-><clinit>()V
PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;-><init>(Landroid/content/Context;)V
-PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->addConfigurationInternalChangeListener(Lcom/android/server/timezonedetector/StateChangeListener;)V
PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->getAutoDetectionEnabledSetting()Z
-PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->getConfigBoolean(I)Z
PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->getConfigurationInternal(I)Lcom/android/server/timezonedetector/ConfigurationInternal;
PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->getCurrentUserConfigurationInternal()Lcom/android/server/timezonedetector/ConfigurationInternal;
PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->getGeoDetectionEnabledSetting(I)Z
-PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->getGeoDetectionRunInBackgroundEnabled()Z
-PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->getGeoDetectionSettingEnabledOverride()Ljava/util/Optional;
PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->getInstance(Landroid/content/Context;)Lcom/android/server/timezonedetector/ServiceConfigAccessor;
-PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->getLocationEnabledSetting(I)Z
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->getPrimaryLocationTimeZoneProviderMode()Ljava/lang/String;
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->getSecondaryLocationTimeZoneProviderMode()Ljava/lang/String;
PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->handleConfigurationInternalChangeOnMainThread()V
-PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->isEnhancedMetricsCollectionEnabled()Z
-PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->isGeoDetectionEnabledForUsersByDefault()Z
PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->isGeoTimeZoneDetectionFeatureSupported()Z
-PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->isGeoTimeZoneDetectionFeatureSupportedInConfig()Z
-PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->isTelephonyFallbackSupported()Z
PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->isTelephonyTimeZoneDetectionFeatureSupported()Z
-PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->isUserConfigAllowed(I)Z
-PLcom/android/server/timezonedetector/TimeZoneDetectorInternalImpl;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/timezonedetector/CurrentUserIdentityInjector;Lcom/android/server/timezonedetector/TimeZoneDetectorStrategy;)V
-PLcom/android/server/timezonedetector/TimeZoneDetectorService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/timezonedetector/TimeZoneDetectorService;Landroid/app/timezonedetector/TelephonyTimeZoneSuggestion;)V
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->storeConfiguration(ILandroid/app/time/TimeZoneConfiguration;Landroid/app/time/TimeZoneConfiguration;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorInternalImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/timezonedetector/TimeZoneDetectorInternalImpl;Lcom/android/server/timezonedetector/LocationAlgorithmEvent;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorInternalImpl$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/timezonedetector/TimeZoneDetectorInternalImpl;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/timezonedetector/TimeZoneDetectorService;Ljava/lang/Object;I)V
PLcom/android/server/timezonedetector/TimeZoneDetectorService$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/timezonedetector/TimeZoneDetectorService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/timezonedetector/TimeZoneDetectorService;)V
-PLcom/android/server/timezonedetector/TimeZoneDetectorService$Lifecycle$1;-><init>(Lcom/android/server/timezonedetector/TimeZoneDetectorService$Lifecycle;Lcom/android/server/timezonedetector/TimeZoneDetectorStrategy;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService$$ExternalSyntheticLambda1;->onChange()V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/timezonedetector/TimeZoneDetectorService;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService$Lifecycle$1;-><init>(Lcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;)V
PLcom/android/server/timezonedetector/TimeZoneDetectorService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/timezonedetector/TimeZoneDetectorService$Lifecycle;->onStart()V
-PLcom/android/server/timezonedetector/TimeZoneDetectorService;->$r8$lambda$J5BTZ2OuJb4gvpwYS14bI1HdOpU(Lcom/android/server/timezonedetector/TimeZoneDetectorService;Landroid/app/timezonedetector/TelephonyTimeZoneSuggestion;)V
PLcom/android/server/timezonedetector/TimeZoneDetectorService;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/timezonedetector/CallerIdentityInjector;Lcom/android/server/timezonedetector/TimeZoneDetectorStrategy;)V
-PLcom/android/server/timezonedetector/TimeZoneDetectorService;->addDumpable(Lcom/android/server/timezonedetector/Dumpable;)V
-PLcom/android/server/timezonedetector/TimeZoneDetectorService;->enforceSuggestTelephonyTimeZonePermission()V
-PLcom/android/server/timezonedetector/TimeZoneDetectorService;->lambda$suggestTelephonyTimeZone$2(Landroid/app/timezonedetector/TelephonyTimeZoneSuggestion;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService;->enforceManageTimeZoneDetectorPermission()V
PLcom/android/server/timezonedetector/TimeZoneDetectorService;->suggestTelephonyTimeZone(Landroid/app/timezonedetector/TelephonyTimeZoneSuggestion;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService;->updateConfiguration(ILandroid/app/time/TimeZoneConfiguration;)Z
+PLcom/android/server/timezonedetector/TimeZoneDetectorService;->updateConfiguration(Landroid/app/time/TimeZoneConfiguration;)Z
PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;)V
PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl$$ExternalSyntheticLambda0;->onChange()V
PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl$QualifiedTelephonyTimeZoneSuggestion;-><init>(Landroid/app/timezonedetector/TelephonyTimeZoneSuggestion;I)V
-PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->$r8$lambda$hV1MXuLGe7uQyLHj3fxKJrKy5nM(Lcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl$QualifiedTelephonyTimeZoneSuggestion;->toString()Ljava/lang/String;
PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;-><init>(Lcom/android/server/timezonedetector/ServiceConfigAccessor;Lcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl$Environment;)V
-PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->addChangeListener(Lcom/android/server/timezonedetector/StateChangeListener;)V
-PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->create(Landroid/os/Handler;Lcom/android/server/timezonedetector/ServiceConfigAccessor;)Lcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;
-PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->createLocationAlgorithmStatus(Lcom/android/server/timezonedetector/ConfigurationInternal;Lcom/android/server/timezonedetector/LocationAlgorithmEvent;)Landroid/app/time/LocationTimeZoneAlgorithmStatus;
-PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->createTelephonyAlgorithmStatus(Lcom/android/server/timezonedetector/ConfigurationInternal;)Landroid/app/time/TelephonyTimeZoneAlgorithmStatus;
-PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->createTimeZoneDetectorStatus(Lcom/android/server/timezonedetector/ConfigurationInternal;Lcom/android/server/timezonedetector/LocationAlgorithmEvent;)Landroid/app/time/TimeZoneDetectorStatus;
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->disableTelephonyFallbackIfNeeded()V
PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->doAutoTimeZoneDetection(Lcom/android/server/timezonedetector/ConfigurationInternal;Ljava/lang/String;)V
-PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->handleConfigurationInternalMaybeChanged()V
-PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->logTimeZoneDebugInfo(Ljava/lang/String;)V
-PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->notifyStateChangeListenersAsynchronously()V
-PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->scoreTelephonySuggestion(Landroid/app/timezonedetector/TelephonyTimeZoneSuggestion;)I
-PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->suggestTelephonyTimeZone(Landroid/app/timezonedetector/TelephonyTimeZoneSuggestion;)V
-PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->updateCurrentConfigurationInternalIfRequired(Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->doTelephonyTimeZoneDetection(Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->dump(Landroid/util/IndentingPrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->findBestTelephonySuggestion()Lcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl$QualifiedTelephonyTimeZoneSuggestion;
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->handleLocationAlgorithmEvent(Lcom/android/server/timezonedetector/LocationAlgorithmEvent;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->notifyStateChangeListenersAsynchronously$1()V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->updateConfiguration(ILandroid/app/time/TimeZoneConfiguration;)Z
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->updateCurrentConfigurationInternalIfRequired$1(Ljava/lang/String;)V
PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->updateDetectorStatus()Z
+PLcom/android/server/timezonedetector/location/BinderLocationTimeZoneProvider$1;-><init>(Lcom/android/server/timezonedetector/location/BinderLocationTimeZoneProvider;)V
+PLcom/android/server/timezonedetector/location/BinderLocationTimeZoneProvider;-><init>(Lcom/android/server/timezonedetector/location/RealProviderMetricsLogger;Lcom/android/server/timezonedetector/location/HandlerThreadingDomain;Ljava/lang/String;Lcom/android/server/timezonedetector/location/RealLocationTimeZoneProviderProxy;Z)V
+PLcom/android/server/timezonedetector/location/BinderLocationTimeZoneProvider;->dump(Landroid/util/IndentingPrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/location/BinderLocationTimeZoneProvider;->onInitialize()Z
+PLcom/android/server/timezonedetector/location/DisabledLocationTimeZoneProvider;->dump(Landroid/util/IndentingPrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/location/DisabledLocationTimeZoneProvider;->onInitialize()Z
+PLcom/android/server/timezonedetector/location/HandlerThreadingDomain;-><init>(Landroid/os/Handler;)V
+PLcom/android/server/timezonedetector/location/HandlerThreadingDomain;->assertCurrentThread()V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/timezonedetector/location/LocationTimeZoneManagerService;I)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneManagerService$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/timezonedetector/location/LocationTimeZoneManagerService;)V
PLcom/android/server/timezonedetector/location/LocationTimeZoneManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/timezonedetector/location/LocationTimeZoneManagerService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/timezonedetector/location/LocationTimeZoneManagerService$Lifecycle;->onStart()V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneManagerService$ProviderConfig;-><init>(Lcom/android/server/timezonedetector/location/LocationTimeZoneManagerService;ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneManagerService$ProviderConfig;->createProvider()Lcom/android/server/timezonedetector/location/LocationTimeZoneProvider;
+PLcom/android/server/timezonedetector/location/LocationTimeZoneManagerService$ProviderConfig;->dump(Landroid/util/IndentingPrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneManagerService$ProviderConfig;->getPackageName()Ljava/lang/String;
+PLcom/android/server/timezonedetector/location/LocationTimeZoneManagerService;-><clinit>()V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneManagerService;-><init>(Landroid/content/Context;Lcom/android/server/timezonedetector/ServiceConfigAccessor;)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneManagerService;->debugLog(Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneManagerService;->startOnDomainThread()V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneManagerService;->warnLog(Ljava/lang/String;Ljava/lang/Throwable;)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProvider$ProviderState;-><init>(Lcom/android/server/timezonedetector/location/LocationTimeZoneProvider;ILandroid/service/timezone/TimeZoneProviderEvent;Lcom/android/server/timezonedetector/ConfigurationInternal;Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProvider$ProviderState;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProvider$ProviderState;->getProviderStatus()I
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProvider$ProviderState;->newState(ILandroid/service/timezone/TimeZoneProviderEvent;Lcom/android/server/timezonedetector/ConfigurationInternal;Ljava/lang/String;)Lcom/android/server/timezonedetector/location/LocationTimeZoneProvider$ProviderState;
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProvider$ProviderState;->prettyPrintStateEnum(I)Ljava/lang/String;
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProvider$ProviderState;->toString()Ljava/lang/String;
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProvider;-><init>(Lcom/android/server/timezonedetector/location/RealProviderMetricsLogger;Lcom/android/server/timezonedetector/location/HandlerThreadingDomain;Ljava/lang/String;Lcom/android/server/timezonedetector/location/TimeZoneProviderEventPreProcessor;Z)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProvider;->getCurrentState()Lcom/android/server/timezonedetector/location/LocationTimeZoneProvider$ProviderState;
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProvider;->initialize(Lcom/android/server/timezonedetector/location/LocationTimeZoneProviderController$$ExternalSyntheticLambda0;)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProvider;->setCurrentState(Lcom/android/server/timezonedetector/location/LocationTimeZoneProvider$ProviderState;Z)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProviderController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/timezonedetector/location/LocationTimeZoneProviderController;)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProviderController$$ExternalSyntheticLambda0;->onProviderStateChange(Lcom/android/server/timezonedetector/location/LocationTimeZoneProvider$ProviderState;)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProviderController;-><init>(Lcom/android/server/timezonedetector/location/HandlerThreadingDomain;Lcom/android/server/timezonedetector/location/RealControllerMetricsLogger;Lcom/android/server/timezonedetector/location/LocationTimeZoneProvider;Lcom/android/server/timezonedetector/location/LocationTimeZoneProvider;Z)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProviderController;->alterProvidersStartedStateIfRequired(Lcom/android/server/timezonedetector/ConfigurationInternal;Lcom/android/server/timezonedetector/ConfigurationInternal;)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProviderController;->dump(Landroid/util/IndentingPrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProviderController;->generateCurrentAlgorithmStatus()Landroid/app/time/LocationTimeZoneAlgorithmStatus;
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProviderController;->initialize(Lcom/android/server/timezonedetector/location/LocationTimeZoneProviderControllerEnvironmentImpl;Lcom/android/server/timezonedetector/location/LocationTimeZoneProviderControllerCallbackImpl;)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProviderController;->reportEvent(Lcom/android/server/timezonedetector/LocationAlgorithmEvent;)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProviderController;->setState(Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProviderController;->setStateAndReportStatusOnlyEvent(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProviderControllerCallbackImpl;-><init>(Lcom/android/server/timezonedetector/location/HandlerThreadingDomain;)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProviderControllerEnvironmentImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/timezonedetector/location/LocationTimeZoneProviderControllerEnvironmentImpl;Lcom/android/server/timezonedetector/location/LocationTimeZoneProviderController;)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProviderControllerEnvironmentImpl$$ExternalSyntheticLambda0;->onChange()V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProviderControllerEnvironmentImpl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/timezonedetector/location/LocationTimeZoneProviderController;)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProviderControllerEnvironmentImpl$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneProviderControllerEnvironmentImpl;-><init>(Lcom/android/server/timezonedetector/location/HandlerThreadingDomain;Lcom/android/server/timezonedetector/ServiceConfigAccessor;Lcom/android/server/timezonedetector/location/LocationTimeZoneProviderController;)V
+PLcom/android/server/timezonedetector/location/RealLocationTimeZoneProviderProxy;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/timezonedetector/location/HandlerThreadingDomain;Ljava/lang/String;Ljava/lang/String;Z)V
+PLcom/android/server/timezonedetector/location/RealLocationTimeZoneProviderProxy;->dump(Landroid/util/IndentingPrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/location/RealProviderMetricsLogger;-><init>(I)V
+PLcom/android/server/timezonedetector/location/ThreadingDomain$SingleRunnableQueue;-><init>(Lcom/android/server/timezonedetector/location/HandlerThreadingDomain;)V
+PLcom/android/server/timezonedetector/location/TimeZoneProviderRequest;-><clinit>()V
+PLcom/android/server/timezonedetector/location/TimeZoneProviderRequest;-><init>(ZLjava/time/Duration;Ljava/time/Duration;)V
+PLcom/android/server/timezonedetector/location/TimeZoneProviderRequest;->toString()Ljava/lang/String;
PLcom/android/server/tracing/TracingServiceProxy$1;-><init>(Lcom/android/server/tracing/TracingServiceProxy;)V
PLcom/android/server/tracing/TracingServiceProxy;-><init>(Landroid/content/Context;)V
PLcom/android/server/tracing/TracingServiceProxy;->onStart()V
-PLcom/android/server/trust/TrustArchive;-><init>()V
+PLcom/android/server/tracing/TracingServiceProxy;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/trust/TrustManagerService$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/trust/TrustManagerService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/trust/TrustManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/trust/TrustManagerService;IZ)V
+PLcom/android/server/trust/TrustManagerService$$ExternalSyntheticLambda1;->accept(I)V
PLcom/android/server/trust/TrustManagerService$1;-><init>(Lcom/android/server/trust/TrustManagerService;)V
-HPLcom/android/server/trust/TrustManagerService$1;->isDeviceLocked(II)Z
-HPLcom/android/server/trust/TrustManagerService$1;->isDeviceSecure(II)Z
-PLcom/android/server/trust/TrustManagerService$2;-><init>(Lcom/android/server/trust/TrustManagerService;Landroid/os/Looper;)V
-PLcom/android/server/trust/TrustManagerService$2;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/trust/TrustManagerService$2$1;-><init>(Lcom/android/server/trust/TrustManagerService$2;)V
+PLcom/android/server/trust/TrustManagerService$2;-><init>(Lcom/android/server/trust/TrustManagerService;)V
+PLcom/android/server/trust/TrustManagerService$2;->onBind(Landroid/os/IBinder;Lcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;)V
+PLcom/android/server/trust/TrustManagerService$2;->onUnbind()V
+PLcom/android/server/trust/TrustManagerService$3$1;-><init>(Lcom/android/server/trust/TrustManagerService$3;Ljava/io/PrintWriter;Ljava/util/List;)V
+PLcom/android/server/trust/TrustManagerService$3$1;->run()V
PLcom/android/server/trust/TrustManagerService$3;-><init>(Lcom/android/server/trust/TrustManagerService;)V
-PLcom/android/server/trust/TrustManagerService$Injector;-><init>(Lcom/android/internal/widget/LockPatternUtils;Landroid/os/Looper;)V
-PLcom/android/server/trust/TrustManagerService$Injector;->getLockPatternUtils()Lcom/android/internal/widget/LockPatternUtils;
-PLcom/android/server/trust/TrustManagerService$Injector;->getLooper()Landroid/os/Looper;
+PLcom/android/server/trust/TrustManagerService$3;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/trust/TrustManagerService$3;->dumpBool(Z)Ljava/lang/String;
+PLcom/android/server/trust/TrustManagerService$3;->enforceReportPermission()V
+HPLcom/android/server/trust/TrustManagerService$3;->isDeviceLocked(II)Z
+HPLcom/android/server/trust/TrustManagerService$3;->isDeviceSecure(II)Z
+PLcom/android/server/trust/TrustManagerService$3;->registerDeviceLockedStateListener(Lcom/android/internal/policy/IDeviceLockedStateListener;I)V
+PLcom/android/server/trust/TrustManagerService$3;->reportEnabledTrustAgentsChanged(I)V
+PLcom/android/server/trust/TrustManagerService$3;->reportKeyguardShowingChanged()V
+PLcom/android/server/trust/TrustManagerService$3;->reportUnlockAttempt(ZI)V
+PLcom/android/server/trust/TrustManagerService$4;-><init>(Lcom/android/server/trust/TrustManagerService;Landroid/os/Looper;)V
+PLcom/android/server/trust/TrustManagerService$4;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/trust/TrustManagerService$5;-><init>(Lcom/android/server/trust/TrustManagerService;)V
+PLcom/android/server/trust/TrustManagerService$5;->onPackageAdded(Ljava/lang/String;I)V
+PLcom/android/server/trust/TrustManagerService$5;->onPackageChanged(Ljava/lang/String;I[Ljava/lang/String;)Z
+PLcom/android/server/trust/TrustManagerService$5;->onPackageDisappeared(Ljava/lang/String;I)V
+PLcom/android/server/trust/TrustManagerService$5;->onSomePackagesChanged()V
PLcom/android/server/trust/TrustManagerService$Receiver;-><init>(Lcom/android/server/trust/TrustManagerService;)V
-PLcom/android/server/trust/TrustManagerService$Receiver;-><init>(Lcom/android/server/trust/TrustManagerService;Lcom/android/server/trust/TrustManagerService$Receiver-IA;)V
PLcom/android/server/trust/TrustManagerService$Receiver;->getUserId(Landroid/content/Intent;)I
PLcom/android/server/trust/TrustManagerService$Receiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/trust/TrustManagerService$Receiver;->register(Landroid/content/Context;)V
PLcom/android/server/trust/TrustManagerService$StrongAuthTracker;-><init>(Lcom/android/server/trust/TrustManagerService;Landroid/content/Context;Landroid/os/Looper;)V
+PLcom/android/server/trust/TrustManagerService$StrongAuthTracker;->canAgentsRunForUser(I)Z
PLcom/android/server/trust/TrustManagerService$StrongAuthTracker;->onStrongAuthRequiredChanged(I)V
-PLcom/android/server/trust/TrustManagerService$TrustState;->$values()[Lcom/android/server/trust/TrustManagerService$TrustState;
PLcom/android/server/trust/TrustManagerService$TrustState;-><clinit>()V
-PLcom/android/server/trust/TrustManagerService$TrustState;-><init>(Ljava/lang/String;I)V
-PLcom/android/server/trust/TrustManagerService;->-$$Nest$fgetmLockPatternUtils(Lcom/android/server/trust/TrustManagerService;)Lcom/android/internal/widget/LockPatternUtils;
-PLcom/android/server/trust/TrustManagerService;->-$$Nest$mresolveProfileParent(Lcom/android/server/trust/TrustManagerService;I)I
PLcom/android/server/trust/TrustManagerService;-><clinit>()V
PLcom/android/server/trust/TrustManagerService;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/trust/TrustManagerService;-><init>(Landroid/content/Context;Lcom/android/server/trust/TrustManagerService$Injector;)V
PLcom/android/server/trust/TrustManagerService;->aggregateIsActiveUnlockRunning(I)Z
PLcom/android/server/trust/TrustManagerService;->aggregateIsTrustManaged(I)Z
-PLcom/android/server/trust/TrustManagerService;->aggregateIsTrustable(I)Z
-PLcom/android/server/trust/TrustManagerService;->aggregateIsTrusted(I)Z
-PLcom/android/server/trust/TrustManagerService;->checkNewAgents()V
PLcom/android/server/trust/TrustManagerService;->checkNewAgentsForUser(I)V
-PLcom/android/server/trust/TrustManagerService;->createHandler(Landroid/os/Looper;)Landroid/os/Handler;
-PLcom/android/server/trust/TrustManagerService;->dispatchOnTrustChanged(ZZIILjava/util/List;)V
-PLcom/android/server/trust/TrustManagerService;->dispatchOnTrustManagedChanged(ZI)V
-PLcom/android/server/trust/TrustManagerService;->getTrustGrantedMessages(I)Ljava/util/List;
PLcom/android/server/trust/TrustManagerService;->getUserTrustStateInner(I)Lcom/android/server/trust/TrustManagerService$TrustState;
PLcom/android/server/trust/TrustManagerService;->isDeviceLockedInner(I)Z
PLcom/android/server/trust/TrustManagerService;->isTrustUsuallyManagedInternal(I)Z
-PLcom/android/server/trust/TrustManagerService;->maybeActiveUnlockRunningChanged(I)V
PLcom/android/server/trust/TrustManagerService;->maybeEnableFactoryTrustAgents(I)V
+PLcom/android/server/trust/TrustManagerService;->notifyDeviceLockedListenersForUser(IZ)V
PLcom/android/server/trust/TrustManagerService;->notifyKeystoreOfDeviceLockState(IZ)V
-PLcom/android/server/trust/TrustManagerService;->notifyTrustAgentsOfDeviceLockState(IZ)V
PLcom/android/server/trust/TrustManagerService;->onBootPhase(I)V
PLcom/android/server/trust/TrustManagerService;->onStart()V
PLcom/android/server/trust/TrustManagerService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/trust/TrustManagerService;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
-HPLcom/android/server/trust/TrustManagerService;->refreshAgentList(I)V
+PLcom/android/server/trust/TrustManagerService;->refreshAgentList(I)V
PLcom/android/server/trust/TrustManagerService;->refreshDeviceLockedForUser(I)V
PLcom/android/server/trust/TrustManagerService;->refreshDeviceLockedForUser(II)V
PLcom/android/server/trust/TrustManagerService;->resolveAllowedTrustAgents(Landroid/content/pm/PackageManager;I)Ljava/util/List;
HPLcom/android/server/trust/TrustManagerService;->resolveProfileParent(I)I
PLcom/android/server/trust/TrustManagerService;->setDeviceLockedForUser(IZ)V
-PLcom/android/server/trust/TrustManagerService;->updateTrust(II)V
-PLcom/android/server/trust/TrustManagerService;->updateTrust(IILcom/android/internal/infra/AndroidFuture;)V
+PLcom/android/server/trust/TrustManagerService;->updateTrust(I)V
PLcom/android/server/trust/TrustManagerService;->updateTrust(IIZLcom/android/internal/infra/AndroidFuture;)V
HSPLcom/android/server/tv/TvInputHal;-><clinit>()V
-HPLcom/android/server/uri/GrantUri;-><init>(ILandroid/net/Uri;I)V
-PLcom/android/server/uri/GrantUri;->resolve(ILandroid/net/Uri;I)Lcom/android/server/uri/GrantUri;
+PLcom/android/server/updates/CertPinInstallReceiver;-><init>()V
+PLcom/android/server/updates/ConversationActionsInstallReceiver;-><init>()V
+PLcom/android/server/updates/ConversationActionsInstallReceiver;->verifyVersion(II)Z
+PLcom/android/server/updates/LangIdInstallReceiver;-><init>()V
+PLcom/android/server/updates/LangIdInstallReceiver;->verifyVersion(II)Z
+PLcom/android/server/updates/SmartSelectionInstallReceiver;-><init>()V
+PLcom/android/server/updates/SmartSelectionInstallReceiver;->verifyVersion(II)Z
+PLcom/android/server/updates/SmsShortCodesInstallReceiver;-><init>()V
+HPLcom/android/server/uri/GrantUri;-><init>(IILandroid/net/Uri;)V
+PLcom/android/server/uri/GrantUri;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/uri/GrantUri;->hashCode()I
+PLcom/android/server/uri/GrantUri;->resolve(IILandroid/net/Uri;)Lcom/android/server/uri/GrantUri;
+PLcom/android/server/uri/GrantUri;->toString()Ljava/lang/String;
+PLcom/android/server/uri/NeededUriGrants;-><init>(IILjava/lang/String;)V
HSPLcom/android/server/uri/UriGrantsManagerService$H;-><init>(Lcom/android/server/uri/UriGrantsManagerService;Landroid/os/Looper;)V
+PLcom/android/server/uri/UriGrantsManagerService$H;->handleMessage(Landroid/os/Message;)V
HSPLcom/android/server/uri/UriGrantsManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
HSPLcom/android/server/uri/UriGrantsManagerService$Lifecycle;->onBootPhase(I)V
HSPLcom/android/server/uri/UriGrantsManagerService$Lifecycle;->onStart()V
HSPLcom/android/server/uri/UriGrantsManagerService$LocalService;-><init>(Lcom/android/server/uri/UriGrantsManagerService;)V
-HSPLcom/android/server/uri/UriGrantsManagerService$LocalService;-><init>(Lcom/android/server/uri/UriGrantsManagerService;Lcom/android/server/uri/UriGrantsManagerService$LocalService-IA;)V
-PLcom/android/server/uri/UriGrantsManagerService$LocalService;->checkGrantUriPermission(ILjava/lang/String;Landroid/net/Uri;II)I
-HPLcom/android/server/uri/UriGrantsManagerService$LocalService;->checkGrantUriPermissionFromIntent(Landroid/content/Intent;ILjava/lang/String;I)Lcom/android/server/uri/NeededUriGrants;
-PLcom/android/server/uri/UriGrantsManagerService$LocalService;->checkGrantUriPermissionFromIntent(Landroid/content/Intent;ILjava/lang/String;II)Lcom/android/server/uri/NeededUriGrants;
+PLcom/android/server/uri/UriGrantsManagerService$LocalService;->checkAuthorityGrants(ILandroid/content/pm/ProviderInfo;IZ)Z
+HPLcom/android/server/uri/UriGrantsManagerService$LocalService;->checkGrantUriPermission(ILjava/lang/String;Landroid/net/Uri;II)I
PLcom/android/server/uri/UriGrantsManagerService$LocalService;->checkUriPermission(Lcom/android/server/uri/GrantUri;IIZ)Z
PLcom/android/server/uri/UriGrantsManagerService$LocalService;->grantUriPermissionUncheckedFromIntent(Lcom/android/server/uri/NeededUriGrants;Lcom/android/server/uri/UriPermissionOwner;)V
-HPLcom/android/server/uri/UriGrantsManagerService$LocalService;->internalCheckGrantUriPermissionFromIntent(Landroid/content/Intent;ILjava/lang/String;ILjava/lang/Integer;)Lcom/android/server/uri/NeededUriGrants;
+HPLcom/android/server/uri/UriGrantsManagerService$LocalService;->internalCheckGrantUriPermissionFromIntent(Landroid/content/Intent;ILjava/lang/String;ILjava/lang/Integer;Ljava/lang/Integer;)Lcom/android/server/uri/NeededUriGrants;+]Landroid/content/Intent;Landroid/content/Intent;
PLcom/android/server/uri/UriGrantsManagerService$LocalService;->newUriPermissionOwner(Ljava/lang/String;)Landroid/os/IBinder;
-PLcom/android/server/uri/UriGrantsManagerService$LocalService;->onSystemReady()V
-PLcom/android/server/uri/UriGrantsManagerService$LocalService;->removeUriPermissionsForPackage(Ljava/lang/String;IZZ)V
-PLcom/android/server/uri/UriGrantsManagerService$LocalService;->revokeUriPermission(Ljava/lang/String;ILcom/android/server/uri/GrantUri;I)V
+HPLcom/android/server/uri/UriGrantsManagerService$LocalService;->notifyActivityLaunchRequestCompleted(IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;Z)V
+PLcom/android/server/uri/UriGrantsManagerService$LocalService;->removeUriPermissionsForPackage(ILjava/lang/String;Z)V
+PLcom/android/server/uri/UriGrantsManagerService$LocalService;->revokeUriPermission(IILcom/android/server/uri/GrantUri;Ljava/lang/String;)V
+PLcom/android/server/uri/UriGrantsManagerService$LocalService;->revokeUriPermissionFromOwner(Landroid/os/IBinder;Landroid/net/Uri;II)V
PLcom/android/server/uri/UriGrantsManagerService$LocalService;->revokeUriPermissionFromOwner(Landroid/os/IBinder;Landroid/net/Uri;IILjava/lang/String;I)V
-PLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$fgetmLock(Lcom/android/server/uri/UriGrantsManagerService;)Ljava/lang/Object;
-HPLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$mcheckGrantUriPermissionFromIntentUnlocked(Lcom/android/server/uri/UriGrantsManagerService;ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/uri/NeededUriGrants;ILjava/lang/Integer;)Lcom/android/server/uri/NeededUriGrants;
-PLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$mcheckGrantUriPermissionUnlocked(Lcom/android/server/uri/UriGrantsManagerService;ILjava/lang/String;Landroid/net/Uri;II)I
-PLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$mcheckUriPermissionLocked(Lcom/android/server/uri/UriGrantsManagerService;Lcom/android/server/uri/GrantUri;II)Z
-PLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$menforceNotIsolatedCaller(Lcom/android/server/uri/UriGrantsManagerService;Ljava/lang/String;)V
-PLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$mgrantUriPermissionUncheckedFromIntent(Lcom/android/server/uri/UriGrantsManagerService;Lcom/android/server/uri/NeededUriGrants;Lcom/android/server/uri/UriPermissionOwner;)V
+PLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$mcheckAuthorityGrantsLocked(Lcom/android/server/uri/UriGrantsManagerService;ILandroid/content/pm/ProviderInfo;IZ)Z
PLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$mreadGrantedUriPermissionsLocked(Lcom/android/server/uri/UriGrantsManagerService;)V
-PLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$mremoveUriPermissionsForPackageLocked(Lcom/android/server/uri/UriGrantsManagerService;Ljava/lang/String;IZZ)V
-PLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$mrevokeUriPermission(Lcom/android/server/uri/UriGrantsManagerService;Ljava/lang/String;ILcom/android/server/uri/GrantUri;I)V
-HSPLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$mstart(Lcom/android/server/uri/UriGrantsManagerService;)V
-HSPLcom/android/server/uri/UriGrantsManagerService;-><init>()V
-HSPLcom/android/server/uri/UriGrantsManagerService;-><init>(Lcom/android/server/uri/UriGrantsManagerService-IA;)V
HSPLcom/android/server/uri/UriGrantsManagerService;-><init>(Ljava/io/File;Ljava/lang/String;)V
-HPLcom/android/server/uri/UriGrantsManagerService;->checkGrantUriPermissionFromIntentUnlocked(ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/uri/NeededUriGrants;ILjava/lang/Integer;)Lcom/android/server/uri/NeededUriGrants;
-PLcom/android/server/uri/UriGrantsManagerService;->checkGrantUriPermissionUnlocked(ILjava/lang/String;Landroid/net/Uri;II)I
+HPLcom/android/server/uri/UriGrantsManagerService;->checkGrantUriPermissionFromIntentUnlocked(ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/uri/NeededUriGrants;ILjava/lang/Integer;Ljava/lang/Integer;)Lcom/android/server/uri/NeededUriGrants;+]Landroid/content/ClipData$Item;Landroid/content/ClipData$Item;]Landroid/content/ClipData;Landroid/content/ClipData;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
HPLcom/android/server/uri/UriGrantsManagerService;->checkGrantUriPermissionUnlocked(ILjava/lang/String;Lcom/android/server/uri/GrantUri;II)I
-HPLcom/android/server/uri/UriGrantsManagerService;->checkHoldingPermissionsInternalUnlocked(Landroid/content/pm/ProviderInfo;Lcom/android/server/uri/GrantUri;IIZ)Z
+PLcom/android/server/uri/UriGrantsManagerService;->checkHoldingPermissionsInternalUnlocked(Landroid/content/pm/ProviderInfo;Lcom/android/server/uri/GrantUri;IIZ)Z
PLcom/android/server/uri/UriGrantsManagerService;->checkHoldingPermissionsUnlocked(Landroid/content/pm/ProviderInfo;Lcom/android/server/uri/GrantUri;II)Z
+PLcom/android/server/uri/UriGrantsManagerService;->checkUidPermission(Ljava/lang/String;I)I
PLcom/android/server/uri/UriGrantsManagerService;->checkUriPermissionLocked(Lcom/android/server/uri/GrantUri;II)Z
PLcom/android/server/uri/UriGrantsManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
-PLcom/android/server/uri/UriGrantsManagerService;->enforceRequireContentUriPermissionFromCaller(Ljava/lang/Integer;Lcom/android/server/uri/GrantUri;I)V
-PLcom/android/server/uri/UriGrantsManagerService;->getProviderInfo(Ljava/lang/String;III)Landroid/content/pm/ProviderInfo;
-PLcom/android/server/uri/UriGrantsManagerService;->grantUriPermissionFromOwner(Landroid/os/IBinder;ILjava/lang/String;Landroid/net/Uri;III)V
-HPLcom/android/server/uri/UriGrantsManagerService;->grantUriPermissionFromOwnerUnlocked(Landroid/os/IBinder;ILjava/lang/String;Landroid/net/Uri;III)V
-PLcom/android/server/uri/UriGrantsManagerService;->grantUriPermissionUncheckedFromIntent(Lcom/android/server/uri/NeededUriGrants;Lcom/android/server/uri/UriPermissionOwner;)V
-HPLcom/android/server/uri/UriGrantsManagerService;->grantUriPermissionUnlocked(ILjava/lang/String;Lcom/android/server/uri/GrantUri;ILcom/android/server/uri/UriPermissionOwner;I)V
-HPLcom/android/server/uri/UriGrantsManagerService;->isContentUriWithAccessModeFlags(Lcom/android/server/uri/GrantUri;ILjava/lang/String;)Z
-PLcom/android/server/uri/UriGrantsManagerService;->readGrantedUriPermissionsLocked()V
+PLcom/android/server/uri/UriGrantsManagerService;->enforceRequireContentUriPermissionFromCallerUnlocked(Ljava/lang/Integer;Lcom/android/server/uri/GrantUri;ILjava/lang/Integer;)V
+PLcom/android/server/uri/UriGrantsManagerService;->findOrCreateUriPermissionLocked(Ljava/lang/String;Ljava/lang/String;ILcom/android/server/uri/GrantUri;)Lcom/android/server/uri/UriPermission;
+PLcom/android/server/uri/UriGrantsManagerService;->findUriPermissionLocked(ILcom/android/server/uri/GrantUri;)Lcom/android/server/uri/UriPermission;
+HPLcom/android/server/uri/UriGrantsManagerService;->getProviderInfo(IIILjava/lang/String;)Landroid/content/pm/ProviderInfo;
+HPLcom/android/server/uri/UriGrantsManagerService;->grantUriPermissionFromOwner(Landroid/os/IBinder;ILjava/lang/String;Landroid/net/Uri;III)V
+PLcom/android/server/uri/UriGrantsManagerService;->grantUriPermissionUnchecked(ILjava/lang/String;Lcom/android/server/uri/GrantUri;ILcom/android/server/uri/UriPermissionOwner;)V
+PLcom/android/server/uri/UriGrantsManagerService;->maybePrunePersistedUriGrantsLocked(I)Z
PLcom/android/server/uri/UriGrantsManagerService;->removeUriPermissionsForPackageLocked(Ljava/lang/String;IZZ)V
-PLcom/android/server/uri/UriGrantsManagerService;->revokeUriPermission(Ljava/lang/String;ILcom/android/server/uri/GrantUri;I)V
PLcom/android/server/uri/UriGrantsManagerService;->revokeUriPermissionLocked(Ljava/lang/String;ILcom/android/server/uri/GrantUri;IZ)V
-HSPLcom/android/server/uri/UriGrantsManagerService;->start()V
+PLcom/android/server/uri/UriGrantsManagerService;->schedulePersistUriGrants()V
+PLcom/android/server/uri/UriGrantsManagerService;->takePersistableUriPermission(Landroid/net/Uri;ILjava/lang/String;I)V
PLcom/android/server/uri/UriMetricsHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/uri/UriMetricsHelper;)V
HSPLcom/android/server/uri/UriMetricsHelper;-><clinit>()V
-HSPLcom/android/server/uri/UriMetricsHelper;-><init>(Landroid/content/Context;Lcom/android/server/uri/UriMetricsHelper$PersistentUriGrantsProvider;)V
-PLcom/android/server/uri/UriMetricsHelper;->registerPuller()V
+HSPLcom/android/server/uri/UriMetricsHelper;-><init>(Landroid/content/Context;Lcom/android/server/uri/UriGrantsManagerService;)V
+PLcom/android/server/uri/UriPermission$Snapshot;-><init>(Lcom/android/server/uri/UriPermission;)V
+PLcom/android/server/uri/UriPermission;-><init>(Ljava/lang/String;Ljava/lang/String;ILcom/android/server/uri/GrantUri;)V
+PLcom/android/server/uri/UriPermission;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/uri/UriPermission;->initPersistedModes(IJ)V
+PLcom/android/server/uri/UriPermission;->revokeModes(IZ)Z
+PLcom/android/server/uri/UriPermission;->takePersistableModes(I)Z
+PLcom/android/server/uri/UriPermission;->toString()Ljava/lang/String;
+PLcom/android/server/uri/UriPermission;->updateModeFlags()V
PLcom/android/server/uri/UriPermissionOwner$ExternalToken;-><init>(Lcom/android/server/uri/UriPermissionOwner;)V
-PLcom/android/server/uri/UriPermissionOwner$ExternalToken;->getOwner()Lcom/android/server/uri/UriPermissionOwner;
PLcom/android/server/uri/UriPermissionOwner;-><init>(Lcom/android/server/uri/UriGrantsManagerInternal;Ljava/lang/Object;)V
-HPLcom/android/server/uri/UriPermissionOwner;->fromExternalToken(Landroid/os/IBinder;)Lcom/android/server/uri/UriPermissionOwner;
-PLcom/android/server/uri/UriPermissionOwner;->getExternalToken()Landroid/os/Binder;
-PLcom/android/server/uri/UriPermissionOwner;->removeUriPermission(Lcom/android/server/uri/GrantUri;ILjava/lang/String;I)V
-HPLcom/android/server/usage/AppIdleHistory$AppUsageHistory;-><init>()V
+PLcom/android/server/uri/UriPermissionOwner;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/uri/UriPermissionOwner;->removeUriPermission(IILcom/android/server/uri/GrantUri;Ljava/lang/String;)V
+PLcom/android/server/uri/UriPermissionOwner;->toString()Ljava/lang/String;
+PLcom/android/server/usage/AppIdleHistory$AppUsageHistory;-><init>()V
PLcom/android/server/usage/AppIdleHistory;-><init>(Ljava/io/File;J)V
-HPLcom/android/server/usage/AppIdleHistory;->getAppStandbyBucket(Ljava/lang/String;IJ)I
-PLcom/android/server/usage/AppIdleHistory;->getAppStandbyBuckets(IZ)Ljava/util/ArrayList;
-HPLcom/android/server/usage/AppIdleHistory;->getAppStandbyReason(Ljava/lang/String;IJ)I
-HPLcom/android/server/usage/AppIdleHistory;->getAppUsageHistory(Ljava/lang/String;IJ)Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;
-HPLcom/android/server/usage/AppIdleHistory;->getElapsedTime(J)J
-PLcom/android/server/usage/AppIdleHistory;->getEstimatedLaunchTime(Ljava/lang/String;IJ)J
-HPLcom/android/server/usage/AppIdleHistory;->getIntValue(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I
-HPLcom/android/server/usage/AppIdleHistory;->getLongValue(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;J)J
-HPLcom/android/server/usage/AppIdleHistory;->getPackageHistory(Landroid/util/ArrayMap;Ljava/lang/String;JZ)Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;
-PLcom/android/server/usage/AppIdleHistory;->getScreenOnTime(J)J
+PLcom/android/server/usage/AppIdleHistory;->dumpUsers(Landroid/util/IndentingPrintWriter;[ILjava/util/List;)V
+PLcom/android/server/usage/AppIdleHistory;->getElapsedTime(J)J
+HPLcom/android/server/usage/AppIdleHistory;->getPackageHistory(Landroid/util/ArrayMap;Ljava/lang/String;Z)Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;
PLcom/android/server/usage/AppIdleHistory;->getScreenOnTimeFile()Ljava/io/File;
-HPLcom/android/server/usage/AppIdleHistory;->getThresholdIndex(Ljava/lang/String;IJ[J[J)I
-PLcom/android/server/usage/AppIdleHistory;->getTimeSinceLastJobRun(Ljava/lang/String;IJ)J
PLcom/android/server/usage/AppIdleHistory;->getUserFile(I)Ljava/io/File;
-HPLcom/android/server/usage/AppIdleHistory;->getUserHistory(I)Landroid/util/ArrayMap;
-HPLcom/android/server/usage/AppIdleHistory;->insertBucketExpiryTime(Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;IJ)V
-HPLcom/android/server/usage/AppIdleHistory;->isIdle(Ljava/lang/String;IJ)Z
-PLcom/android/server/usage/AppIdleHistory;->logAppStandbyBucketChanged(Ljava/lang/String;III)V
-HPLcom/android/server/usage/AppIdleHistory;->readAppIdleTimes(ILandroid/util/ArrayMap;)V
-HPLcom/android/server/usage/AppIdleHistory;->readBucketExpiryTimes(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;)V
-PLcom/android/server/usage/AppIdleHistory;->readScreenOnTime()V
-HPLcom/android/server/usage/AppIdleHistory;->removeElapsedExpiryTimes(Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;J)V
-HPLcom/android/server/usage/AppIdleHistory;->reportUsage(Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;Ljava/lang/String;IIIJJ)Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;
-HPLcom/android/server/usage/AppIdleHistory;->setAppStandbyBucket(Ljava/lang/String;IJII)V
-HPLcom/android/server/usage/AppIdleHistory;->setAppStandbyBucket(Ljava/lang/String;IJIIZ)V
-PLcom/android/server/usage/AppIdleHistory;->setEstimatedLaunchTime(Ljava/lang/String;IJJ)V
-HPLcom/android/server/usage/AppIdleHistory;->setLastJobRunTime(Ljava/lang/String;IJ)V
-HPLcom/android/server/usage/AppIdleHistory;->shouldInformListeners(Ljava/lang/String;IJI)Z
-PLcom/android/server/usage/AppIdleHistory;->updateDisplay(ZJ)V
-PLcom/android/server/usage/AppIdleHistory;->userFileExists(I)Z
-PLcom/android/server/usage/AppStandbyController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/usage/AppStandbyController;)V
+HPLcom/android/server/usage/AppIdleHistory;->getUserHistory(I)Landroid/util/ArrayMap;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/usage/AppIdleHistory;->insertBucketExpiryTime(Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;IJ)V
+HPLcom/android/server/usage/AppIdleHistory;->isIdle(ILjava/lang/String;)Z
+PLcom/android/server/usage/AppIdleHistory;->printLastActionElapsedTime(Landroid/util/IndentingPrintWriter;JJ)V
+PLcom/android/server/usage/AppIdleHistory;->readBucketExpiryTimes(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;)V
+HPLcom/android/server/usage/AppIdleHistory;->reportUsage(Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;Ljava/lang/String;IIIJJ)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;
+PLcom/android/server/usage/AppIdleHistory;->setAppStandbyBucket(IIIJLjava/lang/String;Z)V
+PLcom/android/server/usage/AppIdleHistory;->updateDisplay(JZ)V
+HPLcom/android/server/usage/AppIdleHistory;->writeAppIdleTimes(IJ)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;
+PLcom/android/server/usage/AppIdleHistory;->writeScreenOnTime()V
+PLcom/android/server/usage/AppStandbyController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/usage/AppStandbyController;I)V
PLcom/android/server/usage/AppStandbyController$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/usage/AppStandbyController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/usage/AppStandbyController;)V
-PLcom/android/server/usage/AppStandbyController$$ExternalSyntheticLambda1;->run()V
PLcom/android/server/usage/AppStandbyController$1;-><init>(Lcom/android/server/usage/AppStandbyController;)V
PLcom/android/server/usage/AppStandbyController$2;-><init>(Lcom/android/server/usage/AppStandbyController;)V
-PLcom/android/server/usage/AppStandbyController$2;->onDisplayChanged(I)V
+HPLcom/android/server/usage/AppStandbyController$2;->onDisplayChanged(I)V
PLcom/android/server/usage/AppStandbyController$AppStandbyHandler;-><init>(Lcom/android/server/usage/AppStandbyController;Landroid/os/Looper;)V
HPLcom/android/server/usage/AppStandbyController$AppStandbyHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/usage/AppStandbyController$ConstantsObserver;-><init>(Lcom/android/server/usage/AppStandbyController;Landroid/os/Handler;)V
+PLcom/android/server/usage/AppStandbyController$ConstantsObserver;->onChange(Z)V
+PLcom/android/server/usage/AppStandbyController$ConstantsObserver;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
PLcom/android/server/usage/AppStandbyController$ConstantsObserver;->processProperties(Landroid/provider/DeviceConfig$Properties;)V
-PLcom/android/server/usage/AppStandbyController$ConstantsObserver;->start()V
PLcom/android/server/usage/AppStandbyController$ConstantsObserver;->updateSettings()V
PLcom/android/server/usage/AppStandbyController$ContentProviderUsageRecord;-><clinit>()V
-PLcom/android/server/usage/AppStandbyController$ContentProviderUsageRecord;-><init>()V
-HPLcom/android/server/usage/AppStandbyController$ContentProviderUsageRecord;->obtain(Ljava/lang/String;Ljava/lang/String;I)Lcom/android/server/usage/AppStandbyController$ContentProviderUsageRecord;
-HPLcom/android/server/usage/AppStandbyController$ContentProviderUsageRecord;->recycle()V
-PLcom/android/server/usage/AppStandbyController$DeviceStateReceiver;-><init>(Lcom/android/server/usage/AppStandbyController;)V
-PLcom/android/server/usage/AppStandbyController$DeviceStateReceiver;-><init>(Lcom/android/server/usage/AppStandbyController;Lcom/android/server/usage/AppStandbyController$DeviceStateReceiver-IA;)V
PLcom/android/server/usage/AppStandbyController$Injector;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
-HPLcom/android/server/usage/AppStandbyController$Injector;->elapsedRealtime()J
-HPLcom/android/server/usage/AppStandbyController$Injector;->getActiveNetworkScorer()Ljava/lang/String;
-PLcom/android/server/usage/AppStandbyController$Injector;->getAppOpsService()Lcom/android/internal/app/IAppOpsService;
-PLcom/android/server/usage/AppStandbyController$Injector;->getBootPhase()I
-PLcom/android/server/usage/AppStandbyController$Injector;->getContext()Landroid/content/Context;
-PLcom/android/server/usage/AppStandbyController$Injector;->getDataSystemDirectory()Ljava/io/File;
-PLcom/android/server/usage/AppStandbyController$Injector;->getDeviceConfigProperties([Ljava/lang/String;)Landroid/provider/DeviceConfig$Properties;
-PLcom/android/server/usage/AppStandbyController$Injector;->getLooper()Landroid/os/Looper;
-PLcom/android/server/usage/AppStandbyController$Injector;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
-PLcom/android/server/usage/AppStandbyController$Injector;->getRunningUserIds()[I
-HPLcom/android/server/usage/AppStandbyController$Injector;->getValidCrossProfileTargets(Ljava/lang/String;I)Ljava/util/List;
-PLcom/android/server/usage/AppStandbyController$Injector;->isAppIdleEnabled()Z
-PLcom/android/server/usage/AppStandbyController$Injector;->isCharging()Z
-PLcom/android/server/usage/AppStandbyController$Injector;->isDefaultDisplayOn()Z
-HPLcom/android/server/usage/AppStandbyController$Injector;->isNonIdleWhitelisted(Ljava/lang/String;)Z
-HPLcom/android/server/usage/AppStandbyController$Injector;->isWellbeingPackage(Ljava/lang/String;)Z
-PLcom/android/server/usage/AppStandbyController$Injector;->noteEvent(ILjava/lang/String;I)V
-PLcom/android/server/usage/AppStandbyController$Injector;->onBootPhase(I)V
-PLcom/android/server/usage/AppStandbyController$Injector;->registerDeviceConfigPropertiesChangedListener(Landroid/provider/DeviceConfig$OnPropertiesChangedListener;)V
-PLcom/android/server/usage/AppStandbyController$Injector;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;)V
-HPLcom/android/server/usage/AppStandbyController$Injector;->shouldGetExactAlarmBucketElevation(Ljava/lang/String;I)Z
-PLcom/android/server/usage/AppStandbyController$Injector;->updatePowerWhitelistCache()V
-PLcom/android/server/usage/AppStandbyController$Lock;-><init>()V
-PLcom/android/server/usage/AppStandbyController$PackageReceiver;-><init>(Lcom/android/server/usage/AppStandbyController;)V
-PLcom/android/server/usage/AppStandbyController$PackageReceiver;-><init>(Lcom/android/server/usage/AppStandbyController;Lcom/android/server/usage/AppStandbyController$PackageReceiver-IA;)V
+PLcom/android/server/usage/AppStandbyController$Injector;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/usage/AppStandbyController$PackageReceiver;-><init>(Lcom/android/server/usage/AppStandbyController;I)V
+PLcom/android/server/usage/AppStandbyController$PackageReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/usage/AppStandbyController$Pool;-><init>([Ljava/lang/Object;)V
-HPLcom/android/server/usage/AppStandbyController$Pool;->obtain()Ljava/lang/Object;
-HPLcom/android/server/usage/AppStandbyController$Pool;->recycle(Ljava/lang/Object;)V
+PLcom/android/server/usage/AppStandbyController$Pool;->obtain()Ljava/lang/Object;
+PLcom/android/server/usage/AppStandbyController$Pool;->recycle(Ljava/lang/Object;)V
PLcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;-><clinit>()V
-PLcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;-><init>()V
-HPLcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;->obtain(Ljava/lang/String;IIIZ)Lcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;
-PLcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;->recycle()V
-PLcom/android/server/usage/AppStandbyController;->$r8$lambda$U2-GF_fLZHT7_Jm_uRMpoT-uHZQ(Lcom/android/server/usage/AppStandbyController;)V
-PLcom/android/server/usage/AppStandbyController;->$r8$lambda$vJLDXlUh4fYgit4sBALnnUw4CrE(Lcom/android/server/usage/AppStandbyController;)V
-PLcom/android/server/usage/AppStandbyController;->-$$Nest$fgetmAppIdleEnabled(Lcom/android/server/usage/AppStandbyController;)Z
-PLcom/android/server/usage/AppStandbyController;->-$$Nest$fgetmAppIdleHistory(Lcom/android/server/usage/AppStandbyController;)Lcom/android/server/usage/AppIdleHistory;
-PLcom/android/server/usage/AppStandbyController;->-$$Nest$fgetmAppIdleLock(Lcom/android/server/usage/AppStandbyController;)Ljava/lang/Object;
-PLcom/android/server/usage/AppStandbyController;->-$$Nest$fgetmContext(Lcom/android/server/usage/AppStandbyController;)Landroid/content/Context;
-PLcom/android/server/usage/AppStandbyController;->-$$Nest$fgetmHandler(Lcom/android/server/usage/AppStandbyController;)Lcom/android/server/usage/AppStandbyController$AppStandbyHandler;
-PLcom/android/server/usage/AppStandbyController;->-$$Nest$fgetmPendingIdleStateChecks(Lcom/android/server/usage/AppStandbyController;)Landroid/util/SparseLongArray;
-HPLcom/android/server/usage/AppStandbyController;->-$$Nest$mcheckAndUpdateStandbyState(Lcom/android/server/usage/AppStandbyController;Ljava/lang/String;IIJ)V
-HPLcom/android/server/usage/AppStandbyController;->-$$Nest$minformListeners(Lcom/android/server/usage/AppStandbyController;Ljava/lang/String;IIIZ)V
+PLcom/android/server/usage/AppStandbyController;->-$$Nest$minformListeners(Lcom/android/server/usage/AppStandbyController;Ljava/lang/String;IIIZ)V
PLcom/android/server/usage/AppStandbyController;->-$$Nest$minformParoleStateChanged(Lcom/android/server/usage/AppStandbyController;)V
-PLcom/android/server/usage/AppStandbyController;->-$$Nest$misDisplayOn(Lcom/android/server/usage/AppStandbyController;)Z
PLcom/android/server/usage/AppStandbyController;->-$$Nest$mreportContentProviderUsage(Lcom/android/server/usage/AppStandbyController;Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/usage/AppStandbyController;->-$$Nest$mwaitForAdminData(Lcom/android/server/usage/AppStandbyController;)V
PLcom/android/server/usage/AppStandbyController;-><clinit>()V
PLcom/android/server/usage/AppStandbyController;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/usage/AppStandbyController;-><init>(Lcom/android/server/usage/AppStandbyController$Injector;)V
PLcom/android/server/usage/AppStandbyController;->addListener(Lcom/android/server/usage/AppStandbyInternal$AppIdleStateChangeListener;)V
-HPLcom/android/server/usage/AppStandbyController;->checkAndUpdateStandbyState(Ljava/lang/String;IIJ)V
-HPLcom/android/server/usage/AppStandbyController;->checkIdleStates(I)Z
+HPLcom/android/server/usage/AppStandbyController;->checkAndUpdateStandbyState(IILjava/lang/String;J)V
+PLcom/android/server/usage/AppStandbyController;->checkIdleStates(I)Z
PLcom/android/server/usage/AppStandbyController;->clearCarrierPrivilegedApps()V
-PLcom/android/server/usage/AppStandbyController;->fetchCarrierPrivilegedAppsCPL()V
-HPLcom/android/server/usage/AppStandbyController;->getAppMinBucket(Ljava/lang/String;II)I
+PLcom/android/server/usage/AppStandbyController;->dumpState([Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/usage/AppStandbyController;->dumpUsers(Landroid/util/IndentingPrintWriter;[ILjava/util/List;)V
+PLcom/android/server/usage/AppStandbyController;->flushToDisk()V
+PLcom/android/server/usage/AppStandbyController;->getAppId(Ljava/lang/String;)I
+HPLcom/android/server/usage/AppStandbyController;->getAppMinBucket(IILjava/lang/String;)I
HPLcom/android/server/usage/AppStandbyController;->getAppStandbyBucket(Ljava/lang/String;IJZ)I
-HPLcom/android/server/usage/AppStandbyController;->getAppStandbyBucketReason(Ljava/lang/String;IJ)I
+PLcom/android/server/usage/AppStandbyController;->getAppStandbyBucketReason(Ljava/lang/String;IJ)I
PLcom/android/server/usage/AppStandbyController;->getAppStandbyBuckets(I)Ljava/util/List;
-HPLcom/android/server/usage/AppStandbyController;->getBucketForLocked(Ljava/lang/String;IJ)I
-HPLcom/android/server/usage/AppStandbyController;->getCrossProfileTargets(Ljava/lang/String;I)Ljava/util/List;
-PLcom/android/server/usage/AppStandbyController;->getEstimatedLaunchTime(Ljava/lang/String;I)J
-HPLcom/android/server/usage/AppStandbyController;->getIdleUidsForUser(I)[I
-HPLcom/android/server/usage/AppStandbyController;->getMinBucketWithValidExpiryTime(Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;IJ)I
-PLcom/android/server/usage/AppStandbyController;->getSystemPackagesWithLauncherActivities()Ljava/util/Set;
+PLcom/android/server/usage/AppStandbyController;->getBroadcastResponseExemptedPermissions()Ljava/util/List;
+PLcom/android/server/usage/AppStandbyController;->getBroadcastResponseExemptedRoles()Ljava/util/List;
+PLcom/android/server/usage/AppStandbyController;->getBroadcastResponseFgThresholdState()I
+PLcom/android/server/usage/AppStandbyController;->getBroadcastResponseWindowDurationMs()J
+PLcom/android/server/usage/AppStandbyController;->getBroadcastSessionsDurationMs()J
+PLcom/android/server/usage/AppStandbyController;->getBucketForLocked(ILjava/lang/String;J)I
+HPLcom/android/server/usage/AppStandbyController;->getCrossProfileTargets(ILjava/lang/String;)Ljava/util/List;+]Landroid/content/pm/CrossProfileAppsInternal;Lcom/android/server/pm/CrossProfileAppsServiceImpl$LocalService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;
+HPLcom/android/server/usage/AppStandbyController;->getEstimatedLaunchTime(Ljava/lang/String;I)J
+PLcom/android/server/usage/AppStandbyController;->getIdleUidsForUser(I)[I
+PLcom/android/server/usage/AppStandbyController;->getMinBucketWithValidExpiryTime(Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;IJ)I
PLcom/android/server/usage/AppStandbyController;->getTimeSinceLastJobRun(Ljava/lang/String;I)J
-HPLcom/android/server/usage/AppStandbyController;->informListeners(Ljava/lang/String;IIIZ)V
-PLcom/android/server/usage/AppStandbyController;->informParoleStateChanged()V
HPLcom/android/server/usage/AppStandbyController;->isActiveDeviceAdmin(Ljava/lang/String;I)Z
-HPLcom/android/server/usage/AppStandbyController;->isActiveNetworkScorer(Ljava/lang/String;)Z
-HPLcom/android/server/usage/AppStandbyController;->isAdminProtectedPackages(Ljava/lang/String;I)Z
HPLcom/android/server/usage/AppStandbyController;->isAppIdleEnabled()Z
HPLcom/android/server/usage/AppStandbyController;->isAppIdleFiltered(Ljava/lang/String;IIJ)Z
-HPLcom/android/server/usage/AppStandbyController;->isAppIdleUnfiltered(Ljava/lang/String;IJ)Z
-HPLcom/android/server/usage/AppStandbyController;->isCarrierApp(Ljava/lang/String;)Z
-HPLcom/android/server/usage/AppStandbyController;->isDeviceProvisioningPackage(Ljava/lang/String;)Z
-PLcom/android/server/usage/AppStandbyController;->isDisplayOn()Z
-HPLcom/android/server/usage/AppStandbyController;->isHeadlessSystemApp(Ljava/lang/String;)Z
+PLcom/android/server/usage/AppStandbyController;->isAppIdleFiltered(Ljava/lang/String;IJZ)Z
+PLcom/android/server/usage/AppStandbyController;->isHeadlessSystemApp(Ljava/lang/String;)Z
HPLcom/android/server/usage/AppStandbyController;->isInParole()Z
-PLcom/android/server/usage/AppStandbyController;->isUserUsage(I)Z
-PLcom/android/server/usage/AppStandbyController;->loadHeadlessSystemAppCache()V
-HPLcom/android/server/usage/AppStandbyController;->maybeInformListeners(Ljava/lang/String;IJIIZ)V
-PLcom/android/server/usage/AppStandbyController;->notifyBatteryStats(Ljava/lang/String;IZ)V
+PLcom/android/server/usage/AppStandbyController;->maybeInformListeners(IILjava/lang/String;IZ)V
+PLcom/android/server/usage/AppStandbyController;->maybeUnrestrictApp(Ljava/lang/String;IIIII)V
+PLcom/android/server/usage/AppStandbyController;->maybeUnrestrictBuggyApp(Ljava/lang/String;I)V
+PLcom/android/server/usage/AppStandbyController;->maybeUpdateHeadlessSystemAppCache(Landroid/content/pm/PackageInfo;)V
+PLcom/android/server/usage/AppStandbyController;->notifyBatteryStats(ILjava/lang/String;Z)V
PLcom/android/server/usage/AppStandbyController;->onAdminDataAvailable()V
-HPLcom/android/server/usage/AppStandbyController;->onBootPhase(I)V
-HPLcom/android/server/usage/AppStandbyController;->onUsageEvent(ILandroid/app/usage/UsageEvents$Event;)V
-PLcom/android/server/usage/AppStandbyController;->postCheckIdleStates(I)V
+PLcom/android/server/usage/AppStandbyController;->onBootPhase(I)V
+HPLcom/android/server/usage/AppStandbyController;->onUsageEvent(ILandroid/app/usage/UsageEvents$Event;)V+]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;
PLcom/android/server/usage/AppStandbyController;->postOneTimeCheckIdleStates()V
-PLcom/android/server/usage/AppStandbyController;->postParoleStateChanged()V
-HPLcom/android/server/usage/AppStandbyController;->postReportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/usage/AppStandbyController;->predictionTimedOut(Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;J)Z
-HPLcom/android/server/usage/AppStandbyController;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V
-HPLcom/android/server/usage/AppStandbyController;->reportEventLocked(Ljava/lang/String;IJI)V
+PLcom/android/server/usage/AppStandbyController;->postReportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/usage/AppStandbyController;->postReportExemptedSyncStart(Ljava/lang/String;I)V
+PLcom/android/server/usage/AppStandbyController;->postReportSyncScheduled(Ljava/lang/String;IZ)V
+HPLcom/android/server/usage/AppStandbyController;->reportEventLocked(IILjava/lang/String;J)V
+PLcom/android/server/usage/AppStandbyController;->reportNoninteractiveUsageCrossUserLocked(Ljava/lang/String;IIIJJLjava/util/List;)V
+PLcom/android/server/usage/AppStandbyController;->reportNoninteractiveUsageLocked(IILjava/lang/String;IJJ)V
PLcom/android/server/usage/AppStandbyController;->setActiveAdminApps(Ljava/util/Set;I)V
PLcom/android/server/usage/AppStandbyController;->setAppIdleEnabled(Z)V
PLcom/android/server/usage/AppStandbyController;->setChargingState(Z)V
PLcom/android/server/usage/AppStandbyController;->setEstimatedLaunchTime(Ljava/lang/String;IJ)V
HPLcom/android/server/usage/AppStandbyController;->setLastJobRunTime(Ljava/lang/String;IJ)V
PLcom/android/server/usage/AppStandbyController;->updateHeadlessSystemAppCache(Ljava/lang/String;Z)Z
-PLcom/android/server/usage/AppStandbyController;->updatePowerWhitelistCache()V
-PLcom/android/server/usage/AppStandbyController;->usageEventToSubReason(I)I
-PLcom/android/server/usage/AppStandbyController;->waitForAdminData()V
-PLcom/android/server/usage/AppTimeLimitController$Lock;-><init>()V
-PLcom/android/server/usage/AppTimeLimitController$Lock;-><init>(Lcom/android/server/usage/AppTimeLimitController$Lock-IA;)V
PLcom/android/server/usage/AppTimeLimitController$MyHandler;-><init>(Lcom/android/server/usage/AppTimeLimitController;Landroid/os/Looper;)V
-PLcom/android/server/usage/AppTimeLimitController$UserData;-><init>(Lcom/android/server/usage/AppTimeLimitController;I)V
-PLcom/android/server/usage/AppTimeLimitController$UserData;-><init>(Lcom/android/server/usage/AppTimeLimitController;ILcom/android/server/usage/AppTimeLimitController$UserData-IA;)V
+PLcom/android/server/usage/AppTimeLimitController$UserData;-><init>(I)V
+PLcom/android/server/usage/AppTimeLimitController$UserData;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/usage/AppTimeLimitController;-><clinit>()V
-PLcom/android/server/usage/AppTimeLimitController;-><init>(Landroid/content/Context;Lcom/android/server/usage/AppTimeLimitController$TimeLimitCallbackListener;Landroid/os/Looper;)V
+PLcom/android/server/usage/AppTimeLimitController;-><init>(Landroid/content/Context;Lcom/android/server/usage/UsageStatsService$2;Landroid/os/Looper;)V
+PLcom/android/server/usage/AppTimeLimitController;->dump(Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/usage/AppTimeLimitController;->getElapsedRealtime()J
PLcom/android/server/usage/AppTimeLimitController;->getOrCreateUserDataLocked(I)Lcom/android/server/usage/AppTimeLimitController$UserData;
-PLcom/android/server/usage/AppTimeLimitController;->noteUsageStart(Ljava/lang/String;I)V
-PLcom/android/server/usage/AppTimeLimitController;->noteUsageStart(Ljava/lang/String;IJ)V
-PLcom/android/server/usage/AppTimeLimitController;->noteUsageStop(Ljava/lang/String;I)V
-PLcom/android/server/usage/BroadcastResponseStatsLogger$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/usage/BroadcastResponseStatsLogger$$ExternalSyntheticLambda1;-><init>()V
+HPLcom/android/server/usage/AppTimeLimitController;->noteUsageStart(ILjava/lang/String;J)V
+HPLcom/android/server/usage/AppTimeLimitController;->noteUsageStop(ILjava/lang/String;)V
+PLcom/android/server/usage/BroadcastEvent;-><init>(IILjava/lang/String;J)V
+PLcom/android/server/usage/BroadcastEvent;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/usage/BroadcastEvent;->hashCode()I
+PLcom/android/server/usage/BroadcastResponseStatsLogger$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/usage/BroadcastResponseStatsLogger$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
+PLcom/android/server/usage/BroadcastResponseStatsLogger$$ExternalSyntheticLambda1;-><init>(I)V
PLcom/android/server/usage/BroadcastResponseStatsLogger$$ExternalSyntheticLambda1;->apply(I)Ljava/lang/Object;
-PLcom/android/server/usage/BroadcastResponseStatsLogger$$ExternalSyntheticLambda2;-><init>()V
-PLcom/android/server/usage/BroadcastResponseStatsLogger$$ExternalSyntheticLambda2;->get()Ljava/lang/Object;
-PLcom/android/server/usage/BroadcastResponseStatsLogger$$ExternalSyntheticLambda3;-><init>()V
-PLcom/android/server/usage/BroadcastResponseStatsLogger$$ExternalSyntheticLambda3;->apply(I)Ljava/lang/Object;
-PLcom/android/server/usage/BroadcastResponseStatsLogger$LogBuffer;-><init>(Ljava/util/function/Supplier;Ljava/util/function/IntFunction;I)V
-PLcom/android/server/usage/BroadcastResponseStatsLogger$LogBuffer;->logNotificationEvent(ILjava/lang/String;Landroid/os/UserHandle;J)V
-PLcom/android/server/usage/BroadcastResponseStatsLogger$NotificationEvent;-><init>()V
-PLcom/android/server/usage/BroadcastResponseStatsLogger$NotificationEvent;-><init>(Lcom/android/server/usage/BroadcastResponseStatsLogger$NotificationEvent-IA;)V
+PLcom/android/server/usage/BroadcastResponseStatsLogger$BroadcastEvent;->reset()V
PLcom/android/server/usage/BroadcastResponseStatsLogger$NotificationEvent;->reset()V
-PLcom/android/server/usage/BroadcastResponseStatsLogger;->$r8$lambda$W1F85tjQJ7p6e3fOCAIRsqTjcl4(I)Ljava/lang/Object;
-PLcom/android/server/usage/BroadcastResponseStatsLogger;->$r8$lambda$lW8VT65-e47HoACtwf8YZwpc8Xs()Lcom/android/server/usage/BroadcastResponseStatsLogger$NotificationEvent;
-PLcom/android/server/usage/BroadcastResponseStatsLogger;->$r8$lambda$wkyHpYbAHm1Dorsn7ksUN7TwqCk(I)Ljava/lang/Object;
+PLcom/android/server/usage/BroadcastResponseStatsLogger$NotificationEvent;->toString()Ljava/lang/String;
PLcom/android/server/usage/BroadcastResponseStatsLogger;-><clinit>()V
PLcom/android/server/usage/BroadcastResponseStatsLogger;-><init>()V
-PLcom/android/server/usage/BroadcastResponseStatsLogger;->lambda$new$0(I)Ljava/lang/Object;
-PLcom/android/server/usage/BroadcastResponseStatsLogger;->lambda$new$1(I)Ljava/lang/Object;
-PLcom/android/server/usage/BroadcastResponseStatsLogger;->logNotificationEvent(ILjava/lang/String;Landroid/os/UserHandle;J)V
+PLcom/android/server/usage/BroadcastResponseStatsLogger;->dumpLogs(Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/usage/BroadcastResponseStatsLogger;->getNotificationEventLog(IILjava/lang/String;J)Ljava/lang/String;
PLcom/android/server/usage/BroadcastResponseStatsTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/usage/BroadcastResponseStatsTracker;)V
+PLcom/android/server/usage/BroadcastResponseStatsTracker$$ExternalSyntheticLambda0;->onRoleHoldersChanged(Ljava/lang/String;Landroid/os/UserHandle;)V
PLcom/android/server/usage/BroadcastResponseStatsTracker;-><init>(Lcom/android/server/usage/AppStandbyInternal;Landroid/content/Context;)V
-PLcom/android/server/usage/BroadcastResponseStatsTracker;->getBroadcastEventsLocked(Ljava/lang/String;Landroid/os/UserHandle;)Landroid/util/ArraySet;
-PLcom/android/server/usage/BroadcastResponseStatsTracker;->onSystemServicesReady(Landroid/content/Context;)V
-PLcom/android/server/usage/BroadcastResponseStatsTracker;->reportNotificationEvent(ILjava/lang/String;Landroid/os/UserHandle;J)V
-PLcom/android/server/usage/BroadcastResponseStatsTracker;->reportNotificationPosted(Ljava/lang/String;Landroid/os/UserHandle;J)V
-PLcom/android/server/usage/IntervalStats$EventTracker;-><init>()V
+PLcom/android/server/usage/BroadcastResponseStatsTracker;->doesPackageHoldExemptedPermission(Ljava/lang/String;Landroid/os/UserHandle;)Z
+PLcom/android/server/usage/BroadcastResponseStatsTracker;->doesPackageHoldExemptedRole(Ljava/lang/String;Landroid/os/UserHandle;)Z
+PLcom/android/server/usage/BroadcastResponseStatsTracker;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/usage/BroadcastResponseStatsTracker;->dumpBroadcastEventsLocked(Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/usage/BroadcastResponseStatsTracker;->dumpResponseStatsLocked(Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/usage/BroadcastResponseStatsTracker;->dumpRoleHoldersLocked(Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/usage/BroadcastResponseStatsTracker;->getOrCreateBroadcastEventsLocked(Ljava/lang/String;Landroid/os/UserHandle;)Landroid/util/ArraySet;
+PLcom/android/server/usage/BroadcastResponseStatsTracker;->getOrCreateBroadcastResponseStats(Lcom/android/server/usage/BroadcastEvent;)Landroid/app/usage/BroadcastResponseStats;
+PLcom/android/server/usage/BroadcastResponseStatsTracker;->recordAndPruneOldBroadcastDispatchTimestamps(Lcom/android/server/usage/BroadcastEvent;)V
+HPLcom/android/server/usage/BroadcastResponseStatsTracker;->reportNotificationEvent(ILjava/lang/String;Landroid/os/UserHandle;J)V
+PLcom/android/server/usage/FeatureFlagsImpl;->init()V
+PLcom/android/server/usage/Flags;-><clinit>()V
+PLcom/android/server/usage/Flags;->adjustDefaultBucketElevationParams()Z
+PLcom/android/server/usage/Flags;->screenTimeBypass()Z
PLcom/android/server/usage/IntervalStats$EventTracker;->commitTime(J)V
PLcom/android/server/usage/IntervalStats$EventTracker;->update(J)V
HPLcom/android/server/usage/IntervalStats;-><init>()V
HPLcom/android/server/usage/IntervalStats;->addEvent(Landroid/app/usage/UsageEvents$Event;)V
-PLcom/android/server/usage/IntervalStats;->deobfuscateData(Lcom/android/server/usage/PackagesTokenData;)Z
-HPLcom/android/server/usage/IntervalStats;->deobfuscateEvents(Lcom/android/server/usage/PackagesTokenData;)Z
-PLcom/android/server/usage/IntervalStats;->deobfuscateUsageStats(Lcom/android/server/usage/PackagesTokenData;)Z
-HPLcom/android/server/usage/IntervalStats;->getCachedStringRef(Ljava/lang/String;)Ljava/lang/String;
-HPLcom/android/server/usage/IntervalStats;->getOrCreateConfigurationStats(Landroid/content/res/Configuration;)Landroid/app/usage/ConfigurationStats;
+PLcom/android/server/usage/IntervalStats;->getCachedStringRef(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/usage/IntervalStats;->getOrCreateConfigurationStats(Landroid/content/res/Configuration;)Landroid/app/usage/ConfigurationStats;
HPLcom/android/server/usage/IntervalStats;->getOrCreateUsageStats(Ljava/lang/String;)Landroid/app/usage/UsageStats;
-PLcom/android/server/usage/IntervalStats;->incrementAppLaunchCount(Ljava/lang/String;)V
-PLcom/android/server/usage/IntervalStats;->obfuscateData(Lcom/android/server/usage/PackagesTokenData;)V
-HPLcom/android/server/usage/IntervalStats;->obfuscateEventsData(Lcom/android/server/usage/PackagesTokenData;)V
-HPLcom/android/server/usage/IntervalStats;->obfuscateUsageStatsData(Lcom/android/server/usage/PackagesTokenData;)V
+HPLcom/android/server/usage/IntervalStats;->obfuscateData(Lcom/android/server/usage/PackagesTokenData;)V+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;]Landroid/util/SparseArray;Landroid/util/SparseArray;
HPLcom/android/server/usage/IntervalStats;->update(Ljava/lang/String;Ljava/lang/String;JII)V
PLcom/android/server/usage/IntervalStats;->updateConfigurationStats(Landroid/content/res/Configuration;J)V
-PLcom/android/server/usage/IntervalStats;->updateScreenInteractive(J)V
PLcom/android/server/usage/PackagesTokenData;-><init>()V
-PLcom/android/server/usage/PackagesTokenData;->getPackageString(I)Ljava/lang/String;
-HPLcom/android/server/usage/PackagesTokenData;->getPackageTokenOrAdd(Ljava/lang/String;J)I
-PLcom/android/server/usage/PackagesTokenData;->getString(II)Ljava/lang/String;
-HPLcom/android/server/usage/PackagesTokenData;->getTokenOrAdd(ILjava/lang/String;Ljava/lang/String;)I
+HPLcom/android/server/usage/PackagesTokenData;->getPackageTokenOrAdd(JLjava/lang/String;)I
+HPLcom/android/server/usage/PackagesTokenData;->getString(II)Ljava/lang/String;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/usage/PackagesTokenData;->getTokenOrAdd(ILjava/lang/String;Ljava/lang/String;)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/usage/StorageStatsService$$ExternalSyntheticLambda0;-><init>(Landroid/content/pm/PackageStats;Landroid/os/UserHandle;)V
+PLcom/android/server/usage/StorageStatsService$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/usage/StorageStatsService$$ExternalSyntheticLambda1;-><init>(Landroid/content/pm/PackageStats;IZ)V
+HPLcom/android/server/usage/StorageStatsService$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/usage/StorageStatsService$$ExternalSyntheticLambda2;-><init>(Landroid/content/pm/PackageStats;Ljava/lang/String;Landroid/os/UserHandle;Z)V
+PLcom/android/server/usage/StorageStatsService$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
PLcom/android/server/usage/StorageStatsService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/usage/StorageStatsService;)V
+PLcom/android/server/usage/StorageStatsService$$ExternalSyntheticLambda3;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
PLcom/android/server/usage/StorageStatsService$1;-><init>(Lcom/android/server/usage/StorageStatsService;)V
PLcom/android/server/usage/StorageStatsService$1;->onVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V
PLcom/android/server/usage/StorageStatsService$2;-><init>(Lcom/android/server/usage/StorageStatsService;)V
+PLcom/android/server/usage/StorageStatsService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/usage/StorageStatsService$H;-><init>(Lcom/android/server/usage/StorageStatsService;Landroid/os/Looper;)V
PLcom/android/server/usage/StorageStatsService$H;->getInitializedStrategy()Lcom/android/server/storage/CacheQuotaStrategy;
-HPLcom/android/server/usage/StorageStatsService$H;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/usage/StorageStatsService$H;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/usage/StorageStatsService$H;->recalculateQuotas(Lcom/android/server/storage/CacheQuotaStrategy;)V
PLcom/android/server/usage/StorageStatsService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/usage/StorageStatsService$Lifecycle;->onStart()V
PLcom/android/server/usage/StorageStatsService$LocalService;-><init>(Lcom/android/server/usage/StorageStatsService;)V
-PLcom/android/server/usage/StorageStatsService$LocalService;-><init>(Lcom/android/server/usage/StorageStatsService;Lcom/android/server/usage/StorageStatsService$LocalService-IA;)V
PLcom/android/server/usage/StorageStatsService$LocalService;->registerStorageStatsAugmenter(Lcom/android/server/usage/StorageStatsManagerLocal$StorageStatsAugmenter;Ljava/lang/String;)V
-PLcom/android/server/usage/StorageStatsService;->-$$Nest$fgetmCacheQuotas(Lcom/android/server/usage/StorageStatsService;)Landroid/util/ArrayMap;
-PLcom/android/server/usage/StorageStatsService;->-$$Nest$fgetmContext(Lcom/android/server/usage/StorageStatsService;)Landroid/content/Context;
-PLcom/android/server/usage/StorageStatsService;->-$$Nest$fgetmInstaller(Lcom/android/server/usage/StorageStatsService;)Lcom/android/server/pm/Installer;
-PLcom/android/server/usage/StorageStatsService;->-$$Nest$fgetmLock(Lcom/android/server/usage/StorageStatsService;)Ljava/lang/Object;
-PLcom/android/server/usage/StorageStatsService;->-$$Nest$fgetmStorageStatsAugmenters(Lcom/android/server/usage/StorageStatsService;)Ljava/util/concurrent/CopyOnWriteArrayList;
-PLcom/android/server/usage/StorageStatsService;->-$$Nest$fgetmStorageThresholdPercentHigh(Lcom/android/server/usage/StorageStatsService;)I
-PLcom/android/server/usage/StorageStatsService;->-$$Nest$minvalidateMounts(Lcom/android/server/usage/StorageStatsService;)V
PLcom/android/server/usage/StorageStatsService;-><clinit>()V
-HPLcom/android/server/usage/StorageStatsService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/usage/StorageStatsService;->invalidateMounts()V
+PLcom/android/server/usage/StorageStatsService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/usage/StorageStatsService;->checkStatsPermission(ILjava/lang/String;Z)Ljava/lang/String;+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/Context;Landroid/app/ContextImpl;
+HPLcom/android/server/usage/StorageStatsService;->computeAppStatsByDataTypes(Landroid/content/pm/PackageStats;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/usage/StorageStatsService;->enforceStatsPermission(ILjava/lang/String;)V
+HPLcom/android/server/usage/StorageStatsService;->forEachStorageStatsAugmenter(Ljava/lang/String;Ljava/util/function/Consumer;)V+]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;]Ljava/util/function/Consumer;Lcom/android/server/usage/StorageStatsService$$ExternalSyntheticLambda0;,Lcom/android/server/usage/StorageStatsService$$ExternalSyntheticLambda1;,Lcom/android/server/usage/StorageStatsService$$ExternalSyntheticLambda2;
+PLcom/android/server/usage/StorageStatsService;->getAppIds(I)[I
+PLcom/android/server/usage/StorageStatsService;->getCacheBytes(Ljava/lang/String;Ljava/lang/String;)J
+PLcom/android/server/usage/StorageStatsService;->getCacheQuotaBytes(Ljava/lang/String;ILjava/lang/String;)J
+PLcom/android/server/usage/StorageStatsService;->getDirBytes(Ljava/io/File;)J
+PLcom/android/server/usage/StorageStatsService;->getFileBytesInDir(Ljava/io/File;Ljava/lang/String;)J
PLcom/android/server/usage/StorageStatsService;->isCacheQuotaCalculationsEnabled(Landroid/content/ContentResolver;)Z
+PLcom/android/server/usage/StorageStatsService;->isQuotaSupported(Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/usage/StorageStatsService;->queryExternalStatsForUser(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/ExternalStorageStats;
+HPLcom/android/server/usage/StorageStatsService;->queryStatsForPackage(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
+HPLcom/android/server/usage/StorageStatsService;->queryStatsForUid(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
+PLcom/android/server/usage/StorageStatsService;->queryStatsForUser(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;
+HPLcom/android/server/usage/StorageStatsService;->translate(Landroid/content/pm/PackageStats;)Landroid/app/usage/StorageStats;
PLcom/android/server/usage/StorageStatsService;->updateConfig()V
-PLcom/android/server/usage/UnixCalendar;-><init>(J)V
-PLcom/android/server/usage/UnixCalendar;->addDays(I)V
-PLcom/android/server/usage/UnixCalendar;->getTimeInMillis()J
-PLcom/android/server/usage/UnixCalendar;->setTimeInMillis(J)V
-PLcom/android/server/usage/UsageStatsDatabase$1;-><init>(Lcom/android/server/usage/UsageStatsDatabase;)V
+PLcom/android/server/usage/UnixCalendar;-><init>()V
PLcom/android/server/usage/UsageStatsDatabase$1;->accept(Ljava/io/File;Ljava/lang/String;)Z
PLcom/android/server/usage/UsageStatsDatabase;-><clinit>()V
-PLcom/android/server/usage/UsageStatsDatabase;-><init>(Ljava/io/File;)V
PLcom/android/server/usage/UsageStatsDatabase;-><init>(Ljava/io/File;I)V
PLcom/android/server/usage/UsageStatsDatabase;->checkVersionAndBuildLocked()V
-PLcom/android/server/usage/UsageStatsDatabase;->filterStats(Lcom/android/server/usage/IntervalStats;)V
-PLcom/android/server/usage/UsageStatsDatabase;->findBestFitBucket(JJ)I
-PLcom/android/server/usage/UsageStatsDatabase;->getBuildFingerprint()Ljava/lang/String;
+PLcom/android/server/usage/UsageStatsDatabase;->dump(Lcom/android/internal/util/IndentingPrintWriter;Z)V
+PLcom/android/server/usage/UsageStatsDatabase;->dumpMappings(Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/usage/UsageStatsDatabase;->getBackupPayload(Ljava/lang/String;I)[B
PLcom/android/server/usage/UsageStatsDatabase;->getLatestUsageStats(I)Lcom/android/server/usage/IntervalStats;
PLcom/android/server/usage/UsageStatsDatabase;->indexFilesLocked()V
-PLcom/android/server/usage/UsageStatsDatabase;->init(J)V
-PLcom/android/server/usage/UsageStatsDatabase;->isNewUpdate()Z
-PLcom/android/server/usage/UsageStatsDatabase;->obfuscateCurrentStats([Lcom/android/server/usage/IntervalStats;)V
-PLcom/android/server/usage/UsageStatsDatabase;->parseBeginTime(Landroid/util/AtomicFile;)J
PLcom/android/server/usage/UsageStatsDatabase;->parseBeginTime(Ljava/io/File;)J
+PLcom/android/server/usage/UsageStatsDatabase;->prune(J)V
+PLcom/android/server/usage/UsageStatsDatabase;->pruneChooserCountsOlderThan(Ljava/io/File;J)V
+PLcom/android/server/usage/UsageStatsDatabase;->pruneFilesOlderThan(Ljava/io/File;J)V
PLcom/android/server/usage/UsageStatsDatabase;->putUsageStats(ILcom/android/server/usage/IntervalStats;)V
-PLcom/android/server/usage/UsageStatsDatabase;->queryUsageStats(IJJLcom/android/server/usage/UsageStatsDatabase$StatCombiner;Z)Ljava/util/List;
PLcom/android/server/usage/UsageStatsDatabase;->readLocked(Landroid/util/AtomicFile;Lcom/android/server/usage/IntervalStats;ILcom/android/server/usage/PackagesTokenData;Z)Z
PLcom/android/server/usage/UsageStatsDatabase;->readLocked(Landroid/util/AtomicFile;Lcom/android/server/usage/IntervalStats;Z)V
-PLcom/android/server/usage/UsageStatsDatabase;->readLocked(Ljava/io/InputStream;Lcom/android/server/usage/IntervalStats;ILcom/android/server/usage/PackagesTokenData;Z)Z
+HPLcom/android/server/usage/UsageStatsDatabase;->readLocked(Ljava/io/InputStream;Lcom/android/server/usage/IntervalStats;ILcom/android/server/usage/PackagesTokenData;Z)Z+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/usage/UsageStatsDatabase;->readMappingsLocked()V
-PLcom/android/server/usage/UsageStatsDatabase;->wasUpgradePerformed()Z
+PLcom/android/server/usage/UsageStatsDatabase;->writeIntervalStatsToStream(Ljava/io/DataOutputStream;Landroid/util/AtomicFile;I)V
PLcom/android/server/usage/UsageStatsDatabase;->writeLocked(Landroid/util/AtomicFile;Lcom/android/server/usage/IntervalStats;)V
PLcom/android/server/usage/UsageStatsDatabase;->writeLocked(Landroid/util/AtomicFile;Lcom/android/server/usage/IntervalStats;ILcom/android/server/usage/PackagesTokenData;)V
PLcom/android/server/usage/UsageStatsDatabase;->writeLocked(Ljava/io/OutputStream;Lcom/android/server/usage/IntervalStats;ILcom/android/server/usage/PackagesTokenData;)V
PLcom/android/server/usage/UsageStatsDatabase;->writeMappingsLocked()V
-PLcom/android/server/usage/UsageStatsIdleService;->scheduleJobInternal(Landroid/content/Context;Landroid/app/job/JobInfo;Ljava/lang/String;I)V
-PLcom/android/server/usage/UsageStatsIdleService;->scheduleUpdateMappingsJob(Landroid/content/Context;I)V
+PLcom/android/server/usage/UsageStatsHandlerThread;-><clinit>()V
+PLcom/android/server/usage/UsageStatsIdleService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/usage/UsageStatsIdleService;Landroid/app/job/JobParameters;I)V
+PLcom/android/server/usage/UsageStatsIdleService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/usage/UsageStatsIdleService;-><init>()V
+PLcom/android/server/usage/UsageStatsIdleService;->onStartJob(Landroid/app/job/JobParameters;)Z
+PLcom/android/server/usage/UsageStatsProto;->write(Ljava/io/OutputStream;Lcom/android/server/usage/IntervalStats;)V
+PLcom/android/server/usage/UsageStatsProto;->writeChooserCounts(Landroid/util/proto/ProtoOutputStream;Landroid/app/usage/UsageStats;)V
+PLcom/android/server/usage/UsageStatsProto;->writeCountAndTime(IJJLandroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/usage/UsageStatsProto;->writeUsageStats(Landroid/util/proto/ProtoOutputStream;Lcom/android/server/usage/IntervalStats;Landroid/app/usage/UsageStats;)V
PLcom/android/server/usage/UsageStatsProtoV2;-><clinit>()V
-PLcom/android/server/usage/UsageStatsProtoV2;->getOffsetTimestamp(JJ)J
HPLcom/android/server/usage/UsageStatsProtoV2;->loadConfigStats(Landroid/util/proto/ProtoInputStream;Lcom/android/server/usage/IntervalStats;)V
-PLcom/android/server/usage/UsageStatsProtoV2;->loadCountAndTime(Landroid/util/proto/ProtoInputStream;JLcom/android/server/usage/IntervalStats$EventTracker;)V
-PLcom/android/server/usage/UsageStatsProtoV2;->loadPackagesMap(Landroid/util/proto/ProtoInputStream;Landroid/util/SparseArray;)V
+HPLcom/android/server/usage/UsageStatsProtoV2;->loadCountAndTime(Landroid/util/proto/ProtoInputStream;JLcom/android/server/usage/IntervalStats$EventTracker;)V
HPLcom/android/server/usage/UsageStatsProtoV2;->parseEvent(Landroid/util/proto/ProtoInputStream;J)Landroid/app/usage/UsageEvents$Event;
HPLcom/android/server/usage/UsageStatsProtoV2;->parseUsageStats(Landroid/util/proto/ProtoInputStream;J)Landroid/app/usage/UsageStats;
-PLcom/android/server/usage/UsageStatsProtoV2;->parseUserInteractionEventExtras(Landroid/util/proto/ProtoInputStream;)Landroid/app/usage/UsageEvents$Event$UserInteractionEventExtrasToken;
-HPLcom/android/server/usage/UsageStatsProtoV2;->read(Ljava/io/InputStream;Lcom/android/server/usage/IntervalStats;Z)V
-HPLcom/android/server/usage/UsageStatsProtoV2;->readObfuscatedData(Ljava/io/InputStream;Lcom/android/server/usage/PackagesTokenData;)V
-HPLcom/android/server/usage/UsageStatsProtoV2;->write(Ljava/io/OutputStream;Lcom/android/server/usage/IntervalStats;)V
+HPLcom/android/server/usage/UsageStatsProtoV2;->read(Ljava/io/InputStream;Lcom/android/server/usage/IntervalStats;Z)V+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/usage/UsageStatsProtoV2;->readObfuscatedData(Ljava/io/InputStream;Lcom/android/server/usage/PackagesTokenData;)V
+HPLcom/android/server/usage/UsageStatsProtoV2;->write(Ljava/io/OutputStream;Lcom/android/server/usage/IntervalStats;)V+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;]Landroid/util/SparseArray;Landroid/util/SparseArray;
PLcom/android/server/usage/UsageStatsProtoV2;->writeChooserCounts(Landroid/util/proto/ProtoOutputStream;Landroid/app/usage/UsageStats;)V
-HPLcom/android/server/usage/UsageStatsProtoV2;->writeConfigStats(Landroid/util/proto/ProtoOutputStream;JLandroid/app/usage/ConfigurationStats;Z)V
-PLcom/android/server/usage/UsageStatsProtoV2;->writeCountAndTime(Landroid/util/proto/ProtoOutputStream;JIJ)V
+PLcom/android/server/usage/UsageStatsProtoV2;->writeCountAndTime(IJJLandroid/util/proto/ProtoOutputStream;)V
HPLcom/android/server/usage/UsageStatsProtoV2;->writeEvent(Landroid/util/proto/ProtoOutputStream;JLandroid/app/usage/UsageEvents$Event;)V
-HPLcom/android/server/usage/UsageStatsProtoV2;->writeObfuscatedData(Ljava/io/OutputStream;Lcom/android/server/usage/PackagesTokenData;)V
-PLcom/android/server/usage/UsageStatsProtoV2;->writeOffsetTimestamp(Landroid/util/proto/ProtoOutputStream;JJJ)V
-HPLcom/android/server/usage/UsageStatsProtoV2;->writeUsageStats(Landroid/util/proto/ProtoOutputStream;JLandroid/app/usage/UsageStats;)V
-PLcom/android/server/usage/UsageStatsProtoV2;->writeUserInteractionEventExtras(Landroid/util/proto/ProtoOutputStream;JLandroid/app/usage/UsageEvents$Event$UserInteractionEventExtrasToken;)V
+PLcom/android/server/usage/UsageStatsProtoV2;->writeObfuscatedData(Ljava/io/OutputStream;Lcom/android/server/usage/PackagesTokenData;)V
+HPLcom/android/server/usage/UsageStatsProtoV2;->writeOffsetTimestamp(Landroid/util/proto/ProtoOutputStream;JJJ)V
+PLcom/android/server/usage/UsageStatsProtoV2;->writeUsageStats(Landroid/util/proto/ProtoOutputStream;JLandroid/app/usage/UsageStats;)V
PLcom/android/server/usage/UsageStatsService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/usage/UsageStatsService;)V
-HPLcom/android/server/usage/UsageStatsService$$ExternalSyntheticLambda0;->handleMessage(Landroid/os/Message;)Z
+HPLcom/android/server/usage/UsageStatsService$$ExternalSyntheticLambda0;->handleMessage(Landroid/os/Message;)Z+]Landroid/app/usage/UsageStatsManagerInternal$UsageEventListener;Lcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda0;,Lcom/android/server/job/controllers/QuotaController$UsageEventTracker;,Lcom/android/server/usage/AppStandbyController;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
PLcom/android/server/usage/UsageStatsService$1;-><init>(Lcom/android/server/usage/UsageStatsService;)V
-HPLcom/android/server/usage/UsageStatsService$1;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
+PLcom/android/server/usage/UsageStatsService$1;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
PLcom/android/server/usage/UsageStatsService$2;-><init>(Lcom/android/server/usage/UsageStatsService;)V
PLcom/android/server/usage/UsageStatsService$3;-><init>(Lcom/android/server/usage/UsageStatsService;)V
PLcom/android/server/usage/UsageStatsService$3;->onUidGone(IZ)V
HPLcom/android/server/usage/UsageStatsService$3;->onUidStateChanged(IIJI)V
-PLcom/android/server/usage/UsageStatsService$ActivityData;->-$$Nest$fgetmUsageSourcePackage(Lcom/android/server/usage/UsageStatsService$ActivityData;)Ljava/lang/String;
PLcom/android/server/usage/UsageStatsService$ActivityData;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/usage/UsageStatsService$ActivityData;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/usage/UsageStatsService$ActivityData-IA;)V
PLcom/android/server/usage/UsageStatsService$BinderService;-><init>(Lcom/android/server/usage/UsageStatsService;)V
-PLcom/android/server/usage/UsageStatsService$BinderService;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$BinderService-IA;)V
-PLcom/android/server/usage/UsageStatsService$BinderService;->canReportUsageStats()Z
+PLcom/android/server/usage/UsageStatsService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/usage/UsageStatsService$BinderService;->getAppStandbyBucket(Ljava/lang/String;Ljava/lang/String;I)I
PLcom/android/server/usage/UsageStatsService$BinderService;->hasQueryPermission(Ljava/lang/String;)Z
-PLcom/android/server/usage/UsageStatsService$BinderService;->isCallingUidSystem()Z
-PLcom/android/server/usage/UsageStatsService$BinderService;->onCarrierPrivilegedAppsChanged()V
+PLcom/android/server/usage/UsageStatsService$BinderService;->isAppInactive(Ljava/lang/String;ILjava/lang/String;)Z
+PLcom/android/server/usage/UsageStatsService$BinderService;->queryBroadcastResponseStats(Ljava/lang/String;JLjava/lang/String;I)Landroid/app/usage/BroadcastResponseStatsList;
+PLcom/android/server/usage/UsageStatsService$BinderService;->queryEvents(JJLjava/lang/String;)Landroid/app/usage/UsageEvents;
+PLcom/android/server/usage/UsageStatsService$BinderService;->queryEventsHelper(IJJLjava/lang/String;[ILandroid/util/ArraySet;)Landroid/app/usage/UsageEvents;
+PLcom/android/server/usage/UsageStatsService$BinderService;->queryEventsWithFilter(Landroid/app/usage/UsageEventsQuery;Ljava/lang/String;)Landroid/app/usage/UsageEvents;
HPLcom/android/server/usage/UsageStatsService$BinderService;->queryUsageStats(IJJLjava/lang/String;I)Landroid/content/pm/ParceledListSlice;
PLcom/android/server/usage/UsageStatsService$BinderService;->reportUserInteractionInnerHelper(Ljava/lang/String;ILandroid/os/PersistableBundle;)V
PLcom/android/server/usage/UsageStatsService$BinderService;->reportUserInteractionWithBundle(Ljava/lang/String;ILandroid/os/PersistableBundle;)V
PLcom/android/server/usage/UsageStatsService$H;-><init>(Lcom/android/server/usage/UsageStatsService;Landroid/os/Looper;)V
-HPLcom/android/server/usage/UsageStatsService$H;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/usage/UsageStatsService$H;->handleMessage(Landroid/os/Message;)V+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Ljava/util/concurrent/CopyOnWriteArraySet;Ljava/util/concurrent/CopyOnWriteArraySet;
PLcom/android/server/usage/UsageStatsService$Injector;-><init>()V
-PLcom/android/server/usage/UsageStatsService$Injector;->getAppStandbyController(Landroid/content/Context;)Lcom/android/server/usage/AppStandbyInternal;
PLcom/android/server/usage/UsageStatsService$LaunchTimeAlarmQueue;-><init>(Lcom/android/server/usage/UsageStatsService;ILandroid/content/Context;Landroid/os/Looper;)V
+PLcom/android/server/usage/UsageStatsService$LaunchTimeAlarmQueue;->processExpiredAlarms(Landroid/util/ArraySet;)V
PLcom/android/server/usage/UsageStatsService$LocalService;-><init>(Lcom/android/server/usage/UsageStatsService;)V
-PLcom/android/server/usage/UsageStatsService$LocalService;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$LocalService-IA;)V
-HPLcom/android/server/usage/UsageStatsService$LocalService;->getAppStandbyBucket(Ljava/lang/String;IJ)I
-PLcom/android/server/usage/UsageStatsService$LocalService;->getIdleUidsForUser(I)[I
-PLcom/android/server/usage/UsageStatsService$LocalService;->getTimeSinceLastJobRun(Ljava/lang/String;I)J
-HPLcom/android/server/usage/UsageStatsService$LocalService;->isAppIdle(Ljava/lang/String;II)Z
-PLcom/android/server/usage/UsageStatsService$LocalService;->onAdminDataAvailable()V
-PLcom/android/server/usage/UsageStatsService$LocalService;->queryEventsForUser(IJJI)Landroid/app/usage/UsageEvents;
-PLcom/android/server/usage/UsageStatsService$LocalService;->registerLaunchTimeChangedListener(Landroid/app/usage/UsageStatsManagerInternal$EstimatedLaunchTimeChangedListener;)V
+HPLcom/android/server/usage/UsageStatsService$LocalService;->getAppStandbyBucket(ILjava/lang/String;J)I+]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;
+PLcom/android/server/usage/UsageStatsService$LocalService;->getBackupPayload(ILjava/lang/String;)[B
PLcom/android/server/usage/UsageStatsService$LocalService;->registerListener(Landroid/app/usage/UsageStatsManagerInternal$UsageEventListener;)V
-PLcom/android/server/usage/UsageStatsService$LocalService;->reportConfigurationChange(Landroid/content/res/Configuration;I)V
-HPLcom/android/server/usage/UsageStatsService$LocalService;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/usage/UsageStatsService$LocalService;->reportEvent(IILjava/lang/String;)V
HPLcom/android/server/usage/UsageStatsService$LocalService;->reportEvent(Landroid/content/ComponentName;IIILandroid/content/ComponentName;)V
-HPLcom/android/server/usage/UsageStatsService$LocalService;->reportEvent(Ljava/lang/String;II)V
-PLcom/android/server/usage/UsageStatsService$LocalService;->reportInterruptiveNotification(Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/usage/UsageStatsService$LocalService;->reportNotificationPosted(Ljava/lang/String;Landroid/os/UserHandle;J)V
-PLcom/android/server/usage/UsageStatsService$LocalService;->setActiveAdminApps(Ljava/util/Set;I)V
-HPLcom/android/server/usage/UsageStatsService$LocalService;->setLastJobRunTime(Ljava/lang/String;IJ)V
+PLcom/android/server/usage/UsageStatsService$LocalService;->reportUserInteractionEvent(Ljava/lang/String;ILandroid/os/PersistableBundle;)V
PLcom/android/server/usage/UsageStatsService$MyPackageMonitor;-><init>(Lcom/android/server/usage/UsageStatsService;)V
-PLcom/android/server/usage/UsageStatsService$MyPackageMonitor;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$MyPackageMonitor-IA;)V
-PLcom/android/server/usage/UsageStatsService$UidRemovedReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;)V
-PLcom/android/server/usage/UsageStatsService$UidRemovedReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$UidRemovedReceiver-IA;)V
-PLcom/android/server/usage/UsageStatsService$UserActionsReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;)V
-PLcom/android/server/usage/UsageStatsService$UserActionsReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$UserActionsReceiver-IA;)V
-PLcom/android/server/usage/UsageStatsService$UserActionsReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/usage/UsageStatsService;->$r8$lambda$TpcNng9zAtQEa_4AWZmaJYBdR0c(Lcom/android/server/usage/UsageStatsService;Landroid/os/Message;)Z
-PLcom/android/server/usage/UsageStatsService;->-$$Nest$fgetmEstimatedLaunchTimeChangedListeners(Lcom/android/server/usage/UsageStatsService;)Ljava/util/concurrent/CopyOnWriteArraySet;
-PLcom/android/server/usage/UsageStatsService;->-$$Nest$fgetmHandler(Lcom/android/server/usage/UsageStatsService;)Landroid/os/Handler;
-HPLcom/android/server/usage/UsageStatsService;->-$$Nest$fgetmIoHandler(Lcom/android/server/usage/UsageStatsService;)Landroid/os/Handler;
-PLcom/android/server/usage/UsageStatsService;->-$$Nest$fgetmLock(Lcom/android/server/usage/UsageStatsService;)Ljava/lang/Object;
-PLcom/android/server/usage/UsageStatsService;->-$$Nest$fgetmPendingLaunchTimeChangePackages(Lcom/android/server/usage/UsageStatsService;)Landroid/util/SparseSetArray;
-PLcom/android/server/usage/UsageStatsService;->-$$Nest$fgetmResponseStatsTracker(Lcom/android/server/usage/UsageStatsService;)Lcom/android/server/usage/BroadcastResponseStatsTracker;
+PLcom/android/server/usage/UsageStatsService$UidRemovedReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;I)V
+PLcom/android/server/usage/UsageStatsService$UidRemovedReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/usage/UsageStatsService;->-$$Nest$mgetTrimmedString(Lcom/android/server/usage/UsageStatsService;Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/usage/UsageStatsService;->-$$Nest$mloadGlobalComponentUsageLocked(Lcom/android/server/usage/UsageStatsService;)V
PLcom/android/server/usage/UsageStatsService;->-$$Nest$monUserUnlocked(Lcom/android/server/usage/UsageStatsService;I)V
-PLcom/android/server/usage/UsageStatsService;->-$$Nest$mregisterLaunchTimeChangedListener(Lcom/android/server/usage/UsageStatsService;Landroid/app/usage/UsageStatsManagerInternal$EstimatedLaunchTimeChangedListener;)V
-PLcom/android/server/usage/UsageStatsService;->-$$Nest$mregisterListener(Lcom/android/server/usage/UsageStatsService;Landroid/app/usage/UsageStatsManagerInternal$UsageEventListener;)V
-HPLcom/android/server/usage/UsageStatsService;->-$$Nest$mreportEventOrAddToQueue(Lcom/android/server/usage/UsageStatsService;ILandroid/app/usage/UsageEvents$Event;)V
PLcom/android/server/usage/UsageStatsService;->-$$Nest$mshouldObfuscateInstantAppsForCaller(Lcom/android/server/usage/UsageStatsService;II)Z
PLcom/android/server/usage/UsageStatsService;-><clinit>()V
PLcom/android/server/usage/UsageStatsService;-><init>(Landroid/content/Context;)V
PLcom/android/server/usage/UsageStatsService;-><init>(Landroid/content/Context;Lcom/android/server/usage/UsageStatsService$Injector;)V
-PLcom/android/server/usage/UsageStatsService;->calculateEstimatedPackageLaunchTime(ILjava/lang/String;)J
-PLcom/android/server/usage/UsageStatsService;->calculateNextLaunchTime(ZJ)J
HPLcom/android/server/usage/UsageStatsService;->convertToSystemTimeLocked(Landroid/app/usage/UsageEvents$Event;)V
PLcom/android/server/usage/UsageStatsService;->deleteLegacyUserDir(I)V
PLcom/android/server/usage/UsageStatsService;->deleteRecursively(Ljava/io/File;)V
-PLcom/android/server/usage/UsageStatsService;->getAppUsageEventOccurredAtomEventType(I)I
+PLcom/android/server/usage/UsageStatsService;->flushToDisk()V
+PLcom/android/server/usage/UsageStatsService;->flushToDiskLocked()V
PLcom/android/server/usage/UsageStatsService;->getDpmInternal()Landroid/app/admin/DevicePolicyManagerInternal;
-PLcom/android/server/usage/UsageStatsService;->getEstimatedPackageLaunchTime(ILjava/lang/String;)J
+HPLcom/android/server/usage/UsageStatsService;->getEstimatedPackageLaunchTime(ILjava/lang/String;)J
PLcom/android/server/usage/UsageStatsService;->getInstalledPackages(I)Ljava/util/HashMap;
PLcom/android/server/usage/UsageStatsService;->getOrCreateLaunchTimeAlarmQueue(I)Lcom/android/server/usage/UsageStatsService$LaunchTimeAlarmQueue;
-PLcom/android/server/usage/UsageStatsService;->getShortcutServiceInternal()Landroid/content/pm/ShortcutServiceInternal;
-PLcom/android/server/usage/UsageStatsService;->getTrimmedString(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/usage/UsageStatsService;->getUsageEventProcessingHandler()Landroid/os/Handler;
-PLcom/android/server/usage/UsageStatsService;->getUsageSourcePackage(Landroid/app/usage/UsageEvents$Event;)Ljava/lang/String;
-HPLcom/android/server/usage/UsageStatsService;->getUserUsageStatsServiceLocked(I)Lcom/android/server/usage/UserUsageStatsService;
-HPLcom/android/server/usage/UsageStatsService;->handleEstimatedLaunchTimesOnUserUnlock(I)V
+PLcom/android/server/usage/UsageStatsService;->getUserUsageStatsServiceLocked(I)Lcom/android/server/usage/UserUsageStatsService;
PLcom/android/server/usage/UsageStatsService;->initializeUserUsageStatsServiceLocked(IJLjava/util/HashMap;Z)V
-HPLcom/android/server/usage/UsageStatsService;->isInstantApp(Ljava/lang/String;I)Z
-HPLcom/android/server/usage/UsageStatsService;->lambda$new$0(Landroid/os/Message;)Z
-PLcom/android/server/usage/UsageStatsService;->loadGlobalComponentUsageLocked()V
PLcom/android/server/usage/UsageStatsService;->loadPendingEventsLocked(ILjava/util/LinkedList;)V
-HPLcom/android/server/usage/UsageStatsService;->logAppUsageEventReportedAtomLocked(IILjava/lang/String;)V
+PLcom/android/server/usage/UsageStatsService;->logAppUsageEventReportedAtomLocked(IILjava/lang/String;)V
PLcom/android/server/usage/UsageStatsService;->migrateStatsToSystemCeIfNeededLocked(I)V
PLcom/android/server/usage/UsageStatsService;->onBootPhase(I)V
-HPLcom/android/server/usage/UsageStatsService;->onStart()V
-PLcom/android/server/usage/UsageStatsService;->onStatsUpdated()V
+PLcom/android/server/usage/UsageStatsService;->onStart()V
PLcom/android/server/usage/UsageStatsService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
-HPLcom/android/server/usage/UsageStatsService;->onUserUnlocked(I)V
PLcom/android/server/usage/UsageStatsService;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/usage/UsageStatsService;->publishBinderServices()V
-PLcom/android/server/usage/UsageStatsService;->queryEarliestAppEvents(IJJI)Landroid/app/usage/UsageEvents;
-PLcom/android/server/usage/UsageStatsService;->queryEarliestEventsForPackage(IJJLjava/lang/String;I)Landroid/app/usage/UsageEvents;
-PLcom/android/server/usage/UsageStatsService;->queryEvents(IJJI)Landroid/app/usage/UsageEvents;
PLcom/android/server/usage/UsageStatsService;->queryEventsWithQueryFilters(IJJI[ILandroid/util/ArraySet;)Landroid/app/usage/UsageEvents;
-PLcom/android/server/usage/UsageStatsService;->queryUsageStats(IIJJZ)Ljava/util/List;
+HPLcom/android/server/usage/UsageStatsService;->queryUsageStats(IJJIZ)Ljava/util/List;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/concurrent/CopyOnWriteArraySet;Ljava/util/concurrent/CopyOnWriteArraySet;
PLcom/android/server/usage/UsageStatsService;->readUsageSourceSetting()V
-PLcom/android/server/usage/UsageStatsService;->registerLaunchTimeChangedListener(Landroid/app/usage/UsageStatsManagerInternal$EstimatedLaunchTimeChangedListener;)V
-PLcom/android/server/usage/UsageStatsService;->registerListener(Landroid/app/usage/UsageStatsManagerInternal$UsageEventListener;)V
-HPLcom/android/server/usage/UsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;I)V
-HPLcom/android/server/usage/UsageStatsService;->reportEventOrAddToQueue(ILandroid/app/usage/UsageEvents$Event;)V
-PLcom/android/server/usage/UsageStatsService;->shouldDeleteObsoleteData(Landroid/os/UserHandle;)Z
-PLcom/android/server/usage/UsageStatsService;->shouldObfuscateInstantAppsForCaller(II)Z
+HPLcom/android/server/usage/UsageStatsService;->reportEvent(ILandroid/app/usage/UsageEvents$Event;)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Ljava/util/concurrent/CopyOnWriteArraySet;Ljava/util/concurrent/CopyOnWriteArraySet;
+HPLcom/android/server/usage/UsageStatsService;->reportEventOrAddToQueue(ILandroid/app/usage/UsageEvents$Event;)V+]Ljava/util/concurrent/CopyOnWriteArraySet;Ljava/util/concurrent/CopyOnWriteArraySet;
+PLcom/android/server/usage/UsageStatsService;->reportEventToAllUserId(Landroid/app/usage/UsageEvents$Event;)V
PLcom/android/server/usage/UsageStatsService;->stageChangedEstimatedLaunchTime(ILjava/lang/String;)Z
-PLcom/android/server/usage/UserUsageStatsService$$ExternalSyntheticLambda1;-><init>(JJLandroid/util/ArraySet;Landroid/util/ArraySet;I)V
+PLcom/android/server/usage/UserUsageStatsService$$ExternalSyntheticLambda1;-><init>(JJLandroid/util/ArraySet;Landroid/util/ArraySet;)V
PLcom/android/server/usage/UserUsageStatsService$$ExternalSyntheticLambda1;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z
-PLcom/android/server/usage/UserUsageStatsService$$ExternalSyntheticLambda2;-><init>(JJLjava/lang/String;I)V
-PLcom/android/server/usage/UserUsageStatsService$$ExternalSyntheticLambda2;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z
-PLcom/android/server/usage/UserUsageStatsService$1;-><init>()V
-PLcom/android/server/usage/UserUsageStatsService$1;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z
-PLcom/android/server/usage/UserUsageStatsService$2;-><init>()V
-PLcom/android/server/usage/UserUsageStatsService$3;-><init>()V
-PLcom/android/server/usage/UserUsageStatsService$4;-><init>(Lcom/android/server/usage/UserUsageStatsService;JJZ[ZIZLandroid/util/ArraySet;Landroid/util/ArraySet;)V
-HPLcom/android/server/usage/UserUsageStatsService$4;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z
-PLcom/android/server/usage/UserUsageStatsService$CachedEarlyEvents;-><init>()V
-PLcom/android/server/usage/UserUsageStatsService$CachedEarlyEvents;-><init>(Lcom/android/server/usage/UserUsageStatsService$CachedEarlyEvents-IA;)V
-PLcom/android/server/usage/UserUsageStatsService;->$r8$lambda$g-bl5VNBpy8gjNFALWiQqGzaU1A(JJLjava/lang/String;ILcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z
-PLcom/android/server/usage/UserUsageStatsService;->$r8$lambda$p0y5lz5q5TqvoITutDfa1s61KzA(JJLandroid/util/ArraySet;Landroid/util/ArraySet;ILcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z
+PLcom/android/server/usage/UserUsageStatsService$$ExternalSyntheticLambda2;-><init>(JJLjava/lang/String;)V
+HPLcom/android/server/usage/UserUsageStatsService$$ExternalSyntheticLambda2;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/usage/UserUsageStatsService$1;-><init>(I)V
+HPLcom/android/server/usage/UserUsageStatsService$1;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z
+PLcom/android/server/usage/UserUsageStatsService$4;-><init>(JJZ[ZIZLandroid/util/ArraySet;Landroid/util/ArraySet;)V
+PLcom/android/server/usage/UserUsageStatsService$4;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z
+PLcom/android/server/usage/UserUsageStatsService$6;-><init>(JJLjava/util/List;)V
+PLcom/android/server/usage/UserUsageStatsService$6;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z
PLcom/android/server/usage/UserUsageStatsService;-><clinit>()V
-PLcom/android/server/usage/UserUsageStatsService;-><init>(Landroid/content/Context;ILjava/io/File;Lcom/android/server/usage/UserUsageStatsService$StatsUpdatedListener;)V
+PLcom/android/server/usage/UserUsageStatsService;-><init>(Landroid/content/Context;ILjava/io/File;Lcom/android/server/usage/UsageStatsService;)V
HPLcom/android/server/usage/UserUsageStatsService;->checkAndGetTimeLocked()J
-HPLcom/android/server/usage/UserUsageStatsService;->convertToSystemTimeLocked(Landroid/app/usage/UsageEvents$Event;)V
-HPLcom/android/server/usage/UserUsageStatsService;->eventToString(I)Ljava/lang/String;
+PLcom/android/server/usage/UserUsageStatsService;->dump(Lcom/android/internal/util/IndentingPrintWriter;Ljava/util/List;Z)V
+PLcom/android/server/usage/UserUsageStatsService;->eventToString(I)Ljava/lang/String;
+PLcom/android/server/usage/UserUsageStatsService;->formatDateTime(JZ)Ljava/lang/String;
+PLcom/android/server/usage/UserUsageStatsService;->formatElapsedTime(JZ)Ljava/lang/String;
PLcom/android/server/usage/UserUsageStatsService;->init(JLjava/util/HashMap;Z)V
-HPLcom/android/server/usage/UserUsageStatsService;->lambda$queryEarliestAppEvents$0(JJLandroid/util/ArraySet;Landroid/util/ArraySet;ILcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z
-HPLcom/android/server/usage/UserUsageStatsService;->lambda$queryEarliestEventsForPackage$2(JJLjava/lang/String;ILcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z
-HPLcom/android/server/usage/UserUsageStatsService;->notifyStatsChanged()V
+PLcom/android/server/usage/UserUsageStatsService;->intervalToString(I)Ljava/lang/String;
+PLcom/android/server/usage/UserUsageStatsService;->loadActiveStats(J)V
+PLcom/android/server/usage/UserUsageStatsService;->notifyStatsChanged()V
PLcom/android/server/usage/UserUsageStatsService;->persistActiveStats()V
-PLcom/android/server/usage/UserUsageStatsService;->queryEarliestAppEvents(JJI)Landroid/app/usage/UsageEvents;
-PLcom/android/server/usage/UserUsageStatsService;->queryEarliestEventsForPackage(JJLjava/lang/String;I)Landroid/app/usage/UsageEvents;
+PLcom/android/server/usage/UserUsageStatsService;->printEvent(Lcom/android/internal/util/IndentingPrintWriter;Landroid/app/usage/UsageEvents$Event;Z)V
+PLcom/android/server/usage/UserUsageStatsService;->printEventAggregation(Lcom/android/internal/util/IndentingPrintWriter;Ljava/lang/String;Lcom/android/server/usage/IntervalStats$EventTracker;Z)V
+PLcom/android/server/usage/UserUsageStatsService;->printIntervalStats(Lcom/android/internal/util/IndentingPrintWriter;Lcom/android/server/usage/IntervalStats;ZZLjava/util/List;)V
+PLcom/android/server/usage/UserUsageStatsService;->queryEarliestAppEvents(JJ)Landroid/app/usage/UsageEvents;
+HPLcom/android/server/usage/UserUsageStatsService;->queryEarliestEventsForPackage(JJLjava/lang/String;)Landroid/app/usage/UsageEvents;
PLcom/android/server/usage/UserUsageStatsService;->queryEvents(JJI[ILandroid/util/ArraySet;)Landroid/app/usage/UsageEvents;
HPLcom/android/server/usage/UserUsageStatsService;->queryStats(IJJLcom/android/server/usage/UsageStatsDatabase$StatCombiner;Z)Ljava/util/List;
-PLcom/android/server/usage/UserUsageStatsService;->queryUsageStats(IJJ)Ljava/util/List;
-PLcom/android/server/usage/UserUsageStatsService;->readPackageMappingsLocked(Ljava/util/HashMap;Z)V
-HPLcom/android/server/usage/UserUsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;)V
+HPLcom/android/server/usage/UserUsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+PLcom/android/server/usage/UserUsageStatsService;->updatePackageMappingsLocked(Ljava/util/HashMap;)Z
PLcom/android/server/usage/UserUsageStatsService;->updateRolloverDeadline()V
PLcom/android/server/usage/UserUsageStatsService;->validRange(JJJ)Z
+PLcom/android/server/usb/DualOutputStreamDumpSink;-><init>(Lcom/android/internal/util/dump/DualDumpOutputStream;J)V
PLcom/android/server/usb/MtpNotificationManager$Receiver;-><init>(Lcom/android/server/usb/MtpNotificationManager;)V
-PLcom/android/server/usb/MtpNotificationManager$Receiver;-><init>(Lcom/android/server/usb/MtpNotificationManager;Lcom/android/server/usb/MtpNotificationManager$Receiver-IA;)V
-PLcom/android/server/usb/MtpNotificationManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/MtpNotificationManager$OnOpenInAppListener;)V
-PLcom/android/server/usb/UsbAlsaManager$1;-><init>(Lcom/android/server/usb/UsbAlsaManager;Ljava/io/File;I)V
-PLcom/android/server/usb/UsbAlsaManager$DenyListEntry;-><init>(III)V
+PLcom/android/server/usb/MtpNotificationManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/UsbProfileGroupSettingsManager$$ExternalSyntheticLambda3;)V
+PLcom/android/server/usb/UsbAlsaManager$1;-><init>(Lcom/android/server/usb/UsbAlsaManager;Ljava/io/File;)V
+PLcom/android/server/usb/UsbAlsaManager$DenyListEntry;-><init>(I)V
PLcom/android/server/usb/UsbAlsaManager;-><clinit>()V
PLcom/android/server/usb/UsbAlsaManager;-><init>(Landroid/content/Context;)V
-PLcom/android/server/usb/UsbAlsaManager;->setPeripheralMidiState(ZII)V
-PLcom/android/server/usb/UsbAlsaManager;->systemReady()V
-PLcom/android/server/usb/UsbDeviceManager$1;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
-PLcom/android/server/usb/UsbDeviceManager$2;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
-PLcom/android/server/usb/UsbDeviceManager$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/usb/UsbDeviceManager$3;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
-PLcom/android/server/usb/UsbDeviceManager$4;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
+PLcom/android/server/usb/UsbAlsaManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;)V
+PLcom/android/server/usb/UsbDeviceManager$1;-><init>(Lcom/android/server/usb/UsbDeviceManager;I)V
+HPLcom/android/server/usb/UsbDeviceManager$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/usb/UsbDeviceManager$UsbHandler$AdbTransport;-><init>(Lcom/android/server/usb/UsbDeviceManager$UsbHandler;)V
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;-><init>(Landroid/os/Looper;Landroid/content/Context;Lcom/android/server/usb/UsbDeviceManager;Lcom/android/server/usb/UsbAlsaManager;Lcom/android/server/usb/UsbPermissionManager;)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->attachAccessoryAfterBoot()V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->dumpFunctions(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;JJ)V
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->finishBoot(I)V
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->getAppliedFunctions(J)J
-PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->getChargingFunctions()J
-PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->getPinnedSharedPrefs(Landroid/content/Context;)Landroid/content/SharedPreferences;
-PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->getSystemProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isAdbEnabled()Z
-PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isTv()Z
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isUsbDataTransferActive(J)Z
-PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isUsbStateChanged(Landroid/content/Intent;)Z
-PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isUsbTransferAllowed()Z
-PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->sendMessage(IZ)V
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->sendStickyBroadcast(Landroid/content/Intent;)V
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateAdbNotification(Z)V
-PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateMidiFunction()V
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateState(Ljava/lang/String;)V
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbFunctions()V
HPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbNotification(Z)V
-PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbSpeed()V
-HPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbStateBroadcastIfNeeded(J)V
-PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;-><init>(Landroid/os/Looper;Landroid/content/Context;Lcom/android/server/usb/UsbDeviceManager;Lcom/android/server/usb/UsbAlsaManager;Lcom/android/server/usb/UsbPermissionManager;)V
-PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;->addFunction(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;->applyAdbFunction(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;->applyOemOverrideFunction(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;->containsFunction(Ljava/lang/String;Ljava/lang/String;)Z
-PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;->getPersistProp(Z)Ljava/lang/String;
-PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;->handlerInitDone(I)V
-PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;->isNormalBoot()Z
-PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;->readOemUsbOverrideConfig(Landroid/content/Context;)V
-PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;->setEnabledFunctions(JZI)V
-PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;->trySetEnabledFunctions(JZ)Z
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbStateBroadcastIfNeeded(J)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;-><init>(Landroid/os/Looper;Landroid/content/Context;Lcom/android/server/usb/UsbDeviceManager;Lcom/android/server/usb/UsbAlsaManager;Lcom/android/server/usb/UsbPermissionManager;)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;->handlerInitDone(I)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;->setEnabledFunctions(IJZ)V
PLcom/android/server/usb/UsbDeviceManager$UsbUEventObserver;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
-PLcom/android/server/usb/UsbDeviceManager$UsbUEventObserver;-><init>(Lcom/android/server/usb/UsbDeviceManager;Lcom/android/server/usb/UsbDeviceManager$UsbUEventObserver-IA;)V
PLcom/android/server/usb/UsbDeviceManager$UsbUEventObserver;->onUEvent(Landroid/os/UEventObserver$UEvent;)V
-PLcom/android/server/usb/UsbDeviceManager;->-$$Nest$fgetmHandler(Lcom/android/server/usb/UsbDeviceManager;)Lcom/android/server/usb/UsbDeviceManager$UsbHandler;
-PLcom/android/server/usb/UsbDeviceManager;->-$$Nest$sfgetsEventLogger()Lcom/android/server/utils/EventLogger;
-PLcom/android/server/usb/UsbDeviceManager;->-$$Nest$sfgetsUsbOperationCount()Ljava/util/concurrent/atomic/AtomicInteger;
-PLcom/android/server/usb/UsbDeviceManager;-><clinit>()V
-HPLcom/android/server/usb/UsbDeviceManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/UsbAlsaManager;Lcom/android/server/usb/UsbSettingsManager;Lcom/android/server/usb/UsbPermissionManager;)V
-PLcom/android/server/usb/UsbDeviceManager;->bootCompleted()V
-PLcom/android/server/usb/UsbDeviceManager;->initRndisAddress()V
-PLcom/android/server/usb/UsbDeviceManager;->logAndPrintException(Lcom/android/internal/util/IndentingPrintWriter;Ljava/lang/String;Ljava/lang/Exception;)V
+HSPLcom/android/server/usb/UsbDeviceManager;-><clinit>()V
+PLcom/android/server/usb/UsbDeviceManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/UsbAlsaManager;Lcom/android/server/usb/UsbPermissionManager;)V
+PLcom/android/server/usb/UsbDeviceManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;)V
+PLcom/android/server/usb/UsbDeviceManager;->onAwakeStateChanged(Z)V
PLcom/android/server/usb/UsbDeviceManager;->onKeyguardStateChanged(Z)V
-PLcom/android/server/usb/UsbDeviceManager;->onUnlockUser(I)V
-PLcom/android/server/usb/UsbDeviceManager;->setCurrentUser(ILcom/android/server/usb/UsbProfileGroupSettingsManager;)V
-PLcom/android/server/usb/UsbDeviceManager;->systemReady()V
-PLcom/android/server/usb/UsbHandlerManager;-><clinit>()V
PLcom/android/server/usb/UsbHandlerManager;-><init>(Landroid/content/Context;)V
HSPLcom/android/server/usb/UsbHostManager;-><clinit>()V
-PLcom/android/server/usb/UsbPermissionManager;-><clinit>()V
PLcom/android/server/usb/UsbPermissionManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/UsbService;)V
+PLcom/android/server/usb/UsbPermissionManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;)V
+PLcom/android/server/usb/UsbPermissionManager;->getPermissionsForUser(I)Lcom/android/server/usb/UsbUserPermissionManager;
+PLcom/android/server/usb/UsbPortManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/usb/UsbPortManager;Landroid/content/Intent;I)V
+PLcom/android/server/usb/UsbPortManager$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/usb/UsbPortManager$1;-><init>(Lcom/android/server/usb/UsbPortManager;Landroid/os/Looper;)V
PLcom/android/server/usb/UsbPortManager$1;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/usb/UsbPortManager;->-$$Nest$fgetmContext(Lcom/android/server/usb/UsbPortManager;)Landroid/content/Context;
-PLcom/android/server/usb/UsbPortManager;->-$$Nest$fputmNotificationManager(Lcom/android/server/usb/UsbPortManager;Landroid/app/NotificationManager;)V
+PLcom/android/server/usb/UsbPortManager$PortInfo;-><init>(Landroid/hardware/usb/UsbManager;Ljava/lang/String;IIZZZI)V
+PLcom/android/server/usb/UsbPortManager$PortInfo;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;)V
+PLcom/android/server/usb/UsbPortManager$PortInfo;->setStatus(IZIZIZIIIIZI[IILandroid/hardware/usb/DisplayPortAltModeInfo;)Z
+PLcom/android/server/usb/UsbPortManager$PortInfo;->toString()Ljava/lang/String;
PLcom/android/server/usb/UsbPortManager;-><clinit>()V
PLcom/android/server/usb/UsbPortManager;-><init>(Landroid/content/Context;)V
+PLcom/android/server/usb/UsbPortManager;->addOrUpdatePortLocked(Ljava/lang/String;IIIZIZIZZIZIIZIZ[IIILandroid/hardware/usb/DisplayPortAltModeInfo;Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/usb/UsbPortManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;J)V
PLcom/android/server/usb/UsbPortManager;->getPorts()[Landroid/hardware/usb/UsbPort;
-PLcom/android/server/usb/UsbPortManager;->getUsbHalVersion()I
+PLcom/android/server/usb/UsbPortManager;->handlePortLocked(Lcom/android/server/usb/UsbPortManager$PortInfo;)V
PLcom/android/server/usb/UsbPortManager;->logAndPrint(ILcom/android/internal/util/IndentingPrintWriter;Ljava/lang/String;)V
-PLcom/android/server/usb/UsbPortManager;->logAndPrintException(Lcom/android/internal/util/IndentingPrintWriter;Ljava/lang/String;Ljava/lang/Exception;)V
PLcom/android/server/usb/UsbPortManager;->registerForDisplayPortEvents(Landroid/hardware/usb/IDisplayPortAltModeInfoListener;)Z
-PLcom/android/server/usb/UsbPortManager;->systemReady()V
+PLcom/android/server/usb/UsbPortManager;->updatePorts(Ljava/util/ArrayList;)V
+PLcom/android/server/usb/UsbPortManager;->updatePortsLocked(Lcom/android/internal/util/IndentingPrintWriter;Ljava/util/ArrayList;)V
PLcom/android/server/usb/UsbProfileGroupSettingsManager$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)V
PLcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;-><init>(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)V
-PLcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;-><init>(Lcom/android/server/usb/UsbProfileGroupSettingsManager;Lcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor-IA;)V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;->onPackageAdded(Ljava/lang/String;I)V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;-><init>(Ljava/lang/String;Landroid/os/UserHandle;)V
PLcom/android/server/usb/UsbProfileGroupSettingsManager;-><clinit>()V
PLcom/android/server/usb/UsbProfileGroupSettingsManager;-><init>(Landroid/content/Context;Landroid/os/UserHandle;Lcom/android/server/usb/UsbSettingsManager;Lcom/android/server/usb/UsbHandlerManager;)V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;)V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->handlePackageAddedLocked(Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;Landroid/content/pm/ActivityInfo;Ljava/lang/String;)Z
PLcom/android/server/usb/UsbProfileGroupSettingsManager;->readSettingsLocked()V
PLcom/android/server/usb/UsbProfileGroupSettingsManager;->upgradeSingleUserLocked()V
PLcom/android/server/usb/UsbService$1;-><init>(Lcom/android/server/usb/UsbService;)V
-PLcom/android/server/usb/UsbService$Lifecycle$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/usb/UsbService$Lifecycle;)V
+PLcom/android/server/usb/UsbService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/usb/UsbService$Lifecycle$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/usb/UsbService$Lifecycle;I)V
PLcom/android/server/usb/UsbService$Lifecycle$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/usb/UsbService$Lifecycle$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/usb/UsbService$Lifecycle;)V
-PLcom/android/server/usb/UsbService$Lifecycle$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/usb/UsbService$Lifecycle;->$r8$lambda$HIZVSW8uTg1XjWF6etZh-bC1WP4(Lcom/android/server/usb/UsbService$Lifecycle;)V
-PLcom/android/server/usb/UsbService$Lifecycle;->$r8$lambda$Mg_De1rrLXj-nb8KhKM4m5DIFVU(Lcom/android/server/usb/UsbService$Lifecycle;)V
PLcom/android/server/usb/UsbService$Lifecycle;-><init>(Landroid/content/Context;)V
-PLcom/android/server/usb/UsbService$Lifecycle;->lambda$onBootPhase$1()V
-PLcom/android/server/usb/UsbService$Lifecycle;->lambda$onStart$0()V
PLcom/android/server/usb/UsbService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/usb/UsbService$Lifecycle;->onStart()V
PLcom/android/server/usb/UsbService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/usb/UsbService$PackageUninstallMonitor;-><init>(Lcom/android/server/usb/UsbService;)V
+PLcom/android/server/usb/UsbService$StrongAuthTracker;-><init>(Lcom/android/server/usb/UsbService;Landroid/content/Context;Landroid/os/Looper;)V
+PLcom/android/server/usb/UsbService$StrongAuthTracker;->onStrongAuthRequiredChanged(I)V
PLcom/android/server/usb/UsbService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/usb/UsbService;->bootCompleted()V
+PLcom/android/server/usb/UsbService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/usb/UsbService;->getCurrentUsbSpeed()I
+PLcom/android/server/usb/UsbService;->getPortStatus(Ljava/lang/String;)Landroid/hardware/usb/UsbPortStatus;
PLcom/android/server/usb/UsbService;->getPorts()Ljava/util/List;
-PLcom/android/server/usb/UsbService;->getUsbHalVersion()I
PLcom/android/server/usb/UsbService;->onSwitchUser(I)V
-PLcom/android/server/usb/UsbService;->onUnlockUser(I)V
PLcom/android/server/usb/UsbService;->registerForDisplayPortEvents(Landroid/hardware/usb/IDisplayPortAltModeInfoListener;)Z
-PLcom/android/server/usb/UsbService;->systemReady()V
-PLcom/android/server/usb/UsbSettingsManager;-><clinit>()V
PLcom/android/server/usb/UsbSettingsManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/UsbService;)V
+PLcom/android/server/usb/UsbSettingsManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;)V
PLcom/android/server/usb/UsbSettingsManager;->getSettingsForProfileGroup(Landroid/os/UserHandle;)Lcom/android/server/usb/UsbProfileGroupSettingsManager;
+PLcom/android/server/usb/UsbSettingsManager;->getSettingsForUser(I)Lcom/android/server/usb/UsbUserSettingsManager;
+PLcom/android/server/usb/UsbUserPermissionManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/UsbUserSettingsManager;)V
+PLcom/android/server/usb/UsbUserPermissionManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;)V
+PLcom/android/server/usb/UsbUserPermissionManager;->readPermissionsLocked()V
+PLcom/android/server/usb/UsbUserSettingsManager;-><init>(Landroid/content/Context;Landroid/os/UserHandle;)V
+PLcom/android/server/usb/UsbUserSettingsManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;)V
+PLcom/android/server/usb/flags/FeatureFlagsImpl;->init()V
+PLcom/android/server/usb/flags/Flags;-><clinit>()V
+PLcom/android/server/usb/flags/Flags;->checkUserActionUnlocked()Z
+PLcom/android/server/usb/flags/Flags;->enableBindToMtpService()Z
+PLcom/android/server/usb/hal/gadget/UsbGadgetAidl$UsbGadgetCallback;-><init>(Lcom/android/server/usb/hal/gadget/UsbGadgetAidl;)V
+PLcom/android/server/usb/hal/gadget/UsbGadgetAidl$UsbGadgetCallback;->getCurrentUsbFunctionsCb(JIJ)V
PLcom/android/server/usb/hal/gadget/UsbGadgetAidl;-><clinit>()V
-PLcom/android/server/usb/hal/gadget/UsbGadgetAidl;->isServicePresent(Lcom/android/internal/util/IndentingPrintWriter;)Z
-PLcom/android/server/usb/hal/gadget/UsbGadgetHalInstance;->getInstance(Lcom/android/server/usb/UsbDeviceManager;Lcom/android/internal/util/IndentingPrintWriter;)Lcom/android/server/usb/hal/gadget/UsbGadgetHal;
-PLcom/android/server/usb/hal/gadget/UsbGadgetHidl;->isServicePresent(Lcom/android/internal/util/IndentingPrintWriter;)Z
+PLcom/android/server/usb/hal/gadget/UsbGadgetAidl;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
+PLcom/android/server/usb/hal/gadget/UsbGadgetAidl;->getCurrentUsbFunctions(J)V
+PLcom/android/server/usb/hal/gadget/UsbGadgetAidl;->getGadgetHalVersion()I
+PLcom/android/server/usb/hal/gadget/UsbGadgetAidl;->getUsbSpeed(J)V
+PLcom/android/server/usb/hal/gadget/UsbGadgetHalInstance;->getInstance(Lcom/android/server/usb/UsbDeviceManager;)Lcom/android/server/usb/hal/gadget/UsbGadgetHal;
+PLcom/android/server/usb/hal/port/RawPortInfo;-><clinit>()V
+PLcom/android/server/usb/hal/port/RawPortInfo;-><init>(Ljava/lang/String;IIIZIZIZZIZIIZIZ[IIILandroid/hardware/usb/DisplayPortAltModeInfo;)V
+PLcom/android/server/usb/hal/port/UsbPortAidl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/usb/hal/port/UsbPortAidl;)V
+PLcom/android/server/usb/hal/port/UsbPortAidl$HALCallback;->asBinder()Landroid/os/IBinder;
+PLcom/android/server/usb/hal/port/UsbPortAidl$HALCallback;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/usb/hal/port/UsbPortAidl$HALCallback;->toContaminantProtectionStatus(B)I
+PLcom/android/server/usb/hal/port/UsbPortAidl$HALCallback;->toPortMode(B)I
PLcom/android/server/usb/hal/port/UsbPortAidl;-><clinit>()V
-PLcom/android/server/usb/hal/port/UsbPortAidl;->isServicePresent(Lcom/android/internal/util/IndentingPrintWriter;)Z
-PLcom/android/server/usb/hal/port/UsbPortHalInstance;->getInstance(Lcom/android/server/usb/UsbPortManager;Lcom/android/internal/util/IndentingPrintWriter;)Lcom/android/server/usb/hal/port/UsbPortHal;
-PLcom/android/server/usb/hal/port/UsbPortHidl;-><clinit>()V
-PLcom/android/server/usb/hal/port/UsbPortHidl;->isServicePresent(Lcom/android/internal/util/IndentingPrintWriter;)Z
+PLcom/android/server/usb/hal/port/UsbPortAidl;-><init>(Lcom/android/server/usb/UsbPortManager;)V
+PLcom/android/server/usb/hal/port/UsbPortAidl;->connectToProxy()V
+PLcom/android/server/usb/hal/port/UsbPortAidl;->getUsbHalVersion()I
+PLcom/android/server/usb/hal/port/UsbPortAidl;->queryPortStatus(J)V
+PLcom/android/server/usb/hal/port/UsbPortAidl;->systemReady()V
+PLcom/android/server/utils/AlarmQueue$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/utils/AlarmQueue;)V
+PLcom/android/server/utils/AlarmQueue$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/utils/AlarmQueue$1;-><init>(Lcom/android/server/utils/AlarmQueue;)V
-HPLcom/android/server/utils/AlarmQueue$1;->run()V
-PLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/utils/AlarmQueue$1;->run()V
HPLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HPLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;->$r8$lambda$a9G3NCnbGSjGaU6KBkUKenfyhOo(Landroid/util/Pair;Landroid/util/Pair;)I
PLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;-><clinit>()V
PLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;-><init>()V
-HPLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;->lambda$static$0(Landroid/util/Pair;Landroid/util/Pair;)I
-HPLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;->removeKey(Ljava/lang/Object;)Z
+HPLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;->removeKey(Ljava/lang/Object;)Z+]Ljava/lang/Object;Lcom/android/server/job/controllers/JobStatus;,Ljava/lang/String;]Ljava/util/PriorityQueue;Lcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;
PLcom/android/server/utils/AlarmQueue$Injector;-><init>()V
-PLcom/android/server/utils/AlarmQueue;->-$$Nest$fgetmAlarmTag(Lcom/android/server/utils/AlarmQueue;)Ljava/lang/String;
-PLcom/android/server/utils/AlarmQueue;->-$$Nest$fgetmContext(Lcom/android/server/utils/AlarmQueue;)Landroid/content/Context;
-PLcom/android/server/utils/AlarmQueue;->-$$Nest$fgetmExactAlarm(Lcom/android/server/utils/AlarmQueue;)Z
-PLcom/android/server/utils/AlarmQueue;->-$$Nest$fgetmHandler(Lcom/android/server/utils/AlarmQueue;)Landroid/os/Handler;
-PLcom/android/server/utils/AlarmQueue;->-$$Nest$fgetmLock(Lcom/android/server/utils/AlarmQueue;)Ljava/lang/Object;
-PLcom/android/server/utils/AlarmQueue;->-$$Nest$fgetmMinTimeBetweenAlarmsMs(Lcom/android/server/utils/AlarmQueue;)J
-PLcom/android/server/utils/AlarmQueue;->-$$Nest$fgetmTriggerTimeElapsed(Lcom/android/server/utils/AlarmQueue;)J
PLcom/android/server/utils/AlarmQueue;-><clinit>()V
PLcom/android/server/utils/AlarmQueue;-><init>(Landroid/content/Context;Landroid/os/Looper;Ljava/lang/String;Ljava/lang/String;ZJ)V
-HPLcom/android/server/utils/AlarmQueue;-><init>(Landroid/content/Context;Landroid/os/Looper;Ljava/lang/String;Ljava/lang/String;ZJLcom/android/server/utils/AlarmQueue$Injector;)V
-HPLcom/android/server/utils/AlarmQueue;->addAlarm(Ljava/lang/Object;J)V
+PLcom/android/server/utils/AlarmQueue;-><init>(Landroid/content/Context;Landroid/os/Looper;Ljava/lang/String;Ljava/lang/String;ZJLcom/android/server/utils/AlarmQueue$Injector;)V
+HPLcom/android/server/utils/AlarmQueue;->addAlarm(JLjava/lang/Object;)V
+PLcom/android/server/utils/AlarmQueue;->dump(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/utils/AlarmQueue;->onAlarm()V
HPLcom/android/server/utils/AlarmQueue;->removeAlarmForKey(Ljava/lang/Object;)V
-HPLcom/android/server/utils/AlarmQueue;->setNextAlarmLocked()V
HPLcom/android/server/utils/AlarmQueue;->setNextAlarmLocked(J)V
+PLcom/android/server/utils/AnrTimer$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/utils/AnrTimer$Args;-><init>()V
HSPLcom/android/server/utils/AnrTimer$FeatureEnabled;-><init>(Lcom/android/server/utils/AnrTimer;)V
-PLcom/android/server/utils/AnrTimer$FeatureEnabled;->accept(Ljava/lang/Object;)Z
HPLcom/android/server/utils/AnrTimer$FeatureEnabled;->cancel(Ljava/lang/Object;)Z
+PLcom/android/server/utils/AnrTimer$FeatureEnabled;->discard(Ljava/lang/Object;)Z
+PLcom/android/server/utils/AnrTimer$FeatureEnabled;->dump(Landroid/util/IndentingPrintWriter;)V
PLcom/android/server/utils/AnrTimer$FeatureEnabled;->enabled()Z
-HPLcom/android/server/utils/AnrTimer$FeatureEnabled;->removeLocked(Ljava/lang/Object;)Ljava/lang/Integer;
-HPLcom/android/server/utils/AnrTimer$FeatureEnabled;->start(Ljava/lang/Object;IIJ)V
-HSPLcom/android/server/utils/AnrTimer$FeatureSwitch;-><init>(Lcom/android/server/utils/AnrTimer;)V
-HSPLcom/android/server/utils/AnrTimer$FeatureSwitch;-><init>(Lcom/android/server/utils/AnrTimer;Lcom/android/server/utils/AnrTimer$FeatureSwitch-IA;)V
-HSPLcom/android/server/utils/AnrTimer$Injector;-><init>()V
-HSPLcom/android/server/utils/AnrTimer$Injector;->anrTimerServiceEnabled()Z
-HPLcom/android/server/utils/AnrTimer;->-$$Nest$fgetmExtend(Lcom/android/server/utils/AnrTimer;)Z
-HSPLcom/android/server/utils/AnrTimer;->-$$Nest$fgetmLabel(Lcom/android/server/utils/AnrTimer;)Ljava/lang/String;
-HPLcom/android/server/utils/AnrTimer;->-$$Nest$fgetmLock(Lcom/android/server/utils/AnrTimer;)Ljava/lang/Object;
-HPLcom/android/server/utils/AnrTimer;->-$$Nest$fgetmMaxStarted(Lcom/android/server/utils/AnrTimer;)I
-HPLcom/android/server/utils/AnrTimer;->-$$Nest$fgetmTimerArgMap(Lcom/android/server/utils/AnrTimer;)Landroid/util/SparseArray;
-HPLcom/android/server/utils/AnrTimer;->-$$Nest$fgetmTimerIdMap(Lcom/android/server/utils/AnrTimer;)Landroid/util/ArrayMap;
-HPLcom/android/server/utils/AnrTimer;->-$$Nest$fgetmTotalStarted(Lcom/android/server/utils/AnrTimer;)I
-HPLcom/android/server/utils/AnrTimer;->-$$Nest$fputmMaxStarted(Lcom/android/server/utils/AnrTimer;I)V
-HPLcom/android/server/utils/AnrTimer;->-$$Nest$fputmTotalStarted(Lcom/android/server/utils/AnrTimer;I)V
-HSPLcom/android/server/utils/AnrTimer;->-$$Nest$mnativeAnrTimerCreate(Lcom/android/server/utils/AnrTimer;Ljava/lang/String;)J
-PLcom/android/server/utils/AnrTimer;->-$$Nest$mtrace(Lcom/android/server/utils/AnrTimer;Ljava/lang/String;I)V
-HSPLcom/android/server/utils/AnrTimer;->-$$Nest$sfgetsAnrTimerList()Landroid/util/LongSparseArray;
-HSPLcom/android/server/utils/AnrTimer;->-$$Nest$smanrTimerServiceEnabled()Z
-PLcom/android/server/utils/AnrTimer;->-$$Nest$smnativeAnrTimerAccept(JI)Z
-HPLcom/android/server/utils/AnrTimer;->-$$Nest$smnativeAnrTimerCancel(JI)Z
-HPLcom/android/server/utils/AnrTimer;->-$$Nest$smnativeAnrTimerStart(JIIJZ)I
+HPLcom/android/server/utils/AnrTimer$FeatureEnabled;->removeLocked(Ljava/lang/Object;)Ljava/lang/Integer;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/utils/AnrTimer$FeatureEnabled;->start(Ljava/lang/Object;IIJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HSPLcom/android/server/utils/AnrTimer;->-$$Nest$mnativeAnrTimerCreate(Lcom/android/server/utils/AnrTimer;Ljava/lang/String;ZZ)J
+PLcom/android/server/utils/AnrTimer;->-$$Nest$smnativeAnrTimerCancel(IJ)Z
+PLcom/android/server/utils/AnrTimer;->-$$Nest$smnativeAnrTimerDiscard(IJ)V
+PLcom/android/server/utils/AnrTimer;->-$$Nest$smnativeAnrTimerDump(J)[Ljava/lang/String;
+PLcom/android/server/utils/AnrTimer;->-$$Nest$smnativeAnrTimerStart(IIJJ)I
HSPLcom/android/server/utils/AnrTimer;-><clinit>()V
-HSPLcom/android/server/utils/AnrTimer;-><init>(Landroid/os/Handler;ILjava/lang/String;)V
-HSPLcom/android/server/utils/AnrTimer;-><init>(Landroid/os/Handler;ILjava/lang/String;Z)V
-HSPLcom/android/server/utils/AnrTimer;-><init>(Landroid/os/Handler;ILjava/lang/String;ZLcom/android/server/utils/AnrTimer$Injector;)V
-PLcom/android/server/utils/AnrTimer;->accept(Ljava/lang/Object;)Z
-HSPLcom/android/server/utils/AnrTimer;->anrTimerServiceEnabled()Z
-HPLcom/android/server/utils/AnrTimer;->cancel(Ljava/lang/Object;)Z
-HSPLcom/android/server/utils/AnrTimer;->createFeatureSwitch(Z)Lcom/android/server/utils/AnrTimer$FeatureSwitch;
+HSPLcom/android/server/utils/AnrTimer;-><init>(Landroid/os/Handler;ILjava/lang/String;Lcom/android/server/utils/AnrTimer$Args;)V
+PLcom/android/server/utils/AnrTimer;->cancel(Ljava/lang/Object;)V
+PLcom/android/server/utils/AnrTimer;->discard(Ljava/lang/Object;)V
+PLcom/android/server/utils/AnrTimer;->dump(Ljava/io/PrintWriter;ZLcom/android/server/utils/AnrTimer$Injector;)V
PLcom/android/server/utils/AnrTimer;->expire(IIIJ)Z
-HSPLcom/android/server/utils/AnrTimer;->nativeTimersSupported()Z
-HPLcom/android/server/utils/AnrTimer;->serviceEnabled()Z
-HPLcom/android/server/utils/AnrTimer;->start(Ljava/lang/Object;IIJ)V
-PLcom/android/server/utils/AnrTimer;->trace(Ljava/lang/String;I)V
-PLcom/android/server/utils/AnrTimer;->trace(Ljava/lang/String;IIIJ)V
+HPLcom/android/server/utils/AnrTimer;->start(JLjava/lang/Object;)V+]Lcom/android/server/utils/AnrTimer$FeatureSwitch;Lcom/android/server/utils/AnrTimer$FeatureEnabled;]Lcom/android/server/utils/AnrTimer;Lcom/android/server/am/ActiveServices$ProcessAnrTimer;,Lcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;
PLcom/android/server/utils/EventLogger$Event;-><clinit>()V
HPLcom/android/server/utils/EventLogger$Event;-><init>()V
PLcom/android/server/utils/EventLogger$Event;->printLog(ILjava/lang/String;)Lcom/android/server/utils/EventLogger$Event;
-PLcom/android/server/utils/EventLogger$Event;->printLog(Ljava/lang/String;)Lcom/android/server/utils/EventLogger$Event;
+PLcom/android/server/utils/EventLogger$Event;->printSlog(ILjava/lang/String;)V
+PLcom/android/server/utils/EventLogger$Event;->toString()Ljava/lang/String;
PLcom/android/server/utils/EventLogger$StringEvent;-><init>(Ljava/lang/String;)V
-PLcom/android/server/utils/EventLogger$StringEvent;-><init>(Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/utils/EventLogger$StringEvent;->eventToString()Ljava/lang/String;
-HPLcom/android/server/utils/EventLogger;-><init>(ILjava/lang/String;)V
+PLcom/android/server/utils/EventLogger;-><init>(ILjava/lang/String;)V
+PLcom/android/server/utils/EventLogger;->dump(Lcom/android/server/usb/DualOutputStreamDumpSink;)V
+PLcom/android/server/utils/EventLogger;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/utils/EventLogger;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
HPLcom/android/server/utils/EventLogger;->enqueue(Lcom/android/server/utils/EventLogger$Event;)V
-PLcom/android/server/utils/EventLogger;->enqueueAndLog(Ljava/lang/String;ILjava/lang/String;)V
-HSPLcom/android/server/utils/FeatureFlagsImpl;-><init>()V
-HSPLcom/android/server/utils/FeatureFlagsImpl;->anrTimerService()Z
-HSPLcom/android/server/utils/Flags;-><clinit>()V
-HSPLcom/android/server/utils/Flags;->anrTimerService()Z
+PLcom/android/server/utils/EventLogger;->enqueueAndLog(ILjava/lang/String;Ljava/lang/String;)V
HSPLcom/android/server/utils/FoldSettingProvider;-><clinit>()V
HSPLcom/android/server/utils/FoldSettingProvider;-><init>(Landroid/content/Context;Lcom/android/internal/util/SettingsWrapper;Lcom/android/internal/foldables/FoldLockSettingAvailabilityProvider;)V
PLcom/android/server/utils/PriorityDump;->dump(Lcom/android/server/utils/PriorityDump$PriorityDumper;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
@@ -24383,38 +19472,28 @@ PLcom/android/server/utils/Slogf;->i(Ljava/lang/String;Ljava/lang/String;[Ljava/
PLcom/android/server/utils/Slogf;->v(Ljava/lang/String;Ljava/lang/String;)I
HSPLcom/android/server/utils/Slogf;->w(Ljava/lang/String;Ljava/lang/String;)I
HSPLcom/android/server/utils/Slogf;->w(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
-HSPLcom/android/server/utils/SnapshotCache$Auto;-><init>(Lcom/android/server/utils/Snappable;Lcom/android/server/utils/Watchable;Ljava/lang/String;)V
-HSPLcom/android/server/utils/SnapshotCache$Auto;->createSnapshot()Lcom/android/server/utils/Snappable;
+HSPLcom/android/server/utils/SnapshotCache$Auto;-><init>()V
+HSPLcom/android/server/utils/SnapshotCache$Auto;-><init>(Ljava/lang/Object;Lcom/android/server/utils/Watchable;Ljava/lang/String;I)V
HSPLcom/android/server/utils/SnapshotCache$Auto;->createSnapshot()Ljava/lang/Object;
-HSPLcom/android/server/utils/SnapshotCache$Sealed;-><init>()V
-HSPLcom/android/server/utils/SnapshotCache$Statistics;->-$$Nest$fgetmRebuilt(Lcom/android/server/utils/SnapshotCache$Statistics;)Ljava/util/concurrent/atomic/AtomicInteger;
-HSPLcom/android/server/utils/SnapshotCache$Statistics;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/utils/SnapshotCache$Statistics;-><init>()V
HSPLcom/android/server/utils/SnapshotCache;-><clinit>()V
HSPLcom/android/server/utils/SnapshotCache;-><init>()V
-HSPLcom/android/server/utils/SnapshotCache;-><init>(Ljava/lang/Object;Lcom/android/server/utils/Watchable;)V
HSPLcom/android/server/utils/SnapshotCache;-><init>(Ljava/lang/Object;Lcom/android/server/utils/Watchable;Ljava/lang/String;)V
HSPLcom/android/server/utils/SnapshotCache;->onChange(Lcom/android/server/utils/Watchable;)V
-HSPLcom/android/server/utils/SnapshotCache;->snapshot()Ljava/lang/Object;
-HSPLcom/android/server/utils/Snapshots;->maybeSnapshot(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/utils/SnapshotCache;->snapshot()Ljava/lang/Object;+]Lcom/android/server/utils/SnapshotCache;megamorphic_types
+HSPLcom/android/server/utils/Snapshots;->maybeSnapshot(Ljava/lang/Object;)Ljava/lang/Object;+]Lcom/android/server/utils/Snappable;Lcom/android/server/pm/PackageSetting;,Lcom/android/server/pm/PreferredIntentResolver;,Lcom/android/server/pm/SharedUserSetting;
HSPLcom/android/server/utils/TimingsTraceAndSlog;-><init>()V
-HPLcom/android/server/utils/TimingsTraceAndSlog;-><init>(Lcom/android/server/utils/TimingsTraceAndSlog;)V
+HSPLcom/android/server/utils/TimingsTraceAndSlog;-><init>(JLjava/lang/String;)V
+PLcom/android/server/utils/TimingsTraceAndSlog;-><init>(Lcom/android/server/utils/TimingsTraceAndSlog;)V
HSPLcom/android/server/utils/TimingsTraceAndSlog;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/utils/TimingsTraceAndSlog;-><init>(Ljava/lang/String;J)V
-HSPLcom/android/server/utils/TimingsTraceAndSlog;->logDuration(Ljava/lang/String;J)V
HSPLcom/android/server/utils/TimingsTraceAndSlog;->newAsyncLog()Lcom/android/server/utils/TimingsTraceAndSlog;
HSPLcom/android/server/utils/TimingsTraceAndSlog;->traceBegin(Ljava/lang/String;)V
-PLcom/android/server/utils/UserSettingDeviceConfigMediator$SettingsOverridesAllMediator;-><init>(C)V
-PLcom/android/server/utils/UserSettingDeviceConfigMediator$SettingsOverridesAllMediator;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/utils/UserSettingDeviceConfigMediator$SettingsOverridesIndividualMediator;-><init>(C)V
-PLcom/android/server/utils/UserSettingDeviceConfigMediator;-><clinit>()V
-PLcom/android/server/utils/UserSettingDeviceConfigMediator;-><init>(C)V
-PLcom/android/server/utils/UserSettingDeviceConfigMediator;->setDeviceConfigProperties(Landroid/provider/DeviceConfig$Properties;)V
-PLcom/android/server/utils/UserSettingDeviceConfigMediator;->setSettingsString(Ljava/lang/String;)V
-PLcom/android/server/utils/UserTokenWatcher;-><init>(Lcom/android/server/utils/UserTokenWatcher$Callback;Landroid/os/Handler;Ljava/lang/String;)V
-HSPLcom/android/server/utils/Watchable;->verifyWatchedAttributes(Ljava/lang/Object;Lcom/android/server/utils/Watcher;)V
+PLcom/android/server/utils/UserSettingDeviceConfigMediator$SettingsOverridesIndividualMediator;-><init>()V
+PLcom/android/server/utils/UserTokenWatcher;-><init>(Lcom/android/server/wm/KeyguardDisableHandler$1;Landroid/os/Handler;)V
+PLcom/android/server/utils/UserTokenWatcher;->isAcquired(I)Z
HSPLcom/android/server/utils/Watchable;->verifyWatchedAttributes(Ljava/lang/Object;Lcom/android/server/utils/Watcher;Z)V
HSPLcom/android/server/utils/WatchableImpl;-><init>()V
-HSPLcom/android/server/utils/WatchableImpl;->dispatchChange(Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/utils/WatchableImpl;->dispatchChange(Lcom/android/server/utils/Watchable;)V+]Lcom/android/server/utils/Watcher;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/utils/WatchableImpl;->isRegisteredObserver(Lcom/android/server/utils/Watcher;)Z
HSPLcom/android/server/utils/WatchableImpl;->registerObserver(Lcom/android/server/utils/Watcher;)V
HSPLcom/android/server/utils/WatchableImpl;->registeredObserverCount()I
@@ -24422,234 +19501,131 @@ HSPLcom/android/server/utils/WatchableImpl;->seal()V
HSPLcom/android/server/utils/WatchableImpl;->unregisterObserver(Lcom/android/server/utils/Watcher;)V
HSPLcom/android/server/utils/WatchedArrayList$1;-><init>(Lcom/android/server/utils/WatchedArrayList;)V
HSPLcom/android/server/utils/WatchedArrayList$1;->onChange(Lcom/android/server/utils/Watchable;)V
-HSPLcom/android/server/utils/WatchedArrayList;-><init>()V
HSPLcom/android/server/utils/WatchedArrayList;-><init>(I)V
-HSPLcom/android/server/utils/WatchedArrayList;->add(Ljava/lang/Object;)Z
HSPLcom/android/server/utils/WatchedArrayList;->clear()V
-HSPLcom/android/server/utils/WatchedArrayList;->get(I)Ljava/lang/Object;
-HSPLcom/android/server/utils/WatchedArrayList;->onChanged()V
HSPLcom/android/server/utils/WatchedArrayList;->registerChild(Ljava/lang/Object;)V
HSPLcom/android/server/utils/WatchedArrayList;->registerObserver(Lcom/android/server/utils/Watcher;)V
-HSPLcom/android/server/utils/WatchedArrayList;->set(ILjava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/utils/WatchedArrayList;->size()I
-HSPLcom/android/server/utils/WatchedArrayList;->snapshot()Lcom/android/server/utils/WatchedArrayList;
-HSPLcom/android/server/utils/WatchedArrayList;->snapshot()Ljava/lang/Object;
-HSPLcom/android/server/utils/WatchedArrayList;->snapshot(Lcom/android/server/utils/WatchedArrayList;Lcom/android/server/utils/WatchedArrayList;)V
-HSPLcom/android/server/utils/WatchedArrayList;->unregisterChild(Ljava/lang/Object;)V
-HSPLcom/android/server/utils/WatchedArrayList;->unregisterChildIf(Ljava/lang/Object;)V
+HSPLcom/android/server/utils/WatchedArrayList;->set(ILcom/android/server/pm/SettingBase;)V
+HSPLcom/android/server/utils/WatchedArrayList;->snapshot()Ljava/lang/Object;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/utils/WatchedArrayMap$1;-><init>(Lcom/android/server/utils/WatchedArrayMap;)V
HSPLcom/android/server/utils/WatchedArrayMap$1;->onChange(Lcom/android/server/utils/Watchable;)V
HSPLcom/android/server/utils/WatchedArrayMap;-><init>()V
-HSPLcom/android/server/utils/WatchedArrayMap;-><init>(IZ)V
-HSPLcom/android/server/utils/WatchedArrayMap;->containsKey(Ljava/lang/Object;)Z
+HSPLcom/android/server/utils/WatchedArrayMap;-><init>(I)V
+PLcom/android/server/utils/WatchedArrayMap;->containsKey(Ljava/lang/Object;)Z
HSPLcom/android/server/utils/WatchedArrayMap;->entrySet()Ljava/util/Set;
HSPLcom/android/server/utils/WatchedArrayMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/utils/WatchedArrayMap;->keyAt(I)Ljava/lang/Object;
-HSPLcom/android/server/utils/WatchedArrayMap;->onChanged()V
HSPLcom/android/server/utils/WatchedArrayMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HSPLcom/android/server/utils/WatchedArrayMap;->putAll(Ljava/util/Map;)V
-HSPLcom/android/server/utils/WatchedArrayMap;->registerChild(Ljava/lang/Object;)V
HSPLcom/android/server/utils/WatchedArrayMap;->registerObserver(Lcom/android/server/utils/Watcher;)V
-HPLcom/android/server/utils/WatchedArrayMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedArrayMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
HSPLcom/android/server/utils/WatchedArrayMap;->size()I
-HSPLcom/android/server/utils/WatchedArrayMap;->snapshot()Lcom/android/server/utils/WatchedArrayMap;
HSPLcom/android/server/utils/WatchedArrayMap;->snapshot()Ljava/lang/Object;
-HSPLcom/android/server/utils/WatchedArrayMap;->snapshot(Lcom/android/server/utils/WatchedArrayMap;)V
HSPLcom/android/server/utils/WatchedArrayMap;->snapshot(Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;)V
-HPLcom/android/server/utils/WatchedArrayMap;->unregisterChildIf(Ljava/lang/Object;)V
-HSPLcom/android/server/utils/WatchedArrayMap;->untrackedStorage()Landroid/util/ArrayMap;
-HSPLcom/android/server/utils/WatchedArrayMap;->valueAt(I)Ljava/lang/Object;
HSPLcom/android/server/utils/WatchedArrayMap;->values()Ljava/util/Collection;
HSPLcom/android/server/utils/WatchedArraySet$1;-><init>(Lcom/android/server/utils/WatchedArraySet;)V
HSPLcom/android/server/utils/WatchedArraySet$1;->onChange(Lcom/android/server/utils/Watchable;)V
HSPLcom/android/server/utils/WatchedArraySet;-><init>()V
-HSPLcom/android/server/utils/WatchedArraySet;-><init>(IZ)V
PLcom/android/server/utils/WatchedArraySet;-><init>(Lcom/android/server/utils/WatchedArraySet;)V
HSPLcom/android/server/utils/WatchedArraySet;->add(Ljava/lang/Object;)Z
-HSPLcom/android/server/utils/WatchedArraySet;->addAll(Ljava/util/Collection;)V
HSPLcom/android/server/utils/WatchedArraySet;->clear()V
-HPLcom/android/server/utils/WatchedArraySet;->contains(Ljava/lang/Object;)Z
-PLcom/android/server/utils/WatchedArraySet;->isEmpty()Z
-HSPLcom/android/server/utils/WatchedArraySet;->onChanged()V
-HSPLcom/android/server/utils/WatchedArraySet;->registerChild(Ljava/lang/Object;)V
HSPLcom/android/server/utils/WatchedArraySet;->registerObserver(Lcom/android/server/utils/Watcher;)V
-HPLcom/android/server/utils/WatchedArraySet;->remove(Ljava/lang/Object;)Z
-HSPLcom/android/server/utils/WatchedArraySet;->size()I
+PLcom/android/server/utils/WatchedArraySet;->remove(Ljava/lang/Object;)Z
HSPLcom/android/server/utils/WatchedArraySet;->snapshot()Lcom/android/server/utils/WatchedArraySet;
HSPLcom/android/server/utils/WatchedArraySet;->snapshot()Ljava/lang/Object;
-HSPLcom/android/server/utils/WatchedArraySet;->snapshot(Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;)V
-PLcom/android/server/utils/WatchedArraySet;->untrackedStorage()Landroid/util/ArraySet;
-HSPLcom/android/server/utils/WatchedArraySet;->valueAt(I)Ljava/lang/Object;
HSPLcom/android/server/utils/WatchedLongSparseArray$1;-><init>(Lcom/android/server/utils/WatchedLongSparseArray;)V
HSPLcom/android/server/utils/WatchedLongSparseArray;-><init>()V
HSPLcom/android/server/utils/WatchedLongSparseArray;-><init>(I)V
-HSPLcom/android/server/utils/WatchedLongSparseArray;->get(J)Ljava/lang/Object;
-HSPLcom/android/server/utils/WatchedLongSparseArray;->keyAt(I)J
-HSPLcom/android/server/utils/WatchedLongSparseArray;->onChanged()V
-HSPLcom/android/server/utils/WatchedLongSparseArray;->put(JLjava/lang/Object;)V
-HSPLcom/android/server/utils/WatchedLongSparseArray;->registerChild(Ljava/lang/Object;)V
HSPLcom/android/server/utils/WatchedLongSparseArray;->registerObserver(Lcom/android/server/utils/Watcher;)V
-HSPLcom/android/server/utils/WatchedLongSparseArray;->size()I
-HSPLcom/android/server/utils/WatchedLongSparseArray;->snapshot()Lcom/android/server/utils/WatchedLongSparseArray;
HSPLcom/android/server/utils/WatchedLongSparseArray;->snapshot()Ljava/lang/Object;
-HSPLcom/android/server/utils/WatchedLongSparseArray;->snapshot(Lcom/android/server/utils/WatchedLongSparseArray;Lcom/android/server/utils/WatchedLongSparseArray;)V
-HSPLcom/android/server/utils/WatchedLongSparseArray;->unregisterChildIf(Ljava/lang/Object;)V
-HSPLcom/android/server/utils/WatchedLongSparseArray;->valueAt(I)Ljava/lang/Object;
HSPLcom/android/server/utils/WatchedSparseArray$1;-><init>(Lcom/android/server/utils/WatchedSparseArray;)V
HSPLcom/android/server/utils/WatchedSparseArray$1;->onChange(Lcom/android/server/utils/Watchable;)V
HSPLcom/android/server/utils/WatchedSparseArray;-><init>()V
HSPLcom/android/server/utils/WatchedSparseArray;-><init>(I)V
HSPLcom/android/server/utils/WatchedSparseArray;-><init>(Lcom/android/server/utils/WatchedSparseArray;)V
PLcom/android/server/utils/WatchedSparseArray;->delete(I)V
-HSPLcom/android/server/utils/WatchedSparseArray;->get(I)Ljava/lang/Object;
-HSPLcom/android/server/utils/WatchedSparseArray;->keyAt(I)I
-HSPLcom/android/server/utils/WatchedSparseArray;->onChanged()V
HSPLcom/android/server/utils/WatchedSparseArray;->put(ILjava/lang/Object;)V
-HSPLcom/android/server/utils/WatchedSparseArray;->registerChild(Ljava/lang/Object;)V
HSPLcom/android/server/utils/WatchedSparseArray;->registerObserver(Lcom/android/server/utils/Watcher;)V
-PLcom/android/server/utils/WatchedSparseArray;->remove(I)V
-HSPLcom/android/server/utils/WatchedSparseArray;->size()I
-HSPLcom/android/server/utils/WatchedSparseArray;->snapshot()Lcom/android/server/utils/WatchedSparseArray;
HSPLcom/android/server/utils/WatchedSparseArray;->snapshot()Ljava/lang/Object;
-HSPLcom/android/server/utils/WatchedSparseArray;->snapshot(Lcom/android/server/utils/WatchedSparseArray;)V
HSPLcom/android/server/utils/WatchedSparseArray;->snapshot(Lcom/android/server/utils/WatchedSparseArray;Lcom/android/server/utils/WatchedSparseArray;)V
-HSPLcom/android/server/utils/WatchedSparseArray;->unregisterChildIf(Ljava/lang/Object;)V
-HSPLcom/android/server/utils/WatchedSparseArray;->valueAt(I)Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedSparseArray;->unregisterChildIf$4(Ljava/lang/Object;)V
HSPLcom/android/server/utils/WatchedSparseBooleanArray;-><init>()V
HSPLcom/android/server/utils/WatchedSparseBooleanArray;-><init>(Lcom/android/server/utils/WatchedSparseBooleanArray;)V
-HPLcom/android/server/utils/WatchedSparseBooleanArray;->get(I)Z
-PLcom/android/server/utils/WatchedSparseBooleanArray;->onChanged()V
-PLcom/android/server/utils/WatchedSparseBooleanArray;->put(IZ)V
-HSPLcom/android/server/utils/WatchedSparseBooleanArray;->snapshot()Lcom/android/server/utils/WatchedSparseBooleanArray;
HSPLcom/android/server/utils/WatchedSparseBooleanMatrix;-><init>()V
-HSPLcom/android/server/utils/WatchedSparseBooleanMatrix;-><init>(I)V
-HPLcom/android/server/utils/WatchedSparseBooleanMatrix;-><init>(Lcom/android/server/utils/WatchedSparseBooleanMatrix;)V
-HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->binarySearch([III)I
-PLcom/android/server/utils/WatchedSparseBooleanMatrix;->clear()V
-HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->copyFrom(Lcom/android/server/utils/WatchedSparseBooleanMatrix;)V
+HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->binarySearch(II[I)I
HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->indexOfKey(I)I
-HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->indexOfKey(IZ)I
+PLcom/android/server/utils/WatchedSparseBooleanMatrix;->indexOfKey(I)V
PLcom/android/server/utils/WatchedSparseBooleanMatrix;->nextFree(Z)I
-HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->onChanged()V
HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->put(IIZ)V
+PLcom/android/server/utils/WatchedSparseBooleanMatrix;->removeAt(I)V
PLcom/android/server/utils/WatchedSparseBooleanMatrix;->resizeMatrix(I)V
-PLcom/android/server/utils/WatchedSparseBooleanMatrix;->setCapacity(I)V
-HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->setValueAt(IIZ)V
-HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->setValueAtInternal(IIZ)V
-PLcom/android/server/utils/WatchedSparseBooleanMatrix;->size()I
-HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->snapshot()Lcom/android/server/utils/WatchedSparseBooleanMatrix;
HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->snapshot()Ljava/lang/Object;
HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->validateIndex(I)V
-HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->validateIndex(II)V
-HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->valueAt(II)Z
HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->valueAtInternal(II)Z
HSPLcom/android/server/utils/WatchedSparseIntArray;-><init>()V
HSPLcom/android/server/utils/WatchedSparseIntArray;-><init>(Lcom/android/server/utils/WatchedSparseIntArray;)V
-HSPLcom/android/server/utils/WatchedSparseIntArray;->size()I
-HSPLcom/android/server/utils/WatchedSparseIntArray;->snapshot()Lcom/android/server/utils/WatchedSparseIntArray;
HSPLcom/android/server/utils/WatchedSparseIntArray;->snapshot()Ljava/lang/Object;
-HSPLcom/android/server/utils/WatchedSparseIntArray;->snapshot(Lcom/android/server/utils/WatchedSparseIntArray;)V
-HSPLcom/android/server/utils/WatchedSparseIntArray;->snapshot(Lcom/android/server/utils/WatchedSparseIntArray;Lcom/android/server/utils/WatchedSparseIntArray;)V
HSPLcom/android/server/utils/WatchedSparseSetArray;-><init>()V
PLcom/android/server/utils/WatchedSparseSetArray;-><init>(Landroid/util/SparseSetArray;)V
HSPLcom/android/server/utils/WatchedSparseSetArray;-><init>(Lcom/android/server/utils/WatchedSparseSetArray;)V
-HPLcom/android/server/utils/WatchedSparseSetArray;->add(ILjava/lang/Object;)Z
-HPLcom/android/server/utils/WatchedSparseSetArray;->contains(ILjava/lang/Object;)Z
-PLcom/android/server/utils/WatchedSparseSetArray;->get(I)Landroid/util/ArraySet;
-HPLcom/android/server/utils/WatchedSparseSetArray;->keyAt(I)I
-PLcom/android/server/utils/WatchedSparseSetArray;->onChanged()V
-HPLcom/android/server/utils/WatchedSparseSetArray;->size()I
+PLcom/android/server/utils/WatchedSparseSetArray;->add(ILjava/lang/Object;)Z
+PLcom/android/server/utils/WatchedSparseSetArray;->remove(I)V
+PLcom/android/server/utils/WatchedSparseSetArray;->remove(ILjava/lang/Object;)V
HSPLcom/android/server/utils/WatchedSparseSetArray;->snapshot()Ljava/lang/Object;
-HSPLcom/android/server/utils/WatchedSparseSetArray;->untrackedStorage()Landroid/util/SparseSetArray;
-HSPLcom/android/server/utils/Watcher;-><init>()V
-PLcom/android/server/utils/quota/Categorizer$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/utils/quota/Categorizer$$ExternalSyntheticLambda0;->getCategory(Ljava/lang/String;)Lcom/android/server/utils/quota/Category;
PLcom/android/server/utils/quota/Categorizer;-><clinit>()V
PLcom/android/server/utils/quota/Category;-><clinit>()V
PLcom/android/server/utils/quota/Category;-><init>(Ljava/lang/String;)V
-PLcom/android/server/utils/quota/Category;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/utils/quota/Category;->hashCode()I
+HPLcom/android/server/utils/quota/Category;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/utils/quota/Category;->hashCode()I
+PLcom/android/server/utils/quota/Category;->toString()Ljava/lang/String;
PLcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/utils/quota/CountQuotaTracker;)V
-PLcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda2;-><init>()V
-HPLcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda0;->onAlarm()V
+PLcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda2;-><init>(I)V
+PLcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda3;-><init>(J)V
+PLcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda7;-><init>(Landroid/util/IndentingPrintWriter;I)V
+PLcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda7;->accept(ILjava/lang/Object;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/utils/quota/CountQuotaTracker$CqtHandler;-><init>(Lcom/android/server/utils/quota/CountQuotaTracker;Landroid/os/Looper;)V
-PLcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;->-$$Nest$fgetmMaxPeriodMs(Lcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;)J
-PLcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;->-$$Nest$mupdateMaxPeriod(Lcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;)V
+PLcom/android/server/utils/quota/CountQuotaTracker$CqtHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;-><init>(Lcom/android/server/utils/quota/CountQuotaTracker;)V
-PLcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;-><init>(Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor-IA;)V
-HPLcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;->updateMaxPeriod()V
-PLcom/android/server/utils/quota/CountQuotaTracker$EarliestEventTimeFunctor;-><init>()V
-PLcom/android/server/utils/quota/CountQuotaTracker$EarliestEventTimeFunctor;-><init>(Lcom/android/server/utils/quota/CountQuotaTracker$EarliestEventTimeFunctor-IA;)V
-PLcom/android/server/utils/quota/CountQuotaTracker$EarliestEventTimeFunctor;->accept(Landroid/util/LongArrayQueue;)V
+PLcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;->accept(Ljava/lang/Object;)V
PLcom/android/server/utils/quota/CountQuotaTracker$EarliestEventTimeFunctor;->accept(Ljava/lang/Object;)V
-PLcom/android/server/utils/quota/CountQuotaTracker$EarliestEventTimeFunctor;->reset()V
PLcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;-><init>()V
-PLcom/android/server/utils/quota/CountQuotaTracker;->$r8$lambda$bpXgHbASkT73xHBfIQStDjbYyHs(Ljava/lang/Void;)Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;
-PLcom/android/server/utils/quota/CountQuotaTracker;->$r8$lambda$cM9jWlqtuFAt3Et9NwUilONDTpc(Ljava/lang/Void;)Landroid/util/LongArrayQueue;
-PLcom/android/server/utils/quota/CountQuotaTracker;->-$$Nest$fgetmCategoryCountWindowSizesMs(Lcom/android/server/utils/quota/CountQuotaTracker;)Landroid/util/ArrayMap;
+PLcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;->toString()Ljava/lang/String;
PLcom/android/server/utils/quota/CountQuotaTracker;-><clinit>()V
PLcom/android/server/utils/quota/CountQuotaTracker;-><init>(Landroid/content/Context;Lcom/android/server/utils/quota/Categorizer;)V
-HPLcom/android/server/utils/quota/CountQuotaTracker;-><init>(Landroid/content/Context;Lcom/android/server/utils/quota/Categorizer;Lcom/android/server/utils/quota/QuotaTracker$Injector;)V
+PLcom/android/server/utils/quota/CountQuotaTracker;-><init>(Landroid/content/Context;Lcom/android/server/utils/quota/Categorizer;Lcom/android/server/utils/quota/QuotaTracker$Injector;)V
+PLcom/android/server/utils/quota/CountQuotaTracker;->deleteObsoleteEventsLocked()V
+PLcom/android/server/utils/quota/CountQuotaTracker;->dump(Landroid/util/IndentingPrintWriter;)V
HPLcom/android/server/utils/quota/CountQuotaTracker;->getExecutionStatsLocked(ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;
-HPLcom/android/server/utils/quota/CountQuotaTracker;->getExecutionStatsLocked(ILjava/lang/String;Ljava/lang/String;Z)Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;
-PLcom/android/server/utils/quota/CountQuotaTracker;->getHandler()Landroid/os/Handler;
-PLcom/android/server/utils/quota/CountQuotaTracker;->invalidateAllExecutionStatsLocked()V
-HPLcom/android/server/utils/quota/CountQuotaTracker;->isUnderCountQuotaLocked(Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;)Z
-HPLcom/android/server/utils/quota/CountQuotaTracker;->isWithinQuota(ILjava/lang/String;Ljava/lang/String;)Z
-HPLcom/android/server/utils/quota/CountQuotaTracker;->isWithinQuotaLocked(ILjava/lang/String;Ljava/lang/String;)Z
-HPLcom/android/server/utils/quota/CountQuotaTracker;->isWithinQuotaLocked(Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;)Z
-PLcom/android/server/utils/quota/CountQuotaTracker;->lambda$new$4(Ljava/lang/Void;)Landroid/util/LongArrayQueue;
-HPLcom/android/server/utils/quota/CountQuotaTracker;->lambda$new$5(Ljava/lang/Void;)Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;
+HPLcom/android/server/utils/quota/CountQuotaTracker;->getExecutionStatsLocked(ILjava/lang/String;Ljava/lang/String;Z)Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/utils/quota/Categorizer;Lcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda4;,Lcom/android/server/utils/quota/Categorizer$$ExternalSyntheticLambda0;]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;
PLcom/android/server/utils/quota/CountQuotaTracker;->maybeScheduleCleanupAlarmLocked()V
PLcom/android/server/utils/quota/CountQuotaTracker;->noteEvent(ILjava/lang/String;Ljava/lang/String;)Z
-HPLcom/android/server/utils/quota/CountQuotaTracker;->setCountLimit(Lcom/android/server/utils/quota/Category;IJ)V
-PLcom/android/server/utils/quota/CountQuotaTracker;->setEnabled(Z)V
-HPLcom/android/server/utils/quota/CountQuotaTracker;->updateExecutionStatsLocked(ILjava/lang/String;Ljava/lang/String;Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;)V
-PLcom/android/server/utils/quota/MultiRateLimiter$Builder;-><init>(Landroid/content/Context;)V
+PLcom/android/server/utils/quota/CountQuotaTracker;->setCountLimit(Lcom/android/server/utils/quota/Category;IJ)V
+PLcom/android/server/utils/quota/CountQuotaTracker;->updateExecutionStatsLocked(ILjava/lang/String;Ljava/lang/String;Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;)V
PLcom/android/server/utils/quota/MultiRateLimiter$Builder;-><init>(Landroid/content/Context;Lcom/android/server/utils/quota/QuotaTracker$Injector;)V
-PLcom/android/server/utils/quota/MultiRateLimiter$Builder;->addRateLimit(ILjava/time/Duration;)Lcom/android/server/utils/quota/MultiRateLimiter$Builder;
-PLcom/android/server/utils/quota/MultiRateLimiter$Builder;->addRateLimit(Lcom/android/server/utils/quota/MultiRateLimiter$RateLimit;)Lcom/android/server/utils/quota/MultiRateLimiter$Builder;
-PLcom/android/server/utils/quota/MultiRateLimiter$Builder;->addRateLimits([Lcom/android/server/utils/quota/MultiRateLimiter$RateLimit;)Lcom/android/server/utils/quota/MultiRateLimiter$Builder;
-PLcom/android/server/utils/quota/MultiRateLimiter$Builder;->build()Lcom/android/server/utils/quota/MultiRateLimiter;
+PLcom/android/server/utils/quota/MultiRateLimiter$Builder;->addRateLimit(ILjava/time/Duration;)V
PLcom/android/server/utils/quota/MultiRateLimiter$RateLimit;-><init>(ILjava/time/Duration;)V
-PLcom/android/server/utils/quota/MultiRateLimiter$RateLimit;->create(ILjava/time/Duration;)Lcom/android/server/utils/quota/MultiRateLimiter$RateLimit;
PLcom/android/server/utils/quota/MultiRateLimiter;-><clinit>()V
PLcom/android/server/utils/quota/MultiRateLimiter;-><init>(Ljava/util/List;)V
-PLcom/android/server/utils/quota/MultiRateLimiter;-><init>(Ljava/util/List;Lcom/android/server/utils/quota/MultiRateLimiter-IA;)V
-PLcom/android/server/utils/quota/QuotaTracker$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/utils/quota/QuotaTracker;IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;)V
+PLcom/android/server/utils/quota/MultiRateLimiter;->isWithinQuota(ILjava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/utils/quota/QuotaTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/utils/quota/CountQuotaTracker;)V
+PLcom/android/server/utils/quota/QuotaTracker$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/utils/quota/QuotaTracker$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/utils/quota/CountQuotaTracker;JLjava/lang/String;Lcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda0;)V
PLcom/android/server/utils/quota/QuotaTracker$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/utils/quota/QuotaTracker$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/utils/quota/QuotaTracker;)V
-PLcom/android/server/utils/quota/QuotaTracker$$ExternalSyntheticLambda2;->run()V
PLcom/android/server/utils/quota/QuotaTracker$1;-><init>(Lcom/android/server/utils/quota/QuotaTracker;)V
PLcom/android/server/utils/quota/QuotaTracker$InQuotaAlarmQueue;-><init>(Lcom/android/server/utils/quota/QuotaTracker;Landroid/content/Context;Landroid/os/Looper;)V
-PLcom/android/server/utils/quota/QuotaTracker$InQuotaAlarmQueue;-><init>(Lcom/android/server/utils/quota/QuotaTracker;Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/utils/quota/QuotaTracker$InQuotaAlarmQueue-IA;)V
PLcom/android/server/utils/quota/QuotaTracker$Injector;-><init>()V
-HPLcom/android/server/utils/quota/QuotaTracker$Injector;->getElapsedRealtime()J
-PLcom/android/server/utils/quota/QuotaTracker$Injector;->isAlarmManagerReady()Z
-PLcom/android/server/utils/quota/QuotaTracker;->$r8$lambda$7_jWEDO3BU-RIo1JOMCtrF_brqU(Lcom/android/server/utils/quota/QuotaTracker;IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;)V
-PLcom/android/server/utils/quota/QuotaTracker;->$r8$lambda$zqw0r2J0L3v3iTYTnBHhbM_aIAc(Lcom/android/server/utils/quota/QuotaTracker;)V
-PLcom/android/server/utils/quota/QuotaTracker;->-$$Nest$sfgetALARM_TAG_QUOTA_CHECK()Ljava/lang/String;
PLcom/android/server/utils/quota/QuotaTracker;-><clinit>()V
-HPLcom/android/server/utils/quota/QuotaTracker;-><init>(Landroid/content/Context;Lcom/android/server/utils/quota/Categorizer;Lcom/android/server/utils/quota/QuotaTracker$Injector;)V
-PLcom/android/server/utils/quota/QuotaTracker;->isEnabledLocked()Z
-HPLcom/android/server/utils/quota/QuotaTracker;->isQuotaFreeLocked(ILjava/lang/String;)Z
-HPLcom/android/server/utils/quota/QuotaTracker;->isWithinQuota(ILjava/lang/String;Ljava/lang/String;)Z
-PLcom/android/server/utils/quota/QuotaTracker;->lambda$scheduleAlarm$0(IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;)V
-PLcom/android/server/utils/quota/QuotaTracker;->lambda$scheduleQuotaCheck$2()V
-PLcom/android/server/utils/quota/QuotaTracker;->scheduleAlarm(IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;)V
-PLcom/android/server/utils/quota/QuotaTracker;->scheduleQuotaCheck()V
-PLcom/android/server/utils/quota/QuotaTracker;->setEnabled(Z)V
+PLcom/android/server/utils/quota/QuotaTracker;-><init>(Landroid/content/Context;Lcom/android/server/utils/quota/Categorizer;Lcom/android/server/utils/quota/QuotaTracker$Injector;)V
+PLcom/android/server/utils/quota/QuotaTracker;->dump(Landroid/util/IndentingPrintWriter;)V
+HPLcom/android/server/utils/quota/QuotaTracker;->isWithinQuota(ILjava/lang/String;Ljava/lang/String;)Z+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;
+PLcom/android/server/utils/quota/Uptc;->string(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/utils/quota/UptcMap$$ExternalSyntheticLambda0;-><init>(Ljava/util/function/Consumer;)V
PLcom/android/server/utils/quota/UptcMap$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/utils/quota/UptcMap;->$r8$lambda$d6yUTqkiV7qCVDI1h44DX07LvM8(Ljava/util/function/Consumer;Landroid/util/ArrayMap;)V
PLcom/android/server/utils/quota/UptcMap;-><init>()V
-HPLcom/android/server/utils/quota/UptcMap;->add(ILjava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V
-PLcom/android/server/utils/quota/UptcMap;->forEach(Ljava/util/function/Consumer;)V
-HPLcom/android/server/utils/quota/UptcMap;->get(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
-HPLcom/android/server/utils/quota/UptcMap;->getOrCreate(ILjava/lang/String;Ljava/lang/String;Ljava/util/function/Function;)Ljava/lang/Object;
-PLcom/android/server/utils/quota/UptcMap;->lambda$forEach$0(Ljava/util/function/Consumer;Landroid/util/ArrayMap;)V
+PLcom/android/server/utils/quota/UptcMap;->forEach(Lcom/android/server/utils/quota/UptcMap$UptcDataConsumer;)V
+PLcom/android/server/utils/quota/UptcMap;->get(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
PLcom/android/server/vcn/TelephonySubscriptionTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/vcn/TelephonySubscriptionTracker;Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;)V
PLcom/android/server/vcn/TelephonySubscriptionTracker$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/vcn/TelephonySubscriptionTracker$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/vcn/TelephonySubscriptionTracker;)V
@@ -24658,475 +19634,462 @@ PLcom/android/server/vcn/TelephonySubscriptionTracker$1;-><init>(Lcom/android/se
PLcom/android/server/vcn/TelephonySubscriptionTracker$2;-><init>(Lcom/android/server/vcn/TelephonySubscriptionTracker;)V
PLcom/android/server/vcn/TelephonySubscriptionTracker$2;->onCarrierPrivilegesChanged(Ljava/util/Set;Ljava/util/Set;)V
PLcom/android/server/vcn/TelephonySubscriptionTracker$ActiveDataSubscriptionIdListener;-><init>(Lcom/android/server/vcn/TelephonySubscriptionTracker;)V
-PLcom/android/server/vcn/TelephonySubscriptionTracker$ActiveDataSubscriptionIdListener;-><init>(Lcom/android/server/vcn/TelephonySubscriptionTracker;Lcom/android/server/vcn/TelephonySubscriptionTracker$ActiveDataSubscriptionIdListener-IA;)V
+PLcom/android/server/vcn/TelephonySubscriptionTracker$ActiveDataSubscriptionIdListener;->onActiveDataSubscriptionIdChanged(I)V
PLcom/android/server/vcn/TelephonySubscriptionTracker$Dependencies;-><init>()V
-PLcom/android/server/vcn/TelephonySubscriptionTracker$Dependencies;->getActiveDataSubscriptionId()I
PLcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;-><clinit>()V
-HPLcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;-><init>(ILjava/util/Map;Ljava/util/Map;Ljava/util/Map;)V
+PLcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;-><init>(ILjava/util/Map;Ljava/util/Map;Ljava/util/Map;)V
+PLcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;->dump(Landroid/util/IndentingPrintWriter;)V
PLcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;->equals(Ljava/lang/Object;)Z
PLcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;->toString()Ljava/lang/String;
-PLcom/android/server/vcn/TelephonySubscriptionTracker;->$r8$lambda$UITr0Y088UTlKS8haj11FOauMy8(Lcom/android/server/vcn/TelephonySubscriptionTracker;IIII)V
-PLcom/android/server/vcn/TelephonySubscriptionTracker;->$r8$lambda$d-we-Idb2bNLS062826pLy573-w(Lcom/android/server/vcn/TelephonySubscriptionTracker;Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;)V
PLcom/android/server/vcn/TelephonySubscriptionTracker;-><clinit>()V
-PLcom/android/server/vcn/TelephonySubscriptionTracker;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionTrackerCallback;)V
PLcom/android/server/vcn/TelephonySubscriptionTracker;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionTrackerCallback;Lcom/android/server/vcn/TelephonySubscriptionTracker$Dependencies;)V
PLcom/android/server/vcn/TelephonySubscriptionTracker;->handleActionCarrierConfigChanged(II)V
PLcom/android/server/vcn/TelephonySubscriptionTracker;->handleSubscriptionsChanged()V
-PLcom/android/server/vcn/TelephonySubscriptionTracker;->lambda$handleSubscriptionsChanged$1(Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;)V
-PLcom/android/server/vcn/TelephonySubscriptionTracker;->lambda$new$0(IIII)V
-PLcom/android/server/vcn/TelephonySubscriptionTracker;->register()V
PLcom/android/server/vcn/TelephonySubscriptionTracker;->registerCarrierPrivilegesCallbacks()V
PLcom/android/server/vcn/Vcn;-><clinit>()V
-PLcom/android/server/vcn/Vcn;->getNetworkScore()Landroid/net/NetworkScore;
PLcom/android/server/vcn/VcnNetworkProvider$1;-><init>(Lcom/android/server/vcn/VcnNetworkProvider;)V
PLcom/android/server/vcn/VcnNetworkProvider$1;->onNetworkNeeded(Landroid/net/NetworkRequest;)V
PLcom/android/server/vcn/VcnNetworkProvider$1;->onNetworkUnneeded(Landroid/net/NetworkRequest;)V
PLcom/android/server/vcn/VcnNetworkProvider$Dependencies;-><init>()V
-PLcom/android/server/vcn/VcnNetworkProvider$Dependencies;->registerNetworkOffer(Lcom/android/server/vcn/VcnNetworkProvider;Landroid/net/NetworkScore;Landroid/net/NetworkCapabilities;Ljava/util/concurrent/Executor;Landroid/net/NetworkProvider$NetworkOfferCallback;)V
-PLcom/android/server/vcn/VcnNetworkProvider;->-$$Nest$mhandleNetworkRequestWithdrawn(Lcom/android/server/vcn/VcnNetworkProvider;Landroid/net/NetworkRequest;)V
-PLcom/android/server/vcn/VcnNetworkProvider;->-$$Nest$mhandleNetworkRequested(Lcom/android/server/vcn/VcnNetworkProvider;Landroid/net/NetworkRequest;)V
PLcom/android/server/vcn/VcnNetworkProvider;-><clinit>()V
-PLcom/android/server/vcn/VcnNetworkProvider;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
PLcom/android/server/vcn/VcnNetworkProvider;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/vcn/VcnNetworkProvider$Dependencies;)V
PLcom/android/server/vcn/VcnNetworkProvider;->buildCapabilityFilter()Landroid/net/NetworkCapabilities;
-PLcom/android/server/vcn/VcnNetworkProvider;->handleNetworkRequestWithdrawn(Landroid/net/NetworkRequest;)V
-PLcom/android/server/vcn/VcnNetworkProvider;->handleNetworkRequested(Landroid/net/NetworkRequest;)V
-PLcom/android/server/vcn/VcnNetworkProvider;->register()V
-PLcom/android/server/vcn/util/PersistableBundleUtils$LockingReadWriteHelper;-><init>(Ljava/lang/String;)V
-PLcom/android/server/vcn/util/PersistableBundleUtils$LockingReadWriteHelper;->readFromDisk()Landroid/os/PersistableBundle;
-PLcom/android/server/vibrator/AbstractVibratorStep;-><init>(Lcom/android/server/vibrator/VibrationStepConductor;JLcom/android/server/vibrator/VibratorController;Landroid/os/VibrationEffect$Composed;IJ)V
-PLcom/android/server/vibrator/AbstractVibratorStep;->acceptVibratorCompleteCallback(I)Z
-PLcom/android/server/vibrator/AbstractVibratorStep;->getVibratorId()I
+PLcom/android/server/vibrator/AbstractComposedVibratorStep;-><init>(Lcom/android/server/vibrator/VibrationStepConductor;JLcom/android/server/vibrator/VibratorController;Landroid/os/VibrationEffect$Composed;IJ)V
+PLcom/android/server/vibrator/AbstractComposedVibratorStep;->nextSteps(I)Ljava/util/List;
+HPLcom/android/server/vibrator/AbstractComposedVibratorStep;->nextSteps(IJ)Ljava/util/List;
+HPLcom/android/server/vibrator/AbstractVibratorStep;-><init>(Lcom/android/server/vibrator/VibrationStepConductor;JLcom/android/server/vibrator/VibratorController;J)V
+HPLcom/android/server/vibrator/AbstractVibratorStep;->acceptVibratorCompleteCallback(I)Z
+PLcom/android/server/vibrator/AbstractVibratorStep;->cancel()Ljava/util/List;
+PLcom/android/server/vibrator/AbstractVibratorStep;->changeAmplitude(F)V
PLcom/android/server/vibrator/AbstractVibratorStep;->getVibratorOnDuration()J
-PLcom/android/server/vibrator/AbstractVibratorStep;->handleVibratorOnResult(J)J
-PLcom/android/server/vibrator/AbstractVibratorStep;->nextSteps(I)Ljava/util/List;
-PLcom/android/server/vibrator/AbstractVibratorStep;->nextSteps(JI)Ljava/util/List;
-PLcom/android/server/vibrator/AbstractVibratorStep;->stopVibrating()V
-PLcom/android/server/vibrator/ClippingAmplitudeAndFrequencyAdapter;-><init>()V
+HPLcom/android/server/vibrator/AbstractVibratorStep;->handleVibratorOnResult(J)V
+HPLcom/android/server/vibrator/AbstractVibratorStep;->stopVibrating()V
+PLcom/android/server/vibrator/BasicToPwleSegmentAdapter$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/vibrator/BasicToPwleSegmentAdapter;-><clinit>()V
+PLcom/android/server/vibrator/BasicToPwleSegmentAdapter;->adaptToVibrator(Landroid/os/VibratorInfo;Ljava/util/List;I)I
PLcom/android/server/vibrator/ClippingAmplitudeAndFrequencyAdapter;->adaptToVibrator(Landroid/os/VibratorInfo;Ljava/util/List;I)I
PLcom/android/server/vibrator/CompleteEffectVibratorStep;-><init>(Lcom/android/server/vibrator/VibrationStepConductor;JZLcom/android/server/vibrator/VibratorController;J)V
+PLcom/android/server/vibrator/CompleteEffectVibratorStep;->cancel()Ljava/util/List;
PLcom/android/server/vibrator/CompleteEffectVibratorStep;->isCleanUp()Z
-PLcom/android/server/vibrator/CompleteEffectVibratorStep;->play()Ljava/util/List;
-PLcom/android/server/vibrator/ComposePrimitivesVibratorStep;-><init>(Lcom/android/server/vibrator/VibrationStepConductor;JLcom/android/server/vibrator/VibratorController;Landroid/os/VibrationEffect$Composed;IJ)V
-PLcom/android/server/vibrator/ComposePrimitivesVibratorStep;->play()Ljava/util/List;
-PLcom/android/server/vibrator/ComposePrimitivesVibratorStep;->unrollPrimitiveSegments(Landroid/os/VibrationEffect$Composed;II)Ljava/util/List;
+HPLcom/android/server/vibrator/CompleteEffectVibratorStep;->play()Ljava/util/List;
+HPLcom/android/server/vibrator/ComposePrimitivesVibratorStep;->play()Ljava/util/List;+]Landroid/os/VibratorInfo;Landroid/os/VibratorInfo;]Ljava/util/List;Ljava/util/ArrayList;
PLcom/android/server/vibrator/DeviceAdapter;-><init>(Lcom/android/server/vibrator/VibrationSettings;Landroid/util/SparseArray;)V
-PLcom/android/server/vibrator/DeviceAdapter;->adaptToVibrator(ILandroid/os/VibrationEffect;)Landroid/os/VibrationEffect;
+HPLcom/android/server/vibrator/DeviceAdapter;->adaptToVibrator(ILandroid/os/VibrationEffect;)Landroid/os/VibrationEffect;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/vibrator/VibrationSegmentsAdapter;megamorphic_types]Lcom/android/server/vibrator/VibrationSegmentsValidator;Lcom/android/server/vibrator/PrimitiveSegmentsValidator;,Lcom/android/server/vibrator/PwleSegmentsValidator;]Ljava/util/List;Ljava/util/Arrays$ArrayList;,Ljava/util/ImmutableCollections$List12;
PLcom/android/server/vibrator/DeviceAdapter;->getAvailableVibratorIds()[I
-PLcom/android/server/vibrator/DeviceAdapter;->getAvailableVibrators()Landroid/util/SparseArray;
PLcom/android/server/vibrator/FinishSequentialEffectStep;-><init>(Lcom/android/server/vibrator/StartSequentialEffectStep;)V
-PLcom/android/server/vibrator/FinishSequentialEffectStep;->isCleanUp()Z
-PLcom/android/server/vibrator/FinishSequentialEffectStep;->play()Ljava/util/List;
-PLcom/android/server/vibrator/HalVibration;-><init>(Landroid/os/IBinder;Landroid/os/CombinedVibration;Lcom/android/server/vibrator/Vibration$CallerInfo;)V
-PLcom/android/server/vibrator/HalVibration;->adaptToDevice(Landroid/os/CombinedVibration$VibratorAdapter;)V
-PLcom/android/server/vibrator/HalVibration;->end(Lcom/android/server/vibrator/Vibration$EndInfo;)V
-PLcom/android/server/vibrator/HalVibration;->getDebugInfo()Lcom/android/server/vibrator/Vibration$DebugInfo;
-PLcom/android/server/vibrator/HalVibration;->getEffectToPlay()Landroid/os/CombinedVibration;
-PLcom/android/server/vibrator/HalVibration;->getStatsInfo(J)Lcom/android/server/vibrator/VibrationStats$StatsInfo;
-PLcom/android/server/vibrator/HalVibration;->hasEnded()Z
-PLcom/android/server/vibrator/HalVibration;->isRepeating()Z
-PLcom/android/server/vibrator/HalVibration;->scaleEffects(Landroid/os/VibrationEffect$Transformation;)V
-PLcom/android/server/vibrator/HapticFeedbackCustomization;->loadVibrations(Landroid/content/res/Resources;Landroid/os/VibratorInfo;)Landroid/util/SparseArray;
-HPLcom/android/server/vibrator/HapticFeedbackCustomization;->loadVibrationsInternal(Landroid/content/res/Resources;Landroid/os/VibratorInfo;)Landroid/util/SparseArray;
+PLcom/android/server/vibrator/FinishSequentialEffectStep;->cancel()Ljava/util/List;
+PLcom/android/server/vibrator/FinishSequentialEffectStep;->cancelImmediately()V
+HPLcom/android/server/vibrator/FinishSequentialEffectStep;->play()Ljava/util/List;
+PLcom/android/server/vibrator/GroupedAggregatedLogRecords$AggregatedLogRecord;-><init>(Lcom/android/server/vibrator/GroupedAggregatedLogRecords$SingleLogRecord;)V
+PLcom/android/server/vibrator/GroupedAggregatedLogRecords$AggregatedLogRecord;->dump(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/vibrator/GroupedAggregatedLogRecords;-><init>(II)V
+HPLcom/android/server/vibrator/GroupedAggregatedLogRecords;->add(Lcom/android/server/vibrator/GroupedAggregatedLogRecords$SingleLogRecord;)Lcom/android/server/vibrator/GroupedAggregatedLogRecords$AggregatedLogRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/vibrator/GroupedAggregatedLogRecords$SingleLogRecord;Lcom/android/server/vibrator/VibratorManagerService$VibrationRecord;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
+PLcom/android/server/vibrator/GroupedAggregatedLogRecords;->dump(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/vibrator/HalVibration$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/vibrator/VibrationScaler;)V
+HPLcom/android/server/vibrator/HalVibration$$ExternalSyntheticLambda0;->transform(Landroid/os/VibrationEffect;Ljava/lang/Object;)Landroid/os/VibrationEffect;
+HPLcom/android/server/vibrator/HalVibration;-><init>(Lcom/android/server/vibrator/VibrationSession$CallerInfo;Landroid/os/CombinedVibration;)V
+HPLcom/android/server/vibrator/HalVibration;->end(Lcom/android/server/vibrator/Vibration$EndInfo;)V
+PLcom/android/server/vibrator/HalVibration;->fillFallbacksForEffect(Landroid/os/CombinedVibration;Ljava/util/function/IntFunction;)V
+HPLcom/android/server/vibrator/HalVibration;->fillFallbacksForEffect(Landroid/os/VibrationEffect;Ljava/util/function/IntFunction;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/function/IntFunction;Lcom/android/server/vibrator/VibratorManagerService$$ExternalSyntheticLambda0;
+HPLcom/android/server/vibrator/HalVibration;->getDebugInfo()Lcom/android/server/vibrator/VibrationSession$DebugInfo;
+HPLcom/android/server/vibrator/HalVibration;->scaleEffects(Lcom/android/server/vibrator/VibrationScaler;)V
+PLcom/android/server/vibrator/HapticFeedbackCustomization;-><init>(Landroid/content/res/Resources;Landroid/os/VibratorInfo;)V
+PLcom/android/server/vibrator/HapticFeedbackCustomization;->loadCustomizedFeedbackVibrationFromRes(Landroid/content/res/Resources;Landroid/os/VibratorInfo;I)Landroid/util/SparseArray;
+PLcom/android/server/vibrator/HapticFeedbackCustomization;->parseVibrations(Lcom/android/modules/utils/TypedXmlPullParser;Landroid/os/VibratorInfo;)Landroid/util/SparseArray;
+PLcom/android/server/vibrator/HapticFeedbackCustomization;->readCustomizationFile(Landroid/content/res/Resources;)Lcom/android/modules/utils/TypedXmlPullParser;
+PLcom/android/server/vibrator/HapticFeedbackCustomization;->readCustomizationResources(Landroid/content/res/Resources;I)Lcom/android/modules/utils/TypedXmlPullParser;
PLcom/android/server/vibrator/HapticFeedbackVibrationProvider;-><clinit>()V
-PLcom/android/server/vibrator/HapticFeedbackVibrationProvider;-><init>(Landroid/content/res/Resources;Landroid/os/Vibrator;)V
-PLcom/android/server/vibrator/HapticFeedbackVibrationProvider;-><init>(Landroid/content/res/Resources;Landroid/os/VibratorInfo;)V
-PLcom/android/server/vibrator/HapticFeedbackVibrationProvider;-><init>(Landroid/content/res/Resources;Landroid/os/VibratorInfo;Landroid/util/SparseArray;)V
-PLcom/android/server/vibrator/HapticFeedbackVibrationProvider;->effectHasCustomization(I)Z
-PLcom/android/server/vibrator/HapticFeedbackVibrationProvider;->loadHapticCustomizations(Landroid/content/res/Resources;Landroid/os/VibratorInfo;)Landroid/util/SparseArray;
+PLcom/android/server/vibrator/HapticFeedbackVibrationProvider;-><init>(Landroid/content/res/Resources;Landroid/os/VibratorInfo;Lcom/android/server/vibrator/HapticFeedbackCustomization;)V
+HPLcom/android/server/vibrator/HapticFeedbackVibrationProvider;->getVibrationAttributes(III)Landroid/os/VibrationAttributes;
+HPLcom/android/server/vibrator/HapticFeedbackVibrationProvider;->getVibrationAttributesWithFlags(Landroid/os/VibrationAttributes;II)Landroid/os/VibrationAttributes;
+PLcom/android/server/vibrator/HapticFeedbackVibrationProvider;->getVibrationForHapticFeedback(I)Landroid/os/VibrationEffect;
PLcom/android/server/vibrator/InputDeviceDelegate;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
-PLcom/android/server/vibrator/InputDeviceDelegate;->isAvailable()Z
-PLcom/android/server/vibrator/InputDeviceDelegate;->onSystemReady()V
PLcom/android/server/vibrator/InputDeviceDelegate;->updateInputDeviceVibrators(Z)Z
+PLcom/android/server/vibrator/PerformPrebakedVibratorStep;->play()Ljava/util/List;
+HPLcom/android/server/vibrator/PrimitiveDelayAdapter;->adaptToVibrator(Landroid/os/VibratorInfo;Ljava/util/List;I)I
+HPLcom/android/server/vibrator/PrimitiveSegmentsValidator;->hasValidSegments(Landroid/os/VibratorInfo;Ljava/util/List;)Z
+HPLcom/android/server/vibrator/PwleSegmentsValidator;->hasValidSegments(Landroid/os/VibratorInfo;Ljava/util/List;)Z
PLcom/android/server/vibrator/RampDownAdapter;-><init>(II)V
PLcom/android/server/vibrator/RampDownAdapter;->adaptToVibrator(Landroid/os/VibratorInfo;Ljava/util/List;I)I
PLcom/android/server/vibrator/RampToStepAdapter;-><init>(I)V
-PLcom/android/server/vibrator/RampToStepAdapter;->adaptToVibrator(Landroid/os/VibratorInfo;Ljava/util/List;I)I
-PLcom/android/server/vibrator/SplitSegmentsAdapter;-><init>()V
+HPLcom/android/server/vibrator/RampToStepAdapter;->adaptToVibrator(Landroid/os/VibratorInfo;Ljava/util/List;I)I
+PLcom/android/server/vibrator/SetAmplitudeVibratorStep;->getVibratorOnDuration(Landroid/os/VibrationEffect$Composed;I)J
+PLcom/android/server/vibrator/SetAmplitudeVibratorStep;->play()Ljava/util/List;
+PLcom/android/server/vibrator/SetAmplitudeVibratorStep;->startVibrating(J)J
+HPLcom/android/server/vibrator/SingleVibrationSession;-><init>(Landroid/os/IBinder;Lcom/android/server/vibrator/VibrationSession$CallerInfo;Landroid/os/CombinedVibration;)V
+HPLcom/android/server/vibrator/SingleVibrationSession;->getCallerInfo()Lcom/android/server/vibrator/VibrationSession$CallerInfo;
+PLcom/android/server/vibrator/SingleVibrationSession;->getCallerToken()Landroid/os/IBinder;
+PLcom/android/server/vibrator/SingleVibrationSession;->getCreateUptimeMillis()J
+PLcom/android/server/vibrator/SingleVibrationSession;->getDebugInfo()Lcom/android/server/vibrator/VibrationSession$DebugInfo;
+HPLcom/android/server/vibrator/SingleVibrationSession;->isRepeating()Z
+HPLcom/android/server/vibrator/SingleVibrationSession;->notifyVibratorCallback(IJ)V
+PLcom/android/server/vibrator/SingleVibrationSession;->requestEnd(Lcom/android/server/vibrator/VibrationSession$Status;Lcom/android/server/vibrator/VibrationSession$CallerInfo;Z)V
+PLcom/android/server/vibrator/SingleVibrationSession;->unlinkToDeath()V
+HPLcom/android/server/vibrator/SingleVibrationSession;->wasEndRequested()Z
+PLcom/android/server/vibrator/SplitPwleSegmentsAdapter;->adaptToVibrator(Landroid/os/VibratorInfo;Ljava/util/List;I)I
PLcom/android/server/vibrator/SplitSegmentsAdapter;->adaptToVibrator(Landroid/os/VibratorInfo;Ljava/util/List;I)I
-PLcom/android/server/vibrator/StartSequentialEffectStep$DeviceEffectMap;-><init>(Lcom/android/server/vibrator/StartSequentialEffectStep;Landroid/os/CombinedVibration$Mono;)V
-PLcom/android/server/vibrator/StartSequentialEffectStep$DeviceEffectMap;->calculateRequiredSyncCapabilities(Landroid/util/SparseArray;)J
-PLcom/android/server/vibrator/StartSequentialEffectStep$DeviceEffectMap;->effectAt(I)Landroid/os/VibrationEffect$Composed;
+HPLcom/android/server/vibrator/StartSequentialEffectStep$DeviceEffectMap;-><init>(Lcom/android/server/vibrator/StartSequentialEffectStep;Landroid/os/CombinedVibration$Mono;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/vibrator/StartSequentialEffectStep$DeviceEffectMap;->calculateRequiredSyncCapabilities(Landroid/util/SparseArray;)J
PLcom/android/server/vibrator/StartSequentialEffectStep$DeviceEffectMap;->requireMixedTriggerCapability(JJ)Z
-PLcom/android/server/vibrator/StartSequentialEffectStep$DeviceEffectMap;->size()I
-PLcom/android/server/vibrator/StartSequentialEffectStep$DeviceEffectMap;->vibratorIdAt(I)I
PLcom/android/server/vibrator/StartSequentialEffectStep;-><init>(Lcom/android/server/vibrator/VibrationStepConductor;JLandroid/os/CombinedVibration$Sequential;I)V
-PLcom/android/server/vibrator/StartSequentialEffectStep;-><init>(Lcom/android/server/vibrator/VibrationStepConductor;Landroid/os/CombinedVibration$Sequential;)V
-PLcom/android/server/vibrator/StartSequentialEffectStep;->createEffectToVibratorMapping(Landroid/os/CombinedVibration;)Lcom/android/server/vibrator/StartSequentialEffectStep$DeviceEffectMap;
+PLcom/android/server/vibrator/StartSequentialEffectStep;->cancel()Ljava/util/List;
PLcom/android/server/vibrator/StartSequentialEffectStep;->getVibratorOnDuration()J
-PLcom/android/server/vibrator/StartSequentialEffectStep;->nextStep()Lcom/android/server/vibrator/Step;
-PLcom/android/server/vibrator/StartSequentialEffectStep;->play()Ljava/util/List;
-PLcom/android/server/vibrator/StartSequentialEffectStep;->startVibrating(Lcom/android/server/vibrator/AbstractVibratorStep;Ljava/util/List;)J
-PLcom/android/server/vibrator/StartSequentialEffectStep;->startVibrating(Lcom/android/server/vibrator/StartSequentialEffectStep$DeviceEffectMap;Ljava/util/List;)J
+PLcom/android/server/vibrator/StartSequentialEffectStep;->nextStep()Lcom/android/server/vibrator/StartSequentialEffectStep;
+HPLcom/android/server/vibrator/StartSequentialEffectStep;->play()Ljava/util/List;
+HPLcom/android/server/vibrator/StartSequentialEffectStep;->startVibrating(Lcom/android/server/vibrator/StartSequentialEffectStep$DeviceEffectMap;Ljava/util/List;)J+]Landroid/os/VibrationEffect;Landroid/os/VibrationEffect$Composed;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/vibrator/Step;Lcom/android/server/vibrator/ComposePrimitivesVibratorStep;,Lcom/android/server/vibrator/PerformPrebakedVibratorStep;,Lcom/android/server/vibrator/SetAmplitudeVibratorStep;]Ljava/util/List;Ljava/util/ArrayList;
PLcom/android/server/vibrator/Step;-><init>(Lcom/android/server/vibrator/VibrationStepConductor;J)V
-PLcom/android/server/vibrator/Step;->calculateWaitTime()J
-PLcom/android/server/vibrator/Step;->compareTo(Lcom/android/server/vibrator/Step;)I
PLcom/android/server/vibrator/Step;->compareTo(Ljava/lang/Object;)I
-PLcom/android/server/vibrator/Step;->getVibration()Lcom/android/server/vibrator/HalVibration;
PLcom/android/server/vibrator/Step;->getVibratorOnDuration()J
PLcom/android/server/vibrator/Step;->isCleanUp()Z
-PLcom/android/server/vibrator/StepToRampAdapter;-><init>()V
PLcom/android/server/vibrator/StepToRampAdapter;->adaptToVibrator(Landroid/os/VibratorInfo;Ljava/util/List;I)I
-PLcom/android/server/vibrator/TurnOffVibratorStep;-><init>(Lcom/android/server/vibrator/VibrationStepConductor;JLcom/android/server/vibrator/VibratorController;)V
+PLcom/android/server/vibrator/TurnOffVibratorStep;-><init>(Lcom/android/server/vibrator/VibrationStepConductor;JLcom/android/server/vibrator/VibratorController;Z)V
PLcom/android/server/vibrator/TurnOffVibratorStep;->isCleanUp()Z
-PLcom/android/server/vibrator/TurnOffVibratorStep;->play()Ljava/util/List;
-PLcom/android/server/vibrator/Vibration$CallerInfo;-><init>(Landroid/os/VibrationAttributes;IILjava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/vibrator/Vibration$DebugInfo;-><init>(Lcom/android/server/vibrator/Vibration$Status;Lcom/android/server/vibrator/VibrationStats;Landroid/os/CombinedVibration;Landroid/os/CombinedVibration;FLcom/android/server/vibrator/Vibration$CallerInfo;)V
-PLcom/android/server/vibrator/Vibration$EndInfo;-><init>(Lcom/android/server/vibrator/Vibration$Status;)V
-PLcom/android/server/vibrator/Vibration$EndInfo;-><init>(Lcom/android/server/vibrator/Vibration$Status;Lcom/android/server/vibrator/Vibration$CallerInfo;)V
-PLcom/android/server/vibrator/Vibration$Status;->$values()[Lcom/android/server/vibrator/Vibration$Status;
-HPLcom/android/server/vibrator/Vibration$Status;-><clinit>()V
-PLcom/android/server/vibrator/Vibration$Status;-><init>(Ljava/lang/String;II)V
-PLcom/android/server/vibrator/Vibration$Status;->getProtoEnumValue()I
-PLcom/android/server/vibrator/Vibration$Status;->values()[Lcom/android/server/vibrator/Vibration$Status;
+HPLcom/android/server/vibrator/TurnOffVibratorStep;->play()Ljava/util/List;
+HPLcom/android/server/vibrator/Vibration$DebugInfoImpl;-><init>(Lcom/android/server/vibrator/VibrationSession$Status;Lcom/android/server/vibrator/VibrationSession$CallerInfo;ILcom/android/server/vibrator/VibrationStats;Landroid/os/CombinedVibration;Landroid/os/CombinedVibration;IF)V
+PLcom/android/server/vibrator/Vibration$DebugInfoImpl;->dumpCompact(Landroid/util/IndentingPrintWriter;)V
+PLcom/android/server/vibrator/Vibration$DebugInfoImpl;->getCallerInfo()Lcom/android/server/vibrator/VibrationSession$CallerInfo;
+PLcom/android/server/vibrator/Vibration$DebugInfoImpl;->getCreateUptimeMillis()J
+PLcom/android/server/vibrator/Vibration$DebugInfoImpl;->getDumpAggregationKey()Ljava/lang/Object;
+PLcom/android/server/vibrator/Vibration$DebugInfoImpl;->getStatus()Lcom/android/server/vibrator/VibrationSession$Status;
+HPLcom/android/server/vibrator/Vibration$DebugInfoImpl;->logMetrics(Lcom/android/server/vibrator/VibratorFrameworkStatsLogger;)V+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;
+PLcom/android/server/vibrator/Vibration$EndInfo;-><init>(Lcom/android/server/vibrator/VibrationSession$Status;Lcom/android/server/vibrator/VibrationSession$CallerInfo;)V
PLcom/android/server/vibrator/Vibration;-><clinit>()V
-PLcom/android/server/vibrator/Vibration;-><init>(Landroid/os/IBinder;Lcom/android/server/vibrator/Vibration$CallerInfo;)V
-PLcom/android/server/vibrator/VibrationScaler$ScaleLevel;-><init>(F)V
-PLcom/android/server/vibrator/VibrationScaler;-><init>(Landroid/content/Context;Lcom/android/server/vibrator/VibrationSettings;)V
-PLcom/android/server/vibrator/VibrationScaler;->intensityToEffectStrength(I)I
-PLcom/android/server/vibrator/VibrationScaler;->scale(Landroid/os/VibrationEffect;I)Landroid/os/VibrationEffect;
-PLcom/android/server/vibrator/VibrationSettings$1;-><init>(Lcom/android/server/vibrator/VibrationSettings;)V
-PLcom/android/server/vibrator/VibrationSettings$2;-><init>(Lcom/android/server/vibrator/VibrationSettings;)V
-PLcom/android/server/vibrator/VibrationSettings$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/vibrator/VibrationSettings$MyUidObserver;-><init>(Lcom/android/server/vibrator/VibrationSettings;)V
-PLcom/android/server/vibrator/VibrationSettings$MyUidObserver;->isUidForeground(I)Z
-PLcom/android/server/vibrator/VibrationSettings$MyUidObserver;->onUidGone(IZ)V
-HPLcom/android/server/vibrator/VibrationSettings$MyUidObserver;->onUidStateChanged(IIJI)V
-PLcom/android/server/vibrator/VibrationSettings$SettingsBroadcastReceiver;-><init>(Lcom/android/server/vibrator/VibrationSettings;)V
-PLcom/android/server/vibrator/VibrationSettings$SettingsBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/vibrator/Vibration;-><init>(Lcom/android/server/vibrator/VibrationSession$CallerInfo;)V
+HPLcom/android/server/vibrator/Vibration;->end(Lcom/android/server/vibrator/Vibration$EndInfo;)V
+PLcom/android/server/vibrator/VibrationScaler;-><init>(Landroid/os/vibrator/VibrationConfig;Lcom/android/server/vibrator/VibrationSettings;)V
+PLcom/android/server/vibrator/VibrationScaler;->dump(Landroid/util/IndentingPrintWriter;)V
+HPLcom/android/server/vibrator/VibrationScaler;->getAdaptiveHapticsScale(I)F
+PLcom/android/server/vibrator/VibrationScaler;->getEffectStrength(I)I
+PLcom/android/server/vibrator/VibrationScaler;->getScaleLevel(I)I
+PLcom/android/server/vibrator/VibrationScaler;->scaleLevelToScaleFactor(I)F
+PLcom/android/server/vibrator/VibrationScaler;->scaleLevelToString(I)Ljava/lang/String;
+HPLcom/android/server/vibrator/VibrationSession$CallerInfo;-><init>(Landroid/os/VibrationAttributes;IILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/vibrator/VibrationSession$DebugInfo;-><clinit>()V
+PLcom/android/server/vibrator/VibrationSession$DebugInfo;->formatTime(JZ)Ljava/lang/String;
+PLcom/android/server/vibrator/VibrationSession$Status;-><clinit>()V
+PLcom/android/server/vibrator/VibrationSession$Status;-><init>(IILjava/lang/String;)V
+PLcom/android/server/vibrator/VibrationSession$Status;->getProtoEnumValue()I
+PLcom/android/server/vibrator/VibrationSession;-><clinit>()V
+PLcom/android/server/vibrator/VibrationSettings$BatteryBroadcastReceiver;-><init>(Lcom/android/server/vibrator/VibrationSettings;)V
+HPLcom/android/server/vibrator/VibrationSettings$BatteryBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/vibrator/VibrationSettings$RingerModeBroadcastReceiver;-><init>(Lcom/android/server/vibrator/VibrationSettings;)V
+PLcom/android/server/vibrator/VibrationSettings$RingerModeBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/vibrator/VibrationSettings$SettingsContentObserver;-><init>(Lcom/android/server/vibrator/VibrationSettings;Landroid/os/Handler;)V
-PLcom/android/server/vibrator/VibrationSettings;->-$$Nest$mnotifyListeners(Lcom/android/server/vibrator/VibrationSettings;)V
-PLcom/android/server/vibrator/VibrationSettings;->-$$Nest$mupdateBatteryInfo(Lcom/android/server/vibrator/VibrationSettings;Landroid/content/Intent;)V
-PLcom/android/server/vibrator/VibrationSettings;->-$$Nest$mupdateRingerMode(Lcom/android/server/vibrator/VibrationSettings;)V
+PLcom/android/server/vibrator/VibrationSettings$VibrationLowPowerModeListener;-><init>(Lcom/android/server/vibrator/VibrationSettings;)V
+PLcom/android/server/vibrator/VibrationSettings$VibrationUidObserver;-><init>()V
+PLcom/android/server/vibrator/VibrationSettings$VibrationUidObserver;->onUidGone(IZ)V
+HPLcom/android/server/vibrator/VibrationSettings$VibrationUidObserver;->onUidStateChanged(IIJI)V
+PLcom/android/server/vibrator/VibrationSettings$VibrationUserSwitchObserver;-><init>(Lcom/android/server/vibrator/VibrationSettings;)V
PLcom/android/server/vibrator/VibrationSettings;-><clinit>()V
-PLcom/android/server/vibrator/VibrationSettings;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
PLcom/android/server/vibrator/VibrationSettings;-><init>(Landroid/content/Context;Landroid/os/Handler;Landroid/os/vibrator/VibrationConfig;)V
-PLcom/android/server/vibrator/VibrationSettings;->addListener(Lcom/android/server/vibrator/VibrationSettings$OnVibratorSettingsChanged;)V
-PLcom/android/server/vibrator/VibrationSettings;->createEffectFromResource(I)Landroid/os/VibrationEffect;
+PLcom/android/server/vibrator/VibrationSettings;->addListener(Lcom/android/server/vibrator/VibratorManagerService$$ExternalSyntheticLambda2;)V
PLcom/android/server/vibrator/VibrationSettings;->createEffectFromResource(Landroid/content/res/Resources;I)Landroid/os/VibrationEffect;
-PLcom/android/server/vibrator/VibrationSettings;->createEffectFromTimings([J)Landroid/os/VibrationEffect;
-PLcom/android/server/vibrator/VibrationSettings;->getCurrentIntensity(I)I
-PLcom/android/server/vibrator/VibrationSettings;->getDefaultIntensity(I)I
-PLcom/android/server/vibrator/VibrationSettings;->getLongIntArray(Landroid/content/res/Resources;I)[J
-PLcom/android/server/vibrator/VibrationSettings;->getRampDownDuration()I
-PLcom/android/server/vibrator/VibrationSettings;->getRampStepDuration()I
-PLcom/android/server/vibrator/VibrationSettings;->getRequestVibrationParamsForUsages()[I
-PLcom/android/server/vibrator/VibrationSettings;->loadBooleanSetting(Ljava/lang/String;)Z
-PLcom/android/server/vibrator/VibrationSettings;->loadSystemSetting(Ljava/lang/String;I)I
+PLcom/android/server/vibrator/VibrationSettings;->dump(Landroid/util/IndentingPrintWriter;)V
+HPLcom/android/server/vibrator/VibrationSettings;->getCurrentIntensity(I)I+]Landroid/os/vibrator/VibrationConfig;Landroid/os/vibrator/VibrationConfig;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+PLcom/android/server/vibrator/VibrationSettings;->intensityToString(I)Ljava/lang/String;
+PLcom/android/server/vibrator/VibrationSettings;->loadSystemSetting(IILjava/lang/String;)I
PLcom/android/server/vibrator/VibrationSettings;->notifyListeners()V
PLcom/android/server/vibrator/VibrationSettings;->onSystemReady()V
-PLcom/android/server/vibrator/VibrationSettings;->registerSettingsChangeReceiver(Landroid/content/IntentFilter;)V
+PLcom/android/server/vibrator/VibrationSettings;->onSystemReady(Landroid/content/pm/PackageManagerInternal;Landroid/os/PowerManagerInternal;Landroid/app/IActivityManager;Lcom/android/server/companion/virtual/VirtualDeviceManagerInternal;Landroid/media/AudioManager;)V
PLcom/android/server/vibrator/VibrationSettings;->registerSettingsObserver(Landroid/net/Uri;)V
-PLcom/android/server/vibrator/VibrationSettings;->shouldIgnoreVibration(Lcom/android/server/vibrator/Vibration$CallerInfo;)Lcom/android/server/vibrator/Vibration$Status;
-PLcom/android/server/vibrator/VibrationSettings;->shouldVibrateForRingerModeLocked(I)Z
-PLcom/android/server/vibrator/VibrationSettings;->shouldVibrateForUserSetting(Lcom/android/server/vibrator/Vibration$CallerInfo;)Z
-PLcom/android/server/vibrator/VibrationSettings;->shouldVibrateInputDevices()Z
PLcom/android/server/vibrator/VibrationSettings;->toIntensity(II)I
-PLcom/android/server/vibrator/VibrationSettings;->toPositiveIntensity(II)I
PLcom/android/server/vibrator/VibrationSettings;->update()V
-PLcom/android/server/vibrator/VibrationSettings;->updateBatteryInfo(Landroid/content/Intent;)V
PLcom/android/server/vibrator/VibrationSettings;->updateRingerMode()V
-HPLcom/android/server/vibrator/VibrationSettings;->updateSettings()V
-PLcom/android/server/vibrator/VibrationStats$StatsInfo;-><init>(IIILcom/android/server/vibrator/Vibration$Status;Lcom/android/server/vibrator/VibrationStats;J)V
-PLcom/android/server/vibrator/VibrationStats$StatsInfo;->filteredKeys(Landroid/util/SparseBooleanArray;Z)[I
-PLcom/android/server/vibrator/VibrationStats$StatsInfo;->writeVibrationReported()V
-PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmCreateUptimeMillis(Lcom/android/server/vibrator/VibrationStats;)J
-PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmEndUptimeMillis(Lcom/android/server/vibrator/VibrationStats;)J
-PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmEndedByUid(Lcom/android/server/vibrator/VibrationStats;)I
-PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmEndedByUsage(Lcom/android/server/vibrator/VibrationStats;)I
-PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmInterruptedUsage(Lcom/android/server/vibrator/VibrationStats;)I
-PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmRepeatCount(Lcom/android/server/vibrator/VibrationStats;)I
-PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmStartUptimeMillis(Lcom/android/server/vibrator/VibrationStats;)J
-PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibrationCompositionTotalSize(Lcom/android/server/vibrator/VibrationStats;)I
-PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibrationPwleTotalSize(Lcom/android/server/vibrator/VibrationStats;)I
-PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibratorComposeCount(Lcom/android/server/vibrator/VibrationStats;)I
-PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibratorComposePwleCount(Lcom/android/server/vibrator/VibrationStats;)I
-PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibratorEffectsUsed(Lcom/android/server/vibrator/VibrationStats;)Landroid/util/SparseBooleanArray;
-PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibratorOffCount(Lcom/android/server/vibrator/VibrationStats;)I
-PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibratorOnCount(Lcom/android/server/vibrator/VibrationStats;)I
-PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibratorOnTotalDurationMillis(Lcom/android/server/vibrator/VibrationStats;)I
-PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibratorPerformCount(Lcom/android/server/vibrator/VibrationStats;)I
-PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibratorPrimitivesUsed(Lcom/android/server/vibrator/VibrationStats;)Landroid/util/SparseBooleanArray;
-PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibratorSetAmplitudeCount(Lcom/android/server/vibrator/VibrationStats;)I
-PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibratorSetExternalControlCount(Lcom/android/server/vibrator/VibrationStats;)I
-PLcom/android/server/vibrator/VibrationStats;-><init>()V
-PLcom/android/server/vibrator/VibrationStats;->getCreateTimeDebug()J
-PLcom/android/server/vibrator/VibrationStats;->getDurationDebug()J
-PLcom/android/server/vibrator/VibrationStats;->getEndTimeDebug()J
-PLcom/android/server/vibrator/VibrationStats;->getStartTimeDebug()J
-PLcom/android/server/vibrator/VibrationStats;->hasEnded()Z
-PLcom/android/server/vibrator/VibrationStats;->hasStarted()Z
-PLcom/android/server/vibrator/VibrationStats;->reportComposePrimitives(J[Landroid/os/vibrator/PrimitiveSegment;)V
-PLcom/android/server/vibrator/VibrationStats;->reportEnded(Lcom/android/server/vibrator/Vibration$CallerInfo;)Z
-PLcom/android/server/vibrator/VibrationStats;->reportStarted()V
-PLcom/android/server/vibrator/VibrationStats;->reportVibratorOff()V
-PLcom/android/server/vibrator/VibrationStepConductor$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/vibrator/VibrationScaler;)V
-PLcom/android/server/vibrator/VibrationStepConductor$$ExternalSyntheticLambda0;->transform(Landroid/os/VibrationEffect;Ljava/lang/Object;)Landroid/os/VibrationEffect;
+PLcom/android/server/vibrator/VibrationSettings;->updateSettings(I)V
+HPLcom/android/server/vibrator/VibrationStats$StatsInfo;-><init>(IIILcom/android/server/vibrator/VibrationSession$Status;Lcom/android/server/vibrator/VibrationStats;)V
+HPLcom/android/server/vibrator/VibrationStats$StatsInfo;->filteredKeys(Landroid/util/SparseBooleanArray;Z)[I+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;
+HPLcom/android/server/vibrator/VibrationStats;-><init>()V
+HPLcom/android/server/vibrator/VibrationStats;->reportComposePrimitives([Landroid/os/vibrator/PrimitiveSegment;J)V
PLcom/android/server/vibrator/VibrationStepConductor;-><clinit>()V
-PLcom/android/server/vibrator/VibrationStepConductor;-><init>(Lcom/android/server/vibrator/HalVibration;Lcom/android/server/vibrator/VibrationSettings;Lcom/android/server/vibrator/DeviceAdapter;Lcom/android/server/vibrator/VibrationScaler;Ljava/util/concurrent/CompletableFuture;Lcom/android/server/vibrator/VibrationThread$VibratorManagerHooks;)V
-PLcom/android/server/vibrator/VibrationStepConductor;->calculateVibrationEndInfo()Lcom/android/server/vibrator/Vibration$EndInfo;
-PLcom/android/server/vibrator/VibrationStepConductor;->expectIsVibrationThread(Z)V
-PLcom/android/server/vibrator/VibrationStepConductor;->getVibration()Lcom/android/server/vibrator/HalVibration;
-PLcom/android/server/vibrator/VibrationStepConductor;->getVibrators()Landroid/util/SparseArray;
-PLcom/android/server/vibrator/VibrationStepConductor;->hasPendingNotifySignalLocked()Z
-PLcom/android/server/vibrator/VibrationStepConductor;->isFinished()Z
-PLcom/android/server/vibrator/VibrationStepConductor;->nextVibrateStep(JLcom/android/server/vibrator/VibratorController;Landroid/os/VibrationEffect$Composed;IJ)Lcom/android/server/vibrator/AbstractVibratorStep;
-PLcom/android/server/vibrator/VibrationStepConductor;->notifyVibratorComplete(I)V
-PLcom/android/server/vibrator/VibrationStepConductor;->pollNext()Lcom/android/server/vibrator/Step;
-PLcom/android/server/vibrator/VibrationStepConductor;->prepareToStart()V
-PLcom/android/server/vibrator/VibrationStepConductor;->processAllNotifySignals()V
-PLcom/android/server/vibrator/VibrationStepConductor;->processVibratorsComplete([I)V
-PLcom/android/server/vibrator/VibrationStepConductor;->runNextStep()V
-PLcom/android/server/vibrator/VibrationStepConductor;->toSequential(Landroid/os/CombinedVibration;)Landroid/os/CombinedVibration$Sequential;
-PLcom/android/server/vibrator/VibrationStepConductor;->waitForVibrationParamsIfRequired()V
-PLcom/android/server/vibrator/VibrationStepConductor;->waitUntilNextStepIsDue()Z
-PLcom/android/server/vibrator/VibrationThread;-><init>(Landroid/os/PowerManager$WakeLock;Lcom/android/server/vibrator/VibrationThread$VibratorManagerHooks;)V
-PLcom/android/server/vibrator/VibrationThread;->clientVibrationCompleteIfNotAlready(Lcom/android/server/vibrator/Vibration$EndInfo;)V
-PLcom/android/server/vibrator/VibrationThread;->playVibration()V
-PLcom/android/server/vibrator/VibrationThread;->run()V
-PLcom/android/server/vibrator/VibrationThread;->runCurrentVibrationWithWakeLock()V
-PLcom/android/server/vibrator/VibrationThread;->runCurrentVibrationWithWakeLockAndDeathLink()V
-PLcom/android/server/vibrator/VibrationThread;->runVibrationOnVibrationThread(Lcom/android/server/vibrator/VibrationStepConductor;)Z
-PLcom/android/server/vibrator/VibrationThread;->waitForVibrationRequest()Lcom/android/server/vibrator/VibrationStepConductor;
-PLcom/android/server/vibrator/VibratorControlService;-><init>(Lcom/android/server/vibrator/VibratorControllerHolder;Lcom/android/server/vibrator/VibrationScaler;Lcom/android/server/vibrator/VibrationSettings;Ljava/lang/Object;)V
-PLcom/android/server/vibrator/VibratorControlService;->shouldRequestVibrationParams(I)Z
+HPLcom/android/server/vibrator/VibrationStepConductor;-><init>(Lcom/android/server/vibrator/HalVibration;ZLcom/android/server/vibrator/VibrationSettings;Lcom/android/server/vibrator/DeviceAdapter;Lcom/android/server/vibrator/VibrationScaler;Lcom/android/server/vibrator/VibratorFrameworkStatsLogger;Ljava/util/concurrent/CompletableFuture;Lcom/android/server/vibrator/VibratorManagerService$VibrationThreadCallbacks;)V
+HPLcom/android/server/vibrator/VibrationStepConductor;->expectIsVibrationThread(Z)V
+HPLcom/android/server/vibrator/VibrationStepConductor;->isFinished()Z+]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;]Ljava/util/Queue;Ljava/util/LinkedList;
+HPLcom/android/server/vibrator/VibrationStepConductor;->nextVibrateStep(JLcom/android/server/vibrator/VibratorController;Landroid/os/VibrationEffect$Composed;IJ)Lcom/android/server/vibrator/AbstractVibratorStep;+]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/vibrator/VibrationStepConductor;->notifyCancelled(Lcom/android/server/vibrator/Vibration$EndInfo;Z)V
+HPLcom/android/server/vibrator/VibrationStepConductor;->pollNext()Lcom/android/server/vibrator/Step;+]Ljava/util/LinkedList;Ljava/util/LinkedList;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;]Ljava/util/Queue;Ljava/util/LinkedList;
+HPLcom/android/server/vibrator/VibrationStepConductor;->prepareToStart()Z
+HPLcom/android/server/vibrator/VibrationStepConductor;->runNextStep()V+]Lcom/android/server/vibrator/Step;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Arrays$ArrayList;,Ljava/util/ImmutableCollections$List12;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;
+HPLcom/android/server/vibrator/VibrationStepConductor;->waitUntilNextStepIsDue()Z+]Landroid/util/IntArray;Landroid/util/IntArray;]Lcom/android/server/vibrator/Step;megamorphic_types]Ljava/util/Iterator;Ljava/util/PriorityQueue$Itr;]Ljava/util/LinkedList;Ljava/util/LinkedList;]Ljava/util/PriorityQueue;Ljava/util/PriorityQueue;]Ljava/util/Queue;Ljava/util/LinkedList;
+PLcom/android/server/vibrator/VibrationThread;-><init>(Landroid/os/PowerManager$WakeLock;Lcom/android/server/vibrator/VibratorManagerService$VibrationThreadCallbacks;)V
+HPLcom/android/server/vibrator/VibrationThread;->clientVibrationCompleteIfNotAlready(Lcom/android/server/vibrator/Vibration$EndInfo;)V
+HPLcom/android/server/vibrator/VibrationThread;->playVibration()V
+HPLcom/android/server/vibrator/VibrationThread;->run()V
+HPLcom/android/server/vibrator/VibrationThread;->runVibrationOnVibrationThread(Lcom/android/server/vibrator/VibrationStepConductor;)Z
+PLcom/android/server/vibrator/VibrationThread;->waitForThreadIdle(J)V
+PLcom/android/server/vibrator/VibratorControlService;-><clinit>()V
+PLcom/android/server/vibrator/VibratorControlService;-><init>(Landroid/content/Context;Lcom/android/server/vibrator/VibratorControllerHolder;Lcom/android/server/vibrator/VibrationScaler;Lcom/android/server/vibrator/VibrationSettings;Lcom/android/server/vibrator/VibratorFrameworkStatsLogger;Ljava/lang/Object;)V
PLcom/android/server/vibrator/VibratorController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/vibrator/VibratorController;Z)V
PLcom/android/server/vibrator/VibratorController$NativeWrapper;-><init>()V
PLcom/android/server/vibrator/VibratorController$NativeWrapper;->compose([Landroid/os/vibrator/PrimitiveSegment;J)J
PLcom/android/server/vibrator/VibratorController$NativeWrapper;->getInfo(Landroid/os/VibratorInfo$Builder;)Z
PLcom/android/server/vibrator/VibratorController$NativeWrapper;->init(ILcom/android/server/vibrator/VibratorController$OnVibrationCompleteListener;)V
PLcom/android/server/vibrator/VibratorController$NativeWrapper;->off()V
-PLcom/android/server/vibrator/VibratorController;-><init>(ILcom/android/server/vibrator/VibratorController$OnVibrationCompleteListener;)V
+PLcom/android/server/vibrator/VibratorController$NativeWrapper;->on(JJ)J
+PLcom/android/server/vibrator/VibratorController$NativeWrapper;->perform(JJJ)J
+PLcom/android/server/vibrator/VibratorController$NativeWrapper;->setAmplitude(F)V
+PLcom/android/server/vibrator/VibratorController$NativeWrapper;->setExternalControl(Z)V
+PLcom/android/server/vibrator/VibratorController$VibratorState;-><clinit>()V
PLcom/android/server/vibrator/VibratorController;-><init>(ILcom/android/server/vibrator/VibratorController$OnVibrationCompleteListener;Lcom/android/server/vibrator/VibratorController$NativeWrapper;)V
-PLcom/android/server/vibrator/VibratorController;->getCurrentAmplitude()F
-PLcom/android/server/vibrator/VibratorController;->getVibratorInfo()Landroid/os/VibratorInfo;
-PLcom/android/server/vibrator/VibratorController;->isVibratorInfoLoadSuccessful()Z
-PLcom/android/server/vibrator/VibratorController;->notifyListenerOnVibrating(Z)V
-PLcom/android/server/vibrator/VibratorController;->off()V
-PLcom/android/server/vibrator/VibratorController;->on([Landroid/os/vibrator/PrimitiveSegment;J)J
+PLcom/android/server/vibrator/VibratorController;->dump(Landroid/util/IndentingPrintWriter;)V
+HPLcom/android/server/vibrator/VibratorController;->off()V
+PLcom/android/server/vibrator/VibratorController;->on(Landroid/os/vibrator/PrebakedSegment;J)J
+HPLcom/android/server/vibrator/VibratorController;->on([Landroid/os/vibrator/PrimitiveSegment;J)J
PLcom/android/server/vibrator/VibratorController;->reloadVibratorInfoIfNeeded()V
-PLcom/android/server/vibrator/VibratorController;->reset()V
PLcom/android/server/vibrator/VibratorController;->setExternalControl(Z)V
-PLcom/android/server/vibrator/VibratorControllerHolder;-><init>()V
-PLcom/android/server/vibrator/VibratorControllerHolder;->getVibratorController()Landroid/frameworks/vibrator/IVibratorController;
+HPLcom/android/server/vibrator/VibratorController;->updateStateAndNotifyListenersLocked(Lcom/android/server/vibrator/VibratorController$VibratorState;)V
PLcom/android/server/vibrator/VibratorFrameworkStatsLogger$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/vibrator/VibratorFrameworkStatsLogger;)V
-PLcom/android/server/vibrator/VibratorFrameworkStatsLogger$$ExternalSyntheticLambda0;->run()V
+HPLcom/android/server/vibrator/VibratorFrameworkStatsLogger$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/vibrator/VibratorFrameworkStatsLogger$$ExternalSyntheticLambda1;-><init>(IJ)V
PLcom/android/server/vibrator/VibratorFrameworkStatsLogger$$ExternalSyntheticLambda1;->run()V
PLcom/android/server/vibrator/VibratorFrameworkStatsLogger$$ExternalSyntheticLambda2;-><init>(I)V
PLcom/android/server/vibrator/VibratorFrameworkStatsLogger$$ExternalSyntheticLambda2;->run()V
-PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->$r8$lambda$3clAp4KeKtl_6LJMNjTyvIQT3s8(IJ)V
-PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->$r8$lambda$6sCMCxdISmdoENm6LJ5XtEdSNaY(Lcom/android/server/vibrator/VibratorFrameworkStatsLogger;)V
-PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->$r8$lambda$e1LVOLtWrkBnktoOi9j1ZkWqiNw(I)V
-PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;-><init>(Landroid/os/Handler;)V
+PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;-><clinit>()V
PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;-><init>(Landroid/os/Handler;II)V
-PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->lambda$new$0()V
-PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->lambda$writeVibratorStateOffAsync$2(I)V
-PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->lambda$writeVibratorStateOnAsync$1(IJ)V
-PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->writeVibrationReportedAsync(Lcom/android/server/vibrator/VibrationStats$StatsInfo;)V
-PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->writeVibrationReportedFromQueue()V
-PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->writeVibratorStateOffAsync(I)V
-PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->writeVibratorStateOnAsync(IJ)V
-PLcom/android/server/vibrator/VibratorManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/vibrator/VibratorManagerService;)V
-PLcom/android/server/vibrator/VibratorManagerService$$ExternalSyntheticLambda1;->onChange()V
+HPLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->logVibrationSizeOfVendorEffects(ILandroid/os/CombinedVibration;)Z
+PLcom/android/server/vibrator/VibratorManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/vibrator/VibrationSettings;)V
+PLcom/android/server/vibrator/VibratorManagerService$$ExternalSyntheticLambda0;->apply(I)Ljava/lang/Object;
+PLcom/android/server/vibrator/VibratorManagerService$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/vibrator/VibratorManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/vibrator/VibratorManagerService;)V
+PLcom/android/server/vibrator/VibratorManagerService$1$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/vibrator/VibratorManagerService;I)V
+HPLcom/android/server/vibrator/VibratorManagerService$1$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z+]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Lcom/android/server/vibrator/VibrationSession;Lcom/android/server/vibrator/SingleVibrationSession;
PLcom/android/server/vibrator/VibratorManagerService$1;-><init>(Lcom/android/server/vibrator/VibratorManagerService;)V
-PLcom/android/server/vibrator/VibratorManagerService$2;-><clinit>()V
-PLcom/android/server/vibrator/VibratorManagerService$AggregatedVibrationRecord;-><init>(Lcom/android/server/vibrator/Vibration$DebugInfo;)V
+PLcom/android/server/vibrator/VibratorManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/vibrator/VibratorManagerService$2;-><init>(Lcom/android/server/vibrator/VibratorManagerService;)V
+PLcom/android/server/vibrator/VibratorManagerService$2;->onOpChanged(ILjava/lang/String;)V
+PLcom/android/server/vibrator/VibratorManagerService$ExternalVibrationCallbacks;-><init>(Lcom/android/server/vibrator/VibratorManagerService;)V
PLcom/android/server/vibrator/VibratorManagerService$ExternalVibratorService;-><init>(Lcom/android/server/vibrator/VibratorManagerService;)V
PLcom/android/server/vibrator/VibratorManagerService$Injector;-><init>()V
-PLcom/android/server/vibrator/VibratorManagerService$Injector;->addService(Ljava/lang/String;Landroid/os/IBinder;)V
-PLcom/android/server/vibrator/VibratorManagerService$Injector;->createHandler(Landroid/os/Looper;)Landroid/os/Handler;
-PLcom/android/server/vibrator/VibratorManagerService$Injector;->createVibratorController(ILcom/android/server/vibrator/VibratorController$OnVibrationCompleteListener;)Lcom/android/server/vibrator/VibratorController;
-PLcom/android/server/vibrator/VibratorManagerService$Injector;->createVibratorControllerHolder()Lcom/android/server/vibrator/VibratorControllerHolder;
-PLcom/android/server/vibrator/VibratorManagerService$Injector;->getBatteryStatsService()Lcom/android/internal/app/IBatteryStats;
-PLcom/android/server/vibrator/VibratorManagerService$Injector;->getFrameworkStatsLogger(Landroid/os/Handler;)Lcom/android/server/vibrator/VibratorFrameworkStatsLogger;
-PLcom/android/server/vibrator/VibratorManagerService$Injector;->getNativeWrapper()Lcom/android/server/vibrator/VibratorManagerService$NativeWrapper;
PLcom/android/server/vibrator/VibratorManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/vibrator/VibratorManagerService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/vibrator/VibratorManagerService$Lifecycle;->onStart()V
PLcom/android/server/vibrator/VibratorManagerService$NativeWrapper;-><init>()V
PLcom/android/server/vibrator/VibratorManagerService$NativeWrapper;->cancelSynced()V
-PLcom/android/server/vibrator/VibratorManagerService$NativeWrapper;->getCapabilities()J
-PLcom/android/server/vibrator/VibratorManagerService$NativeWrapper;->getVibratorIds()[I
+PLcom/android/server/vibrator/VibratorManagerService$NativeWrapper;->clearSessions()V
PLcom/android/server/vibrator/VibratorManagerService$NativeWrapper;->init(Lcom/android/server/vibrator/VibratorManagerService$VibratorManagerNativeCallbacks;)V
-PLcom/android/server/vibrator/VibratorManagerService$VibrationCompleteListener;-><init>(Lcom/android/server/vibrator/VibratorManagerService;)V
+PLcom/android/server/vibrator/VibratorManagerService$VendorVibrationSessionCallbacks;-><init>(Lcom/android/server/vibrator/VibratorManagerService;)V
PLcom/android/server/vibrator/VibratorManagerService$VibrationCompleteListener;->onComplete(IJ)V
-PLcom/android/server/vibrator/VibratorManagerService$VibrationRecords;-><init>(II)V
-PLcom/android/server/vibrator/VibratorManagerService$VibrationRecords;->record(Lcom/android/server/vibrator/Vibration$DebugInfo;)Lcom/android/server/vibrator/VibratorManagerService$AggregatedVibrationRecord;
+PLcom/android/server/vibrator/VibratorManagerService$VibrationRecord;-><init>(Lcom/android/server/vibrator/VibrationSession$DebugInfo;)V
+PLcom/android/server/vibrator/VibratorManagerService$VibrationRecord;->dump(Landroid/util/IndentingPrintWriter;)V
+HPLcom/android/server/vibrator/VibratorManagerService$VibrationRecord;->getCreateUptimeMs()J
+HPLcom/android/server/vibrator/VibratorManagerService$VibrationRecord;->getGroupKey()I+]Lcom/android/server/vibrator/VibrationSession$DebugInfo;Lcom/android/server/vibrator/Vibration$DebugInfoImpl;
+HPLcom/android/server/vibrator/VibratorManagerService$VibrationRecord;->mayAggregate(Lcom/android/server/vibrator/GroupedAggregatedLogRecords$SingleLogRecord;)Z
+PLcom/android/server/vibrator/VibratorManagerService$VibrationRecords;->dumpGroupHeader(Landroid/util/IndentingPrintWriter;I)V
PLcom/android/server/vibrator/VibratorManagerService$VibrationThreadCallbacks;-><init>(Lcom/android/server/vibrator/VibratorManagerService;)V
-PLcom/android/server/vibrator/VibratorManagerService$VibrationThreadCallbacks;-><init>(Lcom/android/server/vibrator/VibratorManagerService;Lcom/android/server/vibrator/VibratorManagerService$VibrationThreadCallbacks-IA;)V
-PLcom/android/server/vibrator/VibratorManagerService$VibrationThreadCallbacks;->noteVibratorOff(I)V
-PLcom/android/server/vibrator/VibratorManagerService$VibrationThreadCallbacks;->noteVibratorOn(IJ)V
-PLcom/android/server/vibrator/VibratorManagerService$VibrationThreadCallbacks;->onVibrationCompleted(JLcom/android/server/vibrator/Vibration$EndInfo;)V
-PLcom/android/server/vibrator/VibratorManagerService$VibrationThreadCallbacks;->onVibrationThreadReleased(J)V
+HPLcom/android/server/vibrator/VibratorManagerService$VibrationThreadCallbacks;->noteVibratorOff(I)V
+HPLcom/android/server/vibrator/VibratorManagerService$VibrationThreadCallbacks;->noteVibratorOn(IJ)V
PLcom/android/server/vibrator/VibratorManagerService$VibratorManagerRecords;-><init>(III)V
-PLcom/android/server/vibrator/VibratorManagerService$VibratorManagerRecords;->record(Lcom/android/server/vibrator/HalVibration;)V
-PLcom/android/server/vibrator/VibratorManagerService$VibratorManagerRecords;->record(Lcom/android/server/vibrator/Vibration$DebugInfo;)V
-PLcom/android/server/vibrator/VibratorManagerService;->-$$Nest$fgetmBatteryStatsService(Lcom/android/server/vibrator/VibratorManagerService;)Lcom/android/internal/app/IBatteryStats;
-PLcom/android/server/vibrator/VibratorManagerService;->-$$Nest$fgetmCurrentVibration(Lcom/android/server/vibrator/VibratorManagerService;)Lcom/android/server/vibrator/VibrationStepConductor;
-PLcom/android/server/vibrator/VibratorManagerService;->-$$Nest$fgetmFrameworkStatsLogger(Lcom/android/server/vibrator/VibratorManagerService;)Lcom/android/server/vibrator/VibratorFrameworkStatsLogger;
-PLcom/android/server/vibrator/VibratorManagerService;->-$$Nest$fgetmLock(Lcom/android/server/vibrator/VibratorManagerService;)Ljava/lang/Object;
-PLcom/android/server/vibrator/VibratorManagerService;->-$$Nest$fgetmNextVibration(Lcom/android/server/vibrator/VibratorManagerService;)Lcom/android/server/vibrator/VibrationStepConductor;
-PLcom/android/server/vibrator/VibratorManagerService;->-$$Nest$fputmCurrentVibration(Lcom/android/server/vibrator/VibratorManagerService;Lcom/android/server/vibrator/VibrationStepConductor;)V
-PLcom/android/server/vibrator/VibratorManagerService;->-$$Nest$monVibrationComplete(Lcom/android/server/vibrator/VibratorManagerService;IJ)V
-PLcom/android/server/vibrator/VibratorManagerService;->-$$Nest$mreportFinishedVibrationLocked(Lcom/android/server/vibrator/VibratorManagerService;Lcom/android/server/vibrator/Vibration$EndInfo;)V
+PLcom/android/server/vibrator/VibratorManagerService$VibratorManagerShellCommand$CommonOptions;-><init>(Lcom/android/server/vibrator/VibratorManagerService$VibratorManagerShellCommand;)V
+PLcom/android/server/vibrator/VibratorManagerService$VibratorManagerShellCommand;-><init>(Lcom/android/server/vibrator/VibratorManagerService;Landroid/os/IBinder;)V
+PLcom/android/server/vibrator/VibratorManagerService$VibratorManagerShellCommand;->nextEffect()Landroid/os/VibrationEffect;
+PLcom/android/server/vibrator/VibratorManagerService$VibratorManagerShellCommand;->onCommand(Ljava/lang/String;)I
+PLcom/android/server/vibrator/VibratorManagerService$VibratorManagerShellCommand;->runVibrate(Lcom/android/server/vibrator/VibratorManagerService$VibratorManagerShellCommand$CommonOptions;Landroid/os/CombinedVibration;)V
+PLcom/android/server/vibrator/VibratorManagerService;->-$$Nest$mclearCurrentSessionLocked(Lcom/android/server/vibrator/VibratorManagerService;)V
+HPLcom/android/server/vibrator/VibratorManagerService;->-$$Nest$mmaybeClearCurrentAndNextSessionsLocked(Lcom/android/server/vibrator/VibratorManagerService;Ljava/util/function/Predicate;Lcom/android/server/vibrator/VibrationSession$Status;)V
+PLcom/android/server/vibrator/VibratorManagerService;->-$$Nest$mmaybeStartNextSessionLocked(Lcom/android/server/vibrator/VibratorManagerService;)V
PLcom/android/server/vibrator/VibratorManagerService;-><clinit>()V
-HPLcom/android/server/vibrator/VibratorManagerService;-><init>(Landroid/content/Context;Lcom/android/server/vibrator/VibratorManagerService$Injector;)V
-PLcom/android/server/vibrator/VibratorManagerService;->checkAppOpModeLocked(Lcom/android/server/vibrator/Vibration$CallerInfo;)I
-PLcom/android/server/vibrator/VibratorManagerService;->createVibrationStepConductor(Lcom/android/server/vibrator/HalVibration;)Lcom/android/server/vibrator/VibrationStepConductor;
-PLcom/android/server/vibrator/VibratorManagerService;->endVibrationLocked(Lcom/android/server/vibrator/HalVibration;Lcom/android/server/vibrator/Vibration$EndInfo;Z)V
+PLcom/android/server/vibrator/VibratorManagerService;-><init>(Landroid/content/Context;Lcom/android/server/vibrator/VibratorManagerService$Injector;)V
+PLcom/android/server/vibrator/VibratorManagerService;->cancelVibrate(ILandroid/os/IBinder;)V
+HPLcom/android/server/vibrator/VibratorManagerService;->checkAppOpModeLocked(Lcom/android/server/vibrator/VibrationSession$CallerInfo;)I
+PLcom/android/server/vibrator/VibratorManagerService;->clearNextSessionLocked(Lcom/android/server/vibrator/VibrationSession$Status;Lcom/android/server/vibrator/VibrationSession$CallerInfo;)V
+HPLcom/android/server/vibrator/VibratorManagerService;->createVibrationStepConductor(Lcom/android/server/vibrator/HalVibration;Lcom/android/server/vibrator/DeviceAdapter;Z)Lcom/android/server/vibrator/VibrationStepConductor;
+PLcom/android/server/vibrator/VibratorManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/vibrator/VibratorManagerService;->dumpText(Ljava/io/PrintWriter;)V
+PLcom/android/server/vibrator/VibratorManagerService;->endSessionLocked(Lcom/android/server/vibrator/VibrationSession;Lcom/android/server/vibrator/VibrationSession$Status;Lcom/android/server/vibrator/VibrationSession$CallerInfo;)V
PLcom/android/server/vibrator/VibratorManagerService;->enforceUpdateAppOpsStatsPermission(I)V
-PLcom/android/server/vibrator/VibratorManagerService;->fillVibrationFallbacks(Lcom/android/server/vibrator/HalVibration;Landroid/os/CombinedVibration;)V
-PLcom/android/server/vibrator/VibratorManagerService;->fillVibrationFallbacks(Lcom/android/server/vibrator/HalVibration;Landroid/os/VibrationEffect;)V
-PLcom/android/server/vibrator/VibratorManagerService;->finishAppOpModeLocked(Lcom/android/server/vibrator/Vibration$CallerInfo;)V
-PLcom/android/server/vibrator/VibratorManagerService;->fixupAppOpModeLocked(ILandroid/os/VibrationAttributes;)I
PLcom/android/server/vibrator/VibratorManagerService;->fixupVibrationAttributes(Landroid/os/VibrationAttributes;Landroid/os/CombinedVibration;)Landroid/os/VibrationAttributes;
+PLcom/android/server/vibrator/VibratorManagerService;->getHapticVibrationProvider()Lcom/android/server/vibrator/HapticFeedbackVibrationProvider;
+HPLcom/android/server/vibrator/VibratorManagerService;->getVibrationImportance(Lcom/android/server/vibrator/VibrationSession;)I
PLcom/android/server/vibrator/VibratorManagerService;->getVibratorIds()[I
PLcom/android/server/vibrator/VibratorManagerService;->getVibratorInfo(I)Landroid/os/VibratorInfo;
-PLcom/android/server/vibrator/VibratorManagerService;->isEffectValid(Landroid/os/CombinedVibration;)Z
-PLcom/android/server/vibrator/VibratorManagerService;->logVibrationStatus(ILandroid/os/VibrationAttributes;Lcom/android/server/vibrator/Vibration$Status;)V
-PLcom/android/server/vibrator/VibratorManagerService;->onVibrationComplete(IJ)V
-PLcom/android/server/vibrator/VibratorManagerService;->reportFinishedVibrationLocked(Lcom/android/server/vibrator/Vibration$EndInfo;)V
-PLcom/android/server/vibrator/VibratorManagerService;->shouldIgnoreVibrationForOngoingLocked(Lcom/android/server/vibrator/Vibration;)Lcom/android/server/vibrator/Vibration$EndInfo;
-PLcom/android/server/vibrator/VibratorManagerService;->shouldIgnoreVibrationLocked(Lcom/android/server/vibrator/Vibration$CallerInfo;)Lcom/android/server/vibrator/Vibration$EndInfo;
-PLcom/android/server/vibrator/VibratorManagerService;->startAppOpModeLocked(Lcom/android/server/vibrator/Vibration$CallerInfo;)I
-PLcom/android/server/vibrator/VibratorManagerService;->startVibrationLocked(Lcom/android/server/vibrator/HalVibration;)Lcom/android/server/vibrator/Vibration$EndInfo;
-PLcom/android/server/vibrator/VibratorManagerService;->startVibrationOnThreadLocked(Lcom/android/server/vibrator/VibrationStepConductor;)Lcom/android/server/vibrator/Vibration$EndInfo;
+PLcom/android/server/vibrator/VibratorManagerService;->hasPermission(Ljava/lang/String;)Z
+HPLcom/android/server/vibrator/VibratorManagerService;->isEffectValid(Landroid/os/CombinedVibration;)Z
+HPLcom/android/server/vibrator/VibratorManagerService;->logAndRecordVibration(Lcom/android/server/vibrator/VibrationSession$DebugInfo;)V
+PLcom/android/server/vibrator/VibratorManagerService;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V
+HPLcom/android/server/vibrator/VibratorManagerService;->performHapticFeedback(IILjava/lang/String;ILjava/lang/String;II)V
+PLcom/android/server/vibrator/VibratorManagerService;->performHapticFeedbackForInputDevice(IILjava/lang/String;IIILjava/lang/String;II)V
+PLcom/android/server/vibrator/VibratorManagerService;->performHapticFeedbackForInputDeviceInternal(IILjava/lang/String;IIILjava/lang/String;Landroid/os/IBinder;II)Lcom/android/server/vibrator/HalVibration;
+HPLcom/android/server/vibrator/VibratorManagerService;->performHapticFeedbackInternal(IILjava/lang/String;ILjava/lang/String;Landroid/os/IBinder;II)Lcom/android/server/vibrator/HalVibration;
+PLcom/android/server/vibrator/VibratorManagerService;->performHapticFeedbackWithEffect(IILjava/lang/String;ILjava/lang/String;Landroid/os/IBinder;Landroid/os/VibrationEffect;Landroid/os/VibrationAttributes;)Lcom/android/server/vibrator/HalVibration;
+PLcom/android/server/vibrator/VibratorManagerService;->shouldCancelSession(Lcom/android/server/vibrator/VibrationSession;ILandroid/os/IBinder;)Z
+HPLcom/android/server/vibrator/VibratorManagerService;->shouldIgnoreForOngoing(Lcom/android/server/vibrator/VibrationSession;Lcom/android/server/vibrator/VibrationSession;)Lcom/android/server/vibrator/Vibration$EndInfo;
+HPLcom/android/server/vibrator/VibratorManagerService;->shouldIgnoreForOngoingLocked(Lcom/android/server/vibrator/VibrationSession;)Lcom/android/server/vibrator/Vibration$EndInfo;
+PLcom/android/server/vibrator/VibratorManagerService;->shouldIgnoreHapticFeedback(ILjava/lang/String;Lcom/android/server/vibrator/HapticFeedbackVibrationProvider;)Lcom/android/server/vibrator/VibrationSession$Status;
+HPLcom/android/server/vibrator/VibratorManagerService;->shouldIgnoreVibrationLocked(Lcom/android/server/vibrator/VibrationSession$CallerInfo;)Lcom/android/server/vibrator/VibrationSession$Status;+]Landroid/os/vibrator/VibrationConfig;Landroid/os/vibrator/VibrationConfig;]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/vibrator/VibratorManagerService;->shouldPipelineVibrationLocked(Lcom/android/server/vibrator/VibrationSession;Lcom/android/server/vibrator/HalVibration;)Z
+HPLcom/android/server/vibrator/VibratorManagerService;->startVibrationLocked(Lcom/android/server/vibrator/SingleVibrationSession;)Lcom/android/server/vibrator/VibrationSession$Status;
+HPLcom/android/server/vibrator/VibratorManagerService;->startVibrationOnThreadLocked(Lcom/android/server/vibrator/SingleVibrationSession;)Lcom/android/server/vibrator/VibrationSession$Status;
PLcom/android/server/vibrator/VibratorManagerService;->systemReady()V
+PLcom/android/server/vibrator/VibratorManagerService;->transformAllVibratorsLocked(Ljava/util/function/Function;)Landroid/util/SparseArray;
PLcom/android/server/vibrator/VibratorManagerService;->updateServiceState()V
PLcom/android/server/vibrator/VibratorManagerService;->vibrate(IILjava/lang/String;Landroid/os/CombinedVibration;Landroid/os/VibrationAttributes;Ljava/lang/String;Landroid/os/IBinder;)V
-PLcom/android/server/vibrator/VibratorManagerService;->vibrateInternal(IILjava/lang/String;Landroid/os/CombinedVibration;Landroid/os/VibrationAttributes;Ljava/lang/String;Landroid/os/IBinder;)Lcom/android/server/vibrator/HalVibration;
+HPLcom/android/server/vibrator/VibratorManagerService;->vibrateInternal(IILjava/lang/String;Landroid/os/CombinedVibration;Landroid/os/VibrationAttributes;Ljava/lang/String;Landroid/os/IBinder;)Lcom/android/server/vibrator/HalVibration;+]Landroid/os/CombinedVibration;Landroid/os/CombinedVibration$Mono;]Lcom/android/server/vibrator/VibrationSession;Lcom/android/server/vibrator/SingleVibrationSession;
PLcom/android/server/vibrator/VibratorManagerService;->vibrateWithPermissionCheck(IILjava/lang/String;Landroid/os/CombinedVibration;Landroid/os/VibrationAttributes;Ljava/lang/String;Landroid/os/IBinder;)Lcom/android/server/vibrator/HalVibration;
-PLcom/android/server/voiceinteraction/DatabaseHelper;-><init>(Landroid/content/Context;)V
-PLcom/android/server/voiceinteraction/RecognitionServiceInfo;->getAvailableServices(Landroid/content/Context;I)Ljava/util/List;
+PLcom/android/server/voiceinteraction/DatabaseHelper;->deleteKeyphraseSoundModel(IILjava/lang/String;)Z
+PLcom/android/server/voiceinteraction/DatabaseHelper;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/voiceinteraction/DatabaseHelper;->getKeyphraseSoundModel(IILjava/lang/String;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;
+PLcom/android/server/voiceinteraction/DatabaseHelper;->getKeyphraseSoundModel(ILjava/lang/String;Ljava/lang/String;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;
+PLcom/android/server/voiceinteraction/DatabaseHelper;->getValidKeyphraseSoundModelForUser(ILjava/lang/String;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;
+PLcom/android/server/voiceinteraction/DatabaseHelper;->updateKeyphraseSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;)Z
+PLcom/android/server/voiceinteraction/HotwordDetectionConnection$SoundTriggerCallback;-><init>(Landroid/content/Context;Lcom/android/internal/app/IHotwordRecognitionStatusCallback;Lcom/android/server/voiceinteraction/HotwordDetectionConnection;Landroid/media/permission/Identity;)V
+PLcom/android/server/voiceinteraction/HotwordDetectionConnection$SoundTriggerCallback;->onKeyphraseDetected(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;)V
+PLcom/android/server/voiceinteraction/HotwordDetectionConnection$SoundTriggerCallback;->onRecognitionPaused()V
+PLcom/android/server/voiceinteraction/HotwordDetectionConnection$SoundTriggerCallback;->onRecognitionResumed()V
+PLcom/android/server/voiceinteraction/HotwordMetricsLogger;->writeKeyphraseTriggerEvent(III)V
+PLcom/android/server/voiceinteraction/RecognitionServiceInfo;-><init>(Landroid/content/pm/ServiceInfo;ZLjava/lang/String;)V
+PLcom/android/server/voiceinteraction/RecognitionServiceInfo;->parseInfo(Landroid/content/pm/PackageManager;Landroid/content/pm/ServiceInfo;)Lcom/android/server/voiceinteraction/RecognitionServiceInfo;
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$1;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$2;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$2;->notifyActivityDestroyed(Landroid/os/IBinder;)V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$3;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$3;->asBinder()Landroid/os/IBinder;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$3;->onVoiceSessionHidden()V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$3;->onVoiceSessionShown()V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$3;->onVoiceSessionWindowVisibilityChanged(Z)V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$LocalService;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$$ExternalSyntheticLambda1;-><init>(Z)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$$ExternalSyntheticLambda3;-><init>(ILandroid/os/IBinder;Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$$ExternalSyntheticLambda3;->runOrThrow()V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$$ExternalSyntheticLambda6;-><init>(ILandroid/os/IBinder;Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;)V
+HPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$$ExternalSyntheticLambda6;->runOrThrow()V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$2;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;)V
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$2;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$2;->onPackageModified(Ljava/lang/String;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$2;->onSomePackagesChanged()V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$RoleObserver;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;Ljava/util/concurrent/Executor;)V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$RoleObserver;->onRoleHoldersChanged(Ljava/lang/String;Landroid/os/UserHandle;)V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$SettingsObserver;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;Landroid/os/Handler;)V
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->-$$Nest$mqueryInteractorServices(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;ILjava/lang/String;)Ljava/util/List;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$SoundTriggerSession;->-$$Nest$munloadKeyphraseModel(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$SoundTriggerSession;I)I
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$SoundTriggerSession;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;Lcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService$SessionImpl;Landroid/media/permission/Identity;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$SoundTriggerSession;->detach()V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$SoundTriggerSession;->getDspModuleProperties()Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$SoundTriggerSession;->startRecognition(ILjava/lang/String;Lcom/android/internal/app/IHotwordRecognitionStatusCallback;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;Z)I
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$SoundTriggerSession;->stopRecognition(ILcom/android/internal/app/IHotwordRecognitionStatusCallback;)I
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)V
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->findAvailRecognizer(Ljava/lang/String;I)Landroid/content/ComponentName;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->createSoundTriggerSessionAsOriginator(Landroid/media/permission/Identity;Landroid/os/IBinder;Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;)Lcom/android/internal/app/IVoiceInteractionSoundTriggerSession;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->deleteKeyphraseSoundModel(ILjava/lang/String;)I
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->deliverNewSession(Landroid/os/IBinder;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;)Z
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->destroyDetector(Landroid/os/IBinder;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->enforceCallerAllowedToEnrollVoiceModel()V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->enforceCallingPermission(Ljava/lang/String;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->enforceIsCurrentVoiceInteractionService()V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getActiveServiceComponentName()Landroid/content/ComponentName;
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getCurInteractor(I)Landroid/content/ComponentName;
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getCurRecognizer(I)Landroid/content/ComponentName;
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getDefaultRecognizer()Ljava/lang/String;
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getForceVoiceInteractionServicePackage(Landroid/content/res/Resources;)Ljava/lang/String;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getEnrolledKeyphraseMetadata(Ljava/lang/String;Ljava/lang/String;)Landroid/hardware/soundtrigger/KeyphraseMetadata;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getKeyphraseSoundModel(ILjava/lang/String;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->hideSessionFromSession(Landroid/os/IBinder;)Z
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->initForUser(I)V
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->initForUserNoTracing(I)V
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->initRecognizer(I)V
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->notifyActivityEventChanged(Landroid/os/IBinder;I)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->listModuleProperties(Landroid/media/permission/Identity;)Ljava/util/List;
+HPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->notifyActivityEventChanged(Landroid/os/IBinder;I)V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->queryInteractorServices(ILjava/lang/String;)Ljava/util/List;
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->registerVoiceInteractionSessionListener(Lcom/android/internal/app/IVoiceInteractionSessionListener;)V
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->setCurInteractor(Landroid/content/ComponentName;I)V
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->setCurrentUserLocked(I)V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->setImplLocked(Lcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;)V
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->shouldEnableService(Landroid/content/Context;)Z
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->switchImplementationIfNeeded(Z)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->setSessionWindowVisible(Landroid/os/IBinder;Z)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->showSessionForActiveService(Landroid/os/Bundle;ILjava/lang/String;Lcom/android/internal/app/IVoiceInteractionSessionShowCallback;Landroid/os/IBinder;)Z
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->switchImplementationIfNeededLocked(Z)V
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->switchImplementationIfNeededNoTracingLocked(Z)V
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->systemRunning(Z)V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->unloadAllKeyphraseModels()V
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->-$$Nest$fgetmServiceStub(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->-$$Nest$fgetmVoiceInteractionSessionListeners(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)Landroid/os/RemoteCallbackList;
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->-$$Nest$misUserSupported(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;Landroid/content/pm/UserInfo;)Z
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->updateKeyphraseSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;)I
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->isUserSupported(Landroid/content/pm/UserInfo;)Z
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->isUserSupported(Lcom/android/server/SystemService$TargetUser;)Z
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->onBootPhase(I)V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->onStart()V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
-PLcom/android/server/wallpaper/LocalColorRepository;-><init>()V
-PLcom/android/server/wallpaper/LocalColorRepository;->getAreasByDisplayId(I)Ljava/util/List;
-PLcom/android/server/wallpaper/WallpaperCropper;-><clinit>()V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$1;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$2;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$2;->onServiceDisconnected(Landroid/content/ComponentName;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$AccessibilitySettingsContentObserver;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;-><clinit>()V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;ILandroid/content/ComponentName;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->deliverNewSessionLocked(Landroid/os/IBinder;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;)Z
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->dumpLocked(Ljava/io/PrintWriter;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->finishLocked(Landroid/os/IBinder;Z)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->notifySoundModelsChangedLocked()V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->showSessionLocked(Landroid/os/Bundle;ILjava/lang/String;Lcom/android/internal/app/IVoiceInteractionSessionShowCallback;Landroid/os/IBinder;)Z
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$1;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$1;->onShown()V
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$PowerBoostSetter;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;Ljava/time/Instant;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$PowerBoostSetter;->run()V
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;-><clinit>()V
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;-><init>(Ljava/lang/Object;Landroid/content/ComponentName;ILandroid/content/Context;Lcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;ILandroid/os/Handler;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->canHandleReceivedAssistDataLocked()Z
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->cancelLocked(Z)V
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->getUserDisabledShowContextLocked()I
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->hideLocked()Z
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->onAssistDataReceivedLocked(IILandroid/os/Bundle;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->onAssistScreenshotReceivedLocked(Landroid/graphics/Bitmap;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V
PLcom/android/server/wallpaper/WallpaperCropper;-><init>(Lcom/android/server/wallpaper/WallpaperDisplayHelper;)V
-PLcom/android/server/wallpaper/WallpaperData$BindSource;->$values()[Lcom/android/server/wallpaper/WallpaperData$BindSource;
PLcom/android/server/wallpaper/WallpaperData$BindSource;-><clinit>()V
-PLcom/android/server/wallpaper/WallpaperData$BindSource;-><init>(Ljava/lang/String;I)V
PLcom/android/server/wallpaper/WallpaperData$BindSource;->values()[Lcom/android/server/wallpaper/WallpaperData$BindSource;
-HPLcom/android/server/wallpaper/WallpaperData;-><init>(II)V
+PLcom/android/server/wallpaper/WallpaperData;-><init>(II)V
PLcom/android/server/wallpaper/WallpaperData;-><init>(Lcom/android/server/wallpaper/WallpaperData;)V
-PLcom/android/server/wallpaper/WallpaperData;->cropExists()Z
+PLcom/android/server/wallpaper/WallpaperData;->getComponent()Landroid/content/ComponentName;
PLcom/android/server/wallpaper/WallpaperData;->getCropFile()Ljava/io/File;
-PLcom/android/server/wallpaper/WallpaperData;->getFile(Landroid/util/SparseArray;Ljava/lang/String;)Ljava/io/File;
PLcom/android/server/wallpaper/WallpaperData;->getWallpaperFile()Ljava/io/File;
-PLcom/android/server/wallpaper/WallpaperData;->sourceExists()Z
-PLcom/android/server/wallpaper/WallpaperDataParser$WallpaperLoadingResult;-><init>(Lcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperData;Z)V
-PLcom/android/server/wallpaper/WallpaperDataParser$WallpaperLoadingResult;-><init>(Lcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperData;ZLcom/android/server/wallpaper/WallpaperDataParser$WallpaperLoadingResult-IA;)V
-PLcom/android/server/wallpaper/WallpaperDataParser$WallpaperLoadingResult;->getLockWallpaperData()Lcom/android/server/wallpaper/WallpaperData;
-PLcom/android/server/wallpaper/WallpaperDataParser$WallpaperLoadingResult;->getSystemWallpaperData()Lcom/android/server/wallpaper/WallpaperData;
-PLcom/android/server/wallpaper/WallpaperDataParser$WallpaperLoadingResult;->success()Z
-PLcom/android/server/wallpaper/WallpaperDataParser;-><clinit>()V
+PLcom/android/server/wallpaper/WallpaperData;->setDescription(Landroid/app/wallpaper/WallpaperDescription;)V
PLcom/android/server/wallpaper/WallpaperDataParser;-><init>(Landroid/content/Context;Lcom/android/server/wallpaper/WallpaperDisplayHelper;Lcom/android/server/wallpaper/WallpaperCropper;)V
-PLcom/android/server/wallpaper/WallpaperDataParser;->ensureSaneWallpaperData(Lcom/android/server/wallpaper/WallpaperData;)V
-PLcom/android/server/wallpaper/WallpaperDataParser;->getAttributeFloat(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;F)F
-PLcom/android/server/wallpaper/WallpaperDataParser;->getAttributeInt(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;I)I
-PLcom/android/server/wallpaper/WallpaperDataParser;->getAttributeString(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/wallpaper/WallpaperDataParser;->loadSettingsLocked(IZZI)Lcom/android/server/wallpaper/WallpaperDataParser$WallpaperLoadingResult;
+PLcom/android/server/wallpaper/WallpaperDataParser;->loadSettingsFromSerializer(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/wallpaper/WallpaperData;IZZZLcom/android/server/wallpaper/WallpaperDisplayHelper$DisplayData;)Lcom/android/server/wallpaper/WallpaperData;
PLcom/android/server/wallpaper/WallpaperDataParser;->makeJournaledFile(I)Lcom/android/internal/util/JournaledFile;
-PLcom/android/server/wallpaper/WallpaperDataParser;->migrateFromOld()V
-HPLcom/android/server/wallpaper/WallpaperDataParser;->parseWallpaperAttributes(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/wallpaper/WallpaperData;Z)V
-PLcom/android/server/wallpaper/WallpaperDataParser;->saveSettingsLocked(ILcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperData;)V
-HPLcom/android/server/wallpaper/WallpaperDataParser;->writeWallpaperAttributes(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperDataParser;->parseComponentName(Lcom/android/modules/utils/TypedXmlPullParser;)Landroid/content/ComponentName;
+PLcom/android/server/wallpaper/WallpaperDataParser;->parseWallpaperAttributes(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/wallpaper/WallpaperData;Z)V
+PLcom/android/server/wallpaper/WallpaperDataParser;->saveSettingsToSerializer(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperDataParser;->writeWallpaperAttributes(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Lcom/android/server/wallpaper/WallpaperData;)V
PLcom/android/server/wallpaper/WallpaperDisplayHelper$DisplayData;-><init>(I)V
-PLcom/android/server/wallpaper/WallpaperDisplayHelper;-><clinit>()V
PLcom/android/server/wallpaper/WallpaperDisplayHelper;-><init>(Landroid/hardware/display/DisplayManager;Landroid/view/WindowManager;Lcom/android/server/wm/WindowManagerInternal;Z)V
-PLcom/android/server/wallpaper/WallpaperDisplayHelper;->ensureSaneWallpaperDisplaySize(Lcom/android/server/wallpaper/WallpaperDisplayHelper$DisplayData;I)V
PLcom/android/server/wallpaper/WallpaperDisplayHelper;->getDisplayDataOrCreate(I)Lcom/android/server/wallpaper/WallpaperDisplayHelper$DisplayData;
-PLcom/android/server/wallpaper/WallpaperDisplayHelper;->getDisplays()[Landroid/view/Display;
PLcom/android/server/wallpaper/WallpaperDisplayHelper;->getMaximumSizeDimension(I)I
PLcom/android/server/wallpaper/WallpaperDisplayHelper;->isUsableDisplay(Landroid/view/Display;I)Z
-PLcom/android/server/wallpaper/WallpaperManagerInternal;-><init>()V
-PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V
PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;I)V
-PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda12;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Ljava/lang/String;)V
-PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda13;->getOrThrow()Ljava/lang/Object;
-PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda19;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperData;)V
-PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda19;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda20;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperData;)V
-PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda20;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)V
-PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda2;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)V
-PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/wallpaper/WallpaperCropper;)V
-PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda6;-><init>(I)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;I)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda11;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Ljava/lang/String;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda12;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda2;-><init>(ILjava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/wallpaper/WallpaperCropper;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda5;-><init>(I)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda5;->run()V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperData;)V
PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda6;->run()V
-PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperData;)V
-PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda7;->run()V
-PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda8;-><init>(IILandroid/os/Bundle;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda7;-><init>(Landroid/os/Bundle;III)V
+HPLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda7;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda8;-><init>(I)V
PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;)V
PLcom/android/server/wallpaper/WallpaperManagerService$1;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
PLcom/android/server/wallpaper/WallpaperManagerService$1;->onDisplayChanged(I)V
-PLcom/android/server/wallpaper/WallpaperManagerService$3;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
-PLcom/android/server/wallpaper/WallpaperManagerService$4;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$3;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;I)V
PLcom/android/server/wallpaper/WallpaperManagerService$5;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
PLcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;I)V
PLcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;->connectLocked(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;->disconnectLocked(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)V
PLcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;->ensureStatusHandled()V
PLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;->onStart()V
PLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
PLcom/android/server/wallpaper/WallpaperManagerService$LocalService;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
-PLcom/android/server/wallpaper/WallpaperManagerService$LocalService;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$LocalService-IA;)V
PLcom/android/server/wallpaper/WallpaperManagerService$LocalService;->onScreenTurnedOn(I)V
PLcom/android/server/wallpaper/WallpaperManagerService$LocalService;->onScreenTurningOn(I)V
PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->doPackagesChangedLocked(ZLcom/android/server/wallpaper/WallpaperData;)Z
-PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
-PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)V
-PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)V
-PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)V
-PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->-$$Nest$mappendConnectorWithCondition(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Ljava/util/function/Predicate;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V
+PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onPackageUpdateStarted(Ljava/lang/String;I)V
+PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onSomePackagesChanged()V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;I)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Landroid/app/WallpaperInfo;Lcom/android/server/wallpaper/WallpaperData;I)V
PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->appendConnectorWithCondition(Ljava/util/function/Predicate;)V
PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->attachEngine(Landroid/service/wallpaper/IWallpaperEngine;I)V
@@ -25134,210 +20097,149 @@ PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->con
PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->engineShown(Landroid/service/wallpaper/IWallpaperEngine;)V
PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->forEachDisplayConnector(Ljava/util/function/Consumer;)V
PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->getDisplayConnectorOrCreate(I)Lcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;
-PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->initDisplayState()V
-HPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V
PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->onWallpaperColorsChanged(Landroid/app/WallpaperColors;I)V
PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperDestinationChangeHandler;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperData;)V
PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperDestinationChangeHandler;->complete()V
PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperData;)V
-PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;->dataForEvent(Z)Lcom/android/server/wallpaper/WallpaperData;
PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;->onEvent(ILjava/lang/String;)V
-PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;->updateWallpapers(ILjava/lang/String;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->$r8$lambda$5ErvDQXwaddOkf73QSp6u6kkQ9Y(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Landroid/view/Display;)Z
-PLcom/android/server/wallpaper/WallpaperManagerService;->$r8$lambda$70f6O3WniAL1EPYwIwKjPj9UKTo(IILandroid/os/Bundle;Lcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->$r8$lambda$HPV0skZunkb71zseMl_vk0jUzZ8(I)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->$r8$lambda$Klm5b07ADsYSKveShfQLaSU4BJU(Lcom/android/server/wallpaper/WallpaperManagerService;ILjava/lang/Integer;Ljava/lang/String;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->$r8$lambda$MtJzR9Tfzpn1ib32AAJG680ugdY(Lcom/android/server/wallpaper/WallpaperManagerService;Ljava/lang/String;)Ljava/lang/Boolean;
-PLcom/android/server/wallpaper/WallpaperManagerService;->$r8$lambda$NZufi7t-APbcRooDKxjzjfXjTj8(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->$r8$lambda$S4jgCqwuOI416eRiQyNOsDygOVs(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperData;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->$r8$lambda$mkcPPqQQi9_GWMzWCHYLmW8Mmmo(Lcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->$r8$lambda$pRbDlKnuXuH2cuSxUxGHR4zK0uM(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$fgetmContext(Lcom/android/server/wallpaper/WallpaperManagerService;)Landroid/content/Context;
-PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$fgetmCurrentUserId(Lcom/android/server/wallpaper/WallpaperManagerService;)I
-PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$fgetmImageWallpaper(Lcom/android/server/wallpaper/WallpaperManagerService;)Landroid/content/ComponentName;
-PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$fgetmInAmbientMode(Lcom/android/server/wallpaper/WallpaperManagerService;)Z
-PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$fgetmLocalColorRepo(Lcom/android/server/wallpaper/WallpaperManagerService;)Lcom/android/server/wallpaper/LocalColorRepository;
-PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$fgetmLock(Lcom/android/server/wallpaper/WallpaperManagerService;)Ljava/lang/Object;
-PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$fgetmWallpaperMap(Lcom/android/server/wallpaper/WallpaperManagerService;)Landroid/util/SparseArray;
-PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$fgetmWindowManagerInternal(Lcom/android/server/wallpaper/WallpaperManagerService;)Lcom/android/server/wm/WindowManagerInternal;
-PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$mattachServiceLocked(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperData;)V
PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$mgetWallpapers(Lcom/android/server/wallpaper/WallpaperManagerService;)[Lcom/android/server/wallpaper/WallpaperData;
-PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$mnotifyScreenTurnedOn(Lcom/android/server/wallpaper/WallpaperManagerService;I)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$mnotifyScreenTurningOn(Lcom/android/server/wallpaper/WallpaperManagerService;I)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$mnotifyWallpaperColorsChangedOnDisplay(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperData;I)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$msupportsMultiDisplay(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)Z
PLcom/android/server/wallpaper/WallpaperManagerService;-><clinit>()V
-HPLcom/android/server/wallpaper/WallpaperManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->attachServiceLocked(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperData;)V
-HPLcom/android/server/wallpaper/WallpaperManagerService;->bindWallpaperComponentLocked(Landroid/content/ComponentName;ZZLcom/android/server/wallpaper/WallpaperData;Landroid/os/IRemoteCallback;)Z
-PLcom/android/server/wallpaper/WallpaperManagerService;->changingToSame(Landroid/content/ComponentName;Lcom/android/server/wallpaper/WallpaperData;)Z
-PLcom/android/server/wallpaper/WallpaperManagerService;->checkCallerIsSystemOrSystemUi()V
+PLcom/android/server/wallpaper/WallpaperManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->bindWallpaperComponentLocked(Landroid/content/ComponentName;ZZLcom/android/server/wallpaper/WallpaperData;Landroid/os/IRemoteCallback;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->bindWallpaperDescriptionLocked(Landroid/app/wallpaper/WallpaperDescription;ZZLcom/android/server/wallpaper/WallpaperData;Landroid/os/IRemoteCallback;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->changingToSame(Landroid/app/wallpaper/WallpaperDescription;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Landroid/app/wallpaper/WallpaperDescription;)Z
PLcom/android/server/wallpaper/WallpaperManagerService;->checkPermission(Ljava/lang/String;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->clearWallpaperBitmaps(II)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->clearWallpaperBitmaps(Lcom/android/server/wallpaper/WallpaperData;)Z
-PLcom/android/server/wallpaper/WallpaperManagerService;->emptyCallbackList(Landroid/os/RemoteCallbackList;)Z
-PLcom/android/server/wallpaper/WallpaperManagerService;->enforcePackageBelongsToUid(Ljava/lang/String;I)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->errorCheck(I)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->getActiveWallpapers()[Lcom/android/server/wallpaper/WallpaperData;
+PLcom/android/server/wallpaper/WallpaperManagerService;->clearWallpaperBitmaps(Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->detachWallpaperLocked(Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->dumpWallpaper(Lcom/android/server/wallpaper/WallpaperData;Ljava/io/PrintWriter;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->extractColors(Lcom/android/server/wallpaper/WallpaperData;)Z
+HPLcom/android/server/wallpaper/WallpaperManagerService;->getActiveWallpapers()[Lcom/android/server/wallpaper/WallpaperData;
+PLcom/android/server/wallpaper/WallpaperManagerService;->getAdjustedWallpaperColorsOnDimming(Lcom/android/server/wallpaper/WallpaperData;)Landroid/app/WallpaperColors;
PLcom/android/server/wallpaper/WallpaperManagerService;->getHandlerForBindingWallpaperLocked()Landroid/os/Handler;
PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperCallbacks(II)Landroid/os/RemoteCallbackList;
PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperInfoWithFlags(II)Landroid/app/WallpaperInfo;
+PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperInstance(IIZ)Landroid/app/wallpaper/WallpaperInstance;
PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperSafeLocked(II)Lcom/android/server/wallpaper/WallpaperData;
-PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpapers()[Lcom/android/server/wallpaper/WallpaperData;
PLcom/android/server/wallpaper/WallpaperManagerService;->hasPermission(Ljava/lang/String;)Z
-PLcom/android/server/wallpaper/WallpaperManagerService;->initialize()V
-PLcom/android/server/wallpaper/WallpaperManagerService;->initializeFallbackWallpaper()V
PLcom/android/server/wallpaper/WallpaperManagerService;->isDefaultComponent(Landroid/content/ComponentName;)Z
PLcom/android/server/wallpaper/WallpaperManagerService;->isFromForegroundApp(Ljava/lang/String;)Z
PLcom/android/server/wallpaper/WallpaperManagerService;->isSetWallpaperAllowed(Ljava/lang/String;)Z
PLcom/android/server/wallpaper/WallpaperManagerService;->isWallpaperSupported(Ljava/lang/String;)Z
-PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$attachServiceLocked$17(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$errorCheck$4(ILjava/lang/Integer;Ljava/lang/String;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$isFromForegroundApp$18(Ljava/lang/String;)Ljava/lang/Boolean;
-PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$notifyWakingUp$10(IILandroid/os/Bundle;Lcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$notifyWallpaperColorsChanged$0(Lcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$onUnlockUser$5(I)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$setWallpaperComponentInternal$14(Lcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$switchUser$6(Lcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperData;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$updateFallbackConnection$2(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Landroid/view/Display;)Z
-PLcom/android/server/wallpaper/WallpaperManagerService;->loadSettingsLocked(IZI)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->loadSettingsLocked(IIZ)V
PLcom/android/server/wallpaper/WallpaperManagerService;->maybeDetachLastWallpapers(Lcom/android/server/wallpaper/WallpaperData;)V
PLcom/android/server/wallpaper/WallpaperManagerService;->notifyCallbacksLocked(Lcom/android/server/wallpaper/WallpaperData;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->notifyScreenTurnedOn(I)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->notifyScreenTurningOn(I)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->notifyGoingToSleep(IILandroid/os/Bundle;)V
PLcom/android/server/wallpaper/WallpaperManagerService;->notifyWakingUp(IILandroid/os/Bundle;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->notifyWallpaperColorsChanged(Lcom/android/server/wallpaper/WallpaperData;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->notifyWallpaperColorsChangedOnDisplay(Lcom/android/server/wallpaper/WallpaperData;I)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->onBootPhase(I)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->onUnlockUser(I)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->packageBelongsToUid(Ljava/lang/String;I)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->notifyWallpaperChanged(Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->notifyWallpaperColorsChangedOnDisplay(Lcom/android/server/wallpaper/WallpaperData;II)V
PLcom/android/server/wallpaper/WallpaperManagerService;->registerWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;II)V
PLcom/android/server/wallpaper/WallpaperManagerService;->saveSettingsLocked(I)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->setWallpaperComponent(Landroid/content/ComponentName;Ljava/lang/String;II)Z
-PLcom/android/server/wallpaper/WallpaperManagerService;->setWallpaperComponentChecked(Landroid/content/ComponentName;Ljava/lang/String;II)V
-HPLcom/android/server/wallpaper/WallpaperManagerService;->setWallpaperComponentInternal(Landroid/content/ComponentName;IIZZLandroid/os/IRemoteCallback;)Z
-PLcom/android/server/wallpaper/WallpaperManagerService;->supportsMultiDisplay(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->setWallpaperComponentChecked(Landroid/app/wallpaper/WallpaperDescription;Ljava/lang/String;II)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->setWallpaperDescription(Landroid/app/wallpaper/WallpaperDescription;Ljava/lang/String;II)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->setWallpaperDescriptionInternal(Landroid/app/wallpaper/WallpaperDescription;IIZZLandroid/os/IRemoteCallback;)Z
PLcom/android/server/wallpaper/WallpaperManagerService;->switchUser(ILandroid/os/IRemoteCallback;)V
PLcom/android/server/wallpaper/WallpaperManagerService;->switchWallpaper(Lcom/android/server/wallpaper/WallpaperData;Landroid/os/IRemoteCallback;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->systemReady()V
PLcom/android/server/wallpaper/WallpaperManagerService;->updateCurrentWallpapers(Lcom/android/server/wallpaper/WallpaperData;)V
PLcom/android/server/wallpaper/WallpaperManagerService;->updateFallbackConnection()V
PLcom/android/server/wallpaper/WallpaperUtils;-><clinit>()V
-PLcom/android/server/wallpaper/WallpaperUtils;->getCurrentWallpaperId()I
-PLcom/android/server/wallpaper/WallpaperUtils;->getWallpaperDir(I)Ljava/io/File;
PLcom/android/server/wallpaper/WallpaperUtils;->getWallpaperFiles(I)Ljava/util/List;
PLcom/android/server/wallpaper/WallpaperUtils;->makeWallpaperIdLocked()I
-PLcom/android/server/wallpaper/WallpaperUtils;->setCurrentWallpaperId(I)V
-PLcom/android/server/wearable/WearableSensingManagerPerUserService;-><clinit>()V
-PLcom/android/server/wearable/WearableSensingManagerPerUserService;-><init>(Lcom/android/server/wearable/WearableSensingManagerService;Ljava/lang/Object;I)V
-PLcom/android/server/wearable/WearableSensingManagerPerUserService;->destroyLocked()V
-PLcom/android/server/wearable/WearableSensingManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wearable/WearableSensingManagerService;)V
-PLcom/android/server/wearable/WearableSensingManagerService$WearableSensingManagerInternal;-><init>(Lcom/android/server/wearable/WearableSensingManagerService;)V
-PLcom/android/server/wearable/WearableSensingManagerService$WearableSensingManagerInternal;-><init>(Lcom/android/server/wearable/WearableSensingManagerService;Lcom/android/server/wearable/WearableSensingManagerService$WearableSensingManagerInternal-IA;)V
-PLcom/android/server/wearable/WearableSensingManagerService;-><clinit>()V
-PLcom/android/server/wearable/WearableSensingManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/wearable/WearableSensingManagerService;->newServiceLocked(IZ)Lcom/android/server/infra/AbstractPerUserSystemService;
-PLcom/android/server/wearable/WearableSensingManagerService;->newServiceLocked(IZ)Lcom/android/server/wearable/WearableSensingManagerPerUserService;
-PLcom/android/server/wearable/WearableSensingManagerService;->onBootPhase(I)V
-PLcom/android/server/wearable/WearableSensingManagerService;->onServiceRemoved(Lcom/android/server/infra/AbstractPerUserSystemService;I)V
-PLcom/android/server/wearable/WearableSensingManagerService;->onServiceRemoved(Lcom/android/server/wearable/WearableSensingManagerPerUserService;I)V
-PLcom/android/server/wearable/WearableSensingManagerService;->onStart()V
PLcom/android/server/wm/AbsAppSnapshotController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/AbsAppSnapshotController;->captureSnapshot(Lcom/android/server/wm/WindowContainer;)Landroid/window/TaskSnapshot;
+HPLcom/android/server/wm/AbsAppSnapshotController;->checkIfReadyToSnapshot(Lcom/android/server/wm/WindowContainer;)Landroid/util/Pair;
+PLcom/android/server/wm/AbsAppSnapshotController;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/AbsAppSnapshotController;->getSnapshotMode(Lcom/android/server/wm/WindowContainer;)I
PLcom/android/server/wm/AbsAppSnapshotController;->initSnapshotScale()F
-PLcom/android/server/wm/AbsAppSnapshotController;->initialize(Lcom/android/server/wm/SnapshotCache;)V
-PLcom/android/server/wm/AbsAppSnapshotController;->setSnapshotEnabled(Z)V
-PLcom/android/server/wm/AbsAppSnapshotController;->shouldDisableSnapshots()Z
-PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl$UiChangesForAccessibilityCallbacksDispatcher$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowManagerInternal$AccessibilityControllerInternal$UiChangesForAccessibilityCallbacks;)V
+HPLcom/android/server/wm/AbsAppSnapshotController;->prepareTaskSnapshot(Lcom/android/server/wm/WindowContainer;Landroid/window/TaskSnapshot$Builder;)Landroid/graphics/Rect;
+HPLcom/android/server/wm/AbsAppSnapshotController;->shouldDisableSnapshots()Z
+HPLcom/android/server/wm/AbsAppSnapshotController;->snapshot(Lcom/android/server/wm/WindowContainer;F)Landroid/window/TaskSnapshot;
+PLcom/android/server/wm/AbsAppSnapshotController;->validateSnapshot(Landroid/window/TaskSnapshot;)Landroid/window/TaskSnapshot;
+PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl$UiChangesForAccessibilityCallbacksDispatcher$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/accessibility/magnification/MagnificationController;)V
PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl$UiChangesForAccessibilityCallbacksDispatcher$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl$UiChangesForAccessibilityCallbacksDispatcher;-><init>(Lcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;Landroid/os/Looper;Lcom/android/server/wm/WindowManagerInternal$AccessibilityControllerInternal$UiChangesForAccessibilityCallbacks;)V
-PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl$UiChangesForAccessibilityCallbacksDispatcher;->onRectangleOnScreenRequested(ILandroid/graphics/Rect;)V
+PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl$UiChangesForAccessibilityCallbacksDispatcher;-><init>(Lcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;Landroid/os/Looper;Lcom/android/server/accessibility/magnification/MagnificationController;)V
PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;->getInstance(Lcom/android/server/wm/WindowManagerService;)Lcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;
-PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;->hasWindowManagerEventDispatcher()Z
-HPLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;->isTracingEnabled(J)Z
+PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;->isTracingEnabled(J)Z
PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;->onRectangleOnScreenRequested(ILandroid/graphics/Rect;)V
-PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;->setUiChangesForAccessibilityCallbacks(Lcom/android/server/wm/WindowManagerInternal$AccessibilityControllerInternal$UiChangesForAccessibilityCallbacks;)V
-PLcom/android/server/wm/AccessibilityController$AccessibilityTracing$LogHandler;-><init>(Lcom/android/server/wm/AccessibilityController$AccessibilityTracing;Landroid/os/Looper;)V
PLcom/android/server/wm/AccessibilityController$AccessibilityTracing;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/AccessibilityController$AccessibilityTracing;->getInstance(Lcom/android/server/wm/WindowManagerService;)Lcom/android/server/wm/AccessibilityController$AccessibilityTracing;
-PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver$MyHandler;-><init>(Lcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;Landroid/os/Looper;)V
-PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->-$$Nest$fgetmInitialized(Lcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;)Z
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier;Landroid/util/SparseArray;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MyHandler;-><init>(Lcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;Landroid/os/Looper;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MyHandler;-><init>(Ljava/lang/Object;Landroid/os/Looper;I)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MyHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$UserContextChangedNotifier;-><init>(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier$MyHandler;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;Landroid/view/Display;Lcom/android/server/wm/WindowManagerInternal$MagnificationCallbacks;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->isFullscreenMagnificationActivated()Z
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->notifyImeWindowVisibilityChanged(Z)V
+HPLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->recomputeBounds()V
PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;-><init>(Lcom/android/server/wm/WindowManagerService;ILcom/android/server/wm/WindowManagerInternal$WindowsForAccessibilityCallback;Lcom/android/server/wm/AccessibilityWindowsPopulator;)V
-PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->addPopulatedWindowInfo(Lcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;Landroid/graphics/Region;Ljava/util/List;Ljava/util/Set;)V
-PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->buildWindowInfoListLocked(Ljava/util/List;Landroid/graphics/Point;)Ljava/util/List;
HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->computeChangedWindows(Z)V
-PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->getTopFocusWindow()Lcom/android/server/wm/WindowState;
PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->performComputeChangedWindows(Z)V
-PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->updateUnaccountedSpace(Lcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;Landroid/graphics/Region;)V
-PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->windowMattersToAccessibility(Lcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;Landroid/graphics/Region;Landroid/graphics/Region;)Z
-PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->windowMattersToUnaccountedSpaceComputation(Lcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;)Z
-PLcom/android/server/wm/AccessibilityController;->-$$Nest$sfgetSTATIC_LOCK()Ljava/lang/Object;
+PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->scheduleComputeChangedWindows()V
PLcom/android/server/wm/AccessibilityController;-><clinit>()V
PLcom/android/server/wm/AccessibilityController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/AccessibilityController;->getAccessibilityControllerInternal(Lcom/android/server/wm/WindowManagerService;)Lcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;
-HPLcom/android/server/wm/AccessibilityController;->hasCallbacks()Z
-PLcom/android/server/wm/AccessibilityController;->onFocusChanged(Lcom/android/server/wm/InputTarget;Lcom/android/server/wm/InputTarget;)V
+PLcom/android/server/wm/AccessibilityController;->getMagnificationRegion(ILandroid/graphics/Region;)V
+PLcom/android/server/wm/AccessibilityController;->getMagnificationSpecForWindow(Lcom/android/server/wm/WindowState;)Landroid/view/MagnificationSpec;
+HPLcom/android/server/wm/AccessibilityController;->hasCallbacks()Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+HPLcom/android/server/wm/AccessibilityController;->onFocusChanged(Lcom/android/server/wm/InputTarget;Lcom/android/server/wm/InputTarget;)V
+PLcom/android/server/wm/AccessibilityController;->onSomeWindowResizedOrMovedWithCallingUid(I[I)V
+PLcom/android/server/wm/AccessibilityController;->onWindowTransition(Lcom/android/server/wm/WindowState;I)V
PLcom/android/server/wm/AccessibilityController;->performComputeChangedWindowsNot(IZ)V
-PLcom/android/server/wm/AccessibilityController;->setFocusedDisplay(I)V
+PLcom/android/server/wm/AccessibilityController;->setMagnificationCallbacks(ILcom/android/server/wm/WindowManagerInternal$MagnificationCallbacks;)Z
+PLcom/android/server/wm/AccessibilityController;->setMagnificationSpec(ILandroid/view/MagnificationSpec;)V
PLcom/android/server/wm/AccessibilityController;->setWindowsForAccessibilityCallback(ILcom/android/server/wm/WindowManagerInternal$WindowsForAccessibilityCallback;)V
PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;-><init>()V
-PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->getTouchableRegionInScreen(Landroid/graphics/Region;)V
-PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->getTouchableRegionInWindow(Landroid/graphics/Region;)V
-PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->getTouchableRegionInWindow(ZLandroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Rect;Landroid/graphics/Matrix;Landroid/graphics/Matrix;)V
-PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->getType()I
-PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->getUnMagnifiedTouchableRegion(ZLandroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Matrix;Landroid/graphics/Matrix;)V
-PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->getWindowInfo()Landroid/view/WindowInfo;
-PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->ignoreRecentsAnimationForAccessibility()Z
-HPLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->initializeData(Lcom/android/server/wm/WindowManagerService;Landroid/view/InputWindowHandle;Landroid/graphics/Matrix;Landroid/os/IBinder;Landroid/graphics/Matrix;)Lcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;
-PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->isFocused()Z
-PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->isTouchable()Z
-PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->shouldMagnify()Z
PLcom/android/server/wm/AccessibilityWindowsPopulator$MyHandler;-><init>(Lcom/android/server/wm/AccessibilityWindowsPopulator;Landroid/os/Looper;)V
PLcom/android/server/wm/AccessibilityWindowsPopulator$MyHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/wm/AccessibilityWindowsPopulator;->-$$Nest$mnotifyWindowsChanged(Lcom/android/server/wm/AccessibilityWindowsPopulator;Ljava/util/List;)V
+PLcom/android/server/wm/AccessibilityWindowsPopulator;->-$$Nest$mforceUpdateWindows(Lcom/android/server/wm/AccessibilityWindowsPopulator;)V
PLcom/android/server/wm/AccessibilityWindowsPopulator;-><clinit>()V
PLcom/android/server/wm/AccessibilityWindowsPopulator;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/AccessibilityController;)V
-PLcom/android/server/wm/AccessibilityWindowsPopulator;->findMagnificationSpecInverseMatrixIfNeeded(Landroid/util/SparseArray;)V
-PLcom/android/server/wm/AccessibilityWindowsPopulator;->getDisplaysForWindowsChanged(Ljava/util/List;Landroid/util/SparseArray;Landroid/util/SparseArray;)V
-PLcom/android/server/wm/AccessibilityWindowsPopulator;->getWindowsTransformMatrix(Ljava/util/List;)Ljava/util/HashMap;
-PLcom/android/server/wm/AccessibilityWindowsPopulator;->hasWindowsChanged(Ljava/util/List;Ljava/util/List;)Z
+PLcom/android/server/wm/AccessibilityWindowsPopulator;->generateInverseMatrix(Landroid/view/MagnificationSpec;Landroid/graphics/Matrix;)V
PLcom/android/server/wm/AccessibilityWindowsPopulator;->notifyWindowsChanged(Ljava/util/List;)V
-PLcom/android/server/wm/AccessibilityWindowsPopulator;->onWindowInfosChangedInternal([Landroid/view/InputWindowHandle;[Landroid/window/WindowInfosListener$DisplayInfo;)V
-PLcom/android/server/wm/AccessibilityWindowsPopulator;->populateVisibleWindowHandlesAndNotifyWindowsChangeIfNeeded()V
-PLcom/android/server/wm/AccessibilityWindowsPopulator;->populateVisibleWindowsOnScreenLocked(ILjava/util/List;)V
+PLcom/android/server/wm/AccessibilityWindowsPopulator;->onWindowInfosChanged([Landroid/view/InputWindowHandle;[Landroid/window/WindowInfosListener$DisplayInfo;)V
+HPLcom/android/server/wm/AccessibilityWindowsPopulator;->onWindowInfosChangedInternal([Landroid/view/InputWindowHandle;[Landroid/window/WindowInfosListener$DisplayInfo;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Ljava/util/HashMap;
+HPLcom/android/server/wm/AccessibilityWindowsPopulator;->populateVisibleWindowHandlesAndNotifyWindowsChangeIfNeeded()V+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/wm/AccessibilityWindowsPopulator;->populateVisibleWindowsOnScreenLocked(ILjava/util/List;)V
+PLcom/android/server/wm/AccessibilityWindowsPopulator;->releaseResources()V
PLcom/android/server/wm/AccessibilityWindowsPopulator;->setWindowsNotification(Z)V
-PLcom/android/server/wm/ActivityCallerState$CallerInfo;-><init>()V
+HSPLcom/android/server/wm/ActionChain$Tracker;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+HPLcom/android/server/wm/ActionChain$Tracker;->makeChain(ILcom/android/server/wm/Transition;)Lcom/android/server/wm/ActionChain;
+PLcom/android/server/wm/ActivityAssistInfo;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityCallerState$CallerInfo;-><init>(ILjava/lang/String;Z)V
PLcom/android/server/wm/ActivityCallerState;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
PLcom/android/server/wm/ActivityCallerState;->addUriIfContentUri(Landroid/net/Uri;Landroid/util/ArraySet;)V
-PLcom/android/server/wm/ActivityCallerState;->computeCallerInfo(Landroid/os/IBinder;Landroid/content/Intent;I)V
-PLcom/android/server/wm/ActivityCallerState;->getContentUrisFromIntent(Landroid/content/Intent;)Landroid/util/ArraySet;
+HPLcom/android/server/wm/ActivityCallerState;->getContentUrisFromIntent(Landroid/content/Intent;)Landroid/util/ArraySet;
+PLcom/android/server/wm/ActivityClientController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityClientController$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
HSPLcom/android/server/wm/ActivityClientController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
-PLcom/android/server/wm/ActivityClientController;->activityIdle(Landroid/os/IBinder;Landroid/content/res/Configuration;Z)V
-PLcom/android/server/wm/ActivityClientController;->activityPaused(Landroid/os/IBinder;)V
-PLcom/android/server/wm/ActivityClientController;->activityResumed(Landroid/os/IBinder;Z)V
-PLcom/android/server/wm/ActivityClientController;->activityStopped(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V
-PLcom/android/server/wm/ActivityClientController;->activityTopResumedStateLost()V
+PLcom/android/server/wm/ActivityClientController;->activityDestroyed(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/ActivityClientController;->activityIdle(Landroid/os/IBinder;Landroid/content/res/Configuration;Z)V
+HPLcom/android/server/wm/ActivityClientController;->activityPaused(Landroid/os/IBinder;)V
+PLcom/android/server/wm/ActivityClientController;->activityRelaunched(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/ActivityClientController;->activityResumed(Landroid/os/IBinder;Z)V
+HPLcom/android/server/wm/ActivityClientController;->activityStopped(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V
+HPLcom/android/server/wm/ActivityClientController;->activityTopResumedStateLost()V
+HPLcom/android/server/wm/ActivityClientController;->finishActivity(Landroid/os/IBinder;ILandroid/content/Intent;I)Z
+PLcom/android/server/wm/ActivityClientController;->getCallingActivity(Landroid/os/IBinder;)Landroid/content/ComponentName;
+PLcom/android/server/wm/ActivityClientController;->getCallingPackage(Landroid/os/IBinder;)Ljava/lang/String;
PLcom/android/server/wm/ActivityClientController;->getDisplayId(Landroid/os/IBinder;)I
PLcom/android/server/wm/ActivityClientController;->getTaskForActivity(Landroid/os/IBinder;Z)I
-PLcom/android/server/wm/ActivityClientController;->onSystemReady()V
-PLcom/android/server/wm/ActivityClientController;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HPLcom/android/server/wm/ActivityClientController;->isTopOfTask(Landroid/os/IBinder;)Z
+PLcom/android/server/wm/ActivityClientController;->moveActivityTaskToBack(Landroid/os/IBinder;Z)Z
+PLcom/android/server/wm/ActivityClientController;->onBackPressed(Landroid/os/IBinder;Landroid/app/IRequestFinishCallback;)V
+HPLcom/android/server/wm/ActivityClientController;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/wm/ActivityClientController;->overridePendingTransition(Landroid/os/IBinder;Ljava/lang/String;III)V
PLcom/android/server/wm/ActivityClientController;->reportActivityFullyDrawn(Landroid/os/IBinder;Z)V
PLcom/android/server/wm/ActivityClientController;->reportSizeConfigurations(Landroid/os/IBinder;Landroid/window/SizeConfigurationBuckets;)V
+PLcom/android/server/wm/ActivityClientController;->setImmersive(Landroid/os/IBinder;Z)V
+PLcom/android/server/wm/ActivityClientController;->setShowWhenLocked(Landroid/os/IBinder;Z)V
PLcom/android/server/wm/ActivityClientController;->setTaskDescription(Landroid/os/IBinder;Landroid/app/ActivityManager$TaskDescription;)V
-PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmActivityInfo(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)Landroid/content/pm/ActivityInfo;
-PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmCallingFeatureId(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)Ljava/lang/String;
-PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmCallingPackage(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)Ljava/lang/String;
-PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmCallingPid(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)I
-PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmCallingUid(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)I
-PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmCheckedOptions(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)Landroid/app/ActivityOptions;
-PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmClearOptionsAnimation(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)Ljava/lang/Runnable;
-PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmIntent(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)Landroid/content/Intent;
-PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmRealCallingPid(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)I
-PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmRealCallingUid(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)I
-PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmResolveInfo(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)Landroid/content/pm/ResolveInfo;
-PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmResolvedType(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)Ljava/lang/String;
-PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmUserId(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)I
-PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;-><init>(IIIIILandroid/content/Intent;Landroid/content/pm/ResolveInfo;Landroid/content/pm/ActivityInfo;)V
+PLcom/android/server/wm/ActivityClientController;->setTurnScreenOn(Landroid/os/IBinder;Z)V
+PLcom/android/server/wm/ActivityClientController;->shouldMoveTaskToBack(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;-><init>(IIIIILandroid/content/Intent;Landroid/content/pm/ResolveInfo;Landroid/content/pm/ActivityInfo;)V
PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->build()Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;
PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->setCallingFeatureId(Ljava/lang/String;)Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;
PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->setCallingPackage(Ljava/lang/String;)Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;
@@ -25354,1087 +20256,819 @@ PLcom/android/server/wm/ActivityInterceptorCallback;->isValidMainlineOrderId(I)Z
PLcom/android/server/wm/ActivityInterceptorCallback;->isValidOrderId(I)Z
PLcom/android/server/wm/ActivityInterceptorCallback;->onActivityLaunched(Landroid/app/TaskInfo;Landroid/content/pm/ActivityInfo;Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;)V
PLcom/android/server/wm/ActivityInterceptorCallbackRegistry;-><clinit>()V
-PLcom/android/server/wm/ActivityInterceptorCallbackRegistry;-><init>()V
PLcom/android/server/wm/ActivityInterceptorCallbackRegistry;->getCallingUid()I
PLcom/android/server/wm/ActivityInterceptorCallbackRegistry;->getInstance()Lcom/android/server/wm/ActivityInterceptorCallbackRegistry;
PLcom/android/server/wm/ActivityInterceptorCallbackRegistry;->registerActivityInterceptorCallback(ILcom/android/server/wm/ActivityInterceptorCallback;)V
-HSPLcom/android/server/wm/ActivityMetricsLaunchObserver;-><init>()V
-PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
-PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
+HPLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;JILcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;ZIIZ)V
+HPLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda2;->run()V
-PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda3;-><init>()V
-PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;JILcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;ZIIZ)V
-PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda4;->run()V
-PLcom/android/server/wm/ActivityMetricsLogger$LaunchingState;->-$$Nest$fgetmAssociatedTransitionInfo(Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;)Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;
-PLcom/android/server/wm/ActivityMetricsLogger$LaunchingState;->-$$Nest$fputmAssociatedTransitionInfo(Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda4;-><init>(I)V
+PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/wm/ActivityMetricsLogger;JLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;I)V
+PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda7;->run()V
+PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda8;->test(Ljava/lang/Object;)Z
PLcom/android/server/wm/ActivityMetricsLogger$LaunchingState;-><init>()V
PLcom/android/server/wm/ActivityMetricsLogger$LaunchingState;->stopTrace(ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
PLcom/android/server/wm/ActivityMetricsLogger$PackageCompatStateInfo;-><init>()V
-PLcom/android/server/wm/ActivityMetricsLogger$PackageCompatStateInfo;-><init>(Lcom/android/server/wm/ActivityMetricsLogger$PackageCompatStateInfo-IA;)V
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;Landroid/app/ActivityOptions;IZZIIZ)V
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;->calculateCurrentDelay()I
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;->calculateDelay(J)I
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;->contains(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;->create(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;Landroid/app/ActivityOptions;ZZIIZZI)Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;->isInterestingToLoggerAndObserver()Z
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;->setLatestLaunchedActivity(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->-$$Nest$fgetapplicationInfo(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)Landroid/content/pm/ApplicationInfo;
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->-$$Nest$fgetbindApplicationDelayMs(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)I
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->-$$Nest$fgetlaunchedActivityLaunchToken(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)Ljava/lang/String;
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->-$$Nest$fgetlaunchedActivityLaunchedFromPackage(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)Ljava/lang/String;
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->-$$Nest$fgetprocessName(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)Ljava/lang/String;
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->-$$Nest$fgetprocessRecord(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)Lcom/android/server/wm/WindowProcessController;
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->-$$Nest$fgetreason(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)I
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->-$$Nest$fgetstartingWindowDelayMs(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)I
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;-><init>(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;-><init>(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot-IA;)V
+HPLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;Landroid/app/ActivityOptions;IZZIIZ)V
HPLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;-><init>(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;Lcom/android/server/wm/ActivityRecord;I)V
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;-><init>(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;Lcom/android/server/wm/ActivityRecord;ILcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot-IA;)V
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->getLaunchState()I
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->getPackageOptimizationInfo(Landroid/content/pm/dex/ArtManagerInternal;)Landroid/content/pm/dex/PackageOptimizationInfo;
-PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->isInterestedToEventLog()Z
-PLcom/android/server/wm/ActivityMetricsLogger;->$r8$lambda$9Znu_naMY0TaDnbVNjFqSyiTkcc(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->$r8$lambda$E5bzb-1VyhAtO6RVNt8gP38XELI(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;JILcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;ZIIZ)V
-PLcom/android/server/wm/ActivityMetricsLogger;->$r8$lambda$MDDCoWK980XoH_6bZLWfXzhTwEY(Lcom/android/server/wm/ActivityMetricsLogger;Ljava/lang/String;I)V
-PLcom/android/server/wm/ActivityMetricsLogger;->$r8$lambda$kVd50LR3bWCXX7Lj8BYMTU-bGdY(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->$r8$lambda$yb4ber5HhUmLvhJHcMEn3T962l0(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
HSPLcom/android/server/wm/ActivityMetricsLogger;-><clinit>()V
HSPLcom/android/server/wm/ActivityMetricsLogger;-><init>(Lcom/android/server/wm/ActivityTaskSupervisor;Landroid/os/Looper;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->convertTransitionTypeToLaunchObserverTemperature(I)I
-PLcom/android/server/wm/ActivityMetricsLogger;->done(ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;Ljava/lang/String;J)V
-PLcom/android/server/wm/ActivityMetricsLogger;->getActiveTransitionInfo(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;
-PLcom/android/server/wm/ActivityMetricsLogger;->getAppHibernationManagerInternal()Lcom/android/server/apphibernation/AppHibernationManagerInternal;
+PLcom/android/server/wm/ActivityMetricsLogger;->abort(Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->done(ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;J)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->getActiveTransitionInfo(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/ActivityMetricsLogger;->getAppStartTransitionType(IZ)I
-PLcom/android/server/wm/ActivityMetricsLogger;->getArtManagerInternal()Landroid/content/pm/dex/ArtManagerInternal;
-PLcom/android/server/wm/ActivityMetricsLogger;->getLaunchObserverRegistry()Lcom/android/server/wm/ActivityMetricsLaunchObserverRegistry;
-PLcom/android/server/wm/ActivityMetricsLogger;->isAppCompateStateChangedToLetterboxed(I)Z
-PLcom/android/server/wm/ActivityMetricsLogger;->lambda$logAppTransitionFinished$1(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;JILcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;ZIIZ)V
-PLcom/android/server/wm/ActivityMetricsLogger;->lambda$notifyFullyDrawn$3(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->lambda$notifyFullyDrawn$4(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->lambda$notifyFullyDrawn$5(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->launchObserverNotifyActivityLaunchFinished(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;J)V
-PLcom/android/server/wm/ActivityMetricsLogger;->launchObserverNotifyActivityLaunched(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->launchObserverNotifyIntentStarted(Landroid/content/Intent;J)V
-PLcom/android/server/wm/ActivityMetricsLogger;->launchObserverNotifyReportFullyDrawn(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;J)V
-HPLcom/android/server/wm/ActivityMetricsLogger;->logAppCompatState(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->logAppCompatStateInternal(Lcom/android/server/wm/ActivityRecord;ILcom/android/server/wm/ActivityMetricsLogger$PackageCompatStateInfo;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->logAppDisplayed(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->logAppFullyDrawn(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->logAppFullyDrawnMetrics(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;ZZ)V
-PLcom/android/server/wm/ActivityMetricsLogger;->logAppStartMemoryStateCapture(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
-HPLcom/android/server/wm/ActivityMetricsLogger;->logAppTransition(JILcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;ZII)V
-PLcom/android/server/wm/ActivityMetricsLogger;->logAppTransitionFinished(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;Z)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->logAppCompatStateInternal(Lcom/android/server/wm/ActivityRecord;ILcom/android/server/wm/ActivityMetricsLogger$PackageCompatStateInfo;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->logAppTransitionCancel(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
PLcom/android/server/wm/ActivityMetricsLogger;->logInTaskActivityStart(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;ZI)V
-PLcom/android/server/wm/ActivityMetricsLogger;->logWindowState()V
-PLcom/android/server/wm/ActivityMetricsLogger;->logWindowState(Ljava/lang/String;I)V
-PLcom/android/server/wm/ActivityMetricsLogger;->notifyActivityLaunched(Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;IZLcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->notifyActivityLaunching(Landroid/content/Intent;Lcom/android/server/wm/ActivityRecord;I)Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;
-PLcom/android/server/wm/ActivityMetricsLogger;->notifyBeforePackageUnstopped(Ljava/lang/String;)V
-HPLcom/android/server/wm/ActivityMetricsLogger;->notifyBindApplication(Landroid/content/pm/ApplicationInfo;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->notifyFullyDrawn(Lcom/android/server/wm/ActivityRecord;Z)Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;
-PLcom/android/server/wm/ActivityMetricsLogger;->notifyStartingWindowDrawn(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->notifyTransitionStarting(Landroid/util/ArrayMap;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->notifyVisibilityChanged(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->notifyWindowsDrawn(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;
-PLcom/android/server/wm/ActivityMetricsLogger;->scheduleCheckActivityToBeDrawnIfSleeping(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->notifyActivityLaunched(Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;IZLcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->notifyActivityLaunching(Landroid/content/Intent;Lcom/android/server/wm/ActivityRecord;I)Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;
+PLcom/android/server/wm/ActivityMetricsLogger;->notifyBindApplication(Landroid/content/pm/ApplicationInfo;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->notifyFullyDrawn(Lcom/android/server/wm/ActivityRecord;Z)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->notifyTransitionStarting(Landroid/util/ArrayMap;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->scheduleCheckActivityToBeDrawn(Lcom/android/server/wm/ActivityRecord;J)V
PLcom/android/server/wm/ActivityMetricsLogger;->startLaunchTrace(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->stopLaunchTrace(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda12;-><init>()V
-PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda14;-><init>()V
-PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda14;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda15;-><init>()V
-HPLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/wm/ActivityRecord;Landroid/graphics/Rect;)V
-HPLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda16;->get()Ljava/lang/Object;
-PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda17;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/wm/AppCompatSizeCompatModePolicy;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda16;->get()Ljava/lang/Object;
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda17;-><init>(I)V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda17;->apply(Ljava/lang/Object;)Z
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda18;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda18;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda19;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda19;->run()V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda20;-><init>(Lcom/android/server/wm/ActivityRecord;)V
PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda21;-><init>(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda21;->get()Ljava/lang/Object;
-PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda2;-><init>()V
+HPLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda21;->get()Ljava/lang/Object;
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda2;-><init>(I)V
PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda31;-><init>(Lcom/android/server/wm/ActivityRecord;)V
PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda31;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda3;-><init>(I)V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda4;->test(Ljava/lang/Object;)Z
PLcom/android/server/wm/ActivityRecord$1;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityRecord$1;->run()V
PLcom/android/server/wm/ActivityRecord$2;-><init>(Lcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/ActivityRecord$2;->run()V
+PLcom/android/server/wm/ActivityRecord$2;->run()V
PLcom/android/server/wm/ActivityRecord$3;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityRecord$3;->run()V
PLcom/android/server/wm/ActivityRecord$4;-><init>(Lcom/android/server/wm/ActivityRecord;)V
PLcom/android/server/wm/ActivityRecord$5;-><init>(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityRecord$6;-><clinit>()V
-PLcom/android/server/wm/ActivityRecord$AddStartingWindow;-><init>(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityRecord$AddStartingWindow;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord$AddStartingWindow-IA;)V
-PLcom/android/server/wm/ActivityRecord$AddStartingWindow;->run()V
-PLcom/android/server/wm/ActivityRecord$Builder;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
-PLcom/android/server/wm/ActivityRecord$Builder;->build()Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/ActivityRecord$Builder;->setActivityInfo(Landroid/content/pm/ActivityInfo;)Lcom/android/server/wm/ActivityRecord$Builder;
-PLcom/android/server/wm/ActivityRecord$Builder;->setActivityOptions(Landroid/app/ActivityOptions;)Lcom/android/server/wm/ActivityRecord$Builder;
-PLcom/android/server/wm/ActivityRecord$Builder;->setCaller(Lcom/android/server/wm/WindowProcessController;)Lcom/android/server/wm/ActivityRecord$Builder;
-PLcom/android/server/wm/ActivityRecord$Builder;->setComponentSpecified(Z)Lcom/android/server/wm/ActivityRecord$Builder;
-PLcom/android/server/wm/ActivityRecord$Builder;->setConfiguration(Landroid/content/res/Configuration;)Lcom/android/server/wm/ActivityRecord$Builder;
-PLcom/android/server/wm/ActivityRecord$Builder;->setIntent(Landroid/content/Intent;)Lcom/android/server/wm/ActivityRecord$Builder;
-PLcom/android/server/wm/ActivityRecord$Builder;->setLaunchedFromFeature(Ljava/lang/String;)Lcom/android/server/wm/ActivityRecord$Builder;
-PLcom/android/server/wm/ActivityRecord$Builder;->setLaunchedFromPackage(Ljava/lang/String;)Lcom/android/server/wm/ActivityRecord$Builder;
-PLcom/android/server/wm/ActivityRecord$Builder;->setLaunchedFromPid(I)Lcom/android/server/wm/ActivityRecord$Builder;
-PLcom/android/server/wm/ActivityRecord$Builder;->setLaunchedFromUid(I)Lcom/android/server/wm/ActivityRecord$Builder;
-PLcom/android/server/wm/ActivityRecord$Builder;->setRequestCode(I)Lcom/android/server/wm/ActivityRecord$Builder;
-PLcom/android/server/wm/ActivityRecord$Builder;->setResolvedType(Ljava/lang/String;)Lcom/android/server/wm/ActivityRecord$Builder;
-PLcom/android/server/wm/ActivityRecord$Builder;->setResultTo(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord$Builder;
-PLcom/android/server/wm/ActivityRecord$Builder;->setResultWho(Ljava/lang/String;)Lcom/android/server/wm/ActivityRecord$Builder;
-PLcom/android/server/wm/ActivityRecord$Builder;->setRootVoiceInteraction(Z)Lcom/android/server/wm/ActivityRecord$Builder;
-PLcom/android/server/wm/ActivityRecord$Builder;->setSourceRecord(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord$Builder;
-PLcom/android/server/wm/ActivityRecord$State;->$values()[Lcom/android/server/wm/ActivityRecord$State;
PLcom/android/server/wm/ActivityRecord$State;-><clinit>()V
-PLcom/android/server/wm/ActivityRecord$State;-><init>(Ljava/lang/String;I)V
-PLcom/android/server/wm/ActivityRecord$State;->values()[Lcom/android/server/wm/ActivityRecord$State;
-PLcom/android/server/wm/ActivityRecord$Token;-><init>()V
-PLcom/android/server/wm/ActivityRecord$Token;-><init>(Lcom/android/server/wm/ActivityRecord$Token-IA;)V
-PLcom/android/server/wm/ActivityRecord;->$r8$lambda$0OfvhI5TUgQo6Y024Yo0FylceBE(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/ActivityRecord;->$r8$lambda$I1MSNY3CpU-e9WIQbLSkEsRUKEo(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/ActivityRecord;->$r8$lambda$tbbQczlHwYJa84Bl3WvoMl7sYRg(Lcom/android/server/wm/ActivityRecord;)Landroid/content/Context;
-HPLcom/android/server/wm/ActivityRecord;->$r8$lambda$y0npCffze-hoyeHGzAjmpNlZO0Y(Lcom/android/server/wm/ActivityRecord;Landroid/graphics/Rect;)Landroid/graphics/Rect;
-PLcom/android/server/wm/ActivityRecord;->-$$Nest$mcontinueLaunchTicking(Lcom/android/server/wm/ActivityRecord;)Z
-HPLcom/android/server/wm/ActivityRecord;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/WindowProcessController;IILjava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;IZZLcom/android/server/wm/ActivityTaskSupervisor;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;Landroid/os/PersistableBundle;Landroid/app/ActivityManager$TaskDescription;J)V
-PLcom/android/server/wm/ActivityRecord;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/WindowProcessController;IILjava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;IZZLcom/android/server/wm/ActivityTaskSupervisor;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;Landroid/os/PersistableBundle;Landroid/app/ActivityManager$TaskDescription;JLcom/android/server/wm/ActivityRecord-IA;)V
-PLcom/android/server/wm/ActivityRecord;->activityPaused(Z)V
-PLcom/android/server/wm/ActivityRecord;->activityResumedLocked(Landroid/os/IBinder;Z)V
-PLcom/android/server/wm/ActivityRecord;->activityStopped(Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V
-PLcom/android/server/wm/ActivityRecord;->addStartingWindow(Ljava/lang/String;ILcom/android/server/wm/ActivityRecord;ZZZZZZZ)Z
-PLcom/android/server/wm/ActivityRecord;->addToStopping(ZZLjava/lang/String;)V
+HPLcom/android/server/wm/ActivityRecord;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/WindowProcessController;IILjava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;IZZLcom/android/server/wm/ActivityTaskSupervisor;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;Landroid/os/PersistableBundle;Landroid/app/ActivityManager$TaskDescription;J)V+]Landroid/app/ActivityOptions;Landroid/app/ActivityOptions;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/wm/ActivityRecord;->abortAndClearOptionsAnimation()V
+HPLcom/android/server/wm/ActivityRecord;->activityPaused(Z)V
+HPLcom/android/server/wm/ActivityRecord;->activityResumedLocked(Landroid/os/IBinder;Z)V
+HPLcom/android/server/wm/ActivityRecord;->activityStopped(Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V
+HPLcom/android/server/wm/ActivityRecord;->addStartingWindow(Ljava/lang/String;ILcom/android/server/wm/ActivityRecord;ZZZZZZZ)Z
+PLcom/android/server/wm/ActivityRecord;->addToFinishingAndWaitForIdle()Z
+HPLcom/android/server/wm/ActivityRecord;->addToStopping(Ljava/lang/String;ZZ)V
PLcom/android/server/wm/ActivityRecord;->addWindow(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/ActivityRecord;->allDrawnStatesConsidered()Z
-PLcom/android/server/wm/ActivityRecord;->allowMoveToFront()Z
-PLcom/android/server/wm/ActivityRecord;->allowTaskSnapshot()Z
-PLcom/android/server/wm/ActivityRecord;->applyAspectRatio(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
-PLcom/android/server/wm/ActivityRecord;->applyAspectRatio(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;F)Z
-PLcom/android/server/wm/ActivityRecord;->applyLocaleOverrideIfNeeded(Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/ActivityRecord;->applyOptionsAnimation()V
-PLcom/android/server/wm/ActivityRecord;->applyOptionsAnimation(Landroid/app/ActivityOptions;Landroid/content/Intent;)V
-HPLcom/android/server/wm/ActivityRecord;->areBoundsLetterboxed()Z
-PLcom/android/server/wm/ActivityRecord;->asActivityRecord()Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/ActivityRecord;->applyOptionsAnimation()V
+PLcom/android/server/wm/ActivityRecord;->areBoundsLetterboxed()Z
+HPLcom/android/server/wm/ActivityRecord;->asActivityRecord()Lcom/android/server/wm/ActivityRecord;
PLcom/android/server/wm/ActivityRecord;->attachStartingWindow(Lcom/android/server/wm/WindowState;)V
HPLcom/android/server/wm/ActivityRecord;->attachedToProcess()Z
-HPLcom/android/server/wm/ActivityRecord;->canAffectSystemUiFlags()Z
-PLcom/android/server/wm/ActivityRecord;->canBeLaunchedOnDisplay(I)Z
HPLcom/android/server/wm/ActivityRecord;->canBeTopRunning()Z
+PLcom/android/server/wm/ActivityRecord;->canCreateRemoteAnimationTarget()Z
PLcom/android/server/wm/ActivityRecord;->canForceResizeNonResizable(I)Z
PLcom/android/server/wm/ActivityRecord;->canLaunchHomeActivity(ILcom/android/server/wm/ActivityRecord;)Z
-HPLcom/android/server/wm/ActivityRecord;->canReceiveKeys()Z
HPLcom/android/server/wm/ActivityRecord;->canResumeByCompat()Z
HPLcom/android/server/wm/ActivityRecord;->canShowWhenLocked()Z
-HPLcom/android/server/wm/ActivityRecord;->canShowWhenLocked(Lcom/android/server/wm/ActivityRecord;)Z
-HPLcom/android/server/wm/ActivityRecord;->canShowWhenLockedInner(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/ActivityRecord;->canShowWindows()Z
-PLcom/android/server/wm/ActivityRecord;->canTurnScreenOn()Z
+HPLcom/android/server/wm/ActivityRecord;->canShowWhenLocked(Lcom/android/server/wm/ActivityRecord;)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/ActivityRecord;->canShowWindows()Z
+HPLcom/android/server/wm/ActivityRecord;->canTurnScreenOn()Z
+PLcom/android/server/wm/ActivityRecord;->cancelAnimation()V
PLcom/android/server/wm/ActivityRecord;->checkAppWindowsReadyToShow()V
+PLcom/android/server/wm/ActivityRecord;->checkEnterPictureInPictureAppOpsState()Z
PLcom/android/server/wm/ActivityRecord;->checkEnterPictureInPictureState(Ljava/lang/String;Z)Z
-PLcom/android/server/wm/ActivityRecord;->checkKeyguardFlagsChanged()V
-PLcom/android/server/wm/ActivityRecord;->clearAllDrawn()V
-PLcom/android/server/wm/ActivityRecord;->clearOptionsAnimation()V
-PLcom/android/server/wm/ActivityRecord;->clearOptionsAnimationForSiblings()V
+HPLcom/android/server/wm/ActivityRecord;->checkKeyguardFlagsChanged()V
+HPLcom/android/server/wm/ActivityRecord;->cleanUp(ZZ)V
+PLcom/android/server/wm/ActivityRecord;->cleanUpActivityServices()V
PLcom/android/server/wm/ActivityRecord;->clearThumbnail()V
-PLcom/android/server/wm/ActivityRecord;->commitFinishDrawing(Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/ActivityRecord;->commitVisibility(ZZ)V
-HPLcom/android/server/wm/ActivityRecord;->commitVisibility(ZZZ)V
-PLcom/android/server/wm/ActivityRecord;->completeResumeLocked()V
-PLcom/android/server/wm/ActivityRecord;->computeCallerInfo(Landroid/os/IBinder;Landroid/content/Intent;I)V
-PLcom/android/server/wm/ActivityRecord;->computeInitialCallerInfo()V
-PLcom/android/server/wm/ActivityRecord;->computeTaskAffinity(Ljava/lang/String;I)Ljava/lang/String;
-HPLcom/android/server/wm/ActivityRecord;->containsDismissKeyguardWindow()Z
-HPLcom/android/server/wm/ActivityRecord;->containsShowWhenLockedWindow()Z
-HPLcom/android/server/wm/ActivityRecord;->containsTurnScreenOnWindow()Z
-PLcom/android/server/wm/ActivityRecord;->continueLaunchTicking()Z
-PLcom/android/server/wm/ActivityRecord;->deferCommitVisibilityChange(Z)Z
-PLcom/android/server/wm/ActivityRecord;->destroySurfaces()V
-PLcom/android/server/wm/ActivityRecord;->destroySurfaces(Z)V
+HPLcom/android/server/wm/ActivityRecord;->commitVisibility(ZZZ)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/TaskDisplayArea;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/ActivityRecord;->completeFinishing(Ljava/lang/String;Z)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/ActivityRecord;->completeResumeLocked()V
+HPLcom/android/server/wm/ActivityRecord;->computeCallerInfo(Landroid/os/IBinder;Landroid/content/Intent;ILjava/lang/String;Z)V
+PLcom/android/server/wm/ActivityRecord;->computeTaskAffinity(ILjava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/wm/ActivityRecord;->containsDismissKeyguardWindow()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/ActivityRecord;->containsShowWhenLockedWindow()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/ActivityRecord;->containsTurnScreenOnWindow()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/ActivityRecord;->continueLaunchTicking()Z
+PLcom/android/server/wm/ActivityRecord;->destroyIfPossible(Ljava/lang/String;)Z
+HPLcom/android/server/wm/ActivityRecord;->destroyImmediately(Ljava/lang/String;)Z
+HPLcom/android/server/wm/ActivityRecord;->destroySurfaces(Z)V
+HPLcom/android/server/wm/ActivityRecord;->destroyed(Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityRecord;->detachFromProcess()V
PLcom/android/server/wm/ActivityRecord;->determineLaunchSourceType(ILcom/android/server/wm/WindowProcessController;)I
+PLcom/android/server/wm/ActivityRecord;->dispatchConfigurationToChild(Lcom/android/server/wm/ConfigurationContainer;Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/ActivityRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+PLcom/android/server/wm/ActivityRecord;->dumpActivity(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;ILcom/android/server/wm/ActivityRecord;Ljava/lang/String;Ljava/lang/String;ZZZLjava/lang/String;ZLjava/lang/Runnable;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ActivityRecord;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
HPLcom/android/server/wm/ActivityRecord;->ensureActivityConfiguration(Z)Z
-PLcom/android/server/wm/ActivityRecord;->evaluateStartingWindowTheme(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;II)I
PLcom/android/server/wm/ActivityRecord;->fillsParent()Z
-PLcom/android/server/wm/ActivityRecord;->findMainWindow()Lcom/android/server/wm/WindowState;
-HPLcom/android/server/wm/ActivityRecord;->findMainWindow(Z)Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/ActivityRecord;->finishLaunchTickingLocked()V
-PLcom/android/server/wm/ActivityRecord;->finishOrAbortReplacingWindow()V
+HPLcom/android/server/wm/ActivityRecord;->findMainWindow(Z)Lcom/android/server/wm/WindowState;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/ActivityRecord;->finishActivityResults(ILandroid/content/Intent;Lcom/android/server/uri/NeededUriGrants;)V
+HPLcom/android/server/wm/ActivityRecord;->finishIfPossible(ILandroid/content/Intent;Lcom/android/server/uri/NeededUriGrants;Ljava/lang/String;Z)I
+PLcom/android/server/wm/ActivityRecord;->finishIfPossible(Ljava/lang/String;Z)I
+PLcom/android/server/wm/ActivityRecord;->finishRelaunching()V
PLcom/android/server/wm/ActivityRecord;->finishSync(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;Z)V
-PLcom/android/server/wm/ActivityRecord;->forAllActivities(Ljava/util/function/Consumer;Z)V
-HPLcom/android/server/wm/ActivityRecord;->forAllActivities(Ljava/util/function/Predicate;Z)Z
-HPLcom/android/server/wm/ActivityRecord;->forToken(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/ActivityRecord;->forTokenLocked(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/ActivityRecord;->getActivity(Ljava/util/function/Predicate;ZLcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/ActivityRecord;->getAllowUntrustedEmbeddingStateSharingProperty()Z
-PLcom/android/server/wm/ActivityRecord;->getAppCompatState()I
+HPLcom/android/server/wm/ActivityRecord;->forAllActivities(Ljava/util/function/Consumer;Z)V+]Ljava/util/function/Consumer;megamorphic_types
+HPLcom/android/server/wm/ActivityRecord;->forAllActivities(Ljava/util/function/Predicate;Z)Z+]Ljava/util/function/Predicate;megamorphic_types
+HPLcom/android/server/wm/ActivityRecord;->forToken(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;+]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;
+HPLcom/android/server/wm/ActivityRecord;->forTokenLocked(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/ActivityRecord;->getActivity(Ljava/util/function/Predicate;ZLcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;+]Ljava/util/function/Predicate;megamorphic_types
+HPLcom/android/server/wm/ActivityRecord;->getActivityWindowInfo()Landroid/window/ActivityWindowInfo;+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;
+PLcom/android/server/wm/ActivityRecord;->getAnimationLeashParent()Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/ActivityRecord;->getAppCompatDisplayInsets()Lcom/android/server/wm/AppCompatDisplayInsets;
HPLcom/android/server/wm/ActivityRecord;->getAppCompatState(Z)I
HPLcom/android/server/wm/ActivityRecord;->getBounds()Landroid/graphics/Rect;
-PLcom/android/server/wm/ActivityRecord;->getCameraCompatControlState()I
-HPLcom/android/server/wm/ActivityRecord;->getCompatDisplayInsets()Lcom/android/server/wm/ActivityRecord$CompatDisplayInsets;
-PLcom/android/server/wm/ActivityRecord;->getConfigurationChanges(Landroid/content/res/Configuration;)I
-PLcom/android/server/wm/ActivityRecord;->getDisplayArea()Lcom/android/server/wm/DisplayArea;
-PLcom/android/server/wm/ActivityRecord;->getDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
+HPLcom/android/server/wm/ActivityRecord;->getDisplayArea()Lcom/android/server/wm/DisplayArea;
+HPLcom/android/server/wm/ActivityRecord;->getDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
HPLcom/android/server/wm/ActivityRecord;->getDisplayId()I
PLcom/android/server/wm/ActivityRecord;->getFilteredReferrer(Ljava/lang/String;)Ljava/lang/String;
HPLcom/android/server/wm/ActivityRecord;->getInputApplicationHandle(Z)Landroid/view/InputApplicationHandle;
-PLcom/android/server/wm/ActivityRecord;->getLastParentBeforePip()Lcom/android/server/wm/Task;
-PLcom/android/server/wm/ActivityRecord;->getLaunchedFromBubble()Z
-HPLcom/android/server/wm/ActivityRecord;->getLetterboxInnerBounds(Landroid/graphics/Rect;)V
+PLcom/android/server/wm/ActivityRecord;->getLetterboxInsets()Landroid/graphics/Rect;
PLcom/android/server/wm/ActivityRecord;->getLockTaskLaunchMode(Landroid/content/pm/ActivityInfo;Landroid/app/ActivityOptions;)I
-PLcom/android/server/wm/ActivityRecord;->getLocusId()Landroid/content/LocusId;
-HPLcom/android/server/wm/ActivityRecord;->getMaxAspectRatio()F
-HPLcom/android/server/wm/ActivityRecord;->getMinAspectRatio()F
-PLcom/android/server/wm/ActivityRecord;->getOrCreateServiceConnectionsHolder()Lcom/android/server/wm/ActivityServiceConnectionsHolder;
-HPLcom/android/server/wm/ActivityRecord;->getOrganizedTask()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/ActivityRecord;->getMaxAspectRatio()F
+PLcom/android/server/wm/ActivityRecord;->getMinAspectRatio()F
HPLcom/android/server/wm/ActivityRecord;->getOrganizedTaskFragment()Lcom/android/server/wm/TaskFragment;
HPLcom/android/server/wm/ActivityRecord;->getOrientation(I)I
HPLcom/android/server/wm/ActivityRecord;->getOverrideOrientation()I
-PLcom/android/server/wm/ActivityRecord;->getPersistentSavedState()Landroid/os/PersistableBundle;
-PLcom/android/server/wm/ActivityRecord;->getProcessGlobalConfiguration()Landroid/content/res/Configuration;
-PLcom/android/server/wm/ActivityRecord;->getProcessName()Ljava/lang/String;
+PLcom/android/server/wm/ActivityRecord;->getPid()I
+PLcom/android/server/wm/ActivityRecord;->getProtoFieldId()J
PLcom/android/server/wm/ActivityRecord;->getRequestedConfigurationOrientation(Z)I
-PLcom/android/server/wm/ActivityRecord;->getRequestedConfigurationOrientation(ZI)I
+HPLcom/android/server/wm/ActivityRecord;->getRequestedConfigurationOrientation(ZI)I
PLcom/android/server/wm/ActivityRecord;->getRequestedOrientation()I
HPLcom/android/server/wm/ActivityRecord;->getRootTask()Lcom/android/server/wm/Task;
-PLcom/android/server/wm/ActivityRecord;->getRootTask(Landroid/os/IBinder;)Lcom/android/server/wm/Task;
-PLcom/android/server/wm/ActivityRecord;->getSavedState()Landroid/os/Bundle;
-PLcom/android/server/wm/ActivityRecord;->getSplashscreenTheme(Landroid/app/ActivityOptions;)I
-PLcom/android/server/wm/ActivityRecord;->getStartingWindowType(ZZZZZZLandroid/window/TaskSnapshot;)I
-PLcom/android/server/wm/ActivityRecord;->getState()Lcom/android/server/wm/ActivityRecord$State;
-HPLcom/android/server/wm/ActivityRecord;->getTask()Lcom/android/server/wm/Task;
-HPLcom/android/server/wm/ActivityRecord;->getTaskFragment()Lcom/android/server/wm/TaskFragment;
-HPLcom/android/server/wm/ActivityRecord;->getTurnScreenOnFlag()Z
-PLcom/android/server/wm/ActivityRecord;->getUid()I
+HPLcom/android/server/wm/ActivityRecord;->getTaskFragment()Lcom/android/server/wm/TaskFragment;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/ActivityRecord;->getUid()I
PLcom/android/server/wm/ActivityRecord;->getUriPermissionsLocked()Lcom/android/server/uri/UriPermissionOwner;
-HPLcom/android/server/wm/ActivityRecord;->handleAlreadyVisible()V
-HPLcom/android/server/wm/ActivityRecord;->handleCompleteDeferredRemoval()Z
+PLcom/android/server/wm/ActivityRecord;->handleAlreadyVisible()V
PLcom/android/server/wm/ActivityRecord;->handlesOrientationChangeFromDescendant(I)Z
-PLcom/android/server/wm/ActivityRecord;->hasActivity()Z
-HPLcom/android/server/wm/ActivityRecord;->hasFixedAspectRatio()Z
-HPLcom/android/server/wm/ActivityRecord;->hasOverlayOverUntrustedModeEmbedded()Z
-HPLcom/android/server/wm/ActivityRecord;->hasProcess()Z
-PLcom/android/server/wm/ActivityRecord;->hasSizeCompatBounds()Z
-PLcom/android/server/wm/ActivityRecord;->hasStartingWindow()Z
-PLcom/android/server/wm/ActivityRecord;->hasWallpaperBackgroundForLetterbox()Z
-PLcom/android/server/wm/ActivityRecord;->inSizeCompatMode()Z
+PLcom/android/server/wm/ActivityRecord;->hasProcess()Z
+HPLcom/android/server/wm/ActivityRecord;->hasSizeCompatBounds()Z
+HPLcom/android/server/wm/ActivityRecord;->hasStartingWindow()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/ActivityRecord;->inSizeCompatMode()Z
PLcom/android/server/wm/ActivityRecord;->isAlwaysOnTop()Z
-HPLcom/android/server/wm/ActivityRecord;->isConfigurationDispatchPaused()Z
-PLcom/android/server/wm/ActivityRecord;->isDisplaySleepingAndSwapping()Z
-PLcom/android/server/wm/ActivityRecord;->isEligibleForLetterboxEducation()Z
-HPLcom/android/server/wm/ActivityRecord;->isEmbedded()Z
-HPLcom/android/server/wm/ActivityRecord;->isEmbeddedInUntrustedMode()Z
+PLcom/android/server/wm/ActivityRecord;->isConfigurationDispatchPaused()Z
+HPLcom/android/server/wm/ActivityRecord;->isEligibleForLetterboxEducation()Z
+PLcom/android/server/wm/ActivityRecord;->isEmbedded()Z
PLcom/android/server/wm/ActivityRecord;->isFirstChildWindowGreaterThanSecond(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)Z
-HPLcom/android/server/wm/ActivityRecord;->isFocusable()Z
-PLcom/android/server/wm/ActivityRecord;->isFreezingScreen()Z
-PLcom/android/server/wm/ActivityRecord;->isHomeIntent(Landroid/content/Intent;)Z
-PLcom/android/server/wm/ActivityRecord;->isIconStylePreferred(I)Z
-PLcom/android/server/wm/ActivityRecord;->isInHistory()Z
-HPLcom/android/server/wm/ActivityRecord;->isInLetterboxAnimation()Z
-PLcom/android/server/wm/ActivityRecord;->isInRootTaskLocked(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/ActivityRecord;->isInTransition()Z
+HPLcom/android/server/wm/ActivityRecord;->isFocusable()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
+HPLcom/android/server/wm/ActivityRecord;->isHomeIntent(Landroid/content/Intent;)Z
+HPLcom/android/server/wm/ActivityRecord;->isIconStylePreferred(I)Z
+PLcom/android/server/wm/ActivityRecord;->isInAnyTask(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/ActivityRecord;->isInLetterboxAnimation()Z
+PLcom/android/server/wm/ActivityRecord;->isInRootTaskLocked()Z
+HPLcom/android/server/wm/ActivityRecord;->isInRootTaskLocked(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;
PLcom/android/server/wm/ActivityRecord;->isKeyguardLocked()Z
-PLcom/android/server/wm/ActivityRecord;->isLastWindow(Lcom/android/server/wm/WindowState;)Z
-HPLcom/android/server/wm/ActivityRecord;->isLetterboxedForFixedOrientationAndAspectRatio()Z
-PLcom/android/server/wm/ActivityRecord;->isNoHistory()Z
+PLcom/android/server/wm/ActivityRecord;->isMainIntent(Landroid/content/Intent;)Z
PLcom/android/server/wm/ActivityRecord;->isPersistable()Z
-PLcom/android/server/wm/ActivityRecord;->isProcessRunning()Z
-HPLcom/android/server/wm/ActivityRecord;->isRelaunching()Z
-PLcom/android/server/wm/ActivityRecord;->isReportedDrawn()Z
-HPLcom/android/server/wm/ActivityRecord;->isResizeable()Z
-HPLcom/android/server/wm/ActivityRecord;->isResizeable(Z)Z
-PLcom/android/server/wm/ActivityRecord;->isResolverActivity(Ljava/lang/String;)Z
-PLcom/android/server/wm/ActivityRecord;->isResolverOrDelegateActivity()Z
+HPLcom/android/server/wm/ActivityRecord;->isProcessRunning()Z
+PLcom/android/server/wm/ActivityRecord;->isRelaunching()Z
+HPLcom/android/server/wm/ActivityRecord;->isResizeable()Z+]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/wm/ActivityRecord;->isResolverOrDelegateActivity()Z
+HPLcom/android/server/wm/ActivityRecord;->isRestrictedFixedOrientation(I)Z
PLcom/android/server/wm/ActivityRecord;->isRootOfTask()Z
-PLcom/android/server/wm/ActivityRecord;->isSleeping()Z
+PLcom/android/server/wm/ActivityRecord;->isSnapshotCompatible(Landroid/window/TaskSnapshot;)Z
+PLcom/android/server/wm/ActivityRecord;->isSnapshotOrientationCompatible(Landroid/window/TaskSnapshot;)Z
+PLcom/android/server/wm/ActivityRecord;->isStartingWindowDisplayed()Z
+HPLcom/android/server/wm/ActivityRecord;->isState$1(Lcom/android/server/wm/ActivityRecord$State;Lcom/android/server/wm/ActivityRecord$State;Lcom/android/server/wm/ActivityRecord$State;Lcom/android/server/wm/ActivityRecord$State;)Z
HPLcom/android/server/wm/ActivityRecord;->isState(Lcom/android/server/wm/ActivityRecord$State;)Z
PLcom/android/server/wm/ActivityRecord;->isState(Lcom/android/server/wm/ActivityRecord$State;Lcom/android/server/wm/ActivityRecord$State;)Z
-HPLcom/android/server/wm/ActivityRecord;->isState(Lcom/android/server/wm/ActivityRecord$State;Lcom/android/server/wm/ActivityRecord$State;Lcom/android/server/wm/ActivityRecord$State;Lcom/android/server/wm/ActivityRecord$State;Lcom/android/server/wm/ActivityRecord$State;)Z
-PLcom/android/server/wm/ActivityRecord;->isSyncFinished(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)Z
-PLcom/android/server/wm/ActivityRecord;->isTaskOverlay()Z
+PLcom/android/server/wm/ActivityRecord;->isState(Lcom/android/server/wm/ActivityRecord$State;Lcom/android/server/wm/ActivityRecord$State;Lcom/android/server/wm/ActivityRecord$State;Lcom/android/server/wm/ActivityRecord$State;)Z
+HPLcom/android/server/wm/ActivityRecord;->isSyncFinished(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/ActivityRecord;->isTopRunningActivity()Z
-PLcom/android/server/wm/ActivityRecord;->isTransitionForward()Z
-HPLcom/android/server/wm/ActivityRecord;->isUid(I)Z
+PLcom/android/server/wm/ActivityRecord;->isUid(I)Z
+HPLcom/android/server/wm/ActivityRecord;->isUniversalResizeable()Z
HPLcom/android/server/wm/ActivityRecord;->isVisible()Z
HPLcom/android/server/wm/ActivityRecord;->isWaitingForTransitionStart()Z
-HPLcom/android/server/wm/ActivityRecord;->lambda$getBounds$22(Landroid/graphics/Rect;)Landroid/graphics/Rect;
-PLcom/android/server/wm/ActivityRecord;->lambda$new$2()Landroid/content/Context;
-PLcom/android/server/wm/ActivityRecord;->lambda$showAllWindowsLocked$14(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/ActivityRecord;->lambda$transferStartingWindowFromHiddenAboveTokenIfNeeded$8(Lcom/android/server/wm/ActivityRecord;)Z
-HPLcom/android/server/wm/ActivityRecord;->layoutLetterbox(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/ActivityRecord;->logAppCompatState()V
-PLcom/android/server/wm/ActivityRecord;->logStartActivity(ILcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/ActivityRecord;->logAppCompatState()V
+HPLcom/android/server/wm/ActivityRecord;->logStartActivity(ILcom/android/server/wm/Task;)V
HPLcom/android/server/wm/ActivityRecord;->makeActiveIfNeeded(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityRecord;->makeFinishingLocked()V
HPLcom/android/server/wm/ActivityRecord;->makeInvisible()V
-PLcom/android/server/wm/ActivityRecord;->makeVisibleIfNeeded(Lcom/android/server/wm/ActivityRecord;Z)V
-PLcom/android/server/wm/ActivityRecord;->needsZBoost()Z
+HPLcom/android/server/wm/ActivityRecord;->makeVisibleIfNeeded(Lcom/android/server/wm/ActivityRecord;Z)V
+PLcom/android/server/wm/ActivityRecord;->matchParentBounds()Z
+PLcom/android/server/wm/ActivityRecord;->moveFocusableActivityToTop(Ljava/lang/String;)Z
+HPLcom/android/server/wm/ActivityRecord;->needsZBoost()Z
+PLcom/android/server/wm/ActivityRecord;->notifyActivityRefresherAboutConfigurationChange(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/ActivityRecord;->notifyAppResumed()V
PLcom/android/server/wm/ActivityRecord;->notifyUnknownVisibilityLaunchedForKeyguardTransition()V
-HPLcom/android/server/wm/ActivityRecord;->occludesParent()Z
HPLcom/android/server/wm/ActivityRecord;->occludesParent(Z)Z
PLcom/android/server/wm/ActivityRecord;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
+PLcom/android/server/wm/ActivityRecord;->onAnimationLeashLost(Landroid/view/SurfaceControl$Transaction;)V
PLcom/android/server/wm/ActivityRecord;->onChildVisibleRequestedChanged(Lcom/android/server/wm/WindowContainer;)Z
-PLcom/android/server/wm/ActivityRecord;->onConfigurationChanged(Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/ActivityRecord;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/ActivityRecord;->onFirstWindowDrawn(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/ActivityRecord;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
-PLcom/android/server/wm/ActivityRecord;->onStartingWindowDrawn()V
+HPLcom/android/server/wm/ActivityRecord;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/ActivityRecord;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/ActivityRecord;->onLeashAnimationStarting(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
+HPLcom/android/server/wm/ActivityRecord;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
+HPLcom/android/server/wm/ActivityRecord;->onRemovedFromDisplay()V
PLcom/android/server/wm/ActivityRecord;->onSyncTransactionCommitted(Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/ActivityRecord;->onWindowsDrawn()V
-PLcom/android/server/wm/ActivityRecord;->onWindowsGone()V
-PLcom/android/server/wm/ActivityRecord;->onWindowsVisible()V
-PLcom/android/server/wm/ActivityRecord;->orientationRespectedWithInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
-PLcom/android/server/wm/ActivityRecord;->pauseKeyDispatchingLocked()V
-PLcom/android/server/wm/ActivityRecord;->postApplyAnimation(ZZ)V
+HPLcom/android/server/wm/ActivityRecord;->pauseKeyDispatchingLocked()V
PLcom/android/server/wm/ActivityRecord;->postWindowRemoveStartingWindowCleanup(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/ActivityRecord;->prepareSurfaces()V
-PLcom/android/server/wm/ActivityRecord;->providesMaxBounds()Z
-PLcom/android/server/wm/ActivityRecord;->providesOrientation()Z
+HPLcom/android/server/wm/ActivityRecord;->prepareSurfaces()V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
+HPLcom/android/server/wm/ActivityRecord;->providesMaxBounds()Z
+HPLcom/android/server/wm/ActivityRecord;->providesOrientation()Z
PLcom/android/server/wm/ActivityRecord;->removeChild(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/ActivityRecord;->removeChild(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/ActivityRecord;->removeLaunchTickRunnable()V
-PLcom/android/server/wm/ActivityRecord;->removePauseTimeout()V
-PLcom/android/server/wm/ActivityRecord;->removeStartingWindow()V
-PLcom/android/server/wm/ActivityRecord;->removeStartingWindowAnimation(Z)V
-PLcom/android/server/wm/ActivityRecord;->removeStopTimeout()V
-PLcom/android/server/wm/ActivityRecord;->reportDescendantOrientationChangeIfNeeded()V
-PLcom/android/server/wm/ActivityRecord;->requestUpdateWallpaperIfNeeded()V
-PLcom/android/server/wm/ActivityRecord;->resolveAspectRatioRestriction(Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/ActivityRecord;->resolveFixedOrientationConfiguration(Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/ActivityRecord;->removeFromHistory(Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityRecord;->removeImmediately()V
+HPLcom/android/server/wm/ActivityRecord;->removeStartingWindow()V
+HPLcom/android/server/wm/ActivityRecord;->removeStartingWindowAnimation(Z)V
+HPLcom/android/server/wm/ActivityRecord;->removeTimeouts()V
+HPLcom/android/server/wm/ActivityRecord;->requestUpdateWallpaperIfNeeded()V
+PLcom/android/server/wm/ActivityRecord;->resetSurfacePositionForAnimationLeash(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/ActivityRecord;->resolveAspectRatioRestriction(Landroid/content/res/Configuration;)V
HPLcom/android/server/wm/ActivityRecord;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/ActivityRecord;->resumeKeyDispatchingLocked()V
+HPLcom/android/server/wm/ActivityRecord;->resumeKeyDispatchingLocked()V
PLcom/android/server/wm/ActivityRecord;->scheduleAddStartingWindow()V
-PLcom/android/server/wm/ActivityRecord;->schedulePauseTimeout()V
-PLcom/android/server/wm/ActivityRecord;->scheduleTopResumedActivityChanged(Z)Z
-PLcom/android/server/wm/ActivityRecord;->searchCandidateLaunchingActivity()Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/ActivityRecord;->setActivityType(ZILandroid/content/Intent;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityRecord;->setAppLayoutChanges(ILjava/lang/String;)V
+PLcom/android/server/wm/ActivityRecord;->scheduleConfigurationChanged(Landroid/content/res/Configuration;Landroid/window/ActivityWindowInfo;)V
+HPLcom/android/server/wm/ActivityRecord;->scheduleTopResumedActivityChanged(Z)Z
+PLcom/android/server/wm/ActivityRecord;->setAppLayoutChanges(I)V
PLcom/android/server/wm/ActivityRecord;->setClientVisible(Z)V
-PLcom/android/server/wm/ActivityRecord;->setCurrentLaunchCanTurnScreenOn(Z)V
-PLcom/android/server/wm/ActivityRecord;->setCustomizeSplashScreenExitAnimation(Z)V
-PLcom/android/server/wm/ActivityRecord;->setDeferHidingClient(Z)V
PLcom/android/server/wm/ActivityRecord;->setDropInputMode(I)V
-PLcom/android/server/wm/ActivityRecord;->setLastReportedConfiguration(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/ActivityRecord;->setLastReportedGlobalConfiguration(Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/ActivityRecord;->setOptions(Landroid/app/ActivityOptions;)V
-PLcom/android/server/wm/ActivityRecord;->setProcess(Lcom/android/server/wm/WindowProcessController;)V
-PLcom/android/server/wm/ActivityRecord;->setSavedState(Landroid/os/Bundle;)V
-PLcom/android/server/wm/ActivityRecord;->setSizeConfigurations(Landroid/window/SizeConfigurationBuckets;)V
+PLcom/android/server/wm/ActivityRecord;->setOverrideGender(Landroid/content/res/Configuration;I)Z
+HPLcom/android/server/wm/ActivityRecord;->setProcess(Lcom/android/server/wm/WindowProcessController;)V
HPLcom/android/server/wm/ActivityRecord;->setState(Lcom/android/server/wm/ActivityRecord$State;Ljava/lang/String;)V
PLcom/android/server/wm/ActivityRecord;->setSurfaceControl(Landroid/view/SurfaceControl;)V
PLcom/android/server/wm/ActivityRecord;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V
-PLcom/android/server/wm/ActivityRecord;->setTaskHasBeenVisible()Z
HPLcom/android/server/wm/ActivityRecord;->setVisibility(Z)V
-HPLcom/android/server/wm/ActivityRecord;->setVisibility(ZZ)V
-PLcom/android/server/wm/ActivityRecord;->setVisible(Z)V
-PLcom/android/server/wm/ActivityRecord;->setVisibleRequested(Z)Z
-PLcom/android/server/wm/ActivityRecord;->setWillCloseOrEnterPip(Z)V
+HPLcom/android/server/wm/ActivityRecord;->setVisible(Z)V
+HPLcom/android/server/wm/ActivityRecord;->setVisibleRequested(Z)Z
HPLcom/android/server/wm/ActivityRecord;->shouldBeResumed(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/ActivityRecord;->shouldBeVisible(Z)Z
HPLcom/android/server/wm/ActivityRecord;->shouldBeVisibleUnchecked()Z
-HPLcom/android/server/wm/ActivityRecord;->shouldCreateCompatDisplayInsets()Z
-PLcom/android/server/wm/ActivityRecord;->shouldIgnoreOrientationRequests()Z
+HPLcom/android/server/wm/ActivityRecord;->shouldCreateAppCompatDisplayInsets()Z+]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/wm/ActivityRecord;->shouldIgnoreOrientationRequests()Z
HPLcom/android/server/wm/ActivityRecord;->shouldMakeActive(Lcom/android/server/wm/ActivityRecord;)Z
-HPLcom/android/server/wm/ActivityRecord;->shouldPauseActivity(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityRecord;->shouldPauseActivity(Lcom/android/server/wm/ActivityRecord;)Z
HPLcom/android/server/wm/ActivityRecord;->shouldResumeActivity(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/ActivityRecord;->shouldSendCompatFakeFocus()Z
-HPLcom/android/server/wm/ActivityRecord;->shouldStartActivity()Z
-PLcom/android/server/wm/ActivityRecord;->shouldStartChangeTransition(Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;)Z
-PLcom/android/server/wm/ActivityRecord;->shouldUpdateConfigForDisplayChanged()Z
-PLcom/android/server/wm/ActivityRecord;->shouldUseSolidColorSplashScreen(Lcom/android/server/wm/ActivityRecord;ZLandroid/app/ActivityOptions;I)Z
-PLcom/android/server/wm/ActivityRecord;->showAllWindowsLocked()V
-PLcom/android/server/wm/ActivityRecord;->showStartingWindow(Lcom/android/server/wm/ActivityRecord;ZZZLcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityRecord;->showStartingWindow(Lcom/android/server/wm/ActivityRecord;ZZZZLcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)V
+HPLcom/android/server/wm/ActivityRecord;->shouldSendCompatFakeFocus()Z
+HPLcom/android/server/wm/ActivityRecord;->showStartingWindow(Lcom/android/server/wm/ActivityRecord;ZZZZLcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)V
+PLcom/android/server/wm/ActivityRecord;->showStartingWindow(Z)V
PLcom/android/server/wm/ActivityRecord;->showSurfaceOnCreation()Z
-HPLcom/android/server/wm/ActivityRecord;->showToCurrentUser()Z
-PLcom/android/server/wm/ActivityRecord;->startLaunchTickingLocked()V
-PLcom/android/server/wm/ActivityRecord;->stopFreezingScreen(ZZ)V
-PLcom/android/server/wm/ActivityRecord;->stopIfPossible()V
-PLcom/android/server/wm/ActivityRecord;->supportsMultiWindow()Z
+HPLcom/android/server/wm/ActivityRecord;->showToCurrentUser()Z+]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;
+PLcom/android/server/wm/ActivityRecord;->startRelaunching()V
+PLcom/android/server/wm/ActivityRecord;->stopFreezingScreen(Z)V
+HPLcom/android/server/wm/ActivityRecord;->stopIfPossible()V
PLcom/android/server/wm/ActivityRecord;->supportsMultiWindowInDisplayArea(Lcom/android/server/wm/TaskDisplayArea;)Z
PLcom/android/server/wm/ActivityRecord;->supportsPictureInPicture()Z
HPLcom/android/server/wm/ActivityRecord;->supportsSizeChanges()I
-PLcom/android/server/wm/ActivityRecord;->takeRemoteTransition()Landroid/window/RemoteTransition;
-PLcom/android/server/wm/ActivityRecord;->takeSceneTransitionInfo()Landroid/app/ActivityOptions$SceneTransitionInfo;
HPLcom/android/server/wm/ActivityRecord;->toString()Ljava/lang/String;
-PLcom/android/server/wm/ActivityRecord;->transferSplashScreenIfNeeded()Z
-PLcom/android/server/wm/ActivityRecord;->transferStartingWindowFromHiddenAboveTokenIfNeeded()V
-PLcom/android/server/wm/ActivityRecord;->updateAllDrawn()V
-PLcom/android/server/wm/ActivityRecord;->updateAnimatingActivityRegistry()V
-PLcom/android/server/wm/ActivityRecord;->updateColorTransform()V
-HPLcom/android/server/wm/ActivityRecord;->updateCompatDisplayInsets()V
-HPLcom/android/server/wm/ActivityRecord;->updateDrawnWindowStates(Lcom/android/server/wm/WindowState;)Z
-HPLcom/android/server/wm/ActivityRecord;->updateLetterboxSurface(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/ActivityRecord;->transferStartingWindow(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/ActivityRecord;->updateLetterboxSurfaceIfNeeded(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/ActivityRecord;->updateOptionsLocked(Landroid/app/ActivityOptions;)V
HPLcom/android/server/wm/ActivityRecord;->updateReportedConfigurationAndSend()Z
-HPLcom/android/server/wm/ActivityRecord;->updateReportedVisibilityLocked()V
-PLcom/android/server/wm/ActivityRecord;->updateResolvedBoundsPosition(Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/ActivityRecord;->updateTaskDescription(Ljava/lang/CharSequence;)V
+HPLcom/android/server/wm/ActivityRecord;->updateReportedVisibilityLocked()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/ActivityRecord;->updateUntrustedEmbeddingInputProtection()V
-HPLcom/android/server/wm/ActivityRecord;->updateVisibilityIgnoringKeyguard(Z)V
-PLcom/android/server/wm/ActivityRecord;->updateVisibleForServiceConnection()V
-PLcom/android/server/wm/ActivityRecord;->validateStartingWindowTheme(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;I)Z
+HPLcom/android/server/wm/ActivityRecord;->validateStartingWindowTheme(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;I)Z
PLcom/android/server/wm/ActivityRecord;->waitForSyncTransactionCommit(Landroid/util/ArraySet;)V
-PLcom/android/server/wm/ActivityRecord;->windowsAreFocusable()Z
-HPLcom/android/server/wm/ActivityRecord;->windowsAreFocusable(Z)Z
-PLcom/android/server/wm/ActivityRecordInputSink;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/ActivityRecordInputSink;->applyChangesToSurfaceIfChanged(Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/ActivityRecordInputSink;->createInputWindowHandle()Landroid/view/InputWindowHandle;
-PLcom/android/server/wm/ActivityRecordInputSink;->createSurface(Landroid/view/SurfaceControl$Transaction;)Landroid/view/SurfaceControl;
-HPLcom/android/server/wm/ActivityRecordInputSink;->getInputWindowHandleWrapper()Lcom/android/server/wm/InputWindowHandleWrapper;
-PLcom/android/server/wm/ActivitySecurityModelFeatureFlags$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/wm/ActivitySecurityModelFeatureFlags;-><clinit>()V
-PLcom/android/server/wm/ActivitySecurityModelFeatureFlags;->initialize(Ljava/util/concurrent/Executor;Landroid/content/pm/PackageManager;)V
-PLcom/android/server/wm/ActivitySecurityModelFeatureFlags;->updateFromDeviceConfig()V
+HPLcom/android/server/wm/ActivityRecord;->windowsAreFocusable(Z)Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
+PLcom/android/server/wm/ActivityRecord;->writeIdentifierToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/wm/ActivityRecordInputSink;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Z)V
+HPLcom/android/server/wm/ActivityRecordInputSink;->applyChangesToSurfaceIfChanged(Landroid/view/SurfaceControl$Transaction;)V+]Landroid/view/SurfaceControl$Builder;Landroid/view/SurfaceControl$Builder;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
+PLcom/android/server/wm/ActivityResult;-><init>(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;IILandroid/content/Intent;Landroid/os/IBinder;)V
+PLcom/android/server/wm/ActivitySecurityModelFeatureFlags$$ExternalSyntheticLambda0;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
PLcom/android/server/wm/ActivityServiceConnectionsHolder;-><init>(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivitySnapshotCache;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/ActivitySnapshotController$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/wm/ActivitySnapshotController$$ExternalSyntheticLambda1;->getSystemDirectoryForUser(I)Ljava/io/File;
+PLcom/android/server/wm/ActivityServiceConnectionsHolder;->toString()Ljava/lang/String;
PLcom/android/server/wm/ActivitySnapshotController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/SnapshotPersistQueue;)V
-PLcom/android/server/wm/ActivitySnapshotController;->beginSnapshotProcess()V
-PLcom/android/server/wm/ActivitySnapshotController;->createPersistInfoProvider(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/BaseAppSnapshotPersister$DirectoryResolver;)Lcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;
-PLcom/android/server/wm/ActivitySnapshotController;->endSnapshotProcess()V
-PLcom/android/server/wm/ActivitySnapshotController;->handleTaskTransition(Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/ActivitySnapshotController;->handleTransitionFinish(Ljava/util/ArrayList;)V
+PLcom/android/server/wm/ActivitySnapshotController;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/ActivitySnapshotController;->handleActivityTransition(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivitySnapshotController;->handleTransitionFinish(Ljava/util/ArrayList;)V
PLcom/android/server/wm/ActivitySnapshotController;->initSnapshotScale()F
-PLcom/android/server/wm/ActivitySnapshotController;->isSnapshotEnabled()Z
-PLcom/android/server/wm/ActivitySnapshotController;->notifyAppVisibilityChanged(Lcom/android/server/wm/ActivityRecord;Z)V
-HSPLcom/android/server/wm/ActivityStartController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
HSPLcom/android/server/wm/ActivityStartController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityStarter$Factory;)V
-PLcom/android/server/wm/ActivityStartController;->checkTargetUser(IZIILjava/lang/String;)I
-PLcom/android/server/wm/ActivityStartController;->getPendingRemoteAnimationRegistry()Lcom/android/server/wm/PendingRemoteAnimationRegistry;
+PLcom/android/server/wm/ActivityStartController;->checkTargetUser(IILjava/lang/String;IZ)I
+PLcom/android/server/wm/ActivityStartController;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/wm/ActivityStartController;->obtainStarter(Landroid/content/Intent;Ljava/lang/String;)Lcom/android/server/wm/ActivityStarter;
-PLcom/android/server/wm/ActivityStartController;->onExecutionComplete(Lcom/android/server/wm/ActivityStarter;)V
-PLcom/android/server/wm/ActivityStartController;->onExecutionStarted()V
-PLcom/android/server/wm/ActivityStartController;->startHomeActivity(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/String;Lcom/android/server/wm/TaskDisplayArea;)V
-PLcom/android/server/wm/ActivityStartController;->startSetupActivity()V
-PLcom/android/server/wm/ActivityStartInterceptor$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/ActivityRecord;)V
-HSPLcom/android/server/wm/ActivityStartInterceptor;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskSupervisor;)V
+PLcom/android/server/wm/ActivityStartController;->startActivityInPackage(IIILjava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;ILcom/android/server/wm/SafeActivityOptions;ILcom/android/server/wm/Task;Ljava/lang/String;Lcom/android/server/am/PendingIntentRecord;Z)I
+PLcom/android/server/wm/ActivityStartInterceptor$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/ActivityStartInterceptor;Lcom/android/server/wm/ActivityRecord;)V
HSPLcom/android/server/wm/ActivityStartInterceptor;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskSupervisor;Landroid/content/Context;)V
-HPLcom/android/server/wm/ActivityStartInterceptor;->getInterceptorInfo(Ljava/lang/Runnable;)Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;
-PLcom/android/server/wm/ActivityStartInterceptor;->intercept(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;Landroid/content/pm/ActivityInfo;Ljava/lang/String;Lcom/android/server/wm/Task;Lcom/android/server/wm/TaskFragment;IILandroid/app/ActivityOptions;Lcom/android/server/wm/TaskDisplayArea;)Z
-PLcom/android/server/wm/ActivityStartInterceptor;->interceptHarmfulAppIfNeeded()Z
-PLcom/android/server/wm/ActivityStartInterceptor;->interceptHomeIfNeeded()Z
-PLcom/android/server/wm/ActivityStartInterceptor;->interceptLockTaskModeViolationPackageIfNeeded()Z
-PLcom/android/server/wm/ActivityStartInterceptor;->interceptLockedProfileIfNeeded()Z
-PLcom/android/server/wm/ActivityStartInterceptor;->interceptQuietProfileIfNeeded()Z
-PLcom/android/server/wm/ActivityStartInterceptor;->interceptSuspendedPackageIfNeeded()Z
-PLcom/android/server/wm/ActivityStartInterceptor;->interceptWithConfirmCredentialsIfNeeded(Landroid/content/pm/ActivityInfo;I)Landroid/content/Intent;
-PLcom/android/server/wm/ActivityStartInterceptor;->isPackageSuspended()Z
-PLcom/android/server/wm/ActivityStartInterceptor;->onActivityLaunched(Landroid/app/TaskInfo;Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityStartInterceptor;->setStates(IIIILjava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/wm/ActivityStarter$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/TaskFragment;)V
-HSPLcom/android/server/wm/ActivityStarter$DefaultFactory;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityStartInterceptor;)V
+HPLcom/android/server/wm/ActivityStartInterceptor;->getInterceptorInfo(Lcom/android/server/wm/ActivityStartInterceptor$$ExternalSyntheticLambda0;)Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;
+HPLcom/android/server/wm/ActivityStartInterceptor;->intercept(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;Landroid/content/pm/ActivityInfo;Ljava/lang/String;Lcom/android/server/wm/Task;Lcom/android/server/wm/TaskFragment;IILandroid/app/ActivityOptions;Lcom/android/server/wm/TaskDisplayArea;)Z
+HPLcom/android/server/wm/ActivityStarter$$ExternalSyntheticLambda2;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/ActivityStarter$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/ActivityStarter;Lcom/android/server/wm/ActivityRecord;)V
PLcom/android/server/wm/ActivityStarter$DefaultFactory;->obtain()Lcom/android/server/wm/ActivityStarter;
PLcom/android/server/wm/ActivityStarter$DefaultFactory;->recycle(Lcom/android/server/wm/ActivityStarter;)V
HSPLcom/android/server/wm/ActivityStarter$DefaultFactory;->setController(Lcom/android/server/wm/ActivityStartController;)V
PLcom/android/server/wm/ActivityStarter$Request;-><init>()V
HPLcom/android/server/wm/ActivityStarter$Request;->reset()V
HPLcom/android/server/wm/ActivityStarter$Request;->resolveActivity(Lcom/android/server/wm/ActivityTaskSupervisor;)V
-HPLcom/android/server/wm/ActivityStarter$Request;->set(Lcom/android/server/wm/ActivityStarter$Request;)V
PLcom/android/server/wm/ActivityStarter;-><init>(Lcom/android/server/wm/ActivityStartController;Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityStartInterceptor;)V
-PLcom/android/server/wm/ActivityStarter;->addOrReparentStartingActivity(Lcom/android/server/wm/Task;Ljava/lang/String;)V
-PLcom/android/server/wm/ActivityStarter;->adjustLaunchFlagsToDocumentMode(Lcom/android/server/wm/ActivityRecord;ZZI)I
+PLcom/android/server/wm/ActivityStarter;->addOrReparentStartingActivity(Ljava/lang/String;Lcom/android/server/wm/Task;)V
PLcom/android/server/wm/ActivityStarter;->avoidMoveToFront()Z
-PLcom/android/server/wm/ActivityStarter;->computeLaunchParams(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/ActivityStarter;->computeLaunchingTaskFlags()V
PLcom/android/server/wm/ActivityStarter;->computeResolveFilterUid(III)I
-PLcom/android/server/wm/ActivityStarter;->computeSuggestedLaunchDisplayArea(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)Lcom/android/server/wm/TaskDisplayArea;
-PLcom/android/server/wm/ActivityStarter;->computeTargetTask()Lcom/android/server/wm/Task;
-PLcom/android/server/wm/ActivityStarter;->deliverToCurrentTopIfNeeded(Lcom/android/server/wm/Task;Lcom/android/server/uri/NeededUriGrants;)I
+HPLcom/android/server/wm/ActivityStarter;->deliverNewIntent(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/uri/NeededUriGrants;)V
HPLcom/android/server/wm/ActivityStarter;->execute()I
HPLcom/android/server/wm/ActivityStarter;->executeRequest(Lcom/android/server/wm/ActivityStarter$Request;)I
-PLcom/android/server/wm/ActivityStarter;->getExternalResult(I)I
PLcom/android/server/wm/ActivityStarter;->getOrCreateRootTask(Lcom/android/server/wm/ActivityRecord;ILcom/android/server/wm/Task;Landroid/app/ActivityOptions;)Lcom/android/server/wm/Task;
-PLcom/android/server/wm/ActivityStarter;->getReusableTask()Lcom/android/server/wm/Task;
-PLcom/android/server/wm/ActivityStarter;->handleStartResult(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;ILcom/android/server/wm/Transition;Landroid/window/RemoteTransition;)Lcom/android/server/wm/Task;
-PLcom/android/server/wm/ActivityStarter;->isAllowedToStart(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/Task;)I
-PLcom/android/server/wm/ActivityStarter;->onExecutionComplete()V
-PLcom/android/server/wm/ActivityStarter;->onExecutionStarted()V
-PLcom/android/server/wm/ActivityStarter;->postStartActivityProcessing(Lcom/android/server/wm/ActivityRecord;ILcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/ActivityStarter;->handleStartResult(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;IZLandroid/window/RemoteTransition;Lcom/android/server/wm/Transition;)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/ActivityStarter;->isAllowedToStart(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/Task;)I
+PLcom/android/server/wm/ActivityStarter;->logPIOnlyCreatorAllowsBAL()V
+HPLcom/android/server/wm/ActivityStarter;->onExecutionComplete()V
+HPLcom/android/server/wm/ActivityStarter;->postStartActivityProcessing(ILcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;)V
PLcom/android/server/wm/ActivityStarter;->recordTransientLaunchIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityStarter;->recycleTask(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;Lcom/android/server/uri/NeededUriGrants;Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;)I
HPLcom/android/server/wm/ActivityStarter;->reset(Z)V
PLcom/android/server/wm/ActivityStarter;->resolveToHeavyWeightSwitcherIfNeeded()I
-PLcom/android/server/wm/ActivityStarter;->sendNewTaskResultRequestIfNeeded()V
-HPLcom/android/server/wm/ActivityStarter;->set(Lcom/android/server/wm/ActivityStarter;)V
-PLcom/android/server/wm/ActivityStarter;->setActivityInfo(Landroid/content/pm/ActivityInfo;)Lcom/android/server/wm/ActivityStarter;
-PLcom/android/server/wm/ActivityStarter;->setActivityOptions(Landroid/os/Bundle;)Lcom/android/server/wm/ActivityStarter;
-PLcom/android/server/wm/ActivityStarter;->setActivityOptions(Lcom/android/server/wm/SafeActivityOptions;)Lcom/android/server/wm/ActivityStarter;
-PLcom/android/server/wm/ActivityStarter;->setCaller(Landroid/app/IApplicationThread;)Lcom/android/server/wm/ActivityStarter;
-PLcom/android/server/wm/ActivityStarter;->setCallingFeatureId(Ljava/lang/String;)Lcom/android/server/wm/ActivityStarter;
-PLcom/android/server/wm/ActivityStarter;->setCallingPackage(Ljava/lang/String;)Lcom/android/server/wm/ActivityStarter;
-PLcom/android/server/wm/ActivityStarter;->setCallingUid(I)Lcom/android/server/wm/ActivityStarter;
-HPLcom/android/server/wm/ActivityStarter;->setInitialState(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/Task;Lcom/android/server/wm/TaskFragment;ILcom/android/server/wm/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;II)V
-PLcom/android/server/wm/ActivityStarter;->setIntent(Landroid/content/Intent;)Lcom/android/server/wm/ActivityStarter;
-PLcom/android/server/wm/ActivityStarter;->setNewTask(Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/ActivityStarter;->setOutActivity([Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityStarter;
-PLcom/android/server/wm/ActivityStarter;->setProfilerInfo(Landroid/app/ProfilerInfo;)Lcom/android/server/wm/ActivityStarter;
-PLcom/android/server/wm/ActivityStarter;->setReason(Ljava/lang/String;)Lcom/android/server/wm/ActivityStarter;
-PLcom/android/server/wm/ActivityStarter;->setRequestCode(I)Lcom/android/server/wm/ActivityStarter;
-PLcom/android/server/wm/ActivityStarter;->setResolvedType(Ljava/lang/String;)Lcom/android/server/wm/ActivityStarter;
-PLcom/android/server/wm/ActivityStarter;->setResultTo(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityStarter;
-PLcom/android/server/wm/ActivityStarter;->setResultWho(Ljava/lang/String;)Lcom/android/server/wm/ActivityStarter;
-PLcom/android/server/wm/ActivityStarter;->setStartFlags(I)Lcom/android/server/wm/ActivityStarter;
-PLcom/android/server/wm/ActivityStarter;->setUserId(I)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->resumeTargetRootTaskIfNeeded()V
HPLcom/android/server/wm/ActivityStarter;->startActivityInner(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;ILandroid/app/ActivityOptions;Lcom/android/server/wm/Task;Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;Lcom/android/server/uri/NeededUriGrants;I)I
-PLcom/android/server/wm/ActivityStarter;->startActivityUnchecked(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;ILandroid/app/ActivityOptions;Lcom/android/server/wm/Task;Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;Lcom/android/server/uri/NeededUriGrants;I)I
-HSPLcom/android/server/wm/ActivityTaskManagerInternal;-><init>()V
+PLcom/android/server/wm/ActivityTaskManagerInternal$PreBindInfo;-><init>(Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda11;->apply(Ljava/lang/Object;)Z
PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ZLcom/android/server/wm/ActivityRecord;)V
PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda12;->run()V
-PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda13;-><init>()V
-PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda18;-><init>(Landroid/app/ActivityManagerInternal;)V
-PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda18;->run()V
-PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda19;-><init>()V
-PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda19;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda17;-><init>(ILjava/lang/Object;)V
+HPLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda17;->run()V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda18;-><init>(I)V
+HPLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda18;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ZZ)V
-PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda20;-><init>()V
-PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda20;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda21;-><init>()V
-PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda21;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda22;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
-PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda22;->run()V
-PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda23;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ZZ)V
-PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda23;->run()V
-PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Z)V
-PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda2;->run()V
-PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda8;-><init>()V
-PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda21;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda24;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ZZ)V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda24;->run()V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ZI)V
+HPLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/content/res/Configuration;ILandroid/content/res/Configuration;IZ)V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda9;->run()V
HSPLcom/android/server/wm/ActivityTaskManagerService$1;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/ActivityTaskManagerService$1;->run()V
HSPLcom/android/server/wm/ActivityTaskManagerService$H;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/os/Looper;)V
+HPLcom/android/server/wm/ActivityTaskManagerService$H;->handleMessage(Landroid/os/Message;)V
HSPLcom/android/server/wm/ActivityTaskManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/wm/ActivityTaskManagerService$Lifecycle;->getService()Lcom/android/server/wm/ActivityTaskManagerService;
HSPLcom/android/server/wm/ActivityTaskManagerService$Lifecycle;->onStart()V
PLcom/android/server/wm/ActivityTaskManagerService$Lifecycle;->onUserUnlocked(Lcom/android/server/SystemService$TargetUser;)V
HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
-HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->attachApplication(Lcom/android/server/wm/WindowProcessController;)Z
-HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->clearHeavyWeightProcessIfEquals(Lcom/android/server/wm/WindowProcessController;)V
-HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->compatibilityInfoForPackage(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->createSleepTokenAcquirer(Ljava/lang/String;)Lcom/android/server/wm/ActivityTaskManagerInternal$SleepTokenAcquirer;
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->dumpActivity(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZZZII)Z
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->attachApplication(Lcom/android/server/wm/WindowProcessController;)Z
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->checkCanCloseSystemDialogs(IILjava/lang/String;)Z
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->clearHeavyWeightProcessIfEquals(Lcom/android/server/wm/WindowProcessController;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->closeSystemDialogs(Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;I)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->dumpForProcesses(Ljava/io/PrintWriter;ZLjava/lang/String;IZZI)Z
PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->enableScreenAfterBoot(Z)V
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getLaunchObserverRegistry()Lcom/android/server/wm/ActivityMetricsLaunchObserverRegistry;
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getServiceConnectionsHolder(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityServiceConnectionsHolder;
-HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getTaskToShowPermissionDialogOn(Ljava/lang/String;I)I
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getTopApp()Lcom/android/server/wm/WindowProcessController;
-HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getTopProcessState()I
-HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->handleAppDied(Lcom/android/server/wm/WindowProcessController;ZLjava/lang/Runnable;)V
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->hasSystemAlertWindowPermission(IILjava/lang/String;)Z
-HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isCallerRecents(I)Z
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isGetTasksAllowed(Ljava/lang/String;II)Z
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isShuttingDown()Z
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isSleeping()Z
-HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isUidForeground(I)Z
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->loadRecentTasksForUser(I)V
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->notifyActiveVoiceInteractionServiceChanged(Landroid/content/ComponentName;)V
-HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onCleanUpApplicationRecord(Lcom/android/server/wm/WindowProcessController;)V
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onForceStopPackage(Ljava/lang/String;ZZI)Z
-HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onProcessAdded(Lcom/android/server/wm/WindowProcessController;)V
-HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onProcessMapped(ILcom/android/server/wm/WindowProcessController;)V
-HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onProcessRemoved(Ljava/lang/String;I)V
-HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onProcessUnMapped(I)V
-HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onUidActive(II)V
-HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onUidInactive(I)V
-HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onUidProcStateChanged(II)V
-HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->preBindApplication(Lcom/android/server/wm/WindowProcessController;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getLaunchObserverRegistry()Lcom/android/server/wm/LaunchObserverRegistryImpl;
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getTaskToShowPermissionDialogOn(ILjava/lang/String;)I
+HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getTopProcessState()I
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getTopVisibleActivities()Ljava/util/List;
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->notifyActiveDreamChanged(Landroid/content/ComponentName;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onCleanUpApplicationRecord(Lcom/android/server/wm/WindowProcessController;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onForceStopPackage(Ljava/lang/String;IZZ)Z
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onPackageAdded(Ljava/lang/String;Z)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onPackageReplaced(Landroid/content/pm/ApplicationInfo;)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->preBindApplication(Lcom/android/server/wm/WindowProcessController;Landroid/content/pm/ApplicationInfo;)Lcom/android/server/wm/ActivityTaskManagerInternal$PreBindInfo;
PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->registerActivityStartInterceptor(ILcom/android/server/wm/ActivityInterceptorCallback;)V
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->registerCompatScaleProvider(ILcom/android/server/wm/CompatScaleProvider;)V
PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->registerScreenObserver(Lcom/android/server/wm/ActivityTaskManagerInternal$ScreenObserver;)V
PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->resumeTopActivities(Z)V
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->setAccessibilityServiceUids(Landroid/util/IntArray;)V
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->setAllowAppSwitches(Ljava/lang/String;II)V
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->setBackgroundActivityStartCallback(Lcom/android/server/wm/BackgroundActivityStartCallback;)V
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->setCompanionAppUids(ILjava/util/Set;)V
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->setDeviceOwnerUid(I)V
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->setProfileOwnerUids(Ljava/util/Set;)V
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->showSystemReadyErrorDialogsIfNeeded()V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->setAllowAppSwitches(IILjava/lang/String;)V
PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->startHomeOnAllDisplays(ILjava/lang/String;)Z
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->updateTopComponentForFactoryTest()V
-HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->useTopSchedGroupForTopProcess()Z
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->writeActivitiesToProto(Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->writeProcessesToProto(Landroid/util/proto/ProtoOutputStream;Ljava/lang/String;IZ)V
+PLcom/android/server/wm/ActivityTaskManagerService$PendingAssistExtras;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityRecord;Landroid/os/Bundle;Landroid/app/IAssistDataReceiver;Landroid/os/Bundle;I)V
PLcom/android/server/wm/ActivityTaskManagerService$SettingObserver;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
-HSPLcom/android/server/wm/ActivityTaskManagerService$SleepTokenAcquirerImpl;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Ljava/lang/String;)V
-PLcom/android/server/wm/ActivityTaskManagerService$SleepTokenAcquirerImpl;->release(I)V
-HSPLcom/android/server/wm/ActivityTaskManagerService$UiHandler;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
-HSPLcom/android/server/wm/ActivityTaskManagerService$UpdateConfigurationResult;-><init>()V
-PLcom/android/server/wm/ActivityTaskManagerService;->$r8$lambda$G-ZVGkJnOiiiPtzNWf__-3fwOz0(Lcom/android/server/wm/ActivityTaskManagerService;Z)V
-PLcom/android/server/wm/ActivityTaskManagerService;->$r8$lambda$gl_rL-Uj8MkGoxcvZAtiOobhr1U(Lcom/android/server/wm/ActivityTaskManagerService;ZZLcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->$r8$lambda$o1LyOlG7Bjhnk6ihNjw6qxiRkiM(Lcom/android/server/wm/ActivityTaskManagerService;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->$r8$lambda$xw3oVmq5ZU_M2JzNhcLEohfHV_4(Lcom/android/server/wm/ActivityTaskManagerService;ZLcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->$r8$lambda$zamvtNbvmh2J_IeaFnbzAisM5zY(Lcom/android/server/wm/ActivityTaskManagerService;ZZ)V
-PLcom/android/server/wm/ActivityTaskManagerService;->-$$Nest$fgetmActivityInterceptorCallbacks(Lcom/android/server/wm/ActivityTaskManagerService;)Landroid/util/SparseArray;
-PLcom/android/server/wm/ActivityTaskManagerService;->-$$Nest$fgetmCompanionAppUidsMap(Lcom/android/server/wm/ActivityTaskManagerService;)Ljava/util/Map;
-PLcom/android/server/wm/ActivityTaskManagerService;->-$$Nest$fgetmRecentTasks(Lcom/android/server/wm/ActivityTaskManagerService;)Lcom/android/server/wm/RecentTasks;
-HPLcom/android/server/wm/ActivityTaskManagerService;->-$$Nest$fgetmRetainPowerModeAndTopProcessState(Lcom/android/server/wm/ActivityTaskManagerService;)Z
-HSPLcom/android/server/wm/ActivityTaskManagerService;->-$$Nest$fgetmSleeping(Lcom/android/server/wm/ActivityTaskManagerService;)Z
-PLcom/android/server/wm/ActivityTaskManagerService;->-$$Nest$fputmAccessibilityServiceUids(Lcom/android/server/wm/ActivityTaskManagerService;[I)V
-PLcom/android/server/wm/ActivityTaskManagerService;->-$$Nest$fputmBackgroundActivityStartCallback(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/BackgroundActivityStartCallback;)V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->-$$Nest$mstart(Lcom/android/server/wm/ActivityTaskManagerService;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->-$$Nest$mupdateEventDispatchingLocked(Lcom/android/server/wm/ActivityTaskManagerService;Z)V
+HSPLcom/android/server/wm/ActivityTaskManagerService$SleepTokenAcquirer;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskManagerService$SleepTokenAcquirer;->acquire(I)V
+HPLcom/android/server/wm/ActivityTaskManagerService$SleepTokenAcquirer;->release(I)V
+PLcom/android/server/wm/ActivityTaskManagerService;->-$$Nest$mwriteSleepStateToProto(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/util/proto/ProtoOutputStream;IZ)V
HSPLcom/android/server/wm/ActivityTaskManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->addWindowLayoutReasons(I)V
-PLcom/android/server/wm/ActivityTaskManagerService;->applyUpdateLockStateLocked(Lcom/android/server/wm/ActivityRecord;)V
PLcom/android/server/wm/ActivityTaskManagerService;->assertPackageMatchesCallingUid(Ljava/lang/String;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->checkCallingPermission(Ljava/lang/String;)I
-PLcom/android/server/wm/ActivityTaskManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
-PLcom/android/server/wm/ActivityTaskManagerService;->checkPermission(Ljava/lang/String;II)I
+PLcom/android/server/wm/ActivityTaskManagerService;->canCloseSystemDialogs(II)Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->checkCallingPermission(Ljava/lang/String;)I
+HPLcom/android/server/wm/ActivityTaskManagerService;->checkCanCloseSystemDialogs(IILjava/lang/String;)Z
PLcom/android/server/wm/ActivityTaskManagerService;->clearHeavyWeightProcessIfEquals(Lcom/android/server/wm/WindowProcessController;)V
-HPLcom/android/server/wm/ActivityTaskManagerService;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
+PLcom/android/server/wm/ActivityTaskManagerService;->collectGrants(Landroid/content/Intent;Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/uri/NeededUriGrants;
HPLcom/android/server/wm/ActivityTaskManagerService;->continueWindowLayout()V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->createAppWarnings(Landroid/content/Context;Landroid/os/Handler;Landroid/os/Handler;Ljava/io/File;)Lcom/android/server/wm/AppWarnings;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->createTaskSupervisor()Lcom/android/server/wm/ActivityTaskSupervisor;
HPLcom/android/server/wm/ActivityTaskManagerService;->deferWindowLayout()V
-HPLcom/android/server/wm/ActivityTaskManagerService;->dumpActivity(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZZZII)Z
-HPLcom/android/server/wm/ActivityTaskManagerService;->dumpActivity(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/wm/ActivityRecord;[Ljava/lang/String;Z)V
-PLcom/android/server/wm/ActivityTaskManagerService;->endPowerMode(I)V
+PLcom/android/server/wm/ActivityTaskManagerService;->dumpActivitiesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;ZZLjava/lang/String;I)V
+PLcom/android/server/wm/ActivityTaskManagerService;->dumpActivity(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZZZIIJ)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->dumpInstalledPackagesConfig(Ljava/io/PrintWriter;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->endPowerMode(I)V
PLcom/android/server/wm/ActivityTaskManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->enforceTaskPermission(Ljava/lang/String;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->ensureConfigAndVisibilityAfterUpdate(Lcom/android/server/wm/ActivityRecord;I)Z
-PLcom/android/server/wm/ActivityTaskManagerService;->finishRunningVoiceLocked()V
+HPLcom/android/server/wm/ActivityTaskManagerService;->enforceTaskPermission(Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->enqueueAssistContext(ILandroid/app/IAssistDataReceiver;Landroid/os/Bundle;Landroid/os/IBinder;ZZIJI)Lcom/android/server/wm/ActivityTaskManagerService$PendingAssistExtras;
+PLcom/android/server/wm/ActivityTaskManagerService;->ensureConfigAndVisibilityAfterUpdate(ILcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->finishVoiceTask(Landroid/service/voice/IVoiceInteractionSession;)V
PLcom/android/server/wm/ActivityTaskManagerService;->getActivityClientController()Landroid/app/IActivityClientController;
-PLcom/android/server/wm/ActivityTaskManagerService;->getActivityInterceptorCallbacks()Landroid/util/SparseArray;
-PLcom/android/server/wm/ActivityTaskManagerService;->getActivityStartController()Lcom/android/server/wm/ActivityStartController;
PLcom/android/server/wm/ActivityTaskManagerService;->getAllRootTaskInfosOnDisplay(I)Ljava/util/List;
-PLcom/android/server/wm/ActivityTaskManagerService;->getAnrController(Landroid/content/pm/ApplicationInfo;)Landroid/app/AnrController;
-PLcom/android/server/wm/ActivityTaskManagerService;->getAppInfoForUser(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo;
PLcom/android/server/wm/ActivityTaskManagerService;->getAppOpsManager()Landroid/app/AppOpsManager;
-PLcom/android/server/wm/ActivityTaskManagerService;->getAppWarningsLocked()Lcom/android/server/wm/AppWarnings;
-HPLcom/android/server/wm/ActivityTaskManagerService;->getBackgroundActivityStartCallback()Lcom/android/server/wm/BackgroundActivityStartCallback;
-HPLcom/android/server/wm/ActivityTaskManagerService;->getBalAppSwitchesState()I
+PLcom/android/server/wm/ActivityTaskManagerService;->getAppTasks(ILjava/lang/String;)Ljava/util/List;
+PLcom/android/server/wm/ActivityTaskManagerService;->getAppTasks(Ljava/lang/String;)Ljava/util/List;
PLcom/android/server/wm/ActivityTaskManagerService;->getConfiguration()Landroid/content/res/Configuration;
-HPLcom/android/server/wm/ActivityTaskManagerService;->getCurrentUserId()I
-HPLcom/android/server/wm/ActivityTaskManagerService;->getDeviceConfigurationInfo()Landroid/content/pm/ConfigurationInfo;
-HPLcom/android/server/wm/ActivityTaskManagerService;->getGlobalConfiguration()Landroid/content/res/Configuration;
+PLcom/android/server/wm/ActivityTaskManagerService;->getDeviceConfigurationInfo()Landroid/content/pm/ConfigurationInfo;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getFocusedRootTaskInfo()Landroid/app/ActivityTaskManager$RootTaskInfo;
+PLcom/android/server/wm/ActivityTaskManagerService;->getGlobalConfiguration()Landroid/content/res/Configuration;
PLcom/android/server/wm/ActivityTaskManagerService;->getGlobalConfigurationForCallingPid()Landroid/content/res/Configuration;
-HPLcom/android/server/wm/ActivityTaskManagerService;->getGlobalConfigurationForPid(I)Landroid/content/res/Configuration;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->getGlobalLock()Lcom/android/server/wm/WindowManagerGlobalLock;
PLcom/android/server/wm/ActivityTaskManagerService;->getHomeIntent()Landroid/content/Intent;
-PLcom/android/server/wm/ActivityTaskManagerService;->getInputDispatchingTimeoutMillisLocked(Lcom/android/server/wm/ActivityRecord;)J
-PLcom/android/server/wm/ActivityTaskManagerService;->getInputDispatchingTimeoutMillisLocked(Lcom/android/server/wm/WindowProcessController;)J
-HPLcom/android/server/wm/ActivityTaskManagerService;->getLastStopAppSwitchesTime()J
-HPLcom/android/server/wm/ActivityTaskManagerService;->getLifecycleManager()Lcom/android/server/wm/ClientLifecycleManager;
-PLcom/android/server/wm/ActivityTaskManagerService;->getLockTaskController()Lcom/android/server/wm/LockTaskController;
-PLcom/android/server/wm/ActivityTaskManagerService;->getPackageManager()Landroid/content/pm/IPackageManager;
-PLcom/android/server/wm/ActivityTaskManagerService;->getPackageManagerInternalLocked()Landroid/content/pm/PackageManagerInternal;
-PLcom/android/server/wm/ActivityTaskManagerService;->getPackageNameIfUnique(II)Ljava/lang/String;
-HPLcom/android/server/wm/ActivityTaskManagerService;->getPermissionPolicyInternal()Lcom/android/server/policy/PermissionPolicyInternal;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getPackageManagerInternalLocked()Landroid/content/pm/PackageManagerInternal;
PLcom/android/server/wm/ActivityTaskManagerService;->getProcessController(II)Lcom/android/server/wm/WindowProcessController;
-HPLcom/android/server/wm/ActivityTaskManagerService;->getProcessController(Landroid/app/IApplicationThread;)Lcom/android/server/wm/WindowProcessController;
-PLcom/android/server/wm/ActivityTaskManagerService;->getProcessController(Ljava/lang/String;I)Lcom/android/server/wm/WindowProcessController;
-PLcom/android/server/wm/ActivityTaskManagerService;->getRecentTasks()Lcom/android/server/wm/RecentTasks;
-PLcom/android/server/wm/ActivityTaskManagerService;->getRecentTasks(III)Landroid/content/pm/ParceledListSlice;
-HPLcom/android/server/wm/ActivityTaskManagerService;->getSysUiServiceComponentLocked()Landroid/content/ComponentName;
-PLcom/android/server/wm/ActivityTaskManagerService;->getTaskBounds(I)Landroid/graphics/Rect;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->getTaskChangeNotificationController()Lcom/android/server/wm/TaskChangeNotificationController;
-PLcom/android/server/wm/ActivityTaskManagerService;->getTasks(IZZI)Ljava/util/List;
-HPLcom/android/server/wm/ActivityTaskManagerService;->getTransitionController()Lcom/android/server/wm/TransitionController;
-PLcom/android/server/wm/ActivityTaskManagerService;->getUiContext()Landroid/content/Context;
-PLcom/android/server/wm/ActivityTaskManagerService;->getUserManager()Lcom/android/server/pm/UserManagerService;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getProcessController(ILjava/lang/String;)Lcom/android/server/wm/WindowProcessController;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getProcessController(Landroid/app/IApplicationThread;)Lcom/android/server/wm/WindowProcessController;+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getRecentTasks(III)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getRootTaskInfo(II)Landroid/app/ActivityTaskManager$RootTaskInfo;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getTaskBounds(I)Landroid/graphics/Rect;
+PLcom/android/server/wm/ActivityTaskManagerService;->getTaskSnapshot(IZ)Landroid/window/TaskSnapshot;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getTasks(IZZI)Ljava/util/List;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getUserManager()Lcom/android/server/pm/UserManagerService;
PLcom/android/server/wm/ActivityTaskManagerService;->getWindowOrganizerController()Landroid/window/IWindowOrganizerController;
PLcom/android/server/wm/ActivityTaskManagerService;->handleIncomingUser(IIILjava/lang/String;)I
HPLcom/android/server/wm/ActivityTaskManagerService;->hasActiveVisibleWindow(I)Z
-HPLcom/android/server/wm/ActivityTaskManagerService;->hasSystemAlertWindowPermission(IILjava/lang/String;)Z
-PLcom/android/server/wm/ActivityTaskManagerService;->increaseAssetConfigurationSeq()I
-PLcom/android/server/wm/ActivityTaskManagerService;->increaseConfigurationSeqLocked()I
-HSPLcom/android/server/wm/ActivityTaskManagerService;->initialize(Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/am/PendingIntentController;Landroid/os/Looper;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->installSystemProviders()V
-PLcom/android/server/wm/ActivityTaskManagerService;->isBooted()Z
-PLcom/android/server/wm/ActivityTaskManagerService;->isBooting()Z
+PLcom/android/server/wm/ActivityTaskManagerService;->hasSystemAlertWindowPermission(IILjava/lang/String;)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->isAssistDataAllowed()Z
HPLcom/android/server/wm/ActivityTaskManagerService;->isCallerRecents(I)Z
-PLcom/android/server/wm/ActivityTaskManagerService;->isControllerAMonkey()Z
-PLcom/android/server/wm/ActivityTaskManagerService;->isCrossUserAllowed(II)Z
-HPLcom/android/server/wm/ActivityTaskManagerService;->isGetTasksAllowed(Ljava/lang/String;II)Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->isGetTasksAllowed(IILjava/lang/String;)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->isInLockTaskMode()Z
PLcom/android/server/wm/ActivityTaskManagerService;->isPip2ExperimentEnabled()Z
-PLcom/android/server/wm/ActivityTaskManagerService;->isSameApp(ILjava/lang/String;)Z
-PLcom/android/server/wm/ActivityTaskManagerService;->isSdkSandboxActivityIntent(Landroid/content/Context;Landroid/content/Intent;)Z
-PLcom/android/server/wm/ActivityTaskManagerService;->isSleepingLocked()Z
-PLcom/android/server/wm/ActivityTaskManagerService;->isSleepingOrShuttingDownLocked()Z
-PLcom/android/server/wm/ActivityTaskManagerService;->lambda$applyUpdateLockStateLocked$0(ZLcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->lambda$postFinishBooting$12(ZZ)V
-PLcom/android/server/wm/ActivityTaskManagerService;->lambda$scheduleAppGcsLocked$13()V
-PLcom/android/server/wm/ActivityTaskManagerService;->lambda$setLockScreenShown$3(ZZLcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->lambda$setLockScreenShown$4(Z)V
-PLcom/android/server/wm/ActivityTaskManagerService;->logAppTooSlow(Lcom/android/server/wm/WindowProcessController;JLjava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->isTopActivityImmersive()Z
+PLcom/android/server/wm/ActivityTaskManagerService;->keyguardGoingAway(I)V
PLcom/android/server/wm/ActivityTaskManagerService;->maybeHideLockedProfileActivityLocked()V
+PLcom/android/server/wm/ActivityTaskManagerService;->moveTaskToFrontLocked(Landroid/app/IApplicationThread;Ljava/lang/String;IILcom/android/server/wm/SafeActivityOptions;)V
PLcom/android/server/wm/ActivityTaskManagerService;->notifyTaskPersisterLocked(Lcom/android/server/wm/Task;Z)V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->onActivityManagerInternalAdded()V
-PLcom/android/server/wm/ActivityTaskManagerService;->onImeWindowSetOnDisplayArea(ILcom/android/server/wm/DisplayArea;)V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->onInitPowerManagement()V
+HPLcom/android/server/wm/ActivityTaskManagerService;->onScreenAwakeChanged(Z)V
PLcom/android/server/wm/ActivityTaskManagerService;->onSystemReady()V
-PLcom/android/server/wm/ActivityTaskManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLcom/android/server/wm/ActivityTaskManagerService;->postFinishBooting(ZZ)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
PLcom/android/server/wm/ActivityTaskManagerService;->printDisplayInfoAndNewLine(Ljava/io/PrintWriter;Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->registerAnrController(Landroid/app/AnrController;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->registerCompatScaleProvider(ILcom/android/server/wm/CompatScaleProvider;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->registerBackgroundActivityStartCallback(Landroid/os/IBinder;)Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->reportAssistContextExtras(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/app/assist/AssistStructure;Landroid/app/assist/AssistContent;Landroid/net/Uri;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->requestAssistContextExtras(ILandroid/app/IAssistDataReceiver;Landroid/os/Bundle;Landroid/os/IBinder;ZZ)Z
PLcom/android/server/wm/ActivityTaskManagerService;->resumeAppSwitches()V
-HPLcom/android/server/wm/ActivityTaskManagerService;->retrieveSettings(Landroid/content/ContentResolver;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->scheduleAppGcsLocked()V
-PLcom/android/server/wm/ActivityTaskManagerService;->setBooted(Z)V
-PLcom/android/server/wm/ActivityTaskManagerService;->setBooting(Z)V
-PLcom/android/server/wm/ActivityTaskManagerService;->setDeviceOwnerUid(I)V
-PLcom/android/server/wm/ActivityTaskManagerService;->setLastResumedActivityUncheckLocked(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->setLockScreenShown(ZZ)V
-PLcom/android/server/wm/ActivityTaskManagerService;->setProfileOwnerUids(Ljava/util/Set;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->setFocusedTask(ILcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->setLastResumedActivityUncheckLocked(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->setLockScreenShown(ZZ)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->setProcessAnimatingWhileDozing(Lcom/android/server/wm/WindowProcessController;)V
HSPLcom/android/server/wm/ActivityTaskManagerService;->setRecentTasks(Lcom/android/server/wm/RecentTasks;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->setUsageStatsManager(Landroid/app/usage/UsageStatsManagerInternal;)V
PLcom/android/server/wm/ActivityTaskManagerService;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->start()V
+PLcom/android/server/wm/ActivityTaskManagerService;->shouldShowDialogs(Landroid/content/res/Configuration;Z)Z
PLcom/android/server/wm/ActivityTaskManagerService;->startActivity(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;)I
PLcom/android/server/wm/ActivityTaskManagerService;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;I)I
-PLcom/android/server/wm/ActivityTaskManagerService;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;IZ)I
+HPLcom/android/server/wm/ActivityTaskManagerService;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;IZ)I
+PLcom/android/server/wm/ActivityTaskManagerService;->startActivityFromRecents(ILandroid/os/Bundle;)I
+PLcom/android/server/wm/ActivityTaskManagerService;->startActivityIntentSender(Landroid/app/IApplicationThread;Landroid/content/IIntentSender;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)I
+PLcom/android/server/wm/ActivityTaskManagerService;->startBackNavigation(Landroid/os/RemoteCallback;Landroid/window/BackAnimationAdapter;)Landroid/window/BackNavigationInfo;
PLcom/android/server/wm/ActivityTaskManagerService;->startPowerMode(I)V
-PLcom/android/server/wm/ActivityTaskManagerService;->startProcessAsync(Lcom/android/server/wm/ActivityRecord;ZZLjava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->startProcessAsync(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;ZZ)V
PLcom/android/server/wm/ActivityTaskManagerService;->startTimeTrackingFocusedActivityLocked()V
-PLcom/android/server/wm/ActivityTaskManagerService;->updateActivityApplicationInfo(ILandroid/util/ArrayMap;)V
-HPLcom/android/server/wm/ActivityTaskManagerService;->updateActivityUsageStats(Lcom/android/server/wm/ActivityRecord;I)V
-PLcom/android/server/wm/ActivityTaskManagerService;->updateAssetConfiguration(Ljava/util/List;Z)V
-PLcom/android/server/wm/ActivityTaskManagerService;->updateBatteryStats(Lcom/android/server/wm/ActivityRecord;Z)V
+PLcom/android/server/wm/ActivityTaskManagerService;->stopAppSwitches()V
+PLcom/android/server/wm/ActivityTaskManagerService;->takeTaskSnapshot(IZ)Landroid/window/TaskSnapshot;
+PLcom/android/server/wm/ActivityTaskManagerService;->unregisterTaskStackListener(Landroid/app/ITaskStackListener;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->updateActivityUsageStats(ILcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->updateBatteryStats(Lcom/android/server/wm/ActivityRecord;Z)V
PLcom/android/server/wm/ActivityTaskManagerService;->updateConfiguration(Landroid/content/res/Configuration;)Z
-PLcom/android/server/wm/ActivityTaskManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;Z)Z
-PLcom/android/server/wm/ActivityTaskManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;ZZ)Z
-PLcom/android/server/wm/ActivityTaskManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;ZZIZ)Z
-PLcom/android/server/wm/ActivityTaskManagerService;->updateCpuStats()V
-PLcom/android/server/wm/ActivityTaskManagerService;->updateEventDispatchingLocked(Z)V
-HPLcom/android/server/wm/ActivityTaskManagerService;->updateGlobalConfigurationLocked(Landroid/content/res/Configuration;ZZI)I
-PLcom/android/server/wm/ActivityTaskManagerService;->updatePreviousProcess(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;ZZI)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->updateGlobalConfigurationLocked(Landroid/content/res/Configuration;ZZI)I
+PLcom/android/server/wm/ActivityTaskManagerService;->updateOomAdj()V
PLcom/android/server/wm/ActivityTaskManagerService;->updateResumedAppTrace(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->updateShouldShowDialogsLocked(Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->updateSleepIfNeededLocked()V
-PLcom/android/server/wm/ActivityTaskManagerService;->updateTopApp(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->updateSleepIfNeededLocked()V
PLcom/android/server/wm/ActivityTaskSupervisor$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/ActivityTaskSupervisor;)V
-PLcom/android/server/wm/ActivityTaskSupervisor$$ExternalSyntheticLambda0;->run()V
+HPLcom/android/server/wm/ActivityTaskSupervisor$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/wm/ActivityTaskSupervisor$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
HSPLcom/android/server/wm/ActivityTaskSupervisor$ActivityTaskSupervisorHandler;-><init>(Lcom/android/server/wm/ActivityTaskSupervisor;Landroid/os/Looper;)V
-PLcom/android/server/wm/ActivityTaskSupervisor$ActivityTaskSupervisorHandler;->activityIdleFromMessage(Lcom/android/server/wm/ActivityRecord;Z)V
-PLcom/android/server/wm/ActivityTaskSupervisor$ActivityTaskSupervisorHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/wm/ActivityTaskSupervisor$ActivityTaskSupervisorHandler;->handleMessageInner(Landroid/os/Message;)Z
-HSPLcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;-><init>()V
-PLcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;->getOpaqueActivity(Lcom/android/server/wm/WindowContainer;Z)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;->getVisibleOpaqueActivity(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;Z)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;->test(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/ActivityTaskSupervisor$ActivityTaskSupervisorHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/wm/ActivityTaskSupervisor$ActivityTaskSupervisorHandler;->handleMessageInner(Landroid/os/Message;)Z
HPLcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;-><init>()V
-HPLcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;->accept(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;->fillAndReturnTop(Lcom/android/server/wm/Task;Landroid/app/TaskInfo;)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/ActivityTaskSupervisor;->$r8$lambda$NOf6mVLk7SRVOwt1P5P1njNo27o(Lcom/android/server/wm/ActivityTaskSupervisor;)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->-$$Nest$fgetmHandler(Lcom/android/server/wm/ActivityTaskSupervisor;)Lcom/android/server/wm/ActivityTaskSupervisor$ActivityTaskSupervisorHandler;
+HPLcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;->accept(Ljava/lang/Object;)V+]Landroid/content/Intent;Landroid/content/Intent;
HSPLcom/android/server/wm/ActivityTaskSupervisor;-><clinit>()V
HSPLcom/android/server/wm/ActivityTaskSupervisor;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/os/Looper;)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->acquireLaunchWakelock()V
HPLcom/android/server/wm/ActivityTaskSupervisor;->activityIdleInternal(Lcom/android/server/wm/ActivityRecord;ZZLandroid/content/res/Configuration;)V
-HPLcom/android/server/wm/ActivityTaskSupervisor;->beginActivityVisibilityUpdate()V
-HPLcom/android/server/wm/ActivityTaskSupervisor;->beginDeferResume()V
-PLcom/android/server/wm/ActivityTaskSupervisor;->canPlaceEntityOnDisplay(IIILandroid/content/pm/ActivityInfo;)Z
+HPLcom/android/server/wm/ActivityTaskSupervisor;->beginActivityVisibilityUpdate()V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/ActivityTaskSupervisor;->beginDeferResume()V
PLcom/android/server/wm/ActivityTaskSupervisor;->canPlaceEntityOnDisplay(IIILcom/android/server/wm/Task;Landroid/content/pm/ActivityInfo;)Z
PLcom/android/server/wm/ActivityTaskSupervisor;->canUseActivityOptionsLaunchBounds(Landroid/app/ActivityOptions;)Z
-PLcom/android/server/wm/ActivityTaskSupervisor;->checkFinishBootingLocked()V
-PLcom/android/server/wm/ActivityTaskSupervisor;->checkReadyForSleepLocked(Z)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->checkStartAnyActivityPermission(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/String;IIILjava/lang/String;Ljava/lang/String;ZZLcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;)Z
-HPLcom/android/server/wm/ActivityTaskSupervisor;->computeProcessActivityStateBatch()V
-HPLcom/android/server/wm/ActivityTaskSupervisor;->endActivityVisibilityUpdate()V
+HPLcom/android/server/wm/ActivityTaskSupervisor;->checkReadyForSleepLocked(Z)V
+HPLcom/android/server/wm/ActivityTaskSupervisor;->checkStartAnyActivityPermission(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/String;IIILjava/lang/String;Ljava/lang/String;ZZLcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityTaskSupervisor;->cleanUpRemovedTask(Lcom/android/server/wm/Task;ZZ)V
+HPLcom/android/server/wm/ActivityTaskSupervisor;->computeProcessActivityStateBatch()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/ActivityTaskSupervisor;->dumpHistoryList(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/util/List;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/Runnable;)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->endActivityVisibilityUpdate()V
HPLcom/android/server/wm/ActivityTaskSupervisor;->endDeferResume()V
-PLcom/android/server/wm/ActivityTaskSupervisor;->getActionRestrictionForCallingPackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)I
-PLcom/android/server/wm/ActivityTaskSupervisor;->getActivityMetricsLogger()Lcom/android/server/wm/ActivityMetricsLogger;
-PLcom/android/server/wm/ActivityTaskSupervisor;->getBackgroundActivityLaunchController()Lcom/android/server/wm/BackgroundActivityStartController;
-PLcom/android/server/wm/ActivityTaskSupervisor;->getComponentRestrictionForCallingPackage(Landroid/content/pm/ActivityInfo;Ljava/lang/String;Ljava/lang/String;IIZ)I
+PLcom/android/server/wm/ActivityTaskSupervisor;->findTaskToMoveToFront(Lcom/android/server/wm/Task;ILandroid/app/ActivityOptions;Ljava/lang/String;Z)V
PLcom/android/server/wm/ActivityTaskSupervisor;->getDeviceIdForDisplayId(I)I
-HSPLcom/android/server/wm/ActivityTaskSupervisor;->getKeyguardController()Lcom/android/server/wm/KeyguardController;
-PLcom/android/server/wm/ActivityTaskSupervisor;->getLaunchParamsController()Lcom/android/server/wm/LaunchParamsController;
-PLcom/android/server/wm/ActivityTaskSupervisor;->getNextTaskIdForUser()I
PLcom/android/server/wm/ActivityTaskSupervisor;->getNextTaskIdForUser(I)I
-PLcom/android/server/wm/ActivityTaskSupervisor;->getRunningTasks()Lcom/android/server/wm/RunningTasks;
-PLcom/android/server/wm/ActivityTaskSupervisor;->getSystemChooserActivity()Landroid/content/ComponentName;
-PLcom/android/server/wm/ActivityTaskSupervisor;->handleForcedResizableTaskIfNeeded(Lcom/android/server/wm/Task;I)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->handleNonResizableTaskIfNeeded(Lcom/android/server/wm/Task;ILcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->handleNonResizableTaskIfNeeded(Lcom/android/server/wm/Task;ILcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/Task;Z)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->handleTopResumedStateReleased(Z)V
-HPLcom/android/server/wm/ActivityTaskSupervisor;->inActivityVisibilityUpdate()Z
-HSPLcom/android/server/wm/ActivityTaskSupervisor;->initPowerManagement()V
-HSPLcom/android/server/wm/ActivityTaskSupervisor;->initialize()V
+PLcom/android/server/wm/ActivityTaskSupervisor;->goingToSleepLocked()V
+PLcom/android/server/wm/ActivityTaskSupervisor;->handleForcedResizableTaskIfNeeded(ILcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->handleNonResizableTaskIfNeeded(Lcom/android/server/wm/Task;Lcom/android/server/wm/TaskDisplayArea;Z)V
+HPLcom/android/server/wm/ActivityTaskSupervisor;->handleTopResumedStateReleased(Z)V
PLcom/android/server/wm/ActivityTaskSupervisor;->isCallerAllowedToLaunchOnDisplay(IIILandroid/content/pm/ActivityInfo;)Z
-PLcom/android/server/wm/ActivityTaskSupervisor;->isCallerAllowedToLaunchOnTaskDisplayArea(IILcom/android/server/wm/TaskDisplayArea;Landroid/content/pm/ActivityInfo;)Z
-HPLcom/android/server/wm/ActivityTaskSupervisor;->isRootVisibilityUpdateDeferred()Z
-PLcom/android/server/wm/ActivityTaskSupervisor;->lambda$activityIdleInternal$2()V
PLcom/android/server/wm/ActivityTaskSupervisor;->logIfTransactionTooLarge(Landroid/content/Intent;Landroid/os/Bundle;)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->nextTaskIdForUser(II)I
-PLcom/android/server/wm/ActivityTaskSupervisor;->onProcessActivityStateChanged(Lcom/android/server/wm/WindowProcessController;Z)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->onRecentTaskAdded(Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->onRecentTaskRemoved(Lcom/android/server/wm/Task;ZZ)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->onSystemReady()V
+HPLcom/android/server/wm/ActivityTaskSupervisor;->onProcessActivityStateChanged(Lcom/android/server/wm/WindowProcessController;Z)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/ActivityTaskSupervisor;->onUserUnlocked(I)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->processStoppingAndFinishingActivities(Lcom/android/server/wm/ActivityRecord;ZLjava/lang/String;)V
-HPLcom/android/server/wm/ActivityTaskSupervisor;->readyToResume()Z
+PLcom/android/server/wm/ActivityTaskSupervisor;->printThisActivity(Ljava/io/PrintWriter;Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;IZLjava/lang/String;Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda3;)Z
+HPLcom/android/server/wm/ActivityTaskSupervisor;->processStoppingAndFinishingActivities(Lcom/android/server/wm/ActivityRecord;ZLjava/lang/String;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/ActivityTaskSupervisor;->readyToResume()Z
HPLcom/android/server/wm/ActivityTaskSupervisor;->realStartActivityLocked(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/WindowProcessController;ZZ)Z
-HPLcom/android/server/wm/ActivityTaskSupervisor;->removeHistoryRecords(Lcom/android/server/wm/WindowProcessController;)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->removeHistoryRecords(Ljava/util/ArrayList;Lcom/android/server/wm/WindowProcessController;Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->removeHistoryRecords(Ljava/util/ArrayList;Lcom/android/server/wm/WindowProcessController;)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->removeTask(Lcom/android/server/wm/Task;ZZLjava/lang/String;IILjava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->removeTaskById(IIILjava/lang/String;ZZ)Z
PLcom/android/server/wm/ActivityTaskSupervisor;->reportActivityLaunched(ZLcom/android/server/wm/ActivityRecord;JI)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->reportResumedActivityLocked(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/ActivityTaskSupervisor;->reportWaitingActivityLaunchedIfNeeded(Lcom/android/server/wm/ActivityRecord;I)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->resolveActivity(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;ILandroid/app/ProfilerInfo;)Landroid/content/pm/ActivityInfo;
-PLcom/android/server/wm/ActivityTaskSupervisor;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;IIII)Landroid/content/pm/ResolveInfo;
-PLcom/android/server/wm/ActivityTaskSupervisor;->scheduleIdle()V
-PLcom/android/server/wm/ActivityTaskSupervisor;->scheduleIdleTimeout(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->scheduleProcessStoppingAndFinishingActivitiesIfNeeded()V
-PLcom/android/server/wm/ActivityTaskSupervisor;->scheduleStartHome(Ljava/lang/String;)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->scheduleTopResumedActivityStateIfNeeded()V
-PLcom/android/server/wm/ActivityTaskSupervisor;->scheduleTopResumedActivityStateLossIfNeeded()V
-PLcom/android/server/wm/ActivityTaskSupervisor;->scheduleTopResumedStateLossTimeout(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->setDeferRootVisibilityUpdate(Z)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->setLaunchSource(I)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->setNextTaskIdForUser(II)V
-HSPLcom/android/server/wm/ActivityTaskSupervisor;->setRecentTasks(Lcom/android/server/wm/RecentTasks;)V
+HPLcom/android/server/wm/ActivityTaskSupervisor;->resolveActivity(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;ILandroid/app/ProfilerInfo;)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/wm/ActivityTaskSupervisor;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;IIII)Landroid/content/pm/ResolveInfo;
+HPLcom/android/server/wm/ActivityTaskSupervisor;->scheduleIdle()V
+HPLcom/android/server/wm/ActivityTaskSupervisor;->scheduleProcessStoppingAndFinishingActivitiesIfNeeded()V
+HPLcom/android/server/wm/ActivityTaskSupervisor;->scheduleTopResumedActivityStateLossIfNeeded()V
HSPLcom/android/server/wm/ActivityTaskSupervisor;->setRunningTasks(Lcom/android/server/wm/RunningTasks;)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->startActivityFromRecents(IIILcom/android/server/wm/SafeActivityOptions;)I
PLcom/android/server/wm/ActivityTaskSupervisor;->startSpecificActivity(Lcom/android/server/wm/ActivityRecord;ZZ)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->stopWaitingForActivityVisible(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityTaskSupervisor;->updateHomeProcess(Lcom/android/server/wm/WindowProcessController;)V
-HPLcom/android/server/wm/ActivityTaskSupervisor;->updateTopResumedActivityIfNeeded(Ljava/lang/String;)V
-PLcom/android/server/wm/AnimatingActivityRegistry;-><init>()V
-PLcom/android/server/wm/AnimationAdapter;->shouldDeferAnimationFinish(Ljava/lang/Runnable;)Z
+PLcom/android/server/wm/ActivityTaskSupervisor;->updateHomeProcessIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityTaskSupervisor;->updateTopResumedActivityIfNeeded(Ljava/lang/String;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/ActivityTaskSupervisor;->wakeUp(ILjava/lang/String;)V
+PLcom/android/server/wm/AnimatingActivityRegistry;->endDeferringFinished()V
+PLcom/android/server/wm/AnimationAdapter;->dumpDebug(Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/wm/AnimationAdapter;->shouldDeferAnimationFinish()Z
PLcom/android/server/wm/AnrController;-><clinit>()V
PLcom/android/server/wm/AnrController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/AnrController;->onFocusChanged(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/AppCompatAspectRatioOverrides$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/AppCompatConfiguration;I)V
+HPLcom/android/server/wm/AppCompatAspectRatioOverrides$$ExternalSyntheticLambda0;->getAsBoolean()Z
+HPLcom/android/server/wm/AppCompatAspectRatioOverrides;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/AppCompatConfiguration;Lcom/android/server/wm/utils/OptPropFactory;Lcom/android/server/wm/AppCompatDeviceStateQuery;Lcom/android/server/wm/AppCompatReachabilityOverrides;)V
+HPLcom/android/server/wm/AppCompatAspectRatioOverrides;->getUserMinAspectRatioOverrideCode()I+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;
+HPLcom/android/server/wm/AppCompatAspectRatioOverrides;->hasFullscreenOverride()Z
+HPLcom/android/server/wm/AppCompatAspectRatioOverrides;->isSystemOverrideToFullscreenEnabled()Z
+HPLcom/android/server/wm/AppCompatAspectRatioOverrides;->shouldEnableUserAspectRatioSettings()Z
+HPLcom/android/server/wm/AppCompatAspectRatioPolicy;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/TransparentPolicy;Lcom/android/server/wm/AppCompatOverrides;)V
+HPLcom/android/server/wm/AppCompatAspectRatioPolicy;->applyAspectRatio(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;F)Z
+HPLcom/android/server/wm/AppCompatAspectRatioPolicy;->getMaxAspectRatio()F
+HPLcom/android/server/wm/AppCompatAspectRatioPolicy;->getMinAspectRatio()F
+PLcom/android/server/wm/AppCompatAspectRatioPolicy;->isLetterboxedForFixedOrientationAndAspectRatio()Z
+PLcom/android/server/wm/AppCompatCameraOverrides$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/AppCompatConfiguration;)V
+PLcom/android/server/wm/AppCompatCameraOverrides$$ExternalSyntheticLambda0;->getAsBoolean()Z
+HPLcom/android/server/wm/AppCompatCameraOverrides;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/AppCompatConfiguration;Lcom/android/server/wm/utils/OptPropFactory;)V
+PLcom/android/server/wm/AppCompatCameraPolicy;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/AppCompatCameraPolicy;->getAppCompatCameraPolicy(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/AppCompatCameraPolicy;
+HPLcom/android/server/wm/AppCompatCameraPolicy;->shouldCameraCompatControlOrientation(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/AppCompatCameraPolicy;->shouldOverrideMinAspectRatioForCamera(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/AppCompatConfiguration$$ExternalSyntheticLambda0;-><init>(Landroid/content/Context;I)V
+PLcom/android/server/wm/AppCompatConfiguration$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
+PLcom/android/server/wm/AppCompatConfiguration;-><init>(Landroid/content/Context;Lcom/android/server/wm/AppCompatConfigurationPersister;)V
+PLcom/android/server/wm/AppCompatConfiguration;->assertValidMultiplier(FLjava/lang/String;)V
+PLcom/android/server/wm/AppCompatConfiguration;->getLetterboxBackgroundColor()Landroid/graphics/Color;
+HPLcom/android/server/wm/AppCompatConfiguration;->getLetterboxBackgroundType()I
+PLcom/android/server/wm/AppCompatConfiguration;->isTranslucentLetterboxingEnabled()Z
+HPLcom/android/server/wm/AppCompatConfiguration;->isUserAppAspectRatioFullscreenEnabled()Z
+HPLcom/android/server/wm/AppCompatConfiguration;->isUserAppAspectRatioSettingsEnabled()Z
+PLcom/android/server/wm/AppCompatConfiguration;->readLetterboxHorizontalReachabilityPositionFromConfig(Landroid/content/Context;Z)I
+PLcom/android/server/wm/AppCompatConfiguration;->readLetterboxVerticalReachabilityPositionFromConfig(Landroid/content/Context;Z)I
+PLcom/android/server/wm/AppCompatConfiguration;->setLetterboxBookModePositionMultiplier(F)V
+PLcom/android/server/wm/AppCompatConfiguration;->setLetterboxTabletopModePositionMultiplier(F)V
+PLcom/android/server/wm/AppCompatConfigurationPersister;-><init>(Ljava/util/function/Supplier;Ljava/util/function/Supplier;Ljava/util/function/Supplier;Ljava/util/function/Supplier;Ljava/io/File;Lcom/android/server/wm/PersisterQueue;Ljava/util/function/Consumer;Ljava/lang/String;)V
+PLcom/android/server/wm/AppCompatConfigurationPersister;->useDefaultValue()V
+PLcom/android/server/wm/AppCompatController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/AppCompatController;Landroid/content/pm/PackageManager;)V
+HPLcom/android/server/wm/AppCompatController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/AppCompatDeviceStateQuery;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/AppCompatFocusOverrides$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/AppCompatConfiguration;)V
+PLcom/android/server/wm/AppCompatFocusOverrides$$ExternalSyntheticLambda0;->getAsBoolean()Z
+HPLcom/android/server/wm/AppCompatFocusOverrides;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/AppCompatConfiguration;Lcom/android/server/wm/utils/OptPropFactory;)V
+PLcom/android/server/wm/AppCompatLetterboxOverrides;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/AppCompatConfiguration;)V
+PLcom/android/server/wm/AppCompatLetterboxOverrides;->getLetterboxBackgroundColor()Landroid/graphics/Color;
+PLcom/android/server/wm/AppCompatLetterboxPolicy$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/AppCompatLetterboxPolicy;)V
+PLcom/android/server/wm/AppCompatLetterboxPolicy$LegacyLetterboxPolicyState;-><init>(Lcom/android/server/wm/AppCompatLetterboxPolicy;)V
+HPLcom/android/server/wm/AppCompatLetterboxPolicy$LegacyLetterboxPolicyState;->isRunning()Z
+HPLcom/android/server/wm/AppCompatLetterboxPolicy$LegacyLetterboxPolicyState;->updateLetterboxSurfaceIfNeeded(Lcom/android/server/wm/WindowState;Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/AppCompatLetterboxPolicy;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/AppCompatConfiguration;)V
+HPLcom/android/server/wm/AppCompatLetterboxPolicy;->isLetterboxedNotForDisplayCutout(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/AppCompatLetterboxPolicy;->shouldNotLayoutLetterbox(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/AppCompatLetterboxPolicy;->shouldShowLetterboxUi(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/AppCompatLetterboxPolicy;->start(Lcom/android/server/wm/WindowState;)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
+PLcom/android/server/wm/AppCompatOrientationOverrides$$ExternalSyntheticLambda2;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/wm/AppCompatOrientationOverrides$$ExternalSyntheticLambda2;->getAsBoolean()Z
+HPLcom/android/server/wm/AppCompatOrientationOverrides$OrientationOverridesState;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/AppCompatOrientationOverrides$$ExternalSyntheticLambda0;)V
+HPLcom/android/server/wm/AppCompatOrientationOverrides;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/AppCompatConfiguration;Lcom/android/server/wm/utils/OptPropFactory;)V
+PLcom/android/server/wm/AppCompatOrientationOverrides;->shouldIgnoreOrientationRequestLoop()Z
+PLcom/android/server/wm/AppCompatOrientationPolicy;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/AppCompatOverrides;)V
+HPLcom/android/server/wm/AppCompatOverrides;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/AppCompatConfiguration;Lcom/android/server/wm/utils/OptPropFactory;Lcom/android/server/wm/AppCompatDeviceStateQuery;)V
+HPLcom/android/server/wm/AppCompatReachabilityOverrides;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/AppCompatConfiguration;Lcom/android/server/wm/AppCompatDeviceStateQuery;)V
+PLcom/android/server/wm/AppCompatReachabilityPolicy;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/AppCompatConfiguration;)V
+PLcom/android/server/wm/AppCompatResizeOverrides;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/utils/OptPropFactory;)V
+PLcom/android/server/wm/AppCompatRoundedCorners;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/AppCompatLetterboxPolicy$$ExternalSyntheticLambda0;)V
+HPLcom/android/server/wm/AppCompatRoundedCorners;->getCropBoundsIfNeeded(Lcom/android/server/wm/WindowState;)Landroid/graphics/Rect;
+HPLcom/android/server/wm/AppCompatRoundedCorners;->getRoundedCornersRadius(Lcom/android/server/wm/WindowState;)I
+PLcom/android/server/wm/AppCompatSizeCompatModePolicy;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/AppCompatSizeCompatModePolicy;->hasSizeCompatBounds()Z
+HPLcom/android/server/wm/AppCompatSizeCompatModePolicy;->updateAppCompatDisplayInsets()V
+PLcom/android/server/wm/AppCompatUtils$1;-><init>(Ljava/util/function/BooleanSupplier;)V
+PLcom/android/server/wm/AppCompatUtils$1;->getAsBoolean()Z
+HPLcom/android/server/wm/AppCompatUtils;->isChangeEnabled(Lcom/android/server/wm/ActivityRecord;J)Z+]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;
PLcom/android/server/wm/AppSnapshotLoader;-><init>(Lcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;)V
-PLcom/android/server/wm/AppTransition$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/wm/AppTransition$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/wm/AppSnapshotLoader;->loadTask(IIZ)Landroid/window/TaskSnapshot;
+PLcom/android/server/wm/AppTaskImpl;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;II)V
+PLcom/android/server/wm/AppTaskImpl;->checkCallerOrSystemOrRoot()V
+PLcom/android/server/wm/AppTaskImpl;->finishAndRemoveTask()V
+PLcom/android/server/wm/AppTaskImpl;->getTaskInfo()Landroid/app/ActivityManager$RecentTaskInfo;
+PLcom/android/server/wm/AppTaskImpl;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/wm/AppTaskImpl;->setExcludeFromRecents(Z)V
+HPLcom/android/server/wm/AppTransition$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;Ljava/lang/Object;)Z
PLcom/android/server/wm/AppTransition$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/AppTransition;)V
PLcom/android/server/wm/AppTransition;-><clinit>()V
PLcom/android/server/wm/AppTransition;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/AppTransition;->clear()V
+PLcom/android/server/wm/AppTransition;->canOverridePendingAppTransition()Z
PLcom/android/server/wm/AppTransition;->clear(Z)V
PLcom/android/server/wm/AppTransition;->containsTransitRequest(I)Z
-PLcom/android/server/wm/AppTransition;->fetchAppTransitionSpecsFromFuture()V
PLcom/android/server/wm/AppTransition;->getFirstAppTransition()I
-PLcom/android/server/wm/AppTransition;->getKeyguardTransition()I
-PLcom/android/server/wm/AppTransition;->getRemoteAnimationController()Lcom/android/server/wm/RemoteAnimationController;
-PLcom/android/server/wm/AppTransition;->getTransitFlags()I
PLcom/android/server/wm/AppTransition;->goodToGo(ILcom/android/server/wm/ActivityRecord;)I
-PLcom/android/server/wm/AppTransition;->isFetchingAppTransitionsSpecs()Z
-PLcom/android/server/wm/AppTransition;->isKeyguardGoingAwayTransitOld(I)Z
-PLcom/android/server/wm/AppTransition;->isKeyguardTransit(I)Z
-PLcom/android/server/wm/AppTransition;->isNormalTransit(I)Z
HPLcom/android/server/wm/AppTransition;->isReady()Z
-HPLcom/android/server/wm/AppTransition;->isRunning()Z
-PLcom/android/server/wm/AppTransition;->isTaskOpenTransitOld(I)Z
-PLcom/android/server/wm/AppTransition;->isTimeout()Z
HPLcom/android/server/wm/AppTransition;->isTransitionSet()Z
-PLcom/android/server/wm/AppTransition;->loadAnimationAttr(Landroid/view/WindowManager$LayoutParams;II)Landroid/view/animation/Animation;
-PLcom/android/server/wm/AppTransition;->needsBoosting()Z
PLcom/android/server/wm/AppTransition;->notifyAppTransitionFinishedLocked(Landroid/os/IBinder;)V
-PLcom/android/server/wm/AppTransition;->notifyAppTransitionPendingLocked()V
-PLcom/android/server/wm/AppTransition;->notifyAppTransitionStartingLocked(JJ)I
+PLcom/android/server/wm/AppTransition;->overridePendingAppTransition(Ljava/lang/String;IIILandroid/os/IRemoteCallback;Landroid/os/IRemoteCallback;Z)V
PLcom/android/server/wm/AppTransition;->postAnimationCallback()V
PLcom/android/server/wm/AppTransition;->prepare()Z
-PLcom/android/server/wm/AppTransition;->prepareAppTransition(II)Z
-PLcom/android/server/wm/AppTransition;->registerListenerLocked(Lcom/android/server/wm/WindowManagerInternal$AppTransitionListener;)V
-PLcom/android/server/wm/AppTransition;->removeAppTransitionTimeoutCallbacks()V
-PLcom/android/server/wm/AppTransition;->setAppTransitionState(I)V
-PLcom/android/server/wm/AppTransition;->setIdle()V
PLcom/android/server/wm/AppTransition;->setLastAppTransition(ILcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/AppTransition;->setReady()V
PLcom/android/server/wm/AppTransition;->updateBooster()V
-PLcom/android/server/wm/AppTransitionController$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/wm/AppTransitionController$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/wm/AppTransitionController$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/AppTransitionController$$ExternalSyntheticLambda2;-><init>(ILandroid/util/ArraySet;)V
-PLcom/android/server/wm/AppTransitionController$$ExternalSyntheticLambda3;-><init>()V
-PLcom/android/server/wm/AppTransitionController$$ExternalSyntheticLambda4;-><init>()V
+PLcom/android/server/wm/AppTransitionController$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/wm/AppTransitionController$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/AppTransitionController$$ExternalSyntheticLambda1;-><init>(ILandroid/util/ArraySet;)V
+PLcom/android/server/wm/AppTransitionController$$ExternalSyntheticLambda2;-><init>(I)V
PLcom/android/server/wm/AppTransitionController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
PLcom/android/server/wm/AppTransitionController;->applyAnimations(Landroid/util/ArraySet;Landroid/util/ArraySet;ILandroid/view/WindowManager$LayoutParams;Z)V
-PLcom/android/server/wm/AppTransitionController;->canBeWallpaperTarget(Landroid/util/ArraySet;)Z
-PLcom/android/server/wm/AppTransitionController;->collectActivityTypes(Landroid/util/ArraySet;Landroid/util/ArraySet;Landroid/util/ArraySet;)Landroid/util/ArraySet;
-PLcom/android/server/wm/AppTransitionController;->containsVoiceInteraction(Landroid/util/ArraySet;)Z
-PLcom/android/server/wm/AppTransitionController;->findAnimLayoutParamsToken(ILandroid/util/ArraySet;Landroid/util/ArraySet;Landroid/util/ArraySet;Landroid/util/ArraySet;)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/AppTransitionController;->getAnimLp(Lcom/android/server/wm/ActivityRecord;)Landroid/view/WindowManager$LayoutParams;
PLcom/android/server/wm/AppTransitionController;->getAnimationTargets(Landroid/util/ArraySet;Landroid/util/ArraySet;Z)Landroid/util/ArraySet;
-PLcom/android/server/wm/AppTransitionController;->getOldWallpaper()Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/AppTransitionController;->getRemoteAnimationOverride(Lcom/android/server/wm/WindowContainer;ILandroid/util/ArraySet;)Landroid/view/RemoteAnimationAdapter;
PLcom/android/server/wm/AppTransitionController;->getTopApp(Landroid/util/ArraySet;Z)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/AppTransitionController;->getTransitCompatType(Lcom/android/server/wm/AppTransition;Landroid/util/ArraySet;Landroid/util/ArraySet;Landroid/util/ArraySet;Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;Z)I
PLcom/android/server/wm/AppTransitionController;->getTransitContainerType(Lcom/android/server/wm/WindowContainer;)I
-HPLcom/android/server/wm/AppTransitionController;->handleAppTransitionReady()V
-PLcom/android/server/wm/AppTransitionController;->handleChangingApps(I)V
PLcom/android/server/wm/AppTransitionController;->handleClosingApps()V
-PLcom/android/server/wm/AppTransitionController;->handleClosingChangingContainers()V
PLcom/android/server/wm/AppTransitionController;->handleOpeningApps()V
PLcom/android/server/wm/AppTransitionController;->lookForHighestTokenWithFilter(Landroid/util/ArraySet;Landroid/util/ArraySet;Landroid/util/ArraySet;Ljava/util/function/Predicate;)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/AppTransitionController;->overrideWithRemoteAnimationIfSet(Lcom/android/server/wm/ActivityRecord;ILandroid/util/ArraySet;)V
-PLcom/android/server/wm/AppTransitionController;->overrideWithTaskFragmentRemoteAnimation(ILandroid/util/ArraySet;)Z
-PLcom/android/server/wm/AppTransitionController;->transitionContainsTaskFragmentWithBoundsOverride()Z
PLcom/android/server/wm/AppTransitionController;->transitionGoodToGo(Landroid/util/ArraySet;Landroid/util/ArrayMap;)Z
-PLcom/android/server/wm/AppTransitionController;->transitionGoodToGoForTaskFragments()Z
-PLcom/android/server/wm/AppTransitionController;->transitionMayContainNonAppWindows(I)Z
-PLcom/android/server/wm/AppTransitionController;->unfreezeEmbeddedChangingWindows()V
-PLcom/android/server/wm/AppWarnings$$ExternalSyntheticLambda0;-><init>()V
PLcom/android/server/wm/AppWarnings$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
HSPLcom/android/server/wm/AppWarnings$UiHandler;-><init>(Lcom/android/server/wm/AppWarnings;Landroid/os/Looper;)V
PLcom/android/server/wm/AppWarnings$UiHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/wm/AppWarnings$UiHandler;->hideUnsupportedDisplaySizeDialog()V
HSPLcom/android/server/wm/AppWarnings$WriteConfigTask;-><init>(Lcom/android/server/wm/AppWarnings;)V
-HSPLcom/android/server/wm/AppWarnings$WriteConfigTask;-><init>(Lcom/android/server/wm/AppWarnings;Lcom/android/server/wm/AppWarnings$WriteConfigTask-IA;)V
-PLcom/android/server/wm/AppWarnings;->$r8$lambda$H4JMXMIkLrrC65qIRbXEOcg8UtQ(Ljava/lang/String;)Z
-PLcom/android/server/wm/AppWarnings;->-$$Nest$mhideUnsupportedDisplaySizeDialogUiThread(Lcom/android/server/wm/AppWarnings;)V
-HSPLcom/android/server/wm/AppWarnings;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/content/Context;Landroid/os/Handler;Landroid/os/Handler;Ljava/io/File;)V
-PLcom/android/server/wm/AppWarnings;->hideUnsupportedDisplaySizeDialogUiThread()V
-PLcom/android/server/wm/AppWarnings;->lambda$showDeprecatedAbiDialogIfNeeded$0(Ljava/lang/String;)Z
-PLcom/android/server/wm/AppWarnings;->onDensityChanged()V
-PLcom/android/server/wm/AppWarnings;->onStartActivity(Lcom/android/server/wm/ActivityRecord;)V
-HSPLcom/android/server/wm/AppWarnings;->readConfigFromFileAmsThread()V
-PLcom/android/server/wm/AppWarnings;->showDeprecatedAbiDialogIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/AppWarnings;->showDeprecatedTargetDialogIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/AppWarnings;->showUnsupportedCompileSdkDialogIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/AppWarnings;-><init>(Landroid/os/Handler;Lcom/android/server/wm/ActivityTaskManagerService;Ljava/io/File;)V
+HPLcom/android/server/wm/AppWarnings;->onStartActivity(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/AppWarnings;->onSystemReady()V
PLcom/android/server/wm/AppWarnings;->showUnsupportedDisplaySizeDialogIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
PLcom/android/server/wm/BLASTSyncEngine$SyncGroup$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup$1CommitCallback;)V
-PLcom/android/server/wm/BLASTSyncEngine$SyncGroup$$ExternalSyntheticLambda0;->onTransactionCommitted()V
+HPLcom/android/server/wm/BLASTSyncEngine$SyncGroup$$ExternalSyntheticLambda0;->onTransactionCommitted()V
PLcom/android/server/wm/BLASTSyncEngine$SyncGroup$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)V
-PLcom/android/server/wm/BLASTSyncEngine$SyncGroup$1CommitCallback;-><init>(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;Landroid/util/ArraySet;Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/BLASTSyncEngine$SyncGroup$1CommitCallback;->onCommitted(Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->$r8$lambda$BHN96tvxB7fo1aLu6vPwwYkPzqU(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup$1CommitCallback;)V
-PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->-$$Nest$maddToSync(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->-$$Nest$msetReady(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;Z)Z
-PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->-$$Nest$mtryFinish(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)Z
+PLcom/android/server/wm/BLASTSyncEngine$SyncGroup$$ExternalSyntheticLambda2;->run()V
+HPLcom/android/server/wm/BLASTSyncEngine$SyncGroup$1CommitCallback;-><init>(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;Landroid/util/ArraySet;ILjava/lang/String;JLandroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/BLASTSyncEngine$SyncGroup$1CommitCallback;->onCommitted(Landroid/view/SurfaceControl$Transaction;)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowState;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;
PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;-><clinit>()V
-PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;-><init>(Lcom/android/server/wm/BLASTSyncEngine;Lcom/android/server/wm/BLASTSyncEngine$TransactionReadyListener;ILjava/lang/String;)V
-PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;-><init>(Lcom/android/server/wm/BLASTSyncEngine;Lcom/android/server/wm/BLASTSyncEngine$TransactionReadyListener;ILjava/lang/String;Lcom/android/server/wm/BLASTSyncEngine$SyncGroup-IA;)V
-PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->addToSync(Lcom/android/server/wm/WindowContainer;)V
-HPLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->finishNow()V
+HPLcom/android/server/wm/BLASTSyncEngine$SyncGroup;-><init>(Lcom/android/server/wm/BLASTSyncEngine;Lcom/android/server/wm/BLASTSyncEngine$TransactionReadyListener;ILjava/lang/String;)V
+HPLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->finishNow()V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/BLASTSyncEngine$TransactionReadyListener;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/lang/Runnable;Lcom/android/server/wm/TransitionController$$ExternalSyntheticLambda3;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda25;
PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->isIgnoring(Lcom/android/server/wm/WindowContainer;)Z
-PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->lambda$finishNow$1(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup$1CommitCallback;)V
-PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->setReady(Z)Z
-PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->tryFinish()Z
-PLcom/android/server/wm/BLASTSyncEngine;->-$$Nest$fgetmActiveSyncs(Lcom/android/server/wm/BLASTSyncEngine;)Ljava/util/ArrayList;
-PLcom/android/server/wm/BLASTSyncEngine;->-$$Nest$fgetmHandler(Lcom/android/server/wm/BLASTSyncEngine;)Landroid/os/Handler;
-PLcom/android/server/wm/BLASTSyncEngine;->-$$Nest$fgetmOnIdleListeners(Lcom/android/server/wm/BLASTSyncEngine;)Ljava/util/ArrayList;
-PLcom/android/server/wm/BLASTSyncEngine;->-$$Nest$fgetmPendingSyncSets(Lcom/android/server/wm/BLASTSyncEngine;)Ljava/util/ArrayList;
-PLcom/android/server/wm/BLASTSyncEngine;->-$$Nest$fgetmWm(Lcom/android/server/wm/BLASTSyncEngine;)Lcom/android/server/wm/WindowManagerService;
-PLcom/android/server/wm/BLASTSyncEngine;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->onTimeout()V
PLcom/android/server/wm/BLASTSyncEngine;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/Handler;)V
-PLcom/android/server/wm/BLASTSyncEngine;->addOnIdleListener(Ljava/lang/Runnable;)V
-PLcom/android/server/wm/BLASTSyncEngine;->addToSyncSet(ILcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/BLASTSyncEngine;->getSyncGroup(I)Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;
-PLcom/android/server/wm/BLASTSyncEngine;->getSyncSet(I)Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;
+HPLcom/android/server/wm/BLASTSyncEngine;->addToSyncSet(ILcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/BLASTSyncEngine;->getSyncGroup(I)Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;
+HPLcom/android/server/wm/BLASTSyncEngine;->getSyncSet(I)Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/BLASTSyncEngine;->hasActiveSync()Z
-HPLcom/android/server/wm/BLASTSyncEngine;->onSurfacePlacement()V
-PLcom/android/server/wm/BLASTSyncEngine;->prepareSyncSet(Lcom/android/server/wm/BLASTSyncEngine$TransactionReadyListener;Ljava/lang/String;)Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;
+HPLcom/android/server/wm/BLASTSyncEngine;->onSurfacePlacement()V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/BLASTSyncEngine;->removeFromDependencies(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)V
PLcom/android/server/wm/BLASTSyncEngine;->scheduleTimeout(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;J)V
-PLcom/android/server/wm/BLASTSyncEngine;->setReady(IZ)Z
-PLcom/android/server/wm/BLASTSyncEngine;->setSyncMethod(II)V
-PLcom/android/server/wm/BLASTSyncEngine;->startSyncSet(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;JZ)V
-PLcom/android/server/wm/BLASTSyncEngine;->startSyncSet(Lcom/android/server/wm/BLASTSyncEngine$TransactionReadyListener;JLjava/lang/String;Z)I
-PLcom/android/server/wm/BackNavigationController$AnimationHandler;->-$$Nest$fgetmComposed(Lcom/android/server/wm/BackNavigationController$AnimationHandler;)Z
+HPLcom/android/server/wm/BLASTSyncEngine;->setReady(IZ)Z
+HPLcom/android/server/wm/BLASTSyncEngine;->setSyncMethod(II)V
+HPLcom/android/server/wm/BLASTSyncEngine;->startSyncSet(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;JZ)V
+PLcom/android/server/wm/BackNavigationController$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/wm/BackNavigationController;)V
+PLcom/android/server/wm/BackNavigationController$$ExternalSyntheticLambda5;->onResult(Landroid/os/Bundle;)V
+PLcom/android/server/wm/BackNavigationController$$ExternalSyntheticLambda6;-><init>(I)V
+PLcom/android/server/wm/BackNavigationController$$ExternalSyntheticLambda6;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/BackNavigationController$$ExternalSyntheticLambda7;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/BackNavigationController$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/wm/BackNavigationController;I)V
+PLcom/android/server/wm/BackNavigationController$$ExternalSyntheticLambda8;->onResult(Landroid/os/Bundle;)V
+PLcom/android/server/wm/BackNavigationController$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/wm/BackNavigationController;)V
+PLcom/android/server/wm/BackNavigationController$$ExternalSyntheticLambda9;->run()V
+PLcom/android/server/wm/BackNavigationController$AnimationHandler$BackWindowAnimationAdaptor;-><init>(ILcom/android/server/wm/WindowContainer;Z)V
+PLcom/android/server/wm/BackNavigationController$AnimationHandler$BackWindowAnimationAdaptor;->getShowWallpaper()Z
+PLcom/android/server/wm/BackNavigationController$AnimationHandler$BackWindowAnimationAdaptor;->getTopTask()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/BackNavigationController$AnimationHandler$BackWindowAnimationAdaptor;->onAnimationCancelled(Landroid/view/SurfaceControl;)V
+PLcom/android/server/wm/BackNavigationController$AnimationHandler$BackWindowAnimationAdaptor;->startAnimation(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;ILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+PLcom/android/server/wm/BackNavigationController$AnimationHandler$BackWindowAnimationAdaptorWrapper;-><init>(ILandroid/view/SurfaceControl$Transaction;[Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/BackNavigationController$AnimationHandler$BackWindowAnimationAdaptorWrapper;->cleanUpWindowlessSurface(Z)V
+PLcom/android/server/wm/BackNavigationController$AnimationHandler$ScheduleAnimationBuilder$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/BackNavigationController$AnimationHandler$ScheduleAnimationBuilder;[Landroid/view/RemoteAnimationTarget;Lcom/android/server/wm/BackNavigationController$AnimationHandler$ScheduleAnimationBuilder$1;)V
+PLcom/android/server/wm/BackNavigationController$AnimationHandler$ScheduleAnimationBuilder$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/wm/BackNavigationController$AnimationHandler$ScheduleAnimationBuilder$1;-><init>(Lcom/android/server/wm/BackNavigationController$AnimationHandler$ScheduleAnimationBuilder;)V
+PLcom/android/server/wm/BackNavigationController$AnimationHandler$ScheduleAnimationBuilder$1;->onAnimationFinished(Z)V
+PLcom/android/server/wm/BackNavigationController$AnimationHandler$ScheduleAnimationBuilder;-><init>(Lcom/android/server/wm/BackNavigationController$AnimationHandler;Landroid/window/BackAnimationAdapter;Lcom/android/server/wm/BackNavigationController$NavigationMonitor;)V
PLcom/android/server/wm/BackNavigationController$AnimationHandler;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/BackNavigationController$NavigationMonitor;->-$$Nest$monFocusWindowChanged(Lcom/android/server/wm/BackNavigationController$NavigationMonitor;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/BackNavigationController$AnimationHandler;->clearBackAnimateTarget(Z)V
+PLcom/android/server/wm/BackNavigationController$AnimationHandler;->containTarget(Ljava/util/ArrayList;Z)Z
+PLcom/android/server/wm/BackNavigationController$AnimationHandler;->createAdaptor(Lcom/android/server/wm/WindowContainer;ZILandroid/view/SurfaceControl$Transaction;)Lcom/android/server/wm/BackNavigationController$AnimationHandler$BackWindowAnimationAdaptor;
+PLcom/android/server/wm/BackNavigationController$AnimationHandler;->hasTargetDetached()Z
+PLcom/android/server/wm/BackNavigationController$AnimationHandler;->isAnimateTarget(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowContainer;I)Z
+PLcom/android/server/wm/BackNavigationController$AnimationHandler;->isTarget(Lcom/android/server/wm/WindowContainer;Z)Z
+PLcom/android/server/wm/BackNavigationController$AnimationHandler;->markStartingSurfaceMatch(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/BackNavigationController$AnimationHandler;->prepareAnimation(ILandroid/window/BackAnimationAdapter;Lcom/android/server/wm/BackNavigationController$NavigationMonitor;Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;Ljava/util/ArrayList;Lcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/BackNavigationController$AnimationHandler$ScheduleAnimationBuilder;
+PLcom/android/server/wm/BackNavigationController$AnimationHandler;->toString()Ljava/lang/String;
HSPLcom/android/server/wm/BackNavigationController$NavigationMonitor;-><init>(Lcom/android/server/wm/BackNavigationController;)V
-HSPLcom/android/server/wm/BackNavigationController$NavigationMonitor;-><init>(Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController$NavigationMonitor-IA;)V
-PLcom/android/server/wm/BackNavigationController$NavigationMonitor;->atSameDisplay(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/BackNavigationController$NavigationMonitor;->cancelBackNavigating(Ljava/lang/String;)V
+PLcom/android/server/wm/BackNavigationController$NavigationMonitor;->isMonitorAnimationOrTransition()Z
PLcom/android/server/wm/BackNavigationController$NavigationMonitor;->isMonitorForRemote()Z
-PLcom/android/server/wm/BackNavigationController$NavigationMonitor;->onFocusWindowChanged(Lcom/android/server/wm/WindowState;)V
HSPLcom/android/server/wm/BackNavigationController;-><clinit>()V
HSPLcom/android/server/wm/BackNavigationController;-><init>()V
-PLcom/android/server/wm/BackNavigationController;->checkAnimationReady(Lcom/android/server/wm/WallpaperController;)V
-PLcom/android/server/wm/BackNavigationController;->isMonitorTransitionTarget(Lcom/android/server/wm/WindowContainer;)Z
-PLcom/android/server/wm/BackNavigationController;->isMonitoringTransition()Z
-PLcom/android/server/wm/BackNavigationController;->isWaitBackTransition()Z
-PLcom/android/server/wm/BackNavigationController;->isWallpaperVisible(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/BackNavigationController;->onFocusChanged(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/BackNavigationController;->onTransactionReady(Lcom/android/server/wm/Transition;Ljava/util/ArrayList;Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/BackNavigationController;->onTransitionFinish(Ljava/util/ArrayList;Lcom/android/server/wm/Transition;)Z
-PLcom/android/server/wm/BackNavigationController;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/BackgroundActivityStartController$BalState;->-$$Nest$fgetmCallerApp(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Lcom/android/server/wm/WindowProcessController;
-PLcom/android/server/wm/BackgroundActivityStartController$BalState;->-$$Nest$fgetmCallingPackage(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Ljava/lang/String;
-PLcom/android/server/wm/BackgroundActivityStartController$BalState;->-$$Nest$fgetmCallingPid(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)I
-PLcom/android/server/wm/BackgroundActivityStartController$BalState;->-$$Nest$fgetmCallingUid(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)I
-PLcom/android/server/wm/BackgroundActivityStartController$BalState;->-$$Nest$fgetmIntent(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Landroid/content/Intent;
-PLcom/android/server/wm/BackgroundActivityStartController$BalState;->-$$Nest$fgetmRealCallingUid(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)I
-PLcom/android/server/wm/BackgroundActivityStartController$BalState;->-$$Nest$fgetmResultForCaller(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;
-PLcom/android/server/wm/BackgroundActivityStartController$BalState;->-$$Nest$mcallerIsRealCaller(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Z
-PLcom/android/server/wm/BackgroundActivityStartController$BalState;->-$$Nest$mhasRealCaller(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Z
-PLcom/android/server/wm/BackgroundActivityStartController$BalState;->-$$Nest$misPendingIntent(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Z
-HPLcom/android/server/wm/BackgroundActivityStartController$BalState;-><init>(Lcom/android/server/wm/BackgroundActivityStartController;IILjava/lang/String;IILcom/android/server/wm/WindowProcessController;Lcom/android/server/am/PendingIntentRecord;Landroid/app/BackgroundStartPrivileges;Lcom/android/server/wm/ActivityRecord;Landroid/content/Intent;Landroid/app/ActivityOptions;)V
-PLcom/android/server/wm/BackgroundActivityStartController$BalState;-><init>(Lcom/android/server/wm/BackgroundActivityStartController;IILjava/lang/String;IILcom/android/server/wm/WindowProcessController;Lcom/android/server/am/PendingIntentRecord;Landroid/app/BackgroundStartPrivileges;Lcom/android/server/wm/ActivityRecord;Landroid/content/Intent;Landroid/app/ActivityOptions;Lcom/android/server/wm/BackgroundActivityStartController$BalState-IA;)V
-PLcom/android/server/wm/BackgroundActivityStartController$BalState;->callerExplicitOptInOrAutoOptIn()Z
-PLcom/android/server/wm/BackgroundActivityStartController$BalState;->callerIsRealCaller()Z
-PLcom/android/server/wm/BackgroundActivityStartController$BalState;->hasRealCaller()Z
+PLcom/android/server/wm/BackNavigationController;->addPreviousAdjacentActivityIfExist(Lcom/android/server/wm/ActivityRecord;Ljava/util/ArrayList;)V
+PLcom/android/server/wm/BackNavigationController;->cancelPendingAnimation()V
+PLcom/android/server/wm/BackNavigationController;->clearBackAnimations(Z)V
+PLcom/android/server/wm/BackNavigationController;->dumpDebug(Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/wm/BackNavigationController;->getAnimatablePrevActivities(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;Ljava/util/ArrayList;)Z
+PLcom/android/server/wm/BackNavigationController;->hasTranslucentActivity(Lcom/android/server/wm/ActivityRecord;Ljava/util/ArrayList;)Z
+PLcom/android/server/wm/BackNavigationController;->isCustomizeExitAnimation(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/BackNavigationController;->isMonitoringFinishTransition()Z
+PLcom/android/server/wm/BackNavigationController;->onBackNavigationDone(ILandroid/os/Bundle;)V
+PLcom/android/server/wm/BackNavigationController;->restoreBackNavigation()Z
+PLcom/android/server/wm/BackNavigationController;->restoreLaunchBehind(Lcom/android/server/wm/ActivityRecord;ZZ)V
+HPLcom/android/server/wm/BackNavigationController;->scheduleAnimation(Lcom/android/server/wm/BackNavigationController$AnimationHandler$ScheduleAnimationBuilder;)V
+PLcom/android/server/wm/BackNavigationController;->setLaunchBehind([Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/BackNavigationController;->startAnimation()V
+HPLcom/android/server/wm/BackNavigationController;->startBackNavigation(Landroid/os/RemoteCallback;Landroid/window/BackAnimationAdapter;)Landroid/window/BackNavigationInfo;
+PLcom/android/server/wm/BackgroundActivityStartController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/BackgroundActivityStartController;ILandroid/os/IBinder;)V
+PLcom/android/server/wm/BackgroundActivityStartController$$ExternalSyntheticLambda2;->binderDied()V
+PLcom/android/server/wm/BackgroundActivityStartController$$ExternalSyntheticLambda3;-><init>(III)V
+PLcom/android/server/wm/BackgroundActivityStartController$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/BackgroundActivityStartController$BalState;-><init>(Lcom/android/server/wm/BackgroundActivityStartController;IILjava/lang/String;IILcom/android/server/wm/WindowProcessController;Lcom/android/server/am/PendingIntentRecord;ZLcom/android/server/wm/ActivityRecord;Landroid/content/Intent;Landroid/app/ActivityOptions;)V
+PLcom/android/server/wm/BackgroundActivityStartController$BalState;->getDebugPackageName(ILjava/lang/String;)Ljava/lang/String;
PLcom/android/server/wm/BackgroundActivityStartController$BalState;->isPendingIntent()Z
-PLcom/android/server/wm/BackgroundActivityStartController$BalState;->setResultForCaller(Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;)V
-PLcom/android/server/wm/BackgroundActivityStartController$BalState;->setResultForRealCaller(Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;)V
+PLcom/android/server/wm/BackgroundActivityStartController$BalState;->toString()Ljava/lang/String;
PLcom/android/server/wm/BackgroundActivityStartController$BalVerdict;-><clinit>()V
-HPLcom/android/server/wm/BackgroundActivityStartController$BalVerdict;-><init>(IZLjava/lang/String;)V
-HPLcom/android/server/wm/BackgroundActivityStartController$BalVerdict;->allows()Z
-HPLcom/android/server/wm/BackgroundActivityStartController$BalVerdict;->blocks()Z
-PLcom/android/server/wm/BackgroundActivityStartController$BalVerdict;->getCode()I
+PLcom/android/server/wm/BackgroundActivityStartController$BalVerdict;-><init>(ILjava/lang/String;)V
+PLcom/android/server/wm/BackgroundActivityStartController$BalVerdict;->allows()Z
+PLcom/android/server/wm/BackgroundActivityStartController$BalVerdict;->blocks()Z
+PLcom/android/server/wm/BackgroundActivityStartController$BalVerdict;->setBasedOnRealCaller()Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;
PLcom/android/server/wm/BackgroundActivityStartController$BalVerdict;->toString()Ljava/lang/String;
-PLcom/android/server/wm/BackgroundActivityStartController;->-$$Nest$fgetmService(Lcom/android/server/wm/BackgroundActivityStartController;)Lcom/android/server/wm/ActivityTaskManagerService;
+PLcom/android/server/wm/BackgroundActivityStartController$FinishedActivityEntry$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/BackgroundActivityStartController$FinishedActivityEntry;I)V
+PLcom/android/server/wm/BackgroundActivityStartController$FinishedActivityEntry$$ExternalSyntheticLambda0;->run()V
+HPLcom/android/server/wm/BackgroundActivityStartController$FinishedActivityEntry;-><init>(Lcom/android/server/wm/BackgroundActivityStartController;Lcom/android/server/wm/ActivityRecord;)V
HSPLcom/android/server/wm/BackgroundActivityStartController;-><clinit>()V
HSPLcom/android/server/wm/BackgroundActivityStartController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskSupervisor;)V
-PLcom/android/server/wm/BackgroundActivityStartController;->allowBasedOnCaller(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;
+PLcom/android/server/wm/BackgroundActivityStartController;->abortLaunch(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)V
PLcom/android/server/wm/BackgroundActivityStartController;->balCodeToString(I)Ljava/lang/String;
-PLcom/android/server/wm/BackgroundActivityStartController;->checkActivityAllowedToStart(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;ZZLcom/android/server/wm/Task;IIII)Z
-PLcom/android/server/wm/BackgroundActivityStartController;->checkBackgroundActivityStart(IILjava/lang/String;IILcom/android/server/wm/WindowProcessController;Lcom/android/server/am/PendingIntentRecord;Landroid/app/BackgroundStartPrivileges;Lcom/android/server/wm/ActivityRecord;Landroid/content/Intent;Landroid/app/ActivityOptions;)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;
+PLcom/android/server/wm/BackgroundActivityStartController;->balStartModeToString(I)Ljava/lang/String;
+PLcom/android/server/wm/BackgroundActivityStartController;->checkActivityAllowedToClearTask(Lcom/android/server/wm/Task;IILjava/lang/String;)V
+HPLcom/android/server/wm/BackgroundActivityStartController;->checkBackgroundActivityStart(IILjava/lang/String;IILcom/android/server/wm/WindowProcessController;Lcom/android/server/am/PendingIntentRecord;ZLcom/android/server/wm/ActivityRecord;Landroid/content/Intent;Landroid/app/ActivityOptions;)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;
PLcom/android/server/wm/BackgroundActivityStartController;->checkBackgroundActivityStartAllowedByCaller(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;
+PLcom/android/server/wm/BackgroundActivityStartController;->checkBackgroundActivityStartAllowedByCallerInBackground(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;
+PLcom/android/server/wm/BackgroundActivityStartController;->checkBackgroundActivityStartAllowedByCallerInForeground(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;
+PLcom/android/server/wm/BackgroundActivityStartController;->checkCrossUidActivitySwitchFromBelow(Lcom/android/server/wm/ActivityRecord;ILcom/android/server/wm/BackgroundActivityStartController$BlockActivityStart;)Lcom/android/server/wm/BackgroundActivityStartController$BlockActivityStart;
+PLcom/android/server/wm/BackgroundActivityStartController;->checkProcessAllowsBal(Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/BackgroundActivityStartController$BalState;Lcom/android/server/wm/BackgroundLaunchProcessController$BalCheckConfiguration;)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;
+PLcom/android/server/wm/BackgroundActivityStartController;->checkTopActivityForAsm(Lcom/android/server/wm/Task;ILcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/BackgroundActivityStartController$BlockActivityStart;)Lcom/android/server/wm/BackgroundActivityStartController$BlockActivityStart;
+HPLcom/android/server/wm/BackgroundActivityStartController;->getDebugStringForActivityRecord(Lcom/android/server/wm/ActivityRecord;)Ljava/lang/String;
+PLcom/android/server/wm/BackgroundActivityStartController;->getTargetSdk(Ljava/lang/String;)I
+PLcom/android/server/wm/BackgroundActivityStartController;->hasBalPermission(II)Z
PLcom/android/server/wm/BackgroundActivityStartController;->isHomeApp(ILjava/lang/String;)Z
-PLcom/android/server/wm/BackgroundActivityStartController;->onNewActivityLaunched(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/BackgroundActivityStartController;->statsLog(Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;
-HPLcom/android/server/wm/BackgroundLaunchProcessController;-><init>(Ljava/util/function/IntPredicate;Lcom/android/server/wm/BackgroundActivityStartCallback;)V
-HPLcom/android/server/wm/BackgroundLaunchProcessController;->addBoundClientUid(ILjava/lang/String;J)V
-HPLcom/android/server/wm/BackgroundLaunchProcessController;->addOrUpdateAllowBackgroundStartPrivileges(Landroid/os/Binder;Landroid/app/BackgroundStartPrivileges;)V
-HPLcom/android/server/wm/BackgroundLaunchProcessController;->areBackgroundActivityStartsAllowed(IILjava/lang/String;IZZZJJJ)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;
-HPLcom/android/server/wm/BackgroundLaunchProcessController;->clearBalOptInBoundClientUids()V
-HPLcom/android/server/wm/BackgroundLaunchProcessController;->isBackgroundStartAllowedByToken(ILjava/lang/String;Z)Z
-HPLcom/android/server/wm/BackgroundLaunchProcessController;->isBoundByForegroundUid()Z
-HPLcom/android/server/wm/BackgroundLaunchProcessController;->removeAllowBackgroundStartPrivileges(Landroid/os/Binder;)V
-PLcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;-><init>(Lcom/android/server/wm/BaseAppSnapshotPersister$DirectoryResolver;Ljava/lang/String;ZFZ)V
+PLcom/android/server/wm/BackgroundActivityStartController;->logIfOnlyAllowedBy(Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;Lcom/android/server/wm/BackgroundActivityStartController$BalState;I)V
+HPLcom/android/server/wm/BackgroundActivityStartController;->onActivityRequestedFinishing(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/BackgroundActivityStartController;->removeStrictModeCallback(ILandroid/os/IBinder;)V
+PLcom/android/server/wm/BackgroundActivityStartController;->shouldLogIntentActivity(Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Z
+PLcom/android/server/wm/BackgroundActivityStartController;->shouldLogStats(Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Z
+HPLcom/android/server/wm/BackgroundActivityStartController;->statsLog(Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;Lcom/android/server/wm/BackgroundActivityStartController$BalState;)V
+PLcom/android/server/wm/BackgroundActivityStartController;->strictModeLaunchAborted(ILjava/lang/String;)V
+HPLcom/android/server/wm/BackgroundActivityStartController;->writeBalAllowedLog(Ljava/lang/String;ILcom/android/server/wm/BackgroundActivityStartController$BalState;)V
+HPLcom/android/server/wm/BackgroundActivityStartController;->writeBalAllowedLogMinimal(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)V
+HSPLcom/android/server/wm/BackgroundLaunchProcessController$BalCheckConfiguration;-><init>(ZZZ)V
+PLcom/android/server/wm/BackgroundLaunchProcessController;-><clinit>()V
+PLcom/android/server/wm/BackgroundLaunchProcessController;-><init>(Lcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda3;Lcom/android/server/notification/NotificationManagerService$1;)V
+PLcom/android/server/wm/BackgroundLaunchProcessController;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/BackgroundLaunchProcessController;->getOriginatingTokensThatAllowBal()Ljava/util/List;
+PLcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;-><init>(Lcom/android/server/wm/ActivitySnapshotController$$ExternalSyntheticLambda1;Ljava/lang/String;ZFZ)V
PLcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;->getDirectory(I)Ljava/io/File;
PLcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;->getHighResolutionBitmapFile(II)Ljava/io/File;
PLcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;->getLowResolutionBitmapFile(II)Ljava/io/File;
-PLcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;->getProtoFile(II)Ljava/io/File;
-PLcom/android/server/wm/BaseAppSnapshotPersister;-><init>(Lcom/android/server/wm/SnapshotPersistQueue;Lcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;)V
-PLcom/android/server/wm/BaseAppSnapshotPersister;->removeSnapshot(II)V
+HPLcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;->getProtoFile(II)Ljava/io/File;
PLcom/android/server/wm/BlurController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/BlurController;)V
PLcom/android/server/wm/BlurController$$ExternalSyntheticLambda0;->onThermalStatusChanged(I)V
-PLcom/android/server/wm/BlurController$1;-><init>(Lcom/android/server/wm/BlurController;Ljava/util/concurrent/Executor;)V
+PLcom/android/server/wm/BlurController$1;-><init>(Lcom/android/server/wm/BlurController;Lcom/android/server/SystemServerInitThreadPool$$ExternalSyntheticLambda1;)V
PLcom/android/server/wm/BlurController$1;->onTunnelModeEnabledChanged(Z)V
PLcom/android/server/wm/BlurController$2;-><init>(Lcom/android/server/wm/BlurController;Landroid/os/PowerManager;)V
-PLcom/android/server/wm/BlurController$3;-><init>(Lcom/android/server/wm/BlurController;Landroid/os/Handler;)V
-PLcom/android/server/wm/BlurController;->$r8$lambda$d37IvBCG5pB02WzIgDv5RCisrMc(Lcom/android/server/wm/BlurController;I)V
-PLcom/android/server/wm/BlurController;->-$$Nest$fputmTunnelModeEnabled(Lcom/android/server/wm/BlurController;Z)V
-PLcom/android/server/wm/BlurController;->-$$Nest$mupdateBlurEnabled(Lcom/android/server/wm/BlurController;)V
+PLcom/android/server/wm/BlurController$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/wm/BlurController$3;-><init>(Lcom/android/server/wm/BlurController;)V
PLcom/android/server/wm/BlurController;-><init>(Landroid/content/Context;Landroid/os/PowerManager;)V
-PLcom/android/server/wm/BlurController;->getBlurDisabledSetting()Z
-PLcom/android/server/wm/BlurController;->lambda$new$0(I)V
-PLcom/android/server/wm/BlurController;->notifyBlurEnabledChangedLocked(Z)V
PLcom/android/server/wm/BlurController;->updateBlurEnabled()V
HSPLcom/android/server/wm/ClientLifecycleManager;-><init>()V
+PLcom/android/server/wm/ClientLifecycleManager;->dispatchPendingTransaction(Landroid/app/IApplicationThread;)V
HPLcom/android/server/wm/ClientLifecycleManager;->dispatchPendingTransactions()V
-PLcom/android/server/wm/ClientLifecycleManager;->getOrCreatePendingTransaction(Landroid/app/IApplicationThread;)Landroid/app/servertransaction/ClientTransaction;
-PLcom/android/server/wm/ClientLifecycleManager;->onClientTransactionItemScheduled(Landroid/app/servertransaction/ClientTransaction;Z)V
-PLcom/android/server/wm/ClientLifecycleManager;->onLayoutContinued()V
-PLcom/android/server/wm/ClientLifecycleManager;->scheduleTransaction(Landroid/app/servertransaction/ClientTransaction;)V
-PLcom/android/server/wm/ClientLifecycleManager;->scheduleTransactionAndLifecycleItems(Landroid/app/IApplicationThread;Landroid/app/servertransaction/ClientTransactionItem;Landroid/app/servertransaction/ActivityLifecycleItem;Z)V
-PLcom/android/server/wm/ClientLifecycleManager;->scheduleTransactionItem(Landroid/app/IApplicationThread;Landroid/app/servertransaction/ClientTransactionItem;)V
-PLcom/android/server/wm/ClientLifecycleManager;->scheduleTransactionItemNow(Landroid/app/IApplicationThread;Landroid/app/servertransaction/ClientTransactionItem;)V
-PLcom/android/server/wm/ClientLifecycleManager;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
+HPLcom/android/server/wm/ClientLifecycleManager;->scheduleTransaction(Landroid/app/servertransaction/ClientTransaction;)V
+HPLcom/android/server/wm/ClientLifecycleManager;->scheduleTransactionItem(Landroid/app/IApplicationThread;Landroid/app/servertransaction/ClientTransactionItem;)V+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Landroid/app/servertransaction/ClientTransaction;Landroid/app/servertransaction/ClientTransaction;
+HPLcom/android/server/wm/ClientLifecycleManager;->scheduleTransactionItems(Landroid/app/IApplicationThread;Z[Landroid/app/servertransaction/ClientTransactionItem;)V
HPLcom/android/server/wm/ClientLifecycleManager;->shouldDispatchPendingTransactionsImmediately()Z
HSPLcom/android/server/wm/CompatModePackages$CompatHandler;-><init>(Lcom/android/server/wm/CompatModePackages;Landroid/os/Looper;)V
-HSPLcom/android/server/wm/CompatModePackages;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Ljava/io/File;Landroid/os/Handler;)V
+HSPLcom/android/server/wm/CompatModePackages;-><init>(Landroid/os/Handler;Lcom/android/server/wm/ActivityTaskManagerService;Ljava/io/File;)V
HPLcom/android/server/wm/CompatModePackages;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
-PLcom/android/server/wm/CompatModePackages;->getCompatScale(Ljava/lang/String;I)F
-HPLcom/android/server/wm/CompatModePackages;->getCompatScale(Ljava/lang/String;IZ)F
-HPLcom/android/server/wm/CompatModePackages;->getCompatScaleFromProvider(Ljava/lang/String;I)Landroid/content/res/CompatibilityInfo$CompatScale;
-HPLcom/android/server/wm/CompatModePackages;->getPackageCompatModeEnabledLocked(Landroid/content/pm/ApplicationInfo;)Z
-HPLcom/android/server/wm/CompatModePackages;->getPackageFlags(Ljava/lang/String;)I
-PLcom/android/server/wm/CompatModePackages;->registerCompatScaleProvider(ILcom/android/server/wm/CompatScaleProvider;)V
-PLcom/android/server/wm/CompatModePackages;->useLegacyScreenCompatMode(Ljava/lang/String;)Z
-PLcom/android/server/wm/CompatScaleProvider;->isValidOrderId(I)Z
+HPLcom/android/server/wm/CompatModePackages;->getCompatScale(ILjava/lang/String;Z)F
+PLcom/android/server/wm/CompatModePackages;->getCompatScaleFromProvider(ILjava/lang/String;)Landroid/content/res/CompatibilityInfo$CompatScale;
+PLcom/android/server/wm/CompatModePackages;->getPackageFlags(Ljava/lang/String;)I
HPLcom/android/server/wm/ConfigurationContainer;-><init>()V
+HPLcom/android/server/wm/ConfigurationContainer;->applyAppSpecificConfig(Ljava/lang/Integer;Landroid/os/LocaleList;Ljava/lang/Integer;)Z
+HPLcom/android/server/wm/ConfigurationContainer;->applySizeOverrideIfNeeded(Lcom/android/server/wm/DisplayContent;Landroid/content/pm/ApplicationInfo;Landroid/content/res/Configuration;Landroid/content/res/Configuration;ZZZLcom/android/server/wm/Task;)V
PLcom/android/server/wm/ConfigurationContainer;->containsListener(Lcom/android/server/wm/ConfigurationContainerListener;)Z
PLcom/android/server/wm/ConfigurationContainer;->diffRequestedOverrideBounds(Landroid/graphics/Rect;)I
PLcom/android/server/wm/ConfigurationContainer;->diffRequestedOverrideMaxBounds(Landroid/graphics/Rect;)I
-HPLcom/android/server/wm/ConfigurationContainer;->dispatchConfigurationToChild(Lcom/android/server/wm/ConfigurationContainer;Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/ConfigurationContainer;->dispatchConfigurationToChild(Lcom/android/server/wm/ConfigurationContainer;Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/ConfigurationContainer;->dumpChildrenNames(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/wm/ConfigurationContainer;->dumpChildrenNames(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+PLcom/android/server/wm/ConfigurationContainer;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
PLcom/android/server/wm/ConfigurationContainer;->equivalentBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
PLcom/android/server/wm/ConfigurationContainer;->equivalentRequestedOverrideBounds(Landroid/graphics/Rect;)Z
PLcom/android/server/wm/ConfigurationContainer;->equivalentRequestedOverrideMaxBounds(Landroid/graphics/Rect;)Z
-HPLcom/android/server/wm/ConfigurationContainer;->getActivityType()I
-HPLcom/android/server/wm/ConfigurationContainer;->getBounds()Landroid/graphics/Rect;
+HPLcom/android/server/wm/ConfigurationContainer;->getActivityType()I+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
+HPLcom/android/server/wm/ConfigurationContainer;->getBounds()Landroid/graphics/Rect;+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types
PLcom/android/server/wm/ConfigurationContainer;->getBounds(Landroid/graphics/Rect;)V
-PLcom/android/server/wm/ConfigurationContainer;->getConfiguration()Landroid/content/res/Configuration;
+HPLcom/android/server/wm/ConfigurationContainer;->getConfiguration()Landroid/content/res/Configuration;
PLcom/android/server/wm/ConfigurationContainer;->getMergedOverrideConfiguration()Landroid/content/res/Configuration;
HPLcom/android/server/wm/ConfigurationContainer;->getRequestedOverrideBounds()Landroid/graphics/Rect;
PLcom/android/server/wm/ConfigurationContainer;->getRequestedOverrideConfiguration()Landroid/content/res/Configuration;
@@ -26443,27 +21077,29 @@ PLcom/android/server/wm/ConfigurationContainer;->getRequestedOverrideWindowingMo
HPLcom/android/server/wm/ConfigurationContainer;->getResolvedOverrideBounds()Landroid/graphics/Rect;
PLcom/android/server/wm/ConfigurationContainer;->getResolvedOverrideConfiguration()Landroid/content/res/Configuration;
HPLcom/android/server/wm/ConfigurationContainer;->getWindowConfiguration()Landroid/app/WindowConfiguration;
-HPLcom/android/server/wm/ConfigurationContainer;->getWindowingMode()I
-HPLcom/android/server/wm/ConfigurationContainer;->hasChild()Z
+HPLcom/android/server/wm/ConfigurationContainer;->getWindowingMode()I+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
+HPLcom/android/server/wm/ConfigurationContainer;->hasChild()Z+]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types
PLcom/android/server/wm/ConfigurationContainer;->hasOverrideBounds()Z
-HPLcom/android/server/wm/ConfigurationContainer;->inFreeformWindowingMode()Z
-HPLcom/android/server/wm/ConfigurationContainer;->inMultiWindowMode()Z
-HPLcom/android/server/wm/ConfigurationContainer;->inPinnedWindowingMode()Z
+PLcom/android/server/wm/ConfigurationContainer;->hasRequestedOverrideConfiguration()Z
+HPLcom/android/server/wm/ConfigurationContainer;->inFreeformWindowingMode()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
+HPLcom/android/server/wm/ConfigurationContainer;->inMultiWindowMode()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
+HPLcom/android/server/wm/ConfigurationContainer;->inPinnedWindowingMode()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
PLcom/android/server/wm/ConfigurationContainer;->isActivityTypeAssistant()Z
PLcom/android/server/wm/ConfigurationContainer;->isActivityTypeDream()Z
-PLcom/android/server/wm/ConfigurationContainer;->isActivityTypeHome()Z
-HPLcom/android/server/wm/ConfigurationContainer;->isActivityTypeHomeOrRecents()Z
+HPLcom/android/server/wm/ConfigurationContainer;->isActivityTypeHome()Z
+HPLcom/android/server/wm/ConfigurationContainer;->isActivityTypeHomeOrRecents()Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;
PLcom/android/server/wm/ConfigurationContainer;->isActivityTypeRecents()Z
PLcom/android/server/wm/ConfigurationContainer;->isActivityTypeStandard()Z
-PLcom/android/server/wm/ConfigurationContainer;->isActivityTypeStandardOrUndefined()Z
-HPLcom/android/server/wm/ConfigurationContainer;->isAlwaysOnTop()Z
-HPLcom/android/server/wm/ConfigurationContainer;->isCompatible(II)Z
+HPLcom/android/server/wm/ConfigurationContainer;->isActivityTypeStandardOrUndefined()Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/ConfigurationContainer;->isAlwaysOnTop()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;
+HPLcom/android/server/wm/ConfigurationContainer;->isCompatible(II)Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;
PLcom/android/server/wm/ConfigurationContainer;->isCompatibleActivityType(II)Z
PLcom/android/server/wm/ConfigurationContainer;->matchParentBounds()Z
-HPLcom/android/server/wm/ConfigurationContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V
-HPLcom/android/server/wm/ConfigurationContainer;->onMergedOverrideConfigurationChanged()V
+HPLcom/android/server/wm/ConfigurationContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/ConfigurationContainerListener;Lcom/android/server/wm/DisplayContent$2;,Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;,Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/ConfigurationContainer;->onMergedOverrideConfigurationChanged()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types
+PLcom/android/server/wm/ConfigurationContainer;->onMergedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
PLcom/android/server/wm/ConfigurationContainer;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
-PLcom/android/server/wm/ConfigurationContainer;->onRequestedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/ConfigurationContainer;->onRequestedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
PLcom/android/server/wm/ConfigurationContainer;->providesMaxBounds()Z
PLcom/android/server/wm/ConfigurationContainer;->registerConfigurationChangeListener(Lcom/android/server/wm/ConfigurationContainerListener;)V
HPLcom/android/server/wm/ConfigurationContainer;->registerConfigurationChangeListener(Lcom/android/server/wm/ConfigurationContainerListener;Z)V
@@ -26475,496 +21111,311 @@ PLcom/android/server/wm/ConfigurationContainer;->unregisterConfigurationChangeLi
HPLcom/android/server/wm/ConfigurationContainer;->updateRequestedOverrideConfiguration(Landroid/content/res/Configuration;)V
PLcom/android/server/wm/ConfigurationContainerListener;->onMergedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
PLcom/android/server/wm/ConfigurationContainerListener;->onRequestedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/ContentRecordingController;-><init>()V
-PLcom/android/server/wm/DeferredDisplayUpdater$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/wm/DeferredDisplayUpdater$$ExternalSyntheticLambda0;->setFields(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)V
-PLcom/android/server/wm/DeferredDisplayUpdater;->$r8$lambda$--t3mf11gpWn1Uw3-b-B1MpXHHQ(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)V
+HPLcom/android/server/wm/DeferredDisplayUpdater$$ExternalSyntheticLambda0;->setFields(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)V
+PLcom/android/server/wm/DeferredDisplayUpdater$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/DeferredDisplayUpdater;I)V
PLcom/android/server/wm/DeferredDisplayUpdater;-><clinit>()V
PLcom/android/server/wm/DeferredDisplayUpdater;-><init>(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DeferredDisplayUpdater;->applyLatestDisplayInfo()V
+HPLcom/android/server/wm/DeferredDisplayUpdater;->applyLatestDisplayInfo()V+]Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;]Lcom/android/server/wm/utils/DisplayInfoOverrides$DisplayInfoFieldsUpdater;Lcom/android/server/wm/DeferredDisplayUpdater$$ExternalSyntheticLambda0;
HPLcom/android/server/wm/DeferredDisplayUpdater;->calculateDisplayInfoDiff(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)I
-PLcom/android/server/wm/DeferredDisplayUpdater;->getCurrentDisplayInfo()Landroid/view/DisplayInfo;
-PLcom/android/server/wm/DeferredDisplayUpdater;->isPhysicalDisplayUpdated(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)Z
-PLcom/android/server/wm/DeferredDisplayUpdater;->lambda$static$0(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)V
-PLcom/android/server/wm/DeferredDisplayUpdater;->updateDisplayInfo(Ljava/lang/Runnable;)V
-HSPLcom/android/server/wm/DesktopModeLaunchParamsModifier;-><clinit>()V
-HSPLcom/android/server/wm/DesktopModeLaunchParamsModifier;->isDesktopModeSupported()Z
-PLcom/android/server/wm/DeviceStateController$DeviceState;->$values()[Lcom/android/server/wm/DeviceStateController$DeviceState;
+HPLcom/android/server/wm/DeferredDisplayUpdater;->updateDisplayInfo(Ljava/lang/Runnable;)V
+PLcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/AppCompatOverrides;Lcom/android/server/wm/TransparentPolicy;Lcom/android/server/wm/AppCompatConfiguration;)V
+HPLcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;->getMinAspectRatio(Lcom/android/server/wm/Task;)F+]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;->shouldApplyUserMinAspectRatioOverride(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/DesktopModeHelper;-><clinit>()V
+HPLcom/android/server/wm/DesktopModeHelper;->canEnterDesktopMode(Landroid/content/Context;)Z
+PLcom/android/server/wm/DesktopModeHelper;->isDesktopModeSupported(Landroid/content/Context;)Z
+PLcom/android/server/wm/DesktopModeHelper;->shouldEnforceDeviceRestrictions()Z
+HSPLcom/android/server/wm/DesktopModeLaunchParamsModifier;-><init>(Landroid/content/Context;)V
+PLcom/android/server/wm/DesktopModeLaunchParamsModifier;->onCalculate(Lcom/android/server/wm/Task;Landroid/content/pm/ActivityInfo$WindowLayout;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityStarter$Request;ILcom/android/server/wm/LaunchParamsController$LaunchParams;Lcom/android/server/wm/LaunchParamsController$LaunchParams;)I
PLcom/android/server/wm/DeviceStateController$DeviceState;-><clinit>()V
-PLcom/android/server/wm/DeviceStateController$DeviceState;-><init>(Ljava/lang/String;I)V
PLcom/android/server/wm/DeviceStateController;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerGlobalLock;)V
-PLcom/android/server/wm/DeviceStateController;->onDeviceStateReceivedByDisplayManager(I)V
-PLcom/android/server/wm/DeviceStateController;->registerDeviceStateCallback(Ljava/util/function/Consumer;Ljava/util/concurrent/Executor;)V
-PLcom/android/server/wm/DeviceStateController;->shouldReverseRotationDirectionAroundZAxis(Lcom/android/server/wm/DisplayContent;)Z
-PLcom/android/server/wm/Dimmer;-><clinit>()V
PLcom/android/server/wm/Dimmer;-><init>(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/Dimmer;->create(Lcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/Dimmer;
-PLcom/android/server/wm/DimmerAnimationHelper$AnimationAdapterFactory;-><init>()V
-PLcom/android/server/wm/DisplayArea$1;-><clinit>()V
-PLcom/android/server/wm/DisplayArea$Dimmable$$ExternalSyntheticLambda0;-><init>()V
-HPLcom/android/server/wm/DisplayArea$Dimmable$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/DisplayArea$Dimmable;->$r8$lambda$ewKAhLF3xnwcZneP-cgTtyNykBo(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/Dimmer;-><init>(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DimmerAnimationHelper$AnimationAdapterFactory;)V
+PLcom/android/server/wm/Dimmer;->updateDims(Landroid/view/SurfaceControl$Transaction;)Z
+PLcom/android/server/wm/DisplayArea$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/wm/DisplayArea$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
PLcom/android/server/wm/DisplayArea$Dimmable;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayArea$Type;Ljava/lang/String;I)V
-PLcom/android/server/wm/DisplayArea$Dimmable;->lambda$prepareSurfaces$0(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/DisplayArea$Dimmable;->getDimmer()Lcom/android/server/wm/Dimmer;
HPLcom/android/server/wm/DisplayArea$Dimmable;->prepareSurfaces()V
-PLcom/android/server/wm/DisplayArea$Tokens$$ExternalSyntheticLambda0;-><init>()V
PLcom/android/server/wm/DisplayArea$Tokens$$ExternalSyntheticLambda0;->applyAsInt(Ljava/lang/Object;)I
PLcom/android/server/wm/DisplayArea$Tokens$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/DisplayArea$Tokens;)V
-HPLcom/android/server/wm/DisplayArea$Tokens$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/DisplayArea$Tokens;->$r8$lambda$2Q0eZgOlf9COHBhGcrk7N74DbDw(Lcom/android/server/wm/DisplayArea$Tokens;Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/DisplayArea$Tokens;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayArea$Type;Ljava/lang/String;)V
-HPLcom/android/server/wm/DisplayArea$Tokens;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayArea$Type;Ljava/lang/String;I)V
-PLcom/android/server/wm/DisplayArea$Tokens;->addChild(Lcom/android/server/wm/WindowToken;)V
+HPLcom/android/server/wm/DisplayArea$Tokens$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/DisplayArea$Tokens;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayArea$Type;Ljava/lang/String;I)V
PLcom/android/server/wm/DisplayArea$Tokens;->asTokens()Lcom/android/server/wm/DisplayArea$Tokens;
-HPLcom/android/server/wm/DisplayArea$Tokens;->getOrientation(I)I
-PLcom/android/server/wm/DisplayArea$Tokens;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;
-PLcom/android/server/wm/DisplayArea$Tokens;->getSurfaceControl()Landroid/view/SurfaceControl;
-PLcom/android/server/wm/DisplayArea$Tokens;->getSyncTransaction()Landroid/view/SurfaceControl$Transaction;
-PLcom/android/server/wm/DisplayArea$Tokens;->lambda$new$0(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/DisplayArea$Type;->$values()[Lcom/android/server/wm/DisplayArea$Type;
+HPLcom/android/server/wm/DisplayArea$Tokens;->getOrientation(I)I+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayArea$Tokens;
PLcom/android/server/wm/DisplayArea$Type;-><clinit>()V
-PLcom/android/server/wm/DisplayArea$Type;-><init>(Ljava/lang/String;I)V
-HPLcom/android/server/wm/DisplayArea$Type;->checkChild(Lcom/android/server/wm/DisplayArea$Type;Lcom/android/server/wm/DisplayArea$Type;)V
-HPLcom/android/server/wm/DisplayArea$Type;->checkSiblings(Lcom/android/server/wm/DisplayArea$Type;Lcom/android/server/wm/DisplayArea$Type;)V
-HPLcom/android/server/wm/DisplayArea$Type;->typeOf(Lcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/DisplayArea$Type;
-PLcom/android/server/wm/DisplayArea$Type;->typeOf(Lcom/android/server/wm/WindowToken;)Lcom/android/server/wm/DisplayArea$Type;
-PLcom/android/server/wm/DisplayArea$Type;->values()[Lcom/android/server/wm/DisplayArea$Type;
-HPLcom/android/server/wm/DisplayArea;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayArea$Type;Ljava/lang/String;I)V
-PLcom/android/server/wm/DisplayArea;->asDisplayArea()Lcom/android/server/wm/DisplayArea;
+HPLcom/android/server/wm/DisplayArea$Type;->typeOf(Lcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/DisplayArea$Type;+]Lcom/android/server/wm/WindowContainer;megamorphic_types
+PLcom/android/server/wm/DisplayArea;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayArea$Type;Ljava/lang/String;I)V
+HPLcom/android/server/wm/DisplayArea;->asDisplayArea()Lcom/android/server/wm/DisplayArea;
PLcom/android/server/wm/DisplayArea;->asTokens()Lcom/android/server/wm/DisplayArea$Tokens;
-PLcom/android/server/wm/DisplayArea;->fillsParent()Z
-PLcom/android/server/wm/DisplayArea;->findMaxPositionForChildDisplayArea(Lcom/android/server/wm/DisplayArea;)I
-PLcom/android/server/wm/DisplayArea;->findMinPositionForChildDisplayArea(Lcom/android/server/wm/DisplayArea;)I
-HPLcom/android/server/wm/DisplayArea;->findPositionForChildDisplayArea(ILcom/android/server/wm/DisplayArea;)I
+PLcom/android/server/wm/DisplayArea;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+PLcom/android/server/wm/DisplayArea;->dumpChildDisplayArea(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+PLcom/android/server/wm/DisplayArea;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
+HPLcom/android/server/wm/DisplayArea;->fillsParent()Z
PLcom/android/server/wm/DisplayArea;->forAllActivities(Ljava/util/function/Consumer;Z)V
PLcom/android/server/wm/DisplayArea;->forAllActivities(Ljava/util/function/Predicate;Z)Z
PLcom/android/server/wm/DisplayArea;->forAllDisplayAreas(Ljava/util/function/Consumer;)V
HPLcom/android/server/wm/DisplayArea;->forAllLeafTaskFragments(Ljava/util/function/Predicate;)Z
HPLcom/android/server/wm/DisplayArea;->forAllLeafTasks(Ljava/util/function/Consumer;Z)V
-PLcom/android/server/wm/DisplayArea;->forAllLeafTasks(Ljava/util/function/Predicate;)Z
-PLcom/android/server/wm/DisplayArea;->forAllRootTasks(Ljava/util/function/Predicate;Z)Z
-PLcom/android/server/wm/DisplayArea;->forAllTaskDisplayAreas(Ljava/util/function/Consumer;Z)V
-PLcom/android/server/wm/DisplayArea;->forAllTaskDisplayAreas(Ljava/util/function/Predicate;Z)Z
-HPLcom/android/server/wm/DisplayArea;->forAllTasks(Ljava/util/function/Predicate;)Z
+HPLcom/android/server/wm/DisplayArea;->forAllLeafTasks(Ljava/util/function/Predicate;)Z
+HPLcom/android/server/wm/DisplayArea;->forAllRootTasks(Ljava/util/function/Predicate;Z)Z
+HPLcom/android/server/wm/DisplayArea;->forAllTaskDisplayAreas(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayArea$Dimmable;,Lcom/android/server/wm/DisplayArea$Tokens;,Lcom/android/server/wm/DisplayArea;,Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/DisplayArea;->forAllTaskDisplayAreas(Ljava/util/function/Predicate;Z)Z+]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayArea$Dimmable;,Lcom/android/server/wm/DisplayArea$Tokens;,Lcom/android/server/wm/DisplayArea;,Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/DisplayArea;->forAllTasks(Ljava/util/function/Predicate;)Z
PLcom/android/server/wm/DisplayArea;->getActivity(Ljava/util/function/Predicate;ZLcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/DisplayArea;->getDisplayArea()Lcom/android/server/wm/DisplayArea;
+HPLcom/android/server/wm/DisplayArea;->getDisplayArea()Lcom/android/server/wm/DisplayArea;
PLcom/android/server/wm/DisplayArea;->getDisplayAreaInfo()Landroid/window/DisplayAreaInfo;
HPLcom/android/server/wm/DisplayArea;->getIgnoreOrientationRequest()Z
-HPLcom/android/server/wm/DisplayArea;->getItemFromTaskDisplayAreas(Ljava/util/function/Function;Z)Ljava/lang/Object;
+HPLcom/android/server/wm/DisplayArea;->getItemFromTaskDisplayAreas(Ljava/util/function/Function;Z)Ljava/lang/Object;+]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayArea$Dimmable;,Lcom/android/server/wm/DisplayArea$Tokens;,Lcom/android/server/wm/DisplayArea;,Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/DisplayArea;->getName()Ljava/lang/String;
-PLcom/android/server/wm/DisplayArea;->getOrientation(I)I
+HPLcom/android/server/wm/DisplayArea;->getOrientation(I)I+]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayArea$Dimmable;,Lcom/android/server/wm/DisplayArea;,Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/TaskDisplayArea;
HPLcom/android/server/wm/DisplayArea;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;
+PLcom/android/server/wm/DisplayArea;->getProtoFieldId()J
HPLcom/android/server/wm/DisplayArea;->getRootTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;
PLcom/android/server/wm/DisplayArea;->getStableRect(Landroid/graphics/Rect;)V
PLcom/android/server/wm/DisplayArea;->getSurfaceControl()Landroid/view/SurfaceControl;
-HPLcom/android/server/wm/DisplayArea;->getSyncTransaction()Landroid/view/SurfaceControl$Transaction;
-PLcom/android/server/wm/DisplayArea;->getTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/DisplayArea;->getSyncTransaction()Landroid/view/SurfaceControl$Transaction;
+HPLcom/android/server/wm/DisplayArea;->getTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;
PLcom/android/server/wm/DisplayArea;->handlesOrientationChangeFromDescendant(I)Z
HPLcom/android/server/wm/DisplayArea;->isOrganized()Z
-PLcom/android/server/wm/DisplayArea;->needsZBoost()Z
+PLcom/android/server/wm/DisplayArea;->isTaskDisplayArea()Z
+PLcom/android/server/wm/DisplayArea;->makeAnimationLeash()Landroid/view/SurfaceControl$Builder;
+HPLcom/android/server/wm/DisplayArea;->needsZBoost()Z
HPLcom/android/server/wm/DisplayArea;->onChildPositionChanged(Lcom/android/server/wm/WindowContainer;)V
-HPLcom/android/server/wm/DisplayArea;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/DisplayArea;->onConfigurationChanged(Landroid/content/res/Configuration;)V
PLcom/android/server/wm/DisplayArea;->onDescendantOrientationChanged(Lcom/android/server/wm/WindowContainer;)Z
PLcom/android/server/wm/DisplayArea;->onRequestedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
PLcom/android/server/wm/DisplayArea;->onUnfrozen()V
-PLcom/android/server/wm/DisplayArea;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
+HPLcom/android/server/wm/DisplayArea;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/DisplayArea$Dimmable;,Lcom/android/server/wm/DisplayArea;,Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/DisplayArea;->providesMaxBounds()Z
PLcom/android/server/wm/DisplayArea;->reduceOnAllTaskDisplayAreas(Ljava/util/function/BiFunction;Ljava/lang/Object;Z)Ljava/lang/Object;
-HPLcom/android/server/wm/DisplayArea;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/DisplayArea;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/DisplayArea;->sendDisplayAreaInfoChanged()V
PLcom/android/server/wm/DisplayArea;->sendDisplayAreaVanished(Landroid/window/IDisplayAreaOrganizer;)V
PLcom/android/server/wm/DisplayArea;->setOrganizer(Landroid/window/IDisplayAreaOrganizer;Z)V
-PLcom/android/server/wm/DisplayArea;->shouldIgnoreOrientationRequest(I)Z
-PLcom/android/server/wm/DisplayArea;->toString()Ljava/lang/String;
-PLcom/android/server/wm/DisplayAreaOrganizerController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/DisplayAreaOrganizerController;ILjava/util/List;Landroid/window/IDisplayAreaOrganizer;)V
-PLcom/android/server/wm/DisplayAreaOrganizerController$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/DisplayAreaOrganizerController$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/wm/DisplayAreaOrganizerController;ILjava/util/List;Landroid/window/IDisplayAreaOrganizer;)V
+HPLcom/android/server/wm/DisplayArea;->shouldIgnoreOrientationRequest(I)Z+]Lcom/android/server/wm/DisplayArea;megamorphic_types
+HPLcom/android/server/wm/DisplayArea;->toString()Ljava/lang/String;
+PLcom/android/server/wm/DisplayAreaOrganizerController$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/wm/DisplayAreaOrganizerController;ILjava/util/List;Landroid/window/IDisplayAreaOrganizer;I)V
PLcom/android/server/wm/DisplayAreaOrganizerController$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V
PLcom/android/server/wm/DisplayAreaOrganizerController$DeathRecipient;-><init>(Lcom/android/server/wm/DisplayAreaOrganizerController;Landroid/window/IDisplayAreaOrganizer;I)V
PLcom/android/server/wm/DisplayAreaOrganizerController$DisplayAreaOrganizerState;-><init>(Lcom/android/server/wm/DisplayAreaOrganizerController;Landroid/window/IDisplayAreaOrganizer;I)V
-PLcom/android/server/wm/DisplayAreaOrganizerController;->$r8$lambda$CvQU9LqFTmbUEmALsGj5S7UV_PU(Lcom/android/server/wm/DisplayAreaOrganizerController;ILjava/util/List;Landroid/window/IDisplayAreaOrganizer;Lcom/android/server/wm/DisplayArea;)V
-PLcom/android/server/wm/DisplayAreaOrganizerController;->$r8$lambda$wSnU_Pe7TXl_HhzB7fVcyiY4FP4(Lcom/android/server/wm/DisplayAreaOrganizerController;ILjava/util/List;Landroid/window/IDisplayAreaOrganizer;Lcom/android/server/wm/DisplayContent;)V
HSPLcom/android/server/wm/DisplayAreaOrganizerController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
-PLcom/android/server/wm/DisplayAreaOrganizerController;->enforceTaskPermission(Ljava/lang/String;)V
-PLcom/android/server/wm/DisplayAreaOrganizerController;->getOrganizerByFeature(I)Landroid/window/IDisplayAreaOrganizer;
-PLcom/android/server/wm/DisplayAreaOrganizerController;->lambda$registerOrganizer$0(ILjava/util/List;Landroid/window/IDisplayAreaOrganizer;Lcom/android/server/wm/DisplayArea;)V
-PLcom/android/server/wm/DisplayAreaOrganizerController;->lambda$registerOrganizer$1(ILjava/util/List;Landroid/window/IDisplayAreaOrganizer;Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DisplayAreaOrganizerController;->organizeDisplayArea(Landroid/window/IDisplayAreaOrganizer;Lcom/android/server/wm/DisplayArea;Ljava/lang/String;)Landroid/window/DisplayAreaAppearedInfo;
PLcom/android/server/wm/DisplayAreaOrganizerController;->registerOrganizer(Landroid/window/IDisplayAreaOrganizer;I)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/wm/DisplayAreaPolicy$DefaultProvider$$ExternalSyntheticLambda0;-><init>()V
PLcom/android/server/wm/DisplayAreaPolicy$DefaultProvider$$ExternalSyntheticLambda0;->create(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayArea$Type;Ljava/lang/String;I)Lcom/android/server/wm/DisplayArea;
PLcom/android/server/wm/DisplayAreaPolicy$DefaultProvider;-><init>()V
-PLcom/android/server/wm/DisplayAreaPolicy$DefaultProvider;->configureTrustedHierarchyBuilder(Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DisplayAreaPolicy$DefaultProvider;->instantiate(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/RootDisplayArea;Lcom/android/server/wm/DisplayArea$Tokens;)Lcom/android/server/wm/DisplayAreaPolicy;
-PLcom/android/server/wm/DisplayAreaPolicy$Provider;->fromResources(Landroid/content/res/Resources;)Lcom/android/server/wm/DisplayAreaPolicy$Provider;
-PLcom/android/server/wm/DisplayAreaPolicy;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/RootDisplayArea;)V
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$DefaultSelectRootForWindowFunction;-><init>(Lcom/android/server/wm/RootDisplayArea;Ljava/util/List;)V
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$DefaultSelectRootForWindowFunction;->apply(Ljava/lang/Integer;Landroid/os/Bundle;)Lcom/android/server/wm/RootDisplayArea;
+PLcom/android/server/wm/DisplayAreaPolicy;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$DefaultSelectRootForWindowFunction;-><init>(Lcom/android/server/wm/DisplayContent;Ljava/util/List;)V
PLcom/android/server/wm/DisplayAreaPolicyBuilder$DefaultSelectRootForWindowFunction;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/wm/DisplayAreaPolicyBuilder$DefaultSelectTaskDisplayAreaFunction;-><init>(Lcom/android/server/wm/TaskDisplayArea;)V
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder$$ExternalSyntheticLambda0;-><init>()V
PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder$$ExternalSyntheticLambda0;->create(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayArea$Type;Ljava/lang/String;I)Lcom/android/server/wm/DisplayArea;
PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;-><init>(Lcom/android/server/policy/WindowManagerPolicy;Ljava/lang/String;I)V
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;->all()Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;->and([I)Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;
PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;->build()Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;->except([I)Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;->except([I)V
PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;->layerFromType(IZ)I
PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;->set(IZ)V
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;->setNewDisplayAreaSupplier(Lcom/android/server/wm/DisplayAreaPolicyBuilder$NewDisplayAreaSupplier;)Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;->upTo(I)Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;->-$$Nest$fgetmId(Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;)I
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;->-$$Nest$fgetmName(Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;)Ljava/lang/String;
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;->-$$Nest$fgetmNewDisplayAreaSupplier(Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;)Lcom/android/server/wm/DisplayAreaPolicyBuilder$NewDisplayAreaSupplier;
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;->-$$Nest$fgetmWindowLayers(Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;)[Z
PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;-><init>(Ljava/lang/String;I[ZLcom/android/server/wm/DisplayAreaPolicyBuilder$NewDisplayAreaSupplier;)V
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;-><init>(Ljava/lang/String;I[ZLcom/android/server/wm/DisplayAreaPolicyBuilder$NewDisplayAreaSupplier;Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature-IA;)V
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;->getId()I
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->-$$Nest$fgetmFeatures(Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;)Ljava/util/ArrayList;
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->-$$Nest$fgetmImeContainer(Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;)Lcom/android/server/wm/DisplayArea$Tokens;
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->-$$Nest$fgetmRoot(Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;)Lcom/android/server/wm/RootDisplayArea;
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->-$$Nest$fgetmTaskDisplayAreas(Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;)Ljava/util/ArrayList;
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->-$$Nest$mbuild(Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;Ljava/util/List;)V
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;-><init>(Lcom/android/server/wm/RootDisplayArea;)V
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->addDisplayAreaGroupsToApplicationLayer(Lcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;Ljava/util/List;)V
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->addFeature(Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;)Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->addTaskDisplayAreasToApplicationLayer(Lcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;)V
-HPLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->build(Ljava/util/List;)V
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->setImeContainer(Lcom/android/server/wm/DisplayArea$Tokens;)Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->setTaskDisplayAreas(Ljava/util/List;)Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->typeOfLayer(Lcom/android/server/policy/WindowManagerPolicy;I)I
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->build(Ljava/util/List;)V
PLcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea$$ExternalSyntheticLambda0;->applyAsInt(Ljava/lang/Object;)I
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;->$r8$lambda$VwU16eW1PmOKwR0U1Wij7qH1PtU(Lcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;)I
PLcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;-><init>(Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;ILcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;)V
PLcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;->computeMaxLayer()I
-HPLcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;->createArea(Lcom/android/server/wm/DisplayArea;[Lcom/android/server/wm/DisplayArea$Tokens;)Lcom/android/server/wm/DisplayArea;
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;->fillAreaForLayers(Lcom/android/server/wm/DisplayArea$Tokens;[Lcom/android/server/wm/DisplayArea$Tokens;)V
-HPLcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;->instantiateChildren(Lcom/android/server/wm/DisplayArea;[Lcom/android/server/wm/DisplayArea$Tokens;ILjava/util/Map;)V
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;->lambda$instantiateChildren$0(Lcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;)I
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$Result$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;->instantiateChildren(Lcom/android/server/wm/DisplayArea;[Lcom/android/server/wm/DisplayArea$Tokens;ILjava/util/Map;)V
PLcom/android/server/wm/DisplayAreaPolicyBuilder$Result$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$Result;->$r8$lambda$YTS6mATtwOUjwC_PPe0TcCmppOQ(Lcom/android/server/wm/TaskDisplayArea;)Lcom/android/server/wm/TaskDisplayArea;
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$Result;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/RootDisplayArea;Ljava/util/List;Ljava/util/function/BiFunction;Ljava/util/function/Function;)V
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$Result;->findAreaForWindowType(ILandroid/os/Bundle;ZZ)Lcom/android/server/wm/DisplayArea$Tokens;
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$Result;->getDefaultTaskDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$Result;->getDisplayAreas(I)Ljava/util/List;
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$Result;->getDisplayAreas(Lcom/android/server/wm/RootDisplayArea;ILjava/util/List;)V
-PLcom/android/server/wm/DisplayAreaPolicyBuilder$Result;->lambda$new$0(Lcom/android/server/wm/TaskDisplayArea;)Lcom/android/server/wm/TaskDisplayArea;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Result;-><init>(Lcom/android/server/wm/DisplayContent;Ljava/util/List;Ljava/util/function/BiFunction;Ljava/util/function/Function;)V
PLcom/android/server/wm/DisplayAreaPolicyBuilder;-><init>()V
PLcom/android/server/wm/DisplayAreaPolicyBuilder;->build(Lcom/android/server/wm/WindowManagerService;)Lcom/android/server/wm/DisplayAreaPolicyBuilder$Result;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder;->canBeWindowingLayer(I)Z
PLcom/android/server/wm/DisplayAreaPolicyBuilder;->containsDefaultTaskDisplayArea(Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;)Z
PLcom/android/server/wm/DisplayAreaPolicyBuilder;->setRootHierarchy(Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;)Lcom/android/server/wm/DisplayAreaPolicyBuilder;
PLcom/android/server/wm/DisplayAreaPolicyBuilder;->validate()V
PLcom/android/server/wm/DisplayAreaPolicyBuilder;->validateIds(Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;Ljava/util/Set;Ljava/util/Set;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda10;-><init>()V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda10;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda12;-><init>(Z)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda12;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/RecentsAnimationController;Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Region;[ILandroid/graphics/Region;Landroid/graphics/Region;)V
-HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda14;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda18;-><init>(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda18;->run()V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda19;-><init>([I)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda19;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda20;-><init>()V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda20;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda24;-><init>(Lcom/android/server/wm/ActivityRecord;Z)V
-HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda24;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda30;-><init>(Lcom/android/server/wm/DisplayContent;Landroid/util/SparseBooleanArray;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda30;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda32;-><init>(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda32;->compute(Ljava/lang/Object;I)Ljava/lang/Object;
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda33;-><init>(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda33;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda34;-><init>(Lcom/android/server/wm/DisplayContent;)V
-HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda34;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda35;-><init>(Lcom/android/server/wm/DisplayContent;)V
-HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda35;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda36;-><init>(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda37;-><init>(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda37;->compute(Ljava/lang/Object;I)Ljava/lang/Object;
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda38;-><init>(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda38;->compute(Ljava/lang/Object;I)Ljava/lang/Object;
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda39;-><init>(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda39;->compute(Ljava/lang/Object;I)Ljava/lang/Object;
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda0;-><init>(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda10;-><init>(Z)V
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda10;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda11;-><init>(II)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda11;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/wm/DisplayContent;Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Region;[ILandroid/graphics/Region;Landroid/graphics/Region;)V
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda12;->accept(Ljava/lang/Object;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda17;-><init>(ILjava/lang/Object;)V
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda17;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda18;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/DisplayContent;I)V
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda1;->accept$com$android$server$wm$DisplayContent$$ExternalSyntheticLambda35(Ljava/lang/Object;)V+]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/LinkedList;Ljava/util/LinkedList;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda22;-><init>(ILjava/lang/Object;)V
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda22;->run()V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda25;-><init>(Lcom/android/server/wm/ActivityRecord;Z)V
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda25;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda2;-><init>(Ljava/util/Set;Ljava/util/Set;Landroid/graphics/Matrix;[F)V
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;)Z+]Landroid/graphics/Region;Landroid/graphics/Region;
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda30;-><init>(II)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda30;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda31;-><init>(Lcom/android/server/wm/DisplayContent;Landroid/util/SparseBooleanArray;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda31;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda32;-><init>(Lcom/android/server/wm/DisplayContent;I)V
PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda40;-><init>(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda41;-><init>(Lcom/android/server/wm/DisplayContent;)V
-HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda41;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda42;-><init>(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda42;->accept(Ljava/lang/Object;)V
PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda43;-><init>(Lcom/android/server/wm/DisplayContent;)V
HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda43;->apply(Ljava/lang/Object;)Z
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda44;-><init>(Lcom/android/server/wm/DisplayContent;)V
-HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda44;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda45;-><init>(Lcom/android/server/wm/DisplayContent;)V
-HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda45;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda46;-><init>(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda46;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda47;-><init>(Landroid/os/IBinder;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda47;->run()V
-HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/wm/RecentsAnimationController;Ljava/util/Set;Ljava/util/Set;Landroid/graphics/Matrix;[F)V
-HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda4;->apply(Ljava/lang/Object;)Z
-HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda50;-><init>([I[ILandroid/graphics/Region;)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda54;-><init>([Z)V
-PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda54;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/DisplayContent$1;-><init>()V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda50;-><init>(Ljava/io/PrintWriter;Ljava/lang/String;[I)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda50;-><init>([I[ILandroid/graphics/Region;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda50;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda51;->test(Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda5;-><init>(ILcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda5;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda7;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/wm/DisplayContent$2;-><init>(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;-><init>()V
-PLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;-><init>(Lcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState-IA;)V
-HPLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;->reset()V
-PLcom/android/server/wm/DisplayContent$FixedRotationTransitionListener;-><init>(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DisplayContent$FixedRotationTransitionListener;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
-PLcom/android/server/wm/DisplayContent$FixedRotationTransitionListener;->shouldDeferRotation()Z
-PLcom/android/server/wm/DisplayContent$ImeContainer;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/DisplayContent$ImeContainer;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V
+HPLcom/android/server/wm/DisplayContent$2;->onVisibleRequestedChanged(Z)V
+PLcom/android/server/wm/DisplayContent$FixedRotationTransitionListener;-><init>(Lcom/android/server/wm/DisplayContent;I)V
+PLcom/android/server/wm/DisplayContent$FixedRotationTransitionListener;->onAppTransitionCancelledLocked(Z)V
+HPLcom/android/server/wm/DisplayContent$FixedRotationTransitionListener;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/DisplayContent$ImeContainer;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V
PLcom/android/server/wm/DisplayContent$ImeContainer;->assignRelativeLayer(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;IZ)V
-HPLcom/android/server/wm/DisplayContent$ImeContainer;->forAllWindowForce(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+PLcom/android/server/wm/DisplayContent$ImeContainer;->forAllWindowForce(Lcom/android/internal/util/ToBooleanFunction;Z)Z
HPLcom/android/server/wm/DisplayContent$ImeContainer;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
-PLcom/android/server/wm/DisplayContent$ImeContainer;->getOrientation(I)I
-PLcom/android/server/wm/DisplayContent$ImeContainer;->setNeedsLayer()V
-HPLcom/android/server/wm/DisplayContent$ImeContainer;->skipImeWindowsDuringTraversal(Lcom/android/server/wm/DisplayContent;)Z
-PLcom/android/server/wm/DisplayContent$ImeContainer;->updateAboveInsetsState(Landroid/view/InsetsState;Landroid/util/SparseArray;Landroid/util/ArraySet;)V
+HPLcom/android/server/wm/DisplayContent$ImeContainer;->getOrientation(I)I
+HPLcom/android/server/wm/DisplayContent$ImeContainer;->updateAboveInsetsState(Landroid/view/InsetsState;Landroid/util/SparseArray;Landroid/util/ArraySet;)V
+PLcom/android/server/wm/DisplayContent$ImeScreenshot;->removeImeSurface(Landroid/view/SurfaceControl$Transaction;)V
PLcom/android/server/wm/DisplayContent$RemoteInsetsControlTarget;-><init>(Lcom/android/server/wm/DisplayContent;Landroid/view/IDisplayWindowInsetsController;)V
-PLcom/android/server/wm/DisplayContent$TaskForResizePointSearchResult;-><init>()V
-PLcom/android/server/wm/DisplayContent;->$r8$lambda$-dBz3LtsWovWVT0SE5m__EwNfT4(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayContent;->$r8$lambda$-uN73aqsI8TZanC60X9G06a6GDM(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayArea;)V
-PLcom/android/server/wm/DisplayContent;->$r8$lambda$09LjI9IPIDqkx6xQRSSpO0paSaI(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/DisplayContent;->$r8$lambda$0qT6GYhjGguOWMyvPDOpZD9lW8A(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/DisplayContent;->$r8$lambda$5VVSLdls3hPPHQhvQRptGbZEU1E(Lcom/android/server/wm/DisplayContent;Landroid/view/DisplayShape;I)Landroid/view/DisplayShape;
-PLcom/android/server/wm/DisplayContent;->$r8$lambda$5vVpESsNA57k_2CBS_VsBrdc5Qo(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DisplayContent;->$r8$lambda$ODoFFvXsuJpa6DBeEVK2Nh28Xc0(Lcom/android/server/wm/DisplayContent;Landroid/util/SparseBooleanArray;Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/DisplayContent;->$r8$lambda$OlRwH3_Eqb403xPL7MPG5vhH0aE(Lcom/android/server/wm/DisplayContent;Landroid/view/DisplayCutout;I)Lcom/android/server/wm/utils/WmDisplayCutout;
-HPLcom/android/server/wm/DisplayContent;->$r8$lambda$YbN3cIeEsM0DLZIuG7yQvhoeuNM(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/Task;)V
-PLcom/android/server/wm/DisplayContent;->$r8$lambda$_tz4aBALPch7QAqA8f5IEbuIfEE(ZLcom/android/server/wm/TaskDisplayArea;)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/DisplayContent;->$r8$lambda$f7tHAwMP7F9Y6GRaAF8mvZCW4p4(Lcom/android/server/wm/DisplayContent;Landroid/view/RoundedCorners;I)Landroid/view/RoundedCorners;
-HPLcom/android/server/wm/DisplayContent;->$r8$lambda$fxEggzNsTLRHb7So7DIvQvSPsEo(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/RecentsAnimationController;Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Region;[ILandroid/graphics/Region;Landroid/graphics/Region;Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayContent;->$r8$lambda$g3NtyUymxIbR0_Zt8BGLWPTUWWk(Lcom/android/server/wm/DisplayContent;Landroid/view/PrivacyIndicatorBounds;I)Landroid/view/PrivacyIndicatorBounds;
-PLcom/android/server/wm/DisplayContent;->$r8$lambda$gxfy_OQnZiuljU-tl2O5KLP4WJI([ZLcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/DisplayContent;->$r8$lambda$hkBcv35oI_sDzJ-r3_1RUH-fcfo(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayContent;->$r8$lambda$jZHjGh_d804t67Tg169ZuvciwD4(Landroid/os/IBinder;)V
-PLcom/android/server/wm/DisplayContent;->$r8$lambda$jsLbkOO-i9uxdPcBuBSaATpXXAQ([ILcom/android/server/wm/Task;)V
-HPLcom/android/server/wm/DisplayContent;->$r8$lambda$m3_QfYVQ2X5TCCaPfidklMmlJ3A(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayContent;->$r8$lambda$nSzlgovjqO6D-KA1rputZkWgFOY(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/DisplayContent;->$r8$lambda$ro8qyeDvIUnuK9S-Ac1Fs1DW7Pc(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/DisplayContent;->$r8$lambda$viMLDYZeNr6UfQB2dUSXkWvClEk(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayContent;->$r8$lambda$wQPrC0OEjFFleCp1VlzlAyiSCm4(Lcom/android/server/wm/RecentsAnimationController;Ljava/util/Set;Ljava/util/Set;Landroid/graphics/Matrix;[FLcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/DisplayContent;->-$$Nest$fgetmFixedRotationLaunchingApp(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/DisplayContent;->-$$Nest$fgetmImeLayeringTarget(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/DisplayContent$RemoteInsetsControlTarget;->isRequestedVisible(I)Z
+PLcom/android/server/wm/DisplayContent$RemoteInsetsControlTarget;->notifyInsetsControlChanged(I)V
PLcom/android/server/wm/DisplayContent;-><clinit>()V
-HPLcom/android/server/wm/DisplayContent;-><init>(Landroid/view/Display;Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/DeviceStateController;)V
-HPLcom/android/server/wm/DisplayContent;->addToGlobalAndConsumeLimit(Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Rect;ILcom/android/server/wm/WindowState;I)I
+PLcom/android/server/wm/DisplayContent;-><init>(Landroid/view/Display;Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/DeviceStateController;)V
+HPLcom/android/server/wm/DisplayContent;->addToGlobalAndConsumeLimit(Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Rect;ILcom/android/server/wm/WindowState;I)I+]Landroid/graphics/Region;Landroid/graphics/Region;
HPLcom/android/server/wm/DisplayContent;->addWindowToken(Landroid/os/IBinder;Lcom/android/server/wm/WindowToken;)V
-HPLcom/android/server/wm/DisplayContent;->adjustDisplaySizeRanges(Landroid/view/DisplayInfo;III)V
-PLcom/android/server/wm/DisplayContent;->adjustForImeIfNeeded()V
+HPLcom/android/server/wm/DisplayContent;->adjustDisplaySizeRanges(Landroid/view/DisplayInfo;IIIZ)V
+HPLcom/android/server/wm/DisplayContent;->adjustForImeIfNeeded()V
PLcom/android/server/wm/DisplayContent;->alwaysCreateRootTask(II)Z
-HPLcom/android/server/wm/DisplayContent;->applySurfaceChangesTransaction()V
+PLcom/android/server/wm/DisplayContent;->applyFixedRotationForNonTopVisibleActivityIfNeeded(ILcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/DisplayContent;->asDisplayContent()Lcom/android/server/wm/DisplayContent;
PLcom/android/server/wm/DisplayContent;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V
-HPLcom/android/server/wm/DisplayContent;->assignRelativeLayerForIme(Landroid/view/SurfaceControl$Transaction;Z)V
-PLcom/android/server/wm/DisplayContent;->assignWindowLayers(Z)V
-PLcom/android/server/wm/DisplayContent;->beginHoldScreenUpdate()V
+HPLcom/android/server/wm/DisplayContent;->assignRelativeLayerForIme(Landroid/view/SurfaceControl$Transaction;Z)V+]Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/DisplayContent$RemoteInsetsControlTarget;,Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/DisplayContent;->assignWindowLayers(Z)V
+PLcom/android/server/wm/DisplayContent;->attachImeScreenshotOnTarget(Lcom/android/server/wm/WindowState;Z)V
HPLcom/android/server/wm/DisplayContent;->calculateDisplayCutoutForRotation(I)Landroid/view/DisplayCutout;
-PLcom/android/server/wm/DisplayContent;->calculateDisplayCutoutForRotationAndDisplaySizeUncached(Landroid/view/DisplayCutout;III)Lcom/android/server/wm/utils/WmDisplayCutout;
-PLcom/android/server/wm/DisplayContent;->calculateDisplayCutoutForRotationUncached(Landroid/view/DisplayCutout;I)Lcom/android/server/wm/utils/WmDisplayCutout;
-PLcom/android/server/wm/DisplayContent;->calculateDisplayShapeForRotation(I)Landroid/view/DisplayShape;
-PLcom/android/server/wm/DisplayContent;->calculateDisplayShapeForRotationUncached(Landroid/view/DisplayShape;I)Landroid/view/DisplayShape;
-PLcom/android/server/wm/DisplayContent;->calculatePrivacyIndicatorBoundsForRotation(I)Landroid/view/PrivacyIndicatorBounds;
-PLcom/android/server/wm/DisplayContent;->calculatePrivacyIndicatorBoundsForRotationUncached(Landroid/view/PrivacyIndicatorBounds;I)Landroid/view/PrivacyIndicatorBounds;
-HPLcom/android/server/wm/DisplayContent;->calculateRoundedCornersForRotation(I)Landroid/view/RoundedCorners;
-PLcom/android/server/wm/DisplayContent;->calculateRoundedCornersForRotationUncached(Landroid/view/RoundedCorners;I)Landroid/view/RoundedCorners;
-HPLcom/android/server/wm/DisplayContent;->calculateSystemGestureExclusion(Landroid/graphics/Region;Landroid/graphics/Region;)Z
-PLcom/android/server/wm/DisplayContent;->canShowTasksInHostDeviceRecents()Z
-HPLcom/android/server/wm/DisplayContent;->canShowWithInsecureKeyguard()Z
-PLcom/android/server/wm/DisplayContent;->canStealTopFocus()Z
-PLcom/android/server/wm/DisplayContent;->canUpdateImeTarget()Z
+PLcom/android/server/wm/DisplayContent;->calculateRoundedCornersForRotation(I)Landroid/view/RoundedCorners;
+HPLcom/android/server/wm/DisplayContent;->calculateSystemGestureExclusion(Landroid/graphics/Region;Landroid/graphics/Region;)Z+]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/view/InsetsState;Landroid/view/InsetsState;
+PLcom/android/server/wm/DisplayContent;->canAddToastWindowForUid(I)Z
PLcom/android/server/wm/DisplayContent;->clearFixedRotationLaunchingApp()V
-PLcom/android/server/wm/DisplayContent;->clearLayoutNeeded()V
-PLcom/android/server/wm/DisplayContent;->computeCompatSmallestWidth(ZII)I
-PLcom/android/server/wm/DisplayContent;->computeImeControlTarget()Lcom/android/server/wm/InsetsControlTarget;
-PLcom/android/server/wm/DisplayContent;->computeImeParent()Landroid/view/SurfaceControl;
-PLcom/android/server/wm/DisplayContent;->computeImeTarget(Z)Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/DisplayContent;->computeImeTargetIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/DisplayContent;->computeScreenAppConfiguration(Landroid/content/res/Configuration;III)V
-HPLcom/android/server/wm/DisplayContent;->computeScreenConfiguration(Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/DisplayContent;->computeSizeRanges(Landroid/view/DisplayInfo;ZIIFLandroid/content/res/Configuration;)V
+HPLcom/android/server/wm/DisplayContent;->computeImeControlTarget()Lcom/android/server/wm/InsetsControlTarget;
+HPLcom/android/server/wm/DisplayContent;->computeImeParent()Lcom/android/server/wm/WindowContainer;
+HPLcom/android/server/wm/DisplayContent;->computeImeTarget(Z)Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/DisplayContent;->computeScreenAppConfiguration(Landroid/content/res/Configuration;III)V
+PLcom/android/server/wm/DisplayContent;->computeScreenConfiguration(Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/DisplayContent;->computeSizeRanges(Landroid/view/DisplayInfo;ZIIFLandroid/content/res/Configuration;Z)V
PLcom/android/server/wm/DisplayContent;->configureDisplayPolicy()V
-HPLcom/android/server/wm/DisplayContent;->configureSurfaces(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/DisplayContent;->configureSurfaces(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/DisplayContent;->continueUpdateImeTarget()V
+PLcom/android/server/wm/DisplayContent;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+PLcom/android/server/wm/DisplayContent;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
PLcom/android/server/wm/DisplayContent;->enableHighFrameRate(Z)V
-PLcom/android/server/wm/DisplayContent;->enableHighPerfTransition(Z)V
+HPLcom/android/server/wm/DisplayContent;->enableHighPerfTransition(Z)V
HPLcom/android/server/wm/DisplayContent;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;Z)V
-PLcom/android/server/wm/DisplayContent;->executeAppTransition()V
+HPLcom/android/server/wm/DisplayContent;->executeAppTransition()V
PLcom/android/server/wm/DisplayContent;->fillsParent()Z
-PLcom/android/server/wm/DisplayContent;->findAreaForToken(Lcom/android/server/wm/WindowToken;)Lcom/android/server/wm/DisplayArea;
PLcom/android/server/wm/DisplayContent;->findAreaForWindowType(ILandroid/os/Bundle;ZZ)Lcom/android/server/wm/DisplayArea;
HPLcom/android/server/wm/DisplayContent;->findFocusedWindow()Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/DisplayContent;->findFocusedWindowIfNeeded(I)Lcom/android/server/wm/WindowState;
-HPLcom/android/server/wm/DisplayContent;->finishHoldScreenUpdate()V
-HPLcom/android/server/wm/DisplayContent;->forAllImeWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
-PLcom/android/server/wm/DisplayContent;->forceDesktopMode()Z
-HPLcom/android/server/wm/DisplayContent;->getAsyncRotationController()Lcom/android/server/wm/AsyncRotationController;
-HPLcom/android/server/wm/DisplayContent;->getDefaultTaskDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
-PLcom/android/server/wm/DisplayContent;->getDisplay()Landroid/view/Display;
-HPLcom/android/server/wm/DisplayContent;->getDisplayId()I
-HPLcom/android/server/wm/DisplayContent;->getDisplayInfo()Landroid/view/DisplayInfo;
-HPLcom/android/server/wm/DisplayContent;->getDisplayPolicy()Lcom/android/server/wm/DisplayPolicy;
-PLcom/android/server/wm/DisplayContent;->getDisplayRotation()Lcom/android/server/wm/DisplayRotation;
-PLcom/android/server/wm/DisplayContent;->getDisplayUiContext()Landroid/content/Context;
+PLcom/android/server/wm/DisplayContent;->getAsyncRotationController()Lcom/android/server/wm/AsyncRotationController;
+PLcom/android/server/wm/DisplayContent;->getDefaultTaskDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
+PLcom/android/server/wm/DisplayContent;->getDisplayPolicy()Lcom/android/server/wm/DisplayPolicy;
HPLcom/android/server/wm/DisplayContent;->getFocusedRootTask()Lcom/android/server/wm/Task;
-PLcom/android/server/wm/DisplayContent;->getImeContainer()Lcom/android/server/wm/DisplayArea$Tokens;
-PLcom/android/server/wm/DisplayContent;->getImeHostOrFallback(Lcom/android/server/wm/WindowState;)Lcom/android/server/wm/InsetsControlTarget;
-HPLcom/android/server/wm/DisplayContent;->getImeInputTarget()Lcom/android/server/wm/InputTarget;
-PLcom/android/server/wm/DisplayContent;->getImePolicy()I
+HPLcom/android/server/wm/DisplayContent;->getImeHostOrFallback(Lcom/android/server/wm/WindowState;)Lcom/android/server/wm/InsetsControlTarget;
+HPLcom/android/server/wm/DisplayContent;->getImePolicy()I
HPLcom/android/server/wm/DisplayContent;->getImeTarget(I)Lcom/android/server/wm/InsetsControlTarget;
PLcom/android/server/wm/DisplayContent;->getInitialDisplayDensity()I
-PLcom/android/server/wm/DisplayContent;->getInputMethodWindowVisibleHeight()I
-HPLcom/android/server/wm/DisplayContent;->getInputMonitor()Lcom/android/server/wm/InputMonitor;
-PLcom/android/server/wm/DisplayContent;->getInputOverlayLayer()Landroid/view/SurfaceControl;
-HPLcom/android/server/wm/DisplayContent;->getInsetsPolicy()Lcom/android/server/wm/InsetsPolicy;
-HPLcom/android/server/wm/DisplayContent;->getInsetsStateController()Lcom/android/server/wm/InsetsStateController;
-HPLcom/android/server/wm/DisplayContent;->getKeepClearAreas(Ljava/util/Set;Ljava/util/Set;)V
-PLcom/android/server/wm/DisplayContent;->getLastHasContent()Z
-PLcom/android/server/wm/DisplayContent;->getMetricsLogger()Lcom/android/internal/logging/MetricsLogger;
+HPLcom/android/server/wm/DisplayContent;->getInputMethodWindowVisibleHeight()I
+PLcom/android/server/wm/DisplayContent;->getInsetsStateController()Lcom/android/server/wm/InsetsStateController;
+PLcom/android/server/wm/DisplayContent;->getLayerCaptureArgs(Ljava/util/Set;)Landroid/window/ScreenCapture$LayerCaptureArgs;
PLcom/android/server/wm/DisplayContent;->getMinimalTaskSizeDp()I
PLcom/android/server/wm/DisplayContent;->getName()Ljava/lang/String;
HPLcom/android/server/wm/DisplayContent;->getOrientation()I
-PLcom/android/server/wm/DisplayContent;->getOrientationRequestingTaskDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
+PLcom/android/server/wm/DisplayContent;->getProtoFieldId()J
PLcom/android/server/wm/DisplayContent;->getRelativeDisplayRotation()I
-PLcom/android/server/wm/DisplayContent;->getRootTaskCount()I
-PLcom/android/server/wm/DisplayContent;->getRotation()I
-PLcom/android/server/wm/DisplayContent;->getRotationAnimation()Lcom/android/server/wm/ScreenRotationAnimation;
-PLcom/android/server/wm/DisplayContent;->getSession()Landroid/view/SurfaceSession;
-PLcom/android/server/wm/DisplayContent;->getStableRect(Landroid/graphics/Rect;)V
-HPLcom/android/server/wm/DisplayContent;->getWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/WindowToken;
-PLcom/android/server/wm/DisplayContent;->handleActivitySizeCompatModeIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/DisplayContent;->getStableRect(Landroid/graphics/Rect;)V
+PLcom/android/server/wm/DisplayContent;->getWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/WindowToken;
+PLcom/android/server/wm/DisplayContent;->getWindowingLayer()Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/DisplayContent;->handleActivitySizeCompatModeIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
PLcom/android/server/wm/DisplayContent;->handleAnimatingStoppedAndTransition()V
HPLcom/android/server/wm/DisplayContent;->handleCompleteDeferredRemoval()Z
HPLcom/android/server/wm/DisplayContent;->handleTopActivityLaunchingInDifferentOrientation(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Z)Z
HPLcom/android/server/wm/DisplayContent;->handlesOrientationChangeFromDescendant(I)Z
PLcom/android/server/wm/DisplayContent;->hasAccess(I)Z
+PLcom/android/server/wm/DisplayContent;->hasAlertWindowSurfaces()Z
HPLcom/android/server/wm/DisplayContent;->hasOwnFocus()Z
HPLcom/android/server/wm/DisplayContent;->inTransition()Z
-PLcom/android/server/wm/DisplayContent;->initializeDisplayBaseInfo()V
+PLcom/android/server/wm/DisplayContent;->isFixedRotationLaunchingApp(Lcom/android/server/wm/ActivityRecord;)Z
PLcom/android/server/wm/DisplayContent;->isHomeSupported()Z
-PLcom/android/server/wm/DisplayContent;->isImeControlledByApp()Z
PLcom/android/server/wm/DisplayContent;->isInTouchMode()Z
-PLcom/android/server/wm/DisplayContent;->isInputMethodClientFocus(II)Z
-PLcom/android/server/wm/DisplayContent;->isKeyguardAlwaysUnlocked()Z
-HPLcom/android/server/wm/DisplayContent;->isKeyguardGoingAway()Z
HPLcom/android/server/wm/DisplayContent;->isKeyguardLocked()Z
-HPLcom/android/server/wm/DisplayContent;->isLayoutNeeded()Z
-PLcom/android/server/wm/DisplayContent;->isNextTransitionForward()Z
+HPLcom/android/server/wm/DisplayContent;->isNextTransitionForward()Z
PLcom/android/server/wm/DisplayContent;->isPrivate()Z
+PLcom/android/server/wm/DisplayContent;->isPublicSecondaryDisplayWithDesktopModeForceEnabled()Z
PLcom/android/server/wm/DisplayContent;->isReady()Z
-HPLcom/android/server/wm/DisplayContent;->isRemoved()Z
-HPLcom/android/server/wm/DisplayContent;->isRemoving()Z
-PLcom/android/server/wm/DisplayContent;->isRotationChanging()Z
-HPLcom/android/server/wm/DisplayContent;->isSleeping()Z
-PLcom/android/server/wm/DisplayContent;->isTrusted()Z
+HPLcom/android/server/wm/DisplayContent;->isRotationChanging()Z
+PLcom/android/server/wm/DisplayContent;->isSyncFinished(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)Z
PLcom/android/server/wm/DisplayContent;->isVisible()Z
-PLcom/android/server/wm/DisplayContent;->isVisibleRequested()Z
-HPLcom/android/server/wm/DisplayContent;->lambda$calculateSystemGestureExclusion$34(Lcom/android/server/wm/RecentsAnimationController;Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Region;[ILandroid/graphics/Region;Landroid/graphics/Region;Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/DisplayContent;->lambda$ensureActivitiesVisible$47(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/Task;)V
-HPLcom/android/server/wm/DisplayContent;->lambda$getKeepClearAreas$37(Lcom/android/server/wm/RecentsAnimationController;Ljava/util/Set;Ljava/util/Set;Landroid/graphics/Matrix;[FLcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/DisplayContent;->lambda$getRootTaskCount$15([ILcom/android/server/wm/Task;)V
-HPLcom/android/server/wm/DisplayContent;->lambda$new$1(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayContent;->lambda$new$2(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/DisplayContent;->lambda$new$3(Lcom/android/server/wm/WindowState;)Z
-HPLcom/android/server/wm/DisplayContent;->lambda$new$4(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayContent;->lambda$new$5(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayContent;->lambda$new$6(Lcom/android/server/wm/WindowState;)Z
-HPLcom/android/server/wm/DisplayContent;->lambda$new$7(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/DisplayContent;->lambda$new$8(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayContent;->lambda$onImeInsetsClientVisibilityUpdate$27([ZLcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/DisplayContent;->lambda$shouldWaitForSystemDecorWindowsOnBoot$31(Landroid/util/SparseBooleanArray;Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/DisplayContent;->lambda$topRunningActivity$40(ZLcom/android/server/wm/TaskDisplayArea;)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/DisplayContent;->lambda$updateDisplayAreaOrganizers$17(Lcom/android/server/wm/DisplayArea;)V
-PLcom/android/server/wm/DisplayContent;->lambda$updateImeControlTarget$28(Landroid/os/IBinder;)V
-PLcom/android/server/wm/DisplayContent;->lambda$updateImeParent$29()V
-PLcom/android/server/wm/DisplayContent;->logsGestureExclusionRestrictions(Lcom/android/server/wm/WindowState;)Z
-HPLcom/android/server/wm/DisplayContent;->makeChildSurface(Lcom/android/server/wm/WindowContainer;)Landroid/view/SurfaceControl$Builder;
+HPLcom/android/server/wm/DisplayContent;->isVisibleRequested()Z
+PLcom/android/server/wm/DisplayContent;->makeAnimationLeash()Landroid/view/SurfaceControl$Builder;
+HPLcom/android/server/wm/DisplayContent;->makeChildSurface(Lcom/android/server/wm/WindowContainer;)Landroid/view/SurfaceControl$Builder;+]Landroid/view/SurfaceControl$Builder;Landroid/view/SurfaceControl$Builder;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types
HPLcom/android/server/wm/DisplayContent;->needsGestureExclusionRestrictions(Lcom/android/server/wm/WindowState;Z)Z
-PLcom/android/server/wm/DisplayContent;->notifyInsetsChanged(Ljava/util/function/Consumer;)V
-PLcom/android/server/wm/DisplayContent;->okToAnimate(ZZ)Z
-PLcom/android/server/wm/DisplayContent;->okToDisplay()Z
+PLcom/android/server/wm/DisplayContent;->notifyKeyguardFlagsChanged()V
+HPLcom/android/server/wm/DisplayContent;->okToAnimate(ZZ)Z
HPLcom/android/server/wm/DisplayContent;->okToDisplay(ZZ)Z
PLcom/android/server/wm/DisplayContent;->onAppTransitionDone()V
-HPLcom/android/server/wm/DisplayContent;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/DisplayContent;->onConfigurationChanged(Landroid/content/res/Configuration;)V
PLcom/android/server/wm/DisplayContent;->onDescendantOrientationChanged(Lcom/android/server/wm/WindowContainer;)Z
PLcom/android/server/wm/DisplayContent;->onDescendantOverrideConfigurationChanged()V
-PLcom/android/server/wm/DisplayContent;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/DisplayContent;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
HPLcom/android/server/wm/DisplayContent;->onDisplayInfoChanged()V
-PLcom/android/server/wm/DisplayContent;->onDisplayInfoUpdated(Landroid/view/DisplayInfo;)V
-PLcom/android/server/wm/DisplayContent;->onImeInsetsClientVisibilityUpdate()Z
-PLcom/android/server/wm/DisplayContent;->onLastFocusedTaskDisplayAreaChanged(Lcom/android/server/wm/TaskDisplayArea;)V
PLcom/android/server/wm/DisplayContent;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
PLcom/android/server/wm/DisplayContent;->onRequestedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
PLcom/android/server/wm/DisplayContent;->onResize()V
PLcom/android/server/wm/DisplayContent;->onRunningActivityChanged()V
-PLcom/android/server/wm/DisplayContent;->onTransitionFinished()V
-PLcom/android/server/wm/DisplayContent;->onWindowAnimationFinished(Lcom/android/server/wm/WindowContainer;I)V
-HPLcom/android/server/wm/DisplayContent;->performDisplayOverrideConfigUpdate(Landroid/content/res/Configuration;)I
-HPLcom/android/server/wm/DisplayContent;->performLayout(ZZ)V
-HPLcom/android/server/wm/DisplayContent;->performLayoutNoTrace(ZZ)V
-PLcom/android/server/wm/DisplayContent;->prepareAppTransition(I)V
-PLcom/android/server/wm/DisplayContent;->prepareAppTransition(II)V
+PLcom/android/server/wm/DisplayContent;->performDisplayOverrideConfigUpdate(Landroid/content/res/Configuration;)I
+HPLcom/android/server/wm/DisplayContent;->performLayout(Z)V
+HPLcom/android/server/wm/DisplayContent;->prepareAppTransition(II)V
HPLcom/android/server/wm/DisplayContent;->prepareSurfaces()V
PLcom/android/server/wm/DisplayContent;->providesMaxBounds()Z
-PLcom/android/server/wm/DisplayContent;->reParentWindowToken(Lcom/android/server/wm/WindowToken;)V
-PLcom/android/server/wm/DisplayContent;->reapplyMagnificationSpec()V
+HPLcom/android/server/wm/DisplayContent;->reParentWindowToken(Lcom/android/server/wm/WindowToken;)V
PLcom/android/server/wm/DisplayContent;->reconfigureDisplayLocked()V
PLcom/android/server/wm/DisplayContent;->reduceCompatConfigWidthSize(IILandroid/util/DisplayMetrics;II)I
-PLcom/android/server/wm/DisplayContent;->refreshImeSecureFlag(Landroid/view/SurfaceControl$Transaction;)Z
-PLcom/android/server/wm/DisplayContent;->registerDecorViewGestureListener(Landroid/view/IDecorViewGestureListener;)V
PLcom/android/server/wm/DisplayContent;->registerPointerEventListener(Landroid/view/WindowManagerPolicyConstants$PointerEventListener;)V
-PLcom/android/server/wm/DisplayContent;->registerSystemGestureExclusionListener(Landroid/view/ISystemGestureExclusionListener;)V
+PLcom/android/server/wm/DisplayContent;->releaseSelfIfNeeded()V
PLcom/android/server/wm/DisplayContent;->removeImeSurfaceByTarget(Lcom/android/server/wm/WindowContainer;)V
PLcom/android/server/wm/DisplayContent;->removeImeSurfaceImmediately()V
PLcom/android/server/wm/DisplayContent;->removeWindowToken(Landroid/os/IBinder;Z)Lcom/android/server/wm/WindowToken;
-PLcom/android/server/wm/DisplayContent;->requestDisplayUpdate(Ljava/lang/Runnable;)V
-PLcom/android/server/wm/DisplayContent;->rotationForActivityInDifferentOrientation(Lcom/android/server/wm/ActivityRecord;)I
-PLcom/android/server/wm/DisplayContent;->sandboxDisplayApis()Z
-PLcom/android/server/wm/DisplayContent;->scheduleToastWindowsTimeoutIfNeededLocked(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->requestChangeTransition(ILandroid/window/TransitionRequestInfo$DisplayChange;)V
+HPLcom/android/server/wm/DisplayContent;->requestDisplayUpdate(Ljava/lang/Runnable;)V
+HPLcom/android/server/wm/DisplayContent;->rotationForActivityInDifferentOrientation(Lcom/android/server/wm/ActivityRecord;)I
PLcom/android/server/wm/DisplayContent;->sendNewConfiguration()Z
PLcom/android/server/wm/DisplayContent;->setDisplayInfoOverride()V
-HPLcom/android/server/wm/DisplayContent;->setDisplayMirroring()Z
-PLcom/android/server/wm/DisplayContent;->setFocusedApp(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/DisplayContent;->setFocusedApp(Lcom/android/server/wm/ActivityRecord;)Z
PLcom/android/server/wm/DisplayContent;->setIgnoreOrientationRequest(Z)Z
-PLcom/android/server/wm/DisplayContent;->setImeInputTarget(Lcom/android/server/wm/InputTarget;)V
-PLcom/android/server/wm/DisplayContent;->setImeLayeringTargetInner(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->setImeInputTarget(Lcom/android/server/wm/InputTarget;)V
+PLcom/android/server/wm/DisplayContent;->setImeLayeringTarget(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->setImeLayeringTargetInner(Lcom/android/server/wm/WindowState;)V
PLcom/android/server/wm/DisplayContent;->setInputMethodWindowLocked(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayContent;->setLayoutNeeded()V
PLcom/android/server/wm/DisplayContent;->setRemoteInsetsController(Landroid/view/IDisplayWindowInsetsController;)V
-HPLcom/android/server/wm/DisplayContent;->shouldDeferRemoval()Z
-HPLcom/android/server/wm/DisplayContent;->shouldImeAttachedToApp()Z
-PLcom/android/server/wm/DisplayContent;->shouldRotateWithContent()Z
-PLcom/android/server/wm/DisplayContent;->shouldSleep()Z
-PLcom/android/server/wm/DisplayContent;->shouldSyncRotationChange(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/DisplayContent;->shouldDeferRemoval()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/DisplayContent;->shouldImeAttachedToApp()Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/InputTarget;Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/DisplayContent;->shouldSleep()Z
PLcom/android/server/wm/DisplayContent;->shouldWaitForSystemDecorWindowsOnBoot()Z
+HPLcom/android/server/wm/DisplayContent;->showImeScreenshot()V
PLcom/android/server/wm/DisplayContent;->toString()Ljava/lang/String;
-PLcom/android/server/wm/DisplayContent;->topRunningActivity()Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/DisplayContent;->topRunningActivity(Z)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/DisplayContent;->topRunningActivity(Z)Lcom/android/server/wm/ActivityRecord;
PLcom/android/server/wm/DisplayContent;->updateBaseDisplayMetrics(IIIFF)V
-HPLcom/android/server/wm/DisplayContent;->updateBaseDisplayMetricsIfNeeded(Landroid/view/DisplayInfo;)V
-HPLcom/android/server/wm/DisplayContent;->updateDisplayAndOrientation(Landroid/content/res/Configuration;)Landroid/view/DisplayInfo;
+PLcom/android/server/wm/DisplayContent;->updateDisplayAndOrientation(Landroid/content/res/Configuration;)Landroid/view/DisplayInfo;
PLcom/android/server/wm/DisplayContent;->updateDisplayAreaOrganizers()V
-PLcom/android/server/wm/DisplayContent;->updateDisplayFrames(Lcom/android/server/wm/DisplayFrames;III)Z
-PLcom/android/server/wm/DisplayContent;->updateDisplayFrames(Z)V
-PLcom/android/server/wm/DisplayContent;->updateDisplayInfo(Landroid/view/DisplayInfo;)V
-PLcom/android/server/wm/DisplayContent;->updateDisplayOverrideConfigurationLocked()Z
+HPLcom/android/server/wm/DisplayContent;->updateDisplayFrames(Z)V
HPLcom/android/server/wm/DisplayContent;->updateDisplayOverrideConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;Z)Z
-HPLcom/android/server/wm/DisplayContent;->updateFocusedWindowLocked(IZI)Z
-PLcom/android/server/wm/DisplayContent;->updateImeControlTarget()V
-PLcom/android/server/wm/DisplayContent;->updateImeControlTarget(Z)V
-PLcom/android/server/wm/DisplayContent;->updateImeInputAndControlTarget(Lcom/android/server/wm/InputTarget;)V
-PLcom/android/server/wm/DisplayContent;->updateImeParent()V
-HPLcom/android/server/wm/DisplayContent;->updateKeepClearAreas()V
-PLcom/android/server/wm/DisplayContent;->updateOrientation()Z
+HPLcom/android/server/wm/DisplayContent;->updateImeControlTarget(Z)V
+HPLcom/android/server/wm/DisplayContent;->updateImeInputAndControlTarget(Lcom/android/server/wm/InputTarget;)V
+HPLcom/android/server/wm/DisplayContent;->updateImeParent()V
+HPLcom/android/server/wm/DisplayContent;->updateKeepClearAreas()V+]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Landroid/view/IDisplayWindowListener;Landroid/view/IDisplayWindowListener$Stub$Proxy;
PLcom/android/server/wm/DisplayContent;->updateOrientation(Lcom/android/server/wm/WindowContainer;Z)Landroid/content/res/Configuration;
-HPLcom/android/server/wm/DisplayContent;->updateOrientation(Z)Z
-HPLcom/android/server/wm/DisplayContent;->updateRecording()V
-PLcom/android/server/wm/DisplayContent;->updateRotationUnchecked()Z
-HPLcom/android/server/wm/DisplayContent;->updateSystemGestureExclusion()Z
-PLcom/android/server/wm/DisplayContent;->updateSystemGestureExclusionLimit()V
-HPLcom/android/server/wm/DisplayContent;->updateTouchExcludeRegion()V
+HPLcom/android/server/wm/DisplayContent;->updateOrientation(Z)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/TaskDisplayArea;
+HPLcom/android/server/wm/DisplayContent;->updateRecording()V+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;
+HPLcom/android/server/wm/DisplayContent;->updateSystemGestureExclusion()Z+]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Landroid/view/ISystemGestureExclusionListener;Landroid/view/ISystemGestureExclusionListener$Stub$Proxy;
HPLcom/android/server/wm/DisplayContent;->updateWindowsForAnimator()V
PLcom/android/server/wm/DisplayFrames;-><clinit>()V
PLcom/android/server/wm/DisplayFrames;-><init>()V
@@ -26972,1109 +21423,637 @@ PLcom/android/server/wm/DisplayFrames;-><init>(Landroid/view/InsetsState;Landroi
HPLcom/android/server/wm/DisplayFrames;->update(IIILandroid/view/DisplayCutout;Landroid/view/RoundedCorners;Landroid/view/PrivacyIndicatorBounds;Landroid/view/DisplayShape;)Z
PLcom/android/server/wm/DisplayHashController$Handler;-><init>(Lcom/android/server/wm/DisplayHashController;Landroid/os/Looper;)V
PLcom/android/server/wm/DisplayHashController;-><init>(Landroid/content/Context;)V
-PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
-PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda12;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/wm/DisplayPolicy;Ljava/util/function/Consumer;)V
-PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda13;->run()V
-PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda14;-><init>()V
-HPLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda14;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
-PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda2;-><init>(Lcom/android/internal/policy/GestureNavigationSettingsObserver;)V
+PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda11;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/wm/DisplayPolicy;Ljava/util/function/Consumer;)V
+PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda12;->run()V
+HPLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda13;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/DisplayPolicy;I)V
+PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda2;-><init>(Lcom/android/internal/policy/GestureNavigationSettingsObserver;I)V
PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda2;->run()V
-PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
-PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda4;-><init>(Lcom/android/internal/policy/ForceShowNavBarSettingsObserver;)V
+PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda4;-><init>(Lcom/android/internal/policy/ForceShowNavBarSettingsObserver;I)V
PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda4;->run()V
-PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda8;-><init>(II[Lcom/android/internal/view/AppearanceRegion;ZIILjava/lang/String;[Lcom/android/internal/statusbar/LetterboxDetails;)V
-PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda8;-><init>(II[Lcom/android/internal/view/AppearanceRegion;ZIILjava/lang/String;[Lcom/android/internal/statusbar/LetterboxDetails;)V
+HPLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;)V
PLcom/android/server/wm/DisplayPolicy$1$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/DisplayPolicy$1;)V
PLcom/android/server/wm/DisplayPolicy$1$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/DisplayPolicy$1;)V
PLcom/android/server/wm/DisplayPolicy$1$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/DisplayPolicy$1;)V
PLcom/android/server/wm/DisplayPolicy$1$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/DisplayPolicy$1;)V
PLcom/android/server/wm/DisplayPolicy$1;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
-PLcom/android/server/wm/DisplayPolicy$2$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/DisplayPolicy$2;JJ)V
-PLcom/android/server/wm/DisplayPolicy$2$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/wm/DisplayPolicy$2$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/DisplayPolicy$2;I)V
-PLcom/android/server/wm/DisplayPolicy$2$$ExternalSyntheticLambda1;->run()V
-PLcom/android/server/wm/DisplayPolicy$2$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/DisplayPolicy$2;I)V
-PLcom/android/server/wm/DisplayPolicy$2$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/DisplayPolicy$2;I)V
-PLcom/android/server/wm/DisplayPolicy$2$$ExternalSyntheticLambda3;->run()V
-PLcom/android/server/wm/DisplayPolicy$2;->$r8$lambda$LNgePaZheD4TlU5IrmvA1klqhxA(Lcom/android/server/wm/DisplayPolicy$2;I)V
-PLcom/android/server/wm/DisplayPolicy$2;->$r8$lambda$_oCBJp-Ybw1Pg_ZtEZnsleQENV8(Lcom/android/server/wm/DisplayPolicy$2;JJ)V
-PLcom/android/server/wm/DisplayPolicy$2;->$r8$lambda$qveQftqQbx73evHdRr8UoP4AtdU(Lcom/android/server/wm/DisplayPolicy$2;I)V
-PLcom/android/server/wm/DisplayPolicy$2;-><init>(Lcom/android/server/wm/DisplayPolicy;I)V
-PLcom/android/server/wm/DisplayPolicy$2;->lambda$$0(I)V
-PLcom/android/server/wm/DisplayPolicy$2;->lambda$$2(I)V
-PLcom/android/server/wm/DisplayPolicy$2;->lambda$onAppTransitionStartingLocked$3(JJ)V
+PLcom/android/server/wm/DisplayPolicy$1;->allowsSideSwipe(Landroid/graphics/Region;)Z
+PLcom/android/server/wm/DisplayPolicy$1;->getControllableInsets(Lcom/android/server/wm/WindowState;)Landroid/graphics/Insets;
+PLcom/android/server/wm/DisplayPolicy$1;->onSwipeFromBottom()V
+PLcom/android/server/wm/DisplayPolicy$1;->onSwipeFromLeft()V
+PLcom/android/server/wm/DisplayPolicy$1;->onSwipeFromRight()V
+PLcom/android/server/wm/DisplayPolicy$1;->onSwipeFromTop()V
+PLcom/android/server/wm/DisplayPolicy$2$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/DisplayPolicy$2;J)V
+HPLcom/android/server/wm/DisplayPolicy$2$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/wm/DisplayPolicy$2$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/DisplayPolicy$2;II)V
+HPLcom/android/server/wm/DisplayPolicy$2$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/wm/DisplayPolicy$2;-><init>(Lcom/android/server/wm/DisplayPolicy;II)V
+PLcom/android/server/wm/DisplayPolicy$2;->onAppTransitionCancelledLocked(Z)V
PLcom/android/server/wm/DisplayPolicy$2;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
-PLcom/android/server/wm/DisplayPolicy$2;->onAppTransitionPendingLocked()V
-PLcom/android/server/wm/DisplayPolicy$2;->onAppTransitionStartingLocked(JJ)I
+HPLcom/android/server/wm/DisplayPolicy$2;->onAppTransitionPendingLocked()V
+PLcom/android/server/wm/DisplayPolicy$2;->onAppTransitionStartingLocked(J)I
PLcom/android/server/wm/DisplayPolicy$3;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
-PLcom/android/server/wm/DisplayPolicy$DecorInsets$Info;->-$$Nest$fgetmNeedUpdate(Lcom/android/server/wm/DisplayPolicy$DecorInsets$Info;)Z
PLcom/android/server/wm/DisplayPolicy$DecorInsets$Info;-><init>()V
-HPLcom/android/server/wm/DisplayPolicy$DecorInsets$Info;->update(Lcom/android/server/wm/DisplayContent;III)Landroid/view/InsetsState;
+PLcom/android/server/wm/DisplayPolicy$DecorInsets$Info;->toString()Ljava/lang/String;
+PLcom/android/server/wm/DisplayPolicy$DecorInsets$Info;->update(IIILcom/android/server/wm/DisplayContent;)Landroid/view/InsetsState;
PLcom/android/server/wm/DisplayPolicy$DecorInsets;-><init>(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DisplayPolicy$DecorInsets;->get(III)Lcom/android/server/wm/DisplayPolicy$DecorInsets$Info;
+PLcom/android/server/wm/DisplayPolicy$DecorInsets;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
PLcom/android/server/wm/DisplayPolicy$PolicyHandler;-><init>(Lcom/android/server/wm/DisplayPolicy;Landroid/os/Looper;)V
-PLcom/android/server/wm/DisplayPolicy;->$r8$lambda$S9Cw3H7Au_8y1didKjHd-o8hjOw(II[Lcom/android/internal/view/AppearanceRegion;ZIILjava/lang/String;[Lcom/android/internal/statusbar/LetterboxDetails;Lcom/android/server/statusbar/StatusBarManagerInternal;)V
-PLcom/android/server/wm/DisplayPolicy;->$r8$lambda$apsBX7VdE-wGYMlb3sIKMcyPkLk(Lcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/DisplayPolicy;->$r8$lambda$qTqmnzax3qYvwsMFcbv6VpXmHVI(Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowContainer;Landroid/graphics/Rect;)Ljava/lang/Integer;
-PLcom/android/server/wm/DisplayPolicy;->$r8$lambda$t_gphUvbhCH7Bf26xg6TpoLO9Jg(Lcom/android/server/wm/DisplayPolicy;Ljava/util/function/Consumer;)V
-PLcom/android/server/wm/DisplayPolicy;->-$$Nest$fgetmContext(Lcom/android/server/wm/DisplayPolicy;)Landroid/content/Context;
-PLcom/android/server/wm/DisplayPolicy;->-$$Nest$fgetmHandler(Lcom/android/server/wm/DisplayPolicy;)Landroid/os/Handler;
PLcom/android/server/wm/DisplayPolicy;-><clinit>()V
-HPLcom/android/server/wm/DisplayPolicy;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayPolicy;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
PLcom/android/server/wm/DisplayPolicy;->addWindowLw(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;)V
HPLcom/android/server/wm/DisplayPolicy;->adjustWindowParamsLw(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;)V
-HPLcom/android/server/wm/DisplayPolicy;->applyKeyguardPolicy(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/DisplayPolicy;->applyPostLayoutPolicyLw(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayPolicy;->areSystemBarsForcedConsumedLw()Z
-HPLcom/android/server/wm/DisplayPolicy;->areTypesForciblyShownTransiently(I)Z
-HPLcom/android/server/wm/DisplayPolicy;->beginPostLayoutPolicyLw()V
-PLcom/android/server/wm/DisplayPolicy;->callStatusBarSafely(Ljava/util/function/Consumer;)V
-HPLcom/android/server/wm/DisplayPolicy;->chooseNavigationBackgroundWindow(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;I)Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/DisplayPolicy;->chooseNavigationColorWindowLw(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;I)Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/DisplayPolicy;->clearNavBarOpaqueFlag(I)I
-HPLcom/android/server/wm/DisplayPolicy;->configureNavBarOpacity(IZZ)I
-HPLcom/android/server/wm/DisplayPolicy;->configureStatusBarOpacity(I)I
+HPLcom/android/server/wm/DisplayPolicy;->beginPostLayoutPolicyLw()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/DisplayPolicy;->chooseNavigationBackgroundWindow(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;Z)Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/DisplayPolicy;->chooseNavigationColorWindowLw(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;Z)Lcom/android/server/wm/WindowState;
PLcom/android/server/wm/DisplayPolicy;->drawsBarBackground(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/DisplayPolicy;->finishKeyguardDrawn()Z
-HPLcom/android/server/wm/DisplayPolicy;->finishPostLayoutPolicyLw()V
-PLcom/android/server/wm/DisplayPolicy;->finishScreenTurningOn()Z
-PLcom/android/server/wm/DisplayPolicy;->finishWindowsDrawn()Z
-PLcom/android/server/wm/DisplayPolicy;->focusChangedLw(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayPolicy;->finishPostLayoutPolicyLw()V+]Ljava/util/HashSet;Ljava/util/HashSet;
+PLcom/android/server/wm/DisplayPolicy;->getBarContentFrameForWindow(Lcom/android/server/wm/WindowState;I)Landroid/graphics/Rect;
PLcom/android/server/wm/DisplayPolicy;->getContext()Landroid/content/Context;
PLcom/android/server/wm/DisplayPolicy;->getCurrentUserResources()Landroid/content/res/Resources;
-PLcom/android/server/wm/DisplayPolicy;->getDecorInsetsInfo(III)Lcom/android/server/wm/DisplayPolicy$DecorInsets$Info;
-HPLcom/android/server/wm/DisplayPolicy;->getDisplayId()I
-PLcom/android/server/wm/DisplayPolicy;->getDockMode()I
-PLcom/android/server/wm/DisplayPolicy;->getImeSourceFrameProvider()Lcom/android/internal/util/function/TriFunction;
-HPLcom/android/server/wm/DisplayPolicy;->getInsetsPolicy()Lcom/android/server/wm/InsetsPolicy;
-PLcom/android/server/wm/DisplayPolicy;->getLidState()I
-HPLcom/android/server/wm/DisplayPolicy;->getNotificationShade()Lcom/android/server/wm/WindowState;
-HPLcom/android/server/wm/DisplayPolicy;->getRefreshRatePolicy()Lcom/android/server/wm/RefreshRatePolicy;
-PLcom/android/server/wm/DisplayPolicy;->getScreenOnListener()Lcom/android/server/policy/WindowManagerPolicy$ScreenOnListener;
-PLcom/android/server/wm/DisplayPolicy;->getStatusBar()Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/DisplayPolicy;->getStatusBarManagerInternal()Lcom/android/server/statusbar/StatusBarManagerInternal;
-PLcom/android/server/wm/DisplayPolicy;->getSystemUiContext()Landroid/content/Context;
-PLcom/android/server/wm/DisplayPolicy;->getTopFullscreenOpaqueWindow()Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/DisplayPolicy;->getWindowCornerRadius()F
-PLcom/android/server/wm/DisplayPolicy;->hasNavigationBar()Z
-HPLcom/android/server/wm/DisplayPolicy;->intersectsAnyInsets(Landroid/graphics/Rect;Landroid/view/InsetsState;I)Z
-PLcom/android/server/wm/DisplayPolicy;->isAwake()Z
-PLcom/android/server/wm/DisplayPolicy;->isCarDockEnablesAccelerometer()Z
-PLcom/android/server/wm/DisplayPolicy;->isDeskDockEnablesAccelerometer()Z
-PLcom/android/server/wm/DisplayPolicy;->isForceShowNavigationBarEnabled()Z
+HPLcom/android/server/wm/DisplayPolicy;->getDecorInsetsInfo(III)Lcom/android/server/wm/DisplayPolicy$DecorInsets$Info;
+PLcom/android/server/wm/DisplayPolicy;->getStatusBarManagerInternal()Lcom/android/server/statusbar/StatusBarManagerService$1;
+HPLcom/android/server/wm/DisplayPolicy;->intersectsAnyInsets(Landroid/graphics/Rect;Landroid/view/InsetsState;I)Z+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;
PLcom/android/server/wm/DisplayPolicy;->isFullyTransparentAllowed(Lcom/android/server/wm/WindowState;I)Z
-PLcom/android/server/wm/DisplayPolicy;->isHdmiPlugged()Z
-HPLcom/android/server/wm/DisplayPolicy;->isImmersiveMode(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/DisplayPolicy;->isKeyguardDrawComplete()Z
-PLcom/android/server/wm/DisplayPolicy;->isKeyguardOccluded()Z
-HPLcom/android/server/wm/DisplayPolicy;->isKeyguardShowing()Z
+HPLcom/android/server/wm/DisplayPolicy;->isImmersiveMode(Lcom/android/server/wm/WindowState;)Z+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;
HPLcom/android/server/wm/DisplayPolicy;->isOverlappingWithNavBar(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/DisplayPolicy;->isPersistentVrModeEnabled()Z
-PLcom/android/server/wm/DisplayPolicy;->isRemoteInsetsControllerControllingSystemBars()Z
-PLcom/android/server/wm/DisplayPolicy;->isScreenOnEarly()Z
-PLcom/android/server/wm/DisplayPolicy;->isScreenOnFully()Z
-HPLcom/android/server/wm/DisplayPolicy;->isShowingDreamLw()Z
-PLcom/android/server/wm/DisplayPolicy;->isWindowExcludedFromContent(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/DisplayPolicy;->isWindowManagerDrawComplete()Z
-PLcom/android/server/wm/DisplayPolicy;->lambda$callStatusBarSafely$8(Ljava/util/function/Consumer;)V
-PLcom/android/server/wm/DisplayPolicy;->lambda$getImeSourceFrameProvider$2(Lcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowContainer;Landroid/graphics/Rect;)Ljava/lang/Integer;
-PLcom/android/server/wm/DisplayPolicy;->lambda$updateSystemBarAttributes$7(II[Lcom/android/internal/view/AppearanceRegion;ZIILjava/lang/String;[Lcom/android/internal/statusbar/LetterboxDetails;Lcom/android/server/statusbar/StatusBarManagerInternal;)V
-HPLcom/android/server/wm/DisplayPolicy;->lambda$updateSystemBarsLw$9(Lcom/android/server/wm/Task;)Z
-HPLcom/android/server/wm/DisplayPolicy;->layoutWindowLw(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;Lcom/android/server/wm/DisplayFrames;)V
-HPLcom/android/server/wm/DisplayPolicy;->onConfigurationChanged()V
-PLcom/android/server/wm/DisplayPolicy;->onDisplayInfoChanged(Landroid/view/DisplayInfo;)V
-PLcom/android/server/wm/DisplayPolicy;->onSystemUiSettingsChanged()Z
-PLcom/android/server/wm/DisplayPolicy;->removeRelaunchingApp(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/DisplayPolicy;->removeWindowLw(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayPolicy;->resetSystemBarAttributes()V
-PLcom/android/server/wm/DisplayPolicy;->screenTurnedOn()V
-PLcom/android/server/wm/DisplayPolicy;->screenTurningOn(Lcom/android/server/policy/WindowManagerPolicy$ScreenOnListener;)V
-PLcom/android/server/wm/DisplayPolicy;->selectAnimation(Lcom/android/server/wm/WindowState;I)I
-PLcom/android/server/wm/DisplayPolicy;->setAwake(Z)V
+HPLcom/android/server/wm/DisplayPolicy;->layoutWindowLw(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;Lcom/android/server/wm/DisplayFrames;)V+]Landroid/view/WindowLayout;Landroid/view/WindowLayout;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/DisplayPolicy;->onConfigurationChanged()V
+HPLcom/android/server/wm/DisplayPolicy;->removeWindowLw(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayPolicy;->requestTransientBars(Lcom/android/server/wm/WindowState;Z)V
+HPLcom/android/server/wm/DisplayPolicy;->setAwake(Z)V
PLcom/android/server/wm/DisplayPolicy;->setDropInputModePolicy(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;)V
PLcom/android/server/wm/DisplayPolicy;->setHdmiPlugged(ZZ)V
-PLcom/android/server/wm/DisplayPolicy;->setLidState(I)V
-HPLcom/android/server/wm/DisplayPolicy;->shouldBeHiddenByKeyguard(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)Z
PLcom/android/server/wm/DisplayPolicy;->simulateLayoutDisplay(Lcom/android/server/wm/DisplayFrames;)V
PLcom/android/server/wm/DisplayPolicy;->systemReady()V
HPLcom/android/server/wm/DisplayPolicy;->topAppHidesSystemBar(I)Z
-HPLcom/android/server/wm/DisplayPolicy;->updateConfigurationAndScreenSizeDependentBehaviors()V
+PLcom/android/server/wm/DisplayPolicy;->updateConfigurationAndScreenSizeDependentBehaviors()V
PLcom/android/server/wm/DisplayPolicy;->updateCurrentUserResources()V
PLcom/android/server/wm/DisplayPolicy;->updateLightNavigationBarLw(ILcom/android/server/wm/WindowState;)I
-HPLcom/android/server/wm/DisplayPolicy;->updateSystemBarAttributes()V
-HPLcom/android/server/wm/DisplayPolicy;->updateSystemBarsLw(Lcom/android/server/wm/WindowState;I)I
-PLcom/android/server/wm/DisplayPolicy;->validateAddingWindowLw(Landroid/view/WindowManager$LayoutParams;II)I
-PLcom/android/server/wm/DisplayRotation$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/DisplayRotation;)V
+HPLcom/android/server/wm/DisplayPolicy;->updateSystemBarAttributes()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/DisplayPolicy;->validateAddingWindowLw(Landroid/view/WindowManager$LayoutParams;II)I
+PLcom/android/server/wm/DisplayRotation$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V
PLcom/android/server/wm/DisplayRotation$OrientationListener;-><init>(Lcom/android/server/wm/DisplayRotation;Landroid/content/Context;Landroid/os/Handler;I)V
-PLcom/android/server/wm/DisplayRotation$OrientationListener;->disable()V
PLcom/android/server/wm/DisplayRotation$OrientationListener;->run()V
-PLcom/android/server/wm/DisplayRotation$RotationAnimationPair;-><init>()V
-PLcom/android/server/wm/DisplayRotation$RotationAnimationPair;-><init>(Lcom/android/server/wm/DisplayRotation$RotationAnimationPair-IA;)V
-PLcom/android/server/wm/DisplayRotation$RotationHistory;-><init>()V
-PLcom/android/server/wm/DisplayRotation$RotationHistory;-><init>(Lcom/android/server/wm/DisplayRotation$RotationHistory-IA;)V
+PLcom/android/server/wm/DisplayRotation$RotationHistory;-><init>(I)V
PLcom/android/server/wm/DisplayRotation$RotationLockHistory$Record;-><init>(IILjava/lang/String;)V
-PLcom/android/server/wm/DisplayRotation$RotationLockHistory$Record;-><init>(IILjava/lang/String;Lcom/android/server/wm/DisplayRotation$RotationLockHistory$Record-IA;)V
-PLcom/android/server/wm/DisplayRotation$RotationLockHistory;-><init>()V
-PLcom/android/server/wm/DisplayRotation$RotationLockHistory;-><init>(Lcom/android/server/wm/DisplayRotation$RotationLockHistory-IA;)V
-PLcom/android/server/wm/DisplayRotation$RotationLockHistory;->addRecord(IILjava/lang/String;)V
PLcom/android/server/wm/DisplayRotation$SettingsObserver;-><init>(Lcom/android/server/wm/DisplayRotation;Landroid/os/Handler;)V
-PLcom/android/server/wm/DisplayRotation$SettingsObserver;->observe()V
PLcom/android/server/wm/DisplayRotation$SettingsObserver;->onChange(Z)V
-PLcom/android/server/wm/DisplayRotation;->-$$Nest$fgetmContext(Lcom/android/server/wm/DisplayRotation;)Landroid/content/Context;
PLcom/android/server/wm/DisplayRotation;->-$$Nest$mupdateSettings(Lcom/android/server/wm/DisplayRotation;)Z
-PLcom/android/server/wm/DisplayRotation;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;Landroid/view/DisplayAddress;Lcom/android/server/wm/DeviceStateController;Lcom/android/server/wm/DisplayRotationCoordinator;)V
PLcom/android/server/wm/DisplayRotation;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;Landroid/view/DisplayAddress;Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayWindowSettings;Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/wm/DeviceStateController;Lcom/android/server/wm/DisplayRotationCoordinator;)V
-HPLcom/android/server/wm/DisplayRotation;->configure(II)V
-PLcom/android/server/wm/DisplayRotation;->freezeRotation(ILjava/lang/String;)V
-PLcom/android/server/wm/DisplayRotation;->getDisplayPolicy()Lcom/android/server/wm/DisplayPolicy;
-PLcom/android/server/wm/DisplayRotation;->getRotation()I
+PLcom/android/server/wm/DisplayRotation;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
PLcom/android/server/wm/DisplayRotation;->initImmersiveAppCompatPolicy(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/DisplayRotationImmersiveAppCompatPolicy;
-PLcom/android/server/wm/DisplayRotation;->isFixedToUserRotation()Z
-PLcom/android/server/wm/DisplayRotation;->isRotatingSeamlessly()Z
+HPLcom/android/server/wm/DisplayRotation;->isFixedToUserRotation()Z
PLcom/android/server/wm/DisplayRotation;->isRotationFrozen()Z
PLcom/android/server/wm/DisplayRotation;->markForSeamlessRotation(Lcom/android/server/wm/WindowState;Z)V
-PLcom/android/server/wm/DisplayRotation;->needSensorRunning()Z
-PLcom/android/server/wm/DisplayRotation;->onUserSwitch()V
-PLcom/android/server/wm/DisplayRotation;->readDefaultDisplayRotation(Landroid/view/DisplayAddress;Lcom/android/server/wm/DisplayContent;)I
PLcom/android/server/wm/DisplayRotation;->readRotation(I)I
-PLcom/android/server/wm/DisplayRotation;->resetAllowAllRotations()V
-PLcom/android/server/wm/DisplayRotation;->restoreSettings(III)V
HPLcom/android/server/wm/DisplayRotation;->rotationForOrientation(II)I
PLcom/android/server/wm/DisplayRotation;->setFixedToUserRotation(I)V
PLcom/android/server/wm/DisplayRotation;->setUserRotation(IILjava/lang/String;)V
-PLcom/android/server/wm/DisplayRotation;->updateOrientation(IZ)Z
+HPLcom/android/server/wm/DisplayRotation;->updateOrientation(IZ)Z
PLcom/android/server/wm/DisplayRotation;->updateOrientationListener()V
HPLcom/android/server/wm/DisplayRotation;->updateOrientationListenerLw()V
HPLcom/android/server/wm/DisplayRotation;->updateRotationUnchecked(Z)Z
-PLcom/android/server/wm/DisplayRotation;->updateSettings()Z
-PLcom/android/server/wm/DisplayRotation;->updateUserDependentConfiguration(Landroid/content/res/Resources;)V
PLcom/android/server/wm/DisplayRotation;->useDefaultSettingsProvider()Z
-PLcom/android/server/wm/DisplayRotationCoordinator;-><init>()V
PLcom/android/server/wm/DisplayRotationCoordinator;->isSecondaryInternalDisplay(Lcom/android/server/wm/DisplayContent;)Z
-PLcom/android/server/wm/DisplayRotationCoordinator;->setDefaultDisplayDefaultRotation(I)V
-PLcom/android/server/wm/DisplayRotationImmersiveAppCompatPolicy;->createIfNeeded(Lcom/android/server/wm/LetterboxConfiguration;Lcom/android/server/wm/DisplayRotation;Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/DisplayRotationImmersiveAppCompatPolicy;
PLcom/android/server/wm/DisplayRotationReversionController;-><init>(Lcom/android/server/wm/DisplayContent;)V
-HPLcom/android/server/wm/DisplayRotationReversionController;->isRotationReversionEnabled()Z
PLcom/android/server/wm/DisplayWindowListenerController$$ExternalSyntheticLambda0;-><init>(Landroid/util/IntArray;)V
PLcom/android/server/wm/DisplayWindowListenerController$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/DisplayWindowListenerController;->$r8$lambda$P8K3uBbEYTKb3aHmbBwg4TPLVDk(Landroid/util/IntArray;Lcom/android/server/wm/DisplayContent;)V
PLcom/android/server/wm/DisplayWindowListenerController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/DisplayWindowListenerController;->dispatchDisplayAdded(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DisplayWindowListenerController;->dispatchDisplayChanged(Lcom/android/server/wm/DisplayContent;Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/DisplayWindowListenerController;->lambda$registerListener$0(Landroid/util/IntArray;Lcom/android/server/wm/DisplayContent;)V
PLcom/android/server/wm/DisplayWindowListenerController;->registerListener(Landroid/view/IDisplayWindowListener;)[I
PLcom/android/server/wm/DisplayWindowPolicyControllerHelper;-><init>(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DisplayWindowPolicyControllerHelper;->canActivityBeLaunched(Landroid/content/pm/ActivityInfo;Landroid/content/Intent;IIZ)Z
-PLcom/android/server/wm/DisplayWindowPolicyControllerHelper;->canShowTasksInHostDeviceRecents()Z
-PLcom/android/server/wm/DisplayWindowPolicyControllerHelper;->hasController()Z
-PLcom/android/server/wm/DisplayWindowPolicyControllerHelper;->hasDisplayCategory(Landroid/content/pm/ActivityInfo;)Z
-PLcom/android/server/wm/DisplayWindowPolicyControllerHelper;->onRunningActivityChanged()V
+PLcom/android/server/wm/DisplayWindowPolicyControllerHelper;->launchAllowedByDisplayPolicy(Landroid/content/pm/ActivityInfo;)Z
PLcom/android/server/wm/DisplayWindowSettings$SettingsProvider$SettingsEntry;-><init>()V
PLcom/android/server/wm/DisplayWindowSettings$SettingsProvider$SettingsEntry;-><init>(Lcom/android/server/wm/DisplayWindowSettings$SettingsProvider$SettingsEntry;)V
-HPLcom/android/server/wm/DisplayWindowSettings$SettingsProvider$SettingsEntry;->setTo(Lcom/android/server/wm/DisplayWindowSettings$SettingsProvider$SettingsEntry;)Z
-PLcom/android/server/wm/DisplayWindowSettings;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayWindowSettings$SettingsProvider;)V
-PLcom/android/server/wm/DisplayWindowSettings;->applyRotationSettingsToDisplayLocked(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DisplayWindowSettings;->applySettingsToDisplayLocked(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayWindowSettings$SettingsProvider$SettingsEntry;->setTo(Lcom/android/server/wm/DisplayWindowSettings$SettingsProvider$SettingsEntry;)Z
+PLcom/android/server/wm/DisplayWindowSettings;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayWindowSettingsProvider;)V
PLcom/android/server/wm/DisplayWindowSettings;->applySettingsToDisplayLocked(Lcom/android/server/wm/DisplayContent;Z)V
-PLcom/android/server/wm/DisplayWindowSettings;->getImePolicyLocked(Lcom/android/server/wm/DisplayContent;)I
-PLcom/android/server/wm/DisplayWindowSettings;->getWindowingModeLocked(Lcom/android/server/wm/DisplayContent;)I
PLcom/android/server/wm/DisplayWindowSettings;->getWindowingModeLocked(Lcom/android/server/wm/DisplayWindowSettings$SettingsProvider$SettingsEntry;Lcom/android/server/wm/DisplayContent;)I
-PLcom/android/server/wm/DisplayWindowSettings;->isHomeSupportedLocked(Lcom/android/server/wm/DisplayContent;)Z
-PLcom/android/server/wm/DisplayWindowSettings;->updateSettingsForDisplay(Lcom/android/server/wm/DisplayContent;)Z
+PLcom/android/server/wm/DisplayWindowSettingsProvider$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/DisplayWindowSettingsProvider;Ljava/util/Set;)V
+PLcom/android/server/wm/DisplayWindowSettingsProvider$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayWindowSettingsProvider$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/DisplayWindowSettingsProvider$$ExternalSyntheticLambda0;Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/DisplayWindowSettingsProvider$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
PLcom/android/server/wm/DisplayWindowSettingsProvider$AtomicFileStorage;-><init>(Landroid/util/AtomicFile;)V
-PLcom/android/server/wm/DisplayWindowSettingsProvider$AtomicFileStorage;->openRead()Ljava/io/InputStream;
PLcom/android/server/wm/DisplayWindowSettingsProvider$FileData;-><init>()V
-PLcom/android/server/wm/DisplayWindowSettingsProvider$FileData;-><init>(Lcom/android/server/wm/DisplayWindowSettingsProvider$FileData-IA;)V
-PLcom/android/server/wm/DisplayWindowSettingsProvider$ReadableSettings;-><init>(Lcom/android/server/wm/DisplayWindowSettingsProvider$ReadableSettingsStorage;)V
-PLcom/android/server/wm/DisplayWindowSettingsProvider$ReadableSettings;->getIdentifier(Landroid/view/DisplayInfo;)Ljava/lang/String;
-PLcom/android/server/wm/DisplayWindowSettingsProvider$ReadableSettings;->getSettingsEntry(Landroid/view/DisplayInfo;)Lcom/android/server/wm/DisplayWindowSettings$SettingsProvider$SettingsEntry;
-PLcom/android/server/wm/DisplayWindowSettingsProvider$ReadableSettings;->loadSettings(Lcom/android/server/wm/DisplayWindowSettingsProvider$ReadableSettingsStorage;)V
+PLcom/android/server/wm/DisplayWindowSettingsProvider$FileData;-><init>(Lcom/android/server/wm/DisplayWindowSettingsProvider$ReadableSettingsStorage;)V
+PLcom/android/server/wm/DisplayWindowSettingsProvider$FileData;->getIdentifier(Landroid/view/DisplayInfo;)Ljava/lang/String;
PLcom/android/server/wm/DisplayWindowSettingsProvider$WritableSettings;-><init>(Lcom/android/server/wm/DisplayWindowSettingsProvider$WritableSettingsStorage;)V
PLcom/android/server/wm/DisplayWindowSettingsProvider$WritableSettings;->getOrCreateSettingsEntry(Landroid/view/DisplayInfo;)Lcom/android/server/wm/DisplayWindowSettings$SettingsProvider$SettingsEntry;
-PLcom/android/server/wm/DisplayWindowSettingsProvider;->-$$Nest$smreadSettings(Lcom/android/server/wm/DisplayWindowSettingsProvider$ReadableSettingsStorage;)Lcom/android/server/wm/DisplayWindowSettingsProvider$FileData;
-PLcom/android/server/wm/DisplayWindowSettingsProvider;-><init>()V
PLcom/android/server/wm/DisplayWindowSettingsProvider;-><init>(Lcom/android/server/wm/DisplayWindowSettingsProvider$ReadableSettingsStorage;Lcom/android/server/wm/DisplayWindowSettingsProvider$WritableSettingsStorage;)V
-PLcom/android/server/wm/DisplayWindowSettingsProvider;->getBooleanAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;Ljava/lang/Boolean;)Ljava/lang/Boolean;
-PLcom/android/server/wm/DisplayWindowSettingsProvider;->getIntAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;I)I
-PLcom/android/server/wm/DisplayWindowSettingsProvider;->getIntegerAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;Ljava/lang/Integer;)Ljava/lang/Integer;
-PLcom/android/server/wm/DisplayWindowSettingsProvider;->getOverrideSettingsFile()Landroid/util/AtomicFile;
+PLcom/android/server/wm/DisplayWindowSettingsProvider;->getBooleanAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)Ljava/lang/Boolean;
+PLcom/android/server/wm/DisplayWindowSettingsProvider;->getIntegerAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)Ljava/lang/Integer;
PLcom/android/server/wm/DisplayWindowSettingsProvider;->getSettings(Landroid/view/DisplayInfo;)Lcom/android/server/wm/DisplayWindowSettings$SettingsProvider$SettingsEntry;
PLcom/android/server/wm/DisplayWindowSettingsProvider;->getVendorSettingsFile()Landroid/util/AtomicFile;
PLcom/android/server/wm/DisplayWindowSettingsProvider;->readConfig(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/wm/DisplayWindowSettingsProvider$FileData;)V
PLcom/android/server/wm/DisplayWindowSettingsProvider;->readDisplay(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/wm/DisplayWindowSettingsProvider$FileData;)V
-PLcom/android/server/wm/DisplayWindowSettingsProvider;->readSettings(Lcom/android/server/wm/DisplayWindowSettingsProvider$ReadableSettingsStorage;)Lcom/android/server/wm/DisplayWindowSettingsProvider$FileData;
+PLcom/android/server/wm/DisplayWindowSettingsProvider;->removeStaleDisplaySettingsLocked(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/RootWindowContainer;)V
PLcom/android/server/wm/DragDropController$1;-><init>(Lcom/android/server/wm/DragDropController;)V
PLcom/android/server/wm/DragDropController$DragHandler;-><init>(Lcom/android/server/wm/DragDropController;Lcom/android/server/wm/WindowManagerService;Landroid/os/Looper;)V
PLcom/android/server/wm/DragDropController;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/Looper;)V
-HPLcom/android/server/wm/DragDropController;->dragDropActiveLocked()Z
-PLcom/android/server/wm/EmbeddedWindowController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/EmbeddedWindowController;Landroid/os/IBinder;Landroid/window/InputTransferToken;)V
+PLcom/android/server/wm/DragDropController;->dragDropActiveLocked()Z
+PLcom/android/server/wm/EmbeddedWindowController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/EmbeddedWindowController;Landroid/os/IBinder;Landroid/window/InputTransferToken;Landroid/os/IBinder;)V
PLcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;-><init>(Lcom/android/server/wm/Session;Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;Lcom/android/server/wm/WindowState;IIIILandroid/window/InputTransferToken;Ljava/lang/String;Z)V
-PLcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;->getApplicationHandle()Landroid/view/InputApplicationHandle;
-PLcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;->getInputTransferToken()Landroid/window/InputTransferToken;
-PLcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;->getWindowToken()Landroid/os/IBinder;
-PLcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;->openInputChannel(Landroid/view/InputChannel;)V
-PLcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;->toString()Ljava/lang/String;
-PLcom/android/server/wm/EmbeddedWindowController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/EmbeddedWindowController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/input/InputManagerService;)V
PLcom/android/server/wm/EmbeddedWindowController;->add(Landroid/os/IBinder;Lcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;)V
-PLcom/android/server/wm/EmbeddedWindowController;->get(Landroid/os/IBinder;)Lcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;
-PLcom/android/server/wm/EmbeddedWindowController;->onWindowRemoved(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/EmbeddedWindowController;->updateProcessController(Lcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;)V
+PLcom/android/server/wm/EmbeddedWindowController;->remove(Landroid/os/IBinder;)V
PLcom/android/server/wm/EnsureActivitiesVisibleHelper;-><init>(Lcom/android/server/wm/TaskFragment;)V
-PLcom/android/server/wm/EnsureActivitiesVisibleHelper;->makeVisibleAndRestartIfNeeded(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->process(Lcom/android/server/wm/ActivityRecord;Z)V
-HPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->reset(Lcom/android/server/wm/ActivityRecord;Z)V
-HPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->setActivityVisibilityState(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Z)V
-PLcom/android/server/wm/EventLogTags;->writeWmAddToStopping(IILjava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/wm/EventLogTags;->writeWmBootAnimationDone(J)V
-PLcom/android/server/wm/EventLogTags;->writeWmCreateTask(IIII)V
-PLcom/android/server/wm/EventLogTags;->writeWmPauseActivity(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/wm/EventLogTags;->writeWmRestartActivity(IIILjava/lang/String;)V
-PLcom/android/server/wm/EventLogTags;->writeWmSetResumedActivity(ILjava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/wm/EventLogTags;->writeWmStopActivity(IILjava/lang/String;)V
-PLcom/android/server/wm/EventLogTags;->writeWmTaskCreated(I)V
-PLcom/android/server/wm/EventLogTags;->writeWmTaskMoved(IIIII)V
-PLcom/android/server/wm/EventLogTags;->writeWmTaskToFront(III)V
+HPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->process(Lcom/android/server/wm/ActivityRecord;Z)V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/HighRefreshRateDenylist$OnPropertiesChangedListener;-><init>(Lcom/android/server/wm/HighRefreshRateDenylist;)V
-PLcom/android/server/wm/HighRefreshRateDenylist$OnPropertiesChangedListener;-><init>(Lcom/android/server/wm/HighRefreshRateDenylist;Lcom/android/server/wm/HighRefreshRateDenylist$OnPropertiesChangedListener-IA;)V
+PLcom/android/server/wm/HighRefreshRateDenylist$OnPropertiesChangedListener;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
PLcom/android/server/wm/HighRefreshRateDenylist;-><init>(Landroid/content/res/Resources;Landroid/provider/DeviceConfigInterface;)V
-PLcom/android/server/wm/HighRefreshRateDenylist;->create(Landroid/content/res/Resources;)Lcom/android/server/wm/HighRefreshRateDenylist;
-HPLcom/android/server/wm/HighRefreshRateDenylist;->isDenylisted(Ljava/lang/String;)Z
PLcom/android/server/wm/HighRefreshRateDenylist;->updateDenylist(Ljava/lang/String;)V
+PLcom/android/server/wm/ImeInsetsSourceProvider$$ExternalSyntheticLambda0;-><init>(Landroid/view/inputmethod/ImeTracker$Token;Lcom/android/server/wm/WindowManagerInternal$OnImeRequestedChangedListener;Lcom/android/server/wm/InsetsTarget;)V
+HPLcom/android/server/wm/ImeInsetsSourceProvider$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/wm/ImeInsetsSourceProvider;-><init>(Landroid/view/InsetsSource;Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/DisplayContent;)V
-HPLcom/android/server/wm/ImeInsetsSourceProvider;->checkShowImePostLayout()V
-PLcom/android/server/wm/ImeInsetsSourceProvider;->getControl(Lcom/android/server/wm/InsetsControlTarget;)Landroid/view/InsetsSourceControl;
-PLcom/android/server/wm/ImeInsetsSourceProvider;->isReadyToShowIme()Z
-PLcom/android/server/wm/ImeInsetsSourceProvider;->onSourceChanged()V
+PLcom/android/server/wm/ImeInsetsSourceProvider;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/wm/ImeInsetsSourceProvider;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
+HPLcom/android/server/wm/ImeInsetsSourceProvider;->getControl(Lcom/android/server/wm/InsetsControlTarget;)Landroid/view/InsetsSourceControl;
+HPLcom/android/server/wm/ImeInsetsSourceProvider;->invokeOnImeRequestedChangedListener(Lcom/android/server/wm/InsetsTarget;Landroid/view/inputmethod/ImeTracker$Token;)V
+PLcom/android/server/wm/ImeInsetsSourceProvider;->isLeashReadyForDispatching()Z
+PLcom/android/server/wm/ImeInsetsSourceProvider;->isScheduledAndReadyToShowIme()Z
+PLcom/android/server/wm/ImeInsetsSourceProvider;->logIsScheduledAndReadyToShowIme(Z)V
+HPLcom/android/server/wm/ImeInsetsSourceProvider;->onPostLayout()V+]Landroid/view/inputmethod/ImeTracker;Landroid/view/inputmethod/ImeTracker$1;
+HPLcom/android/server/wm/ImeInsetsSourceProvider;->onSourceChanged()V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
PLcom/android/server/wm/ImeInsetsSourceProvider;->setClientVisible(Z)V
-PLcom/android/server/wm/ImeInsetsSourceProvider;->setFrozen(Z)V
-PLcom/android/server/wm/ImeInsetsSourceProvider;->setServerVisible(Z)V
-PLcom/android/server/wm/ImeInsetsSourceProvider;->updateClientVisibility(Lcom/android/server/wm/InsetsControlTarget;)Z
-PLcom/android/server/wm/ImeInsetsSourceProvider;->updateControlForTarget(Lcom/android/server/wm/InsetsControlTarget;Z)V
+HPLcom/android/server/wm/ImeInsetsSourceProvider;->setFrozen(Z)V
+HPLcom/android/server/wm/ImeInsetsSourceProvider;->setServerVisible(Z)V
+HPLcom/android/server/wm/ImeInsetsSourceProvider;->updateClientVisibility(Lcom/android/server/wm/InsetsTarget;Landroid/view/inputmethod/ImeTracker$Token;)Z
+HPLcom/android/server/wm/ImeInsetsSourceProvider;->updateControlForTarget(Lcom/android/server/wm/InsetsControlTarget;Z)V
PLcom/android/server/wm/ImeInsetsSourceProvider;->updateSourceFrame(Landroid/graphics/Rect;)V
-PLcom/android/server/wm/ImeInsetsSourceProvider;->updateVisibility()V
-PLcom/android/server/wm/ImeTargetVisibilityPolicy;-><init>()V
-PLcom/android/server/wm/ImeTargetVisibilityPolicy;->canComputeImeParent(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/InputTarget;)Z
-PLcom/android/server/wm/ImeTargetVisibilityPolicy;->shouldComputeImeParentForEmbeddedActivity(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/InputTarget;)Z
-PLcom/android/server/wm/ImmersiveModeConfirmation$1;-><init>(Lcom/android/server/wm/ImmersiveModeConfirmation;)V
-PLcom/android/server/wm/ImmersiveModeConfirmation$H;-><init>(Lcom/android/server/wm/ImmersiveModeConfirmation;Landroid/os/Looper;)V
-PLcom/android/server/wm/ImmersiveModeConfirmation;-><init>(Landroid/content/Context;Landroid/os/Looper;ZZ)V
-PLcom/android/server/wm/ImmersiveModeConfirmation;->loadSetting(ILandroid/content/Context;)Z
-PLcom/android/server/wm/ImmersiveModeConfirmation;->onSettingChanged(I)Z
+HPLcom/android/server/wm/ImeInsetsSourceProvider;->updateVisibility()V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
+PLcom/android/server/wm/ImmersiveModeConfirmation;->loadSetting(Landroid/content/Context;)Z
PLcom/android/server/wm/InputConfigAdapter$FlagMapping;-><init>(IIZ)V
PLcom/android/server/wm/InputConfigAdapter;-><clinit>()V
-HPLcom/android/server/wm/InputConfigAdapter;->applyMapping(ILjava/util/List;)I
-PLcom/android/server/wm/InputConfigAdapter;->computeMask(Ljava/util/List;)I
+HPLcom/android/server/wm/InputConfigAdapter;->applyMapping(I[Lcom/android/server/wm/InputConfigAdapter$FlagMapping;)I
HPLcom/android/server/wm/InputConfigAdapter;->getInputConfigFromWindowParams(III)I
-HPLcom/android/server/wm/InputConfigAdapter;->getMask()I
-PLcom/android/server/wm/InputManagerCallback$$ExternalSyntheticLambda0;-><init>()V
PLcom/android/server/wm/InputManagerCallback$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
PLcom/android/server/wm/InputManagerCallback$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/InputManagerCallback$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/wm/InputManagerCallback$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/wm/InputManagerCallback;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/InputManagerCallback;->createSurfaceForGestureMonitor(Ljava/lang/String;I)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/InputManagerCallback;->createSurfaceForGestureMonitor(ILjava/lang/String;)Landroid/view/SurfaceControl;
PLcom/android/server/wm/InputManagerCallback;->getPointerDisplayId()I
-PLcom/android/server/wm/InputManagerCallback;->notifyConfigurationChanged()V
-PLcom/android/server/wm/InputManagerCallback;->notifyFocusChanged(Landroid/os/IBinder;Landroid/os/IBinder;)V
-PLcom/android/server/wm/InputManagerCallback;->notifyLidSwitchChanged(JZ)V
-PLcom/android/server/wm/InputManagerCallback;->notifyPointerLocationChanged(Z)V
-PLcom/android/server/wm/InputManagerCallback;->setEventDispatchingLw(Z)V
-PLcom/android/server/wm/InputManagerCallback;->updateInputDispatchModeLw()V
-PLcom/android/server/wm/InputManagerCallback;->waitForInputDevicesReady(J)Z
-PLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->-$$Nest$mupdateInputWindows(Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;Z)V
+PLcom/android/server/wm/InputManagerCallback;->interceptKeyBeforeDispatching(Landroid/os/IBinder;Landroid/view/KeyEvent;I)J
+PLcom/android/server/wm/InputManagerCallback;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I
+PLcom/android/server/wm/InputManagerCallback;->interceptMotionBeforeQueueingNonInteractive(IIIJI)I
+PLcom/android/server/wm/InputManagerCallback;->interceptUnhandledKey(Landroid/view/KeyEvent;Landroid/os/IBinder;)Z
+PLcom/android/server/wm/InputManagerCallback;->notifyLidSwitchChanged(Z)V
+HPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->-$$Nest$mupdateInputWindows(Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;Z)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;-><init>(Lcom/android/server/wm/InputMonitor;)V
-PLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;-><init>(Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer-IA;)V
-HPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->accept(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->updateInputWindows(Z)V
+HPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->accept(Ljava/lang/Object;)V+]Ljava/lang/CharSequence;Ljava/lang/String;]Ljava/util/Map;Ljava/util/Collections$SynchronizedMap;
PLcom/android/server/wm/InputMonitor$UpdateInputWindows;-><init>(Lcom/android/server/wm/InputMonitor;)V
-PLcom/android/server/wm/InputMonitor$UpdateInputWindows;-><init>(Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor$UpdateInputWindows-IA;)V
HPLcom/android/server/wm/InputMonitor$UpdateInputWindows;->run()V
-PLcom/android/server/wm/InputMonitor;->-$$Nest$fgetmActiveRecentsActivity(Lcom/android/server/wm/InputMonitor;)Ljava/lang/ref/WeakReference;
-PLcom/android/server/wm/InputMonitor;->-$$Nest$fgetmDisplayContent(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/wm/DisplayContent;
-PLcom/android/server/wm/InputMonitor;->-$$Nest$fgetmDisplayRemoved(Lcom/android/server/wm/InputMonitor;)Z
-HPLcom/android/server/wm/InputMonitor;->-$$Nest$fgetmInputTransaction(Lcom/android/server/wm/InputMonitor;)Landroid/view/SurfaceControl$Transaction;
-PLcom/android/server/wm/InputMonitor;->-$$Nest$fgetmService(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/wm/WindowManagerService;
-PLcom/android/server/wm/InputMonitor;->-$$Nest$fgetmUpdateInputForAllWindowsConsumer(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;
-PLcom/android/server/wm/InputMonitor;->-$$Nest$fgetmUpdateInputWindowsImmediately(Lcom/android/server/wm/InputMonitor;)Z
-PLcom/android/server/wm/InputMonitor;->-$$Nest$fputmUpdateInputWindowsNeeded(Lcom/android/server/wm/InputMonitor;Z)V
-PLcom/android/server/wm/InputMonitor;->-$$Nest$fputmUpdateInputWindowsPending(Lcom/android/server/wm/InputMonitor;Z)V
-PLcom/android/server/wm/InputMonitor;->-$$Nest$mupdateInputFocusRequest(Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputConsumerImpl;)V
-PLcom/android/server/wm/InputMonitor;->-$$Nest$smgetWeak(Ljava/lang/ref/WeakReference;)Ljava/lang/Object;
PLcom/android/server/wm/InputMonitor;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
-HPLcom/android/server/wm/InputMonitor;->getInputConsumer(Ljava/lang/String;)Lcom/android/server/wm/InputConsumerImpl;
-PLcom/android/server/wm/InputMonitor;->getWeak(Ljava/lang/ref/WeakReference;)Ljava/lang/Object;
-PLcom/android/server/wm/InputMonitor;->isTrustedOverlay(I)Z
-PLcom/android/server/wm/InputMonitor;->layoutInputConsumers(II)V
-PLcom/android/server/wm/InputMonitor;->pauseDispatchingLw(Lcom/android/server/wm/WindowToken;)V
-HPLcom/android/server/wm/InputMonitor;->populateInputWindowHandle(Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/InputMonitor;->populateOverlayInputInfo(Lcom/android/server/wm/InputWindowHandleWrapper;)V
-PLcom/android/server/wm/InputMonitor;->populateOverlayInputInfo(Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/InputMonitor;->requestFocus(Landroid/os/IBinder;Ljava/lang/String;)V
-HPLcom/android/server/wm/InputMonitor;->resetInputConsumers(Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/InputMonitor;->resumeDispatchingLw(Lcom/android/server/wm/WindowToken;)V
-HPLcom/android/server/wm/InputMonitor;->scheduleUpdateInputWindows()V
-PLcom/android/server/wm/InputMonitor;->setFocusedAppLw(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/InputMonitor;->setInputFocusLw(Lcom/android/server/wm/WindowState;Z)V
-HPLcom/android/server/wm/InputMonitor;->setInputWindowInfoIfNeeded(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;Lcom/android/server/wm/InputWindowHandleWrapper;)V
+PLcom/android/server/wm/InputMonitor;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/wm/InputMonitor;->getInputConsumer(Ljava/lang/String;)Lcom/android/server/wm/InputConsumerImpl;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/InputMonitor;->populateInputWindowHandle(Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/WindowState;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;
+HPLcom/android/server/wm/InputMonitor;->populateOverlayInputInfo(Lcom/android/server/wm/InputWindowHandleWrapper;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;
+HPLcom/android/server/wm/InputMonitor;->requestFocus(Landroid/os/IBinder;Ljava/lang/String;)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
+HPLcom/android/server/wm/InputMonitor;->setInputFocusLw(Lcom/android/server/wm/WindowState;Z)V
+PLcom/android/server/wm/InputMonitor;->setInputWindowInfoIfNeeded(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;Lcom/android/server/wm/InputWindowHandleWrapper;)V
+PLcom/android/server/wm/InputMonitor;->setTrustedOverlayInputInfo(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;ILjava/lang/String;)V
PLcom/android/server/wm/InputMonitor;->setUpdateInputWindowsNeededLw()V
-HPLcom/android/server/wm/InputMonitor;->updateInputFocusRequest(Lcom/android/server/wm/InputConsumerImpl;)V
HPLcom/android/server/wm/InputMonitor;->updateInputWindowsLw(Z)V
PLcom/android/server/wm/InputWindowHandleWrapper;-><init>(Landroid/view/InputWindowHandle;)V
-PLcom/android/server/wm/InputWindowHandleWrapper;->applyChangesToSurface(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
-PLcom/android/server/wm/InputWindowHandleWrapper;->clearTouchableRegion()V
-PLcom/android/server/wm/InputWindowHandleWrapper;->forceChange()V
-PLcom/android/server/wm/InputWindowHandleWrapper;->getInputApplicationHandle()Landroid/view/InputApplicationHandle;
-HPLcom/android/server/wm/InputWindowHandleWrapper;->hasWallpaper()Z
-PLcom/android/server/wm/InputWindowHandleWrapper;->isChanged()Z
-HPLcom/android/server/wm/InputWindowHandleWrapper;->isFocusable()Z
-HPLcom/android/server/wm/InputWindowHandleWrapper;->isPaused()Z
-HPLcom/android/server/wm/InputWindowHandleWrapper;->setDispatchingTimeoutMillis(J)V
-HPLcom/android/server/wm/InputWindowHandleWrapper;->setDisplayId(I)V
HPLcom/android/server/wm/InputWindowHandleWrapper;->setFocusable(Z)V
-HPLcom/android/server/wm/InputWindowHandleWrapper;->setHasWallpaper(Z)V
-HPLcom/android/server/wm/InputWindowHandleWrapper;->setInputApplicationHandle(Landroid/view/InputApplicationHandle;)V
HPLcom/android/server/wm/InputWindowHandleWrapper;->setInputConfigMasked(II)V
-HPLcom/android/server/wm/InputWindowHandleWrapper;->setLayoutParamsFlags(I)V
-HPLcom/android/server/wm/InputWindowHandleWrapper;->setLayoutParamsType(I)V
HPLcom/android/server/wm/InputWindowHandleWrapper;->setName(Ljava/lang/String;)V
-PLcom/android/server/wm/InputWindowHandleWrapper;->setOwnerPid(I)V
-PLcom/android/server/wm/InputWindowHandleWrapper;->setOwnerUid(I)V
-PLcom/android/server/wm/InputWindowHandleWrapper;->setPackageName(Ljava/lang/String;)V
-HPLcom/android/server/wm/InputWindowHandleWrapper;->setPaused(Z)V
-HPLcom/android/server/wm/InputWindowHandleWrapper;->setReplaceTouchableRegionWithCrop(Z)V
-HPLcom/android/server/wm/InputWindowHandleWrapper;->setScaleFactor(F)V
-HPLcom/android/server/wm/InputWindowHandleWrapper;->setSurfaceInset(I)V
-HPLcom/android/server/wm/InputWindowHandleWrapper;->setToken(Landroid/os/IBinder;)V
-HPLcom/android/server/wm/InputWindowHandleWrapper;->setTouchOcclusionMode(I)V
-HPLcom/android/server/wm/InputWindowHandleWrapper;->setTouchableRegion(Landroid/graphics/Region;)V
-HPLcom/android/server/wm/InputWindowHandleWrapper;->setTouchableRegionCrop(Landroid/view/SurfaceControl;)V
-HPLcom/android/server/wm/InputWindowHandleWrapper;->setWindowToken(Landroid/os/IBinder;)V
-PLcom/android/server/wm/InsetsControlTarget;->asWindowOrNull(Lcom/android/server/wm/InsetsControlTarget;)Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/InputWindowHandleWrapper;->setToken(Landroid/os/IBinder;)V
PLcom/android/server/wm/InsetsControlTarget;->getWindow()Lcom/android/server/wm/WindowState;
PLcom/android/server/wm/InsetsControlTarget;->isRequestedVisible(I)Z
-PLcom/android/server/wm/InsetsPolicy$BarWindow;->-$$Nest$mupdateVisibility(Lcom/android/server/wm/InsetsPolicy$BarWindow;Lcom/android/server/wm/InsetsControlTarget;I)V
+HPLcom/android/server/wm/InsetsPolicy$BarWindow;->-$$Nest$mupdateVisibility(Lcom/android/server/wm/InsetsPolicy$BarWindow;Lcom/android/server/wm/InsetsControlTarget;I)V+]Lcom/android/internal/statusbar/IStatusBar;Lcom/android/internal/statusbar/IStatusBar$Stub$Proxy;]Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsPolicy$ControlTarget;,Lcom/android/server/wm/WindowState;
PLcom/android/server/wm/InsetsPolicy$BarWindow;-><init>(Lcom/android/server/wm/InsetsPolicy;I)V
-PLcom/android/server/wm/InsetsPolicy$BarWindow;->setVisible(Z)V
-HPLcom/android/server/wm/InsetsPolicy$BarWindow;->updateVisibility(Lcom/android/server/wm/InsetsControlTarget;I)V
PLcom/android/server/wm/InsetsPolicy$ControlTarget;-><init>(Lcom/android/server/wm/DisplayContent;Ljava/lang/String;)V
PLcom/android/server/wm/InsetsPolicy$Host;-><init>(Landroid/os/Handler;Ljava/lang/String;)V
PLcom/android/server/wm/InsetsPolicy$Host;->getHandler()Landroid/os/Handler;
PLcom/android/server/wm/InsetsPolicy;-><clinit>()V
PLcom/android/server/wm/InsetsPolicy;-><init>(Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/InsetsPolicy;->abortTransient()V
-HPLcom/android/server/wm/InsetsPolicy;->adjustInsetsForRoundedCorners(Lcom/android/server/wm/WindowToken;Landroid/view/InsetsState;Z)Landroid/view/InsetsState;
-HPLcom/android/server/wm/InsetsPolicy;->adjustInsetsForWindow(Lcom/android/server/wm/WindowState;Landroid/view/InsetsState;Z)Landroid/view/InsetsState;
-HPLcom/android/server/wm/InsetsPolicy;->adjustVisibilityForFakeControllingSources(Landroid/view/InsetsState;)Landroid/view/InsetsState;
-HPLcom/android/server/wm/InsetsPolicy;->adjustVisibilityForIme(Lcom/android/server/wm/WindowState;Landroid/view/InsetsState;Z)Landroid/view/InsetsState;
-HPLcom/android/server/wm/InsetsPolicy;->areTypesForciblyShowing(I)Z
-HPLcom/android/server/wm/InsetsPolicy;->canBeTopFullscreenOpaqueWindow(Lcom/android/server/wm/WindowState;)Z
-HPLcom/android/server/wm/InsetsPolicy;->enforceInsetsPolicyForTarget(Landroid/view/WindowManager$LayoutParams;IZLandroid/view/InsetsState;)Landroid/view/InsetsState;
-HPLcom/android/server/wm/InsetsPolicy;->forceShowingNavigationBars(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/InsetsPolicy;->adjustInsetsForRoundedCorners(Lcom/android/server/wm/WindowToken;Landroid/view/InsetsState;Z)Landroid/view/InsetsState;+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
+HPLcom/android/server/wm/InsetsPolicy;->adjustInsetsForWindow(Lcom/android/server/wm/WindowState;Landroid/view/InsetsState;Z)Landroid/view/InsetsState;+]Landroid/view/InsetsState;Landroid/view/InsetsState;
+PLcom/android/server/wm/InsetsPolicy;->adjustVisibilityForFakeControllingSource(Landroid/view/InsetsState;ILandroid/view/InsetsSource;Lcom/android/server/wm/InsetsControlTarget;)Landroid/view/InsetsState;
+HPLcom/android/server/wm/InsetsPolicy;->canBeTopFullscreenOpaqueWindow(Lcom/android/server/wm/WindowState;)Z+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;
+PLcom/android/server/wm/InsetsPolicy;->getInsetsForWindowMetrics(Lcom/android/server/wm/WindowToken;Landroid/view/InsetsState;)V
HPLcom/android/server/wm/InsetsPolicy;->getNavControlTarget(Lcom/android/server/wm/WindowState;Z)Lcom/android/server/wm/InsetsControlTarget;
HPLcom/android/server/wm/InsetsPolicy;->getStatusControlTarget(Lcom/android/server/wm/WindowState;Z)Lcom/android/server/wm/InsetsControlTarget;
-HPLcom/android/server/wm/InsetsPolicy;->hasHiddenSources(I)Z
-PLcom/android/server/wm/InsetsPolicy;->isTransient(I)Z
+PLcom/android/server/wm/InsetsPolicy;->onRequestedVisibleTypesChanged(Lcom/android/server/wm/InputTarget;Landroid/view/inputmethod/ImeTracker$Token;)V
HPLcom/android/server/wm/InsetsPolicy;->remoteInsetsControllerControlsSystemBars(Lcom/android/server/wm/WindowState;)Z
-HPLcom/android/server/wm/InsetsPolicy;->updateBarControlTarget(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/InsetsPolicy;->updateSystemBars(Lcom/android/server/wm/WindowState;ZZ)V
+HPLcom/android/server/wm/InsetsPolicy;->updateBarControlTarget(Lcom/android/server/wm/WindowState;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
PLcom/android/server/wm/InsetsSourceProvider$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/InsetsSourceProvider;)V
PLcom/android/server/wm/InsetsSourceProvider$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/InsetsSourceProvider$ControlAdapter;->-$$Nest$fgetmCapturedLeash(Lcom/android/server/wm/InsetsSourceProvider$ControlAdapter;)Landroid/view/SurfaceControl;
PLcom/android/server/wm/InsetsSourceProvider$ControlAdapter;-><init>(Lcom/android/server/wm/InsetsSourceProvider;Landroid/graphics/Point;)V
+PLcom/android/server/wm/InsetsSourceProvider$ControlAdapter;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/wm/InsetsSourceProvider$ControlAdapter;->dumpDebug$1(Landroid/util/proto/ProtoOutputStream;)V
PLcom/android/server/wm/InsetsSourceProvider$ControlAdapter;->onAnimationCancelled(Landroid/view/SurfaceControl;)V
-PLcom/android/server/wm/InsetsSourceProvider$ControlAdapter;->startAnimation(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;ILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
-PLcom/android/server/wm/InsetsSourceProvider;->$r8$lambda$Dei2KOKOm-G-kdAHiqmNNHB9JPM(Lcom/android/server/wm/InsetsSourceProvider;Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/InsetsSourceProvider;->-$$Nest$fgetmAdapter(Lcom/android/server/wm/InsetsSourceProvider;)Lcom/android/server/wm/InsetsSourceProvider$ControlAdapter;
-PLcom/android/server/wm/InsetsSourceProvider;->-$$Nest$fgetmCropToProvidingInsets(Lcom/android/server/wm/InsetsSourceProvider;)Z
+HPLcom/android/server/wm/InsetsSourceProvider$ControlAdapter;->startAnimation(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;ILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
PLcom/android/server/wm/InsetsSourceProvider;-><clinit>()V
PLcom/android/server/wm/InsetsSourceProvider;-><init>(Landroid/view/InsetsSource;Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/InsetsSourceProvider;->getControl(Lcom/android/server/wm/InsetsControlTarget;)Landroid/view/InsetsSourceControl;
-PLcom/android/server/wm/InsetsSourceProvider;->getControlTarget()Lcom/android/server/wm/InsetsControlTarget;
-PLcom/android/server/wm/InsetsSourceProvider;->getInsetsHint()Landroid/graphics/Insets;
-PLcom/android/server/wm/InsetsSourceProvider;->getSource()Landroid/view/InsetsSource;
+PLcom/android/server/wm/InsetsSourceProvider;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/wm/InsetsSourceProvider;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
+HPLcom/android/server/wm/InsetsSourceProvider;->getControl(Lcom/android/server/wm/InsetsControlTarget;)Landroid/view/InsetsSourceControl;
+HPLcom/android/server/wm/InsetsSourceProvider;->getInsetsHint()Landroid/graphics/Insets;+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
HPLcom/android/server/wm/InsetsSourceProvider;->getWindowFrameSurfacePosition()Landroid/graphics/Point;
-PLcom/android/server/wm/InsetsSourceProvider;->isClientVisible()Z
-PLcom/android/server/wm/InsetsSourceProvider;->isControllable()Z
-PLcom/android/server/wm/InsetsSourceProvider;->lambda$new$0(Landroid/view/SurfaceControl$Transaction;)V
-HPLcom/android/server/wm/InsetsSourceProvider;->onPostLayout()V
-PLcom/android/server/wm/InsetsSourceProvider;->onSurfaceTransactionApplied()V
-HPLcom/android/server/wm/InsetsSourceProvider;->overridesFrame(I)Z
+HPLcom/android/server/wm/InsetsSourceProvider;->onPostLayout()V+]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;
PLcom/android/server/wm/InsetsSourceProvider;->setClientVisible(Z)V
-PLcom/android/server/wm/InsetsSourceProvider;->setFlags(II)Z
+PLcom/android/server/wm/InsetsSourceProvider;->setFlags(I)Z
PLcom/android/server/wm/InsetsSourceProvider;->setServerVisible(Z)V
-PLcom/android/server/wm/InsetsSourceProvider;->setWindowContainer(Lcom/android/server/wm/WindowContainer;Lcom/android/internal/util/function/TriFunction;Landroid/util/SparseArray;)V
-PLcom/android/server/wm/InsetsSourceProvider;->updateClientVisibility(Lcom/android/server/wm/InsetsControlTarget;)Z
+PLcom/android/server/wm/InsetsSourceProvider;->setWindowContainer(Lcom/android/server/wm/WindowState;Lcom/android/internal/util/function/TriFunction;Landroid/util/SparseArray;)V
+PLcom/android/server/wm/InsetsSourceProvider;->updateClientVisibility(Lcom/android/server/wm/InsetsTarget;Landroid/view/inputmethod/ImeTracker$Token;)Z
HPLcom/android/server/wm/InsetsSourceProvider;->updateControlForTarget(Lcom/android/server/wm/InsetsControlTarget;Z)V
-HPLcom/android/server/wm/InsetsSourceProvider;->updateSourceFrame(Landroid/graphics/Rect;)V
-HPLcom/android/server/wm/InsetsSourceProvider;->updateSourceFrameForServerVisibility()V
-PLcom/android/server/wm/InsetsSourceProvider;->updateVisibility()V
-PLcom/android/server/wm/InsetsStateController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/InsetsStateController;)V
-PLcom/android/server/wm/InsetsStateController$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/wm/InsetsStateController$$ExternalSyntheticLambda2;-><init>()V
-PLcom/android/server/wm/InsetsStateController$$ExternalSyntheticLambda3;-><init>()V
-PLcom/android/server/wm/InsetsStateController$$ExternalSyntheticLambda3;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/wm/InsetsStateController$1$$ExternalSyntheticLambda0;-><init>(I)V
-PLcom/android/server/wm/InsetsStateController$1$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/wm/InsetsStateController$1;->$r8$lambda$UjLlQbcGcYIO1UklJ0WxgRK60HM(I)V
+HPLcom/android/server/wm/InsetsSourceProvider;->updateInsetsControlPosition(Lcom/android/server/wm/WindowState;)Z+]Landroid/graphics/Point;Landroid/graphics/Point;
+PLcom/android/server/wm/InsetsSourceProvider;->updateSourceFrame(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/InsetsSourceProvider;->updateSourceFrameForServerVisibility()V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
+HPLcom/android/server/wm/InsetsSourceProvider;->updateVisibility()V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;
+PLcom/android/server/wm/InsetsStateController$$ExternalSyntheticLambda0;-><init>(I)V
+HPLcom/android/server/wm/InsetsStateController$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/InsetsStateController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/InsetsStateController;ILandroid/util/SparseLongArray;)V
+HPLcom/android/server/wm/InsetsStateController$$ExternalSyntheticLambda1;->run()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/DisplayContent$RemoteInsetsControlTarget;,Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/InsetsStateController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/InsetsStateController;Ljava/util/ArrayList;)V
+PLcom/android/server/wm/InsetsStateController$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
PLcom/android/server/wm/InsetsStateController$1;-><init>(Lcom/android/server/wm/InsetsStateController;)V
-PLcom/android/server/wm/InsetsStateController$1;->lambda$notifyInsetsControlChanged$0(I)V
-PLcom/android/server/wm/InsetsStateController$1;->notifyInsetsControlChanged(I)V
-PLcom/android/server/wm/InsetsStateController;->$r8$lambda$MnP7XA1MDcyrUwoj0hcoT5hTO8E(Lcom/android/server/wm/InsetsStateController;)V
-PLcom/android/server/wm/InsetsStateController;->$r8$lambda$TzYyjwJniEoBgyDjbMpQVgjWyYo(Lcom/android/server/wm/InsetsControlTarget;)Ljava/util/ArrayList;
-PLcom/android/server/wm/InsetsStateController;->-$$Nest$fgetmDisplayContent(Lcom/android/server/wm/InsetsStateController;)Lcom/android/server/wm/DisplayContent;
PLcom/android/server/wm/InsetsStateController;-><init>(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/InsetsStateController;->addToControlMaps(Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsSourceProvider;Z)V
-HPLcom/android/server/wm/InsetsStateController;->getControlsForDispatch(Lcom/android/server/wm/InsetsControlTarget;)[Landroid/view/InsetsSourceControl;
+HPLcom/android/server/wm/InsetsStateController;->getControlsForDispatch(Lcom/android/server/wm/InsetsControlTarget;)[Landroid/view/InsetsSourceControl;+]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/wm/InsetsStateController;->getImeSourceProvider()Lcom/android/server/wm/ImeInsetsSourceProvider;
-HPLcom/android/server/wm/InsetsStateController;->getOrCreateSourceProvider(II)Lcom/android/server/wm/InsetsSourceProvider;
-PLcom/android/server/wm/InsetsStateController;->getRawInsetsState()Landroid/view/InsetsState;
-HPLcom/android/server/wm/InsetsStateController;->getSourceProviders()Landroid/util/SparseArray;
-PLcom/android/server/wm/InsetsStateController;->lambda$addToControlMaps$2(Lcom/android/server/wm/InsetsControlTarget;)Ljava/util/ArrayList;
-HPLcom/android/server/wm/InsetsStateController;->lambda$notifyPendingInsetsControlChanged$3()V
-PLcom/android/server/wm/InsetsStateController;->notifyControlChanged(Lcom/android/server/wm/InsetsControlTarget;)V
-PLcom/android/server/wm/InsetsStateController;->notifyInsetsChanged()V
-HPLcom/android/server/wm/InsetsStateController;->notifyPendingInsetsControlChanged()V
-HPLcom/android/server/wm/InsetsStateController;->onBarControlTargetChanged(Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsControlTarget;)V
-PLcom/android/server/wm/InsetsStateController;->onControlTargetChanged(Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsControlTarget;Z)V
-PLcom/android/server/wm/InsetsStateController;->onImeControlTargetChanged(Lcom/android/server/wm/InsetsControlTarget;)V
-HPLcom/android/server/wm/InsetsStateController;->onPostLayout()V
-PLcom/android/server/wm/InsetsStateController;->onRequestedVisibleTypesChanged(Lcom/android/server/wm/InsetsControlTarget;)V
-PLcom/android/server/wm/InsetsStateController;->removeFromControlMaps(Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsSourceProvider;Z)V
-PLcom/android/server/wm/InsetsStateController;->setForcedConsumingTypes(I)V
+HPLcom/android/server/wm/InsetsStateController;->getOrCreateSourceProvider(II)Lcom/android/server/wm/InsetsSourceProvider;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/wm/InsetsStateController;->notifyControlChanged(Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsSourceProvider;)V
+HPLcom/android/server/wm/InsetsStateController;->notifyInsetsChanged()V
+HPLcom/android/server/wm/InsetsStateController;->notifyPendingInsetsControlChanged()V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/InsetsStateController;->notifySurfaceTransactionReady(Lcom/android/server/wm/InsetsSourceProvider;JZ)V
+HPLcom/android/server/wm/InsetsStateController;->onControlTargetChanged(Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsSourceProvider;Z)V
+HPLcom/android/server/wm/InsetsStateController;->onRequestedVisibleTypesChanged(Lcom/android/server/wm/InsetsTarget;Landroid/view/inputmethod/ImeTracker$Token;)V
+HPLcom/android/server/wm/InsetsStateController;->removeFromControlMaps(Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsSourceProvider;Z)V
HPLcom/android/server/wm/InsetsStateController;->updateAboveInsetsState(Z)V
-HSPLcom/android/server/wm/KeyguardController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/KeyguardController;)V
-PLcom/android/server/wm/KeyguardController$KeyguardDisplayState$$ExternalSyntheticLambda0;-><init>()V
+HSPLcom/android/server/wm/KeyguardController$$ExternalSyntheticLambda1;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/wm/KeyguardController$$ExternalSyntheticLambda1;->run()V
HPLcom/android/server/wm/KeyguardController$KeyguardDisplayState$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
-HPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->$r8$lambda$UYxm3jSn5iwGFQ04QlWkFzJcydA(Lcom/android/server/wm/Task;)Z
-HPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->-$$Nest$fgetmAodShowing(Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;)Z
-PLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->-$$Nest$fgetmKeyguardGoingAway(Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;)Z
-HPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->-$$Nest$fgetmKeyguardShowing(Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;)Z
-HPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->-$$Nest$fgetmRequestDismissKeyguard(Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;)Z
-PLcom/android/server/wm/KeyguardController$KeyguardDisplayState;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ILcom/android/server/wm/ActivityTaskManagerInternal$SleepTokenAcquirer;)V
-HPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->getRootTaskForControllingOccluding(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/Task;
-HPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->lambda$getRootTaskForControllingOccluding$0(Lcom/android/server/wm/Task;)Z
-HPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->updateVisibility(Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/DisplayContent;)V
-HPLcom/android/server/wm/KeyguardController;->-$$Nest$fgetmService(Lcom/android/server/wm/KeyguardController;)Lcom/android/server/wm/ActivityTaskManagerService;
-HPLcom/android/server/wm/KeyguardController;->-$$Nest$fgetmWindowManager(Lcom/android/server/wm/KeyguardController;)Lcom/android/server/wm/WindowManagerService;
+PLcom/android/server/wm/KeyguardController$KeyguardDisplayState;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ILcom/android/server/wm/ActivityTaskManagerService$SleepTokenAcquirer;)V
+PLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->writeEventLog(Ljava/lang/String;)V
HSPLcom/android/server/wm/KeyguardController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskSupervisor;)V
HPLcom/android/server/wm/KeyguardController;->checkKeyguardVisibility(Lcom/android/server/wm/ActivityRecord;)Z
-HPLcom/android/server/wm/KeyguardController;->getDisplayState(I)Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;
-HPLcom/android/server/wm/KeyguardController;->isKeyguardGoingAway(I)Z
+PLcom/android/server/wm/KeyguardController;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/wm/KeyguardController;->getDisplayState(I)Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
HPLcom/android/server/wm/KeyguardController;->isKeyguardLocked(I)Z
PLcom/android/server/wm/KeyguardController;->isKeyguardOccluded(I)Z
HPLcom/android/server/wm/KeyguardController;->isKeyguardOrAodShowing(I)Z
-PLcom/android/server/wm/KeyguardController;->setKeyguardShown(IZZ)V
+PLcom/android/server/wm/KeyguardController;->keyguardGoingAway(II)V
+PLcom/android/server/wm/KeyguardController;->scheduleGoingAwayTimeout(I)V
PLcom/android/server/wm/KeyguardController;->setWakeTransitionReady()V
-PLcom/android/server/wm/KeyguardController;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/KeyguardController;->updateDeferTransitionForAod(Z)V
-HPLcom/android/server/wm/KeyguardController;->updateVisibility()V
+PLcom/android/server/wm/KeyguardController;->updateKeyguardSleepToken()V
+PLcom/android/server/wm/KeyguardController;->updateKeyguardSleepToken(I)V
PLcom/android/server/wm/KeyguardDisableHandler$1;-><init>(Lcom/android/server/wm/KeyguardDisableHandler;)V
PLcom/android/server/wm/KeyguardDisableHandler$2;-><init>(Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/pm/UserManagerInternal;)V
PLcom/android/server/wm/KeyguardDisableHandler;-><init>(Lcom/android/server/wm/KeyguardDisableHandler$Injector;Landroid/os/Handler;)V
-PLcom/android/server/wm/KeyguardDisableHandler;->create(Landroid/content/Context;Lcom/android/server/policy/WindowManagerPolicy;Landroid/os/Handler;)Lcom/android/server/wm/KeyguardDisableHandler;
-PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda2;-><init>()V
-PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda3;-><init>()V
-PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda6;-><init>()V
-PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda6;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/LaunchObserverRegistryImpl;->$r8$lambda$43NtWuC87LQ3fIhORDtk6FguY_c(Lcom/android/server/wm/LaunchObserverRegistryImpl;Landroid/content/Intent;J)V
-PLcom/android/server/wm/LaunchObserverRegistryImpl;->$r8$lambda$F9z4OJPJG8S6kWyjlSmFdBIxGAs(Lcom/android/server/wm/LaunchObserverRegistryImpl;JJ)V
-PLcom/android/server/wm/LaunchObserverRegistryImpl;->$r8$lambda$HB46khtoGy2-lvZU6F6JCBo3THQ(Lcom/android/server/wm/LaunchObserverRegistryImpl;JLandroid/content/ComponentName;II)V
-PLcom/android/server/wm/LaunchObserverRegistryImpl;->$r8$lambda$K44Q-L066e13h8I3JRSoRtnlKPw(Lcom/android/server/wm/LaunchObserverRegistryImpl;JLandroid/content/ComponentName;JI)V
-PLcom/android/server/wm/LaunchObserverRegistryImpl;->$r8$lambda$ic9ginTismFOXJUj86YxV2Pnmpw(Lcom/android/server/wm/LaunchObserverRegistryImpl;Lcom/android/server/wm/ActivityMetricsLaunchObserver;)V
+PLcom/android/server/wm/KeyguardDisableHandler;->updateKeyguardEnabled(I)V
+PLcom/android/server/wm/KeyguardDisableHandler;->updateKeyguardEnabledLocked(I)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda1;-><init>(I)V
+HPLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda2;-><init>(I)V
+HPLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
HSPLcom/android/server/wm/LaunchObserverRegistryImpl;-><init>(Landroid/os/Looper;)V
-PLcom/android/server/wm/LaunchObserverRegistryImpl;->handleOnActivityLaunchFinished(JLandroid/content/ComponentName;JI)V
-PLcom/android/server/wm/LaunchObserverRegistryImpl;->handleOnActivityLaunched(JLandroid/content/ComponentName;II)V
-PLcom/android/server/wm/LaunchObserverRegistryImpl;->handleOnIntentStarted(Landroid/content/Intent;J)V
-PLcom/android/server/wm/LaunchObserverRegistryImpl;->handleOnReportFullyDrawn(JJ)V
-PLcom/android/server/wm/LaunchObserverRegistryImpl;->handleRegisterLaunchObserver(Lcom/android/server/wm/ActivityMetricsLaunchObserver;)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->onActivityLaunchCancelled(J)V
PLcom/android/server/wm/LaunchObserverRegistryImpl;->onActivityLaunchFinished(JLandroid/content/ComponentName;JI)V
-PLcom/android/server/wm/LaunchObserverRegistryImpl;->onActivityLaunched(JLandroid/content/ComponentName;II)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->onActivityLaunched(IIJLandroid/content/ComponentName;)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->onIntentFailed(J)V
PLcom/android/server/wm/LaunchObserverRegistryImpl;->onIntentStarted(Landroid/content/Intent;J)V
PLcom/android/server/wm/LaunchObserverRegistryImpl;->onReportFullyDrawn(JJ)V
-PLcom/android/server/wm/LaunchObserverRegistryImpl;->registerLaunchObserver(Lcom/android/server/wm/ActivityMetricsLaunchObserver;)V
HSPLcom/android/server/wm/LaunchParamsController$LaunchParams;-><init>()V
-PLcom/android/server/wm/LaunchParamsController$LaunchParams;->hasPreferredTaskDisplayArea()Z
-PLcom/android/server/wm/LaunchParamsController$LaunchParams;->isEmpty()Z
PLcom/android/server/wm/LaunchParamsController$LaunchParams;->reset()V
HPLcom/android/server/wm/LaunchParamsController$LaunchParams;->set(Lcom/android/server/wm/LaunchParamsController$LaunchParams;)V
HSPLcom/android/server/wm/LaunchParamsController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/LaunchParamsPersister;)V
-HPLcom/android/server/wm/LaunchParamsController;->calculate(Lcom/android/server/wm/Task;Landroid/content/pm/ActivityInfo$WindowLayout;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityStarter$Request;ILcom/android/server/wm/LaunchParamsController$LaunchParams;)V
-PLcom/android/server/wm/LaunchParamsController;->layoutTask(Lcom/android/server/wm/Task;Landroid/content/pm/ActivityInfo$WindowLayout;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)Z
-HSPLcom/android/server/wm/LaunchParamsController;->registerDefaultModifiers(Lcom/android/server/wm/ActivityTaskSupervisor;)V
-HSPLcom/android/server/wm/LaunchParamsController;->registerModifier(Lcom/android/server/wm/LaunchParamsController$LaunchParamsModifier;)V
-HSPLcom/android/server/wm/LaunchParamsPersister$$ExternalSyntheticLambda2;-><init>()V
-PLcom/android/server/wm/LaunchParamsPersister$$ExternalSyntheticLambda2;->apply(I)Ljava/lang/Object;
+HPLcom/android/server/wm/LaunchParamsController;->calculate(Lcom/android/server/wm/Task;Landroid/content/pm/ActivityInfo$WindowLayout;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityStarter$Request;ILcom/android/server/wm/LaunchParamsController$LaunchParams;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/LaunchParamsController$LaunchParamsModifier;Lcom/android/server/wm/DesktopModeLaunchParamsModifier;,Lcom/android/server/wm/TaskLaunchParamsModifier;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/LaunchParamsPersister$$ExternalSyntheticLambda3;->apply(I)Ljava/lang/Object;
+PLcom/android/server/wm/LaunchParamsPersister$LoadingTask;-><init>(Lcom/android/server/wm/LaunchParamsPersister;I)V
+PLcom/android/server/wm/LaunchParamsPersister$LoadingTask;->call()Ljava/lang/Object;
PLcom/android/server/wm/LaunchParamsPersister$PackageListObserver;-><init>(Lcom/android/server/wm/LaunchParamsPersister;)V
-PLcom/android/server/wm/LaunchParamsPersister$PackageListObserver;-><init>(Lcom/android/server/wm/LaunchParamsPersister;Lcom/android/server/wm/LaunchParamsPersister$PackageListObserver-IA;)V
-HSPLcom/android/server/wm/LaunchParamsPersister;-><init>(Lcom/android/server/wm/PersisterQueue;Lcom/android/server/wm/ActivityTaskSupervisor;)V
+PLcom/android/server/wm/LaunchParamsPersister$PackageListObserver;->onPackageAdded(Ljava/lang/String;I)V
HSPLcom/android/server/wm/LaunchParamsPersister;-><init>(Lcom/android/server/wm/PersisterQueue;Lcom/android/server/wm/ActivityTaskSupervisor;Ljava/util/function/IntFunction;)V
PLcom/android/server/wm/LaunchParamsPersister;->getLaunchParamFolder(I)Ljava/io/File;
-PLcom/android/server/wm/LaunchParamsPersister;->getLaunchParams(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/LaunchParamsController$LaunchParams;)V
-PLcom/android/server/wm/LaunchParamsPersister;->loadLaunchParams(I)V
-PLcom/android/server/wm/LaunchParamsPersister;->onSystemReady()V
-PLcom/android/server/wm/LaunchParamsPersister;->onUnlockUser(I)V
+PLcom/android/server/wm/LaunchParamsPersister;->waitAndMoveResultIfLoading(I)V
PLcom/android/server/wm/LaunchParamsUtil;-><clinit>()V
-HPLcom/android/server/wm/LaunchParamsUtil;->adjustBoundsToFitInDisplayArea(Lcom/android/server/wm/TaskDisplayArea;ILandroid/content/pm/ActivityInfo$WindowLayout;Landroid/graphics/Rect;)V
PLcom/android/server/wm/LaunchParamsUtil;->centerBounds(Lcom/android/server/wm/TaskDisplayArea;IILandroid/graphics/Rect;)V
-HPLcom/android/server/wm/LaunchParamsUtil;->getDefaultFreeformSize(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/TaskDisplayArea;Landroid/content/pm/ActivityInfo$WindowLayout;ILandroid/graphics/Rect;)Landroid/util/Size;
-PLcom/android/server/wm/LegacyTransitionTracer;-><init>()V
-PLcom/android/server/wm/LegacyTransitionTracer;->dumpTransitionTargetsToProto(Landroid/util/proto/ProtoOutputStream;Lcom/android/server/wm/Transition;Ljava/util/ArrayList;)V
-PLcom/android/server/wm/LegacyTransitionTracer;->logFinishedTransition(Lcom/android/server/wm/Transition;)V
-PLcom/android/server/wm/LegacyTransitionTracer;->logRemovingStartingWindow(Lcom/android/server/wm/StartingData;)V
-PLcom/android/server/wm/LegacyTransitionTracer;->logSentTransition(Lcom/android/server/wm/Transition;Ljava/util/ArrayList;)V
-PLcom/android/server/wm/LetterboxConfiguration$$ExternalSyntheticLambda0;-><init>(Landroid/content/Context;)V
-PLcom/android/server/wm/LetterboxConfiguration$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
-PLcom/android/server/wm/LetterboxConfiguration$$ExternalSyntheticLambda1;-><init>(Landroid/content/Context;)V
-PLcom/android/server/wm/LetterboxConfiguration$$ExternalSyntheticLambda1;->get()Ljava/lang/Object;
-PLcom/android/server/wm/LetterboxConfiguration$$ExternalSyntheticLambda2;-><init>(Landroid/content/Context;)V
-PLcom/android/server/wm/LetterboxConfiguration$$ExternalSyntheticLambda2;->get()Ljava/lang/Object;
-PLcom/android/server/wm/LetterboxConfiguration$$ExternalSyntheticLambda3;-><init>(Landroid/content/Context;)V
-PLcom/android/server/wm/LetterboxConfiguration$$ExternalSyntheticLambda3;->get()Ljava/lang/Object;
-PLcom/android/server/wm/LetterboxConfiguration;->$r8$lambda$2zQBjf58m1mXrJY8pdbqFLLuw2k(Landroid/content/Context;)Ljava/lang/Integer;
-PLcom/android/server/wm/LetterboxConfiguration;->$r8$lambda$82HcSBiBrA4v7cCNKfqg6uSnw3k(Landroid/content/Context;)Ljava/lang/Integer;
-PLcom/android/server/wm/LetterboxConfiguration;->$r8$lambda$I4U5QJpz5jHeQQ6aVj1Zi7Ry9X8(Landroid/content/Context;)Ljava/lang/Integer;
-PLcom/android/server/wm/LetterboxConfiguration;->$r8$lambda$klhGmHsmf4_NQnUJBD-o9X_HkDk(Landroid/content/Context;)Ljava/lang/Integer;
-PLcom/android/server/wm/LetterboxConfiguration;-><init>(Landroid/content/Context;)V
-HPLcom/android/server/wm/LetterboxConfiguration;-><init>(Landroid/content/Context;Lcom/android/server/wm/LetterboxConfigurationPersister;)V
-HPLcom/android/server/wm/LetterboxConfiguration;->getDefaultLetterboxBackgroundType()I
-PLcom/android/server/wm/LetterboxConfiguration;->getIsEducationEnabled()Z
-PLcom/android/server/wm/LetterboxConfiguration;->getIsHorizontalReachabilityEnabled()Z
-PLcom/android/server/wm/LetterboxConfiguration;->getIsVerticalReachabilityEnabled()Z
-HPLcom/android/server/wm/LetterboxConfiguration;->getLetterboxBackgroundType()I
-PLcom/android/server/wm/LetterboxConfiguration;->isCameraCompatTreatmentEnabled()Z
-PLcom/android/server/wm/LetterboxConfiguration;->isCameraCompatTreatmentEnabledAtBuildTime()Z
-PLcom/android/server/wm/LetterboxConfiguration;->isCompatFakeFocusEnabled()Z
-PLcom/android/server/wm/LetterboxConfiguration;->isDisplayRotationImmersiveAppCompatPolicyEnabledAtBuildTime()Z
-PLcom/android/server/wm/LetterboxConfiguration;->isPolicyForIgnoringRequestedOrientationEnabled()Z
-PLcom/android/server/wm/LetterboxConfiguration;->isTranslucentLetterboxingEnabled()Z
-HPLcom/android/server/wm/LetterboxConfiguration;->isUserAppAspectRatioFullscreenEnabled()Z
-HPLcom/android/server/wm/LetterboxConfiguration;->isUserAppAspectRatioSettingsEnabled()Z
-PLcom/android/server/wm/LetterboxConfiguration;->lambda$new$0(Landroid/content/Context;)Ljava/lang/Integer;
-PLcom/android/server/wm/LetterboxConfiguration;->lambda$new$1(Landroid/content/Context;)Ljava/lang/Integer;
-PLcom/android/server/wm/LetterboxConfiguration;->lambda$new$2(Landroid/content/Context;)Ljava/lang/Integer;
-PLcom/android/server/wm/LetterboxConfiguration;->lambda$new$3(Landroid/content/Context;)Ljava/lang/Integer;
-PLcom/android/server/wm/LetterboxConfiguration;->readLetterboxBackgroundTypeFromConfig(Landroid/content/Context;)I
-PLcom/android/server/wm/LetterboxConfiguration;->readLetterboxHorizontalReachabilityPositionFromConfig(Landroid/content/Context;Z)I
-PLcom/android/server/wm/LetterboxConfiguration;->readLetterboxVerticalReachabilityPositionFromConfig(Landroid/content/Context;Z)I
-PLcom/android/server/wm/LetterboxConfiguration;->setDefaultMinAspectRatioForUnresizableApps(F)V
-PLcom/android/server/wm/LetterboxConfigurationPersister$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/LetterboxConfigurationPersister;)V
-PLcom/android/server/wm/LetterboxConfigurationPersister$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/wm/LetterboxConfigurationPersister;->$r8$lambda$SeaEJhhe6Vq36TZNPw0-amAMzIo(Lcom/android/server/wm/LetterboxConfigurationPersister;)V
-PLcom/android/server/wm/LetterboxConfigurationPersister;-><init>(Ljava/util/function/Supplier;Ljava/util/function/Supplier;Ljava/util/function/Supplier;Ljava/util/function/Supplier;)V
-PLcom/android/server/wm/LetterboxConfigurationPersister;-><init>(Ljava/util/function/Supplier;Ljava/util/function/Supplier;Ljava/util/function/Supplier;Ljava/util/function/Supplier;Ljava/io/File;Lcom/android/server/wm/PersisterQueue;Ljava/util/function/Consumer;Ljava/lang/String;)V
-PLcom/android/server/wm/LetterboxConfigurationPersister;->readCurrentConfiguration()V
-PLcom/android/server/wm/LetterboxConfigurationPersister;->runWithDiskReadsThreadPolicy(Ljava/lang/Runnable;)V
-PLcom/android/server/wm/LetterboxConfigurationPersister;->start()V
-PLcom/android/server/wm/LetterboxConfigurationPersister;->useDefaultValue()V
-PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda10;-><init>()V
-HPLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda10;->getAsBoolean()Z
-PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda15;-><init>()V
-PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda15;->getAsBoolean()Z
-PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda1;-><init>()V
-HPLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda1;->getAsBoolean()Z
-PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/LetterboxConfiguration;)V
-PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda3;->getAsBoolean()Z
-PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/wm/LetterboxConfiguration;)V
-PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda4;->getAsBoolean()Z
-PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/wm/LetterboxUiController;)V
-PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda5;->getAsBoolean()Z
-PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/wm/LetterboxUiController;)V
-PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda6;->getAsBoolean()Z
-PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/wm/LetterboxUiController;)V
-PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda7;->getAsBoolean()Z
-PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/wm/LetterboxUiController;)V
-PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda8;->getAsBoolean()Z
-PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/wm/LetterboxUiController;)V
-PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda9;->getAsBoolean()Z
-PLcom/android/server/wm/LetterboxUiController;->$r8$lambda$8OuAb4WHYeErDUj6GqNmsPR-bzo()Z
-PLcom/android/server/wm/LetterboxUiController;->$r8$lambda$JuB8yLagMGFwDrrvd2UCn1C1pIY(Lcom/android/server/wm/LetterboxUiController;)Z
-PLcom/android/server/wm/LetterboxUiController;->$r8$lambda$U7dOvaWj01YWdYa2xRymir-u7iE(Lcom/android/server/wm/LetterboxUiController;)Z
-HPLcom/android/server/wm/LetterboxUiController;->$r8$lambda$_MsqrzePtlwGj7PFL530QpPbjUM()Z
-PLcom/android/server/wm/LetterboxUiController;->$r8$lambda$i72F-I0RxQu2oFPPqEHfVFbh7Yo(Lcom/android/server/wm/LetterboxUiController;)Z
-PLcom/android/server/wm/LetterboxUiController;->$r8$lambda$ps7jq1nOS9OFJPISgAx2C3dVkt8(Lcom/android/server/wm/LetterboxUiController;)Z
-HPLcom/android/server/wm/LetterboxUiController;->$r8$lambda$ueKG2MaFQ7lPhRN_jwsJxXdv0mE()Z
-PLcom/android/server/wm/LetterboxUiController;->$r8$lambda$w9WIA81i4GdEEHGpz0PCTw-RQ3w(Lcom/android/server/wm/LetterboxUiController;)Z
-PLcom/android/server/wm/LetterboxUiController;-><clinit>()V
-HPLcom/android/server/wm/LetterboxUiController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/LetterboxUiController;->findOpaqueNotFinishingActivityBelow()Ljava/util/Optional;
-HPLcom/android/server/wm/LetterboxUiController;->getCropBoundsIfNeeded(Lcom/android/server/wm/WindowState;)Landroid/graphics/Rect;
-HPLcom/android/server/wm/LetterboxUiController;->getLetterboxDetails()Lcom/android/internal/statusbar/LetterboxDetails;
-HPLcom/android/server/wm/LetterboxUiController;->getLetterboxInnerBounds(Landroid/graphics/Rect;)V
-HPLcom/android/server/wm/LetterboxUiController;->getRoundedCornersRadius(Lcom/android/server/wm/WindowState;)I
-HPLcom/android/server/wm/LetterboxUiController;->hasInheritedLetterboxBehavior()Z
-PLcom/android/server/wm/LetterboxUiController;->hasInheritedOrientation()Z
-PLcom/android/server/wm/LetterboxUiController;->hasWallpaperBackgroundForLetterbox()Z
-HPLcom/android/server/wm/LetterboxUiController;->isCompatChangeEnabled(J)Z
-PLcom/android/server/wm/LetterboxUiController;->isFromDoubleTap()Z
-HPLcom/android/server/wm/LetterboxUiController;->isHorizontalReachabilityEnabled()Z
-PLcom/android/server/wm/LetterboxUiController;->isHorizontalReachabilityEnabled(Landroid/content/res/Configuration;)Z
-PLcom/android/server/wm/LetterboxUiController;->isLetterboxDoubleTapEducationEnabled()Z
-HPLcom/android/server/wm/LetterboxUiController;->isLetterboxedNotForDisplayCutout(Lcom/android/server/wm/WindowState;)Z
-HPLcom/android/server/wm/LetterboxUiController;->isSurfaceVisible(Lcom/android/server/wm/WindowState;)Z
-HPLcom/android/server/wm/LetterboxUiController;->isSystemOverrideToFullscreenEnabled()Z
-HPLcom/android/server/wm/LetterboxUiController;->isUserFullscreenOverrideEnabled()Z
-HPLcom/android/server/wm/LetterboxUiController;->isVerticalReachabilityEnabled()Z
-PLcom/android/server/wm/LetterboxUiController;->isVerticalReachabilityEnabled(Landroid/content/res/Configuration;)Z
-PLcom/android/server/wm/LetterboxUiController;->lambda$new$0()Z
-PLcom/android/server/wm/LetterboxUiController;->lambda$new$1()Z
-PLcom/android/server/wm/LetterboxUiController;->lambda$new$2()Z
-PLcom/android/server/wm/LetterboxUiController;->lambda$new$3()Z
-PLcom/android/server/wm/LetterboxUiController;->lambda$new$4()Z
-PLcom/android/server/wm/LetterboxUiController;->lambda$shouldOverrideForceNonResizeApp$7()Z
-PLcom/android/server/wm/LetterboxUiController;->lambda$shouldOverrideForceResizeApp$6()Z
-PLcom/android/server/wm/LetterboxUiController;->lambda$shouldOverrideMinAspectRatio$5()Z
-HPLcom/android/server/wm/LetterboxUiController;->layoutLetterbox(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/LetterboxUiController;->overrideOrientationIfNeeded(I)I
-PLcom/android/server/wm/LetterboxUiController;->readComponentProperty(Landroid/content/pm/PackageManager;Ljava/lang/String;Ljava/util/function/BooleanSupplier;Ljava/lang/String;)Ljava/lang/Boolean;
-HPLcom/android/server/wm/LetterboxUiController;->requiresRoundedCorners(Lcom/android/server/wm/WindowState;)Z
-HPLcom/android/server/wm/LetterboxUiController;->shouldApplyUserFullscreenOverride()Z
-HPLcom/android/server/wm/LetterboxUiController;->shouldApplyUserMinAspectRatioOverride()Z
-HPLcom/android/server/wm/LetterboxUiController;->shouldEnableUserAspectRatioSettings()Z
-HPLcom/android/server/wm/LetterboxUiController;->shouldEnableWithOptInOverrideAndOptOutProperty(Ljava/util/function/BooleanSupplier;ZLjava/lang/Boolean;)Z
-PLcom/android/server/wm/LetterboxUiController;->shouldEnableWithOverrideAndProperty(Ljava/util/function/BooleanSupplier;ZLjava/lang/Boolean;)Z
-HPLcom/android/server/wm/LetterboxUiController;->shouldNotLayoutLetterbox(Lcom/android/server/wm/WindowState;)Z
-HPLcom/android/server/wm/LetterboxUiController;->shouldOverrideForceNonResizeApp()Z
-HPLcom/android/server/wm/LetterboxUiController;->shouldOverrideForceResizeApp()Z
-HPLcom/android/server/wm/LetterboxUiController;->shouldOverrideMinAspectRatio()Z
-PLcom/android/server/wm/LetterboxUiController;->shouldSendFakeFocus()Z
-HPLcom/android/server/wm/LetterboxUiController;->shouldShowLetterboxUi(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/LetterboxUiController;->updateInheritedLetterbox()V
-HPLcom/android/server/wm/LetterboxUiController;->updateLetterboxSurface(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/LetterboxUiController;->updateLetterboxSurface(Lcom/android/server/wm/WindowState;Landroid/view/SurfaceControl$Transaction;)V
-HPLcom/android/server/wm/LetterboxUiController;->updateRoundedCornersIfNeeded(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/LetterboxUiController;->updateWallpaperForLetterbox(Lcom/android/server/wm/WindowState;)V
PLcom/android/server/wm/LocalAnimationAdapter$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/LocalAnimationAdapter;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;I)V
PLcom/android/server/wm/LocalAnimationAdapter$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/wm/LocalAnimationAdapter;->$r8$lambda$UaYzKKcZYGPfDd4JouVmDEKELq0(Lcom/android/server/wm/LocalAnimationAdapter;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;I)V
PLcom/android/server/wm/LocalAnimationAdapter;-><init>(Lcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;Lcom/android/server/wm/SurfaceAnimationRunner;)V
-PLcom/android/server/wm/LocalAnimationAdapter;->lambda$startAnimation$0(Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;I)V
+PLcom/android/server/wm/LocalAnimationAdapter;->onAnimationCancelled(Landroid/view/SurfaceControl;)V
PLcom/android/server/wm/LocalAnimationAdapter;->startAnimation(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;ILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
-HSPLcom/android/server/wm/LockTaskController$LockTaskToken;-><init>()V
-HSPLcom/android/server/wm/LockTaskController$LockTaskToken;-><init>(Lcom/android/server/wm/LockTaskController$LockTaskToken-IA;)V
+PLcom/android/server/wm/LocaleOverlayHelper;->combineLocalesIfOverlayExists(Landroid/os/LocaleList;Landroid/os/LocaleList;)Landroid/os/LocaleList;
HSPLcom/android/server/wm/LockTaskController;-><clinit>()V
HSPLcom/android/server/wm/LockTaskController;-><init>(Landroid/content/Context;Lcom/android/server/wm/ActivityTaskSupervisor;Landroid/os/Handler;Lcom/android/server/wm/TaskChangeNotificationController;)V
-PLcom/android/server/wm/LockTaskController;->getLockTaskAuth(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;)I
-PLcom/android/server/wm/LockTaskController;->getLockTaskFeaturesForUser(I)I
-PLcom/android/server/wm/LockTaskController;->getRootTask()Lcom/android/server/wm/Task;
-PLcom/android/server/wm/LockTaskController;->isActivityAllowed(ILjava/lang/String;I)Z
-PLcom/android/server/wm/LockTaskController;->isKeyguardAllowed(I)Z
-PLcom/android/server/wm/LockTaskController;->isLockTaskModeViolationInternal(Lcom/android/server/wm/WindowContainer;ILandroid/content/Intent;I)Z
-PLcom/android/server/wm/LockTaskController;->isNewTaskLockTaskModeViolation(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/LockTaskController;->activityBlockedFromFinish(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/LockTaskController;->clearLockedTask(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/LockTaskController;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/wm/LockTaskController;->getLockTaskAuth(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;)I
+PLcom/android/server/wm/LockTaskController;->isLockTaskModeViolation(Lcom/android/server/wm/Task;Z)Z
+HPLcom/android/server/wm/LockTaskController;->isLockTaskModeViolationInternal(Lcom/android/server/wm/WindowContainer;ILandroid/content/Intent;I)Z
PLcom/android/server/wm/LockTaskController;->isPackageAllowlisted(ILjava/lang/String;)Z
-PLcom/android/server/wm/LockTaskController;->isTaskAuthAllowlisted(I)Z
-PLcom/android/server/wm/LockTaskController;->isWirelessEmergencyAlert(Landroid/content/Intent;)Z
-PLcom/android/server/wm/LockTaskController;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/LockTaskController;->isTaskLocked(Lcom/android/server/wm/Task;)Z
HSPLcom/android/server/wm/MirrorActiveUids;-><init>()V
-PLcom/android/server/wm/MirrorActiveUids;->getUidState(I)I
-HPLcom/android/server/wm/MirrorActiveUids;->hasNonAppVisibleWindow(I)Z
-PLcom/android/server/wm/MirrorActiveUids;->onNonAppSurfaceVisibilityChanged(IZ)V
-HPLcom/android/server/wm/MirrorActiveUids;->onUidActive(II)V
-PLcom/android/server/wm/MirrorActiveUids;->onUidInactive(I)V
-HPLcom/android/server/wm/MirrorActiveUids;->onUidProcStateChanged(II)V
-PLcom/android/server/wm/NonAppWindowAnimationAdapter;->shouldAttachNavBarToApp(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;I)Z
-PLcom/android/server/wm/NonAppWindowAnimationAdapter;->shouldStartNonAppWindowAnimationsForKeyguardExit(I)Z
-HSPLcom/android/server/wm/PackageConfigPersister;-><clinit>()V
+PLcom/android/server/wm/MirrorActiveUids;->getNonAppVisibleWindowDetails(I)Landroid/util/SparseIntArray;
+HPLcom/android/server/wm/MirrorActiveUids;->hasNonAppVisibleWindow(I)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;
+PLcom/android/server/wm/MirrorActiveUids;->updateCount(IZLandroid/util/SparseIntArray;)V
+PLcom/android/server/wm/NonAppWindowAnimationAdapter;->shouldAttachNavBarToApp(Lcom/android/server/wm/DisplayContent;I)Z
+PLcom/android/server/wm/PackageConfigPersister$DeletePackageItem;-><init>(ILjava/lang/String;)V
+PLcom/android/server/wm/PackageConfigPersister$DeletePackageItem;->process()V
+PLcom/android/server/wm/PackageConfigPersister$PackageConfigRecord;-><init>(Ljava/lang/String;I)V
HSPLcom/android/server/wm/PackageConfigPersister;-><init>(Lcom/android/server/wm/PersisterQueue;Lcom/android/server/wm/ActivityTaskManagerService;)V
-HPLcom/android/server/wm/PackageConfigPersister;->findRecord(Landroid/util/SparseArray;Ljava/lang/String;I)Lcom/android/server/wm/PackageConfigPersister$PackageConfigRecord;
-PLcom/android/server/wm/PackageConfigPersister;->getUserConfigsDir(I)Ljava/io/File;
-PLcom/android/server/wm/PackageConfigPersister;->loadUserPackages(I)V
-HPLcom/android/server/wm/PackageConfigPersister;->updateConfigIfNeeded(Lcom/android/server/wm/ConfigurationContainer;ILjava/lang/String;)V
+PLcom/android/server/wm/PackageConfigPersister;->findPackageConfiguration(ILjava/lang/String;)Lcom/android/server/wm/ActivityTaskManagerInternal$PackageConfig;
+PLcom/android/server/wm/PackageConfigPersister;->findRecord(Landroid/util/SparseArray;Ljava/lang/String;I)Lcom/android/server/wm/PackageConfigPersister$PackageConfigRecord;
+PLcom/android/server/wm/PackageConfigPersister;->findRecordOrCreate(Landroid/util/SparseArray;Ljava/lang/String;I)Lcom/android/server/wm/PackageConfigPersister$PackageConfigRecord;
+PLcom/android/server/wm/PackageConfigPersister;->removePackage(ILjava/lang/String;)V
+PLcom/android/server/wm/PackageConfigPersister;->updateConfigIfNeeded(Lcom/android/server/wm/ConfigurationContainer;ILjava/lang/String;)V
+PLcom/android/server/wm/PackageConfigPersister;->updateFromImpl(Ljava/lang/String;ILcom/android/server/wm/PackageConfigurationUpdaterImpl;)Z
+PLcom/android/server/wm/PackageConfigurationUpdaterImpl;-><init>(Ljava/lang/String;ILcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/PackageConfigurationUpdaterImpl;->commit()Z
+PLcom/android/server/wm/PackageConfigurationUpdaterImpl;->updateConfig(ILjava/lang/String;)V
HSPLcom/android/server/wm/PendingRemoteAnimationRegistry;-><init>(Lcom/android/server/wm/WindowManagerGlobalLock;Landroid/os/Handler;)V
-PLcom/android/server/wm/PendingRemoteAnimationRegistry;->overrideOptionsIfNeeded(Ljava/lang/String;Landroid/app/ActivityOptions;)Landroid/app/ActivityOptions;
-HSPLcom/android/server/wm/PersisterQueue$$ExternalSyntheticLambda0;-><init>()V
-HSPLcom/android/server/wm/PersisterQueue$LazyTaskWriterThread;-><init>(Lcom/android/server/wm/PersisterQueue;Ljava/lang/String;)V
-HSPLcom/android/server/wm/PersisterQueue$LazyTaskWriterThread;-><init>(Lcom/android/server/wm/PersisterQueue;Ljava/lang/String;Lcom/android/server/wm/PersisterQueue$LazyTaskWriterThread-IA;)V
+PLcom/android/server/wm/PerfettoTransitionTracer$$ExternalSyntheticLambda0;-><init>(Ljava/util/concurrent/atomic/AtomicInteger;I)V
+PLcom/android/server/wm/PerfettoTransitionTracer;-><init>()V
+HPLcom/android/server/wm/PerfettoTransitionTracer;->isTracing()Z
+PLcom/android/server/wm/PerfettoTransitionTracer;->logAbortedTransition(Lcom/android/server/wm/Transition;)V
+PLcom/android/server/wm/PerfettoTransitionTracer;->logFinishedTransition(Lcom/android/server/wm/Transition;)V
+PLcom/android/server/wm/PerfettoTransitionTracer;->logRemovingStartingWindow(Lcom/android/server/wm/StartingData;)V
+PLcom/android/server/wm/PerfettoTransitionTracer;->logSentTransition(Lcom/android/server/wm/Transition;Ljava/util/ArrayList;)V
+PLcom/android/server/wm/PerfettoTransitionTracer;->saveForBugreport(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/wm/PersisterQueue$LazyTaskWriterThread;-><init>(Lcom/android/server/wm/PersisterQueue;)V
PLcom/android/server/wm/PersisterQueue$LazyTaskWriterThread;->run()V
-PLcom/android/server/wm/PersisterQueue;->-$$Nest$fgetmListeners(Lcom/android/server/wm/PersisterQueue;)Ljava/util/ArrayList;
-PLcom/android/server/wm/PersisterQueue;->-$$Nest$fgetmWriteQueue(Lcom/android/server/wm/PersisterQueue;)Ljava/util/ArrayList;
PLcom/android/server/wm/PersisterQueue;->-$$Nest$mprocessNextItem(Lcom/android/server/wm/PersisterQueue;)V
HSPLcom/android/server/wm/PersisterQueue;-><clinit>()V
HSPLcom/android/server/wm/PersisterQueue;-><init>()V
HSPLcom/android/server/wm/PersisterQueue;-><init>(JJ)V
PLcom/android/server/wm/PersisterQueue;->addItem(Lcom/android/server/wm/PersisterQueue$WriteQueueItem;Z)V
-HSPLcom/android/server/wm/PersisterQueue;->addListener(Lcom/android/server/wm/PersisterQueue$Listener;)V
PLcom/android/server/wm/PersisterQueue;->findLastItem(Ljava/util/function/Predicate;Ljava/lang/Class;)Lcom/android/server/wm/PersisterQueue$WriteQueueItem;
-PLcom/android/server/wm/PersisterQueue;->processNextItem()V
PLcom/android/server/wm/PersisterQueue;->removeItems(Ljava/util/function/Predicate;Ljava/lang/Class;)V
-PLcom/android/server/wm/PersisterQueue;->startPersisting()V
PLcom/android/server/wm/PersisterQueue;->yieldIfQueueTooDeep()V
-PLcom/android/server/wm/PhysicalDisplaySwitchTransitionLauncher;-><init>(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/ActivityTaskManagerService;Landroid/content/Context;Lcom/android/server/wm/TransitionController;)V
-PLcom/android/server/wm/PhysicalDisplaySwitchTransitionLauncher;-><init>(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/TransitionController;)V
PLcom/android/server/wm/PinnedTaskController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/PinnedTaskController;)V
PLcom/android/server/wm/PinnedTaskController$PinnedTaskListenerDeathHandler;-><init>(Lcom/android/server/wm/PinnedTaskController;)V
-PLcom/android/server/wm/PinnedTaskController$PinnedTaskListenerDeathHandler;-><init>(Lcom/android/server/wm/PinnedTaskController;Lcom/android/server/wm/PinnedTaskController$PinnedTaskListenerDeathHandler-IA;)V
PLcom/android/server/wm/PinnedTaskController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/PinnedTaskController;->isFreezingTaskConfig(Lcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/PinnedTaskController;->onActivityHidden(Landroid/content/ComponentName;)V
-PLcom/android/server/wm/PinnedTaskController;->onPostDisplayConfigurationChanged()V
-PLcom/android/server/wm/PinnedTaskController;->reloadResources()V
-PLcom/android/server/wm/PinnedTaskController;->setAdjustedForIme(ZI)V
PLcom/android/server/wm/PointerEventDispatcher;-><init>(Landroid/view/InputChannel;)V
-PLcom/android/server/wm/PointerEventDispatcher;->registerInputEventListener(Landroid/view/WindowManagerPolicyConstants$PointerEventListener;)V
+HPLcom/android/server/wm/PointerEventDispatcher;->onInputEvent(Landroid/view/InputEvent;)V+]Landroid/view/WindowManagerPolicyConstants$PointerEventListener;Lcom/android/server/wm/RecentTasks$1;,Lcom/android/server/wm/SystemGesturesPointerEventListener;
PLcom/android/server/wm/PossibleDisplayInfoMapper;-><init>(Landroid/hardware/display/DisplayManagerInternal;)V
-PLcom/android/server/wm/PossibleDisplayInfoMapper;->removePossibleDisplayInfos(I)V
-PLcom/android/server/wm/ProtoLogCache$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/wm/ProtoLogCache;-><clinit>()V
-HPLcom/android/server/wm/ProtoLogCache;->update()V
-HSPLcom/android/server/wm/RecentTasks$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wm/PossibleDisplayInfoMapper;->getPossibleDisplayInfos(I)Ljava/util/List;
HSPLcom/android/server/wm/RecentTasks$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/RecentTasks;)V
HSPLcom/android/server/wm/RecentTasks$1;-><init>(Lcom/android/server/wm/RecentTasks;)V
+HPLcom/android/server/wm/RecentTasks$1;->onPointerEvent(Landroid/view/MotionEvent;)V
HSPLcom/android/server/wm/RecentTasks;-><clinit>()V
HSPLcom/android/server/wm/RecentTasks;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskSupervisor;)V
-PLcom/android/server/wm/RecentTasks;->add(Lcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/RecentTasks;->add(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/RecentTasks;->cleanupDisabledPackageTasksLocked(ILjava/lang/String;Ljava/util/Set;)V
PLcom/android/server/wm/RecentTasks;->cleanupLocked(I)V
-PLcom/android/server/wm/RecentTasks;->containsTaskId(II)Z
-PLcom/android/server/wm/RecentTasks;->createRecentTaskInfo(Lcom/android/server/wm/Task;ZZ)Landroid/app/ActivityManager$RecentTaskInfo;
+HPLcom/android/server/wm/RecentTasks;->createRecentTaskInfo(Lcom/android/server/wm/Task;ZZ)Landroid/app/ActivityManager$RecentTaskInfo;
+PLcom/android/server/wm/RecentTasks;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
PLcom/android/server/wm/RecentTasks;->findRemoveIndexForAddTask(Lcom/android/server/wm/Task;)I
-PLcom/android/server/wm/RecentTasks;->findRemoveIndexForTask(Lcom/android/server/wm/Task;Z)I
+PLcom/android/server/wm/RecentTasks;->getAppTasksList(ILjava/lang/String;)Ljava/util/ArrayList;
PLcom/android/server/wm/RecentTasks;->getCurrentProfileIds()[I
-PLcom/android/server/wm/RecentTasks;->getInputListener()Landroid/view/WindowManagerPolicyConstants$PointerEventListener;
-PLcom/android/server/wm/RecentTasks;->getPersistableTaskIds(Landroid/util/ArraySet;)V
-PLcom/android/server/wm/RecentTasks;->getProfileIds(I)Ljava/util/Set;
-PLcom/android/server/wm/RecentTasks;->getRecentTasks(IIZII)Landroid/content/pm/ParceledListSlice;
-HPLcom/android/server/wm/RecentTasks;->getRecentTasksImpl(IIZII)Ljava/util/ArrayList;
-PLcom/android/server/wm/RecentTasks;->getRecentsComponentUid()I
+HPLcom/android/server/wm/RecentTasks;->getProfileIds(I)Ljava/util/Set;
+HPLcom/android/server/wm/RecentTasks;->getRecentTasksImpl(IIIIZ)Ljava/util/ArrayList;+]Lcom/android/server/wm/RecentTasks;Lcom/android/server/wm/RecentTasks;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Set;Landroid/util/ArraySet;
PLcom/android/server/wm/RecentTasks;->getTask(I)Lcom/android/server/wm/Task;
-PLcom/android/server/wm/RecentTasks;->getTaskIdsForUser(I)Landroid/util/SparseBooleanArray;
PLcom/android/server/wm/RecentTasks;->getUserInfo(I)Landroid/content/pm/UserInfo;
-PLcom/android/server/wm/RecentTasks;->hasCompatibleActivityTypeAndWindowingMode(Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;)Z
PLcom/android/server/wm/RecentTasks;->isActiveRecentTask(Lcom/android/server/wm/Task;Landroid/util/SparseBooleanArray;)Z
-HPLcom/android/server/wm/RecentTasks;->isCallerRecents(I)Z
-PLcom/android/server/wm/RecentTasks;->isInVisibleRange(Lcom/android/server/wm/Task;IIZ)Z
-PLcom/android/server/wm/RecentTasks;->isRecentsComponent(Landroid/content/ComponentName;I)Z
-PLcom/android/server/wm/RecentTasks;->isUserRunning(II)Z
-PLcom/android/server/wm/RecentTasks;->isVisibleRecentTask(Lcom/android/server/wm/Task;)Z
+HPLcom/android/server/wm/RecentTasks;->isInVisibleRange(Lcom/android/server/wm/Task;IIZ)Z+]Landroid/content/Intent;Landroid/content/Intent;
+PLcom/android/server/wm/RecentTasks;->isRecentsComponentHomeActivity(I)Z
+HPLcom/android/server/wm/RecentTasks;->isVisibleRecentTask(Lcom/android/server/wm/Task;)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/RecentTasks;->loadParametersFromResources(Landroid/content/res/Resources;)V
-PLcom/android/server/wm/RecentTasks;->loadPersistedTaskIdsForUserLocked(I)V
-PLcom/android/server/wm/RecentTasks;->loadRecentsComponent(Landroid/content/res/Resources;)V
-PLcom/android/server/wm/RecentTasks;->loadUserRecentsLocked(I)V
+HPLcom/android/server/wm/RecentTasks;->loadRecentTasksIfNeeded(I)V
PLcom/android/server/wm/RecentTasks;->notifyTaskAdded(Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/RecentTasks;->notifyTaskPersisterLocked(Lcom/android/server/wm/Task;Z)V
-PLcom/android/server/wm/RecentTasks;->notifyTaskRemoved(Lcom/android/server/wm/Task;ZZ)V
-PLcom/android/server/wm/RecentTasks;->onActivityIdle(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/RecentTasks;->notifyTaskPersisterLocked(Lcom/android/server/wm/Task;Z)V
+HPLcom/android/server/wm/RecentTasks;->notifyTaskRemoved(Lcom/android/server/wm/Task;ZZZ)V
PLcom/android/server/wm/RecentTasks;->onSystemReadyLocked()V
-PLcom/android/server/wm/RecentTasks;->processNextAffiliateChainLocked(I)I
-HSPLcom/android/server/wm/RecentTasks;->registerCallback(Lcom/android/server/wm/RecentTasks$Callbacks;)V
-PLcom/android/server/wm/RecentTasks;->removeForAddTask(Lcom/android/server/wm/Task;)I
-PLcom/android/server/wm/RecentTasks;->shouldPersistTaskLocked(Lcom/android/server/wm/Task;)Z
-HPLcom/android/server/wm/RecentTasks;->syncPersistentTaskIdsLocked()V
+PLcom/android/server/wm/RecentTasks;->remove(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/RecentTasks;->restoreRecentTasksLocked(ILandroid/util/SparseBooleanArray;Lcom/android/server/wm/TaskPersister$RecentTaskFiles;)V
+HPLcom/android/server/wm/RecentTasks;->syncPersistentTaskIdsLocked()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/RecentTasks;->trimInactiveRecentTasks()V
PLcom/android/server/wm/RecentTasks;->usersWithRecentsLoadedLocked()[I
-PLcom/android/server/wm/RefreshRatePolicy$FrameRateVote;-><init>()V
-HPLcom/android/server/wm/RefreshRatePolicy$FrameRateVote;->refreshRateEquals(F)Z
-HPLcom/android/server/wm/RefreshRatePolicy$FrameRateVote;->reset()Z
-HPLcom/android/server/wm/RefreshRatePolicy$FrameRateVote;->update(FII)Z
+HPLcom/android/server/wm/RefreshRatePolicy$FrameRateVote;->update(IIF)Z
PLcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;-><init>(Lcom/android/server/wm/RefreshRatePolicy;)V
-HPLcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;->get(Ljava/lang/String;)Landroid/view/SurfaceControl$RefreshRateRange;
PLcom/android/server/wm/RefreshRatePolicy;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/DisplayInfo;Lcom/android/server/wm/HighRefreshRateDenylist;)V
-HPLcom/android/server/wm/RefreshRatePolicy;->calculatePriority(Lcom/android/server/wm/WindowState;)I
-PLcom/android/server/wm/RefreshRatePolicy;->findLowRefreshRateMode(Landroid/view/DisplayInfo;Landroid/view/Display$Mode;)Landroid/view/Display$Mode;
-HPLcom/android/server/wm/RefreshRatePolicy;->getPreferredMaxRefreshRate(Lcom/android/server/wm/WindowState;)F
-HPLcom/android/server/wm/RefreshRatePolicy;->getPreferredMinRefreshRate(Lcom/android/server/wm/WindowState;)F
-HPLcom/android/server/wm/RefreshRatePolicy;->getPreferredModeId(Lcom/android/server/wm/WindowState;)I
-HPLcom/android/server/wm/RefreshRatePolicy;->updateFrameRateVote(Lcom/android/server/wm/WindowState;)Z
PLcom/android/server/wm/RemoteDisplayChangeController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/RemoteDisplayChangeController;)V
PLcom/android/server/wm/RemoteDisplayChangeController;-><init>(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/RemoteDisplayChangeController;->isWaitingForRemoteDisplayChange()Z
-PLcom/android/server/wm/ResetTargetTaskHelper;-><init>()V
+PLcom/android/server/wm/ResetTargetTaskHelper;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/ResetTargetTaskHelper;->process(Lcom/android/server/wm/Task;Z)Landroid/app/ActivityOptions;
+PLcom/android/server/wm/ResetTargetTaskHelper;->test(Ljava/lang/Object;)Z
PLcom/android/server/wm/RootDisplayArea;-><init>(Lcom/android/server/wm/WindowManagerService;Ljava/lang/String;I)V
+PLcom/android/server/wm/RootDisplayArea;->asRootDisplayArea()Lcom/android/server/wm/RootDisplayArea;
PLcom/android/server/wm/RootDisplayArea;->findAreaForWindowTypeInLayer(IZZ)Lcom/android/server/wm/DisplayArea$Tokens;
PLcom/android/server/wm/RootDisplayArea;->getRootDisplayArea()Lcom/android/server/wm/RootDisplayArea;
PLcom/android/server/wm/RootDisplayArea;->isOrientationDifferentFromDisplay()Z
PLcom/android/server/wm/RootDisplayArea;->onHierarchyBuilt(Ljava/util/ArrayList;[Lcom/android/server/wm/DisplayArea$Tokens;Ljava/util/Map;)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/wm/RootWindowContainer;)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda0;-><init>(I)V
+HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/wm/RootWindowContainer;ZLcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda10;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda12;-><init>([Z[ZLcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda12;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/wm/RootWindowContainer;I)V
+HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;)V+]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda14;-><init>(ILjava/lang/String;Landroid/content/pm/ApplicationInfo;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda14;->accept(Ljava/lang/Object;)V
PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/wm/Task;[Z[I)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda16;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda17;-><init>([ILandroid/app/ActivityTaskManager$RootTaskInfo;)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda17;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda18;-><init>([Z)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda18;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda21;-><init>(Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/TaskDisplayArea;)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda21;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda22;-><init>()V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda22;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda23;-><init>([Z)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda23;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda24;-><init>(Lcom/android/server/wm/RootWindowContainer;Ljava/lang/String;)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda24;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda26;-><init>(Lcom/android/server/policy/PermissionPolicyInternal;ILjava/lang/String;[I)V
-HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda26;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda28;-><init>()V
-HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda28;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda29;-><init>(Lcom/android/server/wm/Task;[ZZLandroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda16;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda18;-><init>(ILjava/lang/Object;)V
+HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda18;->test(Ljava/lang/Object;)Z+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda1;-><init>([ZLjava/io/PrintWriter;Ljava/io/FileDescriptor;ZZLjava/lang/String;[Z)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda20;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda22;-><init>(Lcom/android/server/wm/RootWindowContainer;Ljava/lang/String;I)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda22;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda24;-><init>(Lcom/android/server/wm/Task;[ZZLcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda24;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda25;-><init>(ILjava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda25;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda27;-><init>(Lcom/android/server/wm/RootWindowContainer;I)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda27;->run()V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda28;-><init>(I[Z)V
+HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda28;->apply(Ljava/lang/Object;)Z
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda29;-><init>(ILandroid/util/ArrayMap;)V
PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda29;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda33;-><init>(Lcom/android/server/wm/RootWindowContainer;I)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda33;->run()V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda34;-><init>(I[Z)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda34;->apply(Ljava/lang/Object;)Z
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda37;-><init>(Lcom/android/server/wm/RootWindowContainer;)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda38;-><init>(Lcom/android/server/wm/RootWindowContainer;ILjava/lang/String;ZZ)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda38;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda39;-><init>(IZLjava/util/ArrayList;Ljava/lang/String;I)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda39;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda43;-><init>(Lcom/android/server/wm/RootWindowContainer;)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda43;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda49;-><init>(Lcom/android/server/policy/PermissionPolicyInternal;)V
-HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda49;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda6;-><init>(Landroid/util/ArrayMap;)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda6;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/wm/RootWindowContainer;Ljava/util/ArrayList;)V
-PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda2;-><init>([ZLjava/io/PrintWriter;Ljava/lang/String;[Z)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda31;-><init>(Lcom/android/server/wm/RootWindowContainer;ILjava/lang/String;ZZ)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda31;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda32;-><init>(IZLjava/util/ArrayList;Ljava/lang/String;I)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda32;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda37;->test(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda3;-><init>(ILjava/io/PrintWriter;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda41;-><init>(Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/TaskDisplayArea;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda41;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda43;-><init>(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/Transition;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda43;->onCollectStarted(Z)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda46;-><init>(Z[ZZ)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda46;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda50;-><init>(Ljava/util/ArrayList;Ljava/io/PrintWriter;[IZ)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda50;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda51;-><init>(Lcom/android/server/policy/PermissionPolicyService$Internal;ILjava/lang/String;[I)V
+HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda51;->test(Ljava/lang/Object;)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda5;-><init>(Ljava/util/ArrayList;Lcom/android/server/wm/Task;Ljava/util/ArrayList;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda6;-><init>(ILjava/lang/Object;)V
+HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda6;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/wm/RootWindowContainer;Ljava/util/ArrayList;I)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda7;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda9;-><init>(I)V
+HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda9;->test(Ljava/lang/Object;)Z
PLcom/android/server/wm/RootWindowContainer$1;-><init>(Lcom/android/server/wm/RootWindowContainer;)V
-PLcom/android/server/wm/RootWindowContainer$AttachApplicationHelper;-><init>(Lcom/android/server/wm/RootWindowContainer;)V
-PLcom/android/server/wm/RootWindowContainer$AttachApplicationHelper;-><init>(Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer$AttachApplicationHelper-IA;)V
-HPLcom/android/server/wm/RootWindowContainer$AttachApplicationHelper;->accept(Lcom/android/server/wm/Task;)V
-HPLcom/android/server/wm/RootWindowContainer$AttachApplicationHelper;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/wm/RootWindowContainer$AttachApplicationHelper;->process(Lcom/android/server/wm/WindowProcessController;)Z
-HPLcom/android/server/wm/RootWindowContainer$AttachApplicationHelper;->reset()V
-HPLcom/android/server/wm/RootWindowContainer$AttachApplicationHelper;->test(Lcom/android/server/wm/ActivityRecord;)Z
-HPLcom/android/server/wm/RootWindowContainer$AttachApplicationHelper;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/RootWindowContainer$FindTaskResult;-><init>()V
-PLcom/android/server/wm/RootWindowContainer$FindTaskResult;->init(ILjava/lang/String;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;)V
-PLcom/android/server/wm/RootWindowContainer$FindTaskResult;->process(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/RootWindowContainer$FindTaskResult;->test(Lcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/RootWindowContainer$FindTaskResult;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/RootWindowContainer$FindTaskResult;->process(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/RootWindowContainer$FindTaskResult;->test(Ljava/lang/Object;)Z
PLcom/android/server/wm/RootWindowContainer$FinishDisabledPackageActivitiesHelper;-><init>(Lcom/android/server/wm/RootWindowContainer;)V
-PLcom/android/server/wm/RootWindowContainer$FinishDisabledPackageActivitiesHelper;->process(Ljava/lang/String;Ljava/util/Set;ZZIZ)Z
-PLcom/android/server/wm/RootWindowContainer$FinishDisabledPackageActivitiesHelper;->reset(Ljava/lang/String;Ljava/util/Set;ZZIZ)V
-PLcom/android/server/wm/RootWindowContainer$FinishDisabledPackageActivitiesHelper;->test(Lcom/android/server/wm/ActivityRecord;)Z
PLcom/android/server/wm/RootWindowContainer$FinishDisabledPackageActivitiesHelper;->test(Ljava/lang/Object;)Z
PLcom/android/server/wm/RootWindowContainer$MyHandler;-><init>(Lcom/android/server/wm/RootWindowContainer;Landroid/os/Looper;)V
-HPLcom/android/server/wm/RootWindowContainer$MyHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/wm/RootWindowContainer$MyHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;
PLcom/android/server/wm/RootWindowContainer$RankTaskLayersRunnable;-><init>(Lcom/android/server/wm/RootWindowContainer;)V
-PLcom/android/server/wm/RootWindowContainer$RankTaskLayersRunnable;-><init>(Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer$RankTaskLayersRunnable-IA;)V
-PLcom/android/server/wm/RootWindowContainer$RankTaskLayersRunnable;->run()V
-PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$1CWL2ckOwG2YY7rgrO99GUxebQw(Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$1PKw-jY8iC_kT9skcjP0rNvpTMU(Lcom/android/server/wm/RootWindowContainer;Ljava/util/ArrayList;Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$1y84R2j6aqQu7hhZU6_qdTFvwxk(Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/TaskDisplayArea;)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$DFaa7QLApF8rlf4uiy_4K0Hxf2Y(Lcom/android/server/wm/RootWindowContainer;ILjava/lang/String;ZZLcom/android/server/wm/TaskDisplayArea;Ljava/lang/Boolean;)Ljava/lang/Boolean;
-PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$GiNtNK8RPrGEtQpM7eTz88NTYLY(I[ZLcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$IE3IrglzO8K3AUkc78Ck4Lwua94(Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$OBluQOlE0gINhfaHzjBgNIe3b4E(IZLjava/util/ArrayList;Ljava/lang/String;ILcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$R79sBJymzrWJ0ntJ8XhLsNaaEiM(Lcom/android/server/wm/RootWindowContainer;Ljava/lang/String;Lcom/android/server/wm/TaskDisplayArea;)V
-PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$ZWXgnb1KNcgfkLsPBW2m_vjAFaM(Lcom/android/server/wm/RootWindowContainer;I)V
-PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$c2GqB8Z3BGGFuy9XgFrzk3ZupFM(Lcom/android/server/wm/Task;[ZZLandroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$cnDv250HlSET-GBlf9zK0KW0JGk(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$dBbdl9I9IH9cWk0Fetqaz9kLR_E(Lcom/android/server/policy/PermissionPolicyInternal;Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$eFO9OL6w_8O86IbHYLCIHm_G2rw(Landroid/util/ArrayMap;Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$hKjOcjgxM4mtNbo193fYs2CiS30(Lcom/android/server/wm/Task;[Z[ILcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$mFYBP9S0waFMJPTAOjY-WDY8Efs(Lcom/android/server/policy/PermissionPolicyInternal;ILjava/lang/String;[ILcom/android/server/wm/TaskFragment;)Z
-PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$pWnnVvVtAcnTwGFZvVBYLFjOP64([ILandroid/app/ActivityTaskManager$RootTaskInfo;Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$sjhjsJnrwdp8YM512XyLr3LJaA0([ZLcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$w6CXK9g_LDMiMSu03H1dcm6ZUYs([ZLcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/RootWindowContainer;->-$$Nest$fgetmTaskLayersChanged(Lcom/android/server/wm/RootWindowContainer;)Z
-PLcom/android/server/wm/RootWindowContainer;->-$$Nest$fputmTaskLayersChanged(Lcom/android/server/wm/RootWindowContainer;Z)V
-HPLcom/android/server/wm/RootWindowContainer;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/RootWindowContainer;->allPausedActivitiesComplete()Z
+HPLcom/android/server/wm/RootWindowContainer$RankTaskLayersRunnable;->run()V
+PLcom/android/server/wm/RootWindowContainer$SleepToken;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/wm/RootWindowContainer$SleepToken;->toString()Ljava/lang/String;
+PLcom/android/server/wm/RootWindowContainer;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+HPLcom/android/server/wm/RootWindowContainer;->allPausedActivitiesComplete()Z
HPLcom/android/server/wm/RootWindowContainer;->allResumedActivitiesIdle()Z
-PLcom/android/server/wm/RootWindowContainer;->allResumedActivitiesVisible()Z
-PLcom/android/server/wm/RootWindowContainer;->anyTaskForId(II)Lcom/android/server/wm/Task;
-PLcom/android/server/wm/RootWindowContainer;->anyTaskForId(IILandroid/app/ActivityOptions;Z)Lcom/android/server/wm/Task;
-PLcom/android/server/wm/RootWindowContainer;->applySleepTokens(Z)V
-HPLcom/android/server/wm/RootWindowContainer;->applySurfaceChangesTransaction()V
-HPLcom/android/server/wm/RootWindowContainer;->attachApplication(Lcom/android/server/wm/WindowProcessController;)Z
-PLcom/android/server/wm/RootWindowContainer;->canLaunchOnDisplay(Lcom/android/server/wm/ActivityRecord;I)Z
-PLcom/android/server/wm/RootWindowContainer;->canStartHomeOnDisplayArea(Landroid/content/pm/ActivityInfo;Lcom/android/server/wm/TaskDisplayArea;Z)Z
-HPLcom/android/server/wm/RootWindowContainer;->checkAppTransitionReady(Lcom/android/server/wm/WindowSurfacePlacer;)V
-PLcom/android/server/wm/RootWindowContainer;->clearDisplayInfoCaches(I)V
-HPLcom/android/server/wm/RootWindowContainer;->clearFrameChangingWindows()V
-HPLcom/android/server/wm/RootWindowContainer;->copyAnimToLayoutParams()Z
+PLcom/android/server/wm/RootWindowContainer;->anyTaskForId(I)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/RootWindowContainer;->anyTaskForId(IILandroid/app/ActivityOptions;Z)Lcom/android/server/wm/Task;+]Lcom/android/internal/util/function/pooled/PooledPredicate;Lcom/android/internal/util/function/pooled/PooledLambdaImpl;
+HPLcom/android/server/wm/RootWindowContainer;->applySleepTokens(Z)V
+HPLcom/android/server/wm/RootWindowContainer;->applySurfaceChangesTransaction$1()V+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/IWallpaperVisibilityListener;Landroid/view/IWallpaperVisibilityListener$Stub$Proxy;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/LinkedList;Ljava/util/LinkedList;
+PLcom/android/server/wm/RootWindowContainer;->attachApplication(Lcom/android/server/wm/WindowProcessController;)Z
+PLcom/android/server/wm/RootWindowContainer;->canLaunchOnDisplay(ILcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/RootWindowContainer;->canStartHomeOnDisplayArea(Landroid/content/pm/ActivityInfo;Lcom/android/server/wm/TaskDisplayArea;Z)Z
+HPLcom/android/server/wm/RootWindowContainer;->checkAppTransitionReady()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/RootWindowContainer;->createSleepToken(ILjava/lang/String;)Lcom/android/server/wm/RootWindowContainer$SleepToken;
PLcom/android/server/wm/RootWindowContainer;->dispatchConfigurationToChild(Lcom/android/server/wm/ConfigurationContainer;Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/RootWindowContainer;->dispatchConfigurationToChild(Lcom/android/server/wm/DisplayContent;Landroid/content/res/Configuration;)V
-HPLcom/android/server/wm/RootWindowContainer;->ensureActivitiesVisible()V
-HPLcom/android/server/wm/RootWindowContainer;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/RootWindowContainer;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+PLcom/android/server/wm/RootWindowContainer;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
+PLcom/android/server/wm/RootWindowContainer;->dumpDisplayConfigs(Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/RootWindowContainer;->dumpDisplayContents(Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/RootWindowContainer;->ensureActivitiesVisible()V
HPLcom/android/server/wm/RootWindowContainer;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;Z)V
-PLcom/android/server/wm/RootWindowContainer;->ensureVisibilityAndConfig(Lcom/android/server/wm/ActivityRecord;IZ)Z
-PLcom/android/server/wm/RootWindowContainer;->executeAppTransitionForAllDisplay()V
-PLcom/android/server/wm/RootWindowContainer;->findTask(ILjava/lang/String;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Lcom/android/server/wm/TaskDisplayArea;)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/RootWindowContainer;->findTask(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/TaskDisplayArea;)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/RootWindowContainer;->finishDisabledPackageActivities(Ljava/lang/String;Ljava/util/Set;ZZIZ)Z
+HPLcom/android/server/wm/RootWindowContainer;->ensureVisibilityAndConfig(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/DisplayContent;Z)V
+PLcom/android/server/wm/RootWindowContainer;->findActivity(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Z)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/RootWindowContainer;->finishDisabledPackageActivities(ILjava/lang/String;Ljava/util/Set;ZZZ)Z
PLcom/android/server/wm/RootWindowContainer;->forAllDisplayPolicies(Ljava/util/function/Consumer;)V
-HPLcom/android/server/wm/RootWindowContainer;->forAllDisplays(Ljava/util/function/Consumer;)V
+HPLcom/android/server/wm/RootWindowContainer;->forAllDisplays(Ljava/util/function/Consumer;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Consumer;megamorphic_types
PLcom/android/server/wm/RootWindowContainer;->getAllRootTaskInfos(I)Ljava/util/ArrayList;
PLcom/android/server/wm/RootWindowContainer;->getCurrentInputMethodWindow()Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/RootWindowContainer;->getDefaultDisplay()Lcom/android/server/wm/DisplayContent;
-PLcom/android/server/wm/RootWindowContainer;->getDefaultTaskDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
HPLcom/android/server/wm/RootWindowContainer;->getDisplayContent(I)Lcom/android/server/wm/DisplayContent;
PLcom/android/server/wm/RootWindowContainer;->getDisplayContentOrCreate(I)Lcom/android/server/wm/DisplayContent;
-PLcom/android/server/wm/RootWindowContainer;->getDisplayRotationCoordinator()Lcom/android/server/wm/DisplayRotationCoordinator;
-PLcom/android/server/wm/RootWindowContainer;->getDumpActivities(Ljava/lang/String;ZZI)Ljava/util/ArrayList;
-PLcom/android/server/wm/RootWindowContainer;->getOrCreateRootTask(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;ZLcom/android/server/wm/LaunchParamsController$LaunchParams;I)Lcom/android/server/wm/Task;
-PLcom/android/server/wm/RootWindowContainer;->getRootTaskInfo(Lcom/android/server/wm/Task;)Landroid/app/ActivityTaskManager$RootTaskInfo;
-PLcom/android/server/wm/RootWindowContainer;->getRunningTasks(ILjava/util/List;IILandroid/util/ArraySet;I)V
-HPLcom/android/server/wm/RootWindowContainer;->getTaskToShowPermissionDialogOn(Ljava/lang/String;I)I
+PLcom/android/server/wm/RootWindowContainer;->getDumpActivities(Ljava/lang/String;IZZ)Ljava/util/ArrayList;
+PLcom/android/server/wm/RootWindowContainer;->getName()Ljava/lang/String;
+HPLcom/android/server/wm/RootWindowContainer;->getNotYetIdleActivity(Lcom/android/server/wm/TaskFragment;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/RootWindowContainer;->getOrCreateRootTask(Landroid/app/ActivityOptions;Lcom/android/server/wm/Task;Z)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/RootWindowContainer;->getOrCreateRootTask(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;ZLcom/android/server/wm/LaunchParamsController$LaunchParams;I)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/RootWindowContainer;->getRootTask(I)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/RootWindowContainer;->getRootTaskInfo(Lcom/android/server/wm/Task;)Landroid/app/ActivityTaskManager$RootTaskInfo;
+HPLcom/android/server/wm/RootWindowContainer;->getRunningTasks(ILjava/util/List;IILandroid/util/ArraySet;I)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/wm/RootWindowContainer;->getTopDisplayFocusedRootTask()Lcom/android/server/wm/Task;
-PLcom/android/server/wm/RootWindowContainer;->getTopFocusedDisplayContent()Lcom/android/server/wm/DisplayContent;
-PLcom/android/server/wm/RootWindowContainer;->getTopResumedActivity()Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/RootWindowContainer;->getWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/WindowToken;
-PLcom/android/server/wm/RootWindowContainer;->getWindowTokenDisplay(Lcom/android/server/wm/WindowToken;)Lcom/android/server/wm/DisplayContent;
-HPLcom/android/server/wm/RootWindowContainer;->handleNotObscuredLocked(Lcom/android/server/wm/WindowState;ZZ)Z
-HPLcom/android/server/wm/RootWindowContainer;->handleResizingWindows()V
-PLcom/android/server/wm/RootWindowContainer;->hasAwakeDisplay()Z
-HPLcom/android/server/wm/RootWindowContainer;->hasPendingLayoutChanges(Lcom/android/server/wm/WindowAnimator;)Z
-PLcom/android/server/wm/RootWindowContainer;->hasVisibleWindowAboveButDoesNotOwnNotificationShade(I)Z
+HPLcom/android/server/wm/RootWindowContainer;->getTopFocusedDisplayContent()Lcom/android/server/wm/DisplayContent;
+HPLcom/android/server/wm/RootWindowContainer;->getTopResumedActivity()Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/RootWindowContainer;->getWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/WindowToken;
PLcom/android/server/wm/RootWindowContainer;->invalidateTaskLayers()V
PLcom/android/server/wm/RootWindowContainer;->isAttached()Z
-HPLcom/android/server/wm/RootWindowContainer;->isLayoutNeeded()Z
+HPLcom/android/server/wm/RootWindowContainer;->isLayoutNeeded()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/RootWindowContainer;->isOnTop()Z
-PLcom/android/server/wm/RootWindowContainer;->isTopDisplayFocusedRootTask(Lcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/RootWindowContainer;->lambda$allPausedActivitiesComplete$38([ZLcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/RootWindowContainer;->lambda$allResumedActivitiesVisible$37([ZLcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/RootWindowContainer;->lambda$findTask$15(Lcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/TaskDisplayArea;)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/RootWindowContainer;->lambda$getAllRootTaskInfos$24(Ljava/util/ArrayList;Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/RootWindowContainer;->lambda$getDumpActivities$44(IZLjava/util/ArrayList;Ljava/lang/String;ILcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/RootWindowContainer;->lambda$getRootTaskInfo$21(Lcom/android/server/wm/Task;[Z[ILcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/RootWindowContainer;->lambda$getRootTaskInfo$22([ILandroid/app/ActivityTaskManager$RootTaskInfo;Lcom/android/server/wm/Task;)V
-HPLcom/android/server/wm/RootWindowContainer;->lambda$getTaskToShowPermissionDialogOn$42(Lcom/android/server/policy/PermissionPolicyInternal;Lcom/android/server/wm/ActivityRecord;)Z
-HPLcom/android/server/wm/RootWindowContainer;->lambda$getTaskToShowPermissionDialogOn$43(Lcom/android/server/policy/PermissionPolicyInternal;ILjava/lang/String;[ILcom/android/server/wm/TaskFragment;)Z
-PLcom/android/server/wm/RootWindowContainer;->lambda$hasVisibleWindowAboveButDoesNotOwnNotificationShade$33(I[ZLcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/RootWindowContainer;->lambda$onDisplayChanged$25(I)V
-HPLcom/android/server/wm/RootWindowContainer;->lambda$performSurfacePlacementNoTrace$7(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/RootWindowContainer;->lambda$rankTaskLayers$28(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/RootWindowContainer;->lambda$rankTaskLayers$29(Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/RootWindowContainer;->lambda$resumeFocusedTasksTopActivities$17(Lcom/android/server/wm/Task;[ZZLandroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/RootWindowContainer;->lambda$startHomeOnDisplay$11(ILjava/lang/String;ZZLcom/android/server/wm/TaskDisplayArea;Ljava/lang/Boolean;)Ljava/lang/Boolean;
-PLcom/android/server/wm/RootWindowContainer;->lambda$startHomeOnEmptyDisplays$10(Ljava/lang/String;Lcom/android/server/wm/TaskDisplayArea;)V
-PLcom/android/server/wm/RootWindowContainer;->lambda$updateDisplayImePolicyCache$26(Landroid/util/ArrayMap;Lcom/android/server/wm/DisplayContent;)V
PLcom/android/server/wm/RootWindowContainer;->onChildPositionChanged(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/RootWindowContainer;->onDisplayChanged(I)V
+HPLcom/android/server/wm/RootWindowContainer;->onDisplayChanged(I)V
PLcom/android/server/wm/RootWindowContainer;->onDisplayManagerReceivedDeviceState(I)V
PLcom/android/server/wm/RootWindowContainer;->onSettingsRetrieved()V
-HPLcom/android/server/wm/RootWindowContainer;->performSurfacePlacement()V
-HPLcom/android/server/wm/RootWindowContainer;->performSurfacePlacementNoTrace()V
-PLcom/android/server/wm/RootWindowContainer;->rankTaskLayers()V
+HPLcom/android/server/wm/RootWindowContainer;->performSurfacePlacementNoTrace()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/util/MergedConfiguration;Landroid/util/MergedConfiguration;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/wm/RootWindowContainer;->rankTaskLayers()V
+HPLcom/android/server/wm/RootWindowContainer;->removeSleepToken(Lcom/android/server/wm/RootWindowContainer$SleepToken;)V
PLcom/android/server/wm/RootWindowContainer;->resolveActivityType(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/Task;)I
PLcom/android/server/wm/RootWindowContainer;->resolveHomeActivity(ILandroid/content/Intent;)Landroid/content/pm/ActivityInfo;
-PLcom/android/server/wm/RootWindowContainer;->resumeFocusedTasksTopActivities()Z
-PLcom/android/server/wm/RootWindowContainer;->resumeFocusedTasksTopActivities(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)Z
+PLcom/android/server/wm/RootWindowContainer;->resumeFocusedTasksTopActivities()V
HPLcom/android/server/wm/RootWindowContainer;->resumeFocusedTasksTopActivities(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Z)Z
+PLcom/android/server/wm/RootWindowContainer;->resumeHomeActivity(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;Lcom/android/server/wm/TaskDisplayArea;)Z
+PLcom/android/server/wm/RootWindowContainer;->sendSleepTransition(Lcom/android/server/wm/DisplayContent;)V
PLcom/android/server/wm/RootWindowContainer;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/RootWindowContainer;->shouldPlacePrimaryHomeOnDisplay(I)Z
-PLcom/android/server/wm/RootWindowContainer;->startHomeOnAllDisplays(ILjava/lang/String;)Z
-PLcom/android/server/wm/RootWindowContainer;->startHomeOnDisplay(ILjava/lang/String;I)Z
-PLcom/android/server/wm/RootWindowContainer;->startHomeOnDisplay(ILjava/lang/String;IZZ)Z
-PLcom/android/server/wm/RootWindowContainer;->startHomeOnEmptyDisplays(Ljava/lang/String;)V
-PLcom/android/server/wm/RootWindowContainer;->startHomeOnTaskDisplayArea(ILjava/lang/String;Lcom/android/server/wm/TaskDisplayArea;ZZ)Z
-PLcom/android/server/wm/RootWindowContainer;->startPowerModeLaunchIfNeeded(ZLcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/RootWindowContainer;->topRunningActivity()Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/RootWindowContainer;->updateDisplayImePolicyCache()V
-HPLcom/android/server/wm/RootWindowContainer;->updateFocusedWindowLocked(IZ)Z
-PLcom/android/server/wm/RootWindowContainer;->updateUIDsPresentOnDisplay()V
-PLcom/android/server/wm/RootWindowContainer;->updateUserRootTask(ILcom/android/server/wm/Task;)V
+PLcom/android/server/wm/RootWindowContainer;->startHomeOnDisplay(Ljava/lang/String;IIZZ)Z
+HPLcom/android/server/wm/RootWindowContainer;->startHomeOnTaskDisplayArea(ILjava/lang/String;Lcom/android/server/wm/TaskDisplayArea;ZZ)Z
+HPLcom/android/server/wm/RootWindowContainer;->startPowerModeLaunchIfNeeded(Lcom/android/server/wm/ActivityRecord;Z)V
+HPLcom/android/server/wm/RootWindowContainer;->updateDisplayImePolicyCache()V
+HPLcom/android/server/wm/RootWindowContainer;->updateUIDsPresentOnDisplay()V
PLcom/android/server/wm/RotationWatcherController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/RunningTasks$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/RunningTasks;)V
-PLcom/android/server/wm/RunningTasks$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/RunningTasks;->$r8$lambda$MfBca7mzpEqQjGaOD89UUs0nLyk(Lcom/android/server/wm/RunningTasks;Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/RunningTasks$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HSPLcom/android/server/wm/RunningTasks;-><init>()V
-PLcom/android/server/wm/RunningTasks;->accept(Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/RunningTasks;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/RunningTasks;->createRunningTaskInfo(Lcom/android/server/wm/Task;J)Landroid/app/ActivityManager$RunningTaskInfo;
-HPLcom/android/server/wm/RunningTasks;->getTasks(ILjava/util/List;ILcom/android/server/wm/RecentTasks;Lcom/android/server/wm/WindowContainer;ILandroid/util/ArraySet;)V
-PLcom/android/server/wm/RunningTasks;->lambda$getTasks$0(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/RunningTasks;->processTaskInWindowContainer(Lcom/android/server/wm/WindowContainer;)V
-HPLcom/android/server/wm/SafeActivityOptions;-><init>(Landroid/app/ActivityOptions;)V
-PLcom/android/server/wm/SafeActivityOptions;->checkPermissions(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/ActivityTaskSupervisor;Landroid/app/ActivityOptions;II)V
-PLcom/android/server/wm/SafeActivityOptions;->fromBundle(Landroid/os/Bundle;)Lcom/android/server/wm/SafeActivityOptions;
+HPLcom/android/server/wm/RunningTasks;->accept(Ljava/lang/Object;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/SafeActivityOptions;-><init>(Landroid/app/ActivityOptions;II)V
+HPLcom/android/server/wm/SafeActivityOptions;->checkPermissions(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/ActivityTaskSupervisor;Landroid/app/ActivityOptions;II)V
+PLcom/android/server/wm/SafeActivityOptions;->fromBundle(IILandroid/os/Bundle;)Lcom/android/server/wm/SafeActivityOptions;
PLcom/android/server/wm/SafeActivityOptions;->getLaunchTaskDisplayArea(Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityTaskSupervisor;)Lcom/android/server/wm/TaskDisplayArea;
PLcom/android/server/wm/SafeActivityOptions;->getOptions(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/ActivityTaskSupervisor;)Landroid/app/ActivityOptions;
-PLcom/android/server/wm/SafeActivityOptions;->getOriginalOptions()Landroid/app/ActivityOptions;
-PLcom/android/server/wm/SafeActivityOptions;->isSystemOrSystemUI(II)Z
PLcom/android/server/wm/SafeActivityOptions;->mergeActivityOptions(Landroid/app/ActivityOptions;Landroid/app/ActivityOptions;)Landroid/app/ActivityOptions;
-PLcom/android/server/wm/SafeActivityOptions;->popAppVerificationBundle()Landroid/os/Bundle;
-HPLcom/android/server/wm/SafeActivityOptions;->setCallerOptions(Landroid/app/ActivityOptions;)V
-PLcom/android/server/wm/SafeActivityOptions;->setCallingPidUidForRemoteAnimationAdapter(Landroid/app/ActivityOptions;II)V
PLcom/android/server/wm/ScreenRecordingCallbackController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/ScreenRecordingCallbackController;->onProcessActivityVisibilityChanged(IZ)V
+PLcom/android/server/wm/ScreenRecordingCallbackController;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/wm/SensitiveContentPackages;-><init>()V
+PLcom/android/server/wm/SensitiveContentPackages;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/wm/SensitiveContentPackages;->shouldBlockScreenCaptureForApp(ILandroid/os/IBinder;Ljava/lang/String;)Z
+PLcom/android/server/wm/Session$$ExternalSyntheticLambda1;-><init>(F)V
+HPLcom/android/server/wm/Session$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/wm/Session$$ExternalSyntheticLambda3;-><init>(Z)V
PLcom/android/server/wm/Session$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/Session;->$r8$lambda$71MlbzHo9XQfq1o5frufHv-e65Q(ZLcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/Session;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IWindowSessionCallback;)V
-HPLcom/android/server/wm/Session;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IWindowSessionCallback;II)V
+PLcom/android/server/wm/Session;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IWindowSessionCallback;II)V
PLcom/android/server/wm/Session;->actionOnWallpaper(Landroid/os/IBinder;Ljava/util/function/BiConsumer;)V
PLcom/android/server/wm/Session;->addToDisplay(Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIILandroid/view/InputChannel;Landroid/view/InsetsState;Landroid/view/InsetsSourceControl$Array;Landroid/graphics/Rect;[F)I
PLcom/android/server/wm/Session;->addToDisplayAsUser(Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIILandroid/view/InputChannel;Landroid/view/InsetsState;Landroid/view/InsetsSourceControl$Array;Landroid/graphics/Rect;[F)I
-PLcom/android/server/wm/Session;->finishDrawing(Landroid/view/IWindow;Landroid/view/SurfaceControl$Transaction;I)V
+PLcom/android/server/wm/Session;->binderDied()V
+HPLcom/android/server/wm/Session;->finishDrawing(Landroid/view/IWindow;Landroid/view/SurfaceControl$Transaction;I)V
+PLcom/android/server/wm/Session;->getWindowId(Landroid/os/IBinder;)Landroid/view/IWindowId;
PLcom/android/server/wm/Session;->grantInputChannel(ILandroid/view/SurfaceControl;Landroid/os/IBinder;Landroid/window/InputTransferToken;IIIILandroid/os/IBinder;Landroid/window/InputTransferToken;Ljava/lang/String;Landroid/view/InputChannel;)V
-PLcom/android/server/wm/Session;->hasWindow()Z
PLcom/android/server/wm/Session;->isClientDead()Z
-PLcom/android/server/wm/Session;->lambda$setShouldZoomOutWallpaper$2(ZLcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/Session;->isSatellitePointingUiPackage()Z
+PLcom/android/server/wm/Session;->killSessionLocked()V
+PLcom/android/server/wm/Session;->notifyImeWindowVisibilityChangedFromClient(Landroid/view/IWindow;ZLandroid/view/inputmethod/ImeTracker$Token;)V
+PLcom/android/server/wm/Session;->notifyInsetsAnimationRunningStateChanged(Landroid/view/IWindow;Z)V
PLcom/android/server/wm/Session;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V
-PLcom/android/server/wm/Session;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HPLcom/android/server/wm/Session;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
HPLcom/android/server/wm/Session;->onWindowAdded(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/Session;->onWindowRemoved(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/Session;->onWindowSurfaceVisibilityChanged(Lcom/android/server/wm/WindowSurfaceController;ZI)V
-HPLcom/android/server/wm/Session;->relayout(Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIIIILandroid/window/ClientWindowFrames;Landroid/util/MergedConfiguration;Landroid/view/SurfaceControl;Landroid/view/InsetsState;Landroid/view/InsetsSourceControl$Array;Landroid/os/Bundle;)I
+HPLcom/android/server/wm/Session;->pokeDrawLock(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/Session;->relayout(Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIIIILandroid/view/WindowRelayoutResult;)I+]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array;]Ljava/util/List;Ljava/util/ArrayList;
PLcom/android/server/wm/Session;->relayoutAsync(Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIIII)V
PLcom/android/server/wm/Session;->remove(Landroid/os/IBinder;)V
+PLcom/android/server/wm/Session;->reportDecorViewGestureInterceptionChanged(Landroid/view/IWindow;Z)V
+PLcom/android/server/wm/Session;->reportSystemGestureExclusionChanged(Landroid/view/IWindow;Ljava/util/List;)V
PLcom/android/server/wm/Session;->setHasOverlayUi(Z)V
PLcom/android/server/wm/Session;->setInsets(Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V
-PLcom/android/server/wm/Session;->setOnBackInvokedCallbackInfo(Landroid/view/IWindow;Landroid/window/OnBackInvokedCallbackInfo;)V
+HPLcom/android/server/wm/Session;->setOnBackInvokedCallbackInfo(Landroid/view/IWindow;Landroid/window/OnBackInvokedCallbackInfo;)V
PLcom/android/server/wm/Session;->setShouldZoomOutWallpaper(Landroid/os/IBinder;Z)V
-PLcom/android/server/wm/SmoothDimmer;-><init>(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/SmoothDimmer;-><init>(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DimmerAnimationHelper$AnimationAdapterFactory;)V
-HPLcom/android/server/wm/SmoothDimmer;->getDimBounds()Landroid/graphics/Rect;
-HPLcom/android/server/wm/SmoothDimmer;->resetDimStates()V
-PLcom/android/server/wm/SnapshotCache;-><init>(Lcom/android/server/wm/WindowManagerService;Ljava/lang/String;)V
-PLcom/android/server/wm/SnapshotCache;->clearRunningCache()V
-PLcom/android/server/wm/SnapshotCache;->getSnapshot(Ljava/lang/Integer;)Landroid/window/TaskSnapshot;
-PLcom/android/server/wm/SnapshotCache;->onIdRemoved(Ljava/lang/Integer;)V
-PLcom/android/server/wm/SnapshotCache;->removeRunningEntry(Ljava/lang/Integer;)V
+HPLcom/android/server/wm/Session;->setWallpaperZoomOut(Landroid/os/IBinder;F)V
+PLcom/android/server/wm/Session;->toString()Ljava/lang/String;
+PLcom/android/server/wm/Session;->updateRequestedVisibleTypes(Landroid/view/IWindow;ILandroid/view/inputmethod/ImeTracker$Token;)V
+PLcom/android/server/wm/SnapshotCache$CacheEntry;-><init>(Landroid/window/TaskSnapshot;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/SnapshotCache;-><init>(Ljava/lang/String;)V
+HPLcom/android/server/wm/SnapshotCache;->getSnapshot(Ljava/lang/Integer;)Landroid/window/TaskSnapshot;
+HPLcom/android/server/wm/SnapshotCache;->removeRunningEntry(Ljava/lang/Integer;)V
PLcom/android/server/wm/SnapshotController$ActivitiesByTask$OpenCloseActivities;-><init>()V
-PLcom/android/server/wm/SnapshotController$ActivitiesByTask$OpenCloseActivities;->add(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/SnapshotController$ActivitiesByTask$OpenCloseActivities;->allOpensOptInOnBackInvoked()Z
-PLcom/android/server/wm/SnapshotController$ActivitiesByTask$OpenCloseActivities;->recordSnapshot(Lcom/android/server/wm/ActivitySnapshotController;)V
PLcom/android/server/wm/SnapshotController$ActivitiesByTask;-><init>()V
-PLcom/android/server/wm/SnapshotController$ActivitiesByTask;-><init>(Lcom/android/server/wm/SnapshotController$ActivitiesByTask-IA;)V
-PLcom/android/server/wm/SnapshotController$ActivitiesByTask;->put(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/SnapshotController$ActivitiesByTask;->recordSnapshot(Lcom/android/server/wm/ActivitySnapshotController;)V
PLcom/android/server/wm/SnapshotController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/SnapshotController;->isTransitionClose(I)Z
-PLcom/android/server/wm/SnapshotController;->isTransitionOpen(I)Z
-PLcom/android/server/wm/SnapshotController;->notifyAppVisibilityChanged(Lcom/android/server/wm/ActivityRecord;Z)V
-PLcom/android/server/wm/SnapshotController;->onTransactionReady(ILjava/util/ArrayList;)V
-PLcom/android/server/wm/SnapshotController;->onTransitionFinish(ILjava/util/ArrayList;)V
-PLcom/android/server/wm/SnapshotController;->onTransitionStarting(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/SnapshotController;->setPause(Z)V
-PLcom/android/server/wm/SnapshotController;->systemReady()V
-PLcom/android/server/wm/SnapshotPersistQueue$1;-><init>(Lcom/android/server/wm/SnapshotPersistQueue;Ljava/lang/String;)V
-PLcom/android/server/wm/SnapshotPersistQueue$1;->run()V
+HPLcom/android/server/wm/SnapshotController;->onTransactionReady(Ljava/util/ArrayList;I)V
+PLcom/android/server/wm/SnapshotPersistQueue$1;-><init>(Lcom/android/server/wm/SnapshotPersistQueue;)V
+HPLcom/android/server/wm/SnapshotPersistQueue$1;->run()V
PLcom/android/server/wm/SnapshotPersistQueue$DeleteWriteQueueItem;-><init>(Lcom/android/server/wm/SnapshotPersistQueue;IILcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;)V
PLcom/android/server/wm/SnapshotPersistQueue$DeleteWriteQueueItem;->write()V
+PLcom/android/server/wm/SnapshotPersistQueue$StoreWriteQueueItem;-><init>(Lcom/android/server/wm/SnapshotPersistQueue;IILandroid/window/TaskSnapshot;Lcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;)V
+PLcom/android/server/wm/SnapshotPersistQueue$StoreWriteQueueItem;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/wm/SnapshotPersistQueue$StoreWriteQueueItem;->onDequeuedLocked()V
+PLcom/android/server/wm/SnapshotPersistQueue$StoreWriteQueueItem;->onQueuedLocked()V
+HPLcom/android/server/wm/SnapshotPersistQueue$StoreWriteQueueItem;->write()V
PLcom/android/server/wm/SnapshotPersistQueue$WriteQueueItem;-><init>(Lcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;I)V
PLcom/android/server/wm/SnapshotPersistQueue$WriteQueueItem;->isReady(Lcom/android/server/pm/UserManagerInternal;)Z
PLcom/android/server/wm/SnapshotPersistQueue$WriteQueueItem;->onDequeuedLocked()V
PLcom/android/server/wm/SnapshotPersistQueue$WriteQueueItem;->onQueuedLocked()V
-PLcom/android/server/wm/SnapshotPersistQueue;->-$$Nest$fgetmLock(Lcom/android/server/wm/SnapshotPersistQueue;)Ljava/lang/Object;
-PLcom/android/server/wm/SnapshotPersistQueue;->-$$Nest$fgetmPaused(Lcom/android/server/wm/SnapshotPersistQueue;)Z
-PLcom/android/server/wm/SnapshotPersistQueue;->-$$Nest$fgetmUserManagerInternal(Lcom/android/server/wm/SnapshotPersistQueue;)Lcom/android/server/pm/UserManagerInternal;
-PLcom/android/server/wm/SnapshotPersistQueue;->-$$Nest$fgetmWriteQueue(Lcom/android/server/wm/SnapshotPersistQueue;)Ljava/util/ArrayDeque;
-PLcom/android/server/wm/SnapshotPersistQueue;->-$$Nest$fputmQueueIdling(Lcom/android/server/wm/SnapshotPersistQueue;Z)V
PLcom/android/server/wm/SnapshotPersistQueue;-><init>()V
-PLcom/android/server/wm/SnapshotPersistQueue;->addToQueueInternal(Lcom/android/server/wm/SnapshotPersistQueue$WriteQueueItem;Z)V
-PLcom/android/server/wm/SnapshotPersistQueue;->createDeleteWriteQueueItem(IILcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;)Lcom/android/server/wm/SnapshotPersistQueue$DeleteWriteQueueItem;
+HPLcom/android/server/wm/SnapshotPersistQueue;->addToQueueInternal(Lcom/android/server/wm/SnapshotPersistQueue$WriteQueueItem;Z)V
PLcom/android/server/wm/SnapshotPersistQueue;->deleteSnapshot(IILcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;)V
-PLcom/android/server/wm/SnapshotPersistQueue;->ensureStoreQueueDepthLocked()V
-PLcom/android/server/wm/SnapshotPersistQueue;->getLock()Ljava/lang/Object;
-PLcom/android/server/wm/SnapshotPersistQueue;->sendToQueueLocked(Lcom/android/server/wm/SnapshotPersistQueue$WriteQueueItem;)V
-PLcom/android/server/wm/SnapshotPersistQueue;->setPaused(Z)V
-PLcom/android/server/wm/SnapshotPersistQueue;->start()V
-PLcom/android/server/wm/SnapshotPersistQueue;->systemReady()V
+HPLcom/android/server/wm/SnapshotPersistQueue;->setPaused(Z)V
+PLcom/android/server/wm/SnapshotStartingData;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/window/TaskSnapshot;I)V
+PLcom/android/server/wm/SnapshotStartingData;->createStartingSurface(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/StartingSurfaceController$StartingSurface;
+PLcom/android/server/wm/SnapshotStartingData;->hasImeSurface()Z
+PLcom/android/server/wm/SnapshotStartingData;->needRevealAnimation()Z
PLcom/android/server/wm/SplashScreenExceptionList$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/SplashScreenExceptionList;)V
+PLcom/android/server/wm/SplashScreenExceptionList$$ExternalSyntheticLambda0;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
PLcom/android/server/wm/SplashScreenExceptionList;-><clinit>()V
PLcom/android/server/wm/SplashScreenExceptionList;-><init>(Ljava/util/concurrent/Executor;)V
-PLcom/android/server/wm/SplashScreenExceptionList;->isException(Ljava/lang/String;ILjava/util/function/Supplier;)Z
-PLcom/android/server/wm/SplashScreenExceptionList;->parseDeviceConfigPackageList(Ljava/lang/String;)V
PLcom/android/server/wm/SplashScreenExceptionList;->updateDeviceConfig(Ljava/lang/String;)V
PLcom/android/server/wm/SplashScreenStartingData;-><init>(Lcom/android/server/wm/WindowManagerService;II)V
PLcom/android/server/wm/SplashScreenStartingData;->createStartingSurface(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/StartingSurfaceController$StartingSurface;
@@ -28083,19 +22062,13 @@ PLcom/android/server/wm/StartingData;-><init>(Lcom/android/server/wm/WindowManag
PLcom/android/server/wm/StartingData;->hasImeSurface()Z
PLcom/android/server/wm/StartingSurfaceController$StartingSurface;-><init>(Lcom/android/server/wm/StartingSurfaceController;Lcom/android/server/wm/Task;Landroid/window/ITaskOrganizer;)V
PLcom/android/server/wm/StartingSurfaceController$StartingSurface;->remove(ZZ)V
-PLcom/android/server/wm/StartingSurfaceController;->-$$Nest$fgetmService(Lcom/android/server/wm/StartingSurfaceController;)Lcom/android/server/wm/WindowManagerService;
-PLcom/android/server/wm/StartingSurfaceController;-><clinit>()V
PLcom/android/server/wm/StartingSurfaceController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/StartingSurfaceController;->createSplashScreenStartingSurface(Lcom/android/server/wm/ActivityRecord;I)Lcom/android/server/wm/StartingSurfaceController$StartingSurface;
-PLcom/android/server/wm/StartingSurfaceController;->isExceptionApp(Ljava/lang/String;ILjava/util/function/Supplier;)Z
-PLcom/android/server/wm/StartingSurfaceController;->makeStartingWindowTypeParameter(ZZZZZZZZIZLjava/lang/String;I)I
-PLcom/android/server/wm/StartingSurfaceController;->showStartingWindow(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;ZZLcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;)V
+PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;I)V
PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;)V
-PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda1;->run()V
PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;)V
-PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda2;->makeAnimator()Landroid/animation/ValueAnimator;
+PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda2;->makeAnimator()Lcom/android/server/wm/SurfaceAnimationRunner$SfValueAnimator;
+PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;)V
+PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda3;->run()V
PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;)V
PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda5;->doFrame(J)V
PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;Landroid/animation/ValueAnimator;)V
@@ -28103,2048 +22076,1409 @@ PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda6;->onAni
PLcom/android/server/wm/SurfaceAnimationRunner$1;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;)V
PLcom/android/server/wm/SurfaceAnimationRunner$1;->onAnimationEnd(Landroid/animation/Animator;)V
PLcom/android/server/wm/SurfaceAnimationRunner$1;->onAnimationStart(Landroid/animation/Animator;)V
-PLcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;->-$$Nest$fgetmCancelled(Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;)Z
-PLcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;-><init>(Lcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;Landroid/view/SurfaceControl;Ljava/lang/Runnable;)V
+PLcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;-><init>(Lcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;Landroid/view/SurfaceControl;Lcom/android/server/wm/LocalAnimationAdapter$$ExternalSyntheticLambda0;)V
PLcom/android/server/wm/SurfaceAnimationRunner$SfValueAnimator;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;)V
PLcom/android/server/wm/SurfaceAnimationRunner$SfValueAnimator;->getAnimationHandler()Landroid/animation/AnimationHandler;
-PLcom/android/server/wm/SurfaceAnimationRunner;->$r8$lambda$ToSJy1KwSRMhh9jEX86pHrCMpsM(Lcom/android/server/wm/SurfaceAnimationRunner;)V
-PLcom/android/server/wm/SurfaceAnimationRunner;->$r8$lambda$ZTJ0zv3TBWmm9N7PsMhXlrn1N_k(Lcom/android/server/wm/SurfaceAnimationRunner;J)V
-PLcom/android/server/wm/SurfaceAnimationRunner;->$r8$lambda$qJwhWRhUrmZXvj8AiaQY-79qSPU(Lcom/android/server/wm/SurfaceAnimationRunner;)Landroid/animation/ValueAnimator;
-PLcom/android/server/wm/SurfaceAnimationRunner;->$r8$lambda$rSMLySCWRN8MY7ZdHCaQcDy2620(Lcom/android/server/wm/SurfaceAnimationRunner;)V
-PLcom/android/server/wm/SurfaceAnimationRunner;->$r8$lambda$tBHqgETCQ96oQUzgbS-jgwe9EfU(Lcom/android/server/wm/SurfaceAnimationRunner;Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;)V
-PLcom/android/server/wm/SurfaceAnimationRunner;->-$$Nest$fgetmAnimationHandler(Lcom/android/server/wm/SurfaceAnimationRunner;)Landroid/animation/AnimationHandler;
-PLcom/android/server/wm/SurfaceAnimationRunner;->-$$Nest$fgetmAnimationThreadHandler(Lcom/android/server/wm/SurfaceAnimationRunner;)Landroid/os/Handler;
-PLcom/android/server/wm/SurfaceAnimationRunner;->-$$Nest$fgetmCancelLock(Lcom/android/server/wm/SurfaceAnimationRunner;)Ljava/lang/Object;
-PLcom/android/server/wm/SurfaceAnimationRunner;->-$$Nest$fgetmFrameTransaction(Lcom/android/server/wm/SurfaceAnimationRunner;)Landroid/view/SurfaceControl$Transaction;
-PLcom/android/server/wm/SurfaceAnimationRunner;->-$$Nest$fgetmLock(Lcom/android/server/wm/SurfaceAnimationRunner;)Ljava/lang/Object;
-PLcom/android/server/wm/SurfaceAnimationRunner;-><clinit>()V
PLcom/android/server/wm/SurfaceAnimationRunner;-><init>(Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;Lcom/android/server/wm/SurfaceAnimationRunner$AnimatorFactory;Landroid/view/SurfaceControl$Transaction;Landroid/os/PowerManagerInternal;)V
-PLcom/android/server/wm/SurfaceAnimationRunner;-><init>(Ljava/util/function/Supplier;Landroid/os/PowerManagerInternal;)V
-HPLcom/android/server/wm/SurfaceAnimationRunner;->applyTransaction()V
-PLcom/android/server/wm/SurfaceAnimationRunner;->applyTransformation(Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;Landroid/view/SurfaceControl$Transaction;J)V
PLcom/android/server/wm/SurfaceAnimationRunner;->continueStartingAnimations()V
-PLcom/android/server/wm/SurfaceAnimationRunner;->deferStartingAnimations()V
-PLcom/android/server/wm/SurfaceAnimationRunner;->lambda$new$0()V
-PLcom/android/server/wm/SurfaceAnimationRunner;->lambda$new$1()Landroid/animation/ValueAnimator;
-HPLcom/android/server/wm/SurfaceAnimationRunner;->lambda$startAnimationLocked$4(Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;)V
-PLcom/android/server/wm/SurfaceAnimationRunner;->onAnimationLeashLost(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/SurfaceAnimationRunner;->requiresEdgeExtension(Lcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;)Z
-PLcom/android/server/wm/SurfaceAnimationRunner;->scheduleApplyTransaction()V
-PLcom/android/server/wm/SurfaceAnimationRunner;->startAnimation(Lcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;Ljava/lang/Runnable;)V
-PLcom/android/server/wm/SurfaceAnimationRunner;->startAnimationLocked(Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;)V
-PLcom/android/server/wm/SurfaceAnimationRunner;->startAnimations(J)V
-PLcom/android/server/wm/SurfaceAnimationRunner;->startPendingAnimationsLocked()V
-HSPLcom/android/server/wm/SurfaceAnimationThread;-><init>()V
+PLcom/android/server/wm/SurfaceAnimationRunner;->onAnimationCancelled(Landroid/view/SurfaceControl;)V
+HPLcom/android/server/wm/SurfaceAnimationRunner;->startAnimation(Lcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/LocalAnimationAdapter$$ExternalSyntheticLambda0;)V
+HPLcom/android/server/wm/SurfaceAnimationRunner;->startPendingAnimationsLocked()V
HSPLcom/android/server/wm/SurfaceAnimationThread;->ensureThreadLocked()V
-HSPLcom/android/server/wm/SurfaceAnimationThread;->get()Lcom/android/server/wm/SurfaceAnimationThread;
HSPLcom/android/server/wm/SurfaceAnimationThread;->getHandler()Landroid/os/Handler;
-HPLcom/android/server/wm/SurfaceAnimator$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
-PLcom/android/server/wm/SurfaceAnimator$$ExternalSyntheticLambda0;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
+PLcom/android/server/wm/SurfaceAnimator$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+HPLcom/android/server/wm/SurfaceAnimator$$ExternalSyntheticLambda0;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
PLcom/android/server/wm/SurfaceAnimator$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/AnimationAdapter;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;I)V
PLcom/android/server/wm/SurfaceAnimator$$ExternalSyntheticLambda1;->run()V
PLcom/android/server/wm/SurfaceAnimator$Animatable;->onLeashAnimationStarting(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
PLcom/android/server/wm/SurfaceAnimator$Animatable;->shouldDeferAnimationFinish(Ljava/lang/Runnable;)Z
-PLcom/android/server/wm/SurfaceAnimator;->$r8$lambda$A_SDCtBYtLcYDAAdc6Nygk1chE0(Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;ILcom/android/server/wm/AnimationAdapter;)V
-PLcom/android/server/wm/SurfaceAnimator;->$r8$lambda$jpWLmdZ8WD7VMOkNht1QSuwzXVM(Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/AnimationAdapter;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;I)V
HPLcom/android/server/wm/SurfaceAnimator;-><init>(Lcom/android/server/wm/SurfaceAnimator$Animatable;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/SurfaceAnimator;->animationTypeToString(I)Ljava/lang/String;
-PLcom/android/server/wm/SurfaceAnimator;->cancelAnimation()V
+HPLcom/android/server/wm/SurfaceAnimator;->cancelAnimation()V
HPLcom/android/server/wm/SurfaceAnimator;->cancelAnimation(Landroid/view/SurfaceControl$Transaction;ZZ)V
-HPLcom/android/server/wm/SurfaceAnimator;->createAnimationLeash(Lcom/android/server/wm/SurfaceAnimator$Animatable;Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;IIIIIZLjava/util/function/Supplier;)Landroid/view/SurfaceControl;
-PLcom/android/server/wm/SurfaceAnimator;->getAnimation()Lcom/android/server/wm/AnimationAdapter;
-PLcom/android/server/wm/SurfaceAnimator;->getAnimationType()I
-HPLcom/android/server/wm/SurfaceAnimator;->getFinishedCallback(Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;
-HPLcom/android/server/wm/SurfaceAnimator;->hasLeash()Z
-HPLcom/android/server/wm/SurfaceAnimator;->isAnimating()Z
-PLcom/android/server/wm/SurfaceAnimator;->lambda$getFinishedCallback$0(Lcom/android/server/wm/AnimationAdapter;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;I)V
-PLcom/android/server/wm/SurfaceAnimator;->lambda$getFinishedCallback$1(Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;ILcom/android/server/wm/AnimationAdapter;)V
-PLcom/android/server/wm/SurfaceAnimator;->removeLeash(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/SurfaceAnimator$Animatable;Landroid/view/SurfaceControl;Z)Z
+HPLcom/android/server/wm/SurfaceAnimator;->createAnimationLeash(Lcom/android/server/wm/SurfaceAnimator$Animatable;Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;IIIIIZ)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/SurfaceAnimator;->hasLeash()Z
+PLcom/android/server/wm/SurfaceAnimator;->isAnimating()Z
+HPLcom/android/server/wm/SurfaceAnimator;->removeLeash(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/SurfaceAnimator$Animatable;Landroid/view/SurfaceControl;Z)Z
HPLcom/android/server/wm/SurfaceAnimator;->reset(Landroid/view/SurfaceControl$Transaction;Z)V
-HPLcom/android/server/wm/SurfaceAnimator;->setLayer(Landroid/view/SurfaceControl$Transaction;I)V
-PLcom/android/server/wm/SurfaceAnimator;->setRelativeLayer(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;I)V
HPLcom/android/server/wm/SurfaceAnimator;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;Ljava/lang/Runnable;Lcom/android/server/wm/AnimationAdapter;Lcom/android/server/wm/SurfaceFreezer;)V
-HPLcom/android/server/wm/SurfaceFreezer;-><init>(Lcom/android/server/wm/SurfaceFreezer$Freezable;Lcom/android/server/wm/WindowManagerService;)V
-HPLcom/android/server/wm/SurfaceFreezer;->hasLeash()Z
-PLcom/android/server/wm/SurfaceFreezer;->takeLeashForAnimation()Landroid/view/SurfaceControl;
-PLcom/android/server/wm/SurfaceFreezer;->unfreeze(Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/SurfaceFreezer;->unfreezeInner(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/SurfaceFreezer;-><init>(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/SurfaceFreezer;->hasLeash()Z
+HPLcom/android/server/wm/SurfaceFreezer;->unfreeze(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types
PLcom/android/server/wm/SurfaceSyncGroupController;-><init>()V
PLcom/android/server/wm/SynchedDeviceConfig$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/SynchedDeviceConfig;)V
PLcom/android/server/wm/SynchedDeviceConfig$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigBuilder;-><init>(Ljava/lang/String;Ljava/util/concurrent/Executor;)V
-PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigBuilder;-><init>(Ljava/lang/String;Ljava/util/concurrent/Executor;Lcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigBuilder-IA;)V
-PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigBuilder;->addDeviceConfigEntry(Ljava/lang/String;ZZ)Lcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigBuilder;
-PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigBuilder;->build()Lcom/android/server/wm/SynchedDeviceConfig;
-PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;->-$$Nest$fgetmDefaultValue(Lcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;)Z
-HPLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;->-$$Nest$mgetValue(Lcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;)Z
-PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;->-$$Nest$misBuildTimeFlagEnabled(Lcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;)Z
-PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;->-$$Nest$mupdateValue(Lcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;Z)V
+PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigBuilder;-><init>(Ljava/util/concurrent/Executor;)V
+PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigBuilder;->addDeviceConfigEntry(Ljava/lang/String;ZZ)V
PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;-><init>(Ljava/lang/String;ZZ)V
-PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;-><init>(Ljava/lang/String;ZZLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry-IA;)V
-HPLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;->getValue()Z
-PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;->isBuildTimeFlagEnabled()Z
-PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;->updateValue(Z)V
-PLcom/android/server/wm/SynchedDeviceConfig;->$r8$lambda$wnSiPqxpYWD7zDbmlb4cH3CKru0(Lcom/android/server/wm/SynchedDeviceConfig;Ljava/lang/String;Lcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;)V
-PLcom/android/server/wm/SynchedDeviceConfig;->-$$Nest$mstart(Lcom/android/server/wm/SynchedDeviceConfig;)Lcom/android/server/wm/SynchedDeviceConfig;
-PLcom/android/server/wm/SynchedDeviceConfig;->-$$Nest$mupdateFlags(Lcom/android/server/wm/SynchedDeviceConfig;)Lcom/android/server/wm/SynchedDeviceConfig;
PLcom/android/server/wm/SynchedDeviceConfig;-><init>(Ljava/lang/String;Ljava/util/concurrent/Executor;Ljava/util/Map;)V
-PLcom/android/server/wm/SynchedDeviceConfig;-><init>(Ljava/lang/String;Ljava/util/concurrent/Executor;Ljava/util/Map;Lcom/android/server/wm/SynchedDeviceConfig-IA;)V
-PLcom/android/server/wm/SynchedDeviceConfig;->builder(Ljava/lang/String;Ljava/util/concurrent/Executor;)Lcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigBuilder;
-HPLcom/android/server/wm/SynchedDeviceConfig;->getFlagValue(Ljava/lang/String;)Z
+HPLcom/android/server/wm/SynchedDeviceConfig;->getFlagValue(Ljava/lang/String;)Z+]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap;
PLcom/android/server/wm/SynchedDeviceConfig;->isBuildTimeFlagEnabled(Ljava/lang/String;)Z
-PLcom/android/server/wm/SynchedDeviceConfig;->isDeviceConfigFlagEnabled(Ljava/lang/String;Z)Z
-PLcom/android/server/wm/SynchedDeviceConfig;->lambda$updateFlags$0(Ljava/lang/String;Lcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;)V
-PLcom/android/server/wm/SynchedDeviceConfig;->start()Lcom/android/server/wm/SynchedDeviceConfig;
-PLcom/android/server/wm/SynchedDeviceConfig;->updateFlags()Lcom/android/server/wm/SynchedDeviceConfig;
+PLcom/android/server/wm/SynchedDeviceConfig;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
PLcom/android/server/wm/SystemGesturesPointerEventListener$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/SystemGesturesPointerEventListener;)V
PLcom/android/server/wm/SystemGesturesPointerEventListener$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/wm/SystemGesturesPointerEventListener$1;-><init>(Lcom/android/server/wm/SystemGesturesPointerEventListener;Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;Landroid/os/Handler;)V
PLcom/android/server/wm/SystemGesturesPointerEventListener$FlingGestureDetector;-><init>(Lcom/android/server/wm/SystemGesturesPointerEventListener;)V
-PLcom/android/server/wm/SystemGesturesPointerEventListener;->$r8$lambda$ny76CjJQ3d_Eeus7bZqFDsxdevk(Lcom/android/server/wm/SystemGesturesPointerEventListener;)V
-PLcom/android/server/wm/SystemGesturesPointerEventListener;->-$$Nest$fgetmContext(Lcom/android/server/wm/SystemGesturesPointerEventListener;)Landroid/content/Context;
-PLcom/android/server/wm/SystemGesturesPointerEventListener;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/wm/SystemGesturesPointerEventListener$Callbacks;)V
-PLcom/android/server/wm/SystemGesturesPointerEventListener;->checkNull(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/wm/SystemGesturesPointerEventListener;->lambda$systemReady$0()V
+PLcom/android/server/wm/SystemGesturesPointerEventListener$FlingGestureDetector;->onFling(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z
+PLcom/android/server/wm/SystemGesturesPointerEventListener$FlingGestureDetector;->onSingleTapUp(Landroid/view/MotionEvent;)Z
+PLcom/android/server/wm/SystemGesturesPointerEventListener;-><init>(Landroid/content/Context;Lcom/android/server/wm/DisplayPolicy$PolicyHandler;Lcom/android/server/wm/DisplayPolicy$1;)V
+PLcom/android/server/wm/SystemGesturesPointerEventListener;->captureDown(ILandroid/view/MotionEvent;)V
+HPLcom/android/server/wm/SystemGesturesPointerEventListener;->detectSwipe(IJFF)I
+PLcom/android/server/wm/SystemGesturesPointerEventListener;->findIndex(I)I
HPLcom/android/server/wm/SystemGesturesPointerEventListener;->onConfigurationChanged()V
-PLcom/android/server/wm/SystemGesturesPointerEventListener;->onDisplayInfoChanged(Landroid/view/DisplayInfo;)V
-PLcom/android/server/wm/SystemGesturesPointerEventListener;->systemReady()V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda12;-><init>()V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda12;->test(Ljava/lang/Object;Ljava/lang/Object;)Z
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda13;-><init>()V
-HPLcom/android/server/wm/Task$$ExternalSyntheticLambda13;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda18;-><init>()V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda18;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda19;-><init>()V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda19;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda23;-><init>()V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda23;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda25;-><init>()V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda26;-><init>()V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda26;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda27;-><init>([Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda27;->test(Ljava/lang/Object;)Z
-HPLcom/android/server/wm/Task$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/ActivityRecord;Z)V
-HPLcom/android/server/wm/Task$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda30;-><init>()V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda30;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda31;-><init>()V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda31;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda34;-><init>(Lcom/android/server/wm/TaskFragment;[ZLcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Z)V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda34;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda38;-><init>([I)V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda38;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda3;-><init>()V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda40;-><init>()V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda40;->test(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda42;-><init>(Lcom/android/server/am/ActivityManagerService$ItemMatcher;Ljava/util/ArrayList;)V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda42;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;[I)V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda9;-><init>()V
-PLcom/android/server/wm/Task$$ExternalSyntheticLambda9;->test(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
+HPLcom/android/server/wm/SystemGesturesPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;)V+]Lcom/android/server/wm/WindowOrientationListener$OrientationJudge;Lcom/android/server/wm/WindowOrientationListener$AccelSensorJudge;
+HPLcom/android/server/wm/Task$$ExternalSyntheticLambda0;-><init>(I)V
+HPLcom/android/server/wm/Task$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda10;-><init>(ILcom/android/server/wm/Task;)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda12;-><init>(ILjava/lang/Object;)V
+HPLcom/android/server/wm/Task$$ExternalSyntheticLambda12;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;[I)V
+HPLcom/android/server/wm/Task$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/wm/Task;Z)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda14;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda17;-><init>(I)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda17;->test(Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda18;-><init>([I)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda18;->test(Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/ActivityRecord;Z)V
+HPLcom/android/server/wm/Task$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda20;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda20;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda21;-><init>(Ljava/lang/Object;IZ)V
+HPLcom/android/server/wm/Task$$ExternalSyntheticLambda21;->accept(Ljava/lang/Object;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda32;-><init>(Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;Lcom/android/server/wm/Transition;)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda32;->onCollectStarted(Z)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda37;-><init>(Lcom/android/server/wm/TaskFragment;[ZLcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Z)V
+HPLcom/android/server/wm/Task$$ExternalSyntheticLambda37;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda39;-><init>(ILjava/lang/Object;)V
+HPLcom/android/server/wm/Task$$ExternalSyntheticLambda39;->accept(Ljava/lang/Object;)V+]Ljava/util/function/Consumer;Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda0;,Lcom/android/server/wm/Task$$ExternalSyntheticLambda21;
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda3;-><init>(I)V
+HPLcom/android/server/wm/Task$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda4;-><init>(I)V
+HPLcom/android/server/wm/Task$$ExternalSyntheticLambda4;->test(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
PLcom/android/server/wm/Task$ActivityTaskHandler;-><init>(Lcom/android/server/wm/Task;Landroid/os/Looper;)V
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetAffinity(Lcom/android/server/wm/Task$Builder;Ljava/lang/String;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetAffinityIntent(Lcom/android/server/wm/Task$Builder;Landroid/content/Intent;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetAutoRemoveRecents(Lcom/android/server/wm/Task$Builder;Z)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetCallingFeatureId(Lcom/android/server/wm/Task$Builder;Ljava/lang/String;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetCallingPackage(Lcom/android/server/wm/Task$Builder;Ljava/lang/String;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetCallingUid(Lcom/android/server/wm/Task$Builder;I)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetLastDescription(Lcom/android/server/wm/Task$Builder;Ljava/lang/String;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetLastSnapshotData(Lcom/android/server/wm/Task$Builder;Landroid/app/ActivityManager$RecentTaskInfo$PersistedTaskSnapshotData;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetLastTaskDescription(Lcom/android/server/wm/Task$Builder;Landroid/app/ActivityManager$TaskDescription;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetLastTimeMoved(Lcom/android/server/wm/Task$Builder;J)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetNeverRelinquishIdentity(Lcom/android/server/wm/Task$Builder;Z)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetNextAffiliateTaskId(Lcom/android/server/wm/Task$Builder;I)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetOrigActivity(Lcom/android/server/wm/Task$Builder;Landroid/content/ComponentName;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetPrevAffiliateTaskId(Lcom/android/server/wm/Task$Builder;I)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetRealActivitySuspended(Lcom/android/server/wm/Task$Builder;Z)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetResizeMode(Lcom/android/server/wm/Task$Builder;I)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetRootAffinity(Lcom/android/server/wm/Task$Builder;Ljava/lang/String;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetRootWasReset(Lcom/android/server/wm/Task$Builder;Z)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetSupportsPictureInPicture(Lcom/android/server/wm/Task$Builder;Z)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetTaskAffiliation(Lcom/android/server/wm/Task$Builder;I)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetUserId(Lcom/android/server/wm/Task$Builder;I)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetUserSetupComplete(Lcom/android/server/wm/Task$Builder;Z)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->-$$Nest$msetVoiceInteractor(Lcom/android/server/wm/Task$Builder;Lcom/android/internal/app/IVoiceInteractor;)Lcom/android/server/wm/Task$Builder;
PLcom/android/server/wm/Task$Builder;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
HPLcom/android/server/wm/Task$Builder;->build()Lcom/android/server/wm/Task;
HPLcom/android/server/wm/Task$Builder;->buildInner()Lcom/android/server/wm/Task;
-PLcom/android/server/wm/Task$Builder;->setActivityInfo(Landroid/content/pm/ActivityInfo;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setActivityOptions(Landroid/app/ActivityOptions;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setActivityType(I)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setAffinity(Ljava/lang/String;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setAffinityIntent(Landroid/content/Intent;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setAutoRemoveRecents(Z)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setCallingFeatureId(Ljava/lang/String;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setCallingPackage(Ljava/lang/String;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setCallingUid(I)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setEffectiveUid(I)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setIntent(Landroid/content/Intent;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setLastDescription(Ljava/lang/String;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setLastSnapshotData(Landroid/app/ActivityManager$RecentTaskInfo$PersistedTaskSnapshotData;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setLastTaskDescription(Landroid/app/ActivityManager$TaskDescription;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setLastTimeMoved(J)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setLaunchFlags(I)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setMinHeight(I)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setMinWidth(I)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setNeverRelinquishIdentity(Z)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setNextAffiliateTaskId(I)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setOnTop(Z)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setOrigActivity(Landroid/content/ComponentName;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setParent(Lcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setPrevAffiliateTaskId(I)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setRealActivity(Landroid/content/ComponentName;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setRealActivitySuspended(Z)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setResizeMode(I)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setRootAffinity(Ljava/lang/String;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setRootWasReset(Z)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setSourceTask(Lcom/android/server/wm/Task;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setSupportsPictureInPicture(Z)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setTaskAffiliation(I)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setTaskId(I)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setUserId(I)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setUserSetupComplete(Z)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setVoiceInteractor(Lcom/android/internal/app/IVoiceInteractor;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setVoiceSession(Landroid/service/voice/IVoiceInteractionSession;)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->setWindowingMode(I)Lcom/android/server/wm/Task$Builder;
-PLcom/android/server/wm/Task$Builder;->validateRootTask(Lcom/android/server/wm/TaskDisplayArea;)V
PLcom/android/server/wm/Task$FindRootHelper;-><init>(Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/Task$FindRootHelper;-><init>(Lcom/android/server/wm/Task;Lcom/android/server/wm/Task$FindRootHelper-IA;)V
-HPLcom/android/server/wm/Task$FindRootHelper;->findRoot(ZZ)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/Task$FindRootHelper;->test(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/Task$FindRootHelper;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/Task;->$r8$lambda$16T_SxnYaCQXjj5Qiv_85QK8tNM([Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/TaskFragment;)Z
-PLcom/android/server/wm/Task;->$r8$lambda$4zsmVM6sEcyslE_Xq2B45vvi_PE(Lcom/android/server/wm/TaskFragment;[ZLcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;ZLcom/android/server/wm/TaskFragment;)V
-PLcom/android/server/wm/Task;->$r8$lambda$5TiwEo-YMpMik2pDaOLatEjRPl8(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/Task;->$r8$lambda$5kdOuobKsweeXF6gUQF93WfbSkc(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/Task;->$r8$lambda$71YccE_AQP42Bwnq_wvEDeaMask(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityManager$TaskDescription;)Z
-HPLcom/android/server/wm/Task;->$r8$lambda$DbhuUlekQ2cVQp1TiLmGb_W7C-g(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/Task;)V
-PLcom/android/server/wm/Task;->$r8$lambda$Hr9sWL6lAgfuIPdEeR0dqxlQnL4(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;[ILcom/android/server/wm/TaskFragment;)V
-PLcom/android/server/wm/Task;->$r8$lambda$MGdkroLlOek4EWRGZFVNRyZtNnY(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/Task;->$r8$lambda$RV6KjZIk2zFL0tBVbRRqDyUNDSM(Lcom/android/server/am/ActivityManagerService$ItemMatcher;Ljava/util/ArrayList;Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/Task;->$r8$lambda$Wnyj0mZCQymmNf74WH7X7NQELpQ(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/Task;->$r8$lambda$eRF5AQqEOlK-E-ZFx2bqmj1YY7o(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/Task;->$r8$lambda$mZnFDLY4z-d2CM7h_5X1sXJHhI8([ILcom/android/server/wm/Task;)V
-PLcom/android/server/wm/Task;->$r8$lambda$tVpkFMG2_bx-FznGmNjbpYswPyE(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Lcom/android/modules/utils/TypedXmlSerializer;)Z
-PLcom/android/server/wm/Task;->-$$Nest$fputmHasBeenVisible(Lcom/android/server/wm/Task;Z)V
-PLcom/android/server/wm/Task;->-$$Nest$maddChild(Lcom/android/server/wm/Task;Lcom/android/server/wm/WindowContainer;IZ)V
+HPLcom/android/server/wm/Task$FindRootHelper;->test(Ljava/lang/Object;)Z
PLcom/android/server/wm/Task;-><clinit>()V
-HPLcom/android/server/wm/Task;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ILandroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;Landroid/content/ComponentName;ZZIILjava/lang/String;JZLandroid/app/ActivityManager$TaskDescription;Landroid/app/ActivityManager$RecentTaskInfo$PersistedTaskSnapshotData;IIIILjava/lang/String;Ljava/lang/String;IZZZIILandroid/content/pm/ActivityInfo;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;ZLandroid/os/IBinder;ZZ)V
-PLcom/android/server/wm/Task;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ILandroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;Landroid/content/ComponentName;ZZIILjava/lang/String;JZLandroid/app/ActivityManager$TaskDescription;Landroid/app/ActivityManager$RecentTaskInfo$PersistedTaskSnapshotData;IIIILjava/lang/String;Ljava/lang/String;IZZZIILandroid/content/pm/ActivityInfo;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;ZLandroid/os/IBinder;ZZLcom/android/server/wm/Task-IA;)V
+HPLcom/android/server/wm/Task;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ILandroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;Landroid/content/ComponentName;ZZIILjava/lang/String;JZLandroid/app/ActivityManager$TaskDescription;IIIILjava/lang/String;Ljava/lang/String;IZZZIILandroid/content/pm/ActivityInfo;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;ZLandroid/os/IBinder;ZZ)V
PLcom/android/server/wm/Task;->addChild(Lcom/android/server/wm/WindowContainer;I)V
-PLcom/android/server/wm/Task;->addChild(Lcom/android/server/wm/WindowContainer;IZ)V
-PLcom/android/server/wm/Task;->adjustBoundsForDisplayChangeIfNeeded(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/Task;->adjustForMinimalTaskDimensions(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/Task;->asTask()Lcom/android/server/wm/Task;
-HPLcom/android/server/wm/Task;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V
-HPLcom/android/server/wm/Task;->canAffectSystemUiFlags()Z
-PLcom/android/server/wm/Task;->canBeOrganized()Z
-PLcom/android/server/wm/Task;->canReuseAsLeafTask()Z
+PLcom/android/server/wm/Task;->adjustFocusToNextFocusableTask(Ljava/lang/String;ZZ)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/Task;->asTask()Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/Task;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/Task;->canMoveTaskToBack(Lcom/android/server/wm/Task;)Z
PLcom/android/server/wm/Task;->checkReadyForSleep()V
-HPLcom/android/server/wm/Task;->checkTranslucentActivityWaiting(Lcom/android/server/wm/ActivityRecord;)V
PLcom/android/server/wm/Task;->clearRootProcess()V
-PLcom/android/server/wm/Task;->closeRecentsChain()V
-PLcom/android/server/wm/Task;->computeMinUserPosition(II)I
+HPLcom/android/server/wm/Task;->clearTopActivities(Lcom/android/server/wm/ActivityRecord;I[I)Lcom/android/server/wm/ActivityRecord;
HPLcom/android/server/wm/Task;->cropWindowsToRootTaskBounds()Z
-PLcom/android/server/wm/Task;->dispatchTaskInfoChangedIfNeeded(Z)V
+HPLcom/android/server/wm/Task;->dispatchTaskInfoChangedIfNeeded(Z)V+]Landroid/window/ITaskOrganizer;Landroid/window/ITaskOrganizer$Stub$Proxy;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/Task;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/wm/Task;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+PLcom/android/server/wm/Task;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
+PLcom/android/server/wm/Task;->dumpInner(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Z)V
PLcom/android/server/wm/Task;->enableEnterPipOnTaskSwitch(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)V
HPLcom/android/server/wm/Task;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;Z)V
-PLcom/android/server/wm/Task;->executeAppTransition(Landroid/app/ActivityOptions;)V
-PLcom/android/server/wm/Task;->fillTaskInfo(Landroid/app/TaskInfo;)V
PLcom/android/server/wm/Task;->fillTaskInfo(Landroid/app/TaskInfo;Z)V
-HPLcom/android/server/wm/Task;->fillTaskInfo(Landroid/app/TaskInfo;ZLcom/android/server/wm/TaskDisplayArea;)V
+HPLcom/android/server/wm/Task;->fillTaskInfo(Landroid/app/TaskInfo;ZLcom/android/server/wm/TaskDisplayArea;)V+]Landroid/app/AppCompatTaskInfo;Landroid/app/AppCompatTaskInfo;]Landroid/app/TaskInfo;Landroid/app/ActivityManager$RecentTaskInfo;,Landroid/app/ActivityManager$RunningTaskInfo;,Landroid/app/ActivityTaskManager$RootTaskInfo;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/Task;->findEnterPipOnTaskSwitchCandidate(Lcom/android/server/wm/Task;)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/Task;->forAllLeafTasks(Ljava/util/function/Consumer;Z)V
-HPLcom/android/server/wm/Task;->forAllLeafTasks(Ljava/util/function/Predicate;)Z
-HPLcom/android/server/wm/Task;->forAllRootTasks(Ljava/util/function/Consumer;Z)V
-PLcom/android/server/wm/Task;->forAllRootTasks(Ljava/util/function/Predicate;Z)Z
+HPLcom/android/server/wm/Task;->forAllLeafTasks(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Consumer;megamorphic_types
+HPLcom/android/server/wm/Task;->forAllLeafTasks(Ljava/util/function/Predicate;)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Predicate;Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda18;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda32;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda9;,Lcom/android/server/wm/RootWindowContainer$FindTaskResult;
+HPLcom/android/server/wm/Task;->forAllRootTasks(Ljava/util/function/Consumer;Z)V+]Ljava/util/function/Consumer;megamorphic_types
+HPLcom/android/server/wm/Task;->forAllRootTasks(Ljava/util/function/Predicate;Z)Z+]Ljava/util/function/Predicate;Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda16;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda18;
PLcom/android/server/wm/Task;->forAllTasks(Ljava/util/function/Consumer;Z)V
-HPLcom/android/server/wm/Task;->forAllTasks(Ljava/util/function/Predicate;)Z
+PLcom/android/server/wm/Task;->forAllTasks(Ljava/util/function/Predicate;)Z
PLcom/android/server/wm/Task;->fromWindowContainerToken(Landroid/window/WindowContainerToken;)Lcom/android/server/wm/Task;
-HPLcom/android/server/wm/Task;->getAdjacentTask()Lcom/android/server/wm/Task;
-PLcom/android/server/wm/Task;->getAdjustedChildPosition(Lcom/android/server/wm/WindowContainer;I)I
-PLcom/android/server/wm/Task;->getAnimatingActivityRegistry()Lcom/android/server/wm/AnimatingActivityRegistry;
-PLcom/android/server/wm/Task;->getBaseIntent()Landroid/content/Intent;
-HPLcom/android/server/wm/Task;->getBounds(Landroid/graphics/Rect;)V
-PLcom/android/server/wm/Task;->getDescendantTaskCount()I
-HPLcom/android/server/wm/Task;->getDimBounds(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/Task;->getAdjacentTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;
+PLcom/android/server/wm/Task;->getAdjustedChildPosition(ILcom/android/server/wm/WindowContainer;)I
+HPLcom/android/server/wm/Task;->getBaseIntent()Landroid/content/Intent;
+HPLcom/android/server/wm/Task;->getBasePackageName()Ljava/lang/String;+]Landroid/content/Intent;Landroid/content/Intent;
+PLcom/android/server/wm/Task;->getCreatedByOrganizerTask()Lcom/android/server/wm/Task;
HPLcom/android/server/wm/Task;->getDisplayCutoutInsets()Landroid/graphics/Rect;
-PLcom/android/server/wm/Task;->getDisplayInfo()Landroid/view/DisplayInfo;
-PLcom/android/server/wm/Task;->getDumpActivitiesLocked(Ljava/lang/String;I)Ljava/util/ArrayList;
-PLcom/android/server/wm/Task;->getHasBeenVisible()Z
-PLcom/android/server/wm/Task;->getLaunchBounds()Landroid/graphics/Rect;
-PLcom/android/server/wm/Task;->getName()Ljava/lang/String;
-HPLcom/android/server/wm/Task;->getOrganizedTask()Lcom/android/server/wm/Task;
-PLcom/android/server/wm/Task;->getPictureInPictureParams(Lcom/android/server/wm/ActivityRecord;)Landroid/app/PictureInPictureParams;
-HPLcom/android/server/wm/Task;->getRelativePosition()Landroid/graphics/Point;
-PLcom/android/server/wm/Task;->getRootActivity()Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/Task;->getRootActivity(Z)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/Task;->getRootActivity(ZZ)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/Task;->getRootTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;
-PLcom/android/server/wm/Task;->getRootTaskId()I
-PLcom/android/server/wm/Task;->getStartingWindowInfo(Lcom/android/server/wm/ActivityRecord;)Landroid/window/StartingWindowInfo;
-PLcom/android/server/wm/Task;->getTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;
-PLcom/android/server/wm/Task;->getTaskDescription()Landroid/app/ActivityManager$TaskDescription;
+PLcom/android/server/wm/Task;->getDumpActivitiesLocked(ILjava/lang/String;)Ljava/util/ArrayList;
+HPLcom/android/server/wm/Task;->getName()Ljava/lang/String;
+PLcom/android/server/wm/Task;->getNextFocusableTask(Z)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/Task;->getOrganizedTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
+PLcom/android/server/wm/Task;->getProtoFieldId()J
+HPLcom/android/server/wm/Task;->getRootActivity(ZZ)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/Task;->getRootTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;+]Ljava/util/function/Predicate;megamorphic_types
+HPLcom/android/server/wm/Task;->getStartingWindowInfo(Lcom/android/server/wm/ActivityRecord;)Landroid/window/StartingWindowInfo;
+HPLcom/android/server/wm/Task;->getTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;+]Ljava/util/function/Predicate;Lcom/android/internal/util/function/pooled/PooledLambdaImpl;,Lcom/android/server/wm/BackNavigationController$$ExternalSyntheticLambda6;,Lcom/android/server/wm/Task$$ExternalSyntheticLambda14;,Lcom/android/server/wm/utils/AlwaysTruePredicate;
PLcom/android/server/wm/Task;->getTaskInfo()Landroid/app/ActivityManager$RunningTaskInfo;
-PLcom/android/server/wm/Task;->getTopFullscreenActivity()Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/Task;->getTopLeafTask()Lcom/android/server/wm/Task;
-HPLcom/android/server/wm/Task;->getTopPausingActivity()Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/Task;->getTopResumedActivity()Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/Task;->getTopVisibleActivity()Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/Task;->getTopLeafTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/Task;->getTopPausingActivity()Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/Task;->getTopResumedActivity()Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/Task;->getTopVisibleAppMainWindow()Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/Task;->goToSleepIfPossible(Z)Z
PLcom/android/server/wm/Task;->handlesOrientationChangeFromDescendant(I)Z
-HPLcom/android/server/wm/Task;->hasVisibleChildren()Z
-PLcom/android/server/wm/Task;->isAlwaysOnTop()Z
+HPLcom/android/server/wm/Task;->isAlwaysOnTop()Z
PLcom/android/server/wm/Task;->isCompatible(II)Z
-PLcom/android/server/wm/Task;->isDragResizing()Z
-HPLcom/android/server/wm/Task;->isFocused()Z
-PLcom/android/server/wm/Task;->isForceHiddenForPinnedTask()Z
-PLcom/android/server/wm/Task;->isInTask(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/Task;->isLeafTask()Z
+PLcom/android/server/wm/Task;->isFocusedRootTaskOnDisplay()Z
+HPLcom/android/server/wm/Task;->isLeafTask()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/wm/Task;->isOrganized()Z
HPLcom/android/server/wm/Task;->isResizeable()Z
-HPLcom/android/server/wm/Task;->isResizeable(Z)Z
HPLcom/android/server/wm/Task;->isRootTask()Z
-PLcom/android/server/wm/Task;->isTaskId(I)Z
PLcom/android/server/wm/Task;->isTopRootTaskInDisplayArea()Z
-PLcom/android/server/wm/Task;->isTopRunningNonDelayed(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Z
-HPLcom/android/server/wm/Task;->lambda$ensureActivitiesVisible$19(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/Task;)V
-PLcom/android/server/wm/Task;->lambda$findEnterPipOnTaskSwitchCandidate$22([Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/TaskFragment;)Z
-PLcom/android/server/wm/Task;->lambda$getDescendantTaskCount$5([ILcom/android/server/wm/Task;)V
-PLcom/android/server/wm/Task;->lambda$getDumpActivitiesLocked$29(Lcom/android/server/am/ActivityManagerService$ItemMatcher;Ljava/util/ArrayList;Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/Task;->lambda$getTopFullscreenActivity$9(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/Task;->lambda$getTopVisibleActivity$10(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/Task;->lambda$pauseActivityIfNeeded$0(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;[ILcom/android/server/wm/TaskFragment;)V
-PLcom/android/server/wm/Task;->lambda$resumeTopActivityInnerLocked$20(Lcom/android/server/wm/TaskFragment;[ZLcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;ZLcom/android/server/wm/TaskFragment;)V
-PLcom/android/server/wm/Task;->lambda$startActivityLocked$21(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/Task;->lambda$topStartingWindow$1(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/Task;->lockTaskAuthToString()Ljava/lang/String;
PLcom/android/server/wm/Task;->makeAnimationLeash()Landroid/view/SurfaceControl$Builder;
-PLcom/android/server/wm/Task;->minimalResumeActivityLocked(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/Task;->moveToFront(Ljava/lang/String;)V
-PLcom/android/server/wm/Task;->moveToFront(Ljava/lang/String;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/Task;->migrateToNewSurfaceControl(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/Task;->moveTaskFragmentsToBottomIfNeeded(Lcom/android/server/wm/ActivityRecord;[I)V
+PLcom/android/server/wm/Task;->moveTaskToBack(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/Task;->moveTaskToBackInner(Lcom/android/server/wm/Task;Lcom/android/server/wm/Transition;)V
+PLcom/android/server/wm/Task;->moveTaskToFront(Lcom/android/server/wm/Task;ZLandroid/app/ActivityOptions;Lcom/android/server/am/AppTimeTracker;ZLjava/lang/String;)V
+PLcom/android/server/wm/Task;->moveToBack(Ljava/lang/String;Lcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/Task;->moveToFront(Ljava/lang/String;Lcom/android/server/wm/Task;)V
PLcom/android/server/wm/Task;->notifyActivityDrawnLocked(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/Task;->onAppFocusChanged(Z)V
+HPLcom/android/server/wm/Task;->onAppFocusChanged(Z)V
PLcom/android/server/wm/Task;->onChildPositionChanged(Lcom/android/server/wm/WindowContainer;)V
PLcom/android/server/wm/Task;->onChildVisibleRequestedChanged(Lcom/android/server/wm/WindowContainer;)Z
HPLcom/android/server/wm/Task;->onConfigurationChanged(Landroid/content/res/Configuration;)V
HPLcom/android/server/wm/Task;->onConfigurationChangedInner(Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/Task;->onDescendantActivityAdded(ZILcom/android/server/wm/ActivityRecord;)V
PLcom/android/server/wm/Task;->onDescendantOrientationChanged(Lcom/android/server/wm/WindowContainer;)Z
HPLcom/android/server/wm/Task;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
HPLcom/android/server/wm/Task;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
-PLcom/android/server/wm/Task;->pauseActivityIfNeeded(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;)Z
+PLcom/android/server/wm/Task;->onResize()V
+PLcom/android/server/wm/Task;->onTaskBoundsChangedForFreeform()V
+PLcom/android/server/wm/Task;->onlyHasTaskOverlayActivities(Z)Z
+HPLcom/android/server/wm/Task;->pauseActivityIfNeeded(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;)Z
+PLcom/android/server/wm/Task;->performClearTop(Lcom/android/server/wm/ActivityRecord;I[I)Lcom/android/server/wm/ActivityRecord;
PLcom/android/server/wm/Task;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
-PLcom/android/server/wm/Task;->positionChildAtTop(Lcom/android/server/wm/Task;)V
-HPLcom/android/server/wm/Task;->prepareSurfaces()V
-PLcom/android/server/wm/Task;->removeLaunchTickMessages()V
-PLcom/android/server/wm/Task;->removedFromRecents()V
-HPLcom/android/server/wm/Task;->resolveLeafTaskOnlyOverrideConfigs(Landroid/content/res/Configuration;Landroid/graphics/Rect;)V
-HPLcom/android/server/wm/Task;->restoreFromXml(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/wm/ActivityTaskSupervisor;)Lcom/android/server/wm/Task;
-PLcom/android/server/wm/Task;->resumeTopActivityInnerLocked(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Z)Z
-PLcom/android/server/wm/Task;->resumeTopActivityUncheckedLocked(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)Z
+HPLcom/android/server/wm/Task;->prepareSurfaces()V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
+PLcom/android/server/wm/Task;->removeActivities(Ljava/lang/String;Z)V
+PLcom/android/server/wm/Task;->removeChild(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/Task;->removeChild(Lcom/android/server/wm/WindowContainer;Ljava/lang/String;)V
+PLcom/android/server/wm/Task;->removeIfPossible(Ljava/lang/String;)V
+PLcom/android/server/wm/Task;->removeImmediately(Ljava/lang/String;)V
+PLcom/android/server/wm/Task;->resetTaskIfNeeded(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/Task;->restoreFromXml(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/wm/ActivityTaskSupervisor;)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/Task;->resumeTopActivityInnerLocked(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Z)Z
HPLcom/android/server/wm/Task;->resumeTopActivityUncheckedLocked(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Z)Z
PLcom/android/server/wm/Task;->returnsToHomeRootTask()Z
-PLcom/android/server/wm/Task;->reuseAsLeafTask(Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/Task;
-PLcom/android/server/wm/Task;->reuseOrCreateTask(Landroid/content/pm/ActivityInfo;Landroid/content/Intent;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;ZLcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)Lcom/android/server/wm/Task;
-PLcom/android/server/wm/Task;->saveActivityToXml(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Lcom/android/modules/utils/TypedXmlSerializer;)Z
-PLcom/android/server/wm/Task;->saveLaunchingStateIfNeeded()V
+HPLcom/android/server/wm/Task;->reuseOrCreateTask(Landroid/content/pm/ActivityInfo;Landroid/content/Intent;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;ZLcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)Lcom/android/server/wm/Task;
PLcom/android/server/wm/Task;->saveLaunchingStateIfNeeded(Lcom/android/server/wm/DisplayContent;)V
-HPLcom/android/server/wm/Task;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;)V
-PLcom/android/server/wm/Task;->sendTaskAppeared()V
-PLcom/android/server/wm/Task;->sendTaskFragmentParentInfoChangedIfNeeded()V
-PLcom/android/server/wm/Task;->sendTaskVanished(Landroid/window/ITaskOrganizer;)V
+HPLcom/android/server/wm/Task;->sendTaskAppeared()V
+HPLcom/android/server/wm/Task;->sendTaskFragmentParentInfoChangedIfNeeded()V
PLcom/android/server/wm/Task;->setBounds(Landroid/graphics/Rect;)I
-PLcom/android/server/wm/Task;->setBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)I
PLcom/android/server/wm/Task;->setBoundsUnchecked(Landroid/graphics/Rect;)I
PLcom/android/server/wm/Task;->setDeferTaskAppear(Z)V
-PLcom/android/server/wm/Task;->setHasBeenVisible(Z)V
+PLcom/android/server/wm/Task;->setForceHidden(IZ)Z
+PLcom/android/server/wm/Task;->setHasBeenVisible()V
PLcom/android/server/wm/Task;->setInitialSurfaceControlProperties(Landroid/view/SurfaceControl$Builder;)V
HPLcom/android/server/wm/Task;->setIntent(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;)V
-PLcom/android/server/wm/Task;->setIntent(Lcom/android/server/wm/ActivityRecord;)V
PLcom/android/server/wm/Task;->setIntent(Lcom/android/server/wm/ActivityRecord;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;)V
-PLcom/android/server/wm/Task;->setLastNonFullscreenBounds(Landroid/graphics/Rect;)V
-PLcom/android/server/wm/Task;->setLockTaskAuth(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/Task;->setMinDimensions(Landroid/content/pm/ActivityInfo;)V
+HPLcom/android/server/wm/Task;->setLockTaskAuth(Lcom/android/server/wm/ActivityRecord;)V
PLcom/android/server/wm/Task;->setNextAffiliate(Lcom/android/server/wm/Task;)V
PLcom/android/server/wm/Task;->setPrevAffiliate(Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/Task;->setRootProcess(Lcom/android/server/wm/WindowProcessController;)V
PLcom/android/server/wm/Task;->setSurfaceControl(Landroid/view/SurfaceControl;)V
-PLcom/android/server/wm/Task;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V
-HPLcom/android/server/wm/Task;->setTaskDescriptionFromActivityAboveRoot(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityManager$TaskDescription;)Z
PLcom/android/server/wm/Task;->setTaskOrganizer(Landroid/window/ITaskOrganizer;)Z
PLcom/android/server/wm/Task;->setTaskOrganizer(Landroid/window/ITaskOrganizer;Z)Z
-HPLcom/android/server/wm/Task;->shouldIgnoreInput()Z
-HPLcom/android/server/wm/Task;->shouldSleepActivities()Z
-PLcom/android/server/wm/Task;->shouldStartChangeTransition(ILandroid/graphics/Rect;)Z
-PLcom/android/server/wm/Task;->showForAllUsers()Z
PLcom/android/server/wm/Task;->showSurfaceOnCreation()Z
PLcom/android/server/wm/Task;->showToCurrentUser()Z
-PLcom/android/server/wm/Task;->startActivityLocked(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;ZZLandroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/Task;->taskAppearedReady()Z
-PLcom/android/server/wm/Task;->toString()Ljava/lang/String;
-PLcom/android/server/wm/Task;->topActivityContainsStartingWindow()Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/Task;->startActivityLocked(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;ZZLandroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/Task;->toFullString()Ljava/lang/String;
+HPLcom/android/server/wm/Task;->toString()Ljava/lang/String;
PLcom/android/server/wm/Task;->topRunningActivityLocked()Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/Task;->topRunningNonDelayedActivityLocked(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/Task;->topStartingWindow()Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/Task;->touchActiveTime()V
+HPLcom/android/server/wm/Task;->topRunningNonDelayedActivityLocked(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/Task;->updateAllowForceResizeOverride()V
PLcom/android/server/wm/Task;->updateEffectiveIntent()V
-PLcom/android/server/wm/Task;->updateOverrideConfigurationFromLaunchBounds()Landroid/graphics/Rect;
-PLcom/android/server/wm/Task;->updateSurfaceBounds()V
-PLcom/android/server/wm/Task;->updateSurfaceSize(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/Task;->updateOverlayInsetsState(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/Task;->updateOverrideConfigurationFromLaunchBounds()V
+HPLcom/android/server/wm/Task;->updateSurfaceSize(Landroid/view/SurfaceControl$Transaction;)V+]Landroid/graphics/Point;Landroid/graphics/Point;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
HPLcom/android/server/wm/Task;->updateTaskDescription()V
-PLcom/android/server/wm/Task;->updateTaskMovement(ZZI)V
-PLcom/android/server/wm/Task;->updateTaskOrganizerState()Z
+HPLcom/android/server/wm/Task;->updateTaskMovement(IZZ)V
PLcom/android/server/wm/Task;->updateTaskOrganizerState(Z)Z
-PLcom/android/server/wm/Task;->warnForNonLeafTask(Ljava/lang/String;)V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda0;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda10;-><init>()V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda11;-><init>()V
-PLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda11;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda12;-><init>()V
-PLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda12;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda13;-><init>()V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda14;-><init>()V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda15;-><init>()V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda16;-><init>()V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda17;-><init>()V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda18;-><init>()V
-PLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda18;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda19;-><init>()V
-PLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda19;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda1;-><init>()V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda20;-><init>()V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda21;-><init>()V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda22;-><init>()V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda23;-><init>()V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda24;-><init>()V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda2;-><init>()V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda3;-><init>()V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda4;-><init>()V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda5;-><init>()V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda6;-><init>()V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda7;-><init>()V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda8;-><init>()V
-PLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda8;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda9;-><init>()V
-PLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda9;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/Task;->writeIdentifierToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda0;-><init>(I)V
+HPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda0;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V+]Landroid/app/ITaskStackListener;Landroid/app/ITaskStackListener$Stub$Proxy;,Lcom/android/server/display/AutomaticBrightnessController$TaskStackListenerImpl;
HSPLcom/android/server/wm/TaskChangeNotificationController$MainHandler;-><init>(Lcom/android/server/wm/TaskChangeNotificationController;Landroid/os/Looper;)V
-HPLcom/android/server/wm/TaskChangeNotificationController$MainHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->$r8$lambda$4eLcfeE5EsykOVynmzu3fgpLtiE(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->$r8$lambda$JFI_F_hpE-kLZOK3Tx2KyHgWbCk(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->$r8$lambda$NW5zZAkpJyS6Ig7DBkUclrq7o6E(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->$r8$lambda$UIO9IjTxPd3zzG6wdFibHMsY7g4(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->$r8$lambda$XnL-keZKaVwst4Q0DM1DZhp59bY(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->$r8$lambda$ah1JsV-rMqKWq8lKZtNZ807zrV4(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->$r8$lambda$qoDZrtY2jOJf4Ahc6jYayChKO5Q(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->-$$Nest$fgetmNotifyTaskCreated(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
-PLcom/android/server/wm/TaskChangeNotificationController;->-$$Nest$fgetmNotifyTaskDescriptionChanged(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
-PLcom/android/server/wm/TaskChangeNotificationController;->-$$Nest$fgetmNotifyTaskDisplayChanged(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
-PLcom/android/server/wm/TaskChangeNotificationController;->-$$Nest$fgetmNotifyTaskFocusChanged(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
-PLcom/android/server/wm/TaskChangeNotificationController;->-$$Nest$fgetmNotifyTaskListUpdated(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
-PLcom/android/server/wm/TaskChangeNotificationController;->-$$Nest$fgetmNotifyTaskMovedToFront(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
-PLcom/android/server/wm/TaskChangeNotificationController;->-$$Nest$fgetmNotifyTaskStackChanged(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
-PLcom/android/server/wm/TaskChangeNotificationController;->-$$Nest$mforAllRemoteListeners(Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V
+HPLcom/android/server/wm/TaskChangeNotificationController$MainHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/window/TaskSnapshot;Landroid/window/TaskSnapshot;
+HPLcom/android/server/wm/TaskChangeNotificationController;->-$$Nest$mforAllRemoteListeners(Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda0;Landroid/os/Message;)V+]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;
HSPLcom/android/server/wm/TaskChangeNotificationController;-><init>(Lcom/android/server/wm/ActivityTaskSupervisor;Landroid/os/Handler;)V
-HPLcom/android/server/wm/TaskChangeNotificationController;->forAllLocalListeners(Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V
-HPLcom/android/server/wm/TaskChangeNotificationController;->forAllRemoteListeners(Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$0(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$1(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$17(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$18(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$20(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$3(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$4(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskCreated(ILandroid/content/ComponentName;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskDescriptionChanged(Landroid/app/TaskInfo;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskDisplayChanged(II)V
-PLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskFocusChanged(IZ)V
+HPLcom/android/server/wm/TaskChangeNotificationController;->forAllLocalListeners(Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda0;Landroid/os/Message;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskListUpdated()V
-PLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskMovedToFront(Landroid/app/TaskInfo;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskStackChanged()V
-PLcom/android/server/wm/TaskChangeNotificationController;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V
-HPLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda0;-><init>(II)V
+HPLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskStackChanged()V
+PLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda0;-><init>(II)V
HPLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/TaskDisplayArea;I)V
+PLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda2;-><init>(ILcom/android/server/wm/TaskDisplayArea;)V
PLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/ActivityRecord;[I)V
-PLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda5;-><init>()V
-PLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda5;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/wm/ActivityRecord;Z)V
-PLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/TaskDisplayArea;->$r8$lambda$-yYfdy_akJG5D9nqec8kHkxQAJQ(Lcom/android/server/wm/TaskDisplayArea;ILcom/android/server/wm/TaskDisplayArea;Ljava/lang/Integer;)Ljava/lang/Integer;
-PLcom/android/server/wm/TaskDisplayArea;->$r8$lambda$6sIz9TvyA24gS3CFAzKz-0ley5A(Lcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/TaskDisplayArea;->$r8$lambda$UO54rDaQ1J_Js1LvzH8layvsInU(IILcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/TaskDisplayArea;->$r8$lambda$udumU_p2qVGWQKVeQAzWyl3Pn00(Lcom/android/server/wm/ActivityRecord;[ILcom/android/server/wm/Task;)V
-PLcom/android/server/wm/TaskDisplayArea;->$r8$lambda$yqAwegtF8wTOFBeiZ1NP5uEzU-c(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/Task;)V
-PLcom/android/server/wm/TaskDisplayArea;-><init>(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowManagerService;Ljava/lang/String;I)V
-PLcom/android/server/wm/TaskDisplayArea;-><init>(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowManagerService;Ljava/lang/String;IZZ)V
+HPLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda4;->test(Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/TaskDisplayArea;-><init>(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowManagerService;Ljava/lang/String;IZ)V
PLcom/android/server/wm/TaskDisplayArea;->addChild(Lcom/android/server/wm/WindowContainer;I)V
-PLcom/android/server/wm/TaskDisplayArea;->addChildTask(Lcom/android/server/wm/Task;I)V
PLcom/android/server/wm/TaskDisplayArea;->addRootTaskReferenceIfNeeded(Lcom/android/server/wm/Task;)V
-HPLcom/android/server/wm/TaskDisplayArea;->adjustRootTaskLayer(Landroid/view/SurfaceControl$Transaction;Ljava/util/ArrayList;I)I
-HPLcom/android/server/wm/TaskDisplayArea;->allResumedActivitiesComplete()Z
-HPLcom/android/server/wm/TaskDisplayArea;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V
-HPLcom/android/server/wm/TaskDisplayArea;->assignRootTaskOrdering(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/TaskDisplayArea;->adjustRootTaskLayer(Landroid/view/SurfaceControl$Transaction;Ljava/util/ArrayList;I)I+]Landroid/util/IntArray;Landroid/util/IntArray;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/TaskDisplayArea;->allResumedActivitiesComplete()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/TaskDisplayArea;->asTaskDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
+HPLcom/android/server/wm/TaskDisplayArea;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/TaskDisplayArea;->canCreateRemoteAnimationTarget()Z
PLcom/android/server/wm/TaskDisplayArea;->canHostHomeTask()Z
-HPLcom/android/server/wm/TaskDisplayArea;->canSpecifyOrientation(I)Z
-PLcom/android/server/wm/TaskDisplayArea;->createRootTask(IIZ)Lcom/android/server/wm/Task;
-PLcom/android/server/wm/TaskDisplayArea;->createRootTask(IIZLandroid/app/ActivityOptions;)Lcom/android/server/wm/Task;
-PLcom/android/server/wm/TaskDisplayArea;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;Z)V
-PLcom/android/server/wm/TaskDisplayArea;->findMaxPositionForRootTask(Lcom/android/server/wm/Task;)I
-PLcom/android/server/wm/TaskDisplayArea;->findMinPositionForRootTask(Lcom/android/server/wm/Task;)I
-PLcom/android/server/wm/TaskDisplayArea;->findPositionForRootTask(ILcom/android/server/wm/Task;Z)I
+PLcom/android/server/wm/TaskDisplayArea;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+HPLcom/android/server/wm/TaskDisplayArea;->findPositionForRootTask(ILcom/android/server/wm/Task;Z)I
PLcom/android/server/wm/TaskDisplayArea;->forAllTaskDisplayAreas(Ljava/util/function/Consumer;Z)V
PLcom/android/server/wm/TaskDisplayArea;->forAllTaskDisplayAreas(Ljava/util/function/Predicate;Z)Z
-PLcom/android/server/wm/TaskDisplayArea;->getDisplayId()I
PLcom/android/server/wm/TaskDisplayArea;->getFocusedActivity()Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/TaskDisplayArea;->getFocusedRootTask()Lcom/android/server/wm/Task;
-HPLcom/android/server/wm/TaskDisplayArea;->getItemFromTaskDisplayAreas(Ljava/util/function/Function;Z)Ljava/lang/Object;
-PLcom/android/server/wm/TaskDisplayArea;->getLastFocusedRootTask()Lcom/android/server/wm/Task;
-PLcom/android/server/wm/TaskDisplayArea;->getLaunchRootTask(IILandroid/app/ActivityOptions;Lcom/android/server/wm/Task;I)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/TaskDisplayArea;->getFocusedRootTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/TaskDisplayArea;->getItemFromTaskDisplayAreas(Ljava/util/function/Function;Z)Ljava/lang/Object;
PLcom/android/server/wm/TaskDisplayArea;->getLaunchRootTask(IILandroid/app/ActivityOptions;Lcom/android/server/wm/Task;ILcom/android/server/wm/Task;)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/TaskDisplayArea;->getLaunchRootTaskDef(Lcom/android/server/wm/Task;)Lcom/android/server/wm/TaskDisplayArea$LaunchRootTaskDef;
PLcom/android/server/wm/TaskDisplayArea;->getNextRootTaskId()I
PLcom/android/server/wm/TaskDisplayArea;->getOrCreateRootHomeTask(Z)Lcom/android/server/wm/Task;
-PLcom/android/server/wm/TaskDisplayArea;->getOrCreateRootTask(IIZLcom/android/server/wm/Task;Lcom/android/server/wm/Task;Landroid/app/ActivityOptions;I)Lcom/android/server/wm/Task;
-PLcom/android/server/wm/TaskDisplayArea;->getOrCreateRootTask(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;Lcom/android/server/wm/LaunchParamsController$LaunchParams;IIZ)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/TaskDisplayArea;->getOrCreateRootTask(IIZLcom/android/server/wm/Task;Lcom/android/server/wm/Task;Landroid/app/ActivityOptions;I)Lcom/android/server/wm/Task;
HPLcom/android/server/wm/TaskDisplayArea;->getOrientation(I)I
-PLcom/android/server/wm/TaskDisplayArea;->getPriority(Lcom/android/server/wm/WindowContainer;)I
-PLcom/android/server/wm/TaskDisplayArea;->getRootHomeTask()Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/TaskDisplayArea;->getPriority(Lcom/android/server/wm/WindowContainer;)I
HPLcom/android/server/wm/TaskDisplayArea;->getRootTask(II)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/TaskDisplayArea;->getRootTaskAbove(Lcom/android/server/wm/Task;)Lcom/android/server/wm/Task;
PLcom/android/server/wm/TaskDisplayArea;->getTaskDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
PLcom/android/server/wm/TaskDisplayArea;->getTopRootTask()Lcom/android/server/wm/Task;
-PLcom/android/server/wm/TaskDisplayArea;->getTopRootTaskInWindowingMode(I)Lcom/android/server/wm/Task;
-HPLcom/android/server/wm/TaskDisplayArea;->isRemoved()Z
-PLcom/android/server/wm/TaskDisplayArea;->isRootTaskVisible(I)Z
-PLcom/android/server/wm/TaskDisplayArea;->isTopRootTask(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/TaskDisplayArea;->isTaskDisplayArea()Z
PLcom/android/server/wm/TaskDisplayArea;->isValidWindowingMode(ILcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;)Z
PLcom/android/server/wm/TaskDisplayArea;->isWindowingModeSupported(IZZZ)Z
-PLcom/android/server/wm/TaskDisplayArea;->lambda$ensureActivitiesVisible$8(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/Task;)V
-PLcom/android/server/wm/TaskDisplayArea;->lambda$getOrientation$3(ILcom/android/server/wm/TaskDisplayArea;Ljava/lang/Integer;)Ljava/lang/Integer;
-HPLcom/android/server/wm/TaskDisplayArea;->lambda$getRootTask$0(IILcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/TaskDisplayArea;->lambda$getTopRootTask$1(Lcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/TaskDisplayArea;->lambda$pauseBackTasks$5(Lcom/android/server/wm/ActivityRecord;[ILcom/android/server/wm/Task;)V
PLcom/android/server/wm/TaskDisplayArea;->onChildPositionChanged(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/TaskDisplayArea;->onLeafTaskMoved(Lcom/android/server/wm/Task;ZZ)V
-PLcom/android/server/wm/TaskDisplayArea;->onRootTaskOrderChanged(Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/TaskDisplayArea;->onRootTaskWindowingModeChanged(Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/TaskDisplayArea;->pauseBackTasks(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/TaskDisplayArea;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
-HPLcom/android/server/wm/TaskDisplayArea;->positionChildTaskAt(ILcom/android/server/wm/Task;Z)V
+HPLcom/android/server/wm/TaskDisplayArea;->onTaskMoved(Lcom/android/server/wm/Task;ZZ)V
+HPLcom/android/server/wm/TaskDisplayArea;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
PLcom/android/server/wm/TaskDisplayArea;->reduceOnAllTaskDisplayAreas(Ljava/util/function/BiFunction;Ljava/lang/Object;Z)Ljava/lang/Object;
-PLcom/android/server/wm/TaskDisplayArea;->removeRootTaskReferenceIfNeeded(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/TaskDisplayArea;->removeChild(Lcom/android/server/wm/WindowContainer;)V
PLcom/android/server/wm/TaskDisplayArea;->setInitialSurfaceControlProperties(Landroid/view/SurfaceControl$Builder;)V
PLcom/android/server/wm/TaskDisplayArea;->setWindowingMode(I)V
-PLcom/android/server/wm/TaskDisplayArea;->topRunningActivity()Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/TaskDisplayArea;->topRunningActivity(Z)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/TaskDisplayArea;->updateLastFocusedRootTask(Lcom/android/server/wm/Task;Ljava/lang/String;)V
-PLcom/android/server/wm/TaskDisplayArea;->validateWindowingMode(ILcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;)I
-PLcom/android/server/wm/TaskFpsCallbackController;-><init>(Landroid/content/Context;)V
-PLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda2;-><init>()V
-PLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda2;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda3;-><init>()V
-HPLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda4;-><init>()V
-PLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda4;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda5;-><init>()V
-PLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/TaskFragment;->$r8$lambda$LfH9JXdblx4yrdmd8r4hGTdO21s(Lcom/android/server/wm/ActivityRecord;)Z
-HPLcom/android/server/wm/TaskFragment;->$r8$lambda$cCOreq8AkspWCLOBq9Dd3lEozFQ(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/TaskFragment;->$r8$lambda$r5eGjEkD1wu6Ga_1VPus8wI2pTM(Lcom/android/server/wm/TaskFragment;)V
-PLcom/android/server/wm/TaskFragment;->$r8$lambda$um2HAmqSIS709S6Ch2gyOMoXFPA(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/TaskDisplayArea;->topRunningActivity(Z)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/TaskDisplayArea;->updateLastFocusedRootTask(Ljava/lang/String;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/TaskFpsCallbackController;-><init>()V
+PLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda0;-><init>(I)V
+HPLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/wm/TaskFragment;Ljava/io/PrintWriter;Lcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda14;Ljava/lang/String;ZLjava/lang/String;)V
+PLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda14;->run()V
+PLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda9;->accept(Ljava/lang/Object;)V
HPLcom/android/server/wm/TaskFragment;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/os/IBinder;ZZ)V
-PLcom/android/server/wm/TaskFragment;->addChild(Lcom/android/server/wm/WindowContainer;I)V
-PLcom/android/server/wm/TaskFragment;->asTaskFragment()Lcom/android/server/wm/TaskFragment;
-HPLcom/android/server/wm/TaskFragment;->calculateInsetFrames(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayInfo;)V
+HPLcom/android/server/wm/TaskFragment;->addChild(Lcom/android/server/wm/WindowContainer;I)V
+HPLcom/android/server/wm/TaskFragment;->asTaskFragment()Lcom/android/server/wm/TaskFragment;
+HPLcom/android/server/wm/TaskFragment;->calculateInsetFrames(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayInfo;Z)V
HPLcom/android/server/wm/TaskFragment;->canBeResumed(Lcom/android/server/wm/ActivityRecord;)Z
PLcom/android/server/wm/TaskFragment;->canCreateRemoteAnimationTarget()Z
-PLcom/android/server/wm/TaskFragment;->canSpecifyOrientation()Z
PLcom/android/server/wm/TaskFragment;->canStartChangeTransition()Z
+PLcom/android/server/wm/TaskFragment;->cleanUpActivityReferences(Lcom/android/server/wm/ActivityRecord;)V
PLcom/android/server/wm/TaskFragment;->clearLastPausedActivity()V
-PLcom/android/server/wm/TaskFragment;->completePause(ZLcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/TaskFragment;->computeConfigResourceOverrides(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)V
-HPLcom/android/server/wm/TaskFragment;->computeConfigResourceOverrides(Landroid/content/res/Configuration;Landroid/content/res/Configuration;Landroid/view/DisplayInfo;Lcom/android/server/wm/ActivityRecord$CompatDisplayInsets;)V
-HPLcom/android/server/wm/TaskFragment;->fillsParent()Z
-HPLcom/android/server/wm/TaskFragment;->forAllLeafTaskFragments(Ljava/util/function/Consumer;Z)V
-HPLcom/android/server/wm/TaskFragment;->forAllLeafTaskFragments(Ljava/util/function/Predicate;)Z
+HPLcom/android/server/wm/TaskFragment;->completePause(ZLcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/TaskFragment;->computeConfigResourceOverrides(Landroid/content/res/Configuration;Landroid/content/res/Configuration;Lcom/android/server/wm/TaskFragment$ConfigOverrideHint;)V
+PLcom/android/server/wm/TaskFragment;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+PLcom/android/server/wm/TaskFragment;->dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;ZZLjava/lang/String;Lcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda14;)Z
+PLcom/android/server/wm/TaskFragment;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
+PLcom/android/server/wm/TaskFragment;->dumpInner(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Z)V
+HPLcom/android/server/wm/TaskFragment;->fillsParent()Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/TaskFragment;->forAllLeafTaskFragments(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Consumer;Lcom/android/server/wm/Task$$ExternalSyntheticLambda13;,Lcom/android/server/wm/Task$$ExternalSyntheticLambda37;
+HPLcom/android/server/wm/TaskFragment;->forAllLeafTaskFragments(Ljava/util/function/Predicate;)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Predicate;Lcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda3;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda51;,Lcom/android/server/wm/Task$$ExternalSyntheticLambda12;
PLcom/android/server/wm/TaskFragment;->forAllTaskFragments(Ljava/util/function/Consumer;Z)V
-PLcom/android/server/wm/TaskFragment;->fromTaskFragmentToken(Landroid/os/IBinder;Lcom/android/server/wm/ActivityTaskManagerService;)Lcom/android/server/wm/TaskFragment;
-HPLcom/android/server/wm/TaskFragment;->getActivityType()I
-HPLcom/android/server/wm/TaskFragment;->getAdjacentTaskFragment()Lcom/android/server/wm/TaskFragment;
+HPLcom/android/server/wm/TaskFragment;->getActivityType()I+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/TaskFragment;->getDimBounds(Landroid/graphics/Rect;)V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;
HPLcom/android/server/wm/TaskFragment;->getDisplayArea()Lcom/android/server/wm/DisplayArea;
HPLcom/android/server/wm/TaskFragment;->getDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
-HPLcom/android/server/wm/TaskFragment;->getDisplayId()I
-PLcom/android/server/wm/TaskFragment;->getFragmentToken()Landroid/os/IBinder;
-HPLcom/android/server/wm/TaskFragment;->getOrganizedTaskFragment()Lcom/android/server/wm/TaskFragment;
-PLcom/android/server/wm/TaskFragment;->getOrganizerProcessIfDifferent(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/WindowProcessController;
-HPLcom/android/server/wm/TaskFragment;->getOrientation(I)I
-PLcom/android/server/wm/TaskFragment;->getPausingActivity()Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/TaskFragment;->getResumedActivity()Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/TaskFragment;->getRootTask()Lcom/android/server/wm/Task;
-HPLcom/android/server/wm/TaskFragment;->getRootTaskFragment()Lcom/android/server/wm/TaskFragment;
-PLcom/android/server/wm/TaskFragment;->getTask()Lcom/android/server/wm/Task;
-PLcom/android/server/wm/TaskFragment;->getTaskFragment(Ljava/util/function/Predicate;)Lcom/android/server/wm/TaskFragment;
-HPLcom/android/server/wm/TaskFragment;->getTopNonFinishingActivity()Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/TaskFragment;->getTopNonFinishingActivity(Z)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/TaskFragment;->getVisibility(Lcom/android/server/wm/ActivityRecord;)I
-HPLcom/android/server/wm/TaskFragment;->handleCompleteDeferredRemoval()Z
-PLcom/android/server/wm/TaskFragment;->hasDirectChildActivities()Z
-HPLcom/android/server/wm/TaskFragment;->hasRunningActivity(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/TaskFragment;->getDisplayId()I
+HPLcom/android/server/wm/TaskFragment;->getOrganizedTaskFragment()Lcom/android/server/wm/TaskFragment;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;
+HPLcom/android/server/wm/TaskFragment;->getOrganizerProcessIfDifferent(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/WindowProcessController;
+HPLcom/android/server/wm/TaskFragment;->getOrientation(I)I+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/TaskFragment;->getOverrideOrientation()I
+HPLcom/android/server/wm/TaskFragment;->getRootTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/TaskFragment;->getRootTaskFragment()Lcom/android/server/wm/TaskFragment;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;
+HPLcom/android/server/wm/TaskFragment;->getTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/TaskFragment;->getTaskFragment(Ljava/util/function/Predicate;)Lcom/android/server/wm/TaskFragment;+]Ljava/util/function/Predicate;Lcom/android/server/wm/Task$$ExternalSyntheticLambda0;
+HPLcom/android/server/wm/TaskFragment;->getTopNonFinishingActivity(ZZ)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/TaskFragment;->getVisibility(Lcom/android/server/wm/ActivityRecord;)I+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/TaskFragment;->handleCompleteDeferredRemoval()Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
HPLcom/android/server/wm/TaskFragment;->intersectWithInsetsIfFits(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
HPLcom/android/server/wm/TaskFragment;->isAttached()Z
-HPLcom/android/server/wm/TaskFragment;->isEmbedded()Z
HPLcom/android/server/wm/TaskFragment;->isFocusableAndVisible()Z
HPLcom/android/server/wm/TaskFragment;->isForceHidden()Z
-HPLcom/android/server/wm/TaskFragment;->isForceTranslucent()Z
-PLcom/android/server/wm/TaskFragment;->isLeafTaskFragment()Z
+HPLcom/android/server/wm/TaskFragment;->isLeafTaskFragment()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/TaskFragment;->isOrganizedTaskFragment()Z
PLcom/android/server/wm/TaskFragment;->isReadyToTransit()Z
PLcom/android/server/wm/TaskFragment;->isSyncFinished(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)Z
-HPLcom/android/server/wm/TaskFragment;->isTopActivityFocusable()Z
-HPLcom/android/server/wm/TaskFragment;->isTopActivityLaunchedBehind()Z
-HPLcom/android/server/wm/TaskFragment;->isTranslucent(Lcom/android/server/wm/ActivityRecord;)Z
-HPLcom/android/server/wm/TaskFragment;->isTranslucent(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/TaskFragment;->isTranslucentForTransition()Z
-PLcom/android/server/wm/TaskFragment;->lambda$clearLastPausedActivity$8(Lcom/android/server/wm/TaskFragment;)V
-HPLcom/android/server/wm/TaskFragment;->lambda$getTopNonFinishingActivity$2(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/TaskFragment;->lambda$getTopNonFinishingActivity$3(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/TaskFragment;->lambda$topRunningActivity$4(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/TaskFragment;->onActivityStateChanged(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord$State;Ljava/lang/String;)V
+HPLcom/android/server/wm/TaskFragment;->isTopActivityFocusable()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/TaskFragment;->isTranslucent(Lcom/android/server/wm/ActivityRecord;)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/TaskFragment;->isTranslucentAndVisible()Z
+HPLcom/android/server/wm/TaskFragment;->isTranslucentForTransition()Z
+PLcom/android/server/wm/TaskFragment;->onAnimationLeashCreated(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
+PLcom/android/server/wm/TaskFragment;->onAnimationLeashLost(Landroid/view/SurfaceControl$Transaction;)V
PLcom/android/server/wm/TaskFragment;->onChildVisibleRequestedChanged(Lcom/android/server/wm/WindowContainer;)Z
PLcom/android/server/wm/TaskFragment;->onConfigurationChanged(Landroid/content/res/Configuration;)V
-HPLcom/android/server/wm/TaskFragment;->prepareSurfaces()V
-PLcom/android/server/wm/TaskFragment;->providesOrientation()Z
+HPLcom/android/server/wm/TaskFragment;->prepareSurfaces()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/TaskFragment;->providesOrientation()Z
+PLcom/android/server/wm/TaskFragment;->removeChild(Lcom/android/server/wm/WindowContainer;Z)V
+PLcom/android/server/wm/TaskFragment;->removeImmediately()V
+PLcom/android/server/wm/TaskFragment;->resetAdjacentTaskFragment()V
HPLcom/android/server/wm/TaskFragment;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V
HPLcom/android/server/wm/TaskFragment;->resumeTopActivity(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Z)Z
-PLcom/android/server/wm/TaskFragment;->schedulePauseActivity(Lcom/android/server/wm/ActivityRecord;ZZZLjava/lang/String;)V
+HPLcom/android/server/wm/TaskFragment;->schedulePauseActivity(Lcom/android/server/wm/ActivityRecord;ZZZLjava/lang/String;)V
PLcom/android/server/wm/TaskFragment;->sendTaskFragmentInfoChanged()V
-PLcom/android/server/wm/TaskFragment;->setClosingChangingStartBoundsIfNeeded()Z
-PLcom/android/server/wm/TaskFragment;->setResumedActivity(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;)V
+PLcom/android/server/wm/TaskFragment;->setForceHidden(IZ)Z
+HPLcom/android/server/wm/TaskFragment;->setResumedActivity(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;)V
PLcom/android/server/wm/TaskFragment;->setSurfaceControl(Landroid/view/SurfaceControl;)V
-HPLcom/android/server/wm/TaskFragment;->shouldBeVisible(Lcom/android/server/wm/ActivityRecord;)Z
-HPLcom/android/server/wm/TaskFragment;->shouldDeferRemoval()Z
-PLcom/android/server/wm/TaskFragment;->shouldReportOrientationUnspecified()Z
+PLcom/android/server/wm/TaskFragment;->shouldBeVisible(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/TaskFragment;->shouldRemoveSelfOnLastChildRemoval()Z
+HPLcom/android/server/wm/TaskFragment;->shouldSleepActivities()Z
PLcom/android/server/wm/TaskFragment;->shouldSleepOrShutDownActivities()Z
-PLcom/android/server/wm/TaskFragment;->startPausing(ZLcom/android/server/wm/ActivityRecord;Ljava/lang/String;)Z
-PLcom/android/server/wm/TaskFragment;->startPausing(ZZLcom/android/server/wm/ActivityRecord;Ljava/lang/String;)Z
+HPLcom/android/server/wm/TaskFragment;->startPausing(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;ZZ)Z
PLcom/android/server/wm/TaskFragment;->supportsMultiWindow()Z
HPLcom/android/server/wm/TaskFragment;->supportsMultiWindowInDisplayArea(Lcom/android/server/wm/TaskDisplayArea;)Z
-HPLcom/android/server/wm/TaskFragment;->topRunningActivity()Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/TaskFragment;->topRunningActivity(Z)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/TaskFragment;->topRunningActivity(Z)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
HPLcom/android/server/wm/TaskFragment;->updateActivityVisibilities(Lcom/android/server/wm/ActivityRecord;Z)V
PLcom/android/server/wm/TaskFragment;->updateOrganizedTaskFragmentSurface()V
-PLcom/android/server/wm/TaskFragment;->warnForNonLeafTaskFragment(Ljava/lang/String;)V
HSPLcom/android/server/wm/TaskFragmentOrganizerController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/WindowOrganizerController;)V
-HPLcom/android/server/wm/TaskFragmentOrganizerController;->dispatchPendingEvents()V
PLcom/android/server/wm/TaskLaunchParamsModifier$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/TaskLaunchParamsModifier;II)V
PLcom/android/server/wm/TaskLaunchParamsModifier$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
PLcom/android/server/wm/TaskLaunchParamsModifier$$ExternalSyntheticLambda2;-><init>(Ljava/util/List;)V
PLcom/android/server/wm/TaskLaunchParamsModifier$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/TaskLaunchParamsModifier;->$r8$lambda$TjxGreTpw9xhmmPZAU-spdevuA4(Ljava/util/List;Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/TaskLaunchParamsModifier;->$r8$lambda$cOwEsqAlVxZJC8Bgaj_hUt2vkL8(Lcom/android/server/wm/TaskLaunchParamsModifier;IILcom/android/server/wm/TaskDisplayArea;)Z
HSPLcom/android/server/wm/TaskLaunchParamsModifier;-><init>(Lcom/android/server/wm/ActivityTaskSupervisor;)V
PLcom/android/server/wm/TaskLaunchParamsModifier;->adjustBoundsToAvoidConflict(Landroid/graphics/Rect;Ljava/util/List;Landroid/graphics/Rect;)V
-PLcom/android/server/wm/TaskLaunchParamsModifier;->adjustBoundsToAvoidConflictInDisplayArea(Lcom/android/server/wm/TaskDisplayArea;Landroid/graphics/Rect;)V
-PLcom/android/server/wm/TaskLaunchParamsModifier;->adjustBoundsToFitInDisplayArea(Lcom/android/server/wm/TaskDisplayArea;Landroid/content/pm/ActivityInfo$WindowLayout;Landroid/graphics/Rect;)V
-PLcom/android/server/wm/TaskLaunchParamsModifier;->appendLog(Ljava/lang/String;)V
+HPLcom/android/server/wm/TaskLaunchParamsModifier;->adjustBoundsToFitInDisplayArea(Lcom/android/server/wm/TaskDisplayArea;Landroid/content/pm/ActivityInfo$WindowLayout;Landroid/graphics/Rect;)V
PLcom/android/server/wm/TaskLaunchParamsModifier;->boundsConflict(Ljava/util/List;Landroid/graphics/Rect;)Z
-HPLcom/android/server/wm/TaskLaunchParamsModifier;->calculate(Lcom/android/server/wm/Task;Landroid/content/pm/ActivityInfo$WindowLayout;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityStarter$Request;ILcom/android/server/wm/LaunchParamsController$LaunchParams;Lcom/android/server/wm/LaunchParamsController$LaunchParams;)I
-PLcom/android/server/wm/TaskLaunchParamsModifier;->canApplyFreeformWindowPolicy(Lcom/android/server/wm/TaskDisplayArea;I)Z
-PLcom/android/server/wm/TaskLaunchParamsModifier;->canCalculateBoundsForFullscreenTask(Lcom/android/server/wm/TaskDisplayArea;I)Z
-PLcom/android/server/wm/TaskLaunchParamsModifier;->canInheritWindowingModeFromSource(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/TaskLaunchParamsModifier;->getFallbackDisplayAreaForActivity(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityStarter$Request;)Lcom/android/server/wm/TaskDisplayArea;
-PLcom/android/server/wm/TaskLaunchParamsModifier;->getPreferredLaunchTaskDisplayArea(Lcom/android/server/wm/Task;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/LaunchParamsController$LaunchParams;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityStarter$Request;)Lcom/android/server/wm/TaskDisplayArea;
HPLcom/android/server/wm/TaskLaunchParamsModifier;->getTaskBounds(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/TaskDisplayArea;Landroid/content/pm/ActivityInfo$WindowLayout;IZLandroid/graphics/Rect;)V
-PLcom/android/server/wm/TaskLaunchParamsModifier;->initLogBuilder(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/TaskLaunchParamsModifier;->lambda$adjustBoundsToAvoidConflictInDisplayArea$2(Ljava/util/List;Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/TaskLaunchParamsModifier;->lambda$calculate$0(IILcom/android/server/wm/TaskDisplayArea;)Z
-PLcom/android/server/wm/TaskLaunchParamsModifier;->onCalculate(Lcom/android/server/wm/Task;Landroid/content/pm/ActivityInfo$WindowLayout;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityStarter$Request;ILcom/android/server/wm/LaunchParamsController$LaunchParams;Lcom/android/server/wm/LaunchParamsController$LaunchParams;)I
-PLcom/android/server/wm/TaskLaunchParamsModifier;->outputLog()V
-PLcom/android/server/wm/TaskLaunchParamsModifier;->resolveOrientation(Lcom/android/server/wm/ActivityRecord;)I
+HPLcom/android/server/wm/TaskLaunchParamsModifier;->onCalculate(Lcom/android/server/wm/Task;Landroid/content/pm/ActivityInfo$WindowLayout;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityStarter$Request;ILcom/android/server/wm/LaunchParamsController$LaunchParams;Lcom/android/server/wm/LaunchParamsController$LaunchParams;)I
PLcom/android/server/wm/TaskLaunchParamsModifier;->resolveOrientation(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/TaskDisplayArea;Landroid/graphics/Rect;)I
-PLcom/android/server/wm/TaskLaunchParamsModifier;->sizeMatches(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
PLcom/android/server/wm/TaskOrganizerController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/TaskOrganizerController;Landroid/window/ITaskOrganizer;ILjava/util/ArrayList;)V
PLcom/android/server/wm/TaskOrganizerController$$ExternalSyntheticLambda2;->run()V
-PLcom/android/server/wm/TaskOrganizerController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;Ljava/util/ArrayList;)V
+PLcom/android/server/wm/TaskOrganizerController$$ExternalSyntheticLambda3;-><init>(Ljava/util/ArrayList;ILjava/lang/Object;)V
PLcom/android/server/wm/TaskOrganizerController$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
PLcom/android/server/wm/TaskOrganizerController$DeathRecipient;-><init>(Lcom/android/server/wm/TaskOrganizerController;Landroid/window/ITaskOrganizer;)V
-PLcom/android/server/wm/TaskOrganizerController$PendingTaskEvent;-><init>(Lcom/android/server/wm/Task;I)V
-PLcom/android/server/wm/TaskOrganizerController$PendingTaskEvent;-><init>(Lcom/android/server/wm/Task;Landroid/window/ITaskOrganizer;I)V
-PLcom/android/server/wm/TaskOrganizerController$PendingTaskEvent;->isLifecycleEvent()Z
-PLcom/android/server/wm/TaskOrganizerController$StartingWindowAnimationAdaptor;-><init>()V
+PLcom/android/server/wm/TaskOrganizerController$PendingTaskEvent;-><init>(ILcom/android/server/wm/Task;)V
PLcom/android/server/wm/TaskOrganizerController$StartingWindowAnimationAdaptor;->onAnimationCancelled(Landroid/view/SurfaceControl;)V
PLcom/android/server/wm/TaskOrganizerController$StartingWindowAnimationAdaptor;->startAnimation(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;ILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerCallbacks;-><init>(Landroid/window/ITaskOrganizer;)V
-PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerCallbacks;->onTaskAppeared(Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerCallbacks;->onTaskInfoChanged(Lcom/android/server/wm/Task;Landroid/app/ActivityManager$RunningTaskInfo;)V
-PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerCallbacks;->prepareLeash(Lcom/android/server/wm/Task;Ljava/lang/String;)Landroid/view/SurfaceControl;
-PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->-$$Nest$mdispatchTaskInfoChanged(Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;Lcom/android/server/wm/Task;Z)V
PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->-$$Nest$mgetPendingTaskEvent(Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;Lcom/android/server/wm/Task;I)Lcom/android/server/wm/TaskOrganizerController$PendingTaskEvent;
PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;-><init>(Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;)V
-PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->addPendingTaskEvent(Lcom/android/server/wm/TaskOrganizerController$PendingTaskEvent;)V
-PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->dispatchPendingEvent(Lcom/android/server/wm/TaskOrganizerController$PendingTaskEvent;)V
-HPLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->dispatchPendingEvents()V
HPLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->dispatchTaskInfoChanged(Lcom/android/server/wm/Task;Z)V
-PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->getPendingLifecycleTaskEvent(Lcom/android/server/wm/Task;)Lcom/android/server/wm/TaskOrganizerController$PendingTaskEvent;
-PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->getPendingTaskEvent(Lcom/android/server/wm/Task;I)Lcom/android/server/wm/TaskOrganizerController$PendingTaskEvent;
-PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->numPendingTaskEvents()I
-PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->removePendingTaskEvent(Lcom/android/server/wm/TaskOrganizerController$PendingTaskEvent;)V
-PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;->-$$Nest$fgetmOrganizer(Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;)Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerCallbacks;
-HPLcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;->-$$Nest$fgetmPendingEventsQueue(Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;)Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;
-PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;->-$$Nest$maddTask(Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;Lcom/android/server/wm/Task;)Z
+HPLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->getPendingLifecycleTaskEvent(Lcom/android/server/wm/Task;)Lcom/android/server/wm/TaskOrganizerController$PendingTaskEvent;
PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;-><init>(Lcom/android/server/wm/TaskOrganizerController;Landroid/window/ITaskOrganizer;I)V
-PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;->addTask(Lcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;->addTaskWithoutCallback(Lcom/android/server/wm/Task;Ljava/lang/String;)Landroid/view/SurfaceControl;
-PLcom/android/server/wm/TaskOrganizerController;->$r8$lambda$VSKvVVPI5NKYlAdukWH1TzgUuVQ(Lcom/android/server/wm/TaskOrganizerController;Landroid/window/ITaskOrganizer;ILjava/util/ArrayList;)V
-PLcom/android/server/wm/TaskOrganizerController;->$r8$lambda$ersYTYpQCW6sGFO8mYwHFWIJ7D0(Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;Ljava/util/ArrayList;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;->removeTask(Lcom/android/server/wm/Task;Z)Z
HSPLcom/android/server/wm/TaskOrganizerController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
PLcom/android/server/wm/TaskOrganizerController;->addStartingWindow(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;ILandroid/window/TaskSnapshot;)Z
PLcom/android/server/wm/TaskOrganizerController;->applyStartingWindowAnimation(Lcom/android/server/wm/WindowState;)Landroid/view/SurfaceControl;
-HPLcom/android/server/wm/TaskOrganizerController;->dispatchPendingEvents()V
+HPLcom/android/server/wm/TaskOrganizerController;->dispatchPendingEvents()V+]Landroid/window/ITaskOrganizer;Landroid/window/ITaskOrganizer$Stub$Proxy;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap;
+PLcom/android/server/wm/TaskOrganizerController;->getRootTasks(I[I)Ljava/util/List;
PLcom/android/server/wm/TaskOrganizerController;->getTaskOrganizer()Landroid/window/ITaskOrganizer;
-PLcom/android/server/wm/TaskOrganizerController;->lambda$registerTaskOrganizer$0(Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;Ljava/util/ArrayList;Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/TaskOrganizerController;->lambda$registerTaskOrganizer$1(Landroid/window/ITaskOrganizer;ILjava/util/ArrayList;)V
-PLcom/android/server/wm/TaskOrganizerController;->onTaskAppeared(Landroid/window/ITaskOrganizer;Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/TaskOrganizerController;->onTaskInfoChanged(Lcom/android/server/wm/Task;Z)V
+PLcom/android/server/wm/TaskOrganizerController;->handleInterceptBackPressedOnTaskRoot(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/TaskOrganizerController;->onTaskVanishedInternal(Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;Lcom/android/server/wm/Task;)V
PLcom/android/server/wm/TaskOrganizerController;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
PLcom/android/server/wm/TaskOrganizerController;->registerTaskOrganizer(Landroid/window/ITaskOrganizer;)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/wm/TaskOrganizerController;->removeStartingWindow(Lcom/android/server/wm/Task;Landroid/window/ITaskOrganizer;ZZ)V
-PLcom/android/server/wm/TaskPersister$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/TaskOrganizerController;->removeStartingWindow(Lcom/android/server/wm/Task;Landroid/window/ITaskOrganizer;ZZ)V
+PLcom/android/server/wm/TaskPersister$$ExternalSyntheticLambda0;-><init>(ILcom/android/server/wm/Task;)V
PLcom/android/server/wm/TaskPersister$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/TaskPersister$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/TaskPersister$1;-><init>(Lcom/android/server/wm/TaskPersister;)V
-PLcom/android/server/wm/TaskPersister$TaskWriteQueueItem;->-$$Nest$fgetmTask(Lcom/android/server/wm/TaskPersister$TaskWriteQueueItem;)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/TaskPersister$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/wm/TaskPersister$RecentTaskFile;-><init>(Ljava/io/File;I)V
+PLcom/android/server/wm/TaskPersister$RecentTaskFiles;-><init>([Ljava/io/File;Ljava/util/ArrayList;)V
PLcom/android/server/wm/TaskPersister$TaskWriteQueueItem;-><init>(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityTaskManagerService;)V
PLcom/android/server/wm/TaskPersister$TaskWriteQueueItem;->process()V
-PLcom/android/server/wm/TaskPersister$TaskWriteQueueItem;->saveToXml(Lcom/android/server/wm/Task;)[B
-PLcom/android/server/wm/TaskPersister;->$r8$lambda$hpGvDr585n6hexBdLZakDSAsCLU(Lcom/android/server/wm/Task;Lcom/android/server/wm/TaskPersister$TaskWriteQueueItem;)Z
-PLcom/android/server/wm/TaskPersister;->-$$Nest$smgetUserTasksDir(I)Ljava/io/File;
+HPLcom/android/server/wm/TaskPersister$TaskWriteQueueItem;->saveToXml(Lcom/android/server/wm/Task;)[B
HSPLcom/android/server/wm/TaskPersister;-><init>(Ljava/io/File;Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/RecentTasks;Lcom/android/server/wm/PersisterQueue;)V
-PLcom/android/server/wm/TaskPersister;->getUserImagesDir(I)Ljava/io/File;
PLcom/android/server/wm/TaskPersister;->getUserPersistedTaskIdsFile(I)Ljava/io/File;
-PLcom/android/server/wm/TaskPersister;->getUserTasksDir(I)Ljava/io/File;
-PLcom/android/server/wm/TaskPersister;->lambda$wakeup$1(Lcom/android/server/wm/Task;Lcom/android/server/wm/TaskPersister$TaskWriteQueueItem;)Z
-PLcom/android/server/wm/TaskPersister;->loadPersistedTaskIdsForUser(I)Landroid/util/SparseBooleanArray;
-PLcom/android/server/wm/TaskPersister;->onPreProcessItem(Z)V
-PLcom/android/server/wm/TaskPersister;->removeObsoleteFiles(Landroid/util/ArraySet;)V
+PLcom/android/server/wm/TaskPersister;->loadTasksForUser(I)Lcom/android/server/wm/TaskPersister$RecentTaskFiles;
+HPLcom/android/server/wm/TaskPersister;->onPreProcessItem(Z)V
+PLcom/android/server/wm/TaskPersister;->readPersistedTaskIdsFromFileForUser(I)Landroid/util/SparseBooleanArray;
PLcom/android/server/wm/TaskPersister;->removeObsoleteFiles(Landroid/util/ArraySet;[Ljava/io/File;)V
-PLcom/android/server/wm/TaskPersister;->removeThumbnails(Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/TaskPersister;->restoreTasksForUserLocked(ILandroid/util/SparseBooleanArray;)Ljava/util/List;
-PLcom/android/server/wm/TaskPersister;->taskIdToTask(ILjava/util/ArrayList;)Lcom/android/server/wm/Task;
-PLcom/android/server/wm/TaskPersister;->wakeup(Lcom/android/server/wm/Task;Z)V
+PLcom/android/server/wm/TaskPersister;->taskIdToTask(Ljava/util/ArrayList;I)Lcom/android/server/wm/Task;
PLcom/android/server/wm/TaskPersister;->writePersistedTaskIdsForUser(Landroid/util/SparseBooleanArray;I)V
-PLcom/android/server/wm/TaskPersister;->writeTaskIdsFiles()V
-PLcom/android/server/wm/TaskPositioningController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/TaskSnapshotCache;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/AppSnapshotLoader;)V
-PLcom/android/server/wm/TaskSnapshotCache;->getSnapshot(IIZZ)Landroid/window/TaskSnapshot;
+PLcom/android/server/wm/TaskSnapshotCache;-><init>(Lcom/android/server/wm/AppSnapshotLoader;)V
+HPLcom/android/server/wm/TaskSnapshotCache;->putSnapshot(Lcom/android/server/wm/WindowContainer;Landroid/window/TaskSnapshot;)V
+PLcom/android/server/wm/TaskSnapshotController$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/TaskSnapshotController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/TaskSnapshotController;Z)V
+PLcom/android/server/wm/TaskSnapshotController$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/TaskSnapshotController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/TaskSnapshotController;ILcom/android/server/display/DisplayPowerController$ScreenOffUnblocker;)V
+PLcom/android/server/wm/TaskSnapshotController$$ExternalSyntheticLambda3;->run()V
PLcom/android/server/wm/TaskSnapshotController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/SnapshotPersistQueue;)V
-PLcom/android/server/wm/TaskSnapshotController;->clearSnapshotCache()V
-PLcom/android/server/wm/TaskSnapshotController;->createPersistInfoProvider(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/BaseAppSnapshotPersister$DirectoryResolver;)Lcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;
-PLcom/android/server/wm/TaskSnapshotController;->getSnapshot(IIZZ)Landroid/window/TaskSnapshot;
-PLcom/android/server/wm/TaskSnapshotController;->handleClosingApps(Landroid/util/ArraySet;)V
-PLcom/android/server/wm/TaskSnapshotController;->removeAndDeleteSnapshot(II)V
+PLcom/android/server/wm/TaskSnapshotController;->findAppTokenForSnapshot(Lcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/TaskSnapshotController;->getLetterboxInsets(Lcom/android/server/wm/ActivityRecord;)Landroid/graphics/Rect;
+HPLcom/android/server/wm/TaskSnapshotController;->getSnapshot(IIZZ)Landroid/window/TaskSnapshot;
+PLcom/android/server/wm/TaskSnapshotController;->getTopActivity(Lcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/TaskSnapshotController;->recordSnapshot(Lcom/android/server/wm/Task;)Landroid/window/TaskSnapshot;
PLcom/android/server/wm/TaskSnapshotController;->removeObsoleteTaskFiles(Landroid/util/ArraySet;[I)V
+PLcom/android/server/wm/TaskSnapshotController;->snapshotForSleeping(I)V
PLcom/android/server/wm/TaskSnapshotController;->snapshotTasks(Landroid/util/ArraySet;)V
+PLcom/android/server/wm/TaskSnapshotController;->use16BitFormat()Z
PLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;Landroid/util/ArraySet;[ILcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;)V
PLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->getTaskId(Ljava/lang/String;)I
PLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->isReady(Lcom/android/server/pm/UserManagerInternal;)Z
PLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->write()V
-PLcom/android/server/wm/TaskSnapshotPersister;->-$$Nest$fgetmPersistedTaskIdsSinceLastRemoveObsolete(Lcom/android/server/wm/TaskSnapshotPersister;)Landroid/util/ArraySet;
PLcom/android/server/wm/TaskSnapshotPersister;-><init>(Lcom/android/server/wm/SnapshotPersistQueue;Lcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;)V
-PLcom/android/server/wm/TaskSnapshotPersister;->removeObsoleteFiles(Landroid/util/ArraySet;[I)V
+HPLcom/android/server/wm/TaskSnapshotPersister;->persistSnapshot(IILandroid/window/TaskSnapshot;)V
PLcom/android/server/wm/TaskSnapshotPersister;->removeSnapshot(II)V
PLcom/android/server/wm/TaskSystemBarsListenerController;-><init>()V
-PLcom/android/server/wm/Transition$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/TransitionController$Logger;)V
-PLcom/android/server/wm/Transition$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/wm/Transition$$ExternalSyntheticLambda3;-><init>()V
-PLcom/android/server/wm/Transition$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z
-HPLcom/android/server/wm/Transition$ChangeInfo;-><init>(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/Transition$ChangeInfo;->getChangeFlags(Lcom/android/server/wm/WindowContainer;)I
-PLcom/android/server/wm/Transition$ChangeInfo;->getTransitMode(Lcom/android/server/wm/WindowContainer;)I
-PLcom/android/server/wm/Transition$ChangeInfo;->hasChanged()Z
+PLcom/android/server/wm/Transition$$ExternalSyntheticLambda0;-><init>(I)V
+HPLcom/android/server/wm/Transition$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/Transition$$ExternalSyntheticLambda1;-><init>(ILandroid/util/ArraySet;)V
+PLcom/android/server/wm/Transition$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/Transition$$ExternalSyntheticLambda4;-><init>(ILjava/lang/Object;)V
+HPLcom/android/server/wm/Transition$$ExternalSyntheticLambda4;->run()V
+HPLcom/android/server/wm/Transition$ChangeInfo;-><init>(Lcom/android/server/wm/WindowContainer;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/WindowContainer;megamorphic_types
+HPLcom/android/server/wm/Transition$ChangeInfo;->getTransitMode(Lcom/android/server/wm/WindowContainer;)I
+HPLcom/android/server/wm/Transition$ChangeInfo;->hasChanged()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/WindowContainer;megamorphic_types
+PLcom/android/server/wm/Transition$ReadyCondition;-><init>(Ljava/lang/String;)V
+PLcom/android/server/wm/Transition$ReadyCondition;-><init>(Ljava/lang/String;Ljava/lang/Object;)V
+PLcom/android/server/wm/Transition$ReadyCondition;->meet()V
PLcom/android/server/wm/Transition$ReadyTracker;-><clinit>()V
-PLcom/android/server/wm/Transition$ReadyTracker;-><init>(Lcom/android/server/wm/Transition;)V
-PLcom/android/server/wm/Transition$ReadyTrackerOld;-><init>()V
-PLcom/android/server/wm/Transition$ReadyTrackerOld;-><init>(Lcom/android/server/wm/Transition$ReadyTrackerOld-IA;)V
-PLcom/android/server/wm/Transition$ReadyTrackerOld;->addGroup(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/Transition$ReadyTrackerOld;->allReady()Z
-PLcom/android/server/wm/Transition$ReadyTrackerOld;->setReadyFrom(Lcom/android/server/wm/WindowContainer;Z)V
+HPLcom/android/server/wm/Transition$ReadyTracker;-><init>(Lcom/android/server/wm/Transition;)V
+PLcom/android/server/wm/Transition$ReadyTracker;->add(Lcom/android/server/wm/Transition$ReadyCondition;)V
+HPLcom/android/server/wm/Transition$ReadyTrackerOld;-><init>()V
+HPLcom/android/server/wm/Transition$ReadyTrackerOld;->allReady()Z
+PLcom/android/server/wm/Transition$ScreenshotFreezer;-><init>(Lcom/android/server/wm/Transition;)V
PLcom/android/server/wm/Transition$Targets;-><init>()V
-PLcom/android/server/wm/Transition$Targets;-><init>(Lcom/android/server/wm/Transition$Targets-IA;)V
-PLcom/android/server/wm/Transition$Targets;->add(Lcom/android/server/wm/Transition$ChangeInfo;)V
-PLcom/android/server/wm/Transition$Targets;->getListSortedByZ()Ljava/util/ArrayList;
-PLcom/android/server/wm/Transition$Targets;->remove(I)V
+HPLcom/android/server/wm/Transition$Targets;->add(Lcom/android/server/wm/Transition$ChangeInfo;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;,Lcom/android/server/wm/WallpaperWindowToken;
PLcom/android/server/wm/Transition$Token;-><init>(Lcom/android/server/wm/Transition;)V
-PLcom/android/server/wm/Transition;->$r8$lambda$ae2rOBsvLNpO5hISqyOOeQUaP48(Lcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/Transition;->-$$Nest$smgetDisplayId(Lcom/android/server/wm/WindowContainer;)I
-PLcom/android/server/wm/Transition;->-$$Nest$smisInputMethod(Lcom/android/server/wm/WindowContainer;)Z
-PLcom/android/server/wm/Transition;->-$$Nest$smisReadyGroup(Lcom/android/server/wm/WindowContainer;)Z
-PLcom/android/server/wm/Transition;->-$$Nest$smisTranslucent(Lcom/android/server/wm/WindowContainer;)Z
-PLcom/android/server/wm/Transition;->-$$Nest$smisWallpaper(Lcom/android/server/wm/WindowContainer;)Z
-PLcom/android/server/wm/Transition;-><init>(IILcom/android/server/wm/TransitionController;Lcom/android/server/wm/BLASTSyncEngine;)V
-PLcom/android/server/wm/Transition;->addOnTopTasks(Lcom/android/server/wm/DisplayContent;Ljava/util/ArrayList;)V
-PLcom/android/server/wm/Transition;->addOnTopTasks(Lcom/android/server/wm/Task;Ljava/util/ArrayList;)V
-PLcom/android/server/wm/Transition;->applyDisplayChangeIfNeeded(Landroid/util/ArraySet;)V
-PLcom/android/server/wm/Transition;->applyReady()V
-PLcom/android/server/wm/Transition;->asyncTraceBegin(Ljava/lang/String;I)V
-PLcom/android/server/wm/Transition;->asyncTraceEnd(I)V
-PLcom/android/server/wm/Transition;->buildCleanupTransaction(Landroid/view/SurfaceControl$Transaction;Landroid/window/TransitionInfo;)V
-PLcom/android/server/wm/Transition;->buildFinishTransaction(Landroid/view/SurfaceControl$Transaction;Landroid/window/TransitionInfo;)V
-PLcom/android/server/wm/Transition;->calculateTargets(Landroid/util/ArraySet;Landroid/util/ArrayMap;)Ljava/util/ArrayList;
-HPLcom/android/server/wm/Transition;->calculateTransitionInfo(IILjava/util/ArrayList;Landroid/view/SurfaceControl$Transaction;)Landroid/window/TransitionInfo;
-PLcom/android/server/wm/Transition;->calculateTransitionRoots(Landroid/window/TransitionInfo;Ljava/util/ArrayList;Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/Transition;->canPromote(Lcom/android/server/wm/Transition$ChangeInfo;Lcom/android/server/wm/Transition$Targets;Landroid/util/ArrayMap;)Z
-PLcom/android/server/wm/Transition;->checkEnterPipOnFinish(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/Transition;->cleanUpInternal()V
-HPLcom/android/server/wm/Transition;->collect(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/Transition;->collectExistenceChange(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/Transition;->collectOrderChanges(Z)V
-PLcom/android/server/wm/Transition;->commitConfigAtEndActivities()V
-PLcom/android/server/wm/Transition;->commitVisibleActivities(Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/Transition;->commitVisibleWallpapers()V
+HPLcom/android/server/wm/Transition;-><init>(IILcom/android/server/wm/TransitionController;Lcom/android/server/wm/BLASTSyncEngine;)V
+PLcom/android/server/wm/Transition;->abort()V
+PLcom/android/server/wm/Transition;->addCustomActivityTransition(Lcom/android/server/wm/ActivityRecord;ZLandroid/window/TransitionInfo$AnimationOptions;)Landroid/window/TransitionInfo$AnimationOptions;
+HPLcom/android/server/wm/Transition;->addOnTopTasks(Lcom/android/server/wm/DisplayContent;Ljava/util/ArrayList;)V
+HPLcom/android/server/wm/Transition;->addOnTopTasks(Lcom/android/server/wm/Task;Ljava/util/ArrayList;)V
+PLcom/android/server/wm/Transition;->addToTopChange(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/Transition;->applyDisplayChangeIfNeeded(Landroid/util/ArraySet;)V
+HPLcom/android/server/wm/Transition;->applyReady()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/Transition;->assignLayers(Lcom/android/server/wm/DisplayArea;Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/Transition;->calcParallelCollectType(Landroid/window/WindowContainerTransaction;)V
+HPLcom/android/server/wm/Transition;->calculateTargets(Landroid/util/ArraySet;Landroid/util/ArrayMap;)Ljava/util/ArrayList;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/Transition;->calculateTransitionInfo(IILjava/util/ArrayList;Landroid/view/SurfaceControl$Transaction;)Landroid/window/TransitionInfo;+]Landroid/app/ActivityManager$TaskDescription;Landroid/app/ActivityManager$TaskDescription;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/StartingData;Lcom/android/server/wm/SnapshotStartingData;,Lcom/android/server/wm/SplashScreenStartingData;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/Transition;->calculateTransitionRoots(Landroid/window/TransitionInfo;Ljava/util/ArrayList;Landroid/view/SurfaceControl$Transaction;)V+]Landroid/view/SurfaceControl$Builder;Landroid/view/SurfaceControl$Builder;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/DisplayArea;,Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/RootWindowContainer;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/Transition;->cleanUpInternal()V
+HPLcom/android/server/wm/Transition;->collect(Lcom/android/server/wm/WindowContainer;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types
+PLcom/android/server/wm/Transition;->collectClose(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/Transition;->collectExistenceChange(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/Transition;->collectOrderChanges(Z)V
+PLcom/android/server/wm/Transition;->collectVisibleChange(Lcom/android/server/wm/WindowContainer;)V
PLcom/android/server/wm/Transition;->containsChangeFor(Lcom/android/server/wm/WindowContainer;Ljava/util/ArrayList;)Z
-PLcom/android/server/wm/Transition;->findCommonAncestor(Ljava/util/ArrayList;Lcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/WindowContainer;
-HPLcom/android/server/wm/Transition;->finishTransition()V
-PLcom/android/server/wm/Transition;->fromBinder(Landroid/os/IBinder;)Lcom/android/server/wm/Transition;
-PLcom/android/server/wm/Transition;->getAnimatableParent(Lcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/WindowContainer;
-PLcom/android/server/wm/Transition;->getDisplayId(Lcom/android/server/wm/WindowContainer;)I
-PLcom/android/server/wm/Transition;->getFinishTransaction()Landroid/view/SurfaceControl$Transaction;
-PLcom/android/server/wm/Transition;->getFlags()I
-PLcom/android/server/wm/Transition;->getLayoutParamsForAnimationsStyle(ILjava/util/ArrayList;)Landroid/view/WindowManager$LayoutParams;
-PLcom/android/server/wm/Transition;->getLeashSurface(Lcom/android/server/wm/WindowContainer;Landroid/view/SurfaceControl$Transaction;)Landroid/view/SurfaceControl;
-PLcom/android/server/wm/Transition;->getOrigParentSurface(Lcom/android/server/wm/WindowContainer;)Landroid/view/SurfaceControl;
-PLcom/android/server/wm/Transition;->getPipActivity()Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/Transition;->getStartTransaction()Landroid/view/SurfaceControl$Transaction;
-PLcom/android/server/wm/Transition;->getSyncId()I
-PLcom/android/server/wm/Transition;->getTaskRotationAnimation(Lcom/android/server/wm/Task;)I
-PLcom/android/server/wm/Transition;->getToken()Landroid/os/IBinder;
-PLcom/android/server/wm/Transition;->handleLegacyRecentsStartBehavior(Lcom/android/server/wm/DisplayContent;Landroid/window/TransitionInfo;)V
-PLcom/android/server/wm/Transition;->isAborted()Z
+HPLcom/android/server/wm/Transition;->fromBinder(Landroid/os/IBinder;)Lcom/android/server/wm/Transition;
+HPLcom/android/server/wm/Transition;->getAnimatableParent(Lcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/WindowContainer;+]Lcom/android/server/wm/WindowContainer;megamorphic_types
+HPLcom/android/server/wm/Transition;->getDisplayId(Lcom/android/server/wm/WindowContainer;)I
+HPLcom/android/server/wm/Transition;->getLeashSurface(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/WindowContainer;)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/Transition;->hasTransientLaunch()Z
+PLcom/android/server/wm/Transition;->invokeTransitionEndedListeners()V
PLcom/android/server/wm/Transition;->isCollecting()Z
-PLcom/android/server/wm/Transition;->isInTransientHide(Lcom/android/server/wm/WindowContainer;)Z
+HPLcom/android/server/wm/Transition;->isInTransientHide(Lcom/android/server/wm/WindowContainer;)Z
HPLcom/android/server/wm/Transition;->isInTransition(Lcom/android/server/wm/WindowContainer;)Z
-PLcom/android/server/wm/Transition;->isInputMethod(Lcom/android/server/wm/WindowContainer;)Z
-PLcom/android/server/wm/Transition;->isReadyGroup(Lcom/android/server/wm/WindowContainer;)Z
-PLcom/android/server/wm/Transition;->isStarted()Z
PLcom/android/server/wm/Transition;->isTransientLaunch(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/Transition;->isTransientVisible(Lcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/Transition;->isTranslucent(Lcom/android/server/wm/WindowContainer;)Z
-PLcom/android/server/wm/Transition;->isWallpaper(Lcom/android/server/wm/WindowContainer;)Z
-PLcom/android/server/wm/Transition;->lambda$addOnTopTasks$2(Lcom/android/server/wm/Task;)Z
+HPLcom/android/server/wm/Transition;->isTransientVisible(Lcom/android/server/wm/Task;)Z
PLcom/android/server/wm/Transition;->legacyRestoreNavigationBarFromApp()V
-HPLcom/android/server/wm/Transition;->onTransactionReady(ILandroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/Transition;->populateParentChanges(Lcom/android/server/wm/Transition$Targets;Landroid/util/ArrayMap;)V
-PLcom/android/server/wm/Transition;->recordDisplay(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/Transition;->recordTaskOrder(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/Transition;->reportIfNotTop(Lcom/android/server/wm/WindowContainer;)Z
-PLcom/android/server/wm/Transition;->reportStartReasonsToLogger()V
-PLcom/android/server/wm/Transition;->resetSurfaceTransform(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/WindowContainer;Landroid/view/SurfaceControl;)V
+PLcom/android/server/wm/Transition;->lookForTopWindowWithFilter(Ljava/util/List;Ljava/util/function/Predicate;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/Transition;->onReadyTimeout()V
+HPLcom/android/server/wm/Transition;->onTransactionReady(Landroid/view/SurfaceControl$Transaction;I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Landroid/window/ITransitionPlayer;Landroid/window/ITransitionPlayer$Stub$Proxy;]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/TransitionTracer;Lcom/android/server/wm/PerfettoTransitionTracer;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/WindowManagerInternal$AppTransitionListener;Lcom/android/server/policy/PhoneWindowManager$5;,Lcom/android/server/wm/DisplayContent$FixedRotationTransitionListener;,Lcom/android/server/wm/DisplayPolicy$2;,Lcom/android/server/wm/WindowManagerService$4;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda25;
+PLcom/android/server/wm/Transition;->overrideAnimationOptionsToInfoIfNecessary(Landroid/window/TransitionInfo;)V
+HPLcom/android/server/wm/Transition;->recordDisplay(Lcom/android/server/wm/DisplayContent;)V+]Lcom/android/server/wm/WindowManagerInternal$AppTransitionListener;Lcom/android/server/policy/PhoneWindowManager$5;,Lcom/android/server/wm/DisplayContent$FixedRotationTransitionListener;,Lcom/android/server/wm/DisplayPolicy$2;,Lcom/android/server/wm/WindowManagerService$4;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/Transition;->resetSurfaceTransform(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/WindowContainer;Landroid/view/SurfaceControl;)V
PLcom/android/server/wm/Transition;->sendRemoteCallback(Landroid/os/IRemoteCallback;)V
-PLcom/android/server/wm/Transition;->setEndFixedRotationIfNeeded(Landroid/window/TransitionInfo$Change;Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/Transition;->setReady(Lcom/android/server/wm/WindowContainer;Z)V
-PLcom/android/server/wm/Transition;->shouldApplyOnDisplayThread()Z
+PLcom/android/server/wm/Transition;->setAllReady()V
+PLcom/android/server/wm/Transition;->setOverrideAnimation(Landroid/window/TransitionInfo$AnimationOptions;Lcom/android/server/wm/ActivityRecord;Landroid/os/IRemoteCallback;Landroid/os/IRemoteCallback;)V
+HPLcom/android/server/wm/Transition;->setReady(Lcom/android/server/wm/WindowContainer;Z)V
+HPLcom/android/server/wm/Transition;->shouldApplyOnDisplayThread()Z
PLcom/android/server/wm/Transition;->shouldUsePerfHint(Lcom/android/server/wm/DisplayContent;)Z
-PLcom/android/server/wm/Transition;->shouldWallpaperBeVisible()Z
-PLcom/android/server/wm/Transition;->snapshotStartState(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/Transition;->start()V
-PLcom/android/server/wm/Transition;->startCollecting(J)V
-PLcom/android/server/wm/Transition;->tryPromote(Lcom/android/server/wm/Transition$Targets;Landroid/util/ArrayMap;)V
-PLcom/android/server/wm/Transition;->updateDisplayLayers(Lcom/android/server/wm/DisplayContent;Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/Transition;->updateTransientFlags(Lcom/android/server/wm/Transition$ChangeInfo;)V
-PLcom/android/server/wm/Transition;->validateKeyguardOcclusion()V
+HPLcom/android/server/wm/Transition;->start()V
+PLcom/android/server/wm/Transition;->toString()Ljava/lang/String;
+HPLcom/android/server/wm/Transition;->updateTransientFlags(Lcom/android/server/wm/Transition$ChangeInfo;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types
+PLcom/android/server/wm/TransitionController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/TransitionController;Ljava/lang/Object;I)V
+PLcom/android/server/wm/TransitionController$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/wm/TransitionController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/Transition;)V
+PLcom/android/server/wm/TransitionController$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/TransitionController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/TransitionController;ZLcom/android/server/wm/Transition;)V
+PLcom/android/server/wm/TransitionController$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
PLcom/android/server/wm/TransitionController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/TransitionController;)V
PLcom/android/server/wm/TransitionController$$ExternalSyntheticLambda3;->run()V
-HSPLcom/android/server/wm/TransitionController$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/wm/TransitionController;)V
HSPLcom/android/server/wm/TransitionController$Lock;-><init>(Lcom/android/server/wm/TransitionController;)V
-PLcom/android/server/wm/TransitionController$Lock;->doNotifyLocked()V
-PLcom/android/server/wm/TransitionController$Logger;-><init>()V
-PLcom/android/server/wm/TransitionController$Logger;->buildOnFinishLog()Ljava/lang/String;
-PLcom/android/server/wm/TransitionController$Logger;->buildOnSendLog()Ljava/lang/String;
-PLcom/android/server/wm/TransitionController$Logger;->logOnFinish()V
-PLcom/android/server/wm/TransitionController$Logger;->logOnSend()V
-PLcom/android/server/wm/TransitionController$Logger;->logOnSendAsync(Landroid/os/Handler;)V
+HPLcom/android/server/wm/TransitionController$Logger;->logOnSend()V
PLcom/android/server/wm/TransitionController$Logger;->run()V
-PLcom/android/server/wm/TransitionController$Logger;->toMsString(J)Ljava/lang/String;
+HPLcom/android/server/wm/TransitionController$Logger;->toMsString(J)Ljava/lang/String;
+PLcom/android/server/wm/TransitionController$QueuedTransition;-><init>(Lcom/android/server/wm/Transition;Lcom/android/server/wm/TransitionController$OnStartCollect;)V
HSPLcom/android/server/wm/TransitionController$RemotePlayer;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
-PLcom/android/server/wm/TransitionController$RemotePlayer;->clear()V
+HPLcom/android/server/wm/TransitionController$RemotePlayer;->clear()V
HSPLcom/android/server/wm/TransitionController$TransitionMetricsReporter;-><init>()V
PLcom/android/server/wm/TransitionController$TransitionMetricsReporter;->reportAnimationStart(Landroid/os/IBinder;J)V
+PLcom/android/server/wm/TransitionController$TransitionPlayerRecord$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/TransitionController$TransitionPlayerRecord;)V
+PLcom/android/server/wm/TransitionController$TransitionPlayerRecord;-><init>(Lcom/android/server/wm/TransitionController;Landroid/window/ITransitionPlayer;Lcom/android/server/wm/WindowProcessController;)V
HSPLcom/android/server/wm/TransitionController;-><clinit>()V
HSPLcom/android/server/wm/TransitionController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
-PLcom/android/server/wm/TransitionController;->assignTrack(Lcom/android/server/wm/Transition;Landroid/window/TransitionInfo;)V
-HPLcom/android/server/wm/TransitionController;->canAssignLayers(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/TransitionController;->canStartCollectingNow(Lcom/android/server/wm/Transition;)Z
PLcom/android/server/wm/TransitionController;->collect(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/TransitionController;->collectExistenceChange(Lcom/android/server/wm/WindowContainer;)V
-HPLcom/android/server/wm/TransitionController;->collectForDisplayAreaChange(Lcom/android/server/wm/DisplayArea;)V
-PLcom/android/server/wm/TransitionController;->createAndStartCollecting(I)Lcom/android/server/wm/Transition;
-PLcom/android/server/wm/TransitionController;->dispatchLegacyAppTransitionFinished(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/TransitionController;->dispatchLegacyAppTransitionPending()V
-PLcom/android/server/wm/TransitionController;->dispatchLegacyAppTransitionStarting(Landroid/window/TransitionInfo;J)V
-PLcom/android/server/wm/TransitionController;->finishTransition(Lcom/android/server/wm/Transition;)V
+PLcom/android/server/wm/TransitionController;->continueTransitionReady()V
+PLcom/android/server/wm/TransitionController;->createTransition(II)Lcom/android/server/wm/Transition;
+PLcom/android/server/wm/TransitionController;->deferTransitionReady()V
+HPLcom/android/server/wm/TransitionController;->finishTransition(Lcom/android/server/wm/ActionChain;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/TransitionTracer;Lcom/android/server/wm/PerfettoTransitionTracer;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/WindowManagerInternal$AppTransitionListener;Lcom/android/server/policy/PhoneWindowManager$5;,Lcom/android/server/wm/DisplayContent$FixedRotationTransitionListener;,Lcom/android/server/wm/DisplayPolicy$2;,Lcom/android/server/wm/WindowManagerService$4;]Ljava/lang/Runnable;Lcom/android/server/wm/KeyguardController$$ExternalSyntheticLambda1;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda25;
+PLcom/android/server/wm/TransitionController;->getCanBeIndependent(Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;)Z
+PLcom/android/server/wm/TransitionController;->getCollectingTransition()Lcom/android/server/wm/Transition;
PLcom/android/server/wm/TransitionController;->getCollectingTransitionId()I
-PLcom/android/server/wm/TransitionController;->getCollectingTransitionType()I
-PLcom/android/server/wm/TransitionController;->getTransitionPlayer()Landroid/window/ITransitionPlayer;
-HPLcom/android/server/wm/TransitionController;->inCollectingTransition(Lcom/android/server/wm/WindowContainer;)Z
-PLcom/android/server/wm/TransitionController;->inFinishingTransition(Lcom/android/server/wm/WindowContainer;)Z
-HPLcom/android/server/wm/TransitionController;->inPlayingTransition(Lcom/android/server/wm/WindowContainer;)Z
-HPLcom/android/server/wm/TransitionController;->inTransition()Z
+HPLcom/android/server/wm/TransitionController;->getTransitionPlayer()Landroid/window/ITransitionPlayer;
+HPLcom/android/server/wm/TransitionController;->hasTransientLaunch(Lcom/android/server/wm/DisplayContent;)Z
+HPLcom/android/server/wm/TransitionController;->inCollectingTransition(Lcom/android/server/wm/WindowContainer;)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/TransitionController;->inPlayingTransition(Lcom/android/server/wm/WindowContainer;)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/TransitionController;->inTransition()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/wm/TransitionController;->inTransition(Lcom/android/server/wm/WindowContainer;)Z
-PLcom/android/server/wm/TransitionController;->isAnimating()Z
HPLcom/android/server/wm/TransitionController;->isCollecting()Z
-PLcom/android/server/wm/TransitionController;->isCollecting(Lcom/android/server/wm/WindowContainer;)Z
-HPLcom/android/server/wm/TransitionController;->isPlaying()Z
-HPLcom/android/server/wm/TransitionController;->isShellTransitionsEnabled()Z
-PLcom/android/server/wm/TransitionController;->isTransientCollect(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/TransitionController;->isTransientLaunch(Lcom/android/server/wm/ActivityRecord;)Z
-HPLcom/android/server/wm/TransitionController;->isTransientVisible(Lcom/android/server/wm/Task;)Z
-HPLcom/android/server/wm/TransitionController;->isTransitionOnDisplay(Lcom/android/server/wm/DisplayContent;)Z
-PLcom/android/server/wm/TransitionController;->moveToCollecting(Lcom/android/server/wm/Transition;)V
-PLcom/android/server/wm/TransitionController;->moveToPlaying(Lcom/android/server/wm/Transition;)V
-PLcom/android/server/wm/TransitionController;->onCommittedInvisibles()V
-PLcom/android/server/wm/TransitionController;->onTransitionPopulated(Lcom/android/server/wm/Transition;)V
-PLcom/android/server/wm/TransitionController;->recordTaskOrder(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/TransitionController;->registerLegacyListener(Lcom/android/server/wm/WindowManagerInternal$AppTransitionListener;)V
+HPLcom/android/server/wm/TransitionController;->isCollecting(Lcom/android/server/wm/WindowContainer;)Z
+HPLcom/android/server/wm/TransitionController;->isShellTransitionsEnabled()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/TransitionController;->isTransientHide(Lcom/android/server/wm/Task;)Z
+HPLcom/android/server/wm/TransitionController;->isTransientLaunch(Lcom/android/server/wm/ActivityRecord;)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/TransitionController;->moveToCollecting(Lcom/android/server/wm/Transition;)V
+PLcom/android/server/wm/TransitionController;->queueTransition(Lcom/android/server/wm/Transition;Lcom/android/server/wm/TransitionController$OnStartCollect;)V
PLcom/android/server/wm/TransitionController;->registerTransitionPlayer(Landroid/window/ITransitionPlayer;Lcom/android/server/wm/WindowProcessController;)V
-PLcom/android/server/wm/TransitionController;->requestStartTransition(Lcom/android/server/wm/Transition;Lcom/android/server/wm/Task;Landroid/window/RemoteTransition;Landroid/window/TransitionRequestInfo$DisplayChange;)Lcom/android/server/wm/Transition;
-PLcom/android/server/wm/TransitionController;->setReady(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/TransitionController;->requestCloseTransitionIfNeeded(Lcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/Transition;
+HPLcom/android/server/wm/TransitionController;->requestStartTransition(Lcom/android/server/wm/Transition;Lcom/android/server/wm/Task;Landroid/window/RemoteTransition;Landroid/window/TransitionRequestInfo$DisplayChange;)Lcom/android/server/wm/Transition;
+PLcom/android/server/wm/TransitionController;->requestTransitionIfNeeded(IILcom/android/server/wm/Task;Lcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/Transition;
PLcom/android/server/wm/TransitionController;->setReady(Lcom/android/server/wm/WindowContainer;Z)V
PLcom/android/server/wm/TransitionController;->setSyncEngine(Lcom/android/server/wm/BLASTSyncEngine;)V
-PLcom/android/server/wm/TransitionController;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
-HPLcom/android/server/wm/TransitionController;->shouldKeepFocus(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/TransitionController;->shouldDispatchLegacyListener(Lcom/android/server/wm/WindowManagerInternal$AppTransitionListener;I)Z
+HPLcom/android/server/wm/TransitionController;->shouldKeepFocus(Lcom/android/server/wm/WindowContainer;)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/TransitionController;->startCollectOrQueue(Lcom/android/server/wm/Transition;Lcom/android/server/wm/TransitionController$OnStartCollect;)V
PLcom/android/server/wm/TransitionController;->tryStartCollectFromQueue()V
-PLcom/android/server/wm/TransitionController;->updateAnimatingState()V
-PLcom/android/server/wm/TransitionController;->updateRunningRemoteAnimation(Lcom/android/server/wm/Transition;Z)V
-PLcom/android/server/wm/TransitionController;->useFullReadyTracking()Z
+HPLcom/android/server/wm/TransitionController;->updateAnimatingState()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/TransitionController;->updateRunningRemoteAnimation(Z)V
HPLcom/android/server/wm/TransitionController;->useShellTransitionsRotation()Z
-PLcom/android/server/wm/TransitionController;->validateStates()V
+PLcom/android/server/wm/TransitionController;->waitFor(Lcom/android/server/wm/Transition$ReadyCondition;)V
+PLcom/android/server/wm/TransparentPolicy$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/AppCompatConfiguration;)V
+PLcom/android/server/wm/TransparentPolicy$TransparentPolicyState;->-$$Nest$mreset(Lcom/android/server/wm/TransparentPolicy$TransparentPolicyState;)V
+PLcom/android/server/wm/TransparentPolicy$TransparentPolicyState;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/TransparentPolicy$TransparentPolicyState;->findOpaqueNotFinishingActivityBelow()Ljava/util/Optional;
+PLcom/android/server/wm/TransparentPolicy$TransparentPolicyState;->isRunning()Z
+PLcom/android/server/wm/TransparentPolicy;-><clinit>()V
+HPLcom/android/server/wm/TransparentPolicy;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/AppCompatConfiguration;)V
+PLcom/android/server/wm/TransparentPolicy;->start()V
PLcom/android/server/wm/TrustedPresentationListenerController$Listeners;-><init>(Lcom/android/server/wm/TrustedPresentationListenerController;)V
-PLcom/android/server/wm/TrustedPresentationListenerController$Listeners;-><init>(Lcom/android/server/wm/TrustedPresentationListenerController;Lcom/android/server/wm/TrustedPresentationListenerController$Listeners-IA;)V
PLcom/android/server/wm/TrustedPresentationListenerController;-><init>()V
+PLcom/android/server/wm/TrustedPresentationListenerController;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/wm/UnknownAppVisibilityController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/UnknownAppVisibilityController;->allResolved()Z
PLcom/android/server/wm/UnknownAppVisibilityController;->appRemovedOrHidden(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/UnknownAppVisibilityController;->clear()V
-PLcom/android/server/wm/UnknownAppVisibilityController;->isVisibilityUnknown(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/UnknownAppVisibilityController;->notifyAppResumedFinished(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/UnknownAppVisibilityController;->notifyRelayouted(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/UnknownAppVisibilityController;->notifyRelayouted(Lcom/android/server/wm/ActivityRecord;)V
PLcom/android/server/wm/VisibleActivityProcessTracker$CpuTimeRecord;-><init>(Lcom/android/server/wm/VisibleActivityProcessTracker;Lcom/android/server/wm/WindowProcessController;)V
-PLcom/android/server/wm/VisibleActivityProcessTracker$CpuTimeRecord;->run()V
+HPLcom/android/server/wm/VisibleActivityProcessTracker$CpuTimeRecord;->run()V
HSPLcom/android/server/wm/VisibleActivityProcessTracker;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
-HPLcom/android/server/wm/VisibleActivityProcessTracker;->hasVisibleActivity(I)Z
-HPLcom/android/server/wm/VisibleActivityProcessTracker;->match(ILjava/util/function/Predicate;)Z
-PLcom/android/server/wm/VisibleActivityProcessTracker;->onActivityResumedWhileVisible(Lcom/android/server/wm/WindowProcessController;)V
-PLcom/android/server/wm/VisibleActivityProcessTracker;->onAllActivitiesInvisible(Lcom/android/server/wm/WindowProcessController;)V
-PLcom/android/server/wm/VisibleActivityProcessTracker;->onAnyActivityVisible(Lcom/android/server/wm/WindowProcessController;)V
-HPLcom/android/server/wm/VisibleActivityProcessTracker;->removeProcess(Lcom/android/server/wm/WindowProcessController;)Lcom/android/server/wm/VisibleActivityProcessTracker$CpuTimeRecord;
+HPLcom/android/server/wm/VisibleActivityProcessTracker;->match(ILcom/android/server/wm/VisibleActivityProcessTracker$$ExternalSyntheticLambda0;)Z
HSPLcom/android/server/wm/VrController$1;-><init>(Lcom/android/server/wm/VrController;)V
HSPLcom/android/server/wm/VrController;-><clinit>()V
HSPLcom/android/server/wm/VrController;-><init>(Ljava/lang/Object;)V
-PLcom/android/server/wm/VrController;->isInterestingToSchedGroup()Z
-PLcom/android/server/wm/VrController;->onSystemReady()V
-PLcom/android/server/wm/WallpaperAnimationAdapter;->shouldStartWallpaperAnimation(Lcom/android/server/wm/DisplayContent;)Z
+PLcom/android/server/wm/VrController;->toString()Ljava/lang/String;
PLcom/android/server/wm/WallpaperController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WallpaperController;)V
-PLcom/android/server/wm/WallpaperController$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/WallpaperController$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Z+]Lcom/android/server/wm/AnimationAdapter;Lcom/android/server/wm/BackNavigationController$AnimationHandler$BackWindowAnimationAdaptor;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;
PLcom/android/server/wm/WallpaperController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/WallpaperController;)V
-PLcom/android/server/wm/WallpaperController$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Z
-PLcom/android/server/wm/WallpaperController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/WallpaperController;)V
-PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult$TopWallpaper;-><init>()V
-PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult$TopWallpaper;->reset()V
-PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;-><init>()V
-PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;-><init>(Lcom/android/server/wm/WallpaperController$FindWallpaperTargetResult-IA;)V
-PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->getTopWallpaper(Z)Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->hasTopHideWhenLockedWallpaper()Z
-PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->hasTopShowWhenLockedWallpaper()Z
-PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->reset()V
-PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->setIsWallpaperTargetForLetterbox(Z)V
-PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->setTopShowWhenLockedWallpaper(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->setWallpaperTarget(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/WallpaperController;->$r8$lambda$P67TWw1sKQnPyyNd8sIWPsJ8xts(Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/WallpaperController;->$r8$lambda$weWYh946v1vMY5HxrZ0ItBnQ548(Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/WallpaperController$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
PLcom/android/server/wm/WallpaperController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/WallpaperController;->addWallpaperToken(Lcom/android/server/wm/WallpaperWindowToken;)V
-HPLcom/android/server/wm/WallpaperController;->adjustWallpaperWindows()V
-PLcom/android/server/wm/WallpaperController;->adjustWallpaperWindowsForAppTransitionIfNeeded(Landroid/util/ArraySet;)V
+HPLcom/android/server/wm/WallpaperController;->adjustWallpaperWindows()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/WallpaperController;->clearLastWallpaperTimeoutTime()V
-HPLcom/android/server/wm/WallpaperController;->findWallpaperTarget()V
-PLcom/android/server/wm/WallpaperController;->getAllTopWallpapers()Ljava/util/List;
-PLcom/android/server/wm/WallpaperController;->getDisplayWidthOffset(ILandroid/graphics/Rect;Z)I
+PLcom/android/server/wm/WallpaperController;->dumpValue(Ljava/io/PrintWriter;Ljava/lang/String;F)V
PLcom/android/server/wm/WallpaperController;->getTokenForTarget(Lcom/android/server/wm/WindowState;)Lcom/android/server/wm/WallpaperWindowToken;
-PLcom/android/server/wm/WallpaperController;->getWallpaperTarget()Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/WallpaperController;->hideDeferredWallpapersIfNeededLegacy()V
HPLcom/android/server/wm/WallpaperController;->hideWallpapers(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/WallpaperController;->isBackNavigationTarget(Lcom/android/server/wm/WindowState;)Z
PLcom/android/server/wm/WallpaperController;->isBelowWallpaperTarget(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/WallpaperController;->isRecentsTransitionTarget(Lcom/android/server/wm/WindowState;)Z
-HPLcom/android/server/wm/WallpaperController;->isWallpaperTarget(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/WallpaperController;->isWallpaperTargetAnimating()Z
-HPLcom/android/server/wm/WallpaperController;->isWallpaperVisible()Z
-PLcom/android/server/wm/WallpaperController;->lambda$new$0(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/WallpaperController;->lambda$new$1(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/WallpaperController;->onDisplaySwitchFinished()V
-PLcom/android/server/wm/WallpaperController;->resetLargestDisplay(Landroid/view/Display;)V
-PLcom/android/server/wm/WallpaperController;->setShouldZoomOutWallpaper(Lcom/android/server/wm/WindowState;Z)V
-PLcom/android/server/wm/WallpaperController;->setWallpaperCropUtils(Lcom/android/server/wallpaper/WallpaperCropper$WallpaperCropUtils;)V
-HPLcom/android/server/wm/WallpaperController;->updateWallpaperOffset(Lcom/android/server/wm/WindowState;Z)Z
-PLcom/android/server/wm/WallpaperController;->updateWallpaperOffsetLocked(Lcom/android/server/wm/WindowState;Z)V
-PLcom/android/server/wm/WallpaperController;->updateWallpaperTokens(ZZ)V
-PLcom/android/server/wm/WallpaperController;->updateWallpaperWindowsTarget(Lcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;)V
+PLcom/android/server/wm/WallpaperController;->isWallpaperTarget(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/WallpaperController;->isWallpaperVisible()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WallpaperController;->updateWallpaperOffset(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/WallpaperController;->updateWallpaperOffsetLocked(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WallpaperController;->wallpaperTransitionReady()Z
PLcom/android/server/wm/WallpaperVisibilityListeners;-><init>()V
-PLcom/android/server/wm/WallpaperVisibilityListeners;->notifyWallpaperVisibilityChanged(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/WallpaperVisibilityListeners;->registerWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)V
-PLcom/android/server/wm/WallpaperWindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;ZLcom/android/server/wm/DisplayContent;ZLandroid/os/Bundle;)V
+PLcom/android/server/wm/WallpaperWindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;Lcom/android/server/wm/DisplayContent;Landroid/os/Bundle;)V
PLcom/android/server/wm/WallpaperWindowToken;->asWallpaperToken()Lcom/android/server/wm/WallpaperWindowToken;
-PLcom/android/server/wm/WallpaperWindowToken;->canShowWhenLocked()Z
-HPLcom/android/server/wm/WallpaperWindowToken;->commitVisibility(Z)V
+PLcom/android/server/wm/WallpaperWindowToken;->commitVisibility(Z)V
+HPLcom/android/server/wm/WallpaperWindowToken;->hasVisibleNotDrawnWallpaper()Z
+PLcom/android/server/wm/WallpaperWindowToken;->isSyncFinished(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)Z
HPLcom/android/server/wm/WallpaperWindowToken;->isVisible()Z
PLcom/android/server/wm/WallpaperWindowToken;->onChildVisibleRequestedChanged(Lcom/android/server/wm/WindowContainer;)Z
-PLcom/android/server/wm/WallpaperWindowToken;->setCropHints(Landroid/util/SparseArray;)V
-PLcom/android/server/wm/WallpaperWindowToken;->setShowWhenLocked(Z)V
+HPLcom/android/server/wm/WallpaperWindowToken;->prepareSurfaces()V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
+PLcom/android/server/wm/WallpaperWindowToken;->setExiting(Z)V
HPLcom/android/server/wm/WallpaperWindowToken;->setVisibility(Z)V
-PLcom/android/server/wm/WallpaperWindowToken;->setVisible(Z)V
+PLcom/android/server/wm/WallpaperWindowToken;->setVisible$1(Z)V
PLcom/android/server/wm/WallpaperWindowToken;->setVisibleRequested(Z)Z
PLcom/android/server/wm/WallpaperWindowToken;->showWallpaper()Z
PLcom/android/server/wm/WallpaperWindowToken;->toString()Ljava/lang/String;
-PLcom/android/server/wm/WallpaperWindowToken;->updateWallpaperOffset(Z)V
-PLcom/android/server/wm/WallpaperWindowToken;->updateWallpaperWindows(Z)V
-PLcom/android/server/wm/WindowAnimationSpec$$ExternalSyntheticLambda0;-><init>()V
+HPLcom/android/server/wm/WallpaperWindowToken;->updateWallpaperOffset()V
PLcom/android/server/wm/WindowAnimationSpec$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
-PLcom/android/server/wm/WindowAnimationSpec$TmpValues;-><init>()V
-PLcom/android/server/wm/WindowAnimationSpec$TmpValues;-><init>(Lcom/android/server/wm/WindowAnimationSpec$TmpValues-IA;)V
-PLcom/android/server/wm/WindowAnimationSpec;->$r8$lambda$O4wc4-tRjiP9nCMbsYU_dS1zsf4()Lcom/android/server/wm/WindowAnimationSpec$TmpValues;
-PLcom/android/server/wm/WindowAnimationSpec;-><init>(Landroid/view/animation/Animation;Landroid/graphics/Point;Landroid/graphics/Rect;ZIZF)V
+HPLcom/android/server/wm/WindowAnimationSpec$TmpValues;-><init>()V
+HPLcom/android/server/wm/WindowAnimationSpec;-><init>(Landroid/view/animation/Animation;Landroid/graphics/Point;Landroid/graphics/Rect;ZIF)V
PLcom/android/server/wm/WindowAnimationSpec;-><init>(Landroid/view/animation/Animation;Landroid/graphics/Point;ZF)V
-HPLcom/android/server/wm/WindowAnimationSpec;->apply(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;J)V
+HPLcom/android/server/wm/WindowAnimationSpec;->apply(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;J)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Landroid/view/animation/Animation;Landroid/view/animation/AlphaAnimation;,Landroid/view/animation/AnimationSet;]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation;]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;
PLcom/android/server/wm/WindowAnimationSpec;->asWindowAnimationSpec()Lcom/android/server/wm/WindowAnimationSpec;
PLcom/android/server/wm/WindowAnimationSpec;->canSkipFirstFrame()Z
PLcom/android/server/wm/WindowAnimationSpec;->getDuration()J
-PLcom/android/server/wm/WindowAnimationSpec;->hasExtension()Z
PLcom/android/server/wm/WindowAnimator$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowAnimator;)V
PLcom/android/server/wm/WindowAnimator$$ExternalSyntheticLambda0;->run()V
PLcom/android/server/wm/WindowAnimator$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/WindowAnimator;)V
HPLcom/android/server/wm/WindowAnimator$$ExternalSyntheticLambda1;->doFrame(J)V
-HPLcom/android/server/wm/WindowAnimator;->$r8$lambda$AS_wbK9i-bc6ocCFop7s9PnXP80(Lcom/android/server/wm/WindowAnimator;J)V
-PLcom/android/server/wm/WindowAnimator;->$r8$lambda$W57Ag5fzVY7lre5WxW-Fd7sotY8(Lcom/android/server/wm/WindowAnimator;)V
+PLcom/android/server/wm/WindowAnimator$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/WindowAnimator;Ljava/util/ArrayList;)V
+HPLcom/android/server/wm/WindowAnimator$$ExternalSyntheticLambda2;->onTransactionCommitted()V
PLcom/android/server/wm/WindowAnimator;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/WindowAnimator;->addAfterPrepareSurfacesRunnable(Ljava/lang/Runnable;)V
-HPLcom/android/server/wm/WindowAnimator;->animate(J)V
-HPLcom/android/server/wm/WindowAnimator;->cancelAnimation()V
-HPLcom/android/server/wm/WindowAnimator;->executeAfterPrepareSurfacesRunnables()V
-PLcom/android/server/wm/WindowAnimator;->lambda$new$0()V
-HPLcom/android/server/wm/WindowAnimator;->lambda$new$1(J)V
-PLcom/android/server/wm/WindowAnimator;->ready()V
-HPLcom/android/server/wm/WindowAnimator;->scheduleAnimation()V
-HPLcom/android/server/wm/WindowAnimator;->updateRunningExpensiveAnimationsLegacy()V
-PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda10;-><init>()V
-PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda10;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda12;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda13;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
-PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda14;-><init>()V
-PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda14;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda3;-><init>()V
-PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda4;-><init>()V
-PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda4;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda5;-><init>()V
-PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda5;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/WindowAnimator;->animate(J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda5;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
PLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;-><init>(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;-><init>(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper-IA;)V
-HPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->apply(Lcom/android/server/wm/WindowState;)Z
-HPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->apply(Ljava/lang/Object;)Z
-HPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->release()V
-PLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->setConsumer(Ljava/util/function/Consumer;)V
-HPLcom/android/server/wm/WindowContainer$RemoteToken;-><init>(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/WindowContainer$RemoteToken;->fromBinder(Landroid/os/IBinder;)Lcom/android/server/wm/WindowContainer$RemoteToken;
-PLcom/android/server/wm/WindowContainer$RemoteToken;->getContainer()Lcom/android/server/wm/WindowContainer;
-PLcom/android/server/wm/WindowContainer$RemoteToken;->toString()Ljava/lang/String;
-HPLcom/android/server/wm/WindowContainer$RemoteToken;->toWindowContainerToken()Landroid/window/WindowContainerToken;
-PLcom/android/server/wm/WindowContainer;->$r8$lambda$P9uMBneLM2Si1UANWoV5uQ4DSY8(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/WindowContainer;->$r8$lambda$U6J3FM52jcz63vJUvQI_Psg5VIc(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/WindowContainer;->$r8$lambda$WCX56CLXmDYVEESH4qAkWTB4kQ4(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/WindowContainer;->$r8$lambda$XL8lUmIHE8kzhQRm7NA0j1UqJ8E(Lcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/WindowContainer;->$r8$lambda$ggkMLWSQVBUcbk3w7M1d4KAgVVA(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/WindowContainer;->$r8$lambda$mgkrQnQJbqksG7kwkWi3ZEb0Xsc(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/WindowContainer;->-$$Nest$fgetmConsumerWrapperPool(Lcom/android/server/wm/WindowContainer;)Landroid/util/Pools$SynchronizedPool;
+HPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->apply(Ljava/lang/Object;)Z+]Ljava/util/function/Consumer;megamorphic_types
+PLcom/android/server/wm/WindowContainer$RemoteToken;-><init>(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/WindowContainer$RemoteToken;->toString()Ljava/lang/String;
+PLcom/android/server/wm/WindowContainer$RemoteToken;->toWindowContainerToken()Landroid/window/WindowContainerToken;
HPLcom/android/server/wm/WindowContainer;-><init>(Lcom/android/server/wm/WindowManagerService;)V
HPLcom/android/server/wm/WindowContainer;->addChild(Lcom/android/server/wm/WindowContainer;I)V
HPLcom/android/server/wm/WindowContainer;->addChild(Lcom/android/server/wm/WindowContainer;Ljava/util/Comparator;)V
-PLcom/android/server/wm/WindowContainer;->allSyncFinished()Z
+HPLcom/android/server/wm/WindowContainer;->adjustDims()V
+HPLcom/android/server/wm/WindowContainer;->allSyncFinished()Z
+PLcom/android/server/wm/WindowContainer;->alwaysTruePredicate()Ljava/util/function/Predicate;
PLcom/android/server/wm/WindowContainer;->asActivityRecord()Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/WindowContainer;->asDisplayArea()Lcom/android/server/wm/DisplayArea;
+HPLcom/android/server/wm/WindowContainer;->asDisplayArea()Lcom/android/server/wm/DisplayArea;
PLcom/android/server/wm/WindowContainer;->asDisplayContent()Lcom/android/server/wm/DisplayContent;
-PLcom/android/server/wm/WindowContainer;->asTask()Lcom/android/server/wm/Task;
-PLcom/android/server/wm/WindowContainer;->asTaskDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
-PLcom/android/server/wm/WindowContainer;->asTaskFragment()Lcom/android/server/wm/TaskFragment;
-PLcom/android/server/wm/WindowContainer;->asWallpaperToken()Lcom/android/server/wm/WallpaperWindowToken;
-PLcom/android/server/wm/WindowContainer;->asWindowState()Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/WindowContainer;->asRootDisplayArea()Lcom/android/server/wm/RootDisplayArea;
+HPLcom/android/server/wm/WindowContainer;->asTask()Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/WindowContainer;->asTaskDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
+HPLcom/android/server/wm/WindowContainer;->asTaskFragment()Lcom/android/server/wm/TaskFragment;
+HPLcom/android/server/wm/WindowContainer;->asWallpaperToken()Lcom/android/server/wm/WallpaperWindowToken;
+HPLcom/android/server/wm/WindowContainer;->asWindowState()Lcom/android/server/wm/WindowState;
PLcom/android/server/wm/WindowContainer;->asWindowToken()Lcom/android/server/wm/WindowToken;
HPLcom/android/server/wm/WindowContainer;->assignChildLayers()V
-HPLcom/android/server/wm/WindowContainer;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V
-HPLcom/android/server/wm/WindowContainer;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V
-PLcom/android/server/wm/WindowContainer;->assignRelativeLayer(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;IZ)V
+HPLcom/android/server/wm/WindowContainer;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WindowContainer;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WindowContainer;->assignRelativeLayer(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;IZ)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent$ImeContainer;
PLcom/android/server/wm/WindowContainer;->canCreateRemoteAnimationTarget()Z
PLcom/android/server/wm/WindowContainer;->canStartChangeTransition()Z
-PLcom/android/server/wm/WindowContainer;->cancelAnimation()V
-HPLcom/android/server/wm/WindowContainer;->checkAppWindowsReadyToShow()V
+HPLcom/android/server/wm/WindowContainer;->cancelAnimation()V
+PLcom/android/server/wm/WindowContainer;->checkAppWindowsReadyToShow()V
+PLcom/android/server/wm/WindowContainer;->clearMagnificationSpec(Landroid/view/SurfaceControl$Transaction;)V
PLcom/android/server/wm/WindowContainer;->commitPendingTransaction()V
-PLcom/android/server/wm/WindowContainer;->compareTo(Lcom/android/server/wm/WindowContainer;)I
+HPLcom/android/server/wm/WindowContainer;->compareTo(Lcom/android/server/wm/WindowContainer;)I+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/LinkedList;Ljava/util/LinkedList;
PLcom/android/server/wm/WindowContainer;->computeScreenLayout(III)I
-HPLcom/android/server/wm/WindowContainer;->createMergedSparseArray(Landroid/util/SparseArray;Landroid/util/SparseArray;)Landroid/util/SparseArray;
-HPLcom/android/server/wm/WindowContainer;->createSurfaceControl(Z)V
-PLcom/android/server/wm/WindowContainer;->doAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
-PLcom/android/server/wm/WindowContainer;->finishSync(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;Z)V
+HPLcom/android/server/wm/WindowContainer;->createMergedSparseArray(Landroid/util/SparseArray;Landroid/util/SparseArray;)Landroid/util/SparseArray;+]Landroid/util/SparseArray;Landroid/util/SparseArray;
+PLcom/android/server/wm/WindowContainer;->createSurfaceControl(Z)V
+HPLcom/android/server/wm/WindowContainer;->doAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
+PLcom/android/server/wm/WindowContainer;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+PLcom/android/server/wm/WindowContainer;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
+PLcom/android/server/wm/WindowContainer;->enforceSurfaceVisible(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/WindowContainer;->fillsParent()Z
+HPLcom/android/server/wm/WindowContainer;->finishSync(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;Z)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function/Consumer;)V
-HPLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function/Consumer;Z)V
-HPLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function/Predicate;)Z
-HPLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function/Predicate;Z)Z
+HPLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function/Predicate;)Z
+HPLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function/Predicate;Z)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/WindowContainer;->forAllDisplayAreas(Ljava/util/function/Consumer;)V
-HPLcom/android/server/wm/WindowContainer;->forAllLeafTaskFragments(Ljava/util/function/Predicate;)Z
-HPLcom/android/server/wm/WindowContainer;->forAllLeafTasks(Ljava/util/function/Consumer;Z)V
-HPLcom/android/server/wm/WindowContainer;->forAllLeafTasks(Ljava/util/function/Predicate;)Z
-HPLcom/android/server/wm/WindowContainer;->forAllRootTasks(Ljava/util/function/Consumer;)V
-HPLcom/android/server/wm/WindowContainer;->forAllRootTasks(Ljava/util/function/Consumer;Z)V
+HPLcom/android/server/wm/WindowContainer;->forAllLeafTaskFragments(Ljava/util/function/Predicate;)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WindowContainer;->forAllLeafTasks(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WindowContainer;->forAllLeafTasks(Ljava/util/function/Predicate;)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/WindowContainer;->forAllRootTasks(Ljava/util/function/Consumer;)V
+HPLcom/android/server/wm/WindowContainer;->forAllRootTasks(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/WindowContainer;->forAllRootTasks(Ljava/util/function/Predicate;)Z
-HPLcom/android/server/wm/WindowContainer;->forAllRootTasks(Ljava/util/function/Predicate;Z)Z
+HPLcom/android/server/wm/WindowContainer;->forAllRootTasks(Ljava/util/function/Predicate;Z)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/WindowContainer;->forAllTaskDisplayAreas(Ljava/util/function/Consumer;)V
PLcom/android/server/wm/WindowContainer;->forAllTaskDisplayAreas(Ljava/util/function/Consumer;Z)V
PLcom/android/server/wm/WindowContainer;->forAllTaskDisplayAreas(Ljava/util/function/Predicate;)Z
PLcom/android/server/wm/WindowContainer;->forAllTaskFragments(Ljava/util/function/Consumer;)V
-PLcom/android/server/wm/WindowContainer;->forAllTaskFragments(Ljava/util/function/Consumer;Z)V
+HPLcom/android/server/wm/WindowContainer;->forAllTaskFragments(Ljava/util/function/Consumer;Z)V
PLcom/android/server/wm/WindowContainer;->forAllTasks(Ljava/util/function/Consumer;)V
PLcom/android/server/wm/WindowContainer;->forAllTasks(Ljava/util/function/Consumer;Z)V
-HPLcom/android/server/wm/WindowContainer;->forAllTasks(Ljava/util/function/Predicate;)Z
-HPLcom/android/server/wm/WindowContainer;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
-HPLcom/android/server/wm/WindowContainer;->forAllWindows(Ljava/util/function/Consumer;Z)V
+PLcom/android/server/wm/WindowContainer;->forAllTasks(Ljava/util/function/Predicate;)Z
+HPLcom/android/server/wm/WindowContainer;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WindowContainer;->forAllWindows(Ljava/util/function/Consumer;Z)V+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool;]Lcom/android/server/wm/WindowContainer;megamorphic_types
PLcom/android/server/wm/WindowContainer;->fromBinder(Landroid/os/IBinder;)Lcom/android/server/wm/WindowContainer;
-HPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;Lcom/android/server/wm/WindowContainer;ZZ)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;Lcom/android/server/wm/WindowContainer;ZZ[Z)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;ZLcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/WindowContainer;->getActivityBelow(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/RootWindowContainer;,Lcom/android/server/wm/Task;
+PLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;Lcom/android/server/wm/WindowContainer;ZZ)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;Lcom/android/server/wm/WindowContainer;ZZ[Z)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/RootWindowContainer;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;
+HPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;ZLcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/WindowContainer;->getActivityAbove(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/WindowContainer;->getActivityBelow(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
PLcom/android/server/wm/WindowContainer;->getAnimatingContainer()Lcom/android/server/wm/WindowContainer;
-HPLcom/android/server/wm/WindowContainer;->getAnimatingContainer(II)Lcom/android/server/wm/WindowContainer;
+HPLcom/android/server/wm/WindowContainer;->getAnimatingContainer(II)Lcom/android/server/wm/WindowContainer;+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/WindowContainer;->getAnimation()Lcom/android/server/wm/AnimationAdapter;
PLcom/android/server/wm/WindowContainer;->getAnimationLeash()Landroid/view/SurfaceControl;
PLcom/android/server/wm/WindowContainer;->getAnimationLeashParent()Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/WindowContainer;->getBottomChild()Lcom/android/server/wm/WindowContainer;
PLcom/android/server/wm/WindowContainer;->getBottomMostActivity()Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/WindowContainer;->getChildAt(I)Lcom/android/server/wm/ConfigurationContainer;
-HPLcom/android/server/wm/WindowContainer;->getChildAt(I)Lcom/android/server/wm/WindowContainer;
-HPLcom/android/server/wm/WindowContainer;->getChildCount()I
+PLcom/android/server/wm/WindowContainer;->getChildAt(I)Lcom/android/server/wm/ConfigurationContainer;
+HPLcom/android/server/wm/WindowContainer;->getChildAt(I)Lcom/android/server/wm/WindowContainer;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WindowContainer;->getChildCount()I+]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/WindowContainer;->getControllableInsetProvider()Lcom/android/server/wm/InsetsSourceProvider;
-HPLcom/android/server/wm/WindowContainer;->getDisplayArea()Lcom/android/server/wm/DisplayArea;
-PLcom/android/server/wm/WindowContainer;->getDisplayContent()Lcom/android/server/wm/DisplayContent;
-PLcom/android/server/wm/WindowContainer;->getInsetsSourceProviders()Landroid/util/SparseArray;
+HPLcom/android/server/wm/WindowContainer;->getDisplayArea()Lcom/android/server/wm/DisplayArea;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;
+HPLcom/android/server/wm/WindowContainer;->getDisplayContent()Lcom/android/server/wm/DisplayContent;
+HPLcom/android/server/wm/WindowContainer;->getInsetsSourceProviders()Landroid/util/SparseArray;
PLcom/android/server/wm/WindowContainer;->getItemFromTaskDisplayAreas(Ljava/util/function/Function;)Ljava/lang/Object;
PLcom/android/server/wm/WindowContainer;->getItemFromTaskDisplayAreas(Ljava/util/function/Function;Z)Ljava/lang/Object;
PLcom/android/server/wm/WindowContainer;->getLastLayer()I
-PLcom/android/server/wm/WindowContainer;->getLastOrientationSource()Lcom/android/server/wm/WindowContainer;
+HPLcom/android/server/wm/WindowContainer;->getLastOrientationSource()Lcom/android/server/wm/WindowContainer;
+PLcom/android/server/wm/WindowContainer;->getLastRelativeLayer()Landroid/view/SurfaceControl;
PLcom/android/server/wm/WindowContainer;->getOrientation()I
-HPLcom/android/server/wm/WindowContainer;->getOrientation(I)I
-PLcom/android/server/wm/WindowContainer;->getOverrideOrientation()I
-HPLcom/android/server/wm/WindowContainer;->getParent()Lcom/android/server/wm/ConfigurationContainer;
+HPLcom/android/server/wm/WindowContainer;->getOrientation(I)I+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WindowContainer;->getOverrideOrientation()I
+PLcom/android/server/wm/WindowContainer;->getParent()Lcom/android/server/wm/ConfigurationContainer;
HPLcom/android/server/wm/WindowContainer;->getParent()Lcom/android/server/wm/WindowContainer;
PLcom/android/server/wm/WindowContainer;->getParentSurfaceControl()Landroid/view/SurfaceControl;
HPLcom/android/server/wm/WindowContainer;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;
PLcom/android/server/wm/WindowContainer;->getPrefixOrderIndex()I
-PLcom/android/server/wm/WindowContainer;->getPrefixOrderIndex(Lcom/android/server/wm/WindowContainer;)I
+HPLcom/android/server/wm/WindowContainer;->getPrefixOrderIndex(Lcom/android/server/wm/WindowContainer;)I+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/wm/WindowContainer;->getRelativeDisplayRotation()I
HPLcom/android/server/wm/WindowContainer;->getRelativePosition(Landroid/graphics/Point;)V
-HPLcom/android/server/wm/WindowContainer;->getRelativePosition(Landroid/graphics/Rect;Landroid/graphics/Point;)V
+HPLcom/android/server/wm/WindowContainer;->getRelativePosition(Landroid/graphics/Rect;Landroid/graphics/Point;)V+]Landroid/graphics/Point;Landroid/graphics/Point;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types
PLcom/android/server/wm/WindowContainer;->getRequestedConfigurationOrientation()I
-PLcom/android/server/wm/WindowContainer;->getRequestedConfigurationOrientation(ZI)I
-PLcom/android/server/wm/WindowContainer;->getRootDisplayArea()Lcom/android/server/wm/RootDisplayArea;
-HPLcom/android/server/wm/WindowContainer;->getRootTask(Ljava/util/function/Predicate;)Lcom/android/server/wm/Task;
-HPLcom/android/server/wm/WindowContainer;->getRootTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;
-HPLcom/android/server/wm/WindowContainer;->getSession()Landroid/view/SurfaceSession;
+HPLcom/android/server/wm/WindowContainer;->getRequestedConfigurationOrientation(ZI)I
+HPLcom/android/server/wm/WindowContainer;->getRootDisplayArea()Lcom/android/server/wm/RootDisplayArea;+]Lcom/android/server/wm/WindowContainer;megamorphic_types
+PLcom/android/server/wm/WindowContainer;->getRootTask(Ljava/util/function/Predicate;)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/WindowContainer;->getRootTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/wm/WindowContainer;->getSurfaceControl()Landroid/view/SurfaceControl;
PLcom/android/server/wm/WindowContainer;->getSurfaceHeight()I
PLcom/android/server/wm/WindowContainer;->getSurfaceWidth()I
-PLcom/android/server/wm/WindowContainer;->getSyncGroup()Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;
-HPLcom/android/server/wm/WindowContainer;->getSyncTransaction()Landroid/view/SurfaceControl$Transaction;
+HPLcom/android/server/wm/WindowContainer;->getSyncGroup()Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;
+HPLcom/android/server/wm/WindowContainer;->getSyncTransaction()Landroid/view/SurfaceControl$Transaction;+]Lcom/android/server/wm/WindowContainer;megamorphic_types
+PLcom/android/server/wm/WindowContainer;->getSyncTransactionCommitCallbackDepth()I
PLcom/android/server/wm/WindowContainer;->getTask(Ljava/util/function/Predicate;)Lcom/android/server/wm/Task;
-HPLcom/android/server/wm/WindowContainer;->getTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;
-PLcom/android/server/wm/WindowContainer;->getTaskDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
-PLcom/android/server/wm/WindowContainer;->getTaskFragment(Ljava/util/function/Predicate;)Lcom/android/server/wm/TaskFragment;
-HPLcom/android/server/wm/WindowContainer;->getTopChild()Lcom/android/server/wm/WindowContainer;
+PLcom/android/server/wm/WindowContainer;->getTask(Ljava/util/function/Predicate;Lcom/android/server/wm/WindowContainer;ZZ)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/WindowContainer;->getTask(Ljava/util/function/Predicate;Lcom/android/server/wm/WindowContainer;ZZ[Z)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/WindowContainer;->getTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WindowContainer;->getTaskDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
+HPLcom/android/server/wm/WindowContainer;->getTaskFragment(Ljava/util/function/Predicate;)Lcom/android/server/wm/TaskFragment;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WindowContainer;->getTopChild()Lcom/android/server/wm/WindowContainer;+]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/WindowContainer;->getTopMostActivity()Lcom/android/server/wm/ActivityRecord;
PLcom/android/server/wm/WindowContainer;->getTopMostTask()Lcom/android/server/wm/Task;
PLcom/android/server/wm/WindowContainer;->getTreeWeight()I
-HPLcom/android/server/wm/WindowContainer;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/WindowContainer;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState;+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/WindowContainer;->getWindowType()I
-HPLcom/android/server/wm/WindowContainer;->handleCompleteDeferredRemoval()Z
+HPLcom/android/server/wm/WindowContainer;->handleCompleteDeferredRemoval()Z+]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/WindowContainer;->handlesOrientationChangeFromDescendant(I)Z
PLcom/android/server/wm/WindowContainer;->hasActivity()Z
-HPLcom/android/server/wm/WindowContainer;->hasChild(Lcom/android/server/wm/WindowContainer;)Z
-HPLcom/android/server/wm/WindowContainer;->hasInsetsSourceProvider()Z
+HPLcom/android/server/wm/WindowContainer;->hasChild(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/WindowContainer;->hasWallpaper()Z
HPLcom/android/server/wm/WindowContainer;->inTransition()Z
-HPLcom/android/server/wm/WindowContainer;->inTransitionSelfOrParent()Z
+HPLcom/android/server/wm/WindowContainer;->inTransitionSelfOrParent()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WindowState;
PLcom/android/server/wm/WindowContainer;->isAnimating()Z
-HPLcom/android/server/wm/WindowContainer;->isAnimating(I)Z
-HPLcom/android/server/wm/WindowContainer;->isAnimating(II)Z
+PLcom/android/server/wm/WindowContainer;->isAnimating(I)Z
+HPLcom/android/server/wm/WindowContainer;->isAnimating(II)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WindowState;
PLcom/android/server/wm/WindowContainer;->isAppTransitioning()Z
-HPLcom/android/server/wm/WindowContainer;->isAttached()Z
-HPLcom/android/server/wm/WindowContainer;->isClosingWhenResizing()Z
-PLcom/android/server/wm/WindowContainer;->isDescendantOf(Lcom/android/server/wm/WindowContainer;)Z
-HPLcom/android/server/wm/WindowContainer;->isExitAnimationRunningSelfOrChild()Z
-HPLcom/android/server/wm/WindowContainer;->isFocusable()Z
-HPLcom/android/server/wm/WindowContainer;->isOnTop()Z
+HPLcom/android/server/wm/WindowContainer;->isAttached()Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types
+PLcom/android/server/wm/WindowContainer;->isClosingWhenResizing()Z
+HPLcom/android/server/wm/WindowContainer;->isDescendantOf(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types
+PLcom/android/server/wm/WindowContainer;->isDifferentSyncGroup(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)Z
+HPLcom/android/server/wm/WindowContainer;->isExitAnimationRunningSelfOrChild()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WindowContainer;->isFocusable()Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types
+HPLcom/android/server/wm/WindowContainer;->isOnTop()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/RootWindowContainer;
PLcom/android/server/wm/WindowContainer;->isOrganized()Z
-HPLcom/android/server/wm/WindowContainer;->isSelfAnimating(II)Z
-PLcom/android/server/wm/WindowContainer;->isSyncFinished(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)Z
-HPLcom/android/server/wm/WindowContainer;->isVisible()Z
+HPLcom/android/server/wm/WindowContainer;->isSelfAnimating(II)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types
+HPLcom/android/server/wm/WindowContainer;->isSyncFinished(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WindowContainer;->isVisible()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/WindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/wm/WindowContainer;->isVisibleRequested()Z
-PLcom/android/server/wm/WindowContainer;->isWaitingForTransitionStart()Z
-PLcom/android/server/wm/WindowContainer;->lambda$getActivityBelow$2(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/WindowContainer;->lambda$getBottomMostActivity$3(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/WindowContainer;->lambda$getTopMostActivity$4(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/WindowContainer;->lambda$getTopMostTask$12(Lcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/WindowContainer;->lambda$isAppTransitioning$0(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/WindowContainer;->lambda$waitForAllWindowsDrawn$13(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/WindowContainer;->makeAnimationLeash()Landroid/view/SurfaceControl$Builder;
-HPLcom/android/server/wm/WindowContainer;->makeChildSurface(Lcom/android/server/wm/WindowContainer;)Landroid/view/SurfaceControl$Builder;
+HPLcom/android/server/wm/WindowContainer;->isWaitingForTransitionStart()Z
+HPLcom/android/server/wm/WindowContainer;->makeAnimationLeash()Landroid/view/SurfaceControl$Builder;
+HPLcom/android/server/wm/WindowContainer;->makeChildSurface(Lcom/android/server/wm/WindowContainer;)Landroid/view/SurfaceControl$Builder;+]Landroid/view/SurfaceControl$Builder;Landroid/view/SurfaceControl$Builder;]Lcom/android/server/wm/WindowContainer;megamorphic_types
HPLcom/android/server/wm/WindowContainer;->makeSurface()Landroid/view/SurfaceControl$Builder;
-HPLcom/android/server/wm/WindowContainer;->needsZBoost()Z
-HPLcom/android/server/wm/WindowContainer;->obtainConsumerWrapper(Ljava/util/function/Consumer;)Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;
+HPLcom/android/server/wm/WindowContainer;->mergeExcludeInsetsTypesAndNotifyInsetsChanged(I)V
+PLcom/android/server/wm/WindowContainer;->migrateToNewSurfaceControl(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/WindowContainer;->needsZBoost()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/WindowContainer;->okToAnimate()Z
-PLcom/android/server/wm/WindowContainer;->okToAnimate(ZZ)Z
+HPLcom/android/server/wm/WindowContainer;->okToAnimate(ZZ)Z
PLcom/android/server/wm/WindowContainer;->okToDisplay()Z
PLcom/android/server/wm/WindowContainer;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
-PLcom/android/server/wm/WindowContainer;->onAnimationLeashCreated(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
-PLcom/android/server/wm/WindowContainer;->onAnimationLeashLost(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/WindowContainer;->onAnimationLeashCreated(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
+HPLcom/android/server/wm/WindowContainer;->onAnimationLeashLost(Landroid/view/SurfaceControl$Transaction;)V
PLcom/android/server/wm/WindowContainer;->onAppTransitionDone()V
-HPLcom/android/server/wm/WindowContainer;->onChildAdded(Lcom/android/server/wm/WindowContainer;)V
PLcom/android/server/wm/WindowContainer;->onChildPositionChanged(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/WindowContainer;->onChildRemoved(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/WindowContainer;->onChildVisibilityRequested(Z)V
-HPLcom/android/server/wm/WindowContainer;->onChildVisibleRequestedChanged(Lcom/android/server/wm/WindowContainer;)Z
+HPLcom/android/server/wm/WindowContainer;->onChildRemoved(Lcom/android/server/wm/WindowContainer;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types
+HPLcom/android/server/wm/WindowContainer;->onChildVisibilityRequested(Z)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types
+HPLcom/android/server/wm/WindowContainer;->onChildVisibleRequestedChanged(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/wm/WindowContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V
PLcom/android/server/wm/WindowContainer;->onDescendantOrientationChanged(Lcom/android/server/wm/WindowContainer;)Z
PLcom/android/server/wm/WindowContainer;->onDescendantOverrideConfigurationChanged()V
-HPLcom/android/server/wm/WindowContainer;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/WindowContainer;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/WindowContainerListener;Lcom/android/server/wm/DisplayContent$2;,Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/wm/WindowContainer;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
PLcom/android/server/wm/WindowContainer;->onParentResize()V
PLcom/android/server/wm/WindowContainer;->onRequestedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
PLcom/android/server/wm/WindowContainer;->onResize()V
PLcom/android/server/wm/WindowContainer;->onSyncFinishedDrawing()Z
HPLcom/android/server/wm/WindowContainer;->onSyncReparent(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/WindowContainer;->onSyncTransactionCommitted(Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/WindowContainer;->onUnfrozen()V
-PLcom/android/server/wm/WindowContainer;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
-HPLcom/android/server/wm/WindowContainer;->prepareSurfaces()V
-PLcom/android/server/wm/WindowContainer;->prepareSync()Z
-PLcom/android/server/wm/WindowContainer;->processGetActivityWithBoundary(Ljava/util/function/Predicate;Lcom/android/server/wm/WindowContainer;ZZ[ZLcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/WindowContainer;->providesOrientation()Z
+HPLcom/android/server/wm/WindowContainer;->onSyncTransactionCommitted(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/WindowContainer;->onUnfrozen()V
+HPLcom/android/server/wm/WindowContainer;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WindowContainer;->prepareSurfaces()V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WindowContainer;->prepareSync()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/WindowContainer;->providesOrientation()Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types
PLcom/android/server/wm/WindowContainer;->reassignLayer(Landroid/view/SurfaceControl$Transaction;)V
PLcom/android/server/wm/WindowContainer;->reduceOnAllTaskDisplayAreas(Ljava/util/function/BiFunction;Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/wm/WindowContainer;->registerWindowContainerListener(Lcom/android/server/wm/WindowContainerListener;)V
-PLcom/android/server/wm/WindowContainer;->registerWindowContainerListener(Lcom/android/server/wm/WindowContainerListener;Z)V
-PLcom/android/server/wm/WindowContainer;->removeChild(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/WindowContainer;->registerWindowContainerListener(Lcom/android/server/wm/WindowContainerListener;Z)V
+HPLcom/android/server/wm/WindowContainer;->removeChild(Lcom/android/server/wm/WindowContainer;)V
HPLcom/android/server/wm/WindowContainer;->removeImmediately()V
-PLcom/android/server/wm/WindowContainer;->resetSurfacePositionForAnimationLeash(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/WindowContainer;->reparent(Lcom/android/server/wm/WindowContainer;I)V
+PLcom/android/server/wm/WindowContainer;->reparentSurfaceControl(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
+HPLcom/android/server/wm/WindowContainer;->resetSurfacePositionForAnimationLeash(Landroid/view/SurfaceControl$Transaction;)V
HPLcom/android/server/wm/WindowContainer;->scheduleAnimation()V
-PLcom/android/server/wm/WindowContainer;->sendAppVisibilityToClients()V
+HPLcom/android/server/wm/WindowContainer;->sendAppVisibilityToClients()V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/WindowContainer;->setCanScreenshot(Landroid/view/SurfaceControl$Transaction;Z)Z
PLcom/android/server/wm/WindowContainer;->setControllableInsetProvider(Lcom/android/server/wm/InsetsSourceProvider;)V
HPLcom/android/server/wm/WindowContainer;->setInitialSurfaceControlProperties(Landroid/view/SurfaceControl$Builder;)V
HPLcom/android/server/wm/WindowContainer;->setLayer(Landroid/view/SurfaceControl$Transaction;I)V
-PLcom/android/server/wm/WindowContainer;->setOrientation(I)V
-PLcom/android/server/wm/WindowContainer;->setOrientation(ILcom/android/server/wm/WindowContainer;)V
PLcom/android/server/wm/WindowContainer;->setOverrideOrientation(I)V
-HPLcom/android/server/wm/WindowContainer;->setParent(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/WindowContainer;->setRelativeLayer(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;I)V
+HPLcom/android/server/wm/WindowContainer;->setParent(Lcom/android/server/wm/WindowContainer;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types
+HPLcom/android/server/wm/WindowContainer;->setRelativeLayer(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;I)V
PLcom/android/server/wm/WindowContainer;->setSurfaceControl(Landroid/view/SurfaceControl;)V
-PLcom/android/server/wm/WindowContainer;->setSyncGroup(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)V
-HPLcom/android/server/wm/WindowContainer;->setVisibleRequested(Z)Z
+HPLcom/android/server/wm/WindowContainer;->setSyncGroup(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)V
+HPLcom/android/server/wm/WindowContainer;->setVisibleRequested(Z)Z+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/WindowContainerListener;Lcom/android/server/wm/DisplayContent$2;,Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;]Ljava/util/List;Ljava/util/ArrayList;
PLcom/android/server/wm/WindowContainer;->showSurfaceOnCreation()Z
-HPLcom/android/server/wm/WindowContainer;->showWallpaper()Z
+HPLcom/android/server/wm/WindowContainer;->showWallpaper()Z+]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/WindowContainer;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZI)V
PLcom/android/server/wm/WindowContainer;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
-PLcom/android/server/wm/WindowContainer;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;Ljava/lang/Runnable;Lcom/android/server/wm/AnimationAdapter;)V
+HPLcom/android/server/wm/WindowContainer;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;Ljava/lang/Runnable;Lcom/android/server/wm/AnimationAdapter;)V
PLcom/android/server/wm/WindowContainer;->syncNextBuffer()Z
PLcom/android/server/wm/WindowContainer;->unregisterWindowContainerListener(Lcom/android/server/wm/WindowContainerListener;)V
-HPLcom/android/server/wm/WindowContainer;->updateAboveInsetsState(Landroid/view/InsetsState;Landroid/util/SparseArray;Landroid/util/ArraySet;)V
+HPLcom/android/server/wm/WindowContainer;->updateAboveInsetsState(Landroid/view/InsetsState;Landroid/util/SparseArray;Landroid/util/ArraySet;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WindowContainer;->updateMergedExcludeInsetsTypes(ILandroid/util/ArraySet;)V
+PLcom/android/server/wm/WindowContainer;->updateOverlayInsetsState(Lcom/android/server/wm/WindowState;)V
HPLcom/android/server/wm/WindowContainer;->updateSurfacePosition(Landroid/view/SurfaceControl$Transaction;)V
-HPLcom/android/server/wm/WindowContainer;->updateSurfacePositionNonOrganized()V
+HPLcom/android/server/wm/WindowContainer;->updateSurfacePositionNonOrganized()V+]Lcom/android/server/wm/WindowContainer;megamorphic_types
PLcom/android/server/wm/WindowContainer;->waitForAllWindowsDrawn()V
-PLcom/android/server/wm/WindowContainer;->waitForSyncTransactionCommit(Landroid/util/ArraySet;)V
+HPLcom/android/server/wm/WindowContainer;->waitForSyncTransactionCommit(Landroid/util/ArraySet;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/WindowContainer;->writeIdentifierToProto(Landroid/util/proto/ProtoOutputStream;J)V
PLcom/android/server/wm/WindowContainerListener;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/WindowContainerListener;->onRemoved()V
PLcom/android/server/wm/WindowContainerListener;->onVisibleRequestedChanged(Z)V
PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl$DeathRecipient;-><init>(Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;)V
-PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl$DeathRecipient;-><init>(Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl$DeathRecipient-IA;)V
-PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl$DeathRecipient;->linkToDeath()V
-PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->-$$Nest$fgetmClientToken(Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;)Landroid/os/IBinder;
-PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->-$$Nest$fgetmOptions(Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;)Landroid/os/Bundle;
-PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->-$$Nest$fgetmType(Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;)I
-PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->-$$Nest$mregister(Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;Z)V
-PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->-$$Nest$mupdateContainer(Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl$DeathRecipient;->binderDied()V
PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;-><init>(Lcom/android/server/wm/WindowContextListenerController;Lcom/android/server/wm/WindowProcessController;Landroid/os/IBinder;Lcom/android/server/wm/WindowContainer;ILandroid/os/Bundle;)V
-PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;-><init>(Lcom/android/server/wm/WindowContextListenerController;Lcom/android/server/wm/WindowProcessController;Landroid/os/IBinder;Lcom/android/server/wm/WindowContainer;ILandroid/os/Bundle;Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl-IA;)V
-PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->clear()V
-HPLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->dispatchWindowContextInfoChange()V
-PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->getUid()I
+HPLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->dispatchWindowContextInfoChange()V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/DisplayArea$Tokens;,Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/WindowToken;
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->getWindowContainer()Lcom/android/server/wm/WindowContainer;
PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->onMergedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->register()V
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->onRemoved()V
PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->register(Z)V
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->unregister()V
PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->updateContainer(Lcom/android/server/wm/WindowContainer;)V
PLcom/android/server/wm/WindowContextListenerController;-><init>()V
-PLcom/android/server/wm/WindowContextListenerController;->assertCallerCanModifyListener(Landroid/os/IBinder;ZI)Z
-PLcom/android/server/wm/WindowContextListenerController;->getOptions(Landroid/os/IBinder;)Landroid/os/Bundle;
-PLcom/android/server/wm/WindowContextListenerController;->getWindowType(Landroid/os/IBinder;)I
-PLcom/android/server/wm/WindowContextListenerController;->hasListener(Landroid/os/IBinder;)Z
-PLcom/android/server/wm/WindowContextListenerController;->registerWindowContainerListener(Lcom/android/server/wm/WindowProcessController;Landroid/os/IBinder;Lcom/android/server/wm/WindowContainer;ILandroid/os/Bundle;)V
+PLcom/android/server/wm/WindowContextListenerController;->assertCallerCanModifyListener(IZLandroid/os/IBinder;)Z
PLcom/android/server/wm/WindowContextListenerController;->registerWindowContainerListener(Lcom/android/server/wm/WindowProcessController;Landroid/os/IBinder;Lcom/android/server/wm/WindowContainer;ILandroid/os/Bundle;Z)V
PLcom/android/server/wm/WindowContextListenerController;->updateContainerForWindowContextListener(Landroid/os/IBinder;Lcom/android/server/wm/WindowContainer;)V
PLcom/android/server/wm/WindowFrames;-><clinit>()V
HPLcom/android/server/wm/WindowFrames;-><init>()V
HPLcom/android/server/wm/WindowFrames;->didFrameSizeChange()Z
-PLcom/android/server/wm/WindowFrames;->hasContentChanged()Z
-PLcom/android/server/wm/WindowFrames;->hasInsetsChanged()Z
-PLcom/android/server/wm/WindowFrames;->isFrameSizeChangeReported()Z
-PLcom/android/server/wm/WindowFrames;->onResizeHandled()V
-HPLcom/android/server/wm/WindowFrames;->parentFrameWasClippedByDisplayCutout()Z
-PLcom/android/server/wm/WindowFrames;->setContentChanged(Z)V
-PLcom/android/server/wm/WindowFrames;->setParentFrameWasClippedByDisplayCutout(Z)V
-HPLcom/android/server/wm/WindowFrames;->setReportResizeHints()Z
-PLcom/android/server/wm/WindowList;-><init>()V
-PLcom/android/server/wm/WindowList;->peekFirst()Ljava/lang/Object;
-HPLcom/android/server/wm/WindowList;->peekLast()Ljava/lang/Object;
-PLcom/android/server/wm/WindowManagerConstants$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowManagerConstants;)V
-PLcom/android/server/wm/WindowManagerConstants$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/WindowManagerConstants;)V
+PLcom/android/server/wm/WindowManagerConstants$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowManagerConstants;I)V
+PLcom/android/server/wm/WindowManagerConstants$$ExternalSyntheticLambda0;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
PLcom/android/server/wm/WindowManagerConstants$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/WindowManagerConstants;-><init>(Lcom/android/server/wm/WindowManagerGlobalLock;Ljava/lang/Runnable;Landroid/provider/DeviceConfigInterface;)V
-PLcom/android/server/wm/WindowManagerConstants;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/provider/DeviceConfigInterface;)V
-PLcom/android/server/wm/WindowManagerConstants;->start(Ljava/util/concurrent/Executor;)V
-PLcom/android/server/wm/WindowManagerConstants;->updateSystemGestureExcludedByPreQStickyImmersive()V
-PLcom/android/server/wm/WindowManagerConstants;->updateSystemGestureExclusionLimitDp()V
-PLcom/android/server/wm/WindowManagerConstants;->updateSystemGestureExclusionLogDebounceMillis()V
+PLcom/android/server/wm/WindowManagerConstants;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/WindowManagerConstants;->updateIgnoreActivityOrientationRequest()V
+PLcom/android/server/wm/WindowManagerConstants;->updateOptOutIgnoreActivityOrientationRequestList()V
PLcom/android/server/wm/WindowManagerFlags;-><init>()V
-HSPLcom/android/server/wm/WindowManagerGlobalLock;-><init>()V
-PLcom/android/server/wm/WindowManagerInternal$AppTransitionListener;-><init>()V
+PLcom/android/server/wm/WindowManagerInternal$AppTransitionListener;-><init>(I)V
PLcom/android/server/wm/WindowManagerInternal$AppTransitionListener;->onAppTransitionPendingLocked()V
-PLcom/android/server/wm/WindowManagerInternal$AppTransitionListener;->onAppTransitionStartingLocked(JJ)I
+PLcom/android/server/wm/WindowManagerInternal$AppTransitionListener;->onAppTransitionStartingLocked(J)I
+PLcom/android/server/wm/WindowManagerInternal$ImeTargetInfo;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/wm/WindowManagerInternal;-><init>()V
-PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda0;-><init>([Lcom/android/server/wm/WindowManagerService;Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/DisplayWindowSettingsProvider;Ljava/util/function/Supplier;Ljava/util/function/Function;)V
+PLcom/android/server/wm/WindowManagerInternal;->removeWindowToken(Landroid/os/IBinder;ZI)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda0;-><init>([Lcom/android/server/wm/WindowManagerService;Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/DisplayWindowSettingsProvider;Ljava/util/function/Supplier;Ljava/util/function/Supplier;Lcom/android/server/wm/AppCompatConfiguration;)V
PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda16;-><init>()V
-PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda16;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda18;-><init>()V
-PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda18;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda21;-><init>()V
-PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda21;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda22;-><init>(Lcom/android/server/wm/WindowManagerService$SettingsObserver;)V
-PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda22;->run()V
-PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda23;-><init>()V
-HPLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda23;->get()Ljava/lang/Object;
-PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;-><init>()V
-HPLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;ZZ)V
-PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda2;->run()V
-PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda30;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda30;->run()V
-PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda4;->getRootForDisplay(I)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda15;-><init>(IZ)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda15;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda19;-><init>(I)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda19;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda22;-><init>(Ljava/util/ArrayList;I)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda22;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda25;-><init>(I)V
+HPLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda25;->get()Ljava/lang/Object;
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda29;-><init>(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda30;-><init>(ILjava/io/PrintWriter;)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda30;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda32;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/InputTarget;I)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda32;->run()V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda4;-><init>(IZLandroid/os/IBinder;)V
+HPLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda4;->run()V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda5;-><init>(IZ)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda5;->run()V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+HPLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda7;->getRootForDisplay(I)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda8;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda8;->run()V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda9;-><init>(ILjava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda9;->run()V
PLcom/android/server/wm/WindowManagerService$1;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/WindowManagerService$2;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$2;-><init>(Lcom/android/server/wm/WindowManagerService;I)V
+PLcom/android/server/wm/WindowManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/wm/WindowManagerService$3;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$3;->dumpCritical(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+PLcom/android/server/wm/WindowManagerService$3;->dumpHigh(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
PLcom/android/server/wm/WindowManagerService$4;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/WindowManagerService$4;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
+PLcom/android/server/wm/WindowManagerService$4;->onAppTransitionCancelledLocked(Z)V
+HPLcom/android/server/wm/WindowManagerService$4;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
PLcom/android/server/wm/WindowManagerService$5;-><init>(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/WindowManagerService$5;->run()V
PLcom/android/server/wm/WindowManagerService$6;-><init>(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/WindowManagerService$7;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/WindowManagerService$8;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$7;->onOpChanged(ILjava/lang/String;)V
PLcom/android/server/wm/WindowManagerService$H;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-HPLcom/android/server/wm/WindowManagerService$H;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/wm/WindowManagerService$H;->handleMessage(Landroid/os/Message;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;
PLcom/android/server/wm/WindowManagerService$ImeTargetVisibilityPolicyImpl;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/WindowManagerService$ImeTargetVisibilityPolicyImpl;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService$ImeTargetVisibilityPolicyImpl-IA;)V
PLcom/android/server/wm/WindowManagerService$LocalService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowManagerService$LocalService;I)V
PLcom/android/server/wm/WindowManagerService$LocalService$$ExternalSyntheticLambda0;->run()V
-PLcom/android/server/wm/WindowManagerService$LocalService;->$r8$lambda$lk-ezvC20UqC557MIWFnPJCqHrs(Lcom/android/server/wm/WindowManagerService$LocalService;I)V
PLcom/android/server/wm/WindowManagerService$LocalService;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/WindowManagerService$LocalService;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService$LocalService-IA;)V
PLcom/android/server/wm/WindowManagerService$LocalService;->addWindowToken(Landroid/os/IBinder;IILandroid/os/Bundle;)V
PLcom/android/server/wm/WindowManagerService$LocalService;->clearSnapshotCache()V
+PLcom/android/server/wm/WindowManagerService$LocalService;->computeWindowsForAccessibility(I)V
PLcom/android/server/wm/WindowManagerService$LocalService;->getAccessibilityController()Lcom/android/server/wm/WindowManagerInternal$AccessibilityControllerInternal;
-PLcom/android/server/wm/WindowManagerService$LocalService;->getDisplayIdForWindow(Landroid/os/IBinder;)I
+HPLcom/android/server/wm/WindowManagerService$LocalService;->getDisplayIdForWindow(Landroid/os/IBinder;)I
PLcom/android/server/wm/WindowManagerService$LocalService;->getFocusedWindowTokenFromWindowStates()Landroid/os/IBinder;
+PLcom/android/server/wm/WindowManagerService$LocalService;->getKeyInterceptionInfoFromToken(Landroid/os/IBinder;)Lcom/android/internal/policy/KeyInterceptionInfo;
+PLcom/android/server/wm/WindowManagerService$LocalService;->getMagnificationRegion(ILandroid/graphics/Region;)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->getTopFocusedDisplayId()I
+PLcom/android/server/wm/WindowManagerService$LocalService;->getWindowName(Landroid/os/IBinder;)Ljava/lang/String;
+PLcom/android/server/wm/WindowManagerService$LocalService;->getWindowTransformationMatrixAndMagnificationSpec(Landroid/os/IBinder;)Landroid/util/Pair;
HPLcom/android/server/wm/WindowManagerService$LocalService;->hasInputMethodClientFocus(Landroid/os/IBinder;III)I
PLcom/android/server/wm/WindowManagerService$LocalService;->hasNavigationBar(I)Z
-PLcom/android/server/wm/WindowManagerService$LocalService;->lambda$onDisplayManagerReceivedDeviceState$0(I)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->isKeyguardShowingAndNotOccluded()Z
PLcom/android/server/wm/WindowManagerService$LocalService;->onDisplayManagerReceivedDeviceState(I)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->onToggleImeRequested(ZLandroid/os/IBinder;Landroid/os/IBinder;I)Lcom/android/server/wm/WindowManagerInternal$ImeTargetInfo;
PLcom/android/server/wm/WindowManagerService$LocalService;->registerAppTransitionListener(Lcom/android/server/wm/WindowManagerInternal$AppTransitionListener;)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->registerOnWindowRemovedListener(Lcom/android/server/wm/WindowManagerInternal$OnWindowRemovedListener;)V
PLcom/android/server/wm/WindowManagerService$LocalService;->removeWindowToken(Landroid/os/IBinder;ZZI)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->reportPasswordChanged(I)V
HPLcom/android/server/wm/WindowManagerService$LocalService;->requestTraversalFromDisplayManager()V
-HPLcom/android/server/wm/WindowManagerService$LocalService;->setAccessibilityIdToSurfaceMetadata(Landroid/os/IBinder;I)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->requestWindowFocus(Landroid/os/IBinder;)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->setAccessibilityIdToSurfaceMetadata(Landroid/os/IBinder;I)V
PLcom/android/server/wm/WindowManagerService$LocalService;->setDismissImeOnBackKeyPressed(Z)V
-PLcom/android/server/wm/WindowManagerService$LocalService;->setInputMethodTargetChangeListener(Lcom/android/server/wm/ImeTargetChangeListener;)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->setInputFilter(Landroid/view/IInputFilter;)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->setMagnificationCallbacks(ILcom/android/server/wm/WindowManagerInternal$MagnificationCallbacks;)Z
+PLcom/android/server/wm/WindowManagerService$LocalService;->setMagnificationSpec(ILandroid/view/MagnificationSpec;)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->setOnImeRequestedChangedListener(Lcom/android/server/wm/WindowManagerInternal$OnImeRequestedChangedListener;)V
PLcom/android/server/wm/WindowManagerService$LocalService;->setWallpaperCropHints(Landroid/os/IBinder;Landroid/util/SparseArray;)V
PLcom/android/server/wm/WindowManagerService$LocalService;->setWallpaperCropUtils(Lcom/android/server/wallpaper/WallpaperCropper$WallpaperCropUtils;)V
PLcom/android/server/wm/WindowManagerService$LocalService;->setWallpaperShowWhenLocked(Landroid/os/IBinder;Z)V
PLcom/android/server/wm/WindowManagerService$LocalService;->setWindowsForAccessibilityCallback(ILcom/android/server/wm/WindowManagerInternal$WindowsForAccessibilityCallback;)V
-PLcom/android/server/wm/WindowManagerService$LocalService;->updateInputMethodTargetWindow(Landroid/os/IBinder;Landroid/os/IBinder;)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->shouldRestoreImeVisibility(Landroid/os/IBinder;)Z
+HPLcom/android/server/wm/WindowManagerService$LocalService;->updateInputMethodTargetWindow(Landroid/os/IBinder;)V
PLcom/android/server/wm/WindowManagerService$LocalService;->waitForAllWindowsDrawn(Landroid/os/Message;JI)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->waitForAllWindowsDrawnLocked(Landroid/os/Message;JI)Z
PLcom/android/server/wm/WindowManagerService$SettingsObserver;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/WindowManagerService$SettingsObserver;->loadSettings()V
+PLcom/android/server/wm/WindowManagerService$SettingsObserver;->updateDisableSecureWindows()V
PLcom/android/server/wm/WindowManagerService$SettingsObserver;->updateMaximumObscuringOpacityForTouch()V
PLcom/android/server/wm/WindowManagerService$SettingsObserver;->updateSystemUiSettings(Z)V
-PLcom/android/server/wm/WindowManagerService;->$r8$lambda$-03A0KzACDP8viIeBR6fHGPyC3E(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/WindowManagerService;->$r8$lambda$5NrEVxBS-ypo1Qb5HZIOjzN6KD0(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;ZZ)V
-PLcom/android/server/wm/WindowManagerService;->$r8$lambda$mwBTKetH1qw0F1b0kyWqrfq23P8([Lcom/android/server/wm/WindowManagerService;Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/DisplayWindowSettingsProvider;Ljava/util/function/Supplier;Ljava/util/function/Function;)V
-PLcom/android/server/wm/WindowManagerService;->$r8$lambda$q098u3YRqNN-dXhSIeNTldOKDX4(Lcom/android/server/wm/WindowManagerService;I)Landroid/view/SurfaceControl;
-PLcom/android/server/wm/WindowManagerService;->-$$Nest$fgetmTransaction(Lcom/android/server/wm/WindowManagerService;)Landroid/view/SurfaceControl$Transaction;
-PLcom/android/server/wm/WindowManagerService;->-$$Nest$mcheckBootAnimationCompleteLocked(Lcom/android/server/wm/WindowManagerService;)Z
-PLcom/android/server/wm/WindowManagerService;->-$$Nest$mperformEnableScreen(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService;->-$$Nest$mdoDump(Lcom/android/server/wm/WindowManagerService;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+PLcom/android/server/wm/WindowManagerService;->-$$Nest$monPointerDownOutsideFocusLocked(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/InputTarget;Z)V
HSPLcom/android/server/wm/WindowManagerService;-><clinit>()V
-HPLcom/android/server/wm/WindowManagerService;-><init>(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/DisplayWindowSettingsProvider;Ljava/util/function/Supplier;Ljava/util/function/Function;)V
+PLcom/android/server/wm/WindowManagerService;-><init>(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/DisplayWindowSettingsProvider;Ljava/util/function/Supplier;Ljava/util/function/Supplier;Lcom/android/server/wm/AppCompatConfiguration;)V
PLcom/android/server/wm/WindowManagerService;->addKeyguardLockedStateListener(Lcom/android/internal/policy/IKeyguardLockedStateListener;)V
HPLcom/android/server/wm/WindowManagerService;->addWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIILandroid/view/InputChannel;Landroid/view/InsetsState;Landroid/view/InsetsSourceControl$Array;Landroid/graphics/Rect;[F)I
PLcom/android/server/wm/WindowManagerService;->addWindowToken(Landroid/os/IBinder;IILandroid/os/Bundle;)V
-PLcom/android/server/wm/WindowManagerService;->applyForcedPropertiesForDefaultDisplay()Z
-HPLcom/android/server/wm/WindowManagerService;->attachWindowContextToDisplayArea(Landroid/app/IApplicationThread;Landroid/os/IBinder;IILandroid/os/Bundle;)Landroid/window/WindowContextInfo;
+PLcom/android/server/wm/WindowManagerService;->applyForcedPropertiesForDefaultDisplay()V
+PLcom/android/server/wm/WindowManagerService;->attachWindowContextToDisplayArea(Landroid/app/IApplicationThread;Landroid/os/IBinder;IILandroid/os/Bundle;)Landroid/window/WindowContextInfo;
+PLcom/android/server/wm/WindowManagerService;->attachWindowContextToDisplayContent(Landroid/app/IApplicationThread;Landroid/os/IBinder;I)Landroid/window/WindowContextInfo;
PLcom/android/server/wm/WindowManagerService;->attachWindowContextToWindowToken(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/os/IBinder;)Landroid/window/WindowContextInfo;
HSPLcom/android/server/wm/WindowManagerService;->boostPriorityForLockedSection()V
PLcom/android/server/wm/WindowManagerService;->checkBootAnimationCompleteLocked()Z
-PLcom/android/server/wm/WindowManagerService;->checkCallingPermission(Ljava/lang/String;Ljava/lang/String;)Z
-PLcom/android/server/wm/WindowManagerService;->checkCallingPermission(Ljava/lang/String;Ljava/lang/String;Z)Z
-HPLcom/android/server/wm/WindowManagerService;->checkDrawnWindowsLocked()V
+PLcom/android/server/wm/WindowManagerService;->checkCallingPermission$1(Ljava/lang/String;Ljava/lang/String;Z)Z
+HPLcom/android/server/wm/WindowManagerService;->checkDrawnWindowsLocked()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/WindowManagerService;->closeSystemDialogs(Ljava/lang/String;)V
PLcom/android/server/wm/WindowManagerService;->computeNewConfiguration(I)Landroid/content/res/Configuration;
-PLcom/android/server/wm/WindowManagerService;->computeNewConfigurationLocked(I)Landroid/content/res/Configuration;
-PLcom/android/server/wm/WindowManagerService;->createSurfaceControl(Landroid/view/SurfaceControl;ILcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)I
-PLcom/android/server/wm/WindowManagerService;->createWatermark()V
+HPLcom/android/server/wm/WindowManagerService;->createSurfaceControl(Landroid/view/SurfaceControl;ILcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)I
+PLcom/android/server/wm/WindowManagerService;->detachWindowContext(Landroid/os/IBinder;)V
PLcom/android/server/wm/WindowManagerService;->detectSafeMode()Z
-PLcom/android/server/wm/WindowManagerService;->dispatchImeInputTargetVisibilityChanged(Landroid/os/IBinder;ZZ)V
-PLcom/android/server/wm/WindowManagerService;->dispatchKeyguardLockedState()V
+HPLcom/android/server/wm/WindowManagerService;->dispatchImeInputTargetVisibilityChanged(Landroid/os/IBinder;ZZI)V
+PLcom/android/server/wm/WindowManagerService;->dispatchImeTargetOverlayVisibilityChanged(IIZZ)V
PLcom/android/server/wm/WindowManagerService;->displayReady()V
-PLcom/android/server/wm/WindowManagerService;->enableScreenAfterBoot()V
-PLcom/android/server/wm/WindowManagerService;->enableScreenIfNeeded()V
+PLcom/android/server/wm/WindowManagerService;->doesAddToastWindowRequireToken(Ljava/lang/String;ILcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/WindowManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/wm/WindowManagerService;->dumpAccessibilityController(Ljava/io/PrintWriter;Z)V
+PLcom/android/server/wm/WindowManagerService;->dumpAnimatorLocked(Ljava/io/PrintWriter;Z)V
+PLcom/android/server/wm/WindowManagerService;->dumpDebugLocked(ILandroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/wm/WindowManagerService;->dumpHighRefreshRateBlacklist(Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/WindowManagerService;->dumpSessionsLocked(Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/WindowManagerService;->dumpTokensLocked(Ljava/io/PrintWriter;Z)V
+PLcom/android/server/wm/WindowManagerService;->dumpTraceStatus(Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/WindowManagerService;->dumpWindowsLocked(Ljava/io/PrintWriter;ZLjava/util/ArrayList;)V
HPLcom/android/server/wm/WindowManagerService;->enableScreenIfNeededLocked()V
-PLcom/android/server/wm/WindowManagerService;->enforceSubscribeToKeyguardLockedStatePermission()V
-PLcom/android/server/wm/WindowManagerService;->excludeWindowTypeFromTapOutTask(I)Z
-HPLcom/android/server/wm/WindowManagerService;->finishDrawingWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/view/SurfaceControl$Transaction;I)V
+PLcom/android/server/wm/WindowManagerService;->executeAppTransition()V
PLcom/android/server/wm/WindowManagerService;->freezeDisplayRotation(IILjava/lang/String;)V
PLcom/android/server/wm/WindowManagerService;->freezeRotation(ILjava/lang/String;)V
-PLcom/android/server/wm/WindowManagerService;->getAnimatorDurationScaleSetting()F
PLcom/android/server/wm/WindowManagerService;->getBaseDisplaySize(ILandroid/graphics/Point;)V
-PLcom/android/server/wm/WindowManagerService;->getCameraLensCoverState()I
-HPLcom/android/server/wm/WindowManagerService;->getCurrentAnimatorScale()F
+PLcom/android/server/wm/WindowManagerService;->getCurrentAnimatorScale()F
HPLcom/android/server/wm/WindowManagerService;->getDefaultDisplayContentLocked()Lcom/android/server/wm/DisplayContent;
-PLcom/android/server/wm/WindowManagerService;->getDefaultDisplayRotation()I
-PLcom/android/server/wm/WindowManagerService;->getDisplayAreaPolicyProvider()Lcom/android/server/wm/DisplayAreaPolicy$Provider;
PLcom/android/server/wm/WindowManagerService;->getDisplayContentOrCreate(ILandroid/os/IBinder;)Lcom/android/server/wm/DisplayContent;
-PLcom/android/server/wm/WindowManagerService;->getFocusedWindowLocked()Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/WindowManagerService;->getFocusedWindow()Lcom/android/server/wm/WindowState;
PLcom/android/server/wm/WindowManagerService;->getForcedDisplayDensityForUserLocked(I)I
PLcom/android/server/wm/WindowManagerService;->getImeDisplayId()I
PLcom/android/server/wm/WindowManagerService;->getInputManagerCallback()Lcom/android/server/wm/InputManagerCallback;
-PLcom/android/server/wm/WindowManagerService;->getInputTargetFromToken(Landroid/os/IBinder;)Lcom/android/server/wm/InputTarget;
-PLcom/android/server/wm/WindowManagerService;->getInputTargetFromWindowTokenLocked(Landroid/os/IBinder;)Lcom/android/server/wm/InputTarget;
-HPLcom/android/server/wm/WindowManagerService;->getInsetsSourceControls(Lcom/android/server/wm/WindowState;Landroid/view/InsetsSourceControl$Array;)V
-PLcom/android/server/wm/WindowManagerService;->getLidState()I
-HPLcom/android/server/wm/WindowManagerService;->getRecentsAnimationController()Lcom/android/server/wm/RecentsAnimationController;
-PLcom/android/server/wm/WindowManagerService;->getTaskSnapshot(IIZZ)Landroid/window/TaskSnapshot;
-PLcom/android/server/wm/WindowManagerService;->getTransitionAnimationScaleSetting()F
-PLcom/android/server/wm/WindowManagerService;->getWindowAnimationScaleLocked()F
-PLcom/android/server/wm/WindowManagerService;->getWindowAnimationScaleSetting()F
-PLcom/android/server/wm/WindowManagerService;->getWindowManagerLock()Ljava/lang/Object;
+HPLcom/android/server/wm/WindowManagerService;->getInputTargetFromToken(Landroid/os/IBinder;)Lcom/android/server/wm/InputTarget;+]Ljava/util/HashMap;Ljava/util/HashMap;
+HPLcom/android/server/wm/WindowManagerService;->getInputTargetFromWindowTokenLocked(Landroid/os/IBinder;)Lcom/android/server/wm/InputTarget;
+PLcom/android/server/wm/WindowManagerService;->getMostRecentActivityInAdjacent(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/WindowManagerService;->getPossibleDisplayInfo(I)Ljava/util/List;
+PLcom/android/server/wm/WindowManagerService;->getWindowInsets(ILandroid/os/IBinder;Landroid/view/InsetsState;)Z
PLcom/android/server/wm/WindowManagerService;->grantInputChannel(Lcom/android/server/wm/Session;IIILandroid/view/SurfaceControl;Landroid/os/IBinder;Landroid/window/InputTransferToken;IIIILandroid/os/IBinder;Landroid/window/InputTransferToken;Ljava/lang/String;Landroid/view/InputChannel;)V
+PLcom/android/server/wm/WindowManagerService;->handlePointerDownOutsideFocus(Lcom/android/server/wm/InputTarget;)V
+PLcom/android/server/wm/WindowManagerService;->handleTaskFocusChange(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;)V
PLcom/android/server/wm/WindowManagerService;->hasNavigationBar(I)Z
PLcom/android/server/wm/WindowManagerService;->hideBootMessagesLocked()V
-PLcom/android/server/wm/WindowManagerService;->initPolicy()V
-PLcom/android/server/wm/WindowManagerService;->isDisplayRotationFrozen(I)Z
+PLcom/android/server/wm/WindowManagerService;->isCallerVirtualDeviceOwner(II)Z
PLcom/android/server/wm/WindowManagerService;->isInTouchMode(I)Z
-PLcom/android/server/wm/WindowManagerService;->isKeyguardLocked()Z
+HPLcom/android/server/wm/WindowManagerService;->isKeyguardLocked()Z
HPLcom/android/server/wm/WindowManagerService;->isKeyguardSecure(I)Z
-PLcom/android/server/wm/WindowManagerService;->isRecentsAnimationTarget(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/WindowManagerService;->isRotationFrozen()Z
PLcom/android/server/wm/WindowManagerService;->isSafeModeEnabled()Z
-HPLcom/android/server/wm/WindowManagerService;->isUserVisible(I)Z
-PLcom/android/server/wm/WindowManagerService;->lambda$dispatchImeInputTargetVisibilityChanged$7(Landroid/os/IBinder;ZZ)V
-PLcom/android/server/wm/WindowManagerService;->lambda$dispatchKeyguardLockedState$5()V
-PLcom/android/server/wm/WindowManagerService;->lambda$main$1([Lcom/android/server/wm/WindowManagerService;Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/DisplayWindowSettingsProvider;Ljava/util/function/Supplier;Ljava/util/function/Function;)V
-PLcom/android/server/wm/WindowManagerService;->lambda$new$2(I)Landroid/view/SurfaceControl;
-PLcom/android/server/wm/WindowManagerService;->main(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;)Lcom/android/server/wm/WindowManagerService;
-PLcom/android/server/wm/WindowManagerService;->main(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/DisplayWindowSettingsProvider;Ljava/util/function/Supplier;Ljava/util/function/Function;)Lcom/android/server/wm/WindowManagerService;
-HPLcom/android/server/wm/WindowManagerService;->makeSurfaceBuilder(Landroid/view/SurfaceSession;)Landroid/view/SurfaceControl$Builder;
+PLcom/android/server/wm/WindowManagerService;->main(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZLcom/android/server/policy/PhoneWindowManager;Lcom/android/server/wm/ActivityTaskManagerService;)Lcom/android/server/wm/WindowManagerService;
+PLcom/android/server/wm/WindowManagerService;->main(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/DisplayWindowSettingsProvider;Ljava/util/function/Supplier;Ljava/util/function/Supplier;Lcom/android/server/wm/AppCompatConfiguration;)Lcom/android/server/wm/WindowManagerService;
+PLcom/android/server/wm/WindowManagerService;->makeSurfaceBuilder()Landroid/view/SurfaceControl$Builder;
PLcom/android/server/wm/WindowManagerService;->makeWindowFreezingScreenIfNeededLocked(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/WindowManagerService;->mapOrientationRequest(I)I
-HPLcom/android/server/wm/WindowManagerService;->monitor()V
-PLcom/android/server/wm/WindowManagerService;->notifyFocusChanged()V
-PLcom/android/server/wm/WindowManagerService;->onAnimationFinished()V
+PLcom/android/server/wm/WindowManagerService;->monitor()V
+PLcom/android/server/wm/WindowManagerService;->moveDisplayToTopInternal(I)V
+HPLcom/android/server/wm/WindowManagerService;->onAnimationFinished()V
PLcom/android/server/wm/WindowManagerService;->onInitReady()V
-PLcom/android/server/wm/WindowManagerService;->onKeyguardShowingAndNotOccludedChanged()V
PLcom/android/server/wm/WindowManagerService;->onProcessActivityVisibilityChanged(IZ)V
PLcom/android/server/wm/WindowManagerService;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/WindowManagerService;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V
PLcom/android/server/wm/WindowManagerService;->onSystemUiStarted()V
PLcom/android/server/wm/WindowManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
PLcom/android/server/wm/WindowManagerService;->onUserSwitched()V
PLcom/android/server/wm/WindowManagerService;->openSession(Landroid/view/IWindowSessionCallback;)Landroid/view/IWindowSession;
PLcom/android/server/wm/WindowManagerService;->performBootTimeout()V
-HPLcom/android/server/wm/WindowManagerService;->performEnableScreen()V
-HPLcom/android/server/wm/WindowManagerService;->postWindowRemoveCleanupLocked(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/WindowManagerService;->queryHdrSupport()Z
-PLcom/android/server/wm/WindowManagerService;->queryWideColorGamutSupport()Z
+PLcom/android/server/wm/WindowManagerService;->performEnableScreen()V
PLcom/android/server/wm/WindowManagerService;->registerDecorViewGestureListener(Landroid/view/IDecorViewGestureListener;I)V
PLcom/android/server/wm/WindowManagerService;->registerDisplayWindowListener(Landroid/view/IDisplayWindowListener;)[I
PLcom/android/server/wm/WindowManagerService;->registerSystemGestureExclusionListener(Landroid/view/ISystemGestureExclusionListener;I)V
PLcom/android/server/wm/WindowManagerService;->registerWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)Z
-HPLcom/android/server/wm/WindowManagerService;->relayoutWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIIIILandroid/window/ClientWindowFrames;Landroid/util/MergedConfiguration;Landroid/view/SurfaceControl;Landroid/view/InsetsState;Landroid/view/InsetsSourceControl$Array;Landroid/os/Bundle;)I
-PLcom/android/server/wm/WindowManagerService;->removeClientToken(Lcom/android/server/wm/Session;Landroid/os/IBinder;)V
-PLcom/android/server/wm/WindowManagerService;->removeObsoleteTaskFiles(Landroid/util/ArraySet;[I)V
+PLcom/android/server/wm/WindowManagerService;->removeKeyguardLockedStateListener(Lcom/android/internal/policy/IKeyguardLockedStateListener;)V
+PLcom/android/server/wm/WindowManagerService;->removeWindowToken(Landroid/os/IBinder;I)V
PLcom/android/server/wm/WindowManagerService;->removeWindowToken(Landroid/os/IBinder;ZZI)V
-HPLcom/android/server/wm/WindowManagerService;->reportFocusChanged(Landroid/os/IBinder;Landroid/os/IBinder;)V
+PLcom/android/server/wm/WindowManagerService;->reportDecorViewGestureChanged(Lcom/android/server/wm/Session;Landroid/view/IWindow;Z)V
+PLcom/android/server/wm/WindowManagerService;->reportSystemGestureExclusionChanged(Lcom/android/server/wm/Session;Landroid/view/IWindow;Ljava/util/List;)V
+PLcom/android/server/wm/WindowManagerService;->requestAssistScreenshot(Landroid/app/IAssistDataReceiver;)Z
PLcom/android/server/wm/WindowManagerService;->requestTraversal()V
HSPLcom/android/server/wm/WindowManagerService;->resetPriorityAfterLockedSection()V
-PLcom/android/server/wm/WindowManagerService;->sanitizeFlagSlippery(ILjava/lang/String;II)I
-PLcom/android/server/wm/WindowManagerService;->sanitizeSpyWindow(ILjava/lang/String;II)I
-PLcom/android/server/wm/WindowManagerService;->sanitizeWindowType(Lcom/android/server/wm/Session;ILandroid/os/IBinder;I)I
+PLcom/android/server/wm/WindowManagerService;->sanitizeFlagSlippery(IIILjava/lang/String;)I
+PLcom/android/server/wm/WindowManagerService;->sanitizeInputFeatures(IILjava/lang/String;IZ)I
HPLcom/android/server/wm/WindowManagerService;->scheduleAnimationLocked()V
-PLcom/android/server/wm/WindowManagerService;->setAnimatorDurationScale(F)V
PLcom/android/server/wm/WindowManagerService;->setDisplayChangeWindowController(Landroid/view/IDisplayChangeWindowController;)V
PLcom/android/server/wm/WindowManagerService;->setDisplayWindowInsetsController(ILandroid/view/IDisplayWindowInsetsController;)V
PLcom/android/server/wm/WindowManagerService;->setEventDispatching(Z)V
PLcom/android/server/wm/WindowManagerService;->setFixedToUserRotation(II)V
-PLcom/android/server/wm/WindowManagerService;->setGlobalShadowSettings()V
-HPLcom/android/server/wm/WindowManagerService;->setInsetsWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V
-PLcom/android/server/wm/WindowManagerService;->showEmulatorDisplayOverlayIfNeeded()V
-PLcom/android/server/wm/WindowManagerService;->stopFreezingDisplayLocked()V
-PLcom/android/server/wm/WindowManagerService;->systemReady()V
-PLcom/android/server/wm/WindowManagerService;->tryStartExitingAnimation(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)V
+HPLcom/android/server/wm/WindowManagerService;->showToastIfBlockingScreenCapture(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/WindowManagerService;->stopFreezingDisplayLocked()V
+PLcom/android/server/wm/WindowManagerService;->systemReady$1()V
+PLcom/android/server/wm/WindowManagerService;->takeAssistScreenshot(Ljava/util/Set;)Landroid/window/ScreenCapture$ScreenshotHardwareBuffer;
+HPLcom/android/server/wm/WindowManagerService;->tryStartExitingAnimation(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)V
PLcom/android/server/wm/WindowManagerService;->unprivilegedAppCanCreateTokenWith(Lcom/android/server/wm/WindowState;IIILandroid/os/IBinder;Ljava/lang/String;)Z
-HPLcom/android/server/wm/WindowManagerService;->updateFocusedWindowLocked(IZ)Z
+PLcom/android/server/wm/WindowManagerService;->updateDisplayWindowRequestedVisibleTypes(IILandroid/view/inputmethod/ImeTracker$Token;)V
+HPLcom/android/server/wm/WindowManagerService;->updateFocusedWindowLocked(IZ)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/WindowManagerService;->updateInputChannel(Landroid/os/IBinder;IIILandroid/view/SurfaceControl;Ljava/lang/String;Landroid/view/InputApplicationHandle;IIIILandroid/graphics/Region;Landroid/os/IBinder;)V
-PLcom/android/server/wm/WindowManagerService;->updateNonSystemOverlayWindowsVisibilityIfNeeded(Lcom/android/server/wm/WindowState;Z)V
-PLcom/android/server/wm/WindowManagerService;->updateRotation(ZZ)V
-HPLcom/android/server/wm/WindowManagerService;->updateRotationUnchecked(ZZ)V
-HPLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/os/IBinder;Z)Lcom/android/server/wm/WindowState;
-HPLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/view/IWindow;Z)Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/WindowManagerService;->updateNonSystemOverlayWindowsVisibilityIfNeeded(Lcom/android/server/wm/WindowState;Z)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+PLcom/android/server/wm/WindowManagerService;->updateRotationUnchecked(ZZ)V
+HPLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/os/IBinder;Z)Lcom/android/server/wm/WindowState;+]Ljava/util/HashMap;Ljava/util/HashMap;
+HPLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/view/IWindow;)Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/WindowManagerShellCommand$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowManagerShellCommand;ILjava/util/ArrayList;)V
+PLcom/android/server/wm/WindowManagerShellCommand$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowManagerShellCommand;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerShellCommand;->onCommand(Ljava/lang/String;)I
+PLcom/android/server/wm/WindowManagerShellCommand;->runDumpVisibleWindowViews(Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/WindowManagerShellCommand;->runWmShellCommand(Ljava/io/PrintWriter;)I
HSPLcom/android/server/wm/WindowManagerThreadPriorityBooster;-><init>()V
HSPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->boost()V
HSPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->reset()V
-PLcom/android/server/wm/WindowManagerThreadPriorityBooster;->setAppTransitionRunning(Z)V
-PLcom/android/server/wm/WindowManagerThreadPriorityBooster;->updatePriorityLocked()V
-PLcom/android/server/wm/WindowOrganizerController$CallerInfo;-><init>()V
+PLcom/android/server/wm/WindowOrganizerController$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/wm/WindowOrganizerController;Lcom/android/server/wm/Transition;Landroid/window/WindowContainerTransaction;Lcom/android/server/wm/WindowOrganizerController$CallerInfo;Lcom/android/server/wm/Transition$ReadyCondition;Z)V
+PLcom/android/server/wm/WindowOrganizerController$$ExternalSyntheticLambda5;->onCollectStarted(Z)V
+HPLcom/android/server/wm/WindowOrganizerController$CallerInfo;-><init>()V
HSPLcom/android/server/wm/WindowOrganizerController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
-PLcom/android/server/wm/WindowOrganizerController;->applyTransaction(Landroid/window/WindowContainerTransaction;ILcom/android/server/wm/Transition;Lcom/android/server/wm/WindowOrganizerController$CallerInfo;)I
-PLcom/android/server/wm/WindowOrganizerController;->applyTransaction(Landroid/window/WindowContainerTransaction;ILcom/android/server/wm/Transition;Lcom/android/server/wm/WindowOrganizerController$CallerInfo;Lcom/android/server/wm/Transition;)I
-PLcom/android/server/wm/WindowOrganizerController;->finishTransition(Landroid/os/IBinder;Landroid/window/WindowContainerTransaction;)V
+PLcom/android/server/wm/WindowOrganizerController;->applyHierarchyOp(Landroid/window/WindowContainerTransaction$HierarchyOp;IILcom/android/server/wm/ActionChain;ZLcom/android/server/wm/WindowOrganizerController$CallerInfo;Landroid/os/IBinder;Landroid/window/ITaskFragmentOrganizer;)I
+PLcom/android/server/wm/WindowOrganizerController;->applyTransaction(Landroid/window/WindowContainerTransaction;)V
+HPLcom/android/server/wm/WindowOrganizerController;->applyTransaction(Landroid/window/WindowContainerTransaction;ILcom/android/server/wm/ActionChain;Lcom/android/server/wm/WindowOrganizerController$CallerInfo;)I
+PLcom/android/server/wm/WindowOrganizerController;->applyTransaction(Landroid/window/WindowContainerTransaction;ILcom/android/server/wm/ActionChain;Lcom/android/server/wm/WindowOrganizerController$CallerInfo;Z)I
+PLcom/android/server/wm/WindowOrganizerController;->configurationsAreEqualForOrganizer(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)Z
+HPLcom/android/server/wm/WindowOrganizerController;->finishTransition(Landroid/os/IBinder;Landroid/window/WindowContainerTransaction;)V
PLcom/android/server/wm/WindowOrganizerController;->getApplyToken()Landroid/os/IBinder;
PLcom/android/server/wm/WindowOrganizerController;->getDisplayAreaOrganizerController()Landroid/window/IDisplayAreaOrganizerController;
PLcom/android/server/wm/WindowOrganizerController;->getTaskOrganizerController()Landroid/window/ITaskOrganizerController;
-PLcom/android/server/wm/WindowOrganizerController;->getTransitionController()Lcom/android/server/wm/TransitionController;
PLcom/android/server/wm/WindowOrganizerController;->getTransitionMetricsReporter()Landroid/window/ITransitionMetricsReporter;
+PLcom/android/server/wm/WindowOrganizerController;->isLockTaskModeViolation(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;Z)Z
PLcom/android/server/wm/WindowOrganizerController;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
PLcom/android/server/wm/WindowOrganizerController;->registerTransitionPlayer(Landroid/window/ITransitionPlayer;)V
-PLcom/android/server/wm/WindowOrganizerController;->startTransition(ILandroid/os/IBinder;Landroid/window/WindowContainerTransaction;)Landroid/os/IBinder;
+PLcom/android/server/wm/WindowOrganizerController;->sanitizeAndApplyHierarchyOpForTask(Lcom/android/server/wm/Task;Landroid/window/WindowContainerTransaction$HierarchyOp;)I
+PLcom/android/server/wm/WindowOrganizerController;->setAllReadyIfNeeded(Lcom/android/server/wm/Transition;Landroid/window/WindowContainerTransaction;)V
+PLcom/android/server/wm/WindowOrganizerController;->startNewTransition(ILandroid/window/WindowContainerTransaction;)Landroid/os/IBinder;
+HPLcom/android/server/wm/WindowOrganizerController;->startTransition(ILandroid/os/IBinder;Landroid/window/WindowContainerTransaction;)Lcom/android/server/wm/Transition$Token;
PLcom/android/server/wm/WindowOrganizerController;->startTransition(Landroid/os/IBinder;Landroid/window/WindowContainerTransaction;)V
PLcom/android/server/wm/WindowOrientationListener$AccelSensorJudge;-><init>(Lcom/android/server/wm/WindowOrientationListener;Landroid/content/Context;)V
-PLcom/android/server/wm/WindowOrientationListener$OrientationJudge;-><init>(Lcom/android/server/wm/WindowOrientationListener;)V
+PLcom/android/server/wm/WindowOrientationListener$AccelSensorJudge;->dumpLocked(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/wm/WindowOrientationListener$AccelSensorJudge;->nextTiltHistoryIndexLocked(I)I
+PLcom/android/server/wm/WindowOrientationListener$AccelSensorJudge;->onTouchEndLocked(J)V
+PLcom/android/server/wm/WindowOrientationListener$AccelSensorJudge;->onTouchStartLocked()V
PLcom/android/server/wm/WindowOrientationListener;-><clinit>()V
PLcom/android/server/wm/WindowOrientationListener;-><init>(Landroid/content/Context;Landroid/os/Handler;I)V
-PLcom/android/server/wm/WindowOrientationListener;-><init>(Landroid/content/Context;Landroid/os/Handler;II)V
-PLcom/android/server/wm/WindowOrientationListener;->canDetectOrientation()Z
-PLcom/android/server/wm/WindowOrientationListener;->disable()V
-PLcom/android/server/wm/WindowOrientationListener;->getHandler()Landroid/os/Handler;
PLcom/android/server/wm/WindowOrientationListener;->getProposedRotation()I
-PLcom/android/server/wm/WindowOrientationListener;->setCurrentRotation(I)V
-PLcom/android/server/wm/WindowOrientationListener;->shouldStayEnabledWhileDreaming()Z
-PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda10;-><init>()V
-PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda10;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda1;-><init>()V
-PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/WindowProcessController;Z)V
-PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda2;->run()V
-PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda4;-><init>()V
-PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda7;-><init>()V
-PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda7;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
-HPLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda8;->test(I)Z
-PLcom/android/server/wm/WindowProcessController;->$r8$lambda$MrxcMrQULT9udb0_Bvq5Va6C48k(Lcom/android/server/wm/WindowProcessController;Z)V
-HPLcom/android/server/wm/WindowProcessController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;IILjava/lang/Object;Lcom/android/server/wm/WindowProcessListener;)V
-PLcom/android/server/wm/WindowProcessController;->addActivityIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/WindowProcessController;->addAnimatingReason(I)V
-HPLcom/android/server/wm/WindowProcessController;->addBoundClientUid(ILjava/lang/String;J)V
-PLcom/android/server/wm/WindowProcessController;->addOrUpdateBackgroundStartPrivileges(Landroid/os/Binder;Landroid/app/BackgroundStartPrivileges;)V
-HPLcom/android/server/wm/WindowProcessController;->addPackage(Ljava/lang/String;)V
-PLcom/android/server/wm/WindowProcessController;->addRecentTask(Lcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda12;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/WindowProcessController;Z)V
+HPLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda1;->run()V
+HPLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda4;-><init>(I)V
+HPLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda5;-><init>(ILcom/android/server/wm/WindowProcessController;)V
+PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda5;->run()V
+PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda7;-><init>(I)V
+PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda7;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowProcessController;-><clinit>()V
+HPLcom/android/server/wm/WindowProcessController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;IILcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/wm/WindowProcessController;->addBoundClientUid(ILjava/lang/String;J)V+]Landroid/util/IntArray;Landroid/util/IntArray;
PLcom/android/server/wm/WindowProcessController;->addToPendingTop()V
-PLcom/android/server/wm/WindowProcessController;->appEarlyNotResponding(Ljava/lang/String;Ljava/lang/Runnable;)V
-PLcom/android/server/wm/WindowProcessController;->appNotResponding(Ljava/lang/String;Ljava/lang/Runnable;Ljava/lang/Runnable;)Z
-HPLcom/android/server/wm/WindowProcessController;->areBackgroundActivityStartsAllowed(IZ)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;
-HPLcom/android/server/wm/WindowProcessController;->areBackgroundFgsStartsAllowed()Z
-HPLcom/android/server/wm/WindowProcessController;->clearActivities()V
-HPLcom/android/server/wm/WindowProcessController;->clearBoundClientUids()V
-PLcom/android/server/wm/WindowProcessController;->clearPackageList()V
-HPLcom/android/server/wm/WindowProcessController;->clearRecentTasks()V
-HPLcom/android/server/wm/WindowProcessController;->computeOomAdjFromActivities(Lcom/android/server/wm/WindowProcessController$ComputeOomAdjCallback;)I
-HPLcom/android/server/wm/WindowProcessController;->computeProcessActivityState()V
+HPLcom/android/server/wm/WindowProcessController;->applyConfigGenderOverride(Landroid/content/res/Configuration;ILcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionManagerInternalImpl;I)Z
+HPLcom/android/server/wm/WindowProcessController;->areBackgroundActivityStartsAllowed(ILcom/android/server/wm/BackgroundLaunchProcessController$BalCheckConfiguration;)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Landroid/util/IntArray;Landroid/util/IntArray;]Ljava/util/List;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WindowProcessController;->computeProcessActivityState()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/concurrent/Executor;Landroid/os/HandlerExecutor;
PLcom/android/server/wm/WindowProcessController;->createProfilerInfoIfNeeded()Landroid/app/ProfilerInfo;
-PLcom/android/server/wm/WindowProcessController;->destroy()V
HPLcom/android/server/wm/WindowProcessController;->dispatchConfiguration(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/WindowProcessController;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
PLcom/android/server/wm/WindowProcessController;->getChildCount()I
-PLcom/android/server/wm/WindowProcessController;->getCpuTime()J
-PLcom/android/server/wm/WindowProcessController;->getCurrentAdj()I
-PLcom/android/server/wm/WindowProcessController;->getCurrentProcState()I
PLcom/android/server/wm/WindowProcessController;->getInputDispatchingTimeoutMillis()J
-PLcom/android/server/wm/WindowProcessController;->getPackageList()Ljava/util/List;
-HPLcom/android/server/wm/WindowProcessController;->getParent()Lcom/android/server/wm/ConfigurationContainer;
-PLcom/android/server/wm/WindowProcessController;->getPid()I
-PLcom/android/server/wm/WindowProcessController;->getReportedProcState()I
-PLcom/android/server/wm/WindowProcessController;->getRequiredAbi()Ljava/lang/String;
-PLcom/android/server/wm/WindowProcessController;->getThread()Landroid/app/IApplicationThread;
-HPLcom/android/server/wm/WindowProcessController;->getTopActivityDeviceId()I
+PLcom/android/server/wm/WindowProcessController;->getParent()Lcom/android/server/wm/ConfigurationContainer;
PLcom/android/server/wm/WindowProcessController;->getTopActivityDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
-HPLcom/android/server/wm/WindowProcessController;->getTopNonFinishingActivity()Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/WindowProcessController;->handleAppDied()Z
-HPLcom/android/server/wm/WindowProcessController;->hasActivities()Z
-HPLcom/android/server/wm/WindowProcessController;->hasActivitiesOrRecentTasks()Z
-HPLcom/android/server/wm/WindowProcessController;->hasActivityInVisibleTask()Z
-PLcom/android/server/wm/WindowProcessController;->hasEmbeddedWindow()Z
-PLcom/android/server/wm/WindowProcessController;->hasEverLaunchedActivity()Z
-HPLcom/android/server/wm/WindowProcessController;->hasRecentTasks()Z
+HPLcom/android/server/wm/WindowProcessController;->handleAppDied$1()Z
+PLcom/android/server/wm/WindowProcessController;->hasActivityInVisibleTask()Z
PLcom/android/server/wm/WindowProcessController;->hasResumedActivity()Z
-PLcom/android/server/wm/WindowProcessController;->hasStartedActivity(Lcom/android/server/wm/ActivityRecord;)Z
-HPLcom/android/server/wm/WindowProcessController;->hasThread()Z
-HPLcom/android/server/wm/WindowProcessController;->hasVisibleActivities()Z
-HPLcom/android/server/wm/WindowProcessController;->isFactoryTestProcess()Z
-HPLcom/android/server/wm/WindowProcessController;->isHeavyWeightProcess()Z
-HPLcom/android/server/wm/WindowProcessController;->isHomeProcess()Z
-PLcom/android/server/wm/WindowProcessController;->isInstrumenting()Z
-PLcom/android/server/wm/WindowProcessController;->isInterestingToUser()Z
-HPLcom/android/server/wm/WindowProcessController;->isPreviousProcess()Z
-HPLcom/android/server/wm/WindowProcessController;->isRemoved()Z
-PLcom/android/server/wm/WindowProcessController;->isUsingWrapper()Z
-PLcom/android/server/wm/WindowProcessController;->lambda$setAnimating$3(Z)V
+PLcom/android/server/wm/WindowProcessController;->hasThread()Z
PLcom/android/server/wm/WindowProcessController;->onConfigurationChangePreScheduled(Landroid/content/res/Configuration;)V
HPLcom/android/server/wm/WindowProcessController;->onConfigurationChanged(Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/WindowProcessController;->onMergedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
-HPLcom/android/server/wm/WindowProcessController;->onServiceStarted(Landroid/content/pm/ServiceInfo;)V
-PLcom/android/server/wm/WindowProcessController;->onStartActivity(ILandroid/content/pm/ActivityInfo;)V
PLcom/android/server/wm/WindowProcessController;->onTopProcChanged()V
-PLcom/android/server/wm/WindowProcessController;->pauseConfigurationDispatch()V
-PLcom/android/server/wm/WindowProcessController;->postPendingUiCleanMsg(Z)V
-PLcom/android/server/wm/WindowProcessController;->prepareConfigurationForLaunchingActivity()Landroid/content/res/Configuration;
-PLcom/android/server/wm/WindowProcessController;->prepareOomAdjustment()V
PLcom/android/server/wm/WindowProcessController;->registerActivityConfigurationListener(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/WindowProcessController;->registerDisplayAreaConfigurationListener(Lcom/android/server/wm/DisplayArea;)V
-HPLcom/android/server/wm/WindowProcessController;->registeredForDisplayAreaConfigChanges()Z
-PLcom/android/server/wm/WindowProcessController;->removeAnimatingReason(I)V
-HPLcom/android/server/wm/WindowProcessController;->removeBackgroundStartPrivileges(Landroid/os/Binder;)V
+HPLcom/android/server/wm/WindowProcessController;->removeActivity(Lcom/android/server/wm/ActivityRecord;Z)V
+HPLcom/android/server/wm/WindowProcessController;->removeAnimatingReason(I)V
HPLcom/android/server/wm/WindowProcessController;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V
PLcom/android/server/wm/WindowProcessController;->resumeConfigurationDispatch()Z
-PLcom/android/server/wm/WindowProcessController;->scheduleClientTransactionItem(Landroid/app/IApplicationThread;Landroid/app/servertransaction/ClientTransactionItem;)V
+HPLcom/android/server/wm/WindowProcessController;->scheduleClientTransactionItem(Landroid/app/IApplicationThread;Landroid/app/servertransaction/ClientTransactionItem;)V
PLcom/android/server/wm/WindowProcessController;->scheduleClientTransactionItem(Landroid/app/servertransaction/ClientTransactionItem;)V
-PLcom/android/server/wm/WindowProcessController;->setAnimating(Z)V
-PLcom/android/server/wm/WindowProcessController;->setCrashing(Z)V
-HPLcom/android/server/wm/WindowProcessController;->setCurrentAdj(I)V
-HPLcom/android/server/wm/WindowProcessController;->setCurrentProcState(I)V
-HPLcom/android/server/wm/WindowProcessController;->setCurrentSchedulingGroup(I)V
-HPLcom/android/server/wm/WindowProcessController;->setDebugging(Z)V
-HPLcom/android/server/wm/WindowProcessController;->setFgInteractionTime(J)V
-HPLcom/android/server/wm/WindowProcessController;->setHasClientActivities(Z)V
-PLcom/android/server/wm/WindowProcessController;->setHasForegroundServices(Z)V
-PLcom/android/server/wm/WindowProcessController;->setHasOverlayUi(Z)V
-PLcom/android/server/wm/WindowProcessController;->setInstrumenting(ZIZ)V
-HPLcom/android/server/wm/WindowProcessController;->setInteractionEventTime(J)V
-PLcom/android/server/wm/WindowProcessController;->setLastActivityLaunchTime(Lcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/WindowProcessController;->setLastReportedConfiguration(Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/WindowProcessController;->setNotResponding(Z)V
-HPLcom/android/server/wm/WindowProcessController;->setPendingUiClean(Z)V
-HPLcom/android/server/wm/WindowProcessController;->setPerceptible(Z)V
-PLcom/android/server/wm/WindowProcessController;->setPersistent(Z)V
-HPLcom/android/server/wm/WindowProcessController;->setPid(I)V
-HPLcom/android/server/wm/WindowProcessController;->setReportedProcState(I)V
-HPLcom/android/server/wm/WindowProcessController;->setRequiredAbi(Ljava/lang/String;)V
-PLcom/android/server/wm/WindowProcessController;->setRunningRemoteAnimation(Z)V
+PLcom/android/server/wm/WindowProcessController;->setLastReportedConfiguration(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/WindowProcessController;->setOverrideGender(Landroid/content/res/Configuration;I)Z
HPLcom/android/server/wm/WindowProcessController;->setThread(Landroid/app/IApplicationThread;)V
-HPLcom/android/server/wm/WindowProcessController;->setUsingWrapper(Z)V
-HPLcom/android/server/wm/WindowProcessController;->setWhenUnimportant(J)V
-PLcom/android/server/wm/WindowProcessController;->shouldSetProfileProc()Z
-PLcom/android/server/wm/WindowProcessController;->unregisterActivityConfigurationListener()V
-HPLcom/android/server/wm/WindowProcessController;->unregisterConfigurationListeners()V
+PLcom/android/server/wm/WindowProcessController;->toString()Ljava/lang/String;
+PLcom/android/server/wm/WindowProcessController;->unregisterConfigurationListeners()V
PLcom/android/server/wm/WindowProcessController;->unregisterDisplayAreaConfigurationListener()V
HPLcom/android/server/wm/WindowProcessController;->updateActivityConfigurationListener()V
-PLcom/android/server/wm/WindowProcessController;->updateProcessInfo(ZZZZ)V
-PLcom/android/server/wm/WindowProcessController;->updateRapidActivityLaunch(Lcom/android/server/wm/ActivityRecord;JJ)V
-PLcom/android/server/wm/WindowProcessController;->updateServiceConnectionActivities()V
-HPLcom/android/server/wm/WindowProcessController;->updateTopResumingActivityInProcessIfNeeded(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/WindowProcessController;->updateAssetConfiguration(I)V
+HPLcom/android/server/wm/WindowProcessController;->updateProcessInfo(ZZZZ)V
HSPLcom/android/server/wm/WindowProcessControllerMap;-><init>()V
-PLcom/android/server/wm/WindowProcessControllerMap;->getPidMap()Landroid/util/SparseArray;
-HPLcom/android/server/wm/WindowProcessControllerMap;->getProcess(I)Lcom/android/server/wm/WindowProcessController;
-HPLcom/android/server/wm/WindowProcessControllerMap;->put(ILcom/android/server/wm/WindowProcessController;)V
-HPLcom/android/server/wm/WindowProcessControllerMap;->remove(I)V
-HPLcom/android/server/wm/WindowProcessControllerMap;->removeProcessFromUidMap(Lcom/android/server/wm/WindowProcessController;)V
-PLcom/android/server/wm/WindowState$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/WindowState$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/WindowState$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/wm/WindowState$$ExternalSyntheticLambda2;-><init>(Landroid/view/InsetsState;Landroid/util/ArraySet;Landroid/util/SparseArray;)V
-HPLcom/android/server/wm/WindowState$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/WindowState$$ExternalSyntheticLambda3;-><init>()V
+PLcom/android/server/wm/WindowProcessControllerMap;->getProcess(I)Lcom/android/server/wm/WindowProcessController;
+PLcom/android/server/wm/WindowProcessControllerMap;->put(ILcom/android/server/wm/WindowProcessController;)V
+PLcom/android/server/wm/WindowProcessControllerMap;->removeProcessFromUidMap(Lcom/android/server/wm/WindowProcessController;)V
+PLcom/android/server/wm/WindowState$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowState;I)V
+HPLcom/android/server/wm/WindowState$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowState$$ExternalSyntheticLambda2;-><init>(Landroid/view/InsetsState;Landroid/util/SparseArray;Landroid/util/ArraySet;)V
+HPLcom/android/server/wm/WindowState$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsState;Landroid/view/InsetsState;
PLcom/android/server/wm/WindowState$$ExternalSyntheticLambda3;->apply(Ljava/lang/Object;)Z
-PLcom/android/server/wm/WindowState$1;-><init>()V
-PLcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;-><init>()V
-HPLcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;->reset()V
PLcom/android/server/wm/WindowState$WindowId;-><init>(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/WindowState$WindowId;-><init>(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState$WindowId-IA;)V
-PLcom/android/server/wm/WindowState;->$r8$lambda$ZpBAxyV_EYA5etsArmi-qkwlhf0(Landroid/view/InsetsState;Landroid/util/ArraySet;Landroid/util/SparseArray;Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/WindowState;->$r8$lambda$fef2KYzxiyPlqMk0JTPv9yWQXp0(Lcom/android/server/wm/WindowState;Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/WindowState;->$r8$lambda$qWwwoLu0LTUue2Ex5efd6I7CVfs(Lcom/android/server/wm/WindowState;)Z
PLcom/android/server/wm/WindowState;-><clinit>()V
HPLcom/android/server/wm/WindowState;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/Session;Landroid/view/IWindow;Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowState;ILandroid/view/WindowManager$LayoutParams;IIIZ)V
-HPLcom/android/server/wm/WindowState;->adjustRegionInFreefromWindowMode(Landroid/graphics/Rect;)V
-PLcom/android/server/wm/WindowState;->adjustStartingWindowFlags()V
+PLcom/android/server/wm/WindowState;->adjustDims()V
HPLcom/android/server/wm/WindowState;->applyDims()V
-HPLcom/android/server/wm/WindowState;->applyImeWindowsIfNeeded(Lcom/android/internal/util/ToBooleanFunction;Z)Z
-HPLcom/android/server/wm/WindowState;->applyInOrderWithImeWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+HPLcom/android/server/wm/WindowState;->applyInOrderWithImeWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z+]Lcom/android/internal/util/ToBooleanFunction;megamorphic_types
HPLcom/android/server/wm/WindowState;->areAppWindowBoundsLetterboxed()Z
-PLcom/android/server/wm/WindowState;->asWindowState()Lcom/android/server/wm/WindowState;
-HPLcom/android/server/wm/WindowState;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V
-HPLcom/android/server/wm/WindowState;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V
-HPLcom/android/server/wm/WindowState;->canAddInternalSystemWindow()Z
-HPLcom/android/server/wm/WindowState;->canAffectSystemUiFlags()Z
+HPLcom/android/server/wm/WindowState;->asWindowState()Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/WindowState;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WindowState;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
HPLcom/android/server/wm/WindowState;->canBeHiddenByKeyguard()Z
HPLcom/android/server/wm/WindowState;->canBeImeTarget()Z
-HPLcom/android/server/wm/WindowState;->canReceiveKeys()Z
+PLcom/android/server/wm/WindowState;->canReceiveKeys()Z
HPLcom/android/server/wm/WindowState;->canReceiveKeys(Z)Z
HPLcom/android/server/wm/WindowState;->canReceiveTouchInput()Z
PLcom/android/server/wm/WindowState;->canScreenshotIme()Z
PLcom/android/server/wm/WindowState;->canShowWhenLocked()Z
-PLcom/android/server/wm/WindowState;->cancelAndRedraw()Z
-PLcom/android/server/wm/WindowState;->checkPolicyVisibilityChange()V
-PLcom/android/server/wm/WindowState;->cleanupAnimatingExitWindow()V
-PLcom/android/server/wm/WindowState;->clearFrozenInsetsState()V
PLcom/android/server/wm/WindowState;->clearPolicyVisibilityFlag(I)V
-PLcom/android/server/wm/WindowState;->commitFinishDrawing(Landroid/view/SurfaceControl$Transaction;)Z
+HPLcom/android/server/wm/WindowState;->commitFinishDrawing(Landroid/view/SurfaceControl$Transaction;)Z
HPLcom/android/server/wm/WindowState;->computeDragResizing()Z
PLcom/android/server/wm/WindowState;->consumeInsetsChange()V
-HPLcom/android/server/wm/WindowState;->cropRegionToRootTaskBoundsIfNeeded(Landroid/graphics/Region;)V
-PLcom/android/server/wm/WindowState;->destroySurface(ZZ)Z
-PLcom/android/server/wm/WindowState;->destroySurfaceUnchecked()V
-PLcom/android/server/wm/WindowState;->disposeInputChannel()V
-PLcom/android/server/wm/WindowState;->executeDrawHandlers(Landroid/view/SurfaceControl$Transaction;I)Z
-HPLcom/android/server/wm/WindowState;->fillClientWindowFramesAndConfiguration(Landroid/window/ClientWindowFrames;Landroid/util/MergedConfiguration;ZZ)V
-HPLcom/android/server/wm/WindowState;->fillsDisplay()Z
+HPLcom/android/server/wm/WindowState;->cropRegionToRootTaskBoundsIfNeeded(Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;
+HPLcom/android/server/wm/WindowState;->destroySurface(ZZ)Z
+HPLcom/android/server/wm/WindowState;->destroySurfaceUnchecked()V
+HPLcom/android/server/wm/WindowState;->disposeInputChannel()V
+HPLcom/android/server/wm/WindowState;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+PLcom/android/server/wm/WindowState;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
+PLcom/android/server/wm/WindowState;->dumpProto(ILandroid/util/proto/ProtoOutputStream;)V
+HPLcom/android/server/wm/WindowState;->fillClientWindowFramesAndConfiguration(Landroid/window/ClientWindowFrames;Landroid/util/MergedConfiguration;Landroid/window/ActivityWindowInfo;ZZ)V+]Landroid/util/MergedConfiguration;Landroid/util/MergedConfiguration;]Landroid/window/ClientWindowFrames;Landroid/window/ClientWindowFrames;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
+HPLcom/android/server/wm/WindowState;->fillInsetsSourceControls(Landroid/view/InsetsSourceControl$Array;Z)V+]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array;
+HPLcom/android/server/wm/WindowState;->fillInsetsState(Landroid/view/InsetsState;Z)V+]Landroid/view/InsetsState;Landroid/view/InsetsState;
PLcom/android/server/wm/WindowState;->fillsParent()Z
HPLcom/android/server/wm/WindowState;->finishDrawing(Landroid/view/SurfaceControl$Transaction;I)Z
PLcom/android/server/wm/WindowState;->finishSync(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;Z)V
-HPLcom/android/server/wm/WindowState;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
-PLcom/android/server/wm/WindowState;->freezeInsetsState()V
+HPLcom/android/server/wm/WindowState;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList;
PLcom/android/server/wm/WindowState;->getActivityRecord()Lcom/android/server/wm/ActivityRecord;
PLcom/android/server/wm/WindowState;->getAnimationLeashParent()Landroid/view/SurfaceControl;
-HPLcom/android/server/wm/WindowState;->getAttrs()Landroid/view/WindowManager$LayoutParams;
-HPLcom/android/server/wm/WindowState;->getBaseType()I
-HPLcom/android/server/wm/WindowState;->getBounds()Landroid/graphics/Rect;
-PLcom/android/server/wm/WindowState;->getCompatInsetsState()Landroid/view/InsetsState;
-HPLcom/android/server/wm/WindowState;->getCompatScaleForClient()F
+PLcom/android/server/wm/WindowState;->getAttrs()Landroid/view/WindowManager$LayoutParams;
+HPLcom/android/server/wm/WindowState;->getBounds()Landroid/graphics/Rect;+]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
HPLcom/android/server/wm/WindowState;->getConfiguration()Landroid/content/res/Configuration;
-PLcom/android/server/wm/WindowState;->getDisableFlags()I
-HPLcom/android/server/wm/WindowState;->getDisplayFrames(Lcom/android/server/wm/DisplayFrames;)Lcom/android/server/wm/DisplayFrames;
-PLcom/android/server/wm/WindowState;->getDisplayId()I
-HPLcom/android/server/wm/WindowState;->getDisplayInfo()Landroid/view/DisplayInfo;
-PLcom/android/server/wm/WindowState;->getDrawnStateEvaluated()Z
-HPLcom/android/server/wm/WindowState;->getEffectiveTouchableRegion(Landroid/graphics/Region;)V
-HPLcom/android/server/wm/WindowState;->getFrame()Landroid/graphics/Rect;
+PLcom/android/server/wm/WindowState;->getDimController()Lcom/android/server/wm/Dimmer;
+HPLcom/android/server/wm/WindowState;->getDisplayId()I
+HPLcom/android/server/wm/WindowState;->getEffectiveTouchableRegion(Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;
PLcom/android/server/wm/WindowState;->getImeControlTarget()Lcom/android/server/wm/InsetsControlTarget;
-HPLcom/android/server/wm/WindowState;->getImeInputTarget()Lcom/android/server/wm/WindowState;
-HPLcom/android/server/wm/WindowState;->getInputDispatchingTimeoutMillis()J
-HPLcom/android/server/wm/WindowState;->getInsetsState()Landroid/view/InsetsState;
-HPLcom/android/server/wm/WindowState;->getInsetsState(Z)Landroid/view/InsetsState;
-HPLcom/android/server/wm/WindowState;->getKeepClearAreas(Ljava/util/Collection;Ljava/util/Collection;Landroid/graphics/Matrix;[F)V
-HPLcom/android/server/wm/WindowState;->getKeyInterceptionInfo()Lcom/android/internal/policy/KeyInterceptionInfo;
-PLcom/android/server/wm/WindowState;->getLastReportedConfiguration()Landroid/content/res/Configuration;
-HPLcom/android/server/wm/WindowState;->getMergedInsetsState()Landroid/view/InsetsState;
+HPLcom/android/server/wm/WindowState;->getInsetsState(Z)Landroid/view/InsetsState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;
+HPLcom/android/server/wm/WindowState;->getInsetsStateWithVisibilityOverride()Landroid/view/InsetsState;
HPLcom/android/server/wm/WindowState;->getName()Ljava/lang/String;
HPLcom/android/server/wm/WindowState;->getOrientationChanging()Z
-HPLcom/android/server/wm/WindowState;->getOwningPackage()Ljava/lang/String;
-HPLcom/android/server/wm/WindowState;->getOwningUid()I
-PLcom/android/server/wm/WindowState;->getParentFrame()Landroid/graphics/Rect;
+PLcom/android/server/wm/WindowState;->getOwningPackage()Ljava/lang/String;
+PLcom/android/server/wm/WindowState;->getOwningUid()I
HPLcom/android/server/wm/WindowState;->getParentWindow()Lcom/android/server/wm/WindowState;
-HPLcom/android/server/wm/WindowState;->getProcessGlobalConfiguration()Landroid/content/res/Configuration;
-HPLcom/android/server/wm/WindowState;->getRectsInScreenSpace(Ljava/util/List;Landroid/graphics/Matrix;[F)Ljava/util/List;
-PLcom/android/server/wm/WindowState;->getRelativeFrame()Landroid/graphics/Rect;
-HPLcom/android/server/wm/WindowState;->getRequestedVisibleTypes()I
-PLcom/android/server/wm/WindowState;->getRootTask()Lcom/android/server/wm/Task;
-PLcom/android/server/wm/WindowState;->getSession()Landroid/view/SurfaceSession;
-HPLcom/android/server/wm/WindowState;->getSurfaceTouchableRegion(Landroid/graphics/Region;Landroid/view/WindowManager$LayoutParams;)V
-PLcom/android/server/wm/WindowState;->getSyncMethod()I
-PLcom/android/server/wm/WindowState;->getSystemGestureExclusion()Ljava/util/List;
+PLcom/android/server/wm/WindowState;->getProtoFieldId()J
+HPLcom/android/server/wm/WindowState;->getRectsInScreenSpace(Ljava/util/List;Landroid/graphics/Matrix;[F)Ljava/util/List;+]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/wm/WindowState;->getTask()Lcom/android/server/wm/Task;
-HPLcom/android/server/wm/WindowState;->getTaskFragment()Lcom/android/server/wm/TaskFragment;
-HPLcom/android/server/wm/WindowState;->getTopParentWindow()Lcom/android/server/wm/WindowState;
-HPLcom/android/server/wm/WindowState;->getTouchOcclusionMode()I
-HPLcom/android/server/wm/WindowState;->getTouchableRegion(Landroid/graphics/Region;)V
-HPLcom/android/server/wm/WindowState;->getTransformationMatrix([FLandroid/graphics/Matrix;)V
+HPLcom/android/server/wm/WindowState;->getTouchableRegion(Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;
+HPLcom/android/server/wm/WindowState;->getTransformationMatrix([FLandroid/graphics/Matrix;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
PLcom/android/server/wm/WindowState;->getWindow()Lcom/android/server/wm/WindowState;
-HPLcom/android/server/wm/WindowState;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/WindowState;->getWindowFrames()Lcom/android/server/wm/WindowFrames;
-PLcom/android/server/wm/WindowState;->getWindowInfo()Landroid/view/WindowInfo;
+HPLcom/android/server/wm/WindowState;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Predicate;megamorphic_types
PLcom/android/server/wm/WindowState;->getWindowState()Lcom/android/server/wm/WindowState;
-HPLcom/android/server/wm/WindowState;->getWindowTag()Ljava/lang/CharSequence;
+HPLcom/android/server/wm/WindowState;->getWindowTag()Ljava/lang/CharSequence;+]Ljava/lang/CharSequence;Ljava/lang/String;
PLcom/android/server/wm/WindowState;->getWindowToken()Landroid/os/IBinder;
-HPLcom/android/server/wm/WindowState;->getWindowType()I
HPLcom/android/server/wm/WindowState;->handleCompleteDeferredRemoval()Z
-HPLcom/android/server/wm/WindowState;->handleWindowMovedIfNeeded()V
-PLcom/android/server/wm/WindowState;->hasAppShownWindows()Z
+PLcom/android/server/wm/WindowState;->handleTapOutsideFocusInsideSelf()V
HPLcom/android/server/wm/WindowState;->hasCompatScale()Z
HPLcom/android/server/wm/WindowState;->hasMoved()Z
HPLcom/android/server/wm/WindowState;->hasWallpaper()Z
-PLcom/android/server/wm/WindowState;->hasWallpaperForLetterboxBackground()Z
-PLcom/android/server/wm/WindowState;->hide(ZZ)Z
-PLcom/android/server/wm/WindowState;->hideNonSystemOverlayWindowsWhenVisible()Z
-PLcom/android/server/wm/WindowState;->inRelaunchingActivity()Z
+PLcom/android/server/wm/WindowState;->hide(ZZ)V
PLcom/android/server/wm/WindowState;->initAppOpsState()V
-PLcom/android/server/wm/WindowState;->initExclusionRestrictions()V
HPLcom/android/server/wm/WindowState;->isAnimationRunningSelfOrParent()Z
-HPLcom/android/server/wm/WindowState;->isChildWindow()Z
-HPLcom/android/server/wm/WindowState;->isDimming()Z
+PLcom/android/server/wm/WindowState;->isChildWindow()Z
HPLcom/android/server/wm/WindowState;->isDisplayed()Z
-HPLcom/android/server/wm/WindowState;->isDragResizeChanged()Z
-PLcom/android/server/wm/WindowState;->isDrawFinishedLw()Z
HPLcom/android/server/wm/WindowState;->isDrawn()Z
-HPLcom/android/server/wm/WindowState;->isDreamWindow()Z
-HPLcom/android/server/wm/WindowState;->isFocused()Z
-HPLcom/android/server/wm/WindowState;->isFullyTransparent()Z
+PLcom/android/server/wm/WindowState;->isFocused()Z
HPLcom/android/server/wm/WindowState;->isGoneForLayout()Z
HPLcom/android/server/wm/WindowState;->isImeLayeringTarget()Z
-PLcom/android/server/wm/WindowState;->isImeOverlayLayeringTarget()Z
-HPLcom/android/server/wm/WindowState;->isImplicitlyExcludingAllSystemGestures()Z
+HPLcom/android/server/wm/WindowState;->isImeOverlayLayeringTarget()Z
PLcom/android/server/wm/WindowState;->isInputMethodClientFocus(II)Z
-PLcom/android/server/wm/WindowState;->isInteresting()Z
-PLcom/android/server/wm/WindowState;->isLaidOut()Z
-PLcom/android/server/wm/WindowState;->isLastConfigReportedToClient()Z
-PLcom/android/server/wm/WindowState;->isLegacyPolicyVisibility()Z
HPLcom/android/server/wm/WindowState;->isLetterboxedForDisplayCutout()Z
-HPLcom/android/server/wm/WindowState;->isObscuringDisplay()Z
-HPLcom/android/server/wm/WindowState;->isOnScreen()Z
-HPLcom/android/server/wm/WindowState;->isOpaqueDrawn()Z
-HPLcom/android/server/wm/WindowState;->isParentWindowGoneForLayout()Z
-HPLcom/android/server/wm/WindowState;->isParentWindowHidden()Z
+HPLcom/android/server/wm/WindowState;->isOnScreen()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
+PLcom/android/server/wm/WindowState;->isParentWindowHidden()Z
HPLcom/android/server/wm/WindowState;->isReadyForDisplay()Z
HPLcom/android/server/wm/WindowState;->isRequestedVisible(I)Z
PLcom/android/server/wm/WindowState;->isRtl()Z
-PLcom/android/server/wm/WindowState;->isSecureLocked()Z
+HPLcom/android/server/wm/WindowState;->isSecureLocked()Z
HPLcom/android/server/wm/WindowState;->isSelfAnimating(II)Z
PLcom/android/server/wm/WindowState;->isSelfOrAncestorWindowAnimatingExit()Z
-HPLcom/android/server/wm/WindowState;->isStartingWindowAssociatedToTask()Z
-PLcom/android/server/wm/WindowState;->isSyncFinished(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)Z
-PLcom/android/server/wm/WindowState;->isTrustedOverlay()Z
+PLcom/android/server/wm/WindowState;->isStartingWindowAssociatedToTask()Z
+HPLcom/android/server/wm/WindowState;->isSyncFinished(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)Z
+HPLcom/android/server/wm/WindowState;->isTrustedOverlay()Z
HPLcom/android/server/wm/WindowState;->isVisible()Z
-HPLcom/android/server/wm/WindowState;->isVisibleByPolicy()Z
-HPLcom/android/server/wm/WindowState;->isVisibleByPolicyOrInsets()Z
-PLcom/android/server/wm/WindowState;->isVisibleNow()Z
-HPLcom/android/server/wm/WindowState;->isVisibleRequested()Z
+PLcom/android/server/wm/WindowState;->isVisibleByPolicy()Z
+HPLcom/android/server/wm/WindowState;->isVisibleNow()Z
+HPLcom/android/server/wm/WindowState;->isVisibleRequested()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
HPLcom/android/server/wm/WindowState;->isVisibleRequestedOrAdding()Z
HPLcom/android/server/wm/WindowState;->isWindowTrustedOverlay()Z
-PLcom/android/server/wm/WindowState;->lambda$new$1(Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/WindowState;->lambda$removeIfPossible$2(Lcom/android/server/wm/WindowState;)Z
-HPLcom/android/server/wm/WindowState;->lambda$updateAboveInsetsState$3(Landroid/view/InsetsState;Landroid/util/ArraySet;Landroid/util/SparseArray;Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/WindowState;->logExclusionRestrictions(I)V
-PLcom/android/server/wm/WindowState;->logPerformShow(Ljava/lang/String;)V
-PLcom/android/server/wm/WindowState;->markRedrawForSyncReported()V
-PLcom/android/server/wm/WindowState;->matchesDisplayAreaBounds()Z
+HPLcom/android/server/wm/WindowState;->logExclusionRestrictions(I)V
HPLcom/android/server/wm/WindowState;->mightAffectAllDrawn()Z
-HPLcom/android/server/wm/WindowState;->needsRelativeLayeringToIme()Z
HPLcom/android/server/wm/WindowState;->needsZBoost()Z
-PLcom/android/server/wm/WindowState;->notifyInsetsControlChanged(I)V
-PLcom/android/server/wm/WindowState;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
+HPLcom/android/server/wm/WindowState;->notifyInsetsChanged()V
+HPLcom/android/server/wm/WindowState;->notifyInsetsControlChanged(I)V
+HPLcom/android/server/wm/WindowState;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
PLcom/android/server/wm/WindowState;->onAnimationLeashCreated(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
-PLcom/android/server/wm/WindowState;->onAppVisibilityChanged(ZZ)V
+HPLcom/android/server/wm/WindowState;->onAppVisibilityChanged(ZZ)V
HPLcom/android/server/wm/WindowState;->onConfigurationChanged(Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/WindowState;->onExitAnimationDone()V
-PLcom/android/server/wm/WindowState;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
-PLcom/android/server/wm/WindowState;->onResizeHandled()V
-HPLcom/android/server/wm/WindowState;->onSurfaceShownChanged(Z)V
+HPLcom/android/server/wm/WindowState;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/WindowState;->onExitAnimationDone()V
+HPLcom/android/server/wm/WindowState;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
+PLcom/android/server/wm/WindowState;->onSetAppExiting(Z)Z
HPLcom/android/server/wm/WindowState;->openInputChannel(Landroid/view/InputChannel;)V
HPLcom/android/server/wm/WindowState;->performShowLocked()Z
-HPLcom/android/server/wm/WindowState;->prepareSurfaces()V
-PLcom/android/server/wm/WindowState;->prepareSync()Z
-PLcom/android/server/wm/WindowState;->prepareWindowToDisplayDuringRelayout(Z)V
+PLcom/android/server/wm/WindowState;->pokeDrawLockLw(J)V
+HPLcom/android/server/wm/WindowState;->prepareSurfaces()V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;
+HPLcom/android/server/wm/WindowState;->prepareSync()Z
+HPLcom/android/server/wm/WindowState;->prepareWindowToDisplayDuringRelayout(Z)V
PLcom/android/server/wm/WindowState;->providesDisplayDecorInsets()Z
-HPLcom/android/server/wm/WindowState;->registeredForDisplayAreaConfigChanges()Z
+PLcom/android/server/wm/WindowState;->receiveFocusFromTapOutside()Z
HPLcom/android/server/wm/WindowState;->relayoutVisibleWindow(I)I
HPLcom/android/server/wm/WindowState;->removeIfPossible()V
-PLcom/android/server/wm/WindowState;->removeImmediately()V
+HPLcom/android/server/wm/WindowState;->removeImmediately()V
+PLcom/android/server/wm/WindowState;->reparentSurfaceControl(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
PLcom/android/server/wm/WindowState;->reportFocusChangedSerialized(Z)V
-PLcom/android/server/wm/WindowState;->requestDrawIfNeeded(Ljava/util/List;)V
-PLcom/android/server/wm/WindowState;->requestRedrawForSync()V
-PLcom/android/server/wm/WindowState;->requestUpdateWallpaperIfNeeded()V
-PLcom/android/server/wm/WindowState;->resetAppOpsState()V
-HPLcom/android/server/wm/WindowState;->resetContentChanged()V
-PLcom/android/server/wm/WindowState;->sendAppVisibilityToClients()V
+HPLcom/android/server/wm/WindowState;->requestUpdateWallpaperIfNeeded()V
+HPLcom/android/server/wm/WindowState;->sendAppVisibilityToClients()V
HPLcom/android/server/wm/WindowState;->setDisplayLayoutNeeded()V
-PLcom/android/server/wm/WindowState;->setDrawnStateEvaluated(Z)V
-PLcom/android/server/wm/WindowState;->setForceHideNonSystemOverlayWindowIfNeeded(Z)V
-HPLcom/android/server/wm/WindowState;->setFrames(Landroid/window/ClientWindowFrames;II)V
-PLcom/android/server/wm/WindowState;->setHasSurface(Z)V
+HPLcom/android/server/wm/WindowState;->setForceHideNonSystemOverlayWindowIfNeeded(Z)V
PLcom/android/server/wm/WindowState;->setHiddenWhileSuspended(Z)V
HPLcom/android/server/wm/WindowState;->setInitialSurfaceControlProperties(Landroid/view/SurfaceControl$Builder;)V
-PLcom/android/server/wm/WindowState;->setLastExclusionHeights(III)V
-PLcom/android/server/wm/WindowState;->setOnBackInvokedCallbackInfo(Landroid/window/OnBackInvokedCallbackInfo;)V
-PLcom/android/server/wm/WindowState;->setPolicyVisibilityFlag(I)V
-HPLcom/android/server/wm/WindowState;->setReportResizeHints()Z
-PLcom/android/server/wm/WindowState;->setRequestedSize(II)V
-PLcom/android/server/wm/WindowState;->setRequestedVisibleTypes(I)V
-PLcom/android/server/wm/WindowState;->setViewVisibility(I)V
-PLcom/android/server/wm/WindowState;->setWallpaperOffset(IIF)Z
-HPLcom/android/server/wm/WindowState;->setWindowScale(II)V
-PLcom/android/server/wm/WindowState;->setupWindowForRemoveOnExit()V
-HPLcom/android/server/wm/WindowState;->shouldCheckTokenVisibleRequested()Z
-PLcom/android/server/wm/WindowState;->shouldControlIme()Z
-HPLcom/android/server/wm/WindowState;->shouldDrawBlurBehind()Z
+HPLcom/android/server/wm/WindowState;->shouldControlIme()Z
PLcom/android/server/wm/WindowState;->shouldMagnify()Z
-PLcom/android/server/wm/WindowState;->shouldSendRedrawForSync()Z
-PLcom/android/server/wm/WindowState;->shouldSyncWithBuffers()Z
-HPLcom/android/server/wm/WindowState;->show(ZZ)Z
+HPLcom/android/server/wm/WindowState;->shouldSendRedrawForSync()Z
+PLcom/android/server/wm/WindowState;->shouldUpdateSyncOnReparent()Z
+HPLcom/android/server/wm/WindowState;->show(Z)V
HPLcom/android/server/wm/WindowState;->showForAllUsers()Z
HPLcom/android/server/wm/WindowState;->showToCurrentUser()Z
-PLcom/android/server/wm/WindowState;->showWallpaper()Z
-HPLcom/android/server/wm/WindowState;->skipLayout()Z
-PLcom/android/server/wm/WindowState;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;)V
-PLcom/android/server/wm/WindowState;->startAnimation(Landroid/view/animation/Animation;)V
-HPLcom/android/server/wm/WindowState;->subtractTouchExcludeRegionIfNeeded(Landroid/graphics/Region;)V
-PLcom/android/server/wm/WindowState;->surfaceInsetsChanging()Z
-HPLcom/android/server/wm/WindowState;->syncNextBuffer()Z
+HPLcom/android/server/wm/WindowState;->showWallpaper()Z
+HPLcom/android/server/wm/WindowState;->subtractTouchExcludeRegionIfNeeded(Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;
+HPLcom/android/server/wm/WindowState;->syncNextBuffer()Z+]Ljava/util/List;Ljava/util/ArrayList;
HPLcom/android/server/wm/WindowState;->toString()Ljava/lang/String;
-HPLcom/android/server/wm/WindowState;->transformFrameToSurfacePosition(IILandroid/graphics/Point;)V
-HPLcom/android/server/wm/WindowState;->transformSurfaceInsetsPosition(Landroid/graphics/Point;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/WindowState;->transformFrameToSurfacePosition(IILandroid/graphics/Point;)V+]Landroid/graphics/Point;Landroid/graphics/Point;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
+HPLcom/android/server/wm/WindowState;->transformSurfaceInsetsPosition(Landroid/graphics/Rect;Landroid/graphics/Point;)V
HPLcom/android/server/wm/WindowState;->updateAboveInsetsState(Landroid/view/InsetsState;Landroid/util/SparseArray;Landroid/util/ArraySet;)V
-HPLcom/android/server/wm/WindowState;->updateFrameRateSelectionPriorityIfNeeded()V
+HPLcom/android/server/wm/WindowState;->updateFrameRateSelectionPriorityIfNeeded()V+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
PLcom/android/server/wm/WindowState;->updateGlobalScale()V
-HPLcom/android/server/wm/WindowState;->updateLastFrames()V
-HPLcom/android/server/wm/WindowState;->updateRegionForModalActivityWindow(Landroid/graphics/Region;)V
-HPLcom/android/server/wm/WindowState;->updateReportedVisibility(Lcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;)V
-HPLcom/android/server/wm/WindowState;->updateResizingWindowIfNeeded()V
-HPLcom/android/server/wm/WindowState;->updateScaleIfNeeded()V
-HPLcom/android/server/wm/WindowState;->updateSourceFrame(Landroid/graphics/Rect;)V
-HPLcom/android/server/wm/WindowState;->updateSurfacePosition(Landroid/view/SurfaceControl$Transaction;)V
-HPLcom/android/server/wm/WindowState;->wouldBeVisibleIfPolicyIgnored()Z
-HPLcom/android/server/wm/WindowState;->wouldBeVisibleRequestedIfPolicyIgnored()Z
+HPLcom/android/server/wm/WindowState;->updateReportedVisibility(Lcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
+HPLcom/android/server/wm/WindowState;->updateSourceFrame(Landroid/graphics/Rect;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;
+HPLcom/android/server/wm/WindowState;->updateSurfacePosition(Landroid/view/SurfaceControl$Transaction;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/Point;Landroid/graphics/Point;
+HPLcom/android/server/wm/WindowState;->wouldBeVisibleIfPolicyIgnored()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;
+PLcom/android/server/wm/WindowState;->writeIdentifierToProto(Landroid/util/proto/ProtoOutputStream;J)V
HPLcom/android/server/wm/WindowStateAnimator;-><init>(Lcom/android/server/wm/WindowState;)V
HPLcom/android/server/wm/WindowStateAnimator;->applyAnimationLocked(IZ)Z
-PLcom/android/server/wm/WindowStateAnimator;->applyEnterAnimationLocked()V
+HPLcom/android/server/wm/WindowStateAnimator;->applyEnterAnimationLocked()V
HPLcom/android/server/wm/WindowStateAnimator;->commitFinishDrawingLocked()Z
-HPLcom/android/server/wm/WindowStateAnimator;->computeShownFrameLocked()V
-HPLcom/android/server/wm/WindowStateAnimator;->createSurfaceLocked()Lcom/android/server/wm/WindowSurfaceController;
-PLcom/android/server/wm/WindowStateAnimator;->destroySurface(Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/WindowStateAnimator;->destroySurfaceLocked(Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/WindowStateAnimator;->finishDrawingLocked(Landroid/view/SurfaceControl$Transaction;)Z
+HPLcom/android/server/wm/WindowStateAnimator;->createSurfaceLocked()Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/WindowStateAnimator;->destroySurface(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/WindowStateAnimator;->destroySurfaceLocked(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/WindowStateAnimator;->drawStateToString()Ljava/lang/String;
HPLcom/android/server/wm/WindowStateAnimator;->getShown()Z
-HPLcom/android/server/wm/WindowStateAnimator;->hasSurface()Z
-HPLcom/android/server/wm/WindowStateAnimator;->hide(Landroid/view/SurfaceControl$Transaction;Ljava/lang/String;)V
-PLcom/android/server/wm/WindowStateAnimator;->onAnimationFinished()V
-HPLcom/android/server/wm/WindowStateAnimator;->prepareSurfaceLocked(Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/WindowStateAnimator;->resetDrawState()V
-PLcom/android/server/wm/WindowStateAnimator;->setColorSpaceAgnosticLocked(Z)V
-HPLcom/android/server/wm/WindowSurfaceController;-><init>(Ljava/lang/String;IILcom/android/server/wm/WindowStateAnimator;I)V
-PLcom/android/server/wm/WindowSurfaceController;->destroy(Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/WindowSurfaceController;->getShown()Z
-PLcom/android/server/wm/WindowSurfaceController;->getSurfaceControl(Landroid/view/SurfaceControl;)V
-HPLcom/android/server/wm/WindowSurfaceController;->hasSurface()Z
-PLcom/android/server/wm/WindowSurfaceController;->hide(Landroid/view/SurfaceControl$Transaction;Ljava/lang/String;)V
-PLcom/android/server/wm/WindowSurfaceController;->hideSurface(Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/WindowSurfaceController;->prepareToShowInTransaction(Landroid/view/SurfaceControl$Transaction;F)Z
-PLcom/android/server/wm/WindowSurfaceController;->setColorSpaceAgnostic(Landroid/view/SurfaceControl$Transaction;Z)V
-HPLcom/android/server/wm/WindowSurfaceController;->setShown(Z)V
-PLcom/android/server/wm/WindowSurfaceController;->showRobustly(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/WindowStateAnimator;->hasSurface()Z
+HPLcom/android/server/wm/WindowStateAnimator;->hide(Landroid/view/SurfaceControl$Transaction;Ljava/lang/String;)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
+HPLcom/android/server/wm/WindowStateAnimator;->prepareSurfaceLocked(Landroid/view/SurfaceControl$Transaction;)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;
+HPLcom/android/server/wm/WindowStateAnimator;->resetDrawState()V
+HPLcom/android/server/wm/WindowStateAnimator;->setColorSpaceAgnosticLocked(Z)V
+PLcom/android/server/wm/WindowStateAnimator;->setOpaqueLocked(Z)V
+HPLcom/android/server/wm/WindowStateAnimator;->setShown(Z)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/Session;Lcom/android/server/wm/Session;
+PLcom/android/server/wm/WindowStateAnimator;->toString()Ljava/lang/String;
PLcom/android/server/wm/WindowSurfacePlacer$Traverser;-><init>(Lcom/android/server/wm/WindowSurfacePlacer;)V
-PLcom/android/server/wm/WindowSurfacePlacer$Traverser;-><init>(Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer$Traverser-IA;)V
HPLcom/android/server/wm/WindowSurfacePlacer$Traverser;->run()V
-PLcom/android/server/wm/WindowSurfacePlacer;->-$$Nest$fgetmService(Lcom/android/server/wm/WindowSurfacePlacer;)Lcom/android/server/wm/WindowManagerService;
PLcom/android/server/wm/WindowSurfacePlacer;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/WindowSurfacePlacer;->continueLayout(Z)V
-PLcom/android/server/wm/WindowSurfacePlacer;->deferLayout()V
-PLcom/android/server/wm/WindowSurfacePlacer;->isInLayout()Z
-HPLcom/android/server/wm/WindowSurfacePlacer;->isLayoutDeferred()Z
-PLcom/android/server/wm/WindowSurfacePlacer;->isTraversalScheduled()Z
-PLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement()V
-HPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement(Z)V
-HPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacementLoop()V
+HPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement(Z)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;
HPLcom/android/server/wm/WindowSurfacePlacer;->requestTraversal()V
PLcom/android/server/wm/WindowToken$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowToken;)V
PLcom/android/server/wm/WindowToken$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
PLcom/android/server/wm/WindowToken$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/WindowToken;Z)V
-PLcom/android/server/wm/WindowToken$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/WindowToken$Builder;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;I)V
-HPLcom/android/server/wm/WindowToken$Builder;->build()Lcom/android/server/wm/WindowToken;
-PLcom/android/server/wm/WindowToken$Builder;->setDisplayContent(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/WindowToken$Builder;
-PLcom/android/server/wm/WindowToken$Builder;->setFromClientToken(Z)Lcom/android/server/wm/WindowToken$Builder;
-PLcom/android/server/wm/WindowToken$Builder;->setOptions(Landroid/os/Bundle;)Lcom/android/server/wm/WindowToken$Builder;
-PLcom/android/server/wm/WindowToken$Builder;->setOwnerCanManageAppTokens(Z)Lcom/android/server/wm/WindowToken$Builder;
-PLcom/android/server/wm/WindowToken$Builder;->setPersistOnEmpty(Z)Lcom/android/server/wm/WindowToken$Builder;
-PLcom/android/server/wm/WindowToken$Builder;->setRoundedCornerOverlay(Z)Lcom/android/server/wm/WindowToken$Builder;
-PLcom/android/server/wm/WindowToken;->$r8$lambda$-pSQy6fdr3VlGcmvSVCsObZoXyQ(Lcom/android/server/wm/WindowToken;ZLcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/WindowToken;->$r8$lambda$nGO-xASDAxBQTRuMNfGImeCJxk0(Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)I
-PLcom/android/server/wm/WindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;IZLcom/android/server/wm/DisplayContent;Z)V
+HPLcom/android/server/wm/WindowToken$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
HPLcom/android/server/wm/WindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;IZLcom/android/server/wm/DisplayContent;ZZZLandroid/os/Bundle;)V
HPLcom/android/server/wm/WindowToken;->addWindow(Lcom/android/server/wm/WindowState;)V
PLcom/android/server/wm/WindowToken;->asWindowToken()Lcom/android/server/wm/WindowToken;
-PLcom/android/server/wm/WindowToken;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V
+HPLcom/android/server/wm/WindowToken;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V
PLcom/android/server/wm/WindowToken;->createSurfaceControl(Z)V
-PLcom/android/server/wm/WindowToken;->finishFixedRotationTransform()V
-PLcom/android/server/wm/WindowToken;->finishFixedRotationTransform(Ljava/lang/Runnable;)V
-PLcom/android/server/wm/WindowToken;->getFixedRotationTransformDisplayBounds()Landroid/graphics/Rect;
-PLcom/android/server/wm/WindowToken;->getFixedRotationTransformDisplayFrames()Lcom/android/server/wm/DisplayFrames;
-PLcom/android/server/wm/WindowToken;->getFixedRotationTransformDisplayInfo()Landroid/view/DisplayInfo;
-HPLcom/android/server/wm/WindowToken;->getFixedRotationTransformInsetsState()Landroid/view/InsetsState;
+PLcom/android/server/wm/WindowToken;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+PLcom/android/server/wm/WindowToken;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
+PLcom/android/server/wm/WindowToken;->finishFixedRotationTransform(Lcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda6;)V
+HPLcom/android/server/wm/WindowToken;->getFixedRotationTransformDisplayBounds()Landroid/graphics/Rect;
PLcom/android/server/wm/WindowToken;->getName()Ljava/lang/String;
+PLcom/android/server/wm/WindowToken;->getOrCreateFixedRotationLeash(Landroid/view/SurfaceControl$Transaction;)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/WindowToken;->getProtoFieldId()J
PLcom/android/server/wm/WindowToken;->getWindowLayerFromType()I
-PLcom/android/server/wm/WindowToken;->getWindowType()I
+HPLcom/android/server/wm/WindowToken;->handleCompleteDeferredRemoval()Z
PLcom/android/server/wm/WindowToken;->hasFixedRotationTransform()Z
PLcom/android/server/wm/WindowToken;->hasSizeCompatBounds()Z
-HPLcom/android/server/wm/WindowToken;->isClientVisible()Z
-PLcom/android/server/wm/WindowToken;->isEmpty()Z
-PLcom/android/server/wm/WindowToken;->isFinishingFixedRotationTransform()Z
HPLcom/android/server/wm/WindowToken;->isFixedRotationTransforming()Z
-PLcom/android/server/wm/WindowToken;->lambda$new$0(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)I
-PLcom/android/server/wm/WindowToken;->lambda$setInsetsFrozen$1(ZLcom/android/server/wm/WindowState;)V
PLcom/android/server/wm/WindowToken;->makeSurface()Landroid/view/SurfaceControl$Builder;
-PLcom/android/server/wm/WindowToken;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/WindowToken;->prepareSync()Z
+HPLcom/android/server/wm/WindowToken;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/WindowToken;->prepareSync()Z
+PLcom/android/server/wm/WindowToken;->removeAllWindowsIfPossible()V
+PLcom/android/server/wm/WindowToken;->removeIfPossible()V
PLcom/android/server/wm/WindowToken;->removeImmediately()V
PLcom/android/server/wm/WindowToken;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/WindowToken;->setClientVisible(Z)V
+HPLcom/android/server/wm/WindowToken;->setClientVisible(Z)V
PLcom/android/server/wm/WindowToken;->setExiting(Z)V
-PLcom/android/server/wm/WindowToken;->setInsetsFrozen(Z)V
-HPLcom/android/server/wm/WindowToken;->toString()Ljava/lang/String;
-HPLcom/android/server/wm/WindowToken;->updateSurfacePosition(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/WindowToken;->toString()Ljava/lang/String;
+PLcom/android/server/wm/WindowToken;->updateSurfacePosition(Landroid/view/SurfaceControl$Transaction;)V
PLcom/android/server/wm/WindowToken;->windowsCanBeWallpaperTarget()Z
-PLcom/android/server/wm/WindowTracing$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowTracing;)V
-PLcom/android/server/wm/WindowTracing;-><init>(Ljava/io/File;Lcom/android/server/wm/WindowManagerService;Landroid/view/Choreographer;I)V
-PLcom/android/server/wm/WindowTracing;-><init>(Ljava/io/File;Lcom/android/server/wm/WindowManagerService;Landroid/view/Choreographer;Lcom/android/server/wm/WindowManagerGlobalLock;I)V
-PLcom/android/server/wm/WindowTracing;->createDefaultAndStartLooper(Lcom/android/server/wm/WindowManagerService;Landroid/view/Choreographer;)Lcom/android/server/wm/WindowTracing;
-HPLcom/android/server/wm/WindowTracing;->isEnabled()Z
-PLcom/android/server/wm/WindowTracing;->logAndPrintln(Ljava/io/PrintWriter;Ljava/lang/String;)V
-HPLcom/android/server/wm/WindowTracing;->logState(Ljava/lang/String;)V
-PLcom/android/server/wm/WindowTracing;->setBufferCapacity(ILjava/io/PrintWriter;)V
-PLcom/android/server/wm/WindowTracing;->setLogLevel(ILjava/io/PrintWriter;)V
-HSPLcom/android/server/wm/utils/DisplayInfoOverrides$$ExternalSyntheticLambda0;-><init>()V
-PLcom/android/server/wm/utils/DisplayInfoOverrides$$ExternalSyntheticLambda0;->setFields(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)V
-PLcom/android/server/wm/utils/DisplayInfoOverrides;->$r8$lambda$jgt4-o-_IMdp6knRL61iyTsmoLA(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)V
-HSPLcom/android/server/wm/utils/DisplayInfoOverrides;-><clinit>()V
-HSPLcom/android/server/wm/utils/DisplayInfoOverrides;->copyDisplayInfoFields(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;Lcom/android/server/wm/utils/DisplayInfoOverrides$DisplayInfoFieldsUpdater;)V
-HPLcom/android/server/wm/utils/DisplayInfoOverrides;->lambda$static$0(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)V
-PLcom/android/server/wm/utils/InsetUtils;->rotateInsets(Landroid/graphics/Rect;I)V
-HPLcom/android/server/wm/utils/RegionUtils;->forEachRectReverse(Landroid/graphics/Region;Ljava/util/function/Consumer;)V
-HPLcom/android/server/wm/utils/RegionUtils;->rectListToRegion(Ljava/util/List;Landroid/graphics/Region;)V
-PLcom/android/server/wm/utils/RotationCache;-><init>(Lcom/android/server/wm/utils/RotationCache$RotationDependentComputation;)V
-HPLcom/android/server/wm/utils/RotationCache;->getOrCompute(Ljava/lang/Object;I)Ljava/lang/Object;
+PLcom/android/server/wm/WindowTracing$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowTracingPerfetto;)V
+PLcom/android/server/wm/WindowTracingDataSource$Config;-><init>(II)V
+PLcom/android/server/wm/WindowTracingDataSource;-><clinit>()V
+PLcom/android/server/wm/WindowTracingDataSource;-><init>(Lcom/android/server/wm/WindowTracingPerfetto;Ljava/lang/String;)V
+PLcom/android/server/wm/WindowTracingPerfetto;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/Choreographer;Lcom/android/server/wm/WindowManagerGlobalLock;Ljava/lang/String;)V
+PLcom/android/server/wm/WindowTracingPerfetto;->getStatus()Ljava/lang/String;
+HPLcom/android/server/wm/WindowTracingPerfetto;->isEnabled()Z
+PLcom/android/server/wm/utils/AlwaysTruePredicate;-><clinit>()V
+PLcom/android/server/wm/utils/AlwaysTruePredicate;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/utils/DimenPxIntSupplier;-><init>(Landroid/content/Context;I)V
+HPLcom/android/server/wm/utils/InsetUtils;->addInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/utils/OptPropFactory$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/utils/OptPropFactory;Ljava/lang/String;I)V
+PLcom/android/server/wm/utils/OptPropFactory$OptProp$$ExternalSyntheticLambda0;->getAsBoolean()Z
+PLcom/android/server/wm/utils/OptPropFactory$OptProp;-><init>(Lcom/android/server/wm/utils/OptPropFactory$$ExternalSyntheticLambda0;Ljava/lang/String;Ljava/util/function/BooleanSupplier;)V
+HPLcom/android/server/wm/utils/OptPropFactory$OptProp;->getValue()I+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;
+HPLcom/android/server/wm/utils/OptPropFactory$OptProp;->isFalse()Z+]Ljava/util/function/BooleanSupplier;Lcom/android/server/wm/AppCompatAspectRatioOverrides$$ExternalSyntheticLambda0;,Lcom/android/server/wm/utils/OptPropFactory$OptProp$$ExternalSyntheticLambda0;
+HPLcom/android/server/wm/utils/OptPropFactory$OptProp;->shouldEnableWithOptInOverrideAndOptOutProperty(Z)Z+]Ljava/util/function/BooleanSupplier;Lcom/android/server/wm/AppCompatUtils$1;,Lcom/android/server/wm/utils/OptPropFactory$OptProp$$ExternalSyntheticLambda0;
+PLcom/android/server/wm/utils/OptPropFactory$OptProp;->shouldEnableWithOverrideAndProperty(Z)Z
+PLcom/android/server/wm/utils/OptPropFactory;-><init>(Landroid/content/pm/PackageManager;Ljava/lang/String;)V
+HPLcom/android/server/wm/utils/OptPropFactory;->create(Ljava/lang/String;)Lcom/android/server/wm/utils/OptPropFactory$OptProp;
+PLcom/android/server/wm/utils/OptPropFactory;->create(Ljava/lang/String;Ljava/util/function/BooleanSupplier;)Lcom/android/server/wm/utils/OptPropFactory$OptProp;
+PLcom/android/server/wm/utils/RegionUtils;->forEachRect(Landroid/graphics/Region;Ljava/util/function/Consumer;)V
+PLcom/android/server/wm/utils/RotationCache;-><init>(Lcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda32;)V
+HPLcom/android/server/wm/utils/RotationCache;->getOrCompute(ILjava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/wm/utils/WmDisplayCutout;-><clinit>()V
PLcom/android/server/wm/utils/WmDisplayCutout;-><init>(Landroid/view/DisplayCutout;Landroid/util/Size;)V
-PLcom/android/server/wm/utils/WmDisplayCutout;->getDisplayCutout()Landroid/view/DisplayCutout;
-PLcom/android/systemui/shared/FeatureFlagsImpl;-><clinit>()V
-PLcom/android/systemui/shared/FeatureFlagsImpl;-><init>()V
-PLcom/android/systemui/shared/FeatureFlagsImpl;->enableHomeDelay()Z
-PLcom/android/systemui/shared/FeatureFlagsImpl;->load_overrides_systemui()V
PLcom/android/systemui/shared/Flags;-><clinit>()V
PLcom/android/systemui/shared/Flags;->enableHomeDelay()Z
-HSPLcom/android/wm/shell/FeatureFlagsImpl;-><clinit>()V
-HSPLcom/android/wm/shell/FeatureFlagsImpl;-><init>()V
-HSPLcom/android/wm/shell/FeatureFlagsImpl;->enableDesktopWindowing()Z
-PLcom/android/wm/shell/FeatureFlagsImpl;->enablePip2Implementation()Z
-HSPLcom/android/wm/shell/Flags;-><clinit>()V
-HSPLcom/android/wm/shell/Flags;->enableDesktopWindowing()Z
-PLcom/android/wm/shell/Flags;->enablePip2Implementation()Z
+PLcom/android/wm/shell/FeatureFlagsImpl;->init()V
+PLcom/android/wm/shell/Flags;-><clinit>()V
+PLcom/android/wm/shell/Flags;->enablePip2()Z
+PLcom/android/wm/shell/Flags;->onlyReuseBubbledTaskWhenLaunchedFromBubble()Z
diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
index 02a8f6218468..414db37508e5 100644
--- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
+++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
@@ -47,6 +47,7 @@ import android.annotation.UserIdInt;
import android.app.ActivityManager;
import android.app.ActivityManagerInternal;
import android.app.AppOpsManager;
+import android.app.KeyguardManager;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.ecm.EnhancedConfirmationManager;
@@ -302,8 +303,17 @@ public class CompanionDeviceManagerService extends SystemService {
enforceCallerCanManageAssociationsForPackage(getContext(), userId, packageName,
"create associations");
- mAssociationRequestsProcessor.processNewAssociationRequest(
- request, packageName, userId, callback);
+ if (request.isSkipRoleGrant()) {
+ checkCallerCanSkipRoleGrant();
+ mAssociationRequestsProcessor.createAssociation(userId, packageName,
+ /* macAddress= */ null, request.getDisplayName(),
+ request.getDeviceProfile(), /* associatedDevice= */ null,
+ request.isSelfManaged(), callback, /* resultReceiver= */ null,
+ request.getDeviceIcon(), /* skipRoleGrant= */ true);
+ } else {
+ mAssociationRequestsProcessor.processNewAssociationRequest(
+ request, packageName, userId, callback);
+ }
}
@Override
@@ -669,7 +679,7 @@ public class CompanionDeviceManagerService extends SystemService {
final MacAddress macAddressObj = MacAddress.fromString(macAddress);
mAssociationRequestsProcessor.createAssociation(userId, packageName, macAddressObj,
- null, null, null, false, null, null, null);
+ null, null, null, false, null, null, null, false);
}
private void checkCanCallNotificationApi(String callingPackage, int userId) {
@@ -684,6 +694,21 @@ public class CompanionDeviceManagerService extends SystemService {
"App must have an association before calling this API");
}
+ private void checkCallerCanSkipRoleGrant() {
+ final Context context =
+ getContext().createContextAsUser(Binder.getCallingUserHandle(), 0);
+ final KeyguardManager keyguardManager =
+ context.getSystemService(KeyguardManager.class);
+ if (keyguardManager != null && keyguardManager.isKeyguardSecure()) {
+ throw new SecurityException("Skipping CDM role grant requires insecure keyguard.");
+ }
+ if (getContext().checkCallingPermission(ASSOCIATE_COMPANION_DEVICES)
+ != PERMISSION_GRANTED) {
+ throw new SecurityException(
+ "Skipping CDM role grant requires ASSOCIATE_COMPANION_DEVICES permission.");
+ }
+ }
+
@Override
public boolean canPairWithoutPrompt(String packageName, String macAddress, int userId) {
final AssociationInfo association =
diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java b/services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java
index 3508f2ffc4c4..e7d1460aa66a 100644
--- a/services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java
+++ b/services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java
@@ -106,8 +106,9 @@ class CompanionDeviceShellCommand extends ShellCommand {
boolean selfManaged = getNextBooleanArg();
final MacAddress macAddress = MacAddress.fromString(address);
mAssociationRequestsProcessor.createAssociation(userId, packageName, macAddress,
- deviceProfile, deviceProfile, /* associatedDevice */ null, selfManaged,
- /* callback */ null, /* resultReceiver */ null, /* deviceIcon */ null);
+ deviceProfile, deviceProfile, /* associatedDevice= */ null, selfManaged,
+ /* callback= */ null, /* resultReceiver= */ null,
+ /* deviceIcon= */ null, /* skipRoleGrant= */ false);
}
break;
diff --git a/services/companion/java/com/android/server/companion/association/AssociationRequestsProcessor.java b/services/companion/java/com/android/server/companion/association/AssociationRequestsProcessor.java
index 899b302316f9..cd9285cdfe91 100644
--- a/services/companion/java/com/android/server/companion/association/AssociationRequestsProcessor.java
+++ b/services/companion/java/com/android/server/companion/association/AssociationRequestsProcessor.java
@@ -28,6 +28,7 @@ import static com.android.server.companion.utils.PackageUtils.enforceUsesCompani
import static com.android.server.companion.utils.PermissionsUtils.enforcePermissionForCreatingAssociation;
import static com.android.server.companion.utils.RolesUtils.addRoleHolderForAssociation;
import static com.android.server.companion.utils.RolesUtils.isRoleHolder;
+import static com.android.server.companion.utils.RolesUtils.isRolelessProfile;
import static com.android.server.companion.utils.Utils.prepareForIpc;
import static java.util.Objects.requireNonNull;
@@ -282,8 +283,8 @@ public class AssociationRequestsProcessor {
Binder.withCleanCallingIdentity(() -> {
createAssociation(userId, packageName, macAddress, request.getDisplayName(),
request.getDeviceProfile(), request.getAssociatedDevice(),
- request.isSelfManaged(),
- callback, resultReceiver, request.getDeviceIcon());
+ request.isSelfManaged(), callback, resultReceiver, request.getDeviceIcon(),
+ /* skipRoleGrant= */ false);
});
}
@@ -294,7 +295,8 @@ public class AssociationRequestsProcessor {
@Nullable MacAddress macAddress, @Nullable CharSequence displayName,
@Nullable String deviceProfile, @Nullable AssociatedDevice associatedDevice,
boolean selfManaged, @Nullable IAssociationRequestCallback callback,
- @Nullable ResultReceiver resultReceiver, @Nullable Icon deviceIcon) {
+ @Nullable ResultReceiver resultReceiver, @Nullable Icon deviceIcon,
+ boolean skipRoleGrant) {
final int id = mAssociationStore.getNextId();
final long timestamp = System.currentTimeMillis();
@@ -303,8 +305,17 @@ public class AssociationRequestsProcessor {
selfManaged, /* notifyOnDeviceNearby */ false, /* revoked */ false,
/* pending */ false, timestamp, Long.MAX_VALUE, /* systemDataSyncFlags */ 0,
deviceIcon, /* deviceId */ null);
- // Add role holder for association (if specified) and add new association to store.
- maybeGrantRoleAndStoreAssociation(association, callback, resultReceiver);
+
+ if (skipRoleGrant) {
+ Slog.i(TAG, "Created association for " + association.getDeviceProfile() + " and userId="
+ + association.getUserId() + ", packageName="
+ + association.getPackageName() + " without granting role");
+ mAssociationStore.addAssociation(association);
+ sendCallbackAndFinish(association, callback, resultReceiver);
+ } else {
+ // Add role holder for association (if specified) and add new association to store.
+ maybeGrantRoleAndStoreAssociation(association, callback, resultReceiver);
+ }
}
/**
@@ -313,12 +324,20 @@ public class AssociationRequestsProcessor {
public void maybeGrantRoleAndStoreAssociation(@NonNull AssociationInfo association,
@Nullable IAssociationRequestCallback callback,
@Nullable ResultReceiver resultReceiver) {
- // If the "Device Profile" is specified, make the companion application a holder of the
- // corresponding role.
- // If it is null, then the operation will succeed without granting any role.
+ final String deviceProfile = association.getDeviceProfile();
+
+ // If device profile is not specified or role-less, skip role grant and store association.
+ if (deviceProfile == null || isRolelessProfile(deviceProfile)) {
+ mAssociationStore.addAssociation(association);
+ sendCallbackAndFinish(association, callback, resultReceiver);
+ return;
+ }
+
+ // If the "Device Profile" is specified and it is associated with a role, then make the
+ // companion application a holder of the corresponding role.
addRoleHolderForAssociation(mContext, association, success -> {
if (success) {
- Slog.i(TAG, "Added " + association.getDeviceProfile() + " role to userId="
+ Slog.i(TAG, "Added " + deviceProfile + " role to userId="
+ association.getUserId() + ", packageName="
+ association.getPackageName());
mAssociationStore.addAssociation(association);
@@ -326,7 +345,7 @@ public class AssociationRequestsProcessor {
} else {
Slog.e(TAG, "Failed to add u" + association.getUserId()
+ "\\" + association.getPackageName()
- + " to the list of " + association.getDeviceProfile() + " holders.");
+ + " to the list of " + deviceProfile + " holders.");
sendCallbackAndFinish(null, callback, resultReceiver);
}
});
@@ -406,7 +425,7 @@ public class AssociationRequestsProcessor {
private boolean willAddRoleHolder(@NonNull AssociationRequest request,
@NonNull String packageName, @UserIdInt int userId) {
final String deviceProfile = request.getDeviceProfile();
- if (deviceProfile == null) return false;
+ if (deviceProfile == null || isRolelessProfile(deviceProfile)) return false;
final boolean isRoleHolder = Binder.withCleanCallingIdentity(
() -> isRoleHolder(mContext, userId, packageName, deviceProfile));
diff --git a/services/companion/java/com/android/server/companion/utils/MetricUtils.java b/services/companion/java/com/android/server/companion/utils/MetricUtils.java
index 83cbde6639c0..cfa7cb00dfac 100644
--- a/services/companion/java/com/android/server/companion/utils/MetricUtils.java
+++ b/services/companion/java/com/android/server/companion/utils/MetricUtils.java
@@ -23,6 +23,7 @@ import static android.companion.AssociationRequest.DEVICE_PROFILE_GLASSES;
import static android.companion.AssociationRequest.DEVICE_PROFILE_NEARBY_DEVICE_STREAMING;
import static android.companion.AssociationRequest.DEVICE_PROFILE_SENSOR_DEVICE_STREAMING;
import static android.companion.AssociationRequest.DEVICE_PROFILE_WATCH;
+import static android.companion.AssociationRequest.DEVICE_PROFILE_WEARABLE_SENSING;
import static com.android.internal.util.FrameworkStatsLog.CDM_ASSOCIATION_ACTION;
import static com.android.internal.util.FrameworkStatsLog.CDM_ASSOCIATION_ACTION__ACTION__CREATED;
@@ -35,6 +36,7 @@ import static com.android.internal.util.FrameworkStatsLog.CDM_ASSOCIATION_ACTION
import static com.android.internal.util.FrameworkStatsLog.CDM_ASSOCIATION_ACTION__DEVICE_PROFILE__DEVICE_PROFILE_SENSOR_DEVICE_STREAMING;
import static com.android.internal.util.FrameworkStatsLog.CDM_ASSOCIATION_ACTION__DEVICE_PROFILE__DEVICE_PROFILE_NULL;
import static com.android.internal.util.FrameworkStatsLog.CDM_ASSOCIATION_ACTION__DEVICE_PROFILE__DEVICE_PROFILE_WATCH;
+import static com.android.internal.util.FrameworkStatsLog.CDM_ASSOCIATION_ACTION__DEVICE_PROFILE__DEVICE_PROFILE_WEARABLE_SENSING;
import static com.android.internal.util.FrameworkStatsLog.write;
import static java.util.Collections.unmodifiableMap;
@@ -77,6 +79,10 @@ public final class MetricUtils {
DEVICE_PROFILE_SENSOR_DEVICE_STREAMING,
CDM_ASSOCIATION_ACTION__DEVICE_PROFILE__DEVICE_PROFILE_SENSOR_DEVICE_STREAMING
);
+ map.put(
+ DEVICE_PROFILE_WEARABLE_SENSING,
+ CDM_ASSOCIATION_ACTION__DEVICE_PROFILE__DEVICE_PROFILE_WEARABLE_SENSING
+ );
METRIC_DEVICE_PROFILE = unmodifiableMap(map);
}
diff --git a/services/companion/java/com/android/server/companion/utils/PermissionsUtils.java b/services/companion/java/com/android/server/companion/utils/PermissionsUtils.java
index 6431af5b21ac..f4128b820d8f 100644
--- a/services/companion/java/com/android/server/companion/utils/PermissionsUtils.java
+++ b/services/companion/java/com/android/server/companion/utils/PermissionsUtils.java
@@ -30,6 +30,7 @@ import static android.companion.AssociationRequest.DEVICE_PROFILE_GLASSES;
import static android.companion.AssociationRequest.DEVICE_PROFILE_NEARBY_DEVICE_STREAMING;
import static android.companion.AssociationRequest.DEVICE_PROFILE_SENSOR_DEVICE_STREAMING;
import static android.companion.AssociationRequest.DEVICE_PROFILE_WATCH;
+import static android.companion.AssociationRequest.DEVICE_PROFILE_WEARABLE_SENSING;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.os.Binder.getCallingPid;
import static android.os.Binder.getCallingUid;
@@ -39,6 +40,7 @@ import static android.os.UserHandle.getCallingUserId;
import static com.android.server.companion.utils.RolesUtils.isRoleHolder;
import static java.util.Collections.unmodifiableMap;
+import static java.util.Collections.unmodifiableSet;
import android.Manifest;
import android.annotation.NonNull;
@@ -51,10 +53,12 @@ import android.os.Binder;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.util.ArrayMap;
+import android.util.ArraySet;
import com.android.internal.app.IAppOpsService;
import java.util.Map;
+import java.util.Set;
/**
* Utility methods for checking permissions required for accessing {@link CompanionDeviceManager}
@@ -64,6 +68,13 @@ import java.util.Map;
*/
public final class PermissionsUtils {
+ private static final Set<String> SYSTEM_ONLY_DEVICE_PROFILES;
+ static {
+ final Set<String> set = new ArraySet<>();
+ set.add(DEVICE_PROFILE_WEARABLE_SENSING);
+ SYSTEM_ONLY_DEVICE_PROFILES = unmodifiableSet(set);
+ }
+
private static final Map<String, String> DEVICE_PROFILE_TO_PERMISSION;
static {
final Map<String, String> map = new ArrayMap<>();
@@ -102,12 +113,18 @@ public final class PermissionsUtils {
// Device profile can be null.
if (deviceProfile == null) return;
- if (!DEVICE_PROFILE_TO_PERMISSION.containsKey(deviceProfile)) {
+ if (!DEVICE_PROFILE_TO_PERMISSION.containsKey(deviceProfile)
+ && !SYSTEM_ONLY_DEVICE_PROFILES.contains(deviceProfile)) {
throw new IllegalArgumentException("Unsupported device profile: " + deviceProfile);
}
- final String permission = DEVICE_PROFILE_TO_PERMISSION.get(deviceProfile);
- if (context.checkPermission(permission, getCallingPid(), packageUid)
+ if (SYSTEM_ONLY_DEVICE_PROFILES.contains(deviceProfile) && getCallingUid() != SYSTEM_UID) {
+ throw new SecurityException("Caller must be system to associate with a device with "
+ + deviceProfile + " profile.");
+ }
+
+ final String permission = DEVICE_PROFILE_TO_PERMISSION.getOrDefault(deviceProfile, null);
+ if (permission != null && context.checkPermission(permission, getCallingPid(), packageUid)
!= PERMISSION_GRANTED) {
throw new SecurityException("Application must hold " + permission + " to associate "
+ "with a device with " + deviceProfile + " profile.");
diff --git a/services/companion/java/com/android/server/companion/utils/RolesUtils.java b/services/companion/java/com/android/server/companion/utils/RolesUtils.java
index dd12e0406089..2b281f3f342e 100644
--- a/services/companion/java/com/android/server/companion/utils/RolesUtils.java
+++ b/services/companion/java/com/android/server/companion/utils/RolesUtils.java
@@ -23,12 +23,16 @@ import android.annotation.SuppressLint;
import android.annotation.UserIdInt;
import android.app.role.RoleManager;
import android.companion.AssociationInfo;
+import android.companion.AssociationRequest;
import android.content.Context;
import android.os.Binder;
import android.os.UserHandle;
+import android.util.ArraySet;
import android.util.Slog;
+import java.util.Collections;
import java.util.List;
+import java.util.Set;
import java.util.function.Consumer;
/** Utility methods for accessing {@link RoleManager} APIs. */
@@ -37,6 +41,13 @@ public final class RolesUtils {
private static final String TAG = "CDM_RolesUtils";
+ private static final Set<String> ROLELESS_DEVICE_PROFILES;
+ static {
+ final Set<String> profiles = new ArraySet<>();
+ profiles.add(AssociationRequest.DEVICE_PROFILE_WEARABLE_SENSING);
+ ROLELESS_DEVICE_PROFILES = Collections.unmodifiableSet(profiles);
+ }
+
/**
* Check if the package holds the role.
*/
@@ -107,5 +118,12 @@ public final class RolesUtils {
);
}
+ /**
+ * Return true if the device profile is not tied to an Android role.
+ */
+ public static boolean isRolelessProfile(String deviceProfile) {
+ return ROLELESS_DEVICE_PROFILES.contains(deviceProfile);
+ }
+
private RolesUtils() {}
}
diff --git a/services/contextualsearch/java/com/android/server/contextualsearch/ContextualSearchManagerService.java b/services/contextualsearch/java/com/android/server/contextualsearch/ContextualSearchManagerService.java
index df47c98d6433..89c9d690a82c 100644
--- a/services/contextualsearch/java/com/android/server/contextualsearch/ContextualSearchManagerService.java
+++ b/services/contextualsearch/java/com/android/server/contextualsearch/ContextualSearchManagerService.java
@@ -27,10 +27,6 @@ import static android.content.Intent.FLAG_ACTIVITY_NO_USER_ACTION;
import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE;
import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
-import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR;
-import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL;
-import static android.view.WindowManager.LayoutParams.TYPE_POINTER;
-import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR;
import static com.android.server.wm.ActivityTaskManagerInternal.ASSIST_KEY_CONTENT;
import static com.android.server.wm.ActivityTaskManagerInternal.ASSIST_KEY_STRUCTURE;
@@ -74,6 +70,7 @@ import android.util.Log;
import android.util.Slog;
import android.view.IWindowManager;
import android.window.ScreenCapture;
+import android.window.ScreenCapture.ScreenshotHardwareBuffer;
import com.android.internal.R;
import com.android.internal.annotations.GuardedBy;
@@ -333,10 +330,10 @@ public class ContextualSearchManagerService extends SystemService {
isManagedProfileVisible = true;
}
}
+ final String csPackage = Objects.requireNonNull(launchIntent.getPackage());
+ final int csUid = mPackageManager.getPackageUid(csPackage, /* flags */ 0L, userId);
if (isAssistDataAllowed) {
try {
- final String csPackage = Objects.requireNonNull(launchIntent.getPackage());
- final int csUid = mPackageManager.getPackageUid(csPackage, 0, 0);
mAssistDataRequester.requestAssistData(
activityTokens,
/* fetchData */ true,
@@ -350,17 +347,8 @@ public class ContextualSearchManagerService extends SystemService {
Log.e(TAG, "Could not request assist data", e);
}
}
- final ScreenCapture.ScreenshotHardwareBuffer shb;
- if (mWmInternal != null) {
- shb = mWmInternal.takeAssistScreenshot(Set.of(
- TYPE_STATUS_BAR,
- TYPE_NAVIGATION_BAR,
- TYPE_NAVIGATION_BAR_PANEL,
- TYPE_POINTER));
- } else {
- if (DEBUG) Log.w(TAG, "Can't capture contextual screenshot: mWmInternal is null");
- shb = null;
- }
+ final ScreenshotHardwareBuffer shb = mWmInternal.takeContextualSearchScreenshot(
+ (Flags.contextualSearchWindowLayer() ? csUid : -1));
final Bitmap bm = shb != null ? shb.asBitmap() : null;
// Now that everything is fetched, putting it in the launchIntent.
if (bm != null) {
@@ -509,15 +497,17 @@ public class ContextualSearchManagerService extends SystemService {
bundle.putParcelable(ContextualSearchManager.EXTRA_TOKEN, mToken);
// We get take the screenshot with the system server's identity because the system
// server has READ_FRAME_BUFFER permission to get the screenshot.
+ final int callingUid = Binder.getCallingUid();
Binder.withCleanCallingIdentity(() -> {
- if (mWmInternal != null) {
+ final ScreenshotHardwareBuffer shb =
+ mWmInternal.takeContextualSearchScreenshot(
+ (Flags.contextualSearchWindowLayer() ? callingUid : -1));
+ final Bitmap bm = shb != null ? shb.asBitmap() : null;
+ if (bm != null) {
bundle.putParcelable(ContextualSearchManager.EXTRA_SCREENSHOT,
- mWmInternal.takeAssistScreenshot(Set.of(
- TYPE_STATUS_BAR,
- TYPE_NAVIGATION_BAR,
- TYPE_NAVIGATION_BAR_PANEL,
- TYPE_POINTER))
- .asBitmap().asShared());
+ bm.asShared());
+ bundle.putBoolean(ContextualSearchManager.EXTRA_FLAG_SECURE_FOUND,
+ shb.containsSecureLayers());
}
try {
callback.onResult(
diff --git a/services/core/Android.bp b/services/core/Android.bp
index 420dcfe9cea6..f98076ab41e4 100644
--- a/services/core/Android.bp
+++ b/services/core/Android.bp
@@ -227,6 +227,7 @@ java_library_static {
"com.android.sysprop.watchdog",
"securebox",
"apache-commons-math",
+ "apache-commons-compress",
"battery_saver_flag_lib",
"notification_flags_lib",
"power_hint_flags_lib",
@@ -249,6 +250,7 @@ java_library_static {
"aconfig_new_storage_flags_lib",
"powerstats_flags_lib",
"locksettings_flags_lib",
+ "MmdProperties",
"mmd_flags_lib",
"profiling_flags_lib",
"android.adpf.sessionmanager_aidl-java",
diff --git a/services/core/java/com/android/server/BootReceiver.java b/services/core/java/com/android/server/BootReceiver.java
index 7a5b8660ef7c..cf0d7e72ba8b 100644
--- a/services/core/java/com/android/server/BootReceiver.java
+++ b/services/core/java/com/android/server/BootReceiver.java
@@ -53,6 +53,7 @@ import com.android.modules.utils.TypedXmlSerializer;
import com.android.server.am.DropboxRateLimiter;
import com.android.server.os.TombstoneProtos.Tombstone;
+import libcore.io.IoUtils;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -154,6 +155,10 @@ public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
+ if (!Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
+ return;
+ }
+
// Log boot events in the background to avoid blocking the main thread with I/O
new Thread() {
@Override
@@ -219,6 +224,8 @@ public class BootReceiver extends BroadcastReceiver {
} catch (Exception e) {
Slog.wtf(TAG, "Error watching for trace events", e);
return 0; // Unregister the handler.
+ } finally {
+ IoUtils.closeQuietly(fd);
}
return OnFileDescriptorEventListener.EVENT_INPUT;
}
diff --git a/services/core/java/com/android/server/OWNERS b/services/core/java/com/android/server/OWNERS
index ef769cf6217c..6858e2941ff9 100644
--- a/services/core/java/com/android/server/OWNERS
+++ b/services/core/java/com/android/server/OWNERS
@@ -9,7 +9,6 @@ per-file DisplayThread.java = michaelwr@google.com, ogunwale@google.com
# Zram writeback
per-file ZramWriteback.java = minchan@google.com, rajekumar@google.com
-per-file ZramMaintenance.java = kawasin@google.com
# ServiceWatcher
per-file ServiceWatcher.java = sooniln@google.com
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java
index 19e7e062758a..350ecab1dd5f 100644
--- a/services/core/java/com/android/server/StorageManagerService.java
+++ b/services/core/java/com/android/server/StorageManagerService.java
@@ -127,6 +127,7 @@ import android.provider.Downloads;
import android.provider.MediaStore;
import android.provider.Settings;
import android.service.storage.ExternalStorageService;
+import android.sysprop.MmdProperties;
import android.text.TextUtils;
import android.text.format.DateUtils;
import android.util.ArrayMap;
@@ -156,6 +157,7 @@ import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.Preconditions;
import com.android.modules.utils.TypedXmlPullParser;
import com.android.modules.utils.TypedXmlSerializer;
+import com.android.server.memory.ZramMaintenance;
import com.android.server.pm.Installer;
import com.android.server.pm.UserManagerInternal;
import com.android.server.storage.AppFuseBridge;
@@ -934,22 +936,21 @@ class StorageManagerService extends IStorageManager.Stub
// Start scheduling nominally-daily fstrim operations
MountServiceIdler.scheduleIdlePass(mContext);
- // Toggle zram-enable system property in response to settings
- mContext.getContentResolver().registerContentObserver(
- Settings.Global.getUriFor(Settings.Global.ZRAM_ENABLED),
- false /*notifyForDescendants*/,
- new ContentObserver(null /* current thread */) {
- @Override
- public void onChange(boolean selfChange) {
- refreshZramSettings();
- }
- });
- refreshZramSettings();
-
- if (mmdEnabled()) {
- // TODO: b/375432472 - Start zram maintenance only when zram is enabled.
+ if (mmdEnabled() && MmdProperties.mmd_zram_enabled().orElse(false)) {
ZramMaintenance.startZramMaintenance(mContext);
} else {
+ // Toggle zram-enable system property in response to settings
+ mContext.getContentResolver().registerContentObserver(
+ Settings.Global.getUriFor(Settings.Global.ZRAM_ENABLED),
+ false /*notifyForDescendants*/,
+ new ContentObserver(null /* current thread */) {
+ @Override
+ public void onChange(boolean selfChange) {
+ refreshZramSettings();
+ }
+ });
+ refreshZramSettings();
+
// Schedule zram writeback unless zram is disabled by persist.sys.zram_enabled
String zramPropValue = SystemProperties.get(ZRAM_ENABLED_PROPERTY);
if (!zramPropValue.equals("0")
@@ -983,7 +984,7 @@ class StorageManagerService extends IStorageManager.Stub
// sole writer.
SystemProperties.set(ZRAM_ENABLED_PROPERTY, desiredPropertyValue);
// Schedule writeback only if zram is being enabled.
- if (!mmdEnabled() && desiredPropertyValue.equals("1")
+ if (desiredPropertyValue.equals("1")
&& mContext.getResources().getBoolean(
com.android.internal.R.bool.config_zramWriteback)) {
ZramWriteback.scheduleZramWriteback(mContext);
diff --git a/services/core/java/com/android/server/TradeInModeService.java b/services/core/java/com/android/server/TradeInModeService.java
index 70a033086261..1a9e02c86560 100644
--- a/services/core/java/com/android/server/TradeInModeService.java
+++ b/services/core/java/com/android/server/TradeInModeService.java
@@ -41,12 +41,15 @@ import android.util.Slog;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
public final class TradeInModeService extends SystemService {
private static final String TAG = "TradeInModeService";
private static final String TIM_PROP = "persist.adb.tradeinmode";
+ private static final String TIM_TEST_PROP = "persist.adb.test_tradeinmode";
private static final int TIM_STATE_UNSET = 0;
@@ -108,6 +111,10 @@ public final class TradeInModeService extends SystemService {
// setup completion observer.
if (isDeviceSetup()) {
stopTradeInMode();
+ } else if (isDebuggable() && !isForceEnabledForTesting()) {
+ // The device was made debuggable after entering TIM. This
+ // can happen while flashing. For convenience, leave test mode.
+ leaveTestMode();
} else {
watchForSetupCompletion();
watchForNetworkChange();
@@ -137,12 +144,13 @@ public final class TradeInModeService extends SystemService {
Slog.i(TAG, "Not starting trade-in mode, device is setup.");
return false;
}
- if (SystemProperties.getInt("ro.debuggable", 0) == 1) {
- // We don't want to force adbd into TIM on debug builds.
- Slog.e(TAG, "Not starting trade-in mode, device is debuggable.");
- return false;
- }
- if (isAdbEnabled()) {
+ if (isDebuggable()) {
+ if (!isForceEnabledForTesting()) {
+ // We don't want to force adbd into TIM on debug builds.
+ Slog.e(TAG, "Not starting trade-in mode, device is debuggable.");
+ return false;
+ }
+ } else if (isAdbEnabled()) {
Slog.e(TAG, "Not starting trade-in mode, adb is already enabled.");
return false;
}
@@ -170,12 +178,7 @@ public final class TradeInModeService extends SystemService {
Slog.e(TAG, "Cannot enter evaluation mode, FRP lock is present.");
return false;
}
-
- try (FileWriter fw = new FileWriter(WIPE_INDICATOR_FILE,
- StandardCharsets.US_ASCII)) {
- fw.write("0");
- } catch (IOException e) {
- Slog.e(TAG, "Failed to write " + WIPE_INDICATOR_FILE, e);
+ if (!scheduleTradeInModeWipe()) {
return false;
}
@@ -188,7 +191,7 @@ public final class TradeInModeService extends SystemService {
}
SystemProperties.set(TIM_PROP, Integer.toString(TIM_STATE_EVALUATION_MODE));
- SystemProperties.set("ctl.restart", "adbd");
+ restartAdbd();
return true;
}
@@ -199,6 +202,55 @@ public final class TradeInModeService extends SystemService {
"Cannot test for trade-in evaluation mode allowed");
return !isFrpActive();
}
+
+ @Override
+ @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
+ public void scheduleWipeForTesting() {
+ enforceTestingPermissions();
+
+ scheduleTradeInModeWipe();
+ }
+
+ @Override
+ @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
+ public void startTesting() {
+ enforceTestingPermissions();
+
+ enterTestMode();
+ }
+
+ @Override
+ @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
+ public void stopTesting() {
+ enforceTestingPermissions();
+
+ if (!isForceEnabledForTesting()) {
+ throw new IllegalStateException("testing must have been started");
+ }
+
+ final long callingId = Binder.clearCallingIdentity();
+ try {
+ leaveTestMode();
+ } finally {
+ Binder.restoreCallingIdentity(callingId);
+ }
+ }
+
+ @Override
+ @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
+ public boolean isTesting() {
+ enforceTestingPermissions();
+
+ return isForceEnabledForTesting();
+ }
+
+ private void enforceTestingPermissions() {
+ mContext.enforceCallingOrSelfPermission("android.permission.ENTER_TRADE_IN_MODE",
+ "Caller must have ENTER_TRADE_IN_MODE permission");
+ if (!isDebuggable()) {
+ throw new SecurityException("ro.debuggable must be set to 1");
+ }
+ }
}
private void startTradeInMode() {
@@ -206,8 +258,7 @@ public final class TradeInModeService extends SystemService {
SystemProperties.set(TIM_PROP, Integer.toString(TIM_STATE_FOYER));
- final ContentResolver cr = mContext.getContentResolver();
- Settings.Global.putInt(cr, Settings.Global.ADB_ENABLED, 1);
+ setAdbEnabled(true);
watchForSetupCompletion();
watchForNetworkChange();
@@ -222,8 +273,51 @@ public final class TradeInModeService extends SystemService {
removeNetworkWatch();
removeAccountsWatch();
+ if (isForceEnabledForTesting()) {
+ // If testing in a debug build, we need to re-enable ADB.
+ restartAdbd();
+ } else {
+ // Otherwise, ADB must not be enabled.
+ setAdbEnabled(false);
+ }
+ }
+
+ private void enterTestMode() {
+ SystemProperties.set(TIM_TEST_PROP, "1");
+ }
+
+ private void leaveTestMode() {
+ if (getTradeInModeState() == TIM_STATE_FOYER) {
+ stopTradeInMode();
+ }
+
+ SystemProperties.set(TIM_TEST_PROP, "");
+ SystemProperties.set(TIM_PROP, "");
+ try {
+ Files.deleteIfExists(Paths.get(WIPE_INDICATOR_FILE));
+ } catch (IOException e) {
+ Slog.e(TAG, "Failed to remove wipe indicator", e);
+ }
+ }
+
+ private boolean scheduleTradeInModeWipe() {
+ try (FileWriter fw = new FileWriter(WIPE_INDICATOR_FILE,
+ StandardCharsets.US_ASCII)) {
+ fw.write("0");
+ } catch (IOException e) {
+ Slog.e(TAG, "Failed to write " + WIPE_INDICATOR_FILE, e);
+ return false;
+ }
+ return true;
+ }
+
+ private void restartAdbd() {
+ SystemProperties.set("ctl.restart", "adbd");
+ }
+
+ private void setAdbEnabled(boolean enabled) {
final ContentResolver cr = mContext.getContentResolver();
- Settings.Global.putInt(cr, Settings.Global.ADB_ENABLED, 0);
+ Settings.Global.putInt(cr, Settings.Global.ADB_ENABLED, enabled ? 1 : 0);
}
private int getTradeInModeState() {
@@ -234,6 +328,10 @@ public final class TradeInModeService extends SystemService {
return SystemProperties.getInt("ro.debuggable", 0) == 1;
}
+ private boolean isForceEnabledForTesting() {
+ return isDebuggable() && SystemProperties.getInt(TIM_TEST_PROP, 0) == 1;
+ }
+
private boolean isAdbEnabled() {
final ContentResolver cr = mContext.getContentResolver();
return Settings.Global.getInt(cr, Settings.Global.ADB_ENABLED, 0) == 1;
diff --git a/services/core/java/com/android/server/UiModeManagerService.java b/services/core/java/com/android/server/UiModeManagerService.java
index 896c9b8d0932..c65981bf0703 100644
--- a/services/core/java/com/android/server/UiModeManagerService.java
+++ b/services/core/java/com/android/server/UiModeManagerService.java
@@ -16,11 +16,13 @@
package com.android.server;
-import static android.app.Flags.modesApi;
import static android.app.Flags.enableCurrentModeTypeBinderCache;
import static android.app.Flags.enableNightModeBinderCache;
+import static android.app.Flags.modesApi;
import static android.app.UiModeManager.ContrastUtils.CONTRAST_DEFAULT_VALUE;
import static android.app.UiModeManager.DEFAULT_PRIORITY;
+import static android.app.UiModeManager.FORCE_INVERT_TYPE_DARK;
+import static android.app.UiModeManager.FORCE_INVERT_TYPE_OFF;
import static android.app.UiModeManager.MODE_ATTENTION_THEME_OVERLAY_OFF;
import static android.app.UiModeManager.MODE_NIGHT_AUTO;
import static android.app.UiModeManager.MODE_NIGHT_CUSTOM;
@@ -33,6 +35,7 @@ import static android.app.UiModeManager.PROJECTION_TYPE_AUTOMOTIVE;
import static android.app.UiModeManager.PROJECTION_TYPE_NONE;
import static android.os.UserHandle.USER_SYSTEM;
import static android.os.UserHandle.getCallingUserId;
+import static android.provider.Settings.Secure.ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED;
import static android.provider.Settings.Secure.CONTRAST_LEVEL;
import static android.util.TimeUtils.isTimeBetween;
@@ -45,6 +48,7 @@ import android.annotation.Nullable;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityTaskManager;
+import android.app.ActivityThread;
import android.app.AlarmManager;
import android.app.IOnProjectionStateChangedListener;
import android.app.IUiModeManager;
@@ -56,6 +60,7 @@ import android.app.PendingIntent;
import android.app.StatusBarManager;
import android.app.UiModeManager;
import android.app.UiModeManager.AttentionModeThemeOverlayType;
+import android.app.UiModeManager.ForceInvertType;
import android.app.UiModeManager.NightModeCustomReturnType;
import android.app.UiModeManager.NightModeCustomType;
import android.content.BroadcastReceiver;
@@ -93,6 +98,7 @@ import android.service.vr.IVrStateCallbacks;
import android.util.ArraySet;
import android.util.Slog;
import android.util.SparseArray;
+import android.util.SparseIntArray;
import com.android.internal.R;
import com.android.internal.annotations.GuardedBy;
@@ -256,6 +262,9 @@ final class UiModeManagerService extends SystemService {
@GuardedBy("mLock")
private final SparseArray<Float> mContrasts = new SparseArray<>();
+ @GuardedBy("mLock")
+ private final SparseIntArray mForceInvertStates = new SparseIntArray();
+
public UiModeManagerService(Context context) {
this(context, /* setupWizardComplete= */ false, /* tm= */ null, new Injector());
}
@@ -407,9 +416,33 @@ final class UiModeManagerService extends SystemService {
@Override
public void onChange(boolean selfChange, Uri uri) {
updateSystemProperties();
+ updateForceInvertStates();
}
};
+ private final ContentObserver mForceInvertStateObserver = new ContentObserver(mHandler) {
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ updateForceInvertStates();
+ }
+ };
+
+ private void updateForceInvertStates() {
+ if (!android.view.accessibility.Flags.forceInvertColor()) {
+ return;
+ }
+
+ synchronized (mLock) {
+ if (updateForceInvertStateLocked()) {
+ int forceInvertState = getForceInvertStateLocked();
+ mUiModeManagerCallbacks.get(mCurrentUser, new RemoteCallbackList<>())
+ .broadcast(ignoreRemoteException(
+ callback ->
+ callback.notifyForceInvertStateChanged(forceInvertState)));
+ }
+ }
+ }
+
private final ContentObserver mContrastObserver = new ContentObserver(mHandler) {
@Override
public void onChange(boolean selfChange, Uri uri) {
@@ -485,6 +518,12 @@ final class UiModeManagerService extends SystemService {
context.getContentResolver()
.registerContentObserver(Secure.getUriFor(Secure.UI_NIGHT_MODE),
false, mDarkThemeObserver, 0);
+ if (android.view.accessibility.Flags.forceInvertColor()) {
+ context.getContentResolver()
+ .registerContentObserver(
+ Secure.getUriFor(ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED),
+ false, mForceInvertStateObserver, UserHandle.USER_ALL);
+ }
context.getContentResolver().registerContentObserver(
Secure.getUriFor(Secure.CONTRAST_LEVEL), false,
mContrastObserver, UserHandle.USER_ALL);
@@ -919,7 +958,7 @@ final class UiModeManagerService extends SystemService {
@android.annotation.EnforcePermission(android.Manifest.permission.MODIFY_DAY_NIGHT_MODE)
@Override
- public @NightModeCustomReturnType int getNightModeCustomType() {
+ public @NightModeCustomReturnType int getNightModeCustomType() {
getNightModeCustomType_enforcePermission();
synchronized (mLock) {
return mNightModeCustomType;
@@ -1275,6 +1314,14 @@ final class UiModeManagerService extends SystemService {
return getContrastLocked();
}
}
+
+ @Override
+ @ForceInvertType
+ public int getForceInvertState() {
+ synchronized (mLock) {
+ return getForceInvertStateLocked();
+ }
+ }
};
private void enforceProjectionTypePermissions(@UiModeManager.ProjectionType int p) {
@@ -1358,6 +1405,76 @@ final class UiModeManagerService extends SystemService {
}
/**
+ * Return the force invert for the current user. If not cached, fetch it from the settings.
+ */
+ @GuardedBy("mLock")
+ @ForceInvertType
+ private int getForceInvertStateLocked() {
+ if (mForceInvertStates.indexOfKey(mCurrentUser) < 0) {
+ updateForceInvertStateLocked();
+ }
+ return mForceInvertStates.get(mCurrentUser);
+ }
+
+ /**
+ * Read the force invert setting for the current user and update {@link #mForceInvertStates}
+ * if the contrast changed. Returns true if {@link #mForceInvertStates} was updated.
+ */
+ @GuardedBy("mLock")
+ private boolean updateForceInvertStateLocked() {
+ int forceInvertState = getForceInvertStateInternal();
+ if (mForceInvertStates.get(mCurrentUser) != forceInvertState) {
+ mForceInvertStates.put(mCurrentUser, forceInvertState);
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Returns the current state of force invert, which modifies the display colors to
+ * enhance visibility based on the system's dark theme settings and app-specific configurations.
+ *
+ * <p>This method is for informational purposes only. The application does not need to
+ * implement any special handling for force invert; the system applies it automatically.
+ * If you want to prevent force invert from affecting your app, ensure you have defined
+ * both light and dark themes. Force invert is not applied to apps that already adapt
+ * to the user's system theme preference.</p>
+ *
+ * @return The current force invert state, represented by a {@code ForceDarkType} constant.
+ *
+ * @hide
+ */
+ private int getForceInvertStateInternal() {
+ if (!android.view.accessibility.Flags.forceInvertColor()) {
+ return FORCE_INVERT_TYPE_OFF;
+ }
+
+ if (!isSystemInDarkTheme()) {
+ return FORCE_INVERT_TYPE_OFF;
+ }
+
+ if (!isForceInvert()) {
+ return FORCE_INVERT_TYPE_OFF;
+ }
+
+ return FORCE_INVERT_TYPE_DARK;
+ }
+
+ private boolean isSystemInDarkTheme() {
+ Context sysUiContext = ActivityThread.currentActivityThread().getSystemUiContext();
+ int sysUiNightMode = sysUiContext.getResources().getConfiguration().uiMode
+ & Configuration.UI_MODE_NIGHT_MASK;
+ return sysUiNightMode == Configuration.UI_MODE_NIGHT_YES;
+ }
+
+ private boolean isForceInvert() {
+ return Settings.Secure.getIntForUser(
+ getContext().getContentResolver(),
+ Settings.Secure.ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED,
+ /* def= */ 0, mCurrentUser) == 1;
+ }
+
+ /**
* Return the contrast for the current user. If not cached, fetch it from the settings.
*/
@GuardedBy("mLock")
@@ -1967,6 +2084,14 @@ final class UiModeManagerService extends SystemService {
sendConfigurationAndStartDreamOrDockAppLocked(category);
}
+ private boolean shouldStartDockApp(Context context, Intent homeIntent) {
+ if (mWatch && !mSetupWizardComplete) {
+ // Do not ever start dock app when setup is not complete on a watch.
+ return false;
+ }
+ return Sandman.shouldStartDockApp(context, homeIntent);
+ }
+
private void sendConfigurationAndStartDreamOrDockAppLocked(String category) {
// Update the configuration but don't send it yet.
mHoldingConfiguration = false;
@@ -1983,7 +2108,7 @@ final class UiModeManagerService extends SystemService {
// activity manager take care of both the start and config
// change.
Intent homeIntent = buildHomeIntent(category);
- if (Sandman.shouldStartDockApp(getContext(), homeIntent)) {
+ if (shouldStartDockApp(getContext(), homeIntent)) {
try {
int result = ActivityTaskManager.getService().startActivityWithConfig(
null, getContext().getBasePackageName(),
diff --git a/services/core/java/com/android/server/VpnManagerService.java b/services/core/java/com/android/server/VpnManagerService.java
index 626fa708b4e7..7e68239e0c3b 100644
--- a/services/core/java/com/android/server/VpnManagerService.java
+++ b/services/core/java/com/android/server/VpnManagerService.java
@@ -19,6 +19,7 @@ package com.android.server;
import static android.Manifest.permission.NETWORK_STACK;
import static com.android.net.module.util.PermissionUtils.enforceAnyPermissionOf;
+import static com.android.net.module.util.PermissionUtils.enforceNetworkStackPermission;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -1020,6 +1021,8 @@ public class VpnManagerService extends IVpnManager.Stub {
@Override
@Nullable
public byte[] getFromVpnProfileStore(@NonNull String name) {
+ // TODO(b/307903113): Replace NETWORK_STACK permission and adopt proper permission
+ enforceNetworkStackPermission(mContext);
return mVpnProfileStore.get(name);
}
@@ -1037,6 +1040,8 @@ public class VpnManagerService extends IVpnManager.Stub {
*/
@Override
public boolean putIntoVpnProfileStore(@NonNull String name, @NonNull byte[] blob) {
+ // TODO(b/307903113): Replace NETWORK_STACK permission and adopt proper permission
+ enforceNetworkStackPermission(mContext);
return mVpnProfileStore.put(name, blob);
}
@@ -1052,6 +1057,8 @@ public class VpnManagerService extends IVpnManager.Stub {
*/
@Override
public boolean removeFromVpnProfileStore(@NonNull String name) {
+ // TODO(b/307903113): Replace NETWORK_STACK permission and adopt proper permission
+ enforceNetworkStackPermission(mContext);
return mVpnProfileStore.remove(name);
}
@@ -1069,6 +1076,8 @@ public class VpnManagerService extends IVpnManager.Stub {
@Override
@NonNull
public String[] listFromVpnProfileStore(@NonNull String prefix) {
+ // TODO(b/307903113): Replace NETWORK_STACK permission and adopt proper permission
+ enforceNetworkStackPermission(mContext);
return mVpnProfileStore.list(prefix);
}
diff --git a/services/core/java/com/android/server/Watchdog.java b/services/core/java/com/android/server/Watchdog.java
index 8e520dc632c3..96b30d4e1285 100644
--- a/services/core/java/com/android/server/Watchdog.java
+++ b/services/core/java/com/android/server/Watchdog.java
@@ -191,6 +191,9 @@ public class Watchdog implements Dumpable {
"android.hardware.sensors.ISensors/",
"android.hardware.vibrator.IVibrator/",
"android.hardware.vibrator.IVibratorManager/",
+ "android.hardware.wifi.hostapd.IHostapd/",
+ "android.hardware.wifi.IWifi/",
+ "android.hardware.wifi.supplicant.ISupplicant/",
"android.system.suspend.ISystemSuspend/",
};
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 0603c4506cd1..7db63a5c4a11 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -15113,10 +15113,24 @@ public class ActivityManagerService extends IActivityManager.Stub
}
}
- void noteUidProcessState(final int uid, final int state,
- final @ProcessCapability int capability) {
- mBatteryStatsService.noteUidProcessState(uid, state);
+ /**
+ * Called by {@link OomAdjuster} whenever either the ProcessState or Capability of a uid has
+ * changed.
+ * NOTE: Use {@link #noteUidProcessState(int, int)} instead of this method for listeners
+ * interested in only ProcessState changes.
+ */
+ void noteUidProcessStateAndCapability(final int uid, final int state,
+ final @ProcessCapability int capability) {
mAppOpsService.updateUidProcState(uid, state, capability);
+ }
+
+ /**
+ * Called by {@link OomAdjuster} whenever either the ProcessState of a uid has changed.
+ * NOTE: Use {@link #noteUidProcessStateAndCapability(int, int, int)} instead of this method
+ * for listeners interested in both ProcessState and Capability changes.
+ */
+ void noteUidProcessState(final int uid, final int state) {
+ mBatteryStatsService.noteUidProcessState(uid, state);
if (StatsPullAtomService.ENABLE_MOBILE_DATA_STATS_AGGREGATED_PULLER) {
try {
if (mStatsPullAtomServiceInternal == null) {
@@ -19397,13 +19411,13 @@ public class ActivityManagerService extends IActivityManager.Stub
if (((intent.getExtendedFlags() & Intent.EXTENDED_FLAG_NESTED_INTENT_KEYS_COLLECTED) == 0)
&& intent.getExtras() != null && intent.getExtras().hasIntent()) {
Slog.wtf(TAG,
- "[IntentRedirect] The intent does not have its nested keys collected as a "
+ "[IntentRedirect Hardening] The intent does not have its nested keys collected as a "
+ "preparation for creating intent creator tokens. Intent: "
+ intent + "; creatorPackage: " + creatorPackage);
if (preventIntentRedirectShowToastIfNestedKeysNotCollectedRW()) {
UiThread.getHandler().post(
() -> Toast.makeText(mContext,
- "Nested keys not collected. go/report-bug-intentRedir to report a"
+ "Nested keys not collected, activity launch won't be blocked. go/report-bug-intentRedir to report a"
+ " bug", Toast.LENGTH_LONG).show());
}
if (preventIntentRedirectThrowExceptionIfNestedKeysNotCollected()) {
diff --git a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
index cbebc905796c..c237897f1229 100644
--- a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
+++ b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
@@ -4279,7 +4279,6 @@ final class ActivityManagerShellCommand extends ShellCommand {
}
int runClearBadProcess(PrintWriter pw) throws RemoteException {
- final String processName = getNextArgRequired();
int userId = UserHandle.USER_CURRENT;
String opt;
while ((opt = getNextOption()) != null) {
@@ -4290,6 +4289,7 @@ final class ActivityManagerShellCommand extends ShellCommand {
return -1;
}
}
+ final String processName = getNextArgRequired();
if (userId == UserHandle.USER_CURRENT) {
userId = mInternal.getCurrentUserId();
}
diff --git a/services/core/java/com/android/server/am/AppBatteryTracker.java b/services/core/java/com/android/server/am/AppBatteryTracker.java
index 374abe0256c1..0bc816e78e7b 100644
--- a/services/core/java/com/android/server/am/AppBatteryTracker.java
+++ b/services/core/java/com/android/server/am/AppBatteryTracker.java
@@ -818,8 +818,10 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy>
void dump(PrintWriter pw, String prefix) {
pw.print(prefix);
pw.println("APP BATTERY STATE TRACKER:");
- // Force an update.
- updateBatteryUsageStatsIfNecessary(mInjector.currentTimeMillis(), true);
+ if (mInjector.getActivityManagerInternal().isBooted()) {
+ // Force an update.
+ updateBatteryUsageStatsIfNecessary(mInjector.currentTimeMillis(), true);
+ }
// Force a check.
scheduleBgBatteryUsageStatsCheck();
// Wait for its completion (as it runs in handler thread for the sake of thread safe)
@@ -878,8 +880,10 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy>
@Override
void dumpAsProto(ProtoOutputStream proto, int uid) {
- // Force an update.
- updateBatteryUsageStatsIfNecessary(mInjector.currentTimeMillis(), true);
+ if (mInjector.getActivityManagerInternal().isBooted()) {
+ // Force an update.
+ updateBatteryUsageStatsIfNecessary(mInjector.currentTimeMillis(), true);
+ }
synchronized (mLock) {
final SparseArray<ImmutableBatteryUsage> uidConsumers = mUidBatteryUsageInWindow;
if (uid != android.os.Process.INVALID_UID) {
diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java
index 644077a7e6bb..c8b0a57fe9f0 100644
--- a/services/core/java/com/android/server/am/BatteryStatsService.java
+++ b/services/core/java/com/android/server/am/BatteryStatsService.java
@@ -526,6 +526,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub
}
public void systemServicesReady() {
+ mStats.setBatteryHistoryCompressionEnabled(
+ Flags.extendedBatteryHistoryCompressionEnabled());
mStats.saveBatteryUsageStatsOnReset(mBatteryUsageStatsProvider, mPowerStatsStore,
isBatteryUsageStatsAccumulationSupported());
mStats.resetBatteryHistoryOnNewSession(
diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java
index 87f843b53a1d..363ba82cb332 100644
--- a/services/core/java/com/android/server/am/OomAdjuster.java
+++ b/services/core/java/com/android/server/am/OomAdjuster.java
@@ -1681,8 +1681,11 @@ public class OomAdjuster {
}
if ((uidChange & UidRecord.CHANGE_PROCSTATE) != 0
|| (uidChange & UidRecord.CHANGE_CAPABILITY) != 0) {
- mService.noteUidProcessState(uidRec.getUid(), uidRec.getCurProcState(),
- uidRec.getCurCapability());
+ mService.noteUidProcessStateAndCapability(uidRec.getUid(),
+ uidRec.getCurProcState(), uidRec.getCurCapability());
+ }
+ if ((uidChange & UidRecord.CHANGE_PROCSTATE) != 0) {
+ mService.noteUidProcessState(uidRec.getUid(), uidRec.getCurProcState());
}
if (uidRec.hasForegroundServices()) {
mService.mServices.foregroundServiceProcStateChangedLocked(uidRec);
@@ -4104,6 +4107,7 @@ public class OomAdjuster {
return;
}
+ final boolean freezePolicy = getFreezePolicy(app);
final ProcessCachedOptimizerRecord opt = app.mOptRecord;
final ProcessStateRecord state = app.mState;
if (Flags.traceUpdateAppFreezeStateLsp()) {
@@ -4120,6 +4124,21 @@ public class OomAdjuster {
if ((oomAdjChanged || shouldNotFreezeChanged || cpuCapabilityChanged)
&& Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER)) {
Trace.instantForTrack(Trace.TRACE_TAG_ACTIVITY_MANAGER,
+ "FreezeLite",
+ (opt.isFrozen() ? "F" : "-")
+ + (opt.isPendingFreeze() ? "P" : "-")
+ + (opt.isFreezeExempt() ? "E" : "-")
+ + (opt.shouldNotFreeze() ? "N" : "-")
+ + (hasCpuCapability ? "T" : "-")
+ + (immediate ? "I" : "-")
+ + (freezePolicy ? "Z" : "-")
+ + (Flags.useCpuTimeCapability() ? "t" : "-")
+ + (Flags.prototypeAggressiveFreezing() ? "a" : "-")
+ + "/" + app.getPid()
+ + "/" + state.getCurAdj()
+ + "/" + oldOomAdj
+ + "/" + opt.shouldNotFreezeReason());
+ Trace.instantForTrack(Trace.TRACE_TAG_ACTIVITY_MANAGER,
CachedAppOptimizer.ATRACE_FREEZER_TRACK,
"updateAppFreezeStateLSP " + app.processName
+ " pid: " + app.getPid()
@@ -4134,7 +4153,7 @@ public class OomAdjuster {
}
}
- if (getFreezePolicy(app)) {
+ if (freezePolicy) {
// This process should be frozen.
if (immediate && !opt.isFrozen()) {
// And it will be frozen immediately.
diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java
index f7eaa159be30..b8babe69d5a7 100644
--- a/services/core/java/com/android/server/am/ProcessList.java
+++ b/services/core/java/com/android/server/am/ProcessList.java
@@ -3286,8 +3286,9 @@ public final class ProcessList {
uidRec.updateHasInternetPermission();
mActiveUids.put(proc.uid, uidRec);
EventLogTags.writeAmUidRunning(uidRec.getUid());
- mService.noteUidProcessState(uidRec.getUid(), uidRec.getCurProcState(),
+ mService.noteUidProcessStateAndCapability(uidRec.getUid(), uidRec.getCurProcState(),
uidRec.getCurCapability());
+ mService.noteUidProcessState(uidRec.getUid(), uidRec.getCurProcState());
}
proc.setUidRecord(uidRec);
uidRec.addProcess(proc);
@@ -3489,8 +3490,11 @@ public final class ProcessList {
EventLogTags.writeAmUidStopped(uid);
mActiveUids.remove(uid);
mService.mFgsStartTempAllowList.removeUid(record.info.uid);
- mService.noteUidProcessState(uid, ActivityManager.PROCESS_STATE_NONEXISTENT,
+ mService.noteUidProcessStateAndCapability(uid,
+ ActivityManager.PROCESS_STATE_NONEXISTENT,
ActivityManager.PROCESS_CAPABILITY_NONE);
+ mService.noteUidProcessState(uid, ActivityManager.PROCESS_STATE_NONEXISTENT
+ );
}
record.setUidRecord(null);
}
diff --git a/services/core/java/com/android/server/am/SettingsToPropertiesMapper.java b/services/core/java/com/android/server/am/SettingsToPropertiesMapper.java
index 5184a2c4ec30..c6338307b192 100644
--- a/services/core/java/com/android/server/am/SettingsToPropertiesMapper.java
+++ b/services/core/java/com/android/server/am/SettingsToPropertiesMapper.java
@@ -186,8 +186,10 @@ public class SettingsToPropertiesMapper {
"core_libraries",
"crumpet",
"dck_framework",
+ "desktop_connectivity",
"desktop_hwsec",
"desktop_stats",
+ "desktop_wifi",
"devoptions_settings",
"game",
"gpu",
@@ -218,6 +220,7 @@ public class SettingsToPropertiesMapper {
"pixel_continuity",
"pixel_display",
"pixel_perf",
+ "pixel_sensai",
"pixel_sensors",
"pixel_state_server",
"pixel_system_sw_video",
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java
index 27e9e44f1090..e0fbaf43ea43 100644
--- a/services/core/java/com/android/server/am/UserController.java
+++ b/services/core/java/com/android/server/am/UserController.java
@@ -31,6 +31,7 @@ import static android.app.ActivityManagerInternal.ALLOW_FULL_ONLY;
import static android.app.ActivityManagerInternal.ALLOW_NON_FULL;
import static android.app.ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE;
import static android.app.ActivityManagerInternal.ALLOW_PROFILES_OR_NON_FULL;
+import static android.app.KeyguardManager.LOCK_ON_USER_SWITCH_CALLBACK;
import static android.os.PowerWhitelistManager.REASON_BOOT_COMPLETED;
import static android.os.PowerWhitelistManager.REASON_LOCKED_BOOT_COMPLETED;
import static android.os.PowerWhitelistManager.TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED;
@@ -3904,10 +3905,6 @@ class UserController implements Handler.Callback {
return mService.mWindowManager;
}
- ActivityTaskManagerInternal getActivityTaskManagerInternal() {
- return mService.mAtmInternal;
- }
-
void activityManagerOnUserStopped(@UserIdInt int userId) {
LocalServices.getService(ActivityTaskManagerInternal.class).onUserStopped(userId);
}
@@ -4122,40 +4119,25 @@ class UserController implements Handler.Callback {
}
void lockDeviceNowAndWaitForKeyguardShown() {
- if (getWindowManager().isKeyguardLocked()) {
- Slogf.w(TAG, "Not locking the device since the keyguard is already locked");
- return;
- }
-
final TimingsTraceAndSlog t = new TimingsTraceAndSlog();
t.traceBegin("lockDeviceNowAndWaitForKeyguardShown");
final CountDownLatch latch = new CountDownLatch(1);
- ActivityTaskManagerInternal.ScreenObserver screenObserver =
- new ActivityTaskManagerInternal.ScreenObserver() {
- @Override
- public void onAwakeStateChanged(boolean isAwake) {
-
- }
-
- @Override
- public void onKeyguardStateChanged(boolean isShowing) {
- if (isShowing) {
- latch.countDown();
- }
- }
- };
-
- getActivityTaskManagerInternal().registerScreenObserver(screenObserver);
- getWindowManager().lockDeviceNow();
+ Bundle bundle = new Bundle();
+ bundle.putBinder(LOCK_ON_USER_SWITCH_CALLBACK, new IRemoteCallback.Stub() {
+ public void sendResult(Bundle data) {
+ latch.countDown();
+ }
+ });
+ getWindowManager().lockNow(bundle);
try {
if (!latch.await(20, TimeUnit.SECONDS)) {
- throw new RuntimeException("Keyguard is not shown in 20 seconds");
+ throw new RuntimeException("User controller expected a callback while waiting "
+ + "to show the keyguard. Timed out after 20 seconds.");
}
} catch (InterruptedException e) {
throw new RuntimeException(e);
} finally {
- getActivityTaskManagerInternal().unregisterScreenObserver(screenObserver);
t.traceEnd();
}
}
diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java
index 833599810210..32c4e9b1727e 100644
--- a/services/core/java/com/android/server/appop/AppOpsService.java
+++ b/services/core/java/com/android/server/appop/AppOpsService.java
@@ -237,6 +237,13 @@ public class AppOpsService extends IAppOpsService.Stub {
*/
private static final int CURRENT_VERSION = 1;
+ /**
+ * The upper limit of total number of attributed op entries that can be returned in a binder
+ * transaction to avoid TransactionTooLargeException
+ */
+ private static final int NUM_ATTRIBUTED_OP_ENTRY_THRESHOLD = 2000;
+
+
private SensorPrivacyManager mSensorPrivacyManager;
// Write at most every 30 minutes.
@@ -544,6 +551,11 @@ public class AppOpsService extends IAppOpsService.Stub {
@VisibleForTesting
final Constants mConstants;
+ /**
+ * Some processes in the user may still be running when trying to drop the user's state
+ */
+ private static final long REMOVE_USER_DELAY = 5000L;
+
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
final class UidState {
public final int uid;
@@ -1702,6 +1714,8 @@ public class AppOpsService extends IAppOpsService.Stub {
Manifest.permission.GET_APP_OPS_STATS,
Binder.getCallingPid(), Binder.getCallingUid())
== PackageManager.PERMISSION_GRANTED;
+ int totalAttributedOpEntryCount = 0;
+
if (ops == null) {
resOps = new ArrayList<>();
for (int j = 0; j < pkgOps.size(); j++) {
@@ -1709,7 +1723,12 @@ public class AppOpsService extends IAppOpsService.Stub {
if (opRestrictsRead(curOp.op) && !shouldReturnRestrictedAppOps) {
continue;
}
- resOps.add(getOpEntryForResult(curOp, persistentDeviceId));
+ if (totalAttributedOpEntryCount > NUM_ATTRIBUTED_OP_ENTRY_THRESHOLD) {
+ break;
+ }
+ OpEntry opEntry = getOpEntryForResult(curOp, persistentDeviceId);
+ resOps.add(opEntry);
+ totalAttributedOpEntryCount += opEntry.getAttributedOpEntries().size();
}
} else {
for (int j = 0; j < ops.length; j++) {
@@ -1721,10 +1740,21 @@ public class AppOpsService extends IAppOpsService.Stub {
if (opRestrictsRead(curOp.op) && !shouldReturnRestrictedAppOps) {
continue;
}
- resOps.add(getOpEntryForResult(curOp, persistentDeviceId));
+ if (totalAttributedOpEntryCount > NUM_ATTRIBUTED_OP_ENTRY_THRESHOLD) {
+ break;
+ }
+ OpEntry opEntry = getOpEntryForResult(curOp, persistentDeviceId);
+ resOps.add(opEntry);
+ totalAttributedOpEntryCount += opEntry.getAttributedOpEntries().size();
}
}
}
+
+ if (totalAttributedOpEntryCount > NUM_ATTRIBUTED_OP_ENTRY_THRESHOLD) {
+ Slog.w(TAG, "The number of attributed op entries has exceeded the threshold. This "
+ + "could be due to DoS attack from malicious apps. The result is throttled.");
+ }
+
return resOps;
}
@@ -6795,14 +6825,17 @@ public class AppOpsService extends IAppOpsService.Stub {
@Override
public void removeUser(int userHandle) throws RemoteException {
checkSystemUid("removeUser");
- synchronized (AppOpsService.this) {
- final int tokenCount = mOpUserRestrictions.size();
- for (int i = tokenCount - 1; i >= 0; i--) {
- ClientUserRestrictionState opRestrictions = mOpUserRestrictions.valueAt(i);
- opRestrictions.removeUser(userHandle);
+ mHandler.postDelayed(() -> {
+ Slog.i(TAG, "Removing user " + userHandle + " from AppOpsService");
+ synchronized (AppOpsService.this) {
+ final int tokenCount = mOpUserRestrictions.size();
+ for (int i = tokenCount - 1; i >= 0; i--) {
+ ClientUserRestrictionState opRestrictions = mOpUserRestrictions.valueAt(i);
+ opRestrictions.removeUser(userHandle);
+ }
+ removeUidsForUserLocked(userHandle);
}
- removeUidsForUserLocked(userHandle);
- }
+ }, REMOVE_USER_DELAY);
}
@Override
diff --git a/services/core/java/com/android/server/appop/DiscreteOpsRegistry.java b/services/core/java/com/android/server/appop/DiscreteOpsRegistry.java
index 88b3f6dce4c2..84402c85471f 100644
--- a/services/core/java/com/android/server/appop/DiscreteOpsRegistry.java
+++ b/services/core/java/com/android/server/appop/DiscreteOpsRegistry.java
@@ -28,7 +28,10 @@ import static android.app.AppOpsManager.OP_MONITOR_LOCATION;
import static android.app.AppOpsManager.OP_PHONE_CALL_CAMERA;
import static android.app.AppOpsManager.OP_PHONE_CALL_MICROPHONE;
import static android.app.AppOpsManager.OP_PROCESS_OUTGOING_CALLS;
+import static android.app.AppOpsManager.OP_READ_HEART_RATE;
import static android.app.AppOpsManager.OP_READ_ICC_SMS;
+import static android.app.AppOpsManager.OP_READ_OXYGEN_SATURATION;
+import static android.app.AppOpsManager.OP_READ_SKIN_TEMPERATURE;
import static android.app.AppOpsManager.OP_READ_SMS;
import static android.app.AppOpsManager.OP_RECEIVE_AMBIENT_TRIGGER_AUDIO;
import static android.app.AppOpsManager.OP_RECEIVE_SANDBOX_TRIGGER_AUDIO;
@@ -102,7 +105,8 @@ abstract class DiscreteOpsRegistry {
+ "," + OP_EMERGENCY_LOCATION + "," + OP_CAMERA + "," + OP_RECORD_AUDIO + ","
+ OP_PHONE_CALL_MICROPHONE + "," + OP_PHONE_CALL_CAMERA + ","
+ OP_RECEIVE_AMBIENT_TRIGGER_AUDIO + "," + OP_RECEIVE_SANDBOX_TRIGGER_AUDIO
- + "," + OP_RESERVED_FOR_TESTING;
+ + "," + OP_READ_HEART_RATE + "," + OP_READ_OXYGEN_SATURATION + ","
+ + OP_READ_SKIN_TEMPERATURE + "," + OP_RESERVED_FOR_TESTING;
static final int[] sDiscreteOpsToLog =
new int[]{OP_FINE_LOCATION, OP_COARSE_LOCATION, OP_EMERGENCY_LOCATION, OP_CAMERA,
OP_RECORD_AUDIO, OP_PHONE_CALL_MICROPHONE, OP_PHONE_CALL_CAMERA,
diff --git a/services/core/java/com/android/server/appop/HistoricalRegistry.java b/services/core/java/com/android/server/appop/HistoricalRegistry.java
index 5aa2a6b60106..928a4b270b59 100644
--- a/services/core/java/com/android/server/appop/HistoricalRegistry.java
+++ b/services/core/java/com/android/server/appop/HistoricalRegistry.java
@@ -206,7 +206,7 @@ final class HistoricalRegistry {
if (Flags.enableSqliteAppopsAccesses()) {
mDiscreteRegistry = new DiscreteOpsSqlRegistry(context);
} else {
- mDiscreteRegistry = new DiscreteOpsXmlRegistry(context);
+ mDiscreteRegistry = new DiscreteOpsXmlRegistry(lock);
}
}
diff --git a/services/core/java/com/android/server/audio/AudioManagerShellCommand.java b/services/core/java/com/android/server/audio/AudioManagerShellCommand.java
index fece7a899f0a..ae961b53f547 100644
--- a/services/core/java/com/android/server/audio/AudioManagerShellCommand.java
+++ b/services/core/java/com/android/server/audio/AudioManagerShellCommand.java
@@ -83,6 +83,8 @@ class AudioManagerShellCommand extends ShellCommand {
return setGroupVolume();
case "adj-group-volume":
return adjGroupVolume();
+ case "set-hardening":
+ return setEnableHardening();
}
return 0;
}
@@ -130,6 +132,8 @@ class AudioManagerShellCommand extends ShellCommand {
pw.println(" Sets the volume for GROUP_ID to VOLUME_INDEX");
pw.println(" adj-group-volume GROUP_ID <RAISE|LOWER|MUTE|UNMUTE>");
pw.println(" Adjusts the group volume for GROUP_ID given the specified direction");
+ pw.println(" set-enable-hardening <1|0>");
+ pw.println(" Enables full audio hardening enforcement, disabling any exemptions");
}
private int setSurroundFormatEnabled() {
@@ -405,6 +409,20 @@ class AudioManagerShellCommand extends ShellCommand {
return 0;
}
+ private int setEnableHardening() {
+ final Context context = mService.mContext;
+ final AudioManager am = context.getSystemService(AudioManager.class);
+ final boolean shouldEnable = !(readIntArg() == 0);
+ getOutPrintWriter().println(
+ "calling AudioManager.setEnableHardening(" + shouldEnable + ")");
+ try {
+ am.setEnableHardening(shouldEnable);
+ } catch (Exception e) {
+ getOutPrintWriter().println("Exception: " + e);
+ }
+ return 0;
+ }
+
private int readIntArg() throws IllegalArgumentException {
final String argText = getNextArg();
diff --git a/services/core/java/com/android/server/audio/AudioPolicyFacade.java b/services/core/java/com/android/server/audio/AudioPolicyFacade.java
index f652b33b3fd3..6c0b81f513be 100644
--- a/services/core/java/com/android/server/audio/AudioPolicyFacade.java
+++ b/services/core/java/com/android/server/audio/AudioPolicyFacade.java
@@ -26,4 +26,5 @@ public interface AudioPolicyFacade {
public boolean isHotwordStreamSupported(boolean lookbackAudio);
public INativePermissionController getPermissionController();
public void registerOnStartTask(Runnable r);
+ public void setEnableHardening(boolean shouldEnable);
}
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index f2830090e7db..2bc6166af40b 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -64,7 +64,6 @@ import static android.provider.Settings.Secure.VOLUME_HUSH_OFF;
import static android.provider.Settings.Secure.VOLUME_HUSH_VIBRATE;
import static com.android.internal.annotations.VisibleForTesting.Visibility.PACKAGE;
-import static com.android.media.audio.Flags.absVolumeIndexFix;
import static com.android.media.audio.Flags.alarmMinVolumeZero;
import static com.android.media.audio.Flags.asDeviceConnectionFailure;
import static com.android.media.audio.Flags.audioserverPermissions;
@@ -74,7 +73,6 @@ import static com.android.media.audio.Flags.equalScoLeaVcIndexRange;
import static com.android.media.audio.Flags.replaceStreamBtSco;
import static com.android.media.audio.Flags.ringMyCar;
import static com.android.media.audio.Flags.ringerModeAffectsAlarm;
-import static com.android.media.audio.Flags.setStreamVolumeOrder;
import static com.android.media.audio.Flags.vgsVssSyncMuteOrder;
import static com.android.media.flags.Flags.enableAudioInputDeviceRoutingAndVolumeControl;
import static com.android.server.audio.SoundDoseHelper.ACTION_CHECK_MUSIC_ACTIVE;
@@ -246,7 +244,6 @@ import android.util.PrintWriterPrinter;
import android.util.Slog;
import android.util.SparseArray;
import android.util.SparseIntArray;
-import android.util.SystemPropertySetter;
import android.view.Display;
import android.view.KeyEvent;
import android.view.accessibility.AccessibilityManager;
@@ -254,7 +251,6 @@ import android.widget.Toast;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.os.BackgroundThread;
import com.android.internal.os.SomeArgs;
import com.android.internal.util.DumpUtils;
import com.android.internal.util.Preconditions;
@@ -781,7 +777,8 @@ public class AudioService extends IAudioService.Stub
private int mRingerModeExternal = -1; // reported ringer mode to outside clients (AudioManager)
/** @see System#MODE_RINGER_STREAMS_AFFECTED */
- private int mRingerModeAffectedStreams = 0;
+ @VisibleForTesting
+ protected int mRingerModeAffectedStreams = 0;
private int mZenModeAffectedStreams = 0;
@@ -1191,6 +1188,11 @@ public class AudioService extends IAudioService.Stub
private @AttributeSystemUsage int[] mSupportedSystemUsages =
new int[]{AudioAttributes.USAGE_CALL_ASSISTANT};
+ // Tracks the API/shell override of hardening enforcement used for debugging
+ // When this is set to true, enforcement is on regardless of flag state and any specific
+ // exemptions in place for compat purposes.
+ private final AtomicBoolean mShouldEnableAllHardening = new AtomicBoolean(false);
+
// Defines the format for the connection "address" for ALSA devices
public static String makeAlsaAddressString(int card, int device) {
return "card=" + card + ";device=" + device;
@@ -1334,6 +1336,10 @@ public class AudioService extends IAudioService.Stub
mAudioVolumeGroupHelper = audioVolumeGroupHelper;
mSettings = settings;
mAudioPolicy = audioPolicy;
+ mAudioPolicy.registerOnStartTask(() -> {
+ mAudioPolicy.setEnableHardening(mShouldEnableAllHardening.get());
+ });
+
mPlatformType = AudioSystem.getPlatformType(context);
mBroadcastHandlerThread = new HandlerThread("AudioService Broadcast");
@@ -4118,10 +4124,8 @@ public class AudioService extends IAudioService.Stub
int newIndex = getVssForStreamOrDefault(streamType).getIndex(device);
- int streamToDriveAbsVol = absVolumeIndexFix() ? getBluetoothContextualVolumeStream() :
- AudioSystem.STREAM_MUSIC;
// Check if volume update should be send to AVRCP
- if (streamTypeAlias == streamToDriveAbsVol
+ if (streamTypeAlias == getBluetoothContextualVolumeStream()
&& AudioSystem.DEVICE_OUT_ALL_A2DP_SET.contains(device)
&& (flags & AudioManager.FLAG_BLUETOOTH_ABS_VOLUME) == 0) {
if (DEBUG_VOL) {
@@ -4976,16 +4980,14 @@ public class AudioService extends IAudioService.Stub
+ audioserverPermissions());
pw.println("\tcom.android.media.audio.disablePrescaleAbsoluteVolume:"
+ disablePrescaleAbsoluteVolume());
- pw.println("\tcom.android.media.audio.setStreamVolumeOrder:"
- + setStreamVolumeOrder());
+ pw.println("\tcom.android.media.audio.setStreamVolumeOrder - EOL");
pw.println("\tandroid.media.audio.roForegroundAudioControl:"
+ roForegroundAudioControl());
pw.println("\tandroid.media.audio.scoManagedByAudio:"
+ scoManagedByAudio());
pw.println("\tcom.android.media.audio.vgsVssSyncMuteOrder:"
+ vgsVssSyncMuteOrder());
- pw.println("\tcom.android.media.audio.absVolumeIndexFix:"
- + absVolumeIndexFix());
+ pw.println("\tcom.android.media.audio.absVolumeIndexFix - EOL");
pw.println("\tcom.android.media.audio.replaceStreamBtSco:"
+ replaceStreamBtSco());
pw.println("\tcom.android.media.audio.equalScoLeaVcIndexRange:"
@@ -5170,33 +5172,29 @@ public class AudioService extends IAudioService.Stub
index = rescaleIndex(index * 10, streamType, streamTypeAlias);
- if (setStreamVolumeOrder()) {
- flags &= ~AudioManager.FLAG_FIXED_VOLUME;
- if (streamTypeAlias == AudioSystem.STREAM_MUSIC && isFixedVolumeDevice(device)) {
- flags |= AudioManager.FLAG_FIXED_VOLUME;
+ flags &= ~AudioManager.FLAG_FIXED_VOLUME;
+ if (streamTypeAlias == AudioSystem.STREAM_MUSIC && isFixedVolumeDevice(device)) {
+ flags |= AudioManager.FLAG_FIXED_VOLUME;
- // volume is either 0 or max allowed for fixed volume devices
- if (index != 0) {
- index = mSoundDoseHelper.getSafeMediaVolumeIndex(device);
- if (index < 0) {
- index = streamState.getMaxIndex();
- }
+ // volume is either 0 or max allowed for fixed volume devices
+ if (index != 0) {
+ index = mSoundDoseHelper.getSafeMediaVolumeIndex(device);
+ if (index < 0) {
+ index = streamState.getMaxIndex();
}
}
+ }
- if (!mSoundDoseHelper.willDisplayWarningAfterCheckVolume(streamType, index, device,
- flags)) {
- onSetStreamVolume(streamType, index, flags, device, caller, hasModifyAudioSettings,
- // ada is non-null when called from setDeviceVolume,
- // which shouldn't update the mute state
- canChangeMuteAndUpdateController /*canChangeMute*/);
- index = getVssForStreamOrDefault(streamType).getIndex(device);
- }
+ if (!mSoundDoseHelper.willDisplayWarningAfterCheckVolume(streamType, index, device,
+ flags)) {
+ onSetStreamVolume(streamType, index, flags, device, caller, hasModifyAudioSettings,
+ // ada is non-null when called from setDeviceVolume,
+ // which shouldn't update the mute state
+ canChangeMuteAndUpdateController /*canChangeMute*/);
+ index = getVssForStreamOrDefault(streamType).getIndex(device);
}
- int streamToDriveAbsVol = absVolumeIndexFix() ? getBluetoothContextualVolumeStream() :
- AudioSystem.STREAM_MUSIC;
- if (streamTypeAlias == streamToDriveAbsVol
+ if (streamTypeAlias == getBluetoothContextualVolumeStream()
&& AudioSystem.DEVICE_OUT_ALL_A2DP_SET.contains(device)
&& (flags & AudioManager.FLAG_BLUETOOTH_ABS_VOLUME) == 0) {
if (DEBUG_VOL) {
@@ -5229,30 +5227,6 @@ public class AudioService extends IAudioService.Stub
mDeviceBroker.postSetHearingAidVolumeIndex(index, streamType);
}
- if (!setStreamVolumeOrder()) {
- flags &= ~AudioManager.FLAG_FIXED_VOLUME;
- if (streamTypeAlias == AudioSystem.STREAM_MUSIC && isFixedVolumeDevice(device)) {
- flags |= AudioManager.FLAG_FIXED_VOLUME;
-
- // volume is either 0 or max allowed for fixed volume devices
- if (index != 0) {
- index = mSoundDoseHelper.getSafeMediaVolumeIndex(device);
- if (index < 0) {
- index = streamState.getMaxIndex();
- }
- }
- }
-
- if (!mSoundDoseHelper.willDisplayWarningAfterCheckVolume(streamType, index, device,
- flags)) {
- onSetStreamVolume(streamType, index, flags, device, caller, hasModifyAudioSettings,
- // ada is non-null when called from setDeviceVolume,
- // which shouldn't update the mute state
- canChangeMuteAndUpdateController /*canChangeMute*/);
- index = getVssForStreamOrDefault(streamType).getIndex(device);
- }
- }
-
synchronized (mHdmiClientLock) {
if (streamTypeAlias == AudioSystem.STREAM_MUSIC
&& (oldIndex != index)) {
@@ -5433,6 +5407,10 @@ public class AudioService extends IAudioService.Stub
protected void sendVolumeUpdate(int streamType, int oldIndex, int index, int flags, int device)
{
streamType = sStreamVolumeAlias.get(streamType, /*valueIfKeyNotFound=*/-1);
+ if (streamType == -1) {
+ Slog.e(TAG, "Invalid stream type. No update to IVolumeController", new Exception());
+ return;
+ }
if (streamType == AudioSystem.STREAM_MUSIC && isFullVolumeDevice(device)) {
flags &= ~AudioManager.FLAG_SHOW_UI;
@@ -6315,17 +6293,15 @@ public class AudioService extends IAudioService.Stub
}
}
sRingerAndZenModeMutedStreams &= ~(1 << streamType);
- sMuteLogger.enqueue(new AudioServiceEvents.RingerZenMutedStreamsEvent(
- sRingerAndZenModeMutedStreams, "muteRingerModeStreams"));
vss.mute(false, "muteRingerModeStreams");
} else {
// mute
sRingerAndZenModeMutedStreams |= (1 << streamType);
- sMuteLogger.enqueue(new AudioServiceEvents.RingerZenMutedStreamsEvent(
- sRingerAndZenModeMutedStreams, "muteRingerModeStreams"));
vss.mute(true, "muteRingerModeStreams");
}
}
+ sMuteLogger.enqueue(new AudioServiceEvents.RingerZenMutedStreamsEvent(
+ sRingerAndZenModeMutedStreams, "muteRingerModeStreams"));
}
private boolean isAlarm(int streamType) {
@@ -9584,33 +9560,6 @@ public class AudioService extends IAudioService.Stub
}
}
- private int getAbsoluteVolumeIndex(int index) {
- if (absVolumeIndexFix()) {
- // The attenuation is applied in the APM. No need to manipulate the index here
- return index;
- } else {
- /* Special handling for Bluetooth Absolute Volume scenario
- * If we send full audio gain, some accessories are too loud even at its lowest
- * volume. We are not able to enumerate all such accessories, so here is the
- * workaround from phone side.
- * Pre-scale volume at lowest volume steps 1 2 and 3.
- * For volume step 0, set audio gain to 0 as some accessories won't mute on their
- * end.
- */
- if (index == 0) {
- // 0% for volume 0
- index = 0;
- } else if (!disablePrescaleAbsoluteVolume() && index > 0 && index <= 3) {
- // Pre-scale for volume steps 1 2 and 3
- index = (int) (mIndexMax * mPrescaleAbsoluteVolume[index - 1]) / 10;
- } else {
- // otherwise, full gain
- index = (mIndexMax + 5) / 10;
- }
- return index;
- }
- }
-
/**
* Sends the new volume index on the given device to native.
*
@@ -9650,19 +9599,15 @@ public class AudioService extends IAudioService.Stub
|| isA2dpAbsoluteVolumeDevice(device)
|| AudioSystem.isLeAudioDeviceType(device)) {
// do not change the volume logic for dynamic abs behavior devices like HDMI
- if (absVolumeIndexFix() && isAbsoluteVolumeDevice(device)) {
- index = getAbsoluteVolumeIndex((mIndexMax + 5) / 10);
+ if (isAbsoluteVolumeDevice(device)) {
+ index = (mIndexMax + 5) / 10;
} else {
- index = getAbsoluteVolumeIndex((getIndex(device) + 5) / 10);
+ index = (getIndex(device) + 5) / 10;
}
} else if (isFullVolumeDevice(device)) {
index = (mIndexMax + 5)/10;
} else if (device == AudioSystem.DEVICE_OUT_HEARING_AID) {
- if (absVolumeIndexFix()) {
- index = getAbsoluteVolumeIndex((getIndex(device) + 5) / 10);
- } else {
- index = (mIndexMax + 5) / 10;
- }
+ index = (getIndex(device) + 5) / 10;
} else {
index = (getIndex(device) + 5)/10;
}
@@ -9686,20 +9631,16 @@ public class AudioService extends IAudioService.Stub
isAbsoluteVolume = true;
// do not change the volume logic for dynamic abs behavior devices
// like HDMI
- if (absVolumeIndexFix() && isAbsoluteVolumeDevice(device)) {
- index = getAbsoluteVolumeIndex((mIndexMax + 5) / 10);
+ if (isAbsoluteVolumeDevice(device)) {
+ index = (mIndexMax + 5) / 10;
} else {
- index = getAbsoluteVolumeIndex((getIndex(device) + 5) / 10);
+ index = (getIndex(device) + 5) / 10;
}
} else if (isFullVolumeDevice(device)) {
index = (mIndexMax + 5)/10;
} else if (device == AudioSystem.DEVICE_OUT_HEARING_AID) {
- if (absVolumeIndexFix()) {
- isAbsoluteVolume = true;
- index = getAbsoluteVolumeIndex((getIndex(device) + 5) / 10);
- } else {
- index = (mIndexMax + 5) / 10;
- }
+ isAbsoluteVolume = true;
+ index = (getIndex(device) + 5) / 10;
} else {
index = (mIndexMap.valueAt(i) + 5)/10;
}
@@ -10045,12 +9986,14 @@ public class AudioService extends IAudioService.Stub
new AudioServiceEvents.StreamMuteEvent(mStreamType, state, src));
// check to see if unmuting should not have happened due to ringer muted streams
if (!state && isStreamMutedByRingerOrZenMode(mStreamType)) {
- Log.e(TAG, "Unmuting stream " + mStreamType
+ Slog.e(TAG, "Attempt to unmute stream " + mStreamType
+ " despite ringer-zen muted stream 0x"
+ Integer.toHexString(AudioService.sRingerAndZenModeMutedStreams),
new Exception()); // this will put a stack trace in the logs
sMuteLogger.enqueue(new AudioServiceEvents.StreamUnmuteErrorEvent(
mStreamType, AudioService.sRingerAndZenModeMutedStreams));
+ // do not change mute state
+ return false;
}
mIsMuted = state;
if (apply) {
@@ -10767,39 +10710,37 @@ public class AudioService extends IAudioService.Stub
Log.i(TAG, "setAvrcpAbsoluteVolumeSupported support " + support);
synchronized (mCachedAbsVolDrivingStreamsLock) {
mAvrcpAbsVolSupported = support;
- if (absVolumeIndexFix()) {
- int a2dpDev = AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP;
- mCachedAbsVolDrivingStreams.compute(a2dpDev, (dev, stream) -> {
- if (!mAvrcpAbsVolSupported) {
- final int result = mAudioSystem.setDeviceAbsoluteVolumeEnabled(
- a2dpDev, /*address=*/"", /*enabled*/false,
- AudioSystem.STREAM_DEFAULT);
- if (result != AudioSystem.AUDIO_STATUS_OK) {
- sVolumeLogger.enqueueAndSlog(
- new VolumeEvent(VolumeEvent.VOL_ABS_DEVICE_ENABLED_ERROR,
- result, a2dpDev, /*enabled=*/false,
- AudioSystem.STREAM_DEFAULT).eventToString(), ALOGE,
- TAG);
- }
- return null;
+ int a2dpDev = AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP;
+ mCachedAbsVolDrivingStreams.compute(a2dpDev, (dev, stream) -> {
+ if (!mAvrcpAbsVolSupported) {
+ final int result = mAudioSystem.setDeviceAbsoluteVolumeEnabled(
+ a2dpDev, /*address=*/"", /*enabled*/false,
+ AudioSystem.STREAM_DEFAULT);
+ if (result != AudioSystem.AUDIO_STATUS_OK) {
+ sVolumeLogger.enqueueAndSlog(
+ new VolumeEvent(VolumeEvent.VOL_ABS_DEVICE_ENABLED_ERROR,
+ result, a2dpDev, /*enabled=*/false,
+ AudioSystem.STREAM_DEFAULT).eventToString(), ALOGE,
+ TAG);
}
- // For A2DP and AVRCP we need to set the driving stream based on the
- // BT contextual stream. Hence, we need to make sure in adjustStreamVolume
- // and setStreamVolume that the driving abs volume stream is consistent.
- int streamToDriveAbs = getBluetoothContextualVolumeStream();
- if (stream == null || stream != streamToDriveAbs) {
- final int result = mAudioSystem.setDeviceAbsoluteVolumeEnabled(a2dpDev,
- /*address=*/"", /*enabled*/true, streamToDriveAbs);
- if (result != AudioSystem.AUDIO_STATUS_OK) {
- sVolumeLogger.enqueueAndSlog(
- new VolumeEvent(VolumeEvent.VOL_ABS_DEVICE_ENABLED_ERROR,
- result, a2dpDev, /*enabled=*/true,
- streamToDriveAbs).eventToString(), ALOGE, TAG);
- }
+ return null;
+ }
+ // For A2DP and AVRCP we need to set the driving stream based on the
+ // BT contextual stream. Hence, we need to make sure in adjustStreamVolume
+ // and setStreamVolume that the driving abs volume stream is consistent.
+ int streamToDriveAbs = getBluetoothContextualVolumeStream();
+ if (stream == null || stream != streamToDriveAbs) {
+ final int result = mAudioSystem.setDeviceAbsoluteVolumeEnabled(a2dpDev,
+ /*address=*/"", /*enabled*/true, streamToDriveAbs);
+ if (result != AudioSystem.AUDIO_STATUS_OK) {
+ sVolumeLogger.enqueueAndSlog(
+ new VolumeEvent(VolumeEvent.VOL_ABS_DEVICE_ENABLED_ERROR,
+ result, a2dpDev, /*enabled=*/true,
+ streamToDriveAbs).eventToString(), ALOGE, TAG);
}
- return streamToDriveAbs;
- });
- }
+ }
+ return streamToDriveAbs;
+ });
}
sendMsg(mAudioHandler, MSG_SET_DEVICE_VOLUME, SENDMSG_QUEUE,
AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, 0,
@@ -15019,6 +14960,16 @@ public class AudioService extends IAudioService.Stub
return true;
}
+ /**
+ * @see AudioManager#setEnableHardening(boolean)
+ */
+ @android.annotation.EnforcePermission(MODIFY_AUDIO_SETTINGS_PRIVILEGED)
+ public void setEnableHardening(boolean shouldEnable) {
+ super.setEnableHardening_enforcePermission();
+ mShouldEnableAllHardening.set(shouldEnable);
+ mAudioPolicy.setEnableHardening(shouldEnable);
+ }
+
//======================
// Audioserver state dispatch
//======================
diff --git a/services/core/java/com/android/server/audio/DefaultAudioPolicyFacade.java b/services/core/java/com/android/server/audio/DefaultAudioPolicyFacade.java
index 09701e49a8ac..c41f41e0f31b 100644
--- a/services/core/java/com/android/server/audio/DefaultAudioPolicyFacade.java
+++ b/services/core/java/com/android/server/audio/DefaultAudioPolicyFacade.java
@@ -80,4 +80,14 @@ public class DefaultAudioPolicyFacade implements AudioPolicyFacade {
public void registerOnStartTask(Runnable task) {
mServiceHolder.registerOnStartTask(unused -> task.run());
}
+
+ @Override
+ public void setEnableHardening(boolean shouldEnable) {
+ IAudioPolicyService ap = mServiceHolder.waitForService();
+ try {
+ ap.setEnableHardening(shouldEnable);
+ } catch (RemoteException e) {
+ mServiceHolder.attemptClear(ap.asBinder());
+ }
+ }
}
diff --git a/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java b/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java
index 57b5febf4df0..64b933a89b71 100644
--- a/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java
+++ b/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java
@@ -16,7 +16,6 @@
package com.android.server.audio;
-import static android.media.AudioPlaybackConfiguration.EXTRA_PLAYER_EVENT_MUTE;
import static android.media.AudioPlaybackConfiguration.MUTED_BY_OP_PLAY_AUDIO;
import static android.media.AudioPlaybackConfiguration.MUTED_BY_CLIENT_VOLUME;
import static android.media.AudioPlaybackConfiguration.MUTED_BY_MASTER;
@@ -28,8 +27,6 @@ import static android.media.AudioPlaybackConfiguration.MUTED_BY_OP_CONTROL_AUDIO
import static android.media.AudioPlaybackConfiguration.PLAYER_PIID_INVALID;
import static android.media.AudioPlaybackConfiguration.PLAYER_UPDATE_MUTED;
-import static com.android.media.audio.Flags.portToPiidSimplification;
-
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
@@ -158,8 +155,6 @@ public final class PlaybackActivityMonitor
@GuardedBy("mPlayerLock")
private final SparseIntArray mPiidToPortId = new SparseIntArray();
- @GuardedBy("mPlayerLock")
- private final SparseIntArray mPortIdToPiid = new SparseIntArray();
private final Context mContext;
private int mSavedAlarmVolume = -1;
@@ -387,11 +382,7 @@ public final class PlaybackActivityMonitor
sEventLogger.enqueue(new PlayerEvent(piid, event, eventValues));
if (event == AudioPlaybackConfiguration.PLAYER_UPDATE_PORT_ID) {
- if (portToPiidSimplification()) {
- mPiidToPortId.put(piid, eventValues[0]);
- } else {
- mPortIdToPiid.put(eventValues[0], piid);
- }
+ mPiidToPortId.put(piid, eventValues[0]);
return;
} else if (event == AudioPlaybackConfiguration.PLAYER_STATE_STARTED) {
for (Integer uidInteger: mBannedUids) {
@@ -446,20 +437,12 @@ public final class PlaybackActivityMonitor
synchronized (mPlayerLock) {
int piid;
- if (portToPiidSimplification()) {
- int idxOfPiid = mPiidToPortId.indexOfValue(portId);
- if (idxOfPiid < 0) {
- Log.w(TAG, "No piid assigned for invalid/internal port id " + portId);
- return;
- }
- piid = mPiidToPortId.keyAt(idxOfPiid);
- } else {
- piid = mPortIdToPiid.get(portId, PLAYER_PIID_INVALID);
- if (piid == PLAYER_PIID_INVALID) {
- Log.w(TAG, "No piid assigned for invalid/internal port id " + portId);
- return;
- }
+ int idxOfPiid = mPiidToPortId.indexOfValue(portId);
+ if (idxOfPiid < 0) {
+ Log.w(TAG, "No piid assigned for invalid/internal port id " + portId);
+ return;
}
+ piid = mPiidToPortId.keyAt(idxOfPiid);
final AudioPlaybackConfiguration apc = mPlayers.get(piid);
if (apc == null) {
Log.w(TAG, "No AudioPlaybackConfiguration assigned for piid " + piid);
@@ -496,20 +479,13 @@ public final class PlaybackActivityMonitor
synchronized (mPlayerLock) {
int piid;
- if (portToPiidSimplification()) {
- int idxOfPiid = mPiidToPortId.indexOfValue(portId);
- if (idxOfPiid < 0) {
- Log.w(TAG, "No piid assigned for invalid/internal port id " + portId);
- return;
- }
- piid = mPiidToPortId.keyAt(idxOfPiid);
- } else {
- piid = mPortIdToPiid.get(portId, PLAYER_PIID_INVALID);
- if (piid == PLAYER_PIID_INVALID) {
- Log.w(TAG, "No piid assigned for invalid/internal port id " + portId);
- return;
- }
+ int idxOfPiid = mPiidToPortId.indexOfValue(portId);
+ if (idxOfPiid < 0) {
+ Log.w(TAG, "No piid assigned for invalid/internal port id " + portId);
+ return;
}
+ piid = mPiidToPortId.keyAt(idxOfPiid);
+
final AudioPlaybackConfiguration apc = mPlayers.get(piid);
if (apc == null) {
Log.w(TAG, "No AudioPlaybackConfiguration assigned for piid " + piid);
@@ -559,15 +535,7 @@ public final class PlaybackActivityMonitor
change = apc.handleStateEvent(AudioPlaybackConfiguration.PLAYER_STATE_RELEASED,
AudioPlaybackConfiguration.PLAYER_DEVICEIDS_INVALID);
- if (portToPiidSimplification()) {
- mPiidToPortId.delete(piid);
- } else {
- // remove all port ids mapped to the released player
- int portIdx;
- while ((portIdx = mPortIdToPiid.indexOfValue(piid)) >= 0) {
- mPortIdToPiid.removeAt(portIdx);
- }
- }
+ mPiidToPortId.delete(piid);
if (change && mDoNotLogPiidList.contains(piid)) {
// do not dispatch a change for a "do not log" player
@@ -585,17 +553,10 @@ public final class PlaybackActivityMonitor
new EventLogger.StringEvent(
"clear port id to piid map"));
synchronized (mPlayerLock) {
- if (portToPiidSimplification()) {
- if (DEBUG) {
- Log.v(TAG, "clear piid to portId map:\n" + mPiidToPortId);
- }
- mPiidToPortId.clear();
- } else {
- if (DEBUG) {
- Log.v(TAG, "clear port id to piid map:\n" + mPortIdToPiid);
- }
- mPortIdToPiid.clear();
+ if (DEBUG) {
+ Log.v(TAG, "clear piid to portId map:\n" + mPiidToPortId);
}
+ mPiidToPortId.clear();
}
}
@@ -754,21 +715,12 @@ public final class PlaybackActivityMonitor
pw.print(" " + piid);
}
pw.println("\n");
- if (portToPiidSimplification()) {
- // portId to piid mappings:
- pw.println("\n current piid to portId map:");
- for (int i = 0; i < mPiidToPortId.size(); ++i) {
- pw.println(
- " piid: " + mPiidToPortId.keyAt(i) + " portId: "
- + mPiidToPortId.valueAt(i));
- }
- } else {
- // portId to piid mappings:
- pw.println("\n current portId to piid map:");
- for (int i = 0; i < mPortIdToPiid.size(); ++i) {
- pw.println(" portId: " + mPortIdToPiid.keyAt(i) + " piid: "
- + mPortIdToPiid.valueAt(i));
- }
+ // portId to piid mappings:
+ pw.println("\n current piid to portId map:");
+ for (int i = 0; i < mPiidToPortId.size(); ++i) {
+ pw.println(
+ " piid: " + mPiidToPortId.keyAt(i) + " portId: "
+ + mPiidToPortId.valueAt(i));
}
pw.println("\n");
// log
diff --git a/services/core/java/com/android/server/biometrics/PreAuthInfo.java b/services/core/java/com/android/server/biometrics/PreAuthInfo.java
index c739118194e5..6fab7e620277 100644
--- a/services/core/java/com/android/server/biometrics/PreAuthInfo.java
+++ b/services/core/java/com/android/server/biometrics/PreAuthInfo.java
@@ -164,6 +164,7 @@ class PreAuthInfo {
Slog.d(TAG, "Package: " + opPackageName
+ " Sensor ID: " + sensor.id
+ " Modality: " + sensor.modality
+ + " User id: " + effectiveUserId
+ " Status: " + status);
// A sensor with privacy enabled will still be eligible to
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index 49b451a83efa..e83efc573ea8 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -107,6 +107,7 @@ import android.hardware.display.DisplayManagerInternal;
import android.hardware.display.DisplayManagerInternal.DisplayGroupListener;
import android.hardware.display.DisplayManagerInternal.DisplayTransactionListener;
import android.hardware.display.DisplayTopology;
+import android.hardware.display.DisplayTopologyGraph;
import android.hardware.display.DisplayViewport;
import android.hardware.display.DisplayedContentSample;
import android.hardware.display.DisplayedContentSamplingAttributes;
@@ -292,6 +293,7 @@ public final class DisplayManagerService extends SystemService {
private final DisplayModeDirector mDisplayModeDirector;
private final ExternalDisplayPolicy mExternalDisplayPolicy;
private WindowManagerInternal mWindowManagerInternal;
+ @Nullable
private InputManagerInternal mInputManagerInternal;
private ActivityManagerInternal mActivityManagerInternal;
private final UidImportanceListener mUidImportanceListener = new UidImportanceListener();
@@ -680,8 +682,15 @@ public final class DisplayManagerService extends SystemService {
mExternalDisplayPolicy = new ExternalDisplayPolicy(new ExternalDisplayPolicyInjector());
if (mFlags.isDisplayTopologyEnabled()) {
final var backupManager = new BackupManager(mContext);
+ Consumer<Pair<DisplayTopology, DisplayTopologyGraph>> topologyChangedCallback =
+ update -> {
+ if (mInputManagerInternal != null) {
+ mInputManagerInternal.setDisplayTopology(update.second);
+ }
+ deliverTopologyUpdate(update.first);
+ };
mDisplayTopologyCoordinator = new DisplayTopologyCoordinator(
- this::isExtendedDisplayEnabled, this::deliverTopologyUpdate,
+ this::isExtendedDisplayEnabled, topologyChangedCallback,
new HandlerExecutor(mHandler), mSyncRoot, backupManager::dataChanged);
} else {
mDisplayTopologyCoordinator = null;
diff --git a/services/core/java/com/android/server/display/DisplayTopologyCoordinator.java b/services/core/java/com/android/server/display/DisplayTopologyCoordinator.java
index c73ab32f117a..2618cf40d113 100644
--- a/services/core/java/com/android/server/display/DisplayTopologyCoordinator.java
+++ b/services/core/java/com/android/server/display/DisplayTopologyCoordinator.java
@@ -19,8 +19,11 @@ package com.android.server.display;
import static android.hardware.display.DisplayTopology.pxToDp;
import android.hardware.display.DisplayTopology;
+import android.hardware.display.DisplayTopologyGraph;
+import android.util.Pair;
import android.util.Slog;
import android.util.SparseArray;
+import android.util.SparseIntArray;
import android.view.Display;
import android.view.DisplayInfo;
@@ -53,6 +56,12 @@ class DisplayTopologyCoordinator {
@GuardedBy("mSyncRoot")
private DisplayTopology mTopology;
+
+ // Map from logical display ID to logical display density. Should always be consistent with
+ // mTopology.
+ @GuardedBy("mSyncRoot")
+ private final SparseIntArray mDensities = new SparseIntArray();
+
@GuardedBy("mSyncRoot")
private final Map<String, Integer> mUniqueIdToDisplayIdMapping = new HashMap<>();
@@ -69,13 +78,13 @@ class DisplayTopologyCoordinator {
* Should be invoked from the corresponding executor.
* A copy of the topology should be sent that will not be modified by the system.
*/
- private final Consumer<DisplayTopology> mOnTopologyChangedCallback;
+ private final Consumer<Pair<DisplayTopology, DisplayTopologyGraph>> mOnTopologyChangedCallback;
private final Executor mTopologyChangeExecutor;
private final DisplayManagerService.SyncRoot mSyncRoot;
private final Runnable mTopologySavedCallback;
DisplayTopologyCoordinator(BooleanSupplier isExtendedDisplayEnabled,
- Consumer<DisplayTopology> onTopologyChangedCallback,
+ Consumer<Pair<DisplayTopology, DisplayTopologyGraph>> onTopologyChangedCallback,
Executor topologyChangeExecutor, DisplayManagerService.SyncRoot syncRoot,
Runnable topologySavedCallback) {
this(new Injector(), isExtendedDisplayEnabled, onTopologyChangedCallback,
@@ -84,7 +93,7 @@ class DisplayTopologyCoordinator {
@VisibleForTesting
DisplayTopologyCoordinator(Injector injector, BooleanSupplier isExtendedDisplayEnabled,
- Consumer<DisplayTopology> onTopologyChangedCallback,
+ Consumer<Pair<DisplayTopology, DisplayTopologyGraph>> onTopologyChangedCallback,
Executor topologyChangeExecutor, DisplayManagerService.SyncRoot syncRoot,
Runnable topologySavedCallback) {
mTopology = injector.getTopology();
@@ -107,7 +116,7 @@ class DisplayTopologyCoordinator {
}
synchronized (mSyncRoot) {
addDisplayIdMappingLocked(info);
-
+ mDensities.put(info.displayId, info.logicalDensityDpi);
mTopology.addDisplay(info.displayId, getWidth(info), getHeight(info));
restoreTopologyLocked();
sendTopologyUpdateLocked();
@@ -119,7 +128,13 @@ class DisplayTopologyCoordinator {
* @param info The new display info
*/
void onDisplayChanged(DisplayInfo info) {
+ if (!isDisplayAllowedInTopology(info)) {
+ return;
+ }
synchronized (mSyncRoot) {
+ if (mDensities.indexOfKey(info.displayId) >= 0) {
+ mDensities.put(info.displayId, info.logicalDensityDpi);
+ }
if (mTopology.updateDisplay(info.displayId, getWidth(info), getHeight(info))) {
sendTopologyUpdateLocked();
}
@@ -132,6 +147,7 @@ class DisplayTopologyCoordinator {
*/
void onDisplayRemoved(int displayId) {
synchronized (mSyncRoot) {
+ mDensities.delete(displayId);
if (mTopology.removeDisplay(displayId)) {
removeDisplayIdMappingLocked(displayId);
restoreTopologyLocked();
@@ -234,8 +250,29 @@ class DisplayTopologyCoordinator {
}
private boolean isDisplayAllowedInTopology(DisplayInfo info) {
- return mIsExtendedDisplayEnabled.getAsBoolean()
- && info.displayGroupId == Display.DEFAULT_DISPLAY_GROUP;
+ if (info.type != Display.TYPE_INTERNAL && info.type != Display.TYPE_EXTERNAL
+ && info.type != Display.TYPE_OVERLAY) {
+ Slog.d(TAG, "Display " + info.displayId + " not allowed in topology because "
+ + "type is not INTERNAL, EXTERNAL or OVERLAY");
+ return false;
+ }
+ if (info.type == Display.TYPE_INTERNAL && info.displayId != Display.DEFAULT_DISPLAY) {
+ Slog.d(TAG, "Display " + info.displayId + " not allowed in topology because "
+ + "it is a non-default internal display");
+ return false;
+ }
+ if ((info.type == Display.TYPE_EXTERNAL || info.type == Display.TYPE_OVERLAY)
+ && !mIsExtendedDisplayEnabled.getAsBoolean()) {
+ Slog.d(TAG, "Display " + info.displayId + " not allowed in topology because "
+ + "type is EXTERNAL or OVERLAY and !mIsExtendedDisplayEnabled");
+ return false;
+ }
+ if (info.displayGroupId != Display.DEFAULT_DISPLAY_GROUP) {
+ Slog.d(TAG, "Display " + info.displayId + " not allowed in topology because "
+ + "it is not in the default display group");
+ return false;
+ }
+ return true;
}
/**
@@ -256,7 +293,9 @@ class DisplayTopologyCoordinator {
@GuardedBy("mSyncRoot")
private void sendTopologyUpdateLocked() {
DisplayTopology copy = mTopology.copy();
- mTopologyChangeExecutor.execute(() -> mOnTopologyChangedCallback.accept(copy));
+ SparseIntArray densities = mDensities.clone();
+ mTopologyChangeExecutor.execute(() -> mOnTopologyChangedCallback.accept(
+ new Pair<>(copy, copy.getGraph(densities))));
}
@VisibleForTesting
diff --git a/services/core/java/com/android/server/display/color/ColorDisplayService.java b/services/core/java/com/android/server/display/color/ColorDisplayService.java
index 52e64905c984..87eacc936008 100644
--- a/services/core/java/com/android/server/display/color/ColorDisplayService.java
+++ b/services/core/java/com/android/server/display/color/ColorDisplayService.java
@@ -132,6 +132,12 @@ public final class ColorDisplayService extends SystemService {
private static final int NOT_SET = -1;
/**
+ * Min and Max values for percentage of RBC setting.
+ */
+ private static final int PERCENTAGE_MIN = 0;
+ private static final int PERCENTAGE_MAX = 100;
+
+ /**
* Evaluator used to animate color matrix transitions.
*/
private static final ColorMatrixEvaluator COLOR_MATRIX_EVALUATOR = new ColorMatrixEvaluator();
@@ -696,15 +702,25 @@ public final class ColorDisplayService extends SystemService {
if (mCurrentUser == UserHandle.USER_NULL) {
return;
}
- int strength = Secure.getIntForUser(getContext().getContentResolver(),
+
+ int percentage = Secure.getIntForUser(getContext().getContentResolver(),
Secure.REDUCE_BRIGHT_COLORS_LEVEL, NOT_SET, mCurrentUser);
- if (strength == NOT_SET) {
- strength = getContext().getResources().getInteger(
+ final int deviceRange;
+
+ if (percentage == NOT_SET) {
+ deviceRange = getContext().getResources().getInteger(
R.integer.config_reduceBrightColorsStrengthDefault);
- }
- mReduceBrightColorsTintController.setMatrix(strength);
+ } else {
+ final int deviceMin = getContext().getResources().getInteger(
+ R.integer.config_reduceBrightColorsStrengthMin);
+ final int deviceMax = getContext().getResources().getInteger(
+ R.integer.config_reduceBrightColorsStrengthMax);
+ deviceRange = (int) MathUtils.constrainedMap(
+ deviceMin, deviceMax, PERCENTAGE_MIN, PERCENTAGE_MAX, percentage);
+ }
+ mReduceBrightColorsTintController.setMatrix(deviceRange);
if (mReduceBrightColorsListener != null) {
- mReduceBrightColorsListener.onReduceBrightColorsStrengthChanged(strength);
+ mReduceBrightColorsListener.onReduceBrightColorsStrengthChanged(deviceRange);
}
}
diff --git a/services/core/java/com/android/server/display/feature/DisplayManagerFlags.java b/services/core/java/com/android/server/display/feature/DisplayManagerFlags.java
index 373287d76442..a1e8f08db0a6 100644
--- a/services/core/java/com/android/server/display/feature/DisplayManagerFlags.java
+++ b/services/core/java/com/android/server/display/feature/DisplayManagerFlags.java
@@ -61,7 +61,7 @@ public class DisplayManagerFlags {
private final FlagState mDisplayTopology = new FlagState(
Flags.FLAG_DISPLAY_TOPOLOGY,
- Flags::displayTopology);
+ DesktopExperienceFlags.DISPLAY_TOPOLOGY::isTrue);
private final FlagState mConnectedDisplayErrorHandlingFlagState = new FlagState(
Flags.FLAG_ENABLE_CONNECTED_DISPLAY_ERROR_HANDLING,
@@ -267,7 +267,7 @@ public class DisplayManagerFlags {
private final FlagState mBaseDensityForExternalDisplays = new FlagState(
Flags.FLAG_BASE_DENSITY_FOR_EXTERNAL_DISPLAYS,
- Flags::baseDensityForExternalDisplays
+ DesktopExperienceFlags.BASE_DENSITY_FOR_EXTERNAL_DISPLAYS::isTrue
);
private final FlagState mFramerateOverrideTriggersRrCallbacks = new FlagState(
diff --git a/services/core/java/com/android/server/display/feature/display_flags.aconfig b/services/core/java/com/android/server/display/feature/display_flags.aconfig
index bbd0e41e9af7..cc0bbde370fe 100644
--- a/services/core/java/com/android/server/display/feature/display_flags.aconfig
+++ b/services/core/java/com/android/server/display/feature/display_flags.aconfig
@@ -509,3 +509,11 @@ flag {
purpose: PURPOSE_BUGFIX
}
}
+
+flag {
+ name: "display_category_built_in"
+ namespace: "windowing_sdk"
+ description: "Add a new category to get the built in displays."
+ bug: "293651324"
+ is_fixed_read_only: false
+}
diff --git a/services/core/java/com/android/server/dreams/DreamManagerService.java b/services/core/java/com/android/server/dreams/DreamManagerService.java
index 67b1ec305d7f..7e8bb28b6a37 100644
--- a/services/core/java/com/android/server/dreams/DreamManagerService.java
+++ b/services/core/java/com/android/server/dreams/DreamManagerService.java
@@ -495,6 +495,34 @@ public final class DreamManagerService extends SystemService {
}
}
+ @VisibleForTesting
+ boolean dreamConditionActiveInternal() {
+ synchronized (mLock) {
+ return dreamConditionActiveInternalLocked();
+ }
+ }
+
+ private boolean dreamConditionActiveInternalLocked() {
+ if ((mWhenToDream & DREAM_ON_CHARGE) == DREAM_ON_CHARGE) {
+ return mIsCharging;
+ }
+
+ if ((mWhenToDream & DREAM_ON_DOCK) == DREAM_ON_DOCK) {
+ return mIsDocked;
+ }
+
+ if ((mWhenToDream & DREAM_ON_POSTURED) == DREAM_ON_POSTURED) {
+ return mIsPostured;
+ }
+
+ return false;
+ }
+
+ @VisibleForTesting
+ boolean dreamsEnabled() {
+ return mDreamsEnabledSetting;
+ }
+
/** Whether dreaming can start given user settings and the current dock/charge state. */
private boolean canStartDreamingInternal(boolean isScreenOn) {
synchronized (mLock) {
@@ -524,19 +552,9 @@ public final class DreamManagerService extends SystemService {
return false;
}
- if ((mWhenToDream & DREAM_ON_CHARGE) == DREAM_ON_CHARGE) {
- return mIsCharging;
- }
-
- if ((mWhenToDream & DREAM_ON_DOCK) == DREAM_ON_DOCK) {
- return mIsDocked;
- }
-
- if ((mWhenToDream & DREAM_ON_POSTURED) == DREAM_ON_POSTURED) {
- return mIsPostured;
- }
-
- return false;
+ // All dream prerequisites fulfilled, check if device state matches "when to dream"
+ // setting.
+ return dreamConditionActiveInternalLocked();
}
}
@@ -674,7 +692,8 @@ public final class DreamManagerService extends SystemService {
}
}
- private void setDevicePosturedInternal(boolean isPostured) {
+ @VisibleForTesting
+ void setDevicePosturedInternal(boolean isPostured) {
Slog.d(TAG, "Device postured: " + isPostured);
synchronized (mLock) {
mIsPostured = isPostured;
@@ -1390,6 +1409,11 @@ public final class DreamManagerService extends SystemService {
}
@Override
+ public boolean dreamConditionActive() {
+ return dreamConditionActiveInternal();
+ }
+
+ @Override
public void requestDream() {
requestDreamInternal();
}
diff --git a/services/core/java/com/android/server/input/KeyGestureController.java b/services/core/java/com/android/server/input/KeyGestureController.java
index fb5ce5b4e5fa..41f58ae76a4d 100644
--- a/services/core/java/com/android/server/input/KeyGestureController.java
+++ b/services/core/java/com/android/server/input/KeyGestureController.java
@@ -809,7 +809,7 @@ final class KeyGestureController {
if (firstDown) {
handleKeyGesture(deviceId, new int[]{KeyEvent.KEYCODE_FULLSCREEN},
/* modifierState = */0,
- KeyGestureEvent.KEY_GESTURE_TYPE_MAXIMIZE_FREEFORM_WINDOW,
+ KeyGestureEvent.KEY_GESTURE_TYPE_MULTI_WINDOW_NAVIGATION,
KeyGestureEvent.ACTION_GESTURE_COMPLETE, displayId, focusedToken,
/* flags = */0, /* appLaunchData = */null);
}
diff --git a/services/core/java/com/android/server/inputmethod/ImeProtoLogGroup.java b/services/core/java/com/android/server/inputmethod/ImeProtoLogGroup.java
new file mode 100644
index 000000000000..f9a56effc800
--- /dev/null
+++ b/services/core/java/com/android/server/inputmethod/ImeProtoLogGroup.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.inputmethod;
+
+import com.android.internal.protolog.common.IProtoLogGroup;
+
+import java.util.UUID;
+
+public enum ImeProtoLogGroup implements IProtoLogGroup {
+ // TODO(b/393561240): add info/warn/error log level and replace in IMMS
+ IMMS_DEBUG(Consts.ENABLE_DEBUG, false, false,
+ InputMethodManagerService.TAG);
+
+ private final boolean mEnabled;
+ private volatile boolean mLogToProto;
+ private volatile boolean mLogToLogcat;
+ private final String mTag;
+
+ ImeProtoLogGroup(boolean enabled, boolean logToProto, boolean logToLogcat, String tag) {
+ this.mEnabled = enabled;
+ this.mLogToProto = logToProto;
+ this.mLogToLogcat = logToLogcat;
+ this.mTag = tag;
+ }
+
+
+ @Override
+ public boolean isEnabled() {
+ return mEnabled;
+ }
+
+ @Override
+ public boolean isLogToProto() {
+ return mLogToProto;
+ }
+
+ @Override
+ public boolean isLogToLogcat() {
+ return mLogToLogcat;
+ }
+
+ @Override
+ public String getTag() {
+ return mTag;
+ }
+
+ @Override
+ public int getId() {
+ return Consts.START_ID + ordinal();
+ }
+
+ @Override
+ public void setLogToProto(boolean logToProto) {
+ mLogToProto = logToProto;
+ }
+
+ @Override
+ public void setLogToLogcat(boolean logToLogcat) {
+ mLogToLogcat = logToLogcat;
+ }
+
+ private static class Consts {
+ private static final boolean ENABLE_DEBUG = true;
+ private static final int START_ID = (int) (
+ UUID.nameUUIDFromBytes(ImeProtoLogGroup.class.getName().getBytes())
+ .getMostSignificantBits() % Integer.MAX_VALUE);
+ }
+}
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index 7b81fc92e83d..484b47022f04 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -47,6 +47,7 @@ import static android.view.WindowManager.DISPLAY_IME_POLICY_LOCAL;
import static android.view.inputmethod.ConnectionlessHandwritingCallback.CONNECTIONLESS_HANDWRITING_ERROR_OTHER;
import static android.view.inputmethod.ConnectionlessHandwritingCallback.CONNECTIONLESS_HANDWRITING_ERROR_UNSUPPORTED;
+import static com.android.server.inputmethod.ImeProtoLogGroup.IMMS_DEBUG;
import static com.android.server.inputmethod.ImeVisibilityStateComputer.ImeTargetWindowState;
import static com.android.server.inputmethod.ImeVisibilityStateComputer.ImeVisibilityResult;
import static com.android.server.inputmethod.ImeVisibilityStateComputer.STATE_HIDE_IME;
@@ -176,6 +177,7 @@ import com.android.internal.inputmethod.StartInputFlags;
import com.android.internal.inputmethod.StartInputReason;
import com.android.internal.inputmethod.UnbindReason;
import com.android.internal.os.TransferPipe;
+import com.android.internal.protolog.ProtoLog;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.CollectionUtils;
import com.android.internal.util.DumpUtils;
@@ -720,9 +722,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
*/
@WorkerThread
void onActionLocaleChanged(@NonNull LocaleList prevLocales, @NonNull LocaleList newLocales) {
- if (DEBUG) {
- Slog.d(TAG, "onActionLocaleChanged prev=" + prevLocales + " new=" + newLocales);
- }
+ ProtoLog.v(IMMS_DEBUG, "onActionLocaleChanged prev=%s new=%s", prevLocales, newLocales);
synchronized (ImfLock.class) {
if (!mSystemReady) {
return;
@@ -1251,6 +1251,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
mShowOngoingImeSwitcherForPhones = false;
+ ProtoLog.init(ImeProtoLogGroup.values());
+
mCurrentImeUserId = mActivityManagerInternal.getCurrentUserId();
final IntFunction<InputMethodBindingController>
bindingControllerFactory = userId -> new InputMethodBindingController(userId,
@@ -1328,9 +1330,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
return;
}
final InputMethodInfo defIm = suitableImes.get(0);
- if (DEBUG) {
- Slog.i(TAG, "Default found, using " + defIm.getId());
- }
+ ProtoLog.v(IMMS_DEBUG, "Default found, using %s", defIm.getId());
setSelectedInputMethodAndSubtypeLocked(defIm, NOT_A_SUBTYPE_INDEX, false, userId);
}
@@ -1347,10 +1347,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
private void switchUserOnHandlerLocked(@UserIdInt int newUserId,
IInputMethodClientInvoker clientToBeReset) {
final int prevUserId = mCurrentImeUserId;
- if (DEBUG) {
- Slog.d(TAG, "Switching user stage 1/3. newUserId=" + newUserId
- + " prevUserId=" + prevUserId);
- }
+ ProtoLog.v(IMMS_DEBUG, "Switching user stage 1/3. newUserId=%s prevUserId=%s", newUserId,
+ prevUserId);
// Clean up stuff for mCurrentImeUserId, which soon becomes the previous user.
@@ -1375,10 +1373,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
final String defaultImiId = SecureSettingsWrapper.getString(
Settings.Secure.DEFAULT_INPUT_METHOD, null, newUserId);
- if (DEBUG) {
- Slog.d(TAG, "Switching user stage 2/3. newUserId=" + newUserId
- + " defaultImiId=" + defaultImiId);
- }
+ ProtoLog.v(IMMS_DEBUG, "Switching user stage 2/3. newUserId=%s defaultImiId=%s", newUserId,
+ defaultImiId);
// For secondary users, the list of enabled IMEs may not have been updated since the
// callbacks to PackageMonitor are ignored for the secondary user. Here, defaultImiId may
@@ -1414,10 +1410,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
newSettings.getEnabledInputMethodList());
}
- if (DEBUG) {
- Slog.d(TAG, "Switching user stage 3/3. newUserId=" + newUserId
- + " selectedIme=" + newSettings.getSelectedInputMethod());
- }
+ ProtoLog.v(IMMS_DEBUG, "Switching user stage 3/3. newUserId=%s selectedIme=%s", newUserId,
+ newSettings.getSelectedInputMethod());
if (mIsInteractive && clientToBeReset != null) {
final ClientState cs = mClientController.getClient(clientToBeReset.asBinder());
@@ -1466,9 +1460,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
waitForUserInitialization();
synchronized (ImfLock.class) {
- if (DEBUG) {
- Slog.d(TAG, "--- systemReady");
- }
+ ProtoLog.v(IMMS_DEBUG, "--- systemReady");
if (!mSystemReady) {
mSystemReady = true;
final int currentImeUserId = mCurrentImeUserId;
@@ -1844,10 +1836,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
void unbindCurrentClientLocked(@UnbindReason int unbindClientReason, @UserIdInt int userId) {
final var userData = getUserData(userId);
if (userData.mCurClient != null) {
- if (DEBUG) {
- Slog.v(TAG, "unbindCurrentInputLocked: client="
- + userData.mCurClient.mClient.asBinder());
- }
+ ProtoLog.v(IMMS_DEBUG, "unbindCurrentInputLocked: client=%s",
+ userData.mCurClient.mClient.asBinder());
final var bindingController = userData.mBindingController;
if (userData.mBoundToMethod) {
userData.mBoundToMethod = false;
@@ -1970,7 +1960,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
}
} else {
if (isShowRequestedForCurrentWindow(userId)) {
- if (DEBUG) Slog.v(TAG, "Attach new input asks to show input");
+ ProtoLog.v(IMMS_DEBUG, "Attach new input asks to show input");
// Re-use current statsToken, if it exists.
final var statsToken = userData.mCurStatsToken != null ? userData.mCurStatsToken
: createStatsTokenForFocusedClient(true /* show */,
@@ -2130,9 +2120,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
// If configured, we want to avoid starting up the IME if it is not supposed to be showing
if (shouldPreventImeStartupLocked(selectedMethodId, startInputFlags,
unverifiedTargetSdkVersion, userId)) {
- if (DEBUG) {
- Slog.d(TAG, "Avoiding IME startup and unbinding current input method.");
- }
+ ProtoLog.v(IMMS_DEBUG, "Avoiding IME startup and unbinding current input method.");
bindingController.invalidateAutofillSession();
bindingController.unbindCurrentMethod();
return InputBindResult.NO_EDITOR;
@@ -2215,9 +2203,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
return currentMethodId;
}
final String defaultDeviceMethodId = settings.getSelectedDefaultDeviceInputMethod();
- if (DEBUG) {
- Slog.v(TAG, "Restoring default device input method: " + defaultDeviceMethodId);
- }
+ ProtoLog.v(IMMS_DEBUG, "Restoring default device input method: %s",
+ defaultDeviceMethodId);
settings.putSelectedDefaultDeviceInputMethod(null);
return defaultDeviceMethodId;
}
@@ -2226,24 +2213,21 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
if (Objects.equals(deviceMethodId, currentMethodId)) {
return currentMethodId;
} else if (!settings.getMethodMap().containsKey(deviceMethodId)) {
- if (DEBUG) {
- Slog.v(TAG, "Disabling IME on virtual device with id " + newDeviceId
- + " because its custom input method is not available: " + deviceMethodId);
- }
+ ProtoLog.v(IMMS_DEBUG,
+ "Disabling IME on virtual device with id %s because its custom input method "
+ + "is not available: %s",
+ newDeviceId, deviceMethodId);
return null;
}
if (oldDeviceId == DEVICE_ID_DEFAULT) {
- if (DEBUG) {
- Slog.v(TAG, "Storing default device input method " + currentMethodId);
- }
+ ProtoLog.v(IMMS_DEBUG, "Storing default device input method %s", currentMethodId);
settings.putSelectedDefaultDeviceInputMethod(currentMethodId);
}
- if (DEBUG) {
- Slog.v(TAG, "Switching current input method from " + currentMethodId
- + " to device-specific one " + deviceMethodId + " because the current display "
- + displayIdToShowIme + " belongs to device with id " + newDeviceId);
- }
+ ProtoLog.v(IMMS_DEBUG,
+ "Switching current input method from %s to device-specific one %s because the "
+ + "current display %s belongs to device with id %s",
+ currentMethodId, deviceMethodId, displayIdToShowIme, newDeviceId);
return deviceMethodId;
}
@@ -2387,10 +2371,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
@GuardedBy("ImfLock.class")
void initializeImeLocked(@NonNull IInputMethodInvoker inputMethod, @NonNull IBinder token,
@NonNull InputMethodBindingController bindingController) {
- if (DEBUG) {
- Slog.v(TAG, "Sending attach of token: " + token + " for display: "
- + bindingController.getCurTokenDisplayId());
- }
+ ProtoLog.v(IMMS_DEBUG, "Sending attach of token: %s for display: %s", token,
+ bindingController.getCurTokenDisplayId());
final int userId = bindingController.getUserId();
final var userData = getUserData(userId);
inputMethod.initializeInternal(token,
@@ -2500,7 +2482,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
@GuardedBy("ImfLock.class")
void requestClientSessionLocked(ClientState cs, @UserIdInt int userId) {
if (!cs.mSessionRequested) {
- if (DEBUG) Slog.v(TAG, "Creating new session for client " + cs);
+ ProtoLog.v(IMMS_DEBUG, "Creating new session for client %s", cs);
final InputChannel serverChannel;
final InputChannel clientChannel;
{
@@ -2541,7 +2523,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
@GuardedBy("ImfLock.class")
void requestClientSessionForAccessibilityLocked(ClientState cs) {
if (!cs.mSessionRequestedForAccessibility) {
- if (DEBUG) Slog.v(TAG, "Creating new accessibility sessions for client " + cs);
+ ProtoLog.v(IMMS_DEBUG, "Creating new accessibility sessions for client %s", cs);
cs.mSessionRequestedForAccessibility = true;
ArraySet<Integer> ignoreSet = new ArraySet<>();
for (int i = 0; i < cs.mAccessibilitySessions.size(); i++) {
@@ -2656,10 +2638,10 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
return;
}
if (iconId == 0) {
- if (DEBUG) Slog.d(TAG, "hide the small icon for the input method");
+ ProtoLog.v(IMMS_DEBUG, "hide the small icon for the input method");
hideStatusBarIconLocked(userId);
} else if (packageName != null) {
- if (DEBUG) Slog.d(TAG, "show a small icon for the input method");
+ ProtoLog.v(IMMS_DEBUG, "show a small icon for the input method");
final PackageManager userAwarePackageManager =
getPackageManagerForUser(mContext, userId);
ApplicationInfo applicationInfo = null;
@@ -2887,12 +2869,9 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
return;
}
final int curTokenDisplayId = bindingController.getCurTokenDisplayId();
- if (DEBUG) {
- Slog.d(TAG, "IME window vis: " + vis
- + " active: " + (vis & InputMethodService.IME_ACTIVE)
- + " visible: " + (vis & InputMethodService.IME_VISIBLE)
- + " displayId: " + curTokenDisplayId);
- }
+ ProtoLog.v(IMMS_DEBUG, "IME window vis: %s active: %s visible: %s displayId: %s", vis,
+ (vis & InputMethodService.IME_ACTIVE), (vis & InputMethodService.IME_VISIBLE),
+ curTokenDisplayId);
final IBinder focusedWindowToken = userData.mImeBindingState != null
? userData.mImeBindingState.mFocusedWindow : null;
final Boolean windowPerceptible = focusedWindowToken != null
@@ -2960,10 +2939,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
}
if (ai != null && ai.enabledSetting
== PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED) {
- if (DEBUG) {
- Slog.d(TAG, "Update state(" + imm.getId()
- + "): DISABLED_UNTIL_USED -> DEFAULT");
- }
+ ProtoLog.v(IMMS_DEBUG, "Update state(%s): DISABLED_UNTIL_USED -> DEFAULT",
+ imm.getId());
userAwarePackageManager.setApplicationEnabledSetting(imm.getPackageName(),
PackageManager.COMPONENT_ENABLED_STATE_DEFAULT,
PackageManager.DONT_KILL_APP);
@@ -2979,11 +2956,10 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
String defaultDeviceIme = SecureSettingsWrapper.getString(
Settings.Secure.DEFAULT_DEVICE_INPUT_METHOD, null, userId);
if (defaultDeviceIme != null && !Objects.equals(ime, defaultDeviceIme)) {
- if (DEBUG) {
- Slog.v(TAG, "Current input method " + ime + " differs from the stored default"
- + " device input method for user " + userId
- + " - restoring " + defaultDeviceIme);
- }
+ ProtoLog.v(IMMS_DEBUG,
+ "Current input method %s differs from the stored default device input "
+ + "method for user %s - restoring %s",
+ ime, userId, defaultDeviceIme);
SecureSettingsWrapper.putString(
Settings.Secure.DEFAULT_INPUT_METHOD, defaultDeviceIme, userId);
SecureSettingsWrapper.putString(
@@ -3179,7 +3155,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
final var userData = getUserData(userId);
final long ident = Binder.clearCallingIdentity();
try {
- if (DEBUG) Slog.v(TAG, "Client requesting input be shown");
+ ProtoLog.v(IMMS_DEBUG, "Client requesting input be shown");
if (Flags.refactorInsetsController()) {
final var visibilityStateComputer = userData.mVisibilityStateComputer;
boolean wasVisible = visibilityStateComputer.isInputShown();
@@ -3211,7 +3187,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
final int userId = resolveImeUserIdFromWindowLocked(windowToken);
final long ident = Binder.clearCallingIdentity();
try {
- if (DEBUG) Slog.v(TAG, "Client requesting input be shown");
+ ProtoLog.v(IMMS_DEBUG, "Client requesting input be shown");
return showCurrentInputLocked(windowToken, statsToken, 0 /* flags */,
0 /* lastClickTooType */, null /* resultReceiver */,
SoftInputShowHideReason.SHOW_SOFT_INPUT, userId);
@@ -3231,7 +3207,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
final int userId = resolveImeUserIdFromWindowLocked(windowToken);
final long ident = Binder.clearCallingIdentity();
try {
- if (DEBUG) Slog.v(TAG, "Client requesting input be hidden");
+ ProtoLog.v(IMMS_DEBUG, "Client requesting input be hidden");
return hideCurrentInputLocked(windowToken, statsToken, 0 /* flags */,
null /* resultReceiver */, SoftInputShowHideReason.HIDE_SOFT_INPUT,
userId);
@@ -3365,7 +3341,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
+ " Ignoring startStylusHandwriting().");
return false;
}
- if (DEBUG) Slog.v(TAG, "Client requesting Stylus Handwriting to be started");
+ ProtoLog.v(IMMS_DEBUG, "Client requesting Stylus Handwriting to be started");
final IInputMethodInvoker curMethod = bindingController.getCurMethod();
if (curMethod != null) {
curMethod.canStartStylusHandwriting(requestId.getAsInt(),
@@ -3630,7 +3606,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
final long ident = Binder.clearCallingIdentity();
try {
Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "IMMS.hideSoftInput");
- if (DEBUG) Slog.v(TAG, "Client requesting input be hidden");
+ ProtoLog.v(IMMS_DEBUG, "Client requesting input be hidden");
if (Flags.refactorInsetsController()) {
boolean wasVisible = visibilityStateComputer.isInputShown();
// TODO add windowToken to interface
@@ -3830,10 +3806,9 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
// because if the focus changes some time before or after, the
// next client receiving focus that has any interest in input will
// be calling through here after that change happens.
- if (DEBUG) {
- Slog.w(TAG, "Focus gain on non-focused client " + cs.mClient
- + " (uid=" + cs.mUid + " pid=" + cs.mPid + ")");
- }
+ ProtoLog.v(IMMS_DEBUG,
+ "Focus gain on non-focused client %s (uid=%s pid=%s)",
+ cs.mClient, cs.mUid, cs.mPid);
return InputBindResult.NOT_IME_TARGET_WINDOW;
case WindowManagerInternal.ImeClientFocusResult.INVALID_DISPLAY_ID:
return InputBindResult.INVALID_DISPLAY_ID;
@@ -3910,21 +3885,22 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
@Nullable IRemoteAccessibilityInputConnection remoteAccessibilityInputConnection,
int unverifiedTargetSdkVersion, @NonNull InputMethodBindingController bindingController,
@NonNull ImeOnBackInvokedDispatcher imeDispatcher, @NonNull ClientState cs) {
- if (DEBUG) {
- Slog.v(TAG, "startInputOrWindowGainedFocusInternalLocked: reason="
- + InputMethodDebug.startInputReasonToString(startInputReason)
- + " client=" + client.asBinder()
- + " inputContext=" + inputContext
- + " editorInfo=" + editorInfo
- + " startInputFlags="
- + InputMethodDebug.startInputFlagsToString(startInputFlags)
- + " softInputMode=" + InputMethodDebug.softInputModeToString(softInputMode)
- + " windowFlags=#" + Integer.toHexString(windowFlags)
- + " unverifiedTargetSdkVersion=" + unverifiedTargetSdkVersion
- + " bindingController=" + bindingController
- + " imeDispatcher=" + imeDispatcher
- + " cs=" + cs);
- }
+ ProtoLog.v(IMMS_DEBUG, "startInputOrWindowGainedFocusInternalLocked: reason=%s"
+ + " client=%s"
+ + " inputContext=%s"
+ + " editorInfo=%s"
+ + " startInputFlags=%s"
+ + " softInputMode=%s"
+ + " windowFlags=#%s"
+ + " unverifiedTargetSdkVersion=%s"
+ + " bindingController=%s"
+ + " imeDispatcher=%s"
+ + " cs=%s",
+ InputMethodDebug.startInputReasonToString(startInputReason), client.asBinder(),
+ inputContext, editorInfo, InputMethodDebug.startInputFlagsToString(startInputFlags),
+ InputMethodDebug.softInputModeToString(softInputMode),
+ Integer.toHexString(windowFlags), unverifiedTargetSdkVersion, bindingController,
+ imeDispatcher, cs);
final int userId = bindingController.getUserId();
final var userData = getUserData(userId);
@@ -3944,12 +3920,11 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
visibilityStateComputer.setWindowState(windowToken, windowState);
if (sameWindowFocused && isTextEditor) {
- if (DEBUG) {
- Slog.w(TAG, "Window already focused, ignoring focus gain of: " + client
- + " editorInfo=" + editorInfo + ", token = " + windowToken
- + ", startInputReason="
- + InputMethodDebug.startInputReasonToString(startInputReason));
- }
+ ProtoLog.v(IMMS_DEBUG,
+ "Window already focused, ignoring focus gain of: %s editorInfo=%s, token=%s, "
+ + "startInputReason=%s",
+ client, editorInfo, windowToken,
+ InputMethodDebug.startInputReasonToString(startInputReason));
if (editorInfo != null) {
return startInputUncheckedLocked(cs, inputContext,
remoteAccessibilityInputConnection, editorInfo, startInputFlags,
@@ -4254,11 +4229,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
}
if (!TextUtils.isEmpty(targetLastImiId)) {
- if (DEBUG) {
- Slog.d(TAG, "Switch to: " + lastImi.getId() + ", " + lastIme.second
- + ", from: " + bindingController.getSelectedMethodId() + ", "
- + subtypeIndex);
- }
+ ProtoLog.v(IMMS_DEBUG, "Switch to: %s, %s, from: %s, %s", lastImi.getId(),
+ lastIme.second, bindingController.getSelectedMethodId(), subtypeIndex);
setInputMethodWithSubtypeIndexLocked(targetLastImiId, subtypeIndex, userId);
return true;
} else {
@@ -4557,7 +4529,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
}
final long ident = Binder.clearCallingIdentity();
try {
- if (DEBUG) Slog.v(TAG, "Adding virtual stylus id for session");
+ ProtoLog.v(IMMS_DEBUG, "Adding virtual stylus id for session");
addStylusDeviceIdLocked(VIRTUAL_STYLUS_ID_FOR_TEST);
} finally {
Binder.restoreCallingIdentity(ident);
@@ -4586,7 +4558,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
}
final long ident = Binder.clearCallingIdentity();
try {
- if (DEBUG) Slog.v(TAG, "Setting stylus window idle timeout");
+ ProtoLog.v(IMMS_DEBUG, "Setting stylus window idle timeout");
getCurMethodLocked().setStylusWindowIdleTimeoutForTest(timeout);
} finally {
Binder.restoreCallingIdentity(ident);
@@ -4731,9 +4703,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
@BinderThread
@GuardedBy("ImfLock.class")
private void notifyUserActionLocked(@NonNull UserData userData) {
- if (DEBUG) {
- Slog.d(TAG, "Got the notification of a user action.");
- }
+ ProtoLog.v(IMMS_DEBUG, "Got the notification of a user action.");
final var bindingController = userData.mBindingController;
final InputMethodInfo imi = bindingController.getSelectedMethod();
if (imi != null) {
@@ -4870,13 +4840,13 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
void setEnabledSessionLocked(SessionState session, @NonNull UserData userData) {
if (userData.mEnabledSession != session) {
if (userData.mEnabledSession != null && userData.mEnabledSession.mSession != null) {
- if (DEBUG) Slog.v(TAG, "Disabling: " + userData.mEnabledSession);
+ ProtoLog.v(IMMS_DEBUG, "Disabling: " + userData.mEnabledSession);
userData.mEnabledSession.mMethod.setSessionEnabled(
userData.mEnabledSession.mSession, false);
}
userData.mEnabledSession = session;
if (userData.mEnabledSession != null && userData.mEnabledSession.mSession != null) {
- if (DEBUG) Slog.v(TAG, "Enabling: " + userData.mEnabledSession);
+ ProtoLog.v(IMMS_DEBUG, "Enabling: " + userData.mEnabledSession);
userData.mEnabledSession.mMethod.setSessionEnabled(
userData.mEnabledSession.mSession, true);
}
@@ -4961,13 +4931,12 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
}
if (Flags.imeSwitcherRevamp()) {
- if (DEBUG) {
- Slog.v(TAG, "Show IME switcher menu,"
- + " showAuxSubtypes=" + showAuxSubtypes
- + " displayId=" + displayId
- + " preferredInputMethodId=" + lastInputMethodId
- + " preferredInputMethodSubtypeIndex=" + lastInputMethodSubtypeIndex);
- }
+ ProtoLog.v(IMMS_DEBUG, "Show IME switcher menu,"
+ + " showAuxSubtypes=%s"
+ + " displayId=%s"
+ + " preferredInputMethodId=%s"
+ + " preferredInputMethodSubtypeIndex=%s",
+ showAuxSubtypes, displayId, lastInputMethodId, lastInputMethodSubtypeIndex);
int selectedSubtypeIndex = lastInputMethodSubtypeIndex;
if (selectedSubtypeIndex == NOT_A_SUBTYPE_INDEX) {
@@ -5206,9 +5175,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
final InputMethodInfo imi = InputMethodInfoUtils.getMostApplicableDefaultIME(
settings.getEnabledInputMethodList());
if (imi != null) {
- if (DEBUG) {
- Slog.d(TAG, "New default IME was selected: " + imi.getId());
- }
+ ProtoLog.v(IMMS_DEBUG, "New default IME was selected: %s", imi.getId());
resetSelectedInputMethodAndSubtypeLocked(imi.getId(), userId);
return true;
}
@@ -5262,7 +5229,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
continue;
}
- if (DEBUG) Slog.d(TAG, "Checking " + imeId);
+ ProtoLog.v(IMMS_DEBUG, "Checking %s", imeId);
try {
final InputMethodInfo imi = new InputMethodInfo(userAwareContext, ri,
@@ -5279,11 +5246,10 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
1 + imiPackageCount.getOrDefault(packageName, 0));
methodMap.put(imi.getId(), imi);
- if (DEBUG) {
- Slog.d(TAG, "Found an input method " + imi);
- }
- } else if (DEBUG) {
- Slog.d(TAG, "Found an input method, but ignored due threshold: " + imi);
+ ProtoLog.v(IMMS_DEBUG, "Found an input method %s", imi);
+ } else {
+ ProtoLog.v(IMMS_DEBUG, "Found an input method, but ignored due threshold: %s",
+ imi);
}
} catch (Exception e) {
Slog.wtf(TAG, "Unable to load input method " + imeId, e);
@@ -5295,10 +5261,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
@GuardedBy("ImfLock.class")
void postInputMethodSettingUpdatedLocked(boolean resetDefaultEnabledIme,
@UserIdInt int userId) {
- if (DEBUG) {
- Slog.d(TAG, "--- re-buildInputMethodList reset = " + resetDefaultEnabledIme
- + " \n ------ caller=" + Debug.getCallers(10));
- }
+ ProtoLog.v(IMMS_DEBUG, "--- re-buildInputMethodList reset = %s"
+ + " \n ------ caller=%s", resetDefaultEnabledIme, Debug.getCallers(10));
if (!mSystemReady) {
Slog.e(TAG, "buildInputMethodListLocked is not allowed until system is ready");
return;
@@ -5324,15 +5288,12 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
}
}
if (!enabledImeFound) {
- if (DEBUG) {
- Slog.i(TAG, "All the enabled IMEs are gone. Reset default enabled IMEs.");
- }
+ ProtoLog.v(IMMS_DEBUG,
+ "All the enabled IMEs are gone. Reset default enabled IMEs.");
resetDefaultEnabledIme = true;
resetSelectedInputMethodAndSubtypeLocked("", userId);
} else if (!enabledNonAuxImeFound) {
- if (DEBUG) {
- Slog.i(TAG, "All the enabled non-Aux IMEs are gone. Do partial reset.");
- }
+ ProtoLog.v(IMMS_DEBUG, "All the enabled non-Aux IMEs are gone. Do partial reset.");
reenableMinimumNonAuxSystemImes = true;
}
}
@@ -5344,9 +5305,7 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
final int numImes = defaultEnabledIme.size();
for (int i = 0; i < numImes; ++i) {
final InputMethodInfo imi = defaultEnabledIme.get(i);
- if (DEBUG) {
- Slog.d(TAG, "--- enable ime = " + imi);
- }
+ ProtoLog.v(IMMS_DEBUG, "--- enable ime = %s", imi);
setInputMethodEnabledLocked(imi.getId(), true, userId);
}
}
@@ -5422,10 +5381,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
final InputMethodInfo newSystemVoiceIme = InputMethodInfoUtils.chooseSystemVoiceIme(
settings.getMethodMap(), systemSpeechRecognizer, currentDefaultVoiceImeId);
if (newSystemVoiceIme == null) {
- if (DEBUG) {
- Slog.i(TAG, "Found no valid default Voice IME. If the user is still locked,"
- + " this may be expected.");
- }
+ ProtoLog.v(IMMS_DEBUG, "Found no valid default Voice IME. If the user is still locked,"
+ + " this may be expected.");
// Clear DEFAULT_VOICE_INPUT_METHOD when necessary. Note that InputMethodSettings
// does not update the actual Secure Settings until the user is unlocked.
if (!TextUtils.isEmpty(currentDefaultVoiceImeId)) {
@@ -5438,10 +5395,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
if (TextUtils.equals(currentDefaultVoiceImeId, newSystemVoiceIme.getId())) {
return;
}
- if (DEBUG) {
- Slog.i(TAG, "Enabling the default Voice IME:" + newSystemVoiceIme
- + " userId:" + userId);
- }
+ ProtoLog.v(IMMS_DEBUG, "Enabling the default Voice IME: %s userId: %s", newSystemVoiceIme,
+ userId);
setInputMethodEnabledLocked(newSystemVoiceIme.getId(), true, userId);
settings.putDefaultVoiceInputMethod(newSystemVoiceIme.getId());
}
@@ -5940,10 +5895,8 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl.
final var bindingController = userData.mBindingController;
// TODO(b/305829876): Implement user ID verification
if (userData.mCurClient != null) {
- if (DEBUG) {
- Slog.v(TAG, "unbindAccessibilityFromCurrentClientLocked: client="
- + userData.mCurClient.mClient.asBinder());
- }
+ ProtoLog.v(IMMS_DEBUG, "unbindAccessibilityFromCurrentClientLocked: client=%s",
+ userData.mCurClient.mClient.asBinder());
// A11yManagerService unbinds the disabled accessibility service. We don't need
// to do it here.
userData.mCurClient.mClient.onUnbindAccessibilityService(
diff --git a/services/core/java/com/android/server/inputmethod/LocaleUtils.java b/services/core/java/com/android/server/inputmethod/LocaleUtils.java
index dbcd21a36ab6..5484575e0c0a 100644
--- a/services/core/java/com/android/server/inputmethod/LocaleUtils.java
+++ b/services/core/java/com/android/server/inputmethod/LocaleUtils.java
@@ -40,11 +40,10 @@ final class LocaleUtils {
/**
* Calculates a matching score for the single desired locale.
*
+ * @param supported the locale supported by IME subtype
+ * @param desired the locale preferred by user
+ * @return the score based on the locale matching for the default subtype enabling
* @see LocaleUtils#filterByLanguage(List, LocaleExtractor, LocaleList, ArrayList)
- *
- * @param supported The locale supported by IME subtype.
- * @param desired The locale preferred by user.
- * @return A score based on the locale matching for the default subtype enabling.
*/
@IntRange(from = 1, to = 4)
private static byte calculateMatchingSubScore(@NonNull final ULocale supported,
@@ -88,7 +87,8 @@ final class LocaleUtils {
private static final class ScoreEntry implements Comparable<ScoreEntry> {
public int mIndex = -1;
- @NonNull public final byte[] mScore; // matching score of the i-th system languages.
+ @NonNull
+ public final byte[] mScore; // matching score of the i-th system languages.
ScoreEntry(@NonNull byte[] score, int index) {
mScore = new byte[score.length];
@@ -121,10 +121,10 @@ final class LocaleUtils {
* {@code right} is equal, do the same comparison to the next value. Finally if all values
* in {@code left} and {@code right} are equal, {@code left} and {@code right} is equal.</p>
*
- * @param left The length must be equal to {@code right}.
- * @param right The length must be equal to {@code left}.
+ * @param left the length must be equal to {@code right}
+ * @param right the length must be equal to {@code left}
* @return 1 if {@code left} is larger than {@code right}. -1 if {@code left} is less than
- * {@code right}. 0 if {@code left} and {@code right} is equal.
+ * {@code right}. 0 if {@code left} and {@code right} is equal
*/
@IntRange(from = -1, to = 1)
private static int compare(@NonNull byte[] left, @NonNull byte[] right) {
@@ -155,12 +155,12 @@ final class LocaleUtils {
* will be searched from {@code source} based on matching score. For the score design, see
* {@link LocaleUtils#calculateMatchingSubScore(ULocale, ULocale)}</p>
*
- * @param sources Source items to be filtered.
- * @param extractor Type converter from the source items to {@link Locale} object.
- * @param preferredLocales Ordered list of locales with which the input items will be
- * filtered.
- * @param dest Destination into which the filtered items will be added.
- * @param <T> Type of the data items.
+ * @param sources source items to be filtered
+ * @param extractor type converter from the source items to {@link Locale} object
+ * @param preferredLocales ordered list of locales with which the input items will be
+ * filtered
+ * @param dest destination into which the filtered items will be added
+ * @param <T> type of the data items
*/
public static <T> void filterByLanguage(
@NonNull List<T> sources,
diff --git a/services/core/java/com/android/server/location/contexthub/ContextHubEndpointManager.java b/services/core/java/com/android/server/location/contexthub/ContextHubEndpointManager.java
index 740c4f195852..ed98bf98f7b7 100644
--- a/services/core/java/com/android/server/location/contexthub/ContextHubEndpointManager.java
+++ b/services/core/java/com/android/server/location/contexthub/ContextHubEndpointManager.java
@@ -19,17 +19,20 @@ package com.android.server.location.contexthub;
import android.content.Context;
import android.hardware.contexthub.ContextHubInfo;
import android.hardware.contexthub.EndpointInfo;
+import android.hardware.contexthub.ErrorCode;
import android.hardware.contexthub.HubEndpointInfo;
import android.hardware.contexthub.HubInfo;
import android.hardware.contexthub.HubMessage;
import android.hardware.contexthub.IContextHubEndpoint;
import android.hardware.contexthub.IContextHubEndpointCallback;
import android.hardware.contexthub.IEndpointCommunication;
+import android.hardware.contexthub.MessageDeliveryStatus;
import android.os.RemoteException;
import android.os.ServiceSpecificException;
import android.util.Log;
import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
import java.util.Collections;
import java.util.HashMap;
@@ -45,14 +48,14 @@ import java.util.function.Consumer;
*/
/* package */ class ContextHubEndpointManager
implements ContextHubHalEndpointCallback.IEndpointSessionCallback {
+ /** The range of session IDs to use for endpoints */
+ public static final int SERVICE_SESSION_RANGE = 1024;
+
private static final String TAG = "ContextHubEndpointManager";
/** The hub ID of the Context Hub Service. */
private static final long SERVICE_HUB_ID = 0x416e64726f696400L;
- /** The range of session IDs to use for endpoints */
- private static final int SERVICE_SESSION_RANGE = 1024;
-
/** The length of the array that should be returned by HAL requestSessionIdRange */
private static final int SERVICE_SESSION_RANGE_LENGTH = 2;
@@ -338,6 +341,12 @@ import java.util.function.Consumer;
sessionId, (broker) -> broker.onMessageReceived(sessionId, message));
if (!callbackInvoked) {
Log.w(TAG, "onMessageReceived: unknown session ID " + sessionId);
+ if (message.isResponseRequired()) {
+ sendMessageDeliveryStatus(
+ sessionId,
+ message.getMessageSequenceNumber(),
+ ErrorCode.DESTINATION_NOT_FOUND);
+ }
}
}
@@ -400,4 +409,31 @@ import java.util.function.Consumer;
private boolean isSessionIdRangeValid(int minId, int maxId) {
return (minId <= maxId) && (minId >= 0) && (maxId >= 0);
}
+
+ private void sendMessageDeliveryStatus(
+ int sessionId, int messageSequenceNumber, byte errorCode) {
+ MessageDeliveryStatus status = new MessageDeliveryStatus();
+ status.messageSequenceNumber = messageSequenceNumber;
+ status.errorCode = errorCode;
+ try {
+ mHubInterface.sendMessageDeliveryStatusToEndpoint(sessionId, status);
+ } catch (RemoteException e) {
+ Log.w(
+ TAG,
+ "Exception while sending message delivery status on session " + sessionId,
+ e);
+ }
+ }
+
+ @VisibleForTesting
+ /* package */ int getNumAvailableSessions() {
+ synchronized (mSessionIdLock) {
+ return (mMaxSessionId - mMinSessionId + 1) - mReservedSessionIds.size();
+ }
+ }
+
+ @VisibleForTesting
+ /* package */ int getNumRegisteredClients() {
+ return mEndpointMap.size();
+ }
}
diff --git a/services/core/java/com/android/server/logcat/OWNERS b/services/core/java/com/android/server/logcat/OWNERS
index 33e1873d91fa..2913cc9bf19e 100644
--- a/services/core/java/com/android/server/logcat/OWNERS
+++ b/services/core/java/com/android/server/logcat/OWNERS
@@ -3,6 +3,5 @@
cbrubaker@google.com
eunjeongshin@google.com
georgechan@google.com
-jsharkey@google.com
wenhaowang@google.com
xiaozhenl@google.com
diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java
index d873075a19e4..7834e26125f2 100644
--- a/services/core/java/com/android/server/media/MediaSessionRecord.java
+++ b/services/core/java/com/android/server/media/MediaSessionRecord.java
@@ -234,13 +234,25 @@ public class MediaSessionRecord extends MediaSessionRecordImpl implements IBinde
};
@GuardedBy("mLock")
- private @UserEngagementState int mUserEngagementState = USER_DISENGAGED;
-
- @IntDef({USER_PERMANENTLY_ENGAGED, USER_TEMPORARILY_ENGAGED, USER_DISENGAGED})
+ private @UserEngagementState int mUserEngagementState = USER_ENGAGEMENT_UNSET;
+
+ @IntDef({
+ USER_ENGAGEMENT_UNSET,
+ USER_PERMANENTLY_ENGAGED,
+ USER_TEMPORARILY_ENGAGED,
+ USER_DISENGAGED
+ })
@Retention(RetentionPolicy.SOURCE)
private @interface UserEngagementState {}
/**
+ * Indicates that the {@link UserEngagementState} is not yet set.
+ *
+ * @see #updateUserEngagedStateIfNeededLocked(boolean)
+ */
+ private static final int USER_ENGAGEMENT_UNSET = -1;
+
+ /**
* Indicates that the session is {@linkplain MediaSession#isActive() active} and in one of the
* {@linkplain PlaybackState#isActive() active states}.
*
@@ -1054,11 +1066,10 @@ public class MediaSessionRecord extends MediaSessionRecordImpl implements IBinde
}
int oldUserEngagedState = mUserEngagementState;
int newUserEngagedState;
- if (!isActive() || mPlaybackState == null) {
- newUserEngagedState = USER_DISENGAGED;
- } else if (mPlaybackState.isActive()) {
+ if (isActive() && mPlaybackState != null && mPlaybackState.isActive()) {
newUserEngagedState = USER_PERMANENTLY_ENGAGED;
} else if (oldUserEngagedState == USER_PERMANENTLY_ENGAGED
+ || oldUserEngagedState == USER_ENGAGEMENT_UNSET
|| (oldUserEngagedState == USER_TEMPORARILY_ENGAGED && !isTimeoutExpired)) {
newUserEngagedState = USER_TEMPORARILY_ENGAGED;
} else {
@@ -1079,7 +1090,7 @@ public class MediaSessionRecord extends MediaSessionRecordImpl implements IBinde
boolean wasUserEngaged = oldUserEngagedState != USER_DISENGAGED;
boolean isNowUserEngaged = newUserEngagedState != USER_DISENGAGED;
- if (wasUserEngaged != isNowUserEngaged) {
+ if (oldUserEngagedState == USER_ENGAGEMENT_UNSET || wasUserEngaged != isNowUserEngaged) {
mHandler.post(
() ->
mService.onSessionUserEngagementStateChange(
diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java
index e091fc62451b..58cf29b59961 100644
--- a/services/core/java/com/android/server/media/MediaSessionService.java
+++ b/services/core/java/com/android/server/media/MediaSessionService.java
@@ -196,16 +196,6 @@ public class MediaSessionService extends SystemService implements Monitor {
@GuardedBy("mLock")
private final Map<Integer, Set<StatusBarNotification>> mMediaNotifications = new HashMap<>();
- /**
- * Holds all {@link MediaSessionRecordImpl} which we've reported as being {@link
- * ActivityManagerInternal#startForegroundServiceDelegate user engaged}.
- *
- * <p>This map simply prevents invoking {@link
- * ActivityManagerInternal#startForegroundServiceDelegate} more than once per session.
- */
- @GuardedBy("mLock")
- private final Set<MediaSessionRecordImpl> mFgsAllowedMediaSessionRecords = new HashSet<>();
-
// The FullUserRecord of the current users. (i.e. The foreground user that isn't a profile)
// It's always not null after the MediaSessionService is started.
private FullUserRecord mCurrentFullUserRecord;
@@ -759,9 +749,6 @@ public class MediaSessionService extends SystemService implements Monitor {
@GuardedBy("mLock")
private void setFgsActiveLocked(MediaSessionRecordImpl mediaSessionRecord,
StatusBarNotification sbn) {
- if (!mFgsAllowedMediaSessionRecords.add(mediaSessionRecord)) {
- return; // This record already is FGS-activated.
- }
final long token = Binder.clearCallingIdentity();
try {
final String packageName = sbn.getPackageName();
@@ -826,10 +813,6 @@ public class MediaSessionService extends SystemService implements Monitor {
@GuardedBy("mLock")
private void setFgsInactiveLocked(MediaSessionRecordImpl mediaSessionRecord,
StatusBarNotification sbn) {
- if (!mFgsAllowedMediaSessionRecords.remove(mediaSessionRecord)) {
- return; // This record is not FGS-active. No need to set inactive.
- }
-
final long token = Binder.clearCallingIdentity();
try {
final String packageName = sbn.getPackageName();
@@ -3273,6 +3256,7 @@ public class MediaSessionService extends SystemService implements Monitor {
public void onNotificationPosted(StatusBarNotification sbn) {
super.onNotificationPosted(sbn);
int uid = sbn.getUid();
+ int userId = sbn.getUser().getIdentifier();
final Notification postedNotification = sbn.getNotification();
if (!postedNotification.isMediaNotification()) {
return;
@@ -3280,12 +3264,16 @@ public class MediaSessionService extends SystemService implements Monitor {
synchronized (mLock) {
mMediaNotifications.putIfAbsent(uid, new HashSet<>());
mMediaNotifications.get(uid).add(sbn);
- for (MediaSessionRecordImpl mediaSessionRecord :
- mUserEngagedSessionsForFgs.getOrDefault(uid, Set.of())) {
- if (mediaSessionRecord.isLinkedToNotification(postedNotification)) {
- setFgsActiveLocked(mediaSessionRecord, sbn);
- return;
- }
+ MediaSessionRecordImpl userEngagedRecord =
+ getUserEngagedMediaSessionRecordForNotification(uid, postedNotification);
+ if (userEngagedRecord != null) {
+ setFgsActiveLocked(userEngagedRecord, sbn);
+ return;
+ }
+ MediaSessionRecordImpl notificationRecord =
+ getAnyMediaSessionRecordForNotification(uid, userId, postedNotification);
+ if (notificationRecord != null) {
+ setFgsInactiveIfNoSessionIsLinkedToNotification(notificationRecord);
}
}
}
@@ -3308,7 +3296,7 @@ public class MediaSessionService extends SystemService implements Monitor {
}
MediaSessionRecordImpl notificationRecord =
- getLinkedMediaSessionRecord(uid, removedNotification);
+ getUserEngagedMediaSessionRecordForNotification(uid, removedNotification);
if (notificationRecord == null) {
return;
@@ -3317,7 +3305,7 @@ public class MediaSessionService extends SystemService implements Monitor {
}
}
- private MediaSessionRecordImpl getLinkedMediaSessionRecord(
+ private MediaSessionRecordImpl getUserEngagedMediaSessionRecordForNotification(
int uid, Notification notification) {
synchronized (mLock) {
for (MediaSessionRecordImpl mediaSessionRecord :
@@ -3329,5 +3317,24 @@ public class MediaSessionService extends SystemService implements Monitor {
}
return null;
}
+
+ private MediaSessionRecordImpl getAnyMediaSessionRecordForNotification(
+ int uid, int userId, Notification notification) {
+ synchronized (mLock) {
+ FullUserRecord userRecord = getFullUserRecordLocked(userId);
+ if (userRecord == null) {
+ return null;
+ }
+ List<MediaSessionRecord> allUserSessions =
+ userRecord.mPriorityStack.getPriorityList(/* activeOnly= */ false, userId);
+ for (MediaSessionRecordImpl mediaSessionRecord : allUserSessions) {
+ if (mediaSessionRecord.getUid() == uid
+ && mediaSessionRecord.isLinkedToNotification(notification)) {
+ return mediaSessionRecord;
+ }
+ }
+ }
+ return null;
+ }
}
}
diff --git a/services/core/java/com/android/server/media/SystemMediaRoute2Provider2.java b/services/core/java/com/android/server/media/SystemMediaRoute2Provider2.java
index 3eb38a7029e6..b529853c63a4 100644
--- a/services/core/java/com/android/server/media/SystemMediaRoute2Provider2.java
+++ b/services/core/java/com/android/server/media/SystemMediaRoute2Provider2.java
@@ -56,8 +56,10 @@ import java.util.stream.Stream;
*/
/* package */ class SystemMediaRoute2Provider2 extends SystemMediaRoute2Provider {
- private static final String ROUTE_ID_PREFIX_SYSTEM = "SYSTEM";
- private static final String ROUTE_ID_SYSTEM_SEPARATOR = ".";
+ private static final String UNIQUE_SYSTEM_ID_PREFIX = "SYSTEM";
+ private static final String UNIQUE_SYSTEM_ID_SEPARATOR = "-";
+ private static final boolean FORCE_GLOBAL_ROUTING_SESSION = true;
+ private static final String PACKAGE_NAME_FOR_GLOBAL_SESSION = "";
private final PackageManager mPackageManager;
@@ -67,6 +69,10 @@ import java.util.stream.Stream;
@GuardedBy("mLock")
private final Map<String, ProviderProxyRecord> mProxyRecords = new ArrayMap<>();
+ @GuardedBy("mLock")
+ private final Map<String, SystemMediaSessionRecord> mSessionOriginalIdToSessionRecord =
+ new ArrayMap<>();
+
/**
* Maps package names to corresponding sessions maintained by {@link MediaRoute2ProviderService
* provider services}.
@@ -114,6 +120,9 @@ import java.util.stream.Stream;
String routeOriginalId,
int transferReason) {
synchronized (mLock) {
+ if (FORCE_GLOBAL_ROUTING_SESSION) {
+ clientPackageName = PACKAGE_NAME_FOR_GLOBAL_SESSION;
+ }
var targetProviderProxyId = mOriginalRouteIdToProviderId.get(routeOriginalId);
var targetProviderProxyRecord = mProxyRecords.get(targetProviderProxyId);
// Holds the target route, if it's managed by a provider service. Holds null otherwise.
@@ -121,7 +130,7 @@ import java.util.stream.Stream;
targetProviderProxyRecord != null
? targetProviderProxyRecord.getRouteByOriginalId(routeOriginalId)
: null;
- var existingSessionRecord = mPackageNameToSessionRecord.get(clientPackageName);
+ var existingSessionRecord = getSessionRecordByPackageName(clientPackageName);
if (existingSessionRecord != null) {
var existingSession = existingSessionRecord.mSourceSessionInfo;
if (targetProviderProxyId != null
@@ -150,7 +159,7 @@ import java.util.stream.Stream;
if (currentProxyRecord != null) {
currentProxyRecord.releaseSession(
requestId, existingSession.getOriginalId());
- existingSessionRecord.removeSelfFromSessionMap();
+ existingSessionRecord.removeSelfFromSessionMaps();
}
}
}
@@ -202,7 +211,7 @@ import java.util.stream.Stream;
if (systemSession == null) {
return null;
}
- var overridingSession = mPackageNameToSessionRecord.get(packageName);
+ var overridingSession = getSessionRecordByPackageName(packageName);
if (overridingSession != null) {
var builder =
new RoutingSessionInfo.Builder(overridingSession.mTranslatedSessionInfo)
@@ -240,6 +249,41 @@ import java.util.stream.Stream;
super.setRouteVolume(requestId, routeOriginalId, volume);
}
+ @Override
+ public void setSessionVolume(long requestId, String sessionOriginalId, int volume) {
+ if (SYSTEM_SESSION_ID.equals(sessionOriginalId)) {
+ super.setSessionVolume(requestId, sessionOriginalId, volume);
+ return;
+ }
+ synchronized (mLock) {
+ var sessionRecord = getSessionRecordByOriginalId(sessionOriginalId);
+ var proxyRecord = sessionRecord != null ? sessionRecord.getProxyRecord() : null;
+ if (proxyRecord != null) {
+ proxyRecord.mProxy.setSessionVolume(
+ requestId, sessionRecord.getServiceSessionId(), volume);
+ return;
+ }
+ }
+ notifyRequestFailed(requestId, MediaRoute2ProviderService.REASON_ROUTE_NOT_AVAILABLE);
+ }
+
+ @GuardedBy("mLock")
+ private SystemMediaSessionRecord getSessionRecordByOriginalId(String sessionOriginalId) {
+ if (FORCE_GLOBAL_ROUTING_SESSION) {
+ return getSessionRecordByPackageName(PACKAGE_NAME_FOR_GLOBAL_SESSION);
+ } else {
+ return mSessionOriginalIdToSessionRecord.get(sessionOriginalId);
+ }
+ }
+
+ @GuardedBy("mLock")
+ private SystemMediaSessionRecord getSessionRecordByPackageName(String clientPackageName) {
+ if (FORCE_GLOBAL_ROUTING_SESSION) {
+ clientPackageName = PACKAGE_NAME_FOR_GLOBAL_SESSION;
+ }
+ return mPackageNameToSessionRecord.get(clientPackageName);
+ }
+
/**
* Returns the uid that corresponds to the given name and user handle, or {@link
* Process#INVALID_UID} if a uid couldn't be found.
@@ -297,16 +341,34 @@ import java.util.stream.Stream;
*/
private void updateSessionInfo() {
synchronized (mLock) {
- var systemSessionInfo = mSystemSessionInfo;
- if (systemSessionInfo == null) {
+ var globalSessionInfoRecord =
+ getSessionRecordByPackageName(PACKAGE_NAME_FOR_GLOBAL_SESSION);
+ var globalSessionInfo =
+ globalSessionInfoRecord != null
+ ? globalSessionInfoRecord.mTranslatedSessionInfo
+ : null;
+ if (globalSessionInfo == null) {
+ globalSessionInfo = mSystemSessionInfo;
+ }
+ if (globalSessionInfo == null) {
// The system session info hasn't been initialized yet. Do nothing.
return;
}
- var builder = new RoutingSessionInfo.Builder(systemSessionInfo);
- mProxyRecords.values().stream()
- .flatMap(ProviderProxyRecord::getRoutesStream)
- .map(MediaRoute2Info::getOriginalId)
- .forEach(builder::addTransferableRoute);
+ var builder = new RoutingSessionInfo.Builder(globalSessionInfo);
+ if (globalSessionInfo == mSystemSessionInfo) {
+ // The session is the system one. So we make all the service-provided routes
+ // available for transfer. The system transferable routes are already there.
+ mProxyRecords.values().stream()
+ .flatMap(ProviderProxyRecord::getRoutesStream)
+ .map(MediaRoute2Info::getOriginalId)
+ .forEach(builder::addTransferableRoute);
+ } else {
+ // The session is service-provided. So we add the system-provided routes as
+ // transferable.
+ mLastSystemProviderInfo.getRoutes().stream()
+ .map(MediaRoute2Info::getOriginalId)
+ .forEach(builder::addTransferableRoute);
+ }
mSessionInfos.clear();
mSessionInfos.add(builder.build());
for (var sessionRecords : mPackageNameToSessionRecord.values()) {
@@ -376,16 +438,17 @@ import java.util.stream.Stream;
}
/**
- * Equivalent to {@link #asSystemRouteId}, except it takes a unique route id instead of a
- * original id.
+ * Equivalent to {@link #asUniqueSystemId}, except it takes a unique id instead of an original
+ * id.
*/
private static String uniqueIdAsSystemRouteId(String providerId, String uniqueRouteId) {
- return asSystemRouteId(providerId, MediaRouter2Utils.getOriginalId(uniqueRouteId));
+ return asUniqueSystemId(providerId, MediaRouter2Utils.getOriginalId(uniqueRouteId));
}
/**
* Returns a unique {@link MediaRoute2Info#getOriginalId() original id} for this provider to
- * publish system media routes from {@link MediaRoute2ProviderService provider services}.
+ * publish system media routes and sessions from {@link MediaRoute2ProviderService provider
+ * services}.
*
* <p>This provider will publish system media routes as part of the system routing session.
* However, said routes may also support {@link MediaRoute2Info#FLAG_ROUTING_TYPE_REMOTE remote
@@ -393,12 +456,12 @@ import java.util.stream.Stream;
* we derive a {@link MediaRoute2Info#getOriginalId original id} that is unique among all
* original route ids used by this provider.
*/
- private static String asSystemRouteId(String providerId, String originalRouteId) {
- return ROUTE_ID_PREFIX_SYSTEM
- + ROUTE_ID_SYSTEM_SEPARATOR
+ private static String asUniqueSystemId(String providerId, String originalId) {
+ return UNIQUE_SYSTEM_ID_PREFIX
+ + UNIQUE_SYSTEM_ID_SEPARATOR
+ providerId
- + ROUTE_ID_SYSTEM_SEPARATOR
- + originalRouteId;
+ + UNIQUE_SYSTEM_ID_SEPARATOR
+ + originalId;
}
/**
@@ -485,7 +548,7 @@ import java.util.stream.Stream;
continue;
}
String id =
- asSystemRouteId(providerInfo.getUniqueId(), sourceRoute.getOriginalId());
+ asUniqueSystemId(providerInfo.getUniqueId(), sourceRoute.getOriginalId());
var newRouteBuilder = new MediaRoute2Info.Builder(id, sourceRoute);
if ((sourceRoute.getSupportedRoutingTypes()
& MediaRoute2Info.FLAG_ROUTING_TYPE_SYSTEM_AUDIO)
@@ -534,6 +597,9 @@ import java.util.stream.Stream;
RoutingSessionInfo translatedSession;
synchronized (mLock) {
mSessionRecord = systemMediaSessionRecord;
+ mSessionOriginalIdToSessionRecord.put(
+ systemMediaSessionRecord.mOriginalId,
+ systemMediaSessionRecord);
mPackageNameToSessionRecord.put(
mClientPackageName, systemMediaSessionRecord);
mPendingSessionCreations.remove(mRequestId);
@@ -576,24 +642,38 @@ import java.util.stream.Stream;
private final String mProviderId;
- @GuardedBy("SystemMediaRoute2Provider2.this.mLock")
- @NonNull
- private RoutingSessionInfo mSourceSessionInfo;
+ /**
+ * The {@link RoutingSessionInfo#getOriginalId() original id} with which this session is
+ * published.
+ *
+ * <p>Derived from the service routing session, using {@link #asUniqueSystemId}.
+ */
+ private final String mOriginalId;
+
+ // @GuardedBy("SystemMediaRoute2Provider2.this.mLock")
+ @NonNull private RoutingSessionInfo mSourceSessionInfo;
/**
- * The same as {@link #mSourceSessionInfo}, except ids are {@link #asSystemRouteId system
+ * The same as {@link #mSourceSessionInfo}, except ids are {@link #asUniqueSystemId system
* provider ids}.
*/
- @NonNull
- private RoutingSessionInfo mTranslatedSessionInfo;
+ // @GuardedBy("SystemMediaRoute2Provider2.this.mLock")
+ @NonNull private RoutingSessionInfo mTranslatedSessionInfo;
SystemMediaSessionRecord(
@NonNull String providerId, @NonNull RoutingSessionInfo sessionInfo) {
mProviderId = providerId;
mSourceSessionInfo = sessionInfo;
+ mOriginalId =
+ asUniqueSystemId(sessionInfo.getProviderId(), sessionInfo.getOriginalId());
mTranslatedSessionInfo = asSystemProviderSession(sessionInfo);
}
+ // @GuardedBy("SystemMediaRoute2Provider2.this.mLock")
+ public String getServiceSessionId() {
+ return mSourceSessionInfo.getOriginalId();
+ }
+
@Override
public void onSessionUpdate(@NonNull RoutingSessionInfo sessionInfo) {
RoutingSessionInfo translatedSessionInfo = asSystemProviderSession(sessionInfo);
@@ -612,31 +692,32 @@ import java.util.stream.Stream;
@Override
public void onSessionReleased() {
synchronized (mLock) {
- removeSelfFromSessionMap();
+ removeSelfFromSessionMaps();
}
notifyGlobalSessionInfoUpdated();
}
- @GuardedBy("SystemMediaRoute2Provider2.this.mLock")
+ // @GuardedBy("SystemMediaRoute2Provider2.this.mLock")
@Nullable
public ProviderProxyRecord getProxyRecord() {
ProviderProxyRecord provider = mProxyRecords.get(mProviderId);
if (provider == null) {
// Unexpected condition where the proxy is no longer available while there's an
// ongoing session. Could happen due to a crash in the provider process.
- removeSelfFromSessionMap();
+ removeSelfFromSessionMaps();
}
return provider;
}
- @GuardedBy("SystemMediaRoute2Provider2.this.mLock")
- private void removeSelfFromSessionMap() {
+ // @GuardedBy("SystemMediaRoute2Provider2.this.mLock")
+ private void removeSelfFromSessionMaps() {
+ mSessionOriginalIdToSessionRecord.remove(mOriginalId);
mPackageNameToSessionRecord.remove(mSourceSessionInfo.getClientPackageName());
}
private RoutingSessionInfo asSystemProviderSession(RoutingSessionInfo session) {
var builder =
- new RoutingSessionInfo.Builder(session)
+ new RoutingSessionInfo.Builder(session, mOriginalId)
.setProviderId(mUniqueId)
.setSystemSession(true)
.clearSelectedRoutes()
diff --git a/services/core/java/com/android/server/media/quality/MediaQualityService.java b/services/core/java/com/android/server/media/quality/MediaQualityService.java
index d23a8638803b..0b8b115e65d0 100644
--- a/services/core/java/com/android/server/media/quality/MediaQualityService.java
+++ b/services/core/java/com/android/server/media/quality/MediaQualityService.java
@@ -29,8 +29,6 @@ import android.content.pm.PackageManager;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.hardware.tv.mediaquality.AmbientBacklightColorFormat;
-import android.hardware.tv.mediaquality.DolbyAudioProcessing;
-import android.hardware.tv.mediaquality.DtsVirtualX;
import android.hardware.tv.mediaquality.IMediaQuality;
import android.hardware.tv.mediaquality.IPictureProfileAdjustmentListener;
import android.hardware.tv.mediaquality.IPictureProfileChangedListener;
@@ -50,8 +48,6 @@ import android.media.quality.IMediaQualityManager;
import android.media.quality.IPictureProfileCallback;
import android.media.quality.ISoundProfileCallback;
import android.media.quality.MediaQualityContract.BaseParameters;
-import android.media.quality.MediaQualityContract.PictureQuality;
-import android.media.quality.MediaQualityContract.SoundQuality;
import android.media.quality.MediaQualityManager;
import android.media.quality.ParameterCapability;
import android.media.quality.PictureProfile;
@@ -77,21 +73,16 @@ import com.android.internal.annotations.GuardedBy;
import com.android.server.SystemService;
import com.android.server.utils.Slogf;
-import org.json.JSONException;
-import org.json.JSONObject;
-
import java.io.File;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.NoSuchElementException;
-import java.util.UUID;
import java.util.stream.Collectors;
/**
@@ -106,14 +97,13 @@ public class MediaQualityService extends SystemService {
private static final String PICTURE_PROFILE_PREFERENCE = "picture_profile_preference";
private static final String SOUND_PROFILE_PREFERENCE = "sound_profile_preference";
private static final String COMMA_DELIMITER = ",";
- private static final int MAX_UUID_GENERATION_ATTEMPTS = 10;
private final Context mContext;
private final MediaQualityDbHelper mMediaQualityDbHelper;
private final BiMap<Long, String> mPictureProfileTempIdMap;
private final BiMap<Long, String> mSoundProfileTempIdMap;
private IMediaQuality mMediaQuality;
- private IPictureProfileAdjustmentListener mPpAdjustmentListener;
- private ISoundProfileAdjustmentListener mSpAdjustmentListener;
+ private PictureProfileAdjustmentListenerImpl mPictureProfileAdjListener;
+ private SoundProfileAdjustmentListenerImpl mSoundProfileAdjListener;
private IPictureProfileChangedListener mPpChangedListener;
private ISoundProfileChangedListener mSpChangedListener;
private final HalAmbientBacklightCallback mHalAmbientBacklightCallback;
@@ -122,6 +112,9 @@ public class MediaQualityService extends SystemService {
private final SparseArray<UserState> mUserStates = new SparseArray<>();
private SharedPreferences mPictureProfileSharedPreference;
private SharedPreferences mSoundProfileSharedPreference;
+ private HalNotifier mHalNotifier;
+ private MqManagerNotifier mMqManagerNotifier;
+ private MqDatabaseUtils mMqDatabaseUtils;
// A global lock for picture profile objects.
private final Object mPictureProfileLock = new Object();
@@ -134,12 +127,17 @@ public class MediaQualityService extends SystemService {
super(context);
mContext = context;
mHalAmbientBacklightCallback = new HalAmbientBacklightCallback();
+ mPictureProfileAdjListener = new PictureProfileAdjustmentListenerImpl(mContext);
+ mSoundProfileAdjListener = new SoundProfileAdjustmentListenerImpl(mContext);
mPackageManager = mContext.getPackageManager();
mPictureProfileTempIdMap = new BiMap<>();
mSoundProfileTempIdMap = new BiMap<>();
mMediaQualityDbHelper = new MediaQualityDbHelper(mContext);
+ mMqDatabaseUtils = new MqDatabaseUtils(mContext);
mMediaQualityDbHelper.setWriteAheadLoggingEnabled(true);
mMediaQualityDbHelper.setIdleConnectionTimeout(30);
+ mHalNotifier = new HalNotifier();
+ mMqManagerNotifier = new MqManagerNotifier();
// The package info in the context isn't initialized in the way it is for normal apps,
// so the standard, name-based context.getSharedPreferences doesn't work. Instead, we
@@ -164,90 +162,12 @@ public class MediaQualityService extends SystemService {
}
Slogf.d(TAG, "Binder is not null");
- mPpAdjustmentListener = new IPictureProfileAdjustmentListener.Stub() {
- @Override
- public void onPictureProfileAdjusted(
- android.hardware.tv.mediaquality.PictureProfile pictureProfile)
- throws RemoteException {
- // TODO
- }
-
- @Override
- public void onParamCapabilityChanged(long pictureProfileId, ParamCapability[] caps)
- throws RemoteException {
- // TODO
- }
-
- @Override
- public void onVendorParamCapabilityChanged(long pictureProfileId,
- VendorParamCapability[] caps) throws RemoteException {
- // TODO
- }
-
- @Override
- public void requestPictureParameters(long pictureProfileId) throws RemoteException {
- // TODO
- }
-
- @Override
- public void onStreamStatusChanged(long pictureProfileId, byte status)
- throws RemoteException {
- // TODO
- }
-
- @Override
- public int getInterfaceVersion() throws RemoteException {
- return 0;
- }
-
- @Override
- public String getInterfaceHash() throws RemoteException {
- return null;
- }
- };
- mSpAdjustmentListener = new ISoundProfileAdjustmentListener.Stub() {
-
- @Override
- public void onSoundProfileAdjusted(
- android.hardware.tv.mediaquality.SoundProfile soundProfile)
- throws RemoteException {
- // TODO
- }
-
- @Override
- public void onParamCapabilityChanged(long soundProfileId, ParamCapability[] caps)
- throws RemoteException {
- // TODO
- }
-
- @Override
- public void onVendorParamCapabilityChanged(long soundProfileId,
- VendorParamCapability[] caps) throws RemoteException {
- // TODO
- }
-
- @Override
- public void requestSoundParameters(long soundProfileId) throws RemoteException {
- // TODO
- }
-
- @Override
- public int getInterfaceVersion() throws RemoteException {
- return 0;
- }
-
- @Override
- public String getInterfaceHash() throws RemoteException {
- return null;
- }
- };
-
mMediaQuality = IMediaQuality.Stub.asInterface(binder);
if (mMediaQuality != null) {
try {
mMediaQuality.setAmbientBacklightCallback(mHalAmbientBacklightCallback);
- mMediaQuality.setPictureProfileAdjustmentListener(mPpAdjustmentListener);
- mMediaQuality.setSoundProfileAdjustmentListener(mSpAdjustmentListener);
+ mMediaQuality.setPictureProfileAdjustmentListener(mPictureProfileAdjListener);
+ mMediaQuality.setSoundProfileAdjustmentListener(mSoundProfileAdjListener);
} catch (RemoteException e) {
Slog.e(TAG, "Failed to set ambient backlight detector callback", e);
}
@@ -268,14 +188,15 @@ public class MediaQualityService extends SystemService {
if ((pp.getPackageName() != null && !pp.getPackageName().isEmpty()
&& !incomingPackageEqualsCallingUidPackage(pp.getPackageName()))
&& !hasGlobalPictureQualityServicePermission()) {
- notifyOnPictureProfileError(null, PictureProfile.ERROR_NO_PERMISSION,
+ mMqManagerNotifier.notifyOnPictureProfileError(null,
+ PictureProfile.ERROR_NO_PERMISSION,
Binder.getCallingUid(), Binder.getCallingPid());
}
synchronized (mPictureProfileLock) {
SQLiteDatabase db = mMediaQualityDbHelper.getWritableDatabase();
- ContentValues values = getContentValues(null,
+ ContentValues values = MediaQualityUtils.getContentValues(null,
pp.getProfileType(),
pp.getName(),
pp.getPackageName() == null || pp.getPackageName().isEmpty()
@@ -286,67 +207,39 @@ public class MediaQualityService extends SystemService {
// id is auto-generated by SQLite upon successful insertion of row
Long id = db.insert(mMediaQualityDbHelper.PICTURE_QUALITY_TABLE_NAME,
null, values);
- populateTempIdMap(mPictureProfileTempIdMap, id);
+ MediaQualityUtils.populateTempIdMap(mPictureProfileTempIdMap, id);
String value = mPictureProfileTempIdMap.getValue(id);
pp.setProfileId(value);
- notifyOnPictureProfileAdded(value, pp, Binder.getCallingUid(),
+ mMqManagerNotifier.notifyOnPictureProfileAdded(value, pp, Binder.getCallingUid(),
Binder.getCallingPid());
return pp;
}
}
- private void notifyHalOnPictureProfileChange(Long dbId, PersistableBundle params) {
- // TODO: only notify HAL when the profile is active / being used
- try {
- mPpChangedListener.onPictureProfileChanged(convertToHalPictureProfile(dbId,
- params));
- } catch (RemoteException e) {
- Slog.e(TAG, "Failed to notify HAL on picture profile change.", e);
- }
- }
-
- private android.hardware.tv.mediaquality.PictureProfile convertToHalPictureProfile(Long id,
- PersistableBundle params) {
- PictureParameters pictureParameters = new PictureParameters();
- pictureParameters.pictureParameters = convertPersistableBundleToPictureParameterList(
- params);
-
- android.hardware.tv.mediaquality.PictureProfile toReturn =
- new android.hardware.tv.mediaquality.PictureProfile();
- toReturn.pictureProfileId = id;
- toReturn.parameters = pictureParameters;
-
- return toReturn;
- }
-
@GuardedBy("mPictureProfileLock")
@Override
public void updatePictureProfile(String id, PictureProfile pp, UserHandle user) {
Long dbId = mPictureProfileTempIdMap.getKey(id);
if (!hasPermissionToUpdatePictureProfile(dbId, pp)) {
- notifyOnPictureProfileError(id, PictureProfile.ERROR_NO_PERMISSION,
+ mMqManagerNotifier.notifyOnPictureProfileError(id,
+ PictureProfile.ERROR_NO_PERMISSION,
Binder.getCallingUid(), Binder.getCallingPid());
}
synchronized (mPictureProfileLock) {
- ContentValues values = getContentValues(dbId,
+ ContentValues values = MediaQualityUtils.getContentValues(dbId,
pp.getProfileType(),
pp.getName(),
pp.getPackageName(),
pp.getInputId(),
pp.getParameters());
- SQLiteDatabase db = mMediaQualityDbHelper.getWritableDatabase();
- db.replace(mMediaQualityDbHelper.PICTURE_QUALITY_TABLE_NAME,
- null, values);
- notifyOnPictureProfileUpdated(mPictureProfileTempIdMap.getValue(dbId),
- getPictureProfile(dbId), Binder.getCallingUid(), Binder.getCallingPid());
- notifyHalOnPictureProfileChange(dbId, pp.getParameters());
+ updateDatabaseOnPictureProfileAndNotifyManagerAndHal(values, pp.getParameters());
}
}
private boolean hasPermissionToUpdatePictureProfile(Long dbId, PictureProfile toUpdate) {
- PictureProfile fromDb = getPictureProfile(dbId);
+ PictureProfile fromDb = mMqDatabaseUtils.getPictureProfile(dbId);
return fromDb.getProfileType() == toUpdate.getProfileType()
&& fromDb.getPackageName().equals(toUpdate.getPackageName())
&& fromDb.getName().equals(toUpdate.getName())
@@ -359,9 +252,10 @@ public class MediaQualityService extends SystemService {
synchronized (mPictureProfileLock) {
Long dbId = mPictureProfileTempIdMap.getKey(id);
- PictureProfile toDelete = getPictureProfile(dbId);
+ PictureProfile toDelete = mMqDatabaseUtils.getPictureProfile(dbId);
if (!hasPermissionToRemovePictureProfile(toDelete)) {
- notifyOnPictureProfileError(id, PictureProfile.ERROR_NO_PERMISSION,
+ mMqManagerNotifier.notifyOnPictureProfileError(id,
+ PictureProfile.ERROR_NO_PERMISSION,
Binder.getCallingUid(), Binder.getCallingPid());
}
@@ -372,13 +266,15 @@ public class MediaQualityService extends SystemService {
int result = db.delete(mMediaQualityDbHelper.PICTURE_QUALITY_TABLE_NAME,
selection, selectionArgs);
if (result == 0) {
- notifyOnPictureProfileError(id, PictureProfile.ERROR_INVALID_ARGUMENT,
+ mMqManagerNotifier.notifyOnPictureProfileError(id,
+ PictureProfile.ERROR_INVALID_ARGUMENT,
Binder.getCallingUid(), Binder.getCallingPid());
}
- notifyOnPictureProfileRemoved(mPictureProfileTempIdMap.getValue(dbId), toDelete,
+ mMqManagerNotifier.notifyOnPictureProfileRemoved(
+ mPictureProfileTempIdMap.getValue(dbId), toDelete,
Binder.getCallingUid(), Binder.getCallingPid());
mPictureProfileTempIdMap.remove(dbId);
- notifyHalOnPictureProfileChange(dbId, null);
+ mHalNotifier.notifyHalOnPictureProfileChange(dbId, null);
}
}
}
@@ -403,9 +299,9 @@ public class MediaQualityService extends SystemService {
synchronized (mPictureProfileLock) {
try (
- Cursor cursor = getCursorAfterQuerying(
+ Cursor cursor = mMqDatabaseUtils.getCursorAfterQuerying(
mMediaQualityDbHelper.PICTURE_QUALITY_TABLE_NAME,
- getMediaProfileColumns(includeParams), selection,
+ MediaQualityUtils.getMediaProfileColumns(includeParams), selection,
selectionArguments)
) {
int count = cursor.getCount();
@@ -420,32 +316,9 @@ public class MediaQualityService extends SystemService {
return null;
}
cursor.moveToFirst();
- return convertCursorToPictureProfileWithTempId(cursor);
- }
- }
- }
-
- private PictureProfile getPictureProfile(Long dbId) {
- String selection = BaseParameters.PARAMETER_ID + " = ?";
- String[] selectionArguments = {Long.toString(dbId)};
-
- try (
- Cursor cursor = getCursorAfterQuerying(
- mMediaQualityDbHelper.PICTURE_QUALITY_TABLE_NAME,
- getMediaProfileColumns(false), selection, selectionArguments)
- ) {
- int count = cursor.getCount();
- if (count == 0) {
- return null;
- }
- if (count > 1) {
- Log.wtf(TAG, TextUtils.formatSimple(String.valueOf(Locale.US), "%d entries "
- + "found for id=%d in %s. Should only ever be 0 or 1.",
- count, dbId, mMediaQualityDbHelper.PICTURE_QUALITY_TABLE_NAME));
- return null;
+ return MediaQualityUtils.convertCursorToPictureProfileWithTempId(cursor,
+ mPictureProfileTempIdMap);
}
- cursor.moveToFirst();
- return convertCursorToPictureProfileWithTempId(cursor);
}
}
@@ -454,7 +327,8 @@ public class MediaQualityService extends SystemService {
public List<PictureProfile> getPictureProfilesByPackage(
String packageName, Bundle options, UserHandle user) {
if (!hasGlobalPictureQualityServicePermission()) {
- notifyOnPictureProfileError(null, PictureProfile.ERROR_NO_PERMISSION,
+ mMqManagerNotifier.notifyOnPictureProfileError(null,
+ PictureProfile.ERROR_NO_PERMISSION,
Binder.getCallingUid(), Binder.getCallingPid());
}
@@ -463,7 +337,8 @@ public class MediaQualityService extends SystemService {
options.getBoolean(MediaQualityManager.OPTION_INCLUDE_PARAMETERS, false);
String selection = BaseParameters.PARAMETER_PACKAGE + " = ?";
String[] selectionArguments = {packageName};
- return getPictureProfilesBasedOnConditions(getMediaProfileColumns(includeParams),
+ return mMqDatabaseUtils.getPictureProfilesBasedOnConditions(MediaQualityUtils
+ .getMediaProfileColumns(includeParams),
selection, selectionArguments);
}
}
@@ -482,18 +357,19 @@ public class MediaQualityService extends SystemService {
@Override
public boolean setDefaultPictureProfile(String profileId, UserHandle user) {
if (!hasGlobalPictureQualityServicePermission()) {
- notifyOnPictureProfileError(profileId, PictureProfile.ERROR_NO_PERMISSION,
+ mMqManagerNotifier.notifyOnPictureProfileError(profileId,
+ PictureProfile.ERROR_NO_PERMISSION,
Binder.getCallingUid(), Binder.getCallingPid());
}
- PictureProfile pictureProfile = getPictureProfile(
+ PictureProfile pictureProfile = mMqDatabaseUtils.getPictureProfile(
mPictureProfileTempIdMap.getKey(profileId));
PersistableBundle params = pictureProfile.getParameters();
try {
if (mMediaQuality != null) {
- PictureParameter[] pictureParameters =
- convertPersistableBundleToPictureParameterList(params);
+ PictureParameter[] pictureParameters = MediaQualityUtils
+ .convertPersistableBundleToPictureParameterList(params);
PictureParameters pp = new PictureParameters();
pp.pictureParameters = pictureParameters;
@@ -507,348 +383,18 @@ public class MediaQualityService extends SystemService {
return false;
}
- private PictureParameter[] convertPersistableBundleToPictureParameterList(
- PersistableBundle params) {
- if (params == null) {
- return null;
- }
-
- List<PictureParameter> pictureParams = new ArrayList<>();
- if (params.containsKey(PictureQuality.PARAMETER_BRIGHTNESS)) {
- pictureParams.add(PictureParameter.brightness(params.getLong(
- PictureQuality.PARAMETER_BRIGHTNESS)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_CONTRAST)) {
- pictureParams.add(PictureParameter.contrast(params.getInt(
- PictureQuality.PARAMETER_CONTRAST)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_SHARPNESS)) {
- pictureParams.add(PictureParameter.sharpness(params.getInt(
- PictureQuality.PARAMETER_SHARPNESS)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_SATURATION)) {
- pictureParams.add(PictureParameter.saturation(params.getInt(
- PictureQuality.PARAMETER_SATURATION)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_HUE)) {
- pictureParams.add(PictureParameter.hue(params.getInt(
- PictureQuality.PARAMETER_HUE)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_BRIGHTNESS)) {
- pictureParams.add(PictureParameter.colorTunerBrightness(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_BRIGHTNESS)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION)) {
- pictureParams.add(PictureParameter.colorTunerSaturation(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_SATURATION)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_HUE)) {
- pictureParams.add(PictureParameter.colorTunerHue(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_HUE)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_RED_OFFSET)) {
- pictureParams.add(PictureParameter.colorTunerRedOffset(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_RED_OFFSET)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_GREEN_OFFSET)) {
- pictureParams.add(PictureParameter.colorTunerGreenOffset(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_GREEN_OFFSET)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_BLUE_OFFSET)) {
- pictureParams.add(PictureParameter.colorTunerBlueOffset(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_BLUE_OFFSET)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_RED_GAIN)) {
- pictureParams.add(PictureParameter.colorTunerRedGain(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_RED_GAIN)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_GREEN_GAIN)) {
- pictureParams.add(PictureParameter.colorTunerGreenGain(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_GREEN_GAIN)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_BLUE_GAIN)) {
- pictureParams.add(PictureParameter.colorTunerBlueGain(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_BLUE_GAIN)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_NOISE_REDUCTION)) {
- pictureParams.add(PictureParameter.noiseReduction(
- (byte) params.getInt(PictureQuality.PARAMETER_NOISE_REDUCTION)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_MPEG_NOISE_REDUCTION)) {
- pictureParams.add(PictureParameter.mpegNoiseReduction(
- (byte) params.getInt(PictureQuality.PARAMETER_MPEG_NOISE_REDUCTION)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_FLESH_TONE)) {
- pictureParams.add(PictureParameter.fleshTone(
- (byte) params.getInt(PictureQuality.PARAMETER_FLESH_TONE)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_DECONTOUR)) {
- pictureParams.add(PictureParameter.deContour(
- (byte) params.getInt(PictureQuality.PARAMETER_DECONTOUR)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_DYNAMIC_LUMA_CONTROL)) {
- pictureParams.add(PictureParameter.dynamicLumaControl(
- (byte) params.getInt(PictureQuality.PARAMETER_DYNAMIC_LUMA_CONTROL)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_FILM_MODE)) {
- pictureParams.add(PictureParameter.filmMode(params.getBoolean(
- PictureQuality.PARAMETER_FILM_MODE)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_BLUE_STRETCH)) {
- pictureParams.add(PictureParameter.blueStretch(params.getBoolean(
- PictureQuality.PARAMETER_BLUE_STRETCH)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNE)) {
- pictureParams.add(PictureParameter.colorTune(params.getBoolean(
- PictureQuality.PARAMETER_COLOR_TUNE)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TEMPERATURE)) {
- pictureParams.add(PictureParameter.colorTemperature(
- (byte) params.getInt(
- PictureQuality.PARAMETER_COLOR_TEMPERATURE)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_GLOBAL_DIMMING)) {
- pictureParams.add(PictureParameter.globeDimming(params.getBoolean(
- PictureQuality.PARAMETER_GLOBAL_DIMMING)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_AUTO_PICTURE_QUALITY_ENABLED)) {
- pictureParams.add(PictureParameter.autoPictureQualityEnabled(params.getBoolean(
- PictureQuality.PARAMETER_AUTO_PICTURE_QUALITY_ENABLED)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_AUTO_SUPER_RESOLUTION_ENABLED)) {
- pictureParams.add(PictureParameter.autoSuperResolutionEnabled(params.getBoolean(
- PictureQuality.PARAMETER_AUTO_SUPER_RESOLUTION_ENABLED)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_RED_GAIN)) {
- pictureParams.add(PictureParameter.colorTemperatureRedGain(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_RED_GAIN)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_GREEN_GAIN)) {
- pictureParams.add(PictureParameter.colorTemperatureGreenGain(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_GREEN_GAIN)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_BLUE_GAIN)) {
- pictureParams.add(PictureParameter.colorTemperatureBlueGain(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_BLUE_GAIN)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_LEVEL_RANGE)) {
- pictureParams.add(PictureParameter.levelRange(
- (byte) params.getInt(PictureQuality.PARAMETER_LEVEL_RANGE)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_GAMUT_MAPPING)) {
- pictureParams.add(PictureParameter.gamutMapping(params.getBoolean(
- PictureQuality.PARAMETER_GAMUT_MAPPING)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_PC_MODE)) {
- pictureParams.add(PictureParameter.pcMode(params.getBoolean(
- PictureQuality.PARAMETER_PC_MODE)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_LOW_LATENCY)) {
- pictureParams.add(PictureParameter.lowLatency(params.getBoolean(
- PictureQuality.PARAMETER_LOW_LATENCY)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_VRR)) {
- pictureParams.add(PictureParameter.vrr(params.getBoolean(
- PictureQuality.PARAMETER_VRR)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_CVRR)) {
- pictureParams.add(PictureParameter.cvrr(params.getBoolean(
- PictureQuality.PARAMETER_CVRR)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_HDMI_RGB_RANGE)) {
- pictureParams.add(PictureParameter.hdmiRgbRange(
- (byte) params.getInt(PictureQuality.PARAMETER_HDMI_RGB_RANGE)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_SPACE)) {
- pictureParams.add(PictureParameter.colorSpace(
- (byte) params.getInt(PictureQuality.PARAMETER_COLOR_SPACE)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_PANEL_INIT_MAX_LUMINCE_NITS)) {
- pictureParams.add(PictureParameter.panelInitMaxLuminceNits(
- params.getInt(PictureQuality.PARAMETER_PANEL_INIT_MAX_LUMINCE_NITS)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_PANEL_INIT_MAX_LUMINCE_VALID)) {
- pictureParams.add(PictureParameter.panelInitMaxLuminceValid(
- params.getBoolean(PictureQuality.PARAMETER_PANEL_INIT_MAX_LUMINCE_VALID)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_GAMMA)) {
- pictureParams.add(PictureParameter.gamma(
- (byte) params.getInt(PictureQuality.PARAMETER_GAMMA)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TEMPERATURE_RED_OFFSET)) {
- pictureParams.add(PictureParameter.colorTemperatureRedOffset(params.getInt(
- PictureQuality.PARAMETER_COLOR_TEMPERATURE_RED_OFFSET)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TEMPERATURE_GREEN_OFFSET)) {
- pictureParams.add(PictureParameter.colorTemperatureGreenOffset(params.getInt(
- PictureQuality.PARAMETER_COLOR_TEMPERATURE_GREEN_OFFSET)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TEMPERATURE_BLUE_OFFSET)) {
- pictureParams.add(PictureParameter.colorTemperatureBlueOffset(params.getInt(
- PictureQuality.PARAMETER_COLOR_TEMPERATURE_BLUE_OFFSET)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_ELEVEN_POINT_RED)) {
- pictureParams.add(PictureParameter.elevenPointRed(params.getIntArray(
- PictureQuality.PARAMETER_ELEVEN_POINT_RED)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_ELEVEN_POINT_GREEN)) {
- pictureParams.add(PictureParameter.elevenPointGreen(params.getIntArray(
- PictureQuality.PARAMETER_ELEVEN_POINT_GREEN)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_ELEVEN_POINT_BLUE)) {
- pictureParams.add(PictureParameter.elevenPointBlue(params.getIntArray(
- PictureQuality.PARAMETER_ELEVEN_POINT_BLUE)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_LOW_BLUE_LIGHT)) {
- pictureParams.add(PictureParameter.lowBlueLight(
- (byte) params.getInt(PictureQuality.PARAMETER_LOW_BLUE_LIGHT)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_LD_MODE)) {
- pictureParams.add(PictureParameter.LdMode(
- (byte) params.getInt(PictureQuality.PARAMETER_LD_MODE)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_OSD_RED_GAIN)) {
- pictureParams.add(PictureParameter.osdRedGain(params.getInt(
- PictureQuality.PARAMETER_OSD_RED_GAIN)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_OSD_GREEN_GAIN)) {
- pictureParams.add(PictureParameter.osdGreenGain(params.getInt(
- PictureQuality.PARAMETER_OSD_GREEN_GAIN)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_OSD_BLUE_GAIN)) {
- pictureParams.add(PictureParameter.osdBlueGain(params.getInt(
- PictureQuality.PARAMETER_OSD_BLUE_GAIN)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_OSD_RED_OFFSET)) {
- pictureParams.add(PictureParameter.osdRedOffset(params.getInt(
- PictureQuality.PARAMETER_OSD_RED_OFFSET)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_OSD_GREEN_OFFSET)) {
- pictureParams.add(PictureParameter.osdGreenOffset(params.getInt(
- PictureQuality.PARAMETER_OSD_GREEN_OFFSET)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_OSD_BLUE_OFFSET)) {
- pictureParams.add(PictureParameter.osdBlueOffset(params.getInt(
- PictureQuality.PARAMETER_OSD_BLUE_OFFSET)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_OSD_HUE)) {
- pictureParams.add(PictureParameter.osdHue(params.getInt(
- PictureQuality.PARAMETER_OSD_HUE)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_OSD_SATURATION)) {
- pictureParams.add(PictureParameter.osdSaturation(params.getInt(
- PictureQuality.PARAMETER_OSD_SATURATION)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_OSD_CONTRAST)) {
- pictureParams.add(PictureParameter.osdContrast(params.getInt(
- PictureQuality.PARAMETER_OSD_CONTRAST)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_SWITCH)) {
- pictureParams.add(PictureParameter.colorTunerSwitch(params.getBoolean(
- PictureQuality.PARAMETER_COLOR_TUNER_SWITCH)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_HUE_RED)) {
- pictureParams.add(PictureParameter.colorTunerHueRed(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_HUE_RED)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_HUE_GREEN)) {
- pictureParams.add(PictureParameter.colorTunerHueGreen(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_HUE_GREEN)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_HUE_BLUE)) {
- pictureParams.add(PictureParameter.colorTunerHueBlue(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_HUE_BLUE)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_HUE_CYAN)) {
- pictureParams.add(PictureParameter.colorTunerHueCyan(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_HUE_CYAN)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_HUE_MAGENTA)) {
- pictureParams.add(PictureParameter.colorTunerHueMagenta(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_HUE_MAGENTA)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_HUE_YELLOW)) {
- pictureParams.add(PictureParameter.colorTunerHueYellow(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_HUE_YELLOW)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_HUE_FLESH)) {
- pictureParams.add(PictureParameter.colorTunerHueFlesh(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_HUE_FLESH)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_RED)) {
- pictureParams.add(PictureParameter.colorTunerSaturationRed(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_RED)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_GREEN)) {
- pictureParams.add(PictureParameter.colorTunerSaturationGreen(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_GREEN)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_BLUE)) {
- pictureParams.add(PictureParameter.colorTunerSaturationBlue(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_BLUE)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_CYAN)) {
- pictureParams.add(PictureParameter.colorTunerSaturationCyan(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_CYAN)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_MAGENTA)) {
- pictureParams.add(PictureParameter.colorTunerSaturationMagenta(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_MAGENTA)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_YELLOW)) {
- pictureParams.add(PictureParameter.colorTunerSaturationYellow(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_YELLOW)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_FLESH)) {
- pictureParams.add(PictureParameter.colorTunerSaturationFlesh(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_FLESH)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_RED)) {
- pictureParams.add(PictureParameter.colorTunerLuminanceRed(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_RED)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_GREEN)) {
- pictureParams.add(PictureParameter.colorTunerLuminanceGreen(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_GREEN)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_BLUE)) {
- pictureParams.add(PictureParameter.colorTunerLuminanceBlue(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_BLUE)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_CYAN)) {
- pictureParams.add(PictureParameter.colorTunerLuminanceCyan(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_CYAN)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_MAGENTA)) {
- pictureParams.add(PictureParameter.colorTunerLuminanceMagenta(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_MAGENTA)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_YELLOW)) {
- pictureParams.add(PictureParameter.colorTunerLuminanceYellow(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_YELLOW)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_FLESH)) {
- pictureParams.add(PictureParameter.colorTunerLuminanceFlesh(params.getInt(
- PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_FLESH)));
- }
- if (params.containsKey(PictureQuality.PARAMETER_PICTURE_QUALITY_EVENT_TYPE)) {
- pictureParams.add(PictureParameter.pictureQualityEventType(
- (byte) params.getInt(PictureQuality.PARAMETER_PICTURE_QUALITY_EVENT_TYPE)));
- }
- return (PictureParameter[]) pictureParams.toArray();
- }
-
@GuardedBy("mPictureProfileLock")
@Override
public List<String> getPictureProfilePackageNames(UserHandle user) {
if (!hasGlobalPictureQualityServicePermission()) {
- notifyOnPictureProfileError(null, PictureProfile.ERROR_NO_PERMISSION,
+ mMqManagerNotifier.notifyOnPictureProfileError(null,
+ PictureProfile.ERROR_NO_PERMISSION,
Binder.getCallingUid(), Binder.getCallingPid());
}
String [] column = {BaseParameters.PARAMETER_PACKAGE};
synchronized (mPictureProfileLock) {
- List<PictureProfile> pictureProfiles = getPictureProfilesBasedOnConditions(column,
- null, null);
+ List<PictureProfile> pictureProfiles =
+ mMqDatabaseUtils.getPictureProfilesBasedOnConditions(column, null, null);
return pictureProfiles.stream()
.map(PictureProfile::getPackageName)
.distinct()
@@ -896,14 +442,14 @@ public class MediaQualityService extends SystemService {
if ((sp.getPackageName() != null && !sp.getPackageName().isEmpty()
&& !incomingPackageEqualsCallingUidPackage(sp.getPackageName()))
&& !hasGlobalPictureQualityServicePermission()) {
- notifyOnSoundProfileError(null, SoundProfile.ERROR_NO_PERMISSION,
+ mMqManagerNotifier.notifyOnSoundProfileError(null, SoundProfile.ERROR_NO_PERMISSION,
Binder.getCallingUid(), Binder.getCallingPid());
}
synchronized (mSoundProfileLock) {
SQLiteDatabase db = mMediaQualityDbHelper.getWritableDatabase();
- ContentValues values = getContentValues(null,
+ ContentValues values = MediaQualityUtils.getContentValues(null,
sp.getProfileType(),
sp.getName(),
sp.getPackageName() == null || sp.getPackageName().isEmpty()
@@ -914,64 +460,38 @@ public class MediaQualityService extends SystemService {
// id is auto-generated by SQLite upon successful insertion of row
Long id = db.insert(mMediaQualityDbHelper.SOUND_QUALITY_TABLE_NAME,
null, values);
- populateTempIdMap(mSoundProfileTempIdMap, id);
+ MediaQualityUtils.populateTempIdMap(mSoundProfileTempIdMap, id);
String value = mSoundProfileTempIdMap.getValue(id);
sp.setProfileId(value);
- notifyOnSoundProfileAdded(value, sp, Binder.getCallingUid(),
+ mMqManagerNotifier.notifyOnSoundProfileAdded(value, sp, Binder.getCallingUid(),
Binder.getCallingPid());
return sp;
}
}
- private void notifyHalOnSoundProfileChange(Long dbId, PersistableBundle params) {
- // TODO: only notify HAL when the profile is active / being used
- try {
- mSpChangedListener.onSoundProfileChanged(convertToHalSoundProfile(dbId, params));
- } catch (RemoteException e) {
- Slog.e(TAG, "Failed to notify HAL on sound profile change.", e);
- }
- }
-
- private android.hardware.tv.mediaquality.SoundProfile convertToHalSoundProfile(Long id,
- PersistableBundle params) {
- SoundParameters soundParameters = new SoundParameters();
- soundParameters.soundParameters = convertPersistableBundleToSoundParameterList(params);
-
- android.hardware.tv.mediaquality.SoundProfile toReturn =
- new android.hardware.tv.mediaquality.SoundProfile();
- toReturn.soundProfileId = id;
- toReturn.parameters = soundParameters;
-
- return toReturn;
- }
-
@GuardedBy("mSoundProfileLock")
@Override
public void updateSoundProfile(String id, SoundProfile sp, UserHandle user) {
Long dbId = mSoundProfileTempIdMap.getKey(id);
if (!hasPermissionToUpdateSoundProfile(dbId, sp)) {
- notifyOnSoundProfileError(id, SoundProfile.ERROR_NO_PERMISSION,
+ mMqManagerNotifier.notifyOnSoundProfileError(id, SoundProfile.ERROR_NO_PERMISSION,
Binder.getCallingUid(), Binder.getCallingPid());
}
synchronized (mSoundProfileLock) {
- ContentValues values = getContentValues(dbId,
+ ContentValues values = MediaQualityUtils.getContentValues(dbId,
sp.getProfileType(),
sp.getName(),
sp.getPackageName(),
sp.getInputId(),
sp.getParameters());
- SQLiteDatabase db = mMediaQualityDbHelper.getWritableDatabase();
- db.replace(mMediaQualityDbHelper.SOUND_QUALITY_TABLE_NAME, null, values);
- notifyOnSoundProfileUpdated(mSoundProfileTempIdMap.getValue(dbId),
- getSoundProfile(dbId), Binder.getCallingUid(), Binder.getCallingPid());
- notifyHalOnSoundProfileChange(dbId, sp.getParameters());
+ updateDatabaseOnSoundProfileAndNotifyManagerAndHal(values, sp.getParameters());
}
}
private boolean hasPermissionToUpdateSoundProfile(Long dbId, SoundProfile sp) {
- SoundProfile fromDb = getSoundProfile(dbId);
+ SoundProfile fromDb = mMqDatabaseUtils.getSoundProfile(dbId);
return fromDb.getProfileType() == sp.getProfileType()
&& fromDb.getPackageName().equals(sp.getPackageName())
&& fromDb.getName().equals(sp.getName())
@@ -983,9 +503,10 @@ public class MediaQualityService extends SystemService {
public void removeSoundProfile(String id, UserHandle user) {
synchronized (mSoundProfileLock) {
Long dbId = mSoundProfileTempIdMap.getKey(id);
- SoundProfile toDelete = getSoundProfile(dbId);
+ SoundProfile toDelete = mMqDatabaseUtils.getSoundProfile(dbId);
if (!hasPermissionToRemoveSoundProfile(toDelete)) {
- notifyOnSoundProfileError(id, SoundProfile.ERROR_NO_PERMISSION,
+ mMqManagerNotifier.notifyOnSoundProfileError(id,
+ SoundProfile.ERROR_NO_PERMISSION,
Binder.getCallingUid(), Binder.getCallingPid());
}
if (dbId != null) {
@@ -996,13 +517,15 @@ public class MediaQualityService extends SystemService {
selection,
selectionArgs);
if (result == 0) {
- notifyOnSoundProfileError(id, SoundProfile.ERROR_INVALID_ARGUMENT,
+ mMqManagerNotifier.notifyOnSoundProfileError(id,
+ SoundProfile.ERROR_INVALID_ARGUMENT,
Binder.getCallingUid(), Binder.getCallingPid());
}
- notifyOnSoundProfileRemoved(mSoundProfileTempIdMap.getValue(dbId), toDelete,
+ mMqManagerNotifier.notifyOnSoundProfileRemoved(
+ mSoundProfileTempIdMap.getValue(dbId), toDelete,
Binder.getCallingUid(), Binder.getCallingPid());
mSoundProfileTempIdMap.remove(dbId);
- notifyHalOnSoundProfileChange(dbId, null);
+ mHalNotifier.notifyHalOnSoundProfileChange(dbId, null);
}
}
}
@@ -1027,9 +550,9 @@ public class MediaQualityService extends SystemService {
synchronized (mSoundProfileLock) {
try (
- Cursor cursor = getCursorAfterQuerying(
+ Cursor cursor = mMqDatabaseUtils.getCursorAfterQuerying(
mMediaQualityDbHelper.SOUND_QUALITY_TABLE_NAME,
- getMediaProfileColumns(includeParams), selection,
+ MediaQualityUtils.getMediaProfileColumns(includeParams), selection,
selectionArguments)
) {
int count = cursor.getCount();
@@ -1044,41 +567,18 @@ public class MediaQualityService extends SystemService {
return null;
}
cursor.moveToFirst();
- return convertCursorToSoundProfileWithTempId(cursor);
+ return MediaQualityUtils.convertCursorToSoundProfileWithTempId(cursor,
+ mSoundProfileTempIdMap);
}
}
}
- private SoundProfile getSoundProfile(Long dbId) {
- String selection = BaseParameters.PARAMETER_ID + " = ?";
- String[] selectionArguments = {Long.toString(dbId)};
-
- try (
- Cursor cursor = getCursorAfterQuerying(
- mMediaQualityDbHelper.SOUND_QUALITY_TABLE_NAME,
- getMediaProfileColumns(false), selection, selectionArguments)
- ) {
- int count = cursor.getCount();
- if (count == 0) {
- return null;
- }
- if (count > 1) {
- Log.wtf(TAG, TextUtils.formatSimple(String.valueOf(Locale.US), "%d entries "
- + "found for id=%s in %s. Should only ever be 0 or 1.", count,
- dbId, mMediaQualityDbHelper.SOUND_QUALITY_TABLE_NAME));
- return null;
- }
- cursor.moveToFirst();
- return convertCursorToSoundProfileWithTempId(cursor);
- }
- }
-
@GuardedBy("mSoundProfileLock")
@Override
public List<SoundProfile> getSoundProfilesByPackage(
String packageName, Bundle options, UserHandle user) {
if (!hasGlobalSoundQualityServicePermission()) {
- notifyOnSoundProfileError(null, SoundProfile.ERROR_NO_PERMISSION,
+ mMqManagerNotifier.notifyOnSoundProfileError(null, SoundProfile.ERROR_NO_PERMISSION,
Binder.getCallingUid(), Binder.getCallingPid());
}
@@ -1087,7 +587,8 @@ public class MediaQualityService extends SystemService {
options.getBoolean(MediaQualityManager.OPTION_INCLUDE_PARAMETERS, false);
String selection = BaseParameters.PARAMETER_PACKAGE + " = ?";
String[] selectionArguments = {packageName};
- return getSoundProfilesBasedOnConditions(getMediaProfileColumns(includeParams),
+ return mMqDatabaseUtils.getSoundProfilesBasedOnConditions(MediaQualityUtils
+ .getMediaProfileColumns(includeParams),
selection, selectionArguments);
}
}
@@ -1106,17 +607,19 @@ public class MediaQualityService extends SystemService {
@Override
public boolean setDefaultSoundProfile(String profileId, UserHandle user) {
if (!hasGlobalSoundQualityServicePermission()) {
- notifyOnSoundProfileError(profileId, SoundProfile.ERROR_NO_PERMISSION,
+ mMqManagerNotifier.notifyOnSoundProfileError(profileId,
+ SoundProfile.ERROR_NO_PERMISSION,
Binder.getCallingUid(), Binder.getCallingPid());
}
- SoundProfile soundProfile = getSoundProfile(mSoundProfileTempIdMap.getKey(profileId));
+ SoundProfile soundProfile =
+ mMqDatabaseUtils.getSoundProfile(mSoundProfileTempIdMap.getKey(profileId));
PersistableBundle params = soundProfile.getParameters();
try {
if (mMediaQuality != null) {
SoundParameter[] soundParameters =
- convertPersistableBundleToSoundParameterList(params);
+ MediaQualityUtils.convertPersistableBundleToSoundParameterList(params);
SoundParameters sp = new SoundParameters();
sp.soundParameters = soundParameters;
@@ -1130,106 +633,18 @@ public class MediaQualityService extends SystemService {
return false;
}
- private SoundParameter[] convertPersistableBundleToSoundParameterList(
- PersistableBundle params) {
- //TODO: set EqualizerDetail
- if (params == null) {
- return null;
- }
- List<SoundParameter> soundParams = new ArrayList<>();
- if (params.containsKey(SoundQuality.PARAMETER_BALANCE)) {
- soundParams.add(SoundParameter.balance(params.getInt(
- SoundQuality.PARAMETER_BALANCE)));
- }
- if (params.containsKey(SoundQuality.PARAMETER_BASS)) {
- soundParams.add(SoundParameter.bass(params.getInt(SoundQuality.PARAMETER_BASS)));
- }
- if (params.containsKey(SoundQuality.PARAMETER_TREBLE)) {
- soundParams.add(SoundParameter.treble(params.getInt(
- SoundQuality.PARAMETER_TREBLE)));
- }
- if (params.containsKey(SoundQuality.PARAMETER_SURROUND_SOUND)) {
- soundParams.add(SoundParameter.surroundSoundEnabled(params.getBoolean(
- SoundQuality.PARAMETER_SURROUND_SOUND)));
- }
- if (params.containsKey(SoundQuality.PARAMETER_SPEAKERS)) {
- soundParams.add(SoundParameter.speakersEnabled(params.getBoolean(
- SoundQuality.PARAMETER_SPEAKERS)));
- }
- if (params.containsKey(SoundQuality.PARAMETER_SPEAKERS_DELAY_MILLIS)) {
- soundParams.add(SoundParameter.speakersDelayMs(params.getInt(
- SoundQuality.PARAMETER_SPEAKERS_DELAY_MILLIS)));
- }
- if (params.containsKey(SoundQuality.PARAMETER_AUTO_VOLUME_CONTROL)) {
- soundParams.add(SoundParameter.autoVolumeControl(params.getBoolean(
- SoundQuality.PARAMETER_AUTO_VOLUME_CONTROL)));
- }
- if (params.containsKey(SoundQuality.PARAMETER_DTS_DRC)) {
- soundParams.add(SoundParameter.dtsDrc(params.getBoolean(
- SoundQuality.PARAMETER_DTS_DRC)));
- }
- if (params.containsKey(SoundQuality.PARAMETER_DIGITAL_OUTPUT_DELAY_MILLIS)) {
- soundParams.add(SoundParameter.surroundSoundEnabled(params.getBoolean(
- SoundQuality.PARAMETER_DIGITAL_OUTPUT_DELAY_MILLIS)));
- }
- if (params.containsKey(SoundQuality.PARAMETER_EARC)) {
- soundParams.add(SoundParameter.enhancedAudioReturnChannelEnabled(params.getBoolean(
- SoundQuality.PARAMETER_EARC)));
- }
- if (params.containsKey(SoundQuality.PARAMETER_DOWN_MIX_MODE)) {
- soundParams.add(SoundParameter.downmixMode((byte) params.getInt(
- SoundQuality.PARAMETER_DOWN_MIX_MODE)));
- }
- if (params.containsKey(SoundQuality.PARAMETER_SOUND_STYLE)) {
- soundParams.add(SoundParameter.soundStyle((byte) params.getInt(
- SoundQuality.PARAMETER_SOUND_STYLE)));
- }
- if (params.containsKey(SoundQuality.PARAMETER_DIGITAL_OUTPUT_MODE)) {
- soundParams.add(SoundParameter.digitalOutput((byte) params.getInt(
- SoundQuality.PARAMETER_DIGITAL_OUTPUT_MODE)));
- }
- if (params.containsKey(SoundQuality.PARAMETER_DIALOGUE_ENHANCER)) {
- soundParams.add(SoundParameter.dolbyDialogueEnhancer((byte) params.getInt(
- SoundQuality.PARAMETER_DIALOGUE_ENHANCER)));
- }
-
- DolbyAudioProcessing dab = new DolbyAudioProcessing();
- dab.soundMode =
- (byte) params.getInt(SoundQuality.PARAMETER_DOLBY_AUDIO_PROCESSING_SOUND_MODE);
- dab.volumeLeveler =
- params.getBoolean(SoundQuality.PARAMETER_DOLBY_AUDIO_PROCESSING_VOLUME_LEVELER);
- dab.surroundVirtualizer = params.getBoolean(
- SoundQuality.PARAMETER_DOLBY_AUDIO_PROCESSING_SURROUND_VIRTUALIZER);
- dab.dolbyAtmos =
- params.getBoolean(SoundQuality.PARAMETER_DOLBY_AUDIO_PROCESSING_DOLBY_ATMOS);
- soundParams.add(SoundParameter.dolbyAudioProcessing(dab));
-
- DtsVirtualX dts = new DtsVirtualX();
- dts.tbHdx = params.getBoolean(SoundQuality.PARAMETER_DTS_VIRTUAL_X_TBHDX);
- dts.limiter = params.getBoolean(SoundQuality.PARAMETER_DTS_VIRTUAL_X_LIMITER);
- dts.truSurroundX = params.getBoolean(
- SoundQuality.PARAMETER_DTS_VIRTUAL_X_TRU_SURROUND_X);
- dts.truVolumeHd = params.getBoolean(SoundQuality.PARAMETER_DTS_VIRTUAL_X_TRU_VOLUME_HD);
- dts.dialogClarity = params.getBoolean(
- SoundQuality.PARAMETER_DTS_VIRTUAL_X_DIALOG_CLARITY);
- dts.definition = params.getBoolean(SoundQuality.PARAMETER_DTS_VIRTUAL_X_DEFINITION);
- dts.height = params.getBoolean(SoundQuality.PARAMETER_DTS_VIRTUAL_X_HEIGHT);
- soundParams.add(SoundParameter.dtsVirtualX(dts));
-
- return (SoundParameter[]) soundParams.toArray();
- }
-
@GuardedBy("mSoundProfileLock")
@Override
public List<String> getSoundProfilePackageNames(UserHandle user) {
if (!hasGlobalSoundQualityServicePermission()) {
- notifyOnSoundProfileError(null, SoundProfile.ERROR_NO_PERMISSION,
+ mMqManagerNotifier.notifyOnSoundProfileError(null, SoundProfile.ERROR_NO_PERMISSION,
Binder.getCallingUid(), Binder.getCallingPid());
}
String [] column = {BaseParameters.PARAMETER_NAME};
synchronized (mSoundProfileLock) {
- List<SoundProfile> soundProfiles = getSoundProfilesBasedOnConditions(column,
+ List<SoundProfile> soundProfiles =
+ mMqDatabaseUtils.getSoundProfilesBasedOnConditions(column,
null, null);
return soundProfiles.stream()
.map(SoundProfile::getPackageName)
@@ -1269,338 +684,6 @@ public class MediaQualityService extends SystemService {
mContext.getPackageName()) == mPackageManager.PERMISSION_GRANTED;
}
- private void populateTempIdMap(BiMap<Long, String> map, Long id) {
- if (id != null && map.getValue(id) == null) {
- String uuid;
- int attempts = 0;
- while (attempts < MAX_UUID_GENERATION_ATTEMPTS) {
- uuid = UUID.randomUUID().toString();
- if (map.getKey(uuid) == null) {
- map.put(id, uuid);
- return;
- }
- attempts++;
- }
- }
- }
-
- private String persistableBundleToJson(PersistableBundle bundle) {
- JSONObject json = new JSONObject();
- for (String key : bundle.keySet()) {
- Object value = bundle.get(key);
- try {
- if (value instanceof String) {
- json.put(key, bundle.getString(key));
- } else if (value instanceof Integer) {
- json.put(key, bundle.getInt(key));
- } else if (value instanceof Long) {
- json.put(key, bundle.getLong(key));
- } else if (value instanceof Boolean) {
- json.put(key, bundle.getBoolean(key));
- } else if (value instanceof Double) {
- json.put(key, bundle.getDouble(key));
- }
- } catch (JSONException e) {
- Log.e(TAG, "Unable to serialize ", e);
- }
- }
- return json.toString();
- }
-
- private PersistableBundle jsonToPersistableBundle(String jsonString) {
- PersistableBundle bundle = new PersistableBundle();
- if (jsonString != null) {
- JSONObject jsonObject = null;
- try {
- jsonObject = new JSONObject(jsonString);
-
- Iterator<String> keys = jsonObject.keys();
- while (keys.hasNext()) {
- String key = keys.next();
- Object value = jsonObject.get(key);
-
- if (value instanceof String) {
- bundle.putString(key, (String) value);
- } else if (value instanceof Integer) {
- bundle.putInt(key, (Integer) value);
- } else if (value instanceof Boolean) {
- bundle.putBoolean(key, (Boolean) value);
- } else if (value instanceof Double) {
- bundle.putDouble(key, (Double) value);
- } else if (value instanceof Long) {
- bundle.putLong(key, (Long) value);
- }
- }
- } catch (JSONException e) {
- throw new RuntimeException(e);
- }
- }
- return bundle;
- }
-
- private ContentValues getContentValues(Long dbId, Integer profileType, String name,
- String packageName, String inputId, PersistableBundle params) {
- ContentValues values = new ContentValues();
- if (dbId != null) {
- values.put(BaseParameters.PARAMETER_ID, dbId);
- }
- if (profileType != null) {
- values.put(BaseParameters.PARAMETER_TYPE, profileType);
- }
- if (name != null) {
- values.put(BaseParameters.PARAMETER_NAME, name);
- }
- if (packageName != null) {
- values.put(BaseParameters.PARAMETER_PACKAGE, packageName);
- }
- if (inputId != null) {
- values.put(BaseParameters.PARAMETER_INPUT_ID, inputId);
- }
- if (params != null) {
- values.put(mMediaQualityDbHelper.SETTINGS, persistableBundleToJson(params));
- }
- return values;
- }
-
- private String[] getMediaProfileColumns(boolean includeParams) {
- ArrayList<String> columns = new ArrayList<>(Arrays.asList(
- BaseParameters.PARAMETER_ID,
- BaseParameters.PARAMETER_TYPE,
- BaseParameters.PARAMETER_NAME,
- BaseParameters.PARAMETER_INPUT_ID,
- BaseParameters.PARAMETER_PACKAGE)
- );
- if (includeParams) {
- columns.add(mMediaQualityDbHelper.SETTINGS);
- }
- return columns.toArray(new String[0]);
- }
-
- private PictureProfile convertCursorToPictureProfileWithTempId(Cursor cursor) {
- return new PictureProfile(
- getTempId(mPictureProfileTempIdMap, cursor),
- getType(cursor),
- getName(cursor),
- getInputId(cursor),
- getPackageName(cursor),
- jsonToPersistableBundle(getSettingsString(cursor)),
- PictureProfileHandle.NONE
- );
- }
-
- private SoundProfile convertCursorToSoundProfileWithTempId(Cursor cursor) {
- return new SoundProfile(
- getTempId(mSoundProfileTempIdMap, cursor),
- getType(cursor),
- getName(cursor),
- getInputId(cursor),
- getPackageName(cursor),
- jsonToPersistableBundle(getSettingsString(cursor)),
- SoundProfileHandle.NONE
- );
- }
-
- private String getTempId(BiMap<Long, String> map, Cursor cursor) {
- int colIndex = cursor.getColumnIndex(BaseParameters.PARAMETER_ID);
- Long dbId = colIndex != -1 ? cursor.getLong(colIndex) : null;
- populateTempIdMap(map, dbId);
- return map.getValue(dbId);
- }
-
- private int getType(Cursor cursor) {
- int colIndex = cursor.getColumnIndex(BaseParameters.PARAMETER_TYPE);
- return colIndex != -1 ? cursor.getInt(colIndex) : 0;
- }
-
- private String getName(Cursor cursor) {
- int colIndex = cursor.getColumnIndex(BaseParameters.PARAMETER_NAME);
- return colIndex != -1 ? cursor.getString(colIndex) : null;
- }
-
- private String getInputId(Cursor cursor) {
- int colIndex = cursor.getColumnIndex(BaseParameters.PARAMETER_INPUT_ID);
- return colIndex != -1 ? cursor.getString(colIndex) : null;
- }
-
- private String getPackageName(Cursor cursor) {
- int colIndex = cursor.getColumnIndex(BaseParameters.PARAMETER_PACKAGE);
- return colIndex != -1 ? cursor.getString(colIndex) : null;
- }
-
- private String getSettingsString(Cursor cursor) {
- int colIndex = cursor.getColumnIndex(mMediaQualityDbHelper.SETTINGS);
- return colIndex != -1 ? cursor.getString(colIndex) : null;
- }
-
- private Cursor getCursorAfterQuerying(String table, String[] columns, String selection,
- String[] selectionArgs) {
- SQLiteDatabase db = mMediaQualityDbHelper.getReadableDatabase();
- return db.query(table, columns, selection, selectionArgs,
- /*groupBy=*/ null, /*having=*/ null, /*orderBy=*/ null);
- }
-
- private List<PictureProfile> getPictureProfilesBasedOnConditions(String[] columns,
- String selection, String[] selectionArguments) {
- try (
- Cursor cursor = getCursorAfterQuerying(
- mMediaQualityDbHelper.PICTURE_QUALITY_TABLE_NAME, columns, selection,
- selectionArguments)
- ) {
- List<PictureProfile> pictureProfiles = new ArrayList<>();
- while (cursor.moveToNext()) {
- pictureProfiles.add(convertCursorToPictureProfileWithTempId(cursor));
- }
- return pictureProfiles;
- }
- }
-
- private List<SoundProfile> getSoundProfilesBasedOnConditions(String[] columns,
- String selection, String[] selectionArguments) {
- try (
- Cursor cursor = getCursorAfterQuerying(
- mMediaQualityDbHelper.SOUND_QUALITY_TABLE_NAME, columns, selection,
- selectionArguments)
- ) {
- List<SoundProfile> soundProfiles = new ArrayList<>();
- while (cursor.moveToNext()) {
- soundProfiles.add(convertCursorToSoundProfileWithTempId(cursor));
- }
- return soundProfiles;
- }
- }
-
- /** @hide */
- @Retention(RetentionPolicy.SOURCE)
- private @interface ProfileModes {
- int ADD = 1;
- int UPDATE = 2;
- int REMOVE = 3;
- int ERROR = 4;
- }
-
- private void notifyOnPictureProfileAdded(String profileId, PictureProfile profile,
- int uid, int pid) {
- notifyPictureProfileHelper(ProfileModes.ADD, profileId, profile, null, uid, pid);
- }
-
- private void notifyOnPictureProfileUpdated(String profileId, PictureProfile profile,
- int uid, int pid) {
- notifyPictureProfileHelper(ProfileModes.UPDATE, profileId, profile, null, uid, pid);
- }
-
- private void notifyOnPictureProfileRemoved(String profileId, PictureProfile profile,
- int uid, int pid) {
- notifyPictureProfileHelper(ProfileModes.REMOVE, profileId, profile, null, uid, pid);
- }
-
- private void notifyOnPictureProfileError(String profileId, int errorCode,
- int uid, int pid) {
- notifyPictureProfileHelper(ProfileModes.ERROR, profileId, null, errorCode, uid, pid);
- }
-
- private void notifyPictureProfileHelper(int mode, String profileId,
- PictureProfile profile, Integer errorCode, int uid, int pid) {
- UserState userState = getOrCreateUserStateLocked(UserHandle.USER_SYSTEM);
- int n = userState.mPictureProfileCallbacks.beginBroadcast();
-
- for (int i = 0; i < n; ++i) {
- try {
- IPictureProfileCallback callback = userState.mPictureProfileCallbacks
- .getBroadcastItem(i);
- Pair<Integer, Integer> pidUid = userState.mPictureProfileCallbackPidUidMap
- .get(callback);
-
- if (pidUid.first == pid && pidUid.second == uid) {
- if (mode == ProfileModes.ADD) {
- userState.mPictureProfileCallbacks.getBroadcastItem(i)
- .onPictureProfileAdded(profileId, profile);
- } else if (mode == ProfileModes.UPDATE) {
- userState.mPictureProfileCallbacks.getBroadcastItem(i)
- .onPictureProfileUpdated(profileId, profile);
- } else if (mode == ProfileModes.REMOVE) {
- userState.mPictureProfileCallbacks.getBroadcastItem(i)
- .onPictureProfileRemoved(profileId, profile);
- } else if (mode == ProfileModes.ERROR) {
- userState.mPictureProfileCallbacks.getBroadcastItem(i)
- .onError(profileId, errorCode);
- }
- }
- } catch (RemoteException e) {
- if (mode == ProfileModes.ADD) {
- Slog.e(TAG, "Failed to report added picture profile to callback", e);
- } else if (mode == ProfileModes.UPDATE) {
- Slog.e(TAG, "Failed to report updated picture profile to callback", e);
- } else if (mode == ProfileModes.REMOVE) {
- Slog.e(TAG, "Failed to report removed picture profile to callback", e);
- } else if (mode == ProfileModes.ERROR) {
- Slog.e(TAG, "Failed to report picture profile error to callback", e);
- }
- }
- }
- userState.mPictureProfileCallbacks.finishBroadcast();
- }
-
- private void notifyOnSoundProfileAdded(String profileId, SoundProfile profile,
- int uid, int pid) {
- notifySoundProfileHelper(ProfileModes.ADD, profileId, profile, null, uid, pid);
- }
-
- private void notifyOnSoundProfileUpdated(String profileId, SoundProfile profile,
- int uid, int pid) {
- notifySoundProfileHelper(ProfileModes.UPDATE, profileId, profile, null, uid, pid);
- }
-
- private void notifyOnSoundProfileRemoved(String profileId, SoundProfile profile,
- int uid, int pid) {
- notifySoundProfileHelper(ProfileModes.REMOVE, profileId, profile, null, uid, pid);
- }
-
- private void notifyOnSoundProfileError(String profileId, int errorCode, int uid, int pid) {
- notifySoundProfileHelper(ProfileModes.ERROR, profileId, null, errorCode, uid, pid);
- }
-
- private void notifySoundProfileHelper(int mode, String profileId,
- SoundProfile profile, Integer errorCode, int uid, int pid) {
- UserState userState = getOrCreateUserStateLocked(UserHandle.USER_SYSTEM);
- int n = userState.mSoundProfileCallbacks.beginBroadcast();
-
- for (int i = 0; i < n; ++i) {
- try {
- ISoundProfileCallback callback = userState.mSoundProfileCallbacks
- .getBroadcastItem(i);
- Pair<Integer, Integer> pidUid = userState.mSoundProfileCallbackPidUidMap
- .get(callback);
-
- if (pidUid.first == pid && pidUid.second == uid) {
- if (mode == ProfileModes.ADD) {
- userState.mSoundProfileCallbacks.getBroadcastItem(i)
- .onSoundProfileAdded(profileId, profile);
- } else if (mode == ProfileModes.UPDATE) {
- userState.mSoundProfileCallbacks.getBroadcastItem(i)
- .onSoundProfileUpdated(profileId, profile);
- } else if (mode == ProfileModes.REMOVE) {
- userState.mSoundProfileCallbacks.getBroadcastItem(i)
- .onSoundProfileRemoved(profileId, profile);
- } else if (mode == ProfileModes.ERROR) {
- userState.mSoundProfileCallbacks.getBroadcastItem(i)
- .onError(profileId, errorCode);
- }
- }
- } catch (RemoteException e) {
- if (mode == ProfileModes.ADD) {
- Slog.e(TAG, "Failed to report added sound profile to callback", e);
- } else if (mode == ProfileModes.UPDATE) {
- Slog.e(TAG, "Failed to report updated sound profile to callback", e);
- } else if (mode == ProfileModes.REMOVE) {
- Slog.e(TAG, "Failed to report removed sound profile to callback", e);
- } else if (mode == ProfileModes.ERROR) {
- Slog.e(TAG, "Failed to report sound profile error to callback", e);
- }
- }
- }
- userState.mSoundProfileCallbacks.finishBroadcast();
- }
-
//TODO: need lock here?
@Override
public void registerPictureProfileCallback(final IPictureProfileCallback callback) {
@@ -1713,14 +796,36 @@ public class MediaQualityService extends SystemService {
@Override
public List<ParameterCapability> getParameterCapabilities(
List<String> names, UserHandle user) {
- return new ArrayList<>();
+ byte[] byteArray = MediaQualityUtils.convertParameterToByteArray(names);
+ ParamCapability[] caps = new ParamCapability[byteArray.length];
+ try {
+ mMediaQuality.getParamCaps(byteArray, caps);
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Failed to get parameter capabilities", e);
+ }
+
+ return getListParameterCapability(caps);
+ }
+
+ private List<ParameterCapability> getListParameterCapability(ParamCapability[] caps) {
+ List<ParameterCapability> pcList = new ArrayList<>();
+ for (ParamCapability pcHal : caps) {
+ String name = MediaQualityUtils.getParameterName(pcHal.name);
+ boolean isSupported = pcHal.isSupported;
+ int type = pcHal.defaultValue == null ? 0 : pcHal.defaultValue.getTag() + 1;
+ Bundle bundle = MediaQualityUtils.convertToCaps(type, pcHal.range);
+
+ pcList.add(new ParameterCapability(name, isSupported, type, bundle));
+ }
+ return pcList;
}
@GuardedBy("mPictureProfileLock")
@Override
public List<String> getPictureProfileAllowList(UserHandle user) {
if (!hasGlobalPictureQualityServicePermission()) {
- notifyOnPictureProfileError(null, PictureProfile.ERROR_NO_PERMISSION,
+ mMqManagerNotifier.notifyOnPictureProfileError(null,
+ PictureProfile.ERROR_NO_PERMISSION,
Binder.getCallingUid(), Binder.getCallingPid());
}
String allowlist = mPictureProfileSharedPreference.getString(ALLOWLIST, null);
@@ -1735,7 +840,8 @@ public class MediaQualityService extends SystemService {
@Override
public void setPictureProfileAllowList(List<String> packages, UserHandle user) {
if (!hasGlobalPictureQualityServicePermission()) {
- notifyOnPictureProfileError(null, PictureProfile.ERROR_NO_PERMISSION,
+ mMqManagerNotifier.notifyOnPictureProfileError(null,
+ PictureProfile.ERROR_NO_PERMISSION,
Binder.getCallingUid(), Binder.getCallingPid());
}
SharedPreferences.Editor editor = mPictureProfileSharedPreference.edit();
@@ -1747,7 +853,7 @@ public class MediaQualityService extends SystemService {
@Override
public List<String> getSoundProfileAllowList(UserHandle user) {
if (!hasGlobalSoundQualityServicePermission()) {
- notifyOnSoundProfileError(null, SoundProfile.ERROR_NO_PERMISSION,
+ mMqManagerNotifier.notifyOnSoundProfileError(null, SoundProfile.ERROR_NO_PERMISSION,
Binder.getCallingUid(), Binder.getCallingPid());
}
String allowlist = mSoundProfileSharedPreference.getString(ALLOWLIST, null);
@@ -1762,7 +868,7 @@ public class MediaQualityService extends SystemService {
@Override
public void setSoundProfileAllowList(List<String> packages, UserHandle user) {
if (!hasGlobalSoundQualityServicePermission()) {
- notifyOnSoundProfileError(null, SoundProfile.ERROR_NO_PERMISSION,
+ mMqManagerNotifier.notifyOnSoundProfileError(null, SoundProfile.ERROR_NO_PERMISSION,
Binder.getCallingUid(), Binder.getCallingPid());
}
SharedPreferences.Editor editor = mSoundProfileSharedPreference.edit();
@@ -1779,7 +885,8 @@ public class MediaQualityService extends SystemService {
@Override
public void setAutoPictureQualityEnabled(boolean enabled, UserHandle user) {
if (!hasGlobalPictureQualityServicePermission()) {
- notifyOnPictureProfileError(null, PictureProfile.ERROR_NO_PERMISSION,
+ mMqManagerNotifier.notifyOnPictureProfileError(null,
+ PictureProfile.ERROR_NO_PERMISSION,
Binder.getCallingUid(), Binder.getCallingPid());
}
synchronized (mPictureProfileLock) {
@@ -1816,7 +923,8 @@ public class MediaQualityService extends SystemService {
@Override
public void setSuperResolutionEnabled(boolean enabled, UserHandle user) {
if (!hasGlobalPictureQualityServicePermission()) {
- notifyOnPictureProfileError(null, PictureProfile.ERROR_NO_PERMISSION,
+ mMqManagerNotifier.notifyOnPictureProfileError(null,
+ PictureProfile.ERROR_NO_PERMISSION,
Binder.getCallingUid(), Binder.getCallingPid());
}
synchronized (mPictureProfileLock) {
@@ -1853,7 +961,7 @@ public class MediaQualityService extends SystemService {
@Override
public void setAutoSoundQualityEnabled(boolean enabled, UserHandle user) {
if (!hasGlobalSoundQualityServicePermission()) {
- notifyOnSoundProfileError(null, SoundProfile.ERROR_NO_PERMISSION,
+ mMqManagerNotifier.notifyOnSoundProfileError(null, SoundProfile.ERROR_NO_PERMISSION,
Binder.getCallingUid(), Binder.getCallingPid());
}
@@ -1894,11 +1002,57 @@ public class MediaQualityService extends SystemService {
}
}
+ public void updatePictureProfileFromHal(Long dbId, PersistableBundle bundle) {
+ ContentValues values = MediaQualityUtils.getContentValues(dbId,
+ null,
+ null,
+ null,
+ null,
+ bundle);
+
+ updateDatabaseOnPictureProfileAndNotifyManagerAndHal(values, bundle);
+ }
+
+ public void updateDatabaseOnPictureProfileAndNotifyManagerAndHal(ContentValues values,
+ PersistableBundle bundle) {
+ SQLiteDatabase db = mMediaQualityDbHelper.getWritableDatabase();
+ db.replace(mMediaQualityDbHelper.PICTURE_QUALITY_TABLE_NAME,
+ null, values);
+ Long dbId = values.getAsLong(BaseParameters.PARAMETER_ID);
+ mMqManagerNotifier.notifyOnPictureProfileUpdated(mPictureProfileTempIdMap.getValue(dbId),
+ mMqDatabaseUtils.getPictureProfile(dbId), Binder.getCallingUid(),
+ Binder.getCallingPid());
+ mHalNotifier.notifyHalOnPictureProfileChange(dbId, bundle);
+ }
+
+ public void updateSoundProfileFromHal(Long dbId, PersistableBundle bundle) {
+ ContentValues values = MediaQualityUtils.getContentValues(dbId,
+ null,
+ null,
+ null,
+ null,
+ bundle);
+
+ updateDatabaseOnSoundProfileAndNotifyManagerAndHal(values, bundle);
+ }
+
+ public void updateDatabaseOnSoundProfileAndNotifyManagerAndHal(ContentValues values,
+ PersistableBundle bundle) {
+ SQLiteDatabase db = mMediaQualityDbHelper.getWritableDatabase();
+ db.replace(mMediaQualityDbHelper.SOUND_QUALITY_TABLE_NAME,
+ null, values);
+ Long dbId = values.getAsLong(BaseParameters.PARAMETER_ID);
+ mMqManagerNotifier.notifyOnSoundProfileUpdated(mSoundProfileTempIdMap.getValue(dbId),
+ mMqDatabaseUtils.getSoundProfile(dbId), Binder.getCallingUid(),
+ Binder.getCallingPid());
+ mHalNotifier.notifyHalOnSoundProfileChange(dbId, bundle);
+ }
+
private class MediaQualityManagerPictureProfileCallbackList extends
RemoteCallbackList<IPictureProfileCallback> {
@Override
public void onCallbackDied(IPictureProfileCallback callback) {
- synchronized ("mPictureProfileLock") { //TODO: Change to lock
+ synchronized (mPictureProfileLock) {
for (int i = 0; i < mUserStates.size(); i++) {
int userId = mUserStates.keyAt(i);
UserState userState = getOrCreateUserStateLocked(userId);
@@ -1912,7 +1066,7 @@ public class MediaQualityService extends SystemService {
RemoteCallbackList<ISoundProfileCallback> {
@Override
public void onCallbackDied(ISoundProfileCallback callback) {
- synchronized ("mSoundProfileLock") { //TODO: Change to lock
+ synchronized (mSoundProfileLock) {
for (int i = 0; i < mUserStates.size(); i++) {
int userId = mUserStates.keyAt(i);
UserState userState = getOrCreateUserStateLocked(userId);
@@ -1956,6 +1110,351 @@ public class MediaQualityService extends SystemService {
return mUserStates.get(userId);
}
+ private final class MqDatabaseUtils {
+
+ MediaQualityDbHelper mMediaQualityDbHelper;
+
+ private PictureProfile getPictureProfile(Long dbId) {
+ String selection = BaseParameters.PARAMETER_ID + " = ?";
+ String[] selectionArguments = {Long.toString(dbId)};
+
+ try (
+ Cursor cursor = getCursorAfterQuerying(
+ mMediaQualityDbHelper.PICTURE_QUALITY_TABLE_NAME,
+ MediaQualityUtils.getMediaProfileColumns(false), selection,
+ selectionArguments)
+ ) {
+ int count = cursor.getCount();
+ if (count == 0) {
+ return null;
+ }
+ if (count > 1) {
+ Log.wtf(TAG, TextUtils.formatSimple(String.valueOf(Locale.US), "%d entries "
+ + "found for id=%d in %s. Should only ever be 0 or 1.",
+ count, dbId, mMediaQualityDbHelper.PICTURE_QUALITY_TABLE_NAME));
+ return null;
+ }
+ cursor.moveToFirst();
+ return MediaQualityUtils.convertCursorToPictureProfileWithTempId(cursor,
+ mPictureProfileTempIdMap);
+ }
+ }
+
+ private List<PictureProfile> getPictureProfilesBasedOnConditions(String[] columns,
+ String selection, String[] selectionArguments) {
+ try (
+ Cursor cursor = getCursorAfterQuerying(
+ mMediaQualityDbHelper.PICTURE_QUALITY_TABLE_NAME, columns, selection,
+ selectionArguments)
+ ) {
+ List<PictureProfile> pictureProfiles = new ArrayList<>();
+ while (cursor.moveToNext()) {
+ pictureProfiles.add(MediaQualityUtils.convertCursorToPictureProfileWithTempId(
+ cursor, mPictureProfileTempIdMap));
+ }
+ return pictureProfiles;
+ }
+ }
+
+ private SoundProfile getSoundProfile(Long dbId) {
+ String selection = BaseParameters.PARAMETER_ID + " = ?";
+ String[] selectionArguments = {Long.toString(dbId)};
+
+ try (
+ Cursor cursor = mMqDatabaseUtils.getCursorAfterQuerying(
+ mMediaQualityDbHelper.SOUND_QUALITY_TABLE_NAME,
+ MediaQualityUtils.getMediaProfileColumns(false), selection,
+ selectionArguments)
+ ) {
+ int count = cursor.getCount();
+ if (count == 0) {
+ return null;
+ }
+ if (count > 1) {
+ Log.wtf(TAG, TextUtils.formatSimple(String.valueOf(Locale.US), "%d entries "
+ + "found for id=%s in %s. Should only ever be 0 or 1.", count,
+ dbId, mMediaQualityDbHelper.SOUND_QUALITY_TABLE_NAME));
+ return null;
+ }
+ cursor.moveToFirst();
+ return MediaQualityUtils.convertCursorToSoundProfileWithTempId(
+ cursor, mSoundProfileTempIdMap);
+ }
+ }
+
+ private List<SoundProfile> getSoundProfilesBasedOnConditions(String[] columns,
+ String selection, String[] selectionArguments) {
+ try (
+ Cursor cursor = mMqDatabaseUtils.getCursorAfterQuerying(
+ mMediaQualityDbHelper.SOUND_QUALITY_TABLE_NAME, columns, selection,
+ selectionArguments)
+ ) {
+ List<SoundProfile> soundProfiles = new ArrayList<>();
+ while (cursor.moveToNext()) {
+ soundProfiles.add(MediaQualityUtils.convertCursorToSoundProfileWithTempId(
+ cursor, mSoundProfileTempIdMap));
+ }
+ return soundProfiles;
+ }
+ }
+
+ private Cursor getCursorAfterQuerying(String table, String[] columns, String selection,
+ String[] selectionArgs) {
+ SQLiteDatabase db = mMediaQualityDbHelper.getReadableDatabase();
+ return db.query(table, columns, selection, selectionArgs,
+ /*groupBy=*/ null, /*having=*/ null, /*orderBy=*/ null);
+ }
+
+ private MqDatabaseUtils(Context context) {
+ mMediaQualityDbHelper = new MediaQualityDbHelper(context);
+ }
+ }
+
+ private final class MqManagerNotifier {
+
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ private @interface ProfileModes {
+ int ADD = 1;
+ int UPDATE = 2;
+ int REMOVE = 3;
+ int ERROR = 4;
+ int PARAMETER_CAPABILITY_CHANGED = 5;
+ }
+
+ private void notifyOnPictureProfileAdded(String profileId, PictureProfile profile,
+ int uid, int pid) {
+ notifyPictureProfileHelper(ProfileModes.ADD, profileId, profile, null, null, uid, pid);
+ }
+
+ private void notifyOnPictureProfileUpdated(String profileId, PictureProfile profile,
+ int uid, int pid) {
+ notifyPictureProfileHelper(ProfileModes.UPDATE, profileId, profile, null, null, uid,
+ pid);
+ }
+
+ private void notifyOnPictureProfileRemoved(String profileId, PictureProfile profile,
+ int uid, int pid) {
+ notifyPictureProfileHelper(ProfileModes.REMOVE, profileId, profile, null, null, uid,
+ pid);
+ }
+
+ private void notifyOnPictureProfileError(String profileId, int errorCode,
+ int uid, int pid) {
+ notifyPictureProfileHelper(ProfileModes.ERROR, profileId, null, errorCode, null, uid,
+ pid);
+ }
+
+ private void notifyOnPictureProfileParameterCapabilitiesChanged(Long profileId,
+ ParamCapability[] caps, int uid, int pid) {
+ String uuid = mPictureProfileTempIdMap.getValue(profileId);
+ List<ParameterCapability> paramCaps = new ArrayList<>();
+ for (ParamCapability cap: caps) {
+ String name = MediaQualityUtils.getParameterName(cap.name);
+ boolean isSupported = cap.isSupported;
+ int type = cap.defaultValue == null ? 0 : cap.defaultValue.getTag() + 1;
+ Bundle bundle = MediaQualityUtils.convertToCaps(type, cap.range);
+
+ paramCaps.add(new ParameterCapability(name, isSupported, type, bundle));
+ }
+ notifyPictureProfileHelper(ProfileModes.PARAMETER_CAPABILITY_CHANGED, uuid,
+ null, null, paramCaps , uid, pid);
+ }
+
+ private void notifyPictureProfileHelper(int mode, String profileId,
+ PictureProfile profile, Integer errorCode,
+ List<ParameterCapability> paramCaps, int uid, int pid) {
+ UserState userState = getOrCreateUserStateLocked(UserHandle.USER_SYSTEM);
+ int n = userState.mPictureProfileCallbacks.beginBroadcast();
+
+ for (int i = 0; i < n; ++i) {
+ try {
+ IPictureProfileCallback callback = userState.mPictureProfileCallbacks
+ .getBroadcastItem(i);
+ Pair<Integer, Integer> pidUid = userState.mPictureProfileCallbackPidUidMap
+ .get(callback);
+
+ if (pidUid.first == pid && pidUid.second == uid) {
+ if (mode == ProfileModes.ADD) {
+ userState.mPictureProfileCallbacks.getBroadcastItem(i)
+ .onPictureProfileAdded(profileId, profile);
+ } else if (mode == ProfileModes.UPDATE) {
+ userState.mPictureProfileCallbacks.getBroadcastItem(i)
+ .onPictureProfileUpdated(profileId, profile);
+ } else if (mode == ProfileModes.REMOVE) {
+ userState.mPictureProfileCallbacks.getBroadcastItem(i)
+ .onPictureProfileRemoved(profileId, profile);
+ } else if (mode == ProfileModes.ERROR) {
+ userState.mPictureProfileCallbacks.getBroadcastItem(i)
+ .onError(profileId, errorCode);
+ } else if (mode == ProfileModes.PARAMETER_CAPABILITY_CHANGED) {
+ userState.mPictureProfileCallbacks.getBroadcastItem(i)
+ .onParameterCapabilitiesChanged(profileId, paramCaps);
+ }
+ }
+ } catch (RemoteException e) {
+ if (mode == ProfileModes.ADD) {
+ Slog.e(TAG, "Failed to report added picture profile to callback", e);
+ } else if (mode == ProfileModes.UPDATE) {
+ Slog.e(TAG, "Failed to report updated picture profile to callback", e);
+ } else if (mode == ProfileModes.REMOVE) {
+ Slog.e(TAG, "Failed to report removed picture profile to callback", e);
+ } else if (mode == ProfileModes.ERROR) {
+ Slog.e(TAG, "Failed to report picture profile error to callback", e);
+ } else if (mode == ProfileModes.PARAMETER_CAPABILITY_CHANGED) {
+ Slog.e(TAG, "Failed to report picture profile parameter capability change "
+ + "to callback", e);
+ }
+ }
+ }
+ userState.mPictureProfileCallbacks.finishBroadcast();
+ }
+
+ private void notifyOnSoundProfileAdded(String profileId, SoundProfile profile,
+ int uid, int pid) {
+ notifySoundProfileHelper(ProfileModes.ADD, profileId, profile, null, null, uid, pid);
+ }
+
+ private void notifyOnSoundProfileUpdated(String profileId, SoundProfile profile,
+ int uid, int pid) {
+ notifySoundProfileHelper(ProfileModes.UPDATE, profileId, profile, null, null, uid, pid);
+ }
+
+ private void notifyOnSoundProfileRemoved(String profileId, SoundProfile profile,
+ int uid, int pid) {
+ notifySoundProfileHelper(ProfileModes.REMOVE, profileId, profile, null, null, uid, pid);
+ }
+
+ private void notifyOnSoundProfileError(String profileId, int errorCode, int uid, int pid) {
+ notifySoundProfileHelper(ProfileModes.ERROR, profileId, null, errorCode, null, uid,
+ pid);
+ }
+
+ private void notifyOnSoundProfileParameterCapabilitiesChanged(Long profileId,
+ ParamCapability[] caps, int uid, int pid) {
+ String uuid = mSoundProfileTempIdMap.getValue(profileId);
+ List<ParameterCapability> paramCaps = new ArrayList<>();
+ for (ParamCapability cap: caps) {
+ String name = MediaQualityUtils.getParameterName(cap.name);
+ boolean isSupported = cap.isSupported;
+ int type = cap.defaultValue == null ? 0 : cap.defaultValue.getTag() + 1;
+ Bundle bundle = MediaQualityUtils.convertToCaps(type, cap.range);
+
+ paramCaps.add(new ParameterCapability(name, isSupported, type, bundle));
+ }
+ notifySoundProfileHelper(ProfileModes.PARAMETER_CAPABILITY_CHANGED, uuid,
+ null, null, paramCaps , uid, pid);
+ }
+
+ private void notifySoundProfileHelper(int mode, String profileId,
+ SoundProfile profile, Integer errorCode,
+ List<ParameterCapability> paramCaps, int uid, int pid) {
+ UserState userState = getOrCreateUserStateLocked(UserHandle.USER_SYSTEM);
+ int n = userState.mSoundProfileCallbacks.beginBroadcast();
+
+ for (int i = 0; i < n; ++i) {
+ try {
+ ISoundProfileCallback callback = userState.mSoundProfileCallbacks
+ .getBroadcastItem(i);
+ Pair<Integer, Integer> pidUid = userState.mSoundProfileCallbackPidUidMap
+ .get(callback);
+
+ if (pidUid.first == pid && pidUid.second == uid) {
+ if (mode == ProfileModes.ADD) {
+ userState.mSoundProfileCallbacks.getBroadcastItem(i)
+ .onSoundProfileAdded(profileId, profile);
+ } else if (mode == ProfileModes.UPDATE) {
+ userState.mSoundProfileCallbacks.getBroadcastItem(i)
+ .onSoundProfileUpdated(profileId, profile);
+ } else if (mode == ProfileModes.REMOVE) {
+ userState.mSoundProfileCallbacks.getBroadcastItem(i)
+ .onSoundProfileRemoved(profileId, profile);
+ } else if (mode == ProfileModes.ERROR) {
+ userState.mSoundProfileCallbacks.getBroadcastItem(i)
+ .onError(profileId, errorCode);
+ } else if (mode == ProfileModes.PARAMETER_CAPABILITY_CHANGED) {
+ userState.mSoundProfileCallbacks.getBroadcastItem(i)
+ .onParameterCapabilitiesChanged(profileId, paramCaps);
+ }
+ }
+ } catch (RemoteException e) {
+ if (mode == ProfileModes.ADD) {
+ Slog.e(TAG, "Failed to report added sound profile to callback", e);
+ } else if (mode == ProfileModes.UPDATE) {
+ Slog.e(TAG, "Failed to report updated sound profile to callback", e);
+ } else if (mode == ProfileModes.REMOVE) {
+ Slog.e(TAG, "Failed to report removed sound profile to callback", e);
+ } else if (mode == ProfileModes.ERROR) {
+ Slog.e(TAG, "Failed to report sound profile error to callback", e);
+ } else if (mode == ProfileModes.PARAMETER_CAPABILITY_CHANGED) {
+ Slog.e(TAG, "Failed to report sound profile parameter capability change "
+ + "to callback", e);
+ }
+ }
+ }
+ userState.mSoundProfileCallbacks.finishBroadcast();
+ }
+
+ private MqManagerNotifier() {
+
+ }
+ }
+
+ private final class HalNotifier {
+
+ private void notifyHalOnPictureProfileChange(Long dbId, PersistableBundle params) {
+ // TODO: only notify HAL when the profile is active / being used
+ try {
+ mPpChangedListener.onPictureProfileChanged(convertToHalPictureProfile(dbId,
+ params));
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Failed to notify HAL on picture profile change.", e);
+ }
+ }
+
+ private android.hardware.tv.mediaquality.PictureProfile convertToHalPictureProfile(Long id,
+ PersistableBundle params) {
+ PictureParameters pictureParameters = new PictureParameters();
+ pictureParameters.pictureParameters =
+ MediaQualityUtils.convertPersistableBundleToPictureParameterList(
+ params);
+
+ android.hardware.tv.mediaquality.PictureProfile toReturn =
+ new android.hardware.tv.mediaquality.PictureProfile();
+ toReturn.pictureProfileId = id;
+ toReturn.parameters = pictureParameters;
+
+ return toReturn;
+ }
+
+ private void notifyHalOnSoundProfileChange(Long dbId, PersistableBundle params) {
+ // TODO: only notify HAL when the profile is active / being used
+ try {
+ mSpChangedListener.onSoundProfileChanged(convertToHalSoundProfile(dbId, params));
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Failed to notify HAL on sound profile change.", e);
+ }
+ }
+
+ private android.hardware.tv.mediaquality.SoundProfile convertToHalSoundProfile(Long id,
+ PersistableBundle params) {
+ SoundParameters soundParameters = new SoundParameters();
+ soundParameters.soundParameters =
+ MediaQualityUtils.convertPersistableBundleToSoundParameterList(params);
+
+ android.hardware.tv.mediaquality.SoundProfile toReturn =
+ new android.hardware.tv.mediaquality.SoundProfile();
+ toReturn.soundProfileId = id;
+ toReturn.parameters = soundParameters;
+
+ return toReturn;
+ }
+
+ private HalNotifier() {
+
+ }
+ }
+
private final class AmbientBacklightCallbackRecord implements IBinder.DeathRecipient {
final String mPackageName;
final IAmbientBacklightCallback mCallback;
@@ -1987,6 +1486,125 @@ public class MediaQualityService extends SystemService {
}
}
+ private final class PictureProfileAdjustmentListenerImpl extends
+ IPictureProfileAdjustmentListener.Stub {
+ MqDatabaseUtils mMqDatabaseUtils;
+ MqManagerNotifier mMqManagerNotifier;
+ HalNotifier mHalNotifier;
+
+ @Override
+ public void onPictureProfileAdjusted(
+ android.hardware.tv.mediaquality.PictureProfile pictureProfile)
+ throws RemoteException {
+ Long dbId = pictureProfile.pictureProfileId;
+ if (dbId != null) {
+ updatePictureProfileFromHal(dbId,
+ MediaQualityUtils.convertPictureParameterListToPersistableBundle(
+ pictureProfile.parameters.pictureParameters));
+ }
+ }
+
+ @Override
+ public void onParamCapabilityChanged(long pictureProfileId, ParamCapability[] caps)
+ throws RemoteException {
+ mMqManagerNotifier.notifyOnPictureProfileParameterCapabilitiesChanged(
+ pictureProfileId, caps, Binder.getCallingUid(), Binder.getCallingPid());
+ }
+
+ @Override
+ public void onVendorParamCapabilityChanged(long pictureProfileId,
+ VendorParamCapability[] caps) throws RemoteException {
+ // TODO
+ }
+
+ @Override
+ public void requestPictureParameters(long pictureProfileId) throws RemoteException {
+ PictureProfile profile = mMqDatabaseUtils.getPictureProfile(pictureProfileId);
+ if (profile != null) {
+ mHalNotifier.notifyHalOnPictureProfileChange(pictureProfileId,
+ profile.getParameters());
+ }
+ }
+
+ @Override
+ public void onStreamStatusChanged(long pictureProfileId, byte status)
+ throws RemoteException {
+ // TODO
+ }
+
+ @Override
+ public int getInterfaceVersion() throws RemoteException {
+ return 0;
+ }
+
+ @Override
+ public String getInterfaceHash() throws RemoteException {
+ return null;
+ }
+
+ private PictureProfileAdjustmentListenerImpl(Context context) {
+ mMqDatabaseUtils = new MqDatabaseUtils(context);
+ mMqManagerNotifier = new MqManagerNotifier();
+ mHalNotifier = new HalNotifier();
+ }
+ }
+
+ private final class SoundProfileAdjustmentListenerImpl extends
+ ISoundProfileAdjustmentListener.Stub {
+ MqDatabaseUtils mMqDatabaseUtils;
+ MqManagerNotifier mMqManagerNotifier;
+ HalNotifier mHalNotifier;
+
+ @Override
+ public void onSoundProfileAdjusted(
+ android.hardware.tv.mediaquality.SoundProfile soundProfile) throws RemoteException {
+ Long dbId = soundProfile.soundProfileId;
+ if (dbId != null) {
+ updateSoundProfileFromHal(dbId,
+ MediaQualityUtils.convertSoundParameterListToPersistableBundle(
+ soundProfile.parameters.soundParameters));
+ }
+ }
+
+ @Override
+ public void onParamCapabilityChanged(long soundProfileId, ParamCapability[] caps)
+ throws RemoteException {
+ mMqManagerNotifier.notifyOnSoundProfileParameterCapabilitiesChanged(
+ soundProfileId, caps, Binder.getCallingUid(), Binder.getCallingPid());
+ }
+
+ @Override
+ public void onVendorParamCapabilityChanged(long pictureProfileId,
+ VendorParamCapability[] caps) throws RemoteException {
+ // TODO
+ }
+
+ @Override
+ public void requestSoundParameters(long soundProfileId) throws RemoteException {
+ SoundProfile profile = mMqDatabaseUtils.getSoundProfile(soundProfileId);
+ if (profile != null) {
+ mHalNotifier.notifyHalOnSoundProfileChange(soundProfileId,
+ profile.getParameters());
+ }
+ }
+
+ @Override
+ public int getInterfaceVersion() throws RemoteException {
+ return 0;
+ }
+
+ @Override
+ public String getInterfaceHash() throws RemoteException {
+ return null;
+ }
+
+ private SoundProfileAdjustmentListenerImpl(Context context) {
+ mMqDatabaseUtils = new MqDatabaseUtils(context);
+ mMqManagerNotifier = new MqManagerNotifier();
+ mHalNotifier = new HalNotifier();
+ }
+ }
+
private final class HalAmbientBacklightCallback
extends android.hardware.tv.mediaquality.IMediaQualityCallback.Stub {
private final Object mLock = new Object();
diff --git a/services/core/java/com/android/server/media/quality/MediaQualityUtils.java b/services/core/java/com/android/server/media/quality/MediaQualityUtils.java
new file mode 100644
index 000000000000..d021a27afb02
--- /dev/null
+++ b/services/core/java/com/android/server/media/quality/MediaQualityUtils.java
@@ -0,0 +1,1577 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.media.quality;
+
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.hardware.tv.mediaquality.DolbyAudioProcessing;
+import android.hardware.tv.mediaquality.DtsVirtualX;
+import android.hardware.tv.mediaquality.ParameterDefaultValue;
+import android.hardware.tv.mediaquality.ParameterName;
+import android.hardware.tv.mediaquality.ParameterRange;
+import android.hardware.tv.mediaquality.PictureParameter;
+import android.hardware.tv.mediaquality.SoundParameter;
+import android.media.quality.MediaQualityContract.BaseParameters;
+import android.media.quality.MediaQualityContract.PictureQuality;
+import android.media.quality.MediaQualityContract.SoundQuality;
+import android.media.quality.ParameterCapability;
+import android.media.quality.PictureProfile;
+import android.media.quality.PictureProfileHandle;
+import android.media.quality.SoundProfile;
+import android.media.quality.SoundProfileHandle;
+import android.os.Bundle;
+import android.os.PersistableBundle;
+import android.util.Log;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * Utility class for media quality framework.
+ *
+ * @hide
+ */
+public final class MediaQualityUtils {
+
+ private static final int MAX_UUID_GENERATION_ATTEMPTS = 10;
+ private static final String TAG = "MediaQualityUtils";
+ public static final String SETTINGS = "settings";
+
+ /**
+ * Convert PictureParameter List to PersistableBundle.
+ */
+ public static PersistableBundle convertPictureParameterListToPersistableBundle(
+ PictureParameter[] parameters) {
+ PersistableBundle bundle = new PersistableBundle();
+ for (PictureParameter pp : parameters) {
+ if (pp.getBrightness() > -1) {
+ bundle.putLong(PictureQuality.PARAMETER_BRIGHTNESS, (long) pp.getBrightness());
+ }
+ if (pp.getContrast() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_CONTRAST, pp.getContrast());
+ }
+ if (pp.getSharpness() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_SHARPNESS, pp.getSharpness());
+ }
+ if (pp.getSaturation() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_SATURATION, pp.getSaturation());
+ }
+ if (pp.getHue() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_HUE, pp.getHue());
+ }
+ if (pp.getColorTunerBrightness() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_BRIGHTNESS,
+ pp.getColorTunerBrightness());
+ }
+ if (pp.getColorTunerSaturation() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION,
+ pp.getColorTunerSaturation());
+ }
+ if (pp.getColorTunerHue() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_HUE, pp.getColorTunerHue());
+ }
+ if (pp.getColorTunerRedOffset() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_RED_OFFSET,
+ pp.getColorTunerRedOffset());
+ }
+ if (pp.getColorTunerGreenOffset() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_GREEN_OFFSET,
+ pp.getColorTunerGreenOffset());
+ }
+ if (pp.getColorTunerBlueOffset() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_BLUE_OFFSET,
+ pp.getColorTunerBlueOffset());
+ }
+ if (pp.getColorTunerRedGain() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_RED_GAIN,
+ pp.getColorTunerRedGain());
+ }
+ if (pp.getColorTunerGreenGain() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_GREEN_GAIN,
+ pp.getColorTunerGreenGain());
+ }
+ if (pp.getColorTunerBlueGain() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_BLUE_GAIN,
+ pp.getColorTunerBlueGain());
+ }
+ if (pp.getNoiseReduction() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_NOISE_REDUCTION,
+ pp.getNoiseReduction());
+ }
+ if (pp.getMpegNoiseReduction() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_MPEG_NOISE_REDUCTION,
+ pp.getMpegNoiseReduction());
+ }
+ if (pp.getFleshTone() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_FLESH_TONE, pp.getFleshTone());
+ }
+ if (pp.getDeContour() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_DECONTOUR, pp.getDeContour());
+ }
+ if (pp.getDynamicLumaControl() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_DYNAMIC_LUMA_CONTROL,
+ pp.getDynamicLumaControl());
+ }
+ if (pp.getColorTemperature() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TEMPERATURE,
+ pp.getColorTemperature());
+ }
+ if (pp.getColorTemperatureRedGain() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_RED_GAIN,
+ pp.getColorTemperatureRedGain());
+ }
+ if (pp.getColorTemperatureGreenGain() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_GREEN_GAIN,
+ pp.getColorTemperatureGreenGain());
+ }
+ if (pp.getColorTemperatureBlueGain() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_BLUE_GAIN,
+ pp.getColorTemperatureBlueGain());
+ }
+ if (pp.getLevelRange() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_LEVEL_RANGE, pp.getLevelRange());
+ }
+ if (pp.getHdmiRgbRange() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_HDMI_RGB_RANGE, pp.getHdmiRgbRange());
+ }
+ if (pp.getColorSpace() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_SPACE, pp.getColorSpace());
+ }
+ if (pp.getPanelInitMaxLuminceNits() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_PANEL_INIT_MAX_LUMINCE_NITS,
+ pp.getPanelInitMaxLuminceNits());
+ }
+ if (pp.getGamma() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_GAMMA, pp.getGamma());
+ }
+ if (pp.getColorTemperatureRedOffset() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TEMPERATURE_RED_OFFSET,
+ pp.getColorTemperatureRedOffset());
+ }
+ if (pp.getColorTemperatureGreenOffset() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TEMPERATURE_GREEN_OFFSET,
+ pp.getColorTemperatureGreenOffset());
+ }
+ if (pp.getColorTemperatureBlueOffset() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TEMPERATURE_BLUE_OFFSET,
+ pp.getColorTemperatureBlueOffset());
+ }
+ if (pp.getLowBlueLight() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_LOW_BLUE_LIGHT, pp.getLowBlueLight());
+ }
+ if (pp.getLdMode() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_LD_MODE, pp.getLdMode());
+ }
+ if (pp.getOsdRedGain() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_OSD_RED_GAIN, pp.getOsdRedGain());
+ }
+ if (pp.getOsdGreenGain() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_OSD_GREEN_GAIN, pp.getOsdGreenGain());
+ }
+ if (pp.getOsdBlueGain() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_OSD_BLUE_GAIN, pp.getOsdBlueGain());
+ }
+ if (pp.getOsdRedOffset() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_OSD_RED_OFFSET, pp.getOsdRedOffset());
+ }
+ if (pp.getOsdGreenOffset() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_OSD_GREEN_OFFSET,
+ pp.getOsdGreenOffset());
+ }
+ if (pp.getOsdBlueOffset() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_OSD_BLUE_OFFSET, pp.getOsdBlueOffset());
+ }
+ if (pp.getOsdHue() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_OSD_HUE, pp.getOsdHue());
+ }
+ if (pp.getOsdSaturation() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_OSD_SATURATION, pp.getOsdSaturation());
+ }
+ if (pp.getOsdContrast() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_OSD_CONTRAST, pp.getOsdContrast());
+ }
+ if (pp.getColorTunerHueRed() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_HUE_RED,
+ pp.getColorTunerHueRed());
+ }
+ if (pp.getColorTunerHueGreen() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_HUE_GREEN,
+ pp.getColorTunerHueGreen());
+ }
+ if (pp.getColorTunerHueBlue() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_HUE_BLUE,
+ pp.getColorTunerHueBlue());
+ }
+ if (pp.getColorTunerHueCyan() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_HUE_CYAN,
+ pp.getColorTunerHueCyan());
+ }
+ if (pp.getColorTunerHueMagenta() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_HUE_MAGENTA,
+ pp.getColorTunerHueMagenta());
+ }
+ if (pp.getColorTunerHueYellow() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_HUE_YELLOW,
+ pp.getColorTunerHueYellow());
+ }
+ if (pp.getColorTunerHueFlesh() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_HUE_FLESH,
+ pp.getColorTunerHueFlesh());
+ }
+ if (pp.getColorTunerSaturationRed() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_RED,
+ pp.getColorTunerSaturationRed());
+ }
+ if (pp.getColorTunerSaturationGreen() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_GREEN,
+ pp.getColorTunerSaturationGreen());
+ }
+ if (pp.getColorTunerSaturationBlue() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_BLUE,
+ pp.getColorTunerSaturationBlue());
+ }
+ if (pp.getColorTunerSaturationCyan() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_CYAN,
+ pp.getColorTunerSaturationCyan());
+ }
+ if (pp.getColorTunerSaturationMagenta() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_MAGENTA,
+ pp.getColorTunerSaturationMagenta());
+ }
+ if (pp.getColorTunerSaturationYellow() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_YELLOW,
+ pp.getColorTunerSaturationYellow());
+ }
+ if (pp.getColorTunerSaturationFlesh() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_FLESH,
+ pp.getColorTunerSaturationFlesh());
+ }
+ if (pp.getColorTunerLuminanceRed() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_RED,
+ pp.getColorTunerLuminanceRed());
+ }
+ if (pp.getColorTunerLuminanceGreen() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_GREEN,
+ pp.getColorTunerLuminanceGreen());
+ }
+ if (pp.getColorTunerLuminanceBlue() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_BLUE,
+ pp.getColorTunerLuminanceBlue());
+ }
+ if (pp.getColorTunerLuminanceCyan() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_CYAN,
+ pp.getColorTunerLuminanceCyan());
+ }
+ if (pp.getColorTunerLuminanceMagenta() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_MAGENTA,
+ pp.getColorTunerLuminanceMagenta());
+ }
+ if (pp.getColorTunerLuminanceYellow() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_YELLOW,
+ pp.getColorTunerLuminanceYellow());
+ }
+ if (pp.getColorTunerLuminanceFlesh() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_FLESH,
+ pp.getColorTunerLuminanceFlesh());
+ }
+ if (pp.getPictureQualityEventType() > -1) {
+ bundle.putInt(PictureQuality.PARAMETER_PICTURE_QUALITY_EVENT_TYPE,
+ pp.getPictureQualityEventType());
+ }
+ if (pp.getFilmMode()) {
+ bundle.putBoolean(PictureQuality.PARAMETER_FILM_MODE, true);
+ }
+ if (pp.getBlueStretch()) {
+ bundle.putBoolean(PictureQuality.PARAMETER_BLUE_STRETCH, true);
+ }
+ if (pp.getColorTune()) {
+ bundle.putBoolean(PictureQuality.PARAMETER_COLOR_TUNE, true);
+ }
+ if (pp.getGlobeDimming()) {
+ bundle.putBoolean(PictureQuality.PARAMETER_GLOBAL_DIMMING, true);
+ }
+ if (pp.getAutoPictureQualityEnabled()) {
+ bundle.putBoolean(PictureQuality.PARAMETER_AUTO_PICTURE_QUALITY_ENABLED, true);
+ }
+ if (pp.getAutoSuperResolutionEnabled()) {
+ bundle.putBoolean(PictureQuality.PARAMETER_AUTO_SUPER_RESOLUTION_ENABLED, true);
+ }
+ if (pp.getGamutMapping()) {
+ bundle.putBoolean(PictureQuality.PARAMETER_GAMUT_MAPPING, true);
+ }
+ if (pp.getPcMode()) {
+ bundle.putBoolean(PictureQuality.PARAMETER_PC_MODE, true);
+ }
+ if (pp.getLowLatency()) {
+ bundle.putBoolean(PictureQuality.PARAMETER_LOW_LATENCY, true);
+ }
+ if (pp.getVrr()) {
+ bundle.putBoolean(PictureQuality.PARAMETER_VRR, true);
+ }
+ if (pp.getCvrr()) {
+ bundle.putBoolean(PictureQuality.PARAMETER_CVRR, true);
+ }
+ if (pp.getPanelInitMaxLuminceValid()) {
+ bundle.putBoolean(PictureQuality.PARAMETER_PANEL_INIT_MAX_LUMINCE_VALID, true);
+ }
+ if (pp.getColorTunerSwitch()) {
+ bundle.putBoolean(PictureQuality.PARAMETER_COLOR_TUNER_SWITCH, true);
+ }
+ if (pp.getElevenPointRed() != null) {
+ bundle.putIntArray(PictureQuality.PARAMETER_ELEVEN_POINT_RED,
+ pp.getElevenPointRed());
+ }
+ if (pp.getElevenPointBlue() != null) {
+ bundle.putIntArray(PictureQuality.PARAMETER_ELEVEN_POINT_RED,
+ pp.getElevenPointBlue());
+ }
+ if (pp.getElevenPointGreen() != null) {
+ bundle.putIntArray(PictureQuality.PARAMETER_ELEVEN_POINT_RED,
+ pp.getElevenPointGreen());
+ }
+ }
+ return bundle;
+ }
+
+ /**
+ * Convert PersistableBundle to PictureParameter List.
+ */
+ public static PictureParameter[] convertPersistableBundleToPictureParameterList(
+ PersistableBundle params) {
+ if (params == null) {
+ return null;
+ }
+ List<PictureParameter> pictureParams = new ArrayList<>();
+ if (params.containsKey(PictureQuality.PARAMETER_BRIGHTNESS)) {
+ pictureParams.add(PictureParameter.brightness(params.getLong(
+ PictureQuality.PARAMETER_BRIGHTNESS)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_CONTRAST)) {
+ pictureParams.add(PictureParameter.contrast(params.getInt(
+ PictureQuality.PARAMETER_CONTRAST)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_SHARPNESS)) {
+ pictureParams.add(PictureParameter.sharpness(params.getInt(
+ PictureQuality.PARAMETER_SHARPNESS)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_SATURATION)) {
+ pictureParams.add(PictureParameter.saturation(params.getInt(
+ PictureQuality.PARAMETER_SATURATION)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_HUE)) {
+ pictureParams.add(PictureParameter.hue(params.getInt(
+ PictureQuality.PARAMETER_HUE)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_BRIGHTNESS)) {
+ pictureParams.add(PictureParameter.colorTunerBrightness(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_BRIGHTNESS)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION)) {
+ pictureParams.add(PictureParameter.colorTunerSaturation(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_SATURATION)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_HUE)) {
+ pictureParams.add(PictureParameter.colorTunerHue(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_HUE)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_RED_OFFSET)) {
+ pictureParams.add(PictureParameter.colorTunerRedOffset(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_RED_OFFSET)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_GREEN_OFFSET)) {
+ pictureParams.add(PictureParameter.colorTunerGreenOffset(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_GREEN_OFFSET)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_BLUE_OFFSET)) {
+ pictureParams.add(PictureParameter.colorTunerBlueOffset(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_BLUE_OFFSET)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_RED_GAIN)) {
+ pictureParams.add(PictureParameter.colorTunerRedGain(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_RED_GAIN)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_GREEN_GAIN)) {
+ pictureParams.add(PictureParameter.colorTunerGreenGain(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_GREEN_GAIN)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_BLUE_GAIN)) {
+ pictureParams.add(PictureParameter.colorTunerBlueGain(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_BLUE_GAIN)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_NOISE_REDUCTION)) {
+ pictureParams.add(PictureParameter.noiseReduction(
+ (byte) params.getInt(PictureQuality.PARAMETER_NOISE_REDUCTION)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_MPEG_NOISE_REDUCTION)) {
+ pictureParams.add(PictureParameter.mpegNoiseReduction(
+ (byte) params.getInt(PictureQuality.PARAMETER_MPEG_NOISE_REDUCTION)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_FLESH_TONE)) {
+ pictureParams.add(PictureParameter.fleshTone(
+ (byte) params.getInt(PictureQuality.PARAMETER_FLESH_TONE)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_DECONTOUR)) {
+ pictureParams.add(PictureParameter.deContour(
+ (byte) params.getInt(PictureQuality.PARAMETER_DECONTOUR)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_DYNAMIC_LUMA_CONTROL)) {
+ pictureParams.add(PictureParameter.dynamicLumaControl(
+ (byte) params.getInt(PictureQuality.PARAMETER_DYNAMIC_LUMA_CONTROL)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_FILM_MODE)) {
+ pictureParams.add(PictureParameter.filmMode(params.getBoolean(
+ PictureQuality.PARAMETER_FILM_MODE)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_BLUE_STRETCH)) {
+ pictureParams.add(PictureParameter.blueStretch(params.getBoolean(
+ PictureQuality.PARAMETER_BLUE_STRETCH)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNE)) {
+ pictureParams.add(PictureParameter.colorTune(params.getBoolean(
+ PictureQuality.PARAMETER_COLOR_TUNE)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TEMPERATURE)) {
+ pictureParams.add(PictureParameter.colorTemperature(
+ (byte) params.getInt(
+ PictureQuality.PARAMETER_COLOR_TEMPERATURE)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_GLOBAL_DIMMING)) {
+ pictureParams.add(PictureParameter.globeDimming(params.getBoolean(
+ PictureQuality.PARAMETER_GLOBAL_DIMMING)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_AUTO_PICTURE_QUALITY_ENABLED)) {
+ pictureParams.add(PictureParameter.autoPictureQualityEnabled(params.getBoolean(
+ PictureQuality.PARAMETER_AUTO_PICTURE_QUALITY_ENABLED)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_AUTO_SUPER_RESOLUTION_ENABLED)) {
+ pictureParams.add(PictureParameter.autoSuperResolutionEnabled(params.getBoolean(
+ PictureQuality.PARAMETER_AUTO_SUPER_RESOLUTION_ENABLED)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_RED_GAIN)) {
+ pictureParams.add(PictureParameter.colorTemperatureRedGain(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_RED_GAIN)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_GREEN_GAIN)) {
+ pictureParams.add(PictureParameter.colorTemperatureGreenGain(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_GREEN_GAIN)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_BLUE_GAIN)) {
+ pictureParams.add(PictureParameter.colorTemperatureBlueGain(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_BLUE_GAIN)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_LEVEL_RANGE)) {
+ pictureParams.add(PictureParameter.levelRange(
+ (byte) params.getInt(PictureQuality.PARAMETER_LEVEL_RANGE)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_GAMUT_MAPPING)) {
+ pictureParams.add(PictureParameter.gamutMapping(params.getBoolean(
+ PictureQuality.PARAMETER_GAMUT_MAPPING)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_PC_MODE)) {
+ pictureParams.add(PictureParameter.pcMode(params.getBoolean(
+ PictureQuality.PARAMETER_PC_MODE)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_LOW_LATENCY)) {
+ pictureParams.add(PictureParameter.lowLatency(params.getBoolean(
+ PictureQuality.PARAMETER_LOW_LATENCY)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_VRR)) {
+ pictureParams.add(PictureParameter.vrr(params.getBoolean(
+ PictureQuality.PARAMETER_VRR)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_CVRR)) {
+ pictureParams.add(PictureParameter.cvrr(params.getBoolean(
+ PictureQuality.PARAMETER_CVRR)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_HDMI_RGB_RANGE)) {
+ pictureParams.add(PictureParameter.hdmiRgbRange(
+ (byte) params.getInt(PictureQuality.PARAMETER_HDMI_RGB_RANGE)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_SPACE)) {
+ pictureParams.add(PictureParameter.colorSpace(
+ (byte) params.getInt(PictureQuality.PARAMETER_COLOR_SPACE)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_PANEL_INIT_MAX_LUMINCE_NITS)) {
+ pictureParams.add(PictureParameter.panelInitMaxLuminceNits(
+ params.getInt(PictureQuality.PARAMETER_PANEL_INIT_MAX_LUMINCE_NITS)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_PANEL_INIT_MAX_LUMINCE_VALID)) {
+ pictureParams.add(PictureParameter.panelInitMaxLuminceValid(
+ params.getBoolean(PictureQuality.PARAMETER_PANEL_INIT_MAX_LUMINCE_VALID)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_GAMMA)) {
+ pictureParams.add(PictureParameter.gamma(
+ (byte) params.getInt(PictureQuality.PARAMETER_GAMMA)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TEMPERATURE_RED_OFFSET)) {
+ pictureParams.add(PictureParameter.colorTemperatureRedOffset(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TEMPERATURE_RED_OFFSET)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TEMPERATURE_GREEN_OFFSET)) {
+ pictureParams.add(PictureParameter.colorTemperatureGreenOffset(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TEMPERATURE_GREEN_OFFSET)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TEMPERATURE_BLUE_OFFSET)) {
+ pictureParams.add(PictureParameter.colorTemperatureBlueOffset(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TEMPERATURE_BLUE_OFFSET)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_ELEVEN_POINT_RED)) {
+ pictureParams.add(PictureParameter.elevenPointRed(params.getIntArray(
+ PictureQuality.PARAMETER_ELEVEN_POINT_RED)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_ELEVEN_POINT_GREEN)) {
+ pictureParams.add(PictureParameter.elevenPointGreen(params.getIntArray(
+ PictureQuality.PARAMETER_ELEVEN_POINT_GREEN)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_ELEVEN_POINT_BLUE)) {
+ pictureParams.add(PictureParameter.elevenPointBlue(params.getIntArray(
+ PictureQuality.PARAMETER_ELEVEN_POINT_BLUE)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_LOW_BLUE_LIGHT)) {
+ pictureParams.add(PictureParameter.lowBlueLight(
+ (byte) params.getInt(PictureQuality.PARAMETER_LOW_BLUE_LIGHT)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_LD_MODE)) {
+ pictureParams.add(PictureParameter.LdMode(
+ (byte) params.getInt(PictureQuality.PARAMETER_LD_MODE)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_OSD_RED_GAIN)) {
+ pictureParams.add(PictureParameter.osdRedGain(params.getInt(
+ PictureQuality.PARAMETER_OSD_RED_GAIN)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_OSD_GREEN_GAIN)) {
+ pictureParams.add(PictureParameter.osdGreenGain(params.getInt(
+ PictureQuality.PARAMETER_OSD_GREEN_GAIN)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_OSD_BLUE_GAIN)) {
+ pictureParams.add(PictureParameter.osdBlueGain(params.getInt(
+ PictureQuality.PARAMETER_OSD_BLUE_GAIN)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_OSD_RED_OFFSET)) {
+ pictureParams.add(PictureParameter.osdRedOffset(params.getInt(
+ PictureQuality.PARAMETER_OSD_RED_OFFSET)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_OSD_GREEN_OFFSET)) {
+ pictureParams.add(PictureParameter.osdGreenOffset(params.getInt(
+ PictureQuality.PARAMETER_OSD_GREEN_OFFSET)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_OSD_BLUE_OFFSET)) {
+ pictureParams.add(PictureParameter.osdBlueOffset(params.getInt(
+ PictureQuality.PARAMETER_OSD_BLUE_OFFSET)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_OSD_HUE)) {
+ pictureParams.add(PictureParameter.osdHue(params.getInt(
+ PictureQuality.PARAMETER_OSD_HUE)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_OSD_SATURATION)) {
+ pictureParams.add(PictureParameter.osdSaturation(params.getInt(
+ PictureQuality.PARAMETER_OSD_SATURATION)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_OSD_CONTRAST)) {
+ pictureParams.add(PictureParameter.osdContrast(params.getInt(
+ PictureQuality.PARAMETER_OSD_CONTRAST)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_SWITCH)) {
+ pictureParams.add(PictureParameter.colorTunerSwitch(params.getBoolean(
+ PictureQuality.PARAMETER_COLOR_TUNER_SWITCH)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_HUE_RED)) {
+ pictureParams.add(PictureParameter.colorTunerHueRed(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_HUE_RED)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_HUE_GREEN)) {
+ pictureParams.add(PictureParameter.colorTunerHueGreen(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_HUE_GREEN)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_HUE_BLUE)) {
+ pictureParams.add(PictureParameter.colorTunerHueBlue(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_HUE_BLUE)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_HUE_CYAN)) {
+ pictureParams.add(PictureParameter.colorTunerHueCyan(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_HUE_CYAN)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_HUE_MAGENTA)) {
+ pictureParams.add(PictureParameter.colorTunerHueMagenta(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_HUE_MAGENTA)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_HUE_YELLOW)) {
+ pictureParams.add(PictureParameter.colorTunerHueYellow(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_HUE_YELLOW)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_HUE_FLESH)) {
+ pictureParams.add(PictureParameter.colorTunerHueFlesh(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_HUE_FLESH)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_RED)) {
+ pictureParams.add(PictureParameter.colorTunerSaturationRed(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_RED)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_GREEN)) {
+ pictureParams.add(PictureParameter.colorTunerSaturationGreen(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_GREEN)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_BLUE)) {
+ pictureParams.add(PictureParameter.colorTunerSaturationBlue(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_BLUE)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_CYAN)) {
+ pictureParams.add(PictureParameter.colorTunerSaturationCyan(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_CYAN)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_MAGENTA)) {
+ pictureParams.add(PictureParameter.colorTunerSaturationMagenta(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_MAGENTA)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_YELLOW)) {
+ pictureParams.add(PictureParameter.colorTunerSaturationYellow(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_YELLOW)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_FLESH)) {
+ pictureParams.add(PictureParameter.colorTunerSaturationFlesh(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_FLESH)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_RED)) {
+ pictureParams.add(PictureParameter.colorTunerLuminanceRed(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_RED)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_GREEN)) {
+ pictureParams.add(PictureParameter.colorTunerLuminanceGreen(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_GREEN)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_BLUE)) {
+ pictureParams.add(PictureParameter.colorTunerLuminanceBlue(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_BLUE)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_CYAN)) {
+ pictureParams.add(PictureParameter.colorTunerLuminanceCyan(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_CYAN)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_MAGENTA)) {
+ pictureParams.add(PictureParameter.colorTunerLuminanceMagenta(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_MAGENTA)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_YELLOW)) {
+ pictureParams.add(PictureParameter.colorTunerLuminanceYellow(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_YELLOW)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_FLESH)) {
+ pictureParams.add(PictureParameter.colorTunerLuminanceFlesh(params.getInt(
+ PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_FLESH)));
+ }
+ if (params.containsKey(PictureQuality.PARAMETER_PICTURE_QUALITY_EVENT_TYPE)) {
+ pictureParams.add(PictureParameter.pictureQualityEventType(
+ (byte) params.getInt(PictureQuality.PARAMETER_PICTURE_QUALITY_EVENT_TYPE)));
+ }
+ return pictureParams.toArray(new PictureParameter[0]);
+ }
+
+ /**
+ * Convert SoundParameter List to PersistableBundle.
+ */
+ public static PersistableBundle convertSoundParameterListToPersistableBundle(
+ SoundParameter[] parameters) {
+ if (parameters == null) {
+ return null;
+ }
+
+ PersistableBundle bundle = new PersistableBundle();
+ for (SoundParameter sp: parameters) {
+ if (sp.getSurroundSoundEnabled()) {
+ bundle.putBoolean(SoundQuality.PARAMETER_SURROUND_SOUND, true);
+ }
+ if (sp.getSpeakersEnabled()) {
+ bundle.putBoolean(SoundQuality.PARAMETER_SPEAKERS, true);
+ }
+ if (sp.getAutoVolumeControl()) {
+ bundle.putBoolean(SoundQuality.PARAMETER_AUTO_VOLUME_CONTROL, true);
+ }
+ if (sp.getDtsDrc()) {
+ bundle.putBoolean(SoundQuality.PARAMETER_DTS_DRC, true);
+ }
+ if (sp.getSurroundSoundEnabled()) {
+ bundle.putBoolean(SoundQuality.PARAMETER_DIGITAL_OUTPUT_DELAY_MILLIS, true);
+ }
+ if (sp.getEnhancedAudioReturnChannelEnabled()) {
+ bundle.putBoolean(SoundQuality.PARAMETER_EARC, true);
+ }
+ if (sp.getBalance() > -1) {
+ bundle.putInt(SoundQuality.PARAMETER_BALANCE, sp.getBalance());
+ }
+ if (sp.getBass() > -1) {
+ bundle.putInt(SoundQuality.PARAMETER_BASS, sp.getBass());
+ }
+ if (sp.getTreble() > -1) {
+ bundle.putInt(SoundQuality.PARAMETER_TREBLE, sp.getTreble());
+ }
+ if (sp.getSpeakersDelayMs() > -1) {
+ bundle.putInt(SoundQuality.PARAMETER_SPEAKERS_DELAY_MILLIS,
+ sp.getSpeakersDelayMs());
+ }
+ if (sp.getDownmixMode() > -1) {
+ bundle.putInt(SoundQuality.PARAMETER_DOWN_MIX_MODE, sp.getDownmixMode());
+ }
+ if (sp.getSoundStyle() > -1) {
+ bundle.putInt(SoundQuality.PARAMETER_SOUND_STYLE, sp.getSoundStyle());
+ }
+ if (sp.getDigitalOutput() > -1) {
+ bundle.putInt(SoundQuality.PARAMETER_DIGITAL_OUTPUT_MODE,
+ sp.getDigitalOutput());
+ }
+ if (sp.getDolbyDialogueEnhancer() > -1) {
+ bundle.putInt(SoundQuality.PARAMETER_DIALOGUE_ENHANCER,
+ sp.getDolbyDialogueEnhancer());
+ }
+ if (sp.getDtsVirtualX().tbHdx) {
+ bundle.putBoolean(SoundQuality.PARAMETER_DTS_VIRTUAL_X_TBHDX, true);
+ }
+ if (sp.getDtsVirtualX().limiter) {
+ bundle.putBoolean(SoundQuality.PARAMETER_DTS_VIRTUAL_X_LIMITER, true);
+ }
+ if (sp.getDtsVirtualX().truSurroundX) {
+ bundle.putBoolean(SoundQuality.PARAMETER_DTS_VIRTUAL_X_TRU_SURROUND_X, true);
+ }
+ if (sp.getDtsVirtualX().truVolumeHd) {
+ bundle.putBoolean(SoundQuality.PARAMETER_DTS_VIRTUAL_X_TRU_VOLUME_HD, true);
+ }
+ if (sp.getDtsVirtualX().dialogClarity) {
+ bundle.putBoolean(SoundQuality.PARAMETER_DTS_VIRTUAL_X_DIALOG_CLARITY, true);
+ }
+ if (sp.getDtsVirtualX().definition) {
+ bundle.putBoolean(SoundQuality.PARAMETER_DTS_VIRTUAL_X_DEFINITION, true);
+ }
+ if (sp.getDtsVirtualX().height) {
+ bundle.putBoolean(SoundQuality.PARAMETER_DTS_VIRTUAL_X_HEIGHT, true);
+ }
+ if (sp.getDolbyAudioProcessing().soundMode > -1) {
+ bundle.putInt(SoundQuality.PARAMETER_DOLBY_AUDIO_PROCESSING_SOUND_MODE,
+ sp.getDolbyAudioProcessing().soundMode);
+ }
+ if (sp.getDolbyAudioProcessing().volumeLeveler) {
+ bundle.putBoolean(SoundQuality.PARAMETER_DOLBY_AUDIO_PROCESSING_VOLUME_LEVELER,
+ true);
+ }
+ if (sp.getDolbyAudioProcessing().surroundVirtualizer) {
+ bundle.putBoolean(
+ SoundQuality.PARAMETER_DOLBY_AUDIO_PROCESSING_SURROUND_VIRTUALIZER,
+ true);
+ }
+ if (sp.getDolbyAudioProcessing().dolbyAtmos) {
+ bundle.putBoolean(SoundQuality.PARAMETER_DOLBY_AUDIO_PROCESSING_DOLBY_ATMOS,
+ true);
+ }
+ }
+ return bundle;
+ }
+ /**
+ * Convert PersistableBundle to SoundParameter List.
+ */
+ public static SoundParameter[] convertPersistableBundleToSoundParameterList(
+ PersistableBundle params) {
+ if (params == null) {
+ return null;
+ }
+ //TODO: set EqualizerDetail
+ List<SoundParameter> soundParams = new ArrayList<>();
+ if (params.containsKey(SoundQuality.PARAMETER_BALANCE)) {
+ soundParams.add(SoundParameter.balance(params.getInt(
+ SoundQuality.PARAMETER_BALANCE)));
+ }
+ if (params.containsKey(SoundQuality.PARAMETER_BASS)) {
+ soundParams.add(SoundParameter.bass(params.getInt(SoundQuality.PARAMETER_BASS)));
+ }
+ if (params.containsKey(SoundQuality.PARAMETER_TREBLE)) {
+ soundParams.add(SoundParameter.treble(params.getInt(
+ SoundQuality.PARAMETER_TREBLE)));
+ }
+ if (params.containsKey(SoundQuality.PARAMETER_SURROUND_SOUND)) {
+ soundParams.add(SoundParameter.surroundSoundEnabled(params.getBoolean(
+ SoundQuality.PARAMETER_SURROUND_SOUND)));
+ }
+ if (params.containsKey(SoundQuality.PARAMETER_SPEAKERS)) {
+ soundParams.add(SoundParameter.speakersEnabled(params.getBoolean(
+ SoundQuality.PARAMETER_SPEAKERS)));
+ }
+ if (params.containsKey(SoundQuality.PARAMETER_SPEAKERS_DELAY_MILLIS)) {
+ soundParams.add(SoundParameter.speakersDelayMs(params.getInt(
+ SoundQuality.PARAMETER_SPEAKERS_DELAY_MILLIS)));
+ }
+ if (params.containsKey(SoundQuality.PARAMETER_AUTO_VOLUME_CONTROL)) {
+ soundParams.add(SoundParameter.autoVolumeControl(params.getBoolean(
+ SoundQuality.PARAMETER_AUTO_VOLUME_CONTROL)));
+ }
+ if (params.containsKey(SoundQuality.PARAMETER_DTS_DRC)) {
+ soundParams.add(SoundParameter.dtsDrc(params.getBoolean(
+ SoundQuality.PARAMETER_DTS_DRC)));
+ }
+ if (params.containsKey(SoundQuality.PARAMETER_DIGITAL_OUTPUT_DELAY_MILLIS)) {
+ soundParams.add(SoundParameter.surroundSoundEnabled(params.getBoolean(
+ SoundQuality.PARAMETER_DIGITAL_OUTPUT_DELAY_MILLIS)));
+ }
+ if (params.containsKey(SoundQuality.PARAMETER_EARC)) {
+ soundParams.add(SoundParameter.enhancedAudioReturnChannelEnabled(params.getBoolean(
+ SoundQuality.PARAMETER_EARC)));
+ }
+ if (params.containsKey(SoundQuality.PARAMETER_DOWN_MIX_MODE)) {
+ soundParams.add(SoundParameter.downmixMode((byte) params.getInt(
+ SoundQuality.PARAMETER_DOWN_MIX_MODE)));
+ }
+ if (params.containsKey(SoundQuality.PARAMETER_SOUND_STYLE)) {
+ soundParams.add(SoundParameter.soundStyle((byte) params.getInt(
+ SoundQuality.PARAMETER_SOUND_STYLE)));
+ }
+ if (params.containsKey(SoundQuality.PARAMETER_DIGITAL_OUTPUT_MODE)) {
+ soundParams.add(SoundParameter.digitalOutput((byte) params.getInt(
+ SoundQuality.PARAMETER_DIGITAL_OUTPUT_MODE)));
+ }
+ if (params.containsKey(SoundQuality.PARAMETER_DIALOGUE_ENHANCER)) {
+ soundParams.add(SoundParameter.dolbyDialogueEnhancer((byte) params.getInt(
+ SoundQuality.PARAMETER_DIALOGUE_ENHANCER)));
+ }
+
+ DolbyAudioProcessing dab = new DolbyAudioProcessing();
+ dab.soundMode =
+ (byte) params.getInt(SoundQuality.PARAMETER_DOLBY_AUDIO_PROCESSING_SOUND_MODE);
+ dab.volumeLeveler =
+ params.getBoolean(SoundQuality.PARAMETER_DOLBY_AUDIO_PROCESSING_VOLUME_LEVELER);
+ dab.surroundVirtualizer = params.getBoolean(
+ SoundQuality.PARAMETER_DOLBY_AUDIO_PROCESSING_SURROUND_VIRTUALIZER);
+ dab.dolbyAtmos =
+ params.getBoolean(SoundQuality.PARAMETER_DOLBY_AUDIO_PROCESSING_DOLBY_ATMOS);
+ soundParams.add(SoundParameter.dolbyAudioProcessing(dab));
+
+ DtsVirtualX dts = new DtsVirtualX();
+ dts.tbHdx = params.getBoolean(SoundQuality.PARAMETER_DTS_VIRTUAL_X_TBHDX);
+ dts.limiter = params.getBoolean(SoundQuality.PARAMETER_DTS_VIRTUAL_X_LIMITER);
+ dts.truSurroundX = params.getBoolean(
+ SoundQuality.PARAMETER_DTS_VIRTUAL_X_TRU_SURROUND_X);
+ dts.truVolumeHd = params.getBoolean(SoundQuality.PARAMETER_DTS_VIRTUAL_X_TRU_VOLUME_HD);
+ dts.dialogClarity = params.getBoolean(
+ SoundQuality.PARAMETER_DTS_VIRTUAL_X_DIALOG_CLARITY);
+ dts.definition = params.getBoolean(SoundQuality.PARAMETER_DTS_VIRTUAL_X_DEFINITION);
+ dts.height = params.getBoolean(SoundQuality.PARAMETER_DTS_VIRTUAL_X_HEIGHT);
+ soundParams.add(SoundParameter.dtsVirtualX(dts));
+
+ return soundParams.toArray(new SoundParameter[0]);
+ }
+
+ private static String persistableBundleToJson(PersistableBundle bundle) {
+ JSONObject json = new JSONObject();
+ for (String key : bundle.keySet()) {
+ Object value = bundle.get(key);
+ try {
+ if (value instanceof String) {
+ json.put(key, bundle.getString(key));
+ } else if (value instanceof Integer) {
+ json.put(key, bundle.getInt(key));
+ } else if (value instanceof Long) {
+ json.put(key, bundle.getLong(key));
+ } else if (value instanceof Boolean) {
+ json.put(key, bundle.getBoolean(key));
+ } else if (value instanceof Double) {
+ json.put(key, bundle.getDouble(key));
+ }
+ } catch (JSONException e) {
+ Log.e(TAG, "Unable to serialize ", e);
+ }
+ }
+ return json.toString();
+ }
+
+ private static PersistableBundle jsonToPersistableBundle(String jsonString) {
+ PersistableBundle bundle = new PersistableBundle();
+ if (jsonString != null) {
+ JSONObject jsonObject = null;
+ try {
+ jsonObject = new JSONObject(jsonString);
+
+ Iterator<String> keys = jsonObject.keys();
+ while (keys.hasNext()) {
+ String key = keys.next();
+ Object value = jsonObject.get(key);
+
+ if (value instanceof String) {
+ bundle.putString(key, (String) value);
+ } else if (value instanceof Integer) {
+ bundle.putInt(key, (Integer) value);
+ } else if (value instanceof Boolean) {
+ bundle.putBoolean(key, (Boolean) value);
+ } else if (value instanceof Double) {
+ bundle.putDouble(key, (Double) value);
+ } else if (value instanceof Long) {
+ bundle.putLong(key, (Long) value);
+ }
+ }
+ } catch (JSONException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ return bundle;
+ }
+
+ /**
+ * Populates the given map with the ID and generated UUID.
+ */
+ public static void populateTempIdMap(BiMap<Long, String> map, Long id) {
+ if (id != null && map.getValue(id) == null) {
+ String uuid;
+ int attempts = 0;
+ while (attempts < MAX_UUID_GENERATION_ATTEMPTS) {
+ uuid = UUID.randomUUID().toString();
+ if (map.getKey(uuid) == null) {
+ map.put(id, uuid);
+ return;
+ }
+ attempts++;
+ }
+ }
+ }
+
+ /**
+ * Get Content Values.
+ */
+ public static ContentValues getContentValues(Long dbId, Integer profileType, String name,
+ String packageName, String inputId, PersistableBundle params) {
+ ContentValues values = new ContentValues();
+ if (dbId != null) {
+ values.put(BaseParameters.PARAMETER_ID, dbId);
+ }
+ if (profileType != null) {
+ values.put(BaseParameters.PARAMETER_TYPE, profileType);
+ }
+ if (name != null) {
+ values.put(BaseParameters.PARAMETER_NAME, name);
+ }
+ if (packageName != null) {
+ values.put(BaseParameters.PARAMETER_PACKAGE, packageName);
+ }
+ if (inputId != null) {
+ values.put(BaseParameters.PARAMETER_INPUT_ID, inputId);
+ }
+ if (params != null) {
+ values.put(SETTINGS, persistableBundleToJson(params));
+ }
+ return values;
+ }
+
+ /**
+ * Get Media Profile Columns.
+ */
+ public static String[] getMediaProfileColumns(boolean includeParams) {
+ ArrayList<String> columns = new ArrayList<>(Arrays.asList(
+ BaseParameters.PARAMETER_ID,
+ BaseParameters.PARAMETER_TYPE,
+ BaseParameters.PARAMETER_NAME,
+ BaseParameters.PARAMETER_INPUT_ID,
+ BaseParameters.PARAMETER_PACKAGE)
+ );
+ if (includeParams) {
+ columns.add(SETTINGS);
+ }
+ return columns.toArray(new String[0]);
+ }
+
+ /**
+ * Convert cursor to Picture Profile with temporary UUID.
+ */
+ public static PictureProfile convertCursorToPictureProfileWithTempId(Cursor cursor,
+ BiMap<Long, String> map) {
+ return new PictureProfile(
+ getTempId(map, cursor),
+ getType(cursor),
+ getName(cursor),
+ getInputId(cursor),
+ getPackageName(cursor),
+ jsonToPersistableBundle(getSettingsString(cursor)),
+ PictureProfileHandle.NONE
+ );
+ }
+
+ /**
+ * Convert cursor to Sound Profile with temporary UUID.
+ */
+ public static SoundProfile convertCursorToSoundProfileWithTempId(Cursor cursor, BiMap<Long,
+ String> map) {
+ return new SoundProfile(
+ getTempId(map, cursor),
+ getType(cursor),
+ getName(cursor),
+ getInputId(cursor),
+ getPackageName(cursor),
+ jsonToPersistableBundle(getSettingsString(cursor)),
+ SoundProfileHandle.NONE
+ );
+ }
+
+ /**
+ * Convert parameter to byte array.
+ */
+ public static byte[] convertParameterToByteArray(List<String> names) {
+ /**
+ * TODO Add following to ParameterName & add conversion here.
+ * - PICTURE_QUALITY_EVENT_TYPE
+ * - PANEL_INIT_MAX_LUMINCE_NITS
+ */
+
+ HashSet<String> nameMap = new HashSet<>(names);
+
+ List<Byte> bytes = new ArrayList<>();
+ // Picture Quality parameters
+ if (nameMap.contains(PictureQuality.PARAMETER_BRIGHTNESS)) {
+ bytes.add(ParameterName.BRIGHTNESS);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_BRIGHTNESS)) {
+ bytes.add(ParameterName.BRIGHTNESS);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_CONTRAST)) {
+ bytes.add(ParameterName.CONTRAST);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_SHARPNESS)) {
+ bytes.add(ParameterName.SHARPNESS);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_SATURATION)) {
+ bytes.add(ParameterName.SATURATION);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_HUE)) {
+ bytes.add(ParameterName.HUE);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_BRIGHTNESS)) {
+ bytes.add(ParameterName.BRIGHTNESS);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_BRIGHTNESS)) {
+ bytes.add(ParameterName.COLOR_TUNER_BRIGHTNESS);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_SATURATION)) {
+ bytes.add(ParameterName.SATURATION);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION)) {
+ bytes.add(ParameterName.COLOR_TUNER_SATURATION);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_HUE)) {
+ bytes.add(ParameterName.HUE);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_HUE)) {
+ bytes.add(ParameterName.COLOR_TUNER_HUE);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_RED_OFFSET)) {
+ bytes.add(ParameterName.COLOR_TUNER_RED_OFFSET);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_GREEN_OFFSET)) {
+ bytes.add(ParameterName.COLOR_TUNER_GREEN_OFFSET);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_BLUE_OFFSET)) {
+ bytes.add(ParameterName.COLOR_TUNER_BLUE_OFFSET);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_RED_GAIN)) {
+ bytes.add(ParameterName.COLOR_TUNER_RED_GAIN);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_GREEN_GAIN)) {
+ bytes.add(ParameterName.COLOR_TUNER_GREEN_GAIN);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_BLUE_GAIN)) {
+ bytes.add(ParameterName.COLOR_TUNER_BLUE_GAIN);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_NOISE_REDUCTION)) {
+ bytes.add(ParameterName.NOISE_REDUCTION);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_MPEG_NOISE_REDUCTION)) {
+ bytes.add(ParameterName.MPEG_NOISE_REDUCTION);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_FLESH_TONE)) {
+ bytes.add(ParameterName.FLASH_TONE);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_DECONTOUR)) {
+ bytes.add(ParameterName.DE_CONTOUR);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_DYNAMIC_LUMA_CONTROL)) {
+ bytes.add(ParameterName.DYNAMIC_LUMA_CONTROL);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_FILM_MODE)) {
+ bytes.add(ParameterName.FILM_MODE);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_BLUE_STRETCH)) {
+ bytes.add(ParameterName.BLUE_STRETCH);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNE)) {
+ bytes.add(ParameterName.COLOR_TUNE);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TEMPERATURE)) {
+ bytes.add(ParameterName.COLOR_TEMPERATURE);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_GLOBAL_DIMMING)) {
+ bytes.add(ParameterName.GLOBE_DIMMING);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_AUTO_PICTURE_QUALITY_ENABLED)) {
+ bytes.add(ParameterName.AUTO_PICTUREQUALITY_ENABLED);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_AUTO_SUPER_RESOLUTION_ENABLED)) {
+ bytes.add(ParameterName.AUTO_SUPER_RESOLUTION_ENABLED);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_LEVEL_RANGE)) {
+ bytes.add(ParameterName.LEVEL_RANGE);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_GAMUT_MAPPING)) {
+ bytes.add(ParameterName.GAMUT_MAPPING);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_PC_MODE)) {
+ bytes.add(ParameterName.PC_MODE);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_LOW_LATENCY)) {
+ bytes.add(ParameterName.LOW_LATENCY);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_VRR)) {
+ bytes.add(ParameterName.VRR);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_CVRR)) {
+ bytes.add(ParameterName.CVRR);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_HDMI_RGB_RANGE)) {
+ bytes.add(ParameterName.HDMI_RGB_RANGE);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_SPACE)) {
+ bytes.add(ParameterName.COLOR_SPACE);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_PANEL_INIT_MAX_LUMINCE_VALID)) {
+ bytes.add(ParameterName.PANEL_INIT_MAX_LUMINCE_VALID);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_GAMMA)) {
+ bytes.add(ParameterName.GAMMA);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TEMPERATURE_RED_OFFSET)) {
+ bytes.add(ParameterName.COLOR_TEMPERATURE_RED_OFFSET);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TEMPERATURE_GREEN_OFFSET)) {
+ bytes.add(ParameterName.COLOR_TEMPERATURE_GREEN_OFFSET);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TEMPERATURE_BLUE_OFFSET)) {
+ bytes.add(ParameterName.COLOR_TEMPERATURE_BLUE_OFFSET);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_ELEVEN_POINT_RED)) {
+ bytes.add(ParameterName.ELEVEN_POINT_RED);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_ELEVEN_POINT_GREEN)) {
+ bytes.add(ParameterName.ELEVEN_POINT_GREEN);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_ELEVEN_POINT_BLUE)) {
+ bytes.add(ParameterName.ELEVEN_POINT_BLUE);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_LOW_BLUE_LIGHT)) {
+ bytes.add(ParameterName.LOW_BLUE_LIGHT);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_LD_MODE)) {
+ bytes.add(ParameterName.LD_MODE);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_OSD_RED_GAIN)) {
+ bytes.add(ParameterName.OSD_RED_GAIN);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_OSD_GREEN_GAIN)) {
+ bytes.add(ParameterName.OSD_GREEN_GAIN);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_OSD_BLUE_GAIN)) {
+ bytes.add(ParameterName.OSD_BLUE_GAIN);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_OSD_RED_OFFSET)) {
+ bytes.add(ParameterName.OSD_RED_OFFSET);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_OSD_GREEN_OFFSET)) {
+ bytes.add(ParameterName.OSD_GREEN_OFFSET);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_OSD_BLUE_OFFSET)) {
+ bytes.add(ParameterName.OSD_BLUE_OFFSET);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_OSD_HUE)) {
+ bytes.add(ParameterName.OSD_HUE);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_OSD_SATURATION)) {
+ bytes.add(ParameterName.OSD_SATURATION);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_OSD_CONTRAST)) {
+ bytes.add(ParameterName.OSD_CONTRAST);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_SWITCH)) {
+ bytes.add(ParameterName.COLOR_TUNER_SWITCH);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_HUE_RED)) {
+ bytes.add(ParameterName.COLOR_TUNER_HUE_RED);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_HUE_GREEN)) {
+ bytes.add(ParameterName.COLOR_TUNER_HUE_GREEN);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_HUE_BLUE)) {
+ bytes.add(ParameterName.COLOR_TUNER_HUE_BLUE);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_HUE_CYAN)) {
+ bytes.add(ParameterName.COLOR_TUNER_HUE_CYAN);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_HUE_MAGENTA)) {
+ bytes.add(ParameterName.COLOR_TUNER_HUE_MAGENTA);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_HUE_YELLOW)) {
+ bytes.add(ParameterName.COLOR_TUNER_HUE_YELLOW);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_HUE_FLESH)) {
+ bytes.add(ParameterName.COLOR_TUNER_HUE_FLESH);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_RED)) {
+ bytes.add(ParameterName.COLOR_TUNER_SATURATION_RED);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_GREEN)) {
+ bytes.add(ParameterName.COLOR_TUNER_SATURATION_GREEN);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_BLUE)) {
+ bytes.add(ParameterName.COLOR_TUNER_SATURATION_BLUE);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_CYAN)) {
+ bytes.add(ParameterName.COLOR_TUNER_SATURATION_CYAN);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_MAGENTA)) {
+ bytes.add(ParameterName.COLOR_TUNER_SATURATION_MAGENTA);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_YELLOW)) {
+ bytes.add(ParameterName.COLOR_TUNER_SATURATION_YELLOW);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_FLESH)) {
+ bytes.add(ParameterName.COLOR_TUNER_SATURATION_FLESH);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_RED)) {
+ bytes.add(ParameterName.COLOR_TUNER_LUMINANCE_RED);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_GREEN)) {
+ bytes.add(ParameterName.COLOR_TUNER_LUMINANCE_GREEN);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_BLUE)) {
+ bytes.add(ParameterName.COLOR_TUNER_LUMINANCE_BLUE);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_CYAN)) {
+ bytes.add(ParameterName.COLOR_TUNER_LUMINANCE_CYAN);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_MAGENTA)) {
+ bytes.add(ParameterName.COLOR_TUNER_LUMINANCE_MAGENTA);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_YELLOW)) {
+ bytes.add(ParameterName.COLOR_TUNER_LUMINANCE_YELLOW);
+ }
+ if (nameMap.contains(PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_FLESH)) {
+ bytes.add(ParameterName.COLOR_TUNER_LUMINANCE_FLESH);
+ }
+
+ // Sound Quality parameters
+ if (nameMap.contains(SoundQuality.PARAMETER_BALANCE)) {
+ bytes.add(ParameterName.BALANCE);
+ }
+ if (nameMap.contains(SoundQuality.PARAMETER_BASS)) {
+ bytes.add(ParameterName.BASS);
+ }
+ if (nameMap.contains(SoundQuality.PARAMETER_TREBLE)) {
+ bytes.add(ParameterName.TREBLE);
+ }
+ if (nameMap.contains(SoundQuality.PARAMETER_SURROUND_SOUND)) {
+ bytes.add(ParameterName.SURROUND_SOUND_ENABLED);
+ }
+ if (nameMap.contains(SoundQuality.PARAMETER_EQUALIZER_DETAIL)) {
+ bytes.add(ParameterName.EQUALIZER_DETAIL);
+ }
+ if (nameMap.contains(SoundQuality.PARAMETER_SPEAKERS)) {
+ bytes.add(ParameterName.SPEAKERS_ENABLED);
+ }
+ if (nameMap.contains(SoundQuality.PARAMETER_SPEAKERS_DELAY_MILLIS)) {
+ bytes.add(ParameterName.SPEAKERS_DELAY_MS);
+ }
+ if (nameMap.contains(SoundQuality.PARAMETER_EARC)) {
+ bytes.add(ParameterName.ENHANCED_AUDIO_RETURN_CHANNEL_ENABLED);
+ }
+ if (nameMap.contains(SoundQuality.PARAMETER_AUTO_VOLUME_CONTROL)) {
+ bytes.add(ParameterName.AUTO_VOLUME_CONTROL);
+ }
+ if (nameMap.contains(SoundQuality.PARAMETER_DOWN_MIX_MODE)) {
+ bytes.add(ParameterName.DOWNMIX_MODE);
+ }
+ if (nameMap.contains(SoundQuality.PARAMETER_DTS_DRC)) {
+ bytes.add(ParameterName.DTS_DRC);
+ }
+ if (nameMap.contains(SoundQuality.PARAMETER_DOLBY_AUDIO_PROCESSING)) {
+ bytes.add(ParameterName.DOLBY_AUDIO_PROCESSING);
+ }
+ if (nameMap.contains(SoundQuality.PARAMETER_DIALOGUE_ENHANCER)) {
+ bytes.add(ParameterName.DOLBY_DIALOGUE_ENHANCER);
+ }
+ if (nameMap.contains(SoundQuality.PARAMETER_DTS_VIRTUAL_X)) {
+ bytes.add(ParameterName.DTS_VIRTUAL_X);
+ }
+ if (nameMap.contains(SoundQuality.PARAMETER_DIGITAL_OUTPUT_DELAY_MILLIS)) {
+ bytes.add(ParameterName.DIGITAL_OUTPUT_DELAY_MS);
+ }
+ if (nameMap.contains(SoundQuality.PARAMETER_DIGITAL_OUTPUT_MODE)) {
+ bytes.add(ParameterName.DIGITAL_OUTPUT);
+ }
+ if (nameMap.contains(SoundQuality.PARAMETER_SOUND_STYLE)) {
+ bytes.add(ParameterName.SOUND_STYLE);
+ }
+
+ byte[] byteArray = new byte[bytes.size()];
+ for (int i = 0; i < bytes.size(); i++) {
+ byteArray[i] = bytes.get(i);
+ }
+ return byteArray;
+ }
+
+ /**
+ * Get Parameter Name based on byte.
+ */
+ public static String getParameterName(byte pn) {
+ Map<Byte, String> parameterNameMap = new HashMap<>();
+ parameterNameMap.put(ParameterName.BRIGHTNESS, PictureQuality.PARAMETER_BRIGHTNESS);
+ parameterNameMap.put(ParameterName.CONTRAST, PictureQuality.PARAMETER_CONTRAST);
+ parameterNameMap.put(ParameterName.SHARPNESS, PictureQuality.PARAMETER_SHARPNESS);
+ parameterNameMap.put(ParameterName.SATURATION, PictureQuality.PARAMETER_SATURATION);
+ parameterNameMap.put(ParameterName.HUE, PictureQuality.PARAMETER_HUE);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_BRIGHTNESS,
+ PictureQuality.PARAMETER_COLOR_TUNER_BRIGHTNESS);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_SATURATION,
+ PictureQuality.PARAMETER_COLOR_TUNER_SATURATION);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_HUE,
+ PictureQuality.PARAMETER_COLOR_TUNER_HUE);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_RED_OFFSET,
+ PictureQuality.PARAMETER_COLOR_TUNER_RED_OFFSET);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_GREEN_OFFSET,
+ PictureQuality.PARAMETER_COLOR_TUNER_GREEN_OFFSET);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_BLUE_OFFSET,
+ PictureQuality.PARAMETER_COLOR_TUNER_BLUE_OFFSET);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_RED_GAIN,
+ PictureQuality.PARAMETER_COLOR_TUNER_RED_GAIN);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_GREEN_GAIN,
+ PictureQuality.PARAMETER_COLOR_TUNER_GREEN_GAIN);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_BLUE_GAIN,
+ PictureQuality.PARAMETER_COLOR_TUNER_BLUE_GAIN);
+ parameterNameMap.put(ParameterName.NOISE_REDUCTION,
+ PictureQuality.PARAMETER_NOISE_REDUCTION);
+ parameterNameMap.put(ParameterName.MPEG_NOISE_REDUCTION,
+ PictureQuality.PARAMETER_MPEG_NOISE_REDUCTION);
+ parameterNameMap.put(ParameterName.FLASH_TONE, PictureQuality.PARAMETER_FLESH_TONE);
+ parameterNameMap.put(ParameterName.DE_CONTOUR, PictureQuality.PARAMETER_DECONTOUR);
+ parameterNameMap.put(ParameterName.DYNAMIC_LUMA_CONTROL,
+ PictureQuality.PARAMETER_DYNAMIC_LUMA_CONTROL);
+ parameterNameMap.put(ParameterName.FILM_MODE,
+ PictureQuality.PARAMETER_FILM_MODE);
+ parameterNameMap.put(ParameterName.BLACK_STRETCH,
+ PictureQuality.PARAMETER_BLACK_STRETCH);
+ parameterNameMap.put(ParameterName.BLUE_STRETCH,
+ PictureQuality.PARAMETER_BLUE_STRETCH);
+ parameterNameMap.put(ParameterName.COLOR_TUNE,
+ PictureQuality.PARAMETER_COLOR_TUNE);
+ parameterNameMap.put(ParameterName.COLOR_TEMPERATURE,
+ PictureQuality.PARAMETER_COLOR_TEMPERATURE);
+ parameterNameMap.put(ParameterName.GLOBE_DIMMING,
+ PictureQuality.PARAMETER_GLOBAL_DIMMING);
+ parameterNameMap.put(ParameterName.AUTO_PICTUREQUALITY_ENABLED,
+ PictureQuality.PARAMETER_AUTO_PICTURE_QUALITY_ENABLED);
+ parameterNameMap.put(ParameterName.AUTO_SUPER_RESOLUTION_ENABLED,
+ PictureQuality.PARAMETER_AUTO_SUPER_RESOLUTION_ENABLED);
+ parameterNameMap.put(ParameterName.LEVEL_RANGE, PictureQuality.PARAMETER_LEVEL_RANGE);
+ parameterNameMap.put(ParameterName.GAMUT_MAPPING,
+ PictureQuality.PARAMETER_GAMUT_MAPPING);
+ parameterNameMap.put(ParameterName.PC_MODE, PictureQuality.PARAMETER_PC_MODE);
+ parameterNameMap.put(ParameterName.LOW_LATENCY, PictureQuality.PARAMETER_LOW_LATENCY);
+ parameterNameMap.put(ParameterName.VRR, PictureQuality.PARAMETER_VRR);
+ parameterNameMap.put(ParameterName.CVRR, PictureQuality.PARAMETER_CVRR);
+ parameterNameMap.put(ParameterName.HDMI_RGB_RANGE,
+ PictureQuality.PARAMETER_HDMI_RGB_RANGE);
+ parameterNameMap.put(ParameterName.COLOR_SPACE, PictureQuality.PARAMETER_COLOR_SPACE);
+ parameterNameMap.put(ParameterName.PANEL_INIT_MAX_LUMINCE_VALID,
+ PictureQuality.PARAMETER_PANEL_INIT_MAX_LUMINCE_VALID);
+ parameterNameMap.put(ParameterName.GAMMA, PictureQuality.PARAMETER_GAMMA);
+ parameterNameMap.put(ParameterName.COLOR_TEMPERATURE_RED_GAIN,
+ PictureQuality.PARAMETER_COLOR_TEMPERATURE_RED_GAIN);
+ parameterNameMap.put(ParameterName.COLOR_TEMPERATURE_GREEN_GAIN,
+ PictureQuality.PARAMETER_COLOR_TEMPERATURE_GREEN_GAIN);
+ parameterNameMap.put(ParameterName.COLOR_TEMPERATURE_BLUE_GAIN,
+ PictureQuality.PARAMETER_COLOR_TEMPERATURE_BLUE_GAIN);
+ parameterNameMap.put(ParameterName.COLOR_TEMPERATURE_RED_OFFSET,
+ PictureQuality.PARAMETER_COLOR_TEMPERATURE_RED_OFFSET);
+ parameterNameMap.put(ParameterName.COLOR_TEMPERATURE_GREEN_OFFSET,
+ PictureQuality.PARAMETER_COLOR_TEMPERATURE_GREEN_OFFSET);
+ parameterNameMap.put(ParameterName.COLOR_TEMPERATURE_BLUE_OFFSET,
+ PictureQuality.PARAMETER_COLOR_TEMPERATURE_BLUE_OFFSET);
+ parameterNameMap.put(ParameterName.ELEVEN_POINT_RED,
+ PictureQuality.PARAMETER_ELEVEN_POINT_RED);
+ parameterNameMap.put(ParameterName.ELEVEN_POINT_GREEN,
+ PictureQuality.PARAMETER_ELEVEN_POINT_GREEN);
+ parameterNameMap.put(ParameterName.ELEVEN_POINT_BLUE,
+ PictureQuality.PARAMETER_ELEVEN_POINT_BLUE);
+ parameterNameMap.put(ParameterName.LOW_BLUE_LIGHT,
+ PictureQuality.PARAMETER_LOW_BLUE_LIGHT);
+ parameterNameMap.put(ParameterName.LD_MODE, PictureQuality.PARAMETER_LD_MODE);
+ parameterNameMap.put(ParameterName.OSD_RED_GAIN, PictureQuality.PARAMETER_OSD_RED_GAIN);
+ parameterNameMap.put(ParameterName.OSD_GREEN_GAIN,
+ PictureQuality.PARAMETER_OSD_GREEN_GAIN);
+ parameterNameMap.put(ParameterName.OSD_BLUE_GAIN,
+ PictureQuality.PARAMETER_OSD_BLUE_GAIN);
+ parameterNameMap.put(ParameterName.OSD_RED_OFFSET,
+ PictureQuality.PARAMETER_OSD_RED_OFFSET);
+ parameterNameMap.put(ParameterName.OSD_GREEN_OFFSET,
+ PictureQuality.PARAMETER_OSD_GREEN_OFFSET);
+ parameterNameMap.put(ParameterName.OSD_BLUE_OFFSET,
+ PictureQuality.PARAMETER_OSD_BLUE_OFFSET);
+ parameterNameMap.put(ParameterName.OSD_HUE, PictureQuality.PARAMETER_OSD_HUE);
+ parameterNameMap.put(ParameterName.OSD_SATURATION,
+ PictureQuality.PARAMETER_OSD_SATURATION);
+ parameterNameMap.put(ParameterName.OSD_CONTRAST,
+ PictureQuality.PARAMETER_OSD_CONTRAST);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_SWITCH,
+ PictureQuality.PARAMETER_COLOR_TUNER_SWITCH);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_HUE_RED,
+ PictureQuality.PARAMETER_COLOR_TUNER_HUE_RED);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_HUE_GREEN,
+ PictureQuality.PARAMETER_COLOR_TUNER_HUE_GREEN);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_HUE_BLUE,
+ PictureQuality.PARAMETER_COLOR_TUNER_HUE_BLUE);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_HUE_CYAN,
+ PictureQuality.PARAMETER_COLOR_TUNER_HUE_CYAN);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_HUE_MAGENTA,
+ PictureQuality.PARAMETER_COLOR_TUNER_HUE_MAGENTA);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_HUE_YELLOW,
+ PictureQuality.PARAMETER_COLOR_TUNER_HUE_YELLOW);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_HUE_FLESH,
+ PictureQuality.PARAMETER_COLOR_TUNER_HUE_FLESH);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_SATURATION_RED,
+ PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_RED);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_SATURATION_GREEN,
+ PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_GREEN);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_SATURATION_BLUE,
+ PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_BLUE);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_SATURATION_CYAN,
+ PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_CYAN);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_SATURATION_MAGENTA,
+ PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_MAGENTA);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_SATURATION_YELLOW,
+ PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_YELLOW);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_SATURATION_FLESH,
+ PictureQuality.PARAMETER_COLOR_TUNER_SATURATION_FLESH);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_LUMINANCE_RED,
+ PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_RED);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_LUMINANCE_GREEN,
+ PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_GREEN);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_LUMINANCE_BLUE,
+ PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_BLUE);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_LUMINANCE_CYAN,
+ PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_CYAN);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_LUMINANCE_MAGENTA,
+ PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_MAGENTA);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_LUMINANCE_YELLOW,
+ PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_YELLOW);
+ parameterNameMap.put(ParameterName.COLOR_TUNER_LUMINANCE_FLESH,
+ PictureQuality.PARAMETER_COLOR_TUNER_LUMINANCE_FLESH);
+ parameterNameMap.put(ParameterName.BALANCE, SoundQuality.PARAMETER_BALANCE);
+ parameterNameMap.put(ParameterName.BASS, SoundQuality.PARAMETER_BASS);
+ parameterNameMap.put(ParameterName.TREBLE, SoundQuality.PARAMETER_TREBLE);
+ parameterNameMap.put(ParameterName.SURROUND_SOUND_ENABLED,
+ SoundQuality.PARAMETER_SURROUND_SOUND);
+ parameterNameMap.put(ParameterName.EQUALIZER_DETAIL,
+ SoundQuality.PARAMETER_EQUALIZER_DETAIL);
+ parameterNameMap.put(ParameterName.SPEAKERS_ENABLED, SoundQuality.PARAMETER_SPEAKERS);
+ parameterNameMap.put(ParameterName.SPEAKERS_DELAY_MS,
+ SoundQuality.PARAMETER_SPEAKERS_DELAY_MILLIS);
+ parameterNameMap.put(ParameterName.ENHANCED_AUDIO_RETURN_CHANNEL_ENABLED,
+ SoundQuality.PARAMETER_EARC);
+ parameterNameMap.put(ParameterName.AUTO_VOLUME_CONTROL,
+ SoundQuality.PARAMETER_AUTO_VOLUME_CONTROL);
+ parameterNameMap.put(ParameterName.DOWNMIX_MODE, SoundQuality.PARAMETER_DOWN_MIX_MODE);
+ parameterNameMap.put(ParameterName.DTS_DRC, SoundQuality.PARAMETER_DTS_DRC);
+ parameterNameMap.put(ParameterName.DOLBY_AUDIO_PROCESSING,
+ SoundQuality.PARAMETER_DOLBY_AUDIO_PROCESSING);
+ parameterNameMap.put(ParameterName.DOLBY_DIALOGUE_ENHANCER,
+ SoundQuality.PARAMETER_DIALOGUE_ENHANCER);
+ parameterNameMap.put(ParameterName.DTS_VIRTUAL_X,
+ SoundQuality.PARAMETER_DTS_VIRTUAL_X);
+ parameterNameMap.put(ParameterName.DIGITAL_OUTPUT,
+ SoundQuality.PARAMETER_DIGITAL_OUTPUT_MODE);
+ parameterNameMap.put(ParameterName.DIGITAL_OUTPUT_DELAY_MS,
+ SoundQuality.PARAMETER_DIGITAL_OUTPUT_DELAY_MILLIS);
+ parameterNameMap.put(ParameterName.SOUND_STYLE, SoundQuality.PARAMETER_SOUND_STYLE);
+
+ return parameterNameMap.get(pn);
+ }
+
+ /**
+ * Convert ParameterRange to a Bundle.
+ */
+ public static Bundle convertToCaps(int type, ParameterRange range) {
+ Bundle bundle = new Bundle();
+ if (range == null || range.numRange == null) {
+ return bundle;
+ }
+ type -= 1;
+ if (type == ParameterDefaultValue.intDefault) {
+ bundle.putObject(ParameterCapability.CAPABILITY_MIN, range.numRange.getIntMinMax()[0]);
+ bundle.putObject(ParameterCapability.CAPABILITY_MAX, range.numRange.getIntMinMax()[1]);
+ } else if (type == ParameterDefaultValue.doubleDefault) {
+ bundle.putObject(ParameterCapability.CAPABILITY_MIN,
+ range.numRange.getDoubleMinMax()[0]);
+ bundle.putObject(ParameterCapability.CAPABILITY_MAX,
+ range.numRange.getDoubleMinMax()[1]);
+ } else if (type == ParameterDefaultValue.longDefault) {
+ bundle.putObject(ParameterCapability.CAPABILITY_MIN, range.numRange.getLongMinMax()[0]);
+ bundle.putObject(ParameterCapability.CAPABILITY_MAX, range.numRange.getLongMinMax()[1]);
+ }
+ return bundle;
+ }
+
+ private static String getTempId(BiMap<Long, String> map, Cursor cursor) {
+ int colIndex = cursor.getColumnIndex(BaseParameters.PARAMETER_ID);
+ Long dbId = colIndex != -1 ? cursor.getLong(colIndex) : null;
+ populateTempIdMap(map, dbId);
+ return map.getValue(dbId);
+ }
+
+ private static int getType(Cursor cursor) {
+ int colIndex = cursor.getColumnIndex(BaseParameters.PARAMETER_TYPE);
+ return colIndex != -1 ? cursor.getInt(colIndex) : 0;
+ }
+
+ private static String getName(Cursor cursor) {
+ int colIndex = cursor.getColumnIndex(BaseParameters.PARAMETER_NAME);
+ return colIndex != -1 ? cursor.getString(colIndex) : null;
+ }
+
+ private static String getInputId(Cursor cursor) {
+ int colIndex = cursor.getColumnIndex(BaseParameters.PARAMETER_INPUT_ID);
+ return colIndex != -1 ? cursor.getString(colIndex) : null;
+ }
+
+ private static String getPackageName(Cursor cursor) {
+ int colIndex = cursor.getColumnIndex(BaseParameters.PARAMETER_PACKAGE);
+ return colIndex != -1 ? cursor.getString(colIndex) : null;
+ }
+
+ private static String getSettingsString(Cursor cursor) {
+ int colIndex = cursor.getColumnIndex(SETTINGS);
+ return colIndex != -1 ? cursor.getString(colIndex) : null;
+ }
+
+ private MediaQualityUtils() {
+
+ }
+}
diff --git a/services/core/java/com/android/server/memory/OWNERS b/services/core/java/com/android/server/memory/OWNERS
new file mode 100644
index 000000000000..dc0e89892e43
--- /dev/null
+++ b/services/core/java/com/android/server/memory/OWNERS
@@ -0,0 +1,3 @@
+include /MEMORY_OWNERS
+
+per-file ZramMaintenance.java = kawasin@google.com
diff --git a/services/core/java/com/android/server/ZramMaintenance.java b/services/core/java/com/android/server/memory/ZramMaintenance.java
index cdb48122e321..560d2d741dd9 100644
--- a/services/core/java/com/android/server/ZramMaintenance.java
+++ b/services/core/java/com/android/server/memory/ZramMaintenance.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server;
+package com.android.server.memory;
import android.app.job.JobInfo;
import android.app.job.JobParameters;
@@ -24,11 +24,15 @@ import android.content.ComponentName;
import android.content.Context;
import android.os.IBinder;
import android.os.IMmd;
+import android.os.PersistableBundle;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemProperties;
+import android.provider.DeviceConfig;
import android.util.Slog;
+import com.android.internal.annotations.VisibleForTesting;
+
import java.time.Duration;
/**
@@ -46,43 +50,45 @@ public class ZramMaintenance extends JobService {
private static final String TAG = ZramMaintenance.class.getName();
// Job id must be unique across all clients of the same uid. ZramMaintenance uses the bug number
// as the job id.
- private static final int JOB_ID = 375432472;
+ @VisibleForTesting
+ public static final int JOB_ID = 375432472;
private static final ComponentName sZramMaintenance =
new ComponentName("android", ZramMaintenance.class.getName());
+ @VisibleForTesting
+ public static final String KEY_CHECK_STATUS = "check_status";
+ private static final String SYSTEM_PROPERTY_PREFIX = "mm.";
private static final String FIRST_DELAY_SECONDS_PROP =
- "mm.zram.maintenance.first_delay_seconds";
+ "zram.maintenance.first_delay_seconds";
// The default is 1 hour.
private static final long DEFAULT_FIRST_DELAY_SECONDS = 3600;
private static final String PERIODIC_DELAY_SECONDS_PROP =
- "mm.zram.maintenance.periodic_delay_seconds";
+ "zram.maintenance.periodic_delay_seconds";
// The default is 1 hour.
private static final long DEFAULT_PERIODIC_DELAY_SECONDS = 3600;
private static final String REQUIRE_DEVICE_IDLE_PROP =
- "mm.zram.maintenance.require_device_idle";
+ "zram.maintenance.require_device_idle";
private static final boolean DEFAULT_REQUIRE_DEVICE_IDLE =
true;
private static final String REQUIRE_BATTERY_NOT_LOW_PROP =
- "mm.zram.maintenance.require_battry_not_low";
+ "zram.maintenance.require_battery_not_low";
private static final boolean DEFAULT_REQUIRE_BATTERY_NOT_LOW =
true;
@Override
public boolean onStartJob(JobParameters params) {
- IBinder binder = ServiceManager.getService("mmd");
- if (binder != null) {
- IMmd mmd = IMmd.Stub.asInterface(binder);
- try {
- mmd.doZramMaintenance();
- } catch (RemoteException e) {
- Slog.e(TAG, "Failed to doZramMaintenance", e);
+ new Thread("ZramMaintenance") {
+ @Override
+ public void run() {
+ try {
+ IBinder binder = ServiceManager.getService("mmd");
+ IMmd mmd = IMmd.Stub.asInterface(binder);
+ startJob(ZramMaintenance.this, params, mmd);
+ } finally {
+ jobFinished(params, false);
+ }
}
- } else {
- Slog.w(TAG, "binder not found");
- }
- Duration delay = Duration.ofSeconds(SystemProperties.getLong(PERIODIC_DELAY_SECONDS_PROP,
- DEFAULT_PERIODIC_DELAY_SECONDS));
- scheduleZramMaintenance(this, delay);
+ }.start();
return true;
}
@@ -92,27 +98,75 @@ public class ZramMaintenance extends JobService {
}
/**
+ * This is public to test ZramMaintenance logic.
+ *
+ * <p>
+ * We need to pass mmd as parameter because we can't mock "IMmd.Stub.asInterface".
+ *
+ * <p>
+ * Since IMmd.isZramMaintenanceSupported() is blocking call, this method should be executed on
+ * a worker thread.
+ */
+ @VisibleForTesting
+ public static void startJob(Context context, JobParameters params, IMmd mmd) {
+ boolean checkStatus = params.getExtras().getBoolean(KEY_CHECK_STATUS);
+ if (mmd != null) {
+ try {
+ if (checkStatus && !mmd.isZramMaintenanceSupported()) {
+ Slog.i(TAG, "zram maintenance is not supported");
+ return;
+ }
+ // Status check is required before the first doZramMaintenanceAsync() call once.
+ checkStatus = false;
+
+ mmd.doZramMaintenanceAsync();
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Failed to binder call to mmd", e);
+ }
+ } else {
+ Slog.w(TAG, "binder not found");
+ }
+ Duration delay = Duration.ofSeconds(getLongProperty(PERIODIC_DELAY_SECONDS_PROP,
+ DEFAULT_PERIODIC_DELAY_SECONDS));
+ scheduleZramMaintenance(context, delay, checkStatus);
+ }
+
+ /**
* Starts periodical zram maintenance.
*/
public static void startZramMaintenance(Context context) {
Duration delay = Duration.ofSeconds(
- SystemProperties.getLong(FIRST_DELAY_SECONDS_PROP, DEFAULT_FIRST_DELAY_SECONDS));
- scheduleZramMaintenance(context, delay);
+ getLongProperty(FIRST_DELAY_SECONDS_PROP, DEFAULT_FIRST_DELAY_SECONDS));
+ scheduleZramMaintenance(context, delay, true);
}
- private static void scheduleZramMaintenance(Context context, Duration delay) {
+ private static void scheduleZramMaintenance(Context context, Duration delay,
+ boolean checkStatus) {
JobScheduler js = context.getSystemService(JobScheduler.class);
if (js != null) {
+ final PersistableBundle bundle = new PersistableBundle();
+ bundle.putBoolean(KEY_CHECK_STATUS, checkStatus);
js.schedule(new JobInfo.Builder(JOB_ID, sZramMaintenance)
.setMinimumLatency(delay.toMillis())
.setRequiresDeviceIdle(
- SystemProperties.getBoolean(REQUIRE_DEVICE_IDLE_PROP,
+ getBooleanProperty(REQUIRE_DEVICE_IDLE_PROP,
DEFAULT_REQUIRE_DEVICE_IDLE))
.setRequiresBatteryNotLow(
- SystemProperties.getBoolean(REQUIRE_BATTERY_NOT_LOW_PROP,
+ getBooleanProperty(REQUIRE_BATTERY_NOT_LOW_PROP,
DEFAULT_REQUIRE_BATTERY_NOT_LOW))
+ .setExtras(bundle)
.build());
}
}
+
+ private static long getLongProperty(String name, long defaultValue) {
+ return DeviceConfig.getLong(DeviceConfig.NAMESPACE_MM, name,
+ SystemProperties.getLong(SYSTEM_PROPERTY_PREFIX + name, defaultValue));
+ }
+
+ private static boolean getBooleanProperty(String name, boolean defaultValue) {
+ return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_MM, name,
+ SystemProperties.getBoolean(SYSTEM_PROPERTY_PREFIX + name, defaultValue));
+ }
}
diff --git a/services/core/java/com/android/server/notification/GroupHelper.java b/services/core/java/com/android/server/notification/GroupHelper.java
index e47f8ae9d3a5..02f817e9cd44 100644
--- a/services/core/java/com/android/server/notification/GroupHelper.java
+++ b/services/core/java/com/android/server/notification/GroupHelper.java
@@ -146,18 +146,27 @@ public class GroupHelper {
private static List<NotificationSectioner> NOTIFICATION_SHADE_SECTIONS =
getNotificationShadeSections();
+ private static List<NotificationSectioner> NOTIFICATION_BUNDLE_SECTIONS;
+
private static List<NotificationSectioner> getNotificationShadeSections() {
ArrayList<NotificationSectioner> sectionsList = new ArrayList<>();
if (android.service.notification.Flags.notificationClassification()) {
sectionsList.addAll(List.of(
new NotificationSectioner("PromotionsSection", 0, (record) ->
- NotificationChannel.PROMOTIONS_ID.equals(record.getChannel().getId())),
+ NotificationChannel.PROMOTIONS_ID.equals(record.getChannel().getId())
+ && record.getImportance() < NotificationManager.IMPORTANCE_DEFAULT),
new NotificationSectioner("SocialSection", 0, (record) ->
- NotificationChannel.SOCIAL_MEDIA_ID.equals(record.getChannel().getId())),
+ NotificationChannel.SOCIAL_MEDIA_ID.equals(record.getChannel().getId())
+ && record.getImportance() < NotificationManager.IMPORTANCE_DEFAULT),
new NotificationSectioner("NewsSection", 0, (record) ->
- NotificationChannel.NEWS_ID.equals(record.getChannel().getId())),
+ NotificationChannel.NEWS_ID.equals(record.getChannel().getId())
+ && record.getImportance() < NotificationManager.IMPORTANCE_DEFAULT),
new NotificationSectioner("RecsSection", 0, (record) ->
- NotificationChannel.RECS_ID.equals(record.getChannel().getId()))));
+ NotificationChannel.RECS_ID.equals(record.getChannel().getId())
+ && record.getImportance() < NotificationManager.IMPORTANCE_DEFAULT)
+ ));
+
+ NOTIFICATION_BUNDLE_SECTIONS = new ArrayList<>(sectionsList);
}
if (Flags.notificationForceGroupConversations()) {
@@ -828,7 +837,7 @@ public class GroupHelper {
}
moveNotificationsToNewSection(record.getUserId(), pkgName,
List.of(new NotificationMoveOp(record, null, fullAggregateGroupKey)),
- REGROUP_REASON_BUNDLE);
+ Map.of(record.getKey(), REGROUP_REASON_BUNDLE));
return;
}
}
@@ -895,7 +904,12 @@ public class GroupHelper {
return false;
}
- return NotificationChannel.SYSTEM_RESERVED_IDS.contains(record.getChannel().getId());
+ return isInBundleSection(record);
+ }
+
+ private static boolean isInBundleSection(final NotificationRecord record) {
+ final NotificationSectioner sectioner = getSection(record);
+ return (sectioner != null && NOTIFICATION_BUNDLE_SECTIONS.contains(sectioner));
}
/**
@@ -1084,10 +1098,10 @@ public class GroupHelper {
FullyQualifiedGroupKey newGroup) { }
/**
- * Called when a notification channel is updated (channel attributes have changed),
- * so that this helper can adjust the aggregate groups by moving children
- * if their section has changed.
- * see {@link #onNotificationPostedWithDelay(NotificationRecord, List, Map)}
+ * Called when a notification channel is updated (channel attributes have changed), so that this
+ * helper can adjust the aggregate groups by moving children if their section has changed. see
+ * {@link #onNotificationPostedWithDelay(NotificationRecord, List, Map)}
+ *
* @param userId the userId of the channel
* @param pkgName the channel's package
* @param channel the channel that was updated
@@ -1095,19 +1109,30 @@ public class GroupHelper {
*/
@FlaggedApi(android.service.notification.Flags.FLAG_NOTIFICATION_FORCE_GROUPING)
public void onChannelUpdated(final int userId, final String pkgName,
- final NotificationChannel channel, final List<NotificationRecord> notificationList) {
+ final NotificationChannel channel, final List<NotificationRecord> notificationList,
+ ArrayMap<String, NotificationRecord> summaryByGroupKey) {
synchronized (mAggregatedNotifications) {
+ final ArrayMap<String, Integer> regroupingReasonMap = new ArrayMap<>();
ArrayMap<String, NotificationRecord> notificationsToCheck = new ArrayMap<>();
for (NotificationRecord r : notificationList) {
if (r.getChannel().getId().equals(channel.getId())
&& r.getSbn().getPackageName().equals(pkgName)
&& r.getUserId() == userId) {
notificationsToCheck.put(r.getKey(), r);
+ regroupingReasonMap.put(r.getKey(), REGROUP_REASON_CHANNEL_UPDATE);
+ if (notificationRegroupOnClassification()) {
+ // Notification is unbundled and original summary found
+ // => regroup in original group
+ if (!isInBundleSection(r)
+ && isOriginalGroupSummaryPresent(r, summaryByGroupKey)) {
+ regroupingReasonMap.put(r.getKey(),
+ REGROUP_REASON_UNBUNDLE_ORIGINAL_GROUP);
+ }
+ }
}
}
- regroupNotifications(userId, pkgName, notificationsToCheck,
- REGROUP_REASON_CHANNEL_UPDATE);
+ regroupNotifications(userId, pkgName, notificationsToCheck, regroupingReasonMap);
}
}
@@ -1124,8 +1149,10 @@ public class GroupHelper {
synchronized (mAggregatedNotifications) {
ArrayMap<String, NotificationRecord> notificationsToCheck = new ArrayMap<>();
notificationsToCheck.put(record.getKey(), record);
+ ArrayMap<String, Integer> regroupReasons = new ArrayMap<>();
+ regroupReasons.put(record.getKey(), REGROUP_REASON_BUNDLE);
regroupNotifications(record.getUserId(), record.getSbn().getPackageName(),
- notificationsToCheck, REGROUP_REASON_BUNDLE);
+ notificationsToCheck, regroupReasons);
}
}
@@ -1144,16 +1171,16 @@ public class GroupHelper {
ArrayMap<String, NotificationRecord> notificationsToCheck = new ArrayMap<>();
notificationsToCheck.put(record.getKey(), record);
regroupNotifications(record.getUserId(), record.getSbn().getPackageName(),
- notificationsToCheck,
- originalSummaryExists ? REGROUP_REASON_UNBUNDLE_ORIGINAL_GROUP
- : REGROUP_REASON_UNBUNDLE);
+ notificationsToCheck, Map.of(record.getKey(),
+ originalSummaryExists ? REGROUP_REASON_UNBUNDLE_ORIGINAL_GROUP
+ : REGROUP_REASON_UNBUNDLE));
}
}
@GuardedBy("mAggregatedNotifications")
private void regroupNotifications(int userId, String pkgName,
ArrayMap<String, NotificationRecord> notificationsToCheck,
- @RegroupingReason int regroupingReason) {
+ Map<String, Integer> regroupReasons) {
// The list of notification operations required after the channel update
final ArrayList<NotificationMoveOp> notificationsToMove = new ArrayList<>();
@@ -1170,15 +1197,13 @@ public class GroupHelper {
// Handle "grouped correctly" notifications that were re-classified (bundled)
if (notificationRegroupOnClassification()) {
- if (regroupingReason == REGROUP_REASON_BUNDLE) {
- notificationsToMove.addAll(
- getReclassifiedNotificationsMoveOps(userId, pkgName, notificationsToCheck));
- }
+ notificationsToMove.addAll(
+ getReclassifiedNotificationsMoveOps(userId, pkgName, notificationsToCheck));
}
// Batch move to new section
if (!notificationsToMove.isEmpty()) {
- moveNotificationsToNewSection(userId, pkgName, notificationsToMove, regroupingReason);
+ moveNotificationsToNewSection(userId, pkgName, notificationsToMove, regroupReasons);
}
}
@@ -1187,9 +1212,9 @@ public class GroupHelper {
final ArrayList<NotificationMoveOp> notificationsToMove = new ArrayList<>();
for (NotificationRecord record : notificationsToCheck.values()) {
if (isChildOfValidAppGroup(record)) {
- // Check if section changes
+ // Check if section changes to a bundle section
NotificationSectioner sectioner = getSection(record);
- if (sectioner != null) {
+ if (sectioner != null && NOTIFICATION_BUNDLE_SECTIONS.contains(sectioner)) {
FullyQualifiedGroupKey newFullAggregateGroupKey =
new FullyQualifiedGroupKey(userId, pkgName, sectioner);
if (DEBUG) {
@@ -1204,6 +1229,24 @@ public class GroupHelper {
return notificationsToMove;
}
+ /**
+ * Checks if the original group's summary exists for a notification that was regrouped
+ * @param r notification to check
+ * @param summaryByGroupKey map of the current group summaries
+ * @return true if the original group summary exists
+ */
+ public static boolean isOriginalGroupSummaryPresent(final NotificationRecord r,
+ final ArrayMap<String, NotificationRecord> summaryByGroupKey) {
+ if (r.getSbn().isAppGroup() && r.getNotification().isGroupChild()) {
+ final String oldGroupKey = GroupHelper.getFullAggregateGroupKey(
+ r.getSbn().getPackageName(), r.getOriginalGroupKey(), r.getUserId());
+ NotificationRecord groupSummary = summaryByGroupKey.get(oldGroupKey);
+ // We only care about app-provided valid groups
+ return (groupSummary != null && !GroupHelper.isAggregatedGroup(groupSummary));
+ }
+ return false;
+ }
+
@GuardedBy("mAggregatedNotifications")
private List<NotificationMoveOp> getAutogroupedNotificationsMoveOps(int userId, String pkgName,
ArrayMap<String, NotificationRecord> notificationsToCheck) {
@@ -1298,7 +1341,8 @@ public class GroupHelper {
@GuardedBy("mAggregatedNotifications")
private void moveNotificationsToNewSection(final int userId, final String pkgName,
- final List<NotificationMoveOp> notificationsToMove, int regroupingReason) {
+ final List<NotificationMoveOp> notificationsToMove,
+ final Map<String, Integer> regroupReasons) {
record GroupUpdateOp(FullyQualifiedGroupKey groupKey, NotificationRecord record,
boolean hasSummary) { }
// Bundled operations to apply to groups affected by the channel update
@@ -1317,7 +1361,7 @@ public class GroupHelper {
Log.i(TAG,
"moveNotificationToNewSection: " + record + " " + newFullAggregateGroupKey
+ " from: " + oldFullAggregateGroupKey + " regroupingReason: "
- + regroupingReason);
+ + regroupReasons);
}
// Update/remove aggregate summary for old group
@@ -1347,7 +1391,8 @@ public class GroupHelper {
// after all notifications have been handled
if (newFullAggregateGroupKey != null) {
if (notificationRegroupOnClassification()
- && regroupingReason == REGROUP_REASON_UNBUNDLE_ORIGINAL_GROUP) {
+ && regroupReasons.getOrDefault(record.getKey(), REGROUP_REASON_CHANNEL_UPDATE)
+ == REGROUP_REASON_UNBUNDLE_ORIGINAL_GROUP) {
// Just reset override group key, original summary exists
// => will be grouped back to its original group
record.setOverrideGroupKey(null);
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index a16b122771ef..3a3deb00562e 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -29,7 +29,6 @@ import static android.app.Flags.lifetimeExtensionRefactor;
import static android.app.Flags.nmSummarization;
import static android.app.Flags.nmSummarizationUi;
import static android.app.Flags.notificationClassificationUi;
-import static android.app.Flags.redactSensitiveContentNotificationsOnLockscreen;
import static android.app.Flags.sortSectionByTime;
import static android.app.Notification.BubbleMetadata.FLAG_SUPPRESS_NOTIFICATION;
import static android.app.Notification.EXTRA_BUILDER_APPLICATION_INFO;
@@ -111,7 +110,9 @@ import static android.os.UserHandle.USER_SYSTEM;
import static android.service.notification.Adjustment.KEY_SUMMARIZATION;
import static android.service.notification.Adjustment.KEY_TYPE;
import static android.service.notification.Adjustment.TYPE_CONTENT_RECOMMENDATION;
+import static android.service.notification.Adjustment.TYPE_NEWS;
import static android.service.notification.Adjustment.TYPE_PROMOTION;
+import static android.service.notification.Adjustment.TYPE_SOCIAL_MEDIA;
import static android.service.notification.Flags.FLAG_NOTIFICATION_CONVERSATION_CHANNEL_MANAGEMENT;
import static android.service.notification.Flags.callstyleCallbackApi;
import static android.service.notification.Flags.notificationClassification;
@@ -258,9 +259,6 @@ import android.content.pm.VersionedPackage;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.metrics.LogMaker;
-import android.net.ConnectivityManager;
-import android.net.Network;
-import android.net.NetworkCapabilities;
import android.net.Uri;
import android.os.Binder;
import android.os.Build;
@@ -346,6 +344,7 @@ import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.messages.nano.SystemMessageProto;
+import com.android.internal.notification.NotificationChannelGroupsHelper;
import com.android.internal.notification.SystemNotificationChannels;
import com.android.internal.os.BackgroundThread;
import com.android.internal.os.SomeArgs;
@@ -491,7 +490,10 @@ public class NotificationManagerService extends SystemService {
};
static final Integer[] DEFAULT_ALLOWED_ADJUSTMENT_KEY_TYPES = new Integer[] {
- TYPE_PROMOTION
+ TYPE_PROMOTION,
+ TYPE_NEWS,
+ TYPE_CONTENT_RECOMMENDATION,
+ TYPE_SOCIAL_MEDIA
};
static final String[] NON_BLOCKABLE_DEFAULT_ROLES = new String[] {
@@ -669,7 +671,6 @@ public class NotificationManagerService extends SystemService {
private UsageStatsManagerInternal mUsageStatsManagerInternal;
private TelecomManager mTelecomManager;
private PowerManager mPowerManager;
- private ConnectivityManager mConnectivityManager;
private PostNotificationTrackerFactory mPostNotificationTrackerFactory;
private LockPatternUtils mLockUtils;
@@ -679,6 +680,8 @@ public class NotificationManagerService extends SystemService {
WorkerHandler mHandler;
private final HandlerThread mRankingThread = new HandlerThread("ranker",
Process.THREAD_PRIORITY_BACKGROUND);
+ @FlaggedApi(Flags.FLAG_NM_BINDER_PERF_THROTTLE_EFFECTS_SUPPRESSOR_BROADCAST)
+ private Handler mBroadcastsHandler;
private final SparseArray<ArraySet<ComponentName>> mListenersDisablingEffects =
new SparseArray<>();
@@ -792,8 +795,6 @@ public class NotificationManagerService extends SystemService {
private ModuleInfo mAdservicesModuleInfo;
- private boolean mConnectedToWifi;
-
static class Archive {
final SparseArray<Boolean> mEnabled;
final int mBufferSize;
@@ -1927,27 +1928,17 @@ public class NotificationManagerService extends SystemService {
if (DBG) {
Slog.v(TAG, "unclassifyNotification: " + r);
}
-
- boolean hasOriginalSummary = false;
- if (r.getSbn().isAppGroup() && r.getNotification().isGroupChild()) {
- final String oldGroupKey = GroupHelper.getFullAggregateGroupKey(
- r.getSbn().getPackageName(), r.getOriginalGroupKey(), r.getUserId());
- NotificationRecord groupSummary = mSummaryByGroupKey.get(oldGroupKey);
- // We only care about app-provided valid groups
- hasOriginalSummary = (groupSummary != null
- && !GroupHelper.isAggregatedGroup(groupSummary));
- }
-
// Only NotificationRecord's mChannel is updated when bundled, the Notification
// mChannelId will always be the original channel.
String origChannelId = r.getNotification().getChannelId();
NotificationChannel originalChannel = mPreferencesHelper.getNotificationChannel(
r.getSbn().getPackageName(), r.getUid(), origChannelId, false);
String currChannelId = r.getChannel().getId();
- boolean isBundled = NotificationChannel.SYSTEM_RESERVED_IDS.contains(currChannelId);
- if (originalChannel != null && !origChannelId.equals(currChannelId) && isBundled) {
+ boolean isClassified = NotificationChannel.SYSTEM_RESERVED_IDS.contains(currChannelId);
+ if (originalChannel != null && !origChannelId.equals(currChannelId) && isClassified) {
r.updateNotificationChannel(originalChannel);
- mGroupHelper.onNotificationUnbundled(r, hasOriginalSummary);
+ mGroupHelper.onNotificationUnbundled(r,
+ GroupHelper.isOriginalGroupSummaryPresent(r, mSummaryByGroupKey));
}
}
@@ -2032,9 +2023,9 @@ public class NotificationManagerService extends SystemService {
Slog.v(TAG, "reclassifyNotification: " + r);
}
- boolean isBundled = NotificationChannel.SYSTEM_RESERVED_IDS.contains(
+ boolean isClassified = NotificationChannel.SYSTEM_RESERVED_IDS.contains(
r.getChannel().getId());
- if (r.getBundleType() != Adjustment.TYPE_OTHER && !isBundled) {
+ if (r.getBundleType() != Adjustment.TYPE_OTHER && !isClassified) {
final Bundle classifBundle = new Bundle();
classifBundle.putInt(KEY_TYPE, r.getBundleType());
Adjustment adj = new Adjustment(r.getSbn().getPackageName(), r.getKey(),
@@ -2682,7 +2673,7 @@ public class NotificationManagerService extends SystemService {
// TODO: All tests should use this init instead of the one-off setters above.
@VisibleForTesting
- void init(WorkerHandler handler, RankingHandler rankingHandler,
+ void init(WorkerHandler handler, RankingHandler rankingHandler, Handler broadcastsHandler,
IPackageManager packageManager, PackageManager packageManagerClient,
LightsManager lightsManager, NotificationListeners notificationListeners,
NotificationAssistants notificationAssistants, ConditionProviders conditionProviders,
@@ -2699,9 +2690,11 @@ public class NotificationManagerService extends SystemService {
TelecomManager telecomManager, NotificationChannelLogger channelLogger,
SystemUiSystemPropertiesFlags.FlagResolver flagResolver,
PermissionManager permissionManager, PowerManager powerManager,
- ConnectivityManager connectivityManager,
PostNotificationTrackerFactory postNotificationTrackerFactory) {
mHandler = handler;
+ if (Flags.nmBinderPerfThrottleEffectsSuppressorBroadcast()) {
+ mBroadcastsHandler = broadcastsHandler;
+ }
Resources resources = getContext().getResources();
mMaxPackageEnqueueRate = Settings.Global.getFloat(getContext().getContentResolver(),
Settings.Global.MAX_NOTIFICATION_ENQUEUE_RATE,
@@ -2732,8 +2725,6 @@ public class NotificationManagerService extends SystemService {
mUm = userManager;
mTelecomManager = telecomManager;
mPowerManager = powerManager;
- mConnectivityManager = connectivityManager;
- registerNetworkCallback();
mPostNotificationTrackerFactory = postNotificationTrackerFactory;
mPlatformCompat = IPlatformCompat.Stub.asInterface(
ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE));
@@ -2949,28 +2940,6 @@ public class NotificationManagerService extends SystemService {
mAppOps.startWatchingMode(AppOpsManager.OP_POST_NOTIFICATION, null, mAppOpsListener);
}
- private void registerNetworkCallback() {
- mConnectivityManager.registerDefaultNetworkCallback(
- new ConnectivityManager.NetworkCallback() {
- @Override
- public void onCapabilitiesChanged(@NonNull Network network,
- @NonNull NetworkCapabilities capabilities) {
- updateWifiConnectionState(capabilities);
- }
- @Override
- public void onLost(@NonNull Network network) {
- mConnectedToWifi = false;
- }
- }, mHandler);
- }
-
- @VisibleForTesting()
- void updateWifiConnectionState(NetworkCapabilities capabilities) {
- mConnectedToWifi = capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
- && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
- && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED);
- }
-
/**
* Cleanup broadcast receivers change listeners.
*/
@@ -3045,13 +3014,22 @@ public class NotificationManagerService extends SystemService {
WorkerHandler handler = new WorkerHandler(Looper.myLooper());
+ Handler broadcastsHandler;
+ if (Flags.nmBinderPerfThrottleEffectsSuppressorBroadcast()) {
+ HandlerThread broadcastsThread = new HandlerThread("NMS Broadcasts");
+ broadcastsThread.start();
+ broadcastsHandler = new Handler(broadcastsThread.getLooper());
+ } else {
+ broadcastsHandler = null;
+ }
+
mShowReviewPermissionsNotification = getContext().getResources().getBoolean(
R.bool.config_notificationReviewPermissions);
mDefaultUnsupportedAdjustments = getContext().getResources().getStringArray(
R.array.config_notificationDefaultUnsupportedAdjustments);
- init(handler, new RankingHandlerWorker(mRankingThread.getLooper()),
+ init(handler, new RankingHandlerWorker(mRankingThread.getLooper()), broadcastsHandler,
AppGlobals.getPackageManager(), getContext().getPackageManager(),
getLocalService(LightsManager.class),
new NotificationListeners(getContext(), mNotificationLock, mUserProfiles,
@@ -3084,7 +3062,6 @@ public class NotificationManagerService extends SystemService {
new NotificationChannelLoggerImpl(), SystemUiSystemPropertiesFlags.getResolver(),
getContext().getSystemService(PermissionManager.class),
getContext().getSystemService(PowerManager.class),
- getContext().getSystemService(ConnectivityManager.class),
new PostNotificationTrackerFactory() {});
publishBinderService(Context.NOTIFICATION_SERVICE, mService, /* allowIsolated= */ false,
@@ -3297,10 +3274,11 @@ public class NotificationManagerService extends SystemService {
* so that e.g. rapidly changing some value A -> B -> C will only produce a broadcast for C
* (instead of every time because the extras are different).
*/
+ @FlaggedApi(Flags.FLAG_NM_BINDER_PERF_THROTTLE_EFFECTS_SUPPRESSOR_BROADCAST)
private void sendZenBroadcastWithDelay(Intent intent) {
String token = "zen_broadcast:" + intent.getAction();
- mHandler.removeCallbacksAndEqualMessages(token);
- mHandler.postDelayed(() -> sendRegisteredOnlyBroadcast(intent), token,
+ mBroadcastsHandler.removeCallbacksAndEqualMessages(token);
+ mBroadcastsHandler.postDelayed(() -> sendRegisteredOnlyBroadcast(intent), token,
ZEN_BROADCAST_DELAY.toMillis());
}
@@ -3568,7 +3546,7 @@ public class NotificationManagerService extends SystemService {
synchronized (mNotificationLock) {
mGroupHelper.onChannelUpdated(
UserHandle.getUserHandleForUid(uid).getIdentifier(), pkg,
- updatedChannel, mNotificationList);
+ updatedChannel, mNotificationList, mSummaryByGroupKey);
}
}, DELAY_FORCE_REGROUP_TIME);
}
@@ -4516,7 +4494,7 @@ public class NotificationManagerService extends SystemService {
if (key == null) {
return;
}
- mAssistants.setAdjustmentTypeSupportedState(info, key, supported);
+ mAssistants.setAdjustmentTypeSupportedState(info.userid, key, supported);
}
} finally {
Binder.restoreCallingIdentity(identity);
@@ -4559,6 +4537,12 @@ public class NotificationManagerService extends SystemService {
}
@Override
+ public String[] getAdjustmentDeniedPackages(String key) {
+ checkCallerIsSystemOrSystemUiOrShell();
+ return mAssistants.getAdjustmentDeniedPackages(key);
+ }
+
+ @Override
public boolean isAdjustmentSupportedForPackage(String key, String pkg) {
checkCallerIsSystemOrSystemUiOrShell();
return mAssistants.isAdjustmentAllowedForPackage(key, pkg);
@@ -5005,8 +4989,18 @@ public class NotificationManagerService extends SystemService {
public ParceledListSlice<NotificationChannelGroup> getNotificationChannelGroups(
String pkg) {
checkCallerIsSystemOrSameApp(pkg);
- return mPreferencesHelper.getNotificationChannelGroups(
- pkg, Binder.getCallingUid(), false, false, true, true, null);
+ return mPreferencesHelper.getNotificationChannelGroups(pkg, Binder.getCallingUid(),
+ NotificationChannelGroupsHelper.Params.forAllGroups());
+ }
+
+ @Override
+ public ParceledListSlice<NotificationChannelGroup>
+ getNotificationChannelGroupsWithoutChannels(String pkg) {
+ checkCallerIsSystemOrSameApp(pkg);
+ List<NotificationChannelGroup> groups = new ArrayList<>();
+ groups.addAll(mPreferencesHelper.getNotificationChannelGroupsWithoutChannels(pkg,
+ Binder.getCallingUid()));
+ return new ParceledListSlice<>(groups);
}
@Override
@@ -5126,8 +5120,9 @@ public class NotificationManagerService extends SystemService {
public ParceledListSlice<NotificationChannelGroup> getNotificationChannelGroupsForPackage(
String pkg, int uid, boolean includeDeleted) {
enforceSystemOrSystemUI("getNotificationChannelGroupsForPackage");
- return mPreferencesHelper.getNotificationChannelGroups(
- pkg, uid, includeDeleted, true, false, true, null);
+ return mPreferencesHelper.getNotificationChannelGroups(pkg, uid,
+ new NotificationChannelGroupsHelper.Params(includeDeleted, true, false, true,
+ null));
}
@Override
@@ -5155,8 +5150,9 @@ public class NotificationManagerService extends SystemService {
}
}
- return mPreferencesHelper.getNotificationChannelGroups(
- pkg, uid, false, true, false, true, recentlySentChannels);
+ return mPreferencesHelper.getNotificationChannelGroups(pkg, uid,
+ NotificationChannelGroupsHelper.Params.onlySpecifiedOrBlockedChannels(
+ recentlySentChannels));
}
@Override
@@ -7009,7 +7005,7 @@ public class NotificationManagerService extends SystemService {
final long identity = Binder.clearCallingIdentity();
try {
synchronized (mNotificationLock) {
- mAssistants.checkServiceTokenLocked(token);
+ ManagedServiceInfo info = mAssistants.checkServiceTokenLocked(token);
int N = mEnqueuedNotifications.size();
for (int i = 0; i < N; i++) {
final NotificationRecord r = mEnqueuedNotifications.get(i);
@@ -7150,7 +7146,7 @@ public class NotificationManagerService extends SystemService {
verifyPrivilegedListener(token, user, true);
List<NotificationChannelGroup> groups = new ArrayList<>();
- groups.addAll(mPreferencesHelper.getNotificationChannelGroups(
+ groups.addAll(mPreferencesHelper.getNotificationChannelGroupsWithoutChannels(
pkg, getUidForPackageAndUser(pkg, user)));
return new ParceledListSlice<>(groups);
}
@@ -7355,6 +7351,10 @@ public class NotificationManagerService extends SystemService {
mAssistants.setPackageOrComponentEnabled(assistant.flattenToString(),
userId, true, granted, userSet);
+ if (android.service.notification.Flags.notificationClassification()) {
+ mAssistants.setNasUnsupportedDefaults(userId);
+ }
+
getContext().sendBroadcastAsUser(
new Intent(ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED)
.setPackage(assistant.getPackageName())
@@ -7386,7 +7386,8 @@ public class NotificationManagerService extends SystemService {
toRemove.add(potentialKey);
}
if (notificationClassification() && potentialKey.equals(KEY_TYPE)) {
- mAssistants.setNasUnsupportedDefaults(r.getSbn().getNormalizedUserId());
+ mAssistants.setAdjustmentTypeSupportedState(
+ r.getSbn().getNormalizedUserId(), potentialKey, true);
if (!mAssistants.isAdjustmentKeyTypeAllowed(adjustments.getInt(KEY_TYPE))) {
toRemove.add(potentialKey);
} else if (notificationClassificationUi()
@@ -7397,6 +7398,8 @@ public class NotificationManagerService extends SystemService {
}
if ((nmSummarization() || nmSummarizationUi())
&& potentialKey.equals(KEY_SUMMARIZATION)) {
+ mAssistants.setAdjustmentTypeSupportedState(
+ r.getSbn().getNormalizedUserId(), potentialKey, true);
if (!mAssistants.isAdjustmentAllowedForPackage(KEY_SUMMARIZATION,
r.getSbn().getPackageName())) {
toRemove.add(potentialKey);
@@ -11860,14 +11863,6 @@ public class NotificationManagerService extends SystemService {
smartActions = null;
smartReplies = null;
}
- if (redactSensitiveContentNotificationsOnLockscreen()) {
- if (mListeners.hasSensitiveContent(record) && mConnectedToWifi
- && info.isSystemUi) {
- // We don't inform systemUI of sensitive content if
- // connected to wifi, though we do still redact from untrusted listeners.
- hasSensitiveContent = false;
- }
- }
}
ranking.populate(
key,
@@ -12054,8 +12049,8 @@ public class NotificationManagerService extends SystemService {
private static final String TAG_DENIED_KEY = "adjustment";
private static final String ATT_DENIED_KEY = "key";
private static final String ATT_DENIED_KEY_APPS = "denied_apps";
- private static final String TAG_ENABLED_TYPES = "enabled_key_types";
- private static final String ATT_NAS_UNSUPPORTED = "nas_unsupported_adjustments";
+ private static final String TAG_ENABLED_TYPES = "enabled_classification_types";
+ private static final String ATT_NAS_UNSUPPORTED = "unsupported_adjustments";
private final Object mLock = new Object();
@@ -12275,6 +12270,16 @@ public class NotificationManagerService extends SystemService {
}
}
+ protected @NonNull String[] getAdjustmentDeniedPackages(@Adjustment.Keys String key) {
+ synchronized (mLock) {
+ if (notificationClassificationUi() || nmSummarization() | nmSummarizationUi()) {
+ return mAdjustmentKeyDeniedPackages.getOrDefault(
+ key, new ArraySet<>()).toArray(new String[0]);
+ }
+ }
+ return new String[]{};
+ }
+
protected @NonNull boolean isAdjustmentAllowedForPackage(@Adjustment.Keys String key,
String pkg) {
synchronized (mLock) {
@@ -12657,10 +12662,6 @@ public class NotificationManagerService extends SystemService {
setNotificationAssistantAccessGrantedForUserInternal(
currentComponent, userId, false, userSet);
}
- } else {
- if (android.service.notification.Flags.notificationClassification()) {
- setNasUnsupportedDefaults(userId);
- }
}
super.setPackageOrComponentEnabled(pkgOrComponent, userId, isPrimary, enabled, userSet);
}
@@ -12693,36 +12694,37 @@ public class NotificationManagerService extends SystemService {
}
}
- @FlaggedApi(android.service.notification.Flags.FLAG_NOTIFICATION_CLASSIFICATION)
@GuardedBy("mNotificationLock")
- public void setAdjustmentTypeSupportedState(ManagedServiceInfo info,
+ public void setAdjustmentTypeSupportedState(@UserIdInt int userId,
@Adjustment.Keys String key, boolean supported) {
- if (!android.service.notification.Flags.notificationClassification()) {
+ if (!(android.service.notification.Flags.notificationClassification()
+ || android.app.Flags.nmSummarizationUi()
+ || android.app.Flags.nmSummarization())) {
return;
}
- setNasUnsupportedDefaults(info.userid);
- HashSet<String> disabledAdjustments = mNasUnsupported.get(info.userid);
+ HashSet<String> disabledAdjustments =
+ mNasUnsupported.getOrDefault(userId, new HashSet<>());
if (supported) {
disabledAdjustments.remove(key);
} else {
disabledAdjustments.add(key);
}
- mNasUnsupported.put(info.userid, disabledAdjustments);
+ mNasUnsupported.put(userId, disabledAdjustments);
handleSavePolicyFile();
}
- @FlaggedApi(android.service.notification.Flags.FLAG_NOTIFICATION_CLASSIFICATION)
@GuardedBy("mNotificationLock")
public @NonNull Set<String> getUnsupportedAdjustments(@UserIdInt int userId) {
- if (!android.service.notification.Flags.notificationClassification()) {
+ if (!(android.service.notification.Flags.notificationClassification()
+ || android.app.Flags.nmSummarizationUi()
+ || android.app.Flags.nmSummarization())) {
return new HashSet<>();
}
- setNasUnsupportedDefaults(userId);
- return mNasUnsupported.get(userId);
+ return mNasUnsupported.getOrDefault(userId, new HashSet<>());
}
private void setNasUnsupportedDefaults(@UserIdInt int userId) {
- if (mNasUnsupported != null && !mNasUnsupported.containsKey(userId)) {
+ if (mNasUnsupported != null) {
mNasUnsupported.put(userId, new HashSet(List.of(mDefaultUnsupportedAdjustments)));
handleSavePolicyFile();
}
@@ -12735,10 +12737,8 @@ public class NotificationManagerService extends SystemService {
return;
}
synchronized (mLock) {
- if (mNasUnsupported.containsKey(approvedUserId)) {
- out.attribute(null, ATT_NAS_UNSUPPORTED,
- TextUtils.join(",", mNasUnsupported.get(approvedUserId)));
- }
+ out.attribute(null, ATT_NAS_UNSUPPORTED, TextUtils.join(",",
+ mNasUnsupported.getOrDefault(approvedUserId, new HashSet<>())));
}
}
@@ -12751,8 +12751,15 @@ public class NotificationManagerService extends SystemService {
if (ManagedServices.TAG_MANAGED_SERVICES.equals(tag)) {
final String types = XmlUtils.readStringAttribute(parser, ATT_NAS_UNSUPPORTED);
synchronized (mLock) {
- if (!TextUtils.isEmpty(types)) {
- mNasUnsupported.put(approvedUserId, new HashSet(List.of(types.split(","))));
+ if (types == null) {
+ setNasUnsupportedDefaults(approvedUserId);
+ } else {
+ if (!TextUtils.isEmpty(types)) {
+ mNasUnsupported.put(approvedUserId,
+ new HashSet(List.of(types.split(","))));
+ } else {
+ mNasUnsupported.put(approvedUserId, new HashSet());
+ }
}
}
}
diff --git a/services/core/java/com/android/server/notification/NotificationRecord.java b/services/core/java/com/android/server/notification/NotificationRecord.java
index 1def7ec1753b..5a58f457ba08 100644
--- a/services/core/java/com/android/server/notification/NotificationRecord.java
+++ b/services/core/java/com/android/server/notification/NotificationRecord.java
@@ -1681,9 +1681,13 @@ public final class NotificationRecord {
}
if (mTargetSdkVersion >= Build.VERSION_CODES.R
- && notification.isStyle(Notification.MessagingStyle.class)
- && (mShortcutInfo == null || isOnlyBots(mShortcutInfo.getPersons()))) {
- return false;
+ && notification.isStyle(Notification.MessagingStyle.class)) {
+ if (mShortcutInfo == null || isOnlyBots(mShortcutInfo.getPersons())) {
+ return false;
+ }
+ if (Flags.notificationNoCustomViewConversations() && hasUndecoratedRemoteView()) {
+ return false;
+ }
}
if (mHasSentValidMsg && mShortcutInfo == null) {
return false;
diff --git a/services/core/java/com/android/server/notification/OWNERS b/services/core/java/com/android/server/notification/OWNERS
index 9f16662fd749..43c68d10b3ce 100644
--- a/services/core/java/com/android/server/notification/OWNERS
+++ b/services/core/java/com/android/server/notification/OWNERS
@@ -2,8 +2,7 @@
juliacr@google.com
yurilin@google.com
-aroederer@google.com
matiashe@google.com
valiiftime@google.com
jeffdq@google.com
-dsandler@android.com \ No newline at end of file
+dsandler@android.com
diff --git a/services/core/java/com/android/server/notification/PreferencesHelper.java b/services/core/java/com/android/server/notification/PreferencesHelper.java
index 7d45cd9752b8..a171ffc2ed98 100644
--- a/services/core/java/com/android/server/notification/PreferencesHelper.java
+++ b/services/core/java/com/android/server/notification/PreferencesHelper.java
@@ -92,6 +92,7 @@ import com.android.internal.annotations.GuardedBy;
import com.android.internal.config.sysui.SystemUiSystemPropertiesFlags;
import com.android.internal.config.sysui.SystemUiSystemPropertiesFlags.NotificationFlags;
import com.android.internal.logging.MetricsLogger;
+import com.android.internal.notification.NotificationChannelGroupsHelper;
import com.android.internal.util.FrameworkStatsLog;
import com.android.internal.util.Preconditions;
import com.android.internal.util.XmlUtils;
@@ -275,6 +276,7 @@ public class PreferencesHelper implements RankingConfig {
// notification channels.
if (android.app.Flags.nmBinderPerfCacheChannels()) {
invalidateNotificationChannelCache();
+ invalidateNotificationChannelGroupCache();
}
}
@@ -1021,6 +1023,7 @@ public class PreferencesHelper implements RankingConfig {
throw new IllegalArgumentException("group.getName() can't be empty");
}
boolean needsDndChange = false;
+ boolean changed = false;
synchronized (mLock) {
PackagePreferences r = getOrCreatePackagePreferencesLocked(pkg, uid);
if (r == null) {
@@ -1051,6 +1054,7 @@ public class PreferencesHelper implements RankingConfig {
}
if (!group.equals(oldGroup)) {
// will log for new entries as well as name/description changes
+ changed = true;
MetricsLogger.action(getChannelGroupLog(group.getId(), pkg));
mNotificationChannelLogger.logNotificationChannelGroup(group, uid, pkg,
oldGroup == null,
@@ -1061,6 +1065,9 @@ public class PreferencesHelper implements RankingConfig {
if (needsDndChange) {
updateCurrentUserHasChannelsBypassingDnd(callingUid, fromSystemOrSystemUi);
}
+ if (android.app.Flags.nmBinderPerfCacheChannels() && changed) {
+ invalidateNotificationChannelGroupCache();
+ }
}
@Override
@@ -1678,18 +1685,8 @@ public class PreferencesHelper implements RankingConfig {
if (r == null || groupId == null || !r.groups.containsKey(groupId)) {
return null;
}
- NotificationChannelGroup group = r.groups.get(groupId).clone();
- group.setChannels(new ArrayList<>());
- int N = r.channels.size();
- for (int i = 0; i < N; i++) {
- final NotificationChannel nc = r.channels.valueAt(i);
- if (includeDeleted || !nc.isDeleted()) {
- if (groupId.equals(nc.getGroup())) {
- group.addChannel(nc);
- }
- }
- }
- return group;
+ return NotificationChannelGroupsHelper.getGroupWithChannels(groupId,
+ r.channels.values(), r.groups, includeDeleted);
}
}
@@ -1706,51 +1703,16 @@ public class PreferencesHelper implements RankingConfig {
}
public ParceledListSlice<NotificationChannelGroup> getNotificationChannelGroups(String pkg,
- int uid, boolean includeDeleted, boolean includeNonGrouped, boolean includeEmpty,
- boolean includeBlocked, Set<String> activeChannelFilter) {
+ int uid, NotificationChannelGroupsHelper.Params params) {
Objects.requireNonNull(pkg);
- Map<String, NotificationChannelGroup> groups = new ArrayMap<>();
synchronized (mLock) {
PackagePreferences r = getPackagePreferencesLocked(pkg, uid);
if (r == null) {
return ParceledListSlice.emptyList();
}
- NotificationChannelGroup nonGrouped = new NotificationChannelGroup(null, null);
- int N = r.channels.size();
- for (int i = 0; i < N; i++) {
- final NotificationChannel nc = r.channels.valueAt(i);
- boolean includeChannel = (includeDeleted || !nc.isDeleted())
- && (activeChannelFilter == null
- || (includeBlocked && nc.getImportance() == IMPORTANCE_NONE)
- || activeChannelFilter.contains(nc.getId()))
- && !SYSTEM_RESERVED_IDS.contains(nc.getId());
- if (includeChannel) {
- if (nc.getGroup() != null) {
- if (r.groups.get(nc.getGroup()) != null) {
- NotificationChannelGroup ncg = groups.get(nc.getGroup());
- if (ncg == null) {
- ncg = r.groups.get(nc.getGroup()).clone();
- ncg.setChannels(new ArrayList<>());
- groups.put(nc.getGroup(), ncg);
- }
- ncg.addChannel(nc);
- }
- } else {
- nonGrouped.addChannel(nc);
- }
- }
- }
- if (includeNonGrouped && nonGrouped.getChannels().size() > 0) {
- groups.put(null, nonGrouped);
- }
- if (includeEmpty) {
- for (NotificationChannelGroup group : r.groups.values()) {
- if (!groups.containsKey(group.getId())) {
- groups.put(group.getId(), group);
- }
- }
- }
- return new ParceledListSlice<>(new ArrayList<>(groups.values()));
+ return new ParceledListSlice<>(
+ NotificationChannelGroupsHelper.getGroupsWithChannels(r.channels.values(),
+ r.groups, params));
}
}
@@ -1758,6 +1720,7 @@ public class PreferencesHelper implements RankingConfig {
String groupId, int callingUid, boolean fromSystemOrSystemUi) {
List<NotificationChannel> deletedChannels = new ArrayList<>();
boolean groupBypassedDnd = false;
+ boolean deleted = false;
synchronized (mLock) {
PackagePreferences r = getPackagePreferencesLocked(pkg, uid);
if (r == null || TextUtils.isEmpty(groupId)) {
@@ -1766,6 +1729,7 @@ public class PreferencesHelper implements RankingConfig {
NotificationChannelGroup channelGroup = r.groups.remove(groupId);
if (channelGroup != null) {
+ deleted = true;
mNotificationChannelLogger.logNotificationChannelGroupDeleted(channelGroup, uid,
pkg);
}
@@ -1783,15 +1747,25 @@ public class PreferencesHelper implements RankingConfig {
if (groupBypassedDnd) {
updateCurrentUserHasChannelsBypassingDnd(callingUid, fromSystemOrSystemUi);
}
- if (android.app.Flags.nmBinderPerfCacheChannels() && deletedChannels.size() > 0) {
- invalidateNotificationChannelCache();
+ if (android.app.Flags.nmBinderPerfCacheChannels()) {
+ if (deletedChannels.size() > 0) {
+ invalidateNotificationChannelCache();
+ }
+ if (deleted) {
+ invalidateNotificationChannelGroupCache();
+ }
}
return deletedChannels;
}
+ /**
+ * Returns all notification channel groups for the provided package and uid, without channel
+ * information included. Note that this method returns the object instances from the internal
+ * structure; do not modify the returned groups before copying or parceling.
+ */
@Override
- public Collection<NotificationChannelGroup> getNotificationChannelGroups(String pkg,
- int uid) {
+ public Collection<NotificationChannelGroup> getNotificationChannelGroupsWithoutChannels(
+ String pkg, int uid) {
List<NotificationChannelGroup> groups = new ArrayList<>();
synchronized (mLock) {
PackagePreferences r = getPackagePreferencesLocked(pkg, uid);
@@ -2397,6 +2371,12 @@ public class PreferencesHelper implements RankingConfig {
pw.print(r.canHavePromotedNotifs);
}
pw.println();
+ if (r.delegate != null) {
+ pw.print(prefix);
+ pw.printf(" Delegate: %s (%s) enabled=%s", r.delegate.mPkg, r.delegate.mUid,
+ r.delegate.mEnabled);
+ pw.println();
+ }
for (NotificationChannel channel : r.channels.values()) {
pw.print(prefix);
channel.dump(pw, " ", filter.redact);
@@ -2934,6 +2914,7 @@ public class PreferencesHelper implements RankingConfig {
}
if (android.app.Flags.nmBinderPerfCacheChannels() && removed) {
invalidateNotificationChannelCache();
+ invalidateNotificationChannelGroupCache();
}
}
}
@@ -3046,6 +3027,7 @@ public class PreferencesHelper implements RankingConfig {
updateConfig();
if (android.app.Flags.nmBinderPerfCacheChannels()) {
invalidateNotificationChannelCache();
+ invalidateNotificationChannelGroupCache();
}
}
return updated;
@@ -3066,6 +3048,7 @@ public class PreferencesHelper implements RankingConfig {
p.showBadge = DEFAULT_SHOW_BADGE;
if (android.app.Flags.nmBinderPerfCacheChannels()) {
invalidateNotificationChannelCache();
+ invalidateNotificationChannelGroupCache();
}
}
}
@@ -3291,6 +3274,11 @@ public class PreferencesHelper implements RankingConfig {
NotificationManager.invalidateNotificationChannelCache();
}
+ @VisibleForTesting
+ protected void invalidateNotificationChannelGroupCache() {
+ NotificationManager.invalidateNotificationChannelGroupCache();
+ }
+
private static String packagePreferencesKey(String pkg, int uid) {
return pkg + "|" + uid;
}
diff --git a/services/core/java/com/android/server/notification/RankingConfig.java b/services/core/java/com/android/server/notification/RankingConfig.java
index 001e91cbea12..d5b8147a64ec 100644
--- a/services/core/java/com/android/server/notification/RankingConfig.java
+++ b/services/core/java/com/android/server/notification/RankingConfig.java
@@ -36,7 +36,7 @@ public interface RankingConfig {
boolean canShowNotificationsOnLockscreen(int userId);
boolean canShowPrivateNotificationsOnLockScreen(int userId);
- Collection<NotificationChannelGroup> getNotificationChannelGroups(String pkg,
+ Collection<NotificationChannelGroup> getNotificationChannelGroupsWithoutChannels(String pkg,
int uid);
void createNotificationChannelGroup(String pkg, int uid, NotificationChannelGroup group,
boolean fromTargetApp, int callingUid, boolean isSystemOrSystemUi);
diff --git a/services/core/java/com/android/server/om/OverlayManagerService.java b/services/core/java/com/android/server/om/OverlayManagerService.java
index 8710438d76b3..d6b587b5f16d 100644
--- a/services/core/java/com/android/server/om/OverlayManagerService.java
+++ b/services/core/java/com/android/server/om/OverlayManagerService.java
@@ -251,14 +251,17 @@ public final class OverlayManagerService extends SystemService {
private final Object mLock = new Object();
+ @GuardedBy("mLock")
private final AtomicFile mSettingsFile;
private final PackageManagerHelperImpl mPackageManager;
private final UserManagerService mUserManager;
+ @GuardedBy("mLock")
private final OverlayManagerSettings mSettings;
+ @GuardedBy("mLock")
private final OverlayManagerServiceImpl mImpl;
private final OverlayActorEnforcer mActorEnforcer;
@@ -296,7 +299,9 @@ public final class OverlayManagerService extends SystemService {
UserManagerInternal umi = LocalServices.getService(UserManagerInternal.class);
umi.addUserLifecycleListener(new UserLifecycleListener());
- restoreSettings();
+ // No async stuff happening in the constructor yet, so it's OK to call a ...Locked()
+ // method without a lock here.
+ restoreSettingsLocked();
// Wipe all shell overlays on boot, to recover from a potentially broken device
String shellPkgName = TextUtils.emptyIfNull(
@@ -403,6 +408,20 @@ public final class OverlayManagerService extends SystemService {
return userIds;
}
+ /**
+ * Ensure that the caller has permission to interact with the given userId.
+ * If the calling user is not the same as the provided user, the caller needs
+ * to hold the INTERACT_ACROSS_USERS_FULL permission (or be system uid or
+ * root).
+ *
+ * @param userId the user to interact with
+ * @param message message for any SecurityException
+ */
+ static int handleIncomingUser(final int userId, @NonNull final String message) {
+ return ActivityManager.handleIncomingUser(Binder.getCallingPid(),
+ Binder.getCallingUid(), userId, false, true, message, null);
+ }
+
private void handlePackageAdd(String packageName, Bundle extras, int userId) {
final boolean replacing = extras.getBoolean(Intent.EXTRA_REPLACING, false);
if (replacing) {
@@ -902,25 +921,28 @@ public final class OverlayManagerService extends SystemService {
throws RemoteException {
try {
traceBegin(TRACE_TAG_RRO, "OMS#commit " + transaction);
- try {
- executeAllRequests(transaction);
- } catch (Exception e) {
- final long ident = Binder.clearCallingIdentity();
+ synchronized (mLock) {
try {
- restoreSettings();
- } finally {
- Binder.restoreCallingIdentity(ident);
+ executeAllRequestsLocked(transaction);
+ } catch (Exception e) {
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ restoreSettingsLocked();
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ Slog.d(TAG, "commit failed: " + e.getMessage(), e);
+ throw new SecurityException("commit failed"
+ + (DEBUG || Build.IS_DEBUGGABLE ? ": " + e.getMessage() : ""));
}
- Slog.d(TAG, "commit failed: " + e.getMessage(), e);
- throw new SecurityException("commit failed"
- + (DEBUG || Build.IS_DEBUGGABLE ? ": " + e.getMessage() : ""));
}
} finally {
traceEnd(TRACE_TAG_RRO);
}
}
- private Set<UserPackage> executeRequest(
+ @GuardedBy("mLock")
+ private Set<UserPackage> executeRequestLocked(
@NonNull final OverlayManagerTransaction.Request request)
throws OperationFailedException {
Objects.requireNonNull(request, "Transaction contains a null request");
@@ -995,33 +1017,29 @@ public final class OverlayManagerService extends SystemService {
}
}
- private void executeAllRequests(@NonNull final OverlayManagerTransaction transaction)
+ @GuardedBy("mLock")
+ private void executeAllRequestsLocked(@NonNull final OverlayManagerTransaction transaction)
throws OperationFailedException {
if (DEBUG) {
Slog.d(TAG, "commit " + transaction);
}
- if (transaction == null) {
- throw new IllegalArgumentException("null transaction");
- }
- synchronized (mLock) {
- // execute the requests (as calling user)
- Set<UserPackage> affectedPackagesToUpdate = null;
- for (Iterator<Request> it = transaction.getRequests(); it.hasNext(); ) {
- Request request = it.next();
- affectedPackagesToUpdate = CollectionUtils.addAll(affectedPackagesToUpdate,
- executeRequest(request));
- }
+ // execute the requests (as calling user)
+ Set<UserPackage> affectedPackagesToUpdate = null;
+ for (Iterator<Request> it = transaction.getRequests(); it.hasNext(); ) {
+ Request request = it.next();
+ affectedPackagesToUpdate = CollectionUtils.addAll(affectedPackagesToUpdate,
+ executeRequestLocked(request));
+ }
- // past the point of no return: the entire transaction has been
- // processed successfully, we can no longer fail: continue as
- // system_server
- final long ident = Binder.clearCallingIdentity();
- try {
- updateTargetPackagesLocked(affectedPackagesToUpdate);
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
+ // past the point of no return: the entire transaction has been
+ // processed successfully, we can no longer fail: continue as
+ // system_server
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ updateTargetPackagesLocked(affectedPackagesToUpdate);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
}
}
@@ -1037,7 +1055,7 @@ public final class OverlayManagerService extends SystemService {
@Override
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
final DumpState dumpState = new DumpState();
- dumpState.setUserId(UserHandle.USER_ALL);
+ int userId = UserHandle.USER_ALL;
int opti = 0;
while (opti < args.length) {
@@ -1064,9 +1082,7 @@ public final class OverlayManagerService extends SystemService {
return;
}
try {
- final int userId = UserHandle.parseUserArg(args[opti]);
- final int realUserId = handleIncomingUser(userId, "dump");
- dumpState.setUserId(realUserId);
+ userId = UserHandle.parseUserArg(args[opti]);
opti++;
} catch (Exception e) {
pw.println("Error: " + e.getMessage());
@@ -1105,6 +1121,9 @@ public final class OverlayManagerService extends SystemService {
}
enforceDumpPermission("dump");
+ final int realUserId = userId != UserHandle.USER_ALL
+ ? handleIncomingUser(userId, "dump") : userId;
+ dumpState.setUserId(realUserId);
synchronized (mLock) {
mImpl.dump(pw, dumpState);
if (dumpState.getPackageName() == null) {
@@ -1114,20 +1133,6 @@ public final class OverlayManagerService extends SystemService {
}
/**
- * Ensure that the caller has permission to interact with the given userId.
- * If the calling user is not the same as the provided user, the caller needs
- * to hold the INTERACT_ACROSS_USERS_FULL permission (or be system uid or
- * root).
- *
- * @param userId the user to interact with
- * @param message message for any SecurityException
- */
- private int handleIncomingUser(final int userId, @NonNull final String message) {
- return ActivityManager.handleIncomingUser(Binder.getCallingPid(),
- Binder.getCallingUid(), userId, false, true, message, null);
- }
-
- /**
* Enforce that the caller holds the DUMP permission (or is system or root).
*
* @param message used as message if SecurityException is thrown
@@ -1447,12 +1452,14 @@ public final class OverlayManagerService extends SystemService {
}
}
+ @GuardedBy("mLock")
private void updateTargetPackagesLocked(@Nullable UserPackage updatedTarget) {
if (updatedTarget != null) {
updateTargetPackagesLocked(Set.of(updatedTarget));
}
}
+ @GuardedBy("mLock")
private void updateTargetPackagesLocked(@Nullable Set<UserPackage> updatedTargets) {
if (CollectionUtils.isEmpty(updatedTargets)) {
return;
@@ -1548,6 +1555,7 @@ public final class OverlayManagerService extends SystemService {
}
@NonNull
+ @GuardedBy("mLock")
private SparseArray<List<String>> updatePackageManagerLocked(
@Nullable Set<UserPackage> targets) {
if (CollectionUtils.isEmpty(targets)) {
@@ -1568,6 +1576,7 @@ public final class OverlayManagerService extends SystemService {
* targetPackageNames: the target themselves and shared libraries)
*/
@NonNull
+ @GuardedBy("mLock")
private List<String> updatePackageManagerLocked(@NonNull Collection<String> targetPackageNames,
final int userId) {
try {
@@ -1623,6 +1632,7 @@ public final class OverlayManagerService extends SystemService {
}
}
+ @GuardedBy("mLock")
private void persistSettingsLocked() {
if (DEBUG) {
Slog.d(TAG, "Writing overlay settings");
@@ -1638,35 +1648,35 @@ public final class OverlayManagerService extends SystemService {
}
}
- private void restoreSettings() {
+ @GuardedBy("mLock")
+ private void restoreSettingsLocked() {
try {
traceBegin(TRACE_TAG_RRO, "OMS#restoreSettings");
- synchronized (mLock) {
- if (!mSettingsFile.getBaseFile().exists()) {
- return;
- }
- try (FileInputStream stream = mSettingsFile.openRead()) {
- mSettings.restore(stream);
- // We might have data for dying users if the device was
- // restarted before we received USER_REMOVED. Remove data for
- // users that will not exist after the system is ready.
+ if (!mSettingsFile.getBaseFile().exists()) {
+ return;
+ }
+ try (FileInputStream stream = mSettingsFile.openRead()) {
+ mSettings.restore(stream);
- final List<UserInfo> liveUsers = mUserManager.getUsers(true /*excludeDying*/);
- final int[] liveUserIds = new int[liveUsers.size()];
- for (int i = 0; i < liveUsers.size(); i++) {
- liveUserIds[i] = liveUsers.get(i).getUserHandle().getIdentifier();
- }
- Arrays.sort(liveUserIds);
+ // We might have data for dying users if the device was
+ // restarted before we received USER_REMOVED. Remove data for
+ // users that will not exist after the system is ready.
- for (int userId : mSettings.getUsers()) {
- if (Arrays.binarySearch(liveUserIds, userId) < 0) {
- mSettings.removeUser(userId);
- }
+ final List<UserInfo> liveUsers = mUserManager.getUsers(true /*excludeDying*/);
+ final int[] liveUserIds = new int[liveUsers.size()];
+ for (int i = 0; i < liveUsers.size(); i++) {
+ liveUserIds[i] = liveUsers.get(i).getUserHandle().getIdentifier();
+ }
+ Arrays.sort(liveUserIds);
+
+ for (int userId : mSettings.getUsers()) {
+ if (Arrays.binarySearch(liveUserIds, userId) < 0) {
+ mSettings.removeUser(userId);
}
- } catch (IOException | XmlPullParserException e) {
- Slog.e(TAG, "failed to restore overlay state", e);
}
+ } catch (IOException | XmlPullParserException e) {
+ Slog.e(TAG, "failed to restore overlay state", e);
}
} finally {
traceEnd(TRACE_TAG_RRO);
diff --git a/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java b/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java
index 0e9ec4d71421..02c0190224d0 100644
--- a/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java
+++ b/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java
@@ -715,20 +715,11 @@ final class OverlayManagerServiceImpl {
}
void dump(@NonNull final PrintWriter pw, @NonNull DumpState dumpState) {
- Pair<OverlayIdentifier, String> overlayIdmap = null;
- if (dumpState.getPackageName() != null) {
- OverlayIdentifier id = new OverlayIdentifier(dumpState.getPackageName(),
- dumpState.getOverlayName());
- OverlayInfo oi = mSettings.getNullableOverlayInfo(id, USER_SYSTEM);
- if (oi != null) {
- overlayIdmap = new Pair<>(id, oi.baseCodePath);
- }
- }
-
// settings
mSettings.dump(pw, dumpState);
// idmap data
+ final var overlayIdmap = mSettings.getIdentifierAndBaseCodePath(dumpState);
if (dumpState.getField() == null) {
Set<Pair<OverlayIdentifier, String>> allIdmaps = (overlayIdmap != null)
? Set.of(overlayIdmap) : mSettings.getAllIdentifiersAndBaseCodePaths();
diff --git a/services/core/java/com/android/server/om/OverlayManagerSettings.java b/services/core/java/com/android/server/om/OverlayManagerSettings.java
index f9758fcd5d01..e6b1c5f640f2 100644
--- a/services/core/java/com/android/server/om/OverlayManagerSettings.java
+++ b/services/core/java/com/android/server/om/OverlayManagerSettings.java
@@ -212,17 +212,41 @@ final class OverlayManagerSettings {
}
Set<String> getAllBaseCodePaths() {
+ // Overlays installed for multiple users have the same code path, avoid duplicates with Set.
final Set<String> paths = new ArraySet<>();
mItems.forEach(item -> paths.add(item.mBaseCodePath));
return paths;
}
Set<Pair<OverlayIdentifier, String>> getAllIdentifiersAndBaseCodePaths() {
+ // Overlays installed for multiple users have the same code path, avoid duplicates with Set.
final Set<Pair<OverlayIdentifier, String>> set = new ArraySet<>();
- mItems.forEach(item -> set.add(new Pair(item.mOverlay, item.mBaseCodePath)));
+ mItems.forEach(item -> set.add(new Pair<>(item.mOverlay, item.mBaseCodePath)));
return set;
}
+ @Nullable
+ Pair<OverlayIdentifier, String> getIdentifierAndBaseCodePath(@NonNull DumpState dumpState) {
+ if (dumpState.getPackageName() == null) {
+ return null;
+ }
+ OverlayIdentifier id = new OverlayIdentifier(dumpState.getPackageName(),
+ dumpState.getOverlayName());
+ final int userId = dumpState.getUserId();
+ for (int i = 0; i < mItems.size(); i++) {
+ final var item = mItems.get(i);
+ if (userId != UserHandle.USER_ALL && userId != item.mUserId) {
+ continue;
+ }
+ if (!id.equals(item.mOverlay)) {
+ continue;
+ }
+ // Overlays installed for multiple users have the same code path, return first found.
+ return new Pair<>(id, item.mBaseCodePath);
+ }
+ return null;
+ }
+
@NonNull
List<OverlayInfo> removeIf(@NonNull final Predicate<OverlayInfo> predicate, final int userId) {
return removeIf(info -> (predicate.test(info) && info.userId == userId));
diff --git a/services/core/java/com/android/server/om/OverlayManagerShellCommand.java b/services/core/java/com/android/server/om/OverlayManagerShellCommand.java
index b7f21125148c..39a6b1895c3a 100644
--- a/services/core/java/com/android/server/om/OverlayManagerShellCommand.java
+++ b/services/core/java/com/android/server/om/OverlayManagerShellCommand.java
@@ -17,6 +17,7 @@
package com.android.server.om;
import static com.android.internal.content.om.OverlayConfig.PARTITION_ORDER_FILE_PATH;
+import static com.android.server.om.OverlayManagerService.handleIncomingUser;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -145,7 +146,7 @@ final class OverlayManagerShellCommand extends ShellCommand {
out.println(" Load a package and print the value of a given resource");
out.println(" applying the current configuration and enabled overlays.");
out.println(" For a more fine-grained alternative, use 'idmap2 lookup'.");
- out.println(" fabricate [--user USER_ID] [--target-name OVERLAYABLE] --target PACKAGE");
+ out.println(" fabricate [--target-name OVERLAYABLE] --target PACKAGE");
out.println(" --name NAME [--file FILE] ");
out.println(" PACKAGE:TYPE/NAME ENCODED-TYPE-ID|TYPE-NAME ENCODED-VALUE");
out.println(" Create an overlay from a single resource. Caller must be root. Example:");
@@ -160,7 +161,7 @@ final class OverlayManagerShellCommand extends ShellCommand {
final PrintWriter out = getOutPrintWriter();
final PrintWriter err = getErrPrintWriter();
- int userId = UserHandle.USER_SYSTEM;
+ int userId = UserHandle.USER_CURRENT;
String opt;
while ((opt = getNextOption()) != null) {
switch (opt) {
@@ -234,7 +235,7 @@ final class OverlayManagerShellCommand extends ShellCommand {
private int runEnableDisable(final boolean enable) throws RemoteException {
final PrintWriter err = getErrPrintWriter();
- int userId = UserHandle.USER_SYSTEM;
+ int userId = UserHandle.USER_CURRENT;
String opt;
while ((opt = getNextOption()) != null) {
switch (opt) {
@@ -269,7 +270,6 @@ final class OverlayManagerShellCommand extends ShellCommand {
return 1;
}
- int userId = UserHandle.USER_SYSTEM;
String targetPackage = "";
String targetOverlayable = "";
String name = "";
@@ -278,9 +278,6 @@ final class OverlayManagerShellCommand extends ShellCommand {
String config = null;
while ((opt = getNextOption()) != null) {
switch (opt) {
- case "--user":
- userId = UserHandle.parseUserArg(getNextArgRequired());
- break;
case "--target":
targetPackage = getNextArgRequired();
break;
@@ -442,7 +439,7 @@ final class OverlayManagerShellCommand extends ShellCommand {
private int runEnableExclusive() throws RemoteException {
final PrintWriter err = getErrPrintWriter();
- int userId = UserHandle.USER_SYSTEM;
+ int userId = UserHandle.USER_CURRENT;
boolean inCategory = false;
String opt;
while ((opt = getNextOption()) != null) {
@@ -469,7 +466,7 @@ final class OverlayManagerShellCommand extends ShellCommand {
private int runSetPriority() throws RemoteException {
final PrintWriter err = getErrPrintWriter();
- int userId = UserHandle.USER_SYSTEM;
+ int userId = UserHandle.USER_CURRENT;
String opt;
while ((opt = getNextOption()) != null) {
switch (opt) {
@@ -498,7 +495,7 @@ final class OverlayManagerShellCommand extends ShellCommand {
final PrintWriter out = getOutPrintWriter();
final PrintWriter err = getErrPrintWriter();
- int userId = UserHandle.USER_SYSTEM;
+ int userId = UserHandle.USER_CURRENT;
boolean verbose = false;
String opt;
while ((opt = getNextOption()) != null) {
@@ -525,15 +522,16 @@ final class OverlayManagerShellCommand extends ShellCommand {
return 1;
}
+ final int realUserId = handleIncomingUser(userId, "runLookup");
final Resources res;
try {
res = mContext
- .createContextAsUser(UserHandle.of(userId), /* flags */ 0)
+ .createContextAsUser(UserHandle.of(realUserId), /* flags */ 0)
.getPackageManager()
.getResourcesForApplication(packageToLoad);
} catch (PackageManager.NameNotFoundException e) {
err.println(String.format("Error: failed to get resources for package %s for user %d",
- packageToLoad, userId));
+ packageToLoad, realUserId));
return 1;
}
final AssetManager assets = res.getAssets();
diff --git a/services/core/java/com/android/server/pm/DexOptHelper.java b/services/core/java/com/android/server/pm/DexOptHelper.java
index f011d283c8bb..4ee6e9773199 100644
--- a/services/core/java/com/android/server/pm/DexOptHelper.java
+++ b/services/core/java/com/android/server/pm/DexOptHelper.java
@@ -726,11 +726,9 @@ public final class DexOptHelper {
}
}
- /**
- * Returns DexoptOptions by the given InstallRequest.
- */
- static DexoptOptions getDexoptOptionsByInstallRequest(InstallRequest installRequest,
- DexManager dexManager) {
+ /** Returns DexoptOptions by the given InstallRequest. */
+ private static DexoptOptions getDexoptOptionsByInstallRequest(
+ InstallRequest installRequest, DexManager dexManager) {
final PackageSetting ps = installRequest.getScannedPackageSetting();
final String packageName = ps.getPackageName();
final boolean isBackupOrRestore =
@@ -748,76 +746,74 @@ public final class DexOptHelper {
var options = new DexoptOptions(packageName, compilationReason, dexoptFlags);
if (installRequest.getDexoptCompilerFilter() != null) {
options = options.overrideCompilerFilter(installRequest.getDexoptCompilerFilter());
- } else if (pkg != null && pkg.isDebuggable()) {
+ } else if (shouldSkipDexopt(installRequest)) {
options = options.overrideCompilerFilter(DexoptParams.COMPILER_FILTER_NOOP);
}
return options;
}
- /**
- * Perform dexopt if needed for the installation
- */
- static void performDexoptIfNeeded(InstallRequest installRequest, DexManager dexManager,
- Context context, PackageManagerTracedLock.RawLock installLock) {
- // Construct the DexoptOptions early to see if we should skip running dexopt.
- DexoptOptions dexoptOptions = getDexoptOptionsByInstallRequest(installRequest, dexManager);
- boolean performDexopt =
- DexOptHelper.shouldPerformDexopt(installRequest, dexoptOptions, context);
-
- if (performDexopt) {
- // dexopt can take long, and ArtService doesn't require installd, so we release
- // the lock here and re-acquire the lock after dexopt is finished.
+ /** Perform dexopt if needed for the installation */
+ static void performDexoptIfNeeded(
+ InstallRequest installRequest,
+ DexManager dexManager,
+ PackageManagerTracedLock.RawLock installLock) {
+ if (!shouldCallArtService(installRequest)) {
+ return;
+ }
+
+ // dexopt can take long, and ArtService doesn't require installd, so we release the lock
+ // here and re-acquire the lock after dexopt is finished.
+ if (installLock != null) {
+ installLock.unlock();
+ }
+ try {
+ Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "dexopt");
+ DexoptOptions dexoptOptions =
+ getDexoptOptionsByInstallRequest(installRequest, dexManager);
+ // Don't fail application installs if the dexopt step fails.
+ DexoptResult dexOptResult =
+ DexOptHelper.dexoptPackageUsingArtService(installRequest, dexoptOptions);
+ installRequest.onDexoptFinished(dexOptResult);
+ } finally {
+ Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
if (installLock != null) {
- installLock.unlock();
- }
- try {
- Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "dexopt");
- // Don't fail application installs if the dexopt step fails.
- DexoptResult dexOptResult = DexOptHelper.dexoptPackageUsingArtService(
- installRequest, dexoptOptions);
- installRequest.onDexoptFinished(dexOptResult);
- } finally {
- Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
- if (installLock != null) {
- installLock.lock();
- }
+ installLock.lock();
}
}
}
- /**
- * Same as above, but runs asynchronously.
- */
- static CompletableFuture<Void> performDexoptIfNeededAsync(InstallRequest installRequest,
- DexManager dexManager, Context context) {
- // Construct the DexoptOptions early to see if we should skip running dexopt.
- DexoptOptions dexoptOptions = getDexoptOptionsByInstallRequest(installRequest, dexManager);
- boolean performDexopt =
- DexOptHelper.shouldPerformDexopt(installRequest, dexoptOptions, context);
-
- if (performDexopt) {
- return CompletableFuture
- .runAsync(() -> {
- try {
- Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "dexopt");
- // Don't fail application installs if the dexopt step fails.
- // TODO(jiakaiz): Make this async in ART Service.
- DexoptResult dexOptResult = DexOptHelper.dexoptPackageUsingArtService(
- installRequest, dexoptOptions);
- installRequest.onDexoptFinished(dexOptResult);
- } finally {
- Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
- }
- }, sDexoptExecutor)
- .exceptionally((t) -> {
- // This should never happen. A normal dexopt failure should result in a
- // DexoptResult.DEXOPT_FAILED, not an exception.
- Slog.wtf(TAG, "Dexopt encountered a fatal error", t);
- return null;
- });
- } else {
+ /** Same as above, but runs asynchronously. */
+ static CompletableFuture<Void> performDexoptIfNeededAsync(
+ InstallRequest installRequest, DexManager dexManager) {
+ if (!shouldCallArtService(installRequest)) {
return CompletableFuture.completedFuture(null);
}
+
+ return CompletableFuture.runAsync(
+ () -> {
+ try {
+ Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "dexopt");
+ DexoptOptions dexoptOptions =
+ getDexoptOptionsByInstallRequest(
+ installRequest, dexManager);
+ // Don't fail application installs if the dexopt step fails.
+ // TODO(b/393076925): Make this async in ART Service.
+ DexoptResult dexOptResult =
+ DexOptHelper.dexoptPackageUsingArtService(
+ installRequest, dexoptOptions);
+ installRequest.onDexoptFinished(dexOptResult);
+ } finally {
+ Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
+ }
+ },
+ sDexoptExecutor)
+ .exceptionally(
+ (t) -> {
+ // This should never happen. A normal dexopt failure should result
+ // in a DexoptResult.DEXOPT_FAILED, not an exception.
+ Slog.wtf(TAG, "Dexopt encountered a fatal error", t);
+ return null;
+ });
}
/**
@@ -852,43 +848,36 @@ public final class DexOptHelper {
}
}
+ private static boolean shouldSkipDexopt(InstallRequest installRequest) {
+ PackageSetting ps = installRequest.getScannedPackageSetting();
+ AndroidPackage pkg = ps.getPkg();
+ boolean onIncremental = isIncrementalPath(ps.getPathString());
+ return pkg == null || pkg.isDebuggable() || onIncremental;
+ }
+
/**
- * Returns whether to perform dexopt by the given InstallRequest.
+ * Returns whether to call ART Service to perform dexopt for the given InstallRequest. Note that
+ * ART Service may still skip dexopt, depending on the specified compiler filter, compilation
+ * reason, and other conditions.
*/
- static boolean shouldPerformDexopt(InstallRequest installRequest, DexoptOptions dexoptOptions,
- Context context) {
- // We only need to dexopt if the package meets ALL of the following conditions:
- // 1) it is not an instant app or if it is then dexopt is enabled via gservices.
- // 2) it is not debuggable.
- // 3) it is not on Incremental File System.
- //
- // Note that we do not dexopt instant apps by default. dexopt can take some time to
- // complete, so we skip this step during installation. Instead, we'll take extra time
- // the first time the instant app starts. It's preferred to do it this way to provide
- // continuous progress to the user instead of mysteriously blocking somewhere in the
- // middle of running an instant app. The default behaviour can be overridden
- // via gservices.
- //
- // Furthermore, dexopt may be skipped, depending on the install scenario and current
- // state of the device.
+ private static boolean shouldCallArtService(InstallRequest installRequest) {
final boolean isApex = ((installRequest.getScanFlags() & SCAN_AS_APEX) != 0);
+ // Historically, we did not dexopt instant apps, and we have no plan to do so in the
+ // future, so there is no need to call into ART Service.
final boolean instantApp = ((installRequest.getScanFlags() & SCAN_AS_INSTANT_APP) != 0);
final PackageSetting ps = installRequest.getScannedPackageSetting();
final AndroidPackage pkg = ps.getPkg();
- final boolean onIncremental = isIncrementalPath(ps.getPathString());
- final boolean performDexOptForRollback = Flags.recoverabilityDetection()
- ? !(installRequest.isRollback()
- && installRequest.getInstallSource().mInitiatingPackageName.equals("android"))
- : true;
-
- // Don't skip the dexopt call if the compiler filter is "skip". Instead, call dexopt with
- // the "skip" filter so that ART Service gets notified and skips dexopt itself.
- return (!instantApp || Global.getInt(context.getContentResolver(),
- Global.INSTANT_APP_DEXOPT_ENABLED, 0) != 0)
- && pkg != null
- && (!onIncremental)
- && !isApex
- && performDexOptForRollback;
+ final boolean performDexOptForRollback =
+ !(installRequest.isRollback()
+ && installRequest
+ .getInstallSource()
+ .mInitiatingPackageName
+ .equals("android"));
+
+ // THINK TWICE when you add a new condition here. You probably want to add a condition to
+ // `shouldSkipDexopt` instead. In that way, ART Service will be called with the "skip"
+ // compiler filter and it will have the chance to decide whether to skip dexopt.
+ return !instantApp && pkg != null && !isApex && performDexOptForRollback;
}
private static class StagedApexObserver extends IStagedApexObserver.Stub {
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java
index 0c2782393879..55d2508d085e 100644
--- a/services/core/java/com/android/server/pm/InstallPackageHelper.java
+++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java
@@ -1159,7 +1159,7 @@ final class InstallPackageHelper {
}
request.setKeepArtProfile(true);
// TODO(b/388159696): Use performDexoptIfNeededAsync.
- DexOptHelper.performDexoptIfNeeded(request, mDexManager, mContext, null);
+ DexOptHelper.performDexoptIfNeeded(request, mDexManager, null /* installLock */);
}
}
@@ -2732,8 +2732,8 @@ final class InstallPackageHelper {
| Installer.FLAG_CLEAR_CODE_CACHE_ONLY);
}
- DexOptHelper.performDexoptIfNeeded(installRequest, mDexManager, mContext,
- mPm.mInstallLock.getRawLock());
+ DexOptHelper.performDexoptIfNeeded(
+ installRequest, mDexManager, mPm.mInstallLock.getRawLock());
}
}
PackageManagerServiceUtils.waitForNativeBinariesExtractionForIncremental(
@@ -3044,20 +3044,11 @@ final class InstallPackageHelper {
// Set the OP_ACCESS_RESTRICTED_SETTINGS op, which is used by ECM (see {@link
// EnhancedConfirmationManager}) as a persistent state denoting whether an app is
- // currently guarded by ECM, not guarded by ECM, or (in Android V+) that this should
- // be decided later.
- if (android.permission.flags.Flags.enhancedConfirmationModeApisEnabled()
- && android.security.Flags.extendEcmToAllSettings()) {
- final int appId = request.getAppId();
- // TODO: b/388960315 - Implement a long-term solution to race condition
- mPm.mHandler.postDelayed(() -> {
- for (int userId : firstUserIds) {
- // MODE_DEFAULT means that the app's guardedness will be decided lazily
- setAccessRestrictedSettingsMode(packageName, appId, userId,
- AppOpsManager.MODE_DEFAULT);
- }
- }, 1000L);
- } else {
+ // currently guarded by ECM, not guarded by ECM or (in Android V+) that this should
+ // be decided later. In Android B, the op's default mode was updated to the
+ // "should be decided later" case, and so this step is now unnecessary.
+ if (!android.permission.flags.Flags.enhancedConfirmationModeApisEnabled()
+ || !android.security.Flags.extendEcmToAllSettings()) {
// Apply restricted settings on potentially dangerous packages. Needs to happen
// after appOpsManager is notified of the new package
if (request.getPackageSource() == PackageInstaller.PACKAGE_SOURCE_LOCAL_FILE
diff --git a/services/core/java/com/android/server/pm/LauncherAppsService.java b/services/core/java/com/android/server/pm/LauncherAppsService.java
index 4c959fafaa8d..2dd679818ada 100644
--- a/services/core/java/com/android/server/pm/LauncherAppsService.java
+++ b/services/core/java/com/android/server/pm/LauncherAppsService.java
@@ -35,6 +35,7 @@ import static android.content.PermissionChecker.checkCallingOrSelfPermissionForP
import static android.content.pm.LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS;
import static android.content.pm.LauncherApps.FLAG_CACHE_NOTIFICATION_SHORTCUTS;
import static android.content.pm.LauncherApps.FLAG_CACHE_PEOPLE_TILE_SHORTCUTS;
+import static android.view.WindowManager.PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI;
import static com.android.server.pm.PackageArchiver.isArchivingEnabled;
@@ -118,7 +119,6 @@ import android.window.IDumpCallback;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.content.PackageMonitor;
-import com.android.internal.infra.AndroidFuture;
import com.android.internal.os.BackgroundThread;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.CollectionUtils;
@@ -850,7 +850,9 @@ public class LauncherAppsService extends SystemService {
// package does not exist; should not happen
return null;
}
- return new LauncherActivityInfoInternal(activityInfo, incrementalStatesInfo, user);
+ return new LauncherActivityInfoInternal(activityInfo, incrementalStatesInfo, user,
+ supportsMultiInstance(mIPM, activityInfo.getComponentName(),
+ user.getIdentifier()));
} finally {
Binder.restoreCallingIdentity(ident);
}
@@ -941,7 +943,7 @@ public class LauncherAppsService extends SystemService {
archiveState.getActivityInfos();
for (int j = 0; j < archiveActivityInfoList.size(); j++) {
launcherActivityList.add(
- constructLauncherActivityInfoForArchivedApp(
+ constructLauncherActivityInfoForArchivedApp(mIPM,
user, applicationInfo, archiveActivityInfoList.get(j)));
}
}
@@ -949,6 +951,7 @@ public class LauncherAppsService extends SystemService {
}
private static LauncherActivityInfoInternal constructLauncherActivityInfoForArchivedApp(
+ IPackageManager pm,
UserHandle user,
ApplicationInfo applicationInfo,
ArchiveState.ArchiveActivityInfo archiveActivityInfo) {
@@ -964,7 +967,9 @@ public class LauncherAppsService extends SystemService {
activityInfo,
new IncrementalStatesInfo(
false /* isLoading */, 0 /* progress */, 0 /* loadingCompletedTime */),
- user);
+ user,
+ supportsMultiInstance(pm, activityInfo.getComponentName(),
+ user.getIdentifier()));
}
@NonNull
@@ -1025,7 +1030,9 @@ public class LauncherAppsService extends SystemService {
continue;
}
results.add(new LauncherActivityInfoInternal(ri.activityInfo,
- incrementalStatesInfo, user));
+ incrementalStatesInfo, user,
+ supportsMultiInstance(mIPM, ri.activityInfo.getComponentName(),
+ user.getIdentifier())));
}
return results;
}
@@ -1660,6 +1667,29 @@ public class LauncherAppsService extends SystemService {
}
}
+ /**
+ * Returns whether the specified activity info has the multi-instance property declared.
+ */
+ @VisibleForTesting
+ static boolean supportsMultiInstance(@NonNull IPackageManager pm,
+ @NonNull ComponentName component, int userId) {
+ try {
+ // Try to get the property for the component
+ return pm.getPropertyAsUser(
+ PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI, component.getPackageName(),
+ component.getClassName(), userId).getBoolean();
+ } catch (Exception e) {
+ try {
+ // Fallback to the property for the app
+ return pm.getPropertyAsUser(
+ PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI, component.getPackageName(),
+ null, userId).getBoolean();
+ } catch (Exception e2) {
+ return false;
+ }
+ }
+ }
+
@Override
public @Nullable LauncherUserInfo getLauncherUserInfo(@NonNull UserHandle user) {
if (!canAccessProfile(user.getIdentifier(),
diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java
index 1b41c3617a05..352985d5a023 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerSession.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java
@@ -189,6 +189,7 @@ import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.Preconditions;
import com.android.modules.utils.TypedXmlPullParser;
import com.android.modules.utils.TypedXmlSerializer;
+import com.android.server.IoThread;
import com.android.server.LocalServices;
import com.android.server.art.ArtManagedInstallFileHelper;
import com.android.server.pm.Installer.InstallerException;
@@ -236,6 +237,8 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
private static final int MSG_SESSION_VALIDATION_FAILURE = 5;
private static final int MSG_PRE_APPROVAL_REQUEST = 6;
+ private static final int MSG_ON_NATIVE_LIBS_EXTRACTED = 7;
+
/** XML constants used for persisting a session */
static final String TAG_SESSION = "session";
static final String TAG_CHILD_SESSION = "childSession";
@@ -943,6 +946,8 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
case MSG_PRE_APPROVAL_REQUEST:
handlePreapprovalRequest();
break;
+ case MSG_ON_NATIVE_LIBS_EXTRACTED:
+ handleOnNativeLibsExtracted();
}
return true;
@@ -2908,15 +2913,13 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
}
private void verify() {
+ // Extract native libraries on the IO thread before proceeding to the verification
+ runExtractNativeLibraries();
+ }
+
+ @WorkerThread
+ private void handleOnNativeLibsExtracted() {
try {
- List<PackageInstallerSession> children = getChildSessions();
- if (isMultiPackage()) {
- for (PackageInstallerSession child : children) {
- child.extractNativeLibraries();
- }
- } else {
- extractNativeLibraries();
- }
verifyNonStaged();
} catch (PackageManagerException e) {
final String completeMsg = ExceptionUtils.getCompleteMessage(e);
@@ -2926,6 +2929,27 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
}
}
+ private void runExtractNativeLibraries() {
+ IoThread.getHandler().post(() -> {
+ try {
+ List<PackageInstallerSession> children = getChildSessions();
+ if (isMultiPackage()) {
+ for (PackageInstallerSession child : children) {
+ child.extractNativeLibraries();
+ }
+ } else {
+ extractNativeLibraries();
+ }
+ mHandler.obtainMessage(MSG_ON_NATIVE_LIBS_EXTRACTED).sendToTarget();
+ } catch (PackageManagerException e) {
+ final String completeMsg = ExceptionUtils.getCompleteMessage(e);
+ final String errorMsg = PackageManager.installStatusToString(e.error, completeMsg);
+ setSessionFailed(e.error, errorMsg);
+ onSessionVerificationFailure(e.error, errorMsg);
+ }
+ });
+ }
+
private IntentSender getRemoteStatusReceiver() {
synchronized (mLock) {
return mRemoteStatusReceiver;
@@ -3072,6 +3096,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
}
}
+ @WorkerThread
private void extractNativeLibraries() throws PackageManagerException {
synchronized (mLock) {
if (mPackageLite != null) {
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 61429a41370c..8343935425cd 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -1477,7 +1477,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
ArchiveState archiveState;
synchronized (mLock) {
PackageSetting ps = mSettings.getPackageLPr(packageName);
- if (ps == null) {
+ if (ps == null || snapshot.shouldFilterApplication(ps, binderUid, userId)) {
return null;
}
var psi = ps.getUserStateOrDefault(userId);
diff --git a/services/core/java/com/android/server/pm/UserManagerInternal.java b/services/core/java/com/android/server/pm/UserManagerInternal.java
index c62aaebf673b..f88681dbcaeb 100644
--- a/services/core/java/com/android/server/pm/UserManagerInternal.java
+++ b/services/core/java/com/android/server/pm/UserManagerInternal.java
@@ -23,7 +23,9 @@ import android.content.Context;
import android.content.pm.LauncherUserInfo;
import android.content.pm.UserInfo;
import android.content.pm.UserProperties;
+import android.content.res.Resources;
import android.graphics.Bitmap;
+import android.multiuser.Flags;
import android.os.Bundle;
import android.os.UserManager;
import android.util.DebugUtils;
@@ -351,8 +353,10 @@ public abstract class UserManagerInternal {
boolean excludePreCreated);
/**
- * Returns an array of ids for profiles associated with the specified user including the user
- * itself.
+ * Returns a list of the users that are associated with the specified user, including the user
+ * itself. This includes the user, its profiles, its parent, and its parent's other profiles,
+ * as applicable.
+ *
* <p>Note that this includes all profile types (not including Restricted profiles).
*
* @param userId id of the user to return profiles for
@@ -617,4 +621,14 @@ public abstract class UserManagerInternal {
* if there is no such user.
*/
public abstract @UserIdInt int getCommunalProfileId();
+
+ /**
+ * Checks whether to show a notification for sounds (e.g., alarms, timers, etc.) from
+ * background users.
+ */
+ public static boolean shouldShowNotificationForBackgroundUserSounds() {
+ return Flags.addUiForSoundsFromBackgroundUsers() && Resources.getSystem().getBoolean(
+ com.android.internal.R.bool.config_showNotificationForBackgroundUserAlarms)
+ && UserManager.supportsMultipleUsers();
+ }
}
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 8cbccf5feead..c7737e9f8bbd 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -33,7 +33,6 @@ import static android.os.UserManager.SYSTEM_USER_MODE_EMULATION_PROPERTY;
import static android.os.UserManager.USER_OPERATION_ERROR_UNKNOWN;
import static android.os.UserManager.USER_OPERATION_ERROR_USER_RESTRICTED;
import static android.os.UserManager.USER_TYPE_PROFILE_PRIVATE;
-import static android.os.UserManager.supportsMultipleUsers;
import static android.provider.Settings.Secure.HIDE_PRIVATESPACE_ENTRY_POINT;
import static com.android.internal.app.SetScreenLockDialogActivity.EXTRA_ORIGIN_USER_ID;
@@ -60,7 +59,6 @@ import android.annotation.RequiresPermission;
import android.annotation.SpecialUsers.CanBeALL;
import android.annotation.SpecialUsers.CanBeCURRENT;
import android.annotation.SpecialUsers.CanBeNULL;
-import android.annotation.SpecialUsers.CannotBeSpecialUser;
import android.annotation.StringRes;
import android.annotation.UserIdInt;
import android.app.ActivityManager;
@@ -131,6 +129,7 @@ import android.os.UserHandle;
import android.os.UserManager;
import android.os.UserManager.EnforcingUser;
import android.os.UserManager.QuietModeFlag;
+import android.os.UserManager.UserLogoutability;
import android.os.storage.StorageManager;
import android.os.storage.StorageManagerInternal;
import android.provider.Settings;
@@ -1161,7 +1160,7 @@ public class UserManagerService extends IUserManager.Stub {
showHsumNotificationIfNeeded();
- if (shouldShowNotificationForBackgroundUserSounds()) {
+ if (UserManagerInternal.shouldShowNotificationForBackgroundUserSounds()) {
new BackgroundUserSoundNotifier(mContext);
}
}
@@ -1474,10 +1473,13 @@ public class UserManagerService extends IUserManager.Stub {
return UserHandle.USER_NULL;
}
-
@Override
public @CanBeNULL @UserIdInt int getPreviousFullUserToEnterForeground() {
checkQueryOrCreateUsersPermission("get previous user");
+ return getPreviousFullUserToEnterForegroundUnchecked();
+ }
+
+ private int getPreviousFullUserToEnterForegroundUnchecked() {
int previousUser = UserHandle.USER_NULL;
long latestEnteredTime = 0;
final int currentUser = getCurrentUserId();
@@ -1638,7 +1640,7 @@ public class UserManagerService extends IUserManager.Stub {
final int userSize = mUsers.size();
for (int i = 0; i < userSize; i++) {
UserInfo profile = mUsers.valueAt(i).info;
- if (!isProfileOf(user, profile)) {
+ if (!isSameProfileGroup(user, profile)) {
continue;
}
if (enabledOnly && !profile.isEnabled()) {
@@ -1706,22 +1708,18 @@ public class UserManagerService extends IUserManager.Stub {
return isSameProfileGroupNoChecks(userId, otherUserId);
}
- /**
- * Returns whether users are in the same non-empty profile group.
- * Currently, false if empty profile group, even if they are the same user, for whatever reason.
- */
+ /** Returns whether users are in the same profile group. */
private boolean isSameProfileGroupNoChecks(@UserIdInt int userId, int otherUserId) {
synchronized (mUsersLock) {
UserInfo userInfo = getUserInfoLU(userId);
- if (userInfo == null || userInfo.profileGroupId == UserInfo.NO_PROFILE_GROUP_ID) {
+ if (userInfo == null) {
return false;
}
UserInfo otherUserInfo = getUserInfoLU(otherUserId);
- if (otherUserInfo == null
- || otherUserInfo.profileGroupId == UserInfo.NO_PROFILE_GROUP_ID) {
+ if (otherUserInfo == null) {
return false;
}
- return userInfo.profileGroupId == otherUserInfo.profileGroupId;
+ return isSameProfileGroup(userInfo, otherUserInfo);
}
}
@@ -1780,10 +1778,10 @@ public class UserManagerService extends IUserManager.Stub {
}
}
- private static boolean isProfileOf(UserInfo user, UserInfo profile) {
- return user.id == profile.id ||
- (user.profileGroupId != UserInfo.NO_PROFILE_GROUP_ID
- && user.profileGroupId == profile.profileGroupId);
+ private static boolean isSameProfileGroup(@NonNull UserInfo user1, @NonNull UserInfo user2) {
+ return user1.id == user2.id ||
+ (user1.profileGroupId != UserInfo.NO_PROFILE_GROUP_ID
+ && user1.profileGroupId == user2.profileGroupId);
}
private String getAvailabilityIntentAction(boolean enableQuietMode, boolean useManagedActions) {
@@ -2921,7 +2919,8 @@ public class UserManagerService extends IUserManager.Stub {
* @return A {@link UserManager.UserSwitchabilityResult} flag indicating if the user is
* switchable.
*/
- public @UserManager.UserSwitchabilityResult int getUserSwitchability(int userId) {
+ @Override
+ public @UserManager.UserSwitchabilityResult int getUserSwitchability(@UserIdInt int userId) {
if (Flags.getUserSwitchabilityPermission()) {
if (!hasManageUsersOrPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)) {
throw new SecurityException(
@@ -3000,6 +2999,49 @@ public class UserManagerService extends IUserManager.Stub {
}
@Override
+ public @UserLogoutability int getUserLogoutability(@UserIdInt int userId) {
+ if (!android.multiuser.Flags.logoutUserApi()) {
+ throw new UnsupportedOperationException(
+ "aconfig flag android.multiuser.logout_user_api not enabled");
+ }
+
+ checkManageUsersPermission("getUserLogoutability");
+
+ if (userId == UserHandle.USER_SYSTEM) {
+ return UserManager.LOGOUTABILITY_STATUS_CANNOT_LOGOUT_SYSTEM_USER;
+ }
+
+ if (userId != getCurrentUserId()) {
+ // TODO(b/393656514): Decide what to do with non-current/background users.
+ // As of now, we are not going to logout a background user. A background user should
+ // simply be stopped instead.
+ return UserManager.LOGOUTABILITY_STATUS_CANNOT_SWITCH;
+ }
+
+ if (getUserSwitchability(userId) != UserManager.SWITCHABILITY_STATUS_OK) {
+ return UserManager.LOGOUTABILITY_STATUS_CANNOT_SWITCH;
+ }
+
+ if (getUserToLogoutCurrentUserTo() == UserHandle.USER_NULL) {
+ return UserManager.LOGOUTABILITY_STATUS_NO_SUITABLE_USER_TO_LOGOUT_TO;
+ }
+
+ return UserManager.LOGOUTABILITY_STATUS_OK;
+ }
+
+ /**
+ * Returns the user to switch to, when logging out current user. If in HSUM and has interactive
+ * system user, then logout would switch to the system user. Otherwise, logout would switch to
+ * the previous foreground user.
+ */
+ private @UserIdInt int getUserToLogoutCurrentUserTo() {
+ if (isHeadlessSystemUserMode() && canSwitchToHeadlessSystemUser()) {
+ return USER_SYSTEM;
+ }
+ return getPreviousFullUserToEnterForegroundUnchecked();
+ }
+
+ @Override
public boolean isUserSwitcherEnabled(boolean showEvenIfNotActionable,
@UserIdInt int userId) {
if (!isUserSwitcherEnabled(userId)) {
@@ -7551,6 +7593,10 @@ public class UserManagerService extends IUserManager.Stub {
pw.println(" (and being updated after boot)");
}
}
+ if (isHeadlessSystemUserMode) {
+ pw.println(" Can switch to headless system user: " + Resources.getSystem()
+ .getBoolean(com.android.internal.R.bool.config_canSwitchToHeadlessSystemUser));
+ }
pw.println(" User version: " + mUserVersion);
pw.println(" Owner name: " + getOwnerName());
if (DBG_ALLOCATION) {
@@ -8413,21 +8459,27 @@ public class UserManagerService extends IUserManager.Stub {
}
/**
- * Checks if the given user has a profile associated with it.
- * @param userId The parent user
- * @return
+ * Formerly: Checks if the given user has a profile associated with it.
+ * Now: Just throws. Do not use it.
+ * @param userId The parent user (passing in a profile user is not supported)
+ * @deprecated
*/
boolean hasProfile(@UserIdInt int userId) {
- synchronized (mUsersLock) {
- UserInfo userInfo = getUserInfoLU(userId);
- final int userSize = mUsers.size();
- for (int i = 0; i < userSize; i++) {
- UserInfo profile = mUsers.valueAt(i).info;
- if (userId != profile.id && isProfileOf(userInfo, profile)) {
- return true;
+ if (!android.content.pm.Flags.removeCrossUserPermissionHack()) {
+ synchronized (mUsersLock) {
+ UserInfo userInfo = getUserInfoLU(userId);
+ final int userSize = mUsers.size();
+ for (int i = 0; i < userSize; i++) {
+ UserInfo profile = mUsers.valueAt(i).info;
+ if (userId != profile.id && isSameProfileGroup(userInfo, profile)) {
+ return true;
+ }
}
+ return false;
}
- return false;
+ } else {
+ // TODO(b/332664521): Remove this method entirely. It is no longer used.
+ throw new UnsupportedOperationException();
}
}
@@ -8499,16 +8551,6 @@ public class UserManagerService extends IUserManager.Stub {
}
/**
- * Checks whether to show a notification for sounds (e.g., alarms, timers, etc.) from
- * background users.
- */
- public static boolean shouldShowNotificationForBackgroundUserSounds() {
- return Flags.addUiForSoundsFromBackgroundUsers() && Resources.getSystem().getBoolean(
- com.android.internal.R.bool.config_showNotificationForBackgroundUserAlarms)
- && supportsMultipleUsers();
- }
-
- /**
* Returns instance of {@link com.android.server.pm.UserJourneyLogger}.
*/
public UserJourneyLogger getUserJourneyLogger() {
diff --git a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
index 2bc6d53147fb..a1082481abb8 100644
--- a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
+++ b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
@@ -309,7 +309,8 @@ public class UserRestrictionsUtils {
* in settings. So it is handled separately.
*/
private static final Set<String> DEFAULT_ENABLED_FOR_MANAGED_PROFILES = Sets.newArraySet(
- UserManager.DISALLOW_BLUETOOTH_SHARING
+ UserManager.DISALLOW_BLUETOOTH_SHARING,
+ UserManager.DISALLOW_DEBUGGING_FEATURES
);
/**
diff --git a/services/core/java/com/android/server/pm/parsing/pkg/AndroidPackageUtils.java b/services/core/java/com/android/server/pm/parsing/pkg/AndroidPackageUtils.java
index 1b7c7ad94dc9..c0441e4e4d46 100644
--- a/services/core/java/com/android/server/pm/parsing/pkg/AndroidPackageUtils.java
+++ b/services/core/java/com/android/server/pm/parsing/pkg/AndroidPackageUtils.java
@@ -155,11 +155,14 @@ public class AndroidPackageUtils {
public static NativeLibraryHelper.Handle createNativeLibraryHandle(AndroidPackage pkg)
throws IOException {
+ boolean pageSizeCompatDisabled = pkg.getPageSizeAppCompatFlags()
+ == ApplicationInfo.PAGE_SIZE_APP_COMPAT_FLAG_MANIFEST_OVERRIDE_DISABLED;
return NativeLibraryHelper.Handle.create(
AndroidPackageUtils.getAllCodePaths(pkg),
pkg.isMultiArch(),
pkg.isExtractNativeLibrariesRequested(),
- pkg.isDebuggable()
+ pkg.isDebuggable(),
+ pageSizeCompatDisabled
);
}
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
index b905041b59e5..5c5a9c1b6c05 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
@@ -271,8 +271,9 @@ public class PermissionManagerService extends IPermissionManager.Stub {
@NonNull String permissionName, int deviceId) {
Objects.requireNonNull(permissionName, "permission can't be null.");
Objects.requireNonNull(packageName, "package name can't be null.");
+
return mPermissionManagerServiceImpl.getPermissionRequestState(packageName, permissionName,
- getPersistentDeviceId(deviceId));
+ deviceId, getPersistentDeviceId(deviceId));
}
private String getPersistentDeviceId(int deviceId) {
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
index ca70bddc5ac1..e51ec04e60fe 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
@@ -1014,7 +1014,8 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
}
@Override
- public int getPermissionRequestState(String packageName, String permName, String deviceId) {
+ public int getPermissionRequestState(String packageName, String permName, int deviceId,
+ String persistentDeviceId) {
throw new IllegalStateException("getPermissionRequestState is not supported.");
}
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInterface.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInterface.java
index b607832767a1..3d295f773805 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInterface.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInterface.java
@@ -415,7 +415,7 @@ public interface PermissionManagerServiceInterface extends PermissionManagerInte
* for permission request permission flow.
*/
int getPermissionRequestState(@NonNull String packageName, @NonNull String permName,
- @NonNull String deviceId);
+ int deviceId, @NonNull String persistentDeviceId);
/**
* Gets the permission states for requested package, persistent device and user.
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceLoggingDecorator.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceLoggingDecorator.java
index ba5e97e7b113..f5764006e766 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceLoggingDecorator.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceLoggingDecorator.java
@@ -247,10 +247,12 @@ public class PermissionManagerServiceLoggingDecorator implements PermissionManag
}
@Override
- public int getPermissionRequestState(String packageName, String permName, String deviceId) {
+ public int getPermissionRequestState(String packageName, String permName, int deviceId,
+ String persistentDeviceId) {
Log.i(LOG_TAG, "checkUidPermissionState(permName = " + permName + ", deviceId = "
- + deviceId + ", packageName = " + packageName + ")");
- return mService.getPermissionRequestState(packageName, permName, deviceId);
+ + persistentDeviceId + ", packageName = " + packageName + ")");
+ return mService.getPermissionRequestState(
+ packageName, permName, deviceId, persistentDeviceId);
}
@Override
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceTestingShim.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceTestingShim.java
index 008c14db8b65..21a357025cfb 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceTestingShim.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceTestingShim.java
@@ -319,8 +319,10 @@ public class PermissionManagerServiceTestingShim implements PermissionManagerSer
}
@Override
- public int getPermissionRequestState(String packageName, String permName, String deviceId) {
- return mNewImplementation.getPermissionRequestState(packageName, permName, deviceId);
+ public int getPermissionRequestState(String packageName, String permName, int deviceId,
+ String persistentDeviceId) {
+ return mNewImplementation.getPermissionRequestState(
+ packageName, permName, deviceId, persistentDeviceId);
}
@Override
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceTracingDecorator.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceTracingDecorator.java
index 2a47f51da951..e51afb0f66c5 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceTracingDecorator.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceTracingDecorator.java
@@ -347,11 +347,13 @@ public class PermissionManagerServiceTracingDecorator implements PermissionManag
@Override
- public int getPermissionRequestState(String packageName, String permName, String deviceId) {
+ public int getPermissionRequestState(String packageName, String permName, int deviceId,
+ String persistentDeviceId) {
Trace.traceBegin(TRACE_TAG,
"TaggedTracingPermissionManagerServiceImpl#checkUidPermissionState");
try {
- return mService.getPermissionRequestState(packageName, permName, deviceId);
+ return mService.getPermissionRequestState(
+ packageName, permName, deviceId, persistentDeviceId);
} finally {
Trace.traceEnd(TRACE_TAG);
}
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 4860b7cdfcd3..0aaa0fea3740 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -231,6 +231,7 @@ import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto;
import com.android.internal.os.RoSystemProperties;
import com.android.internal.policy.IKeyguardDismissCallback;
+import com.android.internal.policy.IKeyguardService;
import com.android.internal.policy.IShortcutService;
import com.android.internal.policy.KeyInterceptionInfo;
import com.android.internal.policy.LogDecelerateInterpolator;
@@ -309,6 +310,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
static final int SHORT_PRESS_POWER_CLOSE_IME_OR_GO_HOME = 5;
static final int SHORT_PRESS_POWER_LOCK_OR_SLEEP = 6;
static final int SHORT_PRESS_POWER_DREAM_OR_SLEEP = 7;
+ static final int SHORT_PRESS_POWER_HUB_OR_DREAM_OR_SLEEP = 8;
// must match: config_LongPressOnPowerBehavior in config.xml
// The config value can be overridden using Settings.Global.POWER_BUTTON_LONG_PRESS
@@ -403,6 +405,13 @@ public class PhoneWindowManager implements WindowManagerPolicy {
public static final String TRACE_WAIT_FOR_ALL_WINDOWS_DRAWN_METHOD = "waitForAllWindowsDrawn";
+ /**
+ * String extra key passed in the bundle of {@link IKeyguardService#doKeyguardTimeout(Bundle)}
+ * if the value is {@code true}, indicates to keyguard that the device should show the
+ * glanceable hub upon locking. If the hub is already visible, the device should go to sleep.
+ */
+ public static final String EXTRA_TRIGGER_HUB = "extra_trigger_hub";
+
private static final int POWER_BUTTON_SUPPRESSION_DELAY_DEFAULT_MILLIS = 800;
/**
@@ -1154,7 +1163,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
}
- private void powerPress(long eventTime, int count, int displayId) {
+ @VisibleForTesting
+ void powerPress(long eventTime, int count, int displayId) {
// SideFPS still needs to know about suppressed power buttons, in case it needs to block
// an auth attempt.
if (count == 1) {
@@ -1229,6 +1239,43 @@ public class PhoneWindowManager implements WindowManagerPolicy {
() -> sleepDefaultDisplayFromPowerButton(eventTime, 0));
break;
}
+ case SHORT_PRESS_POWER_HUB_OR_DREAM_OR_SLEEP: {
+ // With this power button behavior, the following behavior is expected from each
+ // system space on a power button short press:
+ // - Unlocked: go to hub if available, dream if not, screen off if neither
+ // - Lock screen, hub, or dream: go to screen off
+ // - Screen off: go to hub if available, dream if not, lock screen if enabled,
+ // unlocked if lockscreen is disabled
+ // TODO(b/394657933): consolidate policy into SysUI
+ final boolean hubEnabled = Settings.Secure.getIntForUser(
+ mContext.getContentResolver(), Settings.Secure.GLANCEABLE_HUB_ENABLED,
+ 1, mCurrentUserId) == 1;
+
+ if (mDreamManagerInternal.isDreaming() || isKeyguardShowing()) {
+ // If the device is already dreaming or on keyguard, go to sleep.
+ sleepDefaultDisplayFromPowerButton(eventTime, 0);
+ break;
+ }
+
+ // Check isLockScreenDisabled to exclude NONE lock screen option, which cannot
+ // show hub.
+ boolean keyguardAvailable = !mLockPatternUtils.isLockScreenDisabled(
+ mCurrentUserId);
+ if (mUserManagerInternal.isUserUnlocked(mCurrentUserId) && hubEnabled
+ && keyguardAvailable && mDreamManagerInternal.dreamConditionActive()) {
+ // If the hub can be launched, send a message to keyguard.
+ Bundle options = new Bundle();
+ options.putBoolean(EXTRA_TRIGGER_HUB, true);
+ lockNow(options);
+ } else {
+ // If the hub cannot be run, attempt to dream instead.
+ attemptToDreamFromShortPowerButtonPress(
+ /* isScreenOn */ true,
+ /* noDreamAction */
+ () -> sleepDefaultDisplayFromPowerButton(eventTime, 0));
+ }
+ break;
+ }
}
}
}
@@ -1279,7 +1326,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
*/
private void attemptToDreamFromShortPowerButtonPress(
boolean isScreenOn, Runnable noDreamAction) {
- if (mShortPressOnPowerBehavior != SHORT_PRESS_POWER_DREAM_OR_SLEEP) {
+ if (mShortPressOnPowerBehavior != SHORT_PRESS_POWER_DREAM_OR_SLEEP
+ && mShortPressOnPowerBehavior != SHORT_PRESS_POWER_HUB_OR_DREAM_OR_SLEEP) {
+ // If the power button behavior isn't one that should be able to trigger the dream, give
+ // up.
noDreamAction.run();
return;
}
@@ -5132,8 +5182,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
/**
- * Updates the occluded state of the Keyguard immediately via
- * {@link com.android.internal.policy.IKeyguardService}.
+ * Updates the occluded state of the Keyguard immediately via {@link IKeyguardService}.
*
* @param isOccluded Whether the Keyguard is occluded by another window.
* @return Whether the flags have changed and we have to redo the layout.
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index 090707db50a5..8fae875eb29b 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -5979,10 +5979,19 @@ public final class PowerManagerService extends SystemService
if (uids != null) {
ws = new WorkSource();
- // XXX should WorkSource have a way to set uids as an int[] instead of adding them
- // one at a time?
- for (int uid : uids) {
- ws.add(uid);
+ if (mFeatureFlags.isWakelockAttributionViaWorkchainEnabled()) {
+ int callingUid = Binder.getCallingUid();
+ for (int uid : uids) {
+ WorkChain workChain = ws.createWorkChain();
+ workChain.addNode(uid, null);
+ workChain.addNode(callingUid, null);
+ }
+ } else {
+ // XXX should WorkSource have a way to set uids as an int[] instead of
+ // adding them one at a time?
+ for (int uid : uids) {
+ ws.add(uid);
+ }
}
}
updateWakeLockWorkSource(lock, ws, null);
diff --git a/services/core/java/com/android/server/power/ShutdownCheckPoints.java b/services/core/java/com/android/server/power/ShutdownCheckPoints.java
index dafaa7d5f134..399e214aa955 100644
--- a/services/core/java/com/android/server/power/ShutdownCheckPoints.java
+++ b/services/core/java/com/android/server/power/ShutdownCheckPoints.java
@@ -350,17 +350,23 @@ public final class ShutdownCheckPoints {
private final ShutdownCheckPoints mInstance;
private final File mBaseFile;
+ private final File mBaseDir;
private final int mFileCountLimit;
FileDumperThread(ShutdownCheckPoints instance, File baseFile, int fileCountLimit) {
mInstance = instance;
mBaseFile = baseFile;
+ mBaseDir = baseFile.getParentFile();
mFileCountLimit = fileCountLimit;
}
@Override
public void run() {
- mBaseFile.getParentFile().mkdirs();
+ if (!mBaseDir.exists()) {
+ mBaseDir.mkdirs();
+ mBaseDir.setExecutable(true, false);
+ mBaseDir.setReadable(true, false);
+ }
File[] checkPointFiles = listCheckPointsFiles();
int filesToDelete = checkPointFiles.length - mFileCountLimit + 1;
@@ -375,7 +381,7 @@ public final class ShutdownCheckPoints {
private File[] listCheckPointsFiles() {
String filePrefix = mBaseFile.getName() + "-";
- File[] files = mBaseFile.getParentFile().listFiles(new FilenameFilter() {
+ File[] files = mBaseDir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if (!name.startsWith(filePrefix)) {
@@ -412,6 +418,7 @@ public final class ShutdownCheckPoints {
}
}
mBaseFile.renameTo(file);
+ file.setReadable(true, false);
}
}
}
diff --git a/services/core/java/com/android/server/power/feature/PowerManagerFlags.java b/services/core/java/com/android/server/power/feature/PowerManagerFlags.java
index 42b44013bea2..ebc50fd85f24 100644
--- a/services/core/java/com/android/server/power/feature/PowerManagerFlags.java
+++ b/services/core/java/com/android/server/power/feature/PowerManagerFlags.java
@@ -63,6 +63,10 @@ public class PowerManagerFlags {
private final FlagState mMoveWscLoggingToNotifier =
new FlagState(Flags.FLAG_MOVE_WSC_LOGGING_TO_NOTIFIER, Flags::moveWscLoggingToNotifier);
+ private final FlagState mWakelockAttributionViaWorkchain =
+ new FlagState(Flags.FLAG_WAKELOCK_ATTRIBUTION_VIA_WORKCHAIN,
+ Flags::wakelockAttributionViaWorkchain);
+
/** Returns whether early-screen-timeout-detector is enabled on not. */
public boolean isEarlyScreenTimeoutDetectorEnabled() {
return mEarlyScreenTimeoutDetectorFlagState.isEnabled();
@@ -110,6 +114,13 @@ public class PowerManagerFlags {
}
/**
+ * @return Whether the wakelock attribution via workchain is enabled
+ */
+ public boolean isWakelockAttributionViaWorkchainEnabled() {
+ return mWakelockAttributionViaWorkchain.isEnabled();
+ }
+
+ /**
* dumps all flagstates
* @param pw printWriter
*/
@@ -120,6 +131,7 @@ public class PowerManagerFlags {
pw.println(" " + mPerDisplayWakeByTouch);
pw.println(" " + mFrameworkWakelockInfo);
pw.println(" " + mMoveWscLoggingToNotifier);
+ pw.println(" " + mWakelockAttributionViaWorkchain);
}
private static class FlagState {
diff --git a/services/core/java/com/android/server/power/feature/power_flags.aconfig b/services/core/java/com/android/server/power/feature/power_flags.aconfig
index 613daf820e34..fefe195dc337 100644
--- a/services/core/java/com/android/server/power/feature/power_flags.aconfig
+++ b/services/core/java/com/android/server/power/feature/power_flags.aconfig
@@ -23,6 +23,17 @@ flag {
}
flag {
+ name: "wakelock_attribution_via_workchain"
+ namespace: "power"
+ description: "Enables the attribution of wakelocks via WorkChain for updateWakelockUids"
+ bug: "331304805"
+ is_fixed_read_only: true
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
+flag {
name: "improve_wakelock_latency"
namespace: "power"
description: "Feature flag for tracking the optimizations to improve the latency of acquiring and releasing a wakelock."
diff --git a/services/core/java/com/android/server/power/stats/BatteryHistoryDirectory.java b/services/core/java/com/android/server/power/stats/BatteryHistoryDirectory.java
new file mode 100644
index 000000000000..adf308a522ed
--- /dev/null
+++ b/services/core/java/com/android/server/power/stats/BatteryHistoryDirectory.java
@@ -0,0 +1,573 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.server.power.stats;
+
+import static android.os.Trace.TRACE_TAG_SYSTEM_SERVER;
+
+import android.annotation.NonNull;
+import android.os.SystemClock;
+import android.os.Trace;
+import android.util.ArraySet;
+import android.util.AtomicFile;
+import android.util.Slog;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.os.BackgroundThread;
+import com.android.internal.os.BatteryStatsHistory;
+import com.android.internal.os.BatteryStatsHistory.BatteryHistoryFragment;
+
+import org.apache.commons.compress.compressors.gzip.GzipCompressorOutputStream;
+import org.apache.commons.compress.compressors.gzip.GzipParameters;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Locale;
+import java.util.Set;
+import java.util.concurrent.locks.ReentrantLock;
+import java.util.zip.Deflater;
+import java.util.zip.GZIPInputStream;
+
+public class BatteryHistoryDirectory implements BatteryStatsHistory.BatteryHistoryStore {
+ public static final String TAG = "BatteryHistoryDirectory";
+ private static final boolean DEBUG = false;
+
+ private static final String FILE_SUFFIX = ".bh";
+
+ // Size of the magic number written at the start of each history file
+ private static final int FILE_FORMAT_BYTES = 4;
+ private static final byte[] FILE_FORMAT_PARCEL = {0x50, 0x52, 0x43, 0x4c}; // PRCL
+ private static final byte[] FILE_FORMAT_COMPRESSED_PARCEL = {0x47, 0x5a, 0x49, 0x50}; // GZIP
+
+ static class BatteryHistoryFile extends BatteryHistoryFragment {
+ public final AtomicFile atomicFile;
+
+ BatteryHistoryFile(File directory, long monotonicTimeMs) {
+ super(monotonicTimeMs);
+ atomicFile = new AtomicFile(new File(directory, monotonicTimeMs + FILE_SUFFIX));
+ }
+
+ @Override
+ public String toString() {
+ return atomicFile.getBaseFile().toString();
+ }
+ }
+
+ interface Compressor {
+ void compress(OutputStream stream, byte[] data) throws IOException;
+ void uncompress(byte[] data, InputStream stream) throws IOException;
+
+ default void readFully(byte[] data, InputStream stream) throws IOException {
+ int pos = 0;
+ while (pos < data.length) {
+ int count = stream.read(data, pos, data.length - pos);
+ if (count == -1) {
+ throw new IOException("Invalid battery history file format");
+ }
+ pos += count;
+ }
+ }
+ }
+
+ static final Compressor DEFAULT_COMPRESSOR = new Compressor() {
+ @Override
+ public void compress(OutputStream stream, byte[] data) throws IOException {
+ // With the BEST_SPEED hint, we see ~4x improvement in write latency over
+ // GZIPOutputStream.
+ GzipParameters parameters = new GzipParameters();
+ parameters.setCompressionLevel(Deflater.BEST_SPEED);
+ GzipCompressorOutputStream os = new GzipCompressorOutputStream(stream, parameters);
+ os.write(data);
+ os.finish();
+ os.flush();
+ }
+
+ @Override
+ public void uncompress(byte[] data, InputStream stream) throws IOException {
+ readFully(data, new GZIPInputStream(stream));
+ }
+ };
+
+ private final File mDirectory;
+ private int mMaxHistorySize;
+ private boolean mInitialized;
+ private final List<BatteryHistoryFile> mHistoryFiles = new ArrayList<>();
+ private final ReentrantLock mLock = new ReentrantLock();
+ private final Compressor mCompressor;
+ private boolean mWaitForDirectoryLock = false;
+ private boolean mFileCompressionEnabled;
+
+ public BatteryHistoryDirectory(@NonNull File directory, int maxHistorySize) {
+ this(directory, maxHistorySize, DEFAULT_COMPRESSOR);
+ }
+
+ public BatteryHistoryDirectory(@NonNull File directory, int maxHistorySize,
+ Compressor compressor) {
+ mDirectory = directory;
+ mMaxHistorySize = maxHistorySize;
+ if (mMaxHistorySize == 0) {
+ Slog.w(TAG, "maxHistorySize should not be zero");
+ }
+ mCompressor = compressor;
+ }
+
+ public void setFileCompressionEnabled(boolean enabled) {
+ mFileCompressionEnabled = enabled;
+ }
+
+ void setMaxHistorySize(int maxHistorySize) {
+ mMaxHistorySize = maxHistorySize;
+ trim();
+ }
+
+ /**
+ * Returns the maximum storage size allocated to battery history.
+ */
+ public int getMaxHistorySize() {
+ return mMaxHistorySize;
+ }
+
+ @Override
+ public void lock() {
+ mLock.lock();
+ }
+
+ /**
+ * Turns "tryLock" into "lock" to prevent flaky unit tests.
+ * Should only be called from unit tests.
+ */
+ @VisibleForTesting
+ void makeDirectoryLockUnconditional() {
+ mWaitForDirectoryLock = true;
+ }
+
+ @Override
+ public boolean tryLock() {
+ if (mWaitForDirectoryLock) {
+ mLock.lock();
+ return true;
+ }
+ return mLock.tryLock();
+ }
+
+ @Override
+ public void writeFragment(BatteryHistoryFragment fragment,
+ @NonNull byte[] data, boolean fragmentComplete) {
+ AtomicFile file = ((BatteryHistoryFile) fragment).atomicFile;
+ FileOutputStream fos = null;
+ try {
+ final long startTimeMs = SystemClock.uptimeMillis();
+ fos = file.startWrite();
+ fos.write(FILE_FORMAT_PARCEL);
+ writeInt(fos, data.length);
+ fos.write(data);
+ fos.flush();
+ file.finishWrite(fos);
+ if (DEBUG) {
+ Slog.d(TAG, "writeHistoryFragment file:" + file.getBaseFile().getPath()
+ + " duration ms:" + (SystemClock.uptimeMillis() - startTimeMs)
+ + " bytes:" + data.length);
+ }
+ if (fragmentComplete) {
+ if (mFileCompressionEnabled) {
+ BackgroundThread.getHandler().post(
+ () -> writeHistoryFragmentCompressed(file, data));
+ }
+ BackgroundThread.getHandler().post(()-> trim());
+ }
+ } catch (IOException e) {
+ Slog.w(TAG, "Error writing battery history fragment", e);
+ file.failWrite(fos);
+ }
+ }
+
+ private void writeHistoryFragmentCompressed(AtomicFile file, byte[] data) {
+ long uncompressedSize = data.length;
+ if (uncompressedSize == 0) {
+ return;
+ }
+
+ Trace.traceBegin(TRACE_TAG_SYSTEM_SERVER, "BatteryStatsHistory.compressHistoryFile");
+ lock();
+ FileOutputStream fos = null;
+ try {
+ long startTimeNs = System.nanoTime();
+ fos = file.startWrite();
+ fos.write(FILE_FORMAT_COMPRESSED_PARCEL);
+ writeInt(fos, data.length);
+
+ mCompressor.compress(fos, data);
+ file.finishWrite(fos);
+
+ if (DEBUG) {
+ long endTimeNs = System.nanoTime();
+ long compressedSize = file.getBaseFile().length();
+ Slog.i(TAG, String.format(Locale.ENGLISH,
+ "Compressed battery history file %s original size: %d compressed: %d "
+ + "(%.1f%%) elapsed: %.2f ms",
+ file.getBaseFile(), uncompressedSize, compressedSize,
+ (uncompressedSize - compressedSize) * 100.0 / uncompressedSize,
+ (endTimeNs - startTimeNs) / 1000000.0));
+ }
+ } catch (Exception e) {
+ Slog.w(TAG, "Error compressing battery history chunk " + file, e);
+ file.failWrite(fos);
+ } finally {
+ unlock();
+ Trace.traceEnd(TRACE_TAG_SYSTEM_SERVER);
+ }
+ }
+
+ @Override
+ public byte[] readFragment(BatteryHistoryFragment fragment) {
+ AtomicFile file = ((BatteryHistoryFile) fragment).atomicFile;
+ if (!file.exists()) {
+ deleteFragment(fragment);
+ return null;
+ }
+ final long start = SystemClock.uptimeMillis();
+ Trace.traceBegin(TRACE_TAG_SYSTEM_SERVER, "BatteryStatsHistory.read");
+ try (FileInputStream stream = file.openRead()) {
+ byte[] header = new byte[FILE_FORMAT_BYTES];
+ if (stream.read(header, 0, FILE_FORMAT_BYTES) == -1) {
+ Slog.e(TAG, "Invalid battery history file format " + file.getBaseFile());
+ deleteFragment(fragment);
+ return null;
+ }
+
+ boolean isCompressed;
+ if (Arrays.equals(header, FILE_FORMAT_COMPRESSED_PARCEL)) {
+ isCompressed = true;
+ } else if (Arrays.equals(header, FILE_FORMAT_PARCEL)) {
+ isCompressed = false;
+ } else {
+ Slog.e(TAG, "Invalid battery history file format " + file.getBaseFile());
+ deleteFragment(fragment);
+ return null;
+ }
+
+ int size = readInt(stream);
+ if (size < 0 || size > 10000000) { // Validity check to avoid a crash
+ Slog.e(TAG, "Invalid battery history file format " + file.getBaseFile());
+ deleteFragment(fragment);
+ return null;
+ }
+
+ byte[] data = new byte[size];
+ if (isCompressed) {
+ mCompressor.uncompress(data, stream);
+ } else {
+ int pos = 0;
+ while (pos < data.length) {
+ int count = stream.read(data, pos, data.length - pos);
+ if (count == -1) {
+ throw new IOException("Invalid battery history file format");
+ }
+ pos += count;
+ }
+ }
+ if (DEBUG) {
+ Slog.d(TAG, "readHistoryFragment:" + file.getBaseFile().getPath()
+ + " duration ms:" + (SystemClock.uptimeMillis() - start));
+ }
+ return data;
+ } catch (Exception e) {
+ Slog.e(TAG, "Error reading file " + file.getBaseFile().getPath(), e);
+ deleteFragment(fragment);
+ return null;
+ } finally {
+ Trace.traceEnd(TRACE_TAG_SYSTEM_SERVER);
+ }
+ }
+
+ private void deleteFragment(BatteryHistoryFragment fragment) {
+ mHistoryFiles.remove(fragment);
+ ((BatteryHistoryFile) fragment).atomicFile.delete();
+ }
+
+ @Override
+ public void unlock() {
+ mLock.unlock();
+ }
+
+ @Override
+ public boolean isLocked() {
+ return mLock.isLocked();
+ }
+
+ private void ensureInitialized() {
+ if (mInitialized) {
+ return;
+ }
+
+ Trace.asyncTraceBegin(TRACE_TAG_SYSTEM_SERVER, "BatteryStatsHistory.load", 0);
+ mDirectory.mkdirs();
+ if (!mDirectory.exists()) {
+ Slog.wtf(TAG, "HistoryDir does not exist:" + mDirectory.getPath());
+ }
+
+ final List<File> toRemove = new ArrayList<>();
+ final Set<BatteryHistoryFile> dedup = new ArraySet<>();
+ mDirectory.listFiles((dir, name) -> {
+ final int b = name.lastIndexOf(FILE_SUFFIX);
+ if (b <= 0) {
+ toRemove.add(new File(dir, name));
+ return false;
+ }
+ try {
+ long monotonicTime = Long.parseLong(name.substring(0, b));
+ dedup.add(new BatteryHistoryFile(mDirectory, monotonicTime));
+ } catch (NumberFormatException e) {
+ toRemove.add(new File(dir, name));
+ return false;
+ }
+ return true;
+ });
+ if (!dedup.isEmpty()) {
+ mHistoryFiles.addAll(dedup);
+ Collections.sort(mHistoryFiles);
+ }
+ mInitialized = true;
+ if (!toRemove.isEmpty()) {
+ // Clear out legacy history files, which did not follow the X-Y.bin naming format.
+ BackgroundThread.getHandler().post(() -> {
+ lock();
+ try {
+ for (File file : toRemove) {
+ file.delete();
+ }
+ } finally {
+ unlock();
+ Trace.asyncTraceEnd(TRACE_TAG_SYSTEM_SERVER, "BatteryStatsHistory.load", 0);
+ }
+ });
+ } else {
+ Trace.asyncTraceEnd(TRACE_TAG_SYSTEM_SERVER, "BatteryStatsHistory.load", 0);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public List<BatteryHistoryFragment> getFragments() {
+ ensureInitialized();
+ return (List<BatteryHistoryFragment>)
+ (List<? extends BatteryHistoryFragment>) mHistoryFiles;
+ }
+
+ @VisibleForTesting
+ List<String> getFileNames() {
+ ensureInitialized();
+ lock();
+ try {
+ List<String> names = new ArrayList<>();
+ for (BatteryHistoryFile historyFile : mHistoryFiles) {
+ names.add(historyFile.atomicFile.getBaseFile().getName());
+ }
+ return names;
+ } finally {
+ unlock();
+ }
+ }
+
+ @Override
+ public BatteryHistoryFragment getEarliestFragment() {
+ ensureInitialized();
+ lock();
+ try {
+ if (!mHistoryFiles.isEmpty()) {
+ return mHistoryFiles.get(0);
+ }
+ return null;
+ } finally {
+ unlock();
+ }
+ }
+
+ @Override
+ public BatteryHistoryFragment getLatestFragment() {
+ ensureInitialized();
+ lock();
+ try {
+ if (!mHistoryFiles.isEmpty()) {
+ return mHistoryFiles.get(mHistoryFiles.size() - 1);
+ }
+ return null;
+ } finally {
+ unlock();
+ }
+ }
+
+ @Override
+ public BatteryHistoryFragment createFragment(long monotonicStartTime) {
+ ensureInitialized();
+
+ BatteryHistoryFile file = new BatteryHistoryFile(mDirectory, monotonicStartTime);
+ lock();
+ try {
+ try {
+ file.atomicFile.getBaseFile().createNewFile();
+ } catch (IOException e) {
+ Slog.e(TAG, "Could not create history file: " + file);
+ }
+ mHistoryFiles.add(file);
+ } finally {
+ unlock();
+ }
+
+ return file;
+ }
+
+ @Override
+ public BatteryHistoryFragment getNextFragment(BatteryHistoryFragment current, long startTimeMs,
+ long endTimeMs) {
+ ensureInitialized();
+
+ if (!mLock.isHeldByCurrentThread()) {
+ throw new IllegalStateException("Iterating battery history without a lock");
+ }
+
+ int nextFileIndex = 0;
+ int firstFileIndex = 0;
+ // skip the last file because its data is in history buffer.
+ int lastFileIndex = mHistoryFiles.size() - 2;
+ for (int i = lastFileIndex; i >= 0; i--) {
+ BatteryHistoryFragment fragment = mHistoryFiles.get(i);
+ if (current != null && fragment.monotonicTimeMs == current.monotonicTimeMs) {
+ nextFileIndex = i + 1;
+ }
+ if (fragment.monotonicTimeMs > endTimeMs) {
+ lastFileIndex = i - 1;
+ }
+ if (fragment.monotonicTimeMs <= startTimeMs) {
+ firstFileIndex = i;
+ break;
+ }
+ }
+
+ if (nextFileIndex < firstFileIndex) {
+ nextFileIndex = firstFileIndex;
+ }
+
+ if (nextFileIndex <= lastFileIndex) {
+ return mHistoryFiles.get(nextFileIndex);
+ }
+
+ return null;
+ }
+
+ @Override
+ public boolean hasCompletedFragments() {
+ ensureInitialized();
+
+ lock();
+ try {
+ // Active file is partial and does not count as "competed"
+ return mHistoryFiles.size() > 1;
+ } finally {
+ unlock();
+ }
+ }
+
+ @Override
+ public int getSize() {
+ ensureInitialized();
+
+ lock();
+ try {
+ int ret = 0;
+ for (int i = 0; i < mHistoryFiles.size() - 1; i++) {
+ ret += (int) mHistoryFiles.get(i).atomicFile.getBaseFile().length();
+ }
+ return ret;
+ } finally {
+ unlock();
+ }
+ }
+
+ @Override
+ public void reset() {
+ ensureInitialized();
+
+ lock();
+ try {
+ if (DEBUG) {
+ Slog.i(TAG, "********** CLEARING HISTORY!");
+ }
+ for (BatteryHistoryFile file : mHistoryFiles) {
+ file.atomicFile.delete();
+ }
+ mHistoryFiles.clear();
+ } finally {
+ unlock();
+ }
+ }
+
+ private void trim() {
+ ensureInitialized();
+
+ Trace.traceBegin(TRACE_TAG_SYSTEM_SERVER, "BatteryStatsHistory.trim");
+ try {
+ lock();
+ try {
+ // if there is more history stored than allowed, delete oldest history files.
+ int size = 0;
+ for (int i = 0; i < mHistoryFiles.size(); i++) {
+ size += (int) mHistoryFiles.get(i).atomicFile.getBaseFile().length();
+ }
+ while (size > mMaxHistorySize) {
+ BatteryHistoryFile oldest = mHistoryFiles.get(0);
+ int length = (int) oldest.atomicFile.getBaseFile().length();
+ oldest.atomicFile.delete();
+ mHistoryFiles.remove(0);
+ size -= length;
+ }
+ } finally {
+ unlock();
+ }
+ } finally {
+ Trace.traceEnd(TRACE_TAG_SYSTEM_SERVER);
+ }
+ }
+
+ private static void writeInt(OutputStream stream, int value) throws IOException {
+ stream.write(value >> 24);
+ stream.write(value >> 16);
+ stream.write(value >> 8);
+ stream.write(value >> 0);
+ }
+
+ private static int readInt(InputStream stream) throws IOException {
+ return (readByte(stream) << 24)
+ | (readByte(stream) << 16)
+ | (readByte(stream) << 8)
+ | (readByte(stream) << 0);
+ }
+
+ private static int readByte(InputStream stream) throws IOException {
+ int out = stream.read();
+ if (out == -1) {
+ throw new IOException();
+ }
+ return out;
+ }
+}
diff --git a/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java b/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java
index 68768b8fa223..1d62087428d8 100644
--- a/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java
+++ b/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java
@@ -195,6 +195,8 @@ public class BatteryStatsImpl extends BatteryStats {
private static final boolean DEBUG_BINDER_STATS = false;
private static final boolean DEBUG_MEMORY = false;
+ private static final String HISTORY_DIR = "battery-history";
+
// TODO: remove "tcp" from network methods, since we measure total stats.
// Current on-disk Parcel version. Must be updated when the format of the parcelable changes
@@ -1143,6 +1145,8 @@ public class BatteryStatsImpl extends BatteryStats {
private int mBatteryTemperature;
private int mBatteryVoltageMv;
+ @Nullable
+ private final BatteryHistoryDirectory mBatteryHistoryDirectory;
@NonNull
private final BatteryStatsHistory mHistory;
@@ -11476,7 +11480,10 @@ public class BatteryStatsImpl extends BatteryStats {
@NonNull UserInfoProvider userInfoProvider, @NonNull PowerProfile powerProfile,
@NonNull CpuScalingPolicies cpuScalingPolicies,
@NonNull PowerStatsUidResolver powerStatsUidResolver) {
- this(config, clock, monotonicClock, systemDir, handler, platformIdleStateCallback,
+ this(config, clock, monotonicClock, systemDir,
+ systemDir != null ? new BatteryHistoryDirectory(new File(systemDir, HISTORY_DIR),
+ config.getMaxHistorySizeBytes()) : null,
+ handler, platformIdleStateCallback,
energyStatsRetriever, userInfoProvider, powerProfile, cpuScalingPolicies,
powerStatsUidResolver, new FrameworkStatsLogger(),
new BatteryStatsHistory.TraceDelegate(), new BatteryStatsHistory.EventLogger());
@@ -11484,6 +11491,7 @@ public class BatteryStatsImpl extends BatteryStats {
public BatteryStatsImpl(@NonNull BatteryStatsConfig config, @NonNull Clock clock,
@NonNull MonotonicClock monotonicClock, @Nullable File systemDir,
+ @Nullable BatteryHistoryDirectory batteryHistoryDirectory,
@NonNull Handler handler, @Nullable PlatformIdleStateCallback platformIdleStateCallback,
@Nullable EnergyStatsRetriever energyStatsRetriever,
@NonNull UserInfoProvider userInfoProvider, @NonNull PowerProfile powerProfile,
@@ -11517,9 +11525,10 @@ public class BatteryStatsImpl extends BatteryStats {
mDailyFile = null;
}
- mHistory = new BatteryStatsHistory(null /* historyBuffer */, systemDir,
- mConstants.MAX_HISTORY_SIZE, mConstants.MAX_HISTORY_BUFFER, mStepDetailsCalculator,
- mClock, mMonotonicClock, traceDelegate, eventLogger);
+ mBatteryHistoryDirectory = batteryHistoryDirectory;
+ mHistory = new BatteryStatsHistory(null /* historyBuffer */, mConstants.MAX_HISTORY_BUFFER,
+ mBatteryHistoryDirectory, mStepDetailsCalculator, mClock, mMonotonicClock,
+ traceDelegate, eventLogger);
mCpuPowerStatsCollector = new CpuPowerStatsCollector(mPowerStatsCollectorInjector);
mCpuPowerStatsCollector.addConsumer(this::recordPowerStats);
@@ -12060,7 +12069,7 @@ public class BatteryStatsImpl extends BatteryStats {
}
public int getHistoryTotalSize() {
- return mHistory.getMaxHistorySize();
+ return mBatteryHistoryDirectory.getMaxHistorySize();
}
public int getHistoryUsedSize() {
@@ -12160,6 +12169,13 @@ public class BatteryStatsImpl extends BatteryStats {
mResetBatteryHistoryOnNewSession = enabled;
}
+ /**
+ * Enables or disables battery history file compression.
+ */
+ public void setBatteryHistoryCompressionEnabled(boolean enabled) {
+ mBatteryHistoryDirectory.setFileCompressionEnabled(enabled);
+ }
+
@GuardedBy("this")
public void resetAllStatsAndHistoryLocked(int reason) {
final long mSecUptime = mClock.uptimeMillis();
@@ -15260,13 +15276,10 @@ public class BatteryStatsImpl extends BatteryStats {
@GuardedBy("this")
public void setBatteryStateLocked(final int status, final int health, final int plugType,
- final int level, /* not final */ int temp, final int voltageMv, final int chargeUah,
+ final int level, final int temp, final int voltageMv, final int chargeUah,
final int chargeFullUah, final long chargeTimeToFullSeconds,
final long elapsedRealtimeMs, final long uptimeMs, final long currentTimeMs) {
- // Temperature is encoded without the signed bit, so clamp any negative temperatures to 0.
- temp = Math.max(0, temp);
-
reportChangesToStatsLog(status, plugType, level);
final boolean onBattery = isOnBattery(plugType, status);
@@ -16354,7 +16367,9 @@ public class BatteryStatsImpl extends BatteryStats {
*/
@VisibleForTesting
public void onChange() {
- mHistory.setMaxHistorySize(MAX_HISTORY_SIZE);
+ if (mBatteryHistoryDirectory != null) {
+ mBatteryHistoryDirectory.setMaxHistorySize(MAX_HISTORY_SIZE);
+ }
mHistory.setMaxHistoryBufferSize(MAX_HISTORY_BUFFER);
}
diff --git a/services/core/java/com/android/server/power/stats/OWNERS b/services/core/java/com/android/server/power/stats/OWNERS
index 4068e2bc03b7..208b2ddb5e54 100644
--- a/services/core/java/com/android/server/power/stats/OWNERS
+++ b/services/core/java/com/android/server/power/stats/OWNERS
@@ -1 +1,4 @@
+# Bug component: 987260
+set noparent
+
include /BATTERY_STATS_OWNERS
diff --git a/services/core/java/com/android/server/power/stats/WakelockStatsFrameworkEvents.java b/services/core/java/com/android/server/power/stats/WakelockStatsFrameworkEvents.java
index f387feca05f2..a2971f302327 100644
--- a/services/core/java/com/android/server/power/stats/WakelockStatsFrameworkEvents.java
+++ b/services/core/java/com/android/server/power/stats/WakelockStatsFrameworkEvents.java
@@ -272,14 +272,10 @@ public class WakelockStatsFrameworkEvents {
WakeLockStats extraTime =
openOverflowStats.computeIfAbsent(key, k -> new WakeLockStats());
- stats.uptimeMillis += openWakeLockUptime + extraTime.uptimeMillis;
-
- logger.logResult(
- key.getUid(),
- key.getTag(),
- key.getPowerManagerWakeLockLevel(),
- stats.uptimeMillis,
- stats.completedCount);
+ long totalUpdate = openWakeLockUptime + stats.uptimeMillis + extraTime.uptimeMillis;
+ long totalCount = stats.completedCount + extraTime.completedCount;
+ logger.logResult(key.getUid(), key.getTag(), key.getPowerManagerWakeLockLevel(),
+ totalUpdate, totalCount);
}
}
}
diff --git a/services/core/java/com/android/server/power/stats/flags.aconfig b/services/core/java/com/android/server/power/stats/flags.aconfig
index c8dbbd29823c..521ee58decea 100644
--- a/services/core/java/com/android/server/power/stats/flags.aconfig
+++ b/services/core/java/com/android/server/power/stats/flags.aconfig
@@ -97,3 +97,13 @@ flag {
purpose: PURPOSE_BUGFIX
}
}
+
+flag {
+ name: "extended_battery_history_compression_enabled"
+ namespace: "backstage_power"
+ description: "Compress each battery history chunk on disk"
+ bug: "381937912"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
diff --git a/services/core/java/com/android/server/security/advancedprotection/AdvancedProtectionService.java b/services/core/java/com/android/server/security/advancedprotection/AdvancedProtectionService.java
index 7fb57085fb35..93fd2768d13e 100644
--- a/services/core/java/com/android/server/security/advancedprotection/AdvancedProtectionService.java
+++ b/services/core/java/com/android/server/security/advancedprotection/AdvancedProtectionService.java
@@ -49,6 +49,7 @@ import com.android.server.security.advancedprotection.features.AdvancedProtectio
import com.android.server.security.advancedprotection.features.DisallowCellular2GAdvancedProtectionHook;
import com.android.server.security.advancedprotection.features.DisallowInstallUnknownSourcesAdvancedProtectionHook;
import com.android.server.security.advancedprotection.features.MemoryTaggingExtensionHook;
+import com.android.server.security.advancedprotection.features.UsbDataAdvancedProtectionHook;
import java.io.FileDescriptor;
import java.util.ArrayList;
@@ -100,6 +101,13 @@ public class AdvancedProtectionService extends IAdvancedProtectionService.Stub
Slog.e(TAG, "Failed to initialize DisallowCellular2g", e);
}
}
+ if (android.security.Flags.aapmFeatureUsbDataProtection()) {
+ try {
+ mHooks.add(new UsbDataAdvancedProtectionHook(mContext, enabled));
+ } catch (Exception e) {
+ Slog.e(TAG, "Failed to initialize UsbDataAdvancedProtection", e);
+ }
+ }
}
// Only for tests
diff --git a/services/core/java/com/android/server/security/advancedprotection/features/UsbDataAdvancedProtectionHook.java b/services/core/java/com/android/server/security/advancedprotection/features/UsbDataAdvancedProtectionHook.java
new file mode 100644
index 000000000000..9a9c56f7bd17
--- /dev/null
+++ b/services/core/java/com/android/server/security/advancedprotection/features/UsbDataAdvancedProtectionHook.java
@@ -0,0 +1,312 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.security.advancedprotection.features;
+
+import static android.content.Intent.ACTION_SCREEN_OFF;
+import static android.content.Intent.ACTION_USER_PRESENT;
+import static android.hardware.usb.UsbManager.ACTION_USB_PORT_CHANGED;
+import static android.security.advancedprotection.AdvancedProtectionManager.FEATURE_ID_DISALLOW_USB;
+
+import android.app.KeyguardManager;
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.hardware.usb.ParcelableUsbPort;
+import android.hardware.usb.UsbDevice;
+import android.hardware.usb.UsbAccessory;
+import android.hardware.usb.UsbManager;
+import android.hardware.usb.UsbPort;
+import android.hardware.usb.UsbPortStatus;
+import android.os.Binder;
+import android.os.Build;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.UserHandle;
+import android.util.Slog;
+
+import java.lang.Runnable;
+
+import java.util.function.Consumer;
+import java.util.concurrent.Executor;
+
+import android.security.advancedprotection.AdvancedProtectionFeature;
+
+import com.android.internal.R;
+
+import java.util.Map;
+
+/**
+ * AAPM Feature for managing and protecting USB data signal from attacks.
+ *
+ * @hide
+ */
+public class UsbDataAdvancedProtectionHook extends AdvancedProtectionHook {
+ private static final String TAG = "AdvancedProtectionUsb";
+
+ private static final String APM_USB_FEATURE_NOTIF_CHANNEL = "APM_USB_SERVICE_NOTIF_CHANNEL";
+ private static final String CHANNEL_NAME = "BackgroundInstallUiNotificationChannel";
+ private static final int APM_USB_FEATURE_CHANNEL_ID = 1;
+ private static final int DELAY_DISABLE_MS = 1000;
+
+ private final Context mContext;
+ private final Handler mDelayedDisableHandler = new Handler(Looper.getMainLooper());
+
+ private UsbManager mUsbManager;
+ private BroadcastReceiver mUsbProtectionBroadcastReceiver;
+ private KeyguardManager mKeyguardManager;
+ private NotificationManager mNotificationManager;
+ private NotificationChannel mNotificationChannel;
+
+ private AdvancedProtectionFeature mFeature
+ = new AdvancedProtectionFeature(FEATURE_ID_DISALLOW_USB);
+
+ private boolean mBroadcastReceiverIsRegistered = false;
+ private boolean mInitialPlugInNotificationSent = false;
+
+ public UsbDataAdvancedProtectionHook(Context context, boolean enabled) {
+ super(context, enabled);
+ mContext = context;
+ mUsbManager = mContext.getSystemService(UsbManager.class);
+ onAdvancedProtectionChanged(enabled);
+ }
+
+ @Override
+ public AdvancedProtectionFeature getFeature() {
+ return mFeature;
+ }
+
+ @Override
+ public boolean isAvailable() {
+ return canSetUsbDataSignal();
+ }
+
+ @Override
+ public void onAdvancedProtectionChanged(boolean enabled) {
+ if (!isAvailable()) {
+ Slog.w(TAG, "AAPM USB data protection feature is disabled");
+ return;
+ }
+ Slog.i(TAG, "onAdvancedProtectionChanged: " + enabled);
+ if (enabled) {
+ Slog.i(TAG, "onAdvancedProtectionChanged: enabled");
+ if (mUsbProtectionBroadcastReceiver == null) {
+ initialize();
+ }
+ if (!mBroadcastReceiverIsRegistered) {
+ registerReceiver();
+ }
+ } else {
+ if (mBroadcastReceiverIsRegistered) {
+ unregisterReceiver();
+ }
+ if (!mUsbManager.enableUsbDataSignal(true)) {
+ Slog.e(TAG, "USB Data protection toggle failed");
+ }
+ }
+ }
+
+ private void initialize() {
+ mKeyguardManager = mContext.getSystemService(KeyguardManager.class);
+ initializeNotifications();
+ mUsbProtectionBroadcastReceiver =
+ new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ try {
+ if (ACTION_USER_PRESENT.equals(intent.getAction())
+ && !mKeyguardManager.isKeyguardLocked()) {
+ mDelayedDisableHandler.removeCallbacksAndMessages(null);
+ setUsbDataSignalIfNoConnectedDevices(true);
+ } else if (ACTION_SCREEN_OFF.equals(intent.getAction())
+ && mKeyguardManager.isKeyguardLocked()) {
+ setUsbDataSignalIfNoConnectedDevices(false);
+ } else if (ACTION_USB_PORT_CHANGED.equals(intent.getAction())) {
+ if (Build.IS_DEBUGGABLE) {
+ dumpUsbDevices();
+ }
+ setDelayedDisableTaskIfDisconnectedAndLocked(intent);
+ sendNotificationIfDeviceLocked(intent);
+ }
+ } catch (Exception e) {
+ Slog.e(TAG, "USB Data protection failed with: " + e.getMessage());
+ }
+ }
+
+ private boolean getUsbPortStatusIsConnectedAndDataEnabled(Intent intent) {
+ UsbPortStatus portStatus =
+ intent.getParcelableExtra(
+ UsbManager.EXTRA_PORT_STATUS, UsbPortStatus.class);
+ return portStatus != null
+ && portStatus.isConnected()
+ && portStatus.getUsbDataStatus()
+ != UsbPortStatus.DATA_STATUS_DISABLED_FORCE;
+ }
+
+ private void setDelayedDisableTaskIfDisconnectedAndLocked(Intent intent) {
+ if(mKeyguardManager.isKeyguardLocked()) {
+ if(getUsbPortStatusIsConnectedAndDataEnabled(intent)) {
+ mDelayedDisableHandler.removeCallbacksAndMessages(null);
+ } else if(!mDelayedDisableHandler.hasMessagesOrCallbacks()) {
+ mDelayedDisableHandler.postDelayed(() -> {
+ disableChangedUsbPortIfDisconnected(intent);
+ }, DELAY_DISABLE_MS);
+ }
+ }
+ }
+
+ private void disableChangedUsbPortIfDisconnected(Intent intent) {
+ UsbPortStatus portStatus =
+ intent.getParcelableExtra(
+ UsbManager.EXTRA_PORT_STATUS, UsbPortStatus.class);
+ if (Build.IS_DEBUGGABLE) {
+ Slog.i(
+ TAG,
+ "disableChangedUsbPortIfDisconnected: " + portStatus == null
+ ? "null"
+ : portStatus.toString());
+ }
+
+ if (mKeyguardManager.isKeyguardLocked()
+ && portStatus != null && !portStatus.isConnected()
+ ) {
+ intent.getParcelableExtra(
+ UsbManager.EXTRA_PORT, ParcelableUsbPort.class)
+ .getUsbPort(mUsbManager)
+ .enableUsbData(false);
+ }
+ }
+
+ private void dumpUsbDevices() {
+ Slog.d(TAG, "dumpUsbDevices: ");
+ Map<String, UsbDevice> portStatusMap = mUsbManager.getDeviceList();
+ for (UsbDevice device : portStatusMap.values()) {
+ Slog.d(TAG, "Device: " + device.getDeviceName());
+ }
+ UsbAccessory[] accessoryList = mUsbManager.getAccessoryList();
+ if(accessoryList != null) {
+ for (UsbAccessory accessory : accessoryList) {
+ Slog.d(TAG, "Accessory: " + accessory.toString());
+ }
+ }
+ }
+ };
+ }
+
+ private void initializeNotifications() {
+ mNotificationManager = mContext.getSystemService(NotificationManager.class);
+ if (mNotificationManager.getNotificationChannel(APM_USB_FEATURE_NOTIF_CHANNEL) == null) {
+ mNotificationChannel =
+ new NotificationChannel(
+ APM_USB_FEATURE_NOTIF_CHANNEL,
+ CHANNEL_NAME,
+ NotificationManager.IMPORTANCE_HIGH);
+ mNotificationManager.createNotificationChannel(mNotificationChannel);
+ }
+ }
+
+ private void sendNotification(String title, String message) {
+ Notification notif =
+ new Notification.Builder(mContext, APM_USB_FEATURE_NOTIF_CHANNEL)
+ .setSmallIcon(R.drawable.ic_settings_24dp)
+ .setContentTitle(title)
+ .setStyle(new Notification.BigTextStyle().bigText(message))
+ .setAutoCancel(true)
+ .build();
+ mNotificationManager.notify(TAG, APM_USB_FEATURE_CHANNEL_ID, notif);
+ }
+
+ private void sendNotificationIfDeviceLocked(Intent intent) {
+ if (!mInitialPlugInNotificationSent) {
+ UsbPortStatus portStatus =
+ intent.getParcelableExtra(UsbManager.EXTRA_PORT_STATUS, UsbPortStatus.class);
+ if (mKeyguardManager.isKeyguardLocked()
+ && portStatus != null
+ && portStatus.isConnected()
+ && portStatus.getUsbDataStatus() == UsbPortStatus.DATA_STATUS_DISABLED_FORCE) {
+ sendNotification(
+ mContext.getString(
+ R.string.usb_apm_usb_plugged_in_when_locked_notification_title),
+ mContext.getString(
+ R.string.usb_apm_usb_plugged_in_when_locked_notification_text));
+ mInitialPlugInNotificationSent = true;
+ }
+ }
+ }
+
+ private void setUsbDataSignalIfNoConnectedDevices(boolean status) {
+ // disable all ports that don't have an active data connection
+ if (!status) {
+ for (UsbPort usbPort : mUsbManager.getPorts()) {
+ if (Build.IS_DEBUGGABLE) {
+ Slog.i(
+ TAG,
+ "setUsbDataSignal: false " + usbPort.getStatus() == null
+ ? "null"
+ : usbPort.getStatus().toString());
+ }
+ if (usbPort.getStatus() == null
+ || !usbPort.getStatus().isConnected()
+ || usbPort.getStatus().getCurrentDataRole()
+ == UsbPortStatus.DATA_ROLE_NONE) {
+ usbPort.enableUsbData(false);
+ }
+ }
+ }
+ // Always re-enable all if true
+ else {
+ if (!mUsbManager.enableUsbDataSignal(status)) {
+ Slog.e(TAG, "USB Data protection toggle failed");
+ }
+ for (UsbPort usbPort : mUsbManager.getPorts()) {
+ usbPort.resetUsbPort(mContext.getMainExecutor(),
+ new Consumer<Integer>() {
+ public void accept(Integer status) {
+ Slog.i(TAG, "Consumer status: " + status);
+ }
+ });
+ }
+ }
+ }
+
+ private void registerReceiver() {
+ final IntentFilter filter = new IntentFilter();
+ filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
+ filter.addAction(ACTION_USER_PRESENT);
+ filter.addAction(ACTION_SCREEN_OFF);
+ filter.addAction(UsbManager.ACTION_USB_PORT_CHANGED);
+
+ mContext.registerReceiverAsUser(
+ mUsbProtectionBroadcastReceiver, UserHandle.ALL, filter, null, null);
+ mBroadcastReceiverIsRegistered = true;
+ }
+
+ private void unregisterReceiver() {
+ mContext.unregisterReceiver(mUsbProtectionBroadcastReceiver);
+ mBroadcastReceiverIsRegistered = false;
+ }
+
+ private boolean canSetUsbDataSignal() {
+ if (Build.IS_DEBUGGABLE) {
+ Slog.i(TAG, "USB_HAL_VERSION: " + mUsbManager.getUsbHalVersion());
+ }
+ return mUsbManager.getUsbHalVersion() >= UsbManager.USB_HAL_V1_3;
+ }
+}
diff --git a/services/core/java/com/android/server/sensorprivacy/SensorPrivacyService.java b/services/core/java/com/android/server/sensorprivacy/SensorPrivacyService.java
index 81217014bafe..16658e360cba 100644
--- a/services/core/java/com/android/server/sensorprivacy/SensorPrivacyService.java
+++ b/services/core/java/com/android/server/sensorprivacy/SensorPrivacyService.java
@@ -536,8 +536,12 @@ public final class SensorPrivacyService extends SystemService {
user.getIdentifier());
String inputMethodPackageName = null;
if (inputMethodComponent != null) {
- inputMethodPackageName = ComponentName.unflattenFromString(
- inputMethodComponent).getPackageName();
+ ComponentName component = ComponentName.unflattenFromString(inputMethodComponent);
+ if (component != null) {
+ inputMethodPackageName = component.getPackageName();
+ } else {
+ Log.w(TAG, "Failed to parse inputMethodComponent: " + inputMethodComponent);
+ }
}
int capability;
diff --git a/services/core/java/com/android/server/slice/SlicePermissionManager.java b/services/core/java/com/android/server/slice/SlicePermissionManager.java
index 343d2e353abb..d118eaea37d9 100644
--- a/services/core/java/com/android/server/slice/SlicePermissionManager.java
+++ b/services/core/java/com/android/server/slice/SlicePermissionManager.java
@@ -29,6 +29,7 @@ import android.util.Log;
import android.util.Slog;
import android.util.Xml.Encoding;
+import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.XmlUtils;
import com.android.server.slice.SliceProviderPermissions.SliceAuthority;
@@ -76,8 +77,11 @@ public class SlicePermissionManager implements DirtyTracker {
private final File mSliceDir;
private final Context mContext;
private final Handler mHandler;
+ @GuardedBy("itself")
private final ArrayMap<PkgUser, SliceProviderPermissions> mCachedProviders = new ArrayMap<>();
+ @GuardedBy("itself")
private final ArrayMap<PkgUser, SliceClientPermissions> mCachedClients = new ArrayMap<>();
+ @GuardedBy("this")
private final ArraySet<Persistable> mDirty = new ArraySet<>();
@VisibleForTesting
@@ -354,14 +358,22 @@ public class SlicePermissionManager implements DirtyTracker {
// use addPersistableDirty(); this is just for tests
@VisibleForTesting
void addDirtyImmediate(Persistable obj) {
- mDirty.add(obj);
+ synchronized (this) {
+ mDirty.add(obj);
+ }
}
private void handleRemove(PkgUser pkgUser) {
getFile(SliceClientPermissions.getFileName(pkgUser)).delete();
getFile(SliceProviderPermissions.getFileName(pkgUser)).delete();
- mDirty.remove(mCachedClients.remove(pkgUser));
- mDirty.remove(mCachedProviders.remove(pkgUser));
+ synchronized (this) {
+ synchronized (mCachedClients) {
+ mDirty.remove(mCachedClients.remove(pkgUser));
+ }
+ synchronized (mCachedProviders) {
+ mDirty.remove(mCachedProviders.remove(pkgUser));
+ }
+ }
}
private final class H extends Handler {
@@ -379,7 +391,9 @@ public class SlicePermissionManager implements DirtyTracker {
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_ADD_DIRTY:
- mDirty.add((Persistable) msg.obj);
+ synchronized (SlicePermissionManager.this) {
+ mDirty.add((Persistable) msg.obj);
+ }
break;
case MSG_PERSIST:
handlePersist();
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java
index 0ed522805bef..fab19b6b8201 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java
@@ -171,11 +171,11 @@ public interface StatusBarManagerInternal {
void onProposedRotationChanged(int displayId, int rotation, boolean isValid);
/**
- * Notifies System UI that the display is ready to show system decorations.
+ * Notifies System UI that the system decorations should be added on the display.
*
* @param displayId display ID
*/
- void onDisplayReady(int displayId);
+ void onDisplayAddSystemDecorations(int displayId);
/**
* Notifies System UI that the system decorations should be removed from the display.
@@ -284,11 +284,4 @@ public interface StatusBarManagerInternal {
/** Passes through the given shell commands to SystemUI */
void passThroughShellCommand(String[] args, FileDescriptor fd);
-
- /**
- * Set whether the display should have a navigation bar.
- *
- * TODO(b/390591772): Refactor this method
- */
- void setHasNavigationBar(int displayId, boolean hasNavigationBar);
}
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
index 4301c93cbed1..da9d01675984 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
@@ -770,10 +770,11 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
}
@Override
- public void onDisplayReady(int displayId) {
+ public void onDisplayAddSystemDecorations(int displayId) {
if (isVisibleBackgroundUserOnDisplay(displayId)) {
if (SPEW) {
- Slog.d(TAG, "Skipping onDisplayReady for visible background user "
+ Slog.d(TAG, "Skipping onDisplayAddSystemDecorations for visible background "
+ + "user "
+ mUserManagerInternal.getUserAssignedToDisplay(displayId));
}
return;
@@ -781,7 +782,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
IStatusBar bar = mBar;
if (bar != null) {
try {
- bar.onDisplayReady(displayId);
+ bar.onDisplayAddSystemDecorations(displayId);
} catch (RemoteException ex) {}
}
}
@@ -1010,23 +1011,6 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
public void passThroughShellCommand(String[] args, FileDescriptor fd) {
StatusBarManagerService.this.passThroughShellCommand(args, fd);
}
-
- @Override
- public void setHasNavigationBar(int displayId, boolean hasNavigationBar) {
- if (isVisibleBackgroundUserOnDisplay(displayId)) {
- if (SPEW) {
- Slog.d(TAG, "Skipping setHasNavigationBar for visible background user "
- + mUserManagerInternal.getUserAssignedToDisplay(displayId));
- }
- return;
- }
- IStatusBar bar = mBar;
- if (bar != null) {
- try {
- bar.setHasNavigationBar(displayId, hasNavigationBar);
- } catch (RemoteException ex) {}
- }
- }
};
private final GlobalActionsProvider mGlobalActionsProvider = new GlobalActionsProvider() {
diff --git a/services/core/java/com/android/server/vibrator/VibratorManagerService.java b/services/core/java/com/android/server/vibrator/VibratorManagerService.java
index a5805043ac42..804cf4663bfd 100644
--- a/services/core/java/com/android/server/vibrator/VibratorManagerService.java
+++ b/services/core/java/com/android/server/vibrator/VibratorManagerService.java
@@ -79,7 +79,7 @@ import com.android.internal.app.IBatteryStats;
import com.android.internal.util.DumpUtils;
import com.android.server.SystemService;
import com.android.server.pm.BackgroundUserSoundNotifier;
-import com.android.server.pm.UserManagerService;
+import com.android.server.pm.UserManagerInternal;
import com.android.server.vibrator.VibrationSession.CallerInfo;
import com.android.server.vibrator.VibrationSession.DebugInfo;
import com.android.server.vibrator.VibrationSession.Status;
@@ -201,7 +201,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub {
VibratorManagerService.this::shouldCancelOnScreenOffLocked,
Status.CANCELLED_BY_SCREEN_OFF);
}
- } else if (UserManagerService.shouldShowNotificationForBackgroundUserSounds()
+ } else if (UserManagerInternal.shouldShowNotificationForBackgroundUserSounds()
&& intent.getAction().equals(BackgroundUserSoundNotifier.ACTION_MUTE_SOUND)) {
synchronized (mLock) {
maybeClearCurrentAndNextSessionsLocked(
@@ -325,7 +325,7 @@ public class VibratorManagerService extends IVibratorManagerService.Stub {
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_OFF);
- if (UserManagerService.shouldShowNotificationForBackgroundUserSounds()) {
+ if (UserManagerInternal.shouldShowNotificationForBackgroundUserSounds()) {
filter.addAction(BackgroundUserSoundNotifier.ACTION_MUTE_SOUND);
}
context.registerReceiver(mIntentReceiver, filter, Context.RECEIVER_NOT_EXPORTED);
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerInternal.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerInternal.java
index 872ab595994b..f413fe33c3f2 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerInternal.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerInternal.java
@@ -26,7 +26,7 @@ public abstract class WallpaperManagerInternal {
/**
* Notifies the display is ready for adding wallpaper on it.
*/
- public abstract void onDisplayReady(int displayId);
+ public abstract void onDisplayAddSystemDecorations(int displayId);
/** Notifies when display stop showing system decorations and wallpaper. */
public abstract void onDisplayRemoveSystemDecorations(int displayId);
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index db530e728a1a..ef63229f55e2 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -20,7 +20,6 @@ import static android.Manifest.permission.INTERACT_ACROSS_USERS_FULL;
import static android.Manifest.permission.MANAGE_EXTERNAL_STORAGE;
import static android.Manifest.permission.READ_WALLPAPER_INTERNAL;
import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND;
-import static android.app.Flags.enableConnectedDisplaysWallpaper;
import static android.app.Flags.fixWallpaperChanged;
import static android.app.Flags.liveWallpaperContentHandling;
import static android.app.Flags.removeNextWallpaperComponent;
@@ -46,6 +45,7 @@ import static com.android.server.wallpaper.WallpaperUtils.WALLPAPER_INFO;
import static com.android.server.wallpaper.WallpaperUtils.WALLPAPER_LOCK_ORIG;
import static com.android.server.wallpaper.WallpaperUtils.getWallpaperDir;
import static com.android.server.wallpaper.WallpaperUtils.makeWallpaperIdLocked;
+import static com.android.server.wm.DesktopModeHelper.isDeviceEligibleForDesktopExperienceWallpaper;
import static com.android.window.flags.Flags.avoidRebindingIntentionallyDisconnectedWallpaper;
import static com.android.window.flags.Flags.multiCrop;
import static com.android.window.flags.Flags.offloadColorExtraction;
@@ -756,7 +756,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
}
// Image wallpaper
- if (enableConnectedDisplaysWallpaper()) {
+ if (isDeviceEligibleForDesktopExperienceWallpaper(mContext)) {
// TODO(b/384519749): check display's resolution and image wallpaper cropped image
// aspect ratio.
return displayId == DEFAULT_DISPLAY
@@ -781,13 +781,71 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
if (mLastWallpaper == null || mFallbackWallpaper == null) return;
final WallpaperConnection systemConnection = mLastWallpaper.connection;
final WallpaperConnection fallbackConnection = mFallbackWallpaper.connection;
+ final WallpaperConnection lockConnection;
+ if (mLastLockWallpaper != null) {
+ lockConnection = mLastLockWallpaper.connection;
+ } else {
+ lockConnection = null;
+ }
if (fallbackConnection == null) {
Slog.w(TAG, "Fallback wallpaper connection has not been created yet!!");
return;
}
- // TODO(b/384520326) Passing DEFAULT_DISPLAY temporarily before we revamp the
- // multi-display supports.
- if (isWallpaperCompatibleForDisplay(DEFAULT_DISPLAY, systemConnection)) {
+
+ if (isDeviceEligibleForDesktopExperienceWallpaper(mContext)) {
+ mWallpaperDisplayHelper.forEachDisplayData(displayData -> {
+ int displayId = displayData.mDisplayId;
+ // If the display is already connected to the desired wallpaper(s), either the
+ // same wallpaper for both lock and system, or different wallpapers for each,
+ // any existing fallback wallpaper connection will be removed.
+ if (systemConnection.containsDisplay(displayId)
+ && (lockConnection == null || lockConnection.containsDisplay(displayId))) {
+ DisplayConnector fallbackConnector =
+ mFallbackWallpaper.connection.mDisplayConnector.get(displayId);
+ if (fallbackConnector != null && fallbackConnector.mEngine != null) {
+ fallbackConnector.disconnectLocked(mFallbackWallpaper.connection);
+ mFallbackWallpaper.connection.mDisplayConnector.remove(displayId);
+ }
+ return;
+ }
+
+ // Identify if the fallback wallpaper should be use for lock or system or both.
+ int which = 0;
+ if (!systemConnection.containsDisplay(displayId)) {
+ which |= FLAG_SYSTEM;
+ }
+ if (lockConnection == null || !lockConnection.containsDisplay(displayId)) {
+ which |= FLAG_LOCK;
+ }
+ if (mFallbackWallpaper.connection.containsDisplay(displayId)) {
+ // For existing fallback wallpaper connection, update the `which` flags.
+ DisplayConnector fallbackConnector =
+ mFallbackWallpaper.connection.mDisplayConnector.get(displayId);
+ try {
+ if (fallbackConnector != null && fallbackConnector.mEngine != null
+ && fallbackConnector.mWhich != which) {
+ fallbackConnector.mEngine.setWallpaperFlags(which);
+ mWindowManagerInternal.setWallpaperShowWhenLocked(
+ fallbackConnector.mToken,
+ /* showWhenLocked= */ (which & FLAG_LOCK) != 0);
+ fallbackConnector.mWhich = which;
+ }
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Failed to update fallback wallpaper engine flags", e);
+ }
+ } else {
+ // For new fallback connection, establish the connection with the desired
+ // `which` flag.
+ DisplayConnector fallbackConnector =
+ mFallbackWallpaper.connection.getDisplayConnectorOrCreate(displayId);
+ if (fallbackConnector != null && fallbackConnector.mEngine != null) {
+ fallbackConnector.mWhich = which;
+ fallbackConnector.connectLocked(mFallbackWallpaper.connection,
+ mFallbackWallpaper);
+ }
+ }
+ });
+ } else if (isWallpaperCompatibleForDisplay(DEFAULT_DISPLAY, systemConnection)) {
if (fallbackConnection.mDisplayConnector.size() != 0) {
fallbackConnection.forEachDisplayConnector(connector -> {
if (connector.mEngine != null) {
@@ -820,8 +878,13 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
boolean mDimensionsChanged;
boolean mPaddingChanged;
- DisplayConnector(int displayId) {
+ // This field is added for the fallback wallpaper, which may have a different which flag for
+ // a different display.
+ int mWhich;
+
+ DisplayConnector(int displayId, int which) {
mDisplayId = displayId;
+ mWhich = which;
}
void ensureStatusHandled() {
@@ -850,13 +913,17 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
Slog.w(TAG, "WallpaperService is not connected yet");
return;
}
+ int which = wallpaper.mWhich;
+ if (isDeviceEligibleForDesktopExperienceWallpaper(mContext)) {
+ which = mWhich;
+ }
TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG);
t.traceBegin("WPMS.connectLocked-" + wallpaper.getComponent());
if (DEBUG) Slog.v(TAG, "Adding window token: " + mToken);
mWindowManagerInternal.addWindowToken(mToken, TYPE_WALLPAPER, mDisplayId,
null /* options */);
mWindowManagerInternal.setWallpaperShowWhenLocked(
- mToken, (wallpaper.mWhich & FLAG_LOCK) != 0);
+ mToken, (which & FLAG_LOCK) != 0);
if (multiCrop() && mImageWallpaper.equals(wallpaper.getComponent())) {
mWindowManagerInternal.setWallpaperCropHints(mToken,
mWallpaperCropper.getRelativeCropHints(wallpaper));
@@ -868,16 +935,15 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
try {
if (liveWallpaperContentHandling()) {
connection.mService.attach(connection, mToken, TYPE_WALLPAPER, false,
- wpdData.mWidth, wpdData.mHeight,
- wpdData.mPadding, mDisplayId, wallpaper.mWhich, connection.mInfo,
- wallpaper.getDescription());
+ wpdData.mWidth, wpdData.mHeight, wpdData.mPadding, mDisplayId, which,
+ connection.mInfo, wallpaper.getDescription());
} else {
WallpaperDescription desc = new WallpaperDescription.Builder().setComponent(
(connection.mInfo != null) ? connection.mInfo.getComponent()
: null).build();
connection.mService.attach(connection, mToken, TYPE_WALLPAPER, false,
- wpdData.mWidth, wpdData.mHeight,
- wpdData.mPadding, mDisplayId, wallpaper.mWhich, connection.mInfo, desc);
+ wpdData.mWidth, wpdData.mHeight, wpdData.mPadding, mDisplayId, which,
+ connection.mInfo, desc);
}
} catch (RemoteException e) {
Slog.w(TAG, "Failed attaching wallpaper on display", e);
@@ -980,7 +1046,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
final int displayId = display.getDisplayId();
final DisplayConnector connector = mDisplayConnector.get(displayId);
if (connector == null) {
- mDisplayConnector.append(displayId, new DisplayConnector(displayId));
+ mDisplayConnector.append(displayId,
+ new DisplayConnector(displayId, mWallpaper.mWhich));
}
}
}
@@ -1006,7 +1073,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
DisplayConnector connector = mDisplayConnector.get(displayId);
if (connector == null) {
if (mWallpaperDisplayHelper.isUsableDisplay(displayId, mClientUid)) {
- connector = new DisplayConnector(displayId);
+ connector = new DisplayConnector(displayId, mWallpaper.mWhich);
mDisplayConnector.append(displayId, connector);
}
}
@@ -1364,6 +1431,17 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
Slog.v(TAG, "static system+lock to system failure");
}
WallpaperData currentSystem = mWallpaperMap.get(mNewWallpaper.userId);
+ // In the constructor, we copied the system+lock wallpaper to
+ // mOriginalSystem. However, the copied WallpaperData#connection is a
+ // reference, not a deep copy. This means
+ // currentSystem.connection.mWallpaper points to mOriginalSystem, so
+ // changes to currentSystem.mWhich alone won't update the corresponding
+ // flag in currentSystem.connection.mWallpaper.mWhich. Let's point
+ // currentSystem.connection.mWallpaper back to currentSystem.
+ if (isDeviceEligibleForDesktopExperienceWallpaper(mContext)
+ && currentSystem.connection != null) {
+ currentSystem.connection.mWallpaper = currentSystem;
+ }
currentSystem.mWhich = FLAG_SYSTEM | FLAG_LOCK;
updateEngineFlags(currentSystem);
mLockWallpaperMap.remove(mNewWallpaper.userId);
@@ -1385,6 +1463,11 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
}
WallpaperData currentSystem = mWallpaperMap.get(mNewWallpaper.userId);
if (currentSystem.wallpaperId == mOriginalSystem.wallpaperId) {
+ // Fixing the reference, see above for more details.
+ if (isDeviceEligibleForDesktopExperienceWallpaper(mContext)
+ && currentSystem.connection != null) {
+ currentSystem.connection.mWallpaper = currentSystem;
+ }
currentSystem.mWhich = FLAG_SYSTEM;
updateEngineFlags(currentSystem);
}
@@ -1571,7 +1654,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
mShuttingDown = false;
mImageWallpaper = ComponentName.unflattenFromString(
context.getResources().getString(R.string.image_wallpaper_component));
- if (enableConnectedDisplaysWallpaper()) {
+ if (isDeviceEligibleForDesktopExperienceWallpaper(mContext)) {
mFallbackWallpaperComponent = ComponentName.unflattenFromString(
context.getResources().getString(R.string.fallback_wallpaper_component));
} else {
@@ -1636,8 +1719,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
private final class LocalService extends WallpaperManagerInternal {
@Override
- public void onDisplayReady(int displayId) {
- onDisplayReadyInternal(displayId);
+ public void onDisplayAddSystemDecorations(int displayId) {
+ onDisplayAddSystemDecorationsInternal(displayId);
}
@Override
@@ -3814,6 +3897,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
wallpaper.connection.forEachDisplayConnector(
connector -> {
try {
+ connector.mWhich = wallpaper.mWhich;
if (connector.mEngine != null) {
connector.mEngine.setWallpaperFlags(wallpaper.mWhich);
mWindowManagerInternal.setWallpaperShowWhenLocked(
@@ -3944,13 +4028,13 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
return (wallpaper != null) ? wallpaper.allowBackup : false;
}
- private void onDisplayReadyInternal(int displayId) {
+ private void onDisplayAddSystemDecorationsInternal(int displayId) {
synchronized (mLock) {
if (mLastWallpaper == null) {
return;
}
- if (enableConnectedDisplaysWallpaper()) {
- int useFallbackWallpaperWhich = 0;
+ int useFallbackWallpaperWhich = 0;
+ if (isDeviceEligibleForDesktopExperienceWallpaper(mContext)) {
List<WallpaperData> wallpapers = new ArrayList<>();
wallpapers.add(mLastWallpaper);
// If the system and the lock wallpapers are not the same, we should also
@@ -3981,7 +4065,6 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
|| mFallbackWallpaper.connection == null) {
return;
}
- mFallbackWallpaper.mWhich = useFallbackWallpaperWhich;
} else {
if (isWallpaperCompatibleForDisplay(displayId, mLastWallpaper.connection)) {
final DisplayConnector connector =
@@ -3999,6 +4082,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
final DisplayConnector connector = mFallbackWallpaper
.connection.getDisplayConnectorOrCreate(displayId);
if (connector == null) return;
+ connector.mWhich = useFallbackWallpaperWhich;
connector.connectLocked(mFallbackWallpaper.connection, mFallbackWallpaper);
} else {
Slog.w(TAG, "No wallpaper can be added to the new display");
@@ -4011,7 +4095,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
// removed to start mirroring.
private void onDisplayRemovedInternal(int displayId) {
synchronized (mLock) {
- if (enableConnectedDisplaysWallpaper()) {
+ if (isDeviceEligibleForDesktopExperienceWallpaper(mContext)) {
// There could be at most 2 wallpaper connections per display:
// 1. system & lock are the same: mLastWallpaper
// 2. system, lock are different: mLastWallpaper, mLastLockWallpaper
diff --git a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
index 6f308aa9b706..6cc17d4fa009 100644
--- a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
+++ b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
@@ -769,6 +769,11 @@ class ActivityMetricsLogger {
// As abort for no process switch.
launchObserverNotifyIntentFailed(newInfo.mLaunchingState.mStartUptimeNs);
}
+ if (Intent.ACTION_PROCESS_TEXT.equals(newInfo.mLastLaunchedActivity.intent.getAction())) {
+ mLoggerHandler.post(PooledLambda.obtainRunnable(FrameworkStatsLog::write,
+ FrameworkStatsLog.PROCESS_TEXT_ACTION_LAUNCHED_REPORTED,
+ launchedActivity.launchedFromUid, launchedActivity.getUid()));
+ }
scheduleCheckActivityToBeDrawnIfSleeping(launchedActivity);
// If the previous transitions are no longer visible, abort them to avoid counting the
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 89b46bc4eba4..b17eef85f93d 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -46,7 +46,6 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.app.WindowConfiguration.activityTypeToString;
-import static android.app.WindowConfiguration.isFloating;
import static android.app.admin.DevicePolicyResources.Drawables.Source.PROFILE_SWITCH_ANIMATION;
import static android.app.admin.DevicePolicyResources.Drawables.Style.OUTLINE;
import static android.app.admin.DevicePolicyResources.Drawables.WORK_PROFILE_ICON;
@@ -178,6 +177,7 @@ import static com.android.server.wm.ActivityRecordProto.PROC_ID;
import static com.android.server.wm.ActivityRecordProto.PROVIDES_MAX_BOUNDS;
import static com.android.server.wm.ActivityRecordProto.REPORTED_DRAWN;
import static com.android.server.wm.ActivityRecordProto.REPORTED_VISIBLE;
+import static com.android.server.wm.ActivityRecordProto.REQUEST_OPEN_IN_BROWSER_EDUCATION_TIMESTAMP;
import static com.android.server.wm.ActivityRecordProto.SHOULD_ENABLE_USER_ASPECT_RATIO_SETTINGS;
import static com.android.server.wm.ActivityRecordProto.SHOULD_FORCE_ROTATE_FOR_CAMERA_COMPAT;
import static com.android.server.wm.ActivityRecordProto.SHOULD_IGNORE_ORIENTATION_REQUEST_LOOP;
@@ -248,6 +248,7 @@ import static com.android.server.wm.WindowManagerService.UPDATE_FOCUS_NORMAL;
import static com.android.server.wm.WindowManagerService.UPDATE_FOCUS_WILL_PLACE_SURFACES;
import static com.android.server.wm.WindowManagerService.sEnableShellTransitions;
import static com.android.server.wm.WindowState.LEGACY_POLICY_VISIBILITY;
+import static com.android.window.flags.Flags.enablePresentationForConnectedDisplays;
import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT;
import static org.xmlpull.v1.XmlPullParser.END_TAG;
@@ -5604,7 +5605,6 @@ final class ActivityRecord extends WindowToken {
}
mAtmService.mBackNavigationController.onAppVisibilityChanged(this, visible);
- onChildVisibilityRequested(visible);
final DisplayContent displayContent = getDisplayContent();
displayContent.mOpeningApps.remove(this);
@@ -6224,6 +6224,16 @@ final class ActivityRecord extends WindowToken {
return false;
}
+ // Hide all activities on the presenting display so that malicious apps can't do tap
+ // jacking (b/391466268).
+ // For now, this should only be applied to external displays because presentations can only
+ // be shown on them.
+ // TODO(b/390481621): Disallow a presentation from covering its controlling activity so that
+ // the presentation won't stop its controlling activity.
+ if (enablePresentationForConnectedDisplays() && mDisplayContent.mIsPresenting) {
+ return false;
+ }
+
// Check if the activity is on a sleeping display and keyguard is not going away (to
// align with TaskFragment#shouldSleepActivities), canTurnScreenOn will also check keyguard
// visibility
@@ -8377,7 +8387,6 @@ final class ActivityRecord extends WindowToken {
mConfigurationSeq = Math.max(++mConfigurationSeq, 1);
getResolvedOverrideConfiguration().seq = mConfigurationSeq;
- // TODO(b/392069771): Move to AppCompatSandboxingPolicy.
// Sandbox max bounds by setting it to the activity bounds, if activity is letterboxed, or
// has or will have mAppCompatDisplayInsets for size compat. Also forces an activity to be
// sandboxed or not depending upon the configuration settings.
@@ -8406,20 +8415,6 @@ final class ActivityRecord extends WindowToken {
resolvedConfig.windowConfiguration.setMaxBounds(mTmpBounds);
}
- // Sandbox activity bounds in freeform to app bounds to force app to display within the
- // container. This prevents UI cropping when activities can draw below insets which are
- // normally excluded from appBounds before targetSDK < 35
- // (see ConfigurationContainer#applySizeOverrideIfNeeded).
- if (isFloating(parentWindowingMode)) {
- Rect appBounds = resolvedConfig.windowConfiguration.getAppBounds();
- if (appBounds == null || appBounds.isEmpty()) {
- // When there is no override bounds, the activity will inherit the bounds from
- // parent.
- appBounds = mResolveConfigHint.mParentAppBoundsOverride;
- }
- resolvedConfig.windowConfiguration.setBounds(appBounds);
- }
-
applySizeOverrideIfNeeded(
mDisplayContent,
info.applicationInfo,
@@ -9961,6 +9956,8 @@ final class ActivityRecord extends WindowToken {
aspectRatioOverrides.shouldEnableUserAspectRatioSettings());
proto.write(IS_USER_FULLSCREEN_OVERRIDE_ENABLED,
aspectRatioOverrides.isUserFullscreenOverrideEnabled());
+ proto.write(REQUEST_OPEN_IN_BROWSER_EDUCATION_TIMESTAMP,
+ mRequestOpenInBrowserEducationTimestamp);
}
@Override
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index c7d4467a6e98..247264f049d6 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -3035,6 +3035,12 @@ class ActivityStarter {
}
}
+ if (com.android.window.flags.Flags.fixLayoutExistingTask()) {
+ // Layout the task to ensure the Task is in correct bounds.
+ mSupervisor.getLaunchParamsController().layoutTask(intentTask,
+ mStartActivity.info.windowLayout, mStartActivity, mSourceRecord, mOptions);
+ }
+
// If the target task is not in the front, then we need to bring it to the front.
final boolean differentTopTask;
if (mTargetRootTask.getDisplayArea() == mPreferredTaskDisplayArea) {
@@ -3655,7 +3661,7 @@ class ActivityStarter {
private static String getIntentRedirectPreventedLogMessage(@NonNull String message,
@NonNull Intent intent, int intentCreatorUid, @Nullable String intentCreatorPackage,
int callingUid, @Nullable String callingPackage) {
- return "[IntentRedirect]" + message + " intentCreatorUid: " + intentCreatorUid
+ return "[IntentRedirect Hardening] " + message + " intentCreatorUid: " + intentCreatorUid
+ "; intentCreatorPackage: " + intentCreatorPackage + "; callingUid: " + callingUid
+ "; callingPackage: " + callingPackage + "; intent: " + intent;
}
diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
index 906befc1edcc..6a5adca91e39 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
@@ -145,6 +145,7 @@ import android.util.SparseIntArray;
import android.view.Display;
import android.webkit.URLUtil;
import android.window.ActivityWindowInfo;
+import android.window.DesktopModeFlags;
import com.android.internal.R;
import com.android.internal.annotations.GuardedBy;
@@ -278,7 +279,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
/** Helper for {@link Task#fillTaskInfo}. */
final TaskInfoHelper mTaskInfoHelper = new TaskInfoHelper();
- final OpaqueActivityHelper mOpaqueActivityHelper = new OpaqueActivityHelper();
+ final OpaqueContainerHelper mOpaqueContainerHelper = new OpaqueContainerHelper();
private final ActivityTaskSupervisorHandler mHandler;
final Looper mLooper;
@@ -2913,41 +2914,90 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
}
}
- /** The helper to get the top opaque activity of a container. */
- static class OpaqueActivityHelper implements Predicate<ActivityRecord> {
+ /** The helper to calculate whether a container is opaque. */
+ static class OpaqueContainerHelper implements Predicate<ActivityRecord> {
private ActivityRecord mStarting;
- private boolean mIncludeInvisibleAndFinishing;
+ private boolean mIgnoringInvisibleActivity;
private boolean mIgnoringKeyguard;
- ActivityRecord getOpaqueActivity(@NonNull WindowContainer<?> container) {
- mIncludeInvisibleAndFinishing = true;
- mIgnoringKeyguard = true;
- return container.getActivity(this,
- true /* traverseTopToBottom */, null /* boundary */);
+ /** Whether the container is opaque. */
+ boolean isOpaque(@NonNull WindowContainer<?> container) {
+ return isOpaque(container, null /* starting */, true /* ignoringKeyguard */,
+ false /* ignoringInvisibleActivity */);
}
- ActivityRecord getVisibleOpaqueActivity(
+ /**
+ * Whether the container is opaque, but only including visible activities in its
+ * calculation.
+ */
+ boolean isOpaque(
@NonNull WindowContainer<?> container, @Nullable ActivityRecord starting,
- boolean ignoringKeyguard) {
+ boolean ignoringKeyguard, boolean ignoringInvisibleActivity) {
mStarting = starting;
- mIncludeInvisibleAndFinishing = false;
+ mIgnoringInvisibleActivity = ignoringInvisibleActivity;
mIgnoringKeyguard = ignoringKeyguard;
- final ActivityRecord opaque = container.getActivity(this,
- true /* traverseTopToBottom */, null /* boundary */);
+
+ final boolean isOpaque;
+ if (!Flags.enableMultipleDesktopsBackend()) {
+ isOpaque = container.getActivity(this,
+ true /* traverseTopToBottom */, null /* boundary */) != null;
+ } else {
+ isOpaque = isOpaqueInner(container);
+ }
mStarting = null;
- return opaque;
+ return isOpaque;
+ }
+
+ private boolean isOpaqueInner(@NonNull WindowContainer<?> container) {
+ // If it's a leaf task fragment, then opacity is calculated based on its activities.
+ if (container.asTaskFragment() != null
+ && ((TaskFragment) container).isLeafTaskFragment()) {
+ return container.getActivity(this,
+ true /* traverseTopToBottom */, null /* boundary */) != null;
+ }
+ // When not a leaf, it's considered opaque if any of its opaque children fill this
+ // container, unless the children are adjacent fragments, in which case as long as they
+ // are all opaque then |container| is also considered opaque, even if the adjacent
+ // task fragment aren't filling.
+ for (int i = 0; i < container.getChildCount(); i++) {
+ final WindowContainer<?> child = container.getChildAt(i);
+ if (child.fillsParent() && isOpaque(child)) {
+ return true;
+ }
+
+ if (child.asTaskFragment() != null
+ && child.asTaskFragment().hasAdjacentTaskFragment()) {
+ final boolean isAnyTranslucent;
+ if (Flags.allowMultipleAdjacentTaskFragments()) {
+ final TaskFragment.AdjacentSet set =
+ child.asTaskFragment().getAdjacentTaskFragments();
+ isAnyTranslucent = set.forAllTaskFragments(
+ tf -> !isOpaque(tf), null);
+ } else {
+ final TaskFragment adjacent = child.asTaskFragment()
+ .getAdjacentTaskFragment();
+ isAnyTranslucent = !isOpaque(child) || !isOpaque(adjacent);
+ }
+ if (!isAnyTranslucent) {
+ // This task fragment and all its adjacent task fragments are opaque,
+ // consider it opaque even if it doesn't fill its parent.
+ return true;
+ }
+ }
+ }
+ return false;
}
@Override
public boolean test(ActivityRecord r) {
- if (!mIncludeInvisibleAndFinishing && r != mStarting
+ if (mIgnoringInvisibleActivity && r != mStarting
&& ((mIgnoringKeyguard && !r.visibleIgnoringKeyguard)
|| (!mIgnoringKeyguard && !r.isVisible()))) {
// Ignore invisible activities that are not the currently starting activity
// (about to be visible).
return false;
}
- return r.occludesParent(mIncludeInvisibleAndFinishing /* includingFinishing */);
+ return r.occludesParent(!mIgnoringInvisibleActivity /* includingFinishing */);
}
}
@@ -2974,7 +3024,8 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
@Override
public void accept(ActivityRecord r) {
- if (Flags.enableDesktopWindowingAppToWeb() && mInfo.capturedLink == null) {
+ if (DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_APP_TO_WEB.isTrue()
+ && mInfo.capturedLink == null) {
setCapturedLink(r);
}
if (r.mLaunchCookie != null) {
diff --git a/services/core/java/com/android/server/wm/AppCompatConfiguration.java b/services/core/java/com/android/server/wm/AppCompatConfiguration.java
index 9a15c4a8bff2..0d8950b6cc45 100644
--- a/services/core/java/com/android/server/wm/AppCompatConfiguration.java
+++ b/services/core/java/com/android/server/wm/AppCompatConfiguration.java
@@ -311,7 +311,7 @@ final class AppCompatConfiguration {
// Whether should ignore app requested orientation in response to an app
// calling Activity#setRequestedOrientation. See
- // LetterboxUiController#shouldIgnoreRequestedOrientation for details.
+ // AppCompatOrientationPolicy#shouldIgnoreRequestedOrientation for details.
private final boolean mIsPolicyForIgnoringRequestedOrientationEnabled;
// Flags dynamically updated with {@link android.provider.DeviceConfig}.
@@ -1259,7 +1259,7 @@ final class AppCompatConfiguration {
/**
* Whether should ignore app requested orientation in response to an app calling
* {@link android.app.Activity#setRequestedOrientation}. See {@link
- * LetterboxUiController#shouldIgnoreRequestedOrientation} for details.
+ * AppCompatOrientationPolicy#shouldIgnoreRequestedOrientation} for details.
*/
boolean isPolicyForIgnoringRequestedOrientationEnabled() {
return mIsPolicyForIgnoringRequestedOrientationEnabled;
diff --git a/services/core/java/com/android/server/wm/AppCompatReachabilityPolicy.java b/services/core/java/com/android/server/wm/AppCompatReachabilityPolicy.java
index a7c52bd1fc38..b47786675fc9 100644
--- a/services/core/java/com/android/server/wm/AppCompatReachabilityPolicy.java
+++ b/services/core/java/com/android/server/wm/AppCompatReachabilityPolicy.java
@@ -32,6 +32,7 @@ import android.annotation.Nullable;
import android.graphics.Rect;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.window.flags.Flags;
import java.io.PrintWriter;
import java.util.function.Supplier;
@@ -97,8 +98,11 @@ class AppCompatReachabilityPolicy {
private void handleHorizontalDoubleTap(int x) {
final AppCompatReachabilityOverrides reachabilityOverrides =
mActivityRecord.mAppCompatController.getReachabilityOverrides();
- if (!reachabilityOverrides.isHorizontalReachabilityEnabled()
- || mActivityRecord.isInTransition()) {
+ // We don't return early when the Shell letterbox implementation is enabled because
+ // double tap is always sent via transitions.
+ final boolean isInTransition = !Flags.appCompatRefactoring()
+ && mActivityRecord.isInTransition();
+ if (!reachabilityOverrides.isHorizontalReachabilityEnabled() || isInTransition) {
return;
}
final Rect letterboxInnerFrame = getLetterboxInnerFrame();
@@ -143,8 +147,11 @@ class AppCompatReachabilityPolicy {
private void handleVerticalDoubleTap(int y) {
final AppCompatReachabilityOverrides reachabilityOverrides =
mActivityRecord.mAppCompatController.getReachabilityOverrides();
- if (!reachabilityOverrides.isVerticalReachabilityEnabled()
- || mActivityRecord.isInTransition()) {
+ // We don't return early when the Shell letterbox implementation is enabled because
+ // double tap is always sent via transitions.
+ final boolean isInTransition = !Flags.appCompatRefactoring()
+ && mActivityRecord.isInTransition();
+ if (!reachabilityOverrides.isVerticalReachabilityEnabled() || isInTransition) {
return;
}
final Rect letterboxInnerFrame = getLetterboxInnerFrame();
diff --git a/services/core/java/com/android/server/wm/AppCompatSizeCompatModePolicy.java b/services/core/java/com/android/server/wm/AppCompatSizeCompatModePolicy.java
index c6831881ea48..bbc33004ee54 100644
--- a/services/core/java/com/android/server/wm/AppCompatSizeCompatModePolicy.java
+++ b/services/core/java/com/android/server/wm/AppCompatSizeCompatModePolicy.java
@@ -228,10 +228,11 @@ class AppCompatSizeCompatModePolicy {
int rotation = newParentConfiguration.windowConfiguration.getRotation();
final boolean isFixedToUserRotation = mActivityRecord.mDisplayContent == null
|| mActivityRecord.mDisplayContent.getDisplayRotation().isFixedToUserRotation();
+ final boolean tasksAreFloating =
+ newParentConfiguration.windowConfiguration.tasksAreFloating();
// Ignore parent rotation for floating tasks as window rotation is independent of its parent
// and thus will remain, and so should be reconfigured, in its original rotation.
- if (!isFixedToUserRotation
- && !newParentConfiguration.windowConfiguration.tasksAreFloating()) {
+ if (!isFixedToUserRotation && !tasksAreFloating) {
// Use parent rotation because the original display can be rotated.
resolvedConfig.windowConfiguration.setRotation(rotation);
} else {
@@ -297,7 +298,9 @@ class AppCompatSizeCompatModePolicy {
final float lastSizeCompatScale = mSizeCompatScale;
updateSizeCompatScale(resolvedAppBounds, containerAppBounds, newParentConfiguration);
- final int containerTopInset = containerAppBounds.top - containerBounds.top;
+ // Container top inset when floating is not included in height of bounds.
+ final int containerTopInset = tasksAreFloating ? 0
+ : containerAppBounds.top - containerBounds.top;
final boolean topNotAligned =
containerTopInset != resolvedAppBounds.top - resolvedBounds.top;
if (mSizeCompatScale != 1f || topNotAligned) {
diff --git a/services/core/java/com/android/server/wm/AppTransitionController.java b/services/core/java/com/android/server/wm/AppTransitionController.java
index 0a2f6852f6e6..d5fe056a2ba4 100644
--- a/services/core/java/com/android/server/wm/AppTransitionController.java
+++ b/services/core/java/com/android/server/wm/AppTransitionController.java
@@ -80,7 +80,6 @@ import android.os.Trace;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Pair;
-import android.view.Display;
import android.view.RemoteAnimationAdapter;
import android.view.RemoteAnimationDefinition;
import android.view.WindowManager;
@@ -252,7 +251,6 @@ public class AppTransitionController {
// Check if there is any override
if (!overrideWithTaskFragmentRemoteAnimation(transit, activityTypes)) {
// Unfreeze the windows that were previously frozen for TaskFragment animation.
- unfreezeEmbeddedChangingWindows();
overrideWithRemoteAnimationIfSet(animLpActivity, transit, activityTypes);
}
@@ -545,16 +543,6 @@ public class AppTransitionController {
: null;
}
- private void unfreezeEmbeddedChangingWindows() {
- final ArraySet<WindowContainer> changingContainers = mDisplayContent.mChangingContainers;
- for (int i = changingContainers.size() - 1; i >= 0; i--) {
- final WindowContainer wc = changingContainers.valueAt(i);
- if (wc.isEmbedded()) {
- wc.mSurfaceFreezer.unfreeze(wc.getSyncTransaction());
- }
- }
- }
-
private boolean transitionMayContainNonAppWindows(@TransitionOldType int transit) {
// We don't want to have the client to animate any non-app windows.
// Having {@code transit} of those types doesn't mean it will contain non-app windows, but
diff --git a/services/core/java/com/android/server/wm/DesktopModeHelper.java b/services/core/java/com/android/server/wm/DesktopModeHelper.java
index e3906f9119c2..a1faa7573a0c 100644
--- a/services/core/java/com/android/server/wm/DesktopModeHelper.java
+++ b/services/core/java/com/android/server/wm/DesktopModeHelper.java
@@ -16,6 +16,8 @@
package com.android.server.wm;
+import static android.app.Flags.enableConnectedDisplaysWallpaper;
+
import android.annotation.NonNull;
import android.content.Context;
import android.os.SystemProperties;
@@ -52,8 +54,7 @@ public final class DesktopModeHelper {
* Return {@code true} if the current device supports desktop mode.
*/
// TODO(b/337819319): use a companion object instead.
- @VisibleForTesting
- static boolean isDesktopModeSupported(@NonNull Context context) {
+ private static boolean isDesktopModeSupported(@NonNull Context context) {
return context.getResources().getBoolean(R.bool.config_isDesktopModeSupported);
}
@@ -83,4 +84,9 @@ public final class DesktopModeHelper {
return (isDesktopModeEnabled() && isDeviceEligibleForDesktopMode(context))
|| isDesktopModeEnabledByDevOption(context);
}
+
+ /** Returns {@code true} if desktop experience wallpaper is supported on this device. */
+ public static boolean isDeviceEligibleForDesktopExperienceWallpaper(@NonNull Context context) {
+ return enableConnectedDisplaysWallpaper() && isDeviceEligibleForDesktopMode(context);
+ }
}
diff --git a/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java b/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java
index 548addbef39d..ac987929a142 100644
--- a/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java
+++ b/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java
@@ -74,6 +74,12 @@ class DesktopModeLaunchParamsModifier implements LaunchParamsModifier {
appendLog("task null, skipping");
return RESULT_SKIP;
}
+ if (com.android.window.flags.Flags.fixLayoutExistingTask()
+ && task.getOrganizedTask() != null) {
+ appendLog("task is organized, skipping");
+ return RESULT_SKIP;
+ }
+
if (!task.isActivityTypeStandardOrUndefined()) {
appendLog("not standard or undefined activity type, skipping");
return RESULT_SKIP;
diff --git a/services/core/java/com/android/server/wm/DeviceStateAutoRotateSettingController.java b/services/core/java/com/android/server/wm/DeviceStateAutoRotateSettingController.java
new file mode 100644
index 000000000000..f42d60dd417b
--- /dev/null
+++ b/services/core/java/com/android/server/wm/DeviceStateAutoRotateSettingController.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm;
+
+import android.content.Context;
+import android.database.ContentObserver;
+import android.os.Handler;
+import android.provider.Settings;
+
+import com.android.window.flags.Flags;
+
+/**
+ * Syncs ACCELEROMETER_ROTATION and DEVICE_STATE_ROTATION_LOCK setting to consistent values.
+ * <ul>
+ * <li>On device state change: Reads value of DEVICE_STATE_ROTATION_LOCK for new device state and
+ * writes into ACCELEROMETER_ROTATION.</li>
+ * <li>On ACCELEROMETER_ROTATION setting change: Write updated ACCELEROMETER_ROTATION value into
+ * DEVICE_STATE_ROTATION_LOCK setting for current device state.</li>
+ * <li>On DEVICE_STATE_ROTATION_LOCK setting change: If the key for the changed value matches
+ * current device state, write updated auto rotate value to ACCELEROMETER_ROTATION.</li>
+ * </ul>
+ *
+ * @see Settings.System#ACCELEROMETER_ROTATION
+ * @see Settings.Secure#DEVICE_STATE_ROTATION_LOCK
+ */
+
+public class DeviceStateAutoRotateSettingController {
+ private final DeviceStateAutoRotateSettingIssueLogger mDeviceStateAutoRotateSettingIssueLogger;
+ private final Context mContext;
+ private final Handler mHandler;
+
+ public DeviceStateAutoRotateSettingController(Context context,
+ DeviceStateAutoRotateSettingIssueLogger deviceStateAutoRotateSettingIssueLogger,
+ Handler handler) {
+ // TODO(b/350946537) Refactor implementation
+ mDeviceStateAutoRotateSettingIssueLogger = deviceStateAutoRotateSettingIssueLogger;
+ mContext = context;
+ mHandler = handler;
+ registerDeviceStateAutoRotateSettingObserver();
+ }
+
+ /** Notify controller device state has changed */
+ public void onDeviceStateChange(DeviceStateController.DeviceState deviceState) {
+ if (Flags.enableDeviceStateAutoRotateSettingLogging()) {
+ mDeviceStateAutoRotateSettingIssueLogger.onDeviceStateChange();
+ }
+ }
+
+ private void registerDeviceStateAutoRotateSettingObserver() {
+ mContext.getContentResolver().registerContentObserver(
+ Settings.Secure.getUriFor(Settings.Secure.DEVICE_STATE_ROTATION_LOCK),
+ false,
+ new ContentObserver(mHandler) {
+ @Override
+ public void onChange(boolean selfChange) {
+ if (Flags.enableDeviceStateAutoRotateSettingLogging()) {
+ mDeviceStateAutoRotateSettingIssueLogger
+ .onDeviceStateAutoRotateSettingChange();
+ }
+ }
+ });
+ }
+}
diff --git a/services/core/java/com/android/server/wm/DeviceStateAutoRotateSettingIssueLogger.java b/services/core/java/com/android/server/wm/DeviceStateAutoRotateSettingIssueLogger.java
new file mode 100644
index 000000000000..937039d838e5
--- /dev/null
+++ b/services/core/java/com/android/server/wm/DeviceStateAutoRotateSettingIssueLogger.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm;
+
+import static android.util.MathUtils.abs;
+
+import android.annotation.ElapsedRealtimeLong;
+import android.annotation.NonNull;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.FrameworkStatsLog;
+
+import java.util.function.LongSupplier;
+
+/**
+ * Logs potential race conditions that lead to incorrect auto-rotate setting.
+ *
+ * Before go/auto-rotate-refactor, there is a race condition that happen during device state
+ * changes, as a result, incorrect auto-rotate setting are written for a device state in
+ * DEVICE_STATE_ROTATION_LOCK. Realistically, users shouldn’t be able to change
+ * DEVICE_STATE_ROTATION_LOCK while the device folds/unfolds.
+ *
+ * This class monitors the time between a device state change and a subsequent change to the device
+ * state based auto-rotate setting. If the duration is less than a threshold
+ * (DEVICE_STATE_AUTO_ROTATE_SETTING_ISSUE_THRESHOLD), a potential issue is logged. The logging of
+ * the atom is not expected to occur often, realistically estimated once a month on few devices.
+ * But the number could be bigger, as that's what this metric is set to reveal.
+ *
+ * @see #DEVICE_STATE_AUTO_ROTATE_SETTING_ISSUE_THRESHOLD_MILLIS
+ */
+public class DeviceStateAutoRotateSettingIssueLogger {
+ @VisibleForTesting
+ static final long DEVICE_STATE_AUTO_ROTATE_SETTING_ISSUE_THRESHOLD_MILLIS = 1500;
+ private static final long TIME_NOT_SET = -1;
+
+ private final LongSupplier mElapsedTimeMillisSupplier;
+
+ @ElapsedRealtimeLong
+ private long mLastDeviceStateChangeTime = TIME_NOT_SET;
+ @ElapsedRealtimeLong
+ private long mLastDeviceStateAutoRotateSettingChangeTime = TIME_NOT_SET;
+
+ public DeviceStateAutoRotateSettingIssueLogger(
+ @NonNull LongSupplier elapsedTimeMillisSupplier) {
+ mElapsedTimeMillisSupplier = elapsedTimeMillisSupplier;
+ }
+
+ /** Notify logger that device state has changed. */
+ public void onDeviceStateChange() {
+ mLastDeviceStateChangeTime = mElapsedTimeMillisSupplier.getAsLong();
+ onStateChange();
+ }
+
+ /** Notify logger that device state based auto rotate setting has changed. */
+ public void onDeviceStateAutoRotateSettingChange() {
+ mLastDeviceStateAutoRotateSettingChangeTime = mElapsedTimeMillisSupplier.getAsLong();
+ onStateChange();
+ }
+
+ private void onStateChange() {
+ // Only move forward if both of the events have occurred already
+ if (mLastDeviceStateChangeTime != TIME_NOT_SET
+ && mLastDeviceStateAutoRotateSettingChangeTime != TIME_NOT_SET) {
+ final long duration =
+ mLastDeviceStateAutoRotateSettingChangeTime - mLastDeviceStateChangeTime;
+ boolean isDeviceStateChangeFirst = duration > 0;
+
+ if (abs(duration)
+ < DEVICE_STATE_AUTO_ROTATE_SETTING_ISSUE_THRESHOLD_MILLIS) {
+ FrameworkStatsLog.write(
+ FrameworkStatsLog.DEVICE_STATE_AUTO_ROTATE_SETTING_ISSUE_REPORTED,
+ (int) abs(duration),
+ isDeviceStateChangeFirst);
+ }
+
+ mLastDeviceStateAutoRotateSettingChangeTime = TIME_NOT_SET;
+ mLastDeviceStateChangeTime = TIME_NOT_SET;
+ }
+ }
+}
diff --git a/services/core/java/com/android/server/wm/DisplayAreaOrganizerController.java b/services/core/java/com/android/server/wm/DisplayAreaOrganizerController.java
index afeeaf707a18..d7579294cac6 100644
--- a/services/core/java/com/android/server/wm/DisplayAreaOrganizerController.java
+++ b/services/core/java/com/android/server/wm/DisplayAreaOrganizerController.java
@@ -366,10 +366,10 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl
taskDisplayArea.setOrganizer(null);
mService.mRootWindowContainer.mTaskSupervisor.beginDeferResume();
- // TaskDisplayArea#remove() move the stacks to the default TaskDisplayArea.
+ // TaskDisplayArea#remove() moves the stacks to the default TaskDisplayArea.
Task lastReparentedRootTask;
try {
- lastReparentedRootTask = taskDisplayArea.remove();
+ lastReparentedRootTask = taskDisplayArea.prepareForRemoval();
} finally {
mService.mRootWindowContainer.mTaskSupervisor.endDeferResume();
}
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index a0d2d260b39e..5cb39d44586f 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -547,6 +547,9 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
// TODO(multi-display): remove some of the usages.
boolean isDefaultDisplay;
+ /** Indicates whether any presentation is shown on this display. */
+ boolean mIsPresenting;
+
/** Save allocating when calculating rects */
private final Rect mTmpRect = new Rect();
private final Region mTmpRegion = new Region();
@@ -3262,7 +3265,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
mWmService.mDisplayWindowSettings.setShouldShowSystemDecorsLocked(this, shouldShow);
if (!shouldShow) {
- clearAllTasksOnDisplay(null);
+ clearAllTasksOnDisplay(null /* clearTasksCallback */, false /* isRemovingDisplay */);
}
}
@@ -5165,7 +5168,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
/**
* Creates a LayerCaptureArgs object to represent the entire DisplayContent
*/
- LayerCaptureArgs getLayerCaptureArgs(Set<Integer> windowTypesToExclude) {
+ LayerCaptureArgs getLayerCaptureArgs(@Nullable ToBooleanFunction<WindowState> predicate) {
if (!mWmService.mPolicy.isScreenOn()) {
if (DEBUG_SCREENSHOT) {
Slog.i(TAG_WM, "Attempted to take screenshot while display was off.");
@@ -5178,17 +5181,16 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
LayerCaptureArgs.Builder builder = new LayerCaptureArgs.Builder(getSurfaceControl())
.setSourceCrop(mTmpRect);
- if (!windowTypesToExclude.isEmpty()) {
- ArrayList<SurfaceControl> surfaceControls = new ArrayList<>();
+ if (predicate != null) {
+ ArrayList<SurfaceControl> excludeLayers = new ArrayList<>();
forAllWindows(
window -> {
- if (windowTypesToExclude.contains(window.getWindowType())) {
- surfaceControls.add(window.mSurfaceControl);
+ if (!predicate.apply(window)) {
+ excludeLayers.add(window.mSurfaceControl);
}
- }, true
- );
- if (!surfaceControls.isEmpty()) {
- builder.setExcludeLayers(surfaceControls.toArray(new SurfaceControl[0]));
+ }, true);
+ if (!excludeLayers.isEmpty()) {
+ builder.setExcludeLayers(excludeLayers.toArray(new SurfaceControl[0]));
}
}
return builder.build();
@@ -6469,12 +6471,15 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
return mRemoving;
}
- void clearAllTasksOnDisplay(@Nullable Runnable clearTasksCallback) {
+ private void clearAllTasksOnDisplay(@Nullable Runnable clearTasksCallback,
+ boolean isRemovingDisplay) {
Task lastReparentedRootTask;
mRootWindowContainer.mTaskSupervisor.beginDeferResume();
try {
lastReparentedRootTask = reduceOnAllTaskDisplayAreas((taskDisplayArea, rootTask) -> {
- final Task lastReparentedRootTaskFromArea = taskDisplayArea.remove();
+ final Task lastReparentedRootTaskFromArea = isRemovingDisplay
+ ? taskDisplayArea.prepareForRemoval()
+ : taskDisplayArea.setShouldKeepNoTask(true);
if (lastReparentedRootTaskFromArea != null) {
return lastReparentedRootTaskFromArea;
}
@@ -6504,7 +6509,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
if (mContentRecorder != null) {
mContentRecorder.stopRecording();
}
- });
+ }, true /* isRemovingDisplay */);
releaseSelfIfNeeded();
mDisplayPolicy.release();
diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java
index 5b1619995529..10f591cfd379 100644
--- a/services/core/java/com/android/server/wm/DisplayPolicy.java
+++ b/services/core/java/com/android/server/wm/DisplayPolicy.java
@@ -74,7 +74,6 @@ import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.L
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
-import static com.android.window.flags.Flags.enableFullyImmersiveInDesktop;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -120,6 +119,7 @@ import android.view.WindowManager.LayoutParams;
import android.view.WindowManagerGlobal;
import android.view.accessibility.AccessibilityManager;
import android.window.ClientWindowFrames;
+import android.window.DesktopModeFlags;
import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
@@ -756,20 +756,7 @@ public class DisplayPolicy {
return;
}
- final boolean hasNavigationBar = mDisplayContent.isSystemDecorationsSupported();
- if (mHasNavigationBar == hasNavigationBar) {
- return;
- }
-
- mHasNavigationBar = hasNavigationBar;
- mHandler.post(
- () -> {
- final int displayId = getDisplayId();
- StatusBarManagerInternal statusBar = getStatusBarManagerInternal();
- if (statusBar != null) {
- statusBar.setHasNavigationBar(displayId, mHasNavigationBar);
- }
- });
+ mHasNavigationBar = mDisplayContent.isSystemDecorationsSupported();
}
public boolean hasStatusBar() {
@@ -1887,17 +1874,17 @@ public class DisplayPolicy {
mCanSystemBarsBeShownByUser = canBeShown;
}
- void notifyDisplayReady() {
+ void notifyDisplayAddSystemDecorations() {
mHandler.post(() -> {
final int displayId = getDisplayId();
StatusBarManagerInternal statusBar = getStatusBarManagerInternal();
if (statusBar != null) {
- statusBar.onDisplayReady(displayId);
+ statusBar.onDisplayAddSystemDecorations(displayId);
}
final WallpaperManagerInternal wpMgr = LocalServices
.getService(WallpaperManagerInternal.class);
if (wpMgr != null) {
- wpMgr.onDisplayReady(displayId);
+ wpMgr.onDisplayAddSystemDecorations(displayId);
}
});
}
@@ -2525,7 +2512,7 @@ public class DisplayPolicy {
&& !topFreeformTask.getBounds().equals(mDisplayContent.getBounds());
getInsetsPolicy().updateSystemBars(win, adjacentTasksVisible,
- enableFullyImmersiveInDesktop()
+ DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue()
? inNonFullscreenFreeformMode : freeformRootTaskVisible);
final boolean topAppHidesStatusBar = topAppHidesSystemBar(Type.statusBars());
diff --git a/services/core/java/com/android/server/wm/DisplayRotation.java b/services/core/java/com/android/server/wm/DisplayRotation.java
index f8c17550caba..786161c07247 100644
--- a/services/core/java/com/android/server/wm/DisplayRotation.java
+++ b/services/core/java/com/android/server/wm/DisplayRotation.java
@@ -77,6 +77,7 @@ import com.android.internal.protolog.ProtoLog;
import com.android.server.UiThread;
import com.android.server.policy.WindowManagerPolicy;
import com.android.server.statusbar.StatusBarManagerInternal;
+import com.android.window.flags.Flags;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
@@ -108,6 +109,8 @@ public class DisplayRotation {
private final Object mLock;
@Nullable
private final DisplayRotationImmersiveAppCompatPolicy mCompatPolicyForImmersiveApps;
+ @Nullable
+ private DeviceStateAutoRotateSettingController mDeviceStateAutoRotateSettingController;
public final boolean isDefaultDisplay;
private final boolean mSupportAutoRotation;
@@ -298,6 +301,14 @@ public class DisplayRotation {
} else {
mFoldController = null;
}
+
+ if (mFoldController != null && (Flags.enableDeviceStateAutoRotateSettingLogging()
+ || Flags.enableDeviceStateAutoRotateSettingRefactor())) {
+ mDeviceStateAutoRotateSettingController =
+ new DeviceStateAutoRotateSettingController(mContext,
+ new DeviceStateAutoRotateSettingIssueLogger(
+ SystemClock::elapsedRealtime), mService.mH);
+ }
}
private static boolean isFoldable(Context context) {
@@ -1667,6 +1678,9 @@ public class DisplayRotation {
if (mFoldController != null) {
synchronized (mLock) {
mFoldController.foldStateChanged(deviceState);
+ if (mDeviceStateAutoRotateSettingController != null) {
+ mDeviceStateAutoRotateSettingController.onDeviceStateChange(deviceState);
+ }
}
}
}
diff --git a/services/core/java/com/android/server/wm/DisplayWindowSettings.java b/services/core/java/com/android/server/wm/DisplayWindowSettings.java
index 28aa6eff911b..539fc123720e 100644
--- a/services/core/java/com/android/server/wm/DisplayWindowSettings.java
+++ b/services/core/java/com/android/server/wm/DisplayWindowSettings.java
@@ -122,7 +122,7 @@ class DisplayWindowSettings {
}
void setIgnoreOrientationRequest(@NonNull DisplayContent displayContent,
- boolean ignoreOrientationRequest) {
+ @Nullable Boolean ignoreOrientationRequest) {
final DisplayInfo displayInfo = displayContent.getDisplayInfo();
final SettingsProvider.SettingsEntry overrideSettings =
mSettingsProvider.getOverrideSettings(displayInfo);
diff --git a/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java b/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
index 59ca79c7ffc3..cf16204f93a1 100644
--- a/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
+++ b/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
@@ -182,12 +182,18 @@ final class ImeInsetsSourceProvider extends InsetsSourceProvider {
if (control != null && control.getLeash() != null) {
ImeTracker.Token statsToken = getAndClearStatsToken();
if (statsToken == null) {
- ProtoLog.d(WM_DEBUG_IME, "IME getControl without statsToken");
- } else {
- ImeTracker.forLogging().onProgress(statsToken,
- ImeTracker.PHASE_WM_GET_CONTROL_WITH_LEASH);
- control.setImeStatsToken(statsToken);
+ ProtoLog.w(WM_DEBUG_IME,
+ "IME getControl without statsToken (check previous request!). "
+ + "Start new request");
+ // TODO(b/353463205) remove this later after fixing the race of two requests
+ // that cancel each other (cf. b/383466954#comment19).
+ statsToken = ImeTracker.forLogging().onStart(ImeTracker.TYPE_SHOW,
+ ImeTracker.ORIGIN_SERVER, SoftInputShowHideReason.CONTROLS_CHANGED,
+ false /* fromUser */);
}
+ ImeTracker.forLogging().onProgress(statsToken,
+ ImeTracker.PHASE_WM_GET_CONTROL_WITH_LEASH);
+ control.setImeStatsToken(statsToken);
}
}
return control;
diff --git a/services/core/java/com/android/server/wm/LaunchParamsController.java b/services/core/java/com/android/server/wm/LaunchParamsController.java
index 4f5c0c8ecf6e..fa65bda7104d 100644
--- a/services/core/java/com/android/server/wm/LaunchParamsController.java
+++ b/services/core/java/com/android/server/wm/LaunchParamsController.java
@@ -124,31 +124,19 @@ class LaunchParamsController {
}
}
- /**
- * A convenience method for laying out a task.
- * @return {@code true} if bounds were set on the task. {@code false} otherwise.
- */
- boolean layoutTask(Task task, WindowLayout layout) {
- return layoutTask(task, layout, null /*activity*/, null /*source*/, null /*options*/);
- }
-
+ /** @return {@code true} if bounds were set on the task. {@code false} otherwise. */
boolean layoutTask(Task task, WindowLayout layout, ActivityRecord activity,
ActivityRecord source, ActivityOptions options) {
calculate(task, layout, activity, source, options, null /* request */, PHASE_BOUNDS,
mTmpParams);
// No changes, return.
- if (mTmpParams.isEmpty()) {
+ if (mTmpParams.isEmpty() || mTmpParams.mBounds.isEmpty()) {
return false;
}
mService.deferWindowLayout();
-
try {
- if (mTmpParams.mBounds.isEmpty()) {
- return false;
- }
-
if (task.getRootTask().inMultiWindowMode()) {
task.setBounds(mTmpParams.mBounds);
return true;
diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java
index abd26b5164f7..95d9b3e612ac 100644
--- a/services/core/java/com/android/server/wm/RootWindowContainer.java
+++ b/services/core/java/com/android/server/wm/RootWindowContainer.java
@@ -1407,8 +1407,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
// When display content mode management flag is enabled, the task display area is marked as
// removed when switching from extended display to mirroring display. We need to restart the
// task display area before starting the home.
- if (enableDisplayContentModeManagement() && taskDisplayArea.isRemoved()) {
- taskDisplayArea.restart();
+ if (enableDisplayContentModeManagement() && taskDisplayArea.shouldKeepNoTask()) {
+ taskDisplayArea.setShouldKeepNoTask(false);
}
Intent homeIntent = null;
@@ -1948,7 +1948,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
final IntArray rootTaskIdsToRestore = mUserVisibleRootTasks.get(userId);
boolean homeInFront = false;
if (Flags.enableTopVisibleRootTaskPerUserTracking()) {
- if (rootTaskIdsToRestore == null) {
+ if (rootTaskIdsToRestore == null || rootTaskIdsToRestore.size() == 0) {
// If there are no root tasks saved, try restore id 0 which should create and launch
// the home task.
handleRootTaskLaunchOnUserSwitch(/* restoreRootTaskId */INVALID_TASK_ID);
@@ -1958,11 +1958,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
handleRootTaskLaunchOnUserSwitch(rootTaskIdsToRestore.get(i));
}
// Check if the top task is type home
- if (rootTaskIdsToRestore.size() > 0) {
- final int topRootTaskId = rootTaskIdsToRestore.get(
- rootTaskIdsToRestore.size() - 1);
- homeInFront = isHomeTask(topRootTaskId);
- }
+ final int topRootTaskId = rootTaskIdsToRestore.get(rootTaskIdsToRestore.size() - 1);
+ homeInFront = isHomeTask(topRootTaskId);
}
} else {
handleRootTaskLaunchOnUserSwitch(restoreRootTaskId);
@@ -2845,7 +2842,13 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
}
startHomeOnDisplay(mCurrentUser, reason, displayContent.getDisplayId());
- displayContent.getDisplayPolicy().notifyDisplayReady();
+ if (enableDisplayContentModeManagement()) {
+ if (displayContent.isSystemDecorationsSupported()) {
+ displayContent.getDisplayPolicy().notifyDisplayAddSystemDecorations();
+ }
+ } else {
+ displayContent.getDisplayPolicy().notifyDisplayAddSystemDecorations();
+ }
}
@Override
diff --git a/services/core/java/com/android/server/wm/Session.java b/services/core/java/com/android/server/wm/Session.java
index 07de489d9ff4..1ad5988e3c2e 100644
--- a/services/core/java/com/android/server/wm/Session.java
+++ b/services/core/java/com/android/server/wm/Session.java
@@ -35,6 +35,7 @@ import static android.content.Intent.EXTRA_TASK_ID;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
+import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG;
import static android.view.WindowManager.LayoutParams.isSystemAlertWindowType;
import static com.android.internal.protolog.WmProtoLogGroups.WM_DEBUG_IME;
@@ -765,7 +766,7 @@ class Session extends IWindowSession.Stub implements IBinder.DeathRecipient {
void onWindowSurfaceVisibilityChanged(WindowState window, boolean visible) {
final int type = window.mAttrs.type;
- if (!isSystemAlertWindowType(type)) {
+ if (!isSystemAlertWindowType(type) && type != TYPE_SYSTEM_DIALOG) {
return;
}
diff --git a/services/core/java/com/android/server/wm/SurfaceAnimator.java b/services/core/java/com/android/server/wm/SurfaceAnimator.java
index d7b6d96c781d..3dfff39e9b68 100644
--- a/services/core/java/com/android/server/wm/SurfaceAnimator.java
+++ b/services/core/java/com/android/server/wm/SurfaceAnimator.java
@@ -60,8 +60,6 @@ public class SurfaceAnimator {
@VisibleForTesting
SurfaceControl mLeash;
@VisibleForTesting
- SurfaceFreezer.Snapshot mSnapshot;
- @VisibleForTesting
final Animatable mAnimatable;
@VisibleForTesting
final OnAnimationFinishedCallback mInnerAnimationFinishedCallback;
@@ -165,7 +163,7 @@ public class SurfaceAnimator {
@AnimationType int type,
@Nullable OnAnimationFinishedCallback animationFinishedCallback,
@Nullable Runnable animationCancelledCallback,
- @Nullable AnimationAdapter snapshotAnim, @Nullable SurfaceFreezer freezer) {
+ @Nullable AnimationAdapter snapshotAnim) {
cancelAnimation(t, true /* restarting */, true /* forwardCancel */);
mAnimation = anim;
mAnimationType = type;
@@ -177,7 +175,6 @@ public class SurfaceAnimator {
cancelAnimation();
return;
}
- mLeash = freezer != null ? freezer.takeLeashForAnimation() : null;
if (mLeash == null) {
mLeash = createAnimationLeash(mAnimatable, surface, t, type,
mAnimatable.getSurfaceWidth(), mAnimatable.getSurfaceHeight(), 0 /* x */,
@@ -192,21 +189,13 @@ public class SurfaceAnimator {
mAnimation.dump(pw, "");
ProtoLog.d(WM_DEBUG_ANIM, "Animation start for %s, anim=%s", mAnimatable, sw);
}
- if (snapshotAnim != null) {
- mSnapshot = freezer.takeSnapshotForAnimation();
- if (mSnapshot == null) {
- Slog.e(TAG, "No snapshot target to start animation on for " + mAnimatable);
- return;
- }
- mSnapshot.startAnimation(t, snapshotAnim, type);
- }
setAnimatorPendingState(t);
}
void startAnimation(Transaction t, AnimationAdapter anim, boolean hidden,
@AnimationType int type) {
startAnimation(t, anim, hidden, type, null /* animationFinishedCallback */,
- null /* animationCancelledCallback */, null /* snapshotAnim */, null /* freezer */);
+ null /* animationCancelledCallback */, null /* snapshotAnim */);
}
/** Indicates that there are surface operations in the pending transaction. */
@@ -317,7 +306,6 @@ public class SurfaceAnimator {
final OnAnimationFinishedCallback animationFinishedCallback =
mSurfaceAnimationFinishedCallback;
final Runnable animationCancelledCallback = mAnimationCancelledCallback;
- final SurfaceFreezer.Snapshot snapshot = mSnapshot;
reset(t, false);
if (animation != null) {
if (forwardCancel) {
@@ -337,9 +325,6 @@ public class SurfaceAnimator {
}
if (forwardCancel) {
- if (snapshot != null) {
- snapshot.cancelAnimation(t, false /* restarting */);
- }
if (leash != null) {
t.remove(leash);
mService.scheduleAnimationLocked();
@@ -352,12 +337,6 @@ public class SurfaceAnimator {
mAnimation = null;
mSurfaceAnimationFinishedCallback = null;
mAnimationType = ANIMATION_TYPE_NONE;
- final SurfaceFreezer.Snapshot snapshot = mSnapshot;
- mSnapshot = null;
- if (snapshot != null) {
- // Reset the mSnapshot reference before calling the callback to prevent circular reset.
- snapshot.cancelAnimation(t, !destroyLeash);
- }
if (mLeash == null) {
return;
}
@@ -597,8 +576,7 @@ public class SurfaceAnimator {
void commitPendingTransaction();
/**
- * Called when the animation leash is created. Note that this is also called by
- * {@link SurfaceFreezer}, so this doesn't mean we're about to start animating.
+ * Called when the animation leash is created.
*
* @param t The transaction to use to apply any necessary changes.
* @param leash The leash that was created.
diff --git a/services/core/java/com/android/server/wm/SurfaceFreezer.java b/services/core/java/com/android/server/wm/SurfaceFreezer.java
deleted file mode 100644
index e126ed65d508..000000000000
--- a/services/core/java/com/android/server/wm/SurfaceFreezer.java
+++ /dev/null
@@ -1,303 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.wm;
-
-import static com.android.internal.protolog.WmProtoLogGroups.WM_SHOW_TRANSACTIONS;
-import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_SCREEN_ROTATION;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.graphics.GraphicBuffer;
-import android.graphics.PixelFormat;
-import android.graphics.Point;
-import android.graphics.Rect;
-import android.hardware.HardwareBuffer;
-import android.util.Slog;
-import android.view.SurfaceControl;
-import android.window.ScreenCapture;
-
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.protolog.ProtoLog;
-
-/**
- * This class handles "freezing" of an Animatable. The Animatable in question should implement
- * Freezable.
- *
- * The point of this is to enable WindowContainers to each be capable of freezing themselves.
- * Freezing means taking a snapshot and placing it above everything in the sub-hierarchy.
- * The "placing above" requires that a parent surface be inserted above the target surface so that
- * the target surface and the snapshot are siblings.
- *
- * The overall flow for a transition using this would be:
- * 1. Set transition and record animatable in mChangingApps
- * 2. Call {@link #freeze} to set-up the leashes and cover with a snapshot.
- * 3. When transition participants are ready, start SurfaceAnimator with this as a parameter
- * 4. SurfaceAnimator will then {@link #takeLeashForAnimation} instead of creating another leash.
- * 5. The animation system should eventually clean this up via {@link #unfreeze}.
- */
-class SurfaceFreezer {
-
- private static final String TAG = "SurfaceFreezer";
-
- private final @NonNull Freezable mAnimatable;
- private final @NonNull WindowManagerService mWmService;
- @VisibleForTesting
- SurfaceControl mLeash;
- Snapshot mSnapshot = null;
- final Rect mFreezeBounds = new Rect();
-
- /**
- * @param animatable The object to animate.
- */
- SurfaceFreezer(@NonNull Freezable animatable, @NonNull WindowManagerService service) {
- mAnimatable = animatable;
- mWmService = service;
- }
-
- /**
- * Freeze the target surface. This is done by creating a leash (inserting a parent surface
- * above the target surface) and then taking a snapshot and placing it over the target surface.
- *
- * @param startBounds The original bounds (on screen) of the surface we are snapshotting.
- * @param relativePosition The related position of the snapshot surface to its parent.
- * @param freezeTarget The surface to take snapshot from. If {@code null}, we will take a
- * snapshot from the {@link #mAnimatable} surface.
- */
- void freeze(SurfaceControl.Transaction t, Rect startBounds, Point relativePosition,
- @Nullable SurfaceControl freezeTarget) {
- reset(t);
- mFreezeBounds.set(startBounds);
-
- mLeash = SurfaceAnimator.createAnimationLeash(mAnimatable, mAnimatable.getSurfaceControl(),
- t, ANIMATION_TYPE_SCREEN_ROTATION, startBounds.width(), startBounds.height(),
- relativePosition.x, relativePosition.y, false /* hidden */,
- mWmService.mTransactionFactory);
- mAnimatable.onAnimationLeashCreated(t, mLeash);
-
- freezeTarget = freezeTarget != null ? freezeTarget : mAnimatable.getFreezeSnapshotTarget();
- if (freezeTarget != null) {
- ScreenCapture.ScreenshotHardwareBuffer screenshotBuffer = createSnapshotBufferInner(
- freezeTarget, startBounds);
- final HardwareBuffer buffer = screenshotBuffer == null ? null
- : screenshotBuffer.getHardwareBuffer();
- if (buffer == null || buffer.getWidth() <= 1 || buffer.getHeight() <= 1) {
- // This can happen when display is not ready.
- Slog.w(TAG, "Failed to capture screenshot for " + mAnimatable);
- unfreeze(t);
- return;
- }
- mSnapshot = new Snapshot(t, screenshotBuffer, mLeash);
- }
- }
-
- /**
- * Used by {@link SurfaceAnimator}. This "transfers" the leash to be used for animation.
- * By transferring the leash, this will no longer try to clean-up the leash when finished.
- */
- SurfaceControl takeLeashForAnimation() {
- SurfaceControl out = mLeash;
- mLeash = null;
- return out;
- }
-
- /**
- * Used by {@link SurfaceAnimator}. This "transfers" the snapshot leash to be used for
- * animation. By transferring the leash, this will no longer try to clean-up the leash when
- * finished.
- */
- @Nullable
- Snapshot takeSnapshotForAnimation() {
- final Snapshot out = mSnapshot;
- mSnapshot = null;
- return out;
- }
-
- /**
- * Clean-up the snapshot and remove leash. If the leash was taken, this just cleans-up the
- * snapshot.
- */
- void unfreeze(SurfaceControl.Transaction t) {
- unfreezeInner(t);
- mAnimatable.onUnfrozen();
- }
-
- private void unfreezeInner(SurfaceControl.Transaction t) {
- if (mSnapshot != null) {
- mSnapshot.cancelAnimation(t, false /* restarting */);
- mSnapshot = null;
- }
- if (mLeash == null) {
- return;
- }
- SurfaceControl leash = mLeash;
- mLeash = null;
- final boolean scheduleAnim = SurfaceAnimator.removeLeash(t, mAnimatable, leash,
- true /* destroy */);
- if (scheduleAnim) {
- mWmService.scheduleAnimationLocked();
- }
- }
-
- /** Resets the snapshot before taking another one if the animation hasn't been started yet. */
- private void reset(SurfaceControl.Transaction t) {
- // Those would have been taken by the SurfaceAnimator if the animation has been started, so
- // we can remove the leash directly.
- // No need to reset the mAnimatable leash, as this is called before a new animation leash is
- // created, so another #onAnimationLeashCreated will be called.
- if (mSnapshot != null) {
- mSnapshot.destroy(t);
- mSnapshot = null;
- }
- if (mLeash != null) {
- t.remove(mLeash);
- mLeash = null;
- }
- }
-
- void setLayer(SurfaceControl.Transaction t, int layer) {
- if (mLeash != null) {
- t.setLayer(mLeash, layer);
- }
- }
-
- void setRelativeLayer(SurfaceControl.Transaction t, SurfaceControl relativeTo, int layer) {
- if (mLeash != null) {
- t.setRelativeLayer(mLeash, relativeTo, layer);
- }
- }
-
- boolean hasLeash() {
- return mLeash != null;
- }
-
- private static ScreenCapture.ScreenshotHardwareBuffer createSnapshotBuffer(
- @NonNull SurfaceControl target, @Nullable Rect bounds) {
- Rect cropBounds = null;
- if (bounds != null) {
- cropBounds = new Rect(bounds);
- cropBounds.offsetTo(0, 0);
- }
- ScreenCapture.LayerCaptureArgs captureArgs =
- new ScreenCapture.LayerCaptureArgs.Builder(target)
- .setSourceCrop(cropBounds)
- .setCaptureSecureLayers(true)
- .setAllowProtected(true)
- .build();
- return ScreenCapture.captureLayers(captureArgs);
- }
-
- @VisibleForTesting
- ScreenCapture.ScreenshotHardwareBuffer createSnapshotBufferInner(
- SurfaceControl target, Rect bounds) {
- return createSnapshotBuffer(target, bounds);
- }
-
- @VisibleForTesting
- GraphicBuffer createFromHardwareBufferInner(
- ScreenCapture.ScreenshotHardwareBuffer screenshotBuffer) {
- return GraphicBuffer.createFromHardwareBuffer(screenshotBuffer.getHardwareBuffer());
- }
-
- class Snapshot {
- private SurfaceControl mSurfaceControl;
- private AnimationAdapter mAnimation;
-
- /**
- * @param t Transaction to create the thumbnail in.
- * @param screenshotBuffer A thumbnail or placeholder for thumbnail to initialize with.
- */
- Snapshot(SurfaceControl.Transaction t,
- ScreenCapture.ScreenshotHardwareBuffer screenshotBuffer, SurfaceControl parent) {
- GraphicBuffer graphicBuffer = createFromHardwareBufferInner(screenshotBuffer);
-
- mSurfaceControl = mAnimatable.makeAnimationLeash()
- .setName("snapshot anim: " + mAnimatable.toString())
- .setFormat(PixelFormat.TRANSLUCENT)
- .setParent(parent)
- .setSecure(screenshotBuffer.containsSecureLayers())
- .setCallsite("SurfaceFreezer.Snapshot")
- .setBLASTLayer()
- .build();
-
- ProtoLog.i(WM_SHOW_TRANSACTIONS, " THUMBNAIL %s: CREATE", mSurfaceControl);
-
- t.setBuffer(mSurfaceControl, graphicBuffer);
- t.setColorSpace(mSurfaceControl, screenshotBuffer.getColorSpace());
- t.show(mSurfaceControl);
-
- // We parent the thumbnail to the container, and just place it on top of anything else
- // in the container.
- t.setLayer(mSurfaceControl, Integer.MAX_VALUE);
- }
-
- void destroy(SurfaceControl.Transaction t) {
- if (mSurfaceControl == null) {
- return;
- }
- t.remove(mSurfaceControl);
- mSurfaceControl = null;
- }
-
- /**
- * Starts an animation.
- *
- * @param anim The object that bridges the controller, {@link SurfaceAnimator}, with the
- * component responsible for running the animation. It runs the animation with
- * {@link AnimationAdapter#startAnimation} once the hierarchy with
- * the Leash has been set up.
- */
- void startAnimation(SurfaceControl.Transaction t, AnimationAdapter anim, int type) {
- cancelAnimation(t, true /* restarting */);
- mAnimation = anim;
- if (mSurfaceControl == null) {
- cancelAnimation(t, false /* restarting */);
- return;
- }
- mAnimation.startAnimation(mSurfaceControl, t, type, (typ, ani) -> { });
- }
-
- /**
- * Cancels the animation, and resets the leash.
- *
- * @param t The transaction to use for all cancelling surface operations.
- * @param restarting Whether we are restarting the animation.
- */
- void cancelAnimation(SurfaceControl.Transaction t, boolean restarting) {
- final SurfaceControl leash = mSurfaceControl;
- final AnimationAdapter animation = mAnimation;
- mAnimation = null;
- if (animation != null) {
- animation.onAnimationCancelled(leash);
- }
- if (!restarting) {
- destroy(t);
- }
- }
- }
-
- /** freezable */
- public interface Freezable extends SurfaceAnimator.Animatable {
- /**
- * @return The surface to take a snapshot of. If this returns {@code null}, no snapshot
- * will be generated (but the rest of the freezing logic will still happen).
- */
- @Nullable SurfaceControl getFreezeSnapshotTarget();
-
- /** Called when the {@link #unfreeze(SurfaceControl.Transaction)} is called. */
- void onUnfrozen();
- }
-}
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index c6136f316c3e..f75e7175b4d2 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -52,11 +52,9 @@ import static android.view.SurfaceControl.METADATA_TASK_ID;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;
import static android.view.WindowManager.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES;
-import static android.view.WindowManager.TRANSIT_CHANGE;
import static android.view.WindowManager.TRANSIT_CLOSE;
import static android.view.WindowManager.TRANSIT_FLAG_APP_CRASHED;
import static android.view.WindowManager.TRANSIT_NONE;
-import static android.view.WindowManager.TRANSIT_OLD_TASK_CHANGE_WINDOWING_MODE;
import static android.view.WindowManager.TRANSIT_OPEN;
import static android.view.WindowManager.TRANSIT_TO_BACK;
import static android.view.WindowManager.TRANSIT_TO_FRONT;
@@ -75,7 +73,6 @@ import static com.android.server.wm.ActivityRecord.TRANSFER_SPLASH_SCREEN_COPYIN
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_RECENTS;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_SWITCH;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_TRANSITION;
-import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_USER_LEAVING;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_CLEANUP;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_RECENTS;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_SWITCH;
@@ -161,16 +158,15 @@ import android.os.Trace;
import android.os.UserHandle;
import android.provider.Settings;
import android.service.voice.IVoiceInteractionSession;
-import android.util.ArraySet;
import android.util.DisplayMetrics;
import android.util.Slog;
import android.util.proto.ProtoOutputStream;
import android.view.DisplayInfo;
import android.view.InsetsState;
-import android.view.RemoteAnimationAdapter;
import android.view.SurfaceControl;
import android.view.WindowInsets;
import android.view.WindowManager;
+import android.window.DesktopModeFlags;
import android.window.ITaskOrganizer;
import android.window.PictureInPictureSurfaceTransaction;
import android.window.StartingWindowInfo;
@@ -2345,31 +2341,8 @@ class Task extends TaskFragment {
}
@VisibleForTesting
- Point getLastSurfaceSize() {
- return mLastSurfaceSize;
- }
-
- @VisibleForTesting
boolean isInChangeTransition() {
- return mSurfaceFreezer.hasLeash() || AppTransition.isChangeTransitOld(mTransit);
- }
-
- @Override
- public SurfaceControl getFreezeSnapshotTarget() {
- if (!mDisplayContent.mAppTransition.containsTransitRequest(TRANSIT_CHANGE)) {
- return null;
- }
- // Skip creating snapshot if this transition is controlled by a remote animator which
- // doesn't need it.
- final ArraySet<Integer> activityTypes = new ArraySet<>();
- activityTypes.add(getActivityType());
- final RemoteAnimationAdapter adapter =
- mDisplayContent.mAppTransitionController.getRemoteAnimationOverride(
- this, TRANSIT_OLD_TASK_CHANGE_WINDOWING_MODE, activityTypes);
- if (adapter != null && !adapter.getChangeNeedsSnapshot()) {
- return null;
- }
- return getSurfaceControl();
+ return AppTransition.isChangeTransitOld(mTransit);
}
@Override
@@ -2417,18 +2390,17 @@ class Task extends TaskFragment {
mTaskSupervisor.mLaunchParamsPersister.saveTask(this, display);
}
- Rect updateOverrideConfigurationFromLaunchBounds() {
+ void updateOverrideConfigurationFromLaunchBounds() {
// If the task is controlled by another organized task, do not set override
// configurations and let its parent (organized task) to control it;
final Task rootTask = getRootTask();
- final Rect bounds = rootTask != this && rootTask.isOrganized() ? null : getLaunchBounds();
- setBounds(bounds);
- if (bounds != null && !bounds.isEmpty()) {
- // TODO: Review if we actually want to do this - we are setting the launch bounds
- // directly here.
- bounds.set(getRequestedOverrideBounds());
+ boolean shouldInheritBounds = rootTask != this && rootTask.isOrganized();
+ if (Flags.enableMultipleDesktopsBackend()) {
+ // Only inherit from organized parent when this task is not organized.
+ shouldInheritBounds &= !isOrganized();
}
- return bounds;
+ final Rect bounds = shouldInheritBounds ? null : getLaunchBounds();
+ setBounds(bounds);
}
/** Returns the bounds that should be used to launch this task. */
@@ -3470,8 +3442,10 @@ class Task extends TaskFragment {
info.lastNonFullscreenBounds = topTask.mLastNonFullscreenBounds;
final WindowState windowState = top != null
? top.findMainWindow(/* includeStartingApp= */ false) : null;
- info.requestedVisibleTypes = (windowState != null && Flags.enableFullyImmersiveInDesktop())
- ? windowState.getRequestedVisibleTypes() : WindowInsets.Type.defaultVisible();
+ info.requestedVisibleTypes =
+ (windowState != null && DesktopModeFlags.ENABLE_FULLY_IMMERSIVE_IN_DESKTOP.isTrue())
+ ? windowState.getRequestedVisibleTypes()
+ : WindowInsets.Type.defaultVisible();
AppCompatUtils.fillAppCompatTaskInfo(this, info, top);
info.topActivityMainWindowFrame = calculateTopActivityMainWindowFrameForTaskInfo(top);
}
@@ -5257,7 +5231,6 @@ class Task extends TaskFragment {
final boolean[] resumed = new boolean[1];
final TaskFragment topFragment = topActivity.getTaskFragment();
- resumed[0] = topFragment.resumeTopActivity(prev, options, deferPause);
forAllLeafTaskFragments(f -> {
if (topFragment == f) {
return;
@@ -5267,6 +5240,7 @@ class Task extends TaskFragment {
}
resumed[0] |= f.resumeTopActivity(prev, options, deferPause);
}, true);
+ resumed[0] |= topFragment.resumeTopActivity(prev, options, deferPause);
return resumed[0];
}
@@ -6058,7 +6032,7 @@ class Task extends TaskFragment {
IVoiceInteractor voiceInteractor, boolean toTop, ActivityRecord activity,
ActivityRecord source, ActivityOptions options) {
- Task task;
+ final Task task;
if (canReuseAsLeafTask()) {
// This root task will only contain one task, so just return itself since all root
// tasks ara now tasks and all tasks are now root tasks.
@@ -6068,7 +6042,6 @@ class Task extends TaskFragment {
final int taskId = activity != null
? mTaskSupervisor.getNextTaskIdForUser(activity.mUserId)
: mTaskSupervisor.getNextTaskIdForUser();
- final int activityType = getActivityType();
task = new Task.Builder(mAtmService)
.setTaskId(taskId)
.setActivityInfo(info)
@@ -6081,17 +6054,21 @@ class Task extends TaskFragment {
.build();
}
- int displayId = getDisplayId();
- if (displayId == INVALID_DISPLAY) displayId = DEFAULT_DISPLAY;
- final boolean isLockscreenShown = mAtmService.mTaskSupervisor.getKeyguardController()
- .isKeyguardOrAodShowing(displayId);
- if (!mTaskSupervisor.getLaunchParamsController()
- .layoutTask(task, info.windowLayout, activity, source, options)
- && !getRequestedOverrideBounds().isEmpty()
- && task.isResizeable() && !isLockscreenShown) {
- task.setBounds(getRequestedOverrideBounds());
+ if (com.android.window.flags.Flags.fixLayoutExistingTask()) {
+ mTaskSupervisor.getLaunchParamsController()
+ .layoutTask(task, info.windowLayout, activity, source, options);
+ } else {
+ int displayId = getDisplayId();
+ if (displayId == INVALID_DISPLAY) displayId = DEFAULT_DISPLAY;
+ final boolean isLockscreenShown =
+ mAtmService.mKeyguardController.isKeyguardOrAodShowing(displayId);
+ if (!mTaskSupervisor.getLaunchParamsController()
+ .layoutTask(task, info.windowLayout, activity, source, options)
+ && !getRequestedOverrideBounds().isEmpty()
+ && task.isResizeable() && !isLockscreenShown) {
+ task.setBounds(getRequestedOverrideBounds());
+ }
}
-
return task;
}
diff --git a/services/core/java/com/android/server/wm/TaskDisplayArea.java b/services/core/java/com/android/server/wm/TaskDisplayArea.java
index d962b6b11187..cc14383fc9f9 100644
--- a/services/core/java/com/android/server/wm/TaskDisplayArea.java
+++ b/services/core/java/com/android/server/wm/TaskDisplayArea.java
@@ -155,6 +155,14 @@ final class TaskDisplayArea extends DisplayArea<WindowContainer> {
private boolean mRemoved;
/**
+ * Whether the TaskDisplayArea has root tasks.
+ * If {@code true}, the TaskDisplayArea cannot have a new task.
+ *
+ * TODO(b/394466501): Prevent a Task being added to the TaskDisplayArea that shouldKeepNoTask.
+ */
+ private boolean mShouldKeepNoTask;
+
+ /**
* The id of a leaf task that most recently being moved to front.
*/
private int mLastLeafTaskToFrontId;
@@ -1787,6 +1795,10 @@ final class TaskDisplayArea extends DisplayArea<WindowContainer> {
return mRemoved;
}
+ boolean shouldKeepNoTask() {
+ return mShouldKeepNoTask;
+ }
+
@Override
boolean canCreateRemoteAnimationTarget() {
// In the legacy transition system, promoting animation target from TaskFragment to
@@ -1812,12 +1824,31 @@ final class TaskDisplayArea extends DisplayArea<WindowContainer> {
}
}
+ @Nullable
+ Task prepareForRemoval() {
+ mShouldKeepNoTask = true;
+ final Task lastReparentedTask = removeAllTasks();
+ mRemoved = true;
+ return lastReparentedTask;
+ }
+
+ @Nullable
+ Task setShouldKeepNoTask(boolean shouldKeepNoTask) {
+ if (mShouldKeepNoTask == shouldKeepNoTask) {
+ return null;
+ }
+
+ mShouldKeepNoTask = shouldKeepNoTask;
+ return shouldKeepNoTask ? removeAllTasks() : null;
+ }
+
/**
* Removes the root tasks in the node applying the content removal node from the display.
*
* @return last reparented root task, or {@code null} if the root tasks had to be destroyed.
*/
- Task remove() {
+ @Nullable
+ private Task removeAllTasks() {
final TaskDisplayArea toDisplayArea = getReparentToTaskDisplayArea(getFocusedRootTask());
mPreferredTopFocusableRootTask = null;
// TODO(b/153090332): Allow setting content removal mode per task display area
@@ -1835,7 +1866,7 @@ final class TaskDisplayArea extends DisplayArea<WindowContainer> {
for (int i = 0; i < numRootTasks; i++) {
final WindowContainer child = mChildren.get(i);
if (child.asTaskDisplayArea() != null) {
- lastReparentedRootTask = child.asTaskDisplayArea().remove();
+ lastReparentedRootTask = child.asTaskDisplayArea().removeAllTasks();
continue;
}
final Task task = mChildren.get(i).asTask();
@@ -1882,16 +1913,9 @@ final class TaskDisplayArea extends DisplayArea<WindowContainer> {
lastReparentedRootTask.getRootTask().moveToFront("display-removed");
}
- mRemoved = true;
-
return lastReparentedRootTask;
}
- // TODO(b/385263090): Remove this method
- void restart() {
- mRemoved = false;
- }
-
/**
* Returns the {@link TaskDisplayArea} to which root tasks should be reparented.
*
diff --git a/services/core/java/com/android/server/wm/TaskFragment.java b/services/core/java/com/android/server/wm/TaskFragment.java
index fc7437b95e03..64105f634f84 100644
--- a/services/core/java/com/android/server/wm/TaskFragment.java
+++ b/services/core/java/com/android/server/wm/TaskFragment.java
@@ -1195,10 +1195,8 @@ class TaskFragment extends WindowContainer<WindowContainer> {
if (!isAttached() || isForceHidden() || isForceTranslucent()) {
return true;
}
- // A TaskFragment isn't translucent if it has at least one visible activity that occludes
- // this TaskFragment.
- return mTaskSupervisor.mOpaqueActivityHelper.getVisibleOpaqueActivity(this,
- starting, true /* ignoringKeyguard */) == null;
+ return !mTaskSupervisor.mOpaqueContainerHelper.isOpaque(
+ this, starting, true /* ignoringKeyguard */, true /* ignoringInvisibleActivity */);
}
/**
@@ -1211,7 +1209,7 @@ class TaskFragment extends WindowContainer<WindowContainer> {
return true;
}
// Including finishing Activity if the TaskFragment is becoming invisible in the transition.
- return mTaskSupervisor.mOpaqueActivityHelper.getOpaqueActivity(this) == null;
+ return !mTaskSupervisor.mOpaqueContainerHelper.isOpaque(this);
}
/**
@@ -1222,8 +1220,8 @@ class TaskFragment extends WindowContainer<WindowContainer> {
if (!isAttached() || isForceHidden() || isForceTranslucent()) {
return true;
}
- return mTaskSupervisor.mOpaqueActivityHelper.getVisibleOpaqueActivity(this, null,
- false /* ignoringKeyguard */) == null;
+ return !mTaskSupervisor.mOpaqueContainerHelper.isOpaque(this, /* starting */ null,
+ false /* ignoringKeyguard */, true /* ignoringInvisibleActivity */);
}
ActivityRecord getTopNonFinishingActivity() {
@@ -1409,14 +1407,22 @@ class TaskFragment extends WindowContainer<WindowContainer> {
final TaskFragment otherTaskFrag = other.asTaskFragment();
if (otherTaskFrag != null && otherTaskFrag.hasAdjacentTaskFragment()) {
+ // For adjacent TaskFragments, we have assumptions that:
+ // 1. A set of adjacent TaskFragments always cover the entire Task window, so that
+ // if this TaskFragment is behind a set of opaque TaskFragments, then this
+ // TaskFragment is invisible.
+ // 2. Adjacent TaskFragments do not overlap, so that if this TaskFragment is behind
+ // any translucent TaskFragment in the adjacent set, then this TaskFragment is
+ // visible behind translucent.
if (Flags.allowMultipleAdjacentTaskFragments()) {
final boolean hasTraversedAdj = otherTaskFrag.forOtherAdjacentTaskFragments(
adjacentTaskFragments::contains);
if (hasTraversedAdj) {
- final boolean isTranslucent = otherTaskFrag.isTranslucent(starting)
- || otherTaskFrag.forOtherAdjacentTaskFragments(adjacentTf -> {
- return adjacentTf.isTranslucent(starting);
- });
+ final boolean isTranslucent =
+ isBehindTransparentTaskFragment(otherTaskFrag, starting)
+ || otherTaskFrag.forOtherAdjacentTaskFragments(
+ (Predicate<TaskFragment>) tf ->
+ isBehindTransparentTaskFragment(tf, starting));
if (isTranslucent) {
// Can be visible behind a translucent adjacent TaskFragments.
gotTranslucentFullscreen = true;
@@ -1428,8 +1434,9 @@ class TaskFragment extends WindowContainer<WindowContainer> {
}
} else {
if (adjacentTaskFragments.contains(otherTaskFrag.mAdjacentTaskFragment)) {
- if (otherTaskFrag.isTranslucent(starting)
- || otherTaskFrag.mAdjacentTaskFragment.isTranslucent(starting)) {
+ if (isBehindTransparentTaskFragment(otherTaskFrag, starting)
+ || isBehindTransparentTaskFragment(
+ otherTaskFrag.mAdjacentTaskFragment, starting)) {
// Can be visible behind a translucent adjacent TaskFragments.
gotTranslucentFullscreen = true;
gotTranslucentAdjacent = true;
@@ -1441,7 +1448,6 @@ class TaskFragment extends WindowContainer<WindowContainer> {
}
adjacentTaskFragments.add(otherTaskFrag);
}
-
}
if (!shouldBeVisible) {
@@ -1454,6 +1460,11 @@ class TaskFragment extends WindowContainer<WindowContainer> {
: TASK_FRAGMENT_VISIBILITY_VISIBLE;
}
+ private boolean isBehindTransparentTaskFragment(
+ @NonNull TaskFragment otherTf, @Nullable ActivityRecord starting) {
+ return otherTf.isTranslucent(starting) && getBounds().intersect(otherTf.getBounds());
+ }
+
private static boolean hasRunningActivity(WindowContainer wc) {
if (wc.asTaskFragment() != null) {
return wc.asTaskFragment().topRunningActivity() != null;
@@ -2758,7 +2769,7 @@ class TaskFragment extends WindowContainer<WindowContainer> {
// We only want to update for organized TaskFragment. Task will handle itself.
return;
}
- if (mSurfaceControl == null || mSurfaceAnimator.hasLeash() || mSurfaceFreezer.hasLeash()) {
+ if (mSurfaceControl == null || mSurfaceAnimator.hasLeash()) {
return;
}
@@ -2900,20 +2911,6 @@ class TaskFragment extends WindowContainer<WindowContainer> {
return task != null && !task.isDragResizing() && super.canStartChangeTransition();
}
- /**
- * Returns {@code true} if the starting bounds of the closing organized TaskFragment is
- * recorded. Otherwise, return {@code false}.
- */
- boolean setClosingChangingStartBoundsIfNeeded() {
- if (isOrganizedTaskFragment() && mDisplayContent != null
- && mDisplayContent.mChangingContainers.remove(this)) {
- mDisplayContent.mClosingChangingContainers.put(
- this, new Rect(mSurfaceFreezer.mFreezeBounds));
- return true;
- }
- return false;
- }
-
@Override
boolean isSyncFinished(BLASTSyncEngine.SyncGroup group) {
return super.isSyncFinished(group) && isReadyToTransit();
diff --git a/services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java b/services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java
index aaae160084a9..e63107cdc720 100644
--- a/services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java
+++ b/services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java
@@ -570,10 +570,6 @@ public class TaskFragmentOrganizerController extends ITaskFragmentOrganizerContr
private boolean restoreFromCachedStateIfPossible(@NonNull ITaskFragmentOrganizer organizer,
int pid, int uid, @NonNull Bundle outSavedState) {
- if (!Flags.aeBackStackRestore()) {
- return false;
- }
-
TaskFragmentOrganizerState cachedState = null;
int i = mCachedTaskFragmentOrganizerStates.size() - 1;
for (; i >= 0; i--) {
diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java
index 27683b2fcff2..5217a759c6ae 100644
--- a/services/core/java/com/android/server/wm/Transition.java
+++ b/services/core/java/com/android/server/wm/Transition.java
@@ -505,7 +505,7 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
final WindowContainer<?> sibling = rootParent.getChildAt(j);
if (sibling == transientRoot) break;
if (!sibling.getWindowConfiguration().isAlwaysOnTop() && mController.mAtm
- .mTaskSupervisor.mOpaqueActivityHelper.getOpaqueActivity(sibling) != null) {
+ .mTaskSupervisor.mOpaqueContainerHelper.isOpaque(sibling)) {
occludedCount++;
break;
}
diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java
index 883d8f95b612..225951dbd345 100644
--- a/services/core/java/com/android/server/wm/WindowContainer.java
+++ b/services/core/java/com/android/server/wm/WindowContainer.java
@@ -138,7 +138,7 @@ import java.util.function.Predicate;
* changes are made to this class.
*/
class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<E>
- implements Comparable<WindowContainer>, Animatable, SurfaceFreezer.Freezable,
+ implements Comparable<WindowContainer>, Animatable,
InsetsControlTarget {
private static final String TAG = TAG_WITH_CLASS_NAME ? "WindowContainer" : TAG_WM;
@@ -226,7 +226,6 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
@Nullable
private SurfaceControl mAnimationLeash;
- final SurfaceFreezer mSurfaceFreezer;
protected final WindowManagerService mWmService;
final TransitionController mTransitionController;
@@ -361,7 +360,6 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
mTransitionController = mWmService.mAtmService.getTransitionController();
mSyncTransaction = wms.mTransactionFactory.get();
mSurfaceAnimator = new SurfaceAnimator(this, this::onAnimationFinished, wms);
- mSurfaceFreezer = new SurfaceFreezer(this, wms);
}
/**
@@ -908,7 +906,6 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
final DisplayContent dc = getDisplayContent();
if (dc != null) {
dc.mClosingChangingContainers.remove(this);
- mSurfaceFreezer.unfreeze(getSyncTransaction());
}
while (!mChildren.isEmpty()) {
final E child = mChildren.getLast();
@@ -1124,9 +1121,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
// Cancel any change transition queued-up for this container on the old display when
// this container is moved from the old display.
mDisplayContent.mClosingChangingContainers.remove(this);
- if (mDisplayContent.mChangingContainers.remove(this)) {
- mSurfaceFreezer.unfreeze(getSyncTransaction());
- }
+ mDisplayContent.mChangingContainers.remove(this);
}
mDisplayContent = dc;
if (dc != null && dc != this && mPendingTransaction != null) {
@@ -1434,33 +1429,6 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
return setVisibleRequested(newVisReq);
}
- /**
- * Called when the visibility of a child is asked to change. This is before visibility actually
- * changes (eg. a transition animation might play out first).
- */
- void onChildVisibilityRequested(boolean visible) {
- // If we are losing visibility, then a snapshot isn't necessary and we are no-longer
- // part of a change transition.
- if (!visible) {
- boolean skipUnfreeze = false;
- if (asTaskFragment() != null) {
- // If the organized TaskFragment is closing while resizing, we want to keep track of
- // its starting bounds to make sure the animation starts at the correct position.
- // This should be called before unfreeze() because we record the starting bounds
- // in SurfaceFreezer.
- skipUnfreeze = asTaskFragment().setClosingChangingStartBoundsIfNeeded();
- }
-
- if (!skipUnfreeze) {
- mSurfaceFreezer.unfreeze(getSyncTransaction());
- }
- }
- WindowContainer parent = getParent();
- if (parent != null) {
- parent.onChildVisibilityRequested(visible);
- }
- }
-
/** Whether this window is closing while resizing. */
boolean isClosingWhenResizing() {
return mDisplayContent != null
@@ -1545,9 +1513,6 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
}
void onAppTransitionDone() {
- if (mSurfaceFreezer.hasLeash()) {
- mSurfaceFreezer.unfreeze(getSyncTransaction());
- }
for (int i = mChildren.size() - 1; i >= 0; --i) {
final WindowContainer wc = mChildren.get(i);
wc.onAppTransitionDone();
@@ -2773,15 +2738,9 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
}
protected void setLayer(Transaction t, int layer) {
- if (mSurfaceFreezer.hasLeash()) {
- // When the freezer has created animation leash parent for the window, set the layer
- // there instead.
- mSurfaceFreezer.setLayer(t, layer);
- } else {
- // Route through surface animator to accommodate that our surface control might be
- // attached to the leash, and leash is attached to parent container.
- mSurfaceAnimator.setLayer(t, layer);
- }
+ // Route through surface animator to accommodate that our surface control might be
+ // attached to the leash, and leash is attached to parent container.
+ mSurfaceAnimator.setLayer(t, layer);
}
int getLastLayer() {
@@ -2793,20 +2752,14 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
}
protected void setRelativeLayer(Transaction t, SurfaceControl relativeTo, int layer) {
- if (mSurfaceFreezer.hasLeash()) {
- // When the freezer has created animation leash parent for the window, set the layer
- // there instead.
- mSurfaceFreezer.setRelativeLayer(t, relativeTo, layer);
- } else {
- // Route through surface animator to accommodate that our surface control might be
- // attached to the leash, and leash is attached to parent container.
- mSurfaceAnimator.setRelativeLayer(t, relativeTo, layer);
- }
+ // Route through surface animator to accommodate that our surface control might be
+ // attached to the leash, and leash is attached to parent container.
+ mSurfaceAnimator.setRelativeLayer(t, relativeTo, layer);
}
protected void reparentSurfaceControl(Transaction t, SurfaceControl newParent) {
// Don't reparent active leashes since the animator won't know about the change.
- if (mSurfaceFreezer.hasLeash() || mSurfaceAnimator.hasLeash()) return;
+ if (mSurfaceAnimator.hasLeash()) return;
t.reparent(getSurfaceControl(), newParent);
}
@@ -3044,7 +2997,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
// TODO: This should use isVisible() but because isVisible has a really weird meaning at
// the moment this doesn't work for all animatable window containers.
mSurfaceAnimator.startAnimation(t, anim, hidden, type, animationFinishedCallback,
- animationCancelledCallback, snapshotAnim, mSurfaceFreezer);
+ animationCancelledCallback, snapshotAnim);
}
void startAnimation(Transaction t, AnimationAdapter anim, boolean hidden,
@@ -3066,7 +3019,6 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
void cancelAnimation() {
doAnimationFinished(mSurfaceAnimator.getAnimationType(), mSurfaceAnimator.getAnimation());
mSurfaceAnimator.cancelAnimation();
- mSurfaceFreezer.unfreeze(getSyncTransaction());
}
/** Whether we can start change transition with this window and current display status. */
@@ -3097,7 +3049,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
}
/**
- * Initializes a change transition. See {@link SurfaceFreezer} for more information.
+ * Initializes a change transition.
*
* For now, this will only be called for the following cases:
* 1. {@link Task} is changing windowing mode between fullscreen and freeform.
@@ -3109,8 +3061,6 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
* use case.
*
* @param startBounds The original bounds (on screen) of the surface we are snapshotting.
- * @param freezeTarget The surface to take snapshot from. If {@code null}, we will take a
- * snapshot from {@link #getFreezeSnapshotTarget()}.
*/
void initializeChangeTransition(Rect startBounds, @Nullable SurfaceControl freezeTarget) {
if (mDisplayContent.mTransitionController.isShellTransitionsEnabled()) {
@@ -3122,7 +3072,6 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
// Calculate the relative position in parent container.
final Rect parentBounds = getParent().getBounds();
mTmpPoint.set(startBounds.left - parentBounds.left, startBounds.top - parentBounds.top);
- mSurfaceFreezer.freeze(getSyncTransaction(), startBounds, mTmpPoint, freezeTarget);
}
void initializeChangeTransition(Rect startBounds) {
@@ -3134,23 +3083,6 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
}
@Override
- public SurfaceControl getFreezeSnapshotTarget() {
- // Only allow freezing if this window is in a TRANSIT_CHANGE
- if (!mDisplayContent.mAppTransition.containsTransitRequest(TRANSIT_CHANGE)
- || !mDisplayContent.mChangingContainers.contains(this)) {
- return null;
- }
- return getSurfaceControl();
- }
-
- @Override
- public void onUnfrozen() {
- if (mDisplayContent != null) {
- mDisplayContent.mChangingContainers.remove(this);
- }
- }
-
- @Override
public Builder makeAnimationLeash() {
return makeSurface().setContainerLayer();
}
@@ -3279,7 +3211,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
this, mTmpPoint, localBounds, screenBounds, closingStartBounds,
showBackdrop, false /* shouldCreateSnapshot */);
} else {
- final Rect startBounds = isChanging ? mSurfaceFreezer.mFreezeBounds : null;
+ final Rect startBounds = null;
adapters = controller.createRemoteAnimationRecord(
this, mTmpPoint, localBounds, screenBounds, startBounds, showBackdrop);
}
@@ -3298,16 +3230,12 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
mTmpRect.offsetTo(mTmpPoint.x, mTmpPoint.y);
final AnimationAdapter adapter = new LocalAnimationAdapter(
- new WindowChangeAnimationSpec(mSurfaceFreezer.mFreezeBounds, mTmpRect,
+ new WindowChangeAnimationSpec(null /* startBounds */, mTmpRect,
displayInfo, durationScale, true /* isAppAnimation */,
false /* isThumbnail */),
getSurfaceAnimationRunner());
- final AnimationAdapter thumbnailAdapter = mSurfaceFreezer.mSnapshot != null
- ? new LocalAnimationAdapter(new WindowChangeAnimationSpec(
- mSurfaceFreezer.mFreezeBounds, mTmpRect, displayInfo, durationScale,
- true /* isAppAnimation */, true /* isThumbnail */), getSurfaceAnimationRunner())
- : null;
+ final AnimationAdapter thumbnailAdapter = null;
resultAdapters = new Pair<>(adapter, thumbnailAdapter);
mTransit = transit;
mTransitFlags = getDisplayContent().mAppTransition.getTransitFlags();
@@ -3731,7 +3659,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
*/
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PROTECTED)
void updateSurfacePosition(Transaction t) {
- if (mSurfaceControl == null || mSurfaceAnimator.hasLeash() || mSurfaceFreezer.hasLeash()) {
+ if (mSurfaceControl == null || mSurfaceAnimator.hasLeash()) {
return;
}
diff --git a/services/core/java/com/android/server/wm/WindowManagerInternal.java b/services/core/java/com/android/server/wm/WindowManagerInternal.java
index c77b1d9a7bcf..6e224f07fcdc 100644
--- a/services/core/java/com/android/server/wm/WindowManagerInternal.java
+++ b/services/core/java/com/android/server/wm/WindowManagerInternal.java
@@ -1137,6 +1137,15 @@ public abstract class WindowManagerInternal {
* Returns an instance of {@link ScreenshotHardwareBuffer} containing the current
* screenshot.
*/
- public abstract ScreenshotHardwareBuffer takeAssistScreenshot(
- Set<Integer> windowTypesToExclude);
+ public abstract ScreenshotHardwareBuffer takeAssistScreenshot();
+
+ /**
+ * Returns an instance of {@link ScreenshotHardwareBuffer} containing the current
+ * screenshot, excluding layers that are not appropriate to pass to contextual search
+ * services - such as the cursor or any current contextual search window.
+ *
+ * @param uid the UID of the contextual search application. System alert windows belonging
+ * to this UID will be excluded from the screenshot.
+ */
+ public abstract ScreenshotHardwareBuffer takeContextualSearchScreenshot(int uid);
}
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 3a1d652f82d4..04ddb3cacf27 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -157,6 +157,7 @@ import static com.android.server.wm.WindowManagerServiceDumpProto.POLICY;
import static com.android.server.wm.WindowManagerServiceDumpProto.ROOT_WINDOW_CONTAINER;
import static com.android.server.wm.WindowManagerServiceDumpProto.WINDOW_FRAMES_VALID;
import static com.android.window.flags.Flags.enableDisplayFocusInShellTransitions;
+import static com.android.window.flags.Flags.enablePresentationForConnectedDisplays;
import static com.android.window.flags.Flags.multiCrop;
import static com.android.window.flags.Flags.setScPropertiesInClient;
@@ -341,6 +342,7 @@ import com.android.internal.util.DumpUtils;
import com.android.internal.util.FastPrintWriter;
import com.android.internal.util.FrameworkStatsLog;
import com.android.internal.util.LatencyTracker;
+import com.android.internal.util.ToBooleanFunction;
import com.android.internal.view.WindowManagerPolicyThread;
import com.android.server.AnimationThread;
import com.android.server.DisplayThread;
@@ -386,7 +388,6 @@ import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Objects;
import java.util.Optional;
-import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.function.Supplier;
@@ -671,6 +672,14 @@ public class WindowManagerService extends IWindowManager.Stub
private ArrayList<WindowState> mHidingNonSystemOverlayWindows = new ArrayList<>();
/**
+ * A map that tracks uid/count of windows that cause non-system overlay windows to be hidden.
+ * The key is the window's uid and the value is the number of windows with that uid that are
+ * requesting hiding non-system overlay
+ */
+ private final ArrayMap<Integer, Integer> mHidingNonSystemOverlayWindowsCountPerUid =
+ new ArrayMap<>();
+
+ /**
* In some cases (e.g. when {@link R.bool.config_reverseDefaultRotation} has value
* {@value true}) we need to map some orientation to others. This {@link SparseIntArray}
* contains the relation between the source orientation and the one to use.
@@ -1806,7 +1815,7 @@ public class WindowManagerService extends IWindowManager.Stub
UserHandle.getUserId(win.getOwningUid()));
win.setHiddenWhileSuspended(suspended);
- final boolean hideSystemAlertWindows = !mHidingNonSystemOverlayWindows.isEmpty();
+ final boolean hideSystemAlertWindows = shouldHideNonSystemOverlayWindow(win);
win.setForceHideNonSystemOverlayWindowIfNeeded(hideSystemAlertWindows);
boolean imMayMove = true;
@@ -1924,6 +1933,12 @@ public class WindowManagerService extends IWindowManager.Stub
if (res >= ADD_OKAY
&& (type == TYPE_PRESENTATION || type == TYPE_PRIVATE_PRESENTATION)) {
+ displayContent.mIsPresenting = true;
+ if (enablePresentationForConnectedDisplays()) {
+ // A presentation hides all activities behind on the same display.
+ displayContent.ensureActivitiesVisible(/*starting=*/ null,
+ /*notifyClients=*/ true);
+ }
mDisplayManagerInternal.onPresentation(displayContent.getDisplay().getDisplayId(),
/*isShown=*/ true);
}
@@ -2024,6 +2039,22 @@ public class WindowManagerService extends IWindowManager.Stub
}
}
+ private boolean shouldHideNonSystemOverlayWindow(WindowState win) {
+ if (!Flags.fixHideOverlayApi()) {
+ return !mHidingNonSystemOverlayWindows.isEmpty();
+ }
+
+ if (mHidingNonSystemOverlayWindows.isEmpty()) {
+ return false;
+ }
+
+ if (mHidingNonSystemOverlayWindowsCountPerUid.size() == 1
+ && mHidingNonSystemOverlayWindowsCountPerUid.containsKey(win.getOwningUid())) {
+ return false;
+ }
+ return true;
+ }
+
/**
* Set whether screen capture is disabled for all windows of a specific user from
* the device policy cache, or specific windows based on sensitive content protections.
@@ -4159,7 +4190,8 @@ public class WindowManagerService extends IWindowManager.Stub
}
@Nullable
- private ScreenshotHardwareBuffer takeAssistScreenshot(Set<Integer> windowTypesToExclude) {
+ private ScreenshotHardwareBuffer takeAssistScreenshot(
+ @Nullable ToBooleanFunction<WindowState> predicate) {
if (!checkCallingPermission(READ_FRAME_BUFFER, "requestAssistScreenshot()")) {
throw new SecurityException("Requires READ_FRAME_BUFFER permission");
}
@@ -4174,7 +4206,7 @@ public class WindowManagerService extends IWindowManager.Stub
}
captureArgs = null;
} else {
- captureArgs = displayContent.getLayerCaptureArgs(windowTypesToExclude);
+ captureArgs = displayContent.getLayerCaptureArgs(predicate);
}
}
@@ -4204,8 +4236,7 @@ public class WindowManagerService extends IWindowManager.Stub
*/
@Override
public boolean requestAssistScreenshot(final IAssistDataReceiver receiver) {
- final ScreenshotHardwareBuffer shb =
- takeAssistScreenshot(/* windowTypesToExclude= */ Set.of());
+ final ScreenshotHardwareBuffer shb = takeAssistScreenshot(/* predicate= */ null);
final Bitmap bm = shb != null ? shb.asBitmap() : null;
FgThread.getHandler().post(() -> {
try {
@@ -4341,6 +4372,23 @@ public class WindowManagerService extends IWindowManager.Stub
}
}
+ @Nullable
+ Boolean resetIgnoreOrientationRequest(int displayId) {
+ synchronized (mGlobalLock) {
+ final DisplayContent display = mRoot.getDisplayContent(displayId);
+ if (display == null) {
+ return null;
+ }
+ display.mHasSetIgnoreOrientationRequest = false;
+ // Clear existing override settings.
+ mDisplayWindowSettings.setIgnoreOrientationRequest(display,
+ null /* ignoreOrientationRequest */);
+ // Reload from settings in case there is built-in config.
+ mDisplayWindowSettings.applyRotationSettingsToDisplayLocked(display);
+ return display.getIgnoreOrientationRequest();
+ }
+ }
+
/**
* Controls whether ignore orientation request logic in {@link DisplayArea} is disabled
* at runtime and how to optionally map some requested orientations to others.
@@ -6923,12 +6971,12 @@ public class WindowManagerService extends IWindowManager.Stub
@Override
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;
PriorityDump.dump(mPriorityDumper, fd, pw, args);
}
@NeverCompile // Avoid size overhead of debugging code.
private void doDump(FileDescriptor fd, PrintWriter pw, String[] args, boolean useProto) {
- if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;
boolean dumpAll = false;
int opti = 0;
@@ -8618,9 +8666,27 @@ public class WindowManagerService extends IWindowManager.Stub
}
@Override
- public ScreenshotHardwareBuffer takeAssistScreenshot(Set<Integer> windowTypesToExclude) {
+ public ScreenshotHardwareBuffer takeAssistScreenshot() {
+ // WMS.takeAssistScreenshot takes care of the locking.
+ return WindowManagerService.this.takeAssistScreenshot(/* predicate */ null);
+ }
+
+ @Override
+ public ScreenshotHardwareBuffer takeContextualSearchScreenshot(int uid) {
// WMS.takeAssistScreenshot takes care of the locking.
- return WindowManagerService.this.takeAssistScreenshot(windowTypesToExclude);
+ return WindowManagerService.this.takeAssistScreenshot(win -> {
+ switch (win.getWindowType()) {
+ case LayoutParams.TYPE_STATUS_BAR:
+ case LayoutParams.TYPE_NAVIGATION_BAR:
+ case LayoutParams.TYPE_NAVIGATION_BAR_PANEL:
+ case LayoutParams.TYPE_POINTER:
+ return false;
+ case LayoutParams.TYPE_APPLICATION_OVERLAY:
+ return uid != win.getOwningUid();
+ default:
+ return true;
+ }
+ });
}
}
@@ -8690,22 +8756,42 @@ public class WindowManagerService extends IWindowManager.Stub
return;
}
final boolean systemAlertWindowsHidden = !mHidingNonSystemOverlayWindows.isEmpty();
+ final int numUIDsRequestHidingPreUpdate = mHidingNonSystemOverlayWindowsCountPerUid.size();
if (surfaceShown && win.hideNonSystemOverlayWindowsWhenVisible()) {
if (!mHidingNonSystemOverlayWindows.contains(win)) {
mHidingNonSystemOverlayWindows.add(win);
+ int uid = win.getOwningUid();
+ int count = mHidingNonSystemOverlayWindowsCountPerUid.getOrDefault(uid, 0);
+ mHidingNonSystemOverlayWindowsCountPerUid.put(uid, count + 1);
}
} else {
mHidingNonSystemOverlayWindows.remove(win);
+ int uid = win.getOwningUid();
+ int count = mHidingNonSystemOverlayWindowsCountPerUid.getOrDefault(uid, 0);
+ if (count <= 1) {
+ mHidingNonSystemOverlayWindowsCountPerUid.remove(win.getOwningUid());
+ } else {
+ mHidingNonSystemOverlayWindowsCountPerUid.put(uid, count - 1);
+ }
}
-
final boolean hideSystemAlertWindows = !mHidingNonSystemOverlayWindows.isEmpty();
-
- if (systemAlertWindowsHidden == hideSystemAlertWindows) {
- return;
+ final int numUIDSRequestHidingPostUpdate = mHidingNonSystemOverlayWindowsCountPerUid.size();
+ if (Flags.fixHideOverlayApi()) {
+ if (numUIDSRequestHidingPostUpdate == numUIDsRequestHidingPreUpdate) {
+ return;
+ }
+ // The visibility of SAWs needs to be refreshed only when the number of uids that
+ // request hiding SAWs changes 0->1, 1->0, 1->2 or 2->1.
+ if (numUIDSRequestHidingPostUpdate != 1 && numUIDsRequestHidingPreUpdate != 1) {
+ return;
+ }
+ } else {
+ if (systemAlertWindowsHidden == hideSystemAlertWindows) {
+ return;
+ }
}
-
mRoot.forAllWindows((w) -> {
- w.setForceHideNonSystemOverlayWindowIfNeeded(hideSystemAlertWindows);
+ w.setForceHideNonSystemOverlayWindowIfNeeded(shouldHideNonSystemOverlayWindow(w));
}, false /* traverseTopToBottom */);
}
diff --git a/services/core/java/com/android/server/wm/WindowManagerShellCommand.java b/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
index 20b01d0dc618..6534c42c7572 100644
--- a/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
+++ b/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
@@ -578,6 +578,18 @@ public class WindowManagerShellCommand extends ShellCommand {
displayId = Integer.parseInt(getNextArgRequired());
arg = getNextArgRequired();
}
+ if ("reset".equals(arg)) {
+ final Boolean result = mInternal.resetIgnoreOrientationRequest(displayId);
+ if (result != null) {
+ pw.println("Reset ignoreOrientationRequest to " + result + " for displayId="
+ + displayId);
+ return 0;
+ } else {
+ getErrPrintWriter().println(
+ "Unable to reset ignoreOrientationRequest for displayId=" + displayId);
+ return -1;
+ }
+ }
final boolean ignoreOrientationRequest;
switch (arg) {
@@ -590,7 +602,7 @@ public class WindowManagerShellCommand extends ShellCommand {
ignoreOrientationRequest = false;
break;
default:
- getErrPrintWriter().println("Error: expecting true, 1, false, 0, but we "
+ getErrPrintWriter().println("Error: expecting true, 1, false, 0, reset, but we "
+ "get " + arg);
return -1;
}
@@ -1525,7 +1537,7 @@ public class WindowManagerShellCommand extends ShellCommand {
mInterface.setFixedToUserRotation(displayId, IWindowManager.FIXED_TO_USER_ROTATION_DEFAULT);
// set-ignore-orientation-request
- mInterface.setIgnoreOrientationRequest(displayId, false /* ignoreOrientationRequest */);
+ mInternal.resetIgnoreOrientationRequest(displayId);
// set-letterbox-style
resetLetterboxStyle();
@@ -1568,7 +1580,7 @@ public class WindowManagerShellCommand extends ShellCommand {
pw.println(" fixed-to-user-rotation [-d DISPLAY_ID] [enabled|disabled|default");
pw.println(" |enabled_if_no_auto_rotation]");
pw.println(" Print or set rotating display for app requested orientation.");
- pw.println(" set-ignore-orientation-request [-d DISPLAY_ID] [true|1|false|0]");
+ pw.println(" set-ignore-orientation-request [-d DISPLAY_ID] [reset|true|1|false|0]");
pw.println(" get-ignore-orientation-request [-d DISPLAY_ID] ");
pw.println(" If app requested orientation should be ignored.");
pw.println(" set-sandbox-display-apis [true|1|false|0]");
diff --git a/services/core/java/com/android/server/wm/WindowOrganizerController.java b/services/core/java/com/android/server/wm/WindowOrganizerController.java
index b4c2c0173767..a11f4b1f3fc3 100644
--- a/services/core/java/com/android/server/wm/WindowOrganizerController.java
+++ b/services/core/java/com/android/server/wm/WindowOrganizerController.java
@@ -52,6 +52,7 @@ import static android.window.WindowContainerTransaction.Change.CHANGE_FOCUSABLE;
import static android.window.WindowContainerTransaction.Change.CHANGE_FORCE_TRANSLUCENT;
import static android.window.WindowContainerTransaction.Change.CHANGE_HIDDEN;
import static android.window.WindowContainerTransaction.Change.CHANGE_RELATIVE_BOUNDS;
+import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_APP_COMPAT_REACHABILITY;
import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_REMOVE_ROOT_TASK;
import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_SET_KEYGUARD_STATE;
import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_ADD_INSETS_FRAME_PROVIDER;
@@ -77,6 +78,8 @@ import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP
import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_SET_LAUNCH_ROOT;
import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_SET_REPARENT_LEAF_TASK_IF_RELAUNCH;
import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_START_SHORTCUT;
+import static android.window.WindowContainerTransaction.HierarchyOp.REACHABILITY_EVENT_X;
+import static android.window.WindowContainerTransaction.HierarchyOp.REACHABILITY_EVENT_Y;
import static com.android.internal.protolog.WmProtoLogGroups.WM_DEBUG_WINDOW_ORGANIZER;
import static com.android.server.wm.ActivityRecord.State.PAUSING;
@@ -1196,6 +1199,30 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
caller.mPid, caller.mUid, taskId, safeOptions));
break;
}
+ case HIERARCHY_OP_TYPE_APP_COMPAT_REACHABILITY: {
+ int doubleTapX = hop.getAppCompatOptions().getInt(REACHABILITY_EVENT_X);
+ int doubleTapY = hop.getAppCompatOptions().getInt(REACHABILITY_EVENT_Y);
+ final WindowContainer<?> wc = WindowContainer.fromBinder(hop.getContainer());
+ if (wc == null) {
+ break;
+ }
+ final Task currentTask = wc.asTask();
+ if (chain.mTransition != null) {
+ chain.mTransition.collect(wc);
+ }
+ if (currentTask != null) {
+ final ActivityRecord top = currentTask.topRunningActivity();
+ if (top != null) {
+ if (chain.mTransition != null) {
+ chain.mTransition.collect(top);
+ }
+ top.mAppCompatController.getReachabilityPolicy().handleDoubleTap(doubleTapX,
+ doubleTapY);
+ }
+ }
+ effects |= TRANSACT_EFFECTS_CLIENT_CONFIG;
+ break;
+ }
case HIERARCHY_OP_TYPE_REORDER:
case HIERARCHY_OP_TYPE_REPARENT: {
final WindowContainer wc = WindowContainer.fromBinder(hop.getContainer());
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index a8f22eaeabb8..84d8f840d849 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -182,6 +182,7 @@ import static com.android.server.wm.WindowStateProto.UNRESTRICTED_KEEP_CLEAR_ARE
import static com.android.server.wm.WindowStateProto.VIEW_VISIBILITY;
import static com.android.server.wm.WindowStateProto.WINDOW_CONTAINER;
import static com.android.server.wm.WindowStateProto.WINDOW_FRAMES;
+import static com.android.window.flags.Flags.enablePresentationForConnectedDisplays;
import static com.android.window.flags.Flags.surfaceTrustedOverlay;
import android.annotation.CallSuper;
@@ -2317,6 +2318,12 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
final int type = mAttrs.type;
if (type == TYPE_PRESENTATION || type == TYPE_PRIVATE_PRESENTATION) {
+ // TODO(b/393945496): Make sure that there's one presentation at most per display.
+ dc.mIsPresenting = false;
+ if (enablePresentationForConnectedDisplays()) {
+ // A presentation hides all activities behind on the same display.
+ dc.ensureActivitiesVisible(/*starting=*/ null, /*notifyClients=*/ true);
+ }
mWmService.mDisplayManagerInternal.onPresentation(dc.getDisplay().getDisplayId(),
/*isShown=*/ false);
}
diff --git a/services/core/jni/com_android_server_display_DisplayControl.cpp b/services/core/jni/com_android_server_display_DisplayControl.cpp
index 6613a250bd71..aeae13d83809 100644
--- a/services/core/jni/com_android_server_display_DisplayControl.cpp
+++ b/services/core/jni/com_android_server_display_DisplayControl.cpp
@@ -172,9 +172,9 @@ static jlongArray nativeGetPhysicalDisplayIds(JNIEnv* env, jclass clazz) {
}
static jobject nativeGetPhysicalDisplayToken(JNIEnv* env, jclass clazz, jlong physicalDisplayId) {
- const auto id = DisplayId::fromValue<PhysicalDisplayId>(physicalDisplayId);
- if (!id) return nullptr;
- sp<IBinder> token = SurfaceComposerClient::getPhysicalDisplayToken(*id);
+ const PhysicalDisplayId id = PhysicalDisplayId::fromValue(physicalDisplayId);
+ sp<IBinder> token = SurfaceComposerClient::getPhysicalDisplayToken(id);
+ if (!token) return nullptr;
return javaObjectForIBinder(env, token);
}
diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp
index bf4595c815bd..883cab07914f 100644
--- a/services/core/jni/com_android_server_input_InputManagerService.cpp
+++ b/services/core/jni/com_android_server_input_InputManagerService.cpp
@@ -571,9 +571,6 @@ private:
PointerIcon loadPointerIcon(JNIEnv* env, ui::LogicalDisplayId displayId, PointerIconStyle type);
bool isDisplayInteractive(ui::LogicalDisplayId displayId);
- // TODO(b/362719483) remove when the real topology is available
- void populateFakeDisplayTopology(const std::vector<DisplayViewport>& viewports);
-
static inline JNIEnv* jniEnv() { return AndroidRuntime::getJNIEnv(); }
};
@@ -602,12 +599,14 @@ void NativeInputManager::dump(std::string& dump) {
return std::to_string(displayId.val());
};
dump += StringPrintf(INDENT "Display not interactive: %s\n",
- dumpSet(mLocked.nonInteractiveDisplays, streamableToString).c_str());
+ dumpContainer(mLocked.nonInteractiveDisplays, streamableToString)
+ .c_str());
dump += StringPrintf(INDENT "System UI Lights Out: %s\n",
toString(mLocked.systemUiLightsOut));
dump += StringPrintf(INDENT "Pointer Speed: %" PRId32 "\n", mLocked.pointerSpeed);
dump += StringPrintf(INDENT "Display with Mouse Scaling Disabled: %s\n",
- dumpSet(mLocked.displaysWithMouseScalingDisabled, streamableToString)
+ dumpContainer(mLocked.displaysWithMouseScalingDisabled,
+ streamableToString)
.c_str());
dump += StringPrintf(INDENT "Pointer Gestures Enabled: %s\n",
toString(mLocked.pointerGesturesEnabled));
@@ -661,54 +660,16 @@ void NativeInputManager::setDisplayViewports(JNIEnv* env, jobjectArray viewportO
mInputManager->getChoreographer().setDisplayViewports(viewports);
mInputManager->getReader().requestRefreshConfiguration(
InputReaderConfiguration::Change::DISPLAY_INFO);
-
- // TODO(b/362719483) remove when the real topology is available
- populateFakeDisplayTopology(viewports);
}
-void NativeInputManager::populateFakeDisplayTopology(
- const std::vector<DisplayViewport>& viewports) {
+void NativeInputManager::setDisplayTopology(JNIEnv* env, jobject topologyGraph) {
if (!com::android::input::flags::connected_displays_cursor()) {
return;
}
- // create a fake topology assuming following order
- // default-display (top-edge) -> next-display (right-edge) -> next-display (right-edge) ...
- // This also adds a 100px offset on corresponding edge for better manual testing
- // ┌────────┐
- // │ next ├─────────┐
- // ┌─└───────┐┤ next 2 │ ...
- // │ default │└─────────┘
- // └─────────┘
- DisplayTopologyGraph displaytopology;
- displaytopology.primaryDisplayId = ui::LogicalDisplayId::DEFAULT;
-
- // treat default display as base, in real topology it should be the primary-display
- ui::LogicalDisplayId previousDisplay = ui::LogicalDisplayId::DEFAULT;
- for (const auto& viewport : viewports) {
- if (viewport.displayId == ui::LogicalDisplayId::DEFAULT) {
- continue;
- }
- if (previousDisplay == ui::LogicalDisplayId::DEFAULT) {
- displaytopology.graph[previousDisplay].push_back(
- {viewport.displayId, DisplayTopologyPosition::TOP, 100});
- displaytopology.graph[viewport.displayId].push_back(
- {previousDisplay, DisplayTopologyPosition::BOTTOM, -100});
- } else {
- displaytopology.graph[previousDisplay].push_back(
- {viewport.displayId, DisplayTopologyPosition::RIGHT, 100});
- displaytopology.graph[viewport.displayId].push_back(
- {previousDisplay, DisplayTopologyPosition::LEFT, -100});
- }
- previousDisplay = viewport.displayId;
- }
-
- mInputManager->getChoreographer().setDisplayTopology(displaytopology);
-}
-
-void NativeInputManager::setDisplayTopology(JNIEnv* env, jobject topologyGraph) {
- android_hardware_display_DisplayTopologyGraph_toNative(env, topologyGraph);
- // TODO(b/367661489): Use the topology
+ // TODO(b/383092013): Add topology validation
+ mInputManager->getChoreographer().setDisplayTopology(
+ android_hardware_display_DisplayTopologyGraph_toNative(env, topologyGraph));
}
base::Result<std::unique_ptr<InputChannel>> NativeInputManager::createInputChannel(
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java
index 1c8d06e52329..bbbfe0b2f0a2 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java
@@ -403,22 +403,23 @@ final class DevicePolicyEngine {
*/
private <V> void applyToInheritableProfiles(PolicyDefinition<V> policyDefinition,
EnforcingAdmin enforcingAdmin, @Nullable PolicyValue<V> value, int userId) {
- if (policyDefinition.isInheritable()) {
- Binder.withCleanCallingIdentity(() -> {
- List<UserInfo> userInfos = mUserManager.getProfiles(userId);
- for (UserInfo childUserInfo : userInfos) {
- int childUserId = childUserInfo.getUserHandle().getIdentifier();
- if (isProfileOfUser(childUserId, userId)
- && isInheritDevicePolicyFromParent(childUserInfo)) {
- if (value != null) {
- setLocalPolicy(policyDefinition, enforcingAdmin, value, childUserId);
- } else {
- removeLocalPolicy(policyDefinition, enforcingAdmin, childUserId);
- }
+ if (!policyDefinition.isInheritable()) {
+ return;
+ }
+ Binder.withCleanCallingIdentity(() -> {
+ List<UserInfo> userInfos = mUserManager.getProfiles(userId);
+ for (UserInfo childUserInfo : userInfos) {
+ int childUserId = childUserInfo.getUserHandle().getIdentifier();
+ if (isProfileOfUser(childUserId, userId)
+ && isInheritDevicePolicyFromParent(childUserInfo)) {
+ if (value != null) {
+ setLocalPolicy(policyDefinition, enforcingAdmin, value, childUserId);
+ } else {
+ removeLocalPolicy(policyDefinition, enforcingAdmin, childUserId);
}
}
- });
- }
+ }
+ });
}
/**
@@ -1868,7 +1869,7 @@ final class DevicePolicyEngine {
* of the resolved policy. This method controls which policies should use this special logic.
*/
private <V> boolean shouldApplyPackageSetUnionPolicyHack(PolicyDefinition<V> policy) {
- String policyKey = policy.getPolicyKey().getIdentifier();
+ String policyKey = policy.getPolicyKey().getIdentifier();
return policyKey.equals(USER_CONTROL_DISABLED_PACKAGES_POLICY)
|| policyKey.equals(PACKAGES_SUSPENDED_POLICY);
}
@@ -1894,6 +1895,7 @@ final class DevicePolicyEngine {
private static File getFileName() {
return new File(Environment.getDataSystemDirectory(), DEVICE_POLICIES_XML);
}
+
private DevicePoliciesReaderWriter() {
mFile = getFileName();
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 582cd4ed8003..e11c31c88c87 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -2723,16 +2723,16 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
}
}
- /**
- * Apply default restrictions that haven't been applied to a given admin yet.
- */
+ /** Apply default restrictions that haven't been applied to a given admin yet. */
private void maybeSetDefaultRestrictionsForAdminLocked(int userId, ActiveAdmin admin) {
- Set<String> defaultRestrictions =
- UserRestrictionsUtils.getDefaultEnabledForManagedProfiles();
- if (defaultRestrictions.equals(admin.defaultEnabledRestrictionsAlreadySet)) {
+ Set<String> newDefaultRestrictions = new HashSet(
+ UserRestrictionsUtils.getDefaultEnabledForManagedProfiles());
+ newDefaultRestrictions.removeAll(admin.defaultEnabledRestrictionsAlreadySet);
+ if (newDefaultRestrictions.isEmpty()) {
return; // The same set of default restrictions has been already applied.
}
- for (String restriction : defaultRestrictions) {
+
+ for (String restriction : newDefaultRestrictions) {
mDevicePolicyEngine.setLocalPolicy(
PolicyDefinition.getPolicyDefinitionForUserRestriction(restriction),
EnforcingAdmin.createEnterpriseEnforcingAdmin(
@@ -2740,10 +2740,9 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
admin.getUserHandle().getIdentifier()),
new BooleanPolicyValue(true),
userId);
+ admin.defaultEnabledRestrictionsAlreadySet.add(restriction);
+ Slogf.i(LOG_TAG, "Enabled the following restriction by default: " + restriction);
}
- admin.defaultEnabledRestrictionsAlreadySet.addAll(defaultRestrictions);
- Slogf.i(LOG_TAG, "Enabled the following restrictions by default: "
- + defaultRestrictions);
}
private void maybeStartSecurityLogMonitorOnActivityManagerReady() {
@@ -10282,7 +10281,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
return false;
}
- if (isAdb(caller)) {
+ boolean isAdb = isAdb(caller);
+ if (isAdb) {
// Log profile owner provisioning was started using adb.
MetricsLogger.action(mContext, PROVISIONING_ENTRY_POINT_ADB, LOG_TAG_PROFILE_OWNER);
DevicePolicyEventLogger
@@ -10305,6 +10305,18 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
ensureUnknownSourcesRestrictionForProfileOwnerLocked(userHandle, admin,
true /* newOwner */);
}
+ if(isAdb) {
+ // DISALLOW_DEBUGGING_FEATURES is being added to newly-created
+ // work profile by default due to b/382064697 . This would have
+ // impacted certain CTS test flows when they interact with the
+ // work profile via ADB (for example installing an app into the
+ // work profile). Remove DISALLOW_DEBUGGING_FEATURES here to
+ // reduce the potential impact.
+ setLocalUserRestrictionInternal(
+ EnforcingAdmin.createEnterpriseEnforcingAdmin(who, userHandle),
+ UserManager.DISALLOW_DEBUGGING_FEATURES, false, userHandle);
+ }
+
sendOwnerChangedBroadcast(DevicePolicyManager.ACTION_PROFILE_OWNER_CHANGED,
userHandle);
});
diff --git a/services/permission/java/com/android/server/permission/access/AccessPolicy.kt b/services/permission/java/com/android/server/permission/access/AccessPolicy.kt
index 69a88e982f96..1bb395441587 100644
--- a/services/permission/java/com/android/server/permission/access/AccessPolicy.kt
+++ b/services/permission/java/com/android/server/permission/access/AccessPolicy.kt
@@ -431,7 +431,7 @@ private constructor(
companion object {
private val LOG_TAG = AccessPolicy::class.java.simpleName
- internal const val VERSION_LATEST = 15
+ internal const val VERSION_LATEST = 16
private const val TAG_ACCESS = "access"
private const val TAG_DEFAULT_PERMISSION_GRANT = "default-permission-grant"
diff --git a/services/permission/java/com/android/server/permission/access/appop/AppIdAppOpUpgrade.kt b/services/permission/java/com/android/server/permission/access/appop/AppIdAppOpUpgrade.kt
index 10c77645bf15..0f7175c4dfd9 100644
--- a/services/permission/java/com/android/server/permission/access/appop/AppIdAppOpUpgrade.kt
+++ b/services/permission/java/com/android/server/permission/access/appop/AppIdAppOpUpgrade.kt
@@ -61,5 +61,21 @@ class AppIdAppOpUpgrade(private val policy: AppIdAppOpPolicy) {
}
}
}
+ if (version <= 15) {
+ with(policy) {
+ val appOpModes = getAppOpModes(packageState.appId, userId)
+ if (
+ appOpModes != null &&
+ AppOpsManager.OPSTR_ACCESS_RESTRICTED_SETTINGS !in appOpModes
+ ) {
+ setAppOpMode(
+ packageState.appId,
+ userId,
+ AppOpsManager.OPSTR_ACCESS_RESTRICTED_SETTINGS,
+ AppOpsManager.MODE_ALLOWED,
+ )
+ }
+ }
+ }
}
}
diff --git a/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt b/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt
index c62cd6e962b3..7128af5464e8 100644
--- a/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt
+++ b/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt
@@ -467,11 +467,17 @@ class PermissionService(private val service: AccessCheckingService) :
override fun getPermissionRequestState(
packageName: String,
permissionName: String,
- deviceId: String
+ deviceId: Int,
+ persistentDeviceId: String
): Int {
val pid = Binder.getCallingPid()
val uid = Binder.getCallingUid()
- val result = context.checkPermission(permissionName, pid, uid)
+ val deviceContext = if (deviceId == context.deviceId){
+ context
+ } else {
+ context.createDeviceContext(deviceId)
+ }
+ val result = deviceContext.checkPermission(permissionName, pid, uid)
if (result == PackageManager.PERMISSION_GRANTED) {
return Context.PERMISSION_REQUEST_STATE_GRANTED
}
@@ -497,14 +503,14 @@ class PermissionService(private val service: AccessCheckingService) :
val permissionFlags =
service.getState {
- getPermissionFlagsWithPolicy(appId, userId, permissionName, deviceId)
+ getPermissionFlagsWithPolicy(appId, userId, permissionName, persistentDeviceId)
}
val isUnreqestable = permissionFlags.hasAnyBit(UNREQUESTABLE_MASK)
// Special case for READ_MEDIA_IMAGES due to photo picker
if ((permissionName == Manifest.permission.READ_MEDIA_IMAGES ||
permissionName == Manifest.permission.READ_MEDIA_VIDEO) && isUnreqestable) {
val isUserSelectedGranted =
- context.checkPermission(
+ deviceContext.checkPermission(
Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED,
pid,
uid,
@@ -515,7 +521,7 @@ class PermissionService(private val service: AccessCheckingService) :
appId,
userId,
Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED,
- deviceId,
+ persistentDeviceId,
)
}
if (
diff --git a/services/supervision/java/com/android/server/supervision/SupervisionService.java b/services/supervision/java/com/android/server/supervision/SupervisionService.java
index ea85710eab44..a96c477c78d2 100644
--- a/services/supervision/java/com/android/server/supervision/SupervisionService.java
+++ b/services/supervision/java/com/android/server/supervision/SupervisionService.java
@@ -177,23 +177,24 @@ public class SupervisionService extends ISupervisionManager.Stub {
}
}
- /** Ensures that supervision is enabled when the supervision app is the profile owner. */
+ /**
+ * Ensures that supervision is enabled when the supervision app is the profile owner.
+ *
+ * <p>The state syncing with the DevicePolicyManager can only enable supervision and never
+ * disable. Supervision can only be disabled explicitly via calls to the
+ * {@link #setSupervisionEnabledForUser} method.
+ */
private void syncStateWithDevicePolicyManager(@UserIdInt int userId) {
final DevicePolicyManagerInternal dpmInternal = mInjector.getDpmInternal();
final ComponentName po =
dpmInternal != null ? dpmInternal.getProfileOwnerAsUser(userId) : null;
if (po != null && po.getPackageName().equals(getSystemSupervisionPackage())) {
- setSupervisionEnabledForUserInternal(userId, true, po.getPackageName());
+ setSupervisionEnabledForUserInternal(userId, true, getSystemSupervisionPackage());
} else if (po != null && po.equals(getSupervisionProfileOwnerComponent())) {
// TODO(b/392071637): Consider not enabling supervision in case profile owner is given
// to the legacy supervision profile owner component.
setSupervisionEnabledForUserInternal(userId, true, po.getPackageName());
- } else {
- // TODO(b/381428475): Avoid disabling supervision when the app is not the profile owner.
- // This might only be possible after introducing specific and public APIs to enable
- // and disable supervision.
- setSupervisionEnabledForUserInternal(userId, false, /* supervisionAppPackage= */ null);
}
}
@@ -279,7 +280,7 @@ public class SupervisionService extends ISupervisionManager.Stub {
}
@VisibleForTesting
- @SuppressLint("MissingPermission") // not needed for a service
+ @SuppressLint("MissingPermission") // not needed for a system service
void registerProfileOwnerListener() {
IntentFilter poIntentFilter = new IntentFilter();
poIntentFilter.addAction(DevicePolicyManager.ACTION_PROFILE_OWNER_CHANGED);
diff --git a/services/tests/InputMethodSystemServerTests/Android.bp b/services/tests/InputMethodSystemServerTests/Android.bp
index da58aa1f6c66..ae9a34efc222 100644
--- a/services/tests/InputMethodSystemServerTests/Android.bp
+++ b/services/tests/InputMethodSystemServerTests/Android.bp
@@ -34,24 +34,24 @@ android_test {
static_libs: [
"androidx.test.core",
- "androidx.test.runner",
- "androidx.test.espresso.core",
"androidx.test.espresso.contrib",
+ "androidx.test.espresso.core",
"androidx.test.ext.truth",
+ "androidx.test.runner",
"frameworks-base-testutils",
"mockito-target-extended-minus-junit4",
"platform-test-annotations",
"ravenwood-junit",
- "services.core",
"service-permission.stubs.system_server",
+ "services.core",
"servicestests-core-utils",
"servicestests-utils-mockito-extended",
"truth",
],
libs: [
- "android.test.mock.stubs.system",
"android.test.base.stubs.system",
+ "android.test.mock.stubs.system",
"android.test.runner.stubs.system",
],
@@ -103,27 +103,29 @@ android_test {
test_config: "src/com/android/inputmethodservice/AndroidTest.xml",
static_libs: [
+ "SimpleImeImsLib",
+ "SimpleImeTestingLib",
"androidx.test.core",
- "androidx.test.runner",
- "androidx.test.espresso.core",
"androidx.test.espresso.contrib",
+ "androidx.test.espresso.core",
"androidx.test.ext.truth",
+ "androidx.test.runner",
+ "cts-input-lib",
+ "cts-wm-util",
"frameworks-base-testutils",
"mockito-target-extended-minus-junit4",
"platform-test-annotations",
"ravenwood-junit",
- "services.core",
"service-permission.stubs.system_server",
+ "services.core",
"servicestests-core-utils",
"servicestests-utils-mockito-extended",
"truth",
- "SimpleImeTestingLib",
- "SimpleImeImsLib",
],
libs: [
- "android.test.mock.stubs.system",
"android.test.base.stubs.system",
+ "android.test.mock.stubs.system",
"android.test.runner.stubs.system",
],
diff --git a/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java b/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java
index d08715586580..a103b0583eac 100644
--- a/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java
+++ b/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java
@@ -19,11 +19,13 @@ package com.android.inputmethodservice;
import static android.view.WindowInsets.Type.captionBar;
import static com.android.compatibility.common.util.SystemUtil.eventually;
+import static com.android.cts.input.injectinputinprocess.InjectInputInProcessKt.clickOnViewCenter;
+import static com.android.internal.inputmethod.InputMethodNavButtonFlags.IME_DRAWS_IME_NAV_BAR;
+import static com.android.internal.inputmethod.InputMethodNavButtonFlags.SHOW_IME_SWITCHER_WHEN_IME_IS_SHOWN;
import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertWithMessage;
-import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import static org.junit.Assume.assumeFalse;
import static org.junit.Assume.assumeTrue;
@@ -37,6 +39,7 @@ import android.platform.test.annotations.RequiresFlagsDisabled;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
import android.provider.Settings;
+import android.server.wm.WindowManagerStateHelper;
import android.util.Log;
import android.view.WindowManagerGlobal;
import android.view.WindowManagerPolicyConstants;
@@ -49,6 +52,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.MediumTest;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.uiautomator.By;
+import androidx.test.uiautomator.BySelector;
import androidx.test.uiautomator.UiDevice;
import androidx.test.uiautomator.UiObject2;
import androidx.test.uiautomator.Until;
@@ -56,15 +60,14 @@ import androidx.test.uiautomator.Until;
import com.android.apps.inputmethod.simpleime.ims.InputMethodServiceWrapper;
import com.android.apps.inputmethod.simpleime.testing.TestActivity;
import com.android.compatibility.common.util.SystemUtil;
-import com.android.internal.inputmethod.InputMethodNavButtonFlags;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TestName;
import org.junit.runner.RunWith;
-import java.io.IOException;
import java.util.Objects;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -72,9 +75,9 @@ import java.util.concurrent.TimeUnit;
@RunWith(AndroidJUnit4.class)
@MediumTest
public class InputMethodServiceTest {
+
private static final String TAG = "SimpleIMSTest";
private static final String INPUT_METHOD_SERVICE_NAME = ".SimpleInputMethodService";
- private static final String EDIT_TEXT_DESC = "Input box";
private static final String INPUT_METHOD_NAV_BACK_ID =
"android:id/input_method_nav_back";
private static final String INPUT_METHOD_NAV_IME_SWITCHER_ID =
@@ -85,62 +88,71 @@ public class InputMethodServiceTest {
private static final String DISABLE_SHOW_IME_WITH_HARD_KEYBOARD_CMD =
"settings put secure " + Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD + " 0";
+ private final WindowManagerStateHelper mWmState = new WindowManagerStateHelper();
+
private final DeviceFlagsValueProvider mFlagsValueProvider = new DeviceFlagsValueProvider();
+ @Rule
+ public final CheckFlagsRule mCheckFlagsRule = new CheckFlagsRule(mFlagsValueProvider);
+
+ @Rule
+ public final TestName mName = new TestName();
+
private Instrumentation mInstrumentation;
private UiDevice mUiDevice;
private Context mContext;
+ private InputMethodManager mImm;
private String mTargetPackageName;
+ private String mInputMethodId;
private TestActivity mActivity;
private InputMethodServiceWrapper mInputMethodService;
- private String mInputMethodId;
private boolean mShowImeWithHardKeyboardEnabled;
- @Rule
- public final CheckFlagsRule mCheckFlagsRule = new CheckFlagsRule(mFlagsValueProvider);
-
@Before
public void setUp() throws Exception {
mInstrumentation = InstrumentationRegistry.getInstrumentation();
mUiDevice = UiDevice.getInstance(mInstrumentation);
mContext = mInstrumentation.getContext();
+ mImm = mContext.getSystemService(InputMethodManager.class);
mTargetPackageName = mInstrumentation.getTargetContext().getPackageName();
mInputMethodId = getInputMethodId();
prepareIme();
- prepareEditor();
+ prepareActivity();
mInstrumentation.waitForIdleSync();
mUiDevice.freezeRotation();
mUiDevice.setOrientationNatural();
// Waits for input binding ready.
eventually(() -> {
- mInputMethodService =
- InputMethodServiceWrapper.getInputMethodServiceWrapperForTesting();
- assertThat(mInputMethodService).isNotNull();
+ mInputMethodService = InputMethodServiceWrapper.getInstance();
+ assertWithMessage("IME is not null").that(mInputMethodService).isNotNull();
// The activity gets focus.
- assertThat(mActivity.hasWindowFocus()).isTrue();
- assertThat(mInputMethodService.getCurrentInputEditorInfo()).isNotNull();
- assertThat(mInputMethodService.getCurrentInputEditorInfo().packageName)
- .isEqualTo(mTargetPackageName);
-
- // The editor won't bring up keyboard by default.
- assertThat(mInputMethodService.getCurrentInputStarted()).isTrue();
- assertThat(mInputMethodService.getCurrentInputViewStarted()).isFalse();
+ assertWithMessage("Activity window has input focus")
+ .that(mActivity.hasWindowFocus()).isTrue();
+ final var editorInfo = mInputMethodService.getCurrentInputEditorInfo();
+ assertWithMessage("EditorInfo is not null").that(editorInfo).isNotNull();
+ assertWithMessage("EditorInfo package matches target package")
+ .that(editorInfo.packageName).isEqualTo(mTargetPackageName);
+
+ assertWithMessage("Input connection is started")
+ .that(mInputMethodService.getCurrentInputStarted()).isTrue();
+ // The editor won't bring up the IME by default.
+ assertWithMessage("IME is not shown during setup")
+ .that(mInputMethodService.getCurrentInputViewStarted()).isFalse();
});
// Save the original value of show_ime_with_hard_keyboard from Settings.
- mShowImeWithHardKeyboardEnabled = Settings.Secure.getInt(
- mInputMethodService.getContentResolver(),
- Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD, 0) != 0;
+ mShowImeWithHardKeyboardEnabled =
+ mInputMethodService.getShouldShowImeWithHardKeyboardForTesting();
}
@After
public void tearDown() throws Exception {
mUiDevice.unfreezeRotation();
- executeShellCommand("ime disable " + mInputMethodId);
// Change back the original value of show_ime_with_hard_keyboard in Settings.
executeShellCommand(mShowImeWithHardKeyboardEnabled
? ENABLE_SHOW_IME_WITH_HARD_KEYBOARD_CMD
: DISABLE_SHOW_IME_WITH_HARD_KEYBOARD_CMD);
+ executeShellCommand("ime disable " + mInputMethodId);
}
/**
@@ -148,30 +160,65 @@ public class InputMethodServiceTest {
* (i.e. tapping on an EditText, tapping the Home button).
*/
@Test
- public void testShowHideKeyboard_byUserAction() throws Exception {
+ public void testShowHideKeyboard_byUserAction() {
+ waitUntilActivityReadyForInputInjection(mActivity);
+
setShowImeWithHardKeyboard(true /* enabled */);
- // Performs click on editor box to bring up the soft keyboard.
- Log.i(TAG, "Click on EditText.");
+ // Performs click on EditText to bring up the IME.
+ Log.i(TAG, "Click on EditText");
verifyInputViewStatus(
- () -> clickOnEditorText(),
+ () -> clickOnViewCenter(mActivity.getEditText()),
true /* expected */,
true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
+ assertWithMessage("IME is shown").that(mInputMethodService.isInputViewShown()).isTrue();
- // Press home key to hide soft keyboard.
+ // Press home key to hide IME.
Log.i(TAG, "Press home");
if (mFlagsValueProvider.getBoolean(Flags.FLAG_REFACTOR_INSETS_CONTROLLER)) {
- assertThat(mUiDevice.pressHome()).isTrue();
+ assertWithMessage("Home key press was handled").that(mUiDevice.pressHome()).isTrue();
// The IME visibility is only sent at the end of the animation. Therefore, we have to
// wait until the visibility was sent to the server and the IME window hidden.
- eventually(() -> assertThat(mInputMethodService.isInputViewShown()).isFalse());
+ eventually(() -> assertWithMessage("IME is not shown")
+ .that(mInputMethodService.isInputViewShown()).isFalse());
} else {
verifyInputViewStatus(
- () -> assertThat(mUiDevice.pressHome()).isTrue(),
+ () -> assertWithMessage("Home key press was handled")
+ .that(mUiDevice.pressHome()).isTrue(),
true /* expected */,
false /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isFalse();
+ assertWithMessage("IME is not shown")
+ .that(mInputMethodService.isInputViewShown()).isFalse();
+ }
+ }
+
+ /**
+ * This checks that the IME can be shown and hidden using the InputMethodManager APIs.
+ */
+ @Test
+ public void testShowHideKeyboard_byInputMethodManager() {
+ setShowImeWithHardKeyboard(true /* enabled */);
+
+ // Triggers to show IME via public API.
+ verifyInputViewStatusOnMainSync(
+ () -> assertThat(mActivity.showImeWithInputMethodManager(0 /* flags */)).isTrue(),
+ true /* expected */,
+ true /* inputViewStarted */);
+ assertWithMessage("IME is shown").that(mInputMethodService.isInputViewShown()).isTrue();
+
+ // Triggers to hide IME via public API.
+ verifyInputViewStatusOnMainSync(
+ () -> assertThat(mActivity.hideImeWithInputMethodManager(0 /* flags */)).isTrue(),
+ true /* expected */,
+ false /* inputViewStarted */);
+ if (mFlagsValueProvider.getBoolean(Flags.FLAG_REFACTOR_INSETS_CONTROLLER)) {
+ // The IME visibility is only sent at the end of the animation. Therefore, we have to
+ // wait until the visibility was sent to the server and the IME window hidden.
+ eventually(() -> assertWithMessage("IME is not shown")
+ .that(mInputMethodService.isInputViewShown()).isFalse());
+ } else {
+ assertWithMessage("IME is not shown")
+ .that(mInputMethodService.isInputViewShown()).isFalse();
}
}
@@ -179,40 +226,41 @@ public class InputMethodServiceTest {
* This checks that the IME can be shown and hidden using the WindowInsetsController APIs.
*/
@Test
- public void testShowHideKeyboard_byApi() throws Exception {
+ public void testShowHideKeyboard_byInsetsController() {
setShowImeWithHardKeyboard(true /* enabled */);
// Triggers to show IME via public API.
- verifyInputViewStatus(
- () -> assertThat(mActivity.showImeWithWindowInsetsController()).isTrue(),
+ verifyInputViewStatusOnMainSync(
+ () -> mActivity.showImeWithWindowInsetsController(),
true /* expected */,
true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
+ assertWithMessage("IME is shown").that(mInputMethodService.isInputViewShown()).isTrue();
// Triggers to hide IME via public API.
verifyInputViewStatusOnMainSync(
- () -> assertThat(mActivity.hideImeWithWindowInsetsController()).isTrue(),
+ () -> mActivity.hideImeWithWindowInsetsController(),
true /* expected */,
false /* inputViewStarted */);
if (mFlagsValueProvider.getBoolean(Flags.FLAG_REFACTOR_INSETS_CONTROLLER)) {
// The IME visibility is only sent at the end of the animation. Therefore, we have to
// wait until the visibility was sent to the server and the IME window hidden.
- eventually(() -> assertThat(mInputMethodService.isInputViewShown()).isFalse());
+ eventually(() -> assertWithMessage("IME is not shown")
+ .that(mInputMethodService.isInputViewShown()).isFalse());
} else {
- assertThat(mInputMethodService.isInputViewShown()).isFalse();
+ assertWithMessage("IME is not shown")
+ .that(mInputMethodService.isInputViewShown()).isFalse();
}
}
/**
* This checks the result of calling IMS#requestShowSelf and IMS#requestHideSelf.
*
- * With the refactor in b/298172246, all calls to IMMS#{show,hide}MySoftInputLocked
+ * <p>With the refactor in b/298172246, all calls to IMMS#{show,hide}MySoftInputLocked
* will be just apply the requested visibility (by using the callback). Therefore, we will
* lose flags like HIDE_IMPLICIT_ONLY.
*/
@Test
- @RequiresFlagsDisabled(Flags.FLAG_REFACTOR_INSETS_CONTROLLER)
- public void testShowHideSelf() throws Exception {
+ public void testShowHideSelf() {
setShowImeWithHardKeyboard(true /* enabled */);
// IME request to show itself without any flags, expect shown.
@@ -221,15 +269,19 @@ public class InputMethodServiceTest {
() -> mInputMethodService.requestShowSelf(0 /* flags */),
true /* expected */,
true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
-
- // IME request to hide itself with flag HIDE_IMPLICIT_ONLY, expect not hide (shown).
- Log.i(TAG, "Call IMS#requestHideSelf(InputMethodManager.HIDE_IMPLICIT_ONLY)");
- verifyInputViewStatusOnMainSync(
- () -> mInputMethodService.requestHideSelf(InputMethodManager.HIDE_IMPLICIT_ONLY),
- false /* expected */,
- true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
+ assertWithMessage("IME is shown").that(mInputMethodService.isInputViewShown()).isTrue();
+
+ if (!mFlagsValueProvider.getBoolean(Flags.FLAG_REFACTOR_INSETS_CONTROLLER)) {
+ // IME request to hide itself with flag HIDE_IMPLICIT_ONLY, expect not hide (shown).
+ Log.i(TAG, "Call IMS#requestHideSelf(InputMethodManager.HIDE_IMPLICIT_ONLY)");
+ verifyInputViewStatusOnMainSync(
+ () -> mInputMethodService.requestHideSelf(
+ InputMethodManager.HIDE_IMPLICIT_ONLY),
+ false /* expected */,
+ true /* inputViewStarted */);
+ assertWithMessage("IME is still shown after HIDE_IMPLICIT_ONLY")
+ .that(mInputMethodService.isInputViewShown()).isTrue();
+ }
// IME request to hide itself without any flags, expect hidden.
Log.i(TAG, "Call IMS#requestHideSelf(0)");
@@ -237,23 +289,36 @@ public class InputMethodServiceTest {
() -> mInputMethodService.requestHideSelf(0 /* flags */),
true /* expected */,
false /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isFalse();
-
- // IME request to show itself with flag SHOW_IMPLICIT, expect shown.
- Log.i(TAG, "Call IMS#requestShowSelf(InputMethodManager.SHOW_IMPLICIT)");
- verifyInputViewStatusOnMainSync(
- () -> mInputMethodService.requestShowSelf(InputMethodManager.SHOW_IMPLICIT),
- true /* expected */,
- true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
+ if (mFlagsValueProvider.getBoolean(Flags.FLAG_REFACTOR_INSETS_CONTROLLER)) {
+ // The IME visibility is only sent at the end of the animation. Therefore, we have to
+ // wait until the visibility was sent to the server and the IME window hidden.
+ eventually(() -> assertWithMessage("IME is not shown")
+ .that(mInputMethodService.isInputViewShown()).isFalse());
+ } else {
+ assertWithMessage("IME is not shown")
+ .that(mInputMethodService.isInputViewShown()).isFalse();
+ }
- // IME request to hide itself with flag HIDE_IMPLICIT_ONLY, expect hidden.
- Log.i(TAG, "Call IMS#requestHideSelf(InputMethodManager.HIDE_IMPLICIT_ONLY)");
- verifyInputViewStatusOnMainSync(
- () -> mInputMethodService.requestHideSelf(InputMethodManager.HIDE_IMPLICIT_ONLY),
- true /* expected */,
- false /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isFalse();
+ if (!mFlagsValueProvider.getBoolean(Flags.FLAG_REFACTOR_INSETS_CONTROLLER)) {
+ // IME request to show itself with flag SHOW_IMPLICIT, expect shown.
+ Log.i(TAG, "Call IMS#requestShowSelf(InputMethodManager.SHOW_IMPLICIT)");
+ verifyInputViewStatusOnMainSync(
+ () -> mInputMethodService.requestShowSelf(InputMethodManager.SHOW_IMPLICIT),
+ true /* expected */,
+ true /* inputViewStarted */);
+ assertWithMessage("IME is shown with SHOW_IMPLICIT")
+ .that(mInputMethodService.isInputViewShown()).isTrue();
+
+ // IME request to hide itself with flag HIDE_IMPLICIT_ONLY, expect hidden.
+ Log.i(TAG, "Call IMS#requestHideSelf(InputMethodManager.HIDE_IMPLICIT_ONLY)");
+ verifyInputViewStatusOnMainSync(
+ () -> mInputMethodService.requestHideSelf(
+ InputMethodManager.HIDE_IMPLICIT_ONLY),
+ true /* expected */,
+ false /* inputViewStarted */);
+ assertWithMessage("IME is not shown after HIDE_IMPLICIT_ONLY")
+ .that(mInputMethodService.isInputViewShown()).isFalse();
+ }
}
/**
@@ -261,53 +326,67 @@ public class InputMethodServiceTest {
* when show_ime_with_hard_keyboard is enabled.
*/
@Test
- public void testOnEvaluateInputViewShown_showImeWithHardKeyboard() throws Exception {
+ public void testOnEvaluateInputViewShown_showImeWithHardKeyboard() {
setShowImeWithHardKeyboard(true /* enabled */);
- mInputMethodService.getResources().getConfiguration().keyboard =
- Configuration.KEYBOARD_QWERTY;
- mInputMethodService.getResources().getConfiguration().hardKeyboardHidden =
- Configuration.HARDKEYBOARDHIDDEN_NO;
- eventually(() -> assertThat(mInputMethodService.onEvaluateInputViewShown()).isTrue());
-
- mInputMethodService.getResources().getConfiguration().keyboard =
- Configuration.KEYBOARD_NOKEYS;
- mInputMethodService.getResources().getConfiguration().hardKeyboardHidden =
- Configuration.HARDKEYBOARDHIDDEN_NO;
- eventually(() -> assertThat(mInputMethodService.onEvaluateInputViewShown()).isTrue());
-
- mInputMethodService.getResources().getConfiguration().keyboard =
- Configuration.KEYBOARD_QWERTY;
- mInputMethodService.getResources().getConfiguration().hardKeyboardHidden =
- Configuration.HARDKEYBOARDHIDDEN_YES;
- eventually(() -> assertThat(mInputMethodService.onEvaluateInputViewShown()).isTrue());
+ final var config = mInputMethodService.getResources().getConfiguration();
+ final var initialConfig = new Configuration(config);
+ try {
+ config.keyboard = Configuration.KEYBOARD_QWERTY;
+ config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_NO;
+ eventually(() ->
+ assertWithMessage("InputView should show with visible hardware keyboard")
+ .that(mInputMethodService.onEvaluateInputViewShown()).isTrue());
+
+ config.keyboard = Configuration.KEYBOARD_NOKEYS;
+ config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_NO;
+ eventually(() ->
+ assertWithMessage("InputView should show without hardware keyboard")
+ .that(mInputMethodService.onEvaluateInputViewShown()).isTrue());
+
+ config.keyboard = Configuration.KEYBOARD_QWERTY;
+ config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_YES;
+ eventually(() ->
+ assertWithMessage("InputView should show with hidden hardware keyboard")
+ .that(mInputMethodService.onEvaluateInputViewShown()).isTrue());
+ } finally {
+ mInputMethodService.getResources()
+ .updateConfiguration(initialConfig, null /* metrics */, null /* compat */);
+ }
}
/**
- * This checks the return value of IMSonEvaluateInputViewShown,
+ * This checks the return value of IMS#onEvaluateInputViewShown,
* when show_ime_with_hard_keyboard is disabled.
*/
@Test
- public void testOnEvaluateInputViewShown_disableShowImeWithHardKeyboard() throws Exception {
+ public void testOnEvaluateInputViewShown_disableShowImeWithHardKeyboard() {
setShowImeWithHardKeyboard(false /* enabled */);
- mInputMethodService.getResources().getConfiguration().keyboard =
- Configuration.KEYBOARD_QWERTY;
- mInputMethodService.getResources().getConfiguration().hardKeyboardHidden =
- Configuration.HARDKEYBOARDHIDDEN_NO;
- eventually(() -> assertThat(mInputMethodService.onEvaluateInputViewShown()).isFalse());
-
- mInputMethodService.getResources().getConfiguration().keyboard =
- Configuration.KEYBOARD_NOKEYS;
- mInputMethodService.getResources().getConfiguration().hardKeyboardHidden =
- Configuration.HARDKEYBOARDHIDDEN_NO;
- eventually(() -> assertThat(mInputMethodService.onEvaluateInputViewShown()).isTrue());
-
- mInputMethodService.getResources().getConfiguration().keyboard =
- Configuration.KEYBOARD_QWERTY;
- mInputMethodService.getResources().getConfiguration().hardKeyboardHidden =
- Configuration.HARDKEYBOARDHIDDEN_YES;
- eventually(() -> assertThat(mInputMethodService.onEvaluateInputViewShown()).isTrue());
+ final var config = mInputMethodService.getResources().getConfiguration();
+ final var initialConfig = new Configuration(config);
+ try {
+ config.keyboard = Configuration.KEYBOARD_QWERTY;
+ config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_NO;
+ eventually(() ->
+ assertWithMessage("InputView should not show with visible hardware keyboard")
+ .that(mInputMethodService.onEvaluateInputViewShown()).isFalse());
+
+ config.keyboard = Configuration.KEYBOARD_NOKEYS;
+ config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_NO;
+ eventually(() ->
+ assertWithMessage("InputView should show without hardware keyboard")
+ .that(mInputMethodService.onEvaluateInputViewShown()).isTrue());
+
+ config.keyboard = Configuration.KEYBOARD_QWERTY;
+ config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_YES;
+ eventually(() ->
+ assertWithMessage("InputView should show with hidden hardware keyboard")
+ .that(mInputMethodService.onEvaluateInputViewShown()).isTrue());
+ } finally {
+ mInputMethodService.getResources()
+ .updateConfiguration(initialConfig, null /* metrics */, null /* compat */);
+ }
}
/**
@@ -315,51 +394,60 @@ public class InputMethodServiceTest {
* when IMS#onEvaluateInputViewShown returns false, results in the IME not being shown.
*/
@Test
- public void testShowSoftInput_disableShowImeWithHardKeyboard() throws Exception {
+ public void testShowSoftInput_disableShowImeWithHardKeyboard() {
setShowImeWithHardKeyboard(false /* enabled */);
- // Simulate connecting a hard keyboard.
- mInputMethodService.getResources().getConfiguration().keyboard =
- Configuration.KEYBOARD_QWERTY;
- mInputMethodService.getResources().getConfiguration().hardKeyboardHidden =
- Configuration.HARDKEYBOARDHIDDEN_NO;
-
- // When InputMethodService#onEvaluateInputViewShown() returns false, the Ime should not be
- // shown no matter what the show flag is.
- verifyInputViewStatusOnMainSync(() -> assertThat(
- mActivity.showImeWithInputMethodManager(InputMethodManager.SHOW_IMPLICIT)).isTrue(),
- false /* expected */,
- false /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isFalse();
+ final var config = mInputMethodService.getResources().getConfiguration();
+ final var initialConfig = new Configuration(config);
+ try {
+ // Simulate connecting a hardware keyboard.
+ config.keyboard = Configuration.KEYBOARD_QWERTY;
+ config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_NO;
+
+ // When InputMethodService#onEvaluateInputViewShown() returns false, the IME should
+ // not be shown no matter what the show flag is.
+ verifyInputViewStatusOnMainSync(() -> assertThat(
+ mActivity.showImeWithInputMethodManager(
+ InputMethodManager.SHOW_IMPLICIT)).isTrue(),
+ false /* expected */,
+ false /* inputViewStarted */);
+ assertWithMessage("IME is not shown after SHOW_IMPLICIT")
+ .that(mInputMethodService.isInputViewShown()).isFalse();
- verifyInputViewStatusOnMainSync(
- () -> assertThat(mActivity.showImeWithInputMethodManager(0 /* flags */)).isTrue(),
- false /* expected */,
- false /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isFalse();
+ verifyInputViewStatusOnMainSync(
+ () -> assertThat(mActivity.showImeWithInputMethodManager(0 /* flags */))
+ .isTrue(),
+ false /* expected */,
+ false /* inputViewStarted */);
+ assertWithMessage("IME is not shown after SHOW_EXPLICIT")
+ .that(mInputMethodService.isInputViewShown()).isFalse();
+ } finally {
+ mInputMethodService.getResources()
+ .updateConfiguration(initialConfig, null /* metrics */, null /* compat */);
+ }
}
/**
* This checks that an explicit show request results in the IME being shown.
*/
@Test
- public void testShowSoftInputExplicitly() throws Exception {
+ public void testShowSoftInputExplicitly() {
setShowImeWithHardKeyboard(true /* enabled */);
// When InputMethodService#onEvaluateInputViewShown() returns true and flag is EXPLICIT, the
- // Ime should be shown.
+ // IME should be shown.
verifyInputViewStatusOnMainSync(
() -> assertThat(mActivity.showImeWithInputMethodManager(0 /* flags */)).isTrue(),
true /* expected */,
true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
+ assertWithMessage("IME is shown").that(mInputMethodService.isInputViewShown()).isTrue();
}
/**
* This checks that an implicit show request results in the IME being shown.
*/
@Test
- public void testShowSoftInputImplicitly() throws Exception {
+ public void testShowSoftInputImplicitly() {
setShowImeWithHardKeyboard(true /* enabled */);
// When InputMethodService#onEvaluateInputViewShown() returns true and flag is IMPLICIT,
@@ -368,7 +456,7 @@ public class InputMethodServiceTest {
mActivity.showImeWithInputMethodManager(InputMethodManager.SHOW_IMPLICIT)).isTrue(),
true /* expected */,
true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
+ assertWithMessage("IME is shown").that(mInputMethodService.isInputViewShown()).isTrue();
}
/**
@@ -376,194 +464,216 @@ public class InputMethodServiceTest {
* and it should be shown in fullscreen mode, results in the IME being shown.
*/
@Test
- public void testShowSoftInputExplicitly_fullScreenMode() throws Exception {
+ public void testShowSoftInputExplicitly_fullScreenMode() {
setShowImeWithHardKeyboard(true /* enabled */);
// Set orientation landscape to enable fullscreen mode.
setOrientation(2);
- eventually(() -> assertThat(mUiDevice.isNaturalOrientation()).isFalse());
+ eventually(() -> assertWithMessage("No longer in natural orientation")
+ .that(mUiDevice.isNaturalOrientation()).isFalse());
// Wait for the TestActivity to be recreated.
- eventually(() ->
- assertThat(TestActivity.getLastCreatedInstance()).isNotEqualTo(mActivity));
+ eventually(() -> assertWithMessage("Activity was re-created after rotation")
+ .that(TestActivity.getLastCreatedInstance()).isNotEqualTo(mActivity));
// Get the new TestActivity.
mActivity = TestActivity.getLastCreatedInstance();
- assertThat(mActivity).isNotNull();
- InputMethodManager imm = mContext.getSystemService(InputMethodManager.class);
+ assertWithMessage("Re-created activity is not null").that(mActivity).isNotNull();
// Wait for the new EditText to be served by InputMethodManager.
- eventually(() -> assertThat(
- imm.hasActiveInputConnection(mActivity.getEditText())).isTrue());
+ eventually(() -> assertWithMessage("Has an input connection to the re-created Activity")
+ .that(mImm.hasActiveInputConnection(mActivity.getEditText())).isTrue());
verifyInputViewStatusOnMainSync(() -> assertThat(
mActivity.showImeWithInputMethodManager(0 /* flags */)).isTrue(),
true /* expected */,
true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
+ assertWithMessage("IME is shown").that(mInputMethodService.isInputViewShown()).isTrue();
}
/**
* This checks that an implicit show request when the IME is not previously shown,
* and it should be shown in fullscreen mode, results in the IME not being shown.
*
- * With the refactor in b/298172246, all calls from InputMethodManager#{show,hide}SoftInput
+ * <p>With the refactor in b/298172246, all calls from InputMethodManager#{show,hide}SoftInput
* will be redirected to InsetsController#{show,hide}. Therefore, we will lose flags like
* SHOW_IMPLICIT.
*/
@Test
@RequiresFlagsDisabled(Flags.FLAG_REFACTOR_INSETS_CONTROLLER)
- public void testShowSoftInputImplicitly_fullScreenMode() throws Exception {
+ public void testShowSoftInputImplicitly_fullScreenMode() {
setShowImeWithHardKeyboard(true /* enabled */);
// Set orientation landscape to enable fullscreen mode.
setOrientation(2);
- eventually(() -> assertThat(mUiDevice.isNaturalOrientation()).isFalse());
+ eventually(() -> assertWithMessage("No longer in natural orientation")
+ .that(mUiDevice.isNaturalOrientation()).isFalse());
// Wait for the TestActivity to be recreated.
- eventually(() ->
- assertThat(TestActivity.getLastCreatedInstance()).isNotEqualTo(mActivity));
+ eventually(() -> assertWithMessage("Activity was re-created after rotation")
+ .that(TestActivity.getLastCreatedInstance()).isNotEqualTo(mActivity));
// Get the new TestActivity.
mActivity = TestActivity.getLastCreatedInstance();
- assertThat(mActivity).isNotNull();
- InputMethodManager imm = mContext.getSystemService(InputMethodManager.class);
+ assertWithMessage("Re-created activity is not null").that(mActivity).isNotNull();
// Wait for the new EditText to be served by InputMethodManager.
- eventually(() -> assertThat(
- imm.hasActiveInputConnection(mActivity.getEditText())).isTrue());
+ eventually(() -> assertWithMessage("Has an input connection to the re-created Activity")
+ .that(mImm.hasActiveInputConnection(mActivity.getEditText())).isTrue());
verifyInputViewStatusOnMainSync(() -> assertThat(
mActivity.showImeWithInputMethodManager(InputMethodManager.SHOW_IMPLICIT)).isTrue(),
false /* expected */,
false /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isFalse();
+ assertWithMessage("IME is not shown")
+ .that(mInputMethodService.isInputViewShown()).isFalse();
}
/**
- * This checks that an explicit show request when a hard keyboard is connected,
+ * This checks that an explicit show request when a hardware keyboard is connected,
* results in the IME being shown.
*/
@Test
- public void testShowSoftInputExplicitly_withHardKeyboard() throws Exception {
+ public void testShowSoftInputExplicitly_withHardKeyboard() {
setShowImeWithHardKeyboard(false /* enabled */);
- // Simulate connecting a hard keyboard.
- mInputMethodService.getResources().getConfiguration().keyboard =
- Configuration.KEYBOARD_QWERTY;
- mInputMethodService.getResources().getConfiguration().hardKeyboardHidden =
- Configuration.HARDKEYBOARDHIDDEN_YES;
+ final var config = mInputMethodService.getResources().getConfiguration();
+ final var initialConfig = new Configuration(config);
+ try {
+ // Simulate connecting a hardware keyboard.
+ config.keyboard = Configuration.KEYBOARD_QWERTY;
+ config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_YES;
- verifyInputViewStatusOnMainSync(() -> assertThat(
- mActivity.showImeWithInputMethodManager(0 /* flags */)).isTrue(),
- true /* expected */,
- true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
+ verifyInputViewStatusOnMainSync(() -> assertThat(
+ mActivity.showImeWithInputMethodManager(0 /* flags */)).isTrue(),
+ true /* expected */,
+ true /* inputViewStarted */);
+ assertWithMessage("IME is shown").that(mInputMethodService.isInputViewShown()).isTrue();
+ } finally {
+ mInputMethodService.getResources()
+ .updateConfiguration(initialConfig, null /* metrics */, null /* compat */);
+ }
}
/**
- * This checks that an implicit show request when a hard keyboard is connected,
+ * This checks that an implicit show request when a hardware keyboard is connected,
* results in the IME not being shown.
*
- * With the refactor in b/298172246, all calls from InputMethodManager#{show,hide}SoftInput
+ * <p>With the refactor in b/298172246, all calls from InputMethodManager#{show,hide}SoftInput
* will be redirected to InsetsController#{show,hide}. Therefore, we will lose flags like
* SHOW_IMPLICIT.
*/
@Test
@RequiresFlagsDisabled(Flags.FLAG_REFACTOR_INSETS_CONTROLLER)
- public void testShowSoftInputImplicitly_withHardKeyboard() throws Exception {
+ public void testShowSoftInputImplicitly_withHardKeyboard() {
setShowImeWithHardKeyboard(false /* enabled */);
- // Simulate connecting a hard keyboard.
- mInputMethodService.getResources().getConfiguration().keyboard =
- Configuration.KEYBOARD_QWERTY;
- mInputMethodService.getResources().getConfiguration().hardKeyboardHidden =
- Configuration.HARDKEYBOARDHIDDEN_YES;
-
- verifyInputViewStatusOnMainSync(() -> assertThat(
- mActivity.showImeWithInputMethodManager(InputMethodManager.SHOW_IMPLICIT)).isTrue(),
- false /* expected */,
- false /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isFalse();
+ final var config = mInputMethodService.getResources().getConfiguration();
+ final var initialConfig = new Configuration(config);
+ try {
+ // Simulate connecting a hardware keyboard.
+ config.keyboard = Configuration.KEYBOARD_QWERTY;
+ config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_YES;
+
+ verifyInputViewStatusOnMainSync(() ->assertThat(
+ mActivity.showImeWithInputMethodManager(InputMethodManager.SHOW_IMPLICIT))
+ .isTrue(),
+ false /* expected */,
+ false /* inputViewStarted */);
+ assertWithMessage("IME is not shown")
+ .that(mInputMethodService.isInputViewShown()).isFalse();
+ } finally {
+ mInputMethodService.getResources()
+ .updateConfiguration(initialConfig, null /* metrics */, null /* compat */);
+ }
}
/**
- * This checks that an explicit show request followed by connecting a hard keyboard
+ * This checks that an explicit show request followed by connecting a hardware keyboard
* and a configuration change, still results in the IME being shown.
*/
@Test
- public void testShowSoftInputExplicitly_thenConfigurationChanged() throws Exception {
+ public void testShowSoftInputExplicitly_thenConfigurationChanged() {
setShowImeWithHardKeyboard(false /* enabled */);
- // Start with no hard keyboard.
- mInputMethodService.getResources().getConfiguration().keyboard =
- Configuration.KEYBOARD_NOKEYS;
- mInputMethodService.getResources().getConfiguration().hardKeyboardHidden =
- Configuration.HARDKEYBOARDHIDDEN_YES;
+ final var config = mInputMethodService.getResources().getConfiguration();
+ final var initialConfig = new Configuration(config);
+ try {
+ // Start with no hardware keyboard.
+ config.keyboard = Configuration.KEYBOARD_NOKEYS;
+ config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_YES;
- verifyInputViewStatusOnMainSync(
- () -> assertThat(mActivity.showImeWithInputMethodManager(0 /* flags */)).isTrue(),
- true /* expected */,
- true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
+ verifyInputViewStatusOnMainSync(
+ () -> assertThat(mActivity.showImeWithInputMethodManager(0 /* flags */))
+ .isTrue(),
+ true /* expected */,
+ true /* inputViewStarted */);
+ assertWithMessage("IME is shown").that(mInputMethodService.isInputViewShown()).isTrue();
- // Simulate connecting a hard keyboard.
- mInputMethodService.getResources().getConfiguration().keyboard =
- Configuration.KEYBOARD_QWERTY;
- mInputMethodService.getResources().getConfiguration().hardKeyboardHidden =
- Configuration.HARDKEYBOARDHIDDEN_YES;
+ // Simulate connecting a hardware keyboard.
+ config.keyboard = Configuration.KEYBOARD_QWERTY;
+ config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_YES;
- // Simulate a fake configuration change to avoid triggering the recreation of TestActivity.
- mInputMethodService.getResources().getConfiguration().orientation =
- Configuration.ORIENTATION_LANDSCAPE;
+ // Simulate a fake configuration change to avoid the recreation of TestActivity.
+ config.orientation = Configuration.ORIENTATION_LANDSCAPE;
- verifyInputViewStatusOnMainSync(() -> mInputMethodService.onConfigurationChanged(
- mInputMethodService.getResources().getConfiguration()),
- true /* expected */,
- true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
+ verifyInputViewStatusOnMainSync(
+ () -> mInputMethodService.onConfigurationChanged(config),
+ true /* expected */,
+ true /* inputViewStarted */);
+ assertWithMessage("IME is still shown after a configuration change")
+ .that(mInputMethodService.isInputViewShown()).isTrue();
+ } finally {
+ mInputMethodService.getResources()
+ .updateConfiguration(initialConfig, null /* metrics */, null /* compat */);
+ }
}
/**
- * This checks that an implicit show request followed by connecting a hard keyboard
+ * This checks that an implicit show request followed by connecting a hardware keyboard
* and a configuration change, does not trigger IMS#onFinishInputView,
* but results in the IME being hidden.
*
- * With the refactor in b/298172246, all calls from InputMethodManager#{show,hide}SoftInput
+ * <p>With the refactor in b/298172246, all calls from InputMethodManager#{show,hide}SoftInput
* will be redirected to InsetsController#{show,hide}. Therefore, we will lose flags like
* SHOW_IMPLICIT.
*/
@Test
@RequiresFlagsDisabled(Flags.FLAG_REFACTOR_INSETS_CONTROLLER)
- public void testShowSoftInputImplicitly_thenConfigurationChanged() throws Exception {
+ public void testShowSoftInputImplicitly_thenConfigurationChanged() {
setShowImeWithHardKeyboard(false /* enabled */);
- // Start with no hard keyboard.
- mInputMethodService.getResources().getConfiguration().keyboard =
- Configuration.KEYBOARD_NOKEYS;
- mInputMethodService.getResources().getConfiguration().hardKeyboardHidden =
- Configuration.HARDKEYBOARDHIDDEN_YES;
+ final var config = mInputMethodService.getResources().getConfiguration();
+ final var initialConfig = new Configuration(config);
+ try {
+ // Start with no hardware keyboard.
+ config.keyboard = Configuration.KEYBOARD_NOKEYS;
+ config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_YES;
- verifyInputViewStatusOnMainSync(() -> assertThat(
- mActivity.showImeWithInputMethodManager(InputMethodManager.SHOW_IMPLICIT)).isTrue(),
- true /* expected */,
- true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
-
- // Simulate connecting a hard keyboard.
- mInputMethodService.getResources().getConfiguration().keyboard =
- Configuration.KEYBOARD_QWERTY;
- mInputMethodService.getResources().getConfiguration().keyboard =
- Configuration.HARDKEYBOARDHIDDEN_YES;
-
- // Simulate a fake configuration change to avoid triggering the recreation of TestActivity.
- mInputMethodService.getResources().getConfiguration().orientation =
- Configuration.ORIENTATION_LANDSCAPE;
-
- // Normally, IMS#onFinishInputView will be called when finishing the input view by the user.
- // But if IMS#hideWindow is called when receiving a new configuration change, we don't
- // expect that it's user-driven to finish the lifecycle of input view with
- // IMS#onFinishInputView, because the input view will be re-initialized according to the
- // last #mShowInputRequested state. So in this case we treat the input view as still alive.
- verifyInputViewStatusOnMainSync(() -> mInputMethodService.onConfigurationChanged(
- mInputMethodService.getResources().getConfiguration()),
- true /* expected */,
- true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isFalse();
+ verifyInputViewStatusOnMainSync(() -> assertThat(
+ mActivity.showImeWithInputMethodManager(
+ InputMethodManager.SHOW_IMPLICIT)).isTrue(),
+ true /* expected */,
+ true /* inputViewStarted */);
+ assertWithMessage("IME is shown").that(mInputMethodService.isInputViewShown()).isTrue();
+
+ // Simulate connecting a hardware keyboard.
+ config.keyboard = Configuration.KEYBOARD_QWERTY;
+ config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_YES;
+
+ // Simulate a fake configuration change to avoid the recreation of TestActivity.
+ config.orientation = Configuration.ORIENTATION_LANDSCAPE;
+
+ // Normally, IMS#onFinishInputView will be called when finishing the input view by
+ // the user. But if IMS#hideWindow is called when receiving a new configuration change,
+ // we don't expect that it's user-driven to finish the lifecycle of input view with
+ // IMS#onFinishInputView, because the input view will be re-initialized according
+ // to the last #mShowInputRequested state. So in this case we treat the input view as
+ // still alive.
+ verifyInputViewStatusOnMainSync(
+ () -> mInputMethodService.onConfigurationChanged(config),
+ true /* expected */,
+ true /* inputViewStarted */);
+ assertWithMessage("IME is not shown after a configuration change")
+ .that(mInputMethodService.isInputViewShown()).isFalse();
+ } finally {
+ mInputMethodService.getResources()
+ .updateConfiguration(initialConfig, null /* metrics */, null /* compat */);
+ }
}
/**
@@ -572,38 +682,45 @@ public class InputMethodServiceTest {
* (i.e. the implicit show request is treated as explicit).
*/
@Test
- public void testShowSoftInputExplicitly_thenShowSoftInputImplicitly_withHardKeyboard()
- throws Exception {
+ public void testShowSoftInputExplicitly_thenShowSoftInputImplicitly_withHardKeyboard() {
setShowImeWithHardKeyboard(false /* enabled */);
- // Simulate connecting a hard keyboard.
- mInputMethodService.getResources().getConfiguration().keyboard =
- Configuration.KEYBOARD_QWERTY;
- mInputMethodService.getResources().getConfiguration().hardKeyboardHidden =
- Configuration.HARDKEYBOARDHIDDEN_YES;
-
- // Explicit show request.
- verifyInputViewStatusOnMainSync(() -> assertThat(
- mActivity.showImeWithInputMethodManager(0 /* flags */)).isTrue(),
- true /* expected */,
- true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
-
- // Implicit show request.
- verifyInputViewStatusOnMainSync(() -> assertThat(
- mActivity.showImeWithInputMethodManager(InputMethodManager.SHOW_IMPLICIT)).isTrue(),
- false /* expected */,
- true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
+ final var config = mInputMethodService.getResources().getConfiguration();
+ final var initialConfig = new Configuration(config);
+ try {
+ // Simulate connecting a hardware keyboard.
+ config.keyboard = Configuration.KEYBOARD_QWERTY;
+ config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_YES;
- // Simulate a fake configuration change to avoid triggering the recreation of TestActivity.
- // This should now consider the implicit show request, but keep the state from the
- // explicit show request, and thus not hide the keyboard.
- verifyInputViewStatusOnMainSync(() -> mInputMethodService.onConfigurationChanged(
- mInputMethodService.getResources().getConfiguration()),
- true /* expected */,
- true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
+ // Explicit show request.
+ verifyInputViewStatusOnMainSync(() -> assertThat(
+ mActivity.showImeWithInputMethodManager(0 /* flags */)).isTrue(),
+ true /* expected */,
+ true /* inputViewStarted */);
+ assertWithMessage("IME is shown").that(mInputMethodService.isInputViewShown()).isTrue();
+
+ // Implicit show request.
+ verifyInputViewStatusOnMainSync(() -> assertThat(
+ mActivity.showImeWithInputMethodManager(
+ InputMethodManager.SHOW_IMPLICIT)).isTrue(),
+ false /* expected */,
+ true /* inputViewStarted */);
+ assertWithMessage("IME is still shown")
+ .that(mInputMethodService.isInputViewShown()).isTrue();
+
+ // Simulate a fake configuration change to avoid the recreation of TestActivity.
+ // This should now consider the implicit show request, but keep the state from the
+ // explicit show request, and thus not hide the IME.
+ verifyInputViewStatusOnMainSync(
+ () -> mInputMethodService.onConfigurationChanged(config),
+ true /* expected */,
+ true /* inputViewStarted */);
+ assertWithMessage("IME is still shown after a configuration change")
+ .that(mInputMethodService.isInputViewShown()).isTrue();
+ } finally {
+ mInputMethodService.getResources()
+ .updateConfiguration(initialConfig, null /* metrics */, null /* compat */);
+ }
}
/**
@@ -611,40 +728,42 @@ public class InputMethodServiceTest {
* and then a hide not always request, still results in the IME being shown
* (i.e. the explicit show request retains the forced state).
*
- * With the refactor in b/298172246, all calls from InputMethodManager#{show,hide}SoftInput
+ * <p>With the refactor in b/298172246, all calls from InputMethodManager#{show,hide}SoftInput
* will be redirected to InsetsController#{show,hide}. Therefore, we will lose flags like
* HIDE_NOT_ALWAYS.
*/
@Test
@RequiresFlagsDisabled(Flags.FLAG_REFACTOR_INSETS_CONTROLLER)
- public void testShowSoftInputForced_testShowSoftInputExplicitly_thenHideSoftInputNotAlways()
- throws Exception {
+ public void testShowSoftInputForced_testShowSoftInputExplicitly_thenHideSoftInputNotAlways() {
setShowImeWithHardKeyboard(true /* enabled */);
verifyInputViewStatusOnMainSync(() -> assertThat(
mActivity.showImeWithInputMethodManager(InputMethodManager.SHOW_FORCED)).isTrue(),
true /* expected */,
true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
+ assertWithMessage("IME is shown").that(mInputMethodService.isInputViewShown()).isTrue();
verifyInputViewStatusOnMainSync(() -> assertThat(
mActivity.showImeWithInputMethodManager(0 /* flags */)).isTrue(),
false /* expected */,
true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
+ assertWithMessage("IME is still shown")
+ .that(mInputMethodService.isInputViewShown()).isTrue();
- verifyInputViewStatusOnMainSync(() ->
- mActivity.hideImeWithInputMethodManager(InputMethodManager.HIDE_NOT_ALWAYS),
+ verifyInputViewStatusOnMainSync(() -> assertThat(
+ mActivity.hideImeWithInputMethodManager(InputMethodManager.HIDE_NOT_ALWAYS))
+ .isTrue(),
false /* expected */,
true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
+ assertWithMessage("IME is still shown after HIDE_NOT_ALWAYS")
+ .that(mInputMethodService.isInputViewShown()).isTrue();
}
/**
* This checks that the IME fullscreen mode state is updated after changing orientation.
*/
@Test
- public void testFullScreenMode() throws Exception {
+ public void testFullScreenMode() {
setShowImeWithHardKeyboard(true /* enabled */);
Log.i(TAG, "Set orientation natural");
@@ -668,13 +787,13 @@ public class InputMethodServiceTest {
* then the IME caption bar is also not created.
*/
@Test
- public void testNoNavigationBar_thenImeNoCaptionBar() throws Exception {
- boolean hasNavigationBar = WindowManagerGlobal.getWindowManagerService()
- .hasNavigationBar(mInputMethodService.getDisplayId());
- assumeFalse("Must not have a navigation bar", hasNavigationBar);
+ public void testNoNavigationBar_thenImeNoCaptionBar() {
+ assumeFalse("Must not have a navigation bar", hasNavigationBar());
- assertEquals(Insets.NONE, mInputMethodService.getWindow().getWindow().getDecorView()
- .getRootWindowInsets().getInsetsIgnoringVisibility(captionBar()));
+ assertWithMessage("No IME caption bar insets")
+ .that(mInputMethodService.getWindow().getWindow().getDecorView()
+ .getRootWindowInsets().getInsetsIgnoringVisibility(captionBar()))
+ .isEqualTo(Insets.NONE);
}
/**
@@ -682,112 +801,106 @@ public class InputMethodServiceTest {
* when the IME does draw the IME navigation bar.
*/
@Test
- public void testShowHideImeNavigationBar_doesDrawImeNavBar() throws Exception {
- boolean hasNavigationBar = WindowManagerGlobal.getWindowManagerService()
- .hasNavigationBar(mInputMethodService.getDisplayId());
- assumeTrue("Must have a navigation bar", hasNavigationBar);
+ public void testShowHideImeNavigationBar_doesDrawImeNavBar() {
+ assumeTrue("Must have a navigation bar", hasNavigationBar());
setShowImeWithHardKeyboard(true /* enabled */);
// Show IME
verifyInputViewStatusOnMainSync(
() -> {
- mInputMethodService.getInputMethodInternal().onNavButtonFlagsChanged(
- InputMethodNavButtonFlags.IME_DRAWS_IME_NAV_BAR
- | InputMethodNavButtonFlags.SHOW_IME_SWITCHER_WHEN_IME_IS_SHOWN
- );
- assertThat(mActivity.showImeWithInputMethodManager(0 /* flags */)).isTrue();
+ setDrawsImeNavBarAndSwitcherButton(true /* enabled */);
+ mActivity.showImeWithWindowInsetsController();
},
true /* expected */,
true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
- assertThat(mInputMethodService.isImeNavigationBarShownForTesting()).isTrue();
+ assertWithMessage("IME is shown").that(mInputMethodService.isInputViewShown()).isTrue();
+ assertWithMessage("IME navigation bar is initially shown")
+ .that(mInputMethodService.isImeNavigationBarShownForTesting()).isTrue();
// Try to hide IME nav bar
- mInstrumentation.runOnMainSync(() -> mInputMethodService.getWindow().getWindow()
- .getInsetsController().hide(captionBar()));
+ mInstrumentation.runOnMainSync(() -> setShowImeNavigationBar(false /* show */));
mInstrumentation.waitForIdleSync();
- assertThat(mInputMethodService.isImeNavigationBarShownForTesting()).isFalse();
+ assertWithMessage("IME navigation bar is not shown after hide request")
+ .that(mInputMethodService.isImeNavigationBarShownForTesting()).isFalse();
// Try to show IME nav bar
- mInstrumentation.runOnMainSync(() -> mInputMethodService.getWindow().getWindow()
- .getInsetsController().show(captionBar()));
+ mInstrumentation.runOnMainSync(() -> setShowImeNavigationBar(true /* show */));
mInstrumentation.waitForIdleSync();
- assertThat(mInputMethodService.isImeNavigationBarShownForTesting()).isTrue();
+ assertWithMessage("IME navigation bar is shown after show request")
+ .that(mInputMethodService.isImeNavigationBarShownForTesting()).isTrue();
}
+
/**
* This checks that trying to show and hide the navigation bar has no effect
* when the IME does not draw the IME navigation bar.
*
- * Note: The IME navigation bar is *never* visible in 3 button navigation mode.
+ * <p>Note: The IME navigation bar is *never* visible in 3 button navigation mode.
*/
@Test
- public void testShowHideImeNavigationBar_doesNotDrawImeNavBar() throws Exception {
- boolean hasNavigationBar = WindowManagerGlobal.getWindowManagerService()
- .hasNavigationBar(mInputMethodService.getDisplayId());
- assumeTrue("Must have a navigation bar", hasNavigationBar);
+ public void testShowHideImeNavigationBar_doesNotDrawImeNavBar() {
+ assumeTrue("Must have a navigation bar", hasNavigationBar());
setShowImeWithHardKeyboard(true /* enabled */);
// Show IME
- verifyInputViewStatusOnMainSync(() -> {
- mInputMethodService.getInputMethodInternal().onNavButtonFlagsChanged(
- 0 /* navButtonFlags */);
- assertThat(mActivity.showImeWithInputMethodManager(0 /* flags */)).isTrue();
- },
+ verifyInputViewStatusOnMainSync(
+ () -> {
+ setDrawsImeNavBarAndSwitcherButton(false /* enabled */);
+ mActivity.showImeWithWindowInsetsController();
+ },
true /* expected */,
true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
- assertThat(mInputMethodService.isImeNavigationBarShownForTesting()).isFalse();
+ assertWithMessage("IME is shown").that(mInputMethodService.isInputViewShown()).isTrue();
+ assertWithMessage("IME navigation bar is initially not shown")
+ .that(mInputMethodService.isImeNavigationBarShownForTesting()).isFalse();
// Try to hide IME nav bar
- mInstrumentation.runOnMainSync(() -> mInputMethodService.getWindow().getWindow()
- .getInsetsController().hide(captionBar()));
+ mInstrumentation.runOnMainSync(() -> setShowImeNavigationBar(false /* show */));
mInstrumentation.waitForIdleSync();
- assertThat(mInputMethodService.isImeNavigationBarShownForTesting()).isFalse();
+ assertWithMessage("IME navigation bar is not shown after hide request")
+ .that(mInputMethodService.isImeNavigationBarShownForTesting()).isFalse();
// Try to show IME nav bar
- mInstrumentation.runOnMainSync(() -> mInputMethodService.getWindow().getWindow()
- .getInsetsController().show(captionBar()));
+ mInstrumentation.runOnMainSync(() -> setShowImeNavigationBar(true /* show */));
mInstrumentation.waitForIdleSync();
- assertThat(mInputMethodService.isImeNavigationBarShownForTesting()).isFalse();
+ assertWithMessage("IME navigation bar is not shown after show request")
+ .that(mInputMethodService.isImeNavigationBarShownForTesting()).isFalse();
}
/**
* Verifies that clicking on the IME navigation bar back button hides the IME.
*/
@Test
- public void testBackButtonClick() throws Exception {
- boolean hasNavigationBar = WindowManagerGlobal.getWindowManagerService()
- .hasNavigationBar(mInputMethodService.getDisplayId());
- assumeTrue("Must have a navigation bar", hasNavigationBar);
+ public void testBackButtonClick() {
+ assumeTrue("Must have a navigation bar", hasNavigationBar());
assumeTrue("Must be in gesture navigation mode", isGestureNavEnabled());
+ waitUntilActivityReadyForInputInjection(mActivity);
+
setShowImeWithHardKeyboard(true /* enabled */);
verifyInputViewStatusOnMainSync(
() -> {
- // Ensure the IME navigation bar and the IME switch button are drawn.
- mInputMethodService.getInputMethodInternal().onNavButtonFlagsChanged(
- InputMethodNavButtonFlags.IME_DRAWS_IME_NAV_BAR
- | InputMethodNavButtonFlags.SHOW_IME_SWITCHER_WHEN_IME_IS_SHOWN
- );
- assertThat(mActivity.showImeWithWindowInsetsController()).isTrue();
+ setDrawsImeNavBarAndSwitcherButton(true /* enabled */);
+ mActivity.showImeWithWindowInsetsController();
},
true /* expected */,
true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
+ assertWithMessage("IME is shown").that(mInputMethodService.isInputViewShown()).isTrue();
- final var backButtonUiObject = getUiObjectById(INPUT_METHOD_NAV_BACK_ID);
+ final var backButtonUiObject = getUiObject(By.res(INPUT_METHOD_NAV_BACK_ID));
backButtonUiObject.click();
mInstrumentation.waitForIdleSync();
if (mFlagsValueProvider.getBoolean(Flags.FLAG_REFACTOR_INSETS_CONTROLLER)) {
// The IME visibility is only sent at the end of the animation. Therefore, we have to
// wait until the visibility was sent to the server and the IME window hidden.
- eventually(() -> assertThat(mInputMethodService.isInputViewShown()).isFalse());
+ eventually(() -> assertWithMessage("IME is not shown")
+ .that(mInputMethodService.isInputViewShown()).isFalse());
} else {
- assertThat(mInputMethodService.isInputViewShown()).isFalse();
+ assertWithMessage("IME is not shown")
+ .that(mInputMethodService.isInputViewShown()).isFalse();
}
}
@@ -795,37 +908,35 @@ public class InputMethodServiceTest {
* Verifies that long clicking on the IME navigation bar back button hides the IME.
*/
@Test
- public void testBackButtonLongClick() throws Exception {
- boolean hasNavigationBar = WindowManagerGlobal.getWindowManagerService()
- .hasNavigationBar(mInputMethodService.getDisplayId());
- assumeTrue("Must have a navigation bar", hasNavigationBar);
+ public void testBackButtonLongClick() {
+ assumeTrue("Must have a navigation bar", hasNavigationBar());
assumeTrue("Must be in gesture navigation mode", isGestureNavEnabled());
+ waitUntilActivityReadyForInputInjection(mActivity);
+
setShowImeWithHardKeyboard(true /* enabled */);
verifyInputViewStatusOnMainSync(
() -> {
- // Ensure the IME navigation bar and the IME switch button are drawn.
- mInputMethodService.getInputMethodInternal().onNavButtonFlagsChanged(
- InputMethodNavButtonFlags.IME_DRAWS_IME_NAV_BAR
- | InputMethodNavButtonFlags.SHOW_IME_SWITCHER_WHEN_IME_IS_SHOWN
- );
- assertThat(mActivity.showImeWithWindowInsetsController()).isTrue();
+ setDrawsImeNavBarAndSwitcherButton(true /* enabled */);
+ mActivity.showImeWithWindowInsetsController();
},
true /* expected */,
true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
+ assertWithMessage("IME is shown").that(mInputMethodService.isInputViewShown()).isTrue();
- final var backButtonUiObject = getUiObjectById(INPUT_METHOD_NAV_BACK_ID);
+ final var backButtonUiObject = getUiObject(By.res(INPUT_METHOD_NAV_BACK_ID));
backButtonUiObject.longClick();
mInstrumentation.waitForIdleSync();
if (mFlagsValueProvider.getBoolean(Flags.FLAG_REFACTOR_INSETS_CONTROLLER)) {
// The IME visibility is only sent at the end of the animation. Therefore, we have to
// wait until the visibility was sent to the server and the IME window hidden.
- eventually(() -> assertThat(mInputMethodService.isInputViewShown()).isFalse());
+ eventually(() -> assertWithMessage("IME is not shown")
+ .that(mInputMethodService.isInputViewShown()).isFalse());
} else {
- assertThat(mInputMethodService.isInputViewShown()).isFalse();
+ assertWithMessage("IME is not shown")
+ .that(mInputMethodService.isInputViewShown()).isFalse();
}
}
@@ -834,43 +945,39 @@ public class InputMethodServiceTest {
* or switches the input method.
*/
@Test
- public void testImeSwitchButtonClick() throws Exception {
- boolean hasNavigationBar = WindowManagerGlobal.getWindowManagerService()
- .hasNavigationBar(mInputMethodService.getDisplayId());
- assumeTrue("Must have a navigation bar", hasNavigationBar);
+ public void testImeSwitchButtonClick() {
+ assumeTrue("Must have a navigation bar", hasNavigationBar());
assumeTrue("Must be in gesture navigation mode", isGestureNavEnabled());
+ waitUntilActivityReadyForInputInjection(mActivity);
+
setShowImeWithHardKeyboard(true /* enabled */);
verifyInputViewStatusOnMainSync(
() -> {
- // Ensure the IME navigation bar and the IME switch button are drawn.
- mInputMethodService.getInputMethodInternal().onNavButtonFlagsChanged(
- InputMethodNavButtonFlags.IME_DRAWS_IME_NAV_BAR
- | InputMethodNavButtonFlags.SHOW_IME_SWITCHER_WHEN_IME_IS_SHOWN
- );
- assertThat(mActivity.showImeWithWindowInsetsController()).isTrue();
+ setDrawsImeNavBarAndSwitcherButton(true /* enabled */);
+ mActivity.showImeWithWindowInsetsController();
},
true /* expected */,
true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
+ assertWithMessage("IME is shown").that(mInputMethodService.isInputViewShown()).isTrue();
- final var imm = mContext.getSystemService(InputMethodManager.class);
- final var initialInfo = imm.getCurrentInputMethodInfo();
+ final var initialInfo = mImm.getCurrentInputMethodInfo();
- final var imeSwitchButtonUiObject = getUiObjectById(INPUT_METHOD_NAV_IME_SWITCHER_ID);
+ final var imeSwitchButtonUiObject = getUiObject(By.res(INPUT_METHOD_NAV_IME_SWITCHER_ID));
imeSwitchButtonUiObject.click();
mInstrumentation.waitForIdleSync();
- final var newInfo = imm.getCurrentInputMethodInfo();
+ final var newInfo = mImm.getCurrentInputMethodInfo();
assertWithMessage("Input Method Switcher Menu is shown or input method was switched")
- .that(isInputMethodPickerShown(imm) || !Objects.equals(initialInfo, newInfo))
+ .that(isInputMethodPickerShown(mImm) || !Objects.equals(initialInfo, newInfo))
.isTrue();
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
+ assertWithMessage("IME is still shown after IME Switcher button was clicked")
+ .that(mInputMethodService.isInputViewShown()).isTrue();
- // Hide the Picker menu before finishing.
+ // Hide the IME Switcher Menu before finishing.
mUiDevice.pressBack();
}
@@ -878,58 +985,44 @@ public class InputMethodServiceTest {
* Verifies that long clicking on the IME switch button shows the Input Method Switcher Menu.
*/
@Test
- public void testImeSwitchButtonLongClick() throws Exception {
- boolean hasNavigationBar = WindowManagerGlobal.getWindowManagerService()
- .hasNavigationBar(mInputMethodService.getDisplayId());
- assumeTrue("Must have a navigation bar", hasNavigationBar);
+ public void testImeSwitchButtonLongClick() {
+ assumeTrue("Must have a navigation bar", hasNavigationBar());
assumeTrue("Must be in gesture navigation mode", isGestureNavEnabled());
+ waitUntilActivityReadyForInputInjection(mActivity);
+
setShowImeWithHardKeyboard(true /* enabled */);
verifyInputViewStatusOnMainSync(
() -> {
- // Ensure the IME navigation bar and the IME switch button are drawn.
- mInputMethodService.getInputMethodInternal().onNavButtonFlagsChanged(
- InputMethodNavButtonFlags.IME_DRAWS_IME_NAV_BAR
- | InputMethodNavButtonFlags.SHOW_IME_SWITCHER_WHEN_IME_IS_SHOWN
- );
- assertThat(mActivity.showImeWithWindowInsetsController()).isTrue();
+ setDrawsImeNavBarAndSwitcherButton(true /* enabled */);
+ mActivity.showImeWithWindowInsetsController();
},
true /* expected */,
true /* inputViewStarted */);
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
+ assertWithMessage("IME is shown").that(mInputMethodService.isInputViewShown()).isTrue();
- final var imm = mContext.getSystemService(InputMethodManager.class);
-
- final var imeSwitchButtonUiObject = getUiObjectById(INPUT_METHOD_NAV_IME_SWITCHER_ID);
+ final var imeSwitchButtonUiObject = getUiObject(By.res(INPUT_METHOD_NAV_IME_SWITCHER_ID));
imeSwitchButtonUiObject.longClick();
mInstrumentation.waitForIdleSync();
assertWithMessage("Input Method Switcher Menu is shown")
- .that(isInputMethodPickerShown(imm))
- .isTrue();
- if (mFlagsValueProvider.getBoolean(Flags.FLAG_REFACTOR_INSETS_CONTROLLER)) {
- // The IME visibility is only sent at the end of the animation. Therefore, we have to
- // wait until the visibility was sent to the server and the IME window hidden.
- eventually(() -> assertThat(mInputMethodService.isInputViewShown()).isFalse());
- } else {
- assertThat(mInputMethodService.isInputViewShown()).isTrue();
- }
+ .that(isInputMethodPickerShown(mImm)).isTrue();
+ assertWithMessage("IME is still shown after IME Switcher button was long clicked")
+ .that(mInputMethodService.isInputViewShown()).isTrue();
- // Hide the Picker menu before finishing.
+ // Hide the IME Switcher Menu before finishing.
mUiDevice.pressBack();
}
- private void verifyInputViewStatus(
- Runnable runnable, boolean expected, boolean inputViewStarted)
- throws InterruptedException {
+ private void verifyInputViewStatus(@NonNull Runnable runnable, boolean expected,
+ boolean inputViewStarted) {
verifyInputViewStatusInternal(runnable, expected, inputViewStarted,
false /* runOnMainSync */);
}
- private void verifyInputViewStatusOnMainSync(
- Runnable runnable, boolean expected, boolean inputViewStarted)
- throws InterruptedException {
+ private void verifyInputViewStatusOnMainSync(@NonNull Runnable runnable, boolean expected,
+ boolean inputViewStarted) {
verifyInputViewStatusInternal(runnable, expected, inputViewStarted,
true /* runOnMainSync */);
}
@@ -937,24 +1030,32 @@ public class InputMethodServiceTest {
/**
* Verifies the status of the Input View after executing the given runnable.
*
- * @param runnable the runnable to execute for showing or hiding the IME.
- * @param expected whether the runnable is expected to trigger the signal.
+ * @param runnable the runnable to execute for showing or hiding the IME.
+ * @param expected whether the runnable is expected to trigger the signal.
* @param inputViewStarted the expected state of the Input View after executing the runnable.
- * @param runOnMainSync whether to execute the runnable on the main thread.
+ * @param runOnMainSync whether to execute the runnable on the main thread.
*/
- private void verifyInputViewStatusInternal(
- Runnable runnable, boolean expected, boolean inputViewStarted, boolean runOnMainSync)
- throws InterruptedException {
- CountDownLatch signal = new CountDownLatch(1);
- mInputMethodService.setCountDownLatchForTesting(signal);
- // Runnable to trigger onStartInputView() / onFinishInputView() / onConfigurationChanged()
- if (runOnMainSync) {
- mInstrumentation.runOnMainSync(runnable);
- } else {
- runnable.run();
+ private void verifyInputViewStatusInternal(@NonNull Runnable runnable, boolean expected,
+ boolean inputViewStarted, boolean runOnMainSync) {
+ final boolean completed;
+ try {
+ final var latch = new CountDownLatch(1);
+ mInputMethodService.setCountDownLatchForTesting(latch);
+ // Trigger onStartInputView() / onFinishInputView() / onConfigurationChanged()
+ if (runOnMainSync) {
+ mInstrumentation.runOnMainSync(runnable);
+ } else {
+ runnable.run();
+ }
+ mInstrumentation.waitForIdleSync();
+ completed = latch.await(TIMEOUT_IN_SECONDS, TimeUnit.SECONDS);
+ } catch (InterruptedException e) {
+ fail("Interrupted while waiting for latch: " + e.getMessage());
+ return;
+ } finally {
+ mInputMethodService.setCountDownLatchForTesting(null);
}
- mInstrumentation.waitForIdleSync();
- boolean completed = signal.await(TIMEOUT_IN_SECONDS, TimeUnit.SECONDS);
+
if (expected && !completed) {
fail("Timed out waiting for"
+ " onStartInputView() / onFinishInputView() / onConfigurationChanged()");
@@ -963,8 +1064,10 @@ public class InputMethodServiceTest {
+ " onStartInputView() / onFinishInputView() / onConfigurationChanged()");
}
// Input is not finished.
- assertThat(mInputMethodService.getCurrentInputStarted()).isTrue();
- assertThat(mInputMethodService.getCurrentInputViewStarted()).isEqualTo(inputViewStarted);
+ assertWithMessage("Input connection is still started")
+ .that(mInputMethodService.getCurrentInputStarted()).isTrue();
+ assertWithMessage("IME visibility matches expected")
+ .that(mInputMethodService.getCurrentInputViewStarted()).isEqualTo(inputViewStarted);
}
private void setOrientation(int orientation) {
@@ -988,83 +1091,111 @@ public class InputMethodServiceTest {
/**
* Verifies the IME fullscreen mode state after executing the given runnable.
*
- * @param runnable the runnable to execute for setting the orientation.
- * @param expected whether the runnable is expected to trigger the signal.
+ * @param runnable the runnable to execute for setting the orientation.
+ * @param expected whether the runnable is expected to trigger the signal.
* @param orientationPortrait whether the orientation is expected to be portrait.
*/
- private void verifyFullscreenMode(
- Runnable runnable, boolean expected, boolean orientationPortrait)
- throws InterruptedException {
- CountDownLatch signal = new CountDownLatch(1);
- mInputMethodService.setCountDownLatchForTesting(signal);
-
- // Runnable to trigger onConfigurationChanged()
- try {
- runnable.run();
- } catch (Exception e) {
- throw new RuntimeException(e);
+ private void verifyFullscreenMode(@NonNull Runnable runnable, boolean expected,
+ boolean orientationPortrait) {
+ verifyInputViewStatus(runnable, expected, false /* inputViewStarted */);
+ if (expected) {
+ // Wait for the TestActivity to be recreated.
+ eventually(() -> assertWithMessage("Activity was re-created after rotation")
+ .that(TestActivity.getLastCreatedInstance()).isNotEqualTo(mActivity));
+ // Get the new TestActivity.
+ mActivity = TestActivity.getLastCreatedInstance();
+ assertWithMessage("Re-created activity is not null").that(mActivity).isNotNull();
}
- // Waits for onConfigurationChanged() to finish.
- mInstrumentation.waitForIdleSync();
- boolean completed = signal.await(TIMEOUT_IN_SECONDS, TimeUnit.SECONDS);
- if (expected && !completed) {
- fail("Timed out waiting for onConfigurationChanged()");
- } else if (!expected && completed) {
- fail("Unexpected call onConfigurationChanged()");
- }
-
- clickOnEditorText();
- eventually(() -> assertThat(mInputMethodService.isInputViewShown()).isTrue());
- assertThat(mInputMethodService.getResources().getConfiguration().orientation)
- .isEqualTo(
- orientationPortrait
- ? Configuration.ORIENTATION_PORTRAIT
- : Configuration.ORIENTATION_LANDSCAPE);
- EditorInfo editorInfo = mInputMethodService.getCurrentInputEditorInfo();
- assertThat(editorInfo.imeOptions & EditorInfo.IME_FLAG_NO_FULLSCREEN).isEqualTo(0);
- assertThat(editorInfo.internalImeOptions & EditorInfo.IME_INTERNAL_FLAG_APP_WINDOW_PORTRAIT)
+ verifyInputViewStatusOnMainSync(
+ () -> mActivity.showImeWithWindowInsetsController(),
+ true /* expected */,
+ true /* inputViewStarted */);
+ assertWithMessage("IME is shown").that(mInputMethodService.isInputViewShown()).isTrue();
+
+ assertWithMessage("IME orientation matches expected")
+ .that(mInputMethodService.getResources().getConfiguration().orientation)
+ .isEqualTo(orientationPortrait
+ ? Configuration.ORIENTATION_PORTRAIT : Configuration.ORIENTATION_LANDSCAPE);
+ final var editorInfo = mInputMethodService.getCurrentInputEditorInfo();
+ assertWithMessage("IME_FLAG_NO_FULLSCREEN not set")
+ .that(editorInfo.imeOptions & EditorInfo.IME_FLAG_NO_FULLSCREEN).isEqualTo(0);
+ assertWithMessage("IME_INTERNAL_FLAG_APP_WINDOW_PORTRAIT matches expected")
+ .that(editorInfo.internalImeOptions
+ & EditorInfo.IME_INTERNAL_FLAG_APP_WINDOW_PORTRAIT)
.isEqualTo(
orientationPortrait ? EditorInfo.IME_INTERNAL_FLAG_APP_WINDOW_PORTRAIT : 0);
- assertThat(mInputMethodService.onEvaluateFullscreenMode()).isEqualTo(!orientationPortrait);
- assertThat(mInputMethodService.isFullscreenMode()).isEqualTo(!orientationPortrait);
+ assertWithMessage("onEvaluateFullscreenMode matches orientation")
+ .that(mInputMethodService.onEvaluateFullscreenMode())
+ .isEqualTo(!orientationPortrait);
+ assertWithMessage("isFullscreenMode matches orientation")
+ .that(mInputMethodService.isFullscreenMode()).isEqualTo(!orientationPortrait);
- mUiDevice.pressBack();
+ // Hide IME before finishing the run.
+ verifyInputViewStatusOnMainSync(
+ () -> mActivity.hideImeWithWindowInsetsController(),
+ true /* expected */,
+ false /* inputViewStarted */);
+
+ if (mFlagsValueProvider.getBoolean(Flags.FLAG_REFACTOR_INSETS_CONTROLLER)) {
+ // The IME visibility is only sent at the end of the animation. Therefore, we have to
+ // wait until the visibility was sent to the server and the IME window hidden.
+ eventually(() -> assertWithMessage("IME is not shown")
+ .that(mInputMethodService.isInputViewShown()).isFalse());
+ } else {
+ assertWithMessage("IME is not shown")
+ .that(mInputMethodService.isInputViewShown()).isFalse();
+ }
}
- private void prepareIme() throws Exception {
+ private void prepareIme() {
executeShellCommand("ime enable " + mInputMethodId);
executeShellCommand("ime set " + mInputMethodId);
mInstrumentation.waitForIdleSync();
Log.i(TAG, "Finish preparing IME");
}
- private void prepareEditor() {
- mActivity = TestActivity.start(mInstrumentation);
+ private void prepareActivity() {
+ mActivity = TestActivity.startSync(mInstrumentation);
Log.i(TAG, "Finish preparing activity with editor.");
}
+ private void waitUntilActivityReadyForInputInjection(@NonNull TestActivity activity) {
+ try {
+ mWmState.waitUntilActivityReadyForInputInjection(activity, mInstrumentation, TAG,
+ "test: " + mName.getMethodName());
+ } catch (InterruptedException e) {
+ fail("Interrupted while waiting for activity to be ready: " + e.getMessage());
+ }
+ }
+
+ @NonNull
private String getInputMethodId() {
return mTargetPackageName + "/" + INPUT_METHOD_SERVICE_NAME;
}
/**
- * Sets the value of show_ime_with_hard_keyboard, only if it is different to the default value.
+ * Sets the value of {@link Settings.Secure#SHOW_IME_WITH_HARD_KEYBOARD}, only if it is
+ * different to the current value, and waits for the update to take effect.
*
- * @param enabled the value to be set.
+ * @param enable the value to be set.
*/
- private void setShowImeWithHardKeyboard(boolean enabled) throws IOException {
- if (mShowImeWithHardKeyboardEnabled != enabled) {
- executeShellCommand(enabled
+ private void setShowImeWithHardKeyboard(boolean enable) {
+ final boolean currentEnabled =
+ mInputMethodService.getShouldShowImeWithHardKeyboardForTesting();
+ if (currentEnabled != enable) {
+ executeShellCommand(enable
? ENABLE_SHOW_IME_WITH_HARD_KEYBOARD_CMD
: DISABLE_SHOW_IME_WITH_HARD_KEYBOARD_CMD);
- mInstrumentation.waitForIdleSync();
+ eventually(() -> assertWithMessage("showImeWithHardKeyboard updated")
+ .that(mInputMethodService.getShouldShowImeWithHardKeyboardForTesting())
+ .isEqualTo(enable));
}
}
- private String executeShellCommand(String cmd) throws IOException {
+ private static void executeShellCommand(@NonNull String cmd) {
Log.i(TAG, "Run command: " + cmd);
- return SystemUtil.runShellCommandOrThrow(cmd);
+ SystemUtil.runShellCommandOrThrow(cmd);
}
/**
@@ -1076,31 +1207,57 @@ public class InputMethodServiceTest {
}
@NonNull
- private UiObject2 getUiObjectById(@NonNull String id) {
- final var uiObject = mUiDevice.wait(
- Until.findObject(By.res(id)),
+ private UiObject2 getUiObject(@NonNull BySelector bySelector) {
+ final var uiObject = mUiDevice.wait(Until.findObject(bySelector),
TimeUnit.SECONDS.toMillis(TIMEOUT_IN_SECONDS));
- assertThat(uiObject).isNotNull();
+ assertWithMessage("UiObject with " + bySelector + " was found").that(uiObject).isNotNull();
return uiObject;
}
- /**
- * Returns {@code true} if the navigation mode is gesture nav, and {@code false} otherwise.
- */
+ /** Checks whether gesture navigation move is enabled. */
private boolean isGestureNavEnabled() {
return mContext.getResources().getInteger(
com.android.internal.R.integer.config_navBarInteractionMode)
== WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL;
}
- private void clickOnEditorText() {
- // Find the editText and click it.
- UiObject2 editTextUiObject =
- mUiDevice.wait(
- Until.findObject(By.desc(EDIT_TEXT_DESC)),
- TimeUnit.SECONDS.toMillis(TIMEOUT_IN_SECONDS));
- assertThat(editTextUiObject).isNotNull();
- editTextUiObject.click();
- mInstrumentation.waitForIdleSync();
+ /** Checks whether the device has a navigation bar on the IME's display. */
+ private boolean hasNavigationBar() {
+ try {
+ return WindowManagerGlobal.getWindowManagerService()
+ .hasNavigationBar(mInputMethodService.getDisplayId());
+ } catch (RemoteException e) {
+ fail("Failed to check whether the device has a navigation bar: " + e.getMessage());
+ return false;
+ }
+ }
+
+ /**
+ * Manually sets whether the IME draws the IME navigation bar and IME Switcher button,
+ * regardless of the current navigation bar mode.
+ *
+ * <p>Note, neither of these are normally drawn when in three button navigation mode.
+ *
+ * @param enabled whether the IME nav bar and IME Switcher button are drawn.
+ */
+ private void setDrawsImeNavBarAndSwitcherButton(boolean enabled) {
+ final int flags = enabled ? IME_DRAWS_IME_NAV_BAR | SHOW_IME_SWITCHER_WHEN_IME_IS_SHOWN : 0;
+ mInputMethodService.getInputMethodInternal().onNavButtonFlagsChanged(flags);
+ }
+
+ /**
+ * Set whether the IME navigation bar should be shown or not.
+ *
+ * <p>Note, this has no effect when the IME does not draw the IME navigation bar.
+ *
+ * @param show whether the IME navigation bar should be shown.
+ */
+ private void setShowImeNavigationBar(boolean show) {
+ final var controller = mInputMethodService.getWindow().getWindow().getInsetsController();
+ if (show) {
+ controller.show(captionBar());
+ } else {
+ controller.hide(captionBar());
+ }
}
}
diff --git a/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/SimpleInputMethodService.java b/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/SimpleInputMethodService.java
index 48942a31658f..61d1bb931a96 100644
--- a/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/SimpleInputMethodService.java
+++ b/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/SimpleInputMethodService.java
@@ -23,13 +23,15 @@ import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.inputmethod.EditorInfo;
-import android.view.inputmethod.InputConnection;
import android.widget.FrameLayout;
+import androidx.annotation.NonNull;
+
import com.android.apps.inputmethod.simpleime.ims.InputMethodServiceWrapper;
-/** The {@link InputMethodService} implementation for SimpeTestIme app. */
-public class SimpleInputMethodService extends InputMethodServiceWrapper {
+/** The {@link InputMethodService} implementation for SimpleTestIme app. */
+public final class SimpleInputMethodService extends InputMethodServiceWrapper {
+
private static final String TAG = "SimpleIMS";
private FrameLayout mInputView;
@@ -45,23 +47,18 @@ public class SimpleInputMethodService extends InputMethodServiceWrapper {
public void onStartInputView(EditorInfo info, boolean restarting) {
super.onStartInputView(info, restarting);
mInputView.removeAllViews();
- SimpleKeyboard keyboard = new SimpleKeyboard(this, R.layout.qwerty_10_9_9);
+ final var keyboard = new SimpleKeyboard(this, R.layout.qwerty_10_9_9);
mInputView.addView(keyboard.inflateKeyboardView(LayoutInflater.from(this), mInputView));
}
- void handle(String data, int keyboardState) {
- InputConnection inputConnection = getCurrentInputConnection();
- Integer keyCode = KeyCodeConstants.KEY_NAME_TO_CODE_MAP.get(data);
+ void handleKeyPress(@NonNull String keyCodeName, int keyboardState) {
+ final Integer keyCode = KeyCodeConstants.KEY_NAME_TO_CODE_MAP.get(keyCodeName);
Log.v(TAG, "keyCode: " + keyCode);
if (keyCode != null) {
- inputConnection.sendKeyEvent(
- new KeyEvent(
- SystemClock.uptimeMillis(),
- SystemClock.uptimeMillis(),
- KeyEvent.ACTION_DOWN,
- keyCode,
- 0,
- KeyCodeConstants.isAlphaKeyCode(keyCode) ? keyboardState : 0));
+ final var downTime = SystemClock.uptimeMillis();
+ getCurrentInputConnection().sendKeyEvent(new KeyEvent(downTime, downTime,
+ KeyEvent.ACTION_DOWN, keyCode, 0 /* repeat */,
+ KeyCodeConstants.isAlphaKeyCode(keyCode) ? keyboardState : 0) /* metaState */);
}
}
}
diff --git a/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/SimpleKeyboard.java b/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/SimpleKeyboard.java
index b16ec9ebd718..62d90c8d56b5 100644
--- a/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/SimpleKeyboard.java
+++ b/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/SimpleKeyboard.java
@@ -25,60 +25,65 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
/** Controls the visible virtual keyboard view. */
final class SimpleKeyboard {
+
private static final String TAG = "SimpleKeyboard";
- private static final int[] SOFT_KEY_IDS =
- new int[] {
- R.id.key_pos_0_0,
- R.id.key_pos_0_1,
- R.id.key_pos_0_2,
- R.id.key_pos_0_3,
- R.id.key_pos_0_4,
- R.id.key_pos_0_5,
- R.id.key_pos_0_6,
- R.id.key_pos_0_7,
- R.id.key_pos_0_8,
- R.id.key_pos_0_9,
- R.id.key_pos_1_0,
- R.id.key_pos_1_1,
- R.id.key_pos_1_2,
- R.id.key_pos_1_3,
- R.id.key_pos_1_4,
- R.id.key_pos_1_5,
- R.id.key_pos_1_6,
- R.id.key_pos_1_7,
- R.id.key_pos_1_8,
- R.id.key_pos_2_0,
- R.id.key_pos_2_1,
- R.id.key_pos_2_2,
- R.id.key_pos_2_3,
- R.id.key_pos_2_4,
- R.id.key_pos_2_5,
- R.id.key_pos_2_6,
- R.id.key_pos_shift,
- R.id.key_pos_del,
- R.id.key_pos_symbol,
- R.id.key_pos_comma,
- R.id.key_pos_space,
- R.id.key_pos_period,
- R.id.key_pos_enter,
- };
+ private static final int[] SOFT_KEY_IDS = new int[]{
+ R.id.key_pos_0_0,
+ R.id.key_pos_0_1,
+ R.id.key_pos_0_2,
+ R.id.key_pos_0_3,
+ R.id.key_pos_0_4,
+ R.id.key_pos_0_5,
+ R.id.key_pos_0_6,
+ R.id.key_pos_0_7,
+ R.id.key_pos_0_8,
+ R.id.key_pos_0_9,
+ R.id.key_pos_1_0,
+ R.id.key_pos_1_1,
+ R.id.key_pos_1_2,
+ R.id.key_pos_1_3,
+ R.id.key_pos_1_4,
+ R.id.key_pos_1_5,
+ R.id.key_pos_1_6,
+ R.id.key_pos_1_7,
+ R.id.key_pos_1_8,
+ R.id.key_pos_2_0,
+ R.id.key_pos_2_1,
+ R.id.key_pos_2_2,
+ R.id.key_pos_2_3,
+ R.id.key_pos_2_4,
+ R.id.key_pos_2_5,
+ R.id.key_pos_2_6,
+ R.id.key_pos_shift,
+ R.id.key_pos_del,
+ R.id.key_pos_symbol,
+ R.id.key_pos_comma,
+ R.id.key_pos_space,
+ R.id.key_pos_period,
+ R.id.key_pos_enter,
+ };
+ @NonNull
private final SimpleInputMethodService mSimpleInputMethodService;
private final int mViewResId;
private final SparseArray<TextView> mSoftKeyViews = new SparseArray<>();
private View mKeyboardView;
private int mKeyboardState;
- SimpleKeyboard(SimpleInputMethodService simpleInputMethodService, int viewResId) {
- this.mSimpleInputMethodService = simpleInputMethodService;
- this.mViewResId = viewResId;
- this.mKeyboardState = 0;
+ SimpleKeyboard(@NonNull SimpleInputMethodService simpleInputMethodService, int viewResId) {
+ mSimpleInputMethodService = simpleInputMethodService;
+ mViewResId = viewResId;
+ mKeyboardState = 0;
}
- View inflateKeyboardView(LayoutInflater inflater, ViewGroup inputView) {
+ @NonNull
+ View inflateKeyboardView(@NonNull LayoutInflater inflater, @NonNull ViewGroup inputView) {
mKeyboardView = inflater.inflate(mViewResId, inputView, false);
mapSoftKeys();
return mKeyboardView;
@@ -86,30 +91,31 @@ final class SimpleKeyboard {
private void mapSoftKeys() {
for (int id : SOFT_KEY_IDS) {
- TextView softKeyView = mKeyboardView.findViewById(id);
+ final TextView softKeyView = mKeyboardView.requireViewById(id);
mSoftKeyViews.put(id, softKeyView);
- String tagData = softKeyView.getTag() != null ? softKeyView.getTag().toString() : null;
- softKeyView.setOnClickListener(v -> handle(tagData));
+ final var keyCodeName = softKeyView.getTag() != null
+ ? softKeyView.getTag().toString() : null;
+ softKeyView.setOnClickListener(v -> handleKeyPress(keyCodeName));
}
}
- private void handle(String data) {
- Log.i(TAG, "handle(): " + data);
- if (TextUtils.isEmpty(data)) {
+ private void handleKeyPress(@Nullable String keyCodeName) {
+ Log.i(TAG, "handle(): " + keyCodeName);
+ if (TextUtils.isEmpty(keyCodeName)) {
return;
}
- if ("KEYCODE_SHIFT".equals(data)) {
+ if ("KEYCODE_SHIFT".equals(keyCodeName)) {
handleShift();
return;
}
- mSimpleInputMethodService.handle(data, mKeyboardState);
+ mSimpleInputMethodService.handleKeyPress(keyCodeName, mKeyboardState);
}
private void handleShift() {
mKeyboardState = toggleShiftState(mKeyboardState);
Log.v(TAG, "currentKeyboardState: " + mKeyboardState);
- boolean isShiftOn = isShiftOn(mKeyboardState);
+ final boolean isShiftOn = isShiftOn(mKeyboardState);
for (int i = 0; i < mSoftKeyViews.size(); i++) {
TextView softKeyView = mSoftKeyViews.valueAt(i);
softKeyView.setAllCaps(isShiftOn);
diff --git a/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/ims/InputMethodServiceWrapper.java b/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/ims/InputMethodServiceWrapper.java
index 67212b60f1b8..be59dd2cb7a3 100644
--- a/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/ims/InputMethodServiceWrapper.java
+++ b/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/ims/InputMethodServiceWrapper.java
@@ -25,21 +25,35 @@ import java.util.concurrent.CountDownLatch;
/** Wrapper of {@link InputMethodService} to expose interfaces for testing purpose. */
public class InputMethodServiceWrapper extends InputMethodService {
- private static final String TAG = "InputMethodServiceWrapper";
- private static InputMethodServiceWrapper sInputMethodServiceWrapper;
+ private static final String TAG = "InputMethodServiceWrapper";
- public static InputMethodServiceWrapper getInputMethodServiceWrapperForTesting() {
- return sInputMethodServiceWrapper;
- }
+ /** Last created instance of this wrapper. */
+ private static InputMethodServiceWrapper sInstance;
private boolean mInputViewStarted;
+
+ /**
+ * @see #setCountDownLatchForTesting
+ */
private CountDownLatch mCountDownLatchForTesting;
+ /** Gets the last created instance of this wrapper, if available. */
+ public static InputMethodServiceWrapper getInstance() {
+ return sInstance;
+ }
+
public boolean getCurrentInputViewStarted() {
return mInputViewStarted;
}
+ /**
+ * Sets the latch used to wait for the IME to start showing ({@link #onStartInputView},
+ * start hiding ({@link #onFinishInputView}) or receive a configuration change
+ * ({@link #onConfigurationChanged}).
+ *
+ * @param countDownLatchForTesting the latch to wait on.
+ */
public void setCountDownLatchForTesting(CountDownLatch countDownLatchForTesting) {
mCountDownLatchForTesting = countDownLatchForTesting;
}
@@ -48,7 +62,7 @@ public class InputMethodServiceWrapper extends InputMethodService {
public void onCreate() {
Log.i(TAG, "onCreate()");
super.onCreate();
- sInputMethodServiceWrapper = this;
+ sInstance = this;
}
@Override
@@ -102,12 +116,13 @@ public class InputMethodServiceWrapper extends InputMethodService {
}
private String dumpEditorInfo(EditorInfo info) {
- var sb = new StringBuilder();
- sb.append("EditorInfo{packageName=").append(info.packageName);
- sb.append(" fieldId=").append(info.fieldId);
- sb.append(" hintText=").append(info.hintText);
- sb.append(" privateImeOptions=").append(info.privateImeOptions);
- sb.append("}");
- return sb.toString();
+ if (info == null) {
+ return "null";
+ }
+ return "EditorInfo{packageName=" + info.packageName
+ + " fieldId=" + info.fieldId
+ + " hintText=" + info.hintText
+ + " privateImeOptions=" + info.privateImeOptions
+ + "}";
}
}
diff --git a/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/testing/TestActivity.java b/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/testing/TestActivity.java
index 37b05ff79977..eadbac3ca74b 100644
--- a/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/testing/TestActivity.java
+++ b/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/testing/TestActivity.java
@@ -25,12 +25,12 @@ import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.WindowInsets;
-import android.view.WindowInsetsController;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.LinearLayout;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.lang.ref.WeakReference;
@@ -42,10 +42,10 @@ import java.lang.ref.WeakReference;
* in the instruments package. More details see {@link
* Instrumentation#startActivitySync(Intent)}.</>
*/
-public class TestActivity extends Activity {
+public final class TestActivity extends Activity {
+
private static final String TAG = "TestActivity";
- private static WeakReference<TestActivity> sLastCreatedInstance =
- new WeakReference<>(null);
+ private static WeakReference<TestActivity> sLastCreatedInstance = new WeakReference<>(null);
/**
* Start a new test activity with an editor and wait for it to begin running before returning.
@@ -53,13 +53,13 @@ public class TestActivity extends Activity {
* @param instrumentation application instrumentation
* @return the newly started activity
*/
- public static TestActivity start(Instrumentation instrumentation) {
- Intent intent =
- new Intent()
- .setAction(Intent.ACTION_MAIN)
- .setClass(instrumentation.getTargetContext(), TestActivity.class)
- .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
- .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ @NonNull
+ public static TestActivity startSync(@NonNull Instrumentation instrumentation) {
+ final var intent = new Intent()
+ .setAction(Intent.ACTION_MAIN)
+ .setClass(instrumentation.getTargetContext(), TestActivity.class)
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
return (TestActivity) instrumentation.startActivitySync(intent);
}
@@ -70,12 +70,12 @@ public class TestActivity extends Activity {
}
@Override
- protected void onCreate(Bundle savedInstanceState) {
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
- LinearLayout rootView = new LinearLayout(this);
+ final var rootView = new LinearLayout(this);
mEditText = new EditText(this);
- mEditText.setContentDescription("Input box");
+ mEditText.setHint("editText");
rootView.addView(mEditText, new LinearLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT));
rootView.setFitsSystemWindows(true);
setContentView(rootView);
@@ -83,40 +83,39 @@ public class TestActivity extends Activity {
sLastCreatedInstance = new WeakReference<>(this);
}
- /** Get the last created TestActivity instance. */
- public static @Nullable TestActivity getLastCreatedInstance() {
+ /** Get the last created TestActivity instance, if available. */
+ @Nullable
+ public static TestActivity getLastCreatedInstance() {
return sLastCreatedInstance.get();
}
/** Shows soft keyboard via InputMethodManager. */
public boolean showImeWithInputMethodManager(int flags) {
- InputMethodManager imm = getSystemService(InputMethodManager.class);
- boolean result = imm.showSoftInput(mEditText, flags);
+ final var imm = getSystemService(InputMethodManager.class);
+ final boolean result = imm.showSoftInput(mEditText, flags);
Log.i(TAG, "showIme() via InputMethodManager, result=" + result);
return result;
}
/** Shows soft keyboard via WindowInsetsController. */
- public boolean showImeWithWindowInsetsController() {
- WindowInsetsController windowInsetsController = mEditText.getWindowInsetsController();
- windowInsetsController.show(WindowInsets.Type.ime());
+ public void showImeWithWindowInsetsController() {
+ final var controller = mEditText.getWindowInsetsController();
+ controller.show(WindowInsets.Type.ime());
Log.i(TAG, "showIme() via WindowInsetsController");
- return true;
}
/** Hides soft keyboard via InputMethodManager. */
public boolean hideImeWithInputMethodManager(int flags) {
- InputMethodManager imm = getSystemService(InputMethodManager.class);
- boolean result = imm.hideSoftInputFromWindow(mEditText.getWindowToken(), flags);
+ final var imm = getSystemService(InputMethodManager.class);
+ final boolean result = imm.hideSoftInputFromWindow(mEditText.getWindowToken(), flags);
Log.i(TAG, "hideIme() via InputMethodManager, result=" + result);
return result;
}
/** Hides soft keyboard via WindowInsetsController. */
- public boolean hideImeWithWindowInsetsController() {
- WindowInsetsController windowInsetsController = mEditText.getWindowInsetsController();
- windowInsetsController.hide(WindowInsets.Type.ime());
+ public void hideImeWithWindowInsetsController() {
+ final var controller = mEditText.getWindowInsetsController();
+ controller.hide(WindowInsets.Type.ime());
Log.i(TAG, "hideIme() via WindowInsetsController");
- return true;
}
}
diff --git a/services/tests/displayservicetests/src/com/android/server/display/DisplayManagerServiceTest.java b/services/tests/displayservicetests/src/com/android/server/display/DisplayManagerServiceTest.java
index a0e18ff15770..e0e44252a8f3 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/DisplayManagerServiceTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayManagerServiceTest.java
@@ -107,6 +107,7 @@ import android.hardware.display.DisplayManagerGlobal;
import android.hardware.display.DisplayManagerInternal;
import android.hardware.display.DisplayManagerInternal.DisplayOffloader;
import android.hardware.display.DisplayTopology;
+import android.hardware.display.DisplayTopologyGraph;
import android.hardware.display.DisplayViewport;
import android.hardware.display.DisplayedContentSample;
import android.hardware.display.DisplayedContentSamplingAttributes;
@@ -136,6 +137,7 @@ import android.provider.Settings.SettingNotFoundException;
import android.test.mock.MockContentResolver;
import android.util.Slog;
import android.util.SparseArray;
+import android.util.SparseIntArray;
import android.util.Spline;
import android.view.ContentRecordingSession;
import android.view.Display;
@@ -3875,8 +3877,16 @@ public class DisplayManagerServiceTest {
displayManager.new BinderService();
registerDefaultDisplays(displayManager);
initDisplayPowerController(localService);
+ displayManager.windowManagerAndInputReady();
+
+ DisplayTopology topology = mock(DisplayTopology.class);
+ when(topology.copy()).thenReturn(topology);
+ DisplayTopologyGraph graph = mock(DisplayTopologyGraph.class);
+ when(topology.getGraph(any(SparseIntArray.class))).thenReturn(graph);
+ displayManagerBinderService.setDisplayTopology(topology);
+ waitForIdleHandler(displayManager.getDisplayHandler());
- displayManagerBinderService.setDisplayTopology(new DisplayTopology());
+ verify(mMockInputManagerInternal).setDisplayTopology(graph);
}
@Test
diff --git a/services/tests/displayservicetests/src/com/android/server/display/DisplayTopologyCoordinatorTest.kt b/services/tests/displayservicetests/src/com/android/server/display/DisplayTopologyCoordinatorTest.kt
index 04dff1d36495..3c134b5d5482 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/DisplayTopologyCoordinatorTest.kt
+++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayTopologyCoordinatorTest.kt
@@ -18,39 +18,52 @@ package com.android.server.display
import android.hardware.display.DisplayTopology
import android.hardware.display.DisplayTopology.pxToDp
+import android.hardware.display.DisplayTopologyGraph
import android.util.SparseArray
+import android.util.SparseIntArray
import android.view.Display
import android.view.DisplayInfo
import com.google.common.truth.Truth.assertThat
import org.junit.Before
import org.junit.Test
+import org.mockito.ArgumentCaptor
import org.mockito.ArgumentMatchers.anyFloat
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.kotlin.any
+import org.mockito.kotlin.clearInvocations
import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
import org.mockito.kotlin.never
+import org.mockito.kotlin.times
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
class DisplayTopologyCoordinatorTest {
private lateinit var coordinator: DisplayTopologyCoordinator
- private val displayInfo = DisplayInfo()
+ private lateinit var displayInfos: List<DisplayInfo>
private val topologyChangeExecutor = Runnable::run
private val mockTopologyStore = mock<DisplayTopologyStore>()
private val mockTopology = mock<DisplayTopology>()
private val mockTopologyCopy = mock<DisplayTopology>()
+ private val mockTopologyGraph = mock<DisplayTopologyGraph>()
private val mockIsExtendedDisplayEnabled = mock<() -> Boolean>()
private val mockTopologySavedCallback = mock<() -> Unit>()
- private val mockTopologyChangedCallback = mock<(DisplayTopology) -> Unit>()
+ private val mockTopologyChangedCallback =
+ mock<(android.util.Pair<DisplayTopology, DisplayTopologyGraph>) -> Unit>()
@Before
fun setUp() {
- displayInfo.displayId = Display.DEFAULT_DISPLAY
- displayInfo.logicalWidth = 300
- displayInfo.logicalHeight = 200
- displayInfo.logicalDensityDpi = 100
+ displayInfos = (1..10).map { i ->
+ val info = DisplayInfo()
+ info.displayId = i
+ info.displayGroupId = Display.DEFAULT_DISPLAY_GROUP
+ info.logicalWidth = i * 300
+ info.logicalHeight = i * 200
+ info.logicalDensityDpi = i * 100
+ info.type = Display.TYPE_EXTERNAL
+ return@map info
+ }
val injector = object : DisplayTopologyCoordinator.Injector() {
override fun getTopology() = mockTopology
@@ -62,6 +75,7 @@ class DisplayTopologyCoordinatorTest {
}
whenever(mockIsExtendedDisplayEnabled()).thenReturn(true)
whenever(mockTopology.copy()).thenReturn(mockTopologyCopy)
+ whenever(mockTopologyCopy.getGraph(any())).thenReturn(mockTopologyGraph)
coordinator = DisplayTopologyCoordinator(injector, mockIsExtendedDisplayEnabled,
mockTopologyChangedCallback, topologyChangeExecutor, DisplayManagerService.SyncRoot(),
mockTopologySavedCallback)
@@ -69,20 +83,136 @@ class DisplayTopologyCoordinatorTest {
@Test
fun addDisplay() {
- coordinator.onDisplayAdded(displayInfo)
+ displayInfos.forEachIndexed { i, displayInfo ->
+ coordinator.onDisplayAdded(displayInfo)
+
+ val widthDp = pxToDp(displayInfo.logicalWidth.toFloat(), displayInfo.logicalDensityDpi)
+ val heightDp =
+ pxToDp(displayInfo.logicalHeight.toFloat(), displayInfo.logicalDensityDpi)
+ verify(mockTopology).addDisplay(displayInfo.displayId, widthDp, heightDp)
+ }
+
+ val captor = ArgumentCaptor.forClass(SparseIntArray::class.java)
+ verify(mockTopologyCopy, times(displayInfos.size)).getGraph(captor.capture())
+ val densities = captor.value
+ assertThat(densities.size()).isEqualTo(displayInfos.size)
+ for (displayInfo in displayInfos) {
+ assertThat(densities.get(displayInfo.displayId))
+ .isEqualTo(displayInfo.logicalDensityDpi)
+ }
+
+ verify(mockTopologyChangedCallback, times(displayInfos.size)).invoke(
+ android.util.Pair(
+ mockTopologyCopy,
+ mockTopologyGraph
+ )
+ )
+ verify(mockTopologyStore, times(displayInfos.size)).restoreTopology(mockTopology)
+
+ // Clear invocations for other tests that call this method
+ clearInvocations(mockTopologyCopy)
+ clearInvocations(mockTopologyChangedCallback)
+ clearInvocations(mockTopologyStore)
+ }
+
+ @Test
+ fun addDisplay_internal() {
+ displayInfos[0].displayId = Display.DEFAULT_DISPLAY
+ displayInfos[0].type = Display.TYPE_INTERNAL
+ coordinator.onDisplayAdded(displayInfos[0])
+
+ val widthDp =
+ pxToDp(displayInfos[0].logicalWidth.toFloat(), displayInfos[0].logicalDensityDpi)
+ val heightDp =
+ pxToDp(displayInfos[0].logicalHeight.toFloat(), displayInfos[0].logicalDensityDpi)
+ verify(mockTopology).addDisplay(displayInfos[0].displayId, widthDp, heightDp)
+ verify(mockTopologyChangedCallback).invoke(
+ android.util.Pair(
+ mockTopologyCopy,
+ mockTopologyGraph
+ )
+ )
+ }
+
+ @Test
+ fun addDisplay_overlay() {
+ displayInfos[0].type = Display.TYPE_OVERLAY
+ coordinator.onDisplayAdded(displayInfos[0])
+
+ val widthDp =
+ pxToDp(displayInfos[0].logicalWidth.toFloat(), displayInfos[0].logicalDensityDpi)
+ val heightDp =
+ pxToDp(displayInfos[0].logicalHeight.toFloat(), displayInfos[0].logicalDensityDpi)
+ verify(mockTopology).addDisplay(displayInfos[0].displayId, widthDp, heightDp)
+ verify(mockTopologyChangedCallback).invoke(
+ android.util.Pair(
+ mockTopologyCopy,
+ mockTopologyGraph
+ )
+ )
+ }
+
+ @Test
+ fun addDisplay_typeUnknown() {
+ displayInfos[0].type = Display.TYPE_UNKNOWN
+
+ coordinator.onDisplayAdded(displayInfos[0])
+
+ verify(mockTopology, never()).addDisplay(anyInt(), anyFloat(), anyFloat())
+ verify(mockTopologyChangedCallback, never()).invoke(any())
+ }
+
+ @Test
+ fun addDisplay_wifi() {
+ displayInfos[0].type = Display.TYPE_WIFI
+
+ coordinator.onDisplayAdded(displayInfos[0])
+
+ verify(mockTopology, never()).addDisplay(anyInt(), anyFloat(), anyFloat())
+ verify(mockTopologyChangedCallback, never()).invoke(any())
+ }
- val widthDp = pxToDp(displayInfo.logicalWidth.toFloat(), displayInfo.logicalDensityDpi)
- val heightDp = pxToDp(displayInfo.logicalHeight.toFloat(), displayInfo.logicalDensityDpi)
- verify(mockTopology).addDisplay(displayInfo.displayId, widthDp, heightDp)
- verify(mockTopologyChangedCallback).invoke(mockTopologyCopy)
- verify(mockTopologyStore).restoreTopology(mockTopology)
+ @Test
+ fun addDisplay_virtual() {
+ displayInfos[0].type = Display.TYPE_VIRTUAL
+
+ coordinator.onDisplayAdded(displayInfos[0])
+
+ verify(mockTopology, never()).addDisplay(anyInt(), anyFloat(), anyFloat())
+ verify(mockTopologyChangedCallback, never()).invoke(any())
}
@Test
- fun addDisplay_extendedDisplaysDisabled() {
+ fun addDisplay_internal_nonDefault() {
+ displayInfos[0].displayId = 2
+ displayInfos[0].type = Display.TYPE_INTERNAL
+
+ coordinator.onDisplayAdded(displayInfos[0])
+
+ verify(mockTopology, never()).addDisplay(anyInt(), anyFloat(), anyFloat())
+ verify(mockTopologyChangedCallback, never()).invoke(any())
+ }
+
+ @Test
+ fun addDisplay_external_extendedDisplaysDisabled() {
whenever(mockIsExtendedDisplayEnabled()).thenReturn(false)
- coordinator.onDisplayAdded(displayInfo)
+ for (displayInfo in displayInfos) {
+ coordinator.onDisplayAdded(displayInfo)
+ }
+
+ verify(mockTopology, never()).addDisplay(anyInt(), anyFloat(), anyFloat())
+ verify(mockTopologyChangedCallback, never()).invoke(any())
+ }
+
+ @Test
+ fun addDisplay_overlay_extendedDisplaysDisabled() {
+ displayInfos[0].type = Display.TYPE_OVERLAY
+ whenever(mockIsExtendedDisplayEnabled()).thenReturn(false)
+
+ for (displayInfo in displayInfos) {
+ coordinator.onDisplayAdded(displayInfo)
+ }
verify(mockTopology, never()).addDisplay(anyInt(), anyFloat(), anyFloat())
verify(mockTopologyChangedCallback, never()).invoke(any())
@@ -91,9 +221,9 @@ class DisplayTopologyCoordinatorTest {
@Test
fun addDisplay_notInDefaultDisplayGroup() {
- displayInfo.displayGroupId = Display.DEFAULT_DISPLAY_GROUP + 1
+ displayInfos[0].displayGroupId = Display.DEFAULT_DISPLAY_GROUP + 1
- coordinator.onDisplayAdded(displayInfo)
+ coordinator.onDisplayAdded(displayInfos[0])
verify(mockTopology, never()).addDisplay(anyInt(), anyFloat(), anyFloat())
verify(mockTopologyChangedCallback, never()).invoke(any())
@@ -102,39 +232,164 @@ class DisplayTopologyCoordinatorTest {
@Test
fun updateDisplay() {
- whenever(mockTopology.updateDisplay(eq(Display.DEFAULT_DISPLAY), anyFloat(), anyFloat()))
+ whenever(mockTopology.updateDisplay(eq(displayInfos[0].displayId), anyFloat(), anyFloat()))
.thenReturn(true)
+ addDisplay()
+
+ displayInfos[0].logicalWidth += 100
+ displayInfos[0].logicalHeight += 100
+ coordinator.onDisplayChanged(displayInfos[0])
+
+ val widthDp =
+ pxToDp(displayInfos[0].logicalWidth.toFloat(), displayInfos[0].logicalDensityDpi)
+ val heightDp =
+ pxToDp(displayInfos[0].logicalHeight.toFloat(), displayInfos[0].logicalDensityDpi)
+ verify(mockTopology).updateDisplay(displayInfos[0].displayId, widthDp, heightDp)
- coordinator.onDisplayChanged(displayInfo)
+ val captor = ArgumentCaptor.forClass(SparseIntArray::class.java)
+ verify(mockTopologyCopy).getGraph(captor.capture())
+ val densities = captor.value
+ assertThat(densities.size()).isEqualTo(displayInfos.size)
+ assertThat(densities.get(displayInfos[0].displayId))
+ .isEqualTo(displayInfos[0].logicalDensityDpi)
- verify(mockTopologyChangedCallback).invoke(mockTopologyCopy)
+ verify(mockTopologyChangedCallback).invoke(
+ android.util.Pair(
+ mockTopologyCopy,
+ mockTopologyGraph
+ )
+ )
}
@Test
fun updateDisplay_notChanged() {
- whenever(mockTopology.updateDisplay(eq(Display.DEFAULT_DISPLAY), anyFloat(), anyFloat()))
- .thenReturn(false)
+ addDisplay()
- coordinator.onDisplayChanged(displayInfo)
+ for (displayInfo in displayInfos) {
+ coordinator.onDisplayChanged(displayInfo)
+ }
+
+ // Try to update a display that does not exist
+ val info = DisplayInfo()
+ info.displayId = 100
+ coordinator.onDisplayChanged(info)
+
+ verify(mockTopologyCopy, never()).getGraph(any())
+ verify(mockTopologyChangedCallback, never()).invoke(any())
+ }
+
+ @Test
+ fun updateDisplay_typeUnknown() {
+ displayInfos[0].type = Display.TYPE_UNKNOWN
+
+ coordinator.onDisplayChanged(displayInfos[0])
+
+ verify(mockTopology, never()).updateDisplay(anyInt(), anyFloat(), anyFloat())
+ verify(mockTopologyCopy, never()).getGraph(any())
+ verify(mockTopologyChangedCallback, never()).invoke(any())
+ }
+
+ @Test
+ fun updateDisplay_wifi() {
+ displayInfos[0].type = Display.TYPE_WIFI
+
+ coordinator.onDisplayChanged(displayInfos[0])
+
+ verify(mockTopology, never()).updateDisplay(anyInt(), anyFloat(), anyFloat())
+ verify(mockTopologyCopy, never()).getGraph(any())
+ verify(mockTopologyChangedCallback, never()).invoke(any())
+ }
+
+ @Test
+ fun updateDisplay_virtual() {
+ displayInfos[0].type = Display.TYPE_VIRTUAL
+
+ coordinator.onDisplayChanged(displayInfos[0])
+
+ verify(mockTopology, never()).updateDisplay(anyInt(), anyFloat(), anyFloat())
+ verify(mockTopologyCopy, never()).getGraph(any())
+ verify(mockTopologyChangedCallback, never()).invoke(any())
+ }
+
+ @Test
+ fun updateDisplay_internal_nonDefault() {
+ displayInfos[0].displayId = 2
+ displayInfos[0].type = Display.TYPE_INTERNAL
+
+ coordinator.onDisplayChanged(displayInfos[0])
+
+ verify(mockTopology, never()).updateDisplay(anyInt(), anyFloat(), anyFloat())
+ verify(mockTopologyCopy, never()).getGraph(any())
+ verify(mockTopologyChangedCallback, never()).invoke(any())
+ }
+
+ @Test
+ fun updateDisplay_external_extendedDisplaysDisabled() {
+ whenever(mockIsExtendedDisplayEnabled()).thenReturn(false)
+
+ for (displayInfo in displayInfos) {
+ coordinator.onDisplayChanged(displayInfo)
+ }
+ verify(mockTopology, never()).updateDisplay(anyInt(), anyFloat(), anyFloat())
+ verify(mockTopologyCopy, never()).getGraph(any())
+ verify(mockTopologyChangedCallback, never()).invoke(any())
+ }
+
+ @Test
+ fun updateDisplay_overlay_extendedDisplaysDisabled() {
+ displayInfos[0].type = Display.TYPE_OVERLAY
+ whenever(mockIsExtendedDisplayEnabled()).thenReturn(false)
+
+ coordinator.onDisplayChanged(displayInfos[0])
+
+ verify(mockTopology, never()).updateDisplay(anyInt(), anyFloat(), anyFloat())
+ verify(mockTopologyChangedCallback, never()).invoke(any())
+ verify(mockTopologyStore, never()).restoreTopology(any())
+ }
+
+ @Test
+ fun updateDisplay_notInDefaultDisplayGroup() {
+ displayInfos[0].displayGroupId = Display.DEFAULT_DISPLAY_GROUP + 1
+
+ coordinator.onDisplayChanged(displayInfos[0])
+
+ verify(mockTopology, never()).updateDisplay(anyInt(), anyFloat(), anyFloat())
+ verify(mockTopologyCopy, never()).getGraph(any())
verify(mockTopologyChangedCallback, never()).invoke(any())
}
@Test
fun removeDisplay() {
- whenever(mockTopology.removeDisplay(Display.DEFAULT_DISPLAY)).thenReturn(true)
+ addDisplay()
- coordinator.onDisplayRemoved(Display.DEFAULT_DISPLAY)
+ val displaysToRemove = listOf(0, 2, 3).map { displayInfos[it] }
+ for (displayInfo in displaysToRemove) {
+ whenever(mockTopology.removeDisplay(displayInfo.displayId)).thenReturn(true)
- verify(mockTopologyChangedCallback).invoke(mockTopologyCopy)
- verify(mockTopologyStore).restoreTopology(mockTopology)
+ coordinator.onDisplayRemoved(displayInfo.displayId)
+ }
+
+ val captor = ArgumentCaptor.forClass(SparseIntArray::class.java)
+ verify(mockTopologyCopy, times(displaysToRemove.size)).getGraph(captor.capture())
+ val densities = captor.value
+ assertThat(densities.size()).isEqualTo(displayInfos.size - displaysToRemove.size)
+ for (displayInfo in displaysToRemove) {
+ assertThat(densities.get(displayInfo.displayId)).isEqualTo(0)
+ }
+
+ verify(mockTopologyChangedCallback, times(displaysToRemove.size)).invoke(
+ android.util.Pair(
+ mockTopologyCopy,
+ mockTopologyGraph
+ )
+ )
+ verify(mockTopologyStore, times(displaysToRemove.size)).restoreTopology(mockTopology)
}
@Test
fun removeDisplay_notChanged() {
- whenever(mockTopology.removeDisplay(Display.DEFAULT_DISPLAY)).thenReturn(false)
-
- coordinator.onDisplayRemoved(Display.DEFAULT_DISPLAY)
+ coordinator.onDisplayRemoved(100)
verify(mockTopologyChangedCallback, never()).invoke(any())
verify(mockTopologyStore, never()).restoreTopology(any())
@@ -149,12 +404,20 @@ class DisplayTopologyCoordinatorTest {
fun setTopology_normalize() {
val topology = mock<DisplayTopology>()
val topologyCopy = mock<DisplayTopology>()
+ val topologyGraph = mock<DisplayTopologyGraph>()
whenever(topology.copy()).thenReturn(topologyCopy)
+ whenever(topologyCopy.getGraph(any())).thenReturn(topologyGraph)
whenever(mockTopologyStore.saveTopology(topology)).thenReturn(true)
+
coordinator.topology = topology
verify(topology).normalize()
- verify(mockTopologyChangedCallback).invoke(topologyCopy)
+ verify(mockTopologyChangedCallback).invoke(
+ android.util.Pair(
+ topologyCopy,
+ topologyGraph
+ )
+ )
verify(mockTopologyStore).saveTopology(topology)
verify(mockTopologySavedCallback).invoke()
}
diff --git a/services/tests/displayservicetests/src/com/android/server/display/color/ColorDisplayServiceTest.java b/services/tests/displayservicetests/src/com/android/server/display/color/ColorDisplayServiceTest.java
index 4e81b3530b62..22c10f967398 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/color/ColorDisplayServiceTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/color/ColorDisplayServiceTest.java
@@ -19,6 +19,7 @@ package com.android.server.display.color;
import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertWithMessage;
+import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
@@ -1194,6 +1195,66 @@ public class ColorDisplayServiceTest {
verify(mRbcSpy, times(1)).setUp(eq(mContext), anyBoolean());
}
+ @Test
+ public void sliderScalesWithinRange() {
+ // setup
+ startService();
+ reset(mRbcSpy);
+ doReturn(true).when(mRbcSpy).isAvailable(mContext);
+ when(mContext.getResources().getInteger(
+ R.integer.config_reduceBrightColorsStrengthMax)).thenReturn(85);
+ when(mContext.getResources().getInteger(
+ R.integer.config_reduceBrightColorsStrengthMin)).thenReturn(10);
+ when(mContext.getResources().getInteger(
+ R.integer.config_reduceBrightColorsStrengthDefault)).thenReturn(44);
+
+ // Valid value test //
+ // set on, and to 90% of range
+ Settings.Secure.putInt(mContext.getContentResolver(),
+ Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 1);
+ Settings.Secure.putInt(mContext.getContentResolver(),
+ Settings.Secure.REDUCE_BRIGHT_COLORS_LEVEL, 90);
+ // update
+ mCds.mHandler.runWithScissors(
+ () -> mCds.onDisplayColorModeChanged(ColorDisplayManager.COLOR_MODE_NATURAL),
+ 1000);
+ // verify this:
+ assertEquals(90, Settings.Secure.getInt(mContext.getContentResolver(),
+ Settings.Secure.REDUCE_BRIGHT_COLORS_LEVEL, 0));
+ assertEquals(/* 85 - 10 * 0.90f + 10 = */ 77, mRbcSpy.getStrength());
+
+ // Out of range test //
+ // set on, and to 101% of range
+ Settings.Secure.putInt(mContext.getContentResolver(),
+ Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 1);
+ Settings.Secure.putInt(mContext.getContentResolver(),
+ Settings.Secure.REDUCE_BRIGHT_COLORS_LEVEL, 101);
+ // update
+ mCds.mHandler.runWithScissors(
+ () -> mCds.onDisplayColorModeChanged(ColorDisplayManager.COLOR_MODE_NATURAL),
+ 1000);
+ // verify this:
+ assertEquals(101, Settings.Secure.getInt(mContext.getContentResolver(),
+ Settings.Secure.REDUCE_BRIGHT_COLORS_LEVEL, 0));
+ assertEquals(/* 85 - 10 * 1.0f + 10 = */ 85, mRbcSpy.getStrength());
+
+ // Invalid value test //
+ // set on, and to an invalid value
+ Settings.Secure.putInt(mContext.getContentResolver(),
+ Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 1);
+ Settings.Secure.putInt(mContext.getContentResolver(),
+ Settings.Secure.REDUCE_BRIGHT_COLORS_LEVEL, -1);
+ // update
+ mCds.mHandler.runWithScissors(
+ () -> mCds.onDisplayColorModeChanged(ColorDisplayManager.COLOR_MODE_NATURAL),
+ 1000);
+ // verify this, setting will stay the same, strength should set to default?:
+ assertEquals(-1, Settings.Secure.getInt(mContext.getContentResolver(),
+ Settings.Secure.REDUCE_BRIGHT_COLORS_LEVEL, 0));
+ // default value is set instead!
+ assertEquals(/* default = */ 44, mRbcSpy.getStrength());
+ }
+
/**
* Configures Night display to use a custom schedule.
*
diff --git a/services/tests/dreamservicetests/src/com/android/server/dreams/DreamManagerServiceMockingTest.java b/services/tests/dreamservicetests/src/com/android/server/dreams/DreamManagerServiceMockingTest.java
deleted file mode 100644
index 992b8534accc..000000000000
--- a/services/tests/dreamservicetests/src/com/android/server/dreams/DreamManagerServiceMockingTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.dreams;
-
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import android.app.ActivityManagerInternal;
-import android.content.ContextWrapper;
-import android.content.pm.UserInfo;
-import android.content.res.Resources;
-import android.os.PowerManagerInternal;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.provider.Settings;
-
-import androidx.test.InstrumentationRegistry;
-
-import com.android.internal.util.test.LocalServiceKeeperRule;
-import com.android.server.SystemService;
-import com.android.server.testutils.TestHandler;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.mockito.MockitoSession;
-import org.mockito.quality.Strictness;
-
-/**
- * Collection of tests for exercising the {@link DreamManagerService} lifecycle.
- */
-public class DreamManagerServiceMockingTest {
- private ContextWrapper mContextSpy;
- private Resources mResourcesSpy;
-
- @Mock
- private ActivityManagerInternal mActivityManagerInternalMock;
-
- @Mock
- private PowerManagerInternal mPowerManagerInternalMock;
-
- @Mock
- private UserManager mUserManagerMock;
-
- @Rule
- public LocalServiceKeeperRule mLocalServiceKeeperRule = new LocalServiceKeeperRule();
-
- private TestHandler mTestHandler;
- private MockitoSession mMockitoSession;
-
- @Before
- public void setUp() throws Exception {
- mTestHandler = new TestHandler(/* callback= */ null);
- MockitoAnnotations.initMocks(this);
- mContextSpy = spy(new ContextWrapper(InstrumentationRegistry.getContext()));
- mResourcesSpy = spy(mContextSpy.getResources());
- when(mContextSpy.getResources()).thenReturn(mResourcesSpy);
-
- mLocalServiceKeeperRule.overrideLocalService(
- ActivityManagerInternal.class, mActivityManagerInternalMock);
- mLocalServiceKeeperRule.overrideLocalService(
- PowerManagerInternal.class, mPowerManagerInternalMock);
-
- when(mContextSpy.getSystemService(UserManager.class)).thenReturn(mUserManagerMock);
- mMockitoSession = mockitoSession()
- .initMocks(this)
- .strictness(Strictness.LENIENT)
- .mockStatic(Settings.Secure.class)
- .startMocking();
- }
-
- @After
- public void tearDown() throws Exception {
- mMockitoSession.finishMocking();
- }
-
- private DreamManagerService createService() {
- return new DreamManagerService(mContextSpy, mTestHandler);
- }
-
- @Test
- public void testSettingsQueryUserChange() {
- final DreamManagerService service = createService();
- final SystemService.TargetUser from =
- new SystemService.TargetUser(mock(UserInfo.class));
- final SystemService.TargetUser to =
- new SystemService.TargetUser(mock(UserInfo.class));
- service.onUserSwitching(from, to);
- verify(() -> Settings.Secure.getIntForUser(any(),
- eq(Settings.Secure.SCREENSAVER_ENABLED),
- anyInt(),
- eq(UserHandle.USER_CURRENT)));
- }
-}
diff --git a/services/tests/dreamservicetests/src/com/android/server/dreams/DreamManagerServiceTest.java b/services/tests/dreamservicetests/src/com/android/server/dreams/DreamManagerServiceTest.java
new file mode 100644
index 000000000000..4efc2582d796
--- /dev/null
+++ b/services/tests/dreamservicetests/src/com/android/server/dreams/DreamManagerServiceTest.java
@@ -0,0 +1,203 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.dreams;
+
+import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
+
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.argThat;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.app.ActivityManagerInternal;
+import android.content.BroadcastReceiver;
+import android.content.ContextWrapper;
+import android.content.Intent;
+import android.os.BatteryManager;
+import android.os.BatteryManagerInternal;
+import android.os.PowerManagerInternal;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.provider.Settings;
+import android.testing.TestableContext;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.internal.util.test.LocalServiceKeeperRule;
+import com.android.server.SystemService;
+import com.android.server.input.InputManagerInternal;
+import com.android.server.testutils.TestHandler;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+/**
+ * Test class for {@link DreamManagerService}.
+ */
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class DreamManagerServiceTest {
+ private ContextWrapper mContextSpy;
+
+ @Mock
+ private ActivityManagerInternal mActivityManagerInternalMock;
+ @Mock
+ private BatteryManagerInternal mBatteryManagerInternal;
+
+ @Mock
+ private InputManagerInternal mInputManagerInternal;
+ @Mock
+ private PowerManagerInternal mPowerManagerInternalMock;
+
+ @Mock
+ private BatteryManager mBatteryManager;
+ @Mock
+ private UserManager mUserManagerMock;
+
+ @Rule
+ public LocalServiceKeeperRule mLocalServiceKeeperRule = new LocalServiceKeeperRule();
+
+
+ @Rule
+ public final TestableContext mContext = new TestableContext(
+ getInstrumentation().getContext());
+
+ private TestHandler mTestHandler;
+
+ @Before
+ public void setUp() throws Exception {
+ mTestHandler = new TestHandler(/* callback= */ null);
+ MockitoAnnotations.initMocks(this);
+ mContextSpy = spy(mContext);
+
+ mLocalServiceKeeperRule.overrideLocalService(
+ ActivityManagerInternal.class, mActivityManagerInternalMock);
+ mLocalServiceKeeperRule.overrideLocalService(
+ BatteryManagerInternal.class, mBatteryManagerInternal);
+ mLocalServiceKeeperRule.overrideLocalService(
+ InputManagerInternal.class, mInputManagerInternal);
+ mLocalServiceKeeperRule.overrideLocalService(
+ PowerManagerInternal.class, mPowerManagerInternalMock);
+
+ when(mContextSpy.getSystemService(BatteryManager.class)).thenReturn(mBatteryManager);
+ when(mContextSpy.getSystemService(UserManager.class)).thenReturn(mUserManagerMock);
+ }
+
+ private DreamManagerService createService() {
+ return new DreamManagerService(mContextSpy, mTestHandler);
+ }
+
+ @Test
+ public void testSettingsQueryUserChange() {
+ // Enable dreams.
+ Settings.Secure.putIntForUser(mContextSpy.getContentResolver(),
+ Settings.Secure.SCREENSAVER_ENABLED, 1,
+ UserHandle.USER_CURRENT);
+
+ // Initialize dream service so settings are read.
+ final DreamManagerService service = createService();
+ service.onBootPhase(SystemService.PHASE_THIRD_PARTY_APPS_CAN_START);
+
+ // Dreams are enabled.
+ assertThat(service.dreamsEnabled()).isTrue();
+
+ // Disable dreams.
+ Settings.Secure.putIntForUser(mContextSpy.getContentResolver(),
+ Settings.Secure.SCREENSAVER_ENABLED, 0,
+ UserHandle.USER_CURRENT);
+
+ // Switch users, dreams are disabled.
+ service.onUserSwitching(null, null);
+ assertThat(service.dreamsEnabled()).isFalse();
+ }
+
+ @Test
+ public void testDreamConditionActive_onDock() {
+ // Enable dreaming on dock.
+ Settings.Secure.putIntForUser(mContextSpy.getContentResolver(),
+ Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, 1,
+ UserHandle.USER_CURRENT);
+
+ // Initialize service so settings are read.
+ final DreamManagerService service = createService();
+ service.onBootPhase(SystemService.PHASE_THIRD_PARTY_APPS_CAN_START);
+ assertThat(service.dreamConditionActiveInternal()).isFalse();
+
+ // Dock event receiver is registered.
+ ArgumentCaptor<BroadcastReceiver> receiverCaptor = ArgumentCaptor.forClass(
+ BroadcastReceiver.class);
+ verify(mContextSpy).registerReceiver(receiverCaptor.capture(),
+ argThat((arg) -> arg.hasAction(Intent.ACTION_DOCK_EVENT)));
+
+ // Device is docked.
+ Intent dockIntent = new Intent(Intent.ACTION_DOCK_EVENT);
+ dockIntent.putExtra(Intent.EXTRA_DOCK_STATE, Intent.EXTRA_DOCK_STATE_HE_DESK);
+ receiverCaptor.getValue().onReceive(null, dockIntent);
+
+ // Dream condition is active.
+ assertThat(service.dreamConditionActiveInternal()).isTrue();
+ }
+
+ @Test
+ public void testDreamConditionActive_postured() {
+ // Enable dreaming while postured.
+ Settings.Secure.putIntForUser(mContextSpy.getContentResolver(),
+ Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, 0,
+ UserHandle.USER_CURRENT);
+ Settings.Secure.putIntForUser(mContextSpy.getContentResolver(),
+ Settings.Secure.SCREENSAVER_ACTIVATE_ON_POSTURED, 1,
+ UserHandle.USER_CURRENT);
+
+ // Initialize service so settings are read.
+ final DreamManagerService service = createService();
+ service.onBootPhase(SystemService.PHASE_THIRD_PARTY_APPS_CAN_START);
+ assertThat(service.dreamConditionActiveInternal()).isFalse();
+
+ // Device is postured.
+ service.setDevicePosturedInternal(true);
+
+ // Dream condition is active.
+ assertThat(service.dreamConditionActiveInternal()).isTrue();
+ }
+
+ @Test
+ public void testDreamConditionActive_charging() {
+ // Enable dreaming while charging only.
+ Settings.Secure.putIntForUser(mContextSpy.getContentResolver(),
+ Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, 1,
+ UserHandle.USER_CURRENT);
+
+ // Device is charging.
+ when(mBatteryManager.isCharging()).thenReturn(true);
+
+ // Initialize service so settings are read.
+ final DreamManagerService service = createService();
+ service.onBootPhase(SystemService.PHASE_THIRD_PARTY_APPS_CAN_START);
+
+ // Dream condition is active.
+ assertThat(service.dreamConditionActiveInternal()).isTrue();
+ }
+}
diff --git a/services/tests/mockingservicestests/src/com/android/server/job/controllers/JobStatusTest.java b/services/tests/mockingservicestests/src/com/android/server/job/controllers/JobStatusTest.java
index 86101cf591e7..2cd105ba5317 100644
--- a/services/tests/mockingservicestests/src/com/android/server/job/controllers/JobStatusTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/job/controllers/JobStatusTest.java
@@ -86,6 +86,8 @@ public class JobStatusTest {
private static final double DELTA = 0.00001;
private static final String TEST_PACKAGE = "job.test.package";
private static final ComponentName TEST_JOB_COMPONENT = new ComponentName(TEST_PACKAGE, "test");
+ private static final String SOURCE_PACKAGE = "com.android.frameworks.mockingservicestests";
+ private static final int SOURCE_USER_ID = 0;
private static final Uri IMAGES_MEDIA_URI = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
private static final Uri VIDEO_MEDIA_URI = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
@@ -1342,6 +1344,35 @@ public class JobStatusTest {
assertFalse(job.readinessStatusWithConstraint(CONSTRAINT_FLEXIBLE, false));
}
+ @Test
+ public void testJobName_NoTagNoNamespace() {
+ final JobInfo jobInfo = new JobInfo.Builder(101, new ComponentName("foo", "bar")).build();
+ JobStatus jobStatus = createJobStatus(jobInfo, null, -1, null, null);
+ assertEquals("foo/bar", jobStatus.getBatteryName());
+ }
+
+ @Test
+ public void testJobName_NoTagWithNamespace() {
+ final JobInfo jobInfo = new JobInfo.Builder(101, new ComponentName("foo", "bar")).build();
+ JobStatus jobStatus = createJobStatus(jobInfo, null, -1, "TestNamespace", null);
+ assertEquals("@TestNamespace@foo/bar", jobStatus.getBatteryName());
+ }
+
+ @Test
+ public void testJobName_WithTagNoNamespace() {
+ final JobInfo jobInfo = new JobInfo.Builder(101, new ComponentName("foo", "bar")).build();
+ JobStatus jobStatus = createJobStatus(jobInfo, SOURCE_PACKAGE, 0, null, "TestTag");
+ assertEquals("TestTag:foo", jobStatus.getBatteryName());
+ }
+
+ @Test
+ public void testJobName_WithTagAndNamespace() {
+ final JobInfo jobInfo = new JobInfo.Builder(101, new ComponentName("foo", "bar")).build();
+ JobStatus jobStatus = createJobStatus(jobInfo, SOURCE_PACKAGE, 0,
+ "TestNamespace", "TestTag");
+ assertEquals("@TestNamespace@TestTag:foo", jobStatus.getBatteryName());
+ }
+
private void markExpeditedQuotaApproved(JobStatus job, boolean isApproved) {
if (job.isRequestedExpeditedJob()) {
job.setExpeditedJobQuotaApproved(sElapsedRealtimeClock.millis(), isApproved);
@@ -1369,4 +1400,12 @@ public class JobStatusTest {
jobStatus.serviceProcessName = "testProcess";
return jobStatus;
}
+
+ private static JobStatus createJobStatus(
+ JobInfo job, String packageName, int callingUid, String namespace, String tag) {
+ JobStatus jobStatus = JobStatus.createFromJobInfo(
+ job, callingUid, packageName, SOURCE_USER_ID, namespace, tag);
+ jobStatus.serviceProcessName = "testProcess";
+ return jobStatus;
+ }
}
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java
index 8dc657ed75a6..f79cb1105611 100644
--- a/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java
@@ -61,9 +61,12 @@ import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.storage.StorageManager;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
import android.platform.test.annotations.RequiresFlagsEnabled;
import android.platform.test.flag.junit.SetFlagsRule;
import android.provider.Settings;
+import android.telecom.TelecomManager;
import android.util.Log;
import android.util.Pair;
import android.util.SparseArray;
@@ -141,6 +144,7 @@ public final class UserManagerServiceTest {
.spyStatic(ActivityManager.class)
.mockStatic(Settings.Global.class)
.mockStatic(Settings.Secure.class)
+ .mockStatic(Resources.class)
.build();
@Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(
@@ -165,6 +169,7 @@ public final class UserManagerServiceTest {
private @Mock PackageManagerInternal mPackageManagerInternal;
private @Mock KeyguardManager mKeyguardManager;
private @Mock PowerManager mPowerManager;
+ private @Mock TelecomManager mTelecomManager;
/**
* Reference to the {@link UserManagerService} being tested.
@@ -191,6 +196,7 @@ public final class UserManagerServiceTest {
when(mSpiedContext.getSystemService(StorageManager.class)).thenReturn(mStorageManager);
doReturn(mKeyguardManager).when(mSpiedContext).getSystemService(KeyguardManager.class);
when(mSpiedContext.getSystemService(PowerManager.class)).thenReturn(mPowerManager);
+ when(mSpiedContext.getSystemService(TelecomManager.class)).thenReturn(mTelecomManager);
mockGetLocalService(LockSettingsInternal.class, mLockSettingsInternal);
mockGetLocalService(PackageManagerInternal.class, mPackageManagerInternal);
doNothing().when(mSpiedContext).sendBroadcastAsUser(any(), any(), any());
@@ -202,6 +208,7 @@ public final class UserManagerServiceTest {
doReturn(0)
.when(mSpyResources)
.getInteger(com.android.internal.R.integer.config_hsumBootStrategy);
+ doReturn(mSpyResources).when(() -> Resources.getSystem());
// Must construct UserManagerService in the UiThread
mTestDir = new File(mRealContext.getDataDir(), "umstest");
@@ -883,9 +890,7 @@ public final class UserManagerServiceTest {
.getInteger(com.android.internal.R.integer.config_hsumBootStrategy);
// Even if the headless system user switchable flag is true, the boot user should be the
// first switchable full user.
- doReturn(true)
- .when(mSpyResources)
- .getBoolean(com.android.internal.R.bool.config_canSwitchToHeadlessSystemUser);
+ mockCanSwitchToHeadlessSystemUser(true);
assertThat(mUms.getBootUser()).isEqualTo(USER_ID);
}
@@ -904,6 +909,75 @@ public final class UserManagerServiceTest {
() -> mUms.getBootUser());
}
+ @Test
+ @EnableFlags(android.multiuser.Flags.FLAG_LOGOUT_USER_API)
+ public void testGetUserLogoutability_HsumAndInteractiveHeadlessSystem_UserCanLogout()
+ throws Exception {
+ setSystemUserHeadless(true);
+ addUser(USER_ID);
+ setLastForegroundTime(USER_ID, 1_000_000L);
+ mockCurrentUser(USER_ID);
+
+ mockCanSwitchToHeadlessSystemUser(true);
+ mockUserIsInCall(false);
+
+ assertThat(mUms.getUserLogoutability(USER_ID))
+ .isEqualTo(UserManager.LOGOUTABILITY_STATUS_OK);
+ }
+
+ @Test
+ @EnableFlags(android.multiuser.Flags.FLAG_LOGOUT_USER_API)
+ public void testGetUserLogoutability_HsumAndNonInteractiveHeadlessSystem_UserCannotLogout()
+ throws Exception {
+ setSystemUserHeadless(true);
+ mockCanSwitchToHeadlessSystemUser(false);
+ addUser(USER_ID);
+ setLastForegroundTime(USER_ID, 1_000_000L);
+ mockCurrentUser(USER_ID);
+ mockUserIsInCall(false);
+
+ assertThat(mUms.getUserLogoutability(USER_ID))
+ .isEqualTo(UserManager.LOGOUTABILITY_STATUS_NO_SUITABLE_USER_TO_LOGOUT_TO);
+ }
+
+ @Test
+ @EnableFlags(android.multiuser.Flags.FLAG_LOGOUT_USER_API)
+ public void testGetUserLogoutability_Hsum_SystemUserCannotLogout() throws Exception {
+ setSystemUserHeadless(true);
+ mockCurrentUser(UserHandle.USER_SYSTEM);
+ assertThat(mUms.getUserLogoutability(UserHandle.USER_SYSTEM))
+ .isEqualTo(UserManager.LOGOUTABILITY_STATUS_CANNOT_LOGOUT_SYSTEM_USER);
+ }
+
+ @Test
+ @EnableFlags(android.multiuser.Flags.FLAG_LOGOUT_USER_API)
+ public void testGetUserLogoutability_NonHsum_SystemUserCannotLogout() throws Exception {
+ setSystemUserHeadless(false);
+ mockCurrentUser(UserHandle.USER_SYSTEM);
+ assertThat(
+ mUms.getUserLogoutability(UserHandle.USER_SYSTEM)).isEqualTo(
+ UserManager.LOGOUTABILITY_STATUS_CANNOT_LOGOUT_SYSTEM_USER);
+ }
+
+ @Test
+ @EnableFlags(android.multiuser.Flags.FLAG_LOGOUT_USER_API)
+ public void testGetUserLogoutability_CannotSwitch_CannotLogout() throws Exception {
+ setSystemUserHeadless(true);
+ addUser(USER_ID);
+ addUser(OTHER_USER_ID);
+ setLastForegroundTime(OTHER_USER_ID, 1_000_000L);
+ mockCurrentUser(USER_ID);
+ mUms.setUserRestriction(DISALLOW_USER_SWITCH, true, USER_ID);
+ assertThat(mUms.getUserLogoutability(USER_ID))
+ .isEqualTo(UserManager.LOGOUTABILITY_STATUS_CANNOT_SWITCH);
+ }
+
+ @Test
+ @DisableFlags(android.multiuser.Flags.FLAG_LOGOUT_USER_API)
+ public void testGetUserLogoutability_LogoutDisabled() throws Exception {
+ assertThrows(UnsupportedOperationException.class, () -> mUms.getUserLogoutability(USER_ID));
+ }
+
/**
* Returns true if the user's XML file has Default restrictions
* @param userId Id of the user.
@@ -1019,6 +1093,16 @@ public final class UserManagerServiceTest {
doReturn(service).when(() -> LocalServices.getService(serviceClass));
}
+ private void mockCanSwitchToHeadlessSystemUser(boolean canSwitch) {
+ doReturn(canSwitch)
+ .when(mSpyResources)
+ .getBoolean(com.android.internal.R.bool.config_canSwitchToHeadlessSystemUser);
+ }
+
+ private void mockUserIsInCall(boolean isInCall) {
+ when(mTelecomManager.isInCall()).thenReturn(isInCall);
+ }
+
private void addDefaultProfileAndParent() {
addUser(PARENT_USER_ID);
addProfile(PROFILE_USER_ID, PARENT_USER_ID);
@@ -1061,6 +1145,7 @@ public final class UserManagerServiceTest {
private void addUserData(TestUserData userData) {
Log.d(TAG, "Adding " + userData);
mUsers.put(userData.info.id, userData);
+ mUms.putUserInfo(userData.info);
}
private void setSystemUserHeadless(boolean headless) {
diff --git a/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java b/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java
index b92afc5c0ca7..a5073599b29e 100644
--- a/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java
+++ b/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java
@@ -64,6 +64,7 @@ import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.content.pm.ParceledListSlice;
import android.content.pm.ServiceInfo;
+import android.content.res.Resources;
import android.graphics.Color;
import android.hardware.display.DisplayManager;
import android.hardware.display.DisplayManager.DisplayListener;
@@ -148,6 +149,8 @@ public class WallpaperManagerServiceTests {
private IPackageManager mIpm = AppGlobals.getPackageManager();
+ private Resources mResources = sContext.getResources();
+
@Mock
private DisplayManager mDisplayManager;
@@ -245,6 +248,8 @@ public class WallpaperManagerServiceTests {
doReturn(displays).when(mDisplayManager).getDisplays();
spyOn(mIpm);
+ spyOn(mResources);
+ doReturn(true).when(mResources).getBoolean(eq(R.bool.config_isDesktopModeSupported));
mService = new TestWallpaperManagerService(sContext);
spyOn(mService);
mService.systemReady();
@@ -731,7 +736,7 @@ public class WallpaperManagerServiceTests {
// WHEN display ID, 2, is ready.
WallpaperManagerInternal wallpaperManagerInternal = LocalServices.getService(
WallpaperManagerInternal.class);
- wallpaperManagerInternal.onDisplayReady(testDisplayId);
+ wallpaperManagerInternal.onDisplayAddSystemDecorations(testDisplayId);
// Then there is a connection established for the system & lock wallpaper for display ID, 2.
verify(mockIWallpaperService).attach(
@@ -771,7 +776,7 @@ public class WallpaperManagerServiceTests {
// WHEN display ID, 2, is ready.
WallpaperManagerInternal wallpaperManagerInternal = LocalServices.getService(
WallpaperManagerInternal.class);
- wallpaperManagerInternal.onDisplayReady(testDisplayId);
+ wallpaperManagerInternal.onDisplayAddSystemDecorations(testDisplayId);
// Then there is a connection established for the system wallpaper for display ID, 2.
verify(mockIWallpaperService).attach(
@@ -818,7 +823,7 @@ public class WallpaperManagerServiceTests {
// WHEN display ID, 2, is ready.
WallpaperManagerInternal wallpaperManagerInternal = LocalServices.getService(
WallpaperManagerInternal.class);
- wallpaperManagerInternal.onDisplayReady(testDisplayId);
+ wallpaperManagerInternal.onDisplayAddSystemDecorations(testDisplayId);
// Then there is a connection established for the fallback wallpaper for display ID, 2.
verify(mockIWallpaperService).attach(
@@ -856,7 +861,7 @@ public class WallpaperManagerServiceTests {
// GIVEN wallpaper connections have been established for display ID, 2.
WallpaperManagerInternal wallpaperManagerInternal = LocalServices.getService(
WallpaperManagerInternal.class);
- wallpaperManagerInternal.onDisplayReady(testDisplayId);
+ wallpaperManagerInternal.onDisplayAddSystemDecorations(testDisplayId);
// Save displayConnector for displayId 2 before display removal.
WallpaperManagerService.DisplayConnector displayConnector =
wallpaper.connection.getDisplayConnectorOrCreate(testDisplayId);
@@ -894,7 +899,7 @@ public class WallpaperManagerServiceTests {
// GIVEN wallpaper connections have been established for display ID, 2.
WallpaperManagerInternal wallpaperManagerInternal = LocalServices.getService(
WallpaperManagerInternal.class);
- wallpaperManagerInternal.onDisplayReady(testDisplayId);
+ wallpaperManagerInternal.onDisplayAddSystemDecorations(testDisplayId);
// Save displayConnectors for display ID, 2, before display removal.
WallpaperManagerService.DisplayConnector systemWallpaperDisplayConnector =
systemWallpaper.connection.getDisplayConnectorOrCreate(testDisplayId);
@@ -930,7 +935,7 @@ public class WallpaperManagerServiceTests {
// GIVEN wallpaper connections have been established for display ID, 2.
WallpaperManagerInternal wallpaperManagerInternal = LocalServices.getService(
WallpaperManagerInternal.class);
- wallpaperManagerInternal.onDisplayReady(testDisplayId);
+ wallpaperManagerInternal.onDisplayAddSystemDecorations(testDisplayId);
// Save fallback wallpaper displayConnector for display ID, 2, before display removal.
WallpaperManagerService.DisplayConnector fallbackWallpaperConnector =
mService.mFallbackWallpaper.connection.getDisplayConnectorOrCreate(testDisplayId);
@@ -977,7 +982,7 @@ public class WallpaperManagerServiceTests {
// GIVEN wallpaper connections have been established for displayID, 2.
WallpaperManagerInternal wallpaperManagerInternal = LocalServices.getService(
WallpaperManagerInternal.class);
- wallpaperManagerInternal.onDisplayReady(testDisplayId);
+ wallpaperManagerInternal.onDisplayAddSystemDecorations(testDisplayId);
// Save displayConnector for displayId 2 before display removal.
WallpaperManagerService.DisplayConnector displayConnector =
wallpaper.connection.getDisplayConnectorOrCreate(testDisplayId);
@@ -1011,7 +1016,7 @@ public class WallpaperManagerServiceTests {
// GIVEN wallpaper connections have been established for displayID, 2.
WallpaperManagerInternal wallpaperManagerInternal = LocalServices.getService(
WallpaperManagerInternal.class);
- wallpaperManagerInternal.onDisplayReady(testDisplayId);
+ wallpaperManagerInternal.onDisplayAddSystemDecorations(testDisplayId);
// Save displayConnectors for displayId 2 before display removal.
WallpaperManagerService.DisplayConnector systemWallpaperDisplayConnector =
systemWallpaper.connection.getDisplayConnectorOrCreate(testDisplayId);
@@ -1028,6 +1033,154 @@ public class WallpaperManagerServiceTests {
}
// Verify a secondary display removes system decorations ended
+ // Test setWallpaperComponent on multiple displays.
+ // GIVEN 3 displays, 0, 2, 3, the new wallpaper is only compatible for display 0 and 3 but not
+ // 2.
+ // WHEN the new wallpaper is set for system and lock via setWallpaperComponent.
+ // THEN there are 2 connections in mLastWallpaper and 1 connection in mFallbackWallpaper.
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_CONNECTED_DISPLAYS_WALLPAPER)
+ public void setWallpaperComponent_multiDisplays_shouldHaveExpectedConnections() {
+ // Skip if there is no pre-defined default wallpaper component.
+ assumeThat(sDefaultWallpaperComponent,
+ not(CoreMatchers.equalTo(sImageWallpaperComponentName)));
+
+ final int testUserId = USER_SYSTEM;
+ mService.switchUser(testUserId, null);
+ final int incompatibleDisplayId = 2;
+ final int compatibleDisplayId = 3;
+ setUpDisplays(List.of(DEFAULT_DISPLAY, incompatibleDisplayId, compatibleDisplayId));
+ mService.removeWallpaperCompatibleDisplayForTest(incompatibleDisplayId);
+
+ mService.setWallpaperComponent(sImageWallpaperComponentName, sContext.getOpPackageName(),
+ FLAG_SYSTEM | FLAG_LOCK, testUserId);
+
+ verifyLastWallpaperData(testUserId, sImageWallpaperComponentName);
+ verifyCurrentSystemData(testUserId);
+ assertThat(mService.mLastWallpaper.connection.getConnectedEngineSize()).isEqualTo(2);
+ assertThat(mService.mLastWallpaper.connection.containsDisplay(DEFAULT_DISPLAY)).isTrue();
+ assertThat(mService.mLastWallpaper.connection.containsDisplay(compatibleDisplayId))
+ .isTrue();
+ assertThat(mService.mFallbackWallpaper.connection.getConnectedEngineSize()).isEqualTo(1);
+ assertThat(mService.mFallbackWallpaper.connection.containsDisplay(incompatibleDisplayId))
+ .isTrue();
+ assertThat(mService.mLastLockWallpaper).isNull();
+ }
+
+ // Test setWallpaperComponent on multiple displays.
+ // GIVEN 3 displays, 0, 2, 3, the existing wallpaper is only compatible for display 0 and 3 but
+ // not 2.
+ // GIVEN the new wallpaper is compatible to 2.
+ // WHEN the new wallpaper is set for system and lock via setWallpaperComponent.
+ // THEN there are 3 connections in mLastWallpaper and 0 connection in mFallbackWallpaper.
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_CONNECTED_DISPLAYS_WALLPAPER)
+ public void setWallpaperComponent_multiDisplays_displayBecomeCompatible_shouldHaveExpectedConnections() {
+ // Skip if there is no pre-defined default wallpaper component.
+ assumeThat(sDefaultWallpaperComponent,
+ not(CoreMatchers.equalTo(sImageWallpaperComponentName)));
+
+ final int testUserId = USER_SYSTEM;
+ mService.switchUser(testUserId, null);
+ final int display2 = 2;
+ final int display3 = 3;
+ setUpDisplays(List.of(DEFAULT_DISPLAY, display2, display3));
+ mService.removeWallpaperCompatibleDisplayForTest(display2);
+ mService.setWallpaperComponent(sImageWallpaperComponentName, sContext.getOpPackageName(),
+ FLAG_SYSTEM | FLAG_LOCK, testUserId);
+
+ mService.addWallpaperCompatibleDisplayForTest(display2);
+ mService.setWallpaperComponent(sImageWallpaperComponentName, sContext.getOpPackageName(),
+ FLAG_SYSTEM | FLAG_LOCK, testUserId);
+
+ verifyLastWallpaperData(testUserId, sImageWallpaperComponentName);
+ verifyCurrentSystemData(testUserId);
+ assertThat(mService.mLastWallpaper.connection.getConnectedEngineSize()).isEqualTo(3);
+ assertThat(mService.mLastWallpaper.connection.containsDisplay(DEFAULT_DISPLAY)).isTrue();
+ assertThat(mService.mLastWallpaper.connection.containsDisplay(display2)).isTrue();
+ assertThat(mService.mLastWallpaper.connection.containsDisplay(display3)).isTrue();
+ assertThat(mService.mFallbackWallpaper.connection.getConnectedEngineSize()).isEqualTo(0);
+ assertThat(mService.mLastLockWallpaper).isNull();
+ }
+
+ // Test setWallpaperComponent on multiple displays.
+ // GIVEN 3 displays, 0, 2, 3, the existing wallpaper is only compatible for display 0 and 3 but
+ // not 2.
+ // GIVEN the new wallpaper is incompatible to 2 and 3.
+ // WHEN the new wallpaper is set for system and lock via setWallpaperComponent.
+ // THEN there are 1 connections in mLastWallpaper and 2 connection in mFallbackWallpaper.
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_CONNECTED_DISPLAYS_WALLPAPER)
+ public void setWallpaperComponent_multiDisplays_displayBecomeIncompatible_shouldHaveExpectedConnections() {
+ // Skip if there is no pre-defined default wallpaper component.
+ assumeThat(sDefaultWallpaperComponent,
+ not(CoreMatchers.equalTo(sImageWallpaperComponentName)));
+
+ final int testUserId = USER_SYSTEM;
+ mService.switchUser(testUserId, null);
+ final int display2 = 2;
+ final int display3 = 3;
+ setUpDisplays(List.of(DEFAULT_DISPLAY, display2, display3));
+ mService.removeWallpaperCompatibleDisplayForTest(display2);
+ mService.setWallpaperComponent(sImageWallpaperComponentName, sContext.getOpPackageName(),
+ FLAG_SYSTEM | FLAG_LOCK, testUserId);
+
+ mService.removeWallpaperCompatibleDisplayForTest(display3);
+ mService.setWallpaperComponent(sImageWallpaperComponentName, sContext.getOpPackageName(),
+ FLAG_SYSTEM | FLAG_LOCK, testUserId);
+
+ verifyLastWallpaperData(testUserId, sImageWallpaperComponentName);
+ verifyCurrentSystemData(testUserId);
+ assertThat(mService.mLastWallpaper.connection.getConnectedEngineSize()).isEqualTo(1);
+ assertThat(mService.mLastWallpaper.connection.containsDisplay(DEFAULT_DISPLAY)).isTrue();
+ assertThat(mService.mFallbackWallpaper.connection.getConnectedEngineSize()).isEqualTo(2);
+ assertThat(mService.mFallbackWallpaper.connection.containsDisplay(display2)).isTrue();
+ assertThat(mService.mFallbackWallpaper.connection.containsDisplay(display3)).isTrue();
+ assertThat(mService.mLastLockWallpaper).isNull();
+ }
+
+ // Test setWallpaperComponent on multiple displays.
+ // GIVEN 3 displays, 0, 2, 3, the new wallpaper is only compatible for display 0 and 3 but not
+ // 2.
+ // WHEN two different wallpapers set for system and lock via setWallpaperComponent.
+ // THEN there are two connections in mLastWallpaper, two connection in mLastLockWallpaper and
+ // one connection in mFallbackWallpaper.
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_CONNECTED_DISPLAYS_WALLPAPER)
+ public void setWallpaperComponent_systemAndLockWallpapers_multiDisplays_shouldHaveExpectedConnections() {
+ // Skip if there is no pre-defined default wallpaper component.
+ assumeThat(sDefaultWallpaperComponent,
+ not(CoreMatchers.equalTo(sImageWallpaperComponentName)));
+
+ final int testUserId = USER_SYSTEM;
+ mService.switchUser(testUserId, null);
+ final int incompatibleDisplayId = 2;
+ final int compatibleDisplayId = 3;
+ setUpDisplays(List.of(DEFAULT_DISPLAY, incompatibleDisplayId, compatibleDisplayId));
+ mService.removeWallpaperCompatibleDisplayForTest(incompatibleDisplayId);
+
+ mService.setWallpaperComponent(sImageWallpaperComponentName, sContext.getOpPackageName(),
+ FLAG_SYSTEM, testUserId);
+ mService.setWallpaperComponent(sImageWallpaperComponentName, sContext.getOpPackageName(),
+ FLAG_LOCK, testUserId);
+
+ verifyLastWallpaperData(testUserId, sImageWallpaperComponentName);
+ verifyLastLockWallpaperData(testUserId, sImageWallpaperComponentName);
+ verifyCurrentSystemData(testUserId);
+ assertThat(mService.mLastWallpaper.connection.getConnectedEngineSize()).isEqualTo(2);
+ assertThat(mService.mLastWallpaper.connection.containsDisplay(DEFAULT_DISPLAY)).isTrue();
+ assertThat(mService.mLastWallpaper.connection.containsDisplay(compatibleDisplayId))
+ .isTrue();
+ assertThat(mService.mLastLockWallpaper.connection.getConnectedEngineSize()).isEqualTo(2);
+ assertThat(mService.mLastLockWallpaper.connection.containsDisplay(DEFAULT_DISPLAY))
+ .isTrue();
+ assertThat(mService.mLastLockWallpaper.connection.containsDisplay(compatibleDisplayId))
+ .isTrue();
+ assertThat(mService.mFallbackWallpaper.connection.getConnectedEngineSize()).isEqualTo(1);
+ assertThat(mService.mFallbackWallpaper.connection.containsDisplay(incompatibleDisplayId))
+ .isTrue();
+ }
+
// Verify that after continue switch user from userId 0 to lastUserId, the wallpaper data for
// non-current user must not bind to wallpaper service.
private void verifyNoConnectionBeforeLastUser(int lastUserId) {
diff --git a/services/tests/ondeviceintelligencetests/OWNERS b/services/tests/ondeviceintelligencetests/OWNERS
index a4fc7582a785..d08d34ad3108 100644
--- a/services/tests/ondeviceintelligencetests/OWNERS
+++ b/services/tests/ondeviceintelligencetests/OWNERS
@@ -1,3 +1,2 @@
shiqing@google.com
sandeepbandaru@google.com
-shivanker@google.com
diff --git a/services/tests/powerservicetests/src/com/android/server/power/PowerManagerServiceTest.java b/services/tests/powerservicetests/src/com/android/server/power/PowerManagerServiceTest.java
index 6b138b986fe7..29a17e1c85ab 100644
--- a/services/tests/powerservicetests/src/com/android/server/power/PowerManagerServiceTest.java
+++ b/services/tests/powerservicetests/src/com/android/server/power/PowerManagerServiceTest.java
@@ -89,9 +89,13 @@ import android.os.PowerManager;
import android.os.PowerManagerInternal;
import android.os.PowerSaveState;
import android.os.UserHandle;
+import android.os.WorkSource;
import android.os.test.TestLooper;
import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.EnableFlags;
+import android.platform.test.annotations.RequiresFlagsEnabled;
+import android.platform.test.flag.junit.CheckFlagsRule;
+import android.platform.test.flag.junit.DeviceFlagsValueProvider;
import android.platform.test.flag.junit.SetFlagsRule;
import android.provider.DeviceConfig;
import android.provider.Settings;
@@ -200,6 +204,9 @@ public class PowerManagerServiceTest {
@Rule public SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+ @Rule
+ public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
+
private PowerManagerService mService;
private ContextWrapper mContextSpy;
private BatteryReceiver mBatteryReceiver;
@@ -3045,6 +3052,40 @@ public class PowerManagerServiceTest {
}
/**
+ * Test IPowerManager.updateWakeLockUids() updates the workchain with the new uids
+ */
+ @Test
+ @RequiresFlagsEnabled({Flags.FLAG_WAKELOCK_ATTRIBUTION_VIA_WORKCHAIN})
+ public void test_updateWakelockUids_updatesWorkchain() {
+ createService();
+ startSystem();
+ final String tag = "wakelock1";
+ final String packageName = "pkg.name";
+ final IBinder token = new Binder();
+ int flags = PowerManager.PARTIAL_WAKE_LOCK;
+ final IWakeLockCallback callback1 = Mockito.mock(IWakeLockCallback.class);
+ final IBinder callbackBinder1 = Mockito.mock(Binder.class);
+ when(callback1.asBinder()).thenReturn(callbackBinder1);
+ WorkSource oldWorksource = new WorkSource();
+ oldWorksource.createWorkChain().addNode(1000, null);
+ mService.getBinderServiceInstance().acquireWakeLock(token, flags, tag, packageName,
+ oldWorksource, null /* historyTag */, Display.INVALID_DISPLAY, callback1);
+ verify(mNotifierMock).onWakeLockAcquired(anyInt(), eq(tag), eq(packageName),
+ anyInt(), anyInt(), eq(oldWorksource), any(), same(callback1));
+
+ WorkSource newWorksource = new WorkSource();
+ newWorksource.createWorkChain().addNode(1011, null)
+ .addNode(Binder.getCallingUid(), null);
+ newWorksource.createWorkChain().addNode(1012, null)
+ .addNode(Binder.getCallingUid(), null);
+ mService.getBinderServiceInstance().updateWakeLockUids(token, new int[]{1011, 1012});
+ verify(mNotifierMock).onWakeLockChanging(anyInt(), eq(tag), eq(packageName),
+ anyInt(), anyInt(), eq(oldWorksource), any(), any(),
+ anyInt(), eq(tag), eq(packageName), anyInt(), anyInt(), eq(newWorksource), any(),
+ any());
+ }
+
+ /**
* Test IPowerManager.updateWakeLockCallback() with a new IWakeLockCallback.
*/
@Test
diff --git a/services/tests/powerstatstests/res/raw/history_01 b/services/tests/powerstatstests/res/raw/history_01
new file mode 100644
index 000000000000..f69eb275f2c6
--- /dev/null
+++ b/services/tests/powerstatstests/res/raw/history_01
Binary files differ
diff --git a/services/tests/powerstatstests/res/raw/history_02 b/services/tests/powerstatstests/res/raw/history_02
new file mode 100644
index 000000000000..1a536ab920db
--- /dev/null
+++ b/services/tests/powerstatstests/res/raw/history_02
Binary files differ
diff --git a/services/tests/powerstatstests/res/raw/history_03 b/services/tests/powerstatstests/res/raw/history_03
new file mode 100644
index 000000000000..76a3c7b69f01
--- /dev/null
+++ b/services/tests/powerstatstests/res/raw/history_03
Binary files differ
diff --git a/services/tests/powerstatstests/res/raw/history_04 b/services/tests/powerstatstests/res/raw/history_04
new file mode 100644
index 000000000000..7e43ac6281cc
--- /dev/null
+++ b/services/tests/powerstatstests/res/raw/history_04
Binary files differ
diff --git a/services/tests/powerstatstests/res/raw/history_05 b/services/tests/powerstatstests/res/raw/history_05
new file mode 100644
index 000000000000..b587723b7d1b
--- /dev/null
+++ b/services/tests/powerstatstests/res/raw/history_05
Binary files differ
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryCompressionPerfTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryCompressionPerfTest.java
new file mode 100644
index 000000000000..48e0daa9dba0
--- /dev/null
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryCompressionPerfTest.java
@@ -0,0 +1,280 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.server.power.stats;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.perftests.utils.BenchmarkState;
+import android.perftests.utils.PerfStatusReporter;
+import android.platform.test.annotations.LargeTest;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import libcore.io.Streams;
+
+import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
+import org.apache.commons.compress.compressors.bzip2.BZip2CompressorOutputStream;
+import org.apache.commons.compress.compressors.deflate.DeflateCompressorInputStream;
+import org.apache.commons.compress.compressors.deflate.DeflateCompressorOutputStream;
+import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
+import org.apache.commons.compress.compressors.gzip.GzipCompressorOutputStream;
+import org.apache.commons.compress.compressors.gzip.GzipParameters;
+import org.apache.commons.compress.compressors.lz4.BlockLZ4CompressorInputStream;
+import org.apache.commons.compress.compressors.lz4.BlockLZ4CompressorOutputStream;
+import org.apache.commons.compress.compressors.lz4.FramedLZ4CompressorInputStream;
+import org.apache.commons.compress.compressors.lz4.FramedLZ4CompressorOutputStream;
+import org.apache.commons.compress.compressors.xz.XZCompressorInputStream;
+import org.apache.commons.compress.compressors.xz.XZCompressorOutputStream;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestName;
+import org.junit.runner.RunWith;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+import java.util.zip.Deflater;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.GZIPOutputStream;
+
+@RunWith(AndroidJUnit4.class)
+@LargeTest
+@android.platform.test.annotations.DisabledOnRavenwood(reason = "Performance test")
+@Ignore("Performance experiment. Comment out @Ignore to run")
+public class BatteryStatsHistoryCompressionPerfTest {
+
+ @Rule
+ public final PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter();
+
+ @Rule
+ public final TestName mTestName = new TestName();
+
+ private final List<byte[]> mHistorySamples = new ArrayList<>();
+
+ @Before
+ public void loadHistorySamples() throws IOException {
+ Context context = InstrumentationRegistry.getContext();
+ Resources resources = context.getResources();
+
+ for (String sampleResource
+ : List.of("history_01", "history_02", "history_03", "history_04", "history_05")) {
+ int resId = resources.getIdentifier(sampleResource, "raw", context.getPackageName());
+ try (InputStream stream = resources.openRawResource(resId)) {
+ byte[] data = Streams.readFully(stream);
+ mHistorySamples.add(data);
+ }
+ }
+ }
+
+ private interface StreamWrapper<T> {
+ T wrap(T stream) throws IOException;
+ }
+
+ private static class CompressorTester implements BatteryHistoryDirectory.Compressor {
+ private final StreamWrapper<OutputStream> mCompressorSupplier;
+ private final StreamWrapper<InputStream> mUncompressorSupplier;
+ private final ByteArrayOutputStream mOutputStream = new ByteArrayOutputStream(200000);
+ private final Random mRandom = new Random();
+
+ private static class Sample {
+ public byte[] uncompressed;
+ public byte[] compressed;
+ }
+
+ private final List<Sample> mSamples;
+
+ CompressorTester(StreamWrapper<OutputStream> compressorSupplier,
+ StreamWrapper<InputStream> uncompressorSupplier,
+ List<byte[]> uncompressedSamples) throws IOException {
+ mCompressorSupplier = compressorSupplier;
+ mUncompressorSupplier = uncompressorSupplier;
+ mSamples = new ArrayList<>();
+ for (byte[] uncompressed : uncompressedSamples) {
+ Sample s = new Sample();
+ s.uncompressed = Arrays.copyOf(uncompressed, uncompressed.length);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ compress(baos, s.uncompressed);
+ s.compressed = baos.toByteArray();
+ mSamples.add(s);
+ }
+ }
+
+ float getCompressionRatio() {
+ long totalUncompressed = 0;
+ long totalCompressed = 0;
+ for (Sample sample : mSamples) {
+ totalUncompressed += sample.uncompressed.length;
+ totalCompressed += sample.compressed.length;
+ }
+ return (float) totalUncompressed / totalCompressed;
+ }
+
+ void compressSample() throws IOException {
+ Sample sample = mSamples.get(mRandom.nextInt(mSamples.size()));
+ mOutputStream.reset();
+ compress(mOutputStream, sample.uncompressed);
+ // Absence of an exception indicates success
+ }
+
+ void uncompressSample() throws IOException {
+ Sample sample = mSamples.get(mRandom.nextInt(mSamples.size()));
+ uncompress(sample.uncompressed, new ByteArrayInputStream(sample.compressed));
+ // Absence of an exception indicates success
+ }
+
+ @Override
+ public void compress(OutputStream stream, byte[] data) throws IOException {
+ OutputStream cos = mCompressorSupplier.wrap(stream);
+ cos.write(data);
+ cos.close();
+ }
+
+ @Override
+ public void uncompress(byte[] data, InputStream stream) throws IOException {
+ InputStream cos = mUncompressorSupplier.wrap(stream);
+ readFully(data, cos);
+ }
+ }
+
+ private void benchmarkCompress(StreamWrapper<OutputStream> compressorSupplier)
+ throws IOException {
+ CompressorTester tester = new CompressorTester(compressorSupplier, null, mHistorySamples);
+ final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ while (state.keepRunning()) {
+ tester.compressSample();
+ }
+ Bundle status = new Bundle();
+ status.putFloat(mTestName.getMethodName() + "_compressionRatio",
+ tester.getCompressionRatio());
+ InstrumentationRegistry.getInstrumentation().sendStatus(Activity.RESULT_OK, status);
+ }
+
+ private void benchmarkUncompress(StreamWrapper<OutputStream> compressorSupplier,
+ StreamWrapper<InputStream> uncompressorSupplier) throws IOException {
+ CompressorTester tester = new CompressorTester(compressorSupplier, uncompressorSupplier,
+ mHistorySamples);
+ final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ while (state.keepRunning()) {
+ tester.uncompressSample();
+ }
+ }
+
+ @Test
+ public void block_lz4_compress() throws IOException {
+ benchmarkCompress(BlockLZ4CompressorOutputStream::new);
+ }
+
+ @Test
+ public void block_lz4_uncompress() throws IOException {
+ benchmarkUncompress(BlockLZ4CompressorOutputStream::new,
+ BlockLZ4CompressorInputStream::new);
+ }
+
+ @Test
+ public void framed_lz4_compress() throws IOException {
+ benchmarkCompress(FramedLZ4CompressorOutputStream::new);
+ }
+
+ @Test
+ public void framed_lz4_uncompress() throws IOException {
+ benchmarkUncompress(FramedLZ4CompressorOutputStream::new,
+ FramedLZ4CompressorInputStream::new);
+ }
+
+ @Test
+ public void gzip_compress() throws IOException {
+ benchmarkCompress(GzipCompressorOutputStream::new);
+ }
+
+ @Test
+ public void gzip_uncompress() throws IOException {
+ benchmarkUncompress(GzipCompressorOutputStream::new,
+ GzipCompressorInputStream::new);
+ }
+
+ @Test
+ public void best_speed_gzip_compress() throws IOException {
+ benchmarkCompress(stream -> {
+ GzipParameters parameters = new GzipParameters();
+ parameters.setCompressionLevel(Deflater.BEST_SPEED);
+ return new GzipCompressorOutputStream(stream, parameters);
+ });
+ }
+
+ @Test
+ public void best_speed_gzip_uncompress() throws IOException {
+ benchmarkUncompress(stream -> {
+ GzipParameters parameters = new GzipParameters();
+ parameters.setCompressionLevel(Deflater.BEST_SPEED);
+ return new GzipCompressorOutputStream(stream, parameters);
+ }, GzipCompressorInputStream::new);
+ }
+
+ @Test
+ public void java_util_gzip_compress() throws IOException {
+ benchmarkCompress(GZIPOutputStream::new);
+ }
+
+ @Test
+ public void java_util_gzip_uncompress() throws IOException {
+ benchmarkUncompress(GZIPOutputStream::new,
+ GZIPInputStream::new);
+ }
+
+ @Test
+ public void bzip2_compress() throws IOException {
+ benchmarkCompress(BZip2CompressorOutputStream::new);
+ }
+
+ @Test
+ public void bzip2_uncompress() throws IOException {
+ benchmarkUncompress(BZip2CompressorOutputStream::new,
+ BZip2CompressorInputStream::new);
+ }
+
+ @Test
+ public void xz_compress() throws IOException {
+ benchmarkCompress(XZCompressorOutputStream::new);
+ }
+
+ @Test
+ public void xz_uncompress() throws IOException {
+ benchmarkUncompress(XZCompressorOutputStream::new,
+ XZCompressorInputStream::new);
+ }
+
+ @Test
+ public void deflate_compress() throws IOException {
+ benchmarkCompress(DeflateCompressorOutputStream::new);
+ }
+
+ @Test
+ public void deflate_uncompress() throws IOException {
+ benchmarkUncompress(DeflateCompressorOutputStream::new,
+ DeflateCompressorInputStream::new);
+ }
+}
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryIteratorTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryIteratorTest.java
index d6f50368df84..7e40e6b4f71f 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryIteratorTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryIteratorTest.java
@@ -17,6 +17,7 @@
package com.android.server.power.stats;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
import android.os.BatteryManager;
import android.os.BatteryStats;
@@ -301,6 +302,88 @@ public class BatteryStatsHistoryIteratorTest {
assertThat(item = iterator.next()).isNull();
}
+ @Test
+ public void batteryLevelAccuracy() {
+ // Check that battery values are recorded correctly throughout their valid ranges:
+ // - Battery level range: [0, 100]
+ // - Voltage and temperature range: [-2**15, 2**15-1] (note: exceeds physical requirements)
+
+ int i16Min = Short.MIN_VALUE;
+ int i16Max = Short.MAX_VALUE;
+ int[][] testValues = {
+ // { level, temperature, voltage }
+
+ // Min/max values
+ { 0, 0, 0 },
+ { 0, i16Min, i16Min },
+ { 100, i16Max, i16Max },
+
+ // Level changes
+ { 0, 0, 0 },
+ { 12, 0, 0 },
+ { 90, 0, 0 },
+ { 34, 0, 0 },
+ { 78, 0, 0 },
+ { 56, 0, 0 },
+
+ // Temperature changes
+ { 0, 0, 0 },
+ { 0, i16Max, 0 }, // Large change to max
+ { 0, i16Max - 12, 0 }, // Small change near max
+ { 0, i16Max - 56, 0 }, // Small change near max
+ { 0, i16Max - 34, 0 }, // Small change near max
+ { 0, 0, 0 }, // Large change to 0
+ { 0, 12, 0 }, // Small change near 0
+ { 0, -34, 0 }, // Small change near 0
+ { 0, 56, 0 }, // Small change near 0
+ { 0, -78, 0 }, // Small change near 0
+ { 0, i16Min, 0 }, // Large change to min
+ { 0, i16Min + 12, 0 }, // Small change near min
+ { 0, i16Min + 56, 0 }, // Small change near min
+ { 0, i16Min + 34, 0 }, // Small change near min
+
+ // Voltage changes
+ { 0, 0, 0 },
+ { 0, 0, i16Max }, // Large change to max
+ { 0, 0, i16Max - 120 }, // Small change near max
+ { 0, 0, i16Max - 560 }, // Small change near max
+ { 0, 0, i16Max - 340 }, // Small change near max
+ { 0, 0, 0 }, // Large change to 0
+ { 0, 0, 120 }, // Small change near 0
+ { 0, 0, -340 }, // Small change near 0
+ { 0, 0, 560 }, // Small change near 0
+ { 0, 0, -780 }, // Small change near 0
+ { 0, 0, i16Min }, // Large change to min
+ { 0, 0, i16Min + 120 }, // Small change near min
+ { 0, 0, i16Min + 560 }, // Small change near min
+ { 0, 0, i16Min + 340 }, // Small change near min
+ };
+
+ for (int[] val : testValues) {
+ mBatteryStats.setBatteryStateLocked(
+ BatteryManager.BATTERY_STATUS_DISCHARGING,
+ 100, 0, val[0], val[1], val[2], 1000_000, 1000_000, 0, 0, 0, 0);
+ }
+
+ final BatteryStatsHistoryIterator iterator =
+ mBatteryStats.iterateBatteryStatsHistory(0, MonotonicClock.UNDEFINED);
+
+ BatteryStats.HistoryItem item;
+ assertThat(item = iterator.next()).isNotNull();
+ assertThat(item.cmd).isEqualTo((int) BatteryStats.HistoryItem.CMD_RESET);
+
+ for (int i = 0; i < testValues.length; i++) {
+ int[] val = testValues[i];
+ String msg = String.format("Incorrect battery value returned at index %d:", i);
+ assertThat(item = iterator.next()).isNotNull();
+ assertWithMessage(msg).that(item.batteryLevel).isEqualTo(val[0]);
+ assertWithMessage(msg).that(item.batteryTemperature).isEqualTo(val[1]);
+ assertWithMessage(msg).that(item.batteryVoltage).isEqualTo(val[2]);
+ }
+
+ assertThat(item = iterator.next()).isNull();
+ }
+
private void assertHistoryItem(BatteryStats.HistoryItem item, int command, int eventCode,
String tag, int uid, int voltageMv, int batteryChargeUah, int batteryLevel,
long elapsedTimeMs) {
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryTest.java
index 164eec6fbc49..8fad93184732 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryTest.java
@@ -17,6 +17,7 @@
package com.android.server.power.stats;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -30,18 +31,20 @@ import android.os.BatteryConsumer;
import android.os.BatteryManager;
import android.os.BatteryStats;
import android.os.BatteryStats.HistoryItem;
+import android.os.ConditionVariable;
import android.os.Parcel;
import android.os.PersistableBundle;
import android.os.Process;
import android.os.UserHandle;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
+import android.platform.test.ravenwood.RavenwoodRule;
import android.telephony.NetworkRegistrationInfo;
-import android.util.AtomicFile;
import android.util.Log;
import androidx.test.runner.AndroidJUnit4;
+import com.android.internal.os.BackgroundThread;
import com.android.internal.os.BatteryStatsHistory;
import com.android.internal.os.BatteryStatsHistoryIterator;
import com.android.internal.os.MonotonicClock;
@@ -58,6 +61,8 @@ import org.mockito.MockitoAnnotations;
import java.io.File;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.nio.file.Files;
@@ -85,6 +90,7 @@ public class BatteryStatsHistoryTest {
private File mHistoryDir;
private final MockClock mClock = new MockClock();
private final MonotonicClock mMonotonicClock = new MonotonicClock(0, mClock);
+ private BatteryHistoryDirectory mDirectory;
private BatteryStatsHistory mHistory;
private BatteryStats.HistoryPrinter mHistoryPrinter;
@Mock
@@ -108,11 +114,30 @@ public class BatteryStatsHistoryTest {
}
mHistoryDir.delete();
+
+ BatteryHistoryDirectory.Compressor compressor;
+ if (RavenwoodRule.isOnRavenwood()) {
+ compressor = new BatteryHistoryDirectory.Compressor() {
+ @Override
+ public void compress(OutputStream stream, byte[] data) throws IOException {
+ stream.write(data);
+ }
+
+ @Override
+ public void uncompress(byte[] data, InputStream stream) throws IOException {
+ readFully(data, stream);
+ }
+ };
+ } else {
+ compressor = BatteryHistoryDirectory.DEFAULT_COMPRESSOR;
+ }
+ mDirectory = new BatteryHistoryDirectory(mHistoryDir, 32768, compressor);
+
mClock.realtime = 123;
mClock.currentTime = 1743645660000L; // 2025-04-03, 2:01:00 AM
- mHistory = new BatteryStatsHistory(mHistoryBuffer, mSystemDir, 32768,
- MAX_HISTORY_BUFFER_SIZE, mStepDetailsCalculator, mClock, mMonotonicClock, mTracer,
+ mHistory = new BatteryStatsHistory(mHistoryBuffer, MAX_HISTORY_BUFFER_SIZE, mDirectory,
+ mStepDetailsCalculator, mClock, mMonotonicClock, mTracer,
mEventLogger);
mHistory.forceRecordAllHistory();
mHistory.startRecordingHistory(mClock.realtime, mClock.uptime, false);
@@ -210,8 +235,9 @@ public class BatteryStatsHistoryTest {
}
@Test
- public void testStartNextFile() throws Exception {
+ public void testStartNextFile() {
mHistory.forceRecordAllHistory();
+ mDirectory.setFileCompressionEnabled(false);
mClock.realtime = 123;
@@ -225,7 +251,7 @@ public class BatteryStatsHistoryTest {
mClock.realtime = 1000 * i;
fileList.add(mClock.realtime + ".bh");
- mHistory.startNextFile(mClock.realtime);
+ mHistory.startNextFragment(mClock.realtime);
createActiveFile(mHistory);
fillActiveFile(mHistory);
@@ -235,8 +261,9 @@ public class BatteryStatsHistoryTest {
// create file 32
mClock.realtime = 1000 * 32;
- mHistory.startNextFile(mClock.realtime);
+ mHistory.startNextFragment(mClock.realtime);
createActiveFile(mHistory);
+ fillActiveFile(mHistory);
fileList.add("32000.bh");
fileList.remove(0);
// verify file 0 is deleted.
@@ -244,21 +271,22 @@ public class BatteryStatsHistoryTest {
verifyFileNames(mHistory, fileList);
verifyActiveFile(mHistory, "32000.bh");
- fillActiveFile(mHistory);
-
// create file 33
mClock.realtime = 1000 * 33;
- mHistory.startNextFile(mClock.realtime);
+ mHistory.startNextFragment(mClock.realtime);
createActiveFile(mHistory);
- // verify file 1 is deleted
+ fillActiveFile(mHistory);
fileList.add("33000.bh");
fileList.remove(0);
+ mHistory.writeHistory();
+
+ // verify file 1 is deleted
verifyFileDeleted("1000.bh");
verifyFileNames(mHistory, fileList);
verifyActiveFile(mHistory, "33000.bh");
// create a new BatteryStatsHistory object, it will pick up existing history files.
- BatteryStatsHistory history2 = new BatteryStatsHistory(mHistoryBuffer, mSystemDir, 32, 1024,
+ BatteryStatsHistory history2 = new BatteryStatsHistory(mHistoryBuffer, 1024, mDirectory,
null, mClock, mMonotonicClock, mTracer, mEventLogger);
// verify constructor can pick up all files from file system.
verifyFileNames(history2, fileList);
@@ -281,7 +309,7 @@ public class BatteryStatsHistoryTest {
// create file 1.
mClock.realtime = 2345678;
- history2.startNextFile(mClock.realtime);
+ history2.startNextFragment(mClock.realtime);
createActiveFile(history2);
verifyFileNames(history2, Arrays.asList("1234567.bh", "2345678.bh"));
verifyActiveFile(history2, "2345678.bh");
@@ -297,10 +325,10 @@ public class BatteryStatsHistoryTest {
mHistory = spy(mHistory.copy());
doAnswer(invocation -> {
- AtomicFile file = invocation.getArgument(1);
- mReadFiles.add(file.getBaseFile().getName());
+ BatteryHistoryDirectory.BatteryHistoryFile file = invocation.getArgument(1);
+ mReadFiles.add(file.atomicFile.getBaseFile().getName());
return invocation.callRealMethod();
- }).when(mHistory).readFileToParcel(any(), any());
+ }).when(mHistory).readFragmentToParcel(any(), any());
// Prepare history for iteration
mHistory.iterate(0, MonotonicClock.UNDEFINED);
@@ -339,10 +367,10 @@ public class BatteryStatsHistoryTest {
mHistory = spy(mHistory.copy());
doAnswer(invocation -> {
- AtomicFile file = invocation.getArgument(1);
- mReadFiles.add(file.getBaseFile().getName());
+ BatteryHistoryDirectory.BatteryHistoryFile file = invocation.getArgument(1);
+ mReadFiles.add(file.atomicFile.getBaseFile().getName());
return invocation.callRealMethod();
- }).when(mHistory).readFileToParcel(any(), any());
+ }).when(mHistory).readFragmentToParcel(any(), any());
// Prepare history for iteration
mHistory.iterate(1000, 3000);
@@ -371,14 +399,14 @@ public class BatteryStatsHistoryTest {
mHistory.recordEvent(mClock.realtime, mClock.uptime,
BatteryStats.HistoryItem.EVENT_JOB_START, "job", 42);
- mHistory.startNextFile(mClock.realtime); // 1000.bh
+ mHistory.startNextFragment(mClock.realtime); // 1000.bh
mClock.realtime = 2000;
mClock.uptime = 2000;
mHistory.recordEvent(mClock.realtime, mClock.uptime,
BatteryStats.HistoryItem.EVENT_JOB_FINISH, "job", 42);
- mHistory.startNextFile(mClock.realtime); // 2000.bh
+ mHistory.startNextFragment(mClock.realtime); // 2000.bh
mClock.realtime = 3000;
mClock.uptime = 3000;
@@ -386,30 +414,37 @@ public class BatteryStatsHistoryTest {
HistoryItem.EVENT_ALARM, "alarm", 42);
// Flush accumulated history to disk
- mHistory.startNextFile(mClock.realtime);
+ mHistory.startNextFragment(mClock.realtime);
}
private void verifyActiveFile(BatteryStatsHistory history, String file) {
final File expectedFile = new File(mHistoryDir, file);
- assertEquals(expectedFile.getPath(), history.getActiveFile().getBaseFile().getPath());
+ assertEquals(expectedFile.getPath(),
+ ((BatteryHistoryDirectory.BatteryHistoryFile) history.getActiveFragment())
+ .atomicFile.getBaseFile().getPath());
assertTrue(expectedFile.exists());
}
private void verifyFileNames(BatteryStatsHistory history, List<String> fileList) {
- assertEquals(fileList.size(), history.getFilesNames().size());
+ awaitCompletion();
+ List<String> fileNames =
+ ((BatteryHistoryDirectory) history.getBatteryHistoryStore()).getFileNames();
+ assertThat(fileNames).isEqualTo(fileList);
for (int i = 0; i < fileList.size(); i++) {
- assertEquals(fileList.get(i), history.getFilesNames().get(i));
final File expectedFile = new File(mHistoryDir, fileList.get(i));
- assertTrue(expectedFile.exists());
+ assertWithMessage("File does not exist " + expectedFile)
+ .that(expectedFile.exists()).isTrue();
}
}
private void verifyFileDeleted(String file) {
+ awaitCompletion();
assertFalse(new File(mHistoryDir, file).exists());
}
private void createActiveFile(BatteryStatsHistory history) {
- final File file = history.getActiveFile().getBaseFile();
+ File file = ((BatteryHistoryDirectory.BatteryHistoryFile) history.getActiveFragment())
+ .atomicFile.getBaseFile();
if (file.exists()) {
return;
}
@@ -561,7 +596,7 @@ public class BatteryStatsHistoryTest {
public void largeTagPool() {
// Keep the preserved part of history short - we only need to capture the very tail of
// history.
- mHistory = new BatteryStatsHistory(mHistoryBuffer, mSystemDir, 1, 6000,
+ mHistory = new BatteryStatsHistory(mHistoryBuffer, 6000, mDirectory,
mStepDetailsCalculator, mClock, mMonotonicClock, mTracer, mEventLogger);
mHistory.forceRecordAllHistory();
@@ -699,7 +734,7 @@ public class BatteryStatsHistoryTest {
assertThat(size).isGreaterThan(lastHistorySize);
lastHistorySize = size;
- mHistory.startNextFile(mClock.realtime);
+ mHistory.startNextFragment(mClock.realtime);
size = mHistory.getMonotonicHistorySize();
assertThat(size).isEqualTo(lastHistorySize);
@@ -713,7 +748,7 @@ public class BatteryStatsHistoryTest {
assertThat(size).isGreaterThan(lastHistorySize);
lastHistorySize = size;
- mHistory.startNextFile(mClock.realtime);
+ mHistory.startNextFragment(mClock.realtime);
mClock.realtime = 3000;
mClock.uptime = 3000;
@@ -788,4 +823,58 @@ public class BatteryStatsHistoryTest {
parcel.recycle();
}
+
+ @Test
+ public void compressHistoryFiles() {
+ // The first history file will be uncompressed
+ mDirectory.setFileCompressionEnabled(false);
+
+ mClock.realtime = 1000;
+ mClock.uptime = 1000;
+ mHistory.recordEvent(mClock.realtime, mClock.uptime,
+ BatteryStats.HistoryItem.EVENT_JOB_START, "job", 42);
+
+ mHistory.startNextFragment(mClock.realtime);
+
+ // The second file will be compressed
+ mDirectory.setFileCompressionEnabled(true);
+
+ mClock.realtime = 2000;
+ mClock.uptime = 2000;
+ mHistory.recordEvent(mClock.realtime, mClock.uptime,
+ BatteryStats.HistoryItem.EVENT_JOB_FINISH, "job", 42);
+
+ mHistory.startNextFragment(mClock.realtime);
+
+ awaitCompletion();
+
+ assertThat(historySummary(mHistory)).isEqualTo(List.of("+42:job", "-42:job"));
+
+ Parcel parcel = Parcel.obtain();
+ mHistory.writeToBatteryUsageStatsParcel(parcel, Long.MAX_VALUE);
+ parcel.setDataPosition(0);
+
+ BatteryStatsHistory actual = BatteryStatsHistory.createFromBatteryUsageStatsParcel(parcel);
+ assertThat(historySummary(actual)).isEqualTo(List.of("+42:job", "-42:job"));
+ }
+
+ private List<String> historySummary(BatteryStatsHistory history) {
+ List<String> events = new ArrayList<>();
+ try (BatteryStatsHistoryIterator it = history.iterate(0, Long.MAX_VALUE)) {
+ HistoryItem item;
+ while ((item = it.next()) != null) {
+ if ((item.eventCode & HistoryItem.EVENT_TYPE_MASK) == HistoryItem.EVENT_JOB) {
+ events.add(((item.eventCode & HistoryItem.EVENT_FLAG_START) != 0 ? "+" : "-")
+ + item.eventTag.uid + ":" + item.eventTag.string);
+ }
+ }
+ }
+ return events;
+ }
+
+ private static void awaitCompletion() {
+ ConditionVariable done = new ConditionVariable();
+ BackgroundThread.getHandler().post(done::open);
+ done.block();
+ }
}
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsProviderTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsProviderTest.java
index e94ef5bb4871..31ff50f8ca58 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsProviderTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsProviderTest.java
@@ -877,9 +877,19 @@ public class BatteryUsageStatsProviderTest {
}
@Test
- @EnableFlags(Flags.FLAG_EXTENDED_BATTERY_HISTORY_CONTINUOUS_COLLECTION_ENABLED)
+ @EnableFlags({
+ Flags.FLAG_EXTENDED_BATTERY_HISTORY_CONTINUOUS_COLLECTION_ENABLED,
+ Flags.FLAG_EXTENDED_BATTERY_HISTORY_COMPRESSION_ENABLED
+ })
public void testIncludeSubsetOfHistory() throws IOException {
MockBatteryStatsImpl batteryStats = mStatsRule.getBatteryStats();
+ BatteryHistoryDirectory store =
+ (BatteryHistoryDirectory) batteryStats.getHistory().getBatteryHistoryStore();
+ store.setFileCompressionEnabled(true);
+ // Make history fragment size predictable. Without this protection, holding the history
+ // directory lock in the background would prevent new fragments from being created.
+ store.makeDirectoryLockUnconditional();
+
batteryStats.getHistory().setMaxHistoryBufferSize(100);
synchronized (batteryStats) {
batteryStats.setRecordAllHistoryLocked(true);
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/MockBatteryStatsImpl.java b/services/tests/powerstatstests/src/com/android/server/power/stats/MockBatteryStatsImpl.java
index a69e2fdb0b03..c7a19ce7b233 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/MockBatteryStatsImpl.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/MockBatteryStatsImpl.java
@@ -41,6 +41,9 @@ import com.android.internal.os.PowerProfile;
import com.android.internal.power.EnergyConsumerStats;
import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Queue;
@@ -49,6 +52,18 @@ import java.util.Queue;
* Mocks a BatteryStatsImpl object.
*/
public class MockBatteryStatsImpl extends BatteryStatsImpl {
+ public static final BatteryHistoryDirectory.Compressor PASS_THROUGH_COMPRESSOR =
+ new BatteryHistoryDirectory.Compressor() {
+ @Override
+ public void compress(OutputStream stream, byte[] data) throws IOException {
+ stream.write(data);
+ }
+
+ @Override
+ public void uncompress(byte[] data, InputStream stream) throws IOException {
+ readFully(data, stream);
+ }
+ };
public boolean mForceOnBattery;
// The mNetworkStats will be used for both wifi and mobile categories
private NetworkStats mNetworkStats;
@@ -83,7 +98,11 @@ public class MockBatteryStatsImpl extends BatteryStatsImpl {
MockBatteryStatsImpl(BatteryStatsConfig config, Clock clock, MonotonicClock monotonicClock,
File historyDirectory, Handler handler, PowerProfile powerProfile,
PowerStatsUidResolver powerStatsUidResolver) {
- super(config, clock, monotonicClock, historyDirectory, handler,
+ super(config, clock, monotonicClock, historyDirectory,
+ historyDirectory != null ? new BatteryHistoryDirectory(
+ new File(historyDirectory, "battery-history"),
+ config.getMaxHistorySizeBytes(), PASS_THROUGH_COMPRESSOR) : null,
+ handler,
mock(PlatformIdleStateCallback.class), mock(EnergyStatsRetriever.class),
mock(UserInfoProvider.class), powerProfile,
new CpuScalingPolicies(new SparseArray<>(), new SparseArray<>()),
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/WakelockStatsFrameworkEventsTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/WakelockStatsFrameworkEventsTest.java
index 1fe3f58a9dcb..f24e9ef03398 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/WakelockStatsFrameworkEventsTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/WakelockStatsFrameworkEventsTest.java
@@ -186,14 +186,16 @@ public class WakelockStatsFrameworkEventsTest {
public void wakelockOpen() throws Exception {
mEvents.noteStartWakeLock(UID_1, TAG_1, WAKELOCK_TYPE_1, TS_1);
- ArrayList<WakelockInfo> info = pullResults(TS_3);
-
- assertEquals("size", 1, info.size());
- assertEquals("uid", UID_1, info.get(0).uid);
- assertEquals("tag", TAG_1, info.get(0).tag);
- assertEquals("type", WAKELOCK_TYPE_1, info.get(0).type);
- assertEquals("duration", TS_3 - TS_1, info.get(0).uptimeMillis);
- assertEquals("count", 0, info.get(0).completedCount);
+ for (int i = 0; i < 5; i++) {
+ ArrayList<WakelockInfo> info = pullResults(TS_3);
+
+ assertEquals("size", 1, info.size());
+ assertEquals("uid", UID_1, info.get(0).uid);
+ assertEquals("tag", TAG_1, info.get(0).tag);
+ assertEquals("type", WAKELOCK_TYPE_1, info.get(0).type);
+ assertEquals("duration", TS_3 - TS_1, info.get(0).uptimeMillis);
+ assertEquals("count", 0, info.get(0).completedCount);
+ }
}
@Test
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/PowerStatsAggregatorTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/PowerStatsAggregatorTest.java
index 3bdbcb50e601..73d491c93bb5 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/PowerStatsAggregatorTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/PowerStatsAggregatorTest.java
@@ -59,7 +59,7 @@ public class PowerStatsAggregatorTest {
@Before
public void setup() throws ParseException {
- mHistory = new BatteryStatsHistory(null, null, 0, 1024,
+ mHistory = new BatteryStatsHistory(null, 1024, null,
mock(BatteryStatsHistory.HistoryStepDetailsCalculator.class), mClock,
mMonotonicClock, mock(BatteryStatsHistory.TraceDelegate.class), null);
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/PowerStatsExporterTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/PowerStatsExporterTest.java
index d243f92a139f..9ef58cc28a69 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/PowerStatsExporterTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/PowerStatsExporterTest.java
@@ -42,6 +42,7 @@ import com.android.internal.os.CpuScalingPolicies;
import com.android.internal.os.MonotonicClock;
import com.android.internal.os.PowerProfile;
import com.android.internal.os.PowerStats;
+import com.android.server.power.stats.BatteryHistoryDirectory;
import com.android.server.power.stats.BatteryUsageStatsRule;
import com.android.server.power.stats.MockClock;
import com.android.server.power.stats.PowerStatsStore;
@@ -84,6 +85,7 @@ public class PowerStatsExporterTest {
private PowerStatsStore mPowerStatsStore;
private PowerStatsAggregator mPowerStatsAggregator;
private MultiStatePowerAttributor mPowerAttributor;
+ private BatteryHistoryDirectory mDirectory;
private BatteryStatsHistory mHistory;
private CpuPowerStatsLayout mCpuStatsArrayLayout;
private PowerStats.Descriptor mPowerStatsDescriptor;
@@ -117,7 +119,8 @@ public class PowerStatsExporterTest {
AggregatedPowerStatsConfig.STATE_PROCESS_STATE);
mPowerStatsStore = new PowerStatsStore(storeDirectory, new TestHandler());
- mHistory = new BatteryStatsHistory(Parcel.obtain(), storeDirectory, 0, 10000,
+ mDirectory = new BatteryHistoryDirectory(storeDirectory, 0);
+ mHistory = new BatteryStatsHistory(Parcel.obtain(), 10000, mDirectory,
mock(BatteryStatsHistory.HistoryStepDetailsCalculator.class), mClock,
mMonotonicClock, null, null);
mPowerStatsAggregator = new PowerStatsAggregator(config);
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/WakelockPowerStatsProcessorTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/WakelockPowerStatsProcessorTest.java
index ed3cda0f76ef..8257d714a5d5 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/processor/WakelockPowerStatsProcessorTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/processor/WakelockPowerStatsProcessorTest.java
@@ -87,7 +87,7 @@ public class WakelockPowerStatsProcessorTest {
PowerStats ps = new PowerStats(descriptor);
long[] uidStats = new long[descriptor.uidStatsArrayLength];
- BatteryStatsHistory history = new BatteryStatsHistory(null, null, 0, 10000,
+ BatteryStatsHistory history = new BatteryStatsHistory(null, 10000, null,
mock(BatteryStatsHistory.HistoryStepDetailsCalculator.class),
mStatsRule.getMockClock(),
new MonotonicClock(START_TIME, mStatsRule.getMockClock()), null, null);
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickControllerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickControllerTest.java
index f02bdae1d9e6..457fde8d74d0 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickControllerTest.java
@@ -20,11 +20,11 @@ import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentat
import static com.android.server.testutils.MockitoUtilsKt.eq;
+import static com.google.common.truth.Truth.assertThat;
+
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
-import static org.testng.AssertJUnit.assertEquals;
-import static org.testng.AssertJUnit.assertNotNull;
-import static org.testng.AssertJUnit.assertNull;
import android.content.Context;
import android.platform.test.annotations.DisableFlags;
@@ -35,6 +35,7 @@ import android.testing.AndroidTestingRunner;
import android.testing.TestableContext;
import android.testing.TestableLooper;
import android.view.InputDevice;
+import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.WindowManager;
import android.view.accessibility.AccessibilityManager;
@@ -82,69 +83,89 @@ public class AutoclickControllerTest {
@Test
public void onMotionEvent_lazyInitClickScheduler() {
- assertNull(mController.mClickScheduler);
+ assertThat(mController.mClickScheduler).isNull();
injectFakeMouseActionDownEvent();
- assertNotNull(mController.mClickScheduler);
+ assertThat(mController.mClickScheduler).isNotNull();
}
@Test
public void onMotionEvent_nonMouseSource_notInitClickScheduler() {
- assertNull(mController.mClickScheduler);
+ assertThat(mController.mClickScheduler).isNull();
injectFakeNonMouseActionDownEvent();
- assertNull(mController.mClickScheduler);
+ assertThat(mController.mClickScheduler).isNull();
}
@Test
public void onMotionEvent_lazyInitAutoclickSettingsObserver() {
- assertNull(mController.mAutoclickSettingsObserver);
+ assertThat(mController.mAutoclickSettingsObserver).isNull();
injectFakeMouseActionDownEvent();
- assertNotNull(mController.mAutoclickSettingsObserver);
+ assertThat(mController.mAutoclickSettingsObserver).isNotNull();
}
@Test
@EnableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR)
public void onMotionEvent_flagOn_lazyInitAutoclickIndicatorScheduler() {
- assertNull(mController.mAutoclickIndicatorScheduler);
+ assertThat(mController.mAutoclickIndicatorScheduler).isNull();
injectFakeMouseActionDownEvent();
- assertNotNull(mController.mAutoclickIndicatorScheduler);
+ assertThat(mController.mAutoclickIndicatorScheduler).isNotNull();
}
@Test
@DisableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR)
public void onMotionEvent_flagOff_notInitAutoclickIndicatorScheduler() {
- assertNull(mController.mAutoclickIndicatorScheduler);
+ assertThat(mController.mAutoclickIndicatorScheduler).isNull();
injectFakeMouseActionDownEvent();
- assertNull(mController.mAutoclickIndicatorScheduler);
+ assertThat(mController.mAutoclickIndicatorScheduler).isNull();
}
@Test
@EnableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR)
public void onMotionEvent_flagOn_lazyInitAutoclickIndicatorView() {
- assertNull(mController.mAutoclickIndicatorView);
+ assertThat(mController.mAutoclickIndicatorView).isNull();
injectFakeMouseActionDownEvent();
- assertNotNull(mController.mAutoclickIndicatorView);
+ assertThat(mController.mAutoclickIndicatorView).isNotNull();
}
@Test
@DisableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR)
public void onMotionEvent_flagOff_notInitAutoclickIndicatorView() {
- assertNull(mController.mAutoclickIndicatorView);
+ assertThat(mController.mAutoclickIndicatorView).isNull();
+
+ injectFakeMouseActionDownEvent();
+
+ assertThat(mController.mAutoclickIndicatorView).isNull();
+ }
+
+ @Test
+ @EnableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR)
+ public void onMotionEvent_flagOn_lazyInitAutoclickTypePanelView() {
+ assertThat(mController.mAutoclickTypePanel).isNull();
+
+ injectFakeMouseActionDownEvent();
+
+ assertThat(mController.mAutoclickTypePanel).isNotNull();
+ }
+
+ @Test
+ @DisableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR)
+ public void onMotionEvent_flagOff_notInitAutoclickTypePanelView() {
+ assertThat(mController.mAutoclickTypePanel).isNull();
injectFakeMouseActionDownEvent();
- assertNull(mController.mAutoclickIndicatorView);
+ assertThat(mController.mAutoclickTypePanel).isNull();
}
@Test
@@ -166,6 +187,18 @@ public class AutoclickControllerTest {
}
@Test
+ @EnableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR)
+ public void onDestroy_flagOn_removeAutoclickTypePanelViewToWindowManager() {
+ injectFakeMouseActionDownEvent();
+ AutoclickTypePanel mockAutoclickTypePanel = mock(AutoclickTypePanel.class);
+ mController.mAutoclickTypePanel = mockAutoclickTypePanel;
+
+ mController.onDestroy();
+
+ verify(mockAutoclickTypePanel).hide();
+ }
+
+ @Test
public void onMotionEvent_initClickSchedulerDelayFromSetting() {
injectFakeMouseActionDownEvent();
@@ -175,7 +208,7 @@ public class AutoclickControllerTest {
Settings.Secure.ACCESSIBILITY_AUTOCLICK_DELAY,
AccessibilityManager.AUTOCLICK_DELAY_DEFAULT,
mTestableContext.getUserId());
- assertEquals(delay, mController.mClickScheduler.getDelayForTesting());
+ assertThat(mController.mClickScheduler.getDelayForTesting()).isEqualTo(delay);
}
@Test
@@ -189,7 +222,40 @@ public class AutoclickControllerTest {
Settings.Secure.ACCESSIBILITY_AUTOCLICK_CURSOR_AREA_SIZE,
AccessibilityManager.AUTOCLICK_CURSOR_AREA_SIZE_DEFAULT,
mTestableContext.getUserId());
- assertEquals(size, mController.mAutoclickIndicatorView.getRadiusForTesting());
+ assertThat(mController.mAutoclickIndicatorView.getRadiusForTesting()).isEqualTo(size);
+ }
+
+ @Test
+ @EnableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR)
+ public void onKeyEvent_modifierKey_doNotUpdateMetaStateWhenControllerIsNull() {
+ assertThat(mController.mClickScheduler).isNull();
+
+ injectFakeKeyEvent(KeyEvent.KEYCODE_ALT_LEFT, KeyEvent.META_ALT_ON);
+
+ assertThat(mController.mClickScheduler).isNull();
+ }
+
+ @Test
+ @EnableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR)
+ public void onKeyEvent_modifierKey_updateMetaStateWhenControllerNotNull() {
+ injectFakeMouseActionDownEvent();
+
+ int metaState = KeyEvent.META_ALT_ON | KeyEvent.META_META_ON;
+ injectFakeKeyEvent(KeyEvent.KEYCODE_ALT_LEFT, metaState);
+
+ assertThat(mController.mClickScheduler).isNotNull();
+ assertThat(mController.mClickScheduler.getMetaStateForTesting()).isEqualTo(metaState);
+ }
+
+ @Test
+ @EnableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR)
+ public void onKeyEvent_modifierKey_cancelAutoClickWhenAdditionalRegularKeyPresssed() {
+ injectFakeMouseActionDownEvent();
+
+ injectFakeKeyEvent(KeyEvent.KEYCODE_J, KeyEvent.META_ALT_ON);
+
+ assertThat(mController.mClickScheduler).isNotNull();
+ assertThat(mController.mClickScheduler.getMetaStateForTesting()).isEqualTo(0);
}
@Test
@@ -198,7 +264,7 @@ public class AutoclickControllerTest {
mController.onDestroy();
- assertNull(mController.mClickScheduler);
+ assertThat(mController.mClickScheduler).isNull();
}
@Test
@@ -207,7 +273,7 @@ public class AutoclickControllerTest {
mController.onDestroy();
- assertNull(mController.mAutoclickSettingsObserver);
+ assertThat(mController.mAutoclickSettingsObserver).isNull();
}
@Test
@@ -217,7 +283,7 @@ public class AutoclickControllerTest {
mController.onDestroy();
- assertNull(mController.mAutoclickIndicatorScheduler);
+ assertThat(mController.mAutoclickIndicatorScheduler).isNull();
}
private void injectFakeMouseActionDownEvent() {
@@ -232,6 +298,17 @@ public class AutoclickControllerTest {
mController.onMotionEvent(event, event, /* policyFlags= */ 0);
}
+ private void injectFakeKeyEvent(int keyCode, int modifiers) {
+ KeyEvent keyEvent = new KeyEvent(
+ /* downTime= */ 0,
+ /* eventTime= */ 0,
+ /* action= */ KeyEvent.ACTION_DOWN,
+ /* code= */ keyCode,
+ /* repeat= */ 0,
+ /* metaState= */ modifiers);
+ mController.onKeyEvent(keyEvent, /* policyFlags= */ 0);
+ }
+
private MotionEvent getFakeMotionDownEvent() {
return MotionEvent.obtain(
/* downTime= */ 0,
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickTypePanelTest.java b/services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickTypePanelTest.java
new file mode 100644
index 000000000000..f0334598bd30
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickTypePanelTest.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.accessibility.autoclick;
+
+import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableContext;
+import android.testing.TestableLooper;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.LinearLayout;
+
+import com.android.internal.R;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+
+/** Test cases for {@link AutoclickTypePanel}. */
+@RunWith(AndroidTestingRunner.class)
+@TestableLooper.RunWithLooper(setAsMainLooper = true)
+public class AutoclickTypePanelTest {
+ @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+
+ @Rule
+ public TestableContext mTestableContext =
+ new TestableContext(getInstrumentation().getContext());
+
+ private AutoclickTypePanel mAutoclickTypePanel;
+ @Mock private WindowManager mMockWindowManager;
+ private LinearLayout mLeftClickButton;
+ private LinearLayout mRightClickButton;
+ private LinearLayout mDoubleClickButton;
+ private LinearLayout mDragButton;
+ private LinearLayout mScrollButton;
+
+ @Before
+ public void setUp() {
+ mTestableContext.addMockSystemService(Context.WINDOW_SERVICE, mMockWindowManager);
+
+ mAutoclickTypePanel = new AutoclickTypePanel(mTestableContext, mMockWindowManager);
+ View contentView = mAutoclickTypePanel.getContentViewForTesting();
+ mLeftClickButton = contentView.findViewById(R.id.accessibility_autoclick_left_click_layout);
+ mRightClickButton =
+ contentView.findViewById(R.id.accessibility_autoclick_right_click_layout);
+ mDoubleClickButton =
+ contentView.findViewById(R.id.accessibility_autoclick_double_click_layout);
+ mScrollButton = contentView.findViewById(R.id.accessibility_autoclick_scroll_layout);
+ mDragButton = contentView.findViewById(R.id.accessibility_autoclick_drag_layout);
+ }
+
+ @Test
+ public void AutoclickTypePanel_initialState_expandedFalse() {
+ assertThat(mAutoclickTypePanel.getExpansionStateForTesting()).isFalse();
+ }
+
+ @Test
+ public void AutoclickTypePanel_initialState_correctButtonVisibility() {
+ // On initialization, only left button is visible.
+ assertThat(mLeftClickButton.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mRightClickButton.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mDoubleClickButton.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mDragButton.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mScrollButton.getVisibility()).isEqualTo(View.GONE);
+ }
+
+ @Test
+ public void togglePanelExpansion_onClick_expandedTrue() {
+ // On clicking left click button, the panel is expanded and all buttons are visible.
+ mLeftClickButton.callOnClick();
+
+ assertThat(mAutoclickTypePanel.getExpansionStateForTesting()).isTrue();
+ assertThat(mLeftClickButton.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mRightClickButton.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mDoubleClickButton.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mDragButton.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mScrollButton.getVisibility()).isEqualTo(View.VISIBLE);
+ }
+
+ @Test
+ public void togglePanelExpansion_onClickAgain_expandedFalse() {
+ // By first click, the panel is expanded.
+ mLeftClickButton.callOnClick();
+ assertThat(mAutoclickTypePanel.getExpansionStateForTesting()).isTrue();
+
+ // Clicks any button in the expanded state, the panel is expected to collapse
+ // with only the clicked button visible.
+ mScrollButton.callOnClick();
+
+ assertThat(mAutoclickTypePanel.getExpansionStateForTesting()).isFalse();
+ assertThat(mScrollButton.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(mRightClickButton.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mLeftClickButton.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mDoubleClickButton.getVisibility()).isEqualTo(View.GONE);
+ assertThat(mDragButton.getVisibility()).isEqualTo(View.GONE);
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java b/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java
index 06958b81d846..1627f683cd3e 100644
--- a/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java
@@ -25,6 +25,7 @@ import static android.app.ActivityManagerInternal.ALLOW_FULL_ONLY;
import static android.app.ActivityManagerInternal.ALLOW_NON_FULL;
import static android.app.ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE;
import static android.app.ActivityManagerInternal.ALLOW_PROFILES_OR_NON_FULL;
+import static android.app.KeyguardManager.LOCK_ON_USER_SWITCH_CALLBACK;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.testing.DexmakerShareClassLoaderRule.runWithDexmakerShareClassLoader;
@@ -115,7 +116,6 @@ import com.android.server.pm.UserManagerInternal;
import com.android.server.pm.UserManagerService;
import com.android.server.pm.UserTypeDetails;
import com.android.server.pm.UserTypeFactory;
-import com.android.server.wm.ActivityTaskManagerInternal;
import com.android.server.wm.WindowManagerService;
import com.google.common.collect.Range;
@@ -1563,11 +1563,11 @@ public class UserControllerTest {
// and the thread is still alive
assertTrue(threadStartUser.isAlive());
- // mock send the keyguard shown event
- ArgumentCaptor<ActivityTaskManagerInternal.ScreenObserver> captor = ArgumentCaptor.forClass(
- ActivityTaskManagerInternal.ScreenObserver.class);
- verify(mInjector.mActivityTaskManagerInternal).registerScreenObserver(captor.capture());
- captor.getValue().onKeyguardStateChanged(true);
+ // mock the binder response for the user switch completion
+ ArgumentCaptor<Bundle> captor = ArgumentCaptor.forClass(Bundle.class);
+ verify(mInjector.mWindowManagerMock).lockNow(captor.capture());
+ IRemoteCallback.Stub.asInterface(captor.getValue().getBinder(
+ LOCK_ON_USER_SWITCH_CALLBACK)).sendResult(null);
// verify the switch now moves on...
Thread.sleep(1000);
@@ -1757,7 +1757,6 @@ public class UserControllerTest {
private final IStorageManager mStorageManagerMock;
private final UserManagerInternal mUserManagerInternalMock;
private final WindowManagerService mWindowManagerMock;
- private final ActivityTaskManagerInternal mActivityTaskManagerInternal;
private final PowerManagerInternal mPowerManagerInternal;
private final AlarmManagerInternal mAlarmManagerInternal;
private final KeyguardManager mKeyguardManagerMock;
@@ -1779,7 +1778,6 @@ public class UserControllerTest {
mUserManagerMock = mock(UserManagerService.class);
mUserManagerInternalMock = mock(UserManagerInternal.class);
mWindowManagerMock = mock(WindowManagerService.class);
- mActivityTaskManagerInternal = mock(ActivityTaskManagerInternal.class);
mStorageManagerMock = mock(IStorageManager.class);
mPowerManagerInternal = mock(PowerManagerInternal.class);
mAlarmManagerInternal = mock(AlarmManagerInternal.class);
@@ -1843,11 +1841,6 @@ public class UserControllerTest {
}
@Override
- ActivityTaskManagerInternal getActivityTaskManagerInternal() {
- return mActivityTaskManagerInternal;
- }
-
- @Override
PowerManagerInternal getPowerManagerInternal() {
return mPowerManagerInternal;
}
diff --git a/services/tests/servicestests/src/com/android/server/audio/AudioDeviceVolumeManagerTest.java b/services/tests/servicestests/src/com/android/server/audio/AudioDeviceVolumeManagerTest.java
index de5564cb7704..f573add7e253 100644
--- a/services/tests/servicestests/src/com/android/server/audio/AudioDeviceVolumeManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/audio/AudioDeviceVolumeManagerTest.java
@@ -16,9 +16,7 @@
package com.android.server.audio;
-import static com.android.media.audio.Flags.FLAG_ABS_VOLUME_INDEX_FIX;
import static com.android.media.audio.Flags.FLAG_DISABLE_PRESCALE_ABSOLUTE_VOLUME;
-import static com.android.media.audio.Flags.absVolumeIndexFix;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.eq;
@@ -34,9 +32,9 @@ import android.media.AudioDeviceInfo;
import android.media.AudioManager;
import android.media.AudioSystem;
import android.media.VolumeInfo;
+import android.os.IpcDataCache;
import android.os.PermissionEnforcer;
import android.os.test.TestLooper;
-import android.platform.test.annotations.RequiresFlagsDisabled;
import android.platform.test.annotations.RequiresFlagsEnabled;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
@@ -71,6 +69,8 @@ public class AudioDeviceVolumeManagerTest {
@Before
public void setUp() throws Exception {
+ IpcDataCache.disableForTestMode();
+
mTestLooper = new TestLooper();
mContext = InstrumentationRegistry.getTargetContext();
mPackageName = mContext.getOpPackageName();
@@ -121,55 +121,6 @@ public class AudioDeviceVolumeManagerTest {
}
@Test
- @RequiresFlagsDisabled({FLAG_DISABLE_PRESCALE_ABSOLUTE_VOLUME, FLAG_ABS_VOLUME_INDEX_FIX})
- public void configurablePreScaleAbsoluteVolume_checkIndex() throws Exception {
- AudioManager am = mContext.getSystemService(AudioManager.class);
- final int minIndex = am.getStreamMinVolume(AudioManager.STREAM_MUSIC);
- final int maxIndex = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
- final VolumeInfo volMedia = new VolumeInfo.Builder(AudioManager.STREAM_MUSIC)
- .setMinVolumeIndex(minIndex)
- .setMaxVolumeIndex(maxIndex)
- .build();
- final AudioDeviceAttributes bleDevice = new AudioDeviceAttributes(
- /*native type*/ AudioSystem.DEVICE_OUT_BLE_HEADSET, /*address*/ "fake_ble");
- final int maxPreScaleIndex = 3;
- final float[] preScale = new float[3];
- preScale[0] = mContext.getResources().getFraction(
- com.android.internal.R.fraction.config_prescaleAbsoluteVolume_index1,
- 1, 1);
- preScale[1] = mContext.getResources().getFraction(
- com.android.internal.R.fraction.config_prescaleAbsoluteVolume_index2,
- 1, 1);
- preScale[2] = mContext.getResources().getFraction(
- com.android.internal.R.fraction.config_prescaleAbsoluteVolume_index3,
- 1, 1);
-
- for (int i = 0; i < maxPreScaleIndex; i++) {
- final int targetIndex = (int) (preScale[i] * maxIndex);
- final VolumeInfo volCur = new VolumeInfo.Builder(volMedia)
- .setVolumeIndex(i + 1).build();
- // Adjust stream volume with FLAG_ABSOLUTE_VOLUME set (index:1~3)
- mAudioService.setDeviceVolume(volCur, bleDevice, mPackageName);
- mTestLooper.dispatchAll();
-
- // Stream volume changes
- verify(mSpyAudioSystem, atLeast(1)).setStreamVolumeIndexAS(
- AudioManager.STREAM_MUSIC, targetIndex, false,
- AudioSystem.DEVICE_OUT_BLE_HEADSET);
- }
-
- // Adjust stream volume with FLAG_ABSOLUTE_VOLUME set (index:4)
- final VolumeInfo volIndex4 = new VolumeInfo.Builder(volMedia)
- .setVolumeIndex(4).build();
- mAudioService.setDeviceVolume(volIndex4, bleDevice, mPackageName);
- mTestLooper.dispatchAll();
-
- verify(mSpyAudioSystem, atLeast(1)).setStreamVolumeIndexAS(
- AudioManager.STREAM_MUSIC, maxIndex, false,
- AudioSystem.DEVICE_OUT_BLE_HEADSET);
- }
-
- @Test
@RequiresFlagsEnabled(FLAG_DISABLE_PRESCALE_ABSOLUTE_VOLUME)
public void disablePreScaleAbsoluteVolume_checkIndex() throws Exception {
AudioManager am = mContext.getSystemService(AudioManager.class);
@@ -182,7 +133,6 @@ public class AudioDeviceVolumeManagerTest {
final AudioDeviceAttributes bleDevice = new AudioDeviceAttributes(
/*native type*/ AudioSystem.DEVICE_OUT_BLE_HEADSET, /*address*/ "bla");
final int maxPreScaleIndex = 3;
- int passedIndex = maxIndex;
for (int i = 0; i < maxPreScaleIndex; i++) {
final VolumeInfo volCur = new VolumeInfo.Builder(volMedia)
@@ -191,12 +141,9 @@ public class AudioDeviceVolumeManagerTest {
mAudioService.setDeviceVolume(volCur, bleDevice, mPackageName);
mTestLooper.dispatchAll();
- if (absVolumeIndexFix()) {
- passedIndex = i + 1;
- }
// Stream volume changes
verify(mSpyAudioSystem, atLeast(1)).setStreamVolumeIndexAS(
- AudioManager.STREAM_MUSIC, passedIndex, false,
+ AudioManager.STREAM_MUSIC, /*index=*/i + 1, false,
AudioSystem.DEVICE_OUT_BLE_HEADSET);
}
@@ -206,11 +153,8 @@ public class AudioDeviceVolumeManagerTest {
mAudioService.setDeviceVolume(volIndex4, bleDevice, mPackageName);
mTestLooper.dispatchAll();
- if (absVolumeIndexFix()) {
- passedIndex = 4;
- }
verify(mSpyAudioSystem, atLeast(1)).setStreamVolumeIndexAS(
- AudioManager.STREAM_MUSIC, passedIndex, false,
+ AudioManager.STREAM_MUSIC, /*index=*/4, false,
AudioSystem.DEVICE_OUT_BLE_HEADSET);
}
}
diff --git a/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java b/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java
index 96c6cbc9ec64..aa9d2058e659 100644
--- a/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java
@@ -32,6 +32,7 @@ import android.app.AppOpsManager;
import android.content.Context;
import android.media.AudioDeviceAttributes;
import android.media.AudioSystem;
+import android.os.IpcDataCache;
import android.os.Looper;
import android.os.PermissionEnforcer;
import android.os.UserHandle;
@@ -87,6 +88,8 @@ public class AudioServiceTest {
@Before
public void setUp() throws Exception {
+ IpcDataCache.disableForTestMode();
+
if (!sLooperPrepared) {
Looper.prepare();
sLooperPrepared = true;
diff --git a/services/tests/servicestests/src/com/android/server/audio/VolumeHelperTest.java b/services/tests/servicestests/src/com/android/server/audio/VolumeHelperTest.java
index 0bbae247d8bb..9cf45647a053 100644
--- a/services/tests/servicestests/src/com/android/server/audio/VolumeHelperTest.java
+++ b/services/tests/servicestests/src/com/android/server/audio/VolumeHelperTest.java
@@ -40,10 +40,8 @@ import static android.media.audio.Flags.autoPublicVolumeApiHardening;
import static android.view.KeyEvent.ACTION_DOWN;
import static android.view.KeyEvent.KEYCODE_VOLUME_UP;
-import static com.android.media.audio.Flags.FLAG_ABS_VOLUME_INDEX_FIX;
import static com.android.media.audio.Flags.FLAG_DISABLE_PRESCALE_ABSOLUTE_VOLUME;
import static com.android.media.audio.Flags.FLAG_RING_MY_CAR;
-import static com.android.media.audio.Flags.absVolumeIndexFix;
import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertWithMessage;
@@ -85,7 +83,6 @@ import android.os.Looper;
import android.os.PermissionEnforcer;
import android.os.test.TestLooper;
import android.platform.test.annotations.Presubmit;
-import android.platform.test.annotations.RequiresFlagsDisabled;
import android.platform.test.annotations.RequiresFlagsEnabled;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
@@ -117,6 +114,12 @@ public class VolumeHelperTest {
/** Choose a default stream volume value which does not depend on min/max. */
private static final int DEFAULT_STREAM_VOLUME = 2;
+ /**
+ * The default ringer mode affected stream value since the ringer mode delegate is not used
+ * for unit testing.
+ */
+ private static final int DEFAULT_RINGER_MODE_AFFECTED_STREAMS = 0x1a6;
+
@Rule
public final MockitoRule mockito = MockitoJUnit.rule();
@@ -186,6 +189,10 @@ public class VolumeHelperTest {
public void setMuteAffectedStreams(int muteAffectedStreams) {
mMuteAffectedStreams = muteAffectedStreams;
}
+
+ public void setRingerModeAffectedStreams(int ringerModeAffectedStreams) {
+ mRingerModeAffectedStreams = ringerModeAffectedStreams;
+ }
}
private static class TestDeviceVolumeBehaviorDispatcherStub
@@ -550,6 +557,48 @@ public class VolumeHelperTest {
assertEquals(RINGER_MODE_VIBRATE, mAudioService.getRingerModeInternal());
}
+ @Test
+ public void setStreamVolume_doesNotUnmuteStreamAffectedByRingerMode() throws Exception {
+ assumeFalse("Skipping ringer mode test on automotive", mIsAutomotive);
+ mAudioService.setRingerModeAffectedStreams(DEFAULT_RINGER_MODE_AFFECTED_STREAMS);
+ mAudioService.setRingerModeInternal(RINGER_MODE_VIBRATE, mContext.getOpPackageName());
+
+ mAudioService.setStreamVolume(STREAM_NOTIFICATION, /*index=*/1, /*flags=*/0,
+ mContext.getOpPackageName());
+ mTestLooper.dispatchAll();
+
+ assertEquals(0, mAudioService.getStreamVolume(STREAM_NOTIFICATION));
+ }
+
+ @Test
+ public void adjustUnmuteStreamVolume_doesNotUnmuteStreamAffectedByRingerMode()
+ throws Exception {
+ assumeFalse("Skipping ringer mode test on automotive", mIsAutomotive);
+ mAudioService.setRingerModeAffectedStreams(DEFAULT_RINGER_MODE_AFFECTED_STREAMS);
+ mAudioService.setRingerModeInternal(RINGER_MODE_VIBRATE, mContext.getOpPackageName());
+
+ mAudioService.adjustStreamVolume(STREAM_NOTIFICATION, ADJUST_UNMUTE, /*flags=*/0,
+ mContext.getOpPackageName());
+ mTestLooper.dispatchAll();
+
+ assertEquals(0, mAudioService.getStreamVolume(STREAM_NOTIFICATION));
+ }
+
+ @Test
+ public void adjustRaiseStreamVolume_doesNotUnmuteStreamAffectedByRingerMode()
+ throws Exception {
+ assumeFalse("Skipping ringer mode test on automotive", mIsAutomotive);
+ mAudioService.setRingerModeAffectedStreams(DEFAULT_RINGER_MODE_AFFECTED_STREAMS);
+ mAudioService.setRingerModeInternal(RINGER_MODE_VIBRATE, mContext.getOpPackageName());
+
+ mAudioService.adjustStreamVolume(STREAM_NOTIFICATION, ADJUST_RAISE, /*flags=*/0,
+ mContext.getOpPackageName());
+ mTestLooper.dispatchAll();
+
+ assertEquals(0, mAudioService.getStreamVolume(STREAM_NOTIFICATION));
+ }
+
+
// --------------------- Permission tests ---------------------
@Test
@@ -623,56 +672,6 @@ public class VolumeHelperTest {
}
@Test
- @RequiresFlagsDisabled({FLAG_DISABLE_PRESCALE_ABSOLUTE_VOLUME, FLAG_ABS_VOLUME_INDEX_FIX})
- public void configurablePreScaleAbsoluteVolume_checkIndex() throws Exception {
- final int minIndex = mAm.getStreamMinVolume(STREAM_MUSIC);
- final int maxIndex = mAm.getStreamMaxVolume(STREAM_MUSIC);
- final VolumeInfo volMedia = new VolumeInfo.Builder(STREAM_MUSIC)
- .setMinVolumeIndex(minIndex)
- .setMaxVolumeIndex(maxIndex)
- .build();
- final AudioDeviceAttributes bleDevice = new AudioDeviceAttributes(
- /*native type*/ AudioSystem.DEVICE_OUT_BLE_HEADSET, /*address*/ "fake_ble");
- final int maxPreScaleIndex = 3;
- final float[] preScale = new float[maxPreScaleIndex];
- preScale[0] = mContext.getResources().getFraction(
- com.android.internal.R.fraction.config_prescaleAbsoluteVolume_index1,
- 1, 1);
- preScale[1] = mContext.getResources().getFraction(
- com.android.internal.R.fraction.config_prescaleAbsoluteVolume_index2,
- 1, 1);
- preScale[2] = mContext.getResources().getFraction(
- com.android.internal.R.fraction.config_prescaleAbsoluteVolume_index3,
- 1, 1);
-
- for (int i = 0; i < maxPreScaleIndex; i++) {
- final int targetIndex = (int) (preScale[i] * maxIndex);
- final VolumeInfo volCur = new VolumeInfo.Builder(volMedia)
- .setVolumeIndex(i + 1).build();
- // Adjust stream volume with FLAG_ABSOLUTE_VOLUME set (index:1~3)
- mAudioService.setDeviceVolume(volCur, bleDevice, mContext.getOpPackageName());
- mTestLooper.dispatchAll();
-
- assertEquals(volCur,
- mAudioService.getDeviceVolume(volCur, bleDevice, mContext.getOpPackageName()));
- // Stream volume changes
- verify(mSpyAudioSystem, atLeast(1)).setStreamVolumeIndexAS(
- STREAM_MUSIC, targetIndex, false, AudioSystem.DEVICE_OUT_BLE_HEADSET);
- }
-
- // Adjust stream volume with FLAG_ABSOLUTE_VOLUME set (index:4)
- final VolumeInfo volIndex4 = new VolumeInfo.Builder(volMedia)
- .setVolumeIndex(4).build();
- mAudioService.setDeviceVolume(volIndex4, bleDevice, mContext.getOpPackageName());
- mTestLooper.dispatchAll();
-
- assertEquals(volIndex4,
- mAudioService.getDeviceVolume(volIndex4, bleDevice, mContext.getOpPackageName()));
- verify(mSpyAudioSystem, atLeast(1)).setStreamVolumeIndexAS(
- STREAM_MUSIC, maxIndex, false, AudioSystem.DEVICE_OUT_BLE_HEADSET);
- }
-
- @Test
@RequiresFlagsEnabled(FLAG_DISABLE_PRESCALE_ABSOLUTE_VOLUME)
public void disablePreScaleAbsoluteVolume_checkIndex() throws Exception {
final int minIndex = mAm.getStreamMinVolume(STREAM_MUSIC);
@@ -684,7 +683,6 @@ public class VolumeHelperTest {
final AudioDeviceAttributes bleDevice = new AudioDeviceAttributes(
/*native type*/ AudioSystem.DEVICE_OUT_BLE_HEADSET, /*address*/ "bla");
final int maxPreScaleIndex = 3;
- int passedIndex = maxIndex;
for (int i = 0; i < maxPreScaleIndex; i++) {
final VolumeInfo volCur = new VolumeInfo.Builder(volMedia)
@@ -693,12 +691,9 @@ public class VolumeHelperTest {
mAudioService.setDeviceVolume(volCur, bleDevice, mContext.getOpPackageName());
mTestLooper.dispatchAll();
- if (absVolumeIndexFix()) {
- passedIndex = i + 1;
- }
// Stream volume changes
verify(mSpyAudioSystem, atLeast(1)).setStreamVolumeIndexAS(
- STREAM_MUSIC, passedIndex, false, AudioSystem.DEVICE_OUT_BLE_HEADSET);
+ STREAM_MUSIC, /*index=*/i + 1, false, AudioSystem.DEVICE_OUT_BLE_HEADSET);
}
// Adjust stream volume with FLAG_ABSOLUTE_VOLUME set (index:4)
@@ -707,11 +702,8 @@ public class VolumeHelperTest {
mAudioService.setDeviceVolume(volIndex4, bleDevice, mContext.getOpPackageName());
mTestLooper.dispatchAll();
- if (absVolumeIndexFix()) {
- passedIndex = 4;
- }
verify(mSpyAudioSystem, atLeast(1)).setStreamVolumeIndexAS(
- STREAM_MUSIC, passedIndex, false, AudioSystem.DEVICE_OUT_BLE_HEADSET);
+ STREAM_MUSIC, /*index=*/4, false, AudioSystem.DEVICE_OUT_BLE_HEADSET);
}
// ---------------- DeviceVolumeBehaviorTest ----------------
diff --git a/services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java
index bdbb495db841..ffcb96120b19 100644
--- a/services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java
@@ -24,7 +24,6 @@ import static android.content.Context.DEVICE_ID_DEFAULT;
import static android.content.Context.DEVICE_ID_INVALID;
import static android.content.Intent.ACTION_VIEW;
import static android.content.pm.ActivityInfo.FLAG_CAN_DISPLAY_ON_REMOTE_DEVICES;
-import static android.content.pm.PackageManager.ACTION_REQUEST_PERMISSIONS;
import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertWithMessage;
@@ -73,7 +72,6 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
import android.hardware.Sensor;
import android.hardware.display.DisplayManagerGlobal;
import android.hardware.display.DisplayManagerInternal;
@@ -148,14 +146,9 @@ import java.util.function.Consumer;
@TestableLooper.RunWithLooper(setAsMainLooper = true)
public class VirtualDeviceManagerServiceTest {
- private static final String NONBLOCKED_APP_PACKAGE_NAME = "com.someapp";
- private static final String PERMISSION_CONTROLLER_PACKAGE_NAME =
- "com.android.permissioncontroller";
+ private static final String NONBLOCKED_APP_PACKAGE_NAME = "com.nonblocked.app";
+ private static final String BLOCKED_APP_PACKAGE_NAME = "com.blocked.app";
private static final String VIRTUAL_DEVICE_OWNER_PACKAGE = "com.android.virtualdevice.test";
- private static final String SETTINGS_PACKAGE_NAME = "com.android.settings";
- private static final String VENDING_PACKAGE_NAME = "com.android.vending";
- private static final String GOOGLE_DIALER_PACKAGE_NAME = "com.google.android.dialer";
- private static final String GOOGLE_MAPS_PACKAGE_NAME = "com.google.android.apps.maps";
private static final String DEVICE_NAME_1 = "device name 1";
private static final String DEVICE_NAME_2 = "device name 2";
private static final String DEVICE_NAME_3 = "device name 3";
@@ -219,6 +212,10 @@ public class VirtualDeviceManagerServiceTest {
.setInputDeviceName(DEVICE_NAME_1)
.setAssociatedDisplayId(DISPLAY_ID_1)
.build();
+
+ private static final Set<ComponentName> BLOCKED_ACTIVITIES = Set.of(
+ new ComponentName(BLOCKED_APP_PACKAGE_NAME, BLOCKED_APP_PACKAGE_NAME));
+
private static final String TEST_SITE = "http://test";
@Rule
@@ -284,17 +281,6 @@ public class VirtualDeviceManagerServiceTest {
@Mock
IInputManager mIInputManagerMock;
- private ArraySet<ComponentName> getBlockedActivities() {
- ArraySet<ComponentName> blockedActivities = new ArraySet<>();
- blockedActivities.add(new ComponentName(SETTINGS_PACKAGE_NAME, SETTINGS_PACKAGE_NAME));
- blockedActivities.add(new ComponentName(VENDING_PACKAGE_NAME, VENDING_PACKAGE_NAME));
- blockedActivities.add(
- new ComponentName(GOOGLE_DIALER_PACKAGE_NAME, GOOGLE_DIALER_PACKAGE_NAME));
- blockedActivities.add(
- new ComponentName(GOOGLE_MAPS_PACKAGE_NAME, GOOGLE_MAPS_PACKAGE_NAME));
- return blockedActivities;
- }
-
private Intent createRestrictedActivityBlockedIntent(Set<String> displayCategories,
String targetDisplayCategory) {
when(mDisplayManagerInternalMock.createVirtualDisplay(any(), any(), any(), any(),
@@ -358,7 +344,7 @@ public class VirtualDeviceManagerServiceTest {
mContext = Mockito.spy(new ContextWrapper(
InstrumentationRegistry.getInstrumentation().getTargetContext()));
- doReturn(mContext).when(mContext).createContextAsUser(eq(Process.myUserHandle()), anyInt());
+ doReturn(mContext).when(mContext).createContextAsUser(any(), anyInt());
doNothing().when(mContext).sendBroadcastAsUser(any(), any());
when(mContext.getSystemService(Context.DEVICE_POLICY_SERVICE)).thenReturn(
mDevicePolicyManagerMock);
@@ -500,9 +486,7 @@ public class VirtualDeviceManagerServiceTest {
@Test
public void getDevicePolicy_returnsCustom() {
- VirtualDeviceParams params = new VirtualDeviceParams
- .Builder()
- .setBlockedActivities(getBlockedActivities())
+ VirtualDeviceParams params = new VirtualDeviceParams.Builder()
.setDevicePolicy(POLICY_TYPE_SENSORS, DEVICE_POLICY_CUSTOM)
.build();
mDeviceImpl.close();
@@ -516,9 +500,7 @@ public class VirtualDeviceManagerServiceTest {
@Test
public void getDevicePolicy_defaultRecentsPolicy_gwpcCanShowRecentsOnHostDevice() {
- VirtualDeviceParams params = new VirtualDeviceParams
- .Builder()
- .build();
+ VirtualDeviceParams params = new VirtualDeviceParams.Builder().build();
mDeviceImpl.close();
mDeviceImpl = createVirtualDevice(VIRTUAL_DEVICE_ID_1, DEVICE_OWNER_UID_1, params);
addVirtualDisplay(mDeviceImpl, DISPLAY_ID_1);
@@ -530,8 +512,7 @@ public class VirtualDeviceManagerServiceTest {
@Test
public void getDevicePolicy_customRecentsPolicy_gwpcCannotShowRecentsOnHostDevice() {
- VirtualDeviceParams params = new VirtualDeviceParams
- .Builder()
+ VirtualDeviceParams params = new VirtualDeviceParams.Builder()
.setDevicePolicy(POLICY_TYPE_RECENTS, DEVICE_POLICY_CUSTOM)
.build();
mDeviceImpl.close();
@@ -545,8 +526,7 @@ public class VirtualDeviceManagerServiceTest {
@Test
public void getDevicePolicy_customRecentsPolicy_untrustedDisplaygwpcShowsRecentsOnHostDevice() {
- VirtualDeviceParams params = new VirtualDeviceParams
- .Builder()
+ VirtualDeviceParams params = new VirtualDeviceParams.Builder()
.setDevicePolicy(POLICY_TYPE_RECENTS, DEVICE_POLICY_CUSTOM)
.build();
mDeviceImpl.close();
@@ -1582,7 +1562,7 @@ public class VirtualDeviceManagerServiceTest {
}
@Test
- public void openNonBlockedAppOnVirtualDisplay_doesNotStartBlockedAlertActivity() {
+ public void openNonBlockedAppOnVirtualDisplay_succeeds() {
addVirtualDisplay(mDeviceImpl, DISPLAY_ID_1);
GenericWindowPolicyController gwpc = mDeviceImpl.getDisplayWindowPolicyControllerForTest(
DISPLAY_ID_1);
@@ -1604,126 +1584,16 @@ public class VirtualDeviceManagerServiceTest {
}
@Test
- public void openPermissionControllerOnVirtualDisplay_startBlockedAlertActivity() {
- addVirtualDisplay(mDeviceImpl, DISPLAY_ID_1);
- GenericWindowPolicyController gwpc = mDeviceImpl.getDisplayWindowPolicyControllerForTest(
- DISPLAY_ID_1);
- doNothing().when(mContext).startActivityAsUser(any(), any(), any());
-
- ActivityInfo activityInfo = getActivityInfo(
- PERMISSION_CONTROLLER_PACKAGE_NAME,
- PERMISSION_CONTROLLER_PACKAGE_NAME,
- /* displayOnRemoteDevices */ false,
- /* targetDisplayCategory */ null);
- Intent blockedAppIntent = BlockedAppStreamingActivity.createIntent(
- activityInfo, mAssociationInfo.getDisplayName());
- gwpc.canActivityBeLaunched(activityInfo, blockedAppIntent,
- WindowConfiguration.WINDOWING_MODE_FULLSCREEN, DISPLAY_ID_1, /* isNewTask= */ false,
- /* isResultExpected = */ false, /* intentSender= */ null);
-
- verify(mContext).startActivityAsUser(argThat(intent ->
- intent.filterEquals(blockedAppIntent)), any(), any());
- }
-
- @Test
- public void openPermissionControllerOnVirtualDisplay_displayOnRemoteDevices_starts() {
- addVirtualDisplay(mDeviceImpl, DISPLAY_ID_1);
- GenericWindowPolicyController gwpc = mDeviceImpl.getDisplayWindowPolicyControllerForTest(
- DISPLAY_ID_1);
- doNothing().when(mContext).startActivityAsUser(any(), any(), any());
-
- ActivityInfo activityInfo = getActivityInfo(
- PERMISSION_CONTROLLER_PACKAGE_NAME,
- PERMISSION_CONTROLLER_PACKAGE_NAME,
- /* displayOnRemoveDevices */ true,
- /* targetDisplayCategory */ null);
- Intent blockedAppIntent = BlockedAppStreamingActivity.createIntent(
- activityInfo, mAssociationInfo.getDisplayName());
- gwpc.canActivityBeLaunched(activityInfo, blockedAppIntent,
- WindowConfiguration.WINDOWING_MODE_FULLSCREEN, DISPLAY_ID_1, /* isNewTask= */ false,
- /* isResultExpected = */ false, /* intentSender= */ null);
-
- verify(mContext, never()).startActivityAsUser(argThat(intent ->
- intent.filterEquals(blockedAppIntent)), any(), any());
- }
-
- @Test
- public void openPermissionControllerOnVirtualDisplay_dontDisplayOnRemoteDevices_starts() {
- addVirtualDisplay(mDeviceImpl, DISPLAY_ID_1);
- GenericWindowPolicyController gwpc = mDeviceImpl.getDisplayWindowPolicyControllerForTest(
- DISPLAY_ID_1);
- doNothing().when(mContext).startActivityAsUser(any(), any(), any());
-
- ActivityInfo activityInfo = getActivityInfo(
- PERMISSION_CONTROLLER_PACKAGE_NAME,
- PERMISSION_CONTROLLER_PACKAGE_NAME,
- /* displayOnRemoveDevices */ false,
- /* targetDisplayCategory */ null);
- Intent blockedAppIntent = BlockedAppStreamingActivity.createIntent(
- activityInfo, mAssociationInfo.getDisplayName());
- gwpc.canActivityBeLaunched(activityInfo, blockedAppIntent,
- WindowConfiguration.WINDOWING_MODE_FULLSCREEN, DISPLAY_ID_1, /* isNewTask= */ false,
- /* isResultExpected = */ false, /* intentSender= */ null);
-
- verify(mContext).startActivityAsUser(argThat(intent ->
- intent.filterEquals(blockedAppIntent)), any(), any());
- }
-
- @Test
- public void openSettingsOnVirtualDisplay_startBlockedAlertActivity() {
- addVirtualDisplay(mDeviceImpl, DISPLAY_ID_1);
- GenericWindowPolicyController gwpc = mDeviceImpl.getDisplayWindowPolicyControllerForTest(
- DISPLAY_ID_1);
- doNothing().when(mContext).startActivityAsUser(any(), any(), any());
-
- ActivityInfo activityInfo = getActivityInfo(
- SETTINGS_PACKAGE_NAME,
- SETTINGS_PACKAGE_NAME,
- /* displayOnRemoteDevices */ true,
- /* targetDisplayCategory */ null);
- Intent blockedAppIntent = BlockedAppStreamingActivity.createIntent(
- activityInfo, mAssociationInfo.getDisplayName());
- gwpc.canActivityBeLaunched(activityInfo, blockedAppIntent,
- WindowConfiguration.WINDOWING_MODE_FULLSCREEN, DISPLAY_ID_1, /* isNewTask= */ false,
- /* isResultExpected = */ false, /* intentSender= */ null);
-
- verify(mContext).startActivityAsUser(argThat(intent ->
- intent.filterEquals(blockedAppIntent)), any(), any());
- }
-
- @Test
- public void openVendingOnVirtualDisplay_startBlockedAlertActivity() {
- addVirtualDisplay(mDeviceImpl, DISPLAY_ID_1);
- GenericWindowPolicyController gwpc = mDeviceImpl.getDisplayWindowPolicyControllerForTest(
- DISPLAY_ID_1);
- doNothing().when(mContext).startActivityAsUser(any(), any(), any());
-
- ActivityInfo activityInfo = getActivityInfo(
- VENDING_PACKAGE_NAME,
- VENDING_PACKAGE_NAME,
- /* displayOnRemoteDevices */ true,
- /* targetDisplayCategory */ null);
- Intent blockedAppIntent = BlockedAppStreamingActivity.createIntent(
- activityInfo, mAssociationInfo.getDisplayName());
- gwpc.canActivityBeLaunched(activityInfo, blockedAppIntent,
- WindowConfiguration.WINDOWING_MODE_FULLSCREEN, DISPLAY_ID_1, /* isNewTask= */ false,
- /* isResultExpected = */ false, /* intentSender= */ null);
-
- verify(mContext).startActivityAsUser(argThat(intent ->
- intent.filterEquals(blockedAppIntent)), any(), any());
- }
-
- @Test
- public void openGoogleDialerOnVirtualDisplay_startBlockedAlertActivity() {
+ public void openNonBlockedAppOnVirtualDisplay_cannotDisplayOnRemoteDevices_blocked() {
addVirtualDisplay(mDeviceImpl, DISPLAY_ID_1);
GenericWindowPolicyController gwpc = mDeviceImpl.getDisplayWindowPolicyControllerForTest(
DISPLAY_ID_1);
doNothing().when(mContext).startActivityAsUser(any(), any(), any());
ActivityInfo activityInfo = getActivityInfo(
- GOOGLE_DIALER_PACKAGE_NAME,
- GOOGLE_DIALER_PACKAGE_NAME,
- /* displayOnRemoteDevices */ true,
+ NONBLOCKED_APP_PACKAGE_NAME,
+ NONBLOCKED_APP_PACKAGE_NAME,
+ /* displayOnRemoteDevices */ false,
/* targetDisplayCategory */ null);
Intent blockedAppIntent = BlockedAppStreamingActivity.createIntent(
activityInfo, mAssociationInfo.getDisplayName());
@@ -1736,15 +1606,15 @@ public class VirtualDeviceManagerServiceTest {
}
@Test
- public void openGoogleMapsOnVirtualDisplay_startBlockedAlertActivity() {
+ public void openBlockedAppOnVirtualDisplay_blocked() {
addVirtualDisplay(mDeviceImpl, DISPLAY_ID_1);
GenericWindowPolicyController gwpc = mDeviceImpl.getDisplayWindowPolicyControllerForTest(
DISPLAY_ID_1);
doNothing().when(mContext).startActivityAsUser(any(), any(), any());
ActivityInfo activityInfo = getActivityInfo(
- GOOGLE_MAPS_PACKAGE_NAME,
- GOOGLE_MAPS_PACKAGE_NAME,
+ BLOCKED_APP_PACKAGE_NAME,
+ BLOCKED_APP_PACKAGE_NAME,
/* displayOnRemoteDevices */ true,
/* targetDisplayCategory */ null);
Intent blockedAppIntent = BlockedAppStreamingActivity.createIntent(
@@ -1758,31 +1628,6 @@ public class VirtualDeviceManagerServiceTest {
}
@Test
- public void openNonBlockedAppOnMirrorDisplay_flagEnabled_cannotBeLaunched() {
- when(mDisplayManagerInternalMock.getDisplayIdToMirror(anyInt()))
- .thenReturn(Display.DEFAULT_DISPLAY);
- addVirtualDisplay(mDeviceImpl, DISPLAY_ID_1);
- GenericWindowPolicyController gwpc = mDeviceImpl.getDisplayWindowPolicyControllerForTest(
- DISPLAY_ID_1);
- doNothing().when(mContext).startActivityAsUser(any(), any(), any());
-
- ActivityInfo activityInfo = getActivityInfo(
- NONBLOCKED_APP_PACKAGE_NAME,
- NONBLOCKED_APP_PACKAGE_NAME,
- /* displayOnRemoteDevices */ true,
- /* targetDisplayCategory */ null);
- assertThat(gwpc.canActivityBeLaunched(activityInfo, null,
- WindowConfiguration.WINDOWING_MODE_FULLSCREEN, DISPLAY_ID_1, /* isNewTask= */ false,
- /* isResultExpected = */ false, /* intentSender= */ null))
- .isFalse();
- // Verify that BlockedAppStreamingActivity also doesn't launch for mirror displays.
- Intent blockedAppIntent = BlockedAppStreamingActivity.createIntent(
- activityInfo, mAssociationInfo.getDisplayName());
- verify(mContext, never()).startActivityAsUser(argThat(intent ->
- intent.filterEquals(blockedAppIntent)), any(), any());
- }
-
- @Test
public void registerRunningAppsChangedListener_onRunningAppsChanged_listenersNotified() {
ArraySet<Integer> uids = new ArraySet<>(Arrays.asList(UID_1, UID_2));
addVirtualDisplay(mDeviceImpl, DISPLAY_ID_1);
@@ -1811,27 +1656,6 @@ public class VirtualDeviceManagerServiceTest {
}
@Test
- public void canActivityBeLaunched_permissionDialog_isStreamed() {
- VirtualDeviceParams params = new VirtualDeviceParams.Builder().build();
- mDeviceImpl.close();
- mDeviceImpl = createVirtualDevice(VIRTUAL_DEVICE_ID_1, DEVICE_OWNER_UID_1, params);
-
- addVirtualDisplay(mDeviceImpl, DISPLAY_ID_1);
- GenericWindowPolicyController gwpc = mDeviceImpl.getDisplayWindowPolicyControllerForTest(
- DISPLAY_ID_1);
- ComponentName permissionComponent = getPermissionDialogComponent();
- ActivityInfo activityInfo = getActivityInfo(
- permissionComponent.getPackageName(),
- permissionComponent.getClassName(),
- /* displayOnRemoteDevices */ true,
- /* targetDisplayCategory */ null);
- assertThat(gwpc.canActivityBeLaunched(activityInfo, null,
- WindowConfiguration.WINDOWING_MODE_FULLSCREEN, DISPLAY_ID_1, /* isNewTask= */ false,
- /* isResultExpected = */ false, /* intentSender= */ null))
- .isTrue();
- }
-
- @Test
public void canActivityBeLaunched_activityCanLaunch() {
Intent intent = new Intent(ACTION_VIEW, Uri.parse(TEST_SITE));
addVirtualDisplay(mDeviceImpl, DISPLAY_ID_1);
@@ -2009,7 +1833,7 @@ public class VirtualDeviceManagerServiceTest {
private VirtualDeviceImpl createVirtualDevice(int virtualDeviceId, int ownerUid) {
VirtualDeviceParams params = new VirtualDeviceParams.Builder()
- .setBlockedActivities(getBlockedActivities())
+ .setBlockedActivities(BLOCKED_ACTIVITIES)
.build();
return createVirtualDevice(virtualDeviceId, ownerUid, params);
}
@@ -2060,13 +1884,6 @@ public class VirtualDeviceManagerServiceTest {
mInputManagerMockHelper.addDisplayIdMapping(uniqueId, displayId);
}
- private ComponentName getPermissionDialogComponent() {
- Intent intent = new Intent(ACTION_REQUEST_PERMISSIONS);
- PackageManager packageManager = mContext.getPackageManager();
- intent.setPackage(packageManager.getPermissionControllerPackageName());
- return intent.resolveActivity(packageManager);
- }
-
private AssociationInfo createAssociationInfo(int associationId, String deviceProfile) {
return createAssociationInfo(
associationId, deviceProfile, /* displayName= */ deviceProfile);
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java
index 6d863015231c..fcde4055cf17 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java
@@ -16,12 +16,15 @@
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
+
import static com.android.server.SystemService.PHASE_SYSTEM_SERVICES_READY;
import static com.android.server.hdmi.Constants.ADDR_TV;
import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC;
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
import static org.mockito.Mockito.spy;
import android.annotation.RequiresPermission;
@@ -60,6 +63,9 @@ public class ActiveSourceActionTest {
@Before
public void setUp() throws Exception {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
mContextSpy = spy(new ContextWrapper(InstrumentationRegistry.getTargetContext()));
FakeAudioFramework audioFramework = new FakeAudioFramework();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java
index a5f7bb117e7d..9a6a24c52143 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java
@@ -15,11 +15,14 @@
*/
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
+
import static com.android.server.SystemService.PHASE_SYSTEM_SERVICES_READY;
import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC;
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
import static org.mockito.Mockito.spy;
import android.annotation.RequiresPermission;
@@ -59,6 +62,9 @@ public class ArcInitiationActionFromAvrTest {
@Before
public void setUp() throws Exception {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
mContextSpy = spy(new ContextWrapper(InstrumentationRegistry.getTargetContext()));
FakeAudioFramework audioFramework = new FakeAudioFramework();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java
index 857ee1aa176f..ee2f1767d849 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java
@@ -15,11 +15,14 @@
*/
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
+
import static com.android.server.SystemService.PHASE_SYSTEM_SERVICES_READY;
import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC;
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
import static org.mockito.Mockito.spy;
import android.annotation.RequiresPermission;
@@ -64,6 +67,9 @@ public class ArcTerminationActionFromAvrTest {
@Before
public void setUp() throws Exception {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
MockitoAnnotations.initMocks(this);
mContextSpy = spy(new ContextWrapper(InstrumentationRegistry.getTargetContext()));
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java
index 2296911a4e7e..40f9dbc074c5 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java
@@ -16,12 +16,15 @@
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
+
import static com.android.server.SystemService.PHASE_SYSTEM_SERVICES_READY;
import static com.android.server.hdmi.Constants.ADDR_BROADCAST;
import static com.android.server.hdmi.Constants.ADDR_TV;
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
@@ -73,6 +76,9 @@ public class DevicePowerStatusActionTest {
@Before
public void setUp() throws Exception {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
MockitoAnnotations.initMocks(this);
mContextSpy = spy(new ContextWrapper(InstrumentationRegistry.getTargetContext()));
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromPlaybackTest.java b/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromPlaybackTest.java
index 47cfa4218435..461e98b4bf06 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromPlaybackTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromPlaybackTest.java
@@ -16,6 +16,7 @@
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
import static android.hardware.hdmi.HdmiControlManager.POWER_STATUS_ON;
import static android.hardware.hdmi.HdmiControlManager.POWER_STATUS_STANDBY;
import static android.hardware.hdmi.HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON;
@@ -30,6 +31,8 @@ import static com.android.server.hdmi.DeviceSelectActionFromPlayback.STATE_WAIT_
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
+
import android.annotation.RequiresPermission;
import android.content.Context;
import android.content.Intent;
@@ -94,6 +97,9 @@ public class DeviceSelectActionFromPlaybackTest {
@Before
public void setUp() {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
MockitoAnnotations.initMocks(this);
Context context = InstrumentationRegistry.getTargetContext();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromTvTest.java b/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromTvTest.java
index 792faab5b196..a4c71bd6094e 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromTvTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromTvTest.java
@@ -16,6 +16,7 @@
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
import static android.hardware.hdmi.HdmiControlManager.POWER_STATUS_ON;
import static android.hardware.hdmi.HdmiControlManager.POWER_STATUS_STANDBY;
import static android.hardware.hdmi.HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON;
@@ -30,6 +31,8 @@ import static com.android.server.hdmi.DeviceSelectActionFromTv.STATE_WAIT_FOR_RE
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
+
import android.annotation.RequiresPermission;
import android.content.Context;
import android.content.Intent;
@@ -106,6 +109,9 @@ public class DeviceSelectActionFromTvTest {
@Before
public void setUp() {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
Context context = InstrumentationRegistry.getTargetContext();
mMyLooper = mTestLooper.getLooper();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTest.java
index 30dac9f3813d..0e9f21948907 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTest.java
@@ -15,12 +15,15 @@
*/
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
+
import static com.android.server.SystemService.PHASE_BOOT_COMPLETED;
import static com.android.server.hdmi.Constants.ADDR_PLAYBACK_1;
import static com.android.server.hdmi.Constants.ADDR_TV;
import static com.android.server.hdmi.Constants.PATH_RELATIONSHIP_ANCESTOR;
import static com.android.server.hdmi.HdmiControlService.WAKE_UP_SCREEN_ON;
+import static org.junit.Assume.assumeTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
@@ -92,6 +95,9 @@ public class HdmiCecAtomLoggingTest {
@Before
public void setUp() throws RemoteException {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
mHdmiCecAtomWriterSpy = spy(new HdmiCecAtomWriter());
mLooper = mTestLooper.getLooper();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTvTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTvTest.java
index e1e101fc1724..a0e21ed1bdb1 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTvTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTvTest.java
@@ -15,10 +15,13 @@
*/
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
+
import static com.android.server.hdmi.Constants.HDMI_EARC_STATUS_EARC_PENDING;
import static com.android.server.hdmi.Constants.HDMI_EARC_STATUS_UNKNOWN;
import static com.android.server.hdmi.HdmiControlService.WAKE_UP_SCREEN_ON;
+import static org.junit.Assume.assumeTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
@@ -78,6 +81,9 @@ public class HdmiCecAtomLoggingTvTest {
@Before
public void setUp() throws RemoteException {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getInstrumentation().getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
mHdmiCecAtomWriterSpy = spy(new HdmiCecAtomWriter());
mLooper = mTestLooper.getLooper();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java
index d8c58a8e16b6..e66026735ec4 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java
@@ -15,10 +15,13 @@
*/
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
+
import static com.google.common.truth.Truth.assertThat;
import static junit.framework.Assert.assertTrue;
+import static org.junit.Assume.assumeTrue;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
@@ -65,6 +68,9 @@ public final class HdmiCecConfigTest {
@Before
public void setUp() throws Exception {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
MockitoAnnotations.initMocks(this);
mContext = FakeHdmiCecConfig.buildContext(InstrumentationRegistry.getTargetContext());
}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
index 4f551119b42e..314fe05b6367 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
@@ -15,6 +15,8 @@
*/
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
+
import static com.android.server.SystemService.PHASE_SYSTEM_SERVICES_READY;
import static com.android.server.hdmi.Constants.ADDR_AUDIO_SYSTEM;
import static com.android.server.hdmi.Constants.ADDR_BROADCAST;
@@ -26,6 +28,8 @@ import static com.android.server.hdmi.HdmiControlService.STANDBY_SCREEN_OFF;
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
+
import android.annotation.RequiresPermission;
import android.content.Context;
import android.content.Intent;
@@ -85,6 +89,9 @@ public class HdmiCecLocalDeviceAudioSystemTest {
@Before
public void setUp() {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
Context context = InstrumentationRegistry.getTargetContext();
mMyLooper = mTestLooper.getLooper();
mLocalDeviceTypes.add(HdmiDeviceInfo.DEVICE_PLAYBACK);
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
index cfdf17668229..d600e16c6f13 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
@@ -15,6 +15,8 @@
*/
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
+
import static com.android.server.SystemService.PHASE_SYSTEM_SERVICES_READY;
import static com.android.server.hdmi.Constants.ABORT_UNRECOGNIZED_OPCODE;
import static com.android.server.hdmi.Constants.ADDR_AUDIO_SYSTEM;
@@ -29,6 +31,8 @@ import static com.android.server.hdmi.PowerStatusMonitorActionFromPlayback.MONIT
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
+
import android.annotation.RequiresPermission;
import android.content.Context;
import android.content.Intent;
@@ -97,6 +101,9 @@ public class HdmiCecLocalDevicePlaybackTest {
new FakePowerManagerInternalWrapper();
@Before
public void setUp() {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
MockitoAnnotations.initMocks(this);
Context context = InstrumentationRegistry.getTargetContext();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java
index 5be4490e67ef..f74e2ace7ae3 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java
@@ -15,6 +15,8 @@
*/
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
+
import static com.android.server.SystemService.PHASE_SYSTEM_SERVICES_READY;
import static com.android.server.hdmi.Constants.ABORT_UNRECOGNIZED_OPCODE;
import static com.android.server.hdmi.Constants.ADDR_AUDIO_SYSTEM;
@@ -29,8 +31,8 @@ import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_WAKE_UP_ME
import static com.android.server.hdmi.HdmiControlService.STANDBY_SCREEN_OFF;
import static com.android.server.hdmi.HdmiControlService.WAKE_UP_SCREEN_ON;
import static com.android.server.hdmi.RequestActiveSourceAction.TIMEOUT_WAIT_FOR_TV_ASSERT_ACTIVE_SOURCE_MS;
-import static com.android.server.hdmi.RoutingControlAction.TIMEOUT_ROUTING_INFORMATION_MS;
import static com.android.server.hdmi.RequestSadAction.RETRY_COUNTER_MAX;
+import static com.android.server.hdmi.RoutingControlAction.TIMEOUT_ROUTING_INFORMATION_MS;
import static com.google.common.truth.Truth.assertThat;
@@ -38,6 +40,7 @@ import static junit.framework.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.eq;
@@ -167,6 +170,9 @@ public class HdmiCecLocalDeviceTvTest {
@Before
public void setUp() {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
Context context = InstrumentationRegistry.getTargetContext();
mMyLooper = mTestLooper.getLooper();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecMessageValidatorTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecMessageValidatorTest.java
index 6577e09a986e..587f4370636c 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecMessageValidatorTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecMessageValidatorTest.java
@@ -16,6 +16,8 @@
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
+
import static com.android.server.hdmi.Constants.ADDR_AUDIO_SYSTEM;
import static com.android.server.hdmi.Constants.ADDR_BROADCAST;
import static com.android.server.hdmi.HdmiCecMessageValidator.ERROR_DESTINATION;
@@ -27,6 +29,8 @@ import static com.android.server.hdmi.HdmiCecMessageValidator.OK;
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
+
import android.os.test.TestLooper;
import android.platform.test.annotations.Presubmit;
@@ -53,6 +57,9 @@ public class HdmiCecMessageValidatorTest {
@Before
public void setUp() throws Exception {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
FakeAudioFramework audioFramework = new FakeAudioFramework();
HdmiControlService mHdmiControlService = new HdmiControlService(
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecNetworkTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecNetworkTest.java
index 4f7f381a33d6..b1460b33cdf8 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecNetworkTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecNetworkTest.java
@@ -17,10 +17,13 @@
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
import static android.hardware.hdmi.DeviceFeatures.FEATURE_SUPPORTED;
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
+
import android.content.Context;
import android.hardware.hdmi.DeviceFeatures;
import android.hardware.hdmi.HdmiControlManager;
@@ -66,6 +69,9 @@ public class HdmiCecNetworkTest {
@Before
public void setUp() throws Exception {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
mContext = InstrumentationRegistry.getTargetContext();
FakeAudioFramework audioFramework = new FakeAudioFramework();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecPowerStatusControllerTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecPowerStatusControllerTest.java
index 3361e7f359e2..c48e4b6cf710 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecPowerStatusControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecPowerStatusControllerTest.java
@@ -15,10 +15,13 @@
*/
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
+
import static com.android.server.SystemService.PHASE_SYSTEM_SERVICES_READY;
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
import static org.mockito.Mockito.spy;
import android.annotation.RequiresPermission;
@@ -63,6 +66,9 @@ public class HdmiCecPowerStatusControllerTest {
@Before
public void setUp() throws Exception {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
Context contextSpy = spy(new ContextWrapper(InstrumentationRegistry.getTargetContext()));
Looper myLooper = mTestLooper.getLooper();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
index 126a65863f59..4eb3c15eed95 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
@@ -15,6 +15,7 @@
*/
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
import static android.hardware.hdmi.HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM;
import static android.hardware.hdmi.HdmiDeviceInfo.DEVICE_PLAYBACK;
import static android.hardware.hdmi.HdmiDeviceInfo.DEVICE_TV;
@@ -38,6 +39,7 @@ import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
import static junit.framework.TestCase.assertEquals;
+import static org.junit.Assume.assumeTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
@@ -111,6 +113,9 @@ public class HdmiControlServiceTest {
@Before
public void setUp() throws Exception {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
mContextSpy = spy(new ContextWrapper(InstrumentationRegistry.getTargetContext()));
HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(mContextSpy);
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTvTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTvTest.java
index eed99756abb1..d28306458d55 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTvTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTvTest.java
@@ -16,12 +16,15 @@
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
import static android.hardware.hdmi.HdmiDeviceInfo.DEVICE_TV;
import static com.android.server.SystemService.PHASE_SYSTEM_SERVICES_READY;
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
+
import android.content.Context;
import android.hardware.hdmi.HdmiControlManager;
import android.hardware.hdmi.HdmiDeviceInfo;
@@ -60,6 +63,9 @@ public class HdmiControlServiceTvTest {
@Before
public void setUp() throws Exception {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
Context context = InstrumentationRegistry.getTargetContext();
mMyLooper = mTestLooper.getLooper();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiEarcLocalDeviceTxTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiEarcLocalDeviceTxTest.java
index 185f90f4e803..98d2dfb21a0c 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiEarcLocalDeviceTxTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiEarcLocalDeviceTxTest.java
@@ -16,6 +16,7 @@
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
import static android.media.AudioProfile.AUDIO_ENCAPSULATION_TYPE_NONE;
import static com.android.server.SystemService.PHASE_SYSTEM_SERVICES_READY;
@@ -25,6 +26,7 @@ import static com.android.server.hdmi.Constants.HDMI_EARC_STATUS_EARC_PENDING;
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
@@ -84,6 +86,9 @@ public class HdmiEarcLocalDeviceTxTest {
@Before
public void setUp() {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
MockitoAnnotations.initMocks(this);
Context context = InstrumentationRegistry.getTargetContext();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/PowerStatusMonitorActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/PowerStatusMonitorActionTest.java
index 974f64dbd84f..76d4b56f0fb3 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/PowerStatusMonitorActionTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/PowerStatusMonitorActionTest.java
@@ -16,6 +16,8 @@
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
+
import static com.android.server.SystemService.PHASE_SYSTEM_SERVICES_READY;
import static com.android.server.hdmi.Constants.ADDR_BROADCAST;
import static com.android.server.hdmi.Constants.ADDR_PLAYBACK_1;
@@ -23,6 +25,7 @@ import static com.android.server.hdmi.Constants.ADDR_PLAYBACK_2;
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
import static org.mockito.Mockito.spy;
import android.annotation.RequiresPermission;
@@ -64,6 +67,9 @@ public class PowerStatusMonitorActionTest {
@Before
public void setUp() throws Exception {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
mContextSpy = spy(new ContextWrapper(InstrumentationRegistry.getTargetContext()));
FakeAudioFramework audioFramework = new FakeAudioFramework();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/RequestSadActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/RequestSadActionTest.java
index 4cf293758519..02e63f43c6c3 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/RequestSadActionTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/RequestSadActionTest.java
@@ -16,12 +16,16 @@
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
+
import static com.android.server.SystemService.PHASE_SYSTEM_SERVICES_READY;
import static com.android.server.hdmi.Constants.ADDR_AUDIO_SYSTEM;
import static com.android.server.hdmi.RequestSadAction.RETRY_COUNTER_MAX;
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
+
import android.annotation.RequiresPermission;
import android.content.Context;
import android.content.Intent;
@@ -95,6 +99,9 @@ public class RequestSadActionTest {
@Before
public void setUp() {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
Context context = InstrumentationRegistry.getTargetContext();
mMyLooper = mTestLooper.getLooper();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ResendCecCommandActionPlaybackTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ResendCecCommandActionPlaybackTest.java
index 67a3f2a64d32..fa1d3261b84b 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/ResendCecCommandActionPlaybackTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/ResendCecCommandActionPlaybackTest.java
@@ -16,11 +16,15 @@
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
+
import static com.android.server.SystemService.PHASE_SYSTEM_SERVICES_READY;
import static com.android.server.hdmi.ResendCecCommandAction.SEND_COMMAND_RETRY_MS;
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
+
import android.annotation.RequiresPermission;
import android.content.Context;
import android.content.Intent;
@@ -58,6 +62,9 @@ public class ResendCecCommandActionPlaybackTest {
@Before
public void setUp() throws Exception {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
Context context = InstrumentationRegistry.getTargetContext();
FakeAudioFramework audioFramework = new FakeAudioFramework();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ResendCecCommandActionTvTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ResendCecCommandActionTvTest.java
index 047a04c60176..2f68bab743b3 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/ResendCecCommandActionTvTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/ResendCecCommandActionTvTest.java
@@ -16,11 +16,15 @@
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
+
import static com.android.server.SystemService.PHASE_SYSTEM_SERVICES_READY;
import static com.android.server.hdmi.ResendCecCommandAction.SEND_COMMAND_RETRY_MS;
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
+
import android.annotation.RequiresPermission;
import android.content.Context;
import android.content.Intent;
@@ -56,6 +60,9 @@ public class ResendCecCommandActionTvTest {
@Before
public void setUp() throws Exception {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
Context context = InstrumentationRegistry.getTargetContext();
FakeAudioFramework audioFramework = new FakeAudioFramework();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/RoutingControlActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/RoutingControlActionTest.java
index 1019db46482d..912392f1b70f 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/RoutingControlActionTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/RoutingControlActionTest.java
@@ -16,6 +16,8 @@
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
+
import static com.android.server.SystemService.PHASE_SYSTEM_SERVICES_READY;
import static com.android.server.hdmi.Constants.ADDR_AUDIO_SYSTEM;
import static com.android.server.hdmi.Constants.ADDR_BROADCAST;
@@ -29,6 +31,8 @@ import static com.android.server.hdmi.RoutingControlAction.STATE_WAIT_FOR_ROUTIN
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
+
import android.annotation.RequiresPermission;
import android.content.Context;
import android.content.Intent;
@@ -143,6 +147,9 @@ public class RoutingControlActionTest {
@Before
public void setUp() {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
Context context = InstrumentationRegistry.getTargetContext();
mMyLooper = mTestLooper.getLooper();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/SetAudioVolumeLevelDiscoveryActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/SetAudioVolumeLevelDiscoveryActionTest.java
index e4297effed92..a1a5ffe55eaa 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/SetAudioVolumeLevelDiscoveryActionTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/SetAudioVolumeLevelDiscoveryActionTest.java
@@ -16,6 +16,7 @@
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
import static android.hardware.hdmi.DeviceFeatures.FEATURE_NOT_SUPPORTED;
import static android.hardware.hdmi.DeviceFeatures.FEATURE_SUPPORTED;
import static android.hardware.hdmi.DeviceFeatures.FEATURE_SUPPORT_UNKNOWN;
@@ -24,6 +25,7 @@ import static com.android.server.SystemService.PHASE_SYSTEM_SERVICES_READY;
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doNothing;
@@ -79,6 +81,9 @@ public class SetAudioVolumeLevelDiscoveryActionTest {
*/
@Before
public void setUp() throws RemoteException {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
mContextSpy = spy(new ContextWrapper(
InstrumentationRegistry.getInstrumentation().getTargetContext()));
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioAutoInitiationActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioAutoInitiationActionTest.java
index effea5abcecb..c358e1d4d5db 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioAutoInitiationActionTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioAutoInitiationActionTest.java
@@ -17,12 +17,15 @@
package com.android.server.hdmi;
+import static android.content.pm.PackageManager.FEATURE_HDMI_CEC;
+
import static com.android.server.SystemService.PHASE_SYSTEM_SERVICES_READY;
import static com.android.server.hdmi.Constants.ADDR_AUDIO_SYSTEM;
import static com.android.server.hdmi.SystemAudioAutoInitiationAction.RETRIES_ON_TIMEOUT;
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
import static org.mockito.Mockito.spy;
import android.annotation.RequiresPermission;
@@ -65,6 +68,9 @@ public class SystemAudioAutoInitiationActionTest {
@Before
public void setUp() throws Exception {
+ assumeTrue("Test requires FEATURE_HDMI_CEC",
+ InstrumentationRegistry.getTargetContext().getPackageManager()
+ .hasSystemFeature(FEATURE_HDMI_CEC));
mContextSpy = spy(new ContextWrapper(InstrumentationRegistry.getTargetContext()));
Looper myLooper = mTestLooper.getLooper();
diff --git a/services/tests/servicestests/src/com/android/server/location/contexthub/ContextHubEndpointTest.java b/services/tests/servicestests/src/com/android/server/location/contexthub/ContextHubEndpointTest.java
new file mode 100644
index 000000000000..04d075211297
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/location/contexthub/ContextHubEndpointTest.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.location.contexthub;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.hardware.contexthub.ErrorCode;
+import android.hardware.contexthub.HubEndpointInfo;
+import android.hardware.contexthub.HubEndpointInfo.HubEndpointIdentifier;
+import android.hardware.contexthub.HubMessage;
+import android.hardware.contexthub.IContextHubEndpoint;
+import android.hardware.contexthub.IContextHubEndpointCallback;
+import android.hardware.contexthub.IEndpointCommunication;
+import android.hardware.contexthub.MessageDeliveryStatus;
+import android.os.Binder;
+import android.os.RemoteException;
+import android.platform.test.annotations.Presubmit;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+
+import java.util.Collections;
+
+@RunWith(AndroidJUnit4.class)
+@Presubmit
+public class ContextHubEndpointTest {
+ private static final int SESSION_ID_RANGE = ContextHubEndpointManager.SERVICE_SESSION_RANGE;
+ private static final int MIN_SESSION_ID = 0;
+ private static final int MAX_SESSION_ID = MIN_SESSION_ID + SESSION_ID_RANGE - 1;
+
+ private static final String ENDPOINT_NAME = "Example test endpoint";
+ private static final int ENDPOINT_ID = 1;
+ private static final String ENDPOINT_PACKAGE_NAME = "com.android.server.location.contexthub";
+
+ private ContextHubClientManager mClientManager;
+ private ContextHubEndpointManager mEndpointManager;
+ private HubInfoRegistry mHubInfoRegistry;
+ private ContextHubTransactionManager mTransactionManager;
+ private Context mContext;
+ @Mock private IEndpointCommunication mMockEndpointCommunications;
+ @Mock private IContextHubWrapper mMockContextHubWrapper;
+ @Mock private IContextHubEndpointCallback mMockCallback;
+ @Rule public final MockitoRule mockito = MockitoJUnit.rule();
+
+ @Before
+ public void setUp() throws RemoteException, InstantiationException {
+ when(mMockContextHubWrapper.getHubs()).thenReturn(Collections.emptyList());
+ when(mMockContextHubWrapper.getEndpoints()).thenReturn(Collections.emptyList());
+ when(mMockContextHubWrapper.registerEndpointHub(any(), any()))
+ .thenReturn(mMockEndpointCommunications);
+ when(mMockEndpointCommunications.requestSessionIdRange(SESSION_ID_RANGE))
+ .thenReturn(new int[] {MIN_SESSION_ID, MAX_SESSION_ID});
+ when(mMockCallback.asBinder()).thenReturn(new Binder());
+
+ mContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ mHubInfoRegistry = new HubInfoRegistry(mContext, mMockContextHubWrapper);
+ mClientManager = new ContextHubClientManager(mContext, mMockContextHubWrapper);
+ mTransactionManager =
+ new ContextHubTransactionManager(
+ mMockContextHubWrapper, mClientManager, new NanoAppStateManager());
+ mEndpointManager =
+ new ContextHubEndpointManager(
+ mContext, mMockContextHubWrapper, mHubInfoRegistry, mTransactionManager);
+ mEndpointManager.init();
+ }
+
+ @Test
+ public void testRegisterEndpoint() throws RemoteException {
+ // Register an endpoint and confirm we can get a valid IContextHubEndoint reference
+ HubEndpointInfo info =
+ new HubEndpointInfo(
+ ENDPOINT_NAME, ENDPOINT_ID, ENDPOINT_PACKAGE_NAME, Collections.emptyList());
+ IContextHubEndpoint endpoint =
+ mEndpointManager.registerEndpoint(
+ info, mMockCallback, ENDPOINT_PACKAGE_NAME, /* attributionTag= */ null);
+ assertThat(mEndpointManager.getNumRegisteredClients()).isEqualTo(1);
+ assertThat(endpoint).isNotNull();
+ HubEndpointInfo assignedInfo = endpoint.getAssignedHubEndpointInfo();
+ assertThat(assignedInfo).isNotNull();
+ HubEndpointIdentifier assignedIdentifier = assignedInfo.getIdentifier();
+ assertThat(assignedIdentifier).isNotNull();
+
+ // Unregister the endpoint and confirm proper clean-up
+ mEndpointManager.unregisterEndpoint(assignedIdentifier.getEndpoint());
+ assertThat(mEndpointManager.getNumRegisteredClients()).isEqualTo(0);
+ }
+
+ @Test
+ public void testReserveSessionId() {
+ assertThat(mEndpointManager.getNumAvailableSessions()).isEqualTo(SESSION_ID_RANGE);
+
+ int sessionId = mEndpointManager.reserveSessionId();
+ assertThat(sessionId).isAtLeast(MIN_SESSION_ID);
+ assertThat(sessionId).isAtMost(MAX_SESSION_ID);
+ assertThat(mEndpointManager.getNumAvailableSessions()).isEqualTo(SESSION_ID_RANGE - 1);
+
+ mEndpointManager.returnSessionId(sessionId);
+ assertThat(mEndpointManager.getNumAvailableSessions()).isEqualTo(SESSION_ID_RANGE);
+ }
+
+ @Test
+ public void testInvalidMessageReceivedCallback() throws RemoteException {
+ // Send an invalid call to onMessageReceived (no sessions created)
+ final int messageType = 1234;
+ final int sessionId = 4321;
+ final int sequenceNumber = 5678;
+ HubMessage message =
+ new HubMessage.Builder(messageType, new byte[0]).setResponseRequired(true).build();
+ message.setMessageSequenceNumber(sequenceNumber);
+ mEndpointManager.onMessageReceived(sessionId, message);
+
+ // Confirm that we can get a delivery status with DESTINATION_NOT_FOUND error
+ ArgumentCaptor<MessageDeliveryStatus> statusCaptor =
+ ArgumentCaptor.forClass(MessageDeliveryStatus.class);
+ verify(mMockEndpointCommunications)
+ .sendMessageDeliveryStatusToEndpoint(eq(sessionId), statusCaptor.capture());
+ assertThat(statusCaptor.getValue().messageSequenceNumber).isEqualTo(sequenceNumber);
+ assertThat(statusCaptor.getValue().errorCode).isEqualTo(ErrorCode.DESTINATION_NOT_FOUND);
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/media/projection/OWNERS b/services/tests/servicestests/src/com/android/server/media/projection/OWNERS
index 832bcd9d70e6..3caf7faa13ec 100644
--- a/services/tests/servicestests/src/com/android/server/media/projection/OWNERS
+++ b/services/tests/servicestests/src/com/android/server/media/projection/OWNERS
@@ -1 +1,2 @@
+# Bug component: 1345447
include /media/java/android/media/projection/OWNERS
diff --git a/services/tests/servicestests/src/com/android/server/memory/OWNERS b/services/tests/servicestests/src/com/android/server/memory/OWNERS
new file mode 100644
index 000000000000..4df08c1fbc2e
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/memory/OWNERS
@@ -0,0 +1,3 @@
+include /MEMORY_OWNERS
+
+per-file ZramMaintenanceTest.kt = kawasin@google.com
diff --git a/services/tests/servicestests/src/com/android/server/memory/ZramMaintenanceTest.kt b/services/tests/servicestests/src/com/android/server/memory/ZramMaintenanceTest.kt
new file mode 100644
index 000000000000..1f59f45b05bf
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/memory/ZramMaintenanceTest.kt
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.memory
+
+import android.app.job.JobInfo
+import android.app.job.JobParameters
+import android.app.job.JobScheduler
+import android.os.IMmd
+import android.os.PersistableBundle
+import android.os.RemoteException
+import android.testing.TestableContext
+import androidx.test.filters.SmallTest
+import androidx.test.platform.app.InstrumentationRegistry
+
+import com.google.common.truth.Truth.assertThat
+
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+import org.mockito.ArgumentCaptor
+import org.mockito.Captor
+import org.mockito.Mock
+import org.mockito.Mockito.any
+import org.mockito.Mockito.never
+import org.mockito.Mockito.times
+import org.mockito.Mockito.verify
+import org.mockito.Mockito.`when`
+import org.mockito.MockitoAnnotations
+
+private fun generateJobParameters(jobId: Int, extras: PersistableBundle): JobParameters {
+ return JobParameters(
+ null, "", jobId, extras, null, null, 0, false, false, false, null, null, null
+ )
+}
+
+@SmallTest
+@RunWith(JUnit4::class)
+class ZramMaintenanceTest {
+ private val context = TestableContext(InstrumentationRegistry.getInstrumentation().context)
+
+ @Captor
+ private lateinit var jobInfoCaptor: ArgumentCaptor<JobInfo>
+
+ @Mock
+ private lateinit var mockJobScheduler: JobScheduler
+
+ @Mock
+ private lateinit var mockMmd: IMmd
+
+ @Before
+ @Throws(RemoteException::class)
+ fun setUp() {
+ MockitoAnnotations.initMocks(this)
+ context.addMockSystemService(JobScheduler::class.java, mockJobScheduler)
+ }
+
+ @Test
+ fun startZramMaintenance() {
+ ZramMaintenance.startZramMaintenance(context)
+
+ verify(mockJobScheduler, times(1)).schedule(jobInfoCaptor.capture())
+ val job = jobInfoCaptor.value
+ assertThat(job.id).isEqualTo(ZramMaintenance.JOB_ID)
+ assertThat(job.extras.getBoolean(ZramMaintenance.KEY_CHECK_STATUS)).isTrue()
+ }
+
+ @Test
+ fun startJobForFirstTime() {
+ val extras = PersistableBundle()
+ extras.putBoolean(ZramMaintenance.KEY_CHECK_STATUS, true)
+ val params = generateJobParameters(
+ ZramMaintenance.JOB_ID,
+ extras,
+ )
+ `when`(mockMmd.isZramMaintenanceSupported()).thenReturn(true)
+
+ ZramMaintenance.startJob(context, params, mockMmd)
+
+ verify(mockMmd, times(1)).isZramMaintenanceSupported()
+ verify(mockMmd, times(1)).doZramMaintenanceAsync()
+ verify(mockJobScheduler, times(1)).schedule(jobInfoCaptor.capture())
+ val nextJob = jobInfoCaptor.value
+ assertThat(nextJob.id).isEqualTo(ZramMaintenance.JOB_ID)
+ assertThat(nextJob.extras.getBoolean(ZramMaintenance.KEY_CHECK_STATUS)).isFalse()
+ }
+
+ @Test
+ fun startJobWithoutCheckStatus() {
+ val extras = PersistableBundle()
+ extras.putBoolean(ZramMaintenance.KEY_CHECK_STATUS, false)
+ val params = generateJobParameters(
+ ZramMaintenance.JOB_ID,
+ extras,
+ )
+
+ ZramMaintenance.startJob(context, params, mockMmd)
+
+ verify(mockMmd, never()).isZramMaintenanceSupported()
+ verify(mockMmd, times(1)).doZramMaintenanceAsync()
+ verify(mockJobScheduler, times(1)).schedule(jobInfoCaptor.capture())
+ val nextJob = jobInfoCaptor.value
+ assertThat(nextJob.id).isEqualTo(ZramMaintenance.JOB_ID)
+ assertThat(nextJob.extras.getBoolean(ZramMaintenance.KEY_CHECK_STATUS)).isFalse()
+ }
+
+ @Test
+ fun startJobZramIsDisabled() {
+ val extras = PersistableBundle()
+ extras.putBoolean(ZramMaintenance.KEY_CHECK_STATUS, true)
+ val params = generateJobParameters(
+ ZramMaintenance.JOB_ID,
+ extras,
+ )
+ `when`(mockMmd.isZramMaintenanceSupported()).thenReturn(false)
+
+ ZramMaintenance.startJob(context, params, mockMmd)
+
+ verify(mockMmd, times(1)).isZramMaintenanceSupported()
+ verify(mockMmd, never()).doZramMaintenanceAsync()
+ verify(mockJobScheduler, never()).schedule(any())
+ }
+
+ @Test
+ fun startJobMmdIsNotReadyYet() {
+ val extras = PersistableBundle()
+ extras.putBoolean(ZramMaintenance.KEY_CHECK_STATUS, true)
+ val params = generateJobParameters(
+ ZramMaintenance.JOB_ID,
+ extras,
+ )
+
+ ZramMaintenance.startJob(context, params, null)
+
+ verify(mockJobScheduler, times(1)).schedule(jobInfoCaptor.capture())
+ val nextJob = jobInfoCaptor.value
+ assertThat(nextJob.id).isEqualTo(ZramMaintenance.JOB_ID)
+ assertThat(nextJob.extras.getBoolean(ZramMaintenance.KEY_CHECK_STATUS)).isTrue()
+ }
+} \ No newline at end of file
diff --git a/services/tests/servicestests/src/com/android/server/pm/LauncherAppsServiceTest.kt b/services/tests/servicestests/src/com/android/server/pm/LauncherAppsServiceTest.kt
new file mode 100644
index 000000000000..aa1487b10a7b
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/pm/LauncherAppsServiceTest.kt
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.pm
+
+import android.app.ActivityTaskManager
+import android.content.ComponentName
+import android.content.pm.IPackageManager
+import android.content.pm.PackageManager
+import android.os.RemoteException
+import android.platform.test.annotations.Postsubmit
+import android.view.WindowManager.PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.platform.app.InstrumentationRegistry
+import com.android.server.pm.LauncherAppsService.LauncherAppsImpl.supportsMultiInstance
+import org.junit.Assert.assertEquals
+import org.junit.Assume.assumeTrue
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.ArgumentMatchers.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.whenever
+
+/**
+ * Unit tests for LauncherAppsService
+ * Run: atest LauncherAppsServiceTest
+ */
+@Postsubmit
+@RunWith(AndroidJUnit4::class)
+class LauncherAppsServiceTest {
+
+ val pm = mock<IPackageManager>()
+
+ @Before
+ fun setup() {
+ assumeTrue(ActivityTaskManager.supportsSplitScreenMultiWindow(
+ InstrumentationRegistry.getInstrumentation().getTargetContext()))
+ }
+
+ @Test
+ @Throws(RemoteException::class)
+ fun supportsMultiInstanceSplit_activityPropertyTrue() {
+ val component = ComponentName(TEST_PACKAGE, TEST_ACTIVITY)
+ val activityProp = PackageManager.Property("", true, "", "")
+ whenever(pm.getPropertyAsUser(eq(PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI),
+ eq(component.packageName), eq(component.className), eq(TEST_OTHER_USER)))
+ .thenReturn(activityProp)
+ val appProp = PackageManager.Property("", false, "", "")
+ whenever(pm.getPropertyAsUser(eq(PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI),
+ eq(component.packageName), eq(null), eq(TEST_OTHER_USER)))
+ .thenReturn(appProp)
+
+ // Expect activity property to override application property
+ assertEquals(true, supportsMultiInstance(pm, component, TEST_OTHER_USER))
+ }
+
+ @Test
+ @Throws(RemoteException::class)
+ fun supportsMultiInstanceSplit_activityPropertyFalseApplicationPropertyTrue() {
+ val component = ComponentName(TEST_PACKAGE, TEST_ACTIVITY)
+ val activityProp = PackageManager.Property("", false, "", "")
+ whenever(pm.getPropertyAsUser(eq(PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI),
+ eq(component.packageName), eq(component.className), eq(TEST_OTHER_USER)))
+ .thenReturn(activityProp)
+ val appProp = PackageManager.Property("", true, "", "")
+ whenever(pm.getPropertyAsUser(eq(PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI),
+ eq(component.packageName), eq(null), eq(TEST_OTHER_USER)))
+ .thenReturn(appProp)
+
+ // Expect activity property to override application property
+ assertEquals(false, supportsMultiInstance(pm, component, TEST_OTHER_USER))
+ }
+
+ @Test
+ @Throws(RemoteException::class)
+ fun supportsMultiInstanceSplit_noActivityPropertyApplicationPropertyTrue() {
+ val component = ComponentName(TEST_PACKAGE, TEST_ACTIVITY)
+ whenever(pm.getPropertyAsUser(eq(PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI),
+ eq(component.packageName), eq(component.className), eq(TEST_OTHER_USER)))
+ .thenThrow(RemoteException())
+ val appProp = PackageManager.Property("", true, "", "")
+ whenever(pm.getPropertyAsUser(eq(PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI),
+ eq(component.packageName), eq(null), eq(TEST_OTHER_USER)))
+ .thenReturn(appProp)
+
+ // Expect fall through to app property
+ assertEquals(true, supportsMultiInstance(pm, component, TEST_OTHER_USER))
+ }
+
+ @Test
+ @Throws(RemoteException::class)
+ fun supportsMultiInstanceSplit_noActivityOrAppProperty() {
+ val component = ComponentName(TEST_PACKAGE, TEST_ACTIVITY)
+ whenever(pm.getPropertyAsUser(eq(PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI),
+ eq(component.packageName), eq(component.className), eq(TEST_OTHER_USER)))
+ .thenThrow(RemoteException())
+ whenever(pm.getPropertyAsUser(eq(PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI),
+ eq(component.packageName), eq(null), eq(TEST_OTHER_USER)))
+ .thenThrow(RemoteException())
+
+ assertEquals(false, supportsMultiInstance(pm, component, TEST_OTHER_USER))
+ }
+
+ companion object {
+ val TEST_PACKAGE = "com.android.server.pm"
+ val TEST_ACTIVITY = "TestActivity"
+ val TEST_OTHER_USER = 1234
+ }
+} \ No newline at end of file
diff --git a/services/tests/servicestests/src/com/android/server/supervision/SupervisionServiceTest.kt b/services/tests/servicestests/src/com/android/server/supervision/SupervisionServiceTest.kt
index b150b1495042..da022780ea75 100644
--- a/services/tests/servicestests/src/com/android/server/supervision/SupervisionServiceTest.kt
+++ b/services/tests/servicestests/src/com/android/server/supervision/SupervisionServiceTest.kt
@@ -161,6 +161,18 @@ class SupervisionServiceTest {
@Test
@RequiresFlagsEnabled(Flags.FLAG_ENABLE_SYNC_WITH_DPM)
+ fun profileOwnerChanged_supervisionAppIsNotProfileOwner_doesNotDisableSupervision() {
+ service.mInternal.setSupervisionEnabledForUser(USER_ID, true)
+ whenever(mockDpmInternal.getProfileOwnerAsUser(USER_ID))
+ .thenReturn(ComponentName("other.package", "MainActivity"))
+
+ broadcastProfileOwnerChanged(USER_ID)
+
+ assertThat(service.isSupervisionEnabledForUser(USER_ID)).isTrue()
+ }
+
+ @Test
+ @RequiresFlagsEnabled(Flags.FLAG_ENABLE_SYNC_WITH_DPM)
fun profileOwnerChanged_supervisionAppIsNotProfileOwner_doesNotEnableSupervision() {
whenever(mockDpmInternal.getProfileOwnerAsUser(USER_ID))
.thenReturn(ComponentName("other.package", "MainActivity"))
@@ -258,7 +270,7 @@ class SupervisionServiceTest {
private companion object {
const val USER_ID = 100
- val APP_UID = USER_ID * UserHandle.PER_USER_RANGE
+ const val APP_UID = USER_ID * UserHandle.PER_USER_RANGE
}
}
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/GroupHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/GroupHelperTest.java
index fa733e85c89c..4a977be2aad9 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/GroupHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/GroupHelperTest.java
@@ -96,12 +96,12 @@ import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
-import java.util.ArrayList;
-import java.util.List;
-
import platform.test.runner.parameterized.ParameterizedAndroidJunit4;
import platform.test.runner.parameterized.Parameters;
+import java.util.ArrayList;
+import java.util.List;
+
@SmallTest
@SuppressLint("GuardedBy") // It's ok for this test to access guarded methods from the class.
@RunWith(ParameterizedAndroidJunit4.class)
@@ -2671,7 +2671,7 @@ public class GroupHelperTest extends UiServiceTestCase {
r.updateNotificationChannel(channel);
}
mGroupHelper.onChannelUpdated(UserHandle.SYSTEM.getIdentifier(), pkg, channel,
- notificationList);
+ notificationList, summaryByGroup);
// Check that all notifications are moved to the silent section group
verify(mCallback, times(1)).addAutoGroupSummary(anyInt(), eq(pkg), anyString(),
@@ -2735,7 +2735,7 @@ public class GroupHelperTest extends UiServiceTestCase {
}
}
mGroupHelper.onChannelUpdated(UserHandle.SYSTEM.getIdentifier(), pkg, channel1,
- notificationList);
+ notificationList, summaryByGroup);
// Check that the override group key was cleared
for (NotificationRecord record: notificationList) {
@@ -2812,7 +2812,7 @@ public class GroupHelperTest extends UiServiceTestCase {
}
}
mGroupHelper.onChannelUpdated(UserHandle.SYSTEM.getIdentifier(), pkg, channel1,
- notificationList);
+ notificationList, summaryByGroup);
// Check that the override group key was cleared
for (NotificationRecord record: notificationList) {
@@ -2864,7 +2864,7 @@ public class GroupHelperTest extends UiServiceTestCase {
// Classify/bundle child notifications
final NotificationChannel socialChannel = new NotificationChannel(
NotificationChannel.SOCIAL_MEDIA_ID, NotificationChannel.SOCIAL_MEDIA_ID,
- IMPORTANCE_DEFAULT);
+ IMPORTANCE_LOW);
final String expectedGroupKey_social = GroupHelper.getFullAggregateGroupKey(pkg,
AGGREGATE_GROUP_KEY + "SocialSection", UserHandle.SYSTEM.getIdentifier());
final NotificationAttributes expectedSummaryAttr_social = new NotificationAttributes(
@@ -2872,7 +2872,7 @@ public class GroupHelperTest extends UiServiceTestCase {
NotificationChannel.SOCIAL_MEDIA_ID);
final NotificationChannel newsChannel = new NotificationChannel(
NotificationChannel.NEWS_ID, NotificationChannel.NEWS_ID,
- IMPORTANCE_DEFAULT);
+ IMPORTANCE_LOW);
final String expectedGroupKey_news = GroupHelper.getFullAggregateGroupKey(pkg,
AGGREGATE_GROUP_KEY + "NewsSection", UserHandle.SYSTEM.getIdentifier());
final NotificationAttributes expectedSummaryAttr_news = new NotificationAttributes(
@@ -2944,7 +2944,7 @@ public class GroupHelperTest extends UiServiceTestCase {
// Classify/bundle child notifications
final NotificationChannel socialChannel = new NotificationChannel(
NotificationChannel.SOCIAL_MEDIA_ID, NotificationChannel.SOCIAL_MEDIA_ID,
- IMPORTANCE_DEFAULT);
+ IMPORTANCE_LOW);
for (NotificationRecord record: notificationList) {
if (record.getChannel().getId().equals(channel1.getId())
&& record.getNotification().isGroupChild()) {
@@ -2999,7 +2999,7 @@ public class GroupHelperTest extends UiServiceTestCase {
// Classify/bundle child notifications
final NotificationChannel socialChannel = new NotificationChannel(
NotificationChannel.SOCIAL_MEDIA_ID, NotificationChannel.SOCIAL_MEDIA_ID,
- IMPORTANCE_DEFAULT);
+ IMPORTANCE_LOW);
final String expectedGroupKey_social = GroupHelper.getFullAggregateGroupKey(pkg,
AGGREGATE_GROUP_KEY + "SocialSection", UserHandle.SYSTEM.getIdentifier());
final NotificationAttributes expectedSummaryAttr_social = new NotificationAttributes(
@@ -3095,7 +3095,7 @@ public class GroupHelperTest extends UiServiceTestCase {
reset(mCallback);
final NotificationChannel socialChannel = new NotificationChannel(
NotificationChannel.SOCIAL_MEDIA_ID, NotificationChannel.SOCIAL_MEDIA_ID,
- IMPORTANCE_DEFAULT);
+ IMPORTANCE_LOW);
final String expectedGroupKey_social = GroupHelper.getFullAggregateGroupKey(pkg,
AGGREGATE_GROUP_KEY + "SocialSection", UserHandle.SYSTEM.getIdentifier());
final NotificationAttributes expectedSummaryAttr_social = new NotificationAttributes(
@@ -3149,7 +3149,7 @@ public class GroupHelperTest extends UiServiceTestCase {
// adjustments applied while enqueued will use NotificationAdjustmentExtractor.
final NotificationChannel socialChannel = new NotificationChannel(
NotificationChannel.SOCIAL_MEDIA_ID, NotificationChannel.SOCIAL_MEDIA_ID,
- IMPORTANCE_DEFAULT);
+ IMPORTANCE_LOW);
final String expectedGroupKey_social = GroupHelper.getFullAggregateGroupKey(pkg,
AGGREGATE_GROUP_KEY + "SocialSection", UserHandle.SYSTEM.getIdentifier());
final NotificationAttributes expectedSummaryAttr_social = new NotificationAttributes(
@@ -3209,7 +3209,7 @@ public class GroupHelperTest extends UiServiceTestCase {
// Classify/bundle all child notifications: original group & summary is removed
final NotificationChannel socialChannel = new NotificationChannel(
NotificationChannel.SOCIAL_MEDIA_ID, NotificationChannel.SOCIAL_MEDIA_ID,
- IMPORTANCE_DEFAULT);
+ IMPORTANCE_LOW);
for (NotificationRecord record: notificationList) {
if (record.getOriginalGroupKey().contains("testGrp")
&& record.getNotification().isGroupChild()) {
@@ -3297,7 +3297,7 @@ public class GroupHelperTest extends UiServiceTestCase {
// Classify/bundle child notifications: all except one, to keep the original group
final NotificationChannel socialChannel = new NotificationChannel(
NotificationChannel.SOCIAL_MEDIA_ID, NotificationChannel.SOCIAL_MEDIA_ID,
- IMPORTANCE_DEFAULT);
+ IMPORTANCE_LOW);
final String expectedGroupKey_social = GroupHelper.getFullAggregateGroupKey(pkg,
AGGREGATE_GROUP_KEY + "SocialSection", UserHandle.SYSTEM.getIdentifier());
final NotificationAttributes expectedSummaryAttr_social = new NotificationAttributes(
@@ -3378,6 +3378,314 @@ public class GroupHelperTest extends UiServiceTestCase {
}
@Test
+ @EnableFlags({FLAG_NOTIFICATION_FORCE_GROUPING,
+ FLAG_NOTIFICATION_REGROUP_ON_CLASSIFICATION,
+ FLAG_NOTIFICATION_CLASSIFICATION})
+ public void testUnbundleByImportanceNotification_originalSummaryExists() {
+ // Check that unbundled notifications are moved to the original section and original group
+ // when the original summary is still present
+ final List<NotificationRecord> notificationList = new ArrayList<>();
+ final ArrayMap<String, NotificationRecord> summaryByGroup = new ArrayMap<>();
+ final String pkg = "package";
+
+ final int summaryId = 0;
+ final int numChildren = AUTOGROUP_AT_COUNT + 1;
+ // Post a regular/valid group: summary + notifications
+ NotificationRecord summary = getNotificationRecord(pkg, summaryId,
+ String.valueOf(summaryId), UserHandle.SYSTEM, "testGrp", true);
+ notificationList.add(summary);
+ summaryByGroup.put(summary.getGroupKey(), summary);
+ final String originalAppGroupKey = summary.getGroupKey();
+ final NotificationChannel originalChannel = summary.getChannel();
+ for (int i = 0; i < numChildren; i++) {
+ NotificationRecord child = getNotificationRecord(pkg, i + 42, String.valueOf(i + 42),
+ UserHandle.SYSTEM, "testGrp", false);
+ notificationList.add(child);
+ mGroupHelper.onNotificationPostedWithDelay(child, notificationList, summaryByGroup);
+ }
+
+ // Classify/bundle child notifications: all except one, to keep the original group
+ final NotificationChannel socialChannel = new NotificationChannel(
+ NotificationChannel.SOCIAL_MEDIA_ID, NotificationChannel.SOCIAL_MEDIA_ID,
+ IMPORTANCE_LOW);
+ final String expectedGroupKey_social = GroupHelper.getFullAggregateGroupKey(pkg,
+ AGGREGATE_GROUP_KEY + "SocialSection", UserHandle.SYSTEM.getIdentifier());
+ final NotificationAttributes expectedSummaryAttr_social = new NotificationAttributes(
+ BASE_FLAGS, mSmallIcon, COLOR_DEFAULT, DEFAULT_VISIBILITY, DEFAULT_GROUP_ALERT,
+ NotificationChannel.SOCIAL_MEDIA_ID);
+ int numChildrenBundled = 0;
+ for (NotificationRecord record: notificationList) {
+ if (record.getOriginalGroupKey().contains("testGrp")
+ && record.getNotification().isGroupChild()) {
+ record.updateNotificationChannel(socialChannel);
+ mGroupHelper.onChannelUpdated(record);
+ numChildrenBundled++;
+ if (numChildrenBundled == AUTOGROUP_AT_COUNT) {
+ break;
+ }
+ }
+ }
+
+ // Check that 1 autogroup summaries were created for the social section
+ verify(mCallback, times(1)).addAutoGroupSummary(anyInt(), eq(pkg), anyString(),
+ eq(expectedGroupKey_social), anyInt(), eq(expectedSummaryAttr_social));
+ verify(mCallback, times(AUTOGROUP_AT_COUNT)).addAutoGroup(anyString(),
+ eq(expectedGroupKey_social), eq(true));
+ verify(mCallback, never()).removeAutoGroup(anyString());
+ verify(mCallback, never()).removeAutoGroupSummary(anyInt(), anyString(), anyString());
+ verify(mCallback, never()).updateAutogroupSummary(anyInt(), anyString(), anyString(),
+ any());
+ verify(mCallback, times(AUTOGROUP_AT_COUNT)).removeAppProvidedSummaryOnClassification(
+ anyString(), eq(originalAppGroupKey));
+
+ // Adjust group key for grouped notifications
+ for (NotificationRecord record: notificationList) {
+ if (record.getOriginalGroupKey().contains("testGrp")
+ && NotificationChannel.SYSTEM_RESERVED_IDS.contains(
+ record.getChannel().getId())) {
+ record.setOverrideGroupKey(expectedGroupKey_social);
+ }
+ }
+
+ // Add 1 ungrouped notification in the original section
+ NotificationRecord ungroupedNotification = getNotificationRecord(pkg, 4242,
+ String.valueOf(4242), UserHandle.SYSTEM);
+ notificationList.add(ungroupedNotification);
+ mGroupHelper.onNotificationPosted(ungroupedNotification, false);
+
+ // Unbundle the bundled notifications by changing the social channel importance to alerting
+ // => social section summary is destroyed
+ // and notifications are moved back to the original group
+ reset(mCallback);
+ socialChannel.setImportance(IMPORTANCE_DEFAULT);
+ for (NotificationRecord record: notificationList) {
+ if (record.getNotification().isGroupChild()
+ && record.getOriginalGroupKey().contains("testGrp")
+ && NotificationChannel.SYSTEM_RESERVED_IDS.contains(
+ record.getChannel().getId())) {
+ record.updateNotificationChannel(socialChannel);
+ }
+ }
+ mGroupHelper.onChannelUpdated(UserHandle.SYSTEM.getIdentifier(), pkg, socialChannel,
+ notificationList, summaryByGroup);
+
+ // Check that the autogroup summary for the social section was removed
+ // and that no new autogroup summaries were created
+ verify(mCallback, never()).addAutoGroupSummary(anyInt(), anyString(), anyString(),
+ anyString(), anyInt(), any());
+ verify(mCallback, never()).addAutoGroup(anyString(), anyString(), anyBoolean());
+ verify(mCallback, never()).removeAutoGroup(anyString());
+ verify(mCallback, times(1)).removeAutoGroupSummary(anyInt(), eq(pkg),
+ eq(expectedGroupKey_social));
+
+ for (NotificationRecord record: notificationList) {
+ if (record.getNotification().isGroupChild()
+ && record.getOriginalGroupKey().contains("testGrp")) {
+ assertThat(record.getSbn().getOverrideGroupKey()).isNull();
+ assertThat(GroupHelper.getSection(record).mName).isEqualTo("AlertingSection");
+ }
+ }
+ }
+
+ @Test
+ @EnableFlags({FLAG_NOTIFICATION_FORCE_GROUPING,
+ FLAG_NOTIFICATION_REGROUP_ON_CLASSIFICATION,
+ FLAG_NOTIFICATION_CLASSIFICATION})
+ public void testUnbundleByImportanceNotification_originalSummaryRemoved() {
+ // Check that unbundled notifications are moved to the original section and autogrouped
+ // when the original summary is not present
+ final List<NotificationRecord> notificationList = new ArrayList<>();
+ final ArrayMap<String, NotificationRecord> summaryByGroup = new ArrayMap<>();
+ final String pkg = "package";
+
+ final int summaryId = 0;
+ final int numChildren = AUTOGROUP_AT_COUNT + 1;
+ // Post a regular/valid group: summary + notifications
+ NotificationRecord summary = getNotificationRecord(pkg, summaryId,
+ String.valueOf(summaryId), UserHandle.SYSTEM, "testGrp", true);
+ notificationList.add(summary);
+ summaryByGroup.put(summary.getGroupKey(), summary);
+ final String originalAppGroupKey = summary.getGroupKey();
+ final NotificationChannel originalChannel = summary.getChannel();
+ for (int i = 0; i < numChildren; i++) {
+ NotificationRecord child = getNotificationRecord(pkg, i + 42, String.valueOf(i + 42),
+ UserHandle.SYSTEM, "testGrp", false);
+ notificationList.add(child);
+ mGroupHelper.onNotificationPostedWithDelay(child, notificationList, summaryByGroup);
+ }
+
+ // Classify/bundle child notifications: all except one, to keep the original group
+ final NotificationChannel socialChannel = new NotificationChannel(
+ NotificationChannel.SOCIAL_MEDIA_ID, NotificationChannel.SOCIAL_MEDIA_ID,
+ IMPORTANCE_LOW);
+ final String expectedGroupKey_social = GroupHelper.getFullAggregateGroupKey(pkg,
+ AGGREGATE_GROUP_KEY + "SocialSection", UserHandle.SYSTEM.getIdentifier());
+ final NotificationAttributes expectedSummaryAttr_social = new NotificationAttributes(
+ BASE_FLAGS, mSmallIcon, COLOR_DEFAULT, DEFAULT_VISIBILITY, DEFAULT_GROUP_ALERT,
+ NotificationChannel.SOCIAL_MEDIA_ID);
+ int numChildrenBundled = 0;
+ for (NotificationRecord record: notificationList) {
+ if (record.getOriginalGroupKey().contains("testGrp")
+ && record.getNotification().isGroupChild()) {
+ record.updateNotificationChannel(socialChannel);
+ mGroupHelper.onChannelUpdated(record);
+ numChildrenBundled++;
+ if (numChildrenBundled == AUTOGROUP_AT_COUNT) {
+ break;
+ }
+ }
+ }
+
+ // Check that 1 autogroup summaries were created for the social section
+ verify(mCallback, times(1)).addAutoGroupSummary(anyInt(), eq(pkg), anyString(),
+ eq(expectedGroupKey_social), anyInt(), eq(expectedSummaryAttr_social));
+ verify(mCallback, times(AUTOGROUP_AT_COUNT)).addAutoGroup(anyString(),
+ eq(expectedGroupKey_social), eq(true));
+ verify(mCallback, never()).removeAutoGroup(anyString());
+ verify(mCallback, never()).removeAutoGroupSummary(anyInt(), anyString(), anyString());
+ verify(mCallback, never()).updateAutogroupSummary(anyInt(), anyString(), anyString(),
+ any());
+ verify(mCallback, times(AUTOGROUP_AT_COUNT)).removeAppProvidedSummaryOnClassification(
+ anyString(), eq(originalAppGroupKey));
+
+ // Adjust group key
+ for (NotificationRecord record: notificationList) {
+ if (record.getOriginalGroupKey().contains("testGrp")
+ && NotificationChannel.SYSTEM_RESERVED_IDS.contains(
+ record.getChannel().getId())) {
+ record.setOverrideGroupKey(expectedGroupKey_social);
+ }
+ }
+
+ // Remove original summary
+ notificationList.remove(summary);
+ summaryByGroup.remove(summary.getGroupKey());
+
+ // Add 1 ungrouped notification in the original section
+ NotificationRecord ungroupedNotification = getNotificationRecord(pkg, 4242,
+ String.valueOf(4242), UserHandle.SYSTEM);
+ notificationList.add(ungroupedNotification);
+ mGroupHelper.onNotificationPosted(ungroupedNotification, false);
+
+ // Unbundle the bundled notifications by changing the social channel importance to alerting
+ // => social section summary is destroyed
+ // and notifications are moved back to the alerting section and autogrouped
+ reset(mCallback);
+ socialChannel.setImportance(IMPORTANCE_DEFAULT);
+ for (NotificationRecord record: notificationList) {
+ if (record.getNotification().isGroupChild()
+ && record.getOriginalGroupKey().contains("testGrp")
+ && NotificationChannel.SYSTEM_RESERVED_IDS.contains(
+ record.getChannel().getId())) {
+ record.updateNotificationChannel(socialChannel);
+ }
+ }
+ mGroupHelper.onChannelUpdated(UserHandle.SYSTEM.getIdentifier(), pkg, socialChannel,
+ notificationList, summaryByGroup);
+
+ // Check that the autogroup summary for the social section was removed
+ // and that a new autogroup was created in the alerting section
+ final String expectedGroupKey_alerting = GroupHelper.getFullAggregateGroupKey(pkg,
+ AGGREGATE_GROUP_KEY + "AlertingSection", UserHandle.SYSTEM.getIdentifier());
+ verify(mCallback, times(1)).addAutoGroupSummary(anyInt(), eq(pkg), anyString(),
+ eq(expectedGroupKey_alerting), anyInt(), any());
+ verify(mCallback, times(AUTOGROUP_AT_COUNT + 1)).addAutoGroup(anyString(),
+ eq(expectedGroupKey_alerting), eq(true));
+ verify(mCallback, never()).removeAutoGroup(anyString());
+ verify(mCallback, times(1)).removeAutoGroupSummary(anyInt(), eq(pkg),
+ eq(expectedGroupKey_social));
+ verify(mCallback, never()).removeAppProvidedSummaryOnClassification(anyString(),
+ anyString());
+ }
+
+ @Test
+ @EnableFlags({FLAG_NOTIFICATION_FORCE_GROUPING,
+ FLAG_NOTIFICATION_CLASSIFICATION,
+ FLAG_NOTIFICATION_REGROUP_ON_CLASSIFICATION})
+ public void testClassifyWithAlertingImportance_doesNotBundle() {
+ // Check that classified notifications are autogrouped when channel importance
+ // is updated DEFAULT to LOW
+ final List<NotificationRecord> notificationList = new ArrayList<>();
+ final ArrayMap<String, NotificationRecord> summaryByGroup = new ArrayMap<>();
+ final String pkg = "package";
+
+ final int summaryId = 0;
+ final int numChildren = AUTOGROUP_AT_COUNT + 1;
+ // Post a regular/valid group: summary + notifications
+ NotificationRecord summary = getNotificationRecord(pkg, summaryId,
+ String.valueOf(summaryId), UserHandle.SYSTEM, "testGrp", true);
+ notificationList.add(summary);
+ summaryByGroup.put(summary.getGroupKey(), summary);
+ final String originalAppGroupKey = summary.getGroupKey();
+ final NotificationChannel originalChannel = summary.getChannel();
+ for (int i = 0; i < numChildren; i++) {
+ NotificationRecord child = getNotificationRecord(pkg, i + 42, String.valueOf(i + 42),
+ UserHandle.SYSTEM, "testGrp", false);
+ notificationList.add(child);
+ mGroupHelper.onNotificationPostedWithDelay(child, notificationList, summaryByGroup);
+ }
+
+ // Classify child notifications to Alerting bundle channel => do not "bundle"
+ final NotificationChannel socialChannel = new NotificationChannel(
+ NotificationChannel.SOCIAL_MEDIA_ID, NotificationChannel.SOCIAL_MEDIA_ID,
+ IMPORTANCE_DEFAULT);
+ int numChildrenBundled = 0;
+ for (NotificationRecord record: notificationList) {
+ if (record.getOriginalGroupKey().contains("testGrp")
+ && record.getNotification().isGroupChild()) {
+ record.updateNotificationChannel(socialChannel);
+ mGroupHelper.onChannelUpdated(record);
+ numChildrenBundled++;
+ if (numChildrenBundled == AUTOGROUP_AT_COUNT) {
+ break;
+ }
+ }
+ }
+
+ // Check that no autogroup summaries were created for the social section
+ verify(mCallback, never()).addAutoGroupSummary(anyInt(), anyString(), anyString(),
+ anyString(), anyInt(), any());
+ verify(mCallback, never()).addAutoGroup(anyString(), anyString(), anyBoolean());
+ verify(mCallback, never()).removeAutoGroup(anyString());
+ verify(mCallback, never()).removeAutoGroupSummary(anyInt(), anyString(), anyString());
+ verify(mCallback, never()).updateAutogroupSummary(anyInt(), anyString(), anyString(),
+ any());
+ verify(mCallback, never()).removeAppProvidedSummaryOnClassification(anyString(),
+ anyString());
+
+ // Change importance to LOW => autogroup notifications in bundle section
+ reset(mCallback);
+ final String expectedGroupKey_social = GroupHelper.getFullAggregateGroupKey(pkg,
+ AGGREGATE_GROUP_KEY + "SocialSection", UserHandle.SYSTEM.getIdentifier());
+ final NotificationAttributes expectedSummaryAttr_social = new NotificationAttributes(
+ BASE_FLAGS, mSmallIcon, COLOR_DEFAULT, DEFAULT_VISIBILITY, DEFAULT_GROUP_ALERT,
+ NotificationChannel.SOCIAL_MEDIA_ID);
+ socialChannel.setImportance(IMPORTANCE_LOW);
+ for (NotificationRecord record: notificationList) {
+ if (record.getNotification().isGroupChild()
+ && record.getOriginalGroupKey().contains("testGrp")
+ && NotificationChannel.SYSTEM_RESERVED_IDS.contains(
+ record.getChannel().getId())) {
+ record.updateNotificationChannel(socialChannel);
+ }
+ }
+ mGroupHelper.onChannelUpdated(UserHandle.SYSTEM.getIdentifier(), pkg, socialChannel,
+ notificationList, summaryByGroup);
+
+ // Check that 1 autogroup summaries were created for the social section
+ verify(mCallback, times(1)).addAutoGroupSummary(anyInt(), eq(pkg), anyString(),
+ eq(expectedGroupKey_social), anyInt(), eq(expectedSummaryAttr_social));
+ verify(mCallback, times(AUTOGROUP_AT_COUNT)).addAutoGroup(anyString(),
+ eq(expectedGroupKey_social), eq(true));
+ verify(mCallback, never()).removeAutoGroup(anyString());
+ verify(mCallback, never()).removeAutoGroupSummary(anyInt(), anyString(), anyString());
+ verify(mCallback, never()).updateAutogroupSummary(anyInt(), anyString(), anyString(),
+ any());
+ verify(mCallback, times(AUTOGROUP_AT_COUNT)).removeAppProvidedSummaryOnClassification(
+ anyString(), eq(originalAppGroupKey));
+ }
+
+ @Test
@EnableFlags(FLAG_NOTIFICATION_FORCE_GROUPING)
public void testMoveAggregateGroups_updateChannel_groupsUngrouped() {
final String pkg = "package";
@@ -3432,7 +3740,7 @@ public class GroupHelperTest extends UiServiceTestCase {
r.updateNotificationChannel(channel);
}
mGroupHelper.onChannelUpdated(UserHandle.SYSTEM.getIdentifier(), pkg, channel,
- notificationList);
+ notificationList, summaryByGroup);
// Check that all notifications are moved to the silent section group
verify(mCallback, times(1)).addAutoGroupSummary(anyInt(), eq(pkg), anyString(),
@@ -3489,7 +3797,7 @@ public class GroupHelperTest extends UiServiceTestCase {
}
}
mGroupHelper.onChannelUpdated(UserHandle.SYSTEM.getIdentifier(), pkg, channel1,
- notificationList);
+ notificationList, new ArrayMap<>());
// Check that channel1's notifications are moved to the silent section & autogroup all
NotificationAttributes expectedSummaryAttr = new NotificationAttributes(BASE_FLAGS,
@@ -3940,14 +4248,14 @@ public class GroupHelperTest extends UiServiceTestCase {
// Check that special categories are grouped in their own sections
final NotificationChannel promoChannel = new NotificationChannel(
NotificationChannel.PROMOTIONS_ID, NotificationChannel.PROMOTIONS_ID,
- IMPORTANCE_DEFAULT);
+ IMPORTANCE_LOW);
final NotificationRecord notification_promotion = getNotificationRecord(mPkg, 0, "", mUser,
"", false, promoChannel);
assertThat(GroupHelper.getSection(notification_promotion).mName).isEqualTo(
"PromotionsSection");
final NotificationChannel newsChannel = new NotificationChannel(NotificationChannel.NEWS_ID,
- NotificationChannel.NEWS_ID, IMPORTANCE_DEFAULT);
+ NotificationChannel.NEWS_ID, IMPORTANCE_LOW);
final NotificationRecord notification_news = getNotificationRecord(mPkg, 0, "", mUser,
"", false, newsChannel);
assertThat(GroupHelper.getSection(notification_news).mName).isEqualTo(
@@ -3955,18 +4263,49 @@ public class GroupHelperTest extends UiServiceTestCase {
final NotificationChannel socialChannel = new NotificationChannel(
NotificationChannel.SOCIAL_MEDIA_ID, NotificationChannel.SOCIAL_MEDIA_ID,
- IMPORTANCE_DEFAULT);
+ IMPORTANCE_LOW);
final NotificationRecord notification_social = getNotificationRecord(mPkg, 0, "", mUser,
"", false, socialChannel);
assertThat(GroupHelper.getSection(notification_social).mName).isEqualTo(
"SocialSection");
final NotificationChannel recsChannel = new NotificationChannel(NotificationChannel.RECS_ID,
- NotificationChannel.RECS_ID, IMPORTANCE_DEFAULT);
+ NotificationChannel.RECS_ID, IMPORTANCE_LOW);
final NotificationRecord notification_recs = getNotificationRecord(mPkg, 0, "", mUser,
"", false, recsChannel);
assertThat(GroupHelper.getSection(notification_recs).mName).isEqualTo(
"RecsSection");
+
+ // Check that bundle categories with importance > IMPORTANCE_LOW are grouped into Alerting
+ final NotificationChannel promoChannelAlerting = new NotificationChannel(
+ NotificationChannel.PROMOTIONS_ID, NotificationChannel.PROMOTIONS_ID,
+ IMPORTANCE_DEFAULT);
+ final NotificationRecord notification_promotion_alerting = getNotificationRecord(mPkg, 0,
+ "", mUser, "", false, promoChannelAlerting);
+ assertThat(GroupHelper.getSection(notification_promotion_alerting).mName).isEqualTo(
+ "AlertingSection");
+
+ final NotificationChannel newsChannelAlerting = new NotificationChannel(
+ NotificationChannel.NEWS_ID, NotificationChannel.NEWS_ID, IMPORTANCE_DEFAULT);
+ final NotificationRecord notification_news_alerting = getNotificationRecord(mPkg, 0, "",
+ mUser, "", false, newsChannelAlerting);
+ assertThat(GroupHelper.getSection(notification_news_alerting).mName).isEqualTo(
+ "AlertingSection");
+
+ final NotificationChannel socialChannelAlerting = new NotificationChannel(
+ NotificationChannel.SOCIAL_MEDIA_ID, NotificationChannel.SOCIAL_MEDIA_ID,
+ IMPORTANCE_DEFAULT);
+ final NotificationRecord notification_social_alerting = getNotificationRecord(mPkg, 0, "",
+ mUser, "", false, socialChannelAlerting);
+ assertThat(GroupHelper.getSection(notification_social_alerting).mName).isEqualTo(
+ "AlertingSection");
+
+ final NotificationChannel recsChannelAlerting = new NotificationChannel(
+ NotificationChannel.RECS_ID, NotificationChannel.RECS_ID, IMPORTANCE_DEFAULT);
+ final NotificationRecord notification_recs_alerting = getNotificationRecord(mPkg, 0, "",
+ mUser, "", false, recsChannelAlerting);
+ assertThat(GroupHelper.getSection(notification_recs_alerting).mName).isEqualTo(
+ "AlertingSection");
}
@Test
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java
index 19b90b6b76d9..076e3e9fcc24 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java
@@ -22,6 +22,7 @@ import static android.service.notification.Adjustment.KEY_TYPE;
import static android.service.notification.Adjustment.TYPE_CONTENT_RECOMMENDATION;
import static android.service.notification.Adjustment.TYPE_NEWS;
import static android.service.notification.Adjustment.TYPE_PROMOTION;
+import static android.service.notification.Adjustment.TYPE_SOCIAL_MEDIA;
import static com.android.server.notification.NotificationManagerService.DEFAULT_ALLOWED_ADJUSTMENTS;
@@ -611,7 +612,8 @@ public class NotificationAssistantsTest extends UiServiceTestCase {
ManagedServices.ManagedServiceInfo info =
mAssistants.new ManagedServiceInfo(null, mCn, userId, false, null, 35, 2345256);
- mAssistants.setAdjustmentTypeSupportedState(info, Adjustment.KEY_NOT_CONVERSATION, false);
+ mAssistants.setAdjustmentTypeSupportedState(
+ info.userid, Adjustment.KEY_NOT_CONVERSATION, false);
assertThat(mAssistants.getUnsupportedAdjustments(userId)).contains(
Adjustment.KEY_NOT_CONVERSATION);
@@ -632,7 +634,8 @@ public class NotificationAssistantsTest extends UiServiceTestCase {
ManagedServices.ManagedServiceInfo info =
mAssistants.new ManagedServiceInfo(null, mCn, userId, false, null, 35, 2345256);
- mAssistants.setAdjustmentTypeSupportedState(info, Adjustment.KEY_NOT_CONVERSATION, false);
+ mAssistants.setAdjustmentTypeSupportedState(
+ info.userid, Adjustment.KEY_NOT_CONVERSATION, false);
writeXmlAndReload(USER_ALL);
@@ -654,7 +657,6 @@ public class NotificationAssistantsTest extends UiServiceTestCase {
assertNotNull(current);
writeXmlAndReload(USER_ALL);
-
assertThat(mAssistants.getUnsupportedAdjustments(userId).size()).isEqualTo(0);
}
@@ -707,26 +709,29 @@ public class NotificationAssistantsTest extends UiServiceTestCase {
@Test
@EnableFlags(android.service.notification.Flags.FLAG_NOTIFICATION_CLASSIFICATION)
public void testSetAssistantAdjustmentKeyTypeState_allow() {
- assertThat(mAssistants.getAllowedClassificationTypes()).asList()
- .containsExactly(TYPE_PROMOTION);
+ mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_CONTENT_RECOMMENDATION, false);
+ assertThat(mAssistants.getAllowedClassificationTypes())
+ .asList().doesNotContain(TYPE_CONTENT_RECOMMENDATION);
mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_CONTENT_RECOMMENDATION, true);
assertThat(mAssistants.getAllowedClassificationTypes()).asList()
- .containsExactlyElementsIn(List.of(TYPE_PROMOTION, TYPE_CONTENT_RECOMMENDATION));
+ .contains(TYPE_CONTENT_RECOMMENDATION);
}
@Test
@EnableFlags(android.service.notification.Flags.FLAG_NOTIFICATION_CLASSIFICATION)
public void testSetAssistantAdjustmentKeyTypeState_disallow() {
mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_PROMOTION, false);
- assertThat(mAssistants.getAllowedClassificationTypes()).isEmpty();
+ assertThat(mAssistants.getAllowedClassificationTypes())
+ .asList().doesNotContain(TYPE_PROMOTION);
}
@Test
@EnableFlags(Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI)
public void testDisallowAdjustmentKeyType_readWriteXml() throws Exception {
mAssistants.loadDefaultsFromConfig(true);
+ mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_SOCIAL_MEDIA, false);
mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_PROMOTION, false);
mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_NEWS, true);
mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_CONTENT_RECOMMENDATION, true);
@@ -745,7 +750,8 @@ public class NotificationAssistantsTest extends UiServiceTestCase {
writeXmlAndReload(USER_ALL);
assertThat(mAssistants.getAllowedClassificationTypes()).asList()
- .containsExactly(TYPE_PROMOTION);
+ .containsExactlyElementsIn(List.of(TYPE_PROMOTION, TYPE_NEWS, TYPE_SOCIAL_MEDIA,
+ TYPE_CONTENT_RECOMMENDATION));
}
@Test
@@ -757,18 +763,22 @@ public class NotificationAssistantsTest extends UiServiceTestCase {
String allowedPackage = "allowed.package";
assertThat(mAssistants.isAdjustmentAllowedForPackage(key, allowedPackage)).isTrue();
+ assertThat(mAssistants.getAdjustmentDeniedPackages(key)).isEmpty();
// Set type adjustment disallowed for this package
mAssistants.setAdjustmentSupportedForPackage(key, allowedPackage, false);
// Then the package is marked as denied
assertThat(mAssistants.isAdjustmentAllowedForPackage(key, allowedPackage)).isFalse();
+ assertThat(mAssistants.getAdjustmentDeniedPackages(key)).asList()
+ .containsExactly(allowedPackage);
// Set type adjustment allowed again
mAssistants.setAdjustmentSupportedForPackage(key, allowedPackage, true);
// Then the package is marked as allowed again
assertThat(mAssistants.isAdjustmentAllowedForPackage(key, allowedPackage)).isTrue();
+ assertThat(mAssistants.getAdjustmentDeniedPackages(key)).isEmpty();
}
@Test
@@ -789,6 +799,8 @@ public class NotificationAssistantsTest extends UiServiceTestCase {
assertThat(mAssistants.isAdjustmentAllowedForPackage(key, deniedPkg1)).isFalse();
assertThat(mAssistants.isAdjustmentAllowedForPackage(key, deniedPkg2)).isFalse();
assertThat(mAssistants.isAdjustmentAllowedForPackage(key, deniedPkg3)).isFalse();
+ assertThat(mAssistants.getAdjustmentDeniedPackages(key)).asList()
+ .containsExactlyElementsIn(List.of(deniedPkg1, deniedPkg2, deniedPkg3));
// And when we re-allow one of them,
mAssistants.setAdjustmentSupportedForPackage(key, deniedPkg2, true);
@@ -797,6 +809,8 @@ public class NotificationAssistantsTest extends UiServiceTestCase {
assertThat(mAssistants.isAdjustmentAllowedForPackage(key, deniedPkg1)).isFalse();
assertThat(mAssistants.isAdjustmentAllowedForPackage(key, deniedPkg2)).isTrue();
assertThat(mAssistants.isAdjustmentAllowedForPackage(key, deniedPkg3)).isFalse();
+ assertThat(mAssistants.getAdjustmentDeniedPackages(key)).asList()
+ .containsExactlyElementsIn(List.of(deniedPkg1, deniedPkg3));
}
@Test
@@ -860,8 +874,9 @@ public class NotificationAssistantsTest extends UiServiceTestCase {
mAssistants.new ManagedServiceInfo(null, mCn, userId, false, null, 35, 2345256);
// Ensure bundling is enabled
- mAssistants.setAdjustmentTypeSupportedState(info, KEY_TYPE, true);
+ mAssistants.setAdjustmentTypeSupportedState(info.userid, KEY_TYPE, true);
// Enable these specific bundle types
+ mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_SOCIAL_MEDIA, false);
mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_PROMOTION, false);
mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_NEWS, true);
mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_CONTENT_RECOMMENDATION, true);
@@ -894,7 +909,7 @@ public class NotificationAssistantsTest extends UiServiceTestCase {
.isEqualTo(NotificationProtoEnums.TYPE_CONTENT_RECOMMENDATION);
// Disable the top-level bundling setting
- mAssistants.setAdjustmentTypeSupportedState(info, KEY_TYPE, false);
+ mAssistants.setAdjustmentTypeSupportedState(info.userid, KEY_TYPE, false);
// Enable these specific bundle types
mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_PROMOTION, true);
mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_NEWS, false);
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
index 1a95984a705d..0373eb6e9318 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
@@ -24,8 +24,6 @@ import static android.app.ActivityManagerInternal.ServiceNotificationPolicy.NOT_
import static android.app.ActivityManagerInternal.ServiceNotificationPolicy.SHOW_IMMEDIATELY;
import static android.app.ActivityTaskManager.INVALID_TASK_ID;
import static android.app.Flags.FLAG_KEYGUARD_PRIVATE_NOTIFICATIONS;
-import static android.app.Flags.FLAG_NM_BINDER_PERF_CACHE_CHANNELS;
-import static android.app.Flags.FLAG_REDACT_SENSITIVE_CONTENT_NOTIFICATIONS_ON_LOCKSCREEN;
import static android.app.Flags.FLAG_SORT_SECTION_BY_TIME;
import static android.app.Notification.EXTRA_ALLOW_DURING_SETUP;
import static android.app.Notification.EXTRA_PICTURE;
@@ -257,12 +255,11 @@ import android.graphics.drawable.Icon;
import android.media.AudioAttributes;
import android.media.AudioManager;
import android.media.session.MediaSession;
-import android.net.ConnectivityManager;
-import android.net.NetworkCapabilities;
import android.net.Uri;
import android.os.Binder;
import android.os.Build;
import android.os.Bundle;
+import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.Parcel;
@@ -482,8 +479,6 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
@Mock
private PowerManager mPowerManager;
@Mock
- private ConnectivityManager mConnectivityManager;
- @Mock
private LightsManager mLightsManager;
private final ArrayList<WakeLock> mAcquiredWakeLocks = new ArrayList<>();
private final TestPostNotificationTrackerFactory mPostNotificationTrackerFactory =
@@ -574,10 +569,8 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
@Mock
NotificationAttentionHelper mAttentionHelper;
- @Mock
- NetworkCapabilities mWifiNetworkCapabilities;
-
private NotificationManagerService.WorkerHandler mWorkerHandler;
+ private Handler mBroadcastsHandler;
private class TestableToastCallback extends ITransientNotification.Stub {
@Override
@@ -777,15 +770,6 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
mActivityIntentImmutable = spy(PendingIntent.getActivity(mContext, 0,
new Intent().setPackage(mPkg), FLAG_IMMUTABLE));
- when(mWifiNetworkCapabilities.hasTransport(eq(NetworkCapabilities.TRANSPORT_WIFI)))
- .thenReturn(true);
- when(mWifiNetworkCapabilities
- .hasCapability(eq(NetworkCapabilities.NET_CAPABILITY_VALIDATED)))
- .thenReturn(true);
- when(mWifiNetworkCapabilities
- .hasCapability(eq(NetworkCapabilities.NET_CAPABILITY_TRUSTED)))
- .thenReturn(true);
-
initNMS();
}
@@ -814,14 +798,16 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
when(mUmInternal.isUserInitialized(anyInt())).thenReturn(true);
mWorkerHandler = spy(mService.new WorkerHandler(mTestableLooper.getLooper()));
- mService.init(mWorkerHandler, mRankingHandler, mPackageManager, mPackageManagerClient,
- mLightsManager, mListeners, mAssistants, mConditionProviders, mCompanionMgr,
- mSnoozeHelper, mUsageStats, mPolicyFile, mActivityManager, mGroupHelper, mAm, mAtm,
- mAppUsageStats, mDevicePolicyManager, mUgm, mUgmInternal,
- mAppOpsManager, mUm, mHistoryManager, mStatsManager,
- mAmi, mToastRateLimiter, mPermissionHelper, mock(UsageStatsManagerInternal.class),
- mTelecomManager, mLogger, mTestFlagResolver, mPermissionManager,
- mPowerManager, mConnectivityManager, mPostNotificationTrackerFactory);
+ mBroadcastsHandler = new Handler(mTestableLooper.getLooper());
+
+ mService.init(mWorkerHandler, mRankingHandler, mBroadcastsHandler, mPackageManager,
+ mPackageManagerClient, mLightsManager, mListeners, mAssistants, mConditionProviders,
+ mCompanionMgr, mSnoozeHelper, mUsageStats, mPolicyFile, mActivityManager,
+ mGroupHelper, mAm, mAtm, mAppUsageStats, mDevicePolicyManager, mUgm, mUgmInternal,
+ mAppOpsManager, mUm, mHistoryManager, mStatsManager, mAmi, mToastRateLimiter,
+ mPermissionHelper, mock(UsageStatsManagerInternal.class), mTelecomManager, mLogger,
+ mTestFlagResolver, mPermissionManager, mPowerManager,
+ mPostNotificationTrackerFactory);
mService.setAttentionHelper(mAttentionHelper);
mService.setLockPatternUtils(mock(LockPatternUtils.class));
@@ -829,6 +815,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
// make sure PreferencesHelper doesn't try to interact with any real caches
PreferencesHelper prefHelper = spy(mService.mPreferencesHelper);
doNothing().when(prefHelper).invalidateNotificationChannelCache();
+ doNothing().when(prefHelper).invalidateNotificationChannelGroupCache();
mService.setPreferencesHelper(prefHelper);
// Return first true for RoleObserver main-thread check
@@ -1003,6 +990,9 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
// problematic interactions with mocks when they're no longer working as expected).
mWorkerHandler.removeCallbacksAndMessages(null);
}
+ if (mBroadcastsHandler != null) {
+ mBroadcastsHandler.removeCallbacksAndMessages(null);
+ }
if (mTestableLooper != null) {
// Must remove static reference to this test object to prevent leak (b/261039202)
@@ -2877,7 +2867,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
waitForIdle();
verify(mGroupHelper, times(1)).onChannelUpdated(eq(Process.myUserHandle().getIdentifier()),
- eq(mPkg), eq(mTestNotificationChannel), any());
+ eq(mPkg), eq(mTestNotificationChannel), any(), any());
}
@Test
@@ -5349,7 +5339,8 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
mBinderService.getNotificationChannelGroupsFromPrivilegedListener(
null, mPkg, Process.myUserHandle());
- verify(mPreferencesHelper, times(1)).getNotificationChannelGroups(anyString(), anyInt());
+ verify(mPreferencesHelper, times(1)).getNotificationChannelGroupsWithoutChannels(
+ anyString(), anyInt());
}
@Test
@@ -5366,7 +5357,8 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
// pass
}
- verify(mPreferencesHelper, never()).getNotificationChannelGroups(anyString(), anyInt());
+ verify(mPreferencesHelper, never()).getNotificationChannelGroupsWithoutChannels(anyString(),
+ anyInt());
}
@Test
@@ -5386,7 +5378,8 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
// pass
}
- verify(mPreferencesHelper, never()).getNotificationChannelGroups(anyString(), anyInt());
+ verify(mPreferencesHelper, never()).getNotificationChannelGroupsWithoutChannels(anyString(),
+ anyInt());
}
@Test
@@ -14414,78 +14407,6 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
}
@Test
- public void testMakeRankingUpdate_clearsHasSensitiveContentIfConnectedToWifi() {
- mSetFlagsRule.enableFlags(FLAG_REDACT_SENSITIVE_NOTIFICATIONS_FROM_UNTRUSTED_LISTENERS,
- FLAG_REDACT_SENSITIVE_CONTENT_NOTIFICATIONS_ON_LOCKSCREEN);
- mService.updateWifiConnectionState(mWifiNetworkCapabilities);
- when(mListeners.hasSensitiveContent(any())).thenReturn(true);
- NotificationRecord pkgA = new NotificationRecord(mContext,
- generateSbn("a", 1000, 9, 0), mTestNotificationChannel);
- mService.addNotification(pkgA);
- ManagedServices.ManagedServiceInfo info = mock(ManagedServices.ManagedServiceInfo.class);
- info.isSystemUi = true;
- when(info.enabledAndUserMatches(anyInt())).thenReturn(true);
- when(info.isSameUser(anyInt())).thenReturn(true);
- NotificationRankingUpdate nru = mService.makeRankingUpdateLocked(info);
- NotificationListenerService.Ranking ranking =
- nru.getRankingMap().getRawRankingObject(pkgA.getSbn().getKey());
- assertFalse(ranking.hasSensitiveContent());
- }
-
- @Test
- public void testMakeRankingUpdate_doesntClearHasSensitiveContentIfNotConnectedToWifi() {
- mSetFlagsRule.enableFlags(FLAG_REDACT_SENSITIVE_NOTIFICATIONS_FROM_UNTRUSTED_LISTENERS,
- FLAG_REDACT_SENSITIVE_CONTENT_NOTIFICATIONS_ON_LOCKSCREEN);
- mService.updateWifiConnectionState(mock(NetworkCapabilities.class));
- when(mListeners.hasSensitiveContent(any())).thenReturn(true);
- NotificationRecord record = getSensitiveNotificationRecord();
- mService.addNotification(record);
- ManagedServices.ManagedServiceInfo info = mock(ManagedServices.ManagedServiceInfo.class);
- info.isSystemUi = true;
- when(info.enabledAndUserMatches(anyInt())).thenReturn(true);
- when(info.isSameUser(anyInt())).thenReturn(true);
- NotificationRankingUpdate nru = mService.makeRankingUpdateLocked(info);
- NotificationListenerService.Ranking ranking =
- nru.getRankingMap().getRawRankingObject(record.getSbn().getKey());
- assertTrue(ranking.hasSensitiveContent());
- }
-
- @Test
- public void testMakeRankingUpdate_doesntClearHasSensitiveContentIfNotSysUi() {
- mSetFlagsRule.enableFlags(FLAG_REDACT_SENSITIVE_NOTIFICATIONS_FROM_UNTRUSTED_LISTENERS);
- mSetFlagsRule.disableFlags(FLAG_REDACT_SENSITIVE_CONTENT_NOTIFICATIONS_ON_LOCKSCREEN);
- mService.updateWifiConnectionState(mWifiNetworkCapabilities);
- when(mListeners.hasSensitiveContent(any())).thenReturn(true);
- NotificationRecord record = getSensitiveNotificationRecord();
- mService.addNotification(record);
- ManagedServices.ManagedServiceInfo info = mock(ManagedServices.ManagedServiceInfo.class);
- when(info.enabledAndUserMatches(anyInt())).thenReturn(true);
- when(info.isSameUser(anyInt())).thenReturn(true);
- NotificationRankingUpdate nru = mService.makeRankingUpdateLocked(info);
- NotificationListenerService.Ranking ranking =
- nru.getRankingMap().getRawRankingObject(record.getSbn().getKey());
- assertTrue(ranking.hasSensitiveContent());
- }
-
- @Test
- public void testMakeRankingUpdate_doesntClearHasSensitiveContentIfFlagDisabled() {
- mSetFlagsRule.enableFlags(FLAG_REDACT_SENSITIVE_NOTIFICATIONS_FROM_UNTRUSTED_LISTENERS);
- mSetFlagsRule.disableFlags(FLAG_REDACT_SENSITIVE_CONTENT_NOTIFICATIONS_ON_LOCKSCREEN);
- mService.updateWifiConnectionState(mWifiNetworkCapabilities);
- when(mListeners.hasSensitiveContent(any())).thenReturn(true);
- NotificationRecord record = getSensitiveNotificationRecord();
- mService.addNotification(record);
- ManagedServices.ManagedServiceInfo info = mock(ManagedServices.ManagedServiceInfo.class);
- info.isSystemUi = true;
- when(info.enabledAndUserMatches(anyInt())).thenReturn(true);
- when(info.isSameUser(anyInt())).thenReturn(true);
- NotificationRankingUpdate nru = mService.makeRankingUpdateLocked(info);
- NotificationListenerService.Ranking ranking =
- nru.getRankingMap().getRawRankingObject(record.getSbn().getKey());
- assertTrue(ranking.hasSensitiveContent());
- }
-
- @Test
public void testMakeRankingUpdate_doestntRedactIfFlagDisabled() {
mSetFlagsRule.disableFlags(FLAG_REDACT_SENSITIVE_NOTIFICATIONS_FROM_UNTRUSTED_LISTENERS);
when(mListeners.isUidTrusted(anyInt())).thenReturn(false);
@@ -17647,8 +17568,19 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
}
@Test
- @EnableFlags(android.app.Flags.FLAG_API_RICH_ONGOING)
- public void testSetCanBePromoted_granted() throws Exception {
+ @EnableFlags({android.app.Flags.FLAG_API_RICH_ONGOING})
+ public void testSetCanBePromoted_granted_noui() throws Exception {
+ testSetCanBePromoted_granted();
+ }
+
+ @Test
+ @EnableFlags({android.app.Flags.FLAG_API_RICH_ONGOING,
+ android.app.Flags.FLAG_UI_RICH_ONGOING })
+ public void testSetCanBePromoted_granted_ui() throws Exception {
+ testSetCanBePromoted_granted();
+ }
+
+ private void testSetCanBePromoted_granted() throws Exception {
// qualifying posted notification
Notification n = new Notification.Builder(mContext, mTestNotificationChannel.getId())
.setSmallIcon(android.R.drawable.sym_def_app_icon)
@@ -17703,6 +17635,11 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
mService.addNotification(r);
mService.addEnqueuedNotification(r1);
+ // GIVEN - make sure the promoted value does not depend on the default value.
+ mBinderService.setCanBePromoted(mPkg, mUid, false, true);
+ waitForIdle();
+ clearInvocations(mListeners);
+
mBinderService.setCanBePromoted(mPkg, mUid, true, true);
waitForIdle();
@@ -17725,7 +17662,18 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
@Test
@EnableFlags(android.app.Flags.FLAG_API_RICH_ONGOING)
- public void testSetCanBePromoted_granted_onlyNotifiesOnce() throws Exception {
+ public void testSetCanBePromoted_granted_onlyNotifiesOnce_noui() throws Exception {
+ testSetCanBePromoted_granted_onlyNotifiesOnce();
+ }
+
+ @Test
+ @EnableFlags({android.app.Flags.FLAG_API_RICH_ONGOING,
+ android.app.Flags.FLAG_UI_RICH_ONGOING})
+ public void testSetCanBePromoted_granted_onlyNotifiesOnce_ui() throws Exception {
+ testSetCanBePromoted_granted_onlyNotifiesOnce();
+ }
+
+ private void testSetCanBePromoted_granted_onlyNotifiesOnce() throws Exception {
// qualifying posted notification
Notification n = new Notification.Builder(mContext, mTestNotificationChannel.getId())
.setSmallIcon(android.R.drawable.sym_def_app_icon)
@@ -17741,6 +17689,10 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
NotificationRecord r = new NotificationRecord(mContext, sbn, mTestNotificationChannel);
mService.addNotification(r);
+ // GIVEN - make sure the promoted value does not depend on the default value.
+ mBinderService.setCanBePromoted(mPkg, mUid, false, true);
+ waitForIdle();
+ clearInvocations(mListeners);
mBinderService.setCanBePromoted(mPkg, mUid, true, true);
waitForIdle();
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
index 832ca51ae580..3f26cd9258af 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
@@ -18,7 +18,6 @@ package com.android.server.notification;
import static android.app.AppOpsManager.MODE_ALLOWED;
import static android.app.AppOpsManager.MODE_DEFAULT;
import static android.app.AppOpsManager.OP_SYSTEM_ALERT_WINDOW;
-import static android.app.Flags.FLAG_MODES_UI;
import static android.app.Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI;
import static android.app.Notification.VISIBILITY_PRIVATE;
import static android.app.Notification.VISIBILITY_SECRET;
@@ -158,6 +157,7 @@ import androidx.test.filters.SmallTest;
import com.android.internal.config.sysui.SystemUiSystemPropertiesFlags;
import com.android.internal.config.sysui.TestableFlagResolver;
+import com.android.internal.notification.NotificationChannelGroupsHelper;
import com.android.modules.utils.TypedXmlPullParser;
import com.android.modules.utils.TypedXmlSerializer;
import com.android.os.AtomsProto;
@@ -258,9 +258,9 @@ public class PreferencesHelperTest extends UiServiceTestCase {
@Parameters(name = "{0}")
public static List<FlagsParameterization> getParams() {
return FlagsParameterization.allCombinationsOf(
- android.app.Flags.FLAG_API_RICH_ONGOING,
- FLAG_NOTIFICATION_CLASSIFICATION, FLAG_NOTIFICATION_CLASSIFICATION_UI,
- FLAG_MODES_UI, android.app.Flags.FLAG_NM_BINDER_PERF_CACHE_CHANNELS);
+ android.app.Flags.FLAG_UI_RICH_ONGOING,
+ FLAG_NOTIFICATION_CLASSIFICATION_UI,
+ android.app.Flags.FLAG_NM_BINDER_PERF_CACHE_CHANNELS);
}
public PreferencesHelperTest(FlagsParameterization flags) {
@@ -661,6 +661,7 @@ public class PreferencesHelperTest extends UiServiceTestCase {
mHelper.setShowBadge(PKG_N_MR1, UID_N_MR1, true);
if (android.app.Flags.uiRichOngoing()) {
+ mHelper.setCanBePromoted(PKG_N_MR1, UID_N_MR1, false, true);
mHelper.setCanBePromoted(PKG_N_MR1, UID_N_MR1, true, true);
}
@@ -690,7 +691,8 @@ public class PreferencesHelperTest extends UiServiceTestCase {
}
List<NotificationChannelGroup> actualGroups = mXmlHelper.getNotificationChannelGroups(
- PKG_N_MR1, UID_N_MR1, false, true, false, true, null).getList();
+ PKG_N_MR1, UID_N_MR1,
+ NotificationChannelGroupsHelper.Params.forAllChannels(false)).getList();
boolean foundNcg = false;
for (NotificationChannelGroup actual : actualGroups) {
if (ncg.getId().equals(actual.getId())) {
@@ -774,7 +776,8 @@ public class PreferencesHelperTest extends UiServiceTestCase {
mXmlHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, channel3.getId(), false));
List<NotificationChannelGroup> actualGroups = mXmlHelper.getNotificationChannelGroups(
- PKG_N_MR1, UID_N_MR1, false, true, false, true, null).getList();
+ PKG_N_MR1, UID_N_MR1,
+ NotificationChannelGroupsHelper.Params.forAllChannels(false)).getList();
boolean foundNcg = false;
for (NotificationChannelGroup actual : actualGroups) {
if (ncg.getId().equals(actual.getId())) {
@@ -3311,7 +3314,8 @@ public class PreferencesHelperTest extends UiServiceTestCase {
PKG_N_MR1, UID_N_MR1, nonGroupedNonDeletedChannel.getId(), false));
// notDeleted
- assertEquals(1, mHelper.getNotificationChannelGroups(PKG_N_MR1, UID_N_MR1).size());
+ assertEquals(1, mHelper.getNotificationChannelGroups(PKG_N_MR1, UID_N_MR1,
+ NotificationChannelGroupsHelper.Params.forAllGroups()).getList().size());
verify(mHandler, never()).requestSort();
@@ -3426,8 +3430,8 @@ public class PreferencesHelperTest extends UiServiceTestCase {
mHelper.onPackagesChanged(true, USER_SYSTEM, new String[]{PKG_N_MR1}, new int[]{
UID_N_MR1});
- assertEquals(0, mHelper.getNotificationChannelGroups(
- PKG_N_MR1, UID_N_MR1, true, true, false, true, null).getList().size());
+ assertEquals(0, mHelper.getNotificationChannelGroups(PKG_N_MR1, UID_N_MR1,
+ NotificationChannelGroupsHelper.Params.forAllChannels(true)).getList().size());
}
@Test
@@ -3471,7 +3475,7 @@ public class PreferencesHelperTest extends UiServiceTestCase {
assertNull(mHelper.getNotificationDelegate(PKG_O, UID_O));
assertEquals(0, mHelper.getAppLockedFields(PKG_O, UID_O));
assertEquals(0, mHelper.getRemovedPkgNotificationChannels(PKG_O, UID_O).size());
- assertEquals(0, mHelper.getNotificationChannelGroups(PKG_O, UID_O).size());
+ assertEquals(0, mHelper.getNotificationChannelGroupsWithoutChannels(PKG_O, UID_O).size());
NotificationChannel channel = getChannel();
mHelper.createNotificationChannel(PKG_O, UID_O, channel, true, false,
@@ -3493,8 +3497,8 @@ public class PreferencesHelperTest extends UiServiceTestCase {
NotificationChannelGroup ncg = new NotificationChannelGroup("group1", "name1");
mHelper.createNotificationChannelGroup(PKG_N_MR1, UID_N_MR1, ncg, true,
UID_N_MR1, false);
- assertEquals(ncg,
- mHelper.getNotificationChannelGroups(PKG_N_MR1, UID_N_MR1).iterator().next());
+ assertEquals(ncg, mHelper.getNotificationChannelGroupsWithoutChannels(PKG_N_MR1,
+ UID_N_MR1).iterator().next());
verify(mHandler, never()).requestSort();
assertEquals(1, mLogger.getCalls().size());
assertEquals(
@@ -3566,8 +3570,8 @@ public class PreferencesHelperTest extends UiServiceTestCase {
mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel3, true, false,
UID_N_MR1, false);
- List<NotificationChannelGroup> actual = mHelper.getNotificationChannelGroups(
- PKG_N_MR1, UID_N_MR1, true, true, false, true, null).getList();
+ List<NotificationChannelGroup> actual = mHelper.getNotificationChannelGroups(PKG_N_MR1,
+ UID_N_MR1, NotificationChannelGroupsHelper.Params.forAllChannels(true)).getList();
assertEquals(3, actual.size());
for (NotificationChannelGroup group : actual) {
if (group.getId() == null) {
@@ -3601,15 +3605,15 @@ public class PreferencesHelperTest extends UiServiceTestCase {
channel1.setGroup(ncg.getId());
mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel1, true, false,
UID_N_MR1, false);
- mHelper.getNotificationChannelGroups(PKG_N_MR1, UID_N_MR1, true, true, false, true, null)
- .getList();
+ mHelper.getNotificationChannelGroups(PKG_N_MR1, UID_N_MR1,
+ NotificationChannelGroupsHelper.Params.forAllChannels(true)).getList();
channel1.setImportance(IMPORTANCE_LOW);
mHelper.updateNotificationChannel(PKG_N_MR1, UID_N_MR1, channel1, true,
UID_N_MR1, false);
- List<NotificationChannelGroup> actual = mHelper.getNotificationChannelGroups(
- PKG_N_MR1, UID_N_MR1, true, true, false, true, null).getList();
+ List<NotificationChannelGroup> actual = mHelper.getNotificationChannelGroups(PKG_N_MR1,
+ UID_N_MR1, NotificationChannelGroupsHelper.Params.forAllChannels(true)).getList();
assertEquals(2, actual.size());
for (NotificationChannelGroup group : actual) {
@@ -3634,8 +3638,8 @@ public class PreferencesHelperTest extends UiServiceTestCase {
mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel1, true, false,
UID_N_MR1, false);
- List<NotificationChannelGroup> actual = mHelper.getNotificationChannelGroups(
- PKG_N_MR1, UID_N_MR1, false, false, true, true, null).getList();
+ List<NotificationChannelGroup> actual = mHelper.getNotificationChannelGroups(PKG_N_MR1,
+ UID_N_MR1, NotificationChannelGroupsHelper.Params.forAllGroups()).getList();
assertEquals(2, actual.size());
for (NotificationChannelGroup group : actual) {
@@ -3900,11 +3904,11 @@ public class PreferencesHelperTest extends UiServiceTestCase {
notExpected.add(PKG_P + " (" + UID_P + ") importance="); // no importance for PKG_P
for (String exp : expected) {
- assertTrue(actual.contains(exp));
+ assertThat(actual).contains(exp);
}
for (String notExp : notExpected) {
- assertFalse(actual.contains(notExp));
+ assertThat(actual).doesNotContain(notExp);
}
}
@@ -3917,14 +3921,21 @@ public class PreferencesHelperTest extends UiServiceTestCase {
mHelper.canShowBadge(PKG_P, UID_P);
// get dump output
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- mHelper.dump(pw, "", new NotificationManagerService.DumpFilter(), null);
- pw.flush();
- String actual = sw.toString();
+ String actual = dumpToString(mHelper);
// nobody gets any importance
- assertFalse(actual.contains("importance="));
+ assertThat(actual).doesNotContain("importance=");
+ }
+
+ @Test
+ public void testDumpString_includesDelegates() {
+ mHelper.setNotificationDelegate(PKG_P, UID_P, "the.delegate.package", 456);
+
+ String dump = dumpToString(mHelper);
+
+ assertThat(dump).contains(
+ "AppSettings: com.example.p (10003)\n"
+ + " Delegate: the.delegate.package (456) enabled=true");
}
@Test
@@ -6440,8 +6451,9 @@ public class PreferencesHelperTest extends UiServiceTestCase {
Set<String> filter = ImmutableSet.of("id3");
- NotificationChannelGroup actual = mHelper.getNotificationChannelGroups(
- PKG_N_MR1, UID_N_MR1, false, true, false, true, filter).getList().get(0);
+ NotificationChannelGroup actual = mHelper.getNotificationChannelGroups(PKG_N_MR1, UID_N_MR1,
+ NotificationChannelGroupsHelper.Params.onlySpecifiedOrBlockedChannels(
+ filter)).getList().get(0);
assertEquals(2, actual.getChannels().size());
assertEquals(1, actual.getChannels().stream().filter(c -> c.getId().equals("id3")).count());
assertEquals(1, actual.getChannels().stream().filter(c -> c.getId().equals("id2")).count());
@@ -6468,8 +6480,9 @@ public class PreferencesHelperTest extends UiServiceTestCase {
Set<String> filter = ImmutableSet.of("id3");
- NotificationChannelGroup actual = mHelper.getNotificationChannelGroups(
- PKG_N_MR1, UID_N_MR1, false, true, false, false, filter).getList().get(0);
+ NotificationChannelGroup actual = mHelper.getNotificationChannelGroups(PKG_N_MR1, UID_N_MR1,
+ new NotificationChannelGroupsHelper.Params(false, true, false, false,
+ filter)).getList().get(0);
assertEquals(1, actual.getChannels().size());
assertEquals(1, actual.getChannels().stream().filter(c -> c.getId().equals("id3")).count());
assertEquals(0, actual.getChannels().stream().filter(c -> c.getId().equals("id2")).count());
@@ -6638,6 +6651,8 @@ public class PreferencesHelperTest extends UiServiceTestCase {
@Test
@EnableFlags(android.app.Flags.FLAG_API_RICH_ONGOING)
public void testSetCanBePromoted_allowlistNotOverrideUser() {
+ // default value is true. So we need to set it false to trigger the change.
+ mHelper.setCanBePromoted(PKG_P, UID_P, false, true);
mHelper.setCanBePromoted(PKG_P, UID_P, true, true);
assertThat(mHelper.canBePromoted(PKG_P, UID_P)).isTrue();
@@ -6654,7 +6669,7 @@ public class PreferencesHelperTest extends UiServiceTestCase {
false);
// new channel should invalidate the cache.
- assertThat(mHelper.hasCacheBeenInvalidated()).isTrue();
+ assertThat(mHelper.hasChannelCacheBeenInvalidated()).isTrue();
// when the channel data is updated, should invalidate the cache again after that.
mHelper.resetCacheInvalidation();
@@ -6662,7 +6677,7 @@ public class PreferencesHelperTest extends UiServiceTestCase {
newChannel.setName("new name");
newChannel.setImportance(IMPORTANCE_HIGH);
mHelper.updateNotificationChannel(PKG_N_MR1, UID_N_MR1, newChannel, true, UID_N_MR1, false);
- assertThat(mHelper.hasCacheBeenInvalidated()).isTrue();
+ assertThat(mHelper.hasChannelCacheBeenInvalidated()).isTrue();
// also for conversations
mHelper.resetCacheInvalidation();
@@ -6674,13 +6689,13 @@ public class PreferencesHelperTest extends UiServiceTestCase {
conv.setConversationId(parentId, convId);
mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, conv, true, false, UID_N_MR1,
false);
- assertThat(mHelper.hasCacheBeenInvalidated()).isTrue();
+ assertThat(mHelper.hasChannelCacheBeenInvalidated()).isTrue();
mHelper.resetCacheInvalidation();
NotificationChannel newConv = conv.copy();
newConv.setName("changed");
mHelper.updateNotificationChannel(PKG_N_MR1, UID_N_MR1, newConv, true, UID_N_MR1, false);
- assertThat(mHelper.hasCacheBeenInvalidated()).isTrue();
+ assertThat(mHelper.hasChannelCacheBeenInvalidated()).isTrue();
}
@Test
@@ -6694,14 +6709,14 @@ public class PreferencesHelperTest extends UiServiceTestCase {
mHelper.resetCacheInvalidation();
mHelper.deleteNotificationChannel(PKG_N_MR1, UID_N_MR1, "id", UID_N_MR1, false);
- assertThat(mHelper.hasCacheBeenInvalidated()).isTrue();
+ assertThat(mHelper.hasChannelCacheBeenInvalidated()).isTrue();
// recreate channel and now permanently delete
mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel, true, false, UID_N_MR1,
false);
mHelper.resetCacheInvalidation();
mHelper.permanentlyDeleteNotificationChannel(PKG_N_MR1, UID_N_MR1, "id");
- assertThat(mHelper.hasCacheBeenInvalidated()).isTrue();
+ assertThat(mHelper.hasChannelCacheBeenInvalidated()).isTrue();
}
@Test
@@ -6721,12 +6736,12 @@ public class PreferencesHelperTest extends UiServiceTestCase {
mHelper.updateNotificationChannel(PKG_N_MR1, UID_N_MR1, newChannel, true, UID_N_MR1, false);
// because there were no effective changes, we should not see any cache invalidations
- assertThat(mHelper.hasCacheBeenInvalidated()).isFalse();
+ assertThat(mHelper.hasChannelCacheBeenInvalidated()).isFalse();
// deletions of a nonexistent channel also don't change anything
mHelper.resetCacheInvalidation();
mHelper.deleteNotificationChannel(PKG_N_MR1, UID_N_MR1, "nonexistent", UID_N_MR1, false);
- assertThat(mHelper.hasCacheBeenInvalidated()).isFalse();
+ assertThat(mHelper.hasChannelCacheBeenInvalidated()).isFalse();
}
@Test
@@ -6759,24 +6774,24 @@ public class PreferencesHelperTest extends UiServiceTestCase {
NotificationChannel p1u1New = p1u1.copy();
p1u1New.setName("p1u1 new");
mHelper.updateNotificationChannel(PKG_O, UID_O, p1u1New, true, UID_O, false);
- assertThat(mHelper.hasCacheBeenInvalidated()).isTrue();
+ assertThat(mHelper.hasChannelCacheBeenInvalidated()).isTrue();
// Do it again, but no change for this user
mHelper.resetCacheInvalidation();
mHelper.updateNotificationChannel(PKG_O, UID_O, p1u1New.copy(), true, UID_O, false);
- assertThat(mHelper.hasCacheBeenInvalidated()).isFalse();
+ assertThat(mHelper.hasChannelCacheBeenInvalidated()).isFalse();
// Delete conversations, but for a package without those conversations
mHelper.resetCacheInvalidation();
mHelper.deleteConversations(PKG_O, UID_O, Set.of(p2u1Conv.getConversationId()), UID_O,
false);
- assertThat(mHelper.hasCacheBeenInvalidated()).isFalse();
+ assertThat(mHelper.hasChannelCacheBeenInvalidated()).isFalse();
// Now delete conversations for the right package
mHelper.resetCacheInvalidation();
mHelper.deleteConversations(PKG_N_MR1, UID_N_MR1, Set.of(p2u1Conv.getConversationId()),
UID_N_MR1, false);
- assertThat(mHelper.hasCacheBeenInvalidated()).isTrue();
+ assertThat(mHelper.hasChannelCacheBeenInvalidated()).isTrue();
}
@Test
@@ -6790,7 +6805,8 @@ public class PreferencesHelperTest extends UiServiceTestCase {
// delete user 1; should invalidate cache
mHelper.onUserRemoved(1);
- assertThat(mHelper.hasCacheBeenInvalidated()).isTrue();
+ assertThat(mHelper.hasChannelCacheBeenInvalidated()).isTrue();
+ assertThat(mHelper.hasGroupCacheBeenInvalidated()).isTrue();
}
@Test
@@ -6805,32 +6821,39 @@ public class PreferencesHelperTest extends UiServiceTestCase {
mHelper.resetCacheInvalidation();
mHelper.onPackagesChanged(true, USER_SYSTEM, new String[]{PKG_N_MR1},
new int[]{UID_N_MR1});
- assertThat(mHelper.hasCacheBeenInvalidated()).isTrue();
+ assertThat(mHelper.hasChannelCacheBeenInvalidated()).isTrue();
+ assertThat(mHelper.hasGroupCacheBeenInvalidated()).isTrue();
- // re-created: expect cache invalidation again
+ // re-created: expect cache invalidation again, but only specifically for the channel cache,
+ // as creating package preferences wouldn't necessarily affect groups
mHelper.resetCacheInvalidation();
+ mHelper.onPackagesChanged(false, UID_N_MR1, new String[]{PKG_N_MR1},
+ new int[]{UID_N_MR1});
mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel1, true, false,
UID_N_MR1, false);
- mHelper.onPackagesChanged(false, USER_SYSTEM, new String[]{PKG_N_MR1},
- new int[]{UID_N_MR1});
- assertThat(mHelper.hasCacheBeenInvalidated()).isTrue();
+ assertThat(mHelper.hasChannelCacheBeenInvalidated()).isTrue();
}
@Test
@DisableFlags(android.app.Flags.FLAG_NM_BINDER_PERF_CACHE_CHANNELS)
- public void testInvalidateCache_flagOff_neverTouchesCache() {
+ public void testInvalidateCache_flagOff_neverTouchesCaches() {
// Do a bunch of channel-changing operations.
NotificationChannel channel =
new NotificationChannel("id", "name1", NotificationManager.IMPORTANCE_HIGH);
mHelper.createNotificationChannel(PKG_N_MR1, UID_N_MR1, channel, true, false,
UID_N_MR1, false);
+ // and also a group
+ NotificationChannelGroup ncg = new NotificationChannelGroup("1", "group1");
+ mHelper.createNotificationChannelGroup(PKG_O, UID_O, ncg, true, UID_O, false);
+
NotificationChannel copy = channel.copy();
copy.setName("name2");
mHelper.updateNotificationChannel(PKG_N_MR1, UID_N_MR1, copy, true, UID_N_MR1, false);
mHelper.deleteNotificationChannel(PKG_N_MR1, UID_N_MR1, "id", UID_N_MR1, false);
- assertThat(mHelper.hasCacheBeenInvalidated()).isFalse();
+ assertThat(mHelper.hasChannelCacheBeenInvalidated()).isFalse();
+ assertThat(mHelper.hasGroupCacheBeenInvalidated()).isFalse();
}
@Test
@@ -6841,11 +6864,113 @@ public class PreferencesHelperTest extends UiServiceTestCase {
assertThat(channels.getList().size()).isEqualTo(0);
}
+ @Test
+ @EnableFlags(android.app.Flags.FLAG_NM_BINDER_PERF_CACHE_CHANNELS)
+ public void testInvalidateGroupCache_onlyChannelsChanged() {
+ // Channels change, but groups don't change; we should invalidate the channel cache, but
+ // not the group cache.
+ NotificationChannelGroup ncg = new NotificationChannelGroup("1", "group1");
+ NotificationChannelGroup ncg2 = new NotificationChannelGroup("2", "group2");
+ mHelper.createNotificationChannelGroup(PKG_O, UID_O, ncg, true, UID_O, false);
+ mHelper.createNotificationChannelGroup(PKG_O, UID_O, ncg2, true, UID_O, false);
+
+ NotificationChannel channel = new NotificationChannel("id", "name", IMPORTANCE_DEFAULT);
+ channel.setGroup("1");
+ mHelper.createNotificationChannel(PKG_O, UID_O, channel, true, false,
+ UID_O, false);
+ mHelper.resetCacheInvalidation();
+
+ // change channel to group 2
+ NotificationChannel copy = channel.copy();
+ copy.setGroup("2");
+ mHelper.updateNotificationChannel(PKG_O, UID_O, copy, true, UID_O, false);
+
+ assertThat(mHelper.hasChannelCacheBeenInvalidated()).isTrue();
+ assertThat(mHelper.hasGroupCacheBeenInvalidated()).isFalse();
+ }
+
+ @Test
+ @EnableFlags(android.app.Flags.FLAG_NM_BINDER_PERF_CACHE_CHANNELS)
+ public void testInvalidateGroupCache_onlyGroupsChanged() {
+ // Group info changes, but the channels associated with the group do not
+ NotificationChannelGroup ncg = new NotificationChannelGroup("1", "group1");
+ NotificationChannelGroup ncg2 = new NotificationChannelGroup("2", "group2");
+ mHelper.createNotificationChannelGroup(PKG_O, UID_O, ncg, true, UID_O, false);
+ mHelper.createNotificationChannelGroup(PKG_O, UID_O, ncg2, true, UID_O, false);
+
+ NotificationChannel channel = new NotificationChannel("id", "name", IMPORTANCE_DEFAULT);
+ channel.setGroup("1");
+ mHelper.createNotificationChannel(PKG_O, UID_O, channel, true, false,
+ UID_O, false);
+ mHelper.resetCacheInvalidation();
+
+ NotificationChannelGroup copy = ncg2.clone();
+ copy.setDescription("hello world");
+ mHelper.createNotificationChannelGroup(PKG_O, UID_O, copy, true, UID_O, false);
+
+ assertThat(mHelper.hasChannelCacheBeenInvalidated()).isFalse();
+ assertThat(mHelper.hasGroupCacheBeenInvalidated()).isTrue();
+ }
+
+ @Test
+ @EnableFlags(android.app.Flags.FLAG_NM_BINDER_PERF_CACHE_CHANNELS)
+ public void testInvalidateGroupCache_groupUnchanged() {
+ NotificationChannelGroup ncg = new NotificationChannelGroup("1", "group1");
+ NotificationChannelGroup ncg2 = new NotificationChannelGroup("2", "group2");
+ mHelper.createNotificationChannelGroup(PKG_O, UID_O, ncg, true, UID_O, false);
+ mHelper.createNotificationChannelGroup(PKG_O, UID_O, ncg2, true, UID_O, false);
+
+ mHelper.resetCacheInvalidation();
+
+ NotificationChannelGroup copy = ncg.clone();
+ mHelper.createNotificationChannelGroup(PKG_O, UID_O, copy, true, UID_O, false);
+
+ assertThat(mHelper.hasGroupCacheBeenInvalidated()).isFalse();
+ }
+
+ @Test
+ @EnableFlags(android.app.Flags.FLAG_NM_BINDER_PERF_CACHE_CHANNELS)
+ public void testInvalidateGroupCache_deletedGroups() {
+ NotificationChannelGroup ncg = new NotificationChannelGroup("1", "group1");
+ NotificationChannelGroup ncg2 = new NotificationChannelGroup("2", "group2");
+ mHelper.createNotificationChannelGroup(PKG_O, UID_O, ncg, true, UID_O, false);
+ mHelper.createNotificationChannelGroup(PKG_O, UID_O, ncg2, true, UID_O, false);
+
+ NotificationChannel channel = new NotificationChannel("id", "name", IMPORTANCE_DEFAULT);
+ channel.setGroup("1");
+ mHelper.createNotificationChannel(PKG_O, UID_O, channel, true, false,
+ UID_O, false);
+ mHelper.resetCacheInvalidation();
+
+ // delete group 2: group cache should be cleared but not channel cache
+ // (doesn't change channel information)
+ mHelper.deleteNotificationChannelGroup(PKG_O, UID_O, "2", UID_O, false);
+ assertThat(mHelper.hasChannelCacheBeenInvalidated()).isFalse();
+ assertThat(mHelper.hasGroupCacheBeenInvalidated()).isTrue();
+
+ mHelper.resetCacheInvalidation();
+
+ // Now delete group 1: there is a channel associated, which will also be deleted
+ mHelper.deleteNotificationChannelGroup(PKG_O, UID_O, "1", UID_O, false);
+ assertThat(mHelper.hasChannelCacheBeenInvalidated()).isTrue();
+ assertThat(mHelper.hasGroupCacheBeenInvalidated()).isTrue();
+ }
+
+ private static String dumpToString(PreferencesHelper helper) {
+ StringWriter sw = new StringWriter();
+ try (PrintWriter pw = new PrintWriter(sw)) {
+ helper.dump(pw, "", new NotificationManagerService.DumpFilter(), null);
+ pw.flush();
+ return sw.toString();
+ }
+ }
+
// Test version of PreferencesHelper whose only functional difference is that it does not
// interact with the real IpcDataCache, and instead tracks whether or not the cache has been
// invalidated since creation or the last reset.
private static class TestPreferencesHelper extends PreferencesHelper {
- private boolean mCacheInvalidated = false;
+ private boolean mChannelCacheInvalidated = false;
+ private boolean mGroupCacheInvalidated = false;
TestPreferencesHelper(Context context, PackageManager pm, RankingHandler rankingHandler,
ZenModeHelper zenHelper, PermissionHelper permHelper, PermissionManager permManager,
@@ -6860,15 +6985,25 @@ public class PreferencesHelperTest extends UiServiceTestCase {
@Override
protected void invalidateNotificationChannelCache() {
- mCacheInvalidated = true;
+ mChannelCacheInvalidated = true;
+ }
+
+ @Override
+ protected void invalidateNotificationChannelGroupCache() {
+ mGroupCacheInvalidated = true;
+ }
+
+ boolean hasChannelCacheBeenInvalidated() {
+ return mChannelCacheInvalidated;
}
- boolean hasCacheBeenInvalidated() {
- return mCacheInvalidated;
+ boolean hasGroupCacheBeenInvalidated() {
+ return mGroupCacheInvalidated;
}
void resetCacheInvalidation() {
- mCacheInvalidated = false;
+ mChannelCacheInvalidated = false;
+ mGroupCacheInvalidated = false;
}
}
}
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java b/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java
index 82d87d40031a..31436c602e56 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java
@@ -47,14 +47,13 @@ import android.companion.ICompanionDeviceManager;
import android.content.Context;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
-import android.net.ConnectivityManager;
+import android.os.Handler;
import android.os.Looper;
import android.os.PowerManager;
import android.os.UserHandle;
import android.os.UserManager;
import android.permission.PermissionManager;
import android.telecom.TelecomManager;
-import android.telephony.TelephonyManager;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.testing.TestableLooper.RunWithLooper;
@@ -152,7 +151,7 @@ public class RoleObserverTest extends UiServiceTestCase {
try {
mService.init(mService.new WorkerHandler(mTestableLooper.getLooper()),
- mock(RankingHandler.class),
+ mock(RankingHandler.class), new Handler(mTestableLooper.getLooper()),
mock(IPackageManager.class), mock(PackageManager.class),
mock(LightsManager.class),
mock(NotificationListeners.class), mock(NotificationAssistants.class),
@@ -172,7 +171,6 @@ public class RoleObserverTest extends UiServiceTestCase {
mock(NotificationChannelLogger.class), new TestableFlagResolver(),
mock(PermissionManager.class),
mock(PowerManager.class),
- mock(ConnectivityManager.class),
new NotificationManagerService.PostNotificationTrackerFactory() {});
} catch (SecurityException e) {
if (!e.getMessage().contains("Permission Denial: not allowed to send broadcast")) {
diff --git a/services/tests/vibrator/src/com/android/server/vibrator/VibratorManagerServiceTest.java b/services/tests/vibrator/src/com/android/server/vibrator/VibratorManagerServiceTest.java
index 767c02bd268f..b248218b6cef 100644
--- a/services/tests/vibrator/src/com/android/server/vibrator/VibratorManagerServiceTest.java
+++ b/services/tests/vibrator/src/com/android/server/vibrator/VibratorManagerServiceTest.java
@@ -109,7 +109,7 @@ import com.android.internal.util.test.FakeSettingsProviderRule;
import com.android.server.LocalServices;
import com.android.server.companion.virtual.VirtualDeviceManagerInternal;
import com.android.server.pm.BackgroundUserSoundNotifier;
-import com.android.server.pm.UserManagerService;
+import com.android.server.pm.UserManagerInternal;
import com.android.server.vibrator.VibrationSession.Status;
import org.junit.After;
@@ -898,7 +898,7 @@ public class VibratorManagerServiceTest {
@Test
public void vibrate_thenFgUserRequestsMute_getsCancelled() throws Throwable {
- assumeTrue(UserManagerService.shouldShowNotificationForBackgroundUserSounds());
+ assumeTrue(UserManagerInternal.shouldShowNotificationForBackgroundUserSounds());
mockVibrators(1);
VibratorManagerService service = createSystemReadyService();
@@ -2760,7 +2760,7 @@ public class VibratorManagerServiceTest {
@Test
public void onExternalVibration_thenFgUserRequestsMute_doNotCancelVibration() throws Throwable {
- assumeTrue(UserManagerService.shouldShowNotificationForBackgroundUserSounds());
+ assumeTrue(UserManagerInternal.shouldShowNotificationForBackgroundUserSounds());
mockVibrators(1);
mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL);
VibratorManagerService service = createSystemReadyService();
diff --git a/services/tests/wmtests/src/com/android/server/policy/PhoneWindowManagerTests.java b/services/tests/wmtests/src/com/android/server/policy/PhoneWindowManagerTests.java
index c73ce23fe6b5..32a3b7f2c9cc 100644
--- a/services/tests/wmtests/src/com/android/server/policy/PhoneWindowManagerTests.java
+++ b/services/tests/wmtests/src/com/android/server/policy/PhoneWindowManagerTests.java
@@ -16,6 +16,7 @@
package com.android.server.policy;
+import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY;
import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER;
@@ -33,6 +34,8 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.spy;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.when;
+import static com.android.server.policy.PhoneWindowManager.EXTRA_TRIGGER_HUB;
+import static com.android.server.policy.PhoneWindowManager.SHORT_PRESS_POWER_HUB_OR_DREAM_OR_SLEEP;
import static com.google.common.truth.Truth.assertThat;
@@ -47,13 +50,20 @@ import android.app.ActivityManager;
import android.app.AppOpsManager;
import android.content.Context;
import android.hardware.input.InputManager;
+import android.os.Bundle;
import android.os.PowerManager;
+import android.os.PowerManagerInternal;
import android.platform.test.annotations.Presubmit;
import android.platform.test.flag.junit.SetFlagsRule;
+import android.provider.Settings;
+import android.service.dreams.DreamManagerInternal;
+import android.testing.TestableContext;
+import android.view.contentprotection.flags.Flags;
import androidx.test.filters.SmallTest;
-import com.android.server.LocalServices;
+import com.android.internal.util.test.LocalServiceKeeperRule;
+import com.android.server.input.InputManagerInternal;
import com.android.server.pm.UserManagerInternal;
import com.android.server.policy.keyguard.KeyguardServiceDelegate;
import com.android.server.statusbar.StatusBarManagerInternal;
@@ -66,6 +76,9 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
/**
* Test class for {@link PhoneWindowManager}.
@@ -76,28 +89,62 @@ import org.junit.Test;
@Presubmit
@SmallTest
public class PhoneWindowManagerTests {
-
@Rule
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+ @Rule
+ public LocalServiceKeeperRule mLocalServiceKeeperRule = new LocalServiceKeeperRule();
+
+ @Rule
+ public final TestableContext mContext = spy(
+ new TestableContext(getInstrumentation().getContext()));
+
PhoneWindowManager mPhoneWindowManager;
+ @Mock
private ActivityTaskManagerInternal mAtmInternal;
+ @Mock
+ private DreamManagerInternal mDreamManagerInternal;
+ @Mock
+ private InputManagerInternal mInputManagerInternal;
+ @Mock
+ private PowerManagerInternal mPowerManagerInternal;
+ @Mock
private StatusBarManagerInternal mStatusBarManagerInternal;
- private Context mContext;
+ @Mock
+ private UserManagerInternal mUserManagerInternal;
+
+ @Mock
+ private PowerManager mPowerManager;
+ @Mock
+ private DisplayPolicy mDisplayPolicy;
+ @Mock
+ private KeyguardServiceDelegate mKeyguardServiceDelegate;
@Before
public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ when(mContext.getSystemService(Context.POWER_SERVICE)).thenReturn(mPowerManager);
+
mPhoneWindowManager = spy(new PhoneWindowManager());
spyOn(ActivityManager.getService());
- mContext = getInstrumentation().getTargetContext();
- spyOn(mContext);
- mAtmInternal = mock(ActivityTaskManagerInternal.class);
- LocalServices.addService(ActivityTaskManagerInternal.class, mAtmInternal);
+
+ mLocalServiceKeeperRule.overrideLocalService(ActivityTaskManagerInternal.class,
+ mAtmInternal);
mPhoneWindowManager.mActivityTaskManagerInternal = mAtmInternal;
- LocalServices.addService(WindowManagerInternal.class, mock(WindowManagerInternal.class));
- mStatusBarManagerInternal = mock(StatusBarManagerInternal.class);
- LocalServices.addService(StatusBarManagerInternal.class, mStatusBarManagerInternal);
- mPhoneWindowManager.mKeyguardDelegate = mock(KeyguardServiceDelegate.class);
+ mLocalServiceKeeperRule.overrideLocalService(DreamManagerInternal.class,
+ mDreamManagerInternal);
+ mLocalServiceKeeperRule.overrideLocalService(InputManagerInternal.class,
+ mInputManagerInternal);
+ mLocalServiceKeeperRule.overrideLocalService(PowerManagerInternal.class,
+ mPowerManagerInternal);
+ mLocalServiceKeeperRule.overrideLocalService(StatusBarManagerInternal.class,
+ mStatusBarManagerInternal);
+ mLocalServiceKeeperRule.overrideLocalService(UserManagerInternal.class,
+ mUserManagerInternal);
+ mLocalServiceKeeperRule.overrideLocalService(WindowManagerInternal.class,
+ mock(WindowManagerInternal.class));
+
+ mPhoneWindowManager.mKeyguardDelegate = mKeyguardServiceDelegate;
final InputManager im = mock(InputManager.class);
doNothing().when(im).registerKeyGestureEventHandler(any());
doReturn(im).when(mContext).getSystemService(eq(Context.INPUT_SERVICE));
@@ -107,9 +154,6 @@ public class PhoneWindowManagerTests {
public void tearDown() {
reset(ActivityManager.getService());
reset(mContext);
- LocalServices.removeServiceForTest(ActivityTaskManagerInternal.class);
- LocalServices.removeServiceForTest(WindowManagerInternal.class);
- LocalServices.removeServiceForTest(StatusBarManagerInternal.class);
}
@Test
@@ -138,28 +182,20 @@ public class PhoneWindowManagerTests {
public void testScreenTurnedOff() {
doNothing().when(mPhoneWindowManager).updateSettings(any());
doNothing().when(mPhoneWindowManager).initializeHdmiState();
- final boolean[] isScreenTurnedOff = { false };
- final DisplayPolicy displayPolicy = mock(DisplayPolicy.class);
- doAnswer(invocation -> isScreenTurnedOff[0] = true).when(displayPolicy).screenTurnedOff(
+ final boolean[] isScreenTurnedOff = {false};
+ doAnswer(invocation -> isScreenTurnedOff[0] = true).when(mDisplayPolicy).screenTurnedOff(
anyBoolean());
- doAnswer(invocation -> !isScreenTurnedOff[0]).when(displayPolicy).isScreenOnEarly();
- doAnswer(invocation -> !isScreenTurnedOff[0]).when(displayPolicy).isScreenOnFully();
+ doAnswer(invocation -> !isScreenTurnedOff[0]).when(mDisplayPolicy).isScreenOnEarly();
+ doAnswer(invocation -> !isScreenTurnedOff[0]).when(mDisplayPolicy).isScreenOnFully();
- mPhoneWindowManager.mDefaultDisplayPolicy = displayPolicy;
- mPhoneWindowManager.mDefaultDisplayRotation = mock(DisplayRotation.class);
- final PowerManager pm = mock(PowerManager.class);
- doReturn(true).when(pm).isInteractive();
- doReturn(pm).when(mContext).getSystemService(eq(Context.POWER_SERVICE));
-
- mContext.getMainThreadHandler().runWithScissors(() -> mPhoneWindowManager.init(
- new PhoneWindowManager.Injector(mContext,
- mock(WindowManagerPolicy.WindowManagerFuncs.class))), 0);
+ when(mPowerManager.isInteractive()).thenReturn(true);
+ initPhoneWindowManager();
assertThat(isScreenTurnedOff[0]).isFalse();
assertThat(mPhoneWindowManager.mIsGoingToSleepDefaultDisplay).isFalse();
// Skip sleep-token for non-sleep-screen-off.
mPhoneWindowManager.screenTurnedOff(DEFAULT_DISPLAY, true /* isSwappingDisplay */);
- verify(displayPolicy).screenTurnedOff(false /* acquireSleepToken */);
+ verify(mDisplayPolicy).screenTurnedOff(false /* acquireSleepToken */);
assertThat(isScreenTurnedOff[0]).isTrue();
// Apply sleep-token for sleep-screen-off.
@@ -167,7 +203,7 @@ public class PhoneWindowManagerTests {
mPhoneWindowManager.startedGoingToSleep(DEFAULT_DISPLAY, 0 /* reason */);
assertThat(mPhoneWindowManager.mIsGoingToSleepDefaultDisplay).isTrue();
mPhoneWindowManager.screenTurnedOff(DEFAULT_DISPLAY, true /* isSwappingDisplay */);
- verify(displayPolicy).screenTurnedOff(true /* acquireSleepToken */);
+ verify(mDisplayPolicy).screenTurnedOff(true /* acquireSleepToken */);
mPhoneWindowManager.finishedGoingToSleep(DEFAULT_DISPLAY, 0 /* reason */);
assertThat(mPhoneWindowManager.mIsGoingToSleepDefaultDisplay).isFalse();
@@ -175,8 +211,7 @@ public class PhoneWindowManagerTests {
@Test
public void testCheckAddPermission_withoutAccessibilityOverlay_noAccessibilityAppOpLogged() {
- mSetFlagsRule.enableFlags(android.view.contentprotection.flags.Flags
- .FLAG_CREATE_ACCESSIBILITY_OVERLAY_APP_OP_ENABLED);
+ mSetFlagsRule.enableFlags(Flags.FLAG_CREATE_ACCESSIBILITY_OVERLAY_APP_OP_ENABLED);
int[] outAppOp = new int[1];
assertEquals(ADD_OKAY, mPhoneWindowManager.checkAddPermission(TYPE_WALLPAPER,
/* isRoundedCornerOverlay= */ false, "test.pkg", outAppOp, DEFAULT_DISPLAY));
@@ -185,8 +220,7 @@ public class PhoneWindowManagerTests {
@Test
public void testCheckAddPermission_withAccessibilityOverlay() {
- mSetFlagsRule.enableFlags(android.view.contentprotection.flags.Flags
- .FLAG_CREATE_ACCESSIBILITY_OVERLAY_APP_OP_ENABLED);
+ mSetFlagsRule.enableFlags(Flags.FLAG_CREATE_ACCESSIBILITY_OVERLAY_APP_OP_ENABLED);
int[] outAppOp = new int[1];
assertEquals(ADD_OKAY, mPhoneWindowManager.checkAddPermission(TYPE_ACCESSIBILITY_OVERLAY,
/* isRoundedCornerOverlay= */ false, "test.pkg", outAppOp, DEFAULT_DISPLAY));
@@ -195,8 +229,7 @@ public class PhoneWindowManagerTests {
@Test
public void testCheckAddPermission_withAccessibilityOverlay_flagDisabled() {
- mSetFlagsRule.disableFlags(android.view.contentprotection.flags.Flags
- .FLAG_CREATE_ACCESSIBILITY_OVERLAY_APP_OP_ENABLED);
+ mSetFlagsRule.disableFlags(Flags.FLAG_CREATE_ACCESSIBILITY_OVERLAY_APP_OP_ENABLED);
int[] outAppOp = new int[1];
assertEquals(ADD_OKAY, mPhoneWindowManager.checkAddPermission(TYPE_ACCESSIBILITY_OVERLAY,
/* isRoundedCornerOverlay= */ false, "test.pkg", outAppOp, DEFAULT_DISPLAY));
@@ -217,10 +250,107 @@ public class PhoneWindowManagerTests {
verify(mStatusBarManagerInternal, never()).dismissKeyboardShortcutsMenu();
}
+ @Test
+ public void powerPress_hubOrDreamOrSleep_goesToSleepFromDream() {
+ when(mDisplayPolicy.isAwake()).thenReturn(true);
+ initPhoneWindowManager();
+
+ // Set power button behavior.
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.POWER_BUTTON_SHORT_PRESS, SHORT_PRESS_POWER_HUB_OR_DREAM_OR_SLEEP);
+ mPhoneWindowManager.updateSettings(null);
+
+ // Device is dreaming.
+ when(mDreamManagerInternal.isDreaming()).thenReturn(true);
+
+ // Power button pressed.
+ int eventTime = 0;
+ mPhoneWindowManager.powerPress(eventTime, 1, 0);
+
+ // Device goes to sleep.
+ verify(mPowerManager).goToSleep(eventTime, PowerManager.GO_TO_SLEEP_REASON_POWER_BUTTON, 0);
+ }
+
+ @Test
+ public void powerPress_hubOrDreamOrSleep_hubAvailableLocks() {
+ when(mDisplayPolicy.isAwake()).thenReturn(true);
+ mContext.getTestablePermissions().setPermission(android.Manifest.permission.DEVICE_POWER,
+ PERMISSION_GRANTED);
+ initPhoneWindowManager();
+
+ // Set power button behavior.
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.POWER_BUTTON_SHORT_PRESS, SHORT_PRESS_POWER_HUB_OR_DREAM_OR_SLEEP);
+ mPhoneWindowManager.updateSettings(null);
+
+ // Set up hub prerequisites.
+ Settings.Secure.putInt(mContext.getContentResolver(),
+ Settings.Secure.GLANCEABLE_HUB_ENABLED, 1);
+ when(mUserManagerInternal.isUserUnlocked(any(Integer.class))).thenReturn(true);
+ when(mDreamManagerInternal.dreamConditionActive()).thenReturn(true);
+
+ // Power button pressed.
+ int eventTime = 0;
+ mPhoneWindowManager.powerPress(eventTime, 1, 0);
+
+ // Lock requested with the proper bundle options.
+ ArgumentCaptor<Bundle> bundleCaptor = ArgumentCaptor.forClass(Bundle.class);
+ verify(mPhoneWindowManager).lockNow(bundleCaptor.capture());
+ assertThat(bundleCaptor.getValue().getBoolean(EXTRA_TRIGGER_HUB)).isTrue();
+ }
+
+ @Test
+ public void powerPress_hubOrDreamOrSleep_hubNotAvailableDreams() {
+ when(mDisplayPolicy.isAwake()).thenReturn(true);
+ initPhoneWindowManager();
+
+ // Set power button behavior.
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.POWER_BUTTON_SHORT_PRESS, SHORT_PRESS_POWER_HUB_OR_DREAM_OR_SLEEP);
+ mPhoneWindowManager.updateSettings(null);
+
+ // Hub is not available.
+ Settings.Secure.putInt(mContext.getContentResolver(),
+ Settings.Secure.GLANCEABLE_HUB_ENABLED, 0);
+ when(mDreamManagerInternal.canStartDreaming(any(Boolean.class))).thenReturn(true);
+
+ // Power button pressed.
+ int eventTime = 0;
+ mPhoneWindowManager.powerPress(eventTime, 1, 0);
+
+ // Dream is requested.
+ verify(mDreamManagerInternal).requestDream();
+ }
+
+ private void initPhoneWindowManager() {
+ mPhoneWindowManager.mDefaultDisplayPolicy = mDisplayPolicy;
+ mPhoneWindowManager.mDefaultDisplayRotation = mock(DisplayRotation.class);
+ mContext.getMainThreadHandler().runWithScissors(() -> mPhoneWindowManager.init(
+ new TestInjector(mContext, mock(WindowManagerPolicy.WindowManagerFuncs.class))), 0);
+ }
+
private void mockStartDockOrHome() throws Exception {
doNothing().when(ActivityManager.getService()).stopAppSwitches();
when(mAtmInternal.startHomeOnDisplay(
anyInt(), anyString(), anyInt(), anyBoolean(), anyBoolean())).thenReturn(false);
mPhoneWindowManager.mUserManagerInternal = mock(UserManagerInternal.class);
}
+
+ private class TestInjector extends PhoneWindowManager.Injector {
+ TestInjector(Context context, WindowManagerPolicy.WindowManagerFuncs funcs) {
+ super(context, funcs);
+ }
+
+ KeyguardServiceDelegate getKeyguardServiceDelegate() {
+ return mKeyguardServiceDelegate;
+ }
+
+ /**
+ * {@code WindowWakeUpPolicy} registers a local service in its constructor, easier to just
+ * mock it out so we don't have to unregister it after every test.
+ */
+ WindowWakeUpPolicy getWindowWakeUpPolicy() {
+ return mock(WindowWakeUpPolicy.class);
+ }
+ }
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskSupervisorTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskSupervisorTests.java
index 70f57eb40385..3c74ad06a21f 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskSupervisorTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskSupervisorTests.java
@@ -19,6 +19,7 @@ package com.android.server.wm;
import static android.app.ActivityManager.START_DELIVERED_TO_TOP;
import static android.app.ActivityManager.START_TASK_TO_FRONT;
import static android.app.ITaskStackListener.FORCED_RESIZEABLE_REASON_SECONDARY_DISPLAY;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer;
@@ -44,20 +45,26 @@ import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.timeout;
+import android.annotation.NonNull;
import android.app.ActivityOptions;
import android.app.WaitResult;
+import android.app.WindowConfiguration;
import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.ActivityInfo;
+import android.graphics.Rect;
import android.os.Binder;
import android.os.ConditionVariable;
import android.os.IBinder;
import android.os.RemoteException;
+import android.platform.test.annotations.EnableFlags;
import android.platform.test.annotations.Presubmit;
import android.view.Display;
import androidx.test.filters.MediumTest;
+import com.android.window.flags.Flags;
+
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentMatchers;
@@ -424,4 +431,95 @@ public class ActivityTaskSupervisorTests extends WindowTestsBase {
assertThat(activity.mLaunchCookie).isNull();
verify(mAtm).moveTaskToFrontLocked(any(), eq(null), anyInt(), anyInt(), eq(safeOptions));
}
+
+ @Test
+ public void testOpaque_leafTask_occludingActivity_isOpaque() {
+ final ActivityRecord activity = new ActivityBuilder(mAtm).setCreateTask(true).build();
+ activity.setOccludesParent(true);
+ final TaskFragment tf = activity.getTaskFragment();
+
+ assertThat(mSupervisor.mOpaqueContainerHelper.isOpaque(tf)).isTrue();
+ }
+
+ @Test
+ public void testOpaque_leafTask_nonOccludingActivity_isTranslucent() {
+ final ActivityRecord activity = new ActivityBuilder(mAtm).setCreateTask(true).build();
+ activity.setOccludesParent(false);
+ final TaskFragment tf = activity.getTaskFragment();
+
+ assertThat(mSupervisor.mOpaqueContainerHelper.isOpaque(tf)).isFalse();
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ public void testOpaque_rootTask_translucentFillingChild_isTranslucent() {
+ final Task rootTask = new TaskBuilder(mSupervisor).setOnTop(true).build();
+ createChildTaskFragment(/* parent */ rootTask,
+ WINDOWING_MODE_FREEFORM, /* opaque */ false, /* filling */ true);
+
+ assertThat(mSupervisor.mOpaqueContainerHelper.isOpaque(rootTask)).isFalse();
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ public void testOpaque_rootTask_opaqueAndNotFillingChild_isTranslucent() {
+ final Task rootTask = new TaskBuilder(mSupervisor).setOnTop(true).build();
+ createChildTaskFragment(/* parent */ rootTask,
+ WINDOWING_MODE_FREEFORM, /* opaque */ true, /* filling */ false);
+
+ assertThat(mSupervisor.mOpaqueContainerHelper.isOpaque(rootTask)).isFalse();
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ public void testOpaque_rootTask_opaqueAndFillingChild_isOpaque() {
+ final Task rootTask = new TaskBuilder(mSupervisor).setOnTop(true).build();
+ createChildTaskFragment(/* parent */ rootTask,
+ WINDOWING_MODE_FREEFORM, /* opaque */ true, /* filling */ true);
+
+ assertThat(mSupervisor.mOpaqueContainerHelper.isOpaque(rootTask)).isTrue();
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND)
+ public void testOpaque_rootTask_nonFillingOpaqueAdjacentChildren_isOpaque() {
+ final Task rootTask = new TaskBuilder(mSupervisor).setOnTop(true).build();
+ final TaskFragment tf1 = createChildTaskFragment(/* parent */ rootTask,
+ WINDOWING_MODE_MULTI_WINDOW, /* opaque */ true, /* filling */ false);
+ final TaskFragment tf2 = createChildTaskFragment(/* parent */ rootTask,
+ WINDOWING_MODE_MULTI_WINDOW, /* opaque */ true, /* filling */ false);
+ tf1.setAdjacentTaskFragment(tf2);
+
+ assertThat(mSupervisor.mOpaqueContainerHelper.isOpaque(rootTask)).isTrue();
+ }
+
+ @Test
+ @EnableFlags({Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND,
+ Flags.FLAG_ALLOW_MULTIPLE_ADJACENT_TASK_FRAGMENTS})
+ public void testOpaque_rootTask_nonFillingOpaqueAdjacentChildren_multipleAdjacent_isOpaque() {
+ final Task rootTask = new TaskBuilder(mSupervisor).setOnTop(true).build();
+ final TaskFragment tf1 = createChildTaskFragment(/* parent */ rootTask,
+ WINDOWING_MODE_MULTI_WINDOW, /* opaque */ true, /* filling */ false);
+ final TaskFragment tf2 = createChildTaskFragment(/* parent */ rootTask,
+ WINDOWING_MODE_MULTI_WINDOW, /* opaque */ true, /* filling */ false);
+ final TaskFragment tf3 = createChildTaskFragment(/* parent */ rootTask,
+ WINDOWING_MODE_MULTI_WINDOW, /* opaque */ true, /* filling */ false);
+ tf1.setAdjacentTaskFragments(new TaskFragment.AdjacentSet(tf1, tf2, tf3));
+
+ assertThat(mSupervisor.mOpaqueContainerHelper.isOpaque(rootTask)).isTrue();
+ }
+
+ @NonNull
+ private TaskFragment createChildTaskFragment(@NonNull Task parent,
+ @WindowConfiguration.WindowingMode int windowingMode,
+ boolean opaque,
+ boolean filling) {
+ final ActivityRecord activity = new ActivityBuilder(mAtm)
+ .setCreateTask(true).setParentTask(parent).build();
+ activity.setOccludesParent(opaque);
+ final TaskFragment tf = activity.getTaskFragment();
+ tf.setWindowingMode(windowingMode);
+ tf.setBounds(filling ? new Rect() : new Rect(100, 100, 200, 200));
+ return tf;
+ }
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/AppChangeTransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/AppChangeTransitionTests.java
deleted file mode 100644
index 169968c75fc5..000000000000
--- a/services/tests/wmtests/src/com/android/server/wm/AppChangeTransitionTests.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.wm;
-
-import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
-import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
-import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
-import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
-import static android.view.WindowManager.TRANSIT_OLD_TASK_CHANGE_WINDOWING_MODE;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import android.os.IBinder;
-import android.platform.test.annotations.Presubmit;
-import android.view.Display;
-import android.view.IRemoteAnimationFinishedCallback;
-import android.view.IRemoteAnimationRunner;
-import android.view.RemoteAnimationAdapter;
-import android.view.RemoteAnimationDefinition;
-import android.view.RemoteAnimationTarget;
-import android.view.WindowManager;
-
-import androidx.test.filters.SmallTest;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-/**
- * Tests for change transitions
- *
- * Build/Install/Run:
- * atest WmTests:AppChangeTransitionTests
- */
-@SmallTest
-@Presubmit
-@RunWith(WindowTestRunner.class)
-public class AppChangeTransitionTests extends WindowTestsBase {
-
- private Task mTask;
- private ActivityRecord mActivity;
-
- public void setUpOnDisplay(DisplayContent dc) {
- mActivity = createActivityRecord(dc, WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_STANDARD);
- mTask = mActivity.getTask();
-
- // Set a remote animator with snapshot disabled. Snapshots don't work in wmtests.
- RemoteAnimationDefinition definition = new RemoteAnimationDefinition();
- RemoteAnimationAdapter adapter =
- new RemoteAnimationAdapter(new TestRemoteAnimationRunner(), 10, 1, false);
- definition.addRemoteAnimation(TRANSIT_OLD_TASK_CHANGE_WINDOWING_MODE, adapter);
- dc.registerRemoteAnimations(definition);
- }
-
- class TestRemoteAnimationRunner implements IRemoteAnimationRunner {
- @Override
- public void onAnimationStart(@WindowManager.TransitionOldType int transit,
- RemoteAnimationTarget[] apps,
- RemoteAnimationTarget[] wallpapers,
- RemoteAnimationTarget[] nonApps,
- IRemoteAnimationFinishedCallback finishedCallback) {
- for (RemoteAnimationTarget target : apps) {
- assertNotNull(target.startBounds);
- }
- try {
- finishedCallback.onAnimationFinished();
- } catch (Exception e) {
- throw new RuntimeException("Something went wrong");
- }
- }
-
- @Override
- public void onAnimationCancelled() {
- }
-
- @Override
- public IBinder asBinder() {
- return null;
- }
- }
-
- @Test
- public void testModeChangeRemoteAnimatorNoSnapshot() {
- // setup currently defaults to no snapshot.
- setUpOnDisplay(mDisplayContent);
-
- mTask.setWindowingMode(WINDOWING_MODE_FREEFORM);
- assertEquals(1, mDisplayContent.mChangingContainers.size());
-
- // Verify we are in a change transition, but without a snapshot.
- // Though, the test will actually have crashed by now if a snapshot is attempted.
- assertNull(mTask.mSurfaceFreezer.mSnapshot);
- assertTrue(mTask.isInChangeTransition());
-
- waitUntilHandlersIdle();
- mActivity.removeImmediately();
- }
-
- @Test
- public void testCancelPendingChangeOnRemove() {
- // setup currently defaults to no snapshot.
- setUpOnDisplay(mDisplayContent);
-
- mTask.setWindowingMode(WINDOWING_MODE_FREEFORM);
- assertEquals(1, mDisplayContent.mChangingContainers.size());
- assertTrue(mTask.isInChangeTransition());
-
- // Removing the app-token from the display should clean-up the
- // the change leash.
- mDisplayContent.removeAppToken(mActivity.token);
- assertEquals(0, mDisplayContent.mChangingContainers.size());
- assertFalse(mTask.isInChangeTransition());
-
- waitUntilHandlersIdle();
- mActivity.removeImmediately();
- }
-
- @Test
- public void testNoChangeOnOldDisplayWhenMoveDisplay() {
- mDisplayContent.getDefaultTaskDisplayArea().setWindowingMode(WINDOWING_MODE_FULLSCREEN);
- final DisplayContent dc1 = createNewDisplay(Display.STATE_ON);
- dc1.getDefaultTaskDisplayArea().setWindowingMode(WINDOWING_MODE_FREEFORM);
- setUpOnDisplay(dc1);
-
- assertEquals(WINDOWING_MODE_FREEFORM, mTask.getWindowingMode());
-
- // Reparenting to a display with different windowing mode may trigger
- // a change transition internally, but it should be cleaned-up once
- // the display change is complete.
- mTask.reparent(mDisplayContent.getDefaultTaskDisplayArea(), true);
-
- assertEquals(WINDOWING_MODE_FULLSCREEN, mTask.getWindowingMode());
-
- // Make sure the change transition is not the old display
- assertFalse(dc1.mChangingContainers.contains(mTask));
-
- waitUntilHandlersIdle();
- mActivity.removeImmediately();
- }
-
- @Test
- public void testCancelPendingChangeOnHide() {
- // setup currently defaults to no snapshot.
- setUpOnDisplay(mDisplayContent);
-
- mTask.setWindowingMode(WINDOWING_MODE_FREEFORM);
- assertEquals(1, mDisplayContent.mChangingContainers.size());
- assertTrue(mTask.isInChangeTransition());
-
- // Changing visibility should cancel the change transition and become closing
- mActivity.setVisibility(false);
- assertEquals(0, mDisplayContent.mChangingContainers.size());
- assertFalse(mTask.isInChangeTransition());
-
- waitUntilHandlersIdle();
- mActivity.removeImmediately();
- }
-}
diff --git a/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java
index 03d904283e83..8553fbd30ab8 100644
--- a/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java
@@ -409,7 +409,6 @@ public class AppTransitionTests extends WindowTestsBase {
task.getBounds(taskBounds);
taskFragment.setBounds(0, 0, taskBounds.right / 2, taskBounds.bottom);
spyOn(taskFragment);
- mockSurfaceFreezerSnapshot(taskFragment.mSurfaceFreezer);
assertTrue(mDc.mChangingContainers.isEmpty());
assertFalse(mDc.mAppTransition.isTransitionSet());
@@ -422,7 +421,6 @@ public class AppTransitionTests extends WindowTestsBase {
verify(taskFragment).initializeChangeTransition(activity.getBounds(), activityLeash);
assertTrue(mDc.mChangingContainers.contains(taskFragment));
assertTrue(mDc.mAppTransition.containsTransitRequest(TRANSIT_CHANGE));
- assertEquals(startBounds, taskFragment.mSurfaceFreezer.mFreezeBounds);
}
@Test
diff --git a/services/tests/wmtests/src/com/android/server/wm/BackgroundActivityStartControllerExemptionTests.java b/services/tests/wmtests/src/com/android/server/wm/BackgroundActivityStartControllerExemptionTests.java
index da010ae3c96a..c934c55dfb8e 100644
--- a/services/tests/wmtests/src/com/android/server/wm/BackgroundActivityStartControllerExemptionTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/BackgroundActivityStartControllerExemptionTests.java
@@ -907,7 +907,6 @@ public class BackgroundActivityStartControllerExemptionTests {
int realCallingUid = REGULAR_UID_2;
int realCallingPid = REGULAR_PID_2;
- mDeviceConfig.set("system_exempt_from_activity_bg_start_restriction_enabled", "true");
AppOpsManager appOpsManager = mock(AppOpsManager.class);
when(mService.getAppOpsManager()).thenReturn(appOpsManager);
when(appOpsManager.checkOpNoThrow(eq(
diff --git a/services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java b/services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java
index 716f86418bcb..560725241853 100644
--- a/services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java
@@ -158,7 +158,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
public void testIsCameraRunningAndWindowingModeEligible_notFreeformWindowing_returnsFalse() {
configureActivity(SCREEN_ORIENTATION_PORTRAIT, WINDOWING_MODE_FULLSCREEN);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
assertFalse(mCameraCompatFreeformPolicy.isCameraRunningAndWindowingModeEligible(mActivity));
}
@@ -169,7 +169,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
public void testIsCameraRunningAndWindowingModeEligible_optInFreeformCameraRunning_true() {
configureActivity(SCREEN_ORIENTATION_PORTRAIT);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
assertTrue(mCameraCompatFreeformPolicy.isCameraRunningAndWindowingModeEligible(mActivity));
}
@@ -179,7 +179,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
public void testIsFreeformLetterboxingForCameraAllowed_overrideDisabled_returnsFalse() {
configureActivity(SCREEN_ORIENTATION_PORTRAIT);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
assertFalse(mCameraCompatFreeformPolicy.isFreeformLetterboxingForCameraAllowed(mActivity));
}
@@ -199,7 +199,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
public void testIsFreeformLetterboxingForCameraAllowed_notFreeformWindowing_returnsFalse() {
configureActivity(SCREEN_ORIENTATION_PORTRAIT, WINDOWING_MODE_FULLSCREEN);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
assertFalse(mCameraCompatFreeformPolicy.isFreeformLetterboxingForCameraAllowed(mActivity));
}
@@ -210,7 +210,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
public void testIsFreeformLetterboxingForCameraAllowed_optInFreeformCameraRunning_true() {
configureActivity(SCREEN_ORIENTATION_PORTRAIT);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
assertTrue(mCameraCompatFreeformPolicy.isFreeformLetterboxingForCameraAllowed(mActivity));
}
@@ -222,7 +222,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
configureActivity(SCREEN_ORIENTATION_PORTRAIT, WINDOWING_MODE_FULLSCREEN);
doReturn(false).when(mActivity).inFreeformWindowingMode();
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
assertNotInCameraCompatMode();
}
@@ -250,7 +250,8 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
public void testCameraConnected_deviceInPortrait_portraitCameraCompatMode() throws Exception {
configureActivity(SCREEN_ORIENTATION_PORTRAIT);
setDisplayRotation(ROTATION_0);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
assertInCameraCompatMode(CAMERA_COMPAT_FREEFORM_PORTRAIT_DEVICE_IN_PORTRAIT);
assertActivityRefreshRequested(/* refreshRequested */ false);
@@ -262,7 +263,8 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
public void testCameraConnected_deviceInLandscape_portraitCameraCompatMode() throws Exception {
configureActivity(SCREEN_ORIENTATION_PORTRAIT);
setDisplayRotation(ROTATION_270);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
assertInCameraCompatMode(CAMERA_COMPAT_FREEFORM_PORTRAIT_DEVICE_IN_LANDSCAPE);
assertActivityRefreshRequested(/* refreshRequested */ false);
@@ -274,7 +276,8 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
public void testCameraConnected_deviceInPortrait_landscapeCameraCompatMode() throws Exception {
configureActivity(SCREEN_ORIENTATION_LANDSCAPE);
setDisplayRotation(ROTATION_0);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
assertInCameraCompatMode(CAMERA_COMPAT_FREEFORM_LANDSCAPE_DEVICE_IN_PORTRAIT);
assertActivityRefreshRequested(/* refreshRequested */ false);
@@ -286,7 +289,8 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
public void testCameraConnected_deviceInLandscape_landscapeCameraCompatMode() throws Exception {
configureActivity(SCREEN_ORIENTATION_LANDSCAPE);
setDisplayRotation(ROTATION_270);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
assertInCameraCompatMode(CAMERA_COMPAT_FREEFORM_LANDSCAPE_DEVICE_IN_LANDSCAPE);
assertActivityRefreshRequested(/* refreshRequested */ false);
@@ -299,12 +303,12 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
configureActivity(SCREEN_ORIENTATION_PORTRAIT);
setDisplayRotation(ROTATION_270);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
callOnActivityConfigurationChanging(mActivity, /* letterboxNew= */ true,
/* lastLetterbox= */ false);
assertActivityRefreshRequested(/* refreshRequested */ true);
- mCameraAvailabilityCallback.onCameraClosed(CAMERA_ID_1);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraClosed(CAMERA_ID_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
// Activity is letterboxed from the previous configuration change.
callOnActivityConfigurationChanging(mActivity, /* letterboxNew= */ true,
/* lastLetterbox= */ true);
@@ -319,7 +323,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
public void testCameraOpenedForDifferentPackage_notInCameraCompatMode() {
configureActivity(SCREEN_ORIENTATION_PORTRAIT);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_2);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_2);
assertNotInCameraCompatMode();
}
@@ -329,7 +333,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
public void testShouldApplyCameraCompatFreeformTreatment_overrideNotEnabled_returnsFalse() {
configureActivity(SCREEN_ORIENTATION_PORTRAIT);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
assertFalse(mCameraCompatFreeformPolicy.isTreatmentEnabledForActivity(mActivity,
/* checkOrientation */ true));
@@ -341,7 +345,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
public void testShouldApplyCameraCompatFreeformTreatment_enabledByOverride_returnsTrue() {
configureActivity(SCREEN_ORIENTATION_PORTRAIT);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
assertTrue(mActivity.info
.isChangeEnabled(OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT));
@@ -356,7 +360,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
configureActivity(SCREEN_ORIENTATION_PORTRAIT);
Configuration oldConfiguration = createConfiguration(/* letterbox= */ false);
Configuration newConfiguration = createConfiguration(/* letterbox= */ true);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
assertTrue(mCameraCompatFreeformPolicy.shouldRefreshActivity(mActivity, newConfiguration,
oldConfiguration));
@@ -372,7 +376,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
oldConfiguration.windowConfiguration.setDisplayRotation(0);
newConfiguration.windowConfiguration.setDisplayRotation(90);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
assertTrue(mCameraCompatFreeformPolicy.shouldRefreshActivity(mActivity, newConfiguration,
oldConfiguration));
@@ -388,7 +392,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
oldConfiguration.windowConfiguration.setDisplayRotation(0);
newConfiguration.windowConfiguration.setDisplayRotation(0);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
assertFalse(mCameraCompatFreeformPolicy.shouldRefreshActivity(mActivity, newConfiguration,
oldConfiguration));
@@ -404,7 +408,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
doReturn(false).when(mActivity.mAppCompatController.getCameraOverrides())
.shouldRefreshActivityForCameraCompat();
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
callOnActivityConfigurationChanging(mActivity);
assertActivityRefreshRequested(/* refreshRequested */ false);
@@ -419,7 +423,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
configureActivity(SCREEN_ORIENTATION_PORTRAIT);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
callOnActivityConfigurationChanging(mActivity);
assertActivityRefreshRequested(/* refreshRequested */ true, /* cycleThroughStop */ false);
@@ -434,7 +438,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
doReturn(true).when(mActivity.mAppCompatController.getCameraOverrides())
.shouldRefreshActivityViaPauseForCameraCompat();
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
callOnActivityConfigurationChanging(mActivity);
assertActivityRefreshRequested(/* refreshRequested */ true, /* cycleThroughStop */ false);
@@ -446,7 +450,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
public void testGetCameraCompatAspectRatio_activityNotInCameraCompat_returnsDefaultAspRatio() {
configureActivity(SCREEN_ORIENTATION_FULL_USER);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
callOnActivityConfigurationChanging(mActivity);
assertEquals(MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO,
@@ -462,7 +466,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
final float configAspectRatio = 1.5f;
mWm.mAppCompatConfiguration.setCameraCompatAspectRatio(configAspectRatio);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
callOnActivityConfigurationChanging(mActivity);
assertEquals(configAspectRatio,
@@ -480,7 +484,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
doReturn(true).when(mActivity.mAppCompatController.getCameraOverrides())
.isOverrideMinAspectRatioForCameraEnabled();
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
callOnActivityConfigurationChanging(mActivity);
assertEquals(MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO,
@@ -496,7 +500,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
configureActivity(SCREEN_ORIENTATION_PORTRAIT);
setDisplayRotation(ROTATION_270);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
// This is a portrait rotation for a device with portrait natural orientation (most common,
// currently the only one supported).
@@ -511,7 +515,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
configureActivity(SCREEN_ORIENTATION_LANDSCAPE);
setDisplayRotation(ROTATION_0);
- mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
+ onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1);
// This is a landscape rotation for a device with portrait natural orientation (most common,
// currently the only one supported).
@@ -616,6 +620,16 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
.inFreeformWindowingMode();
}
+ private void onCameraOpened(@NonNull String cameraId, @NonNull String packageName) {
+ mCameraAvailabilityCallback.onCameraOpened(cameraId, packageName);
+ waitHandlerIdle(mDisplayContent.mWmService.mH);
+ }
+
+ private void onCameraClosed(@NonNull String cameraId) {
+ mCameraAvailabilityCallback.onCameraClosed(cameraId);
+ waitHandlerIdle(mDisplayContent.mWmService.mH);
+ }
+
private void assertInCameraCompatMode(@CameraCompatTaskInfo.FreeformCameraCompatMode int mode) {
assertEquals(mode, mCameraCompatFreeformPolicy.getCameraCompatMode(mActivity));
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java b/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java
index cdb51fc1c645..fdde3b38f19f 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java
@@ -1345,7 +1345,7 @@ public class DesktopModeLaunchParamsModifierTests extends
private void setupDesktopModeLaunchParamsModifier(boolean isDesktopModeSupported,
boolean enforceDeviceRestrictions) {
doReturn(isDesktopModeSupported)
- .when(() -> DesktopModeHelper.isDesktopModeSupported(any()));
+ .when(() -> DesktopModeHelper.isDeviceEligibleForDesktopMode(any()));
doReturn(enforceDeviceRestrictions)
.when(DesktopModeHelper::shouldEnforceDeviceRestrictions);
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/DeviceStateAutoRotateSettingControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/DeviceStateAutoRotateSettingControllerTests.java
new file mode 100644
index 000000000000..0ddce72e950c
--- /dev/null
+++ b/services/tests/wmtests/src/com/android/server/wm/DeviceStateAutoRotateSettingControllerTests.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm;
+
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.annotations.Presubmit;
+import android.platform.test.flag.junit.SetFlagsRule;
+import android.provider.Settings;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.server.testutils.OffsettableClock;
+import com.android.server.testutils.TestHandler;
+import com.android.window.flags.Flags;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+/**
+ * Test class for {@link DeviceStateAutoRotateSettingController}.
+ *
+ * <p>Build/Install/Run: atest WmTests:DeviceStateAutoRotateSettingControllerTests
+ */
+@SmallTest
+@Presubmit
+public class DeviceStateAutoRotateSettingControllerTests {
+ private static final OffsettableClock sClock = new OffsettableClock.Stopped();
+
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
+ private DeviceStateAutoRotateSettingController mDeviceStateAutoRotateSettingController;
+ @Mock
+ private DeviceStateAutoRotateSettingIssueLogger mMockLogger;
+ @Mock
+ private Context mMockContext;
+ @Mock
+ private ContentResolver mMockContentResolver;
+ @Captor
+ private ArgumentCaptor<ContentObserver> mContentObserverCaptor;
+
+ @Before
+ public void setup() {
+ MockitoAnnotations.initMocks(this);
+ when(mMockContext.getContentResolver()).thenReturn(mMockContentResolver);
+ mDeviceStateAutoRotateSettingController = new DeviceStateAutoRotateSettingController(
+ mMockContext, mMockLogger, new TestHandler(null, sClock));
+ verify(mMockContentResolver)
+ .registerContentObserver(
+ eq(Settings.Secure.getUriFor(Settings.Secure.DEVICE_STATE_ROTATION_LOCK)),
+ anyBoolean(),
+ mContentObserverCaptor.capture());
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_DEVICE_STATE_AUTO_ROTATE_SETTING_LOGGING)
+ public void loggingFlagEnabled_onDeviceStateChanged_loggerNotified() {
+ mDeviceStateAutoRotateSettingController.onDeviceStateChange(
+ DeviceStateController.DeviceState.FOLDED);
+
+ verify(mMockLogger, times(1)).onDeviceStateChange();
+ }
+
+ @Test
+ @DisableFlags(Flags.FLAG_ENABLE_DEVICE_STATE_AUTO_ROTATE_SETTING_LOGGING)
+ public void loggingFlagDisabled_onDeviceStateChanged_loggerNotNotified() {
+ mDeviceStateAutoRotateSettingController.onDeviceStateChange(
+ DeviceStateController.DeviceState.FOLDED);
+
+ verify(mMockLogger, never()).onDeviceStateChange();
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_DEVICE_STATE_AUTO_ROTATE_SETTING_LOGGING)
+ public void loggingFlagEnabled_settingChanged_loggerNotified() {
+ mContentObserverCaptor.getValue().onChange(false);
+
+ verify(mMockLogger, times(1)).onDeviceStateAutoRotateSettingChange();
+ }
+
+ @Test
+ @DisableFlags(Flags.FLAG_ENABLE_DEVICE_STATE_AUTO_ROTATE_SETTING_LOGGING)
+ public void loggingFlagDisabled_settingChanged_loggerNotNotified() {
+ mContentObserverCaptor.getValue().onChange(false);
+
+ verify(mMockLogger, never()).onDeviceStateAutoRotateSettingChange();
+ }
+}
diff --git a/services/tests/wmtests/src/com/android/server/wm/DeviceStateAutoRotateSettingIssueLoggerTests.java b/services/tests/wmtests/src/com/android/server/wm/DeviceStateAutoRotateSettingIssueLoggerTests.java
new file mode 100644
index 000000000000..f76a9cdbb894
--- /dev/null
+++ b/services/tests/wmtests/src/com/android/server/wm/DeviceStateAutoRotateSettingIssueLoggerTests.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm;
+
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
+import static com.android.server.wm.DeviceStateAutoRotateSettingIssueLogger.DEVICE_STATE_AUTO_ROTATE_SETTING_ISSUE_THRESHOLD_MILLIS;
+
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.never;
+
+import android.platform.test.annotations.Presubmit;
+
+import androidx.annotation.NonNull;
+import androidx.test.filters.SmallTest;
+
+import com.android.dx.mockito.inline.extended.StaticMockitoSession;
+import com.android.internal.util.FrameworkStatsLog;
+import com.android.server.wm.utils.CurrentTimeMillisSupplierFake;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+
+/**
+ * Test class for {@link DeviceStateAutoRotateSettingIssueLogger}.
+ *
+ * <p>Build/Install/Run: atest WmTests:DeviceStateAutoRotateSettingIssueLoggerTests
+ */
+@SmallTest
+@Presubmit
+public class DeviceStateAutoRotateSettingIssueLoggerTests {
+ private static final int DELAY = 500;
+
+ private DeviceStateAutoRotateSettingIssueLogger mDeviceStateAutoRotateSettingIssueLogger;
+ private StaticMockitoSession mStaticMockitoSession;
+ @NonNull
+ private CurrentTimeMillisSupplierFake mTestTimeSupplier;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mStaticMockitoSession = mockitoSession().mockStatic(
+ FrameworkStatsLog.class).startMocking();
+ mTestTimeSupplier = new CurrentTimeMillisSupplierFake();
+ mDeviceStateAutoRotateSettingIssueLogger =
+ new DeviceStateAutoRotateSettingIssueLogger(mTestTimeSupplier);
+ }
+
+ @After
+ public void teardown() {
+ mStaticMockitoSession.finishMocking();
+ }
+
+ @Test
+ public void onStateChange_deviceStateChangedFirst_isDeviceStateFirstTrue() {
+ mDeviceStateAutoRotateSettingIssueLogger.onDeviceStateChange();
+ mTestTimeSupplier.delay(DELAY);
+ mDeviceStateAutoRotateSettingIssueLogger.onDeviceStateAutoRotateSettingChange();
+
+ verify(() ->
+ FrameworkStatsLog.write(
+ eq(FrameworkStatsLog.DEVICE_STATE_AUTO_ROTATE_SETTING_ISSUE_REPORTED),
+ anyInt(),
+ eq(true)));
+ }
+
+ @Test
+ public void onStateChange_autoRotateSettingChangedFirst_isDeviceStateFirstFalse() {
+ mDeviceStateAutoRotateSettingIssueLogger.onDeviceStateAutoRotateSettingChange();
+ mTestTimeSupplier.delay(DELAY);
+ mDeviceStateAutoRotateSettingIssueLogger.onDeviceStateChange();
+
+ verify(() ->
+ FrameworkStatsLog.write(
+ eq(FrameworkStatsLog.DEVICE_STATE_AUTO_ROTATE_SETTING_ISSUE_REPORTED),
+ anyInt(),
+ eq(false)));
+ }
+
+ @Test
+ public void onStateChange_deviceStateDidNotChange_doNotReport() {
+ mDeviceStateAutoRotateSettingIssueLogger.onDeviceStateAutoRotateSettingChange();
+
+ verify(() ->
+ FrameworkStatsLog.write(
+ eq(FrameworkStatsLog.DEVICE_STATE_AUTO_ROTATE_SETTING_ISSUE_REPORTED),
+ anyInt(),
+ anyBoolean()), never());
+ }
+
+ @Test
+ public void onStateChange_autoRotateSettingDidNotChange_doNotReport() {
+ mDeviceStateAutoRotateSettingIssueLogger.onDeviceStateChange();
+
+ verify(() ->
+ FrameworkStatsLog.write(
+ eq(FrameworkStatsLog.DEVICE_STATE_AUTO_ROTATE_SETTING_ISSUE_REPORTED),
+ anyInt(),
+ anyBoolean()), never());
+ }
+
+ @Test
+ public void onStateChange_issueOccurred_correctDurationReported() {
+ mDeviceStateAutoRotateSettingIssueLogger.onDeviceStateChange();
+ mTestTimeSupplier.delay(DELAY);
+ mDeviceStateAutoRotateSettingIssueLogger.onDeviceStateAutoRotateSettingChange();
+
+ verify(() ->
+ FrameworkStatsLog.write(
+ eq(FrameworkStatsLog.DEVICE_STATE_AUTO_ROTATE_SETTING_ISSUE_REPORTED),
+ eq(DELAY),
+ anyBoolean()));
+ }
+
+ @Test
+ public void onStateChange_durationLongerThanThreshold_doNotReport() {
+ mDeviceStateAutoRotateSettingIssueLogger.onDeviceStateChange();
+ mTestTimeSupplier.delay(
+ DEVICE_STATE_AUTO_ROTATE_SETTING_ISSUE_THRESHOLD_MILLIS + DELAY);
+ mDeviceStateAutoRotateSettingIssueLogger.onDeviceStateAutoRotateSettingChange();
+
+ verify(() ->
+ FrameworkStatsLog.write(
+ eq(FrameworkStatsLog.DEVICE_STATE_AUTO_ROTATE_SETTING_ISSUE_REPORTED),
+ anyInt(),
+ anyBoolean()), never());
+ }
+}
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaOrganizerTest.java b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaOrganizerTest.java
index d2f0385131d5..7f94c0e982e2 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaOrganizerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaOrganizerTest.java
@@ -223,9 +223,10 @@ public class DisplayAreaOrganizerTest extends WindowTestsBase {
mOrganizerController.deleteTaskDisplayArea(newTda.mRemoteToken.toWindowContainerToken());
- verify(newTda).remove();
+ verify(newTda).prepareForRemoval();
verify(newTda).removeImmediately();
assertThat(newTda.mOrganizer).isNull();
+ assertThat(newTda.shouldKeepNoTask()).isTrue();
assertThat(newTda.isRemoved()).isTrue();
final TaskDisplayArea curTda = mDisplayContent.getItemFromDisplayAreas(
@@ -248,9 +249,10 @@ public class DisplayAreaOrganizerTest extends WindowTestsBase {
mOrganizerController.unregisterOrganizer(organizer);
- verify(newTda).remove();
+ verify(newTda).prepareForRemoval();
verify(newTda).removeImmediately();
assertThat(newTda.mOrganizer).isNull();
+ assertThat(newTda.shouldKeepNoTask()).isTrue();
assertThat(newTda.isRemoved()).isTrue();
final TaskDisplayArea curTda = mDisplayContent.getItemFromDisplayAreas(
diff --git a/services/tests/wmtests/src/com/android/server/wm/LaunchParamsControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/LaunchParamsControllerTests.java
index 5265b442c968..67a95de8a5c1 100644
--- a/services/tests/wmtests/src/com/android/server/wm/LaunchParamsControllerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/LaunchParamsControllerTests.java
@@ -39,6 +39,7 @@ import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier.
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
+import android.annotation.NonNull;
import android.app.ActivityOptions;
import android.content.ComponentName;
import android.content.pm.ActivityInfo.WindowLayout;
@@ -293,7 +294,7 @@ public class LaunchParamsControllerTests extends WindowTestsBase {
final int beforeWindowMode = task.getWindowingMode();
assertNotEquals(windowingMode, beforeWindowMode);
- mController.layoutTask(task, null /* windowLayout */);
+ layoutTask(task);
final int afterWindowMode = task.getWindowingMode();
assertEquals(afterWindowMode, beforeWindowMode);
@@ -317,7 +318,7 @@ public class LaunchParamsControllerTests extends WindowTestsBase {
assertNotEquals(expected, task.getBounds());
- mController.layoutTask(task, null /* windowLayout */);
+ layoutTask(task);
// Task will make adjustments to requested bounds. We only need to guarantee that the
// reuqested bounds are expected.
@@ -342,7 +343,7 @@ public class LaunchParamsControllerTests extends WindowTestsBase {
assertNotEquals(expected, task.getBounds());
- mController.layoutTask(task, null /* windowLayout */);
+ layoutTask(task);
assertEquals(expected, task.getRequestedOverrideBounds());
}
@@ -365,7 +366,7 @@ public class LaunchParamsControllerTests extends WindowTestsBase {
assertNotEquals(expected, task.getBounds());
- mController.layoutTask(task, null /* windowLayout */);
+ layoutTask(task);
assertNotEquals(expected, task.getBounds());
assertEquals(expected, task.mLastNonFullscreenBounds);
@@ -467,4 +468,9 @@ public class LaunchParamsControllerTests extends WindowTestsBase {
private TestDisplayContent createNewDisplayContent() {
return addNewDisplayContentAt(DisplayContent.POSITION_TOP);
}
+
+ private void layoutTask(@NonNull Task task) {
+ mController.layoutTask(task, null /* layout */, null /* activity */, null /* source */,
+ null /* options */);
+ }
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
index c3aa2894997d..dba463a436c0 100644
--- a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
@@ -4461,46 +4461,7 @@ public class SizeCompatTests extends WindowTestsBase {
// are aligned to the top of the parentAppBounds
assertEquals(new Rect(0, notchHeight, 1000, 1200), appBounds);
assertEquals(new Rect(0, 0, 1000, 1200), bounds);
- }
-
- @Test
- @DisableCompatChanges({ActivityInfo.INSETS_DECOUPLED_CONFIGURATION_ENFORCED})
- public void testInFreeform_boundsSandboxedToAppBounds() {
- final int dw = 2800;
- final int dh = 1400;
- final int notchHeight = 100;
- final DisplayContent display = new TestDisplayContent.Builder(mAtm, dw, dh)
- .setNotch(notchHeight)
- .build();
- setUpApp(display);
- prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
- mTask.mDisplayContent.getDefaultTaskDisplayArea()
- .setWindowingMode(WindowConfiguration.WINDOWING_MODE_FREEFORM);
- mTask.setWindowingMode(WINDOWING_MODE_FREEFORM);
- Rect appBounds = new Rect(0, 0, 1000, 500);
- Rect bounds = new Rect(0, 0, 1000, 600);
- mTask.getWindowConfiguration().setAppBounds(appBounds);
- mTask.getWindowConfiguration().setBounds(bounds);
- mActivity.onConfigurationChanged(mTask.getConfiguration());
-
- // Bounds are sandboxed to appBounds in freeform.
- assertDownScaled();
- assertEquals(mActivity.getWindowConfiguration().getAppBounds(),
- mActivity.getWindowConfiguration().getBounds());
-
- // Exit freeform.
- mTask.mDisplayContent.getDefaultTaskDisplayArea()
- .setWindowingMode(WindowConfiguration.WINDOWING_MODE_FULLSCREEN);
- mTask.setWindowingMode(WINDOWING_MODE_FULLSCREEN);
- mTask.getWindowConfiguration().setBounds(new Rect(0, 0, dw, dh));
- mActivity.onConfigurationChanged(mTask.getConfiguration());
- assertFitted();
- appBounds = mActivity.getWindowConfiguration().getAppBounds();
- bounds = mActivity.getWindowConfiguration().getBounds();
- // Bounds are not sandboxed to appBounds.
- assertNotEquals(appBounds, bounds);
- assertEquals(notchHeight, appBounds.top - bounds.top);
}
@Test
diff --git a/services/tests/wmtests/src/com/android/server/wm/SplashScreenExceptionListTest.java b/services/tests/wmtests/src/com/android/server/wm/SplashScreenExceptionListTest.java
index 2ea5dc4d7700..727cd86e2e16 100644
--- a/services/tests/wmtests/src/com/android/server/wm/SplashScreenExceptionListTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/SplashScreenExceptionListTest.java
@@ -71,7 +71,8 @@ public class SplashScreenExceptionListTest {
@Before
public void setUp() throws Exception {
mInitialWindowManagerProperties = DeviceConfig.getProperties(
- DeviceConfig.NAMESPACE_WINDOW_MANAGER);
+ DeviceConfig.NAMESPACE_WINDOW_MANAGER,
+ KEY_SPLASH_SCREEN_EXCEPTION_LIST);
clearConstrainDisplayApisFlags();
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java
index f795d93b2487..986532ce5897 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java
@@ -550,10 +550,11 @@ public class TaskDisplayAreaTests extends WindowTestsBase {
@Test
@UseTestDisplay
- public void testRemove_reparentToDefault() {
+ public void testPrepareForRemoval_reparentToDefault() {
final Task task = createTask(mDisplayContent);
final TaskDisplayArea displayArea = task.getDisplayArea();
- displayArea.remove();
+ displayArea.prepareForRemoval();
+ assertTrue(displayArea.shouldKeepNoTask());
assertTrue(displayArea.isRemoved());
assertFalse(displayArea.hasChild());
@@ -565,11 +566,12 @@ public class TaskDisplayAreaTests extends WindowTestsBase {
@Test
@UseTestDisplay
- public void testRemove_rootTaskCreatedByOrganizer() {
+ public void testPrepareForRemoval_rootTaskCreatedByOrganizer() {
final Task task = createTask(mDisplayContent);
task.mCreatedByOrganizer = true;
final TaskDisplayArea displayArea = task.getDisplayArea();
- displayArea.remove();
+ displayArea.prepareForRemoval();
+ assertTrue(displayArea.shouldKeepNoTask());
assertTrue(displayArea.isRemoved());
assertFalse(displayArea.hasChild());
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java
index 0d9772492e59..7ab55bf7e874 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java
@@ -45,6 +45,9 @@ import static com.android.server.wm.TaskFragment.EMBEDDED_DIM_AREA_PARENT_TASK;
import static com.android.server.wm.TaskFragment.EMBEDDED_DIM_AREA_TASK_FRAGMENT;
import static com.android.server.wm.TaskFragment.EMBEDDING_DISALLOWED_MIN_DIMENSION_VIOLATION;
import static com.android.server.wm.TaskFragment.EMBEDDING_DISALLOWED_UNTRUSTED_HOST;
+import static com.android.server.wm.TaskFragment.TASK_FRAGMENT_VISIBILITY_INVISIBLE;
+import static com.android.server.wm.TaskFragment.TASK_FRAGMENT_VISIBILITY_VISIBLE;
+import static com.android.server.wm.TaskFragment.TASK_FRAGMENT_VISIBILITY_VISIBLE_BEHIND_TRANSLUCENT;
import static com.android.server.wm.WindowContainer.POSITION_TOP;
import static org.junit.Assert.assertEquals;
@@ -152,7 +155,6 @@ public class TaskFragmentTest extends WindowTestsBase {
ACTIVITY_TYPE_STANDARD);
task.setBoundsUnchecked(new Rect(0, 0, 1000, 1000));
mTaskFragment = createTaskFragmentWithEmbeddedActivity(task, mOrganizer);
- mockSurfaceFreezerSnapshot(mTaskFragment.mSurfaceFreezer);
final Rect startBounds = new Rect(0, 0, 500, 1000);
final Rect endBounds = new Rect(500, 0, 1000, 1000);
mTaskFragment.setRelativeEmbeddedBounds(startBounds);
@@ -179,44 +181,6 @@ public class TaskFragmentTest extends WindowTestsBase {
}
@Test
- public void testStartChangeTransition_resetSurface() {
- final Task task = createTask(mDisplayContent, WINDOWING_MODE_MULTI_WINDOW,
- ACTIVITY_TYPE_STANDARD);
- task.setBoundsUnchecked(new Rect(0, 0, 1000, 1000));
- mTaskFragment = createTaskFragmentWithEmbeddedActivity(task, mOrganizer);
- doReturn(mTransaction).when(mTaskFragment).getSyncTransaction();
- doReturn(mTransaction).when(mTaskFragment).getPendingTransaction();
- mLeash = mTaskFragment.getSurfaceControl();
- mockSurfaceFreezerSnapshot(mTaskFragment.mSurfaceFreezer);
- final Rect startBounds = new Rect(0, 0, 1000, 1000);
- final Rect endBounds = new Rect(500, 500, 1000, 1000);
- mTaskFragment.setRelativeEmbeddedBounds(startBounds);
- mTaskFragment.recomputeConfiguration();
- doReturn(true).when(mTaskFragment).isVisible();
- doReturn(true).when(mTaskFragment).isVisibleRequested();
-
- clearInvocations(mTransaction);
- final Rect relStartBounds = new Rect(mTaskFragment.getRelativeEmbeddedBounds());
- mTaskFragment.deferOrganizedTaskFragmentSurfaceUpdate();
- mTaskFragment.setRelativeEmbeddedBounds(endBounds);
- mTaskFragment.recomputeConfiguration();
- assertTrue(mTaskFragment.shouldStartChangeTransition(startBounds, relStartBounds));
- mTaskFragment.initializeChangeTransition(startBounds);
- mTaskFragment.continueOrganizedTaskFragmentSurfaceUpdate();
-
- // Surface reset when prepare transition.
- verify(mTransaction).setPosition(mLeash, 0, 0);
- verify(mTransaction).setWindowCrop(mLeash, 0, 0);
-
- clearInvocations(mTransaction);
- mTaskFragment.mSurfaceFreezer.unfreeze(mTransaction);
-
- // Update surface after animation.
- verify(mTransaction).setPosition(mLeash, 500, 500);
- verify(mTransaction).setWindowCrop(mLeash, 500, 500);
- }
-
- @Test
public void testStartChangeTransition_doNotFreezeWhenOnlyMoved() {
final Rect startBounds = new Rect(0, 0, 1000, 1000);
final Rect endBounds = new Rect(startBounds);
@@ -235,7 +199,6 @@ public class TaskFragmentTest extends WindowTestsBase {
@Test
public void testNotOkToAnimate_doNotStartChangeTransition() {
- mockSurfaceFreezerSnapshot(mTaskFragment.mSurfaceFreezer);
final Rect startBounds = new Rect(0, 0, 1000, 1000);
final Rect endBounds = new Rect(500, 500, 1000, 1000);
mTaskFragment.setRelativeEmbeddedBounds(startBounds);
@@ -295,6 +258,74 @@ public class TaskFragmentTest extends WindowTestsBase {
}
@Test
+ public void testVisibilityBehindOpaqueTaskFragment_withTranslucentTaskFragmentInTask() {
+ final Task topTask = createTask(mDisplayContent);
+ final Rect top = new Rect();
+ final Rect bottom = new Rect();
+ topTask.getBounds().splitVertically(top, bottom);
+
+ final TaskFragment taskFragmentA = createTaskFragmentWithActivity(topTask);
+ final TaskFragment taskFragmentB = createTaskFragmentWithActivity(topTask);
+ final TaskFragment taskFragmentC = createTaskFragmentWithActivity(topTask);
+
+ // B and C split the task window. A is behind B. C is translucent.
+ taskFragmentA.setBounds(top);
+ taskFragmentB.setBounds(top);
+ taskFragmentC.setBounds(bottom);
+ taskFragmentA.setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
+ taskFragmentB.setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
+ taskFragmentC.setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
+ taskFragmentB.setAdjacentTaskFragments(
+ new TaskFragment.AdjacentSet(taskFragmentB, taskFragmentC));
+ doReturn(true).when(taskFragmentC).isTranslucent(any());
+
+ // Ensure the activity below is visible
+ topTask.ensureActivitiesVisible(null /* starting */);
+
+ // B and C should be visible. A should be invisible.
+ assertEquals(TASK_FRAGMENT_VISIBILITY_INVISIBLE,
+ taskFragmentA.getVisibility(null /* starting */));
+ assertEquals(TASK_FRAGMENT_VISIBILITY_VISIBLE,
+ taskFragmentB.getVisibility(null /* starting */));
+ assertEquals(TASK_FRAGMENT_VISIBILITY_VISIBLE,
+ taskFragmentC.getVisibility(null /* starting */));
+ }
+
+ @Test
+ public void testVisibilityBehindTranslucentTaskFragment() {
+ final Task topTask = createTask(mDisplayContent);
+ final Rect top = new Rect();
+ final Rect bottom = new Rect();
+ topTask.getBounds().splitVertically(top, bottom);
+
+ final TaskFragment taskFragmentA = createTaskFragmentWithActivity(topTask);
+ final TaskFragment taskFragmentB = createTaskFragmentWithActivity(topTask);
+ final TaskFragment taskFragmentC = createTaskFragmentWithActivity(topTask);
+
+ // B and C split the task window. A is behind B. B is translucent.
+ taskFragmentA.setBounds(top);
+ taskFragmentB.setBounds(top);
+ taskFragmentC.setBounds(bottom);
+ taskFragmentA.setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
+ taskFragmentB.setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
+ taskFragmentC.setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
+ taskFragmentB.setAdjacentTaskFragments(
+ new TaskFragment.AdjacentSet(taskFragmentB, taskFragmentC));
+ doReturn(true).when(taskFragmentB).isTranslucent(any());
+
+ // Ensure the activity below is visible
+ topTask.ensureActivitiesVisible(null /* starting */);
+
+ // A, B and C should be visible.
+ assertEquals(TASK_FRAGMENT_VISIBILITY_VISIBLE,
+ taskFragmentC.getVisibility(null /* starting */));
+ assertEquals(TASK_FRAGMENT_VISIBILITY_VISIBLE,
+ taskFragmentB.getVisibility(null /* starting */));
+ assertEquals(TASK_FRAGMENT_VISIBILITY_VISIBLE_BEHIND_TRANSLUCENT,
+ taskFragmentA.getVisibility(null /* starting */));
+ }
+
+ @Test
public void testFindTopNonFinishingActivity_ignoresLaunchedFromBubbleActivities() {
final ActivityOptions opts = ActivityOptions.makeBasic();
opts.setTaskAlwaysOnTop(true);
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java
index cc447a18758c..001446550304 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java
@@ -32,7 +32,6 @@ import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;
import static android.view.WindowManager.TRANSIT_CLOSE;
import static android.view.WindowManager.TRANSIT_OLD_TASK_CLOSE;
-import static android.view.WindowManager.TRANSIT_OLD_TASK_FRAGMENT_CHANGE;
import static android.view.WindowManager.TRANSIT_OLD_TASK_OPEN;
import static android.view.WindowManager.TRANSIT_OPEN;
import static android.window.DisplayAreaOrganizer.FEATURE_DEFAULT_TASK_CONTAINER;
@@ -64,7 +63,6 @@ import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -1014,30 +1012,6 @@ public class WindowContainerTests extends WindowTestsBase {
}
@Test
- public void testOnDisplayChanged_cleanupChanging() {
- final Task task = createTask(mDisplayContent);
- addLocalInsets(task);
- spyOn(task.mSurfaceFreezer);
- mDisplayContent.mChangingContainers.add(task);
-
- // Don't remove the changing transition of this window when it is still the old display.
- // This happens on display info changed.
- task.onDisplayChanged(mDisplayContent);
-
- assertTrue(task.mLocalInsetsSources.size() == 1);
- assertTrue(mDisplayContent.mChangingContainers.contains(task));
- verify(task.mSurfaceFreezer, never()).unfreeze(any());
-
- // Remove the changing transition of this window when it is moved or reparented from the old
- // display.
- final DisplayContent newDc = createNewDisplay();
- task.onDisplayChanged(newDc);
-
- assertFalse(mDisplayContent.mChangingContainers.contains(task));
- verify(task.mSurfaceFreezer).unfreeze(any());
- }
-
- @Test
public void testHandleCompleteDeferredRemoval() {
final DisplayContent displayContent = createNewDisplay();
// Do not reparent activity to default display when removing the display.
@@ -1290,157 +1264,17 @@ public class WindowContainerTests extends WindowTestsBase {
final WindowContainer container = new WindowContainer(mWm);
container.mSurfaceControl = mock(SurfaceControl.class);
final SurfaceAnimator surfaceAnimator = container.mSurfaceAnimator;
- final SurfaceFreezer surfaceFreezer = container.mSurfaceFreezer;
final SurfaceControl relativeParent = mock(SurfaceControl.class);
final SurfaceControl.Transaction t = mock(SurfaceControl.Transaction.class);
spyOn(container);
spyOn(surfaceAnimator);
- spyOn(surfaceFreezer);
doReturn(t).when(container).getSyncTransaction();
container.setLayer(t, 1);
container.setRelativeLayer(t, relativeParent, 2);
- // Set through surfaceAnimator if surfaceFreezer doesn't have leash.
verify(surfaceAnimator).setLayer(t, 1);
verify(surfaceAnimator).setRelativeLayer(t, relativeParent, 2);
- verify(surfaceFreezer, never()).setLayer(any(), anyInt());
- verify(surfaceFreezer, never()).setRelativeLayer(any(), any(), anyInt());
-
- clearInvocations(surfaceAnimator);
- clearInvocations(surfaceFreezer);
- doReturn(true).when(surfaceFreezer).hasLeash();
-
- container.setLayer(t, 1);
- container.setRelativeLayer(t, relativeParent, 2);
-
- // Set through surfaceFreezer if surfaceFreezer has leash.
- verify(surfaceFreezer).setLayer(t, 1);
- verify(surfaceFreezer).setRelativeLayer(t, relativeParent, 2);
- verify(surfaceAnimator, never()).setLayer(any(), anyInt());
- verify(surfaceAnimator, never()).setRelativeLayer(any(), any(), anyInt());
- }
-
- @Test
- public void testStartChangeTransitionWhenPreviousIsNotFinished() {
- final WindowContainer container = createTaskFragmentWithActivity(
- createTask(mDisplayContent));
- container.mSurfaceControl = mock(SurfaceControl.class);
- final SurfaceAnimator surfaceAnimator = container.mSurfaceAnimator;
- final SurfaceFreezer surfaceFreezer = container.mSurfaceFreezer;
- final SurfaceControl.Transaction t = mock(SurfaceControl.Transaction.class);
- spyOn(container);
- spyOn(surfaceAnimator);
- mockSurfaceFreezerSnapshot(surfaceFreezer);
- doReturn(t).when(container).getPendingTransaction();
- doReturn(t).when(container).getSyncTransaction();
-
- // Leash and snapshot created for change transition.
- container.initializeChangeTransition(new Rect(0, 0, 1000, 2000));
-
- assertNotNull(surfaceFreezer.mLeash);
- assertNotNull(surfaceFreezer.mSnapshot);
- assertEquals(surfaceFreezer.mLeash, container.getAnimationLeash());
-
- // Start animation: surfaceAnimator take over the leash and snapshot from surfaceFreezer.
- container.applyAnimationUnchecked(null /* lp */, true /* enter */,
- TRANSIT_OLD_TASK_FRAGMENT_CHANGE, false /* isVoiceInteraction */,
- null /* sources */);
-
- assertNull(surfaceFreezer.mLeash);
- assertNull(surfaceFreezer.mSnapshot);
- assertNotNull(surfaceAnimator.mLeash);
- assertNotNull(surfaceAnimator.mSnapshot);
- final SurfaceControl prevLeash = surfaceAnimator.mLeash;
- final SurfaceFreezer.Snapshot prevSnapshot = surfaceAnimator.mSnapshot;
-
- // Prepare another change transition.
- container.initializeChangeTransition(new Rect(0, 0, 1000, 2000));
-
- assertNotNull(surfaceFreezer.mLeash);
- assertNotNull(surfaceFreezer.mSnapshot);
- assertEquals(surfaceFreezer.mLeash, container.getAnimationLeash());
- assertNotEquals(prevLeash, container.getAnimationLeash());
-
- // Start another animation before the previous one is finished, it should reset the previous
- // one, but not change the current one.
- container.applyAnimationUnchecked(null /* lp */, true /* enter */,
- TRANSIT_OLD_TASK_FRAGMENT_CHANGE, false /* isVoiceInteraction */,
- null /* sources */);
-
- verify(container, never()).onAnimationLeashLost(any());
- verify(surfaceFreezer, never()).unfreeze(any());
- assertNotNull(surfaceAnimator.mLeash);
- assertNotNull(surfaceAnimator.mSnapshot);
- assertEquals(surfaceAnimator.mLeash, container.getAnimationLeash());
- assertNotEquals(prevLeash, surfaceAnimator.mLeash);
- assertNotEquals(prevSnapshot, surfaceAnimator.mSnapshot);
-
- // Clean up after animation finished.
- surfaceAnimator.mInnerAnimationFinishedCallback.onAnimationFinished(
- ANIMATION_TYPE_APP_TRANSITION, surfaceAnimator.getAnimation());
-
- verify(container).onAnimationLeashLost(any());
- assertNull(surfaceAnimator.mLeash);
- assertNull(surfaceAnimator.mSnapshot);
- }
-
- @Test
- public void testUnfreezeWindow_removeWindowFromChanging() {
- final WindowContainer container = createTaskFragmentWithActivity(
- createTask(mDisplayContent));
- mockSurfaceFreezerSnapshot(container.mSurfaceFreezer);
- final SurfaceControl.Transaction t = mock(SurfaceControl.Transaction.class);
-
- container.initializeChangeTransition(new Rect(0, 0, 1000, 2000));
-
- assertTrue(mDisplayContent.mChangingContainers.contains(container));
-
- container.mSurfaceFreezer.unfreeze(t);
-
- assertFalse(mDisplayContent.mChangingContainers.contains(container));
- }
-
- @Test
- public void testFailToTaskSnapshot_unfreezeWindow() {
- final WindowContainer container = createTaskFragmentWithActivity(
- createTask(mDisplayContent));
- final SurfaceControl.Transaction t = mock(SurfaceControl.Transaction.class);
- spyOn(container.mSurfaceFreezer);
-
- container.initializeChangeTransition(new Rect(0, 0, 1000, 2000));
-
- verify(container.mSurfaceFreezer).freeze(any(), any(), any(), any());
- verify(container.mSurfaceFreezer).unfreeze(any());
- assertTrue(mDisplayContent.mChangingContainers.isEmpty());
- }
-
- @Test
- public void testRemoveUnstartedFreezeSurfaceWhenFreezeAgain() {
- final WindowContainer container = createTaskFragmentWithActivity(
- createTask(mDisplayContent));
- container.mSurfaceControl = mock(SurfaceControl.class);
- final SurfaceFreezer surfaceFreezer = container.mSurfaceFreezer;
- mockSurfaceFreezerSnapshot(surfaceFreezer);
- final SurfaceControl.Transaction t = mock(SurfaceControl.Transaction.class);
- spyOn(container);
- doReturn(t).when(container).getPendingTransaction();
- doReturn(t).when(container).getSyncTransaction();
-
- // Leash and snapshot created for change transition.
- container.initializeChangeTransition(new Rect(0, 0, 1000, 2000));
-
- assertNotNull(surfaceFreezer.mLeash);
- assertNotNull(surfaceFreezer.mSnapshot);
-
- final SurfaceControl prevLeash = surfaceFreezer.mLeash;
- final SurfaceFreezer.Snapshot prevSnapshot = surfaceFreezer.mSnapshot;
- spyOn(prevSnapshot);
-
- container.initializeChangeTransition(new Rect(0, 0, 1500, 2500));
-
- verify(t).remove(prevLeash);
- verify(prevSnapshot).destroy(t);
}
@Test
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTransactionTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTransactionTests.java
index 369600c3f8d7..dcb68620e361 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTransactionTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTransactionTests.java
@@ -18,20 +18,30 @@ package com.android.server.wm;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
+import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_APP_COMPAT_REACHABILITY;
+import static android.window.WindowContainerTransaction.HierarchyOp.LAUNCH_KEY_TASK_ID;
+import static android.window.WindowContainerTransaction.HierarchyOp.REACHABILITY_EVENT_X;
+import static android.window.WindowContainerTransaction.HierarchyOp.REACHABILITY_EVENT_Y;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.times;
import android.content.Intent;
+import android.os.Binder;
+import android.os.Bundle;
import android.platform.test.annotations.Presubmit;
import android.window.WindowContainerToken;
import android.window.WindowContainerTransaction;
+import android.window.WindowContainerTransaction.HierarchyOp;
import androidx.annotation.NonNull;
import androidx.test.filters.SmallTest;
@@ -223,6 +233,31 @@ public class WindowContainerTransactionTests extends WindowTestsBase {
< tda.mChildren.indexOf(desktopOrganizer.mTasks.get(2).getRootTask()));
}
+ @Test
+ public void testAppCompat_setReachabilityOffsets() {
+ final Task task = createTask(/* taskId */ 37);
+ final WindowContainerToken containerToken = task.getTaskInfo().token;
+ spyOn(containerToken);
+ final Binder asBinder = new Binder();
+ doReturn(asBinder).when(containerToken).asBinder();
+ final WindowContainerTransaction wct = new WindowContainerTransaction();
+ wct.setReachabilityOffset(containerToken, /* taskId */ task.mTaskId, 10, 20);
+
+ final List<HierarchyOp> hierarchyOps = wct.getHierarchyOps().stream()
+ .filter(op -> op.getType() == HIERARCHY_OP_TYPE_APP_COMPAT_REACHABILITY)
+ .toList();
+
+ assertEquals(1, hierarchyOps.size());
+ final HierarchyOp appCompatOp = hierarchyOps.getFirst();
+ assertNotNull(appCompatOp);
+ final Bundle appCompatOptions = appCompatOp.getAppCompatOptions();
+
+ assertEquals(task.mTaskId, appCompatOptions.getInt(LAUNCH_KEY_TASK_ID));
+ assertEquals(10, appCompatOptions.getInt(REACHABILITY_EVENT_X));
+ assertEquals(20, appCompatOptions.getInt(REACHABILITY_EVENT_Y));
+ assertSame(asBinder, appCompatOp.getContainer());
+ }
+
private Task createTask(int taskId) {
return new Task.Builder(mAtm)
.setTaskId(taskId)
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java
index be79160c3a09..1323d8a59cef 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java
@@ -26,6 +26,7 @@ import static android.permission.flags.Flags.FLAG_SENSITIVE_CONTENT_RECENTS_SCRE
import static android.permission.flags.Flags.FLAG_SENSITIVE_NOTIFICATION_APP_PROTECTION;
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.Display.FLAG_OWN_FOCUS;
+import static android.view.Display.FLAG_PRESENTATION;
import static android.view.Display.INVALID_DISPLAY;
import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
import static android.view.WindowManager.LayoutParams.FLAG_SECURE;
@@ -36,6 +37,7 @@ import static android.view.WindowManager.LayoutParams.INVALID_WINDOW_TYPE;
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;
import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD;
import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG;
@@ -53,6 +55,7 @@ import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_
import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING;
import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_SOLID_COLOR;
import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_WALLPAPER;
+import static com.android.window.flags.Flags.FLAG_ENABLE_PRESENTATION_FOR_CONNECTED_DISPLAYS;
import static com.google.common.truth.Truth.assertThat;
@@ -99,6 +102,7 @@ import android.provider.Settings;
import android.util.ArraySet;
import android.util.MergedConfiguration;
import android.view.ContentRecordingSession;
+import android.view.DisplayInfo;
import android.view.IWindow;
import android.view.InputChannel;
import android.view.InputDevice;
@@ -1405,6 +1409,38 @@ public class WindowManagerServiceTests extends WindowTestsBase {
assertEquals(activityWindowInfo2, activityWindowInfo3);
}
+ @EnableFlags(FLAG_ENABLE_PRESENTATION_FOR_CONNECTED_DISPLAYS)
+ @Test
+ public void testPresentationHidesActivitiesBehind() {
+ DisplayInfo displayInfo = new DisplayInfo();
+ displayInfo.copyFrom(mDisplayInfo);
+ displayInfo.flags = FLAG_PRESENTATION;
+ DisplayContent dc = createNewDisplay(displayInfo);
+ int displayId = dc.getDisplayId();
+ doReturn(dc).when(mWm.mRoot).getDisplayContentOrCreate(displayId);
+ ActivityRecord activity = createActivityRecord(createTask(dc));
+ assertTrue(activity.isVisible());
+
+ doReturn(true).when(() -> UserManager.isVisibleBackgroundUsersEnabled());
+ int uid = 100000; // uid for non-system user
+ Session session = createTestSession(mAtm, 1234 /* pid */, uid);
+ int userId = UserHandle.getUserId(uid);
+ doReturn(false).when(mWm.mUmInternal).isUserVisible(eq(userId), eq(displayId));
+ WindowManager.LayoutParams params = new WindowManager.LayoutParams(
+ LayoutParams.TYPE_PRESENTATION);
+
+ final IWindow clientWindow = new TestIWindow();
+ int result = mWm.addWindow(session, clientWindow, params, View.VISIBLE, displayId,
+ userId, WindowInsets.Type.defaultVisible(), null, new InsetsState(),
+ new InsetsSourceControl.Array(), new Rect(), new float[1]);
+ assertTrue(result >= WindowManagerGlobal.ADD_OKAY);
+ assertFalse(activity.isVisible());
+
+ final WindowState window = mWm.windowForClientLocked(session, clientWindow, false);
+ window.removeImmediately();
+ assertTrue(activity.isVisible());
+ }
+
@Test
public void testAddOverlayWindowToUnassignedDisplay_notAllowed_ForVisibleBackgroundUsers() {
doReturn(true).when(() -> UserManager.isVisibleBackgroundUsersEnabled());
@@ -1436,6 +1472,52 @@ public class WindowManagerServiceTests extends WindowTestsBase {
}
@Test
+ @EnableFlags(Flags.FLAG_FIX_HIDE_OVERLAY_API)
+ public void testUpdateOverlayWindows_singleWindowRequestsHiding_doNotHideOverlayWithSameUid() {
+ WindowState overlayWindow = newWindowBuilder("overlay_window",
+ TYPE_APPLICATION_OVERLAY).build();
+ WindowState appWindow = newWindowBuilder("app_window", TYPE_APPLICATION).build();
+ makeWindowVisible(appWindow, overlayWindow);
+
+ int uid = 100000;
+ spyOn(appWindow);
+ spyOn(overlayWindow);
+ doReturn(true).when(appWindow).hideNonSystemOverlayWindowsWhenVisible();
+ doReturn(uid).when(appWindow).getOwningUid();
+ doReturn(uid).when(overlayWindow).getOwningUid();
+
+ mWm.updateNonSystemOverlayWindowsVisibilityIfNeeded(appWindow, true);
+
+ verify(overlayWindow).setForceHideNonSystemOverlayWindowIfNeeded(false);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_FIX_HIDE_OVERLAY_API)
+ public void testUpdateOverlayWindows_multipleWindowsRequestHiding_hideOverlaysWithAnyUids() {
+ WindowState overlayWindow = newWindowBuilder("overlay_window",
+ TYPE_APPLICATION_OVERLAY).build();
+ WindowState appWindow1 = newWindowBuilder("app_window_1", TYPE_APPLICATION).build();
+ WindowState appWindow2 = newWindowBuilder("app_window_2", TYPE_APPLICATION).build();
+ makeWindowVisible(appWindow1, appWindow2, overlayWindow);
+
+ int uid1 = 100000;
+ int uid2 = 100001;
+ spyOn(appWindow1);
+ spyOn(appWindow2);
+ spyOn(overlayWindow);
+ doReturn(true).when(appWindow1).hideNonSystemOverlayWindowsWhenVisible();
+ doReturn(true).when(appWindow2).hideNonSystemOverlayWindowsWhenVisible();
+ doReturn(uid1).when(appWindow1).getOwningUid();
+ doReturn(uid1).when(overlayWindow).getOwningUid();
+ doReturn(uid2).when(appWindow2).getOwningUid();
+
+ mWm.updateNonSystemOverlayWindowsVisibilityIfNeeded(appWindow1, true);
+ mWm.updateNonSystemOverlayWindowsVisibilityIfNeeded(appWindow2, true);
+
+ verify(overlayWindow).setForceHideNonSystemOverlayWindowIfNeeded(true);
+ }
+
+ @Test
@EnableFlags(Flags.FLAG_REPARENT_WINDOW_TOKEN_API)
public void reparentWindowContextToDisplayArea_newDisplay_reparented() {
final WindowToken windowToken = createTestClientWindowToken(TYPE_NOTIFICATION_SHADE,
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
index 2c390c504e9f..b16f5283d532 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
@@ -78,7 +78,6 @@ import android.content.pm.ApplicationInfo;
import android.content.res.Configuration;
import android.graphics.Insets;
import android.graphics.Rect;
-import android.hardware.HardwareBuffer;
import android.hardware.display.DisplayManager;
import android.os.Binder;
import android.os.Build;
@@ -113,7 +112,6 @@ import android.window.ActivityWindowInfo;
import android.window.ClientWindowFrames;
import android.window.ITaskFragmentOrganizer;
import android.window.ITransitionPlayer;
-import android.window.ScreenCapture;
import android.window.StartingWindowInfo;
import android.window.StartingWindowRemovalInfo;
import android.window.TaskFragmentOrganizer;
@@ -1112,21 +1110,6 @@ public class WindowTestsBase extends SystemServiceTestsBase {
displayContent -> displayContent.mMinSizeOfResizeableTaskDp = 1);
}
- /** Mocks the behavior of taking a snapshot. */
- void mockSurfaceFreezerSnapshot(SurfaceFreezer surfaceFreezer) {
- final ScreenCapture.ScreenshotHardwareBuffer screenshotBuffer =
- mock(ScreenCapture.ScreenshotHardwareBuffer.class);
- final HardwareBuffer hardwareBuffer = mock(HardwareBuffer.class);
- spyOn(surfaceFreezer);
- doReturn(screenshotBuffer).when(surfaceFreezer)
- .createSnapshotBufferInner(any(), any());
- doReturn(null).when(surfaceFreezer)
- .createFromHardwareBufferInner(any());
- doReturn(hardwareBuffer).when(screenshotBuffer).getHardwareBuffer();
- doReturn(100).when(hardwareBuffer).getWidth();
- doReturn(100).when(hardwareBuffer).getHeight();
- }
-
static ComponentName getUniqueComponentName() {
return getUniqueComponentName(DEFAULT_COMPONENT_PACKAGE_NAME);
}
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
index 7e7a53148603..cd1c48554be9 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
@@ -2747,8 +2747,7 @@ public class VoiceInteractionManagerService extends SystemService {
isManagedProfileVisible = true;
}
}
- final ScreenCapture.ScreenshotHardwareBuffer shb =
- mWmInternal.takeAssistScreenshot(/* windowTypesToExclude= */ Set.of());
+ final ScreenCapture.ScreenshotHardwareBuffer shb = mWmInternal.takeAssistScreenshot();
final Bitmap bm = shb != null ? shb.asBitmap() : null;
// Now that everything is fetched, putting it in the launchIntent.
if (bm != null) {
diff --git a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
index 4d9df4666016..6fb3bcb51d35 100644
--- a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
+++ b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
@@ -416,4 +416,9 @@ interface ITelecomService {
boolean hasForegroundServiceDelegation(in PhoneAccountHandle phoneAccountHandle,
String callingPackage);
void setMetricsTestMode(boolean enabled);
+
+ /**
+ * @see TelecomServiceImpl#waitForAudioToUpdate
+ */
+ void waitForAudioToUpdate(boolean expectActive);
}
diff --git a/telephony/java/android/telephony/SubscriptionInfo.java b/telephony/java/android/telephony/SubscriptionInfo.java
index d164c8851f5b..4b175c134d84 100644
--- a/telephony/java/android/telephony/SubscriptionInfo.java
+++ b/telephony/java/android/telephony/SubscriptionInfo.java
@@ -618,9 +618,9 @@ public class SubscriptionInfo implements Parcelable {
@Deprecated
public int getMcc() {
try {
- return mMcc == null ? 0 : Integer.parseInt(mMcc);
+ return TextUtils.isEmpty(mMcc) ? 0 : Integer.parseInt(mMcc);
} catch (NumberFormatException e) {
- Log.w(SubscriptionInfo.class.getSimpleName(), "MCC string is not a number");
+ Log.w(SubscriptionInfo.class.getSimpleName(), "MCC string is not a number: " + mMcc);
return 0;
}
}
@@ -633,9 +633,9 @@ public class SubscriptionInfo implements Parcelable {
@Deprecated
public int getMnc() {
try {
- return mMnc == null ? 0 : Integer.parseInt(mMnc);
+ return TextUtils.isEmpty(mMnc) ? 0 : Integer.parseInt(mMnc);
} catch (NumberFormatException e) {
- Log.w(SubscriptionInfo.class.getSimpleName(), "MNC string is not a number");
+ Log.w(SubscriptionInfo.class.getSimpleName(), "MNC string is not a number: " + mMnc);
return 0;
}
}
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 73ea68bc3547..504605d0a1a2 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -19432,7 +19432,6 @@ public class TelephonyManager {
* and integrity algorithms in use
* @hide
*/
- @FlaggedApi(Flags.FLAG_ENABLE_MODEM_CIPHER_TRANSPARENCY)
@RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
@SystemApi
public void setNullCipherNotificationsEnabled(boolean enable) {
@@ -19459,7 +19458,6 @@ public class TelephonyManager {
* and integrity algorithms in use
* @hide
*/
- @FlaggedApi(Flags.FLAG_ENABLE_MODEM_CIPHER_TRANSPARENCY)
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
@SystemApi
public boolean isNullCipherNotificationsEnabled() {
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/BaseTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/BaseTest.kt
index 18f44ddff086..eebe49de0010 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/BaseTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/BaseTest.kt
@@ -18,13 +18,12 @@ package com.android.server.wm.flicker
import android.app.Instrumentation
import android.content.Intent
-import android.os.UserHandle
import android.platform.test.annotations.Presubmit
-import android.provider.Settings
import android.tools.flicker.junit.FlickerBuilderProvider
import android.tools.flicker.legacy.FlickerBuilder
import android.tools.flicker.legacy.LegacyFlickerTest
import android.tools.traces.component.ComponentNameMatcher
+import android.tools.traces.executeShellCommand
import android.util.Log
import androidx.test.platform.app.InstrumentationRegistry
import com.android.launcher3.tapl.LauncherInstrumentation
@@ -47,11 +46,8 @@ constructor(
) {
init {
tapl.setExpectedRotationCheckEnabled(true)
- Settings.System.putIntForUser(
- instrumentation.targetContext.contentResolver,
- Settings.System.HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY,
- 0,
- UserHandle.USER_CURRENT_OR_SELF
+ executeShellCommand(
+ "settings put system hide_rotation_lock_toggle_for_accessibility 1"
)
}
diff --git a/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/DesktopModeAppHelper.kt b/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/DesktopModeAppHelper.kt
index 9e9d014c622d..55d6fd9b4a73 100644
--- a/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/DesktopModeAppHelper.kt
+++ b/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/DesktopModeAppHelper.kt
@@ -87,14 +87,18 @@ open class DesktopModeAppHelper(private val innerHelper: IStandardAppHelper) :
wmHelper: WindowManagerStateHelper,
device: UiDevice,
motionEventHelper: MotionEventHelper = MotionEventHelper(getInstrumentation(), TOUCH),
+ shouldUseDragToDesktop: Boolean = false,
) {
innerHelper.launchViaIntent(wmHelper)
- if (!isInDesktopWindowingMode(wmHelper)) {
+ if (isInDesktopWindowingMode(wmHelper)) return
+ if (shouldUseDragToDesktop) {
enterDesktopModeWithDrag(
wmHelper = wmHelper,
device = device,
motionEventHelper = motionEventHelper
)
+ } else {
+ enterDesktopModeFromAppHandleMenu(wmHelper, device)
}
}
diff --git a/tests/Input/src/com/android/server/input/KeyGestureControllerTests.kt b/tests/Input/src/com/android/server/input/KeyGestureControllerTests.kt
index 36db955c3085..37bdf6b8614d 100644
--- a/tests/Input/src/com/android/server/input/KeyGestureControllerTests.kt
+++ b/tests/Input/src/com/android/server/input/KeyGestureControllerTests.kt
@@ -1111,9 +1111,9 @@ class KeyGestureControllerTests {
intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE)
),
TestData(
- "FULLSCREEN -> Maximizes a task to fit the screen",
+ "FULLSCREEN -> Turns a task into fullscreen",
intArrayOf(KeyEvent.KEYCODE_FULLSCREEN),
- KeyGestureEvent.KEY_GESTURE_TYPE_MAXIMIZE_FREEFORM_WINDOW,
+ KeyGestureEvent.KEY_GESTURE_TYPE_MULTI_WINDOW_NAVIGATION,
intArrayOf(KeyEvent.KEYCODE_FULLSCREEN),
0,
intArrayOf(KeyGestureEvent.ACTION_GESTURE_COMPLETE)
diff --git a/tests/Input/src/com/android/test/input/UinputRecordingIntegrationTests.kt b/tests/Input/src/com/android/test/input/UinputRecordingIntegrationTests.kt
index bc0b7a5c816c..1a0837b6d3d7 100644
--- a/tests/Input/src/com/android/test/input/UinputRecordingIntegrationTests.kt
+++ b/tests/Input/src/com/android/test/input/UinputRecordingIntegrationTests.kt
@@ -15,21 +15,19 @@
*/
package com.android.test.input
-import android.Manifest.permission.ASSOCIATE_INPUT_DEVICE_TO_DISPLAY
import android.app.Instrumentation
import android.cts.input.EventVerifier
import android.graphics.PointF
-import android.hardware.input.InputManager
-import android.os.ParcelFileDescriptor
-import android.server.wm.CtsWindowInfoUtils.waitForWindowOnTop
import android.util.Log
import android.util.Size
+import android.view.InputDevice
import android.view.InputEvent
import android.view.MotionEvent
import androidx.test.platform.app.InstrumentationRegistry
import com.android.cts.input.BatchedEventSplitter
import com.android.cts.input.CaptureEventActivity
import com.android.cts.input.DebugInputRule
+import com.android.cts.input.EvemuDevice
import com.android.cts.input.InputJsonParser
import com.android.cts.input.VirtualDisplayActivityScenario
import com.android.cts.input.inputeventmatchers.isResampled
@@ -69,9 +67,13 @@ class UinputRecordingIntegrationTests {
fun data(): Iterable<Any> =
listOf(
TestData(
- "GooglePixelTabletTouchscreen", R.raw.google_pixel_tablet_touchscreen,
- R.raw.google_pixel_tablet_touchscreen_events, Size(1600, 2560),
- vendorId = 0x0603, productId = 0x7806
+ "GooglePixelTabletTouchscreen",
+ R.raw.google_pixel_tablet_touchscreen,
+ R.raw.google_pixel_tablet_touchscreen_events,
+ Size(1600, 2560),
+ vendorId = 0x0603,
+ productId = 0x7806,
+ deviceSources = InputDevice.SOURCE_TOUCHSCREEN,
),
)
@@ -91,6 +93,7 @@ class UinputRecordingIntegrationTests {
val displaySize: Size,
val vendorId: Int,
val productId: Int,
+ val deviceSources: Int,
) {
override fun toString(): String = name
}
@@ -98,7 +101,6 @@ class UinputRecordingIntegrationTests {
private lateinit var instrumentation: Instrumentation
private lateinit var parser: InputJsonParser
-
@get:Rule
val debugInputRule = DebugInputRule()
@@ -121,40 +123,29 @@ class UinputRecordingIntegrationTests {
testName,
size = testData.displaySize
).use { scenario ->
- waitForWindowOnTop(scenario.activity.window)
scenario.activity.window.decorView.requestUnbufferedDispatch(INPUT_DEVICE_SOURCE_ALL)
- try {
- instrumentation.uiAutomation.adoptShellPermissionIdentity(
- ASSOCIATE_INPUT_DEVICE_TO_DISPLAY,
- )
+ EvemuDevice(
+ instrumentation,
+ testData.deviceSources,
+ testData.vendorId,
+ testData.productId,
+ testData.uinputRecordingResource,
+ scenario.virtualDisplay.display
+ ).use { evemuDevice ->
- val inputPort = "uinput:1:${testData.vendorId}:${testData.productId}"
- val inputManager =
- instrumentation.context.getSystemService(InputManager::class.java)!!
- try {
- inputManager.addUniqueIdAssociationByPort(
- inputPort,
- scenario.virtualDisplay.display.uniqueId!!,
- )
+ evemuDevice.injectEvents()
- injectUinputEvents().use {
- if (DEBUG_RECEIVED_EVENTS) {
- printReceivedEventsToLogcat(scenario.activity)
- fail("Test cannot pass in debug mode!")
- }
-
- val verifier = EventVerifier(
- BatchedEventSplitter { scenario.activity.getInputEvent() }
- )
- verifyEvents(verifier)
- scenario.activity.assertNoEvents()
- }
- } finally {
- inputManager.removeUniqueIdAssociationByPort(inputPort)
+ if (DEBUG_RECEIVED_EVENTS) {
+ printReceivedEventsToLogcat(scenario.activity)
+ fail("Test cannot pass in debug mode!")
}
- } finally {
- instrumentation.uiAutomation.dropShellPermissionIdentity()
+
+ val verifier = EventVerifier(
+ BatchedEventSplitter { scenario.activity.getInputEvent() }
+ )
+ verifyEvents(verifier)
+ scenario.activity.assertNoEvents()
}
}
}
@@ -171,35 +162,6 @@ class UinputRecordingIntegrationTests {
}
}
- /**
- * Plays back the evemu recording associated with the current test case by injecting it via
- * the `uinput` shell command in interactive mode. The recording playback will begin
- * immediately, and the shell command (and the associated input device) will remain alive
- * until the returned [AutoCloseable] is closed.
- */
- private fun injectUinputEvents(): AutoCloseable {
- val fds = instrumentation.uiAutomation!!.executeShellCommandRw("uinput -")
- // We do not need to use stdout in this test.
- fds[0].close()
-
- return ParcelFileDescriptor.AutoCloseOutputStream(fds[1]).also { stdin ->
- instrumentation.context.resources.openRawResource(
- testData.uinputRecordingResource,
- ).use { inputStream ->
- stdin.write(inputStream.readBytes())
-
- // TODO(b/367419268): Remove extra event injection when uinput parsing is fixed.
- // Inject an extra sync event with an arbitrarily large timestamp, because the
- // uinput command will not process the last event until either the next event is
- // parsed, or fd is closed. Injecting this sync allows us complete injection of
- // the evemu recording and extend the lifetime of the input device by keeping this
- // fd open.
- stdin.write("\nE: 9999.99 0 0 0\n".toByteArray())
- stdin.flush()
- }
- }
- }
-
private fun verifyEvents(verifier: EventVerifier) {
val uinputTestData = parser.getUinputTestData(testData.expectedEventsResource)
for (test in uinputTestData) {
diff --git a/tests/SharedLibrary/lib/Android.bp b/tests/SharedLibrary/lib/Android.bp
index 0595cb1e116a..abfd0e869b45 100644
--- a/tests/SharedLibrary/lib/Android.bp
+++ b/tests/SharedLibrary/lib/Android.bp
@@ -15,6 +15,7 @@ android_app {
export_package_resources: true,
privileged: true,
optimize: {
+ keep_runtime_invisible_annotations: true,
proguard_flags_files: ["proguard.proguard"],
},
}
diff --git a/tests/SharedLibrary/lib/proguard.proguard b/tests/SharedLibrary/lib/proguard.proguard
index e5dfbe1c453d..699fbdaaadad 100644
--- a/tests/SharedLibrary/lib/proguard.proguard
+++ b/tests/SharedLibrary/lib/proguard.proguard
@@ -1,6 +1,8 @@
-keepparameternames
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
- SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
+ SourceFile,LineNumberTable,EnclosingMethod,
+ RuntimeVisibleAnnotations,RuntimeVisibleParameterAnnotations,
+ RuntimeVisibleTypeAnnotations,AnnotationDefault
-keep public class * {
public protected *;
diff --git a/tests/utils/testutils/java/android/os/test/TestLooper.java b/tests/utils/testutils/java/android/os/test/TestLooper.java
index 61fa7b542bc0..83d22d923c78 100644
--- a/tests/utils/testutils/java/android/os/test/TestLooper.java
+++ b/tests/utils/testutils/java/android/os/test/TestLooper.java
@@ -18,24 +18,18 @@ package android.os.test;
import static org.junit.Assert.assertTrue;
-import android.os.Build;
import android.os.Handler;
import android.os.HandlerExecutor;
import android.os.Looper;
import android.os.Message;
import android.os.MessageQueue;
import android.os.SystemClock;
-import android.os.TestLooperManager;
import android.util.Log;
-import androidx.test.InstrumentationRegistry;
-
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.util.ArrayDeque;
-import java.util.Queue;
import java.util.concurrent.Executor;
/**
@@ -50,9 +44,7 @@ import java.util.concurrent.Executor;
* The Robolectric class also allows advancing time.
*/
public class TestLooper {
- private final Looper mLooper;
- private final TestLooperManager mTestLooperManager;
- private final Clock mClock;
+ protected final Looper mLooper;
private static final Constructor<Looper> LOOPER_CONSTRUCTOR;
private static final Field THREAD_LOCAL_LOOPER_FIELD;
@@ -62,14 +54,9 @@ public class TestLooper {
private static final Method MESSAGE_MARK_IN_USE_METHOD;
private static final String TAG = "TestLooper";
- private AutoDispatchThread mAutoDispatchThread;
+ private final Clock mClock;
- /**
- * Baklava introduces new {@link TestLooperManager} APIs that we can use instead of reflection.
- */
- private static boolean isAtLeastBaklava() {
- return Build.VERSION.SDK_INT >= Build.VERSION_CODES.BAKLAVA;
- }
+ private AutoDispatchThread mAutoDispatchThread;
static {
try {
@@ -77,22 +64,14 @@ public class TestLooper {
LOOPER_CONSTRUCTOR.setAccessible(true);
THREAD_LOCAL_LOOPER_FIELD = Looper.class.getDeclaredField("sThreadLocal");
THREAD_LOCAL_LOOPER_FIELD.setAccessible(true);
-
- if (isAtLeastBaklava()) {
- MESSAGE_QUEUE_MESSAGES_FIELD = null;
- MESSAGE_NEXT_FIELD = null;
- MESSAGE_WHEN_FIELD = null;
- MESSAGE_MARK_IN_USE_METHOD = null;
- } else {
- MESSAGE_QUEUE_MESSAGES_FIELD = MessageQueue.class.getDeclaredField("mMessages");
- MESSAGE_QUEUE_MESSAGES_FIELD.setAccessible(true);
- MESSAGE_NEXT_FIELD = Message.class.getDeclaredField("next");
- MESSAGE_NEXT_FIELD.setAccessible(true);
- MESSAGE_WHEN_FIELD = Message.class.getDeclaredField("when");
- MESSAGE_WHEN_FIELD.setAccessible(true);
- MESSAGE_MARK_IN_USE_METHOD = Message.class.getDeclaredMethod("markInUse");
- MESSAGE_MARK_IN_USE_METHOD.setAccessible(true);
- }
+ MESSAGE_QUEUE_MESSAGES_FIELD = MessageQueue.class.getDeclaredField("mMessages");
+ MESSAGE_QUEUE_MESSAGES_FIELD.setAccessible(true);
+ MESSAGE_NEXT_FIELD = Message.class.getDeclaredField("next");
+ MESSAGE_NEXT_FIELD.setAccessible(true);
+ MESSAGE_WHEN_FIELD = Message.class.getDeclaredField("when");
+ MESSAGE_WHEN_FIELD.setAccessible(true);
+ MESSAGE_MARK_IN_USE_METHOD = Message.class.getDeclaredMethod("markInUse");
+ MESSAGE_MARK_IN_USE_METHOD.setAccessible(true);
} catch (NoSuchFieldException | NoSuchMethodException e) {
throw new RuntimeException("Failed to initialize TestLooper", e);
}
@@ -127,13 +106,6 @@ public class TestLooper {
throw new RuntimeException("Reflection error constructing or accessing looper", e);
}
- if (isAtLeastBaklava()) {
- mTestLooperManager =
- InstrumentationRegistry.getInstrumentation().acquireLooperManager(mLooper);
- } else {
- mTestLooperManager = null;
- }
-
mClock = clock;
}
@@ -145,72 +117,19 @@ public class TestLooper {
return new HandlerExecutor(new Handler(getLooper()));
}
- private Message getMessageLinkedListLegacy() {
+ private Message getMessageLinkedList() {
try {
MessageQueue queue = mLooper.getQueue();
return (Message) MESSAGE_QUEUE_MESSAGES_FIELD.get(queue);
} catch (IllegalAccessException e) {
throw new RuntimeException("Access failed in TestLooper: get - MessageQueue.mMessages",
- e);
+ e);
}
}
public void moveTimeForward(long milliSeconds) {
- if (isAtLeastBaklava()) {
- moveTimeForwardBaklava(milliSeconds);
- } else {
- moveTimeForwardLegacy(milliSeconds);
- }
- }
-
- private void moveTimeForwardBaklava(long milliSeconds) {
- // Drain all Messages from the queue.
- Queue<Message> messages = new ArrayDeque<>();
- while (true) {
- Message message = mTestLooperManager.poll();
- if (message == null) {
- break;
- }
-
- // Adjust the Message's delivery time.
- long newWhen = message.when - milliSeconds;
- if (newWhen < 0) {
- newWhen = 0;
- }
- message.when = newWhen;
- messages.add(message);
- }
-
- // Repost all Messages back to the queuewith a new time.
- while (true) {
- Message message = messages.poll();
- if (message == null) {
- break;
- }
-
- Runnable callback = message.getCallback();
- Handler handler = message.getTarget();
- long when = message.getWhen();
-
- // The Message cannot be re-enqueued because it is marked in use.
- // Make a copy of the Message and recycle the original.
- // This resets {@link Message#isInUse()} but retains all other content.
- {
- Message newMessage = Message.obtain();
- newMessage.copyFrom(message);
- newMessage.setCallback(callback);
- mTestLooperManager.recycle(message);
- message = newMessage;
- }
-
- // Send the Message back to its Handler to be re-enqueued.
- handler.sendMessageAtTime(message, when);
- }
- }
-
- private void moveTimeForwardLegacy(long milliSeconds) {
try {
- Message msg = getMessageLinkedListLegacy();
+ Message msg = getMessageLinkedList();
while (msg != null) {
long updatedWhen = msg.getWhen() - milliSeconds;
if (updatedWhen < 0) {
@@ -228,12 +147,12 @@ public class TestLooper {
return mClock.uptimeMillis();
}
- private Message messageQueueNextLegacy() {
+ private Message messageQueueNext() {
try {
long now = currentTime();
Message prevMsg = null;
- Message msg = getMessageLinkedListLegacy();
+ Message msg = getMessageLinkedList();
if (msg != null && msg.getTarget() == null) {
// Stalled by a barrier. Find the next asynchronous message in
// the queue.
@@ -266,46 +185,18 @@ public class TestLooper {
/**
* @return true if there are pending messages in the message queue
*/
- public boolean isIdle() {
- if (isAtLeastBaklava()) {
- return isIdleBaklava();
- } else {
- return isIdleLegacy();
- }
- }
+ public synchronized boolean isIdle() {
+ Message messageList = getMessageLinkedList();
- private boolean isIdleBaklava() {
- Long when = mTestLooperManager.peekWhen();
- return when != null && currentTime() >= when;
- }
-
- private synchronized boolean isIdleLegacy() {
- Message messageList = getMessageLinkedListLegacy();
return messageList != null && currentTime() >= messageList.getWhen();
}
/**
* @return the next message in the Looper's message queue or null if there is none
*/
- public Message nextMessage() {
- if (isAtLeastBaklava()) {
- return nextMessageBaklava();
- } else {
- return nextMessageLegacy();
- }
- }
-
- private Message nextMessageBaklava() {
+ public synchronized Message nextMessage() {
if (isIdle()) {
- return mTestLooperManager.poll();
- } else {
- return null;
- }
- }
-
- private synchronized Message nextMessageLegacy() {
- if (isIdle()) {
- return messageQueueNextLegacy();
+ return messageQueueNext();
} else {
return null;
}
@@ -315,26 +206,9 @@ public class TestLooper {
* Dispatch the next message in the queue
* Asserts that there is a message in the queue
*/
- public void dispatchNext() {
- if (isAtLeastBaklava()) {
- dispatchNextBaklava();
- } else {
- dispatchNextLegacy();
- }
- }
-
- private void dispatchNextBaklava() {
- assertTrue(isIdle());
- Message msg = mTestLooperManager.poll();
- if (msg == null) {
- return;
- }
- msg.getTarget().dispatchMessage(msg);
- }
-
- private synchronized void dispatchNextLegacy() {
+ public synchronized void dispatchNext() {
assertTrue(isIdle());
- Message msg = messageQueueNextLegacy();
+ Message msg = messageQueueNext();
if (msg == null) {
return;
}
diff --git a/tools/aosp/upload_aosp.sh b/tools/aosp/upload_aosp.sh
new file mode 100755
index 000000000000..c36057b302cb
--- /dev/null
+++ b/tools/aosp/upload_aosp.sh
@@ -0,0 +1,116 @@
+#!/bin/bash
+
+set -eu
+
+DRYRUN=false
+VERBOSE=false
+DEST_BRANCH_NAME="main"
+AOSP_URL=""
+
+function log_info() {
+ echo -e "\033[32m$1\033[m"
+}
+
+function log_warn() {
+ echo -e "\033[33m$1\033[m"
+}
+
+function log_fatal() {
+ echo -e "\033[31mERROR: $1\033[m" > /dev/stderr
+ exit 1
+}
+
+while [[ $# -gt 0 ]]; do
+ case $1 in
+ -b|--branch)
+ DEST_BRANCH_NAME=$2
+ shift
+ shift
+ ;;
+ -v|--verbose)
+ set -x
+ VERBOSE=true
+ shift
+ ;;
+ -n|--dryrun)
+ DRYRUN=true
+ shift
+ ;;
+ -u|--url)
+ AOSP_URL=$2
+ shift
+ shift
+ ;;
+ --help)
+ echo "$0 <options>"
+ echo
+ echo "Options:"
+ echo " -b, --branch <branch> : destination AOSP branch, default is $DEST_BRANCH_NAME"
+ echo " -n, --dryrun : do not upload CL"
+ echo " -u, --url : AOSP repo URL. Default is to use existing 'aosp' remote or guess the URL."
+ echo " -v, --verbose : show verbose output"
+ echo
+ exit 0
+ ;;
+ -*|--*)
+ echo "Unknown option $i"
+ exit 1
+ ;;
+ *)
+ ;;
+ esac
+done
+
+if $VERBOSE; then
+ log_info "DRYRUN=$DRYRUN"
+ log_info "DEST_BRANCH_NAME=$DEST_BRANCH_NAME"
+fi
+
+current_branch=$(git branch --no-color --show-current)
+if [ -z "$current_branch" ]; then
+ log_fatal "use 'repo start' first"
+fi
+
+tmp_branch="aosp_$current_branch"
+
+if [ -z "$AOSP_URL" ]; then
+ AOSP_URL=$(git config --get remote.goog.url | sed 's/googleplex-//')
+fi
+
+if $VERBOSE; then
+ log_info "AOSP_URL=$AOSP_URL"
+ log_info "current_branch=$current_branch"
+ log_info "tmp_branch=$tmp_branch"
+fi
+
+log_info "Running repo hooks..."
+repo upload -c . -n -y
+
+log_info "Setting up AOSP repo..."
+existing_aosp_url=$(git config --get remote.aosp.url 2>/dev/null || true)
+if [ -z "$existing_aosp_url" ]; then
+ git remote add aosp $AOSP_URL
+elif [ "$existing_aosp_url" != "$AOSP_URL"]; then
+ log_warn "Remote 'aosp' uses $existing_aosp_url. Expected $AOSP_URL"
+fi
+
+log_info "Fetching '$DEST_BRANCH_NAME'"
+git fetch aosp $DEST_BRANCH_NAME
+
+log_info "Creating $tmp_branch and cherry-picking..."
+git branch -D $tmp_branch 2>/dev/null || true
+git checkout -b $tmp_branch
+git branch --set-upstream-to aosp/$DEST_BRANCH_NAME
+git reset --hard aosp/$DEST_BRANCH_NAME
+git cherry-pick goog/$DEST_BRANCH_NAME..$current_branch
+
+if $DRYRUN; then
+ log_info "Dryrun specified, skipping CL upload"
+else
+ log_info "Pushing to AOSP..."
+ git push aosp HEAD:refs/for/$DEST_BRANCH_NAME
+fi
+
+log_info "Cleaning up..."
+git checkout $current_branch
+git branch -D $tmp_branch \ No newline at end of file
diff --git a/tools/localedata/extract_icu_data.py b/tools/localedata/extract_icu_data.py
index ec531275af1c..899cd7f9ce5e 100755
--- a/tools/localedata/extract_icu_data.py
+++ b/tools/localedata/extract_icu_data.py
@@ -180,7 +180,14 @@ def pack_script_to_uint32(script):
def dump_representative_locales(representative_locales):
"""Dump the set of representative locales."""
- print()
+ print('''
+/*
+ * TODO: Consider turning the below switch statement into binary search
+ * to save the disk space when the table is larger in the future.
+ * Disassembled code shows that the jump table emitted by clang can be
+ * 4x larger than the data in disk size, but it depends on the optimization option.
+ * However, a switch statement will benefit from the future of compiler improvement.
+ */''')
print('bool isLocaleRepresentative(uint32_t language_and_region, const char* script) {')
print(' const uint64_t packed_locale =')
print(' ((static_cast<uint64_t>(language_and_region)) << 32u) |')